jbrowse-plugin-graphgenomeviewer 7.6.0 → 7.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.
- package/README.md +5 -4
- package/dist/chunks/GbzBaseSyntenyAdapter-HT275FAA.js +2 -0
- package/dist/chunks/{GbzBaseSyntenyAdapter-3PVPTKNW.js.map → GbzBaseSyntenyAdapter-HT275FAA.js.map} +2 -2
- package/dist/chunks/GraphGenomeView-NBLEWVY2.js +10 -0
- package/dist/chunks/{GraphGenomeView-GQW4YC23.js.map → GraphGenomeView-NBLEWVY2.js.map} +1 -1
- package/dist/chunks/{GraphTrackSettingsDialog-ARWCWJW4.js → GraphTrackSettingsDialog-63UGAGAC.js} +2 -2
- package/dist/chunks/{HighlightColorDialog-PD3KMF2U.js → HighlightColorDialog-MY4MWVCJ.js} +2 -2
- package/dist/chunks/LinearGraphDisplay-3LMAWRNR.js +2 -0
- package/dist/chunks/{LinearGraphDisplay-QNS4EAL3.js.map → LinearGraphDisplay-3LMAWRNR.js.map} +1 -1
- package/dist/chunks/{MinigraphBubbleAdapter-L6JSQIOL.js → MinigraphBubbleAdapter-YMI75DAV.js} +2 -2
- package/dist/chunks/{RgfaTabixAdapter-5HCAJ7QI.js → RgfaTabixAdapter-AFNTSA6Y.js} +2 -2
- package/dist/chunks/{WalkFormsAdapter-NX36GP35.js → WalkFormsAdapter-ZPE2JQJU.js} +2 -2
- package/dist/chunks/{WalkTabixSyntenyAdapter-JFNFX3JP.js → WalkTabixSyntenyAdapter-EOD4RQVU.js} +2 -2
- package/dist/chunks/{chunk-LJ7O3736.js → chunk-22A3MS5J.js} +1 -1
- package/dist/chunks/{chunk-LJ7O3736.js.map → chunk-22A3MS5J.js.map} +1 -1
- package/dist/chunks/{chunk-OQHN2GWX.js → chunk-2QRCU675.js} +2 -2
- package/dist/chunks/chunk-3Y2G43HK.js +3 -0
- package/dist/chunks/chunk-3Y2G43HK.js.map +7 -0
- package/dist/chunks/{chunk-SGP63UMC.js → chunk-4AXLBI6M.js} +2 -2
- package/dist/chunks/{chunk-SGP63UMC.js.map → chunk-4AXLBI6M.js.map} +4 -4
- package/dist/chunks/chunk-AK3UZI6J.js +4 -0
- package/dist/chunks/chunk-AK3UZI6J.js.map +7 -0
- package/dist/chunks/{chunk-4PHM6JNU.js → chunk-DDAG445J.js} +2 -2
- package/dist/chunks/chunk-DFZ6G452.js +4 -0
- package/dist/chunks/chunk-DFZ6G452.js.map +7 -0
- package/dist/chunks/{chunk-DOC7QIE2.js → chunk-DSSZIADV.js} +1 -1
- package/dist/chunks/{chunk-DOC7QIE2.js.map → chunk-DSSZIADV.js.map} +1 -1
- package/dist/chunks/{chunk-5LFPNQWH.js → chunk-E7S7PGEZ.js} +2 -2
- package/dist/chunks/{chunk-5LFPNQWH.js.map → chunk-E7S7PGEZ.js.map} +1 -1
- package/dist/chunks/chunk-EV54SYM7.js +2 -0
- package/dist/chunks/chunk-EV54SYM7.js.map +7 -0
- package/dist/chunks/{chunk-G4OPM6G7.js → chunk-GK5YETAZ.js} +2 -2
- package/dist/chunks/{chunk-G4OPM6G7.js.map → chunk-GK5YETAZ.js.map} +1 -1
- package/dist/chunks/{chunk-LGV6BTOY.js → chunk-IFIZMFS6.js} +2 -2
- package/dist/chunks/{chunk-LGV6BTOY.js.map → chunk-IFIZMFS6.js.map} +3 -3
- package/dist/chunks/{chunk-SI5VLKVN.js → chunk-KY6GXBXU.js} +2 -2
- package/dist/chunks/{chunk-SI5VLKVN.js.map → chunk-KY6GXBXU.js.map} +2 -2
- package/dist/chunks/{chunk-ZFJGNGIB.js → chunk-LIRBZOBX.js} +2 -2
- package/dist/chunks/{chunk-ZFJGNGIB.js.map → chunk-LIRBZOBX.js.map} +1 -1
- package/dist/chunks/chunk-O6HXOTJN.js +2 -0
- package/dist/chunks/{chunk-JYYF3U2H.js.map → chunk-O6HXOTJN.js.map} +4 -4
- package/dist/chunks/{chunk-TWPUVVYH.js → chunk-ODQSCM3F.js} +1 -1
- package/dist/chunks/{chunk-TWPUVVYH.js.map → chunk-ODQSCM3F.js.map} +1 -1
- package/dist/chunks/chunk-PT3WV5ED.js +4 -0
- package/dist/chunks/chunk-PT3WV5ED.js.map +7 -0
- package/dist/chunks/{chunk-XF6GU4GK.js → chunk-Q5H6ETNZ.js} +2 -2
- package/dist/chunks/{chunk-XSDGE4RF.js → chunk-SXQ6222I.js} +2 -2
- package/dist/chunks/chunk-TUECGSVJ.js +2 -0
- package/dist/chunks/{renderSvg-NIWFCY3U.js → renderSvg-WMFKXKFZ.js} +2 -2
- package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +6 -4
- package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +4 -4
- package/package.json +2 -2
- package/src/GraphGenomeView/components/LegendSwatch.tsx +11 -1
- package/src/GraphGenomeView/components/WalkStrip.tsx +1 -0
- package/src/GraphGenomeView/genes/geneFeatures.ts +8 -0
- package/src/GraphGenomeView/genes/genes.test.ts +14 -1
- package/src/GraphGenomeView/legendSections.ts +42 -6
- package/src/GraphGenomeView/model.test.ts +54 -2
- package/src/GraphGenomeView/nodeSize.test.ts +1 -0
- package/src/GraphGenomeView/nodeSize.ts +10 -5
- package/src/GraphGenomeView/pane/fitViews.ts +1 -0
- package/src/GraphGenomeView/pane/graphViews.ts +4 -0
- package/src/GraphGenomeView/pane/launchViews.ts +11 -3
- package/src/GraphGenomeView/pane/renderingActions.ts +36 -4
- package/src/GraphGenomeView/subgraphLoad.test.ts +42 -0
- package/src/LinearGraphDisplay/configSchema.ts +3 -2
- package/src/version.ts +1 -1
- package/dist/chunks/GbzBaseSyntenyAdapter-3PVPTKNW.js +0 -2
- package/dist/chunks/GraphGenomeView-GQW4YC23.js +0 -10
- package/dist/chunks/LinearGraphDisplay-QNS4EAL3.js +0 -2
- package/dist/chunks/chunk-2CPD5NX2.js +0 -4
- package/dist/chunks/chunk-2CPD5NX2.js.map +0 -7
- package/dist/chunks/chunk-3AC33AXB.js +0 -2
- package/dist/chunks/chunk-CNEUOM7X.js +0 -2
- package/dist/chunks/chunk-CNEUOM7X.js.map +0 -7
- package/dist/chunks/chunk-GRLNDNX4.js +0 -2
- package/dist/chunks/chunk-GRLNDNX4.js.map +0 -7
- package/dist/chunks/chunk-JYYF3U2H.js +0 -2
- package/dist/chunks/chunk-KDXVLEHS.js +0 -3
- package/dist/chunks/chunk-KDXVLEHS.js.map +0 -7
- package/dist/chunks/chunk-PTDOYJFH.js +0 -4
- package/dist/chunks/chunk-PTDOYJFH.js.map +0 -7
- package/dist/chunks/chunk-ZI7RFIA2.js +0 -4
- package/dist/chunks/chunk-ZI7RFIA2.js.map +0 -7
- /package/dist/chunks/{GraphTrackSettingsDialog-ARWCWJW4.js.map → GraphTrackSettingsDialog-63UGAGAC.js.map} +0 -0
- /package/dist/chunks/{HighlightColorDialog-PD3KMF2U.js.map → HighlightColorDialog-MY4MWVCJ.js.map} +0 -0
- /package/dist/chunks/{MinigraphBubbleAdapter-L6JSQIOL.js.map → MinigraphBubbleAdapter-YMI75DAV.js.map} +0 -0
- /package/dist/chunks/{RgfaTabixAdapter-5HCAJ7QI.js.map → RgfaTabixAdapter-AFNTSA6Y.js.map} +0 -0
- /package/dist/chunks/{WalkFormsAdapter-NX36GP35.js.map → WalkFormsAdapter-ZPE2JQJU.js.map} +0 -0
- /package/dist/chunks/{WalkTabixSyntenyAdapter-JFNFX3JP.js.map → WalkTabixSyntenyAdapter-EOD4RQVU.js.map} +0 -0
- /package/dist/chunks/{chunk-OQHN2GWX.js.map → chunk-2QRCU675.js.map} +0 -0
- /package/dist/chunks/{chunk-4PHM6JNU.js.map → chunk-DDAG445J.js.map} +0 -0
- /package/dist/chunks/{chunk-XF6GU4GK.js.map → chunk-Q5H6ETNZ.js.map} +0 -0
- /package/dist/chunks/{chunk-XSDGE4RF.js.map → chunk-SXQ6222I.js.map} +0 -0
- /package/dist/chunks/{chunk-3AC33AXB.js.map → chunk-TUECGSVJ.js.map} +0 -0
- /package/dist/chunks/{renderSvg-NIWFCY3U.js.map → renderSvg-WMFKXKFZ.js.map} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{F as Jn,G as Qn,H as dn,I as mn,Q as Zn,R as Qt,S as pn,V as to,W as no,d as $n,e as Kn,f as Un,g as un,i as Yn,j as qn,k as Vn,l as zn,m as Kt,y as jn}from"./chunk-GRLNDNX4.js";import{a as Bt,g as $t}from"./chunk-ZFJGNGIB.js";var St=2,co=1.5,Uo=4,oo=12,Yo=64,eo=24,qo=48,so="a thread per pass through a node",gn=t=>t.length>1&&t.some(n=>n.mostPasses>1),io=t=>t*St+Math.max(0,t-1)*co,ro=t=>t.reduce((n,e)=>n+e,0);function lo(t,n,e){let o=t.map((a,c)=>n[c]>1?io(a):e*Math.min(1,a)),s=0,r=t.map(a=>{let c=Math.min(1,a),i=Uo*c*s;return s=Math.max(s,c),i});return{widths:o,gaps:r,band:ro(o)+ro(r)}}var yn=St+co;function Ut(t,n,e=t){let{widths:o,gaps:s,band:r}=lo(t,n,St),a=-r/2;return o.map((c,i)=>{a+=s[i];let h=n[i]>1?Math.max(0,c-io(e[i])):0,l=a+h/2+St/2;return a+=c,l})}var nn=t=>lo(t,t,St).band,on=t=>Math.min(1,qo/(nn(t)||1)),cs=t=>on(t.map(n=>n.mostPasses))<1?`${so}, thinned to fit`:so;function xn(t,n,e){let o=({normal:c,offsetX:i})=>({dx:c.nx*i,dy:c.ny*i}),{dx:s,dy:r}=Kn(o(t),o(n),e),a=Math.hypot(s,r);return a>0?{normal:{nx:s/a,ny:r/a},offsetX:a}:{normal:{nx:0,ny:0},offsetX:0}}function Zt(t,n){let e=t.stepOf[n],o=n-t.starts[e];return t.forward[e]?o:t.starts[e+1]-t.starts[e]-1-o}var Ft=(t,n)=>{let e=n.x-t.x,o=n.y-t.y;return Math.sqrt(e*e+o*o)};function Lt(t){let n=new Float64Array(t.length);for(let e=1;e<t.length;e++)n[e]=n[e-1]+Ft(t[e-1],t[e]);return n}function wn(t,n){let e=new Set;return t.map(o=>{let s=new Map;return o.map(r=>r.map(a=>{let c=s.get(a)??0;s.set(a,c+1);let i=n[a],h=!!i?.length&&!e.has(a);return h&&e.add(a),{id:a,visit:c,owned:h,segments:i}}))})}function Vo(t,n,e){let o=[];return t.forEach((s,r)=>{let a=0;for(let M of s)for(let{segments:A}of M)a+=A?.length??0;let c=new Float64Array(a),i=new Float64Array(a),h=0,l=0,f=u();function u(){return{walk:r,ids:[],visits:[],forward:[],owned:[],starts:[0]}}let m=()=>{if(f.ids.length){let M=new Int32Array(h-l);for(let A=0;A<f.ids.length;A++)M.fill(A,f.starts[A],f.starts[A+1]);o.push({...f,xs:c.subarray(l,h),ys:i.subarray(l,h),stepOf:M})}f=u(),l=h},w=(M,A,R)=>{let N=R.x-M,I=R.y*n-A;return Math.sqrt(N*N+I*I)};for(let M of s)M.forEach(({id:A,visit:R,owned:N,segments:I},G)=>{if(!I?.length){m();return}let D=I[0],S=I.at(-1),b;if(h>l){let g=c[h-1],E=i[h-1],x=w(g,E,D),C=w(g,E,S);b=x<=C,Math.min(x,C)>e&&m()}else{let g=M[G+1]?.segments,E=x=>g?.length?Math.min(w(x.x,x.y*n,g[0]),w(x.x,x.y*n,g.at(-1))):0;b=E(S)<=E(D)}f.ids.push(A),f.visits.push(R),f.forward.push(b),f.owned.push(N);for(let g=0;g<I.length;g++){let E=I[b?g:I.length-1-g];c[h]=E.x,i[h]=E.y*n,h++}f.starts.push(h-l)}),m()}),o}function Mn(t,n,e){let o=[];for(let s=0;s<n.length;s++){if(!n[s])continue;let r=s;for(;r+1<n.length&&n[r+1];)r++;let a=o.at(-1),c=a?a[1]:0,i=s;for(;i>c&&t[s]-t[i-1]<=e;)i--;let h=r;for(;h+1<t.length&&t[h+1]-t[r]<=e;)h++;a&&i<=a[1]+1?a[1]=h:o.push([i,h]),s=r}return o}function zo(t,n){let e=Lt(t),o=e.at(-1),s=(c,i)=>{let h=t[i],l=t[Math.min(i+1,t.length-1)],f=e[Math.min(i+1,t.length-1)]-e[i],u=f>0?(c-e[i])/f:0;return{x:h.x+(l.x-h.x)*u,y:h.y+(l.y-h.y)*u}},r=0,a=0;return t.map((c,i)=>{let h=Math.max(0,e[i]-n/2),l=Math.min(o,e[i]+n/2);for(;r<t.length-1&&e[r+1]<=h;)r++;for(;a<t.length-1&&e[a+1]<=l;)a++;let f=s(h,r),u=s(l,a),m=Ft(f,u);return m>0?{nx:-(u.y-f.y)/m,ny:(u.x-f.x)/m}:void 0})}function jo(t,n,e){let o=Lt(t),s=t.slice(),r=[];o.forEach((c,i)=>{let h=r.at(-1);(h===void 0||c-o[h]>=n/4)&&r.push(i)}),r.at(-1)!==t.length-1&&r.push(t.length-1);let a=0;for(;a<r.length;){let c=r[a],i=-1;for(let u=a+1;u<r.length&&o[r[u]]-o[c]<=e;u++){let m=r[u];o[m]-o[c]>Math.PI*n&&Ft(t[c],t[m])<=n&&(i=u)}if(i<0){a++;continue}let h=r[i],l=t[c],f=t[h];for(let u=c+1;u<h;u++){let m=(o[u]-o[c])/(o[h]-o[c]);s[u]={...t[u],x:l.x+(f.x-l.x)*m,y:l.y+(f.y-l.y)*m}}a=i}return s}function fo(t,n){let e=t.length,o=Lt(t),s=o[e-1],r=new Float64Array(e+1),a=new Float64Array(e+1),c=new Float64Array(e+1);for(let f=0;f<e;f++){let u=t[f],m=(o[Math.min(f+1,e-1)]-o[Math.max(f-1,0)])/2;r[f+1]=r[f]+m,a[f+1]=a[f]+m*u.x,c[f+1]=c[f]+m*u.y}let i=new Array(e),h=0,l=0;for(let f=0;f<e;f++){let u=t[f],m=Math.min(n,o[f],s-o[f]),w=o[f]-m,M=o[f]+m+1e-9*(1+s);for(;h<e&&o[h]<w;)h++;for(;l<e&&o[l]<M;)l++;let A=r[l]-r[h];i[f]=A>0?{x:(a[l]-a[h])/A,y:(c[l]-c[h])/A}:{x:u.x,y:u.y}}return i}function ao(t,n){let e=t.length,o=Lt(t),s=o[e-1],r=new Uint8Array(e),a=(h,l)=>{let f=t[h],u=t[h+1];if(!u)return f;let m=o[h+1]-o[h],w=m>0?(l-o[h])/m:0;return{x:f.x+(u.x-f.x)*w,y:f.y+(u.y-f.y)*w}},c=0,i=0;for(let h=0;h<e;h++){if(o[h]<n||s-o[h]<n)continue;for(;c+1<e&&o[c+1]<=o[h]-n;)c++;for(;i+1<e&&o[i+1]<=o[h]+n;)i++;let l=t[h],f=a(c,o[h]-n),u=a(i,o[h]+n),m=Math.abs((u.x-f.x)*(l.y-f.y)-(u.y-f.y)*(l.x-f.x));r[h]=m>0&&Ft(f,u)*Ft(f,l)*Ft(l,u)/(2*m)<n?1:0}return{tight:r,s:o}}function Jo(t,n){let e=t.slice(),{tight:o,s}=ao(e,n),r=Mn(s,Array.from(o,a=>a>0),3*n);for(let a=0;a<8&&r.length;a++)r=r.filter(([c,i])=>{let h=e.slice(c,i+1),l=ao(h,n);if(!l.tight.includes(1))return!1;let f=tn(l.s,l.tight,n),u=fo(h,n);for(let m=0;m<h.length;m++){let w=Math.min(1,3*f[m]);if(w>0){let M=h[m],A=u[m];e[c+m]={x:M.x+(A.x-M.x)*w,y:M.y+(A.y-M.y)*w}}}return!0});return e}function Qo(t,n,e,o,s,r){let a=n.length,c=new Float64Array(a),i=0,h=0,l=0,f=0,u=0;for(let m=0;m<a;m++){for(;i<a&&t[i]-t[m]<=r;){let w=e(i),M=n[i];c[i]=w&&M?w.nx*M.nx+w.ny*M.ny:0,l+=c[i],i++}for(;t[m]-t[h]>r;)l-=c[h++];if(Math.abs(l)>1e-9&&(f=l<0?-1:1),!!f)for(;u<=m;u++)s(u,f)}if(u<a){let m=0;for(let w=0;w<a;w++)m+=o(w)?1:-1;for(;u<a;u++)s(u,m<0?-1:1)}}function Zo(t,n,e,o,s=!0){let r=Math.max(e,2*o),a=Math.PI*o,c=s?a+3*o+r/2:r/2,i=new Map,h=new Map,l=[],f=[],u=w=>({normals:new Array(w),shifts:s?new Array(w):[]}),m=(w,M,A,R)=>{let N=i.get(w);N||(N=[],i.set(w,N)),(N[M]??=[])[A]=R};return t.forEach((w,M)=>{let{walk:A,ids:R,visits:N,owned:I,starts:G,xs:D,ys:S,stepOf:b}=w,g=R.length,E=D.length,x=new Array(g);for(let d=0;d<g;d++)I[d]&&(x[d]=u(G[d+1]-G[d]),h.set(R[d],{run:M,step:d,frame:x[d]}),m(R[d],A,N[d],x[d]));let C=new Float64Array(E);for(let d=1;d<E;d++){let k=D[d]-D[d-1],P=S[d]-S[d-1];C[d]=C[d-1]+Math.sqrt(k*k+P*P)}let tt=C[E-1],W=new Int32Array(g).fill(-1),X=new Int32Array(g),Y=new Array(g);for(let d=0;d<g;d++){let k=I[d]?void 0:h.get(R[d]);k&&(W[d]=k.run,X[d]=k.step,Y[d]=k.frame)}let st=new Int32Array(g),it=new Int32Array(g);for(let d=0;d+1<g;d++){let P=W[d]>=0&&W[d+1]===W[d]?X[d+1]-X[d]:0;st[d+1]=st[d]+(P===1?1:0),it[d+1]=it[d]+(P===-1?1:0)}let ot=new Array(g),_=0,F=0;for(let d=0;d<g;d++){if(!s){ot[d]=!I[d];continue}let k=C[G[d]]-c,P=C[G[d+1]-1]+c;for(;C[_]<k;)_++;for(;F+1<E&&C[F+1]<=P;)F++;let Q=b[Math.max(0,_-1)],at=b[Math.min(E-1,F+1)],L=at-Q,ft=st[at]-st[Q],xt=it[at]-it[Q];ot[d]=!I[d]&&k>=0&&P<=tt&&L>0&&(ft===L||xt===L)}for(let d=0;d<g;d++){if(I[d])continue;let k=Y[d];x[d]=!s&&ot[d]?k:ot[d]?{normals:k.normals,shifts:k.shifts}:u(k.normals.length),m(R[d],A,N[d],x[d])}f.push(x);let q=new Array(E);for(let d=0;d<E;d++)q[d]=!ot[b[d]];for(let[d,k]of Mn(C,q,c)){let P=[];for(let L=d;L<=k;L++)P.push({x:D[L],y:S[L]});let Q=s?Jo(fo(jo(P,o/2,a),o/2),o/2):P,at=zo(Q,r);Qo(Lt(Q),at,L=>{let ft=b[d+L];return(I[ft]?x[ft]:Y[ft])?.normals[Zt(w,d+L)]},L=>w.forward[b[d+L]],(L,ft)=>{let xt=d+L,Dt=b[xt];if(ot[Dt])return;let Wt=Zt(w,xt),Ot=at[L];x[Dt].normals[Wt]=Ot&&(ft>0?Ot:{nx:-Ot.nx,ny:-Ot.ny}),s&&(x[Dt].shifts[Wt]={dx:Q[L].x-P[L].x,dy:(Q[L].y-P[L].y)/n})},r)}if(!s){l.push(C);return}let rt=new Float64Array(E),B=0,V=0;for(let d=0;d<E;d++){let k=x[b[d]].shifts[Zt(w,d)],P=D[d]+(k?.dx??0),Q=S[d]+(k?.dy??0)*n;rt[d]=d?rt[d-1]+Math.sqrt((P-B)**2+(Q-V)**2):0,B=P,V=Q}l.push(rt)}),{frames:i,arcs:l,stepFrames:f}}function ho(t,n,e,o){let s=new Array(n.length),r=[],a=0,c=0;for(let i=0;i<n.length;i++){for(;c<n.length&&t[c]-t[i]<=e;){for(;r.length>a&&o*n[r.at(-1)]<=o*n[c];)r.pop();r.push(c++)}for(;t[i]-t[r[a]]>e;)a++;s[i]=n[r[a]]}return s}function tn(t,n,e,o=()=>!0){let s=n.length,r=new Float64Array(s+1),a=new Float64Array(s+1);for(let l=0;l<s;l++){let f=o(n[l])?s>1?(t[Math.min(l+1,s-1)]-t[Math.max(l-1,0)])/2:1:0;r[l+1]=r[l]+f,a[l+1]=a[l]+f*n[l]}let c=new Float64Array(s),i=0,h=0;for(let l=0;l<s;l++){for(;t[l]-t[i]>e;)i++;for(;h<s&&t[h]-t[l]<=e;)h++;let f=r[h]-r[i];c[l]=f>0?(a[h]-a[i])/f:n[l]}return c}var te=[0];function ne(t){for(let n of t.values())if(n>1)return!0;return!1}function oe(t,n,e,o,s){if(!ne(n))return{span:n,nodeThreads:new Map,threadPasses:new Map,threadAt:new Map,linkThreads:new Map};let r=new Map,a=[],c=[],i=[],h=[],l=[],f=[],u=[];for(let S of t){let b=[],g=[];for(let _ of S){let F=r.get(_);F===void 0&&(F=a.length,r.set(_,F),a.push(_),c.push(0),i.push(0)),g.push(F);let q=e[_],rt=q?.[Math.floor(q.length/2)];b.push(rt?{x:rt.x,y:rt.y*o}:b.at(-1)??{x:0,y:0})}let E=Lt(b),x=S.map(_=>n.get(_)??1),C=ho(E,x,s/2,1),tt=g.map(_=>++i[_]),W=S.length,X=new Int32Array(W),Y=-1;for(let _=0;_<W;_++)Y=x[_]===C[_]?_:Y,X[_]=Y;let st=new Int32Array(W);Y=-1;for(let _=W-1;_>=0;_--)Y=x[_]===C[_]?_:Y,st[_]=Y;let it=new Array(W),ot=new Array(W).fill(NaN);for(let _=0;_<W;_++){let F=X[_],q=st[_],rt=F<0?q:q<0||E[_]-E[F]<=E[q]-E[_]?F:q,B=V=>Math.min(tt[V],C[_])-1;if(it[_]=B(rt),x[_]===1&&F>=0&&q>=0&&B(q)!==B(F)){let V=(E[_]-E[F])/(E[q]-E[F]||1);ot[_]=B(F)+(B(q)-B(F))*V}c[g[_]]=Math.max(c[g[_]],C[_])}h.push(g),l.push(tt),f.push(it),u.push(ot)}let m=[],w=[],M=(S,b)=>{let g=c[S],E=m[S]??=new Set;for(let x=0;x<g;x++)for(let C of[b-x,b+x])if(C>=0&&C<g&&!E.has(C))return C;return b},A=[];h.forEach((S,b)=>{S.forEach((g,E)=>{if(c[g]>1){let x=u[b][E],C=M(g,Number.isNaN(x)?f[b][E]:Math.round(x));m[g].add(C),(w[g]??=[])[l[b][E]]=C,Number.isNaN(x)||((A[g]??=[])[C]=x)}})});let R=new Map,N=new Map,I=new Map,G=new Map;a.forEach((S,b)=>{A[b]&&G.set(S,A[b]),R.set(S,c[b]),N.set(S,m[b]?[...m[b]].sort((E,x)=>E-x):te);let g=[];w[b]?.forEach((E,x)=>{g[E]=x-1}),I.set(S,g)});let D=new Map;return h.forEach((S,b)=>{let g=l[b];for(let E=1;E<S.length;E++){let x=S[E-1],C=S[E],tt=[w[x]?.[g[E-1]]??0,w[C]?.[g[E]]??0],W=D.get(a[x]);W||(W=new Map,D.set(a[x],W));let X=W.get(a[C]);X?X.some(([Y,st])=>Y===tt[0]&&st===tt[1])||X.push(tt):W.set(a[C],[tt])}}),{span:R,nodeThreads:N,threadPasses:I,threadAt:G,linkThreads:D}}function ee(t,n,e,{reach:o,taper:s}){let r=new Map;return t.forEach((a,c)=>{let i=n[c],h=a.ids.map((l,f)=>{let u=a.starts[f+1]-a.starts[f],m=Math.floor(u/2);return i[a.starts[f]+(a.forward[f]?m:u-1-m)]});for(let[l,f]of Mn(h,a.owned,o/2+s/2)){let u=h.slice(l,f+1),m=a.ids.slice(l,f+1),w=e.map(M=>{let A=m.map(R=>M.get(R)??0);return A.every(R=>R===A[0])?{slot:A,held:A}:{slot:tn(u,ho(u,A,o/2,1),s/2),held:tn(u,A,s/2,R=>R>0)}});m.forEach((M,A)=>{a.owned[l+A]&&r.set(M,{slot:w.map(R=>R.slot[A]),held:w.map(R=>R.held[A])})})}}),r}function se(t,n,e,o,s,r,a){let c=Ut(s,s),i=new Map,h=l=>{let f=i.get(l);if(!f){let u=o.get(l);f=u?Ut(u.slot,s,u.held):c,i.set(l,f)}return f};t.forEach((l,f)=>{let{walk:u,ids:m,visits:w,starts:M}=l,{threadPasses:A,threadAt:R}=r[u],N=new Float64Array(l.xs.length);m.forEach((G,D)=>{let S=Math.max(0,A.get(G)?.indexOf(w[D])??0),b=R.get(G)?.[S]??S;N.fill(h(G)[u]+b*yn,M[D],M[D+1])});let I=tn(e[f],N,a);n[f].forEach((G,D)=>{let S=M[D],b=M[D+1],g=!0;for(let x=S+1;g&&x<b;x++)g=Math.abs(I[x]-I[S])<1e-9;if(g){G.offset=I[S];return}let E=new Array(b-S);for(let x=S;x<b;x++)E[Zt(l,x)]=I[x];G.offsets=E})})}function uo(t,n,e,o,s=wn(t.map(r=>r.route),n)){let r=gn(t),a=t.map(M=>M.mostPasses),c=Yo*o,i=Vo(s,e,oo*o),h=nn(a)*(r?on(a):1)*o,l=Zo(i,e,oo*o,h,r),f=r?t.map(M=>oe(M.route,M.passes,n,e,c)):void 0,u=f?ee(i,l.arcs,f.map(M=>M.span),{reach:c,taper:eo*o}):void 0;u&&f&&se(i,l.stepFrames,l.arcs,u,a,f,eo/2*o);let m={dx:0,dy:0},w=new Set;for(let M of l.frames.values())for(let{shifts:A}of M.flat())if(!w.has(A)){w.add(A);for(let R of A)m.dx=Math.max(m.dx,Math.abs(R?.dx??0)),m.dy=Math.max(m.dy,Math.abs(R?.dy??0))}return{lines:l,threads:f,spans:u,furthestShift:m}}function U(t,n,e,o){return(o<<24|e<<16|n<<8|t)>>>0}function An(t){return t&255}function En(t){return t>>>8&255}function vn(t){return t>>>16&255}function bn(t){return t>>>24&255}function mo(t){return`rgba(${An(t)},${En(t)},${vn(t)},${bn(t)/255})`}function ls(t,n){return`rgba(${Math.round(t[0]*255)},${Math.round(t[1]*255)},${Math.round(t[2]*255)},${n})`}function Ht(t,n){return U(An(t),En(t),vn(t),Math.round(bn(t)*n))}function fs(t,n){let e=Math.max(0,1-1/n),o=s=>Math.round(s+(255-s)*e);return U(o(An(t)),o(En(t)),o(vn(t)),bn(t))}var po=300,Yt=.7,qt=.5;function re(t){return`hsl(${t}, ${Yt*100}%, ${qt*100}%)`}function Vt(t){return Math.max(0,Math.min(1,t))*po}function _n(t,n){return Vt((t-n.start)/(n.end-n.start))}var ae=30;function us({start:t,bp:n,reversed:e},o){let s=_n(t,o),r=_n(t+n,o);if(r-s<1)return[(s+r)/2];let a=Math.ceil((r-s)/ae);return Array.from({length:a+1},(c,i)=>_n(t+n*(e?a-i:i)/a,o))}var ce=Array.from({length:7},(t,n)=>({offset:n/6,color:re(n/6*po)})),ds=`linear-gradient(to right, ${ce.map(t=>`${t.color} ${t.offset*100}%`).join(", ")})`;var ie=Kt();function go(t,n,e,o,s,r,a=!1){return ie(t,[n,e.scaleX,e.scaleY,o,r,a,s],()=>{let c=new Map;for(let i=0;i<n.edges.length;i++){let h=o?.get(i),l=jn(t,n.edges[i],e,h,h&&r?.[i],a);l&&c.set(i,l)}return c})}var le=4;function fe(t){let n=new Map;for(let e of t.edges)Bt(n,e.from,e.to),Bt(n,e.to,e.from);return n}function he({nodeId:t,nodeById:n,neighbors:e}){let o=new Set([t]),s=[t],r=1/0,a=-1/0;for(let c=0;c<le&&s.length>0;c++){let i=[];for(let h of s){let l=e.get(h);if(l){for(let f of l)if(!o.has(f)){o.add(f);let u=n.get(f);u&&$t(u)?(r=Math.min(r,u.stable.start+u.length),a=Math.max(a,u.stable.start)):i.push(f)}}}s=i}return r===1/0?void 0:{start:Math.min(r,a),end:Math.max(r,a)}}function ue({nodeId:t,nodeById:n,neighbors:e}){let o=n.get(t);return o===void 0?void 0:$t(o)?{start:o.stable.start,end:o.stable.start+o.length}:he({nodeId:t,nodeById:n,neighbors:e})}function yo(t){let n=new Map(t.nodes.map(s=>[s.id,s])),e=fe(t),o=new Map;for(let s of t.nodes){let r=ue({nodeId:s.id,nodeById:n,neighbors:e});r&&o.set(s.id,(r.start+r.end)/2)}return o}var de=U(119,119,119,217),xo=U(136,136,136,217),me=U(24,24,28,240),pe=2.2,Oo=U(160,160,160,255),zt=.18,Ns=mo(Ht(Oo,zt)),ge=11,ye=1.2,xe=1e-6,we=7,Me=3,Ae=3,Ee=1.5,wo=3,ve=.5,be=.45,Rn=12,_e=1e-6,yt=new Float64Array(64),Ct=new Float64Array(64),Tt=new Float64Array(64);function Re(t,n,e,o){let s=t.length*Rn+1;yt.length<s&&(yt=new Float64Array(s),Ct=new Float64Array(s),Tt=new Float64Array(s));let r=t[t.length-1];yt[0]=r.x1,Ct[0]=r.y1,Tt[0]=0;let a=1,c=0;for(let i=t.length-1;i>=0&&c<o;i--){let h=t[i];for(let l=1;l<=Rn&&c<o;l++){let f=1-(l/Rn)**2,u=1-f,m=u*u*u,w=3*u*u*f,M=3*u*f*f,A=f*f*f,R=m*h.x0+w*h.cx0+M*h.cx1+A*h.x1,N=m*h.y0+w*h.cy0+M*h.cy1+A*h.y1;c+=Math.hypot(R-yt[a-1],(N-Ct[a-1])*e)*n,yt[a]=R,Ct[a]=N,Tt[a]=c,a++}}return a}function Mo(t,n){let e=1;for(;e<t-1&&Tt[e]<n;)e++;let o=Tt[e-1],s=Tt[e],r=s>o?Math.min(1,Math.max(0,(n-o)/(s-o))):0;return{x:yt[e-1]+(yt[e]-yt[e-1])*r,y:Ct[e-1]+(Ct[e]-Ct[e-1])*r}}function Se({curves:t,edgeHalfWidth:n,nodeHalfWidth:e,scale:o,yToX:s,color:r,fromSegments:a,toSegments:c}){let i=we+Me*n,h=Re(t,o,s,e+wo*i),l=Tt[h-1],f=l<_e,u=Math.min(e,l),m=f?Math.min(1,zn(a,o,o*s)/i):1;if(f?m<ve:l<wo*i)return;let w=Mo(h,u),M=Mo(h,u+i*m),A=w.x-M.x,R=(w.y-M.y)*s,N=t[t.length-1];return{x:w.x,y:w.y,angle:Math.hypot(A,R)>0?Math.atan2(R,A):We(N,s,Oe(N,c)),length:i*m,halfWidth:(Ae+Ee*n)*m,color:r}}var Ao=[[0,0]],Ce=[0],Eo={dx:0,dy:0};function Io(t,n,e){let o=s=>Math.hypot(s.x-t.x,(s.y-t.y)*e);return o(n[0])<o(n.at(-1))}function Te(t,n,e,o,s){return o?Yn(t).from==="start":Io({x:e.x0,y:e.y0},n,s)}function Oe(t,n){if(n.length<2)return;let e=n[0],o=n[n.length-1];return Math.hypot(t.x1-e.x,t.y1-e.y)<=Math.hypot(t.x1-o.x,t.y1-o.y)?{from:e,to:n[1]}:{from:o,to:n[n.length-2]}}function vo(t,n){if(!t||!n)return;let e=n.x-t.x,o=n.y-t.y,s=Math.hypot(e,o);return s>0?{nx:-o/s,ny:e/s}:void 0}var ko=.1,Ie=1/Math.sqrt(ko);function bo(t,n=1){let e=n===1?t:t.map(o=>({x:o.x,y:o.y*n}));return e.map((o,s)=>{let r=vo(e[s-1],o),a=vo(o,e[s+1]);if(r&&a){let c=(r.nx+a.nx)/2,i=(r.ny+a.ny)/2,h=r.nx*c+r.ny*i;return h>ko?{nx:c/h,ny:i/h}:{nx:c,ny:i}}return r??a??{nx:0,ny:0}})}function _o(t,n,e,o=1){let s=new Array(t.length);for(let r=0;r<t.length;r++){let a=typeof e=="number"?e:e[r];s[r]={x:t[r].x+n[r].nx*a,y:t[r].y+n[r].ny*a/o}}return s}function Cn(t,n,e){let o=(1-Math.abs(2*e-1))*n,s=o*(1-Math.abs(t/60%2-1)),r=e-o/2,a=0,c=0,i=0;return t<60?(a=o,c=s):t<120?(a=s,c=o):t<180?(c=o,i=s):t<240?(c=s,i=o):t<300?(a=s,i=o):(a=o,i=s),[a+r,c+r,i+r]}function en(t,n,e,o=1){let[s,r,a]=Cn(t,n,e);return U(Math.round(s*255),Math.round(r*255),Math.round(a*255),Math.round(o*255))}var ke=[[68,1,84],[59,82,139],[33,145,140],[94,201,98],[253,231,37]],Ne=[[237,137,44],[158,42,122]],Pe=[[220,50,50],[50,120,220]];function Sn(t,n){let e=Math.max(0,Math.min(1,n))*(t.length-1),o=Math.min(t.length-2,Math.floor(e)),s=e-o,r=t[o],a=t[o+1];return U(Math.round(r[0]+(a[0]-r[0])*s),Math.round(r[1]+(a[1]-r[1])*s),Math.round(r[2]+(a[2]-r[2])*s),255)}function Fe(t,n){return en(Jn(t),dn,mn,n)}var No=[60,65,72],Tn=U(...No,255),Ps=`rgb(${No.join(", ")})`;function Le(t,n){let e=n.midpoints.get(t.id);return $t(t)&&e!==void 0?(e-n.start)/n.span:void 0}function Fs(t,n){let e=yo(t);if(n&&n.end>n.start)return{start:n.start,span:n.end-n.start,midpoints:e};let o=1/0,s=-1/0;for(let r of e.values())o=Math.min(o,r),s=Math.max(s,r);return{start:o===1/0?0:o,span:s>o?s-o:1,midpoints:e}}function He(t,n){let e=1/0,o=-1/0,s=1/0,r=-1/0,a=0;for(let c of t.nodes)c.stable!==void 0&&c.stable.rank>a&&(a=c.stable.rank),c.depth<e&&(e=c.depth),c.depth>o&&(o=c.depth),c.length<s&&(s=c.length),c.length>r&&(r=c.length);return{minDepth:e,maxDepth:o,minLength:s,maxLength:r,maxRank:a,nodeCount:t.nodes.length,referenceRamp:n}}function De(t,n,e,o){switch(e){case"random":return Fe(t.id,1);case"depth":return Sn(ke,o.maxDepth>o.minDepth?(t.depth-o.minDepth)/(o.maxDepth-o.minDepth):.5);case"node-length":return Sn(Pe,o.maxLength>o.minLength?(t.length-o.minLength)/(o.maxLength-o.minLength):.5);case"stable-rank":return t.stable===void 0?U(160,160,160,255):t.stable.rank===0?U(52,152,219,255):Sn(Ne,o.maxRank>1?(t.stable.rank-1)/(o.maxRank-1):0);case"reference-position":{let s=o.referenceRamp;if(s===void 0)return U(160,160,160,255);let r=Le(t,s);return r===void 0?Tn:en(Vt(r),Yt,qt)}case"grey":return U(160,160,160,255);case"rainbow":{let s=o.nodeCount>1?n/o.nodeCount*360:0;return en(s,.75,.5)}default:return U(52,152,219,255)}}function We(t,n=1,e){let o=[[t.cx1,t.cy1],[t.cx0,t.cy0],[t.x0,t.y0]];for(let[s,r]of o){let a=t.x1-s,c=(t.y1-r)*n;if(Math.hypot(a,c)>0)return Math.atan2(c,a)}return e?Math.atan2((e.to.y-e.from.y)*n,e.to.x-e.from.x):0}function Ge(t,n){let e=!1;for(let o=0;o<t.length-1&&!e;o++){let s=t[o],r=t[o+1];e=Math.max(s.x,r.x)>=n.minX&&Math.min(s.x,r.x)<=n.maxX&&Math.max(s.y,r.y)>=n.minY&&Math.min(s.y,r.y)<=n.maxY}return e}function Ro(t,n,e=0,o=0){for(let s of t){let r=Math.min(s.x0,s.cx0,s.cx1,s.x1),a=Math.max(s.x0,s.cx0,s.cx1,s.x1),c=Math.min(s.y0,s.cy0,s.cy1,s.y1),i=Math.max(s.y0,s.cy0,s.cy1,s.y1);if(a>=n.minX-e&&r<=n.maxX+e&&i>=n.minY-o&&c<=n.maxY+o)return!0}return!1}var So=new WeakMap;function Xe(t){let n=So.get(t);if(!n){let e=[],o=new Map,s=t.paths??[];for(let r=0;r<s.length;r++)e.push(en(Qn(r,s.length),dn,mn,.85)),o.has(s[r].name)||o.set(s[r].name,r);n={pathColorByIndex:e,pathIndexByName:o},So.set(t,n)}return n}var Co=new WeakMap,Be=new Map;function $e(t){let n=Co.get(t);if(!n){n=new Map;for(let[e,o]of(t.paths??[]).entries())for(let s of new Set(o.nodeIds))Bt(n,s,e);Co.set(t,n)}return n}var Ke=Kt(),Ue=Kt(),To=new WeakMap;function Ye(t){let n=To.get(t);if(!n){n=new Map;for(let{from:e,to:o}of t.edges){let s=n.get(e);s||(s=new Set,n.set(e,s)),s.add(o)}To.set(t,n)}return n}function Ls(t){let{nodePositions:n,graph:e,nodeById:o,colorScheme:s,contigThickness:r,connectorThickness:a,drawPaths:c,nodeWidth:i="uniform",edgeWidth:h="uniform",highlight:l,axis:f,linearLayout:u,viewportBounds:m,referenceRamp:w,deletions:M,deletionRoutes:A,stranded:R,hiddenEdges:N,version:I=0}=t,G=i==="depth"?Zn(e):0,D=h==="walks"?to(e):0,S=f.scaleX,b=1/Math.max(S,xe),g=qn(f),E=go(n,e,f,M,I,A,R),x=[],C=new Map,tt=[],W=new Map,X=[],Y=new Map,st=He(e,w),it=new Map;if(s==="rainbow")for(let p=0;p<e.nodes.length;p++)it.set(e.nodes[p].id,p);let ot=e.paths?.length??0,{pathColorByIndex:_,pathIndexByName:F}=Xe(e),q=p=>_[F.get(p)??-1]??xo,rt=c&&ot>1?$e(e):Be,B=l?.walks??[],V=gn(B),d=B.map(p=>p.mostPasses),k=V?on(d):1,P=l&&B.length>1?Ke(l,[n,I,f.scaleX,f.scaleY],()=>uo(B,n,g,b,Ue(l,[n,I],()=>wn(B.map(p=>p.route),n)))):void 0,Q=P?.lines,at=P?.threads,L=P?.spans,ft=V?Ut(d,d):[],xt=new Map,Dt=p=>{let y=xt.get(p);if(!y){let v=L?.get(p);y=v?Ut(v.slot,d,v.held):ft,xt.set(p,y)}return y},Wt=(p,y,v,T)=>V?(Dt(p)[v]+T*yn)*k:(v-(B.length-1)/2)*y,Ot=(p,y,v)=>{let T=p?.offsets?.[y]??p?.offset;return T===void 0?v:T*k},Fn=p=>V?St/2*k:p/2,Ln=new Map,Hn=new WeakMap,Dn=(p,y,v)=>at?.[p]?.threadPasses.get(y)?.[v]??0,rn=(p,y)=>{let v=Ln.get(p);return v||(v=bo(y,g),Ln.set(p,v)),v},Go=(p,y,v)=>{if(!v)return rn(p,y);let T=Hn.get(v.normals);return T||(T=rn(p,y).map((O,$)=>v.normals[$]??O),Hn.set(v.normals,T)),T},Wn=new Map,an=p=>{let y=Wn.get(p);if(y===void 0){let v=o.get(p);y=pn(v?Qt(v,r,i,G):r,B.length),Wn.set(p,y)}return y},Gn=(p,y,v,T,O,$)=>{let nt=T?0:v.length-1,K=y?.[O]?.[Dn(O,p,$)],ct=K?.offsets?.[nt]??K?.offset;return{normal:K?.normals[nt]??rn(p,v)[nt]??{nx:0,ny:0},shift:K?.shifts[nt]??Eo,offset:ct===void 0?Wt(p,an(p),O,$):ct*k}},Xo=(p,y)=>{if(!m)return!0;let v=V?nn(d)*k:(B.length-1)/2*an(y),T=Ie*v*b;return Ro(p,m,T+(P?.furthestShift.dx??0),T/g+(P?.furthestShift.dy??0))},Bo=(p,y,v)=>{let T=at?.[p]?.linkThreads;if(!T?.size)return Ao;let O=T.get(y)?.get(v),$=Ye(e).get(v)?.has(y)?void 0:T.get(v)?.get(y);if(!$)return O??Ao;let nt=$.map(([K,ct])=>[ct,K]);return O?[...O,...nt]:nt},cn=(p,y,v)=>B[p]?.passColors.get(y)?.[at?.[p]?.threadPasses.get(y)?.[v]??0],Xn=new WeakMap,$o=(p,y)=>{if(!y||!V)return p;let v=Xn.get(y.shifts);if(!v){let{shifts:T}=y;v=p.map((O,$)=>{let{dx:nt,dy:K}=T[$]??Eo;return{...O,x:O.x+nt,y:O.y+K}}),Xn.set(y.shifts,v)}return v},Ko=S>(u?1:be);for(let p=0;p<e.edges.length;p++){let y=e.edges[p],v=n[y.from],T=n[y.to],O=E.get(p);if(!v?.length||!T?.length||!O||N?.has(p))continue;let $=y.pathIds?.length??0,K=M?.get(p)!==void 0,ct=l?.edgeIndexes.has(p)??!1,It=a/2*(K?pe:1),kt=K?It:a/2*no($,D,h),wt=c&&$>0,ht=K?me:de,Gt=!l||ct?ht:Ht(ht,zt),Mt=o.get(y.to),At=(Mt?Qt(Mt,r,i,G):r)/2,Et=H=>!m||Ro(H,m),z=H=>$n(H,ge/S,g,m),Xt=(H,j,J)=>{if(!K){X.push({curves:H,thickness:j,color:J});return}for(let dt of z(H))X.push({curves:dt.curves,thickness:j,color:J})},ln=(H,j,J,dt,bt,gt,_t,et,fn)=>{if(!K){X.push({curves:H,thickness:j,color:J,walk:dt,pass:bt,normal:gt,offsetX:_t,endNormal:et,endOffsetX:fn});return}let Rt={normal:gt,offsetX:_t},Pt={normal:et,offsetX:fn};for(let Z of z(H)){let mt=Z.startAlong===0?Rt:xn(Rt,Pt,Z.startAlong),lt=Z.endAlong===1?Pt:xn(Rt,Pt,Z.endAlong);X.push({curves:Z.curves,thickness:j,color:J,walk:dt,pass:bt,normal:mt.normal,offsetX:mt.offsetX,endNormal:lt.normal,endOffsetX:lt.offsetX})}},ut=H=>{let j=Ko?Se({curves:H,edgeHalfWidth:K||wt?a/2:kt,nodeHalfWidth:At,scale:S,yToX:g,color:Gt,fromSegments:v,toSegments:T}):void 0;j&&tt.push(j)},Nt=X.length,vt=tt.length,pt=l?.walks.length&&ct&&!wt?l.walks:void 0;if(pt&&!Xo(O,y.from))continue;if(pt){let H=Te(y,v,O[0],R,g),j=O.at(-1),J=Io({x:j.x1,y:j.y1},T,g),dt=pt.length===1,bt=Fn(an(y.from)),gt=Q?.frames.get(y.from),_t=Q?.frames.get(y.to);for(let et=0;et<pt.length;et++)if(pt[et].edgeIndexes.has(p))for(let[Rt,Pt]of Bo(et,y.from,y.to)){let Z=Gn(y.from,gt,v,H,et,Rt),mt=V?Gn(y.to,_t,T,J,et,Pt):Z,lt=dt?0:Z.offset*b,hn=V?mt.offset*b:lt,Bn=V?Un(O,Z.shift.dx+Z.normal.nx*lt,Z.shift.dy+Z.normal.ny*lt/g,mt.shift.dx+mt.normal.nx*hn,mt.shift.dy+mt.normal.ny*hn/g):lt===0?O:un(O,Z.normal.nx*lt,Z.normal.ny*lt/g);Et(Bn)&&ln(Bn,bt,cn(et,y.from,Rt)??cn(et,y.to,Pt)??ht,et,Rt,Z.normal,lt,mt.normal,hn)}X.length>Nt&&ut(O)}else if(!wt)Et(O)&&(Xt(O,kt,Gt),ut(O));else{let H=Vn(v,T,$,f),j=Math.floor(($-1)/2);for(let J=0;J<$;J++){let{x:dt,y:bt}=H[J],gt=dt===0&&bt===0?O:un(O,dt,bt);if(!Et(gt))continue;let _t=q(y.pathIds[J]);Xt(gt,It,l&&(l.walks.length?!l.names.has(y.pathIds[J]):!ct)?Ht(_t,zt):_t),J===j&&ut(gt)}}let jt=X.length-Nt;jt>0&&Y.set(p,{start:Nt,count:jt});let Jt=tt.length-vt;Jt>0&&W.set(p,{start:vt,count:Jt})}for(let[p,y]of Object.entries(n)){let v=o.get(p);if(!v||m&&!Ge(y,m))continue;let T=l!==void 0&&!l.nodeIds.has(p),O=T?Oo:De(v,it.get(p)??0,s,st),$=T?Ht(O,zt):O,nt=Qt(v,r,i,G),K=nt/2,ct=x.length,It=rt.get(p),kt=nt/ot,wt=y.length>=2,ht=l?.walks.length&&!T&&!It?.length?l.walks:void 0;if(wt&&ht){let Mt=pn(nt,ht.length),At=Fn(Mt),Et=Q?.frames.get(p);for(let z=0;z<ht.length;z++){let Xt=ht[z].colors.get(p);if(Xt===void 0)continue;let ln=at?.[z]?.nodeThreads.get(p)??Ce;for(let ut of ln){let Nt=cn(z,p,ut)??Xt;if(ht.length===1){x.push({points:y,thickness:At,color:Nt,walk:z,pass:ut});continue}let vt=Et?.[z]?.[Dn(z,p,ut)],pt=Go(p,y,vt),jt=$o(y,vt),Jt=Wt(p,Mt,z,ut),H=vt?.offsets?.map(J=>J*k*b),j=H?H[Math.floor(H.length/2)]:Ot(vt,0,Jt)*b;x.push({points:_o(jt,pt,H??j,g),thickness:At,color:Nt,walk:z,pass:ut,normals:pt,offsetX:j,...H&&{offsets:H}})}}}else if(wt&&It?.length&&kt>=ye){let Mt=bo(y,g);for(let At of It){let Et=(At-(ot-1)/2)*kt*b,z=_[At]??xo;x.push({points:_o(y,Mt,Et,g),thickness:kt/2,color:T?Ht(z,zt):z})}}else wt&&x.push({points:y,thickness:K,color:$});let Gt=x.length-ct;Gt>0&&C.set(p,{start:ct,count:Gt})}return{nodeStrokes:x,nodeStrokeRuns:C,arrows:tt,arrowRuns:W,edgeCurves:X,edgeCurveRuns:Y}}var Lo=[{value:"progress",label:"Progress along the walk"},{value:"walk",label:"One colour for the walk"},{value:"reference",label:"Reference position"}],kn=[{value:"grey",label:"Grey to black",ends:["#a3a3a3","#151515"]},{value:"blue",label:"Cyan to navy",ends:["#6ee0f0","#0b2c7a"]},{value:"red",label:"Yellow to red",ends:["#ffd24a","#b3121b"]},{value:"purple",label:"Pink to plum",ends:["#f5a3d8","#5e1a6e"]},{value:"green",label:"Lime to forest",ends:["#b6e36c","#0b5d3b"]},{value:"orange",label:"Peach to rust",ends:["#ffc285","#8f3a00"]},{value:"rainbow",label:"Rainbow"}],On=["blue","red","purple","green"],qe=t=>Lo.some(n=>n.value===t),Ve=t=>kn.some(n=>n.value===t);function ze(t,n,e,o=!0){let{field:s,scheme:r}=t.color??{},a=qe(s)?s:o?"progress":"walk",c=n?"grey":On[e%On.length],i=Ve(r)?r==="rainbow"&&a!=="reference"?c:r:c,h=Math.floor(e/On.length)%Po.length;return a==="walk"&&i===c&&h>0?{field:a,scheme:i,shade:Po[h]}:o||a==="walk"?{field:a,scheme:i}:{field:a,scheme:i,darkest:je}}var je=.55,Nn=.5,Po=[Nn,.85,.2],Je=.08,Fo=({field:t,scheme:n})=>t!=="walk"&&n!=="rainbow";function Qe(t){let n=new Map;for(let o of t)Fo(o)&&n.set(o.scheme,(n.get(o.scheme)??0)+1);let e=new Map;return t.map(o=>{let s=Fo(o)?n.get(o.scheme):1;if(s<2)return o;let r=e.get(o.scheme)??0;e.set(o.scheme,r+1);let a=Je/2;return{...o,stretch:[r/s+(r>0?a:0),(r+1)/s-(r<s-1?a:0)]}})}var Ho=({stretch:t},n)=>t?t[0]+(t[1]-t[0])*n:n,Ze=t=>t<=.04045?t/12.92:((t+.055)/1.055)**2.4,ts=t=>t<=.0031308?t*12.92:1.055*t**(1/2.4)-.055;function ns(t){let[n,e,o]=[1,3,5].map(c=>Ze(Number.parseInt(t.slice(c,c+2),16)/255)),s=Math.cbrt(.4122214708*n+.5363325363*e+.0514459929*o),r=Math.cbrt(.2119034982*n+.6806995451*e+.1073969566*o),a=Math.cbrt(.0883024619*n+.2817188376*e+.6299787005*o);return[.2104542553*s+.793617785*r-.0040720468*a,1.9779984951*s-2.428592205*r+.4505937099*a,.0259040371*s+.7827717662*r-.808675766*a]}function os([t,n,e]){let o=(t+.3963377774*n+.2158037573*e)**3,s=(t-.1055613458*n-.0638541728*e)**3,r=(t-.0894841775*n-1.291485548*e)**3;return[4.0767416621*o-3.3077115913*s+.2309699292*r,-1.2684380046*o+2.6097574011*s-.3413193965*r,-.0041960863*o-.7034186147*s+1.707614701*r].map(a=>ts(Math.max(0,Math.min(1,a)))*255)}var In=new Map;function es(t){if(!In.has(t)){let n=kn.find(e=>e.value===t);In.set(t,n&&"ends"in n?n.ends.map(ns):void 0)}return In.get(t)}function Pn(t,n,e=0){let o=Math.max(0,Math.min(1,n)),s=es(t);if(!s)return Cn(Vt(o),Yt,qt).map(l=>l*255);let[r,a]=s,c=r[0],i=a[0],h=i<e&&c>e?(c-e)/(c-i):1;return os(r.map((l,f)=>l+(a[f]-l)*o*h))}function Do(t,n,e){let[o,s,r]=Pn(t,n,e).map(Math.round);return`rgb(${o}, ${s}, ${r})`}function sn(t,n,e){let[o,s,r]=Pn(t,n,e).map(Math.round);return U(o,s,r,255)}function ss(t,n){let{field:e,scheme:o,darkest:s,shade:r=Nn}=t;return e==="walk"?sn(o,r):n===void 0?Wo:sn(o,Ho(t,n),s)}var Wo=Tn;function rs(t){let{field:n,scheme:e,darkest:o,shade:s=Nn}=t,r=(a,c)=>({offset:a,color:Do(e,c,o),abgr:sn(e,c,o)});return n==="walk"?[r(0,s)]:Array.from({length:7},(a,c)=>r(c/6,Ho(t,c/6)))}export{fe as a,ue as b,St as c,gn as d,cs as e,U as f,mo as g,ls as h,Ht as i,fs as j,re as k,us as l,ce as m,ds as n,go as o,Ns as p,Cn as q,Ps as r,Le as s,Fs as t,He as u,De as v,Ls as w,Lo as x,kn as y,ze as z,Qe as A,ss as B,Wo as C,rs as D};
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{G as Jn,H as Qn,I as dn,J as mn,R as Zn,S as Qt,T as pn,W as to,X as no,d as $n,e as Kn,f as Un,g as un,i as Yn,j as qn,k as Vn,l as zn,m as Kt,z as jn}from"./chunk-EV54SYM7.js";import{a as Bt,g as $t}from"./chunk-LIRBZOBX.js";var St=2,co=1.5,Uo=4,oo=12,Yo=64,eo=24,qo=48,so="a thread per pass through a node",gn=t=>t.length>1&&t.some(n=>n.mostPasses>1),io=t=>t*St+Math.max(0,t-1)*co,ro=t=>t.reduce((n,e)=>n+e,0);function lo(t,n,e){let o=t.map((a,c)=>n[c]>1?io(a):e*Math.min(1,a)),s=0,r=t.map(a=>{let c=Math.min(1,a),i=Uo*c*s;return s=Math.max(s,c),i});return{widths:o,gaps:r,band:ro(o)+ro(r)}}var yn=St+co;function Ut(t,n,e=t){let{widths:o,gaps:s,band:r}=lo(t,n,St),a=-r/2;return o.map((c,i)=>{a+=s[i];let h=n[i]>1?Math.max(0,c-io(e[i])):0,l=a+h/2+St/2;return a+=c,l})}var nn=t=>lo(t,t,St).band,on=t=>Math.min(1,qo/(nn(t)||1)),cs=t=>on(t.map(n=>n.mostPasses))<1?`${so}, thinned to fit`:so;function xn(t,n,e){let o=({normal:c,offsetX:i})=>({dx:c.nx*i,dy:c.ny*i}),{dx:s,dy:r}=Kn(o(t),o(n),e),a=Math.hypot(s,r);return a>0?{normal:{nx:s/a,ny:r/a},offsetX:a}:{normal:{nx:0,ny:0},offsetX:0}}function Zt(t,n){let e=t.stepOf[n],o=n-t.starts[e];return t.forward[e]?o:t.starts[e+1]-t.starts[e]-1-o}var Ft=(t,n)=>{let e=n.x-t.x,o=n.y-t.y;return Math.sqrt(e*e+o*o)};function Lt(t){let n=new Float64Array(t.length);for(let e=1;e<t.length;e++)n[e]=n[e-1]+Ft(t[e-1],t[e]);return n}function wn(t,n){let e=new Set;return t.map(o=>{let s=new Map;return o.map(r=>r.map(a=>{let c=s.get(a)??0;s.set(a,c+1);let i=n[a],h=!!i?.length&&!e.has(a);return h&&e.add(a),{id:a,visit:c,owned:h,segments:i}}))})}function Vo(t,n,e){let o=[];return t.forEach((s,r)=>{let a=0;for(let M of s)for(let{segments:A}of M)a+=A?.length??0;let c=new Float64Array(a),i=new Float64Array(a),h=0,l=0,f=u();function u(){return{walk:r,ids:[],visits:[],forward:[],owned:[],starts:[0]}}let m=()=>{if(f.ids.length){let M=new Int32Array(h-l);for(let A=0;A<f.ids.length;A++)M.fill(A,f.starts[A],f.starts[A+1]);o.push({...f,xs:c.subarray(l,h),ys:i.subarray(l,h),stepOf:M})}f=u(),l=h},w=(M,A,R)=>{let N=R.x-M,I=R.y*n-A;return Math.sqrt(N*N+I*I)};for(let M of s)M.forEach(({id:A,visit:R,owned:N,segments:I},G)=>{if(!I?.length){m();return}let D=I[0],S=I.at(-1),b;if(h>l){let g=c[h-1],E=i[h-1],x=w(g,E,D),C=w(g,E,S);b=x<=C,Math.min(x,C)>e&&m()}else{let g=M[G+1]?.segments,E=x=>g?.length?Math.min(w(x.x,x.y*n,g[0]),w(x.x,x.y*n,g.at(-1))):0;b=E(S)<=E(D)}f.ids.push(A),f.visits.push(R),f.forward.push(b),f.owned.push(N);for(let g=0;g<I.length;g++){let E=I[b?g:I.length-1-g];c[h]=E.x,i[h]=E.y*n,h++}f.starts.push(h-l)}),m()}),o}function Mn(t,n,e){let o=[];for(let s=0;s<n.length;s++){if(!n[s])continue;let r=s;for(;r+1<n.length&&n[r+1];)r++;let a=o.at(-1),c=a?a[1]:0,i=s;for(;i>c&&t[s]-t[i-1]<=e;)i--;let h=r;for(;h+1<t.length&&t[h+1]-t[r]<=e;)h++;a&&i<=a[1]+1?a[1]=h:o.push([i,h]),s=r}return o}function zo(t,n){let e=Lt(t),o=e.at(-1),s=(c,i)=>{let h=t[i],l=t[Math.min(i+1,t.length-1)],f=e[Math.min(i+1,t.length-1)]-e[i],u=f>0?(c-e[i])/f:0;return{x:h.x+(l.x-h.x)*u,y:h.y+(l.y-h.y)*u}},r=0,a=0;return t.map((c,i)=>{let h=Math.max(0,e[i]-n/2),l=Math.min(o,e[i]+n/2);for(;r<t.length-1&&e[r+1]<=h;)r++;for(;a<t.length-1&&e[a+1]<=l;)a++;let f=s(h,r),u=s(l,a),m=Ft(f,u);return m>0?{nx:-(u.y-f.y)/m,ny:(u.x-f.x)/m}:void 0})}function jo(t,n,e){let o=Lt(t),s=t.slice(),r=[];o.forEach((c,i)=>{let h=r.at(-1);(h===void 0||c-o[h]>=n/4)&&r.push(i)}),r.at(-1)!==t.length-1&&r.push(t.length-1);let a=0;for(;a<r.length;){let c=r[a],i=-1;for(let u=a+1;u<r.length&&o[r[u]]-o[c]<=e;u++){let m=r[u];o[m]-o[c]>Math.PI*n&&Ft(t[c],t[m])<=n&&(i=u)}if(i<0){a++;continue}let h=r[i],l=t[c],f=t[h];for(let u=c+1;u<h;u++){let m=(o[u]-o[c])/(o[h]-o[c]);s[u]={...t[u],x:l.x+(f.x-l.x)*m,y:l.y+(f.y-l.y)*m}}a=i}return s}function fo(t,n){let e=t.length,o=Lt(t),s=o[e-1],r=new Float64Array(e+1),a=new Float64Array(e+1),c=new Float64Array(e+1);for(let f=0;f<e;f++){let u=t[f],m=(o[Math.min(f+1,e-1)]-o[Math.max(f-1,0)])/2;r[f+1]=r[f]+m,a[f+1]=a[f]+m*u.x,c[f+1]=c[f]+m*u.y}let i=new Array(e),h=0,l=0;for(let f=0;f<e;f++){let u=t[f],m=Math.min(n,o[f],s-o[f]),w=o[f]-m,M=o[f]+m+1e-9*(1+s);for(;h<e&&o[h]<w;)h++;for(;l<e&&o[l]<M;)l++;let A=r[l]-r[h];i[f]=A>0?{x:(a[l]-a[h])/A,y:(c[l]-c[h])/A}:{x:u.x,y:u.y}}return i}function ao(t,n){let e=t.length,o=Lt(t),s=o[e-1],r=new Uint8Array(e),a=(h,l)=>{let f=t[h],u=t[h+1];if(!u)return f;let m=o[h+1]-o[h],w=m>0?(l-o[h])/m:0;return{x:f.x+(u.x-f.x)*w,y:f.y+(u.y-f.y)*w}},c=0,i=0;for(let h=0;h<e;h++){if(o[h]<n||s-o[h]<n)continue;for(;c+1<e&&o[c+1]<=o[h]-n;)c++;for(;i+1<e&&o[i+1]<=o[h]+n;)i++;let l=t[h],f=a(c,o[h]-n),u=a(i,o[h]+n),m=Math.abs((u.x-f.x)*(l.y-f.y)-(u.y-f.y)*(l.x-f.x));r[h]=m>0&&Ft(f,u)*Ft(f,l)*Ft(l,u)/(2*m)<n?1:0}return{tight:r,s:o}}function Jo(t,n){let e=t.slice(),{tight:o,s}=ao(e,n),r=Mn(s,Array.from(o,a=>a>0),3*n);for(let a=0;a<8&&r.length;a++)r=r.filter(([c,i])=>{let h=e.slice(c,i+1),l=ao(h,n);if(!l.tight.includes(1))return!1;let f=tn(l.s,l.tight,n),u=fo(h,n);for(let m=0;m<h.length;m++){let w=Math.min(1,3*f[m]);if(w>0){let M=h[m],A=u[m];e[c+m]={x:M.x+(A.x-M.x)*w,y:M.y+(A.y-M.y)*w}}}return!0});return e}function Qo(t,n,e,o,s,r){let a=n.length,c=new Float64Array(a),i=0,h=0,l=0,f=0,u=0;for(let m=0;m<a;m++){for(;i<a&&t[i]-t[m]<=r;){let w=e(i),M=n[i];c[i]=w&&M?w.nx*M.nx+w.ny*M.ny:0,l+=c[i],i++}for(;t[m]-t[h]>r;)l-=c[h++];if(Math.abs(l)>1e-9&&(f=l<0?-1:1),!!f)for(;u<=m;u++)s(u,f)}if(u<a){let m=0;for(let w=0;w<a;w++)m+=o(w)?1:-1;for(;u<a;u++)s(u,m<0?-1:1)}}function Zo(t,n,e,o,s=!0){let r=Math.max(e,2*o),a=Math.PI*o,c=s?a+3*o+r/2:r/2,i=new Map,h=new Map,l=[],f=[],u=w=>({normals:new Array(w),shifts:s?new Array(w):[]}),m=(w,M,A,R)=>{let N=i.get(w);N||(N=[],i.set(w,N)),(N[M]??=[])[A]=R};return t.forEach((w,M)=>{let{walk:A,ids:R,visits:N,owned:I,starts:G,xs:D,ys:S,stepOf:b}=w,g=R.length,E=D.length,x=new Array(g);for(let d=0;d<g;d++)I[d]&&(x[d]=u(G[d+1]-G[d]),h.set(R[d],{run:M,step:d,frame:x[d]}),m(R[d],A,N[d],x[d]));let C=new Float64Array(E);for(let d=1;d<E;d++){let k=D[d]-D[d-1],P=S[d]-S[d-1];C[d]=C[d-1]+Math.sqrt(k*k+P*P)}let tt=C[E-1],W=new Int32Array(g).fill(-1),X=new Int32Array(g),Y=new Array(g);for(let d=0;d<g;d++){let k=I[d]?void 0:h.get(R[d]);k&&(W[d]=k.run,X[d]=k.step,Y[d]=k.frame)}let st=new Int32Array(g),it=new Int32Array(g);for(let d=0;d+1<g;d++){let P=W[d]>=0&&W[d+1]===W[d]?X[d+1]-X[d]:0;st[d+1]=st[d]+(P===1?1:0),it[d+1]=it[d]+(P===-1?1:0)}let ot=new Array(g),_=0,F=0;for(let d=0;d<g;d++){if(!s){ot[d]=!I[d];continue}let k=C[G[d]]-c,P=C[G[d+1]-1]+c;for(;C[_]<k;)_++;for(;F+1<E&&C[F+1]<=P;)F++;let Q=b[Math.max(0,_-1)],at=b[Math.min(E-1,F+1)],L=at-Q,ft=st[at]-st[Q],xt=it[at]-it[Q];ot[d]=!I[d]&&k>=0&&P<=tt&&L>0&&(ft===L||xt===L)}for(let d=0;d<g;d++){if(I[d])continue;let k=Y[d];x[d]=!s&&ot[d]?k:ot[d]?{normals:k.normals,shifts:k.shifts}:u(k.normals.length),m(R[d],A,N[d],x[d])}f.push(x);let q=new Array(E);for(let d=0;d<E;d++)q[d]=!ot[b[d]];for(let[d,k]of Mn(C,q,c)){let P=[];for(let L=d;L<=k;L++)P.push({x:D[L],y:S[L]});let Q=s?Jo(fo(jo(P,o/2,a),o/2),o/2):P,at=zo(Q,r);Qo(Lt(Q),at,L=>{let ft=b[d+L];return(I[ft]?x[ft]:Y[ft])?.normals[Zt(w,d+L)]},L=>w.forward[b[d+L]],(L,ft)=>{let xt=d+L,Dt=b[xt];if(ot[Dt])return;let Wt=Zt(w,xt),Ot=at[L];x[Dt].normals[Wt]=Ot&&(ft>0?Ot:{nx:-Ot.nx,ny:-Ot.ny}),s&&(x[Dt].shifts[Wt]={dx:Q[L].x-P[L].x,dy:(Q[L].y-P[L].y)/n})},r)}if(!s){l.push(C);return}let rt=new Float64Array(E),B=0,V=0;for(let d=0;d<E;d++){let k=x[b[d]].shifts[Zt(w,d)],P=D[d]+(k?.dx??0),Q=S[d]+(k?.dy??0)*n;rt[d]=d?rt[d-1]+Math.sqrt((P-B)**2+(Q-V)**2):0,B=P,V=Q}l.push(rt)}),{frames:i,arcs:l,stepFrames:f}}function ho(t,n,e,o){let s=new Array(n.length),r=[],a=0,c=0;for(let i=0;i<n.length;i++){for(;c<n.length&&t[c]-t[i]<=e;){for(;r.length>a&&o*n[r.at(-1)]<=o*n[c];)r.pop();r.push(c++)}for(;t[i]-t[r[a]]>e;)a++;s[i]=n[r[a]]}return s}function tn(t,n,e,o=()=>!0){let s=n.length,r=new Float64Array(s+1),a=new Float64Array(s+1);for(let l=0;l<s;l++){let f=o(n[l])?s>1?(t[Math.min(l+1,s-1)]-t[Math.max(l-1,0)])/2:1:0;r[l+1]=r[l]+f,a[l+1]=a[l]+f*n[l]}let c=new Float64Array(s),i=0,h=0;for(let l=0;l<s;l++){for(;t[l]-t[i]>e;)i++;for(;h<s&&t[h]-t[l]<=e;)h++;let f=r[h]-r[i];c[l]=f>0?(a[h]-a[i])/f:n[l]}return c}var te=[0];function ne(t){for(let n of t.values())if(n>1)return!0;return!1}function oe(t,n,e,o,s){if(!ne(n))return{span:n,nodeThreads:new Map,threadPasses:new Map,threadAt:new Map,linkThreads:new Map};let r=new Map,a=[],c=[],i=[],h=[],l=[],f=[],u=[];for(let S of t){let b=[],g=[];for(let _ of S){let F=r.get(_);F===void 0&&(F=a.length,r.set(_,F),a.push(_),c.push(0),i.push(0)),g.push(F);let q=e[_],rt=q?.[Math.floor(q.length/2)];b.push(rt?{x:rt.x,y:rt.y*o}:b.at(-1)??{x:0,y:0})}let E=Lt(b),x=S.map(_=>n.get(_)??1),C=ho(E,x,s/2,1),tt=g.map(_=>++i[_]),W=S.length,X=new Int32Array(W),Y=-1;for(let _=0;_<W;_++)Y=x[_]===C[_]?_:Y,X[_]=Y;let st=new Int32Array(W);Y=-1;for(let _=W-1;_>=0;_--)Y=x[_]===C[_]?_:Y,st[_]=Y;let it=new Array(W),ot=new Array(W).fill(NaN);for(let _=0;_<W;_++){let F=X[_],q=st[_],rt=F<0?q:q<0||E[_]-E[F]<=E[q]-E[_]?F:q,B=V=>Math.min(tt[V],C[_])-1;if(it[_]=B(rt),x[_]===1&&F>=0&&q>=0&&B(q)!==B(F)){let V=(E[_]-E[F])/(E[q]-E[F]||1);ot[_]=B(F)+(B(q)-B(F))*V}c[g[_]]=Math.max(c[g[_]],C[_])}h.push(g),l.push(tt),f.push(it),u.push(ot)}let m=[],w=[],M=(S,b)=>{let g=c[S],E=m[S]??=new Set;for(let x=0;x<g;x++)for(let C of[b-x,b+x])if(C>=0&&C<g&&!E.has(C))return C;return b},A=[];h.forEach((S,b)=>{S.forEach((g,E)=>{if(c[g]>1){let x=u[b][E],C=M(g,Number.isNaN(x)?f[b][E]:Math.round(x));m[g].add(C),(w[g]??=[])[l[b][E]]=C,Number.isNaN(x)||((A[g]??=[])[C]=x)}})});let R=new Map,N=new Map,I=new Map,G=new Map;a.forEach((S,b)=>{A[b]&&G.set(S,A[b]),R.set(S,c[b]),N.set(S,m[b]?[...m[b]].sort((E,x)=>E-x):te);let g=[];w[b]?.forEach((E,x)=>{g[E]=x-1}),I.set(S,g)});let D=new Map;return h.forEach((S,b)=>{let g=l[b];for(let E=1;E<S.length;E++){let x=S[E-1],C=S[E],tt=[w[x]?.[g[E-1]]??0,w[C]?.[g[E]]??0],W=D.get(a[x]);W||(W=new Map,D.set(a[x],W));let X=W.get(a[C]);X?X.some(([Y,st])=>Y===tt[0]&&st===tt[1])||X.push(tt):W.set(a[C],[tt])}}),{span:R,nodeThreads:N,threadPasses:I,threadAt:G,linkThreads:D}}function ee(t,n,e,{reach:o,taper:s}){let r=new Map;return t.forEach((a,c)=>{let i=n[c],h=a.ids.map((l,f)=>{let u=a.starts[f+1]-a.starts[f],m=Math.floor(u/2);return i[a.starts[f]+(a.forward[f]?m:u-1-m)]});for(let[l,f]of Mn(h,a.owned,o/2+s/2)){let u=h.slice(l,f+1),m=a.ids.slice(l,f+1),w=e.map(M=>{let A=m.map(R=>M.get(R)??0);return A.every(R=>R===A[0])?{slot:A,held:A}:{slot:tn(u,ho(u,A,o/2,1),s/2),held:tn(u,A,s/2,R=>R>0)}});m.forEach((M,A)=>{a.owned[l+A]&&r.set(M,{slot:w.map(R=>R.slot[A]),held:w.map(R=>R.held[A])})})}}),r}function se(t,n,e,o,s,r,a){let c=Ut(s,s),i=new Map,h=l=>{let f=i.get(l);if(!f){let u=o.get(l);f=u?Ut(u.slot,s,u.held):c,i.set(l,f)}return f};t.forEach((l,f)=>{let{walk:u,ids:m,visits:w,starts:M}=l,{threadPasses:A,threadAt:R}=r[u],N=new Float64Array(l.xs.length);m.forEach((G,D)=>{let S=Math.max(0,A.get(G)?.indexOf(w[D])??0),b=R.get(G)?.[S]??S;N.fill(h(G)[u]+b*yn,M[D],M[D+1])});let I=tn(e[f],N,a);n[f].forEach((G,D)=>{let S=M[D],b=M[D+1],g=!0;for(let x=S+1;g&&x<b;x++)g=Math.abs(I[x]-I[S])<1e-9;if(g){G.offset=I[S];return}let E=new Array(b-S);for(let x=S;x<b;x++)E[Zt(l,x)]=I[x];G.offsets=E})})}function uo(t,n,e,o,s=wn(t.map(r=>r.route),n)){let r=gn(t),a=t.map(M=>M.mostPasses),c=Yo*o,i=Vo(s,e,oo*o),h=nn(a)*(r?on(a):1)*o,l=Zo(i,e,oo*o,h,r),f=r?t.map(M=>oe(M.route,M.passes,n,e,c)):void 0,u=f?ee(i,l.arcs,f.map(M=>M.span),{reach:c,taper:eo*o}):void 0;u&&f&&se(i,l.stepFrames,l.arcs,u,a,f,eo/2*o);let m={dx:0,dy:0},w=new Set;for(let M of l.frames.values())for(let{shifts:A}of M.flat())if(!w.has(A)){w.add(A);for(let R of A)m.dx=Math.max(m.dx,Math.abs(R?.dx??0)),m.dy=Math.max(m.dy,Math.abs(R?.dy??0))}return{lines:l,threads:f,spans:u,furthestShift:m}}function U(t,n,e,o){return(o<<24|e<<16|n<<8|t)>>>0}function An(t){return t&255}function En(t){return t>>>8&255}function vn(t){return t>>>16&255}function bn(t){return t>>>24&255}function mo(t){return`rgba(${An(t)},${En(t)},${vn(t)},${bn(t)/255})`}function ls(t,n){return`rgba(${Math.round(t[0]*255)},${Math.round(t[1]*255)},${Math.round(t[2]*255)},${n})`}function Ht(t,n){return U(An(t),En(t),vn(t),Math.round(bn(t)*n))}function fs(t,n){let e=Math.max(0,1-1/n),o=s=>Math.round(s+(255-s)*e);return U(o(An(t)),o(En(t)),o(vn(t)),bn(t))}var po=300,Yt=.7,qt=.5;function re(t){return`hsl(${t}, ${Yt*100}%, ${qt*100}%)`}function Vt(t){return Math.max(0,Math.min(1,t))*po}function _n(t,n){return Vt((t-n.start)/(n.end-n.start))}var ae=30;function us({start:t,bp:n,reversed:e},o){let s=_n(t,o),r=_n(t+n,o);if(r-s<1)return[(s+r)/2];let a=Math.ceil((r-s)/ae);return Array.from({length:a+1},(c,i)=>_n(t+n*(e?a-i:i)/a,o))}var ce=Array.from({length:7},(t,n)=>({offset:n/6,color:re(n/6*po)})),ds=`linear-gradient(to right, ${ce.map(t=>`${t.color} ${t.offset*100}%`).join(", ")})`;var ie=Kt();function go(t,n,e,o,s,r,a=!1){return ie(t,[n,e.scaleX,e.scaleY,o,r,a,s],()=>{let c=new Map;for(let i=0;i<n.edges.length;i++){let h=o?.get(i),l=jn(t,n.edges[i],e,h,h&&r?.[i],a);l&&c.set(i,l)}return c})}var le=4;function fe(t){let n=new Map;for(let e of t.edges)Bt(n,e.from,e.to),Bt(n,e.to,e.from);return n}function he({nodeId:t,nodeById:n,neighbors:e}){let o=new Set([t]),s=[t],r=1/0,a=-1/0;for(let c=0;c<le&&s.length>0;c++){let i=[];for(let h of s){let l=e.get(h);if(l){for(let f of l)if(!o.has(f)){o.add(f);let u=n.get(f);u&&$t(u)?(r=Math.min(r,u.stable.start+u.length),a=Math.max(a,u.stable.start)):i.push(f)}}}s=i}return r===1/0?void 0:{start:Math.min(r,a),end:Math.max(r,a)}}function ue({nodeId:t,nodeById:n,neighbors:e}){let o=n.get(t);return o===void 0?void 0:$t(o)?{start:o.stable.start,end:o.stable.start+o.length}:he({nodeId:t,nodeById:n,neighbors:e})}function yo(t){let n=new Map(t.nodes.map(s=>[s.id,s])),e=fe(t),o=new Map;for(let s of t.nodes){let r=ue({nodeId:s.id,nodeById:n,neighbors:e});r&&o.set(s.id,(r.start+r.end)/2)}return o}var de=U(119,119,119,217),xo=U(136,136,136,217),me=U(24,24,28,240),pe=2.2,Oo=U(160,160,160,255),zt=.18,Ns=mo(Ht(Oo,zt)),ge=11,ye=1.2,xe=1e-6,we=7,Me=3,Ae=3,Ee=1.5,wo=3,ve=.5,be=.45,Rn=12,_e=1e-6,yt=new Float64Array(64),Ct=new Float64Array(64),Tt=new Float64Array(64);function Re(t,n,e,o){let s=t.length*Rn+1;yt.length<s&&(yt=new Float64Array(s),Ct=new Float64Array(s),Tt=new Float64Array(s));let r=t[t.length-1];yt[0]=r.x1,Ct[0]=r.y1,Tt[0]=0;let a=1,c=0;for(let i=t.length-1;i>=0&&c<o;i--){let h=t[i];for(let l=1;l<=Rn&&c<o;l++){let f=1-(l/Rn)**2,u=1-f,m=u*u*u,w=3*u*u*f,M=3*u*f*f,A=f*f*f,R=m*h.x0+w*h.cx0+M*h.cx1+A*h.x1,N=m*h.y0+w*h.cy0+M*h.cy1+A*h.y1;c+=Math.hypot(R-yt[a-1],(N-Ct[a-1])*e)*n,yt[a]=R,Ct[a]=N,Tt[a]=c,a++}}return a}function Mo(t,n){let e=1;for(;e<t-1&&Tt[e]<n;)e++;let o=Tt[e-1],s=Tt[e],r=s>o?Math.min(1,Math.max(0,(n-o)/(s-o))):0;return{x:yt[e-1]+(yt[e]-yt[e-1])*r,y:Ct[e-1]+(Ct[e]-Ct[e-1])*r}}function Se({curves:t,edgeHalfWidth:n,nodeHalfWidth:e,scale:o,yToX:s,color:r,fromSegments:a,toSegments:c}){let i=we+Me*n,h=Re(t,o,s,e+wo*i),l=Tt[h-1],f=l<_e,u=Math.min(e,l),m=f?Math.min(1,zn(a,o,o*s)/i):1;if(f?m<ve:l<wo*i)return;let w=Mo(h,u),M=Mo(h,u+i*m),A=w.x-M.x,R=(w.y-M.y)*s,N=t[t.length-1];return{x:w.x,y:w.y,angle:Math.hypot(A,R)>0?Math.atan2(R,A):We(N,s,Oe(N,c)),length:i*m,halfWidth:(Ae+Ee*n)*m,color:r}}var Ao=[[0,0]],Ce=[0],Eo={dx:0,dy:0};function Io(t,n,e){let o=s=>Math.hypot(s.x-t.x,(s.y-t.y)*e);return o(n[0])<o(n.at(-1))}function Te(t,n,e,o,s){return o?Yn(t).from==="start":Io({x:e.x0,y:e.y0},n,s)}function Oe(t,n){if(n.length<2)return;let e=n[0],o=n[n.length-1];return Math.hypot(t.x1-e.x,t.y1-e.y)<=Math.hypot(t.x1-o.x,t.y1-o.y)?{from:e,to:n[1]}:{from:o,to:n[n.length-2]}}function vo(t,n){if(!t||!n)return;let e=n.x-t.x,o=n.y-t.y,s=Math.hypot(e,o);return s>0?{nx:-o/s,ny:e/s}:void 0}var ko=.1,Ie=1/Math.sqrt(ko);function bo(t,n=1){let e=n===1?t:t.map(o=>({x:o.x,y:o.y*n}));return e.map((o,s)=>{let r=vo(e[s-1],o),a=vo(o,e[s+1]);if(r&&a){let c=(r.nx+a.nx)/2,i=(r.ny+a.ny)/2,h=r.nx*c+r.ny*i;return h>ko?{nx:c/h,ny:i/h}:{nx:c,ny:i}}return r??a??{nx:0,ny:0}})}function _o(t,n,e,o=1){let s=new Array(t.length);for(let r=0;r<t.length;r++){let a=typeof e=="number"?e:e[r];s[r]={x:t[r].x+n[r].nx*a,y:t[r].y+n[r].ny*a/o}}return s}function Cn(t,n,e){let o=(1-Math.abs(2*e-1))*n,s=o*(1-Math.abs(t/60%2-1)),r=e-o/2,a=0,c=0,i=0;return t<60?(a=o,c=s):t<120?(a=s,c=o):t<180?(c=o,i=s):t<240?(c=s,i=o):t<300?(a=s,i=o):(a=o,i=s),[a+r,c+r,i+r]}function en(t,n,e,o=1){let[s,r,a]=Cn(t,n,e);return U(Math.round(s*255),Math.round(r*255),Math.round(a*255),Math.round(o*255))}var ke=[[68,1,84],[59,82,139],[33,145,140],[94,201,98],[253,231,37]],Ne=[[237,137,44],[158,42,122]],Pe=[[220,50,50],[50,120,220]];function Sn(t,n){let e=Math.max(0,Math.min(1,n))*(t.length-1),o=Math.min(t.length-2,Math.floor(e)),s=e-o,r=t[o],a=t[o+1];return U(Math.round(r[0]+(a[0]-r[0])*s),Math.round(r[1]+(a[1]-r[1])*s),Math.round(r[2]+(a[2]-r[2])*s),255)}function Fe(t,n){return en(Jn(t),dn,mn,n)}var No=[60,65,72],Tn=U(...No,255),Ps=`rgb(${No.join(", ")})`;function Le(t,n){let e=n.midpoints.get(t.id);return $t(t)&&e!==void 0?(e-n.start)/n.span:void 0}function Fs(t,n){let e=yo(t);if(n&&n.end>n.start)return{start:n.start,span:n.end-n.start,midpoints:e};let o=1/0,s=-1/0;for(let r of e.values())o=Math.min(o,r),s=Math.max(s,r);return{start:o===1/0?0:o,span:s>o?s-o:1,midpoints:e}}function He(t,n){let e=1/0,o=-1/0,s=1/0,r=-1/0,a=0;for(let c of t.nodes)c.stable!==void 0&&c.stable.rank>a&&(a=c.stable.rank),c.depth<e&&(e=c.depth),c.depth>o&&(o=c.depth),c.length<s&&(s=c.length),c.length>r&&(r=c.length);return{minDepth:e,maxDepth:o,minLength:s,maxLength:r,maxRank:a,nodeCount:t.nodes.length,referenceRamp:n}}function De(t,n,e,o){switch(e){case"random":return Fe(t.id,1);case"depth":return Sn(ke,o.maxDepth>o.minDepth?(t.depth-o.minDepth)/(o.maxDepth-o.minDepth):.5);case"node-length":return Sn(Pe,o.maxLength>o.minLength?(t.length-o.minLength)/(o.maxLength-o.minLength):.5);case"stable-rank":return t.stable===void 0?U(160,160,160,255):t.stable.rank===0?U(52,152,219,255):Sn(Ne,o.maxRank>1?(t.stable.rank-1)/(o.maxRank-1):0);case"reference-position":{let s=o.referenceRamp;if(s===void 0)return U(160,160,160,255);let r=Le(t,s);return r===void 0?Tn:en(Vt(r),Yt,qt)}case"grey":return U(160,160,160,255);case"rainbow":{let s=o.nodeCount>1?n/o.nodeCount*360:0;return en(s,.75,.5)}default:return U(52,152,219,255)}}function We(t,n=1,e){let o=[[t.cx1,t.cy1],[t.cx0,t.cy0],[t.x0,t.y0]];for(let[s,r]of o){let a=t.x1-s,c=(t.y1-r)*n;if(Math.hypot(a,c)>0)return Math.atan2(c,a)}return e?Math.atan2((e.to.y-e.from.y)*n,e.to.x-e.from.x):0}function Ge(t,n){let e=!1;for(let o=0;o<t.length-1&&!e;o++){let s=t[o],r=t[o+1];e=Math.max(s.x,r.x)>=n.minX&&Math.min(s.x,r.x)<=n.maxX&&Math.max(s.y,r.y)>=n.minY&&Math.min(s.y,r.y)<=n.maxY}return e}function Ro(t,n,e=0,o=0){for(let s of t){let r=Math.min(s.x0,s.cx0,s.cx1,s.x1),a=Math.max(s.x0,s.cx0,s.cx1,s.x1),c=Math.min(s.y0,s.cy0,s.cy1,s.y1),i=Math.max(s.y0,s.cy0,s.cy1,s.y1);if(a>=n.minX-e&&r<=n.maxX+e&&i>=n.minY-o&&c<=n.maxY+o)return!0}return!1}var So=new WeakMap;function Xe(t){let n=So.get(t);if(!n){let e=[],o=new Map,s=t.paths??[];for(let r=0;r<s.length;r++)e.push(en(Qn(r,s.length),dn,mn,.85)),o.has(s[r].name)||o.set(s[r].name,r);n={pathColorByIndex:e,pathIndexByName:o},So.set(t,n)}return n}var Co=new WeakMap,Be=new Map;function $e(t){let n=Co.get(t);if(!n){n=new Map;for(let[e,o]of(t.paths??[]).entries())for(let s of new Set(o.nodeIds))Bt(n,s,e);Co.set(t,n)}return n}var Ke=Kt(),Ue=Kt(),To=new WeakMap;function Ye(t){let n=To.get(t);if(!n){n=new Map;for(let{from:e,to:o}of t.edges){let s=n.get(e);s||(s=new Set,n.set(e,s)),s.add(o)}To.set(t,n)}return n}function Ls(t){let{nodePositions:n,graph:e,nodeById:o,colorScheme:s,contigThickness:r,connectorThickness:a,drawPaths:c,nodeWidth:i="uniform",edgeWidth:h="uniform",highlight:l,axis:f,linearLayout:u,viewportBounds:m,referenceRamp:w,deletions:M,deletionRoutes:A,stranded:R,hiddenEdges:N,version:I=0}=t,G=Zn(e,i),D=h==="walks"?to(e):0,S=f.scaleX,b=1/Math.max(S,xe),g=qn(f),E=go(n,e,f,M,I,A,R),x=[],C=new Map,tt=[],W=new Map,X=[],Y=new Map,st=He(e,w),it=new Map;if(s==="rainbow")for(let p=0;p<e.nodes.length;p++)it.set(e.nodes[p].id,p);let ot=e.paths?.length??0,{pathColorByIndex:_,pathIndexByName:F}=Xe(e),q=p=>_[F.get(p)??-1]??xo,rt=c&&ot>1?$e(e):Be,B=l?.walks??[],V=gn(B),d=B.map(p=>p.mostPasses),k=V?on(d):1,P=l&&B.length>1?Ke(l,[n,I,f.scaleX,f.scaleY],()=>uo(B,n,g,b,Ue(l,[n,I],()=>wn(B.map(p=>p.route),n)))):void 0,Q=P?.lines,at=P?.threads,L=P?.spans,ft=V?Ut(d,d):[],xt=new Map,Dt=p=>{let y=xt.get(p);if(!y){let v=L?.get(p);y=v?Ut(v.slot,d,v.held):ft,xt.set(p,y)}return y},Wt=(p,y,v,T)=>V?(Dt(p)[v]+T*yn)*k:(v-(B.length-1)/2)*y,Ot=(p,y,v)=>{let T=p?.offsets?.[y]??p?.offset;return T===void 0?v:T*k},Fn=p=>V?St/2*k:p/2,Ln=new Map,Hn=new WeakMap,Dn=(p,y,v)=>at?.[p]?.threadPasses.get(y)?.[v]??0,rn=(p,y)=>{let v=Ln.get(p);return v||(v=bo(y,g),Ln.set(p,v)),v},Go=(p,y,v)=>{if(!v)return rn(p,y);let T=Hn.get(v.normals);return T||(T=rn(p,y).map((O,$)=>v.normals[$]??O),Hn.set(v.normals,T)),T},Wn=new Map,an=p=>{let y=Wn.get(p);if(y===void 0){let v=o.get(p);y=pn(v?Qt(v,r,i,G):r,B.length),Wn.set(p,y)}return y},Gn=(p,y,v,T,O,$)=>{let nt=T?0:v.length-1,K=y?.[O]?.[Dn(O,p,$)],ct=K?.offsets?.[nt]??K?.offset;return{normal:K?.normals[nt]??rn(p,v)[nt]??{nx:0,ny:0},shift:K?.shifts[nt]??Eo,offset:ct===void 0?Wt(p,an(p),O,$):ct*k}},Xo=(p,y)=>{if(!m)return!0;let v=V?nn(d)*k:(B.length-1)/2*an(y),T=Ie*v*b;return Ro(p,m,T+(P?.furthestShift.dx??0),T/g+(P?.furthestShift.dy??0))},Bo=(p,y,v)=>{let T=at?.[p]?.linkThreads;if(!T?.size)return Ao;let O=T.get(y)?.get(v),$=Ye(e).get(v)?.has(y)?void 0:T.get(v)?.get(y);if(!$)return O??Ao;let nt=$.map(([K,ct])=>[ct,K]);return O?[...O,...nt]:nt},cn=(p,y,v)=>B[p]?.passColors.get(y)?.[at?.[p]?.threadPasses.get(y)?.[v]??0],Xn=new WeakMap,$o=(p,y)=>{if(!y||!V)return p;let v=Xn.get(y.shifts);if(!v){let{shifts:T}=y;v=p.map((O,$)=>{let{dx:nt,dy:K}=T[$]??Eo;return{...O,x:O.x+nt,y:O.y+K}}),Xn.set(y.shifts,v)}return v},Ko=S>(u?1:be);for(let p=0;p<e.edges.length;p++){let y=e.edges[p],v=n[y.from],T=n[y.to],O=E.get(p);if(!v?.length||!T?.length||!O||N?.has(p))continue;let $=y.pathIds?.length??0,K=M?.get(p)!==void 0,ct=l?.edgeIndexes.has(p)??!1,It=a/2*(K?pe:1),kt=K?It:a/2*no($,D,h),wt=c&&$>0,ht=K?me:de,Gt=!l||ct?ht:Ht(ht,zt),Mt=o.get(y.to),At=(Mt?Qt(Mt,r,i,G):r)/2,Et=H=>!m||Ro(H,m),z=H=>$n(H,ge/S,g,m),Xt=(H,j,J)=>{if(!K){X.push({curves:H,thickness:j,color:J});return}for(let dt of z(H))X.push({curves:dt.curves,thickness:j,color:J})},ln=(H,j,J,dt,bt,gt,_t,et,fn)=>{if(!K){X.push({curves:H,thickness:j,color:J,walk:dt,pass:bt,normal:gt,offsetX:_t,endNormal:et,endOffsetX:fn});return}let Rt={normal:gt,offsetX:_t},Pt={normal:et,offsetX:fn};for(let Z of z(H)){let mt=Z.startAlong===0?Rt:xn(Rt,Pt,Z.startAlong),lt=Z.endAlong===1?Pt:xn(Rt,Pt,Z.endAlong);X.push({curves:Z.curves,thickness:j,color:J,walk:dt,pass:bt,normal:mt.normal,offsetX:mt.offsetX,endNormal:lt.normal,endOffsetX:lt.offsetX})}},ut=H=>{let j=Ko?Se({curves:H,edgeHalfWidth:K||wt?a/2:kt,nodeHalfWidth:At,scale:S,yToX:g,color:Gt,fromSegments:v,toSegments:T}):void 0;j&&tt.push(j)},Nt=X.length,vt=tt.length,pt=l?.walks.length&&ct&&!wt?l.walks:void 0;if(pt&&!Xo(O,y.from))continue;if(pt){let H=Te(y,v,O[0],R,g),j=O.at(-1),J=Io({x:j.x1,y:j.y1},T,g),dt=pt.length===1,bt=Fn(an(y.from)),gt=Q?.frames.get(y.from),_t=Q?.frames.get(y.to);for(let et=0;et<pt.length;et++)if(pt[et].edgeIndexes.has(p))for(let[Rt,Pt]of Bo(et,y.from,y.to)){let Z=Gn(y.from,gt,v,H,et,Rt),mt=V?Gn(y.to,_t,T,J,et,Pt):Z,lt=dt?0:Z.offset*b,hn=V?mt.offset*b:lt,Bn=V?Un(O,Z.shift.dx+Z.normal.nx*lt,Z.shift.dy+Z.normal.ny*lt/g,mt.shift.dx+mt.normal.nx*hn,mt.shift.dy+mt.normal.ny*hn/g):lt===0?O:un(O,Z.normal.nx*lt,Z.normal.ny*lt/g);Et(Bn)&&ln(Bn,bt,cn(et,y.from,Rt)??cn(et,y.to,Pt)??ht,et,Rt,Z.normal,lt,mt.normal,hn)}X.length>Nt&&ut(O)}else if(!wt)Et(O)&&(Xt(O,kt,Gt),ut(O));else{let H=Vn(v,T,$,f),j=Math.floor(($-1)/2);for(let J=0;J<$;J++){let{x:dt,y:bt}=H[J],gt=dt===0&&bt===0?O:un(O,dt,bt);if(!Et(gt))continue;let _t=q(y.pathIds[J]);Xt(gt,It,l&&(l.walks.length?!l.names.has(y.pathIds[J]):!ct)?Ht(_t,zt):_t),J===j&&ut(gt)}}let jt=X.length-Nt;jt>0&&Y.set(p,{start:Nt,count:jt});let Jt=tt.length-vt;Jt>0&&W.set(p,{start:vt,count:Jt})}for(let[p,y]of Object.entries(n)){let v=o.get(p);if(!v||m&&!Ge(y,m))continue;let T=l!==void 0&&!l.nodeIds.has(p),O=T?Oo:De(v,it.get(p)??0,s,st),$=T?Ht(O,zt):O,nt=Qt(v,r,i,G),K=nt/2,ct=x.length,It=rt.get(p),kt=nt/ot,wt=y.length>=2,ht=l?.walks.length&&!T&&!It?.length?l.walks:void 0;if(wt&&ht){let Mt=pn(nt,ht.length),At=Fn(Mt),Et=Q?.frames.get(p);for(let z=0;z<ht.length;z++){let Xt=ht[z].colors.get(p);if(Xt===void 0)continue;let ln=at?.[z]?.nodeThreads.get(p)??Ce;for(let ut of ln){let Nt=cn(z,p,ut)??Xt;if(ht.length===1){x.push({points:y,thickness:At,color:Nt,walk:z,pass:ut});continue}let vt=Et?.[z]?.[Dn(z,p,ut)],pt=Go(p,y,vt),jt=$o(y,vt),Jt=Wt(p,Mt,z,ut),H=vt?.offsets?.map(J=>J*k*b),j=H?H[Math.floor(H.length/2)]:Ot(vt,0,Jt)*b;x.push({points:_o(jt,pt,H??j,g),thickness:At,color:Nt,walk:z,pass:ut,normals:pt,offsetX:j,...H&&{offsets:H}})}}}else if(wt&&It?.length&&kt>=ye){let Mt=bo(y,g);for(let At of It){let Et=(At-(ot-1)/2)*kt*b,z=_[At]??xo;x.push({points:_o(y,Mt,Et,g),thickness:kt/2,color:T?Ht(z,zt):z})}}else wt&&x.push({points:y,thickness:K,color:$});let Gt=x.length-ct;Gt>0&&C.set(p,{start:ct,count:Gt})}return{nodeStrokes:x,nodeStrokeRuns:C,arrows:tt,arrowRuns:W,edgeCurves:X,edgeCurveRuns:Y}}var Lo=[{value:"progress",label:"Progress along the walk"},{value:"walk",label:"One colour for the walk"},{value:"reference",label:"Reference position"}],kn=[{value:"grey",label:"Grey to black",ends:["#a3a3a3","#151515"]},{value:"blue",label:"Cyan to navy",ends:["#6ee0f0","#0b2c7a"]},{value:"red",label:"Yellow to red",ends:["#ffd24a","#b3121b"]},{value:"purple",label:"Pink to plum",ends:["#f5a3d8","#5e1a6e"]},{value:"green",label:"Lime to forest",ends:["#b6e36c","#0b5d3b"]},{value:"orange",label:"Peach to rust",ends:["#ffc285","#8f3a00"]},{value:"rainbow",label:"Rainbow"}],On=["blue","red","purple","green"],qe=t=>Lo.some(n=>n.value===t),Ve=t=>kn.some(n=>n.value===t);function ze(t,n,e,o=!0){let{field:s,scheme:r}=t.color??{},a=qe(s)?s:o?"progress":"walk",c=n?"grey":On[e%On.length],i=Ve(r)?r==="rainbow"&&a!=="reference"?c:r:c,h=Math.floor(e/On.length)%Po.length;return a==="walk"&&i===c&&h>0?{field:a,scheme:i,shade:Po[h]}:o||a==="walk"?{field:a,scheme:i}:{field:a,scheme:i,darkest:je}}var je=.55,Nn=.5,Po=[Nn,.85,.2],Je=.08,Fo=({field:t,scheme:n})=>t!=="walk"&&n!=="rainbow";function Qe(t){let n=new Map;for(let o of t)Fo(o)&&n.set(o.scheme,(n.get(o.scheme)??0)+1);let e=new Map;return t.map(o=>{let s=Fo(o)?n.get(o.scheme):1;if(s<2)return o;let r=e.get(o.scheme)??0;e.set(o.scheme,r+1);let a=Je/2;return{...o,stretch:[r/s+(r>0?a:0),(r+1)/s-(r<s-1?a:0)]}})}var Ho=({stretch:t},n)=>t?t[0]+(t[1]-t[0])*n:n,Ze=t=>t<=.04045?t/12.92:((t+.055)/1.055)**2.4,ts=t=>t<=.0031308?t*12.92:1.055*t**(1/2.4)-.055;function ns(t){let[n,e,o]=[1,3,5].map(c=>Ze(Number.parseInt(t.slice(c,c+2),16)/255)),s=Math.cbrt(.4122214708*n+.5363325363*e+.0514459929*o),r=Math.cbrt(.2119034982*n+.6806995451*e+.1073969566*o),a=Math.cbrt(.0883024619*n+.2817188376*e+.6299787005*o);return[.2104542553*s+.793617785*r-.0040720468*a,1.9779984951*s-2.428592205*r+.4505937099*a,.0259040371*s+.7827717662*r-.808675766*a]}function os([t,n,e]){let o=(t+.3963377774*n+.2158037573*e)**3,s=(t-.1055613458*n-.0638541728*e)**3,r=(t-.0894841775*n-1.291485548*e)**3;return[4.0767416621*o-3.3077115913*s+.2309699292*r,-1.2684380046*o+2.6097574011*s-.3413193965*r,-.0041960863*o-.7034186147*s+1.707614701*r].map(a=>ts(Math.max(0,Math.min(1,a)))*255)}var In=new Map;function es(t){if(!In.has(t)){let n=kn.find(e=>e.value===t);In.set(t,n&&"ends"in n?n.ends.map(ns):void 0)}return In.get(t)}function Pn(t,n,e=0){let o=Math.max(0,Math.min(1,n)),s=es(t);if(!s)return Cn(Vt(o),Yt,qt).map(l=>l*255);let[r,a]=s,c=r[0],i=a[0],h=i<e&&c>e?(c-e)/(c-i):1;return os(r.map((l,f)=>l+(a[f]-l)*o*h))}function Do(t,n,e){let[o,s,r]=Pn(t,n,e).map(Math.round);return`rgb(${o}, ${s}, ${r})`}function sn(t,n,e){let[o,s,r]=Pn(t,n,e).map(Math.round);return U(o,s,r,255)}function ss(t,n){let{field:e,scheme:o,darkest:s,shade:r=Nn}=t;return e==="walk"?sn(o,r):n===void 0?Wo:sn(o,Ho(t,n),s)}var Wo=Tn;function rs(t){let{field:n,scheme:e,darkest:o,shade:s=Nn}=t,r=(a,c)=>({offset:a,color:Do(e,c,o),abgr:sn(e,c,o)});return n==="walk"?[r(0,s)]:Array.from({length:7},(a,c)=>r(c/6,Ho(t,c/6)))}export{fe as a,ue as b,St as c,gn as d,cs as e,U as f,mo as g,ls as h,Ht as i,fs as j,re as k,us as l,ce as m,ds as n,go as o,Ns as p,Cn as q,Ps as r,Le as s,Fs as t,He as u,De as v,Ls as w,Lo as x,kn as y,ze as z,Qe as A,ss as B,Wo as C,rs as D};
|
|
2
|
+
//# sourceMappingURL=chunk-4AXLBI6M.js.map
|