@camstack/addon-admin-ui 1.0.3 → 1.0.5

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.
Files changed (86) hide show
  1. package/dist/assets/{AddLocationWizard-ty_4uW1H.js → AddLocationWizard-B5dkIoQ2.js} +1 -1
  2. package/dist/assets/{AddonCollectionPage-CIvGYL8Z.js → AddonCollectionPage-DVB69ClF.js} +1 -1
  3. package/dist/assets/Addons-Bfvs6-g0.js +1 -0
  4. package/dist/assets/{AdminTabs-7T1CldHN.js → AdminTabs-BWNsXXy4.js} +1 -1
  5. package/dist/assets/{BrokerForm-DzjaLHmG.js → BrokerForm-DYIjeusD.js} +1 -1
  6. package/dist/assets/{BrokerStep-B3pEVZ2L.js → BrokerStep-DjzuHh1z.js} +1 -1
  7. package/dist/assets/{Capabilities-D2qn1TDV.js → Capabilities-hicnOVum.js} +1 -1
  8. package/dist/assets/{CapabilityBadges-BWnECBvl.js → CapabilityBadges-CSyidKVA.js} +1 -1
  9. package/dist/assets/Cluster-AyC6G6sS.js +7 -0
  10. package/dist/assets/{Dashboard-HorCsmCt.js → Dashboard-BkLuDhPq.js} +1 -1
  11. package/dist/assets/{Data-hispFwBv.js → Data-Beh_0Rmk.js} +1 -1
  12. package/dist/assets/{DetectionIntelligence-BtnTELA6.js → DetectionIntelligence-BfxtDLUn.js} +1 -1
  13. package/dist/assets/DeviceDetail-DGlm0ka0.js +2 -0
  14. package/dist/assets/{Devices-XIivtEYO.js → Devices-DzX3RWXL.js} +1 -1
  15. package/dist/assets/{EmbedPlayerPage-CIF0Ft1g.js → EmbedPlayerPage-WJHXt2K5.js} +1 -1
  16. package/dist/assets/{FormBuilder-DVLWBVys.js → FormBuilder-C_FGp6fK.js} +1 -1
  17. package/dist/assets/Identity-oMA7lRlr.js +1 -0
  18. package/dist/assets/IntegrationDetail-DUzh5vXL.js +1 -0
  19. package/dist/assets/{Integrations-CxuWXvnl.js → Integrations-DMJL2wGt.js} +1 -1
  20. package/dist/assets/{Integrations-CxFwUmeX.js → Integrations-DdxCeVlW.js} +1 -1
  21. package/dist/assets/{Logs-DYrcsFh9.js → Logs-Czo2ju6R.js} +1 -1
  22. package/dist/assets/{MotionZonesSettings-CepMSlXn.js → MotionZonesSettings-DSz0ZQ3J.js} +1 -1
  23. package/dist/assets/{MyAccess-C-zxwxTM.js → MyAccess-CiRVe6o4.js} +1 -1
  24. package/dist/assets/{Network-D5ppyqPS.js → Network-2_yW2eMz.js} +1 -1
  25. package/dist/assets/{NodeAddonsSettingsPanel-B4ru8rzf.js → NodeAddonsSettingsPanel-CWOXJvnI.js} +1 -1
  26. package/dist/assets/Pipeline-MNGNVhOO.js +1 -0
  27. package/dist/assets/{PrivacyMaskSettings-Cut8tYhS.js → PrivacyMaskSettings-CrWASNzq.js} +1 -1
  28. package/dist/assets/{ProviderIcon-BpqSF3Hu.js → ProviderIcon-DU7EkOsQ.js} +1 -1
  29. package/dist/assets/{Settings-CriiXyFu.js → Settings-Ba4e7VPd.js} +1 -1
  30. package/dist/assets/{Showroom-KHowYChm.js → Showroom-fzNXeqzs.js} +1 -1
  31. package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-Cus-LW9c.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-OIn_kS_J.js} +1 -1
  32. package/dist/assets/{bell-C1jXqDWz.js → bell-PpkN_TgJ.js} +1 -1
  33. package/dist/assets/circle-check-big-BzSkZiMj.js +1 -0
  34. package/dist/assets/{copy-tH10joFB.js → copy-D3XNVDYo.js} +1 -1
  35. package/dist/assets/dist-CyLsBIs8.js +1 -0
  36. package/dist/assets/{dist-mzJ_Pmak.js → dist-DyYmhGqc.js} +1 -1
  37. package/dist/assets/{download-DyMeaCfZ.js → download-BHYjG90K.js} +1 -1
  38. package/dist/assets/{hostInit-8PN225l2.js → hostInit-BykkFKC1.js} +1 -1
  39. package/dist/assets/index-COZOEwaJ.css +2 -0
  40. package/dist/assets/index-DpTstpp_.js +4 -0
  41. package/dist/assets/{key-round-eCBxaKT6.js → key-round-Dn1oOWgV.js} +1 -1
  42. package/dist/assets/{mf-entry-bootstrap-0-137d5c5b.js → mf-entry-bootstrap-0-04dcd8db.js} +2 -2
  43. package/dist/assets/{pencil-xW8n5CLs.js → pencil-Kbj4_JBR.js} +1 -1
  44. package/dist/assets/{player-overlays-DzZKARlk.js → player-overlays-zGqQhGgE.js} +1 -1
  45. package/dist/assets/plus-CPqVcqUV.js +1 -0
  46. package/dist/assets/{radio-CWnAI4na.js → radio-CTfNJnG5.js} +1 -1
  47. package/dist/assets/{refresh-cw-BKhUNMXQ.js → refresh-cw-BnmOdHXx.js} +1 -1
  48. package/dist/assets/remoteEntry-BKwb226y.js +1 -0
  49. package/dist/assets/{rotate-ccw-BXu8SIv5.js → rotate-ccw-UF_FErzF.js} +1 -1
  50. package/dist/assets/rotate-cw-B4szmAxG.js +1 -0
  51. package/dist/assets/search-C07n9Z2S.js +1 -0
  52. package/dist/assets/{server-X3K4ldX4.js → server-DK5PS_QF.js} +1 -1
  53. package/dist/assets/{sparkles-ChgPFrhX.js → sparkles-B5Duaxbv.js} +1 -1
  54. package/dist/assets/square-Bex0hnGW.js +1 -0
  55. package/dist/assets/{square-check-big-Bzz95oCZ.js → square-check-big-qiutr_Ci.js} +1 -1
  56. package/dist/assets/src-DqOo0bwK.js +1 -0
  57. package/dist/assets/src-Dxc7AUYA.js +34 -0
  58. package/dist/assets/{upload-BeG8PyHB.js → upload-Btk1HMIN.js} +1 -1
  59. package/dist/assets/{useDevice-B7VwJa4X.js → useDevice-uoMH2oPD.js} +1 -1
  60. package/dist/assets/{useEventInvalidation-Cf9VIpDW.js → useEventInvalidation-DDUSWISR.js} +1 -1
  61. package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-BLisQvKo.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-s1j_uW8u.js} +2 -2
  62. package/dist/assets/{wifi-DYJHTrlD.js → wifi-DH-9OMrB.js} +1 -1
  63. package/dist/assets/{zap-DLiiHws-.js → zap-Cpoh2hjh.js} +1 -1
  64. package/dist/index.html +6 -6
  65. package/dist/server/addon.js +122 -27
  66. package/dist/sw.js +1 -1
  67. package/dist/workbox-14d7584c.js +1 -0
  68. package/package.json +1 -1
  69. package/dist/assets/Addons-CWtFT6QM.js +0 -1
  70. package/dist/assets/Cluster-BVUZdAyW.js +0 -7
  71. package/dist/assets/DeviceDetail-OXTiYiO9.js +0 -2
  72. package/dist/assets/Identity-8krGNqDO.js +0 -1
  73. package/dist/assets/IntegrationDetail-Dyg4wlgs.js +0 -1
  74. package/dist/assets/Pipeline-CS6lN8Ww.js +0 -1
  75. package/dist/assets/circle-check-big-is5GRKO9.js +0 -1
  76. package/dist/assets/dist-CGRDjIOZ.js +0 -1
  77. package/dist/assets/index-CAfPe666.js +0 -4
  78. package/dist/assets/index-CTiiXuB_.css +0 -2
  79. package/dist/assets/plus-DVpT3Ja2.js +0 -1
  80. package/dist/assets/remoteEntry-BOZn_K50.js +0 -1
  81. package/dist/assets/rotate-cw-BO4D9G2F.js +0 -1
  82. package/dist/assets/search-DyWYI0Yj.js +0 -1
  83. package/dist/assets/square-Faey8y7b.js +0 -1
  84. package/dist/assets/src-C5tvi19O.js +0 -34
  85. package/dist/assets/src-CrhOk7JL.js +0 -1
  86. package/dist/workbox-9c191d2f.js +0 -1
