jbrowse-plugin-graphgenomeviewer 7.1.4 → 7.1.6

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 (68) hide show
  1. package/dist/chunks/{GbzBaseSyntenyAdapter-LRECKL74.js → GbzBaseSyntenyAdapter-WEQKJ5ZF.js} +2 -2
  2. package/dist/chunks/{GbzBaseSyntenyAdapter-LRECKL74.js.map → GbzBaseSyntenyAdapter-WEQKJ5ZF.js.map} +1 -1
  3. package/dist/chunks/{GraphGenomeView-PSDUS64B.js → GraphGenomeView-JYD7HBX7.js} +2 -2
  4. package/dist/chunks/{GraphTrackSettingsDialog-47PQ6LM7.js → GraphTrackSettingsDialog-ZT7AWO3C.js} +2 -2
  5. package/dist/chunks/{HighlightColorDialog-2MP3C5AK.js → HighlightColorDialog-A3E5WHXH.js} +2 -2
  6. package/dist/chunks/{LinearGraphDisplay-FTFJFNKT.js → LinearGraphDisplay-QYPXZEX7.js} +2 -2
  7. package/dist/chunks/{MinigraphBubbleAdapter-HW7XQMAI.js → MinigraphBubbleAdapter-FNP6DISL.js} +2 -2
  8. package/dist/chunks/{RgfaTabixAdapter-PSKYWD2X.js → RgfaTabixAdapter-6NY7XZ6E.js} +2 -2
  9. package/dist/chunks/{WalkTabixSyntenyAdapter-GH6NYQTF.js → WalkTabixSyntenyAdapter-KRNEQL44.js} +2 -2
  10. package/dist/chunks/{chunk-BUY2PV7D.js → chunk-7UTCUHQI.js} +2 -2
  11. package/dist/chunks/{chunk-BUY2PV7D.js.map → chunk-7UTCUHQI.js.map} +1 -1
  12. package/dist/chunks/{chunk-W6EQLQ6H.js → chunk-A7DB4V4C.js} +1 -1
  13. package/dist/chunks/{chunk-W6EQLQ6H.js.map → chunk-A7DB4V4C.js.map} +1 -1
  14. package/dist/chunks/{chunk-FVK2THE4.js → chunk-HVBY3TGB.js} +2 -2
  15. package/dist/chunks/{chunk-FVK2THE4.js.map → chunk-HVBY3TGB.js.map} +2 -2
  16. package/dist/chunks/{chunk-WAMBI7OX.js → chunk-HYKQBZA4.js} +2 -2
  17. package/dist/chunks/{chunk-WAMBI7OX.js.map → chunk-HYKQBZA4.js.map} +1 -1
  18. package/dist/chunks/{chunk-EGDLEQ47.js → chunk-IP3ORVTU.js} +2 -2
  19. package/dist/chunks/{chunk-S75W27NT.js → chunk-JHCHSGEL.js} +2 -2
  20. package/dist/chunks/{chunk-S75W27NT.js.map → chunk-JHCHSGEL.js.map} +1 -1
  21. package/dist/chunks/{chunk-ZMOMFU2B.js → chunk-KM3QNC77.js} +1 -1
  22. package/dist/chunks/{chunk-ZMOMFU2B.js.map → chunk-KM3QNC77.js.map} +1 -1
  23. package/dist/chunks/{chunk-RP3L3Z5W.js → chunk-LP73EZV4.js} +3 -3
  24. package/dist/chunks/{chunk-RP3L3Z5W.js.map → chunk-LP73EZV4.js.map} +4 -4
  25. package/dist/chunks/{chunk-VJ3SO4CH.js → chunk-NM7JYFMG.js} +1 -1
  26. package/dist/chunks/{chunk-VJ3SO4CH.js.map → chunk-NM7JYFMG.js.map} +1 -1
  27. package/dist/chunks/{chunk-MND7GAOG.js → chunk-QFD5OVPZ.js} +2 -2
  28. package/dist/chunks/{chunk-5O6YRJHL.js → chunk-QJMXLCUM.js} +2 -2
  29. package/dist/chunks/{chunk-5O6YRJHL.js.map → chunk-QJMXLCUM.js.map} +1 -1
  30. package/dist/chunks/{chunk-N6PQZSAX.js → chunk-QKEY7EU7.js} +1 -1
  31. package/dist/chunks/{chunk-N6PQZSAX.js.map → chunk-QKEY7EU7.js.map} +1 -1
  32. package/dist/chunks/chunk-SP3OUF6G.js +2 -0
  33. package/dist/chunks/chunk-SP3OUF6G.js.map +7 -0
  34. package/dist/chunks/{chunk-FHZXW7IG.js → chunk-SQUFY3QO.js} +2 -2
  35. package/dist/chunks/{chunk-VQUMZEGN.js → chunk-X7LTMIYL.js} +2 -2
  36. package/dist/chunks/{chunk-VQUMZEGN.js.map → chunk-X7LTMIYL.js.map} +1 -1
  37. package/dist/chunks/{chunk-LELA7BG7.js → chunk-XO2PD5JO.js} +2 -2
  38. package/dist/chunks/{chunk-LELA7BG7.js.map → chunk-XO2PD5JO.js.map} +1 -1
  39. package/dist/chunks/{chunk-TUKJRVBS.js → chunk-Y7UUDKJL.js} +1 -1
  40. package/dist/chunks/{chunk-TUKJRVBS.js.map → chunk-Y7UUDKJL.js.map} +1 -1
  41. package/dist/chunks/chunk-YNTSFMXQ.js +4 -0
  42. package/dist/chunks/chunk-YNTSFMXQ.js.map +7 -0
  43. package/dist/chunks/{renderSvg-V4OYQTQZ.js → renderSvg-LBMWZDLB.js} +2 -2
  44. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +2 -2
  45. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +2 -2
  46. package/package.json +2 -2
  47. package/src/GraphGenomeView/components/FacetPanels.tsx +0 -3
  48. package/src/GraphGenomeView/components/GraphCanvas.tsx +13 -5
  49. package/src/GraphGenomeView/components/usePaneGestures.test.tsx +67 -0
  50. package/src/GraphGenomeView/components/usePaneGestures.ts +46 -14
  51. package/src/RgfaTabixAdapter/walkFiles.test.ts +9 -1
  52. package/src/RgfaTabixAdapter/walkRowRuns.ts +4 -5
  53. package/src/version.ts +1 -1
  54. package/dist/chunks/chunk-HM57SCYO.js +0 -4
  55. package/dist/chunks/chunk-HM57SCYO.js.map +0 -7
  56. package/dist/chunks/chunk-NP42Y2MV.js +0 -2
  57. package/dist/chunks/chunk-NP42Y2MV.js.map +0 -7
  58. /package/dist/chunks/{GraphGenomeView-PSDUS64B.js.map → GraphGenomeView-JYD7HBX7.js.map} +0 -0
  59. /package/dist/chunks/{GraphTrackSettingsDialog-47PQ6LM7.js.map → GraphTrackSettingsDialog-ZT7AWO3C.js.map} +0 -0
  60. /package/dist/chunks/{HighlightColorDialog-2MP3C5AK.js.map → HighlightColorDialog-A3E5WHXH.js.map} +0 -0
  61. /package/dist/chunks/{LinearGraphDisplay-FTFJFNKT.js.map → LinearGraphDisplay-QYPXZEX7.js.map} +0 -0
  62. /package/dist/chunks/{MinigraphBubbleAdapter-HW7XQMAI.js.map → MinigraphBubbleAdapter-FNP6DISL.js.map} +0 -0
  63. /package/dist/chunks/{RgfaTabixAdapter-PSKYWD2X.js.map → RgfaTabixAdapter-6NY7XZ6E.js.map} +0 -0
  64. /package/dist/chunks/{WalkTabixSyntenyAdapter-GH6NYQTF.js.map → WalkTabixSyntenyAdapter-KRNEQL44.js.map} +0 -0
  65. /package/dist/chunks/{chunk-EGDLEQ47.js.map → chunk-IP3ORVTU.js.map} +0 -0
  66. /package/dist/chunks/{chunk-MND7GAOG.js.map → chunk-QFD5OVPZ.js.map} +0 -0
  67. /package/dist/chunks/{chunk-FHZXW7IG.js.map → chunk-SQUFY3QO.js.map} +0 -0
  68. /package/dist/chunks/{renderSvg-V4OYQTQZ.js.map → renderSvg-LBMWZDLB.js.map} +0 -0
