@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.
- package/dist/spa/assets/index-DwESVU5p.js +27 -0
- package/dist/spa/assets/index-EP2O5ZfT.css +1 -0
- package/dist/spa/assets/{preview-BliW2yHl.js → preview-Da-rD4KB.js} +1 -1
- package/dist/spa/index.html +3 -3
- package/dist/spa/preview.html +3 -3
- package/package.json +2 -2
- package/dist/spa/assets/index-D3Oc1CoF.js +0 -27
- package/dist/spa/assets/index-pki5m5-q.css +0 -1
- /package/dist/spa/assets/{index-BBKhxB-y.js → index-vYlHyRGm.js} +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
var Ar=e=>{throw TypeError(e)};var Mn=(e,t,n)=>t.has(e)||Ar("Cannot "+n);var ne=(e,t,n)=>(Mn(e,t,"read from private field"),n?n.call(e):t.get(e)),Be=(e,t,n)=>t.has(e)?Ar("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),Ve=(e,t,n,r)=>(Mn(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n),qe=(e,t,n)=>(Mn(e,t,"access private method"),n);import{S as Oa,s as Fa,h as Pr,g as Ba,n as qs,u as cn,r as $,a as Va,b as qa,c as Yt,i as Xs,j as c,K as Vn,X as Ue,B as lr,d as Xa,e as we,R as Ya,C as Ys,f as Wa,k as ie,l as Ka,m as Ga,o as Ua,p as Za,q as Qa,t as Ja,v as ur,P as ec,w as zn,x as tc,Q as nc,y as rc,z as sc}from"./index-vYlHyRGm.js";var Ae,Pe,ae,ye,_e,Ot,qn,Vs,ic=(Vs=class extends Oa{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,Ot).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),Fa(this.options,n)||ne(this,Ae).getMutationCache().notify({type:"observerOptionsUpdated",mutation:ne(this,ae),observer:this}),n!=null&&n.mutationKey&&this.options.mutationKey&&Pr(n.mutationKey)!==Pr(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,Ot).call(this),qe(this,_e,qn).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,Ot).call(this),qe(this,_e,qn).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,Ot=function(){var n;const t=((n=ne(this,ae))==null?void 0:n.state)??Ba();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})},qn=function(t){qs.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))})})},Vs);function Xe(e,t){const n=cn(),[r]=$.useState(()=>new ic(n,e));$.useEffect(()=>{r.setOptions(e)},[r,e]);const s=$.useSyncExternalStore($.useCallback(o=>r.subscribe(qs.batchCalls(o)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),i=$.useCallback((o,a)=>{r.mutate(o,a).catch(Va)},[r]);if(s.error&&qa(r.options.throwOnError,[s.error]))throw s.error;return{...s,mutate:i,mutateAsync:s.mutate}}const Tr="compensate:";function oc(e){return e.startsWith(Tr)?e.slice(Tr.length):e}function ac(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 cc(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 Wt(e){const t=e.lastIndexOf("@");return t===-1?"default":e.slice(t+1)}function Xn(e){const t=e.lastIndexOf("@");return t===-1?e:e.slice(0,t)}function lc(e){const t=new Map;for(const r of e){const s=Wt(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 uc(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 dc(e){var n,r;const t=new Map;for(const s of e)for(const i of s.liveWorkers){const o=Xn(i.group),a=t.get(i.instanceId);if(a===void 0){t.set(i.instanceId,{instanceId:i.instanceId,partition:Wt(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=Wt(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 fc(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(Xn(i.group)):i.kind==="step"&&r.add(Xn(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 Kt(e){return e<1e3?`${Math.round(e)}ms`:e<6e4?`${(e/1e3).toFixed(2)}s`:`${(e/6e4).toFixed(2)}m`}function Dr(e,t){return Kt(new Date(t).getTime()-new Date(e).getTime())}function Rr(e){return dr(new Date(e).getTime())}function dr(e){return new Date(e).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3})}const Ws={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"},hc={debug:"text-zinc-500",info:"text-zinc-300",warn:"text-amber-300",error:"text-red-300"},pc=["ok","failed","skipped"];function Ks({e}){return c.jsxs("div",{className:"flex gap-2 py-0.5",children:[c.jsx("span",{className:"shrink-0 text-zinc-600 tnum",children:dr(e.at)}),c.jsx("span",{className:`shrink-0 uppercase ${hc[e.level]}`,children:e.level}),c.jsx("span",{className:"min-w-0 break-words text-zinc-300",children:e.message})]})}function Lr({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?Ws[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:Kt(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:dr(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:["+",Kt(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(Ks,{e:u},`${u.at}-${d}`))})]})]})}function gc({events:e}){const{subs:t,stepLogs:n}=Xa(e),r=pc.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:Ws[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(Lr,{sub:a,showGroup:!1},a.id))})]},i)):c.jsx("ul",{className:"flex flex-col gap-1",children:t.map(i=>c.jsx(Lr,{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(Ks,{e:i},`${i.at}-${o}`))})]})]})}function mc({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(Ys,{width:11,height:11}):c.jsx(Wa,{width:11,height:11}),t?"copied":"copy"]})}function Gt({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(mc,{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 xc({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(Ya,{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 yc({step:e,run:t,onClose:n,onOpenRun:r}){const s=Yt(e),[i,o]=$.useState(!1),a=e.status==="failed",l=e.status==="pending"||e.status==="running",u=Xs(e.kind),d=Dr(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," · ",Vn[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:Kt(f)})}),c.jsx(Ce,{k:"duration",v:l?c.jsx("span",{className:"text-amber-300",children:"running…"}):Dr(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(lr,{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:Rr(e.startedAt)}),!l&&c.jsx(Ce,{k:"finished",v:Rr(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(gc,{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(xc,{id:s,onOpenRun:r})]}),e.input!==void 0&&c.jsx(Gt,{label:"input",value:e.input}),e.output!==void 0&&c.jsx(Gt,{label:"output",value:e.output})]})]})}function wc({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(Gt,{label:"input",value:e.input}),e.output!==void 0&&c.jsx(Gt,{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 bc={value:()=>{}};function ln(){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 Ft(n)}function Ft(e){this._=e}function vc(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}})}Ft.prototype=ln.prototype={constructor:Ft,on:function(e,t){var n=this._,r=vc(e+"",n),s,i=-1,o=r.length;if(arguments.length<2){for(;++i<o;)if((s=(e=r[i]).type)&&(s=Nc(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]=Hr(n[s],e.name,t);else if(t==null)for(s in n)n[s]=Hr(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 Ft(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 Nc(e,t){for(var n=0,r=e.length,s;n<r;++n)if((s=e[n]).name===t)return s.value}function Hr(e,t,n){for(var r=0,s=e.length;r<s;++r)if(e[r].name===t){e[r]=bc,e=e.slice(0,r).concat(e.slice(r+1));break}return n!=null&&e.push({name:t,value:n}),e}var Yn="http://www.w3.org/1999/xhtml";const Or={svg:"http://www.w3.org/2000/svg",xhtml:Yn,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function un(e){var t=e+="",n=t.indexOf(":");return n>=0&&(t=e.slice(0,n))!=="xmlns"&&(e=e.slice(n+1)),Or.hasOwnProperty(t)?{space:Or[t],local:e}:e}function _c(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===Yn&&t.documentElement.namespaceURI===Yn?t.createElement(e):t.createElementNS(n,e)}}function kc(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function Gs(e){var t=un(e);return(t.local?kc:_c)(t)}function Sc(){}function fr(e){return e==null?Sc:function(){return this.querySelector(e)}}function jc(e){typeof e!="function"&&(e=fr(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 Ec(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function Cc(){return[]}function Us(e){return e==null?Cc:function(){return this.querySelectorAll(e)}}function $c(e){return function(){return Ec(e.apply(this,arguments))}}function Mc(e){typeof e=="function"?e=$c(e):e=Us(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 Zs(e){return function(){return this.matches(e)}}function Qs(e){return function(t){return t.matches(e)}}var zc=Array.prototype.find;function Ic(e){return function(){return zc.call(this.children,e)}}function Ac(){return this.firstElementChild}function Pc(e){return this.select(e==null?Ac:Ic(typeof e=="function"?e:Qs(e)))}var Tc=Array.prototype.filter;function Dc(){return Array.from(this.children)}function Rc(e){return function(){return Tc.call(this.children,e)}}function Lc(e){return this.selectAll(e==null?Dc:Rc(typeof e=="function"?e:Qs(e)))}function Hc(e){typeof e!="function"&&(e=Zs(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 Js(e){return new Array(e.length)}function Oc(){return new ue(this._enter||this._groups.map(Js),this._parents)}function Ut(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}Ut.prototype={constructor:Ut,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 Fc(e){return function(){return e}}function Bc(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 Ut(e,i[o]);for(;o<l;++o)(a=t[o])&&(s[o]=a)}function Vc(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 Ut(e,i[a]);for(a=0;a<d;++a)(l=t[a])&&u.get(h[a])===l&&(s[a]=l)}function qc(e){return e.__data__}function Xc(e,t){if(!arguments.length)return Array.from(this,qc);var n=t?Vc:Bc,r=this._parents,s=this._groups;typeof e!="function"&&(e=Fc(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=Yc(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 Yc(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function Wc(){return new ue(this._exit||this._groups.map(Js),this._parents)}function Kc(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 Gc(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 Uc(){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 Zc(e){e||(e=Qc);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 Qc(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function Jc(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function el(){return Array.from(this)}function tl(){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 nl(){let e=0;for(const t of this)++e;return e}function rl(){return!this.node()}function sl(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 il(e){return function(){this.removeAttribute(e)}}function ol(e){return function(){this.removeAttributeNS(e.space,e.local)}}function al(e,t){return function(){this.setAttribute(e,t)}}function cl(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function ll(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}}function ul(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 dl(e,t){var n=un(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?ol:il:typeof t=="function"?n.local?ul:ll:n.local?cl:al)(n,t))}function ei(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function fl(e){return function(){this.style.removeProperty(e)}}function hl(e,t,n){return function(){this.style.setProperty(e,t,n)}}function pl(e,t,n){return function(){var r=t.apply(this,arguments);r==null?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function gl(e,t,n){return arguments.length>1?this.each((t==null?fl:typeof t=="function"?pl:hl)(e,t,n??"")):Ze(this.node(),e)}function Ze(e,t){return e.style.getPropertyValue(t)||ei(e).getComputedStyle(e,null).getPropertyValue(t)}function ml(e){return function(){delete this[e]}}function xl(e,t){return function(){this[e]=t}}function yl(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function wl(e,t){return arguments.length>1?this.each((t==null?ml:typeof t=="function"?yl:xl)(e,t)):this.node()[e]}function ti(e){return e.trim().split(/^|\s+/)}function hr(e){return e.classList||new ni(e)}function ni(e){this._node=e,this._names=ti(e.getAttribute("class")||"")}ni.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 ri(e,t){for(var n=hr(e),r=-1,s=t.length;++r<s;)n.add(t[r])}function si(e,t){for(var n=hr(e),r=-1,s=t.length;++r<s;)n.remove(t[r])}function bl(e){return function(){ri(this,e)}}function vl(e){return function(){si(this,e)}}function Nl(e,t){return function(){(t.apply(this,arguments)?ri:si)(this,e)}}function _l(e,t){var n=ti(e+"");if(arguments.length<2){for(var r=hr(this.node()),s=-1,i=n.length;++s<i;)if(!r.contains(n[s]))return!1;return!0}return this.each((typeof t=="function"?Nl:t?bl:vl)(n,t))}function kl(){this.textContent=""}function Sl(e){return function(){this.textContent=e}}function jl(e){return function(){var t=e.apply(this,arguments);this.textContent=t??""}}function El(e){return arguments.length?this.each(e==null?kl:(typeof e=="function"?jl:Sl)(e)):this.node().textContent}function Cl(){this.innerHTML=""}function $l(e){return function(){this.innerHTML=e}}function Ml(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??""}}function zl(e){return arguments.length?this.each(e==null?Cl:(typeof e=="function"?Ml:$l)(e)):this.node().innerHTML}function Il(){this.nextSibling&&this.parentNode.appendChild(this)}function Al(){return this.each(Il)}function Pl(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Tl(){return this.each(Pl)}function Dl(e){var t=typeof e=="function"?e:Gs(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function Rl(){return null}function Ll(e,t){var n=typeof e=="function"?e:Gs(e),r=t==null?Rl:typeof t=="function"?t:fr(t);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function Hl(){var e=this.parentNode;e&&e.removeChild(this)}function Ol(){return this.each(Hl)}function Fl(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function Bl(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function Vl(e){return this.select(e?Bl:Fl)}function ql(e){return arguments.length?this.property("__data__",e):this.node().__data__}function Xl(e){return function(t){e.call(this,t,this.__data__)}}function Yl(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 Wl(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 Kl(e,t,n){return function(){var r=this.__on,s,i=Xl(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 Gl(e,t,n){var r=Yl(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?Kl:Wl,s=0;s<i;++s)this.each(a(r[s],t,n));return this}function ii(e,t,n){var r=ei(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 Ul(e,t){return function(){return ii(this,e,t)}}function Zl(e,t){return function(){return ii(this,e,t.apply(this,arguments))}}function Ql(e,t){return this.each((typeof t=="function"?Zl:Ul)(e,t))}function*Jl(){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 oi=[null];function ue(e,t){this._groups=e,this._parents=t}function St(){return new ue([[document.documentElement]],oi)}function eu(){return this}ue.prototype=St.prototype={constructor:ue,select:jc,selectAll:Mc,selectChild:Pc,selectChildren:Lc,filter:Hc,data:Xc,enter:Oc,exit:Wc,join:Kc,merge:Gc,selection:eu,order:Uc,sort:Zc,call:Jc,nodes:el,node:tl,size:nl,empty:rl,each:sl,attr:dl,style:gl,property:wl,classed:_l,text:El,html:zl,raise:Al,lower:Tl,append:Dl,insert:Ll,remove:Ol,clone:Vl,datum:ql,on:Gl,dispatch:Ql,[Symbol.iterator]:Jl};function le(e){return typeof e=="string"?new ue([[document.querySelector(e)]],[document.documentElement]):new ue([[e]],oi)}function tu(e){let t;for(;t=e.sourceEvent;)e=t;return e}function de(e,t){if(e=tu(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 nu={passive:!1},gt={capture:!0,passive:!1};function In(e){e.stopImmediatePropagation()}function Ke(e){e.preventDefault(),e.stopImmediatePropagation()}function ai(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 ci(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 Wn(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}})}Wn.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function ru(e){return!e.ctrlKey&&!e.button}function su(){return this.parentNode}function iu(e,t){return t??{x:e.x,y:e.y}}function ou(){return navigator.maxTouchPoints||"ontouchstart"in this}function li(){var e=ru,t=su,n=iu,r=ou,s={},i=ln("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,nu).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),ai(w.view),In(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),ci(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,T;for(D=0;D<R;++D)(T=b(this,E,w,C,L[D].identifier,L[D]))&&(In(w),T("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])&&(In(w),R("end",w,C[E]))}function b(w,C,L,E,R,D){var T=i.copy(),z=de(D||L,C),O,P,m;if((m=n.call(w,new Wn("beforestart",{sourceEvent:L,target:h,identifier:R,active:o,x:z[0],y:z[1],dx:0,dy:0,dispatch:T}),E))!=null)return O=m.x-z[0]||0,P=m.y-z[1]||0,function k(_,M,S){var j=z,I;switch(_){case"start":s[R]=k,I=o++;break;case"end":delete s[R],--o;case"drag":z=de(S||M,C),I=o;break}T.call(_,w,new Wn(_,{sourceEvent:M,subject:m,target:h,identifier:R,active:I,x:z[0]+O,y:z[1]+P,dx:z[0]-j[0],dy:z[1]-j[1],dispatch:T}),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 pr(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function ui(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function jt(){}var mt=.7,Zt=1/mt,Ge="\\s*([+-]?\\d+)\\s*",xt="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",ge="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",au=/^#([0-9a-f]{3,8})$/,cu=new RegExp(`^rgb\\(${Ge},${Ge},${Ge}\\)$`),lu=new RegExp(`^rgb\\(${ge},${ge},${ge}\\)$`),uu=new RegExp(`^rgba\\(${Ge},${Ge},${Ge},${xt}\\)$`),du=new RegExp(`^rgba\\(${ge},${ge},${ge},${xt}\\)$`),fu=new RegExp(`^hsl\\(${xt},${ge},${ge}\\)$`),hu=new RegExp(`^hsla\\(${xt},${ge},${ge},${xt}\\)$`),Fr={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};pr(jt,yt,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Br,formatHex:Br,formatHex8:pu,formatHsl:gu,formatRgb:Vr,toString:Vr});function Br(){return this.rgb().formatHex()}function pu(){return this.rgb().formatHex8()}function gu(){return di(this).formatHsl()}function Vr(){return this.rgb().formatRgb()}function yt(e){var t,n;return e=(e+"").trim().toLowerCase(),(t=au.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?qr(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=cu.exec(e))?new ce(t[1],t[2],t[3],1):(t=lu.exec(e))?new ce(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=uu.exec(e))?It(t[1],t[2],t[3],t[4]):(t=du.exec(e))?It(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=fu.exec(e))?Wr(t[1],t[2]/100,t[3]/100,1):(t=hu.exec(e))?Wr(t[1],t[2]/100,t[3]/100,t[4]):Fr.hasOwnProperty(e)?qr(Fr[e]):e==="transparent"?new ce(NaN,NaN,NaN,0):null}function qr(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 mu(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 Kn(e,t,n,r){return arguments.length===1?mu(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}pr(ce,Kn,ui(jt,{brighter(e){return e=e==null?Zt:Math.pow(Zt,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),Qt(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:Xr,formatHex:Xr,formatHex8:xu,formatRgb:Yr,toString:Yr}));function Xr(){return`#${Re(this.r)}${Re(this.g)}${Re(this.b)}`}function xu(){return`#${Re(this.r)}${Re(this.g)}${Re(this.b)}${Re((isNaN(this.opacity)?1:this.opacity)*255)}`}function Yr(){const e=Qt(this.opacity);return`${e===1?"rgb(":"rgba("}${Le(this.r)}, ${Le(this.g)}, ${Le(this.b)}${e===1?")":`, ${e})`}`}function Qt(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 Wr(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 di(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 yu(e,t,n,r){return arguments.length===1?di(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}pr(fe,yu,ui(jt,{brighter(e){return e=e==null?Zt:Math.pow(Zt,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(An(e>=240?e-240:e+120,s,r),An(e,s,r),An(e<120?e+240:e-120,s,r),this.opacity)},clamp(){return new fe(Kr(this.h),At(this.s),At(this.l),Qt(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=Qt(this.opacity);return`${e===1?"hsl(":"hsla("}${Kr(this.h)}, ${At(this.s)*100}%, ${At(this.l)*100}%${e===1?")":`, ${e})`}`}}));function Kr(e){return e=(e||0)%360,e<0?e+360:e}function At(e){return Math.max(0,Math.min(1,e||0))}function An(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 fi=e=>()=>e;function wu(e,t){return function(n){return e+n*t}}function bu(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 vu(e){return(e=+e)==1?hi:function(t,n){return n-t?bu(t,n,e):fi(isNaN(t)?n:t)}}function hi(e,t){var n=t-e;return n?wu(e,n):fi(isNaN(e)?t:e)}const Gr=function e(t){var n=vu(t);function r(s,i){var o=n((s=Kn(s)).r,(i=Kn(i)).r),a=n(s.g,i.g),l=n(s.b,i.b),u=hi(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 Gn=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Pn=new RegExp(Gn.source,"g");function Nu(e){return function(){return e}}function _u(e){return function(t){return e(t)+""}}function ku(e,t){var n=Gn.lastIndex=Pn.lastIndex=0,r,s,i,o=-1,a=[],l=[];for(e=e+"",t=t+"";(r=Gn.exec(e))&&(s=Pn.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=Pn.lastIndex;return n<t.length&&(i=t.slice(n),a[o]?a[o]+=i:a[++o]=i),a.length<2?l[0]?_u(l[0].x):Nu(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 Ur=180/Math.PI,Un={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function pi(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)*Ur,skewX:Math.atan(l)*Ur,scaleX:o,scaleY:a}}var Pt;function Su(e){const t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?Un:pi(t.a,t.b,t.c,t.d,t.e,t.f)}function ju(e){return e==null||(Pt||(Pt=document.createElementNS("http://www.w3.org/2000/svg","g")),Pt.setAttribute("transform",e),!(e=Pt.transform.baseVal.consolidate()))?Un:(e=e.matrix,pi(e.a,e.b,e.c,e.d,e.e,e.f))}function gi(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 Eu=gi(Su,"px, ","px)","deg)"),Cu=gi(ju,", ",")",")"),$u=1e-12;function Zr(e){return((e=Math.exp(e))+1/e)/2}function Mu(e){return((e=Math.exp(e))-1/e)/2}function zu(e){return((e=Math.exp(2*e))-1)/(e+1)}const Iu=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<$u)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=Zr(C),T=u/(n*N)*(D*zu(t*R+C)-Mu(C));return[a+T*p,l+T*g,u*D/Zr(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,mi=1e3,Jt,ft,en=0,Oe=0,dn=0,wt=typeof performance=="object"&&performance.now?performance:Date,xi=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function gr(){return Oe||(xi(Au),Oe=wt.now()+dn)}function Au(){Oe=0}function tn(){this._call=this._time=this._next=null}tn.prototype=yi.prototype={constructor:tn,restart:function(e,t,n){if(typeof e!="function")throw new TypeError("callback is not a function");n=(n==null?gr():+n)+(t==null?0:+t),!this._next&&ft!==this&&(ft?ft._next=this:Jt=this,ft=this),this._call=e,this._time=n,Zn()},stop:function(){this._call&&(this._call=null,this._time=1/0,Zn())}};function yi(e,t,n){var r=new tn;return r.restart(e,t,n),r}function Pu(){gr(),++Qe;for(var e=Jt,t;e;)(t=Oe-e._time)>=0&&e._call.call(void 0,t),e=e._next;--Qe}function Qr(){Oe=(en=wt.now())+dn,Qe=dt=0;try{Pu()}finally{Qe=0,Du(),Oe=0}}function Tu(){var e=wt.now(),t=e-en;t>mi&&(dn-=t,en=e)}function Du(){for(var e,t=Jt,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:Jt=n);ft=e,Zn(r)}function Zn(e){if(!Qe){dt&&(dt=clearTimeout(dt));var t=e-Oe;t>24?(e<1/0&&(dt=setTimeout(Qr,e-wt.now()-dn)),lt&&(lt=clearInterval(lt))):(lt||(en=wt.now(),lt=setInterval(Tu,mi)),Qe=1,xi(Qr))}}function Jr(e,t,n){var r=new tn;return t=t==null?0:+t,r.restart(s=>{r.stop(),e(s+t)},t,n),r}var Ru=ln("start","end","cancel","interrupt"),Lu=[],wi=0,es=1,Qn=2,Bt=3,ts=4,Jn=5,Vt=6;function fn(e,t,n,r,s,i){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;Hu(e,n,{name:t,index:r,group:s,on:Ru,tween:Lu,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:wi})}function mr(e,t){var n=pe(e,t);if(n.state>wi)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 Hu(e,t,n){var r=e.__transition,s;r[t]=n,n.timer=yi(i,0,n.time);function i(u){n.state=es,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!==es)return l();for(d in r)if(p=r[d],p.name===n.name){if(p.state===Bt)return Jr(o);p.state===ts?(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(Jr(function(){n.state===Bt&&(n.state=ts,n.timer.restart(a,n.delay,n.time),a(u))}),n.state=Qn,n.on.call("start",e,e.__data__,n.index,n.group),n.state===Qn){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=Jn,1),f=-1,h=s.length;++f<h;)s[f].call(e,d);n.state===Jn&&(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>Qn&&r.state<Jn,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 Ou(e){return this.each(function(){qt(this,e)})}function Fu(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 Bu(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 Vu(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?Fu:Bu)(n,e,t))}function xr(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 bi(e,t){var n;return(typeof t=="number"?ze:t instanceof yt?Gr:(n=yt(t))?(t=n,Gr):ku)(e,t)}function qu(e){return function(){this.removeAttribute(e)}}function Xu(e){return function(){this.removeAttributeNS(e.space,e.local)}}function Yu(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 Wu(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 Ku(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 Gu(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 Uu(e,t){var n=un(e),r=n==="transform"?Cu:bi;return this.attrTween(e,typeof t=="function"?(n.local?Gu:Ku)(n,r,xr(this,"attr."+e,t)):t==null?(n.local?Xu:qu)(n):(n.local?Wu:Yu)(n,r,t))}function Zu(e,t){return function(n){this.setAttribute(e,t.call(this,n))}}function Qu(e,t){return function(n){this.setAttributeNS(e.space,e.local,t.call(this,n))}}function Ju(e,t){var n,r;function s(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&Qu(e,i)),n}return s._value=t,s}function ed(e,t){var n,r;function s(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&Zu(e,i)),n}return s._value=t,s}function td(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=un(e);return this.tween(n,(r.local?Ju:ed)(r,t))}function nd(e,t){return function(){mr(this,e).delay=+t.apply(this,arguments)}}function rd(e,t){return t=+t,function(){mr(this,e).delay=t}}function sd(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?nd:rd)(t,e)):pe(this.node(),t).delay}function id(e,t){return function(){me(this,e).duration=+t.apply(this,arguments)}}function od(e,t){return t=+t,function(){me(this,e).duration=t}}function ad(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?id:od)(t,e)):pe(this.node(),t).duration}function cd(e,t){if(typeof t!="function")throw new Error;return function(){me(this,e).ease=t}}function ld(e){var t=this._id;return arguments.length?this.each(cd(t,e)):pe(this.node(),t).ease}function ud(e,t){return function(){var n=t.apply(this,arguments);if(typeof n!="function")throw new Error;me(this,e).ease=n}}function dd(e){if(typeof e!="function")throw new Error;return this.each(ud(this._id,e))}function fd(e){typeof e!="function"&&(e=Zs(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 hd(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 pd(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 gd(e,t,n){var r,s,i=pd(t)?mr:me;return function(){var o=i(this,e),a=o.on;a!==r&&(s=(r=a).copy()).on(t,n),o.on=s}}function md(e,t){var n=this._id;return arguments.length<2?pe(this.node(),n).on.on(e):this.each(gd(n,e,t))}function xd(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function yd(){return this.on("end.remove",xd(this._id))}function wd(e){var t=this._name,n=this._id;typeof e!="function"&&(e=fr(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,fn(u[h],t,n,h,u,pe(d,n)));return new ke(i,this._parents,t,n)}function bd(e){var t=this._name,n=this._id;typeof e!="function"&&(e=Us(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])&&fn(p,t,n,x,h,g);i.push(h),o.push(d)}return new ke(i,o,t,n)}var vd=St.prototype.constructor;function Nd(){return new vd(this._groups,this._parents)}function _d(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 vi(e){return function(){this.style.removeProperty(e)}}function kd(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 Sd(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 jd(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=vi(t)):void 0;(u!==n||s!==d)&&(r=(n=u).copy()).on(o,s=d),l.on=r}}function Ed(e,t,n){var r=(e+="")=="transform"?Eu:bi;return t==null?this.styleTween(e,_d(e,r)).on("end.style."+e,vi(e)):typeof t=="function"?this.styleTween(e,Sd(e,r,xr(this,"style."+e,t))).each(jd(this._id,e)):this.styleTween(e,kd(e,r,t),n).on("end.style."+e,null)}function Cd(e,t,n){return function(r){this.style.setProperty(e,t.call(this,r),n)}}function $d(e,t,n){var r,s;function i(){var o=t.apply(this,arguments);return o!==s&&(r=(s=o)&&Cd(e,o,n)),r}return i._value=t,i}function Md(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,$d(e,t,n??""))}function zd(e){return function(){this.textContent=e}}function Id(e){return function(){var t=e(this);this.textContent=t??""}}function Ad(e){return this.tween("text",typeof e=="function"?Id(xr(this,"text",e)):zd(e==null?"":e+""))}function Pd(e){return function(t){this.textContent=e.call(this,t)}}function Td(e){var t,n;function r(){var s=e.apply(this,arguments);return s!==n&&(t=(n=s)&&Pd(s)),t}return r._value=e,r}function Dd(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,Td(e))}function Rd(){for(var e=this._name,t=this._id,n=Ni(),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);fn(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 Ld(){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 Hd=0;function ke(e,t,n,r){this._groups=e,this._parents=t,this._name=n,this._id=r}function Ni(){return++Hd}var xe=St.prototype;ke.prototype={constructor:ke,select:wd,selectAll:bd,selectChild:xe.selectChild,selectChildren:xe.selectChildren,filter:fd,merge:hd,selection:Nd,transition:Rd,call:xe.call,nodes:xe.nodes,node:xe.node,size:xe.size,empty:xe.empty,each:xe.each,on:md,attr:Uu,attrTween:td,style:Ed,styleTween:Md,text:Ad,textTween:Dd,remove:yd,tween:Vu,delay:sd,duration:ad,ease:ld,easeVarying:dd,end:Ld,[Symbol.iterator]:xe[Symbol.iterator]};function Od(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var Fd={time:null,delay:0,duration:250,ease:Od};function Bd(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 Vd(e){var t,n;e instanceof ke?(t=e._id,e=e._name):(t=Ni(),(n=Fd).time=gr(),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])&&fn(l,e,t,u,o,n||Bd(l,t));return new ke(r,this._parents,e,t)}St.prototype.interrupt=Ou;St.prototype.transition=Vd;const Tt=e=>()=>e;function qd(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 hn=new be(1,0,0);_i.prototype=be.prototype;function _i(e){for(;!e.__zoom;)if(!(e=e.parentNode))return hn;return e.__zoom}function Tn(e){e.stopImmediatePropagation()}function ut(e){e.preventDefault(),e.stopImmediatePropagation()}function Xd(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function Yd(){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 ns(){return this.__zoom||hn}function Wd(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function Kd(){return navigator.maxTouchPoints||"ontouchstart"in this}function Gd(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 ki(){var e=Xd,t=Yd,n=Gd,r=Wd,s=Kd,i=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],a=250,l=Iu,u=ln("start","zoom","end"),d,f,h,p=500,g=150,x=0,v=10;function y(m){m.property("__zoom",ns).on("wheel.zoom",R,{passive:!1}).on("mousedown.zoom",D).on("dblclick.zoom",T).filter(s).on("touchstart.zoom",z).on("touchmove.zoom",O).on("touchend.zoom touchcancel.zoom",P).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",ns),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,I=_==null?w(S):typeof _=="function"?_.apply(this,arguments):_,H=j.invert(I),F=typeof k=="function"?k.apply(this,arguments):k;return n(b(N(j,F),I,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),I=this.__zoom,H=M==null?w(j):typeof M=="function"?M.apply(this,arguments):M;return n(hn.translate(H[0],H[1]).scale(I.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,I=L(S,j).event(M),H=t.apply(S,j),F=_==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(F).concat(X/V.k),B.invert(F).concat(X/B.k));return function(U){if(U===1)U=B;else{var A=Y(U),q=X/A[2];U=new be(q,F[0]-A[0]*q,F[1]-A[1]*q)}I.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 qd(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(I,g),_.zoom("mouse",n(b(N(M,S),_.mouse[0],_.mouse[1]),_.extent,o));function I(){_.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",F,!0).on("mouseup.zoom",X,!0),j=de(m,_),I=m.clientX,H=m.clientY;ai(m.view),Tn(m),M.mouse=[j,this.__zoom.invert(j)],qt(this),M.start();function F(V){if(ut(V),!M.moved){var B=V.clientX-I,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),ci(V.view,M.moved),ut(V),M.event(V).end()}}function T(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),I=n(b(N(_,j),M,S),t.apply(this,k),o);ut(m),a>0?le(this).transition().duration(a).call(C,I,M,m):le(this).call(y.transform,I,M,m)}}function z(m,...k){if(e.apply(this,arguments)){var _=m.touches,M=_.length,S=L(this,k,m.changedTouches.length===M).event(m),j,I,H,F;for(Tn(m),I=0;I<M;++I)H=_[I],F=de(H,this),F=[F,this.__zoom.invert(F),H.identifier],S.touch0?!S.touch1&&S.touch0[2]!==F[2]&&(S.touch1=F,S.taps=0):(S.touch0=F,j=!0,S.taps=1+!!d);d&&(d=clearTimeout(d)),j&&(S.taps<2&&(f=F[0],d=setTimeout(function(){d=null},p)),qt(this),S.start())}}function O(m,...k){if(this.__zooming){var _=L(this,k).event(m),M=m.changedTouches,S=M.length,j,I,H,F;for(ut(m),j=0;j<S;++j)I=M[j],H=de(I,this),_.touch0&&_.touch0[2]===I.identifier?_.touch0[0]=H:_.touch1&&_.touch1[2]===I.identifier&&(_.touch1[0]=H);if(I=_.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,A=(A=Y[0]-V[0])*A+(A=Y[1]-V[1])*A;I=N(I,Math.sqrt(U/A)),H=[(X[0]+B[0])/2,(X[1]+B[1])/2],F=[(V[0]+Y[0])/2,(V[1]+Y[1])/2]}else if(_.touch0)H=_.touch0[0],F=_.touch0[1];else return;_.zoom("touch",n(b(I,H,F),_.extent,o))}}function P(m,...k){if(this.__zooming){var _=L(this,k).event(m),M=m.changedTouches,S=M.length,j,I;for(Tn(m),h&&clearTimeout(h),h=setTimeout(function(){h=null},p),j=0;j<S;++j)I=M[j],_.touch0&&_.touch0[2]===I.identifier?delete _.touch0:_.touch1&&_.touch1[2]===I.identifier&&delete _.touch1;if(_.touch1&&!_.touch0&&(_.touch0=_.touch1,delete _.touch1),_.touch0)_.touch0[1]=this.__zoom.invert(_.touch0[0]);else if(_.end(),_.taps===2&&(I=de(I,this),Math.hypot(f[0]-I[0],f[1]-I[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]],Si=["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 ji={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 nn;(function(e){e.Arrow="arrow",e.ArrowClosed="arrowclosed"})(nn||(nn={}));var G;(function(e){e.Left="left",e.Top="top",e.Right="right",e.Bottom="bottom"})(G||(G={}));const rs={[G.Left]:G.Right,[G.Right]:G.Left,[G.Top]:G.Bottom,[G.Bottom]:G.Top};function Ei(e){return e===null?null:e?"valid":"invalid"}const Ci=e=>"id"in e&&"source"in e&&"target"in e,Ud=e=>"id"in e&&"position"in e&&!("source"in e)&&!("target"in e),yr=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}},Zd=(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):yr(s)?s:t.nodeLookup.get(s.id));const a=o?rn(o,t.nodeOrigin):{x:0,y:0,x2:0,y2:0};return pn(r,a)},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return gn(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=rn(r);n=pn(n,s)}}),gn(n)},$i=(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},Qd=(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 er(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 tr({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=wr(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 Mi({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)?Fe(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 Jd({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=Qd(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),Fe=(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 zi(e,t,n){const{width:r,height:s}=je(n),{x:i,y:o}=n.internals.positionAbsolute;return Fe(e,[[i,o],[i+r,o+s]],t)}const ss=(e,t,n)=>e<t?et(Math.abs(e-t),1,t)/t:e>n?-et(Math.abs(e-n),1,t)/t:0,Ii=(e,t,n=15,r=40)=>{const s=ss(e.x,r,t.width-r)*n,i=ss(e.y,r,t.height-r)*n;return[s,i]},pn=(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)}),nr=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),gn=({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}=yr(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}},rn=(e,t=[0,0])=>{var s,i;const{x:n,y:r}=yr(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)}},Ai=(e,t)=>gn(pn(nr(e),nr(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)},is=e=>he(e.width)&&he(e.height)&&he(e.x)&&he(e.y),he=e=>!isNaN(e)&&isFinite(e),ef=(e,t)=>{},mn=(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?mn(a,o):a},Pi=({x:e,y:t},[n,r,s])=>({x:e*s+n,y:t*s+r}),wr=(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}},sn=()=>{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 Ti(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 Di(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?mn(a,t):a;return{xSnapped:l,ySnapped:u,...a}}const xn=e=>({width:e.offsetWidth,height:e.offsetHeight}),Ri=e=>{var t;return((t=e.getRootNode)==null?void 0:t.call(e))||(window==null?void 0:window.document)},tf=["INPUT","SELECT","TEXTAREA"];function rr(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 tf.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 Li=e=>"clientX"in e,ve=(e,t)=>{var i,o;const n=Li(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)}},os=(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,...xn(o)}})};function Hi({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 as({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 Oi({sourceX:e,sourceY:t,sourcePosition:n=G.Bottom,targetX:r,targetY:s,targetPosition:i=G.Top,curvature:o=.25}){const[a,l]=as({pos:n,x1:e,y1:t,x2:r,y2:s,c:o}),[u,d]=as({pos:i,x1:r,y1:s,x2:e,y2:t,c:o}),[f,h,p,g]=Hi({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 Fi({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 nf({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 rf({sourceNode:e,targetNode:t,width:n,height:r,transform:s}){const i=pn(rn(e),rn(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,gn(i))>0}const sf=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`xy-edge__${e}${t||""}-${n}${r||""}`,of=(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)),af=(e,t)=>{if(!e.source||!e.target)return t;let n;return Ci(e)?n={...e}:n={...e,id:sf(e)},of(n,t)?t:(n.sourceHandle===null&&delete n.sourceHandle,n.targetHandle===null&&delete n.targetHandle,t.concat(n))};function Bi({sourceX:e,sourceY:t,targetX:n,targetY:r}){const[s,i,o,a]=Fi({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,s,i,o,a]}const cs={[G.Left]:{x:-1,y:0},[G.Right]:{x:1,y:0},[G.Top]:{x:0,y:-1},[G.Bottom]:{x:0,y:1}},cf=({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},ls=(e,t)=>Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2));function lf({source:e,sourcePosition:t=G.Bottom,target:n,targetPosition:r=G.Top,center:s,offset:i}){const o=cs[t],a=cs[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=cf({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]=Fi({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 P=Math.abs(e[f]-n[f]);if(P<=i){const m=Math.min(i-1,i-P);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 P=f==="x"?"y":"x",m=o[f]===a[P],k=l[P]>u[P],_=l[P]<u[P];(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},T={x:u.x+y.x,y:u.y+y.y},z=Math.max(Math.abs(D.x-p[0].x),Math.abs(T.x-p[0].x)),O=Math.max(Math.abs(D.y-p[0].y),Math.abs(T.y-p[0].y));z>=O?(g=(D.x+T.x)/2,x=p[0].y):(g=p[0].x,x=(D.y+T.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 uf(e,t,n,r){const s=Math.min(ls(e,t)/2,ls(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 sr({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]=lf({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=uf(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 us(e){var t;return e&&!!(e.internals.handleBounds||(t=e.handles)!=null&&t.length)&&!!(e.measured.width||e.width||e.initialWidth)}function df(e){var f;const{sourceNode:t,targetNode:n}=e;if(!us(t)||!us(n))return null;const r=t.internals.handleBounds||ds(t.handles),s=n.internals.handleBounds||ds(n.handles),i=fs((r==null?void 0:r.source)??[],e.sourceHandle),o=fs(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 ds(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 fs(e,t){return e&&(t?e.find(n=>n.id===t):e[0])||null}function ir(e,t){return e?typeof e=="string"?e:`${t?`${t}__`:""}${Object.keys(e).sort().map(r=>`${r}=${e[r]}`).join("&")}`:""}function ff(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=ir(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 br={nodeOrigin:[0,0],nodeExtent:bt,elevateNodesOnSelect:!0,defaults:{}},hf={...br,checkEquality:!0};function vr(e,t){const n={...e};for(const r in t)t[r]!==void 0&&(n[r]=t[r]);return n}function pf(e,t,n){const r=vr(br,n);for(const s of e.values())if(s.parentId)Nr(s,e,t,r);else{const i=Et(s,r.nodeOrigin),o=nt(s.extent)?s.extent:r.nodeExtent,a=Fe(i,o,je(s));s.internals.positionAbsolute=a}}function or(e,t,n,r){var a,l;const s=vr(hf,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=Fe(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:Vi(u,o),userNode:u}},t.set(u.id,d)}u.parentId&&Nr(d,t,n,r)}}function gf(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 Nr(e,t,n,r){const{elevateNodesOnSelect:s,nodeOrigin:i,nodeExtent:o}=vr(br,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}gf(e,n);const u=s?1e3:0,{x:d,y:f,z:h}=mf(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 Vi(e,t){return(he(e.zIndex)?e.zIndex:0)+(e.selected?t:0)}function mf(e,t,n,r,s){const{x:i,y:o}=t.internals.positionAbsolute,a=je(e),l=Et(e,n),u=nt(e.extent)?Fe(l,e.extent,a):l;let d=Fe({x:i+u.x,y:o+u.y},r,a);e.extent==="parent"&&(d=zi(d,a,t));const f=Vi(e,s),h=t.internals.z??0;return{x:d.x,y:d.y,z:h>f?h:f}}function _r(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=Ai(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 xf(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=xn(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=zi(b,g,t.get(p.parentId)):N&&(b=Fe(b,N,g)),p.measured=g,p.internals={...p.internals,positionAbsolute:b,handleBounds:{source:os("source",h.nodeElement,y,d,p.id),target:os("target",h.nodeElement,y,d,p.id)}},p.parentId&&Nr(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=_r(f,t,n,s);l.push(...h)}return{changes:l,updatedInternals:a}}async function yf({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 qi(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 Xi(e,t){if(!e.parentId)return!1;const n=t.get(e.parentId);return n?n.selected?!0:Xi(n,t):!1}function hs(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 wf(e,t,n,r){const s=new Map;for(const[i,o]of e)if((o.selected||o.id===r)&&(!o.parentId||!Xi(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 Dn({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 bf({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:T,y:z},O){const{nodeLookup:P,nodeExtent:m,snapGrid:k,snapToGrid:_,nodeOrigin:M,onNodeDrag:S,onSelectionDrag:j,onError:I,updateNodePositions:H}=t();i={x:T,y:z};let F=!1,X={x:0,y:0,x2:0,y2:0};if(a.size>1&&m){const V=Ct(a);X=nr(V)}for(const[V,B]of a){if(!P.has(V))continue;let Y={x:T-B.distance.x,y:z-B.distance.y};_&&(Y=mn(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:A,positionAbsolute:q}=Mi({nodeId:V,nextPosition:Y,nodeLookup:P,nodeExtent:U,nodeOrigin:M,onError:I});F=F||B.position.x!==A.x||B.position.y!==A.y,B.position=A,B.internals.positionAbsolute=q}if(F&&(H(a,!0),O&&(r||S||!w&&j))){const[V,B]=Dn({nodeId:w,dragItems:a,nodeLookup:P});r==null||r(O,a,V,B),S==null||S(O,V,B),w||j==null||j(O,B)}}async function E(){if(!d)return;const{transform:T,panBy:z,autoPanSpeed:O}=t(),[P,m]=Ii(u,d,O);(P!==0||m!==0)&&(i.x=(i.x??0)-P/T[2],i.y=(i.y??0)-m/T[2],await z({x:P,y:m})&&L(i,null)),o=requestAnimationFrame(E)}function R(T){var F;const{nodeLookup:z,multiSelectionActive:O,nodesDraggable:P,transform:m,snapGrid:k,snapToGrid:_,selectNodesOnDrag:M,onNodeDragStart:S,onSelectionDragStart:j,unselectNodesAndEdges:I}=t();f=!0,(!M||!b)&&!O&&w&&((F=z.get(w))!=null&&F.selected||I()),b&&M&&w&&(e==null||e(w));const H=ht(T.sourceEvent,{transform:m,snapGrid:k,snapToGrid:_,containerBounds:d});if(i=H,a=wf(z,P,H,w),a.size>0&&(n||S||!w&&j)){const[X,V]=Dn({nodeId:w,dragItems:a,nodeLookup:z});n==null||n(T.sourceEvent,a,X,V),S==null||S(T.sourceEvent,X,V),w||j==null||j(T.sourceEvent,V)}}const D=li().clickDistance(C).on("start",T=>{const{domNode:z,nodeDragThreshold:O,transform:P,snapGrid:m,snapToGrid:k}=t();d=(z==null?void 0:z.getBoundingClientRect())||null,p=!1,O===0&&R(T),i=ht(T.sourceEvent,{transform:P,snapGrid:m,snapToGrid:k,containerBounds:d}),u=ve(T.sourceEvent,d)}).on("drag",T=>{const{autoPanOnNodeDrag:z,transform:O,snapGrid:P,snapToGrid:m,nodeDragThreshold:k,nodeLookup:_}=t(),M=ht(T.sourceEvent,{transform:O,snapGrid:P,snapToGrid:m,containerBounds:d});if((T.sourceEvent.type==="touchmove"&&T.sourceEvent.touches.length>1||w&&!_.has(w))&&(p=!0),!p){if(!l&&z&&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(T)}(i.x!==M.xSnapped||i.y!==M.ySnapped)&&a&&f&&(u=ve(T.sourceEvent,d),L(M,T.sourceEvent))}}).on("end",T=>{if(!(!f||p)&&(l=!1,f=!1,cancelAnimationFrame(o),a.size>0)){const{nodeLookup:z,updateNodePositions:O,onNodeDragStop:P,onSelectionDragStop:m}=t();if(O(a,!1),s||P||!w&&m){const[k,_]=Dn({nodeId:w,dragItems:a,nodeLookup:z,dragging:!1});s==null||s(T.sourceEvent,a,k,_),P==null||P(T.sourceEvent,k,_),w||m==null||m(T.sourceEvent,_)}}}).filter(T=>{const z=T.target;return!T.button&&(!v||!hs(z,`.${v}`,N))&&(!y||hs(z,y,N))});h.call(D)}function x(){h==null||h.on(".drag",null)}return{update:g,destroy:x}}function vf(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 Nf=250;function _f(e,t,n,r){var a,l;let s=[],i=1/0;const o=vf(e,n,t+Nf);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 Yi(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 Wi(e,t){return e||(t!=null&&t.classList.contains("target")?"target":t!=null&&t.classList.contains("source")?"source":null)}function kf(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}const Ki=()=>!0;function Sf(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=Ki,onReconnectEnd:N,updateConnection:b,getTransform:w,getFromHandle:C,autoPanSpeed:L}){const E=Ri(e.target);let R=0,D;const{x:T,y:z}=ve(e),O=E==null?void 0:E.elementFromPoint(T,z),P=Wi(i,O),m=a==null?void 0:a.getBoundingClientRect();if(!m||!P)return;const k=Yi(s,P,r,l,t);if(!k)return;let _=ve(e,m),M=!1,S=null,j=!1,I=null;function H(){if(!d||!m)return;const[q,K]=Ii(_,m,L);h({x:q,y:K}),R=requestAnimationFrame(H)}const F={...k,nodeId:s,type:P,position:k.position},X=l.get(s),B={inProgress:!0,isValid:null,from:_t(X,F,G.Left,!0),fromHandle:F,fromPosition:F.position,fromNode:X,to:_,toHandle:null,toPosition:rs[F.position],toNode:null};b(B);let Y=B;g==null||g(e,{nodeId:s,handleId:r,handleType:P});function U(q){if(!C()||!F){A(q);return}const K=w();_=ve(q,m),D=_f($t(_,K,!1,[1,1]),n,l,F),M||(H(),M=!0);const Z=Gi(q,{handle:D,connectionMode:t,fromNodeId:s,fromHandleId:r,fromType:o?"target":"source",isValidConnection:y,doc:E,lib:u,flowId:f,nodeLookup:l});I=Z.handleDomNode,S=Z.connection,j=kf(!!D,Z.isValid);const W={...Y,isValid:j,to:D&&j?Pi({x:D.x,y:D.y},K):_,toHandle:Z.toHandle,toPosition:j&&Z.toHandle?Z.toHandle.position:rs[F.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 A(q){(D||I)&&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,I=null,E.removeEventListener("mousemove",U),E.removeEventListener("mouseup",A),E.removeEventListener("touchmove",U),E.removeEventListener("touchend",A)}E.addEventListener("mousemove",U),E.addEventListener("mouseup",A),E.addEventListener("touchmove",U),E.addEventListener("touchend",A)}function Gi(e,{handle:t,connectionMode:n,fromNodeId:r,fromHandleId:s,fromType:i,doc:o,lib:a,flowId:l,isValidConnection:u=Ki,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=Wi(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=Yi(b,N,w,d,n,!1)}return y}const ar={onPointerDown:Sf,isValid:Gi};function jf({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=ki().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 Ef=(e,t)=>e.x!==t.x||e.y!==t.y||e.zoom!==t.k,yn=e=>({x:e.x,y:e.y,zoom:e.k}),Rn=({x:e,y:t,zoom:n})=>hn.translate(e,t).scale(n),Ye=(e,t)=>e.target.closest(`.${t}`),Ui=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),Ln=(e,t=0,n=()=>{})=>{const r=typeof t=="number"&&t>0;return r||n(),r?e.transition().duration(t).on("end",n):e},Zi=e=>{const t=e.ctrlKey&&sn()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t};function Cf({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=Zi(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;!sn()&&d.shiftKey&&s!==He.Vertical&&(p=d.deltaY*h,g=0),r.translateBy(n,-(p/f)*i,-(g/f)*i,{internal:!0});const x=yn(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 $f({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 Mf({zoomPanValues:e,onDraggingChange:t,onPanZoomStart:n}){return r=>{var i,o,a;if((i=r.sourceEvent)!=null&&i.internal)return;const s=yn(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 zf({zoomPanValues:e,panOnDrag:t,onPaneContextMenu:n,onTransformChange:r,onPanZoom:s}){return i=>{var o,a;e.usedRightMouseButton=!!(n&&Ui(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,yn(i.transform)))}}function If({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&&Ui(t,e.mouseButton??0)&&!e.usedRightMouseButton&&o.sourceEvent&&i(o.sourceEvent),e.usedRightMouseButton=!1,r(!1),s&&Ef(e.prevViewport,o.transform))){const l=yn(o.transform);e.prevViewport=l,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{s==null||s(o.sourceEvent,l)},n?150:0)}}}function Af({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 Pf({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=ki().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(Zi);function v(O,P){return p?new Promise(m=>{h==null||h.transform(Ln(p,P==null?void 0:P.duration,()=>m(!0)),O)}):Promise.resolve(!1)}function y({noWheelClassName:O,noPanClassName:P,onPaneContextMenu:m,userSelectionActive:k,panOnScroll:_,panOnDrag:M,panOnScrollMode:S,panOnScrollSpeed:j,preventScrolling:I,zoomOnPinch:H,zoomOnScroll:F,zoomOnDoubleClick:X,zoomActivationKeyPressed:V,lib:B,onTransformChange:Y}){k&&!d.isZoomingOrPanning&&N();const A=_&&!V&&!k?Cf({zoomPanValues:d,noWheelClassName:O,d3Selection:p,d3Zoom:h,panOnScrollMode:S,panOnScrollSpeed:j,zoomOnPinch:H,onPanZoomStart:a,onPanZoom:o,onPanZoomEnd:l}):$f({noWheelClassName:O,preventScrolling:I,d3ZoomHandler:g});if(p.on("wheel.zoom",A,{passive:!1}),!k){const K=Mf({zoomPanValues:d,onDraggingChange:u,onPanZoomStart:a});h.on("start",K);const Z=zf({zoomPanValues:d,panOnDrag:M,onPaneContextMenu:!!m,onPanZoom:o,onTransformChange:Y});h.on("zoom",Z);const W=If({zoomPanValues:d,panOnDrag:M,panOnScroll:_,onPaneContextMenu:m,onPanZoomEnd:l,onDraggingChange:u});h.on("end",W)}const q=Af({zoomActivationKeyPressed:V,panOnDrag:M,zoomOnScroll:F,panOnScroll:_,zoomOnDoubleClick:X,zoomOnPinch:H,userSelectionActive:k,noPanClassName:P,noWheelClassName:O,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(O,P,m){const k=Rn(O),_=h==null?void 0:h.constrain()(k,P,m);return _&&await v(_),new Promise(M=>M(_))}async function w(O,P){const m=Rn(O);return await v(m,P),new Promise(k=>k(m))}function C(O){if(p){const P=Rn(O),m=p.property("__zoom");(m.k!==O.zoom||m.x!==O.x||m.y!==O.y)&&(h==null||h.transform(p,P,null,{sync:!0}))}}function L(){const O=p?_i(p.node()):{x:0,y:0,k:1};return{x:O.x,y:O.y,zoom:O.k}}function E(O,P){return p?new Promise(m=>{h==null||h.scaleTo(Ln(p,P==null?void 0:P.duration,()=>m(!0)),O)}):Promise.resolve(!1)}function R(O,P){return p?new Promise(m=>{h==null||h.scaleBy(Ln(p,P==null?void 0:P.duration,()=>m(!0)),O)}):Promise.resolve(!1)}function D(O){h==null||h.scaleExtent(O)}function T(O){h==null||h.translateExtent(O)}function z(O){const P=!he(O)||O<0?0:O;h==null||h.clickDistance(P)}return{update:y,destroy:N,setViewport:w,setViewportConstrained:b,getViewport:L,scaleTo:E,scaleBy:R,setScaleExtent:D,setTranslateExtent:T,syncViewport:C,setClickDistance:z}}var pt;(function(e){e.Line="line",e.Handle="handle"})(pt||(pt={}));function Tf({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 Df(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 ps(e,t){return e?!t:t}function Rf(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 T=C+(l?-R:R),z=L+(u?-D:D),O=-i[0]*C,P=-i[1]*L;let m=Rt(T,x,v),k=Rt(z,y,N);if(o){let S=0,j=0;l&&R<0?S=$e(b+R+O,o[0][0]):!l&&R>0&&(S=Me(b+T+O,o[1][0])),u&&D<0?j=$e(w+D+P,o[0][1]):!u&&D>0&&(j=Me(w+z+P,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+T,a[1][0])),u&&D>0?j=Me(w+D,a[0][1]):!u&&D<0&&(j=$e(w+z,a[1][1])),m=Math.max(m,S),k=Math.max(k,j)}if(s){if(d){const S=Rt(T/E,y,N)*E;if(m=Math.max(m,S),o){let j=0;!l&&!u||l&&!u&&h?j=Me(w+P+T/E,o[1][1])*E:j=$e(w+P+(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+T/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(z*E,x,v)/E;if(k=Math.max(k,S),o){let j=0;!l&&!u||u&&!l&&h?j=Me(b+z*E+O,o[1][0])/E:j=$e(b+(u?D:-D)*E+O,o[0][0])/E,k=Math.max(k,j)}if(a){let j=0;!l&&!u||u&&!l&&h?j=$e(b+z*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?T>z*E?D=(ps(l,u)?-R:R)/E:R=(ps(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 Qi={width:0,height:0,x:0,y:0},Lf={...Qi,pointerX:0,pointerY:0,aspectRatio:1};function Hf(e){return[[0,0],[e.measured.width,e.measured.height]]}function Of(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 Ff({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={...Qi},v={...Lf};const y=Df(l);let N,b=null,w=[],C,L,E;const R=li().on("start",D=>{const{nodeLookup:T,transform:z,snapGrid:O,snapToGrid:P,nodeOrigin:m,paneDomNode:k}=n();if(N=T.get(t),!N)return;b=(k==null?void 0:k.getBoundingClientRect())??null;const{xSnapped:_,ySnapped:M}=ht(D.sourceEvent,{transform:z,snapGrid:O,snapToGrid:P,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=T.get(N.parentId),L=C&&N.extent==="parent"?Hf(C):void 0),w=[],E=void 0;for(const[S,j]of T)if(j.parentId===t&&(w.push({id:S,position:{...j.position},extent:j.extent}),j.extent==="parent"||j.expandParent)){const I=Of(j,N,j.origin??m);E?E=[[Math.min(I[0][0],E[0][0]),Math.min(I[0][1],E[0][1])],[Math.max(I[1][0],E[1][0]),Math.max(I[1][1],E[1][1])]]:E=I}f==null||f(D,{...x})}).on("drag",D=>{const{transform:T,snapGrid:z,snapToGrid:O,nodeOrigin:P}=n(),m=ht(D.sourceEvent,{transform:T,snapGrid:z,snapToGrid:O,containerBounds:b}),k=[];if(!N)return;const{x:_,y:M,width:S,height:j}=x,I={},H=N.origin??P,{width:F,height:X,x:V,y:B}=Rf(v,y,m,u,d,H,L,E),Y=F!==S,U=X!==j,A=V!==_&&Y,q=B!==M&&U;if(!A&&!q&&!Y&&!U)return;if((A||q||H[0]===1||H[1]===1)&&(I.x=A?V:x.x,I.y=q?B:x.y,x.x=I.x,x.y=I.y,w.length>0)){const J=V-_,ee=B-M;for(const oe of w)oe.position={x:oe.position.x-J+H[0]*(F-S),y:oe.position.y-ee+H[1]*(X-j)},k.push(oe)}if((Y||U)&&(I.width=Y?F:x.width,I.height=U?X:x.height,x.width=I.width,x.height=I.height),C&&N.expandParent){const J=H[0]*(I.width??0);I.x&&I.x<J&&(x.x=J,v.x=v.x-(I.x-J));const ee=H[1]*(I.height??0);I.y&&I.y<ee&&(x.y=ee,v.y=v.y-(I.y-ee))}const K=Tf({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(I,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 Ji={exports:{}},eo={},to={exports:{}},no={};/**
|
|
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 Bf(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Vf=typeof Object.is=="function"?Object.is:Bf,qf=rt.useState,Xf=rt.useEffect,Yf=rt.useLayoutEffect,Wf=rt.useDebugValue;function Kf(e,t){var n=t(),r=qf({inst:{value:n,getSnapshot:t}}),s=r[0].inst,i=r[1];return Yf(function(){s.value=n,s.getSnapshot=t,Hn(s)&&i({inst:s})},[e,n,t]),Xf(function(){return Hn(s)&&i({inst:s}),e(function(){Hn(s)&&i({inst:s})})},[e]),Wf(n),n}function Hn(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!Vf(e,n)}catch{return!0}}function Gf(e,t){return t()}var Uf=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?Gf:Kf;no.useSyncExternalStore=rt.useSyncExternalStore!==void 0?rt.useSyncExternalStore:Uf;to.exports=no;var Zf=to.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 wn=$,Qf=Zf;function Jf(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var eh=typeof Object.is=="function"?Object.is:Jf,th=Qf.useSyncExternalStore,nh=wn.useRef,rh=wn.useEffect,sh=wn.useMemo,ih=wn.useDebugValue;eo.useSyncExternalStoreWithSelector=function(e,t,n,r,s){var i=nh(null);if(i.current===null){var o={hasValue:!1,value:null};i.current=o}else o=i.current;i=sh(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,eh(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=th(e,i[0],i[1]);return rh(function(){o.hasValue=!0,o.value=a},[a]),ih(a),a};Ji.exports=eo;var oh=Ji.exports;const ah=Ka(oh),ch={},gs=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:()=>{(ch?"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},lh=e=>e?gs(e):gs,{useDebugValue:uh}=Ga,{useSyncExternalStoreWithSelector:dh}=ah,fh=e=>e;function ro(e,t=fh,n){const r=dh(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return uh(r),r}const ms=(e,t)=>{const n=lh(e),r=(s,i=t)=>ro(n,s,i);return Object.assign(r,n),r},hh=(e,t)=>e?ms(e,t):ms;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 bn=$.createContext(null),ph=bn.Provider,so=Se.error001();function Q(e,t){const n=$.useContext(bn);if(n===null)throw new Error(so);return ro(n,e,t)}function te(){const e=$.useContext(bn);if(e===null)throw new Error(so);return $.useMemo(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}const xs={display:"none"},gh={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},io="react-flow__node-desc",oo="react-flow__edge-desc",mh="react-flow__aria-live",xh=e=>e.ariaLiveMessage;function yh({rfId:e}){const t=Q(xh);return c.jsx("div",{id:`${mh}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:gh,children:t})}function wh({rfId:e,disableKeyboardA11y:t}){return c.jsxs(c.Fragment,{children:[c.jsxs("div",{id:`${io}-${e}`,style:xs,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:`${oo}-${e}`,style:xs,children:"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."}),!t&&c.jsx(yh,{rfId:e})]})}const bh=e=>e.userSelectionActive?"none":"all",kr=$.forwardRef(({position:e="top-left",children:t,className:n,style:r,...s},i)=>{const o=Q(bh),a=`${e}`.split("-");return c.jsx("div",{className:se(["react-flow__panel",n,...a]),style:{...r,pointerEvents:o},ref:i,...s,children:t})});function vh({proOptions:e,position:t="bottom-right"}){return e!=null&&e.hideAttribution?null:c.jsx(kr,{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 Nh=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 _h(e,t){return re(e.selectedNodes.map(Lt),t.selectedNodes.map(Lt))&&re(e.selectedEdges.map(Lt),t.selectedEdges.map(Lt))}function kh({onSelectionChange:e}){const t=te(),{selectedNodes:n,selectedEdges:r}=Q(Nh,_h);return $.useEffect(()=>{const s={nodes:n,edges:r};e==null||e(s),t.getState().onSelectionChangeHandlers.forEach(i=>i(s))},[n,r,e]),null}const Sh=e=>!!e.onSelectionChangeHandlers;function jh({onSelectionChange:e}){const t=Q(Sh);return e||t?c.jsx(kh,{onSelectionChange:e}):null}const ao=[0,0],Eh={x:0,y:0,zoom:1},Ch=["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"],ys=[...Ch,"rfId"],$h=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}),ws={translateExtent:bt,nodeOrigin:ao,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1",paneClickDistance:0};function Mh(e){const{setNodes:t,setEdges:n,setMinZoom:r,setMaxZoom:s,setTranslateExtent:i,setNodeExtent:o,reset:a,setDefaultNodesAndEdges:l,setPaneClickDistance:u}=Q($h,re),d=te();$.useEffect(()=>(l(e.defaultNodes,e.defaultEdges),()=>{f.current=ws,a()}),[]);const f=$.useRef(ws);return $.useEffect(()=>{for(const h of ys){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},ys.map(h=>e[h])),null}function bs(){return typeof window>"u"||!window.matchMedia?null:window.matchMedia("(prefers-color-scheme: dark)")}function zh(e){var r;const[t,n]=$.useState(e==="system"?null:e);return $.useEffect(()=>{if(e!=="system"){n(e);return}const s=bs(),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=bs())!=null&&r.matches?"dark":"light"}const vs=typeof document<"u"?document:null;function kt(e=null,t={target:vs,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)||vs;if(e!==null){const u=h=>{if(s.current=h.ctrlKey||h.metaKey||h.shiftKey,(!s.current||s.current&&!t.actInsideInputWithModifier)&&rr(h))return!1;const g=_s(h.code,a);i.current.add(h[g]),Ns(o,i.current,!1)&&(h.preventDefault(),r(!0))},d=h=>{if((!s.current||s.current&&!t.actInsideInputWithModifier)&&rr(h))return!1;const g=_s(h.code,a);Ns(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 Ns(e,t,n){return e.filter(r=>n||r.length===t.size).some(r=>r.every(s=>t.has(s)))}function _s(e,t){return t.includes(e)?"code":"key"}const Ih=()=>{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=er(n,t),{width:l,height:u}=xn(o);return tr({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=wr(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=Pi(t,n);return{x:o.x+s,y:o.y+i}}}),[])};function co(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)Ah(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 Ah(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 Ph(e,t){return co(e,t)}function Th(e,t){return co(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 ks({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 Ss(e){return{id:e.id,type:"remove"}}const js=e=>Ud(e),Dh=e=>Ci(e);function lo(e){return $.forwardRef(e)}const Rh=typeof window<"u"?$.useLayoutEffect:$.useEffect;function Es(e){const[t,n]=$.useState(BigInt(0)),[r]=$.useState(()=>Lh(()=>n(s=>s+BigInt(1))));return Rh(()=>{const s=r.get();s.length&&(e(s),r.reset())},[t]),r}function Lh(e){let t=[];return{get:()=>t,reset:()=>{t=[]},push:n=>{t.push(n),e()}}}const uo=$.createContext(null);function Hh({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(ks({items:p,lookup:h}))},[]),r=Es(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(ks({items:p,lookup:h}))},[]),i=Es(s),o=$.useMemo(()=>({nodeQueue:r,edgeQueue:i}),[]);return c.jsx(uo.Provider,{value:o,children:e})}function Oh(){const e=$.useContext(uo);if(!e)throw new Error("useBatchContext must be used within a BatchProvider");return e}const Fh=e=>!!e.panZoom;function Sr(){const e=Ih(),t=te(),n=Oh(),r=Q(Fh),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=js(f)?f:h.get(f.id),x=g.parentId?Di(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&&js(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&&Dh(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 Jd({nodesToRemove:f,edgesToRemove:h,nodes:p,edges:g,onBeforeDelete:w}),E=L.length>0,R=C.length>0;if(E){const D=L.map(Ss);v==null||v(L),N(D)}if(R){const D=C.map(Ss);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=is(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=is(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 Zd(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 Cs=e=>e.selected,Bh={actInsideInputWithModifier:!1},Vh=typeof window<"u"?window:void 0;function qh({deleteKeyCode:e,multiSelectionKeyCode:t}){const n=te(),{deleteElements:r}=Sr(),s=kt(e,Bh),i=kt(t,{target:Vh});$.useEffect(()=>{if(s){const{edges:o,nodes:a}=n.getState();r({nodes:a.filter(Cs),edges:o.filter(Cs)}),n.setState({nodesSelectionActive:!1})}},[s]),$.useEffect(()=>{n.setState({multiSelectionActive:i})},[i])}function Xh(e){const t=te();$.useEffect(()=>{const n=()=>{var s,i;if(!e.current)return!1;const r=xn(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 vn={position:"absolute",width:"100%",height:"100%",top:0,left:0},Yh=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib});function Wh({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(Yh,re),R=kt(h),D=$.useRef();Xh(C);const T=$.useCallback(z=>{y==null||y({x:z[0],y:z[1],zoom:z[2]}),N||w.setState({transform:z})},[y,N]);return $.useEffect(()=>{if(C.current){D.current=Pf({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:z,y:O,zoom:P}=D.current.getViewport();return w.setState({panZoom:D.current,transform:[z,O,P],domNode:C.current.closest(".react-flow")}),()=>{var m;(m=D.current)==null||m.destroy()}}},[]),$.useEffect(()=>{var z;(z=D.current)==null||z.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:T})},[e,t,n,r,s,i,o,a,R,p,v,L,x,E,T]),c.jsx("div",{className:"react-flow__renderer",ref:C,style:vn,children:g})}const Kh=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function Gh(){const{userSelectionActive:e,userSelectionRect:t}=Q(Kh,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 On=(e,t)=>n=>{n.target===t.current&&(e==null||e(n))},Uh=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging});function Zh({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(Uh,re),E=C&&(e||w),R=$.useRef(!1),D=$.useRef(!1),T=()=>{x.setState({userSelectionActive:!1,userSelectionRect:null}),v.current=0,y.current=0},z=S=>{if(R.current){R.current=!1;return}a==null||a(S),x.getState().resetSelectedElements(),x.setState({nodesSelectionActive:!1})},O=S=>{if(Array.isArray(r)&&(r!=null&&r.includes(2))){S.preventDefault();return}l==null||l(S)},P=u?S=>u(S):void 0,m=S=>{var V,B,Y,U;const{resetSelectedElements:j,domNode:I,edgeLookup:H}=x.getState();if(N.current=I==null?void 0:I.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[A,q]of H)b.current.set(q.source,((Y=b.current.get(q.source))==null?void 0:Y.add(A))||new Set([A])),b.current.set(q.target,((U=b.current.get(q.target))==null?void 0:U.add(A))||new Set([A]));const{x:F,y:X}=ve(S.nativeEvent,N.current);j(),x.setState({userSelectionRect:{width:0,height:0,startX:F,startY:X,x:F,y:X}}),i==null||i(S)},k=S=>{const{userSelectionRect:j,edgeLookup:I,transform:H,nodeLookup:F,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:A}=j,q={startX:U,startY:A,x:B<U?B:U,y:Y<A?Y:A,width:Math.abs(B-U),height:Math.abs(Y-A)},K=$i(F,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(F,W,!0);X(J)}if(y.current!==Z.size){y.current=Z.size;const J=We(I,Z);V(J)}x.setState({userSelectionRect:q,userSelectionActive:!0,nodesSelectionActive:!1})},_=S=>{var I,H;if(S.button!==0||!D.current)return;(H=(I=S.target)==null?void 0:I.releasePointerCapture)==null||H.call(I,S.pointerId);const{userSelectionRect:j}=x.getState();!w&&j&&S.target===g.current&&(z==null||z(S)),v.current>0&&x.setState({nodesSelectionActive:!0}),T(),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:On(z,g),onContextMenu:On(O,g),onWheel:On(P,g),onPointerEnter:E?void 0:d,onPointerDown:E?m:f,onPointerMove:E?k:f,onPointerUp:E?_:void 0,onPointerLeave:h,ref:g,style:vn,children:[p,c.jsx(Gh,{})]})}function cr({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 fo({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=bf({getStoreItems:()=>a.getState(),onNodeMouseDown:f=>{cr({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 Qh=e=>t=>t.selected&&(t.draggable||e&&typeof t.draggable>"u");function ho(){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=Qh(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=mn(N,i));const{position:b,positionAbsolute:w}=Mi({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 jr=$.createContext(null),Jh=jr.Provider;jr.Consumer;const po=()=>$.useContext(jr),e0=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),t0=(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 n0({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=po(),{connectOnClick:N,noPanClassName:b,rfId:w}=Q(e0,re),{connectingFrom:C,connectingTo:L,clickConnecting:E,isPossibleEndHandle:R,connectionInProcess:D,valid:T}=Q(t0(y,g,e),re);y||(k=(m=v.getState()).onError)==null||k.call(m,"010",Se.error010());const z=_=>{const{defaultEdgeOptions:M,onConnect:S,hasDefaultEdges:j}=v.getState(),I={...M,..._};if(j){const{edges:H,setEdges:F}=v.getState();F(af(I,H))}S==null||S(I),a==null||a(I)},O=_=>{if(!y)return;const M=Li(_.nativeEvent);if(s&&(M&&_.button===0||!M)){const S=v.getState();ar.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:z,isValidConnection:n||S.isValidConnection,getTransform:()=>v.getState().transform,getFromHandle:()=>v.getState().connection.fromHandle,autoPanSpeed:S.autoPanSpeed})}M?d==null||d(_):f==null||f(_)},P=_=>{const{onClickConnectStart:M,onClickConnectEnd:S,connectionClickStartHandle:j,connectionMode:I,isValidConnection:H,lib:F,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=Ri(_.target),U=n||H,{connection:A,isValid:q}=ar.isValid(_.nativeEvent,{handle:{nodeId:y,id:g,type:e},connectionMode:I,fromNodeId:j.nodeId,fromHandleId:j.id||null,fromType:j.type,isValidConnection:U,flowId:X,doc:Y,lib:F,nodeLookup:V});q&&A&&z(A);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:T,connectionindicator:r&&(!D||R)&&(D?i:s)}]),onMouseDown:O,onTouchStart:O,onClick:N?P:void 0,ref:p,...h,children:l})}const Te=$.memo(lo(n0));function r0({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 s0({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 i0(){return null}function o0({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 on={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},$s={input:r0,default:s0,output:o0,group:i0};function a0(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 c0=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 l0({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){const r=te(),{width:s,height:i,transformString:o,userSelectionActive:a}=Q(c0,re),l=ho(),u=$.useRef(null);if($.useEffect(()=>{var h;n||(h=u.current)==null||h.focus({preventScroll:!0})},[n]),fo({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(on,h.key)&&(h.preventDefault(),l({direction:on[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 Ms=typeof window<"u"?window:void 0,u0=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function go({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:T,minZoom:z,maxZoom:O,preventScrolling:P,onSelectionContextMenu:m,noWheelClassName:k,noPanClassName:_,disableKeyboardA11y:M,onViewportChange:S,isControlledViewport:j}){const{nodesSelectionActive:I,userSelectionActive:H}=Q(u0),F=kt(u,{target:Ms}),X=kt(x,{target:Ms}),V=X||R,B=X||w,Y=d&&V!==!0,U=F||H||Y;return qh({deleteKeyCode:l,multiSelectionKeyCode:g}),c.jsx(Wh,{onPaneContextMenu:i,elementsSelectable:y,zoomOnScroll:N,zoomOnPinch:b,panOnScroll:B,panOnScrollSpeed:C,panOnScrollMode:L,zoomOnDoubleClick:E,panOnDrag:!F&&V,defaultViewport:D,translateExtent:T,minZoom:z,maxZoom:O,zoomActivationKeyCode:v,preventScrolling:P,noWheelClassName:k,noPanClassName:_,onViewportChange:S,isControlledViewport:j,paneClickDistance:a,children:c.jsxs(Zh,{onSelectionStart:h,onSelectionEnd:p,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:s,onPaneContextMenu:i,onPaneScroll:o,panOnDrag:V,isSelecting:!!U,selectionMode:f,selectionKeyPressed:F,selectionOnDrag:Y,children:[e,I&&c.jsx(l0,{onSelectionContextMenu:m,noPanClassName:_,disableKeyboardA11y:M})]})})}go.displayName="FlowRenderer";const d0=$.memo(go),f0=e=>t=>e?$i(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 h0(e){return Q($.useCallback(f0(e),[e]),re)}const p0=e=>e.updateNodeInternals;function g0(){const e=Q(p0),[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 m0({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 x0({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(A=>{const q=A.nodeLookup.get(e),K=A.parentLookup.has(e);return{node:q,internals:q.internals,isParent:K}},re);let E=w.type||"default",R=(v==null?void 0:v[E])||$s[E];R===void 0&&(b==null||b("003",Se.error003(E)),E="default",R=$s.default);const D=!!(w.draggable||a&&typeof w.draggable>"u"),T=!!(w.selectable||l&&typeof w.selectable>"u"),z=!!(w.connectable||u&&typeof w.connectable>"u"),O=!!(w.focusable||d&&typeof w.focusable>"u"),P=te(),m=Ti(w),k=m0({node:w,nodeType:E,hasDimensions:m,resizeObserver:f}),_=fo({nodeRef:k,disabled:w.hidden||!D,noDragClassName:h,handleSelector:w.dragHandle,nodeId:e,isSelectable:T,nodeClickDistance:N}),M=ho();if(w.hidden)return null;const S=je(w),j=a0(w),I=T||D||t||n||r||s,H=n?A=>n(A,{...C.userNode}):void 0,F=r?A=>r(A,{...C.userNode}):void 0,X=s?A=>s(A,{...C.userNode}):void 0,V=i?A=>i(A,{...C.userNode}):void 0,B=o?A=>o(A,{...C.userNode}):void 0,Y=A=>{const{selectNodesOnDrag:q,nodeDragThreshold:K}=P.getState();T&&(!q||!D||K>0)&&cr({id:e,store:P,nodeRef:k}),t&&t(A,{...C.userNode})},U=A=>{if(!(rr(A.nativeEvent)||g))if(Si.includes(A.key)&&T){const q=A.key==="Escape";cr({id:e,store:P,unselect:q,nodeRef:k})}else D&&w.selected&&Object.prototype.hasOwnProperty.call(on,A.key)&&(A.preventDefault(),P.setState({ariaLiveMessage:`Moved selected node ${A.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~C.positionAbsolute.x}, y: ${~~C.positionAbsolute.y}`}),M({direction:on[A.key],factor:A.shiftKey?4:1}))};return c.jsx("div",{className:se(["react-flow__node",`react-flow__node-${E}`,{[p]:D},w.className,{selected:w.selected,selectable:T,parent:L,draggable:D,dragging:_}]),ref:k,style:{zIndex:C.z,transform:`translate(${C.positionAbsolute.x}px,${C.positionAbsolute.y}px)`,pointerEvents:I?"all":"none",visibility:m?"visible":"hidden",...w.style,...j},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:H,onMouseMove:F,onMouseLeave:X,onContextMenu:V,onClick:Y,onDoubleClick:B,onKeyDown:O?U:void 0,tabIndex:O?0:void 0,role:O?"button":void 0,"aria-describedby":g?void 0:`${io}-${x}`,"aria-label":w.ariaLabel,children:c.jsx(Jh,{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:T,draggable:D,deletable:w.deletable??!0,isConnectable:z,sourcePosition:w.sourcePosition,targetPosition:w.targetPosition,dragging:_,dragHandle:w.dragHandle,zIndex:C.z,parentId:w.parentId,...S})})})}const y0=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function mo(e){const{nodesDraggable:t,nodesConnectable:n,nodesFocusable:r,elementsSelectable:s,onError:i}=Q(y0,re),o=h0(e.onlyRenderVisibleElements),a=g0();return c.jsx("div",{className:"react-flow__nodes",style:vn,children:o.map(l=>c.jsx(x0,{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))})}mo.displayName="NodeRenderer";const w0=$.memo(mo);function b0(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&&rf({sourceNode:i,targetNode:o,width:n.width,height:n.height,transform:n.transform})&&r.push(s.id)}return r},[e]),re)}const v0=({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"}),N0=({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"}),zs={[nn.Arrow]:v0,[nn.ArrowClosed]:N0};function _0(e){const t=te();return $.useMemo(()=>{var s,i;return Object.prototype.hasOwnProperty.call(zs,e)?zs[e]:((i=(s=t.getState()).onError)==null||i.call(s,"009",Se.error009(e)),null)},[e])}const k0=({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=_0(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},xo=({defaultColor:e,rfId:t})=>{const n=Q(i=>i.edges),r=Q(i=>i.defaultEdgeOptions),s=$.useMemo(()=>ff(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(k0,{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};xo.displayName="MarkerDefinitions";var S0=$.memo(xo);function yo({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]})}yo.displayName="EdgeText";const j0=$.memo(yo);function Nn({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(j0,{x:t,y:n,label:r,labelStyle:s,labelShowBg:i,labelBgStyle:o,labelBgPadding:a,labelBgBorderRadius:l}):null]})}function Is({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 wo({sourceX:e,sourceY:t,sourcePosition:n=G.Bottom,targetX:r,targetY:s,targetPosition:i=G.Top}){const[o,a]=Is({pos:n,x1:e,y1:t,x2:r,y2:s}),[l,u]=Is({pos:i,x1:r,y1:s,x2:e,y2:t}),[d,f,h,p]=Hi({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 bo(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]=wo({sourceX:n,sourceY:r,sourcePosition:o,targetX:s,targetY:i,targetPosition:a}),C=e.isInternal?void 0:t;return c.jsx(Nn,{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 E0=bo({isInternal:!1}),vo=bo({isInternal:!0});E0.displayName="SimpleBezierEdge";vo.displayName="SimpleBezierEdgeInternal";function No(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]=sr({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(Nn,{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 _o=No({isInternal:!1}),ko=No({isInternal:!0});_o.displayName="SmoothStepEdge";ko.displayName="SmoothStepEdgeInternal";function So(e){return $.memo(({id:t,...n})=>{var s;const r=e.isInternal?void 0:t;return c.jsx(_o,{...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 C0=So({isInternal:!1}),jo=So({isInternal:!0});C0.displayName="StepEdge";jo.displayName="StepEdgeInternal";function Eo(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]=Bi({sourceX:n,sourceY:r,targetX:s,targetY:i}),b=e.isInternal?void 0:t;return c.jsx(Nn,{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 $0=Eo({isInternal:!1}),Co=Eo({isInternal:!0});$0.displayName="StraightEdge";Co.displayName="StraightEdgeInternal";function $o(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]=Oi({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(Nn,{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 M0=$o({isInternal:!1}),Mo=$o({isInternal:!0});M0.displayName="BezierEdge";Mo.displayName="BezierEdgeInternal";const As={default:Mo,straight:Co,step:jo,smoothstep:ko,simplebezier:vo},Ps={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null},z0=(e,t,n)=>n===G.Left?e-t:n===G.Right?e+t:e,I0=(e,t,n)=>n===G.Top?e-t:n===G.Bottom?e+t:e,Ts="react-flow__edgeupdater";function Ds({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([Ts,`${Ts}-${a}`]),cx:z0(t,r,e),cy:I0(n,r,e),r,stroke:"transparent",fill:"transparent"})}function A0({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:T,lib:z,onConnectStart:O,onConnectEnd:P,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 I=(F,X)=>{h(!1),f==null||f(F,n,C.type,X)},H=F=>u==null?void 0:u(n,F);ar.onPointerDown(w.nativeEvent,{autoPanOnConnect:L,connectionMode:D,connectionRadius:T,domNode:E,handleId:C.id,nodeId:C.nodeId,nodeLookup:k,isTarget:j,edgeUpdaterType:C.type,lib:z,flowId:_,cancelConnection:m,panBy:M,isValidConnection:R,onConnect:H,onConnectStart:O,onConnectEnd:P,onReconnectEnd:I,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(Ds,{position:a,centerX:r,centerY:s,radius:t,onMouseDown:v,onMouseEnter:N,onMouseOut:b,type:"source"}),(e===!0||e==="target")&&c.jsx(Ds,{position:l,centerX:i,centerY:o,radius:t,onMouseDown:y,onMouseEnter:N,onMouseOut:b,type:"target"})]})}function P0({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])||As[C];L===void 0&&(y==null||y("011",Se.error011(C)),C="default",L=As.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"),T=$.useRef(null),[z,O]=$.useState(!1),[P,m]=$.useState(!1),k=te(),{zIndex:_,sourceX:M,sourceY:S,targetX:j,targetY:I,sourcePosition:H,targetPosition:F}=Q($.useCallback(W=>{const J=W.nodeLookup.get(b.source),ee=W.nodeLookup.get(b.target);if(!J||!ee)return{zIndex:b.zIndex,...Ps};const oe=df({id:e,sourceNode:J,targetNode:ee,sourceHandle:b.sourceHandle||null,targetHandle:b.targetHandle||null,connectionMode:W.connectionMode,onError:y});return{zIndex:nf({selected:b.selected,zIndex:b.zIndex,sourceNode:J,targetNode:ee,elevateOnSelect:W.elevateEdgesOnSelect}),...oe||Ps}},[b.source,b.target,b.sourceHandle,b.targetHandle,b.selected,b.zIndex]),re),X=$.useMemo(()=>b.markerStart?`url('#${ir(b.markerStart,g)}')`:void 0,[b.markerStart,g]),V=$.useMemo(()=>b.markerEnd?`url('#${ir(b.markerEnd,g)}')`:void 0,[b.markerEnd,g]);if(b.hidden||M===null||S===null||j===null||I===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=T.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,A=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&&Si.includes(W.key)&&D){const{unselectNodesAndEdges:ee,addSelectedEdges:oe}=k.getState();W.key==="Escape"?((J=T.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:z,selectable:D}]),onClick:B,onDoubleClick:Y,onContextMenu:U,onMouseEnter:A,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?`${oo}-${g}`:void 0,ref:T,children:[!P&&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:I,sourcePosition:H,targetPosition:F,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(A0,{edge:b,isReconnectable:R,reconnectRadius:d,onReconnect:f,onReconnectStart:h,onReconnectEnd:p,sourceX:M,sourceY:S,targetX:j,targetY:I,sourcePosition:H,targetPosition:F,setUpdateHover:O,setReconnecting:m})]})})}const T0=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function zo({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(T0,re),w=b0(t);return c.jsxs("div",{className:"react-flow__edges",children:[c.jsx(S0,{defaultColor:e,rfId:n}),w.map(C=>c.jsx(P0,{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))]})}zo.displayName="EdgeRenderer";const D0=$.memo(zo),R0=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function L0({children:e}){const t=Q(R0);return c.jsx("div",{className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:t},children:e})}function H0(e){const t=Sr(),n=$.useRef(!1);$.useEffect(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}const O0=e=>{var t;return(t=e.panZoom)==null?void 0:t.syncViewport};function F0(e){const t=Q(O0),n=te();return $.useEffect(()=>{e&&(t==null||t(e),n.setState({transform:[e.x,e.y,e.zoom]}))},[e,t]),null}function B0(e){return e.connection.inProgress?{...e.connection,to:$t(e.connection.to,e.transform)}:{...e.connection}}function V0(e){return B0}function q0(e){const t=V0();return Q(t,re)}const X0=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function Y0({containerStyle:e,style:t,type:n,component:r}){const{nodesConnectable:s,width:i,height:o,isValid:a,inProgress:l}=Q(X0,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",Ei(a)]),children:c.jsx(Io,{style:t,type:n,CustomComponent:r,isValid:a})})})}const Io=({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}=q0();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:Ei(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]=Oi(g);break;case Ie.SimpleBezier:[p]=wo(g);break;case Ie.Step:[p]=sr({...g,borderRadius:0});break;case Ie.SmoothStep:[p]=sr(g);break;default:[p]=Bi(g)}return c.jsx("path",{d:p,fill:"none",className:"react-flow__connection-path",style:e})};Io.displayName="ConnectionLine";const W0={};function Rs(e=W0){$.useRef(e),te(),$.useEffect(()=>{},[e])}function K0(){te(),$.useRef(!1),$.useEffect(()=>{},[])}function Ao({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:T,defaultViewport:z,translateExtent:O,minZoom:P,maxZoom:m,preventScrolling:k,defaultMarkerColor:_,zoomOnScroll:M,zoomOnPinch:S,panOnScroll:j,panOnScrollSpeed:I,panOnScrollMode:H,zoomOnDoubleClick:F,panOnDrag:X,onPaneClick:V,onPaneMouseEnter:B,onPaneMouseMove:Y,onPaneMouseLeave:U,onPaneScroll:A,onPaneContextMenu:q,paneClickDistance:K,nodeClickDistance:Z,onEdgeContextMenu:W,onEdgeMouseEnter:J,onEdgeMouseMove:ee,onEdgeMouseLeave:oe,reconnectRadius:Ee,onReconnect:_n,onReconnectStart:kn,onReconnectEnd:Sn,noDragClassName:st,noWheelClassName:jn,noPanClassName:it,disableKeyboardA11y:ot,nodeExtent:En,rfId:at,viewport:ct,onViewportChange:Mt}){return Rs(e),Rs(t),K0(),H0(n),F0(ct),c.jsx(d0,{onPaneClick:V,onPaneMouseEnter:B,onPaneMouseMove:Y,onPaneMouseLeave:U,onPaneContextMenu:q,onPaneScroll:A,paneClickDistance:K,deleteKeyCode:R,selectionKeyCode:N,selectionOnDrag:b,selectionMode:w,onSelectionStart:h,onSelectionEnd:p,multiSelectionKeyCode:C,panActivationKeyCode:L,zoomActivationKeyCode:E,elementsSelectable:T,zoomOnScroll:M,zoomOnPinch:S,zoomOnDoubleClick:F,panOnScroll:j,panOnScrollSpeed:I,panOnScrollMode:H,panOnDrag:X,defaultViewport:z,translateExtent:O,minZoom:P,maxZoom:m,onSelectionContextMenu:f,preventScrolling:k,noDragClassName:st,noWheelClassName:jn,noPanClassName:it,disableKeyboardA11y:ot,onViewportChange:Mt,isControlledViewport:!!ct,children:c.jsxs(L0,{children:[c.jsx(D0,{edgeTypes:t,onEdgeClick:s,onEdgeDoubleClick:o,onReconnect:_n,onReconnectStart:kn,onReconnectEnd:Sn,onlyRenderVisibleElements:D,onEdgeContextMenu:W,onEdgeMouseEnter:J,onEdgeMouseMove:ee,onEdgeMouseLeave:oe,reconnectRadius:Ee,defaultMarkerColor:_,noPanClassName:it,disableKeyboardA11y:ot,rfId:at}),c.jsx(Y0,{style:x,type:g,component:v,containerStyle:y}),c.jsx("div",{className:"react-flow__edgelabel-renderer"}),c.jsx(w0,{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:En,rfId:at}),c.jsx("div",{className:"react-flow__viewport-portal"})]})})}Ao.displayName="GraphView";const G0=$.memo(Ao),Ls=({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;qi(f,h,p),or(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}=wr(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:{...ji},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanSpeed:15,connectionRadius:20,onError:ef,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1}},U0=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:s,height:i,fitView:o,nodeOrigin:a,nodeExtent:l})=>hh((u,d)=>({...Ls({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();or(f,h,p,{nodeOrigin:g,nodeExtent:l,elevateNodesOnSelect:x,checkEquality:!0}),u({nodes:f})},setEdges:f=>{const{connectionLookup:h,edgeLookup:p}=d();qi(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}=xf(f,g,x,b,w,C);if(D){if(pf(g,x,{nodeOrigin:w,nodeExtent:C}),h.triggerFitView){let T=y;!y&&v&&(T=E({...N,nodes:N==null?void 0:N.nodes})),u({fitViewDone:T})}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=_r(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=Ph(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=Th(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]||(or(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 yf({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=er(y,f);return tr({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=er(y,f);return tr({nodes:N,width:p,height:g,panZoom:h,minZoom:x,maxZoom:v},f),N.size>0},cancelConnection:()=>{u({connection:{...ji}})},updateConnection:f=>{u({connection:f})},reset:()=>u({...Ls()})}),Object.is);function Z0({initialNodes:e,initialEdges:t,defaultNodes:n,defaultEdges:r,initialWidth:s,initialHeight:i,fitView:o,nodeOrigin:a,nodeExtent:l,children:u}){const[d]=$.useState(()=>U0({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:s,height:i,fitView:o,nodeOrigin:a,nodeExtent:l}));return c.jsx(ph,{value:d,children:c.jsx(Hh,{children:u})})}function Q0({children:e,nodes:t,edges:n,defaultNodes:r,defaultEdges:s,width:i,height:o,fitView:a,nodeOrigin:l,nodeExtent:u}){return $.useContext(bn)?c.jsx(c.Fragment,{children:e}):c.jsx(Z0,{initialNodes:t,initialEdges:n,defaultNodes:r,defaultEdges:s,initialWidth:i,initialHeight:o,fitView:a,nodeOrigin:l,nodeExtent:u,children:e})}const J0={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};function ep({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:T,onEdgesDelete:z,onDelete:O,onSelectionChange:P,onSelectionDragStart:m,onSelectionDrag:k,onSelectionDragStop:_,onSelectionContextMenu:M,onSelectionStart:S,onSelectionEnd:j,onBeforeDelete:I,connectionMode:H,connectionLineType:F=Ie.Bezier,connectionLineStyle:X,connectionLineComponent:V,connectionLineContainerStyle:B,deleteKeyCode:Y="Backspace",selectionKeyCode:U="Shift",selectionOnDrag:A=!1,selectionMode:q=vt.Full,panActivationKeyCode:K="Space",multiSelectionKeyCode:Z=sn()?"Meta":"Control",zoomActivationKeyCode:W=sn()?"Meta":"Control",snapToGrid:J,snapGrid:ee,onlyRenderVisibleElements:oe=!1,selectNodesOnDrag:Ee,nodesDraggable:_n,nodesConnectable:kn,nodesFocusable:Sn,nodeOrigin:st=ao,edgesFocusable:jn,edgesReconnectable:it,elementsSelectable:ot=!0,defaultViewport:En=Eh,minZoom:at=.5,maxZoom:ct=2,translateExtent:Mt=bt,preventScrolling:Oo=!0,nodeExtent:Cn,defaultMarkerColor:Fo="#b1b1b7",zoomOnScroll:Bo=!0,zoomOnPinch:Vo=!0,panOnScroll:qo=!1,panOnScrollSpeed:Xo=.5,panOnScrollMode:Yo=He.Free,zoomOnDoubleClick:Wo=!0,panOnDrag:Ko=!0,onPaneClick:Go,onPaneMouseEnter:Uo,onPaneMouseMove:Zo,onPaneMouseLeave:Qo,onPaneScroll:Jo,onPaneContextMenu:ea,paneClickDistance:Cr=0,nodeClickDistance:ta=0,children:na,onReconnect:ra,onReconnectStart:sa,onReconnectEnd:ia,onEdgeContextMenu:oa,onEdgeDoubleClick:aa,onEdgeMouseEnter:ca,onEdgeMouseMove:la,onEdgeMouseLeave:ua,reconnectRadius:da=10,onNodesChange:fa,onEdgesChange:ha,noDragClassName:pa="nodrag",noWheelClassName:ga="nowheel",noPanClassName:$r="nopan",fitView:Mr,fitViewOptions:ma,connectOnClick:xa,attributionPosition:ya,proOptions:wa,defaultEdgeOptions:ba,elevateNodesOnSelect:va,elevateEdgesOnSelect:Na,disableKeyboardA11y:zr=!1,autoPanOnConnect:_a,autoPanOnNodeDrag:ka,autoPanSpeed:Sa,connectionRadius:ja,isValidConnection:Ea,onError:Ca,style:$a,id:Ir,nodeDragThreshold:Ma,viewport:za,onViewportChange:Ia,width:Aa,height:Pa,colorMode:Ta="light",debug:Da,...Ra},La){const $n=Ir||"1",Ha=zh(Ta);return c.jsx("div",{"data-testid":"rf__wrapper",...Ra,style:{...$a,...J0},ref:La,className:se(["react-flow",s,Ha]),id:Ir,children:c.jsxs(Q0,{nodes:e,edges:t,width:Aa,height:Pa,fitView:Mr,nodeOrigin:st,nodeExtent:Cn,children:[c.jsx(G0,{onInit:u,onNodeClick:a,onEdgeClick:l,onNodeMouseEnter:N,onNodeMouseMove:b,onNodeMouseLeave:w,onNodeContextMenu:C,onNodeDoubleClick:L,nodeTypes:i,edgeTypes:o,connectionLineType:F,connectionLineStyle:X,connectionLineComponent:V,connectionLineContainerStyle:B,selectionKeyCode:U,selectionOnDrag:A,selectionMode:q,deleteKeyCode:Y,multiSelectionKeyCode:Z,panActivationKeyCode:K,zoomActivationKeyCode:W,onlyRenderVisibleElements:oe,defaultViewport:En,translateExtent:Mt,minZoom:at,maxZoom:ct,preventScrolling:Oo,zoomOnScroll:Bo,zoomOnPinch:Vo,zoomOnDoubleClick:Wo,panOnScroll:qo,panOnScrollSpeed:Xo,panOnScrollMode:Yo,panOnDrag:Ko,onPaneClick:Go,onPaneMouseEnter:Uo,onPaneMouseMove:Zo,onPaneMouseLeave:Qo,onPaneScroll:Jo,onPaneContextMenu:ea,paneClickDistance:Cr,nodeClickDistance:ta,onSelectionContextMenu:M,onSelectionStart:S,onSelectionEnd:j,onReconnect:ra,onReconnectStart:sa,onReconnectEnd:ia,onEdgeContextMenu:oa,onEdgeDoubleClick:aa,onEdgeMouseEnter:ca,onEdgeMouseMove:la,onEdgeMouseLeave:ua,reconnectRadius:da,defaultMarkerColor:Fo,noDragClassName:pa,noWheelClassName:ga,noPanClassName:$r,rfId:$n,disableKeyboardA11y:zr,nodeExtent:Cn,viewport:za,onViewportChange:Ia}),c.jsx(Mh,{nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:p,onConnectStart:g,onConnectEnd:x,onClickConnectStart:v,onClickConnectEnd:y,nodesDraggable:_n,nodesConnectable:kn,nodesFocusable:Sn,edgesFocusable:jn,edgesReconnectable:it,elementsSelectable:ot,elevateNodesOnSelect:va,elevateEdgesOnSelect:Na,minZoom:at,maxZoom:ct,nodeExtent:Cn,onNodesChange:fa,onEdgesChange:ha,snapToGrid:J,snapGrid:ee,connectionMode:H,translateExtent:Mt,connectOnClick:xa,defaultEdgeOptions:ba,fitView:Mr,fitViewOptions:ma,onNodesDelete:T,onEdgesDelete:z,onDelete:O,onNodeDragStart:E,onNodeDrag:R,onNodeDragStop:D,onSelectionDrag:k,onSelectionDragStart:m,onSelectionDragStop:_,onMove:d,onMoveStart:f,onMoveEnd:h,noPanClassName:$r,nodeOrigin:st,rfId:$n,autoPanOnConnect:_a,autoPanOnNodeDrag:ka,autoPanSpeed:Sa,onError:Ca,connectionRadius:ja,isValidConnection:Ea,selectNodesOnDrag:Ee,nodeDragThreshold:Ma,onBeforeDelete:I,paneClickDistance:Cr,debug:Da}),c.jsx(jh,{onSelectionChange:P}),na,c.jsx(vh,{proOptions:wa,position:ya}),c.jsx(wh,{rfId:$n,disableKeyboardA11y:zr})]})})}var tp=lo(ep);function np({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 rp({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 sp={[Ne.Dots]:1,[Ne.Lines]:1,[Ne.Cross]:6},ip=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function Po({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(ip,re),g=r||sp[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,...vn,"--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(rp,{radius:b/2,className:d}):c.jsx(np,{dimensions:C,lineWidth:s,variant:t,className:d})}),c.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${E})`})]})}Po.displayName="Background";const op=$.memo(Po);function ap(){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 cp(){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 lp(){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 up(){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 dp(){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 fp=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom});function To({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(fp,re),{zoomIn:N,zoomOut:b,fitView:w}=Sr(),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(kr,{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(ap,{})}),c.jsx(Ht,{onClick:L,className:"react-flow__controls-zoomout",title:"zoom out","aria-label":"zoom out",disabled:v,children:c.jsx(cp,{})})]}),n&&c.jsx(Ht,{className:"react-flow__controls-fitview",onClick:E,title:"fit view","aria-label":"fit view",children:c.jsx(lp,{})}),r&&c.jsx(Ht,{className:"react-flow__controls-interactive",onClick:R,title:"toggle interactivity","aria-label":"toggle interactivity",children:x?c.jsx(dp,{}):c.jsx(up,{})}),d]})}To.displayName="Controls";const hp=$.memo(To);function pp({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 gp=$.memo(pp),mp=e=>e.nodes.map(t=>t.id),Fn=e=>e instanceof Function?e:()=>e;function xp({nodeStrokeColor:e,nodeColor:t,nodeClassName:n="",nodeBorderRadius:r=5,nodeStrokeWidth:s,nodeComponent:i=gp,onClick:o}){const a=Q(mp,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(wp,{id:h,nodeColorFunc:l,nodeStrokeColorFunc:u,nodeClassNameFunc:d,nodeBorderRadius:r,nodeStrokeWidth:s,NodeComponent:i,onClick:o,shapeRendering:f},h))})}function yp({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||!Ti(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 wp=$.memo(yp);var bp=$.memo(xp);const vp=200,Np=150,_p=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?Ai(Ct(e.nodeLookup),t):t,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height}},kp="react-flow__minimap-desc";function Do({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:T,translateExtent:z,flowWidth:O,flowHeight:P}=Q(_p,re),m=(e==null?void 0:e.width)??vp,k=(e==null?void 0:e.height)??Np,_=E.width/m,M=E.height/k,S=Math.max(_,M),j=S*m,I=S*k,H=w*S,F=E.x-(j-E.width)/2-H,X=E.y-(I-E.height)/2-H,V=j+H*2,B=I+H*2,Y=`${kp}-${D}`,U=$.useRef(0),A=$.useRef();U.current=S,$.useEffect(()=>{if(L.current&&T)return A.current=jf({domNode:L.current,panZoom:T,getTransform:()=>C.getState().transform,getViewScale:()=>U.current}),()=>{var Z;(Z=A.current)==null||Z.destroy()}},[T]),$.useEffect(()=>{var Z;(Z=A.current)==null||Z.update({translateExtent:z,width:O,height:P,inversePan:N,pannable:x,zoomStep:b,zoomable:v})},[x,v,N,b,z,O,P]);const q=p?Z=>{var ee;const[W,J]=((ee=A.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(kr,{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:`${F} ${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(bp,{onClick:K,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:i,nodeClassName:s,nodeStrokeWidth:o,nodeComponent:a}),c.jsx("path",{className:"react-flow__minimap-mask",d:`M${F-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"})]})})}Do.displayName="MiniMap";$.memo(Do);function Sp({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=po(),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=Ff({domNode:b.current,nodeId:y,getStoreItems:()=>{const{nodeLookup:T,transform:z,snapGrid:O,snapToGrid:P,nodeOrigin:m,domNode:k}=N.getState();return{nodeLookup:T,transform:z,snapGrid:O,snapToGrid:P,nodeOrigin:m,paneDomNode:k}},onChange:(T,z)=>{const{triggerNodeChanges:O,nodeLookup:P,parentLookup:m,nodeOrigin:k}=N.getState(),_=[],M={x:T.x,y:T.y},S=P.get(y);if(S&&S.expandParent&&S.parentId){const j=S.origin??k,I=T.width??S.measured.width,H=T.height??S.measured.height,F={id:S.id,parentId:S.parentId,rect:{width:I,height:H,...Di({x:T.x??S.position.x,y:T.y??S.position.y},{width:I,height:H},S.parentId,P,j)}},X=_r([F],P,m,k);_.push(...X),M.x=T.x?Math.max(j[0]*I,T.x):void 0,M.y=T.y?Math.max(j[1]*H,T.y):void 0}if(M.x!==void 0&&M.y!==void 0){const j={id:y,type:"position",position:{...M}};_.push(j)}if(T.width!==void 0&&T.height!==void 0){const j={id:y,type:"dimensions",resizing:!0,setAttributes:!0,dimensions:{width:T.width,height:T.height}};_.push(j)}for(const j of z){const I={...j,type:"position"};_.push(I)}O(_)},onEnd:()=>{const T={id:y,type:"dimensions",resizing:!1};N.getState().triggerNodeChanges([T])}})),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 T;(T=L.current)==null||T.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(Sp);const jp=new Set;function Ep(e){return e.startsWith("signal:child:")}function Cp(e){const t=cn(),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=Yt(u);d!==void 0&&!i.has(d)&&(i.add(d),o.push(d))}}return[...i].sort()})(),r=Za({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 $p({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?Ja:Xs(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?Vn.child:Vn[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(Ys,{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(lr,{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 Mp({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 zp={step:$p,terminal:Mp};function Ip(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 Ap({run:e,timeline:t,endStatus:n,selectedKey:r,onSelect:s,onOpenRun:i,fmtDuration:o,expanded:a,onToggleChild:l}){const u=a??jp,d=$.useMemo(()=>{const x=new Set(u);for(const v of t){const y=Yt(v);y!==void 0&&x.add(y)}return x},[u,t]),f=Cp(d),{nodes:h,edges:p}=(()=>{const N=[],b=[],w=e.status==="running"||e.status==="suspended",C=(P,m,k)=>({id:`${P}->${m}`,source:P,target:m,style:{stroke:k?"#f87171":"var(--line)",strokeWidth:1.5}}),L=(P,m)=>({id:`${P}=>${m}`,source:P,target:m,style:{stroke:"#818cf8",strokeWidth:1.5,strokeDasharray:"4 3"}});function E(P,m,k,_,M,S){const j=`${M}s${P.seq}`,I=Yt(P),H=I!==void 0?f[I]:void 0,F=H!==void 0&&H.timeline.length===1&&H.timeline[0]?{step:H.timeline[0],run:H.run}:void 0,X=F!==void 0,V=!X&&I!==void 0&&u.has(I),B=F?F.step:P,Y=F?F.run:S,U=F?F.step.name:I!==void 0?(H==null?void 0:H.run.workflow)??"child workflow":P.name,A=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:Ip(B),selected:r===`${B.runId}#${B.seq}`,childRunId:I,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,`${I}:`,q.run);for(const W of K.firstIds)b.push(L(j,W));const Z=Ep(P.name)&&K.connectors.length>0?K.connectors:[{id:j,failed:A}];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:A}],nextX:m+248,bottomY:k}}function R(P,m,k,_,M,S){let j=k;const I=[];let H=[],F=_;for(const X of Qa(P)){const V=X.kind==="single"?[X.step]:X.steps,B=I.length===0,Y=[];let U=_,A=j;for(const q of V){const K=E(q,j,U,m,M,S);B&&I.push(K.id);for(const Z of H)b.push(C(Z.id,K.id,Z.failed));Y.push(...K.exits),A=Math.max(A,K.nextX),U=K.bottomY+96}H=Y,j=A,F=Math.max(F,U-96)}return{firstIds:I,connectors:H,nextX:j,bottomY:F}}const D=248;N.push({id:"start",type:"terminal",position:{x:0,y:0},draggable:!1,data:{status:"running",label:e.workflow}});const T=R(t,0,D,0,"",e);for(const P of T.firstIds)b.push({id:`start->${P}`,source:"start",target:P});const z=n??Ua(e,t);N.push({id:"end",type:"terminal",position:{x:Math.max(T.nextX,D),y:0},draggable:!1,data:{status:z,label:z}});const O=T.connectors.length>0?T.connectors:[{id:"start",failed:!1}];for(const P of O)b.push({id:`${P.id}->end`,source:P.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(tp,{nodes:h,edges:p,nodeTypes:zp,onNodeClick:g,fitView:!0,fitViewOptions:{padding:.3,maxZoom:1.1},proOptions:{hideAttribution:!0},nodesConnectable:!1,nodesDraggable:!1,panOnScroll:!0,minZoom:.3,children:[c.jsx(op,{variant:Ne.Dots,gap:22,size:1,color:"#1c1c22"}),c.jsx(hp,{showInteractive:!1,position:"bottom-right"})]})}function Xt(e){const t=e.lastIndexOf("~retry~");return t===-1?void 0:e.slice(0,t)}function Bn(e){const n=(Xt(e)??e).match(/^(.*)\.child\.\d+$/);return(n==null?void 0:n[1])||void 0}function Ro({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 Pp=["pending","running","suspended","completed","failed","cancelling","cancelled","dead"];function Tp(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 Dp(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 Er({status:e}){const t=e==="running"||e==="awaiting"||e==="cancelling";return c.jsx("span",{className:`dot s-${e} ${t?"pulse":""}`,"aria-hidden":!0})}function Lo({status:e}){return c.jsxs("span",{className:`s-${e} inline-flex items-center gap-1.5 text-[11px] uppercase tracking-wider`,children:[c.jsx(Er,{status:e}),e]})}function Rp({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(Er,{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(Ro,{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),Pp.map(l=>s(l,l,e[l]??0))]}),c.jsx(Op,{}),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 Lp(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 Ho({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]})," ",Lp(e.lastAdjust.at)]})]})}function an({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 Hp({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(Ho,{status:t.status})]},t.instanceId))})}function Op(){const{data:e}=we({queryKey:["workers"],queryFn:()=>ie.workers(),refetchInterval:1e4}),[t,n]=$.useState("workers");if(!e||e.length===0)return null;const r=fc(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(Fp,{workers:dc(e)}),t==="partitions"&&c.jsx(Bp,{groups:e}),t==="alerts"&&c.jsx(Vp,{summary:r})]})]})}const Hs="__overflow__";function Os(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 Fs({w:e}){return c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"px-2.5 py-2",children:c.jsx(Ho,{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 Fp({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===Hs;return c.jsxs(c.Fragment,{children:[o.map(u=>{const d=t===u.instanceId,f=Os(u);return c.jsx(an,{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(Fs,{w:u})]})]})},u.instanceId)}),a.length>0&&c.jsxs("div",{className:"relative",children:[c.jsxs("button",{type:"button",onClick:()=>{n(l?void 0:Hs),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=Os(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(Fs,{w:u})})]},u.instanceId)})})]})]})]})}function Bp({groups:e}){const[t,n]=$.useState(void 0),r=lc(e);function s(i){const o=new Map;for(const a of e)if(Wt(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(an,{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(Hp,{workers:s(i.partition)})]})]})},i.partition)})})}function Vp({summary:e}){const t=(n,r)=>`${n} ${n===1?r:`${r}s`}`;return c.jsxs(c.Fragment,{children:[c.jsx(an,{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(an,{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 qp(){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 Xp({runs:e,allRuns:t,health:n,loading:r,selected:s,onSelect:i,onSelectTag:o}){return r&&e.length===0?c.jsx(qp,{}):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=ur(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(Lo,{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:Tp(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 Yp({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(Er,{status:r.status}),c.jsx("span",{className:"truncate text-amber-100",children:oc(r.name)}),c.jsx("span",{className:"ml-auto shrink-0 text-[10px] uppercase tracking-wider text-amber-400/70",children:r.status})]})},s)})})]})}function Wp({id:e,onOpenRun:t}){var Y,U;const n=cn(),{data:r}=we({queryKey:["run",e],queryFn:async()=>uc(n.getQueryData(["run",e]),await ie.run(e)),refetchInterval:A=>{var K;const q=(K=A.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,A=>{if(A.type==="step.progress"&&A.event&&A.seq!=null){const q=A.seq,K=A.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:A=>ie.cancel(e,A!==void 0?{compensate:A}:{}),onSuccess:l}),p=Xe({mutationFn:()=>ie.continue(e),onSuccess:l}),g=Xe({mutationFn:()=>ie.redispatch(e),onSuccess:l}),x=Xe({mutationFn:A=>ie.retryWithInput(e,A),onSuccess:A=>{n.invalidateQueries({queryKey:["runs"]}),t(A.runId)}}),v=()=>{const A=JSON.stringify((r==null?void 0:r.run.input)??{},null,2),q=window.prompt("Fix the input, then replay as a fresh run:",A);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(A){A.preventDefault(),A.currentTarget.setPointerCapture(A.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 T(A){L(q=>{const K=new Set(q);return K.has(A)?K.delete(A):K.add(A),K})}if(!r)return c.jsx("div",{className:"p-8 text-sm text-zinc-600",children:"Loading run…"});const{run:z,timeline:O}=r,{body:P,compensations:m}=ac(O),k=cc(m),_=z.id.startsWith("dlq:"),M=_?{id:z.id.slice(4),title:"Dead-letter handler",subtitle:`started because run ${z.id.slice(4)} was dead-lettered`,cta:"open dead run →"}:a?{id:`dlq:${z.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 A=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).${A}`}:z.status==="cancelled"?{title:"Cancelled with compensation",subtitle:`completed steps were undone before cancelling.${A}`}:{title:"Saga compensated",subtitle:`the run failed and its ${k.total} completed step${k.total===1?"":"s"} were undone in reverse.${A}`}})():void 0,j=z.status==="failed"||z.status==="suspended",I=z.status==="running"||z.status==="suspended",H=z.status==="suspended"||z.status==="running",F=P.some(A=>A.status==="pending"&&A.kind==="signal"&&A.name.startsWith("breakpoint")),X=y?`${y.step.runId}#${y.step.seq}`:void 0,V=ur(z,{runs:i,health:s,timeline:P}),B=z.namespace&&z.namespace!=="default"?z.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:z.workflow}),Bn(z.id)!==void 0&&c.jsx("button",{type:"button",onClick:()=>t(Bn(z.id)),className:"mono rounded border border-indigo-500/40 bg-indigo-500/10 px-1.5 py-0.5 text-[10px] uppercase tracking-wider text-indigo-300 hover:bg-indigo-500/20",title:`Open the parent run (${Bn(z.id)}) — the macro view this child belongs to`,children:"↑ parent"}),Xt(z.id)!==void 0&&c.jsx("button",{type:"button",onClick:()=>t(Xt(z.id)),className:"mono rounded border border-zinc-500/40 bg-zinc-500/10 px-1.5 py-0.5 text-[10px] uppercase tracking-wider text-zinc-300 hover:bg-zinc-500/20",title:`This is a retry-with-input of ${Xt(z.id)} — open the original run`,children:"↩ original"}),_&&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(Lo,{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",z.workflowVersion]}),c.jsxs("span",{className:"mono tnum text-[11px] text-zinc-600",children:[P.length," ",P.length===1?"step":"steps"]})]}),c.jsx("div",{className:"mono mt-1 truncate text-[11px] text-zinc-600",children:z.id}),z.tags&&z.tags.length>0&&c.jsx("div",{className:"mt-1.5 flex flex-wrap gap-1",children:z.tags.map(A=>c.jsxs("span",{className:"mono rounded border border-[var(--line)] bg-zinc-800/40 px-1.5 text-[10px] text-zinc-400",children:["#",A]},A))}),z.searchAttributes&&Object.keys(z.searchAttributes).length>0&&c.jsx("div",{className:"mt-1.5 flex flex-wrap gap-1",children:Object.entries(z.searchAttributes).map(([A,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:[A,"=",String(q)]},A))}),(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(A=>c.jsx("span",{onClick:()=>t(A),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:A},A))]}):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:"{ }"}),F&&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(ec,{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(zn,{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(lr,{width:12,height:12}),"Re-dispatch"]}),(z.status==="dead"||z.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(zn,{width:12,height:12}),"Fix & replay"]}),I&&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(zn,{width:12,height:12}),"Cancel + Undo"]}),c.jsxs("button",{type:"button",disabled:!I||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:P.length>0?`1fr ${E}px`:"1fr"},children:[c.jsxs("div",{className:"relative min-h-0",children:[P.length===0?c.jsx("div",{className:"grid h-full place-items-center text-sm text-zinc-600",children:"No steps recorded yet."}):c.jsx(Ap,{run:z,timeline:P,endStatus:V.status,selectedKey:X,onSelect:(A,q)=>N({step:A,run:q}),onOpenRun:t,fmtDuration:Dp,expanded:C,onToggleChild:T}),(z.status==="failed"||z.status==="cancelled")&&z.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:z.error.message})]}),P.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(tc,{run:z,timeline:P,selectedKey:X,onSelect:(A,q)=>N({step:A,run:q}),onOpenRun:t,expanded:C,onToggleChild:T})]}),y&&c.jsx(yc,{step:y.step,run:y.run,onClose:()=>N(void 0),onOpenRun:t}),b&&c.jsx(wc,{run:z,onClose:()=>w(!1)})]}),m.length>0&&c.jsx(Yp,{compensations:m,selKey:X,onSelect:A=>N({step:A,run:z})})]})}function Bs(){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 Kp(){const[e,t]=$.useState("all"),[n,r]=$.useState(""),[s,i]=$.useState(""),[o,a]=$.useState(()=>Bs()),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(Bs());return window.addEventListener("hashchange",N),window.addEventListener("popstate",N),()=>{window.removeEventListener("hashchange",N),window.removeEventListener("popstate",N)}},[]);const u=cn(),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=>ur(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(Rp,{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(Xp,{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(Wp,{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(Ro,{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 Gp=new nc({defaultOptions:{queries:{refetchInterval:2e3,refetchOnWindowFocus:!1}}});rc(document.getElementById("root")).render(c.jsx($.StrictMode,{children:c.jsx(sc,{client:Gp,children:c.jsx(Kp,{})})}));
|