@dudousxd/nestjs-durable-dashboard 0.33.0 → 0.34.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,27 +0,0 @@
1
- var zr=e=>{throw TypeError(e)};var $n=(e,t,n)=>t.has(e)||zr("Cannot "+n);var ne=(e,t,n)=>($n(e,t,"read from private field"),n?n.call(e):t.get(e)),Be=(e,t,n)=>t.has(e)?zr("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),Ve=(e,t,n,r)=>($n(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n),qe=(e,t,n)=>($n(e,t,"access private method"),n);import{S as La,s as Ha,h as Ir,g as Fa,n as Bs,u as an,r as $,a as Oa,b as Ba,c as Xt,i as Vs,j as c,K as On,X as Ue,B as ar,d as Va,e as we,R as qa,C as qs,f as Xa,k as ie,l as Ya,m as Wa,o as Ka,p as Ga,q as Ua,t as Za,v as cr,P as Qa,w as Mn,x as Ja,Q as ec,y as tc,z as nc}from"./index-BBKhxB-y.js";var Ae,Pe,ae,ye,_e,Ft,Bn,Os,rc=(Os=class extends La{constructor(t,n){super();Be(this,_e);Be(this,Ae);Be(this,Pe);Be(this,ae);Be(this,ye);Ve(this,Ae,t),this.setOptions(n),this.bindMethods(),qe(this,_e,Ft).call(this)}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(t){var r;const n=this.options;this.options=ne(this,Ae).defaultMutationOptions(t),Ha(this.options,n)||ne(this,Ae).getMutationCache().notify({type:"observerOptionsUpdated",mutation:ne(this,ae),observer:this}),n!=null&&n.mutationKey&&this.options.mutationKey&&Ir(n.mutationKey)!==Ir(this.options.mutationKey)?this.reset():((r=ne(this,ae))==null?void 0:r.state.status)==="pending"&&ne(this,ae).setOptions(this.options)}onUnsubscribe(){var t;this.hasListeners()||(t=ne(this,ae))==null||t.removeObserver(this)}onMutationUpdate(t){qe(this,_e,Ft).call(this),qe(this,_e,Bn).call(this,t)}getCurrentResult(){return ne(this,Pe)}reset(){var t;(t=ne(this,ae))==null||t.removeObserver(this),Ve(this,ae,void 0),qe(this,_e,Ft).call(this),qe(this,_e,Bn).call(this)}mutate(t,n){var r;return Ve(this,ye,n),(r=ne(this,ae))==null||r.removeObserver(this),Ve(this,ae,ne(this,Ae).getMutationCache().build(ne(this,Ae),this.options)),ne(this,ae).addObserver(this),ne(this,ae).execute(t)}},Ae=new WeakMap,Pe=new WeakMap,ae=new WeakMap,ye=new WeakMap,_e=new WeakSet,Ft=function(){var n;const t=((n=ne(this,ae))==null?void 0:n.state)??Fa();Ve(this,Pe,{...t,isPending:t.status==="pending",isSuccess:t.status==="success",isError:t.status==="error",isIdle:t.status==="idle",mutate:this.mutate,reset:this.reset})},Bn=function(t){Bs.batch(()=>{var n,r,s,i,o,a,l,u;if(ne(this,ye)&&this.hasListeners()){const d=ne(this,Pe).variables,f=ne(this,Pe).context;(t==null?void 0:t.type)==="success"?((r=(n=ne(this,ye)).onSuccess)==null||r.call(n,t.data,d,f),(i=(s=ne(this,ye)).onSettled)==null||i.call(s,t.data,null,d,f)):(t==null?void 0:t.type)==="error"&&((a=(o=ne(this,ye)).onError)==null||a.call(o,t.error,d,f),(u=(l=ne(this,ye)).onSettled)==null||u.call(l,void 0,t.error,d,f))}this.listeners.forEach(d=>{d(ne(this,Pe))})})},Os);function Xe(e,t){const n=an(),[r]=$.useState(()=>new rc(n,e));$.useEffect(()=>{r.setOptions(e)},[r,e]);const s=$.useSyncExternalStore($.useCallback(o=>r.subscribe(Bs.batchCalls(o)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),i=$.useCallback((o,a)=>{r.mutate(o,a).catch(Oa)},[r]);if(s.error&&Ba(r.options.throwOnError,[s.error]))throw s.error;return{...s,mutate:i,mutateAsync:s.mutate}}const Ar="compensate:";function sc(e){return e.startsWith(Ar)?e.slice(Ar.length):e}function ic(e){const t=[],n=[];for(const r of e)r.seq<0?n.push(r):t.push(r);return n.sort((r,s)=>s.seq-r.seq),{body:t,compensations:n}}function oc(e){let t=0,n=0,r=0;for(const s of e)s.status==="completed"?t++:s.status==="failed"?n++:r++;return{total:e.length,done:t,failed:n,pending:r}}function Yt(e){const t=e.lastIndexOf("@");return t===-1?"default":e.slice(t+1)}function Vn(e){const t=e.lastIndexOf("@");return t===-1?e:e.slice(0,t)}function ac(e){const t=new Map;for(const r of e){const s=Yt(r.group),i=t.get(s);i?i.push(r):t.set(s,[r])}return[...t.entries()].map(([r,s])=>{const i=new Set;let o=0,a=0;for(const l of s){o+=l.depth,l.depth>0&&l.liveWorkers.length===0&&(a+=1);for(const u of l.liveWorkers)i.add(u.instanceId)}return{partition:r,workerCount:i.size,handlerCount:s.length,totalDepth:o,starvedCount:a}}).sort((r,s)=>r.partition==="default"?-1:s.partition==="default"?1:r.partition.localeCompare(s.partition))}function cc(e,t){if(!e)return t;const n=new Map(e.timeline.map(r=>[r.seq,r]));return{...t,timeline:t.timeline.map(r=>{var i,o;if((r.status==="pending"||r.status==="running")&&(((i=r.events)==null?void 0:i.length)??0)===0){const a=(o=n.get(r.seq))==null?void 0:o.events;if(a!=null&&a.length)return{...r,events:a}}return r})}}function lc(e){var n,r;const t=new Map;for(const s of e)for(const i of s.liveWorkers){const o=Vn(i.group),a=t.get(i.instanceId);if(a===void 0){t.set(i.instanceId,{instanceId:i.instanceId,partition:Yt(i.group),runtime:(n=i.status)==null?void 0:n.runtime,handlers:new Set([o]),status:i.status,lastBeatAt:i.lastBeatAt});continue}a.handlers.add(o),i.lastBeatAt>=a.lastBeatAt&&(a.lastBeatAt=i.lastBeatAt,a.partition=Yt(i.group),a.runtime=(r=i.status)==null?void 0:r.runtime,a.status=i.status)}return[...t.values()].map(s=>({instanceId:s.instanceId,partition:s.partition,runtime:s.runtime,handlers:[...s.handlers].sort((i,o)=>i.localeCompare(o)),status:s.status,lastBeatAt:s.lastBeatAt})).sort((s,i)=>s.partition!==i.partition?s.partition==="default"?-1:i.partition==="default"?1:s.partition.localeCompare(i.partition):s.instanceId.localeCompare(i.instanceId))}function uc(e){const t=new Set,n=new Set,r=new Set;for(const i of e){for(const o of i.liveWorkers)t.add(o.instanceId);i.kind==="workflow"?n.add(Vn(i.group)):i.kind==="step"&&r.add(Vn(i.group))}const s=e.filter(i=>i.depth>0&&i.liveWorkers.length===0).sort((i,o)=>o.depth-i.depth);return{queueCount:e.length,workflowCount:n.size,stepCount:r.size,workerCount:t.size,starved:s,allDraining:s.length===0}}function Wt(e){return e<1e3?`${Math.round(e)}ms`:e<6e4?`${(e/1e3).toFixed(2)}s`:`${(e/6e4).toFixed(2)}m`}function Pr(e,t){return Wt(new Date(t).getTime()-new Date(e).getTime())}function Tr(e){return lr(new Date(e).getTime())}function lr(e){return new Date(e).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3})}const Xs={ok:"border-emerald-500/25 bg-emerald-500/10 text-emerald-300",failed:"border-red-500/25 bg-red-500/10 text-red-300",skipped:"border-amber-500/25 bg-amber-500/10 text-amber-300"},dc={debug:"text-zinc-500",info:"text-zinc-300",warn:"text-amber-300",error:"text-red-300"},fc=["ok","failed","skipped"];function Ys({e}){return c.jsxs("div",{className:"flex gap-2 py-0.5",children:[c.jsx("span",{className:"shrink-0 text-zinc-600 tnum",children:lr(e.at)}),c.jsx("span",{className:`shrink-0 uppercase ${dc[e.level]}`,children:e.level}),c.jsx("span",{className:"min-w-0 break-words text-zinc-300",children:e.message})]})}function Dr({sub:e,showGroup:t=!0}){var a,l;const n=((a=e.terminal)==null?void 0:a.message)!==void 0&&e.terminal.message!==e.name,r=e.phases.length>0||e.logs.length>0||n,[s,i]=$.useState(e.status==="failed"),o=e.status?Xs[e.status]:"border-amber-500/25 bg-amber-500/10 text-amber-300";return c.jsxs("li",{className:`rounded-md border ${o}`,children:[c.jsxs("button",{type:"button",disabled:!r,onClick:()=>i(u=>!u),className:"flex w-full items-center justify-between gap-2 px-2.5 py-1.5 text-left text-[11.5px] disabled:cursor-default","aria-expanded":r?s:void 0,children:[c.jsxs("span",{className:"flex min-w-0 items-center gap-2",children:[r&&c.jsx("span",{className:`text-[9px] text-zinc-500 transition-transform duration-150 ${s?"":"-rotate-90"}`,children:"▼"}),c.jsx("span",{className:"mono truncate text-zinc-200",children:e.name}),t&&e.group&&c.jsx("span",{className:"mono shrink-0 text-[10px] uppercase tracking-wider text-zinc-500",children:e.group})]}),c.jsxs("span",{className:"mono flex shrink-0 items-center gap-2 text-[10px] uppercase tracking-wider",children:[e.durationMs!==void 0&&c.jsx("span",{className:"tnum text-zinc-400",children:Wt(e.durationMs)}),c.jsx("span",{children:e.status??"running"})]})]}),s&&c.jsxs("div",{className:"border-t border-[var(--line)]/60 px-2.5 py-2",children:[e.phases.length>0&&c.jsx("ul",{className:"mono mb-2 flex flex-col gap-0.5 text-[10.5px]",children:e.phases.map((u,d)=>c.jsxs("li",{className:"flex gap-2",children:[c.jsx("span",{className:"shrink-0 text-zinc-600 tnum",children:lr(u.at)}),c.jsx("span",{className:"text-zinc-400",children:u.phase}),e.startedAt!==void 0&&c.jsxs("span",{className:"text-zinc-600 tnum",children:["+",Wt(u.at-e.startedAt)]})]},`${u.at}-${u.phase}-${d}`))}),((l=e.terminal)==null?void 0:l.message)&&e.terminal.message!==e.name&&c.jsx("div",{className:`mono mb-2 rounded border p-2 text-[11px] ${e.status==="failed"?"border-red-500/25 bg-red-500/10 text-red-200":"border-[var(--line)] bg-black/20 text-zinc-300"}`,children:e.terminal.message}),e.logs.length>0&&c.jsx("div",{className:"mono flex flex-col gap-0.5 text-[11px]",children:e.logs.map((u,d)=>c.jsx(Ys,{e:u},`${u.at}-${d}`))})]})]})}function hc({events:e}){const{subs:t,stepLogs:n}=Va(e),r=fc.map(i=>[i,t.filter(o=>o.status===i).length]).filter(([,i])=>i>0),s=t.some(i=>i.group);return c.jsxs(c.Fragment,{children:[t.length>0&&c.jsxs("section",{className:"rise",children:[c.jsxs("div",{className:"mb-1.5 flex items-center justify-between",children:[c.jsxs("span",{className:"mono text-[10px] uppercase tracking-[0.18em] text-zinc-500",children:["sub-processes · ",t.length]}),c.jsx("span",{className:"mono flex gap-2 text-[10px] uppercase tracking-wider",children:r.map(([i,o])=>c.jsxs("span",{className:Xs[i].split(" ").pop(),children:[o," ",i]},i))})]}),s?Object.entries(t.reduce((i,o)=>{const a=o.group??"—";return i[a]===void 0&&(i[a]=[]),i[a].push(o),i},{})).sort(([i],[o])=>i==="—"?1:o==="—"?-1:i.localeCompare(o)).map(([i,o])=>c.jsxs("div",{className:"mb-2",children:[c.jsx("div",{className:"mono mb-1 text-[10px] uppercase tracking-wider text-zinc-500",children:i}),c.jsx("ul",{className:"flex flex-col gap-1",children:o.map(a=>c.jsx(Dr,{sub:a,showGroup:!1},a.id))})]},i)):c.jsx("ul",{className:"flex flex-col gap-1",children:t.map(i=>c.jsx(Dr,{sub:i},i.id))})]}),n.length>0&&c.jsxs("section",{className:"rise",children:[c.jsxs("div",{className:"mono mb-1.5 text-[10px] uppercase tracking-[0.18em] text-zinc-500",children:["logs · ",n.length]}),c.jsx("div",{className:"mono max-h-64 overflow-auto rounded-lg border border-[var(--line)] bg-black/40 p-2.5 text-[11px] leading-relaxed",children:n.map((i,o)=>c.jsx(Ys,{e:i},`${i.at}-${o}`))})]})]})}function pc({value:e}){const[t,n]=$.useState(!1);return c.jsxs("button",{type:"button",className:"flex items-center gap-1 rounded border border-[var(--line)] px-1.5 py-0.5 text-[10px] uppercase tracking-wider text-zinc-500 transition-colors hover:text-zinc-200",onClick:async()=>{try{await navigator.clipboard.writeText(e),n(!0),setTimeout(()=>n(!1),1200)}catch{}},children:[t?c.jsx(qs,{width:11,height:11}):c.jsx(Xa,{width:11,height:11}),t?"copied":"copy"]})}function Kt({label:e,value:t}){const n=typeof t=="string"?t:JSON.stringify(t,null,2);return c.jsxs("section",{className:"rise",children:[c.jsxs("div",{className:"mb-1.5 flex items-center justify-between",children:[c.jsx("span",{className:"mono text-[10px] uppercase tracking-[0.18em] text-zinc-500",children:e}),c.jsx(pc,{value:n})]}),c.jsx("pre",{className:"mono max-h-64 overflow-auto rounded-lg border border-[var(--line)] bg-black/40 p-3 text-[11.5px] leading-relaxed text-zinc-300",children:n})]})}function Ce({k:e,v:t,mono:n=!0}){return c.jsxs("div",{className:"flex items-baseline justify-between gap-3 py-1.5",children:[c.jsx("span",{className:"mono shrink-0 text-[10px] uppercase tracking-[0.16em] text-zinc-600",children:e}),c.jsx("span",{className:`truncate text-right text-[12px] text-zinc-200 ${n?"mono tnum":""}`,children:t})]})}function gc({id:e,onOpenRun:t}){const{data:n}=we({queryKey:["run",e],queryFn:()=>ie.run(e)}),[r,s]=$.useState(new Set),i=o=>s(a=>{const l=new Set(a);return l.has(o)?l.delete(o):l.add(o),l});return n?n.timeline.length===0?c.jsxs("div",{className:"mono px-2 py-2 text-[10px] text-zinc-600",children:["no steps recorded yet — child ",n.run.status]}):c.jsx("div",{className:"mt-2 max-h-80 space-y-1 overflow-auto rounded-md border border-[var(--line)] bg-black/20 p-1.5",children:c.jsx(qa,{run:n.run,timeline:n.timeline,depth:0,onSelect:()=>{},onOpenRun:t??(()=>{}),expanded:r,onToggleChild:i})}):c.jsx("div",{className:"mono px-2 py-2 text-[10px] text-zinc-600",children:"loading child run…"})}function mc({step:e,run:t,onClose:n,onOpenRun:r}){const s=Xt(e),[i,o]=$.useState(!1),a=e.status==="failed",l=e.status==="pending"||e.status==="running",u=Vs(e.kind),d=Pr(t.createdAt,e.startedAt),f=e.enqueuedAt?new Date(e.startedAt).getTime()-new Date(e.enqueuedAt).getTime():0;return c.jsxs("aside",{className:"absolute inset-y-0 right-0 z-20 flex w-[380px] max-w-[90%] flex-col border-l border-[var(--line)] bg-[var(--panel)]/95 shadow-2xl backdrop-blur-md rise",children:[c.jsxs("div",{className:"flex items-start justify-between gap-3 border-b border-[var(--line)] px-5 py-4",children:[c.jsxs("div",{className:"min-w-0",children:[c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx("span",{className:`grid h-6 w-6 shrink-0 place-items-center rounded-md ${a?"bg-red-500/15 text-red-300":l?"bg-amber-500/15 text-amber-300":"bg-emerald-500/15 text-emerald-300"}`,children:c.jsx(u,{width:13,height:13})}),c.jsx("h3",{className:"truncate text-[15px] font-semibold tracking-tight text-zinc-50",children:e.name})]}),c.jsxs("div",{className:`mono mt-1 text-[11px] uppercase tracking-wider s-${e.status}`,children:[e.status," · ",On[e.kind]??e.kind]})]}),c.jsx("button",{type:"button",onClick:n,className:"grid h-7 w-7 shrink-0 place-items-center rounded-md border border-[var(--line)] text-zinc-500 transition-colors hover:text-zinc-200","aria-label":"Close",children:c.jsx(Ue,{})})]}),c.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-4 overflow-auto px-5 py-4",children:[c.jsxs("div",{className:"rounded-lg border border-[var(--line)] bg-black/20 px-3.5 py-1",children:[c.jsx(Ce,{k:"seq",v:`#${e.seq}`}),f>=1&&c.jsx(Ce,{k:"queued",v:c.jsx("span",{className:"text-sky-300",children:Wt(f)})}),c.jsx(Ce,{k:"duration",v:l?c.jsx("span",{className:"text-amber-300",children:"running…"}):Pr(e.startedAt,e.finishedAt)}),c.jsx(Ce,{k:"attempts",v:c.jsxs("span",{className:e.attempts>1?"text-amber-300":"",children:[e.attempts>1&&c.jsx(ar,{width:11,height:11,className:"mr-1 inline"}),e.attempts]})}),e.workerGroup&&c.jsx(Ce,{k:"worker",v:`@${e.workerGroup}`}),c.jsx(Ce,{k:"started",v:Tr(e.startedAt)}),c.jsx(Ce,{k:"finished",v:Tr(e.finishedAt)}),c.jsx(Ce,{k:"offset",v:`+${d}`})]}),a&&e.error&&c.jsxs("section",{className:"rise",children:[c.jsx("div",{className:"mono mb-1.5 text-[10px] uppercase tracking-[0.18em] text-red-400/80",children:"error"}),c.jsx("div",{className:"mono rounded-lg border border-red-500/25 bg-red-500/10 p-3 text-[11.5px] leading-relaxed text-red-200",children:e.error.message})]}),e.events&&e.events.length>0&&c.jsx(hc,{events:e.events}),s&&c.jsxs("section",{className:"rise",children:[c.jsxs("div",{className:"mb-1.5 flex items-center justify-between",children:[c.jsx("span",{className:"mono text-[10px] uppercase tracking-[0.18em] text-zinc-500",children:"child run"}),r&&c.jsx("button",{type:"button",onClick:()=>r(s),className:"mono rounded border border-[var(--line)] px-1.5 py-0.5 text-[10px] uppercase tracking-wider text-zinc-500 transition-colors hover:text-zinc-200",children:"open ↗"})]}),c.jsxs("button",{type:"button",onClick:()=>o(h=>!h),className:"flex w-full items-center gap-2 rounded-md border border-indigo-500/30 bg-indigo-500/10 px-2.5 py-1.5 text-left transition-colors hover:bg-indigo-500/20",title:i?"Collapse child run":"Expand child run inline",children:[c.jsx("span",{className:"inline-block text-[9px] text-indigo-300 transition-transform",style:{transform:i?"rotate(90deg)":"rotate(0deg)"},children:"▸"}),c.jsx("span",{className:"mono truncate text-[11px] text-indigo-300",children:s})]}),i&&c.jsx(gc,{id:s,onOpenRun:r})]}),e.input!==void 0&&c.jsx(Kt,{label:"input",value:e.input}),e.output!==void 0&&c.jsx(Kt,{label:"output",value:e.output})]})]})}function xc({run:e,onClose:t}){const n=e.input===void 0&&e.output===void 0&&!e.error;return c.jsxs("aside",{className:"absolute inset-y-0 right-0 z-30 flex w-[380px] max-w-[90%] flex-col border-l border-[var(--line)] bg-[var(--panel)]/95 shadow-2xl backdrop-blur-md rise",children:[c.jsxs("div",{className:"flex items-start justify-between gap-3 border-b border-[var(--line)] px-5 py-4",children:[c.jsxs("div",{className:"min-w-0",children:[c.jsx("h3",{className:"truncate text-[15px] font-semibold tracking-tight text-zinc-50",children:e.workflow}),c.jsxs("div",{className:`mono mt-1 text-[11px] uppercase tracking-wider s-${e.status}`,children:["run · ",e.status]})]}),c.jsx("button",{type:"button",onClick:t,className:"grid h-7 w-7 shrink-0 place-items-center rounded-md border border-[var(--line)] text-zinc-500 transition-colors hover:text-zinc-200","aria-label":"Close",children:c.jsx(Ue,{})})]}),c.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-4 overflow-auto px-5 py-4",children:[e.error&&c.jsxs("section",{className:"rise",children:[c.jsx("div",{className:"mono mb-1.5 text-[10px] uppercase tracking-[0.18em] text-red-400/80",children:"error"}),c.jsx("div",{className:"mono rounded-lg border border-red-500/25 bg-red-500/10 p-3 text-[11.5px] leading-relaxed text-red-200",children:e.error.message})]}),e.input!==void 0&&c.jsx(Kt,{label:"input",value:e.input}),e.output!==void 0&&c.jsx(Kt,{label:"output",value:e.output}),n&&c.jsx("div",{className:"text-sm text-zinc-600",children:"No input/output recorded."})]})]})}function se(e){if(typeof e=="string"||typeof e=="number")return""+e;let t="";if(Array.isArray(e))for(let n=0,r;n<e.length;n++)(r=se(e[n]))!==""&&(t+=(t&&" ")+r);else for(let n in e)e[n]&&(t+=(t&&" ")+n);return t}var yc={value:()=>{}};function cn(){for(var e=0,t=arguments.length,n={},r;e<t;++e){if(!(r=arguments[e]+"")||r in n||/[\s.]/.test(r))throw new Error("illegal type: "+r);n[r]=[]}return new Ot(n)}function Ot(e){this._=e}function wc(e,t){return e.trim().split(/^|\s+/).map(function(n){var r="",s=n.indexOf(".");if(s>=0&&(r=n.slice(s+1),n=n.slice(0,s)),n&&!t.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}Ot.prototype=cn.prototype={constructor:Ot,on:function(e,t){var n=this._,r=wc(e+"",n),s,i=-1,o=r.length;if(arguments.length<2){for(;++i<o;)if((s=(e=r[i]).type)&&(s=bc(n[s],e.name)))return s;return}if(t!=null&&typeof t!="function")throw new Error("invalid callback: "+t);for(;++i<o;)if(s=(e=r[i]).type)n[s]=Rr(n[s],e.name,t);else if(t==null)for(s in n)n[s]=Rr(n[s],e.name,null);return this},copy:function(){var e={},t=this._;for(var n in t)e[n]=t[n].slice();return new Ot(e)},call:function(e,t){if((s=arguments.length-2)>0)for(var n=new Array(s),r=0,s,i;r<s;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(i=this._[e],r=0,s=i.length;r<s;++r)i[r].value.apply(t,n)},apply:function(e,t,n){if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(var r=this._[e],s=0,i=r.length;s<i;++s)r[s].value.apply(t,n)}};function bc(e,t){for(var n=0,r=e.length,s;n<r;++n)if((s=e[n]).name===t)return s.value}function Rr(e,t,n){for(var r=0,s=e.length;r<s;++r)if(e[r].name===t){e[r]=yc,e=e.slice(0,r).concat(e.slice(r+1));break}return n!=null&&e.push({name:t,value:n}),e}var qn="http://www.w3.org/1999/xhtml";const Lr={svg:"http://www.w3.org/2000/svg",xhtml:qn,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function ln(e){var t=e+="",n=t.indexOf(":");return n>=0&&(t=e.slice(0,n))!=="xmlns"&&(e=e.slice(n+1)),Lr.hasOwnProperty(t)?{space:Lr[t],local:e}:e}function vc(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===qn&&t.documentElement.namespaceURI===qn?t.createElement(e):t.createElementNS(n,e)}}function Nc(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function Ws(e){var t=ln(e);return(t.local?Nc:vc)(t)}function _c(){}function ur(e){return e==null?_c:function(){return this.querySelector(e)}}function kc(e){typeof e!="function"&&(e=ur(e));for(var t=this._groups,n=t.length,r=new Array(n),s=0;s<n;++s)for(var i=t[s],o=i.length,a=r[s]=new Array(o),l,u,d=0;d<o;++d)(l=i[d])&&(u=e.call(l,l.__data__,d,i))&&("__data__"in l&&(u.__data__=l.__data__),a[d]=u);return new ue(r,this._parents)}function Sc(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function jc(){return[]}function Ks(e){return e==null?jc:function(){return this.querySelectorAll(e)}}function Ec(e){return function(){return Sc(e.apply(this,arguments))}}function Cc(e){typeof e=="function"?e=Ec(e):e=Ks(e);for(var t=this._groups,n=t.length,r=[],s=[],i=0;i<n;++i)for(var o=t[i],a=o.length,l,u=0;u<a;++u)(l=o[u])&&(r.push(e.call(l,l.__data__,u,o)),s.push(l));return new ue(r,s)}function Gs(e){return function(){return this.matches(e)}}function Us(e){return function(t){return t.matches(e)}}var $c=Array.prototype.find;function Mc(e){return function(){return $c.call(this.children,e)}}function zc(){return this.firstElementChild}function Ic(e){return this.select(e==null?zc:Mc(typeof e=="function"?e:Us(e)))}var Ac=Array.prototype.filter;function Pc(){return Array.from(this.children)}function Tc(e){return function(){return Ac.call(this.children,e)}}function Dc(e){return this.selectAll(e==null?Pc:Tc(typeof e=="function"?e:Us(e)))}function Rc(e){typeof e!="function"&&(e=Gs(e));for(var t=this._groups,n=t.length,r=new Array(n),s=0;s<n;++s)for(var i=t[s],o=i.length,a=r[s]=[],l,u=0;u<o;++u)(l=i[u])&&e.call(l,l.__data__,u,i)&&a.push(l);return new ue(r,this._parents)}function Zs(e){return new Array(e.length)}function Lc(){return new ue(this._enter||this._groups.map(Zs),this._parents)}function Gt(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}Gt.prototype={constructor:Gt,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};function Hc(e){return function(){return e}}function Fc(e,t,n,r,s,i){for(var o=0,a,l=t.length,u=i.length;o<u;++o)(a=t[o])?(a.__data__=i[o],r[o]=a):n[o]=new Gt(e,i[o]);for(;o<l;++o)(a=t[o])&&(s[o]=a)}function Oc(e,t,n,r,s,i,o){var a,l,u=new Map,d=t.length,f=i.length,h=new Array(d),p;for(a=0;a<d;++a)(l=t[a])&&(h[a]=p=o.call(l,l.__data__,a,t)+"",u.has(p)?s[a]=l:u.set(p,l));for(a=0;a<f;++a)p=o.call(e,i[a],a,i)+"",(l=u.get(p))?(r[a]=l,l.__data__=i[a],u.delete(p)):n[a]=new Gt(e,i[a]);for(a=0;a<d;++a)(l=t[a])&&u.get(h[a])===l&&(s[a]=l)}function Bc(e){return e.__data__}function Vc(e,t){if(!arguments.length)return Array.from(this,Bc);var n=t?Oc:Fc,r=this._parents,s=this._groups;typeof e!="function"&&(e=Hc(e));for(var i=s.length,o=new Array(i),a=new Array(i),l=new Array(i),u=0;u<i;++u){var d=r[u],f=s[u],h=f.length,p=qc(e.call(d,d&&d.__data__,u,r)),g=p.length,x=a[u]=new Array(g),v=o[u]=new Array(g),y=l[u]=new Array(h);n(d,f,x,v,y,p,t);for(var N=0,b=0,w,C;N<g;++N)if(w=x[N]){for(N>=b&&(b=N+1);!(C=v[b])&&++b<g;);w._next=C||null}}return o=new ue(o,r),o._enter=a,o._exit=l,o}function qc(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function Xc(){return new ue(this._exit||this._groups.map(Zs),this._parents)}function Yc(e,t,n){var r=this.enter(),s=this,i=this.exit();return typeof e=="function"?(r=e(r),r&&(r=r.selection())):r=r.append(e+""),t!=null&&(s=t(s),s&&(s=s.selection())),n==null?i.remove():n(i),r&&s?r.merge(s).order():s}function Wc(e){for(var t=e.selection?e.selection():e,n=this._groups,r=t._groups,s=n.length,i=r.length,o=Math.min(s,i),a=new Array(s),l=0;l<o;++l)for(var u=n[l],d=r[l],f=u.length,h=a[l]=new Array(f),p,g=0;g<f;++g)(p=u[g]||d[g])&&(h[g]=p);for(;l<s;++l)a[l]=n[l];return new ue(a,this._parents)}function Kc(){for(var e=this._groups,t=-1,n=e.length;++t<n;)for(var r=e[t],s=r.length-1,i=r[s],o;--s>=0;)(o=r[s])&&(i&&o.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(o,i),i=o);return this}function Gc(e){e||(e=Uc);function t(f,h){return f&&h?e(f.__data__,h.__data__):!f-!h}for(var n=this._groups,r=n.length,s=new Array(r),i=0;i<r;++i){for(var o=n[i],a=o.length,l=s[i]=new Array(a),u,d=0;d<a;++d)(u=o[d])&&(l[d]=u);l.sort(t)}return new ue(s,this._parents).order()}function Uc(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function Zc(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function Qc(){return Array.from(this)}function Jc(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],s=0,i=r.length;s<i;++s){var o=r[s];if(o)return o}return null}function el(){let e=0;for(const t of this)++e;return e}function tl(){return!this.node()}function nl(e){for(var t=this._groups,n=0,r=t.length;n<r;++n)for(var s=t[n],i=0,o=s.length,a;i<o;++i)(a=s[i])&&e.call(a,a.__data__,i,s);return this}function rl(e){return function(){this.removeAttribute(e)}}function sl(e){return function(){this.removeAttributeNS(e.space,e.local)}}function il(e,t){return function(){this.setAttribute(e,t)}}function ol(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function al(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}}function cl(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}}function ll(e,t){var n=ln(e);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((t==null?n.local?sl:rl:typeof t=="function"?n.local?cl:al:n.local?ol:il)(n,t))}function Qs(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function ul(e){return function(){this.style.removeProperty(e)}}function dl(e,t,n){return function(){this.style.setProperty(e,t,n)}}function fl(e,t,n){return function(){var r=t.apply(this,arguments);r==null?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function hl(e,t,n){return arguments.length>1?this.each((t==null?ul:typeof t=="function"?fl:dl)(e,t,n??"")):Ze(this.node(),e)}function Ze(e,t){return e.style.getPropertyValue(t)||Qs(e).getComputedStyle(e,null).getPropertyValue(t)}function pl(e){return function(){delete this[e]}}function gl(e,t){return function(){this[e]=t}}function ml(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function xl(e,t){return arguments.length>1?this.each((t==null?pl:typeof t=="function"?ml:gl)(e,t)):this.node()[e]}function Js(e){return e.trim().split(/^|\s+/)}function dr(e){return e.classList||new ei(e)}function ei(e){this._node=e,this._names=Js(e.getAttribute("class")||"")}ei.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 ti(e,t){for(var n=dr(e),r=-1,s=t.length;++r<s;)n.add(t[r])}function ni(e,t){for(var n=dr(e),r=-1,s=t.length;++r<s;)n.remove(t[r])}function yl(e){return function(){ti(this,e)}}function wl(e){return function(){ni(this,e)}}function bl(e,t){return function(){(t.apply(this,arguments)?ti:ni)(this,e)}}function vl(e,t){var n=Js(e+"");if(arguments.length<2){for(var r=dr(this.node()),s=-1,i=n.length;++s<i;)if(!r.contains(n[s]))return!1;return!0}return this.each((typeof t=="function"?bl:t?yl:wl)(n,t))}function Nl(){this.textContent=""}function _l(e){return function(){this.textContent=e}}function kl(e){return function(){var t=e.apply(this,arguments);this.textContent=t??""}}function Sl(e){return arguments.length?this.each(e==null?Nl:(typeof e=="function"?kl:_l)(e)):this.node().textContent}function jl(){this.innerHTML=""}function El(e){return function(){this.innerHTML=e}}function Cl(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??""}}function $l(e){return arguments.length?this.each(e==null?jl:(typeof e=="function"?Cl:El)(e)):this.node().innerHTML}function Ml(){this.nextSibling&&this.parentNode.appendChild(this)}function zl(){return this.each(Ml)}function Il(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Al(){return this.each(Il)}function Pl(e){var t=typeof e=="function"?e:Ws(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function Tl(){return null}function Dl(e,t){var n=typeof e=="function"?e:Ws(e),r=t==null?Tl:typeof t=="function"?t:ur(t);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function Rl(){var e=this.parentNode;e&&e.removeChild(this)}function Ll(){return this.each(Rl)}function Hl(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function Fl(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function Ol(e){return this.select(e?Fl:Hl)}function Bl(e){return arguments.length?this.property("__data__",e):this.node().__data__}function Vl(e){return function(t){e.call(this,t,this.__data__)}}function ql(e){return e.trim().split(/^|\s+/).map(function(t){var n="",r=t.indexOf(".");return r>=0&&(n=t.slice(r+1),t=t.slice(0,r)),{type:t,name:n}})}function Xl(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,s=t.length,i;n<s;++n)i=t[n],(!e.type||i.type===e.type)&&i.name===e.name?this.removeEventListener(i.type,i.listener,i.options):t[++r]=i;++r?t.length=r:delete this.__on}}}function Yl(e,t,n){return function(){var r=this.__on,s,i=Vl(t);if(r){for(var o=0,a=r.length;o<a;++o)if((s=r[o]).type===e.type&&s.name===e.name){this.removeEventListener(s.type,s.listener,s.options),this.addEventListener(s.type,s.listener=i,s.options=n),s.value=t;return}}this.addEventListener(e.type,i,n),s={type:e.type,name:e.name,value:t,listener:i,options:n},r?r.push(s):this.__on=[s]}}function Wl(e,t,n){var r=ql(e+""),s,i=r.length,o;if(arguments.length<2){var a=this.node().__on;if(a){for(var l=0,u=a.length,d;l<u;++l)for(s=0,d=a[l];s<i;++s)if((o=r[s]).type===d.type&&o.name===d.name)return d.value}return}for(a=t?Yl:Xl,s=0;s<i;++s)this.each(a(r[s],t,n));return this}function ri(e,t,n){var r=Qs(e),s=r.CustomEvent;typeof s=="function"?s=new s(t,n):(s=r.document.createEvent("Event"),n?(s.initEvent(t,n.bubbles,n.cancelable),s.detail=n.detail):s.initEvent(t,!1,!1)),e.dispatchEvent(s)}function Kl(e,t){return function(){return ri(this,e,t)}}function Gl(e,t){return function(){return ri(this,e,t.apply(this,arguments))}}function Ul(e,t){return this.each((typeof t=="function"?Gl:Kl)(e,t))}function*Zl(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],s=0,i=r.length,o;s<i;++s)(o=r[s])&&(yield o)}var si=[null];function ue(e,t){this._groups=e,this._parents=t}function St(){return new ue([[document.documentElement]],si)}function Ql(){return this}ue.prototype=St.prototype={constructor:ue,select:kc,selectAll:Cc,selectChild:Ic,selectChildren:Dc,filter:Rc,data:Vc,enter:Lc,exit:Xc,join:Yc,merge:Wc,selection:Ql,order:Kc,sort:Gc,call:Zc,nodes:Qc,node:Jc,size:el,empty:tl,each:nl,attr:ll,style:hl,property:xl,classed:vl,text:Sl,html:$l,raise:zl,lower:Al,append:Pl,insert:Dl,remove:Ll,clone:Ol,datum:Bl,on:Wl,dispatch:Ul,[Symbol.iterator]:Zl};function le(e){return typeof e=="string"?new ue([[document.querySelector(e)]],[document.documentElement]):new ue([[e]],si)}function Jl(e){let t;for(;t=e.sourceEvent;)e=t;return e}function de(e,t){if(e=Jl(e),t===void 0&&(t=e.currentTarget),t){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=e.clientX,r.y=e.clientY,r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}if(t.getBoundingClientRect){var s=t.getBoundingClientRect();return[e.clientX-s.left-t.clientLeft,e.clientY-s.top-t.clientTop]}}return[e.pageX,e.pageY]}const eu={passive:!1},gt={capture:!0,passive:!1};function zn(e){e.stopImmediatePropagation()}function Ke(e){e.preventDefault(),e.stopImmediatePropagation()}function ii(e){var t=e.document.documentElement,n=le(e).on("dragstart.drag",Ke,gt);"onselectstart"in t?n.on("selectstart.drag",Ke,gt):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect="none")}function oi(e,t){var n=e.document.documentElement,r=le(e).on("dragstart.drag",null);t&&(r.on("click.drag",Ke,gt),setTimeout(function(){r.on("click.drag",null)},0)),"onselectstart"in n?r.on("selectstart.drag",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}const zt=e=>()=>e;function Xn(e,{sourceEvent:t,subject:n,target:r,identifier:s,active:i,x:o,y:a,dx:l,dy:u,dispatch:d}){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:s,enumerable:!0,configurable:!0},active:{value:i,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:d}})}Xn.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function tu(e){return!e.ctrlKey&&!e.button}function nu(){return this.parentNode}function ru(e,t){return t??{x:e.x,y:e.y}}function su(){return navigator.maxTouchPoints||"ontouchstart"in this}function ai(){var e=tu,t=nu,n=ru,r=su,s={},i=cn("start","drag","end"),o=0,a,l,u,d,f=0;function h(w){w.on("mousedown.drag",p).filter(r).on("touchstart.drag",v).on("touchmove.drag",y,eu).on("touchend.drag touchcancel.drag",N).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function p(w,C){if(!(d||!e.call(this,w,C))){var L=b(this,t.call(this,w,C),w,C,"mouse");L&&(le(w.view).on("mousemove.drag",g,gt).on("mouseup.drag",x,gt),ii(w.view),zn(w),u=!1,a=w.clientX,l=w.clientY,L("start",w))}}function g(w){if(Ke(w),!u){var C=w.clientX-a,L=w.clientY-l;u=C*C+L*L>f}s.mouse("drag",w)}function x(w){le(w.view).on("mousemove.drag mouseup.drag",null),oi(w.view,u),Ke(w),s.mouse("end",w)}function v(w,C){if(e.call(this,w,C)){var L=w.changedTouches,E=t.call(this,w,C),R=L.length,D,P;for(D=0;D<R;++D)(P=b(this,E,w,C,L[D].identifier,L[D]))&&(zn(w),P("start",w,L[D]))}}function y(w){var C=w.changedTouches,L=C.length,E,R;for(E=0;E<L;++E)(R=s[C[E].identifier])&&(Ke(w),R("drag",w,C[E]))}function N(w){var C=w.changedTouches,L=C.length,E,R;for(d&&clearTimeout(d),d=setTimeout(function(){d=null},500),E=0;E<L;++E)(R=s[C[E].identifier])&&(zn(w),R("end",w,C[E]))}function b(w,C,L,E,R,D){var P=i.copy(),T=de(D||L,C),F,A,m;if((m=n.call(w,new Xn("beforestart",{sourceEvent:L,target:h,identifier:R,active:o,x:T[0],y:T[1],dx:0,dy:0,dispatch:P}),E))!=null)return F=m.x-T[0]||0,A=m.y-T[1]||0,function k(_,M,S){var j=T,z;switch(_){case"start":s[R]=k,z=o++;break;case"end":delete s[R],--o;case"drag":T=de(S||M,C),z=o;break}P.call(_,w,new Xn(_,{sourceEvent:M,subject:m,target:h,identifier:R,active:z,x:T[0]+F,y:T[1]+A,dx:T[0]-j[0],dy:T[1]-j[1],dispatch:P}),E)}}return h.filter=function(w){return arguments.length?(e=typeof w=="function"?w:zt(!!w),h):e},h.container=function(w){return arguments.length?(t=typeof w=="function"?w:zt(w),h):t},h.subject=function(w){return arguments.length?(n=typeof w=="function"?w:zt(w),h):n},h.touchable=function(w){return arguments.length?(r=typeof w=="function"?w:zt(!!w),h):r},h.on=function(){var w=i.on.apply(i,arguments);return w===i?h:w},h.clickDistance=function(w){return arguments.length?(f=(w=+w)*w,h):Math.sqrt(f)},h}function fr(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function ci(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function jt(){}var mt=.7,Ut=1/mt,Ge="\\s*([+-]?\\d+)\\s*",xt="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",ge="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",iu=/^#([0-9a-f]{3,8})$/,ou=new RegExp(`^rgb\\(${Ge},${Ge},${Ge}\\)$`),au=new RegExp(`^rgb\\(${ge},${ge},${ge}\\)$`),cu=new RegExp(`^rgba\\(${Ge},${Ge},${Ge},${xt}\\)$`),lu=new RegExp(`^rgba\\(${ge},${ge},${ge},${xt}\\)$`),uu=new RegExp(`^hsl\\(${xt},${ge},${ge}\\)$`),du=new RegExp(`^hsla\\(${xt},${ge},${ge},${xt}\\)$`),Hr={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};fr(jt,yt,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Fr,formatHex:Fr,formatHex8:fu,formatHsl:hu,formatRgb:Or,toString:Or});function Fr(){return this.rgb().formatHex()}function fu(){return this.rgb().formatHex8()}function hu(){return li(this).formatHsl()}function Or(){return this.rgb().formatRgb()}function yt(e){var t,n;return e=(e+"").trim().toLowerCase(),(t=iu.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?Br(t):n===3?new ce(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?It(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?It(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=ou.exec(e))?new ce(t[1],t[2],t[3],1):(t=au.exec(e))?new ce(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=cu.exec(e))?It(t[1],t[2],t[3],t[4]):(t=lu.exec(e))?It(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=uu.exec(e))?Xr(t[1],t[2]/100,t[3]/100,1):(t=du.exec(e))?Xr(t[1],t[2]/100,t[3]/100,t[4]):Hr.hasOwnProperty(e)?Br(Hr[e]):e==="transparent"?new ce(NaN,NaN,NaN,0):null}function Br(e){return new ce(e>>16&255,e>>8&255,e&255,1)}function It(e,t,n,r){return r<=0&&(e=t=n=NaN),new ce(e,t,n,r)}function pu(e){return e instanceof jt||(e=yt(e)),e?(e=e.rgb(),new ce(e.r,e.g,e.b,e.opacity)):new ce}function Yn(e,t,n,r){return arguments.length===1?pu(e):new ce(e,t,n,r??1)}function ce(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}fr(ce,Yn,ci(jt,{brighter(e){return e=e==null?Ut:Math.pow(Ut,e),new ce(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?mt:Math.pow(mt,e),new ce(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new ce(Le(this.r),Le(this.g),Le(this.b),Zt(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:Vr,formatHex:Vr,formatHex8:gu,formatRgb:qr,toString:qr}));function Vr(){return`#${Re(this.r)}${Re(this.g)}${Re(this.b)}`}function gu(){return`#${Re(this.r)}${Re(this.g)}${Re(this.b)}${Re((isNaN(this.opacity)?1:this.opacity)*255)}`}function qr(){const e=Zt(this.opacity);return`${e===1?"rgb(":"rgba("}${Le(this.r)}, ${Le(this.g)}, ${Le(this.b)}${e===1?")":`, ${e})`}`}function Zt(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Le(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Re(e){return e=Le(e),(e<16?"0":"")+e.toString(16)}function Xr(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new fe(e,t,n,r)}function li(e){if(e instanceof fe)return new fe(e.h,e.s,e.l,e.opacity);if(e instanceof jt||(e=yt(e)),!e)return new fe;if(e instanceof fe)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,s=Math.min(t,n,r),i=Math.max(t,n,r),o=NaN,a=i-s,l=(i+s)/2;return a?(t===i?o=(n-r)/a+(n<r)*6:n===i?o=(r-t)/a+2:o=(t-n)/a+4,a/=l<.5?i+s:2-i-s,o*=60):a=l>0&&l<1?0:o,new fe(o,a,l,e.opacity)}function mu(e,t,n,r){return arguments.length===1?li(e):new fe(e,t,n,r??1)}function fe(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}fr(fe,mu,ci(jt,{brighter(e){return e=e==null?Ut:Math.pow(Ut,e),new fe(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?mt:Math.pow(mt,e),new fe(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,s=2*n-r;return new ce(In(e>=240?e-240:e+120,s,r),In(e,s,r),In(e<120?e+240:e-120,s,r),this.opacity)},clamp(){return new fe(Yr(this.h),At(this.s),At(this.l),Zt(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=Zt(this.opacity);return`${e===1?"hsl(":"hsla("}${Yr(this.h)}, ${At(this.s)*100}%, ${At(this.l)*100}%${e===1?")":`, ${e})`}`}}));function Yr(e){return e=(e||0)%360,e<0?e+360:e}function At(e){return Math.max(0,Math.min(1,e||0))}function In(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 ui=e=>()=>e;function xu(e,t){return function(n){return e+n*t}}function yu(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 wu(e){return(e=+e)==1?di:function(t,n){return n-t?yu(t,n,e):ui(isNaN(t)?n:t)}}function di(e,t){var n=t-e;return n?xu(e,n):ui(isNaN(e)?t:e)}const Wr=function e(t){var n=wu(t);function r(s,i){var o=n((s=Yn(s)).r,(i=Yn(i)).r),a=n(s.g,i.g),l=n(s.b,i.b),u=di(s.opacity,i.opacity);return function(d){return s.r=o(d),s.g=a(d),s.b=l(d),s.opacity=u(d),s+""}}return r.gamma=e,r}(1);function ze(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}var Wn=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,An=new RegExp(Wn.source,"g");function bu(e){return function(){return e}}function vu(e){return function(t){return e(t)+""}}function Nu(e,t){var n=Wn.lastIndex=An.lastIndex=0,r,s,i,o=-1,a=[],l=[];for(e=e+"",t=t+"";(r=Wn.exec(e))&&(s=An.exec(t));)(i=s.index)>n&&(i=t.slice(n,i),a[o]?a[o]+=i:a[++o]=i),(r=r[0])===(s=s[0])?a[o]?a[o]+=s:a[++o]=s:(a[++o]=null,l.push({i:o,x:ze(r,s)})),n=An.lastIndex;return n<t.length&&(i=t.slice(n),a[o]?a[o]+=i:a[++o]=i),a.length<2?l[0]?vu(l[0].x):bu(t):(t=l.length,function(u){for(var d=0,f;d<t;++d)a[(f=l[d]).i]=f.x(u);return a.join("")})}var Kr=180/Math.PI,Kn={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function fi(e,t,n,r,s,i){var o,a,l;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(l=e*n+t*r)&&(n-=e*l,r-=t*l),(a=Math.sqrt(n*n+r*r))&&(n/=a,r/=a,l/=a),e*r<t*n&&(e=-e,t=-t,l=-l,o=-o),{translateX:s,translateY:i,rotate:Math.atan2(t,e)*Kr,skewX:Math.atan(l)*Kr,scaleX:o,scaleY:a}}var Pt;function _u(e){const t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?Kn:fi(t.a,t.b,t.c,t.d,t.e,t.f)}function ku(e){return e==null||(Pt||(Pt=document.createElementNS("http://www.w3.org/2000/svg","g")),Pt.setAttribute("transform",e),!(e=Pt.transform.baseVal.consolidate()))?Kn:(e=e.matrix,fi(e.a,e.b,e.c,e.d,e.e,e.f))}function hi(e,t,n,r){function s(u){return u.length?u.pop()+" ":""}function i(u,d,f,h,p,g){if(u!==f||d!==h){var x=p.push("translate(",null,t,null,n);g.push({i:x-4,x:ze(u,f)},{i:x-2,x:ze(d,h)})}else(f||h)&&p.push("translate("+f+t+h+n)}function o(u,d,f,h){u!==d?(u-d>180?d+=360:d-u>180&&(u+=360),h.push({i:f.push(s(f)+"rotate(",null,r)-2,x:ze(u,d)})):d&&f.push(s(f)+"rotate("+d+r)}function a(u,d,f,h){u!==d?h.push({i:f.push(s(f)+"skewX(",null,r)-2,x:ze(u,d)}):d&&f.push(s(f)+"skewX("+d+r)}function l(u,d,f,h,p,g){if(u!==f||d!==h){var x=p.push(s(p)+"scale(",null,",",null,")");g.push({i:x-4,x:ze(u,f)},{i:x-2,x:ze(d,h)})}else(f!==1||h!==1)&&p.push(s(p)+"scale("+f+","+h+")")}return function(u,d){var f=[],h=[];return u=e(u),d=e(d),i(u.translateX,u.translateY,d.translateX,d.translateY,f,h),o(u.rotate,d.rotate,f,h),a(u.skewX,d.skewX,f,h),l(u.scaleX,u.scaleY,d.scaleX,d.scaleY,f,h),u=d=null,function(p){for(var g=-1,x=h.length,v;++g<x;)f[(v=h[g]).i]=v.x(p);return f.join("")}}}var Su=hi(_u,"px, ","px)","deg)"),ju=hi(ku,", ",")",")"),Eu=1e-12;function Gr(e){return((e=Math.exp(e))+1/e)/2}function Cu(e){return((e=Math.exp(e))-1/e)/2}function $u(e){return((e=Math.exp(2*e))-1)/(e+1)}const Mu=function e(t,n,r){function s(i,o){var a=i[0],l=i[1],u=i[2],d=o[0],f=o[1],h=o[2],p=d-a,g=f-l,x=p*p+g*g,v,y;if(x<Eu)y=Math.log(h/u)/t,v=function(E){return[a+E*p,l+E*g,u*Math.exp(t*E*y)]};else{var N=Math.sqrt(x),b=(h*h-u*u+r*x)/(2*u*n*N),w=(h*h-u*u-r*x)/(2*h*n*N),C=Math.log(Math.sqrt(b*b+1)-b),L=Math.log(Math.sqrt(w*w+1)-w);y=(L-C)/t,v=function(E){var R=E*y,D=Gr(C),P=u/(n*N)*(D*$u(t*R+C)-Cu(C));return[a+P*p,l+P*g,u*D/Gr(t*R+C)]}}return v.duration=y*1e3*t/Math.SQRT2,v}return s.rho=function(i){var o=Math.max(.001,+i),a=o*o,l=a*a;return e(o,a,l)},s}(Math.SQRT2,2,4);var Qe=0,dt=0,lt=0,pi=1e3,Qt,ft,Jt=0,Fe=0,un=0,wt=typeof performance=="object"&&performance.now?performance:Date,gi=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function hr(){return Fe||(gi(zu),Fe=wt.now()+un)}function zu(){Fe=0}function en(){this._call=this._time=this._next=null}en.prototype=mi.prototype={constructor:en,restart:function(e,t,n){if(typeof e!="function")throw new TypeError("callback is not a function");n=(n==null?hr():+n)+(t==null?0:+t),!this._next&&ft!==this&&(ft?ft._next=this:Qt=this,ft=this),this._call=e,this._time=n,Gn()},stop:function(){this._call&&(this._call=null,this._time=1/0,Gn())}};function mi(e,t,n){var r=new en;return r.restart(e,t,n),r}function Iu(){hr(),++Qe;for(var e=Qt,t;e;)(t=Fe-e._time)>=0&&e._call.call(void 0,t),e=e._next;--Qe}function Ur(){Fe=(Jt=wt.now())+un,Qe=dt=0;try{Iu()}finally{Qe=0,Pu(),Fe=0}}function Au(){var e=wt.now(),t=e-Jt;t>pi&&(un-=t,Jt=e)}function Pu(){for(var e,t=Qt,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:Qt=n);ft=e,Gn(r)}function Gn(e){if(!Qe){dt&&(dt=clearTimeout(dt));var t=e-Fe;t>24?(e<1/0&&(dt=setTimeout(Ur,e-wt.now()-un)),lt&&(lt=clearInterval(lt))):(lt||(Jt=wt.now(),lt=setInterval(Au,pi)),Qe=1,gi(Ur))}}function Zr(e,t,n){var r=new en;return t=t==null?0:+t,r.restart(s=>{r.stop(),e(s+t)},t,n),r}var Tu=cn("start","end","cancel","interrupt"),Du=[],xi=0,Qr=1,Un=2,Bt=3,Jr=4,Zn=5,Vt=6;function dn(e,t,n,r,s,i){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;Ru(e,n,{name:t,index:r,group:s,on:Tu,tween:Du,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:xi})}function pr(e,t){var n=pe(e,t);if(n.state>xi)throw new Error("too late; already scheduled");return n}function me(e,t){var n=pe(e,t);if(n.state>Bt)throw new Error("too late; already running");return n}function pe(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("transition not found");return n}function Ru(e,t,n){var r=e.__transition,s;r[t]=n,n.timer=mi(i,0,n.time);function i(u){n.state=Qr,n.timer.restart(o,n.delay,n.time),n.delay<=u&&o(u-n.delay)}function o(u){var d,f,h,p;if(n.state!==Qr)return l();for(d in r)if(p=r[d],p.name===n.name){if(p.state===Bt)return Zr(o);p.state===Jr?(p.state=Vt,p.timer.stop(),p.on.call("interrupt",e,e.__data__,p.index,p.group),delete r[d]):+d<t&&(p.state=Vt,p.timer.stop(),p.on.call("cancel",e,e.__data__,p.index,p.group),delete r[d])}if(Zr(function(){n.state===Bt&&(n.state=Jr,n.timer.restart(a,n.delay,n.time),a(u))}),n.state=Un,n.on.call("start",e,e.__data__,n.index,n.group),n.state===Un){for(n.state=Bt,s=new Array(h=n.tween.length),d=0,f=-1;d<h;++d)(p=n.tween[d].value.call(e,e.__data__,n.index,n.group))&&(s[++f]=p);s.length=f+1}}function a(u){for(var d=u<n.duration?n.ease.call(null,u/n.duration):(n.timer.restart(l),n.state=Zn,1),f=-1,h=s.length;++f<h;)s[f].call(e,d);n.state===Zn&&(n.on.call("end",e,e.__data__,n.index,n.group),l())}function l(){n.state=Vt,n.timer.stop(),delete r[t];for(var u in r)return;delete e.__transition}}function qt(e,t){var n=e.__transition,r,s,i=!0,o;if(n){t=t==null?null:t+"";for(o in n){if((r=n[o]).name!==t){i=!1;continue}s=r.state>Un&&r.state<Zn,r.state=Vt,r.timer.stop(),r.on.call(s?"interrupt":"cancel",e,e.__data__,r.index,r.group),delete n[o]}i&&delete e.__transition}}function Lu(e){return this.each(function(){qt(this,e)})}function Hu(e,t){var n,r;return function(){var s=me(this,e),i=s.tween;if(i!==n){r=n=i;for(var o=0,a=r.length;o<a;++o)if(r[o].name===t){r=r.slice(),r.splice(o,1);break}}s.tween=r}}function Fu(e,t,n){var r,s;if(typeof n!="function")throw new Error;return function(){var i=me(this,e),o=i.tween;if(o!==r){s=(r=o).slice();for(var a={name:t,value:n},l=0,u=s.length;l<u;++l)if(s[l].name===t){s[l]=a;break}l===u&&s.push(a)}i.tween=s}}function Ou(e,t){var n=this._id;if(e+="",arguments.length<2){for(var r=pe(this.node(),n).tween,s=0,i=r.length,o;s<i;++s)if((o=r[s]).name===e)return o.value;return null}return this.each((t==null?Hu:Fu)(n,e,t))}function gr(e,t,n){var r=e._id;return e.each(function(){var s=me(this,r);(s.value||(s.value={}))[t]=n.apply(this,arguments)}),function(s){return pe(s,r).value[t]}}function yi(e,t){var n;return(typeof t=="number"?ze:t instanceof yt?Wr:(n=yt(t))?(t=n,Wr):Nu)(e,t)}function Bu(e){return function(){this.removeAttribute(e)}}function Vu(e){return function(){this.removeAttributeNS(e.space,e.local)}}function qu(e,t,n){var r,s=n+"",i;return function(){var o=this.getAttribute(e);return o===s?null:o===r?i:i=t(r=o,n)}}function Xu(e,t,n){var r,s=n+"",i;return function(){var o=this.getAttributeNS(e.space,e.local);return o===s?null:o===r?i:i=t(r=o,n)}}function Yu(e,t,n){var r,s,i;return function(){var o,a=n(this),l;return a==null?void this.removeAttribute(e):(o=this.getAttribute(e),l=a+"",o===l?null:o===r&&l===s?i:(s=l,i=t(r=o,a)))}}function Wu(e,t,n){var r,s,i;return function(){var o,a=n(this),l;return a==null?void this.removeAttributeNS(e.space,e.local):(o=this.getAttributeNS(e.space,e.local),l=a+"",o===l?null:o===r&&l===s?i:(s=l,i=t(r=o,a)))}}function Ku(e,t){var n=ln(e),r=n==="transform"?ju:yi;return this.attrTween(e,typeof t=="function"?(n.local?Wu:Yu)(n,r,gr(this,"attr."+e,t)):t==null?(n.local?Vu:Bu)(n):(n.local?Xu:qu)(n,r,t))}function Gu(e,t){return function(n){this.setAttribute(e,t.call(this,n))}}function Uu(e,t){return function(n){this.setAttributeNS(e.space,e.local,t.call(this,n))}}function Zu(e,t){var n,r;function s(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&Uu(e,i)),n}return s._value=t,s}function Qu(e,t){var n,r;function s(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&Gu(e,i)),n}return s._value=t,s}function Ju(e,t){var n="attr."+e;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!="function")throw new Error;var r=ln(e);return this.tween(n,(r.local?Zu:Qu)(r,t))}function ed(e,t){return function(){pr(this,e).delay=+t.apply(this,arguments)}}function td(e,t){return t=+t,function(){pr(this,e).delay=t}}function nd(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?ed:td)(t,e)):pe(this.node(),t).delay}function rd(e,t){return function(){me(this,e).duration=+t.apply(this,arguments)}}function sd(e,t){return t=+t,function(){me(this,e).duration=t}}function id(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?rd:sd)(t,e)):pe(this.node(),t).duration}function od(e,t){if(typeof t!="function")throw new Error;return function(){me(this,e).ease=t}}function ad(e){var t=this._id;return arguments.length?this.each(od(t,e)):pe(this.node(),t).ease}function cd(e,t){return function(){var n=t.apply(this,arguments);if(typeof n!="function")throw new Error;me(this,e).ease=n}}function ld(e){if(typeof e!="function")throw new Error;return this.each(cd(this._id,e))}function ud(e){typeof e!="function"&&(e=Gs(e));for(var t=this._groups,n=t.length,r=new Array(n),s=0;s<n;++s)for(var i=t[s],o=i.length,a=r[s]=[],l,u=0;u<o;++u)(l=i[u])&&e.call(l,l.__data__,u,i)&&a.push(l);return new ke(r,this._parents,this._name,this._id)}function dd(e){if(e._id!==this._id)throw new Error;for(var t=this._groups,n=e._groups,r=t.length,s=n.length,i=Math.min(r,s),o=new Array(r),a=0;a<i;++a)for(var l=t[a],u=n[a],d=l.length,f=o[a]=new Array(d),h,p=0;p<d;++p)(h=l[p]||u[p])&&(f[p]=h);for(;a<r;++a)o[a]=t[a];return new ke(o,this._parents,this._name,this._id)}function fd(e){return(e+"").trim().split(/^|\s+/).every(function(t){var n=t.indexOf(".");return n>=0&&(t=t.slice(0,n)),!t||t==="start"})}function hd(e,t,n){var r,s,i=fd(t)?pr:me;return function(){var o=i(this,e),a=o.on;a!==r&&(s=(r=a).copy()).on(t,n),o.on=s}}function pd(e,t){var n=this._id;return arguments.length<2?pe(this.node(),n).on.on(e):this.each(hd(n,e,t))}function gd(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function md(){return this.on("end.remove",gd(this._id))}function xd(e){var t=this._name,n=this._id;typeof e!="function"&&(e=ur(e));for(var r=this._groups,s=r.length,i=new Array(s),o=0;o<s;++o)for(var a=r[o],l=a.length,u=i[o]=new Array(l),d,f,h=0;h<l;++h)(d=a[h])&&(f=e.call(d,d.__data__,h,a))&&("__data__"in d&&(f.__data__=d.__data__),u[h]=f,dn(u[h],t,n,h,u,pe(d,n)));return new ke(i,this._parents,t,n)}function yd(e){var t=this._name,n=this._id;typeof e!="function"&&(e=Ks(e));for(var r=this._groups,s=r.length,i=[],o=[],a=0;a<s;++a)for(var l=r[a],u=l.length,d,f=0;f<u;++f)if(d=l[f]){for(var h=e.call(d,d.__data__,f,l),p,g=pe(d,n),x=0,v=h.length;x<v;++x)(p=h[x])&&dn(p,t,n,x,h,g);i.push(h),o.push(d)}return new ke(i,o,t,n)}var wd=St.prototype.constructor;function bd(){return new wd(this._groups,this._parents)}function vd(e,t){var n,r,s;return function(){var i=Ze(this,e),o=(this.style.removeProperty(e),Ze(this,e));return i===o?null:i===n&&o===r?s:s=t(n=i,r=o)}}function wi(e){return function(){this.style.removeProperty(e)}}function Nd(e,t,n){var r,s=n+"",i;return function(){var o=Ze(this,e);return o===s?null:o===r?i:i=t(r=o,n)}}function _d(e,t,n){var r,s,i;return function(){var o=Ze(this,e),a=n(this),l=a+"";return a==null&&(l=a=(this.style.removeProperty(e),Ze(this,e))),o===l?null:o===r&&l===s?i:(s=l,i=t(r=o,a))}}function kd(e,t){var n,r,s,i="style."+t,o="end."+i,a;return function(){var l=me(this,e),u=l.on,d=l.value[i]==null?a||(a=wi(t)):void 0;(u!==n||s!==d)&&(r=(n=u).copy()).on(o,s=d),l.on=r}}function Sd(e,t,n){var r=(e+="")=="transform"?Su:yi;return t==null?this.styleTween(e,vd(e,r)).on("end.style."+e,wi(e)):typeof t=="function"?this.styleTween(e,_d(e,r,gr(this,"style."+e,t))).each(kd(this._id,e)):this.styleTween(e,Nd(e,r,t),n).on("end.style."+e,null)}function jd(e,t,n){return function(r){this.style.setProperty(e,t.call(this,r),n)}}function Ed(e,t,n){var r,s;function i(){var o=t.apply(this,arguments);return o!==s&&(r=(s=o)&&jd(e,o,n)),r}return i._value=t,i}function Cd(e,t,n){var r="style."+(e+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!="function")throw new Error;return this.tween(r,Ed(e,t,n??""))}function $d(e){return function(){this.textContent=e}}function Md(e){return function(){var t=e(this);this.textContent=t??""}}function zd(e){return this.tween("text",typeof e=="function"?Md(gr(this,"text",e)):$d(e==null?"":e+""))}function Id(e){return function(t){this.textContent=e.call(this,t)}}function Ad(e){var t,n;function r(){var s=e.apply(this,arguments);return s!==n&&(t=(n=s)&&Id(s)),t}return r._value=e,r}function Pd(e){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!="function")throw new Error;return this.tween(t,Ad(e))}function Td(){for(var e=this._name,t=this._id,n=bi(),r=this._groups,s=r.length,i=0;i<s;++i)for(var o=r[i],a=o.length,l,u=0;u<a;++u)if(l=o[u]){var d=pe(l,t);dn(l,e,n,u,o,{time:d.time+d.delay+d.duration,delay:0,duration:d.duration,ease:d.ease})}return new ke(r,this._parents,e,n)}function Dd(){var e,t,n=this,r=n._id,s=n.size();return new Promise(function(i,o){var a={value:o},l={value:function(){--s===0&&i()}};n.each(function(){var u=me(this,r),d=u.on;d!==e&&(t=(e=d).copy(),t._.cancel.push(a),t._.interrupt.push(a),t._.end.push(l)),u.on=t}),s===0&&i()})}var Rd=0;function ke(e,t,n,r){this._groups=e,this._parents=t,this._name=n,this._id=r}function bi(){return++Rd}var xe=St.prototype;ke.prototype={constructor:ke,select:xd,selectAll:yd,selectChild:xe.selectChild,selectChildren:xe.selectChildren,filter:ud,merge:dd,selection:bd,transition:Td,call:xe.call,nodes:xe.nodes,node:xe.node,size:xe.size,empty:xe.empty,each:xe.each,on:pd,attr:Ku,attrTween:Ju,style:Sd,styleTween:Cd,text:zd,textTween:Pd,remove:md,tween:Ou,delay:nd,duration:id,ease:ad,easeVarying:ld,end:Dd,[Symbol.iterator]:xe[Symbol.iterator]};function Ld(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var Hd={time:null,delay:0,duration:250,ease:Ld};function Fd(e,t){for(var n;!(n=e.__transition)||!(n=n[t]);)if(!(e=e.parentNode))throw new Error(`transition ${t} not found`);return n}function Od(e){var t,n;e instanceof ke?(t=e._id,e=e._name):(t=bi(),(n=Hd).time=hr(),e=e==null?null:e+"");for(var r=this._groups,s=r.length,i=0;i<s;++i)for(var o=r[i],a=o.length,l,u=0;u<a;++u)(l=o[u])&&dn(l,e,t,u,o,n||Fd(l,t));return new ke(r,this._parents,e,t)}St.prototype.interrupt=Lu;St.prototype.transition=Od;const Tt=e=>()=>e;function Bd(e,{sourceEvent:t,target:n,transform:r,dispatch:s}){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:s}})}function be(e,t,n){this.k=e,this.x=t,this.y=n}be.prototype={constructor:be,scale:function(e){return e===1?this:new be(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new be(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 fn=new be(1,0,0);vi.prototype=be.prototype;function vi(e){for(;!e.__zoom;)if(!(e=e.parentNode))return fn;return e.__zoom}function Pn(e){e.stopImmediatePropagation()}function ut(e){e.preventDefault(),e.stopImmediatePropagation()}function Vd(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function qd(){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 es(){return this.__zoom||fn}function Xd(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function Yd(){return navigator.maxTouchPoints||"ontouchstart"in this}function Wd(e,t,n){var r=e.invertX(t[0][0])-n[0][0],s=e.invertX(t[1][0])-n[1][0],i=e.invertY(t[0][1])-n[0][1],o=e.invertY(t[1][1])-n[1][1];return e.translate(s>r?(r+s)/2:Math.min(0,r)||Math.max(0,s),o>i?(i+o)/2:Math.min(0,i)||Math.max(0,o))}function Ni(){var e=Vd,t=qd,n=Wd,r=Xd,s=Yd,i=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],a=250,l=Mu,u=cn("start","zoom","end"),d,f,h,p=500,g=150,x=0,v=10;function y(m){m.property("__zoom",es).on("wheel.zoom",R,{passive:!1}).on("mousedown.zoom",D).on("dblclick.zoom",P).filter(s).on("touchstart.zoom",T).on("touchmove.zoom",F).on("touchend.zoom touchcancel.zoom",A).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}y.transform=function(m,k,_,M){var S=m.selection?m.selection():m;S.property("__zoom",es),m!==S?C(m,k,_,M):S.interrupt().each(function(){L(this,arguments).event(M).start().zoom(null,typeof k=="function"?k.apply(this,arguments):k).end()})},y.scaleBy=function(m,k,_,M){y.scaleTo(m,function(){var S=this.__zoom.k,j=typeof k=="function"?k.apply(this,arguments):k;return S*j},_,M)},y.scaleTo=function(m,k,_,M){y.transform(m,function(){var S=t.apply(this,arguments),j=this.__zoom,z=_==null?w(S):typeof _=="function"?_.apply(this,arguments):_,H=j.invert(z),O=typeof k=="function"?k.apply(this,arguments):k;return n(b(N(j,O),z,H),S,o)},_,M)},y.translateBy=function(m,k,_,M){y.transform(m,function(){return n(this.__zoom.translate(typeof k=="function"?k.apply(this,arguments):k,typeof _=="function"?_.apply(this,arguments):_),t.apply(this,arguments),o)},null,M)},y.translateTo=function(m,k,_,M,S){y.transform(m,function(){var j=t.apply(this,arguments),z=this.__zoom,H=M==null?w(j):typeof M=="function"?M.apply(this,arguments):M;return n(fn.translate(H[0],H[1]).scale(z.k).translate(typeof k=="function"?-k.apply(this,arguments):-k,typeof _=="function"?-_.apply(this,arguments):-_),j,o)},M,S)};function N(m,k){return k=Math.max(i[0],Math.min(i[1],k)),k===m.k?m:new be(k,m.x,m.y)}function b(m,k,_){var M=k[0]-_[0]*m.k,S=k[1]-_[1]*m.k;return M===m.x&&S===m.y?m:new be(m.k,M,S)}function w(m){return[(+m[0][0]+ +m[1][0])/2,(+m[0][1]+ +m[1][1])/2]}function C(m,k,_,M){m.on("start.zoom",function(){L(this,arguments).event(M).start()}).on("interrupt.zoom end.zoom",function(){L(this,arguments).event(M).end()}).tween("zoom",function(){var S=this,j=arguments,z=L(S,j).event(M),H=t.apply(S,j),O=_==null?w(H):typeof _=="function"?_.apply(S,j):_,X=Math.max(H[1][0]-H[0][0],H[1][1]-H[0][1]),V=S.__zoom,B=typeof k=="function"?k.apply(S,j):k,Y=l(V.invert(O).concat(X/V.k),B.invert(O).concat(X/B.k));return function(U){if(U===1)U=B;else{var I=Y(U),q=X/I[2];U=new be(q,O[0]-I[0]*q,O[1]-I[1]*q)}z.zoom(null,U)}})}function L(m,k,_){return!_&&m.__zooming||new E(m,k)}function E(m,k){this.that=m,this.args=k,this.active=0,this.sourceEvent=null,this.extent=t.apply(m,k),this.taps=0}E.prototype={event:function(m){return m&&(this.sourceEvent=m),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(m,k){return this.mouse&&m!=="mouse"&&(this.mouse[1]=k.invert(this.mouse[0])),this.touch0&&m!=="touch"&&(this.touch0[1]=k.invert(this.touch0[0])),this.touch1&&m!=="touch"&&(this.touch1[1]=k.invert(this.touch1[0])),this.that.__zoom=k,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(m){var k=le(this.that).datum();u.call(m,this.that,new Bd(m,{sourceEvent:this.sourceEvent,target:y,transform:this.that.__zoom,dispatch:u}),k)}};function R(m,...k){if(!e.apply(this,arguments))return;var _=L(this,k).event(m),M=this.__zoom,S=Math.max(i[0],Math.min(i[1],M.k*Math.pow(2,r.apply(this,arguments)))),j=de(m);if(_.wheel)(_.mouse[0][0]!==j[0]||_.mouse[0][1]!==j[1])&&(_.mouse[1]=M.invert(_.mouse[0]=j)),clearTimeout(_.wheel);else{if(M.k===S)return;_.mouse=[j,M.invert(j)],qt(this),_.start()}ut(m),_.wheel=setTimeout(z,g),_.zoom("mouse",n(b(N(M,S),_.mouse[0],_.mouse[1]),_.extent,o));function z(){_.wheel=null,_.end()}}function D(m,...k){if(h||!e.apply(this,arguments))return;var _=m.currentTarget,M=L(this,k,!0).event(m),S=le(m.view).on("mousemove.zoom",O,!0).on("mouseup.zoom",X,!0),j=de(m,_),z=m.clientX,H=m.clientY;ii(m.view),Pn(m),M.mouse=[j,this.__zoom.invert(j)],qt(this),M.start();function O(V){if(ut(V),!M.moved){var B=V.clientX-z,Y=V.clientY-H;M.moved=B*B+Y*Y>x}M.event(V).zoom("mouse",n(b(M.that.__zoom,M.mouse[0]=de(V,_),M.mouse[1]),M.extent,o))}function X(V){S.on("mousemove.zoom mouseup.zoom",null),oi(V.view,M.moved),ut(V),M.event(V).end()}}function P(m,...k){if(e.apply(this,arguments)){var _=this.__zoom,M=de(m.changedTouches?m.changedTouches[0]:m,this),S=_.invert(M),j=_.k*(m.shiftKey?.5:2),z=n(b(N(_,j),M,S),t.apply(this,k),o);ut(m),a>0?le(this).transition().duration(a).call(C,z,M,m):le(this).call(y.transform,z,M,m)}}function T(m,...k){if(e.apply(this,arguments)){var _=m.touches,M=_.length,S=L(this,k,m.changedTouches.length===M).event(m),j,z,H,O;for(Pn(m),z=0;z<M;++z)H=_[z],O=de(H,this),O=[O,this.__zoom.invert(O),H.identifier],S.touch0?!S.touch1&&S.touch0[2]!==O[2]&&(S.touch1=O,S.taps=0):(S.touch0=O,j=!0,S.taps=1+!!d);d&&(d=clearTimeout(d)),j&&(S.taps<2&&(f=O[0],d=setTimeout(function(){d=null},p)),qt(this),S.start())}}function F(m,...k){if(this.__zooming){var _=L(this,k).event(m),M=m.changedTouches,S=M.length,j,z,H,O;for(ut(m),j=0;j<S;++j)z=M[j],H=de(z,this),_.touch0&&_.touch0[2]===z.identifier?_.touch0[0]=H:_.touch1&&_.touch1[2]===z.identifier&&(_.touch1[0]=H);if(z=_.that.__zoom,_.touch1){var X=_.touch0[0],V=_.touch0[1],B=_.touch1[0],Y=_.touch1[1],U=(U=B[0]-X[0])*U+(U=B[1]-X[1])*U,I=(I=Y[0]-V[0])*I+(I=Y[1]-V[1])*I;z=N(z,Math.sqrt(U/I)),H=[(X[0]+B[0])/2,(X[1]+B[1])/2],O=[(V[0]+Y[0])/2,(V[1]+Y[1])/2]}else if(_.touch0)H=_.touch0[0],O=_.touch0[1];else return;_.zoom("touch",n(b(z,H,O),_.extent,o))}}function A(m,...k){if(this.__zooming){var _=L(this,k).event(m),M=m.changedTouches,S=M.length,j,z;for(Pn(m),h&&clearTimeout(h),h=setTimeout(function(){h=null},p),j=0;j<S;++j)z=M[j],_.touch0&&_.touch0[2]===z.identifier?delete _.touch0:_.touch1&&_.touch1[2]===z.identifier&&delete _.touch1;if(_.touch1&&!_.touch0&&(_.touch0=_.touch1,delete _.touch1),_.touch0)_.touch0[1]=this.__zoom.invert(_.touch0[0]);else if(_.end(),_.taps===2&&(z=de(z,this),Math.hypot(f[0]-z[0],f[1]-z[1])<v)){var H=le(this).on("dblclick.zoom");H&&H.apply(this,arguments)}}}return y.wheelDelta=function(m){return arguments.length?(r=typeof m=="function"?m:Tt(+m),y):r},y.filter=function(m){return arguments.length?(e=typeof m=="function"?m:Tt(!!m),y):e},y.touchable=function(m){return arguments.length?(s=typeof m=="function"?m:Tt(!!m),y):s},y.extent=function(m){return arguments.length?(t=typeof m=="function"?m:Tt([[+m[0][0],+m[0][1]],[+m[1][0],+m[1][1]]]),y):t},y.scaleExtent=function(m){return arguments.length?(i[0]=+m[0],i[1]=+m[1],y):[i[0],i[1]]},y.translateExtent=function(m){return arguments.length?(o[0][0]=+m[0][0],o[1][0]=+m[1][0],o[0][1]=+m[0][1],o[1][1]=+m[1][1],y):[[o[0][0],o[0][1]],[o[1][0],o[1][1]]]},y.constrain=function(m){return arguments.length?(n=m,y):n},y.duration=function(m){return arguments.length?(a=+m,y):a},y.interpolate=function(m){return arguments.length?(l=m,y):l},y.on=function(){var m=u.on.apply(u,arguments);return m===u?y:m},y.clickDistance=function(m){return arguments.length?(x=(m=+m)*m,y):Math.sqrt(x)},y.tapDistance=function(m){return arguments.length?(v=+m,y):v},y}const Se={error001:()=>"[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,{id:t,sourceHandle:n,targetHandle:r})=>`Couldn't create edge for ${e} handle id: "${e==="source"?n:r}", edge id: ${t}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,error013:(e="react")=>`It seems that you haven't loaded the styles. Please import '@xyflow/${e}/dist/style.css' or base.css to make sure everything is working properly.`},bt=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],_i=["Enter"," ","Escape"];var Je;(function(e){e.Strict="strict",e.Loose="loose"})(Je||(Je={}));var He;(function(e){e.Free="free",e.Vertical="vertical",e.Horizontal="horizontal"})(He||(He={}));var vt;(function(e){e.Partial="partial",e.Full="full"})(vt||(vt={}));const ki={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null};var Ie;(function(e){e.Bezier="default",e.Straight="straight",e.Step="step",e.SmoothStep="smoothstep",e.SimpleBezier="simplebezier"})(Ie||(Ie={}));var tn;(function(e){e.Arrow="arrow",e.ArrowClosed="arrowclosed"})(tn||(tn={}));var G;(function(e){e.Left="left",e.Top="top",e.Right="right",e.Bottom="bottom"})(G||(G={}));const ts={[G.Left]:G.Right,[G.Right]:G.Left,[G.Top]:G.Bottom,[G.Bottom]:G.Top};function Si(e){return e===null?null:e?"valid":"invalid"}const ji=e=>"id"in e&&"source"in e&&"target"in e,Kd=e=>"id"in e&&"position"in e&&!("source"in e)&&!("target"in e),mr=e=>"id"in e&&"internals"in e&&!("source"in e)&&!("target"in e),Et=(e,t=[0,0])=>{const{width:n,height:r}=je(e),s=e.origin??t,i=n*s[0],o=r*s[1];return{x:e.position.x-i,y:e.position.y-o}},Gd=(e,t={nodeOrigin:[0,0],nodeLookup:void 0})=>{if(e.length===0)return{x:0,y:0,width:0,height:0};const n=e.reduce((r,s)=>{const i=typeof s=="string";let o=!t.nodeLookup&&!i?s:void 0;t.nodeLookup&&(o=i?t.nodeLookup.get(s):mr(s)?s:t.nodeLookup.get(s.id));const a=o?nn(o,t.nodeOrigin):{x:0,y:0,x2:0,y2:0};return hn(r,a)},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return pn(n)},Ct=(e,t={})=>{if(e.size===0)return{x:0,y:0,width:0,height:0};let n={x:1/0,y:1/0,x2:-1/0,y2:-1/0};return e.forEach(r=>{if(t.filter===void 0||t.filter(r)){const s=nn(r);n=hn(n,s)}}),pn(n)},Ei=(e,t,[n,r,s]=[0,0,1],i=!1,o=!1)=>{const a={...$t(t,[n,r,s]),width:t.width/s,height:t.height/s},l=[];for(const u of e.values()){const{measured:d,selectable:f=!0,hidden:h=!1}=u;if(o&&!f||h)continue;const p=d.width??u.width??u.initialWidth??null,g=d.height??u.height??u.initialHeight??null,x=Nt(a,tt(u)),v=(p??0)*(g??0),y=i&&x>0;(!u.internals.handleBounds||y||x>=v||u.dragging)&&l.push(u)}return l},Ud=(e,t)=>{const n=new Set;return e.forEach(r=>{n.add(r.id)}),t.filter(r=>n.has(r.source)||n.has(r.target))};function Qn(e,t){const n=new Map,r=t!=null&&t.nodes?new Set(t.nodes.map(s=>s.id)):null;return e.forEach(s=>{s.measured.width&&s.measured.height&&((t==null?void 0:t.includeHiddenNodes)||!s.hidden)&&(!r||r.has(s.id))&&n.set(s.id,s)}),n}async function Jn({nodes:e,width:t,height:n,panZoom:r,minZoom:s,maxZoom:i},o){if(e.size===0)return Promise.resolve(!1);const a=Ct(e),l=xr(a,t,n,(o==null?void 0:o.minZoom)??s,(o==null?void 0:o.maxZoom)??i,(o==null?void 0:o.padding)??.1);return await r.setViewport(l,{duration:o==null?void 0:o.duration}),Promise.resolve(!0)}function Ci({nodeId:e,nextPosition:t,nodeLookup:n,nodeOrigin:r=[0,0],nodeExtent:s,onError:i}){const o=n.get(e),a=o.parentId?n.get(o.parentId):void 0,{x:l,y:u}=a?a.internals.positionAbsolute:{x:0,y:0},d=o.origin??r;let f=s;if(o.extent==="parent"&&!o.expandParent)if(!a)i==null||i("005",Se.error005());else{const p=a.measured.width,g=a.measured.height;p&&g&&(f=[[l,u],[l+p,u+g]])}else a&&nt(o.extent)&&(f=[[o.extent[0][0]+l,o.extent[0][1]+u],[o.extent[1][0]+l,o.extent[1][1]+u]]);const h=nt(f)?Oe(t,f,o.measured):t;return{position:{x:h.x-l+o.measured.width*d[0],y:h.y-u+o.measured.height*d[1]},positionAbsolute:h}}async function Zd({nodesToRemove:e=[],edgesToRemove:t=[],nodes:n,edges:r,onBeforeDelete:s}){const i=new Set(e.map(h=>h.id)),o=[];for(const h of n){if(h.deletable===!1)continue;const p=i.has(h.id),g=!p&&h.parentId&&o.find(x=>x.id===h.parentId);(p||g)&&o.push(h)}const a=new Set(t.map(h=>h.id)),l=r.filter(h=>h.deletable!==!1),d=Ud(o,l);for(const h of l)a.has(h.id)&&!d.find(g=>g.id===h.id)&&d.push(h);if(!s)return{edges:d,nodes:o};const f=await s({nodes:o,edges:d});return typeof f=="boolean"?f?{edges:d,nodes:o}:{edges:[],nodes:[]}:f}const et=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),Oe=(e={x:0,y:0},t,n)=>({x:et(e.x,t[0][0],t[1][0]-((n==null?void 0:n.width)??0)),y:et(e.y,t[0][1],t[1][1]-((n==null?void 0:n.height)??0))});function $i(e,t,n){const{width:r,height:s}=je(n),{x:i,y:o}=n.internals.positionAbsolute;return Oe(e,[[i,o],[i+r,o+s]],t)}const ns=(e,t,n)=>e<t?et(Math.abs(e-t),1,t)/t:e>n?-et(Math.abs(e-n),1,t)/t:0,Mi=(e,t,n=15,r=40)=>{const s=ns(e.x,r,t.width-r)*n,i=ns(e.y,r,t.height-r)*n;return[s,i]},hn=(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)}),er=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),pn=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),tt=(e,t=[0,0])=>{var s,i;const{x:n,y:r}=mr(e)?e.internals.positionAbsolute:Et(e,t);return{x:n,y:r,width:((s=e.measured)==null?void 0:s.width)??e.width??e.initialWidth??0,height:((i=e.measured)==null?void 0:i.height)??e.height??e.initialHeight??0}},nn=(e,t=[0,0])=>{var s,i;const{x:n,y:r}=mr(e)?e.internals.positionAbsolute:Et(e,t);return{x:n,y:r,x2:n+(((s=e.measured)==null?void 0:s.width)??e.width??e.initialWidth??0),y2:r+(((i=e.measured)==null?void 0:i.height)??e.height??e.initialHeight??0)}},zi=(e,t)=>pn(hn(er(e),er(t))),Nt=(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)},rs=e=>he(e.width)&&he(e.height)&&he(e.x)&&he(e.y),he=e=>!isNaN(e)&&isFinite(e),Qd=(e,t)=>{},gn=(e,t=[1,1])=>({x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}),$t=({x:e,y:t},[n,r,s],i=!1,o=[1,1])=>{const a={x:(e-n)/s,y:(t-r)/s};return i?gn(a,o):a},Ii=({x:e,y:t},[n,r,s])=>({x:e*s+n,y:t*s+r}),xr=(e,t,n,r,s,i)=>{const o=t/(e.width*(1+i)),a=n/(e.height*(1+i)),l=Math.min(o,a),u=et(l,r,s),d=e.x+e.width/2,f=e.y+e.height/2,h=t/2-d*u,p=n/2-f*u;return{x:h,y:p,zoom:u}},rn=()=>{var e;return typeof navigator<"u"&&((e=navigator==null?void 0:navigator.userAgent)==null?void 0:e.indexOf("Mac"))>=0};function nt(e){return e!==void 0&&e!=="parent"}function je(e){var t,n;return{width:((t=e.measured)==null?void 0:t.width)??e.width??e.initialWidth??0,height:((n=e.measured)==null?void 0:n.height)??e.height??e.initialHeight??0}}function Ai(e){var t,n;return(((t=e.measured)==null?void 0:t.width)??e.width??e.initialWidth)!==void 0&&(((n=e.measured)==null?void 0:n.height)??e.height??e.initialHeight)!==void 0}function Pi(e,t={width:0,height:0},n,r,s){const i={...e},o=r.get(n);if(o){const a=o.origin||s;i.x+=o.internals.positionAbsolute.x-(t.width??0)*a[0],i.y+=o.internals.positionAbsolute.y-(t.height??0)*a[1]}return i}function ht(e,{snapGrid:t=[0,0],snapToGrid:n=!1,transform:r,containerBounds:s}){const{x:i,y:o}=ve(e),a=$t({x:i-((s==null?void 0:s.left)??0),y:o-((s==null?void 0:s.top)??0)},r),{x:l,y:u}=n?gn(a,t):a;return{xSnapped:l,ySnapped:u,...a}}const mn=e=>({width:e.offsetWidth,height:e.offsetHeight}),Ti=e=>{var t;return((t=e.getRootNode)==null?void 0:t.call(e))||(window==null?void 0:window.document)},Jd=["INPUT","SELECT","TEXTAREA"];function tr(e){var r,s,i;const t=((s=(r=e.composedPath)==null?void 0:r.call(e))==null?void 0:s[0])||e.target;return Jd.includes(t==null?void 0:t.nodeName)||((i=t==null?void 0:t.hasAttribute)==null?void 0:i.call(t,"contenteditable"))||!!(t!=null&&t.closest(".nokey"))}const Di=e=>"clientX"in e,ve=(e,t)=>{var i,o;const n=Di(e),r=n?e.clientX:(i=e.touches)==null?void 0:i[0].clientX,s=n?e.clientY:(o=e.touches)==null?void 0:o[0].clientY;return{x:r-((t==null?void 0:t.left)??0),y:s-((t==null?void 0:t.top)??0)}},ss=(e,t,n,r,s)=>{const i=t.querySelectorAll(`.${e}`);return!i||!i.length?null:Array.from(i).map(o=>{const a=o.getBoundingClientRect();return{id:o.getAttribute("data-handleid"),type:e,nodeId:s,position:o.getAttribute("data-handlepos"),x:(a.left-n.left)/r,y:(a.top-n.top)/r,...mn(o)}})};function Ri({sourceX:e,sourceY:t,targetX:n,targetY:r,sourceControlX:s,sourceControlY:i,targetControlX:o,targetControlY:a}){const l=e*.125+s*.375+o*.375+n*.125,u=t*.125+i*.375+a*.375+r*.125,d=Math.abs(l-e),f=Math.abs(u-t);return[l,u,d,f]}function Dt(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function is({pos:e,x1:t,y1:n,x2:r,y2:s,c:i}){switch(e){case G.Left:return[t-Dt(t-r,i),n];case G.Right:return[t+Dt(r-t,i),n];case G.Top:return[t,n-Dt(n-s,i)];case G.Bottom:return[t,n+Dt(s-n,i)]}}function Li({sourceX:e,sourceY:t,sourcePosition:n=G.Bottom,targetX:r,targetY:s,targetPosition:i=G.Top,curvature:o=.25}){const[a,l]=is({pos:n,x1:e,y1:t,x2:r,y2:s,c:o}),[u,d]=is({pos:i,x1:r,y1:s,x2:e,y2:t,c:o}),[f,h,p,g]=Ri({sourceX:e,sourceY:t,targetX:r,targetY:s,sourceControlX:a,sourceControlY:l,targetControlX:u,targetControlY:d});return[`M${e},${t} C${a},${l} ${u},${d} ${r},${s}`,f,h,p,g]}function Hi({sourceX:e,sourceY:t,targetX:n,targetY:r}){const s=Math.abs(n-e)/2,i=n<e?n+s:n-s,o=Math.abs(r-t)/2,a=r<t?r+o:r-o;return[i,a,s,o]}function ef({sourceNode:e,targetNode:t,selected:n=!1,zIndex:r=0,elevateOnSelect:s=!1}){if(!s)return r;const i=n||t.selected||e.selected,o=Math.max(e.internals.z||0,t.internals.z||0,1e3);return r+(i?o:0)}function tf({sourceNode:e,targetNode:t,width:n,height:r,transform:s}){const i=hn(nn(e),nn(t));i.x===i.x2&&(i.x2+=1),i.y===i.y2&&(i.y2+=1);const o={x:-s[0]/s[2],y:-s[1]/s[2],width:n/s[2],height:r/s[2]};return Nt(o,pn(i))>0}const nf=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`xy-edge__${e}${t||""}-${n}${r||""}`,rf=(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)),sf=(e,t)=>{if(!e.source||!e.target)return t;let n;return ji(e)?n={...e}:n={...e,id:nf(e)},rf(n,t)?t:(n.sourceHandle===null&&delete n.sourceHandle,n.targetHandle===null&&delete n.targetHandle,t.concat(n))};function Fi({sourceX:e,sourceY:t,targetX:n,targetY:r}){const[s,i,o,a]=Hi({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,s,i,o,a]}const os={[G.Left]:{x:-1,y:0},[G.Right]:{x:1,y:0},[G.Top]:{x:0,y:-1},[G.Bottom]:{x:0,y:1}},of=({source:e,sourcePosition:t=G.Bottom,target:n})=>t===G.Left||t===G.Right?e.x<n.x?{x:1,y:0}:{x:-1,y:0}:e.y<n.y?{x:0,y:1}:{x:0,y:-1},as=(e,t)=>Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2));function af({source:e,sourcePosition:t=G.Bottom,target:n,targetPosition:r=G.Top,center:s,offset:i}){const o=os[t],a=os[r],l={x:e.x+o.x*i,y:e.y+o.y*i},u={x:n.x+a.x*i,y:n.y+a.y*i},d=of({source:l,sourcePosition:t,target:u}),f=d.x!==0?"x":"y",h=d[f];let p=[],g,x;const v={x:0,y:0},y={x:0,y:0},[N,b,w,C]=Hi({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(o[f]*a[f]===-1){g=s.x??N,x=s.y??b;const E=[{x:g,y:l.y},{x:g,y:u.y}],R=[{x:l.x,y:x},{x:u.x,y:x}];o[f]===h?p=f==="x"?E:R:p=f==="x"?R:E}else{const E=[{x:l.x,y:u.y}],R=[{x:u.x,y:l.y}];if(f==="x"?p=o.x===h?R:E:p=o.y===h?E:R,t===r){const A=Math.abs(e[f]-n[f]);if(A<=i){const m=Math.min(i-1,i-A);o[f]===h?v[f]=(l[f]>e[f]?-1:1)*m:y[f]=(u[f]>n[f]?-1:1)*m}}if(t!==r){const A=f==="x"?"y":"x",m=o[f]===a[A],k=l[A]>u[A],_=l[A]<u[A];(o[f]===1&&(!m&&k||m&&_)||o[f]!==1&&(!m&&_||m&&k))&&(p=f==="x"?E:R)}const D={x:l.x+v.x,y:l.y+v.y},P={x:u.x+y.x,y:u.y+y.y},T=Math.max(Math.abs(D.x-p[0].x),Math.abs(P.x-p[0].x)),F=Math.max(Math.abs(D.y-p[0].y),Math.abs(P.y-p[0].y));T>=F?(g=(D.x+P.x)/2,x=p[0].y):(g=p[0].x,x=(D.y+P.y)/2)}return[[e,{x:l.x+v.x,y:l.y+v.y},...p,{x:u.x+y.x,y:u.y+y.y},n],g,x,w,C]}function cf(e,t,n,r){const s=Math.min(as(e,t)/2,as(t,n)/2,r),{x:i,y:o}=t;if(e.x===i&&i===n.x||e.y===o&&o===n.y)return`L${i} ${o}`;if(e.y===o){const u=e.x<n.x?-1:1,d=e.y<n.y?1:-1;return`L ${i+s*u},${o}Q ${i},${o} ${i},${o+s*d}`}const a=e.x<n.x?1:-1,l=e.y<n.y?-1:1;return`L ${i},${o+s*l}Q ${i},${o} ${i+s*a},${o}`}function nr({sourceX:e,sourceY:t,sourcePosition:n=G.Bottom,targetX:r,targetY:s,targetPosition:i=G.Top,borderRadius:o=5,centerX:a,centerY:l,offset:u=20}){const[d,f,h,p,g]=af({source:{x:e,y:t},sourcePosition:n,target:{x:r,y:s},targetPosition:i,center:{x:a,y:l},offset:u});return[d.reduce((v,y,N)=>{let b="";return N>0&&N<d.length-1?b=cf(d[N-1],y,d[N+1],o):b=`${N===0?"M":"L"}${y.x} ${y.y}`,v+=b,v},""),f,h,p,g]}function cs(e){var t;return e&&!!(e.internals.handleBounds||(t=e.handles)!=null&&t.length)&&!!(e.measured.width||e.width||e.initialWidth)}function lf(e){var f;const{sourceNode:t,targetNode:n}=e;if(!cs(t)||!cs(n))return null;const r=t.internals.handleBounds||ls(t.handles),s=n.internals.handleBounds||ls(n.handles),i=us((r==null?void 0:r.source)??[],e.sourceHandle),o=us(e.connectionMode===Je.Strict?(s==null?void 0:s.target)??[]:((s==null?void 0:s.target)??[]).concat((s==null?void 0:s.source)??[]),e.targetHandle);if(!i||!o)return(f=e.onError)==null||f.call(e,"008",Se.error008(i?"target":"source",{id:e.id,sourceHandle:e.sourceHandle,targetHandle:e.targetHandle})),null;const a=(i==null?void 0:i.position)||G.Bottom,l=(o==null?void 0:o.position)||G.Top,u=_t(t,i,a),d=_t(n,o,l);return{sourceX:u.x,sourceY:u.y,targetX:d.x,targetY:d.y,sourcePosition:a,targetPosition:l}}function ls(e){if(!e)return null;const t=[],n=[];for(const r of e)r.width=r.width??1,r.height=r.height??1,r.type==="source"?t.push(r):r.type==="target"&&n.push(r);return{source:t,target:n}}function _t(e,t,n=G.Left,r=!1){const s=((t==null?void 0:t.x)??0)+e.internals.positionAbsolute.x,i=((t==null?void 0:t.y)??0)+e.internals.positionAbsolute.y,{width:o,height:a}=t??je(e);if(r)return{x:s+o/2,y:i+a/2};switch((t==null?void 0:t.position)??n){case G.Top:return{x:s+o/2,y:i};case G.Right:return{x:s+o,y:i+a/2};case G.Bottom:return{x:s+o/2,y:i+a};case G.Left:return{x:s,y:i+a/2}}}function us(e,t){return e&&(t?e.find(n=>n.id===t):e[0])||null}function rr(e,t){return e?typeof e=="string"?e:`${t?`${t}__`:""}${Object.keys(e).sort().map(r=>`${r}=${e[r]}`).join("&")}`:""}function uf(e,{id:t,defaultColor:n,defaultMarkerStart:r,defaultMarkerEnd:s}){const i=new Set;return e.reduce((o,a)=>([a.markerStart||r,a.markerEnd||s].forEach(l=>{if(l&&typeof l=="object"){const u=rr(l,t);i.has(u)||(o.push({id:u,color:l.color||n,...l}),i.add(u))}}),o),[]).sort((o,a)=>o.id.localeCompare(a.id))}const yr={nodeOrigin:[0,0],nodeExtent:bt,elevateNodesOnSelect:!0,defaults:{}},df={...yr,checkEquality:!0};function wr(e,t){const n={...e};for(const r in t)t[r]!==void 0&&(n[r]=t[r]);return n}function ff(e,t,n){const r=wr(yr,n);for(const s of e.values())if(s.parentId)br(s,e,t,r);else{const i=Et(s,r.nodeOrigin),o=nt(s.extent)?s.extent:r.nodeExtent,a=Oe(i,o,je(s));s.internals.positionAbsolute=a}}function sr(e,t,n,r){var a,l;const s=wr(df,r),i=new Map(t),o=s!=null&&s.elevateNodesOnSelect?1e3:0;t.clear(),n.clear();for(const u of e){let d=i.get(u.id);if(s.checkEquality&&u===(d==null?void 0:d.internals.userNode))t.set(u.id,d);else{const f=Et(u,s.nodeOrigin),h=nt(u.extent)?u.extent:s.nodeExtent,p=Oe(f,h,je(u));d={...s.defaults,...u,measured:{width:(a=u.measured)==null?void 0:a.width,height:(l=u.measured)==null?void 0:l.height},internals:{positionAbsolute:p,handleBounds:u.measured?d==null?void 0:d.internals.handleBounds:void 0,z:Oi(u,o),userNode:u}},t.set(u.id,d)}u.parentId&&br(d,t,n,r)}}function hf(e,t){if(!e.parentId)return;const n=t.get(e.parentId);n?n.set(e.id,e):t.set(e.parentId,new Map([[e.id,e]]))}function br(e,t,n,r){const{elevateNodesOnSelect:s,nodeOrigin:i,nodeExtent:o}=wr(yr,r),a=e.parentId,l=t.get(a);if(!l){console.warn(`Parent node ${a} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}hf(e,n);const u=s?1e3:0,{x:d,y:f,z:h}=pf(e,l,i,o,u),{positionAbsolute:p}=e.internals,g=d!==p.x||f!==p.y;(g||h!==e.internals.z)&&(e.internals={...e.internals,positionAbsolute:g?{x:d,y:f}:p,z:h})}function Oi(e,t){return(he(e.zIndex)?e.zIndex:0)+(e.selected?t:0)}function pf(e,t,n,r,s){const{x:i,y:o}=t.internals.positionAbsolute,a=je(e),l=Et(e,n),u=nt(e.extent)?Oe(l,e.extent,a):l;let d=Oe({x:i+u.x,y:o+u.y},r,a);e.extent==="parent"&&(d=$i(d,a,t));const f=Oi(e,s),h=t.internals.z??0;return{x:d.x,y:d.y,z:h>f?h:f}}function vr(e,t,n,r=[0,0]){var o;const s=[],i=new Map;for(const a of e){const l=t.get(a.parentId);if(!l)continue;const u=((o=i.get(a.parentId))==null?void 0:o.expandedRect)??tt(l),d=zi(u,a.rect);i.set(a.parentId,{expandedRect:d,parent:l})}return i.size>0&&i.forEach(({expandedRect:a,parent:l},u)=>{var b;const d=l.internals.positionAbsolute,f=je(l),h=l.origin??r,p=a.x<d.x?Math.round(Math.abs(d.x-a.x)):0,g=a.y<d.y?Math.round(Math.abs(d.y-a.y)):0,x=Math.max(f.width,Math.round(a.width)),v=Math.max(f.height,Math.round(a.height)),y=(x-f.width)*h[0],N=(v-f.height)*h[1];(p>0||g>0||y||N)&&(s.push({id:u,type:"position",position:{x:l.position.x-p+y,y:l.position.y-g+N}}),(b=n.get(u))==null||b.forEach(w=>{e.some(C=>C.id===w.id)||s.push({id:w.id,type:"position",position:{x:w.position.x+p,y:w.position.y+g}})})),(f.width<a.width||f.height<a.height||p||g)&&s.push({id:u,type:"dimensions",setAttributes:!0,dimensions:{width:x+(p?h[0]*p-y:0),height:v+(g?h[1]*g-N:0)}})}),s}function gf(e,t,n,r,s,i){const o=r==null?void 0:r.querySelector(".xyflow__viewport");let a=!1;if(!o)return{changes:[],updatedInternals:a};const l=[],u=window.getComputedStyle(o),{m22:d}=new window.DOMMatrixReadOnly(u.transform),f=[];for(const h of e.values()){const p=t.get(h.id);if(p)if(p.hidden)p.internals={...p.internals,handleBounds:void 0},a=!0;else{const g=mn(h.nodeElement),x=p.measured.width!==g.width||p.measured.height!==g.height;if(!!(g.width&&g.height&&(x||!p.internals.handleBounds||h.force))){const y=h.nodeElement.getBoundingClientRect(),N=nt(p.extent)?p.extent:i;let{positionAbsolute:b}=p.internals;p.parentId&&p.extent==="parent"?b=$i(b,g,t.get(p.parentId)):N&&(b=Oe(b,N,g)),p.measured=g,p.internals={...p.internals,positionAbsolute:b,handleBounds:{source:ss("source",h.nodeElement,y,d,p.id),target:ss("target",h.nodeElement,y,d,p.id)}},p.parentId&&br(p,t,n,{nodeOrigin:s}),a=!0,x&&(l.push({id:p.id,type:"dimensions",dimensions:g}),p.expandParent&&p.parentId&&f.push({id:p.id,parentId:p.parentId,rect:tt(p,s)}))}}}if(f.length>0){const h=vr(f,t,n,s);l.push(...h)}return{changes:l,updatedInternals:a}}async function mf({delta:e,panZoom:t,transform:n,translateExtent:r,width:s,height:i}){if(!t||!e.x&&!e.y)return Promise.resolve(!1);const o=await t.setViewportConstrained({x:n[0]+e.x,y:n[1]+e.y,zoom:n[2]},[[0,0],[s,i]],r),a=!!o&&(o.x!==n[0]||o.y!==n[1]||o.k!==n[2]);return Promise.resolve(a)}function Bi(e,t,n){e.clear(),t.clear();for(const r of n){const{source:s,target:i,sourceHandle:o=null,targetHandle:a=null}=r,l=`${s}-source-${o}`,u=`${i}-target-${a}`,d=e.get(l)||new Map,f=e.get(u)||new Map,h={edgeId:r.id,source:s,target:i,sourceHandle:o,targetHandle:a};t.set(r.id,r),e.set(l,d.set(`${i}-${a}`,h)),e.set(u,f.set(`${s}-${o}`,h))}}function Vi(e,t){if(!e.parentId)return!1;const n=t.get(e.parentId);return n?n.selected?!0:Vi(n,t):!1}function ds(e,t,n){let r=e;do{if(r!=null&&r.matches(t))return!0;if(r===n)return!1;r=r.parentElement}while(r);return!1}function xf(e,t,n,r){const s=new Map;for(const[i,o]of e)if((o.selected||o.id===r)&&(!o.parentId||!Vi(o,e))&&(o.draggable||t&&typeof o.draggable>"u")){const a=e.get(i);a&&s.set(i,{id:i,position:a.position||{x:0,y:0},distance:{x:n.x-a.internals.positionAbsolute.x,y:n.y-a.internals.positionAbsolute.y},extent:a.extent,parentId:a.parentId,origin:a.origin,expandParent:a.expandParent,internals:{positionAbsolute:a.internals.positionAbsolute||{x:0,y:0}},measured:{width:a.measured.width??0,height:a.measured.height??0}})}return s}function Tn({nodeId:e,dragItems:t,nodeLookup:n,dragging:r=!0}){var o,a,l;const s=[];for(const[u,d]of t){const f=(o=n.get(u))==null?void 0:o.internals.userNode;f&&s.push({...f,position:d.position,dragging:r})}if(!e)return[s[0],s];const i=(a=n.get(e))==null?void 0:a.internals.userNode;return[i?{...i,position:((l=t.get(e))==null?void 0:l.position)||i.position,dragging:r}:s[0],s]}function yf({onNodeMouseDown:e,getStoreItems:t,onDragStart:n,onDrag:r,onDragStop:s}){let i={x:null,y:null},o=0,a=new Map,l=!1,u={x:0,y:0},d=null,f=!1,h=null,p=!1;function g({noDragClassName:v,handleSelector:y,domNode:N,isSelectable:b,nodeId:w,nodeClickDistance:C=0}){h=le(N);function L({x:P,y:T},F){const{nodeLookup:A,nodeExtent:m,snapGrid:k,snapToGrid:_,nodeOrigin:M,onNodeDrag:S,onSelectionDrag:j,onError:z,updateNodePositions:H}=t();i={x:P,y:T};let O=!1,X={x:0,y:0,x2:0,y2:0};if(a.size>1&&m){const V=Ct(a);X=er(V)}for(const[V,B]of a){if(!A.has(V))continue;let Y={x:P-B.distance.x,y:T-B.distance.y};_&&(Y=gn(Y,k));let U=[[m[0][0],m[0][1]],[m[1][0],m[1][1]]];if(a.size>1&&m&&!B.extent){const{positionAbsolute:K}=B.internals,Z=K.x-X.x+m[0][0],W=K.x+B.measured.width-X.x2+m[1][0],J=K.y-X.y+m[0][1],ee=K.y+B.measured.height-X.y2+m[1][1];U=[[Z,J],[W,ee]]}const{position:I,positionAbsolute:q}=Ci({nodeId:V,nextPosition:Y,nodeLookup:A,nodeExtent:U,nodeOrigin:M,onError:z});O=O||B.position.x!==I.x||B.position.y!==I.y,B.position=I,B.internals.positionAbsolute=q}if(O&&(H(a,!0),F&&(r||S||!w&&j))){const[V,B]=Tn({nodeId:w,dragItems:a,nodeLookup:A});r==null||r(F,a,V,B),S==null||S(F,V,B),w||j==null||j(F,B)}}async function E(){if(!d)return;const{transform:P,panBy:T,autoPanSpeed:F}=t(),[A,m]=Mi(u,d,F);(A!==0||m!==0)&&(i.x=(i.x??0)-A/P[2],i.y=(i.y??0)-m/P[2],await T({x:A,y:m})&&L(i,null)),o=requestAnimationFrame(E)}function R(P){var O;const{nodeLookup:T,multiSelectionActive:F,nodesDraggable:A,transform:m,snapGrid:k,snapToGrid:_,selectNodesOnDrag:M,onNodeDragStart:S,onSelectionDragStart:j,unselectNodesAndEdges:z}=t();f=!0,(!M||!b)&&!F&&w&&((O=T.get(w))!=null&&O.selected||z()),b&&M&&w&&(e==null||e(w));const H=ht(P.sourceEvent,{transform:m,snapGrid:k,snapToGrid:_,containerBounds:d});if(i=H,a=xf(T,A,H,w),a.size>0&&(n||S||!w&&j)){const[X,V]=Tn({nodeId:w,dragItems:a,nodeLookup:T});n==null||n(P.sourceEvent,a,X,V),S==null||S(P.sourceEvent,X,V),w||j==null||j(P.sourceEvent,V)}}const D=ai().clickDistance(C).on("start",P=>{const{domNode:T,nodeDragThreshold:F,transform:A,snapGrid:m,snapToGrid:k}=t();d=(T==null?void 0:T.getBoundingClientRect())||null,p=!1,F===0&&R(P),i=ht(P.sourceEvent,{transform:A,snapGrid:m,snapToGrid:k,containerBounds:d}),u=ve(P.sourceEvent,d)}).on("drag",P=>{const{autoPanOnNodeDrag:T,transform:F,snapGrid:A,snapToGrid:m,nodeDragThreshold:k,nodeLookup:_}=t(),M=ht(P.sourceEvent,{transform:F,snapGrid:A,snapToGrid:m,containerBounds:d});if((P.sourceEvent.type==="touchmove"&&P.sourceEvent.touches.length>1||w&&!_.has(w))&&(p=!0),!p){if(!l&&T&&f&&(l=!0,E()),!f){const S=M.xSnapped-(i.x??0),j=M.ySnapped-(i.y??0);Math.sqrt(S*S+j*j)>k&&R(P)}(i.x!==M.xSnapped||i.y!==M.ySnapped)&&a&&f&&(u=ve(P.sourceEvent,d),L(M,P.sourceEvent))}}).on("end",P=>{if(!(!f||p)&&(l=!1,f=!1,cancelAnimationFrame(o),a.size>0)){const{nodeLookup:T,updateNodePositions:F,onNodeDragStop:A,onSelectionDragStop:m}=t();if(F(a,!1),s||A||!w&&m){const[k,_]=Tn({nodeId:w,dragItems:a,nodeLookup:T,dragging:!1});s==null||s(P.sourceEvent,a,k,_),A==null||A(P.sourceEvent,k,_),w||m==null||m(P.sourceEvent,_)}}}).filter(P=>{const T=P.target;return!P.button&&(!v||!ds(T,`.${v}`,N))&&(!y||ds(T,y,N))});h.call(D)}function x(){h==null||h.on(".drag",null)}return{update:g,destroy:x}}function wf(e,t,n){const r=[],s={x:e.x-n,y:e.y-n,width:n*2,height:n*2};for(const i of t.values())Nt(s,tt(i))>0&&r.push(i);return r}const bf=250;function vf(e,t,n,r){var a,l;let s=[],i=1/0;const o=wf(e,n,t+bf);for(const u of o){const d=[...((a=u.internals.handleBounds)==null?void 0:a.source)??[],...((l=u.internals.handleBounds)==null?void 0:l.target)??[]];for(const f of d){if(r.nodeId===f.nodeId&&r.type===f.type&&r.id===f.id)continue;const{x:h,y:p}=_t(u,f,f.position,!0),g=Math.sqrt(Math.pow(h-e.x,2)+Math.pow(p-e.y,2));g>t||(g<i?(s=[{...f,x:h,y:p}],i=g):g===i&&s.push({...f,x:h,y:p}))}}if(!s.length)return null;if(s.length>1){const u=r.type==="source"?"target":"source";return s.find(d=>d.type===u)??s[0]}return s[0]}function qi(e,t,n,r,s,i=!1){var u,d,f;const o=r.get(e);if(!o)return null;const a=s==="strict"?(u=o.internals.handleBounds)==null?void 0:u[t]:[...((d=o.internals.handleBounds)==null?void 0:d.source)??[],...((f=o.internals.handleBounds)==null?void 0:f.target)??[]],l=(n?a==null?void 0:a.find(h=>h.id===n):a==null?void 0:a[0])??null;return l&&i?{...l,..._t(o,l,l.position,!0)}:l}function Xi(e,t){return e||(t!=null&&t.classList.contains("target")?"target":t!=null&&t.classList.contains("source")?"source":null)}function Nf(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}const Yi=()=>!0;function _f(e,{connectionMode:t,connectionRadius:n,handleId:r,nodeId:s,edgeUpdaterType:i,isTarget:o,domNode:a,nodeLookup:l,lib:u,autoPanOnConnect:d,flowId:f,panBy:h,cancelConnection:p,onConnectStart:g,onConnect:x,onConnectEnd:v,isValidConnection:y=Yi,onReconnectEnd:N,updateConnection:b,getTransform:w,getFromHandle:C,autoPanSpeed:L}){const E=Ti(e.target);let R=0,D;const{x:P,y:T}=ve(e),F=E==null?void 0:E.elementFromPoint(P,T),A=Xi(i,F),m=a==null?void 0:a.getBoundingClientRect();if(!m||!A)return;const k=qi(s,A,r,l,t);if(!k)return;let _=ve(e,m),M=!1,S=null,j=!1,z=null;function H(){if(!d||!m)return;const[q,K]=Mi(_,m,L);h({x:q,y:K}),R=requestAnimationFrame(H)}const O={...k,nodeId:s,type:A,position:k.position},X=l.get(s),B={inProgress:!0,isValid:null,from:_t(X,O,G.Left,!0),fromHandle:O,fromPosition:O.position,fromNode:X,to:_,toHandle:null,toPosition:ts[O.position],toNode:null};b(B);let Y=B;g==null||g(e,{nodeId:s,handleId:r,handleType:A});function U(q){if(!C()||!O){I(q);return}const K=w();_=ve(q,m),D=vf($t(_,K,!1,[1,1]),n,l,O),M||(H(),M=!0);const Z=Wi(q,{handle:D,connectionMode:t,fromNodeId:s,fromHandleId:r,fromType:o?"target":"source",isValidConnection:y,doc:E,lib:u,flowId:f,nodeLookup:l});z=Z.handleDomNode,S=Z.connection,j=Nf(!!D,Z.isValid);const W={...Y,isValid:j,to:D&&j?Ii({x:D.x,y:D.y},K):_,toHandle:Z.toHandle,toPosition:j&&Z.toHandle?Z.toHandle.position:ts[O.position],toNode:Z.toHandle?l.get(Z.toHandle.nodeId):null};j&&D&&Y.toHandle&&W.toHandle&&Y.toHandle.type===W.toHandle.type&&Y.toHandle.nodeId===W.toHandle.nodeId&&Y.toHandle.id===W.toHandle.id&&Y.to.x===W.to.x&&Y.to.y===W.to.y||(b(W),Y=W)}function I(q){(D||z)&&S&&j&&(x==null||x(S));const{inProgress:K,...Z}=Y,W={...Z,toPosition:Y.toHandle?Y.toPosition:null};v==null||v(q,W),i&&(N==null||N(q,W)),p(),cancelAnimationFrame(R),M=!1,j=!1,S=null,z=null,E.removeEventListener("mousemove",U),E.removeEventListener("mouseup",I),E.removeEventListener("touchmove",U),E.removeEventListener("touchend",I)}E.addEventListener("mousemove",U),E.addEventListener("mouseup",I),E.addEventListener("touchmove",U),E.addEventListener("touchend",I)}function Wi(e,{handle:t,connectionMode:n,fromNodeId:r,fromHandleId:s,fromType:i,doc:o,lib:a,flowId:l,isValidConnection:u=Yi,nodeLookup:d}){const f=i==="target",h=t?o.querySelector(`.${a}-flow__handle[data-id="${l}-${t==null?void 0:t.nodeId}-${t==null?void 0:t.id}-${t==null?void 0:t.type}"]`):null,{x:p,y:g}=ve(e),x=o.elementFromPoint(p,g),v=x!=null&&x.classList.contains(`${a}-flow__handle`)?x:h,y={handleDomNode:v,isValid:!1,connection:null,toHandle:null};if(v){const N=Xi(void 0,v),b=v.getAttribute("data-nodeid"),w=v.getAttribute("data-handleid"),C=v.classList.contains("connectable"),L=v.classList.contains("connectableend");if(!b||!N)return y;const E={source:f?b:r,sourceHandle:f?w:s,target:f?r:b,targetHandle:f?s:w};y.connection=E;const D=C&&L&&(n===Je.Strict?f&&N==="source"||!f&&N==="target":b!==r||w!==s);y.isValid=D&&u(E),y.toHandle=qi(b,N,w,d,n,!1)}return y}const ir={onPointerDown:_f,isValid:Wi};function kf({domNode:e,panZoom:t,getTransform:n,getViewScale:r}){const s=le(e);function i({translateExtent:a,width:l,height:u,zoomStep:d=10,pannable:f=!0,zoomable:h=!0,inversePan:p=!1}){const g=b=>{const w=n();if(b.sourceEvent.type!=="wheel"||!t)return;const C=-b.sourceEvent.deltaY*(b.sourceEvent.deltaMode===1?.05:b.sourceEvent.deltaMode?1:.002)*d,L=w[2]*Math.pow(2,C);t.scaleTo(L)};let x=[0,0];const v=b=>{(b.sourceEvent.type==="mousedown"||b.sourceEvent.type==="touchstart")&&(x=[b.sourceEvent.clientX??b.sourceEvent.touches[0].clientX,b.sourceEvent.clientY??b.sourceEvent.touches[0].clientY])},y=b=>{const w=n();if(b.sourceEvent.type!=="mousemove"&&b.sourceEvent.type!=="touchmove"||!t)return;const C=[b.sourceEvent.clientX??b.sourceEvent.touches[0].clientX,b.sourceEvent.clientY??b.sourceEvent.touches[0].clientY],L=[C[0]-x[0],C[1]-x[1]];x=C;const E=r()*Math.max(w[2],Math.log(w[2]))*(p?-1:1),R={x:w[0]-L[0]*E,y:w[1]-L[1]*E},D=[[0,0],[l,u]];t.setViewportConstrained({x:R.x,y:R.y,zoom:w[2]},D,a)},N=Ni().on("start",v).on("zoom",f?y:null).on("zoom.wheel",h?g:null);s.call(N,{})}function o(){s.on("zoom",null)}return{update:i,destroy:o,pointer:de}}const Sf=(e,t)=>e.x!==t.x||e.y!==t.y||e.zoom!==t.k,xn=e=>({x:e.x,y:e.y,zoom:e.k}),Dn=({x:e,y:t,zoom:n})=>fn.translate(e,t).scale(n),Ye=(e,t)=>e.target.closest(`.${t}`),Ki=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),Rn=(e,t=0,n=()=>{})=>{const r=typeof t=="number"&&t>0;return r||n(),r?e.transition().duration(t).on("end",n):e},Gi=e=>{const t=e.ctrlKey&&rn()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t};function jf({zoomPanValues:e,noWheelClassName:t,d3Selection:n,d3Zoom:r,panOnScrollMode:s,panOnScrollSpeed:i,zoomOnPinch:o,onPanZoomStart:a,onPanZoom:l,onPanZoomEnd:u}){return d=>{if(Ye(d,t))return!1;d.preventDefault(),d.stopImmediatePropagation();const f=n.property("__zoom").k||1;if(d.ctrlKey&&o){const v=de(d),y=Gi(d),N=f*Math.pow(2,y);r.scaleTo(n,N,v,d);return}const h=d.deltaMode===1?20:1;let p=s===He.Vertical?0:d.deltaX*h,g=s===He.Horizontal?0:d.deltaY*h;!rn()&&d.shiftKey&&s!==He.Vertical&&(p=d.deltaY*h,g=0),r.translateBy(n,-(p/f)*i,-(g/f)*i,{internal:!0});const x=xn(n.property("__zoom"));clearTimeout(e.panScrollTimeout),e.isPanScrolling||(e.isPanScrolling=!0,a==null||a(d,x)),e.isPanScrolling&&(l==null||l(d,x),e.panScrollTimeout=setTimeout(()=>{u==null||u(d,x),e.isPanScrolling=!1},150))}}function Ef({noWheelClassName:e,preventScrolling:t,d3ZoomHandler:n}){return function(r,s){if(!t&&r.type==="wheel"&&!r.ctrlKey||Ye(r,e))return null;r.preventDefault(),n.call(this,r,s)}}function Cf({zoomPanValues:e,onDraggingChange:t,onPanZoomStart:n}){return r=>{var i,o,a;if((i=r.sourceEvent)!=null&&i.internal)return;const s=xn(r.transform);e.mouseButton=((o=r.sourceEvent)==null?void 0:o.button)||0,e.isZoomingOrPanning=!0,e.prevViewport=s,((a=r.sourceEvent)==null?void 0:a.type)==="mousedown"&&t(!0),n&&(n==null||n(r.sourceEvent,s))}}function $f({zoomPanValues:e,panOnDrag:t,onPaneContextMenu:n,onTransformChange:r,onPanZoom:s}){return i=>{var o,a;e.usedRightMouseButton=!!(n&&Ki(t,e.mouseButton??0)),(o=i.sourceEvent)!=null&&o.sync||r([i.transform.x,i.transform.y,i.transform.k]),s&&!((a=i.sourceEvent)!=null&&a.internal)&&(s==null||s(i.sourceEvent,xn(i.transform)))}}function Mf({zoomPanValues:e,panOnDrag:t,panOnScroll:n,onDraggingChange:r,onPanZoomEnd:s,onPaneContextMenu:i}){return o=>{var a;if(!((a=o.sourceEvent)!=null&&a.internal)&&(e.isZoomingOrPanning=!1,i&&Ki(t,e.mouseButton??0)&&!e.usedRightMouseButton&&o.sourceEvent&&i(o.sourceEvent),e.usedRightMouseButton=!1,r(!1),s&&Sf(e.prevViewport,o.transform))){const l=xn(o.transform);e.prevViewport=l,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{s==null||s(o.sourceEvent,l)},n?150:0)}}}function zf({zoomActivationKeyPressed:e,zoomOnScroll:t,zoomOnPinch:n,panOnDrag:r,panOnScroll:s,zoomOnDoubleClick:i,userSelectionActive:o,noWheelClassName:a,noPanClassName:l,lib:u}){return d=>{var g;const f=e||t,h=n&&d.ctrlKey;if(d.button===1&&d.type==="mousedown"&&(Ye(d,`${u}-flow__node`)||Ye(d,`${u}-flow__edge`)))return!0;if(!r&&!f&&!s&&!i&&!n||o||Ye(d,a)&&d.type==="wheel"||Ye(d,l)&&(d.type!=="wheel"||s&&d.type==="wheel"&&!e)||!n&&d.ctrlKey&&d.type==="wheel")return!1;if(!n&&d.type==="touchstart"&&((g=d.touches)==null?void 0:g.length)>1)return d.preventDefault(),!1;if(!f&&!s&&!h&&d.type==="wheel"||!r&&(d.type==="mousedown"||d.type==="touchstart")||Array.isArray(r)&&!r.includes(d.button)&&d.type==="mousedown")return!1;const p=Array.isArray(r)&&r.includes(d.button)||!d.button||d.button<=1;return(!d.ctrlKey||d.type==="wheel")&&p}}function If({domNode:e,minZoom:t,maxZoom:n,paneClickDistance:r,translateExtent:s,viewport:i,onPanZoom:o,onPanZoomStart:a,onPanZoomEnd:l,onDraggingChange:u}){const d={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{x:0,y:0,zoom:0},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},f=e.getBoundingClientRect(),h=Ni().clickDistance(!he(r)||r<0?0:r).scaleExtent([t,n]).translateExtent(s),p=le(e).call(h);b({x:i.x,y:i.y,zoom:et(i.zoom,t,n)},[[0,0],[f.width,f.height]],s);const g=p.on("wheel.zoom"),x=p.on("dblclick.zoom");h.wheelDelta(Gi);function v(F,A){return p?new Promise(m=>{h==null||h.transform(Rn(p,A==null?void 0:A.duration,()=>m(!0)),F)}):Promise.resolve(!1)}function y({noWheelClassName:F,noPanClassName:A,onPaneContextMenu:m,userSelectionActive:k,panOnScroll:_,panOnDrag:M,panOnScrollMode:S,panOnScrollSpeed:j,preventScrolling:z,zoomOnPinch:H,zoomOnScroll:O,zoomOnDoubleClick:X,zoomActivationKeyPressed:V,lib:B,onTransformChange:Y}){k&&!d.isZoomingOrPanning&&N();const I=_&&!V&&!k?jf({zoomPanValues:d,noWheelClassName:F,d3Selection:p,d3Zoom:h,panOnScrollMode:S,panOnScrollSpeed:j,zoomOnPinch:H,onPanZoomStart:a,onPanZoom:o,onPanZoomEnd:l}):Ef({noWheelClassName:F,preventScrolling:z,d3ZoomHandler:g});if(p.on("wheel.zoom",I,{passive:!1}),!k){const K=Cf({zoomPanValues:d,onDraggingChange:u,onPanZoomStart:a});h.on("start",K);const Z=$f({zoomPanValues:d,panOnDrag:M,onPaneContextMenu:!!m,onPanZoom:o,onTransformChange:Y});h.on("zoom",Z);const W=Mf({zoomPanValues:d,panOnDrag:M,panOnScroll:_,onPaneContextMenu:m,onPanZoomEnd:l,onDraggingChange:u});h.on("end",W)}const q=zf({zoomActivationKeyPressed:V,panOnDrag:M,zoomOnScroll:O,panOnScroll:_,zoomOnDoubleClick:X,zoomOnPinch:H,userSelectionActive:k,noPanClassName:A,noWheelClassName:F,lib:B});h.filter(q),X?p.on("dblclick.zoom",x):p.on("dblclick.zoom",null)}function N(){h.on("zoom",null)}async function b(F,A,m){const k=Dn(F),_=h==null?void 0:h.constrain()(k,A,m);return _&&await v(_),new Promise(M=>M(_))}async function w(F,A){const m=Dn(F);return await v(m,A),new Promise(k=>k(m))}function C(F){if(p){const A=Dn(F),m=p.property("__zoom");(m.k!==F.zoom||m.x!==F.x||m.y!==F.y)&&(h==null||h.transform(p,A,null,{sync:!0}))}}function L(){const F=p?vi(p.node()):{x:0,y:0,k:1};return{x:F.x,y:F.y,zoom:F.k}}function E(F,A){return p?new Promise(m=>{h==null||h.scaleTo(Rn(p,A==null?void 0:A.duration,()=>m(!0)),F)}):Promise.resolve(!1)}function R(F,A){return p?new Promise(m=>{h==null||h.scaleBy(Rn(p,A==null?void 0:A.duration,()=>m(!0)),F)}):Promise.resolve(!1)}function D(F){h==null||h.scaleExtent(F)}function P(F){h==null||h.translateExtent(F)}function T(F){const A=!he(F)||F<0?0:F;h==null||h.clickDistance(A)}return{update:y,destroy:N,setViewport:w,setViewportConstrained:b,getViewport:L,scaleTo:E,scaleBy:R,setScaleExtent:D,setTranslateExtent:P,syncViewport:C,setClickDistance:T}}var pt;(function(e){e.Line="line",e.Handle="handle"})(pt||(pt={}));function Af({width:e,prevWidth:t,height:n,prevHeight:r,affectsX:s,affectsY:i}){const o=e-t,a=n-r,l=[o>0?1:o<0?-1:0,a>0?1:a<0?-1:0];return o&&s&&(l[0]=l[0]*-1),a&&i&&(l[1]=l[1]*-1),l}function Pf(e){const t=e.includes("right")||e.includes("left"),n=e.includes("bottom")||e.includes("top"),r=e.includes("left"),s=e.includes("top");return{isHorizontal:t,isVertical:n,affectsX:r,affectsY:s}}function $e(e,t){return Math.max(0,t-e)}function Me(e,t){return Math.max(0,e-t)}function Rt(e,t,n){return Math.max(0,t-e,e-n)}function fs(e,t){return e?!t:t}function Tf(e,t,n,r,s,i,o,a){let{affectsX:l,affectsY:u}=t;const{isHorizontal:d,isVertical:f}=t,h=d&&f,{xSnapped:p,ySnapped:g}=n,{minWidth:x,maxWidth:v,minHeight:y,maxHeight:N}=r,{x:b,y:w,width:C,height:L,aspectRatio:E}=e;let R=Math.floor(d?p-e.pointerX:0),D=Math.floor(f?g-e.pointerY:0);const P=C+(l?-R:R),T=L+(u?-D:D),F=-i[0]*C,A=-i[1]*L;let m=Rt(P,x,v),k=Rt(T,y,N);if(o){let S=0,j=0;l&&R<0?S=$e(b+R+F,o[0][0]):!l&&R>0&&(S=Me(b+P+F,o[1][0])),u&&D<0?j=$e(w+D+A,o[0][1]):!u&&D>0&&(j=Me(w+T+A,o[1][1])),m=Math.max(m,S),k=Math.max(k,j)}if(a){let S=0,j=0;l&&R>0?S=Me(b+R,a[0][0]):!l&&R<0&&(S=$e(b+P,a[1][0])),u&&D>0?j=Me(w+D,a[0][1]):!u&&D<0&&(j=$e(w+T,a[1][1])),m=Math.max(m,S),k=Math.max(k,j)}if(s){if(d){const S=Rt(P/E,y,N)*E;if(m=Math.max(m,S),o){let j=0;!l&&!u||l&&!u&&h?j=Me(w+A+P/E,o[1][1])*E:j=$e(w+A+(l?R:-R)/E,o[0][1])*E,m=Math.max(m,j)}if(a){let j=0;!l&&!u||l&&!u&&h?j=$e(w+P/E,a[1][1])*E:j=Me(w+(l?R:-R)/E,a[0][1])*E,m=Math.max(m,j)}}if(f){const S=Rt(T*E,x,v)/E;if(k=Math.max(k,S),o){let j=0;!l&&!u||u&&!l&&h?j=Me(b+T*E+F,o[1][0])/E:j=$e(b+(u?D:-D)*E+F,o[0][0])/E,k=Math.max(k,j)}if(a){let j=0;!l&&!u||u&&!l&&h?j=$e(b+T*E,a[1][0])/E:j=Me(b+(u?D:-D)*E,a[0][0])/E,k=Math.max(k,j)}}}D=D+(D<0?k:-k),R=R+(R<0?m:-m),s&&(h?P>T*E?D=(fs(l,u)?-R:R)/E:R=(fs(l,u)?-D:D)*E:d?(D=R/E,u=l):(R=D*E,l=u));const _=l?b+R:b,M=u?w+D:w;return{width:C+(l?-R:R),height:L+(u?-D:D),x:i[0]*R*(l?-1:1)+_,y:i[1]*D*(u?-1:1)+M}}const Ui={width:0,height:0,x:0,y:0},Df={...Ui,pointerX:0,pointerY:0,aspectRatio:1};function Rf(e){return[[0,0],[e.measured.width,e.measured.height]]}function Lf(e,t,n){const r=t.position.x+e.position.x,s=t.position.y+e.position.y,i=e.measured.width??0,o=e.measured.height??0,a=n[0]*i,l=n[1]*o;return[[r-a,s-l],[r+i-a,s+o-l]]}function Hf({domNode:e,nodeId:t,getStoreItems:n,onChange:r,onEnd:s}){const i=le(e);function o({controlPosition:l,boundaries:u,keepAspectRatio:d,onResizeStart:f,onResize:h,onResizeEnd:p,shouldResize:g}){let x={...Ui},v={...Df};const y=Pf(l);let N,b=null,w=[],C,L,E;const R=ai().on("start",D=>{const{nodeLookup:P,transform:T,snapGrid:F,snapToGrid:A,nodeOrigin:m,paneDomNode:k}=n();if(N=P.get(t),!N)return;b=(k==null?void 0:k.getBoundingClientRect())??null;const{xSnapped:_,ySnapped:M}=ht(D.sourceEvent,{transform:T,snapGrid:F,snapToGrid:A,containerBounds:b});x={width:N.measured.width??0,height:N.measured.height??0,x:N.position.x??0,y:N.position.y??0},v={...x,pointerX:_,pointerY:M,aspectRatio:x.width/x.height},C=void 0,N.parentId&&(N.extent==="parent"||N.expandParent)&&(C=P.get(N.parentId),L=C&&N.extent==="parent"?Rf(C):void 0),w=[],E=void 0;for(const[S,j]of P)if(j.parentId===t&&(w.push({id:S,position:{...j.position},extent:j.extent}),j.extent==="parent"||j.expandParent)){const z=Lf(j,N,j.origin??m);E?E=[[Math.min(z[0][0],E[0][0]),Math.min(z[0][1],E[0][1])],[Math.max(z[1][0],E[1][0]),Math.max(z[1][1],E[1][1])]]:E=z}f==null||f(D,{...x})}).on("drag",D=>{const{transform:P,snapGrid:T,snapToGrid:F,nodeOrigin:A}=n(),m=ht(D.sourceEvent,{transform:P,snapGrid:T,snapToGrid:F,containerBounds:b}),k=[];if(!N)return;const{x:_,y:M,width:S,height:j}=x,z={},H=N.origin??A,{width:O,height:X,x:V,y:B}=Tf(v,y,m,u,d,H,L,E),Y=O!==S,U=X!==j,I=V!==_&&Y,q=B!==M&&U;if(!I&&!q&&!Y&&!U)return;if((I||q||H[0]===1||H[1]===1)&&(z.x=I?V:x.x,z.y=q?B:x.y,x.x=z.x,x.y=z.y,w.length>0)){const J=V-_,ee=B-M;for(const oe of w)oe.position={x:oe.position.x-J+H[0]*(O-S),y:oe.position.y-ee+H[1]*(X-j)},k.push(oe)}if((Y||U)&&(z.width=Y?O:x.width,z.height=U?X:x.height,x.width=z.width,x.height=z.height),C&&N.expandParent){const J=H[0]*(z.width??0);z.x&&z.x<J&&(x.x=J,v.x=v.x-(z.x-J));const ee=H[1]*(z.height??0);z.y&&z.y<ee&&(x.y=ee,v.y=v.y-(z.y-ee))}const K=Af({width:x.width,prevWidth:S,height:x.height,prevHeight:j,affectsX:y.affectsX,affectsY:y.affectsY}),Z={...x,direction:K};(g==null?void 0:g(D,Z))!==!1&&(h==null||h(D,Z),r(z,k))}).on("end",D=>{p==null||p(D,{...x}),s==null||s()});i.call(R)}function a(){i.on(".drag",null)}return{update:o,destroy:a}}var Zi={exports:{}},Qi={},Ji={exports:{}},eo={};/**
2
- * @license React
3
- * use-sync-external-store-shim.production.js
4
- *
5
- * Copyright (c) Meta Platforms, Inc. and affiliates.
6
- *
7
- * This source code is licensed under the MIT license found in the
8
- * LICENSE file in the root directory of this source tree.
9
- */var rt=$;function Ff(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Of=typeof Object.is=="function"?Object.is:Ff,Bf=rt.useState,Vf=rt.useEffect,qf=rt.useLayoutEffect,Xf=rt.useDebugValue;function Yf(e,t){var n=t(),r=Bf({inst:{value:n,getSnapshot:t}}),s=r[0].inst,i=r[1];return qf(function(){s.value=n,s.getSnapshot=t,Ln(s)&&i({inst:s})},[e,n,t]),Vf(function(){return Ln(s)&&i({inst:s}),e(function(){Ln(s)&&i({inst:s})})},[e]),Xf(n),n}function Ln(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!Of(e,n)}catch{return!0}}function Wf(e,t){return t()}var Kf=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?Wf:Yf;eo.useSyncExternalStore=rt.useSyncExternalStore!==void 0?rt.useSyncExternalStore:Kf;Ji.exports=eo;var Gf=Ji.exports;/**
10
- * @license React
11
- * use-sync-external-store-shim/with-selector.production.js
12
- *
13
- * Copyright (c) Meta Platforms, Inc. and affiliates.
14
- *
15
- * This source code is licensed under the MIT license found in the
16
- * LICENSE file in the root directory of this source tree.
17
- */var yn=$,Uf=Gf;function Zf(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Qf=typeof Object.is=="function"?Object.is:Zf,Jf=Uf.useSyncExternalStore,eh=yn.useRef,th=yn.useEffect,nh=yn.useMemo,rh=yn.useDebugValue;Qi.useSyncExternalStoreWithSelector=function(e,t,n,r,s){var i=eh(null);if(i.current===null){var o={hasValue:!1,value:null};i.current=o}else o=i.current;i=nh(function(){function l(p){if(!u){if(u=!0,d=p,p=r(p),s!==void 0&&o.hasValue){var g=o.value;if(s(g,p))return f=g}return f=p}if(g=f,Qf(d,p))return g;var x=r(p);return s!==void 0&&s(g,x)?(d=p,g):(d=p,f=x)}var u=!1,d,f,h=n===void 0?null:n;return[function(){return l(t())},h===null?void 0:function(){return l(h())}]},[t,n,r,s]);var a=Jf(e,i[0],i[1]);return th(function(){o.hasValue=!0,o.value=a},[a]),rh(a),a};Zi.exports=Qi;var sh=Zi.exports;const ih=Ya(sh),oh={},hs=e=>{let t;const n=new Set,r=(d,f)=>{const h=typeof d=="function"?d(t):d;if(!Object.is(h,t)){const p=t;t=f??(typeof h!="object"||h===null)?h:Object.assign({},t,h),n.forEach(g=>g(t,p))}},s=()=>t,l={setState:r,getState:s,getInitialState:()=>u,subscribe:d=>(n.add(d),()=>n.delete(d)),destroy:()=>{(oh?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}},u=t=e(r,s,l);return l},ah=e=>e?hs(e):hs,{useDebugValue:ch}=Wa,{useSyncExternalStoreWithSelector:lh}=ih,uh=e=>e;function to(e,t=uh,n){const r=lh(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return ch(r),r}const ps=(e,t)=>{const n=ah(e),r=(s,i=t)=>to(n,s,i);return Object.assign(r,n),r},dh=(e,t)=>e?ps(e,t):ps;function re(e,t){if(Object.is(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(const[r,s]of e)if(!Object.is(s,t.get(r)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(const r of e)if(!t.has(r))return!1;return!0}const n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(const r of n)if(!Object.prototype.hasOwnProperty.call(t,r)||!Object.is(e[r],t[r]))return!1;return!0}const wn=$.createContext(null),fh=wn.Provider,no=Se.error001();function Q(e,t){const n=$.useContext(wn);if(n===null)throw new Error(no);return to(n,e,t)}function te(){const e=$.useContext(wn);if(e===null)throw new Error(no);return $.useMemo(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}const gs={display:"none"},hh={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},ro="react-flow__node-desc",so="react-flow__edge-desc",ph="react-flow__aria-live",gh=e=>e.ariaLiveMessage;function mh({rfId:e}){const t=Q(gh);return c.jsx("div",{id:`${ph}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:hh,children:t})}function xh({rfId:e,disableKeyboardA11y:t}){return c.jsxs(c.Fragment,{children:[c.jsxs("div",{id:`${ro}-${e}`,style:gs,children:["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."," "]}),c.jsx("div",{id:`${so}-${e}`,style:gs,children:"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."}),!t&&c.jsx(mh,{rfId:e})]})}const yh=e=>e.userSelectionActive?"none":"all",Nr=$.forwardRef(({position:e="top-left",children:t,className:n,style:r,...s},i)=>{const o=Q(yh),a=`${e}`.split("-");return c.jsx("div",{className:se(["react-flow__panel",n,...a]),style:{...r,pointerEvents:o},ref:i,...s,children:t})});function wh({proOptions:e,position:t="bottom-right"}){return e!=null&&e.hideAttribution?null:c.jsx(Nr,{position:t,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev",children:c.jsx("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}const bh=e=>{const t=[],n=[];for(const[,r]of e.nodeLookup)r.selected&&t.push(r.internals.userNode);for(const[,r]of e.edgeLookup)r.selected&&n.push(r);return{selectedNodes:t,selectedEdges:n}},Lt=e=>e.id;function vh(e,t){return re(e.selectedNodes.map(Lt),t.selectedNodes.map(Lt))&&re(e.selectedEdges.map(Lt),t.selectedEdges.map(Lt))}function Nh({onSelectionChange:e}){const t=te(),{selectedNodes:n,selectedEdges:r}=Q(bh,vh);return $.useEffect(()=>{const s={nodes:n,edges:r};e==null||e(s),t.getState().onSelectionChangeHandlers.forEach(i=>i(s))},[n,r,e]),null}const _h=e=>!!e.onSelectionChangeHandlers;function kh({onSelectionChange:e}){const t=Q(_h);return e||t?c.jsx(Nh,{onSelectionChange:e}):null}const io=[0,0],Sh={x:0,y:0,zoom:1},jh=["nodes","edges","defaultNodes","defaultEdges","onConnect","onConnectStart","onConnectEnd","onClickConnectStart","onClickConnectEnd","nodesDraggable","nodesConnectable","nodesFocusable","edgesFocusable","edgesReconnectable","elevateNodesOnSelect","elevateEdgesOnSelect","minZoom","maxZoom","nodeExtent","onNodesChange","onEdgesChange","elementsSelectable","connectionMode","snapGrid","snapToGrid","translateExtent","connectOnClick","defaultEdgeOptions","fitView","fitViewOptions","onNodesDelete","onEdgesDelete","onDelete","onNodeDrag","onNodeDragStart","onNodeDragStop","onSelectionDrag","onSelectionDragStart","onSelectionDragStop","onMoveStart","onMove","onMoveEnd","noPanClassName","nodeOrigin","autoPanOnConnect","autoPanOnNodeDrag","onError","connectionRadius","isValidConnection","selectNodesOnDrag","nodeDragThreshold","onBeforeDelete","debug","autoPanSpeed","paneClickDistance"],ms=[...jh,"rfId"],Eh=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges,setPaneClickDistance:e.setPaneClickDistance}),xs={translateExtent:bt,nodeOrigin:io,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1",paneClickDistance:0};function Ch(e){const{setNodes:t,setEdges:n,setMinZoom:r,setMaxZoom:s,setTranslateExtent:i,setNodeExtent:o,reset:a,setDefaultNodesAndEdges:l,setPaneClickDistance:u}=Q(Eh,re),d=te();$.useEffect(()=>(l(e.defaultNodes,e.defaultEdges),()=>{f.current=xs,a()}),[]);const f=$.useRef(xs);return $.useEffect(()=>{for(const h of ms){const p=e[h],g=f.current[h];p!==g&&(typeof e[h]>"u"||(h==="nodes"?t(p):h==="edges"?n(p):h==="minZoom"?r(p):h==="maxZoom"?s(p):h==="translateExtent"?i(p):h==="nodeExtent"?o(p):h==="paneClickDistance"?u(p):h==="fitView"?d.setState({fitViewOnInit:p}):h==="fitViewOptions"?d.setState({fitViewOnInitOptions:p}):d.setState({[h]:p})))}f.current=e},ms.map(h=>e[h])),null}function ys(){return typeof window>"u"||!window.matchMedia?null:window.matchMedia("(prefers-color-scheme: dark)")}function $h(e){var r;const[t,n]=$.useState(e==="system"?null:e);return $.useEffect(()=>{if(e!=="system"){n(e);return}const s=ys(),i=()=>n(s!=null&&s.matches?"dark":"light");return i(),s==null||s.addEventListener("change",i),()=>{s==null||s.removeEventListener("change",i)}},[e]),t!==null?t:(r=ys())!=null&&r.matches?"dark":"light"}const ws=typeof document<"u"?document:null;function kt(e=null,t={target:ws,actInsideInputWithModifier:!0}){const[n,r]=$.useState(!1),s=$.useRef(!1),i=$.useRef(new Set([])),[o,a]=$.useMemo(()=>{if(e!==null){const u=(Array.isArray(e)?e:[e]).filter(f=>typeof f=="string").map(f=>f.replace("+",`
18
- `).replace(`
19
-
20
- `,`
21
- +`).split(`
22
- `)),d=u.reduce((f,h)=>f.concat(...h),[]);return[u,d]}return[[],[]]},[e]);return $.useEffect(()=>{const l=(t==null?void 0:t.target)||ws;if(e!==null){const u=h=>{if(s.current=h.ctrlKey||h.metaKey||h.shiftKey,(!s.current||s.current&&!t.actInsideInputWithModifier)&&tr(h))return!1;const g=vs(h.code,a);i.current.add(h[g]),bs(o,i.current,!1)&&(h.preventDefault(),r(!0))},d=h=>{if((!s.current||s.current&&!t.actInsideInputWithModifier)&&tr(h))return!1;const g=vs(h.code,a);bs(o,i.current,!0)?(r(!1),i.current.clear()):i.current.delete(h[g]),h.key==="Meta"&&i.current.clear(),s.current=!1},f=()=>{i.current.clear(),r(!1)};return l==null||l.addEventListener("keydown",u),l==null||l.addEventListener("keyup",d),window.addEventListener("blur",f),window.addEventListener("contextmenu",f),()=>{l==null||l.removeEventListener("keydown",u),l==null||l.removeEventListener("keyup",d),window.removeEventListener("blur",f),window.removeEventListener("contextmenu",f)}}},[e,r]),n}function bs(e,t,n){return e.filter(r=>n||r.length===t.size).some(r=>r.every(s=>t.has(s)))}function vs(e,t){return t.includes(e)?"code":"key"}const Mh=()=>{const e=te();return $.useMemo(()=>({zoomIn:t=>{const{panZoom:n}=e.getState();return n?n.scaleBy(1.2,{duration:t==null?void 0:t.duration}):Promise.resolve(!1)},zoomOut:t=>{const{panZoom:n}=e.getState();return n?n.scaleBy(1/1.2,{duration:t==null?void 0:t.duration}):Promise.resolve(!1)},zoomTo:(t,n)=>{const{panZoom:r}=e.getState();return r?r.scaleTo(t,{duration:n==null?void 0:n.duration}):Promise.resolve(!1)},getZoom:()=>e.getState().transform[2],setViewport:async(t,n)=>{const{transform:[r,s,i],panZoom:o}=e.getState();return o?(await o.setViewport({x:t.x??r,y:t.y??s,zoom:t.zoom??i},{duration:n==null?void 0:n.duration}),Promise.resolve(!0)):Promise.resolve(!1)},getViewport:()=>{const[t,n,r]=e.getState().transform;return{x:t,y:n,zoom:r}},fitView:t=>{const{nodeLookup:n,minZoom:r,maxZoom:s,panZoom:i,domNode:o}=e.getState();if(!i||!o)return Promise.resolve(!1);const a=Qn(n,t),{width:l,height:u}=mn(o);return Jn({nodes:a,width:l,height:u,minZoom:r,maxZoom:s,panZoom:i},t)},setCenter:async(t,n,r)=>{const{width:s,height:i,maxZoom:o,panZoom:a}=e.getState(),l=typeof(r==null?void 0:r.zoom)<"u"?r.zoom:o,u=s/2-t*l,d=i/2-n*l;return a?(await a.setViewport({x:u,y:d,zoom:l},{duration:r==null?void 0:r.duration}),Promise.resolve(!0)):Promise.resolve(!1)},fitBounds:async(t,n)=>{const{width:r,height:s,minZoom:i,maxZoom:o,panZoom:a}=e.getState(),l=xr(t,r,s,i,o,(n==null?void 0:n.padding)??.1);return a?(await a.setViewport(l,{duration:n==null?void 0:n.duration}),Promise.resolve(!0)):Promise.resolve(!1)},screenToFlowPosition:(t,n={snapToGrid:!0})=>{const{transform:r,snapGrid:s,domNode:i}=e.getState();if(!i)return t;const{x:o,y:a}=i.getBoundingClientRect(),l={x:t.x-o,y:t.y-a};return $t(l,r,n.snapToGrid,s)},flowToScreenPosition:t=>{const{transform:n,domNode:r}=e.getState();if(!r)return t;const{x:s,y:i}=r.getBoundingClientRect(),o=Ii(t,n);return{x:o.x+s,y:o.y+i}}}),[])};function oo(e,t){const n=[],r=new Map,s=[];for(const i of e)if(i.type==="add"){s.push(i);continue}else if(i.type==="remove"||i.type==="replace")r.set(i.id,[i]);else{const o=r.get(i.id);o?o.push(i):r.set(i.id,[i])}for(const i of t){const o=r.get(i.id);if(!o){n.push(i);continue}if(o[0].type==="remove")continue;if(o[0].type==="replace"){n.push({...o[0].item});continue}const a={...i};for(const l of o)zh(l,a);n.push(a)}return s.length&&s.forEach(i=>{i.index!==void 0?n.splice(i.index,0,{...i.item}):n.push({...i.item})}),n}function zh(e,t){switch(e.type){case"select":{t.selected=e.selected;break}case"position":{typeof e.position<"u"&&(t.position=e.position),typeof e.dragging<"u"&&(t.dragging=e.dragging);break}case"dimensions":{typeof e.dimensions<"u"&&(t.measured??(t.measured={}),t.measured.width=e.dimensions.width,t.measured.height=e.dimensions.height,e.setAttributes&&(t.width=e.dimensions.width,t.height=e.dimensions.height)),typeof e.resizing=="boolean"&&(t.resizing=e.resizing);break}}}function Ih(e,t){return oo(e,t)}function Ah(e,t){return oo(e,t)}function De(e,t){return{id:e,type:"select",selected:t}}function We(e,t=new Set,n=!1){const r=[];for(const[s,i]of e){const o=t.has(s);!(i.selected===void 0&&!o)&&i.selected!==o&&(n&&(i.selected=o),r.push(De(i.id,o)))}return r}function Ns({items:e=[],lookup:t}){var s;const n=[],r=new Map(e.map(i=>[i.id,i]));for(const[i,o]of e.entries()){const a=t.get(o.id),l=((s=a==null?void 0:a.internals)==null?void 0:s.userNode)??a;l!==void 0&&l!==o&&n.push({id:o.id,item:o,type:"replace"}),l===void 0&&n.push({item:o,type:"add",index:i})}for(const[i]of t)r.get(i)===void 0&&n.push({id:i,type:"remove"});return n}function _s(e){return{id:e.id,type:"remove"}}const ks=e=>Kd(e),Ph=e=>ji(e);function ao(e){return $.forwardRef(e)}const Th=typeof window<"u"?$.useLayoutEffect:$.useEffect;function Ss(e){const[t,n]=$.useState(BigInt(0)),[r]=$.useState(()=>Dh(()=>n(s=>s+BigInt(1))));return Th(()=>{const s=r.get();s.length&&(e(s),r.reset())},[t]),r}function Dh(e){let t=[];return{get:()=>t,reset:()=>{t=[]},push:n=>{t.push(n),e()}}}const co=$.createContext(null);function Rh({children:e}){const t=te(),n=$.useCallback(a=>{const{nodes:l=[],setNodes:u,hasDefaultNodes:d,onNodesChange:f,nodeLookup:h}=t.getState();let p=l;for(const g of a)p=typeof g=="function"?g(p):g;d?u(p):f&&f(Ns({items:p,lookup:h}))},[]),r=Ss(n),s=$.useCallback(a=>{const{edges:l=[],setEdges:u,hasDefaultEdges:d,onEdgesChange:f,edgeLookup:h}=t.getState();let p=l;for(const g of a)p=typeof g=="function"?g(p):g;d?u(p):f&&f(Ns({items:p,lookup:h}))},[]),i=Ss(s),o=$.useMemo(()=>({nodeQueue:r,edgeQueue:i}),[]);return c.jsx(co.Provider,{value:o,children:e})}function Lh(){const e=$.useContext(co);if(!e)throw new Error("useBatchContext must be used within a BatchProvider");return e}const Hh=e=>!!e.panZoom;function _r(){const e=Mh(),t=te(),n=Lh(),r=Q(Hh),s=$.useMemo(()=>{const i=f=>t.getState().nodeLookup.get(f),o=f=>{n.nodeQueue.push(f)},a=f=>{n.edgeQueue.push(f)},l=f=>{var y,N;const{nodeLookup:h,nodeOrigin:p}=t.getState(),g=ks(f)?f:h.get(f.id),x=g.parentId?Pi(g.position,g.measured,g.parentId,h,p):g.position,v={...g,position:x,width:((y=g.measured)==null?void 0:y.width)??g.width,height:((N=g.measured)==null?void 0:N.height)??g.height};return tt(v)},u=(f,h,p={replace:!1})=>{o(g=>g.map(x=>{if(x.id===f){const v=typeof h=="function"?h(x):h;return p.replace&&ks(v)?v:{...x,...v}}return x}))},d=(f,h,p={replace:!1})=>{a(g=>g.map(x=>{if(x.id===f){const v=typeof h=="function"?h(x):h;return p.replace&&Ph(v)?v:{...x,...v}}return x}))};return{getNodes:()=>t.getState().nodes.map(f=>({...f})),getNode:f=>{var h;return(h=i(f))==null?void 0:h.internals.userNode},getInternalNode:i,getEdges:()=>{const{edges:f=[]}=t.getState();return f.map(h=>({...h}))},getEdge:f=>t.getState().edgeLookup.get(f),setNodes:o,setEdges:a,addNodes:f=>{const h=Array.isArray(f)?f:[f];n.nodeQueue.push(p=>[...p,...h])},addEdges:f=>{const h=Array.isArray(f)?f:[f];n.edgeQueue.push(p=>[...p,...h])},toObject:()=>{const{nodes:f=[],edges:h=[],transform:p}=t.getState(),[g,x,v]=p;return{nodes:f.map(y=>({...y})),edges:h.map(y=>({...y})),viewport:{x:g,y:x,zoom:v}}},deleteElements:async({nodes:f=[],edges:h=[]})=>{const{nodes:p,edges:g,onNodesDelete:x,onEdgesDelete:v,triggerNodeChanges:y,triggerEdgeChanges:N,onDelete:b,onBeforeDelete:w}=t.getState(),{nodes:C,edges:L}=await Zd({nodesToRemove:f,edgesToRemove:h,nodes:p,edges:g,onBeforeDelete:w}),E=L.length>0,R=C.length>0;if(E){const D=L.map(_s);v==null||v(L),N(D)}if(R){const D=C.map(_s);x==null||x(C),y(D)}return(R||E)&&(b==null||b({nodes:C,edges:L})),{deletedNodes:C,deletedEdges:L}},getIntersectingNodes:(f,h=!0,p)=>{const g=rs(f),x=g?f:l(f),v=p!==void 0;return x?(p||t.getState().nodes).filter(y=>{const N=t.getState().nodeLookup.get(y.id);if(N&&!g&&(y.id===f.id||!N.internals.positionAbsolute))return!1;const b=tt(v?y:N),w=Nt(b,x);return h&&w>0||w>=x.width*x.height}):[]},isNodeIntersecting:(f,h,p=!0)=>{const x=rs(f)?f:l(f);if(!x)return!1;const v=Nt(x,h);return p&&v>0||v>=x.width*x.height},updateNode:u,updateNodeData:(f,h,p={replace:!1})=>{u(f,g=>{const x=typeof h=="function"?h(g):h;return p.replace?{...g,data:x}:{...g,data:{...g.data,...x}}},p)},updateEdge:d,updateEdgeData:(f,h,p={replace:!1})=>{d(f,g=>{const x=typeof h=="function"?h(g):h;return p.replace?{...g,data:x}:{...g,data:{...g.data,...x}}},p)},getNodesBounds:f=>{const{nodeLookup:h,nodeOrigin:p}=t.getState();return Gd(f,{nodeLookup:h,nodeOrigin:p})},getHandleConnections:({type:f,id:h,nodeId:p})=>{var g;return Array.from(((g=t.getState().connectionLookup.get(`${p}-${f}-${h??null}`))==null?void 0:g.values())??[])}}},[]);return $.useMemo(()=>({...s,...e,viewportInitialized:r}),[r])}const js=e=>e.selected,Fh={actInsideInputWithModifier:!1},Oh=typeof window<"u"?window:void 0;function Bh({deleteKeyCode:e,multiSelectionKeyCode:t}){const n=te(),{deleteElements:r}=_r(),s=kt(e,Fh),i=kt(t,{target:Oh});$.useEffect(()=>{if(s){const{edges:o,nodes:a}=n.getState();r({nodes:a.filter(js),edges:o.filter(js)}),n.setState({nodesSelectionActive:!1})}},[s]),$.useEffect(()=>{n.setState({multiSelectionActive:i})},[i])}function Vh(e){const t=te();$.useEffect(()=>{const n=()=>{var s,i;if(!e.current)return!1;const r=mn(e.current);(r.height===0||r.width===0)&&((i=(s=t.getState()).onError)==null||i.call(s,"004",Se.error004())),t.setState({width:r.width||500,height:r.height||500})};if(e.current){n(),window.addEventListener("resize",n);const r=new ResizeObserver(()=>n());return r.observe(e.current),()=>{window.removeEventListener("resize",n),r&&e.current&&r.unobserve(e.current)}}},[])}const bn={position:"absolute",width:"100%",height:"100%",top:0,left:0},qh=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib});function Xh({onPaneContextMenu:e,zoomOnScroll:t=!0,zoomOnPinch:n=!0,panOnScroll:r=!1,panOnScrollSpeed:s=.5,panOnScrollMode:i=He.Free,zoomOnDoubleClick:o=!0,panOnDrag:a=!0,defaultViewport:l,translateExtent:u,minZoom:d,maxZoom:f,zoomActivationKeyCode:h,preventScrolling:p=!0,children:g,noWheelClassName:x,noPanClassName:v,onViewportChange:y,isControlledViewport:N,paneClickDistance:b}){const w=te(),C=$.useRef(null),{userSelectionActive:L,lib:E}=Q(qh,re),R=kt(h),D=$.useRef();Vh(C);const P=$.useCallback(T=>{y==null||y({x:T[0],y:T[1],zoom:T[2]}),N||w.setState({transform:T})},[y,N]);return $.useEffect(()=>{if(C.current){D.current=If({domNode:C.current,minZoom:d,maxZoom:f,translateExtent:u,viewport:l,paneClickDistance:b,onDraggingChange:m=>w.setState({paneDragging:m}),onPanZoomStart:(m,k)=>{const{onViewportChangeStart:_,onMoveStart:M}=w.getState();M==null||M(m,k),_==null||_(k)},onPanZoom:(m,k)=>{const{onViewportChange:_,onMove:M}=w.getState();M==null||M(m,k),_==null||_(k)},onPanZoomEnd:(m,k)=>{const{onViewportChangeEnd:_,onMoveEnd:M}=w.getState();M==null||M(m,k),_==null||_(k)}});const{x:T,y:F,zoom:A}=D.current.getViewport();return w.setState({panZoom:D.current,transform:[T,F,A],domNode:C.current.closest(".react-flow")}),()=>{var m;(m=D.current)==null||m.destroy()}}},[]),$.useEffect(()=>{var T;(T=D.current)==null||T.update({onPaneContextMenu:e,zoomOnScroll:t,zoomOnPinch:n,panOnScroll:r,panOnScrollSpeed:s,panOnScrollMode:i,zoomOnDoubleClick:o,panOnDrag:a,zoomActivationKeyPressed:R,preventScrolling:p,noPanClassName:v,userSelectionActive:L,noWheelClassName:x,lib:E,onTransformChange:P})},[e,t,n,r,s,i,o,a,R,p,v,L,x,E,P]),c.jsx("div",{className:"react-flow__renderer",ref:C,style:bn,children:g})}const Yh=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function Wh(){const{userSelectionActive:e,userSelectionRect:t}=Q(Yh,re);return e&&t?c.jsx("div",{className:"react-flow__selection react-flow__container",style:{width:t.width,height:t.height,transform:`translate(${t.x}px, ${t.y}px)`}}):null}const Hn=(e,t)=>n=>{n.target===t.current&&(e==null||e(n))},Kh=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging});function Gh({isSelecting:e,selectionKeyPressed:t,selectionMode:n=vt.Full,panOnDrag:r,selectionOnDrag:s,onSelectionStart:i,onSelectionEnd:o,onPaneClick:a,onPaneContextMenu:l,onPaneScroll:u,onPaneMouseEnter:d,onPaneMouseMove:f,onPaneMouseLeave:h,children:p}){const g=$.useRef(null),x=te(),v=$.useRef(0),y=$.useRef(0),N=$.useRef(),b=$.useRef(new Map),{userSelectionActive:w,elementsSelectable:C,dragging:L}=Q(Kh,re),E=C&&(e||w),R=$.useRef(!1),D=$.useRef(!1),P=()=>{x.setState({userSelectionActive:!1,userSelectionRect:null}),v.current=0,y.current=0},T=S=>{if(R.current){R.current=!1;return}a==null||a(S),x.getState().resetSelectedElements(),x.setState({nodesSelectionActive:!1})},F=S=>{if(Array.isArray(r)&&(r!=null&&r.includes(2))){S.preventDefault();return}l==null||l(S)},A=u?S=>u(S):void 0,m=S=>{var V,B,Y,U;const{resetSelectedElements:j,domNode:z,edgeLookup:H}=x.getState();if(N.current=z==null?void 0:z.getBoundingClientRect(),!C||!e||S.button!==0||S.target!==g.current||!N.current)return;(B=(V=S.target)==null?void 0:V.setPointerCapture)==null||B.call(V,S.pointerId),D.current=!0,R.current=!1,b.current=new Map;for(const[I,q]of H)b.current.set(q.source,((Y=b.current.get(q.source))==null?void 0:Y.add(I))||new Set([I])),b.current.set(q.target,((U=b.current.get(q.target))==null?void 0:U.add(I))||new Set([I]));const{x:O,y:X}=ve(S.nativeEvent,N.current);j(),x.setState({userSelectionRect:{width:0,height:0,startX:O,startY:X,x:O,y:X}}),i==null||i(S)},k=S=>{const{userSelectionRect:j,edgeLookup:z,transform:H,nodeLookup:O,triggerNodeChanges:X,triggerEdgeChanges:V}=x.getState();if(!N.current||!j)return;R.current=!0;const{x:B,y:Y}=ve(S.nativeEvent,N.current),{startX:U,startY:I}=j,q={startX:U,startY:I,x:B<U?B:U,y:Y<I?Y:I,width:Math.abs(B-U),height:Math.abs(Y-I)},K=Ei(O,q,H,n===vt.Partial,!0),Z=new Set,W=new Set;for(const J of K){W.add(J.id);const ee=b.current.get(J.id);if(ee)for(const oe of ee)Z.add(oe)}if(v.current!==W.size){v.current=W.size;const J=We(O,W,!0);X(J)}if(y.current!==Z.size){y.current=Z.size;const J=We(z,Z);V(J)}x.setState({userSelectionRect:q,userSelectionActive:!0,nodesSelectionActive:!1})},_=S=>{var z,H;if(S.button!==0||!D.current)return;(H=(z=S.target)==null?void 0:z.releasePointerCapture)==null||H.call(z,S.pointerId);const{userSelectionRect:j}=x.getState();!w&&j&&S.target===g.current&&(T==null||T(S)),v.current>0&&x.setState({nodesSelectionActive:!0}),P(),o==null||o(S),(t||s)&&(R.current=!1),D.current=!1},M=r===!0||Array.isArray(r)&&r.includes(0);return c.jsxs("div",{className:se(["react-flow__pane",{draggable:M,dragging:L,selection:e}]),onClick:E?void 0:Hn(T,g),onContextMenu:Hn(F,g),onWheel:Hn(A,g),onPointerEnter:E?void 0:d,onPointerDown:E?m:f,onPointerMove:E?k:f,onPointerUp:E?_:void 0,onPointerLeave:h,ref:g,style:bn,children:[p,c.jsx(Wh,{})]})}function or({id:e,store:t,unselect:n=!1,nodeRef:r}){const{addSelectedNodes:s,unselectNodesAndEdges:i,multiSelectionActive:o,nodeLookup:a,onError:l}=t.getState(),u=a.get(e);if(!u){l==null||l("012",Se.error012(e));return}t.setState({nodesSelectionActive:!1}),u.selected?(n||u.selected&&o)&&(i({nodes:[u],edges:[]}),requestAnimationFrame(()=>{var d;return(d=r==null?void 0:r.current)==null?void 0:d.blur()})):s([e])}function lo({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:r,nodeId:s,isSelectable:i,nodeClickDistance:o}){const a=te(),[l,u]=$.useState(!1),d=$.useRef();return $.useEffect(()=>{d.current=yf({getStoreItems:()=>a.getState(),onNodeMouseDown:f=>{or({id:f,store:a,nodeRef:e})},onDragStart:()=>{u(!0)},onDragStop:()=>{u(!1)}})},[]),$.useEffect(()=>{var f,h;if(t)(f=d.current)==null||f.destroy();else if(e.current)return(h=d.current)==null||h.update({noDragClassName:n,handleSelector:r,domNode:e.current,isSelectable:i,nodeId:s,nodeClickDistance:o}),()=>{var p;(p=d.current)==null||p.destroy()}},[n,r,t,i,e,s]),l}const Uh=e=>t=>t.selected&&(t.draggable||e&&typeof t.draggable>"u");function uo(){const e=te();return $.useCallback(n=>{const{nodeExtent:r,snapToGrid:s,snapGrid:i,nodesDraggable:o,onError:a,updateNodePositions:l,nodeLookup:u,nodeOrigin:d}=e.getState(),f=new Map,h=Uh(o),p=s?i[0]:5,g=s?i[1]:5,x=n.direction.x*p*n.factor,v=n.direction.y*g*n.factor;for(const[,y]of u){if(!h(y))continue;let N={x:y.internals.positionAbsolute.x+x,y:y.internals.positionAbsolute.y+v};s&&(N=gn(N,i));const{position:b,positionAbsolute:w}=Ci({nodeId:y.id,nextPosition:N,nodeLookup:u,nodeExtent:r,nodeOrigin:d,onError:a});y.position=b,y.internals.positionAbsolute=w,f.set(y.id,y)}l(f)},[])}const kr=$.createContext(null),Zh=kr.Provider;kr.Consumer;const fo=()=>$.useContext(kr),Qh=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),Jh=(e,t,n)=>r=>{const{connectionClickStartHandle:s,connectionMode:i,connection:o}=r,{fromHandle:a,toHandle:l,isValid:u}=o,d=(l==null?void 0:l.nodeId)===e&&(l==null?void 0:l.id)===t&&(l==null?void 0:l.type)===n;return{connectingFrom:(a==null?void 0:a.nodeId)===e&&(a==null?void 0:a.id)===t&&(a==null?void 0:a.type)===n,connectingTo:d,clickConnecting:(s==null?void 0:s.nodeId)===e&&(s==null?void 0:s.id)===t&&(s==null?void 0:s.type)===n,isPossibleEndHandle:i===Je.Strict?(a==null?void 0:a.type)!==n:e!==(a==null?void 0:a.nodeId)||t!==(a==null?void 0:a.id),connectionInProcess:!!a,valid:d&&u}};function e0({type:e="source",position:t=G.Top,isValidConnection:n,isConnectable:r=!0,isConnectableStart:s=!0,isConnectableEnd:i=!0,id:o,onConnect:a,children:l,className:u,onMouseDown:d,onTouchStart:f,...h},p){var m,k;const g=o||null,x=e==="target",v=te(),y=fo(),{connectOnClick:N,noPanClassName:b,rfId:w}=Q(Qh,re),{connectingFrom:C,connectingTo:L,clickConnecting:E,isPossibleEndHandle:R,connectionInProcess:D,valid:P}=Q(Jh(y,g,e),re);y||(k=(m=v.getState()).onError)==null||k.call(m,"010",Se.error010());const T=_=>{const{defaultEdgeOptions:M,onConnect:S,hasDefaultEdges:j}=v.getState(),z={...M,..._};if(j){const{edges:H,setEdges:O}=v.getState();O(sf(z,H))}S==null||S(z),a==null||a(z)},F=_=>{if(!y)return;const M=Di(_.nativeEvent);if(s&&(M&&_.button===0||!M)){const S=v.getState();ir.onPointerDown(_.nativeEvent,{autoPanOnConnect:S.autoPanOnConnect,connectionMode:S.connectionMode,connectionRadius:S.connectionRadius,domNode:S.domNode,nodeLookup:S.nodeLookup,lib:S.lib,isTarget:x,handleId:g,nodeId:y,flowId:S.rfId,panBy:S.panBy,cancelConnection:S.cancelConnection,onConnectStart:S.onConnectStart,onConnectEnd:S.onConnectEnd,updateConnection:S.updateConnection,onConnect:T,isValidConnection:n||S.isValidConnection,getTransform:()=>v.getState().transform,getFromHandle:()=>v.getState().connection.fromHandle,autoPanSpeed:S.autoPanSpeed})}M?d==null||d(_):f==null||f(_)},A=_=>{const{onClickConnectStart:M,onClickConnectEnd:S,connectionClickStartHandle:j,connectionMode:z,isValidConnection:H,lib:O,rfId:X,nodeLookup:V,connection:B}=v.getState();if(!y||!j&&!s)return;if(!j){M==null||M(_.nativeEvent,{nodeId:y,handleId:g,handleType:e}),v.setState({connectionClickStartHandle:{nodeId:y,type:e,id:g}});return}const Y=Ti(_.target),U=n||H,{connection:I,isValid:q}=ir.isValid(_.nativeEvent,{handle:{nodeId:y,id:g,type:e},connectionMode:z,fromNodeId:j.nodeId,fromHandleId:j.id||null,fromType:j.type,isValidConnection:U,flowId:X,doc:Y,lib:O,nodeLookup:V});q&&I&&T(I);const K=structuredClone(B);delete K.inProgress,K.toPosition=K.toHandle?K.toHandle.position:null,S==null||S(_,K),v.setState({connectionClickStartHandle:null})};return c.jsx("div",{"data-handleid":g,"data-nodeid":y,"data-handlepos":t,"data-id":`${w}-${y}-${g}-${e}`,className:se(["react-flow__handle",`react-flow__handle-${t}`,"nodrag",b,u,{source:!x,target:x,connectable:r,connectablestart:s,connectableend:i,clickconnecting:E,connectingfrom:C,connectingto:L,valid:P,connectionindicator:r&&(!D||R)&&(D?i:s)}]),onMouseDown:F,onTouchStart:F,onClick:N?A:void 0,ref:p,...h,children:l})}const Te=$.memo(ao(e0));function t0({data:e,isConnectable:t,sourcePosition:n=G.Bottom}){return c.jsxs(c.Fragment,{children:[e==null?void 0:e.label,c.jsx(Te,{type:"source",position:n,isConnectable:t})]})}function n0({data:e,isConnectable:t,targetPosition:n=G.Top,sourcePosition:r=G.Bottom}){return c.jsxs(c.Fragment,{children:[c.jsx(Te,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label,c.jsx(Te,{type:"source",position:r,isConnectable:t})]})}function r0(){return null}function s0({data:e,isConnectable:t,targetPosition:n=G.Top}){return c.jsxs(c.Fragment,{children:[c.jsx(Te,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label]})}const sn={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},Es={input:t0,default:n0,output:s0,group:r0};function i0(e){var t,n,r,s;return e.internals.handleBounds===void 0?{width:e.width??e.initialWidth??((t=e.style)==null?void 0:t.width),height:e.height??e.initialHeight??((n=e.style)==null?void 0:n.height)}:{width:e.width??((r=e.style)==null?void 0:r.width),height:e.height??((s=e.style)==null?void 0:s.height)}}const o0=e=>{const{width:t,height:n,x:r,y:s}=Ct(e.nodeLookup,{filter:i=>!!i.selected});return{width:he(t)?t:null,height:he(n)?n:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${r}px,${s}px)`}};function a0({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){const r=te(),{width:s,height:i,transformString:o,userSelectionActive:a}=Q(o0,re),l=uo(),u=$.useRef(null);if($.useEffect(()=>{var h;n||(h=u.current)==null||h.focus({preventScroll:!0})},[n]),lo({nodeRef:u}),a||!s||!i)return null;const d=e?h=>{const p=r.getState().nodes.filter(g=>g.selected);e(h,p)}:void 0,f=h=>{Object.prototype.hasOwnProperty.call(sn,h.key)&&(h.preventDefault(),l({direction:sn[h.key],factor:h.shiftKey?4:1}))};return c.jsx("div",{className:se(["react-flow__nodesselection","react-flow__container",t]),style:{transform:o},children:c.jsx("div",{ref:u,className:"react-flow__nodesselection-rect",onContextMenu:d,tabIndex:n?void 0:-1,onKeyDown:n?void 0:f,style:{width:s,height:i}})})}const Cs=typeof window<"u"?window:void 0,c0=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function ho({children:e,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:s,onPaneContextMenu:i,onPaneScroll:o,paneClickDistance:a,deleteKeyCode:l,selectionKeyCode:u,selectionOnDrag:d,selectionMode:f,onSelectionStart:h,onSelectionEnd:p,multiSelectionKeyCode:g,panActivationKeyCode:x,zoomActivationKeyCode:v,elementsSelectable:y,zoomOnScroll:N,zoomOnPinch:b,panOnScroll:w,panOnScrollSpeed:C,panOnScrollMode:L,zoomOnDoubleClick:E,panOnDrag:R,defaultViewport:D,translateExtent:P,minZoom:T,maxZoom:F,preventScrolling:A,onSelectionContextMenu:m,noWheelClassName:k,noPanClassName:_,disableKeyboardA11y:M,onViewportChange:S,isControlledViewport:j}){const{nodesSelectionActive:z,userSelectionActive:H}=Q(c0),O=kt(u,{target:Cs}),X=kt(x,{target:Cs}),V=X||R,B=X||w,Y=d&&V!==!0,U=O||H||Y;return Bh({deleteKeyCode:l,multiSelectionKeyCode:g}),c.jsx(Xh,{onPaneContextMenu:i,elementsSelectable:y,zoomOnScroll:N,zoomOnPinch:b,panOnScroll:B,panOnScrollSpeed:C,panOnScrollMode:L,zoomOnDoubleClick:E,panOnDrag:!O&&V,defaultViewport:D,translateExtent:P,minZoom:T,maxZoom:F,zoomActivationKeyCode:v,preventScrolling:A,noWheelClassName:k,noPanClassName:_,onViewportChange:S,isControlledViewport:j,paneClickDistance:a,children:c.jsxs(Gh,{onSelectionStart:h,onSelectionEnd:p,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:s,onPaneContextMenu:i,onPaneScroll:o,panOnDrag:V,isSelecting:!!U,selectionMode:f,selectionKeyPressed:O,selectionOnDrag:Y,children:[e,z&&c.jsx(a0,{onSelectionContextMenu:m,noPanClassName:_,disableKeyboardA11y:M})]})})}ho.displayName="FlowRenderer";const l0=$.memo(ho),u0=e=>t=>e?Ei(t.nodeLookup,{x:0,y:0,width:t.width,height:t.height},t.transform,!0).map(n=>n.id):Array.from(t.nodeLookup.keys());function d0(e){return Q($.useCallback(u0(e),[e]),re)}const f0=e=>e.updateNodeInternals;function h0(){const e=Q(f0),[t]=$.useState(()=>typeof ResizeObserver>"u"?null:new ResizeObserver(n=>{const r=new Map;n.forEach(s=>{const i=s.target.getAttribute("data-id");r.set(i,{id:i,nodeElement:s.target,force:!0})}),e(r)}));return $.useEffect(()=>()=>{t==null||t.disconnect()},[t]),t}function p0({node:e,nodeType:t,hasDimensions:n,resizeObserver:r}){const s=te(),i=$.useRef(null),o=$.useRef(null),a=$.useRef(e.sourcePosition),l=$.useRef(e.targetPosition),u=$.useRef(t),d=n&&!!e.internals.handleBounds;return $.useEffect(()=>{i.current&&!e.hidden&&(!d||o.current!==i.current)&&(o.current&&(r==null||r.unobserve(o.current)),r==null||r.observe(i.current),o.current=i.current)},[d,e.hidden]),$.useEffect(()=>()=>{o.current&&(r==null||r.unobserve(o.current),o.current=null)},[]),$.useEffect(()=>{if(i.current){const f=u.current!==t,h=a.current!==e.sourcePosition,p=l.current!==e.targetPosition;(f||h||p)&&(u.current=t,a.current=e.sourcePosition,l.current=e.targetPosition,s.getState().updateNodeInternals(new Map([[e.id,{id:e.id,nodeElement:i.current,force:!0}]])))}},[e.id,t,e.sourcePosition,e.targetPosition]),i}function g0({id:e,onClick:t,onMouseEnter:n,onMouseMove:r,onMouseLeave:s,onContextMenu:i,onDoubleClick:o,nodesDraggable:a,elementsSelectable:l,nodesConnectable:u,nodesFocusable:d,resizeObserver:f,noDragClassName:h,noPanClassName:p,disableKeyboardA11y:g,rfId:x,nodeTypes:v,nodeExtent:y,nodeClickDistance:N,onError:b}){const{node:w,internals:C,isParent:L}=Q(I=>{const q=I.nodeLookup.get(e),K=I.parentLookup.has(e);return{node:q,internals:q.internals,isParent:K}},re);let E=w.type||"default",R=(v==null?void 0:v[E])||Es[E];R===void 0&&(b==null||b("003",Se.error003(E)),E="default",R=Es.default);const D=!!(w.draggable||a&&typeof w.draggable>"u"),P=!!(w.selectable||l&&typeof w.selectable>"u"),T=!!(w.connectable||u&&typeof w.connectable>"u"),F=!!(w.focusable||d&&typeof w.focusable>"u"),A=te(),m=Ai(w),k=p0({node:w,nodeType:E,hasDimensions:m,resizeObserver:f}),_=lo({nodeRef:k,disabled:w.hidden||!D,noDragClassName:h,handleSelector:w.dragHandle,nodeId:e,isSelectable:P,nodeClickDistance:N}),M=uo();if(w.hidden)return null;const S=je(w),j=i0(w),z=P||D||t||n||r||s,H=n?I=>n(I,{...C.userNode}):void 0,O=r?I=>r(I,{...C.userNode}):void 0,X=s?I=>s(I,{...C.userNode}):void 0,V=i?I=>i(I,{...C.userNode}):void 0,B=o?I=>o(I,{...C.userNode}):void 0,Y=I=>{const{selectNodesOnDrag:q,nodeDragThreshold:K}=A.getState();P&&(!q||!D||K>0)&&or({id:e,store:A,nodeRef:k}),t&&t(I,{...C.userNode})},U=I=>{if(!(tr(I.nativeEvent)||g))if(_i.includes(I.key)&&P){const q=I.key==="Escape";or({id:e,store:A,unselect:q,nodeRef:k})}else D&&w.selected&&Object.prototype.hasOwnProperty.call(sn,I.key)&&(I.preventDefault(),A.setState({ariaLiveMessage:`Moved selected node ${I.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~C.positionAbsolute.x}, y: ${~~C.positionAbsolute.y}`}),M({direction:sn[I.key],factor:I.shiftKey?4:1}))};return c.jsx("div",{className:se(["react-flow__node",`react-flow__node-${E}`,{[p]:D},w.className,{selected:w.selected,selectable:P,parent:L,draggable:D,dragging:_}]),ref:k,style:{zIndex:C.z,transform:`translate(${C.positionAbsolute.x}px,${C.positionAbsolute.y}px)`,pointerEvents:z?"all":"none",visibility:m?"visible":"hidden",...w.style,...j},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:H,onMouseMove:O,onMouseLeave:X,onContextMenu:V,onClick:Y,onDoubleClick:B,onKeyDown:F?U:void 0,tabIndex:F?0:void 0,role:F?"button":void 0,"aria-describedby":g?void 0:`${ro}-${x}`,"aria-label":w.ariaLabel,children:c.jsx(Zh,{value:e,children:c.jsx(R,{id:e,data:w.data,type:E,positionAbsoluteX:C.positionAbsolute.x,positionAbsoluteY:C.positionAbsolute.y,selected:w.selected,selectable:P,draggable:D,deletable:w.deletable??!0,isConnectable:T,sourcePosition:w.sourcePosition,targetPosition:w.targetPosition,dragging:_,dragHandle:w.dragHandle,zIndex:C.z,parentId:w.parentId,...S})})})}const m0=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function po(e){const{nodesDraggable:t,nodesConnectable:n,nodesFocusable:r,elementsSelectable:s,onError:i}=Q(m0,re),o=d0(e.onlyRenderVisibleElements),a=h0();return c.jsx("div",{className:"react-flow__nodes",style:bn,children:o.map(l=>c.jsx(g0,{id:l,nodeTypes:e.nodeTypes,nodeExtent:e.nodeExtent,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,resizeObserver:a,nodesDraggable:t,nodesConnectable:n,nodesFocusable:r,elementsSelectable:s,nodeClickDistance:e.nodeClickDistance,onError:i},l))})}po.displayName="NodeRenderer";const x0=$.memo(po);function y0(e){return Q($.useCallback(n=>{if(!e)return n.edges.map(s=>s.id);const r=[];if(n.width&&n.height)for(const s of n.edges){const i=n.nodeLookup.get(s.source),o=n.nodeLookup.get(s.target);i&&o&&tf({sourceNode:i,targetNode:o,width:n.width,height:n.height,transform:n.transform})&&r.push(s.id)}return r},[e]),re)}const w0=({color:e="none",strokeWidth:t=1})=>c.jsx("polyline",{style:{stroke:e,strokeWidth:t},strokeLinecap:"round",strokeLinejoin:"round",fill:"none",points:"-5,-4 0,0 -5,4"}),b0=({color:e="none",strokeWidth:t=1})=>c.jsx("polyline",{style:{stroke:e,fill:e,strokeWidth:t},strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"}),$s={[tn.Arrow]:w0,[tn.ArrowClosed]:b0};function v0(e){const t=te();return $.useMemo(()=>{var s,i;return Object.prototype.hasOwnProperty.call($s,e)?$s[e]:((i=(s=t.getState()).onError)==null||i.call(s,"009",Se.error009(e)),null)},[e])}const N0=({id:e,type:t,color:n,width:r=12.5,height:s=12.5,markerUnits:i="strokeWidth",strokeWidth:o,orient:a="auto-start-reverse"})=>{const l=v0(t);return l?c.jsx("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${r}`,markerHeight:`${s}`,viewBox:"-10 -10 20 20",markerUnits:i,orient:a,refX:"0",refY:"0",children:c.jsx(l,{color:n,strokeWidth:o})}):null},go=({defaultColor:e,rfId:t})=>{const n=Q(i=>i.edges),r=Q(i=>i.defaultEdgeOptions),s=$.useMemo(()=>uf(n,{id:t,defaultColor:e,defaultMarkerStart:r==null?void 0:r.markerStart,defaultMarkerEnd:r==null?void 0:r.markerEnd}),[n,r,t,e]);return s.length?c.jsx("svg",{className:"react-flow__marker",children:c.jsx("defs",{children:s.map(i=>c.jsx(N0,{id:i.id,type:i.type,color:i.color,width:i.width,height:i.height,markerUnits:i.markerUnits,strokeWidth:i.strokeWidth,orient:i.orient},i.id))})}):null};go.displayName="MarkerDefinitions";var _0=$.memo(go);function mo({x:e,y:t,label:n,labelStyle:r={},labelShowBg:s=!0,labelBgStyle:i={},labelBgPadding:o=[2,4],labelBgBorderRadius:a=2,children:l,className:u,...d}){const[f,h]=$.useState({x:1,y:0,width:0,height:0}),p=se(["react-flow__edge-textwrapper",u]),g=$.useRef(null);return $.useEffect(()=>{if(g.current){const x=g.current.getBBox();h({x:x.x,y:x.y,width:x.width,height:x.height})}},[n]),typeof n>"u"||!n?null:c.jsxs("g",{transform:`translate(${e-f.width/2} ${t-f.height/2})`,className:p,visibility:f.width?"visible":"hidden",...d,children:[s&&c.jsx("rect",{width:f.width+2*o[0],x:-o[0],y:-o[1],height:f.height+2*o[1],className:"react-flow__edge-textbg",style:i,rx:a,ry:a}),c.jsx("text",{className:"react-flow__edge-text",y:f.height/2,dy:"0.3em",ref:g,style:r,children:n}),l]})}mo.displayName="EdgeText";const k0=$.memo(mo);function vn({path:e,labelX:t,labelY:n,label:r,labelStyle:s,labelShowBg:i,labelBgStyle:o,labelBgPadding:a,labelBgBorderRadius:l,interactionWidth:u=20,...d}){return c.jsxs(c.Fragment,{children:[c.jsx("path",{...d,d:e,fill:"none",className:se(["react-flow__edge-path",d.className])}),u&&c.jsx("path",{d:e,fill:"none",strokeOpacity:0,strokeWidth:u,className:"react-flow__edge-interaction"}),r&&he(t)&&he(n)?c.jsx(k0,{x:t,y:n,label:r,labelStyle:s,labelShowBg:i,labelBgStyle:o,labelBgPadding:a,labelBgBorderRadius:l}):null]})}function Ms({pos:e,x1:t,y1:n,x2:r,y2:s}){return e===G.Left||e===G.Right?[.5*(t+r),n]:[t,.5*(n+s)]}function xo({sourceX:e,sourceY:t,sourcePosition:n=G.Bottom,targetX:r,targetY:s,targetPosition:i=G.Top}){const[o,a]=Ms({pos:n,x1:e,y1:t,x2:r,y2:s}),[l,u]=Ms({pos:i,x1:r,y1:s,x2:e,y2:t}),[d,f,h,p]=Ri({sourceX:e,sourceY:t,targetX:r,targetY:s,sourceControlX:o,sourceControlY:a,targetControlX:l,targetControlY:u});return[`M${e},${t} C${o},${a} ${l},${u} ${r},${s}`,d,f,h,p]}function yo(e){return $.memo(({id:t,sourceX:n,sourceY:r,targetX:s,targetY:i,sourcePosition:o=G.Bottom,targetPosition:a=G.Top,label:l,labelStyle:u,labelShowBg:d,labelBgStyle:f,labelBgPadding:h,labelBgBorderRadius:p,style:g,markerEnd:x,markerStart:v,interactionWidth:y})=>{const[N,b,w]=xo({sourceX:n,sourceY:r,sourcePosition:o,targetX:s,targetY:i,targetPosition:a}),C=e.isInternal?void 0:t;return c.jsx(vn,{id:C,path:N,labelX:b,labelY:w,label:l,labelStyle:u,labelShowBg:d,labelBgStyle:f,labelBgPadding:h,labelBgBorderRadius:p,style:g,markerEnd:x,markerStart:v,interactionWidth:y})})}const S0=yo({isInternal:!1}),wo=yo({isInternal:!0});S0.displayName="SimpleBezierEdge";wo.displayName="SimpleBezierEdgeInternal";function bo(e){return $.memo(({id:t,sourceX:n,sourceY:r,targetX:s,targetY:i,label:o,labelStyle:a,labelShowBg:l,labelBgStyle:u,labelBgPadding:d,labelBgBorderRadius:f,style:h,sourcePosition:p=G.Bottom,targetPosition:g=G.Top,markerEnd:x,markerStart:v,pathOptions:y,interactionWidth:N})=>{const[b,w,C]=nr({sourceX:n,sourceY:r,sourcePosition:p,targetX:s,targetY:i,targetPosition:g,borderRadius:y==null?void 0:y.borderRadius,offset:y==null?void 0:y.offset}),L=e.isInternal?void 0:t;return c.jsx(vn,{id:L,path:b,labelX:w,labelY:C,label:o,labelStyle:a,labelShowBg:l,labelBgStyle:u,labelBgPadding:d,labelBgBorderRadius:f,style:h,markerEnd:x,markerStart:v,interactionWidth:N})})}const vo=bo({isInternal:!1}),No=bo({isInternal:!0});vo.displayName="SmoothStepEdge";No.displayName="SmoothStepEdgeInternal";function _o(e){return $.memo(({id:t,...n})=>{var s;const r=e.isInternal?void 0:t;return c.jsx(vo,{...n,id:r,pathOptions:$.useMemo(()=>{var i;return{borderRadius:0,offset:(i=n.pathOptions)==null?void 0:i.offset}},[(s=n.pathOptions)==null?void 0:s.offset])})})}const j0=_o({isInternal:!1}),ko=_o({isInternal:!0});j0.displayName="StepEdge";ko.displayName="StepEdgeInternal";function So(e){return $.memo(({id:t,sourceX:n,sourceY:r,targetX:s,targetY:i,label:o,labelStyle:a,labelShowBg:l,labelBgStyle:u,labelBgPadding:d,labelBgBorderRadius:f,style:h,markerEnd:p,markerStart:g,interactionWidth:x})=>{const[v,y,N]=Fi({sourceX:n,sourceY:r,targetX:s,targetY:i}),b=e.isInternal?void 0:t;return c.jsx(vn,{id:b,path:v,labelX:y,labelY:N,label:o,labelStyle:a,labelShowBg:l,labelBgStyle:u,labelBgPadding:d,labelBgBorderRadius:f,style:h,markerEnd:p,markerStart:g,interactionWidth:x})})}const E0=So({isInternal:!1}),jo=So({isInternal:!0});E0.displayName="StraightEdge";jo.displayName="StraightEdgeInternal";function Eo(e){return $.memo(({id:t,sourceX:n,sourceY:r,targetX:s,targetY:i,sourcePosition:o=G.Bottom,targetPosition:a=G.Top,label:l,labelStyle:u,labelShowBg:d,labelBgStyle:f,labelBgPadding:h,labelBgBorderRadius:p,style:g,markerEnd:x,markerStart:v,pathOptions:y,interactionWidth:N})=>{const[b,w,C]=Li({sourceX:n,sourceY:r,sourcePosition:o,targetX:s,targetY:i,targetPosition:a,curvature:y==null?void 0:y.curvature}),L=e.isInternal?void 0:t;return c.jsx(vn,{id:L,path:b,labelX:w,labelY:C,label:l,labelStyle:u,labelShowBg:d,labelBgStyle:f,labelBgPadding:h,labelBgBorderRadius:p,style:g,markerEnd:x,markerStart:v,interactionWidth:N})})}const C0=Eo({isInternal:!1}),Co=Eo({isInternal:!0});C0.displayName="BezierEdge";Co.displayName="BezierEdgeInternal";const zs={default:Co,straight:jo,step:ko,smoothstep:No,simplebezier:wo},Is={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null},$0=(e,t,n)=>n===G.Left?e-t:n===G.Right?e+t:e,M0=(e,t,n)=>n===G.Top?e-t:n===G.Bottom?e+t:e,As="react-flow__edgeupdater";function Ps({position:e,centerX:t,centerY:n,radius:r=10,onMouseDown:s,onMouseEnter:i,onMouseOut:o,type:a}){return c.jsx("circle",{onMouseDown:s,onMouseEnter:i,onMouseOut:o,className:se([As,`${As}-${a}`]),cx:$0(t,r,e),cy:M0(n,r,e),r,stroke:"transparent",fill:"transparent"})}function z0({isReconnectable:e,reconnectRadius:t,edge:n,sourceX:r,sourceY:s,targetX:i,targetY:o,sourcePosition:a,targetPosition:l,onReconnect:u,onReconnectStart:d,onReconnectEnd:f,setReconnecting:h,setUpdateHover:p}){const g=te(),x=(w,C)=>{if(w.button!==0)return;const{autoPanOnConnect:L,domNode:E,isValidConnection:R,connectionMode:D,connectionRadius:P,lib:T,onConnectStart:F,onConnectEnd:A,cancelConnection:m,nodeLookup:k,rfId:_,panBy:M,updateConnection:S}=g.getState(),j=C.type==="target";h(!0),d==null||d(w,n,C.type);const z=(O,X)=>{h(!1),f==null||f(O,n,C.type,X)},H=O=>u==null?void 0:u(n,O);ir.onPointerDown(w.nativeEvent,{autoPanOnConnect:L,connectionMode:D,connectionRadius:P,domNode:E,handleId:C.id,nodeId:C.nodeId,nodeLookup:k,isTarget:j,edgeUpdaterType:C.type,lib:T,flowId:_,cancelConnection:m,panBy:M,isValidConnection:R,onConnect:H,onConnectStart:F,onConnectEnd:A,onReconnectEnd:z,updateConnection:S,getTransform:()=>g.getState().transform,getFromHandle:()=>g.getState().connection.fromHandle})},v=w=>x(w,{nodeId:n.target,id:n.targetHandle??null,type:"target"}),y=w=>x(w,{nodeId:n.source,id:n.sourceHandle??null,type:"source"}),N=()=>p(!0),b=()=>p(!1);return c.jsxs(c.Fragment,{children:[(e===!0||e==="source")&&c.jsx(Ps,{position:a,centerX:r,centerY:s,radius:t,onMouseDown:v,onMouseEnter:N,onMouseOut:b,type:"source"}),(e===!0||e==="target")&&c.jsx(Ps,{position:l,centerX:i,centerY:o,radius:t,onMouseDown:y,onMouseEnter:N,onMouseOut:b,type:"target"})]})}function I0({id:e,edgesFocusable:t,edgesReconnectable:n,elementsSelectable:r,onClick:s,onDoubleClick:i,onContextMenu:o,onMouseEnter:a,onMouseMove:l,onMouseLeave:u,reconnectRadius:d,onReconnect:f,onReconnectStart:h,onReconnectEnd:p,rfId:g,edgeTypes:x,noPanClassName:v,onError:y,disableKeyboardA11y:N}){let b=Q(W=>W.edgeLookup.get(e));const w=Q(W=>W.defaultEdgeOptions);b=w?{...w,...b}:b;let C=b.type||"default",L=(x==null?void 0:x[C])||zs[C];L===void 0&&(y==null||y("011",Se.error011(C)),C="default",L=zs.default);const E=!!(b.focusable||t&&typeof b.focusable>"u"),R=typeof f<"u"&&(b.reconnectable||n&&typeof b.reconnectable>"u"),D=!!(b.selectable||r&&typeof b.selectable>"u"),P=$.useRef(null),[T,F]=$.useState(!1),[A,m]=$.useState(!1),k=te(),{zIndex:_,sourceX:M,sourceY:S,targetX:j,targetY:z,sourcePosition:H,targetPosition:O}=Q($.useCallback(W=>{const J=W.nodeLookup.get(b.source),ee=W.nodeLookup.get(b.target);if(!J||!ee)return{zIndex:b.zIndex,...Is};const oe=lf({id:e,sourceNode:J,targetNode:ee,sourceHandle:b.sourceHandle||null,targetHandle:b.targetHandle||null,connectionMode:W.connectionMode,onError:y});return{zIndex:ef({selected:b.selected,zIndex:b.zIndex,sourceNode:J,targetNode:ee,elevateOnSelect:W.elevateEdgesOnSelect}),...oe||Is}},[b.source,b.target,b.sourceHandle,b.targetHandle,b.selected,b.zIndex]),re),X=$.useMemo(()=>b.markerStart?`url('#${rr(b.markerStart,g)}')`:void 0,[b.markerStart,g]),V=$.useMemo(()=>b.markerEnd?`url('#${rr(b.markerEnd,g)}')`:void 0,[b.markerEnd,g]);if(b.hidden||M===null||S===null||j===null||z===null)return null;const B=W=>{var Ee;const{addSelectedEdges:J,unselectNodesAndEdges:ee,multiSelectionActive:oe}=k.getState();D&&(k.setState({nodesSelectionActive:!1}),b.selected&&oe?(ee({nodes:[],edges:[b]}),(Ee=P.current)==null||Ee.blur()):J([e])),s&&s(W,b)},Y=i?W=>{i(W,{...b})}:void 0,U=o?W=>{o(W,{...b})}:void 0,I=a?W=>{a(W,{...b})}:void 0,q=l?W=>{l(W,{...b})}:void 0,K=u?W=>{u(W,{...b})}:void 0,Z=W=>{var J;if(!N&&_i.includes(W.key)&&D){const{unselectNodesAndEdges:ee,addSelectedEdges:oe}=k.getState();W.key==="Escape"?((J=P.current)==null||J.blur(),ee({edges:[b]})):oe([e])}};return c.jsx("svg",{style:{zIndex:_},children:c.jsxs("g",{className:se(["react-flow__edge",`react-flow__edge-${C}`,b.className,v,{selected:b.selected,animated:b.animated,inactive:!D&&!s,updating:T,selectable:D}]),onClick:B,onDoubleClick:Y,onContextMenu:U,onMouseEnter:I,onMouseMove:q,onMouseLeave:K,onKeyDown:E?Z:void 0,tabIndex:E?0:void 0,role:E?"button":"img","data-id":e,"data-testid":`rf__edge-${e}`,"aria-label":b.ariaLabel===null?void 0:b.ariaLabel||`Edge from ${b.source} to ${b.target}`,"aria-describedby":E?`${so}-${g}`:void 0,ref:P,children:[!A&&c.jsx(L,{id:e,source:b.source,target:b.target,type:b.type,selected:b.selected,animated:b.animated,selectable:D,deletable:b.deletable??!0,label:b.label,labelStyle:b.labelStyle,labelShowBg:b.labelShowBg,labelBgStyle:b.labelBgStyle,labelBgPadding:b.labelBgPadding,labelBgBorderRadius:b.labelBgBorderRadius,sourceX:M,sourceY:S,targetX:j,targetY:z,sourcePosition:H,targetPosition:O,data:b.data,style:b.style,sourceHandleId:b.sourceHandle,targetHandleId:b.targetHandle,markerStart:X,markerEnd:V,pathOptions:"pathOptions"in b?b.pathOptions:void 0,interactionWidth:b.interactionWidth}),R&&c.jsx(z0,{edge:b,isReconnectable:R,reconnectRadius:d,onReconnect:f,onReconnectStart:h,onReconnectEnd:p,sourceX:M,sourceY:S,targetX:j,targetY:z,sourcePosition:H,targetPosition:O,setUpdateHover:F,setReconnecting:m})]})})}const A0=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function $o({defaultMarkerColor:e,onlyRenderVisibleElements:t,rfId:n,edgeTypes:r,noPanClassName:s,onReconnect:i,onEdgeContextMenu:o,onEdgeMouseEnter:a,onEdgeMouseMove:l,onEdgeMouseLeave:u,onEdgeClick:d,reconnectRadius:f,onEdgeDoubleClick:h,onReconnectStart:p,onReconnectEnd:g,disableKeyboardA11y:x}){const{edgesFocusable:v,edgesReconnectable:y,elementsSelectable:N,onError:b}=Q(A0,re),w=y0(t);return c.jsxs("div",{className:"react-flow__edges",children:[c.jsx(_0,{defaultColor:e,rfId:n}),w.map(C=>c.jsx(I0,{id:C,edgesFocusable:v,edgesReconnectable:y,elementsSelectable:N,noPanClassName:s,onReconnect:i,onContextMenu:o,onMouseEnter:a,onMouseMove:l,onMouseLeave:u,onClick:d,reconnectRadius:f,onDoubleClick:h,onReconnectStart:p,onReconnectEnd:g,rfId:n,onError:b,edgeTypes:r,disableKeyboardA11y:x},C))]})}$o.displayName="EdgeRenderer";const P0=$.memo($o),T0=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function D0({children:e}){const t=Q(T0);return c.jsx("div",{className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:t},children:e})}function R0(e){const t=_r(),n=$.useRef(!1);$.useEffect(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}const L0=e=>{var t;return(t=e.panZoom)==null?void 0:t.syncViewport};function H0(e){const t=Q(L0),n=te();return $.useEffect(()=>{e&&(t==null||t(e),n.setState({transform:[e.x,e.y,e.zoom]}))},[e,t]),null}function F0(e){return e.connection.inProgress?{...e.connection,to:$t(e.connection.to,e.transform)}:{...e.connection}}function O0(e){return F0}function B0(e){const t=O0();return Q(t,re)}const V0=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function q0({containerStyle:e,style:t,type:n,component:r}){const{nodesConnectable:s,width:i,height:o,isValid:a,inProgress:l}=Q(V0,re);return!(i&&s&&l)?null:c.jsx("svg",{style:e,width:i,height:o,className:"react-flow__connectionline react-flow__container",children:c.jsx("g",{className:se(["react-flow__connection",Si(a)]),children:c.jsx(Mo,{style:t,type:n,CustomComponent:r,isValid:a})})})}const Mo=({style:e,type:t=Ie.Bezier,CustomComponent:n,isValid:r})=>{const{inProgress:s,from:i,fromNode:o,fromHandle:a,fromPosition:l,to:u,toNode:d,toHandle:f,toPosition:h}=B0();if(!s)return;if(n)return c.jsx(n,{connectionLineType:t,connectionLineStyle:e,fromNode:o,fromHandle:a,fromX:i.x,fromY:i.y,toX:u.x,toY:u.y,fromPosition:l,toPosition:h,connectionStatus:Si(r),toNode:d,toHandle:f});let p="";const g={sourceX:i.x,sourceY:i.y,sourcePosition:l,targetX:u.x,targetY:u.y,targetPosition:h};switch(t){case Ie.Bezier:[p]=Li(g);break;case Ie.SimpleBezier:[p]=xo(g);break;case Ie.Step:[p]=nr({...g,borderRadius:0});break;case Ie.SmoothStep:[p]=nr(g);break;default:[p]=Fi(g)}return c.jsx("path",{d:p,fill:"none",className:"react-flow__connection-path",style:e})};Mo.displayName="ConnectionLine";const X0={};function Ts(e=X0){$.useRef(e),te(),$.useEffect(()=>{},[e])}function Y0(){te(),$.useRef(!1),$.useEffect(()=>{},[])}function zo({nodeTypes:e,edgeTypes:t,onInit:n,onNodeClick:r,onEdgeClick:s,onNodeDoubleClick:i,onEdgeDoubleClick:o,onNodeMouseEnter:a,onNodeMouseMove:l,onNodeMouseLeave:u,onNodeContextMenu:d,onSelectionContextMenu:f,onSelectionStart:h,onSelectionEnd:p,connectionLineType:g,connectionLineStyle:x,connectionLineComponent:v,connectionLineContainerStyle:y,selectionKeyCode:N,selectionOnDrag:b,selectionMode:w,multiSelectionKeyCode:C,panActivationKeyCode:L,zoomActivationKeyCode:E,deleteKeyCode:R,onlyRenderVisibleElements:D,elementsSelectable:P,defaultViewport:T,translateExtent:F,minZoom:A,maxZoom:m,preventScrolling:k,defaultMarkerColor:_,zoomOnScroll:M,zoomOnPinch:S,panOnScroll:j,panOnScrollSpeed:z,panOnScrollMode:H,zoomOnDoubleClick:O,panOnDrag:X,onPaneClick:V,onPaneMouseEnter:B,onPaneMouseMove:Y,onPaneMouseLeave:U,onPaneScroll:I,onPaneContextMenu:q,paneClickDistance:K,nodeClickDistance:Z,onEdgeContextMenu:W,onEdgeMouseEnter:J,onEdgeMouseMove:ee,onEdgeMouseLeave:oe,reconnectRadius:Ee,onReconnect:Nn,onReconnectStart:_n,onReconnectEnd:kn,noDragClassName:st,noWheelClassName:Sn,noPanClassName:it,disableKeyboardA11y:ot,nodeExtent:jn,rfId:at,viewport:ct,onViewportChange:Mt}){return Ts(e),Ts(t),Y0(),R0(n),H0(ct),c.jsx(l0,{onPaneClick:V,onPaneMouseEnter:B,onPaneMouseMove:Y,onPaneMouseLeave:U,onPaneContextMenu:q,onPaneScroll:I,paneClickDistance:K,deleteKeyCode:R,selectionKeyCode:N,selectionOnDrag:b,selectionMode:w,onSelectionStart:h,onSelectionEnd:p,multiSelectionKeyCode:C,panActivationKeyCode:L,zoomActivationKeyCode:E,elementsSelectable:P,zoomOnScroll:M,zoomOnPinch:S,zoomOnDoubleClick:O,panOnScroll:j,panOnScrollSpeed:z,panOnScrollMode:H,panOnDrag:X,defaultViewport:T,translateExtent:F,minZoom:A,maxZoom:m,onSelectionContextMenu:f,preventScrolling:k,noDragClassName:st,noWheelClassName:Sn,noPanClassName:it,disableKeyboardA11y:ot,onViewportChange:Mt,isControlledViewport:!!ct,children:c.jsxs(D0,{children:[c.jsx(P0,{edgeTypes:t,onEdgeClick:s,onEdgeDoubleClick:o,onReconnect:Nn,onReconnectStart:_n,onReconnectEnd:kn,onlyRenderVisibleElements:D,onEdgeContextMenu:W,onEdgeMouseEnter:J,onEdgeMouseMove:ee,onEdgeMouseLeave:oe,reconnectRadius:Ee,defaultMarkerColor:_,noPanClassName:it,disableKeyboardA11y:ot,rfId:at}),c.jsx(q0,{style:x,type:g,component:v,containerStyle:y}),c.jsx("div",{className:"react-flow__edgelabel-renderer"}),c.jsx(x0,{nodeTypes:e,onNodeClick:r,onNodeDoubleClick:i,onNodeMouseEnter:a,onNodeMouseMove:l,onNodeMouseLeave:u,onNodeContextMenu:d,nodeClickDistance:Z,onlyRenderVisibleElements:D,noPanClassName:it,noDragClassName:st,disableKeyboardA11y:ot,nodeExtent:jn,rfId:at}),c.jsx("div",{className:"react-flow__viewport-portal"})]})})}zo.displayName="GraphView";const W0=$.memo(zo),Ds=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:s,height:i,fitView:o,nodeOrigin:a,nodeExtent:l}={})=>{const u=new Map,d=new Map,f=new Map,h=new Map,p=r??t??[],g=n??e??[],x=a??[0,0],v=l??bt;Bi(f,h,p),sr(g,u,d,{nodeOrigin:x,nodeExtent:v,elevateNodesOnSelect:!1});let y=[0,0,1];if(o&&s&&i){const N=Ct(u,{filter:L=>!!((L.width||L.initialWidth)&&(L.height||L.initialHeight))}),{x:b,y:w,zoom:C}=xr(N,s,i,.5,2,.1);y=[b,w,C]}return{rfId:"1",width:0,height:0,transform:y,nodes:g,nodeLookup:u,parentLookup:d,edges:p,edgeLookup:h,connectionLookup:f,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:n!==void 0,hasDefaultEdges:r!==void 0,panZoom:null,minZoom:.5,maxZoom:2,translateExtent:bt,nodeExtent:v,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:Je.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:x,nodeDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!1,fitViewOnInit:!1,fitViewDone:!1,fitViewOnInitOptions:void 0,selectNodesOnDrag:!0,multiSelectionActive:!1,connection:{...ki},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanSpeed:15,connectionRadius:20,onError:Qd,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1}},K0=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:s,height:i,fitView:o,nodeOrigin:a,nodeExtent:l})=>dh((u,d)=>({...Ds({nodes:e,edges:t,width:s,height:i,fitView:o,nodeOrigin:a,nodeExtent:l,defaultNodes:n,defaultEdges:r}),setNodes:f=>{const{nodeLookup:h,parentLookup:p,nodeOrigin:g,elevateNodesOnSelect:x}=d();sr(f,h,p,{nodeOrigin:g,nodeExtent:l,elevateNodesOnSelect:x,checkEquality:!0}),u({nodes:f})},setEdges:f=>{const{connectionLookup:h,edgeLookup:p}=d();Bi(h,p,f),u({edges:f})},setDefaultNodesAndEdges:(f,h)=>{if(f){const{setNodes:p}=d();p(f),u({hasDefaultNodes:!0})}if(h){const{setEdges:p}=d();p(h),u({hasDefaultEdges:!0})}},updateNodeInternals:(f,h={triggerFitView:!0})=>{const{triggerNodeChanges:p,nodeLookup:g,parentLookup:x,fitViewOnInit:v,fitViewDone:y,fitViewOnInitOptions:N,domNode:b,nodeOrigin:w,nodeExtent:C,debug:L,fitViewSync:E}=d(),{changes:R,updatedInternals:D}=gf(f,g,x,b,w,C);if(D){if(ff(g,x,{nodeOrigin:w,nodeExtent:C}),h.triggerFitView){let P=y;!y&&v&&(P=E({...N,nodes:N==null?void 0:N.nodes})),u({fitViewDone:P})}else u({});(R==null?void 0:R.length)>0&&(L&&console.log("React Flow: trigger node changes",R),p==null||p(R))}},updateNodePositions:(f,h=!1)=>{const p=[],g=[];for(const[x,v]of f){const y=!!(v!=null&&v.expandParent&&(v!=null&&v.parentId)&&(v!=null&&v.position)),N={id:x,type:"position",position:y?{x:Math.max(0,v.position.x),y:Math.max(0,v.position.y)}:v.position,dragging:h};y&&p.push({id:x,parentId:v.parentId,rect:{...v.internals.positionAbsolute,width:v.measured.width,height:v.measured.height}}),g.push(N)}if(p.length>0){const{nodeLookup:x,parentLookup:v,nodeOrigin:y}=d(),N=vr(p,x,v,y);g.push(...N)}d().triggerNodeChanges(g)},triggerNodeChanges:f=>{const{onNodesChange:h,setNodes:p,nodes:g,hasDefaultNodes:x,debug:v}=d();if(f!=null&&f.length){if(x){const y=Ih(f,g);p(y)}v&&console.log("React Flow: trigger node changes",f),h==null||h(f)}},triggerEdgeChanges:f=>{const{onEdgesChange:h,setEdges:p,edges:g,hasDefaultEdges:x,debug:v}=d();if(f!=null&&f.length){if(x){const y=Ah(f,g);p(y)}v&&console.log("React Flow: trigger edge changes",f),h==null||h(f)}},addSelectedNodes:f=>{const{multiSelectionActive:h,edgeLookup:p,nodeLookup:g,triggerNodeChanges:x,triggerEdgeChanges:v}=d();if(h){const y=f.map(N=>De(N,!0));x(y);return}x(We(g,new Set([...f]),!0)),v(We(p))},addSelectedEdges:f=>{const{multiSelectionActive:h,edgeLookup:p,nodeLookup:g,triggerNodeChanges:x,triggerEdgeChanges:v}=d();if(h){const y=f.map(N=>De(N,!0));v(y);return}v(We(p,new Set([...f]))),x(We(g,new Set,!0))},unselectNodesAndEdges:({nodes:f,edges:h}={})=>{const{edges:p,nodes:g,nodeLookup:x,triggerNodeChanges:v,triggerEdgeChanges:y}=d(),N=f||g,b=h||p,w=N.map(L=>{const E=x.get(L.id);return E&&(E.selected=!1),De(L.id,!1)}),C=b.map(L=>De(L.id,!1));v(w),y(C)},setMinZoom:f=>{const{panZoom:h,maxZoom:p}=d();h==null||h.setScaleExtent([f,p]),u({minZoom:f})},setMaxZoom:f=>{const{panZoom:h,minZoom:p}=d();h==null||h.setScaleExtent([p,f]),u({maxZoom:f})},setTranslateExtent:f=>{var h;(h=d().panZoom)==null||h.setTranslateExtent(f),u({translateExtent:f})},setPaneClickDistance:f=>{var h;(h=d().panZoom)==null||h.setClickDistance(f)},resetSelectedElements:()=>{const{edges:f,nodes:h,triggerNodeChanges:p,triggerEdgeChanges:g}=d(),x=h.reduce((y,N)=>N.selected?[...y,De(N.id,!1)]:y,[]),v=f.reduce((y,N)=>N.selected?[...y,De(N.id,!1)]:y,[]);p(x),g(v)},setNodeExtent:f=>{const{nodes:h,nodeLookup:p,parentLookup:g,nodeOrigin:x,elevateNodesOnSelect:v,nodeExtent:y}=d();f[0][0]===y[0][0]&&f[0][1]===y[0][1]&&f[1][0]===y[1][0]&&f[1][1]===y[1][1]||(sr(h,p,g,{nodeOrigin:x,nodeExtent:f,elevateNodesOnSelect:v,checkEquality:!1}),u({nodeExtent:f}))},panBy:f=>{const{transform:h,width:p,height:g,panZoom:x,translateExtent:v}=d();return mf({delta:f,panZoom:x,transform:h,translateExtent:v,width:p,height:g})},fitView:f=>{const{panZoom:h,width:p,height:g,minZoom:x,maxZoom:v,nodeLookup:y}=d();if(!h)return Promise.resolve(!1);const N=Qn(y,f);return Jn({nodes:N,width:p,height:g,panZoom:h,minZoom:x,maxZoom:v},f)},fitViewSync:f=>{const{panZoom:h,width:p,height:g,minZoom:x,maxZoom:v,nodeLookup:y}=d();if(!h)return!1;const N=Qn(y,f);return Jn({nodes:N,width:p,height:g,panZoom:h,minZoom:x,maxZoom:v},f),N.size>0},cancelConnection:()=>{u({connection:{...ki}})},updateConnection:f=>{u({connection:f})},reset:()=>u({...Ds()})}),Object.is);function G0({initialNodes:e,initialEdges:t,defaultNodes:n,defaultEdges:r,initialWidth:s,initialHeight:i,fitView:o,nodeOrigin:a,nodeExtent:l,children:u}){const[d]=$.useState(()=>K0({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:s,height:i,fitView:o,nodeOrigin:a,nodeExtent:l}));return c.jsx(fh,{value:d,children:c.jsx(Rh,{children:u})})}function U0({children:e,nodes:t,edges:n,defaultNodes:r,defaultEdges:s,width:i,height:o,fitView:a,nodeOrigin:l,nodeExtent:u}){return $.useContext(wn)?c.jsx(c.Fragment,{children:e}):c.jsx(G0,{initialNodes:t,initialEdges:n,defaultNodes:r,defaultEdges:s,initialWidth:i,initialHeight:o,fitView:a,nodeOrigin:l,nodeExtent:u,children:e})}const Z0={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};function Q0({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,className:s,nodeTypes:i,edgeTypes:o,onNodeClick:a,onEdgeClick:l,onInit:u,onMove:d,onMoveStart:f,onMoveEnd:h,onConnect:p,onConnectStart:g,onConnectEnd:x,onClickConnectStart:v,onClickConnectEnd:y,onNodeMouseEnter:N,onNodeMouseMove:b,onNodeMouseLeave:w,onNodeContextMenu:C,onNodeDoubleClick:L,onNodeDragStart:E,onNodeDrag:R,onNodeDragStop:D,onNodesDelete:P,onEdgesDelete:T,onDelete:F,onSelectionChange:A,onSelectionDragStart:m,onSelectionDrag:k,onSelectionDragStop:_,onSelectionContextMenu:M,onSelectionStart:S,onSelectionEnd:j,onBeforeDelete:z,connectionMode:H,connectionLineType:O=Ie.Bezier,connectionLineStyle:X,connectionLineComponent:V,connectionLineContainerStyle:B,deleteKeyCode:Y="Backspace",selectionKeyCode:U="Shift",selectionOnDrag:I=!1,selectionMode:q=vt.Full,panActivationKeyCode:K="Space",multiSelectionKeyCode:Z=rn()?"Meta":"Control",zoomActivationKeyCode:W=rn()?"Meta":"Control",snapToGrid:J,snapGrid:ee,onlyRenderVisibleElements:oe=!1,selectNodesOnDrag:Ee,nodesDraggable:Nn,nodesConnectable:_n,nodesFocusable:kn,nodeOrigin:st=io,edgesFocusable:Sn,edgesReconnectable:it,elementsSelectable:ot=!0,defaultViewport:jn=Sh,minZoom:at=.5,maxZoom:ct=2,translateExtent:Mt=bt,preventScrolling:Lo=!0,nodeExtent:En,defaultMarkerColor:Ho="#b1b1b7",zoomOnScroll:Fo=!0,zoomOnPinch:Oo=!0,panOnScroll:Bo=!1,panOnScrollSpeed:Vo=.5,panOnScrollMode:qo=He.Free,zoomOnDoubleClick:Xo=!0,panOnDrag:Yo=!0,onPaneClick:Wo,onPaneMouseEnter:Ko,onPaneMouseMove:Go,onPaneMouseLeave:Uo,onPaneScroll:Zo,onPaneContextMenu:Qo,paneClickDistance:jr=0,nodeClickDistance:Jo=0,children:ea,onReconnect:ta,onReconnectStart:na,onReconnectEnd:ra,onEdgeContextMenu:sa,onEdgeDoubleClick:ia,onEdgeMouseEnter:oa,onEdgeMouseMove:aa,onEdgeMouseLeave:ca,reconnectRadius:la=10,onNodesChange:ua,onEdgesChange:da,noDragClassName:fa="nodrag",noWheelClassName:ha="nowheel",noPanClassName:Er="nopan",fitView:Cr,fitViewOptions:pa,connectOnClick:ga,attributionPosition:ma,proOptions:xa,defaultEdgeOptions:ya,elevateNodesOnSelect:wa,elevateEdgesOnSelect:ba,disableKeyboardA11y:$r=!1,autoPanOnConnect:va,autoPanOnNodeDrag:Na,autoPanSpeed:_a,connectionRadius:ka,isValidConnection:Sa,onError:ja,style:Ea,id:Mr,nodeDragThreshold:Ca,viewport:$a,onViewportChange:Ma,width:za,height:Ia,colorMode:Aa="light",debug:Pa,...Ta},Da){const Cn=Mr||"1",Ra=$h(Aa);return c.jsx("div",{"data-testid":"rf__wrapper",...Ta,style:{...Ea,...Z0},ref:Da,className:se(["react-flow",s,Ra]),id:Mr,children:c.jsxs(U0,{nodes:e,edges:t,width:za,height:Ia,fitView:Cr,nodeOrigin:st,nodeExtent:En,children:[c.jsx(W0,{onInit:u,onNodeClick:a,onEdgeClick:l,onNodeMouseEnter:N,onNodeMouseMove:b,onNodeMouseLeave:w,onNodeContextMenu:C,onNodeDoubleClick:L,nodeTypes:i,edgeTypes:o,connectionLineType:O,connectionLineStyle:X,connectionLineComponent:V,connectionLineContainerStyle:B,selectionKeyCode:U,selectionOnDrag:I,selectionMode:q,deleteKeyCode:Y,multiSelectionKeyCode:Z,panActivationKeyCode:K,zoomActivationKeyCode:W,onlyRenderVisibleElements:oe,defaultViewport:jn,translateExtent:Mt,minZoom:at,maxZoom:ct,preventScrolling:Lo,zoomOnScroll:Fo,zoomOnPinch:Oo,zoomOnDoubleClick:Xo,panOnScroll:Bo,panOnScrollSpeed:Vo,panOnScrollMode:qo,panOnDrag:Yo,onPaneClick:Wo,onPaneMouseEnter:Ko,onPaneMouseMove:Go,onPaneMouseLeave:Uo,onPaneScroll:Zo,onPaneContextMenu:Qo,paneClickDistance:jr,nodeClickDistance:Jo,onSelectionContextMenu:M,onSelectionStart:S,onSelectionEnd:j,onReconnect:ta,onReconnectStart:na,onReconnectEnd:ra,onEdgeContextMenu:sa,onEdgeDoubleClick:ia,onEdgeMouseEnter:oa,onEdgeMouseMove:aa,onEdgeMouseLeave:ca,reconnectRadius:la,defaultMarkerColor:Ho,noDragClassName:fa,noWheelClassName:ha,noPanClassName:Er,rfId:Cn,disableKeyboardA11y:$r,nodeExtent:En,viewport:$a,onViewportChange:Ma}),c.jsx(Ch,{nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:p,onConnectStart:g,onConnectEnd:x,onClickConnectStart:v,onClickConnectEnd:y,nodesDraggable:Nn,nodesConnectable:_n,nodesFocusable:kn,edgesFocusable:Sn,edgesReconnectable:it,elementsSelectable:ot,elevateNodesOnSelect:wa,elevateEdgesOnSelect:ba,minZoom:at,maxZoom:ct,nodeExtent:En,onNodesChange:ua,onEdgesChange:da,snapToGrid:J,snapGrid:ee,connectionMode:H,translateExtent:Mt,connectOnClick:ga,defaultEdgeOptions:ya,fitView:Cr,fitViewOptions:pa,onNodesDelete:P,onEdgesDelete:T,onDelete:F,onNodeDragStart:E,onNodeDrag:R,onNodeDragStop:D,onSelectionDrag:k,onSelectionDragStart:m,onSelectionDragStop:_,onMove:d,onMoveStart:f,onMoveEnd:h,noPanClassName:Er,nodeOrigin:st,rfId:Cn,autoPanOnConnect:va,autoPanOnNodeDrag:Na,autoPanSpeed:_a,onError:ja,connectionRadius:ka,isValidConnection:Sa,selectNodesOnDrag:Ee,nodeDragThreshold:Ca,onBeforeDelete:z,paneClickDistance:jr,debug:Pa}),c.jsx(kh,{onSelectionChange:A}),ea,c.jsx(wh,{proOptions:xa,position:ma}),c.jsx(xh,{rfId:Cn,disableKeyboardA11y:$r})]})})}var J0=ao(Q0);function ep({dimensions:e,lineWidth:t,variant:n,className:r}){return c.jsx("path",{strokeWidth:t,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`,className:se(["react-flow__background-pattern",n,r])})}function tp({radius:e,className:t}){return c.jsx("circle",{cx:e,cy:e,r:e,className:se(["react-flow__background-pattern","dots",t])})}var Ne;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(Ne||(Ne={}));const np={[Ne.Dots]:1,[Ne.Lines]:1,[Ne.Cross]:6},rp=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function Io({id:e,variant:t=Ne.Dots,gap:n=20,size:r,lineWidth:s=1,offset:i=0,color:o,bgColor:a,style:l,className:u,patternClassName:d}){const f=$.useRef(null),{transform:h,patternId:p}=Q(rp,re),g=r||np[t],x=t===Ne.Dots,v=t===Ne.Cross,y=Array.isArray(n)?n:[n,n],N=[y[0]*h[2]||1,y[1]*h[2]||1],b=g*h[2],w=Array.isArray(i)?i:[i,i],C=v?[b,b]:N,L=[w[0]*h[2]||1+C[0]/2,w[1]*h[2]||1+C[1]/2],E=`${p}${e||""}`;return c.jsxs("svg",{className:se(["react-flow__background",u]),style:{...l,...bn,"--xy-background-color-props":a,"--xy-background-pattern-color-props":o},ref:f,"data-testid":"rf__background",children:[c.jsx("pattern",{id:E,x:h[0]%N[0],y:h[1]%N[1],width:N[0],height:N[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${L[0]},-${L[1]})`,children:x?c.jsx(tp,{radius:b/2,className:d}):c.jsx(ep,{dimensions:C,lineWidth:s,variant:t,className:d})}),c.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${E})`})]})}Io.displayName="Background";const sp=$.memo(Io);function ip(){return c.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",children:c.jsx("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"})})}function op(){return c.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5",children:c.jsx("path",{d:"M0 0h32v4.2H0z"})})}function ap(){return c.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30",children:c.jsx("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"})})}function cp(){return c.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:c.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"})})}function lp(){return c.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:c.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"})})}function Ht({children:e,className:t,...n}){return c.jsx("button",{type:"button",className:se(["react-flow__controls-button",t]),...n,children:e})}const up=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom});function Ao({style:e,showZoom:t=!0,showFitView:n=!0,showInteractive:r=!0,fitViewOptions:s,onZoomIn:i,onZoomOut:o,onFitView:a,onInteractiveChange:l,className:u,children:d,position:f="bottom-left",orientation:h="vertical","aria-label":p="React Flow controls"}){const g=te(),{isInteractive:x,minZoomReached:v,maxZoomReached:y}=Q(up,re),{zoomIn:N,zoomOut:b,fitView:w}=_r(),C=()=>{N(),i==null||i()},L=()=>{b(),o==null||o()},E=()=>{w(s),a==null||a()},R=()=>{g.setState({nodesDraggable:!x,nodesConnectable:!x,elementsSelectable:!x}),l==null||l(!x)},D=h==="horizontal"?"horizontal":"vertical";return c.jsxs(Nr,{className:se(["react-flow__controls",D,u]),position:f,style:e,"data-testid":"rf__controls","aria-label":p,children:[t&&c.jsxs(c.Fragment,{children:[c.jsx(Ht,{onClick:C,className:"react-flow__controls-zoomin",title:"zoom in","aria-label":"zoom in",disabled:y,children:c.jsx(ip,{})}),c.jsx(Ht,{onClick:L,className:"react-flow__controls-zoomout",title:"zoom out","aria-label":"zoom out",disabled:v,children:c.jsx(op,{})})]}),n&&c.jsx(Ht,{className:"react-flow__controls-fitview",onClick:E,title:"fit view","aria-label":"fit view",children:c.jsx(ap,{})}),r&&c.jsx(Ht,{className:"react-flow__controls-interactive",onClick:R,title:"toggle interactivity","aria-label":"toggle interactivity",children:x?c.jsx(lp,{}):c.jsx(cp,{})}),d]})}Ao.displayName="Controls";const dp=$.memo(Ao);function fp({id:e,x:t,y:n,width:r,height:s,style:i,color:o,strokeColor:a,strokeWidth:l,className:u,borderRadius:d,shapeRendering:f,selected:h,onClick:p}){const{background:g,backgroundColor:x}=i||{},v=o||g||x;return c.jsx("rect",{className:se(["react-flow__minimap-node",{selected:h},u]),x:t,y:n,rx:d,ry:d,width:r,height:s,style:{fill:v,stroke:a,strokeWidth:l},shapeRendering:f,onClick:p?y=>p(y,e):void 0})}const hp=$.memo(fp),pp=e=>e.nodes.map(t=>t.id),Fn=e=>e instanceof Function?e:()=>e;function gp({nodeStrokeColor:e,nodeColor:t,nodeClassName:n="",nodeBorderRadius:r=5,nodeStrokeWidth:s,nodeComponent:i=hp,onClick:o}){const a=Q(pp,re),l=Fn(t),u=Fn(e),d=Fn(n),f=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return c.jsx(c.Fragment,{children:a.map(h=>c.jsx(xp,{id:h,nodeColorFunc:l,nodeStrokeColorFunc:u,nodeClassNameFunc:d,nodeBorderRadius:r,nodeStrokeWidth:s,NodeComponent:i,onClick:o,shapeRendering:f},h))})}function mp({id:e,nodeColorFunc:t,nodeStrokeColorFunc:n,nodeClassNameFunc:r,nodeBorderRadius:s,nodeStrokeWidth:i,shapeRendering:o,NodeComponent:a,onClick:l}){const{node:u,x:d,y:f,width:h,height:p}=Q(g=>{const x=g.nodeLookup.get(e),{x:v,y}=x.internals.positionAbsolute,{width:N,height:b}=je(x);return{node:x,x:v,y,width:N,height:b}},re);return!u||u.hidden||!Ai(u)?null:c.jsx(a,{x:d,y:f,width:h,height:p,style:u.style,selected:!!u.selected,className:r(u),color:t(u),borderRadius:s,strokeColor:n(u),strokeWidth:i,shapeRendering:o,onClick:l,id:u.id})}const xp=$.memo(mp);var yp=$.memo(gp);const wp=200,bp=150,vp=e=>{const t={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:t,boundingRect:e.nodeLookup.size>0?zi(Ct(e.nodeLookup),t):t,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height}},Np="react-flow__minimap-desc";function Po({style:e,className:t,nodeStrokeColor:n,nodeColor:r,nodeClassName:s="",nodeBorderRadius:i=5,nodeStrokeWidth:o,nodeComponent:a,bgColor:l,maskColor:u,maskStrokeColor:d,maskStrokeWidth:f,position:h="bottom-right",onClick:p,onNodeClick:g,pannable:x=!1,zoomable:v=!1,ariaLabel:y="React Flow mini map",inversePan:N,zoomStep:b=10,offsetScale:w=5}){const C=te(),L=$.useRef(null),{boundingRect:E,viewBB:R,rfId:D,panZoom:P,translateExtent:T,flowWidth:F,flowHeight:A}=Q(vp,re),m=(e==null?void 0:e.width)??wp,k=(e==null?void 0:e.height)??bp,_=E.width/m,M=E.height/k,S=Math.max(_,M),j=S*m,z=S*k,H=w*S,O=E.x-(j-E.width)/2-H,X=E.y-(z-E.height)/2-H,V=j+H*2,B=z+H*2,Y=`${Np}-${D}`,U=$.useRef(0),I=$.useRef();U.current=S,$.useEffect(()=>{if(L.current&&P)return I.current=kf({domNode:L.current,panZoom:P,getTransform:()=>C.getState().transform,getViewScale:()=>U.current}),()=>{var Z;(Z=I.current)==null||Z.destroy()}},[P]),$.useEffect(()=>{var Z;(Z=I.current)==null||Z.update({translateExtent:T,width:F,height:A,inversePan:N,pannable:x,zoomStep:b,zoomable:v})},[x,v,N,b,T,F,A]);const q=p?Z=>{var ee;const[W,J]=((ee=I.current)==null?void 0:ee.pointer(Z))||[0,0];p(Z,{x:W,y:J})}:void 0,K=g?$.useCallback((Z,W)=>{const J=C.getState().nodeLookup.get(W);g(Z,J)},[]):void 0;return c.jsx(Nr,{position:h,style:{...e,"--xy-minimap-background-color-props":typeof l=="string"?l:void 0,"--xy-minimap-mask-background-color-props":typeof u=="string"?u:void 0,"--xy-minimap-mask-stroke-color-props":typeof d=="string"?d:void 0,"--xy-minimap-mask-stroke-width-props":typeof f=="number"?f*S:void 0,"--xy-minimap-node-background-color-props":typeof r=="string"?r:void 0,"--xy-minimap-node-stroke-color-props":typeof n=="string"?n:void 0,"--xy-minimap-node-stroke-width-props":typeof o=="string"?o:void 0},className:se(["react-flow__minimap",t]),"data-testid":"rf__minimap",children:c.jsxs("svg",{width:m,height:k,viewBox:`${O} ${X} ${V} ${B}`,className:"react-flow__minimap-svg",role:"img","aria-labelledby":Y,ref:L,onClick:q,children:[y&&c.jsx("title",{id:Y,children:y}),c.jsx(yp,{onClick:K,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:i,nodeClassName:s,nodeStrokeWidth:o,nodeComponent:a}),c.jsx("path",{className:"react-flow__minimap-mask",d:`M${O-H},${X-H}h${V+H*2}v${B+H*2}h${-V-H*2}z
23
- M${R.x},${R.y}h${R.width}v${R.height}h${-R.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}Po.displayName="MiniMap";$.memo(Po);function _p({nodeId:e,position:t,variant:n=pt.Handle,className:r,style:s={},children:i,color:o,minWidth:a=10,minHeight:l=10,maxWidth:u=Number.MAX_VALUE,maxHeight:d=Number.MAX_VALUE,keepAspectRatio:f=!1,shouldResize:h,onResizeStart:p,onResize:g,onResizeEnd:x}){const v=fo(),y=typeof e=="string"?e:v,N=te(),b=$.useRef(null),w=n===pt.Line?"right":"bottom-right",C=t??w,L=$.useRef(null);$.useEffect(()=>{if(!(!b.current||!y))return L.current||(L.current=Hf({domNode:b.current,nodeId:y,getStoreItems:()=>{const{nodeLookup:P,transform:T,snapGrid:F,snapToGrid:A,nodeOrigin:m,domNode:k}=N.getState();return{nodeLookup:P,transform:T,snapGrid:F,snapToGrid:A,nodeOrigin:m,paneDomNode:k}},onChange:(P,T)=>{const{triggerNodeChanges:F,nodeLookup:A,parentLookup:m,nodeOrigin:k}=N.getState(),_=[],M={x:P.x,y:P.y},S=A.get(y);if(S&&S.expandParent&&S.parentId){const j=S.origin??k,z=P.width??S.measured.width,H=P.height??S.measured.height,O={id:S.id,parentId:S.parentId,rect:{width:z,height:H,...Pi({x:P.x??S.position.x,y:P.y??S.position.y},{width:z,height:H},S.parentId,A,j)}},X=vr([O],A,m,k);_.push(...X),M.x=P.x?Math.max(j[0]*z,P.x):void 0,M.y=P.y?Math.max(j[1]*H,P.y):void 0}if(M.x!==void 0&&M.y!==void 0){const j={id:y,type:"position",position:{...M}};_.push(j)}if(P.width!==void 0&&P.height!==void 0){const j={id:y,type:"dimensions",resizing:!0,setAttributes:!0,dimensions:{width:P.width,height:P.height}};_.push(j)}for(const j of T){const z={...j,type:"position"};_.push(z)}F(_)},onEnd:()=>{const P={id:y,type:"dimensions",resizing:!1};N.getState().triggerNodeChanges([P])}})),L.current.update({controlPosition:C,boundaries:{minWidth:a,minHeight:l,maxWidth:u,maxHeight:d},keepAspectRatio:f,onResizeStart:p,onResize:g,onResizeEnd:x,shouldResize:h}),()=>{var P;(P=L.current)==null||P.destroy()}},[C,a,l,u,d,f,p,g,x,h]);const E=C.split("-"),R=n===pt.Line?"borderColor":"backgroundColor",D=o?{...s,[R]:o}:s;return c.jsx("div",{className:se(["react-flow__resize-control","nodrag",...E,n,r]),ref:b,style:D,children:i})}$.memo(_p);const kp=new Set;function Sp(e){return e.startsWith("signal:child:")}function jp(e){const t=an(),n=(()=>{const i=new Set(e),o=[...e];for(;o.length>0;){const a=o.shift();if(a===void 0)continue;const l=t.getQueryData(["run",a]);if(l!==void 0)for(const u of l.timeline){const d=Xt(u);d!==void 0&&!i.has(d)&&(i.add(d),o.push(d))}}return[...i].sort()})(),r=Ga({queries:n.map(i=>({queryKey:["run",i],queryFn:()=>ie.run(i)}))}),s={};return n.forEach((i,o)=>{var l;const a=(l=r[o])==null?void 0:l.data;a&&(s[i]=a)}),s}function Ep({data:e}){const t=e.status==="failed",n=e.status==="pending"||e.status==="running",r=!!e.childRunId,s=!!e.collapsed,i=r&&!s,o=i?Za:Vs(e.kind),a=t?{rail:"bg-red-400",badge:"bg-red-500/15 text-red-300",pill:"bg-red-500/20 text-red-300"}:n?{rail:"bg-amber-400",badge:"bg-amber-500/15 text-amber-300",pill:"bg-amber-500/20 text-amber-300"}:{rail:"bg-emerald-400",badge:"bg-emerald-500/15 text-emerald-300",pill:"bg-emerald-500/20 text-emerald-300"};return c.jsxs("div",{title:i?On.child:On[e.kind]??e.kind,className:`group relative w-[208px] cursor-pointer overflow-hidden rounded-xl border bg-[var(--panel)]/95 shadow-lg backdrop-blur transition-all duration-150 hover:-translate-y-0.5 ${e.selected?"border-emerald-400/60 ring-2 ring-emerald-400/30":t?"border-red-500/40 hover:border-red-400/60":i?"border-indigo-500/40 hover:border-indigo-400/60":"border-[var(--line)] hover:border-zinc-600"}`,children:[c.jsx("span",{className:`absolute inset-y-0 left-0 w-[3px] ${a.rail} ${n?"animate-pulse":""}`}),c.jsx(Te,{type:"target",position:G.Left,className:"!border-0 !bg-zinc-600"}),c.jsxs("div",{className:"py-2.5 pl-3.5 pr-3",children:[c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx("span",{className:`grid h-5 w-5 shrink-0 place-items-center rounded ${a.badge}`,children:c.jsx(o,{width:12,height:12})}),c.jsx("span",{className:"truncate text-[13px] font-medium text-zinc-100",children:e.name}),c.jsx("span",{className:`ml-auto grid h-4 w-4 shrink-0 place-items-center rounded-full ${a.pill} ${n?"animate-pulse":""}`,children:t?c.jsx(Ue,{width:9,height:9}):n?c.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-current"}):c.jsx(qs,{width:9,height:9})})]}),c.jsxs("div",{className:"mono mt-1.5 flex items-center gap-1.5 text-[10px] text-zinc-500",children:[r?c.jsxs("span",{className:"flex items-center gap-1",children:[!s&&c.jsx("button",{type:"button",onClick:l=>{var u;l.stopPropagation(),e.childRunId&&((u=e.onToggleChild)==null||u.call(e,e.childRunId))},title:e.childExpanded?"Collapse child flow":"Expand child flow inline",className:"grid h-4 w-4 place-items-center rounded border border-indigo-500/30 bg-indigo-500/10 text-indigo-300 transition-colors hover:border-indigo-400/60 hover:bg-indigo-500/20 hover:text-indigo-200",children:c.jsx("span",{className:"inline-block text-[9px] transition-transform",style:{transform:e.childExpanded?"rotate(90deg)":"rotate(0deg)"},children:"▸"})}),c.jsx("button",{type:"button",onClick:l=>{var u;l.stopPropagation(),e.childRunId&&((u=e.onOpenRun)==null||u.call(e,e.childRunId))},title:"Open the child run",className:"rounded border border-indigo-500/30 bg-indigo-500/10 px-1 text-indigo-300 transition-colors hover:border-indigo-400/60 hover:bg-indigo-500/20 hover:text-indigo-200",children:"child ↗"})]}):c.jsx("span",{className:"rounded border border-[var(--line)] px-1 text-zinc-400",children:e.kind}),e.attempts>1&&c.jsxs("span",{className:"flex items-center gap-0.5 text-amber-300",children:[c.jsx(ar,{width:9,height:9}),e.attempts]}),e.workerGroup&&c.jsxs("span",{className:"truncate",children:["@",e.workerGroup]}),c.jsxs("span",{className:"tnum ml-auto text-zinc-400",children:["#",e.seq,e.duration&&c.jsxs("span",{className:"text-zinc-600",children:[" · ",e.duration]})]})]}),e.subs&&c.jsxs("div",{className:"mono mt-1.5 flex items-center gap-2 border-t border-[var(--line)] pt-1.5 text-[10px]",children:[e.subs.ok>0&&c.jsxs("span",{className:"text-emerald-300",children:[e.subs.ok," ok"]}),e.subs.failed>0&&c.jsxs("span",{className:"text-red-300",children:[e.subs.failed," failed"]}),e.subs.skipped>0&&c.jsxs("span",{className:"text-amber-300",children:[e.subs.skipped," skipped"]})]})]}),c.jsx(Te,{type:"source",position:G.Right,className:"!border-0 !bg-zinc-600"})]})}function Cp({data:e}){const t=e.status==="running"||e.status==="awaiting";return c.jsxs("div",{className:`s-${e.status} flex items-center gap-2 rounded-full border border-current/30 bg-[var(--panel)] px-3.5 py-1.5`,children:[c.jsx(Te,{type:"target",position:G.Left,className:"!border-0 !bg-zinc-600"}),c.jsx("span",{className:`dot ${t?"pulse":""}`}),c.jsx("span",{className:"mono text-[11px] uppercase tracking-wider",children:e.label}),c.jsx(Te,{type:"source",position:G.Right,className:"!border-0 !bg-zinc-600"})]})}const $p={step:Ep,terminal:Cp};function Mp(e){var n;const t=(n=e.events)==null?void 0:n.filter(r=>r.status);if(!(!t||t.length===0))return{ok:t.filter(r=>r.status==="ok").length,failed:t.filter(r=>r.status==="failed").length,skipped:t.filter(r=>r.status==="skipped").length}}function zp({run:e,timeline:t,endStatus:n,selectedKey:r,onSelect:s,onOpenRun:i,fmtDuration:o,expanded:a,onToggleChild:l}){const u=a??kp,d=$.useMemo(()=>{const x=new Set(u);for(const v of t){const y=Xt(v);y!==void 0&&x.add(y)}return x},[u,t]),f=jp(d),{nodes:h,edges:p}=(()=>{const N=[],b=[],w=e.status==="running"||e.status==="suspended",C=(A,m,k)=>({id:`${A}->${m}`,source:A,target:m,style:{stroke:k?"#f87171":"var(--line)",strokeWidth:1.5}}),L=(A,m)=>({id:`${A}=>${m}`,source:A,target:m,style:{stroke:"#818cf8",strokeWidth:1.5,strokeDasharray:"4 3"}});function E(A,m,k,_,M,S){const j=`${M}s${A.seq}`,z=Xt(A),H=z!==void 0?f[z]:void 0,O=H!==void 0&&H.timeline.length===1&&H.timeline[0]?{step:H.timeline[0],run:H.run}:void 0,X=O!==void 0,V=!X&&z!==void 0&&u.has(z),B=O?O.step:A,Y=O?O.run:S,U=O?O.step.name:z!==void 0?(H==null?void 0:H.run.workflow)??"child workflow":A.name,I=B.status==="failed";N.push({id:j,type:"step",draggable:!1,position:{x:m,y:k},data:{seq:B.seq,name:U,kind:B.kind,status:B.status,workerGroup:B.workerGroup,attempts:B.attempts,duration:o(B.startedAt,B.finishedAt),subs:Mp(B),selected:r===`${B.runId}#${B.seq}`,childRunId:z,onOpenRun:i,childExpanded:V,onToggleChild:l,collapsed:X,depth:_,step:B,laneRun:Y}});const q=V?H:void 0;if(q){const K=R(q.timeline,_+1,m+248,k+150,`${z}:`,q.run);for(const W of K.firstIds)b.push(L(j,W));const Z=Sp(A.name)&&K.connectors.length>0?K.connectors:[{id:j,failed:I}];return{id:j,exits:Z,nextX:Math.max(m+248,K.nextX),bottomY:Math.max(k,K.bottomY)}}return{id:j,exits:[{id:j,failed:I}],nextX:m+248,bottomY:k}}function R(A,m,k,_,M,S){let j=k;const z=[];let H=[],O=_;for(const X of Ua(A)){const V=X.kind==="single"?[X.step]:X.steps,B=z.length===0,Y=[];let U=_,I=j;for(const q of V){const K=E(q,j,U,m,M,S);B&&z.push(K.id);for(const Z of H)b.push(C(Z.id,K.id,Z.failed));Y.push(...K.exits),I=Math.max(I,K.nextX),U=K.bottomY+96}H=Y,j=I,O=Math.max(O,U-96)}return{firstIds:z,connectors:H,nextX:j,bottomY:O}}const D=248;N.push({id:"start",type:"terminal",position:{x:0,y:0},draggable:!1,data:{status:"running",label:e.workflow}});const P=R(t,0,D,0,"",e);for(const A of P.firstIds)b.push({id:`start->${A}`,source:"start",target:A});const T=n??Ka(e,t);N.push({id:"end",type:"terminal",position:{x:Math.max(P.nextX,D),y:0},draggable:!1,data:{status:T,label:T}});const F=P.connectors.length>0?P.connectors:[{id:"start",failed:!1}];for(const A of F)b.push({id:`${A.id}->end`,source:A.id,target:"end",animated:w,style:{stroke:w?"var(--accent)":"var(--line)",strokeWidth:w?2:1.5}});return{nodes:N,edges:b}})(),g=$.useCallback((x,v)=>{if(v.type!=="step")return;const y=v.data;y.step&&y.laneRun&&s(y.step,y.laneRun)},[s]);return c.jsxs(J0,{nodes:h,edges:p,nodeTypes:$p,onNodeClick:g,fitView:!0,fitViewOptions:{padding:.3,maxZoom:1.1},proOptions:{hideAttribution:!0},nodesConnectable:!1,nodesDraggable:!1,panOnScroll:!0,minZoom:.3,children:[c.jsx(sp,{variant:Ne.Dots,gap:22,size:1,color:"#1c1c22"}),c.jsx(dp,{showInteractive:!1,position:"bottom-right"})]})}function To({className:e}){return c.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.8,strokeLinecap:"round",strokeLinejoin:"round",className:e,role:"img","aria-label":"durable",children:[c.jsx("title",{children:"durable"}),c.jsx("path",{d:"M12 2.5 21.5 12 12 21.5 2.5 12z",opacity:.35}),c.jsx("circle",{cx:"6.4",cy:"12",r:"1.7",fill:"currentColor",stroke:"none"}),c.jsx("circle",{cx:"12",cy:"12",r:"1.7",fill:"currentColor",stroke:"none"}),c.jsx("circle",{cx:"17.6",cy:"12",r:"1.7",fill:"currentColor",stroke:"none"}),c.jsx("path",{d:"M8.1 12h2.2M13.7 12h2.2"})]})}const Ip=["pending","running","suspended","completed","failed","cancelling","cancelled","dead"];function Ap(e){const t=Date.now()-new Date(e).getTime(),n=Math.round(t/1e3);if(n<60)return`${n}s ago`;const r=Math.round(n/60);if(r<60)return`${r}m ago`;const s=Math.round(r/60);return s<24?`${s}h ago`:`${Math.round(s/24)}d ago`}function Pp(e,t){const n=new Date(t).getTime()-new Date(e).getTime();return n<1e3?`${n}ms`:n<6e4?`${(n/1e3).toFixed(1)}s`:`${(n/6e4).toFixed(1)}m`}function Sr({status:e}){const t=e==="running"||e==="awaiting"||e==="cancelling";return c.jsx("span",{className:`dot s-${e} ${t?"pulse":""}`,"aria-hidden":!0})}function Do({status:e}){return c.jsxs("span",{className:`s-${e} inline-flex items-center gap-1.5 text-[11px] uppercase tracking-wider`,children:[c.jsx(Sr,{status:e}),e]})}function Tp({counts:e,filter:t,onFilter:n}){const r=Object.values(e).reduce((l,u)=>l+u,0),s=(l,u,d)=>c.jsxs("button",{type:"button",onClick:()=>n(l),className:`group flex items-center gap-2 rounded-md border px-2.5 py-1 text-xs transition-colors ${t===l?"border-zinc-600 bg-zinc-900 text-zinc-100":"border-transparent text-zinc-500 hover:text-zinc-300"}`,children:[l!=="all"&&c.jsx(Sr,{status:l}),c.jsx("span",{className:"uppercase tracking-wide",children:u}),c.jsx("span",{className:"mono tnum text-zinc-600",children:d})]},l),{data:i}=we({queryKey:["topology"],queryFn:()=>ie.topology(),staleTime:Number.POSITIVE_INFINITY}),o=(i==null?void 0:i.role)==="tenant",a=i?o?i.tenant?`tenant · ${i.tenant}`:"tenant":"control plane":"";return c.jsxs("header",{className:"z-10 flex items-center gap-4 border-b border-[var(--line)] px-5 py-3",children:[c.jsxs("div",{className:"flex items-center gap-2.5",children:[c.jsx("div",{className:"grid h-7 w-7 place-items-center rounded-md border border-emerald-500/30 bg-emerald-500/10",children:c.jsx(To,{className:"h-4 w-4 text-emerald-400"})}),c.jsxs("div",{className:"leading-none",children:[c.jsx("div",{className:"text-sm font-semibold tracking-tight",children:"durable"}),c.jsx("div",{className:`mono text-[10px] uppercase tracking-[0.2em] ${o?"text-amber-400/80":"text-zinc-600"}`,title:o?`Tenant deployment — partition ${(i==null?void 0:i.tenant)??"(unnamed)"}`:"Control-plane deployment",children:a})]})]}),c.jsxs("div",{className:"ml-2 flex flex-wrap items-center gap-1",children:[s("all","all",r),Ip.map(l=>s(l,l,e[l]??0))]}),c.jsx(Lp,{}),c.jsxs("div",{className:"flex items-center gap-2 text-xs text-zinc-500",children:[c.jsx("span",{className:"dot s-completed pulse","aria-hidden":!0}),"live"]})]})}function Dp(e){const t=Math.max(0,Math.round((Date.now()-e)/1e3));if(t<60)return`${t}s ago`;const n=Math.round(t/60);if(n<60)return`${n}m ago`;const r=Math.round(n/60);return r<24?`${r}h ago`:`${Math.round(r/24)}d ago`}function Ro({status:e}){const t=e==null?void 0:e.concurrency;if(!e||!t)return c.jsx("span",{className:"mono text-[9px] text-zinc-600",children:"no status"});const n=t.limit>0&&e.inFlight>=t.limit*.8;return c.jsxs("div",{className:"flex flex-col gap-1",children:[c.jsxs("div",{className:"mono flex flex-wrap items-center gap-x-3 gap-y-0.5 text-[10px] text-zinc-500",children:[c.jsx("span",{className:`shrink-0 rounded border px-1 text-[9px] uppercase tracking-wider ${t.mode==="adaptive"?"border-sky-500/40 bg-sky-500/10 text-sky-300":"border-zinc-600/50 bg-zinc-800/60 text-zinc-400"}`,children:t.mode==="adaptive"?`adaptive ${t.min??1}–${t.max??32}`:"fixed"}),c.jsxs("span",{className:n?"text-amber-300":"text-zinc-400",children:["in-flight"," ",c.jsxs("span",{className:"tnum",children:[e.inFlight,"/",t.limit]})]}),typeof e.rssPct=="number"&&c.jsxs("span",{className:e.rssPct>=85?"text-rose-300":"",children:["ram ",c.jsxs("span",{className:"tnum",children:[Math.round(e.rssPct),"%"]})]}),typeof e.cpuPct=="number"&&c.jsxs("span",{children:["cpu ",c.jsxs("span",{className:"tnum",children:[Math.round(e.cpuPct),"%"]})]}),typeof e.throughputPerMin=="number"&&c.jsxs("span",{children:[c.jsx("span",{className:"tnum",children:Math.round(e.throughputPerMin)}),"/min"]}),typeof e.p95Ms=="number"&&c.jsxs("span",{children:["p95 ",c.jsxs("span",{className:"tnum",children:[Math.round(e.p95Ms),"ms"]})]})]}),e.lastAdjust&&c.jsxs("div",{className:"mono text-[10px] text-zinc-500",children:[e.lastAdjust.reason," ",c.jsxs("span",{className:"tnum text-zinc-400",children:[e.lastAdjust.from,"→",e.lastAdjust.to]})," ",Dp(e.lastAdjust.at)]})]})}function on({label:e,suppressed:t,children:n}){const[r,s]=$.useState(!1);return c.jsxs("span",{className:"relative inline-flex",onMouseEnter:()=>s(!0),onMouseLeave:()=>s(!1),children:[n,r&&!t&&c.jsx("span",{role:"tooltip",className:"pointer-events-none absolute right-0 top-full z-30 mt-1 max-w-[280px] whitespace-pre-line rounded-md border border-[var(--line)] bg-zinc-950/95 px-2 py-1 text-left text-[10px] leading-relaxed text-zinc-300 shadow-xl backdrop-blur",children:e})]})}function Rp({workers:e}){return c.jsx("div",{className:"flex flex-col divide-y divide-[var(--line-soft)]",children:e.map(t=>c.jsxs("div",{className:"flex flex-col gap-1 px-2.5 py-2",children:[c.jsx("span",{className:"mono truncate text-[10px] text-zinc-400",children:t.instanceId}),c.jsx(Ro,{status:t.status})]},t.instanceId))})}function Lp(){const{data:e}=we({queryKey:["workers"],queryFn:()=>ie.workers(),refetchInterval:1e4}),[t,n]=$.useState("workers");if(!e||e.length===0)return null;const r=uc(e);return c.jsxs("div",{className:"ml-auto flex flex-nowrap items-center gap-1.5",children:[c.jsx("div",{className:"flex items-center gap-0.5 rounded border border-[var(--line)] bg-zinc-900/60 p-0.5",children:["workers","partitions","alerts"].map(s=>c.jsxs("button",{type:"button",onClick:()=>n(s),className:`mono rounded px-1.5 py-0.5 text-[10px] ${t===s?"bg-zinc-700 text-zinc-100":"text-zinc-500 hover:text-zinc-300"}`,children:[s==="workers"?"pods":s==="partitions"?"parts":"alerts",s==="alerts"&&r.starved.length>0&&c.jsx("span",{className:"tnum ml-1 rounded bg-rose-500/80 px-1 text-[9px] text-white",children:r.starved.length})]},s))}),c.jsxs("div",{className:"flex w-[300px] flex-nowrap items-center justify-end gap-1.5",children:[t==="workers"&&c.jsx(Hp,{workers:lc(e)}),t==="partitions"&&c.jsx(Fp,{groups:e}),t==="alerts"&&c.jsx(Op,{summary:r})]})]})}const Rs="__overflow__";function Ls(e){var n;const t=(n=e.status)==null?void 0:n.concurrency;return e.status&&t?`${e.status.inFlight}/${t.limit}`:void 0}function Hs({w:e}){return c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"px-2.5 py-2",children:c.jsx(Ro,{status:e.status})}),c.jsxs("div",{className:"max-h-48 overflow-auto border-t border-[var(--line-soft)] px-2.5 py-1.5",children:[c.jsxs("div",{className:"mono mb-1 text-[9px] uppercase tracking-wider text-zinc-600",children:[e.handlers.length," handlers"]}),e.handlers.map(t=>c.jsx("div",{className:"mono truncate text-[10px] text-zinc-400",children:t},t))]})]})}function Hp({workers:e}){const[t,n]=$.useState(void 0),[r,s]=$.useState(void 0),i=2,o=e.slice(0,i),a=e.slice(i),l=t===Rs;return c.jsxs(c.Fragment,{children:[o.map(u=>{const d=t===u.instanceId,f=Ls(u);return c.jsx(on,{suppressed:d,label:`${u.instanceId}
24
- ${u.handlers.length} handlers · ${u.partition}${f?` · ${f} in-flight`:""}`,children:c.jsxs("div",{className:"relative",children:[c.jsxs("button",{type:"button",onClick:()=>n(d?void 0:u.instanceId),className:`mono flex max-w-[120px] items-center gap-1 rounded border px-1.5 py-0.5 text-[10px] hover:border-zinc-500 ${d?"border-zinc-500 bg-zinc-800 text-zinc-200":"border-[var(--line)] bg-zinc-800/40 text-zinc-400"}`,children:[c.jsx("span",{className:`dot ${u.status?"s-completed":""}`,"aria-hidden":!0}),c.jsx("span",{className:"truncate",children:u.instanceId}),u.partition!=="default"&&c.jsxs("span",{className:"shrink-0 text-zinc-500",children:["@",u.partition]}),c.jsxs("span",{className:"tnum shrink-0 text-zinc-500",children:[u.handlers.length,"h",f?` · ${f}`:""]})]}),d&&c.jsxs("div",{className:"absolute right-0 top-full z-20 mt-1 w-72 rounded-md border border-[var(--line)] bg-zinc-950/95 shadow-xl backdrop-blur",children:[c.jsxs("div",{className:"mono flex items-center justify-between gap-2 border-b border-[var(--line)] px-2.5 py-1.5 text-[10px] text-zinc-500",children:[c.jsx("span",{className:"truncate text-zinc-300",children:u.instanceId}),c.jsxs("span",{className:"shrink-0",children:[u.runtime??"node"," · ",u.partition]})]}),c.jsx(Hs,{w:u})]})]})},u.instanceId)}),a.length>0&&c.jsxs("div",{className:"relative",children:[c.jsxs("button",{type:"button",onClick:()=>{n(l?void 0:Rs),s(void 0)},className:`mono shrink-0 rounded border px-1.5 py-0.5 text-[10px] hover:border-zinc-500 ${l?"border-zinc-500 bg-zinc-800 text-zinc-200":"border-[var(--line)] bg-zinc-800/40 text-zinc-400"}`,children:["+",a.length]}),l&&c.jsxs("div",{className:"absolute right-0 top-full z-20 mt-1 w-72 rounded-md border border-[var(--line)] bg-zinc-950/95 shadow-xl backdrop-blur",children:[c.jsxs("div",{className:"mono border-b border-[var(--line)] px-2.5 py-1.5 text-[9px] uppercase tracking-wider text-zinc-600",children:[a.length," more ",a.length===1?"pod":"pods"]}),c.jsx("div",{className:"max-h-80 overflow-auto divide-y divide-[var(--line-soft)]",children:a.map(u=>{const d=Ls(u),f=r===u.instanceId;return c.jsxs("div",{children:[c.jsxs("button",{type:"button",onClick:()=>s(f?void 0:u.instanceId),className:`mono flex w-full items-center justify-between gap-2 px-2.5 py-1.5 text-left text-[10px] hover:bg-zinc-800/50 ${f?"bg-zinc-800/40 text-zinc-200":"text-zinc-300"}`,children:[c.jsxs("span",{className:"flex min-w-0 items-center gap-1",children:[c.jsx("span",{className:`dot ${u.status?"s-completed":""}`,"aria-hidden":!0}),c.jsx("span",{className:"truncate",children:u.instanceId})]}),c.jsxs("span",{className:"tnum shrink-0 text-zinc-500",children:[u.partition!=="default"?`@${u.partition} · `:"",u.handlers.length,"h",d?` · ${d}`:""]})]}),f&&c.jsx("div",{className:"border-t border-[var(--line-soft)] bg-zinc-900/40",children:c.jsx(Hs,{w:u})})]},u.instanceId)})})]})]})]})}function Fp({groups:e}){const[t,n]=$.useState(void 0),r=ac(e);function s(i){const o=new Map;for(const a of e)if(Yt(a.group)===i)for(const l of a.liveWorkers)o.has(l.instanceId)||o.set(l.instanceId,l);return[...o.values()]}return c.jsx(c.Fragment,{children:r.map(i=>{const o=i.starvedCount>0,a=t===i.partition;return c.jsx(on,{suppressed:a,label:`${i.partition}
25
- ${i.workerCount} workers · ${i.handlerCount} handlers · ${i.totalDepth} queued${o?` · ${i.starvedCount} starved`:""}`,children:c.jsxs("div",{className:"relative",children:[c.jsxs("button",{type:"button",disabled:i.workerCount===0,onClick:()=>n(a?void 0:i.partition),className:`mono flex items-center gap-1 rounded border px-1.5 py-0.5 text-[10px] ${o?"border-rose-500/50 bg-rose-500/15 text-rose-300":a?"border-zinc-500 bg-zinc-800 text-zinc-200":"border-[var(--line)] bg-zinc-800/40 text-zinc-400"} ${i.workerCount>0?"cursor-pointer hover:border-zinc-500":"cursor-default"}`,children:[c.jsx("span",{className:`dot ${o?"s-failed":i.workerCount>0?"s-completed":""}`,"aria-hidden":!0}),i.partition,c.jsxs("span",{className:"tnum text-zinc-500",children:[i.workerCount,"w ",i.handlerCount,"h",i.totalDepth>0?` ${i.totalDepth}q`:"",o?` ${i.starvedCount}!`:""]})]}),a&&i.workerCount>0&&c.jsxs("div",{className:"absolute right-0 top-full z-20 mt-1 w-72 rounded-md border border-[var(--line)] bg-zinc-950/95 shadow-xl backdrop-blur",children:[c.jsxs("div",{className:"mono flex items-center justify-between border-b border-[var(--line)] px-2.5 py-1.5 text-[10px] text-zinc-500",children:[c.jsx("span",{className:"text-zinc-300",children:i.partition}),c.jsxs("span",{className:"tnum",children:[i.workerCount," worker(s) · ",i.totalDepth," queued"]})]}),c.jsx(Rp,{workers:s(i.partition)})]})]})},i.partition)})})}function Op({summary:e}){const t=(n,r)=>`${n} ${n===1?r:`${r}s`}`;return c.jsxs(c.Fragment,{children:[c.jsx(on,{label:`Route-by-handler: each @Workflow & @Step is served as its own queue.
26
- ${e.queueCount} queues across ${t(e.workerCount,"worker")}.`,children:c.jsxs("span",{className:"mono tnum text-[10px] text-zinc-500",children:[t(e.workflowCount,"workflow")," · ",t(e.stepCount,"step")," ·"," ",t(e.workerCount,"worker")," ·"," ",e.allDraining?c.jsx("span",{className:"text-emerald-400",children:"all draining"}):c.jsxs("span",{className:"text-rose-300",children:[e.starved.length," starved"]})]})}),e.starved.map(n=>c.jsx(on,{label:`${n.group}
27
- ${n.depth} queued, no worker consuming`,children:c.jsxs("span",{className:"mono flex items-center gap-1 rounded border border-rose-500/50 bg-rose-500/15 px-1.5 py-0.5 text-[10px] text-rose-300",children:[c.jsx("span",{className:"dot s-failed","aria-hidden":!0}),c.jsx("span",{className:"max-w-[180px] truncate",children:n.group}),c.jsxs("span",{className:"tnum shrink-0",children:[n.depth,"q · 0w"]})]})},n.group))]})}function Bp(){return c.jsx("ul",{className:"divide-y divide-[var(--line-soft)]","aria-hidden":!0,children:[0,1,2,3,4,5].map(e=>c.jsxs("li",{className:"flex flex-col gap-2 px-4 py-3",children:[c.jsxs("div",{className:"flex items-center justify-between gap-2",children:[c.jsx("div",{className:"h-3.5 w-32 animate-pulse rounded bg-zinc-800"}),c.jsx("div",{className:"h-3 w-16 animate-pulse rounded bg-zinc-800/70"})]}),c.jsx("div",{className:"h-2.5 w-48 animate-pulse rounded bg-zinc-800/50"})]},e))})}function Vp({runs:e,allRuns:t,health:n,loading:r,selected:s,onSelect:i,onSelectTag:o}){return r&&e.length===0?c.jsx(Bp,{}):e.length===0?c.jsx("div",{className:"p-6 text-sm text-zinc-600",children:"No runs yet."}):c.jsx("ul",{className:"divide-y divide-[var(--line-soft)]",children:e.map(a=>{const l=cr(a,{runs:t,health:n});return c.jsx("li",{children:c.jsxs("button",{type:"button",onClick:()=>i(a.id),className:`flex w-full flex-col gap-1 px-4 py-3 text-left transition-colors ${s===a.id?"bg-zinc-900":"hover:bg-zinc-900/50"}`,children:[c.jsxs("div",{className:"flex items-center justify-between gap-2",children:[c.jsxs("span",{className:"flex min-w-0 items-center gap-1.5",children:[c.jsx("span",{className:"truncate text-sm font-medium text-zinc-200",children:a.workflow}),a.namespace&&a.namespace!=="default"&&c.jsx("span",{className:"mono shrink-0 rounded border border-sky-500/30 bg-sky-500/10 px-1 text-[9px] text-sky-300",title:"Tenant / worker-pool partition",children:a.namespace}),a.id.startsWith("dlq:")&&c.jsx("span",{className:"mono shrink-0 rounded border border-rose-500/40 bg-rose-500/10 px-1 text-[9px] uppercase tracking-wider text-rose-300",children:"dlq"})]}),c.jsx(Do,{status:l.status})]}),l.detail&&c.jsx("div",{className:`mono truncate text-[11px] s-${l.status}`,children:l.detail}),c.jsxs("div",{className:"flex items-center justify-between gap-2",children:[c.jsx("span",{className:"mono truncate text-[11px] text-zinc-600",children:a.id}),c.jsx("span",{className:"shrink-0 text-[11px] text-zinc-600",children:Ap(a.updatedAt)})]}),a.tags&&a.tags.length>0&&c.jsx("div",{className:"flex flex-wrap gap-1",children:a.tags.map(u=>c.jsxs("span",{onClick:d=>{d.stopPropagation(),o(u)},className:"mono cursor-pointer rounded border border-[var(--line)] bg-zinc-800/40 px-1.5 text-[10px] text-zinc-400 hover:border-zinc-500 hover:text-zinc-200",children:["#",u]},u))})]})},a.id)})})}function qp({compensations:e,selKey:t,onSelect:n}){return c.jsxs("div",{className:"shrink-0 border-t border-amber-500/20 bg-black/20 px-7 py-3",children:[c.jsx("div",{className:"mono mb-2 text-[10px] uppercase tracking-[0.18em] text-amber-400/80",children:"compensation · unwind order"}),c.jsx("ul",{className:"flex flex-col gap-1",children:e.map(r=>{const s=`${r.runId}#${r.seq}`;return c.jsx("li",{children:c.jsxs("button",{type:"button",onClick:()=>n(r),className:`mono flex w-full items-center gap-2 rounded-md border px-2.5 py-1.5 text-left text-[11.5px] transition-colors ${s===t?"border-amber-500/50 bg-amber-500/15":"border-amber-500/20 bg-amber-500/5 hover:border-amber-500/40"}`,children:[c.jsx(Sr,{status:r.status}),c.jsx("span",{className:"truncate text-amber-100",children:sc(r.name)}),c.jsx("span",{className:"ml-auto shrink-0 text-[10px] uppercase tracking-wider text-amber-400/70",children:r.status})]})},s)})})]})}function Xp({id:e,onOpenRun:t}){var Y,U;const n=an(),{data:r}=we({queryKey:["run",e],queryFn:async()=>cc(n.getQueryData(["run",e]),await ie.run(e)),refetchInterval:I=>{var K;const q=(K=I.state.data)==null?void 0:K.run.status;return q==="running"||q==="suspended"?1500:!1}}),{data:s=[]}=we({queryKey:["workers"],queryFn:()=>ie.workers(),refetchInterval:5e3}),{data:i=[]}=we({queryKey:["runs","",""],queryFn:()=>ie.runs(),refetchInterval:3e3}),o=(r==null?void 0:r.run.status)==="dead"?`dlq:${e}`:void 0,{data:a}=we({queryKey:["run",o],queryFn:()=>ie.run(o),enabled:!!o,retry:!1}),l=()=>{n.invalidateQueries({queryKey:["run",e]}),n.invalidateQueries({queryKey:["runs"]})},u=r==null?void 0:r.run.status,d=u==="running"||u==="suspended";$.useEffect(()=>{if(d)return ie.streamRun(e,I=>{if(I.type==="step.progress"&&I.event&&I.seq!=null){const q=I.seq,K=I.event;n.setQueryData(["run",e],Z=>Z&&{...Z,timeline:Z.timeline.map(W=>W.seq===q?{...W,events:[...W.events??[],K]}:W)});return}n.invalidateQueries({queryKey:["run",e]})})},[e,d,n]);const f=Xe({mutationFn:()=>ie.retry(e),onSuccess:l}),h=Xe({mutationFn:I=>ie.cancel(e,I!==void 0?{compensate:I}:{}),onSuccess:l}),p=Xe({mutationFn:()=>ie.continue(e),onSuccess:l}),g=Xe({mutationFn:()=>ie.redispatch(e),onSuccess:l}),x=Xe({mutationFn:I=>ie.retryWithInput(e,I),onSuccess:I=>{n.invalidateQueries({queryKey:["runs"]}),t(I.runId)}}),v=()=>{const I=JSON.stringify((r==null?void 0:r.run.input)??{},null,2),q=window.prompt("Fix the input, then replay as a fresh run:",I);if(q!=null)try{x.mutate(JSON.parse(q))}catch{window.alert("Invalid JSON")}},[y,N]=$.useState(),[b,w]=$.useState(!1),[C,L]=$.useState(new Set),[E,R]=$.useState(240);function D(I){I.preventDefault(),I.currentTarget.setPointerCapture(I.pointerId);const q=Z=>R(W=>Math.max(120,Math.min(720,W-Z.movementY))),K=()=>{window.removeEventListener("pointermove",q),window.removeEventListener("pointerup",K)};window.addEventListener("pointermove",q),window.addEventListener("pointerup",K)}function P(I){L(q=>{const K=new Set(q);return K.has(I)?K.delete(I):K.add(I),K})}if(!r)return c.jsx("div",{className:"p-8 text-sm text-zinc-600",children:"Loading run…"});const{run:T,timeline:F}=r,{body:A,compensations:m}=ic(F),k=oc(m),_=T.id.startsWith("dlq:"),M=_?{id:T.id.slice(4),title:"Dead-letter handler",subtitle:`started because run ${T.id.slice(4)} was dead-lettered`,cta:"open dead run →"}:a?{id:`dlq:${T.id}`,title:"Dead-lettered",subtitle:"this run exceeded recovery and was routed to a DLQ handler",cta:"open DLQ handler →"}:void 0,S=m.length>0?(()=>{const I=k.failed>0?` ${k.failed} undo${k.failed===1?"":"s"} failed after retries — check ${k.failed===1?"it":"them"} below.`:"";return k.pending>0?{title:"Compensating",subtitle:`undoing completed steps in reverse (${k.done} of ${k.total} done).${I}`}:T.status==="cancelled"?{title:"Cancelled with compensation",subtitle:`completed steps were undone before cancelling.${I}`}:{title:"Saga compensated",subtitle:`the run failed and its ${k.total} completed step${k.total===1?"":"s"} were undone in reverse.${I}`}})():void 0,j=T.status==="failed"||T.status==="suspended",z=T.status==="running"||T.status==="suspended",H=T.status==="suspended"||T.status==="running",O=A.some(I=>I.status==="pending"&&I.kind==="signal"&&I.name.startsWith("breakpoint")),X=y?`${y.step.runId}#${y.step.seq}`:void 0,V=cr(T,{runs:i,health:s,timeline:A}),B=T.namespace&&T.namespace!=="default"?T.namespace:void 0;return c.jsxs("div",{className:"flex h-full flex-col",children:[c.jsxs("div",{className:"flex items-start justify-between gap-4 border-b border-[var(--line)] px-7 py-5",children:[c.jsxs("div",{className:"min-w-0",children:[c.jsxs("div",{className:"flex items-center gap-3",children:[c.jsx("h2",{className:"text-lg font-semibold tracking-tight",children:T.workflow}),_&&c.jsx("span",{className:"mono rounded border border-rose-500/40 bg-rose-500/10 px-1.5 py-0.5 text-[10px] uppercase tracking-wider text-rose-300",children:"dlq"}),c.jsx(Do,{status:V.status}),V.detail&&c.jsx("span",{className:`mono text-[11px] s-${V.status}`,children:V.detail}),B&&c.jsx("span",{className:"mono rounded border border-sky-500/30 bg-sky-500/10 px-1.5 py-0.5 text-[10px] text-sky-300",title:"Tenant / worker-pool partition this run belongs to",children:B}),m.length>0&&c.jsx("span",{className:`mono rounded border border-amber-500/40 bg-amber-500/10 px-1.5 py-0.5 text-[10px] uppercase tracking-wider text-amber-300 ${k.pending>0?"pulse":""}`,title:k.pending>0?`compensating: ${k.done} of ${k.total} undone`:`${k.total} step${k.total===1?"":"s"} compensated`,children:k.pending>0?"compensating":"compensated"}),c.jsxs("span",{className:"mono rounded border border-[var(--line)] px-1.5 py-0.5 text-[10px] text-zinc-500",children:["v",T.workflowVersion]}),c.jsxs("span",{className:"mono tnum text-[11px] text-zinc-600",children:[A.length," ",A.length===1?"step":"steps"]})]}),c.jsx("div",{className:"mono mt-1 truncate text-[11px] text-zinc-600",children:T.id}),T.tags&&T.tags.length>0&&c.jsx("div",{className:"mt-1.5 flex flex-wrap gap-1",children:T.tags.map(I=>c.jsxs("span",{className:"mono rounded border border-[var(--line)] bg-zinc-800/40 px-1.5 text-[10px] text-zinc-400",children:["#",I]},I))}),T.searchAttributes&&Object.keys(T.searchAttributes).length>0&&c.jsx("div",{className:"mt-1.5 flex flex-wrap gap-1",children:Object.entries(T.searchAttributes).map(([I,q])=>c.jsxs("span",{className:"mono rounded border border-indigo-500/30 bg-indigo-500/10 px-1.5 text-[10px] text-indigo-300",title:"search attribute",children:[I,"=",String(q)]},I))}),(Y=r==null?void 0:r.children)!=null&&Y.length?c.jsxs("div",{className:"mt-1.5 flex flex-wrap items-center gap-1",children:[c.jsx("span",{className:"text-[10px] text-zinc-600",children:"children:"}),(U=r.children)==null?void 0:U.map(I=>c.jsx("span",{onClick:()=>t(I),className:"mono cursor-pointer rounded border border-[var(--line)] bg-zinc-800/40 px-1.5 text-[10px] text-zinc-400 hover:border-zinc-500 hover:text-zinc-200",children:I},I))]}):null]}),c.jsxs("div",{className:"flex shrink-0 gap-2",children:[c.jsx("button",{type:"button",onClick:()=>w(!0),className:"mono rounded-md border border-[var(--line)] px-2.5 py-1.5 text-xs text-zinc-400 transition-colors hover:bg-zinc-800 hover:text-zinc-100",title:"Run input / output",children:"{ }"}),O&&c.jsxs("button",{type:"button",disabled:p.isPending,onClick:()=>p.mutate(),className:"flex items-center gap-1.5 rounded-md border border-amber-500/40 bg-amber-500/15 px-3 py-1.5 text-xs font-medium uppercase tracking-wide text-amber-200 transition-colors enabled:hover:bg-amber-500/25 disabled:opacity-30",children:[c.jsx(Qa,{width:12,height:12}),"Continue"]}),c.jsxs("button",{type:"button",disabled:!j||f.isPending,onClick:()=>f.mutate(),className:"flex items-center gap-1.5 rounded-md border border-emerald-500/30 bg-emerald-500/10 px-3 py-1.5 text-xs font-medium uppercase tracking-wide text-emerald-300 transition-colors enabled:hover:bg-emerald-500/20 disabled:opacity-30",children:[c.jsx(Mn,{width:12,height:12}),"Retry"]}),H&&c.jsxs("button",{type:"button",disabled:g.isPending,onClick:()=>g.mutate(),title:"Re-dispatch stuck `pending` remote steps — recovery for a lost step dispatch (crashed worker or dropped job)",className:"flex items-center gap-1.5 rounded-md border border-sky-500/30 bg-sky-500/10 px-3 py-1.5 text-xs font-medium uppercase tracking-wide text-sky-300 transition-colors enabled:hover:bg-sky-500/20 disabled:opacity-30",children:[c.jsx(ar,{width:12,height:12}),"Re-dispatch"]}),(T.status==="dead"||T.status==="failed")&&c.jsxs("button",{type:"button",disabled:x.isPending,onClick:v,title:"Edit the input and re-run as a fresh linked run",className:"flex items-center gap-1.5 rounded-md border border-indigo-500/30 bg-indigo-500/10 px-3 py-1.5 text-xs font-medium uppercase tracking-wide text-indigo-300 transition-colors enabled:hover:bg-indigo-500/20 disabled:opacity-30",children:[c.jsx(Mn,{width:12,height:12}),"Fix & replay"]}),z&&c.jsxs("button",{type:"button",disabled:h.isPending,onClick:()=>h.mutate(!0),title:"Cancel and run saga compensations (undo completed steps in reverse)",className:"flex items-center gap-1.5 rounded-md border border-amber-600/30 px-3 py-1.5 text-xs font-medium uppercase tracking-wide text-amber-300/90 transition-colors enabled:hover:bg-amber-900/20 disabled:opacity-30",children:[c.jsx(Mn,{width:12,height:12}),"Cancel + Undo"]}),c.jsxs("button",{type:"button",disabled:!z||h.isPending,onClick:()=>h.mutate(!1),className:"flex items-center gap-1.5 rounded-md border border-zinc-700 px-3 py-1.5 text-xs font-medium uppercase tracking-wide text-zinc-300 transition-colors enabled:hover:bg-zinc-800 disabled:opacity-30",children:[c.jsx(Ue,{width:12,height:12}),"Cancel"]})]})]}),M&&c.jsxs("div",{className:"flex items-center gap-3 border-b border-rose-500/30 bg-rose-500/10 px-7 py-3",children:[c.jsx("span",{className:"grid h-7 w-7 shrink-0 place-items-center rounded-md border border-rose-500/40 bg-rose-500/15 text-sm text-rose-300","aria-hidden":!0,children:"⚠"}),c.jsxs("div",{className:"min-w-0 flex-1",children:[c.jsx("div",{className:"text-[13px] font-medium text-rose-200",children:M.title}),c.jsx("div",{className:"mono truncate text-[11px] text-rose-300/70",children:M.subtitle})]}),c.jsx("button",{type:"button",onClick:()=>t(M.id),className:"mono shrink-0 rounded-md border border-rose-500/40 bg-rose-500/15 px-2.5 py-1.5 text-[11px] text-rose-200 transition-colors hover:bg-rose-500/25",children:M.cta})]}),S&&c.jsxs("div",{className:"flex items-center gap-3 border-b border-amber-500/30 bg-amber-500/10 px-7 py-3",children:[c.jsx("span",{className:"grid h-7 w-7 shrink-0 place-items-center rounded-md border border-amber-500/40 bg-amber-500/15 text-sm text-amber-300","aria-hidden":!0,children:"↺"}),c.jsxs("div",{className:"min-w-0 flex-1",children:[c.jsx("div",{className:"text-[13px] font-medium text-amber-200",children:S.title}),c.jsx("div",{className:"mono truncate text-[11px] text-amber-300/70",children:S.subtitle})]})]}),c.jsxs("div",{className:"relative grid min-h-0 flex-1",style:{gridTemplateRows:A.length>0?`1fr ${E}px`:"1fr"},children:[c.jsxs("div",{className:"relative min-h-0",children:[A.length===0?c.jsx("div",{className:"grid h-full place-items-center text-sm text-zinc-600",children:"No steps recorded yet."}):c.jsx(zp,{run:T,timeline:A,endStatus:V.status,selectedKey:X,onSelect:(I,q)=>N({step:I,run:q}),onOpenRun:t,fmtDuration:Pp,expanded:C,onToggleChild:P}),(T.status==="failed"||T.status==="cancelled")&&T.error&&c.jsx("div",{className:"mono absolute inset-x-6 bottom-6 rounded-lg border border-red-500/20 bg-red-500/10 px-3 py-2 text-xs text-red-300 backdrop-blur",children:T.error.message})]}),A.length>0&&c.jsxs("div",{className:"relative min-h-0 overflow-hidden border-t border-[var(--line)] bg-black/20",children:[c.jsx("div",{onPointerDown:D,className:"absolute inset-x-0 top-0 z-10 h-1.5 -translate-y-1/2 cursor-row-resize hover:bg-emerald-500/40",title:"Drag to resize"}),c.jsx(Ja,{run:T,timeline:A,selectedKey:X,onSelect:(I,q)=>N({step:I,run:q}),onOpenRun:t,expanded:C,onToggleChild:P})]}),y&&c.jsx(mc,{step:y.step,run:y.run,onClose:()=>N(void 0),onOpenRun:t}),b&&c.jsx(xc,{run:T,onClose:()=>w(!1)})]}),m.length>0&&c.jsx(qp,{compensations:m,selKey:X,onSelect:I=>N({step:I,run:T})})]})}function Fs(){if(typeof window>"u")return;const e=window.location.hash.match(/^#\/run\/(.+)$/),t=e==null?void 0:e[1];return t?decodeURIComponent(t):void 0}function Yp(){const[e,t]=$.useState("all"),[n,r]=$.useState(""),[s,i]=$.useState(""),[o,a]=$.useState(()=>Fs()),l=$.useCallback(N=>{if(a(N),typeof window>"u")return;const b=N?`#/run/${encodeURIComponent(N)}`:"",w=b||window.location.pathname+window.location.search;window.location.hash!==b&&window.history.pushState(null,"",w)},[]);$.useEffect(()=>{const N=()=>a(Fs());return window.addEventListener("hashchange",N),window.addEventListener("popstate",N),()=>{window.removeEventListener("hashchange",N),window.removeEventListener("popstate",N)}},[]);const u=an(),d=s.split(",").map(N=>N.trim()).filter(Boolean),{data:f=[],isPending:h}=we({queryKey:["runs",n,d.join("|")],queryFn:()=>ie.runs(void 0,n||void 0,d.length?d:void 0),refetchInterval:3e3}),{data:p=[]}=we({queryKey:["workers"],queryFn:()=>ie.workers(),refetchInterval:5e3}),g=Xe({mutationFn:N=>ie.bulk(N,{status:e!=="all"?e:void 0,tag:n||void 0,attr:d.length?d:void 0}),onSuccess:()=>u.invalidateQueries({queryKey:["runs"]})}),x=f.reduce((N,b)=>(N[b.status]=(N[b.status]??0)+1,N),{}),v=e==="all"?f:f.filter(N=>N.status===e),y=[...new Set(f.filter(N=>cr(N,{runs:f,health:p}).status==="no-worker").map(N=>N.workflow))];return c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"app-bg"}),c.jsxs("div",{className:"relative z-10 flex h-full flex-col",children:[c.jsx(Tp,{counts:x,filter:e,onFilter:t}),y.length>0&&c.jsxs("div",{className:"flex items-center gap-2 border-b border-amber-500/30 bg-amber-500/10 px-4 py-1.5 text-[11px] text-amber-200",children:[c.jsx("span",{className:"s-no-worker inline-flex items-center gap-1.5",children:c.jsx("span",{className:"dot s-no-worker","aria-hidden":!0})}),c.jsxs("span",{children:["Runs waiting on handlers with no live worker:"," ",c.jsx("span",{className:"mono text-amber-100",children:y.join(", ")}),". Start a worker to unblock."]})]}),c.jsxs("div",{className:"grid min-h-0 flex-1 grid-cols-[minmax(300px,360px)_1fr]",children:[c.jsxs("aside",{className:"flex min-h-0 flex-col border-r border-[var(--line)]",children:[c.jsxs("div",{className:"border-b border-[var(--line)] p-2",children:[c.jsxs("div",{className:"flex items-center gap-1.5 rounded-md border border-[var(--line)] px-2",children:[c.jsx("span",{className:"text-zinc-600",children:"#"}),c.jsx("input",{value:n,onChange:N=>r(N.target.value),placeholder:"filter by tag…",className:"mono w-full bg-transparent py-1.5 text-xs text-zinc-200 placeholder:text-zinc-600 focus:outline-none"}),n&&c.jsx("button",{type:"button",onClick:()=>r(""),className:"text-zinc-600 hover:text-zinc-300",title:"clear tag filter",children:c.jsx(Ue,{width:12,height:12})})]}),c.jsxs("div",{className:"mt-1.5 flex items-center gap-1.5 rounded-md border border-[var(--line)] px-2",children:[c.jsx("span",{className:"text-zinc-600",children:"⛃"}),c.jsx("input",{value:s,onChange:N=>i(N.target.value),placeholder:"attrs e.g. amount:gte:200, tier:eq:pro",title:"Typed search attributes: comma-separated key:op:value (ops eq ne gt gte lt lte)",className:"mono w-full bg-transparent py-1.5 text-xs text-zinc-200 placeholder:text-zinc-600 focus:outline-none"}),s&&c.jsx("button",{type:"button",onClick:()=>i(""),className:"text-zinc-600 hover:text-zinc-300",title:"clear attribute filter",children:c.jsx(Ue,{width:12,height:12})})]})]}),(e!=="all"||n||d.length>0)&&v.length>0&&c.jsxs("div",{className:"flex items-center gap-2 border-b border-[var(--line)] px-3 py-1.5",children:[c.jsxs("span",{className:"mono text-[10px] text-zinc-500",children:[v.length," ",e!=="all"?e:""," ",n&&`#${n}`,d.length>0&&` ⛃${d.length}`]}),c.jsx("button",{type:"button",disabled:g.isPending,onClick:()=>g.mutate("retry"),className:"mono ml-auto rounded border border-emerald-500/30 bg-emerald-500/10 px-1.5 py-0.5 text-[10px] text-emerald-300 transition-colors hover:bg-emerald-500/20 disabled:opacity-40",children:"retry all"}),c.jsx("button",{type:"button",disabled:g.isPending,onClick:()=>g.mutate("cancel"),className:"mono rounded border border-rose-500/30 bg-rose-500/10 px-1.5 py-0.5 text-[10px] text-rose-300 transition-colors hover:bg-rose-500/20 disabled:opacity-40",children:"cancel all"})]}),c.jsx("div",{className:"min-h-0 flex-1 overflow-auto",children:c.jsx(Vp,{runs:v,allRuns:f,health:p,loading:h,selected:o,onSelect:l,onSelectTag:r})})]}),c.jsx("main",{className:"min-h-0",children:o?c.jsx(Xp,{id:o,onOpenRun:l},o):c.jsx("div",{className:"grid h-full place-items-center text-center",children:c.jsxs("div",{className:"flex flex-col items-center",children:[c.jsx(To,{className:"h-10 w-10 text-zinc-800"}),c.jsx("p",{className:"mt-3 text-sm text-zinc-600",children:"Select a run to see its timeline."})]})})})]})]})]})}const Wp=new ec({defaultOptions:{queries:{refetchInterval:2e3,refetchOnWindowFocus:!1}}});tc(document.getElementById("root")).render(c.jsx($.StrictMode,{children:c.jsx(nc,{client:Wp,children:c.jsx(Yp,{})})}));