minerva-design 1.6.0 → 1.7.0

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 (120) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/charts/engine/data.cjs +1 -1
  3. package/dist/charts/engine/data.cjs.map +1 -1
  4. package/dist/charts/engine/data.d.cts +2 -0
  5. package/dist/charts/engine/data.d.ts +2 -0
  6. package/dist/charts/engine/data.js +6 -4
  7. package/dist/charts/engine/data.js.map +1 -1
  8. package/dist/charts/engine/defaults.cjs +1 -1
  9. package/dist/charts/engine/defaults.cjs.map +1 -1
  10. package/dist/charts/engine/defaults.js +22 -18
  11. package/dist/charts/engine/defaults.js.map +1 -1
  12. package/dist/charts/engine/graph/chart.cjs +1 -1
  13. package/dist/charts/engine/graph/chart.cjs.map +1 -1
  14. package/dist/charts/engine/graph/chart.js +532 -493
  15. package/dist/charts/engine/graph/chart.js.map +1 -1
  16. package/dist/charts/engine/graph/geometry.cjs +1 -1
  17. package/dist/charts/engine/graph/geometry.cjs.map +1 -1
  18. package/dist/charts/engine/graph/geometry.d.cts +12 -2
  19. package/dist/charts/engine/graph/geometry.d.ts +12 -2
  20. package/dist/charts/engine/graph/geometry.js +35 -31
  21. package/dist/charts/engine/graph/geometry.js.map +1 -1
  22. package/dist/charts/engine/model.cjs +1 -1
  23. package/dist/charts/engine/model.cjs.map +1 -1
  24. package/dist/charts/engine/model.js +95 -74
  25. package/dist/charts/engine/model.js.map +1 -1
  26. package/dist/charts/engine/orderbook/field.cjs +1 -1
  27. package/dist/charts/engine/orderbook/field.cjs.map +1 -1
  28. package/dist/charts/engine/orderbook/field.d.cts +15 -2
  29. package/dist/charts/engine/orderbook/field.d.ts +15 -2
  30. package/dist/charts/engine/orderbook/field.js +21 -9
  31. package/dist/charts/engine/orderbook/field.js.map +1 -1
  32. package/dist/charts/engine/orderbook/heatmap.cjs +1 -1
  33. package/dist/charts/engine/orderbook/heatmap.cjs.map +1 -1
  34. package/dist/charts/engine/orderbook/heatmap.d.cts +29 -0
  35. package/dist/charts/engine/orderbook/heatmap.d.ts +29 -0
  36. package/dist/charts/engine/orderbook/heatmap.js +576 -453
  37. package/dist/charts/engine/orderbook/heatmap.js.map +1 -1
  38. package/dist/charts/engine/orderbook/types.d.cts +36 -11
  39. package/dist/charts/engine/orderbook/types.d.ts +36 -11
  40. package/dist/charts/engine/presets.cjs +1 -1
  41. package/dist/charts/engine/presets.cjs.map +1 -1
  42. package/dist/charts/engine/presets.d.cts +16 -3
  43. package/dist/charts/engine/presets.d.ts +16 -3
  44. package/dist/charts/engine/presets.js +42 -32
  45. package/dist/charts/engine/presets.js.map +1 -1
  46. package/dist/charts/engine/scene.cjs +1 -1
  47. package/dist/charts/engine/scene.cjs.map +1 -1
  48. package/dist/charts/engine/scene.d.cts +4 -2
  49. package/dist/charts/engine/scene.d.ts +4 -2
  50. package/dist/charts/engine/scene.js +185 -107
  51. package/dist/charts/engine/scene.js.map +1 -1
  52. package/dist/charts/engine/three-d/oit.cjs +119 -34
  53. package/dist/charts/engine/three-d/oit.cjs.map +1 -1
  54. package/dist/charts/engine/three-d/oit.d.cts +65 -10
  55. package/dist/charts/engine/three-d/oit.d.ts +65 -10
  56. package/dist/charts/engine/three-d/oit.js +119 -34
  57. package/dist/charts/engine/three-d/oit.js.map +1 -1
  58. package/dist/charts/engine/three-d/render-types.cjs.map +1 -1
  59. package/dist/charts/engine/three-d/render-types.d.cts +19 -0
  60. package/dist/charts/engine/three-d/render-types.d.ts +19 -0
  61. package/dist/charts/engine/three-d/render-types.js.map +1 -1
  62. package/dist/charts/engine/three-d/shaders.cjs +14 -6
  63. package/dist/charts/engine/three-d/shaders.cjs.map +1 -1
  64. package/dist/charts/engine/three-d/shaders.d.cts +6 -1
  65. package/dist/charts/engine/three-d/shaders.d.ts +6 -1
  66. package/dist/charts/engine/three-d/shaders.js +40 -26
  67. package/dist/charts/engine/three-d/shaders.js.map +1 -1
  68. package/dist/charts/engine/three-d/webgl.cjs +1 -1
  69. package/dist/charts/engine/three-d/webgl.cjs.map +1 -1
  70. package/dist/charts/engine/three-d/webgl.js +167 -125
  71. package/dist/charts/engine/three-d/webgl.js.map +1 -1
  72. package/dist/charts/engine/three-d/webgpu.cjs +1 -1
  73. package/dist/charts/engine/three-d/webgpu.cjs.map +1 -1
  74. package/dist/charts/engine/three-d/webgpu.js +169 -140
  75. package/dist/charts/engine/three-d/webgpu.js.map +1 -1
  76. package/dist/charts/engine/trading/chart.cjs +1 -1
  77. package/dist/charts/engine/trading/chart.cjs.map +1 -1
  78. package/dist/charts/engine/trading/chart.js +1149 -1023
  79. package/dist/charts/engine/trading/chart.js.map +1 -1
  80. package/dist/charts/engine/trading/labels.cjs +1 -1
  81. package/dist/charts/engine/trading/labels.cjs.map +1 -1
  82. package/dist/charts/engine/trading/labels.js +12 -0
  83. package/dist/charts/engine/trading/labels.js.map +1 -1
  84. package/dist/charts/engine/trading/layout.cjs +2 -0
  85. package/dist/charts/engine/trading/layout.cjs.map +1 -0
  86. package/dist/charts/engine/trading/layout.d.cts +37 -0
  87. package/dist/charts/engine/trading/layout.d.ts +37 -0
  88. package/dist/charts/engine/trading/layout.js +63 -0
  89. package/dist/charts/engine/trading/layout.js.map +1 -0
  90. package/dist/charts/engine/trading/types.d.cts +24 -7
  91. package/dist/charts/engine/trading/types.d.ts +24 -7
  92. package/dist/charts/engine/types.d.cts +21 -8
  93. package/dist/charts/engine/types.d.ts +21 -8
  94. package/dist/core/contracts.cjs +1 -1
  95. package/dist/core/contracts.cjs.map +1 -1
  96. package/dist/core/contracts.js +1 -1
  97. package/dist/core/contracts.js.map +1 -1
  98. package/dist/native/charts/src/engine/data.cjs +1 -1
  99. package/dist/native/charts/src/engine/data.cjs.map +1 -1
  100. package/dist/native/charts/src/engine/data.js +6 -4
  101. package/dist/native/charts/src/engine/data.js.map +1 -1
  102. package/dist/native/charts/src/engine/model.cjs +1 -1
  103. package/dist/native/charts/src/engine/model.cjs.map +1 -1
  104. package/dist/native/charts/src/engine/model.js +104 -83
  105. package/dist/native/charts/src/engine/model.js.map +1 -1
  106. package/dist/native/charts/src/engine/presets.cjs +1 -1
  107. package/dist/native/charts/src/engine/presets.cjs.map +1 -1
  108. package/dist/native/charts/src/engine/presets.js +42 -32
  109. package/dist/native/charts/src/engine/presets.js.map +1 -1
  110. package/dist/native/charts/src/engine/scene.cjs +1 -1
  111. package/dist/native/charts/src/engine/scene.cjs.map +1 -1
  112. package/dist/native/charts/src/engine/scene.js +185 -107
  113. package/dist/native/charts/src/engine/scene.js.map +1 -1
  114. package/dist/taro/index.js +1263 -1152
  115. package/dist/vue/components/Chart/OrderBookHeatmap.vue.d.ts +11 -0
  116. package/dist/vue/components/Chart/orderbook.d.ts +7 -0
  117. package/dist/vue/components/Chart/orderbook.js +2 -0
  118. package/dist/vue/components/Chart/orderbook.js.map +1 -1
  119. package/dist/weapp/charts/canvas.js +234 -58
  120. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- const e=require("../color.cjs"),t=require("../renderers/types.cjs"),n=require("../locale.cjs"),r=require("../renderers/detect.cjs"),i=require("../renderers/follow.cjs"),a=require("../theme.cjs"),o=require("./force.cjs"),s=require("./circular.cjs"),c=require("./dag.cjs"),l=require("./dom.cjs"),u=require("./geometry.cjs"),d=require("./labels.cjs"),f=require("./model.cjs"),p=require("./sizing.cjs"),m=require("./tree.cjs"),h=require("./worker.cjs");var g=[`force`,`dag`,`tree`,`radial`,`mindmap`,`org`,`circular`,`arc`,`none`],_=new Set([`tree`,`radial`,`mindmap`,`org`]),v=5e3,y=.4,ee=2e3,b=450,te=320,x=9,ne=1.25,re=1.4,ie=(e,t,n)=>{let r=t===1?e*16:t===2?e*400:e;return Math.exp(Math.max(-1,Math.min(1,r*(n?.01:.0025))))},S=e=>e<.5?4*e*e*e:1-(-2*e+2)**3/2,ae=()=>{let e=new Float32Array(1024),t=0,n=n=>{if(t+n<=e.length)return;let r=new Float32Array(Math.max(e.length*2,t+n));r.set(e.subarray(0,t)),e=r};return{push(r,i){n(2),e[t++]=r,e[t++]=i},pushAll(r){n(r.length);for(let n=0;n<r.length;n++)e[t++]=r[n]},count:()=>t/2,points:()=>e.subarray(0,t)}},oe=e=>e&&g.includes(e)?e:`force`,se=e=>JSON.stringify([oe(e.layout),e.direction??``,e.force??null,e.dag?{...e.dag,criticalPath:void 0,criticalColor:void 0}:null,e.tree??null,e.circular??null,e.nodeSize??null,e.nodeShape??null,e.nodeLabels===!1]),ce=(g,ce)=>{let C=g.ownerDocument,ue=C.defaultView,w=l.createGraphDom(g),T=w.stage,E=ce,D=a.readTheme(w.root,E.palette),de=le(D),O=d.graphLocale(E.locale,E.labels),k=!1,fe=new Map,pe=(e,t)=>{fe.get(e)?.forEach(e=>e(t))},me=e=>!!fe.get(e)?.size,he=typeof ue?.matchMedia==`function`?ue.matchMedia(`(prefers-reduced-motion: reduce)`):null,ge=()=>ue?.performance?.now()??Date.now(),A=f.buildModel(E.nodes??[],E.edges??[],E.groups),j=oe(E.layout),_e=`TB`,ve=se(E),M,N=new Float64Array,P=new Float64Array,F=new Float64Array,ye=new Float64Array,be=new Float64Array,xe=new Float64Array,I=new Uint8Array,Se=null,Ce=null,we=1,L=null,Te=null,Ee=null,R=null,De=!1,z=new Set,Oe=new Set,ke=null,Ae=new Int32Array,je=[],Me=!0,Ne=0,B=!0,Pe=[],Fe=0,V=[],Ie=[],Le=new Float64Array,Re=new Uint8Array,ze=new Uint8Array,Be=[],Ve=[.94,.27,.27,1],He=new Float64Array,H=1,U=0,W=0,Ue=null,We=!1,Ge=!0,Ke=!1,qe=!1,Je=!1,G=0,K=0,q=null,J=-1,Ye=!1,Y=new Set,Xe=null,Ze=``,X=null,Qe=0,$e=()=>{},et=new Promise(e=>{$e=e}),tt=0,nt=()=>{let e=E.interaction;if(e===!1)return null;let t=typeof e==`object`?e:{};return{pan:t.pan??!0,zoom:t.zoom??!0,wheel:t.wheel??`modifier`,drag:t.drag??(j===`force`||j===`none`||j===`circular`),select:t.select??!0,keyboard:t.keyboard??!0,zoomRange:t.zoomRange??[.02,8]}},rt=()=>_.has(j),it=()=>rt()&&E.tree?.collapsible!==!1,at=()=>{let e=E.animation;return e===!1||he?.matches?0:typeof e==`number`&&e>=0?e:b},ot=()=>E.highlight??(j===`dag`?`lineage`:`neighbors`),st=()=>{let e=E.edgeStyle,t=j===`dag`||rt();if(e===`straight`||e===`curve`||(e===`spline`||e===`orthogonal`)&&t)return e;if(e)return`curve`;switch(j){case`dag`:case`tree`:case`radial`:case`mindmap`:return`spline`;case`org`:return`orthogonal`;case`circular`:case`arc`:return`curve`;default:return`straight`}},ct=(t,n)=>{let r=D.resolve?D.resolve(t,n):e.parseColor(t)??n;return r[3]<1?e.mix(D.background,[r[0],r[1],r[2],1],r[3]):r},lt=w.foreground.getContext(`2d`),ut=(e,t)=>lt?(lt.font=t,lt.measureText(e).width):e.length*7,dt=()=>{let e=new Map;if(N.length!==A.n)return e;for(let t=0;t<A.n;t++)Number.isFinite(N[t])&&e.set(A.nodes[t].id,{x:N[t],y:P[t],visible:!!I[t]&&!De});return e},ft=()=>{R?.destroy(),R=null,De=!1},pt=()=>{let e=new Set;for(let t of z){let n=A.index.get(t);n!==void 0&&e.add(n)}return e},mt=(e,t,n,r)=>{let i=E.tree??{};return{n:A.n,source:A.source,target:A.target,width:t,height:n,type:e,direction:_e,root:i.root===void 0?-1:A.index.get(i.root)??-1,levelGap:r,siblingGap:i.siblingGap??(e===`org`?20:e===`mindmap`?10:12),collapsed:pt(),compact:i.compact}},ht=(e,t=!0)=>{Je=t;let n=A.n,r=new Float64Array(n).fill(NaN),i=new Float64Array(n).fill(NaN),a=new Uint8Array(n),s=0;for(let t=0;t<n;t++){let n=A.nodes[t],o=e.get(n.id);o?(r[t]=o.x,i[t]=o.y,s++):Number.isFinite(n.x)&&Number.isFinite(n.y)&&(r[t]=n.x,i[t]=n.y,s++),n.fixed&&Number.isFinite(n.x)&&Number.isFinite(n.y)&&(r[t]=n.x,i[t]=n.y,a[t]=1)}if(s&&s<n){for(let e=0;e<n;e++)if(!Number.isFinite(r[e]))for(let t=A.adjStart[e];t<A.adjStart[e+1];t++){let n=A.adjEdge[t],a=A.source[n]===e?A.target[n]:A.source[n];if(Number.isFinite(r[a])){r[e]=r[a]+e*7919%17-8,i[e]=i[a]+e*104729%17-8;break}}}let c=new Float64Array(n);for(let e=0;e<n;e++)c[e]=Math.max(M.width[e],M.height[e])/2;let l=A.edgeValueRange,u=new Float64Array(A.m).fill(1);if(l){let e=(l[0]+l[1])/2||1;A.edges.forEach((t,n)=>{let r=t.value;Number.isFinite(r)&&r>0&&(u[n]=Math.max(.5,Math.min(2,Math.sqrt(r/e))))})}let d=s===0?1:s===n?.3:.6,f=T.clientWidth,p=T.clientHeight,m=o.forceInit(n,A.source,A.target,E.force,{x:r,y:i,radius:c,fixed:a,weight:u,alpha:d,aspect:f>0&&p>0?f/p:1}),g=E.force??{},_=g.animate!==!1,v=g.worker??`auto`,y=v===!0||v===`auto`&&n>=2e3;if(N=r,P=i,F=r,ye=i,!_&&!y){let e=o.forceKernel()(m);for(;e.tick(50););e.settle(),gt();return}De=!_,R=h.createForceRunner(m,{worker:y,stream:_,now:ge,onTick:()=>{Me=!0,Q()},onEnd:()=>{let e=De;De=!1,Me=!0,!We&&Je&&(Ge=!0,Ke=!e),Je=!1,gt(),Q()}})},gt=()=>{Promise.resolve().then(()=>{k||pe(`layoutEnd`,{layout:j})})},_t=(e,t)=>{ft();let n=j;j=oe(E.layout),_e=E.direction??(j===`tree`?`LR`:`TB`),n!==j&&(Ge=!0);let r=A.n;L=null,Te=null,Ee=null;let i=null;if(j===`mindmap`){let e=new Float64Array(r).fill(1);i=m.tidyTreeLayout(mt(`mindmap`,e,e,1)).depth}M=p.computeSizing(A,j,E,i,ut,D.fontFamily);let a=new Uint8Array(r).fill(1),o=new Float64Array(r),l=new Float64Array(r);switch(j){case`dag`:{let e=E.dag??{};Te=c.layeredLayout({n:r,source:A.source,target:A.target,width:M.width,height:M.height,direction:_e,layerGap:e.layerGap??56,nodeGap:e.nodeGap??24,sweeps:e.sweeps??8}),o=Te.x,l=Te.y;break}case`tree`:case`radial`:case`mindmap`:case`org`:{let e=j,t=E.tree?.levelGap??Math.max(m.TREE_LEVEL_GAP[e],M.levelGap);L=m.tidyTreeLayout(mt(e,M.layoutWidth,M.layoutHeight,t)),o=L.x,l=L.y,a.set(L.visible);break}case`circular`:case`arc`:{let e=0;for(let t=0;t<r;t++)e=Math.max(e,M.layoutWidth[t]+(j===`arc`?8:10));let t={n:r,source:A.source,target:A.target,group:A.groupOf,order:E.circular?.order??`group`,spacing:Math.max(j===`arc`?16:18,e)};Ee=j===`arc`?s.arcPositions(t):s.circularPositions(t),o=Ee.x,l=Ee.y;break}case`none`:A.nodes.forEach((t,n)=>{let r=e.get(t.id);o[n]=Number.isFinite(t.x)?t.x:r?.x??0,l[n]=Number.isFinite(t.y)?t.y:r?.y??0})}let u=new Uint8Array(r);for(let t=0;t<r;t++)u[t]=+!!e.get(A.nodes[t].id)?.visible;if(I=a,Ae=vt(),j===`force`)ht(e),Ce=null,Se=null;else{F=o,ye=l,N=new Float64Array(r),P=new Float64Array(r);let n=t&&e.size?at():0;if(n>0){be=new Float64Array(r),xe=new Float64Array(r);for(let t=0;t<r;t++){let n=e.get(A.nodes[t].id);if(n&&n.visible){be[t]=n.x,xe[t]=n.y;continue}let r=L?L.parent[t]:-1,i;for(;r>=0&&!(i=e.get(A.nodes[r].id))?.visible;)r=L.parent[r];be[t]=i?.visible?i.x:F[t],xe[t]=i?.visible?i.y:ye[t]}N.set(be),P.set(xe),Se=u,Ce={start:ge(),duration:n},we=0}else N.set(F),P.set(ye),Ce=null,Se=null}We||(Ge=!0,Ke=e.size>0&&t&&j!==`force`),yt(),bt(),He=new Float64Array(A.m).fill(NaN),on=null,Me=!0,B=!0,Ze=``,Zt(),Yt(),Q(),j!==`force`&&gt()},vt=()=>{let e=new Int32Array(A.n);if(!L)return e;let t=[];L.parent.forEach((e,n)=>{e<0&&t.push(n)});for(let e=0;e<t.length;e++)t.push(...L.children[t[e]]);for(let n=t.length-1;n>=0;n--){let r=t[n],i=L.parent[r];i>=0&&(e[i]+=e[r]+1)}return e},yt=()=>{ke=null;let e=E.dag?.criticalPath;if(!e||j!==`dag`)return;let t=new Uint8Array(A.n),n=new Uint8Array(A.m);if(e===!0){let e=c.longestPath(A.n,A.source,A.target,e=>{let t=A.nodes[e].value;return Number.isFinite(t)&&t>=0?t:1});e.nodes.forEach(e=>t[e]=1),e.edges.forEach(e=>n[e]=1)}else{let r=e.map(e=>A.index.get(e)??-1);r.forEach(e=>{e>=0&&(t[e]=1)});for(let e=0;e<A.m;e++){let t=r.indexOf(A.source[e]);t>=0&&r[t+1]===A.target[e]&&(n[e]=1)}}ke={nodes:t,edges:n}},bt=()=>{let t=D.background;de=le(D);let n=D.palette.length?D.palette:[D.primary];Be=A.groups.map((e,t)=>e.color?ct(e.color,n[t%n.length]):n[t%n.length]),Ve=ct(E.dag?.criticalColor??`var(--danger-color, #ef4444)`,[.94,.27,.27,1]);let r=new Int32Array(A.n).fill(-1);if(j===`mindmap`&&L){let e=[];L.parent.forEach((t,n)=>t<0&&e.push(n)),(e.length?[...L.children[e[0]],...e.slice(1)]:[]).forEach((e,t)=>{let n=[e];for(;n.length;){let e=n.pop();r[e]=t,n.push(...L.children[e])}})}V=A.nodes.map((e,t)=>{if(e.color)return ct(e.color,D.primary);let i=A.groupOf[t];return i>=0?Be[i]:r[t]>=0?n[(r[t]+1)%n.length]:D.primary});let i=e.mix(t,D.textMuted,de?.42:.36),a=E.edgeColor??`neutral`,o=E.edgeWidth,s=A.edgeValueRange,[c,l]=Array.isArray(o)?o:typeof o==`number`?[o,o]:s&&s[1]>s[0]?[1,5]:[1.25,1.25];Ie=[],Le=new Float64Array(A.m),Re=new Uint8Array(A.m),ze=new Uint8Array(A.m);let u=E.arrows??j===`dag`;A.edges.forEach((n,r)=>{let d=A.source[r],f=A.target[r],p=i;n.color?p=ct(n.color,i):a===`source`?p=e.mix(t,V[d],.55):a===`target`?p=e.mix(t,V[f],.55):j===`mindmap`&&(p=e.mix(t,V[f],.7)),Ie.push(p);let m=c;Number.isFinite(n.width)&&n.width>0?m=n.width:s&&s[1]>s[0]&&Number.isFinite(n.value)?m=c+(l-c)*Math.sqrt((n.value-s[0])/(s[1]-s[0])):j===`mindmap`&&L&&o===void 0&&(m=Math.max(1.25,3.4-L.depth[f]*.75)),Le[r]=m,Re[r]=n.directed??u?1:0,ze[r]=+!!n.dashed}),B=!0},Z=e=>{if(De)return 0;let t=A.groupOf[e];if(t>=0&&Oe.has(A.groups[t].id))return 0;let n=I[e],r=Se?Se[e]:n;return Ce?n&&r?1:n?we:r?1-we:0:n},xt=e=>M.kind[e]!==p.NodeKind.Circle,St=(e,t,n)=>t?[N[e],P[e]+n*M.height[e]/2]:[N[e]+n*M.width[e]/2,P[e]],Ct=()=>{let e=j===`org`?`TB`:_e;return{vertical:j!==`mindmap`&&(e===`TB`||e===`BT`),sign:e===`BT`||e===`RL`?-1:1}},wt=(e,t,n,r)=>{if(e.length<4)return e;let[i,a]=[e[2]-e[0],e[3]-e[1]],o=Math.hypot(i,a)||1,[s,c]=u.endDirection(e),l=u.boundaryDistance(xt(t),M.width[t],M.height[t],i/o,a/o),d=u.boundaryDistance(xt(n),M.width[n],M.height[n],s,c)+ +!!r;return u.trimPath(e,l,d)},Tt=e=>{let t=[];M.kind[e]===p.NodeKind.Circle&&E.nodeLabels!==!1&&t.push(Math.PI/2);for(let n=A.adjStart[e];n<A.adjStart[e+1];n++){let r=A.adjEdge[n],i=A.source[r]===e?A.target[r]:A.source[r];if(i===e||Z(i)<=0)continue;let a=N[i]-N[e],o=P[i]-P[e];a*a+o*o>1e-12&&t.push(Math.atan2(o,a))}if(!t.length)return-Math.PI/2;t.sort((e,t)=>e-t);let n=t[t.length-1],r=t[0]+Math.PI*2-n,i=n+r/2;for(let e=1;e<t.length;e++){let n=t[e]-t[e-1];n>r+1e-9&&(r=n,i=t[e-1]+n/2)}return i},Et=e=>Math.max(12,Math.min(40,Math.min(M.width[e],M.height[e])*.9)),Dt=e=>{let t=A.source[e],n=Tt(t),r=M.width[t],i=M.height[t],a=xt(t),o=e=>u.boundaryDistance(a,r,i,Math.cos(e),Math.sin(e));return u.loopPath(N[t],P[t],n,o(n-.42),o(n+.42)+ +!!Re[e],Et(t)*(1+.6*A.bend[e]))},Ot=(e,t)=>{let n=A.source[e],r=A.target[e],i=!!Re[e];if(n===r)return Dt(e);let a=A.bend[e],o=Number.isFinite(a);if(j===`arc`){let e=o?1+.25*(n<r?a:-a):1;return wt(u.arcPath(N[n],N[r],P[n],e),n,r,i)}let s=N[r]-N[n],c=P[r]-P[n],l=o?a*y:0;if(t===`straight`){if(!l)return null;let e=(N[n]+N[r])/2,t=(P[n]+P[r])/2;return wt(u.quadraticPath(N[n],P[n],e-c*l,t+s*l,N[r],P[r]),n,r,i)}if(j===`circular`&&t===`curve`){let e=Math.max(0,Math.min(1,E.circular?.tension??.8)),t=(N[n]+N[r])/2*(1-e)-c*l,a=(P[n]+P[r])/2*(1-e)+s*l;return wt(u.quadraticPath(N[n],P[n],t,a,N[r],P[r]),n,r,i)}if(j===`radial`&&t===`spline`){let e=Math.hypot(N[n],P[n]),t=Math.hypot(N[r],P[r]),a=Math.atan2(P[n],N[n]),o=Math.atan2(P[r],N[r]),s=(e+t)/2,c=[N[n],P[n]];return u.cubicPoints(c,N[n],P[n],e<1e-6?N[n]:s*Math.cos(a),e<1e-6?P[n]:s*Math.sin(a),s*Math.cos(o),s*Math.sin(o),N[r],P[r]),wt(c,n,r,i)}if(t===`spline`||t===`orthogonal`){let i=Ct(),a=i.sign;j===`mindmap`&&(a=N[r]>=N[n]?1:-1);let o=Te&&!Ce?Te.routes[e]:null,s;if(o&&o.length>=4)s=o;else{let e=i.vertical?P[r]-P[n]:N[r]-N[n],t=j===`mindmap`||e*a>=0?a:-a;s=[...St(n,i.vertical,t),...St(r,i.vertical,-t)]}if(t===`orthogonal`){if(j===`org`&&L?.stacked[r]&&L.parent[r]===n){let e=P[n]+M.height[n]/2,t=N[r]-M.width[r]/2,i=t-10,a=e+14;return u.roundCorners([N[n],e,N[n],a,i,a,i,P[r],t,P[r]],6)}if(j===`org`&&s.length===4){let e=(s[1]+s[3])/2;return u.roundCorners([s[0],s[1],s[0],e,s[2],e,s[2],s[3]],6)}return u.orthogonalPath(s,i.vertical,8)}return u.splinePath(s,i.vertical)}let d=(N[n]+N[r])/2,f=(P[n]+P[r])/2,p=o?l:.18;return wt(u.quadraticPath(N[n],P[n],d-c*p,f+s*p,N[r],P[r]),n,r,i)},kt=()=>{let e=st();je=Array(A.m);for(let t=0;t<A.m;t++)je[t]=Z(A.source[t])>0&&Z(A.target[t])>0?Ot(t,e):null;Me=!1,Ne++},At=e=>{let t=A.source[e],n=A.target[e],r=N[n]-N[t],i=P[n]-P[t],a=Math.hypot(r,i);if(a<1e-9)return null;let o=r/a,s=i/a,c=u.boundaryDistance(xt(t),M.width[t],M.height[t],o,s),l=u.boundaryDistance(xt(n),M.width[n],M.height[n],o,s)+ +!!Re[e];return c+l>=a?null:[N[t]+o*c,P[t]+s*c,N[n]-o*l,P[n]-s*l]},jt=()=>{let e=q?.type===`node`?[q.index]:J>=0?[J]:[...Y],t=ot(),n=q?.type===`edge`?q.index:-1,r=`${t}|${e.join(`,`)}|${n}`;if(r===Ze)return;if(Ze=r,B=!0,(t===`none`||!e.length)&&n<0){Xe=null;return}let i=new Uint8Array(A.n),a=new Uint8Array(A.m);if(t!==`none`)for(let n of e)t===`lineage`?f.lineage(A,n,i,a):f.neighborhood(A,n,i,a);n>=0&&(a[n]=1,i[A.source[n]]=1,i[A.target[n]]=1),Xe={nodes:i,edges:a,accent:(t===`lineage`||e.length!==1?D.primary:V[e[0]])??D.primary}},Mt=()=>{Fe++;let n=D.background,r=[],i=st(),a=A.n>2e3?2:3,o=Xe,s=[new Map,new Map,new Map],c=(t,n,r)=>{let i=`${e.packColor(n)}|${Math.round(r*4)}`,a=s[t].get(i);return a||(a={color:n,width:r,buf:ae()},s[t].set(i,a)),a.buf},l=e=>(6+e*1.6)/H,d=e=>(8+e*2.2)/H,f=E.arrowStyle===`filled`,m=[new Map,new Map,new Map],h=[],g=(n,r,i,a,o,s,p,g)=>{if(h.length=0,!f){u.arrowHead(h,o,s,p,g,l(a),t.GAP),n.pushAll(h);return}let _=e.packColor(i),v=m[r].get(_);v||(v={color:i,points:[]},m[r].set(_,v)),u.filledArrow(v.points,h,o,s,p,g,d(a),t.GAP),c(r,i,Math.min(a,1)).pushAll(h)};for(let r=0;r<A.m;r++){let a=A.source[r],s=A.target[r],l=Math.min(Z(a),Z(s));if(l<=0)continue;let p=Ie[r],m=Le[r],h=1;ke?.edges[r]&&(p=Ve,m+=1),o&&(o.edges[r]?(h=2,ke?.edges[r]||(p=e.mix(n,o.accent,.9)),m+=.75):(h=0,p=e.mix(n,p,.22))),l<1&&(p=e.mix(n,p,l));let _=c(h,p,m),v=je[r]??null;if(!v){if(i!==`straight`||j===`arc`)continue;let e=At(r);if(!e)continue;if(!ze[r]&&!(f&&Re[r])){if(_.push(e[0],e[1]),_.push(e[2],e[3]),_.push(t.GAP,t.GAP),Re[r]){let t=Math.hypot(e[2]-e[0],e[3]-e[1])||1;g(_,h,p,m,e[2],e[3],(e[2]-e[0])/t,(e[3]-e[1])/t)}continue}v=[e[0],e[1],e[2],e[3]]}if(v.length<4)continue;let y=v;if(f&&Re[r]&&(y=u.trimPath(v.slice(),0,d(m)*.72)),ze[r]?_.pushAll(u.dashPath(y,5/H,4/H,t.GAP)):(_.pushAll(y),_.push(t.GAP,t.GAP)),Re[r]){let[e,t]=u.endDirection(v);g(_,h,p,m,v[v.length-2],v[v.length-1],e,t)}}s.forEach((e,t)=>{for(let[n,i]of e){if(i.buf.count()<2)continue;let e={kind:`line`,key:`edges:${t}:${n}`,version:Fe,color:i.color,points:i.buf.points(),count:i.buf.count(),width:i.width,sorted:!1};r.push(e)}for(let[e,n]of m[t]){let i={kind:`area`,key:`heads:${t}:${e}`,version:Fe,color:n.color,points:Float32Array.from(n.points),count:n.points.length/3,opacity:1,sorted:!1,flat:!0};r.push(i)}});let _=(t,r)=>{let i=V[t];return o&&!o.nodes[t]&&(i=e.mix(n,i,.2)),r<1?e.mix(n,i,r):i},y=[],ee=[],b=[],te=[],x=[],ne=[],re=new Map,ie=new Map,S=j===`mindmap`?999:Math.max(1,Math.min(j===`org`?10:8,(j===`org`?10:7)*H)),oe=A.n<=v;for(let t of Nt()){let r=Z(t);if(r<=0)continue;let i=N[t],s=P[t],c=_(t,r),l=Y.has(t),u=q?.type===`node`&&q.index===t;if(M.kind[t]===p.NodeKind.Circle){let r=Math.max(a,M.width[t]*H);oe&&y.push(i,s,r+3,e.packColor(n)),it()&&L&&Ae[t]>0&&!Pt(t)?te.push(i,s,r,e.packColor(c)):ee.push(i,s,r,e.packColor(c)),l?x.push(i,s,r+7,e.packColor(D.primary)):u&&b.push(i,s,r+6,e.packColor(e.mix(n,V[t],.7)));continue}let d=M.width[t],f=M.height[t],m=M.kind[t]===p.NodeKind.Solid,h=!!ke?.nodes[t],g=m?c:e.mix(n,c,h?1:de?.62:.5),v=m?c:e.mix(n,c,de?.2:.09);h&&(g=e.mix(n,Ve,r)),o&&!o.nodes[t]&&(v=e.mix(n,v,.5),m||(g=e.mix(n,g,.4)));let S=`${Math.round(d*2)/2}|${h?2:1.25}`,ae=re.get(S);if(ae||(ae={half:d/2,inset:h?2:1.25,border:[],fill:[]},re.set(S,ae)),ae.border.push(i,s-f/2,s+f/2,e.packColor(g)),ae.fill.push(i,s-f/2,s+f/2,e.packColor(v)),l||u){let r=(l?3:2.5)/H,a=`${Math.round((d/2+r)*64)}`,o=ie.get(a);o||ie.set(a,o=[]),o.push(d/2+r,i,s-f/2-r,s+f/2+r,e.packColor(l?D.primary:e.mix(n,V[t],.55)))}M.kind[t]===p.NodeKind.Card&&d*H>=96&&ne.push(i-d/2+26,s,Math.min(32,f-16)*H,e.packColor(c))}let se=(e,t,n,i)=>{if(!t.length)return;let a=t.length/4,o=new ArrayBuffer(a*16),s=new Float32Array(o),c=new Uint32Array(o);for(let e=0;e<a;e++)s[e*4]=t[e*4],s[e*4+1]=t[e*4+1],s[e*4+2]=t[e*4+2],c[e*4+3]=t[e*4+3];let l={kind:`scatter`,key:e,version:Fe,color:D.primary,instances:o,count:a,opacity:n,stroke:i};r.push(l)},ce=(e,t,n,i,a)=>{if(!t.length)return;let o=t.length/4,s=new ArrayBuffer(o*16),c=new Float32Array(s),l=new Uint32Array(s);for(let e=0;e<o;e++)c[e*4]=t[e*4],c[e*4+1]=t[e*4+1],c[e*4+2]=t[e*4+2],l[e*4+3]=t[e*4+3];let u={kind:`bar`,key:e,version:Fe,color:D.primary,instances:s,count:o,halfWidth:n,radius:a,inset:i,minHalf:0,sorted:!1};r.push(u)};se(`halo`,y,1,0),se(`nodes`,ee,1,0),se(`collapsed`,te,.28,2),se(`hover-rings`,b,0,2),se(`selection`,x,0,2.25);for(let[e,t]of ie){let n=[];for(let e=0;e<t.length;e+=5)n.push(t[e+1],t[e+2],t[e+3],t[e+4]);ce(`outline:${e}`,n,t[0],0,S===999?999:S+3)}for(let[e,t]of re)ce(`border:${e}`,t.border,t.half,0,S),ce(`fill:${e}`,t.fill,t.half,t.inset,S===999?999:Math.max(0,S-1));return se(`avatars`,ne,1,0),r},Nt=()=>{let e=[],t=[];for(let n=0;n<A.n;n++)Y.has(n)||q?.type===`node`&&q.index===n||n===J?t.push(n):e.push(n);return e.concat(t)},Pt=e=>!!L&&L.children[e].some(e=>I[e]);function Q(){k||tt||!ue||(tt=ue.requestAnimationFrame(It))}let Ft=()=>({xScale:2*H/G,xOffset:2*U/G-1,yScale:-2*H/K,yOffset:1-2*W/K});function It(){if(tt=0,k)return;let e=T.clientWidth,t=T.clientHeight;if(e<=0||t<=0)return;(e!==G||t!==K)&&(G=e,K=t,We||(Ge=!0),B=!0);let n=ue?.devicePixelRatio||1,r=!1,i=!1;if(R?.running()&&(R.step(8),Me=!0,r=R.running()&&!R.threaded(),i=R.running()&&Je&&!We&&!De),Ce){let e=Math.min(1,(ge()-Ce.start)/Math.max(1,Ce.duration));we=S(e);for(let e=0;e<A.n;e++)N[e]=be[e]+(F[e]-be[e])*we,P[e]=xe[e]+(ye[e]-xe[e])*we;e>=1&&(Ce=null,Se=null,we=1),Me=!0,r=!0}if(Ge){Ge=!1;let e=Ut();e&&Ke&&qe&&!he?.matches?Ue={from:[H,U,W],to:e,start:ge()}:e&&([H,U,W]=e),Ke=!1,B=!0}else if(i){let e=Ut();e&&(Ue=null,!qe||he?.matches?[H,U,W]=e:Gt(e,.25)&&(r=!0),B=!0)}if(Ue){let e=Math.min(1,(ge()-Ue.start)/te),t=S(e),[n,i,a]=Ue.from,[o,s,c]=Ue.to,l=n*(o/n)**+t,u=(G/2-i)/n,d=(K/2-a)/n,f=(G/2-s)/o,p=(K/2-c)/o,m=u+(f-u)*t,h=d+(p-d)*t;H=l,U=G/2-m*l,W=K/2-h*l,e>=1&&([H,U,W]=Ue.to,Ue=null),B=!0,r=!0}if(Me&&(kt(),B=!0),jt(),X){B&&(Pe=De?[]:Mt(),B=!1);let r=Math.max(1,Math.round(e*n)),i=Math.max(1,Math.round(t*n));(X.canvas.width!==r||X.canvas.height!==i)&&X.resize(r,i),X.canvas.style.width=`${e}px`,X.canvas.style.height=`${t}px`,X.render(Pe,{transform:Ft(),width:r,height:i,dpr:n}),qe=!0}l.sizeCanvas(w.foreground,e,t,n),Vt(n),q&&hn(),r&&Q()}let Lt=e=>N[e]*H+U,Rt=e=>P[e]*H+W,zt=(e,t,n)=>{if(n<=8)return``;if(e.measureText(t).width<=n)return t;let r=0,i=t.length;for(;r<i;){let a=r+i+1>>1;e.measureText(`${t.slice(0,a)}…`).width<=n?r=a:i=a-1}return r?`${t.slice(0,r)}…`:``},Bt=t=>e.luminance(t)>.6?`#111827`:`#ffffff`,Vt=t=>{let n=w.foreground.getContext(`2d`);if(!n||(n.setTransform(t,0,0,t,0,0),n.clearRect(0,0,G,K),De||!A.n))return;let r=D.fontFamily,i=e.toCss(D.text),a=e.toCss(D.textMuted),o=e.toCss(D.background),s=Xe,c=Math.ceil(G/8)+1,l=Math.ceil(K/8)+1,d=new Uint8Array(c*l),f=(e,t,n,r,i)=>{let a=Math.max(0,Math.floor(e/8)),o=Math.min(c-1,Math.floor(n/8)),s=Math.max(0,Math.floor(t/8)),u=Math.min(l-1,Math.floor(r/8));if(a>o||s>u)return!1;if(!i){for(let e=s;e<=u;e++)for(let t=a;t<=o;t++)if(d[e*c+t])return!1;return!0}for(let e=s;e<=u;e++)for(let t=a;t<=o;t++)d[e*c+t]=1;return!0},m=(e,t,n)=>e>-n&&t>-n&&e<G+n&&t<K+n,h=E.nodeLabels!==!1;for(let t=0;t<A.n;t++){if(M.kind[t]===p.NodeKind.Circle)continue;let c=Z(t);if(c<=0)continue;let l=Lt(t),u=Rt(t),d=M.width[t]*H,g=M.height[t]*H;if(!m(l,u,Math.max(d,g)))continue;f(l-d/2,u-g/2,l+d/2,u+g/2,!0);let _=M.font[t]*H,v=Math.max(x,_),y=A.nodes[t];n.globalAlpha=c*(s&&!s.nodes[t]?.45:1);let ee=M.kind[t]===p.NodeKind.Solid,b=M.kind[t]===p.NodeKind.Card&&d>=96;if(h&&g>=v+1){let e=b?l-d/2+48*H:l,o=b?d-56*H:d-Math.max(4,12*H);n.textAlign=b?`left`:`center`,n.textBaseline=`middle`;let s=Math.max(8.5,_*.88),c=v+Math.max(2,_*.6)+s,f=y.subtitle&&c<=g-4?y.subtitle:``,m=f?u-c/2+v/2:u;n.font=`${M.weight[t]} ${v}px ${r}`,n.fillStyle=ee?Bt(V[t]):i;let h=zt(n,p.labelOf(A,t),o);if(h&&n.fillText(h,e,m),f&&h){n.font=`${s}px ${r}`,n.fillStyle=ee?Bt(V[t]):a;let i=zt(n,f,o);i&&n.fillText(i,e,u+c/2-s/2)}}if(b){let e=Array.from(p.labelOf(A,t).trim())[0]??``;n.textAlign=`center`,n.font=`600 ${Math.max(8,13*H)}px ${r}`,n.fillStyle=Bt(V[t]),n.fillText(e.toUpperCase(),l-d/2+26*H,u)}if(it()&&L&&L.children[t].length){let a=!Pt(t),s=q?.type===`node`&&q.index===t||J===t;if(a||s){let s=j===`org`,f=j===`mindmap`&&L.side[t]<0?-1:1,p=s?l:l+f*(d/2+9),m=s?u+g/2+9:u,h=a?String(Ae[t]):`−`;n.font=`600 10px ${r}`;let _=Math.max(8,n.measureText(h).width/2+5);n.globalAlpha=c,n.beginPath(),n.fillStyle=o,n.strokeStyle=e.toCss(e.mix(D.background,V[t],.75)),n.lineWidth=1.25,typeof n.roundRect==`function`?n.roundRect(p-_,m-8,_*2,16,8):n.rect(p-_,m-8,_*2,16),n.fill(),n.stroke(),n.fillStyle=i,n.textAlign=`center`,n.fillText(h,p,m+.5)}}}n.globalAlpha=1;let g=E.nodeLabels??`auto`,_=e=>Y.has(e)||e===J||q?.type===`node`&&q.index===e||!!s&&!!s.nodes[e],v=new Uint8Array(A.n),y=700,ee=(e,t)=>{if(v[e]||M.kind[e]!==p.NodeKind.Circle||g===!1)return;let c=Z(e);if(c<=0)return;let l=Lt(e),u=Rt(e);if(!m(l,u,160))return;let d=Math.max(A.n>2e3?1:1.5,M.width[e]*H/2);if(!t&&g===`auto`&&(j===`force`||j===`none`)&&d*2<5)return;let h=_(e),ee=s&&!s.nodes[e],b=p.labelOf(A,e),te=Math.min(180,M.labelWidth[e]*(h?1.06:1)),x=Ht(e,l,u,d),ne,re,ie,S;if(x.angle!==0){let e=x.x+Math.cos(x.angle)*(x.align===`left`?7:-7),t=x.y+Math.sin(x.angle)*(x.align===`left`?7:-7);ne=e-6,ie=e+6,re=t-6,S=t+6}else ne=x.align===`left`?x.x:x.align===`right`?x.x-te:x.x-te/2,ie=ne+te,re=x.baseline===`top`?x.y:x.baseline===`bottom`?x.y-14:x.y-7,S=re+14;if(!t&&!f(ne-2,re,ie+2,S,!1))return;f(ne-2,re,ie+2,S,!0),v[e]=1,y--,n.save(),n.globalAlpha=c*(ee?.35:1),n.font=`${h?600:400} 12px ${r}`,n.textAlign=x.align,n.textBaseline=x.baseline,n.translate(x.x,x.y),x.angle&&n.rotate(x.angle);let ae=M.labelWidth[e]>180?zt(n,b,180):b;n.lineJoin=`round`,n.lineWidth=3,n.strokeStyle=o,n.strokeText(ae,0,0),n.fillStyle=h?i:ee?a:i,n.fillText(ae,0,0),n.restore()};for(let e=0;e<A.n;e++)_(e)&&ee(e,!0);let b=E.edgeLabels??`auto`;if(b!==!1){n.font=`11px ${r}`,n.textAlign=`center`,n.textBaseline=`middle`;let t=0;for(let r=0;r<A.m&&t<400;r++){let c=A.edges[r].label;if(!c)continue;let l=A.source[r],d=A.target[r],p=Math.min(Z(l),Z(d));if(p<=0)continue;let h=!!s?.edges[r];if(b===`hover`&&!h||b===`auto`&&!h&&(H<.75||s&&!h))continue;let g,_,v=je[r];if(v){let e=u.pointAt(v,u.pathLength(v)/2);if(g=e[0]*H+U,_=e[1]*H+W,l===d){let e=g-(N[l]*H+U),t=_-(P[l]*H+W),n=Math.hypot(e,t)||1;g+=e/n*10,_+=t/n*10}}else g=(N[l]+N[d])/2*H+U,_=(P[l]+P[d])/2*H+W;if(!m(g,_,40))continue;Number.isNaN(He[r])&&(He[r]=n.measureText(c).width);let y=He[r]+10;(h||f(g-y/2,_-8,g+y/2,_+8,!1))&&(f(g-y/2,_-8,g+y/2,_+8,!0),t++,n.globalAlpha=p,n.fillStyle=o,n.beginPath(),typeof n.roundRect==`function`?n.roundRect(g-y/2,_-8,y,16,8):n.rect(g-y/2,_-8,y,16),n.fill(),h&&(n.strokeStyle=e.toCss(e.mix(D.background,Xe?.accent??D.primary,.6)),n.lineWidth=1,n.stroke()),n.fillStyle=h?i:a,n.fillText(c,g,_+.5))}n.globalAlpha=1}if(g!==!1){let e=g===!0;for(let t=0;t<A.rank.length&&y>0;t++){let n=A.rank[t];if(ee(n,!1),!e&&t>4e3)break}}if(Ye&&J>=0&&Z(J)>0){let t=Lt(J),r=Rt(J);if(n.save(),n.strokeStyle=e.toCss(D.primary),n.lineWidth=2,n.setLineDash([4,3]),n.beginPath(),M.kind[J]===p.NodeKind.Circle){let e=Math.max(3,M.width[J]*H/2)+6;n.arc(t,r,e,0,Math.PI*2)}else{let e=M.width[J]*H+10,i=M.height[J]*H+10;n.rect(t-e/2,r-i/2,e,i)}n.stroke(),n.restore()}},Ht=(e,t,n,r)=>{let i={x:t,y:n+r+3,align:`center`,baseline:`top`,angle:0},a=e=>{let i=Math.cos(e)<0;return{x:t+Math.cos(e)*(r+4),y:n+Math.sin(e)*(r+4),align:i?`right`:`left`,baseline:`middle`,angle:i?e+Math.PI:e}};switch(j){case`tree`:{let a=Pt(e);if(_e===`LR`||_e===`RL`){let e=_e===`LR`!==a;return{x:t+(e?r+5:-r-5),y:n,align:e?`left`:`right`,baseline:`middle`,angle:0}}return _e===`BT`?{x:t,y:n-r-3,align:`center`,baseline:`bottom`,angle:0}:i}case`radial`:return L&&(Pt(e)||L.depth[e]===0&&Math.hypot(N[e],P[e])<1e-6)?i:a(L?L.side[e]:0);case`circular`:return a(Ee?Ee.angle[e]:0);case`arc`:return{x:t,y:n+r+4,align:`left`,baseline:`middle`,angle:Math.PI/2};default:return i}},Ut=()=>{if(G<=0||K<=0)return null;let e=1/0,t=1/0,n=-1/0,r=-1/0,i=0;for(let a=0;a<A.n;a++){if(!I[a]||!Number.isFinite(F[a]))continue;let o=A.groupOf[a];if(o>=0&&Oe.has(A.groups[o].id))continue;let s=M.width[a]/2,c=M.height[a]/2;e=Math.min(e,F[a]-s),n=Math.max(n,F[a]+s),t=Math.min(t,ye[a]-c),r=Math.max(r,ye[a]+c),M.kind[a]===p.NodeKind.Circle&&(i=Math.max(i,M.labelWidth[a]))}if(!(e<=n))return null;if(j===`arc`)for(let e=0;e<A.m;e++){let n=A.source[e],r=A.target[e];if(!I[n]||!I[r])continue;let i=A.bend[e],a=n!==r&&Number.isFinite(i)?1+.25*Math.abs(i):1;t=Math.min(t,ye[n]-Math.abs(F[r]-F[n])/2*a)}if(A.hasLoops)for(let i=0;i<A.m;i++){let a=A.source[i];if(a!==A.target[i]||!I[a])continue;let o=Tt(a),s=Et(a),c=Math.max(M.width[a],M.height[a])/2+s*(1+.6*A.bend[i]),l=F[a]+Math.cos(o)*c,u=ye[a]+Math.sin(o)*c;e=Math.min(e,l-s/2),n=Math.max(n,l+s/2),t=Math.min(t,u-s/2),r=Math.max(r,u+s/2)}let a=E.fitPadding??24,[o,s,c,l]=[a,a,a,a],u=E.nodeLabels===!1?0:Math.min(140,i)+8;if(M.kind.some(e=>e===p.NodeKind.Circle)&&u>8){if(j===`tree`&&(_e===`LR`||_e===`RL`)){let e=0;for(let t=0;t<A.n;t++)L&&L.parent[t]<0&&I[t]&&Pt(t)&&(e=Math.max(e,Math.min(140,M.labelWidth[t])+8));_e===`LR`?(s+=u,o+=e):(o+=u,s+=e)}else j===`radial`||j===`circular`?(o+=u,s+=u,c+=u*.6,l+=u*.6):l+=j===`arc`?u:16}(j===`org`||j===`mindmap`)&&(l+=10);let d=Math.max(10,G-o-s),f=Math.max(10,K-c-l),m=Math.max(1e-6,n-e),h=Math.max(1e-6,r-t),g=nt()?.zoomRange??[.02,8],_=Math.min(d/m,f/h,1.6,g[1]);_=Math.max(_,1e-4);let v=o+(d-m*_)/2-e*_,y=c+(f-h*_)/2-t*_;return[_,v,y]},Wt=()=>{let e=nt()?.zoomRange??[.02,8],t=Ut();return[Math.min(e[0],t?t[0]*.5:e[0]),e[1]]},Gt=(e,t)=>{let[n,r,i]=e,a=(G/2-U)/H,o=(K/2-W)/H,s=(G/2-r)/n,c=(K/2-i)/n;if(!(Math.abs(Math.log(n/H))>.002||Math.hypot(s-a,c-o)*n>.5))return[H,U,W]=e,!1;let l=H*(n/H)**+t,u=a+(s-a)*t,d=o+(c-o)*t;return H=l,U=G/2-u*l,W=K/2-d*l,!0},Kt=(e,t)=>{Ue=null,t&&!he?.matches&&G>0?Ue={from:[H,U,W],to:e,start:ge()}:[H,U,W]=e,B=!0,Q()},qt=(e,t,n,r=!1)=>{let[i,a]=Wt(),o=Math.max(i,Math.min(a,H*e)),s=o/H;Kt([o,t-(t-U)*s,n-(n-W)*s],r),We=!0},Jt=``,Yt=()=>{let t=E.legend,n=A.groups.filter(e=>e.count>0),r=t===void 0?n.length>1:!!t&&n.length>0,i=typeof t==`object`?t:{},a=i.toggle??!0,o=i.position===`bottom`,s=`${r}|${o}|${a}`;if(r)for(let t of n){let n=A.groups.indexOf(t);s+=`\n${t.id}\u0001${t.name}\u0001${e.toCss(Be[n]??D.primary)}\u0001${Oe.has(t.id)}`}if(s===Jt)return;Jt=s;let c=[...w.legend.children].indexOf(C.activeElement);if(w.legend.replaceChildren(),w.legend.style.display=r?`flex`:`none`,r){w.legend.style.order=o?`1`:`0`,w.legend.style.padding=o?`8px 4px 0`:`0 4px 8px`;for(let t of n){let n=A.groups.indexOf(t),r=Oe.has(t.id),i=C.createElement(a?`button`:`span`);i instanceof HTMLButtonElement&&(i.type=`button`,i.setAttribute(`aria-pressed`,String(!r)),i.addEventListener(`click`,()=>Xt(t.id))),l.style(i,{display:`inline-flex`,alignItems:`center`,gap:`6px`,padding:`2px 4px`,margin:`0`,border:`0`,borderRadius:`4px`,background:`none`,font:`inherit`,color:`var(--text-secondary-color, #6b7280)`,cursor:a?`pointer`:`default`,opacity:r?`0.45`:`1`,textDecoration:r?`line-through`:`none`}),i.append(l.swatch(C,e.toCss(Be[n]??D.primary)),C.createTextNode(t.name)),w.legend.appendChild(i)}c>=0&&w.legend.children[c]?.focus()}},Xt=e=>{let t=A.groups.find(t=>t.id===e);if(!t)return;let n=!Oe.has(e);n?Oe.add(e):Oe.delete(e),w.live.textContent=d.fill(n?O.labels.hidden:O.labels.shown,{name:t.name});for(let e of[...Y])Z(e)<=0&&A.groupOf[e]>=0&&Oe.has(A.groups[A.groupOf[e]].id)&&Y.delete(e);J>=0&&A.groupOf[J]>=0&&Oe.has(A.groups[A.groupOf[J]].id)&&(J=-1),q&&fn(null),Me=!0,B=!0,Ze=``,Yt(),Q(),pe(`groupToggle`,{group:e,hidden:n})},Zt=()=>{let{labels:e,count:t}=O,n=j===`dag`?e.dag:rt()?e.tree:e.chart;T.setAttribute(`aria-roledescription`,n),T.setAttribute(`aria-label`,E.ariaLabel??n);let r=nt()?.keyboard;r?T.tabIndex=0:T.removeAttribute(`tabindex`);let i=nt();T.style.cursor=i?.pan?`grab`:`default`;let a=[d.fill(e.summary,{nodes:t(A.n),edges:t(A.m)})],o=A.groups.filter(e=>e.count>0).map(e=>e.name);o.length&&a.push(d.fill(e.groupsSummary,{groups:o.join(e.listSeparator)})),r&&a.push(e.keyboardHelp),w.summary.textContent=a.join(` `);let s=E.controls!==!1&&!!i?.zoom;w.controls.style.display=s?`flex`:`none`,w.zoomIn.setAttribute(`aria-label`,e.zoomIn),w.zoomIn.title=e.zoomIn,w.zoomOut.setAttribute(`aria-label`,e.zoomOut),w.zoomOut.title=e.zoomOut,w.fit.setAttribute(`aria-label`,e.fit),w.fit.title=e.fit},Qt=null,$t=32,en=0,tn=(e,t)=>(e+2097152)*4194304+(t+2097152),nn=()=>{en=0;for(let e=0;e<A.n;e++)en=Math.max(en,M.width[e],M.height[e]);$t=Math.max(16,en);let e=new Map;for(let t=0;t<A.n;t++){if(Z(t)<=0)continue;let n=tn(Math.floor(N[t]/$t),Math.floor(P[t]/$t)),r=e.get(n);r||e.set(n,r=[]),r.push(t)}Qt=e},rn=(e,t)=>{if(De||!A.n)return-1;nn();let n=(e-U)/H,r=(t-W)/H,i=3/H,a=(A.n>2e3?1:1.5)/H,o=Math.ceil((en/2+i+a)/$t),s=Math.floor(n/$t),c=Math.floor(r/$t),l=-1,u=1/0;for(let e=-o;e<=o;e++)for(let t=-o;t<=o;t++){let o=Qt.get(tn(s+t,c+e));if(o)for(let e of o){let t=n-N[e],o=r-P[e];if(M.kind[e]===p.NodeKind.Circle){let n=Math.max(M.width[e]/2,a)+i,r=t*t+o*o;r<=n*n&&r<=u&&(l=e,u=r)}else if(Math.abs(t)<=M.width[e]/2+i&&Math.abs(o)<=M.height[e]/2+i){let n=t*t+o*o;n<=u&&(l=e,u=n)}}}return l},an=(e,t)=>{if(De)return-1;let n=(e-U)/H,r=(t-W)/H,i=4/H,a=-1,o=i*i,s=e=>{if(Math.min(Z(A.source[e]),Z(A.target[e]))<=0)return;let t=je[e]??null;if(!t){let n=At(e);if(!n)return;t=n}let i=u.distanceToPath(t,n,r);i<=o&&(a=e,o=i)};if(A.m<ee){for(let e=0;e<A.m;e++)s(e);return a}let c=sn();if(!c)return-1;let{cell:l,x0:d,y0:f,cols:p,rows:m,start:h,items:g,stamp:_}=c,v=Math.max(0,Math.floor((n-i-d)/l)),y=Math.min(p-1,Math.floor((n+i-d)/l)),b=Math.max(0,Math.floor((r-i-f)/l)),te=Math.min(m-1,Math.floor((r+i-f)/l)),x=++c.visit;for(let e=b;e<=te;e++)for(let t=v;t<=y;t++){let n=e*p+t;for(let e=h[n];e<h[n+1];e++){let t=g[e];_[t]!==x&&(_[t]=x,s(t))}}return a},on=null,sn=()=>{let e=on;if(e&&e.geometry===Ne||e&&R?.running()&&ge()-e.built<250)return e;let t=A.m,n=e=>Math.min(Z(A.source[e]),Z(A.target[e]))<=0?null:je[e]??At(e),r=1/0,i=1/0,a=-1/0,o=-1/0,s=0,c=0;for(let e=0;e<t;e++){let t=n(e);if(t){for(let e=0;e<t.length;e+=2)r=Math.min(r,t[e]),a=Math.max(a,t[e]),i=Math.min(i,t[e+1]),o=Math.max(o,t[e+1]),e&&(s+=Math.hypot(t[e]-t[e-2],t[e+1]-t[e-1]));c+=t.length/2-1}}if(!(r<=a&&i<=o))return null;let l=Math.max(a-r,o-i,1e-6),u=Math.max(l/512,s/Math.max(1,c)*.5,1e-6),d=Math.min(512,Math.floor((a-r)/u)+1),f=Math.min(512,Math.floor((o-i)/u)+1),p=new Int32Array(d*f+1),m=e=>{for(let a=0;a<t;a++){let t=n(a);if(t)for(let n=2;n<t.length;n+=2){let o=t[n-2],s=t[n-1],c=Math.max(1,Math.ceil(Math.hypot(t[n]-o,t[n+1]-s)/u)),l=-1;for(let p=0;p<c;p++){let m=o+(t[n]-o)*p/c,h=s+(t[n+1]-s)*p/c,g=o+(t[n]-o)*(p+1)/c,_=s+(t[n+1]-s)*(p+1)/c,v=Math.floor((Math.min(m,g)-r)/u),y=Math.floor((Math.max(m,g)-r)/u),ee=Math.floor((Math.min(h,_)-i)/u),b=Math.floor((Math.max(h,_)-i)/u);for(let t=Math.max(0,ee);t<=Math.min(f-1,b);t++)for(let n=Math.max(0,v);n<=Math.min(d-1,y);n++){let r=t*d+n;r!==l&&(l=r,e(r,a))}}}}};m(e=>p[e+1]++);for(let e=0;e<d*f;e++)p[e+1]+=p[e];let h=new Int32Array(p[d*f]),g=p.slice(0,d*f);return m((e,t)=>{h[g[e]++]=t}),on={cell:u,x0:r,y0:i,cols:d,rows:f,start:p,items:h,stamp:new Int32Array(t),visit:0,geometry:Ne,built:ge()},on},cn=(e,t)=>{let n=rn(e,t);if(n>=0)return{type:`node`,index:n};let r=ln()||me(`hover`)||me(`click`)?an(e,t):-1;return r>=0?{type:`edge`,index:r}:null},ln=()=>E.tooltip!==!1,un=t=>{let n=T.offsetLeft,r=T.offsetTop;if(t.type===`node`){let i=t.index,a=A.nodes[i],o=A.groupOf[i];return{type:`node`,id:a.id,node:a,index:A.nodeInput[i],group:o>=0?A.groups[o].id:void 0,color:e.toCss(V[i]),degree:A.inDegree[i]+A.outDegree[i],clientX:Lt(i)+n,clientY:Rt(i)+r}}let i=t.index,a=A.edges[i],o=A.source[i],s=A.target[i],c=je[i],l=(N[o]+N[s])/2,d=(P[o]+P[s])/2;if(c){let e=u.pointAt(c,u.pathLength(c)/2);l=e[0],d=e[1]}return{type:`edge`,id:`${a.source}→${a.target}`,edge:a,index:A.edgeInput[i],color:e.toCss(Ie[i]),clientX:l*H+U+n,clientY:d*H+W+r}},dn=(e,t)=>e===t||!!e&&!!t&&e.type===t.type&&e.index===t.index,fn=e=>{if(dn(e,q)){e&&hn();return}q=e,mn(),B=!0,Q(),pe(`hover`,e?un(e):null)},pn=()=>q??(Ye&&J>=0?{type:`node`,index:J}:null),mn=()=>{let e=w.tooltip,t=pn();if(!t||!ln()){e.style.display=`none`;return}let n=un(t),r=typeof E.tooltip==`object`?E.tooltip.render:void 0,i=r?r(n):vn(t);if(i===null){e.style.display=`none`;return}typeof i==`string`?e.textContent=i:e.replaceChildren(i),e.style.display=`block`,hn()},hn=()=>{let e=w.tooltip,t=pn();if(!t||e.style.display===`none`)return;let n,r,i=14;if(t.type===`node`)n=Lt(t.index),r=Rt(t.index),i+=Math.max(M.width[t.index],0)*H/2;else{let e=un(t);n=e.clientX-T.offsetLeft,r=e.clientY-T.offsetTop}let a=e.offsetWidth,o=e.offsetHeight,s=n+i;s+a>G-4&&(s=n-i-a),s=Math.max(4,Math.min(G-a-4,s));let c=Math.max(4,Math.min(K-o-4,r-o/2));e.style.transform=`translate(${Math.round(s)}px, ${Math.round(c)}px)`},gn=(e,t)=>{let n=l.style(C.createElement(`div`),{display:`flex`,alignItems:`center`,gap:`8px`}),r=l.style(C.createElement(`span`),{flex:`1 1 auto`,color:`var(--text-secondary-color, #6b7280)`});r.textContent=e;let i=l.style(C.createElement(`span`),{fontWeight:`600`,fontVariantNumeric:`tabular-nums`,marginLeft:`12px`});return i.textContent=t,n.append(r,i),n},_n=(e,t)=>{let n=l.style(C.createElement(`div`),{display:`flex`,alignItems:`center`,gap:`6px`,fontWeight:`600`,marginBottom:`2px`,color:`var(--text-color, #1f2937)`});return n.append(l.swatch(C,e),C.createTextNode(t)),n},vn=t=>{let{labels:n}=O,r=C.createDocumentFragment();if(t.type===`node`){let i=t.index,a=A.nodes[i];if(r.append(_n(e.toCss(V[i]),p.labelOf(A,i))),a.subtitle){let e=l.style(C.createElement(`div`),{color:`var(--text-secondary-color, #6b7280)`,marginBottom:`2px`});e.textContent=a.subtitle,r.append(e)}let o=A.groupOf[i];if(o>=0&&r.append(gn(n.group,A.groups[o].name)),Number.isFinite(a.value)&&r.append(gn(n.value,O.value(a.value))),(j===`dag`||E.arrows||A.edges.some(e=>e.directed))&&!rt()?(r.append(gn(n.incoming,O.count(A.inDegree[i]))),r.append(gn(n.outgoing,O.count(A.outDegree[i])))):rt()||r.append(gn(n.degree,O.count(A.inDegree[i]+A.outDegree[i]))),rt()&&Ae[i]>0&&!Pt(i)&&r.append(gn(n.hiddenChildren,O.count(Ae[i]))),ke?.nodes[i]){let t=e.toCss(Ve),i=l.style(C.createElement(`div`),{display:`inline-flex`,alignItems:`center`,gap:`5px`,marginTop:`4px`,padding:`0 8px`,borderRadius:`999px`,border:`1px solid color-mix(in srgb, ${t} 35%, transparent)`,background:`color-mix(in srgb, ${t} 10%, transparent)`,color:`var(--text-color, #1f2937)`,fontWeight:`500`,lineHeight:`18px`});i.className=`minerva-chart-badge`;let a=l.swatch(C,t);l.style(a,{width:`7px`,height:`7px`}),i.append(a,C.createTextNode(n.critical)),r.append(i)}return r}let i=t.index,a=A.edges[i],o=A.source[i],s=A.target[i],c=Re[i]?` → `:` — `;if(r.append(_n(e.toCss(Ie[i]),`${p.labelOf(A,o)}${c}${p.labelOf(A,s)}`)),a.label){let e=C.createElement(`div`);e.textContent=a.label,r.append(e)}return Number.isFinite(a.value)&&r.append(gn(n.value,O.value(a.value))),r},yn=0,bn=null,xn=(e,t)=>{bn={x:e,y:t},!yn&&ue&&(yn=ue.requestAnimationFrame(()=>{yn=0;let e=bn;if(bn=null,!e||k||$)return;let t=cn(e.x,e.y);fn(t),T.style.cursor=t?.type===`node`?`pointer`:nt()?.pan?`grab`:`default`}))},Sn=(e,t)=>{e.size===Y.size&&[...e].every(e=>Y.has(e))||(Y.clear(),e.forEach(e=>Y.add(e)),B=!0,Q(),w.live.textContent=Y.size?d.fill(O.labels.selected,{count:O.count(Y.size)}):O.labels.selectionCleared,t&&pe(`select`,{ids:[...Y].map(e=>A.nodes[e].id)}))},Cn=(e,t)=>{let n=nt();if(!n?.select)return;let r=n.select===`multiple`||t,i=new Set(r?Y:[]);r&&i.has(e)?i.delete(e):i.add(e),Sn(i,!0)},wn=(e,t,n)=>{if(!L||!L.children[e]?.length)return!1;let r=A.nodes[e].id;if(t===z.has(r))return!1;t?z.add(r):z.delete(r);let i=dt();_t(i,!0);let a=new Set([...Y].filter(e=>I[e]));return a.size!==Y.size&&Sn(a,!0),J>=0&&!I[J]&&(J=e),w.live.textContent=t?d.fill(O.labels.collapsed,{name:p.labelOf(A,e),count:O.count(Ae[e])}):d.fill(O.labels.expanded,{name:p.labelOf(A,e)}),n&&pe(`toggle`,{id:r,collapsed:t}),!0},$=null,Tn=new Map,En=e=>{let t=T.getBoundingClientRect();return{x:e.clientX-t.left,y:e.clientY-t.top}},Dn=()=>{let e=[...Tn.values()],t=e[0]??{x:0,y:0},n=e[1]??t;return{distance:Math.hypot(t.x-n.x,t.y-n.y),center:{x:(t.x+n.x)/2,y:(t.y+n.y)/2}}},On=e=>{let t=nt();if(!t||e.target?.closest?.(`button`))return;let n=En(e);if(Tn.set(e.pointerId,n),T.setPointerCapture?.(e.pointerId),Ue=null,Tn.size===2&&(t.zoom||t.pan)){let{distance:e,center:t}=Dn();$={mode:`pinch`,index:-1,origin:t,view:[H,U,W],offset:[0,0],distance:e,moved:!0,button:0};return}if(Tn.size>1)return;let r=e.button===0?rn(n.x,n.y):-1,i={origin:n,view:[H,U,W],distance:0,moved:!1,button:e.button};$=r>=0&&t.drag?{...i,mode:`node`,index:r,offset:[(n.x-U)/H-N[r],(n.y-W)/H-P[r]]}:{...i,mode:`pan`,index:r,offset:[0,0]},e.button===1&&e.preventDefault()},kn=e=>{let t=En(e);if(Tn.has(e.pointerId)&&Tn.set(e.pointerId,t),!$){if(e.pointerType===`touch`&&Tn.size)return;xn(t.x,t.y);return}let n=nt();if(!n)return;if($.mode===`pinch`){let{distance:e,center:t}=Dn(),[r,i,a]=$.view,[o,s]=Wt(),c=n.zoom&&$.distance>0?e/$.distance:1,l=Math.max(o,Math.min(s,r*c)),u=l/r,d=$.origin.x,f=$.origin.y,p=n.pan?t.x:d,m=n.pan?t.y:f;H=l,U=p-(d-i)*u,W=m-(f-a)*u,We=!0,B=!0,Q();return}let r=t.x-$.origin.x,i=t.y-$.origin.y;if(!$.moved&&Math.hypot(r,i)<3)return;if($.moved||($.moved=!0,q&&fn(null),T.style.cursor=($.mode,`grabbing`)),$.mode===`node`){let e=$.index;Je=!1;let n=(t.x-U)/H-$.offset[0],r=(t.y-W)/H-$.offset[1];if(R)R.drag(e,n,r);else if(j===`force`){let t=dt();An(t),R?.drag(e,n,r)}N[e]=F[e]=n,P[e]=ye[e]=r,Me=!0,Q();return}if(!n.pan)return;let[a,o,s]=$.view;H=a,U=o+r,W=s+i,We=!0,B=!0,Q()},An=e=>{ft(),ht(e,!1)},jn=e=>{let t=$;if(Tn.delete(e.pointerId),T.hasPointerCapture?.(e.pointerId)&&T.releasePointerCapture(e.pointerId),Tn.size){t?.mode===`pinch`&&($=null);return}if($=null,T.style.cursor=nt()?.pan?`grab`:`default`,!t)return;if(t.mode===`node`&&t.moved){R?.release(t.index,!!A.nodes[t.index].fixed);return}if(t.moved||t.button!==0)return;let n=En(e),r=cn(n.x,n.y);Mn(r,e.ctrlKey||e.metaKey||e.shiftKey)},Mn=(e,t)=>{if(!e){Y.size&&nt()?.select&&Sn(new Set,!0);return}let n=un(e);if(pe(`click`,n),e.type!==`node`)return;let r=e.index;it()&&L?.children[r]?.length&&wn(r,Pt(r),!0),Cn(r,t)},Nn=e=>{Tn.delete(e.pointerId),Tn.size||($?.mode===`node`&&R?.release($.index,!!A.nodes[$.index].fixed),$=null)},Pn=()=>{bn=null,!$&&q&&fn(null)},Fn=0,In=()=>{let e=/Mac|iPhone|iPad/.test(ue?.navigator?.platform??``);w.hint.textContent=d.fill(O.labels.zoomHint,{key:e?`⌘`:`Ctrl`}),w.hint.style.opacity=`1`,Fn&&clearTimeout(Fn),Fn=setTimeout(()=>{Fn=0,w.hint.style.opacity=`0`},1200)},Ln=e=>{let t=nt();if(!t?.zoom)return;let n=e.ctrlKey&&!e.metaKey;if(t.wheel===`modifier`&&!e.ctrlKey&&!e.metaKey){Math.abs(e.deltaY)>Math.abs(e.deltaX)&&In();return}e.preventDefault();let r=En(e);Ue=null,qt(1/ie(e.deltaY,e.deltaMode,n),r.x,r.y),q&&fn(null)},Rn=e=>{if(!nt())return;let t=En(e);rn(t.x,t.y)>=0||(e.preventDefault(),ir.fit(!0))},zn=()=>{let e;try{e=T.matches(`:focus-visible`)}catch{e=!0}Ye=e,e&&(T.style.boxShadow=`0 0 0 2px var(--primary-color, #4f46e5)`)},Bn=()=>{T.style.boxShadow=``,Ye=!1,J>=0&&(J=-1,mn(),B=!0,Q())},Vn=()=>{let e=[];for(let t=0;t<A.n;t++)Z(t)>0&&(!Ce||I[t])&&e.push(t);return e},Hn=e=>{if(e===J)return;J=e,Ye=!0,B=!0;let t=Lt(e),n=Rt(e);(t<40||n<40||t>G-40||n>K-40)&&Kt([H,U+G/2-t,W+K/2-n],!0);let r=A.groupOf[e],i=A.inDegree[e]+A.outDegree[e];w.live.textContent=r>=0?d.fill(O.labels.nodeFocusGroup,{name:p.labelOf(A,e),group:A.groups[r].name,degree:O.count(i)}):d.fill(O.labels.nodeFocus,{name:p.labelOf(A,e),degree:O.count(i)}),mn(),Q(),pe(`hover`,un({type:`node`,index:e}))},Un=(e,t,n)=>{let r=Lt(e),i=Rt(e),a=-1,o=1/0;for(let s of Vn()){if(s===e)continue;let c=Lt(s)-r,l=Rt(s)-i,u=c*t+l*n;if(u<=.5)continue;let d=Math.abs(c*n-l*t);if(d>u*2.5)continue;let f=u+d*2;f<o&&(o=f,a=s)}return a},Wn=()=>{let e=[...Y].find(e=>Z(e)>0);if(e!==void 0)return e;for(let e of A.rank)if(Z(e)>0)return e;return-1},Gn=e=>{let t=nt();if(!t?.keyboard)return;let n={ArrowLeft:[-1,0],ArrowRight:[1,0],ArrowUp:[0,-1],ArrowDown:[0,1]}[e.key];if(n){if(e.preventDefault(),J<0||Z(J)<=0){let e=Wn();e>=0&&Hn(e);return}let t=Un(J,n[0],n[1]);t>=0&&Hn(t);return}switch(e.key){case`Enter`:case` `:if(J<0)return;e.preventDefault(),e.key===`Enter`&&it()&&L?.children[J]?.length&&wn(J,Pt(J),!0),pe(`click`,un({type:`node`,index:J})),Cn(J,e.ctrlKey||e.metaKey||e.key===` `);return;case`+`:case`=`:if(!t.zoom)return;e.preventDefault(),qt(ne,G/2,K/2,!0);return;case`-`:case`_`:if(!t.zoom)return;e.preventDefault(),qt(1/ne,G/2,K/2,!0);return;case`0`:case`Home`:e.preventDefault(),ir.fit(!0);return;case`Escape`:if(!(J>=0||Y.size>0||q))return;e.preventDefault(),J=-1,q&&fn(null),Sn(new Set,!0),mn(),B=!0,Q();return}},Kn=()=>qt(re,G/2,K/2,!0),qn=()=>qt(1/re,G/2,K/2,!0),Jn=()=>ir.fit(!0);T.addEventListener(`pointerdown`,On),T.addEventListener(`pointermove`,kn),T.addEventListener(`pointerup`,jn),T.addEventListener(`pointercancel`,Nn),T.addEventListener(`pointerleave`,Pn),T.addEventListener(`wheel`,Ln,{passive:!1}),T.addEventListener(`dblclick`,Rn),T.addEventListener(`keydown`,Gn),T.addEventListener(`focus`,zn),T.addEventListener(`blur`,Bn),w.zoomIn.addEventListener(`click`,Kn),w.zoomOut.addEventListener(`click`,qn),w.fit.addEventListener(`click`,Jn);let Yn=typeof ResizeObserver==`function`?new ResizeObserver(()=>Q()):null;Yn?.observe(T);let Xn=()=>{if(k)return;let e=a.readTheme(w.root,E.palette),t=e.fontFamily!==D.fontFamily;if(a.themeColorsChanged(D,e)||t){if(D=e,t){_t(dt(),!1);return}bt(),Jt=``,Yt(),Ze=``,Q()}},Zn=a.watchTheme(Xn),Qn=n.watchLocale(()=>{k||n.resolveLocale(E.locale)===O.locale||(O=d.graphLocale(E.locale,E.labels),Zt(),(q||J>=0)&&mn())}),$n=async(e=new Set)=>{let t=++Qe,n=await r.createRenderer(E.renderer??`auto`,()=>{let e=l.style(C.createElement(`canvas`),{position:`absolute`,left:`0`,top:`0`,pointerEvents:`none`});return e.setAttribute(`aria-hidden`,`true`),e.className=`minerva-chart-data`,e},t=>{k||X?.kind!==t||(X.destroy(),X.canvas.remove(),X=null,$n(new Set([...e,t])))},e);if(k||t!==Qe){n?.destroy();return}X&&(X.destroy(),X.canvas.remove()),X=n,B=!0,n?(w.root.dataset.renderer=n.kind,T.insertBefore(n.canvas,w.foreground),pe(`renderer`,n.kind)):delete w.root.dataset.renderer,$e(n?.kind??null),Q()},er=e=>{z.clear();for(let t of e.nodes??[])t?.collapsed&&z.add(t.id);Oe.clear();for(let t of e.groups??[])t?.hidden&&Oe.add(t.id)},tr=()=>{if(!E.selected)return;let e=new Set;for(let t of E.selected){let n=A.index.get(t);n!==void 0&&e.add(n)}Y.clear(),e.forEach(e=>Y.add(e)),Ze=``,B=!0};er(E),_t(new Map,!1),tr(),$n();let nr=i.followDefaultRenderer(()=>E.renderer,()=>void $n()),rr=(e,t)=>{let n=dt(),r=[...Y].map(e=>A.nodes[e].id),i=J>=0?A.nodes[J].id:null;if(t){for(let t of e.nodes??[])t?.collapsed&&z.add(t.id);A=f.buildModel(e.nodes??[],e.edges??[],e.groups);for(let t of e.groups??[])t?.hidden&&Oe.add(t.id);Y.clear();for(let e of r){let t=A.index.get(e);t!==void 0&&Y.add(t)}J=i===null?-1:A.index.get(i)??-1,q=null,w.tooltip.style.display=`none`}_t(n,!0)},ir={setOptions(e){if(k)return;let t=E;E=e,(e.palette??[]).join()!==(t.palette??[]).join()&&(D=a.readTheme(w.root,e.palette)),(e.locale!==t.locale||e.labels!==t.labels)&&(O=d.graphLocale(e.locale,e.labels));let n=e.nodes!==t.nodes||e.edges!==t.edges||e.groups!==t.groups,r=se(e);n||r!==ve?(ve=r,rr(e,n)):(yt(),bt(),Me=!0,Ze=``,Jt=``,Yt(),Zt(),Q()),(e.selected??[]).join(``)!==(t.selected??[]).join(``)&&tr(),(e.renderer??`auto`)!==(t.renderer??`auto`)&&$n()},setData(e){k||ir.setOptions({...E,nodes:e.nodes,edges:e.edges,groups:e.groups??E.groups})},fit(e=!0){if(k)return;We=!1,R?.running()&&(Je=!0);let t=Ut();t?Kt(t,e):Ge=!0,Q()},focusNode(e,t={}){if(k)return;let n=A.index.get(e);if(n===void 0)return;if(L&&!I[n]){let r=!1;for(let e=L.parent[n];e>=0;e=L.parent[e])z.delete(A.nodes[e].id)&&(r=!0);r&&_t(dt(),t.animate!==!1),n=A.index.get(e)}let r=t.zoom??Math.max(H,1),[i,a]=Wt(),o=Math.max(i,Math.min(a,r));We=!0;let s=G||T.clientWidth,c=K||T.clientHeight;Kt([o,s/2-F[n]*o,c/2-ye[n]*o],t.animate!==!1),J=n,Ze=``,B=!0,Q()},select(e){if(k)return;let t=e===null?[]:typeof e==`string`?[e]:e,n=new Set;for(let e of t){let t=A.index.get(e);t!==void 0&&n.add(t)}Sn(n,!0)},getSelection:()=>[...Y].map(e=>A.nodes[e].id),expand(e){if(k)return;if(e===void 0){if(!z.size)return;let e=[...z];z.clear(),_t(dt(),!0);for(let t of e)A.index.has(t)&&pe(`toggle`,{id:t,collapsed:!1});return}let t=A.index.get(e);t===void 0?z.delete(e):wn(t,!1,!0)},collapse(e){if(k)return;if(e===void 0){if(!L)return;let e=[];if(L.children.forEach((t,n)=>{let r=A.nodes[n].id;t.length&&L.parent[n]>=0&&!z.has(r)&&(z.add(r),e.push(r))}),!e.length)return;_t(dt(),!0);for(let t of e)pe(`toggle`,{id:t,collapsed:!0});return}let t=A.index.get(e);t!==void 0&&wn(t,!0,!0)},toggle(e){let t=A.index.get(e);t===void 0||k||wn(t,Pt(t),!0)},getPositions(){let e={};for(let t=0;t<A.n;t++)e[A.nodes[t].id]={x:F[t],y:ye[t]};return e},relayout(){k||_t(j===`force`?new Map:dt(),!0)},resize(){Q()},getRenderer:()=>X?.kind??null,ready:et,refreshTheme:Xn,on(e,t){let n=fe.get(e);return n||(n=new Set,fe.set(e,n)),n.add(t),()=>{n.delete(t)}},destroy(){k||(k=!0,Qe++,tt&&ue?.cancelAnimationFrame(tt),yn&&ue?.cancelAnimationFrame(yn),Fn&&clearTimeout(Fn),tt=0,yn=0,ft(),Yn?.disconnect(),nr(),Zn(),Qn(),T.removeEventListener(`pointerdown`,On),T.removeEventListener(`pointermove`,kn),T.removeEventListener(`pointerup`,jn),T.removeEventListener(`pointercancel`,Nn),T.removeEventListener(`pointerleave`,Pn),T.removeEventListener(`wheel`,Ln),T.removeEventListener(`dblclick`,Rn),T.removeEventListener(`keydown`,Gn),T.removeEventListener(`focus`,zn),T.removeEventListener(`blur`,Bn),w.zoomIn.removeEventListener(`click`,Kn),w.zoomOut.removeEventListener(`click`,qn),w.fit.removeEventListener(`click`,Jn),X?.destroy(),X=null,fe.clear(),$e(null),w.root.remove())}};return ir};function le(t){return e.luminance(t.background)<.4||e.luminance(t.text)>.6}exports.createGraphChart=ce,exports.resolveLayout=oe;
