jbrowse-plugin-graphgenomeviewer 8.3.7 → 8.3.8

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-4FATZPZG.js → GbzBaseSyntenyAdapter-Z4U7CQ6T.js} +2 -2
  2. package/dist/chunks/{GbzBaseSyntenyAdapter-4FATZPZG.js.map → GbzBaseSyntenyAdapter-Z4U7CQ6T.js.map} +1 -1
  3. package/dist/chunks/{GraphGenomeView-H2Z5NQW4.js → GraphGenomeView-SIOAXXAX.js} +2 -2
  4. package/dist/chunks/{GraphTrackSettingsDialog-LFFJHC7F.js → GraphTrackSettingsDialog-ZSMGGYOZ.js} +2 -2
  5. package/dist/chunks/{HighlightColorDialog-76RJSXSV.js → HighlightColorDialog-MS6UZ5QH.js} +2 -2
  6. package/dist/chunks/{LinearGraphDisplay-VYPF26DJ.js → LinearGraphDisplay-56NPMGFE.js} +2 -2
  7. package/dist/chunks/{MinigraphBubbleAdapter-WQUZTNDM.js → MinigraphBubbleAdapter-XRQSSGO7.js} +2 -2
  8. package/dist/chunks/{RgfaTabixAdapter-K763K62E.js → RgfaTabixAdapter-2CHBK2KR.js} +2 -2
  9. package/dist/chunks/{WalkFormsAdapter-WJTEKIOB.js → WalkFormsAdapter-5PVAUS7M.js} +2 -2
  10. package/dist/chunks/{WalkTabixSyntenyAdapter-PHRULBP7.js → WalkTabixSyntenyAdapter-2SXFYW5W.js} +2 -2
  11. package/dist/chunks/{chunk-VEI7EAE6.js → chunk-32KSITI2.js} +2 -2
  12. package/dist/chunks/{chunk-XK4HHKSP.js → chunk-44DOTJB7.js} +2 -2
  13. package/dist/chunks/{chunk-HVDE2ZKA.js → chunk-4NUDB5AY.js} +1 -1
  14. package/dist/chunks/{chunk-HVDE2ZKA.js.map → chunk-4NUDB5AY.js.map} +1 -1
  15. package/dist/chunks/{chunk-47KLT4FL.js → chunk-7CZC4GOZ.js} +2 -2
  16. package/dist/chunks/{chunk-47KLT4FL.js.map → chunk-7CZC4GOZ.js.map} +1 -1
  17. package/dist/chunks/{chunk-6NR64IXK.js → chunk-AK6XQ7XZ.js} +1 -1
  18. package/dist/chunks/{chunk-6NR64IXK.js.map → chunk-AK6XQ7XZ.js.map} +1 -1
  19. package/dist/chunks/{chunk-PVRRW4PM.js → chunk-AZUO4NZ5.js} +2 -2
  20. package/dist/chunks/{chunk-PVRRW4PM.js.map → chunk-AZUO4NZ5.js.map} +1 -1
  21. package/dist/chunks/{chunk-75WJWJ45.js → chunk-BDBFDFIM.js} +2 -2
  22. package/dist/chunks/{chunk-75WJWJ45.js.map → chunk-BDBFDFIM.js.map} +1 -1
  23. package/dist/chunks/{chunk-CI6VQ2KV.js → chunk-FUKZO5AZ.js} +2 -2
  24. package/dist/chunks/{chunk-CI6VQ2KV.js.map → chunk-FUKZO5AZ.js.map} +1 -1
  25. package/dist/chunks/{chunk-477HYXB2.js → chunk-HPEC3JDC.js} +2 -2
  26. package/dist/chunks/{chunk-6YK4U5LT.js → chunk-JHUQMHCO.js} +3 -3
  27. package/dist/chunks/{chunk-6YK4U5LT.js.map → chunk-JHUQMHCO.js.map} +3 -3
  28. package/dist/chunks/{chunk-3M3UH5JQ.js → chunk-JKW2OX73.js} +1 -1
  29. package/dist/chunks/{chunk-3M3UH5JQ.js.map → chunk-JKW2OX73.js.map} +1 -1
  30. package/dist/chunks/{chunk-XTEZPFP4.js → chunk-LAOGU5VK.js} +2 -2
  31. package/dist/chunks/{chunk-XTEZPFP4.js.map → chunk-LAOGU5VK.js.map} +1 -1
  32. package/dist/chunks/chunk-LVRR7SZH.js +3 -0
  33. package/dist/chunks/chunk-LVRR7SZH.js.map +7 -0
  34. package/dist/chunks/{chunk-VZNECPSI.js → chunk-LYJ4FZFC.js} +2 -2
  35. package/dist/chunks/chunk-NB7ZUDO4.js +2 -0
  36. package/dist/chunks/{chunk-DFWLOMRU.js → chunk-P6WBR5MX.js} +2 -2
  37. package/dist/chunks/{chunk-AILGRHTE.js → chunk-QX7UU3CV.js} +2 -2
  38. package/dist/chunks/{chunk-AILGRHTE.js.map → chunk-QX7UU3CV.js.map} +1 -1
  39. package/dist/chunks/{chunk-SVF6WK42.js → chunk-VT5BHBO6.js} +2 -2
  40. package/dist/chunks/{chunk-SVF6WK42.js.map → chunk-VT5BHBO6.js.map} +1 -1
  41. package/dist/chunks/{chunk-IICQFAGJ.js → chunk-YGTSPKS5.js} +1 -1
  42. package/dist/chunks/{chunk-IICQFAGJ.js.map → chunk-YGTSPKS5.js.map} +1 -1
  43. package/dist/chunks/{chunk-UOWS2HEQ.js → chunk-YRAIRXY6.js} +2 -2
  44. package/dist/chunks/{chunk-UOWS2HEQ.js.map → chunk-YRAIRXY6.js.map} +3 -3
  45. package/dist/chunks/{renderSvg-W2VIM3IT.js → renderSvg-IZZ2QBWS.js} +2 -2
  46. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +2 -2
  47. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +2 -2
  48. package/package.json +2 -2
  49. package/src/GraphGenomeView/pane/walkRowViews.ts +3 -0
  50. package/src/version.ts +1 -1
  51. package/dist/chunks/chunk-SQBD75UZ.js +0 -2
  52. package/dist/chunks/chunk-YDJ6SDQM.js +0 -3
  53. package/dist/chunks/chunk-YDJ6SDQM.js.map +0 -7
  54. /package/dist/chunks/{GraphGenomeView-H2Z5NQW4.js.map → GraphGenomeView-SIOAXXAX.js.map} +0 -0
  55. /package/dist/chunks/{GraphTrackSettingsDialog-LFFJHC7F.js.map → GraphTrackSettingsDialog-ZSMGGYOZ.js.map} +0 -0
  56. /package/dist/chunks/{HighlightColorDialog-76RJSXSV.js.map → HighlightColorDialog-MS6UZ5QH.js.map} +0 -0
  57. /package/dist/chunks/{LinearGraphDisplay-VYPF26DJ.js.map → LinearGraphDisplay-56NPMGFE.js.map} +0 -0
  58. /package/dist/chunks/{MinigraphBubbleAdapter-WQUZTNDM.js.map → MinigraphBubbleAdapter-XRQSSGO7.js.map} +0 -0
  59. /package/dist/chunks/{RgfaTabixAdapter-K763K62E.js.map → RgfaTabixAdapter-2CHBK2KR.js.map} +0 -0
  60. /package/dist/chunks/{WalkFormsAdapter-WJTEKIOB.js.map → WalkFormsAdapter-5PVAUS7M.js.map} +0 -0
  61. /package/dist/chunks/{WalkTabixSyntenyAdapter-PHRULBP7.js.map → WalkTabixSyntenyAdapter-2SXFYW5W.js.map} +0 -0
  62. /package/dist/chunks/{chunk-VEI7EAE6.js.map → chunk-32KSITI2.js.map} +0 -0
  63. /package/dist/chunks/{chunk-XK4HHKSP.js.map → chunk-44DOTJB7.js.map} +0 -0
  64. /package/dist/chunks/{chunk-477HYXB2.js.map → chunk-HPEC3JDC.js.map} +0 -0
  65. /package/dist/chunks/{chunk-VZNECPSI.js.map → chunk-LYJ4FZFC.js.map} +0 -0
  66. /package/dist/chunks/{chunk-SQBD75UZ.js.map → chunk-NB7ZUDO4.js.map} +0 -0
  67. /package/dist/chunks/{chunk-DFWLOMRU.js.map → chunk-P6WBR5MX.js.map} +0 -0
  68. /package/dist/chunks/{renderSvg-W2VIM3IT.js.map → renderSvg-IZZ2QBWS.js.map} +0 -0
@@ -1,2 +1,2 @@
1
1
  function o(t){return t===void 0||t==="*"?void 0:t}function s(t){let e=t.split(" ");return{refName:e[0],start:+e[1],end:+e[2],segmentCount:+e[3],pathCount:+e[4],inversion:e[5]==="1",shortestAlleleLength:+e[6],longestAlleleLength:+e[7],segments:e[11],shortestAllele:o(e[12]),longestAllele:o(e[13])}}function u(t,e){return t.key!==void 0||e.key!==void 0?t.key===e.key:t.refName===e.refName&&t.start===e.start&&t.end===e.end}function i(t){return t.key??`${t.refName}:${t.start}-${t.end}`}function b(t){let{shortestAlleleLength:e,longestAlleleLength:n}=t;return e===n?`${n.toLocaleString()} bp`:`${e.toLocaleString()}-${n.toLocaleString()} bp`}var r=2147483647;function a(t){let{pathCount:e,segmentCount:n,inversion:l}=t;return[`${n} segments`,e===r?"more paths than gfatools counts":`up to ${e.toLocaleString()} paths`,...l?["inversion"]:[]].join(", ")}export{s as a,u as b,i as c,b as d,r as e,a as f};
2
- //# sourceMappingURL=chunk-IICQFAGJ.js.map
2
+ //# sourceMappingURL=chunk-YGTSPKS5.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@12.4.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-FX4RDMDN.js"],
3
+ "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@12.5.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-FX4RDMDN.js"],
4
4
  "sourcesContent": ["// src/bubbles/bubbleLine.ts\nfunction sequence(field) {\n return field === void 0 || field === \"*\" ? void 0 : field;\n}\nfunction parseBubbleLine(line) {\n const cols = line.split(\"\t\");\n return {\n refName: cols[0],\n start: +cols[1],\n end: +cols[2],\n segmentCount: +cols[3],\n pathCount: +cols[4],\n inversion: cols[5] === \"1\",\n shortestAlleleLength: +cols[6],\n longestAlleleLength: +cols[7],\n segments: cols[11],\n shortestAllele: sequence(cols[12]),\n longestAllele: sequence(cols[13])\n };\n}\nfunction sameBubble(a, b) {\n return a.key !== void 0 || b.key !== void 0 ? a.key === b.key : a.refName === b.refName && a.start === b.start && a.end === b.end;\n}\nfunction bubbleKey(b) {\n return b.key ?? `${b.refName}:${b.start}-${b.end}`;\n}\nfunction bubbleLabel(bubble) {\n const { shortestAlleleLength: min, longestAlleleLength: max } = bubble;\n return min === max ? `${max.toLocaleString()} bp` : `${min.toLocaleString()}-${max.toLocaleString()} bp`;\n}\nvar SATURATED_PATH_COUNT = 2147483647;\nfunction bubbleDescription(bubble) {\n const { pathCount, segmentCount, inversion } = bubble;\n return [\n `${segmentCount} segments`,\n pathCount === SATURATED_PATH_COUNT ? \"more paths than gfatools counts\" : `up to ${pathCount.toLocaleString()} paths`,\n ...inversion ? [\"inversion\"] : []\n ].join(\", \");\n}\n\nexport {\n parseBubbleLine,\n sameBubble,\n bubbleKey,\n bubbleLabel,\n SATURATED_PATH_COUNT,\n bubbleDescription\n};\n"],
5
5
  "mappings": "AACA,SAASA,EAASC,EAAO,CACvB,OAAOA,IAAU,QAAUA,IAAU,IAAM,OAASA,CACtD,CACA,SAASC,EAAgBC,EAAM,CAC7B,IAAMC,EAAOD,EAAK,MAAM,GAAG,EAC3B,MAAO,CACL,QAASC,EAAK,CAAC,EACf,MAAO,CAACA,EAAK,CAAC,EACd,IAAK,CAACA,EAAK,CAAC,EACZ,aAAc,CAACA,EAAK,CAAC,EACrB,UAAW,CAACA,EAAK,CAAC,EAClB,UAAWA,EAAK,CAAC,IAAM,IACvB,qBAAsB,CAACA,EAAK,CAAC,EAC7B,oBAAqB,CAACA,EAAK,CAAC,EAC5B,SAAUA,EAAK,EAAE,EACjB,eAAgBJ,EAASI,EAAK,EAAE,CAAC,EACjC,cAAeJ,EAASI,EAAK,EAAE,CAAC,CAClC,CACF,CACA,SAASC,EAAWC,EAAGC,EAAG,CACxB,OAAOD,EAAE,MAAQ,QAAUC,EAAE,MAAQ,OAASD,EAAE,MAAQC,EAAE,IAAMD,EAAE,UAAYC,EAAE,SAAWD,EAAE,QAAUC,EAAE,OAASD,EAAE,MAAQC,EAAE,GAChI,CACA,SAASC,EAAUD,EAAG,CACpB,OAAOA,EAAE,KAAO,GAAGA,EAAE,OAAO,IAAIA,EAAE,KAAK,IAAIA,EAAE,GAAG,EAClD,CACA,SAASE,EAAYC,EAAQ,CAC3B,GAAM,CAAE,qBAAsBC,EAAK,oBAAqBC,CAAI,EAAIF,EAChE,OAAOC,IAAQC,EAAM,GAAGA,EAAI,eAAe,CAAC,MAAQ,GAAGD,EAAI,eAAe,CAAC,IAAIC,EAAI,eAAe,CAAC,KACrG,CACA,IAAIC,EAAuB,WAC3B,SAASC,EAAkBJ,EAAQ,CACjC,GAAM,CAAE,UAAAK,EAAW,aAAAC,EAAc,UAAAC,CAAU,EAAIP,EAC/C,MAAO,CACL,GAAGM,CAAY,YACfD,IAAcF,EAAuB,kCAAoC,SAASE,EAAU,eAAe,CAAC,SAC5G,GAAGE,EAAY,CAAC,WAAW,EAAI,CAAC,CAClC,EAAE,KAAK,IAAI,CACb",
6
6
  "names": ["sequence", "field", "parseBubbleLine", "line", "cols", "sameBubble", "a", "b", "bubbleKey", "bubbleLabel", "bubble", "min", "max", "SATURATED_PATH_COUNT", "bubbleDescription", "pathCount", "segmentCount", "inversion"]