@@ -0,0 +1,7 @@
1
+ import{a as e,i as t,t as n}from"./rolldown-runtime-Cyuzqnbw.js";import{$i as r,Br as i,Ir as a,Li as o,Mi as s,Qi as c,Ur as l,Yr as u,Zi as d,_r as f,ar as p,dr as m,ea as h,fr as g,g as _,gr as v,h as y,hr as b,ir as x,m as S,mr as C,pr as w,vr as T,zi as E}from"./src-Dxc7AUYA.js";import{E as D,F as O,G as k,H as A,I as j,O as M,R as N,U as P,W as F,X as I,Y as L,b as R,j as z,o as B,w as V,x as H,y as U}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CK8iQdP1.js";import{r as W}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare__react_mf_2_dom__loadShare__.js-C1rR7FKs.js";import{t as G}from"./pencil-Kbj4_JBR.js";import{t as ee}from"./radio-CTfNJnG5.js";import{t as te}from"./refresh-cw-BnmOdHXx.js";import{t as ne}from"./rotate-cw-B4szmAxG.js";import{t as re}from"./server-DK5PS_QF.js";import{t as ie}from"./upload-Btk1HMIN.js";import{B as ae,F as oe,L as se,M as ce,P as le,_ as ue,i as de,k as fe,n as pe,o as me,p as he,s as ge,x as _e}from"./index-DpTstpp_.js";import{t as ve}from"./format-size-CO9d3C3-.js";import{t as ye}from"./NodeAddonsSettingsPanel-CWOXJvnI.js";var be=ae(`ghost`,[[`path`,{d:`M9 10h.01`,key:`qbtxuw`}],[`path`,{d:`M15 10h.01`,key:`1qmjsl`}],[`path`,{d:`M12 2a8 8 0 0 0-8 8v12l3-3 2.5 2.5L12 19l2.5 2.5L17 19l3 3V10a8 8 0 0 0-8-8z`,key:`uwwb07`}]]),xe=ae(`memory-stick`,[[`path`,{d:`M6 19v-3`,key:`1nvgqn`}],[`path`,{d:`M10 19v-3`,key:`iu8nkm`}],[`path`,{d:`M14 19v-3`,key:`kcehxu`}],[`path`,{d:`M18 19v-3`,key:`1vh91z`}],[`path`,{d:`M8 11V9`,key:`63erz4`}],[`path`,{d:`M16 11V9`,key:`fru6f3`}],[`path`,{d:`M12 11V9`,key:`ha00sb`}],[`path`,{d:`M2 15h20`,key:`16ne18`}],[`path`,{d:`M2 7a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v1.1a2 2 0 0 0 0 3.837V17a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-5.1a2 2 0 0 0 0-3.837Z`,key:`lhddv3`}]]),Se=ae(`skull`,[[`path`,{d:`m12.5 17-.5-1-.5 1h1z`,key:`3me087`}],[`path`,{d:`M15 22a1 1 0 0 0 1-1v-1a2 2 0 0 0 1.56-3.25 8 8 0 1 0-11.12 0A2 2 0 0 0 8 20v1a1 1 0 0 0 1 1z`,key:`1o5pge`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}]]),Ce=ae(`table-2`,[[`path`,{d:`M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18`,key:`gugj83`}]]);I();function we(e){let t=new FormData;return t.append(`file`,e.file,e.file.name),t.append(`nodeId`,e.nodeId),e.addonId&&t.append(`addonId`,e.addonId),new Promise((n,r)=>{let i=new XMLHttpRequest;i.open(`POST`,`/api/addons/upload`),e.token&&i.setRequestHeader(`Authorization`,`Bearer ${e.token}`),i.upload.addEventListener(`progress`,t=>{t.lengthComputable&&e.onProgress(Math.round(t.loaded/t.total*100))}),i.addEventListener(`load`,()=>{let e;try{e=JSON.parse(i.responseText)}catch{r(Error(`HTTP ${i.status}`));return}i.status>=200&&i.status<300?n(e):r(Error(e.error??`HTTP ${i.status}`))}),i.addEventListener(`error`,()=>r(Error(`Network error during upload`))),i.addEventListener(`abort`,()=>r(Error(`Upload aborted`))),i.send(t)})}function Te({nodeId:e,addons:t,isHub:n}){let r=B(),i=s(),[a,o]=k(null),[c,l]=k(null),[u,d]=k(!1),[f,p]=k(null),[m,h]=k(0),_=F(null),v=C(),y=T(),b=g({nodeId:e}),x=b.data??[],S=new Map(t.map(e=>[e.id,e.capabilities])),w=x.length>0?x.map(e=>({id:e.id,status:e.status,capabilities:S.get(e.id)??[],version:e.version,packageName:e.packageName})):t.map(e=>({id:e.id,status:e.status,capabilities:e.capabilities,version:void 0,packageName:void 0})),E=()=>{r.invalidateQueries({queryKey:[[`nodes`,`topology`]]}),b.refetch()},D=async t=>{o(t);try{await v.mutateAsync({nodeId:e,addonId:t}),E()}catch(e){console.error(`Failed to restart addon:`,e)}finally{o(null)}},O=async t=>{if(await i({title:`Uninstall addon`,message:`Remove "${t}" from ${e}? The addon directory will be deleted on disk.`,confirmLabel:`Uninstall`,variant:`danger`})){l(t);try{await y.mutateAsync({nodeId:e,addonId:t}),E()}catch(e){console.error(`Failed to uninstall addon:`,e)}finally{l(null)}}},A=H(`div`,{className:`flex items-center gap-2 mb-2`,children:[R(`input`,{ref:_,type:`file`,accept:`.tgz,.tar.gz`,className:`hidden`,onChange:async t=>{let n=t.target.files?.[0];if(n){t.target.value=``,p(null),d(!0),h(0);try{await we({file:n,nodeId:e,token:localStorage.getItem(`camstack_admin_token`),onProgress:h}),E()}catch(e){p(e instanceof Error?e.message:String(e))}finally{d(!1),h(0)}}}}),H(`button`,{onClick:()=>_.current?.click(),disabled:u,className:`inline-flex items-center gap-1.5 rounded-md border border-border px-2.5 py-1 text-[11px] font-medium text-foreground-subtle hover:text-foreground hover:bg-surface-hover transition-colors disabled:opacity-50`,children:[u?R(_e,{className:`h-3 w-3 animate-spin`}):R(ie,{className:`h-3 w-3`}),u?`Uploading… ${m}%`:`Upload addon (.tgz)`]}),u&&R(`div`,{className:`flex-1 h-1 rounded-full bg-muted overflow-hidden max-w-[140px]`,children:R(`div`,{className:`h-full bg-primary transition-all`,style:{width:`${m}%`}})}),f&&R(`span`,{className:`text-[10px] text-destructive`,children:f})]});return w.length===0?H(`div`,{children:[A,R(`div`,{className:`py-4 text-xs text-muted-foreground text-center`,children:b.isLoading?`Loading addons…`:`No addons on this node`})]}):H(`div`,{children:[A,H(`table`,{className:`w-full text-xs`,children:[R(`thead`,{children:H(`tr`,{className:`text-muted-foreground text-left`,children:[R(`th`,{className:`py-2 font-medium`,children:`Addon`}),R(`th`,{className:`py-2 font-medium`,children:`Version`}),R(`th`,{className:`py-2 font-medium`,children:`Capabilities`}),R(`th`,{className:`py-2 font-medium`,children:`Status`}),R(`th`,{className:`py-2 font-medium w-16`})]})}),R(`tbody`,{children:w.map(e=>H(`tr`,{className:`border-t border-border/50`,children:[H(`td`,{className:`py-2 font-medium`,children:[R(`div`,{children:e.id}),e.packageName&&R(`div`,{className:`text-[9px] text-muted-foreground`,children:e.packageName})]}),R(`td`,{className:`py-2 text-muted-foreground`,children:e.version??`—`}),R(`td`,{className:`py-2`,children:R(`div`,{className:`flex flex-wrap gap-1`,children:e.capabilities.length>0?e.capabilities.map(e=>R(`span`,{className:`text-[9px] px-1 py-0.5 rounded bg-blue-500/10 text-blue-400`,children:e},e)):R(`span`,{className:`text-muted-foreground`,children:`—`})})}),R(`td`,{className:`py-2`,children:R(`span`,{className:`text-[10px] px-1.5 py-0.5 rounded-full ${e.status===`running`?`bg-success/10 text-success`:e.status===`error`?`bg-destructive/10 text-destructive`:`bg-muted text-muted-foreground`}`,children:e.status})}),R(`td`,{className:`py-2`,children:H(`div`,{className:`flex items-center gap-1 justify-end`,children:[R(`button`,{onClick:()=>D(e.id),disabled:a===e.id||c===e.id,className:`p-1 rounded hover:bg-muted text-muted-foreground hover:text-foreground transition-colors disabled:opacity-50`,title:`Restart ${e.id}`,children:R(ne,{className:`h-3 w-3 ${a===e.id?`animate-spin`:``}`})}),R(`button`,{onClick:()=>O(e.id),disabled:a===e.id||c===e.id,className:`p-1 rounded hover:bg-destructive/10 text-muted-foreground hover:text-destructive transition-colors disabled:opacity-50`,title:`Uninstall ${e.id}`,children:c===e.id?R(_e,{className:`h-3 w-3 animate-spin`}):R(ge,{className:`h-3 w-3`})})]})})]},e.id))})]})]})}I();function Ee(e){if(e<60)return`${e}s`;let t=Math.floor(e/60);if(t<60)return`${t}m`;let n=Math.floor(t/60);return n<24?`${n}h ${t%60}m`:`${Math.floor(n/24)}d ${n%24}h`}function De({state:e}){return R(`span`,{className:`text-[10px] px-1.5 py-0.5 rounded-full ${e===`running`?`bg-success/10 text-success`:e===`crashed`||e===`failed`?`bg-destructive/10 text-destructive`:`bg-muted text-muted-foreground`}`,children:e})}var Oe=[`trace`,`debug`,`info`,`warn`,`error`];function ke({proc:e,nodeId:t,defaultExpanded:n,activePanel:i,onTogglePanel:a}){let o=e.services??[],s=o.length===1,[l,u]=k(s||n),[f,p]=k(null),[m,g]=k(`info`),y=e.name.includes(`(core)`),x=C(),w=b(),T=v(),E=async e=>{p(e);try{await x.mutateAsync({nodeId:t,addonId:e})}catch(e){console.error(`Failed to restart addon:`,e)}finally{p(null)}},D=async()=>{p(e.name);try{await w.mutateAsync({nodeId:t,processName:e.name})}catch(e){console.error(`Failed to restart process:`,e)}finally{p(null)}},O=async n=>{let r=`${t}/${e.name}`;try{await T.mutateAsync({nodeId:r,level:n}),g(n)}catch(e){console.error(`Failed to set log level:`,e)}};return H(`div`,{className:`border border-border/50 rounded-lg overflow-hidden`,children:[H(`div`,{role:s?void 0:`button`,tabIndex:s?void 0:0,onClick:s?void 0:()=>u(!l),onKeyDown:s?void 0:e=>{(e.key===`Enter`||e.key===` `)&&u(!l)},className:`flex items-center gap-2 w-full px-3 py-2 bg-muted/20 transition-colors text-left select-none ${s?``:`hover:bg-muted/40 cursor-pointer`}`,children:[s?R(`span`,{className:`h-3 w-3 shrink-0`}):R(l?le:ce,{className:`h-3 w-3 text-muted-foreground shrink-0`}),y?R(re,{className:`h-3.5 w-3.5 text-primary shrink-0`}):R(se,{className:`h-3.5 w-3.5 text-amber-500 shrink-0`}),R(`span`,{className:`text-xs font-semibold flex-1`,children:e.name}),H(`span`,{className:`text-[10px] text-muted-foreground tabular-nums`,children:[`PID `,e.pid]}),R(De,{state:e.state}),H(`span`,{className:`text-[10px] text-muted-foreground tabular-nums`,children:[e.cpuPercent,`% CPU`]}),R(`span`,{className:`text-[10px] text-muted-foreground tabular-nums`,children:ve(e.memoryRss)}),R(`span`,{className:`text-[10px] text-muted-foreground tabular-nums`,children:Ee(e.uptimeSeconds)}),!y&&H(`div`,{className:`flex items-center gap-1`,onClick:e=>e.stopPropagation(),children:[H(d,{children:[R(h,{className:`text-[9px] px-1.5 py-0.5 rounded border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors font-mono`,title:`Set log level`,children:m}),R(c,{align:`end`,className:`min-w-[70px] py-0.5`,children:Oe.map(e=>R(r,{onClick:()=>O(e),className:`h-auto px-2 py-1 text-[10px] font-mono ${e===m?`text-primary font-semibold`:``}`,children:e},e))})]}),R(`button`,{onClick:D,disabled:f===e.name,className:`p-1 rounded hover:bg-muted text-muted-foreground hover:text-foreground transition-colors disabled:opacity-50`,title:`Restart process`,children:R(ne,{className:`h-3 w-3 ${f===e.name?`animate-spin`:``}`})})]})]}),l&&o.length>0&&R(`div`,{className:`divide-y divide-border/30`,children:o.map(e=>H(`div`,{children:[H(`div`,{className:`flex items-center gap-2 px-3 py-1.5 pl-9 hover:bg-muted/10 transition-colors`,children:[R(`div`,{className:`h-1.5 w-1.5 rounded-full shrink-0 ${e.status===`running`?`bg-success`:`bg-muted-foreground/30`}`}),R(`span`,{className:`text-xs font-medium flex-1 min-w-0 truncate`,children:e.addonId}),e.capabilities.length>0&&H(`div`,{className:`flex gap-1 flex-shrink-0`,children:[e.capabilities.slice(0,3).map(e=>R(`span`,{className:`text-[9px] px-1 py-0.5 rounded bg-blue-500/10 text-blue-400 truncate max-w-[80px]`,children:e},e)),e.capabilities.length>3&&H(`span`,{className:`text-[9px] text-muted-foreground`,children:[`+`,e.capabilities.length-3]})]}),H(`div`,{className:`flex items-center gap-1 shrink-0`,children:[R(`button`,{onClick:()=>a(e.addonId,`logs`),className:`p-0.5 rounded transition-colors ${i?.addonId===e.addonId&&i.type===`logs`?`bg-primary/10 text-primary`:`hover:bg-muted text-muted-foreground hover:text-foreground`}`,title:`Show logs for ${e.addonId}`,children:R(he,{className:`h-3 w-3`})}),R(`button`,{onClick:()=>a(e.addonId,`events`),className:`p-0.5 rounded transition-colors ${i?.addonId===e.addonId&&i.type===`events`?`bg-primary/10 text-primary`:`hover:bg-muted text-muted-foreground hover:text-foreground`}`,title:`Show events for ${e.addonId}`,children:R(ee,{className:`h-3 w-3`})}),R(`button`,{onClick:()=>E(e.addonId),disabled:f===e.addonId,className:`p-0.5 rounded hover:bg-muted text-muted-foreground hover:text-foreground transition-colors disabled:opacity-50`,title:`Restart ${e.addonId}`,children:R(ne,{className:`h-3 w-3 ${f===e.addonId?`animate-spin`:``}`})})]})]}),i?.addonId===e.addonId&&i.type===`logs`&&R(`div`,{className:`border-t border-border/40 bg-muted/5`,children:R(_,{addonId:e.addonId,agentId:t,maxHeight:`max-h-48`,showFilters:!1,onClose:()=>a(e.addonId,`logs`)})}),i?.addonId===e.addonId&&i.type===`events`&&R(`div`,{className:`border-t border-border/40 bg-muted/5`,children:R(S,{addonId:e.addonId,category:`addon.*`,maxHeight:`max-h-48`,onClose:()=>a(e.addonId,`events`)})})]},e.addonId))}),l&&o.length===0&&R(`div`,{className:`px-3 py-2 pl-9 text-[10px] text-muted-foreground`,children:`No services`})]})}function Ae({nodeId:e,processes:t}){let[n,r]=k(null),i=(e,t)=>{r(n=>n?.addonId===e&&n.type===t?null:{addonId:e,type:t})};return t.length===0?R(`div`,{className:`py-4 text-xs text-muted-foreground text-center`,children:`No processes on this node`}):R(`div`,{className:`space-y-2 py-1`,children:t.map((t,r)=>R(ke,{proc:t,nodeId:e,defaultExpanded:r===0,activePanel:n,onTogglePanel:i},t.name))})}I();function je(e){return e<60?`${e}s`:e<3600?`${Math.floor(e/60)}m ${e%60}s`:e<86400?`${Math.floor(e/3600)}h ${Math.floor(e%3600/60)}m`:`${Math.floor(e/86400)}d ${Math.floor(e%86400/3600)}h`}function Me(e,t=80){return e.length<=t?e:`…${e.slice(e.length-t+1)}`}function Ne({nodeId:e}){let t=B(),n=s(),[r,i]=k(`all`),a=o(`metrics.node-processes-snapshot`,t=>t.nodeId===e),{data:c}=p({nodeId:e}),l=a?.processes??c,u=P(()=>l?[...l]:[],[l]),d=P(()=>r===`ghost`?u.filter(e=>e.classification===`ghost`):u,[u,r]),f=P(()=>{let e=u.filter(e=>e.classification===`ghost`),t=new Map;for(let n of e)t.has(n.ppid)||t.set(n.ppid,[]),t.get(n.ppid).push(n);return[...t.entries()].filter(([,e])=>e.length>1).map(([e,t])=>({ppid:e,children:t})).toSorted((e,t)=>t.children.length-e.children.length)},[u]),m=x({onSettled:()=>{t.invalidateQueries({queryKey:[[`metricsProvider`,`listNodeProcesses`]]})}}),h=P(()=>{let e=new Map;for(let t of u)e.set(t.pid,t.classification);return e},[u]),g=async(t,r)=>{if(t.classification===`root`||t.classification===`system`)return;let i=t.classification===`ghost`?`ghost`:t.addonId??`process`,a=r?`SIGKILL`:`SIGTERM`;await n({title:`Send ${a}?`,message:`Target pid ${t.pid} (${i}) on node ${e}.`,confirmLabel:`Send ${a}`,variant:`danger`})&&m.mutate({nodeId:e,pid:t.pid,force:r})},_=async(t,n)=>{try{await m.mutateAsync({nodeId:e,pid:t,force:n})}catch{}},v=async r=>{let i=h.get(r.ppid);if(i===`root`||i===`system`){await n({title:`Cannot kill protected ancestor`,message:i===`root`?`pid ${r.ppid} is the current node supervisor. Restart the node via the cluster page instead.`:`pid ${r.ppid} is a system ancestor (concurrently / vite / npm wrapper). Killing it would tear down the dev tree.`,confirmLabel:`OK`,cancelLabel:`Close`,variant:`warning`});return}await n({title:`Kill ghost parent + ${r.children.length} child(ren)?`,message:`SIGKILL parent pid ${r.ppid} and SIGTERM ${r.children.length} ghost child(ren) on node ${e}.`,confirmLabel:`Kill all`,variant:`danger`})&&(await Promise.all([_(r.ppid,!0),...r.children.map(e=>_(e.pid,!1))]),t.invalidateQueries({queryKey:[[`metricsProvider`,`listNodeProcesses`]]}))},y=async()=>{let r=u.filter(e=>e.classification===`ghost`);r.length!==0&&await n({title:`Kill all ${r.length} ghost process(es)?`,message:`SIGKILL ${r.length} ghost process(es) on node ${e}. This is irreversible.`,confirmLabel:`Kill all`,variant:`danger`})&&(await Promise.all(r.map(e=>_(e.pid,!0))),t.invalidateQueries({queryKey:[[`metricsProvider`,`listNodeProcesses`]]}))},b=u.filter(e=>e.classification===`ghost`).length,S=u.filter(e=>e.classification===`managed`).length,C=u.filter(e=>e.classification===`root`).length,w=u.filter(e=>e.classification===`system`).length;return H(`div`,{className:`space-y-4`,children:[H(`div`,{className:`flex items-start justify-between gap-4`,children:[H(`p`,{className:`text-[11px] text-foreground-subtle`,children:[`ps`," scan + kernel `$process.list` cross-reference. Ghosts = camstack-shaped commands with no managed binding (usually orphaned to ppid=1). Refreshes every 10s."]}),H(`button`,{type:`button`,onClick:()=>t.invalidateQueries({queryKey:[[`metricsProvider`,`listNodeProcesses`]]}),className:`inline-flex items-center gap-1 rounded border border-border px-2 py-1 text-[11px] text-foreground hover:bg-surface-hover`,children:[R(te,{className:`h-3 w-3`}),` Refresh`]})]}),H(`div`,{className:`grid grid-cols-4 gap-3`,children:[H(`div`,{className:`rounded-lg border border-border p-3`,children:[R(`div`,{className:`text-[10px] uppercase tracking-wider text-foreground-subtle`,children:`Root`}),R(`div`,{className:`text-xl font-semibold text-foreground`,children:C})]}),H(`div`,{className:`rounded-lg border border-border p-3`,children:[R(`div`,{className:`text-[10px] uppercase tracking-wider text-foreground-subtle`,children:`Managed`}),R(`div`,{className:`text-xl font-semibold text-foreground`,children:S})]}),H(`div`,{className:`rounded-lg border border-border p-3`,children:[R(`div`,{className:`text-[10px] uppercase tracking-wider text-foreground-subtle`,children:`System`}),R(`div`,{className:`text-xl font-semibold text-foreground`,children:w})]}),H(`div`,{className:`rounded-lg border p-3 ${b>0?`border-destructive/40 bg-destructive/5`:`border-border`}`,children:[H(`div`,{className:`text-[10px] uppercase tracking-wider text-foreground-subtle flex items-center gap-1`,children:[b>0&&R(Se,{className:`h-3 w-3 text-destructive`}),` Ghosts`]}),R(`div`,{className:`text-xl font-semibold ${b>0?`text-destructive`:`text-foreground`}`,children:b})]})]}),f.length>0&&H(`div`,{className:`rounded-lg border border-amber-500/40 bg-amber-500/5 p-3`,children:[H(`div`,{className:`flex items-center gap-1 text-[11px] font-semibold text-amber-400 mb-2`,children:[R(me,{className:`h-3 w-3`}),` Recurring ghost parents (`,f.length,`)`]}),R(`div`,{className:`space-y-1.5`,children:f.map(e=>H(`div`,{className:`text-[11px] text-foreground flex items-center justify-between gap-2`,children:[H(`div`,{className:`flex items-center gap-2`,children:[H(`span`,{className:`font-mono text-foreground-subtle`,children:[`ppid `,e.ppid]}),H(`span`,{children:[`→ `,e.children.length,` ghost(s)`]})]}),H(`button`,{type:`button`,disabled:m.isPending,onClick:()=>{v(e)},className:`inline-flex items-center gap-1 rounded border border-amber-500/40 bg-amber-500/10 px-2 py-0.5 text-[10px] text-amber-400 hover:bg-amber-500/20 disabled:opacity-30`,children:[R(Se,{className:`h-3 w-3`}),` Kill parent + `,e.children.length]})]},e.ppid))})]}),H(`div`,{className:`flex items-center justify-between gap-2 text-[11px]`,children:[H(`div`,{className:`flex items-center gap-2`,children:[R(`span`,{className:`text-foreground-subtle`,children:`Filter:`}),H(`button`,{type:`button`,className:`px-2 py-0.5 rounded ${r===`all`?`bg-primary text-primary-foreground`:`border border-border text-foreground hover:bg-surface-hover`}`,onClick:()=>i(`all`),children:[`All (`,u.length,`)`]}),H(`button`,{type:`button`,className:`px-2 py-0.5 rounded ${r===`ghost`?`bg-destructive text-destructive-foreground`:`border border-border text-foreground hover:bg-surface-hover`}`,onClick:()=>i(`ghost`),children:[`Ghost only (`,b,`)`]})]}),b>0&&H(`button`,{type:`button`,disabled:m.isPending,onClick:()=>{y()},className:`inline-flex items-center gap-1 rounded border border-destructive/40 bg-destructive/10 px-2 py-1 text-[11px] font-medium text-destructive hover:bg-destructive/20 disabled:opacity-30`,children:[R(Se,{className:`h-3 w-3`}),` Kill all `,b,` ghost(s)`]})]}),R(`div`,{className:`rounded-lg border border-border overflow-x-auto`,children:H(`table`,{className:`w-full text-xs`,children:[R(`thead`,{className:`bg-surface`,children:H(`tr`,{className:`text-foreground-subtle text-[10px] uppercase tracking-wider`,children:[R(`th`,{className:`text-left px-3 py-2`,children:`Class`}),R(`th`,{className:`text-right px-3 py-2`,children:`PID`}),R(`th`,{className:`text-right px-3 py-2`,children:`PPID`}),R(`th`,{className:`text-left px-3 py-2`,children:`Addon`}),R(`th`,{className:`text-left px-3 py-2`,children:`Command`}),R(`th`,{className:`text-right px-3 py-2`,children:`CPU%`}),R(`th`,{className:`text-right px-3 py-2`,children:`RSS`}),R(`th`,{className:`text-right px-3 py-2`,children:`Uptime`}),R(`th`,{className:`w-44`})]})}),H(`tbody`,{children:[d.length===0&&R(`tr`,{children:R(`td`,{colSpan:9,className:`px-3 py-4 text-center text-foreground-subtle text-[11px]`,children:r===`ghost`?`No ghost processes detected.`:`Scanning…`})}),d.map(e=>H(`tr`,{className:`border-t border-border ${e.classification===`ghost`?`bg-destructive/5`:``}`,children:[R(`td`,{className:`px-3 py-2`,children:R(`span`,{className:`inline-block rounded-full px-1.5 py-0.5 text-[10px] font-medium ${e.classification===`ghost`?`bg-destructive/20 text-destructive`:e.classification===`root`?`bg-sky-500/20 text-sky-400`:e.classification===`system`?`bg-foreground-subtle/20 text-foreground-subtle`:`bg-success/20 text-success`}`,children:e.classification})}),R(`td`,{className:`px-3 py-2 text-right font-mono text-foreground`,children:e.pid}),H(`td`,{className:`px-3 py-2 text-right font-mono text-foreground-subtle`,children:[e.ppid,e.orphaned?` ⚠`:``]}),R(`td`,{className:`px-3 py-2 text-foreground-subtle text-[11px]`,children:e.addonId??`—`}),R(`td`,{className:`px-3 py-2 font-mono text-[10px] text-foreground-subtle break-all`,children:Me(e.command)}),R(`td`,{className:`px-3 py-2 text-right text-foreground`,children:e.cpuPercent.toFixed(1)}),R(`td`,{className:`px-3 py-2 text-right text-foreground`,children:ve(e.memoryRssBytes)}),R(`td`,{className:`px-3 py-2 text-right text-foreground-subtle`,children:je(e.uptimeSec)}),R(`td`,{className:`px-3 py-2 text-right`,children:H(`div`,{className:`inline-flex gap-1`,children:[H(`button`,{type:`button`,disabled:m.isPending||e.classification===`root`||e.classification===`system`,onClick:()=>{g(e,!1)},title:`SIGTERM`,className:`inline-flex items-center gap-1 px-1.5 py-0.5 rounded border border-border text-[10px] text-foreground hover:bg-surface-hover disabled:opacity-30`,children:[R(ge,{className:`h-3 w-3`}),` Term`]}),H(`button`,{type:`button`,disabled:m.isPending||e.classification===`root`||e.classification===`system`,onClick:()=>{g(e,!0)},title:`SIGKILL`,className:`inline-flex items-center gap-1 px-1.5 py-0.5 rounded border border-destructive/30 text-[10px] text-destructive hover:bg-destructive/10 disabled:opacity-30`,children:[R(Se,{className:`h-3 w-3`}),` Kill`]})]})})]},e.pid))]})]})}),m.isError&&H(`div`,{className:`rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-[11px] text-destructive`,children:[`Kill failed:`,` `,m.error instanceof Error?m.error.message:`unknown`]})]})}function Pe({nodeId:e,addonIds:t}){return t.length===0?R(`div`,{className:`py-4 text-xs text-muted-foreground text-center`,children:`No addons on this node`}):R(`div`,{className:`w-full py-2`,children:R(ye,{nodeId:e,addonIds:t,level:`global`})})}I();function Fe({nodeId:e,addons:t}){let n=B(),{data:r,isLoading:i}=a({nodeId:e}),o=P(()=>{let e=new Map;for(let n of t)for(let t of n.capabilities){let r=e.get(t)??[];r.push(n.id),e.set(t,r)}return[...e.entries()].toSorted(([e],[t])=>e.localeCompare(t)).map(([e,t])=>({capName:e,providers:t}))},[t]),s=u({onSuccess:()=>{n.invalidateQueries({queryKey:[[`pipelineOrchestrator`,`getCapabilityBindings`]]})}});return o.length===0?R(`div`,{className:`py-4 text-xs text-muted-foreground text-center`,children:`No capabilities on this node`}):H(`table`,{className:`w-full text-xs`,children:[R(`thead`,{children:H(`tr`,{className:`text-muted-foreground text-left`,children:[R(`th`,{className:`py-2 font-medium w-1/2`,children:`Capability`}),R(`th`,{className:`py-2 font-medium`,children:`Bound provider`})]})}),R(`tbody`,{children:o.map(({capName:t,providers:n})=>{let a=r?.[t]??n[0]??``,o=n.length===1;return H(`tr`,{className:`border-t border-border/50`,children:[R(`td`,{className:`py-2 font-medium`,children:t}),R(`td`,{className:`py-2`,children:R(`select`,{value:a,onChange:n=>s.mutate({nodeId:e,capName:t,addonId:n.target.value}),disabled:o||s.isPending||i,className:`w-full rounded-md border border-border bg-surface px-2 py-1 text-xs text-foreground focus:outline-none focus:ring-1 focus:ring-primary disabled:opacity-60`,title:o?`Only one provider installed — choice becomes available once a second addon registers this capability`:void 0,children:n.map(e=>R(`option`,{value:e,children:e},e))})})]},t)})})]})}I();function Ie(e){if(e==null)return`—`;let t=Math.floor(e/1e3),n=Math.floor(t/86400),r=Math.floor(t%86400/3600),i=Math.floor(t%3600/60);return n>0?`${n}d ${r}h ${i}m`:r>0?`${r}h ${i}m`:`${i}m`}function Le(e){let[t,n]=k(!1),[r,i]=k(e.name),a=B(),o=w({onSuccess:()=>{a.invalidateQueries({queryKey:[[`nodes`,`topology`]]})}}),s=(e.localIps??[]).filter(e=>!e.includes(`:`)),c=(e.localIps??[]).filter(e=>e.includes(`:`)),l=async()=>{if(!r.trim()||r===e.name){n(!1);return}try{await o.mutateAsync({nodeId:e.nodeId,name:r.trim()}),n(!1)}catch(e){console.error(`Rename failed:`,e)}},u=[[`Node ID`,R(`span`,{className:`font-mono text-xs`,children:e.nodeId})],[`Display Name`,t?H(`div`,{className:`flex items-center gap-1.5`,children:[R(`input`,{type:`text`,className:`flex-1 px-2 py-0.5 text-xs border border-border rounded bg-background focus:outline-none focus:ring-1 focus:ring-primary`,value:r,onChange:e=>i(e.target.value),onKeyDown:e=>{e.key===`Enter`&&l(),e.key===`Escape`&&n(!1)},disabled:o.isPending,autoFocus:!0}),R(`button`,{onClick:()=>void l(),disabled:o.isPending,className:`p-0.5 text-success hover:bg-success/10 rounded`,title:`Save`,children:R(oe,{className:`h-3.5 w-3.5`})}),R(`button`,{onClick:()=>n(!1),className:`p-0.5 text-muted-foreground hover:bg-muted rounded`,title:`Cancel`,children:R(de,{className:`h-3.5 w-3.5`})})]}):H(`div`,{className:`flex items-center gap-1.5`,children:[R(`span`,{className:`text-xs`,children:e.name}),!e.isHub&&R(`button`,{onClick:()=>{i(e.name),n(!0)},className:`p-0.5 text-muted-foreground hover:text-primary rounded`,title:`Rename`,children:R(G,{className:`h-3 w-3`})})]})],[`Hostname`,R(`span`,{className:`text-xs`,children:e.hostname})],[`Role`,e.isHub?R(`span`,{className:`text-[10px] px-1.5 py-0.5 rounded bg-primary/10 text-primary font-medium`,children:`Hub`}):R(`span`,{className:`text-[10px] px-1.5 py-0.5 rounded bg-muted text-muted-foreground font-medium`,children:`Agent`})],[`Platform`,H(`span`,{className:`text-xs`,children:[e.platform,` / `,e.arch]})],[`CPU`,H(`span`,{className:`text-xs`,children:[e.cpuModel??`—`,` (`,e.cpuCores,` cores)`]})],[`Memory`,R(`span`,{className:`text-xs`,children:e.memoryMB>0?`${(e.memoryMB/1024).toFixed(1)} GB`:`—`})],[`Uptime`,R(`span`,{className:`text-xs`,children:Ie(e.uptime)})],[`Engines`,e.engines.length>0?R(`div`,{className:`flex flex-wrap gap-1`,children:e.engines.map(e=>R(`span`,{className:`text-[9px] px-1.5 py-0.5 rounded-full bg-purple-500/10 text-purple-400 font-medium`,children:e},e))}):R(`span`,{className:`text-xs text-muted-foreground`,children:`—`})]];return s.length>0&&u.push([`IPv4`,R(`div`,{className:`flex flex-wrap gap-1.5`,children:s.map((e,t)=>R(`span`,{className:`font-mono text-xs px-1.5 py-0.5 rounded bg-muted`,children:e},`${e}-${t}`))})]),c.length>0&&u.push([`IPv6`,R(`div`,{className:`flex flex-wrap gap-1.5`,children:c.map((e,t)=>R(`span`,{className:`font-mono text-[10px] px-1.5 py-0.5 rounded bg-muted truncate max-w-[280px]`,title:e,children:e},`${e}-${t}`))})]),R(`div`,{className:`py-2`,children:R(`table`,{className:`w-full text-sm`,children:R(`tbody`,{children:u.map(([e,t],n)=>H(`tr`,{className:n%2==0?`bg-muted/20`:``,children:[R(`td`,{className:`py-1.5 px-2 text-xs font-medium text-muted-foreground w-28 align-top whitespace-nowrap`,children:e}),R(`td`,{className:`py-1.5 px-2`,children:t})]},e))})})})}I();function Re({node:e}){let[t,n]=k(`info`),r=e.processes??[],i=e.addons.map(e=>e.id);return e.isOnline?H(`div`,{className:`border border-border rounded-xl overflow-hidden`,children:[H(`div`,{className:`flex items-center gap-3 px-4 py-3 bg-muted/30 border-b border-border`,children:[R(`div`,{className:`w-2.5 h-2.5 rounded-full bg-success`}),R(`span`,{className:`text-sm font-semibold`,children:e.name}),H(`span`,{className:`text-xs text-muted-foreground`,children:[e.cpuModel??e.platform,` ·`,` `,e.memoryMB>0?`${Math.round(e.memoryMB/1024)}GB`:``,` · `,e.arch]}),e.engines.map(e=>R(`span`,{className:`text-[9px] px-1.5 py-0.5 rounded-full bg-purple-500/10 text-purple-400 font-medium`,children:e},e)),H(`div`,{className:`ml-auto flex gap-3 text-xs text-muted-foreground`,children:[H(`span`,{className:`flex items-center gap-1`,children:[R(fe,{className:`h-3 w-3`}),` `,e.cpuPercent,`%`]}),H(`span`,{className:`flex items-center gap-1`,children:[R(xe,{className:`h-3 w-3`}),` `,e.memoryPercent,`%`]})]})]}),R(`div`,{className:`flex border-b border-border px-4`,children:[`info`,`addons`,`forks`,`processes`,`settings`,`capabilities`].map(i=>R(`button`,{onClick:()=>n(i),className:`px-3 py-2 text-xs font-medium border-b-2 transition-colors ${t===i?`border-primary text-primary`:`border-transparent text-muted-foreground hover:text-foreground`}`,children:i===`info`?`Info`:i===`addons`?`Addons (${e.addons.length})`:i===`forks`?`Forks (${r.length})`:i===`processes`?`Processes`:i===`settings`?`Settings`:`Capabilities`},i))}),H(`div`,{className:`px-4 py-2`,children:[t===`info`&&R(Le,{nodeId:e.id,name:e.name,hostname:e.hostname,platform:e.platform,arch:e.arch,cpuModel:e.cpuModel,cpuCores:e.cpuCores,memoryMB:e.memoryMB,engines:e.engines,isHub:e.isHub,uptime:e.uptime,localIps:e.localIps}),t===`addons`&&R(Te,{nodeId:e.id,addons:e.addons,isHub:e.isHub}),t===`forks`&&R(Ae,{nodeId:e.id,processes:r}),t===`processes`&&R(Ne,{nodeId:e.id}),t===`settings`&&R(Pe,{nodeId:e.id,addonIds:i}),t===`capabilities`&&R(Fe,{nodeId:e.id,addons:e.addons})]})]}):H(`div`,{className:`border border-border rounded-xl overflow-hidden opacity-60`,children:[H(`div`,{className:`flex items-center gap-3 px-4 py-3 bg-muted/30`,children:[R(`div`,{className:`w-2.5 h-2.5 rounded-full bg-destructive`}),R(`span`,{className:`text-sm font-semibold`,children:e.name}),H(`span`,{className:`text-xs text-muted-foreground`,children:[e.cpuModel??e.platform,` ·`,` `,e.memoryMB>0?`${Math.round(e.memoryMB/1024)}GB`:``,` · `,e.arch]}),e.engines.map(e=>R(`span`,{className:`text-[9px] px-1.5 py-0.5 rounded-full bg-purple-500/10 text-purple-400 font-medium`,children:e},e)),R(`span`,{className:`ml-auto text-xs px-2 py-0.5 rounded-full bg-destructive/10 text-destructive`,children:`offline`})]}),H(`div`,{className:`px-4 py-3 text-xs text-muted-foreground`,children:[e.addons.length,` addon`,e.addons.length===1?``:`s`,` assigned — will resume when node reconnects`]})]})}function ze({nodes:e}){return R(`div`,{className:`flex flex-col gap-4`,children:[...e].toSorted((e,t)=>e.isHub?-1:t.isHub?1:e.isOnline&&!t.isOnline?-1:!e.isOnline&&t.isOnline?1:e.name.localeCompare(t.name)).map(e=>R(Re,{node:e},e.id))})}var Be=[{id:`providers`,label:`Providers`,color:`#3b82f6`},{id:`pipeline`,label:`Pipeline`,color:`#8b5cf6`},{id:`analytics`,label:`Analytics`,color:`#06b6d4`},{id:`exports`,label:`Exports`,color:`#10b981`},{id:`messaging`,label:`Messaging`,color:`#f59e0b`},{id:`networking`,label:`Networking`,color:`#ef4444`},{id:`system`,label:`System`,color:`#6b7280`}],Ve=Be[Be.length-1];function He(e){return e==null||e===``?Ve:Be.find(t=>t.id===e)??Ve}I();function Ue(e,t){return e===0?`healthy`:t===0?`failed`:t<e?`degraded`:`healthy`}function We({category:e,total:t,healthy:n,onSelect:r}){let i=He(e),a=Ue(t,n),o=t>0,s=O(()=>{o&&r(e)},[o,r,e]),c=t===0?0:Math.round(n/t*100),l=H(U,{children:[H(`div`,{className:`flex items-baseline justify-between`,children:[R(`span`,{className:`text-[10px] font-medium`,style:{color:i.color},children:i.label}),H(`span`,{className:`text-[10px] tabular-nums text-muted-foreground`,children:[n,`/`,t]})]}),R(`div`,{"data-testid":`health-bar`,"data-state":a,className:`mt-1 h-[3px] w-full rounded-full bg-muted overflow-hidden`,"aria-hidden":`true`,children:R(`div`,{className:a===`healthy`?`h-full bg-success`:a===`degraded`?`h-full bg-gradient-to-r from-success to-amber-500`:`h-full bg-gradient-to-r from-success to-destructive`,style:{width:`${c}%`}})})]});return o?R(`button`,{type:`button`,onClick:s,className:`rounded-md px-2 py-1.5 cursor-pointer text-left hover:bg-muted/50 transition-colors`,"aria-label":`${i.label}: ${n}/${t}`,children:l}):R(`div`,{className:`rounded-md px-2 py-1.5 opacity-50 select-none`,children:l})}var Ge=z(We);I();function Ke({node:e,onSelectCategory:t}){let n=O(e=>{t(e)},[t]),r=e.isHub?`border-2 border-success`:`border-2 border-dashed border-primary/60 bg-primary/5`,i=(e.localIps??[]).filter(e=>!e.includes(`:`));return H(`div`,{className:`rounded-xl bg-surface px-3 py-2.5 min-w-[260px] max-w-[320px] ${e.isOnline?r:`border-2 border-dashed border-muted-foreground/30 opacity-50`}`,"data-node-id":e.id,children:[H(`div`,{className:`flex items-center gap-1.5 mb-1.5`,children:[R(`div`,{className:`w-2 h-2 rounded-full ${e.isOnline?`bg-success`:`bg-destructive`}`}),R(`span`,{className:`text-xs font-semibold truncate flex-1`,children:e.name}),e.isHub?R(`span`,{className:`text-[8px] px-1 py-0.5 rounded bg-primary/10 text-primary font-medium`,children:`HUB`}):R(`span`,{className:`text-[8px] px-1 py-0.5 rounded bg-muted text-muted-foreground font-medium`,children:`AGENT`})]}),(e.hostname||i.length>0)&&H(`div`,{className:`text-[9px] text-muted-foreground mb-1.5 space-y-0.5`,children:[e.hostname&&R(`div`,{className:`truncate`,children:e.hostname}),i.length>0&&R(`div`,{className:`truncate font-mono opacity-70`,children:i.join(`, `)})]}),e.isOnline&&H(`div`,{className:`flex items-center gap-3 text-[10px] text-muted-foreground mb-2`,children:[H(`span`,{className:`flex items-center gap-0.5`,children:[R(fe,{className:`h-2.5 w-2.5`}),e.cpuPercent,`%`]}),H(`span`,{className:`flex items-center gap-0.5`,children:[R(xe,{className:`h-2.5 w-2.5`}),e.memoryPercent,`%`]})]}),R(`div`,{className:`grid grid-cols-3 gap-1`,children:e.categories.map(e=>R(Ge,{category:e.category,total:e.total,healthy:e.healthy,onSelect:n},e.category))})]})}var qe=z(Ke);I();var Je=320,Ye=160,Xe=`cluster-dock-height`;function Ze(){return typeof window>`u`?800:Math.round(window.innerHeight*.85)}function Qe(e){return Math.min(Math.max(e,Ye),Ze())}function $e(){if(typeof window>`u`)return Je;let e=window.localStorage.getItem(Xe),t=e===null?NaN:Number.parseInt(e,10);return Number.isFinite(t)?t:Je}function et({mode:e,onClose:t,onModeChange:n,renderCategoryDetail:r}){let i=(e,t)=>{n({kind:`log`,agentId:e,addonId:t})},[a,o]=k(()=>Qe($e())),s=F(a);s.current=a;let c=O(e=>{o(Qe(window.innerHeight-e.clientY))},[]),l=O(()=>{window.removeEventListener(`pointermove`,c),window.removeEventListener(`pointerup`,l),document.body.style.cursor=``,document.body.style.userSelect=``,window.localStorage.setItem(Xe,String(s.current))},[c]),u=O(e=>{e.preventDefault(),window.addEventListener(`pointermove`,c),window.addEventListener(`pointerup`,l),document.body.style.cursor=`row-resize`,document.body.style.userSelect=`none`},[c,l]);return N(()=>{let e=()=>o(e=>Qe(e));return window.addEventListener(`resize`,e),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`pointermove`,c),window.removeEventListener(`pointerup`,l)}},[c,l]),H(`div`,{className:`fixed bottom-0 left-0 right-0 border-t border-border bg-background shadow-lg z-40 flex flex-col`,style:{height:a},children:[R(`div`,{role:`separator`,"aria-orientation":`horizontal`,"aria-label":`Resize dock`,onPointerDown:u,className:`group absolute -top-1 left-0 right-0 h-2 cursor-row-resize`,children:R(`div`,{className:`mx-auto mt-0.5 h-1 w-10 rounded-full bg-border transition-colors group-hover:bg-muted-foreground/50`})}),H(`div`,{className:`flex items-center justify-between px-3 py-1.5 border-b border-border`,children:[R(`span`,{className:`text-xs font-semibold text-muted-foreground`,children:e.kind===`log`?`Logs · ${e.addonId??e.agentId}`:`${e.category} · ${e.nodeId}`}),R(`button`,{type:`button`,onClick:t,className:`p-1 rounded hover:bg-muted text-muted-foreground`,"aria-label":`Close dock`,children:R(de,{className:`h-3 w-3`})})]}),R(`div`,{className:`flex-1 min-h-0 ${e.kind===`log`?`overflow-hidden`:`overflow-y-auto`}`,children:e.kind===`log`?R(y,{addonId:e.addonId,agentId:e.agentId,showScope:!0,onClose:t}):r({nodeId:e.nodeId,category:e.category,switchToLog:i})})]})}var tt=z(et);I();function nt(e){return`${Math.round(e/1024/1024)}MB`}function rt({nodeId:e,category:t,addons:n,onShowLog:r,onRestartAddon:i}){let a=O(t=>r(e,t),[e,r]),o=O(t=>i(e,t),[e,i]);return R(`div`,{className:`grid grid-cols-2 md:grid-cols-4 gap-2 p-3 overflow-auto`,"data-category":t,children:n.map(e=>{let t=e.status===`running`;return H(`div`,{"data-testid":`addon-tile`,"data-addon-id":e.id,className:`rounded-md border border-border px-2 py-1.5 text-[10px] flex items-center gap-2`,children:[R(`div`,{"data-status":e.status,className:`w-2 h-2 rounded-full ${t?`bg-success`:`bg-destructive`}`}),H(`div`,{className:`flex-1 min-w-0`,children:[R(`div`,{className:`font-medium truncate`,children:e.id}),H(`div`,{className:`text-muted-foreground`,children:[e.cpuPercent,`% · `,nt(e.memoryRss)]})]}),R(`button`,{type:`button`,onClick:()=>a(e.id),"aria-label":`Show logs for ${e.id}`,className:`p-1 rounded hover:bg-muted text-muted-foreground`,children:R(he,{className:`h-3 w-3`})}),R(`button`,{type:`button`,onClick:()=>o(e.id),"aria-label":`Restart ${e.id}`,className:`p-1 rounded hover:bg-muted text-muted-foreground`,children:R(ne,{className:`h-3 w-3`})})]},e.id)})})}var it=z(rt);I();function at({topology:e}){let[t,n]=k(null),r=C(),i=e.filter(e=>e.isOnline),a=O((e,t)=>{n({kind:`category-detail`,nodeId:e,category:t})},[]),o=O(()=>n(null),[]),s=O((t,n)=>e.find(e=>e.id===t)?.categories.find(e=>e.category===n)?.addons??[],[e]),c=O((e,t)=>{r.mutateAsync({nodeId:e,addonId:t})},[r]);return H(`div`,{className:`flex flex-col flex-1 min-h-0`,children:[R(`div`,{className:`flex flex-wrap gap-4 p-4 overflow-auto flex-1`,children:i.map(e=>R(qe,{node:e,onSelectCategory:t=>a(e.id,t)},e.id))}),t&&R(tt,{mode:t,onClose:o,onModeChange:n,renderCategoryDetail:({nodeId:e,category:t,switchToLog:n})=>R(it,{nodeId:e,category:t,addons:s(e,t),onShowLog:(e,t)=>n(e,t),onRestartAddon:c})})]})}function K(e){if(typeof e==`string`||typeof e==`number`)return``+e;let t=``;if(Array.isArray(e))for(let n=0,r;n<e.length;n++)(r=K(e[n]))!==``&&(t+=(t&&` `)+r);else for(let n in e)e[n]&&(t+=(t&&` `)+n);return t}var ot={value:()=>{}};function st(){for(var e=0,t=arguments.length,n={},r;e<t;++e){if(!(r=arguments[e]+``)||r in n||/[\s.]/.test(r))throw Error(`illegal type: `+r);n[r]=[]}return new ct(n)}function ct(e){this._=e}function lt(e,t){return e.trim().split(/^|\s+/).map(function(e){var n=``,r=e.indexOf(`.`);if(r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),e&&!t.hasOwnProperty(e))throw Error(`unknown type: `+e);return{type:e,name:n}})}ct.prototype=st.prototype={constructor:ct,on:function(e,t){var n=this._,r=lt(e+``,n),i,a=-1,o=r.length;if(arguments.length<2){for(;++a<o;)if((i=(e=r[a]).type)&&(i=ut(n[i],e.name)))return i;return}if(t!=null&&typeof t!=`function`)throw Error(`invalid callback: `+t);for(;++a<o;)if(i=(e=r[a]).type)n[i]=dt(n[i],e.name,t);else if(t==null)for(i in n)n[i]=dt(n[i],e.name,null);return this},copy:function(){var e={},t=this._;for(var n in t)e[n]=t[n].slice();return new ct(e)},call:function(e,t){if((i=arguments.length-2)>0)for(var n=Array(i),r=0,i,a;r<i;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(e))throw Error(`unknown type: `+e);for(a=this._[e],r=0,i=a.length;r<i;++r)a[r].value.apply(t,n)},apply:function(e,t,n){if(!this._.hasOwnProperty(e))throw Error(`unknown type: `+e);for(var r=this._[e],i=0,a=r.length;i<a;++i)r[i].value.apply(t,n)}};function ut(e,t){for(var n=0,r=e.length,i;n<r;++n)if((i=e[n]).name===t)return i.value}function dt(e,t,n){for(var r=0,i=e.length;r<i;++r)if(e[r].name===t){e[r]=ot,e=e.slice(0,r).concat(e.slice(r+1));break}return n!=null&&e.push({name:t,value:n}),e}var ft={svg:`http://www.w3.org/2000/svg`,xhtml:`http://www.w3.org/1999/xhtml`,xlink:`http://www.w3.org/1999/xlink`,xml:`http://www.w3.org/XML/1998/namespace`,xmlns:`http://www.w3.org/2000/xmlns/`};function pt(e){var t=e+=``,n=t.indexOf(`:`);return n>=0&&(t=e.slice(0,n))!==`xmlns`&&(e=e.slice(n+1)),ft.hasOwnProperty(t)?{space:ft[t],local:e}:e}function mt(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===`http://www.w3.org/1999/xhtml`&&t.documentElement.namespaceURI===`http://www.w3.org/1999/xhtml`?t.createElement(e):t.createElementNS(n,e)}}function ht(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function gt(e){var t=pt(e);return(t.local?ht:mt)(t)}function _t(){}function vt(e){return e==null?_t:function(){return this.querySelector(e)}}function yt(e){typeof e!=`function`&&(e=vt(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=Array(o),c,l,u=0;u<o;++u)(c=a[u])&&(l=e.call(c,c.__data__,u,a))&&(`__data__`in c&&(l.__data__=c.__data__),s[u]=l);return new q(r,this._parents)}function bt(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function xt(){return[]}function St(e){return e==null?xt:function(){return this.querySelectorAll(e)}}function Ct(e){return function(){return bt(e.apply(this,arguments))}}function wt(e){e=typeof e==`function`?Ct(e):St(e);for(var t=this._groups,n=t.length,r=[],i=[],a=0;a<n;++a)for(var o=t[a],s=o.length,c,l=0;l<s;++l)(c=o[l])&&(r.push(e.call(c,c.__data__,l,o)),i.push(c));return new q(r,i)}function Tt(e){return function(){return this.matches(e)}}function Et(e){return function(t){return t.matches(e)}}var Dt=Array.prototype.find;function Ot(e){return function(){return Dt.call(this.children,e)}}function kt(){return this.firstElementChild}function At(e){return this.select(e==null?kt:Ot(typeof e==`function`?e:Et(e)))}var jt=Array.prototype.filter;function Mt(){return Array.from(this.children)}function Nt(e){return function(){return jt.call(this.children,e)}}function Pt(e){return this.selectAll(e==null?Mt:Nt(typeof e==`function`?e:Et(e)))}function Ft(e){typeof e!=`function`&&(e=Tt(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=[],c,l=0;l<o;++l)(c=a[l])&&e.call(c,c.__data__,l,a)&&s.push(c);return new q(r,this._parents)}function It(e){return Array(e.length)}function Lt(){return new q(this._enter||this._groups.map(It),this._parents)}function Rt(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}Rt.prototype={constructor:Rt,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};function zt(e){return function(){return e}}function Bt(e,t,n,r,i,a){for(var o=0,s,c=t.length,l=a.length;o<l;++o)(s=t[o])?(s.__data__=a[o],r[o]=s):n[o]=new Rt(e,a[o]);for(;o<c;++o)(s=t[o])&&(i[o]=s)}function Vt(e,t,n,r,i,a,o){var s,c,l=new Map,u=t.length,d=a.length,f=Array(u),p;for(s=0;s<u;++s)(c=t[s])&&(f[s]=p=o.call(c,c.__data__,s,t)+``,l.has(p)?i[s]=c:l.set(p,c));for(s=0;s<d;++s)p=o.call(e,a[s],s,a)+``,(c=l.get(p))?(r[s]=c,c.__data__=a[s],l.delete(p)):n[s]=new Rt(e,a[s]);for(s=0;s<u;++s)(c=t[s])&&l.get(f[s])===c&&(i[s]=c)}function Ht(e){return e.__data__}function Ut(e,t){if(!arguments.length)return Array.from(this,Ht);var n=t?Vt:Bt,r=this._parents,i=this._groups;typeof e!=`function`&&(e=zt(e));for(var a=i.length,o=Array(a),s=Array(a),c=Array(a),l=0;l<a;++l){var u=r[l],d=i[l],f=d.length,p=Wt(e.call(u,u&&u.__data__,l,r)),m=p.length,h=s[l]=Array(m),g=o[l]=Array(m);n(u,d,h,g,c[l]=Array(f),p,t);for(var _=0,v=0,y,b;_<m;++_)if(y=h[_]){for(_>=v&&(v=_+1);!(b=g[v])&&++v<m;);y._next=b||null}}return o=new q(o,r),o._enter=s,o._exit=c,o}function Wt(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function Gt(){return new q(this._exit||this._groups.map(It),this._parents)}function Kt(e,t,n){var r=this.enter(),i=this,a=this.exit();return typeof e==`function`?(r=e(r),r&&=r.selection()):r=r.append(e+``),t!=null&&(i=t(i),i&&=i.selection()),n==null?a.remove():n(a),r&&i?r.merge(i).order():i}function qt(e){for(var t=e.selection?e.selection():e,n=this._groups,r=t._groups,i=n.length,a=r.length,o=Math.min(i,a),s=Array(i),c=0;c<o;++c)for(var l=n[c],u=r[c],d=l.length,f=s[c]=Array(d),p,m=0;m<d;++m)(p=l[m]||u[m])&&(f[m]=p);for(;c<i;++c)s[c]=n[c];return new q(s,this._parents)}function Jt(){for(var e=this._groups,t=-1,n=e.length;++t<n;)for(var r=e[t],i=r.length-1,a=r[i],o;--i>=0;)(o=r[i])&&(a&&o.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(o,a),a=o);return this}function Yt(e){e||=Xt;function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}for(var n=this._groups,r=n.length,i=Array(r),a=0;a<r;++a){for(var o=n[a],s=o.length,c=i[a]=Array(s),l,u=0;u<s;++u)(l=o[u])&&(c[u]=l);c.sort(t)}return new q(i,this._parents).order()}function Xt(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function Zt(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function Qt(){return Array.from(this)}function $t(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],i=0,a=r.length;i<a;++i){var o=r[i];if(o)return o}return null}function en(){let e=0;for(let t of this)++e;return e}function tn(){return!this.node()}function nn(e){for(var t=this._groups,n=0,r=t.length;n<r;++n)for(var i=t[n],a=0,o=i.length,s;a<o;++a)(s=i[a])&&e.call(s,s.__data__,a,i);return this}function rn(e){return function(){this.removeAttribute(e)}}function an(e){return function(){this.removeAttributeNS(e.space,e.local)}}function on(e,t){return function(){this.setAttribute(e,t)}}function sn(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function cn(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}}function ln(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}}function un(e,t){var n=pt(e);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((t==null?n.local?an:rn:typeof t==`function`?n.local?ln:cn:n.local?sn:on)(n,t))}function dn(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function fn(e){return function(){this.style.removeProperty(e)}}function pn(e,t,n){return function(){this.style.setProperty(e,t,n)}}function mn(e,t,n){return function(){var r=t.apply(this,arguments);r==null?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function hn(e,t,n){return arguments.length>1?this.each((t==null?fn:typeof t==`function`?mn:pn)(e,t,n??``)):gn(this.node(),e)}function gn(e,t){return e.style.getPropertyValue(t)||dn(e).getComputedStyle(e,null).getPropertyValue(t)}function _n(e){return function(){delete this[e]}}function vn(e,t){return function(){this[e]=t}}function yn(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function bn(e,t){return arguments.length>1?this.each((t==null?_n:typeof t==`function`?yn:vn)(e,t)):this.node()[e]}function xn(e){return e.trim().split(/^|\s+/)}function Sn(e){return e.classList||new Cn(e)}function Cn(e){this._node=e,this._names=xn(e.getAttribute(`class`)||``)}Cn.prototype={add:function(e){this._names.indexOf(e)<0&&(this._names.push(e),this._node.setAttribute(`class`,this._names.join(` `)))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute(`class`,this._names.join(` `)))},contains:function(e){return this._names.indexOf(e)>=0}};function wn(e,t){for(var n=Sn(e),r=-1,i=t.length;++r<i;)n.add(t[r])}function Tn(e,t){for(var n=Sn(e),r=-1,i=t.length;++r<i;)n.remove(t[r])}function En(e){return function(){wn(this,e)}}function Dn(e){return function(){Tn(this,e)}}function On(e,t){return function(){(t.apply(this,arguments)?wn:Tn)(this,e)}}function kn(e,t){var n=xn(e+``);if(arguments.length<2){for(var r=Sn(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof t==`function`?On:t?En:Dn)(n,t))}function An(){this.textContent=``}function jn(e){return function(){this.textContent=e}}function Mn(e){return function(){var t=e.apply(this,arguments);this.textContent=t??``}}function Nn(e){return arguments.length?this.each(e==null?An:(typeof e==`function`?Mn:jn)(e)):this.node().textContent}function Pn(){this.innerHTML=``}function Fn(e){return function(){this.innerHTML=e}}function In(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??``}}function Ln(e){return arguments.length?this.each(e==null?Pn:(typeof e==`function`?In:Fn)(e)):this.node().innerHTML}function Rn(){this.nextSibling&&this.parentNode.appendChild(this)}function zn(){return this.each(Rn)}function Bn(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Vn(){return this.each(Bn)}function Hn(e){var t=typeof e==`function`?e:gt(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function Un(){return null}function Wn(e,t){var n=typeof e==`function`?e:gt(e),r=t==null?Un:typeof t==`function`?t:vt(t);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function Gn(){var e=this.parentNode;e&&e.removeChild(this)}function Kn(){return this.each(Gn)}function qn(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function Jn(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function Yn(e){return this.select(e?Jn:qn)}function Xn(e){return arguments.length?this.property(`__data__`,e):this.node().__data__}function Zn(e){return function(t){e.call(this,t,this.__data__)}}function Qn(e){return e.trim().split(/^|\s+/).map(function(e){var t=``,n=e.indexOf(`.`);return n>=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}})}function $n(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,i=t.length,a;n<i;++n)a=t[n],(!e.type||a.type===e.type)&&a.name===e.name?this.removeEventListener(a.type,a.listener,a.options):t[++r]=a;++r?t.length=r:delete this.__on}}}function er(e,t,n){return function(){var r=this.__on,i,a=Zn(t);if(r){for(var o=0,s=r.length;o<s;++o)if((i=r[o]).type===e.type&&i.name===e.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=a,i.options=n),i.value=t;return}}this.addEventListener(e.type,a,n),i={type:e.type,name:e.name,value:t,listener:a,options:n},r?r.push(i):this.__on=[i]}}function tr(e,t,n){var r=Qn(e+``),i,a=r.length,o;if(arguments.length<2){var s=this.node().__on;if(s){for(var c=0,l=s.length,u;c<l;++c)for(i=0,u=s[c];i<a;++i)if((o=r[i]).type===u.type&&o.name===u.name)return u.value}return}for(s=t?er:$n,i=0;i<a;++i)this.each(s(r[i],t,n));return this}function nr(e,t,n){var r=dn(e),i=r.CustomEvent;typeof i==`function`?i=new i(t,n):(i=r.document.createEvent(`Event`),n?(i.initEvent(t,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(t,!1,!1)),e.dispatchEvent(i)}function rr(e,t){return function(){return nr(this,e,t)}}function ir(e,t){return function(){return nr(this,e,t.apply(this,arguments))}}function ar(e,t){return this.each((typeof t==`function`?ir:rr)(e,t))}function*or(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],i=0,a=r.length,o;i<a;++i)(o=r[i])&&(yield o)}var sr=[null];function q(e,t){this._groups=e,this._parents=t}function cr(){return new q([[document.documentElement]],sr)}function lr(){return this}q.prototype=cr.prototype={constructor:q,select:yt,selectAll:wt,selectChild:At,selectChildren:Pt,filter:Ft,data:Ut,enter:Lt,exit:Gt,join:Kt,merge:qt,selection:lr,order:Jt,sort:Yt,call:Zt,nodes:Qt,node:$t,size:en,empty:tn,each:nn,attr:un,style:hn,property:bn,classed:kn,text:Nn,html:Ln,raise:zn,lower:Vn,append:Hn,insert:Wn,remove:Kn,clone:Yn,datum:Xn,on:tr,dispatch:ar,[Symbol.iterator]:or};function J(e){return typeof e==`string`?new q([[document.querySelector(e)]],[document.documentElement]):new q([[e]],sr)}function ur(e){let t;for(;t=e.sourceEvent;)e=t;return e}function dr(e,t){if(e=ur(e),t===void 0&&(t=e.currentTarget),t){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=e.clientX,r.y=e.clientY,r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}if(t.getBoundingClientRect){var i=t.getBoundingClientRect();return[e.clientX-i.left-t.clientLeft,e.clientY-i.top-t.clientTop]}}return[e.pageX,e.pageY]}var fr={passive:!1},pr={capture:!0,passive:!1};function mr(e){e.stopImmediatePropagation()}function hr(e){e.preventDefault(),e.stopImmediatePropagation()}function gr(e){var t=e.document.documentElement,n=J(e).on(`dragstart.drag`,hr,pr);`onselectstart`in t?n.on(`selectstart.drag`,hr,pr):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect=`none`)}function _r(e,t){var n=e.document.documentElement,r=J(e).on(`dragstart.drag`,null);t&&(r.on(`click.drag`,hr,pr),setTimeout(function(){r.on(`click.drag`,null)},0)),`onselectstart`in n?r.on(`selectstart.drag`,null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}var vr=e=>()=>e;function yr(e,{sourceEvent:t,subject:n,target:r,identifier:i,active:a,x:o,y:s,dx:c,dy:l,dispatch:u}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:a,enumerable:!0,configurable:!0},x:{value:o,enumerable:!0,configurable:!0},y:{value:s,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:l,enumerable:!0,configurable:!0},_:{value:u}})}yr.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function br(e){return!e.ctrlKey&&!e.button}function xr(){return this.parentNode}function Sr(e,t){return t??{x:e.x,y:e.y}}function Cr(){return navigator.maxTouchPoints||`ontouchstart`in this}function wr(){var e=br,t=xr,n=Sr,r=Cr,i={},a=st(`start`,`drag`,`end`),o=0,s,c,l,u,d=0;function f(e){e.on(`mousedown.drag`,p).filter(r).on(`touchstart.drag`,g).on(`touchmove.drag`,_,fr).on(`touchend.drag touchcancel.drag`,v).style(`touch-action`,`none`).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}function p(n,r){if(!(u||!e.call(this,n,r))){var i=y(this,t.call(this,n,r),n,r,`mouse`);i&&(J(n.view).on(`mousemove.drag`,m,pr).on(`mouseup.drag`,h,pr),gr(n.view),mr(n),l=!1,s=n.clientX,c=n.clientY,i(`start`,n))}}function m(e){if(hr(e),!l){var t=e.clientX-s,n=e.clientY-c;l=t*t+n*n>d}i.mouse(`drag`,e)}function h(e){J(e.view).on(`mousemove.drag mouseup.drag`,null),_r(e.view,l),hr(e),i.mouse(`end`,e)}function g(n,r){if(e.call(this,n,r)){var i=n.changedTouches,a=t.call(this,n,r),o=i.length,s,c;for(s=0;s<o;++s)(c=y(this,a,n,r,i[s].identifier,i[s]))&&(mr(n),c(`start`,n,i[s]))}}function _(e){var t=e.changedTouches,n=t.length,r,a;for(r=0;r<n;++r)(a=i[t[r].identifier])&&(hr(e),a(`drag`,e,t[r]))}function v(e){var t=e.changedTouches,n=t.length,r,a;for(u&&clearTimeout(u),u=setTimeout(function(){u=null},500),r=0;r<n;++r)(a=i[t[r].identifier])&&(mr(e),a(`end`,e,t[r]))}function y(e,t,r,s,c,l){var u=a.copy(),d=dr(l||r,t),p,m,h;if((h=n.call(e,new yr(`beforestart`,{sourceEvent:r,target:f,identifier:c,active:o,x:d[0],y:d[1],dx:0,dy:0,dispatch:u}),s))!=null)return p=h.x-d[0]||0,m=h.y-d[1]||0,function n(r,a,l){var g=d,_;switch(r){case`start`:i[c]=n,_=o++;break;case`end`:delete i[c],--o;case`drag`:d=dr(l||a,t),_=o;break}u.call(r,e,new yr(r,{sourceEvent:a,subject:h,target:f,identifier:c,active:_,x:d[0]+p,y:d[1]+m,dx:d[0]-g[0],dy:d[1]-g[1],dispatch:u}),s)}}return f.filter=function(t){return arguments.length?(e=typeof t==`function`?t:vr(!!t),f):e},f.container=function(e){return arguments.length?(t=typeof e==`function`?e:vr(e),f):t},f.subject=function(e){return arguments.length?(n=typeof e==`function`?e:vr(e),f):n},f.touchable=function(e){return arguments.length?(r=typeof e==`function`?e:vr(!!e),f):r},f.on=function(){var e=a.on.apply(a,arguments);return e===a?f:e},f.clickDistance=function(e){return arguments.length?(d=(e=+e)*e,f):Math.sqrt(d)},f}function Tr(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function Er(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function Dr(){}var Or=.7,kr=1/Or,Ar=`\\s*([+-]?\\d+)\\s*`,jr=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,Mr=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,Nr=/^#([0-9a-f]{3,8})$/,Pr=RegExp(`^rgb\\(${Ar},${Ar},${Ar}\\)$`),Fr=RegExp(`^rgb\\(${Mr},${Mr},${Mr}\\)$`),Ir=RegExp(`^rgba\\(${Ar},${Ar},${Ar},${jr}\\)$`),Lr=RegExp(`^rgba\\(${Mr},${Mr},${Mr},${jr}\\)$`),Rr=RegExp(`^hsl\\(${jr},${Mr},${Mr}\\)$`),zr=RegExp(`^hsla\\(${jr},${Mr},${Mr},${jr}\\)$`),Br={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Tr(Dr,Gr,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Vr,formatHex:Vr,formatHex8:Hr,formatHsl:Ur,formatRgb:Wr,toString:Wr});function Vr(){return this.rgb().formatHex()}function Hr(){return this.rgb().formatHex8()}function Ur(){return ri(this).formatHsl()}function Wr(){return this.rgb().formatRgb()}function Gr(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=Nr.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?Kr(t):n===3?new Y(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?qr(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?qr(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=Pr.exec(e))?new Y(t[1],t[2],t[3],1):(t=Fr.exec(e))?new Y(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Ir.exec(e))?qr(t[1],t[2],t[3],t[4]):(t=Lr.exec(e))?qr(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Rr.exec(e))?ni(t[1],t[2]/100,t[3]/100,1):(t=zr.exec(e))?ni(t[1],t[2]/100,t[3]/100,t[4]):Br.hasOwnProperty(e)?Kr(Br[e]):e===`transparent`?new Y(NaN,NaN,NaN,0):null}function Kr(e){return new Y(e>>16&255,e>>8&255,e&255,1)}function qr(e,t,n,r){return r<=0&&(e=t=n=NaN),new Y(e,t,n,r)}function Jr(e){return e instanceof Dr||(e=Gr(e)),e?(e=e.rgb(),new Y(e.r,e.g,e.b,e.opacity)):new Y}function Yr(e,t,n,r){return arguments.length===1?Jr(e):new Y(e,t,n,r??1)}function Y(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}Tr(Y,Yr,Er(Dr,{brighter(e){return e=e==null?kr:kr**+e,new Y(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Or:Or**+e,new Y(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Y(ei(this.r),ei(this.g),ei(this.b),$r(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Xr,formatHex:Xr,formatHex8:Zr,formatRgb:Qr,toString:Qr}));function Xr(){return`#${ti(this.r)}${ti(this.g)}${ti(this.b)}`}function Zr(){return`#${ti(this.r)}${ti(this.g)}${ti(this.b)}${ti((isNaN(this.opacity)?1:this.opacity)*255)}`}function Qr(){let e=$r(this.opacity);return`${e===1?`rgb(`:`rgba(`}${ei(this.r)}, ${ei(this.g)}, ${ei(this.b)}${e===1?`)`:`, ${e})`}`}function $r(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function ei(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function ti(e){return e=ei(e),(e<16?`0`:``)+e.toString(16)}function ni(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new ai(e,t,n,r)}function ri(e){if(e instanceof ai)return new ai(e.h,e.s,e.l,e.opacity);if(e instanceof Dr||(e=Gr(e)),!e)return new ai;if(e instanceof ai)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n<r)*6:n===a?(r-t)/s+2:(t-n)/s+4,s/=c<.5?a+i:2-a-i,o*=60):s=c>0&&c<1?0:o,new ai(o,s,c,e.opacity)}function ii(e,t,n,r){return arguments.length===1?ri(e):new ai(e,t,n,r??1)}function ai(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}Tr(ai,ii,Er(Dr,{brighter(e){return e=e==null?kr:kr**+e,new ai(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Or:Or**+e,new ai(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new Y(ci(e>=240?e-240:e+120,i,r),ci(e,i,r),ci(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new ai(oi(this.h),si(this.s),si(this.l),$r(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=$r(this.opacity);return`${e===1?`hsl(`:`hsla(`}${oi(this.h)}, ${si(this.s)*100}%, ${si(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function oi(e){return e=(e||0)%360,e<0?e+360:e}function si(e){return Math.max(0,Math.min(1,e||0))}function ci(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var li=e=>()=>e;function ui(e,t){return function(n){return e+n*t}}function di(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function fi(e){return(e=+e)==1?pi:function(t,n){return n-t?di(t,n,e):li(isNaN(t)?n:t)}}function pi(e,t){var n=t-e;return n?ui(e,n):li(isNaN(e)?t:e)}var mi=(function e(t){var n=fi(t);function r(e,t){var r=n((e=Yr(e)).r,(t=Yr(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=pi(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function hi(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;i<n;++i)r[i]=e[i]*(1-a)+t[i]*a;return r}}function gi(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function _i(e,t){var n=t?t.length:0,r=e?Math.min(n,e.length):0,i=Array(r),a=Array(n),o;for(o=0;o<r;++o)i[o]=Ei(e[o],t[o]);for(;o<n;++o)a[o]=t[o];return function(e){for(o=0;o<r;++o)a[o]=i[o](e);return a}}function vi(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function yi(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function bi(e,t){var n={},r={},i;for(i in(typeof e!=`object`||!e)&&(e={}),(typeof t!=`object`||!t)&&(t={}),t)i in e?n[i]=Ei(e[i],t[i]):r[i]=t[i];return function(e){for(i in n)r[i]=n[i](e);return r}}var xi=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Si=new RegExp(xi.source,`g`);function Ci(e){return function(){return e}}function wi(e){return function(t){return e(t)+``}}function Ti(e,t){var n=xi.lastIndex=Si.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=xi.exec(e))&&(i=Si.exec(t));)(a=i.index)>n&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:yi(r,i)})),n=Si.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?wi(c[0].x):Ci(t):(t=c.length,function(e){for(var n=0,r;n<t;++n)s[(r=c[n]).i]=r.x(e);return s.join(``)})}function Ei(e,t){var n=typeof t,r;return t==null||n===`boolean`?li(t):(n===`number`?yi:n===`string`?(r=Gr(t))?(t=r,mi):Ti:t instanceof Gr?mi:t instanceof Date?vi:gi(t)?hi:Array.isArray(t)?_i:typeof t.valueOf!=`function`&&typeof t.toString!=`function`||isNaN(t)?bi:yi)(e,t)}var Di=180/Math.PI,Oi={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function ki(e,t,n,r,i,a){var o,s,c;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(c=e*n+t*r)&&(n-=e*c,r-=t*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),e*r<t*n&&(e=-e,t=-t,c=-c,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(t,e)*Di,skewX:Math.atan(c)*Di,scaleX:o,scaleY:s}}var Ai;function ji(e){let t=new(typeof DOMMatrix==`function`?DOMMatrix:WebKitCSSMatrix)(e+``);return t.isIdentity?Oi:ki(t.a,t.b,t.c,t.d,t.e,t.f)}function Mi(e){return e==null||(Ai||=document.createElementNS(`http://www.w3.org/2000/svg`,`g`),Ai.setAttribute(`transform`,e),!(e=Ai.transform.baseVal.consolidate()))?Oi:(e=e.matrix,ki(e.a,e.b,e.c,e.d,e.e,e.f))}function Ni(e,t,n,r){function i(e){return e.length?e.pop()+` `:``}function a(e,r,i,a,o,s){if(e!==i||r!==a){var c=o.push(`translate(`,null,t,null,n);s.push({i:c-4,x:yi(e,i)},{i:c-2,x:yi(r,a)})}else (i||a)&&o.push(`translate(`+i+t+a+n)}function o(e,t,n,a){e===t?t&&n.push(i(n)+`rotate(`+t+r):(e-t>180?t+=360:t-e>180&&(e+=360),a.push({i:n.push(i(n)+`rotate(`,null,r)-2,x:yi(e,t)}))}function s(e,t,n,a){e===t?t&&n.push(i(n)+`skewX(`+t+r):a.push({i:n.push(i(n)+`skewX(`,null,r)-2,x:yi(e,t)})}function c(e,t,n,r,a,o){if(e!==n||t!==r){var s=a.push(i(a)+`scale(`,null,`,`,null,`)`);o.push({i:s-4,x:yi(e,n)},{i:s-2,x:yi(t,r)})}else (n!==1||r!==1)&&a.push(i(a)+`scale(`+n+`,`+r+`)`)}return function(t,n){var r=[],i=[];return t=e(t),n=e(n),a(t.translateX,t.translateY,n.translateX,n.translateY,r,i),o(t.rotate,n.rotate,r,i),s(t.skewX,n.skewX,r,i),c(t.scaleX,t.scaleY,n.scaleX,n.scaleY,r,i),t=n=null,function(e){for(var t=-1,n=i.length,a;++t<n;)r[(a=i[t]).i]=a.x(e);return r.join(``)}}}var Pi=Ni(ji,`px, `,`px)`,`deg)`),Fi=Ni(Mi,`, `,`)`,`)`),Ii=1e-12;function Li(e){return((e=Math.exp(e))+1/e)/2}function Ri(e){return((e=Math.exp(e))-1/e)/2}function zi(e){return((e=Math.exp(2*e))-1)/(e+1)}var Bi=(function e(t,n,r){function i(e,i){var a=e[0],o=e[1],s=e[2],c=i[0],l=i[1],u=i[2],d=c-a,f=l-o,p=d*d+f*f,m,h;if(p<Ii)h=Math.log(u/s)/t,m=function(e){return[a+e*d,o+e*f,s*Math.exp(t*e*h)]};else{var g=Math.sqrt(p),_=(u*u-s*s+r*p)/(2*s*n*g),v=(u*u-s*s-r*p)/(2*u*n*g),y=Math.log(Math.sqrt(_*_+1)-_);h=(Math.log(Math.sqrt(v*v+1)-v)-y)/t,m=function(e){var r=e*h,i=Li(y),c=s/(n*g)*(i*zi(t*r+y)-Ri(y));return[a+c*d,o+c*f,s*i/Li(t*r+y)]}}return m.duration=h*1e3*t/Math.SQRT2,m}return i.rho=function(t){var n=Math.max(.001,+t),r=n*n;return e(n,r,r*r)},i})(Math.SQRT2,2,4),Vi=0,Hi=0,Ui=0,Wi=1e3,Gi,Ki,qi=0,Ji=0,Yi=0,Xi=typeof performance==`object`&&performance.now?performance:Date,Zi=typeof window==`object`&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function Qi(){return Ji||=(Zi($i),Xi.now()+Yi)}function $i(){Ji=0}function ea(){this._call=this._time=this._next=null}ea.prototype=ta.prototype={constructor:ea,restart:function(e,t,n){if(typeof e!=`function`)throw TypeError(`callback is not a function`);n=(n==null?Qi():+n)+(t==null?0:+t),!this._next&&Ki!==this&&(Ki?Ki._next=this:Gi=this,Ki=this),this._call=e,this._time=n,oa()},stop:function(){this._call&&(this._call=null,this._time=1/0,oa())}};function ta(e,t,n){var r=new ea;return r.restart(e,t,n),r}function na(){Qi(),++Vi;for(var e=Gi,t;e;)(t=Ji-e._time)>=0&&e._call.call(void 0,t),e=e._next;--Vi}function ra(){Ji=(qi=Xi.now())+Yi,Vi=Hi=0;try{na()}finally{Vi=0,aa(),Ji=0}}function ia(){var e=Xi.now(),t=e-qi;t>Wi&&(Yi-=t,qi=e)}function aa(){for(var e,t=Gi,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:Gi=n);Ki=e,oa(r)}function oa(e){Vi||(Hi&&=clearTimeout(Hi),e-Ji>24?(e<1/0&&(Hi=setTimeout(ra,e-Xi.now()-Yi)),Ui&&=clearInterval(Ui)):(Ui||=(qi=Xi.now(),setInterval(ia,Wi)),Vi=1,Zi(ra)))}function sa(e,t,n){var r=new ea;return t=t==null?0:+t,r.restart(n=>{r.stop(),e(n+t)},t,n),r}var ca=st(`start`,`end`,`cancel`,`interrupt`),la=[];function ua(e,t,n,r,i,a){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;ma(e,n,{name:t,index:r,group:i,on:ca,tween:la,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})}function da(e,t){var n=pa(e,t);if(n.state>0)throw Error(`too late; already scheduled`);return n}function fa(e,t){var n=pa(e,t);if(n.state>3)throw Error(`too late; already running`);return n}function pa(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw Error(`transition not found`);return n}function ma(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=ta(a,0,n.time);function a(e){n.state=1,n.timer.restart(o,n.delay,n.time),n.delay<=e&&o(e-n.delay)}function o(a){var l,u,d,f;if(n.state!==1)return c();for(l in r)if(f=r[l],f.name===n.name){if(f.state===3)return sa(o);f.state===4?(f.state=6,f.timer.stop(),f.on.call(`interrupt`,e,e.__data__,f.index,f.group),delete r[l]):+l<t&&(f.state=6,f.timer.stop(),f.on.call(`cancel`,e,e.__data__,f.index,f.group),delete r[l])}if(sa(function(){n.state===3&&(n.state=4,n.timer.restart(s,n.delay,n.time),s(a))}),n.state=2,n.on.call(`start`,e,e.__data__,n.index,n.group),n.state===2){for(n.state=3,i=Array(d=n.tween.length),l=0,u=-1;l<d;++l)(f=n.tween[l].value.call(e,e.__data__,n.index,n.group))&&(i[++u]=f);i.length=u+1}}function s(t){for(var r=t<n.duration?n.ease.call(null,t/n.duration):(n.timer.restart(c),n.state=5,1),a=-1,o=i.length;++a<o;)i[a].call(e,r);n.state===5&&(n.on.call(`end`,e,e.__data__,n.index,n.group),c())}function c(){for(var i in n.state=6,n.timer.stop(),delete r[t],r)return;delete e.__transition}}function ha(e,t){var n=e.__transition,r,i,a=!0,o;if(n){for(o in t=t==null?null:t+``,n){if((r=n[o]).name!==t){a=!1;continue}i=r.state>2&&r.state<5,r.state=6,r.timer.stop(),r.on.call(i?`interrupt`:`cancel`,e,e.__data__,r.index,r.group),delete n[o]}a&&delete e.__transition}}function ga(e){return this.each(function(){ha(this,e)})}function _a(e,t){var n,r;return function(){var i=fa(this,e),a=i.tween;if(a!==n){r=n=a;for(var o=0,s=r.length;o<s;++o)if(r[o].name===t){r=r.slice(),r.splice(o,1);break}}i.tween=r}}function va(e,t,n){var r,i;if(typeof n!=`function`)throw Error();return function(){var a=fa(this,e),o=a.tween;if(o!==r){i=(r=o).slice();for(var s={name:t,value:n},c=0,l=i.length;c<l;++c)if(i[c].name===t){i[c]=s;break}c===l&&i.push(s)}a.tween=i}}function ya(e,t){var n=this._id;if(e+=``,arguments.length<2){for(var r=pa(this.node(),n).tween,i=0,a=r.length,o;i<a;++i)if((o=r[i]).name===e)return o.value;return null}return this.each((t==null?_a:va)(n,e,t))}function ba(e,t,n){var r=e._id;return e.each(function(){var e=fa(this,r);(e.value||={})[t]=n.apply(this,arguments)}),function(e){return pa(e,r).value[t]}}function xa(e,t){var n;return(typeof t==`number`?yi:t instanceof Gr?mi:(n=Gr(t))?(t=n,mi):Ti)(e,t)}function Sa(e){return function(){this.removeAttribute(e)}}function Ca(e){return function(){this.removeAttributeNS(e.space,e.local)}}function wa(e,t,n){var r,i=n+``,a;return function(){var o=this.getAttribute(e);return o===i?null:o===r?a:a=t(r=o,n)}}function Ta(e,t,n){var r,i=n+``,a;return function(){var o=this.getAttributeNS(e.space,e.local);return o===i?null:o===r?a:a=t(r=o,n)}}function Ea(e,t,n){var r,i,a;return function(){var o,s=n(this),c;return s==null?void this.removeAttribute(e):(o=this.getAttribute(e),c=s+``,o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s)))}}function Da(e,t,n){var r,i,a;return function(){var o,s=n(this),c;return s==null?void this.removeAttributeNS(e.space,e.local):(o=this.getAttributeNS(e.space,e.local),c=s+``,o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s)))}}function Oa(e,t){var n=pt(e),r=n===`transform`?Fi:xa;return this.attrTween(e,typeof t==`function`?(n.local?Da:Ea)(n,r,ba(this,`attr.`+e,t)):t==null?(n.local?Ca:Sa)(n):(n.local?Ta:wa)(n,r,t))}function ka(e,t){return function(n){this.setAttribute(e,t.call(this,n))}}function Aa(e,t){return function(n){this.setAttributeNS(e.space,e.local,t.call(this,n))}}function ja(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&Aa(e,i)),n}return i._value=t,i}function Ma(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&ka(e,i)),n}return i._value=t,i}function Na(e,t){var n=`attr.`+e;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!=`function`)throw Error();var r=pt(e);return this.tween(n,(r.local?ja:Ma)(r,t))}function Pa(e,t){return function(){da(this,e).delay=+t.apply(this,arguments)}}function Fa(e,t){return t=+t,function(){da(this,e).delay=t}}function Ia(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?Pa:Fa)(t,e)):pa(this.node(),t).delay}function La(e,t){return function(){fa(this,e).duration=+t.apply(this,arguments)}}function Ra(e,t){return t=+t,function(){fa(this,e).duration=t}}function za(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?La:Ra)(t,e)):pa(this.node(),t).duration}function Ba(e,t){if(typeof t!=`function`)throw Error();return function(){fa(this,e).ease=t}}function Va(e){var t=this._id;return arguments.length?this.each(Ba(t,e)):pa(this.node(),t).ease}function Ha(e,t){return function(){var n=t.apply(this,arguments);if(typeof n!=`function`)throw Error();fa(this,e).ease=n}}function Ua(e){if(typeof e!=`function`)throw Error();return this.each(Ha(this._id,e))}function Wa(e){typeof e!=`function`&&(e=Tt(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=[],c,l=0;l<o;++l)(c=a[l])&&e.call(c,c.__data__,l,a)&&s.push(c);return new bo(r,this._parents,this._name,this._id)}function Ga(e){if(e._id!==this._id)throw Error();for(var t=this._groups,n=e._groups,r=t.length,i=n.length,a=Math.min(r,i),o=Array(r),s=0;s<a;++s)for(var c=t[s],l=n[s],u=c.length,d=o[s]=Array(u),f,p=0;p<u;++p)(f=c[p]||l[p])&&(d[p]=f);for(;s<r;++s)o[s]=t[s];return new bo(o,this._parents,this._name,this._id)}function Ka(e){return(e+``).trim().split(/^|\s+/).every(function(e){var t=e.indexOf(`.`);return t>=0&&(e=e.slice(0,t)),!e||e===`start`})}function qa(e,t,n){var r,i,a=Ka(t)?da:fa;return function(){var o=a(this,e),s=o.on;s!==r&&(i=(r=s).copy()).on(t,n),o.on=i}}function Ja(e,t){var n=this._id;return arguments.length<2?pa(this.node(),n).on.on(e):this.each(qa(n,e,t))}function Ya(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function Xa(){return this.on(`end.remove`,Ya(this._id))}function Za(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=vt(e));for(var r=this._groups,i=r.length,a=Array(i),o=0;o<i;++o)for(var s=r[o],c=s.length,l=a[o]=Array(c),u,d,f=0;f<c;++f)(u=s[f])&&(d=e.call(u,u.__data__,f,s))&&(`__data__`in u&&(d.__data__=u.__data__),l[f]=d,ua(l[f],t,n,f,l,pa(u,n)));return new bo(a,this._parents,t,n)}function Qa(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=St(e));for(var r=this._groups,i=r.length,a=[],o=[],s=0;s<i;++s)for(var c=r[s],l=c.length,u,d=0;d<l;++d)if(u=c[d]){for(var f=e.call(u,u.__data__,d,c),p,m=pa(u,n),h=0,g=f.length;h<g;++h)(p=f[h])&&ua(p,t,n,h,f,m);a.push(f),o.push(u)}return new bo(a,o,t,n)}var $a=cr.prototype.constructor;function eo(){return new $a(this._groups,this._parents)}function to(e,t){var n,r,i;return function(){var a=gn(this,e),o=(this.style.removeProperty(e),gn(this,e));return a===o?null:a===n&&o===r?i:i=t(n=a,r=o)}}function no(e){return function(){this.style.removeProperty(e)}}function ro(e,t,n){var r,i=n+``,a;return function(){var o=gn(this,e);return o===i?null:o===r?a:a=t(r=o,n)}}function io(e,t,n){var r,i,a;return function(){var o=gn(this,e),s=n(this),c=s+``;return s??(c=s=(this.style.removeProperty(e),gn(this,e))),o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s))}}function ao(e,t){var n,r,i,a=`style.`+t,o=`end.`+a,s;return function(){var c=fa(this,e),l=c.on,u=c.value[a]==null?s||=no(t):void 0;(l!==n||i!==u)&&(r=(n=l).copy()).on(o,i=u),c.on=r}}function oo(e,t,n){var r=(e+=``)==`transform`?Pi:xa;return t==null?this.styleTween(e,to(e,r)).on(`end.style.`+e,no(e)):typeof t==`function`?this.styleTween(e,io(e,r,ba(this,`style.`+e,t))).each(ao(this._id,e)):this.styleTween(e,ro(e,r,t),n).on(`end.style.`+e,null)}function so(e,t,n){return function(r){this.style.setProperty(e,t.call(this,r),n)}}function co(e,t,n){var r,i;function a(){var a=t.apply(this,arguments);return a!==i&&(r=(i=a)&&so(e,a,n)),r}return a._value=t,a}function lo(e,t,n){var r=`style.`+(e+=``);if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!=`function`)throw Error();return this.tween(r,co(e,t,n??``))}function uo(e){return function(){this.textContent=e}}function fo(e){return function(){var t=e(this);this.textContent=t??``}}function po(e){return this.tween(`text`,typeof e==`function`?fo(ba(this,`text`,e)):uo(e==null?``:e+``))}function mo(e){return function(t){this.textContent=e.call(this,t)}}function ho(e){var t,n;function r(){var r=e.apply(this,arguments);return r!==n&&(t=(n=r)&&mo(r)),t}return r._value=e,r}function go(e){var t=`text`;if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!=`function`)throw Error();return this.tween(t,ho(e))}function _o(){for(var e=this._name,t=this._id,n=So(),r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],s=o.length,c,l=0;l<s;++l)if(c=o[l]){var u=pa(c,t);ua(c,e,n,l,o,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new bo(r,this._parents,e,n)}function vo(){var e,t,n=this,r=n._id,i=n.size();return new Promise(function(a,o){var s={value:o},c={value:function(){--i===0&&a()}};n.each(function(){var n=fa(this,r),i=n.on;i!==e&&(t=(e=i).copy(),t._.cancel.push(s),t._.interrupt.push(s),t._.end.push(c)),n.on=t}),i===0&&a()})}var yo=0;function bo(e,t,n,r){this._groups=e,this._parents=t,this._name=n,this._id=r}function xo(e){return cr().transition(e)}function So(){return++yo}var Co=cr.prototype;bo.prototype=xo.prototype={constructor:bo,select:Za,selectAll:Qa,selectChild:Co.selectChild,selectChildren:Co.selectChildren,filter:Wa,merge:Ga,selection:eo,transition:_o,call:Co.call,nodes:Co.nodes,node:Co.node,size:Co.size,empty:Co.empty,each:Co.each,on:Ja,attr:Oa,attrTween:Na,style:oo,styleTween:lo,text:po,textTween:go,remove:Xa,tween:ya,delay:Ia,duration:za,ease:Va,easeVarying:Ua,end:vo,[Symbol.iterator]:Co[Symbol.iterator]};function wo(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var To={time:null,delay:0,duration:250,ease:wo};function Eo(e,t){for(var n;!(n=e.__transition)||!(n=n[t]);)if(!(e=e.parentNode))throw Error(`transition ${t} not found`);return n}function Do(e){var t,n;e instanceof bo?(t=e._id,e=e._name):(t=So(),(n=To).time=Qi(),e=e==null?null:e+``);for(var r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],s=o.length,c,l=0;l<s;++l)(c=o[l])&&ua(c,e,t,l,o,n||Eo(c,t));return new bo(r,this._parents,e,t)}cr.prototype.interrupt=ga,cr.prototype.transition=Do;var Oo=e=>()=>e;function ko(e,{sourceEvent:t,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function Ao(e,t,n){this.k=e,this.x=t,this.y=n}Ao.prototype={constructor:Ao,scale:function(e){return e===1?this:new Ao(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new Ao(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return`translate(`+this.x+`,`+this.y+`) scale(`+this.k+`)`}};var jo=new Ao(1,0,0);Mo.prototype=Ao.prototype;function Mo(e){for(;!e.__zoom;)if(!(e=e.parentNode))return jo;return e.__zoom}function No(e){e.stopImmediatePropagation()}function Po(e){e.preventDefault(),e.stopImmediatePropagation()}function Fo(e){return(!e.ctrlKey||e.type===`wheel`)&&!e.button}function Io(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute(`viewBox`)?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function Lo(){return this.__zoom||jo}function Ro(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function zo(){return navigator.maxTouchPoints||`ontouchstart`in this}function Bo(e,t,n){var r=e.invertX(t[0][0])-n[0][0],i=e.invertX(t[1][0])-n[1][0],a=e.invertY(t[0][1])-n[0][1],o=e.invertY(t[1][1])-n[1][1];return e.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}function Vo(){var e=Fo,t=Io,n=Bo,r=Ro,i=zo,a=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],s=250,c=Bi,l=st(`start`,`zoom`,`end`),u,d,f,p=500,m=150,h=0,g=10;function _(e){e.property(`__zoom`,Lo).on(`wheel.zoom`,w,{passive:!1}).on(`mousedown.zoom`,T).on(`dblclick.zoom`,E).filter(i).on(`touchstart.zoom`,D).on(`touchmove.zoom`,O).on(`touchend.zoom touchcancel.zoom`,k).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}_.transform=function(e,t,n,r){var i=e.selection?e.selection():e;i.property(`__zoom`,Lo),e===i?i.interrupt().each(function(){S(this,arguments).event(r).start().zoom(null,typeof t==`function`?t.apply(this,arguments):t).end()}):x(e,t,n,r)},_.scaleBy=function(e,t,n,r){_.scaleTo(e,function(){return this.__zoom.k*(typeof t==`function`?t.apply(this,arguments):t)},n,r)},_.scaleTo=function(e,r,i,a){_.transform(e,function(){var e=t.apply(this,arguments),a=this.__zoom,s=i==null?b(e):typeof i==`function`?i.apply(this,arguments):i,c=a.invert(s),l=typeof r==`function`?r.apply(this,arguments):r;return n(y(v(a,l),s,c),e,o)},i,a)},_.translateBy=function(e,r,i,a){_.transform(e,function(){return n(this.__zoom.translate(typeof r==`function`?r.apply(this,arguments):r,typeof i==`function`?i.apply(this,arguments):i),t.apply(this,arguments),o)},null,a)},_.translateTo=function(e,r,i,a,s){_.transform(e,function(){var e=t.apply(this,arguments),s=this.__zoom,c=a==null?b(e):typeof a==`function`?a.apply(this,arguments):a;return n(jo.translate(c[0],c[1]).scale(s.k).translate(typeof r==`function`?-r.apply(this,arguments):-r,typeof i==`function`?-i.apply(this,arguments):-i),e,o)},a,s)};function v(e,t){return t=Math.max(a[0],Math.min(a[1],t)),t===e.k?e:new Ao(t,e.x,e.y)}function y(e,t,n){var r=t[0]-n[0]*e.k,i=t[1]-n[1]*e.k;return r===e.x&&i===e.y?e:new Ao(e.k,r,i)}function b(e){return[(+e[0][0]+ +e[1][0])/2,(+e[0][1]+ +e[1][1])/2]}function x(e,n,r,i){e.on(`start.zoom`,function(){S(this,arguments).event(i).start()}).on(`interrupt.zoom end.zoom`,function(){S(this,arguments).event(i).end()}).tween(`zoom`,function(){var e=this,a=arguments,o=S(e,a).event(i),s=t.apply(e,a),l=r==null?b(s):typeof r==`function`?r.apply(e,a):r,u=Math.max(s[1][0]-s[0][0],s[1][1]-s[0][1]),d=e.__zoom,f=typeof n==`function`?n.apply(e,a):n,p=c(d.invert(l).concat(u/d.k),f.invert(l).concat(u/f.k));return function(e){if(e===1)e=f;else{var t=p(e),n=u/t[2];e=new Ao(n,l[0]-t[0]*n,l[1]-t[1]*n)}o.zoom(null,e)}})}function S(e,t,n){return!n&&e.__zooming||new C(e,t)}function C(e,n){this.that=e,this.args=n,this.active=0,this.sourceEvent=null,this.extent=t.apply(e,n),this.taps=0}C.prototype={event:function(e){return e&&(this.sourceEvent=e),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit(`start`)),this},zoom:function(e,t){return this.mouse&&e!==`mouse`&&(this.mouse[1]=t.invert(this.mouse[0])),this.touch0&&e!==`touch`&&(this.touch0[1]=t.invert(this.touch0[0])),this.touch1&&e!==`touch`&&(this.touch1[1]=t.invert(this.touch1[0])),this.that.__zoom=t,this.emit(`zoom`),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit(`end`)),this},emit:function(e){var t=J(this.that).datum();l.call(e,this.that,new ko(e,{sourceEvent:this.sourceEvent,target:_,type:e,transform:this.that.__zoom,dispatch:l}),t)}};function w(t,...i){if(!e.apply(this,arguments))return;var s=S(this,i).event(t),c=this.__zoom,l=Math.max(a[0],Math.min(a[1],c.k*2**r.apply(this,arguments))),u=dr(t);if(s.wheel)(s.mouse[0][0]!==u[0]||s.mouse[0][1]!==u[1])&&(s.mouse[1]=c.invert(s.mouse[0]=u)),clearTimeout(s.wheel);else if(c.k===l)return;else s.mouse=[u,c.invert(u)],ha(this),s.start();Po(t),s.wheel=setTimeout(d,m),s.zoom(`mouse`,n(y(v(c,l),s.mouse[0],s.mouse[1]),s.extent,o));function d(){s.wheel=null,s.end()}}function T(t,...r){if(f||!e.apply(this,arguments))return;var i=t.currentTarget,a=S(this,r,!0).event(t),s=J(t.view).on(`mousemove.zoom`,d,!0).on(`mouseup.zoom`,p,!0),c=dr(t,i),l=t.clientX,u=t.clientY;gr(t.view),No(t),a.mouse=[c,this.__zoom.invert(c)],ha(this),a.start();function d(e){if(Po(e),!a.moved){var t=e.clientX-l,r=e.clientY-u;a.moved=t*t+r*r>h}a.event(e).zoom(`mouse`,n(y(a.that.__zoom,a.mouse[0]=dr(e,i),a.mouse[1]),a.extent,o))}function p(e){s.on(`mousemove.zoom mouseup.zoom`,null),_r(e.view,a.moved),Po(e),a.event(e).end()}}function E(r,...i){if(e.apply(this,arguments)){var a=this.__zoom,c=dr(r.changedTouches?r.changedTouches[0]:r,this),l=a.invert(c),u=a.k*(r.shiftKey?.5:2),d=n(y(v(a,u),c,l),t.apply(this,i),o);Po(r),s>0?J(this).transition().duration(s).call(x,d,c,r):J(this).call(_.transform,d,c,r)}}function D(t,...n){if(e.apply(this,arguments)){var r=t.touches,i=r.length,a=S(this,n,t.changedTouches.length===i).event(t),o,s,c,l;for(No(t),s=0;s<i;++s)c=r[s],l=dr(c,this),l=[l,this.__zoom.invert(l),c.identifier],a.touch0?!a.touch1&&a.touch0[2]!==l[2]&&(a.touch1=l,a.taps=0):(a.touch0=l,o=!0,a.taps=1+!!u);u&&=clearTimeout(u),o&&(a.taps<2&&(d=l[0],u=setTimeout(function(){u=null},p)),ha(this),a.start())}}function O(e,...t){if(this.__zooming){var r=S(this,t).event(e),i=e.changedTouches,a=i.length,s,c,l,u;for(Po(e),s=0;s<a;++s)c=i[s],l=dr(c,this),r.touch0&&r.touch0[2]===c.identifier?r.touch0[0]=l:r.touch1&&r.touch1[2]===c.identifier&&(r.touch1[0]=l);if(c=r.that.__zoom,r.touch1){var d=r.touch0[0],f=r.touch0[1],p=r.touch1[0],m=r.touch1[1],h=(h=p[0]-d[0])*h+(h=p[1]-d[1])*h,g=(g=m[0]-f[0])*g+(g=m[1]-f[1])*g;c=v(c,Math.sqrt(h/g)),l=[(d[0]+p[0])/2,(d[1]+p[1])/2],u=[(f[0]+m[0])/2,(f[1]+m[1])/2]}else if(r.touch0)l=r.touch0[0],u=r.touch0[1];else return;r.zoom(`touch`,n(y(c,l,u),r.extent,o))}}function k(e,...t){if(this.__zooming){var n=S(this,t).event(e),r=e.changedTouches,i=r.length,a,o;for(No(e),f&&clearTimeout(f),f=setTimeout(function(){f=null},p),a=0;a<i;++a)o=r[a],n.touch0&&n.touch0[2]===o.identifier?delete n.touch0:n.touch1&&n.touch1[2]===o.identifier&&delete n.touch1;if(n.touch1&&!n.touch0&&(n.touch0=n.touch1,delete n.touch1),n.touch0)n.touch0[1]=this.__zoom.invert(n.touch0[0]);else if(n.end(),n.taps===2&&(o=dr(o,this),Math.hypot(d[0]-o[0],d[1]-o[1])<g)){var s=J(this).on(`dblclick.zoom`);s&&s.apply(this,arguments)}}}return _.wheelDelta=function(e){return arguments.length?(r=typeof e==`function`?e:Oo(+e),_):r},_.filter=function(t){return arguments.length?(e=typeof t==`function`?t:Oo(!!t),_):e},_.touchable=function(e){return arguments.length?(i=typeof e==`function`?e:Oo(!!e),_):i},_.extent=function(e){return arguments.length?(t=typeof e==`function`?e:Oo([[+e[0][0],+e[0][1]],[+e[1][0],+e[1][1]]]),_):t},_.scaleExtent=function(e){return arguments.length?(a[0]=+e[0],a[1]=+e[1],_):[a[0],a[1]]},_.translateExtent=function(e){return arguments.length?(o[0][0]=+e[0][0],o[1][0]=+e[1][0],o[0][1]=+e[0][1],o[1][1]=+e[1][1],_):[[o[0][0],o[0][1]],[o[1][0],o[1][1]]]},_.constrain=function(e){return arguments.length?(n=e,_):n},_.duration=function(e){return arguments.length?(s=+e,_):s},_.interpolate=function(e){return arguments.length?(c=e,_):c},_.on=function(){var e=l.on.apply(l,arguments);return e===l?_:e},_.clickDistance=function(e){return arguments.length?(h=(e=+e)*e,_):Math.sqrt(h)},_.tapDistance=function(e){return arguments.length?(g=+e,_):g},_}var Ho={error001:(e=`react`)=>`Seems like you have not used zustand provider as an ancestor. Help: https://${e}flow.dev/error#001`,error002:()=>`It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.`,error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>`The parent container needs a width and a height to render the graph.`,error005:()=>`Only child nodes can use a parent extent.`,error006:()=>`Can't create edge. An edge needs a source and a target.`,error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,{id:t,sourceHandle:n,targetHandle:r})=>`Couldn't create edge for ${e} handle id: "${e===`source`?n:r}", edge id: ${t}.`,error010:()=>`Handle: No node id found. Make sure to only use a Handle inside a custom Node.`,error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,error013:(e=`react`)=>`It seems that you haven't loaded the styles. Please import '@xyflow/${e}/dist/style.css' or base.css to make sure everything is working properly.`,error014:()=>`useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.`,error015:()=>`It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs.`,error016:e=>`Edge with id "${e}" does not exist, it may have been removed. This can happen when an edge is deleted before the "onEdgeClick" handler is called.`},Uo=[[-1/0,-1/0],[1/0,1/0]],Wo=[`Enter`,` `,`Escape`],Go={"node.a11yDescription.default":`Press enter or space to select a node. Press delete to remove it and escape to cancel.`,"node.a11yDescription.keyboardDisabled":`Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.`,"node.a11yDescription.ariaLiveMessage":({direction:e,x:t,y:n})=>`Moved selected node ${e}. New position, x: ${t}, y: ${n}`,"edge.a11yDescription.default":`Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.`,"controls.ariaLabel":`Control Panel`,"controls.zoomIn.ariaLabel":`Zoom In`,"controls.zoomOut.ariaLabel":`Zoom Out`,"controls.fitView.ariaLabel":`Fit View`,"controls.interactive.ariaLabel":`Toggle Interactivity`,"minimap.ariaLabel":`Mini Map`,"handle.ariaLabel":`Handle`},Ko;(function(e){e.Strict=`strict`,e.Loose=`loose`})(Ko||={});var qo;(function(e){e.Free=`free`,e.Vertical=`vertical`,e.Horizontal=`horizontal`})(qo||={});var Jo;(function(e){e.Partial=`partial`,e.Full=`full`})(Jo||={});var Yo={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null},Xo;(function(e){e.Bezier=`default`,e.Straight=`straight`,e.Step=`step`,e.SmoothStep=`smoothstep`,e.SimpleBezier=`simplebezier`})(Xo||={});var Zo;(function(e){e.Arrow=`arrow`,e.ArrowClosed=`arrowclosed`})(Zo||={});var X;(function(e){e.Left=`left`,e.Top=`top`,e.Right=`right`,e.Bottom=`bottom`})(X||={});var Qo={[X.Left]:X.Right,[X.Right]:X.Left,[X.Top]:X.Bottom,[X.Bottom]:X.Top};function $o(e){return e===null?null:e?`valid`:`invalid`}var es=e=>`id`in e&&`source`in e&&`target`in e,ts=e=>`id`in e&&`position`in e&&!(`source`in e)&&!(`target`in e),ns=e=>`id`in e&&`internals`in e&&!(`source`in e)&&!(`target`in e),rs=(e,t=[0,0])=>{let{width:n,height:r}=Is(e),i=e.origin??t,a=n*i[0],o=r*i[1];return{x:e.position.x-a,y:e.position.y-o}},is=(e,t={nodeOrigin:[0,0]})=>e.length===0?{x:0,y:0,width:0,height:0}:ys(e.reduce((e,n)=>{let r=typeof n==`string`,i=!t.nodeLookup&&!r?n:void 0;return t.nodeLookup&&(i=r?t.nodeLookup.get(n):ns(n)?n:t.nodeLookup.get(n.id)),_s(e,i?xs(i,t.nodeOrigin):{x:0,y:0,x2:0,y2:0})},{x:1/0,y:1/0,x2:-1/0,y2:-1/0})),as=(e,t={})=>{let n={x:1/0,y:1/0,x2:-1/0,y2:-1/0},r=!1;return e.forEach(e=>{(t.filter===void 0||t.filter(e))&&(n=_s(n,xs(e)),r=!0)}),r?ys(n):{x:0,y:0,width:0,height:0}},os=(e,t,[n,r,i]=[0,0,1],a=!1,o=!1)=>{let s={...Os(t,[n,r,i]),width:t.width/i,height:t.height/i},c=[];for(let t of e.values()){let{measured:e,selectable:n=!0,hidden:r=!1}=t;if(o&&!n||r)continue;let i=e.width??t.width??t.initialWidth??null,l=e.height??t.height??t.initialHeight??null,u=Cs(s,bs(t)),d=(i??0)*(l??0),f=a&&u>0;(!t.internals.handleBounds||f||u>=d||t.dragging)&&c.push(t)}return c},ss=(e,t)=>{let n=new Set;return e.forEach(e=>{n.add(e.id)}),t.filter(e=>n.has(e.source)||n.has(e.target))};function cs(e,t){let n=new Map,r=t?.nodes?new Set(t.nodes.map(e=>e.id)):null;return e.forEach(e=>{e.measured.width&&e.measured.height&&(t?.includeHiddenNodes||!e.hidden)&&(!r||r.has(e.id))&&n.set(e.id,e)}),n}async function ls({nodes:e,width:t,height:n,panZoom:r,minZoom:i,maxZoom:a},o){if(e.size===0)return!0;let s=Ns(as(cs(e,o)),t,n,o?.minZoom??i,o?.maxZoom??a,o?.padding??.1);return await r.setViewport(s,{duration:o?.duration,ease:o?.ease,interpolate:o?.interpolate}),!0}function us({nodeId:e,nextPosition:t,nodeLookup:n,nodeOrigin:r=[0,0],nodeExtent:i,onError:a}){let o=n.get(e),s=o.parentId?n.get(o.parentId):void 0,{x:c,y:l}=s?s.internals.positionAbsolute:{x:0,y:0},u=o.origin??r,d=o.extent||i;if(o.extent===`parent`&&!o.expandParent)if(!s)a?.(`005`,Ho.error005());else{let e=s.measured.width,t=s.measured.height;e&&t&&(d=[[c,l],[c+e,l+t]])}else s&&Fs(o.extent)&&(d=[[o.extent[0][0]+c,o.extent[0][1]+l],[o.extent[1][0]+c,o.extent[1][1]+l]]);let f=Fs(d)?ps(t,d,o.measured):t;return(o.measured.width===void 0||o.measured.height===void 0)&&a?.(`015`,Ho.error015()),{position:{x:f.x-c+(o.measured.width??0)*u[0],y:f.y-l+(o.measured.height??0)*u[1]},positionAbsolute:f}}async function ds({nodesToRemove:e=[],edgesToRemove:t=[],nodes:n,edges:r,onBeforeDelete:i}){let a=new Set(e.map(e=>e.id)),o=[];for(let e of n){if(e.deletable===!1)continue;let t=a.has(e.id),n=!t&&e.parentId&&o.find(t=>t.id===e.parentId);(t||n)&&o.push(e)}let s=new Set(t.map(e=>e.id)),c=r.filter(e=>e.deletable!==!1),l=ss(o,c);for(let e of c)s.has(e.id)&&!l.find(t=>t.id===e.id)&&l.push(e);if(!i)return{edges:l,nodes:o};let u=await i({nodes:o,edges:l});return typeof u==`boolean`?u?{edges:l,nodes:o}:{edges:[],nodes:[]}:u}var fs=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),ps=(e={x:0,y:0},t,n)=>({x:fs(e.x,t[0][0],t[1][0]-(n?.width??0)),y:fs(e.y,t[0][1],t[1][1]-(n?.height??0))});function ms(e,t,n){let{width:r,height:i}=Is(n),{x:a,y:o}=n.internals.positionAbsolute;return ps(e,[[a,o],[a+r,o+i]],t)}var hs=(e,t,n)=>e<t?fs(Math.abs(e-t),1,t)/t:e>n?-fs(Math.abs(e-n),1,t)/t:0,gs=(e,t,n=15,r=40)=>[hs(e.x,r,t.width-r)*n,hs(e.y,r,t.height-r)*n],_s=(e,t)=>({x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x2,t.x2),y2:Math.max(e.y2,t.y2)}),vs=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),ys=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),bs=(e,t=[0,0])=>{let{x:n,y:r}=ns(e)?e.internals.positionAbsolute:rs(e,t);return{x:n,y:r,width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}},xs=(e,t=[0,0])=>{let{x:n,y:r}=ns(e)?e.internals.positionAbsolute:rs(e,t);return{x:n,y:r,x2:n+(e.measured?.width??e.width??e.initialWidth??0),y2:r+(e.measured?.height??e.height??e.initialHeight??0)}},Ss=(e,t)=>ys(_s(vs(e),vs(t))),Cs=(e,t)=>{let n=Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x)),r=Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y));return Math.ceil(n*r)},ws=e=>Ts(e.width)&&Ts(e.height)&&Ts(e.x)&&Ts(e.y),Ts=e=>!isNaN(e)&&isFinite(e),Es=(e,t)=>(e,t)=>{},Ds=(e,t=[1,1])=>({x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}),Os=({x:e,y:t},[n,r,i],a=!1,o=[1,1])=>{let s={x:(e-n)/i,y:(t-r)/i};return a?Ds(s,o):s},ks=({x:e,y:t},[n,r,i])=>({x:e*i+n,y:t*i+r});function As(e,t){if(typeof e==`number`)return Math.floor((t-t/(1+e))*.5);if(typeof e==`string`&&e.endsWith(`px`)){let t=parseFloat(e);if(!Number.isNaN(t))return Math.floor(t)}if(typeof e==`string`&&e.endsWith(`%`)){let n=parseFloat(e);if(!Number.isNaN(n))return Math.floor(t*n*.01)}return console.error(`The padding value "${e}" is invalid. Please provide a number or a string with a valid unit (px or %).`),0}function js(e,t,n){if(typeof e==`string`||typeof e==`number`){let r=As(e,n),i=As(e,t);return{top:r,right:i,bottom:r,left:i,x:i*2,y:r*2}}if(typeof e==`object`){let r=As(e.top??e.y??0,n),i=As(e.bottom??e.y??0,n),a=As(e.left??e.x??0,t),o=As(e.right??e.x??0,t);return{top:r,right:o,bottom:i,left:a,x:a+o,y:r+i}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function Ms(e,t,n,r,i,a){let{x:o,y:s}=ks(e,[t,n,r]),{x:c,y:l}=ks({x:e.x+e.width,y:e.y+e.height},[t,n,r]),u=i-c,d=a-l;return{left:Math.floor(o),top:Math.floor(s),right:Math.floor(u),bottom:Math.floor(d)}}var Ns=(e,t,n,r,i,a)=>{let o=js(a,t,n),s=(t-o.x)/e.width,c=(n-o.y)/e.height,l=fs(Math.min(s,c),r,i),u=e.x+e.width/2,d=e.y+e.height/2,f=t/2-u*l,p=n/2-d*l,m=Ms(e,f,p,l,t,n),h={left:Math.min(m.left-o.left,0),top:Math.min(m.top-o.top,0),right:Math.min(m.right-o.right,0),bottom:Math.min(m.bottom-o.bottom,0)};return{x:f-h.left+h.right,y:p-h.top+h.bottom,zoom:l}},Ps=()=>typeof navigator<`u`&&navigator?.userAgent?.indexOf(`Mac`)>=0;function Fs(e){return e!=null&&e!==`parent`}function Is(e){return{width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}}function Ls(e){return(e.measured?.width??e.width??e.initialWidth)!==void 0&&(e.measured?.height??e.height??e.initialHeight)!==void 0}function Rs(e,t={width:0,height:0},n,r,i){let a={...e},o=r.get(n);if(o){let e=o.origin||i;a.x+=o.internals.positionAbsolute.x-(t.width??0)*e[0],a.y+=o.internals.positionAbsolute.y-(t.height??0)*e[1]}return a}function zs(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function Bs(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function Vs(e){return{...Go,...e||{}}}function Hs(e,{snapGrid:t=[0,0],snapToGrid:n=!1,transform:r,containerBounds:i}){let{x:a,y:o}=Js(e),s=Os({x:a-(i?.left??0),y:o-(i?.top??0)},r),{x:c,y:l}=n?Ds(s,t):s;return{xSnapped:c,ySnapped:l,...s}}var Us=e=>({width:e.offsetWidth,height:e.offsetHeight}),Ws=e=>e?.getRootNode?.()||window?.document,Gs=[`INPUT`,`SELECT`,`TEXTAREA`];function Ks(e){let t=e.composedPath?.()?.[0]||e.target;return t?.nodeType===1?Gs.includes(t.nodeName)||t.hasAttribute(`contenteditable`)||!!t.closest(`.nokey`):!1}var qs=e=>`clientX`in e,Js=(e,t)=>{let n=qs(e),r=n?e.clientX:e.touches?.[0].clientX,i=n?e.clientY:e.touches?.[0].clientY;return{x:r-(t?.left??0),y:i-(t?.top??0)}},Ys=(e,t,n,r,i)=>{let a=t.querySelectorAll(`.${e}`);return!a||!a.length?null:Array.from(a).map(t=>{let a=t.getBoundingClientRect();return{id:t.getAttribute(`data-handleid`),type:e,nodeId:i,position:t.getAttribute(`data-handlepos`),x:(a.left-n.left)/r,y:(a.top-n.top)/r,...Us(t)}})};function Xs({sourceX:e,sourceY:t,targetX:n,targetY:r,sourceControlX:i,sourceControlY:a,targetControlX:o,targetControlY:s}){let c=e*.125+i*.375+o*.375+n*.125,l=t*.125+a*.375+s*.375+r*.125;return[c,l,Math.abs(c-e),Math.abs(l-t)]}function Zs(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function Qs({pos:e,x1:t,y1:n,x2:r,y2:i,c:a}){switch(e){case X.Left:return[t-Zs(t-r,a),n];case X.Right:return[t+Zs(r-t,a),n];case X.Top:return[t,n-Zs(n-i,a)];case X.Bottom:return[t,n+Zs(i-n,a)]}}function $s({sourceX:e,sourceY:t,sourcePosition:n=X.Bottom,targetX:r,targetY:i,targetPosition:a=X.Top,curvature:o=.25}){let[s,c]=Qs({pos:n,x1:e,y1:t,x2:r,y2:i,c:o}),[l,u]=Qs({pos:a,x1:r,y1:i,x2:e,y2:t,c:o}),[d,f,p,m]=Xs({sourceX:e,sourceY:t,targetX:r,targetY:i,sourceControlX:s,sourceControlY:c,targetControlX:l,targetControlY:u});return[`M${e},${t} C${s},${c} ${l},${u} ${r},${i}`,d,f,p,m]}function ec({sourceX:e,sourceY:t,targetX:n,targetY:r}){let i=Math.abs(n-e)/2,a=n<e?n+i:n-i,o=Math.abs(r-t)/2;return[a,r<t?r+o:r-o,i,o]}function tc({sourceNode:e,targetNode:t,selected:n=!1,zIndex:r=0,elevateOnSelect:i=!1,zIndexMode:a=`basic`}){return a===`manual`?r:(i&&n?r+1e3:r)+Math.max(e.parentId||i&&e.selected?e.internals.z:0,t.parentId||i&&t.selected?t.internals.z:0)}function nc({sourceNode:e,targetNode:t,width:n,height:r,transform:i}){let a=_s(xs(e),xs(t));return a.x===a.x2&&(a.x2+=1),a.y===a.y2&&(a.y2+=1),Cs({x:-i[0]/i[2],y:-i[1]/i[2],width:n/i[2],height:r/i[2]},ys(a))>0}var rc=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`xy-edge__${e}${t||``}-${n}${r||``}`,ic=(e,t)=>t.some(t=>t.source===e.source&&t.target===e.target&&(t.sourceHandle===e.sourceHandle||!t.sourceHandle&&!e.sourceHandle)&&(t.targetHandle===e.targetHandle||!t.targetHandle&&!e.targetHandle)),ac=(e,t,n={})=>{if(!e.source||!e.target)return n.onError?.(`006`,Ho.error006()),t;let r=n.getEdgeId||rc,i;return i=es(e)?{...e}:{...e,id:r(e)},ic(i,t)?t:(i.sourceHandle===null&&delete i.sourceHandle,i.targetHandle===null&&delete i.targetHandle,t.concat(i))};function oc({sourceX:e,sourceY:t,targetX:n,targetY:r}){let[i,a,o,s]=ec({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,i,a,o,s]}var sc={[X.Left]:{x:-1,y:0},[X.Right]:{x:1,y:0},[X.Top]:{x:0,y:-1},[X.Bottom]:{x:0,y:1}},cc=({source:e,sourcePosition:t=X.Bottom,target:n})=>t===X.Left||t===X.Right?e.x<n.x?{x:1,y:0}:{x:-1,y:0}:e.y<n.y?{x:0,y:1}:{x:0,y:-1},lc=(e,t)=>Math.sqrt((t.x-e.x)**2+(t.y-e.y)**2);function uc({source:e,sourcePosition:t=X.Bottom,target:n,targetPosition:r=X.Top,center:i,offset:a,stepPosition:o}){let s=sc[t],c=sc[r],l={x:e.x+s.x*a,y:e.y+s.y*a},u={x:n.x+c.x*a,y:n.y+c.y*a},d=cc({source:l,sourcePosition:t,target:u}),f=d.x===0?`y`:`x`,p=d[f],m=[],h,g,_={x:0,y:0},v={x:0,y:0},[,,y,b]=ec({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(s[f]*c[f]===-1){f===`x`?(h=i.x??l.x+(u.x-l.x)*o,g=i.y??(l.y+u.y)/2):(h=i.x??(l.x+u.x)/2,g=i.y??l.y+(u.y-l.y)*o);let e=[{x:h,y:l.y},{x:h,y:u.y}],t=[{x:l.x,y:g},{x:u.x,y:g}];m=s[f]===p?f===`x`?e:t:f===`x`?t:e}else{let i=[{x:l.x,y:u.y}],o=[{x:u.x,y:l.y}];if(m=f===`x`?s.x===p?o:i:s.y===p?i:o,t===r){let t=Math.abs(e[f]-n[f]);if(t<=a){let r=Math.min(a-1,a-t);s[f]===p?_[f]=(l[f]>e[f]?-1:1)*r:v[f]=(u[f]>n[f]?-1:1)*r}}if(t!==r){let e=f===`x`?`y`:`x`,t=s[f]===c[e],n=l[e]>u[e],r=l[e]<u[e];(s[f]===1&&(!t&&n||t&&r)||s[f]!==1&&(!t&&r||t&&n))&&(m=f===`x`?i:o)}let d={x:l.x+_.x,y:l.y+_.y},y={x:u.x+v.x,y:u.y+v.y};Math.max(Math.abs(d.x-m[0].x),Math.abs(y.x-m[0].x))>=Math.max(Math.abs(d.y-m[0].y),Math.abs(y.y-m[0].y))?(h=(d.x+y.x)/2,g=m[0].y):(h=m[0].x,g=(d.y+y.y)/2)}let x={x:l.x+_.x,y:l.y+_.y},S={x:u.x+v.x,y:u.y+v.y};return[[e,...x.x!==m[0].x||x.y!==m[0].y?[x]:[],...m,...S.x!==m[m.length-1].x||S.y!==m[m.length-1].y?[S]:[],n],h,g,y,b]}function dc(e,t,n,r){let i=Math.min(lc(e,t)/2,lc(t,n)/2,r),{x:a,y:o}=t;if(e.x===a&&a===n.x||e.y===o&&o===n.y)return`L${a} ${o}`;if(e.y===o){let t=e.x<n.x?-1:1,r=e.y<n.y?1:-1;return`L ${a+i*t},${o}Q ${a},${o} ${a},${o+i*r}`}let s=e.x<n.x?1:-1;return`L ${a},${o+i*(e.y<n.y?-1:1)}Q ${a},${o} ${a+i*s},${o}`}function fc({sourceX:e,sourceY:t,sourcePosition:n=X.Bottom,targetX:r,targetY:i,targetPosition:a=X.Top,borderRadius:o=5,centerX:s,centerY:c,offset:l=20,stepPosition:u=.5}){let[d,f,p,m,h]=uc({source:{x:e,y:t},sourcePosition:n,target:{x:r,y:i},targetPosition:a,center:{x:s,y:c},offset:l,stepPosition:u}),g=`M${d[0].x} ${d[0].y}`;for(let e=1;e<d.length-1;e++)g+=dc(d[e-1],d[e],d[e+1],o);return g+=`L${d[d.length-1].x} ${d[d.length-1].y}`,[g,f,p,m,h]}function pc(e){return e&&!!(e.internals.handleBounds||e.handles?.length)&&!!(e.measured.width||e.width||e.initialWidth)}function mc(e){let{sourceNode:t,targetNode:n}=e;if(!pc(t)||!pc(n))return null;let r=t.internals.handleBounds||hc(t.handles),i=n.internals.handleBounds||hc(n.handles),a=_c(r?.source??[],e.sourceHandle),o=_c(e.connectionMode===Ko.Strict?i?.target??[]:(i?.target??[]).concat(i?.source??[]),e.targetHandle);if(!a||!o)return e.onError?.(`008`,Ho.error008(a?`target`:`source`,{id:e.id,sourceHandle:e.sourceHandle,targetHandle:e.targetHandle})),null;let s=a?.position||X.Bottom,c=o?.position||X.Top,l=gc(t,a,s),u=gc(n,o,c);return{sourceX:l.x,sourceY:l.y,targetX:u.x,targetY:u.y,sourcePosition:s,targetPosition:c}}function hc(e){if(!e)return null;let t=[],n=[];for(let r of e)r.width=r.width??1,r.height=r.height??1,r.type===`source`?t.push(r):r.type===`target`&&n.push(r);return{source:t,target:n}}function gc(e,t,n=X.Left,r=!1){let i=(t?.x??0)+e.internals.positionAbsolute.x,a=(t?.y??0)+e.internals.positionAbsolute.y,{width:o,height:s}=t??Is(e);if(r)return{x:i+o/2,y:a+s/2};switch(t?.position??n){case X.Top:return{x:i+o/2,y:a};case X.Right:return{x:i+o,y:a+s/2};case X.Bottom:return{x:i+o/2,y:a+s};case X.Left:return{x:i,y:a+s/2}}}function _c(e,t){return e&&(t?e.find(e=>e.id===t):e[0])||null}function vc(e,t){return e?typeof e==`string`?e:`${t?`${t}__`:``}${Object.keys(e).sort().map(t=>`${t}=${e[t]}`).join(`&`)}`:``}function yc(e,{id:t,defaultColor:n,defaultMarkerStart:r,defaultMarkerEnd:i}){let a=new Set;return e.reduce((e,o)=>([o.markerStart||r,o.markerEnd||i].forEach(r=>{if(r&&typeof r==`object`){let i=vc(r,t);a.has(i)||(e.push({id:i,color:r.color||n,...r}),a.add(i))}}),e),[]).sort((e,t)=>e.id.localeCompare(t.id))}var bc=1e3,xc=10,Sc={nodeOrigin:[0,0],nodeExtent:Uo,elevateNodesOnSelect:!0,zIndexMode:`basic`,defaults:{}},Cc={...Sc,checkEquality:!0};function wc(e,t){let n={...e};for(let e in t)t[e]!==void 0&&(n[e]=t[e]);return n}function Tc(e,t,n){let r=wc(Sc,n);for(let n of e.values())if(n.parentId)Ac(n,e,t,r);else{let e=ps(rs(n,r.nodeOrigin),Fs(n.extent)?n.extent:r.nodeExtent,Is(n));n.internals.positionAbsolute=e}}function Ec(e,t){if(!e.handles)return e.measured?t?.internals.handleBounds:void 0;let n=[],r=[];for(let t of e.handles){let i={id:t.id,width:t.width??1,height:t.height??1,nodeId:e.id,x:t.x,y:t.y,position:t.position,type:t.type};t.type===`source`?n.push(i):t.type===`target`&&r.push(i)}return{source:n,target:r}}function Dc(e){return e===`manual`}function Oc(e,t,n,r={}){let i=wc(Cc,r),a={i:0},o=new Map(t),s=i?.elevateNodesOnSelect&&!Dc(i.zIndexMode)?bc:0,c=e.length>0,l=!1;t.clear(),n.clear();for(let u of e){let e=o.get(u.id);if(i.checkEquality&&u===e?.internals.userNode)t.set(u.id,e);else{let n=ps(rs(u,i.nodeOrigin),Fs(u.extent)?u.extent:i.nodeExtent,Is(u));e={...i.defaults,...u,measured:{width:u.measured?.width,height:u.measured?.height},internals:{positionAbsolute:n,handleBounds:Ec(u,e),z:jc(u,s,i.zIndexMode),userNode:u}},t.set(u.id,e)}(e.measured===void 0||e.measured.width===void 0||e.measured.height===void 0)&&!e.hidden&&(c=!1),u.parentId&&Ac(e,t,n,r,a),l||=u.selected??!1}return{nodesInitialized:c,hasSelectedNodes:l}}function kc(e,t){if(!e.parentId)return;let n=t.get(e.parentId);n?n.set(e.id,e):t.set(e.parentId,new Map([[e.id,e]]))}function Ac(e,t,n,r,i){let{elevateNodesOnSelect:a,nodeOrigin:o,nodeExtent:s,zIndexMode:c}=wc(Sc,r),l=e.parentId,u=t.get(l);if(!u){console.warn(`Parent node ${l} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}kc(e,n),i&&!u.parentId&&u.internals.rootParentIndex===void 0&&c===`auto`&&(u.internals.rootParentIndex=++i.i,u.internals.z=u.internals.z+i.i*xc),i&&u.internals.rootParentIndex!==void 0&&(i.i=u.internals.rootParentIndex);let{x:d,y:f,z:p}=Mc(e,u,o,s,a&&!Dc(c)?bc:0,c),{positionAbsolute:m}=e.internals,h=d!==m.x||f!==m.y;(h||p!==e.internals.z)&&t.set(e.id,{...e,internals:{...e.internals,positionAbsolute:h?{x:d,y:f}:m,z:p}})}function jc(e,t,n){let r=Ts(e.zIndex)?e.zIndex:0;return Dc(n)?r:r+(e.selected?t:0)}function Mc(e,t,n,r,i,a){let{x:o,y:s}=t.internals.positionAbsolute,c=Is(e),l=rs(e,n),u=Fs(e.extent)?ps(l,e.extent,c):l,d=ps({x:o+u.x,y:s+u.y},r,c);e.extent===`parent`&&(d=ms(d,c,t));let f=jc(e,i,a),p=t.internals.z??0;return{x:d.x,y:d.y,z:p>=f?p+1:f}}function Nc(e,t,n,r=[0,0]){let i=[],a=new Map;for(let n of e){let e=t.get(n.parentId);if(!e)continue;let r=Ss(a.get(n.parentId)?.expandedRect??bs(e),n.rect);a.set(n.parentId,{expandedRect:r,parent:e})}return a.size>0&&a.forEach(({expandedRect:t,parent:a},o)=>{let s=a.internals.positionAbsolute,c=Is(a),l=a.origin??r,u=t.x<s.x?Math.round(Math.abs(s.x-t.x)):0,d=t.y<s.y?Math.round(Math.abs(s.y-t.y)):0,f=Math.max(c.width,Math.round(t.width)),p=Math.max(c.height,Math.round(t.height)),m=(f-c.width)*l[0],h=(p-c.height)*l[1];(u>0||d>0||m||h)&&(i.push({id:o,type:`position`,position:{x:a.position.x-u+m,y:a.position.y-d+h}}),n.get(o)?.forEach(t=>{e.some(e=>e.id===t.id)||i.push({id:t.id,type:`position`,position:{x:t.position.x+u,y:t.position.y+d}})})),(c.width<t.width||c.height<t.height||u||d)&&i.push({id:o,type:`dimensions`,setAttributes:!0,dimensions:{width:f+(u?l[0]*u-m:0),height:p+(d?l[1]*d-h:0)}})}),i}function Pc(e,t,n,r,i,a,o){let s=r?.querySelector(`.xyflow__viewport`),c=!1;if(!s)return{changes:[],updatedInternals:c};let l=[],u=window.getComputedStyle(s),{m22:d}=new window.DOMMatrixReadOnly(u.transform),f=[];for(let r of e.values()){let e=t.get(r.id);if(!e)continue;if(e.hidden){t.set(e.id,{...e,internals:{...e.internals,handleBounds:void 0}}),c=!0;continue}let s=Us(r.nodeElement),u=e.measured.width!==s.width||e.measured.height!==s.height;if(s.width&&s.height&&(u||!e.internals.handleBounds||r.force)){let p=r.nodeElement.getBoundingClientRect(),m=Fs(e.extent)?e.extent:a,{positionAbsolute:h}=e.internals;e.parentId&&e.extent===`parent`?h=ms(h,s,t.get(e.parentId)):m&&(h=ps(h,m,s));let g={...e,measured:s,internals:{...e.internals,positionAbsolute:h,handleBounds:{source:Ys(`source`,r.nodeElement,p,d,e.id),target:Ys(`target`,r.nodeElement,p,d,e.id)}}};t.set(e.id,g),e.parentId&&Ac(g,t,n,{nodeOrigin:i,zIndexMode:o}),c=!0,u&&(l.push({id:e.id,type:`dimensions`,dimensions:s}),e.expandParent&&e.parentId&&f.push({id:e.id,parentId:e.parentId,rect:bs(g,i)}))}}if(f.length>0){let e=Nc(f,t,n,i);l.push(...e)}return{changes:l,updatedInternals:c}}async function Fc({delta:e,panZoom:t,transform:n,translateExtent:r,width:i,height:a}){if(!t||!e.x&&!e.y)return!1;let o=await t.setViewportConstrained({x:n[0]+e.x,y:n[1]+e.y,zoom:n[2]},[[0,0],[i,a]],r);return!!o&&(o.x!==n[0]||o.y!==n[1]||o.k!==n[2])}function Ic(e,t,n,r,i,a){let o=i,s=r.get(o)||new Map;r.set(o,s.set(n,t)),o=`${i}-${e}`;let c=r.get(o)||new Map;if(r.set(o,c.set(n,t)),a){o=`${i}-${e}-${a}`;let s=r.get(o)||new Map;r.set(o,s.set(n,t))}}function Lc(e,t,n){e.clear(),t.clear();for(let r of n){let{source:n,target:i,sourceHandle:a=null,targetHandle:o=null}=r,s={edgeId:r.id,source:n,target:i,sourceHandle:a,targetHandle:o},c=`${n}-${a}--${i}-${o}`;Ic(`source`,s,`${i}-${o}--${n}-${a}`,e,n,a),Ic(`target`,s,c,e,i,o),t.set(r.id,r)}}function Rc(e,t){if(!e.parentId)return!1;let n=t.get(e.parentId);return n?n.selected?!0:Rc(n,t):!1}function zc(e,t,n){let r=e;do{if(r?.matches?.(t))return!0;if(r===n)return!1;r=r?.parentElement}while(r);return!1}function Bc(e,t,n,r){let i=new Map;for(let[a,o]of e)if((o.selected||o.id===r)&&(!o.parentId||!Rc(o,e))&&(o.draggable||t&&o.draggable===void 0)){let t=e.get(a);t&&i.set(a,{id:a,position:t.position||{x:0,y:0},distance:{x:n.x-t.internals.positionAbsolute.x,y:n.y-t.internals.positionAbsolute.y},extent:t.extent,parentId:t.parentId,origin:t.origin,expandParent:t.expandParent,internals:{positionAbsolute:t.internals.positionAbsolute||{x:0,y:0}},measured:{width:t.measured.width??0,height:t.measured.height??0}})}return i}function Vc({nodeId:e,dragItems:t,nodeLookup:n,dragging:r=!0}){let i=[];for(let[e,a]of t){let t=n.get(e)?.internals.userNode;t&&i.push({...t,position:a.position,dragging:r})}if(!e)return[i[0],i];let a=n.get(e)?.internals.userNode;return[a?{...a,position:t.get(e)?.position||a.position,dragging:r}:i[0],i]}function Hc({dragItems:e,snapGrid:t,x:n,y:r}){let i=e.values().next().value;if(!i)return null;let a={x:n-i.distance.x,y:r-i.distance.y},o=Ds(a,t);return{x:o.x-a.x,y:o.y-a.y}}function Uc({onNodeMouseDown:e,getStoreItems:t,onDragStart:n,onDrag:r,onDragStop:i}){let a={x:null,y:null},o=0,s=new Map,c=!1,l={x:0,y:0},u=null,d=!1,f=null,p=!1,m=!1,h=null;function g({noDragClassName:g,handleSelector:_,domNode:v,isSelectable:y,nodeId:b,nodeClickDistance:x=0}){f=J(v);function S({x:e,y:n}){let{nodeLookup:i,nodeExtent:o,snapGrid:c,snapToGrid:l,nodeOrigin:u,onNodeDrag:d,onSelectionDrag:f,onError:p,updateNodePositions:g}=t();a={x:e,y:n};let _=!1,v=s.size>1,y=v&&o?vs(as(s)):null,x=v&&l?Hc({dragItems:s,snapGrid:c,x:e,y:n}):null;for(let[t,r]of s){if(!i.has(t))continue;let a={x:e-r.distance.x,y:n-r.distance.y};l&&(a=x?{x:Math.round(a.x+x.x),y:Math.round(a.y+x.y)}:Ds(a,c));let s=null;if(v&&o&&!r.extent&&y){let{positionAbsolute:e}=r.internals,t=e.x-y.x+o[0][0],n=e.x+r.measured.width-y.x2+o[1][0],i=e.y-y.y+o[0][1],a=e.y+r.measured.height-y.y2+o[1][1];s=[[t,i],[n,a]]}let{position:d,positionAbsolute:f}=us({nodeId:t,nextPosition:a,nodeLookup:i,nodeExtent:s||o,nodeOrigin:u,onError:p});_=_||r.position.x!==d.x||r.position.y!==d.y,r.position=d,r.internals.positionAbsolute=f}if(m||=_,_&&(g(s,!0),h&&(r||d||!b&&f))){let[e,t]=Vc({nodeId:b,dragItems:s,nodeLookup:i});r?.(h,s,e,t),d?.(h,e,t),b||f?.(h,t)}}async function C(){if(!u)return;let{transform:e,panBy:n,autoPanSpeed:r,autoPanOnNodeDrag:i}=t();if(!i){c=!1,cancelAnimationFrame(o);return}let[s,d]=gs(l,u,r);(s!==0||d!==0)&&(a.x=(a.x??0)-s/e[2],a.y=(a.y??0)-d/e[2],await n({x:s,y:d})&&S(a)),o=requestAnimationFrame(C)}function w(r){let{nodeLookup:i,multiSelectionActive:o,nodesDraggable:c,transform:l,snapGrid:f,snapToGrid:p,selectNodesOnDrag:m,onNodeDragStart:h,onSelectionDragStart:g,unselectNodesAndEdges:_}=t();d=!0,(!m||!y)&&!o&&b&&(i.get(b)?.selected||_()),y&&m&&b&&e?.(b);let v=Hs(r.sourceEvent,{transform:l,snapGrid:f,snapToGrid:p,containerBounds:u});if(a=v,s=Bc(i,c,v,b),s.size>0&&(n||h||!b&&g)){let[e,t]=Vc({nodeId:b,dragItems:s,nodeLookup:i});n?.(r.sourceEvent,s,e,t),h?.(r.sourceEvent,e,t),b||g?.(r.sourceEvent,t)}}let T=wr().clickDistance(x).on(`start`,e=>{let{domNode:n,nodeDragThreshold:r,transform:i,snapGrid:o,snapToGrid:s}=t();u=n?.getBoundingClientRect()||null,p=!1,m=!1,h=e.sourceEvent,r===0&&w(e),a=Hs(e.sourceEvent,{transform:i,snapGrid:o,snapToGrid:s,containerBounds:u}),l=Js(e.sourceEvent,u)}).on(`drag`,e=>{let{autoPanOnNodeDrag:n,transform:r,snapGrid:i,snapToGrid:o,nodeDragThreshold:f,nodeLookup:m}=t(),g=Hs(e.sourceEvent,{transform:r,snapGrid:i,snapToGrid:o,containerBounds:u});if(h=e.sourceEvent,(e.sourceEvent.type===`touchmove`&&e.sourceEvent.touches.length>1||b&&!m.has(b))&&(p=!0),!p){if(!c&&n&&d&&(c=!0,C()),!d){let t=Js(e.sourceEvent,u),n=t.x-l.x,r=t.y-l.y;Math.sqrt(n*n+r*r)>f&&w(e)}(a.x!==g.xSnapped||a.y!==g.ySnapped)&&s&&d&&(l=Js(e.sourceEvent,u),S(g))}}).on(`end`,e=>{if(!d||p){p&&s.size>0&&t().updateNodePositions(s,!1);return}if(c=!1,d=!1,cancelAnimationFrame(o),s.size>0){let{nodeLookup:n,updateNodePositions:r,onNodeDragStop:a,onSelectionDragStop:o}=t();if(m&&=(r(s,!1),!1),i||a||!b&&o){let[t,r]=Vc({nodeId:b,dragItems:s,nodeLookup:n,dragging:!1});i?.(e.sourceEvent,s,t,r),a?.(e.sourceEvent,t,r),b||o?.(e.sourceEvent,r)}}}).filter(e=>{let t=e.target;return!e.button&&(!g||!zc(t,`.${g}`,v))&&(!_||zc(t,_,v))});f.call(T)}function _(){f?.on(`.drag`,null)}return{update:g,destroy:_}}function Wc(e,t,n){let r=[],i={x:e.x-n,y:e.y-n,width:n*2,height:n*2};for(let e of t.values())Cs(i,bs(e))>0&&r.push(e);return r}var Gc=250;function Kc(e,t,n,r){let i=[],a=1/0,o=Wc(e,n,t+Gc);for(let n of o){let o=[...n.internals.handleBounds?.source??[],...n.internals.handleBounds?.target??[]];for(let s of o){if(r.nodeId===s.nodeId&&r.type===s.type&&r.id===s.id)continue;let{x:o,y:c}=gc(n,s,s.position,!0),l=Math.sqrt((o-e.x)**2+(c-e.y)**2);l>t||(l<a?(i=[{...s,x:o,y:c}],a=l):l===a&&i.push({...s,x:o,y:c}))}}if(!i.length)return null;if(i.length>1){let e=r.type===`source`?`target`:`source`;return i.find(t=>t.type===e)??i[0]}return i[0]}function qc(e,t,n,r,i,a=!1){let o=r.get(e);if(!o)return null;let s=i===`strict`?o.internals.handleBounds?.[t]:[...o.internals.handleBounds?.source??[],...o.internals.handleBounds?.target??[]],c=(n?s?.find(e=>e.id===n):s?.[0])??null;return c&&a?{...c,...gc(o,c,c.position,!0)}:c}function Jc(e,t){return e||(t?.classList.contains(`target`)?`target`:t?.classList.contains(`source`)?`source`:null)}function Yc(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}var Xc=()=>!0;function Zc(e,{connectionMode:t,connectionRadius:n,handleId:r,nodeId:i,edgeUpdaterType:a,isTarget:o,domNode:s,nodeLookup:c,lib:l,autoPanOnConnect:u,flowId:d,panBy:f,cancelConnection:p,onConnectStart:m,onConnect:h,onConnectEnd:g,isValidConnection:_=Xc,onReconnectEnd:v,updateConnection:y,getTransform:b,getFromHandle:x,autoPanSpeed:S,dragThreshold:C=1,handleDomNode:w}){let T=Ws(e.target),E=0,D,{x:O,y:k}=Js(e),A=Jc(a,w),j=s?.getBoundingClientRect(),M=!1;if(!j||!A)return;let N=qc(i,A,r,c,t);if(!N)return;let P=Js(e,j),F=!1,I=null,L=!1,R=null;function z(){if(!u||!j)return;let[e,t]=gs(P,j,S);f({x:e,y:t}),E=requestAnimationFrame(z)}let B={...N,nodeId:i,type:A,position:N.position},V=c.get(i),H={inProgress:!0,isValid:null,from:gc(V,B,X.Left,!0),fromHandle:B,fromPosition:B.position,fromNode:V,to:P,toHandle:null,toPosition:Qo[B.position],toNode:null,pointer:P};function U(){M=!0,y(H),m?.(e,{nodeId:i,handleId:r,handleType:A})}C===0&&U();function W(e){if(!M){let{x:t,y:n}=Js(e),r=t-O,i=n-k;if(!(r*r+i*i>C*C))return;U()}if(!x()||!B){G(e);return}let a=b();P=Js(e,j),D=Kc(Os(P,a,!1,[1,1]),n,c,B),F||=(z(),!0);let s=Qc(e,{handle:D,connectionMode:t,fromNodeId:i,fromHandleId:r,fromType:o?`target`:`source`,isValidConnection:_,doc:T,lib:l,flowId:d,nodeLookup:c});R=s.handleDomNode,I=s.connection,L=Yc(!!D,s.isValid);let u=c.get(i),f=u?gc(u,B,X.Left,!0):H.from,p={...H,from:f,isValid:L,to:s.toHandle&&L?ks({x:s.toHandle.x,y:s.toHandle.y},a):P,toHandle:s.toHandle,toPosition:L&&s.toHandle?s.toHandle.position:Qo[B.position],toNode:s.toHandle?c.get(s.toHandle.nodeId):null,pointer:P};y(p),H=p}function G(e){if(!(`touches`in e&&e.touches.length>0)){if(M){(D||R)&&I&&L&&h?.(I);let{inProgress:t,...n}=H,r={...n,toPosition:H.toHandle?H.toPosition:null};g?.(e,r),a&&v?.(e,r)}p(),cancelAnimationFrame(E),F=!1,L=!1,I=null,R=null,T.removeEventListener(`mousemove`,W),T.removeEventListener(`mouseup`,G),T.removeEventListener(`touchmove`,W),T.removeEventListener(`touchend`,G)}}T.addEventListener(`mousemove`,W),T.addEventListener(`mouseup`,G),T.addEventListener(`touchmove`,W),T.addEventListener(`touchend`,G)}function Qc(e,{handle:t,connectionMode:n,fromNodeId:r,fromHandleId:i,fromType:a,doc:o,lib:s,flowId:c,isValidConnection:l=Xc,nodeLookup:u}){let d=a===`target`,f=t?o.querySelector(`.${s}-flow__handle[data-id="${c}-${t?.nodeId}-${t?.id}-${t?.type}"]`):null,{x:p,y:m}=Js(e),h=o.elementFromPoint(p,m),g=h?.classList.contains(`${s}-flow__handle`)?h:f,_={handleDomNode:g,isValid:!1,connection:null,toHandle:null};if(g){let e=Jc(void 0,g),t=g.getAttribute(`data-nodeid`),a=g.getAttribute(`data-handleid`),o=g.classList.contains(`connectable`),s=g.classList.contains(`connectableend`);if(!t||!e)return _;let c={source:d?t:r,sourceHandle:d?a:i,target:d?r:t,targetHandle:d?i:a};_.connection=c,_.isValid=o&&s&&(n===Ko.Strict?d&&e===`source`||!d&&e===`target`:t!==r||a!==i)&&l(c),_.toHandle=qc(t,e,a,u,n,!0)}return _}var $c={onPointerDown:Zc,isValid:Qc};function el({domNode:e,panZoom:t,getTransform:n,getViewScale:r}){let i=J(e);function a({translateExtent:e,width:a,height:o,zoomStep:s=1,pannable:c=!0,zoomable:l=!0,inversePan:u=!1}){let d=e=>{if(e.sourceEvent.type!==`wheel`||!t)return;let r=n(),i=e.sourceEvent.ctrlKey&&Ps()?10:1,a=-e.sourceEvent.deltaY*(e.sourceEvent.deltaMode===1?.05:e.sourceEvent.deltaMode?1:.002)*s,o=r[2]*2**(a*i);t.scaleTo(o)},f=[0,0],p=Vo().on(`start`,e=>{(e.sourceEvent.type===`mousedown`||e.sourceEvent.type===`touchstart`)&&(f=[e.sourceEvent.clientX??e.sourceEvent.touches[0].clientX,e.sourceEvent.clientY??e.sourceEvent.touches[0].clientY])}).on(`zoom`,c?i=>{let s=n();if(i.sourceEvent.type!==`mousemove`&&i.sourceEvent.type!==`touchmove`||!t)return;let c=[i.sourceEvent.clientX??i.sourceEvent.touches[0].clientX,i.sourceEvent.clientY??i.sourceEvent.touches[0].clientY],l=[c[0]-f[0],c[1]-f[1]];f=c;let d=r()*Math.max(s[2],Math.log(s[2]))*(u?-1:1),p={x:s[0]-l[0]*d,y:s[1]-l[1]*d},m=[[0,0],[a,o]];t.setViewportConstrained({x:p.x,y:p.y,zoom:s[2]},m,e)}:null).on(`zoom.wheel`,l?d:null);i.call(p,{})}function o(){i.on(`zoom`,null)}return{update:a,destroy:o,pointer:dr}}var tl=e=>({x:e.x,y:e.y,zoom:e.k}),nl=({x:e,y:t,zoom:n})=>jo.translate(e,t).scale(n),rl=(e,t)=>e.target.closest(`.${t}`),il=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),al=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,ol=(e,t=0,n=al,r=()=>{})=>{let i=typeof t==`number`&&t>0;return i||r(),i?e.transition().duration(t).ease(n).on(`end`,r):e},sl=e=>{let t=e.ctrlKey&&Ps()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t};function cl({zoomPanValues:e,noWheelClassName:t,d3Selection:n,d3Zoom:r,panOnScrollMode:i,panOnScrollSpeed:a,zoomOnPinch:o,onPanZoomStart:s,onPanZoom:c,onPanZoomEnd:l}){return u=>{if(rl(u,t))return u.ctrlKey&&u.preventDefault(),!1;u.preventDefault(),u.stopImmediatePropagation();let d=n.property(`__zoom`).k||1;if(u.ctrlKey&&o){let e=dr(u),t=d*2**sl(u);r.scaleTo(n,t,e,u);return}let f=u.deltaMode===1?20:1,p=i===qo.Vertical?0:u.deltaX*f,m=i===qo.Horizontal?0:u.deltaY*f;!Ps()&&u.shiftKey&&i!==qo.Vertical&&(p=u.deltaY*f,m=0),r.translateBy(n,-(p/d)*a,-(m/d)*a,{internal:!0});let h=tl(n.property(`__zoom`));clearTimeout(e.panScrollTimeout),e.isPanScrolling?(c?.(u,h),e.panScrollTimeout=setTimeout(()=>{l?.(u,h),e.isPanScrolling=!1},150)):(e.isPanScrolling=!0,s?.(u,h))}}function ll({noWheelClassName:e,preventScrolling:t,d3ZoomHandler:n}){return function(r,i){let a=r.type===`wheel`,o=!t&&a&&!r.ctrlKey,s=rl(r,e);if(r.ctrlKey&&a&&s&&r.preventDefault(),o||s)return null;r.preventDefault(),n.call(this,r,i)}}function ul({zoomPanValues:e,onDraggingChange:t,onPanZoomStart:n}){return r=>{if(r.sourceEvent?.internal)return;let i=tl(r.transform);e.mouseButton=r.sourceEvent?.button||0,e.isZoomingOrPanning=!0,e.prevViewport=i,r.sourceEvent?.type===`mousedown`&&t(!0),n&&n?.(r.sourceEvent,i)}}function dl({zoomPanValues:e,panOnDrag:t,onPaneContextMenu:n,onTransformChange:r,onPanZoom:i}){return a=>{e.usedRightMouseButton=!!(n&&il(t,e.mouseButton??0)),a.sourceEvent?.sync||r([a.transform.x,a.transform.y,a.transform.k]),i&&!a.sourceEvent?.internal&&i?.(a.sourceEvent,tl(a.transform))}}function fl({zoomPanValues:e,panOnDrag:t,panOnScroll:n,onDraggingChange:r,onPanZoomEnd:i,onPaneContextMenu:a}){return o=>{if(!o.sourceEvent?.internal&&(e.isZoomingOrPanning=!1,a&&il(t,e.mouseButton??0)&&!e.usedRightMouseButton&&o.sourceEvent&&a(o.sourceEvent),e.usedRightMouseButton=!1,r(!1),i)){let t=tl(o.transform);e.prevViewport=t,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{i?.(o.sourceEvent,t)},n?150:0)}}}function pl({zoomActivationKeyPressed:e,zoomOnScroll:t,zoomOnPinch:n,panOnDrag:r,panOnScroll:i,zoomOnDoubleClick:a,userSelectionActive:o,noWheelClassName:s,noPanClassName:c,lib:l,connectionInProgress:u}){return d=>{let f=e||t,p=n&&d.ctrlKey,m=d.type===`wheel`;if(d.button===1&&d.type===`mousedown`&&(rl(d,`${l}-flow__node`)||rl(d,`${l}-flow__edge`)))return!0;if(!r&&!f&&!i&&!a&&!n||o||u&&!m||rl(d,s)&&m||rl(d,c)&&(!m||i&&m&&!e)||!n&&d.ctrlKey&&m)return!1;if(!n&&d.type===`touchstart`&&d.touches?.length>1)return d.preventDefault(),!1;if(!f&&!i&&!p&&m||!r&&(d.type===`mousedown`||d.type===`touchstart`)||Array.isArray(r)&&!r.includes(d.button)&&d.type===`mousedown`)return!1;let h=Array.isArray(r)&&r.includes(d.button)||!d.button||d.button<=1;return(!d.ctrlKey||m)&&h}}function ml({domNode:e,minZoom:t,maxZoom:n,translateExtent:r,viewport:i,onPanZoom:a,onPanZoomStart:o,onPanZoomEnd:s,onDraggingChange:c}){let l={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},u=e.getBoundingClientRect(),d=Vo().scaleExtent([t,n]).translateExtent(r),f=J(e).call(d);v({x:i.x,y:i.y,zoom:fs(i.zoom,t,n)},[[0,0],[u.width,u.height]],r);let p=f.on(`wheel.zoom`),m=f.on(`dblclick.zoom`);d.wheelDelta(sl);async function h(e,t){return f?new Promise(n=>{d?.interpolate(t?.interpolate===`linear`?Ei:Bi).transform(ol(f,t?.duration,t?.ease,()=>n(!0)),e)}):!1}function g({noWheelClassName:e,noPanClassName:t,onPaneContextMenu:n,userSelectionActive:r,panOnScroll:i,panOnDrag:u,panOnScrollMode:h,panOnScrollSpeed:g,preventScrolling:v,zoomOnPinch:y,zoomOnScroll:b,zoomOnDoubleClick:x,zoomActivationKeyPressed:S,lib:C,onTransformChange:w,connectionInProgress:T,paneClickDistance:E,selectionOnDrag:D}){r&&!l.isZoomingOrPanning&&_();let O=i&&!S&&!r;d.clickDistance(D?1/0:!Ts(E)||E<0?0:E);let k=O?cl({zoomPanValues:l,noWheelClassName:e,d3Selection:f,d3Zoom:d,panOnScrollMode:h,panOnScrollSpeed:g,zoomOnPinch:y,onPanZoomStart:o,onPanZoom:a,onPanZoomEnd:s}):ll({noWheelClassName:e,preventScrolling:v,d3ZoomHandler:p});f.on(`wheel.zoom`,k,{passive:!1});let A=ul({zoomPanValues:l,onDraggingChange:c,onPanZoomStart:o});d.on(`start`,A);let j=dl({zoomPanValues:l,panOnDrag:u,onPaneContextMenu:!!n,onPanZoom:a,onTransformChange:w});d.on(`zoom`,j);let M=fl({zoomPanValues:l,panOnDrag:u,panOnScroll:i,onPaneContextMenu:n,onPanZoomEnd:s,onDraggingChange:c});d.on(`end`,M);let N=pl({zoomActivationKeyPressed:S,panOnDrag:u,zoomOnScroll:b,panOnScroll:i,zoomOnDoubleClick:x,zoomOnPinch:y,userSelectionActive:r,noPanClassName:t,noWheelClassName:e,lib:C,connectionInProgress:T});d.filter(N),x?f.on(`dblclick.zoom`,m):f.on(`dblclick.zoom`,null)}function _(){d.on(`zoom`,null)}async function v(e,t,n){let r=nl(e),i=d?.constrain()(r,t,n);return i&&await h(i),i}async function y(e,t){let n=nl(e);return await h(n,t),n}function b(e){if(f){let t=nl(e),n=f.property(`__zoom`);(n.k!==e.zoom||n.x!==e.x||n.y!==e.y)&&d?.transform(f,t,null,{sync:!0})}}function x(){let e=f?Mo(f.node()):{x:0,y:0,k:1};return{x:e.x,y:e.y,zoom:e.k}}async function S(e,t){return f?new Promise(n=>{d?.interpolate(t?.interpolate===`linear`?Ei:Bi).scaleTo(ol(f,t?.duration,t?.ease,()=>n(!0)),e)}):!1}async function C(e,t){return f?new Promise(n=>{d?.interpolate(t?.interpolate===`linear`?Ei:Bi).scaleBy(ol(f,t?.duration,t?.ease,()=>n(!0)),e)}):!1}function w(e){d?.scaleExtent(e)}function T(e){d?.translateExtent(e)}function E(e){let t=!Ts(e)||e<0?0:e;d?.clickDistance(t)}return{update:g,destroy:_,setViewport:y,setViewportConstrained:v,getViewport:x,scaleTo:S,scaleBy:C,setScaleExtent:w,setTranslateExtent:T,syncViewport:b,setClickDistance:E}}var hl;(function(e){e.Line=`line`,e.Handle=`handle`})(hl||={});function gl({width:e,prevWidth:t,height:n,prevHeight:r,affectsX:i,affectsY:a}){let o=e-t,s=n-r,c=[o>0?1:o<0?-1:0,s>0?1:s<0?-1:0];return o&&i&&(c[0]*=-1),s&&a&&(c[1]*=-1),c}function _l(e){return{isHorizontal:e.includes(`right`)||e.includes(`left`),isVertical:e.includes(`bottom`)||e.includes(`top`),affectsX:e.includes(`left`),affectsY:e.includes(`top`)}}function vl(e,t){return Math.max(0,t-e)}function yl(e,t){return Math.max(0,e-t)}function bl(e,t,n){return Math.max(0,t-e,e-n)}function xl(e,t){return e?!t:t}function Sl(e,t,n,r,i,a,o,s){let{affectsX:c,affectsY:l}=t,{isHorizontal:u,isVertical:d}=t,f=u&&d,{xSnapped:p,ySnapped:m}=n,{minWidth:h,maxWidth:g,minHeight:_,maxHeight:v}=r,{x:y,y:b,width:x,height:S,aspectRatio:C}=e,w=Math.floor(u?p-e.pointerX:0),T=Math.floor(d?m-e.pointerY:0),E=x+(c?-w:w),D=S+(l?-T:T),O=-a[0]*x,k=-a[1]*S,A=bl(E,h,g),j=bl(D,_,v);if(o){let e=0,t=0;c&&w<0?e=vl(y+w+O,o[0][0]):!c&&w>0&&(e=yl(y+E+O,o[1][0])),l&&T<0?t=vl(b+T+k,o[0][1]):!l&&T>0&&(t=yl(b+D+k,o[1][1])),A=Math.max(A,e),j=Math.max(j,t)}if(s){let e=0,t=0;c&&w>0?e=yl(y+w,s[0][0]):!c&&w<0&&(e=vl(y+E,s[1][0])),l&&T>0?t=yl(b+T,s[0][1]):!l&&T<0&&(t=vl(b+D,s[1][1])),A=Math.max(A,e),j=Math.max(j,t)}if(i){if(u){let e=bl(E/C,_,v)*C;if(A=Math.max(A,e),o){let e=0;e=!c&&!l||c&&!l&&f?yl(b+k+E/C,o[1][1])*C:vl(b+k+(c?w:-w)/C,o[0][1])*C,A=Math.max(A,e)}if(s){let e=0;e=!c&&!l||c&&!l&&f?vl(b+E/C,s[1][1])*C:yl(b+(c?w:-w)/C,s[0][1])*C,A=Math.max(A,e)}}if(d){let e=bl(D*C,h,g)/C;if(j=Math.max(j,e),o){let e=0;e=!c&&!l||l&&!c&&f?yl(y+D*C+O,o[1][0])/C:vl(y+(l?T:-T)*C+O,o[0][0])/C,j=Math.max(j,e)}if(s){let e=0;e=!c&&!l||l&&!c&&f?vl(y+D*C,s[1][0])/C:yl(y+(l?T:-T)*C,s[0][0])/C,j=Math.max(j,e)}}}T+=T<0?j:-j,w+=w<0?A:-A,i&&(f?E>D*C?T=(xl(c,l)?-w:w)/C:w=(xl(c,l)?-T:T)*C:u?(T=w/C,l=c):(w=T*C,c=l));let M=c?y+w:y,N=l?b+T:b;return{width:x+(c?-w:w),height:S+(l?-T:T),x:a[0]*w*(c?-1:1)+M,y:a[1]*T*(l?-1:1)+N}}var Cl={width:0,height:0,x:0,y:0},wl={...Cl,pointerX:0,pointerY:0,aspectRatio:1};function Tl(e,t,n){let r=t.position.x+e.position.x,i=t.position.y+e.position.y,a=e.measured.width??0,o=e.measured.height??0,s=n[0]*a,c=n[1]*o;return[[r-s,i-c],[r+a-s,i+o-c]]}function El({domNode:e,nodeId:t,getStoreItems:n,onChange:r,onEnd:i}){let a=J(e),o={controlDirection:_l(`bottom-right`),boundaries:{minWidth:0,minHeight:0,maxWidth:Number.MAX_VALUE,maxHeight:Number.MAX_VALUE},resizeDirection:void 0,keepAspectRatio:!1};function s({controlPosition:e,boundaries:s,keepAspectRatio:c,resizeDirection:l,onResizeStart:u,onResize:d,onResizeEnd:f,shouldResize:p}){let m={...Cl},h={...wl};o={boundaries:s,resizeDirection:l,keepAspectRatio:c,controlDirection:_l(e)};let g,_=null,v=[],y,b,x,S=!1,C=wr().on(`start`,e=>{let{nodeLookup:r,transform:i,snapGrid:a,snapToGrid:o,nodeOrigin:s,paneDomNode:c}=n();if(g=r.get(t),!g)return;_=c?.getBoundingClientRect()??null;let{xSnapped:l,ySnapped:d}=Hs(e.sourceEvent,{transform:i,snapGrid:a,snapToGrid:o,containerBounds:_});m={width:g.measured.width??0,height:g.measured.height??0,x:g.position.x??0,y:g.position.y??0},h={...m,pointerX:l,pointerY:d,aspectRatio:m.width/m.height},y=void 0,b=Fs(g.extent)?g.extent:void 0,g.parentId&&(g.extent===`parent`||g.expandParent)&&(y=r.get(g.parentId)),y&&g.extent===`parent`&&(b=[[0,0],[y.measured.width,y.measured.height]]),v=[],x=void 0;for(let[e,n]of r)if(n.parentId===t&&(v.push({id:e,position:{...n.position},extent:n.extent}),n.extent===`parent`||n.expandParent)){let e=Tl(n,g,n.origin??s);x=x?[[Math.min(e[0][0],x[0][0]),Math.min(e[0][1],x[0][1])],[Math.max(e[1][0],x[1][0]),Math.max(e[1][1],x[1][1])]]:e}u?.(e,{...m})}).on(`drag`,e=>{let{transform:t,snapGrid:i,snapToGrid:a,nodeOrigin:s}=n(),c=Hs(e.sourceEvent,{transform:t,snapGrid:i,snapToGrid:a,containerBounds:_}),l=[];if(!g)return;let{x:u,y:f,width:C,height:w}=m,T={},E=g.origin??s,{width:D,height:O,x:k,y:A}=Sl(h,o.controlDirection,c,o.boundaries,o.keepAspectRatio,E,b,x),j=D!==C,M=O!==w,N=k!==u&&j,P=A!==f&&M;if(!N&&!P&&!j&&!M)return;if((N||P||E[0]===1||E[1]===1)&&(T.x=N?k:m.x,T.y=P?A:m.y,m.x=T.x,m.y=T.y,v.length>0)){let e=k-u,t=A-f;for(let n of v)n.position={x:n.position.x-e+E[0]*(D-C),y:n.position.y-t+E[1]*(O-w)},l.push(n)}if((j||M)&&(T.width=j&&(!o.resizeDirection||o.resizeDirection===`horizontal`)?D:m.width,T.height=M&&(!o.resizeDirection||o.resizeDirection===`vertical`)?O:m.height,m.width=T.width,m.height=T.height),y&&g.expandParent){let e=E[0]*(T.width??0);T.x&&T.x<e&&(m.x=e,h.x-=T.x-e);let t=E[1]*(T.height??0);T.y&&T.y<t&&(m.y=t,h.y-=T.y-t)}let F=gl({width:m.width,prevWidth:C,height:m.height,prevHeight:w,affectsX:o.controlDirection.affectsX,affectsY:o.controlDirection.affectsY}),I={...m,direction:F};p?.(e,I)!==!1&&(S=!0,d?.(e,I),r(T,l))}).on(`end`,e=>{S&&=(f?.(e,{...m}),i?.({...m}),!1)});a.call(C)}function c(){a.on(`.drag`,null)}return{update:s,destroy:c}}var Dl=n((e=>{var n=(I(),t(L)),r=pe();function i(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var a=typeof Object.is==`function`?Object.is:i,o=r.useSyncExternalStore,s=n.useRef,c=n.useEffect,l=n.useMemo,u=n.useDebugValue;e.useSyncExternalStoreWithSelector=function(e,t,n,r,i){var d=s(null);if(d.current===null){var f={hasValue:!1,value:null};d.current=f}else f=d.current;d=l(function(){function e(e){if(!o){if(o=!0,s=e,e=r(e),i!==void 0&&f.hasValue){var t=f.value;if(i(t,e))return c=t}return c=e}if(t=c,a(s,e))return t;var n=r(e);return i!==void 0&&i(t,n)?(s=e,t):(s=e,c=n)}var o=!1,s,c,l=n===void 0?null:n;return[function(){return e(t())},l===null?void 0:function(){return e(l())}]},[t,n,r,i]);var p=o(e,d[0],d[1]);return c(function(){f.hasValue=!0,f.value=p},[p]),u(p),p}})),Ol=e(n(((e,t)=>{t.exports=Dl()}))(),1),kl=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e)),destroy:()=>{n.clear()}},o=t=e(r,i,a);return a},Al=e=>e?kl(e):kl;I();var{useDebugValue:jl}=V,{useSyncExternalStoreWithSelector:Ml}=Ol.default,Nl=e=>e;function Pl(e,t=Nl,n){let r=Ml(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return jl(r),r}var Fl=(e,t)=>{let n=Al(e),r=(e,r=t)=>Pl(n,e,r);return Object.assign(r,n),r},Il=(e,t)=>e?Fl(e,t):Fl;function Z(e,t){if(Object.is(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,r]of e)if(!Object.is(r,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r of n)if(!Object.prototype.hasOwnProperty.call(t,r)||!Object.is(e[r],t[r]))return!1;return!0}I(),W();var Ll=D(null),Rl=Ll.Provider,zl=Ho.error001(`react`);function Q(e,t){let n=j(Ll);if(n===null)throw Error(zl);return Pl(n,e,t)}function $(){let e=j(Ll);if(e===null)throw Error(zl);return P(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}var Bl={display:`none`},Vl={position:`absolute`,width:1,height:1,margin:-1,border:0,padding:0,overflow:`hidden`,clip:`rect(0px, 0px, 0px, 0px)`,clipPath:`inset(100%)`},Hl=`react-flow__node-desc`,Ul=`react-flow__edge-desc`,Wl=`react-flow__aria-live`,Gl=e=>e.ariaLiveMessage,Kl=e=>e.ariaLabelConfig;function ql({rfId:e}){let t=Q(Gl);return R(`div`,{id:`${Wl}-${e}`,"aria-live":`assertive`,"aria-atomic":`true`,style:Vl,children:t})}function Jl({rfId:e,disableKeyboardA11y:t}){let n=Q(Kl);return H(U,{children:[R(`div`,{id:`${Hl}-${e}`,style:Bl,children:t?n[`node.a11yDescription.default`]:n[`node.a11yDescription.keyboardDisabled`]}),R(`div`,{id:`${Ul}-${e}`,style:Bl,children:n[`edge.a11yDescription.default`]}),!t&&R(ql,{rfId:e})]})}var Yl=M(({position:e=`top-left`,children:t,className:n,style:r,...i},a)=>R(`div`,{className:K([`react-flow__panel`,n,...`${e}`.split(`-`)]),style:r,ref:a,...i,children:t}));Yl.displayName=`Panel`;function Xl({proOptions:e,position:t=`bottom-right`}){return e?.hideAttribution?null:R(Yl,{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:R(`a`,{href:`https://reactflow.dev`,target:`_blank`,rel:`noopener noreferrer`,"aria-label":`React Flow attribution`,children:`React Flow`})})}var Zl=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}},Ql=e=>e.id;function $l(e,t){return Z(e.selectedNodes.map(Ql),t.selectedNodes.map(Ql))&&Z(e.selectedEdges.map(Ql),t.selectedEdges.map(Ql))}function eu({onSelectionChange:e}){let t=$(),{selectedNodes:n,selectedEdges:r}=Q(Zl,$l);return N(()=>{let i={nodes:n,edges:r};e?.(i),t.getState().onSelectionChangeHandlers.forEach(e=>e(i))},[n,r,e]),null}var tu=e=>!!e.onSelectionChangeHandlers;function nu({onSelectionChange:e}){let t=Q(tu);return e||t?R(eu,{onSelectionChange:e}):null}var ru=[0,0],iu={x:0,y:0,zoom:1},au=[...`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`.split(`.`),`rfId`],ou=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}),su={translateExtent:Uo,nodeOrigin:ru,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:`nopan`,rfId:`1`};function cu(e){let{setNodes:t,setEdges:n,setMinZoom:r,setMaxZoom:i,setTranslateExtent:a,setNodeExtent:o,reset:s,setDefaultNodesAndEdges:c}=Q(ou,Z),l=$();N(()=>(c(e.defaultNodes,e.defaultEdges),()=>{u.current=su,s()}),[]);let u=F(su);return N(()=>{for(let s of au){let c=e[s];c!==u.current[s]&&e[s]!==void 0&&(s===`nodes`?t(c):s===`edges`?n(c):s===`minZoom`?r(c):s===`maxZoom`?i(c):s===`translateExtent`?a(c):s===`nodeExtent`?o(c):s===`ariaLabelConfig`?l.setState({ariaLabelConfig:Vs(c)}):s===`fitView`?l.setState({fitViewQueued:c}):s===`fitViewOptions`?l.setState({fitViewOptions:c}):l.setState({[s]:c}))}u.current=e},au.map(t=>e[t])),null}function lu(){return typeof window>`u`||!window.matchMedia?null:window.matchMedia(`(prefers-color-scheme: dark)`)}function uu(e){let[t,n]=k(e===`system`?null:e);return N(()=>{if(e!==`system`){n(e);return}let t=lu(),r=()=>n(t?.matches?`dark`:`light`);return r(),t?.addEventListener(`change`,r),()=>{t?.removeEventListener(`change`,r)}},[e]),t===null?lu()?.matches?`dark`:`light`:t}var du=typeof document<`u`?document:null;function fu(e=null,t={target:du,actInsideInputWithModifier:!0}){let[n,r]=k(!1),i=F(!1),a=F(new Set([])),[o,s]=P(()=>{if(e!==null){let t=(Array.isArray(e)?e:[e]).filter(e=>typeof e==`string`).map(e=>e.replace(`+`,`
2
+ `).replace(`
3
+
4
+ `,`
5
+ +`).split(`
6
+ `));return[t,t.reduce((e,t)=>e.concat(...t),[])]}return[[],[]]},[e]);return N(()=>{let n=t?.target??du,c=t?.actInsideInputWithModifier??!0;if(e!==null){let e=e=>{if(i.current=e.ctrlKey||e.metaKey||e.shiftKey||e.altKey,(!i.current||i.current&&!c)&&Ks(e))return!1;let n=mu(e.code,s);if(a.current.add(e[n]),pu(o,a.current,!1)){let n=e.composedPath?.()?.[0]||e.target,a=n?.nodeName===`BUTTON`||n?.nodeName===`A`;t.preventDefault!==!1&&(i.current||!a)&&e.preventDefault(),r(!0)}},l=e=>{let t=mu(e.code,s);pu(o,a.current,!0)?(r(!1),a.current.clear()):a.current.delete(e[t]),e.key===`Meta`&&a.current.clear(),i.current=!1},u=()=>{a.current.clear(),r(!1)};return n?.addEventListener(`keydown`,e),n?.addEventListener(`keyup`,l),window.addEventListener(`blur`,u),window.addEventListener(`contextmenu`,u),()=>{n?.removeEventListener(`keydown`,e),n?.removeEventListener(`keyup`,l),window.removeEventListener(`blur`,u),window.removeEventListener(`contextmenu`,u)}}},[e,r]),n}function pu(e,t,n){return e.filter(e=>n||e.length===t.size).some(e=>e.every(e=>t.has(e)))}function mu(e,t){return t.includes(e)?`code`:`key`}var hu=()=>{let e=$();return P(()=>({zoomIn:async t=>{let{panZoom:n}=e.getState();return n?n.scaleBy(1.2,t):!1},zoomOut:async t=>{let{panZoom:n}=e.getState();return n?n.scaleBy(1/1.2,t):!1},zoomTo:async(t,n)=>{let{panZoom:r}=e.getState();return r?r.scaleTo(t,n):!1},getZoom:()=>e.getState().transform[2],setViewport:async(t,n)=>{let{transform:[r,i,a],panZoom:o}=e.getState();return o?(await o.setViewport({x:t.x??r,y:t.y??i,zoom:t.zoom??a},n),!0):!1},getViewport:()=>{let[t,n,r]=e.getState().transform;return{x:t,y:n,zoom:r}},setCenter:async(t,n,r)=>e.getState().setCenter(t,n,r),fitBounds:async(t,n)=>{let{width:r,height:i,minZoom:a,maxZoom:o,panZoom:s}=e.getState(),c=Ns(t,r,i,a,o,n?.padding??.1);return s?(await s.setViewport(c,{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),!0):!1},screenToFlowPosition:(t,n={})=>{let{transform:r,snapGrid:i,snapToGrid:a,domNode:o}=e.getState();if(!o)return t;let{x:s,y:c}=o.getBoundingClientRect(),l={x:t.x-s,y:t.y-c},u=n.snapGrid??i;return Os(l,r,n.snapToGrid??a,u)},flowToScreenPosition:t=>{let{transform:n,domNode:r}=e.getState();if(!r)return t;let{x:i,y:a}=r.getBoundingClientRect(),o=ks(t,n);return{x:o.x+i,y:o.y+a}}}),[])};function gu(e,t){let n=[],r=new Map,i=[];for(let t of e)if(t.type===`add`){i.push(t);continue}else if(t.type===`remove`||t.type===`replace`)r.set(t.id,[t]);else{let e=r.get(t.id);e?e.push(t):r.set(t.id,[t])}for(let e of t){let t=r.get(e.id);if(!t){n.push(e);continue}if(t[0].type===`remove`)continue;if(t[0].type===`replace`){n.push({...t[0].item});continue}let i={...e};for(let e of t)_u(e,i);n.push(i)}return i.length&&i.forEach(e=>{e.index===void 0?n.push({...e.item}):n.splice(e.index,0,{...e.item})}),n}function _u(e,t){switch(e.type){case`select`:t.selected=e.selected;break;case`position`:e.position!==void 0&&(t.position=e.position),e.dragging!==void 0&&(t.dragging=e.dragging);break;case`dimensions`:e.dimensions!==void 0&&(t.measured={...e.dimensions},e.setAttributes&&((e.setAttributes===!0||e.setAttributes===`width`)&&(t.width=e.dimensions.width),(e.setAttributes===!0||e.setAttributes===`height`)&&(t.height=e.dimensions.height))),typeof e.resizing==`boolean`&&(t.resizing=e.resizing);break}}function vu(e,t){return gu(e,t)}function yu(e,t){return gu(e,t)}function bu(e,t){return{id:e,type:`select`,selected:t}}function xu(e,t=new Set,n=!1){let r=[];for(let[i,a]of e){let e=t.has(i);!(a.selected===void 0&&!e)&&a.selected!==e&&(n&&(a.selected=e),r.push(bu(a.id,e)))}return r}function Su({items:e=[],lookup:t}){let n=[],r=new Map(e.map(e=>[e.id,e]));for(let[r,i]of e.entries()){let e=t.get(i.id),a=e?.internals?.userNode??e;a!==void 0&&a!==i&&n.push({id:i.id,item:i,type:`replace`}),a===void 0&&n.push({item:i,type:`add`,index:r})}for(let[e]of t)r.get(e)===void 0&&n.push({id:e,type:`remove`});return n}function Cu(e){return{id:e.id,type:`remove`}}var wu=Es(`React Flow`,`https://reactflow.dev/`);function Tu(e,t,n={}){return ac(e,t,{...n,onError:n.onError??wu})}var Eu=e=>ts(e),Du=e=>es(e);function Ou(e){return M(e)}var ku=typeof window<`u`?A:N;function Au(e){let[t,n]=k(BigInt(0)),[r]=k(()=>ju(()=>n(e=>e+BigInt(1))));return ku(()=>{let t=r.get();t.length&&(e(t),r.reset())},[t]),r}function ju(e){let t=[];return{get:()=>t,reset:()=>{t=[]},push:n=>{t.push(n),e()}}}var Mu=D(null);function Nu({children:e}){let t=$(),n=Au(O(e=>{let{nodes:n=[],setNodes:r,hasDefaultNodes:i,onNodesChange:a,nodeLookup:o,fitViewQueued:s,onNodesChangeMiddlewareMap:c}=t.getState(),l=n;for(let t of e)l=typeof t==`function`?t(l):t;let u=Su({items:l,lookup:o});for(let e of c.values())u=e(u);i&&r(l),u.length>0?a?.(u):s&&window.requestAnimationFrame(()=>{let{fitViewQueued:e,nodes:n,setNodes:r}=t.getState();e&&r(n)})},[])),r=Au(O(e=>{let{edges:n=[],setEdges:r,hasDefaultEdges:i,onEdgesChange:a,edgeLookup:o}=t.getState(),s=n;for(let t of e)s=typeof t==`function`?t(s):t;i?r(s):a&&a(Su({items:s,lookup:o}))},[])),i=P(()=>({nodeQueue:n,edgeQueue:r}),[]);return R(Mu.Provider,{value:i,children:e})}function Pu(){let e=j(Mu);if(!e)throw Error(`useBatchContext must be used within a BatchProvider`);return e}var Fu=e=>!!e.panZoom;function Iu(){let e=hu(),t=$(),n=Pu(),r=Q(Fu),i=P(()=>{let e=e=>t.getState().nodeLookup.get(e),r=e=>{n.nodeQueue.push(e)},i=e=>{n.edgeQueue.push(e)},a=e=>{let{nodeLookup:n,nodeOrigin:r}=t.getState(),i=Eu(e)?e:n.get(e.id),a=i.parentId?Rs(i.position,i.measured,i.parentId,n,r):i.position;return bs({...i,position:a,width:i.measured?.width??i.width,height:i.measured?.height??i.height})},o=(e,t,n={replace:!1})=>{r(r=>r.map(r=>{if(r.id===e){let e=typeof t==`function`?t(r):t;return n.replace&&Eu(e)?e:{...r,...e}}return r}))},s=(e,t,n={replace:!1})=>{i(r=>r.map(r=>{if(r.id===e){let e=typeof t==`function`?t(r):t;return n.replace&&Du(e)?e:{...r,...e}}return r}))};return{getNodes:()=>t.getState().nodes.map(e=>({...e})),getNode:t=>e(t)?.internals.userNode,getInternalNode:e,getEdges:()=>{let{edges:e=[]}=t.getState();return e.map(e=>({...e}))},getEdge:e=>t.getState().edgeLookup.get(e),setNodes:r,setEdges:i,addNodes:e=>{let t=Array.isArray(e)?e:[e];n.nodeQueue.push(e=>[...e,...t])},addEdges:e=>{let t=Array.isArray(e)?e:[e];n.edgeQueue.push(e=>[...e,...t])},toObject:()=>{let{nodes:e=[],edges:n=[],transform:r}=t.getState(),[i,a,o]=r;return{nodes:e.map(e=>({...e})),edges:n.map(e=>({...e})),viewport:{x:i,y:a,zoom:o}}},deleteElements:async({nodes:e=[],edges:n=[]})=>{let{nodes:r,edges:i,onNodesDelete:a,onEdgesDelete:o,triggerNodeChanges:s,triggerEdgeChanges:c,onDelete:l,onBeforeDelete:u}=t.getState(),{nodes:d,edges:f}=await ds({nodesToRemove:e,edgesToRemove:n,nodes:r,edges:i,onBeforeDelete:u}),p=f.length>0,m=d.length>0;if(p){let e=f.map(Cu);o?.(f),c(e)}if(m){let e=d.map(Cu);a?.(d),s(e)}return(m||p)&&l?.({nodes:d,edges:f}),{deletedNodes:d,deletedEdges:f}},getIntersectingNodes:(e,n=!0,r)=>{let i=ws(e),o=i?e:a(e),s=r!==void 0;return o?(r||t.getState().nodes).filter(r=>{let a=t.getState().nodeLookup.get(r.id);if(a&&!i&&(r.id===e.id||!a.internals.positionAbsolute))return!1;let c=bs(s?r:a),l=Cs(c,o);return n&&l>0||l>=c.width*c.height||l>=o.width*o.height}):[]},isNodeIntersecting:(e,t,n=!0)=>{let r=ws(e)?e:a(e);if(!r)return!1;let i=Cs(r,t);return n&&i>0||i>=t.width*t.height||i>=r.width*r.height},updateNode:o,updateNodeData:(e,t,n={replace:!1})=>{o(e,e=>{let r=typeof t==`function`?t(e):t;return n.replace?{...e,data:r}:{...e,data:{...e.data,...r}}},n)},updateEdge:s,updateEdgeData:(e,t,n={replace:!1})=>{s(e,e=>{let r=typeof t==`function`?t(e):t;return n.replace?{...e,data:r}:{...e,data:{...e.data,...r}}},n)},getNodesBounds:e=>{let{nodeLookup:n,nodeOrigin:r}=t.getState();return is(e,{nodeLookup:n,nodeOrigin:r})},getHandleConnections:({type:e,id:n,nodeId:r})=>Array.from(t.getState().connectionLookup.get(`${r}-${e}${n?`-${n}`:``}`)?.values()??[]),getNodeConnections:({type:e,handleId:n,nodeId:r})=>Array.from(t.getState().connectionLookup.get(`${r}${e?n?`-${e}-${n}`:`-${e}`:``}`)?.values()??[]),fitView:async e=>{let r=t.getState().fitViewResolver??Bs();return t.setState({fitViewQueued:!0,fitViewOptions:e,fitViewResolver:r}),n.nodeQueue.push(e=>[...e]),r.promise}}},[]);return P(()=>({...i,...e,viewportInitialized:r}),[r])}var Lu=e=>e.selected,Ru=typeof window<`u`?window:void 0;function zu({deleteKeyCode:e,multiSelectionKeyCode:t}){let n=$(),{deleteElements:r}=Iu(),i=fu(e,{actInsideInputWithModifier:!1}),a=fu(t,{target:Ru});N(()=>{if(i){let{edges:e,nodes:t}=n.getState();r({nodes:t.filter(Lu),edges:e.filter(Lu)}),n.setState({nodesSelectionActive:!1})}},[i]),N(()=>{n.setState({multiSelectionActive:a})},[a])}function Bu(e){let t=$();N(()=>{let n=()=>{if(!e.current||!(e.current.checkVisibility?.()??!0))return!1;let n=Us(e.current);(n.height===0||n.width===0)&&t.getState().onError?.(`004`,Ho.error004()),t.setState({width:n.width||500,height:n.height||500})};if(e.current){n(),window.addEventListener(`resize`,n);let t=new ResizeObserver(()=>n());return t.observe(e.current),()=>{window.removeEventListener(`resize`,n),t&&e.current&&t.unobserve(e.current)}}},[])}var Vu={position:`absolute`,width:`100%`,height:`100%`,top:0,left:0},Hu=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function Uu({onPaneContextMenu:e,zoomOnScroll:t=!0,zoomOnPinch:n=!0,panOnScroll:r=!1,panOnScrollSpeed:i=.5,panOnScrollMode:a=qo.Free,zoomOnDoubleClick:o=!0,panOnDrag:s=!0,defaultViewport:c,translateExtent:l,minZoom:u,maxZoom:d,zoomActivationKeyCode:f,preventScrolling:p=!0,children:m,noWheelClassName:h,noPanClassName:g,onViewportChange:_,isControlledViewport:v,paneClickDistance:y,selectionOnDrag:b}){let x=$(),S=F(null),{userSelectionActive:C,lib:w,connectionInProgress:T}=Q(Hu,Z),E=fu(f),D=F();Bu(S);let k=O(e=>{_?.({x:e[0],y:e[1],zoom:e[2]}),v||x.setState({transform:e})},[_,v]);return N(()=>{if(S.current){D.current=ml({domNode:S.current,minZoom:u,maxZoom:d,translateExtent:l,viewport:c,onDraggingChange:e=>x.setState(t=>t.paneDragging===e?t:{paneDragging:e}),onPanZoomStart:(e,t)=>{let{onViewportChangeStart:n,onMoveStart:r}=x.getState();r?.(e,t),n?.(t)},onPanZoom:(e,t)=>{let{onViewportChange:n,onMove:r}=x.getState();r?.(e,t),n?.(t)},onPanZoomEnd:(e,t)=>{let{onViewportChangeEnd:n,onMoveEnd:r}=x.getState();r?.(e,t),n?.(t)}});let{x:e,y:t,zoom:n}=D.current.getViewport();return x.setState({panZoom:D.current,transform:[e,t,n],domNode:S.current.closest(`.react-flow`)}),()=>{D.current?.destroy()}}},[]),N(()=>{D.current?.update({onPaneContextMenu:e,zoomOnScroll:t,zoomOnPinch:n,panOnScroll:r,panOnScrollSpeed:i,panOnScrollMode:a,zoomOnDoubleClick:o,panOnDrag:s,zoomActivationKeyPressed:E,preventScrolling:p,noPanClassName:g,userSelectionActive:C,noWheelClassName:h,lib:w,onTransformChange:k,connectionInProgress:T,selectionOnDrag:b,paneClickDistance:y})},[e,t,n,r,i,a,o,s,E,p,g,C,h,w,k,T,b,y]),R(`div`,{className:`react-flow__renderer`,ref:S,style:Vu,children:m})}var Wu=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function Gu(){let{userSelectionActive:e,userSelectionRect:t}=Q(Wu,Z);return e&&t?R(`div`,{className:`react-flow__selection react-flow__container`,style:{width:t.width,height:t.height,transform:`translate(${t.x}px, ${t.y}px)`}}):null}var Ku=(e,t)=>n=>{n.target===t.current&&e?.(n)},qu=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,connectionInProgress:e.connection.inProgress,dragging:e.paneDragging,panBy:e.panBy,autoPanSpeed:e.autoPanSpeed});function Ju({isSelecting:e,selectionKeyPressed:t,selectionMode:n=Jo.Full,panOnDrag:r,autoPanOnSelection:i,paneClickDistance:a,selectionOnDrag:o,onSelectionStart:s,onSelectionEnd:c,onPaneClick:l,onPaneContextMenu:u,onPaneScroll:d,onPaneMouseEnter:f,onPaneMouseMove:p,onPaneMouseLeave:m,children:h}){let g=F(0),_=$(),{userSelectionActive:v,elementsSelectable:y,dragging:b,connectionInProgress:x,panBy:S,autoPanSpeed:C}=Q(qu,Z),w=y&&(e||v),T=F(null),E=F(),D=F(new Set),O=F(new Set),k=F(!1),A=F({x:0,y:0}),j=F(!1),M=e=>{if(k.current||x){k.current=!1;return}l?.(e),_.getState().resetSelectedElements(),_.setState({nodesSelectionActive:!1})},P=e=>{if(Array.isArray(r)&&r?.includes(2)){e.preventDefault();return}u?.(e)},I=d?e=>d(e):void 0,L=e=>{k.current&&=(e.stopPropagation(),!1)},z=n=>{let{domNode:r,transform:i}=_.getState();if(E.current=r?.getBoundingClientRect(),!E.current)return;let a=n.target===T.current;if(!a&&n.target.closest(`.nokey`)||!e||!(o&&a||t)||n.button!==0||!n.isPrimary)return;n.target?.setPointerCapture?.(n.pointerId),k.current=!1;let{x:s,y:c}=Js(n.nativeEvent,E.current),l=Os({x:s,y:c},i);_.setState({userSelectionRect:{width:0,height:0,startX:l.x,startY:l.y,x:s,y:c}}),a||(n.stopPropagation(),n.preventDefault())};function B(e,t){let{userSelectionRect:r}=_.getState();if(!r)return;let{transform:i,nodeLookup:a,edgeLookup:o,connectionLookup:s,triggerNodeChanges:c,triggerEdgeChanges:l,defaultEdgeOptions:u}=_.getState(),d={x:r.startX,y:r.startY},{x:f,y:p}=ks(d,i),m={startX:d.x,startY:d.y,x:e<f?e:f,y:t<p?t:p,width:Math.abs(e-f),height:Math.abs(t-p)},h=D.current,g=O.current;D.current=new Set(os(a,m,i,n===Jo.Partial,!0).map(e=>e.id)),O.current=new Set;let v=u?.selectable??!0;for(let e of D.current){let t=s.get(e);if(t)for(let{edgeId:e}of t.values()){let t=o.get(e);t&&(t.selectable??v)&&O.current.add(e)}}zs(h,D.current)||c(xu(a,D.current,!0)),zs(g,O.current)||l(xu(o,O.current)),_.setState({userSelectionRect:m,userSelectionActive:!0,nodesSelectionActive:!1})}function V(){if(!i||!E.current)return;let[e,t]=gs(A.current,E.current,C);S({x:e,y:t}).then(e=>{if(!k.current||!e){g.current=requestAnimationFrame(V);return}let{x:t,y:n}=A.current;B(t,n),g.current=requestAnimationFrame(V)})}let U=()=>{cancelAnimationFrame(g.current),g.current=0,j.current=!1};return N(()=>()=>U(),[]),H(`div`,{className:K([`react-flow__pane`,{draggable:r===!0||Array.isArray(r)&&r.includes(0),dragging:b,selection:e}]),onClick:w?void 0:Ku(M,T),onContextMenu:Ku(P,T),onWheel:Ku(I,T),onPointerEnter:w?void 0:f,onPointerMove:w?e=>{let{userSelectionRect:n,transform:r,resetSelectedElements:i}=_.getState();if(!E.current||!n)return;let{x:o,y:c}=Js(e.nativeEvent,E.current);A.current={x:o,y:c};let l=ks({x:n.startX,y:n.startY},r);if(!k.current){let n=t?0:a;if(Math.hypot(o-l.x,c-l.y)<=n)return;i(),s?.(e)}k.current=!0,j.current||=(V(),!0),B(o,c)}:p,onPointerUp:w?e=>{e.button===0&&(e.target?.releasePointerCapture?.(e.pointerId),!v&&e.target===T.current&&_.getState().userSelectionRect&&M?.(e),_.setState({userSelectionActive:!1,userSelectionRect:null}),k.current&&(c?.(e),_.setState({nodesSelectionActive:D.current.size>0})),U())}:void 0,onPointerCancel:w?e=>{e.target?.releasePointerCapture?.(e.pointerId),U()}:void 0,onPointerDownCapture:w?z:void 0,onClickCapture:w?L:void 0,onPointerLeave:m,ref:T,style:Vu,children:[h,R(Gu,{})]})}function Yu({id:e,store:t,unselect:n=!1,nodeRef:r}){let{addSelectedNodes:i,unselectNodesAndEdges:a,multiSelectionActive:o,nodeLookup:s,onError:c}=t.getState(),l=s.get(e);if(!l){c?.(`012`,Ho.error012(e));return}t.setState({nodesSelectionActive:!1}),l.selected?(n||l.selected&&o)&&(a({nodes:[l],edges:[]}),requestAnimationFrame(()=>r?.current?.blur())):i([e])}function Xu({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:r,nodeId:i,isSelectable:a,nodeClickDistance:o}){let s=$(),[c,l]=k(!1),u=F();return N(()=>{u.current=Uc({getStoreItems:()=>s.getState(),onNodeMouseDown:t=>{Yu({id:t,store:s,nodeRef:e})},onDragStart:()=>{l(!0)},onDragStop:()=>{l(!1)}})},[]),N(()=>{if(!(t||!e.current||!u.current))return u.current.update({noDragClassName:n,handleSelector:r,domNode:e.current,isSelectable:a,nodeId:i,nodeClickDistance:o}),()=>{u.current?.destroy()}},[n,r,t,a,e,i,o]),c}var Zu=e=>t=>t.selected&&(t.draggable||e&&t.draggable===void 0);function Qu(){let e=$();return O(t=>{let{nodeExtent:n,snapToGrid:r,snapGrid:i,nodesDraggable:a,onError:o,updateNodePositions:s,nodeLookup:c,nodeOrigin:l}=e.getState(),u=new Map,d=Zu(a),f=r?i[0]:5,p=r?i[1]:5,m=t.direction.x*f*t.factor,h=t.direction.y*p*t.factor;for(let[,e]of c){if(!d(e))continue;let t={x:e.internals.positionAbsolute.x+m,y:e.internals.positionAbsolute.y+h};r&&(t=Ds(t,i));let{position:a,positionAbsolute:s}=us({nodeId:e.id,nextPosition:t,nodeLookup:c,nodeExtent:n,nodeOrigin:l,onError:o});e.position=a,e.internals.positionAbsolute=s,u.set(e.id,e)}s(u)},[])}var $u=D(null),ed=$u.Provider;$u.Consumer;var td=()=>j($u),nd=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),rd=(e,t,n)=>r=>{let{connectionClickStartHandle:i,connectionMode:a,connection:o}=r,{fromHandle:s,toHandle:c,isValid:l}=o,u=c?.nodeId===e&&c?.id===t&&c?.type===n;return{connectingFrom:s?.nodeId===e&&s?.id===t&&s?.type===n,connectingTo:u,clickConnecting:i?.nodeId===e&&i?.id===t&&i?.type===n,isPossibleEndHandle:a===Ko.Strict?s?.type!==n:e!==s?.nodeId||t!==s?.id,connectionInProcess:!!s,clickConnectionInProcess:!!i,valid:u&&l}};function id({type:e=`source`,position:t=X.Top,isValidConnection:n,isConnectable:r=!0,isConnectableStart:i=!0,isConnectableEnd:a=!0,id:o,onConnect:s,children:c,className:l,onMouseDown:u,onTouchStart:d,...f},p){let m=o||null,h=e===`target`,g=$(),_=td(),{connectOnClick:v,noPanClassName:y,rfId:b}=Q(nd,Z),{connectingFrom:x,connectingTo:S,clickConnecting:C,isPossibleEndHandle:w,connectionInProcess:T,clickConnectionInProcess:E,valid:D}=Q(rd(_,m,e),Z);_||g.getState().onError?.(`010`,Ho.error010());let O=e=>{let{defaultEdgeOptions:t,onConnect:n,hasDefaultEdges:r}=g.getState(),i={...t,...e};if(r){let{edges:e,setEdges:t,onError:n}=g.getState();t(Tu(i,e,{onError:n}))}n?.(i),s?.(i)},k=e=>{if(!_)return;let t=qs(e.nativeEvent);if(i&&(t&&e.button===0||!t)){let t=g.getState();$c.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:h,handleId:m,nodeId:_,flowId:t.rfId,panBy:t.panBy,cancelConnection:t.cancelConnection,onConnectStart:t.onConnectStart,onConnectEnd:(...e)=>g.getState().onConnectEnd?.(...e),updateConnection:t.updateConnection,onConnect:O,isValidConnection:n||((...e)=>g.getState().isValidConnection?.(...e)??!0),getTransform:()=>g.getState().transform,getFromHandle:()=>g.getState().connection.fromHandle,autoPanSpeed:t.autoPanSpeed,dragThreshold:t.connectionDragThreshold})}t?u?.(e):d?.(e)};return R(`div`,{"data-handleid":m,"data-nodeid":_,"data-handlepos":t,"data-id":`${b}-${_}-${m}-${e}`,className:K([`react-flow__handle`,`react-flow__handle-${t}`,`nodrag`,y,l,{source:!h,target:h,connectable:r,connectablestart:i,connectableend:a,clickconnecting:C,connectingfrom:x,connectingto:S,valid:D,connectionindicator:r&&(!T||w)&&(T||E?a:i)}]),onMouseDown:k,onTouchStart:k,onClick:v?t=>{let{onClickConnectStart:r,onClickConnectEnd:a,connectionClickStartHandle:o,connectionMode:s,isValidConnection:c,lib:l,rfId:u,nodeLookup:d,connection:f}=g.getState();if(!_||!o&&!i)return;if(!o){r?.(t.nativeEvent,{nodeId:_,handleId:m,handleType:e}),g.setState({connectionClickStartHandle:{nodeId:_,type:e,id:m}});return}let p=Ws(t.target),h=n||c,{connection:v,isValid:y}=$c.isValid(t.nativeEvent,{handle:{nodeId:_,id:m,type:e},connectionMode:s,fromNodeId:o.nodeId,fromHandleId:o.id||null,fromType:o.type,isValidConnection:h,flowId:u,doc:p,lib:l,nodeLookup:d});y&&v&&O(v);let b=structuredClone(f);delete b.inProgress,b.toPosition=b.toHandle?b.toHandle.position:null,a?.(t,b),g.setState({connectionClickStartHandle:null})}:void 0,ref:p,...f,children:c})}var ad=z(Ou(id));function od({data:e,isConnectable:t,sourcePosition:n=X.Bottom}){return H(U,{children:[e?.label,R(ad,{type:`source`,position:n,isConnectable:t})]})}function sd({data:e,isConnectable:t,targetPosition:n=X.Top,sourcePosition:r=X.Bottom}){return H(U,{children:[R(ad,{type:`target`,position:n,isConnectable:t}),e?.label,R(ad,{type:`source`,position:r,isConnectable:t})]})}function cd(){return null}function ld({data:e,isConnectable:t,targetPosition:n=X.Top}){return H(U,{children:[R(ad,{type:`target`,position:n,isConnectable:t}),e?.label]})}var ud={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},dd={input:od,default:sd,output:ld,group:cd};function fd(e){return e.internals.handleBounds===void 0?{width:e.width??e.initialWidth??e.style?.width,height:e.height??e.initialHeight??e.style?.height}:{width:e.width??e.style?.width,height:e.height??e.style?.height}}var pd=e=>{let{width:t,height:n,x:r,y:i}=as(e.nodeLookup,{filter:e=>!!e.selected});return{width:Ts(t)?t:null,height:Ts(n)?n:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${r}px,${i}px)`}};function md({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){let r=$(),{width:i,height:a,transformString:o,userSelectionActive:s}=Q(pd,Z),c=Qu(),l=F(null);N(()=>{n||l.current?.focus({preventScroll:!0})},[n]);let u=!s&&i!==null&&a!==null;if(Xu({nodeRef:l,disabled:!u}),!u)return null;let d=e?t=>{e(t,r.getState().nodes.filter(e=>e.selected))}:void 0;return R(`div`,{className:K([`react-flow__nodesselection`,`react-flow__container`,t]),style:{transform:o},children:R(`div`,{ref:l,className:`react-flow__nodesselection-rect`,onContextMenu:d,tabIndex:n?void 0:-1,onKeyDown:n?void 0:e=>{Object.prototype.hasOwnProperty.call(ud,e.key)&&(e.preventDefault(),c({direction:ud[e.key],factor:e.shiftKey?4:1}))},style:{width:i,height:a}})})}var hd=typeof window<`u`?window:void 0,gd=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function _d({children:e,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:a,onPaneScroll:o,paneClickDistance:s,deleteKeyCode:c,selectionKeyCode:l,selectionOnDrag:u,selectionMode:d,onSelectionStart:f,onSelectionEnd:p,multiSelectionKeyCode:m,panActivationKeyCode:h,zoomActivationKeyCode:g,elementsSelectable:_,zoomOnScroll:v,zoomOnPinch:y,panOnScroll:b,panOnScrollSpeed:x,panOnScrollMode:S,zoomOnDoubleClick:C,panOnDrag:w,autoPanOnSelection:T,defaultViewport:E,translateExtent:D,minZoom:O,maxZoom:k,preventScrolling:A,onSelectionContextMenu:j,noWheelClassName:M,noPanClassName:N,disableKeyboardA11y:P,onViewportChange:F,isControlledViewport:I}){let{nodesSelectionActive:L,userSelectionActive:z}=Q(gd,Z),B=fu(l,{target:hd}),V=fu(h,{target:hd}),U=V||w,W=V||b,G=u&&U!==!0,ee=B||z||G;return zu({deleteKeyCode:c,multiSelectionKeyCode:m}),R(Uu,{onPaneContextMenu:a,elementsSelectable:_,zoomOnScroll:v,zoomOnPinch:y,panOnScroll:W,panOnScrollSpeed:x,panOnScrollMode:S,zoomOnDoubleClick:C,panOnDrag:!B&&U,defaultViewport:E,translateExtent:D,minZoom:O,maxZoom:k,zoomActivationKeyCode:g,preventScrolling:A,noWheelClassName:M,noPanClassName:N,onViewportChange:F,isControlledViewport:I,paneClickDistance:s,selectionOnDrag:G,children:H(Ju,{onSelectionStart:f,onSelectionEnd:p,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:a,onPaneScroll:o,panOnDrag:U,autoPanOnSelection:T,isSelecting:!!ee,selectionMode:d,selectionKeyPressed:B,paneClickDistance:s,selectionOnDrag:G,children:[e,L&&R(md,{onSelectionContextMenu:j,noPanClassName:N,disableKeyboardA11y:P})]})})}_d.displayName=`FlowRenderer`;var vd=z(_d),yd=e=>t=>e?os(t.nodeLookup,{x:0,y:0,width:t.width,height:t.height},t.transform,!0).map(e=>e.id):Array.from(t.nodeLookup.keys());function bd(e){return Q(O(yd(e),[e]),Z)}var xd=e=>e.updateNodeInternals;function Sd(){let e=Q(xd),[t]=k(()=>typeof ResizeObserver>`u`?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 N(()=>()=>{t?.disconnect()},[t]),t}function Cd({node:e,nodeType:t,hasDimensions:n,resizeObserver:r}){let i=$(),a=F(null),o=F(null),s=F(e.sourcePosition),c=F(e.targetPosition),l=F(t),u=n&&!!e.internals.handleBounds;return N(()=>{a.current&&!e.hidden&&(!u||o.current!==a.current)&&(o.current&&r?.unobserve(o.current),r?.observe(a.current),o.current=a.current)},[u,e.hidden]),N(()=>()=>{o.current&&=(r?.unobserve(o.current),null)},[]),N(()=>{if(a.current){let n=l.current!==t,r=s.current!==e.sourcePosition,o=c.current!==e.targetPosition;(n||r||o)&&(l.current=t,s.current=e.sourcePosition,c.current=e.targetPosition,i.getState().updateNodeInternals(new Map([[e.id,{id:e.id,nodeElement:a.current,force:!0}]])))}},[e.id,t,e.sourcePosition,e.targetPosition]),a}function wd({id:e,onClick:t,onMouseEnter:n,onMouseMove:r,onMouseLeave:i,onContextMenu:a,onDoubleClick:o,nodesDraggable:s,elementsSelectable:c,nodesConnectable:l,nodesFocusable:u,resizeObserver:d,noDragClassName:f,noPanClassName:p,disableKeyboardA11y:m,rfId:h,nodeTypes:g,nodeClickDistance:_,onError:v}){let{node:y,internals:b,isParent:x}=Q(t=>{let n=t.nodeLookup.get(e),r=t.parentLookup.has(e);return{node:n,internals:n.internals,isParent:r}},Z),S=y.type||`default`,C=g?.[S]||dd[S];C===void 0&&(v?.(`003`,Ho.error003(S)),S=`default`,C=g?.default||dd.default);let w=!!(y.draggable||s&&y.draggable===void 0),T=!!(y.selectable||c&&y.selectable===void 0),E=!!(y.connectable||l&&y.connectable===void 0),D=!!(y.focusable||u&&y.focusable===void 0),O=$(),k=Ls(y),A=Cd({node:y,nodeType:S,hasDimensions:k,resizeObserver:d}),j=Xu({nodeRef:A,disabled:y.hidden||!w,noDragClassName:f,handleSelector:y.dragHandle,nodeId:e,isSelectable:T,nodeClickDistance:_}),M=Qu();if(y.hidden)return null;let N=Is(y),P=fd(y),F=T||w||t||n||r||i,I=n?e=>n(e,{...b.userNode}):void 0,L=r?e=>r(e,{...b.userNode}):void 0,z=i?e=>i(e,{...b.userNode}):void 0,B=a?e=>a(e,{...b.userNode}):void 0,V=o?e=>o(e,{...b.userNode}):void 0,H=n=>{let{selectNodesOnDrag:r,nodeDragThreshold:i}=O.getState();T&&(!r||!w||i>0)&&Yu({id:e,store:O,nodeRef:A}),t&&t(n,{...b.userNode})},U=t=>{if(!(Ks(t.nativeEvent)||m)){if(Wo.includes(t.key)&&T)Yu({id:e,store:O,unselect:t.key===`Escape`,nodeRef:A});else if(w&&y.selected&&Object.prototype.hasOwnProperty.call(ud,t.key)){t.preventDefault();let{ariaLabelConfig:e}=O.getState();O.setState({ariaLiveMessage:e[`node.a11yDescription.ariaLiveMessage`]({direction:t.key.replace(`Arrow`,``).toLowerCase(),x:~~b.positionAbsolute.x,y:~~b.positionAbsolute.y})}),M({direction:ud[t.key],factor:t.shiftKey?4:1})}}},W=()=>{if(m||!A.current?.matches(`:focus-visible`))return;let{transform:t,width:n,height:r,autoPanOnNodeFocus:i,setCenter:a}=O.getState();i&&(os(new Map([[e,y]]),{x:0,y:0,width:n,height:r},t,!0).length>0||a(y.position.x+N.width/2,y.position.y+N.height/2,{zoom:t[2]}))};return R(`div`,{className:K([`react-flow__node`,`react-flow__node-${S}`,{[p]:w},y.className,{selected:y.selected,selectable:T,parent:x,draggable:w,dragging:j}]),ref:A,style:{zIndex:b.z,transform:`translate(${b.positionAbsolute.x}px,${b.positionAbsolute.y}px)`,pointerEvents:F?`all`:`none`,visibility:k?`visible`:`hidden`,...y.style,...P},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:I,onMouseMove:L,onMouseLeave:z,onContextMenu:B,onClick:H,onDoubleClick:V,onKeyDown:D?U:void 0,tabIndex:D?0:void 0,onFocus:D?W:void 0,role:y.ariaRole??(D?`group`:void 0),"aria-roledescription":`node`,"aria-describedby":m?void 0:`${Hl}-${h}`,"aria-label":y.ariaLabel,...y.domAttributes,children:R(ed,{value:e,children:R(C,{id:e,data:y.data,type:S,positionAbsoluteX:b.positionAbsolute.x,positionAbsoluteY:b.positionAbsolute.y,selected:y.selected??!1,selectable:T,draggable:w,deletable:y.deletable??!0,isConnectable:E,sourcePosition:y.sourcePosition,targetPosition:y.targetPosition,dragging:j,dragHandle:y.dragHandle,zIndex:b.z,parentId:y.parentId,...N})})})}var Td=z(wd),Ed=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function Dd(e){let{nodesDraggable:t,nodesConnectable:n,nodesFocusable:r,elementsSelectable:i,onError:a}=Q(Ed,Z),o=bd(e.onlyRenderVisibleElements),s=Sd();return R(`div`,{className:`react-flow__nodes`,style:Vu,children:o.map(o=>R(Td,{id:o,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:s,nodesDraggable:t,nodesConnectable:n,nodesFocusable:r,elementsSelectable:i,nodeClickDistance:e.nodeClickDistance,onError:a},o))})}Dd.displayName=`NodeRenderer`;var Od=z(Dd);function kd(e){return Q(O(t=>{if(!e)return t.edges.map(e=>e.id);let n=[];if(t.width&&t.height)for(let e of t.edges){let r=t.nodeLookup.get(e.source),i=t.nodeLookup.get(e.target);r&&i&&nc({sourceNode:r,targetNode:i,width:t.width,height:t.height,transform:t.transform})&&n.push(e.id)}return n},[e]),Z)}var Ad=({color:e=`none`,strokeWidth:t=1})=>R(`polyline`,{className:`arrow`,style:{strokeWidth:t,...e&&{stroke:e}},strokeLinecap:`round`,fill:`none`,strokeLinejoin:`round`,points:`-5,-4 0,0 -5,4`}),jd=({color:e=`none`,strokeWidth:t=1})=>R(`polyline`,{className:`arrowclosed`,style:{strokeWidth:t,...e&&{stroke:e,fill:e}},strokeLinecap:`round`,strokeLinejoin:`round`,points:`-5,-4 0,0 -5,4 -5,-4`}),Md={[Zo.Arrow]:Ad,[Zo.ArrowClosed]:jd};function Nd(e){let t=$();return P(()=>Object.prototype.hasOwnProperty.call(Md,e)?Md[e]:(t.getState().onError?.(`009`,Ho.error009(e)),null),[e])}var Pd=({id:e,type:t,color:n,width:r=12.5,height:i=12.5,markerUnits:a=`strokeWidth`,strokeWidth:o,orient:s=`auto-start-reverse`})=>{let c=Nd(t);return c?R(`marker`,{className:`react-flow__arrowhead`,id:e,markerWidth:`${r}`,markerHeight:`${i}`,viewBox:`-10 -10 20 20`,markerUnits:a,orient:s,refX:`0`,refY:`0`,children:R(c,{color:n,strokeWidth:o})}):null},Fd=({defaultColor:e,rfId:t})=>{let n=Q(e=>e.edges),r=Q(e=>e.defaultEdgeOptions),i=P(()=>yc(n,{id:t,defaultColor:e,defaultMarkerStart:r?.markerStart,defaultMarkerEnd:r?.markerEnd}),[n,r,t,e]);return i.length?R(`svg`,{className:`react-flow__marker`,"aria-hidden":`true`,children:R(`defs`,{children:i.map(e=>R(Pd,{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};Fd.displayName=`MarkerDefinitions`;var Id=z(Fd);function Ld({x:e,y:t,label:n,labelStyle:r,labelShowBg:i=!0,labelBgStyle:a,labelBgPadding:o=[2,4],labelBgBorderRadius:s=2,children:c,className:l,...u}){let[d,f]=k({x:1,y:0,width:0,height:0}),p=K([`react-flow__edge-textwrapper`,l]),m=F(null);return N(()=>{if(m.current){let e=m.current.getBBox();f({x:e.x,y:e.y,width:e.width,height:e.height})}},[n]),n?H(`g`,{transform:`translate(${e-d.width/2} ${t-d.height/2})`,className:p,visibility:d.width?`visible`:`hidden`,...u,children:[i&&R(`rect`,{width:d.width+2*o[0],x:-o[0],y:-o[1],height:d.height+2*o[1],className:`react-flow__edge-textbg`,style:a,rx:s,ry:s}),R(`text`,{className:`react-flow__edge-text`,y:d.height/2,dy:`0.3em`,ref:m,style:r,children:n}),c]}):null}Ld.displayName=`EdgeText`;var Rd=z(Ld);function zd({path:e,labelX:t,labelY:n,label:r,labelStyle:i,labelShowBg:a,labelBgStyle:o,labelBgPadding:s,labelBgBorderRadius:c,interactionWidth:l=20,...u}){return H(U,{children:[R(`path`,{...u,d:e,fill:`none`,className:K([`react-flow__edge-path`,u.className])}),l?R(`path`,{d:e,fill:`none`,strokeOpacity:0,strokeWidth:l,className:`react-flow__edge-interaction`}):null,r&&Ts(t)&&Ts(n)?R(Rd,{x:t,y:n,label:r,labelStyle:i,labelShowBg:a,labelBgStyle:o,labelBgPadding:s,labelBgBorderRadius:c}):null]})}function Bd({pos:e,x1:t,y1:n,x2:r,y2:i}){return e===X.Left||e===X.Right?[.5*(t+r),n]:[t,.5*(n+i)]}function Vd({sourceX:e,sourceY:t,sourcePosition:n=X.Bottom,targetX:r,targetY:i,targetPosition:a=X.Top}){let[o,s]=Bd({pos:n,x1:e,y1:t,x2:r,y2:i}),[c,l]=Bd({pos:a,x1:r,y1:i,x2:e,y2:t}),[u,d,f,p]=Xs({sourceX:e,sourceY:t,targetX:r,targetY:i,sourceControlX:o,sourceControlY:s,targetControlX:c,targetControlY:l});return[`M${e},${t} C${o},${s} ${c},${l} ${r},${i}`,u,d,f,p]}function Hd(e){return z(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,sourcePosition:o,targetPosition:s,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,interactionWidth:_})=>{let[v,y,b]=Vd({sourceX:n,sourceY:r,sourcePosition:o,targetX:i,targetY:a,targetPosition:s});return R(zd,{id:e.isInternal?void 0:t,path:v,labelX:y,labelY:b,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,interactionWidth:_})})}var Ud=Hd({isInternal:!1}),Wd=Hd({isInternal:!0});Ud.displayName=`SimpleBezierEdge`,Wd.displayName=`SimpleBezierEdgeInternal`;function Gd(e){return z(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,sourcePosition:p=X.Bottom,targetPosition:m=X.Top,markerEnd:h,markerStart:g,pathOptions:_,interactionWidth:v})=>{let[y,b,x]=fc({sourceX:n,sourceY:r,sourcePosition:p,targetX:i,targetY:a,targetPosition:m,borderRadius:_?.borderRadius,offset:_?.offset,stepPosition:_?.stepPosition});return R(zd,{id:e.isInternal?void 0:t,path:y,labelX:b,labelY:x,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:g,interactionWidth:v})})}var Kd=Gd({isInternal:!1}),qd=Gd({isInternal:!0});Kd.displayName=`SmoothStepEdge`,qd.displayName=`SmoothStepEdgeInternal`;function Jd(e){return z(({id:t,...n})=>{let r=e.isInternal?void 0:t;return R(Kd,{...n,id:r,pathOptions:P(()=>({borderRadius:0,offset:n.pathOptions?.offset}),[n.pathOptions?.offset])})})}var Yd=Jd({isInternal:!1}),Xd=Jd({isInternal:!0});Yd.displayName=`StepEdge`,Xd.displayName=`StepEdgeInternal`;function Zd(e){return z(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:p,markerStart:m,interactionWidth:h})=>{let[g,_,v]=oc({sourceX:n,sourceY:r,targetX:i,targetY:a});return R(zd,{id:e.isInternal?void 0:t,path:g,labelX:_,labelY:v,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:p,markerStart:m,interactionWidth:h})})}var Qd=Zd({isInternal:!1}),$d=Zd({isInternal:!0});Qd.displayName=`StraightEdge`,$d.displayName=`StraightEdgeInternal`;function ef(e){return z(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,sourcePosition:o=X.Bottom,targetPosition:s=X.Top,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,pathOptions:_,interactionWidth:v})=>{let[y,b,x]=$s({sourceX:n,sourceY:r,sourcePosition:o,targetX:i,targetY:a,targetPosition:s,curvature:_?.curvature});return R(zd,{id:e.isInternal?void 0:t,path:y,labelX:b,labelY:x,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,interactionWidth:v})})}var tf=ef({isInternal:!1}),nf=ef({isInternal:!0});tf.displayName=`BezierEdge`,nf.displayName=`BezierEdgeInternal`;var rf={default:nf,straight:$d,step:Xd,smoothstep:qd,simplebezier:Wd},af={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null},of=(e,t,n)=>n===X.Left?e-t:n===X.Right?e+t:e,sf=(e,t,n)=>n===X.Top?e-t:n===X.Bottom?e+t:e,cf=`react-flow__edgeupdater`;function lf({position:e,centerX:t,centerY:n,radius:r=10,onMouseDown:i,onMouseEnter:a,onMouseOut:o,type:s}){return R(`circle`,{onMouseDown:i,onMouseEnter:a,onMouseOut:o,className:K([cf,`${cf}-${s}`]),cx:of(t,r,e),cy:sf(n,r,e),r,stroke:`transparent`,fill:`transparent`})}function uf({isReconnectable:e,reconnectRadius:t,edge:n,sourceX:r,sourceY:i,targetX:a,targetY:o,sourcePosition:s,targetPosition:c,onReconnect:l,onReconnectStart:u,onReconnectEnd:d,setReconnecting:f,setUpdateHover:p}){let m=$(),h=(e,t)=>{if(e.button!==0)return;let{autoPanOnConnect:r,domNode:i,connectionMode:a,connectionRadius:o,lib:s,onConnectStart:c,cancelConnection:p,nodeLookup:h,rfId:g,panBy:_,updateConnection:v}=m.getState(),y=t.type===`target`;$c.onPointerDown(e.nativeEvent,{autoPanOnConnect:r,connectionMode:a,connectionRadius:o,domNode:i,handleId:t.id,nodeId:t.nodeId,nodeLookup:h,isTarget:y,edgeUpdaterType:t.type,lib:s,flowId:g,cancelConnection:p,panBy:_,isValidConnection:(...e)=>m.getState().isValidConnection?.(...e)??!0,onConnect:e=>l?.(n,e),onConnectStart:(r,i)=>{f(!0),u?.(e,n,t.type),c?.(r,i)},onConnectEnd:(...e)=>m.getState().onConnectEnd?.(...e),onReconnectEnd:(e,r)=>{f(!1),d?.(e,n,t.type,r)},updateConnection:v,getTransform:()=>m.getState().transform,getFromHandle:()=>m.getState().connection.fromHandle,dragThreshold:m.getState().connectionDragThreshold,handleDomNode:e.currentTarget})},g=e=>h(e,{nodeId:n.target,id:n.targetHandle??null,type:`target`}),_=e=>h(e,{nodeId:n.source,id:n.sourceHandle??null,type:`source`}),v=()=>p(!0),y=()=>p(!1);return H(U,{children:[(e===!0||e===`source`)&&R(lf,{position:s,centerX:r,centerY:i,radius:t,onMouseDown:g,onMouseEnter:v,onMouseOut:y,type:`source`}),(e===!0||e===`target`)&&R(lf,{position:c,centerX:a,centerY:o,radius:t,onMouseDown:_,onMouseEnter:v,onMouseOut:y,type:`target`})]})}function df({id:e,edgesFocusable:t,edgesReconnectable:n,elementsSelectable:r,onClick:i,onDoubleClick:a,onContextMenu:o,onMouseEnter:s,onMouseMove:c,onMouseLeave:l,reconnectRadius:u,onReconnect:d,onReconnectStart:f,onReconnectEnd:p,rfId:m,edgeTypes:h,noPanClassName:g,onError:_,disableKeyboardA11y:v}){let y=Q(t=>t.edgeLookup.get(e)),b=Q(e=>e.defaultEdgeOptions);y=b?{...b,...y}:y;let x=y.type||`default`,S=h?.[x]||rf[x];S===void 0&&(_?.(`011`,Ho.error011(x)),x=`default`,S=h?.default||rf.default);let C=!!(y.focusable||t&&y.focusable===void 0),w=d!==void 0&&(y.reconnectable||n&&y.reconnectable===void 0),T=!!(y.selectable||r&&y.selectable===void 0),E=F(null),[D,A]=k(!1),[j,M]=k(!1),N=$(),{zIndex:I,sourceX:L,sourceY:z,targetX:B,targetY:V,sourcePosition:U,targetPosition:W}=Q(O(t=>{let n=t.nodeLookup.get(y.source),r=t.nodeLookup.get(y.target);if(!n||!r)return{zIndex:y.zIndex,...af};let i=mc({id:e,sourceNode:n,targetNode:r,sourceHandle:y.sourceHandle||null,targetHandle:y.targetHandle||null,connectionMode:t.connectionMode,onError:_});return{zIndex:tc({selected:y.selected,zIndex:y.zIndex,sourceNode:n,targetNode:r,elevateOnSelect:t.elevateEdgesOnSelect,zIndexMode:t.zIndexMode}),...i||af}},[y.source,y.target,y.sourceHandle,y.targetHandle,y.selected,y.zIndex]),Z),G=P(()=>y.markerStart?`url('#${vc(y.markerStart,m)}')`:void 0,[y.markerStart,m]),ee=P(()=>y.markerEnd?`url('#${vc(y.markerEnd,m)}')`:void 0,[y.markerEnd,m]);if(y.hidden||L===null||z===null||B===null||V===null)return null;let te=t=>{let{addSelectedEdges:n,unselectNodesAndEdges:r,multiSelectionActive:a}=N.getState();T&&(N.setState({nodesSelectionActive:!1}),y.selected&&a?(r({nodes:[],edges:[y]}),E.current?.blur()):n([e])),i&&i(t,y)},ne=a?e=>{a(e,{...y})}:void 0,re=o?e=>{o(e,{...y})}:void 0,ie=s?e=>{s(e,{...y})}:void 0,ae=c?e=>{c(e,{...y})}:void 0,oe=l?e=>{l(e,{...y})}:void 0;return R(`svg`,{style:{zIndex:I},children:H(`g`,{className:K([`react-flow__edge`,`react-flow__edge-${x}`,y.className,g,{selected:y.selected,animated:y.animated,inactive:!T&&!i,updating:D,selectable:T}]),onClick:te,onDoubleClick:ne,onContextMenu:re,onMouseEnter:ie,onMouseMove:ae,onMouseLeave:oe,onKeyDown:C?t=>{if(!v&&Wo.includes(t.key)&&T){let{unselectNodesAndEdges:n,addSelectedEdges:r}=N.getState();t.key===`Escape`?(E.current?.blur(),n({edges:[y]})):r([e])}}:void 0,tabIndex:C?0:void 0,role:y.ariaRole??(C?`group`:`img`),"aria-roledescription":`edge`,"data-id":e,"data-testid":`rf__edge-${e}`,"aria-label":y.ariaLabel===null?void 0:y.ariaLabel||`Edge from ${y.source} to ${y.target}`,"aria-describedby":C?`${Ul}-${m}`:void 0,ref:E,...y.domAttributes,children:[!j&&R(S,{id:e,source:y.source,target:y.target,type:y.type,selected:y.selected,animated:y.animated,selectable:T,deletable:y.deletable??!0,label:y.label,labelStyle:y.labelStyle,labelShowBg:y.labelShowBg,labelBgStyle:y.labelBgStyle,labelBgPadding:y.labelBgPadding,labelBgBorderRadius:y.labelBgBorderRadius,sourceX:L,sourceY:z,targetX:B,targetY:V,sourcePosition:U,targetPosition:W,data:y.data,style:y.style,sourceHandleId:y.sourceHandle,targetHandleId:y.targetHandle,markerStart:G,markerEnd:ee,pathOptions:`pathOptions`in y?y.pathOptions:void 0,interactionWidth:y.interactionWidth}),w&&R(uf,{edge:y,isReconnectable:w,reconnectRadius:u,onReconnect:d,onReconnectStart:f,onReconnectEnd:p,sourceX:L,sourceY:z,targetX:B,targetY:V,sourcePosition:U,targetPosition:W,setUpdateHover:A,setReconnecting:M})]})})}var ff=z(df),pf=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function mf({defaultMarkerColor:e,onlyRenderVisibleElements:t,rfId:n,edgeTypes:r,noPanClassName:i,onReconnect:a,onEdgeContextMenu:o,onEdgeMouseEnter:s,onEdgeMouseMove:c,onEdgeMouseLeave:l,onEdgeClick:u,reconnectRadius:d,onEdgeDoubleClick:f,onReconnectStart:p,onReconnectEnd:m,disableKeyboardA11y:h}){let{edgesFocusable:g,edgesReconnectable:_,elementsSelectable:v,onError:y}=Q(pf,Z),b=kd(t);return H(`div`,{className:`react-flow__edges`,children:[R(Id,{defaultColor:e,rfId:n}),b.map(e=>R(ff,{id:e,edgesFocusable:g,edgesReconnectable:_,elementsSelectable:v,noPanClassName:i,onReconnect:a,onContextMenu:o,onMouseEnter:s,onMouseMove:c,onMouseLeave:l,onClick:u,reconnectRadius:d,onDoubleClick:f,onReconnectStart:p,onReconnectEnd:m,rfId:n,onError:y,edgeTypes:r,disableKeyboardA11y:h},e))]})}mf.displayName=`EdgeRenderer`;var hf=z(mf),gf=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function _f({children:e}){return R(`div`,{className:`react-flow__viewport xyflow__viewport react-flow__container`,style:{transform:Q(gf)},children:e})}function vf(e){let t=Iu(),n=F(!1);N(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}var yf=e=>e.panZoom?.syncViewport;function bf(e){let t=Q(yf),n=$();return N(()=>{e&&(t?.(e),n.setState({transform:[e.x,e.y,e.zoom]}))},[e,t]),null}function xf(e){return e.connection.inProgress?{...e.connection,to:Os(e.connection.to,e.transform)}:{...e.connection}}function Sf(e){return e?t=>e(xf(t)):xf}function Cf(e){return Q(Sf(e),Z)}var wf=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function Tf({containerStyle:e,style:t,type:n,component:r}){let{nodesConnectable:i,width:a,height:o,isValid:s,inProgress:c}=Q(wf,Z);return a&&i&&c?R(`svg`,{style:e,width:a,height:o,className:`react-flow__connectionline react-flow__container`,children:R(`g`,{className:K([`react-flow__connection`,$o(s)]),children:R(Ef,{style:t,type:n,CustomComponent:r,isValid:s})})}):null}var Ef=({style:e,type:t=Xo.Bezier,CustomComponent:n,isValid:r})=>{let{inProgress:i,from:a,fromNode:o,fromHandle:s,fromPosition:c,to:l,toNode:u,toHandle:d,toPosition:f,pointer:p}=Cf();if(!i)return;if(n)return R(n,{connectionLineType:t,connectionLineStyle:e,fromNode:o,fromHandle:s,fromX:a.x,fromY:a.y,toX:l.x,toY:l.y,fromPosition:c,toPosition:f,connectionStatus:$o(r),toNode:u,toHandle:d,pointer:p});let m=``,h={sourceX:a.x,sourceY:a.y,sourcePosition:c,targetX:l.x,targetY:l.y,targetPosition:f};switch(t){case Xo.Bezier:[m]=$s(h);break;case Xo.SimpleBezier:[m]=Vd(h);break;case Xo.Step:[m]=fc({...h,borderRadius:0});break;case Xo.SmoothStep:[m]=fc(h);break;default:[m]=oc(h)}return R(`path`,{d:m,fill:`none`,className:`react-flow__connection-path`,style:e})};Ef.displayName=`ConnectionLine`;var Df={};function Of(e=Df){F(e),$(),N(()=>{},[e])}function kf(){$(),F(!1),N(()=>{},[])}function Af({nodeTypes:e,edgeTypes:t,onInit:n,onNodeClick:r,onEdgeClick:i,onNodeDoubleClick:a,onEdgeDoubleClick:o,onNodeMouseEnter:s,onNodeMouseMove:c,onNodeMouseLeave:l,onNodeContextMenu:u,onSelectionContextMenu:d,onSelectionStart:f,onSelectionEnd:p,connectionLineType:m,connectionLineStyle:h,connectionLineComponent:g,connectionLineContainerStyle:_,selectionKeyCode:v,selectionOnDrag:y,selectionMode:b,multiSelectionKeyCode:x,panActivationKeyCode:S,zoomActivationKeyCode:C,deleteKeyCode:w,onlyRenderVisibleElements:T,elementsSelectable:E,defaultViewport:D,translateExtent:O,minZoom:k,maxZoom:A,preventScrolling:j,defaultMarkerColor:M,zoomOnScroll:N,zoomOnPinch:P,panOnScroll:F,panOnScrollSpeed:I,panOnScrollMode:L,zoomOnDoubleClick:z,panOnDrag:B,autoPanOnSelection:V,onPaneClick:U,onPaneMouseEnter:W,onPaneMouseMove:G,onPaneMouseLeave:ee,onPaneScroll:te,onPaneContextMenu:ne,paneClickDistance:re,nodeClickDistance:ie,onEdgeContextMenu:ae,onEdgeMouseEnter:oe,onEdgeMouseMove:se,onEdgeMouseLeave:ce,reconnectRadius:le,onReconnect:ue,onReconnectStart:de,onReconnectEnd:fe,noDragClassName:pe,noWheelClassName:me,noPanClassName:he,disableKeyboardA11y:ge,nodeExtent:_e,rfId:ve,viewport:ye,onViewportChange:be}){return Of(e),Of(t),kf(),vf(n),bf(ye),R(vd,{onPaneClick:U,onPaneMouseEnter:W,onPaneMouseMove:G,onPaneMouseLeave:ee,onPaneContextMenu:ne,onPaneScroll:te,paneClickDistance:re,deleteKeyCode:w,selectionKeyCode:v,selectionOnDrag:y,selectionMode:b,onSelectionStart:f,onSelectionEnd:p,multiSelectionKeyCode:x,panActivationKeyCode:S,zoomActivationKeyCode:C,elementsSelectable:E,zoomOnScroll:N,zoomOnPinch:P,zoomOnDoubleClick:z,panOnScroll:F,panOnScrollSpeed:I,panOnScrollMode:L,panOnDrag:B,autoPanOnSelection:V,defaultViewport:D,translateExtent:O,minZoom:k,maxZoom:A,onSelectionContextMenu:d,preventScrolling:j,noDragClassName:pe,noWheelClassName:me,noPanClassName:he,disableKeyboardA11y:ge,onViewportChange:be,isControlledViewport:!!ye,children:H(_f,{children:[R(hf,{edgeTypes:t,onEdgeClick:i,onEdgeDoubleClick:o,onReconnect:ue,onReconnectStart:de,onReconnectEnd:fe,onlyRenderVisibleElements:T,onEdgeContextMenu:ae,onEdgeMouseEnter:oe,onEdgeMouseMove:se,onEdgeMouseLeave:ce,reconnectRadius:le,defaultMarkerColor:M,noPanClassName:he,disableKeyboardA11y:ge,rfId:ve}),R(Tf,{style:h,type:m,component:g,containerStyle:_}),R(`div`,{className:`react-flow__edgelabel-renderer`}),R(Od,{nodeTypes:e,onNodeClick:r,onNodeDoubleClick:a,onNodeMouseEnter:s,onNodeMouseMove:c,onNodeMouseLeave:l,onNodeContextMenu:u,nodeClickDistance:ie,onlyRenderVisibleElements:T,noPanClassName:he,noDragClassName:pe,disableKeyboardA11y:ge,nodeExtent:_e,rfId:ve}),R(`div`,{className:`react-flow__viewport-portal`})]})})}Af.displayName=`GraphView`;var jf=z(Af),Mf=Es(`React Flow`,`https://reactflow.dev/`),Nf=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:i,height:a,fitView:o,fitViewOptions:s,minZoom:c=.5,maxZoom:l=2,nodeOrigin:u,nodeExtent:d,zIndexMode:f=`basic`}={})=>{let p=new Map,m=new Map,h=new Map,g=new Map,_=r??t??[],v=n??e??[],y=u??[0,0],b=d??Uo;Lc(h,g,_);let{nodesInitialized:x}=Oc(v,p,m,{nodeOrigin:y,nodeExtent:b,zIndexMode:f}),S=[0,0,1];if(o&&i&&a){let{x:e,y:t,zoom:n}=Ns(as(p,{filter:e=>!!((e.width||e.initialWidth)&&(e.height||e.initialHeight))}),i,a,c,l,s?.padding??.1);S=[e,t,n]}return{rfId:`1`,width:i??0,height:a??0,transform:S,nodes:v,nodesInitialized:x,nodeLookup:p,parentLookup:m,edges:_,edgeLookup:g,connectionLookup:h,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:n!==void 0,hasDefaultEdges:r!==void 0,panZoom:null,minZoom:c,maxZoom:l,translateExtent:Uo,nodeExtent:b,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:Ko.Strict,domNode:null,paneDragging:!1,noPanClassName:`nopan`,nodeOrigin:y,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:o??!1,fitViewOptions:s,fitViewResolver:null,connection:{...Yo},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:``,autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:Mf,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:`react`,debug:!1,ariaLabelConfig:Go,zIndexMode:f,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},Pf=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:i,height:a,fitView:o,fitViewOptions:s,minZoom:c,maxZoom:l,nodeOrigin:u,nodeExtent:d,zIndexMode:f})=>Il((p,m)=>{async function h(){let{nodeLookup:e,panZoom:t,fitViewOptions:n,fitViewResolver:r,width:i,height:a,minZoom:o,maxZoom:s}=m();t&&(await ls({nodes:e,width:i,height:a,panZoom:t,minZoom:o,maxZoom:s},n),r?.resolve(!0),p({fitViewResolver:null}))}return{...Nf({nodes:e,edges:t,width:i,height:a,fitView:o,fitViewOptions:s,minZoom:c,maxZoom:l,nodeOrigin:u,nodeExtent:d,defaultNodes:n,defaultEdges:r,zIndexMode:f}),setNodes:e=>{let{nodeLookup:t,parentLookup:n,nodeOrigin:r,elevateNodesOnSelect:i,fitViewQueued:a,zIndexMode:o,nodesSelectionActive:s}=m(),{nodesInitialized:c,hasSelectedNodes:l}=Oc(e,t,n,{nodeOrigin:r,nodeExtent:d,elevateNodesOnSelect:i,checkEquality:!0,zIndexMode:o}),u=s&&l;a&&c?(h(),p({nodes:e,nodesInitialized:c,fitViewQueued:!1,fitViewOptions:void 0,nodesSelectionActive:u})):p({nodes:e,nodesInitialized:c,nodesSelectionActive:u})},setEdges:e=>{let{connectionLookup:t,edgeLookup:n}=m();Lc(t,n,e),p({edges:e})},setDefaultNodesAndEdges:(e,t)=>{if(e){let{setNodes:t}=m();t(e),p({hasDefaultNodes:!0})}if(t){let{setEdges:e}=m();e(t),p({hasDefaultEdges:!0})}},updateNodeInternals:e=>{let{triggerNodeChanges:t,nodeLookup:n,parentLookup:r,domNode:i,nodeOrigin:a,nodeExtent:o,debug:s,fitViewQueued:c,zIndexMode:l}=m(),{changes:u,updatedInternals:d}=Pc(e,n,r,i,a,o,l);d&&(Tc(n,r,{nodeOrigin:a,nodeExtent:o,zIndexMode:l}),c?(h(),p({fitViewQueued:!1,fitViewOptions:void 0})):p({}),u?.length>0&&(s&&console.log(`React Flow: trigger node changes`,u),t?.(u)))},updateNodePositions:(e,t=!1)=>{let n=[],r=[],{nodeLookup:i,triggerNodeChanges:a,connection:o,updateConnection:s,onNodesChangeMiddlewareMap:c}=m();for(let[a,c]of e){let e=i.get(a),l=!!(e?.expandParent&&e?.parentId&&c?.position),u={id:a,type:`position`,position:l?{x:Math.max(0,c.position.x),y:Math.max(0,c.position.y)}:c.position,dragging:t};if(e&&o.inProgress&&o.fromNode.id===e.id){let t=gc(e,o.fromHandle,X.Left,!0);s({...o,from:t})}l&&e.parentId&&n.push({id:a,parentId:e.parentId,rect:{...c.internals.positionAbsolute,width:c.measured.width??0,height:c.measured.height??0}}),r.push(u)}if(n.length>0){let{parentLookup:e,nodeOrigin:t}=m(),a=Nc(n,i,e,t);r.push(...a)}for(let e of c.values())r=e(r);a(r)},triggerNodeChanges:e=>{let{onNodesChange:t,setNodes:n,nodes:r,hasDefaultNodes:i,debug:a}=m();e?.length&&(i&&n(vu(e,r)),a&&console.log(`React Flow: trigger node changes`,e),t?.(e))},triggerEdgeChanges:e=>{let{onEdgesChange:t,setEdges:n,edges:r,hasDefaultEdges:i,debug:a}=m();e?.length&&(i&&n(yu(e,r)),a&&console.log(`React Flow: trigger edge changes`,e),t?.(e))},addSelectedNodes:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:r,triggerNodeChanges:i,triggerEdgeChanges:a}=m();if(t){i(e.map(e=>bu(e,!0)));return}i(xu(r,new Set([...e]),!0)),a(xu(n))},addSelectedEdges:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:r,triggerNodeChanges:i,triggerEdgeChanges:a}=m();if(t){a(e.map(e=>bu(e,!0)));return}a(xu(n,new Set([...e]))),i(xu(r,new Set,!0))},unselectNodesAndEdges:({nodes:e,edges:t}={})=>{let{edges:n,nodes:r,nodeLookup:i,triggerNodeChanges:a,triggerEdgeChanges:o}=m(),s=e||r,c=t||n,l=[];for(let e of s){if(!e.selected)continue;let t=i.get(e.id);t&&(t.selected=!1),l.push(bu(e.id,!1))}let u=[];for(let e of c)e.selected&&u.push(bu(e.id,!1));a(l),o(u)},setMinZoom:e=>{let{panZoom:t,maxZoom:n}=m();t?.setScaleExtent([e,n]),p({minZoom:e})},setMaxZoom:e=>{let{panZoom:t,minZoom:n}=m();t?.setScaleExtent([n,e]),p({maxZoom:e})},setTranslateExtent:e=>{m().panZoom?.setTranslateExtent(e),p({translateExtent:e})},resetSelectedElements:()=>{let{edges:e,nodes:t,triggerNodeChanges:n,triggerEdgeChanges:r,elementsSelectable:i}=m();if(!i)return;let a=t.reduce((e,t)=>t.selected?[...e,bu(t.id,!1)]:e,[]),o=e.reduce((e,t)=>t.selected?[...e,bu(t.id,!1)]:e,[]);n(a),r(o)},setNodeExtent:e=>{let{nodes:t,nodeLookup:n,parentLookup:r,nodeOrigin:i,elevateNodesOnSelect:a,nodeExtent:o,zIndexMode:s}=m();e[0][0]===o[0][0]&&e[0][1]===o[0][1]&&e[1][0]===o[1][0]&&e[1][1]===o[1][1]||(Oc(t,n,r,{nodeOrigin:i,nodeExtent:e,elevateNodesOnSelect:a,checkEquality:!1,zIndexMode:s}),p({nodeExtent:e}))},panBy:e=>{let{transform:t,width:n,height:r,panZoom:i,translateExtent:a}=m();return Fc({delta:e,panZoom:i,transform:t,translateExtent:a,width:n,height:r})},setCenter:async(e,t,n)=>{let{width:r,height:i,maxZoom:a,panZoom:o}=m();if(!o)return!1;let s=n?.zoom===void 0?a:n.zoom;return await o.setViewport({x:r/2-e*s,y:i/2-t*s,zoom:s},{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),!0},cancelConnection:()=>{p({connection:{...Yo}})},updateConnection:e=>{p({connection:e})},reset:()=>p({...Nf()})}},Object.is);function Ff({initialNodes:e,initialEdges:t,defaultNodes:n,defaultEdges:r,initialWidth:i,initialHeight:a,initialMinZoom:o,initialMaxZoom:s,initialFitViewOptions:c,fitView:l,nodeOrigin:u,nodeExtent:d,zIndexMode:f,children:p}){let[m]=k(()=>Pf({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:i,height:a,fitView:l,minZoom:o,maxZoom:s,fitViewOptions:c,nodeOrigin:u,nodeExtent:d,zIndexMode:f}));return R(Rl,{value:m,children:R(Nu,{children:p})})}function If({children:e,nodes:t,edges:n,defaultNodes:r,defaultEdges:i,width:a,height:o,fitView:s,fitViewOptions:c,minZoom:l,maxZoom:u,nodeOrigin:d,nodeExtent:f,zIndexMode:p}){return j(Ll)?R(U,{children:e}):R(Ff,{initialNodes:t,initialEdges:n,defaultNodes:r,defaultEdges:i,initialWidth:a,initialHeight:o,fitView:s,initialFitViewOptions:c,initialMinZoom:l,initialMaxZoom:u,nodeOrigin:d,nodeExtent:f,zIndexMode:p,children:e})}var Lf={width:`100%`,height:`100%`,overflow:`hidden`,position:`relative`,zIndex:0};function Rf({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,className:i,nodeTypes:a,edgeTypes:o,onNodeClick:s,onEdgeClick:c,onInit:l,onMove:u,onMoveStart:d,onMoveEnd:f,onConnect:p,onConnectStart:m,onConnectEnd:h,onClickConnectStart:g,onClickConnectEnd:_,onNodeMouseEnter:v,onNodeMouseMove:y,onNodeMouseLeave:b,onNodeContextMenu:x,onNodeDoubleClick:S,onNodeDragStart:C,onNodeDrag:w,onNodeDragStop:T,onNodesDelete:E,onEdgesDelete:D,onDelete:k,onSelectionChange:A,onSelectionDragStart:j,onSelectionDrag:M,onSelectionDragStop:N,onSelectionContextMenu:P,onSelectionStart:F,onSelectionEnd:I,onBeforeDelete:L,connectionMode:z,connectionLineType:B=Xo.Bezier,connectionLineStyle:V,connectionLineComponent:U,connectionLineContainerStyle:W,deleteKeyCode:G=`Backspace`,selectionKeyCode:ee=`Shift`,selectionOnDrag:te=!1,selectionMode:ne=Jo.Full,panActivationKeyCode:re=`Space`,multiSelectionKeyCode:ie=Ps()?`Meta`:`Control`,zoomActivationKeyCode:ae=Ps()?`Meta`:`Control`,snapToGrid:oe,snapGrid:se,onlyRenderVisibleElements:ce=!1,selectNodesOnDrag:le,nodesDraggable:ue,autoPanOnNodeFocus:de,nodesConnectable:fe,nodesFocusable:pe,nodeOrigin:me=ru,edgesFocusable:he,edgesReconnectable:ge,elementsSelectable:_e=!0,defaultViewport:ve=iu,minZoom:ye=.5,maxZoom:be=2,translateExtent:xe=Uo,preventScrolling:Se=!0,nodeExtent:Ce,defaultMarkerColor:we=`#b1b1b7`,zoomOnScroll:Te=!0,zoomOnPinch:Ee=!0,panOnScroll:De=!1,panOnScrollSpeed:Oe=.5,panOnScrollMode:ke=qo.Free,zoomOnDoubleClick:Ae=!0,panOnDrag:je=!0,onPaneClick:Me,onPaneMouseEnter:Ne,onPaneMouseMove:Pe,onPaneMouseLeave:Fe,onPaneScroll:Ie,onPaneContextMenu:Le,paneClickDistance:Re=1,nodeClickDistance:ze=0,children:Be,onReconnect:Ve,onReconnectStart:He,onReconnectEnd:Ue,onEdgeContextMenu:We,onEdgeDoubleClick:Ge,onEdgeMouseEnter:Ke,onEdgeMouseMove:qe,onEdgeMouseLeave:Je,reconnectRadius:Ye=10,onNodesChange:Xe,onEdgesChange:Ze,noDragClassName:Qe=`nodrag`,noWheelClassName:$e=`nowheel`,noPanClassName:et=`nopan`,fitView:tt,fitViewOptions:nt,connectOnClick:rt,attributionPosition:it,proOptions:at,defaultEdgeOptions:ot,elevateNodesOnSelect:st=!0,elevateEdgesOnSelect:ct=!1,disableKeyboardA11y:lt=!1,autoPanOnConnect:ut,autoPanOnNodeDrag:dt,autoPanOnSelection:ft=!0,autoPanSpeed:pt,connectionRadius:mt,isValidConnection:ht,onError:gt,style:_t,id:vt,nodeDragThreshold:yt,connectionDragThreshold:bt,viewport:xt,onViewportChange:St,width:Ct,height:wt,colorMode:Tt=`light`,debug:Et,onScroll:Dt,ariaLabelConfig:Ot,zIndexMode:kt=`basic`,...At},jt){let Mt=vt||`1`,Nt=uu(Tt),Pt=O(e=>{e.currentTarget.scrollTo({top:0,left:0,behavior:`instant`}),Dt?.(e)},[Dt]);return R(`div`,{"data-testid":`rf__wrapper`,...At,onScroll:Pt,style:{..._t,...Lf},ref:jt,className:K([`react-flow`,i,Nt]),id:vt,role:`application`,children:H(If,{nodes:e,edges:t,width:Ct,height:wt,fitView:tt,fitViewOptions:nt,minZoom:ye,maxZoom:be,nodeOrigin:me,nodeExtent:Ce,zIndexMode:kt,children:[R(cu,{nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:p,onConnectStart:m,onConnectEnd:h,onClickConnectStart:g,onClickConnectEnd:_,nodesDraggable:ue,autoPanOnNodeFocus:de,nodesConnectable:fe,nodesFocusable:pe,edgesFocusable:he,edgesReconnectable:ge,elementsSelectable:_e,elevateNodesOnSelect:st,elevateEdgesOnSelect:ct,minZoom:ye,maxZoom:be,nodeExtent:Ce,onNodesChange:Xe,onEdgesChange:Ze,snapToGrid:oe,snapGrid:se,connectionMode:z,translateExtent:xe,connectOnClick:rt,defaultEdgeOptions:ot,fitView:tt,fitViewOptions:nt,onNodesDelete:E,onEdgesDelete:D,onDelete:k,onNodeDragStart:C,onNodeDrag:w,onNodeDragStop:T,onSelectionDrag:M,onSelectionDragStart:j,onSelectionDragStop:N,onMove:u,onMoveStart:d,onMoveEnd:f,noPanClassName:et,nodeOrigin:me,rfId:Mt,autoPanOnConnect:ut,autoPanOnNodeDrag:dt,autoPanSpeed:pt,onError:gt,connectionRadius:mt,isValidConnection:ht,selectNodesOnDrag:le,nodeDragThreshold:yt,connectionDragThreshold:bt,onBeforeDelete:L,debug:Et,ariaLabelConfig:Ot,zIndexMode:kt}),R(jf,{onInit:l,onNodeClick:s,onEdgeClick:c,onNodeMouseEnter:v,onNodeMouseMove:y,onNodeMouseLeave:b,onNodeContextMenu:x,onNodeDoubleClick:S,nodeTypes:a,edgeTypes:o,connectionLineType:B,connectionLineStyle:V,connectionLineComponent:U,connectionLineContainerStyle:W,selectionKeyCode:ee,selectionOnDrag:te,selectionMode:ne,deleteKeyCode:G,multiSelectionKeyCode:ie,panActivationKeyCode:re,zoomActivationKeyCode:ae,onlyRenderVisibleElements:ce,defaultViewport:ve,translateExtent:xe,minZoom:ye,maxZoom:be,preventScrolling:Se,zoomOnScroll:Te,zoomOnPinch:Ee,zoomOnDoubleClick:Ae,panOnScroll:De,panOnScrollSpeed:Oe,panOnScrollMode:ke,panOnDrag:je,autoPanOnSelection:ft,onPaneClick:Me,onPaneMouseEnter:Ne,onPaneMouseMove:Pe,onPaneMouseLeave:Fe,onPaneScroll:Ie,onPaneContextMenu:Le,paneClickDistance:Re,nodeClickDistance:ze,onSelectionContextMenu:P,onSelectionStart:F,onSelectionEnd:I,onReconnect:Ve,onReconnectStart:He,onReconnectEnd:Ue,onEdgeContextMenu:We,onEdgeDoubleClick:Ge,onEdgeMouseEnter:Ke,onEdgeMouseMove:qe,onEdgeMouseLeave:Je,reconnectRadius:Ye,defaultMarkerColor:we,noDragClassName:Qe,noWheelClassName:$e,noPanClassName:et,rfId:Mt,disableKeyboardA11y:lt,nodeExtent:Ce,viewport:xt,onViewportChange:St}),R(nu,{onSelectionChange:A}),Be,R(Xl,{proOptions:at,position:it}),R(Jl,{rfId:Mt,disableKeyboardA11y:lt})]})})}var zf=Ou(Rf);Ho.error014();function Bf({dimensions:e,lineWidth:t,variant:n,className:r}){return R(`path`,{strokeWidth:t,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`,className:K([`react-flow__background-pattern`,n,r])})}function Vf({radius:e,className:t}){return R(`circle`,{cx:e,cy:e,r:e,className:K([`react-flow__background-pattern`,`dots`,t])})}var Hf;(function(e){e.Lines=`lines`,e.Dots=`dots`,e.Cross=`cross`})(Hf||={});var Uf={[Hf.Dots]:1,[Hf.Lines]:1,[Hf.Cross]:6},Wf=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function Gf({id:e,variant:t=Hf.Dots,gap:n=20,size:r,lineWidth:i=1,offset:a=0,color:o,bgColor:s,style:c,className:l,patternClassName:u}){let d=F(null),{transform:f,patternId:p}=Q(Wf,Z),m=r||Uf[t],h=t===Hf.Dots,g=t===Hf.Cross,_=Array.isArray(n)?n:[n,n],v=[_[0]*f[2]||1,_[1]*f[2]||1],y=m*f[2],b=Array.isArray(a)?a:[a,a],x=g?[y,y]:v,S=[b[0]*f[2]||1+x[0]/2,b[1]*f[2]||1+x[1]/2],C=`${p}${e||``}`;return H(`svg`,{className:K([`react-flow__background`,l]),style:{...c,...Vu,"--xy-background-color-props":s,"--xy-background-pattern-color-props":o},ref:d,"data-testid":`rf__background`,children:[R(`pattern`,{id:C,x:f[0]%v[0],y:f[1]%v[1],width:v[0],height:v[1],patternUnits:`userSpaceOnUse`,patternTransform:`translate(-${S[0]},-${S[1]})`,children:h?R(Vf,{radius:y/2,className:u}):R(Bf,{dimensions:x,lineWidth:i,variant:t,className:u})}),R(`rect`,{x:`0`,y:`0`,width:`100%`,height:`100%`,fill:`url(#${C})`})]})}Gf.displayName=`Background`;var Kf=z(Gf);function qf(){return R(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 32 32`,children:R(`path`,{d:`M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z`})})}function Jf(){return R(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 32 5`,children:R(`path`,{d:`M0 0h32v4.2H0z`})})}function Yf(){return R(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 32 30`,children:R(`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 Xf(){return R(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 25 32`,children:R(`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 Zf(){return R(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 25 32`,children:R(`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 Qf({children:e,className:t,...n}){return R(`button`,{type:`button`,className:K([`react-flow__controls-button`,t]),...n,children:e})}var $f=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function ep({style:e,showZoom:t=!0,showFitView:n=!0,showInteractive:r=!0,fitViewOptions:i,onZoomIn:a,onZoomOut:o,onFitView:s,onInteractiveChange:c,className:l,children:u,position:d=`bottom-left`,orientation:f=`vertical`,"aria-label":p}){let m=$(),{isInteractive:h,minZoomReached:g,maxZoomReached:_,ariaLabelConfig:v}=Q($f,Z),{zoomIn:y,zoomOut:b,fitView:x}=Iu();return H(Yl,{className:K([`react-flow__controls`,f===`horizontal`?`horizontal`:`vertical`,l]),position:d,style:e,"data-testid":`rf__controls`,"aria-label":p??v[`controls.ariaLabel`],children:[t&&H(U,{children:[R(Qf,{onClick:()=>{y(),a?.()},className:`react-flow__controls-zoomin`,title:v[`controls.zoomIn.ariaLabel`],"aria-label":v[`controls.zoomIn.ariaLabel`],disabled:_,children:R(qf,{})}),R(Qf,{onClick:()=>{b(),o?.()},className:`react-flow__controls-zoomout`,title:v[`controls.zoomOut.ariaLabel`],"aria-label":v[`controls.zoomOut.ariaLabel`],disabled:g,children:R(Jf,{})})]}),n&&R(Qf,{className:`react-flow__controls-fitview`,onClick:()=>{x(i),s?.()},title:v[`controls.fitView.ariaLabel`],"aria-label":v[`controls.fitView.ariaLabel`],children:R(Yf,{})}),r&&R(Qf,{className:`react-flow__controls-interactive`,onClick:()=>{m.setState({nodesDraggable:!h,nodesConnectable:!h,elementsSelectable:!h}),c?.(!h)},title:v[`controls.interactive.ariaLabel`],"aria-label":v[`controls.interactive.ariaLabel`],children:R(h?Zf:Xf,{})}),u]})}ep.displayName=`Controls`;var tp=z(ep);function np({id:e,x:t,y:n,width:r,height:i,style:a,color:o,strokeColor:s,strokeWidth:c,className:l,borderRadius:u,shapeRendering:d,selected:f,onClick:p}){let{background:m,backgroundColor:h}=a||{},g=o||m||h;return R(`rect`,{className:K([`react-flow__minimap-node`,{selected:f},l]),x:t,y:n,rx:u,ry:u,width:r,height:i,style:{fill:g,stroke:s,strokeWidth:c},shapeRendering:d,onClick:p?t=>p(t,e):void 0})}var rp=z(np),ip=e=>e.nodes.map(e=>e.id),ap=e=>e instanceof Function?e:()=>e;function op({nodeStrokeColor:e,nodeColor:t,nodeClassName:n=``,nodeBorderRadius:r=5,nodeStrokeWidth:i,nodeComponent:a=rp,onClick:o}){let s=Q(ip,Z),c=ap(t),l=ap(e),u=ap(n),d=typeof window>`u`||window.chrome?`crispEdges`:`geometricPrecision`;return R(U,{children:s.map(e=>R(cp,{id:e,nodeColorFunc:c,nodeStrokeColorFunc:l,nodeClassNameFunc:u,nodeBorderRadius:r,nodeStrokeWidth:i,NodeComponent:a,onClick:o,shapeRendering:d},e))})}function sp({id:e,nodeColorFunc:t,nodeStrokeColorFunc:n,nodeClassNameFunc:r,nodeBorderRadius:i,nodeStrokeWidth:a,shapeRendering:o,NodeComponent:s,onClick:c}){let{node:l,x:u,y:d,width:f,height:p}=Q(t=>{let n=t.nodeLookup.get(e);if(!n)return{node:void 0,x:0,y:0,width:0,height:0};let r=n.internals.userNode,{x:i,y:a}=n.internals.positionAbsolute,{width:o,height:s}=Is(r);return{node:r,x:i,y:a,width:o,height:s}},Z);return!l||l.hidden||!Ls(l)?null:R(s,{x:u,y:d,width:f,height:p,style:l.style,selected:!!l.selected,className:r(l),color:t(l),borderRadius:i,strokeColor:n(l),strokeWidth:a,shapeRendering:o,onClick:c,id:l.id})}var cp=z(sp),lp=z(op),up=200,dp=150,fp=e=>!e.hidden,pp=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?Ss(as(e.nodeLookup,{filter:fp}),t):t,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}},mp=`react-flow__minimap-desc`;function hp({style:e,className:t,nodeStrokeColor:n,nodeColor:r,nodeClassName:i=``,nodeBorderRadius:a=5,nodeStrokeWidth:o,nodeComponent:s,bgColor:c,maskColor:l,maskStrokeColor:u,maskStrokeWidth:d,position:f=`bottom-right`,onClick:p,onNodeClick:m,pannable:h=!1,zoomable:g=!1,ariaLabel:_,inversePan:v,zoomStep:y=1,offsetScale:b=5}){let x=$(),S=F(null),{boundingRect:C,viewBB:w,rfId:T,panZoom:E,translateExtent:D,flowWidth:k,flowHeight:A,ariaLabelConfig:j}=Q(pp,Z),M=e?.width??up,P=e?.height??dp,I=C.width/M,L=C.height/P,z=Math.max(I,L),B=z*M,V=z*P,U=b*z,W=C.x-(B-C.width)/2-U,G=C.y-(V-C.height)/2-U,ee=B+U*2,te=V+U*2,ne=`${mp}-${T}`,re=F(0),ie=F();re.current=z,N(()=>{if(S.current&&E)return ie.current=el({domNode:S.current,panZoom:E,getTransform:()=>x.getState().transform,getViewScale:()=>re.current}),()=>{ie.current?.destroy()}},[E]),N(()=>{ie.current?.update({translateExtent:D,width:k,height:A,inversePan:v,pannable:h,zoomStep:y,zoomable:g})},[h,g,v,y,D,k,A]);let ae=p?e=>{let[t,n]=ie.current?.pointer(e)||[0,0];p(e,{x:t,y:n})}:void 0,oe=m?O((e,t)=>{let n=x.getState().nodeLookup.get(t).internals.userNode;m(e,n)},[]):void 0,se=_??j[`minimap.ariaLabel`];return R(Yl,{position:f,style:{...e,"--xy-minimap-background-color-props":typeof c==`string`?c:void 0,"--xy-minimap-mask-background-color-props":typeof l==`string`?l:void 0,"--xy-minimap-mask-stroke-color-props":typeof u==`string`?u:void 0,"--xy-minimap-mask-stroke-width-props":typeof d==`number`?d*z:void 0,"--xy-minimap-node-background-color-props":typeof r==`string`?r:void 0,"--xy-minimap-node-stroke-color-props":typeof n==`string`?n:void 0,"--xy-minimap-node-stroke-width-props":typeof o==`number`?o:void 0},className:K([`react-flow__minimap`,t]),"data-testid":`rf__minimap`,children:H(`svg`,{width:M,height:P,viewBox:`${W} ${G} ${ee} ${te}`,className:`react-flow__minimap-svg`,role:`img`,"aria-labelledby":ne,ref:S,onClick:ae,children:[se&&R(`title`,{id:ne,children:se}),R(lp,{onClick:oe,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:a,nodeClassName:i,nodeStrokeWidth:o,nodeComponent:s}),R(`path`,{className:`react-flow__minimap-mask`,d:`M${W-U},${G-U}h${ee+U*2}v${te+U*2}h${-ee-U*2}z
7
+ M${w.x},${w.y}h${w.width}v${w.height}h${-w.width}z`,fillRule:`evenodd`,pointerEvents:`none`})]})})}hp.displayName=`MiniMap`,z(hp);var gp=e=>t=>e?`${Math.max(1/t.transform[2],1)}`:void 0,_p={[hl.Line]:`right`,[hl.Handle]:`bottom-right`};function vp({nodeId:e,position:t,variant:n=hl.Handle,className:r,style:i=void 0,children:a,color:o,minWidth:s=10,minHeight:c=10,maxWidth:l=Number.MAX_VALUE,maxHeight:u=Number.MAX_VALUE,keepAspectRatio:d=!1,resizeDirection:f,autoScale:p=!0,shouldResize:m,onResizeStart:h,onResize:g,onResizeEnd:_}){let v=td(),y=typeof e==`string`?e:v,b=$(),x=F(null),S=n===hl.Handle,C=Q(O(gp(S&&p),[S,p]),Z),w=F(null),T=t??_p[n];return N(()=>{if(!(!x.current||!y))return w.current||=El({domNode:x.current,nodeId:y,getStoreItems:()=>{let{nodeLookup:e,transform:t,snapGrid:n,snapToGrid:r,nodeOrigin:i,domNode:a}=b.getState();return{nodeLookup:e,transform:t,snapGrid:n,snapToGrid:r,nodeOrigin:i,paneDomNode:a}},onChange:(e,t)=>{let{triggerNodeChanges:n,nodeLookup:r,parentLookup:i,nodeOrigin:a}=b.getState(),o=[],s={x:e.x,y:e.y},c=r.get(y);if(c&&c.expandParent&&c.parentId){let t=c.origin??a,n=e.width??c.measured.width??0,l=e.height??c.measured.height??0,u=Nc([{id:c.id,parentId:c.parentId,rect:{width:n,height:l,...Rs({x:e.x??c.position.x,y:e.y??c.position.y},{width:n,height:l},c.parentId,r,t)}}],r,i,a);o.push(...u),s.x=e.x?Math.max(t[0]*n,e.x):void 0,s.y=e.y?Math.max(t[1]*l,e.y):void 0}if(s.x!==void 0&&s.y!==void 0){let e={id:y,type:`position`,position:{...s}};o.push(e)}if(e.width!==void 0&&e.height!==void 0){let t={id:y,type:`dimensions`,resizing:!0,setAttributes:f?f===`horizontal`?`width`:`height`:!0,dimensions:{width:e.width,height:e.height}};o.push(t)}for(let e of t){let t={...e,type:`position`};o.push(t)}n(o)},onEnd:({width:e,height:t})=>{let n={id:y,type:`dimensions`,resizing:!1,dimensions:{width:e,height:t}};b.getState().triggerNodeChanges([n])}}),w.current.update({controlPosition:T,boundaries:{minWidth:s,minHeight:c,maxWidth:l,maxHeight:u},keepAspectRatio:d,resizeDirection:f,onResizeStart:h,onResize:g,onResizeEnd:_,shouldResize:m}),()=>{w.current?.destroy()}},[T,s,c,l,u,d,h,g,_,m]),R(`div`,{className:K([`react-flow__resize-control`,`nodrag`,...T.split(`-`),n,r]),ref:x,style:{...i,scale:C,...o&&{[S?`backgroundColor`:`borderColor`]:o}},children:a})}z(vp),I();function yp({availableCaps:e,selectedCaps:t,onChange:n}){let[r,i]=k(``),a=P(()=>{let n=new Set(t),i=r.trim().toLowerCase();return e.filter(e=>!n.has(e)&&(i===``||e.toLowerCase().includes(i)))},[e,t,r]),o=O(e=>{n([...t,e]),i(``)},[t,n]),s=O(e=>{n(t.filter(t=>t!==e))},[t,n]);return H(`div`,{className:`flex flex-wrap items-center gap-1 border border-border rounded-md px-2 py-1`,children:[t.map(e=>H(`span`,{className:`inline-flex items-center gap-1 px-1.5 py-0.5 rounded bg-primary/10 text-primary text-[10px]`,children:[e,R(`button`,{type:`button`,"aria-label":`Remove ${e}`,onClick:()=>s(e),className:`rounded hover:bg-primary/20`,children:R(de,{className:`h-2.5 w-2.5`})})]},e)),H(`div`,{className:`relative flex-1 min-w-[160px]`,children:[R(`input`,{type:`text`,placeholder:`Filter caps…`,value:r,onChange:e=>i(e.target.value),className:`w-full bg-transparent text-xs outline-none`}),r.length>0&&a.length>0&&R(`ul`,{role:`listbox`,className:`absolute z-10 left-0 right-0 mt-1 max-h-48 overflow-auto rounded-md border border-border bg-surface`,children:a.map(e=>R(`li`,{children:R(`button`,{type:`button`,role:`option`,"aria-selected":!1,onClick:()=>o(e),className:`w-full text-left px-2 py-1 text-xs hover:bg-muted`,children:e})},e))})]})]})}var bp=z(yp);I();var xp=5e3,Sp={consumer:0,cap:400,provider:800},Cp=80,wp=4;function Tp({initialSelectedCaps:e=[],windowSeconds:t=60}){let[n,r]=k(e),{data:i,isLoading:a}=m({windowSeconds:t},{refetchInterval:xp}),o=P(()=>{let e=i??[];return Array.from(new Set(e.map(e=>e.capName))).toSorted()},[i]),s=P(()=>{if(n.length===0)return{nodes:[],edges:[]};let e=new Set(n),t=(i??[]).filter(t=>e.has(t.capName)),r=Array.from(new Set(t.map(e=>e.callerAddonId))).toSorted(),a=Array.from(new Set(t.map(e=>e.providerAddonId))).toSorted(),o=[];r.forEach((e,t)=>o.push({id:`consumer:${e}`,position:{x:Sp.consumer,y:t*Cp},data:{label:e}})),n.forEach((e,t)=>o.push({id:`cap:${e}`,position:{x:Sp.cap,y:t*Cp},data:{label:e},style:{background:`#3b82f6`,color:`white`}})),a.forEach((e,t)=>o.push({id:`provider:${e}`,position:{x:Sp.provider,y:t*Cp},data:{label:e}}));let s=Math.max(1,...t.map(e=>e.callsPerMin)),c=[];for(let e of t){let t=Math.max(1,Math.min(wp,e.callsPerMin/s*wp));c.push({id:`${e.callerAddonId}→${e.capName}`,source:`consumer:${e.callerAddonId}`,target:`cap:${e.capName}`,style:{strokeWidth:t}}),c.push({id:`${e.capName}→${e.providerAddonId}`,source:`cap:${e.capName}`,target:`provider:${e.providerAddonId}`,style:{strokeWidth:t}})}return{nodes:o,edges:c}},[i,n]);return H(`div`,{className:`flex flex-col flex-1 min-h-0 gap-2 p-3`,children:[R(bp,{availableCaps:o,selectedCaps:n,onChange:r}),n.length===0?R(`div`,{className:`flex-1 flex items-center justify-center text-muted-foreground text-xs`,children:`Select 1+ capability to see who uses it.`}):a?R(`div`,{className:`flex-1 flex items-center justify-center text-muted-foreground text-xs`,children:`Loading…`}):R(`div`,{className:`flex-1 min-h-0 border border-border rounded-md overflow-hidden`,children:H(zf,{nodes:[...s.nodes],edges:[...s.edges],fitView:!0,proOptions:{hideAttribution:!0},children:[R(Kf,{gap:20,size:1}),R(tp,{showInteractive:!1})]})})]})}I();function Ep({onlineNodeIds:e}){let t=B(),n=s(),{data:r,isLoading:a}=i(),o=l({onSuccess:()=>{t.invalidateQueries({queryKey:[[`pipelineOrchestrator`,`listAgentSettings`]]})}}),c=P(()=>{if(!r)return[];let t=new Set(e);return t.add(`hub`),r.filter(e=>!t.has(e.nodeId))},[r,e]);if(a)return R(`section`,{className:`rounded-lg border border-border bg-surface p-6 text-xs text-muted-foreground animate-pulse`,children:`Loading persisted agent settings…`});let u=async e=>{await n({title:`Remove offline agent?`,message:`Drop the persisted orchestrator settings for "${e}". This won't affect a node that comes back online — it just clears stale addonDefaults so it stops cluttering the cluster view.`,confirmLabel:`Remove`,cancelLabel:`Keep`,variant:`danger`})&&o.mutate({agentNodeId:e})};return c.length===0?R(`section`,{className:`rounded-lg border border-border bg-surface p-6`,children:H(`div`,{className:`flex flex-col items-center gap-2 text-center text-muted-foreground`,children:[R(be,{className:`h-6 w-6 opacity-40`}),R(`p`,{className:`text-xs`,children:`No stale agent entries.`}),R(`p`,{className:`text-[11px] opacity-60`,children:`Every persisted nodeId matches a node currently online in the cluster.`})]})}):H(`section`,{className:`rounded-lg border border-border bg-surface`,children:[H(`header`,{className:`flex items-center gap-2 px-4 py-3 border-b border-border`,children:[R(be,{className:`h-4 w-4 text-muted-foreground`}),R(`h2`,{className:`text-sm font-semibold`,children:`Offline agents`}),H(`span`,{className:`ml-auto text-[11px] text-muted-foreground`,children:[c.length,` stale `,c.length===1?`entry`:`entries`]})]}),R(`p`,{className:`px-4 pt-3 text-[11px] text-muted-foreground`,children:`Persisted orchestrator settings for nodes not currently in the live topology. Remove entries you don't expect to come back — leftover from data-dir resets, env-driven nodeId changes, or decommissioned hosts.`}),R(`ul`,{className:`divide-y divide-border`,children:c.map(e=>{let t=Object.keys(e.settings.addonDefaults??{}).length,n=Object.values(e.settings.addonDefaults??{}).filter(e=>e?.enabled).length;return H(`li`,{className:`flex items-center gap-3 px-4 py-2 text-xs`,children:[R(`span`,{className:`font-mono text-foreground`,children:e.nodeId}),H(`span`,{className:`text-muted-foreground`,children:[t,` addons configured`,t>0&&H(U,{children:[` · `,n,` enabled`]})]}),H(`button`,{type:`button`,onClick:()=>{u(e.nodeId)},disabled:o.isPending,className:`ml-auto flex items-center gap-1 px-2 py-1 rounded text-destructive hover:bg-destructive/10 disabled:opacity-50`,children:[R(ge,{className:`h-3 w-3`}),`Remove`]})]},e.nodeId)})})]})}I();function Dp(e){let[t,n]=k(()=>typeof window<`u`?window.matchMedia(e).matches:!1);return N(()=>{let t=window.matchMedia(e),r=e=>n(e.matches);return t.addEventListener(`change`,r),()=>t.removeEventListener(`change`,r)},[e]),t}function Op(){let{data:e,isLoading:t}=f(void 0,{staleTime:1/0}),[n,r]=k(null);return E(`cluster.topology-snapshot`,e=>{let t=e.data?.nodes;Array.isArray(t)&&r(t)}),{nodes:P(()=>n??e??[],[n,e]),isLoading:t&&!n}}function kp(){let[e,t]=k(`diagram`),[n,r]=k(`topology`),a=Dp(`(max-width: 767px)`),o=a&&e===`diagram`?`table`:e,{nodes:s,isLoading:c}=Op(),l=s.filter(e=>e.isOnline).length,u=s.filter(e=>!e.isOnline).length,d=P(()=>s.map(e=>e.id??``).filter(Boolean),[s]),{data:f}=i(),p=P(()=>{if(!f)return 0;let e=new Set(d);return e.add(`hub`),f.filter(t=>!e.has(t.nodeId)).length},[f,d]),m=(n,r,i,a)=>H(`button`,{onClick:()=>t(n),className:`flex items-center gap-1.5 px-3 py-1.5 rounded-md text-xs font-medium transition-colors ${e===n?`bg-primary text-primary-foreground`:`text-muted-foreground hover:text-foreground`}`,children:[R(i,{className:`h-3.5 w-3.5`}),r,a!==void 0&&a>0&&R(`span`,{className:`ml-1 inline-flex h-4 min-w-[1rem] items-center justify-center rounded-full px-1 text-[10px] font-semibold ${e===n?`bg-primary-foreground/20 text-primary-foreground`:`bg-destructive/15 text-destructive`}`,children:a})]});return H(`div`,{className:`flex flex-col h-full gap-4 p-4`,children:[H(`div`,{className:`flex items-center justify-between gap-2 flex-wrap`,children:[H(`div`,{className:`flex items-center gap-2`,children:[l>0&&H(`span`,{className:`text-xs px-2 py-0.5 rounded-full bg-success/10 text-success`,children:[l,` online`]}),u>0&&H(`span`,{className:`text-xs px-2 py-0.5 rounded-full bg-destructive/10 text-destructive`,children:[u,` offline`]})]}),H(`div`,{className:`flex gap-0.5 p-1 rounded-lg bg-muted`,children:[!a&&m(`diagram`,`Diagram`,ue),m(`table`,`Table`,Ce),m(`offline-agents`,`Offline agents`,be,p)]})]}),o===`diagram`&&H(`div`,{className:`flex gap-1 p-1 rounded-lg bg-muted self-start`,children:[R(`button`,{type:`button`,onClick:()=>r(`topology`),className:`px-2 py-1 rounded text-xs ${n===`topology`?`bg-primary text-primary-foreground`:`text-muted-foreground`}`,children:`Topology`}),R(`button`,{type:`button`,onClick:()=>r(`capability-flow`),className:`px-2 py-1 rounded text-xs ${n===`capability-flow`?`bg-primary text-primary-foreground`:`text-muted-foreground`}`,children:`Capability Flow`})]}),c?R(`div`,{className:`flex items-center justify-center flex-1 text-muted-foreground`,children:`Loading cluster topology...`}):o===`diagram`?n===`topology`?R(at,{topology:s}):R(Tp,{}):o===`table`?R(`div`,{className:`flex-1 overflow-auto`,children:R(ze,{nodes:s})}):R(`div`,{className:`flex-1 overflow-auto`,children:R(Ep,{onlineNodeIds:d})})]})}export{kp as ClusterPage};
@@ -1 +1 @@
1
- import{O as e,fn as t,w as n}from"./src-C5tvi19O.js";import{F as r,G as i,U as a,X as o,b as s,x as c}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CK8iQdP1.js";import{t as l}from"./plus-DVpT3Ja2.js";import{S as u,i as d}from"./index-CAfPe666.js";o();var f=`camstack:dashboard-layout`,p={version:1,widgets:[]};function m(){try{let e=localStorage.getItem(f);if(!e)return p;let t=JSON.parse(e);return t&&t.version===1&&Array.isArray(t.widgets)?{version:1,widgets:t.widgets}:p}catch{return p}}function h(e){try{localStorage.setItem(f,JSON.stringify(e))}catch{}}function g(){let e=typeof crypto<`u`?crypto:void 0;return e?.randomUUID?e.randomUUID():`widget-${Date.now().toString(36)}-${Math.floor(Math.random()*1e6).toString(36)}`}function _(){let[t,n]=i(m),[o,u]=i(!1),d=e(),f=a(()=>d.filter(e=>e.hosts.includes(`dashboard`)),[d]),p=r(e=>{n(e),h(e)},[]),g=r(e=>{p({version:1,widgets:[...t.widgets,e]})},[t,p]),_=r(e=>{p({version:1,widgets:t.widgets.filter(t=>t.instanceId!==e)})},[t,p]);return c(`div`,{className:`p-4`,children:[c(`div`,{className:`flex items-center justify-between mb-4`,children:[s(`h1`,{className:`text-lg font-semibold text-foreground`,children:`Dashboard`}),c(`button`,{onClick:()=>u(!0),className:`flex items-center gap-1.5 rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90 transition-colors`,children:[s(l,{className:`h-3.5 w-3.5`}),`Add widget`]})]}),t.widgets.length===0?s(v,{onAdd:()=>u(!0)}):s(`div`,{className:`grid grid-cols-12 gap-3 auto-rows-[minmax(80px,_auto)]`,children:t.widgets.map(e=>s(y,{entry:e,onRemove:()=>_(e.instanceId)},e.instanceId))}),o&&s(x,{widgets:f,onClose:()=>u(!1),onAdd:e=>{g(e),u(!1)}})]})}function v({onAdd:e}){return c(`div`,{className:`flex flex-col items-center justify-center py-24 text-foreground-subtle`,children:[s(`div`,{className:`flex h-16 w-16 items-center justify-center rounded-2xl bg-surface border border-border mb-4`,children:s(u,{className:`h-8 w-8 text-foreground-subtle/40`})}),s(`p`,{className:`text-sm font-medium text-foreground/70`,children:`Your dashboard is empty`}),s(`p`,{className:`text-xs text-foreground-subtle mt-1 mb-4`,children:`Add widgets to monitor your cameras and system`}),c(`button`,{onClick:e,className:`flex items-center gap-1.5 rounded-lg bg-primary px-4 py-2 text-xs font-semibold text-primary-foreground shadow-md shadow-primary/20 hover:shadow-lg transition-all`,children:[s(l,{className:`h-3.5 w-3.5`}),`Add your first widget`]})]})}function y({entry:e,onRemove:t}){let r=b(e.columns),i=Math.max(1,Math.min(12,e.rows));return c(`div`,{className:`relative group rounded-lg border border-border bg-surface overflow-hidden flex flex-col`,style:{gridColumn:`span ${r} / span ${r}`,gridRow:`span ${i} / span ${i}`},children:[s(`button`,{type:`button`,onClick:t,title:`Remove widget`,className:`absolute right-1.5 top-1.5 z-10 inline-flex h-5 w-5 items-center justify-center rounded-md border border-border/60 bg-surface/80 text-foreground-subtle opacity-0 group-hover:opacity-100 hover:bg-danger/10 hover:text-danger hover:border-danger/40 transition-all`,children:s(d,{className:`h-3 w-3`})}),s(`div`,{className:`flex-1 min-h-0 overflow-auto p-2`,children:s(n,{widgetId:e.widgetId,host:`dashboard`,instanceId:e.instanceId,config:e.config,deviceId:e.deviceId,size:e.size,columns:e.columns,rows:e.rows})})]})}function b(e){return!Number.isFinite(e)||e<1?6:Math.min(12,Math.floor(e))}function x({widgets:e,onClose:t,onAdd:n}){let[r,a]=i(null);return s(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm`,onClick:t,children:c(`div`,{className:`w-full max-w-2xl rounded-xl border border-border bg-surface p-5 shadow-2xl shadow-black/20`,onClick:e=>e.stopPropagation(),children:[c(`div`,{className:`flex items-center justify-between mb-4`,children:[s(`h2`,{className:`text-sm font-semibold text-foreground`,children:r?`Configure: ${r.label}`:`Add widget`}),s(`button`,{onClick:t,className:`p-1 rounded-md hover:bg-surface-hover text-foreground-subtle hover:text-foreground transition-colors`,children:s(d,{className:`h-4 w-4`})})]}),r===null?s(S,{widgets:e,onSelect:a}):s(C,{widget:r,onCancel:()=>a(null),onAdd:n})]})})}function S({widgets:e,onSelect:t}){return e.length===0?s(`div`,{className:`text-center py-8 text-xs text-foreground-subtle italic`,children:`No dashboard-host widgets registered. Make sure the contributing addons are enabled and have rebuilt their widget bundles.`}):s(`div`,{className:`grid grid-cols-2 gap-2 max-h-96 overflow-auto`,children:e.map(e=>c(`button`,{onClick:()=>t(e),className:`flex flex-col rounded-lg border border-border p-3 text-left hover:bg-surface-hover hover:border-primary/30 transition-all group`,children:[s(`span`,{className:`text-xs font-medium text-foreground block`,children:e.label}),s(`span`,{className:`text-[10px] text-foreground-subtle truncate`,title:e.widgetId,children:e.widgetId}),e.description&&s(`span`,{className:`text-[10px] text-foreground-subtle mt-1 line-clamp-2`,children:e.description})]},e.widgetId))})}function C({widget:e,onCancel:n,onAdd:r}){let[a,o]=i(e.defaultSize),[l,u]=i(e.defaultColumns),[d,f]=i(e.defaultRows),[p,m]=i(null),{data:h}=t({},{enabled:e.requires.deviceContext}),_=!e.requires.deviceContext||p!==null&&p>0;return c(`div`,{className:`space-y-3`,children:[c(`div`,{children:[s(`label`,{className:`block text-[11px] font-medium text-foreground-subtle mb-1`,children:`Size`}),s(`div`,{className:`flex items-center gap-1`,children:e.allowedSizes.map(e=>s(`button`,{onClick:()=>o(e),className:`px-3 py-1 rounded-md text-[11px] font-medium border transition-colors ${a===e?`bg-primary/10 text-primary border-primary/30`:`border-border text-foreground-subtle hover:bg-surface-hover hover:text-foreground`}`,children:e.toUpperCase()},e))})]}),c(`div`,{className:`grid grid-cols-2 gap-3`,children:[s(w,{label:`Columns (1-12)`,value:l,min:1,max:12,onChange:u}),s(w,{label:`Rows (1-12)`,value:d,min:1,max:12,onChange:f})]}),e.requires.deviceContext&&c(`div`,{children:[s(`label`,{className:`block text-[11px] font-medium text-foreground-subtle mb-1`,children:`Device`}),c(`select`,{value:p??``,onChange:e=>m(e.target.value===``?null:Number(e.target.value)),className:`w-full rounded-md border border-border bg-surface px-2 py-1.5 text-foreground text-xs focus:border-primary outline-none`,children:[s(`option`,{value:``,children:`— select a device —`}),(h??[]).map(e=>c(`option`,{value:e.id,children:[e.name??e.stableId,` (#`,e.id,`)`]},e.id))]})]}),c(`div`,{className:`flex items-center justify-end gap-2 pt-2 border-t border-border`,children:[s(`button`,{onClick:n,className:`px-3 py-1.5 rounded-md text-xs font-medium border border-border text-foreground-subtle hover:bg-surface-hover hover:text-foreground transition-colors`,children:`Back`}),s(`button`,{disabled:!_,onClick:()=>{_&&r({instanceId:g(),widgetId:e.widgetId,size:a,columns:l,rows:d,...e.requires.deviceContext&&p!==null?{deviceId:p}:{}})},className:`px-3 py-1.5 rounded-md text-xs font-medium bg-primary text-primary-foreground hover:bg-primary/90 disabled:opacity-50 disabled:cursor-not-allowed transition-colors`,children:`Add to dashboard`})]})]})}function w({label:e,value:t,min:n,max:r,onChange:i}){return c(`div`,{children:[s(`label`,{className:`block text-[11px] font-medium text-foreground-subtle mb-1`,children:e}),s(`input`,{type:`number`,min:n,max:r,value:t,onChange:e=>{let t=Number(e.target.value);Number.isFinite(t)&&i(Math.max(n,Math.min(r,Math.floor(t))))},className:`w-full rounded-md border border-border bg-surface px-2 py-1.5 text-foreground text-xs focus:border-primary outline-none`})]})}function T(){return s(_,{})}export{T as DashboardPage};
1
+ import{O as e,dn as t,w as n}from"./src-Dxc7AUYA.js";import{F as r,G as i,U as a,X as o,b as s,x as c}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CK8iQdP1.js";import{t as l}from"./plus-CPqVcqUV.js";import{S as u,i as d}from"./index-DpTstpp_.js";o();var f=`camstack:dashboard-layout`,p={version:1,widgets:[]};function m(){try{let e=localStorage.getItem(f);if(!e)return p;let t=JSON.parse(e);return t&&t.version===1&&Array.isArray(t.widgets)?{version:1,widgets:t.widgets}:p}catch{return p}}function h(e){try{localStorage.setItem(f,JSON.stringify(e))}catch{}}function g(){let e=typeof crypto<`u`?crypto:void 0;return e?.randomUUID?e.randomUUID():`widget-${Date.now().toString(36)}-${Math.floor(Math.random()*1e6).toString(36)}`}function _(){let[t,n]=i(m),[o,u]=i(!1),d=e(),f=a(()=>d.filter(e=>e.hosts.includes(`dashboard`)),[d]),p=r(e=>{n(e),h(e)},[]),g=r(e=>{p({version:1,widgets:[...t.widgets,e]})},[t,p]),_=r(e=>{p({version:1,widgets:t.widgets.filter(t=>t.instanceId!==e)})},[t,p]);return c(`div`,{className:`p-4`,children:[c(`div`,{className:`flex items-center justify-between mb-4`,children:[s(`h1`,{className:`text-lg font-semibold text-foreground`,children:`Dashboard`}),c(`button`,{onClick:()=>u(!0),className:`flex items-center gap-1.5 rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90 transition-colors`,children:[s(l,{className:`h-3.5 w-3.5`}),`Add widget`]})]}),t.widgets.length===0?s(v,{onAdd:()=>u(!0)}):s(`div`,{className:`grid grid-cols-12 gap-3 auto-rows-[minmax(80px,_auto)]`,children:t.widgets.map(e=>s(y,{entry:e,onRemove:()=>_(e.instanceId)},e.instanceId))}),o&&s(x,{widgets:f,onClose:()=>u(!1),onAdd:e=>{g(e),u(!1)}})]})}function v({onAdd:e}){return c(`div`,{className:`flex flex-col items-center justify-center py-24 text-foreground-subtle`,children:[s(`div`,{className:`flex h-16 w-16 items-center justify-center rounded-2xl bg-surface border border-border mb-4`,children:s(u,{className:`h-8 w-8 text-foreground-subtle/40`})}),s(`p`,{className:`text-sm font-medium text-foreground/70`,children:`Your dashboard is empty`}),s(`p`,{className:`text-xs text-foreground-subtle mt-1 mb-4`,children:`Add widgets to monitor your cameras and system`}),c(`button`,{onClick:e,className:`flex items-center gap-1.5 rounded-lg bg-primary px-4 py-2 text-xs font-semibold text-primary-foreground shadow-md shadow-primary/20 hover:shadow-lg transition-all`,children:[s(l,{className:`h-3.5 w-3.5`}),`Add your first widget`]})]})}function y({entry:e,onRemove:t}){let r=b(e.columns),i=Math.max(1,Math.min(12,e.rows));return c(`div`,{className:`relative group rounded-lg border border-border bg-surface overflow-hidden flex flex-col`,style:{gridColumn:`span ${r} / span ${r}`,gridRow:`span ${i} / span ${i}`},children:[s(`button`,{type:`button`,onClick:t,title:`Remove widget`,className:`absolute right-1.5 top-1.5 z-10 inline-flex h-5 w-5 items-center justify-center rounded-md border border-border/60 bg-surface/80 text-foreground-subtle opacity-0 group-hover:opacity-100 hover:bg-danger/10 hover:text-danger hover:border-danger/40 transition-all`,children:s(d,{className:`h-3 w-3`})}),s(`div`,{className:`flex-1 min-h-0 overflow-auto p-2`,children:s(n,{widgetId:e.widgetId,host:`dashboard`,instanceId:e.instanceId,config:e.config,deviceId:e.deviceId,size:e.size,columns:e.columns,rows:e.rows})})]})}function b(e){return!Number.isFinite(e)||e<1?6:Math.min(12,Math.floor(e))}function x({widgets:e,onClose:t,onAdd:n}){let[r,a]=i(null);return s(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm`,onClick:t,children:c(`div`,{className:`w-full max-w-2xl rounded-xl border border-border bg-surface p-5 shadow-2xl shadow-black/20`,onClick:e=>e.stopPropagation(),children:[c(`div`,{className:`flex items-center justify-between mb-4`,children:[s(`h2`,{className:`text-sm font-semibold text-foreground`,children:r?`Configure: ${r.label}`:`Add widget`}),s(`button`,{onClick:t,className:`p-1 rounded-md hover:bg-surface-hover text-foreground-subtle hover:text-foreground transition-colors`,children:s(d,{className:`h-4 w-4`})})]}),r===null?s(S,{widgets:e,onSelect:a}):s(C,{widget:r,onCancel:()=>a(null),onAdd:n})]})})}function S({widgets:e,onSelect:t}){return e.length===0?s(`div`,{className:`text-center py-8 text-xs text-foreground-subtle italic`,children:`No dashboard-host widgets registered. Make sure the contributing addons are enabled and have rebuilt their widget bundles.`}):s(`div`,{className:`grid grid-cols-2 gap-2 max-h-96 overflow-auto`,children:e.map(e=>c(`button`,{onClick:()=>t(e),className:`flex flex-col rounded-lg border border-border p-3 text-left hover:bg-surface-hover hover:border-primary/30 transition-all group`,children:[s(`span`,{className:`text-xs font-medium text-foreground block`,children:e.label}),s(`span`,{className:`text-[10px] text-foreground-subtle truncate`,title:e.widgetId,children:e.widgetId}),e.description&&s(`span`,{className:`text-[10px] text-foreground-subtle mt-1 line-clamp-2`,children:e.description})]},e.widgetId))})}function C({widget:e,onCancel:n,onAdd:r}){let[a,o]=i(e.defaultSize),[l,u]=i(e.defaultColumns),[d,f]=i(e.defaultRows),[p,m]=i(null),{data:h}=t({},{enabled:e.requires.deviceContext}),_=!e.requires.deviceContext||p!==null&&p>0;return c(`div`,{className:`space-y-3`,children:[c(`div`,{children:[s(`label`,{className:`block text-[11px] font-medium text-foreground-subtle mb-1`,children:`Size`}),s(`div`,{className:`flex items-center gap-1`,children:e.allowedSizes.map(e=>s(`button`,{onClick:()=>o(e),className:`px-3 py-1 rounded-md text-[11px] font-medium border transition-colors ${a===e?`bg-primary/10 text-primary border-primary/30`:`border-border text-foreground-subtle hover:bg-surface-hover hover:text-foreground`}`,children:e.toUpperCase()},e))})]}),c(`div`,{className:`grid grid-cols-2 gap-3`,children:[s(w,{label:`Columns (1-12)`,value:l,min:1,max:12,onChange:u}),s(w,{label:`Rows (1-12)`,value:d,min:1,max:12,onChange:f})]}),e.requires.deviceContext&&c(`div`,{children:[s(`label`,{className:`block text-[11px] font-medium text-foreground-subtle mb-1`,children:`Device`}),c(`select`,{value:p??``,onChange:e=>m(e.target.value===``?null:Number(e.target.value)),className:`w-full rounded-md border border-border bg-surface px-2 py-1.5 text-foreground text-xs focus:border-primary outline-none`,children:[s(`option`,{value:``,children:`— select a device —`}),(h??[]).map(e=>c(`option`,{value:e.id,children:[e.name??e.stableId,` (#`,e.id,`)`]},e.id))]})]}),c(`div`,{className:`flex items-center justify-end gap-2 pt-2 border-t border-border`,children:[s(`button`,{onClick:n,className:`px-3 py-1.5 rounded-md text-xs font-medium border border-border text-foreground-subtle hover:bg-surface-hover hover:text-foreground transition-colors`,children:`Back`}),s(`button`,{disabled:!_,onClick:()=>{_&&r({instanceId:g(),widgetId:e.widgetId,size:a,columns:l,rows:d,...e.requires.deviceContext&&p!==null?{deviceId:p}:{}})},className:`px-3 py-1.5 rounded-md text-xs font-medium bg-primary text-primary-foreground hover:bg-primary/90 disabled:opacity-50 disabled:cursor-not-allowed transition-colors`,children:`Add to dashboard`})]})]})}function w({label:e,value:t,min:n,max:r,onChange:i}){return c(`div`,{children:[s(`label`,{className:`block text-[11px] font-medium text-foreground-subtle mb-1`,children:e}),s(`input`,{type:`number`,min:n,max:r,value:t,onChange:e=>{let t=Number(e.target.value);Number.isFinite(t)&&i(Math.max(n,Math.min(r,Math.floor(t))))},className:`w-full rounded-md border border-border bg-surface px-2 py-1.5 text-foreground text-xs focus:border-primary outline-none`})]})}function T(){return s(_,{})}export{T as DashboardPage};