trybeacon 0.1.66 → 0.1.67
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/.claude-plugin/plugin.json +1 -1
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +8 -8
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +11 -11
- package/.next/server/app/_not-found.segments/_full.segment.rsc +11 -11
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/lesson/close/route.js +1 -1
- package/.next/server/app/api/lesson/questions/route.js +1 -1
- package/.next/server/app/api/lesson/route.js +1 -1
- package/.next/server/app/api/lesson/save/route.js +1 -1
- package/.next/server/app/api/lesson/verdict/route.js +1 -1
- package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/docs.html +1 -1
- package/.next/server/app/docs.rsc +11 -11
- package/.next/server/app/docs.segments/_full.segment.rsc +11 -11
- package/.next/server/app/docs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/docs.segments/_index.segment.rsc +11 -11
- package/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/docs.segments/docs.segment.rsc +1 -1
- package/.next/server/app/feedback/page_client-reference-manifest.js +1 -1
- package/.next/server/app/feedback.html +1 -1
- package/.next/server/app/feedback.rsc +11 -11
- package/.next/server/app/feedback.segments/_full.segment.rsc +11 -11
- package/.next/server/app/feedback.segments/_head.segment.rsc +1 -1
- package/.next/server/app/feedback.segments/_index.segment.rsc +11 -11
- package/.next/server/app/feedback.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/feedback.segments/feedback/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/feedback.segments/feedback.segment.rsc +1 -1
- package/.next/server/app/help/page_client-reference-manifest.js +1 -1
- package/.next/server/app/help.html +1 -1
- package/.next/server/app/help.rsc +11 -11
- package/.next/server/app/help.segments/_full.segment.rsc +11 -11
- package/.next/server/app/help.segments/_head.segment.rsc +1 -1
- package/.next/server/app/help.segments/_index.segment.rsc +11 -11
- package/.next/server/app/help.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/help.segments/help/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/help.segments/help.segment.rsc +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +12 -12
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +12 -12
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +11 -11
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/learn/page.js +5 -3
- package/.next/server/app/learn/page.js.nft.json +1 -1
- package/.next/server/app/learn/page_client-reference-manifest.js +1 -1
- package/.next/server/app/map/page.js +2 -2
- package/.next/server/app/map/page.js.nft.json +1 -1
- package/.next/server/app/map/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +2 -2
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/plan/page.js +2 -2
- package/.next/server/app/plan/page.js.nft.json +1 -1
- package/.next/server/app/plan/page_client-reference-manifest.js +1 -1
- package/.next/server/app/s/[token]/page.js +2 -2
- package/.next/server/app/s/[token]/page.js.nft.json +1 -1
- package/.next/server/app/s/[token]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page.js +1 -1
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +8 -8
- package/.next/server/chunks/2025.js +1 -0
- package/.next/server/chunks/2994.js +2 -0
- package/.next/server/chunks/4046.js +3 -3
- package/.next/server/chunks/5683.js +1 -0
- package/.next/server/chunks/5719.js +1 -0
- package/.next/server/chunks/7720.js +154 -0
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/1276-b84f61ec9c0df862.js +1 -0
- package/.next/static/chunks/1a258343-954e0e6619585d3c.js +2 -0
- package/.next/static/chunks/2059-fba06ba63ba64522.js +62 -0
- package/.next/static/chunks/4607-a668ea431c41e60e.js +1 -0
- package/.next/static/chunks/4853-6dc402b4ce452fa5.js +1 -0
- package/.next/static/chunks/{7043-254590cf9891391f.js → 4888-911c0da3c2d785d2.js} +1 -1
- package/.next/static/chunks/5957-83f611fcd5a08b45.js +1 -0
- package/.next/static/chunks/766-242213d211df0afd.js +1 -0
- package/.next/static/chunks/8997-78a359d0d238622e.js +1 -0
- package/.next/static/chunks/app/{layout-0c993f55d3a798f4.js → layout-9f0f4d8e4534a62e.js} +1 -1
- package/.next/static/chunks/app/learn/page-03acad0a37068966.js +7 -0
- package/.next/static/chunks/app/map/page-5cfad64d5feea695.js +1 -0
- package/.next/static/chunks/app/page-d08947a671077569.js +1 -0
- package/.next/static/chunks/app/plan/page-5eacb6b83bd4873d.js +1 -0
- package/.next/static/chunks/app/s/[token]/page-1a350cf50a45500c.js +1 -0
- package/.next/static/chunks/app/settings/page-7e176d120b1effa9.js +1 -0
- package/.next/static/css/63986592e2be7d62.css +1 -0
- package/.next/trace +43 -43
- package/.next/trace-build +1 -1
- package/dist/bin/beacon.js +14 -12
- package/dist/bin/doctor.js +22 -15
- package/dist/bin/hook.js +18 -11
- package/dist/bin/mcp.js +41 -34
- package/dist/bin/plan.js +21 -14
- package/dist/bin/uninstall.js +26 -19
- package/dist/lib/assets.js +7 -0
- package/dist/lib/codex-install.js +28 -21
- package/dist/lib/global-install.js +27 -20
- package/package.json +1 -1
- package/plugin/skills/beacon-explain/SKILL.md +7 -0
- package/.next/server/chunks/3584.js +0 -154
- package/.next/server/chunks/6024.js +0 -2
- package/.next/server/chunks/7187.js +0 -1
- package/.next/server/chunks/8035.js +0 -1
- package/.next/static/chunks/1936-7fea5225b5bfcfda.js +0 -1
- package/.next/static/chunks/1a258343-6baccd9e573fdfaf.js +0 -2
- package/.next/static/chunks/2019-3be80edc82176878.js +0 -1
- package/.next/static/chunks/3845-6fe7e66d4bf82eb5.js +0 -1
- package/.next/static/chunks/4549-591415d55ca009a3.js +0 -62
- package/.next/static/chunks/6638-4e53879181b1df75.js +0 -1
- package/.next/static/chunks/7643-6c7ff4b9400f68fc.js +0 -1
- package/.next/static/chunks/app/learn/page-797d74e02b98fa88.js +0 -5
- package/.next/static/chunks/app/map/page-634b6d5d98e921b3.js +0 -1
- package/.next/static/chunks/app/page-84dc684d45002cfb.js +0 -1
- package/.next/static/chunks/app/plan/page-df829b2054c40611.js +0 -1
- package/.next/static/chunks/app/s/[token]/page-f97dec75856a7952.js +0 -1
- package/.next/static/chunks/app/settings/page-59d90685cd17fc1f.js +0 -1
- package/.next/static/css/b3d3212da726bbfb.css +0 -1
- /package/.next/static/{P3uXQySdS-m6_bxuiezYe → hkOIw5DQW9WSwBwZrD8_9}/_buildManifest.js +0 -0
- /package/.next/static/{P3uXQySdS-m6_bxuiezYe → hkOIw5DQW9WSwBwZrD8_9}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1276],{4474:(e,t,n)=>{n.d(t,{$:()=>i});var r=n(95155),a=n(6539),s=n(18460),o=n(91337);let l=(0,s.F)("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function i({className:e,variant:t="default",size:n="default",...s}){return(0,r.jsx)(a.Button,{"data-slot":"button",className:(0,o.cn)(l({variant:t,size:n,className:e})),...s})}},9991:(e,t,n)=>{n.d(t,{X:()=>c});var r=n(95155),a=n(12115),s=n(65377),o=n(9005),l=n(91337),i=n(56614);function d(e){if(!e||!e.tagName)return!1;let t=e.tagName;return"INPUT"===t||"TEXTAREA"===t||"SELECT"===t||e.isContentEditable}function c({query:e,onQuery:t,hits:n,onPick:u,onZoomToMatches:p,placeholder:x="Search…"}){let[m,f]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{let e=e=>{m||e.metaKey||e.ctrlKey||e.altKey||1!==e.key.length||" "===e.key||d(e.target)||d(document.activeElement)||(e.preventDefault(),f(!0),t(e.key))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[m,t]),(0,r.jsxs)(i.er,{title:"Search",open:m,onOpenChange:e=>e?f(!0):void(f(!1),t("")),outsideClicksToClose:2,trigger:(t,n)=>(0,r.jsx)("button",{type:"button",onClick:n,title:"Search this canvas",className:(0,l.cn)("glass flex size-8 items-center justify-center rounded-lg transition-colors",t||e.trim()?"text-foreground":"text-muted-foreground hover:text-foreground"),children:(0,r.jsx)(s.A,{className:"size-4"})}),children:[(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsx)("input",{autoFocus:!0,value:e,onChange:e=>t(e.target.value),onKeyDown:e=>{"Enter"===e.key&&p&&(e.preventDefault(),p())},placeholder:x,className:"w-full rounded-md border border-white/10 bg-white/[0.04] py-1 pl-2 pr-7 text-[12px] outline-none placeholder:text-muted-foreground/50 focus:bg-white/[0.08]"}),e&&(0,r.jsx)("button",{type:"button",onClick:()=>t(""),title:"Clear search",className:"absolute right-1 top-1/2 flex size-5 -translate-y-1/2 items-center justify-center rounded text-muted-foreground/60 transition-colors hover:bg-white/10 hover:text-foreground",children:(0,r.jsx)(o.A,{className:"size-3.5"})})]}),(0,r.jsxs)("div",{className:"mt-2 max-h-64 space-y-0.5 overflow-y-auto",children:[e.trim()&&0===n.length&&(0,r.jsx)("div",{className:"px-1 py-1 text-[11px] text-muted-foreground",children:"No matches"}),n.map(e=>(0,r.jsxs)("button",{type:"button",onClick:()=>{u(e.id),f(!1)},className:"group flex w-full items-center gap-2 rounded-md px-2 py-1 text-left transition-colors hover:bg-white/5",children:[(0,r.jsx)("span",{className:"min-w-0 flex-1 truncate text-[12px] text-muted-foreground transition-colors group-hover:text-foreground",children:e.label}),e.sublabel&&(0,r.jsx)("span",{className:"shrink-0 text-[10px] uppercase tracking-wide text-muted-foreground/50",children:e.sublabel})]},e.id))]})]})}},12410:(e,t,n)=>{n.d(t,{a2:()=>o,i3:()=>d,xZ:()=>l});let r=["bg-emerald-500/15 text-emerald-300","bg-sky-500/15 text-sky-300","bg-violet-500/15 text-violet-300","bg-amber-500/15 text-amber-200","bg-rose-500/15 text-rose-300","bg-cyan-500/15 text-cyan-300","bg-fuchsia-500/15 text-fuchsia-300","bg-lime-500/15 text-lime-300","bg-orange-500/15 text-orange-300","bg-teal-500/15 text-teal-300","bg-indigo-500/15 text-indigo-300","bg-pink-500/15 text-pink-300"],a=["border-emerald-500/20 bg-emerald-500/[0.04]","border-sky-500/20 bg-sky-500/[0.04]","border-violet-500/20 bg-violet-500/[0.04]","border-amber-500/20 bg-amber-500/[0.04]","border-rose-500/20 bg-rose-500/[0.04]","border-cyan-500/20 bg-cyan-500/[0.04]","border-fuchsia-500/20 bg-fuchsia-500/[0.04]","border-lime-500/20 bg-lime-500/[0.04]","border-orange-500/20 bg-orange-500/[0.04]","border-teal-500/20 bg-teal-500/[0.04]","border-indigo-500/20 bg-indigo-500/[0.04]","border-pink-500/20 bg-pink-500/[0.04]"];function s(e){let t=(e??"").trim().toUpperCase();if(!t)return null;let n=0;for(let e=0;e<t.length;e++)n=31*n+t.charCodeAt(e)>>>0;return n%r.length}function o(e){let t=s(e);return null===t?"bg-white/[0.06] text-muted-foreground":r[t]}function l(e){let t=s(e);return null===t?"border-white/10 bg-white/[0.02]":a[t]}let i=["#34d399","#38bdf8","#a78bfa","#fbbf24","#fb7185","#22d3ee","#e879f9","#a3e635","#fb923c","#2dd4bf","#818cf8","#f472b6"];function d(e){let t=s(e);return null===t?"#9ca3af":i[t]}},14983:(e,t,n)=>{n.d(t,{$$:()=>o,Qk:()=>s,RU:()=>r,Uy:()=>a,jF:()=>l,r2:()=>c,sQ:()=>i,zn:()=>d});let r="0 0 0 3px var(--accent-2,#ff7a45), 0 0 32px -2px var(--accent-2,#ff7a45)",a=.14;function s(e,t){let n=t.trim().toLowerCase();if(!n)return!1;for(let t of e)if(t&&t.toLowerCase().includes(n))return!0;return!1}function o(e){return[e.title,e.role,e.plain,e.cluster,e.status].filter(Boolean)}function l(e){let t=[e.name,e.domain,e.description];for(let n of e.columns??[])t.push(n.name,n.type,n.note);return t.filter(Boolean)}function i(e){return[e.method,e.path,e.domain,e.description].filter(Boolean)}function d(e){return[e.path,e.lang].filter(Boolean)}function c(e,t,n,r,a=12){let o=t.trim().toLowerCase();if(!o)return[];let l=[];for(let t of e){if(!s(n(t),o))continue;let e=r(t);l.push({hit:e,score:function(e,t){let n=e.toLowerCase();return n===t?0:n.startsWith(t)?1:RegExp(`(^|[^a-z0-9])${t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}`,"i").test(e)?2:n.includes(t)?3:4}(e.label,o)})}return l.sort((e,t)=>e.score-t.score||e.hit.label.length-t.hit.label.length),l.slice(0,a).map(e=>e.hit)}},16607:(e,t,n)=>{n.d(t,{d:()=>c});var r=n(95155),a=n(24413),s=n(9005),o=n(78780),l=n(76721),i=n(82099),d=n(91337);function c({steps:e,index:t,onPrev:n,onNext:u,onExit:p,onGoto:x}){let m=e[t];if(!m)return null;let f=t===e.length-1;return(0,r.jsxs)(i.b,{className:"absolute bottom-3 left-3 top-16 z-10 flex w-72 flex-col rounded-2xl",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-3.5 py-2.5",children:[(0,r.jsxs)("span",{className:"flex items-center gap-1.5 text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:[(0,r.jsx)(a.A,{className:"size-3.5"}),"Guided tour"]}),(0,r.jsx)("button",{onClick:p,title:"End tour (Esc)",className:"rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,r.jsx)(s.A,{className:"size-4"})})]}),(0,r.jsxs)("div",{className:"border-b border-white/10 px-3.5 py-3",children:[(0,r.jsxs)("div",{className:"text-[10px] font-medium uppercase tracking-wide text-[var(--accent-2,#ff7a45)]",children:["Step ",t+1," / ",e.length]}),(0,r.jsx)("h2",{className:"mt-1 break-words text-sm font-semibold leading-tight",children:m.title}),(0,r.jsx)("p",{className:"mt-1 text-[11px] leading-snug text-muted-foreground",children:m.summary})]}),(0,r.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto p-1.5",children:(0,r.jsx)("ol",{className:"space-y-0.5",children:e.map((e,n)=>(0,r.jsx)("li",{children:(0,r.jsxs)("button",{onClick:()=>x(n),title:e.title,className:(0,d.cn)("flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left transition-colors",n===t?"bg-white/[0.08] text-foreground":"text-muted-foreground hover:bg-white/[0.04] hover:text-foreground"),children:[(0,r.jsx)("span",{className:(0,d.cn)("flex size-4 shrink-0 items-center justify-center rounded-full text-[9px] font-bold",n===t?"bg-[var(--accent-2,#ff7a45)] text-background":"bg-white/10 text-muted-foreground"),children:n+1}),(0,r.jsx)("span",{className:"truncate text-[11px]",children:e.title})]})},e.id))})}),(0,r.jsxs)("div",{className:"flex items-center justify-between gap-2 border-t border-white/10 p-2",children:[(0,r.jsxs)("button",{onClick:n,disabled:0===t,className:"flex items-center gap-1 rounded-md px-2 py-1.5 text-[11px] text-muted-foreground transition-colors enabled:hover:bg-white/[0.06] enabled:hover:text-foreground disabled:opacity-40",children:[(0,r.jsx)(o.A,{className:"size-3.5"})," Prev"]}),f?(0,r.jsx)("button",{onClick:p,className:"rounded-md bg-[var(--accent-2,#ff7a45)]/90 px-3 py-1.5 text-[11px] font-semibold text-background transition-colors hover:bg-[var(--accent-2,#ff7a45)]",children:"Done"}):(0,r.jsxs)("button",{onClick:u,className:"flex items-center gap-1 rounded-md bg-white/10 px-3 py-1.5 text-[11px] font-semibold text-foreground transition-colors hover:bg-white/[0.16]",children:["Next ",(0,r.jsx)(l.A,{className:"size-3.5"})]})]})]})}},17918:(e,t,n)=>{n.d(t,{Sh:()=>c,V5:()=>d,e0:()=>p});var r=n(95155),a=n(12115),s=n(81750),o=n(6266),l=n(9005),i=n(91337);let d="#ff7a45";function c({data:e,selected:t}){let[n,u]=(0,a.useState)(e.text);return(0,a.useEffect)(()=>{u(e.text)},[e.text]),(0,r.jsxs)("div",{onClick:()=>e.onClick?.(e.annotationId),className:(0,i.cn)("group/anno relative w-[270px] rounded-xl border border-white/10 bg-[#1b1b1e]/95 px-4 py-3 shadow-[0_18px_50px_-20px_rgba(0,0,0,0.9)] backdrop-blur transition-colors hover:border-white/20",!e.editable&&"cursor-pointer",t&&"border-[#ff7a45]/50"),children:[(0,r.jsx)("span",{"aria-hidden":!0,className:"pointer-events-none absolute -left-px bottom-2 top-2 w-[3px] rounded-full",style:{background:d}}),(0,r.jsx)(s.h7,{type:"target",id:"in",position:o.yX.Top,isConnectable:!1,className:"!pointer-events-none !size-1 !min-h-0 !min-w-0 !border-0 !bg-transparent",style:{left:"auto",right:22,top:0}}),(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("div",{className:"font-mono text-[10px] font-semibold uppercase tracking-[0.22em]",style:{color:d},children:"Annotation \xb7 You"}),e.editable&&e.onDelete&&(0,r.jsx)("button",{type:"button",title:"Delete annotation",onClick:t=>{t.stopPropagation(),e.onDelete?.(e.annotationId)},className:"nodrag nopan -mr-1 rounded p-0.5 text-muted-foreground/60 opacity-0 transition-opacity hover:text-red-300 group-hover/anno:opacity-100",children:(0,r.jsx)(l.A,{className:"size-3"})})]}),e.editable?(0,r.jsx)("textarea",{value:n,autoFocus:!e.text.trim(),placeholder:"Type your annotation…",onChange:e=>u(e.target.value),onBlur:()=>{n!==e.text&&e.onChangeText?.(e.annotationId,n)},onKeyDown:e=>e.stopPropagation(),className:"nodrag nopan field-sizing-content mt-1.5 max-h-40 min-h-[2.25rem] w-full resize-none overflow-y-auto bg-transparent text-[13px] leading-snug text-foreground/95 outline-none placeholder:text-muted-foreground/60"}):(0,r.jsx)("div",{className:"mt-1.5 max-h-40 overflow-y-auto text-[13px] leading-snug text-foreground/95",children:e.text.trim()?e.text:(0,r.jsx)("span",{className:"text-muted-foreground",children:"…"})})]})}function u({n:e,annotationId:t,onClick:n}){return(0,r.jsxs)("button",{type:"button",title:`Annotation ${e} — view comment`,onClick:e=>{e.stopPropagation(),n?.(t)},className:"nodrag nopan relative flex size-6 items-center justify-center rounded-full font-mono text-[11px] font-bold text-[#181818] shadow-[0_0_0_3px_rgba(255,122,69,0.22),0_0_16px_2px_rgba(255,122,69,0.4)] transition-transform hover:scale-110",style:{background:d},children:[e,(0,r.jsx)(s.h7,{type:"source",id:`pin-${t}`,position:o.yX.Bottom,isConnectable:!1,className:"!pointer-events-none !size-1 !min-h-0 !min-w-0 !border-0 !bg-transparent",style:{left:"50%",bottom:2}})]})}function p({pins:e,onPinClick:t}){return e.length?(0,r.jsx)("span",{className:"absolute -right-3 top-1/2 z-10 flex -translate-y-1/2 flex-row-reverse gap-1",children:e.map(e=>(0,r.jsx)(u,{n:e.n,annotationId:e.id,onClick:t},e.id))}):null}},18874:(e,t,n)=>{n.d(t,{F1:()=>l,e6:()=>s,qA:()=>a,ru:()=>o});let r={auth:"#4ea1ff",firms:"#c792ea",search:"#7bd389",storage:"#ffb86b",petitions:"#ff7a45",monitoring:"#f5b942",admin:"#ff6b9d"};function a(e){return e&&r[e]||"#8a8a8a"}let s={GET:"#7bd389",POST:"#4ea1ff",PUT:"#ffb86b",PATCH:"#ffb86b",DELETE:"#ff3860"},o={read:"#4ea1ff",write:"#ffb86b","read-write":"#c792ea"};function l(e,t){let n=new Set([e]);for(let r of t)r.source===e&&n.add(r.target),r.target===e&&n.add(r.source);return n}},24692:(e,t,n)=>{n.d(t,{I:()=>d});var r=n(95155),a=n(12115),s=n(81750),o=n(6266),l=n(65738),i=n(28736);function d(e){let{deleteElements:t}=(0,s.VH)(),n=(0,s.JY)(e.source),d=(0,s.JY)(e.target),c=(0,s.pk)(),u=n&&d?(0,i.U)(n,d):null,p=(0,a.useMemo)(()=>c.filter(t=>t.id!==e.source&&t.id!==e.target).map(e=>({x:e.position.x,y:e.position.y,w:e.measured?.width??e.width??0,h:e.measured?.height??e.height??0})).filter(e=>e.w>0&&e.h>0),[c,e.source,e.target]),x=u?(0,i.ZH)(u.sx,u.sy,u.tx,u.ty,p):null,[m,f,h]=(0,o.Fp)(u?{sourceX:u.sx,sourceY:u.sy,sourcePosition:u.sourcePos,targetX:u.tx,targetY:u.ty,targetPosition:u.targetPos}:{sourceX:e.sourceX,sourceY:e.sourceY,sourcePosition:e.sourcePosition,targetX:e.targetX,targetY:e.targetY,targetPosition:e.targetPosition}),g=x?.path??m,b=x?.labelX??f,y=x?.labelY??h;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.tE,{id:e.id,path:g,style:e.style,markerEnd:e.markerEnd,interactionWidth:20}),e.label&&(0,r.jsx)(s.rV,{children:(0,r.jsx)("div",{style:{position:"absolute",transform:`translate(-50%, -120%) translate(${b}px, ${y}px)`,fontSize:11,color:"#cfcfcf",background:"#161616",padding:"1px 4px",borderRadius:4,pointerEvents:"none",zIndex:1e3},children:e.label})}),e.selected&&(0,r.jsx)(s.rV,{children:(0,r.jsx)("div",{className:"nodrag nopan",style:{position:"absolute",transform:`translate(-50%, 0) translate(${b}px, ${y+14}px)`,pointerEvents:"all",zIndex:1e3},children:(0,r.jsx)("button",{type:"button",onMouseDown:e=>e.stopPropagation(),onClick:n=>{n.stopPropagation(),t({edges:[{id:e.id}]})},title:"Delete (or press Backspace)",className:"flex size-7 items-center justify-center rounded-full border border-white/20 bg-card/95 text-red-300 shadow-lg backdrop-blur-md transition-colors hover:bg-red-500/25 hover:text-red-200",children:(0,r.jsx)(l.A,{className:"size-3.5"})})})})]})}},28161:(e,t,n)=>{n.d(t,{A6:()=>i,An:()=>d,RR:()=>r,YG:()=>o,ZD:()=>l,jR:()=>s});let r=["frontend","backend","fullstack"],a={fe:"frontend",front:"frontend",be:"backend",back:"backend",fs:"fullstack","full-stack":"fullstack","full stack":"fullstack"};function s(e){let t=(e??"").trim().toLowerCase();return t?r.includes(t)?t:a[t]??null:null}let o={frontend:{label:"Frontend",short:"FE"},backend:{label:"Backend",short:"BE"},fullstack:{label:"Fullstack",short:"FS"}},l={frontend:"#5AC8FA",backend:"#3ECF8E",fullstack:"#5AC8FA"};function i(e){return"fullstack"!==e?l[e]:`linear-gradient(to bottom, ${l.frontend} 0%, ${l.frontend} 50%, ${l.backend} 50%, ${l.backend} 100%)`}let d=/\.(tsx|jsx|vue|svelte)$/i},28736:(e,t,n)=>{n.d(t,{U:()=>l,ZH:()=>i,u1:()=>d});var r=n(6266);function a(e){let{x:t,y:n}=e.internals.positionAbsolute,r=e.measured?.width??0,a=e.measured?.height??0;return{x:t,y:n,w:r,h:a,cx:t+r/2,cy:n+a/2}}function s(e,t){let n=a(e),r=a(t),s=n.w/2||1,o=n.h/2||1,l=(r.cx-n.cx)/(2*s)-(r.cy-n.cy)/(2*o),i=(r.cx-n.cx)/(2*s)+(r.cy-n.cy)/(2*o),d=1/(Math.abs(l)+Math.abs(i)||1);return{x:s*d*(l+i)+n.cx,y:o*d*(-l+i)+n.cy}}function o(e,t){let n=a(e),s=Math.round(t.x),o=Math.round(t.y);return s<=Math.round(n.x)+1?r.yX.Left:s>=Math.round(n.x+n.w)-1?r.yX.Right:o<=Math.round(n.y)+1?r.yX.Top:r.yX.Bottom}function l(e,t){let n=s(e,t),r=s(t,e);return{sx:n.x,sy:n.y,tx:r.x,ty:r.y,sourcePos:o(e,n),targetPos:o(t,r)}}function i(e,t,n,r,a){let s=a.filter(a=>(function(e,t,n,r,a){let s=a.x-14,o=a.x+a.w+14,l=a.y-14,i=a.y+a.h+14;if(Math.max(e,n)<s||Math.min(e,n)>o||Math.max(t,r)<l||Math.min(t,r)>i)return!1;for(let a=1;a<24;a++){let d=a/24,c=e+(n-e)*d,u=t+(r-t)*d;if(c>=s&&c<=o&&u>=l&&u<=i)return!0}return!1})(e,t,n,r,a));if(!s.length)return null;let o=(e+n)/2,l=(t+r)/2,i=Math.min(...s.map(e=>e.y))-14-26,d=Math.max(...s.map(e=>e.y+e.h))+14+26,c=Math.abs(i-l)<=Math.abs(d-l)?i:d,u=e+(n-e)*.25,p=e+(n-e)*.75;return{path:`M ${e},${t} C ${u},${c} ${p},${c} ${n},${r}`,labelX:o,labelY:c}}function d(e,t){let n=e.x+e.w/2,r=e.y+e.h/2,a=t.x-n,s=t.y-r;if(0===a&&0===s)return{x:n,y:r};let o=1/Math.max(Math.abs(a)/(e.w/2||1),Math.abs(s)/(e.h/2||1));return{x:n+a*o,y:r+s*o}}},29523:(e,t,n)=>{n.d(t,{J:()=>l,k:()=>o});var r=n(12115),a=n(81750),s=n(70221);function o(e){let[t,n]=(0,r.useState)("full"),o=(0,a.Pj)(n=>(0,s.gt)(n.transform[2],t,e));return o!==t&&n(o),o}function l({onLod:e,thresholds:t}){let n=o(t),a=(0,r.useRef)(null);return(0,r.useEffect)(()=>{a.current!==n&&(a.current=n,e(n))},[n,e]),null}},29813:(e,t,n)=>{n.d(t,{to:()=>a});var r=n(94014);function a(e,t,n={}){if(0===e.length)return new Map;let s=function(e,t){let n=e.map(e=>e.id).sort(),r=new Map(n.map(e=>[e,[]]));for(let e of[...t].sort((e,t)=>e.fromId.localeCompare(t.fromId)||e.toId.localeCompare(t.toId)))r.get(e.fromId)?.push(e);let a=new Map,s=[],o=e=>{for(let t of(a.set(e,"visiting"),r.get(e)??[])){let e=a.get(t.toId);"visiting"!==e&&(s.push(t),"done"!==e&&o(t.toId))}a.set(e,"done")};for(let e of n)a.has(e)||o(e);return s}(e,t),o=function(e,t){let n=new Map(e.map(e=>[e.id,[]]));for(let e of t)n.get(e.fromId)?.push(e.toId);let r=new Map,a=e=>{let t=r.get(e);if(void 0!==t)return t;r.set(e,0);let s=n.get(e)??[],o=s.length?1+Math.max(...s.map(a)):0;return r.set(e,o),o};for(let t of e)a(t.id);return r}(e,s),l=new Map(e.map(e=>[e.id,[]]));for(let e of s)l.get(e.fromId)?.push(e.toId);let i=Array.from(new Set(e.map(e=>e.group))),d=i.filter(e=>"—"!==e).sort(),c=i.includes("—")?[...d,"—"]:d,u=[];for(let t of c){let n=e.filter(e=>e.group===t),r=Math.min(...n.map(e=>o.get(e.id)??0)),a=Math.max(...n.map(e=>o.get(e.id)??0)),s=new Map,i=new Map,d=0,c=1;for(let e=r;e<=a;e++){let t=n.filter(t=>o.get(t.id)===e);if(!t.length)continue;let r=e=>{let t=(l.get(e.id)??[]).map(e=>i.get(e)).filter(e=>void 0!==e);return t.length?t.reduce((e,t)=>e+t,0)/t.length:1/0};t.sort((e,t)=>r(e)-r(t)||e.id.localeCompare(t.id));let a=Math.max(1,Math.ceil(Math.sqrt(2*t.length)));t.forEach((e,t)=>{let n=Math.floor(t/a),r=t%a;i.set(e.id,r),s.set(e.id,{x:d+360*n,y:150*r}),c=Math.max(c,r+1)}),d+=360*Math.ceil(t.length/a)}u.push({d:t,w:d,h:150*c,local:s})}let p=(0,r.Xi)(u.map(e=>({id:e.d,w:e.w,h:e.h})),{gapX:84,gapY:80,viewportAspect:n.viewportAspect,minBandW:1080,aspectSlack:1.5}),x=new Map;for(let e of u){let t=p.get(e.d);for(let[n,r]of e.local)x.set(n,{x:t.x+r.x,y:t.y+r.y})}return x}},36849:(e,t,n)=>{n.d(t,{VI:()=>o});var r=n(43137),a=n(94014);function s(e,t,n){let r,a;return null==e.title?n:Math.max(n,(a=66+(((r=(e.title??"").trim())?Math.max(1,Math.ceil(r.length/17)):1)-1)*19,e.role&&e.role.trim()&&(a+=16),t>0&&(a+=22),a+24))}function o(e,t,n={}){let l=n.colW??320,i=n.rowH??150,d=n.childIndent??24,c=n.laneGap??56,u=n.bandGap??110,p=n.maxCols??10,x=n.minBandW??3*l,m=new Set(e.map(e=>e.id)),f=e=>!e.parentId||!m.has(e.parentId),h=e.filter(f),g=new Map;for(let t of e){if(f(t))continue;let e=g.get(t.parentId);e?e.push(t):g.set(t.parentId,[t])}let b="status"===t?e=>e.status:"priority"===t?e=>String(e.priority):e=>(e.cluster??"").trim()||"—",y=new Map;for(let e of h){let t=b(e),n=y.get(t);n?n.push(e):y.set(t,[e])}let v=(function(e,t,n){if("status"===e)return[...r.TT];if("priority"===e)return["0","1","2","3"];let a=Array.from(new Set(t.map(n))),s=a.filter(e=>"—"!==e).sort();return a.includes("—")?[...s,"—"]:s})(t,h,b).filter(e=>y.has(e)),j=[];for(let e of v){let t=y.get(e),n=t.reduce((e,t)=>e+1+(g.get(t.id)?.length??0),0),r=Math.max(1,Math.min(p,t.length,Math.round(Math.sqrt(.85*n))||1)),a=Array(r).fill(0),o=new Map;for(let e of t){let t=0;for(let e=1;e<r;e++)a[e]<a[t]&&(t=e);let n=t*l,c=a[t];o.set(e.id,{x:n,y:c});let u=g.get(e.id)??[],p=c+s(e,u.length,i);for(let e of u)o.set(e.id,{x:n+d,y:p}),p+=s(e,0,i);a[t]=p}let c=a.reduce((e,t)=>Math.max(e,t),0);j.push({id:e,w:r*l,h:c,local:o})}let w=(0,a.Xi)(j.map(e=>({id:e.id,w:e.w,h:e.h})),{gapX:c,gapY:u,viewportAspect:n.viewportAspect,minBandW:x,aspectSlack:1.5}),k=new Map;for(let e of j){let t=w.get(e.id);for(let[n,r]of e.local)k.set(n,{x:t.x+r.x,y:t.y+r.y})}return k}},40654:(e,t,n)=>{n.d(t,{e:()=>E});var r=n(95155),a=n(12115),s=n(5937),o=n(92571),l=n(74350),i=n(4474),d=n(91337),c=n(5989);let u=["ROADMAP","ARCHITECTURE","DATABASE"],p=c.k5(u),x=c.Ik({name:c.Yj(),type:c.Yj(),isPk:c.zM(),isFk:c.zM(),nullable:c.zM(),note:c.Yj().nullable()}),m=c.Ik({id:c.Yj(),view:c.Yj(),kind:c.Yj(),cluster:c.Yj().nullable(),layer:c.Yj().nullable(),title:c.Yj(),role:c.Yj().nullable(),plain:c.Yj().nullable(),status:c.Yj(),priority:c.ai(),x:c.ai(),y:c.ai(),source:c.Yj(),sourceRef:c.Yj().nullable(),parentId:c.Yj().nullable(),isCriterion:c.zM(),files:c.YO(c.Yj()),signals:c.bz().optional(),bugFlags:c.YO(c.bz())}),f=c.Ik({id:c.Yj(),fromId:c.Yj(),toId:c.Yj(),kind:c.Yj(),label:c.Yj().nullable(),sourceHandle:c.Yj().nullable(),targetHandle:c.Yj().nullable()}),h=c.Ik({nodes:c.YO(m),edges:c.YO(f),hasFrontend:c.zM()}),g=c.Ik({id:c.Yj(),name:c.Yj(),domain:c.Yj().nullable(),description:c.Yj().nullable(),source:c.Yj(),x:c.ai(),y:c.ai(),columns:c.YO(x)}),b=c.Ik({id:c.Yj(),fromTableId:c.Yj(),toTableId:c.Yj(),fromColumn:c.Yj(),toColumn:c.Yj(),label:c.Yj().nullable()}),y=c.Ik({id:c.Yj(),method:c.Yj(),path:c.Yj(),domain:c.Yj().nullable(),description:c.Yj().nullable(),source:c.Yj(),x:c.ai(),y:c.ai(),tables:c.YO(c.Ik({tableId:c.Yj(),access:c.Yj()}))}),v=c.Ik({proposedAt:c.ai(),status:c.Yj(),tables:c.YO(c.bz()),relations:c.YO(c.bz()),endpoints:c.YO(c.bz())}).nullable(),j=c.Ik({tables:c.YO(g),relations:c.YO(b),endpoints:c.YO(y),draft:v}),w=c.Ik({kind:c.eu("boards"),version:c.eu(1),createdAt:c.ai(),workspaceLabel:c.Yj(),selectedTabs:c.YO(p).min(1),roadmap:h.optional(),architecture:h.optional(),database:j.optional()}),k=c.Ik({kind:c.eu("plan"),version:c.eu(1),createdAt:c.ai(),workspaceLabel:c.Yj(),title:c.Yj(),markdown:c.Yj(),verdict:c.k5(["approved","discarded"]).nullable(),roadmap:h.optional(),draft:v.optional()});c.gM("kind",[w,k]);var N=n(89793),C=n(96719);let A=[{value:"ALL",label:"All"},{value:"ROADMAP",label:"Roadmap"},{value:"ARCHITECTURE",label:"Architecture"},{value:"DATABASE",label:"Database"}];function E({defaultSelection:e="ALL"}){let[t,n]=(0,a.useState)(!1),[c,p]=(0,a.useState)(e),{status:x,url:m,error:f,copied:h,mint:g,copy:b,reset:y}=(0,N.b)();return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{type:"button",title:"Share a read-only link to these boards",onClick:function(){p(e),y(),n(!0)},className:"glass flex size-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground",children:(0,r.jsx)(s.A,{className:"size-4"})}),(0,r.jsx)(l.lG,{open:t,onOpenChange:n,children:(0,r.jsxs)(l.Cf,{children:[(0,r.jsxs)(l.c7,{children:[(0,r.jsx)(l.L3,{children:"Share a read-only link"}),(0,r.jsx)(l.rr,{children:"Anyone with the link can view these boards — no Beacon needed. Links expire after 7 days."})]}),"done"===x?(0,r.jsx)(C.F,{url:m,copied:h,onCopy:b}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"flex rounded-lg border border-white/10 bg-background/40 p-0.5",children:A.map(e=>(0,r.jsx)("button",{onClick:()=>p(e.value),className:(0,d.cn)("flex-1 rounded-md px-1.5 py-1.5 text-[11px] font-medium transition-colors",c===e.value?"bg-white/10 text-foreground":"text-muted-foreground hover:text-foreground"),children:e.label},e.value))}),"error"===x&&(0,r.jsx)("p",{className:"text-[12px] text-red-400",children:f}),(0,r.jsx)("div",{className:"flex justify-end",children:(0,r.jsx)(i.$,{size:"sm",onClick:function(){g({kind:"boards",tabs:"ALL"===c?[...u]:[c]})},disabled:"loading"===x,children:"loading"===x?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.A,{className:"size-3.5 animate-spin"})," Creating…"]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.A,{className:"size-3.5"})," Create link"]})})})]})]})})]})}},43137:(e,t,n)=>{n.d(t,{TT:()=>s,Xf:()=>l,m6:()=>a,nR:()=>o,yl:()=>r});let r=["PENDING","IN_PROGRESS","DONE","BLOCKED","CANCELLED","DEPRIORITIZED"],a=["KEEP","REBUILD","REPLACE","DROP"],s=["IN_PROGRESS","PENDING","BLOCKED","DONE","DEPRIORITIZED","CANCELLED"],o={DONE:{label:"Done",className:"border-emerald-500/30 bg-emerald-500/15 text-emerald-300"},IN_PROGRESS:{label:"In progress",className:"border-sky-500/30 bg-sky-500/15 text-sky-300"},PENDING:{label:"Pending",className:"border-amber-500/30 bg-amber-500/10 text-amber-200"},BLOCKED:{label:"Blocked",className:"border-orange-500/30 bg-orange-500/15 text-orange-300"},CANCELLED:{label:"Cancelled",className:"border-zinc-500/30 bg-zinc-500/10 text-zinc-400 line-through"},DEPRIORITIZED:{label:"Deprioritized",className:"border-zinc-600/40 bg-zinc-600/10 text-zinc-400"},KEEP:{label:"Keep",className:"border-emerald-500/30 bg-emerald-500/15 text-emerald-300"},REBUILD:{label:"Rebuild",className:"border-violet-500/30 bg-violet-500/15 text-violet-300"},REPLACE:{label:"Replace",className:"border-rose-500/30 bg-rose-500/15 text-rose-300"},DROP:{label:"Drop",className:"border-zinc-500/30 bg-zinc-500/10 text-zinc-400 line-through"}};function l(e){return e?.trim()||"—"}},44267:(e,t,n)=>{n.d(t,{S:()=>r});function r(e,t={}){let n=t.pad??20,a=t.header??26,s=new Map;for(let t of e){let e=s.get(t.group);e?(e.minX=Math.min(e.minX,t.x),e.minY=Math.min(e.minY,t.y),e.maxX=Math.max(e.maxX,t.x+t.w),e.maxY=Math.max(e.maxY,t.y+t.h),e.count++):s.set(t.group,{minX:t.x,minY:t.y,maxX:t.x+t.w,maxY:t.y+t.h,count:1})}return Array.from(s.entries()).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>({key:e,label:e,x:t.minX-n,y:t.minY-n-a,w:t.maxX-t.minX+2*n,h:t.maxY-t.minY+2*n+a,count:t.count}))}},45437:(e,t,n)=>{n.d(t,{L:()=>o});var r=n(95155),a=n(81750),s=n(28736);function o(e){let t=(0,a.JY)(e.target),n=e.targetX,o=e.targetY,l=t?.measured?.width,i=t?.measured?.height;if(t&&l&&i){let r=(0,s.u1)({x:t.internals.positionAbsolute.x,y:t.internals.positionAbsolute.y,w:l,h:i},{x:e.sourceX,y:e.sourceY});n=r.x,o=r.y}let d=e.sourceX,c=e.sourceY,u=n-d,p=o-c,x=Math.hypot(u,p)||1,m=Math.min(.18*x,42),f=(d+n)/2+-p/x*m,h=(c+o)/2+u/x*m,g=`M${d},${c} Q${f},${h} ${n},${o}`;return(0,r.jsx)(a.tE,{id:e.id,path:g,style:e.style,markerEnd:e.markerEnd})}},47409:(e,t,n)=>{n.d(t,{h:()=>y});var r=n(95155),a=n(12115),s=n(25583),o=n(874),l=n(36483),i=n(9107),d=n(76721),c=n(14225),u=n(95660);function p(e,t){return{name:e,path:t,folders:new Map,files:new Map}}function x(e,t){return e.kind!==t.kind?"folder"===e.kind?-1:1:e.name.localeCompare(t.name,void 0,{sensitivity:"base"})}var m=n(91337);let f={added:"text-emerald-400",modified:"text-amber-300",deleted:"text-rose-400 line-through"},h={added:"bg-emerald-400",modified:"bg-amber-300",deleted:"bg-rose-400"};function g({name:e,className:t}){let n=e.slice(e.lastIndexOf(".")+1).toLowerCase();return["ts","tsx","js","jsx","mjs","cjs"].includes(n)?(0,r.jsx)(s.A,{className:t}):"json"===n?(0,r.jsx)(o.A,{className:t}):["md","mdx","txt","css","scss"].includes(n)?(0,r.jsx)(l.A,{className:t}):(0,r.jsx)(i.A,{className:t})}function b({nodes:e,depth:t,collapsed:n,onToggle:a,onSelect:s}){return(0,r.jsx)("ul",{className:(0,m.cn)(t>0&&"ml-[7px] border-l border-white/10 pl-1.5"),children:e.map(e=>"folder"===e.kind?(0,r.jsxs)("li",{children:[(0,r.jsxs)("button",{type:"button",onClick:()=>a(e.path),title:e.path,className:"flex w-full items-center gap-1 rounded px-1.5 py-1 text-left text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:[(0,r.jsx)(d.A,{className:(0,m.cn)("size-3 shrink-0 transition-transform",!n.has(e.path)&&"rotate-90")}),n.has(e.path)?(0,r.jsx)(c.A,{className:"size-3.5 shrink-0 text-muted-foreground"}):(0,r.jsx)(u.A,{className:"size-3.5 shrink-0 text-muted-foreground"}),(0,r.jsx)("span",{className:"truncate text-[11px] font-medium",children:e.name})]}),!n.has(e.path)&&(0,r.jsx)(b,{nodes:e.children,depth:t+1,collapsed:n,onToggle:a,onSelect:s})]},`d:${e.path}`):(0,r.jsx)("li",{children:(0,r.jsxs)("button",{type:"button",onClick:()=>s(e),title:e.path,className:"flex w-full items-center gap-1.5 rounded py-1 pl-[18px] pr-1.5 text-left transition-colors hover:bg-white/[0.06]",children:[(0,r.jsx)(g,{name:e.name,className:(0,m.cn)("size-3.5 shrink-0",e.status?f[e.status]:"text-muted-foreground")}),(0,r.jsx)("span",{className:(0,m.cn)("truncate text-[11px]",e.status?f[e.status]:"text-foreground/90"),children:e.name}),(0,r.jsxs)("span",{className:"ml-auto flex shrink-0 items-center gap-1.5",children:[e.meta&&(0,r.jsx)("span",{className:"text-[9px] text-teal-300/80",children:e.meta}),e.status&&(0,r.jsx)("span",{className:(0,m.cn)("size-1.5 rounded-full",h[e.status])})]})]})},`f:${e.path}`))})}function y({files:e,onSelect:t,collapse:n=!0,emptyLabel:s,className:o}){let l=(0,a.useMemo)(()=>(function(e,t={}){let n=t.collapseSingleChildFolders??!0,r=p("","");for(let t of e){let e=t.path.split("\\").join("/").trim().replace(/^\/+/,"").replace(/\/+$/,"");if(!e)continue;let n=e.split("/").filter(Boolean);if(!n.length)continue;let a=r;for(let e=0;e<n.length-1;e++){let t=n[e],r=a.path?`${a.path}/${t}`:t,s=a.folders.get(t);s||(s=p(t,r),a.folders.set(t,s)),a=s}let s=n[n.length-1];a.files.set(s,{kind:"file",name:s,path:e,status:t.status,meta:t.meta})}return function e(t,n){let r=[];for(let a of t.folders.values())r.push(function(t,n){let r=t.name,a=t;for(;n&&0===a.files.size&&1===a.folders.size;){let e=a.folders.values().next().value;r=`${r}/${e.name}`,a=e}return{kind:"folder",name:r,path:a.path,children:e(a,n)}}(a,n));for(let e of t.files.values())r.push(e);return r.sort(x)}(r,n)})(e,{collapseSingleChildFolders:n}),[e,n]),[i,d]=(0,a.useState)(()=>new Set);return l.length?(0,r.jsx)("div",{className:o,children:(0,r.jsx)(b,{nodes:l,depth:0,collapsed:i,onToggle:e=>d(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),onSelect:e=>{var n;return t?t(e.path):(n=e.path,void fetch(`/api/open?path=${encodeURIComponent(n)}`).catch(()=>{}))}})}):s?(0,r.jsx)("p",{className:(0,m.cn)("px-2 py-1 text-[11px] text-muted-foreground",o),children:s}):null}},51276:(e,t,n)=>{n.d(t,{MapClient:()=>tI});var r=n(95155),a=n(12115),s=n(98112),o=n(6266),l=n(81750);n(53255);var i=n(17356),d=n(85618),c=n(2125),u=n(68319),p=n(15480),x=n(24413),m=n(17494),f=n(80846),h=n(45486),g=n(73321),b=n(95635),y=n(17918),v=n(9339);let j=(0,v.createServerReference)("40f7be0a53021dfcd9184789a57b9114a4bace89e1",v.callServer,void 0,v.findSourceMapURL,"acceptSuggestionAction");var w=n(50981),k=n(34306),N=n(49960),C=n(55737),A=n(72974),E=n(83599),S=n(52750),I=n(68426),R=n(48869),z=n(55776),M=n(65377),T=n(71019),D=n(44825),O=n(54154),P=n(19707),$=n(29450),L=n(17082),Y=n(76181),F=n(27700),U=n(12651),H=n(85222),B=n(70299),_=n(22200),X=n(8962),G=n(12363),K=n(32133),Z=n(76721),V=n(84824),W=n(5736),J=n(65738),q=n(40638),Q=n(36483),ee=n(86659),et=n(9751),en=n(86272),er=n(64577),ea=n(9005),es=n(26518),eo=n(43137),el=n(28161),ei=n(12410);let ed=(0,a.createContext)(null);function ec(){let e=(0,a.useContext)(ed);if(!e)throw Error("useNodeEdit must be used inside NodeEditContext");return e}var eu=n(29523),ep=n(13439),ex=n(62678),em=n(95112),ef=n(67357),eh=n(8143),eg=n(58309),eb=n(5497),ey=n(54682),ev=n(56991),ej=n(93492),ew=n(60292),ek=n(91337);function eN({value:e,onChange:t,onBlur:n,autoFocus:s,compact:o,bare:l,className:i,placeholder:d="Description (markdown)… type @ to mention a file, feature, table…",editable:c=!0}){let u=(0,ep.hG)({editable:c,extensions:[...ey.Pu,ex.Or.configure({placeholder:d}),ev.tw.configure({suggestion:{char:"@",items:async({query:e})=>{if(!e.trim())return[];try{let t=await fetch(`/api/mention-search?q=${encodeURIComponent(e)}`,{headers:(0,ew.dh)((0,ew.fk)())});if(!t.ok)return[];return(await t.json()).hits}catch{return[]}},command:({editor:e,range:t,props:n})=>{e.chain().focus().insertContentAt(t,[{type:"mention",attrs:{kind:n.kind,ref:n.ref,label:n.label}},{type:"text",text:" "}]).run()},render:()=>{let e=null,t=null,n=e=>{if(!t||!e)return;let n=e();n&&(t.style.left=`${n.left}px`,t.style.top=`${n.bottom+4}px`)};return{onStart:r=>{e=new ep.NV(eE,{props:r,editor:r.editor}),(t=document.createElement("div")).style.position="fixed",t.style.zIndex="10000",document.body.appendChild(t),t.appendChild(e.element),n(r.clientRect)},onUpdate:t=>{e?.updateProps(t),n(t.clientRect)},onKeyDown:n=>"Escape"===n.event.key?(t?.remove(),!0):e?.ref?.onKeyDown(n)??!1,onExit:()=>{t?.remove(),t=null,e?.destroy(),e=null}}}}})],content:e?(0,ey.Gd)(e):void 0,immediatelyRender:!1,autofocus:!!s&&"end",editorProps:{attributes:{class:(0,ek.cn)("nodrag nopan node-prose focus:outline-none",i)}},onUpdate:({editor:e})=>t((0,ey.Z2)(e.getJSON())),onBlur:()=>n?.()});return((0,a.useEffect)(()=>{u?.setEditable(c)},[u,c]),(0,a.useEffect)(()=>{!u||u.isFocused||(0,ey.Z2)(u.getJSON())!==e&&u.commands.setContent(e?(0,ey.Gd)(e):"")},[u,e]),u)?(0,r.jsxs)("div",{className:"flex flex-col gap-1",children:[c&&(0,r.jsx)(eC,{editor:u,compact:o}),(0,r.jsx)(ep.$Z,{editor:u,onKeyDown:e=>e.stopPropagation(),className:(0,ek.cn)("node-editor min-h-[3.5rem] rounded",l?"text-[15px] leading-relaxed":"bg-white/[0.04] px-1.5 py-1 text-xs focus-within:bg-white/[0.08]",o&&"max-h-[24rem] overflow-y-auto")})]}):null}function eC({editor:e,compact:t}){(0,ej.U)(e);let n=()=>e.chain().focus(),a=t?"size-3":"size-3.5";return(0,r.jsxs)("div",{className:"flex items-center gap-0.5",children:[(0,r.jsx)(ej.I,{label:"Bold",active:e.isActive("bold"),onClick:()=>n().toggleBold().run(),children:(0,r.jsx)(em.A,{className:a})}),(0,r.jsx)(ej.I,{label:"Italic",active:e.isActive("italic"),onClick:()=>n().toggleItalic().run(),children:(0,r.jsx)(ef.A,{className:a})}),(0,r.jsx)("span",{"aria-hidden":!0,className:"mx-0.5 h-3.5 w-px bg-white/10"}),(0,r.jsx)(ej.I,{label:"Checklist",active:e.isActive("taskList"),onClick:()=>n().toggleTaskList().run(),children:(0,r.jsx)(eh.A,{className:a})}),(0,r.jsx)(ej.I,{label:"Bullet list",active:e.isActive("bulletList"),onClick:()=>n().toggleBulletList().run(),children:(0,r.jsx)(eg.A,{className:a})}),(0,r.jsx)(ej.I,{label:"Numbered list",active:e.isActive("orderedList"),onClick:()=>n().toggleOrderedList().run(),children:(0,r.jsx)(eb.A,{className:a})})]})}let eA={file:"\uD83D\uDCC4",folder:"\uD83D\uDCC1",feature:"\uD83E\uDDE9",table:"⛁",endpoint:"⇄",note:"\uD83D\uDDD2"},eE=(0,a.forwardRef)(function({items:e,command:t},n){let[s,o]=(0,a.useState)(0);return((0,a.useEffect)(()=>o(0),[e]),(0,a.useImperativeHandle)(n,()=>({onKeyDown:({event:n})=>"ArrowDown"===n.key?(o(t=>(t+1)%Math.max(e.length,1)),!0):"ArrowUp"===n.key?(o(t=>(t-1+e.length)%Math.max(e.length,1)),!0):"Enter"===n.key&&(e[s]&&t(e[s]),!0)})),e.length)?(0,r.jsx)("div",{className:"glass max-h-72 min-w-56 max-w-80 overflow-y-auto rounded-lg p-1 shadow-xl",children:e.map((e,n)=>(0,r.jsxs)("button",{type:"button",onMouseDown:n=>{n.preventDefault(),t(e)},onMouseEnter:()=>o(n),className:(0,ek.cn)("flex w-full items-center gap-2 rounded px-2 py-1 text-left text-[12px]",n===s?"bg-white/[0.1] text-foreground":"text-foreground/85 hover:bg-white/[0.05]"),children:[(0,r.jsx)("span",{"aria-hidden":!0,className:"shrink-0 text-[11px] opacity-80",children:eA[e.kind]??"•"}),(0,r.jsx)("span",{className:"truncate",children:e.label}),e.sublabel&&(0,r.jsx)("span",{className:"ml-auto shrink-0 truncate text-[10px] text-muted-foreground/70",children:e.sublabel})]},`${e.kind}:${e.ref}`))}):(0,r.jsx)("div",{className:"glass min-w-56 rounded-lg p-2 text-[11px] text-muted-foreground shadow-xl",children:"No matches"})}),eS=[{v:0,l:"P0 \xb7 critical"},{v:1,l:"P1 \xb7 high"},{v:2,l:"P2 \xb7 medium"},{v:3,l:"P3 \xb7 low"}],eI=["#ff3860","#ff7a45","#fbbf24","#a1a1aa"],eR=[[/AUTH|SECURIT|LOGIN|SESSION|IDENT/,w.A],[/DATA|\bDB\b|DBMAP|SQL|STORAGE|STORE|CACHE|PERSIST/,k.A],[/\bUI\b|FRONT|VIEW|CANVAS|BOARD|DESIGN/,N.A],[/MCP|\bAPI\b|INTEGRAT/,C.A],[/WEBHOOK|HOOK/,A.A],[/INTEL|GRAPH|\bCODE\b|SYMBOL|SEARCH|FIND/,E.A],[/PLAN|ROADMAP|REVIEW/,S.A],[/INFRA|DEVOPS|CLOUD|DEPLOY|MEDIA/,I.A],[/GAM|PLAY/,R.A],[/NOTE|DOC/,z.A],[/QUERY|SEARCH/,M.A],[/BILL|\bPAY|CHECKOUT|SUBSCRIPT|INVOICE/,T.A],[/LAUNCH|RELEASE|SHIP|ROCKET/,D.A],[/INSTALL|SETUP|BOOTSTRAP|INIT/,O.A],[/CONTEXT|LAYER|BUNDLE/,P.A]],ez=[$.A,L.A,Y.A,F.A,U.A,H.A],eM="nodrag nopan";function eT({layer:e,onSave:t,readOnly:n}){let a=(0,el.jR)(e);return(0,r.jsxs)(es.l6,{value:a??"none",onValueChange:e=>t("none"===e?null:e),disabled:n,children:[(0,r.jsx)(es.bq,{title:"Which side of the stack this lands on",className:(0,ek.cn)(eM,"!h-5 shrink-0 gap-1 rounded !border-0 !bg-white/10 !px-1.5 !py-0 text-[9px] font-semibold uppercase tracking-wide text-zinc-300 [&_svg]:size-2.5 [&>svg]:hidden hover:[&>svg]:block"),children:(0,r.jsx)(es.yv,{children:e=>"none"===e?(0,r.jsx)("span",{className:"text-muted-foreground/70",children:"layer"}):(0,r.jsxs)("span",{className:"flex items-center gap-1",children:["backend"!==e&&(0,r.jsx)(B.A,{className:"size-2.5"}),"frontend"!==e&&(0,r.jsx)(_.A,{className:"size-2.5"}),el.YG[e]?.short??e]})})}),(0,r.jsxs)(es.gC,{alignItemWithTrigger:!1,children:[(0,r.jsx)(es.eb,{value:"none",children:"— no layer"}),Object.entries(el.YG).map(([e,t])=>(0,r.jsx)(es.eb,{value:e,children:t.label},e))]})]})}let eD={DONE:"#34d399",IN_PROGRESS:"#38bdf8",PENDING:"#fbbf24",BLOCKED:"#fb923c",CANCELLED:"#71717a",DEPRIORITIZED:"#52525b",KEEP:"#34d399",REBUILD:"#a78bfa",REPLACE:"#fb7185",DROP:"#71717a"};function eO({status:e}){return(0,r.jsx)("span",{"aria-hidden":!0,title:eo.nR[e]?.label??e,className:"absolute bottom-2 left-1 top-2 w-[3px] rounded-full",style:{background:eD[e]??"#71717a"}})}function eP({priority:e,rank:t}){let n=eI[e]??eI[3];return(0,r.jsxs)("div",{className:"flex w-5 shrink-0 flex-col items-center gap-1 self-stretch border-r border-white/[0.06] py-1.5",title:eS[e]?.l??"priority",children:[null!=t&&(0,r.jsx)("span",{title:`#${t} in the work order`,className:(0,ek.cn)("flex size-4 shrink-0 items-center justify-center rounded text-[10px] font-bold leading-none",1===t?"bg-emerald-400 text-black":"bg-white/10 text-muted-foreground"),children:t}),(0,r.jsx)("span",{className:"w-[3px] flex-1 rounded-full",style:{background:n,opacity:.9}})]})}function e$({onFocus:e,onExpand:t,onDetails:n,expanded:a,className:s}){return(0,r.jsxs)("div",{className:(0,ek.cn)(eM,"absolute z-20 flex items-center gap-0.5 rounded-lg p-0.5 transition-colors group-hover/nc:border group-hover/nc:border-white/10 group-hover/nc:bg-card/90 group-hover/nc:shadow-lg group-hover/nc:backdrop-blur",s??"right-2 top-2"),children:[(0,r.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),e()},title:"Edit description in focus mode",className:"flex w-0 items-center justify-center overflow-hidden rounded p-0 text-muted-foreground opacity-0 transition-all hover:text-[#ff7a45] group-hover/nc:w-6 group-hover/nc:p-0.5 group-hover/nc:opacity-100",children:(0,r.jsx)(X.A,{className:"size-3.5"})}),(0,r.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),t()},title:a?"Collapse":"Expand in place",className:"flex w-0 items-center justify-center overflow-hidden rounded p-0 text-muted-foreground opacity-0 transition-all hover:text-foreground group-hover/nc:w-6 group-hover/nc:p-0.5 group-hover/nc:opacity-100",children:(0,r.jsx)(G.A,{className:(0,ek.cn)("size-3.5 transition-transform",a&&"rotate-180")})}),(0,r.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),n()},title:"Open details side panel",className:"flex w-0 items-center justify-center overflow-hidden rounded p-0 text-muted-foreground opacity-0 transition-all hover:text-[#ff7a45] group-hover/nc:w-6 group-hover/nc:p-0.5 group-hover/nc:opacity-100",children:(0,r.jsx)(h.A,{className:"size-3.5"})})]})}function eL({value:e,label:t,Icon:n,danger:a}){return(0,r.jsxs)("div",{className:"text-center",children:[(0,r.jsx)("div",{className:(0,ek.cn)("text-[13px] font-semibold leading-none tracking-tight tabular-nums",a&&"text-rose-300"),children:e}),(0,r.jsxs)("div",{className:"mt-0.5 flex items-center justify-center gap-0.5 text-[8px] font-medium uppercase tracking-wide text-muted-foreground",children:[(0,r.jsx)(n,{className:"size-2.5"}),t]})]})}function eY({importsIn:e}){let t=e>=16?5:e>=8?4:e>=4?3:e>=2?2:+(e>=1);return(0,r.jsxs)("span",{className:"flex items-center gap-1.5 text-[10px] text-muted-foreground",title:`${e} external file(s) import this component`,children:[(0,r.jsx)("span",{className:"flex items-center gap-0.5",children:[0,1,2,3,4].map(e=>(0,r.jsx)("span",{className:"size-1 rounded-full bg-sky-400",style:{opacity:e<t?.7:.18}},e))}),e>=8?"core dependency":e>=3?"shared":e>=1?"leaf":"isolated"]})}function eF({nodeId:e}){let t=(0,g.useRouter)(),[n,s]=(0,a.useState)(!1),[o,l]=(0,a.useState)(""),[i,d]=(0,a.useState)(!1),c=()=>{s(!1),l("")},p=async()=>{let n=o.trim();if(n&&!i){d(!0);try{(await fetch("/api/bug-flags",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({nodeId:e,by:"user",note:n})})).ok&&(c(),t.refresh())}finally{d(!1)}}};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{type:"button",title:"Flag a bug on this component",onClick:e=>{e.stopPropagation(),s(e=>!e)},className:(0,ek.cn)(eM,"absolute -right-3 top-[calc(50%-28px)] z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-[#242428] text-muted-foreground shadow-md transition-all hover:border-rose-400/50 hover:text-rose-300",n?"border-rose-400/50 text-rose-300 opacity-100":"opacity-0 group-hover/nc:opacity-100"),children:(0,r.jsx)(u.A,{className:"size-3"})}),n&&(0,r.jsxs)("div",{onClick:e=>e.stopPropagation(),className:(0,ek.cn)(eM,"absolute -right-2 top-[calc(50%-28px)] z-20 w-60 translate-x-full rounded-xl border border-rose-400/25 bg-[#1c1c1f] p-2 shadow-xl"),children:[(0,r.jsxs)("div",{className:"mb-1.5 flex items-center justify-between",children:[(0,r.jsxs)("span",{className:"flex items-center gap-1 text-[10px] font-semibold uppercase tracking-wide text-rose-300",children:[(0,r.jsx)(u.A,{className:"size-3"})," Flag a bug"]}),(0,r.jsx)("button",{type:"button",title:"Cancel",onClick:c,className:"rounded p-0.5 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,r.jsx)("span",{className:"block px-1 text-[11px] leading-none",children:"✕"})})]}),(0,r.jsx)("textarea",{autoFocus:!0,rows:2,value:o,placeholder:"What did you find?",onChange:e=>l(e.target.value),onKeyDown:e=>{e.stopPropagation(),"Escape"===e.key&&c(),"Enter"!==e.key||e.shiftKey||(e.preventDefault(),p())},className:"field-sizing-content max-h-40 min-h-12 w-full resize-none rounded-md bg-white/[0.04] px-1.5 py-1 text-xs outline-none placeholder:text-muted-foreground/50 focus:bg-white/[0.07]"}),(0,r.jsx)("button",{type:"button",disabled:i||!o.trim(),onClick:()=>void p(),className:"mt-1.5 w-full rounded-md bg-rose-500/15 py-1 text-[11px] font-semibold text-rose-300 transition-colors hover:bg-rose-500/25 disabled:opacity-50",children:i?"Flagging…":"Flag bug"})]})]})}let eU=["border-[#ff3860]/60 shadow-[0_0_0_1px_rgba(255,56,96,0.15)]","border-[#ff7a45]/50","border-amber-400/35","border-border"],eH=(0,a.memo)(function({id:e,data:t,selected:n}){let{categories:s,statuses:o,patch:l,isExpanded:i,toggleExpand:d,openDetailed:c,openFocus:p,removeNode:x,editingTitleId:m,onAskAgent:f,hasFrontend:h,readOnly:g}=ec(),v=i(e),[w,k]=(0,a.useState)(!1),[N,C]=(0,a.useState)(t.title),[A,E]=(0,a.useState)(t.cluster??""),[S,I]=(0,a.useState)(t.plain??"");(0,a.useEffect)(()=>I(t.plain??""),[t.plain]);let R="BUG"===t.kind&&"ROADMAP"===t.view,z="ARCHITECTURE"===t.view,M=z?"border-border":eU[t.priority]??"border-border",T=t.openBugs??0,D="CANCELLED"===t.status||"DROP"===t.status,O="DEPRIORITIZED"===t.status,P="DRAFT"===t.source,$="IN_PROGRESS"===t.status,L="INIT"===t.source&&"ROADMAP"===t.view,Y=t=>{g||l(e,t,!0)},[F,U]=(0,a.useTransition)(),H=(0,eu.k)();if("full"!==H)return(0,r.jsxs)("div",{className:(0,ek.cn)("relative rounded-lg border bg-card px-3 py-2.5 text-card-foreground shadow-sm","w-fit max-w-[296px]",t.isChild?"min-w-56":"min-w-64",R?"border-rose-400/50 bg-rose-500/[0.05]":M,$&&"border-sky-400/60",n&&"ring-2 ring-[var(--accent,#f5b942)]",D&&"opacity-60","far"===H&&!g&&"!opacity-0"),children:[(0,r.jsx)(b.x,{}),(0,r.jsx)(eO,{status:t.status}),(0,r.jsx)("div",{className:"break-words text-[15px] font-semibold leading-snug",children:t.title})]});let B=(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(b.x,{}),z&&(0,r.jsx)(eF,{nodeId:e}),(t.pins?.length??0)>0?(0,r.jsx)(y.e0,{pins:t.pins,onPinClick:t.onPinClick}):t.onComment&&(0,r.jsx)("button",{type:"button",title:`Annotate ${t.title}`,onClick:e=>{e.stopPropagation(),t.onComment?.(t.title)},className:(0,ek.cn)(eM,"absolute -right-3 top-1/2 z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-[#242428] text-muted-foreground opacity-0 shadow-md transition-all group-hover/nc:opacity-100 hover:border-[#ff7a45]/50 hover:text-[#ff7a45]"),children:(0,r.jsx)(K.A,{className:"size-3"})})]}),_=(t.childCount??0)>0&&(0,r.jsxs)("button",{type:"button",onClick:n=>{n.stopPropagation(),t.onToggleCollapse?.(e)},title:t.collapsed?`Show ${t.childCount} sub-task${1===t.childCount?"":"s"}`:`Hide ${t.childCount} sub-task${1===t.childCount?"":"s"}`,className:(0,ek.cn)(eM,"mt-0.5 flex shrink-0 items-center gap-0.5 rounded px-1 text-[10px] font-semibold transition-colors",t.collapsed?"bg-white/[0.06] text-foreground hover:bg-white/10":"text-muted-foreground hover:bg-white/5 hover:text-foreground"),children:[t.collapsed?(0,r.jsx)(Z.A,{className:"size-3"}):(0,r.jsx)(G.A,{className:"size-3"}),t.childCount]}),X=(0,r.jsx)(e$,{onFocus:()=>p({id:e,title:t.title||"Untitled",value:S,editable:!g,onCommit:e=>Y({plain:e.trim()||null})}),onExpand:()=>d(e),onDetails:()=>c(e),expanded:v,className:"top-full right-1 mt-1.5 before:absolute before:inset-x-0 before:bottom-full before:h-2.5 before:content-['']"}),el=(0,r.jsx)("textarea",{rows:1,value:N,readOnly:g,autoFocus:m===e,placeholder:"Title…",onFocus:t=>{m===e&&t.currentTarget.select()},onChange:e=>C(e.target.value),onBlur:()=>{let e=N.trim();e&&e!==t.title&&Y({title:e})},onKeyDown:e=>{e.stopPropagation(),"Enter"!==e.key||e.shiftKey||(e.preventDefault(),e.currentTarget.blur())},className:(0,ek.cn)(eM,"field-sizing-content w-full resize-none bg-transparent text-sm font-medium leading-snug outline-none placeholder:text-muted-foreground/60",D&&"line-through")}),ed=(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("input",{list:`cats-${e}`,value:A,readOnly:g,placeholder:z?"domain":"category",title:z?"Architecture domain — the lane this component lives in":void 0,onChange:e=>E(e.target.value),onBlur:()=>{let e=A.trim()||null;e!==(t.cluster??null)&&Y({cluster:e})},onKeyDown:e=>{e.stopPropagation(),"Enter"===e.key&&e.currentTarget.blur()},className:(0,ek.cn)(eM,"field-sizing-content min-w-12 max-w-[60%] rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide outline-none focus:brightness-125 [&::-webkit-calendar-picker-indicator]:hidden",(0,ei.a2)(A))}),(0,r.jsx)("datalist",{id:`cats-${e}`,children:s.map(e=>(0,r.jsx)("option",{value:e},e))})]}),ep=(0,r.jsxs)(es.l6,{value:t.status,onValueChange:e=>Y({status:e}),disabled:g,children:[(0,r.jsx)(es.bq,{className:(0,ek.cn)(eM,"!h-5 shrink-0 !gap-0.5 rounded border !px-1.5 !py-0 text-[10px] font-medium [&_svg]:size-3",eo.nR[t.status]?.className??"border-white/10"),children:(0,r.jsx)(es.yv,{children:e=>eo.nR[e]?.label??e})}),(0,r.jsx)(es.gC,{alignItemWithTrigger:!1,children:o.map(e=>(0,r.jsx)(es.eb,{value:e,children:eo.nR[e]?.label??e},e))})]}),ex=(T>0||(t.signals?.untested??0)>0||t.signals?.auth)&&(0,r.jsxs)("div",{className:"mt-1.5 flex w-0 min-w-full flex-wrap items-center gap-1",children:[T>0&&(0,r.jsxs)("span",{title:`${T} open bug flag(s)`,className:"flex items-center gap-1 rounded bg-rose-500/15 px-1 text-[9px] font-semibold uppercase tracking-wide text-rose-300",children:[(0,r.jsx)(u.A,{className:"size-2.5"}),T]}),(t.signals?.untested??0)>0&&(0,r.jsxs)("span",{title:`${t.signals.untested} of ${t.signals.total} attached file(s) have no test importing them`,className:"flex items-center gap-1 rounded bg-amber-500/15 px-1 text-[9px] font-semibold uppercase tracking-wide text-amber-300",children:[(0,r.jsx)(V.A,{className:"size-2.5"}),t.signals.untested]}),t.signals?.auth&&(0,r.jsxs)("span",{title:"touches auth-sensitive files",className:"flex items-center gap-1 rounded bg-red-500/15 px-1 text-[9px] font-semibold uppercase tracking-wide text-red-300",children:[(0,r.jsx)(W.A,{className:"size-2.5"})," auth"]})]}),em=v&&(0,r.jsxs)("div",{className:"mt-2 w-0 min-w-full space-y-2 border-t border-white/10 pt-2",children:[(0,r.jsx)(eN,{compact:!0,editable:!g,value:S,onChange:I,onBlur:()=>{let e=S.trim()||null;e!==(t.plain??null)&&Y({plain:e})}}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5 pr-8",children:[(0,r.jsx)("div",{className:"flex items-center gap-1",children:!z&&(0,r.jsxs)(es.l6,{value:String(t.priority),onValueChange:e=>Y({priority:Number(e)}),disabled:g,children:[(0,r.jsx)(es.bq,{className:(0,ek.cn)(eM,"!h-6 gap-1 rounded border-white/10 !px-1.5 !py-0 text-[10px] [&_svg]:size-3"),children:(0,r.jsx)(es.yv,{children:e=>eS.find(t=>String(t.v)===e)?.l??e})}),(0,r.jsx)(es.gC,{alignItemWithTrigger:!1,children:eS.map(e=>(0,r.jsx)(es.eb,{value:String(e.v),children:e.l},e.v))})]})}),(0,r.jsxs)("div",{className:"flex items-center gap-1",children:[!g&&(0,r.jsxs)("button",{type:"button",onClick:t=>{t.stopPropagation(),w?x(e):k(!0)},onBlur:()=>k(!1),title:"Delete node",className:(0,ek.cn)(eM,"flex items-center gap-1 rounded px-1.5 py-1 text-[10px] transition-colors",w?"bg-red-500/20 text-red-300":"text-muted-foreground hover:bg-white/5 hover:text-red-300"),children:[(0,r.jsx)(J.A,{className:"size-3"}),w&&"Delete?"]}),f&&(0,r.jsxs)("button",{type:"button",onClick:e=>{e.stopPropagation(),f(`${z?"component":"feature"}: ${t.title}`)},title:"Ask the agent a question about this (answered in its next round)",className:(0,ek.cn)(eM,"flex items-center gap-1 rounded px-1.5 py-1 text-[10px] text-sky-300/90 hover:bg-sky-500/15 hover:text-sky-300"),children:[(0,r.jsx)(q.A,{className:"size-3"})," Ask"]})]})]})]});if(z){let e=(0,ei.i3)(t.cluster);return(0,r.jsxs)("div",{className:(0,ek.cn)("group/nc relative rounded-lg border bg-card px-3 py-2.5 text-card-foreground shadow-sm transition","w-fit min-w-60 max-w-72",P?"border-dashed border-sky-400/50 bg-sky-500/[0.06]":"border-border",$&&"border-sky-400/60 shadow-[0_0_0_1px_rgba(56,160,255,0.25)]",n&&"ring-2 ring-[var(--accent,#f5b942)]",D&&"opacity-60",O&&"opacity-70 border-dashed"),children:[B,(0,r.jsxs)("div",{className:"flex items-start gap-2.5",children:[(0,r.jsx)("span",{className:"mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-lg",style:{background:`color-mix(in oklab, ${e} 18%, transparent)`,color:e},children:(0,a.createElement)(function(e){let t=(e??"").toUpperCase();for(let[e,n]of eR)if(e.test(t))return n;if(!t)return ez[0];let n=0;for(let e=0;e<t.length;e++)n=31*n+t.charCodeAt(e)>>>0;return ez[n%ez.length]}(t.cluster),{className:"size-4"})}),(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsxs)("div",{className:"flex items-start gap-1",children:[el,_]}),(0,r.jsxs)("div",{className:"mt-1 flex flex-wrap items-center gap-1.5",children:[ed,h&&(0,r.jsx)(eT,{layer:t.layer,onSave:e=>Y({layer:e}),readOnly:g})]})]}),(0,r.jsx)("div",{className:"shrink-0",children:ep})]}),t.role&&(0,r.jsx)("div",{className:"mt-2 line-clamp-1 text-[10.5px] leading-snug text-muted-foreground",children:t.role}),(0,r.jsxs)("div",{className:"mt-2.5 grid grid-cols-4 gap-1 border-t border-white/[0.07] pt-2",children:[(0,r.jsx)(eL,{value:t.fileCount??0,label:"files",Icon:Q.A}),(0,r.jsx)(eL,{value:t.importsIn??"—",label:"in",Icon:ee.A}),(0,r.jsx)(eL,{value:t.importsOut??"—",label:"out",Icon:et.A}),(0,r.jsx)(eL,{value:T,label:"bug",Icon:u.A,danger:T>0})]}),null!=t.importsIn&&(0,r.jsx)("div",{className:"mt-2",children:(0,r.jsx)(eY,{importsIn:t.importsIn})}),X,em]})}let ef=t.childCount??0,eh=t.childDone??0;return(0,r.jsxs)("div",{className:(0,ek.cn)("group/nc relative flex rounded-lg border bg-card text-card-foreground shadow-sm transition","w-fit max-w-96",v?"min-w-80":"min-w-64",P?"border-dashed border-sky-400/50 bg-sky-500/[0.06]":L?"border-dashed border-violet-400/60 bg-violet-500/[0.07] shadow-[0_0_0_1px_rgba(167,139,250,0.18)]":M,R&&!P&&"border-rose-400/50 bg-rose-500/[0.05]",$&&"border-sky-400/60 shadow-[0_0_0_1px_rgba(56,160,255,0.25)]",t.isNext&&"border-emerald-400/70 shadow-[0_0_0_2px_rgba(52,211,153,0.35)]",null!=t.workOrderRank&&t.workOrderRank>1&&"border-emerald-400/25",n&&"ring-2 ring-[var(--accent,#f5b942)]",D&&"opacity-60",O&&"opacity-70 border-dashed"),children:[B,X,(0,r.jsx)(eP,{priority:t.priority,rank:t.workOrderRank}),(0,r.jsxs)("div",{className:"min-w-0 flex-1 px-2.5 py-2.5",children:[(0,r.jsxs)("div",{className:"flex w-0 min-w-full items-start gap-1.5",children:[(0,r.jsxs)("div",{className:"flex min-w-0 flex-1 items-start gap-1",children:[$&&(0,r.jsx)("span",{title:"in progress",className:"mt-1.5 inline-block size-2 shrink-0 animate-pulse rounded-full bg-sky-400"}),t.isCriterion&&!$&&(0,r.jsx)("span",{title:"Success criterion",className:"mt-1.5 inline-block size-1.5 shrink-0 rounded-full bg-[var(--accent,#f5b942)]"}),el,_]}),(0,r.jsx)("div",{className:"shrink-0",children:ep})]}),(0,r.jsxs)("div",{className:"mt-1.5 flex w-0 min-w-full flex-wrap items-center gap-1.5",children:[(0,r.jsxs)("span",{title:R?"Bug — something to fix":t.isChild?"Sub-task of a feature":"Feature — top-level roadmap item",className:(0,ek.cn)("flex shrink-0 items-center gap-1 rounded px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide",R?"bg-rose-500/15 text-rose-300":t.isChild?"bg-zinc-500/15 text-zinc-300":"bg-sky-500/15 text-sky-300"),children:[R&&(0,r.jsx)(u.A,{className:"size-2.5"}),R?"bug":t.isChild?"sub-task":"feature"]}),h&&(0,r.jsx)(eT,{layer:t.layer,onSave:e=>Y({layer:e}),readOnly:g}),L&&(0,r.jsxs)("span",{className:(0,ek.cn)("flex items-center gap-1 rounded bg-violet-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-violet-300",F&&"opacity-50"),children:[(0,r.jsx)(en.A,{className:"size-2.5"})," IA",(0,r.jsx)("button",{type:"button",title:"Accept suggestion — turn it into your own feature",disabled:F,onClick:t=>{t.stopPropagation(),U(async()=>j(e))},className:(0,ek.cn)(eM,"-my-0.5 rounded p-0.5 hover:bg-emerald-500/20 hover:text-emerald-300"),children:(0,r.jsx)(er.A,{className:"size-2.5"})}),(0,r.jsx)("button",{type:"button",title:"Dismiss suggestion (deletes the card)",disabled:F,onClick:t=>{t.stopPropagation(),x(e)},className:(0,ek.cn)(eM,"-my-0.5 -ml-0.5 rounded p-0.5 hover:bg-red-500/20 hover:text-red-300"),children:(0,r.jsx)(ea.A,{className:"size-2.5"})})]}),ed]}),t.role&&(0,r.jsx)("div",{className:(0,ek.cn)("mt-1.5 w-0 min-w-full text-[10px] leading-snug text-muted-foreground",!v&&"line-clamp-1"),children:t.role}),ef>0&&(0,r.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,r.jsx)("span",{className:"h-[3px] flex-1 overflow-hidden rounded-full bg-white/[0.08]",title:`${eh}/${ef} sub-tasks done`,children:(0,r.jsx)("span",{className:"block h-full rounded-full bg-sky-400/75",style:{width:`${ef?eh/ef*100:0}%`}})}),(0,r.jsxs)("span",{className:"flex shrink-0 items-center gap-1 text-[10px] text-muted-foreground",children:[(0,r.jsx)(er.A,{className:"size-3"}),eh,"/",ef]})]}),ex,em]})]})});var eB=n(54698),e_=n(24692),eX=n(81499),eG=n(51128);let eK=(0,a.memo)(function({data:e}){let[t,n]=(0,a.useState)(!1),s=e.columns??[],o=t?s:s.slice(0,5),l=s.length-o.length,i=e.sample??[];return(0,r.jsxs)("div",{className:"w-[270px] rounded-xl border border-sky-400/25 bg-[#13161b]/95 text-card-foreground shadow-[0_18px_50px_-22px_rgba(0,0,0,0.9)] backdrop-blur",children:[(0,r.jsx)(b.x,{}),(0,r.jsxs)("div",{className:"flex items-center gap-1.5 rounded-t-[11px] border-b border-white/[0.06] bg-sky-400/[0.07] px-3 py-2",children:[(0,r.jsx)(k.A,{className:"size-3.5 shrink-0 text-sky-400/80"}),(0,r.jsx)("span",{className:"min-w-0 flex-1 truncate font-mono text-[13px] font-semibold tracking-tight",title:e.name,children:e.name}),e.domain&&(0,r.jsx)("span",{className:"shrink-0 text-[9px] uppercase tracking-[0.14em] text-sky-300/70",children:e.domain})]}),e.note&&(0,r.jsx)("div",{className:"border-b border-white/[0.05] px-3 py-1.5 text-[11px] leading-snug text-muted-foreground",children:e.note}),(0,r.jsx)("div",{className:"divide-y divide-white/[0.05]",children:o.map(e=>(0,r.jsxs)("div",{className:"px-3 py-[6px]",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 text-[12px]",children:[e.isPk?(0,r.jsx)(eX.A,{className:"size-3 shrink-0 text-amber-300/90"}):e.isFk?(0,r.jsx)(eG.A,{className:"size-3 shrink-0 text-sky-400/80"}):(0,r.jsx)("span",{className:"size-3 shrink-0"}),(0,r.jsx)("span",{className:(0,ek.cn)("shrink-0 whitespace-nowrap font-mono",e.isPk&&"text-amber-200/95"),children:e.name}),(0,r.jsx)("span",{title:e.fkTo?`→ ${e.fkTo}`:e.type,className:"ml-auto min-w-0 truncate font-mono text-[11px] text-muted-foreground/80",children:e.fkTo?(0,r.jsxs)(r.Fragment,{children:["→\xa0",e.fkTo]}):e.type})]}),e.note&&(0,r.jsx)("div",{className:"ml-5 mt-0.5 text-[10.5px] leading-snug text-muted-foreground/70 [overflow-wrap:anywhere]",children:e.note})]},e.name))}),(l>0||i.length>0)&&(0,r.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),n(e=>!e)},className:"nodrag nopan flex w-full items-center justify-center gap-1 rounded-b-[11px] border-t border-white/[0.06] px-3 py-1.5 text-[10px] text-muted-foreground transition-colors hover:bg-white/[0.04] hover:text-foreground",children:t?"Show less":l>0?`+${l} more column${1===l?"":"s"}`:"Show example row"}),t&&i.length>0&&(0,r.jsxs)("div",{className:"nowheel overflow-x-auto border-t border-white/[0.06] px-3 py-2",children:[(0,r.jsx)("div",{className:"mb-1 text-[9px] font-semibold uppercase tracking-[0.14em] text-muted-foreground/70",children:"example"}),(0,r.jsxs)("table",{className:"border-collapse font-mono text-[10px]",children:[(0,r.jsx)("thead",{children:(0,r.jsx)("tr",{className:"text-muted-foreground/60",children:s.map(e=>(0,r.jsx)("th",{className:"whitespace-nowrap px-1.5 pb-1 text-left font-medium",children:e.name},e.name))})}),(0,r.jsx)("tbody",{children:i.map((e,t)=>(0,r.jsx)("tr",{className:"text-foreground/85",children:s.map(t=>(0,r.jsx)("td",{className:"whitespace-nowrap px-1.5 py-0.5",children:e[t.name]??""},t.name))},t))})]})]})]})});var eZ=n(45437),eV=n(82099),eW=n(47409),eJ=n(4474),eq=n(66616),eQ=n(70521),e0=n(74350);function e1({className:e,type:t,...n}){return(0,r.jsx)("input",{type:t,"data-slot":"input",className:(0,ek.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e),...n})}function e5({className:e,...t}){return(0,r.jsx)("textarea",{"data-slot":"textarea",className:(0,ek.cn)("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),...t})}var e2=n(61388);function e3({className:e,...t}){return(0,r.jsx)(e2.b,{"data-slot":"label",className:(0,ek.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",e),...t})}let e4=(0,v.createServerReference)("403ba89a5944b0f5074fd5940d4af3a7defe42b4a8",v.callServer,void 0,v.findSourceMapURL,"createNodeAction"),e6=(0,v.createServerReference)("60f3d491ef71f5665b334a3a1f801c607dede43328",v.callServer,void 0,v.findSourceMapURL,"updateNodeAction");function e7({open:e,onOpenChange:t,mode:n,view:s,heading:o,nodeId:l,parentId:i,position:d,defaults:c,hasFrontend:u=!1}){let p=(0,g.useRouter)(),[x,m]=(0,a.useState)(c?.title??""),[f,h]=(0,a.useState)(c?.role??""),[b,y]=(0,a.useState)(c?.plain??""),[v,j]=(0,a.useState)(c?.cluster??""),[w,k]=(0,a.useState)(c?.status??("ARCHITECTURE"===s?"REBUILD":"PENDING")),[N,C]=(0,a.useState)(c?.kind==="BUG"?"BUG":"FEATURE"),[A,E]=(0,a.useState)((0,el.jR)(c?.layer)??"none"),[S,I]=(0,a.useState)(!1),R="ARCHITECTURE"===s?eo.m6:eo.yl;async function z(){if(x.trim()){I(!0);try{let e="none"===A?null:A;"create"===n?await e4({view:s,..."ROADMAP"===s?{kind:N}:{},title:x.trim(),role:f.trim()||null,plain:b.trim()||null,cluster:v.trim()||null,...u?{layer:e}:{},parentId:i??null,status:w,x:d?.x??60,y:d?.y??60}):l&&await e6(l,{..."ROADMAP"===s?{kind:N}:{},title:x.trim(),role:f.trim()||null,plain:b.trim()||null,cluster:v.trim()||null,...u?{layer:e}:{},status:w}),t(!1),p.refresh()}finally{I(!1)}}}return(0,r.jsx)(e0.lG,{open:e,onOpenChange:t,children:(0,r.jsxs)(e0.Cf,{children:[(0,r.jsx)(e0.c7,{children:(0,r.jsx)(e0.L3,{children:o})}),(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsxs)("div",{className:"space-y-1.5",children:[(0,r.jsx)(e3,{htmlFor:"nf-title",children:"Title"}),(0,r.jsx)(e1,{id:"nf-title",value:x,autoFocus:!0,onChange:e=>m(e.target.value)})]}),(0,r.jsxs)("div",{className:"space-y-1.5",children:[(0,r.jsx)(e3,{htmlFor:"nf-role",children:"Role (one line)"}),(0,r.jsx)(e1,{id:"nf-role",value:f,onChange:e=>h(e.target.value)})]}),(0,r.jsxs)("div",{className:"space-y-1.5",children:[(0,r.jsx)(e3,{htmlFor:"nf-plain",children:"Description"}),(0,r.jsx)(e5,{id:"nf-plain",rows:3,value:b,onChange:e=>y(e.target.value)})]}),"ROADMAP"===s&&(0,r.jsxs)("div",{className:"space-y-1.5",children:[(0,r.jsx)(e3,{children:"Kind"}),(0,r.jsxs)(es.l6,{value:N,onValueChange:e=>null!=e&&C(e),children:[(0,r.jsx)(es.bq,{children:(0,r.jsx)(es.yv,{children:e=>"BUG"===e?"Bug":"Feature"})}),(0,r.jsxs)(es.gC,{children:[(0,r.jsx)(es.eb,{value:"FEATURE",children:"Feature"}),(0,r.jsx)(es.eb,{value:"BUG",children:"Bug"})]})]})]}),u&&(0,r.jsxs)("div",{className:"space-y-1.5",children:[(0,r.jsx)(e3,{children:"Layer"}),(0,r.jsxs)(es.l6,{value:A,onValueChange:e=>null!=e&&E(e),children:[(0,r.jsx)(es.bq,{children:(0,r.jsx)(es.yv,{children:e=>"none"===e?"—":el.YG[e]?.label??e})}),(0,r.jsxs)(es.gC,{children:[(0,r.jsx)(es.eb,{value:"none",children:"—"}),Object.keys(el.YG).map(e=>(0,r.jsx)(es.eb,{value:e,children:el.YG[e].label},e))]})]})]}),(0,r.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,r.jsxs)("div",{className:"space-y-1.5",children:[(0,r.jsx)(e3,{children:"Status"}),(0,r.jsxs)(es.l6,{value:w,onValueChange:e=>null!=e&&k(e),children:[(0,r.jsx)(es.bq,{children:(0,r.jsx)(es.yv,{children:e=>eo.nR[e]?.label??e})}),(0,r.jsx)(es.gC,{children:R.map(e=>(0,r.jsx)(es.eb,{value:e,children:eo.nR[e]?.label??e},e))})]})]}),(0,r.jsxs)("div",{className:"space-y-1.5",children:[(0,r.jsx)(e3,{htmlFor:"nf-cluster",children:"Cluster / lane"}),(0,r.jsx)(e1,{id:"nf-cluster",value:v,onChange:e=>j(e.target.value)})]})]})]}),(0,r.jsxs)(e0.Es,{children:[(0,r.jsx)(eJ.$,{variant:"outline",onClick:()=>t(!1),children:"Cancel"}),(0,r.jsx)(eJ.$,{onClick:z,disabled:S||!x.trim(),children:S?"Saving…":"Save"})]})]})})}let e9=(0,v.createServerReference)("401a78226e916ef8c8ba7b66890e14bbc4e048c789",v.callServer,void 0,v.findSourceMapURL,"deleteNodeAction"),e8=(0,v.createServerReference)("602913d2976e7389ba22d484540567828ad1332222",v.callServer,void 0,v.findSourceMapURL,"setStatusAction"),te=(0,v.createServerReference)("40e8746a4edc3d191fbe56601b36a9b8359b313214",v.callServer,void 0,v.findSourceMapURL,"cancelAction"),tt=(0,v.createServerReference)("40dfad542184ae2a0a35d56f38af9519038be6e1c7",v.callServer,void 0,v.findSourceMapURL,"deprioritizeAction");function tn({view:e,selected:t,allNodes:n,onClose:a,commentsContent:s,commentsCount:o=0,activeTab:l,onTabChange:i,onAddComment:d,topOffset:c}){let u=!!s,p=l??"details";return(0,r.jsxs)(eV.b,{className:"absolute right-3 z-10 flex w-80 flex-col rounded-2xl",style:{top:c??12,maxHeight:`calc(100% - ${(c??12)+12}px)`},children:[u?(0,r.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-1 py-1",children:[(0,r.jsxs)("div",{className:"flex items-center gap-0.5",children:[(0,r.jsx)(eq.E,{active:"details"===p,onClick:()=>i?.("details"),children:"Details"}),(0,r.jsxs)(eq.E,{active:"comments"===p,onClick:()=>i?.("comments"),children:["Comments",o>0&&(0,r.jsx)("span",{className:"ml-1 rounded-full bg-white/10 px-1 text-[9px] font-semibold leading-4",children:o})]})]}),(0,r.jsx)("button",{onClick:a,title:"Close panel",className:"mr-1 rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,r.jsx)(ea.A,{className:"size-4"})})]}):(0,r.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-3.5 py-2.5",children:[(0,r.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:"Details"}),(0,r.jsx)("button",{onClick:a,title:"Close panel",className:"rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,r.jsx)(ea.A,{className:"size-4"})})]}),(0,r.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:(0,r.jsx)("div",{className:"p-3",children:"comments"===p&&u?s:t?(0,r.jsxs)(r.Fragment,{children:[d&&(0,r.jsxs)("button",{type:"button",onClick:()=>d(t.title),className:"mb-3 flex w-full items-center justify-center gap-1.5 rounded-lg border border-white/10 bg-white/[0.03] px-3 py-1.5 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:[(0,r.jsx)(K.A,{className:"size-3.5"}),"Comment on this ","ARCHITECTURE"===e?"component":"feature"]}),(0,r.jsx)(tr,{node:t,view:e},t.id)]}):(0,r.jsx)(ts,{view:e,nodes:n})})})]})}function tr({node:e,view:t}){let n=(0,g.useRouter)(),[s,o]=(0,a.useTransition)(),[l,i]=(0,a.useState)(!1),[d,c]=(0,a.useState)(!1),[u,p]=(0,a.useState)(e.plain??"");(0,a.useEffect)(()=>p(e.plain??""),[e.id,e.plain]);let{hasFrontend:x,openFocus:m}=ec(),f=(0,el.jR)(e.layer),h="ARCHITECTURE"===t?eo.m6:eo.yl,b=e=>o(async()=>{await e(),n.refresh()});return(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"text-xs uppercase tracking-wide text-muted-foreground",children:[(0,eo.Xf)(e.cluster),x&&f&&(0,r.jsxs)("span",{className:"ml-2 text-zinc-400",children:["\xb7 ",el.YG[f].label]}),0===e.priority&&(0,r.jsx)("span",{className:"ml-2 text-[#ff7a90]",children:"\xb7 critical path"})]}),(0,r.jsx)("h2",{className:"mt-1 text-lg font-semibold leading-tight",children:e.title})]}),"INIT"===e.source&&"ROADMAP"===t&&(0,r.jsxs)("div",{className:"rounded-lg border border-violet-400/30 bg-violet-500/[0.06] p-2.5",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5 text-xs font-semibold text-violet-300",children:[(0,r.jsx)(en.A,{className:"size-3.5"})," AI suggestion"]}),(0,r.jsx)("p",{className:"mt-1 text-[11px] leading-snug text-muted-foreground",children:"Suggested direction surfaced when mapping the repo. Accept to turn it into your own feature, or dismiss."}),(0,r.jsxs)("div",{className:"mt-2 flex gap-1.5",children:[(0,r.jsx)(eJ.$,{size:"sm",className:"h-7 px-2.5 text-xs",disabled:s,onClick:()=>b(()=>j(e.id)),children:"Accept"}),(0,r.jsx)(eJ.$,{size:"sm",variant:"outline",className:"h-7 px-2.5 text-xs text-muted-foreground",disabled:s,onClick:()=>b(()=>e9(e.id)),children:"Dismiss"})]})]}),(0,r.jsxs)("div",{className:"space-y-1.5",children:[(0,r.jsx)("span",{className:"text-xs text-muted-foreground",children:"Status"}),(0,r.jsxs)(es.l6,{value:e.status,onValueChange:t=>null!=t&&b(()=>e8(e.id,t)),children:[(0,r.jsx)(es.bq,{className:"h-8",disabled:s,children:(0,r.jsx)(es.yv,{children:e=>eo.nR[e]?.label??e})}),(0,r.jsx)(es.gC,{children:h.map(e=>(0,r.jsx)(es.eb,{value:e,children:eo.nR[e]?.label??e},e))})]})]}),(0,r.jsxs)("div",{className:"space-y-1.5",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-xs text-muted-foreground",children:"Description"}),(0,r.jsx)("button",{type:"button",title:"Edit in focus mode",onClick:()=>m({id:e.id,title:e.title,value:u,editable:!0,onCommit:t=>{p(t);let n=t.trim()||null;n!==(e.plain??null)&&b(()=>e6(e.id,{plain:n}))}}),className:"rounded p-0.5 text-muted-foreground transition-colors hover:bg-white/10 hover:text-[#ff7a45]",children:(0,r.jsx)(X.A,{className:"size-3.5"})})]}),(0,r.jsx)("div",{className:"rounded-md border border-white/5 bg-card/40 px-2.5 py-2 text-sm",children:(0,r.jsx)(eN,{value:u,onChange:p,onBlur:()=>{let t=u.trim()||null;t!==(e.plain??null)&&b(()=>e6(e.id,{plain:t}))}})})]}),e.sourceRef&&(0,r.jsx)("div",{className:"rounded-md border border-border bg-card px-2 py-1.5 font-mono text-xs text-muted-foreground",children:e.sourceRef}),e.files.length>0&&(0,r.jsxs)("div",{children:[(0,r.jsxs)("h3",{className:"mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:["Files (",e.files.length,")"]}),(0,r.jsx)(eW.h,{files:e.files.map(e=>({path:e}))})]}),"ARCHITECTURE"===t&&(0,r.jsx)(ta,{node:e}),(0,r.jsxs)("div",{className:"flex flex-wrap gap-1.5 pt-1",children:[(0,r.jsx)(eJ.$,{size:"sm",variant:"outline",onClick:()=>i(!0),children:"Edit"}),(0,r.jsx)(eJ.$,{size:"sm",variant:"outline",onClick:()=>c(!0),children:"+ Sub-node"}),(0,r.jsx)(eJ.$,{size:"sm",variant:"outline",disabled:s,onClick:()=>b(()=>te(e.id)),children:"Cancel"}),(0,r.jsx)(eJ.$,{size:"sm",variant:"outline",disabled:s,onClick:()=>b(()=>tt(e.id)),children:"Deprioritize"}),(0,r.jsxs)(eQ.Lt,{children:[(0,r.jsx)(eQ.tv,{render:(0,r.jsx)(eJ.$,{size:"sm",variant:"outline",className:"text-red-300",children:"Delete"})}),(0,r.jsxs)(eQ.EO,{children:[(0,r.jsxs)(eQ.wd,{children:[(0,r.jsxs)(eQ.r7,{children:["Delete “",e.title,"”?"]}),(0,r.jsx)(eQ.$v,{children:"This removes the node and all its sub-nodes. It can’t be undone."})]}),(0,r.jsxs)(eQ.ck,{children:[(0,r.jsx)(eQ.Zr,{children:"Cancel"}),(0,r.jsx)(eQ.Rx,{onClick:()=>b(()=>e9(e.id)),children:"Delete"})]})]})]})]}),l&&(0,r.jsx)(e7,{open:!0,onOpenChange:i,mode:"edit",view:t,heading:"Edit node",nodeId:e.id,hasFrontend:x,defaults:{title:e.title,role:e.role,plain:e.plain,status:e.status,cluster:e.cluster,kind:e.kind,layer:e.layer}}),d&&(0,r.jsx)(e7,{open:!0,onOpenChange:c,mode:"create",view:t,heading:"New sub-node",parentId:e.id,position:{x:e.x,y:e.y+120},hasFrontend:x,defaults:{cluster:e.cluster,layer:e.layer}})]})}function ta({node:e}){let t=(0,g.useRouter)(),[n,s]=(0,a.useState)(""),[o,l]=(0,a.useState)(!1),i=e.bugFlags.filter(e=>!e.resolved),d=e=>{l(!0),e().then(()=>t.refresh()).finally(()=>l(!1))},c=()=>{let t=n.trim();t&&d(async()=>{(await fetch("/api/bug-flags",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({nodeId:e.id,by:"user",note:t})})).ok&&s("")})};return(0,r.jsxs)("div",{children:[(0,r.jsxs)("h3",{className:"mb-1.5 flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:[(0,r.jsx)(u.A,{className:"size-3.5 text-rose-300"}),"Bug flags",i.length>0&&` (${i.length} open)`]}),e.bugFlags.length>0&&(0,r.jsx)("ul",{className:"space-y-1.5",children:e.bugFlags.map(e=>(0,r.jsxs)("li",{className:(0,ek.cn)("rounded-md border px-2 py-1.5",e.resolved?"border-white/5 bg-card/30 opacity-60":"border-rose-400/25 bg-rose-500/[0.05]"),children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsx)("span",{title:"agent"===e.by?"Flagged by an agent examining the code":"Flagged by you",className:(0,ek.cn)("rounded px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide","agent"===e.by?"bg-violet-500/15 text-violet-300":"bg-sky-500/15 text-sky-300"),children:"agent"===e.by?"agent":"you"}),(0,r.jsxs)("div",{className:"ml-auto flex items-center gap-1",children:[(0,r.jsx)("button",{type:"button",disabled:o,onClick:()=>d(()=>fetch(`/api/bug-flags/${e.id}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify({resolved:!e.resolved})})),className:"rounded px-1.5 py-0.5 text-[10px] text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:e.resolved?"Reopen":"Resolve"}),(0,r.jsx)("button",{type:"button",disabled:o,title:"Delete flag",onClick:()=>d(()=>fetch(`/api/bug-flags/${e.id}`,{method:"DELETE"})),className:"rounded p-0.5 text-muted-foreground transition-colors hover:bg-white/10 hover:text-red-300",children:(0,r.jsx)(ea.A,{className:"size-3"})})]})]}),(0,r.jsx)("p",{className:(0,ek.cn)("mt-1 text-[11.5px] leading-snug",e.resolved&&"line-through"),children:e.note})]},e.id))}),(0,r.jsxs)("div",{className:"mt-1.5 flex items-start gap-1.5",children:[(0,r.jsx)("textarea",{rows:1,value:n,placeholder:"Flag a bug or something worth investigating…",onChange:e=>s(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),c())},className:"field-sizing-content min-h-7 w-full resize-none rounded-md border border-white/10 bg-white/[0.03] px-2 py-1 text-[11.5px] outline-none placeholder:text-muted-foreground/60 focus:bg-white/[0.06]"}),(0,r.jsx)(eJ.$,{size:"sm",variant:"outline",className:"h-7 shrink-0 px-2 text-[11px]",disabled:o||!n.trim(),onClick:c,children:"Flag"})]})]})}function ts({view:e,nodes:t}){let n=t.filter(e=>0===e.priority).length;return(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h2",{className:"text-sm font-semibold",children:"ROADMAP"===e?"Roadmap":"Architecture"}),(0,r.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Click a node for details and actions. Drag to rearrange — positions are saved."})]}),(0,r.jsxs)("dl",{className:"grid grid-cols-2 gap-2 text-center",children:[(0,r.jsx)(to,{label:"nodes",value:t.length}),(0,r.jsx)(to,{label:"critical",value:n})]})]})}function to({label:e,value:t}){return(0,r.jsxs)("div",{className:"rounded-md border border-border bg-card py-2",children:[(0,r.jsx)("div",{className:"text-lg font-semibold",children:t}),(0,r.jsx)("div",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:e})]})}function tl({payload:e,onDismiss:t}){let[n,s]=(0,a.useState)(""),[o,l]=(0,a.useState)(null);if((e?.id??null)!==o&&(l(e?.id??null),s(e?.value??"")),(0,a.useEffect)(()=>{if(!e)return;let r=r=>{("Escape"===r.key||(r.metaKey||r.ctrlKey)&&"Enter"===r.key)&&(r.preventDefault(),e.onCommit(n),t())};return document.addEventListener("keydown",r,!0),()=>document.removeEventListener("keydown",r,!0)},[e,n,t]),!e)return null;let i=()=>{e.onCommit(n),t()};return(0,r.jsx)("div",{role:"dialog","aria-modal":"true","aria-label":`Edit description — ${e.title}`,onMouseDown:e=>{e.target===e.currentTarget&&i()},className:"fixed inset-0 z-[70] flex items-center justify-center bg-black/55 backdrop-blur-[5px] animate-in fade-in duration-150",children:(0,r.jsxs)(eV.b,{className:"flex max-h-[82vh] w-[min(720px,92vw)] flex-col rounded-2xl duration-150 animate-in fade-in zoom-in-95",onMouseDown:e=>e.stopPropagation(),children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 border-b border-white/10 px-4 py-3",children:[(0,r.jsx)("span",{className:"text-[10px] font-semibold uppercase tracking-wider text-muted-foreground",children:"Description"}),(0,r.jsx)("span",{className:"min-w-0 flex-1 truncate text-sm font-semibold",children:e.title}),(0,r.jsxs)("span",{className:"shrink-0 font-mono text-[11px] text-muted-foreground",children:[n.length," chars"]}),(0,r.jsx)("button",{type:"button",onClick:i,title:"Close (Esc)",className:"shrink-0 rounded-lg p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,r.jsx)(ea.A,{className:"size-4"})})]}),(0,r.jsx)("div",{className:"min-h-[40vh] flex-1 overflow-y-auto px-6 py-5 text-[15px] leading-relaxed",children:(0,r.jsx)(eN,{bare:!0,autoFocus:e.editable,editable:e.editable,value:n,onChange:s})}),(0,r.jsxs)("div",{className:"flex items-center gap-3 border-t border-white/10 px-4 py-2.5 text-[11.5px] text-muted-foreground",children:[(0,r.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,r.jsx)("span",{className:"size-1.5 rounded-full bg-emerald-400"})," Autosaves"]}),(0,r.jsx)("span",{className:"opacity-70",children:"\xb7 Esc to close"}),e.editable&&(0,r.jsxs)("button",{type:"button",onClick:i,className:"ml-auto flex items-center gap-1.5 rounded-lg bg-[#ff7a45] px-3 py-1.5 text-xs font-semibold text-black transition hover:brightness-110",children:[(0,r.jsx)(er.A,{className:"size-3.5"}),"Save & close"]})]})]})})}var ti=n(80277),td=n(18874),tc=n(62311),tu=n(9991),tp=n(40654),tx=n(14983),tm=n(91157),tf=n(56895),th=n(16607),tg=n(56614),tb=n(98238),ty=n(36849),tv=n(29813),tj=n(44267);function tw(e,t){let n={x:t.x,y:t.y};for(let t=0;t<100&&e.some(e=>200>Math.abs(n.x-e.x)&&150>Math.abs(n.y-e.y));t++)n.y+=150;return n}var tk=n(70947);let tN=[{value:"cluster",label:"Theme"},{value:"status",label:"Status"},{value:"priority",label:"Priority"}],tC=new Set(["title","role","plain","cluster","layer","status","priority"]),tA={roadmapNode:eH,archNode:eH,annotation:y.Sh,lessonTable:eK},tE={deletable:e_.I,annotation:eZ.L},tS={CONTAINS:{stroke:"#7c7c8a"},DEPENDS:{stroke:"#f5b942",dash:"6 4"},RELATES:{stroke:"#8a8a95",dash:"4 4"},REPLACES:{stroke:"#ff6b9d"}};function tI({view:e,nodes:t,edges:n,workOrder:g=[],embedded:b=!1,commentsContent:v,commentsCount:j=0,controlRef:w,onAskAgent:k,onAddComment:N,annotations:C,onPinClick:A,onUpdateComment:E,onRemoveComment:S,boardAnnotations:I,initialArrangedBy:R=null,initialCollapsed:z=[],hasFrontend:M=!1,readOnly:T=!1,firstTapHighlightsOnly:D=!1,minimap:O,staticEdgeLabels:P=!1,tableNodes:$}){let L=g.join(","),Y=(0,a.useMemo)(()=>{let e=new Map;return g.forEach((t,n)=>e.set(t,n+1)),e},[L]),F=g[0]??null,U=(0,a.useMemo)(()=>t.map(e=>({id:e.id,type:"ROADMAP"===e.view?"roadmapNode":"archNode",position:{x:e.x,y:e.y},data:{title:e.title,role:e.role,plain:e.plain,status:e.status,priority:e.priority,cluster:e.cluster,layer:e.layer,view:e.view,kind:e.kind,source:e.source,sourceRef:e.sourceRef,isCriterion:e.isCriterion,isChild:null!=e.parentId,parentId:e.parentId,signals:e.signals,fileCount:e.files.length,importsIn:e.importsIn,importsOut:e.importsOut,openBugs:e.bugFlags.filter(e=>!e.resolved).length}})),[t]),H=(0,a.useMemo)(()=>{var e;let r;return e=new Set(($??[]).map(e=>e.id)),r=new Set([...t.map(e=>e.id),...e??[]]),[...t.filter(e=>e.parentId&&r.has(e.parentId)).map(e=>({id:`c-${e.id}`,source:e.parentId,sourceHandle:"sb",target:e.id,targetHandle:"tt",type:"smoothstep",style:{stroke:tS.CONTAINS.stroke}})),...n.filter(e=>r.has(e.fromId)&&r.has(e.toId)).map(e=>{let t=tS[e.kind]??tS.RELATES,n="DEPENDS"===e.kind?"depends on":void 0;return{id:e.id,source:e.fromId,sourceHandle:e.sourceHandle??void 0,target:e.toId,targetHandle:e.targetHandle??void 0,label:e.label??n,type:"deletable",markerEnd:{type:o.TG.ArrowClosed,color:t.stroke},style:{stroke:t.stroke,strokeDasharray:t.dash}}})]},[t,n,$]),[B,_]=(0,a.useState)(U),[X,G]=(0,a.useState)(H),[K,Z]=(0,a.useState)(null),[V,W]=(0,a.useState)(null),[J,q]=(0,a.useState)(null),[Q,ee]=(0,a.useState)(!1),[et,en]=(0,a.useState)("details"),{tool:er,setTool:ea,flowProps:es,paneClass:ei}=(0,ti.e)(),[ec,ep]=(0,a.useState)(null),[ex,em]=(0,a.useState)(null),[ef,eh]=(0,a.useState)(!1),eg=(0,a.useRef)(!1),eb=(0,a.useRef)("details");(0,a.useEffect)(()=>{eg.current=Q},[Q]),(0,a.useEffect)(()=>{eb.current=et},[et]),(0,a.useEffect)(()=>{if(w)return w.current={open:()=>{if(eg.current){ee(!1),en("details");return}ee(!0),en("details")},close:()=>{ee(!1),en("details")},openComments:()=>{ee(!0),en("comments")}},()=>{w&&(w.current=null)}},[w]);let[ey,ev]=(0,a.useState)(new Set),[ej,ew]=(0,a.useState)(null),[eN,eC]=(0,a.useState)(!1),eA=(0,a.useRef)(null);(0,a.useEffect)(()=>_(U),[U]),(0,a.useEffect)(()=>G(H),[H]),(0,a.useEffect)(()=>{if(!T)return;let e=0,t=requestAnimationFrame(()=>{e=requestAnimationFrame(()=>eA.current?.fitView({padding:.2,duration:0,minZoom:.38,maxZoom:.9}))});return()=>{cancelAnimationFrame(t),cancelAnimationFrame(e)}},[T,U]);let eE=(0,a.useCallback)((e,t,n)=>{_(n=>n.map(n=>n.id===e?{...n,data:{...n.data,...t}}:n)),n&&fetch(`/api/nodes/${e}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify(Object.fromEntries(Object.entries(t).filter(([e])=>tC.has(e))))})},[]),eS=(0,a.useMemo)(()=>JSON.stringify(Array.from(new Set(B.map(e=>e.data.cluster).filter(e=>!!e))).sort()),[B]),eI=(0,a.useMemo)(()=>JSON.parse(eS),[eS]),eR=(0,a.useCallback)(e=>ev(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),[]),ez=(0,a.useCallback)(e=>{Z(e),ee(!0),en("details")},[]),eM=(0,a.useCallback)(e=>{_(t=>t.filter(t=>t.id!==e)),Z(t=>t===e?null:t),fetch(`/api/nodes/${e}`,{method:"DELETE"})},[]),eT=(0,a.useCallback)(async(t,n,r="FEATURE")=>{let a=(0,s.sX)(),o="ARCHITECTURE"===e?"REBUILD":"PENDING",l="BUG"===r?"New bug":"New node";_(s=>[...s,{id:a,type:"ROADMAP"===e?"roadmapNode":"archNode",position:{x:t,y:n},data:{title:l,role:null,plain:null,status:o,priority:2,cluster:null,view:e,kind:r,source:"MANUAL",sourceRef:null,isCriterion:!1,isChild:!1,parentId:null,openBugs:0}}]),ev(e=>new Set(e).add(a)),ew(a),Z(a);try{if(!(await fetch("/api/nodes",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({id:a,view:e,kind:r,title:l,status:o,x:t,y:n})})).ok)throw Error("create failed")}catch{_(e=>e.filter(e=>e.id!==a)),ev(e=>{let t=new Set(e);return t.delete(a),t}),ew(e=>e===a?null:e),Z(e=>e===a?null:e)}},[e]),eD=(0,a.useCallback)((e,t)=>{if(!ec||!eA.current)return;let n=eA.current.screenToFlowPosition({x:e,y:t});eT(n.x,n.y,ec),ep(null),em(null)},[ec,eT]);(0,a.useEffect)(()=>{if(!ec&&!eN)return;let e=e=>em({x:e.clientX,y:e.clientY}),t=e=>{"Escape"===e.key&&(ep(null),eC(!1),em(null))};return window.addEventListener("mousemove",e),window.addEventListener("keydown",t),()=>{window.removeEventListener("mousemove",e),window.removeEventListener("keydown",t)}},[ec,eN]),(0,a.useCallback)(()=>{let e=B.filter(e=>"annotation"!==e.type);return function(e,t,n={}){let r=n.colW??320,a=n.rowH??150,s=n.maxCols??4,o=n.bandGap??90;if(0===e.length){if(0===t.length)return{x:0,y:0};let e=Math.max(...t.map(e=>e.y));return tw(t,{x:0,y:e+a+o})}let l=Math.min(...e.map(e=>e.x)),i=Math.min(...e.map(e=>e.y)),d=e.map(e=>Math.max(0,Math.round((e.x-l)/r))),c=Math.min(s,Math.max(Math.max(...d)+1,Math.ceil(Math.sqrt(e.length+1)))),u=Array(c).fill(i-a);e.forEach((e,t)=>{let n=Math.min(d[t],c-1);u[n]=Math.max(u[n],e.y)});let p=0;for(let e=1;e<c;e++)u[e]<u[p]&&(p=e);return tw(t,{x:l+p*r,y:u[p]+a})}(e.filter(e=>!e.data.parentId&&!(e.data.cluster??"").trim()).map(e=>e.position),e.map(e=>e.position))},[B]);let eO=(0,a.useCallback)(()=>{eC(!1),ep("FEATURE")},[]),eP=(0,a.useCallback)(()=>{eC(!1),ep("BUG")},[]),[e$,eL]=(0,a.useState)(null),eY=(0,a.useCallback)(e=>eL(e),[]),eF=(0,a.useMemo)(()=>({view:e,readOnly:T,categories:eI,statuses:"ARCHITECTURE"===e?eo.m6:eo.yl,patch:eE,isExpanded:e=>ey.has(e),toggleExpand:eR,openDetailed:ez,openFocus:eY,removeNode:eM,editingTitleId:ej,onAskAgent:k,hasFrontend:M}),[e,T,eI,eE,ey,eR,ez,eY,eM,ej,k,M]),[eU,eH]=(0,a.useState)(R),[e_,eX]=(0,a.useState)(""),[eG,eK]=(0,a.useState)("full"),[eZ,eV]=(0,a.useState)(new Set),[eW,eJ]=(0,a.useState)(new Set),[eq,eQ]=(0,a.useState)(new Set),[e0,e1]=(0,a.useState)(null),e5=(0,a.useMemo)(()=>Array.from(new Set(t.map(e=>e.status))),[t]),e2=(0,a.useMemo)(()=>Array.from(new Set(t.map(e=>e.cluster).filter(e=>!!e))).sort(),[t]),e3=(0,a.useMemo)(()=>Array.from(new Set(t.map(e=>e.priority))).sort((e,t)=>e-t),[t]),e4=(0,a.useCallback)(e=>(!eZ.size||!!eZ.has(e.status))&&(!eW.size||!!e.cluster&&!!eW.has(e.cluster))&&(!eq.size||!!eq.has(e.priority)),[eZ,eW,eq]),e6=eZ.size+eW.size+eq.size+ +!!e0,e7=(0,a.useCallback)(()=>{eV(new Set),eJ(new Set),eQ(new Set),e1(null)},[]),[e9,e8]=(0,a.useState)(()=>new Set(z)),te=(0,a.useCallback)(t=>{e8(n=>{let r=new Set(n);return r.has(t)?r.delete(t):r.add(t),b||fetch("/api/board-layout",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({board:"ROADMAP"===e?"roadmap":"architecture",collapsed:[...r]})}).catch(()=>{}),r})},[b,e]),tt=(0,a.useMemo)(()=>(function(e){let t=new Map;for(let n of e)n.parentId&&t.set(n.parentId,(t.get(n.parentId)??0)+1);return t})(t),[t]),tr=(0,a.useMemo)(()=>{let e=new Map;for(let n of t)n.parentId&&"DONE"===n.status&&e.set(n.parentId,(e.get(n.parentId)??0)+1);return e},[t]),ta=(0,a.useMemo)(()=>(function(e,t){let n=new Set;if(0===t.size)return n;let r=new Map;for(let t of e){if(!t.parentId)continue;let e=r.get(t.parentId);e?e.push(t.id):r.set(t.parentId,[t.id])}let a=[...t];for(;a.length;){let e=a.pop();for(let t of r.get(e)??[])n.has(t)||(n.add(t),a.push(t))}return n})(t,e9),[t,e9]),ts=(0,a.useMemo)(()=>B.map(e=>({...e,hidden:!e4(e.data)||ta.has(e.id)})),[B,e4,ta]),to=(0,a.useMemo)(()=>new Set(ts.filter(e=>e.hidden).map(e=>e.id)),[ts]),tR=(0,a.useMemo)(()=>X.map(e=>({...e,hidden:to.has(e.source)||to.has(e.target)})),[X,to]),tz=(0,a.useMemo)(()=>{if(V){let e=tR.find(e=>e.id===V);return e?new Set([e.source,e.target]):null}return K?(0,td.F1)(K,tR.filter(e=>!e.hidden)):null},[K,V,tR]),tM=e_.trim().length>0,tT=(0,a.useMemo)(()=>{if(!tM)return null;let e=new Set;for(let t of B)e4(t.data)&&(0,tx.Qk)((0,tx.$$)(t.data),e_)&&e.add(t.id);return e},[B,e_,e4,tM]),tD=(0,a.useMemo)(()=>"ARCHITECTURE"===e?(0,tm.d)(t):[],[e,t]),tO=(0,a.useCallback)(e=>{eA.current&&(e.focusIds.length?eA.current.fitView({nodes:e.focusIds.map(e=>({id:e})),duration:700,padding:.3,maxZoom:1.1}):eA.current.fitView({duration:700,padding:.2}))},[]),tP=(0,tf.W)(tD,tO),t$=tP.focusIds,tL=t$??tT??tz,tY=tT??t$??tz,tF=(0,a.useMemo)(()=>e0?new Set(ts.filter(e=>!e.hidden&&!(0,tb.F)(e0,(0,el.jR)(e.data.layer))).map(e=>e.id)):null,[e0,ts]),tU=(0,a.useMemo)(()=>ts.map(e=>{let t=Y.get(e.id),n=tt.get(e.id)??0,r={...t?{workOrderRank:t,isNext:1===t}:{},...n>0?{childCount:n,childDone:tr.get(e.id)??0,collapsed:e9.has(e.id),onToggleCollapse:te}:{}},a=t||n>0?{...e,data:{...e.data,...r}}:e;if(ey.has(e.id)&&(a={...a,zIndex:25}),a.hidden)return a;if(!tL)return tF?.has(e.id)?{...a,style:{...a.style,opacity:.3,filter:"saturate(0.3)",transition:"opacity 120ms, filter 120ms"}}:a;let s=tL.has(e.id),o=tY?tx.Uy:.45;return{...a,zIndex:s&&tY?24:a.zIndex,style:{...a.style,opacity:s?1:o,boxShadow:s&&tY?tx.RU:a.style?.boxShadow,borderRadius:s&&tY?14:a.style?.borderRadius,transition:"opacity 120ms, box-shadow 120ms"}}}),[ts,tL,tY,Y,ey,tF,tt,tr,e9,te]),tH=(0,a.useMemo)(()=>{if("ROADMAP"===e&&!eU||"ROADMAP"!==e&&"ARCHITECTURE"!==e)return[];let t=new Map(tU.map(e=>[e.id,e])),n=[];for(let a of tU){var r;if(a.hidden||"annotation"===a.type)continue;let s=(a.data.parentId?t.get(a.data.parentId):void 0)??a,o="ROADMAP"===e&&eU?(r=s.data,"status"===eU?eo.nR[r.status]?.label??r.status:"priority"===eU?`P${r.priority}`:r.cluster?.trim()||"—"):s.data.cluster?.trim()||"—";n.push({id:a.id,group:o,x:a.position.x,y:a.position.y,w:a.measured?.width??(a.data.isChild?224:256),h:a.measured?.height??96})}return(0,tj.S)(n)},[tU,eU,e]),tB="ARCHITECTURE"===e||"cluster"===eU?"category":"neutral",t_=(0,a.useMemo)(()=>{if(t$)return tR.map(e=>e.hidden?e:t$.has(e.source)&&t$.has(e.target)?{...e,style:{...e.style,opacity:1}}:{...e,label:void 0,style:{...e.style,opacity:.06}});if(tT)return tR.map(e=>e.hidden?e:tT.has(e.source)&&tT.has(e.target)?{...e,style:{...e.style,opacity:1}}:{...e,label:void 0,style:{...e.style,opacity:.06}});let e=K??J;return V||e?tR.map(t=>t.hidden?t:(V?t.id===V:t.source===e||t.target===e)?{...t,zIndex:20,style:{...t.style,opacity:1,strokeWidth:2.5}}:{...t,selectable:!1,label:void 0,markerEnd:void 0,style:{...t.style,opacity:.06}}):tR.map(e=>{if(e.hidden)return e;let t=tF&&(tF.has(e.source)||tF.has(e.target));return P?{...e,style:{...e.style,opacity:t?.25:1}}:{...e,label:void 0,style:{...e.style,opacity:t?.06:.18}}})},[tR,K,V,J,tT,tF,t$,P]),tX=void 0!==I,[tG,tK]=(0,a.useState)(I??[]);(0,a.useEffect)(()=>{I&&tK(I)},[I]);let tZ=(0,a.useMemo)(()=>{if(tX){let e=new Set(t.map(e=>e.id));return tG.filter(t=>"feature"===t.targetKind&&e.has(t.targetId)).map((e,t)=>({id:e.id,n:t+1,targetId:e.targetId,text:e.body,x:e.x,y:e.y}))}let e=new Map((C??[]).map(e=>[e.id,e.comment]));return(0,eB.m)(C??[],{tables:[],features:t.map(e=>({id:e.id,title:e.title}))}).map(t=>({id:t.annotationId,n:t.n,targetId:t.targetId,text:e.get(t.annotationId)??"",x:null,y:null}))},[tX,tG,C,t]),tV=(0,a.useMemo)(()=>{let e=new Map;for(let t of tZ){let n=e.get(t.targetId)??[];n.push({id:t.id,n:t.n,column:null}),e.set(t.targetId,n)}return e},[tZ]),tW=(0,a.useCallback)(async e=>{let n=(0,eB.m)([{id:"_",excerpt:e}],{tables:[],features:t.map(e=>({id:e.id,title:e.title}))})[0];if(!n)return;let r=await fetch("/api/board-annotations",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({targetKind:"feature",targetId:n.targetId})});if(r.ok){let e=await r.json();tK(t=>[...t,e])}},[t]),tJ=(0,a.useCallback)((e,t)=>{tK(n=>n.map(n=>n.id===e?{...n,...t}:n)),fetch(`/api/board-annotations/${e}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify(t)})},[]),tq=(0,a.useCallback)(e=>{tK(t=>t.filter(t=>t.id!==e)),fetch(`/api/board-annotations/${e}`,{method:"DELETE"})},[]),tQ=tX?tW:N,[t0,t1]=(0,a.useState)(()=>new Map),[t5,t2]=(0,a.useState)(()=>new Map),t3=(0,a.useMemo)(()=>new Set(($??[]).map(e=>e.id)),[$]),t4=(0,a.useMemo)(()=>{let e=new Map(tU.map(e=>[e.id,e])),t=new Map,n=tZ.flatMap(n=>{let r=e.get(n.targetId);if(!r||r.hidden)return[];let a=t.get(n.targetId)??0;t.set(n.targetId,a+1);let s=r.measured?.height??96;return[{id:`anno-${n.id}`,type:"annotation",position:{x:n.x??r.position.x+26,y:n.y??r.position.y+s+56+112*a},measured:t0.get(`anno-${n.id}`),draggable:tX,data:{n:n.n,text:n.text,annotationId:n.id,onClick:tX||E?void 0:A,editable:tX||!!E,onChangeText:tX?(e,t)=>tJ(e,{body:t}):E,onDelete:tX?tq:S}}]});return[...tU.map(e=>{let t=tV.get(e.id);return t||tQ?{...e,data:{...e.data,pins:t,onPinClick:tX?void 0:A,onComment:tQ}}:e}),...n,...($??[]).map(e=>({id:e.id,type:"lessonTable",position:{x:e.x,y:e.y},measured:t5.get(e.id),draggable:!T,data:e.data}))]},[tU,tZ,tV,tX,A,E,S,tQ,tJ,tq,t0,$,t5,T]),t6=(0,a.useMemo)(()=>tZ.map(e=>({id:`annoe-${e.id}`,source:e.targetId,sourceHandle:`pin-${e.id}`,target:`anno-${e.id}`,targetHandle:"in",type:"annotation",selectable:!1,zIndex:30,style:{stroke:y.V5,strokeWidth:1.5,opacity:.9}})),[tZ]),t7=(0,a.useCallback)(e=>{let t=[];for(let n of e)if("position"===n.type&&n.id.startsWith("anno-")&&n.position){let e=n.id.slice(5),{x:t,y:r}=n.position;tK(n=>n.map(n=>n.id===e?{...n,x:t,y:r}:n))}else if("dimensions"===n.type&&n.id.startsWith("anno-")){let e=n.dimensions;e&&t1(t=>{let r=t.get(n.id);if(r&&r.width===e.width&&r.height===e.height)return t;let a=new Map(t);return a.set(n.id,e),a})}else if("dimensions"===n.type&&t3.has(n.id)){let e=n.dimensions;e&&t2(t=>{let r=t.get(n.id);if(r&&r.width===e.width&&r.height===e.height)return t;let a=new Map(t);return a.set(n.id,e),a})}else t.push(n);t.length&&_(e=>(0,l._0)(t,e))},[t3]),t9=(0,a.useCallback)(e=>G(t=>(0,l.zW)(e,t)),[]),t8=(0,a.useCallback)(async e=>{if(!e.source||!e.target||e.source===e.target)return;let t=await fetch("/api/edges",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({fromId:e.source,toId:e.target,kind:"DEPENDS",sourceHandle:e.sourceHandle??null,targetHandle:e.targetHandle??null})});if(!t.ok)return;let n=await t.json(),r=tS.DEPENDS;G(t=>t.some(e=>e.id===n.id)?t:[...t,{id:n.id,source:n.fromId,sourceHandle:e.sourceHandle??void 0,target:n.toId,targetHandle:e.targetHandle??void 0,label:"depends on",type:"deletable",markerEnd:{type:o.TG.ArrowClosed,color:r.stroke},style:{stroke:r.stroke,strokeDasharray:r.dash}}])},[]),ne=(0,a.useCallback)(async(t,n,r)=>{let a=await fetch("/api/nodes",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({view:e,title:"New node",parentId:t.id,cluster:t.data.cluster??null,status:"ARCHITECTURE"===e?"REBUILD":"PENDING",x:n,y:r})});if(!a.ok)return;let s=await a.json();_(a=>[...a,{id:s.id,type:"ROADMAP"===e?"roadmapNode":"archNode",position:{x:n,y:r},data:{title:s.title,role:s.role,plain:s.plain,status:s.status,priority:s.priority,cluster:s.cluster,view:s.view,source:s.source,sourceRef:s.sourceRef,kind:s.kind,isCriterion:!1,isChild:!0,parentId:t.id,openBugs:0}}]),G(e=>[...e,{id:`c-${s.id}`,source:t.id,sourceHandle:"sb",target:s.id,targetHandle:"tt",type:"smoothstep",style:{stroke:tS.CONTAINS.stroke}}]),ev(e=>new Set(e).add(s.id)),ew(s.id),Z(s.id)},[e]),nt=(0,a.useCallback)(async(e,t)=>{if(t.isValid||!t.fromNode||!eA.current)return;let n=e.changedTouches,r=n?.[0]?.clientX??e.clientX,a=n?.[0]?.clientY??e.clientY,{x:s,y:o}=eA.current.screenToFlowPosition({x:r,y:a});await ne(t.fromNode,s,o)},[ne]);(0,a.useEffect)(()=>{if(!eN)return;let e=e=>{"Escape"===e.key&&eC(!1)};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[eN]);let nn=(0,a.useMemo)(()=>t.find(e=>e.id===K)??null,[t,K]),nr=(0,a.useCallback)((e,t,n)=>{fetch(`/api/nodes/${e}/position`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({x:t,y:n})})},[]),na=(0,a.useCallback)(e=>{Z(e),W(null);let t=eA.current?.getNode(e);if(!t||!eA.current)return;let n=t.measured?.width??128,r=t.measured?.height??48;eA.current.setCenter(t.position.x+n/2,t.position.y+r/2,{zoom:1.2,duration:600})},[]),ns=(0,a.useCallback)(e=>{let t=(0,ty.VI)(B.map(e=>({id:e.id,parentId:e.data.parentId??null,cluster:e.data.cluster,status:e.data.status,priority:e.data.priority,title:e.data.title,role:e.data.role})),e,{viewportAspect:window.innerWidth/window.innerHeight});_(e=>e.map(e=>{let n=t.get(e.id);return n?{...e,position:n}:e}));let n=Array.from(t,([e,t])=>({id:e,x:t.x,y:t.y}));n.length&&fetch("/api/nodes/positions",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({batch:n})}),eH(e),fetch("/api/board-layout",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({board:"roadmap",arrangedBy:e})}),requestAnimationFrame(()=>eA.current?.fitView({duration:600,padding:.2}))},[B]),no=(0,a.useMemo)(()=>{let t=new Map;if("ROADMAP"!==e||!eU)return t;let n=e=>"status"===eU?e.status:"priority"===eU?`P${e.priority}`:e.cluster??"—";for(let e of B)"annotation"!==e.type&&t.set(e.id,n(e.data));return t},[B,eU,e]),nl=(0,a.useRef)(null);(0,a.useEffect)(()=>{let t=nl.current;if(nl.current=no,!t||"ROADMAP"!==e||!eU)return;let n=!1;for(let[e,r]of no)if(t.has(e)&&t.get(e)!==r){n=!0;break}n&&ns(eU)},[no,eU,e,ns]);let ni=(0,a.useCallback)(()=>{let e=B.filter(e=>"annotation"!==e.type),t=(0,tv.to)(e.map(e=>({id:e.id,group:(e.data.cluster??"").trim()||"—"})),n.filter(e=>"DEPENDS"===e.kind).map(e=>({fromId:e.fromId,toId:e.toId})),{viewportAspect:window.innerWidth/window.innerHeight});_(e=>e.map(e=>{let n=t.get(e.id);return n?{...e,position:n}:e}));let r=Array.from(t,([e,t])=>({id:e,x:t.x,y:t.y}));r.length&&fetch("/api/nodes/positions",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({batch:r})}),requestAnimationFrame(()=>eA.current?.fitView({duration:600,padding:.2}))},[B,n]),nd=(0,a.useMemo)(()=>tM?(0,tx.r2)(B.filter(e=>e4(e.data)),e_,e=>(0,tx.$$)(e.data),e=>({id:e.id,label:e.data.title,sublabel:e.data.cluster??e.data.status,kind:"feature"})):[],[B,e_,e4,tM]);function nc(e,t){t(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}return(0,r.jsx)(ed.Provider,{value:eF,children:(0,r.jsxs)("div",{className:(0,ek.cn)("canvas-dots relative w-full",b?"h-full":"h-screen",ef&&"rf-panning"),onDragOver:e=>{e.dataTransfer.types.includes("application/beacon-node")&&(e.preventDefault(),e.dataTransfer.dropEffect="copy")},onDrop:e=>{if(!e.dataTransfer.getData("application/beacon-node")||!eA.current)return;e.preventDefault();let{x:t,y:n}=eA.current.screenToFlowPosition({x:e.clientX,y:e.clientY});eT(t,n,"BUG"===e.dataTransfer.getData("application/beacon-node-kind")?"BUG":"FEATURE")},children:[(0,r.jsxs)(l.Gc,{...es,className:(0,ek.cn)(ei,(ec||eN)&&"rf-placing"),nodes:t4,edges:"far"===eG?[...t_,...t6].map(e=>({...e,hidden:!0})):[...t_,...t6],nodeTypes:tA,edgeTypes:tE,nodesConnectable:!T,connectionMode:o.WZ.Loose,connectionLineStyle:{stroke:"var(--accent-2,#ff7a45)",strokeWidth:1.5,strokeDasharray:"4 4"},onInit:e=>{eA.current=e},onNodesChange:t7,onEdgesChange:t9,onMoveStart:()=>eh(!0),onMoveEnd:()=>eh(!1),onConnect:t8,onConnectEnd:nt,onNodeMouseEnter:(e,t)=>q(t.id),onNodeMouseLeave:()=>q(null),onEdgesDelete:e=>{for(let t of e)t.id.startsWith("c-")||fetch(`/api/edges/${t.id}`,{method:"DELETE"})},onNodesDelete:e=>{for(let t of e)t.id.startsWith("anno-")||(fetch(`/api/nodes/${t.id}`,{method:"DELETE"}),Z(e=>e===t.id?null:e))},onNodeClick:(e,t)=>{if(ec)return void eD(e.clientX,e.clientY);if("lessonTable"===t.type)return;if("annotation"===t.type){let e=t.data;e.editable||A?.(e.annotationId);return}if(eN){if(eC(!1),t.data.isChild)return;ne(t,t.position.x+300,t.position.y+60);return}let n=K===t.id;if(Z(t.id),W(null),en("details"),b){let t=e.target,r=t?.closest("input, textarea, select, button, [role='combobox']"),a=D&&!n&&!eg.current;r||a||ee(!0)}},onEdgeClick:(e,t)=>{W(t.id),Z(null),en("details")},onPaneClick:e=>{ec?eD(e.clientX,e.clientY):eN?eC(!1):(ee(!1),Z(null),W(null))},onNodeDragStop:(e,t)=>{if(t.id.startsWith("anno-")){tX&&tJ(t.id.slice(5),{x:t.position.x,y:t.position.y});return}T||nr(t.id,t.position.x,t.position.y)},deleteKeyCode:T?null:["Backspace","Delete"],colorMode:"dark",fitView:!0,fitViewOptions:{padding:.15,minZoom:.38,maxZoom:.9},minZoom:.2,panOnScroll:!0,zoomActivationKeyCode:["Meta","Control"],proOptions:{hideAttribution:!0},children:[(0,r.jsx)(tk.Z,{regions:tH,tone:tB,lod:eG}),(0,r.jsx)(eu.J,{onLod:eK}),(0,r.jsx)(l.H2,{position:"bottom-right",className:"!overflow-hidden !rounded-xl !border !border-white/10 [&_button]:!border-white/10 [&_button]:!bg-card/70 [&_button]:!text-foreground [&_button]:!backdrop-blur"}),(0,r.jsx)(l.Zk,{position:"bottom-left",style:{marginBottom:118},children:(0,r.jsx)(ti.H,{tool:er,onChange:ea})}),(0,r.jsx)(l.Zk,{position:"bottom-right",style:{marginBottom:152},children:(0,r.jsx)(tg.er,{title:"Legend",trigger:(e,t)=>(0,r.jsx)("button",{type:"button",onClick:t,title:"Legend",className:(0,ek.cn)("glass flex size-8 items-center justify-center rounded-lg transition-colors",e?"text-foreground":"text-muted-foreground hover:text-foreground"),children:(0,r.jsx)(i.A,{className:"size-4"})}),children:(0,r.jsxs)("ul",{className:"space-y-1.5 text-[10.5px] text-muted-foreground",children:["ROADMAP"===e?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("li",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"inline-block rounded bg-sky-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-sky-300",children:"feature"}),(0,r.jsx)("span",{children:"top-level card \xb7 can have sub-tasks"})]}),(0,r.jsxs)("li",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"inline-block rounded bg-zinc-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-zinc-300",children:"sub-task"}),(0,r.jsx)("span",{children:"child of a feature"})]}),(0,r.jsxs)("li",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"inline-block rounded bg-rose-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-rose-300",children:"bug"}),(0,r.jsx)("span",{children:"a bug to fix \xb7 not a feature"})]})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("li",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"inline-block rounded bg-sky-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-sky-300",children:"component"}),(0,r.jsx)("span",{children:"a subsystem \xb7 can have sub-components"})]}),(0,r.jsxs)("li",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"inline-block rounded bg-zinc-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-zinc-300",children:"sub-component"}),(0,r.jsx)("span",{children:"part of a component"})]}),(0,r.jsxs)("li",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"inline-block rounded bg-rose-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-rose-300",children:"bug"}),(0,r.jsx)("span",{children:"a flagged issue on a component"})]})]}),M&&(0,r.jsxs)("li",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{"aria-hidden":!0,className:"inline-block h-3 w-1 shrink-0 rounded-sm",style:{background:(0,el.A6)("fullstack")}}),(0,r.jsx)("span",{children:"left stripe \xb7 frontend / backend layer"})]}),(0,r.jsxs)("li",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{"aria-hidden":!0,className:"inline-block h-px w-6 bg-[#33333a]"}),(0,r.jsx)("span",{children:"contains \xb7 drag the bottom handle to empty canvas"})]}),(0,r.jsxs)("li",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{"aria-hidden":!0,className:"inline-block h-0 w-6 border-t border-dashed",style:{borderColor:"#f5b942"}}),(0,r.jsxs)("span",{children:["depends on \xb7 drag between two ","ROADMAP"===e?"cards":"components"]})]})]})})}),(O??!b)&&(0,r.jsx)(l.of,{pannable:!0,zoomable:!0,position:"bottom-left",style:{width:140,height:90},className:"!overflow-hidden !rounded-xl !border !border-white/10 !bg-card/50 !backdrop-blur",nodeColor:e=>e.data?.priority===0?"#ff3860":"#555"}),!b&&(0,r.jsxs)(l.Zk,{position:"bottom-center",className:"!mb-4 flex flex-col items-center gap-2",children:[eN&&(0,r.jsxs)("div",{className:"glass rounded-full px-3 py-1 text-[11px] text-muted-foreground",children:["Click a ","ARCHITECTURE"===e?"component":"feature"," to attach the"," ","ARCHITECTURE"===e?"sub-component":"sub-task"," \xb7 Esc to cancel"]}),"ARCHITECTURE"===e&&(0,r.jsx)("div",{className:"glass flex items-center rounded-full p-0.5",children:(0,r.jsxs)("button",{onClick:ni,title:"Arrange components into a left→right dependency flow, grouped by domain",className:"flex h-6 items-center gap-1.5 rounded-full px-3 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:[(0,r.jsx)(d.A,{className:"size-3"}),"Arrange"]})}),"ROADMAP"===e&&(0,r.jsxs)("div",{className:"glass flex items-center gap-1 rounded-full p-1",children:[(0,r.jsx)("span",{className:"pl-2 pr-0.5 text-[11px] text-muted-foreground",children:"Group by"}),tN.map(e=>(0,r.jsx)("button",{onClick:()=>ns(e.value),title:`Arrange features into lanes by ${e.label.toLowerCase()}`,className:(0,ek.cn)("h-7 rounded-full px-2.5 text-[11px] font-medium transition-colors",eU===e.value?"bg-white/[0.12] text-foreground":"text-muted-foreground hover:bg-white/[0.06] hover:text-foreground"),children:e.label},e.value))]}),(0,r.jsxs)("div",{className:"glass flex items-center gap-1 rounded-full p-1",children:[(0,r.jsxs)("button",{onClick:eO,draggable:!0,onDragStart:t=>{t.dataTransfer.setData("application/beacon-node",e),t.dataTransfer.effectAllowed="copy"},title:"ARCHITECTURE"===e?"Add component (click, or drag onto the board to place it)":"Add feature (click, or drag onto the board to place it)",className:"flex h-8 cursor-grab items-center gap-1.5 rounded-full px-3 text-[12px] font-medium text-foreground transition-colors hover:bg-white/[0.06] active:cursor-grabbing",children:[(0,r.jsx)(c.A,{className:"size-3.5 text-[var(--accent-2,#ff7a45)]"}),"ARCHITECTURE"===e?"Component":"Feature"]}),"ROADMAP"===e&&(0,r.jsxs)("button",{onClick:eP,draggable:!0,onDragStart:t=>{t.dataTransfer.setData("application/beacon-node",e),t.dataTransfer.setData("application/beacon-node-kind","BUG"),t.dataTransfer.effectAllowed="copy"},title:"Add bug (click, or drag onto the board to place it)",className:"flex h-8 cursor-grab items-center gap-1.5 rounded-full px-3 text-[12px] font-medium text-foreground transition-colors hover:bg-white/[0.06] active:cursor-grabbing",children:[(0,r.jsx)(u.A,{className:"size-3.5 text-rose-400"}),"Bug"]}),(0,r.jsx)("span",{"aria-hidden":!0,className:"mx-0.5 h-5 w-px bg-white/10"}),(0,r.jsxs)("button",{onClick:()=>{ep(null),eC(e=>!e)},title:"ARCHITECTURE"===e?"Add sub-component (click a component next)":"Add sub-task (click a feature next)",className:(0,ek.cn)("flex h-8 items-center gap-1.5 rounded-full px-3 text-[12px] font-medium transition-colors",eN?"bg-white/[0.1] text-foreground":"text-muted-foreground hover:bg-white/[0.06] hover:text-foreground"),children:[(0,r.jsx)(p.A,{className:"size-3.5"}),"ARCHITECTURE"===e?"Sub-component":"Sub-task"]})]})]}),!b&&tD.length>0&&!tP.active&&(0,r.jsx)(l.Zk,{position:"top-left",className:"!mt-14",children:(0,r.jsxs)("button",{type:"button",onClick:tP.start,title:"Guided, domain-by-domain walkthrough of the architecture",className:"glass flex items-center gap-1.5 rounded-xl px-3 py-1.5 text-[11px] text-muted-foreground transition-colors hover:text-foreground",children:[(0,r.jsx)(x.A,{className:"size-3.5"}),"Start tour"]})}),!b&&(0,r.jsx)(l.Zk,{position:"top-center",className:"glass rounded-full px-1 py-0.5",children:(0,r.jsx)(tc.Z,{active:e,tabs:[{value:"ROADMAP",label:"Roadmap",href:"/map?view=ROADMAP"},{value:"ARCHITECTURE",label:"Architecture",href:"/map?view=ARCHITECTURE"},{value:"DATABASE",label:"Database",href:"/map?view=DATABASE"},{value:"FILES",label:"Files",href:"/map?view=FILES"}]})}),(0,r.jsxs)(l.Zk,{position:"top-right",className:(0,ek.cn)("flex items-center gap-1 transition-[margin] duration-200",Q&&"!mr-[332px]",b&&"hidden"),children:[(0,r.jsx)(tu.X,{query:e_,onQuery:eX,hits:nd,placeholder:"Find a feature…",onPick:e=>{eX(""),na(e)},onZoomToMatches:()=>{tT?.size&&eA.current?.fitView({nodes:[...tT].map(e=>({id:e})),duration:600,padding:.2})}}),"ROADMAP"===e&&F&&(0,r.jsx)("button",{type:"button",onClick:()=>na(F),title:"Jump to the next feature to work on",className:"glass flex size-8 items-center justify-center rounded-lg text-emerald-300 transition-colors hover:text-emerald-200",children:(0,r.jsx)(m.A,{className:"size-4"})}),(0,r.jsx)(tp.e,{defaultSelection:e}),(0,r.jsxs)(tg.er,{title:"Filters",trigger:(e,t)=>(0,r.jsxs)("button",{type:"button",onClick:t,title:"Filters",className:(0,ek.cn)("glass relative flex size-8 items-center justify-center rounded-lg transition-colors",e||e6>0?"text-foreground":"text-muted-foreground hover:text-foreground"),children:[(0,r.jsx)(f.A,{className:"size-4"}),e6>0&&(0,r.jsx)("span",{className:"absolute -right-1 -top-1 flex h-4 min-w-4 items-center justify-center rounded-full bg-[var(--accent-2,#ff7a45)] px-1 text-[9px] font-semibold text-white",children:e6})]}),children:[M&&(0,r.jsx)(tg.r1,{title:"Layer",children:(0,r.jsx)(tb.o,{bare:!0,value:e0,onChange:e1})}),e5.length>0&&(0,r.jsx)(tg.r1,{title:"Status",children:e5.map(e=>(0,r.jsx)(tg.vu,{on:eZ.has(e),onClick:()=>nc(e,eV),children:eo.nR[e]?.label??e},e))}),e2.length>0&&(0,r.jsx)(tg.r1,{title:"Cluster",children:e2.map(e=>(0,r.jsx)(tg.vu,{on:eW.has(e),onClick:()=>nc(e,eJ),children:e},e))}),e3.length>0&&(0,r.jsx)(tg.r1,{title:"Priority",children:e3.map(e=>(0,r.jsxs)(tg.vu,{on:eq.has(e),onClick:()=>nc(e,eQ),children:["P",e]},e))}),e6>0&&(0,r.jsx)("button",{type:"button",onClick:e7,className:"mt-1 w-full rounded-md border border-white/10 px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground",children:"clear filters"})]}),!Q&&(0,r.jsx)("button",{onClick:()=>{ee(!0),en("details")},title:"Show panel",className:"glass flex size-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground",children:(0,r.jsx)(h.A,{className:"size-4"})})]})]}),Q&&(0,r.jsx)(tn,{view:e,selected:nn,allNodes:t,onClose:()=>{ee(!1),en("details")},commentsContent:v,commentsCount:j,activeTab:et,onTabChange:en,onAddComment:tQ,topOffset:b?64:void 0}),(0,r.jsx)(tl,{payload:e$,onDismiss:()=>eL(null)}),(ec||eN)&&ex&&(0,r.jsxs)("div",{className:"pointer-events-none fixed z-50 flex translate-x-3 translate-y-3 items-center gap-1.5 rounded-lg border border-white/15 bg-card/95 px-2.5 py-1.5 text-xs shadow-xl backdrop-blur",style:{left:ex.x,top:ex.y},children:[(0,r.jsx)("span",{className:(0,ek.cn)("rounded px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide","BUG"===ec?"bg-rose-500/15 text-rose-300":"FEATURE"===ec?"bg-sky-500/15 text-sky-300":"bg-zinc-500/15 text-zinc-300"),children:"BUG"===ec?"Bug":"FEATURE"===ec?"ARCHITECTURE"===e?"Component":"Feature":"Sub-task"}),(0,r.jsx)("span",{className:"text-muted-foreground",children:ec?"click to place \xb7 Esc":"click a feature to attach \xb7 Esc"})]}),tP.active&&tP.step&&(0,r.jsx)(th.d,{steps:tD,index:tP.index,onPrev:tP.prev,onNext:tP.next,onExit:tP.stop,onGoto:tP.goto})]})})}},54698:(e,t,n)=>{n.d(t,{m:()=>r});function r(e,t){let n=[];return e.forEach((e,r)=>{let a=e.excerpt.trim();if(!a)return;let s={annotationId:e.id,n:r+1};for(let e of t.tables){if(a===e.name)return void n.push({...s,kind:"table",targetId:e.id,column:null});if(a.startsWith(`${e.name}.`)){let t=a.slice(e.name.length+1);if(e.columns.includes(t))return void n.push({...s,kind:"column",targetId:e.id,column:t})}}for(let e of t.endpoints??[])if(a===`${e.method} ${e.path}`)return void n.push({...s,kind:"endpoint",targetId:e.id,column:null});for(let e of t.features??[])if(a===e.title||a===`feature: ${e.title}`)return void n.push({...s,kind:"feature",targetId:e.id,column:null})}),n}},56614:(e,t,n)=>{n.d(t,{er:()=>o,r1:()=>l,vu:()=>i});var r=n(95155),a=n(12115),s=n(91337);function o({trigger:e,title:t,align:n="right",children:l,open:i,onOpenChange:d,outsideClicksToClose:c=1}){let[u,p]=(0,a.useState)(!1),[x,m]=(0,a.useState)("down"),f=i??u,h=e=>{void 0===i&&p(e),d?.(e)},g=(0,a.useRef)(null),b=(0,a.useRef)(()=>{});return(0,a.useEffect)(()=>{b.current=()=>h(!1)}),(0,a.useEffect)(()=>{if(!f)return;let e=g.current?.firstElementChild?.getBoundingClientRect();e&&m(window.innerHeight-e.bottom<260?"up":"down")},[f]),(0,a.useEffect)(()=>{if(!f)return;let e=0,t=null,n=()=>{t&&clearTimeout(t),t=null},r=r=>{if(g.current?.contains(r.target)){e=0,n();return}c<=1?b.current():(e+=1)>=c?(e=0,n(),b.current()):(n(),t=setTimeout(()=>{e=0},1500))},a=e=>{"Escape"===e.key&&b.current()};return window.addEventListener("mousedown",r,!0),window.addEventListener("keydown",a),()=>{n(),window.removeEventListener("mousedown",r,!0),window.removeEventListener("keydown",a)}},[f,c]),(0,r.jsxs)("div",{ref:g,className:"relative",children:[e(f,()=>h(!f)),f&&(0,r.jsxs)("div",{className:(0,s.cn)("glass absolute z-30 w-64 rounded-xl p-3 shadow-xl","up"===x?"bottom-full mb-1.5":"top-full mt-1.5","right"===n?"right-0":"left-0"),children:[t&&(0,r.jsx)("div",{className:"mb-2 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground",children:t}),l]})]})}function l({title:e,children:t}){return(0,r.jsxs)("div",{className:"mb-2.5 last:mb-0",children:[(0,r.jsx)("div",{className:"mb-1 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground/80",children:e}),(0,r.jsx)("div",{className:"flex flex-wrap gap-1",children:t})]})}function i({on:e,onClick:t,children:n,tone:a="default"}){return(0,r.jsx)("button",{type:"button",onClick:t,className:(0,s.cn)("rounded-md border px-2 py-0.5 text-[11px] font-medium transition-colors",{default:e?"border-foreground/40 bg-white/10 text-foreground":"border-white/10 text-muted-foreground hover:text-foreground",danger:e?"border-red-500/40 bg-red-500/15 text-red-300":"border-white/10 text-muted-foreground hover:text-foreground",accent:e?"border-sky-500/40 bg-sky-500/15 text-sky-300":"border-white/10 text-muted-foreground hover:text-foreground"}[a]),children:n})}},56895:(e,t,n)=>{n.d(t,{W:()=>a});var r=n(12115);function a(e,t){let[n,a]=(0,r.useState)(!1),[s,o]=(0,r.useState)(0),l=n?e[s]??null:null,i=(0,r.useCallback)(()=>{o(0),a(!0)},[]),d=(0,r.useCallback)(()=>a(!1),[]),c=(0,r.useCallback)(()=>o(t=>Math.min(t+1,e.length-1)),[e.length]),u=(0,r.useCallback)(()=>o(e=>Math.max(e-1,0)),[]),p=(0,r.useCallback)(t=>{t>=0&&t<e.length&&o(t)},[e.length]);(0,r.useEffect)(()=>{if(!n)return;let r=e[s];r&&t(r)},[n,s]),(0,r.useEffect)(()=>{if(!n)return;let e=e=>{"ArrowRight"===e.key?(e.preventDefault(),c()):"ArrowLeft"===e.key?(e.preventDefault(),u()):"Escape"===e.key&&(e.preventDefault(),d())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[n,c,u,d]);let x=(0,r.useMemo)(()=>l&&l.focusIds.length?new Set(l.focusIds):null,[l]);return{active:n,index:s,step:l,start:i,stop:d,next:c,prev:u,goto:p,focusIds:x}}},62311:(e,t,n)=>{n.d(t,{Z:()=>f});var r=n(95155),a=n(12115),s=n(98500),o=n.n(s),l=n(25640),i=n(83599),d=n(94192),c=n(34306),u=n(60292),p=n(75514),x=n(91337);let m={ROADMAP:l.A,ARCHITECTURE:i.A,FILES:d.A,DATABASE:c.A};function f({tabs:e,active:t}){let[n,s]=(0,a.useState)(null);(0,a.useEffect)(()=>{s((0,u.fk)())},[]);let l=(0,p.$2)();return(0,r.jsx)("div",{className:"flex items-center gap-0.5",children:e.map(e=>{let a,s=e.value===t,i=e.Icon??m[e.value],d=(0,x.cn)("flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-[12px] font-medium tracking-tight transition-colors",s?"border-white/10 bg-white/[0.07] text-foreground shadow-[inset_0_1px_0_rgba(255,255,255,0.06)]":"border-transparent text-muted-foreground/80 hover:bg-white/5 hover:text-foreground"),c=(0,r.jsxs)(r.Fragment,{children:[i?(0,r.jsx)(i,{className:(0,x.cn)("size-3",s&&"text-[#ff7a45]")}):null,(0,r.jsx)("span",{children:e.label})]});return l?.views.has(e.value)?(0,r.jsx)("button",{type:"button",onClick:()=>l.switchTo(e.value),className:d,children:c},e.value):(0,r.jsx)(o(),{href:(a=e.href,n?`${a}${a.includes("?")?"&":"?"}ws=${n}`:a),className:d,children:c},e.value)})})}},66616:(e,t,n)=>{n.d(t,{E:()=>s});var r=n(95155),a=n(91337);function s({active:e,onClick:t,icon:n,children:o}){return(0,r.jsxs)("button",{type:"button",onClick:t,className:(0,a.cn)("flex items-center gap-1 rounded-md px-2.5 py-1 text-[11px] font-medium transition-colors",e?"bg-white/10 text-foreground":"text-muted-foreground hover:text-foreground"),children:[n,o]})}},70221:(e,t,n)=>{n.d(t,{fE:()=>s,gt:()=>o,kz:()=>a});let r={far:.3,farExit:.34,mid:.55,midExit:.6},a={far:.12,farExit:.15,mid:.45,midExit:.5},s={far:.2,farExit:.24,mid:.32,midExit:.36};function o(e,t="full",n=r){return e<n.far||"far"===t&&e<n.farExit?"far":e<n.mid||"mid"===t&&e<n.midExit?"mid":"full"}},70521:(e,t,n)=>{n.d(t,{$v:()=>w,EO:()=>b,Lt:()=>m,Rx:()=>k,Zr:()=>N,ck:()=>v,r7:()=>j,tv:()=>f,wd:()=>y});var r=n(95155);n(12115);var a=n(25381),s=n(7121),o=n(51880),l=n(35176),i=n(11248),d=n(82022),c=n(98758),u=n(45362),p=n(91337),x=n(4474);function m({...e}){return(0,r.jsx)(a.V,{"data-slot":"alert-dialog",...e})}function f({...e}){return(0,r.jsx)(s.t,{"data-slot":"alert-dialog-trigger",...e})}function h({...e}){return(0,r.jsx)(o.Z,{"data-slot":"alert-dialog-portal",...e})}function g({className:e,...t}){return(0,r.jsx)(l.X,{"data-slot":"alert-dialog-overlay",className:(0,p.cn)("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",e),...t})}function b({className:e,size:t="default",...n}){return(0,r.jsxs)(h,{children:[(0,r.jsx)(g,{}),(0,r.jsx)(i.h,{"data-slot":"alert-dialog-content","data-size":t,className:(0,p.cn)("group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...n})]})}function y({className:e,...t}){return(0,r.jsx)("div",{"data-slot":"alert-dialog-header",className:(0,p.cn)("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]",e),...t})}function v({className:e,...t}){return(0,r.jsx)("div",{"data-slot":"alert-dialog-footer",className:(0,p.cn)("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",e),...t})}function j({className:e,...t}){return(0,r.jsx)(d.L,{"data-slot":"alert-dialog-title",className:(0,p.cn)("font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",e),...t})}function w({className:e,...t}){return(0,r.jsx)(c.r,{"data-slot":"alert-dialog-description",className:(0,p.cn)("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function k({className:e,variant:t,size:n,...a}){return(0,r.jsx)(u.H,{"data-slot":"alert-dialog-action",className:(0,p.cn)(e),render:(0,r.jsx)(x.$,{variant:t,size:n}),...a})}function N({className:e,variant:t="outline",size:n="default",...a}){return(0,r.jsx)(u.H,{"data-slot":"alert-dialog-cancel",className:(0,p.cn)(e),render:(0,r.jsx)(x.$,{variant:t,size:n}),...a})}},70947:(e,t,n)=>{n.d(t,{Z:()=>l});var r=n(95155),a=n(81750),s=n(12410),o=n(91337);function l({regions:e,tone:t="neutral",lod:n="full"}){let i=(0,a.Pj)(e=>e.transform[2]);if(0===e.length)return null;let d="far"===n,c=Math.min(150,26/Math.max(i,.05)),u=Math.min(80,13/Math.max(i,.05));return(0,r.jsx)(a.DX,{children:e.map(e=>(0,r.jsx)("div",{style:{position:"absolute",transform:`translate(${e.x}px, ${e.y}px)`,width:e.w,height:e.h,pointerEvents:"none",zIndex:0},className:(0,o.cn)("rounded-2xl border","category"===t?(0,s.xZ)(e.key):"border-white/[0.08] bg-white/[0.015]",d&&"bg-card/80"),children:d?(0,r.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-[0.3em] px-2",children:[(0,r.jsx)("span",{className:"whitespace-nowrap text-center font-semibold tracking-tight text-foreground",style:{fontSize:Math.min(c,.34*e.h,(e.w-16)/(.74*Math.max(e.label.length,1))),lineHeight:1.1},children:e.label}),(0,r.jsxs)("span",{className:"tabular-nums text-muted-foreground",style:{fontSize:Math.min(u,.18*e.h)},children:[e.count," ",1===e.count?"card":"cards"]})]}):(0,r.jsxs)("div",{className:"flex items-baseline gap-2 px-3 py-1",children:[(0,r.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground/80",children:e.label}),(0,r.jsx)("span",{className:"text-[10px] tabular-nums text-muted-foreground/50",children:e.count})]})},e.key))})}},74350:(e,t,n)=>{n.d(t,{Cf:()=>g,Es:()=>y,L3:()=>v,c7:()=>b,lG:()=>m,rr:()=>j});var r=n(95155);n(12115);var a=n(17112),s=n(51880),o=n(35176),l=n(11248),i=n(45362),d=n(82022),c=n(98758),u=n(91337),p=n(4474),x=n(9005);function m({...e}){return(0,r.jsx)(a.D,{"data-slot":"dialog",...e})}function f({...e}){return(0,r.jsx)(s.Z,{"data-slot":"dialog-portal",...e})}function h({className:e,...t}){return(0,r.jsx)(o.X,{"data-slot":"dialog-overlay",className:(0,u.cn)("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",e),...t})}function g({className:e,children:t,showCloseButton:n=!0,...a}){return(0,r.jsxs)(f,{children:[(0,r.jsx)(h,{}),(0,r.jsxs)(l.h,{"data-slot":"dialog-content",className:(0,u.cn)("fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...a,children:[t,n&&(0,r.jsxs)(i.H,{"data-slot":"dialog-close",render:(0,r.jsx)(p.$,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[(0,r.jsx)(x.A,{}),(0,r.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function b({className:e,...t}){return(0,r.jsx)("div",{"data-slot":"dialog-header",className:(0,u.cn)("flex flex-col gap-2",e),...t})}function y({className:e,showCloseButton:t=!1,children:n,...a}){return(0,r.jsxs)("div",{"data-slot":"dialog-footer",className:(0,u.cn)("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end",e),...a,children:[n,t&&(0,r.jsx)(i.H,{render:(0,r.jsx)(p.$,{variant:"outline"}),children:"Close"})]})}function v({className:e,...t}){return(0,r.jsx)(d.L,{"data-slot":"dialog-title",className:(0,u.cn)("font-heading text-base leading-none font-medium",e),...t})}function j({className:e,...t}){return(0,r.jsx)(c.r,{"data-slot":"dialog-description",className:(0,u.cn)("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}},75514:(e,t,n)=>{n.d(t,{$2:()=>o,a4:()=>a,no:()=>s});var r=n(12115);let a=new Set(["ROADMAP","ARCHITECTURE","DATABASE"]),s=(0,r.createContext)(null);function o(){return(0,r.useContext)(s)}},80277:(e,t,n)=>{n.d(t,{H:()=>c,e:()=>d});var r=n(95155),a=n(12115),s=n(6266),o=n(61285),l=n(91906),i=n(91337);function d(e="pan"){let[t,n]=(0,a.useState)(e);(0,a.useEffect)(()=>{let e=e=>{if(e.metaKey||e.ctrlKey||e.altKey)return;let t=e.target;t&&(t.isContentEditable||/^(INPUT|TEXTAREA|SELECT)$/.test(t.tagName))||("v"===e.key||"V"===e.key?n("select"):("h"===e.key||"H"===e.key)&&n("pan"))};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[]);let r="pan"===t?{panOnDrag:!0,selectionOnDrag:!1,selectionMode:s.Qc.Partial,selectNodesOnDrag:!1}:{panOnDrag:[1,2],selectionOnDrag:!0,selectionMode:s.Qc.Partial,selectNodesOnDrag:!1};return{tool:t,setTool:n,flowProps:r,paneClass:"select"===t?"rf-tool-select":void 0}}function c({tool:e,onChange:t}){return(0,r.jsxs)("div",{className:"flex items-center gap-0.5 rounded-xl border border-white/15 bg-[#202024]/95 p-1 shadow-lg backdrop-blur",children:[(0,r.jsx)(u,{active:"select"===e,label:"Select tool (V) — drag to box-select; move many nodes at once",onClick:()=>t("select"),children:(0,r.jsx)(o.A,{className:"size-4"})}),(0,r.jsx)(u,{active:"pan"===e,label:"Hand tool (H) — drag to pan the board",onClick:()=>t("pan"),children:(0,r.jsx)(l.A,{className:"size-4"})})]})}function u({active:e,label:t,onClick:n,children:a}){return(0,r.jsx)("button",{type:"button",title:t,"aria-pressed":e,onClick:n,className:(0,i.cn)("flex size-7 items-center justify-center rounded-lg transition-colors",e?"bg-[#ff7a45]/15 text-[#ff7a45]":"text-muted-foreground hover:bg-white/8 hover:text-foreground"),children:a})}},89793:(e,t,n)=>{n.d(t,{b:()=>a});var r=n(12115);function a(){let[e,t]=(0,r.useState)("idle"),[n,a]=(0,r.useState)(""),[s,o]=(0,r.useState)(""),[l,i]=(0,r.useState)(!1);async function d(){try{await navigator.clipboard.writeText(n),i(!0),setTimeout(()=>i(!1),1500)}catch{}}return{status:e,url:n,error:s,copied:l,mint:async function e(e){t("loading"),o(""),i(!1);try{let n=await fetch("/api/share/create",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(e)}),r=await n.json();if(!n.ok||!r.url){o(r.error??"Could not create the link."),t("error");return}a(r.url),t("done")}catch{o("Could not reach the local Beacon daemon."),t("error")}},copy:d,reset:function(){t("idle"),a(""),o(""),i(!1)}}}},91157:(e,t,n)=>{n.d(t,{b:()=>o,d:()=>l});let r=e=>e.slice(e.lastIndexOf("/")+1),a=(e,t)=>t>e?", …":"";function s(e){let t=new Map;for(let n of e)t.set(r(n),(t.get(r(n))??0)+1);return e.map(e=>{let n=r(e);if((t.get(n)??0)<=1)return n;let a=e.slice(0,e.lastIndexOf("/")),s=a.slice(a.lastIndexOf("/")+1);return s?`${s}/${n}`:n})}function o(e,t,n){if(0===e.length)return[];let r=e=>n.get(e)??"(root)",o=new Map;for(let t of e){let e=r(t.path),n=o.get(e);n?n.push(t):o.set(e,[t])}let l=[...o.keys()],i=e=>o.get(e)?.length??0,d=new Map,c=new Map;for(let e of l)d.set(e,new Set),c.set(e,0);let u=new Set;for(let e of t){if(e.circular)continue;let t=r(e.from),n=r(e.to);if(t===n||!d.has(t)||!d.has(n))continue;let a=`${t}\0${n}`;u.has(a)||(u.add(a),d.get(t).add(n),c.set(n,(c.get(n)??0)+1))}let p=(e,t)=>i(t)-i(e)||e.localeCompare(t),x=new Map(c),m=new Set,f=[];for(;f.length<l.length;){let e=l.filter(e=>!m.has(e)&&(x.get(e)??0)===0).sort(p);if(0===e.length){for(let e of l.filter(e=>!m.has(e)).sort((e,t)=>(x.get(e)??0)-(x.get(t)??0)||i(t)-i(e)||e.localeCompare(t)))f.push(e),m.add(e);break}for(let t of e)for(let e of(f.push(t),m.add(t),d.get(t)))x.set(e,(x.get(e)??0)-1)}let h=e.filter(e=>(e.inDegree??0)===0).sort((e,t)=>(t.outDegree??0)-(e.outDegree??0)||e.path.localeCompare(t.path)),g=[];if(g.push({id:"tour:overview",kind:"overview",title:"Project overview",summary:`${e.length} files across ${l.length} ${1===l.length?"area":"areas"} \xb7 ${t.length} imports. Step through the architecture in dependency order — entry points first.`,focusIds:[]}),h.length){let e=s(h.slice(0,4).map(e=>e.path));g.push({id:"tour:entry",kind:"entry",title:"Entry points",summary:`${h.length} file${1===h.length?"":"s"} nothing imports — where execution starts: ${e.join(", ")}${a(4,h.length)}.`,focusIds:h.slice(0,12).map(e=>e.path)})}for(let e of f){let t=o.get(e),n=s([...t].sort((e,t)=>(t.inDegree??0)-(e.inDegree??0)||e.path.localeCompare(t.path)).slice(0,3).map(e=>e.path)),r=[...d.get(e)].sort(p),l=r.length?` \xb7 imports ${r.slice(0,3).join(", ")}${a(3,r.length)}`:" \xb7 no cross-area imports";g.push({id:`tour:group:${e}`,kind:"group",title:e,summary:`${t.length} file${1===t.length?"":"s"}${l} \xb7 top hubs: ${n.join(", ")}.`,focusIds:t.map(e=>e.path)})}return g}function l(e){if(0===e.length)return[];let t=e=>e.cluster?.trim()||"—",n=new Map;for(let r of e){let e=t(r),a=n.get(e);a?a.push(r):n.set(e,[r])}let r=e=>Math.min(...n.get(e).map(e=>e.x??0)),s=[...n.keys()].sort((e,t)=>r(e)-r(t)||e.localeCompare(t)),o=[{id:"tour:overview",kind:"overview",title:"Architecture overview",summary:`${e.length} component${1===e.length?"":"s"} across ${s.length} ${1===s.length?"domain":"domains"}. Walk the architecture domain by domain, upstream first.`,focusIds:[]}];for(let e of s){let t=n.get(e),r=t.slice(0,3).map(e=>e.title?.trim()||e.id);o.push({id:`tour:domain:${e}`,kind:"group",title:e,summary:`${t.length} component${1===t.length?"":"s"}: ${r.join(", ")}${a(3,t.length)}.`,focusIds:t.map(e=>e.id)})}return o}},94014:(e,t,n)=>{n.d(t,{Xi:()=>r});function r(e,t){let n,r,a,s=(r=((n=t.viewportAspect)&&Number.isFinite(n)&&n>0?Math.min(3.2,Math.max(.7,n)):1.8)*(t.aspectSlack??1),a=e.reduce((e,n)=>e+(n.w+t.gapX)*(n.h+t.gapY),0),Math.max(t.minBandW,Math.round(Math.sqrt(a*r)))),o=new Map,l=0,i=0,d=0;for(let n of e)l>0&&l+n.w>s&&(i+=d+t.gapY,l=0,d=0),o.set(n.id,{x:l,y:i}),d=Math.max(d,n.h),l+=n.w+t.gapX;return o}},95635:(e,t,n)=>{n.d(t,{x:()=>o});var r=n(95155),a=n(81750),s=n(6266);function o(){let e="!h-2 !w-2 !border-0 !bg-zinc-400";return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(a.h7,{type:"target",position:s.yX.Top,id:"tt",className:e}),(0,r.jsx)(a.h7,{type:"source",position:s.yX.Top,id:"st",className:e}),(0,r.jsx)(a.h7,{type:"target",position:s.yX.Right,id:"tr",className:e}),(0,r.jsx)(a.h7,{type:"source",position:s.yX.Right,id:"sr",className:e}),(0,r.jsx)(a.h7,{type:"target",position:s.yX.Bottom,id:"tb",className:e}),(0,r.jsx)(a.h7,{type:"source",position:s.yX.Bottom,id:"sb",className:e}),(0,r.jsx)(a.h7,{type:"target",position:s.yX.Left,id:"tl",className:e}),(0,r.jsx)(a.h7,{type:"source",position:s.yX.Left,id:"sl",className:e})]})}},96719:(e,t,n)=>{n.d(t,{F:()=>i});var r=n(95155),a=n(64577),s=n(99314),o=n(1275),l=n(4474);function i({url:e,copied:t,onCopy:n}){return(0,r.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("input",{readOnly:!0,value:e,onFocus:e=>e.currentTarget.select(),className:"min-w-0 flex-1 rounded-md border border-white/10 bg-background px-2.5 py-1.5 text-[12px] text-foreground outline-none"}),(0,r.jsxs)(l.$,{size:"sm",variant:"outline",onClick:n,children:[t?(0,r.jsx)(a.A,{className:"size-3.5"}):(0,r.jsx)(s.A,{className:"size-3.5"}),t?"Copied":"Copy"]})]}),(0,r.jsxs)("a",{href:e,target:"_blank",rel:"noreferrer",className:"inline-flex items-center gap-1.5 text-[12px] text-muted-foreground transition-colors hover:text-foreground",children:[(0,r.jsx)(o.A,{className:"size-3.5"})," Open the shared view"]})]})}},98238:(e,t,n)=>{n.d(t,{F:()=>o,o:()=>l});var r=n(95155),a=n(28161),s=n(91337);function o(e,t){return!!t&&("fullstack"===e?"fullstack"===t:t===e||"fullstack"===t)}function l({value:e,onChange:t,options:n=a.RR,bare:o=!1}){return(0,r.jsx)("div",{className:(0,s.cn)("flex items-center gap-0.5",!o&&"glass rounded-lg p-0.5"),children:n.map(n=>{let o=e===n;return(0,r.jsxs)("button",{type:"button",onClick:()=>t(o?null:n),title:o?"Show every layer at full strength again":`Highlight ${a.YG[n].label} — other cards dim, nothing is hidden`,className:(0,s.cn)("flex h-7 items-center gap-1.5 rounded-md px-2 text-[10px] font-semibold uppercase tracking-wide transition-colors",o?"bg-white/[0.12] text-foreground":"text-muted-foreground hover:bg-white/[0.06] hover:text-foreground"),children:[(0,r.jsx)("span",{"aria-hidden":!0,className:"h-3 w-[3px] shrink-0 rounded-full",style:{background:(0,a.A6)(n)}}),a.YG[n].short]},n)})})}}}]);
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3862],{81750:(e,t,n)=>{n.d(t,{DX:()=>tk,Gc:()=>tw,H2:()=>tZ,JY:()=>tj,Pj:()=>m,VH:()=>ea,VS:()=>tO,Zk:()=>k,_0:()=>X,_5:()=>r,ck:()=>tP,h7:()=>eS,of:()=>tJ,pk:()=>tM,rV:()=>tC,tE:()=>eF,zW:()=>W});var o,r,a=n(95155),i=n(12115),l=n(69684),s=n(6266),d=n(50916),c=n(99026),u=n(47650);let g=(0,i.createContext)(null),f=g.Provider,p=s.xc.error001("react");function m(e,t){let n=(0,i.useContext)(g);if(null===n)throw Error(p);return(0,d.n)(n,e,t)}function h(){let e=(0,i.useContext)(g);if(null===e)throw Error(p);return(0,i.useMemo)(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}let y={display:"none"},x={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},b="react-flow__node-desc",v="react-flow__edge-desc",w=e=>e.ariaLiveMessage,S=e=>e.ariaLabelConfig;function C({rfId:e}){let t=m(w);return(0,a.jsx)("div",{id:`react-flow__aria-live-${e}`,"aria-live":"assertive","aria-atomic":"true",style:x,children:t})}function E({rfId:e,disableKeyboardA11y:t}){let n=m(S);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{id:`${b}-${e}`,style:y,children:t?n["node.a11yDescription.default"]:n["node.a11yDescription.keyboardDisabled"]}),(0,a.jsx)("div",{id:`${v}-${e}`,style:y,children:n["edge.a11yDescription.default"]}),!t&&(0,a.jsx)(C,{rfId:e})]})}let k=(0,i.forwardRef)(({position:e="top-left",children:t,className:n,style:o,...r},i)=>{let s=`${e}`.split("-");return(0,a.jsx)("div",{className:(0,l.A)(["react-flow__panel",n,...s]),style:o,ref:i,...r,children:t})});function N({proOptions:e,position:t="bottom-right"}){return e?.hideAttribution?null:(0,a.jsx)(k,{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:(0,a.jsx)("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}k.displayName="Panel";let M=e=>{let t=[],n=[];for(let[,n]of e.nodeLookup)n.selected&&t.push(n.internals.userNode);for(let[,t]of e.edgeLookup)t.selected&&n.push(t);return{selectedNodes:t,selectedEdges:n}},P=e=>e.id;function j(e,t){return(0,c.x)(e.selectedNodes.map(P),t.selectedNodes.map(P))&&(0,c.x)(e.selectedEdges.map(P),t.selectedEdges.map(P))}function _({onSelectionChange:e}){let t=h(),{selectedNodes:n,selectedEdges:o}=m(M,j);return(0,i.useEffect)(()=>{let r={nodes:n,edges:o};e?.(r),t.getState().onSelectionChangeHandlers.forEach(e=>e(r))},[n,o,e]),null}let D=e=>!!e.onSelectionChangeHandlers;function A({onSelectionChange:e}){let t=m(D);return e||t?(0,a.jsx)(_,{onSelectionChange:e}):null}let R=[0,0],I={x:0,y:0,zoom:1},O=["nodes","edges","defaultNodes","defaultEdges","onConnect","onConnectStart","onConnectEnd","onClickConnectStart","onClickConnectEnd","nodesDraggable","autoPanOnNodeFocus","nodesConnectable","nodesFocusable","edgesFocusable","edgesReconnectable","elevateNodesOnSelect","elevateEdgesOnSelect","minZoom","maxZoom","nodeExtent","onNodesChange","onEdgesChange","elementsSelectable","connectionMode","snapGrid","snapToGrid","translateExtent","connectOnClick","defaultEdgeOptions","fitView","fitViewOptions","onNodesDelete","onEdgesDelete","onDelete","onNodeDrag","onNodeDragStart","onNodeDragStop","onSelectionDrag","onSelectionDragStart","onSelectionDragStop","onMoveStart","onMove","onMoveEnd","noPanClassName","nodeOrigin","autoPanOnConnect","autoPanOnNodeDrag","onError","connectionRadius","isValidConnection","selectNodesOnDrag","nodeDragThreshold","connectionDragThreshold","onBeforeDelete","debug","autoPanSpeed","ariaLabelConfig","zIndexMode","rfId"],L=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}),z={translateExtent:s.ZO,nodeOrigin:R,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1"};function $(e){let{setNodes:t,setEdges:n,setMinZoom:o,setMaxZoom:r,setTranslateExtent:a,setNodeExtent:l,reset:d,setDefaultNodesAndEdges:u}=m(L,c.x),g=h();(0,i.useEffect)(()=>(u(e.defaultNodes,e.defaultEdges),()=>{f.current=z,d()}),[]);let f=(0,i.useRef)(z);return(0,i.useEffect)(()=>{for(let i of O){let d=e[i];d!==f.current[i]&&void 0!==e[i]&&("nodes"===i?t(d):"edges"===i?n(d):"minZoom"===i?o(d):"maxZoom"===i?r(d):"translateExtent"===i?a(d):"nodeExtent"===i?l(d):"ariaLabelConfig"===i?g.setState({ariaLabelConfig:(0,s.Q6)(d)}):"fitView"===i?g.setState({fitViewQueued:d}):"fitViewOptions"===i?g.setState({fitViewOptions:d}):g.setState({[i]:d}))}f.current=e},O.map(t=>e[t])),null}function B(){return"u"<typeof window||!window.matchMedia?null:window.matchMedia("(prefers-color-scheme: dark)")}let V="u">typeof document?document:null;function H(e=null,t={target:V,actInsideInputWithModifier:!0}){let[n,o]=(0,i.useState)(!1),r=(0,i.useRef)(!1),a=(0,i.useRef)(new Set([])),[l,d]=(0,i.useMemo)(()=>{if(null!==e){let t=(Array.isArray(e)?e:[e]).filter(e=>"string"==typeof e).map(e=>e.replace("+","\n").replace("\n\n","\n+").split("\n")),n=t.reduce((e,t)=>e.concat(...t),[]);return[t,n]}return[[],[]]},[e]);return(0,i.useEffect)(()=>{let n=t?.target??V,i=t?.actInsideInputWithModifier??!0;if(null!==e){let e=e=>{if(r.current=e.ctrlKey||e.metaKey||e.shiftKey||e.altKey,(!r.current||r.current&&!i)&&(0,s.v5)(e))return!1;let n=T(e.code,d);if(a.current.add(e[n]),F(l,a.current,!1)){let n=e.composedPath?.()?.[0]||e.target,a=n?.nodeName==="BUTTON"||n?.nodeName==="A";!1!==t.preventDefault&&(r.current||!a)&&e.preventDefault(),o(!0)}},c=e=>{let t=T(e.code,d);F(l,a.current,!0)?(o(!1),a.current.clear()):a.current.delete(e[t]),"Meta"===e.key&&a.current.clear(),r.current=!1},u=()=>{a.current.clear(),o(!1)};return n?.addEventListener("keydown",e),n?.addEventListener("keyup",c),window.addEventListener("blur",u),window.addEventListener("contextmenu",u),()=>{n?.removeEventListener("keydown",e),n?.removeEventListener("keyup",c),window.removeEventListener("blur",u),window.removeEventListener("contextmenu",u)}}},[e,o]),n}function F(e,t,n){return e.filter(e=>n||e.length===t.size).some(e=>e.every(e=>t.has(e)))}function T(e,t){return t.includes(e)?"code":"key"}function Z(e,t){let n=[],o=new Map,r=[];for(let t of e)if("add"===t.type){r.push(t);continue}else if("remove"===t.type||"replace"===t.type)o.set(t.id,[t]);else{let e=o.get(t.id);e?e.push(t):o.set(t.id,[t])}for(let e of t){let t=o.get(e.id);if(!t){n.push(e);continue}if("remove"===t[0].type)continue;if("replace"===t[0].type){n.push({...t[0].item});continue}let r={...e};for(let e of t){var a=e,i=r;switch(a.type){case"select":i.selected=a.selected;break;case"position":void 0!==a.position&&(i.position=a.position),void 0!==a.dragging&&(i.dragging=a.dragging);break;case"dimensions":void 0!==a.dimensions&&(i.measured={...a.dimensions},a.setAttributes&&((!0===a.setAttributes||"width"===a.setAttributes)&&(i.width=a.dimensions.width),(!0===a.setAttributes||"height"===a.setAttributes)&&(i.height=a.dimensions.height))),"boolean"==typeof a.resizing&&(i.resizing=a.resizing)}}n.push(r)}return r.length&&r.forEach(e=>{void 0!==e.index?n.splice(e.index,0,{...e.item}):n.push({...e.item})}),n}function X(e,t){return Z(e,t)}function W(e,t){return Z(e,t)}function K(e,t){return{id:e,type:"select",selected:t}}function Y(e,t=new Set,n=!1){let o=[];for(let[r,a]of e){let e=t.has(r);(void 0!==a.selected||e)&&a.selected!==e&&(n&&(a.selected=e),o.push(K(a.id,e)))}return o}function Q({items:e=[],lookup:t}){let n=[],o=new Map(e.map(e=>[e.id,e]));for(let[o,r]of e.entries()){let e=t.get(r.id),a=e?.internals?.userNode??e;void 0!==a&&a!==r&&n.push({id:r.id,item:r,type:"replace"}),void 0===a&&n.push({item:r,type:"add",index:o})}for(let[e]of t)void 0===o.get(e)&&n.push({id:e,type:"remove"});return n}function U(e){return{id:e.id,type:"remove"}}let q=(0,s.kr)("React Flow","https://reactflow.dev/"),G=e=>(0,s.oB)(e);function J(e){return(0,i.forwardRef)(e)}let ee="u">typeof window?i.useLayoutEffect:i.useEffect;function et(e){let[t,n]=(0,i.useState)(BigInt(0)),[o]=(0,i.useState)(()=>{var e;let t;return e=()=>n(e=>e+BigInt(1)),t=[],{get:()=>t,reset:()=>{t=[]},push:n=>{t.push(n),e()}}});return ee(()=>{let t=o.get();t.length&&(e(t),o.reset())},[t]),o}let en=(0,i.createContext)(null);function eo({children:e}){let t=h(),n=et((0,i.useCallback)(e=>{let{nodes:n=[],setNodes:o,hasDefaultNodes:r,onNodesChange:a,nodeLookup:i,fitViewQueued:l,onNodesChangeMiddlewareMap:s}=t.getState(),d=n;for(let t of e)d="function"==typeof t?t(d):t;let c=Q({items:d,lookup:i});for(let e of s.values())c=e(c);r&&o(d),c.length>0?a?.(c):l&&window.requestAnimationFrame(()=>{let{fitViewQueued:e,nodes:n,setNodes:o}=t.getState();e&&o(n)})},[])),o=et((0,i.useCallback)(e=>{let{edges:n=[],setEdges:o,hasDefaultEdges:r,onEdgesChange:a,edgeLookup:i}=t.getState(),l=n;for(let t of e)l="function"==typeof t?t(l):t;r?o(l):a&&a(Q({items:l,lookup:i}))},[])),r=(0,i.useMemo)(()=>({nodeQueue:n,edgeQueue:o}),[]);return(0,a.jsx)(en.Provider,{value:r,children:e})}let er=e=>!!e.panZoom;function ea(){let e,t=(e=h(),(0,i.useMemo)(()=>({zoomIn:async t=>{let{panZoom:n}=e.getState();return!!n&&n.scaleBy(1.2,t)},zoomOut:async t=>{let{panZoom:n}=e.getState();return!!n&&n.scaleBy(1/1.2,t)},zoomTo:async(t,n)=>{let{panZoom:o}=e.getState();return!!o&&o.scaleTo(t,n)},getZoom:()=>e.getState().transform[2],setViewport:async(t,n)=>{let{transform:[o,r,a],panZoom:i}=e.getState();return!!i&&(await i.setViewport({x:t.x??o,y:t.y??r,zoom:t.zoom??a},n),!0)},getViewport:()=>{let[t,n,o]=e.getState().transform;return{x:t,y:n,zoom:o}},setCenter:async(t,n,o)=>e.getState().setCenter(t,n,o),fitBounds:async(t,n)=>{let{width:o,height:r,minZoom:a,maxZoom:i,panZoom:l}=e.getState(),d=(0,s.R4)(t,o,r,a,i,n?.padding??.1);return!!l&&(await l.setViewport(d,{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),!0)},screenToFlowPosition:(t,n={})=>{let{transform:o,snapGrid:r,snapToGrid:a,domNode:i}=e.getState();if(!i)return t;let{x:l,y:d}=i.getBoundingClientRect(),c={x:t.x-l,y:t.y-d},u=n.snapGrid??r,g=n.snapToGrid??a;return(0,s.Ff)(c,o,g,u)},flowToScreenPosition:t=>{let{transform:n,domNode:o}=e.getState();if(!o)return t;let{x:r,y:a}=o.getBoundingClientRect(),i=(0,s.zj)(t,n);return{x:i.x+r,y:i.y+a}}}),[])),n=h(),o=function(){let e=(0,i.useContext)(en);if(!e)throw Error("useBatchContext must be used within a BatchProvider");return e}(),r=m(er),a=(0,i.useMemo)(()=>{let e=e=>n.getState().nodeLookup.get(e),t=e=>{o.nodeQueue.push(e)},r=e=>{o.edgeQueue.push(e)},a=e=>{let{nodeLookup:t,nodeOrigin:o}=n.getState(),r=G(e)?e:t.get(e.id),a=r.parentId?(0,s.us)(r.position,r.measured,r.parentId,t,o):r.position,i={...r,position:a,width:r.measured?.width??r.width,height:r.measured?.height??r.height};return(0,s.kM)(i)},i=(e,n,o={replace:!1})=>{t(t=>t.map(t=>{if(t.id===e){let e="function"==typeof n?n(t):n;return o.replace&&G(e)?e:{...t,...e}}return t}))},l=(e,t,n={replace:!1})=>{r(o=>o.map(o=>{if(o.id===e){let e="function"==typeof t?t(o):t;return n.replace&&(0,s.b$)(e)?e:{...o,...e}}return o}))};return{getNodes:()=>n.getState().nodes.map(e=>({...e})),getNode:t=>e(t)?.internals.userNode,getInternalNode:e,getEdges:()=>{let{edges:e=[]}=n.getState();return e.map(e=>({...e}))},getEdge:e=>n.getState().edgeLookup.get(e),setNodes:t,setEdges:r,addNodes:e=>{let t=Array.isArray(e)?e:[e];o.nodeQueue.push(e=>[...e,...t])},addEdges:e=>{let t=Array.isArray(e)?e:[e];o.edgeQueue.push(e=>[...e,...t])},toObject:()=>{let{nodes:e=[],edges:t=[],transform:o}=n.getState(),[r,a,i]=o;return{nodes:e.map(e=>({...e})),edges:t.map(e=>({...e})),viewport:{x:r,y:a,zoom:i}}},deleteElements:async({nodes:e=[],edges:t=[]})=>{let{nodes:o,edges:r,onNodesDelete:a,onEdgesDelete:i,triggerNodeChanges:l,triggerEdgeChanges:d,onDelete:c,onBeforeDelete:u}=n.getState(),{nodes:g,edges:f}=await (0,s.Tq)({nodesToRemove:e,edgesToRemove:t,nodes:o,edges:r,onBeforeDelete:u}),p=f.length>0,m=g.length>0;if(p){let e=f.map(U);i?.(f),d(e)}if(m){let e=g.map(U);a?.(g),l(e)}return(m||p)&&c?.({nodes:g,edges:f}),{deletedNodes:g,deletedEdges:f}},getIntersectingNodes:(e,t=!0,o)=>{let r=(0,s.mW)(e),i=r?e:a(e),l=void 0!==o;return i?(o||n.getState().nodes).filter(o=>{let a=n.getState().nodeLookup.get(o.id);if(a&&!r&&(o.id===e.id||!a.internals.positionAbsolute))return!1;let d=(0,s.kM)(l?o:a),c=(0,s.X6)(d,i);return t&&c>0||c>=d.width*d.height||c>=i.width*i.height}):[]},isNodeIntersecting:(e,t,n=!0)=>{let o=(0,s.mW)(e)?e:a(e);if(!o)return!1;let r=(0,s.X6)(o,t);return n&&r>0||r>=t.width*t.height||r>=o.width*o.height},updateNode:i,updateNodeData:(e,t,n={replace:!1})=>{i(e,e=>{let o="function"==typeof t?t(e):t;return n.replace?{...e,data:o}:{...e,data:{...e.data,...o}}},n)},updateEdge:l,updateEdgeData:(e,t,n={replace:!1})=>{l(e,e=>{let o="function"==typeof t?t(e):t;return n.replace?{...e,data:o}:{...e,data:{...e.data,...o}}},n)},getNodesBounds:e=>{let{nodeLookup:t,nodeOrigin:o}=n.getState();return(0,s.Jo)(e,{nodeLookup:t,nodeOrigin:o})},getHandleConnections:({type:e,id:t,nodeId:o})=>Array.from(n.getState().connectionLookup.get(`${o}-${e}${t?`-${t}`:""}`)?.values()??[]),getNodeConnections:({type:e,handleId:t,nodeId:o})=>Array.from(n.getState().connectionLookup.get(`${o}${e?t?`-${e}-${t}`:`-${e}`:""}`)?.values()??[]),fitView:async e=>{let t=n.getState().fitViewResolver??(0,s.YN)();return n.setState({fitViewQueued:!0,fitViewOptions:e,fitViewResolver:t}),o.nodeQueue.push(e=>[...e]),t.promise}}},[]);return(0,i.useMemo)(()=>({...a,...t,viewportInitialized:r}),[r])}let ei=e=>e.selected,el="u">typeof window?window:void 0,es={position:"absolute",width:"100%",height:"100%",top:0,left:0},ed=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function ec({onPaneContextMenu:e,zoomOnScroll:t=!0,zoomOnPinch:n=!0,panOnScroll:o=!1,panOnScrollSpeed:r=.5,panOnScrollMode:l=s.ny.Free,zoomOnDoubleClick:d=!0,panOnDrag:u=!0,defaultViewport:g,translateExtent:f,minZoom:p,maxZoom:y,zoomActivationKeyCode:x,preventScrolling:b=!0,children:v,noWheelClassName:w,noPanClassName:S,onViewportChange:C,isControlledViewport:E,paneClickDistance:k,selectionOnDrag:N}){let M,P=h(),j=(0,i.useRef)(null),{userSelectionActive:_,lib:D,connectionInProgress:A}=m(ed,c.x),R=H(x),I=(0,i.useRef)();M=h(),(0,i.useEffect)(()=>{let e=()=>{if(!j.current||!(j.current.checkVisibility?.()??!0))return!1;let e=(0,s.Eo)(j.current);(0===e.height||0===e.width)&&M.getState().onError?.("004",s.xc.error004()),M.setState({width:e.width||500,height:e.height||500})};if(j.current){e(),window.addEventListener("resize",e);let t=new ResizeObserver(()=>e());return t.observe(j.current),()=>{window.removeEventListener("resize",e),t&&j.current&&t.unobserve(j.current)}}},[]);let O=(0,i.useCallback)(e=>{C?.({x:e[0],y:e[1],zoom:e[2]}),E||P.setState({transform:e})},[C,E]);return(0,i.useEffect)(()=>{if(j.current){I.current=(0,s.kO)({domNode:j.current,minZoom:p,maxZoom:y,translateExtent:f,viewport:g,onDraggingChange:e=>P.setState(t=>t.paneDragging===e?t:{paneDragging:e}),onPanZoomStart:(e,t)=>{let{onViewportChangeStart:n,onMoveStart:o}=P.getState();o?.(e,t),n?.(t)},onPanZoom:(e,t)=>{let{onViewportChange:n,onMove:o}=P.getState();o?.(e,t),n?.(t)},onPanZoomEnd:(e,t)=>{let{onViewportChangeEnd:n,onMoveEnd:o}=P.getState();o?.(e,t),n?.(t)}});let{x:e,y:t,zoom:n}=I.current.getViewport();return P.setState({panZoom:I.current,transform:[e,t,n],domNode:j.current.closest(".react-flow")}),()=>{I.current?.destroy()}}},[]),(0,i.useEffect)(()=>{I.current?.update({onPaneContextMenu:e,zoomOnScroll:t,zoomOnPinch:n,panOnScroll:o,panOnScrollSpeed:r,panOnScrollMode:l,zoomOnDoubleClick:d,panOnDrag:u,zoomActivationKeyPressed:R,preventScrolling:b,noPanClassName:S,userSelectionActive:_,noWheelClassName:w,lib:D,onTransformChange:O,connectionInProgress:A,selectionOnDrag:N,paneClickDistance:k})},[e,t,n,o,r,l,d,u,R,b,S,_,w,D,O,A,N,k]),(0,a.jsx)("div",{className:"react-flow__renderer",ref:j,style:es,children:v})}let eu=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function eg(){let{userSelectionActive:e,userSelectionRect:t}=m(eu,c.x);return e&&t?(0,a.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}let ef=(e,t)=>n=>{n.target===t.current&&e?.(n)},ep=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,connectionInProgress:e.connection.inProgress,dragging:e.paneDragging,panBy:e.panBy,autoPanSpeed:e.autoPanSpeed});function em({isSelecting:e,selectionKeyPressed:t,selectionMode:n=s.Qc.Full,panOnDrag:o,autoPanOnSelection:r,paneClickDistance:d,selectionOnDrag:u,onSelectionStart:g,onSelectionEnd:f,onPaneClick:p,onPaneContextMenu:y,onPaneScroll:x,onPaneMouseEnter:b,onPaneMouseMove:v,onPaneMouseLeave:w,children:S}){let C=(0,i.useRef)(0),E=h(),{userSelectionActive:k,elementsSelectable:N,dragging:M,connectionInProgress:P,panBy:j,autoPanSpeed:_}=m(ep,c.x),D=N&&(e||k),A=(0,i.useRef)(null),R=(0,i.useRef)(),I=(0,i.useRef)(new Set),O=(0,i.useRef)(new Set),L=(0,i.useRef)(!1),z=(0,i.useRef)({x:0,y:0}),$=(0,i.useRef)(!1),B=e=>{if(L.current||P){L.current=!1;return}p?.(e),E.getState().resetSelectedElements(),E.setState({nodesSelectionActive:!1})};function V(e,t){let{userSelectionRect:o}=E.getState();if(!o)return;let{transform:r,nodeLookup:a,edgeLookup:i,connectionLookup:l,triggerNodeChanges:d,triggerEdgeChanges:c,defaultEdgeOptions:u}=E.getState(),g={x:o.startX,y:o.startY},{x:f,y:p}=(0,s.zj)(g,r),m={startX:g.x,startY:g.y,x:e<f?e:f,y:t<p?t:p,width:Math.abs(e-f),height:Math.abs(t-p)},h=I.current,y=O.current;I.current=new Set((0,s.U$)(a,m,r,n===s.Qc.Partial,!0).map(e=>e.id)),O.current=new Set;let x=u?.selectable??!0;for(let e of I.current){let t=l.get(e);if(t)for(let{edgeId:e}of t.values()){let t=i.get(e);t&&(t.selectable??x)&&O.current.add(e)}}(0,s._s)(h,I.current)||d(Y(a,I.current,!0)),(0,s._s)(y,O.current)||c(Y(i,O.current)),E.setState({userSelectionRect:m,userSelectionActive:!0,nodesSelectionActive:!1})}let H=()=>{cancelAnimationFrame(C.current),C.current=0,$.current=!1};(0,i.useEffect)(()=>()=>H(),[]);let F=!0===o||Array.isArray(o)&&o.includes(0);return(0,a.jsxs)("div",{className:(0,l.A)(["react-flow__pane",{draggable:F,dragging:M,selection:e}]),onClick:D?void 0:ef(B,A),onContextMenu:ef(e=>{Array.isArray(o)&&o?.includes(2)?e.preventDefault():y?.(e)},A),onWheel:ef(x?e=>x(e):void 0,A),onPointerEnter:D?void 0:b,onPointerMove:D?e=>{let{userSelectionRect:n,transform:o,resetSelectedElements:a}=E.getState();if(!R.current||!n)return;let{x:i,y:l}=(0,s.q1)(e.nativeEvent,R.current);z.current={x:i,y:l};let c=(0,s.zj)({x:n.startX,y:n.startY},o);if(!L.current){if(Math.hypot(i-c.x,l-c.y)<=(t?0:d))return;a(),g?.(e)}L.current=!0,$.current||(!function e(){if(!r||!R.current)return;let[t,n]=(0,s._7)(z.current,R.current,_);j({x:t,y:n}).then(t=>{if(!L.current||!t){C.current=requestAnimationFrame(e);return}let{x:n,y:o}=z.current;V(n,o),C.current=requestAnimationFrame(e)})}(),$.current=!0),V(i,l)}:v,onPointerUp:D?e=>{0===e.button&&(e.target?.releasePointerCapture?.(e.pointerId),!k&&e.target===A.current&&E.getState().userSelectionRect&&B?.(e),E.setState({userSelectionActive:!1,userSelectionRect:null}),L.current&&(f?.(e),E.setState({nodesSelectionActive:I.current.size>0})),H())}:void 0,onPointerCancel:D?e=>{e.target?.releasePointerCapture?.(e.pointerId),H()}:void 0,onPointerDownCapture:D?n=>{let{domNode:o,transform:r}=E.getState();if(R.current=o?.getBoundingClientRect(),!R.current)return;let a=n.target===A.current;if(!a&&n.target.closest(".nokey")||!e||!(u&&a||t)||0!==n.button||!n.isPrimary)return;n.target?.setPointerCapture?.(n.pointerId),L.current=!1;let{x:i,y:l}=(0,s.q1)(n.nativeEvent,R.current),d=(0,s.Ff)({x:i,y:l},r);E.setState({userSelectionRect:{width:0,height:0,startX:d.x,startY:d.y,x:i,y:l}}),a||(n.stopPropagation(),n.preventDefault())}:void 0,onClickCapture:D?e=>{L.current&&(e.stopPropagation(),L.current=!1)}:void 0,onPointerLeave:w,ref:A,style:es,children:[S,(0,a.jsx)(eg,{})]})}function eh({id:e,store:t,unselect:n=!1,nodeRef:o}){let{addSelectedNodes:r,unselectNodesAndEdges:a,multiSelectionActive:i,nodeLookup:l,onError:d}=t.getState(),c=l.get(e);c?(t.setState({nodesSelectionActive:!1}),c.selected?(n||c.selected&&i)&&(a({nodes:[c],edges:[]}),requestAnimationFrame(()=>o?.current?.blur())):r([e])):d?.("012",s.xc.error012(e))}function ey({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:o,nodeId:r,isSelectable:a,nodeClickDistance:l}){let d=h(),[c,u]=(0,i.useState)(!1),g=(0,i.useRef)();return(0,i.useEffect)(()=>{g.current=(0,s.I$)({getStoreItems:()=>d.getState(),onNodeMouseDown:t=>{eh({id:t,store:d,nodeRef:e})},onDragStart:()=>{u(!0)},onDragStop:()=>{u(!1)}})},[]),(0,i.useEffect)(()=>{if(!t&&e.current&&g.current)return g.current.update({noDragClassName:n,handleSelector:o,domNode:e.current,isSelectable:a,nodeId:r,nodeClickDistance:l}),()=>{g.current?.destroy()}},[n,o,t,a,e,r,l]),c}function ex(){let e=h();return(0,i.useCallback)(t=>{let{nodeExtent:n,snapToGrid:o,snapGrid:r,nodesDraggable:a,onError:i,updateNodePositions:l,nodeLookup:d,nodeOrigin:c}=e.getState(),u=new Map,g=e=>e.selected&&(e.draggable||a&&void 0===e.draggable),f=o?r[0]:5,p=o?r[1]:5,m=t.direction.x*f*t.factor,h=t.direction.y*p*t.factor;for(let[,e]of d){if(!g(e))continue;let t={x:e.internals.positionAbsolute.x+m,y:e.internals.positionAbsolute.y+h};o&&(t=(0,s.s_)(t,r));let{position:a,positionAbsolute:l}=(0,s.aE)({nodeId:e.id,nextPosition:t,nodeLookup:d,nodeExtent:n,nodeOrigin:c,onError:i});e.position=a,e.internals.positionAbsolute=l,u.set(e.id,e)}l(u)},[])}let eb=(0,i.createContext)(null),ev=eb.Provider;eb.Consumer;let ew=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),eS=(0,i.memo)(J(function({type:e="source",position:t=s.yX.Top,isValidConnection:n,isConnectable:o=!0,isConnectableStart:r=!0,isConnectableEnd:d=!0,id:u,onConnect:g,children:f,className:p,onMouseDown:y,onTouchStart:x,...b},v){let w=u||null,S="target"===e,C=h(),E=(0,i.useContext)(eb),{connectOnClick:k,noPanClassName:N,rfId:M}=m(ew,c.x),{connectingFrom:P,connectingTo:j,clickConnecting:_,isPossibleEndHandle:D,connectionInProcess:A,clickConnectionInProcess:R,valid:I}=m(t=>{let{connectionClickStartHandle:n,connectionMode:o,connection:r}=t,{fromHandle:a,toHandle:i,isValid:l}=r,d=i?.nodeId===E&&i?.id===w&&i?.type===e;return{connectingFrom:a?.nodeId===E&&a?.id===w&&a?.type===e,connectingTo:d,clickConnecting:n?.nodeId===E&&n?.id===w&&n?.type===e,isPossibleEndHandle:o===s.WZ.Strict?a?.type!==e:E!==a?.nodeId||w!==a?.id,connectionInProcess:!!a,clickConnectionInProcess:!!n,valid:d&&l}},c.x);E||C.getState().onError?.("010",s.xc.error010());let O=e=>{let{defaultEdgeOptions:t,onConnect:n,hasDefaultEdges:o}=C.getState(),r={...t,...e};if(o){let{edges:e,setEdges:t,onError:n}=C.getState();t(function(e,t,n={}){return(0,s.rN)(e,t,{...n,onError:n.onError??q})}(r,e,{onError:n}))}n?.(r),g?.(r)},L=e=>{if(!E)return;let t=(0,s.Er)(e.nativeEvent);if(r&&(t&&0===e.button||!t)){let t=C.getState();s.aQ.onPointerDown(e.nativeEvent,{handleDomNode:e.currentTarget,autoPanOnConnect:t.autoPanOnConnect,connectionMode:t.connectionMode,connectionRadius:t.connectionRadius,domNode:t.domNode,nodeLookup:t.nodeLookup,lib:t.lib,isTarget:S,handleId:w,nodeId:E,flowId:t.rfId,panBy:t.panBy,cancelConnection:t.cancelConnection,onConnectStart:t.onConnectStart,onConnectEnd:(...e)=>C.getState().onConnectEnd?.(...e),updateConnection:t.updateConnection,onConnect:O,isValidConnection:n||((...e)=>C.getState().isValidConnection?.(...e)??!0),getTransform:()=>C.getState().transform,getFromHandle:()=>C.getState().connection.fromHandle,autoPanSpeed:t.autoPanSpeed,dragThreshold:t.connectionDragThreshold})}t?y?.(e):x?.(e)};return(0,a.jsx)("div",{"data-handleid":w,"data-nodeid":E,"data-handlepos":t,"data-id":`${M}-${E}-${w}-${e}`,className:(0,l.A)(["react-flow__handle",`react-flow__handle-${t}`,"nodrag",N,p,{source:!S,target:S,connectable:o,connectablestart:r,connectableend:d,clickconnecting:_,connectingfrom:P,connectingto:j,valid:I,connectionindicator:o&&(!A||D)&&(A||R?d:r)}]),onMouseDown:L,onTouchStart:L,onClick:k?t=>{let{onClickConnectStart:o,onClickConnectEnd:a,connectionClickStartHandle:i,connectionMode:l,isValidConnection:d,lib:c,rfId:u,nodeLookup:g,connection:f}=C.getState();if(!E||!i&&!r)return;if(!i){o?.(t.nativeEvent,{nodeId:E,handleId:w,handleType:e}),C.setState({connectionClickStartHandle:{nodeId:E,type:e,id:w}});return}let p=(0,s.oj)(t.target),m=n||d,{connection:h,isValid:y}=s.aQ.isValid(t.nativeEvent,{handle:{nodeId:E,id:w,type:e},connectionMode:l,fromNodeId:i.nodeId,fromHandleId:i.id||null,fromType:i.type,isValidConnection:m,flowId:u,doc:p,lib:c,nodeLookup:g});y&&h&&O(h);let x=structuredClone(f);delete x.inProgress,x.toPosition=x.toHandle?x.toHandle.position:null,a?.(t,x),C.setState({connectionClickStartHandle:null})}:void 0,ref:v,...b,children:f})})),eC={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},eE={input:function({data:e,isConnectable:t,sourcePosition:n=s.yX.Bottom}){return(0,a.jsxs)(a.Fragment,{children:[e?.label,(0,a.jsx)(eS,{type:"source",position:n,isConnectable:t})]})},default:function({data:e,isConnectable:t,targetPosition:n=s.yX.Top,sourcePosition:o=s.yX.Bottom}){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(eS,{type:"target",position:n,isConnectable:t}),e?.label,(0,a.jsx)(eS,{type:"source",position:o,isConnectable:t})]})},output:function({data:e,isConnectable:t,targetPosition:n=s.yX.Top}){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(eS,{type:"target",position:n,isConnectable:t}),e?.label]})},group:function(){return null}},ek=e=>{let{width:t,height:n,x:o,y:r}=(0,s.aZ)(e.nodeLookup,{filter:e=>!!e.selected});return{width:(0,s.kf)(t)?t:null,height:(0,s.kf)(n)?n:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${o}px,${r}px)`}};function eN({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){let o=h(),{width:r,height:s,transformString:d,userSelectionActive:u}=m(ek,c.x),g=ex(),f=(0,i.useRef)(null);(0,i.useEffect)(()=>{n||f.current?.focus({preventScroll:!0})},[n]);let p=!u&&null!==r&&null!==s;if(ey({nodeRef:f,disabled:!p}),!p)return null;let y=e?t=>{e(t,o.getState().nodes.filter(e=>e.selected))}:void 0;return(0,a.jsx)("div",{className:(0,l.A)(["react-flow__nodesselection","react-flow__container",t]),style:{transform:d},children:(0,a.jsx)("div",{ref:f,className:"react-flow__nodesselection-rect",onContextMenu:y,tabIndex:n?void 0:-1,onKeyDown:n?void 0:e=>{Object.prototype.hasOwnProperty.call(eC,e.key)&&(e.preventDefault(),g({direction:eC[e.key],factor:e.shiftKey?4:1}))},style:{width:r,height:s}})})}let eM="u">typeof window?window:void 0,eP=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function ej({children:e,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:o,onPaneMouseLeave:r,onPaneContextMenu:l,onPaneScroll:s,paneClickDistance:d,deleteKeyCode:u,selectionKeyCode:g,selectionOnDrag:f,selectionMode:p,onSelectionStart:y,onSelectionEnd:x,multiSelectionKeyCode:b,panActivationKeyCode:v,zoomActivationKeyCode:w,elementsSelectable:S,zoomOnScroll:C,zoomOnPinch:E,panOnScroll:k,panOnScrollSpeed:N,panOnScrollMode:M,zoomOnDoubleClick:P,panOnDrag:j,autoPanOnSelection:_,defaultViewport:D,translateExtent:A,minZoom:R,maxZoom:I,preventScrolling:O,onSelectionContextMenu:L,noWheelClassName:z,noPanClassName:$,disableKeyboardA11y:B,onViewportChange:V,isControlledViewport:F}){let{nodesSelectionActive:T,userSelectionActive:Z}=m(eP,c.x),X=H(g,{target:eM}),W=H(v,{target:eM}),K=W||j,Y=W||k,Q=f&&!0!==K,U=X||Z||Q;return!function({deleteKeyCode:e,multiSelectionKeyCode:t}){let n=h(),{deleteElements:o}=ea(),r=H(e,{actInsideInputWithModifier:!1}),a=H(t,{target:el});(0,i.useEffect)(()=>{if(r){let{edges:e,nodes:t}=n.getState();o({nodes:t.filter(ei),edges:e.filter(ei)}),n.setState({nodesSelectionActive:!1})}},[r]),(0,i.useEffect)(()=>{n.setState({multiSelectionActive:a})},[a])}({deleteKeyCode:u,multiSelectionKeyCode:b}),(0,a.jsx)(ec,{onPaneContextMenu:l,elementsSelectable:S,zoomOnScroll:C,zoomOnPinch:E,panOnScroll:Y,panOnScrollSpeed:N,panOnScrollMode:M,zoomOnDoubleClick:P,panOnDrag:!X&&K,defaultViewport:D,translateExtent:A,minZoom:R,maxZoom:I,zoomActivationKeyCode:w,preventScrolling:O,noWheelClassName:z,noPanClassName:$,onViewportChange:V,isControlledViewport:F,paneClickDistance:d,selectionOnDrag:Q,children:(0,a.jsxs)(em,{onSelectionStart:y,onSelectionEnd:x,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:o,onPaneMouseLeave:r,onPaneContextMenu:l,onPaneScroll:s,panOnDrag:K,autoPanOnSelection:_,isSelecting:!!U,selectionMode:p,selectionKeyPressed:X,paneClickDistance:d,selectionOnDrag:Q,children:[e,T&&(0,a.jsx)(eN,{onSelectionContextMenu:L,noPanClassName:$,disableKeyboardA11y:B})]})})}ej.displayName="FlowRenderer";let e_=(0,i.memo)(ej),eD=e=>e.updateNodeInternals;var eA=(0,i.memo)(function({id:e,onClick:t,onMouseEnter:n,onMouseMove:o,onMouseLeave:r,onContextMenu:d,onDoubleClick:u,nodesDraggable:g,elementsSelectable:f,nodesConnectable:p,nodesFocusable:y,resizeObserver:x,noDragClassName:v,noPanClassName:w,disableKeyboardA11y:S,rfId:C,nodeTypes:E,nodeClickDistance:k,onError:N}){let{node:M,internals:P,isParent:j}=m(t=>{let n=t.nodeLookup.get(e),o=t.parentLookup.has(e);return{node:n,internals:n.internals,isParent:o}},c.x),_=M.type||"default",D=E?.[_]||eE[_];void 0===D&&(N?.("003",s.xc.error003(_)),_="default",D=E?.default||eE.default);let A=!!(M.draggable||g&&void 0===M.draggable),R=!!(M.selectable||f&&void 0===M.selectable),I=!!(M.connectable||p&&void 0===M.connectable),O=!!(M.focusable||y&&void 0===M.focusable),L=h(),z=(0,s.QE)(M),$=function({node:e,nodeType:t,hasDimensions:n,resizeObserver:o}){let r=h(),a=(0,i.useRef)(null),l=(0,i.useRef)(null),s=(0,i.useRef)(e.sourcePosition),d=(0,i.useRef)(e.targetPosition),c=(0,i.useRef)(t),u=n&&!!e.internals.handleBounds;return(0,i.useEffect)(()=>{!a.current||e.hidden||u&&l.current===a.current||(l.current&&o?.unobserve(l.current),o?.observe(a.current),l.current=a.current)},[u,e.hidden]),(0,i.useEffect)(()=>()=>{l.current&&(o?.unobserve(l.current),l.current=null)},[]),(0,i.useEffect)(()=>{if(a.current){let n=c.current!==t,o=s.current!==e.sourcePosition,i=d.current!==e.targetPosition;(n||o||i)&&(c.current=t,s.current=e.sourcePosition,d.current=e.targetPosition,r.getState().updateNodeInternals(new Map([[e.id,{id:e.id,nodeElement:a.current,force:!0}]])))}},[e.id,t,e.sourcePosition,e.targetPosition]),a}({node:M,nodeType:_,hasDimensions:z,resizeObserver:x}),B=ey({nodeRef:$,disabled:M.hidden||!A,noDragClassName:v,handleSelector:M.dragHandle,nodeId:e,isSelectable:R,nodeClickDistance:k}),V=ex();if(M.hidden)return null;let H=(0,s.uD)(M),F=void 0===M.internals.handleBounds?{width:M.width??M.initialWidth??M.style?.width,height:M.height??M.initialHeight??M.style?.height}:{width:M.width??M.style?.width,height:M.height??M.style?.height},T=R||A||t||n||o||r,Z=n?e=>n(e,{...P.userNode}):void 0,X=o?e=>o(e,{...P.userNode}):void 0,W=r?e=>r(e,{...P.userNode}):void 0,K=d?e=>d(e,{...P.userNode}):void 0,Y=u?e=>u(e,{...P.userNode}):void 0;return(0,a.jsx)("div",{className:(0,l.A)(["react-flow__node",`react-flow__node-${_}`,{[w]:A},M.className,{selected:M.selected,selectable:R,parent:j,draggable:A,dragging:B}]),ref:$,style:{zIndex:P.z,transform:`translate(${P.positionAbsolute.x}px,${P.positionAbsolute.y}px)`,pointerEvents:T?"all":"none",visibility:z?"visible":"hidden",...M.style,...F},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:Z,onMouseMove:X,onMouseLeave:W,onContextMenu:K,onClick:n=>{let{selectNodesOnDrag:o,nodeDragThreshold:r}=L.getState();R&&(!o||!A||r>0)&&eh({id:e,store:L,nodeRef:$}),t&&t(n,{...P.userNode})},onDoubleClick:Y,onKeyDown:O?t=>{if(!(0,s.v5)(t.nativeEvent)&&!S){if(s.tn.includes(t.key)&&R)eh({id:e,store:L,unselect:"Escape"===t.key,nodeRef:$});else if(A&&M.selected&&Object.prototype.hasOwnProperty.call(eC,t.key)){t.preventDefault();let{ariaLabelConfig:e}=L.getState();L.setState({ariaLiveMessage:e["node.a11yDescription.ariaLiveMessage"]({direction:t.key.replace("Arrow","").toLowerCase(),x:~~P.positionAbsolute.x,y:~~P.positionAbsolute.y})}),V({direction:eC[t.key],factor:t.shiftKey?4:1})}}}:void 0,tabIndex:O?0:void 0,onFocus:O?()=>{if(S||!$.current?.matches(":focus-visible"))return;let{transform:t,width:n,height:o,autoPanOnNodeFocus:r,setCenter:a}=L.getState();!r||(0,s.U$)(new Map([[e,M]]),{x:0,y:0,width:n,height:o},t,!0).length>0||a(M.position.x+H.width/2,M.position.y+H.height/2,{zoom:t[2]})}:void 0,role:M.ariaRole??(O?"group":void 0),"aria-roledescription":"node","aria-describedby":S?void 0:`${b}-${C}`,"aria-label":M.ariaLabel,...M.domAttributes,children:(0,a.jsx)(ev,{value:e,children:(0,a.jsx)(D,{id:e,data:M.data,type:_,positionAbsoluteX:P.positionAbsolute.x,positionAbsoluteY:P.positionAbsolute.y,selected:M.selected??!1,selectable:R,draggable:A,deletable:M.deletable??!0,isConnectable:I,sourcePosition:M.sourcePosition,targetPosition:M.targetPosition,dragging:B,dragHandle:M.dragHandle,zIndex:P.z,parentId:M.parentId,...H})})})});let eR=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function eI(e){var t;let{nodesDraggable:n,nodesConnectable:o,nodesFocusable:r,elementsSelectable:l,onError:d}=m(eR,c.x),u=(t=e.onlyRenderVisibleElements,m((0,i.useCallback)(e=>t?(0,s.U$)(e.nodeLookup,{x:0,y:0,width:e.width,height:e.height},e.transform,!0).map(e=>e.id):Array.from(e.nodeLookup.keys()),[t]),c.x)),g=function(){let e=m(eD),[t]=(0,i.useState)(()=>"u"<typeof ResizeObserver?null:new ResizeObserver(t=>{let n=new Map;t.forEach(e=>{let t=e.target.getAttribute("data-id");n.set(t,{id:t,nodeElement:e.target,force:!0})}),e(n)}));return(0,i.useEffect)(()=>()=>{t?.disconnect()},[t]),t}();return(0,a.jsx)("div",{className:"react-flow__nodes",style:es,children:u.map(t=>(0,a.jsx)(eA,{id:t,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:g,nodesDraggable:n,nodesConnectable:o,nodesFocusable:r,elementsSelectable:l,nodeClickDistance:e.nodeClickDistance,onError:d},t))})}eI.displayName="NodeRenderer";let eO=(0,i.memo)(eI),eL={[s.TG.Arrow]:({color:e="none",strokeWidth:t=1})=>{let n={strokeWidth:t,...e&&{stroke:e}};return(0,a.jsx)("polyline",{className:"arrow",style:n,strokeLinecap:"round",fill:"none",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4"})},[s.TG.ArrowClosed]:({color:e="none",strokeWidth:t=1})=>{let n={strokeWidth:t,...e&&{stroke:e,fill:e}};return(0,a.jsx)("polyline",{className:"arrowclosed",style:n,strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"})}},ez=({id:e,type:t,color:n,width:o=12.5,height:r=12.5,markerUnits:l="strokeWidth",strokeWidth:d,orient:c="auto-start-reverse"})=>{let u,g=(u=h(),(0,i.useMemo)(()=>Object.prototype.hasOwnProperty.call(eL,t)?eL[t]:(u.getState().onError?.("009",s.xc.error009(t)),null),[t]));return g?(0,a.jsx)("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${o}`,markerHeight:`${r}`,viewBox:"-10 -10 20 20",markerUnits:l,orient:c,refX:"0",refY:"0",children:(0,a.jsx)(g,{color:n,strokeWidth:d})}):null},e$=({defaultColor:e,rfId:t})=>{let n=m(e=>e.edges),o=m(e=>e.defaultEdgeOptions),r=(0,i.useMemo)(()=>(0,s.Hm)(n,{id:t,defaultColor:e,defaultMarkerStart:o?.markerStart,defaultMarkerEnd:o?.markerEnd}),[n,o,t,e]);return r.length?(0,a.jsx)("svg",{className:"react-flow__marker","aria-hidden":"true",children:(0,a.jsx)("defs",{children:r.map(e=>(0,a.jsx)(ez,{id:e.id,type:e.type,color:e.color,width:e.width,height:e.height,markerUnits:e.markerUnits,strokeWidth:e.strokeWidth,orient:e.orient},e.id))})}):null};e$.displayName="MarkerDefinitions";var eB=(0,i.memo)(e$);function eV({x:e,y:t,label:n,labelStyle:o,labelShowBg:r=!0,labelBgStyle:s,labelBgPadding:d=[2,4],labelBgBorderRadius:c=2,children:u,className:g,...f}){let[p,m]=(0,i.useState)({x:1,y:0,width:0,height:0}),h=(0,l.A)(["react-flow__edge-textwrapper",g]),y=(0,i.useRef)(null);return((0,i.useEffect)(()=>{if(y.current){let e=y.current.getBBox();m({x:e.x,y:e.y,width:e.width,height:e.height})}},[n]),n)?(0,a.jsxs)("g",{transform:`translate(${e-p.width/2} ${t-p.height/2})`,className:h,visibility:p.width?"visible":"hidden",...f,children:[r&&(0,a.jsx)("rect",{width:p.width+2*d[0],x:-d[0],y:-d[1],height:p.height+2*d[1],className:"react-flow__edge-textbg",style:s,rx:c,ry:c}),(0,a.jsx)("text",{className:"react-flow__edge-text",y:p.height/2,dy:"0.3em",ref:y,style:o,children:n}),u]}):null}eV.displayName="EdgeText";let eH=(0,i.memo)(eV);function eF({path:e,labelX:t,labelY:n,label:o,labelStyle:r,labelShowBg:i,labelBgStyle:d,labelBgPadding:c,labelBgBorderRadius:u,interactionWidth:g=20,...f}){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("path",{...f,d:e,fill:"none",className:(0,l.A)(["react-flow__edge-path",f.className])}),g?(0,a.jsx)("path",{d:e,fill:"none",strokeOpacity:0,strokeWidth:g,className:"react-flow__edge-interaction"}):null,o&&(0,s.kf)(t)&&(0,s.kf)(n)?(0,a.jsx)(eH,{x:t,y:n,label:o,labelStyle:r,labelShowBg:i,labelBgStyle:d,labelBgPadding:c,labelBgBorderRadius:u}):null]})}function eT({pos:e,x1:t,y1:n,x2:o,y2:r}){return e===s.yX.Left||e===s.yX.Right?[.5*(t+o),n]:[t,.5*(n+r)]}function eZ({sourceX:e,sourceY:t,sourcePosition:n=s.yX.Bottom,targetX:o,targetY:r,targetPosition:a=s.yX.Top}){let[i,l]=eT({pos:n,x1:e,y1:t,x2:o,y2:r}),[d,c]=eT({pos:a,x1:o,y1:r,x2:e,y2:t}),[u,g,f,p]=(0,s.e_)({sourceX:e,sourceY:t,targetX:o,targetY:r,sourceControlX:i,sourceControlY:l,targetControlX:d,targetControlY:c});return[`M${e},${t} C${i},${l} ${d},${c} ${o},${r}`,u,g,f,p]}function eX(e){return(0,i.memo)(({id:t,sourceX:n,sourceY:o,targetX:r,targetY:i,sourcePosition:l,targetPosition:s,label:d,labelStyle:c,labelShowBg:u,labelBgStyle:g,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:y,interactionWidth:x})=>{let[b,v,w]=eZ({sourceX:n,sourceY:o,sourcePosition:l,targetX:r,targetY:i,targetPosition:s}),S=e.isInternal?void 0:t;return(0,a.jsx)(eF,{id:S,path:b,labelX:v,labelY:w,label:d,labelStyle:c,labelShowBg:u,labelBgStyle:g,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:y,interactionWidth:x})})}let eW=eX({isInternal:!1}),eK=eX({isInternal:!0});function eY(e){return(0,i.memo)(({id:t,sourceX:n,sourceY:o,targetX:r,targetY:i,label:l,labelStyle:d,labelShowBg:c,labelBgStyle:u,labelBgPadding:g,labelBgBorderRadius:f,style:p,sourcePosition:m=s.yX.Bottom,targetPosition:h=s.yX.Top,markerEnd:y,markerStart:x,pathOptions:b,interactionWidth:v})=>{let[w,S,C]=(0,s.oN)({sourceX:n,sourceY:o,sourcePosition:m,targetX:r,targetY:i,targetPosition:h,borderRadius:b?.borderRadius,offset:b?.offset,stepPosition:b?.stepPosition}),E=e.isInternal?void 0:t;return(0,a.jsx)(eF,{id:E,path:w,labelX:S,labelY:C,label:l,labelStyle:d,labelShowBg:c,labelBgStyle:u,labelBgPadding:g,labelBgBorderRadius:f,style:p,markerEnd:y,markerStart:x,interactionWidth:v})})}eW.displayName="SimpleBezierEdge",eK.displayName="SimpleBezierEdgeInternal";let eQ=eY({isInternal:!1}),eU=eY({isInternal:!0});function eq(e){return(0,i.memo)(({id:t,...n})=>{let o=e.isInternal?void 0:t;return(0,a.jsx)(eQ,{...n,id:o,pathOptions:(0,i.useMemo)(()=>({borderRadius:0,offset:n.pathOptions?.offset}),[n.pathOptions?.offset])})})}eQ.displayName="SmoothStepEdge",eU.displayName="SmoothStepEdgeInternal";let eG=eq({isInternal:!1}),eJ=eq({isInternal:!0});function e0(e){return(0,i.memo)(({id:t,sourceX:n,sourceY:o,targetX:r,targetY:i,label:l,labelStyle:d,labelShowBg:c,labelBgStyle:u,labelBgPadding:g,labelBgBorderRadius:f,style:p,markerEnd:m,markerStart:h,interactionWidth:y})=>{let[x,b,v]=(0,s.ah)({sourceX:n,sourceY:o,targetX:r,targetY:i}),w=e.isInternal?void 0:t;return(0,a.jsx)(eF,{id:w,path:x,labelX:b,labelY:v,label:l,labelStyle:d,labelShowBg:c,labelBgStyle:u,labelBgPadding:g,labelBgBorderRadius:f,style:p,markerEnd:m,markerStart:h,interactionWidth:y})})}eG.displayName="StepEdge",eJ.displayName="StepEdgeInternal";let e1=e0({isInternal:!1}),e3=e0({isInternal:!0});function e2(e){return(0,i.memo)(({id:t,sourceX:n,sourceY:o,targetX:r,targetY:i,sourcePosition:l=s.yX.Bottom,targetPosition:d=s.yX.Top,label:c,labelStyle:u,labelShowBg:g,labelBgStyle:f,labelBgPadding:p,labelBgBorderRadius:m,style:h,markerEnd:y,markerStart:x,pathOptions:b,interactionWidth:v})=>{let[w,S,C]=(0,s.Fp)({sourceX:n,sourceY:o,sourcePosition:l,targetX:r,targetY:i,targetPosition:d,curvature:b?.curvature}),E=e.isInternal?void 0:t;return(0,a.jsx)(eF,{id:E,path:w,labelX:S,labelY:C,label:c,labelStyle:u,labelShowBg:g,labelBgStyle:f,labelBgPadding:p,labelBgBorderRadius:m,style:h,markerEnd:y,markerStart:x,interactionWidth:v})})}e1.displayName="StraightEdge",e3.displayName="StraightEdgeInternal";let e4=e2({isInternal:!1}),e5=e2({isInternal:!0});e4.displayName="BezierEdge",e5.displayName="BezierEdgeInternal";let e6={default:e5,straight:e3,step:eJ,smoothstep:eU,simplebezier:eK},e7={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null},e8="react-flow__edgeupdater";function e9({position:e,centerX:t,centerY:n,radius:o=10,onMouseDown:r,onMouseEnter:i,onMouseOut:d,type:c}){return(0,a.jsx)("circle",{onMouseDown:r,onMouseEnter:i,onMouseOut:d,className:(0,l.A)([e8,`${e8}-${c}`]),cx:e===s.yX.Left?t-o:e===s.yX.Right?t+o:t,cy:e===s.yX.Top?n-o:e===s.yX.Bottom?n+o:n,r:o,stroke:"transparent",fill:"transparent"})}function te({isReconnectable:e,reconnectRadius:t,edge:n,sourceX:o,sourceY:r,targetX:i,targetY:l,sourcePosition:d,targetPosition:c,onReconnect:u,onReconnectStart:g,onReconnectEnd:f,setReconnecting:p,setUpdateHover:m}){let y=h(),x=(e,t)=>{if(0!==e.button)return;let{autoPanOnConnect:o,domNode:r,connectionMode:a,connectionRadius:i,lib:l,onConnectStart:d,cancelConnection:c,nodeLookup:m,rfId:h,panBy:x,updateConnection:b}=y.getState(),v="target"===t.type;s.aQ.onPointerDown(e.nativeEvent,{autoPanOnConnect:o,connectionMode:a,connectionRadius:i,domNode:r,handleId:t.id,nodeId:t.nodeId,nodeLookup:m,isTarget:v,edgeUpdaterType:t.type,lib:l,flowId:h,cancelConnection:c,panBy:x,isValidConnection:(...e)=>y.getState().isValidConnection?.(...e)??!0,onConnect:e=>u?.(n,e),onConnectStart:(o,r)=>{p(!0),g?.(e,n,t.type),d?.(o,r)},onConnectEnd:(...e)=>y.getState().onConnectEnd?.(...e),onReconnectEnd:(e,o)=>{p(!1),f?.(e,n,t.type,o)},updateConnection:b,getTransform:()=>y.getState().transform,getFromHandle:()=>y.getState().connection.fromHandle,dragThreshold:y.getState().connectionDragThreshold,handleDomNode:e.currentTarget})},b=()=>m(!0),v=()=>m(!1);return(0,a.jsxs)(a.Fragment,{children:[(!0===e||"source"===e)&&(0,a.jsx)(e9,{position:d,centerX:o,centerY:r,radius:t,onMouseDown:e=>x(e,{nodeId:n.target,id:n.targetHandle??null,type:"target"}),onMouseEnter:b,onMouseOut:v,type:"source"}),(!0===e||"target"===e)&&(0,a.jsx)(e9,{position:c,centerX:i,centerY:l,radius:t,onMouseDown:e=>x(e,{nodeId:n.source,id:n.sourceHandle??null,type:"source"}),onMouseEnter:b,onMouseOut:v,type:"target"})]})}var tt=(0,i.memo)(function({id:e,edgesFocusable:t,edgesReconnectable:n,elementsSelectable:o,onClick:r,onDoubleClick:d,onContextMenu:u,onMouseEnter:g,onMouseMove:f,onMouseLeave:p,reconnectRadius:y,onReconnect:x,onReconnectStart:b,onReconnectEnd:w,rfId:S,edgeTypes:C,noPanClassName:E,onError:k,disableKeyboardA11y:N}){let M=m(t=>t.edgeLookup.get(e)),P=m(e=>e.defaultEdgeOptions),j=(M=P?{...P,...M}:M).type||"default",_=C?.[j]||e6[j];void 0===_&&(k?.("011",s.xc.error011(j)),j="default",_=C?.default||e6.default);let D=!!(M.focusable||t&&void 0===M.focusable),A=void 0!==x&&(M.reconnectable||n&&void 0===M.reconnectable),R=!!(M.selectable||o&&void 0===M.selectable),I=(0,i.useRef)(null),[O,L]=(0,i.useState)(!1),[z,$]=(0,i.useState)(!1),B=h(),{zIndex:V,sourceX:H,sourceY:F,targetX:T,targetY:Z,sourcePosition:X,targetPosition:W}=m((0,i.useCallback)(t=>{let n=t.nodeLookup.get(M.source),o=t.nodeLookup.get(M.target);if(!n||!o)return{zIndex:M.zIndex,...e7};let r=(0,s.b5)({id:e,sourceNode:n,targetNode:o,sourceHandle:M.sourceHandle||null,targetHandle:M.targetHandle||null,connectionMode:t.connectionMode,onError:k});return{zIndex:(0,s.qX)({selected:M.selected,zIndex:M.zIndex,sourceNode:n,targetNode:o,elevateOnSelect:t.elevateEdgesOnSelect,zIndexMode:t.zIndexMode}),...r||e7}},[M.source,M.target,M.sourceHandle,M.targetHandle,M.selected,M.zIndex]),c.x),K=(0,i.useMemo)(()=>M.markerStart?`url('#${(0,s.aW)(M.markerStart,S)}')`:void 0,[M.markerStart,S]),Y=(0,i.useMemo)(()=>M.markerEnd?`url('#${(0,s.aW)(M.markerEnd,S)}')`:void 0,[M.markerEnd,S]);if(M.hidden||null===H||null===F||null===T||null===Z)return null;let Q=d?e=>{d(e,{...M})}:void 0,U=u?e=>{u(e,{...M})}:void 0,q=g?e=>{g(e,{...M})}:void 0,G=f?e=>{f(e,{...M})}:void 0,J=p?e=>{p(e,{...M})}:void 0;return(0,a.jsx)("svg",{style:{zIndex:V},children:(0,a.jsxs)("g",{className:(0,l.A)(["react-flow__edge",`react-flow__edge-${j}`,M.className,E,{selected:M.selected,animated:M.animated,inactive:!R&&!r,updating:O,selectable:R}]),onClick:t=>{let{addSelectedEdges:n,unselectNodesAndEdges:o,multiSelectionActive:a}=B.getState();R&&(B.setState({nodesSelectionActive:!1}),M.selected&&a?(o({nodes:[],edges:[M]}),I.current?.blur()):n([e])),r&&r(t,M)},onDoubleClick:Q,onContextMenu:U,onMouseEnter:q,onMouseMove:G,onMouseLeave:J,onKeyDown:D?t=>{if(!N&&s.tn.includes(t.key)&&R){let{unselectNodesAndEdges:n,addSelectedEdges:o}=B.getState();"Escape"===t.key?(I.current?.blur(),n({edges:[M]})):o([e])}}:void 0,tabIndex:D?0:void 0,role:M.ariaRole??(D?"group":"img"),"aria-roledescription":"edge","data-id":e,"data-testid":`rf__edge-${e}`,"aria-label":null===M.ariaLabel?void 0:M.ariaLabel||`Edge from ${M.source} to ${M.target}`,"aria-describedby":D?`${v}-${S}`:void 0,ref:I,...M.domAttributes,children:[!z&&(0,a.jsx)(_,{id:e,source:M.source,target:M.target,type:M.type,selected:M.selected,animated:M.animated,selectable:R,deletable:M.deletable??!0,label:M.label,labelStyle:M.labelStyle,labelShowBg:M.labelShowBg,labelBgStyle:M.labelBgStyle,labelBgPadding:M.labelBgPadding,labelBgBorderRadius:M.labelBgBorderRadius,sourceX:H,sourceY:F,targetX:T,targetY:Z,sourcePosition:X,targetPosition:W,data:M.data,style:M.style,sourceHandleId:M.sourceHandle,targetHandleId:M.targetHandle,markerStart:K,markerEnd:Y,pathOptions:"pathOptions"in M?M.pathOptions:void 0,interactionWidth:M.interactionWidth}),A&&(0,a.jsx)(te,{edge:M,isReconnectable:A,reconnectRadius:y,onReconnect:x,onReconnectStart:b,onReconnectEnd:w,sourceX:H,sourceY:F,targetX:T,targetY:Z,sourcePosition:X,targetPosition:W,setUpdateHover:L,setReconnecting:$})]})})});let tn=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function to({defaultMarkerColor:e,onlyRenderVisibleElements:t,rfId:n,edgeTypes:o,noPanClassName:r,onReconnect:l,onEdgeContextMenu:d,onEdgeMouseEnter:u,onEdgeMouseMove:g,onEdgeMouseLeave:f,onEdgeClick:p,reconnectRadius:h,onEdgeDoubleClick:y,onReconnectStart:x,onReconnectEnd:b,disableKeyboardA11y:v}){let{edgesFocusable:w,edgesReconnectable:S,elementsSelectable:C,onError:E}=m(tn,c.x),k=m((0,i.useCallback)(e=>{if(!t)return e.edges.map(e=>e.id);let n=[];if(e.width&&e.height)for(let t of e.edges){let o=e.nodeLookup.get(t.source),r=e.nodeLookup.get(t.target);o&&r&&(0,s.uj)({sourceNode:o,targetNode:r,width:e.width,height:e.height,transform:e.transform})&&n.push(t.id)}return n},[t]),c.x);return(0,a.jsxs)("div",{className:"react-flow__edges",children:[(0,a.jsx)(eB,{defaultColor:e,rfId:n}),k.map(e=>(0,a.jsx)(tt,{id:e,edgesFocusable:w,edgesReconnectable:S,elementsSelectable:C,noPanClassName:r,onReconnect:l,onContextMenu:d,onMouseEnter:u,onMouseMove:g,onMouseLeave:f,onClick:p,reconnectRadius:h,onDoubleClick:y,onReconnectStart:x,onReconnectEnd:b,rfId:n,onError:E,edgeTypes:o,disableKeyboardA11y:v},e))]})}to.displayName="EdgeRenderer";let tr=(0,i.memo)(to),ta=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function ti({children:e}){let t=m(ta);return(0,a.jsx)("div",{className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:t},children:e})}let tl=e=>e.panZoom?.syncViewport;function ts(e){return e.connection.inProgress?{...e.connection,to:(0,s.Ff)(e.connection.to,e.transform)}:{...e.connection}}let td=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function tc({containerStyle:e,style:t,type:n,component:o}){let{nodesConnectable:r,width:i,height:d,isValid:u,inProgress:g}=m(td,c.x);return i&&r&&g?(0,a.jsx)("svg",{style:e,width:i,height:d,className:"react-flow__connectionline react-flow__container",children:(0,a.jsx)("g",{className:(0,l.A)(["react-flow__connection",(0,s.HF)(u)]),children:(0,a.jsx)(tu,{style:t,type:n,CustomComponent:o,isValid:u})})}):null}let tu=({style:e,type:t=s.Do.Bezier,CustomComponent:n,isValid:o})=>{let{inProgress:r,from:i,fromNode:l,fromHandle:d,fromPosition:u,to:g,toNode:f,toHandle:p,toPosition:h,pointer:y}=m(ts,c.x);if(!r)return;if(n)return(0,a.jsx)(n,{connectionLineType:t,connectionLineStyle:e,fromNode:l,fromHandle:d,fromX:i.x,fromY:i.y,toX:g.x,toY:g.y,fromPosition:u,toPosition:h,connectionStatus:(0,s.HF)(o),toNode:f,toHandle:p,pointer:y});let x="",b={sourceX:i.x,sourceY:i.y,sourcePosition:u,targetX:g.x,targetY:g.y,targetPosition:h};switch(t){case s.Do.Bezier:[x]=(0,s.Fp)(b);break;case s.Do.SimpleBezier:[x]=eZ(b);break;case s.Do.Step:[x]=(0,s.oN)({...b,borderRadius:0});break;case s.Do.SmoothStep:[x]=(0,s.oN)(b);break;default:[x]=(0,s.ah)(b)}return(0,a.jsx)("path",{d:x,fill:"none",className:"react-flow__connection-path",style:e})};tu.displayName="ConnectionLine";let tg={};function tf(e=tg){(0,i.useRef)(e),h(),(0,i.useEffect)(()=>{},[e])}function tp({nodeTypes:e,edgeTypes:t,onInit:n,onNodeClick:o,onEdgeClick:r,onNodeDoubleClick:l,onEdgeDoubleClick:s,onNodeMouseEnter:d,onNodeMouseMove:c,onNodeMouseLeave:u,onNodeContextMenu:g,onSelectionContextMenu:f,onSelectionStart:p,onSelectionEnd:y,connectionLineType:x,connectionLineStyle:b,connectionLineComponent:v,connectionLineContainerStyle:w,selectionKeyCode:S,selectionOnDrag:C,selectionMode:E,multiSelectionKeyCode:k,panActivationKeyCode:N,zoomActivationKeyCode:M,deleteKeyCode:P,onlyRenderVisibleElements:j,elementsSelectable:_,defaultViewport:D,translateExtent:A,minZoom:R,maxZoom:I,preventScrolling:O,defaultMarkerColor:L,zoomOnScroll:z,zoomOnPinch:$,panOnScroll:B,panOnScrollSpeed:V,panOnScrollMode:H,zoomOnDoubleClick:F,panOnDrag:T,autoPanOnSelection:Z,onPaneClick:X,onPaneMouseEnter:W,onPaneMouseMove:K,onPaneMouseLeave:Y,onPaneScroll:Q,onPaneContextMenu:U,paneClickDistance:q,nodeClickDistance:G,onEdgeContextMenu:J,onEdgeMouseEnter:ee,onEdgeMouseMove:et,onEdgeMouseLeave:en,reconnectRadius:eo,onReconnect:er,onReconnectStart:ei,onReconnectEnd:el,noDragClassName:es,noWheelClassName:ed,noPanClassName:ec,disableKeyboardA11y:eu,nodeExtent:eg,rfId:ef,viewport:ep,onViewportChange:em}){let eh,ey,ex,eb;return tf(e),tf(t),h(),(0,i.useRef)(!1),(0,i.useEffect)(()=>{},[]),eh=ea(),ey=(0,i.useRef)(!1),(0,i.useEffect)(()=>{!ey.current&&eh.viewportInitialized&&n&&(setTimeout(()=>n(eh),1),ey.current=!0)},[n,eh.viewportInitialized]),ex=m(tl),eb=h(),(0,i.useEffect)(()=>{ep&&(ex?.(ep),eb.setState({transform:[ep.x,ep.y,ep.zoom]}))},[ep,ex]),(0,a.jsx)(e_,{onPaneClick:X,onPaneMouseEnter:W,onPaneMouseMove:K,onPaneMouseLeave:Y,onPaneContextMenu:U,onPaneScroll:Q,paneClickDistance:q,deleteKeyCode:P,selectionKeyCode:S,selectionOnDrag:C,selectionMode:E,onSelectionStart:p,onSelectionEnd:y,multiSelectionKeyCode:k,panActivationKeyCode:N,zoomActivationKeyCode:M,elementsSelectable:_,zoomOnScroll:z,zoomOnPinch:$,zoomOnDoubleClick:F,panOnScroll:B,panOnScrollSpeed:V,panOnScrollMode:H,panOnDrag:T,autoPanOnSelection:Z,defaultViewport:D,translateExtent:A,minZoom:R,maxZoom:I,onSelectionContextMenu:f,preventScrolling:O,noDragClassName:es,noWheelClassName:ed,noPanClassName:ec,disableKeyboardA11y:eu,onViewportChange:em,isControlledViewport:!!ep,children:(0,a.jsxs)(ti,{children:[(0,a.jsx)(tr,{edgeTypes:t,onEdgeClick:r,onEdgeDoubleClick:s,onReconnect:er,onReconnectStart:ei,onReconnectEnd:el,onlyRenderVisibleElements:j,onEdgeContextMenu:J,onEdgeMouseEnter:ee,onEdgeMouseMove:et,onEdgeMouseLeave:en,reconnectRadius:eo,defaultMarkerColor:L,noPanClassName:ec,disableKeyboardA11y:eu,rfId:ef}),(0,a.jsx)(tc,{style:b,type:x,component:v,containerStyle:w}),(0,a.jsx)("div",{className:"react-flow__edgelabel-renderer"}),(0,a.jsx)(eO,{nodeTypes:e,onNodeClick:o,onNodeDoubleClick:l,onNodeMouseEnter:d,onNodeMouseMove:c,onNodeMouseLeave:u,onNodeContextMenu:g,nodeClickDistance:G,onlyRenderVisibleElements:j,noPanClassName:ec,noDragClassName:es,disableKeyboardA11y:eu,nodeExtent:eg,rfId:ef}),(0,a.jsx)("div",{className:"react-flow__viewport-portal"})]})})}tp.displayName="GraphView";let tm=(0,i.memo)(tp),th=(0,s.kr)("React Flow","https://reactflow.dev/"),ty=({nodes:e,edges:t,defaultNodes:n,defaultEdges:o,width:r,height:a,fitView:i,fitViewOptions:l,minZoom:d=.5,maxZoom:c=2,nodeOrigin:u,nodeExtent:g,zIndexMode:f="basic"}={})=>{let p=new Map,m=new Map,h=new Map,y=new Map,x=o??t??[],b=n??e??[],v=u??[0,0],w=g??s.ZO;(0,s.qn)(h,y,x);let{nodesInitialized:S}=(0,s.bi)(b,p,m,{nodeOrigin:v,nodeExtent:w,zIndexMode:f}),C=[0,0,1];if(i&&r&&a){let e=(0,s.aZ)(p,{filter:e=>!!((e.width||e.initialWidth)&&(e.height||e.initialHeight))}),{x:t,y:n,zoom:o}=(0,s.R4)(e,r,a,d,c,l?.padding??.1);C=[t,n,o]}return{rfId:"1",width:r??0,height:a??0,transform:C,nodes:b,nodesInitialized:S,nodeLookup:p,parentLookup:m,edges:x,edgeLookup:y,connectionLookup:h,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:void 0!==n,hasDefaultEdges:void 0!==o,panZoom:null,minZoom:d,maxZoom:c,translateExtent:s.ZO,nodeExtent:w,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:s.WZ.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:v,nodeDragThreshold:1,connectionDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,fitViewQueued:i??!1,fitViewOptions:l,fitViewResolver:null,connection:{...s.bK},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:th,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1,ariaLabelConfig:s.tM,zIndexMode:f,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}};function tx({initialNodes:e,initialEdges:t,defaultNodes:n,defaultEdges:o,initialWidth:r,initialHeight:l,initialMinZoom:c,initialMaxZoom:u,initialFitViewOptions:g,fitView:p,nodeOrigin:m,nodeExtent:h,zIndexMode:y,children:x}){let[b]=(0,i.useState)(()=>(({nodes:e,edges:t,defaultNodes:n,defaultEdges:o,width:r,height:a,fitView:i,fitViewOptions:l,minZoom:c,maxZoom:u,nodeOrigin:g,nodeExtent:f,zIndexMode:p})=>(0,d.h)((d,m)=>{async function h(){let{nodeLookup:e,panZoom:t,fitViewOptions:n,fitViewResolver:o,width:r,height:a,minZoom:i,maxZoom:l}=m();t&&(await (0,s.IO)({nodes:e,width:r,height:a,panZoom:t,minZoom:i,maxZoom:l},n),o?.resolve(!0),d({fitViewResolver:null}))}return{...ty({nodes:e,edges:t,width:r,height:a,fitView:i,fitViewOptions:l,minZoom:c,maxZoom:u,nodeOrigin:g,nodeExtent:f,defaultNodes:n,defaultEdges:o,zIndexMode:p}),setNodes:e=>{let{nodeLookup:t,parentLookup:n,nodeOrigin:o,elevateNodesOnSelect:r,fitViewQueued:a,zIndexMode:i,nodesSelectionActive:l}=m(),{nodesInitialized:c,hasSelectedNodes:u}=(0,s.bi)(e,t,n,{nodeOrigin:o,nodeExtent:f,elevateNodesOnSelect:r,checkEquality:!0,zIndexMode:i}),g=l&&u;a&&c?(h(),d({nodes:e,nodesInitialized:c,fitViewQueued:!1,fitViewOptions:void 0,nodesSelectionActive:g})):d({nodes:e,nodesInitialized:c,nodesSelectionActive:g})},setEdges:e=>{let{connectionLookup:t,edgeLookup:n}=m();(0,s.qn)(t,n,e),d({edges:e})},setDefaultNodesAndEdges:(e,t)=>{if(e){let{setNodes:t}=m();t(e),d({hasDefaultNodes:!0})}if(t){let{setEdges:e}=m();e(t),d({hasDefaultEdges:!0})}},updateNodeInternals:e=>{let{triggerNodeChanges:t,nodeLookup:n,parentLookup:o,domNode:r,nodeOrigin:a,nodeExtent:i,debug:l,fitViewQueued:c,zIndexMode:u}=m(),{changes:g,updatedInternals:f}=(0,s.uL)(e,n,o,r,a,i,u);f&&((0,s.vS)(n,o,{nodeOrigin:a,nodeExtent:i,zIndexMode:u}),c?(h(),d({fitViewQueued:!1,fitViewOptions:void 0})):d({}),g?.length>0&&(l&&console.log("React Flow: trigger node changes",g),t?.(g)))},updateNodePositions:(e,t=!1)=>{let n=[],o=[],{nodeLookup:r,triggerNodeChanges:a,connection:i,updateConnection:l,onNodesChangeMiddlewareMap:d}=m();for(let[a,d]of e){let e=r.get(a),c=!!(e?.expandParent&&e?.parentId&&d?.position),u={id:a,type:"position",position:c?{x:Math.max(0,d.position.x),y:Math.max(0,d.position.y)}:d.position,dragging:t};if(e&&i.inProgress&&i.fromNode.id===e.id){let t=(0,s.M_)(e,i.fromHandle,s.yX.Left,!0);l({...i,from:t})}c&&e.parentId&&n.push({id:a,parentId:e.parentId,rect:{...d.internals.positionAbsolute,width:d.measured.width??0,height:d.measured.height??0}}),o.push(u)}if(n.length>0){let{parentLookup:e,nodeOrigin:t}=m(),a=(0,s.r8)(n,r,e,t);o.push(...a)}for(let e of d.values())o=e(o);a(o)},triggerNodeChanges:e=>{let{onNodesChange:t,setNodes:n,nodes:o,hasDefaultNodes:r,debug:a}=m();e?.length&&(r&&n(Z(e,o)),a&&console.log("React Flow: trigger node changes",e),t?.(e))},triggerEdgeChanges:e=>{let{onEdgesChange:t,setEdges:n,edges:o,hasDefaultEdges:r,debug:a}=m();e?.length&&(r&&n(Z(e,o)),a&&console.log("React Flow: trigger edge changes",e),t?.(e))},addSelectedNodes:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:o,triggerNodeChanges:r,triggerEdgeChanges:a}=m();t?r(e.map(e=>K(e,!0))):(r(Y(o,new Set([...e]),!0)),a(Y(n)))},addSelectedEdges:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:o,triggerNodeChanges:r,triggerEdgeChanges:a}=m();t?a(e.map(e=>K(e,!0))):(a(Y(n,new Set([...e]))),r(Y(o,new Set,!0)))},unselectNodesAndEdges:({nodes:e,edges:t}={})=>{let{edges:n,nodes:o,nodeLookup:r,triggerNodeChanges:a,triggerEdgeChanges:i}=m(),l=[];for(let t of e||o){if(!t.selected)continue;let e=r.get(t.id);e&&(e.selected=!1),l.push(K(t.id,!1))}let s=[];for(let e of t||n)e.selected&&s.push(K(e.id,!1));a(l),i(s)},setMinZoom:e=>{let{panZoom:t,maxZoom:n}=m();t?.setScaleExtent([e,n]),d({minZoom:e})},setMaxZoom:e=>{let{panZoom:t,minZoom:n}=m();t?.setScaleExtent([n,e]),d({maxZoom:e})},setTranslateExtent:e=>{m().panZoom?.setTranslateExtent(e),d({translateExtent:e})},resetSelectedElements:()=>{let{edges:e,nodes:t,triggerNodeChanges:n,triggerEdgeChanges:o,elementsSelectable:r}=m();if(!r)return;let a=t.reduce((e,t)=>t.selected?[...e,K(t.id,!1)]:e,[]),i=e.reduce((e,t)=>t.selected?[...e,K(t.id,!1)]:e,[]);n(a),o(i)},setNodeExtent:e=>{let{nodes:t,nodeLookup:n,parentLookup:o,nodeOrigin:r,elevateNodesOnSelect:a,nodeExtent:i,zIndexMode:l}=m();(e[0][0]!==i[0][0]||e[0][1]!==i[0][1]||e[1][0]!==i[1][0]||e[1][1]!==i[1][1])&&((0,s.bi)(t,n,o,{nodeOrigin:r,nodeExtent:e,elevateNodesOnSelect:a,checkEquality:!1,zIndexMode:l}),d({nodeExtent:e}))},panBy:e=>{let{transform:t,width:n,height:o,panZoom:r,translateExtent:a}=m();return(0,s.No)({delta:e,panZoom:r,transform:t,translateExtent:a,width:n,height:o})},setCenter:async(e,t,n)=>{let{width:o,height:r,maxZoom:a,panZoom:i}=m();if(!i)return!1;let l=void 0!==n?.zoom?n.zoom:a;return await i.setViewport({x:o/2-e*l,y:r/2-t*l,zoom:l},{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),!0},cancelConnection:()=>{d({connection:{...s.bK}})},updateConnection:e=>{d({connection:e})},reset:()=>d({...ty()})}},Object.is))({nodes:e,edges:t,defaultNodes:n,defaultEdges:o,width:r,height:l,fitView:p,minZoom:c,maxZoom:u,fitViewOptions:g,nodeOrigin:m,nodeExtent:h,zIndexMode:y}));return(0,a.jsx)(f,{value:b,children:(0,a.jsx)(eo,{children:x})})}function tb({children:e,nodes:t,edges:n,defaultNodes:o,defaultEdges:r,width:l,height:s,fitView:d,fitViewOptions:c,minZoom:u,maxZoom:f,nodeOrigin:p,nodeExtent:m,zIndexMode:h}){return(0,i.useContext)(g)?(0,a.jsx)(a.Fragment,{children:e}):(0,a.jsx)(tx,{initialNodes:t,initialEdges:n,defaultNodes:o,defaultEdges:r,initialWidth:l,initialHeight:s,fitView:d,initialFitViewOptions:c,initialMinZoom:u,initialMaxZoom:f,nodeOrigin:p,nodeExtent:m,zIndexMode:h,children:e})}let tv={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};var tw=J(function({nodes:e,edges:t,defaultNodes:n,defaultEdges:o,className:r,nodeTypes:d,edgeTypes:c,onNodeClick:u,onEdgeClick:g,onInit:f,onMove:p,onMoveStart:m,onMoveEnd:h,onConnect:y,onConnectStart:x,onConnectEnd:b,onClickConnectStart:v,onClickConnectEnd:w,onNodeMouseEnter:S,onNodeMouseMove:C,onNodeMouseLeave:k,onNodeContextMenu:M,onNodeDoubleClick:P,onNodeDragStart:j,onNodeDrag:_,onNodeDragStop:D,onNodesDelete:O,onEdgesDelete:L,onDelete:z,onSelectionChange:V,onSelectionDragStart:H,onSelectionDrag:F,onSelectionDragStop:T,onSelectionContextMenu:Z,onSelectionStart:X,onSelectionEnd:W,onBeforeDelete:K,connectionMode:Y,connectionLineType:Q=s.Do.Bezier,connectionLineStyle:U,connectionLineComponent:q,connectionLineContainerStyle:G,deleteKeyCode:J="Backspace",selectionKeyCode:ee="Shift",selectionOnDrag:et=!1,selectionMode:en=s.Qc.Full,panActivationKeyCode:eo="Space",multiSelectionKeyCode:er=(0,s.Ue)()?"Meta":"Control",zoomActivationKeyCode:ea=(0,s.Ue)()?"Meta":"Control",snapToGrid:ei,snapGrid:el,onlyRenderVisibleElements:es=!1,selectNodesOnDrag:ed,nodesDraggable:ec,autoPanOnNodeFocus:eu,nodesConnectable:eg,nodesFocusable:ef,nodeOrigin:ep=R,edgesFocusable:em,edgesReconnectable:eh,elementsSelectable:ey=!0,defaultViewport:ex=I,minZoom:eb=.5,maxZoom:ev=2,translateExtent:ew=s.ZO,preventScrolling:eS=!0,nodeExtent:eC,defaultMarkerColor:eE="#b1b1b7",zoomOnScroll:ek=!0,zoomOnPinch:eN=!0,panOnScroll:eM=!1,panOnScrollSpeed:eP=.5,panOnScrollMode:ej=s.ny.Free,zoomOnDoubleClick:e_=!0,panOnDrag:eD=!0,onPaneClick:eA,onPaneMouseEnter:eR,onPaneMouseMove:eI,onPaneMouseLeave:eO,onPaneScroll:eL,onPaneContextMenu:ez,paneClickDistance:e$=1,nodeClickDistance:eB=0,children:eV,onReconnect:eH,onReconnectStart:eF,onReconnectEnd:eT,onEdgeContextMenu:eZ,onEdgeDoubleClick:eX,onEdgeMouseEnter:eW,onEdgeMouseMove:eK,onEdgeMouseLeave:eY,reconnectRadius:eQ=10,onNodesChange:eU,onEdgesChange:eq,noDragClassName:eG="nodrag",noWheelClassName:eJ="nowheel",noPanClassName:e0="nopan",fitView:e1,fitViewOptions:e3,connectOnClick:e2,attributionPosition:e4,proOptions:e5,defaultEdgeOptions:e6,elevateNodesOnSelect:e7=!0,elevateEdgesOnSelect:e8=!1,disableKeyboardA11y:e9=!1,autoPanOnConnect:te,autoPanOnNodeDrag:tt,autoPanOnSelection:tn=!0,autoPanSpeed:to,connectionRadius:tr,isValidConnection:ta,onError:ti,style:tl,id:ts,nodeDragThreshold:td,connectionDragThreshold:tc,viewport:tu,onViewportChange:tg,width:tf,height:tp,colorMode:th="light",debug:ty,onScroll:tx,ariaLabelConfig:tw,zIndexMode:tS="basic",...tC},tE){let tk=ts||"1",tN=function(e){let[t,n]=(0,i.useState)("system"===e?null:e);return(0,i.useEffect)(()=>{if("system"!==e)return void n(e);let t=B(),o=()=>n(t?.matches?"dark":"light");return o(),t?.addEventListener("change",o),()=>{t?.removeEventListener("change",o)}},[e]),null!==t?t:B()?.matches?"dark":"light"}(th),tM=(0,i.useCallback)(e=>{e.currentTarget.scrollTo({top:0,left:0,behavior:"instant"}),tx?.(e)},[tx]);return(0,a.jsx)("div",{"data-testid":"rf__wrapper",...tC,onScroll:tM,style:{...tl,...tv},ref:tE,className:(0,l.A)(["react-flow",r,tN]),id:ts,role:"application",children:(0,a.jsxs)(tb,{nodes:e,edges:t,width:tf,height:tp,fitView:e1,fitViewOptions:e3,minZoom:eb,maxZoom:ev,nodeOrigin:ep,nodeExtent:eC,zIndexMode:tS,children:[(0,a.jsx)($,{nodes:e,edges:t,defaultNodes:n,defaultEdges:o,onConnect:y,onConnectStart:x,onConnectEnd:b,onClickConnectStart:v,onClickConnectEnd:w,nodesDraggable:ec,autoPanOnNodeFocus:eu,nodesConnectable:eg,nodesFocusable:ef,edgesFocusable:em,edgesReconnectable:eh,elementsSelectable:ey,elevateNodesOnSelect:e7,elevateEdgesOnSelect:e8,minZoom:eb,maxZoom:ev,nodeExtent:eC,onNodesChange:eU,onEdgesChange:eq,snapToGrid:ei,snapGrid:el,connectionMode:Y,translateExtent:ew,connectOnClick:e2,defaultEdgeOptions:e6,fitView:e1,fitViewOptions:e3,onNodesDelete:O,onEdgesDelete:L,onDelete:z,onNodeDragStart:j,onNodeDrag:_,onNodeDragStop:D,onSelectionDrag:F,onSelectionDragStart:H,onSelectionDragStop:T,onMove:p,onMoveStart:m,onMoveEnd:h,noPanClassName:e0,nodeOrigin:ep,rfId:tk,autoPanOnConnect:te,autoPanOnNodeDrag:tt,autoPanSpeed:to,onError:ti,connectionRadius:tr,isValidConnection:ta,selectNodesOnDrag:ed,nodeDragThreshold:td,connectionDragThreshold:tc,onBeforeDelete:K,debug:ty,ariaLabelConfig:tw,zIndexMode:tS}),(0,a.jsx)(tm,{onInit:f,onNodeClick:u,onEdgeClick:g,onNodeMouseEnter:S,onNodeMouseMove:C,onNodeMouseLeave:k,onNodeContextMenu:M,onNodeDoubleClick:P,nodeTypes:d,edgeTypes:c,connectionLineType:Q,connectionLineStyle:U,connectionLineComponent:q,connectionLineContainerStyle:G,selectionKeyCode:ee,selectionOnDrag:et,selectionMode:en,deleteKeyCode:J,multiSelectionKeyCode:er,panActivationKeyCode:eo,zoomActivationKeyCode:ea,onlyRenderVisibleElements:es,defaultViewport:ex,translateExtent:ew,minZoom:eb,maxZoom:ev,preventScrolling:eS,zoomOnScroll:ek,zoomOnPinch:eN,zoomOnDoubleClick:e_,panOnScroll:eM,panOnScrollSpeed:eP,panOnScrollMode:ej,panOnDrag:eD,autoPanOnSelection:tn,onPaneClick:eA,onPaneMouseEnter:eR,onPaneMouseMove:eI,onPaneMouseLeave:eO,onPaneScroll:eL,onPaneContextMenu:ez,paneClickDistance:e$,nodeClickDistance:eB,onSelectionContextMenu:Z,onSelectionStart:X,onSelectionEnd:W,onReconnect:eH,onReconnectStart:eF,onReconnectEnd:eT,onEdgeContextMenu:eZ,onEdgeDoubleClick:eX,onEdgeMouseEnter:eW,onEdgeMouseMove:eK,onEdgeMouseLeave:eY,reconnectRadius:eQ,defaultMarkerColor:eE,noDragClassName:eG,noWheelClassName:eJ,noPanClassName:e0,rfId:tk,disableKeyboardA11y:e9,nodeExtent:eC,viewport:tu,onViewportChange:tg}),(0,a.jsx)(A,{onSelectionChange:V}),eV,(0,a.jsx)(N,{proOptions:e5,position:e4}),(0,a.jsx)(E,{rfId:tk,disableKeyboardA11y:e9})]})})});let tS=e=>e.domNode?.querySelector(".react-flow__edgelabel-renderer");function tC({children:e}){let t=m(tS);return t?(0,u.createPortal)(e,t):null}let tE=e=>e.domNode?.querySelector(".react-flow__viewport-portal");function tk({children:e}){let t=m(tE);return t?(0,u.createPortal)(e,t):null}let tN=e=>e.nodes;function tM(){return m(tN,c.x)}function tP(e){let[t,n]=(0,i.useState)(e),o=(0,i.useCallback)(e=>n(t=>Z(e,t)),[]);return[t,n,o]}function tj(e){return m((0,i.useCallback)(t=>t.nodeLookup.get(e),[e]),c.x)}function t_({dimensions:e,lineWidth:t,variant:n,className:o}){return(0,a.jsx)("path",{strokeWidth:t,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`,className:(0,l.A)(["react-flow__background-pattern",n,o])})}function tD({radius:e,className:t}){return(0,a.jsx)("circle",{cx:e,cy:e,r:e,className:(0,l.A)(["react-flow__background-pattern","dots",t])})}s.xc.error014(),(o=r||(r={})).Lines="lines",o.Dots="dots",o.Cross="cross";let tA={[r.Dots]:1,[r.Lines]:1,[r.Cross]:6},tR=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function tI({id:e,variant:t=r.Dots,gap:n=20,size:o,lineWidth:s=1,offset:d=0,color:u,bgColor:g,style:f,className:p,patternClassName:h}){let y=(0,i.useRef)(null),{transform:x,patternId:b}=m(tR,c.x),v=o||tA[t],w=t===r.Dots,S=t===r.Cross,C=Array.isArray(n)?n:[n,n],E=[C[0]*x[2]||1,C[1]*x[2]||1],k=v*x[2],N=Array.isArray(d)?d:[d,d],M=S?[k,k]:E,P=[N[0]*x[2]||1+M[0]/2,N[1]*x[2]||1+M[1]/2],j=`${b}${e||""}`;return(0,a.jsxs)("svg",{className:(0,l.A)(["react-flow__background",p]),style:{...f,...es,"--xy-background-color-props":g,"--xy-background-pattern-color-props":u},ref:y,"data-testid":"rf__background",children:[(0,a.jsx)("pattern",{id:j,x:x[0]%E[0],y:x[1]%E[1],width:E[0],height:E[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${P[0]},-${P[1]})`,children:w?(0,a.jsx)(tD,{radius:k/2,className:h}):(0,a.jsx)(t_,{dimensions:M,lineWidth:s,variant:t,className:h})}),(0,a.jsx)("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${j})`})]})}tI.displayName="Background";let tO=(0,i.memo)(tI);function tL(){return(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",children:(0,a.jsx)("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"})})}function tz(){return(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5",children:(0,a.jsx)("path",{d:"M0 0h32v4.2H0z"})})}function t$(){return(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30",children:(0,a.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 tB(){return(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:(0,a.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 tV(){return(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:(0,a.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 tH({children:e,className:t,...n}){return(0,a.jsx)("button",{type:"button",className:(0,l.A)(["react-flow__controls-button",t]),...n,children:e})}let tF=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function tT({style:e,showZoom:t=!0,showFitView:n=!0,showInteractive:o=!0,fitViewOptions:r,onZoomIn:i,onZoomOut:s,onFitView:d,onInteractiveChange:u,className:g,children:f,position:p="bottom-left",orientation:y="vertical","aria-label":x}){let b=h(),{isInteractive:v,minZoomReached:w,maxZoomReached:S,ariaLabelConfig:C}=m(tF,c.x),{zoomIn:E,zoomOut:N,fitView:M}=ea();return(0,a.jsxs)(k,{className:(0,l.A)(["react-flow__controls","horizontal"===y?"horizontal":"vertical",g]),position:p,style:e,"data-testid":"rf__controls","aria-label":x??C["controls.ariaLabel"],children:[t&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(tH,{onClick:()=>{E(),i?.()},className:"react-flow__controls-zoomin",title:C["controls.zoomIn.ariaLabel"],"aria-label":C["controls.zoomIn.ariaLabel"],disabled:S,children:(0,a.jsx)(tL,{})}),(0,a.jsx)(tH,{onClick:()=>{N(),s?.()},className:"react-flow__controls-zoomout",title:C["controls.zoomOut.ariaLabel"],"aria-label":C["controls.zoomOut.ariaLabel"],disabled:w,children:(0,a.jsx)(tz,{})})]}),n&&(0,a.jsx)(tH,{className:"react-flow__controls-fitview",onClick:()=>{M(r),d?.()},title:C["controls.fitView.ariaLabel"],"aria-label":C["controls.fitView.ariaLabel"],children:(0,a.jsx)(t$,{})}),o&&(0,a.jsx)(tH,{className:"react-flow__controls-interactive",onClick:()=>{b.setState({nodesDraggable:!v,nodesConnectable:!v,elementsSelectable:!v}),u?.(!v)},title:C["controls.interactive.ariaLabel"],"aria-label":C["controls.interactive.ariaLabel"],children:v?(0,a.jsx)(tV,{}):(0,a.jsx)(tB,{})}),f]})}tT.displayName="Controls";let tZ=(0,i.memo)(tT),tX=(0,i.memo)(function({id:e,x:t,y:n,width:o,height:r,style:i,color:s,strokeColor:d,strokeWidth:c,className:u,borderRadius:g,shapeRendering:f,selected:p,onClick:m}){let{background:h,backgroundColor:y}=i||{};return(0,a.jsx)("rect",{className:(0,l.A)(["react-flow__minimap-node",{selected:p},u]),x:t,y:n,rx:g,ry:g,width:o,height:r,style:{fill:s||h||y,stroke:d,strokeWidth:c},shapeRendering:f,onClick:m?t=>m(t,e):void 0})}),tW=e=>e.nodes.map(e=>e.id),tK=e=>e instanceof Function?e:()=>e,tY=(0,i.memo)(function({id:e,nodeColorFunc:t,nodeStrokeColorFunc:n,nodeClassNameFunc:o,nodeBorderRadius:r,nodeStrokeWidth:i,shapeRendering:l,NodeComponent:d,onClick:u}){let{node:g,x:f,y:p,width:h,height:y}=m(t=>{let n=t.nodeLookup.get(e);if(!n)return{node:void 0,x:0,y:0,width:0,height:0};let o=n.internals.userNode,{x:r,y:a}=n.internals.positionAbsolute,{width:i,height:l}=(0,s.uD)(o);return{node:o,x:r,y:a,width:i,height:l}},c.x);return g&&!g.hidden&&(0,s.QE)(g)?(0,a.jsx)(d,{x:f,y:p,width:h,height:y,style:g.style,selected:!!g.selected,className:o(g),color:t(g),borderRadius:r,strokeColor:n(g),strokeWidth:i,shapeRendering:l,onClick:u,id:g.id}):null});var tQ=(0,i.memo)(function({nodeStrokeColor:e,nodeColor:t,nodeClassName:n="",nodeBorderRadius:o=5,nodeStrokeWidth:r,nodeComponent:i=tX,onClick:l}){let s=m(tW,c.x),d=tK(t),u=tK(e),g=tK(n),f="u"<typeof window||window.chrome?"crispEdges":"geometricPrecision";return(0,a.jsx)(a.Fragment,{children:s.map(e=>(0,a.jsx)(tY,{id:e,nodeColorFunc:d,nodeStrokeColorFunc:u,nodeClassNameFunc:g,nodeBorderRadius:o,nodeStrokeWidth:r,NodeComponent:i,onClick:l,shapeRendering:f},e))})});let tU=e=>!e.hidden,tq=e=>{let 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?(0,s.Mi)((0,s.aZ)(e.nodeLookup,{filter:tU}),t):t,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}};function tG({style:e,className:t,nodeStrokeColor:n,nodeColor:o,nodeClassName:r="",nodeBorderRadius:d=5,nodeStrokeWidth:u,nodeComponent:g,bgColor:f,maskColor:p,maskStrokeColor:y,maskStrokeWidth:x,position:b="bottom-right",onClick:v,onNodeClick:w,pannable:S=!1,zoomable:C=!1,ariaLabel:E,inversePan:N,zoomStep:M=1,offsetScale:P=5}){let j=h(),_=(0,i.useRef)(null),{boundingRect:D,viewBB:A,rfId:R,panZoom:I,translateExtent:O,flowWidth:L,flowHeight:z,ariaLabelConfig:$}=m(tq,c.x),B=e?.width??200,V=e?.height??150,H=Math.max(D.width/B,D.height/V),F=H*B,T=H*V,Z=P*H,X=D.x-(F-D.width)/2-Z,W=D.y-(T-D.height)/2-Z,K=F+2*Z,Y=T+2*Z,Q=`react-flow__minimap-desc-${R}`,U=(0,i.useRef)(0),q=(0,i.useRef)();U.current=H,(0,i.useEffect)(()=>{if(_.current&&I)return q.current=(0,s.di)({domNode:_.current,panZoom:I,getTransform:()=>j.getState().transform,getViewScale:()=>U.current}),()=>{q.current?.destroy()}},[I]),(0,i.useEffect)(()=>{q.current?.update({translateExtent:O,width:L,height:z,inversePan:N,pannable:S,zoomStep:M,zoomable:C})},[S,C,N,M,O,L,z]);let G=v?e=>{let[t,n]=q.current?.pointer(e)||[0,0];v(e,{x:t,y:n})}:void 0,J=w?(0,i.useCallback)((e,t)=>{w(e,j.getState().nodeLookup.get(t).internals.userNode)},[]):void 0,ee=E??$["minimap.ariaLabel"];return(0,a.jsx)(k,{position:b,style:{...e,"--xy-minimap-background-color-props":"string"==typeof f?f:void 0,"--xy-minimap-mask-background-color-props":"string"==typeof p?p:void 0,"--xy-minimap-mask-stroke-color-props":"string"==typeof y?y:void 0,"--xy-minimap-mask-stroke-width-props":"number"==typeof x?x*H:void 0,"--xy-minimap-node-background-color-props":"string"==typeof o?o:void 0,"--xy-minimap-node-stroke-color-props":"string"==typeof n?n:void 0,"--xy-minimap-node-stroke-width-props":"number"==typeof u?u:void 0},className:(0,l.A)(["react-flow__minimap",t]),"data-testid":"rf__minimap",children:(0,a.jsxs)("svg",{width:B,height:V,viewBox:`${X} ${W} ${K} ${Y}`,className:"react-flow__minimap-svg",role:"img","aria-labelledby":Q,ref:_,onClick:G,children:[ee&&(0,a.jsx)("title",{id:Q,children:ee}),(0,a.jsx)(tQ,{onClick:J,nodeColor:o,nodeStrokeColor:n,nodeBorderRadius:d,nodeClassName:r,nodeStrokeWidth:u,nodeComponent:g}),(0,a.jsx)("path",{className:"react-flow__minimap-mask",d:`M${X-Z},${W-Z}h${K+2*Z}v${Y+2*Z}h${-K-2*Z}z
|
|
2
|
+
M${A.x},${A.y}h${A.width}v${A.height}h${-A.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}tG.displayName="MiniMap";let tJ=(0,i.memo)(tG);s.xN.Line,s.xN.Handle}}]);
|