@@ -1,2 +1,2 @@
1
- import{a as ht,c as R,h as ut}from"./chunk-TUKJRVBS.js";import{a as it,b as ft}from"./chunk-ZMOMFU2B.js";var lt=20;var Wt=class{constructor(t){this.segments=t.segments,this.offsets=t.offsets,this.path=t.path,this.start=t.start,this.reversed=t.reversed,this.paths=t.paths,this.samples=t.samples,this.slots=new Map(this.segments.map((n,e)=>[n,e]))}static from(t){let n=new Y;for(let[e,s]of t){n.declare(e);for(let r of s)n.add(e,r.path,r.sample,r.start,r.strand==="-")}return n.build()}get size(){return this.segments.length}slot(t){return this.slots.get(t)??-1}pathIndex(t){return this.paths.indexOf(t)}firstBy(t,n){for(let e=this.offsets[t];e<this.offsets[t+1];e++)if(this.path[e]===n)return e;return-1}replay(){let t=new Map;return(n,e)=>{if(n<0||e<0)return-1;let s=n*this.paths.length+e,r=this.offsets[n+1],o=t.get(s)??this.offsets[n];for(;o<r&&this.path[o]!==e;)o++;return t.set(s,o+1),o<r?o:-1}}filter(t,n=()=>!0){let e=this.paths.map(t),s=new Y;return this.segments.forEach((r,o)=>{if(!n(r))return;let a=s.declare(r);for(let c=this.offsets[o];c<this.offsets[o+1];c++){let i=this.path[c];e[i]&&s.addAt(a,s.pathOf(this.paths[i],this.samples[i]),this.start[c],this.reversed[c]===1)}}),s.build()}strand(t){return this.reversed[t]?"-":"+"}visit(t){let n=this.path[t];return{path:this.paths[n],sample:this.samples[n],start:this.start[t],strand:this.strand(t)}}visitsAt(t){let n=[];for(let e=this.offsets[t];e<this.offsets[t+1];e++)n.push(this.visit(e));return n}get(t){let n=this.slot(t);return n<0?void 0:this.visitsAt(n)}has(t){return this.slots.has(t)}keys(){return this.segments[Symbol.iterator]()}*values(){for(let t=0;t<this.segments.length;t++)yield this.visitsAt(t)}*entries(){for(let t=0;t<this.segments.length;t++)yield[this.segments[t],this.visitsAt(t)]}[Symbol.iterator](){return this.entries()}},W=class{constructor(t){this.data=t,this.length=0}push(t){if(this.length===this.data.length){let n=new this.data.constructor(this.data.length*2);n.set(this.data),this.data=n}this.data[this.length++]=t}},Y=class{constructor(){this.segments=[],this.slots=new Map,this.paths=[],this.samples=[],this.pathIndex=new Map,this.slot=new W(new Int32Array(1024)),this.path=new W(new Int32Array(1024)),this.start=new W(new Float64Array(1024)),this.reversed=new W(new Uint8Array(1024))}declare(t){let n=this.slots.get(t);return n===void 0&&(n=this.segments.length,this.slots.set(t,n),this.segments.push(t)),n}pathOf(t,n){let e=this.pathIndex.get(t);return e===void 0&&(e=this.paths.length,this.pathIndex.set(t,e),this.paths.push(t),this.samples.push(n)),e}add(t,n,e,s,r){this.addAt(this.declare(t),this.pathOf(n,e),s,r)}addAt(t,n,e,s){this.slot.push(t),this.path.push(n),this.start.push(e),this.reversed.push(s?1:0)}build(){let t=this.slot.length,n=this.segments.length,e=new Int32Array(n+1),s=this.slot.data;for(let i=0;i<t;i++)e[s[i]+1]++;for(let i=0;i<n;i++)e[i+1]+=e[i];let r=e.slice(0,n),o=new Int32Array(t),a=new Float64Array(t),c=new Uint8Array(t);for(let i=0;i<t;i++){let h=r[s[i]]++;o[h]=this.path.data[i],a[h]=this.start.data[i],c[h]=this.reversed.data[i]}return new Wt({segments:this.segments,offsets:e,path:o,start:a,reversed:c,paths:this.paths,samples:this.samples})}};var Yt=/:(\d+)-\d+$/,Dt=/^([^#]*#[^#]*#[^#[]*)#(\d+)(?:\[(\d+)-\d+\])?$/,Vt=/\[(\d+)-\d+\]$/;function D(t){let n=Dt.exec(t);if(n)return{name:n[1],start:+n[2]+ +(n[3]??0)};let e=Yt.exec(t)??Vt.exec(t);return e?{name:t.slice(0,e.index),start:+e[1]}:{name:t,start:0}}function ce(t,n){let e=[],s=new Y;for(let r of t){let o=it(r.name),a=s.pathOf(r.name,o),c=r.start;for(let i of r.steps)s.addAt(s.declare(i.id),a,c,i.strand==="-"),c+=n(i.id);e.push({name:r.name,sample:o,start:r.start,length:c-r.start})}return{anchorPaths:e,pathVisits:s.build()}}function Ut(t,n){return t.find(s=>s.sample===n||s.name===n)??t[0]}var zt=1;function jt(t,n,e,s){let r=n.slot(t.name);if(r<0||n.offsets[r]===n.offsets[r+1])return t;let o=n.firstBy(r,e),a=o>=0?o:n.offsets[r];return{...t,stable:{refName:n.paths[n.path[a]],start:n.start[a],rank:o>=0?ht:zt,strand:n.strand(a)},samples:s(r)}}function qt(t){let n=[...new Set(t.samples)].sort(),e=new Map(n.map((a,c)=>[a,c])),s=Int32Array.from(t.samples,a=>e.get(a)),r=new Uint8Array(n.length),o=new Int32Array(n.length);return a=>{let c=0;for(let h=t.offsets[a];h<t.offsets[a+1];h++){let u=s[t.path[h]];r[u]===0&&(r[u]=1,o[c++]=u)}let i;if(c===n.length)i=n,r.fill(0);else if(c*8<n.length){let h=o.subarray(0,c);h.forEach(u=>r[u]=0),i=Array.from(h.sort(),u=>n[u])}else{i=[];for(let h=0;h<n.length;h++)r[h]===1&&(r[h]=0,i.push(n[h]))}return i}}function Jt(t,n){let{anchorPaths:e,pathVisits:s}=t,r=e&&s?Ut(e,n):void 0;if(!r||!e||!s)return t;let o=qt(s),a=s.pathIndex(r.name);return{...t,nodes:t.nodes.map(c=>jt(c,s,a,o)),anchoredBy:"paths",referencePath:r.name}}function ie(t,n){return t.anchoredBy==="tags"?t:Jt(t,n)}function fe(t,n){if(!t.anchorPaths)return;let e=new Map(t.nodes.map(o=>[o.id,o.length])),s=(o,a=o.length)=>{let c=0;for(let i=0;i<a;i++)c+=e.get(o[i])??0;return c},r=new Map;for(let o of t.paths??[]){let a=D(o.name).name;r.set(a,[...r.get(a)??[],o])}return t.anchorPaths.map(o=>{let a=r.get(o.name),c=a?.length===1?a[0]:void 0,i=c&&n.get(c.name);return c&&i?{...o,start:o.start+s(c.nodeIds,i.first),length:s(i.nodeIds)}:o})}var dt=11,Kt=6.2,V=4;function Qt(t){return t.length*Kt+V*2}function Zt(t,n){return t.x0<n.x1&&t.x1>n.x0&&t.y0<n.y1&&t.y1>n.y0}function yt(t,n){return t.x1<=0||t.x0>=n.width||t.y1<=0||t.y0>=n.height}function tn(t,n){return t.x0>=0&&t.x1<=n.width&&t.y0>=0&&t.y1<=n.height}function nn(t,n=[]){let e=[...n];return s=>yt(s,t)||e.some(r=>Zt(r,s))?!1:(e.push(s),!0)}function ue(t,n,e){let s=[],r=dt+V*2,o=(a,c)=>{let i=Qt(c),h=a.y>n.height/2?-1:1;for(let u=0;u<=(a.stack??0);u++){let d=a.y+h*u*r,y={x0:a.x-i/2,x1:a.x+i/2,y0:d-dt-V,y1:d+V};if(yt(y,n))return;if(tn(y,n)&&(a.fits?.(y)??!0)&&e(y))return{...a,text:c,y:d,w:i}}};for(let a of t){let c=o(a,a.text)??(a.fallback===void 0?void 0:o(a,a.fallback));c&&s.push(c)}return s}function ye(t){let n=e=>Math.round(e*100)/100;return t.map((e,s)=>`${s?"L":"M"}${n(e.x)},${n(e.y)}`).join("")}function pt(t,n,e,s,r){let o=Math.hypot(s-n,e-t);if(o===0)return[e,s];let a=(e-t)/o,c=(s-n)/o;return[e+r*a,s+r*c]}function Q(t,n){let e=1-n,s=e*e*e,r=3*e*e*n,o=3*e*n*n,a=n*n*n;return{x:s*t.x0+r*t.cx0+o*t.cx1+a*t.x1,y:s*t.y0+r*t.cy0+o*t.cy1+a*t.y1}}function At(t){let n=t[Math.floor(t.length/2)];return n?Q(n,.5):void 0}function _t(t){let n=1/0,e=1/0,s=-1/0,r=-1/0;for(let o of t)n=Math.min(n,o.x0,o.cx0,o.cx1,o.x1),s=Math.max(s,o.x0,o.cx0,o.cx1,o.x1),e=Math.min(e,o.y0,o.cy0,o.cy1,o.y1),r=Math.max(r,o.y0,o.cy0,o.cy1,o.y1);return{minX:n,minY:e,maxX:s,maxY:r}}function en(t,n,e){let s=Q(t,n),r=Q(t,e),o=(e-n)/3,a=xt(t,n),c=xt(t,e);return{x0:s.x,y0:s.y,cx0:s.x+a.x*o,cy0:s.y+a.y*o,cx1:r.x-c.x*o,cy1:r.y-c.y*o,x1:r.x,y1:r.y}}function xt(t,n){let e=1-n,s=3*e*e,r=6*e*n,o=3*n*n;return{x:s*(t.cx0-t.x0)+r*(t.cx1-t.cx0)+o*(t.x1-t.cx1),y:s*(t.cy0-t.y0)+r*(t.cy1-t.cy0)+o*(t.y1-t.cy1)}}function pe(t,n){let e=t.map(a=>Math.hypot(a.cx0-a.x0,a.cy0-a.y0)+Math.hypot(a.cx1-a.cx0,a.cy1-a.cy0)+Math.hypot(a.x1-a.cx1,a.y1-a.cy1)),s=e.reduce((a,c)=>a+c,0),r=Math.max(3,Math.round(s/n)|1),o=[];for(let a=0;a<r;a+=2){let c=a/r*s,i=(a+1)/r*s,h=[],u=0;t.forEach((d,y)=>{let f=e[y],l=u+f;f>0&&l>c&&u<i&&h.push(en(d,Math.max(0,(c-u)/f),Math.min(1,(i-u)/f))),u=l}),h.length&&o.push(h)}return o}function xe(t,n,e){let s=new Array(t.length);for(let r=0;r<t.length;r++){let o=t[r];s[r]={x0:o.x0+n,y0:o.y0+e,cx0:o.cx0+n,cy0:o.cy0+e,cx1:o.cx1+n,cy1:o.cy1+e,x1:o.x1+n,y1:o.y1+e}}return s}function $(t,n){let e=t.length-1;return n==="end"?{at:t[e],inward:t[e-1]}:{at:t[0],inward:t[1]}}var sn=.5,on=80;function H(t){return t.endsWith("-")?"-":"+"}function F(t){let n=(e,s)=>(s??H(e))===H(e);return{from:n(t.from,t.fromStrand)?"end":"start",to:n(t.to,t.toStrand)?"start":"end"}}function mt(t){let n=1/0,e=-1/0;for(let s of t)n=Math.min(n,s.x),e=Math.max(e,s.x);return{min:n,max:e}}function gt(t,n){return Math.max(0,n.min-t,t-n.max)}function Mt(t,n,e){let s=gt(t[0].x,n),r=gt(t[t.length-1].x,n);return s===r?e:s<r?"start":"end"}function rn(t,n){return{from:Mt(t,mt(n),"end"),to:Mt(n,mt(t),"start")}}var bt=new WeakMap;function an(t,n){let e=bt.get(t);e||(e=new WeakMap,bt.set(t,e));let s=e.get(n);return s||(s=rn(t,n),e.set(n,s)),s}var cn=.75,fn=1.15,hn=.35,un=3*lt;function ln(t,n,e,s,r,o){let a=Math.hypot(e-t,s-n),c=a===0?1:(e-t)/a,i=a===0?0:(s-n)/a,h=0,u=1/0,d=-1/0;for(let p of r){let x=p.x-t,M=p.y-n,m=x*-i+M*c;Math.abs(m)>Math.abs(h)&&(h=m);let g=x*c+M*i;u=Math.min(u,g),d=Math.max(d,g)}let y=r.length?d-u:0,f=Math.max(Math.abs(h)*fn/cn,y*hn),l=o===void 0?f:Math.min(f,o);return h<0?-l:l}function It({scaleX:t,scaleY:n}){return n/t}var dn=3;function J(t,n,e){let s=n.x-t.x,r=(n.y-t.y)*e,o=Math.hypot(s,r);return o===0?void 0:{x:s/o,y:r/o}}function me(t,n,e,s){let r=It(s),o=dn/Math.max(s.scaleX,1e-6),a=J(t[t.length-1],n[0],r)??J(t[0],t.at(-1),r)??J(n[0],n.at(-1),r)??{x:1,y:0},c=[];for(let i=0;i<e;i++){let h=(i-(e-1)/2)*o;c.push({x:-a.y*h,y:a.x*h/r})}return c}function K(t,n){return t.map(e=>({x:e.x,y:e.y*n}))}function yn(t,n){for(let e of t)e.y0/=n,e.cy0/=n,e.cy1/=n,e.y1/=n;return t}var pn=12,xn=40;function vt(t,n){let e=0;for(let o=1;o<t.length;o++)e+=Math.hypot(t[o].x-t[o-1].x,t[o].y-t[o-1].y);let s=e*n;return Math.min(xn,Math.max(pn,s/2))/Math.max(n,Number.EPSILON)}function mn(t){return t.from!==t.to?!1:t.fromStrand&&t.toStrand&&t.fromStrand!==t.toStrand?t.fromStrand==="+"?"end":"start":!0}function Et(t,n=!1){let e=mn(t);if(!n)return e;let s=F(t);return e===!1?s:s.from===s.to?s.from:!0}function gn(t,n){let{at:e,inward:s}=t,r=s?e.x-s.x:1,o=s?e.y-s.y:0,a=Math.hypot(r,o)||1,c=r/a,i=o/a,h=e.x,u=e.y,d=h+c*n/3,y=u+i*n/3,f=h+c*n,l=u+i*n,p=-i*n/2,x=c*n/2;return[{x0:h,y0:u,cx0:d,cy0:y,cx1:f+p,cy1:l+x,x1:f,y1:l},{x0:f,y0:l,cx0:f-p,cy0:l-x,cx1:d,cy1:y,x1:h,y1:u}]}function Z(t,n,e,s,r=[],o){let a=s.scaleX,c=It(s),i=o??(s.pixelRows?un:void 0);if(e===!1&&(e=an(t,n)),c!==1)return yn(Z(K(t,c),K(n,c),e,{scaleX:a,scaleY:a},K(r,c),i===void 0?void 0:i*c),c);if(typeof e=="string")return gn($(t,e),vt(t,a));let h=e===!0,u=e===!0?{from:"end",to:"start"}:e,d=$(t,u.from),y=$(n,u.to),f=d.at,l=y.at,p=f.x,x=f.y,M=l.x,m=l.y;if(h){let g=1,A=0;if(d.inward){let P=f.x-d.inward.x,X=f.y-d.inward.y,N=Math.hypot(P,X);N>0&&(g=P/N,A=X/N)}let b=vt(t,a),_=-A,w=g,E=(f.x+l.x)/2+_*b,I=(f.y+l.y)/2+w*b,v=p+g*b,S=x+A*b,L=M-g*b,O=m-A*b;return[{x0:p,y0:x,cx0:v,cy0:S,cx1:v+_*b,cy1:S+w*b,x1:E,y1:I},{x0:E,y0:I,cx0:L+_*b,cy0:O+w*b,cx1:L,cy1:O,x1:M,y1:m}]}else{let g=d.inward??{x:f.x-(l.x-f.x),y:f.y-(l.y-f.y)},A=y.inward??{x:l.x-(f.x-l.x),y:l.y-(f.y-l.y)},b=Math.hypot(M-p,m-x),_=(st,ot,Ht,Ft)=>{let rt=ot.x-st.x,at=ot.y-st.y,ct=Math.hypot(rt,at),Gt=ct===0?0:(Ht*rt+Ft*at)/ct;return Math.max(0,Math.min(b*sn,on,Gt*.5))},w=l.x-f.x,E=l.y-f.y,[I,v]=pt(g.x,g.y,f.x,f.y,_(g,f,w,E)),[S,L]=pt(A.x,A.y,l.x,l.y,_(A,l,-w,-E)),O=r.length?ln(p,x,M,m,r,i):0,P=b===0?1:b,X=(M-p)/P,N=(m-x)/P,k=-N*O,C=X*O,T=X*Math.abs(O),et=N*Math.abs(O);return[{x0:p,y0:x,cx0:I+k-T,cy0:v+C-et,cx1:S+k+T,cy1:L+C+et,x1:M,y1:m}]}}function wt(t,n){let e=t[0],s=t.at(-1);return Math.hypot(e.x-n.x,e.y-n.y)<Math.hypot(s.x-n.x,s.y-n.y)?"start":"end"}function Ot(t,n,e,s){let r=$(t,s?.from??wt(t,e[0])),o=$(n,s?.to??wt(n,e.at(-1))),a=[r.at,...e,o.at],c=h=>{let u=a[h],d=f=>Math.hypot(f.x-u.x,f.y-u.y),y=(f,l)=>{let p=f?d(f):0,x=d(l);return p===0?{x:l.x-u.x,y:l.y-u.y}:{x:(u.x-f.x)/p*x,y:(u.y-f.y)/p*x}};if(h===0)return y(r.inward,a[1]);if(h===a.length-1){let f=y(o.inward,a[h-1]);return{x:-f.x,y:-f.y}}return{x:(a[h+1].x-a[h-1].x)/2,y:(a[h+1].y-a[h-1].y)/2}},i=[];for(let h=0;h<a.length-1;h++){let u=a[h],d=a[h+1],y=c(h),f=c(h+1);i.push({x0:u.x,y0:u.y,cx0:u.x+y.x/3,cy0:u.y+y.y/3,cx1:d.x-f.x/3,cy1:d.y-f.y/3,x1:d.x,y1:d.y})}return i}function Lt(t){return t==="+"?"-":"+"}function ve(t,n=new Set){let e=t.edges.map(F),s=new Map,r=(f,l,p)=>{let x=`${f}|${l}`,M=s.get(x);M?M.push(p):s.set(x,[p])};t.edges.forEach((f,l)=>{r(f.from,e[l].from,l),r(f.to,e[l].to,l)});let o=f=>{let l=s.get(`${f}|end`);if(l?.length!==1)return;let p=l[0],x=t.edges[p];return x.from===f&&x.to!==f&&!n.has(f)&&!n.has(x.to)&&e[p].from==="end"&&e[p].to==="start"&&s.get(`${x.to}|start`)?.length===1?p:void 0},a=new Set,c=new Map,i=new Map;for(let f of t.nodes){let l=s.get(`${f.id}|start`),p=l?.length===1?t.edges[l[0]].from:void 0;if(c.has(f.id)||p!==void 0&&o(p)===l[0])continue;let x=[f.id];for(;;){let M=o(x.at(-1)),m=M===void 0?void 0:t.edges[M].to;if(m===void 0||c.has(m))break;a.add(M),x.push(m)}for(let M of x)c.set(M,f.id);x.length>1&&i.set(f.id,x)}for(let f of t.nodes)c.has(f.id)||c.set(f.id,f.id);let h=new Map(t.nodes.map(f=>[f.id,f])),u=[];for(let f of t.nodes){if(c.get(f.id)!==f.id)continue;let l=i.get(f.id);if(!l){u.push(f);continue}let p=l.map(m=>h.get(m)),x=p.filter(R),M=x.length?x.reduce((m,g)=>m.stable.start<=g.stable.start?m:g):p[0];u.push({id:f.id,name:f.name,length:p.reduce((m,g)=>m+g.length,0),depth:f.depth,stable:M.stable})}let d=new Set,y=[];return t.edges.forEach((f,l)=>{let p=c.get(f.from),x=c.get(f.to),M=e[l],m=`${p}|${M.from}>${x}|${M.to}`;a.has(l)||d.has(m)||(d.add(m),y.push({from:p,to:x,...M.from==="start"?{fromStrand:Lt(H(p))}:{},...M.to==="end"?{toStrand:Lt(H(x))}:{}}))}),{graph:{...t,nodes:u,edges:y,paths:void 0,pathVisits:void 0},runs:i}}function we(t,n,e){let s={...t};for(let[r,o]of n){let a=t[r];if(!a?.length)continue;delete s[r];let c=nt(a),i=c.at(-1),h=o.map(y=>Math.max(e(y),0)),u=h.reduce((y,f)=>y+f,0),d=0;o.forEach((y,f)=>{let l=u?h[f]/u*i:i/o.length,p=f===o.length-1?i:d+l;s[y]=Xt(a,c,d,p),d=p})}return s}function Ae(t,n,e){if(t.length===0)return[];let s=nt(t),r=s.at(-1);return Xt(t,s,n*r,e*r)}function Pt(t){let n=nt(t);return tt(t,n,n.at(-1)/2)}function nt(t){let n=[0];for(let e=1;e<t.length;e++)n.push(n[e-1]+Math.hypot(t[e].x-t[e-1].x,t[e].y-t[e-1].y));return n}function tt(t,n,e){if(e<=0)return{...t[0]};let s=1;for(;s<n.length&&n[s]<e;)s++;if(s>=n.length)return{...t.at(-1)};let r=n[s]-n[s-1],o=r>0?(e-n[s-1])/r:0,a=t[s-1],c=t[s];return{x:a.x+(c.x-a.x)*o,y:a.y+(c.y-a.y)*o}}function Xt(t,n,e,s){let r=[tt(t,n,e)];for(let o=0;o<t.length;o++)n[o]>e&&n[o]<s&&r.push({...t[o]});return r.push(tt(t,n,s)),r}var Mn=1;function bn(t,n){return n.flatMap(e=>t[e]??[])}function Nt(t,n,e,s,r=!1){return vn(t,n,e,n.bypassed,s,r)}function vn(t,n,e,s,r,o){let a=t[n.from],c=t[n.to];if(!(!a?.length||!c?.length))return r?Ot(a,c,r,o?F(n):void 0):Z(a,c,Et(n,o),e,s?bn(t,s):[])}function wn(t){let n=new Map;for(let e of t.nodes)if(R(e)){let s=n.get(e.stable.refName);s?s.push(e):n.set(e.stable.refName,[e])}for(let e of n.values())e.sort((s,r)=>s.stable.start-r.stable.start);return n}function An(t,n,e){let s=[];if(t)for(let r=ut(t,n);r<t.length;r++){let o=t[r];if(o.stable.start>=e)break;o.stable.start+o.length<=e&&s.push(o.id)}return s}function _n(t,n,e,s){let{fromStrand:r,toStrand:o}=t;if(r===void 0||o===void 0)return!0;let a=r===(n.stable.strand??"+"),c=o===(e.stable.strand??"+");return s?a&&c:!a&&!c}function Oe(t){let n=new Map(t.nodes.map(r=>[r.id,r])),e=wn(t),s=[];for(let r=0;r<t.edges.length;r++){let o=t.edges[r],a=n.get(o.from),c=n.get(o.to);if(a!==void 0&&c!==void 0&&R(a)&&R(c)&&a.stable.refName===c.stable.refName){let i=a.stable.start<=c.stable.start,[h,u]=i?[a,c]:[c,a],d=h.stable.start+h.length,y=u.stable.start,f=y-d;if(f>=Mn&&_n(o,a,c,i)){let l=h.stable.refName;s.push({edgeIndex:r,from:o.from,to:o.to,...o.fromStrand?{fromStrand:o.fromStrand}:{},...o.toStrand?{toStrand:o.toStrand}:{},refName:l,start:d,end:y,bp:f,bypassed:An(e.get(l),d,y)})}}}return s}function In(t,n){let e=new Map,s=a=>{let c=a;for(;e.has(c);)c=e.get(c);return c!==a&&e.set(a,c),c},r=(a,c)=>{let[i,h]=[s(a),s(c)];return i!==h&&e.set(i,h),i!==h},o=new Set(n.map(a=>a.edgeIndex));return t.edges.forEach((a,c)=>{o.has(c)||r(a.from,a.to)}),new Set(n.filter(a=>!r(a.from,a.to)).map(a=>a.edgeIndex))}var St=new WeakMap;function Le(t,n,e=!0){let s=St.get(n);s||(s=new Map,St.set(n,s));let r=s.get(e);if(!r){let o=e?new Set:In(t,n);r={shown:n.filter(a=>!o.has(a.edgeIndex)),bypassed:new Map(n.map(a=>[a.edgeIndex,a.bypassed])),hidden:o},s.set(e,r)}return r}var En=26,On=4e4,Ln=8,Pn=8,Xn=5.7,Sn=6,Nn=13,G=3,U=2;function q(t){return(t.length*Xn+Sn+G)/2}var B=(Nn+G)/2,Bn=q("1 bp");function z(t,n,e){return{x0:n-t,x1:n+t,y0:e-B,y1:e+B}}function Ce(t,n){return{x0:6,x1:6+t.length*6.2+8+G,y0:n-8-G/2,y1:n+8+G/2}}function j(t,n,e){return e<n?t:Math.min(Math.max(t,n),e)}function kt(t){return String(t).replace(/\B(?=(\d{3})+$)/g,",")}function Tt(t){let[n,e]=t>=1e6?[t/1e6,"Mb"]:t>=1e3?[t/1e3,"kb"]:[];return n===void 0?`${t} bp`:`${+n.toFixed(n>=100?0:1)} ${e}`}function Bt(t){return`${Tt(t)} del`}function Cn(t,n,e,s){let r=t[0],o=t[t.length-1],a=(n.x-(r.x0+o.x1)/2)*e,c=(n.y-(r.y0+o.y1)/2)*s,i=Math.hypot(a,c);return i===0?{x:0,y:-1}:{x:a/i,y:c/i}}function Rn(t,n){return Math.abs(n.x)*(t.x1-t.x0)/2+Math.abs(n.y)*(t.y1-t.y0)/2}function kn(t,n){let e=(t.x1-t.x0)/2,s=(t.y1-t.y0)/2;return Math.min(n.x===0?1/0:e/Math.abs(n.x),n.y===0?1/0:s/Math.abs(n.y))}function Tn(t,n,e){let s=0;for(let r=1;r<t.length;r++){let o=t[r-1],a=t[r];s+=Math.hypot((a.x-o.x)*n,(a.y-o.y)*e)}return s}function $n(t,n){let e=1/0,s=1/0,r=-1/0,o=-1/0;for(let a of t)for(let c of n[a]??[])e=Math.min(e,c.x),r=Math.max(r,c.x),s=Math.min(s,c.y),o=Math.max(o,c.y);return e===1/0?void 0:{minX:e,minY:s,maxX:r,maxY:o}}var Ct=new WeakMap;function Hn(t,n){let e=Ct.get(t);if(e?.nodeLengths===n)return e.order;let s=Object.entries(t).filter(([r,o])=>o.length>0&&n.has(r)).sort(([r],[o])=>n.get(o)-n.get(r));return Ct.set(t,{nodeLengths:n,order:s}),s}var Rt=new WeakMap;function Fn(t,n,e,s,r,o){let{scaleX:a,scaleY:c}=e,i=Rt.get(t);if(i?.deletions===n&&i.routes===r&&i.stranded===o&&i.scaleX===a&&i.scaleY===c&&i.version===s)return i.arcs;let h=[];for(let u of[...n].sort((d,y)=>y.bp-d.bp)){let d=Nt(t,u,e,r?.[u.edgeIndex],o),y=d?At(d):void 0;if(d&&y){let{minX:f,minY:l,maxX:p,maxY:x}=_t(d);h.push({deletion:u,curves:d,apex:y,extent:Math.max((p-f)*a,(x-l)*c)})}}return Rt.set(t,{deletions:n,routes:r,stranded:o,scaleX:a,scaleY:c,version:s,arcs:h}),h}function Re({nodePositions:t,nodeLengths:n,deletions:e,deletionRoutes:s,stranded:r=!1,alleleDeletions:o,axis:a,translateX:c,translateY:i,width:h,height:u,version:d=0}){let{scaleX:y,scaleY:f}=a,l=[],p=[];for(let{deletion:m,curves:g,apex:A,extent:b}of Fn(t,e,a,d,s,r))if(b>=En){let _=Bt(m.bp),w=q(_),E=z(w,0,0),I=A.x*y+c,v=A.y*f+i;if(I<0||I>h||v<0||v>u)continue;let S=b>=w*2/U,L=Cn(g,A,y,f),O=Rn(E,L)+Pn,P=S?I:j(I+L.x*O,w,h-w),X=S?v:j(v+L.y*O,B,u-B),N=Math.hypot(P-I,X-v),k;if(N>0){let C={x:(P-I)/N,y:(X-v)/N},T=kn(E,C);k={arcX:I,arcY:v,labelX:P-C.x*T,labelY:X-C.y*T}}l.push({label:{key:`del:${m.edgeIndex}`,text:_,x:P,y:X,kind:"deletion",leader:k},box:z(w,P,X)})}let x=new Set,M=[...o??[]].sort((m,g)=>g.bp-m.bp);for(let m of M){let g=$n(m.nodeIds,t);if(!g)continue;let A=Math.max(g.minX*y+c,0),b=Math.min(g.maxX*y+c,h),_=Math.max(g.minY*f+i,0),w=Math.min(g.maxY*f+i,u);if(b<A||w<_)continue;let E=Math.max(b-A,w-_),I=Bt(m.bp),v=q(I);if(E>=v*2/U){for(let O of m.nodeIds)x.add(O);let S=j((A+b)/2,v,h-v),L=j((_+w)/2,B,u-B);l.push({label:{key:`alleledel:${m.nodeIds.join(",")}`,text:I,x:S,y:L,kind:"deletion"},box:z(v,S,L)})}}for(let[m,g]of Hn(t,n)){if(x.has(m))continue;let{x:A,y:b}=Pt(g),_=b*f+i;if(_+B<=0||_-B>=u)continue;let w=Tn(g,y,f);if(w<Bn*2/U)continue;let E=Tt(n.get(m)),I=q(E);if(w>=I*2/U){let v=A*y+c;p.push({label:{key:`node:${m}`,text:E,x:v,y:_,kind:"node"},box:z(I,v,_)})}}return{deletions:l,nodes:p}}function ke(t,n){return Math.max(Ln,Math.floor(t*n/On))}function Te(t,n,e=1/0){let s=[];for(let{label:r,box:o}of t){if(s.length>=e)break;n(o)&&s.push(r)}return s}function We(t){let n=0;for(let e=0;e<t.length;e++)n=t.charCodeAt(e)+((n<<5)-n);return Math.abs(n%360)}function Gn(t,n){return t*360/n}var Wn=.7,Yn=.5,Dn=16;function Ye(t){return t>0&&t<=Dn}function Vn(t,n){return`hsl(${Gn(t,n)}, ${Wn*100}%, ${Yn*100}%)`}function De(t,n){return`hsl(0, 0%, ${n>1?25+45*t/(n-1):45}%)`}function Un(t){let n=D(t).name.split("#"),e=n.join("#");if(n.length>=3&&ft(n[0])){let s=n.slice(2).join("#");return[s,s,e]}return[n[0],n.slice(0,2).join("#"),e]}function zn(t,n){let{start:e}=D(t);return n.map(s=>`${s} @${kt(e)}`)}function Ve(t,n){let e=new Map;t.forEach((i,h)=>{e.has(i.name)||e.set(i.name,h)});let s=[...e].map(([i,h])=>({name:i,i:h})),r=s.map(i=>Un(i.name)),o=[0,1,2].flatMap(i=>[s.map((h,u)=>r[u][i]),s.map((h,u)=>zn(h.name,r[u])[i])]),c=o.find(i=>new Set(i).size===s.length)??o.at(-1);return s.map(({name:i,i:h},u)=>({name:i,label:c[u],color:n?.[h]??Vn(h,t.length)}))}function Ue(t){let n=new Map;return new Map([...t].sort((e,s)=>e.label.localeCompare(s.label)).map(e=>{let s=(n.get(e.label)??0)+1;return n.set(e.label,s),[e.name,s>1?`${e.label} (${s})`:e.label]}))}var je=[{value:"depth",label:"By depth",description:"Thicker the more paths carry a node, on the square root of its depth against the mean. A graph with one depth everywhere draws uniform."},{value:"uniform",label:"Uniform",description:"Every node the same thickness."}],jn=.3,$t=3;function qn(t){let n=0,e=0;for(let s of t.nodes)n+=s.depth*s.length,e+=s.length;return e>0?n/e:0}function Jn(t,n){return!(n>0)||!(t.depth>0)?1:Math.min($t,Math.max(jn,Math.sqrt(t.depth/n)))}function Kn(t,n,e,s){return n*(e==="depth"?Jn(t,s):1)}function Qn(t,n){return t*(n==="depth"?$t:1)}function qe(t,n,e,s){let r=t?qn(t):0;return{maxHalfWidthPx:Qn(e,s)/2,halfWidthPx:o=>{let a=n?.get(o);return a?Kn(a,e,s,r)/2:e/2}}}export{lt as a,Wt as b,Y as c,D as d,ce as e,Ut as f,Jt as g,ie as h,fe as i,dt as j,Kt as k,V as l,Qt as m,nn as n,ue as o,ye as p,_t as q,pe as r,xe as s,H as t,F as u,It as v,me as w,ve as x,we as y,Ae as z,vn as A,Oe as B,Le as C,Ce as D,kt as E,Tt as F,Re as G,ke as H,Te as I,We as J,Gn as K,Wn as L,Yn as M,Dn as N,Ye as O,Vn as P,De as Q,Ve as R,Ue as S,je as T,qn as U,Kn as V,qe as W};
2
- //# sourceMappingURL=chunk-WAMBI7OX.js.map
1
+ import{a as ht,c as R,h as ut}from"./chunk-Y7UUDKJL.js";import{a as it,b as ft}from"./chunk-KM3QNC77.js";var lt=20;var Wt=class{constructor(t){this.segments=t.segments,this.offsets=t.offsets,this.path=t.path,this.start=t.start,this.reversed=t.reversed,this.paths=t.paths,this.samples=t.samples,this.slots=new Map(this.segments.map((n,e)=>[n,e]))}static from(t){let n=new Y;for(let[e,s]of t){n.declare(e);for(let r of s)n.add(e,r.path,r.sample,r.start,r.strand==="-")}return n.build()}get size(){return this.segments.length}slot(t){return this.slots.get(t)??-1}pathIndex(t){return this.paths.indexOf(t)}firstBy(t,n){for(let e=this.offsets[t];e<this.offsets[t+1];e++)if(this.path[e]===n)return e;return-1}replay(){let t=new Map;return(n,e)=>{if(n<0||e<0)return-1;let s=n*this.paths.length+e,r=this.offsets[n+1],o=t.get(s)??this.offsets[n];for(;o<r&&this.path[o]!==e;)o++;return t.set(s,o+1),o<r?o:-1}}filter(t,n=()=>!0){let e=this.paths.map(t),s=new Y;return this.segments.forEach((r,o)=>{if(!n(r))return;let a=s.declare(r);for(let c=this.offsets[o];c<this.offsets[o+1];c++){let i=this.path[c];e[i]&&s.addAt(a,s.pathOf(this.paths[i],this.samples[i]),this.start[c],this.reversed[c]===1)}}),s.build()}strand(t){return this.reversed[t]?"-":"+"}visit(t){let n=this.path[t];return{path:this.paths[n],sample:this.samples[n],start:this.start[t],strand:this.strand(t)}}visitsAt(t){let n=[];for(let e=this.offsets[t];e<this.offsets[t+1];e++)n.push(this.visit(e));return n}get(t){let n=this.slot(t);return n<0?void 0:this.visitsAt(n)}has(t){return this.slots.has(t)}keys(){return this.segments[Symbol.iterator]()}*values(){for(let t=0;t<this.segments.length;t++)yield this.visitsAt(t)}*entries(){for(let t=0;t<this.segments.length;t++)yield[this.segments[t],this.visitsAt(t)]}[Symbol.iterator](){return this.entries()}},W=class{constructor(t){this.data=t,this.length=0}push(t){if(this.length===this.data.length){let n=new this.data.constructor(this.data.length*2);n.set(this.data),this.data=n}this.data[this.length++]=t}},Y=class{constructor(){this.segments=[],this.slots=new Map,this.paths=[],this.samples=[],this.pathIndex=new Map,this.slot=new W(new Int32Array(1024)),this.path=new W(new Int32Array(1024)),this.start=new W(new Float64Array(1024)),this.reversed=new W(new Uint8Array(1024))}declare(t){let n=this.slots.get(t);return n===void 0&&(n=this.segments.length,this.slots.set(t,n),this.segments.push(t)),n}pathOf(t,n){let e=this.pathIndex.get(t);return e===void 0&&(e=this.paths.length,this.pathIndex.set(t,e),this.paths.push(t),this.samples.push(n)),e}add(t,n,e,s,r){this.addAt(this.declare(t),this.pathOf(n,e),s,r)}addAt(t,n,e,s){this.slot.push(t),this.path.push(n),this.start.push(e),this.reversed.push(s?1:0)}build(){let t=this.slot.length,n=this.segments.length,e=new Int32Array(n+1),s=this.slot.data;for(let i=0;i<t;i++)e[s[i]+1]++;for(let i=0;i<n;i++)e[i+1]+=e[i];let r=e.slice(0,n),o=new Int32Array(t),a=new Float64Array(t),c=new Uint8Array(t);for(let i=0;i<t;i++){let h=r[s[i]]++;o[h]=this.path.data[i],a[h]=this.start.data[i],c[h]=this.reversed.data[i]}return new Wt({segments:this.segments,offsets:e,path:o,start:a,reversed:c,paths:this.paths,samples:this.samples})}};var Yt=/:(\d+)-\d+$/,Dt=/^([^#]*#[^#]*#[^#[]*)#(\d+)(?:\[(\d+)-\d+\])?$/,Vt=/\[(\d+)-\d+\]$/;function D(t){let n=Dt.exec(t);if(n)return{name:n[1],start:+n[2]+ +(n[3]??0)};let e=Yt.exec(t)??Vt.exec(t);return e?{name:t.slice(0,e.index),start:+e[1]}:{name:t,start:0}}function ce(t,n){let e=[],s=new Y;for(let r of t){let o=it(r.name),a=s.pathOf(r.name,o),c=r.start;for(let i of r.steps)s.addAt(s.declare(i.id),a,c,i.strand==="-"),c+=n(i.id);e.push({name:r.name,sample:o,start:r.start,length:c-r.start})}return{anchorPaths:e,pathVisits:s.build()}}function Ut(t,n){return t.find(s=>s.sample===n||s.name===n)??t[0]}var zt=1;function jt(t,n,e,s){let r=n.slot(t.name);if(r<0||n.offsets[r]===n.offsets[r+1])return t;let o=n.firstBy(r,e),a=o>=0?o:n.offsets[r];return{...t,stable:{refName:n.paths[n.path[a]],start:n.start[a],rank:o>=0?ht:zt,strand:n.strand(a)},samples:s(r)}}function qt(t){let n=[...new Set(t.samples)].sort(),e=new Map(n.map((a,c)=>[a,c])),s=Int32Array.from(t.samples,a=>e.get(a)),r=new Uint8Array(n.length),o=new Int32Array(n.length);return a=>{let c=0;for(let h=t.offsets[a];h<t.offsets[a+1];h++){let u=s[t.path[h]];r[u]===0&&(r[u]=1,o[c++]=u)}let i;if(c===n.length)i=n,r.fill(0);else if(c*8<n.length){let h=o.subarray(0,c);h.forEach(u=>r[u]=0),i=Array.from(h.sort(),u=>n[u])}else{i=[];for(let h=0;h<n.length;h++)r[h]===1&&(r[h]=0,i.push(n[h]))}return i}}function Jt(t,n){let{anchorPaths:e,pathVisits:s}=t,r=e&&s?Ut(e,n):void 0;if(!r||!e||!s)return t;let o=qt(s),a=s.pathIndex(r.name);return{...t,nodes:t.nodes.map(c=>jt(c,s,a,o)),anchoredBy:"paths",referencePath:r.name}}function ie(t,n){return t.anchoredBy==="tags"?t:Jt(t,n)}function fe(t,n){if(!t.anchorPaths)return;let e=new Map(t.nodes.map(o=>[o.id,o.length])),s=(o,a=o.length)=>{let c=0;for(let i=0;i<a;i++)c+=e.get(o[i])??0;return c},r=new Map;for(let o of t.paths??[]){let a=D(o.name).name;r.set(a,[...r.get(a)??[],o])}return t.anchorPaths.map(o=>{let a=r.get(o.name),c=a?.length===1?a[0]:void 0,i=c&&n.get(c.name);return c&&i?{...o,start:o.start+s(c.nodeIds,i.first),length:s(i.nodeIds)}:o})}var dt=11,Kt=6.2,V=4;function Qt(t){return t.length*Kt+V*2}function Zt(t,n){return t.x0<n.x1&&t.x1>n.x0&&t.y0<n.y1&&t.y1>n.y0}function yt(t,n){return t.x1<=0||t.x0>=n.width||t.y1<=0||t.y0>=n.height}function tn(t,n){return t.x0>=0&&t.x1<=n.width&&t.y0>=0&&t.y1<=n.height}function nn(t,n=[]){let e=[...n];return s=>yt(s,t)||e.some(r=>Zt(r,s))?!1:(e.push(s),!0)}function ue(t,n,e){let s=[],r=dt+V*2,o=(a,c)=>{let i=Qt(c),h=a.y>n.height/2?-1:1;for(let u=0;u<=(a.stack??0);u++){let d=a.y+h*u*r,y={x0:a.x-i/2,x1:a.x+i/2,y0:d-dt-V,y1:d+V};if(yt(y,n))return;if(tn(y,n)&&(a.fits?.(y)??!0)&&e(y))return{...a,text:c,y:d,w:i}}};for(let a of t){let c=o(a,a.text)??(a.fallback===void 0?void 0:o(a,a.fallback));c&&s.push(c)}return s}function ye(t){let n=e=>Math.round(e*100)/100;return t.map((e,s)=>`${s?"L":"M"}${n(e.x)},${n(e.y)}`).join("")}function pt(t,n,e,s,r){let o=Math.hypot(s-n,e-t);if(o===0)return[e,s];let a=(e-t)/o,c=(s-n)/o;return[e+r*a,s+r*c]}function Q(t,n){let e=1-n,s=e*e*e,r=3*e*e*n,o=3*e*n*n,a=n*n*n;return{x:s*t.x0+r*t.cx0+o*t.cx1+a*t.x1,y:s*t.y0+r*t.cy0+o*t.cy1+a*t.y1}}function At(t){let n=t[Math.floor(t.length/2)];return n?Q(n,.5):void 0}function _t(t){let n=1/0,e=1/0,s=-1/0,r=-1/0;for(let o of t)n=Math.min(n,o.x0,o.cx0,o.cx1,o.x1),s=Math.max(s,o.x0,o.cx0,o.cx1,o.x1),e=Math.min(e,o.y0,o.cy0,o.cy1,o.y1),r=Math.max(r,o.y0,o.cy0,o.cy1,o.y1);return{minX:n,minY:e,maxX:s,maxY:r}}function en(t,n,e){let s=Q(t,n),r=Q(t,e),o=(e-n)/3,a=xt(t,n),c=xt(t,e);return{x0:s.x,y0:s.y,cx0:s.x+a.x*o,cy0:s.y+a.y*o,cx1:r.x-c.x*o,cy1:r.y-c.y*o,x1:r.x,y1:r.y}}function xt(t,n){let e=1-n,s=3*e*e,r=6*e*n,o=3*n*n;return{x:s*(t.cx0-t.x0)+r*(t.cx1-t.cx0)+o*(t.x1-t.cx1),y:s*(t.cy0-t.y0)+r*(t.cy1-t.cy0)+o*(t.y1-t.cy1)}}function pe(t,n){let e=t.map(a=>Math.hypot(a.cx0-a.x0,a.cy0-a.y0)+Math.hypot(a.cx1-a.cx0,a.cy1-a.cy0)+Math.hypot(a.x1-a.cx1,a.y1-a.cy1)),s=e.reduce((a,c)=>a+c,0),r=Math.max(3,Math.round(s/n)|1),o=[];for(let a=0;a<r;a+=2){let c=a/r*s,i=(a+1)/r*s,h=[],u=0;t.forEach((d,y)=>{let f=e[y],l=u+f;f>0&&l>c&&u<i&&h.push(en(d,Math.max(0,(c-u)/f),Math.min(1,(i-u)/f))),u=l}),h.length&&o.push(h)}return o}function xe(t,n,e){let s=new Array(t.length);for(let r=0;r<t.length;r++){let o=t[r];s[r]={x0:o.x0+n,y0:o.y0+e,cx0:o.cx0+n,cy0:o.cy0+e,cx1:o.cx1+n,cy1:o.cy1+e,x1:o.x1+n,y1:o.y1+e}}return s}function $(t,n){let e=t.length-1;return n==="end"?{at:t[e],inward:t[e-1]}:{at:t[0],inward:t[1]}}var sn=.5,on=80;function H(t){return t.endsWith("-")?"-":"+"}function F(t){let n=(e,s)=>(s??H(e))===H(e);return{from:n(t.from,t.fromStrand)?"end":"start",to:n(t.to,t.toStrand)?"start":"end"}}function mt(t){let n=1/0,e=-1/0;for(let s of t)n=Math.min(n,s.x),e=Math.max(e,s.x);return{min:n,max:e}}function gt(t,n){return Math.max(0,n.min-t,t-n.max)}function Mt(t,n,e){let s=gt(t[0].x,n),r=gt(t[t.length-1].x,n);return s===r?e:s<r?"start":"end"}function rn(t,n){return{from:Mt(t,mt(n),"end"),to:Mt(n,mt(t),"start")}}var bt=new WeakMap;function an(t,n){let e=bt.get(t);e||(e=new WeakMap,bt.set(t,e));let s=e.get(n);return s||(s=rn(t,n),e.set(n,s)),s}var cn=.75,fn=1.15,hn=.35,un=3*lt;function ln(t,n,e,s,r,o){let a=Math.hypot(e-t,s-n),c=a===0?1:(e-t)/a,i=a===0?0:(s-n)/a,h=0,u=1/0,d=-1/0;for(let p of r){let x=p.x-t,M=p.y-n,m=x*-i+M*c;Math.abs(m)>Math.abs(h)&&(h=m);let g=x*c+M*i;u=Math.min(u,g),d=Math.max(d,g)}let y=r.length?d-u:0,f=Math.max(Math.abs(h)*fn/cn,y*hn),l=o===void 0?f:Math.min(f,o);return h<0?-l:l}function It({scaleX:t,scaleY:n}){return n/t}var dn=3;function J(t,n,e){let s=n.x-t.x,r=(n.y-t.y)*e,o=Math.hypot(s,r);return o===0?void 0:{x:s/o,y:r/o}}function me(t,n,e,s){let r=It(s),o=dn/Math.max(s.scaleX,1e-6),a=J(t[t.length-1],n[0],r)??J(t[0],t.at(-1),r)??J(n[0],n.at(-1),r)??{x:1,y:0},c=[];for(let i=0;i<e;i++){let h=(i-(e-1)/2)*o;c.push({x:-a.y*h,y:a.x*h/r})}return c}function K(t,n){return t.map(e=>({x:e.x,y:e.y*n}))}function yn(t,n){for(let e of t)e.y0/=n,e.cy0/=n,e.cy1/=n,e.y1/=n;return t}var pn=12,xn=40;function vt(t,n){let e=0;for(let o=1;o<t.length;o++)e+=Math.hypot(t[o].x-t[o-1].x,t[o].y-t[o-1].y);let s=e*n;return Math.min(xn,Math.max(pn,s/2))/Math.max(n,Number.EPSILON)}function mn(t){return t.from!==t.to?!1:t.fromStrand&&t.toStrand&&t.fromStrand!==t.toStrand?t.fromStrand==="+"?"end":"start":!0}function Et(t,n=!1){let e=mn(t);if(!n)return e;let s=F(t);return e===!1?s:s.from===s.to?s.from:!0}function gn(t,n){let{at:e,inward:s}=t,r=s?e.x-s.x:1,o=s?e.y-s.y:0,a=Math.hypot(r,o)||1,c=r/a,i=o/a,h=e.x,u=e.y,d=h+c*n/3,y=u+i*n/3,f=h+c*n,l=u+i*n,p=-i*n/2,x=c*n/2;return[{x0:h,y0:u,cx0:d,cy0:y,cx1:f+p,cy1:l+x,x1:f,y1:l},{x0:f,y0:l,cx0:f-p,cy0:l-x,cx1:d,cy1:y,x1:h,y1:u}]}function Z(t,n,e,s,r=[],o){let a=s.scaleX,c=It(s),i=o??(s.pixelRows?un:void 0);if(e===!1&&(e=an(t,n)),c!==1)return yn(Z(K(t,c),K(n,c),e,{scaleX:a,scaleY:a},K(r,c),i===void 0?void 0:i*c),c);if(typeof e=="string")return gn($(t,e),vt(t,a));let h=e===!0,u=e===!0?{from:"end",to:"start"}:e,d=$(t,u.from),y=$(n,u.to),f=d.at,l=y.at,p=f.x,x=f.y,M=l.x,m=l.y;if(h){let g=1,A=0;if(d.inward){let P=f.x-d.inward.x,X=f.y-d.inward.y,N=Math.hypot(P,X);N>0&&(g=P/N,A=X/N)}let b=vt(t,a),_=-A,w=g,E=(f.x+l.x)/2+_*b,I=(f.y+l.y)/2+w*b,v=p+g*b,S=x+A*b,L=M-g*b,O=m-A*b;return[{x0:p,y0:x,cx0:v,cy0:S,cx1:v+_*b,cy1:S+w*b,x1:E,y1:I},{x0:E,y0:I,cx0:L+_*b,cy0:O+w*b,cx1:L,cy1:O,x1:M,y1:m}]}else{let g=d.inward??{x:f.x-(l.x-f.x),y:f.y-(l.y-f.y)},A=y.inward??{x:l.x-(f.x-l.x),y:l.y-(f.y-l.y)},b=Math.hypot(M-p,m-x),_=(st,ot,Ht,Ft)=>{let rt=ot.x-st.x,at=ot.y-st.y,ct=Math.hypot(rt,at),Gt=ct===0?0:(Ht*rt+Ft*at)/ct;return Math.max(0,Math.min(b*sn,on,Gt*.5))},w=l.x-f.x,E=l.y-f.y,[I,v]=pt(g.x,g.y,f.x,f.y,_(g,f,w,E)),[S,L]=pt(A.x,A.y,l.x,l.y,_(A,l,-w,-E)),O=r.length?ln(p,x,M,m,r,i):0,P=b===0?1:b,X=(M-p)/P,N=(m-x)/P,k=-N*O,C=X*O,T=X*Math.abs(O),et=N*Math.abs(O);return[{x0:p,y0:x,cx0:I+k-T,cy0:v+C-et,cx1:S+k+T,cy1:L+C+et,x1:M,y1:m}]}}function wt(t,n){let e=t[0],s=t.at(-1);return Math.hypot(e.x-n.x,e.y-n.y)<Math.hypot(s.x-n.x,s.y-n.y)?"start":"end"}function Ot(t,n,e,s){let r=$(t,s?.from??wt(t,e[0])),o=$(n,s?.to??wt(n,e.at(-1))),a=[r.at,...e,o.at],c=h=>{let u=a[h],d=f=>Math.hypot(f.x-u.x,f.y-u.y),y=(f,l)=>{let p=f?d(f):0,x=d(l);return p===0?{x:l.x-u.x,y:l.y-u.y}:{x:(u.x-f.x)/p*x,y:(u.y-f.y)/p*x}};if(h===0)return y(r.inward,a[1]);if(h===a.length-1){let f=y(o.inward,a[h-1]);return{x:-f.x,y:-f.y}}return{x:(a[h+1].x-a[h-1].x)/2,y:(a[h+1].y-a[h-1].y)/2}},i=[];for(let h=0;h<a.length-1;h++){let u=a[h],d=a[h+1],y=c(h),f=c(h+1);i.push({x0:u.x,y0:u.y,cx0:u.x+y.x/3,cy0:u.y+y.y/3,cx1:d.x-f.x/3,cy1:d.y-f.y/3,x1:d.x,y1:d.y})}return i}function Lt(t){return t==="+"?"-":"+"}function ve(t,n=new Set){let e=t.edges.map(F),s=new Map,r=(f,l,p)=>{let x=`${f}|${l}`,M=s.get(x);M?M.push(p):s.set(x,[p])};t.edges.forEach((f,l)=>{r(f.from,e[l].from,l),r(f.to,e[l].to,l)});let o=f=>{let l=s.get(`${f}|end`);if(l?.length!==1)return;let p=l[0],x=t.edges[p];return x.from===f&&x.to!==f&&!n.has(f)&&!n.has(x.to)&&e[p].from==="end"&&e[p].to==="start"&&s.get(`${x.to}|start`)?.length===1?p:void 0},a=new Set,c=new Map,i=new Map;for(let f of t.nodes){let l=s.get(`${f.id}|start`),p=l?.length===1?t.edges[l[0]].from:void 0;if(c.has(f.id)||p!==void 0&&o(p)===l[0])continue;let x=[f.id];for(;;){let M=o(x.at(-1)),m=M===void 0?void 0:t.edges[M].to;if(m===void 0||c.has(m))break;a.add(M),x.push(m)}for(let M of x)c.set(M,f.id);x.length>1&&i.set(f.id,x)}for(let f of t.nodes)c.has(f.id)||c.set(f.id,f.id);let h=new Map(t.nodes.map(f=>[f.id,f])),u=[];for(let f of t.nodes){if(c.get(f.id)!==f.id)continue;let l=i.get(f.id);if(!l){u.push(f);continue}let p=l.map(m=>h.get(m)),x=p.filter(R),M=x.length?x.reduce((m,g)=>m.stable.start<=g.stable.start?m:g):p[0];u.push({id:f.id,name:f.name,length:p.reduce((m,g)=>m+g.length,0),depth:f.depth,stable:M.stable})}let d=new Set,y=[];return t.edges.forEach((f,l)=>{let p=c.get(f.from),x=c.get(f.to),M=e[l],m=`${p}|${M.from}>${x}|${M.to}`;a.has(l)||d.has(m)||(d.add(m),y.push({from:p,to:x,...M.from==="start"?{fromStrand:Lt(H(p))}:{},...M.to==="end"?{toStrand:Lt(H(x))}:{}}))}),{graph:{...t,nodes:u,edges:y,paths:void 0,pathVisits:void 0},runs:i}}function we(t,n,e){let s={...t};for(let[r,o]of n){let a=t[r];if(!a?.length)continue;delete s[r];let c=nt(a),i=c.at(-1),h=o.map(y=>Math.max(e(y),0)),u=h.reduce((y,f)=>y+f,0),d=0;o.forEach((y,f)=>{let l=u?h[f]/u*i:i/o.length,p=f===o.length-1?i:d+l;s[y]=Xt(a,c,d,p),d=p})}return s}function Ae(t,n,e){if(t.length===0)return[];let s=nt(t),r=s.at(-1);return Xt(t,s,n*r,e*r)}function Pt(t){let n=nt(t);return tt(t,n,n.at(-1)/2)}function nt(t){let n=[0];for(let e=1;e<t.length;e++)n.push(n[e-1]+Math.hypot(t[e].x-t[e-1].x,t[e].y-t[e-1].y));return n}function tt(t,n,e){if(e<=0)return{...t[0]};let s=1;for(;s<n.length&&n[s]<e;)s++;if(s>=n.length)return{...t.at(-1)};let r=n[s]-n[s-1],o=r>0?(e-n[s-1])/r:0,a=t[s-1],c=t[s];return{x:a.x+(c.x-a.x)*o,y:a.y+(c.y-a.y)*o}}function Xt(t,n,e,s){let r=[tt(t,n,e)];for(let o=0;o<t.length;o++)n[o]>e&&n[o]<s&&r.push({...t[o]});return r.push(tt(t,n,s)),r}var Mn=1;function bn(t,n){return n.flatMap(e=>t[e]??[])}function Nt(t,n,e,s,r=!1){return vn(t,n,e,n.bypassed,s,r)}function vn(t,n,e,s,r,o){let a=t[n.from],c=t[n.to];if(!(!a?.length||!c?.length))return r?Ot(a,c,r,o?F(n):void 0):Z(a,c,Et(n,o),e,s?bn(t,s):[])}function wn(t){let n=new Map;for(let e of t.nodes)if(R(e)){let s=n.get(e.stable.refName);s?s.push(e):n.set(e.stable.refName,[e])}for(let e of n.values())e.sort((s,r)=>s.stable.start-r.stable.start);return n}function An(t,n,e){let s=[];if(t)for(let r=ut(t,n);r<t.length;r++){let o=t[r];if(o.stable.start>=e)break;o.stable.start+o.length<=e&&s.push(o.id)}return s}function _n(t,n,e,s){let{fromStrand:r,toStrand:o}=t;if(r===void 0||o===void 0)return!0;let a=r===(n.stable.strand??"+"),c=o===(e.stable.strand??"+");return s?a&&c:!a&&!c}function Oe(t){let n=new Map(t.nodes.map(r=>[r.id,r])),e=wn(t),s=[];for(let r=0;r<t.edges.length;r++){let o=t.edges[r],a=n.get(o.from),c=n.get(o.to);if(a!==void 0&&c!==void 0&&R(a)&&R(c)&&a.stable.refName===c.stable.refName){let i=a.stable.start<=c.stable.start,[h,u]=i?[a,c]:[c,a],d=h.stable.start+h.length,y=u.stable.start,f=y-d;if(f>=Mn&&_n(o,a,c,i)){let l=h.stable.refName;s.push({edgeIndex:r,from:o.from,to:o.to,...o.fromStrand?{fromStrand:o.fromStrand}:{},...o.toStrand?{toStrand:o.toStrand}:{},refName:l,start:d,end:y,bp:f,bypassed:An(e.get(l),d,y)})}}}return s}function In(t,n){let e=new Map,s=a=>{let c=a;for(;e.has(c);)c=e.get(c);return c!==a&&e.set(a,c),c},r=(a,c)=>{let[i,h]=[s(a),s(c)];return i!==h&&e.set(i,h),i!==h},o=new Set(n.map(a=>a.edgeIndex));return t.edges.forEach((a,c)=>{o.has(c)||r(a.from,a.to)}),new Set(n.filter(a=>!r(a.from,a.to)).map(a=>a.edgeIndex))}var St=new WeakMap;function Le(t,n,e=!0){let s=St.get(n);s||(s=new Map,St.set(n,s));let r=s.get(e);if(!r){let o=e?new Set:In(t,n);r={shown:n.filter(a=>!o.has(a.edgeIndex)),bypassed:new Map(n.map(a=>[a.edgeIndex,a.bypassed])),hidden:o},s.set(e,r)}return r}var En=26,On=4e4,Ln=8,Pn=8,Xn=5.7,Sn=6,Nn=13,G=3,U=2;function q(t){return(t.length*Xn+Sn+G)/2}var B=(Nn+G)/2,Bn=q("1 bp");function z(t,n,e){return{x0:n-t,x1:n+t,y0:e-B,y1:e+B}}function Ce(t,n){return{x0:6,x1:6+t.length*6.2+8+G,y0:n-8-G/2,y1:n+8+G/2}}function j(t,n,e){return e<n?t:Math.min(Math.max(t,n),e)}function kt(t){return String(t).replace(/\B(?=(\d{3})+$)/g,",")}function Tt(t){let[n,e]=t>=1e6?[t/1e6,"Mb"]:t>=1e3?[t/1e3,"kb"]:[];return n===void 0?`${t} bp`:`${+n.toFixed(n>=100?0:1)} ${e}`}function Bt(t){return`${Tt(t)} del`}function Cn(t,n,e,s){let r=t[0],o=t[t.length-1],a=(n.x-(r.x0+o.x1)/2)*e,c=(n.y-(r.y0+o.y1)/2)*s,i=Math.hypot(a,c);return i===0?{x:0,y:-1}:{x:a/i,y:c/i}}function Rn(t,n){return Math.abs(n.x)*(t.x1-t.x0)/2+Math.abs(n.y)*(t.y1-t.y0)/2}function kn(t,n){let e=(t.x1-t.x0)/2,s=(t.y1-t.y0)/2;return Math.min(n.x===0?1/0:e/Math.abs(n.x),n.y===0?1/0:s/Math.abs(n.y))}function Tn(t,n,e){let s=0;for(let r=1;r<t.length;r++){let o=t[r-1],a=t[r];s+=Math.hypot((a.x-o.x)*n,(a.y-o.y)*e)}return s}function $n(t,n){let e=1/0,s=1/0,r=-1/0,o=-1/0;for(let a of t)for(let c of n[a]??[])e=Math.min(e,c.x),r=Math.max(r,c.x),s=Math.min(s,c.y),o=Math.max(o,c.y);return e===1/0?void 0:{minX:e,minY:s,maxX:r,maxY:o}}var Ct=new WeakMap;function Hn(t,n){let e=Ct.get(t);if(e?.nodeLengths===n)return e.order;let s=Object.entries(t).filter(([r,o])=>o.length>0&&n.has(r)).sort(([r],[o])=>n.get(o)-n.get(r));return Ct.set(t,{nodeLengths:n,order:s}),s}var Rt=new WeakMap;function Fn(t,n,e,s,r,o){let{scaleX:a,scaleY:c}=e,i=Rt.get(t);if(i?.deletions===n&&i.routes===r&&i.stranded===o&&i.scaleX===a&&i.scaleY===c&&i.version===s)return i.arcs;let h=[];for(let u of[...n].sort((d,y)=>y.bp-d.bp)){let d=Nt(t,u,e,r?.[u.edgeIndex],o),y=d?At(d):void 0;if(d&&y){let{minX:f,minY:l,maxX:p,maxY:x}=_t(d);h.push({deletion:u,curves:d,apex:y,extent:Math.max((p-f)*a,(x-l)*c)})}}return Rt.set(t,{deletions:n,routes:r,stranded:o,scaleX:a,scaleY:c,version:s,arcs:h}),h}function Re({nodePositions:t,nodeLengths:n,deletions:e,deletionRoutes:s,stranded:r=!1,alleleDeletions:o,axis:a,translateX:c,translateY:i,width:h,height:u,version:d=0}){let{scaleX:y,scaleY:f}=a,l=[],p=[];for(let{deletion:m,curves:g,apex:A,extent:b}of Fn(t,e,a,d,s,r))if(b>=En){let _=Bt(m.bp),w=q(_),E=z(w,0,0),I=A.x*y+c,v=A.y*f+i;if(I<0||I>h||v<0||v>u)continue;let S=b>=w*2/U,L=Cn(g,A,y,f),O=Rn(E,L)+Pn,P=S?I:j(I+L.x*O,w,h-w),X=S?v:j(v+L.y*O,B,u-B),N=Math.hypot(P-I,X-v),k;if(N>0){let C={x:(P-I)/N,y:(X-v)/N},T=kn(E,C);k={arcX:I,arcY:v,labelX:P-C.x*T,labelY:X-C.y*T}}l.push({label:{key:`del:${m.edgeIndex}`,text:_,x:P,y:X,kind:"deletion",leader:k},box:z(w,P,X)})}let x=new Set,M=[...o??[]].sort((m,g)=>g.bp-m.bp);for(let m of M){let g=$n(m.nodeIds,t);if(!g)continue;let A=Math.max(g.minX*y+c,0),b=Math.min(g.maxX*y+c,h),_=Math.max(g.minY*f+i,0),w=Math.min(g.maxY*f+i,u);if(b<A||w<_)continue;let E=Math.max(b-A,w-_),I=Bt(m.bp),v=q(I);if(E>=v*2/U){for(let O of m.nodeIds)x.add(O);let S=j((A+b)/2,v,h-v),L=j((_+w)/2,B,u-B);l.push({label:{key:`alleledel:${m.nodeIds.join(",")}`,text:I,x:S,y:L,kind:"deletion"},box:z(v,S,L)})}}for(let[m,g]of Hn(t,n)){if(x.has(m))continue;let{x:A,y:b}=Pt(g),_=b*f+i;if(_+B<=0||_-B>=u)continue;let w=Tn(g,y,f);if(w<Bn*2/U)continue;let E=Tt(n.get(m)),I=q(E);if(w>=I*2/U){let v=A*y+c;p.push({label:{key:`node:${m}`,text:E,x:v,y:_,kind:"node"},box:z(I,v,_)})}}return{deletions:l,nodes:p}}function ke(t,n){return Math.max(Ln,Math.floor(t*n/On))}function Te(t,n,e=1/0){let s=[];for(let{label:r,box:o}of t){if(s.length>=e)break;n(o)&&s.push(r)}return s}function We(t){let n=0;for(let e=0;e<t.length;e++)n=t.charCodeAt(e)+((n<<5)-n);return Math.abs(n%360)}function Gn(t,n){return t*360/n}var Wn=.7,Yn=.5,Dn=16;function Ye(t){return t>0&&t<=Dn}function Vn(t,n){return`hsl(${Gn(t,n)}, ${Wn*100}%, ${Yn*100}%)`}function De(t,n){return`hsl(0, 0%, ${n>1?25+45*t/(n-1):45}%)`}function Un(t){let n=D(t).name.split("#"),e=n.join("#");if(n.length>=3&&ft(n[0])){let s=n.slice(2).join("#");return[s,s,e]}return[n[0],n.slice(0,2).join("#"),e]}function zn(t,n){let{start:e}=D(t);return n.map(s=>`${s} @${kt(e)}`)}function Ve(t,n){let e=new Map;t.forEach((i,h)=>{e.has(i.name)||e.set(i.name,h)});let s=[...e].map(([i,h])=>({name:i,i:h})),r=s.map(i=>Un(i.name)),o=[0,1,2].flatMap(i=>[s.map((h,u)=>r[u][i]),s.map((h,u)=>zn(h.name,r[u])[i])]),c=o.find(i=>new Set(i).size===s.length)??o.at(-1);return s.map(({name:i,i:h},u)=>({name:i,label:c[u],color:n?.[h]??Vn(h,t.length)}))}function Ue(t){let n=new Map;return new Map([...t].sort((e,s)=>e.label.localeCompare(s.label)).map(e=>{let s=(n.get(e.label)??0)+1;return n.set(e.label,s),[e.name,s>1?`${e.label} (${s})`:e.label]}))}var je=[{value:"depth",label:"By depth",description:"Thicker the more paths carry a node, on the square root of its depth against the mean. A graph with one depth everywhere draws uniform."},{value:"uniform",label:"Uniform",description:"Every node the same thickness."}],jn=.3,$t=3;function qn(t){let n=0,e=0;for(let s of t.nodes)n+=s.depth*s.length,e+=s.length;return e>0?n/e:0}function Jn(t,n){return!(n>0)||!(t.depth>0)?1:Math.min($t,Math.max(jn,Math.sqrt(t.depth/n)))}function Kn(t,n,e,s){return n*(e==="depth"?Jn(t,s):1)}function Qn(t,n){return t*(n==="depth"?$t:1)}function qe(t,n,e,s){let r=t?qn(t):0;return{maxHalfWidthPx:Qn(e,s)/2,halfWidthPx:o=>{let a=n?.get(o);return a?Kn(a,e,s,r)/2:e/2}}}export{lt as a,Wt as b,Y as c,D as d,ce as e,Ut as f,Jt as g,ie as h,fe as i,dt as j,Kt as k,V as l,Qt as m,nn as n,ue as o,ye as p,_t as q,pe as r,xe as s,H as t,F as u,It as v,me as w,ve as x,we as y,Ae as z,vn as A,Oe as B,Le as C,Ce as D,kt as E,Tt as F,Re as G,ke as H,Te as I,We as J,Gn as K,Wn as L,Yn as M,Dn as N,Ye as O,Vn as P,De as Q,Ve as R,Ue as S,je as T,qn as U,Kn as V,qe as W};
2
+ //# sourceMappingURL=chunk-HYKQBZA4.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@10.2.6/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-CPMHA4W5.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@10.2.6/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-RAEABQNW.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@10.2.6/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-M6LK4GII.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@10.2.6/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-AB35TJST.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@10.2.6/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-7SRWJLSC.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@10.2.6/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-N73TI3VG.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@10.2.6/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-24WITXQY.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@10.2.6/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-PTABFYQ7.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@10.2.6/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-3XSM4OZU.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@10.2.6/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-JBCZIBFC.js"],
3
+ "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@10.2.7/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-CPMHA4W5.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@10.2.7/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-RAEABQNW.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@10.2.7/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-M6LK4GII.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@10.2.7/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-AB35TJST.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@10.2.7/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-7SRWJLSC.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@10.2.7/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-N73TI3VG.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@10.2.7/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-24WITXQY.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@10.2.7/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-PTABFYQ7.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@10.2.7/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-3XSM4OZU.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@10.2.7/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-JBCZIBFC.js"],
4
4
  "sourcesContent": ["// src/layout/rowSpacing.ts\nvar ROW_HEIGHT_PX = 20;\n\nexport {\n ROW_HEIGHT_PX\n};\n", "// src/pathVisits.ts\nvar PathVisits = class {\n constructor(columns) {\n this.segments = columns.segments;\n this.offsets = columns.offsets;\n this.path = columns.path;\n this.start = columns.start;\n this.reversed = columns.reversed;\n this.paths = columns.paths;\n this.samples = columns.samples;\n this.slots = new Map(this.segments.map((s, i) => [s, i]));\n }\n static from(entries) {\n const builder = new PathVisitsBuilder();\n for (const [segment, visits] of entries) {\n builder.declare(segment);\n for (const v of visits) {\n builder.add(segment, v.path, v.sample, v.start, v.strand === \"-\");\n }\n }\n return builder.build();\n }\n get size() {\n return this.segments.length;\n }\n // the segment's index into `segments` and `offsets`, -1 when unvisited\n slot(segment) {\n return this.slots.get(segment) ?? -1;\n }\n pathIndex(path) {\n return this.paths.indexOf(path);\n }\n // the first of `slot`'s visits by path `p`, -1 for none\n firstBy(slot, p) {\n for (let i = this.offsets[slot]; i < this.offsets[slot + 1]; i++) {\n if (this.path[i] === p) {\n return i;\n }\n }\n return -1;\n }\n // Paths' steps replayed in walk order against their visits: the k-th call\n // for one path and segment answers that path's k-th visit there, -1 past\n // its last. A walk in pieces lists its pieces in path order, so replaying\n // the pieces in order reads each step's own visit.\n replay() {\n const cursor = /* @__PURE__ */ new Map();\n return (slot, p) => {\n if (slot < 0 || p < 0) {\n return -1;\n }\n const key = slot * this.paths.length + p;\n const end = this.offsets[slot + 1];\n let at = cursor.get(key) ?? this.offsets[slot];\n while (at < end && this.path[at] !== p) {\n at++;\n }\n cursor.set(key, at + 1);\n return at < end ? at : -1;\n };\n }\n // the visits of paths `keepPath` accepts, at segments `keepSegment` does\n filter(keepPath, keepSegment = () => true) {\n const kept = this.paths.map(keepPath);\n const builder = new PathVisitsBuilder();\n this.segments.forEach((segment, s) => {\n if (!keepSegment(segment)) {\n return;\n }\n const slot = builder.declare(segment);\n for (let i = this.offsets[s]; i < this.offsets[s + 1]; i++) {\n const p = this.path[i];\n if (kept[p]) {\n builder.addAt(\n slot,\n builder.pathOf(this.paths[p], this.samples[p]),\n this.start[i],\n this.reversed[i] === 1\n );\n }\n }\n });\n return builder.build();\n }\n strand(i) {\n return this.reversed[i] ? \"-\" : \"+\";\n }\n visit(i) {\n const p = this.path[i];\n return {\n path: this.paths[p],\n sample: this.samples[p],\n start: this.start[i],\n strand: this.strand(i)\n };\n }\n visitsAt(slot) {\n const out = [];\n for (let i = this.offsets[slot]; i < this.offsets[slot + 1]; i++) {\n out.push(this.visit(i));\n }\n return out;\n }\n get(segment) {\n const slot = this.slot(segment);\n return slot < 0 ? void 0 : this.visitsAt(slot);\n }\n has(segment) {\n return this.slots.has(segment);\n }\n keys() {\n return this.segments[Symbol.iterator]();\n }\n *values() {\n for (let s = 0; s < this.segments.length; s++) {\n yield this.visitsAt(s);\n }\n }\n *entries() {\n for (let s = 0; s < this.segments.length; s++) {\n yield [this.segments[s], this.visitsAt(s)];\n }\n }\n [Symbol.iterator]() {\n return this.entries();\n }\n};\nvar Column = class {\n constructor(data) {\n this.data = data;\n this.length = 0;\n }\n push(value) {\n if (this.length === this.data.length) {\n const grown = new this.data.constructor(\n this.data.length * 2\n );\n grown.set(this.data);\n this.data = grown;\n }\n this.data[this.length++] = value;\n }\n};\nvar PathVisitsBuilder = class {\n constructor() {\n this.segments = [];\n this.slots = /* @__PURE__ */ new Map();\n this.paths = [];\n this.samples = [];\n this.pathIndex = /* @__PURE__ */ new Map();\n this.slot = new Column(new Int32Array(1024));\n this.path = new Column(new Int32Array(1024));\n this.start = new Column(new Float64Array(1024));\n this.reversed = new Column(new Uint8Array(1024));\n }\n // a segment's place in iteration order, though it has no visits yet\n declare(segment) {\n let s = this.slots.get(segment);\n if (s === void 0) {\n s = this.segments.length;\n this.slots.set(segment, s);\n this.segments.push(segment);\n }\n return s;\n }\n // a path's index, so a caller adding many of its visits names it once\n pathOf(path, sample) {\n let p = this.pathIndex.get(path);\n if (p === void 0) {\n p = this.paths.length;\n this.pathIndex.set(path, p);\n this.paths.push(path);\n this.samples.push(sample);\n }\n return p;\n }\n add(segment, path, sample, start, reversed) {\n this.addAt(\n this.declare(segment),\n this.pathOf(path, sample),\n start,\n reversed\n );\n }\n addAt(slot, path, start, reversed) {\n this.slot.push(slot);\n this.path.push(path);\n this.start.push(start);\n this.reversed.push(reversed ? 1 : 0);\n }\n build() {\n const n = this.slot.length;\n const segments = this.segments.length;\n const offsets = new Int32Array(segments + 1);\n const slot = this.slot.data;\n for (let i = 0; i < n; i++) {\n offsets[slot[i] + 1]++;\n }\n for (let s = 0; s < segments; s++) {\n offsets[s + 1] += offsets[s];\n }\n const fill = offsets.slice(0, segments);\n const path = new Int32Array(n);\n const start = new Float64Array(n);\n const reversed = new Uint8Array(n);\n for (let i = 0; i < n; i++) {\n const at = fill[slot[i]]++;\n path[at] = this.path.data[i];\n start[at] = this.start.data[i];\n reversed[at] = this.reversed.data[i];\n }\n return new PathVisits({\n segments: this.segments,\n offsets,\n path,\n start,\n reversed,\n paths: this.paths,\n samples: this.samples\n });\n }\n};\n\nexport {\n PathVisits,\n PathVisitsBuilder\n};\n", "import {\n PathVisitsBuilder\n} from \"./chunk-RAEABQNW.js\";\nimport {\n panSNSample\n} from \"./chunk-BPLIXMH7.js\";\nimport {\n REFERENCE_RANK\n} from \"./chunk-FYQWPEEY.js\";\n\n// src/pathAnchoring.ts\nvar RANGE_SUFFIX = /:(\\d+)-\\d+$/;\nvar VG_FRAGMENT = /^([^#]*#[^#]*#[^#[]*)#(\\d+)(?:\\[(\\d+)-\\d+\\])?$/;\nvar VG_SUBRANGE = /\\[(\\d+)-\\d+\\]$/;\nfunction pathOrigin(pathName) {\n const fragment = VG_FRAGMENT.exec(pathName);\n if (fragment) {\n return { name: fragment[1], start: +fragment[2] + +(fragment[3] ?? 0) };\n }\n const match = RANGE_SUFFIX.exec(pathName) ?? VG_SUBRANGE.exec(pathName);\n return match ? { name: pathName.slice(0, match.index), start: +match[1] } : { name: pathName, start: 0 };\n}\nfunction surveyPaths(paths, lengthOf) {\n const anchorPaths = [];\n const visits = new PathVisitsBuilder();\n for (const path of paths) {\n const sample = panSNSample(path.name);\n const p = visits.pathOf(path.name, sample);\n let pos = path.start;\n for (const step of path.steps) {\n visits.addAt(visits.declare(step.id), p, pos, step.strand === \"-\");\n pos += lengthOf(step.id);\n }\n anchorPaths.push({\n name: path.name,\n sample,\n start: path.start,\n length: pos - path.start\n });\n }\n return { anchorPaths, pathVisits: visits.build() };\n}\nfunction chooseReferencePath(anchorPaths, preferred) {\n const named = anchorPaths.find(\n (p) => p.sample === preferred || p.name === preferred\n );\n return named ?? anchorPaths[0];\n}\nvar OFF_REFERENCE_RANK = 1;\nfunction anchorNode(node, visits, reference, samplesOf) {\n const slot = visits.slot(node.name);\n if (slot < 0 || visits.offsets[slot] === visits.offsets[slot + 1]) {\n return node;\n }\n const own = visits.firstBy(slot, reference);\n const anchor = own >= 0 ? own : visits.offsets[slot];\n return {\n ...node,\n stable: {\n refName: visits.paths[visits.path[anchor]],\n start: visits.start[anchor],\n rank: own >= 0 ? REFERENCE_RANK : OFF_REFERENCE_RANK,\n strand: visits.strand(anchor)\n },\n samples: samplesOf(slot)\n };\n}\nfunction sampleSorter(visits) {\n const sorted = [...new Set(visits.samples)].sort();\n const rank = new Map(sorted.map((sample, i) => [sample, i]));\n const pathRank = Int32Array.from(visits.samples, (s) => rank.get(s));\n const seen = new Uint8Array(sorted.length);\n const ranks = new Int32Array(sorted.length);\n return (slot) => {\n let n = 0;\n for (let i = visits.offsets[slot]; i < visits.offsets[slot + 1]; i++) {\n const r = pathRank[visits.path[i]];\n if (seen[r] === 0) {\n seen[r] = 1;\n ranks[n++] = r;\n }\n }\n let out;\n if (n === sorted.length) {\n out = sorted;\n seen.fill(0);\n } else if (n * 8 < sorted.length) {\n const found = ranks.subarray(0, n);\n found.forEach((r) => seen[r] = 0);\n out = Array.from(found.sort(), (r) => sorted[r]);\n } else {\n out = [];\n for (let r = 0; r < sorted.length; r++) {\n if (seen[r] === 1) {\n seen[r] = 0;\n out.push(sorted[r]);\n }\n }\n }\n return out;\n };\n}\nfunction anchorFromPaths(graph, preferred) {\n const { anchorPaths, pathVisits } = graph;\n const reference = anchorPaths && pathVisits ? chooseReferencePath(anchorPaths, preferred) : void 0;\n if (!reference || !anchorPaths || !pathVisits) {\n return graph;\n }\n const samplesOf = sampleSorter(pathVisits);\n const referenceIndex = pathVisits.pathIndex(reference.name);\n return {\n ...graph,\n nodes: graph.nodes.map(\n (node) => anchorNode(node, pathVisits, referenceIndex, samplesOf)\n ),\n anchoredBy: \"paths\",\n referencePath: reference.name\n };\n}\nfunction anchorGraph(graph, preferred) {\n return graph.anchoredBy === \"tags\" ? graph : anchorFromPaths(graph, preferred);\n}\nfunction trimOrigins(graph, kept) {\n if (!graph.anchorPaths) {\n return void 0;\n }\n const lengthOf = new Map(graph.nodes.map((n) => [n.id, n.length]));\n const bp = (ids, end = ids.length) => {\n let sum = 0;\n for (let i = 0; i < end; i++) {\n sum += lengthOf.get(ids[i]) ?? 0;\n }\n return sum;\n };\n const byOrigin = /* @__PURE__ */ new Map();\n for (const path of graph.paths ?? []) {\n const origin = pathOrigin(path.name).name;\n byOrigin.set(origin, [...byOrigin.get(origin) ?? [], path]);\n }\n return graph.anchorPaths.map((o) => {\n const pieces = byOrigin.get(o.name);\n const path = pieces?.length === 1 ? pieces[0] : void 0;\n const stretch = path && kept.get(path.name);\n return path && stretch ? {\n ...o,\n start: o.start + bp(path.nodeIds, stretch.first),\n length: bp(stretch.nodeIds)\n } : o;\n });\n}\n\nexport {\n pathOrigin,\n surveyPaths,\n chooseReferencePath,\n anchorFromPaths,\n anchorGraph,\n trimOrigins\n};\n", "// src/overlayLabels.ts\nvar LABEL_PX = 11;\nvar LABEL_CHAR_PX = 6.2;\nvar LABEL_PAD = 4;\nfunction labelWidth(text) {\n return text.length * LABEL_CHAR_PX + LABEL_PAD * 2;\n}\nfunction overlaps(a, b) {\n return a.x0 < b.x1 && a.x1 > b.x0 && a.y0 < b.y1 && a.y1 > b.y0;\n}\nfunction offFrame(box, frame) {\n return box.x1 <= 0 || box.x0 >= frame.width || box.y1 <= 0 || box.y0 >= frame.height;\n}\nfunction insideFrame(box, frame) {\n return box.x0 >= 0 && box.x1 <= frame.width && box.y0 >= 0 && box.y1 <= frame.height;\n}\nfunction occupancy(frame, reserved = []) {\n const placed = [...reserved];\n return (box) => {\n if (offFrame(box, frame) || placed.some((p) => overlaps(p, box))) {\n return false;\n }\n placed.push(box);\n return true;\n };\n}\nfunction placeLabels(candidates, frame, take) {\n const out = [];\n const row = LABEL_PX + LABEL_PAD * 2;\n const place = (c, text) => {\n const w = labelWidth(text);\n const direction = c.y > frame.height / 2 ? -1 : 1;\n for (let tries = 0; tries <= (c.stack ?? 0); tries++) {\n const y = c.y + direction * tries * row;\n const box = {\n x0: c.x - w / 2,\n x1: c.x + w / 2,\n y0: y - LABEL_PX - LABEL_PAD,\n y1: y + LABEL_PAD\n };\n if (offFrame(box, frame)) {\n return void 0;\n }\n if (insideFrame(box, frame) && (c.fits?.(box) ?? true) && take(box)) {\n return { ...c, text, y, w };\n }\n }\n return void 0;\n };\n for (const c of candidates) {\n const placed = place(c, c.text) ?? (c.fallback === void 0 ? void 0 : place(c, c.fallback));\n if (placed) {\n out.push(placed);\n }\n }\n return out;\n}\n\nexport {\n LABEL_PX,\n LABEL_CHAR_PX,\n LABEL_PAD,\n labelWidth,\n overlaps,\n occupancy,\n placeLabels\n};\n", "import {\n ROW_HEIGHT_PX\n} from \"./chunk-CPMHA4W5.js\";\n\n// src/util/geometry.ts\nfunction svgPath(points) {\n const round = (v) => Math.round(v * 100) / 100;\n return points.map((p, i) => `${i ? \"L\" : \"M\"}${round(p.x)},${round(p.y)}`).join(\"\");\n}\nfunction projectLine(x1, y1, x2, y2, distance) {\n const d = Math.hypot(y2 - y1, x2 - x1);\n if (d === 0) {\n return [x2, y2];\n }\n const vx = (x2 - x1) / d;\n const vy = (y2 - y1) / d;\n return [x2 + distance * vx, y2 + distance * vy];\n}\nfunction curvePointAt(c, t) {\n const u = 1 - t;\n const a = u * u * u;\n const b = 3 * u * u * t;\n const d = 3 * u * t * t;\n const e = t * t * t;\n return {\n x: a * c.x0 + b * c.cx0 + d * c.cx1 + e * c.x1,\n y: a * c.y0 + b * c.cy0 + d * c.cy1 + e * c.y1\n };\n}\nfunction curveMidpoint(curves) {\n const mid = curves[Math.floor(curves.length / 2)];\n return mid ? curvePointAt(mid, 0.5) : void 0;\n}\nfunction curveBounds(curves) {\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n for (const c of curves) {\n minX = Math.min(minX, c.x0, c.cx0, c.cx1, c.x1);\n maxX = Math.max(maxX, c.x0, c.cx0, c.cx1, c.x1);\n minY = Math.min(minY, c.y0, c.cy0, c.cy1, c.y1);\n maxY = Math.max(maxY, c.y0, c.cy0, c.cy1, c.y1);\n }\n return { minX, minY, maxX, maxY };\n}\nfunction subCurve(c, t0, t1) {\n const p0 = curvePointAt(c, t0);\n const p1 = curvePointAt(c, t1);\n const dt = (t1 - t0) / 3;\n const d0 = curveTangentAt(c, t0);\n const d1 = curveTangentAt(c, t1);\n return {\n x0: p0.x,\n y0: p0.y,\n cx0: p0.x + d0.x * dt,\n cy0: p0.y + d0.y * dt,\n cx1: p1.x - d1.x * dt,\n cy1: p1.y - d1.y * dt,\n x1: p1.x,\n y1: p1.y\n };\n}\nfunction curveTangentAt(c, t) {\n const u = 1 - t;\n const a = 3 * u * u;\n const b = 6 * u * t;\n const d = 3 * t * t;\n return {\n x: a * (c.cx0 - c.x0) + b * (c.cx1 - c.cx0) + d * (c.x1 - c.cx1),\n y: a * (c.cy0 - c.y0) + b * (c.cy1 - c.cy0) + d * (c.y1 - c.cy1)\n };\n}\nfunction dashCurves(curves, dashWorld) {\n const lengths = curves.map(\n (c) => Math.hypot(c.cx0 - c.x0, c.cy0 - c.y0) + Math.hypot(c.cx1 - c.cx0, c.cy1 - c.cy0) + Math.hypot(c.x1 - c.cx1, c.y1 - c.cy1)\n );\n const total = lengths.reduce((a, b) => a + b, 0);\n const spans = Math.max(3, Math.round(total / dashWorld) | 1);\n const out = [];\n for (let i = 0; i < spans; i += 2) {\n const from = i / spans * total;\n const to = (i + 1) / spans * total;\n const dash = [];\n let start = 0;\n curves.forEach((c, k) => {\n const length = lengths[k];\n const end = start + length;\n if (length > 0 && end > from && start < to) {\n dash.push(\n subCurve(\n c,\n Math.max(0, (from - start) / length),\n Math.min(1, (to - start) / length)\n )\n );\n }\n start = end;\n });\n if (dash.length) {\n out.push(dash);\n }\n }\n return out;\n}\nfunction translateCurves(curves, dx, dy) {\n const out = new Array(curves.length);\n for (let i = 0; i < curves.length; i++) {\n const c = curves[i];\n out[i] = {\n x0: c.x0 + dx,\n y0: c.y0 + dy,\n cx0: c.cx0 + dx,\n cy0: c.cy0 + dy,\n cx1: c.cx1 + dx,\n cy1: c.cy1 + dy,\n x1: c.x1 + dx,\n y1: c.y1 + dy\n };\n }\n return out;\n}\nfunction attachment(segments, side) {\n const last = segments.length - 1;\n return side === \"end\" ? { at: segments[last], inward: segments[last - 1] } : { at: segments[0], inward: segments[1] };\n}\nvar TANGENT_SPAN_FACTOR = 0.5;\nvar MAX_TANGENT = 80;\nfunction ownStrand(id) {\n return id.endsWith(\"-\") ? \"-\" : \"+\";\n}\nfunction strandSides(edge) {\n const own = (id, strand) => (strand ?? ownStrand(id)) === ownStrand(id);\n return {\n from: own(edge.from, edge.fromStrand) ? \"end\" : \"start\",\n to: own(edge.to, edge.toStrand) ? \"start\" : \"end\"\n };\n}\nfunction spanOf(segments) {\n let min = Infinity;\n let max = -Infinity;\n for (const s of segments) {\n min = Math.min(min, s.x);\n max = Math.max(max, s.x);\n }\n return { min, max };\n}\nfunction distanceToSpan(x, span) {\n return Math.max(0, span.min - x, x - span.max);\n}\nfunction facingSide(segments, other, tieBreak) {\n const startGap = distanceToSpan(segments[0].x, other);\n const endGap = distanceToSpan(segments[segments.length - 1].x, other);\n return startGap === endGap ? tieBreak : startGap < endGap ? \"start\" : \"end\";\n}\nfunction facingSides(fromSegments, toSegments) {\n return {\n from: facingSide(fromSegments, spanOf(toSegments), \"end\"),\n to: facingSide(toSegments, spanOf(fromSegments), \"start\")\n };\n}\nvar laidSides = /* @__PURE__ */ new WeakMap();\nfunction heldFacingSides(fromSegments, toSegments) {\n let byTo = laidSides.get(fromSegments);\n if (!byTo) {\n byTo = /* @__PURE__ */ new WeakMap();\n laidSides.set(fromSegments, byTo);\n }\n let sides = byTo.get(toSegments);\n if (!sides) {\n sides = facingSides(fromSegments, toSegments);\n byTo.set(toSegments, sides);\n }\n return sides;\n}\nvar APEX_FRACTION = 0.75;\nvar BOW_CLEARANCE = 1.15;\nvar ALONG_FRACTION = 0.35;\nvar MAX_ROW_BOW_PX = 3 * ROW_HEIGHT_PX;\nfunction bowAround(p1x, p1y, p2x, p2y, toward, maxBow) {\n const chord = Math.hypot(p2x - p1x, p2y - p1y);\n const ux = chord === 0 ? 1 : (p2x - p1x) / chord;\n const uy = chord === 0 ? 0 : (p2y - p1y) / chord;\n let reach = 0;\n let minAlong = Infinity;\n let maxAlong = -Infinity;\n for (const p of toward) {\n const dx = p.x - p1x;\n const dy = p.y - p1y;\n const perp = dx * -uy + dy * ux;\n if (Math.abs(perp) > Math.abs(reach)) {\n reach = perp;\n }\n const along = dx * ux + dy * uy;\n minAlong = Math.min(minAlong, along);\n maxAlong = Math.max(maxAlong, along);\n }\n const span = toward.length ? maxAlong - minAlong : 0;\n const uncapped = Math.max(\n Math.abs(reach) * BOW_CLEARANCE / APEX_FRACTION,\n span * ALONG_FRACTION\n );\n const size = maxBow === void 0 ? uncapped : Math.min(uncapped, maxBow);\n return reach < 0 ? -size : size;\n}\nfunction yToXOf({ scaleX, scaleY }) {\n return scaleY / scaleX;\n}\nvar PATH_RIBBON_SPACING_PX = 3;\nfunction drawnDirection(a, b, yToX) {\n const dx = b.x - a.x;\n const dy = (b.y - a.y) * yToX;\n const len = Math.hypot(dx, dy);\n return len === 0 ? void 0 : { x: dx / len, y: dy / len };\n}\nfunction pathRibbonOffsets(fromSegments, toSegments, count, axis) {\n const yToX = yToXOf(axis);\n const spacing = PATH_RIBBON_SPACING_PX / Math.max(axis.scaleX, 1e-6);\n const dir = drawnDirection(\n fromSegments[fromSegments.length - 1],\n toSegments[0],\n yToX\n ) ?? drawnDirection(fromSegments[0], fromSegments.at(-1), yToX) ?? drawnDirection(toSegments[0], toSegments.at(-1), yToX) ?? { x: 1, y: 0 };\n const offsets = [];\n for (let i = 0; i < count; i++) {\n const distance = (i - (count - 1) / 2) * spacing;\n offsets.push({ x: -dir.y * distance, y: dir.x * distance / yToX });\n }\n return offsets;\n}\nfunction scaleYOf(points, yToX) {\n return points.map((p) => ({ x: p.x, y: p.y * yToX }));\n}\nfunction unscaleYOf(curves, yToX) {\n for (const c of curves) {\n c.y0 /= yToX;\n c.cy0 /= yToX;\n c.cy1 /= yToX;\n c.y1 /= yToX;\n }\n return curves;\n}\nvar SELF_LOOP_MIN_PX = 12;\nvar SELF_LOOP_MAX_PX = 40;\nfunction selfLoopReach(segments, scale) {\n let length = 0;\n for (let i = 1; i < segments.length; i++) {\n length += Math.hypot(\n segments[i].x - segments[i - 1].x,\n segments[i].y - segments[i - 1].y\n );\n }\n const nodePx = length * scale;\n const reachPx = Math.min(\n SELF_LOOP_MAX_PX,\n Math.max(SELF_LOOP_MIN_PX, nodePx / 2)\n );\n return reachPx / Math.max(scale, Number.EPSILON);\n}\nfunction selfLinkOf(edge) {\n if (edge.from !== edge.to) {\n return false;\n }\n return edge.fromStrand && edge.toStrand && edge.fromStrand !== edge.toStrand ? edge.fromStrand === \"+\" ? \"end\" : \"start\" : true;\n}\nfunction edgeJoinOf(edge, stranded = false) {\n const self = selfLinkOf(edge);\n if (!stranded) {\n return self;\n }\n const sides = strandSides(edge);\n return self === false ? sides : sides.from === sides.to ? sides.from : true;\n}\nfunction hairpinCurves(attach, reach) {\n const { at, inward } = attach;\n const dx = inward ? at.x - inward.x : 1;\n const dy = inward ? at.y - inward.y : 0;\n const len = Math.hypot(dx, dy) || 1;\n const ux = dx / len;\n const uy = dy / len;\n const px = at.x;\n const py = at.y;\n const nearX = px + ux * reach / 3;\n const nearY = py + uy * reach / 3;\n const apexX = px + ux * reach;\n const apexY = py + uy * reach;\n const sideX = -uy * reach / 2;\n const sideY = ux * reach / 2;\n return [\n {\n x0: px,\n y0: py,\n cx0: nearX,\n cy0: nearY,\n cx1: apexX + sideX,\n cy1: apexY + sideY,\n x1: apexX,\n y1: apexY\n },\n {\n x0: apexX,\n y0: apexY,\n cx0: apexX - sideX,\n cy0: apexY - sideY,\n cx1: nearX,\n cy1: nearY,\n x1: px,\n y1: py\n }\n ];\n}\nfunction computeEdgeCurves(fromSegments, toSegments, join, axis, bypassed = [], maxBowIn) {\n const scale = axis.scaleX;\n const yToX = yToXOf(axis);\n const maxBow = maxBowIn ?? (axis.pixelRows ? MAX_ROW_BOW_PX : void 0);\n if (join === false) {\n join = heldFacingSides(fromSegments, toSegments);\n }\n if (yToX !== 1) {\n return unscaleYOf(\n computeEdgeCurves(\n scaleYOf(fromSegments, yToX),\n scaleYOf(toSegments, yToX),\n join,\n { scaleX: scale, scaleY: scale },\n scaleYOf(bypassed, yToX),\n // the cap is a y measure and the body works in x units, so it converts\n // with everything else that crosses this boundary\n maxBow === void 0 ? void 0 : maxBow * yToX\n ),\n yToX\n );\n }\n if (typeof join === \"string\") {\n return hairpinCurves(\n attachment(fromSegments, join),\n selfLoopReach(fromSegments, scale)\n );\n }\n const loop = join === true;\n const sides = join === true ? { from: \"end\", to: \"start\" } : join;\n const fromAttach = attachment(fromSegments, sides.from);\n const toAttach = attachment(toSegments, sides.to);\n const fromEnd = fromAttach.at;\n const toStart = toAttach.at;\n const p1x = fromEnd.x;\n const p1y = fromEnd.y;\n const p2x = toStart.x;\n const p2y = toStart.y;\n if (loop) {\n let segDirX = 1;\n let segDirY = 0;\n if (fromAttach.inward) {\n const dx = fromEnd.x - fromAttach.inward.x;\n const dy = fromEnd.y - fromAttach.inward.y;\n const len = Math.hypot(dx, dy);\n if (len > 0) {\n segDirX = dx / len;\n segDirY = dy / len;\n }\n }\n const ext = selfLoopReach(fromSegments, scale);\n const perpX = -segDirY;\n const perpY = segDirX;\n const midX = (fromEnd.x + toStart.x) / 2 + perpX * ext;\n const midY = (fromEnd.y + toStart.y) / 2 + perpY * ext;\n const cp1x = p1x + segDirX * ext;\n const cp1y = p1y + segDirY * ext;\n const cp2x = p2x - segDirX * ext;\n const cp2y = p2y - segDirY * ext;\n return [\n {\n x0: p1x,\n y0: p1y,\n cx0: cp1x,\n cy0: cp1y,\n cx1: cp1x + perpX * ext,\n cy1: cp1y + perpY * ext,\n x1: midX,\n y1: midY\n },\n {\n x0: midX,\n y0: midY,\n cx0: cp2x + perpX * ext,\n cy0: cp2y + perpY * ext,\n cx1: cp2x,\n cy1: cp2y,\n x1: p2x,\n y1: p2y\n }\n ];\n } else {\n const fromPrev = fromAttach.inward ?? {\n x: fromEnd.x - (toStart.x - fromEnd.x),\n y: fromEnd.y - (toStart.y - fromEnd.y)\n };\n const toNext = toAttach.inward ?? {\n x: toStart.x - (fromEnd.x - toStart.x),\n y: toStart.y - (fromEnd.y - toStart.y)\n };\n const dist = Math.hypot(p2x - p1x, p2y - p1y);\n const tangentProj = (prev, at, towardX, towardY) => {\n const dx = at.x - prev.x;\n const dy = at.y - prev.y;\n const len = Math.hypot(dx, dy);\n const along = len === 0 ? 0 : (towardX * dx + towardY * dy) / len;\n return Math.max(\n 0,\n Math.min(dist * TANGENT_SPAN_FACTOR, MAX_TANGENT, along * 0.5)\n );\n };\n const towardToX = toStart.x - fromEnd.x;\n const towardToY = toStart.y - fromEnd.y;\n const [cx1, cy1] = projectLine(\n fromPrev.x,\n fromPrev.y,\n fromEnd.x,\n fromEnd.y,\n tangentProj(fromPrev, fromEnd, towardToX, towardToY)\n );\n const [cx2, cy2] = projectLine(\n toNext.x,\n toNext.y,\n toStart.x,\n toStart.y,\n tangentProj(toNext, toStart, -towardToX, -towardToY)\n );\n const bulge = bypassed.length ? bowAround(p1x, p1y, p2x, p2y, bypassed, maxBow) : 0;\n const chordLen = dist === 0 ? 1 : dist;\n const ux = (p2x - p1x) / chordLen;\n const uy = (p2y - p1y) / chordLen;\n const bulgeX = -uy * bulge;\n const bulgeY = ux * bulge;\n const spreadX = ux * Math.abs(bulge);\n const spreadY = uy * Math.abs(bulge);\n return [\n {\n x0: p1x,\n y0: p1y,\n cx0: cx1 + bulgeX - spreadX,\n cy0: cy1 + bulgeY - spreadY,\n cx1: cx2 + bulgeX + spreadX,\n cy1: cy2 + bulgeY + spreadY,\n x1: p2x,\n y1: p2y\n }\n ];\n }\n}\nfunction nearerEnd(segments, to) {\n const start = segments[0];\n const end = segments.at(-1);\n return Math.hypot(start.x - to.x, start.y - to.y) < Math.hypot(end.x - to.x, end.y - to.y) ? \"start\" : \"end\";\n}\nfunction routedEdgeCurves(fromSegments, toSegments, route, sides) {\n const fromAttach = attachment(\n fromSegments,\n sides?.from ?? nearerEnd(fromSegments, route[0])\n );\n const toAttach = attachment(\n toSegments,\n sides?.to ?? nearerEnd(toSegments, route.at(-1))\n );\n const points = [fromAttach.at, ...route, toAttach.at];\n const tangent = (i) => {\n const p = points[i];\n const span = (q) => Math.hypot(q.x - p.x, q.y - p.y);\n const along = (inward, next) => {\n const len = inward ? span(inward) : 0;\n const reach = span(next);\n return len === 0 ? { x: next.x - p.x, y: next.y - p.y } : {\n x: (p.x - inward.x) / len * reach,\n y: (p.y - inward.y) / len * reach\n };\n };\n if (i === 0) {\n return along(fromAttach.inward, points[1]);\n }\n if (i === points.length - 1) {\n const out = along(toAttach.inward, points[i - 1]);\n return { x: -out.x, y: -out.y };\n }\n return {\n x: (points[i + 1].x - points[i - 1].x) / 2,\n y: (points[i + 1].y - points[i - 1].y) / 2\n };\n };\n const curves = [];\n for (let i = 0; i < points.length - 1; i++) {\n const a = points[i];\n const b = points[i + 1];\n const ta = tangent(i);\n const tb = tangent(i + 1);\n curves.push({\n x0: a.x,\n y0: a.y,\n cx0: a.x + ta.x / 3,\n cy0: a.y + ta.y / 3,\n cx1: b.x - tb.x / 3,\n cy1: b.y - tb.y / 3,\n x1: b.x,\n y1: b.y\n });\n }\n return curves;\n}\n\nexport {\n svgPath,\n projectLine,\n curvePointAt,\n curveMidpoint,\n curveBounds,\n dashCurves,\n translateCurves,\n ownStrand,\n strandSides,\n bowAround,\n yToXOf,\n PATH_RIBBON_SPACING_PX,\n pathRibbonOffsets,\n selfLinkOf,\n edgeJoinOf,\n computeEdgeCurves,\n routedEdgeCurves\n};\n", "import {\n ownStrand,\n strandSides\n} from \"./chunk-7SRWJLSC.js\";\nimport {\n isBackbone\n} from \"./chunk-FYQWPEEY.js\";\n\n// src/layout/mergeRuns.ts\nfunction flip(strand) {\n return strand === \"+\" ? \"-\" : \"+\";\n}\nfunction mergeRuns(graph, alone = /* @__PURE__ */ new Set()) {\n const sides = graph.edges.map(strandSides);\n const at = /* @__PURE__ */ new Map();\n const attach = (id, side, ei) => {\n const key = `${id}|${side}`;\n const list = at.get(key);\n if (list) {\n list.push(ei);\n } else {\n at.set(key, [ei]);\n }\n };\n graph.edges.forEach((edge, ei) => {\n attach(edge.from, sides[ei].from, ei);\n attach(edge.to, sides[ei].to, ei);\n });\n const joinAfter = (a) => {\n const out = at.get(`${a}|end`);\n if (out?.length !== 1) {\n return void 0;\n }\n const ei = out[0];\n const edge = graph.edges[ei];\n return edge.from === a && edge.to !== a && !alone.has(a) && !alone.has(edge.to) && sides[ei].from === \"end\" && sides[ei].to === \"start\" && at.get(`${edge.to}|start`)?.length === 1 ? ei : void 0;\n };\n const joined = /* @__PURE__ */ new Set();\n const runOf = /* @__PURE__ */ new Map();\n const runs = /* @__PURE__ */ new Map();\n for (const node of graph.nodes) {\n const into = at.get(`${node.id}|start`);\n const pred = into?.length === 1 ? graph.edges[into[0]].from : void 0;\n if (runOf.has(node.id) || pred !== void 0 && joinAfter(pred) === into[0]) {\n continue;\n }\n const run = [node.id];\n for (; ; ) {\n const ei = joinAfter(run.at(-1));\n const next = ei === void 0 ? void 0 : graph.edges[ei].to;\n if (next === void 0 || runOf.has(next)) {\n break;\n }\n joined.add(ei);\n run.push(next);\n }\n for (const id of run) {\n runOf.set(id, node.id);\n }\n if (run.length > 1) {\n runs.set(node.id, run);\n }\n }\n for (const node of graph.nodes) {\n if (!runOf.has(node.id)) {\n runOf.set(node.id, node.id);\n }\n }\n const byId = new Map(graph.nodes.map((n) => [n.id, n]));\n const nodes = [];\n for (const node of graph.nodes) {\n if (runOf.get(node.id) !== node.id) {\n continue;\n }\n const run = runs.get(node.id);\n if (!run) {\n nodes.push(node);\n continue;\n }\n const members = run.map((id) => byId.get(id));\n const backbone = members.filter(isBackbone);\n const first = backbone.length ? backbone.reduce((a, b) => a.stable.start <= b.stable.start ? a : b) : members[0];\n nodes.push({\n id: node.id,\n name: node.name,\n length: members.reduce((sum, n) => sum + n.length, 0),\n depth: node.depth,\n stable: first.stable\n });\n }\n const seen = /* @__PURE__ */ new Set();\n const edges = [];\n graph.edges.forEach((edge, ei) => {\n const from = runOf.get(edge.from);\n const to = runOf.get(edge.to);\n const side = sides[ei];\n const key = `${from}|${side.from}>${to}|${side.to}`;\n if (joined.has(ei) || seen.has(key)) {\n return;\n }\n seen.add(key);\n edges.push({\n from,\n to,\n ...side.from === \"start\" ? { fromStrand: flip(ownStrand(from)) } : {},\n ...side.to === \"end\" ? { toStrand: flip(ownStrand(to)) } : {}\n });\n });\n return {\n graph: { ...graph, nodes, edges, paths: void 0, pathVisits: void 0 },\n runs\n };\n}\nfunction splitRuns(positions, runs, weightOf) {\n const out = { ...positions };\n for (const [id, members] of runs) {\n const line = positions[id];\n if (!line?.length) {\n continue;\n }\n delete out[id];\n const arc = arcPrefix(line);\n const total = arc.at(-1);\n const weights = members.map((m) => Math.max(weightOf(m), 0));\n const weightSum = weights.reduce((a, b) => a + b, 0);\n let from = 0;\n members.forEach((member, k) => {\n const share = weightSum ? weights[k] / weightSum * total : total / members.length;\n const to = k === members.length - 1 ? total : from + share;\n out[member] = slice(line, arc, from, to);\n from = to;\n });\n }\n return out;\n}\nfunction polylineSlice(line, from, to) {\n if (line.length === 0) {\n return [];\n }\n const arc = arcPrefix(line);\n const total = arc.at(-1);\n return slice(line, arc, from * total, to * total);\n}\nfunction polylineMidpoint(line) {\n const arc = arcPrefix(line);\n return pointAt(line, arc, arc.at(-1) / 2);\n}\nfunction arcPrefix(line) {\n const arc = [0];\n for (let i = 1; i < line.length; i++) {\n arc.push(\n arc[i - 1] + Math.hypot(line[i].x - line[i - 1].x, line[i].y - line[i - 1].y)\n );\n }\n return arc;\n}\nfunction pointAt(line, arc, s) {\n if (s <= 0) {\n return { ...line[0] };\n }\n let i = 1;\n while (i < arc.length && arc[i] < s) {\n i++;\n }\n if (i >= arc.length) {\n return { ...line.at(-1) };\n }\n const span = arc[i] - arc[i - 1];\n const t = span > 0 ? (s - arc[i - 1]) / span : 0;\n const a = line[i - 1];\n const b = line[i];\n return { x: a.x + (b.x - a.x) * t, y: a.y + (b.y - a.y) * t };\n}\nfunction slice(line, arc, from, to) {\n const points = [pointAt(line, arc, from)];\n for (let i = 0; i < line.length; i++) {\n if (arc[i] > from && arc[i] < to) {\n points.push({ ...line[i] });\n }\n }\n points.push(pointAt(line, arc, to));\n return points;\n}\n\nexport {\n mergeRuns,\n splitRuns,\n polylineSlice,\n polylineMidpoint\n};\n", "import {\n computeEdgeCurves,\n edgeJoinOf,\n routedEdgeCurves,\n strandSides\n} from \"./chunk-7SRWJLSC.js\";\nimport {\n firstNodeAtOrAfter,\n isBackbone\n} from \"./chunk-FYQWPEEY.js\";\n\n// src/deletionEdges.ts\nvar MIN_DELETION_BP = 1;\nfunction bypassedPoints(nodePositions, bypassed) {\n return bypassed.flatMap((id) => nodePositions[id] ?? []);\n}\nfunction deletionArcCurves(nodePositions, deletion, axis, route, stranded = false) {\n return edgeCurvesOf(\n nodePositions,\n deletion,\n axis,\n deletion.bypassed,\n route,\n stranded\n );\n}\nfunction edgeCurvesOf(nodePositions, edge, axis, bypassed, route, stranded) {\n const from = nodePositions[edge.from];\n const to = nodePositions[edge.to];\n if (!from?.length || !to?.length) {\n return void 0;\n }\n return route ? routedEdgeCurves(\n from,\n to,\n route,\n stranded ? strandSides(edge) : void 0\n ) : computeEdgeCurves(\n from,\n to,\n edgeJoinOf(edge, stranded),\n axis,\n bypassed ? bypassedPoints(nodePositions, bypassed) : []\n );\n}\nfunction backboneBySequence(graph) {\n const bySequence = /* @__PURE__ */ new Map();\n for (const node of graph.nodes) {\n if (isBackbone(node)) {\n const list = bySequence.get(node.stable.refName);\n if (list) {\n list.push(node);\n } else {\n bySequence.set(node.stable.refName, [node]);\n }\n }\n }\n for (const list of bySequence.values()) {\n list.sort((a, b) => a.stable.start - b.stable.start);\n }\n return bySequence;\n}\nfunction bypassedNodes(nodes, start, end) {\n const bypassed = [];\n if (nodes) {\n for (let i = firstNodeAtOrAfter(nodes, start); i < nodes.length; i++) {\n const node = nodes[i];\n if (node.stable.start >= end) {\n break;\n }\n if (node.stable.start + node.length <= end) {\n bypassed.push(node.id);\n }\n }\n }\n return bypassed;\n}\nfunction skipsBetween(edge, from, to, forwards) {\n const { fromStrand, toStrand } = edge;\n if (fromStrand === void 0 || toStrand === void 0) {\n return true;\n }\n const leavesRight = fromStrand === (from.stable.strand ?? \"+\");\n const arrivesLeft = toStrand === (to.stable.strand ?? \"+\");\n return forwards ? leavesRight && arrivesLeft : !leavesRight && !arrivesLeft;\n}\nfunction deletionEdges(graph) {\n const byId = new Map(graph.nodes.map((n) => [n.id, n]));\n const backbone = backboneBySequence(graph);\n const found = [];\n for (let edgeIndex = 0; edgeIndex < graph.edges.length; edgeIndex++) {\n const edge = graph.edges[edgeIndex];\n const from = byId.get(edge.from);\n const to = byId.get(edge.to);\n if (from !== void 0 && to !== void 0 && isBackbone(from) && isBackbone(to) && from.stable.refName === to.stable.refName) {\n const forwards = from.stable.start <= to.stable.start;\n const [left, right] = forwards ? [from, to] : [to, from];\n const start = left.stable.start + left.length;\n const end = right.stable.start;\n const bp = end - start;\n if (bp >= MIN_DELETION_BP && skipsBetween(edge, from, to, forwards)) {\n const refName = left.stable.refName;\n found.push({\n edgeIndex,\n from: edge.from,\n to: edge.to,\n ...edge.fromStrand ? { fromStrand: edge.fromStrand } : {},\n ...edge.toStrand ? { toStrand: edge.toStrand } : {},\n refName,\n start,\n end,\n bp,\n bypassed: bypassedNodes(backbone.get(refName), start, end)\n });\n }\n }\n }\n return found;\n}\nfunction closableDeletions(graph, deletions) {\n const parent = /* @__PURE__ */ new Map();\n const root = (id) => {\n let r = id;\n while (parent.has(r)) {\n r = parent.get(r);\n }\n if (r !== id) {\n parent.set(id, r);\n }\n return r;\n };\n const join = (a, b) => {\n const [ra, rb] = [root(a), root(b)];\n if (ra !== rb) {\n parent.set(ra, rb);\n }\n return ra !== rb;\n };\n const candidates = new Set(deletions.map((d) => d.edgeIndex));\n graph.edges.forEach((e, ei) => {\n if (!candidates.has(ei)) {\n join(e.from, e.to);\n }\n });\n return new Set(\n deletions.filter((d) => !join(d.from, d.to)).map((d) => d.edgeIndex)\n );\n}\nvar drawings = /* @__PURE__ */ new WeakMap();\nfunction deletionDrawing(graph, deletions, show = true) {\n let byShow = drawings.get(deletions);\n if (!byShow) {\n byShow = /* @__PURE__ */ new Map();\n drawings.set(deletions, byShow);\n }\n let drawing = byShow.get(show);\n if (!drawing) {\n const hidden = show ? /* @__PURE__ */ new Set() : closableDeletions(graph, deletions);\n drawing = {\n shown: deletions.filter((d) => !hidden.has(d.edgeIndex)),\n bypassed: new Map(deletions.map((d) => [d.edgeIndex, d.bypassed])),\n hidden\n };\n byShow.set(show, drawing);\n }\n return drawing;\n}\n\nexport {\n bypassedPoints,\n deletionArcCurves,\n edgeCurvesOf,\n deletionEdges,\n closableDeletions,\n deletionDrawing\n};\n", "import {\n occupancy\n} from \"./chunk-AB35TJST.js\";\nimport {\n polylineMidpoint\n} from \"./chunk-N73TI3VG.js\";\nimport {\n deletionArcCurves\n} from \"./chunk-24WITXQY.js\";\nimport {\n curveBounds,\n curveMidpoint\n} from \"./chunk-7SRWJLSC.js\";\n\n// src/graphLabels.ts\nvar MIN_DELETION_LABEL_PX = 26;\nvar PX_PER_NODE_LABEL = 4e4;\nvar MIN_NODE_LABELS = 8;\nvar LEADER_GAP_PX = 8;\nvar LABEL_CHAR_PX = 5.7;\nvar LABEL_PAD_PX = 6;\nvar LABEL_HEIGHT_PX = 13;\nvar LABEL_GAP_PX = 3;\nvar MAX_LABEL_OVERHANG = 2;\nfunction labelHalfWidth(text) {\n return (text.length * LABEL_CHAR_PX + LABEL_PAD_PX + LABEL_GAP_PX) / 2;\n}\nvar LABEL_HALF_HEIGHT = (LABEL_HEIGHT_PX + LABEL_GAP_PX) / 2;\nvar MIN_LABEL_HALF_WIDTH = labelHalfWidth(\"1 bp\");\nfunction boxAt(halfW, x, y) {\n return {\n x0: x - halfW,\n x1: x + halfW,\n y0: y - LABEL_HALF_HEIGHT,\n y1: y + LABEL_HALF_HEIGHT\n };\n}\nfunction rowLabelBox(text, screenY) {\n return {\n x0: 6,\n x1: 6 + text.length * 6.2 + 8 + LABEL_GAP_PX,\n y0: screenY - 8 - LABEL_GAP_PX / 2,\n y1: screenY + 8 + LABEL_GAP_PX / 2\n };\n}\nfunction clamp(v, lo, hi) {\n return hi < lo ? v : Math.min(Math.max(v, lo), hi);\n}\nfunction groupDigits(n) {\n return String(n).replace(/\\B(?=(\\d{3})+$)/g, \",\");\n}\nfunction formatBp(bp) {\n const [value, unit] = bp >= 1e6 ? [bp / 1e6, \"Mb\"] : bp >= 1e3 ? [bp / 1e3, \"kb\"] : [];\n if (value === void 0) {\n return `${bp} bp`;\n }\n return `${+value.toFixed(value >= 100 ? 0 : 1)} ${unit}`;\n}\nfunction deletionText(bp) {\n return `${formatBp(bp)} del`;\n}\nfunction arcOutward(curves, apex, scaleX, scaleY) {\n const first = curves[0];\n const last = curves[curves.length - 1];\n const dx = (apex.x - (first.x0 + last.x1) / 2) * scaleX;\n const dy = (apex.y - (first.y0 + last.y1) / 2) * scaleY;\n const len = Math.hypot(dx, dy);\n return len === 0 ? { x: 0, y: -1 } : { x: dx / len, y: dy / len };\n}\nfunction boxSupport(box, dir) {\n return Math.abs(dir.x) * (box.x1 - box.x0) / 2 + Math.abs(dir.y) * (box.y1 - box.y0) / 2;\n}\nfunction boxRayCrossing(box, dir) {\n const halfW = (box.x1 - box.x0) / 2;\n const halfH = (box.y1 - box.y0) / 2;\n return Math.min(\n dir.x === 0 ? Infinity : halfW / Math.abs(dir.x),\n dir.y === 0 ? Infinity : halfH / Math.abs(dir.y)\n );\n}\nfunction drawnLength(segments, scaleX, scaleY) {\n let total = 0;\n for (let i = 1; i < segments.length; i++) {\n const a = segments[i - 1];\n const b = segments[i];\n total += Math.hypot((b.x - a.x) * scaleX, (b.y - a.y) * scaleY);\n }\n return total;\n}\nfunction runBounds(nodeIds, nodePositions) {\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n for (const id of nodeIds) {\n for (const p of nodePositions[id] ?? []) {\n minX = Math.min(minX, p.x);\n maxX = Math.max(maxX, p.x);\n minY = Math.min(minY, p.y);\n maxY = Math.max(maxY, p.y);\n }\n }\n return minX === Infinity ? void 0 : { minX, minY, maxX, maxY };\n}\nvar nodeOrderCache = /* @__PURE__ */ new WeakMap();\nfunction labelOrder(nodePositions, nodeLengths) {\n const cached = nodeOrderCache.get(nodePositions);\n if (cached?.nodeLengths === nodeLengths) {\n return cached.order;\n }\n const order = Object.entries(nodePositions).filter(([id, segments]) => segments.length > 0 && nodeLengths.has(id)).sort(([a], [b]) => nodeLengths.get(b) - nodeLengths.get(a));\n nodeOrderCache.set(nodePositions, { nodeLengths, order });\n return order;\n}\nvar arcCache = /* @__PURE__ */ new WeakMap();\nfunction arcPlacements(nodePositions, deletions, axis, version, routes, stranded) {\n const { scaleX, scaleY } = axis;\n const cached = arcCache.get(nodePositions);\n if (cached?.deletions === deletions && cached.routes === routes && cached.stranded === stranded && cached.scaleX === scaleX && cached.scaleY === scaleY && cached.version === version) {\n return cached.arcs;\n }\n const arcs = [];\n for (const deletion of [...deletions].sort((a, b) => b.bp - a.bp)) {\n const curves = deletionArcCurves(\n nodePositions,\n deletion,\n axis,\n routes?.[deletion.edgeIndex],\n stranded\n );\n const apex = curves ? curveMidpoint(curves) : void 0;\n if (curves && apex) {\n const { minX, minY, maxX, maxY } = curveBounds(curves);\n arcs.push({\n deletion,\n curves,\n apex,\n // in screen px, so the two axes' units cannot be added by accident\n extent: Math.max((maxX - minX) * scaleX, (maxY - minY) * scaleY)\n });\n }\n }\n arcCache.set(nodePositions, {\n deletions,\n routes,\n stranded,\n scaleX,\n scaleY,\n version,\n arcs\n });\n return arcs;\n}\nfunction sizeLabelCandidates({\n nodePositions,\n nodeLengths,\n deletions,\n deletionRoutes,\n stranded = false,\n alleleDeletions,\n axis,\n translateX,\n translateY,\n width,\n height,\n version = 0\n}) {\n const { scaleX, scaleY } = axis;\n const deletionCandidates = [];\n const nodeCandidates = [];\n for (const { deletion, curves, apex, extent } of arcPlacements(\n nodePositions,\n deletions,\n axis,\n version,\n deletionRoutes,\n stranded\n )) {\n if (extent >= MIN_DELETION_LABEL_PX) {\n const text = deletionText(deletion.bp);\n const halfW = labelHalfWidth(text);\n const box = boxAt(halfW, 0, 0);\n const arcX = apex.x * scaleX + translateX;\n const arcY = apex.y * scaleY + translateY;\n if (arcX < 0 || arcX > width || arcY < 0 || arcY > height) {\n continue;\n }\n const fits = extent >= halfW * 2 / MAX_LABEL_OVERHANG;\n const bow = arcOutward(curves, apex, scaleX, scaleY);\n const offset = boxSupport(box, bow) + LEADER_GAP_PX;\n const x = fits ? arcX : clamp(arcX + bow.x * offset, halfW, width - halfW);\n const y = fits ? arcY : clamp(\n arcY + bow.y * offset,\n LABEL_HALF_HEIGHT,\n height - LABEL_HALF_HEIGHT\n );\n const away = Math.hypot(x - arcX, y - arcY);\n let leader;\n if (away > 0) {\n const dir = { x: (x - arcX) / away, y: (y - arcY) / away };\n const crossing = boxRayCrossing(box, dir);\n leader = {\n arcX,\n arcY,\n labelX: x - dir.x * crossing,\n labelY: y - dir.y * crossing\n };\n }\n deletionCandidates.push({\n label: {\n key: `del:${deletion.edgeIndex}`,\n text,\n x,\n y,\n kind: \"deletion\",\n leader\n },\n box: boxAt(halfW, x, y)\n });\n }\n }\n const labelledByDeletion = /* @__PURE__ */ new Set();\n const alleleRuns = [...alleleDeletions ?? []].sort((a, b) => b.bp - a.bp);\n for (const run of alleleRuns) {\n const drawn = runBounds(run.nodeIds, nodePositions);\n if (!drawn) {\n continue;\n }\n const shownLeft = Math.max(drawn.minX * scaleX + translateX, 0);\n const shownRight = Math.min(drawn.maxX * scaleX + translateX, width);\n const shownTop = Math.max(drawn.minY * scaleY + translateY, 0);\n const shownBottom = Math.min(drawn.maxY * scaleY + translateY, height);\n if (shownRight < shownLeft || shownBottom < shownTop) {\n continue;\n }\n const extent = Math.max(shownRight - shownLeft, shownBottom - shownTop);\n const text = deletionText(run.bp);\n const halfW = labelHalfWidth(text);\n if (extent >= halfW * 2 / MAX_LABEL_OVERHANG) {\n for (const id of run.nodeIds) {\n labelledByDeletion.add(id);\n }\n const x = clamp((shownLeft + shownRight) / 2, halfW, width - halfW);\n const y = clamp(\n (shownTop + shownBottom) / 2,\n LABEL_HALF_HEIGHT,\n height - LABEL_HALF_HEIGHT\n );\n deletionCandidates.push({\n label: {\n key: `alleledel:${run.nodeIds.join(\",\")}`,\n text,\n x,\n y,\n kind: \"deletion\"\n },\n box: boxAt(halfW, x, y)\n });\n }\n }\n for (const [id, segments] of labelOrder(nodePositions, nodeLengths)) {\n if (labelledByDeletion.has(id)) {\n continue;\n }\n const { x, y } = polylineMidpoint(segments);\n const screenY = y * scaleY + translateY;\n if (screenY + LABEL_HALF_HEIGHT <= 0 || screenY - LABEL_HALF_HEIGHT >= height) {\n continue;\n }\n const drawn = drawnLength(segments, scaleX, scaleY);\n if (drawn < MIN_LABEL_HALF_WIDTH * 2 / MAX_LABEL_OVERHANG) {\n continue;\n }\n const text = formatBp(nodeLengths.get(id));\n const halfW = labelHalfWidth(text);\n if (drawn >= halfW * 2 / MAX_LABEL_OVERHANG) {\n const screenX = x * scaleX + translateX;\n nodeCandidates.push({\n label: {\n key: `node:${id}`,\n text,\n x: screenX,\n y: screenY,\n kind: \"node\"\n },\n box: boxAt(halfW, screenX, screenY)\n });\n }\n }\n return { deletions: deletionCandidates, nodes: nodeCandidates };\n}\nfunction nodeLabelBudget(width, height) {\n return Math.max(\n MIN_NODE_LABELS,\n Math.floor(width * height / PX_PER_NODE_LABEL)\n );\n}\nfunction placeSizeLabels(candidates, take, budget = Infinity) {\n const labels = [];\n for (const { label, box } of candidates) {\n if (labels.length >= budget) {\n break;\n }\n if (take(box)) {\n labels.push(label);\n }\n }\n return labels;\n}\nfunction graphLabels({\n reserved,\n ...args\n}) {\n const take = occupancy(args, reserved);\n const { deletions, nodes } = sizeLabelCandidates(args);\n return [\n ...placeSizeLabels(deletions, take),\n ...placeSizeLabels(nodes, take, nodeLabelBudget(args.width, args.height))\n ];\n}\n\nexport {\n rowLabelBox,\n groupDigits,\n formatBp,\n sizeLabelCandidates,\n nodeLabelBudget,\n placeSizeLabels,\n graphLabels\n};\n", "import {\n pathOrigin\n} from \"./chunk-M6LK4GII.js\";\nimport {\n isGenericSample\n} from \"./chunk-BPLIXMH7.js\";\nimport {\n groupDigits\n} from \"./chunk-PTABFYQ7.js\";\n\n// src/pathColors.ts\nfunction nameHue(name) {\n let hash = 0;\n for (let i = 0; i < name.length; i++) {\n hash = name.charCodeAt(i) + ((hash << 5) - hash);\n }\n return Math.abs(hash % 360);\n}\nfunction pathHueAt(index, count) {\n return index * 360 / count;\n}\nvar PATH_SATURATION = 0.7;\nvar PATH_LIGHTNESS = 0.5;\nvar MAX_PATH_COLORS = 16;\nfunction pathColorsLegible(pathCount) {\n return pathCount > 0 && pathCount <= MAX_PATH_COLORS;\n}\nfunction pathCssColor(index, count) {\n return `hsl(${pathHueAt(index, count)}, ${PATH_SATURATION * 100}%, ${PATH_LIGHTNESS * 100}%)`;\n}\nfunction pathGreyCssColor(index, count) {\n const lightness = count > 1 ? 25 + 45 * index / (count - 1) : 45;\n return `hsl(0, 0%, ${lightness}%)`;\n}\nfunction labelTiers(name) {\n const parts = pathOrigin(name).name.split(\"#\");\n const full = parts.join(\"#\");\n if (parts.length >= 3 && isGenericSample(parts[0])) {\n const contig = parts.slice(2).join(\"#\");\n return [contig, contig, full];\n }\n return [parts[0], parts.slice(0, 2).join(\"#\"), full];\n}\nfunction offsetTiers(name, tiers) {\n const { start } = pathOrigin(name);\n return tiers.map((t) => `${t} @${groupDigits(start)}`);\n}\nfunction pathLegend(paths, colors) {\n const firstOf = /* @__PURE__ */ new Map();\n paths.forEach((path, i) => {\n if (!firstOf.has(path.name)) {\n firstOf.set(path.name, i);\n }\n });\n const entries = [...firstOf].map(([name, i]) => ({ name, i }));\n const named = entries.map((e) => labelTiers(e.name));\n const candidates = [0, 1, 2].flatMap((t) => [\n entries.map((_, k) => named[k][t]),\n entries.map((e, k) => offsetTiers(e.name, named[k])[t])\n ]);\n const distinct = candidates.find(\n (labels2) => new Set(labels2).size === entries.length\n );\n const labels = distinct ?? candidates.at(-1);\n return entries.map(({ name, i }, k) => ({\n name,\n label: labels[k],\n color: colors?.[i] ?? pathCssColor(i, paths.length)\n }));\n}\nfunction walkLabelsOf(entries) {\n const seen = /* @__PURE__ */ new Map();\n return new Map(\n [...entries].sort((a, b) => a.label.localeCompare(b.label)).map((e) => {\n const n = (seen.get(e.label) ?? 0) + 1;\n seen.set(e.label, n);\n return [e.name, n > 1 ? `${e.label} (${n})` : e.label];\n })\n );\n}\n\nexport {\n nameHue,\n pathHueAt,\n PATH_SATURATION,\n PATH_LIGHTNESS,\n MAX_PATH_COLORS,\n pathColorsLegible,\n pathCssColor,\n pathGreyCssColor,\n pathLegend,\n walkLabelsOf\n};\n", "// src/nodeWidths.ts\nvar NODE_WIDTHS = [\n {\n value: \"depth\",\n label: \"By depth\",\n description: \"Thicker the more paths carry a node, on the square root of its depth against the mean. A graph with one depth everywhere draws uniform.\"\n },\n {\n value: \"uniform\",\n label: \"Uniform\",\n description: \"Every node the same thickness.\"\n }\n];\nvar MIN_FACTOR = 0.3;\nvar MAX_FACTOR = 3;\nfunction meanDepth(graph) {\n let weighted = 0;\n let length = 0;\n for (const node of graph.nodes) {\n weighted += node.depth * node.length;\n length += node.length;\n }\n return length > 0 ? weighted / length : 0;\n}\nfunction depthWidthFactor(node, mean) {\n if (!(mean > 0) || !(node.depth > 0)) {\n return 1;\n }\n return Math.min(\n MAX_FACTOR,\n Math.max(MIN_FACTOR, Math.sqrt(node.depth / mean))\n );\n}\nfunction nodeWidthPx(node, contigThickness, nodeWidth, mean) {\n return contigThickness * (nodeWidth === \"depth\" ? depthWidthFactor(node, mean) : 1);\n}\nfunction maxNodeWidthPx(contigThickness, nodeWidth) {\n return contigThickness * (nodeWidth === \"depth\" ? MAX_FACTOR : 1);\n}\nfunction nodeInk(graph, nodeById, contigThickness, nodeWidth) {\n const mean = graph ? meanDepth(graph) : 0;\n return {\n maxHalfWidthPx: maxNodeWidthPx(contigThickness, nodeWidth) / 2,\n halfWidthPx: (id) => {\n const node = nodeById?.get(id);\n return node ? nodeWidthPx(node, contigThickness, nodeWidth, mean) / 2 : contigThickness / 2;\n }\n };\n}\n\nexport {\n NODE_WIDTHS,\n meanDepth,\n depthWidthFactor,\n nodeWidthPx,\n maxNodeWidthPx,\n nodeInk\n};\n"],
5
5
  "mappings": "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",
6
6
  "names": ["ROW_HEIGHT_PX", "PathVisits", "columns", "s", "i", "entries", "builder", "PathVisitsBuilder", "segment", "visits", "v", "path", "slot", "p", "cursor", "key", "end", "at", "keepPath", "keepSegment", "kept", "out", "Column", "data", "value", "grown", "sample", "start", "reversed", "n", "segments", "offsets", "fill", "RANGE_SUFFIX", "VG_FRAGMENT", "VG_SUBRANGE", "pathOrigin", "pathName", "fragment", "match", "surveyPaths", "paths", "lengthOf", "anchorPaths", "visits", "PathVisitsBuilder", "path", "sample", "panSNSample", "p", "pos", "step", "chooseReferencePath", "preferred", "OFF_REFERENCE_RANK", "anchorNode", "node", "reference", "samplesOf", "slot", "own", "anchor", "REFERENCE_RANK", "sampleSorter", "sorted", "rank", "i", "pathRank", "s", "seen", "ranks", "n", "r", "out", "found", "anchorFromPaths", "graph", "pathVisits", "referenceIndex", "anchorGraph", "trimOrigins", "kept", "bp", "ids", "end", "sum", "byOrigin", "origin", "pieces", "stretch", "LABEL_PX", "LABEL_CHAR_PX", "LABEL_PAD", "labelWidth", "text", "overlaps", "a", "b", "offFrame", "box", "frame", "insideFrame", "occupancy", "reserved", "placed", "p", "placeLabels", "candidates", "take", "out", "row", "place", "c", "w", "direction", "tries", "y", "svgPath", "points", "round", "v", "p", "i", "projectLine", "x1", "y1", "x2", "y2", "distance", "d", "vx", "vy", "curvePointAt", "c", "t", "u", "a", "b", "e", "curveMidpoint", "curves", "mid", "curveBounds", "minX", "minY", "maxX", "maxY", "subCurve", "t0", "t1", "p0", "p1", "dt", "d0", "curveTangentAt", "d1", "dashCurves", "dashWorld", "lengths", "total", "spans", "out", "from", "to", "dash", "start", "k", "length", "end", "translateCurves", "dx", "dy", "attachment", "segments", "side", "last", "TANGENT_SPAN_FACTOR", "MAX_TANGENT", "ownStrand", "id", "strandSides", "edge", "own", "strand", "spanOf", "min", "max", "distanceToSpan", "x", "span", "facingSide", "other", "tieBreak", "startGap", "endGap", "facingSides", "fromSegments", "toSegments", "laidSides", "heldFacingSides", "byTo", "sides", "APEX_FRACTION", "BOW_CLEARANCE", "ALONG_FRACTION", "MAX_ROW_BOW_PX", "ROW_HEIGHT_PX", "bowAround", "p1x", "p1y", "p2x", "p2y", "toward", "maxBow", "chord", "ux", "uy", "reach", "minAlong", "maxAlong", "perp", "along", "uncapped", "size", "yToXOf", "scaleX", "scaleY", "PATH_RIBBON_SPACING_PX", "drawnDirection", "yToX", "len", "pathRibbonOffsets", "count", "axis", "spacing", "dir", "offsets", "scaleYOf", "unscaleYOf", "SELF_LOOP_MIN_PX", "SELF_LOOP_MAX_PX", "selfLoopReach", "scale", "nodePx", "selfLinkOf", "edgeJoinOf", "stranded", "self", "hairpinCurves", "attach", "at", "inward", "px", "py", "nearX", "nearY", "apexX", "apexY", "sideX", "sideY", "computeEdgeCurves", "join", "bypassed", "maxBowIn", "loop", "fromAttach", "toAttach", "fromEnd", "toStart", "segDirX", "segDirY", "ext", "perpX", "perpY", "midX", "midY", "cp1x", "cp1y", "cp2x", "cp2y", "fromPrev", "toNext", "dist", "tangentProj", "prev", "towardX", "towardY", "towardToX", "towardToY", "cx1", "cy1", "cx2", "cy2", "bulge", "chordLen", "bulgeX", "bulgeY", "spreadX", "spreadY", "nearerEnd", "routedEdgeCurves", "route", "tangent", "q", "next", "ta", "tb", "flip", "strand", "mergeRuns", "graph", "alone", "sides", "strandSides", "at", "attach", "id", "side", "ei", "key", "list", "edge", "joinAfter", "a", "out", "joined", "runOf", "runs", "node", "into", "pred", "run", "next", "byId", "n", "nodes", "members", "backbone", "isBackbone", "first", "b", "sum", "seen", "edges", "from", "to", "ownStrand", "splitRuns", "positions", "weightOf", "line", "arc", "arcPrefix", "total", "weights", "m", "weightSum", "member", "k", "share", "slice", "polylineSlice", "polylineMidpoint", "pointAt", "i", "s", "span", "t", "points", "MIN_DELETION_BP", "bypassedPoints", "nodePositions", "bypassed", "id", "deletionArcCurves", "deletion", "axis", "route", "stranded", "edgeCurvesOf", "edge", "from", "to", "routedEdgeCurves", "strandSides", "computeEdgeCurves", "edgeJoinOf", "backboneBySequence", "graph", "bySequence", "node", "isBackbone", "list", "a", "b", "bypassedNodes", "nodes", "start", "end", "i", "firstNodeAtOrAfter", "skipsBetween", "forwards", "fromStrand", "toStrand", "leavesRight", "arrivesLeft", "deletionEdges", "byId", "n", "backbone", "found", "edgeIndex", "left", "right", "bp", "refName", "closableDeletions", "deletions", "parent", "root", "r", "join", "ra", "rb", "candidates", "d", "e", "ei", "drawings", "deletionDrawing", "show", "byShow", "drawing", "hidden", "MIN_DELETION_LABEL_PX", "PX_PER_NODE_LABEL", "MIN_NODE_LABELS", "LEADER_GAP_PX", "LABEL_CHAR_PX", "LABEL_PAD_PX", "LABEL_HEIGHT_PX", "LABEL_GAP_PX", "MAX_LABEL_OVERHANG", "labelHalfWidth", "text", "LABEL_HALF_HEIGHT", "MIN_LABEL_HALF_WIDTH", "boxAt", "halfW", "x", "y", "rowLabelBox", "screenY", "clamp", "v", "lo", "hi", "groupDigits", "n", "formatBp", "bp", "value", "unit", "deletionText", "arcOutward", "curves", "apex", "scaleX", "scaleY", "first", "last", "dx", "dy", "len", "boxSupport", "box", "dir", "boxRayCrossing", "halfH", "drawnLength", "segments", "total", "i", "a", "b", "runBounds", "nodeIds", "nodePositions", "minX", "minY", "maxX", "maxY", "id", "p", "nodeOrderCache", "labelOrder", "nodeLengths", "cached", "order", "arcCache", "arcPlacements", "deletions", "axis", "version", "routes", "stranded", "arcs", "deletion", "deletionArcCurves", "curveMidpoint", "curveBounds", "sizeLabelCandidates", "deletionRoutes", "alleleDeletions", "translateX", "translateY", "width", "height", "deletionCandidates", "nodeCandidates", "extent", "arcX", "arcY", "fits", "bow", "offset", "away", "leader", "crossing", "labelledByDeletion", "alleleRuns", "run", "drawn", "shownLeft", "shownRight", "shownTop", "shownBottom", "polylineMidpoint", "screenX", "nodeLabelBudget", "placeSizeLabels", "candidates", "take", "budget", "labels", "label", "nameHue", "name", "hash", "i", "pathHueAt", "index", "count", "PATH_SATURATION", "PATH_LIGHTNESS", "MAX_PATH_COLORS", "pathColorsLegible", "pathCount", "pathCssColor", "pathGreyCssColor", "labelTiers", "parts", "pathOrigin", "full", "isGenericSample", "contig", "offsetTiers", "tiers", "start", "t", "groupDigits", "pathLegend", "paths", "colors", "firstOf", "path", "entries", "named", "e", "candidates", "_", "k", "labels", "labels2", "walkLabelsOf", "seen", "a", "b", "n", "NODE_WIDTHS", "MIN_FACTOR", "MAX_FACTOR", "meanDepth", "graph", "weighted", "length", "node", "depthWidthFactor", "mean", "nodeWidthPx", "contigThickness", "nodeWidth", "maxNodeWidthPx", "nodeInk", "nodeById", "id"]
@@ -1,4 +1,4 @@
1
- import{b as ze}from"./chunk-FHZXW7IG.js";import{a as He}from"./chunk-ZMOMFU2B.js";import{a as $e,c as Ye}from"./chunk-TENPGIPX.js";function Ve(e){let r=[],t=0,o;for(let n=0,i=e.length;n<i;n++){let a=e.charCodeAt(n);if(a>=48&&a<=57)t=t*10+a-48;else if(a===58)o=t,t=0;else{let f=e[n];f==="M"||f==="="||f==="X"?r.push({own:o===void 0?t:o,mate:t,op:"M"}):f==="I"?r.push({own:0,mate:t,op:f}):(f==="D"||f==="N")&&r.push({own:t,mate:0,op:f}),o=void 0,t=0}}return r}function Ae(e){let r="";for(let{own:t,mate:o,op:n}of Ve(e))r+=n==="M"?t===0?`${o}I`:o===0?`${t}D`:`${t}M`:`${n==="I"?o:t}${n}`;return r}var Se=2**28-1;function ve(e,r,t){for(let o=r;o>0;o-=Se)e.push((Math.min(o,Se)<<4|t)>>>0)}function Nr(e,r,t){if(r===t)ve(e,r,0);else{let o=Math.ceil(Math.max(r,t)/Se);for(let n=0;n<o;n++){let i=Math.floor(r*(n+1)/o)-Math.floor(r*n/o),a=Math.floor(t*(n+1)/o)-Math.floor(t*n/o);e.push((i<<4|9)>>>0,(a<<4|9)>>>0)}}}function _e(e){let r=[];for(let{own:t,mate:o,op:n}of Ve(e))n==="M"?Nr(r,t,o):n==="I"?ve(r,o,1):ve(r,t,n==="N"?3:2);return Uint32Array.from(r)}function kr(e){return e>=48&&e<=57}function Gr(e){return e!==void 0&&/[A-Za-z]/.test(e)}function qe(e,r){let t=r;for(;t<e.length&&Gr(e[t]);)t++;return t}function Qe(e,r){let t=r,o=0;for(;t<e.length&&kr(e.charCodeAt(t));)o=o*10+(e.charCodeAt(t)-48),t++;return{value:o,next:t}}function er(e,r){let t=0;for(;t<e.length;){let o=e[t];if(o===":"){let{value:n,next:i}=Qe(e,t+1);r(":",n,n,t+1,i),t=i}else if(o==="="){let n=qe(e,t+1),i=n-t-1;r("=",i,i,t+1,n),t=n}else if(o==="*")r("*",1,1,t+1,Math.min(t+3,e.length)),t+=3;else if(o==="+"||o==="-"){let n=qe(e,t+1),i=n-t-1;r(o,o==="-"?i:0,o==="+"?i:0,t+1,n),t=n}else if(o==="~"){let{value:n,next:i}=Qe(e,t+3),a=Math.min(i+2,e.length);r("~",n,0,t+1,a),t=a}else t++}}function Ce(e,r,t,o){let n=t??Number.NEGATIVE_INFINITY,i=o??Number.POSITIVE_INFINITY,a=0;er(e,(f,p,s,c,u)=>{if(f==="*")a>=n&&a<i&&r(88,a,1,e[c+1]??"",-1,0,0);else if(f==="+"){if(a>=n&&a<=i){let m=e.slice(c,u);r(73,a,s,m,-1,0,s)}}else(f==="-"||f==="~")&&a<i&&a+p>n&&r(f==="-"?68:78,a,p,"",-1,0,0);a+=p})}function rr(e,r,t,o){let n=0,i=0,a=[],f=t&&r;for(let p=0,s=e.length;p<s;p++){let c=e[p],u=c>>>4,m=c&15;if(m===0||m===7){if(f)for(let l=0;l<u;l++)(r.charCodeAt(i+l)|32)!==(t.charCodeAt(n+l)|32)&&a.push({start:n+l,type:"mismatch",base:r[i+l],altbase:t[n+l],length:1});i+=u,n+=u}else if(m===1)a.push({start:n,type:"insertion",insertlen:u,insertedBases:r?.slice(i,i+u),length:0}),i+=u;else if(m===2)a.push({start:n,type:"deletion",length:u}),n+=u;else if(m===3)a.push({start:n,type:"skip",length:u}),n+=u;else if(m===8){for(let l=0;l<u;l++)a.push({start:n+l,type:"mismatch",base:r?.[i+l]||"X",qual:o?.[i+l],length:1});i+=u,n+=u}else m===5?a.push({start:n,type:"hardclip",cliplen:u,length:1}):m===4&&(a.push({start:n,type:"softclip",cliplen:u,length:1}),i+=u)}return a}function tr(e,r,t,o,n){if(!r)return[];let i=[],a=r.length,f=o.length,p=n!==void 0,s=t.length,c=!1;for(let b=0;b<s;b++)if(t[b].type==="skip"){c=!0;break}let u=0,m=0,l=0,y=0,d=0,x=0,g=e.length;for(;x<g;){let b=e.charCodeAt(x);if(b>=48&&b<=57){let v=0;for(;x<g;){let S=e.charCodeAt(x);if(S>=48&&S<=57)v=v*10+(S-48),x++;else break}u+=v}else if(b===94)for(x++;x<g&&e.charCodeAt(x)>=65;)x++,u++;else if(b>=65){let v=e[x];if(x++,c&&s>0)for(let I=d;I<s;I++){let R=t[I];R.type==="skip"&&u>=R.start&&(u+=R.length,d=I+1)}let S=l,C=y;for(let I=m;I<a&&C<=u;I++,m=I){let R=r[I],L=R>>>4,A=R&15;A===4||A===1?S+=L:A===2||A===6||A===3?C+=L:A!==5&&(S+=L,C+=L)}l=S,y=C;let F=S-(C-u),q=F<f?o[F]:"X";i.push({start:u,base:q,qual:p?n[F]:void 0,altbase:v,length:1,type:"mismatch"}),u++}else x++}return i}var or={77:0,73:1,68:2,78:3,83:4,72:5,80:6,61:7,88:8};function nr(e=""){let r=0,t=[];for(let o=0,n=e.length;o<n;o++){let i=e.charCodeAt(o);if(i>=48&&i<=57)r=r*10+(i-48);else{let a=or[i];t.push(r<<4|a),r=0}}return t}function Te(e=""){let r=0;for(let i=0,a=e.length;i<a;i++){let f=e.charCodeAt(i);(f<48||f>57)&&r++}let t=new Uint32Array(r),o=0,n=0;for(let i=0,a=e.length;i<a;i++){let f=e.charCodeAt(i);f>=48&&f<=57?o=o*10+(f-48):(t[n++]=o<<4|or[f],o=0)}return t}function Z(e,r,t,o,n){let i=nr(e),a=e?rr(i,t,o,n):[];return r&&t?a.concat(tr(r,i,a,t,n)):a}var P=class extends $e{get(r){return r==="mismatches"?Z(this.walkableCigar):r==="clipLengthAtStartOfRead"?this.clipLengthAtStartOfRead:r==="name"?super.get("name")??this.mate?.refName:super.get(r)}get mate(){return super.get("mate")}get walkableCigar(){let r=super.get("CIGAR"),t=super.get("coarseCigar");return typeof r=="string"?r:typeof t=="string"?Ae(t):void 0}get clipLengthAtStartOfRead(){return this.mate?.start??0}forEachMismatch(r,t){let o=this.get("start"),n=t?.start===void 0?void 0:t.start-o,i=t?.end===void 0?void 0:t.end-o,a=this.get("cs");if(a)Ce(a,r,n,i);else{let f=n??Number.NEGATIVE_INFINITY,p=i??Number.POSITIVE_INFINITY;for(let s of Z(this.walkableCigar))(s.type==="deletion"||s.type==="skip"?s.start<p&&s.start+s.length>f:s.start>=f&&s.start<=p)&&(s.type==="mismatch"?r(88,s.start,s.length,s.base,s.qual??-1,0,0):s.type==="insertion"?r(73,s.start,s.length,s.insertedBases??"",-1,0,s.insertlen):s.type==="deletion"?r(68,s.start,s.length,"",-1,0,0):s.type==="skip"&&r(78,s.start,s.length,"",-1,0,0))}}};var we=function(e,r){return we=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,o){t.__proto__=o}||function(t,o){for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(t[n]=o[n])},we(e,r)};function H(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");we(e,r);function t(){this.constructor=e}e.prototype=r===null?Object.create(r):(t.prototype=r.prototype,new t)}function ir(e,r,t,o){function n(i){return i instanceof t?i:new t(function(a){a(i)})}return new(t||(t=Promise))(function(i,a){function f(c){try{s(o.next(c))}catch(u){a(u)}}function p(c){try{s(o.throw(c))}catch(u){a(u)}}function s(c){c.done?i(c.value):n(c.value).then(f,p)}s((o=o.apply(e,r||[])).next())})}function ee(e,r){var t={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},o,n,i,a=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return a.next=f(0),a.throw=f(1),a.return=f(2),typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function f(s){return function(c){return p([s,c])}}function p(s){if(o)throw new TypeError("Generator is already executing.");for(;a&&(a=0,s[0]&&(t=0)),t;)try{if(o=1,n&&(i=s[0]&2?n.return:s[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,s[1])).done)return i;switch(n=0,i&&(s=[s[0]&2,i.value]),s[0]){case 0:case 1:i=s;break;case 4:return t.label++,{value:s[1],done:!1};case 5:t.label++,n=s[1],s=[0];continue;case 7:s=t.ops.pop(),t.trys.pop();continue;default:if(i=t.trys,!(i=i.length>0&&i[i.length-1])&&(s[0]===6||s[0]===2)){t=0;continue}if(s[0]===3&&(!i||s[1]>i[0]&&s[1]<i[3])){t.label=s[1];break}if(s[0]===6&&t.label<i[1]){t.label=i[1],i=s;break}if(i&&t.label<i[2]){t.label=i[2],t.ops.push(s);break}i[2]&&t.ops.pop(),t.trys.pop();continue}s=r.call(e,t)}catch(c){s=[6,c],n=0}finally{o=i=0}if(s[0]&5)throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}}function N(e){var r=typeof Symbol=="function"&&Symbol.iterator,t=r&&e[r],o=0;if(t)return t.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&o>=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(r?"Object is not iterable.":"Symbol.iterator is not defined.")}function D(e,r){var t=typeof Symbol=="function"&&e[Symbol.iterator];if(!t)return e;var o=t.call(e),n,i=[],a;try{for(;(r===void 0||r-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(f){a={error:f}}finally{try{n&&!n.done&&(t=o.return)&&t.call(o)}finally{if(a)throw a.error}}return i}function j(e,r,t){if(t||arguments.length===2)for(var o=0,n=r.length,i;o<n;o++)(i||!(o in r))&&(i||(i=Array.prototype.slice.call(r,0,o)),i[o]=r[o]);return e.concat(i||Array.prototype.slice.call(r))}function k(e){return this instanceof k?(this.v=e,this):new k(e)}function ar(e,r,t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=t.apply(e,r||[]),n,i=[];return n=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),f("next"),f("throw"),f("return",a),n[Symbol.asyncIterator]=function(){return this},n;function a(l){return function(y){return Promise.resolve(y).then(l,u)}}function f(l,y){o[l]&&(n[l]=function(d){return new Promise(function(x,g){i.push([l,d,x,g])>1||p(l,d)})},y&&(n[l]=y(n[l])))}function p(l,y){try{s(o[l](y))}catch(d){m(i[0][3],d)}}function s(l){l.value instanceof k?Promise.resolve(l.value.v).then(c,u):m(i[0][2],l)}function c(l){p("next",l)}function u(l){p("throw",l)}function m(l,y){l(y),i.shift(),i.length&&p(i[0][0],i[0][1])}}function sr(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r=e[Symbol.asyncIterator],t;return r?r.call(e):(e=typeof N=="function"?N(e):e[Symbol.iterator](),t={},o("next"),o("throw"),o("return"),t[Symbol.asyncIterator]=function(){return this},t);function o(i){t[i]=e[i]&&function(a){return new Promise(function(f,p){a=e[i](a),n(f,p,a.done,a.value)})}}function n(i,a,f,p){Promise.resolve(p).then(function(s){i({value:s,done:f})},a)}}function h(e){return typeof e=="function"}function fr(e){var r=function(o){Error.call(o),o.stack=new Error().stack},t=e(r);return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}var re=fr(function(e){return function(t){e(this),this.message=t?t.length+` errors occurred during unsubscription:
1
+ import{b as ze}from"./chunk-SQUFY3QO.js";import{a as He}from"./chunk-KM3QNC77.js";import{a as $e,c as Ye}from"./chunk-TENPGIPX.js";function Ve(e){let r=[],t=0,o;for(let n=0,i=e.length;n<i;n++){let a=e.charCodeAt(n);if(a>=48&&a<=57)t=t*10+a-48;else if(a===58)o=t,t=0;else{let f=e[n];f==="M"||f==="="||f==="X"?r.push({own:o===void 0?t:o,mate:t,op:"M"}):f==="I"?r.push({own:0,mate:t,op:f}):(f==="D"||f==="N")&&r.push({own:t,mate:0,op:f}),o=void 0,t=0}}return r}function Ae(e){let r="";for(let{own:t,mate:o,op:n}of Ve(e))r+=n==="M"?t===0?`${o}I`:o===0?`${t}D`:`${t}M`:`${n==="I"?o:t}${n}`;return r}var Se=2**28-1;function ve(e,r,t){for(let o=r;o>0;o-=Se)e.push((Math.min(o,Se)<<4|t)>>>0)}function Nr(e,r,t){if(r===t)ve(e,r,0);else{let o=Math.ceil(Math.max(r,t)/Se);for(let n=0;n<o;n++){let i=Math.floor(r*(n+1)/o)-Math.floor(r*n/o),a=Math.floor(t*(n+1)/o)-Math.floor(t*n/o);e.push((i<<4|9)>>>0,(a<<4|9)>>>0)}}}function _e(e){let r=[];for(let{own:t,mate:o,op:n}of Ve(e))n==="M"?Nr(r,t,o):n==="I"?ve(r,o,1):ve(r,t,n==="N"?3:2);return Uint32Array.from(r)}function kr(e){return e>=48&&e<=57}function Gr(e){return e!==void 0&&/[A-Za-z]/.test(e)}function qe(e,r){let t=r;for(;t<e.length&&Gr(e[t]);)t++;return t}function Qe(e,r){let t=r,o=0;for(;t<e.length&&kr(e.charCodeAt(t));)o=o*10+(e.charCodeAt(t)-48),t++;return{value:o,next:t}}function er(e,r){let t=0;for(;t<e.length;){let o=e[t];if(o===":"){let{value:n,next:i}=Qe(e,t+1);r(":",n,n,t+1,i),t=i}else if(o==="="){let n=qe(e,t+1),i=n-t-1;r("=",i,i,t+1,n),t=n}else if(o==="*")r("*",1,1,t+1,Math.min(t+3,e.length)),t+=3;else if(o==="+"||o==="-"){let n=qe(e,t+1),i=n-t-1;r(o,o==="-"?i:0,o==="+"?i:0,t+1,n),t=n}else if(o==="~"){let{value:n,next:i}=Qe(e,t+3),a=Math.min(i+2,e.length);r("~",n,0,t+1,a),t=a}else t++}}function Ce(e,r,t,o){let n=t??Number.NEGATIVE_INFINITY,i=o??Number.POSITIVE_INFINITY,a=0;er(e,(f,p,s,c,u)=>{if(f==="*")a>=n&&a<i&&r(88,a,1,e[c+1]??"",-1,0,0);else if(f==="+"){if(a>=n&&a<=i){let m=e.slice(c,u);r(73,a,s,m,-1,0,s)}}else(f==="-"||f==="~")&&a<i&&a+p>n&&r(f==="-"?68:78,a,p,"",-1,0,0);a+=p})}function rr(e,r,t,o){let n=0,i=0,a=[],f=t&&r;for(let p=0,s=e.length;p<s;p++){let c=e[p],u=c>>>4,m=c&15;if(m===0||m===7){if(f)for(let l=0;l<u;l++)(r.charCodeAt(i+l)|32)!==(t.charCodeAt(n+l)|32)&&a.push({start:n+l,type:"mismatch",base:r[i+l],altbase:t[n+l],length:1});i+=u,n+=u}else if(m===1)a.push({start:n,type:"insertion",insertlen:u,insertedBases:r?.slice(i,i+u),length:0}),i+=u;else if(m===2)a.push({start:n,type:"deletion",length:u}),n+=u;else if(m===3)a.push({start:n,type:"skip",length:u}),n+=u;else if(m===8){for(let l=0;l<u;l++)a.push({start:n+l,type:"mismatch",base:r?.[i+l]||"X",qual:o?.[i+l],length:1});i+=u,n+=u}else m===5?a.push({start:n,type:"hardclip",cliplen:u,length:1}):m===4&&(a.push({start:n,type:"softclip",cliplen:u,length:1}),i+=u)}return a}function tr(e,r,t,o,n){if(!r)return[];let i=[],a=r.length,f=o.length,p=n!==void 0,s=t.length,c=!1;for(let b=0;b<s;b++)if(t[b].type==="skip"){c=!0;break}let u=0,m=0,l=0,y=0,d=0,x=0,g=e.length;for(;x<g;){let b=e.charCodeAt(x);if(b>=48&&b<=57){let v=0;for(;x<g;){let S=e.charCodeAt(x);if(S>=48&&S<=57)v=v*10+(S-48),x++;else break}u+=v}else if(b===94)for(x++;x<g&&e.charCodeAt(x)>=65;)x++,u++;else if(b>=65){let v=e[x];if(x++,c&&s>0)for(let I=d;I<s;I++){let R=t[I];R.type==="skip"&&u>=R.start&&(u+=R.length,d=I+1)}let S=l,C=y;for(let I=m;I<a&&C<=u;I++,m=I){let R=r[I],L=R>>>4,A=R&15;A===4||A===1?S+=L:A===2||A===6||A===3?C+=L:A!==5&&(S+=L,C+=L)}l=S,y=C;let F=S-(C-u),q=F<f?o[F]:"X";i.push({start:u,base:q,qual:p?n[F]:void 0,altbase:v,length:1,type:"mismatch"}),u++}else x++}return i}var or={77:0,73:1,68:2,78:3,83:4,72:5,80:6,61:7,88:8};function nr(e=""){let r=0,t=[];for(let o=0,n=e.length;o<n;o++){let i=e.charCodeAt(o);if(i>=48&&i<=57)r=r*10+(i-48);else{let a=or[i];t.push(r<<4|a),r=0}}return t}function Te(e=""){let r=0;for(let i=0,a=e.length;i<a;i++){let f=e.charCodeAt(i);(f<48||f>57)&&r++}let t=new Uint32Array(r),o=0,n=0;for(let i=0,a=e.length;i<a;i++){let f=e.charCodeAt(i);f>=48&&f<=57?o=o*10+(f-48):(t[n++]=o<<4|or[f],o=0)}return t}function Z(e,r,t,o,n){let i=nr(e),a=e?rr(i,t,o,n):[];return r&&t?a.concat(tr(r,i,a,t,n)):a}var P=class extends $e{get(r){return r==="mismatches"?Z(this.walkableCigar):r==="clipLengthAtStartOfRead"?this.clipLengthAtStartOfRead:r==="name"?super.get("name")??this.mate?.refName:super.get(r)}get mate(){return super.get("mate")}get walkableCigar(){let r=super.get("CIGAR"),t=super.get("coarseCigar");return typeof r=="string"?r:typeof t=="string"?Ae(t):void 0}get clipLengthAtStartOfRead(){return this.mate?.start??0}forEachMismatch(r,t){let o=this.get("start"),n=t?.start===void 0?void 0:t.start-o,i=t?.end===void 0?void 0:t.end-o,a=this.get("cs");if(a)Ce(a,r,n,i);else{let f=n??Number.NEGATIVE_INFINITY,p=i??Number.POSITIVE_INFINITY;for(let s of Z(this.walkableCigar))(s.type==="deletion"||s.type==="skip"?s.start<p&&s.start+s.length>f:s.start>=f&&s.start<=p)&&(s.type==="mismatch"?r(88,s.start,s.length,s.base,s.qual??-1,0,0):s.type==="insertion"?r(73,s.start,s.length,s.insertedBases??"",-1,0,s.insertlen):s.type==="deletion"?r(68,s.start,s.length,"",-1,0,0):s.type==="skip"&&r(78,s.start,s.length,"",-1,0,0))}}};var we=function(e,r){return we=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,o){t.__proto__=o}||function(t,o){for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(t[n]=o[n])},we(e,r)};function H(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");we(e,r);function t(){this.constructor=e}e.prototype=r===null?Object.create(r):(t.prototype=r.prototype,new t)}function ir(e,r,t,o){function n(i){return i instanceof t?i:new t(function(a){a(i)})}return new(t||(t=Promise))(function(i,a){function f(c){try{s(o.next(c))}catch(u){a(u)}}function p(c){try{s(o.throw(c))}catch(u){a(u)}}function s(c){c.done?i(c.value):n(c.value).then(f,p)}s((o=o.apply(e,r||[])).next())})}function ee(e,r){var t={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},o,n,i,a=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return a.next=f(0),a.throw=f(1),a.return=f(2),typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function f(s){return function(c){return p([s,c])}}function p(s){if(o)throw new TypeError("Generator is already executing.");for(;a&&(a=0,s[0]&&(t=0)),t;)try{if(o=1,n&&(i=s[0]&2?n.return:s[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,s[1])).done)return i;switch(n=0,i&&(s=[s[0]&2,i.value]),s[0]){case 0:case 1:i=s;break;case 4:return t.label++,{value:s[1],done:!1};case 5:t.label++,n=s[1],s=[0];continue;case 7:s=t.ops.pop(),t.trys.pop();continue;default:if(i=t.trys,!(i=i.length>0&&i[i.length-1])&&(s[0]===6||s[0]===2)){t=0;continue}if(s[0]===3&&(!i||s[1]>i[0]&&s[1]<i[3])){t.label=s[1];break}if(s[0]===6&&t.label<i[1]){t.label=i[1],i=s;break}if(i&&t.label<i[2]){t.label=i[2],t.ops.push(s);break}i[2]&&t.ops.pop(),t.trys.pop();continue}s=r.call(e,t)}catch(c){s=[6,c],n=0}finally{o=i=0}if(s[0]&5)throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}}function N(e){var r=typeof Symbol=="function"&&Symbol.iterator,t=r&&e[r],o=0;if(t)return t.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&o>=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(r?"Object is not iterable.":"Symbol.iterator is not defined.")}function D(e,r){var t=typeof Symbol=="function"&&e[Symbol.iterator];if(!t)return e;var o=t.call(e),n,i=[],a;try{for(;(r===void 0||r-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(f){a={error:f}}finally{try{n&&!n.done&&(t=o.return)&&t.call(o)}finally{if(a)throw a.error}}return i}function j(e,r,t){if(t||arguments.length===2)for(var o=0,n=r.length,i;o<n;o++)(i||!(o in r))&&(i||(i=Array.prototype.slice.call(r,0,o)),i[o]=r[o]);return e.concat(i||Array.prototype.slice.call(r))}function k(e){return this instanceof k?(this.v=e,this):new k(e)}function ar(e,r,t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=t.apply(e,r||[]),n,i=[];return n=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),f("next"),f("throw"),f("return",a),n[Symbol.asyncIterator]=function(){return this},n;function a(l){return function(y){return Promise.resolve(y).then(l,u)}}function f(l,y){o[l]&&(n[l]=function(d){return new Promise(function(x,g){i.push([l,d,x,g])>1||p(l,d)})},y&&(n[l]=y(n[l])))}function p(l,y){try{s(o[l](y))}catch(d){m(i[0][3],d)}}function s(l){l.value instanceof k?Promise.resolve(l.value.v).then(c,u):m(i[0][2],l)}function c(l){p("next",l)}function u(l){p("throw",l)}function m(l,y){l(y),i.shift(),i.length&&p(i[0][0],i[0][1])}}function sr(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r=e[Symbol.asyncIterator],t;return r?r.call(e):(e=typeof N=="function"?N(e):e[Symbol.iterator](),t={},o("next"),o("throw"),o("return"),t[Symbol.asyncIterator]=function(){return this},t);function o(i){t[i]=e[i]&&function(a){return new Promise(function(f,p){a=e[i](a),n(f,p,a.done,a.value)})}}function n(i,a,f,p){Promise.resolve(p).then(function(s){i({value:s,done:f})},a)}}function h(e){return typeof e=="function"}function fr(e){var r=function(o){Error.call(o),o.stack=new Error().stack},t=e(r);return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}var re=fr(function(e){return function(t){e(this),this.message=t?t.length+` errors occurred during unsubscription:
2
2
  `+t.map(function(o,n){return n+1+") "+o.toString()}).join(`
3
3
  `):"",this.name="UnsubscriptionError",this.errors=t}});function Oe(e,r){if(e){var t=e.indexOf(r);0<=t&&e.splice(t,1)}}var te=(function(){function e(r){this.initialTeardown=r,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var r,t,o,n,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a)if(this._parentage=null,Array.isArray(a))try{for(var f=N(a),p=f.next();!p.done;p=f.next()){var s=p.value;s.remove(this)}}catch(d){r={error:d}}finally{try{p&&!p.done&&(t=f.return)&&t.call(f)}finally{if(r)throw r.error}}else a.remove(this);var c=this.initialTeardown;if(h(c))try{c()}catch(d){i=d instanceof re?d.errors:[d]}var u=this._finalizers;if(u){this._finalizers=null;try{for(var m=N(u),l=m.next();!l.done;l=m.next()){var y=l.value;try{pr(y)}catch(d){i=i??[],d instanceof re?i=j(j([],D(i)),D(d.errors)):i.push(d)}}}catch(d){o={error:d}}finally{try{l&&!l.done&&(n=m.return)&&n.call(m)}finally{if(o)throw o.error}}}if(i)throw new re(i)}},e.prototype.add=function(r){var t;if(r&&r!==this)if(this.closed)pr(r);else{if(r instanceof e){if(r.closed||r._hasParent(this))return;r._addParent(this)}(this._finalizers=(t=this._finalizers)!==null&&t!==void 0?t:[]).push(r)}},e.prototype._hasParent=function(r){var t=this._parentage;return t===r||Array.isArray(t)&&t.includes(r)},e.prototype._addParent=function(r){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(r),t):t?[t,r]:r},e.prototype._removeParent=function(r){var t=this._parentage;t===r?this._parentage=null:Array.isArray(t)&&Oe(t,r)},e.prototype.remove=function(r){var t=this._finalizers;t&&Oe(t,r),r instanceof e&&r._removeParent(this)},e.EMPTY=(function(){var r=new e;return r.closed=!0,r})(),e})();var Kt=te.EMPTY;function oe(e){return e instanceof te||e&&"closed"in e&&h(e.remove)&&h(e.add)&&h(e.unsubscribe)}function pr(e){h(e)?e():e.unsubscribe()}var w={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var U={setTimeout:function(e,r){for(var t=[],o=2;o<arguments.length;o++)t[o-2]=arguments[o];var n=U.delegate;return n?.setTimeout?n.setTimeout.apply(n,j([e,r],D(t))):setTimeout.apply(void 0,j([e,r],D(t)))},clearTimeout:function(e){var r=U.delegate;return(r?.clearTimeout||clearTimeout)(e)},delegate:void 0};function ne(e){U.setTimeout(function(){var r=w.onUnhandledError;if(r)r(e);else throw e})}function Re(){}var cr=(function(){return Me("C",void 0,void 0)})();function ur(e){return Me("E",void 0,e)}function lr(e){return Me("N",e,void 0)}function Me(e,r,t){return{kind:e,value:r,error:t}}var G=null;function mr(e){if(w.useDeprecatedSynchronousErrorHandling){var r=!G;if(r&&(G={errorThrown:!1,error:null}),e(),r){var t=G,o=t.errorThrown,n=t.error;if(G=null,o)throw n}}else e()}function dr(e){w.useDeprecatedSynchronousErrorHandling&&G&&(G.errorThrown=!0,G.error=e)}var z=(function(e){H(r,e);function r(t){var o=e.call(this)||this;return o.isStopped=!1,t?(o.destination=t,oe(t)&&t.add(o)):o.destination=$r,o}return r.create=function(t,o,n){return new ae(t,o,n)},r.prototype.next=function(t){this.isStopped?Le(lr(t),this):this._next(t)},r.prototype.error=function(t){this.isStopped?Le(ur(t),this):(this.isStopped=!0,this._error(t))},r.prototype.complete=function(){this.isStopped?Le(cr,this):(this.isStopped=!0,this._complete())},r.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},r.prototype._next=function(t){this.destination.next(t)},r.prototype._error=function(t){try{this.destination.error(t)}finally{this.unsubscribe()}},r.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},r})(te);var Ur=Function.prototype.bind;function Fe(e,r){return Ur.call(e,r)}var Br=(function(){function e(r){this.partialObserver=r}return e.prototype.next=function(r){var t=this.partialObserver;if(t.next)try{t.next(r)}catch(o){ie(o)}},e.prototype.error=function(r){var t=this.partialObserver;if(t.error)try{t.error(r)}catch(o){ie(o)}else ie(r)},e.prototype.complete=function(){var r=this.partialObserver;if(r.complete)try{r.complete()}catch(t){ie(t)}},e})(),ae=(function(e){H(r,e);function r(t,o,n){var i=e.call(this)||this,a;if(h(t)||!t)a={next:t??void 0,error:o??void 0,complete:n??void 0};else{var f;i&&w.useDeprecatedNextContext?(f=Object.create(t),f.unsubscribe=function(){return i.unsubscribe()},a={next:t.next&&Fe(t.next,f),error:t.error&&Fe(t.error,f),complete:t.complete&&Fe(t.complete,f)}):a=t}return i.destination=new Br(a),i}return r})(z);function ie(e){w.useDeprecatedSynchronousErrorHandling?dr(e):ne(e)}function Wr(e){throw e}function Le(e,r){var t=w.onStoppedNotification;t&&U.setTimeout(function(){return t(e,r)})}var $r={closed:!0,next:Re,error:Wr,complete:Re};var B=(function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"})();function xr(e){return e}function hr(e){return e.length===0?xr:e.length===1?e[0]:function(t){return e.reduce(function(o,n){return n(o)},t)}}var _=(function(){function e(r){r&&(this._subscribe=r)}return e.prototype.lift=function(r){var t=new e;return t.source=this,t.operator=r,t},e.prototype.subscribe=function(r,t,o){var n=this,i=Hr(r)?r:new ae(r,t,o);return mr(function(){var a=n,f=a.operator,p=a.source;i.add(f?f.call(i,p):p?n._subscribe(i):n._trySubscribe(i))}),i},e.prototype._trySubscribe=function(r){try{return this._subscribe(r)}catch(t){r.error(t)}},e.prototype.forEach=function(r,t){var o=this;return t=yr(t),new t(function(n,i){var a=new ae({next:function(f){try{r(f)}catch(p){i(p),a.unsubscribe()}},error:i,complete:n});o.subscribe(a)})},e.prototype._subscribe=function(r){var t;return(t=this.source)===null||t===void 0?void 0:t.subscribe(r)},e.prototype[B]=function(){return this},e.prototype.pipe=function(){for(var r=[],t=0;t<arguments.length;t++)r[t]=arguments[t];return hr(r)(this)},e.prototype.toPromise=function(r){var t=this;return r=yr(r),new r(function(o,n){var i;t.subscribe(function(a){return i=a},function(a){return n(a)},function(){return o(i)})})},e.create=function(r){return new e(r)},e})();function yr(e){var r;return(r=e??w.Promise)!==null&&r!==void 0?r:Promise}function Yr(e){return e&&h(e.next)&&h(e.error)&&h(e.complete)}function Hr(e){return e&&e instanceof z||Yr(e)&&oe(e)}function zr(e){return h(e?.lift)}function E(e){return function(r){if(zr(r))return r.lift(function(t){try{return e(t,this)}catch(o){this.error(o)}});throw new TypeError("Unable to lift unknown Observable type")}}function M(e,r,t,o,n){return new Vr(e,r,t,o,n)}var Vr=(function(e){H(r,e);function r(t,o,n,i,a,f){var p=e.call(this,t)||this;return p.onFinalize=a,p.shouldUnsubscribe=f,p._next=o?function(s){try{o(s)}catch(c){t.error(c)}}:e.prototype._next,p._error=i?function(s){try{i(s)}catch(c){t.error(c)}finally{this.unsubscribe()}}:e.prototype._error,p._complete=n?function(){try{n()}catch(s){t.error(s)}finally{this.unsubscribe()}}:e.prototype._complete,p}return r.prototype.unsubscribe=function(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var o=this.closed;e.prototype.unsubscribe.call(this),!o&&((t=this.onFinalize)===null||t===void 0||t.call(this))}},r})(z);var se=(function(e){return e&&typeof e.length=="number"&&typeof e!="function"});function fe(e){return h(e?.then)}function pe(e){return h(e[B])}function ce(e){return Symbol.asyncIterator&&h(e?.[Symbol.asyncIterator])}function ue(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function qr(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var le=qr();function me(e){return h(e?.[le])}function de(e){return ar(this,arguments,function(){var t,o,n,i;return ee(this,function(a){switch(a.label){case 0:t=e.getReader(),a.label=1;case 1:a.trys.push([1,,9,10]),a.label=2;case 2:return[4,k(t.read())];case 3:return o=a.sent(),n=o.value,i=o.done,i?[4,k(void 0)]:[3,5];case 4:return[2,a.sent()];case 5:return[4,k(n)];case 6:return[4,a.sent()];case 7:return a.sent(),[3,2];case 8:return[3,10];case 9:return t.releaseLock(),[7];case 10:return[2]}})})}function xe(e){return h(e?.getReader)}function O(e){if(e instanceof _)return e;if(e!=null){if(pe(e))return Qr(e);if(se(e))return Kr(e);if(fe(e))return Xr(e);if(ce(e))return gr(e);if(me(e))return Jr(e);if(xe(e))return Zr(e)}throw ue(e)}function Qr(e){return new _(function(r){var t=e[B]();if(h(t.subscribe))return t.subscribe(r);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function Kr(e){return new _(function(r){for(var t=0;t<e.length&&!r.closed;t++)r.next(e[t]);r.complete()})}function Xr(e){return new _(function(r){e.then(function(t){r.closed||(r.next(t),r.complete())},function(t){return r.error(t)}).then(null,ne)})}function Jr(e){return new _(function(r){var t,o;try{for(var n=N(e),i=n.next();!i.done;i=n.next()){var a=i.value;if(r.next(a),r.closed)return}}catch(f){t={error:f}}finally{try{i&&!i.done&&(o=n.return)&&o.call(n)}finally{if(t)throw t.error}}r.complete()})}function gr(e){return new _(function(r){et(e,r).catch(function(t){return r.error(t)})})}function Zr(e){return gr(de(e))}function et(e,r){var t,o,n,i;return ir(this,void 0,void 0,function(){var a,f;return ee(this,function(p){switch(p.label){case 0:p.trys.push([0,5,6,11]),t=sr(e),p.label=1;case 1:return[4,t.next()];case 2:if(o=p.sent(),!!o.done)return[3,4];if(a=o.value,r.next(a),r.closed)return[2];p.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return f=p.sent(),n={error:f},[3,11];case 6:return p.trys.push([6,,9,10]),o&&!o.done&&(i=t.return)?[4,i.call(t)]:[3,8];case 7:p.sent(),p.label=8;case 8:return[3,10];case 9:if(n)throw n.error;return[7];case 10:return[7];case 11:return r.complete(),[2]}})})}function T(e,r,t,o,n){o===void 0&&(o=0),n===void 0&&(n=!1);var i=r.schedule(function(){t(),n?e.add(this.schedule(null,o)):this.unsubscribe()},o);if(e.add(i),!n)return i}function he(e,r){return r===void 0&&(r=0),E(function(t,o){t.subscribe(M(o,function(n){return T(o,e,function(){return o.next(n)},r)},function(){return T(o,e,function(){return o.complete()},r)},function(n){return T(o,e,function(){return o.error(n)},r)}))})}function ye(e,r){return r===void 0&&(r=0),E(function(t,o){o.add(e.schedule(function(){return t.subscribe(o)},r))})}function br(e,r){return O(e).pipe(ye(r),he(r))}function Sr(e,r){return O(e).pipe(ye(r),he(r))}function vr(e,r){return new _(function(t){var o=0;return r.schedule(function(){o===e.length?t.complete():(t.next(e[o++]),t.closed||this.schedule())})})}function Ar(e,r){return new _(function(t){var o;return T(t,r,function(){o=e[le](),T(t,r,function(){var n,i,a;try{n=o.next(),i=n.value,a=n.done}catch(f){t.error(f);return}a?t.complete():t.next(i)},0,!0)}),function(){return h(o?.return)&&o.return()}})}function ge(e,r){if(!e)throw new Error("Iterable cannot be null");return new _(function(t){T(t,r,function(){var o=e[Symbol.asyncIterator]();T(t,r,function(){o.next().then(function(n){n.done?t.complete():t.next(n.value)})},0,!0)})})}function _r(e,r){return ge(de(e),r)}function Cr(e,r){if(e!=null){if(pe(e))return br(e,r);if(se(e))return vr(e,r);if(fe(e))return Sr(e,r);if(ce(e))return ge(e,r);if(me(e))return Ar(e,r);if(xe(e))return _r(e,r)}throw ue(e)}function Pe(e,r){return r?Cr(e,r):O(e)}function V(e,r){return E(function(t,o){var n=0;t.subscribe(M(o,function(i){o.next(e.call(r,i,n++))}))})}function Ir(e,r,t,o,n,i,a,f){var p=[],s=0,c=0,u=!1,m=function(){u&&!p.length&&!s&&r.complete()},l=function(d){return s<o?y(d):p.push(d)},y=function(d){i&&r.next(d),s++;var x=!1;O(t(d,c++)).subscribe(M(r,function(g){n?.(g),i?l(g):r.next(g)},function(){x=!0},void 0,function(){if(x)try{s--;for(var g=function(){var b=p.shift();a?T(r,a,function(){return y(b)}):y(b)};p.length&&s<o;)g();m()}catch(b){r.error(b)}}))};return e.subscribe(M(r,l,function(){u=!0,m()})),function(){f?.()}}function W(e,r,t){return t===void 0&&(t=1/0),h(r)?W(function(o,n){return V(function(i,a){return r(o,i,n,a)})(O(e(o,n)))},t):(typeof r=="number"&&(t=r),E(function(o,n){return Ir(o,n,e,t)}))}function Er(e,r,t,o,n){return function(i,a){var f=t,p=r,s=0;i.subscribe(M(a,function(c){var u=s++;p=f?e(p,c,u):(f=!0,c),o&&a.next(p)},n&&(function(){f&&a.next(p),a.complete()})))}}function Tr(e,r){return E(Er(e,r,arguments.length>=2,!1,!0))}var rt=function(e,r){return e.push(r),e};function be(){return E(function(e,r){Tr(rt,[])(e).subscribe(r)})}var tt=397,ot=387,nt=385;function wr(e){return(1<<e&tt)!==0}function Or(e){return(1<<e&ot)!==0}function Rr(e){return(1<<e&nt)!==0}function Ne(e,r,t,o,n,i,a){let f=n===-1?-1:1,p=r,s=n===-1?o:t,c=[],u=1/0,m=-1/0,l=1/0,y=-1/0,d=(x,g)=>{l=Math.min(l,x,g),y=Math.max(y,x,g)};for(let x=0;x<e.length;x++){let g=e[x],b=g>>>4,v=g&15,S=v===9,C=S||wr(v)?b:0,F=S?e[++x]>>>4:Or(v)?b:0,q=p+C,I=s+F*f,R=p,L=q;if(L>=i&&R<=a)if(C>0){let A=Math.max(R,i),$=Math.min(L,a);if($>A)if(u=Math.min(u,A),m=Math.max(m,$),S){let je=F/b,Ue=$-A,Be=Math.round(Ue*je),We=Math.round(s+(A-p)*je*f);c.push(Ue<<4|9,Be<<4|9),d(We,We+Be*f)}else c.push($-A<<4|v),Rr(v)?d(s+(A-p)*f,s+($-p)*f):d(s,s)}else F>0&&(S?c.push(g,e[x]):c.push(g),u=Math.min(u,p),m=Math.max(m,p),d(s,I));if(p=q,s=I,p>a)break}if(c.length!==0)return{start:u,end:m,mateStart:l,mateEnd:y,cigar:Uint32Array.from(c)}}function it(e){return e===1||e===2||e===3}function ke(e,r,t,o,n,i){let a=n===-1?-1:1,f=[],p=r,s=n===-1?o:t,c,u=!1,m=()=>{c!==void 0&&u&&c.qHi>c.qLo&&f.push({start:c.qLo,end:c.qHi,mateStart:c.tLo,mateEnd:c.tHi,cigar:Uint32Array.from(c.ops)}),c=void 0,u=!1};for(let l=0;l<e.length;l++){let y=e[l],d=y>>>4,x=y&15,g=x===9,b=g?e[++l]:void 0,v=g||wr(x)?d:0,S=b!==void 0?b>>>4:Or(x)?d:0,C=s+S*a;it(x)&&d>=i?m():(v>0||S>0)&&(c===void 0&&(c={qLo:p,qHi:p,tLo:s,tHi:s,ops:[]}),c.qHi=p+v,c.tLo=Math.min(c.tLo,s,C),c.tHi=Math.max(c.tHi,s,C),c.ops.push(y),b!==void 0&&c.ops.push(b),u=u||g||Rr(x)),p+=v,s=C}return m(),f}function Mr(e){let r=e.get("CIGAR");return typeof r=="string"?r:void 0}function Fr(e){let r=e.get("coarseCigar");return typeof r=="string"?r:void 0}function Ge(e){let r=Mr(e),t=r===void 0?Fr(e):void 0;return r!==void 0?Te(r):t!==void 0?_e(t):void 0}var at=["CIGAR","cs","coarseCigar","cg","cr"];function st(e){return typeof e=="object"&&e!==null&&"refName"in e&&"start"in e&&"end"in e&&typeof e.refName=="string"&&typeof e.start=="number"&&typeof e.end=="number"}function ft(e){let r=e.get("mate");return st(r)?r:void 0}function pt(e,r,t,o){let n=Math.max(e.start,o.start),i=Math.min(e.end,o.end),a=(r.end-r.start)/Math.max(e.end-e.start,1),f=c=>t===-1?r.end-(c-e.start)*a:r.start+(c-e.start)*a,p=Math.round(f(n)),s=Math.round(f(i));return i>n?{start:n,end:i,mateStart:Math.min(p,s),mateEnd:Math.max(p,s)}:void 0}function ct(e,r,t,o,n){let i={start:e.get("start"),end:e.get("end")},a=e.get("strand")===-1?-1:1,f=i.start>=t.start&&i.end<=t.end,p=f&&o===void 0&&!n?void 0:Ge(e);if(p===void 0){let s=f?{...i,mateStart:r.start,mateEnd:r.end}:pt(i,r,a,t);return s===void 0?[]:[s]}else return(o===void 0?[{...i,mateStart:r.start,mateEnd:r.end,cigar:p}]:ke(p,i.start,r.start,r.end,a,o)).flatMap(c=>{let u=Ne(c.cigar,c.start,c.mateStart,c.mateEnd,a,t.start,t.end);return u===void 0?[]:[u]})}function ut(e,r,t,o,n,i){let a=`:${o.start}-${o.end}${n}`,f=e.toJSON(),p={...f,uniqueId:`${e.id()}${a}`,start:t.start,end:t.end,mate:{...r,start:t.mateStart,end:t.mateEnd}};f.syntenyId!==void 0&&(p.syntenyId=`${String(f.syntenyId)}${a}`);for(let s of at)delete p[s];return i&&t.cigar&&(p.alignmentOps=t.cigar),new P(p)}function Lr(e,r,t,o=!1){let n=ft(e);if(n===void 0)return[e];{let i=ct(e,n,r,t,o);return i.map((a,f)=>ut(e,n,a,r,i.length>1?`/${f}`:"",o))}}var Pr=class extends ze{constructor(){super(...arguments);this.recordsAreAlignments=!0}static{this.capabilities=["getFeatures","getRefNames"]}async hasDataForRefName(){return!0}getFeaturesInMultipleRegions(t,o={}){let{clipToRegion:n,splitAtGapBp:i,keepAlignment:a,...f}=o,p=n&&this.recordsAreAlignments,s=Ye(f.statusCallback);return Pe(t).pipe(W((c,u)=>this.getFeatures(c,{...f,statusCallback:s()}).pipe(W(m=>p?Lr(m,m.get("assemblyName")===c.assemblyName?c:{start:m.get("start"),end:m.get("end")},i,a):[m]),be(),V(m=>({index:u,features:m})))),be(),W(c=>c.sort((u,m)=>u.index-m.index).flatMap(u=>u.features)))}};var De=class extends Error{constructor(t){super(`a pair query names both lanes: queryAssemblyName ${t} came without a targetAssemblyName`);this.name="PairTargetError"}};function Qi(e){let{lanePairs:r,queryAssemblyName:t,targetAssemblyName:o}=e;if(r?.length)return r;if(t===void 0)return[];if(o===void 0)throw new De(t);return[{queryAssemblyName:t,targetAssemblyName:o}]}function Ki(e){let[r]=e;return e.length===1&&r?`Reading ${r.queryAssemblyName} against ${r.targetAssemblyName}`:`Reading ${e.length} lane pairs`}function Xi(e,r){return e[r]??e[He(r)]??r}function ea({target:e,query:r,strand:t,cigar:o,matches:n,columns:i}){let a=`${e.name}:${e.start}-${e.end}|${r.name}:${r.start}-${r.end}`;return new P({uniqueId:a,assemblyName:e.assemblyName,refName:e.refName,start:e.start,end:e.end,type:"match",strand:t==="-"?-1:1,CIGAR:o,syntenyId:a,identity:n/Math.max(i,1),numMatches:n,blockLen:i,mate:{refName:r.refName,start:r.start,end:r.end,assemblyName:r.assemblyName}})}export{P as a,Pr as b,De as c,Qi as d,Ki as e,Xi as f,ea as g};
4
- //# sourceMappingURL=chunk-EGDLEQ47.js.map
4
+ //# sourceMappingURL=chunk-IP3ORVTU.js.map