@@ -1,2 +1,2 @@
1
- import{c as se,o as re,r as ht}from"./chunk-PVRRW4PM.js";import{a as Tt,c as ne,d as Gt,e as Pt}from"./chunk-3M3UH5JQ.js";var Se="ws",Ae="we",oe=["elsewhere","break","end"],Te={missing:"not in the graph",elsewhere:"on nodes filed elsewhere",unknown:"gap, cause unknown",abridged:"abridged: steps not loaded",deleted:"deleted in this haplotype"},Pe="outside the extracted subgraph";function ie(t,e,s){if(!e&&!s)return[{bp:t}];let n=Math.min(e?.trimmed??0,t),r=Math.min(s?.trimmed??0,t-n),a=t-n-r,p=e?.kind==="break"?Math.min(e.bp,a):0;a-=p;let l=s?.kind==="break"?Math.min(s.bp,a):0;a-=l;let d=[e,s].find(f=>f?.kind==="elsewhere");return[{bp:n},{bp:p,cause:"missing"},d?.kind==="elsewhere"?{bp:a,cause:"elsewhere",chunk:d.chunk}:{bp:a,cause:"unknown"},{bp:l,cause:"missing"},{bp:r}].filter(f=>f.bp>0)}function Lt(t,e){let s=t.bp[e],n=t.chunkRefs[e];return ce(t.kindNames[t.kinds[e]],Number.isNaN(s)?void 0:s,t.trimmed[e],n<0?void 0:{refName:t.chunkRefNames[n],start:t.chunkStarts[e]})}function ce(t,e,s,n){let r=s>0?{trimmed:s}:{};return t==="elsewhere"&&n?{kind:t,chunk:n,...e===void 0?{}:{bp:e},...r}:t==="break"&&e!==void 0?{kind:t,bp:e,...n?{chunk:n}:{},...r}:t==="end"?{kind:t,...r}:void 0}function ae(t){let[e,...s]=t.split(","),n,r=0,a;for(let p of s)if(p.startsWith("bp="))n=+p.slice(3);else if(p.startsWith("trimmed="))r=+p.slice(8);else if(p.startsWith("chunk=")){let l=p.lastIndexOf(":");a={refName:p.slice(6,l),start:+p.slice(l+1)}}return ce(e,n,r,a)}function Wt(t,e){return{...t?{before:t}:{},...e?{after:e}:{}}}function _e(t){let e=t[Se],s=t[Ae];return Wt(typeof e=="string"?ae(e):void 0,typeof s=="string"?ae(s):void 0)}var Ue=class{constructor(){this.kinds=[],this.bp=[],this.trimmed=[],this.chunkRefs=[],this.chunkStarts=[],this.chunkRefNames=[],this.refIndex=new Map}push(t){this.kinds.push(oe.indexOf(t.kind)),this.bp.push("bp"in t&&t.bp!==void 0?t.bp:NaN),this.trimmed.push(t.trimmed??0);let e="chunk"in t?t.chunk:void 0;if(e){let s=this.refIndex.get(e.refName);s===void 0&&(s=this.chunkRefNames.length,this.refIndex.set(e.refName,s),this.chunkRefNames.push(e.refName)),this.chunkRefs.push(s),this.chunkStarts.push(e.start)}else this.chunkRefs.push(-1),this.chunkStarts.push(NaN)}table(){return{kinds:Uint8Array.from(this.kinds),kindNames:[...oe],bp:Float64Array.from(this.bp),trimmed:Float64Array.from(this.trimmed),chunkRefs:Int32Array.from(this.chunkRefs),chunkStarts:Float64Array.from(this.chunkStarts),chunkRefNames:this.chunkRefNames}}};function Ie(t,e,s){return e===0?t:`${t}:${e}-${s}`}function Dt(t,e){let s=t.names[e],n=Pt(s),r=t.starts[e],a=t.abridgedSteps?.[e]??Number.NaN,p=Number.isNaN(a)?{}:{abridged:{steps:a,bp:t.abridgedBp?.[e]??0}};return n?{name:`${n.sample}#${n.haplotype}#${n.contig}`,start:r,...n,...Wt(t.before&&Lt(t.before,e),t.after&&Lt(t.after,e)),...p}:{name:Ie(s,r,t.ends[e]),start:r}}function Re(t,e,s,n){let r=new Int32Array(s+1);for(let d of t)r[d+1]++;for(let d=0;d<s;d++)r[d+1]+=r[d];let a=r.slice(0,s),p=new Int32Array(t.length);t.forEach((d,k)=>{p[a[d]++]=e[k]});let l=new Int32Array(n.length).fill(-1);return Array.from({length:s},(d,k)=>{let f=[];for(let T=r[k];T<r[k+1];T++){let N=p[T];l[N]!==k&&(l[N]=k,f.push(n[N]))}return f})}function Vt({nodes:t,links:e,walks:s},n){let r=new Uint8Array(t.names.length),a=(l,d)=>{r[l]===0&&(r[l]=d?2:1)};for(let l=0;l<e.from.length;l++)a(e.from[l],e.strands[l]&1),a(e.to[l],e.strands[l]&2);let p=s.offsets[s.names.length]??0;for(let l=0;l<p;l++){let d=s.steps[l];a(d,s.reversed[l]),n&&n[d]++}return t.names.map((l,d)=>`${l}${r[d]===2?"-":"+"}`)}function De({nodes:t,links:e,walks:s,skips:n},r="Imported GFA"){let a=t.names.length,p=t.lengths.length,l=[];for(let o=0;o<s.names.length;o++)s.offsets[o+1]>s.offsets[o]&&l.push(o);let d=new Int32Array(a),k=Vt({nodes:t,links:e,walks:s},d),f=[];for(let o=0;o<p;o++){let w=t.refs[o];f.push({id:k[o],name:t.names[o],length:t.lengths[o],depth:Math.max(d[o],1),stable:w<0?void 0:{refName:t.refNames[w],start:t.starts[o],rank:t.ranks[o]},samples:void 0})}let T=[],N=new Array(a),O=(o,w)=>{let g=N[o];if(g){for(let I=0;I<g.length;I+=2)if(g[I]===w)return g[I+1]}},B=(o,w,g)=>{let I=N[o];I?I.push(w,g):N[o]=[w,g]},dt=[],Y=0;for(let o=0;o<e.from.length;o++){let w=e.from[o],g=e.to[o];T.push({from:k[w],to:k[g],fromStrand:e.strands[o]&1?"-":"+",toStrand:e.strands[o]&2?"-":"+"});let I=O(w,g);I===void 0&&(I=Y++,B(w,g,I),B(g,w,I)),dt.push(I)}let U=new Int32Array(a+1);for(let o=0;o<a;o++)U[o+1]=U[o]+(N[o]?.length??0)/2;let pt=new Int32Array(U[a]),mt=new Int32Array(U[a]);N.forEach((o,w)=>{for(let g=0;g<o.length;g+=2)pt[U[w]+g/2]=o[g],mt[U[w]+g/2]=o[g+1]});let tt=(o,w)=>{for(let g=U[o];g<U[o+1];g++)if(pt[g]===w)return mt[g];return-1},ut=new Map,P=[],et=new Int32Array(s.offsets[s.names.length]??0),st=new Int32Array(et.length),Z=0,X=new Int32Array(Y).fill(-1),F=[],wt=[],_=s.offsets[s.names.length]??0,nt=new Int32Array(_),gt=new Float64Array(_),St=new Uint8Array(_),C=new Int32Array(a).fill(-1),$=[],E=[0],rt=[],At=new Map,L=[];for(let o of l){let w=Dt(s,o),{start:g,name:I}=w,z=w.sample===void 0?s.names[o]:I,K=ut.get(z);K===void 0&&(K=P.length,ut.set(z,K),P.push(z),rt.push(Tt(z)));let at=At.get(I);at===void 0&&(at=L.length,At.set(I,at),L.push(I));let _t=rt[K],Nt=s.offsets[o],It=new Array(s.offsets[o+1]-Nt),bt=g,i=-1;for(let h=Nt;h<s.offsets[o+1];h++){let b=s.steps[h];It[h-Nt]=k[b],C[b]===-1&&(C[b]=E.at(-1),E.push(C[b]+d[b]),$.push(b));let M=C[b]++;if(nt[M]=K,gt[M]=bt,St[M]=s.reversed[h],bt+=b<p?t.lengths[b]:0,i>=0){let x=tt(i,b);x>=0&&X[x]!==o&&(X[x]=o,et[Z]=x,st[Z++]=at)}i=b}F.push({...w,nodeIds:It}),wt.push({name:z,sample:_t,start:g,length:bt-g})}let H=Re(et.subarray(0,Z),st,Y,L);T.forEach((o,w)=>{let g=H[dt[w]];g.length>0&&(o.pathIds=g)});let ot=l.length>0;return{name:r,nodes:f,edges:T,paths:ot?F:void 0,anchorPaths:ot?wt:void 0,pathVisits:ot?new re({segments:$.map(o=>t.names[o]),offsets:Int32Array.from(E),path:nt.subarray(0,E.at(-1)),start:gt.subarray(0,E.at(-1)),reversed:St.subarray(0,E.at(-1)),paths:P,samples:rt}):void 0,anchoredBy:f.some(o=>o.stable)?"tags":void 0,...n?.names.length?{skips:n}:{}}}var Zt=1,de=2,kt=4,pe=[void 0,"missing","elsewhere","unknown","abridged","deleted"],me=3,fe=t=>pe.indexOf(t)<<me;function ue(t,e,s){return e!==void 0&&t.includes(e)?e:t.find(n=>s.has(n))??t[0]}function $e(t){return ue((t.paths??[]).map(e=>ht(e.name).name),t.referencePath,new Set(t.nodes.flatMap(e=>e.stable?.rank===0?[e.stable.refName]:[])))}var ge=t=>{let e=t&&Gt(t);return s=>s!==void 0&&(s===t||s===e)};function xe(t){let e=new Map,s=[],n=[],r=N=>{let O=e.get(N);return O===void 0&&(O=s.length,e.set(N,O),s.push(N),n.push(0)),O},a=$e(t),p=ge(a),l=new Map;for(let N of t.nodes){let O=r(N.id);n[O]=N.length,N.stable?.rank===0&&p(N.stable.refName)&&l.set(O,N.stable.start)}let d=t.paths??[],k=new Int32Array(d.length),f=new Int32Array(d.length),T=[];return d.forEach((N,O)=>{k[O]=T.length;for(let B of N.nodeIds)T.push(r(B));f[O]=T.length}),{heads:d,from:k,to:f,steps:Int32Array.from(T),lengths:Int32Array.from(n),names:s,reference:a,stableStart:N=>l.get(N)??Number.NaN}}function Me(t,e,s){let{nodes:n,walks:r}=t,a=[];for(let f=0;f<r.names.length;f++)r.offsets[f+1]>r.offsets[f]&&a.push(f);let p=a.map(f=>Dt(r,f)),l=new Set;for(let f=0;f<n.lengths.length;f++)n.refs[f]>=0&&n.ranks[f]===0&&l.add(n.refNames[n.refs[f]]);let d=ue(p.map(f=>ht(f.name).name),e,l),k=ge(d);return{heads:p,from:Int32Array.from(a,f=>r.offsets[f]),to:Int32Array.from(a,f=>r.offsets[f+1]),steps:r.steps,lengths:n.lengths,names:s?Vt(t):n.names,reference:d,stableStart:f=>f<n.lengths.length&&n.ranks[f]===0&&k(n.refNames[n.refs[f]])?n.starts[f]:Number.NaN}}function Ht(t){return t.sample??Tt(t.name)}function le(t){return t.haplotype!==void 0&&t.sample!==void 0?`${t.sample}#${t.haplotype}`:Ht(t)}var he=class{constructor(t){this.offsets=[0],this.values=Array.from({length:t},()=>[])}get length(){return this.values[0].length}push(t,e,s,n,r){let a=this.values;a[0].push(t),a[1].push(e),a[2].push(s),a[3].push(n),r!==void 0&&a[4].push(r)}endRow(){this.offsets.push(this.length)}reorder(t,e){let s=new Uint32Array(t.length+1);t.forEach((r,a)=>{s[a+1]=s[a]+this.offsets[r+1]-this.offsets[r]});let n=e.map((r,a)=>{let p=this.values[a],l=r(this.length),d=0;for(let k of t)for(let f=this.offsets[k];f<this.offsets[k+1];f++)l[d++]=p[f];return l});return{offsets:s,columns:n}}},yt=t=>new Float64Array(t);function qe(t,e,s={}){let{heads:n,from:r,to:a,steps:p,lengths:l,names:d,reference:k,stableStart:f}="walks"in t?Me(t,s.referencePath,s.visits):xe(t),T=l.length,N=i=>i<T?l[i]:0,O=i=>ht(n[i].name).name,B=i=>n[i].start,dt=(i,h)=>(B(i)??0)-(B(h)??0),Y=n.map((i,h)=>h),U=Y.filter(i=>O(i)===k).sort(dt),pt=U[0],mt=Y.filter(i=>O(i)!==k),{skips:tt}=t;if(pt===void 0||mt.length===0&&!tt?.names.length)return;let ut=se(mt,O),P=new Float64Array(d.length).fill(Number.NaN),et=new Float64Array(d.length),st=new Map,Z=-1/0,X=1/0,F=e&&e.end>e.start?e:void 0;for(let i of U){let h=B(i)??0;for(let b=r[i],M=a[i];b<M;b++){let x=p[b],A=N(x);if(Number.isNaN(P[x]))P[x]=h,et[x]=h+A,F&&(h+A<=F.start&&(Z=Math.max(Z,h+A)),h>=F.end&&(X=Math.min(X,h)));else{let W=st.get(x);W?W.push(h):st.set(x,[P[x],h])}h+=A}}let wt=F===void 0||Z>-1/0&&X<1/0,_=new he(5),nt=[],gt=new Map,St=i=>{if(!i)return-1;let h=`${i.refName}:${i.start}`,b=gt.get(h);return b===void 0&&(b=nt.length,gt.set(h,b),nt.push(i)),b},C=s.visits?new he(4):void 0,$=new Int32Array(0),E=new Float64Array(0),rt=i=>{let h=n[i[0]],b=[...i].sort(dt),M=b.length-1,x=0;for(let c of b)M+=a[c]-r[c]+(n[c].abridged?1:0),x+=n[c].abridged?.steps??0;M>$.length&&($=new Int32Array(M*2),E=new Float64Array(M*2));let A=0,W=!1,Rt,$t,q=new Map,Ut=0;for(let c of b){let m=B(c),y=m===void 0||Rt===void 0?0:m-Rt;(m===void 0||y<0)&&(W=!0),y<0&&n[$t].abridged&&(Ut-=y);let S=Math.min(Ut,Math.max(y,0));Ut-=S;let u=y-S;u>0&&(q.set(A,ie(u,$t===void 0?void 0:n[$t].after,n[c].before)),$[A]=-u,E[A++]=Rt);let v=m??0,R=n[c].abridged;for(let j=r[c],Q=a[c];j<Q;j++){let G=p[j],V=R?R.bp-(v-(m??0))-N(G):0;V>0&&j===Q-1&&j>r[c]&&(q.set(A,[{bp:V,cause:"abridged"}]),$[A]=-V,E[A++]=v,v+=V),$[A]=G,E[A++]=v,v+=N(G)}Rt=m===void 0?void 0:v,$t=c}let Xt=c=>c>=0&&c<A&&$[c]>=0&&!Number.isNaN(P[$[c]]),jt=c=>{let m=$[c];return E[c]+(m<0?-m:N(m))},Ne=(c,m)=>{let y=c>=0?c:m,S=-1;for(let G=1;S<0&&G<A;G++)S=[y-G,y+G].find(Xt)??-1;if(S<0)return;let u=S>y==P[$[S]]>P[$[y]],v=u===(y===c),R=v?A-1:0,j=Xt(R);return{stop:{contigEnds:j,shortBp:j?Math.max(0,F.start-et[$[R]],P[$[R]]-F.end):0},lo:v?y+1:0,hi:v?A:y,backward:!u,axisStart:u?v?jt(y):E[0]:v?jt(A-1):E[y]}},xt=0,Mt=A,it=!1,zt=!0,vt=-1,Kt=-1,Bt,qt,Jt=(c,m)=>{let S=q.get(c)?.[0];if(m<=0||S?.cause!=="abridged")return 0;let u=Math.min(m,S.bp);return q.set(c,S.bp>u?[{...S,bp:S.bp-u}]:[]),$[c]+=u,u},Qt=c=>q.get(c)?.[0]?.cause==="abridged",be=c=>{let m=$[c];return m<0||q.has(c)?Number.NaN:Number.isNaN(P[m])&&(Qt(c-1)||Qt(c+1))?f(m):P[m]},Ot=0,Yt=0;if(F&&wt){let c=-1,m=-1,y=-1/0,S=1/0;for(let u=0;u<A;u++){let v=be(u);if(!Number.isNaN(v)){let R=v+N($[u]);R<=F.start&&R>y&&(y=R,c=u),v>=F.end&&v<S&&(S=v,m=u)}}if(c<0||m<0){zt=!1;let u=c>=0||m>=0?Ne(c,m):void 0;u&&({lo:xt,hi:Mt,backward:it,axisStart:Bt,stop:qt}=u)}else{xt=Math.min(c,m)+1,Mt=Math.max(c,m),it=c>m,vt=c,Kt=m;let u=it?-1:1;Ot=Jt(c+u,Z-y),Yt=Jt(m-u,S-X)}}let Et=h.contig??Gt(ht(h.name).name),ve=W||A===0?void 0:Bt!==void 0?{contig:Et,start:Bt,reversed:it}:vt<0?{contig:Et,start:E[0],reversed:!1}:vt<Kt?{contig:Et,start:jt(vt)+Ot,reversed:!1}:{contig:Et,start:E[vt]-Ot,reversed:!0},ct=0,te=0,ee=0,ft=0,D=-1,lt=0,J=Number.NaN,Ft=Number.NaN,ke=c=>{let m=st.get(c);if(!m||Number.isNaN(Ft))return P[c];let y=N(c),S=m[0],u=1/0;for(let v of m){let R=Math.min(Math.abs(v-Ft),Math.abs(v+y-Ft));R<u&&(S=v,u=R)}return S},[,Ct,ye,we]=_.values;for(let c=xt;c<Mt;c++){let m=it?Mt-1-(c-xt):c,y=$[m],S=q.get(m);if(S){for(let V of it?[...S].reverse():S)_.push(ct,V.bp,Number.NaN,kt|fe(V.cause),St(V.chunk)),ct+=V.bp;D=_.length-1,lt=kt,J=Number.NaN,ee+=-y,ft=0;continue}let u=N(y),v=ke(y),R=!Number.isNaN(v);C?.push(y,ct,u,R?1:0);let j=D>=0&&!Number.isNaN(J),Q=R&&j&&ft>=0&&J+(Ct[D]??0)===v,G=R&&j&&ft<=0&&v+u===J;!R&&D>=0&&!(lt&(Zt|kt))?Ct[D]+=u:Q||G?(Ct[D]+=u,Q||(J=v,ye[D]=v,lt|=de,we[D]=lt),ft=Q?1:-1):(lt=R?Zt:0,J=R?v:Number.NaN,_.push(ct,u,J,lt,-1),D=_.length-1,ft=0),ct+=u,R?Ft=ft<0?v:v+u:te+=u}return _.endRow(),C?.endRow(),{name:h.name,label:le(h),sample:Ht(h),haplotype:h.haplotype,bp:ct,offReferenceBp:te,gapBp:ee,complete:zt,stop:qt,axis:ve,...x>0?{abridgedSteps:x}:{},...Ot+Yt>0?{estimated:!0}:{}}},At=(i,h,b,M)=>{let x=M?Math.max(h,M.start):h,A=Math.max((M?Math.min(b,M.end):b)-x,0);_.push(x-(M?M.start:h),A,Number.NaN,kt|fe("deleted"),-1),_.endRow(),C?.endRow();let W={name:i,...Pt(i)};return{name:i,label:le(W),sample:Ht(W),haplotype:W.haplotype,bp:0,offReferenceBp:0,gapBp:A,complete:!0,stop:void 0,axis:void 0}},L=rt(U),H=[...ut.values()].map((i,h)=>({meta:rt(i),row:h+1})),ot=new Set(ut.keys()),{axis:o}=L,w=o?{start:o.start,end:o.start+L.bp+L.gapBp}:F;tt?.names.forEach((i,h)=>{let b=ht(i).name;ot.has(b)||(ot.add(b),H.push({meta:At(b,tt.starts[h],tt.ends[h],w),row:H.length+1}))});let g=[L,...H.map(i=>i.meta)];if(new Set(g.map(i=>i.label)).size<g.length)for(let i of g)i.label=ne(i.name)??i.label;H.sort((i,h)=>Number(h.meta.complete)-Number(i.meta.complete)||h.meta.bp-i.meta.bp||i.meta.label.localeCompare(h.meta.label));let I=[0,...H.map(i=>i.row)],{offsets:z,columns:K}=_.reorder(I,[yt,yt,yt,i=>new Uint8Array(i),i=>new Int32Array(i)]),[at,_t,Nt,It,bt]=K;return{origin:F?F.start:B(pt)??0,rows:[L,...H.map(i=>i.meta)],offsets:z,start:at,bp:_t,referenceStart:Nt,flags:It,chunk:bt,chunks:nt,visits:C&&Oe(C,I,d)}}function Oe(t,e,s){let{offsets:n,columns:r}=t.reorder(e,[k=>new Int32Array(k),yt,yt,k=>new Uint8Array(k)]),[a,p,l,d]=r;return{offsets:n,node:a,start:p,bp:l,onReference:d,names:s}}function Ee(t,e){let s=t.flags[e],n={start:t.start[e],bp:t.bp[e],onReference:(s&Zt)!==0};if(s&kt){n.gap=!0;let r=pe[s>>me&7];r&&(n.cause=r);let a=t.chunks[t.chunk[e]];a&&(n.chunk=a)}else n.referenceStart=Number.isNaN(t.referenceStart[e])?void 0:t.referenceStart[e];return s&de&&(n.reversed=!0),n}function Fe(t,e){let s=[];for(let n=t.offsets[e];n<t.offsets[e+1];n++)s.push({node:t.names[t.node[n]],start:t.start[n],bp:t.bp[n],onReference:t.onReference[n]===1});return s}function Je(t,e){let s=t.rows.map((n,r)=>{let a=[];for(let p=t.offsets[r];p<t.offsets[r+1];p++)a.push(Ee(t,p));return{...n,runs:a,visits:t.visits&&Fe(t.visits,r)}});return{origin:t.origin,unit:e,reference:s[0],rows:s.slice(1)}}export{Se as a,Ae as b,Te as c,Pe as d,ie as e,ae as f,_e as g,Ue as h,Dt as i,De as j,$e as k,qe as l,Je as m};
2
- //# sourceMappingURL=chunk-UOWS2HEQ.js.map
1
+ import{c as se,o as re,r as ht}from"./chunk-AZUO4NZ5.js";import{a as Tt,c as ne,d as Gt,e as Pt}from"./chunk-JKW2OX73.js";var Se="ws",Ae="we",oe=["elsewhere","break","end"],Te={missing:"not in the graph",elsewhere:"on nodes filed elsewhere",unknown:"gap, cause unknown",abridged:"abridged: steps not loaded",deleted:"deleted in this haplotype"},Pe="outside the extracted subgraph";function ie(t,e,s){if(!e&&!s)return[{bp:t}];let n=Math.min(e?.trimmed??0,t),r=Math.min(s?.trimmed??0,t-n),a=t-n-r,p=e?.kind==="break"?Math.min(e.bp,a):0;a-=p;let l=s?.kind==="break"?Math.min(s.bp,a):0;a-=l;let d=[e,s].find(f=>f?.kind==="elsewhere");return[{bp:n},{bp:p,cause:"missing"},d?.kind==="elsewhere"?{bp:a,cause:"elsewhere",chunk:d.chunk}:{bp:a,cause:"unknown"},{bp:l,cause:"missing"},{bp:r}].filter(f=>f.bp>0)}function Lt(t,e){let s=t.bp[e],n=t.chunkRefs[e];return ce(t.kindNames[t.kinds[e]],Number.isNaN(s)?void 0:s,t.trimmed[e],n<0?void 0:{refName:t.chunkRefNames[n],start:t.chunkStarts[e]})}function ce(t,e,s,n){let r=s>0?{trimmed:s}:{};return t==="elsewhere"&&n?{kind:t,chunk:n,...e===void 0?{}:{bp:e},...r}:t==="break"&&e!==void 0?{kind:t,bp:e,...n?{chunk:n}:{},...r}:t==="end"?{kind:t,...r}:void 0}function ae(t){let[e,...s]=t.split(","),n,r=0,a;for(let p of s)if(p.startsWith("bp="))n=+p.slice(3);else if(p.startsWith("trimmed="))r=+p.slice(8);else if(p.startsWith("chunk=")){let l=p.lastIndexOf(":");a={refName:p.slice(6,l),start:+p.slice(l+1)}}return ce(e,n,r,a)}function Wt(t,e){return{...t?{before:t}:{},...e?{after:e}:{}}}function _e(t){let e=t[Se],s=t[Ae];return Wt(typeof e=="string"?ae(e):void 0,typeof s=="string"?ae(s):void 0)}var Ue=class{constructor(){this.kinds=[],this.bp=[],this.trimmed=[],this.chunkRefs=[],this.chunkStarts=[],this.chunkRefNames=[],this.refIndex=new Map}push(t){this.kinds.push(oe.indexOf(t.kind)),this.bp.push("bp"in t&&t.bp!==void 0?t.bp:NaN),this.trimmed.push(t.trimmed??0);let e="chunk"in t?t.chunk:void 0;if(e){let s=this.refIndex.get(e.refName);s===void 0&&(s=this.chunkRefNames.length,this.refIndex.set(e.refName,s),this.chunkRefNames.push(e.refName)),this.chunkRefs.push(s),this.chunkStarts.push(e.start)}else this.chunkRefs.push(-1),this.chunkStarts.push(NaN)}table(){return{kinds:Uint8Array.from(this.kinds),kindNames:[...oe],bp:Float64Array.from(this.bp),trimmed:Float64Array.from(this.trimmed),chunkRefs:Int32Array.from(this.chunkRefs),chunkStarts:Float64Array.from(this.chunkStarts),chunkRefNames:this.chunkRefNames}}};function Ie(t,e,s){return e===0?t:`${t}:${e}-${s}`}function Dt(t,e){let s=t.names[e],n=Pt(s),r=t.starts[e],a=t.abridgedSteps?.[e]??Number.NaN,p=Number.isNaN(a)?{}:{abridged:{steps:a,bp:t.abridgedBp?.[e]??0}};return n?{name:`${n.sample}#${n.haplotype}#${n.contig}`,start:r,...n,...Wt(t.before&&Lt(t.before,e),t.after&&Lt(t.after,e)),...p}:{name:Ie(s,r,t.ends[e]),start:r}}function Re(t,e,s,n){let r=new Int32Array(s+1);for(let d of t)r[d+1]++;for(let d=0;d<s;d++)r[d+1]+=r[d];let a=r.slice(0,s),p=new Int32Array(t.length);t.forEach((d,k)=>{p[a[d]++]=e[k]});let l=new Int32Array(n.length).fill(-1);return Array.from({length:s},(d,k)=>{let f=[];for(let T=r[k];T<r[k+1];T++){let b=p[T];l[b]!==k&&(l[b]=k,f.push(n[b]))}return f})}function Vt({nodes:t,links:e,walks:s},n){let r=new Uint8Array(t.names.length),a=(l,d)=>{r[l]===0&&(r[l]=d?2:1)};for(let l=0;l<e.from.length;l++)a(e.from[l],e.strands[l]&1),a(e.to[l],e.strands[l]&2);let p=s.offsets[s.names.length]??0;for(let l=0;l<p;l++){let d=s.steps[l];a(d,s.reversed[l]),n&&n[d]++}return t.names.map((l,d)=>`${l}${r[d]===2?"-":"+"}`)}function De({nodes:t,links:e,walks:s,skips:n},r="Imported GFA"){let a=t.names.length,p=t.lengths.length,l=[];for(let o=0;o<s.names.length;o++)s.offsets[o+1]>s.offsets[o]&&l.push(o);let d=new Int32Array(a),k=Vt({nodes:t,links:e,walks:s},d),f=[];for(let o=0;o<p;o++){let w=t.refs[o];f.push({id:k[o],name:t.names[o],length:t.lengths[o],depth:Math.max(d[o],1),stable:w<0?void 0:{refName:t.refNames[w],start:t.starts[o],rank:t.ranks[o]},samples:void 0})}let T=[],b=new Array(a),O=(o,w)=>{let g=b[o];if(g){for(let I=0;I<g.length;I+=2)if(g[I]===w)return g[I+1]}},B=(o,w,g)=>{let I=b[o];I?I.push(w,g):b[o]=[w,g]},dt=[],Y=0;for(let o=0;o<e.from.length;o++){let w=e.from[o],g=e.to[o];T.push({from:k[w],to:k[g],fromStrand:e.strands[o]&1?"-":"+",toStrand:e.strands[o]&2?"-":"+"});let I=O(w,g);I===void 0&&(I=Y++,B(w,g,I),B(g,w,I)),dt.push(I)}let U=new Int32Array(a+1);for(let o=0;o<a;o++)U[o+1]=U[o]+(b[o]?.length??0)/2;let pt=new Int32Array(U[a]),mt=new Int32Array(U[a]);b.forEach((o,w)=>{for(let g=0;g<o.length;g+=2)pt[U[w]+g/2]=o[g],mt[U[w]+g/2]=o[g+1]});let tt=(o,w)=>{for(let g=U[o];g<U[o+1];g++)if(pt[g]===w)return mt[g];return-1},ut=new Map,P=[],et=new Int32Array(s.offsets[s.names.length]??0),st=new Int32Array(et.length),Z=0,X=new Int32Array(Y).fill(-1),F=[],wt=[],_=s.offsets[s.names.length]??0,nt=new Int32Array(_),gt=new Float64Array(_),St=new Uint8Array(_),C=new Int32Array(a).fill(-1),$=[],E=[0],rt=[],At=new Map,L=[];for(let o of l){let w=Dt(s,o),{start:g,name:I}=w,z=w.sample===void 0?s.names[o]:I,K=ut.get(z);K===void 0&&(K=P.length,ut.set(z,K),P.push(z),rt.push(Tt(z)));let at=At.get(I);at===void 0&&(at=L.length,At.set(I,at),L.push(I));let _t=rt[K],Nt=s.offsets[o],It=new Array(s.offsets[o+1]-Nt),bt=g,i=-1;for(let h=Nt;h<s.offsets[o+1];h++){let N=s.steps[h];It[h-Nt]=k[N],C[N]===-1&&(C[N]=E.at(-1),E.push(C[N]+d[N]),$.push(N));let M=C[N]++;if(nt[M]=K,gt[M]=bt,St[M]=s.reversed[h],bt+=N<p?t.lengths[N]:0,i>=0){let x=tt(i,N);x>=0&&X[x]!==o&&(X[x]=o,et[Z]=x,st[Z++]=at)}i=N}F.push({...w,nodeIds:It}),wt.push({name:z,sample:_t,start:g,length:bt-g})}let H=Re(et.subarray(0,Z),st,Y,L);T.forEach((o,w)=>{let g=H[dt[w]];g.length>0&&(o.pathIds=g)});let ot=l.length>0;return{name:r,nodes:f,edges:T,paths:ot?F:void 0,anchorPaths:ot?wt:void 0,pathVisits:ot?new re({segments:$.map(o=>t.names[o]),offsets:Int32Array.from(E),path:nt.subarray(0,E.at(-1)),start:gt.subarray(0,E.at(-1)),reversed:St.subarray(0,E.at(-1)),paths:P,samples:rt}):void 0,anchoredBy:f.some(o=>o.stable)?"tags":void 0,...n?.names.length?{skips:n}:{}}}var Zt=1,de=2,kt=4,pe=[void 0,"missing","elsewhere","unknown","abridged","deleted"],me=3,fe=t=>pe.indexOf(t)<<me;function ue(t,e,s){return e!==void 0&&t.includes(e)?e:t.find(n=>s.has(n))??t[0]}function $e(t){return ue((t.paths??[]).map(e=>ht(e.name).name),t.referencePath,new Set(t.nodes.flatMap(e=>e.stable?.rank===0?[e.stable.refName]:[])))}var ge=t=>{let e=t&&Gt(t);return s=>s!==void 0&&(s===t||s===e)};function xe(t){let e=new Map,s=[],n=[],r=b=>{let O=e.get(b);return O===void 0&&(O=s.length,e.set(b,O),s.push(b),n.push(0)),O},a=$e(t),p=ge(a),l=new Map;for(let b of t.nodes){let O=r(b.id);n[O]=b.length,b.stable?.rank===0&&p(b.stable.refName)&&l.set(O,b.stable.start)}let d=t.paths??[],k=new Int32Array(d.length),f=new Int32Array(d.length),T=[];return d.forEach((b,O)=>{k[O]=T.length;for(let B of b.nodeIds)T.push(r(B));f[O]=T.length}),{heads:d,from:k,to:f,steps:Int32Array.from(T),lengths:Int32Array.from(n),names:s,reference:a,stableStart:b=>l.get(b)??Number.NaN}}function Me(t,e,s){let{nodes:n,walks:r}=t,a=[];for(let f=0;f<r.names.length;f++)r.offsets[f+1]>r.offsets[f]&&a.push(f);let p=a.map(f=>Dt(r,f)),l=new Set;for(let f=0;f<n.lengths.length;f++)n.refs[f]>=0&&n.ranks[f]===0&&l.add(n.refNames[n.refs[f]]);let d=ue(p.map(f=>ht(f.name).name),e,l),k=ge(d);return{heads:p,from:Int32Array.from(a,f=>r.offsets[f]),to:Int32Array.from(a,f=>r.offsets[f+1]),steps:r.steps,lengths:n.lengths,names:s?Vt(t):n.names,reference:d,stableStart:f=>f<n.lengths.length&&n.ranks[f]===0&&k(n.refNames[n.refs[f]])?n.starts[f]:Number.NaN}}function Ht(t){return t.sample??Tt(t.name)}function le(t){return t.haplotype!==void 0&&t.sample!==void 0?`${t.sample}#${t.haplotype}`:Ht(t)}var he=class{constructor(t){this.offsets=[0],this.values=Array.from({length:t},()=>[])}get length(){return this.values[0].length}push(t,e,s,n,r){let a=this.values;a[0].push(t),a[1].push(e),a[2].push(s),a[3].push(n),r!==void 0&&a[4].push(r)}endRow(){this.offsets.push(this.length)}reorder(t,e){let s=new Uint32Array(t.length+1);t.forEach((r,a)=>{s[a+1]=s[a]+this.offsets[r+1]-this.offsets[r]});let n=e.map((r,a)=>{let p=this.values[a],l=r(this.length),d=0;for(let k of t)for(let f=this.offsets[k];f<this.offsets[k+1];f++)l[d++]=p[f];return l});return{offsets:s,columns:n}}},yt=t=>new Float64Array(t);function qe(t,e,s={}){let{heads:n,from:r,to:a,steps:p,lengths:l,names:d,reference:k,stableStart:f}="walks"in t?Me(t,s.referencePath,s.visits):xe(t),T=l.length,b=i=>i<T?l[i]:0,O=i=>ht(n[i].name).name,B=i=>n[i].start,dt=(i,h)=>(B(i)??0)-(B(h)??0),Y=n.map((i,h)=>h),U=Y.filter(i=>O(i)===k).sort(dt),pt=U[0],mt=Y.filter(i=>O(i)!==k),{skips:tt}=t;if(pt===void 0||mt.length===0&&!tt?.names.length)return;let ut=se(mt,O),P=new Float64Array(d.length).fill(Number.NaN),et=new Float64Array(d.length),st=new Map,Z=-1/0,X=1/0,F=e&&e.end>e.start?e:void 0;for(let i of U){let h=B(i)??0;for(let N=r[i],M=a[i];N<M;N++){let x=p[N],A=b(x);if(Number.isNaN(P[x]))P[x]=h,et[x]=h+A,F&&(h+A<=F.start&&(Z=Math.max(Z,h+A)),h>=F.end&&(X=Math.min(X,h)));else{let W=st.get(x);W?W.push(h):st.set(x,[P[x],h])}h+=A}}let wt=F===void 0||Z>-1/0&&X<1/0,_=new he(5),nt=[],gt=new Map,St=i=>{if(!i)return-1;let h=`${i.refName}:${i.start}`,N=gt.get(h);return N===void 0&&(N=nt.length,gt.set(h,N),nt.push(i)),N},C=s.visits?new he(4):void 0,$=new Int32Array(0),E=new Float64Array(0),rt=i=>{let h=n[i[0]],N=[...i].sort(dt),M=N.length-1,x=0;for(let c of N)M+=a[c]-r[c]+(n[c].abridged?1:0),x+=n[c].abridged?.steps??0;M>$.length&&($=new Int32Array(M*2),E=new Float64Array(M*2));let A=0,W=!1,Rt,$t,q=new Map,Ut=0;for(let c of N){let m=B(c),y=m===void 0||Rt===void 0?0:m-Rt;(m===void 0||y<0)&&(W=!0),y<0&&n[$t].abridged&&(Ut-=y);let S=Math.min(Ut,Math.max(y,0));Ut-=S;let u=y-S;u>0&&(q.set(A,ie(u,$t===void 0?void 0:n[$t].after,n[c].before)),$[A]=-u,E[A++]=Rt);let v=m??0,R=n[c].abridged;for(let j=r[c],Q=a[c];j<Q;j++){let G=p[j],V=R?R.bp-(v-(m??0))-b(G):0;V>0&&j===Q-1&&j>r[c]&&(q.set(A,[{bp:V,cause:"abridged"}]),$[A]=-V,E[A++]=v,v+=V),$[A]=G,E[A++]=v,v+=b(G)}Rt=m===void 0?void 0:v,$t=c}let Xt=c=>c>=0&&c<A&&$[c]>=0&&!Number.isNaN(P[$[c]]),jt=c=>{let m=$[c];return E[c]+(m<0?-m:b(m))},Ne=(c,m)=>{let y=c>=0?c:m,S=-1;for(let G=1;S<0&&G<A;G++)S=[y-G,y+G].find(Xt)??-1;if(S<0)return;let u=S>y==P[$[S]]>P[$[y]],v=u===(y===c),R=v?A-1:0,j=Xt(R);return{stop:{contigEnds:j,shortBp:j?Math.max(0,F.start-et[$[R]],P[$[R]]-F.end):0},lo:v?y+1:0,hi:v?A:y,backward:!u,axisStart:u?v?jt(y):E[0]:v?jt(A-1):E[y]}},xt=0,Mt=A,it=!1,zt=!0,vt=-1,Kt=-1,Bt,qt,Jt=(c,m)=>{let S=q.get(c)?.[0];if(m<=0||S?.cause!=="abridged")return 0;let u=Math.min(m,S.bp);return q.set(c,S.bp>u?[{...S,bp:S.bp-u}]:[]),$[c]+=u,u},Qt=c=>q.get(c)?.[0]?.cause==="abridged",be=c=>{let m=$[c];return m<0||q.has(c)?Number.NaN:Number.isNaN(P[m])&&(Qt(c-1)||Qt(c+1))?f(m):P[m]},Ot=0,Yt=0;if(F&&wt){let c=-1,m=-1,y=-1/0,S=1/0;for(let u=0;u<A;u++){let v=be(u);if(!Number.isNaN(v)){let R=v+b($[u]);R<=F.start&&R>y&&(y=R,c=u),v>=F.end&&v<S&&(S=v,m=u)}}if(c<0||m<0){zt=!1;let u=c>=0||m>=0?Ne(c,m):void 0;u&&({lo:xt,hi:Mt,backward:it,axisStart:Bt,stop:qt}=u)}else{xt=Math.min(c,m)+1,Mt=Math.max(c,m),it=c>m,vt=c,Kt=m;let u=it?-1:1;Ot=Jt(c+u,Z-y),Yt=Jt(m-u,S-X)}}let Et=h.contig??Gt(ht(h.name).name),ve=W||A===0?void 0:Bt!==void 0?{contig:Et,start:Bt,reversed:it}:vt<0?{contig:Et,start:E[0],reversed:!1}:vt<Kt?{contig:Et,start:jt(vt)+Ot,reversed:!1}:{contig:Et,start:E[vt]-Ot,reversed:!0},ct=0,te=0,ee=0,ft=0,D=-1,lt=0,J=Number.NaN,Ft=Number.NaN,ke=c=>{let m=st.get(c);if(!m||Number.isNaN(Ft))return P[c];let y=b(c),S=m[0],u=1/0;for(let v of m){let R=Math.min(Math.abs(v-Ft),Math.abs(v+y-Ft));R<u&&(S=v,u=R)}return S},[,Ct,ye,we]=_.values;for(let c=xt;c<Mt;c++){let m=it?Mt-1-(c-xt):c,y=$[m],S=q.get(m);if(S){for(let V of it?[...S].reverse():S)_.push(ct,V.bp,Number.NaN,kt|fe(V.cause),St(V.chunk)),ct+=V.bp;D=_.length-1,lt=kt,J=Number.NaN,ee+=-y,ft=0;continue}let u=b(y),v=ke(y),R=!Number.isNaN(v);C?.push(y,ct,u,R?1:0);let j=D>=0&&!Number.isNaN(J),Q=R&&j&&ft>=0&&J+(Ct[D]??0)===v,G=R&&j&&ft<=0&&v+u===J;!R&&D>=0&&!(lt&(Zt|kt))?Ct[D]+=u:Q||G?(Ct[D]+=u,Q||(J=v,ye[D]=v,lt|=de,we[D]=lt),ft=Q?1:-1):(lt=R?Zt:0,J=R?v:Number.NaN,_.push(ct,u,J,lt,-1),D=_.length-1,ft=0),ct+=u,R?Ft=ft<0?v:v+u:te+=u}return _.endRow(),C?.endRow(),{name:h.name,label:le(h),sample:Ht(h),haplotype:h.haplotype,bp:ct,offReferenceBp:te,gapBp:ee,complete:zt,stop:qt,axis:ve,...x>0?{abridgedSteps:x}:{},...Ot+Yt>0?{estimated:!0}:{}}},At=(i,h,N,M)=>{let x=M?Math.max(h,M.start):h,A=Math.max((M?Math.min(N,M.end):N)-x,0);_.push(x-(M?M.start:h),A,Number.NaN,kt|fe("deleted"),-1),_.endRow(),C?.endRow();let W={name:i,...Pt(i)};return{name:i,label:le(W),sample:Ht(W),haplotype:W.haplotype,bp:0,offReferenceBp:0,gapBp:A,complete:!0,stop:void 0,axis:void 0,deletionBp:N-h}},L=rt(U),H=[...ut.values()].map((i,h)=>({meta:rt(i),row:h+1})),ot=new Set(ut.keys()),{axis:o}=L,w=o?{start:o.start,end:o.start+L.bp+L.gapBp}:F;tt?.names.forEach((i,h)=>{let N=ht(i).name;ot.has(N)||(ot.add(N),H.push({meta:At(N,tt.starts[h],tt.ends[h],w),row:H.length+1}))});let g=[L,...H.map(i=>i.meta)];if(new Set(g.map(i=>i.label)).size<g.length)for(let i of g)i.label=ne(i.name)??i.label;H.sort((i,h)=>Number(h.meta.complete)-Number(i.meta.complete)||h.meta.bp-i.meta.bp||i.meta.label.localeCompare(h.meta.label));let I=[0,...H.map(i=>i.row)],{offsets:z,columns:K}=_.reorder(I,[yt,yt,yt,i=>new Uint8Array(i),i=>new Int32Array(i)]),[at,_t,Nt,It,bt]=K;return{origin:F?F.start:B(pt)??0,rows:[L,...H.map(i=>i.meta)],offsets:z,start:at,bp:_t,referenceStart:Nt,flags:It,chunk:bt,chunks:nt,visits:C&&Oe(C,I,d)}}function Oe(t,e,s){let{offsets:n,columns:r}=t.reorder(e,[k=>new Int32Array(k),yt,yt,k=>new Uint8Array(k)]),[a,p,l,d]=r;return{offsets:n,node:a,start:p,bp:l,onReference:d,names:s}}function Ee(t,e){let s=t.flags[e],n={start:t.start[e],bp:t.bp[e],onReference:(s&Zt)!==0};if(s&kt){n.gap=!0;let r=pe[s>>me&7];r&&(n.cause=r);let a=t.chunks[t.chunk[e]];a&&(n.chunk=a)}else n.referenceStart=Number.isNaN(t.referenceStart[e])?void 0:t.referenceStart[e];return s&de&&(n.reversed=!0),n}function Fe(t,e){let s=[];for(let n=t.offsets[e];n<t.offsets[e+1];n++)s.push({node:t.names[t.node[n]],start:t.start[n],bp:t.bp[n],onReference:t.onReference[n]===1});return s}function Je(t,e){let s=t.rows.map((n,r)=>{let a=[];for(let p=t.offsets[r];p<t.offsets[r+1];p++)a.push(Ee(t,p));return{...n,runs:a,visits:t.visits&&Fe(t.visits,r)}});return{origin:t.origin,unit:e,reference:s[0],rows:s.slice(1)}}export{Se as a,Ae as b,Te as c,Pe as d,ie as e,ae as f,_e as g,Ue as h,Dt as i,De as j,$e as k,qe as l,Je as m};
2
+ //# sourceMappingURL=chunk-YRAIRXY6.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@12.4.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-VA5U4F23.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.4.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-FTVESWXT.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.4.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-RPJ5RFNM.js"],
4
- "sourcesContent": ["// src/gfa/walkStops.ts\nvar START_STOP_TAG = \"ws\";\nvar END_STOP_TAG = \"we\";\nvar STOP_KINDS = [\"elsewhere\", \"break\", \"end\"];\nvar GAP_CAUSE_TEXT = {\n missing: \"not in the graph\",\n elsewhere: \"on nodes filed elsewhere\",\n unknown: \"gap, cause unknown\",\n abridged: \"abridged: steps not loaded\",\n // a walk file's skip row: the haplotype jumps over the window\n deleted: \"deleted in this haplotype\"\n};\nvar OUTSIDE_TEXT = \"outside the extracted subgraph\";\nfunction gapParts(bp, after, before) {\n if (!after && !before) {\n return [{ bp }];\n }\n const left = Math.min(after?.trimmed ?? 0, bp);\n const right = Math.min(before?.trimmed ?? 0, bp - left);\n let rest = bp - left - right;\n const lead = after?.kind === \"break\" ? Math.min(after.bp, rest) : 0;\n rest -= lead;\n const trail = before?.kind === \"break\" ? Math.min(before.bp, rest) : 0;\n rest -= trail;\n const elsewhere = [after, before].find((s) => s?.kind === \"elsewhere\");\n const parts = [\n { bp: left },\n { bp: lead, cause: \"missing\" },\n elsewhere?.kind === \"elsewhere\" ? { bp: rest, cause: \"elsewhere\", chunk: elsewhere.chunk } : { bp: rest, cause: \"unknown\" },\n { bp: trail, cause: \"missing\" },\n { bp: right }\n ];\n return parts.filter((part) => part.bp > 0);\n}\nfunction stopAt(table, i) {\n const bp = table.bp[i];\n const ref = table.chunkRefs[i];\n return stopOf(\n table.kindNames[table.kinds[i]],\n Number.isNaN(bp) ? void 0 : bp,\n table.trimmed[i],\n ref < 0 ? void 0 : { refName: table.chunkRefNames[ref], start: table.chunkStarts[i] }\n );\n}\nfunction stopOf(kind, bp, trimmed, chunk) {\n const cut = trimmed > 0 ? { trimmed } : {};\n if (kind === \"elsewhere\" && chunk) {\n return { kind, chunk, ...bp === void 0 ? {} : { bp }, ...cut };\n }\n if (kind === \"break\" && bp !== void 0) {\n return { kind, bp, ...chunk ? { chunk } : {}, ...cut };\n }\n return kind === \"end\" ? { kind, ...cut } : void 0;\n}\nfunction stopTag(stop) {\n const parts = [stop.kind];\n if (\"bp\" in stop && stop.bp !== void 0) {\n parts.push(`bp=${stop.bp}`);\n }\n if (stop.trimmed) {\n parts.push(`trimmed=${stop.trimmed}`);\n }\n if (\"chunk\" in stop && stop.chunk) {\n parts.push(`chunk=${stop.chunk.refName}:${stop.chunk.start}`);\n }\n return parts.join(\",\");\n}\nfunction parseStopTag(value) {\n const [kind, ...fields] = value.split(\",\");\n let bp;\n let trimmed = 0;\n let chunk;\n for (const field of fields) {\n if (field.startsWith(\"bp=\")) {\n bp = +field.slice(3);\n } else if (field.startsWith(\"trimmed=\")) {\n trimmed = +field.slice(8);\n } else if (field.startsWith(\"chunk=\")) {\n const at = field.lastIndexOf(\":\");\n chunk = { refName: field.slice(6, at), start: +field.slice(at + 1) };\n }\n }\n return stopOf(kind, bp, trimmed, chunk);\n}\nfunction stopFields(before, after) {\n return {\n ...before ? { before } : {},\n ...after ? { after } : {}\n };\n}\nfunction walkStopFields(tags) {\n const before = tags[START_STOP_TAG];\n const after = tags[END_STOP_TAG];\n return stopFields(\n typeof before === \"string\" ? parseStopTag(before) : void 0,\n typeof after === \"string\" ? parseStopTag(after) : void 0\n );\n}\nfunction walkStopTags(walks, p) {\n const tags = [];\n for (const [tag, table] of [\n [START_STOP_TAG, walks.before],\n [END_STOP_TAG, walks.after]\n ]) {\n const stop = table && stopAt(table, p);\n if (stop) {\n tags.push(`\t${tag}:Z:${stopTag(stop)}`);\n }\n }\n return tags.join(\"\");\n}\nvar StopColumns = class {\n constructor() {\n this.kinds = [];\n this.bp = [];\n this.trimmed = [];\n this.chunkRefs = [];\n this.chunkStarts = [];\n this.chunkRefNames = [];\n this.refIndex = /* @__PURE__ */ new Map();\n }\n push(stop) {\n this.kinds.push(STOP_KINDS.indexOf(stop.kind));\n this.bp.push(\"bp\" in stop && stop.bp !== void 0 ? stop.bp : NaN);\n this.trimmed.push(stop.trimmed ?? 0);\n const chunk = \"chunk\" in stop ? stop.chunk : void 0;\n if (chunk) {\n let ref = this.refIndex.get(chunk.refName);\n if (ref === void 0) {\n ref = this.chunkRefNames.length;\n this.refIndex.set(chunk.refName, ref);\n this.chunkRefNames.push(chunk.refName);\n }\n this.chunkRefs.push(ref);\n this.chunkStarts.push(chunk.start);\n } else {\n this.chunkRefs.push(-1);\n this.chunkStarts.push(NaN);\n }\n }\n table() {\n return {\n kinds: Uint8Array.from(this.kinds),\n kindNames: [...STOP_KINDS],\n bp: Float64Array.from(this.bp),\n trimmed: Float64Array.from(this.trimmed),\n chunkRefs: Int32Array.from(this.chunkRefs),\n chunkStarts: Float64Array.from(this.chunkStarts),\n chunkRefNames: this.chunkRefNames\n };\n }\n};\n\nexport {\n START_STOP_TAG,\n END_STOP_TAG,\n GAP_CAUSE_TEXT,\n OUTSIDE_TEXT,\n gapParts,\n stopAt,\n stopTag,\n parseStopTag,\n stopFields,\n walkStopFields,\n walkStopTags,\n StopColumns\n};\n", "import {\n stopAt,\n stopFields,\n walkStopTags\n} from \"./chunk-VA5U4F23.js\";\nimport {\n PathVisits\n} from \"./chunk-BEUTROKU.js\";\nimport {\n panSNFields,\n panSNSample\n} from \"./chunk-2JL2JVZ2.js\";\n\n// src/gfa/graphTables.ts\nfunction pLineName(name, start, end) {\n return start === 0 ? name : `${name}:${start}-${end}`;\n}\nfunction tablePath(w, p) {\n const walkName = w.names[p];\n const fields = panSNFields(walkName);\n const start = w.starts[p];\n const steps = w.abridgedSteps?.[p] ?? Number.NaN;\n const abridged = Number.isNaN(steps) ? {} : { abridged: { steps, bp: w.abridgedBp?.[p] ?? 0 } };\n return fields ? {\n name: `${fields.sample}#${fields.haplotype}#${fields.contig}`,\n start,\n ...fields,\n ...stopFields(\n w.before && stopAt(w.before, p),\n w.after && stopAt(w.after, p)\n ),\n ...abridged\n } : { name: pLineName(walkName, start, w.ends[p]), start };\n}\nfunction namesByList(lists, names, listCount, pathNames) {\n const starts = new Int32Array(listCount + 1);\n for (const list of lists) {\n starts[list + 1]++;\n }\n for (let i = 0; i < listCount; i++) {\n starts[i + 1] += starts[i];\n }\n const fill = starts.slice(0, listCount);\n const grouped = new Int32Array(lists.length);\n lists.forEach((list, i) => {\n grouped[fill[list]++] = names[i];\n });\n const listed = new Int32Array(pathNames.length).fill(-1);\n return Array.from({ length: listCount }, (_, list) => {\n const out = [];\n for (let i = starts[list]; i < starts[list + 1]; i++) {\n const k = grouped[i];\n if (listed[k] !== list) {\n listed[k] = list;\n out.push(pathNames[k]);\n }\n }\n return out;\n });\n}\nfunction tableNodeIds({ nodes: n, links: l, walks: w }, traversals) {\n const canonical = new Uint8Array(n.names.length);\n const claim = (node, reversed) => {\n if (canonical[node] === 0) {\n canonical[node] = reversed ? 2 : 1;\n }\n };\n for (let i = 0; i < l.from.length; i++) {\n claim(l.from[i], l.strands[i] & 1);\n claim(l.to[i], l.strands[i] & 2);\n }\n const stepCount = w.offsets[w.names.length] ?? 0;\n for (let s = 0; s < stepCount; s++) {\n const node = w.steps[s];\n claim(node, w.reversed[s]);\n if (traversals) {\n traversals[node]++;\n }\n }\n return n.names.map(\n (segment, i) => `${segment}${canonical[i] === 2 ? \"-\" : \"+\"}`\n );\n}\nfunction graphFromTables({ nodes: n, links: l, walks: w, skips }, name = \"Imported GFA\") {\n const count = n.names.length;\n const declared = n.lengths.length;\n const drawnWalks = [];\n for (let p = 0; p < w.names.length; p++) {\n if (w.offsets[p + 1] > w.offsets[p]) {\n drawnWalks.push(p);\n }\n }\n const traversals = new Int32Array(count);\n const ids = tableNodeIds({ nodes: n, links: l, walks: w }, traversals);\n const nodes = [];\n for (let i = 0; i < declared; i++) {\n const ref = n.refs[i];\n nodes.push({\n id: ids[i],\n name: n.names[i],\n length: n.lengths[i],\n depth: Math.max(traversals[i], 1),\n stable: ref < 0 ? void 0 : {\n refName: n.refNames[ref],\n start: n.starts[i],\n rank: n.ranks[i]\n },\n samples: void 0\n });\n }\n const edges = [];\n const neighbours = new Array(count);\n const pairList = (a, b) => {\n const near = neighbours[a];\n if (near) {\n for (let j = 0; j < near.length; j += 2) {\n if (near[j] === b) {\n return near[j + 1];\n }\n }\n }\n return void 0;\n };\n const addPair = (a, b, list) => {\n const near = neighbours[a];\n if (near) {\n near.push(b, list);\n } else {\n neighbours[a] = [b, list];\n }\n };\n const edgeLists = [];\n let lists = 0;\n for (let i = 0; i < l.from.length; i++) {\n const a = l.from[i];\n const b = l.to[i];\n edges.push({\n from: ids[a],\n to: ids[b],\n fromStrand: l.strands[i] & 1 ? \"-\" : \"+\",\n toStrand: l.strands[i] & 2 ? \"-\" : \"+\"\n });\n let list = pairList(a, b);\n if (list === void 0) {\n list = lists++;\n addPair(a, b, list);\n addPair(b, a, list);\n }\n edgeLists.push(list);\n }\n const adjacency = new Int32Array(count + 1);\n for (let a = 0; a < count; a++) {\n adjacency[a + 1] = adjacency[a] + (neighbours[a]?.length ?? 0) / 2;\n }\n const adjacentNode = new Int32Array(adjacency[count]);\n const adjacentList = new Int32Array(adjacency[count]);\n neighbours.forEach((near, a) => {\n for (let j = 0; j < near.length; j += 2) {\n adjacentNode[adjacency[a] + j / 2] = near[j];\n adjacentList[adjacency[a] + j / 2] = near[j + 1];\n }\n });\n const listOf = (a, b) => {\n for (let j = adjacency[a]; j < adjacency[a + 1]; j++) {\n if (adjacentNode[j] === b) {\n return adjacentList[j];\n }\n }\n return -1;\n };\n const nameIndex = /* @__PURE__ */ new Map();\n const pathNames = [];\n const crossedList = new Int32Array(w.offsets[w.names.length] ?? 0);\n const crossedName = new Int32Array(crossedList.length);\n let crossings = 0;\n const lastWalk = new Int32Array(lists).fill(-1);\n const paths = [];\n const anchorPaths = [];\n const totalSteps = w.offsets[w.names.length] ?? 0;\n const visitPath = new Int32Array(totalSteps);\n const visitStart = new Float64Array(totalSteps);\n const visitReversed = new Uint8Array(totalSteps);\n const fill = new Int32Array(count).fill(-1);\n const visitOrder = [];\n const blocks = [0];\n const pathSamples = [];\n const edgeNameIndex = /* @__PURE__ */ new Map();\n const edgeNames = [];\n for (const p of drawnWalks) {\n const head = tablePath(w, p);\n const { start, name: pathName } = head;\n const visitName = head.sample === void 0 ? w.names[p] : pathName;\n let named = nameIndex.get(visitName);\n if (named === void 0) {\n named = pathNames.length;\n nameIndex.set(visitName, named);\n pathNames.push(visitName);\n pathSamples.push(panSNSample(visitName));\n }\n let edgeNamed = edgeNameIndex.get(pathName);\n if (edgeNamed === void 0) {\n edgeNamed = edgeNames.length;\n edgeNameIndex.set(pathName, edgeNamed);\n edgeNames.push(pathName);\n }\n const visitSample = pathSamples[named];\n const first = w.offsets[p];\n const nodeIds = new Array(w.offsets[p + 1] - first);\n let pos = start;\n let prev = -1;\n for (let s = first; s < w.offsets[p + 1]; s++) {\n const node = w.steps[s];\n nodeIds[s - first] = ids[node];\n if (fill[node] === -1) {\n fill[node] = blocks.at(-1);\n blocks.push(fill[node] + traversals[node]);\n visitOrder.push(node);\n }\n const at = fill[node]++;\n visitPath[at] = named;\n visitStart[at] = pos;\n visitReversed[at] = w.reversed[s];\n pos += node < declared ? n.lengths[node] : 0;\n if (prev >= 0) {\n const list = listOf(prev, node);\n if (list >= 0 && lastWalk[list] !== p) {\n lastWalk[list] = p;\n crossedList[crossings] = list;\n crossedName[crossings++] = edgeNamed;\n }\n }\n prev = node;\n }\n paths.push({ ...head, nodeIds });\n anchorPaths.push({\n name: visitName,\n sample: visitSample,\n start,\n length: pos - start\n });\n }\n const listNames = namesByList(\n crossedList.subarray(0, crossings),\n crossedName,\n lists,\n edgeNames\n );\n edges.forEach((edge, i) => {\n const names = listNames[edgeLists[i]];\n if (names.length > 0) {\n edge.pathIds = names;\n }\n });\n const walked = drawnWalks.length > 0;\n return {\n name,\n nodes,\n edges,\n paths: walked ? paths : void 0,\n anchorPaths: walked ? anchorPaths : void 0,\n pathVisits: walked ? new PathVisits({\n segments: visitOrder.map((node) => n.names[node]),\n offsets: Int32Array.from(blocks),\n path: visitPath.subarray(0, blocks.at(-1)),\n start: visitStart.subarray(0, blocks.at(-1)),\n reversed: visitReversed.subarray(0, blocks.at(-1)),\n paths: pathNames,\n samples: pathSamples\n }) : void 0,\n anchoredBy: nodes.some((node) => node.stable) ? \"tags\" : void 0,\n ...skips?.names.length ? { skips } : {}\n };\n}\nfunction graphTablesGFA({ nodes, links, walks }) {\n const { names } = nodes;\n const lines = [\"H\tVN:Z:1.1\"];\n for (let i = 0; i < nodes.lengths.length; i++) {\n const ref = nodes.refs[i];\n const stable = ref < 0 ? \"\" : `\tSN:Z:${nodes.refNames[ref]}\tSO:i:${nodes.starts[i]}\tSR:i:${nodes.ranks[i]}`;\n lines.push(`S\t${names[i]}\t*\tLN:i:${nodes.lengths[i]}${stable}`);\n }\n for (let i = 0; i < links.from.length; i++) {\n const strands = links.strands[i];\n lines.push(\n `L\t${names[links.from[i]]}\t${strands & 1 ? \"-\" : \"+\"}\t${names[links.to[i]]}\t${strands & 2 ? \"-\" : \"+\"}\t0M`\n );\n }\n for (let p = 0; p < walks.names.length; p++) {\n const name = walks.names[p];\n const fields = panSNFields(name);\n const start = walks.starts[p];\n const end = walks.ends[p];\n const steps = [];\n for (let s = walks.offsets[p]; s < walks.offsets[p + 1]; s++) {\n steps.push([names[walks.steps[s]], walks.reversed[s]]);\n }\n lines.push(\n fields ? `W\t${fields.sample}\t${fields.haplotype}\t${fields.contig}\t${start}\t${end}\t${steps.map(([id, rev]) => (rev ? \"<\" : \">\") + id).join(\"\")}${walkStopTags(walks, p)}` : `P\t${pLineName(name, start, end)}\t${steps.map(([id, rev]) => id + (rev ? \"-\" : \"+\")).join(\",\")}\t*`\n );\n }\n return lines.join(\"\\n\");\n}\n\nexport {\n tablePath,\n tableNodeIds,\n graphFromTables,\n graphTablesGFA\n};\n", "import {\n tableNodeIds,\n tablePath\n} from \"./chunk-FTVESWXT.js\";\nimport {\n gapParts\n} from \"./chunk-VA5U4F23.js\";\nimport {\n pathOrigin\n} from \"./chunk-BRH73RCH.js\";\nimport {\n groupBy\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n panSNContig,\n panSNFields,\n panSNHaplotype,\n panSNSample\n} from \"./chunk-2JL2JVZ2.js\";\n\n// src/layout/walkRowRuns.ts\nvar RUN_ON_REFERENCE = 1;\nvar RUN_REVERSED = 2;\nvar RUN_GAP = 4;\nvar GAP_CAUSES = [\n void 0,\n \"missing\",\n \"elsewhere\",\n \"unknown\",\n \"abridged\",\n \"deleted\"\n];\nvar CAUSE_SHIFT = 3;\nvar causeFlags = (cause) => GAP_CAUSES.indexOf(cause) << CAUSE_SHIFT;\nfunction referenceOf(names, referencePath, rankZero) {\n return referencePath !== void 0 && names.includes(referencePath) ? referencePath : names.find((n) => rankZero.has(n)) ?? names[0];\n}\nfunction referenceWalkName(graph) {\n return referenceOf(\n (graph.paths ?? []).map((p) => pathOrigin(p.name).name),\n graph.referencePath,\n new Set(\n graph.nodes.flatMap(\n (n) => n.stable?.rank === 0 ? [n.stable.refName] : []\n )\n )\n );\n}\nvar namesReference = (reference) => {\n const contig = reference && panSNContig(reference);\n return (name) => name !== void 0 && (name === reference || name === contig);\n};\nfunction graphPieces(graph) {\n const index = /* @__PURE__ */ new Map();\n const names = [];\n const lengths = [];\n const indexOf = (id) => {\n let i = index.get(id);\n if (i === void 0) {\n i = names.length;\n index.set(id, i);\n names.push(id);\n lengths.push(0);\n }\n return i;\n };\n const reference = referenceWalkName(graph);\n const onReferenceContig = namesReference(reference);\n const stable = /* @__PURE__ */ new Map();\n for (const node of graph.nodes) {\n const i = indexOf(node.id);\n lengths[i] = node.length;\n if (node.stable?.rank === 0 && onReferenceContig(node.stable.refName)) {\n stable.set(i, node.stable.start);\n }\n }\n const heads = graph.paths ?? [];\n const from = new Int32Array(heads.length);\n const to = new Int32Array(heads.length);\n const steps = [];\n heads.forEach((path, p) => {\n from[p] = steps.length;\n for (const id of path.nodeIds) {\n steps.push(indexOf(id));\n }\n to[p] = steps.length;\n });\n return {\n heads,\n from,\n to,\n steps: Int32Array.from(steps),\n lengths: Int32Array.from(lengths),\n names,\n reference,\n stableStart: (node) => stable.get(node) ?? Number.NaN\n };\n}\nfunction tablePieces(tables, referencePath, visits) {\n const { nodes: n, walks: w } = tables;\n const kept = [];\n for (let p = 0; p < w.names.length; p++) {\n if (w.offsets[p + 1] > w.offsets[p]) {\n kept.push(p);\n }\n }\n const heads = kept.map((p) => tablePath(w, p));\n const rankZero = /* @__PURE__ */ new Set();\n for (let i = 0; i < n.lengths.length; i++) {\n if (n.refs[i] >= 0 && n.ranks[i] === 0) {\n rankZero.add(n.refNames[n.refs[i]]);\n }\n }\n const reference = referenceOf(\n heads.map((h) => pathOrigin(h.name).name),\n referencePath,\n rankZero\n );\n const onReferenceContig = namesReference(reference);\n return {\n heads,\n from: Int32Array.from(kept, (p) => w.offsets[p]),\n to: Int32Array.from(kept, (p) => w.offsets[p + 1]),\n steps: w.steps,\n lengths: n.lengths,\n // a visit names its node as the Graph does, which costs a pass over the\n // steps\n names: visits ? tableNodeIds(tables) : n.names,\n reference,\n stableStart: (node) => node < n.lengths.length && n.ranks[node] === 0 && onReferenceContig(n.refNames[n.refs[node]]) ? n.starts[node] : Number.NaN\n };\n}\nfunction sampleOf(path) {\n return path.sample ?? panSNSample(path.name);\n}\nfunction labelOf(path) {\n return path.haplotype !== void 0 && path.sample !== void 0 ? `${path.sample}#${path.haplotype}` : sampleOf(path);\n}\nvar Columns = class {\n constructor(width) {\n this.offsets = [0];\n this.values = Array.from({ length: width }, () => []);\n }\n get length() {\n return this.values[0].length;\n }\n push(a, b, c, d, e) {\n const v = this.values;\n v[0].push(a);\n v[1].push(b);\n v[2].push(c);\n v[3].push(d);\n if (e !== void 0) {\n v[4].push(e);\n }\n }\n endRow() {\n this.offsets.push(this.length);\n }\n // the rows in `order`, column i in the array `make[i]` makes\n reorder(order, make) {\n const offsets = new Uint32Array(order.length + 1);\n order.forEach((row, i) => {\n offsets[i + 1] = offsets[i] + this.offsets[row + 1] - this.offsets[row];\n });\n const columns = make.map((m, c) => {\n const from = this.values[c];\n const out = m(this.length);\n let at = 0;\n for (const row of order) {\n for (let k = this.offsets[row]; k < this.offsets[row + 1]; k++) {\n out[at++] = from[k];\n }\n }\n return out;\n });\n return { offsets, columns };\n }\n};\nvar float64 = (n) => new Float64Array(n);\nfunction walkRowRuns(source, region, o = {}) {\n const {\n heads,\n from,\n to,\n steps: all,\n lengths,\n names,\n reference,\n stableStart\n } = \"walks\" in source ? tablePieces(source, o.referencePath, o.visits) : graphPieces(source);\n const declared = lengths.length;\n const lengthOf = (node) => node < declared ? lengths[node] : 0;\n const nameOf = (p) => pathOrigin(heads[p].name).name;\n const startOf = (p) => heads[p].start;\n const byStart = (a, b) => (startOf(a) ?? 0) - (startOf(b) ?? 0);\n const pieceIds = heads.map((_, p) => p);\n const referencePieces = pieceIds.filter((p) => nameOf(p) === reference).sort(byStart);\n const first = referencePieces[0];\n const others = pieceIds.filter((p) => nameOf(p) !== reference);\n const { skips } = source;\n if (first === void 0 || others.length === 0 && !skips?.names.length) {\n return void 0;\n }\n const walks = groupBy(others, nameOf);\n const spanStart = new Float64Array(names.length).fill(Number.NaN);\n const spanEnd = new Float64Array(names.length);\n const revisits = /* @__PURE__ */ new Map();\n let flankEnd = -Infinity;\n let flankStart = Infinity;\n const cut = region && region.end > region.start ? region : void 0;\n for (const piece of referencePieces) {\n let pos = startOf(piece) ?? 0;\n for (let s = from[piece], stop = to[piece]; s < stop; s++) {\n const node = all[s];\n const len = lengthOf(node);\n if (!Number.isNaN(spanStart[node])) {\n const starts = revisits.get(node);\n if (starts) {\n starts.push(pos);\n } else {\n revisits.set(node, [spanStart[node], pos]);\n }\n } else {\n spanStart[node] = pos;\n spanEnd[node] = pos + len;\n if (cut) {\n if (pos + len <= cut.start) {\n flankEnd = Math.max(flankEnd, pos + len);\n }\n if (pos >= cut.end) {\n flankStart = Math.min(flankStart, pos);\n }\n }\n }\n pos += len;\n }\n }\n const flanked = cut === void 0 || flankEnd > -Infinity && flankStart < Infinity;\n const runs = new Columns(5);\n const chunks = [];\n const chunkIndex = /* @__PURE__ */ new Map();\n const chunkOf = (chunk2) => {\n if (!chunk2) {\n return -1;\n }\n const key = `${chunk2.refName}:${chunk2.start}`;\n let i = chunkIndex.get(key);\n if (i === void 0) {\n i = chunks.length;\n chunkIndex.set(key, i);\n chunks.push(chunk2);\n }\n return i;\n };\n const visits = o.visits ? new Columns(4) : void 0;\n let steps = new Int32Array(0);\n let stepStart = new Float64Array(0);\n const rowOf = (pieces) => {\n const head = heads[pieces[0]];\n const ordered = [...pieces].sort(byStart);\n let count = ordered.length - 1;\n let abridgedSteps = 0;\n for (const piece of ordered) {\n count += to[piece] - from[piece] + (heads[piece].abridged ? 1 : 0);\n abridgedSteps += heads[piece].abridged?.steps ?? 0;\n }\n if (count > steps.length) {\n steps = new Int32Array(count * 2);\n stepStart = new Float64Array(count * 2);\n }\n let length = 0;\n let unplaced = false;\n let end;\n let previous;\n const partsAt = /* @__PURE__ */ new Map();\n let owed = 0;\n for (const piece of ordered) {\n const start2 = startOf(piece);\n const jump = start2 === void 0 || end === void 0 ? 0 : start2 - end;\n if (start2 === void 0 || jump < 0) {\n unplaced = true;\n }\n if (jump < 0 && heads[previous].abridged) {\n owed -= jump;\n }\n const covered = Math.min(owed, Math.max(jump, 0));\n owed -= covered;\n const gap = jump - covered;\n if (gap > 0) {\n partsAt.set(\n length,\n gapParts(\n gap,\n previous === void 0 ? void 0 : heads[previous].after,\n heads[piece].before\n )\n );\n steps[length] = -gap;\n stepStart[length++] = end;\n }\n let pos = start2 ?? 0;\n const abridged = heads[piece].abridged;\n for (let s = from[piece], stop2 = to[piece]; s < stop2; s++) {\n const node = all[s];\n const bp3 = abridged ? abridged.bp - (pos - (start2 ?? 0)) - lengthOf(node) : 0;\n if (bp3 > 0 && s === stop2 - 1 && s > from[piece]) {\n partsAt.set(length, [{ bp: bp3, cause: \"abridged\" }]);\n steps[length] = -bp3;\n stepStart[length++] = pos;\n pos += bp3;\n }\n steps[length] = node;\n stepStart[length++] = pos;\n pos += lengthOf(node);\n }\n end = start2 === void 0 ? void 0 : pos;\n previous = piece;\n }\n const onReference = (i) => i >= 0 && i < length && steps[i] >= 0 && !Number.isNaN(spanStart[steps[i]]);\n const stepEnd = (i) => {\n const id = steps[i];\n return stepStart[i] + (id < 0 ? -id : lengthOf(id));\n };\n const partialSide = (i0, i1) => {\n const flank = i0 >= 0 ? i0 : i1;\n let near = -1;\n for (let d = 1; near < 0 && d < length; d++) {\n near = [flank - d, flank + d].find(onReference) ?? -1;\n }\n if (near < 0) {\n return void 0;\n }\n const forward = near > flank === spanStart[steps[near]] > spanStart[steps[flank]];\n const after = forward === (flank === i0);\n const last2 = after ? length - 1 : 0;\n const contigEnds = onReference(last2);\n const stop2 = {\n contigEnds,\n shortBp: contigEnds ? Math.max(\n 0,\n cut.start - spanEnd[steps[last2]],\n spanStart[steps[last2]] - cut.end\n ) : 0\n };\n return {\n stop: stop2,\n lo: after ? flank + 1 : 0,\n hi: after ? length : flank,\n backward: !forward,\n axisStart: forward ? after ? stepEnd(flank) : stepStart[0] : after ? stepEnd(length - 1) : stepStart[flank]\n };\n };\n let lo = 0;\n let hi = length;\n let backward = false;\n let complete = true;\n let flankFrom = -1;\n let flankTo = -1;\n let axisStart;\n let stop;\n const trimAbridged = (inner, bp3) => {\n const parts = partsAt.get(inner);\n const gap = parts?.[0];\n if (bp3 <= 0 || gap?.cause !== \"abridged\") {\n return 0;\n }\n const trimmed = Math.min(bp3, gap.bp);\n partsAt.set(\n inner,\n gap.bp > trimmed ? [{ ...gap, bp: gap.bp - trimmed }] : []\n );\n steps[inner] += trimmed;\n return trimmed;\n };\n const abridgedAt = (i) => partsAt.get(i)?.[0]?.cause === \"abridged\";\n const placeStart = (i) => {\n const id = steps[i];\n if (id < 0 || partsAt.has(i)) {\n return Number.NaN;\n }\n return Number.isNaN(spanStart[id]) && (abridgedAt(i - 1) || abridgedAt(i + 1)) ? stableStart(id) : spanStart[id];\n };\n let leftTrim = 0;\n let rightTrim = 0;\n if (cut && flanked) {\n let i0 = -1;\n let i1 = -1;\n let bestEnd = -Infinity;\n let bestStart = Infinity;\n for (let i = 0; i < length; i++) {\n const start2 = placeStart(i);\n if (!Number.isNaN(start2)) {\n const end2 = start2 + lengthOf(steps[i]);\n if (end2 <= cut.start && end2 > bestEnd) {\n bestEnd = end2;\n i0 = i;\n }\n if (start2 >= cut.end && start2 < bestStart) {\n bestStart = start2;\n i1 = i;\n }\n }\n }\n if (i0 < 0 || i1 < 0) {\n complete = false;\n const inside = i0 >= 0 || i1 >= 0 ? partialSide(i0, i1) : void 0;\n if (inside) {\n ;\n ({ lo, hi, backward, axisStart, stop } = inside);\n }\n } else {\n lo = Math.min(i0, i1) + 1;\n hi = Math.max(i0, i1);\n backward = i0 > i1;\n flankFrom = i0;\n flankTo = i1;\n const inward = backward ? -1 : 1;\n leftTrim = trimAbridged(i0 + inward, flankEnd - bestEnd);\n rightTrim = trimAbridged(i1 - inward, bestStart - flankStart);\n }\n }\n const contig = head.contig ?? panSNContig(pathOrigin(head.name).name);\n const axis2 = unplaced || length === 0 ? void 0 : axisStart !== void 0 ? { contig, start: axisStart, reversed: backward } : flankFrom < 0 ? { contig, start: stepStart[0], reversed: false } : flankFrom < flankTo ? {\n contig,\n start: stepEnd(flankFrom) + leftTrim,\n reversed: false\n } : {\n contig,\n start: stepStart[flankFrom] - leftTrim,\n reversed: true\n };\n let bp2 = 0;\n let offReferenceBp = 0;\n let gapBp = 0;\n let step = 0;\n let last = -1;\n let lastFlags = 0;\n let lastRef = Number.NaN;\n let cursor = Number.NaN;\n const placeOf = (id) => {\n const starts = revisits.get(id);\n if (!starts || Number.isNaN(cursor)) {\n return spanStart[id];\n }\n const len = lengthOf(id);\n let best = starts[0];\n let bestGap = Infinity;\n for (const start2 of starts) {\n const gap = Math.min(\n Math.abs(start2 - cursor),\n Math.abs(start2 + len - cursor)\n );\n if (gap < bestGap) {\n best = start2;\n bestGap = gap;\n }\n }\n return best;\n };\n const [, runBp, runRef, runFlags] = runs.values;\n for (let k = lo; k < hi; k++) {\n const index = backward ? hi - 1 - (k - lo) : k;\n const id = steps[index];\n const parts = partsAt.get(index);\n if (parts) {\n for (const part of backward ? [...parts].reverse() : parts) {\n runs.push(\n bp2,\n part.bp,\n Number.NaN,\n RUN_GAP | causeFlags(part.cause),\n chunkOf(part.chunk)\n );\n bp2 += part.bp;\n }\n last = runs.length - 1;\n lastFlags = RUN_GAP;\n lastRef = Number.NaN;\n gapBp += -id;\n step = 0;\n continue;\n }\n const len = lengthOf(id);\n const at = placeOf(id);\n const on = !Number.isNaN(at);\n visits?.push(id, bp2, len, on ? 1 : 0);\n const placed = last >= 0 && !Number.isNaN(lastRef);\n const forward = on && placed && step >= 0 && lastRef + (runBp[last] ?? 0) === at;\n const back = on && placed && step <= 0 && at + len === lastRef;\n if (!on && last >= 0 && !(lastFlags & (RUN_ON_REFERENCE | RUN_GAP))) {\n runBp[last] += len;\n } else if (forward || back) {\n runBp[last] += len;\n if (!forward) {\n lastRef = at;\n runRef[last] = at;\n lastFlags |= RUN_REVERSED;\n runFlags[last] = lastFlags;\n }\n step = forward ? 1 : -1;\n } else {\n lastFlags = on ? RUN_ON_REFERENCE : 0;\n lastRef = on ? at : Number.NaN;\n runs.push(bp2, len, lastRef, lastFlags, -1);\n last = runs.length - 1;\n step = 0;\n }\n bp2 += len;\n if (on) {\n cursor = step < 0 ? at : at + len;\n } else {\n offReferenceBp += len;\n }\n }\n runs.endRow();\n visits?.endRow();\n return {\n name: head.name,\n label: labelOf(head),\n sample: sampleOf(head),\n haplotype: head.haplotype,\n bp: bp2,\n offReferenceBp,\n gapBp,\n complete,\n stop,\n axis: axis2,\n ...abridgedSteps > 0 ? { abridgedSteps } : {},\n ...leftTrim + rightTrim > 0 ? { estimated: true } : {}\n };\n };\n const skipRowOf = (name, start2, end, bar2) => {\n const from2 = bar2 ? Math.max(start2, bar2.start) : start2;\n const bp2 = Math.max((bar2 ? Math.min(end, bar2.end) : end) - from2, 0);\n runs.push(\n from2 - (bar2 ? bar2.start : start2),\n bp2,\n Number.NaN,\n RUN_GAP | causeFlags(\"deleted\"),\n -1\n );\n runs.endRow();\n visits?.endRow();\n const head = { name, ...panSNFields(name) };\n return {\n name,\n label: labelOf(head),\n sample: sampleOf(head),\n haplotype: head.haplotype,\n bp: 0,\n offReferenceBp: 0,\n gapBp: bp2,\n complete: true,\n stop: void 0,\n axis: void 0\n };\n };\n const referenceRow = rowOf(referencePieces);\n const rows = [...walks.values()].map((pieces, i) => ({\n meta: rowOf(pieces),\n row: i + 1\n }));\n const drawn = new Set(walks.keys());\n const { axis } = referenceRow;\n const bar = axis ? {\n start: axis.start,\n end: axis.start + referenceRow.bp + referenceRow.gapBp\n } : cut;\n skips?.names.forEach((name, k) => {\n const contig = pathOrigin(name).name;\n if (!drawn.has(contig)) {\n drawn.add(contig);\n rows.push({\n meta: skipRowOf(contig, skips.starts[k], skips.ends[k], bar),\n row: rows.length + 1\n });\n }\n });\n const metas = [referenceRow, ...rows.map((r) => r.meta)];\n if (new Set(metas.map((m) => m.label)).size < metas.length) {\n for (const meta of metas) {\n meta.label = panSNHaplotype(meta.name) ?? meta.label;\n }\n }\n rows.sort(\n (a, b) => Number(b.meta.complete) - Number(a.meta.complete) || b.meta.bp - a.meta.bp || a.meta.label.localeCompare(b.meta.label)\n );\n const order = [0, ...rows.map((r) => r.row)];\n const { offsets, columns } = runs.reorder(order, [\n float64,\n float64,\n float64,\n (n) => new Uint8Array(n),\n (n) => new Int32Array(n)\n ]);\n const [start, bp, referenceStart, flags, chunk] = columns;\n return {\n origin: cut ? cut.start : startOf(first) ?? 0,\n rows: [referenceRow, ...rows.map((r) => r.meta)],\n offsets,\n start,\n bp,\n referenceStart,\n flags,\n chunk,\n chunks,\n visits: visits && visitColumns(visits, order, names)\n };\n}\nfunction visitColumns(visits, order, names) {\n const { offsets, columns } = visits.reorder(order, [\n (n) => new Int32Array(n),\n float64,\n float64,\n (n) => new Uint8Array(n)\n ]);\n const [node, start, bp, onReference] = columns;\n return { offsets, node, start, bp, onReference, names };\n}\nfunction runAt(t, k) {\n const f = t.flags[k];\n const run = {\n start: t.start[k],\n bp: t.bp[k],\n onReference: (f & RUN_ON_REFERENCE) !== 0\n };\n if (f & RUN_GAP) {\n run.gap = true;\n const cause = GAP_CAUSES[f >> CAUSE_SHIFT & 7];\n if (cause) {\n run.cause = cause;\n }\n const chunk = t.chunks[t.chunk[k]];\n if (chunk) {\n run.chunk = chunk;\n }\n } else {\n run.referenceStart = Number.isNaN(t.referenceStart[k]) ? void 0 : t.referenceStart[k];\n }\n if (f & RUN_REVERSED) {\n run.reversed = true;\n }\n return run;\n}\nfunction visitsOf(v, row) {\n const out = [];\n for (let k = v.offsets[row]; k < v.offsets[row + 1]; k++) {\n out.push({\n node: v.names[v.node[k]],\n start: v.start[k],\n bp: v.bp[k],\n onReference: v.onReference[k] === 1\n });\n }\n return out;\n}\nfunction walkRowsOf(t, unit) {\n const rows = t.rows.map((meta, i) => {\n const runs = [];\n for (let k = t.offsets[i]; k < t.offsets[i + 1]; k++) {\n runs.push(runAt(t, k));\n }\n return {\n ...meta,\n runs,\n visits: t.visits && visitsOf(t.visits, i)\n };\n });\n return { origin: t.origin, unit, reference: rows[0], rows: rows.slice(1) };\n}\n\nexport {\n referenceWalkName,\n walkRowRuns,\n runAt,\n walkRowsOf\n};\n"],
5
- "mappings": "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",
3
+ "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@12.5.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-VA5U4F23.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.5.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-FTVESWXT.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.5.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-YI7CEK4W.js"],
4
+ "sourcesContent": ["// src/gfa/walkStops.ts\nvar START_STOP_TAG = \"ws\";\nvar END_STOP_TAG = \"we\";\nvar STOP_KINDS = [\"elsewhere\", \"break\", \"end\"];\nvar GAP_CAUSE_TEXT = {\n missing: \"not in the graph\",\n elsewhere: \"on nodes filed elsewhere\",\n unknown: \"gap, cause unknown\",\n abridged: \"abridged: steps not loaded\",\n // a walk file's skip row: the haplotype jumps over the window\n deleted: \"deleted in this haplotype\"\n};\nvar OUTSIDE_TEXT = \"outside the extracted subgraph\";\nfunction gapParts(bp, after, before) {\n if (!after && !before) {\n return [{ bp }];\n }\n const left = Math.min(after?.trimmed ?? 0, bp);\n const right = Math.min(before?.trimmed ?? 0, bp - left);\n let rest = bp - left - right;\n const lead = after?.kind === \"break\" ? Math.min(after.bp, rest) : 0;\n rest -= lead;\n const trail = before?.kind === \"break\" ? Math.min(before.bp, rest) : 0;\n rest -= trail;\n const elsewhere = [after, before].find((s) => s?.kind === \"elsewhere\");\n const parts = [\n { bp: left },\n { bp: lead, cause: \"missing\" },\n elsewhere?.kind === \"elsewhere\" ? { bp: rest, cause: \"elsewhere\", chunk: elsewhere.chunk } : { bp: rest, cause: \"unknown\" },\n { bp: trail, cause: \"missing\" },\n { bp: right }\n ];\n return parts.filter((part) => part.bp > 0);\n}\nfunction stopAt(table, i) {\n const bp = table.bp[i];\n const ref = table.chunkRefs[i];\n return stopOf(\n table.kindNames[table.kinds[i]],\n Number.isNaN(bp) ? void 0 : bp,\n table.trimmed[i],\n ref < 0 ? void 0 : { refName: table.chunkRefNames[ref], start: table.chunkStarts[i] }\n );\n}\nfunction stopOf(kind, bp, trimmed, chunk) {\n const cut = trimmed > 0 ? { trimmed } : {};\n if (kind === \"elsewhere\" && chunk) {\n return { kind, chunk, ...bp === void 0 ? {} : { bp }, ...cut };\n }\n if (kind === \"break\" && bp !== void 0) {\n return { kind, bp, ...chunk ? { chunk } : {}, ...cut };\n }\n return kind === \"end\" ? { kind, ...cut } : void 0;\n}\nfunction stopTag(stop) {\n const parts = [stop.kind];\n if (\"bp\" in stop && stop.bp !== void 0) {\n parts.push(`bp=${stop.bp}`);\n }\n if (stop.trimmed) {\n parts.push(`trimmed=${stop.trimmed}`);\n }\n if (\"chunk\" in stop && stop.chunk) {\n parts.push(`chunk=${stop.chunk.refName}:${stop.chunk.start}`);\n }\n return parts.join(\",\");\n}\nfunction parseStopTag(value) {\n const [kind, ...fields] = value.split(\",\");\n let bp;\n let trimmed = 0;\n let chunk;\n for (const field of fields) {\n if (field.startsWith(\"bp=\")) {\n bp = +field.slice(3);\n } else if (field.startsWith(\"trimmed=\")) {\n trimmed = +field.slice(8);\n } else if (field.startsWith(\"chunk=\")) {\n const at = field.lastIndexOf(\":\");\n chunk = { refName: field.slice(6, at), start: +field.slice(at + 1) };\n }\n }\n return stopOf(kind, bp, trimmed, chunk);\n}\nfunction stopFields(before, after) {\n return {\n ...before ? { before } : {},\n ...after ? { after } : {}\n };\n}\nfunction walkStopFields(tags) {\n const before = tags[START_STOP_TAG];\n const after = tags[END_STOP_TAG];\n return stopFields(\n typeof before === \"string\" ? parseStopTag(before) : void 0,\n typeof after === \"string\" ? parseStopTag(after) : void 0\n );\n}\nfunction walkStopTags(walks, p) {\n const tags = [];\n for (const [tag, table] of [\n [START_STOP_TAG, walks.before],\n [END_STOP_TAG, walks.after]\n ]) {\n const stop = table && stopAt(table, p);\n if (stop) {\n tags.push(`\t${tag}:Z:${stopTag(stop)}`);\n }\n }\n return tags.join(\"\");\n}\nvar StopColumns = class {\n constructor() {\n this.kinds = [];\n this.bp = [];\n this.trimmed = [];\n this.chunkRefs = [];\n this.chunkStarts = [];\n this.chunkRefNames = [];\n this.refIndex = /* @__PURE__ */ new Map();\n }\n push(stop) {\n this.kinds.push(STOP_KINDS.indexOf(stop.kind));\n this.bp.push(\"bp\" in stop && stop.bp !== void 0 ? stop.bp : NaN);\n this.trimmed.push(stop.trimmed ?? 0);\n const chunk = \"chunk\" in stop ? stop.chunk : void 0;\n if (chunk) {\n let ref = this.refIndex.get(chunk.refName);\n if (ref === void 0) {\n ref = this.chunkRefNames.length;\n this.refIndex.set(chunk.refName, ref);\n this.chunkRefNames.push(chunk.refName);\n }\n this.chunkRefs.push(ref);\n this.chunkStarts.push(chunk.start);\n } else {\n this.chunkRefs.push(-1);\n this.chunkStarts.push(NaN);\n }\n }\n table() {\n return {\n kinds: Uint8Array.from(this.kinds),\n kindNames: [...STOP_KINDS],\n bp: Float64Array.from(this.bp),\n trimmed: Float64Array.from(this.trimmed),\n chunkRefs: Int32Array.from(this.chunkRefs),\n chunkStarts: Float64Array.from(this.chunkStarts),\n chunkRefNames: this.chunkRefNames\n };\n }\n};\n\nexport {\n START_STOP_TAG,\n END_STOP_TAG,\n GAP_CAUSE_TEXT,\n OUTSIDE_TEXT,\n gapParts,\n stopAt,\n stopTag,\n parseStopTag,\n stopFields,\n walkStopFields,\n walkStopTags,\n StopColumns\n};\n", "import {\n stopAt,\n stopFields,\n walkStopTags\n} from \"./chunk-VA5U4F23.js\";\nimport {\n PathVisits\n} from \"./chunk-BEUTROKU.js\";\nimport {\n panSNFields,\n panSNSample\n} from \"./chunk-2JL2JVZ2.js\";\n\n// src/gfa/graphTables.ts\nfunction pLineName(name, start, end) {\n return start === 0 ? name : `${name}:${start}-${end}`;\n}\nfunction tablePath(w, p) {\n const walkName = w.names[p];\n const fields = panSNFields(walkName);\n const start = w.starts[p];\n const steps = w.abridgedSteps?.[p] ?? Number.NaN;\n const abridged = Number.isNaN(steps) ? {} : { abridged: { steps, bp: w.abridgedBp?.[p] ?? 0 } };\n return fields ? {\n name: `${fields.sample}#${fields.haplotype}#${fields.contig}`,\n start,\n ...fields,\n ...stopFields(\n w.before && stopAt(w.before, p),\n w.after && stopAt(w.after, p)\n ),\n ...abridged\n } : { name: pLineName(walkName, start, w.ends[p]), start };\n}\nfunction namesByList(lists, names, listCount, pathNames) {\n const starts = new Int32Array(listCount + 1);\n for (const list of lists) {\n starts[list + 1]++;\n }\n for (let i = 0; i < listCount; i++) {\n starts[i + 1] += starts[i];\n }\n const fill = starts.slice(0, listCount);\n const grouped = new Int32Array(lists.length);\n lists.forEach((list, i) => {\n grouped[fill[list]++] = names[i];\n });\n const listed = new Int32Array(pathNames.length).fill(-1);\n return Array.from({ length: listCount }, (_, list) => {\n const out = [];\n for (let i = starts[list]; i < starts[list + 1]; i++) {\n const k = grouped[i];\n if (listed[k] !== list) {\n listed[k] = list;\n out.push(pathNames[k]);\n }\n }\n return out;\n });\n}\nfunction tableNodeIds({ nodes: n, links: l, walks: w }, traversals) {\n const canonical = new Uint8Array(n.names.length);\n const claim = (node, reversed) => {\n if (canonical[node] === 0) {\n canonical[node] = reversed ? 2 : 1;\n }\n };\n for (let i = 0; i < l.from.length; i++) {\n claim(l.from[i], l.strands[i] & 1);\n claim(l.to[i], l.strands[i] & 2);\n }\n const stepCount = w.offsets[w.names.length] ?? 0;\n for (let s = 0; s < stepCount; s++) {\n const node = w.steps[s];\n claim(node, w.reversed[s]);\n if (traversals) {\n traversals[node]++;\n }\n }\n return n.names.map(\n (segment, i) => `${segment}${canonical[i] === 2 ? \"-\" : \"+\"}`\n );\n}\nfunction graphFromTables({ nodes: n, links: l, walks: w, skips }, name = \"Imported GFA\") {\n const count = n.names.length;\n const declared = n.lengths.length;\n const drawnWalks = [];\n for (let p = 0; p < w.names.length; p++) {\n if (w.offsets[p + 1] > w.offsets[p]) {\n drawnWalks.push(p);\n }\n }\n const traversals = new Int32Array(count);\n const ids = tableNodeIds({ nodes: n, links: l, walks: w }, traversals);\n const nodes = [];\n for (let i = 0; i < declared; i++) {\n const ref = n.refs[i];\n nodes.push({\n id: ids[i],\n name: n.names[i],\n length: n.lengths[i],\n depth: Math.max(traversals[i], 1),\n stable: ref < 0 ? void 0 : {\n refName: n.refNames[ref],\n start: n.starts[i],\n rank: n.ranks[i]\n },\n samples: void 0\n });\n }\n const edges = [];\n const neighbours = new Array(count);\n const pairList = (a, b) => {\n const near = neighbours[a];\n if (near) {\n for (let j = 0; j < near.length; j += 2) {\n if (near[j] === b) {\n return near[j + 1];\n }\n }\n }\n return void 0;\n };\n const addPair = (a, b, list) => {\n const near = neighbours[a];\n if (near) {\n near.push(b, list);\n } else {\n neighbours[a] = [b, list];\n }\n };\n const edgeLists = [];\n let lists = 0;\n for (let i = 0; i < l.from.length; i++) {\n const a = l.from[i];\n const b = l.to[i];\n edges.push({\n from: ids[a],\n to: ids[b],\n fromStrand: l.strands[i] & 1 ? \"-\" : \"+\",\n toStrand: l.strands[i] & 2 ? \"-\" : \"+\"\n });\n let list = pairList(a, b);\n if (list === void 0) {\n list = lists++;\n addPair(a, b, list);\n addPair(b, a, list);\n }\n edgeLists.push(list);\n }\n const adjacency = new Int32Array(count + 1);\n for (let a = 0; a < count; a++) {\n adjacency[a + 1] = adjacency[a] + (neighbours[a]?.length ?? 0) / 2;\n }\n const adjacentNode = new Int32Array(adjacency[count]);\n const adjacentList = new Int32Array(adjacency[count]);\n neighbours.forEach((near, a) => {\n for (let j = 0; j < near.length; j += 2) {\n adjacentNode[adjacency[a] + j / 2] = near[j];\n adjacentList[adjacency[a] + j / 2] = near[j + 1];\n }\n });\n const listOf = (a, b) => {\n for (let j = adjacency[a]; j < adjacency[a + 1]; j++) {\n if (adjacentNode[j] === b) {\n return adjacentList[j];\n }\n }\n return -1;\n };\n const nameIndex = /* @__PURE__ */ new Map();\n const pathNames = [];\n const crossedList = new Int32Array(w.offsets[w.names.length] ?? 0);\n const crossedName = new Int32Array(crossedList.length);\n let crossings = 0;\n const lastWalk = new Int32Array(lists).fill(-1);\n const paths = [];\n const anchorPaths = [];\n const totalSteps = w.offsets[w.names.length] ?? 0;\n const visitPath = new Int32Array(totalSteps);\n const visitStart = new Float64Array(totalSteps);\n const visitReversed = new Uint8Array(totalSteps);\n const fill = new Int32Array(count).fill(-1);\n const visitOrder = [];\n const blocks = [0];\n const pathSamples = [];\n const edgeNameIndex = /* @__PURE__ */ new Map();\n const edgeNames = [];\n for (const p of drawnWalks) {\n const head = tablePath(w, p);\n const { start, name: pathName } = head;\n const visitName = head.sample === void 0 ? w.names[p] : pathName;\n let named = nameIndex.get(visitName);\n if (named === void 0) {\n named = pathNames.length;\n nameIndex.set(visitName, named);\n pathNames.push(visitName);\n pathSamples.push(panSNSample(visitName));\n }\n let edgeNamed = edgeNameIndex.get(pathName);\n if (edgeNamed === void 0) {\n edgeNamed = edgeNames.length;\n edgeNameIndex.set(pathName, edgeNamed);\n edgeNames.push(pathName);\n }\n const visitSample = pathSamples[named];\n const first = w.offsets[p];\n const nodeIds = new Array(w.offsets[p + 1] - first);\n let pos = start;\n let prev = -1;\n for (let s = first; s < w.offsets[p + 1]; s++) {\n const node = w.steps[s];\n nodeIds[s - first] = ids[node];\n if (fill[node] === -1) {\n fill[node] = blocks.at(-1);\n blocks.push(fill[node] + traversals[node]);\n visitOrder.push(node);\n }\n const at = fill[node]++;\n visitPath[at] = named;\n visitStart[at] = pos;\n visitReversed[at] = w.reversed[s];\n pos += node < declared ? n.lengths[node] : 0;\n if (prev >= 0) {\n const list = listOf(prev, node);\n if (list >= 0 && lastWalk[list] !== p) {\n lastWalk[list] = p;\n crossedList[crossings] = list;\n crossedName[crossings++] = edgeNamed;\n }\n }\n prev = node;\n }\n paths.push({ ...head, nodeIds });\n anchorPaths.push({\n name: visitName,\n sample: visitSample,\n start,\n length: pos - start\n });\n }\n const listNames = namesByList(\n crossedList.subarray(0, crossings),\n crossedName,\n lists,\n edgeNames\n );\n edges.forEach((edge, i) => {\n const names = listNames[edgeLists[i]];\n if (names.length > 0) {\n edge.pathIds = names;\n }\n });\n const walked = drawnWalks.length > 0;\n return {\n name,\n nodes,\n edges,\n paths: walked ? paths : void 0,\n anchorPaths: walked ? anchorPaths : void 0,\n pathVisits: walked ? new PathVisits({\n segments: visitOrder.map((node) => n.names[node]),\n offsets: Int32Array.from(blocks),\n path: visitPath.subarray(0, blocks.at(-1)),\n start: visitStart.subarray(0, blocks.at(-1)),\n reversed: visitReversed.subarray(0, blocks.at(-1)),\n paths: pathNames,\n samples: pathSamples\n }) : void 0,\n anchoredBy: nodes.some((node) => node.stable) ? \"tags\" : void 0,\n ...skips?.names.length ? { skips } : {}\n };\n}\nfunction graphTablesGFA({ nodes, links, walks }) {\n const { names } = nodes;\n const lines = [\"H\tVN:Z:1.1\"];\n for (let i = 0; i < nodes.lengths.length; i++) {\n const ref = nodes.refs[i];\n const stable = ref < 0 ? \"\" : `\tSN:Z:${nodes.refNames[ref]}\tSO:i:${nodes.starts[i]}\tSR:i:${nodes.ranks[i]}`;\n lines.push(`S\t${names[i]}\t*\tLN:i:${nodes.lengths[i]}${stable}`);\n }\n for (let i = 0; i < links.from.length; i++) {\n const strands = links.strands[i];\n lines.push(\n `L\t${names[links.from[i]]}\t${strands & 1 ? \"-\" : \"+\"}\t${names[links.to[i]]}\t${strands & 2 ? \"-\" : \"+\"}\t0M`\n );\n }\n for (let p = 0; p < walks.names.length; p++) {\n const name = walks.names[p];\n const fields = panSNFields(name);\n const start = walks.starts[p];\n const end = walks.ends[p];\n const steps = [];\n for (let s = walks.offsets[p]; s < walks.offsets[p + 1]; s++) {\n steps.push([names[walks.steps[s]], walks.reversed[s]]);\n }\n lines.push(\n fields ? `W\t${fields.sample}\t${fields.haplotype}\t${fields.contig}\t${start}\t${end}\t${steps.map(([id, rev]) => (rev ? \"<\" : \">\") + id).join(\"\")}${walkStopTags(walks, p)}` : `P\t${pLineName(name, start, end)}\t${steps.map(([id, rev]) => id + (rev ? \"-\" : \"+\")).join(\",\")}\t*`\n );\n }\n return lines.join(\"\\n\");\n}\n\nexport {\n tablePath,\n tableNodeIds,\n graphFromTables,\n graphTablesGFA\n};\n", "import {\n tableNodeIds,\n tablePath\n} from \"./chunk-FTVESWXT.js\";\nimport {\n gapParts\n} from \"./chunk-VA5U4F23.js\";\nimport {\n pathOrigin\n} from \"./chunk-BRH73RCH.js\";\nimport {\n groupBy\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n panSNContig,\n panSNFields,\n panSNHaplotype,\n panSNSample\n} from \"./chunk-2JL2JVZ2.js\";\n\n// src/layout/walkRowRuns.ts\nvar RUN_ON_REFERENCE = 1;\nvar RUN_REVERSED = 2;\nvar RUN_GAP = 4;\nvar GAP_CAUSES = [\n void 0,\n \"missing\",\n \"elsewhere\",\n \"unknown\",\n \"abridged\",\n \"deleted\"\n];\nvar CAUSE_SHIFT = 3;\nvar causeFlags = (cause) => GAP_CAUSES.indexOf(cause) << CAUSE_SHIFT;\nfunction referenceOf(names, referencePath, rankZero) {\n return referencePath !== void 0 && names.includes(referencePath) ? referencePath : names.find((n) => rankZero.has(n)) ?? names[0];\n}\nfunction referenceWalkName(graph) {\n return referenceOf(\n (graph.paths ?? []).map((p) => pathOrigin(p.name).name),\n graph.referencePath,\n new Set(\n graph.nodes.flatMap(\n (n) => n.stable?.rank === 0 ? [n.stable.refName] : []\n )\n )\n );\n}\nvar namesReference = (reference) => {\n const contig = reference && panSNContig(reference);\n return (name) => name !== void 0 && (name === reference || name === contig);\n};\nfunction graphPieces(graph) {\n const index = /* @__PURE__ */ new Map();\n const names = [];\n const lengths = [];\n const indexOf = (id) => {\n let i = index.get(id);\n if (i === void 0) {\n i = names.length;\n index.set(id, i);\n names.push(id);\n lengths.push(0);\n }\n return i;\n };\n const reference = referenceWalkName(graph);\n const onReferenceContig = namesReference(reference);\n const stable = /* @__PURE__ */ new Map();\n for (const node of graph.nodes) {\n const i = indexOf(node.id);\n lengths[i] = node.length;\n if (node.stable?.rank === 0 && onReferenceContig(node.stable.refName)) {\n stable.set(i, node.stable.start);\n }\n }\n const heads = graph.paths ?? [];\n const from = new Int32Array(heads.length);\n const to = new Int32Array(heads.length);\n const steps = [];\n heads.forEach((path, p) => {\n from[p] = steps.length;\n for (const id of path.nodeIds) {\n steps.push(indexOf(id));\n }\n to[p] = steps.length;\n });\n return {\n heads,\n from,\n to,\n steps: Int32Array.from(steps),\n lengths: Int32Array.from(lengths),\n names,\n reference,\n stableStart: (node) => stable.get(node) ?? Number.NaN\n };\n}\nfunction tablePieces(tables, referencePath, visits) {\n const { nodes: n, walks: w } = tables;\n const kept = [];\n for (let p = 0; p < w.names.length; p++) {\n if (w.offsets[p + 1] > w.offsets[p]) {\n kept.push(p);\n }\n }\n const heads = kept.map((p) => tablePath(w, p));\n const rankZero = /* @__PURE__ */ new Set();\n for (let i = 0; i < n.lengths.length; i++) {\n if (n.refs[i] >= 0 && n.ranks[i] === 0) {\n rankZero.add(n.refNames[n.refs[i]]);\n }\n }\n const reference = referenceOf(\n heads.map((h) => pathOrigin(h.name).name),\n referencePath,\n rankZero\n );\n const onReferenceContig = namesReference(reference);\n return {\n heads,\n from: Int32Array.from(kept, (p) => w.offsets[p]),\n to: Int32Array.from(kept, (p) => w.offsets[p + 1]),\n steps: w.steps,\n lengths: n.lengths,\n // a visit names its node as the Graph does, which costs a pass over the\n // steps\n names: visits ? tableNodeIds(tables) : n.names,\n reference,\n stableStart: (node) => node < n.lengths.length && n.ranks[node] === 0 && onReferenceContig(n.refNames[n.refs[node]]) ? n.starts[node] : Number.NaN\n };\n}\nfunction sampleOf(path) {\n return path.sample ?? panSNSample(path.name);\n}\nfunction labelOf(path) {\n return path.haplotype !== void 0 && path.sample !== void 0 ? `${path.sample}#${path.haplotype}` : sampleOf(path);\n}\nvar Columns = class {\n constructor(width) {\n this.offsets = [0];\n this.values = Array.from({ length: width }, () => []);\n }\n get length() {\n return this.values[0].length;\n }\n push(a, b, c, d, e) {\n const v = this.values;\n v[0].push(a);\n v[1].push(b);\n v[2].push(c);\n v[3].push(d);\n if (e !== void 0) {\n v[4].push(e);\n }\n }\n endRow() {\n this.offsets.push(this.length);\n }\n // the rows in `order`, column i in the array `make[i]` makes\n reorder(order, make) {\n const offsets = new Uint32Array(order.length + 1);\n order.forEach((row, i) => {\n offsets[i + 1] = offsets[i] + this.offsets[row + 1] - this.offsets[row];\n });\n const columns = make.map((m, c) => {\n const from = this.values[c];\n const out = m(this.length);\n let at = 0;\n for (const row of order) {\n for (let k = this.offsets[row]; k < this.offsets[row + 1]; k++) {\n out[at++] = from[k];\n }\n }\n return out;\n });\n return { offsets, columns };\n }\n};\nvar float64 = (n) => new Float64Array(n);\nfunction walkRowRuns(source, region, o = {}) {\n const {\n heads,\n from,\n to,\n steps: all,\n lengths,\n names,\n reference,\n stableStart\n } = \"walks\" in source ? tablePieces(source, o.referencePath, o.visits) : graphPieces(source);\n const declared = lengths.length;\n const lengthOf = (node) => node < declared ? lengths[node] : 0;\n const nameOf = (p) => pathOrigin(heads[p].name).name;\n const startOf = (p) => heads[p].start;\n const byStart = (a, b) => (startOf(a) ?? 0) - (startOf(b) ?? 0);\n const pieceIds = heads.map((_, p) => p);\n const referencePieces = pieceIds.filter((p) => nameOf(p) === reference).sort(byStart);\n const first = referencePieces[0];\n const others = pieceIds.filter((p) => nameOf(p) !== reference);\n const { skips } = source;\n if (first === void 0 || others.length === 0 && !skips?.names.length) {\n return void 0;\n }\n const walks = groupBy(others, nameOf);\n const spanStart = new Float64Array(names.length).fill(Number.NaN);\n const spanEnd = new Float64Array(names.length);\n const revisits = /* @__PURE__ */ new Map();\n let flankEnd = -Infinity;\n let flankStart = Infinity;\n const cut = region && region.end > region.start ? region : void 0;\n for (const piece of referencePieces) {\n let pos = startOf(piece) ?? 0;\n for (let s = from[piece], stop = to[piece]; s < stop; s++) {\n const node = all[s];\n const len = lengthOf(node);\n if (!Number.isNaN(spanStart[node])) {\n const starts = revisits.get(node);\n if (starts) {\n starts.push(pos);\n } else {\n revisits.set(node, [spanStart[node], pos]);\n }\n } else {\n spanStart[node] = pos;\n spanEnd[node] = pos + len;\n if (cut) {\n if (pos + len <= cut.start) {\n flankEnd = Math.max(flankEnd, pos + len);\n }\n if (pos >= cut.end) {\n flankStart = Math.min(flankStart, pos);\n }\n }\n }\n pos += len;\n }\n }\n const flanked = cut === void 0 || flankEnd > -Infinity && flankStart < Infinity;\n const runs = new Columns(5);\n const chunks = [];\n const chunkIndex = /* @__PURE__ */ new Map();\n const chunkOf = (chunk2) => {\n if (!chunk2) {\n return -1;\n }\n const key = `${chunk2.refName}:${chunk2.start}`;\n let i = chunkIndex.get(key);\n if (i === void 0) {\n i = chunks.length;\n chunkIndex.set(key, i);\n chunks.push(chunk2);\n }\n return i;\n };\n const visits = o.visits ? new Columns(4) : void 0;\n let steps = new Int32Array(0);\n let stepStart = new Float64Array(0);\n const rowOf = (pieces) => {\n const head = heads[pieces[0]];\n const ordered = [...pieces].sort(byStart);\n let count = ordered.length - 1;\n let abridgedSteps = 0;\n for (const piece of ordered) {\n count += to[piece] - from[piece] + (heads[piece].abridged ? 1 : 0);\n abridgedSteps += heads[piece].abridged?.steps ?? 0;\n }\n if (count > steps.length) {\n steps = new Int32Array(count * 2);\n stepStart = new Float64Array(count * 2);\n }\n let length = 0;\n let unplaced = false;\n let end;\n let previous;\n const partsAt = /* @__PURE__ */ new Map();\n let owed = 0;\n for (const piece of ordered) {\n const start2 = startOf(piece);\n const jump = start2 === void 0 || end === void 0 ? 0 : start2 - end;\n if (start2 === void 0 || jump < 0) {\n unplaced = true;\n }\n if (jump < 0 && heads[previous].abridged) {\n owed -= jump;\n }\n const covered = Math.min(owed, Math.max(jump, 0));\n owed -= covered;\n const gap = jump - covered;\n if (gap > 0) {\n partsAt.set(\n length,\n gapParts(\n gap,\n previous === void 0 ? void 0 : heads[previous].after,\n heads[piece].before\n )\n );\n steps[length] = -gap;\n stepStart[length++] = end;\n }\n let pos = start2 ?? 0;\n const abridged = heads[piece].abridged;\n for (let s = from[piece], stop2 = to[piece]; s < stop2; s++) {\n const node = all[s];\n const bp3 = abridged ? abridged.bp - (pos - (start2 ?? 0)) - lengthOf(node) : 0;\n if (bp3 > 0 && s === stop2 - 1 && s > from[piece]) {\n partsAt.set(length, [{ bp: bp3, cause: \"abridged\" }]);\n steps[length] = -bp3;\n stepStart[length++] = pos;\n pos += bp3;\n }\n steps[length] = node;\n stepStart[length++] = pos;\n pos += lengthOf(node);\n }\n end = start2 === void 0 ? void 0 : pos;\n previous = piece;\n }\n const onReference = (i) => i >= 0 && i < length && steps[i] >= 0 && !Number.isNaN(spanStart[steps[i]]);\n const stepEnd = (i) => {\n const id = steps[i];\n return stepStart[i] + (id < 0 ? -id : lengthOf(id));\n };\n const partialSide = (i0, i1) => {\n const flank = i0 >= 0 ? i0 : i1;\n let near = -1;\n for (let d = 1; near < 0 && d < length; d++) {\n near = [flank - d, flank + d].find(onReference) ?? -1;\n }\n if (near < 0) {\n return void 0;\n }\n const forward = near > flank === spanStart[steps[near]] > spanStart[steps[flank]];\n const after = forward === (flank === i0);\n const last2 = after ? length - 1 : 0;\n const contigEnds = onReference(last2);\n const stop2 = {\n contigEnds,\n shortBp: contigEnds ? Math.max(\n 0,\n cut.start - spanEnd[steps[last2]],\n spanStart[steps[last2]] - cut.end\n ) : 0\n };\n return {\n stop: stop2,\n lo: after ? flank + 1 : 0,\n hi: after ? length : flank,\n backward: !forward,\n axisStart: forward ? after ? stepEnd(flank) : stepStart[0] : after ? stepEnd(length - 1) : stepStart[flank]\n };\n };\n let lo = 0;\n let hi = length;\n let backward = false;\n let complete = true;\n let flankFrom = -1;\n let flankTo = -1;\n let axisStart;\n let stop;\n const trimAbridged = (inner, bp3) => {\n const parts = partsAt.get(inner);\n const gap = parts?.[0];\n if (bp3 <= 0 || gap?.cause !== \"abridged\") {\n return 0;\n }\n const trimmed = Math.min(bp3, gap.bp);\n partsAt.set(\n inner,\n gap.bp > trimmed ? [{ ...gap, bp: gap.bp - trimmed }] : []\n );\n steps[inner] += trimmed;\n return trimmed;\n };\n const abridgedAt = (i) => partsAt.get(i)?.[0]?.cause === \"abridged\";\n const placeStart = (i) => {\n const id = steps[i];\n if (id < 0 || partsAt.has(i)) {\n return Number.NaN;\n }\n return Number.isNaN(spanStart[id]) && (abridgedAt(i - 1) || abridgedAt(i + 1)) ? stableStart(id) : spanStart[id];\n };\n let leftTrim = 0;\n let rightTrim = 0;\n if (cut && flanked) {\n let i0 = -1;\n let i1 = -1;\n let bestEnd = -Infinity;\n let bestStart = Infinity;\n for (let i = 0; i < length; i++) {\n const start2 = placeStart(i);\n if (!Number.isNaN(start2)) {\n const end2 = start2 + lengthOf(steps[i]);\n if (end2 <= cut.start && end2 > bestEnd) {\n bestEnd = end2;\n i0 = i;\n }\n if (start2 >= cut.end && start2 < bestStart) {\n bestStart = start2;\n i1 = i;\n }\n }\n }\n if (i0 < 0 || i1 < 0) {\n complete = false;\n const inside = i0 >= 0 || i1 >= 0 ? partialSide(i0, i1) : void 0;\n if (inside) {\n ;\n ({ lo, hi, backward, axisStart, stop } = inside);\n }\n } else {\n lo = Math.min(i0, i1) + 1;\n hi = Math.max(i0, i1);\n backward = i0 > i1;\n flankFrom = i0;\n flankTo = i1;\n const inward = backward ? -1 : 1;\n leftTrim = trimAbridged(i0 + inward, flankEnd - bestEnd);\n rightTrim = trimAbridged(i1 - inward, bestStart - flankStart);\n }\n }\n const contig = head.contig ?? panSNContig(pathOrigin(head.name).name);\n const axis2 = unplaced || length === 0 ? void 0 : axisStart !== void 0 ? { contig, start: axisStart, reversed: backward } : flankFrom < 0 ? { contig, start: stepStart[0], reversed: false } : flankFrom < flankTo ? {\n contig,\n start: stepEnd(flankFrom) + leftTrim,\n reversed: false\n } : {\n contig,\n start: stepStart[flankFrom] - leftTrim,\n reversed: true\n };\n let bp2 = 0;\n let offReferenceBp = 0;\n let gapBp = 0;\n let step = 0;\n let last = -1;\n let lastFlags = 0;\n let lastRef = Number.NaN;\n let cursor = Number.NaN;\n const placeOf = (id) => {\n const starts = revisits.get(id);\n if (!starts || Number.isNaN(cursor)) {\n return spanStart[id];\n }\n const len = lengthOf(id);\n let best = starts[0];\n let bestGap = Infinity;\n for (const start2 of starts) {\n const gap = Math.min(\n Math.abs(start2 - cursor),\n Math.abs(start2 + len - cursor)\n );\n if (gap < bestGap) {\n best = start2;\n bestGap = gap;\n }\n }\n return best;\n };\n const [, runBp, runRef, runFlags] = runs.values;\n for (let k = lo; k < hi; k++) {\n const index = backward ? hi - 1 - (k - lo) : k;\n const id = steps[index];\n const parts = partsAt.get(index);\n if (parts) {\n for (const part of backward ? [...parts].reverse() : parts) {\n runs.push(\n bp2,\n part.bp,\n Number.NaN,\n RUN_GAP | causeFlags(part.cause),\n chunkOf(part.chunk)\n );\n bp2 += part.bp;\n }\n last = runs.length - 1;\n lastFlags = RUN_GAP;\n lastRef = Number.NaN;\n gapBp += -id;\n step = 0;\n continue;\n }\n const len = lengthOf(id);\n const at = placeOf(id);\n const on = !Number.isNaN(at);\n visits?.push(id, bp2, len, on ? 1 : 0);\n const placed = last >= 0 && !Number.isNaN(lastRef);\n const forward = on && placed && step >= 0 && lastRef + (runBp[last] ?? 0) === at;\n const back = on && placed && step <= 0 && at + len === lastRef;\n if (!on && last >= 0 && !(lastFlags & (RUN_ON_REFERENCE | RUN_GAP))) {\n runBp[last] += len;\n } else if (forward || back) {\n runBp[last] += len;\n if (!forward) {\n lastRef = at;\n runRef[last] = at;\n lastFlags |= RUN_REVERSED;\n runFlags[last] = lastFlags;\n }\n step = forward ? 1 : -1;\n } else {\n lastFlags = on ? RUN_ON_REFERENCE : 0;\n lastRef = on ? at : Number.NaN;\n runs.push(bp2, len, lastRef, lastFlags, -1);\n last = runs.length - 1;\n step = 0;\n }\n bp2 += len;\n if (on) {\n cursor = step < 0 ? at : at + len;\n } else {\n offReferenceBp += len;\n }\n }\n runs.endRow();\n visits?.endRow();\n return {\n name: head.name,\n label: labelOf(head),\n sample: sampleOf(head),\n haplotype: head.haplotype,\n bp: bp2,\n offReferenceBp,\n gapBp,\n complete,\n stop,\n axis: axis2,\n ...abridgedSteps > 0 ? { abridgedSteps } : {},\n ...leftTrim + rightTrim > 0 ? { estimated: true } : {}\n };\n };\n const skipRowOf = (name, start2, end, bar2) => {\n const from2 = bar2 ? Math.max(start2, bar2.start) : start2;\n const bp2 = Math.max((bar2 ? Math.min(end, bar2.end) : end) - from2, 0);\n runs.push(\n from2 - (bar2 ? bar2.start : start2),\n bp2,\n Number.NaN,\n RUN_GAP | causeFlags(\"deleted\"),\n -1\n );\n runs.endRow();\n visits?.endRow();\n const head = { name, ...panSNFields(name) };\n return {\n name,\n label: labelOf(head),\n sample: sampleOf(head),\n haplotype: head.haplotype,\n bp: 0,\n offReferenceBp: 0,\n gapBp: bp2,\n complete: true,\n stop: void 0,\n axis: void 0,\n deletionBp: end - start2\n };\n };\n const referenceRow = rowOf(referencePieces);\n const rows = [...walks.values()].map((pieces, i) => ({\n meta: rowOf(pieces),\n row: i + 1\n }));\n const drawn = new Set(walks.keys());\n const { axis } = referenceRow;\n const bar = axis ? {\n start: axis.start,\n end: axis.start + referenceRow.bp + referenceRow.gapBp\n } : cut;\n skips?.names.forEach((name, k) => {\n const contig = pathOrigin(name).name;\n if (!drawn.has(contig)) {\n drawn.add(contig);\n rows.push({\n meta: skipRowOf(contig, skips.starts[k], skips.ends[k], bar),\n row: rows.length + 1\n });\n }\n });\n const metas = [referenceRow, ...rows.map((r) => r.meta)];\n if (new Set(metas.map((m) => m.label)).size < metas.length) {\n for (const meta of metas) {\n meta.label = panSNHaplotype(meta.name) ?? meta.label;\n }\n }\n rows.sort(\n (a, b) => Number(b.meta.complete) - Number(a.meta.complete) || b.meta.bp - a.meta.bp || a.meta.label.localeCompare(b.meta.label)\n );\n const order = [0, ...rows.map((r) => r.row)];\n const { offsets, columns } = runs.reorder(order, [\n float64,\n float64,\n float64,\n (n) => new Uint8Array(n),\n (n) => new Int32Array(n)\n ]);\n const [start, bp, referenceStart, flags, chunk] = columns;\n return {\n origin: cut ? cut.start : startOf(first) ?? 0,\n rows: [referenceRow, ...rows.map((r) => r.meta)],\n offsets,\n start,\n bp,\n referenceStart,\n flags,\n chunk,\n chunks,\n visits: visits && visitColumns(visits, order, names)\n };\n}\nfunction visitColumns(visits, order, names) {\n const { offsets, columns } = visits.reorder(order, [\n (n) => new Int32Array(n),\n float64,\n float64,\n (n) => new Uint8Array(n)\n ]);\n const [node, start, bp, onReference] = columns;\n return { offsets, node, start, bp, onReference, names };\n}\nfunction runAt(t, k) {\n const f = t.flags[k];\n const run = {\n start: t.start[k],\n bp: t.bp[k],\n onReference: (f & RUN_ON_REFERENCE) !== 0\n };\n if (f & RUN_GAP) {\n run.gap = true;\n const cause = GAP_CAUSES[f >> CAUSE_SHIFT & 7];\n if (cause) {\n run.cause = cause;\n }\n const chunk = t.chunks[t.chunk[k]];\n if (chunk) {\n run.chunk = chunk;\n }\n } else {\n run.referenceStart = Number.isNaN(t.referenceStart[k]) ? void 0 : t.referenceStart[k];\n }\n if (f & RUN_REVERSED) {\n run.reversed = true;\n }\n return run;\n}\nfunction visitsOf(v, row) {\n const out = [];\n for (let k = v.offsets[row]; k < v.offsets[row + 1]; k++) {\n out.push({\n node: v.names[v.node[k]],\n start: v.start[k],\n bp: v.bp[k],\n onReference: v.onReference[k] === 1\n });\n }\n return out;\n}\nfunction walkRowsOf(t, unit) {\n const rows = t.rows.map((meta, i) => {\n const runs = [];\n for (let k = t.offsets[i]; k < t.offsets[i + 1]; k++) {\n runs.push(runAt(t, k));\n }\n return {\n ...meta,\n runs,\n visits: t.visits && visitsOf(t.visits, i)\n };\n });\n return { origin: t.origin, unit, reference: rows[0], rows: rows.slice(1) };\n}\n\nexport {\n referenceWalkName,\n walkRowRuns,\n runAt,\n walkRowsOf\n};\n"],
5
+ "mappings": "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",
6
6
  "names": ["START_STOP_TAG", "END_STOP_TAG", "STOP_KINDS", "GAP_CAUSE_TEXT", "OUTSIDE_TEXT", "gapParts", "bp", "after", "before", "left", "right", "rest", "lead", "trail", "elsewhere", "s", "part", "stopAt", "table", "i", "ref", "stopOf", "kind", "trimmed", "chunk", "cut", "parseStopTag", "value", "kind", "fields", "bp", "trimmed", "chunk", "field", "at", "stopOf", "stopFields", "before", "after", "walkStopFields", "tags", "START_STOP_TAG", "END_STOP_TAG", "StopColumns", "stop", "STOP_KINDS", "chunk", "ref", "pLineName", "name", "start", "end", "tablePath", "w", "p", "walkName", "fields", "panSNFields", "steps", "abridged", "stopFields", "stopAt", "namesByList", "lists", "names", "listCount", "pathNames", "starts", "list", "i", "fill", "grouped", "listed", "_", "out", "k", "tableNodeIds", "n", "l", "traversals", "canonical", "claim", "node", "reversed", "stepCount", "s", "segment", "graphFromTables", "skips", "count", "declared", "drawnWalks", "ids", "nodes", "ref", "edges", "neighbours", "pairList", "a", "b", "near", "j", "addPair", "edgeLists", "adjacency", "adjacentNode", "adjacentList", "listOf", "nameIndex", "crossedList", "crossedName", "crossings", "lastWalk", "paths", "anchorPaths", "totalSteps", "visitPath", "visitStart", "visitReversed", "visitOrder", "blocks", "pathSamples", "edgeNameIndex", "edgeNames", "head", "pathName", "visitName", "named", "panSNSample", "edgeNamed", "visitSample", "first", "nodeIds", "pos", "prev", "at", "listNames", "edge", "walked", "PathVisits", "RUN_ON_REFERENCE", "RUN_REVERSED", "RUN_GAP", "GAP_CAUSES", "CAUSE_SHIFT", "causeFlags", "cause", "referenceOf", "names", "referencePath", "rankZero", "referenceWalkName", "graph", "p", "pathOrigin", "n", "namesReference", "reference", "contig", "panSNContig", "name", "graphPieces", "index", "lengths", "indexOf", "id", "i", "onReferenceContig", "stable", "node", "heads", "from", "to", "steps", "path", "tablePieces", "tables", "visits", "w", "kept", "tablePath", "h", "tableNodeIds", "sampleOf", "panSNSample", "labelOf", "Columns", "width", "a", "b", "c", "d", "e", "v", "order", "make", "offsets", "row", "columns", "m", "out", "at", "k", "float64", "walkRowRuns", "source", "region", "o", "all", "stableStart", "declared", "lengthOf", "nameOf", "startOf", "byStart", "pieceIds", "_", "referencePieces", "first", "others", "skips", "walks", "groupBy", "spanStart", "spanEnd", "revisits", "flankEnd", "flankStart", "cut", "piece", "pos", "s", "stop", "len", "starts", "flanked", "runs", "chunks", "chunkIndex", "chunkOf", "chunk2", "key", "stepStart", "rowOf", "pieces", "head", "ordered", "count", "abridgedSteps", "length", "unplaced", "end", "previous", "partsAt", "owed", "start2", "jump", "covered", "gap", "gapParts", "abridged", "stop2", "bp3", "onReference", "stepEnd", "partialSide", "i0", "i1", "flank", "near", "forward", "after", "last2", "contigEnds", "lo", "hi", "backward", "complete", "flankFrom", "flankTo", "axisStart", "trimAbridged", "inner", "trimmed", "abridgedAt", "placeStart", "leftTrim", "rightTrim", "bestEnd", "bestStart", "end2", "inside", "inward", "axis2", "bp2", "offReferenceBp", "gapBp", "step", "last", "lastFlags", "lastRef", "cursor", "placeOf", "best", "bestGap", "runBp", "runRef", "runFlags", "parts", "part", "on", "placed", "back", "skipRowOf", "bar2", "from2", "panSNFields", "referenceRow", "rows", "drawn", "axis", "bar", "metas", "r", "meta", "panSNHaplotype", "start", "bp", "referenceStart", "flags", "chunk", "visitColumns", "runAt", "f", "run", "visitsOf", "walkRowsOf", "unit"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{A as N,C as I,d as H,g as _,h as A,i as W,k as X,l as j,m as z,n as F,s as O,t as E,v as Y,x as J,y as K}from"./chunk-VZNECPSI.js";import{Eb as R,Gb as B,Ob as D,r as S,s as M}from"./chunk-YDJ6SDQM.js";import"./chunk-AILGRHTE.js";import"./chunk-6NR64IXK.js";import{n as P}from"./chunk-CI6VQ2KV.js";import"./chunk-IICQFAGJ.js";import"./chunk-47KLT4FL.js";import"./chunk-UOWS2HEQ.js";import"./chunk-PVRRW4PM.js";import"./chunk-3M3UH5JQ.js";import"./chunk-6VNDP3UB.js";import"./chunk-3WG3GF2A.js";import"./chunk-NIEZKWQV.js";import{a as k,b as e,c as f}from"./chunk-JMBDTNUR.js";var m=JBrowseExports["@jbrowse/display-kit/renderDisplaySvg"],rt=t=>m!=null&&t in Object(m)?m[t]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+t+"' from '@jbrowse/display-kit/renderDisplaySvg' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:t});var U=rt("renderDisplaySvg");var dt=m&&m.__esModule?m.default:m;var w=JBrowseExports["@jbrowse/core/util/paintLayer"],ot=t=>w!=null&&t in Object(w)?w[t]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+t+"' from '@jbrowse/core/util/paintLayer' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:t}),C=ot("PaintLayer"),yt=w&&w.__esModule?w.default:w;var L={fontFamily:"sans-serif",fontSize:11},Z=16,at=2,V=t=>t;function q({model:t,lift:a,drawPaths:i,width:n,height:r,rasterize:l}){let o=t.buildDrawing(a,i);if(!o)return null;let s=l?at:1,c=l?void 0:R(n,r),y=c?.canvas??document.createElement("canvas");c||(y.width=Math.round(n*s),y.height=Math.round(r*s));let{scaleX:b,scaleY:x,translateX:d,translateY:g}=t.screenTransform,h=new B(y);return h.uploadGeometry(o.batch),h.updateTransform({scaleX:b*s,scaleY:x*s,translateX:d*s,translateY:g*s,dpr:s}),h.render([0,0,0,0]),c?e("svg",{width:n,height:r,overflow:"hidden",children:e("g",{dangerouslySetInnerHTML:{__html:c.markup()}})}):e("image",{width:n,height:r,href:y.toDataURL("image/png")})}function it(t,a,i,n){let r=n?0:E,l=t.toUpperCase();return{key:a,width:l.length*P,height:i+r,draw:o=>e("text",{fontFamily:"sans-serif",fontSize:9.5,fontWeight:600,letterSpacing:"0.06em",x:o,y:r,fill:O,children:l},a)}}function $(t,a,i=Z,n){if(!t.swatch)return{key:t.key,width:t.label.length*P,height:i,draw:c=>e("text",{...L,x:c,y:0,fill:"#666",children:t.label},t.key)};let r=t.swatch,l=n??_(r),o=n===void 0?0:n+5,s=(t.strong??"")+t.label;return{key:t.key,width:Math.max(l+5+s.length*P,o+(t.under?.length??0)*P),height:t.under?i*2:i,draw:c=>f("g",{...L,children:[e(F,{swatch:r,x:c+(l-_(r))/2,id:a}),f("text",{x:c+l+5,y:0,children:[t.strong?e("tspan",{fontWeight:"bold",children:t.strong}):null,t.label]}),t.under?e("text",{x:c+o,y:i,children:t.under}):null]},t.key)}}function st({model:t,idPrefix:a}){let i=z(t);if(i.length===0)return null;let n=i.flatMap(p=>p.rows),r=W(n),l=A(n),o=i.flatMap(({testid:p,rows:u,heading:v,spaced:G},tt)=>[...v?[it(v,`${p}-heading`,r,tt===0)]:[],...G?[{key:`${p}-gap`,width:0,height:E,draw:()=>null}]:[],...u.map((et,nt)=>$(et,`${a}-${p}-${nt}`,r,l))]),s=6,c=o.reduce((p,u)=>Math.max(p,u.width),-1/0)+s*2,y=o.reduce((p,u)=>p+u.height,0)+s,x=t.paneWidth-D-c+s,d=D+t.referenceStripZonePx,g=[],h=d+s/2+r/2+4;for(let p of o)g.push({row:p,y:h}),h+=p.height;return f("g",{"data-testid":"graph-svg-keys",children:[e("rect",{x:x-s,y:d,width:c,height:y,rx:3,fill:"#fff"}),g.map(({row:p,y:u})=>e("g",{transform:`translate(0 ${u})`,children:p.draw(x)},p.key))]})}function Q({x:t,y:a,text:i,fontSize:n,anchor:r,bold:l}){let o=i.length*n*.56+6,s=r==="middle"?t-o/2:t-3;return f(k,{children:[e("rect",{x:s,y:a-n*.65,width:o,height:n*1.3,rx:3,fill:"#fff",fillOpacity:.8}),e("text",{x:t,y:a+n*.35,textAnchor:r,fontSize:n,fontWeight:l?600:void 0,fill:"#18181c",children:i})]})}function lt({model:t}){return e("g",{fontFamily:L.fontFamily,children:t.overlayLabels.sizes.map(({key:a,text:i,x:n,y:r,kind:l,leader:o})=>f("g",{children:[o?e("line",{x1:o.arcX,y1:o.arcY,x2:o.labelX,y2:o.labelY,stroke:"#18181c"}):null,e(Q,{x:n,y:r,text:i,fontSize:10,anchor:"middle",bold:l==="deletion"})]},a))})}function pt({model:t}){return e("g",{fontFamily:L.fontFamily,children:t.visibleRowLabels.map(({label:a,y:i,top:n})=>e(Q,{x:10,y:n,text:a,fontSize:11,anchor:"start"},i))})}function ct({model:t,rasterize:a,idPrefix:i}){let n=t.facetPanels,r=t.facetGrid,l=t.facetPlacement;if(!n||!r||!l)return null;let{columns:o,width:s,height:c}=r,y=r.total+S+14,b=j(t).map((d,g)=>$(d,`${i}-facet-key-${g}`)),x=b.map((d,g)=>b.slice(0,g).reduce((h,p)=>h+p.width+14,6));return f(k,{children:[e("g",{transform:`translate(0 ${y})`,children:b.map((d,g)=>d.draw(x[g]))}),n.map((d,g)=>{let h=l.cells[g],p=h%o*(s+S),u=Math.floor(h/o)*(M+c+S),v=d.walks[0],G=$(X(t,v),`${i}-facet-${g}`);return f("g",{transform:`translate(${p} ${u})`,children:[e("g",{transform:`translate(0 ${Z-2})`,children:G.draw(6)}),e("g",{transform:`translate(0 ${M})`,children:e(q,{model:t,lift:d,drawPaths:!1,width:s,height:c,rasterize:a})})]},v.name)})]})}function T({model:t,rasterize:a=!1,idPrefix:i}){let n=t.paneWidth,r=t.canvasHeight,l=!!t.layoutResult?.tubeMap,o={rasterizeLayers:a};return f("g",{"data-testid":"graph-pane-svg",children:[t.facetPanels?e(ct,{model:t,rasterize:a,idPrefix:i}):l?e(C,{width:n,height:r,opts:o,paint:s=>{N(V(s),t,{highlightNode:null})}}):e(q,{model:t,lift:t.drawnHighlight,drawPaths:t.effectiveDrawPaths,width:n,height:r,rasterize:a}),t.facetPanels?null:f(k,{children:[e(H,{model:t}),e(Y,{model:t}),e(lt,{model:t}),e(J,{model:t}),e(I,{model:t,vector:!0}),e(pt,{model:t})]}),t.referenceStripShown?e(C,{width:n,height:r,opts:o,paint:s=>{K(V(s),t,{lit:void 0,dpr:1})}}):null,t.facetPanels?null:e(st,{model:t,idPrefix:i})]})}function gt({model:t,opts:a}){return e(T,{model:t,rasterize:!!a?.rasterizeLayers,idPrefix:`graph-${t.id}`})}function At(t,a){return U(t,a,gt)}export{At as renderGraphTrackSvg};
2
- //# sourceMappingURL=renderSvg-W2VIM3IT.js.map
1
+ import{A as N,C as I,d as H,g as _,h as A,i as W,k as X,l as j,m as z,n as F,s as O,t as E,v as Y,x as J,y as K}from"./chunk-LYJ4FZFC.js";import{Eb as R,Gb as B,Ob as D,r as S,s as M}from"./chunk-LVRR7SZH.js";import"./chunk-QX7UU3CV.js";import"./chunk-AK6XQ7XZ.js";import{n as P}from"./chunk-FUKZO5AZ.js";import"./chunk-YGTSPKS5.js";import"./chunk-7CZC4GOZ.js";import"./chunk-YRAIRXY6.js";import"./chunk-AZUO4NZ5.js";import"./chunk-JKW2OX73.js";import"./chunk-6VNDP3UB.js";import"./chunk-3WG3GF2A.js";import"./chunk-NIEZKWQV.js";import{a as k,b as e,c as f}from"./chunk-JMBDTNUR.js";var m=JBrowseExports["@jbrowse/display-kit/renderDisplaySvg"],rt=t=>m!=null&&t in Object(m)?m[t]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+t+"' from '@jbrowse/display-kit/renderDisplaySvg' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:t});var U=rt("renderDisplaySvg");var dt=m&&m.__esModule?m.default:m;var w=JBrowseExports["@jbrowse/core/util/paintLayer"],ot=t=>w!=null&&t in Object(w)?w[t]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+t+"' from '@jbrowse/core/util/paintLayer' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:t}),C=ot("PaintLayer"),yt=w&&w.__esModule?w.default:w;var L={fontFamily:"sans-serif",fontSize:11},Z=16,at=2,V=t=>t;function q({model:t,lift:a,drawPaths:i,width:n,height:r,rasterize:l}){let o=t.buildDrawing(a,i);if(!o)return null;let s=l?at:1,c=l?void 0:R(n,r),y=c?.canvas??document.createElement("canvas");c||(y.width=Math.round(n*s),y.height=Math.round(r*s));let{scaleX:b,scaleY:x,translateX:d,translateY:g}=t.screenTransform,h=new B(y);return h.uploadGeometry(o.batch),h.updateTransform({scaleX:b*s,scaleY:x*s,translateX:d*s,translateY:g*s,dpr:s}),h.render([0,0,0,0]),c?e("svg",{width:n,height:r,overflow:"hidden",children:e("g",{dangerouslySetInnerHTML:{__html:c.markup()}})}):e("image",{width:n,height:r,href:y.toDataURL("image/png")})}function it(t,a,i,n){let r=n?0:E,l=t.toUpperCase();return{key:a,width:l.length*P,height:i+r,draw:o=>e("text",{fontFamily:"sans-serif",fontSize:9.5,fontWeight:600,letterSpacing:"0.06em",x:o,y:r,fill:O,children:l},a)}}function $(t,a,i=Z,n){if(!t.swatch)return{key:t.key,width:t.label.length*P,height:i,draw:c=>e("text",{...L,x:c,y:0,fill:"#666",children:t.label},t.key)};let r=t.swatch,l=n??_(r),o=n===void 0?0:n+5,s=(t.strong??"")+t.label;return{key:t.key,width:Math.max(l+5+s.length*P,o+(t.under?.length??0)*P),height:t.under?i*2:i,draw:c=>f("g",{...L,children:[e(F,{swatch:r,x:c+(l-_(r))/2,id:a}),f("text",{x:c+l+5,y:0,children:[t.strong?e("tspan",{fontWeight:"bold",children:t.strong}):null,t.label]}),t.under?e("text",{x:c+o,y:i,children:t.under}):null]},t.key)}}function st({model:t,idPrefix:a}){let i=z(t);if(i.length===0)return null;let n=i.flatMap(p=>p.rows),r=W(n),l=A(n),o=i.flatMap(({testid:p,rows:u,heading:v,spaced:G},tt)=>[...v?[it(v,`${p}-heading`,r,tt===0)]:[],...G?[{key:`${p}-gap`,width:0,height:E,draw:()=>null}]:[],...u.map((et,nt)=>$(et,`${a}-${p}-${nt}`,r,l))]),s=6,c=o.reduce((p,u)=>Math.max(p,u.width),-1/0)+s*2,y=o.reduce((p,u)=>p+u.height,0)+s,x=t.paneWidth-D-c+s,d=D+t.referenceStripZonePx,g=[],h=d+s/2+r/2+4;for(let p of o)g.push({row:p,y:h}),h+=p.height;return f("g",{"data-testid":"graph-svg-keys",children:[e("rect",{x:x-s,y:d,width:c,height:y,rx:3,fill:"#fff"}),g.map(({row:p,y:u})=>e("g",{transform:`translate(0 ${u})`,children:p.draw(x)},p.key))]})}function Q({x:t,y:a,text:i,fontSize:n,anchor:r,bold:l}){let o=i.length*n*.56+6,s=r==="middle"?t-o/2:t-3;return f(k,{children:[e("rect",{x:s,y:a-n*.65,width:o,height:n*1.3,rx:3,fill:"#fff",fillOpacity:.8}),e("text",{x:t,y:a+n*.35,textAnchor:r,fontSize:n,fontWeight:l?600:void 0,fill:"#18181c",children:i})]})}function lt({model:t}){return e("g",{fontFamily:L.fontFamily,children:t.overlayLabels.sizes.map(({key:a,text:i,x:n,y:r,kind:l,leader:o})=>f("g",{children:[o?e("line",{x1:o.arcX,y1:o.arcY,x2:o.labelX,y2:o.labelY,stroke:"#18181c"}):null,e(Q,{x:n,y:r,text:i,fontSize:10,anchor:"middle",bold:l==="deletion"})]},a))})}function pt({model:t}){return e("g",{fontFamily:L.fontFamily,children:t.visibleRowLabels.map(({label:a,y:i,top:n})=>e(Q,{x:10,y:n,text:a,fontSize:11,anchor:"start"},i))})}function ct({model:t,rasterize:a,idPrefix:i}){let n=t.facetPanels,r=t.facetGrid,l=t.facetPlacement;if(!n||!r||!l)return null;let{columns:o,width:s,height:c}=r,y=r.total+S+14,b=j(t).map((d,g)=>$(d,`${i}-facet-key-${g}`)),x=b.map((d,g)=>b.slice(0,g).reduce((h,p)=>h+p.width+14,6));return f(k,{children:[e("g",{transform:`translate(0 ${y})`,children:b.map((d,g)=>d.draw(x[g]))}),n.map((d,g)=>{let h=l.cells[g],p=h%o*(s+S),u=Math.floor(h/o)*(M+c+S),v=d.walks[0],G=$(X(t,v),`${i}-facet-${g}`);return f("g",{transform:`translate(${p} ${u})`,children:[e("g",{transform:`translate(0 ${Z-2})`,children:G.draw(6)}),e("g",{transform:`translate(0 ${M})`,children:e(q,{model:t,lift:d,drawPaths:!1,width:s,height:c,rasterize:a})})]},v.name)})]})}function T({model:t,rasterize:a=!1,idPrefix:i}){let n=t.paneWidth,r=t.canvasHeight,l=!!t.layoutResult?.tubeMap,o={rasterizeLayers:a};return f("g",{"data-testid":"graph-pane-svg",children:[t.facetPanels?e(ct,{model:t,rasterize:a,idPrefix:i}):l?e(C,{width:n,height:r,opts:o,paint:s=>{N(V(s),t,{highlightNode:null})}}):e(q,{model:t,lift:t.drawnHighlight,drawPaths:t.effectiveDrawPaths,width:n,height:r,rasterize:a}),t.facetPanels?null:f(k,{children:[e(H,{model:t}),e(Y,{model:t}),e(lt,{model:t}),e(J,{model:t}),e(I,{model:t,vector:!0}),e(pt,{model:t})]}),t.referenceStripShown?e(C,{width:n,height:r,opts:o,paint:s=>{K(V(s),t,{lit:void 0,dpr:1})}}):null,t.facetPanels?null:e(st,{model:t,idPrefix:i})]})}function gt({model:t,opts:a}){return e(T,{model:t,rasterize:!!a?.rasterizeLayers,idPrefix:`graph-${t.id}`})}function At(t,a){return U(t,a,gt)}export{At as renderGraphTrackSvg};
2
+ //# sourceMappingURL=renderSvg-IZZ2QBWS.js.map