1
+ const e=require("../color.cjs"),t=require("../renderers/types.cjs"),n=require("../locale.cjs"),r=require("../renderers/detect.cjs"),i=require("../renderers/follow.cjs"),a=require("../theme.cjs"),o=require("./force.cjs"),s=require("./circular.cjs"),c=require("./dag.cjs"),l=require("./dom.cjs"),u=require("./geometry.cjs"),d=require("./labels.cjs"),f=require("./model.cjs"),p=require("./sizing.cjs"),m=require("./tree.cjs"),h=require("./worker.cjs");var g=[`force`,`dag`,`tree`,`radial`,`mindmap`,`org`,`circular`,`arc`,`none`],_=new Set([`tree`,`radial`,`mindmap`,`org`]),v=5e3,y=.4,ee=8,b=10,te=14,x=24,ne=4e3,re=2e3,ie=450,ae=320,oe=9,se=1.25,ce=1.4,le=(e,t,n)=>{let r=t===1?e*16:t===2?e*400:e;return Math.exp(Math.max(-1,Math.min(1,r*(n?.01:.0025))))},ue=e=>e<.5?4*e*e*e:1-(-2*e+2)**3/2,de=()=>{let e=new Float32Array(1024),t=0,n=n=>{if(t+n<=e.length)return;let r=new Float32Array(Math.max(e.length*2,t+n));r.set(e.subarray(0,t)),e=r};return{push(r,i){n(2),e[t++]=r,e[t++]=i},pushAll(r){n(r.length);for(let n=0;n<r.length;n++)e[t++]=r[n]},count:()=>t/2,points:()=>e.subarray(0,t)}},fe=e=>e&&g.includes(e)?e:`force`,pe=e=>JSON.stringify([fe(e.layout),e.direction??``,e.force??null,e.dag?{...e.dag,criticalPath:void 0,criticalColor:void 0}:null,e.tree??null,e.circular??null,e.nodeSize??null,e.nodeShape??null,e.nodeLabels===!1]),me=(g,me)=>{let S=g.ownerDocument,ge=S.defaultView,C=l.createGraphDom(g),w=C.stage,T=me,E=a.readTheme(C.root,T.palette),_e=he(E),D=d.graphLocale(T.locale,T.labels),O=!1,ve=new Map,ye=(e,t)=>{ve.get(e)?.forEach(e=>e(t))},be=e=>!!ve.get(e)?.size,xe=typeof ge?.matchMedia==`function`?ge.matchMedia(`(prefers-reduced-motion: reduce)`):null,Se=()=>ge?.performance?.now()??Date.now(),k=f.buildModel(T.nodes??[],T.edges??[],T.groups),A=fe(T.layout),Ce=`TB`,we=pe(T),j,M=new Float64Array,N=new Float64Array,P=new Float64Array,Te=new Float64Array,Ee=new Float64Array,De=new Float64Array,F=new Uint8Array,Oe=null,ke=null,Ae=1,I=null,je=null,Me=null,L=null,Ne=!1,R=new Set,Pe=new Set,Fe=null,Ie=new Int32Array,Le=[],Re=!0,ze=0,z=!0,Be=[],Ve=0,B=[],He=[],Ue=new Float64Array,We=new Uint8Array,Ge=new Uint8Array,Ke=[],qe=[.94,.27,.27,1],Je=new Float64Array,V=1,H=0,U=0,Ye=null,Xe=!1,Ze=!0,Qe=!1,$e=!1,et=!1,W=0,G=0,K=null,q=-1,tt=!1,J=new Set,nt=null,rt=``,Y=null,it=0,at=()=>{},ot=new Promise(e=>{at=e}),st=0,X=()=>{let e=T.interaction;if(e===!1)return null;let t=typeof e==`object`?e:{};return{pan:t.pan??!0,zoom:t.zoom??!0,wheel:t.wheel??`modifier`,drag:t.drag??(A===`force`||A===`none`||A===`circular`),select:t.select??!0,keyboard:t.keyboard??!0,zoomRange:t.zoomRange??[.02,8]}},ct=()=>_.has(A),lt=()=>ct()&&T.tree?.collapsible!==!1,ut=()=>{let e=T.animation;return e===!1||xe?.matches?0:typeof e==`number`&&e>=0?e:ie},dt=()=>T.highlight??(A===`dag`?`lineage`:`neighbors`),ft=()=>{let e=T.edgeStyle,t=A===`dag`||ct();if(e===`straight`||e===`curve`||(e===`spline`||e===`orthogonal`)&&t)return e;if(e)return`curve`;switch(A){case`dag`:case`tree`:case`radial`:case`mindmap`:return`spline`;case`org`:return`orthogonal`;case`circular`:case`arc`:return`curve`;default:return`straight`}},pt=(t,n)=>{let r=E.resolve?E.resolve(t,n):e.parseColor(t)??n;return r[3]<1?e.mix(E.background,[r[0],r[1],r[2],1],r[3]):r},mt=C.foreground.getContext(`2d`),ht=(e,t)=>mt?(mt.font=t,mt.measureText(e).width):e.length*7,gt=()=>{let e=new Map;if(M.length!==k.n)return e;for(let t=0;t<k.n;t++)Number.isFinite(M[t])&&e.set(k.nodes[t].id,{x:M[t],y:N[t],visible:!!F[t]&&!Ne});return e},_t=()=>{L?.destroy(),L=null,Ne=!1},vt=()=>{let e=new Set;for(let t of R){let n=k.index.get(t);n!==void 0&&e.add(n)}return e},yt=(e,t,n,r)=>{let i=T.tree??{};return{n:k.n,source:k.source,target:k.target,width:t,height:n,type:e,direction:Ce,root:i.root===void 0?-1:k.index.get(i.root)??-1,levelGap:r,siblingGap:i.siblingGap??(e===`org`?20:e===`mindmap`?10:12),collapsed:vt(),compact:i.compact}},bt=(e,t=!0)=>{et=t;let n=k.n,r=new Float64Array(n).fill(NaN),i=new Float64Array(n).fill(NaN),a=new Uint8Array(n),s=0;for(let t=0;t<n;t++){let n=k.nodes[t],o=e.get(n.id);o?(r[t]=o.x,i[t]=o.y,s++):Number.isFinite(n.x)&&Number.isFinite(n.y)&&(r[t]=n.x,i[t]=n.y,s++),n.fixed&&Number.isFinite(n.x)&&Number.isFinite(n.y)&&(r[t]=n.x,i[t]=n.y,a[t]=1)}if(s&&s<n){for(let e=0;e<n;e++)if(!Number.isFinite(r[e]))for(let t=k.adjStart[e];t<k.adjStart[e+1];t++){let n=k.adjEdge[t],a=k.source[n]===e?k.target[n]:k.source[n];if(Number.isFinite(r[a])){r[e]=r[a]+e*7919%17-8,i[e]=i[a]+e*104729%17-8;break}}}let c=new Float64Array(n);for(let e=0;e<n;e++)c[e]=Math.max(j.width[e],j.height[e])/2;let l=k.edgeValueRange,u=new Float64Array(k.m).fill(1);if(l){let e=(l[0]+l[1])/2||1;k.edges.forEach((t,n)=>{let r=t.value;Number.isFinite(r)&&r>0&&(u[n]=Math.max(.5,Math.min(2,Math.sqrt(r/e))))})}let d=s===0?1:s===n?.3:.6,f=w.clientWidth,p=w.clientHeight,m=o.forceInit(n,k.source,k.target,T.force,{x:r,y:i,radius:c,fixed:a,weight:u,alpha:d,aspect:f>0&&p>0?f/p:1}),g=T.force??{},_=g.animate!==!1,v=g.worker??`auto`,y=v===!0||v===`auto`&&n>=2e3;if(M=r,N=i,P=r,Te=i,!_&&!y){let e=o.forceKernel()(m);for(;e.tick(50););e.settle(),xt();return}Ne=!_,L=h.createForceRunner(m,{worker:y,stream:_,now:Se,onTick:()=>{Re=!0,Q()},onEnd:()=>{let e=Ne;Ne=!1,Re=!0,!Xe&&et&&(Ze=!0,Qe=!e),et=!1,xt(),Q()}})},xt=()=>{Promise.resolve().then(()=>{O||ye(`layoutEnd`,{layout:A})})},St=(e,t)=>{_t();let n=A;A=fe(T.layout),Ce=T.direction??(A===`tree`?`LR`:`TB`),n!==A&&(Ze=!0);let r=k.n;I=null,je=null,Me=null;let i=null;if(A===`mindmap`){let e=new Float64Array(r).fill(1);i=m.tidyTreeLayout(yt(`mindmap`,e,e,1)).depth}j=p.computeSizing(k,A,T,i,ht,E.fontFamily);let a=new Uint8Array(r).fill(1),o=new Float64Array(r),l=new Float64Array(r);switch(A){case`dag`:{let e=T.dag??{};je=c.layeredLayout({n:r,source:k.source,target:k.target,width:j.width,height:j.height,direction:Ce,layerGap:e.layerGap??56,nodeGap:e.nodeGap??24,sweeps:e.sweeps??8}),o=je.x,l=je.y;break}case`tree`:case`radial`:case`mindmap`:case`org`:{let e=A,t=T.tree?.levelGap??Math.max(m.TREE_LEVEL_GAP[e],j.levelGap);I=m.tidyTreeLayout(yt(e,j.layoutWidth,j.layoutHeight,t)),o=I.x,l=I.y,a.set(I.visible);break}case`circular`:case`arc`:{let e=0;for(let t=0;t<r;t++)e=Math.max(e,j.layoutWidth[t]+(A===`arc`?8:10));let t={n:r,source:k.source,target:k.target,group:k.groupOf,order:T.circular?.order??`group`,spacing:Math.max(A===`arc`?16:18,e)};Me=A===`arc`?s.arcPositions(t):s.circularPositions(t),o=Me.x,l=Me.y;break}case`none`:k.nodes.forEach((t,n)=>{let r=e.get(t.id);o[n]=Number.isFinite(t.x)?t.x:r?.x??0,l[n]=Number.isFinite(t.y)?t.y:r?.y??0})}let u=new Uint8Array(r);for(let t=0;t<r;t++)u[t]=+!!e.get(k.nodes[t].id)?.visible;if(F=a,Ie=Ct(),A===`force`)bt(e),ke=null,Oe=null;else{P=o,Te=l,M=new Float64Array(r),N=new Float64Array(r);let n=t&&e.size?ut():0;if(n>0){Ee=new Float64Array(r),De=new Float64Array(r);for(let t=0;t<r;t++){let n=e.get(k.nodes[t].id);if(n&&n.visible){Ee[t]=n.x,De[t]=n.y;continue}let r=I?I.parent[t]:-1,i;for(;r>=0&&!(i=e.get(k.nodes[r].id))?.visible;)r=I.parent[r];Ee[t]=i?.visible?i.x:P[t],De[t]=i?.visible?i.y:Te[t]}M.set(Ee),N.set(De),Oe=u,ke={start:Se(),duration:n},Ae=0}else M.set(P),N.set(Te),ke=null,Oe=null}Xe||(Ze=!0,Qe=e.size>0&&t&&A!==`force`),wt(),Tt(),Je=new Float64Array(k.m).fill(NaN),hn=null,Re=!0,z=!0,rt=``,sn(),an(),Q(),A!==`force`&&xt()},Ct=()=>{let e=new Int32Array(k.n);if(!I)return e;let t=[];I.parent.forEach((e,n)=>{e<0&&t.push(n)});for(let e=0;e<t.length;e++)t.push(...I.children[t[e]]);for(let n=t.length-1;n>=0;n--){let r=t[n],i=I.parent[r];i>=0&&(e[i]+=e[r]+1)}return e},wt=()=>{Fe=null;let e=T.dag?.criticalPath;if(!e||A!==`dag`)return;let t=new Uint8Array(k.n),n=new Uint8Array(k.m);if(e===!0){let e=c.longestPath(k.n,k.source,k.target,e=>{let t=k.nodes[e].value;return Number.isFinite(t)&&t>=0?t:1});e.nodes.forEach(e=>t[e]=1),e.edges.forEach(e=>n[e]=1)}else{let r=e.map(e=>k.index.get(e)??-1);r.forEach(e=>{e>=0&&(t[e]=1)});for(let e=0;e<k.m;e++){let t=r.indexOf(k.source[e]);t>=0&&r[t+1]===k.target[e]&&(n[e]=1)}}Fe={nodes:t,edges:n}},Tt=()=>{let t=E.background;_e=he(E);let n=E.palette.length?E.palette:[E.primary];Ke=k.groups.map((e,t)=>e.color?pt(e.color,n[t%n.length]):n[t%n.length]),qe=pt(T.dag?.criticalColor??`var(--danger-color, #ef4444)`,[.94,.27,.27,1]);let r=new Int32Array(k.n).fill(-1);if(A===`mindmap`&&I){let e=[];I.parent.forEach((t,n)=>t<0&&e.push(n)),(e.length?[...I.children[e[0]],...e.slice(1)]:[]).forEach((e,t)=>{let n=[e];for(;n.length;){let e=n.pop();r[e]=t,n.push(...I.children[e])}})}B=k.nodes.map((e,t)=>{if(e.color)return pt(e.color,E.primary);let i=k.groupOf[t];return i>=0?Ke[i]:r[t]>=0?n[(r[t]+1)%n.length]:E.primary});let i=e.mix(t,E.textMuted,_e?.42:.36),a=T.edgeColor??`neutral`,o=T.edgeWidth,s=k.edgeValueRange,[c,l]=Array.isArray(o)?o:typeof o==`number`?[o,o]:s&&s[1]>s[0]?[1,5]:[1.25,1.25];He=[],Ue=new Float64Array(k.m),We=new Uint8Array(k.m),Ge=new Uint8Array(k.m);let u=T.arrows??A===`dag`;k.edges.forEach((n,r)=>{let d=k.source[r],f=k.target[r],p=i;n.color?p=pt(n.color,i):a===`source`?p=e.mix(t,B[d],.55):a===`target`?p=e.mix(t,B[f],.55):A===`mindmap`&&(p=e.mix(t,B[f],.7)),He.push(p);let m=c;Number.isFinite(n.width)&&n.width>0?m=n.width:s&&s[1]>s[0]&&Number.isFinite(n.value)?m=c+(l-c)*Math.sqrt((n.value-s[0])/(s[1]-s[0])):A===`mindmap`&&I&&o===void 0&&(m=Math.max(1.25,3.4-I.depth[f]*.75)),Ue[r]=m,We[r]=n.directed??u?1:0,Ge[r]=+!!n.dashed}),z=!0},Z=e=>{if(Ne)return 0;let t=k.groupOf[e];if(t>=0&&Pe.has(k.groups[t].id))return 0;let n=F[e],r=Oe?Oe[e]:n;return ke?n&&r?1:n?Ae:r?1-Ae:0:n},Et=e=>j.kind[e]!==p.NodeKind.Circle,Dt=(e,t,n)=>t?[M[e],N[e]+n*j.height[e]/2]:[M[e]+n*j.width[e]/2,N[e]],Ot=()=>{let e=A===`org`?`TB`:Ce;return{vertical:A!==`mindmap`&&(e===`TB`||e===`BT`),sign:e===`BT`||e===`RL`?-1:1}},kt=(e,t,n,r)=>{if(e.length<4)return e;let[i,a]=[e[2]-e[0],e[3]-e[1]],o=Math.hypot(i,a)||1,[s,c]=u.endDirection(e),l=u.boundaryDistance(Et(t),j.width[t],j.height[t],i/o,a/o),d=u.boundaryDistance(Et(n),j.width[n],j.height[n],s,c)+ +!!r;return u.trimPath(e,l,d)},At=e=>{let t=[];j.kind[e]===p.NodeKind.Circle&&T.nodeLabels!==!1&&t.push(Math.PI/2);for(let n=k.adjStart[e];n<k.adjStart[e+1];n++){let r=k.adjEdge[n],i=k.source[r]===e?k.target[r]:k.source[r];if(i===e||Z(i)<=0)continue;let a=M[i]-M[e],o=N[i]-N[e];a*a+o*o>1e-12&&t.push(Math.atan2(o,a))}if(!t.length)return-Math.PI/2;t.sort((e,t)=>e-t);let n=t[t.length-1],r=t[0]+Math.PI*2-n,i=n+r/2;for(let e=1;e<t.length;e++){let n=t[e]-t[e-1];n>r+1e-9&&(r=n,i=t[e-1]+n/2)}return i},jt=e=>Math.max(12,Math.min(40,Math.min(j.width[e],j.height[e])*.9)),Mt=(e,t,n)=>{let r=Math.abs(t)>.5,i=e=>r?j.width[e]/2:j.height[e]/2,a=e=>r?j.height[e]/2:j.width[e]/2,o=1/0,s=(r,s,c,l)=>{let u=r-M[e],d=s-N[e],f=u*t+d*n;f<=0||Math.abs(u*n-d*t)>=a(e)+l+4||(o=Math.min(o,f-i(e)-c))};for(let t=0;t<k.n;t++)t!==e&&Z(t)>0&&s(M[t],N[t],i(t),a(t));if(je&&!ke)for(let e of je.routes)for(let t=2;t<e.length-2;t+=2)s(e[t],e[t+1],0,0);return o},Nt=e=>{let t=jt(e);if(A!==`dag`&&(!ct()||A===`radial`))return[At(e),t];let{vertical:n}=Ot(),r=A===`org`&&I?.stacked[e]?[0]:n?[0,Math.PI]:[-Math.PI/2,Math.PI/2],i=j.kind[e]===p.NodeKind.Circle&&T.nodeLabels!==!1,a=r[0],o=-1/0;for(let t of r){let r=k.n>ne?1/0:Mt(e,Math.round(Math.cos(t)),Math.round(Math.sin(t)));t>0&&!n&&i&&(r-=18),r>o&&(o=r,a=t)}let s=0;for(let t=k.adjStart[e];t<k.adjStart[e+1];t++){let e=k.adjEdge[t];k.source[e]===k.target[e]&&(s=Math.max(s,k.bend[e]))}return[a,Math.min(t,Math.max(8,(o-6)/(1+.6*s)))]},Pt=e=>{let t=k.source[e],[n,r]=Nt(t),i=j.width[t],a=j.height[t],o=r*(1+.6*k.bend[e]),s=+!!We[e];if(Et(t))return u.boxLoopPath(M[t],N[t],i,a,n,o,Math.max(10,r*.8)*(1+.35*k.bend[e]),s);let c=e=>u.boundaryDistance(!1,i,a,Math.cos(e),Math.sin(e));return u.loopPath(M[t],N[t],n,c(n-.42),c(n+.42)+s,o)},Ft=(e,t)=>t*Math.min(ee,e/(2*Math.abs(t)+2)),It=(e,t,n,r,i,a)=>{let o=e.slice(),s=o.length-2,c=+!r,l=(e,t)=>{let n=r?j.width[t]:j.height[t],a=Ft(n,i);if(o[e+c]+=a,!Et(t)){let i=r?N[t]:M[t],s=1-c,l=n/2;o[e+s]=i+(o[e+s]>=i?1:-1)*Math.sqrt(Math.max(0,l*l-a*a))}};for(let e=2;e<s;e+=2)o[e+c]+=i*te;if(l(0,t),l(s,n),a&&o.length===4){let t=[(o[0]+o[2])/2,(o[1]+o[3])/2];t[c]=(e[c]+e[2+c])/2+i*x,o.splice(2,0,t[0],t[1])}return o},Lt=(e,t)=>{let n=k.source[e],r=k.target[e],i=!!We[e];if(n===r)return Pt(e);let a=k.bend[e],o=Number.isFinite(a);if(A===`arc`){let e=o?1+.25*(n<r?a:-a):1;return kt(u.arcPath(M[n],M[r],N[n],e),n,r,i)}let s=M[r]-M[n],c=N[r]-N[n],l=o?a*y:0;if(t===`straight`){if(!l)return null;let e=(M[n]+M[r])/2,t=(N[n]+N[r])/2;return kt(u.quadraticPath(M[n],N[n],e-c*l,t+s*l,M[r],N[r]),n,r,i)}if(A===`circular`&&t===`curve`){let e=Math.max(0,Math.min(1,T.circular?.tension??.8)),t=(M[n]+M[r])/2*(1-e)-c*l,a=(N[n]+N[r])/2*(1-e)+s*l;return kt(u.quadraticPath(M[n],N[n],t,a,M[r],N[r]),n,r,i)}if(A===`radial`&&t===`spline`){let e=Math.hypot(M[n],N[n]),t=Math.hypot(M[r],N[r]),a=Math.atan2(N[n],M[n]),o=Math.atan2(N[r],M[r]),s=(e+t)/2,c=[M[n],N[n]];return u.cubicPoints(c,M[n],N[n],e<1e-6?M[n]:s*Math.cos(a),e<1e-6?N[n]:s*Math.sin(a),s*Math.cos(o),s*Math.sin(o),M[r],N[r]),kt(c,n,r,i)}if(t===`spline`||t===`orthogonal`){let i=Ot(),s=i.sign;A===`mindmap`&&(s=M[r]>=M[n]?1:-1);let c=je&&!ke?je.routes[e]:null,l;if(c&&c.length>=4)l=c;else{let e=i.vertical?N[r]-N[n]:M[r]-M[n],t=A===`mindmap`||e*s>=0?s:-s;l=[...Dt(n,i.vertical,t),...Dt(r,i.vertical,-t)]}let d=o?n<r?a:-a:0;if(d&&(l=It(l,n,r,i.vertical,d,t===`spline`)),t===`orthogonal`){if(A===`org`&&I?.stacked[r]&&I.parent[r]===n){let e=N[n]+j.height[n]/2,t=M[r]-j.width[r]/2,i=M[n]+Ft(j.width[n],d),a=N[r]-Ft(j.height[r],d),o=t-10+d*3,s=e+14+d*4;return u.roundCorners([i,e,i,s,o,s,o,a,t,a],6)}if(A===`org`&&l.length===4&&!d){let e=(l[1]+l[3])/2;return u.roundCorners([l[0],l[1],l[0],e,l[2],e,l[2],l[3]],6)}return u.orthogonalPath(l,i.vertical,A===`org`?6:8,d*b)}return u.splinePath(l,i.vertical)}let d=(M[n]+M[r])/2,f=(N[n]+N[r])/2,p=o?l:.18;return kt(u.quadraticPath(M[n],N[n],d-c*p,f+s*p,M[r],N[r]),n,r,i)},Rt=()=>{let e=ft();Le=Array(k.m);for(let t=0;t<k.m;t++)Le[t]=Z(k.source[t])>0&&Z(k.target[t])>0?Lt(t,e):null;Re=!1,ze++},zt=e=>{let t=k.source[e],n=k.target[e],r=M[n]-M[t],i=N[n]-N[t],a=Math.hypot(r,i);if(a<1e-9)return null;let o=r/a,s=i/a,c=u.boundaryDistance(Et(t),j.width[t],j.height[t],o,s),l=u.boundaryDistance(Et(n),j.width[n],j.height[n],o,s)+ +!!We[e];return c+l>=a?null:[M[t]+o*c,N[t]+s*c,M[n]-o*l,N[n]-s*l]},Bt=()=>{let e=K?.type===`node`?[K.index]:q>=0?[q]:[...J],t=dt(),n=K?.type===`edge`?K.index:-1,r=`${t}|${e.join(`,`)}|${n}`;if(r===rt)return;if(rt=r,z=!0,(t===`none`||!e.length)&&n<0){nt=null;return}let i=new Uint8Array(k.n),a=new Uint8Array(k.m);if(t!==`none`)for(let n of e)t===`lineage`?f.lineage(k,n,i,a):f.neighborhood(k,n,i,a);n>=0&&(a[n]=1,i[k.source[n]]=1,i[k.target[n]]=1),nt={nodes:i,edges:a,accent:(t===`lineage`||e.length!==1?E.primary:B[e[0]])??E.primary}},Vt=()=>{Ve++;let n=E.background,r=[],i=ft(),a=k.n>2e3?2:3,o=nt,s=[new Map,new Map,new Map],c=(t,n,r)=>{let i=`${e.packColor(n)}|${Math.round(r*4)}`,a=s[t].get(i);return a||(a={color:n,width:r,buf:de()},s[t].set(i,a)),a.buf},l=e=>(6+e*1.6)/V,d=e=>(8+e*2.2)/V,f=T.arrowStyle===`filled`,m=[new Map,new Map,new Map],h=[],g=(n,r,i,a,o,s,p,g)=>{if(h.length=0,!f){u.arrowHead(h,o,s,p,g,l(a),t.GAP),n.pushAll(h);return}let _=e.packColor(i),v=m[r].get(_);v||(v={color:i,points:[]},m[r].set(_,v)),u.filledArrow(v.points,h,o,s,p,g,d(a),t.GAP),c(r,i,Math.min(a,1)).pushAll(h)};for(let r=0;r<k.m;r++){let a=k.source[r],s=k.target[r],l=Math.min(Z(a),Z(s));if(l<=0)continue;let p=He[r],m=Ue[r],h=1;Fe?.edges[r]&&(p=qe,m+=1),o&&(o.edges[r]?(h=2,Fe?.edges[r]||(p=e.mix(n,o.accent,.9)),m+=.75):(h=0,p=e.mix(n,p,.22))),l<1&&(p=e.mix(n,p,l));let _=c(h,p,m),v=Le[r]??null;if(!v){if(i!==`straight`||A===`arc`)continue;let e=zt(r);if(!e)continue;if(!Ge[r]&&!(f&&We[r])){if(_.push(e[0],e[1]),_.push(e[2],e[3]),_.push(t.GAP,t.GAP),We[r]){let t=Math.hypot(e[2]-e[0],e[3]-e[1])||1;g(_,h,p,m,e[2],e[3],(e[2]-e[0])/t,(e[3]-e[1])/t)}continue}v=[e[0],e[1],e[2],e[3]]}if(v.length<4)continue;let y=v;if(f&&We[r]&&(y=u.trimPath(v.slice(),0,d(m)*.72)),Ge[r]?_.pushAll(u.dashPath(y,5/V,4/V,t.GAP)):(_.pushAll(y),_.push(t.GAP,t.GAP)),We[r]){let[e,t]=u.endDirection(v);g(_,h,p,m,v[v.length-2],v[v.length-1],e,t)}}s.forEach((e,t)=>{for(let[n,i]of e){if(i.buf.count()<2)continue;let e={kind:`line`,key:`edges:${t}:${n}`,version:Ve,color:i.color,points:i.buf.points(),count:i.buf.count(),width:i.width,sorted:!1};r.push(e)}for(let[e,n]of m[t]){let i={kind:`area`,key:`heads:${t}:${e}`,version:Ve,color:n.color,points:Float32Array.from(n.points),count:n.points.length/3,opacity:1,sorted:!1,flat:!0};r.push(i)}});let _=(t,r)=>{let i=B[t];return o&&!o.nodes[t]&&(i=e.mix(n,i,.2)),r<1?e.mix(n,i,r):i},y=[],ee=[],b=[],te=[],x=[],ne=[],re=new Map,ie=new Map,ae=A===`mindmap`?999:Math.max(1,Math.min(A===`org`?10:8,(A===`org`?10:7)*V)),oe=k.n<=v;for(let t of Ht()){let r=Z(t);if(r<=0)continue;let i=M[t],s=N[t],c=_(t,r),l=J.has(t),u=K?.type===`node`&&K.index===t;if(j.kind[t]===p.NodeKind.Circle){let r=Math.max(a,j.width[t]*V);oe&&y.push(i,s,r+3,e.packColor(n)),lt()&&I&&Ie[t]>0&&!Ut(t)?te.push(i,s,r,e.packColor(c)):ee.push(i,s,r,e.packColor(c)),l?x.push(i,s,r+7,e.packColor(E.primary)):u&&b.push(i,s,r+6,e.packColor(e.mix(n,B[t],.7)));continue}let d=j.width[t],f=j.height[t],m=j.kind[t]===p.NodeKind.Solid,h=!!Fe?.nodes[t],g=m?c:e.mix(n,c,h?1:_e?.62:.5),v=m?c:e.mix(n,c,_e?.2:.09);h&&(g=e.mix(n,qe,r)),o&&!o.nodes[t]&&(v=e.mix(n,v,.5),m||(g=e.mix(n,g,.4)));let ae=`${Math.round(d*2)/2}|${h?2:1.25}`,se=re.get(ae);if(se||(se={half:d/2,inset:h?2:1.25,border:[],fill:[]},re.set(ae,se)),se.border.push(i,s-f/2,s+f/2,e.packColor(g)),se.fill.push(i,s-f/2,s+f/2,e.packColor(v)),l||u){let r=(l?3:2.5)/V,a=`${Math.round((d/2+r)*64)}`,o=ie.get(a);o||ie.set(a,o=[]),o.push(d/2+r,i,s-f/2-r,s+f/2+r,e.packColor(l?E.primary:e.mix(n,B[t],.55)))}j.kind[t]===p.NodeKind.Card&&d*V>=96&&ne.push(i-d/2+26,s,Math.min(32,f-16)*V,e.packColor(c))}let se=(e,t,n,i)=>{if(!t.length)return;let a=t.length/4,o=new ArrayBuffer(a*16),s=new Float32Array(o),c=new Uint32Array(o);for(let e=0;e<a;e++)s[e*4]=t[e*4],s[e*4+1]=t[e*4+1],s[e*4+2]=t[e*4+2],c[e*4+3]=t[e*4+3];let l={kind:`scatter`,key:e,version:Ve,color:E.primary,instances:o,count:a,opacity:n,stroke:i};r.push(l)},ce=(e,t,n,i,a)=>{if(!t.length)return;let o=t.length/4,s=new ArrayBuffer(o*16),c=new Float32Array(s),l=new Uint32Array(s);for(let e=0;e<o;e++)c[e*4]=t[e*4],c[e*4+1]=t[e*4+1],c[e*4+2]=t[e*4+2],l[e*4+3]=t[e*4+3];let u={kind:`bar`,key:e,version:Ve,color:E.primary,instances:s,count:o,halfWidth:n,radius:a,inset:i,minHalf:0,sorted:!1};r.push(u)};se(`halo`,y,1,0),se(`nodes`,ee,1,0),se(`collapsed`,te,.28,2),se(`hover-rings`,b,0,2),se(`selection`,x,0,2.25);for(let[e,t]of ie){let n=[];for(let e=0;e<t.length;e+=5)n.push(t[e+1],t[e+2],t[e+3],t[e+4]);ce(`outline:${e}`,n,t[0],0,ae===999?999:ae+3)}for(let[e,t]of re)ce(`border:${e}`,t.border,t.half,0,ae),ce(`fill:${e}`,t.fill,t.half,t.inset,ae===999?999:Math.max(0,ae-1));return se(`avatars`,ne,1,0),r},Ht=()=>{let e=[],t=[];for(let n=0;n<k.n;n++)J.has(n)||K?.type===`node`&&K.index===n||n===q?t.push(n):e.push(n);return e.concat(t)},Ut=e=>!!I&&I.children[e].some(e=>F[e]);function Q(){O||st||!ge||(st=ge.requestAnimationFrame(Gt))}let Wt=()=>({xScale:2*V/W,xOffset:2*H/W-1,yScale:-2*V/G,yOffset:1-2*U/G});function Gt(){if(st=0,O)return;let e=w.clientWidth,t=w.clientHeight;if(e<=0||t<=0)return;(e!==W||t!==G)&&(W=e,G=t,Xe||(Ze=!0),z=!0);let n=ge?.devicePixelRatio||1,r=!1,i=!1;if(L?.running()&&(L.step(8),Re=!0,r=L.running()&&!L.threaded(),i=L.running()&&et&&!Xe&&!Ne),ke){let e=Math.min(1,(Se()-ke.start)/Math.max(1,ke.duration));Ae=ue(e);for(let e=0;e<k.n;e++)M[e]=Ee[e]+(P[e]-Ee[e])*Ae,N[e]=De[e]+(Te[e]-De[e])*Ae;e>=1&&(ke=null,Oe=null,Ae=1),Re=!0,r=!0}if(Ze){Ze=!1;let e=Qt();e&&Qe&&$e&&!xe?.matches?Ye={from:[V,H,U],to:e,start:Se()}:e&&([V,H,U]=e),Qe=!1,z=!0}else if(i){let e=Qt();e&&(Ye=null,!$e||xe?.matches?[V,H,U]=e:en(e,.25)&&(r=!0),z=!0)}if(Ye){let e=Math.min(1,(Se()-Ye.start)/ae),t=ue(e),[n,i,a]=Ye.from,[o,s,c]=Ye.to,l=n*(o/n)**+t,u=(W/2-i)/n,d=(G/2-a)/n,f=(W/2-s)/o,p=(G/2-c)/o,m=u+(f-u)*t,h=d+(p-d)*t;V=l,H=W/2-m*l,U=G/2-h*l,e>=1&&([V,H,U]=Ye.to,Ye=null),z=!0,r=!0}if(Re&&(Rt(),z=!0),Bt(),Y){z&&(Be=Ne?[]:Vt(),z=!1);let r=Math.max(1,Math.round(e*n)),i=Math.max(1,Math.round(t*n));(Y.canvas.width!==r||Y.canvas.height!==i)&&Y.resize(r,i),Y.canvas.style.width=`${e}px`,Y.canvas.style.height=`${t}px`,Y.render(Be,{transform:Wt(),width:r,height:i,dpr:n}),$e=!0}l.sizeCanvas(C.foreground,e,t,n),Xt(n),K&&wn(),r&&Q()}let Kt=e=>M[e]*V+H,qt=e=>N[e]*V+U,Jt=(e,t,n)=>{if(n<=8)return``;if(e.measureText(t).width<=n)return t;let r=0,i=t.length;for(;r<i;){let a=r+i+1>>1;e.measureText(`${t.slice(0,a)}…`).width<=n?r=a:i=a-1}return r?`${t.slice(0,r)}…`:``},Yt=t=>e.luminance(t)>.6?`#111827`:`#ffffff`,Xt=t=>{let n=C.foreground.getContext(`2d`);if(!n||(n.setTransform(t,0,0,t,0,0),n.clearRect(0,0,W,G),Ne||!k.n))return;let r=E.fontFamily,i=e.toCss(E.text),a=e.toCss(E.textMuted),o=e.toCss(E.background),s=nt,c=Math.ceil(W/8)+1,l=Math.ceil(G/8)+1,d=new Uint8Array(c*l),f=(e,t,n,r,i)=>{let a=Math.max(0,Math.floor(e/8)),o=Math.min(c-1,Math.floor(n/8)),s=Math.max(0,Math.floor(t/8)),u=Math.min(l-1,Math.floor(r/8));if(a>o||s>u)return!1;if(!i){for(let e=s;e<=u;e++)for(let t=a;t<=o;t++)if(d[e*c+t])return!1;return!0}for(let e=s;e<=u;e++)for(let t=a;t<=o;t++)d[e*c+t]=1;return!0},m=(e,t,n)=>e>-n&&t>-n&&e<W+n&&t<G+n,h=T.nodeLabels!==!1;for(let t=0;t<k.n;t++){if(j.kind[t]===p.NodeKind.Circle)continue;let c=Z(t);if(c<=0)continue;let l=Kt(t),u=qt(t),d=j.width[t]*V,g=j.height[t]*V;if(!m(l,u,Math.max(d,g)))continue;f(l-d/2,u-g/2,l+d/2,u+g/2,!0);let _=j.font[t]*V,v=Math.max(oe,_),y=k.nodes[t];n.globalAlpha=c*(s&&!s.nodes[t]?.45:1);let ee=j.kind[t]===p.NodeKind.Solid,b=j.kind[t]===p.NodeKind.Card&&d>=96;if(h&&g>=v+1){let e=b?l-d/2+48*V:l,o=b?d-56*V:d-Math.max(4,12*V);n.textAlign=b?`left`:`center`,n.textBaseline=`middle`;let s=Math.max(8.5,_*.88),c=v+Math.max(2,_*.6)+s,f=y.subtitle&&c<=g-4?y.subtitle:``,m=f?u-c/2+v/2:u;n.font=`${j.weight[t]} ${v}px ${r}`,n.fillStyle=ee?Yt(B[t]):i;let h=Jt(n,p.labelOf(k,t),o);if(h&&n.fillText(h,e,m),f&&h){n.font=`${s}px ${r}`,n.fillStyle=ee?Yt(B[t]):a;let i=Jt(n,f,o);i&&n.fillText(i,e,u+c/2-s/2)}}if(b){let e=Array.from(p.labelOf(k,t).trim())[0]??``;n.textAlign=`center`,n.font=`600 ${Math.max(8,13*V)}px ${r}`,n.fillStyle=Yt(B[t]),n.fillText(e.toUpperCase(),l-d/2+26*V,u)}if(lt()&&I&&I.children[t].length){let a=!Ut(t),s=K?.type===`node`&&K.index===t||q===t;if(a||s){let s=A===`org`,f=A===`mindmap`&&I.side[t]<0?-1:1,p=s?l:l+f*(d/2+9),m=s?u+g/2+9:u,h=a?String(Ie[t]):`−`;n.font=`600 10px ${r}`;let _=Math.max(8,n.measureText(h).width/2+5);n.globalAlpha=c,n.beginPath(),n.fillStyle=o,n.strokeStyle=e.toCss(e.mix(E.background,B[t],.75)),n.lineWidth=1.25,typeof n.roundRect==`function`?n.roundRect(p-_,m-8,_*2,16,8):n.rect(p-_,m-8,_*2,16),n.fill(),n.stroke(),n.fillStyle=i,n.textAlign=`center`,n.fillText(h,p,m+.5)}}}n.globalAlpha=1;let g=T.nodeLabels??`auto`,_=e=>J.has(e)||e===q||K?.type===`node`&&K.index===e||!!s&&!!s.nodes[e],v=new Uint8Array(k.n),y=700,ee=(e,t)=>{if(v[e]||j.kind[e]!==p.NodeKind.Circle||g===!1)return;let c=Z(e);if(c<=0)return;let l=Kt(e),u=qt(e);if(!m(l,u,160))return;let d=Math.max(k.n>2e3?1:1.5,j.width[e]*V/2);if(!t&&g===`auto`&&(A===`force`||A===`none`)&&d*2<5)return;let h=_(e),ee=s&&!s.nodes[e],b=p.labelOf(k,e),te=Math.min(180,j.labelWidth[e]*(h?1.06:1)),x=Zt(e,l,u,d),ne,re,ie,ae;if(x.angle!==0){let e=x.x+Math.cos(x.angle)*(x.align===`left`?7:-7),t=x.y+Math.sin(x.angle)*(x.align===`left`?7:-7);ne=e-6,ie=e+6,re=t-6,ae=t+6}else ne=x.align===`left`?x.x:x.align===`right`?x.x-te:x.x-te/2,ie=ne+te,re=x.baseline===`top`?x.y:x.baseline===`bottom`?x.y-14:x.y-7,ae=re+14;if(!t&&!f(ne-2,re,ie+2,ae,!1))return;f(ne-2,re,ie+2,ae,!0),v[e]=1,y--,n.save(),n.globalAlpha=c*(ee?.35:1),n.font=`${h?600:400} 12px ${r}`,n.textAlign=x.align,n.textBaseline=x.baseline,n.translate(x.x,x.y),x.angle&&n.rotate(x.angle);let oe=j.labelWidth[e]>180?Jt(n,b,180):b;n.lineJoin=`round`,n.lineWidth=3,n.strokeStyle=o,n.strokeText(oe,0,0),n.fillStyle=h?i:ee?a:i,n.fillText(oe,0,0),n.restore()};for(let e=0;e<k.n;e++)_(e)&&ee(e,!0);let b=T.edgeLabels??`auto`;if(b!==!1){n.font=`11px ${r}`,n.textAlign=`center`,n.textBaseline=`middle`;let t=0;for(let r=0;r<k.m&&t<400;r++){let c=k.edges[r].label;if(!c)continue;let l=k.source[r],d=k.target[r],p=Math.min(Z(l),Z(d));if(p<=0)continue;let h=!!s?.edges[r];if(b===`hover`&&!h||b===`auto`&&!h&&(V<.75||s&&!h))continue;let g,_,v=Le[r];if(v){let e=u.pointAt(v,u.pathLength(v)/2);if(g=e[0]*V+H,_=e[1]*V+U,l===d){let e=g-(M[l]*V+H),t=_-(N[l]*V+U),n=Math.hypot(e,t)||1;g+=e/n*10,_+=t/n*10}}else g=(M[l]+M[d])/2*V+H,_=(N[l]+N[d])/2*V+U;if(!m(g,_,40))continue;Number.isNaN(Je[r])&&(Je[r]=n.measureText(c).width);let y=Je[r]+10;(h||f(g-y/2,_-8,g+y/2,_+8,!1))&&(f(g-y/2,_-8,g+y/2,_+8,!0),t++,n.globalAlpha=p,n.fillStyle=o,n.beginPath(),typeof n.roundRect==`function`?n.roundRect(g-y/2,_-8,y,16,8):n.rect(g-y/2,_-8,y,16),n.fill(),h&&(n.strokeStyle=e.toCss(e.mix(E.background,nt?.accent??E.primary,.6)),n.lineWidth=1,n.stroke()),n.fillStyle=h?i:a,n.fillText(c,g,_+.5))}n.globalAlpha=1}if(g!==!1){let e=g===!0;for(let t=0;t<k.rank.length&&y>0;t++){let n=k.rank[t];if(ee(n,!1),!e&&t>4e3)break}}if(tt&&q>=0&&Z(q)>0){let t=Kt(q),r=qt(q);if(n.save(),n.strokeStyle=e.toCss(E.primary),n.lineWidth=2,n.setLineDash([4,3]),n.beginPath(),j.kind[q]===p.NodeKind.Circle){let e=Math.max(3,j.width[q]*V/2)+6;n.arc(t,r,e,0,Math.PI*2)}else{let e=j.width[q]*V+10,i=j.height[q]*V+10;n.rect(t-e/2,r-i/2,e,i)}n.stroke(),n.restore()}},Zt=(e,t,n,r)=>{let i={x:t,y:n+r+3,align:`center`,baseline:`top`,angle:0},a=e=>{let i=Math.cos(e)<0;return{x:t+Math.cos(e)*(r+4),y:n+Math.sin(e)*(r+4),align:i?`right`:`left`,baseline:`middle`,angle:i?e+Math.PI:e}};switch(A){case`tree`:{let a=Ut(e);if(Ce===`LR`||Ce===`RL`){let e=Ce===`LR`!==a;return{x:t+(e?r+5:-r-5),y:n,align:e?`left`:`right`,baseline:`middle`,angle:0}}return Ce===`BT`?{x:t,y:n-r-3,align:`center`,baseline:`bottom`,angle:0}:i}case`radial`:return I&&(Ut(e)||I.depth[e]===0&&Math.hypot(M[e],N[e])<1e-6)?i:a(I?I.side[e]:0);case`circular`:return a(Me?Me.angle[e]:0);case`arc`:return{x:t,y:n+r+4,align:`left`,baseline:`middle`,angle:Math.PI/2};default:return i}},Qt=()=>{if(W<=0||G<=0)return null;let e=1/0,t=1/0,n=-1/0,r=-1/0,i=0;for(let a=0;a<k.n;a++){if(!F[a]||!Number.isFinite(P[a]))continue;let o=k.groupOf[a];if(o>=0&&Pe.has(k.groups[o].id))continue;let s=j.width[a]/2,c=j.height[a]/2;e=Math.min(e,P[a]-s),n=Math.max(n,P[a]+s),t=Math.min(t,Te[a]-c),r=Math.max(r,Te[a]+c),j.kind[a]===p.NodeKind.Circle&&(i=Math.max(i,j.labelWidth[a]))}if(!(e<=n))return null;if(A===`arc`)for(let e=0;e<k.m;e++){let n=k.source[e],r=k.target[e];if(!F[n]||!F[r])continue;let i=k.bend[e],a=n!==r&&Number.isFinite(i)?1+.25*Math.abs(i):1;t=Math.min(t,Te[n]-Math.abs(P[r]-P[n])/2*a)}if(k.hasLoops)for(let i=0;i<k.m;i++){let a=k.source[i];if(a!==k.target[i]||!F[a])continue;let[o,s]=Nt(a),c=Math.max(j.width[a],j.height[a])/2+s*(1+.6*k.bend[i]),l=P[a]+Math.cos(o)*c,u=Te[a]+Math.sin(o)*c;e=Math.min(e,l-s/2),n=Math.max(n,l+s/2),t=Math.min(t,u-s/2),r=Math.max(r,u+s/2)}let a=T.fitPadding??24,[o,s,c,l]=[a,a,a,a],u=T.nodeLabels===!1?0:Math.min(140,i)+8;if(j.kind.some(e=>e===p.NodeKind.Circle)&&u>8){if(A===`tree`&&(Ce===`LR`||Ce===`RL`)){let e=0;for(let t=0;t<k.n;t++)I&&I.parent[t]<0&&F[t]&&Ut(t)&&(e=Math.max(e,Math.min(140,j.labelWidth[t])+8));Ce===`LR`?(s+=u,o+=e):(o+=u,s+=e)}else A===`radial`||A===`circular`?(o+=u,s+=u,c+=u*.6,l+=u*.6):l+=A===`arc`?u:16}(A===`org`||A===`mindmap`)&&(l+=10);let d=Math.max(10,W-o-s),f=Math.max(10,G-c-l),m=Math.max(1e-6,n-e),h=Math.max(1e-6,r-t),g=X()?.zoomRange??[.02,8],_=Math.min(d/m,f/h,1.6,g[1]);_=Math.max(_,1e-4);let v=o+(d-m*_)/2-e*_,y=c+(f-h*_)/2-t*_;return[_,v,y]},$t=()=>{let e=X()?.zoomRange??[.02,8],t=Qt();return[Math.min(e[0],t?t[0]*.5:e[0]),e[1]]},en=(e,t)=>{let[n,r,i]=e,a=(W/2-H)/V,o=(G/2-U)/V,s=(W/2-r)/n,c=(G/2-i)/n;if(!(Math.abs(Math.log(n/V))>.002||Math.hypot(s-a,c-o)*n>.5))return[V,H,U]=e,!1;let l=V*(n/V)**+t,u=a+(s-a)*t,d=o+(c-o)*t;return V=l,H=W/2-u*l,U=G/2-d*l,!0},tn=(e,t)=>{Ye=null,t&&!xe?.matches&&W>0?Ye={from:[V,H,U],to:e,start:Se()}:[V,H,U]=e,z=!0,Q()},nn=(e,t,n,r=!1)=>{let[i,a]=$t(),o=Math.max(i,Math.min(a,V*e)),s=o/V;tn([o,t-(t-H)*s,n-(n-U)*s],r),Xe=!0},rn=``,an=()=>{let t=T.legend,n=k.groups.filter(e=>e.count>0),r=t===void 0?n.length>1:!!t&&n.length>0,i=typeof t==`object`?t:{},a=i.toggle??!0,o=i.position===`bottom`,s=`${r}|${o}|${a}`;if(r)for(let t of n){let n=k.groups.indexOf(t);s+=`\n${t.id}\u0001${t.name}\u0001${e.toCss(Ke[n]??E.primary)}\u0001${Pe.has(t.id)}`}if(s===rn)return;rn=s;let c=[...C.legend.children].indexOf(S.activeElement);if(C.legend.replaceChildren(),C.legend.style.display=r?`flex`:`none`,r){C.legend.style.order=o?`1`:`0`,C.legend.style.padding=o?`8px 4px 0`:`0 4px 8px`;for(let t of n){let n=k.groups.indexOf(t),r=Pe.has(t.id),i=S.createElement(a?`button`:`span`);i instanceof HTMLButtonElement&&(i.type=`button`,i.setAttribute(`aria-pressed`,String(!r)),i.addEventListener(`click`,()=>on(t.id))),l.style(i,{display:`inline-flex`,alignItems:`center`,gap:`6px`,padding:`2px 4px`,margin:`0`,border:`0`,borderRadius:`4px`,background:`none`,font:`inherit`,color:`var(--text-secondary-color, #6b7280)`,cursor:a?`pointer`:`default`,opacity:r?`0.45`:`1`,textDecoration:r?`line-through`:`none`}),i.append(l.swatch(S,e.toCss(Ke[n]??E.primary)),S.createTextNode(t.name)),C.legend.appendChild(i)}c>=0&&C.legend.children[c]?.focus()}},on=e=>{let t=k.groups.find(t=>t.id===e);if(!t)return;let n=!Pe.has(e);n?Pe.add(e):Pe.delete(e),C.live.textContent=d.fill(n?D.labels.hidden:D.labels.shown,{name:t.name});for(let e of[...J])Z(e)<=0&&k.groupOf[e]>=0&&Pe.has(k.groups[k.groupOf[e]].id)&&J.delete(e);q>=0&&k.groupOf[q]>=0&&Pe.has(k.groups[k.groupOf[q]].id)&&(q=-1),K&&xn(null),Re=!0,z=!0,rt=``,an(),Q(),ye(`groupToggle`,{group:e,hidden:n})},sn=()=>{let{labels:e,count:t}=D,n=A===`dag`?e.dag:ct()?e.tree:e.chart;w.setAttribute(`aria-roledescription`,n),w.setAttribute(`aria-label`,T.ariaLabel??n);let r=X()?.keyboard;r?w.tabIndex=0:w.removeAttribute(`tabindex`);let i=X();w.style.cursor=i?.pan?`grab`:`default`;let a=[d.fill(e.summary,{nodes:t(k.n),edges:t(k.m)})],o=k.groups.filter(e=>e.count>0).map(e=>e.name);o.length&&a.push(d.fill(e.groupsSummary,{groups:o.join(e.listSeparator)})),r&&a.push(e.keyboardHelp),C.summary.textContent=a.join(` `);let s=T.controls!==!1&&!!i?.zoom;C.controls.style.display=s?`flex`:`none`,C.zoomIn.setAttribute(`aria-label`,e.zoomIn),C.zoomIn.title=e.zoomIn,C.zoomOut.setAttribute(`aria-label`,e.zoomOut),C.zoomOut.title=e.zoomOut,C.fit.setAttribute(`aria-label`,e.fit),C.fit.title=e.fit},cn=null,ln=32,un=0,dn=(e,t)=>(e+2097152)*4194304+(t+2097152),fn=()=>{un=0;for(let e=0;e<k.n;e++)un=Math.max(un,j.width[e],j.height[e]);ln=Math.max(16,un);let e=new Map;for(let t=0;t<k.n;t++){if(Z(t)<=0)continue;let n=dn(Math.floor(M[t]/ln),Math.floor(N[t]/ln)),r=e.get(n);r||e.set(n,r=[]),r.push(t)}cn=e},pn=(e,t)=>{if(Ne||!k.n)return-1;fn();let n=(e-H)/V,r=(t-U)/V,i=3/V,a=(k.n>2e3?1:1.5)/V,o=Math.ceil((un/2+i+a)/ln),s=Math.floor(n/ln),c=Math.floor(r/ln),l=-1,u=1/0;for(let e=-o;e<=o;e++)for(let t=-o;t<=o;t++){let o=cn.get(dn(s+t,c+e));if(o)for(let e of o){let t=n-M[e],o=r-N[e];if(j.kind[e]===p.NodeKind.Circle){let n=Math.max(j.width[e]/2,a)+i,r=t*t+o*o;r<=n*n&&r<=u&&(l=e,u=r)}else if(Math.abs(t)<=j.width[e]/2+i&&Math.abs(o)<=j.height[e]/2+i){let n=t*t+o*o;n<=u&&(l=e,u=n)}}}return l},mn=(e,t)=>{if(Ne)return-1;let n=(e-H)/V,r=(t-U)/V,i=4/V,a=-1,o=i*i,s=e=>{if(Math.min(Z(k.source[e]),Z(k.target[e]))<=0)return;let t=Le[e]??null;if(!t){let n=zt(e);if(!n)return;t=n}let i=u.distanceToPath(t,n,r);i<=o&&(a=e,o=i)};if(k.m<re){for(let e=0;e<k.m;e++)s(e);return a}let c=gn();if(!c)return-1;let{cell:l,x0:d,y0:f,cols:p,rows:m,start:h,items:g,stamp:_}=c,v=Math.max(0,Math.floor((n-i-d)/l)),y=Math.min(p-1,Math.floor((n+i-d)/l)),ee=Math.max(0,Math.floor((r-i-f)/l)),b=Math.min(m-1,Math.floor((r+i-f)/l)),te=++c.visit;for(let e=ee;e<=b;e++)for(let t=v;t<=y;t++){let n=e*p+t;for(let e=h[n];e<h[n+1];e++){let t=g[e];_[t]!==te&&(_[t]=te,s(t))}}return a},hn=null,gn=()=>{let e=hn;if(e&&e.geometry===ze||e&&L?.running()&&Se()-e.built<250)return e;let t=k.m,n=e=>Math.min(Z(k.source[e]),Z(k.target[e]))<=0?null:Le[e]??zt(e),r=1/0,i=1/0,a=-1/0,o=-1/0,s=0,c=0;for(let e=0;e<t;e++){let t=n(e);if(t){for(let e=0;e<t.length;e+=2)r=Math.min(r,t[e]),a=Math.max(a,t[e]),i=Math.min(i,t[e+1]),o=Math.max(o,t[e+1]),e&&(s+=Math.hypot(t[e]-t[e-2],t[e+1]-t[e-1]));c+=t.length/2-1}}if(!(r<=a&&i<=o))return null;let l=Math.max(a-r,o-i,1e-6),u=Math.max(l/512,s/Math.max(1,c)*.5,1e-6),d=Math.min(512,Math.floor((a-r)/u)+1),f=Math.min(512,Math.floor((o-i)/u)+1),p=new Int32Array(d*f+1),m=e=>{for(let a=0;a<t;a++){let t=n(a);if(t)for(let n=2;n<t.length;n+=2){let o=t[n-2],s=t[n-1],c=Math.max(1,Math.ceil(Math.hypot(t[n]-o,t[n+1]-s)/u)),l=-1;for(let p=0;p<c;p++){let m=o+(t[n]-o)*p/c,h=s+(t[n+1]-s)*p/c,g=o+(t[n]-o)*(p+1)/c,_=s+(t[n+1]-s)*(p+1)/c,v=Math.floor((Math.min(m,g)-r)/u),y=Math.floor((Math.max(m,g)-r)/u),ee=Math.floor((Math.min(h,_)-i)/u),b=Math.floor((Math.max(h,_)-i)/u);for(let t=Math.max(0,ee);t<=Math.min(f-1,b);t++)for(let n=Math.max(0,v);n<=Math.min(d-1,y);n++){let r=t*d+n;r!==l&&(l=r,e(r,a))}}}}};m(e=>p[e+1]++);for(let e=0;e<d*f;e++)p[e+1]+=p[e];let h=new Int32Array(p[d*f]),g=p.slice(0,d*f);return m((e,t)=>{h[g[e]++]=t}),hn={cell:u,x0:r,y0:i,cols:d,rows:f,start:p,items:h,stamp:new Int32Array(t),visit:0,geometry:ze,built:Se()},hn},_n=(e,t)=>{let n=pn(e,t);if(n>=0)return{type:`node`,index:n};let r=vn()||be(`hover`)||be(`click`)?mn(e,t):-1;return r>=0?{type:`edge`,index:r}:null},vn=()=>T.tooltip!==!1,yn=t=>{let n=w.offsetLeft,r=w.offsetTop;if(t.type===`node`){let i=t.index,a=k.nodes[i],o=k.groupOf[i];return{type:`node`,id:a.id,node:a,index:k.nodeInput[i],group:o>=0?k.groups[o].id:void 0,color:e.toCss(B[i]),degree:k.inDegree[i]+k.outDegree[i],clientX:Kt(i)+n,clientY:qt(i)+r}}let i=t.index,a=k.edges[i],o=k.source[i],s=k.target[i],c=Le[i],l=(M[o]+M[s])/2,d=(N[o]+N[s])/2;if(c){let e=u.pointAt(c,u.pathLength(c)/2);l=e[0],d=e[1]}return{type:`edge`,id:`${a.source}→${a.target}`,edge:a,index:k.edgeInput[i],color:e.toCss(He[i]),clientX:l*V+H+n,clientY:d*V+U+r}},bn=(e,t)=>e===t||!!e&&!!t&&e.type===t.type&&e.index===t.index,xn=e=>{if(bn(e,K)){e&&wn();return}K=e,Cn(),z=!0,Q(),ye(`hover`,e?yn(e):null)},Sn=()=>K??(tt&&q>=0?{type:`node`,index:q}:null),Cn=()=>{let e=C.tooltip,t=Sn();if(!t||!vn()){e.style.display=`none`;return}let n=yn(t),r=typeof T.tooltip==`object`?T.tooltip.render:void 0,i=r?r(n):Dn(t);if(i===null){e.style.display=`none`;return}typeof i==`string`?e.textContent=i:e.replaceChildren(i),e.style.display=`block`,wn()},wn=()=>{let e=C.tooltip,t=Sn();if(!t||e.style.display===`none`)return;let n,r,i=14;if(t.type===`node`)n=Kt(t.index),r=qt(t.index),i+=Math.max(j.width[t.index],0)*V/2;else{let e=yn(t);n=e.clientX-w.offsetLeft,r=e.clientY-w.offsetTop}let a=e.offsetWidth,o=e.offsetHeight,s=n+i;s+a>W-4&&(s=n-i-a),s=Math.max(4,Math.min(W-a-4,s));let c=Math.max(4,Math.min(G-o-4,r-o/2));e.style.transform=`translate(${Math.round(s)}px, ${Math.round(c)}px)`},Tn=(e,t)=>{let n=l.style(S.createElement(`div`),{display:`flex`,alignItems:`center`,gap:`8px`}),r=l.style(S.createElement(`span`),{flex:`1 1 auto`,color:`var(--text-secondary-color, #6b7280)`});r.textContent=e;let i=l.style(S.createElement(`span`),{fontWeight:`600`,fontVariantNumeric:`tabular-nums`,marginLeft:`12px`});return i.textContent=t,n.append(r,i),n},En=(e,t)=>{let n=l.style(S.createElement(`div`),{display:`flex`,alignItems:`center`,gap:`6px`,fontWeight:`600`,marginBottom:`2px`,color:`var(--text-color, #1f2937)`});return n.append(l.swatch(S,e),S.createTextNode(t)),n},Dn=t=>{let{labels:n}=D,r=S.createDocumentFragment();if(t.type===`node`){let i=t.index,a=k.nodes[i];if(r.append(En(e.toCss(B[i]),p.labelOf(k,i))),a.subtitle){let e=l.style(S.createElement(`div`),{color:`var(--text-secondary-color, #6b7280)`,marginBottom:`2px`});e.textContent=a.subtitle,r.append(e)}let o=k.groupOf[i];if(o>=0&&r.append(Tn(n.group,k.groups[o].name)),Number.isFinite(a.value)&&r.append(Tn(n.value,D.value(a.value))),(A===`dag`||T.arrows||k.edges.some(e=>e.directed))&&!ct()?(r.append(Tn(n.incoming,D.count(k.inDegree[i]))),r.append(Tn(n.outgoing,D.count(k.outDegree[i])))):ct()||r.append(Tn(n.degree,D.count(k.inDegree[i]+k.outDegree[i]))),ct()&&Ie[i]>0&&!Ut(i)&&r.append(Tn(n.hiddenChildren,D.count(Ie[i]))),Fe?.nodes[i]){let t=e.toCss(qe),i=l.style(S.createElement(`div`),{display:`inline-flex`,alignItems:`center`,gap:`5px`,marginTop:`4px`,padding:`0 8px`,borderRadius:`999px`,border:`1px solid color-mix(in srgb, ${t} 35%, transparent)`,background:`color-mix(in srgb, ${t} 10%, transparent)`,color:`var(--text-color, #1f2937)`,fontWeight:`500`,lineHeight:`18px`});i.className=`minerva-chart-badge`;let a=l.swatch(S,t);l.style(a,{width:`7px`,height:`7px`}),i.append(a,S.createTextNode(n.critical)),r.append(i)}return r}let i=t.index,a=k.edges[i],o=k.source[i],s=k.target[i],c=We[i]?` → `:` — `;if(r.append(En(e.toCss(He[i]),`${p.labelOf(k,o)}${c}${p.labelOf(k,s)}`)),a.label){let e=S.createElement(`div`);e.textContent=a.label,r.append(e)}return Number.isFinite(a.value)&&r.append(Tn(n.value,D.value(a.value))),r},On=0,kn=null,An=(e,t)=>{kn={x:e,y:t},!On&&ge&&(On=ge.requestAnimationFrame(()=>{On=0;let e=kn;if(kn=null,!e||O||$)return;let t=_n(e.x,e.y);xn(t),w.style.cursor=t?.type===`node`?`pointer`:X()?.pan?`grab`:`default`}))},jn=(e,t)=>{e.size===J.size&&[...e].every(e=>J.has(e))||(J.clear(),e.forEach(e=>J.add(e)),z=!0,Q(),C.live.textContent=J.size?d.fill(D.labels.selected,{count:D.count(J.size)}):D.labels.selectionCleared,t&&ye(`select`,{ids:[...J].map(e=>k.nodes[e].id)}))},Mn=(e,t)=>{let n=X();if(!n?.select)return;let r=n.select===`multiple`||t,i=new Set(r?J:[]);r&&i.has(e)?i.delete(e):i.add(e),jn(i,!0)},Nn=(e,t,n)=>{if(!I||!I.children[e]?.length)return!1;let r=k.nodes[e].id;if(t===R.has(r))return!1;t?R.add(r):R.delete(r);let i=gt();St(i,!0);let a=new Set([...J].filter(e=>F[e]));return a.size!==J.size&&jn(a,!0),q>=0&&!F[q]&&(q=e),C.live.textContent=t?d.fill(D.labels.collapsed,{name:p.labelOf(k,e),count:D.count(Ie[e])}):d.fill(D.labels.expanded,{name:p.labelOf(k,e)}),n&&ye(`toggle`,{id:r,collapsed:t}),!0},$=null,Pn=new Map,Fn=e=>{let t=w.getBoundingClientRect();return{x:e.clientX-t.left,y:e.clientY-t.top}},In=()=>{let e=[...Pn.values()],t=e[0]??{x:0,y:0},n=e[1]??t;return{distance:Math.hypot(t.x-n.x,t.y-n.y),center:{x:(t.x+n.x)/2,y:(t.y+n.y)/2}}},Ln=e=>{let t=X();if(!t||e.target?.closest?.(`button`))return;let n=Fn(e);if(Pn.set(e.pointerId,n),w.setPointerCapture?.(e.pointerId),Ye=null,Pn.size===2&&(t.zoom||t.pan)){let{distance:e,center:t}=In();$={mode:`pinch`,index:-1,origin:t,view:[V,H,U],offset:[0,0],distance:e,moved:!0,button:0};return}if(Pn.size>1)return;let r=e.button===0?pn(n.x,n.y):-1,i={origin:n,view:[V,H,U],distance:0,moved:!1,button:e.button};$=r>=0&&t.drag?{...i,mode:`node`,index:r,offset:[(n.x-H)/V-M[r],(n.y-U)/V-N[r]]}:{...i,mode:`pan`,index:r,offset:[0,0]},e.button===1&&e.preventDefault()},Rn=e=>{let t=Fn(e);if(Pn.has(e.pointerId)&&Pn.set(e.pointerId,t),!$){if(e.pointerType===`touch`&&Pn.size)return;An(t.x,t.y);return}let n=X();if(!n)return;if($.mode===`pinch`){let{distance:e,center:t}=In(),[r,i,a]=$.view,[o,s]=$t(),c=n.zoom&&$.distance>0?e/$.distance:1,l=Math.max(o,Math.min(s,r*c)),u=l/r,d=$.origin.x,f=$.origin.y,p=n.pan?t.x:d,m=n.pan?t.y:f;V=l,H=p-(d-i)*u,U=m-(f-a)*u,Xe=!0,z=!0,Q();return}let r=t.x-$.origin.x,i=t.y-$.origin.y;if(!$.moved&&Math.hypot(r,i)<3)return;if($.moved||($.moved=!0,K&&xn(null),w.style.cursor=($.mode,`grabbing`)),$.mode===`node`){let e=$.index;et=!1;let n=(t.x-H)/V-$.offset[0],r=(t.y-U)/V-$.offset[1];if(L)L.drag(e,n,r);else if(A===`force`){let t=gt();zn(t),L?.drag(e,n,r)}M[e]=P[e]=n,N[e]=Te[e]=r,Re=!0,Q();return}if(!n.pan)return;let[a,o,s]=$.view;V=a,H=o+r,U=s+i,Xe=!0,z=!0,Q()},zn=e=>{_t(),bt(e,!1)},Bn=e=>{let t=$;if(Pn.delete(e.pointerId),w.hasPointerCapture?.(e.pointerId)&&w.releasePointerCapture(e.pointerId),Pn.size){t?.mode===`pinch`&&($=null);return}if($=null,w.style.cursor=X()?.pan?`grab`:`default`,!t)return;if(t.mode===`node`&&t.moved){L?.release(t.index,!!k.nodes[t.index].fixed);return}if(t.moved||t.button!==0)return;let n=Fn(e),r=_n(n.x,n.y);Vn(r,e.ctrlKey||e.metaKey||e.shiftKey)},Vn=(e,t)=>{if(!e){J.size&&X()?.select&&jn(new Set,!0);return}let n=yn(e);if(ye(`click`,n),e.type!==`node`)return;let r=e.index;lt()&&I?.children[r]?.length&&Nn(r,Ut(r),!0),Mn(r,t)},Hn=e=>{Pn.delete(e.pointerId),Pn.size||($?.mode===`node`&&L?.release($.index,!!k.nodes[$.index].fixed),$=null)},Un=()=>{kn=null,!$&&K&&xn(null)},Wn=0,Gn=()=>{let e=/Mac|iPhone|iPad/.test(ge?.navigator?.platform??``);C.hint.textContent=d.fill(D.labels.zoomHint,{key:e?`⌘`:`Ctrl`}),C.hint.style.opacity=`1`,Wn&&clearTimeout(Wn),Wn=setTimeout(()=>{Wn=0,C.hint.style.opacity=`0`},1200)},Kn=e=>{let t=X();if(!t?.zoom)return;let n=e.ctrlKey&&!e.metaKey;if(t.wheel===`modifier`&&!e.ctrlKey&&!e.metaKey){Math.abs(e.deltaY)>Math.abs(e.deltaX)&&Gn();return}e.preventDefault();let r=Fn(e);Ye=null,nn(1/le(e.deltaY,e.deltaMode,n),r.x,r.y),K&&xn(null)},qn=e=>{if(!X())return;let t=Fn(e);pn(t.x,t.y)>=0||(e.preventDefault(),pr.fit(!0))},Jn=()=>{let e;try{e=w.matches(`:focus-visible`)}catch{e=!0}tt=e,e&&(w.style.boxShadow=`0 0 0 2px var(--primary-color, #4f46e5)`)},Yn=()=>{w.style.boxShadow=``,tt=!1,q>=0&&(q=-1,Cn(),z=!0,Q())},Xn=()=>{let e=[];for(let t=0;t<k.n;t++)Z(t)>0&&(!ke||F[t])&&e.push(t);return e},Zn=e=>{if(e===q)return;q=e,tt=!0,z=!0;let t=Kt(e),n=qt(e);(t<40||n<40||t>W-40||n>G-40)&&tn([V,H+W/2-t,U+G/2-n],!0);let r=k.groupOf[e],i=k.inDegree[e]+k.outDegree[e];C.live.textContent=r>=0?d.fill(D.labels.nodeFocusGroup,{name:p.labelOf(k,e),group:k.groups[r].name,degree:D.count(i)}):d.fill(D.labels.nodeFocus,{name:p.labelOf(k,e),degree:D.count(i)}),Cn(),Q(),ye(`hover`,yn({type:`node`,index:e}))},Qn=(e,t,n)=>{let r=Kt(e),i=qt(e),a=-1,o=1/0;for(let s of Xn()){if(s===e)continue;let c=Kt(s)-r,l=qt(s)-i,u=c*t+l*n;if(u<=.5)continue;let d=Math.abs(c*n-l*t);if(d>u*2.5)continue;let f=u+d*2;f<o&&(o=f,a=s)}return a},$n=()=>{let e=[...J].find(e=>Z(e)>0);if(e!==void 0)return e;for(let e of k.rank)if(Z(e)>0)return e;return-1},er=e=>{let t=X();if(!t?.keyboard)return;let n={ArrowLeft:[-1,0],ArrowRight:[1,0],ArrowUp:[0,-1],ArrowDown:[0,1]}[e.key];if(n){if(e.preventDefault(),q<0||Z(q)<=0){let e=$n();e>=0&&Zn(e);return}let t=Qn(q,n[0],n[1]);t>=0&&Zn(t);return}switch(e.key){case`Enter`:case` `:if(q<0)return;e.preventDefault(),e.key===`Enter`&&lt()&&I?.children[q]?.length&&Nn(q,Ut(q),!0),ye(`click`,yn({type:`node`,index:q})),Mn(q,e.ctrlKey||e.metaKey||e.key===` `);return;case`+`:case`=`:if(!t.zoom)return;e.preventDefault(),nn(se,W/2,G/2,!0);return;case`-`:case`_`:if(!t.zoom)return;e.preventDefault(),nn(1/se,W/2,G/2,!0);return;case`0`:case`Home`:e.preventDefault(),pr.fit(!0);return;case`Escape`:if(!(q>=0||J.size>0||K))return;e.preventDefault(),q=-1,K&&xn(null),jn(new Set,!0),Cn(),z=!0,Q();return}},tr=()=>nn(ce,W/2,G/2,!0),nr=()=>nn(1/ce,W/2,G/2,!0),rr=()=>pr.fit(!0);w.addEventListener(`pointerdown`,Ln),w.addEventListener(`pointermove`,Rn),w.addEventListener(`pointerup`,Bn),w.addEventListener(`pointercancel`,Hn),w.addEventListener(`pointerleave`,Un),w.addEventListener(`wheel`,Kn,{passive:!1}),w.addEventListener(`dblclick`,qn),w.addEventListener(`keydown`,er),w.addEventListener(`focus`,Jn),w.addEventListener(`blur`,Yn),C.zoomIn.addEventListener(`click`,tr),C.zoomOut.addEventListener(`click`,nr),C.fit.addEventListener(`click`,rr);let ir=typeof ResizeObserver==`function`?new ResizeObserver(()=>Q()):null;ir?.observe(w);let ar=()=>{if(O)return;let e=a.readTheme(C.root,T.palette),t=e.fontFamily!==E.fontFamily;if(a.themeColorsChanged(E,e)||t){if(E=e,t){St(gt(),!1);return}Tt(),rn=``,an(),rt=``,Q()}},or=a.watchTheme(ar),sr=n.watchLocale(()=>{O||n.resolveLocale(T.locale)===D.locale||(D=d.graphLocale(T.locale,T.labels),sn(),(K||q>=0)&&Cn())}),cr=async(e=new Set)=>{let t=++it,n=await r.createRenderer(T.renderer??`auto`,()=>{let e=l.style(S.createElement(`canvas`),{position:`absolute`,left:`0`,top:`0`,pointerEvents:`none`});return e.setAttribute(`aria-hidden`,`true`),e.className=`minerva-chart-data`,e},t=>{O||Y?.kind!==t||(Y.destroy(),Y.canvas.remove(),Y=null,cr(new Set([...e,t])))},e);if(O||t!==it){n?.destroy();return}Y&&(Y.destroy(),Y.canvas.remove()),Y=n,z=!0,n?(C.root.dataset.renderer=n.kind,w.insertBefore(n.canvas,C.foreground),ye(`renderer`,n.kind)):delete C.root.dataset.renderer,at(n?.kind??null),Q()},lr=e=>{R.clear();for(let t of e.nodes??[])t?.collapsed&&R.add(t.id);Pe.clear();for(let t of e.groups??[])t?.hidden&&Pe.add(t.id)},ur=()=>{if(!T.selected)return;let e=new Set;for(let t of T.selected){let n=k.index.get(t);n!==void 0&&e.add(n)}J.clear(),e.forEach(e=>J.add(e)),rt=``,z=!0};lr(T),St(new Map,!1),ur(),cr();let dr=i.followDefaultRenderer(()=>T.renderer,()=>void cr()),fr=(e,t)=>{let n=gt(),r=[...J].map(e=>k.nodes[e].id),i=q>=0?k.nodes[q].id:null;if(t){for(let t of e.nodes??[])t?.collapsed&&R.add(t.id);k=f.buildModel(e.nodes??[],e.edges??[],e.groups);for(let t of e.groups??[])t?.hidden&&Pe.add(t.id);J.clear();for(let e of r){let t=k.index.get(e);t!==void 0&&J.add(t)}q=i===null?-1:k.index.get(i)??-1,K=null,C.tooltip.style.display=`none`}St(n,!0)},pr={setOptions(e){if(O)return;let t=T;T=e,(e.palette??[]).join()!==(t.palette??[]).join()&&(E=a.readTheme(C.root,e.palette)),(e.locale!==t.locale||e.labels!==t.labels)&&(D=d.graphLocale(e.locale,e.labels));let n=e.nodes!==t.nodes||e.edges!==t.edges||e.groups!==t.groups,r=pe(e);n||r!==we?(we=r,fr(e,n)):(wt(),Tt(),Re=!0,rt=``,rn=``,an(),sn(),Q()),(e.selected??[]).join(``)!==(t.selected??[]).join(``)&&ur(),(e.renderer??`auto`)!==(t.renderer??`auto`)&&cr()},setData(e){O||pr.setOptions({...T,nodes:e.nodes,edges:e.edges,groups:e.groups??T.groups})},fit(e=!0){if(O)return;Xe=!1,L?.running()&&(et=!0);let t=Qt();t?tn(t,e):Ze=!0,Q()},focusNode(e,t={}){if(O)return;let n=k.index.get(e);if(n===void 0)return;if(I&&!F[n]){let r=!1;for(let e=I.parent[n];e>=0;e=I.parent[e])R.delete(k.nodes[e].id)&&(r=!0);r&&St(gt(),t.animate!==!1),n=k.index.get(e)}let r=t.zoom??Math.max(V,1),[i,a]=$t(),o=Math.max(i,Math.min(a,r));Xe=!0;let s=W||w.clientWidth,c=G||w.clientHeight;tn([o,s/2-P[n]*o,c/2-Te[n]*o],t.animate!==!1),q=n,rt=``,z=!0,Q()},select(e){if(O)return;let t=e===null?[]:typeof e==`string`?[e]:e,n=new Set;for(let e of t){let t=k.index.get(e);t!==void 0&&n.add(t)}jn(n,!0)},getSelection:()=>[...J].map(e=>k.nodes[e].id),expand(e){if(O)return;if(e===void 0){if(!R.size)return;let e=[...R];R.clear(),St(gt(),!0);for(let t of e)k.index.has(t)&&ye(`toggle`,{id:t,collapsed:!1});return}let t=k.index.get(e);t===void 0?R.delete(e):Nn(t,!1,!0)},collapse(e){if(O)return;if(e===void 0){if(!I)return;let e=[];if(I.children.forEach((t,n)=>{let r=k.nodes[n].id;t.length&&I.parent[n]>=0&&!R.has(r)&&(R.add(r),e.push(r))}),!e.length)return;St(gt(),!0);for(let t of e)ye(`toggle`,{id:t,collapsed:!0});return}let t=k.index.get(e);t!==void 0&&Nn(t,!0,!0)},toggle(e){let t=k.index.get(e);t===void 0||O||Nn(t,Ut(t),!0)},getPositions(){let e={};for(let t=0;t<k.n;t++)e[k.nodes[t].id]={x:P[t],y:Te[t]};return e},relayout(){O||St(A===`force`?new Map:gt(),!0)},resize(){Q()},getRenderer:()=>Y?.kind??null,ready:ot,refreshTheme:ar,on(e,t){let n=ve.get(e);return n||(n=new Set,ve.set(e,n)),n.add(t),()=>{n.delete(t)}},destroy(){O||(O=!0,it++,st&&ge?.cancelAnimationFrame(st),On&&ge?.cancelAnimationFrame(On),Wn&&clearTimeout(Wn),st=0,On=0,_t(),ir?.disconnect(),dr(),or(),sr(),w.removeEventListener(`pointerdown`,Ln),w.removeEventListener(`pointermove`,Rn),w.removeEventListener(`pointerup`,Bn),w.removeEventListener(`pointercancel`,Hn),w.removeEventListener(`pointerleave`,Un),w.removeEventListener(`wheel`,Kn),w.removeEventListener(`dblclick`,qn),w.removeEventListener(`keydown`,er),w.removeEventListener(`focus`,Jn),w.removeEventListener(`blur`,Yn),C.zoomIn.removeEventListener(`click`,tr),C.zoomOut.removeEventListener(`click`,nr),C.fit.removeEventListener(`click`,rr),Y?.destroy(),Y=null,ve.clear(),at(null),C.root.remove())}};return pr};function he(t){return e.luminance(t.background)<.4||e.luminance(t.text)>.6}exports.createGraphChart=me,exports.resolveLayout=fe;
2
2
  //# sourceMappingURL=chart.cjs.map