jbrowse-plugin-graphgenomeviewer 7.4.3 → 7.4.4

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 (121) hide show
  1. package/README.md +10 -7
  2. package/dist/chunks/{AddTrackWorkflow-LK25EC3H.js → AddTrackWorkflow-NLSZYK56.js} +2 -2
  3. package/dist/chunks/{GbzBaseSyntenyAdapter-EKLUEECW.js → GbzBaseSyntenyAdapter-A5MNPCKX.js} +2 -2
  4. package/dist/chunks/{GbzBaseSyntenyAdapter-EKLUEECW.js.map → GbzBaseSyntenyAdapter-A5MNPCKX.js.map} +1 -1
  5. package/dist/chunks/{GraphGenomeView-P3XMSKUQ.js → GraphGenomeView-SEAPDRXS.js} +2 -2
  6. package/dist/chunks/{GraphTrackSettingsDialog-UTYH6HEC.js → GraphTrackSettingsDialog-EVIIGC5G.js} +2 -2
  7. package/dist/chunks/{HighlightColorDialog-G6AFRYUD.js → HighlightColorDialog-QAYWLO5I.js} +2 -2
  8. package/dist/chunks/{LinearGraphDisplay-O4SQSXJJ.js → LinearGraphDisplay-ZC4BQ27J.js} +2 -2
  9. package/dist/chunks/MinigraphBubbleAdapter-3QM4XV47.js +2 -0
  10. package/dist/chunks/{MinigraphBubbleAdapter-3NJ2VLN2.js.map → MinigraphBubbleAdapter-3QM4XV47.js.map} +1 -1
  11. package/dist/chunks/{RgfaTabixAdapter-55DGDID2.js → RgfaTabixAdapter-XSOIEWBK.js} +2 -2
  12. package/dist/chunks/WalkFormsAdapter-FT2SW4H6.js +2 -0
  13. package/dist/chunks/WalkFormsAdapter-FT2SW4H6.js.map +7 -0
  14. package/dist/chunks/{WalkTabixSyntenyAdapter-NHNSZZBX.js → WalkTabixSyntenyAdapter-3WRVNDLB.js} +2 -2
  15. package/dist/chunks/{chunk-CXOMX2I6.js → chunk-2KVE7YAS.js} +1 -1
  16. package/dist/chunks/{chunk-CXOMX2I6.js.map → chunk-2KVE7YAS.js.map} +1 -1
  17. package/dist/chunks/{chunk-K4TFAHGC.js → chunk-6SWXMRAV.js} +1 -1
  18. package/dist/chunks/{chunk-K4TFAHGC.js.map → chunk-6SWXMRAV.js.map} +1 -1
  19. package/dist/chunks/{chunk-ZAYC5OMQ.js → chunk-6VNU7SD4.js} +2 -2
  20. package/dist/chunks/{chunk-ZAYC5OMQ.js.map → chunk-6VNU7SD4.js.map} +1 -1
  21. package/dist/chunks/{chunk-MCE6STZR.js → chunk-6WUWQX2P.js} +2 -2
  22. package/dist/chunks/{chunk-MCE6STZR.js.map → chunk-6WUWQX2P.js.map} +1 -1
  23. package/dist/chunks/{chunk-TGSDXZXI.js → chunk-7RJMG6I2.js} +2 -2
  24. package/dist/chunks/{chunk-TGSDXZXI.js.map → chunk-7RJMG6I2.js.map} +1 -1
  25. package/dist/chunks/chunk-FTXDTU27.js +3 -0
  26. package/dist/chunks/chunk-FTXDTU27.js.map +7 -0
  27. package/dist/chunks/chunk-G53BI7VK.js +2 -0
  28. package/dist/chunks/{chunk-6OXXT2YP.js.map → chunk-G53BI7VK.js.map} +4 -4
  29. package/dist/chunks/chunk-GRTN25B6.js +3 -0
  30. package/dist/chunks/chunk-GRTN25B6.js.map +7 -0
  31. package/dist/chunks/{chunk-OKRGO7XA.js → chunk-HCDKP3IP.js} +2 -2
  32. package/dist/chunks/{chunk-OKRGO7XA.js.map → chunk-HCDKP3IP.js.map} +1 -1
  33. package/dist/chunks/{chunk-F2DMEJEK.js → chunk-HF4H6LQI.js} +2 -2
  34. package/dist/chunks/{chunk-MVVXRZXV.js → chunk-JRJHXLGP.js} +2 -2
  35. package/dist/chunks/{chunk-MVVXRZXV.js.map → chunk-JRJHXLGP.js.map} +2 -2
  36. package/dist/chunks/{chunk-DUPBXBYE.js → chunk-KIYRMZWP.js} +2 -2
  37. package/dist/chunks/{chunk-DUPBXBYE.js.map → chunk-KIYRMZWP.js.map} +1 -1
  38. package/dist/chunks/{chunk-XQFBLJU5.js → chunk-LE43I4PT.js} +2 -2
  39. package/dist/chunks/{chunk-CNNZDE6I.js → chunk-LE7FZM6Y.js} +2 -2
  40. package/dist/chunks/{chunk-CNNZDE6I.js.map → chunk-LE7FZM6Y.js.map} +1 -1
  41. package/dist/chunks/chunk-MUONTMYZ.js +2 -0
  42. package/dist/chunks/chunk-MUONTMYZ.js.map +7 -0
  43. package/dist/chunks/{chunk-MNCPMOHJ.js → chunk-OJWBLPPH.js} +2 -2
  44. package/dist/chunks/{chunk-UOFWYS6T.js → chunk-P3FBI5ML.js} +1 -1
  45. package/dist/chunks/{chunk-UOFWYS6T.js.map → chunk-P3FBI5ML.js.map} +1 -1
  46. package/dist/chunks/chunk-QV7SSOMJ.js +2 -0
  47. package/dist/chunks/chunk-S333HOG5.js +2 -0
  48. package/dist/chunks/chunk-S333HOG5.js.map +7 -0
  49. package/dist/chunks/{chunk-QJ43NDYS.js → chunk-TYV6UXJA.js} +2 -2
  50. package/dist/chunks/chunk-VZQ6VOUP.js +2 -0
  51. package/dist/chunks/chunk-VZQ6VOUP.js.map +7 -0
  52. package/dist/chunks/chunk-WLRRI35A.js +3 -0
  53. package/dist/chunks/chunk-WLRRI35A.js.map +7 -0
  54. package/dist/chunks/{chunk-NPV7SRJD.js → chunk-XXBE4IFZ.js} +2 -2
  55. package/dist/chunks/{chunk-NPV7SRJD.js.map → chunk-XXBE4IFZ.js.map} +1 -1
  56. package/dist/chunks/{renderSvg-7G6NWBXF.js → renderSvg-ZIUOPWJQ.js} +2 -2
  57. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +3 -4
  58. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +4 -4
  59. package/package.json +3 -3
  60. package/src/GraphGenomeView/model.test.ts +2 -109
  61. package/src/GraphGenomeView/pane/fitViews.ts +0 -109
  62. package/src/GraphGenomeView/pane/graphViews.ts +0 -4
  63. package/src/GraphGenomeView/pane/launchActions.ts +0 -22
  64. package/src/GraphGenomeView/pane/paneBase.ts +0 -7
  65. package/src/GraphGenomeView/viewModel.ts +0 -3
  66. package/src/RgfaTabixAdapter/configSchema.ts +3 -3
  67. package/src/RgfaTabixAdapter/walkFiles.test.ts +6 -6
  68. package/src/WalkFormsAdapter/WalkFormsAdapter.test.ts +204 -0
  69. package/src/WalkFormsAdapter/WalkFormsAdapter.ts +232 -0
  70. package/src/WalkFormsAdapter/configSchema.ts +127 -0
  71. package/src/WalkFormsAdapter/formRows.test.ts +258 -0
  72. package/src/WalkFormsAdapter/formRows.ts +231 -0
  73. package/src/WalkFormsAdapter/formsMenu.test.ts +237 -0
  74. package/src/WalkFormsAdapter/formsMenu.ts +202 -0
  75. package/src/WalkFormsAdapter/index.ts +21 -0
  76. package/src/WalkFormsAdapter/pinned.ts +33 -0
  77. package/src/WalkTabixSyntenyAdapter/WalkTabixSyntenyAdapter.test.ts +5 -5
  78. package/src/WalkTabixSyntenyAdapter/configSchema.ts +2 -2
  79. package/src/index.ts +4 -0
  80. package/src/panSNAliases/panSNAliases.test.ts +2 -2
  81. package/src/version.ts +1 -1
  82. package/dist/chunks/MinigraphBubbleAdapter-3NJ2VLN2.js +0 -2
  83. package/dist/chunks/chunk-4I3K4RHE.js +0 -2
  84. package/dist/chunks/chunk-4I3K4RHE.js.map +0 -7
  85. package/dist/chunks/chunk-6OXXT2YP.js +0 -2
  86. package/dist/chunks/chunk-NFH2U74B.js +0 -2
  87. package/dist/chunks/chunk-P7VMOTUM.js +0 -3
  88. package/dist/chunks/chunk-P7VMOTUM.js.map +0 -7
  89. package/dist/chunks/chunk-RU4WSKBO.js +0 -3
  90. package/dist/chunks/chunk-RU4WSKBO.js.map +0 -7
  91. package/dist/chunks/chunk-WGTLNVST.js +0 -2
  92. package/dist/chunks/chunk-WGTLNVST.js.map +0 -7
  93. package/dist/chunks/chunk-Y5DNBFDY.js +0 -3
  94. package/dist/chunks/chunk-Y5DNBFDY.js.map +0 -7
  95. /package/dist/chunks/{AddTrackWorkflow-LK25EC3H.js.map → AddTrackWorkflow-NLSZYK56.js.map} +0 -0
  96. /package/dist/chunks/{GraphGenomeView-P3XMSKUQ.js.map → GraphGenomeView-SEAPDRXS.js.map} +0 -0
  97. /package/dist/chunks/{GraphTrackSettingsDialog-UTYH6HEC.js.map → GraphTrackSettingsDialog-EVIIGC5G.js.map} +0 -0
  98. /package/dist/chunks/{HighlightColorDialog-G6AFRYUD.js.map → HighlightColorDialog-QAYWLO5I.js.map} +0 -0
  99. /package/dist/chunks/{LinearGraphDisplay-O4SQSXJJ.js.map → LinearGraphDisplay-ZC4BQ27J.js.map} +0 -0
  100. /package/dist/chunks/{RgfaTabixAdapter-55DGDID2.js.map → RgfaTabixAdapter-XSOIEWBK.js.map} +0 -0
  101. /package/dist/chunks/{WalkTabixSyntenyAdapter-NHNSZZBX.js.map → WalkTabixSyntenyAdapter-3WRVNDLB.js.map} +0 -0
  102. /package/dist/chunks/{chunk-F2DMEJEK.js.map → chunk-HF4H6LQI.js.map} +0 -0
  103. /package/dist/chunks/{chunk-XQFBLJU5.js.map → chunk-LE43I4PT.js.map} +0 -0
  104. /package/dist/chunks/{chunk-MNCPMOHJ.js.map → chunk-OJWBLPPH.js.map} +0 -0
  105. /package/dist/chunks/{chunk-NFH2U74B.js.map → chunk-QV7SSOMJ.js.map} +0 -0
  106. /package/dist/chunks/{chunk-QJ43NDYS.js.map → chunk-TYV6UXJA.js.map} +0 -0
  107. /package/dist/chunks/{renderSvg-7G6NWBXF.js.map → renderSvg-ZIUOPWJQ.js.map} +0 -0
  108. /package/src/RgfaTabixAdapter/test_data/{walks4_follow.GRCh38.walks.bed.gz → walks5_follow.GRCh38.walks.bed.gz} +0 -0
  109. /package/src/RgfaTabixAdapter/test_data/{walks4_follow.GRCh38.walks.bed.gz.tbi → walks5_follow.GRCh38.walks.bed.gz.tbi} +0 -0
  110. /package/src/RgfaTabixAdapter/test_data/{walks4_header.GRCh38.walks.bed.gz → walks5_header.GRCh38.walks.bed.gz} +0 -0
  111. /package/src/RgfaTabixAdapter/test_data/{walks4_header.GRCh38.walks.bed.gz.tbi → walks5_header.GRCh38.walks.bed.gz.tbi} +0 -0
  112. /package/src/RgfaTabixAdapter/test_data/{walks4_inversion.GRCh38.walks.bed.gz → walks5_inversion.GRCh38.walks.bed.gz} +0 -0
  113. /package/src/RgfaTabixAdapter/test_data/{walks4_inversion.GRCh38.walks.bed.gz.tbi → walks5_inversion.GRCh38.walks.bed.gz.tbi} +0 -0
  114. /package/src/RgfaTabixAdapter/test_data/{walks4_lanepairs.GRCh38.walks.bed.gz → walks5_lanepairs.GRCh38.walks.bed.gz} +0 -0
  115. /package/src/RgfaTabixAdapter/test_data/{walks4_lanepairs.GRCh38.walks.bed.gz.tbi → walks5_lanepairs.GRCh38.walks.bed.gz.tbi} +0 -0
  116. /package/src/RgfaTabixAdapter/test_data/{walks4_maxnode.GRCh38.walks.bed.gz → walks5_maxnode.GRCh38.walks.bed.gz} +0 -0
  117. /package/src/RgfaTabixAdapter/test_data/{walks4_maxnode.GRCh38.walks.bed.gz.tbi → walks5_maxnode.GRCh38.walks.bed.gz.tbi} +0 -0
  118. /package/src/RgfaTabixAdapter/test_data/{walks4_rejoin.GRCh38.walks.bed.gz → walks5_rejoin.GRCh38.walks.bed.gz} +0 -0
  119. /package/src/RgfaTabixAdapter/test_data/{walks4_rejoin.GRCh38.walks.bed.gz.tbi → walks5_rejoin.GRCh38.walks.bed.gz.tbi} +0 -0
  120. /package/src/RgfaTabixAdapter/test_data/{walks4_twopart.GRCh38.walks.bed.gz → walks5_twopart.GRCh38.walks.bed.gz} +0 -0
  121. /package/src/RgfaTabixAdapter/test_data/{walks4_twopart.GRCh38.walks.bed.gz.tbi → walks5_twopart.GRCh38.walks.bed.gz.tbi} +0 -0
@@ -0,0 +1,2 @@
1
+ import{c as Wt,o as Ht,r as pt}from"./chunk-LE7FZM6Y.js";import{a as St,c as Dt,d as Vt,e as Zt}from"./chunk-6SWXMRAV.js";var fe="ws",ce="we",Xt=["elsewhere","break","end"],ke={missing:"not in the graph",elsewhere:"on nodes filed elsewhere",unknown:"gap, cause unknown",abridged:"abridged: steps not loaded"},ye="outside the extracted subgraph";function Kt(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),i=t-n-r,h=e?.kind==="break"?Math.min(e.bp,i):0;i-=h;let c=s?.kind==="break"?Math.min(s.bp,i):0;i-=c;let o=[e,s].find(k=>k?.kind==="elsewhere");return[{bp:n},{bp:h,cause:"missing"},o?.kind==="elsewhere"?{bp:i,cause:"elsewhere",chunk:o.chunk}:{bp:i,cause:"unknown"},{bp:c,cause:"missing"},{bp:r}].filter(k=>k.bp>0)}function xt(t,e){let s=t.bp[e],n=t.chunkRefs[e];return qt(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 qt(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 zt(t){let[e,...s]=t.split(","),n,r=0,i;for(let h of s)if(h.startsWith("bp="))n=+h.slice(3);else if(h.startsWith("trimmed="))r=+h.slice(8);else if(h.startsWith("chunk=")){let c=h.lastIndexOf(":");i={refName:h.slice(6,c),start:+h.slice(c+1)}}return qt(e,n,r,i)}function Ft(t,e){return{...t?{before:t}:{},...e?{after:e}:{}}}function Ae(t){let e=t[fe],s=t[ce];return Ft(typeof e=="string"?zt(e):void 0,typeof s=="string"?zt(s):void 0)}var we=class{constructor(){this.kinds=[],this.bp=[],this.trimmed=[],this.chunkRefs=[],this.chunkStarts=[],this.chunkRefNames=[],this.refIndex=new Map}push(t){this.kinds.push(Xt.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:[...Xt],bp:Float64Array.from(this.bp),trimmed:Float64Array.from(this.trimmed),chunkRefs:Int32Array.from(this.chunkRefs),chunkStarts:Float64Array.from(this.chunkStarts),chunkRefNames:this.chunkRefNames}}};function le(t,e,s){return e===0?t:`${t}:${e}-${s}`}function Mt(t,e){let s=t.names[e],n=Zt(s),r=t.starts[e],i=t.abridgedSteps?.[e]??Number.NaN,h=Number.isNaN(i)?{}:{abridged:{steps:i,bp:t.abridgedBp?.[e]??0}};return n?{name:`${n.sample}#${n.haplotype}#${n.contig}`,start:r,...n,...Ft(t.before&&xt(t.before,e),t.after&&xt(t.after,e)),...h}:{name:le(s,r,t.ends[e]),start:r}}function he(t,e,s,n){let r=new Int32Array(s+1);for(let o of t)r[o+1]++;for(let o=0;o<s;o++)r[o+1]+=r[o];let i=r.slice(0,s),h=new Int32Array(t.length);t.forEach((o,p)=>{h[i[o]++]=e[p]});let c=new Int32Array(n.length).fill(-1);return Array.from({length:s},(o,p)=>{let k=[];for(let R=r[p];R<r[p+1];R++){let j=h[R];c[j]!==p&&(c[j]=p,k.push(n[j]))}return k})}function Tt({nodes:t,links:e,walks:s},n){let r=new Uint8Array(t.names.length),i=(c,o)=>{r[c]===0&&(r[c]=o?2:1)};for(let c=0;c<e.from.length;c++)i(e.from[c],e.strands[c]&1),i(e.to[c],e.strands[c]&2);let h=s.offsets[s.names.length]??0;for(let c=0;c<h;c++){let o=s.steps[c];i(o,s.reversed[c]),n&&n[o]++}return t.names.map((c,o)=>`${c}${r[o]===2?"-":"+"}`)}function xe({nodes:t,links:e,walks:s},n="Imported GFA"){let r=t.names.length,i=t.lengths.length,h=[];for(let a=0;a<s.names.length;a++)s.offsets[a+1]>s.offsets[a]&&h.push(a);let c=new Int32Array(r),o=Tt({nodes:t,links:e,walks:s},c),p=[];for(let a=0;a<i;a++){let v=t.refs[a];p.push({id:o[a],name:t.names[a],length:t.lengths[a],depth:Math.max(c[a],1),stable:v<0?void 0:{refName:t.refNames[v],start:t.starts[a],rank:t.ranks[a]},samples:void 0})}let k=[],R=new Array(r),j=(a,v)=>{let u=R[a];if(u){for(let w=0;w<u.length;w+=2)if(u[w]===v)return u[w+1]}},W=(a,v,u)=>{let w=R[a];w?w.push(v,u):R[a]=[v,u]},at=[],tt=0;for(let a=0;a<e.from.length;a++){let v=e.from[a],u=e.to[a];k.push({from:o[v],to:o[u],fromStrand:e.strands[a]&1?"-":"+",toStrand:e.strands[a]&2?"-":"+"});let w=j(v,u);w===void 0&&(w=tt++,W(v,u,w),W(u,v,w)),at.push(w)}let M=new Int32Array(r+1);for(let a=0;a<r;a++)M[a+1]=M[a]+(R[a]?.length??0)/2;let it=new Int32Array(M[r]),ft=new Int32Array(M[r]);R.forEach((a,v)=>{for(let u=0;u<a.length;u+=2)it[M[v]+u/2]=a[u],ft[M[v]+u/2]=a[u+1]});let Rt=(a,v)=>{for(let u=M[a];u<M[a+1];u++)if(it[u]===v)return ft[u];return-1},O=new Map,B=[],V=new Int32Array(s.offsets[s.names.length]??0),ct=new Int32Array(V.length),et=0,x=new Int32Array(tt).fill(-1),gt=[],U=[],Z=s.offsets[s.names.length]??0,lt=new Int32Array(Z),Nt=new Float64Array(Z),H=new Uint8Array(Z),I=new Int32Array(r).fill(-1),T=[],G=[0],st=[],X=new Map,z=[];for(let a of h){let v=Mt(s,a),{start:u,name:w}=v,K=v.sample===void 0?s.names[a]:w,q=O.get(K);q===void 0&&(q=B.length,O.set(K,q),B.push(K),st.push(St(K)));let f=X.get(w);f===void 0&&(f=z.length,X.set(w,f),z.push(w));let g=st[q],$=s.offsets[a],L=new Array(s.offsets[a+1]-$),E=u,y=-1;for(let P=$;P<s.offsets[a+1];P++){let S=s.steps[P];L[P-$]=o[S],I[S]===-1&&(I[S]=G.at(-1),G.push(I[S]+c[S]),T.push(S));let J=I[S]++;if(lt[J]=q,Nt[J]=E,H[J]=s.reversed[P],E+=S<i?t.lengths[S]:0,y>=0){let D=Rt(y,S);D>=0&&x[D]!==a&&(x[D]=a,V[et]=D,ct[et++]=f)}y=S}gt.push({...v,nodeIds:L}),U.push({name:K,sample:g,start:u,length:E-u})}let bt=he(V.subarray(0,et),ct,tt,z);k.forEach((a,v)=>{let u=bt[at[v]];u.length>0&&(a.pathIds=u)});let ht=h.length>0;return{name:n,nodes:p,edges:k,paths:ht?gt:void 0,anchorPaths:ht?U:void 0,pathVisits:ht?new Ht({segments:T.map(a=>t.names[a]),offsets:Int32Array.from(G),path:lt.subarray(0,G.at(-1)),start:Nt.subarray(0,G.at(-1)),reversed:H.subarray(0,G.at(-1)),paths:B,samples:st}):void 0,anchoredBy:p.some(a=>a.stable)?"tags":void 0}}var Pt=1,Qt=2,It=4,Yt=[void 0,"missing","elsewhere","unknown","abridged"],te=3,ue=t=>Yt.indexOf(t)<<te;function ee(t,e,s){return e!==void 0&&t.includes(e)?e:t.find(n=>s.has(n))??t[0]}function de(t){return ee((t.paths??[]).map(e=>pt(e.name).name),t.referencePath,new Set(t.nodes.flatMap(e=>e.stable?.rank===0?[e.stable.refName]:[])))}function pe(t){let e=new Map,s=[],n=[],r=p=>{let k=e.get(p);return k===void 0&&(k=s.length,e.set(p,k),s.push(p),n.push(0)),k};for(let p of t.nodes)n[r(p.id)]=p.length;let i=t.paths??[],h=new Int32Array(i.length),c=new Int32Array(i.length),o=[];return i.forEach((p,k)=>{h[k]=o.length;for(let R of p.nodeIds)o.push(r(R));c[k]=o.length}),{heads:i,from:h,to:c,steps:Int32Array.from(o),lengths:Int32Array.from(n),names:s,reference:de(t)}}function me(t,e,s){let{nodes:n,walks:r}=t,i=[];for(let o=0;o<r.names.length;o++)r.offsets[o+1]>r.offsets[o]&&i.push(o);let h=i.map(o=>Mt(r,o)),c=new Set;for(let o=0;o<n.lengths.length;o++)n.refs[o]>=0&&n.ranks[o]===0&&c.add(n.refNames[n.refs[o]]);return{heads:h,from:Int32Array.from(i,o=>r.offsets[o]),to:Int32Array.from(i,o=>r.offsets[o+1]),steps:r.steps,lengths:n.lengths,names:s?Tt(t):n.names,reference:ee(h.map(o=>pt(o.name).name),e,c)}}function se(t){return t.sample??St(t.name)}function ge(t){return t.haplotype!==void 0&&t.sample!==void 0?`${t.sample}#${t.haplotype}`:se(t)}var Jt=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 i=this.values;i[0].push(t),i[1].push(e),i[2].push(s),i[3].push(n),r!==void 0&&i[4].push(r)}endRow(){this.offsets.push(this.length)}reorder(t,e){let s=new Uint32Array(t.length+1);t.forEach((r,i)=>{s[i+1]=s[i]+this.offsets[r+1]-this.offsets[r]});let n=e.map((r,i)=>{let h=this.values[i],c=r(this.length),o=0;for(let p of t)for(let k=this.offsets[p];k<this.offsets[p+1];k++)c[o++]=h[k];return c});return{offsets:s,columns:n}}},mt=t=>new Float64Array(t);function je(t,e,s={}){let{heads:n,from:r,to:i,steps:h,lengths:c,names:o,reference:p}="walks"in t?me(t,s.referencePath,s.visits):pe(t),k=c.length,R=f=>f<k?c[f]:0,j=f=>pt(n[f].name).name,W=f=>n[f].start,at=(f,g)=>(W(f)??0)-(W(g)??0),tt=n.map((f,g)=>g),M=tt.filter(f=>j(f)===p).sort(at),it=M[0],ft=tt.filter(f=>j(f)!==p);if(it===void 0||ft.length===0)return;let Rt=Wt(ft,j),O=new Float64Array(o.length).fill(Number.NaN),B=new Float64Array(o.length),V=new Map,ct=!1,et=!1,x=e&&e.end>e.start?e:void 0;for(let f of M){let g=W(f)??0;for(let $=r[f],L=i[f];$<L;$++){let E=h[$],y=R(E);if(Number.isNaN(O[E]))O[E]=g,B[E]=g+y,x&&(ct||=g+y<=x.start,et||=g>=x.end);else{let P=V.get(E);P?P.push(g):V.set(E,[O[E],g])}g+=y}}let gt=x===void 0||ct&&et,U=new Jt(5),Z=[],lt=new Map,Nt=f=>{if(!f)return-1;let g=`${f.refName}:${f.start}`,$=lt.get(g);return $===void 0&&($=Z.length,lt.set(g,$),Z.push(f)),$},H=s.visits?new Jt(4):void 0,I=new Int32Array(0),T=new Float64Array(0),G=f=>{let g=n[f[0]],$=[...f].sort(at),L=$.length-1,E=0;for(let l of $)L+=i[l]-r[l]+(n[l].abridged?1:0),E+=n[l].abridged?.steps??0;L>I.length&&(I=new Int32Array(L*2),T=new Float64Array(L*2));let y=0,P=!1,S,J,D=new Map;for(let l of $){let d=W(l);(d===void 0||S!==void 0&&d<S)&&(P=!0),S!==void 0&&d!==void 0&&d>S&&(D.set(y,Kt(d-S,J===void 0?void 0:n[J].after,n[l].before)),I[y]=-(d-S),T[y++]=S);let b=d??0,A=n[l].abridged;for(let m=r[l],N=i[l];m<N;m++){let F=h[m],_=A?A.bp-(b-(d??0))-R(F):0;_>0&&m===N-1&&m>r[l]&&(D.set(y,[{bp:_,cause:"abridged"}]),I[y]=-_,T[y++]=b,b+=_),I[y]=F,T[y++]=b,b+=R(F)}S=d===void 0?void 0:b,J=l}let _t=l=>l>=0&&l<y&&I[l]>=0&&!Number.isNaN(O[I[l]]),$t=l=>{let d=I[l];return T[l]+(d<0?-d:R(d))},ne=(l,d)=>{let b=l>=0?l:d,A=-1;for(let Y=1;A<0&&Y<y;Y++)A=[b-Y,b+Y].find(_t)??-1;if(A<0)return;let m=A>b==O[I[A]]>O[I[b]],N=m===(b===l),F=N?y-1:0,_=_t(F);return{stop:{contigEnds:_,shortBp:_?Math.max(0,x.start-B[I[F]],O[I[F]]-x.end):0},lo:N?b+1:0,hi:N?y:b,backward:!m,axisStart:m?N?$t(b):T[0]:N?$t(y-1):T[b]}},vt=0,kt=y,ut=!1,Ut=!0,dt=-1,jt=-1,Ot,Bt;if(x&&gt){let l=-1,d=-1,b=-1/0,A=1/0;for(let m=0;m<y;m++){let N=I[m];N>=0&&!Number.isNaN(O[N])&&(B[N]<=x.start&&B[N]>b&&(b=B[N],l=m),O[N]>=x.end&&O[N]<A&&(A=O[N],d=m))}if(l<0||d<0){Ut=!1;let m=l>=0||d>=0?ne(l,d):void 0;m&&({lo:vt,hi:kt,backward:ut,axisStart:Ot,stop:Bt}=m)}else vt=Math.min(l,d)+1,kt=Math.max(l,d),ut=l>d,dt=l,jt=d}let yt=g.contig??Vt(pt(g.name).name),re=P||y===0?void 0:Ot!==void 0?{contig:yt,start:Ot,reversed:ut}:dt<0?{contig:yt,start:T[0],reversed:!1}:dt<jt?{contig:yt,start:$t(dt),reversed:!1}:{contig:yt,start:T[dt],reversed:!0},nt=0,Gt=0,Lt=0,rt=0,C=-1,ot=0,Q=Number.NaN,At=Number.NaN,oe=l=>{let d=V.get(l);if(!d||Number.isNaN(At))return O[l];let b=R(l),A=d[0],m=1/0;for(let N of d){let F=Math.min(Math.abs(N-At),Math.abs(N+b-At));F<m&&(A=N,m=F)}return A},[,Et,ae,ie]=U.values;for(let l=vt;l<kt;l++){let d=ut?kt-1-(l-vt):l,b=I[d];if(b<0){let Y=D.get(d);for(let wt of ut?[...Y].reverse():Y)U.push(nt,wt.bp,Number.NaN,It|ue(wt.cause),Nt(wt.chunk)),nt+=wt.bp;C=U.length-1,ot=It,Q=Number.NaN,Lt+=-b,rt=0;continue}let A=R(b),m=oe(b),N=!Number.isNaN(m);H?.push(b,nt,A,N?1:0);let F=C>=0&&!Number.isNaN(Q),_=N&&F&&rt>=0&&Q+(Et[C]??0)===m,Ct=N&&F&&rt<=0&&m+A===Q;!N&&C>=0&&!(ot&(Pt|It))?Et[C]+=A:_||Ct?(Et[C]+=A,_||(Q=m,ae[C]=m,ot|=Qt,ie[C]=ot),rt=_?1:-1):(ot=N?Pt:0,Q=N?m:Number.NaN,U.push(nt,A,Q,ot,-1),C=U.length-1,rt=0),nt+=A,N?At=rt<0?m:m+A:Gt+=A}return U.endRow(),H?.endRow(),{name:g.name,label:ge(g),sample:se(g),haplotype:g.haplotype,bp:nt,offReferenceBp:Gt,gapBp:Lt,complete:Ut,stop:Bt,axis:re,...E>0?{abridgedSteps:E}:{}}},st=G(M),X=[...Rt.values()].map((f,g)=>({meta:G(f),row:g+1})),z=[st,...X.map(f=>f.meta)];if(new Set(z.map(f=>f.label)).size<z.length)for(let f of z)f.label=Dt(f.name)??f.label;X.sort((f,g)=>Number(g.meta.complete)-Number(f.meta.complete)||g.meta.bp-f.meta.bp||f.meta.label.localeCompare(g.meta.label));let bt=[0,...X.map(f=>f.row)],{offsets:ht,columns:a}=U.reorder(bt,[mt,mt,mt,f=>new Uint8Array(f),f=>new Int32Array(f)]),[v,u,w,K,q]=a;return{origin:x?x.start:W(it)??0,rows:[st,...X.map(f=>f.meta)],offsets:ht,start:v,bp:u,referenceStart:w,flags:K,chunk:q,chunks:Z,visits:H&&Ne(H,bt,o)}}function Ne(t,e,s){let{offsets:n,columns:r}=t.reorder(e,[p=>new Int32Array(p),mt,mt,p=>new Uint8Array(p)]),[i,h,c,o]=r;return{offsets:n,node:i,start:h,bp:c,onReference:o,names:s}}function be(t,e){let s=t.flags[e],n={start:t.start[e],bp:t.bp[e],onReference:(s&Pt)!==0};if(s&It){n.gap=!0;let r=Yt[s>>te&7];r&&(n.cause=r);let i=t.chunks[t.chunk[e]];i&&(n.chunk=i)}else n.referenceStart=Number.isNaN(t.referenceStart[e])?void 0:t.referenceStart[e];return s&Qt&&(n.reversed=!0),n}function ve(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 Be(t,e){let s=t.rows.map((n,r)=>{let i=[];for(let h=t.offsets[r];h<t.offsets[r+1];h++)i.push(be(t,h));return{...n,runs:i,visits:t.visits&&ve(t.visits,r)}});return{origin:t.origin,unit:e,reference:s[0],rows:s.slice(1)}}export{fe as a,ce as b,ke as c,ye as d,Kt as e,zt as f,Ae as g,we as h,Mt as i,xe as j,de as k,je as l,Be as m};
2
+ //# sourceMappingURL=chunk-G53BI7VK.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.7.3/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-LG2UK4MB.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.7.3/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-7L7MN2OM.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.7.3/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-G7SG4XMK.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};\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-LG2UK4MB.js\";\nimport {\n PathVisits\n} from \"./chunk-ZPZ7GNBT.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 }, 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 };\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-7L7MN2OM.js\";\nimport {\n gapParts\n} from \"./chunk-LG2UK4MB.js\";\nimport {\n pathOrigin\n} from \"./chunk-3YBP46PB.js\";\nimport {\n groupBy\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n panSNContig,\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];\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}\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 for (const node of graph.nodes) {\n lengths[indexOf(node.id)] = node.length;\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: referenceWalkName(graph)\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 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: referenceOf(\n heads.map((h) => pathOrigin(h.name).name),\n referencePath,\n rankZero\n )\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 } = \"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 if (first === void 0 || others.length === 0) {\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 reachesBefore = false;\n let reachesAfter = false;\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 reachesBefore ||= pos + len <= cut.start;\n reachesAfter ||= pos >= cut.end;\n }\n }\n pos += len;\n }\n }\n const flanked = cut === void 0 || reachesBefore && reachesAfter;\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 for (const piece of ordered) {\n const start2 = startOf(piece);\n if (start2 === void 0 || end !== void 0 && start2 < end) {\n unplaced = true;\n }\n if (end !== void 0 && start2 !== void 0 && start2 > end) {\n partsAt.set(\n length,\n gapParts(\n start2 - end,\n previous === void 0 ? void 0 : heads[previous].after,\n heads[piece].before\n )\n );\n steps[length] = -(start2 - end);\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 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 id = steps[i];\n if (id >= 0 && !Number.isNaN(spanStart[id])) {\n if (spanEnd[id] <= cut.start && spanEnd[id] > bestEnd) {\n bestEnd = spanEnd[id];\n i0 = i;\n }\n if (spanStart[id] >= cut.end && spanStart[id] < bestStart) {\n bestStart = spanStart[id];\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 }\n }\n const contig = head.contig ?? panSNContig(pathOrigin(head.name).name);\n const axis = unplaced || length === 0 ? void 0 : axisStart !== void 0 ? { contig, start: axisStart, reversed: backward } : flankFrom < 0 ? { contig, start: stepStart[0], reversed: false } : flankFrom < flankTo ? { contig, start: stepEnd(flankFrom), reversed: false } : { contig, start: stepStart[flankFrom], reversed: true };\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 if (id < 0) {\n const parts = partsAt.get(index);\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,\n ...abridgedSteps > 0 ? { abridgedSteps } : {}\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 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
- "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", "count", "declared", "drawnWalks", "ids", "nodes", "ref", "edges", "neighbours", "pairList", "b", "near", "j", "addPair", "edgeLists", "a", "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", "graphPieces", "index", "lengths", "indexOf", "id", "i", "node", "heads", "from", "to", "steps", "path", "tablePieces", "tables", "visits", "w", "kept", "tablePath", "tableNodeIds", "h", "sampleOf", "panSNSample", "labelOf", "Columns", "width", "a", "b", "c", "d", "e", "v", "order", "make", "offsets", "row", "columns", "m", "out", "at", "float64", "walkRowRuns", "source", "region", "o", "all", "reference", "declared", "lengthOf", "nameOf", "startOf", "byStart", "pieceIds", "_", "referencePieces", "first", "others", "walks", "groupBy", "spanStart", "spanEnd", "revisits", "reachesBefore", "reachesAfter", "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", "start2", "gapParts", "abridged", "stop2", "bp3", "onReference", "stepEnd", "partialSide", "i0", "i1", "flank", "near", "forward", "after", "last2", "contigEnds", "lo", "hi", "backward", "complete", "flankFrom", "flankTo", "axisStart", "bestEnd", "bestStart", "inside", "contig", "panSNContig", "axis", "bp2", "offReferenceBp", "gapBp", "step", "last", "lastFlags", "lastRef", "cursor", "placeOf", "best", "bestGap", "gap", "runBp", "runRef", "runFlags", "k", "parts", "part", "on", "placed", "back", "referenceRow", "rows", "r", "start", "bp", "referenceStart", "flags", "chunk", "visitColumns", "runAt", "f", "run", "visitsOf", "walkRowsOf", "unit", "meta"]
3
+ "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.9.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-LG2UK4MB.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.9.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-7L7MN2OM.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.9.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-LODKC7PJ.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};\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-LG2UK4MB.js\";\nimport {\n PathVisits\n} from \"./chunk-ZPZ7GNBT.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 }, 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 };\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-7L7MN2OM.js\";\nimport {\n gapParts\n} from \"./chunk-LG2UK4MB.js\";\nimport {\n pathOrigin\n} from \"./chunk-3YBP46PB.js\";\nimport {\n groupBy\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n panSNContig,\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];\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}\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 for (const node of graph.nodes) {\n lengths[indexOf(node.id)] = node.length;\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: referenceWalkName(graph)\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 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: referenceOf(\n heads.map((h) => pathOrigin(h.name).name),\n referencePath,\n rankZero\n )\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 } = \"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 if (first === void 0 || others.length === 0) {\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 reachesBefore = false;\n let reachesAfter = false;\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 reachesBefore ||= pos + len <= cut.start;\n reachesAfter ||= pos >= cut.end;\n }\n }\n pos += len;\n }\n }\n const flanked = cut === void 0 || reachesBefore && reachesAfter;\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 for (const piece of ordered) {\n const start2 = startOf(piece);\n if (start2 === void 0 || end !== void 0 && start2 < end) {\n unplaced = true;\n }\n if (end !== void 0 && start2 !== void 0 && start2 > end) {\n partsAt.set(\n length,\n gapParts(\n start2 - end,\n previous === void 0 ? void 0 : heads[previous].after,\n heads[piece].before\n )\n );\n steps[length] = -(start2 - end);\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 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 id = steps[i];\n if (id >= 0 && !Number.isNaN(spanStart[id])) {\n if (spanEnd[id] <= cut.start && spanEnd[id] > bestEnd) {\n bestEnd = spanEnd[id];\n i0 = i;\n }\n if (spanStart[id] >= cut.end && spanStart[id] < bestStart) {\n bestStart = spanStart[id];\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 }\n }\n const contig = head.contig ?? panSNContig(pathOrigin(head.name).name);\n const axis = unplaced || length === 0 ? void 0 : axisStart !== void 0 ? { contig, start: axisStart, reversed: backward } : flankFrom < 0 ? { contig, start: stepStart[0], reversed: false } : flankFrom < flankTo ? { contig, start: stepEnd(flankFrom), reversed: false } : { contig, start: stepStart[flankFrom], reversed: true };\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 if (id < 0) {\n const parts = partsAt.get(index);\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,\n ...abridgedSteps > 0 ? { abridgedSteps } : {}\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 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": "0HACA,IAAIA,GAAiB,KACjBC,GAAe,KACfC,GAAa,CAAC,YAAa,QAAS,KAAK,EACzCC,GAAiB,CACnB,QAAS,mBACT,UAAW,2BACX,QAAS,qBACT,SAAU,4BACZ,EACIC,GAAe,iCACnB,SAASC,GAASC,EAAIC,EAAOC,EAAQ,CACnC,GAAI,CAACD,GAAS,CAACC,EACb,MAAO,CAAC,CAAE,GAAAF,CAAG,CAAC,EAEhB,IAAMG,EAAO,KAAK,IAAIF,GAAO,SAAW,EAAGD,CAAE,EACvCI,EAAQ,KAAK,IAAIF,GAAQ,SAAW,EAAGF,EAAKG,CAAI,EAClDE,EAAOL,EAAKG,EAAOC,EACjBE,EAAOL,GAAO,OAAS,QAAU,KAAK,IAAIA,EAAM,GAAII,CAAI,EAAI,EAClEA,GAAQC,EACR,IAAMC,EAAQL,GAAQ,OAAS,QAAU,KAAK,IAAIA,EAAO,GAAIG,CAAI,EAAI,EACrEA,GAAQE,EACR,IAAMC,EAAY,CAACP,EAAOC,CAAM,EAAE,KAAMO,GAAMA,GAAG,OAAS,WAAW,EAQrE,MAPc,CACZ,CAAE,GAAIN,CAAK,EACX,CAAE,GAAIG,EAAM,MAAO,SAAU,EAC7BE,GAAW,OAAS,YAAc,CAAE,GAAIH,EAAM,MAAO,YAAa,MAAOG,EAAU,KAAM,EAAI,CAAE,GAAIH,EAAM,MAAO,SAAU,EAC1H,CAAE,GAAIE,EAAO,MAAO,SAAU,EAC9B,CAAE,GAAIH,CAAM,CACd,EACa,OAAQM,GAASA,EAAK,GAAK,CAAC,CAC3C,CACA,SAASC,GAAOC,EAAOC,EAAG,CACxB,IAAMb,EAAKY,EAAM,GAAGC,CAAC,EACfC,EAAMF,EAAM,UAAUC,CAAC,EAC7B,OAAOE,GACLH,EAAM,UAAUA,EAAM,MAAMC,CAAC,CAAC,EAC9B,OAAO,MAAMb,CAAE,EAAI,OAASA,EAC5BY,EAAM,QAAQC,CAAC,EACfC,EAAM,EAAI,OAAS,CAAE,QAASF,EAAM,cAAcE,CAAG,EAAG,MAAOF,EAAM,YAAYC,CAAC,CAAE,CACtF,CACF,CACA,SAASE,GAAOC,EAAMhB,EAAIiB,EAASC,EAAO,CACxC,IAAMC,EAAMF,EAAU,EAAI,CAAE,QAAAA,CAAQ,EAAI,CAAC,EACzC,OAAID,IAAS,aAAeE,EACnB,CAAE,KAAAF,EAAM,MAAAE,EAAO,GAAGlB,IAAO,OAAS,CAAC,EAAI,CAAE,GAAAA,CAAG,EAAG,GAAGmB,CAAI,EAE3DH,IAAS,SAAWhB,IAAO,OACtB,CAAE,KAAAgB,EAAM,GAAAhB,EAAI,GAAGkB,EAAQ,CAAE,MAAAA,CAAM,EAAI,CAAC,EAAG,GAAGC,CAAI,EAEhDH,IAAS,MAAQ,CAAE,KAAAA,EAAM,GAAGG,CAAI,EAAI,MAC7C,CAcA,SAASC,GAAaC,EAAO,CAC3B,GAAM,CAACC,EAAM,GAAGC,CAAM,EAAIF,EAAM,MAAM,GAAG,EACrCG,EACAC,EAAU,EACVC,EACJ,QAAWC,KAASJ,EAClB,GAAII,EAAM,WAAW,KAAK,EACxBH,EAAK,CAACG,EAAM,MAAM,CAAC,UACVA,EAAM,WAAW,UAAU,EACpCF,EAAU,CAACE,EAAM,MAAM,CAAC,UACfA,EAAM,WAAW,QAAQ,EAAG,CACrC,IAAMC,EAAKD,EAAM,YAAY,GAAG,EAChCD,EAAQ,CAAE,QAASC,EAAM,MAAM,EAAGC,CAAE,EAAG,MAAO,CAACD,EAAM,MAAMC,EAAK,CAAC,CAAE,CACrE,CAEF,OAAOC,GAAOP,EAAME,EAAIC,EAASC,CAAK,CACxC,CACA,SAASI,GAAWC,EAAQC,EAAO,CACjC,MAAO,CACL,GAAGD,EAAS,CAAE,OAAAA,CAAO,EAAI,CAAC,EAC1B,GAAGC,EAAQ,CAAE,MAAAA,CAAM,EAAI,CAAC,CAC1B,CACF,CACA,SAASC,GAAeC,EAAM,CAC5B,IAAMH,EAASG,EAAKC,EAAc,EAC5BH,EAAQE,EAAKE,EAAY,EAC/B,OAAON,GACL,OAAOC,GAAW,SAAWX,GAAaW,CAAM,EAAI,OACpD,OAAOC,GAAU,SAAWZ,GAAaY,CAAK,EAAI,MACpD,CACF,CAcA,IAAIK,GAAc,KAAM,CACtB,aAAc,CACZ,KAAK,MAAQ,CAAC,EACd,KAAK,GAAK,CAAC,EACX,KAAK,QAAU,CAAC,EAChB,KAAK,UAAY,CAAC,EAClB,KAAK,YAAc,CAAC,EACpB,KAAK,cAAgB,CAAC,EACtB,KAAK,SAA2B,IAAI,GACtC,CACA,KAAKC,EAAM,CACT,KAAK,MAAM,KAAKC,GAAW,QAAQD,EAAK,IAAI,CAAC,EAC7C,KAAK,GAAG,KAAK,OAAQA,GAAQA,EAAK,KAAO,OAASA,EAAK,GAAK,GAAG,EAC/D,KAAK,QAAQ,KAAKA,EAAK,SAAW,CAAC,EACnC,IAAME,EAAQ,UAAWF,EAAOA,EAAK,MAAQ,OAC7C,GAAIE,EAAO,CACT,IAAIC,EAAM,KAAK,SAAS,IAAID,EAAM,OAAO,EACrCC,IAAQ,SACVA,EAAM,KAAK,cAAc,OACzB,KAAK,SAAS,IAAID,EAAM,QAASC,CAAG,EACpC,KAAK,cAAc,KAAKD,EAAM,OAAO,GAEvC,KAAK,UAAU,KAAKC,CAAG,EACvB,KAAK,YAAY,KAAKD,EAAM,KAAK,CACnC,MACE,KAAK,UAAU,KAAK,EAAE,EACtB,KAAK,YAAY,KAAK,GAAG,CAE7B,CACA,OAAQ,CACN,MAAO,CACL,MAAO,WAAW,KAAK,KAAK,KAAK,EACjC,UAAW,CAAC,GAAGD,EAAU,EACzB,GAAI,aAAa,KAAK,KAAK,EAAE,EAC7B,QAAS,aAAa,KAAK,KAAK,OAAO,EACvC,UAAW,WAAW,KAAK,KAAK,SAAS,EACzC,YAAa,aAAa,KAAK,KAAK,WAAW,EAC/C,cAAe,KAAK,aACtB,CACF,CACF,ECvIA,SAASG,GAAUC,EAAMC,EAAOC,EAAK,CACnC,OAAOD,IAAU,EAAID,EAAO,GAAGA,CAAI,IAAIC,CAAK,IAAIC,CAAG,EACrD,CACA,SAASC,GAAUC,EAAGC,EAAG,CACvB,IAAMC,EAAWF,EAAE,MAAMC,CAAC,EACpBE,EAASC,GAAYF,CAAQ,EAC7BL,EAAQG,EAAE,OAAOC,CAAC,EAClBI,EAAQL,EAAE,gBAAgBC,CAAC,GAAK,OAAO,IACvCK,EAAW,OAAO,MAAMD,CAAK,EAAI,CAAC,EAAI,CAAE,SAAU,CAAE,MAAAA,EAAO,GAAIL,EAAE,aAAaC,CAAC,GAAK,CAAE,CAAE,EAC9F,OAAOE,EAAS,CACd,KAAM,GAAGA,EAAO,MAAM,IAAIA,EAAO,SAAS,IAAIA,EAAO,MAAM,GAC3D,MAAAN,EACA,GAAGM,EACH,GAAGI,GACDP,EAAE,QAAUQ,GAAOR,EAAE,OAAQC,CAAC,EAC9BD,EAAE,OAASQ,GAAOR,EAAE,MAAOC,CAAC,CAC9B,EACA,GAAGK,CACL,EAAI,CAAE,KAAMX,GAAUO,EAAUL,EAAOG,EAAE,KAAKC,CAAC,CAAC,EAAG,MAAAJ,CAAM,CAC3D,CACA,SAASY,GAAYC,EAAOC,EAAOC,EAAWC,EAAW,CACvD,IAAMC,EAAS,IAAI,WAAWF,EAAY,CAAC,EAC3C,QAAWG,KAAQL,EACjBI,EAAOC,EAAO,CAAC,IAEjB,QAASC,EAAI,EAAGA,EAAIJ,EAAWI,IAC7BF,EAAOE,EAAI,CAAC,GAAKF,EAAOE,CAAC,EAE3B,IAAMC,EAAOH,EAAO,MAAM,EAAGF,CAAS,EAChCM,EAAU,IAAI,WAAWR,EAAM,MAAM,EAC3CA,EAAM,QAAQ,CAACK,EAAMC,IAAM,CACzBE,EAAQD,EAAKF,CAAI,GAAG,EAAIJ,EAAMK,CAAC,CACjC,CAAC,EACD,IAAMG,EAAS,IAAI,WAAWN,EAAU,MAAM,EAAE,KAAK,EAAE,EACvD,OAAO,MAAM,KAAK,CAAE,OAAQD,CAAU,EAAG,CAACQ,EAAGL,IAAS,CACpD,IAAMM,EAAM,CAAC,EACb,QAASL,EAAIF,EAAOC,CAAI,EAAGC,EAAIF,EAAOC,EAAO,CAAC,EAAGC,IAAK,CACpD,IAAMM,EAAIJ,EAAQF,CAAC,EACfG,EAAOG,CAAC,IAAMP,IAChBI,EAAOG,CAAC,EAAIP,EACZM,EAAI,KAAKR,EAAUS,CAAC,CAAC,EAEzB,CACA,OAAOD,CACT,CAAC,CACH,CACA,SAASE,GAAa,CAAE,MAAOC,EAAG,MAAOC,EAAG,MAAOzB,CAAE,EAAG0B,EAAY,CAClE,IAAMC,EAAY,IAAI,WAAWH,EAAE,MAAM,MAAM,EACzCI,EAAQ,CAACC,EAAMC,IAAa,CAC5BH,EAAUE,CAAI,IAAM,IACtBF,EAAUE,CAAI,EAAIC,EAAW,EAAI,EAErC,EACA,QAASd,EAAI,EAAGA,EAAIS,EAAE,KAAK,OAAQT,IACjCY,EAAMH,EAAE,KAAKT,CAAC,EAAGS,EAAE,QAAQT,CAAC,EAAI,CAAC,EACjCY,EAAMH,EAAE,GAAGT,CAAC,EAAGS,EAAE,QAAQT,CAAC,EAAI,CAAC,EAEjC,IAAMe,EAAY/B,EAAE,QAAQA,EAAE,MAAM,MAAM,GAAK,EAC/C,QAASgC,EAAI,EAAGA,EAAID,EAAWC,IAAK,CAClC,IAAMH,EAAO7B,EAAE,MAAMgC,CAAC,EACtBJ,EAAMC,EAAM7B,EAAE,SAASgC,CAAC,CAAC,EACrBN,GACFA,EAAWG,CAAI,GAEnB,CACA,OAAOL,EAAE,MAAM,IACb,CAACS,EAASjB,IAAM,GAAGiB,CAAO,GAAGN,EAAUX,CAAC,IAAM,EAAI,IAAM,GAAG,EAC7D,CACF,CACA,SAASkB,GAAgB,CAAE,MAAOV,EAAG,MAAOC,EAAG,MAAOzB,CAAE,EAAGJ,EAAO,eAAgB,CAChF,IAAMuC,EAAQX,EAAE,MAAM,OAChBY,EAAWZ,EAAE,QAAQ,OACrBa,EAAa,CAAC,EACpB,QAASpC,EAAI,EAAGA,EAAID,EAAE,MAAM,OAAQC,IAC9BD,EAAE,QAAQC,EAAI,CAAC,EAAID,EAAE,QAAQC,CAAC,GAChCoC,EAAW,KAAKpC,CAAC,EAGrB,IAAMyB,EAAa,IAAI,WAAWS,CAAK,EACjCG,EAAMf,GAAa,CAAE,MAAOC,EAAG,MAAOC,EAAG,MAAOzB,CAAE,EAAG0B,CAAU,EAC/Da,EAAQ,CAAC,EACf,QAASvB,EAAI,EAAGA,EAAIoB,EAAUpB,IAAK,CACjC,IAAMwB,EAAMhB,EAAE,KAAKR,CAAC,EACpBuB,EAAM,KAAK,CACT,GAAID,EAAItB,CAAC,EACT,KAAMQ,EAAE,MAAMR,CAAC,EACf,OAAQQ,EAAE,QAAQR,CAAC,EACnB,MAAO,KAAK,IAAIU,EAAWV,CAAC,EAAG,CAAC,EAChC,OAAQwB,EAAM,EAAI,OAAS,CACzB,QAAShB,EAAE,SAASgB,CAAG,EACvB,MAAOhB,EAAE,OAAOR,CAAC,EACjB,KAAMQ,EAAE,MAAMR,CAAC,CACjB,EACA,QAAS,MACX,CAAC,CACH,CACA,IAAMyB,EAAQ,CAAC,EACTC,EAAa,IAAI,MAAMP,CAAK,EAC5BQ,EAAW,CAAC,EAAGC,IAAM,CACzB,IAAMC,EAAOH,EAAW,CAAC,EACzB,GAAIG,GACF,QAASC,EAAI,EAAGA,EAAID,EAAK,OAAQC,GAAK,EACpC,GAAID,EAAKC,CAAC,IAAMF,EACd,OAAOC,EAAKC,EAAI,CAAC,EAKzB,EACMC,EAAU,CAAC,EAAGH,EAAG7B,IAAS,CAC9B,IAAM8B,EAAOH,EAAW,CAAC,EACrBG,EACFA,EAAK,KAAKD,EAAG7B,CAAI,EAEjB2B,EAAW,CAAC,EAAI,CAACE,EAAG7B,CAAI,CAE5B,EACMiC,GAAY,CAAC,EACftC,GAAQ,EACZ,QAASM,EAAI,EAAGA,EAAIS,EAAE,KAAK,OAAQT,IAAK,CACtC,IAAMiC,EAAIxB,EAAE,KAAKT,CAAC,EACZ4B,EAAInB,EAAE,GAAGT,CAAC,EAChByB,EAAM,KAAK,CACT,KAAMH,EAAIW,CAAC,EACX,GAAIX,EAAIM,CAAC,EACT,WAAYnB,EAAE,QAAQT,CAAC,EAAI,EAAI,IAAM,IACrC,SAAUS,EAAE,QAAQT,CAAC,EAAI,EAAI,IAAM,GACrC,CAAC,EACD,IAAID,EAAO4B,EAASM,EAAGL,CAAC,EACpB7B,IAAS,SACXA,EAAOL,KACPqC,EAAQE,EAAGL,EAAG7B,CAAI,EAClBgC,EAAQH,EAAGK,EAAGlC,CAAI,GAEpBiC,GAAU,KAAKjC,CAAI,CACrB,CACA,IAAMmC,EAAY,IAAI,WAAWf,EAAQ,CAAC,EAC1C,QAAS,EAAI,EAAG,EAAIA,EAAO,IACzBe,EAAU,EAAI,CAAC,EAAIA,EAAU,CAAC,GAAKR,EAAW,CAAC,GAAG,QAAU,GAAK,EAEnE,IAAMS,GAAe,IAAI,WAAWD,EAAUf,CAAK,CAAC,EAC9CiB,GAAe,IAAI,WAAWF,EAAUf,CAAK,CAAC,EACpDO,EAAW,QAAQ,CAACG,EAAMI,IAAM,CAC9B,QAASH,EAAI,EAAGA,EAAID,EAAK,OAAQC,GAAK,EACpCK,GAAaD,EAAUD,CAAC,EAAIH,EAAI,CAAC,EAAID,EAAKC,CAAC,EAC3CM,GAAaF,EAAUD,CAAC,EAAIH,EAAI,CAAC,EAAID,EAAKC,EAAI,CAAC,CAEnD,CAAC,EACD,IAAMO,GAAS,CAAC,EAAGT,IAAM,CACvB,QAASE,EAAII,EAAU,CAAC,EAAGJ,EAAII,EAAU,EAAI,CAAC,EAAGJ,IAC/C,GAAIK,GAAaL,CAAC,IAAMF,EACtB,OAAOQ,GAAaN,CAAC,EAGzB,MAAO,EACT,EACMQ,EAA4B,IAAI,IAChCzC,EAAY,CAAC,EACb0C,EAAc,IAAI,WAAWvD,EAAE,QAAQA,EAAE,MAAM,MAAM,GAAK,CAAC,EAC3DwD,GAAc,IAAI,WAAWD,EAAY,MAAM,EACjDE,GAAY,EACVC,EAAW,IAAI,WAAWhD,EAAK,EAAE,KAAK,EAAE,EACxCiD,GAAQ,CAAC,EACTC,EAAc,CAAC,EACfC,EAAa7D,EAAE,QAAQA,EAAE,MAAM,MAAM,GAAK,EAC1C8D,GAAY,IAAI,WAAWD,CAAU,EACrCE,GAAa,IAAI,aAAaF,CAAU,EACxCG,EAAgB,IAAI,WAAWH,CAAU,EACzC5C,EAAO,IAAI,WAAWkB,CAAK,EAAE,KAAK,EAAE,EACpC8B,EAAa,CAAC,EACdC,EAAS,CAAC,CAAC,EACXC,GAAc,CAAC,EACfC,EAAgC,IAAI,IACpCC,EAAY,CAAC,EACnB,QAAWpE,KAAKoC,EAAY,CAC1B,IAAMiC,EAAOvE,GAAUC,EAAGC,CAAC,EACrB,CAAE,MAAAJ,EAAO,KAAM0E,CAAS,EAAID,EAC5BE,EAAYF,EAAK,SAAW,OAAStE,EAAE,MAAMC,CAAC,EAAIsE,EACpDE,EAAQnB,EAAU,IAAIkB,CAAS,EAC/BC,IAAU,SACZA,EAAQ5D,EAAU,OAClByC,EAAU,IAAIkB,EAAWC,CAAK,EAC9B5D,EAAU,KAAK2D,CAAS,EACxBL,GAAY,KAAKO,GAAYF,CAAS,CAAC,GAEzC,IAAIG,EAAYP,EAAc,IAAIG,CAAQ,EACtCI,IAAc,SAChBA,EAAYN,EAAU,OACtBD,EAAc,IAAIG,EAAUI,CAAS,EACrCN,EAAU,KAAKE,CAAQ,GAEzB,IAAMK,EAAcT,GAAYM,CAAK,EAC/BI,EAAQ7E,EAAE,QAAQC,CAAC,EACnB6E,EAAU,IAAI,MAAM9E,EAAE,QAAQC,EAAI,CAAC,EAAI4E,CAAK,EAC9CE,EAAMlF,EACNmF,EAAO,GACX,QAAShD,EAAI6C,EAAO7C,EAAIhC,EAAE,QAAQC,EAAI,CAAC,EAAG+B,IAAK,CAC7C,IAAMH,EAAO7B,EAAE,MAAMgC,CAAC,EACtB8C,EAAQ9C,EAAI6C,CAAK,EAAIvC,EAAIT,CAAI,EACzBZ,EAAKY,CAAI,IAAM,KACjBZ,EAAKY,CAAI,EAAIqC,EAAO,GAAG,EAAE,EACzBA,EAAO,KAAKjD,EAAKY,CAAI,EAAIH,EAAWG,CAAI,CAAC,EACzCoC,EAAW,KAAKpC,CAAI,GAEtB,IAAMoD,EAAKhE,EAAKY,CAAI,IAKpB,GAJAiC,GAAUmB,CAAE,EAAIR,EAChBV,GAAWkB,CAAE,EAAIF,EACjBf,EAAciB,CAAE,EAAIjF,EAAE,SAASgC,CAAC,EAChC+C,GAAOlD,EAAOO,EAAWZ,EAAE,QAAQK,CAAI,EAAI,EACvCmD,GAAQ,EAAG,CACb,IAAMjE,EAAOsC,GAAO2B,EAAMnD,CAAI,EAC1Bd,GAAQ,GAAK2C,EAAS3C,CAAI,IAAMd,IAClCyD,EAAS3C,CAAI,EAAId,EACjBsD,EAAYE,EAAS,EAAI1C,EACzByC,GAAYC,IAAW,EAAIkB,EAE/B,CACAK,EAAOnD,CACT,CACA8B,GAAM,KAAK,CAAE,GAAGW,EAAM,QAAAQ,CAAQ,CAAC,EAC/BlB,EAAY,KAAK,CACf,KAAMY,EACN,OAAQI,EACR,MAAA/E,EACA,OAAQkF,EAAMlF,CAChB,CAAC,CACH,CACA,IAAMqF,GAAYzE,GAChB8C,EAAY,SAAS,EAAGE,EAAS,EACjCD,GACA9C,GACA2D,CACF,EACA5B,EAAM,QAAQ,CAAC0C,EAAMnE,IAAM,CACzB,IAAML,EAAQuE,GAAUlC,GAAUhC,CAAC,CAAC,EAChCL,EAAM,OAAS,IACjBwE,EAAK,QAAUxE,EAEnB,CAAC,EACD,IAAMyE,GAAS/C,EAAW,OAAS,EACnC,MAAO,CACL,KAAAzC,EACA,MAAA2C,EACA,MAAAE,EACA,MAAO2C,GAASzB,GAAQ,OACxB,YAAayB,GAASxB,EAAc,OACpC,WAAYwB,GAAS,IAAIC,GAAW,CAClC,SAAUpB,EAAW,IAAKpC,GAASL,EAAE,MAAMK,CAAI,CAAC,EAChD,QAAS,WAAW,KAAKqC,CAAM,EAC/B,KAAMJ,GAAU,SAAS,EAAGI,EAAO,GAAG,EAAE,CAAC,EACzC,MAAOH,GAAW,SAAS,EAAGG,EAAO,GAAG,EAAE,CAAC,EAC3C,SAAUF,EAAc,SAAS,EAAGE,EAAO,GAAG,EAAE,CAAC,EACjD,MAAOrD,EACP,QAASsD,EACX,CAAC,EAAI,OACL,WAAY5B,EAAM,KAAMV,GAASA,EAAK,MAAM,EAAI,OAAS,MAC3D,CACF,CC3PA,IAAIyD,GAAmB,EACnBC,GAAe,EACfC,GAAU,EACVC,GAAa,CACf,OACA,UACA,YACA,UACA,UACF,EACIC,GAAc,EACdC,GAAcC,GAAUH,GAAW,QAAQG,CAAK,GAAKF,GACzD,SAASG,GAAYC,EAAOC,EAAeC,EAAU,CACnD,OAAOD,IAAkB,QAAUD,EAAM,SAASC,CAAa,EAAIA,EAAgBD,EAAM,KAAM,GAAME,EAAS,IAAI,CAAC,CAAC,GAAKF,EAAM,CAAC,CAClI,CACA,SAASG,GAAkBC,EAAO,CAChC,OAAOL,IACJK,EAAM,OAAS,CAAC,GAAG,IAAKC,GAAMC,GAAWD,EAAE,IAAI,EAAE,IAAI,EACtDD,EAAM,cACN,IAAI,IACFA,EAAM,MAAM,QACTG,GAAMA,EAAE,QAAQ,OAAS,EAAI,CAACA,EAAE,OAAO,OAAO,EAAI,CAAC,CACtD,CACF,CACF,CACF,CACA,SAASC,GAAYJ,EAAO,CAC1B,IAAMK,EAAwB,IAAI,IAC5BT,EAAQ,CAAC,EACTU,EAAU,CAAC,EACXC,EAAWC,GAAO,CACtB,IAAIC,EAAIJ,EAAM,IAAIG,CAAE,EACpB,OAAIC,IAAM,SACRA,EAAIb,EAAM,OACVS,EAAM,IAAIG,EAAIC,CAAC,EACfb,EAAM,KAAKY,CAAE,EACbF,EAAQ,KAAK,CAAC,GAETG,CACT,EACA,QAAWC,KAAQV,EAAM,MACvBM,EAAQC,EAAQG,EAAK,EAAE,CAAC,EAAIA,EAAK,OAEnC,IAAMC,EAAQX,EAAM,OAAS,CAAC,EACxBY,EAAO,IAAI,WAAWD,EAAM,MAAM,EAClCE,EAAK,IAAI,WAAWF,EAAM,MAAM,EAChCG,EAAQ,CAAC,EACf,OAAAH,EAAM,QAAQ,CAACI,EAAMd,IAAM,CACzBW,EAAKX,CAAC,EAAIa,EAAM,OAChB,QAAWN,KAAMO,EAAK,QACpBD,EAAM,KAAKP,EAAQC,CAAE,CAAC,EAExBK,EAAGZ,CAAC,EAAIa,EAAM,MAChB,CAAC,EACM,CACL,MAAAH,EACA,KAAAC,EACA,GAAAC,EACA,MAAO,WAAW,KAAKC,CAAK,EAC5B,QAAS,WAAW,KAAKR,CAAO,EAChC,MAAAV,EACA,UAAWG,GAAkBC,CAAK,CACpC,CACF,CACA,SAASgB,GAAYC,EAAQpB,EAAeqB,EAAQ,CAClD,GAAM,CAAE,MAAO,EAAG,MAAOC,CAAE,EAAIF,EACzBG,EAAO,CAAC,EACd,QAASnB,EAAI,EAAGA,EAAIkB,EAAE,MAAM,OAAQlB,IAC9BkB,EAAE,QAAQlB,EAAI,CAAC,EAAIkB,EAAE,QAAQlB,CAAC,GAChCmB,EAAK,KAAKnB,CAAC,EAGf,IAAMU,EAAQS,EAAK,IAAKnB,GAAMoB,GAAUF,EAAGlB,CAAC,CAAC,EACvCH,EAA2B,IAAI,IACrC,QAASW,EAAI,EAAGA,EAAI,EAAE,QAAQ,OAAQA,IAChC,EAAE,KAAKA,CAAC,GAAK,GAAK,EAAE,MAAMA,CAAC,IAAM,GACnCX,EAAS,IAAI,EAAE,SAAS,EAAE,KAAKW,CAAC,CAAC,CAAC,EAGtC,MAAO,CACL,MAAAE,EACA,KAAM,WAAW,KAAKS,EAAOnB,GAAMkB,EAAE,QAAQlB,CAAC,CAAC,EAC/C,GAAI,WAAW,KAAKmB,EAAOnB,GAAMkB,EAAE,QAAQlB,EAAI,CAAC,CAAC,EACjD,MAAOkB,EAAE,MACT,QAAS,EAAE,QAGX,MAAOD,EAASI,GAAaL,CAAM,EAAI,EAAE,MACzC,UAAWtB,GACTgB,EAAM,IAAKY,GAAMrB,GAAWqB,EAAE,IAAI,EAAE,IAAI,EACxC1B,EACAC,CACF,CACF,CACF,CACA,SAAS0B,GAAST,EAAM,CACtB,OAAOA,EAAK,QAAUU,GAAYV,EAAK,IAAI,CAC7C,CACA,SAASW,GAAQX,EAAM,CACrB,OAAOA,EAAK,YAAc,QAAUA,EAAK,SAAW,OAAS,GAAGA,EAAK,MAAM,IAAIA,EAAK,SAAS,GAAKS,GAAST,CAAI,CACjH,CACA,IAAIY,GAAU,KAAM,CAClB,YAAYC,EAAO,CACjB,KAAK,QAAU,CAAC,CAAC,EACjB,KAAK,OAAS,MAAM,KAAK,CAAE,OAAQA,CAAM,EAAG,IAAM,CAAC,CAAC,CACtD,CACA,IAAI,QAAS,CACX,OAAO,KAAK,OAAO,CAAC,EAAE,MACxB,CACA,KAAKC,EAAGC,EAAGC,EAAGC,EAAGC,EAAG,CAClB,IAAMC,EAAI,KAAK,OACfA,EAAE,CAAC,EAAE,KAAKL,CAAC,EACXK,EAAE,CAAC,EAAE,KAAKJ,CAAC,EACXI,EAAE,CAAC,EAAE,KAAKH,CAAC,EACXG,EAAE,CAAC,EAAE,KAAKF,CAAC,EACPC,IAAM,QACRC,EAAE,CAAC,EAAE,KAAKD,CAAC,CAEf,CACA,QAAS,CACP,KAAK,QAAQ,KAAK,KAAK,MAAM,CAC/B,CAEA,QAAQE,EAAOC,EAAM,CACnB,IAAMC,EAAU,IAAI,YAAYF,EAAM,OAAS,CAAC,EAChDA,EAAM,QAAQ,CAACG,EAAK,IAAM,CACxBD,EAAQ,EAAI,CAAC,EAAIA,EAAQ,CAAC,EAAI,KAAK,QAAQC,EAAM,CAAC,EAAI,KAAK,QAAQA,CAAG,CACxE,CAAC,EACD,IAAMC,EAAUH,EAAK,IAAI,CAACI,EAAGT,IAAM,CACjC,IAAMnB,EAAO,KAAK,OAAOmB,CAAC,EACpBU,EAAMD,EAAE,KAAK,MAAM,EACrBE,EAAK,EACT,QAAWJ,KAAOH,EAChB,QAAS,EAAI,KAAK,QAAQG,CAAG,EAAG,EAAI,KAAK,QAAQA,EAAM,CAAC,EAAG,IACzDG,EAAIC,GAAI,EAAI9B,EAAK,CAAC,EAGtB,OAAO6B,CACT,CAAC,EACD,MAAO,CAAE,QAAAJ,EAAS,QAAAE,CAAQ,CAC5B,CACF,EACII,GAAWxC,GAAM,IAAI,aAAaA,CAAC,EACvC,SAASyC,GAAYC,EAAQC,EAAQC,EAAI,CAAC,EAAG,CAC3C,GAAM,CACJ,MAAApC,EACA,KAAAC,EACA,GAAAC,EACA,MAAOmC,EACP,QAAA1C,EACA,MAAAV,EACA,UAAAqD,CACF,EAAI,UAAWJ,EAAS7B,GAAY6B,EAAQE,EAAE,cAAeA,EAAE,MAAM,EAAI3C,GAAYyC,CAAM,EACrFK,EAAW5C,EAAQ,OACnB6C,EAAYzC,GAASA,EAAOwC,EAAW5C,EAAQI,CAAI,EAAI,EACvD0C,EAAUnD,GAAMC,GAAWS,EAAMV,CAAC,EAAE,IAAI,EAAE,KAC1CoD,EAAWpD,GAAMU,EAAMV,CAAC,EAAE,MAC1BqD,GAAU,CAACzB,EAAGC,KAAOuB,EAAQxB,CAAC,GAAK,IAAMwB,EAAQvB,CAAC,GAAK,GACvDyB,GAAW5C,EAAM,IAAI,CAAC6C,EAAGvD,IAAMA,CAAC,EAChCwD,EAAkBF,GAAS,OAAQtD,GAAMmD,EAAOnD,CAAC,IAAMgD,CAAS,EAAE,KAAKK,EAAO,EAC9EI,GAAQD,EAAgB,CAAC,EACzBE,GAASJ,GAAS,OAAQtD,GAAMmD,EAAOnD,CAAC,IAAMgD,CAAS,EAC7D,GAAIS,KAAU,QAAUC,GAAO,SAAW,EACxC,OAEF,IAAMC,GAAQC,GAAQF,GAAQP,CAAM,EAC9BU,EAAY,IAAI,aAAalE,EAAM,MAAM,EAAE,KAAK,OAAO,GAAG,EAC1DmE,EAAU,IAAI,aAAanE,EAAM,MAAM,EACvCoE,EAA2B,IAAI,IACjCC,GAAgB,GAChBC,GAAe,GACbC,EAAMrB,GAAUA,EAAO,IAAMA,EAAO,MAAQA,EAAS,OAC3D,QAAWsB,KAASX,EAAiB,CACnC,IAAIY,EAAMhB,EAAQe,CAAK,GAAK,EAC5B,QAASE,EAAI1D,EAAKwD,CAAK,EAAGG,EAAO1D,EAAGuD,CAAK,EAAGE,EAAIC,EAAMD,IAAK,CACzD,IAAM5D,EAAOsC,EAAIsB,CAAC,EACZE,EAAMrB,EAASzC,CAAI,EACzB,GAAK,OAAO,MAAMoD,EAAUpD,CAAI,CAAC,EAQ/BoD,EAAUpD,CAAI,EAAI2D,EAClBN,EAAQrD,CAAI,EAAI2D,EAAMG,EAClBL,IACFF,KAAkBI,EAAMG,GAAOL,EAAI,MACnCD,KAAiBG,GAAOF,EAAI,SAZI,CAClC,IAAMM,EAAST,EAAS,IAAItD,CAAI,EAC5B+D,EACFA,EAAO,KAAKJ,CAAG,EAEfL,EAAS,IAAItD,EAAM,CAACoD,EAAUpD,CAAI,EAAG2D,CAAG,CAAC,CAE7C,CAQAA,GAAOG,CACT,CACF,CACA,IAAME,GAAUP,IAAQ,QAAUF,IAAiBC,GAC7CS,EAAO,IAAIhD,GAAQ,CAAC,EACpBiD,EAAS,CAAC,EACVC,GAA6B,IAAI,IACjCC,GAAWC,GAAW,CAC1B,GAAI,CAACA,EACH,MAAO,GAET,IAAMC,EAAM,GAAGD,EAAO,OAAO,IAAIA,EAAO,KAAK,GACzCtE,EAAIoE,GAAW,IAAIG,CAAG,EAC1B,OAAIvE,IAAM,SACRA,EAAImE,EAAO,OACXC,GAAW,IAAIG,EAAKvE,CAAC,EACrBmE,EAAO,KAAKG,CAAM,GAEbtE,CACT,EACMS,EAAS6B,EAAE,OAAS,IAAIpB,GAAQ,CAAC,EAAI,OACvCb,EAAQ,IAAI,WAAW,CAAC,EACxBmE,EAAY,IAAI,aAAa,CAAC,EAC5BC,EAASC,GAAW,CACxB,IAAMC,EAAOzE,EAAMwE,EAAO,CAAC,CAAC,EACtBE,EAAU,CAAC,GAAGF,CAAM,EAAE,KAAK7B,EAAO,EACpCgC,EAAQD,EAAQ,OAAS,EACzBE,EAAgB,EACpB,QAAWnB,KAASiB,EAClBC,GAASzE,EAAGuD,CAAK,EAAIxD,EAAKwD,CAAK,GAAKzD,EAAMyD,CAAK,EAAE,SAAW,EAAI,GAChEmB,GAAiB5E,EAAMyD,CAAK,EAAE,UAAU,OAAS,EAE/CkB,EAAQxE,EAAM,SAChBA,EAAQ,IAAI,WAAWwE,EAAQ,CAAC,EAChCL,EAAY,IAAI,aAAaK,EAAQ,CAAC,GAExC,IAAIE,EAAS,EACTC,EAAW,GACXC,EACAC,EACEC,EAA0B,IAAI,IACpC,QAAWxB,KAASiB,EAAS,CAC3B,IAAMQ,EAASxC,EAAQe,CAAK,GACxByB,IAAW,QAAUH,IAAQ,QAAUG,EAASH,KAClDD,EAAW,IAETC,IAAQ,QAAUG,IAAW,QAAUA,EAASH,IAClDE,EAAQ,IACNJ,EACAM,GACED,EAASH,EACTC,IAAa,OAAS,OAAShF,EAAMgF,CAAQ,EAAE,MAC/ChF,EAAMyD,CAAK,EAAE,MACf,CACF,EACAtD,EAAM0E,CAAM,EAAI,EAAEK,EAASH,GAC3BT,EAAUO,GAAQ,EAAIE,GAExB,IAAIrB,EAAMwB,GAAU,EACdE,EAAWpF,EAAMyD,CAAK,EAAE,SAC9B,QAASE,EAAI1D,EAAKwD,CAAK,EAAG4B,EAAQnF,EAAGuD,CAAK,EAAGE,EAAI0B,EAAO1B,IAAK,CAC3D,IAAM5D,EAAOsC,EAAIsB,CAAC,EACZ2B,EAAMF,EAAWA,EAAS,IAAM1B,GAAOwB,GAAU,IAAM1C,EAASzC,CAAI,EAAI,EAC1EuF,EAAM,GAAK3B,IAAM0B,EAAQ,GAAK1B,EAAI1D,EAAKwD,CAAK,IAC9CwB,EAAQ,IAAIJ,EAAQ,CAAC,CAAE,GAAIS,EAAK,MAAO,UAAW,CAAC,CAAC,EACpDnF,EAAM0E,CAAM,EAAI,CAACS,EACjBhB,EAAUO,GAAQ,EAAInB,EACtBA,GAAO4B,GAETnF,EAAM0E,CAAM,EAAI9E,EAChBuE,EAAUO,GAAQ,EAAInB,EACtBA,GAAOlB,EAASzC,CAAI,CACtB,CACAgF,EAAMG,IAAW,OAAS,OAASxB,EACnCsB,EAAWvB,CACb,CACA,IAAM8B,GAAezF,GAAMA,GAAK,GAAKA,EAAI+E,GAAU1E,EAAML,CAAC,GAAK,GAAK,CAAC,OAAO,MAAMqD,EAAUhD,EAAML,CAAC,CAAC,CAAC,EAC/F0F,GAAW1F,GAAM,CACrB,IAAMD,EAAKM,EAAML,CAAC,EAClB,OAAOwE,EAAUxE,CAAC,GAAKD,EAAK,EAAI,CAACA,EAAK2C,EAAS3C,CAAE,EACnD,EACM4F,GAAc,CAACC,EAAIC,IAAO,CAC9B,IAAMC,EAAQF,GAAM,EAAIA,EAAKC,EACzBE,EAAO,GACX,QAASxE,EAAI,EAAGwE,EAAO,GAAKxE,EAAIwD,EAAQxD,IACtCwE,EAAO,CAACD,EAAQvE,EAAGuE,EAAQvE,CAAC,EAAE,KAAKkE,EAAW,GAAK,GAErD,GAAIM,EAAO,EACT,OAEF,IAAMC,EAAUD,EAAOD,GAAUzC,EAAUhD,EAAM0F,CAAI,CAAC,EAAI1C,EAAUhD,EAAMyF,CAAK,CAAC,EAC1EG,EAAQD,KAAaF,IAAUF,GAC/BM,EAAQD,EAAQlB,EAAS,EAAI,EAC7BoB,EAAaV,GAAYS,CAAK,EASpC,MAAO,CACL,KATY,CACZ,WAAAC,EACA,QAASA,EAAa,KAAK,IACzB,EACAzC,EAAI,MAAQJ,EAAQjD,EAAM6F,CAAK,CAAC,EAChC7C,EAAUhD,EAAM6F,CAAK,CAAC,EAAIxC,EAAI,GAChC,EAAI,CACN,EAGE,GAAIuC,EAAQH,EAAQ,EAAI,EACxB,GAAIG,EAAQlB,EAASe,EACrB,SAAU,CAACE,EACX,UAAWA,EAAUC,EAAQP,GAAQI,CAAK,EAAItB,EAAU,CAAC,EAAIyB,EAAQP,GAAQX,EAAS,CAAC,EAAIP,EAAUsB,CAAK,CAC5G,CACF,EACIM,GAAK,EACLC,GAAKtB,EACLuB,GAAW,GACXC,GAAW,GACXC,GAAY,GACZC,GAAU,GACVC,GACA5C,GACJ,GAAIJ,GAAOO,GAAS,CAClB,IAAI2B,EAAK,GACLC,EAAK,GACLc,EAAU,KACVC,EAAY,IAChB,QAAS5G,EAAI,EAAGA,EAAI+E,EAAQ/E,IAAK,CAC/B,IAAMD,EAAKM,EAAML,CAAC,EACdD,GAAM,GAAK,CAAC,OAAO,MAAMsD,EAAUtD,CAAE,CAAC,IACpCuD,EAAQvD,CAAE,GAAK2D,EAAI,OAASJ,EAAQvD,CAAE,EAAI4G,IAC5CA,EAAUrD,EAAQvD,CAAE,EACpB6F,EAAK5F,GAEHqD,EAAUtD,CAAE,GAAK2D,EAAI,KAAOL,EAAUtD,CAAE,EAAI6G,IAC9CA,EAAYvD,EAAUtD,CAAE,EACxB8F,EAAK7F,GAGX,CACA,GAAI4F,EAAK,GAAKC,EAAK,EAAG,CACpBU,GAAW,GACX,IAAMM,EAASjB,GAAM,GAAKC,GAAM,EAAIF,GAAYC,EAAIC,CAAE,EAAI,OACtDgB,IAED,CAAE,GAAAT,GAAI,GAAAC,GAAI,SAAAC,GAAU,UAAAI,GAAW,KAAA5C,EAAK,EAAI+C,EAE7C,MACET,GAAK,KAAK,IAAIR,EAAIC,CAAE,EAAI,EACxBQ,GAAK,KAAK,IAAIT,EAAIC,CAAE,EACpBS,GAAWV,EAAKC,EAChBW,GAAYZ,EACZa,GAAUZ,CAEd,CACA,IAAMiB,GAASnC,EAAK,QAAUoC,GAAYtH,GAAWkF,EAAK,IAAI,EAAE,IAAI,EAC9DqC,GAAOhC,GAAYD,IAAW,EAAI,OAAS2B,KAAc,OAAS,CAAE,OAAAI,GAAQ,MAAOJ,GAAW,SAAUJ,EAAS,EAAIE,GAAY,EAAI,CAAE,OAAAM,GAAQ,MAAOtC,EAAU,CAAC,EAAG,SAAU,EAAM,EAAIgC,GAAYC,GAAU,CAAE,OAAAK,GAAQ,MAAOpB,GAAQc,EAAS,EAAG,SAAU,EAAM,EAAI,CAAE,OAAAM,GAAQ,MAAOtC,EAAUgC,EAAS,EAAG,SAAU,EAAK,EAC/TS,GAAM,EACNC,GAAiB,EACjBC,GAAQ,EACRC,GAAO,EACPC,EAAO,GACPC,GAAY,EACZC,EAAU,OAAO,IACjBC,GAAS,OAAO,IACdC,GAAW1H,GAAO,CACtB,IAAMiE,EAAST,EAAS,IAAIxD,CAAE,EAC9B,GAAI,CAACiE,GAAU,OAAO,MAAMwD,EAAM,EAChC,OAAOnE,EAAUtD,CAAE,EAErB,IAAMgE,EAAMrB,EAAS3C,CAAE,EACnB2H,EAAO1D,EAAO,CAAC,EACf2D,EAAU,IACd,QAAWvC,KAAUpB,EAAQ,CAC3B,IAAM4D,EAAM,KAAK,IACf,KAAK,IAAIxC,EAASoC,EAAM,EACxB,KAAK,IAAIpC,EAASrB,EAAMyD,EAAM,CAChC,EACII,EAAMD,IACRD,EAAOtC,EACPuC,EAAUC,EAEd,CACA,OAAOF,CACT,EACM,CAAC,CAAEG,GAAOC,GAAQC,EAAQ,EAAI7D,EAAK,OACzC,QAAS8D,EAAI5B,GAAI4B,EAAI3B,GAAI2B,IAAK,CAC5B,IAAMpI,EAAQ0G,GAAWD,GAAK,GAAK2B,EAAI5B,IAAM4B,EACvCjI,EAAKM,EAAMT,CAAK,EACtB,GAAIG,EAAK,EAAG,CACV,IAAMkI,EAAQ9C,EAAQ,IAAIvF,CAAK,EAC/B,QAAWsI,MAAQ5B,GAAW,CAAC,GAAG2B,CAAK,EAAE,QAAQ,EAAIA,EACnD/D,EAAK,KACH+C,GACAiB,GAAK,GACL,OAAO,IACPrJ,GAAUG,GAAWkJ,GAAK,KAAK,EAC/B7D,GAAQ6D,GAAK,KAAK,CACpB,EACAjB,IAAOiB,GAAK,GAEdb,EAAOnD,EAAK,OAAS,EACrBoD,GAAYzI,GACZ0I,EAAU,OAAO,IACjBJ,IAAS,CAACpH,EACVqH,GAAO,EACP,QACF,CACA,IAAMrD,EAAMrB,EAAS3C,CAAE,EACjBkC,EAAKwF,GAAQ1H,CAAE,EACfoI,EAAK,CAAC,OAAO,MAAMlG,CAAE,EAC3BxB,GAAQ,KAAKV,EAAIkH,GAAKlD,EAAKoE,EAAK,EAAI,CAAC,EACrC,IAAMC,EAASf,GAAQ,GAAK,CAAC,OAAO,MAAME,CAAO,EAC3CvB,EAAUmC,GAAMC,GAAUhB,IAAQ,GAAKG,GAAWM,GAAMR,CAAI,GAAK,KAAOpF,EACxEoG,GAAOF,GAAMC,GAAUhB,IAAQ,GAAKnF,EAAK8B,IAAQwD,EACnD,CAACY,GAAMd,GAAQ,GAAK,EAAEC,IAAa3I,GAAmBE,KACxDgJ,GAAMR,CAAI,GAAKtD,EACNiC,GAAWqC,IACpBR,GAAMR,CAAI,GAAKtD,EACViC,IACHuB,EAAUtF,EACV6F,GAAOT,CAAI,EAAIpF,EACfqF,IAAa1I,GACbmJ,GAASV,CAAI,EAAIC,IAEnBF,GAAOpB,EAAU,EAAI,KAErBsB,GAAYa,EAAKxJ,GAAmB,EACpC4I,EAAUY,EAAKlG,EAAK,OAAO,IAC3BiC,EAAK,KAAK+C,GAAKlD,EAAKwD,EAASD,GAAW,EAAE,EAC1CD,EAAOnD,EAAK,OAAS,EACrBkD,GAAO,GAETH,IAAOlD,EACHoE,EACFX,GAASJ,GAAO,EAAInF,EAAKA,EAAK8B,EAE9BmD,IAAkBnD,CAEtB,CACA,OAAAG,EAAK,OAAO,EACZzD,GAAQ,OAAO,EACR,CACL,KAAMkE,EAAK,KACX,MAAO1D,GAAQ0D,CAAI,EACnB,OAAQ5D,GAAS4D,CAAI,EACrB,UAAWA,EAAK,UAChB,GAAIsC,GACJ,eAAAC,GACA,MAAAC,GACA,SAAAZ,GACA,KAAAzC,GACA,KAAAkD,GACA,GAAGlC,EAAgB,EAAI,CAAE,cAAAA,CAAc,EAAI,CAAC,CAC9C,CACF,EACMwD,GAAe7D,EAAMzB,CAAe,EACpCuF,EAAO,CAAC,GAAGpF,GAAM,OAAO,CAAC,EAAE,IAAI,CAACuB,EAAQ1E,KAAO,CACnD,KAAMyE,EAAMC,CAAM,EAClB,IAAK1E,EAAI,CACX,EAAE,EACIwI,EAAQ,CAACF,GAAc,GAAGC,EAAK,IAAKE,GAAMA,EAAE,IAAI,CAAC,EACvD,GAAI,IAAI,IAAID,EAAM,IAAKzG,GAAMA,EAAE,KAAK,CAAC,EAAE,KAAOyG,EAAM,OAClD,QAAWE,KAAQF,EACjBE,EAAK,MAAQC,GAAeD,EAAK,IAAI,GAAKA,EAAK,MAGnDH,EAAK,KACH,CAACnH,EAAGC,IAAM,OAAOA,EAAE,KAAK,QAAQ,EAAI,OAAOD,EAAE,KAAK,QAAQ,GAAKC,EAAE,KAAK,GAAKD,EAAE,KAAK,IAAMA,EAAE,KAAK,MAAM,cAAcC,EAAE,KAAK,KAAK,CACjI,EACA,IAAMK,GAAQ,CAAC,EAAG,GAAG6G,EAAK,IAAKE,GAAMA,EAAE,GAAG,CAAC,EACrC,CAAE,QAAA7G,GAAS,QAAAE,CAAQ,EAAIoC,EAAK,QAAQxC,GAAO,CAC/CQ,GACAA,GACAA,GACCxC,GAAM,IAAI,WAAWA,CAAC,EACtBA,GAAM,IAAI,WAAWA,CAAC,CACzB,CAAC,EACK,CAACkJ,EAAOC,EAAIC,EAAgBC,EAAOC,CAAK,EAAIlH,EAClD,MAAO,CACL,OAAQ4B,EAAMA,EAAI,MAAQd,EAAQK,EAAK,GAAK,EAC5C,KAAM,CAACqF,GAAc,GAAGC,EAAK,IAAKE,GAAMA,EAAE,IAAI,CAAC,EAC/C,QAAA7G,GACA,MAAAgH,EACA,GAAAC,EACA,eAAAC,EACA,MAAAC,EACA,MAAAC,EACA,OAAA7E,EACA,OAAQ1D,GAAUwI,GAAaxI,EAAQiB,GAAOvC,CAAK,CACrD,CACF,CACA,SAAS8J,GAAaxI,EAAQiB,EAAOvC,EAAO,CAC1C,GAAM,CAAE,QAAAyC,EAAS,QAAAE,CAAQ,EAAIrB,EAAO,QAAQiB,EAAO,CAChDhC,GAAM,IAAI,WAAWA,CAAC,EACvBwC,GACAA,GACCxC,GAAM,IAAI,WAAWA,CAAC,CACzB,CAAC,EACK,CAACO,EAAM2I,EAAOC,EAAIpD,CAAW,EAAI3D,EACvC,MAAO,CAAE,QAAAF,EAAS,KAAA3B,EAAM,MAAA2I,EAAO,GAAAC,EAAI,YAAApD,EAAa,MAAAtG,CAAM,CACxD,CACA,SAAS+J,GAAM,EAAGlB,EAAG,CACnB,IAAMmB,EAAI,EAAE,MAAMnB,CAAC,EACboB,EAAM,CACV,MAAO,EAAE,MAAMpB,CAAC,EAChB,GAAI,EAAE,GAAGA,CAAC,EACV,aAAcmB,EAAIxK,MAAsB,CAC1C,EACA,GAAIwK,EAAItK,GAAS,CACfuK,EAAI,IAAM,GACV,IAAMnK,EAAQH,GAAWqK,GAAKpK,GAAc,CAAC,EACzCE,IACFmK,EAAI,MAAQnK,GAEd,IAAM+J,EAAQ,EAAE,OAAO,EAAE,MAAMhB,CAAC,CAAC,EAC7BgB,IACFI,EAAI,MAAQJ,EAEhB,MACEI,EAAI,eAAiB,OAAO,MAAM,EAAE,eAAepB,CAAC,CAAC,EAAI,OAAS,EAAE,eAAeA,CAAC,EAEtF,OAAImB,EAAIvK,KACNwK,EAAI,SAAW,IAEVA,CACT,CACA,SAASC,GAAS5H,EAAGI,EAAK,CACxB,IAAMG,EAAM,CAAC,EACb,QAASgG,EAAIvG,EAAE,QAAQI,CAAG,EAAGmG,EAAIvG,EAAE,QAAQI,EAAM,CAAC,EAAGmG,IACnDhG,EAAI,KAAK,CACP,KAAMP,EAAE,MAAMA,EAAE,KAAKuG,CAAC,CAAC,EACvB,MAAOvG,EAAE,MAAMuG,CAAC,EAChB,GAAIvG,EAAE,GAAGuG,CAAC,EACV,YAAavG,EAAE,YAAYuG,CAAC,IAAM,CACpC,CAAC,EAEH,OAAOhG,CACT,CACA,SAASsH,GAAW,EAAGC,EAAM,CAC3B,IAAMhB,EAAO,EAAE,KAAK,IAAI,CAACG,EAAM1I,IAAM,CACnC,IAAMkE,EAAO,CAAC,EACd,QAAS8D,EAAI,EAAE,QAAQhI,CAAC,EAAGgI,EAAI,EAAE,QAAQhI,EAAI,CAAC,EAAGgI,IAC/C9D,EAAK,KAAKgF,GAAM,EAAGlB,CAAC,CAAC,EAEvB,MAAO,CACL,GAAGU,EACH,KAAAxE,EACA,OAAQ,EAAE,QAAUmF,GAAS,EAAE,OAAQrJ,CAAC,CAC1C,CACF,CAAC,EACD,MAAO,CAAE,OAAQ,EAAE,OAAQ,KAAAuJ,EAAM,UAAWhB,EAAK,CAAC,EAAG,KAAMA,EAAK,MAAM,CAAC,CAAE,CAC3E",
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", "count", "declared", "drawnWalks", "ids", "nodes", "ref", "edges", "neighbours", "pairList", "b", "near", "j", "addPair", "edgeLists", "a", "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", "graphPieces", "index", "lengths", "indexOf", "id", "i", "node", "heads", "from", "to", "steps", "path", "tablePieces", "tables", "visits", "w", "kept", "tablePath", "tableNodeIds", "h", "sampleOf", "panSNSample", "labelOf", "Columns", "width", "a", "b", "c", "d", "e", "v", "order", "make", "offsets", "row", "columns", "m", "out", "at", "float64", "walkRowRuns", "source", "region", "o", "all", "reference", "declared", "lengthOf", "nameOf", "startOf", "byStart", "pieceIds", "_", "referencePieces", "first", "others", "walks", "groupBy", "spanStart", "spanEnd", "revisits", "reachesBefore", "reachesAfter", "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", "start2", "gapParts", "abridged", "stop2", "bp3", "onReference", "stepEnd", "partialSide", "i0", "i1", "flank", "near", "forward", "after", "last2", "contigEnds", "lo", "hi", "backward", "complete", "flankFrom", "flankTo", "axisStart", "bestEnd", "bestStart", "inside", "contig", "panSNContig", "axis", "bp2", "offReferenceBp", "gapBp", "step", "last", "lastFlags", "lastRef", "cursor", "placeOf", "best", "bestGap", "gap", "runBp", "runRef", "runFlags", "k", "parts", "part", "on", "placed", "back", "referenceRow", "rows", "metas", "r", "meta", "panSNHaplotype", "start", "bp", "referenceStart", "flags", "chunk", "visitColumns", "runAt", "f", "run", "visitsOf", "walkRowsOf", "unit"]
7
7
  }
@@ -0,0 +1,3 @@
1
+ import{b as jn,g as _o,h as $o,j as ct,k as dt,l as Ho,m as Wo}from"./chunk-7RJMG6I2.js";import{$ as ot,$b as it,A as Xn,Aa as no,B as Je,Ba as oo,C as Vn,D as qe,Da as ro,Db as ko,E as Ct,Ea as so,Eb as xo,Fb as Dt,Gb as Ro,Ha as ce,Hb as So,I as Bt,J as Ze,Ja as io,Jb as vo,L as Ot,M as Pe,Mb as ee,N as Qe,O as K,Ob as Mo,P as et,Pb as Lo,Qb as No,R as tt,Ra as co,Rb as Po,S as nt,Sb as Ao,Tb as To,U as _t,Ub as Go,Vb as Eo,W as B,Wa as po,Xb as Io,Yb as Co,Z as Ae,Zb as Bo,_ as Te,_b as Oo,aa as Yn,b as Ln,bb as lo,bc as Fo,cc as Do,d as Pt,db as mo,ea as Jn,eb as uo,fa as rt,fb as ho,ga as qn,gb as fo,h as Gt,i as Gn,ia as Zn,j as Et,ja as Qn,k as En,l as In,lb as go,m as Me,n as ue,ob as Ft,q as Le,qb as wo,r as Q,ra as eo,rb as bo,s as ie,sb as yo,ta as to,ua as Wt,x as Dn,xa as Ge}from"./chunk-WLRRI35A.js";import{A as zn,B as Un,C as Kn,D as Ht,a as Z,b as It,c as Cn,d as Bn,e as On,g as _n,i as $n,p as Ue,s as Hn,t as Ne,u as Wn,v as Fn,w as Ke,z as $t}from"./chunk-VZQ6VOUP.js";import{A as Se,B as An,D as Tn,K as je,N as ve,O as Ye,T as ze,a as j,b as ye,i as ke,n as xe,o as se,p as At,r as Nn,s as Pn,v as Tt,z as Re}from"./chunk-S333HOG5.js";import{b as at,c as st,e as ao}from"./chunk-P3FBI5ML.js";import{b as St,c as vt,d as Mt,f as Lt}from"./chunk-6WUWQX2P.js";import{e as Rn,l as Mn,m as Nt}from"./chunk-G53BI7VK.js";import{a as bn,b as yn,d as kn,f as le,g as I,h as we,i as q,j as kt,k as ae,l as xt,m as Rt,n as be,r as H,w as vn}from"./chunk-LE7FZM6Y.js";import{d as V}from"./chunk-JRJHXLGP.js";import{a as me,c as xn,d as Ve}from"./chunk-6SWXMRAV.js";import{d as Sn}from"./chunk-IKJZPPOA.js";import{f as gn,g as yt,h as wn,j as U}from"./chunk-TENPGIPX.js";import{b as D}from"./chunk-JMBDTNUR.js";var de=JBrowseExports["@mui/material/SvgIcon"],Kr=e=>de!=null&&e in Object(de)?de[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@mui/material/SvgIcon' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e}),W=Kr("createSvgIcon"),ds=de&&de.__esModule?de.default:de;function Xo(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.horizontalScroll=="function"&&typeof t.zoomTo=="function"&&"coarseDynamicBlocks"in t&&"dynamicBlocks"in t}function Vo(e){return e.reduce((t,n)=>t&&t.end-t.start>=n.end-n.start?t:n,void 0)}function jo(e,t){let n=Vo(e.dynamicBlocks.contentBlocks.filter(r=>r.refName===t.refName&&r.assemblyName===t.assemblyName)),{bpPerPx:o}=e;if(!n||!(o>0))return;let a=n.offsetPx-e.offsetPx;return n.reversed?{scale:-1/o,translateX:a+n.end/o}:{scale:1/o,translateX:a-n.start/o}}function us(e){let t=Vo(e.dynamicBlocks.contentBlocks),n=t?.displayedRegionIndex===void 0?void 0:e.displayedRegions[t.displayedRegionIndex];return t&&e.bpPerPx>0?{refName:t.refName,assemblyName:t.assemblyName,start:t.start,end:t.end,bpPerPx:e.bpPerPx,span:e.bpPerPx*e.width,regionStart:n?.start??t.start,regionEnd:n?.end??t.end}:void 0}function Jr(e,t,n=!0){let o=e.end-e.start,a=n?Math.max(0,Math.min(e.span,(t-o)/2)):0,r=Math.max(e.regionStart,Math.floor(e.start-a)),s=Math.min(e.regionEnd,Math.ceil(e.end+a)),i=s-r-t;return i>0&&(r+=Math.floor(i/2),s-=Math.ceil(i/2)),{refName:e.refName,assemblyName:e.assemblyName,start:r,end:s}}function hs(e,t,n=!0){if(e?.refName!==t.refName||e.assemblyName!==t.assemblyName)return!1;if(n)return e.start<=t.start+1&&t.end<=e.end+1;let o=Jr(t,1/0,!1);return Math.abs(e.start-o.start)<1&&Math.abs(e.end-o.end)<1}var qr=/^[^#]+#\d+$/;function Zr(e,t){let n=e.assemblyNameToPanSN??{},o=new Set(Object.values(n)),a={};for(let{name:r,aliases:s}of t){let i=s.find(c=>qr.test(c));i!==void 0&&!o.has(i)&&(a[r]=i)}return Object.keys(a).length===0?e:{...e,assemblyNameToPanSN:{...a,...n}}}function Qr(e,t){let n=s=>t.find(i=>i.name===s||i.aliases.includes(s))?.name??s,o=e.assemblyNames??[],a=e.assemblyNameToPanSN??{};if([...o,...Object.keys(a)].every(s=>n(s)===s))return e;let r=new Map;for(let[s,i]of Object.entries(a)){let c=n(s);(c===s||!r.has(c))&&r.set(c,i)}for(let s of o){let i=n(s);i!==s&&!r.has(i)&&r.set(i,s)}return{...e,assemblyNames:o.map(n),assemblyNameToPanSN:Object.fromEntries(r)}}var ea=new Set(["GbzBaseSyntenyAdapter","WalkTabixSyntenyAdapter"]);function Yo(e,t){let n=V(t,"adapter");if(!ea.has(n.type)&&!jn(n))return n;let o=U(e).assemblyManager.assemblyList.map(a=>({name:V(a,"name"),aliases:V(a,"aliases")??[]}));return Zr(Qr(n,o),o)}var ta=1,na=.015;function pt({graph:e,span:t,rowY:n,positions:o}){let a=t*na,r=In(e),s=new Map(e.nodes.map(m=>[m.id,m])),i=[];for(let m of r){let p=m.refSpan-m.pathLength;p>=ta&&i.push({nodeIds:m.nodeIds,bp:p});let l=Math.max(m.refSpan,a),u=m.pathLength>0?l/m.pathLength:0;m.nodeIds.forEach((h,f)=>{let g=s.get(h);if(g){let w=m.nodeOffsets[f],x=l/m.nodeIds.length,v=k=>m.start+k*u,y=n(g);o[h]=u?[{x:v(w),y},{x:v(w+g.length),y}]:[{x:m.start+f*x,y},{x:m.start+(f+1)*x,y}]}})}let c=Z(e),d=Object.keys(o);for(let m of d){let p=o[m].at(-1).x;for(let l of c.get(m)??[]){let u=s.get(l);if(u&&!(l in o)){let h=n(u);o[l]=[{x:p,y:h},{x:p+a,y:h}],d.push(l)}}}return i}function oa(e,t){let n=new Map;for(let a of e.nodes)if(we(a)){let r=me(a.stable.refName);n.set(r,(n.get(r)??0)+a.length)}let o=new Map(t.map((a,r)=>[a,r]));return[...n.keys()].sort((a,r)=>(o.get(a)??1/0)-(o.get(r)??1/0)||n.get(r)-n.get(a)||a.localeCompare(r))}function zo(e,t,n=[]){let o=q(e),a=oa(e,n);if(o.length===0||a.length===0)return;let r=be(o,t),s=new Map(a.map((l,u)=>[l,u+1])),i=ae(o),c=a.length+1,d=pt({graph:e,span:r,rowY:l=>{let u=l.stable;return((u?s.get(me(u.refName)):void 0)??c)*j},positions:i}),p=[{label:me(o[0].stable.refName),y:0},...a.map(l=>({label:l,y:s.get(l)*j}))];return{nodePositions:i,rowLabels:p,sampleRows:a,referenceAxis:!0,pixelRows:!0,alleleDeletions:d}}function ra(e){let t=new Set;for(let n of e.nodes)n.stable&&t.add(n.stable.rank);return new Map([...t].sort((n,o)=>n-o).map((n,o)=>[n,o]))}function Uo(e,t){let n=q(e);if(n.length===0)return;let o=be(n,t),a=ra(e),r=ae(n),s=pt({graph:e,span:o,rowY:c=>(c.stable?a.get(c.stable.rank)??a.size:a.size)*j,positions:r}),i=[...a].map(([c,d])=>({label:c===0?"Reference (rank 0)":`Rank ${c}`,y:d*j}));return{nodePositions:r,rowLabels:i,referenceAxis:!0,pixelRows:!0,alleleDeletions:s}}var aa=12,Xt=j;function Ko(e){return 10+8*Math.log2(1+e.length)}function te(e,t){return e<t?-1:e>t?1:0}function qo(e,t){return te(e.at,t.at)||te(e.side,t.side)||te(e.hops,t.hops)}var Jo={at:1/0,side:0,hops:0};function Vt(e){let t=new Map(e.nodes.map(o=>[o.id,o])),n=ca(e);return e.nodes.map(o=>o.id).sort((o,a)=>qo(n.get(o)??Jo,n.get(a)??Jo)||te(t.get(o).name,t.get(a).name)||te(o,a))}function sa(e,t){let n=new Set(e.nodes.map(m=>m.id)),o=new Map(t.map(m=>[m.id,m.stable.start])),a=new Map,r=new Map;t.forEach((m,p)=>{r.set(m.id,t[p-1]?.id),a.set(m.id,t[p+1]?.id)});let s=t[0]?.id,i=(m,p)=>{let l=a.get(m);a.set(m,p),r.set(p,m),a.set(p,l),l!==void 0&&r.set(l,p)},c=(m,p)=>{let l=r.get(m);l===void 0?(s=p,r.set(p,void 0),a.set(p,m),r.set(m,p)):i(l,p)};for(let m of e.paths??[]){let p=0,l=0,u;for(let w of m.nodeIds){let x=o.get(w);x!==void 0&&(u!==void 0&&x!==u&&(x>u?p++:l++),u=x)}let h=l>p?[...m.nodeIds].reverse():m.nodeIds,f,g=new Set;for(let w of h)if(a.has(w)){if(f===void 0)for(let x of g)c(w,x);f=w}else n.has(w)&&(f===void 0?g.add(w):(i(f,w),f=w))}let d=[];for(let m=s;m!==void 0;m=a.get(m))d.push(m);return d}function ia(e,t,n){let o=[...t.entries()].sort(([i,c],[d,m])=>qo(c,m)||te(i,d)).map(([i])=>i),a=o.length;for(let i of o){let c=t.get(i);for(let d of e.get(i)??[])n.has(d)&&!t.has(d)&&(t.set(d,{at:c.at,side:1,hops:c.hops+1}),o.push(d))}let r=new Set(o.slice(a)),s=new Set;for(let i of r){if(s.has(i))continue;let{at:c}=t.get(i),d=[i];s.add(i);let m=!0;for(let p of d){let{hops:l}=t.get(p),u=!0,h=!1;for(let f of e.get(p)??[]){let g=t.get(f);g&&(g.at===c&&r.has(f)?(u&&=g.hops<=l,s.has(f)||(s.add(f),d.push(f))):g.at!==c&&(h||=g.at<c,m&&=g.at<c))}m&&=!u||h}if(m)for(let p of d){let l=t.get(p);t.set(p,{...l,side:-1,hops:-l.hops})}}}function ca(e){let t=e.nodes.filter(I).sort((o,a)=>te(o.stable.start,a.stable.start)||te(o.name,a.name)),n=new Map;return sa(e,t).forEach((o,a)=>{n.set(o,{at:a,side:0,hops:0})}),ia(Z(e),n,new Set(e.nodes.map(o=>o.id))),n}function da(e){let t=new Map(e.nodes.map(p=>[p.id,p])),n=Vt(e),o=new Map(n.map((p,l)=>[p,l])),a=p=>I(t.get(p)),r=new Map(n.map(p=>[p,[]])),s=new Map(n.map(p=>[p,[]])),i=(p,l)=>{r.get(l).push(p),s.get(p).push(l)};for(let p of e.edges)p.from===p.to||!o.has(p.from)||!o.has(p.to)||(o.get(p.from)<o.get(p.to)?i(p.from,p.to):i(p.to,p.from));let c=n.filter(a);for(let p=1;p<c.length;p++)i(c[p-1],c[p]);let d=new Map;for(let p of n){let l=0;for(let u of r.get(p))l=Math.max(l,d.get(u)+1);d.set(p,l)}for(let p=n.length-1;p>=0;p--){let l=n[p],u=s.get(l);if(a(l)||u.length===0)continue;let h=1/0;for(let w of u)h=Math.min(h,d.get(w));let f=d.get(l),g=Math.max(f,h-1);d.set(l,Math.floor((f+g)/2))}let m=[];for(let p of n)(m[d.get(p)]??=[]).push(p);return{layers:m,layerOf:d,preds:r}}function Zo(e){if(!e.nodes.some(I))return;let t=new Map(e.nodes.map(p=>[p.id,p])),n=p=>I(t.get(p)),{layers:o,layerOf:a,preds:r}=da(e),s=o.map(p=>{let l=0;for(let u of p)l=Math.max(l,Ko(t.get(u)));return l}),i=[],c=0;for(let p=0;p<o.length;p++)i[p]=c,c+=s[p]+aa;let d=new Map;for(let p of o){let l=[];for(let h of p){if(n(h)){d.set(h,0);continue}let f=r.get(h).filter(w=>d.has(w)),g=0;for(let w of f)g+=d.get(w)/f.length;l.push({id:h,ideal:g===0?Xt:g})}l.sort((h,f)=>h.ideal-f.ideal);let u=new Set([0]);for(let{id:h,ideal:f}of l){let g=Math.round(f/Xt);g===0&&(g=f>=0?1:-1);for(let w=1;u.has(g);w++)u.has(g+w)?u.has(g-w)||(g-=w):g+=w;u.add(g),d.set(h,g*Xt)}}let m={};for(let p of e.nodes){let l=a.get(p.id),u=Ko(p),h=i[l]+s[l]/2,f=d.get(p.id);m[p.id]=[{x:h-u/2,y:f},{x:h+u/2,y:f}]}return{nodePositions:m,referenceAxis:!1,pixelRows:!0}}var lt=1.3;function mt(e){return Math.max(e.reference.bp,...e.rows.map(t=>t.bp))}function he(e,t={rowPx:j,readouts:!0}){return{maxX:e.origin+mt(e)*(t.readouts?lt:1),maxY:e.rows.length*t.rowPx}}function fe(e,t,n){return e?n&&!n.labelled?[]:[e.reference,...e.rows].map((o,a)=>({label:o.label,y:a*(n?.rowPx??j)})):t?.rowLabels??[]}function jt(e,t){let n=ue(e,t);return n&&Qo(e,n,t)}function Qo(e,t,n){let o=q(e);if(o.length===0)return;let a=n?o.filter(s=>kt(s,n)):o;return{nodePositions:ae(a.length>0?a:o),rowLabels:fe(t),referenceAxis:!0,pixelRows:!0,extent:he(t)}}var nr="Force-directed layout",ge=e=>e.nodes.some(I),er=e=>ge(e)&&(e.paths?.length??0)>1,tr=e=>ge(e)&&e.nodes.some(we),ut=[{value:"auto",label:"Anchored",description:"x is reference bp, one row per stable rank. Needs rGFA tags or a reference path.",run:Uo,cutMargins:!0,wholeWalks:!1,available:ge,drawsLocally:ge,drawsNodes:!0},{value:"samplerows",label:"Sample rows",description:"x is reference bp, one row per contributing assembly. Needs rGFA tags or a reference path.",run:zo,cutMargins:!0,wholeWalks:!1,available:tr,drawsLocally:tr,drawsNodes:!0},{value:"walkrows",label:"Walk rows",description:"x is each walk's own bp: one bar per haplotype, blue on the reference's path and purple off it, so a repeat expansion reads as bar length, and each bar boxes its haplotype's own genes where the session has them. Needs a reference and two or more walks.",run:jt,cutMargins:!1,wholeWalks:!0,available:er,drawsLocally:er,drawsNodes:!1},{value:"ordered",label:"Ordered",description:"x is reference order, not bp: every node gets room, bubbles read as lenses. Needs rGFA tags or a reference path.",run:Zo,cutMargins:!1,wholeWalks:!1,available:ge,drawsLocally:ge,drawsNodes:!0},{value:"tubemap",label:"Tube map",description:"sequenceTubeMap: every path a coloured tube through boxed nodes, columns in node order and node widths log-scaled. Needs P or W lines.",run:Gn,cutMargins:!1,wholeWalks:!1,available:Gt,drawsLocally:Gt,drawsNodes:!1},{value:"tubemapref",label:"Tube map on reference",description:"The tube map with each column at the reference bp it covers, so the tubes line up with the tracks around them. Needs P or W lines and a reference path.",run:En,cutMargins:!0,wholeWalks:!1,available:Et,drawsLocally:Et,drawsNodes:!1},{value:"force",label:nr,description:"OGDF FMMM (wasm) or stress, whichever engine is chosen.",run:()=>{},cutMargins:!1,wholeWalks:!1,available:()=>!0,drawsLocally:()=>!1,drawsNodes:!0}],pa=ut.map(e=>e.value);function Yt(e,t){return!Y(e).drawsLocally(t)}function Y(e){return ut.find(t=>t.value===e)??ut[0]}function zt(e){return e.walkStrip&&e.mode.drawsNodes&&!e.drawsPicture&&!e.popped&&!e.host&&e.walks>1}function Ut(e,t){return e.wholeWalks||t.walkStrip&&!t.host}var Ee=6,ar=260,la=11,ma=3,ua="#111",or=3;function Kt(e,t,n){let o=e.pathVisits?.get(n.name)??[],a=[];for(let r of t){let s=r.axis;if(!s)continue;let i=H(r.name).name;for(let c of o){if(c.path!==i)continue;let{start:d,end:m}=Xn(s,c.start,c.start+n.length);m>0&&d<r.bp&&a.push({row:r.name,start:d,bp:m-d})}}return a}var rr=new WeakMap;function ha(e,t){let n=rr.get(e);if(n||(n=new Map,rr.set(e,n)),n.has(t))return n.get(t);let o=new Map(e.nodes.map(i=>[i.id,i.length])),a=H(t).name,r=(e.paths??[]).filter(i=>H(i.name).name===a),s;if(r.every(i=>i.start!==void 0)){s={ids:[],starts:[],ends:[]};for(let i of[...r].sort((c,d)=>c.start-d.start)){let c=i.start;for(let d of i.nodeIds){let m=o.get(d)??0;s.ids.push(d),s.starts.push(c),s.ends.push(c+m),c+=m}}}return n.set(t,s),s}function fa(e,t,n,o){let a=t.axis,r=a&&ha(e,t.name);if(!a||!r||n<0||n>t.bp)return;let s=a.reversed?a.start-n:a.start+n,i=.5/o,c=Je(a,t.bp),d=Math.max(s-i,c.start),m=Math.min(s+i,c.end),p=kn(r.starts.length,f=>r.ends[f]<=d),l,u=-1,h=!1;for(let f=p;f<r.starts.length&&r.starts[f]<m;f++){let g=r.ends[f]-r.starts[f],w=r.starts[f]<=s&&s<r.ends[f];(g>u||g===u&&w&&!h)&&(u=g,l=r.ids[f],h=w)}return l}function Ie(e,t){let n=t.maxHeight??ar,o=t.labelPx??Math.max(...[e.reference,...e.rows].map(u=>u.label.length))*se+16,a=e.rows.length+1,{rowPx:r,barPx:s,labelled:i,readouts:c}=Ze(a,n-2*Ee,ma),d=Math.max(mt(e),1),m=i?o:Ee,l=Math.max(1,t.width-m-Ee)/(d*(c?lt:1));return{scaleX:l,scaleY:1,translateX:m-e.origin*l,translateY:Ee+r/2,width:t.width,height:a*r+2*Ee,rowPx:r,barPx:s,readouts:c,labelled:i,boxesGenes:qe(r,s)}}function ga(e,t,n,o){let a=Math.round((o-t.translateY)/t.rowPx),r=[e.reference,...e.rows][a],s=(n-t.translateX)/t.scaleX-e.origin;return r&&a>=0&&s>=0&&s<=r.bp?{index:a,row:r,offset:s}:void 0}function wa(e,t,n){let o=new Map([e.reference,...e.rows].map((r,s)=>[r.name,s])),a=r=>(e.origin+r)*t.scaleX+t.translateX;return Le("g",{"data-testid":"graph-walk-marks"},...n.flatMap(r=>{let s=o.get(r.row);if(s===void 0)return[];let i=s*t.rowPx+t.translateY,c=a(r.start),d=Math.max(2,r.bp*t.scaleX),m=p=>Le("rect",{x:c,y:p,width:d,height:or,fill:ua});return[m(i-t.barPx/2-or-1),m(i+t.barPx/2+1)]}))}function Jt(e,t,n=new Set){return Le("g",{"font-family":"sans-serif","font-size":la,fill:"#333"},...(t.labelled?[e.reference,...e.rows]:[]).map((o,a)=>Le("text",{x:6,y:a*t.rowPx+t.translateY+4,"font-weight":n.has(o.name)?600:void 0},o.label)))}function qt(e,t,n){if(t?.size)return e.boxesGenes?n:{untracked:0,unread:0,...n,crowded:!0}}function ne(e){return`${e.refName}:${(e.start+1).toLocaleString()}-${e.end.toLocaleString()}`}function ba(e,t,n=o=>o){return t?{deletion:{bp:`${t.bp.toLocaleString()} bp`,where:ne(t)}}:{ends:`${n(e.from)}${e.fromStrand??""} \u2192 ${n(e.to)}${e.toStrand??""}`}}function sr(e){return le(e)?ir(e):void 0}function ir(e){return{sample:me(e.stable.refName),haplotype:xn(e.stable.refName),refName:Ve(e.stable.refName),start:e.stable.start,end:e.stable.start+e.length}}function ya(e,t){let n=[...e].sort((r,s)=>r.start-s.start),o,a;for(let r of n)a=a&&r.start-a.end<=t?{start:a.start,end:Math.max(a.end,r.end)}:{start:r.start,end:r.end},(!o||a.end-a.start>o.end-o.start)&&(o=a);return o}function ka(e){return`${e.haplotype??e.sample}\0${e.refName}`}function cr(e,{maxGap:t=1/0}={}){let n=new Map;for(let a of e.nodes)if(le(a)){let r=ir(a),s=ka(r),i=n.get(s);i?(i.spans.push({start:r.start,end:r.end}),i.rank=Math.min(i.rank,a.stable.rank)):n.set(s,{sample:r.sample,haplotype:r.haplotype,refName:r.refName,rank:a.stable.rank,spans:[{start:r.start,end:r.end}]})}let o=new Map;for(let a of n.values()){let r=ya(a.spans,t);if(r){let s={sample:a.sample,haplotype:a.haplotype,refName:a.refName,start:r.start,end:r.end,rank:a.rank,nodeCount:a.spans.length},i=a.haplotype??a.sample,c=o.get(i);(!c||s.nodeCount>c.nodeCount)&&o.set(i,s)}}return[...o.values()].sort((a,r)=>+(a.rank!==0)-+(r.rank!==0)||a.sample.localeCompare(r.sample)||(a.haplotype??"").localeCompare(r.haplotype??""))}function Ce(e,t){return(t.haplotype===void 0?void 0:e(t.haplotype))??e(t.sample)}function dr(e,t){return e.flatMap(n=>{let o=Ce(t,n);return o===void 0?[]:[{...n,sample:o}]})}function ht(e){return`${e.refName}:${e.start+1}-${e.end}`}function z(e){return typeof e=="object"&&e!==null}function xa(e){return z(e)&&e.type==="LinearGenomeView"&&typeof e.id=="string"&&typeof e.navToLocString=="function"&&Array.isArray(e.assemblyNames)}function Ra(e){return e.flatMap(t=>z(t)&&Array.isArray(t.views)?[t,...t.views]:[t])}function Be({views:e,connectedViewId:t,assemblyName:n}){let o=Ra(e).filter(r=>xa(r)).filter(r=>r.assemblyNames.includes(n));return o.find(r=>r.id===t)??(o.length===1?o[0]:void 0)}function Zt(e,t){let n=e.assemblyManager;return n?.has(t)?n.get(t)?.name??t:t}function Lc(e,t){let n=e.assemblyManager,o=n?.has(t.assemblyName)?n.get(t.assemblyName):void 0;return o?{...t,assemblyName:o.name,refName:o.getCanonicalRefName2?.(t.refName)??t.refName}:t}function Qt(e,t){let n=V(t,"assemblyNames");return Array.isArray(n)?n.filter(o=>typeof o=="string").map(o=>Zt(e,o)):[]}function lr(e,t,n){n.catch(o=>{console.error(`[GraphGenomeView] ${t}`,o),e.notifyError?.(`${t}: ${o}`,o)})}var Sa=1e3;function en(e,t=Sa){let n=Math.max(0,Math.ceil((t-(e.end-e.start))/2));return{...e,start:Math.max(0,e.start-n),end:e.end+n}}function mr(e,t){return t?e.map(n=>n.rank===0?{...n,sample:t.assemblyName,haplotype:void 0,refName:t.refName,start:t.start,end:t.end}:n):e}function Nc({session:e,location:t,assembly:n,connectedViewId:o,tracks:a=[]}){let r=Be({views:e.views,connectedViewId:o,assemblyName:n}),s;return r?(lr(e,`Could not show ${n} ${ne(t)}`,Promise.resolve(r.navToLocString(ht(t),n))),s=r.id):s=e.addView("LinearGenomeView",{displayName:`${n} \u2014 ${ne(t)}`,init:{assembly:n,loc:ht(t),tracks:a}}).id,s}function Pc({session:e,location:t,assembly:n,connectedViewId:o}){Be({views:e.views,connectedViewId:o,assemblyName:n})&&e.addHighlight?.({refName:t.refName,start:t.start,end:t.end,assemblyName:n})}function pr(e,t){let n=t===void 0?void 0:e.tracks.find(o=>V(o,"trackId")===t);return n?Qt(e,n):[]}function Ac({session:e,contributors:t,trackId:n,graphTrackId:o}){let a=pr(e,o),r=pr(e,n),s=t.filter(d=>r.includes(d.sample)),i=s.length>=2?s:t,c={init:{views:i.map(d=>({assembly:d.sample,loc:ht(d),...o!==void 0&&a.includes(d.sample)?{tracks:[o]}:{}})),tracks:n?i.slice(1).map(()=>[n]):[],collapseEmptyRows:!0}};lr(e,"Could not open the synteny view",e.launchView("LinearSyntenyView",c))}function Oe(e,t,n){let o=new Map;for(let r of e.nodes)if(le(r)){let{refName:s}=r.stable;if(n[r.id]?.length){let i=o.get(s)??o.set(s,{nodes:[],reach:0}).get(s);i.nodes.push(r),i.reach=Math.max(i.reach,r.length)}}for(let{nodes:r}of o.values())r.sort((s,i)=>s.stable.start-i.stable.start);let a=[];for(let r of t){let s=o.get(r.refName);if(!s)continue;let i=[],c=[],d=new Set,m,p=1/0,l=0,u=(r.start+r.end)/2,{nodes:h,reach:f}=s;for(let g=xt(h,r.start-f);g<h.length&&h[g].stable.start<r.end;g++){let w=h[g],x=w.stable.start,v=x+w.length;if(v<=r.start)continue;let y=n[w.id];d.add(w.id),l+=Math.min(v,r.end)-Math.max(x,r.start);let k=[],b=[];for(let S of r.exons){let M=Math.max(S.start,x),N=Math.min(S.end,v);if(N<=M)continue;let C=Tt(y,(M-x)/w.length,(N-x)/w.length);C.length===1&&C.push({...C[0]}),k.push(ye(C)),b.push(C)}k.length>0&&(i.push(...k),c.push({nodeId:w.id,d:k.join(""),stretches:b}));let L=Math.min(Math.max(u,x),v),R=Math.abs(L-u);if(R<p){p=R;let S=w.length?(L-x)/w.length:0;m=Tt(y,S,S)[0]}}m&&a.push({gene:r,exons:i.join(""),exonsByNode:c,nodeIds:d,at:m,covered:l/(r.end-r.start)})}return a}var ur="11.9.0";function _e(e,t,n={}){return{nodePositions:n.drawsRows?{}:e.nodePositions,deletions:t.bypassed,deletionRoutes:e.deletionRoutes,stranded:e.stranded,hiddenEdges:t.hidden}}var hr=(e,t)=>!!e.referencePath&&H(t).name===e.referencePath;function va(e,t){let n=H(t).name;return(e.paths??[]).filter(o=>H(o.name).name===n).sort((o,a)=>(o.start??0)-(a.start??0))}var fr=e=>new Map(e.nodes.map(t=>[t.id,t]));function Ma(e){let t=new Map;return e.edges.forEach((n,o)=>{t.set(`${n.from}>${n.to}`,o)}),{byId:fr(e),edgeAt:t}}function La(e,t,{byId:n,edgeAt:o}){let a=va(e,t),r=a[0];if(!r)return;let s=R=>n.get(R)?.length??0,i=R=>R.nodeIds.reduce((S,M)=>S+s(M),0),c=a.reduce((R,S)=>R+i(S),0),d=R=>{let S=Math.min(...R.map(M=>M.start??1/0));return Number.isFinite(S)?{start:S,end:Math.max(...R.map(M=>(M.start??0)+i(M)))}:void 0},m=d(a),p=m&&{contig:r.contig??Ve(H(t).name),...m},l=p?p.end-p.start:c,u=new Set,h=new Set,f=new Map,g=new Map,w=1,x=0;for(let R of a)p&&(x=Math.max(x,(R.start??0)-p.start)),R.nodeIds.forEach((S,M)=>{u.add(S);let N=(g.get(S)??0)+1;if(g.set(S,N),w=Math.max(w,N),M>0){let Xe=R.nodeIds[M-1],P=o.get(`${Xe}>${S}`)??o.get(`${S}>${Xe}`);P!==void 0&&h.add(P)}let C=s(S);f.has(S)||f.set(S,l>0?(x+C/2)/l:0),x+=C});let v=0,y=0,k;a.forEach((R,S)=>{if(k!==void 0&&R.start!==void 0&&R.start>k)for(let M of Rn(R.start-k,a[S-1].after,R.before))v+=M.cause==="missing"?M.bp:0,y+=M.cause==="unknown"?M.bp:0;k=R.start===void 0?void 0:R.start+i(R)});let b=hr(e,t),L=()=>{let R=b?[]:(e.paths??[]).filter(M=>hr(e,M.name));if(R.length===0)return;let S=d(R);return S?S.end-S.start:R.reduce((M,N)=>M+i(N),0)};return{name:t,reference:b,range:p,nodeIds:u,edgeIndexes:h,progress:f,passes:g,mostPasses:w,route:a.map(R=>R.nodeIds),steps:a.reduce((R,S)=>R+S.nodeIds.length,0),bp:c,referenceBp:L(),missingBp:v,unknownBp:y}}function gr(e,t,n,o){let a=new Map;for(let[r,s]of t.progress){let i=e.get(r),c=n.field==="progress"?s:o&&i?Hn(i,o):void 0;a.set(r,Un(n,c))}return a}function Na(e,t,n){let o=new Set,a=0,r=e.referencePath;if(!r||n.reference)return{reversed:o,bp:a};let s=e.pathVisits;if(!s)return{reversed:o,bp:a};let i=s.pathIndex(H(n.name).name),c=s.pathIndex(r);for(let d of n.progress.keys()){let m=t.get(d),p=m?s.slot(m.name):-1,l=p<0?-1:s.firstBy(p,i),u=p<0?-1:s.firstBy(p,c);l>=0&&u>=0&&s.reversed[l]!==s.reversed[u]&&(o.add(d),a+=m.length)}return{reversed:o,bp:a}}function $e(e,t,n){let o=Ma(e),a=new Set,r=t.filter(d=>!a.has(d.walk)&&a.add(d.walk)).flatMap(d=>{let m=La(e,d.walk,o);return m?[{walk:m,layer:d}]:[]}).sort((d,m)=>Number(m.walk.reference)-Number(d.walk.reference));if(r.length===0)return;let s=0,i=zn(r.map(({walk:d,layer:m})=>$t(m,d.reference,d.reference?0:s++,r.length===1))),c=r.map(({walk:d},m)=>{let p=i[m],{reversed:l,bp:u}=Na(e,o.byId,d);return{...d,encoding:p,colors:gr(o.byId,d,p,n),reversed:l,reversedBp:u}});return wr(c,n)}var Pa={field:"progress",scheme:"red"};function He(e,t,n,o){let a=fr(e);return t.walks.map(r=>{let s=n.find(c=>c.walk===r.name)?.color,i=$t({walk:r.name,color:{...Pa,...s}},r.reference,0);return wr([{...r,encoding:i,colors:gr(a,r,i,o)}],o)})}function wr(e,t){return{walks:e,referenceDomain:t?{start:t.start,end:t.start+t.span}:void 0,nodeIds:new Set(e.flatMap(n=>[...n.nodeIds])),edgeIndexes:new Set(e.flatMap(n=>[...n.edgeIndexes])),names:new Set(e.map(n=>n.name))}}var oe={..._t,width:1200,height:800,colorScheme:"auto",nodeWidth:"depth",contigThickness:6,connectorThickness:2};var br=[{value:"auto",label:"Auto"},{value:"uniform",label:"Uniform"},{value:"random",label:"Random"},{value:"rainbow",label:"Rainbow"},{value:"depth",label:"Depth"},{value:"node-length",label:"Node length"},{value:"stable-rank",label:"Stable rank"},{value:"reference-position",label:"Reference position"},{value:"grey",label:"Grey"}],Aa=br.map(e=>e.value);function We(e,t){return e!=="auto"?e:t?.anchoredBy?"reference-position":"uniform"}function yr(e,t,n){let o=n.region,a=n.colorDomain??o,r=n.walkRows,s=Te(t,{region:n.fitToDrawing?void 0:o,extent:r&&t.extent?he(r,n.walkRowPitch):void 0}),i=new Map(e.nodes.map(b=>[b.id,b])),c=We(n.colorScheme??oe.colorScheme,e),d=c==="reference-position"&&!t.tubeMap?Ne(e,a):void 0,m=Se(e,t.tubeMap?[]:Re(e),n.showDeletionEdges),p=n.walks??[],l=p.some(b=>b.color?.field==="reference")?d??Ne(e,a):void 0,u=p.length>0&&!t.tubeMap?$e(e,p,l):void 0,h=tt(n.facet),f=h.field&&u&&u.walks.length>1?He(e,u,p,l):void 0,g=h.field&&f?{panels:f,place:nt(f.map(b=>b.walks[0].name),h.field,h.domain)}:void 0,w=Ye(e.paths?.length?ve(e.paths):[]),x=n.referenceName??vt(e,o),v=n.contigThickness??oe.contigThickness,y=n.nodeWidth??oe.nodeWidth,k=u?.referenceDomain&&{...u.referenceDomain,name:x};return{bounds:s,nodeById:i,colorScheme:c,referenceRamp:d,drawnDeletions:m,layers:p,lift:u,facet:h,facets:g,labelOf:b=>w.get(b)??b,referenceName:x,keyText:b=>{let L=Po(b,k);return{note:L.delta+L.gaps+L.reversed,scale:L.scale}},contigThickness:v,nodeWidth:y,geometry:(b,L)=>Ke({..._e(t,m,{drawsRows:!!r}),graph:e,nodeById:i,colorScheme:c,contigThickness:v,connectorThickness:n.connectorThickness??oe.connectorThickness,drawPaths:!1,nodeWidth:y,linearLayout:n.linearLayout,highlight:b,axis:L,referenceRamp:d})}}var ft='font-family="Helvetica, Arial, sans-serif" font-size="11"',Ta=48,pe=18,xr=16,gt=16,Ga=32,Ea=22,Ia="rgb(160,160,160)",Rr="#1c1c22";function tn(e,t,n,o,a,r,s,i=1){let c=o.length>1?Ta:pe,d=o.length>1?`fill="url(#${e})"`:`fill="${o[0].color}"${i<1?` fill-opacity="${i}"`:""}`,m=o.length>1?`<linearGradient id="${e}">${o.map(l=>`<stop offset="${l.offset}" stop-color="${l.color}"/>`).join("")}</linearGradient>`:"";return{width:Math.max(c+5+(a.length+r.length)*se,(s?.length??0)*se),height:s?Ga:gt,markup:`${m}<g transform="translate(${t} ${n})" ${ft}><rect y="5" width="${c}" height="8" rx="2" ${d}/><text x="${c+5}" y="13"><tspan font-weight="bold">${Q(a)}</tspan>${Q(r)}</text>${s?`<text y="28">${Q(s)}</text>`:""}</g>`}}function Ca(e,t){return{width:pe+5+4*se,height:gt,markup:`<g transform="translate(${e} ${t})" ${ft}><rect x="1" y="4" width="${pe-2}" height="10" rx="4" fill="none" stroke="${Dt}" stroke-width="2"/><text x="${pe+5}" y="13">exon</text></g>`}}function Ba(e,t,n){let o=[6,9,12].map(a=>`<line y1="${a}" y2="${a}" x2="${pe}" stroke="#444" stroke-width="${Cn}"/>`).join("");return{width:pe+5+n.length*se,height:gt,markup:`<g transform="translate(${e} ${t})" ${ft}>${o}<text x="${pe+5}" y="13">${n}</text></g>`}}function Oa(e,t){let n=[],o=6,a=2,r=0;for(let s of e){let i=s(0,0);o>6&&o+i.width>t-6&&(o=6,a+=r+4,r=0),n.push(s(o,a).markup),o+=i.width+xr,r=Math.max(r,i.height)}return{markup:n,height:a+r}}function kr(e,t,n,o,a,r){return tn(e,t,n,Ht(o.encoding),a,r.note,r.scale)}function _a(e,t){return e.replaceAll(/([ML])(-?[\d.e-]+),(-?[\d.e-]+)/g,(n,o,a,r)=>`${o}${+(Number(a)*t.scaleX+t.translateX).toFixed(1)},${+(Number(r)*t.scaleY+t.translateY).toFixed(1)}`)}function $a(e,t,n,o,a){return`<rect x="${e-n/2}" y="${t-xe-At+2}" width="${n}" height="${xe+At*2-2}" rx="3" fill="#fff" fill-opacity="0.85" stroke="${Dt}"/><text x="${e}" y="${t}" font-family="Helvetica, Arial, sans-serif" font-size="${xe}" fill="${Rr}" text-anchor="middle"><tspan font-style="italic" font-weight="600">${Q(o)}</tspan>${a?Q(a):""}</text>`}function nn(e,t,n={}){let o=n.width??oe.width,a=n.height??oe.height,r=n.walkRows,{bounds:s,nodeById:i,referenceRamp:c,layers:d,lift:m,facet:p,facets:l,labelOf:u,referenceName:h,keyText:f,contigThickness:g,nodeWidth:w,geometry:x}=yr(e,t,n),v=t.pixelRows??!1,y=c&&{start:c.start,end:c.start+c.span},k=n.genes?.length&&!t.tubeMap&&!r?Oe(e,n.genes,t.nodePositions):[],b=ze(e,i,g,w),L=0;function R(P,T,A,O){let _=[],X=So(Ro(k,b.halfWidthPx,P,$=>_a($,T)),{id:`exons${L++}`,width:A,height:O});X&&_.push(ie(X));let G=$=>({x:$.x*T.scaleX+T.translateX,y:$.y*T.scaleY+T.translateY}),E={width:A,height:O};for(let{item:$,x:re,y:J,w:Yr,text:zr}of Pn(Mo(k,G,g,vo(t.nodePositions,T)),E,Nn(E))){let Ur=G($.at).y+g/2;_.push(`<line x1="${re}" x2="${re}" y1="${J-xe-2}" y2="${Ur}" stroke="${Rr}" stroke-width="0.8" stroke-opacity="0.6"/>`,$a(re,J,Yr,$.gene.name,zr.slice($.gene.name.length)))}r&&_.push(ie(Ot(r,{...T,width:A,height:O,...n.walkRowPitch},{ramp:y,rowGenes:n.rowGenes})));let F=fe(r,t,n.walkRowPitch);for(let{label:$,y:re}of F){let J=re*T.scaleY+T.translateY;J>=0&&J<=O&&_.push(`<text x="6" y="${J+4}" ${ft} stroke="#fff" stroke-width="3" paint-order="stroke">${Q($)}</text>`)}return _.join("")}function S(P,T,A){let O=Ae(s,T,A,v,l?{padLeft:K,padTop:K,padRight:K,padBottom:K}:{});if(!O)return"";let _=ot(O.scale,v),{canvas:X,markup:G}=xo(T,A),E=new ko(X);E.uploadGeometry(x(P,_));let F={scaleX:_.scaleX,scaleY:_.scaleY,translateX:O.translateX,translateY:O.translateY};return E.updateTransform({...F,dpr:1}),E.render([1,1,1,1]),G()+R(P,F,T,A)}let M=[],N;if(l){let{panels:P,place:T}=l,A=et({count:T.count,bounds:s,pixelRows:v,width:o,room:a,columns:T.columns??p.columns});P.forEach((O,_)=>{let X=T.cells[_],G=X%A.columns*(A.width+Pe),E=Math.floor(X/A.columns)*(A.height+Qe+Pe),F=O.walks[0];M.push(kr(`key${_}`,G+6,E+2,F,u(F.name),f(F)).markup,`<svg x="${G}" y="${E+Qe}" width="${A.width}" height="${A.height}">${S(O,A.width,A.height)}</svg>`)}),N=A.total}else{let P=[];m&&(m.walks.forEach((G,E)=>{P.push((F,$)=>kr(`key${E}`,F,$,G,u(G.name),f(G)))}),P.push((G,E)=>tn("faded",G,E,[{offset:0,color:Ia}],"",`not on ${m.walks.length===1?u(m.walks[0].name):"these walks"}`,void 0,.3)),Bn(m.walks)&&P.push((G,E)=>Ba(G,E,On(m.walks)))),r?Ct(r,{ramp:y,genes:n.rowGenes?.size?n.rowGeneGaps:void 0}).forEach((E,F)=>{P.push(($,re)=>{let J=Bt([E],$,re,`rows-key-${F}`);return{width:J.width-xr,height:gt,markup:ie(J.tree)}})}):!m&&c&&P.push((G,E)=>tn("ramp",G,E,Ht({field:"reference",scheme:"rainbow"}),h?`${h} position`:"Reference position","",No(h,c.start,c.start+c.span))),k.some(G=>G.exonsByNode.length>0)&&P.push((G,E)=>Ca(G,E));let T=Oa(P,o);M.push(...T.markup);let A=P.length>0?Math.max(Qe,T.height):0,O=o-2*B,_=v||!(s.w>0)?s.h:s.h*O/s.w,X=Math.max(160,Math.min(a-A,Math.ceil(_+2*B)));M.push(`<svg y="${A}" width="${o}" height="${X}">${S(m,o,X)}</svg>`),N=A+X}let C=n.walkStrip;if(C&&!r&&!t.tubeMap){let P=Ie(C.rows,{width:o}),T=Bt(Ct(C.rows,{ramp:y,genes:qt(P,C.rowGenes,C.rowGeneGaps)}),6,N+P.height,"strip-key");M.push(`<line x1="0" x2="${o}" y1="${N+.5}" y2="${N+.5}" stroke="#ddd"/>`,`<svg y="${N}" width="${o}" height="${P.height}">${ie(Ot(C.rows,P,{ramp:y,rowGenes:C.rowGenes,idPrefix:"strip"}))}${ie(Jt(C.rows,P,new Set(d.map(A=>A.walk))))}</svg>`,ie(T.tree)),N+=P.height+Ea}let Xe=JSON.stringify({generator:`@jbrowse/bandage-core@${ur}`,...n.spec===void 0?{}:{spec:n.spec}});return`<svg xmlns="http://www.w3.org/2000/svg" width="${o}" height="${N}" viewBox="0 0 ${o} ${N}"><metadata>${Q(Xe)}</metadata><rect width="${o}" height="${N}" fill="#fff"/>${M.join("")}</svg>
2
+ `}var Ha=.9;function Fe(e,t){return e+2>=t||e>=Ha*t}var Wa=50;function on(e,t,n,o=[]){let a=new Map(e.nodes.map(s=>[s.name,s])),r=[];for(let s of t){let i=[],c=1/0,d=-1/0,m=1/0,p=[],l=ce(s);for(let[f,g]of l.entries()){let w=a.get(g),x=w&&n[w.id];if(!(!w||!x?.length)&&!(s.key?f===0||f===l.length-1:I(w)&&(w.stable.start<s.start||w.stable.start>=s.end))){p.push(w.id),i.push(ye(x.length===1?[x[0],x[0]]:x));for(let v of x)c=Math.min(c,v.x),d=Math.max(d,v.x),m=Math.min(m,v.y)}}if(p.length===0)continue;let u={x:(c+d)/2,y:m},h=s.covering===!0||Fe(p.length,e.nodes.length);r.push({bubble:s,...so(s,o),path:i.join(""),labelAt:u,members:p.length,nodeIds:p,whole:h,tick:!h&&!s.partial&&s.longestAlleleLength<Wa})}return r}function De(e,t){let n=new Set(t),o=e.nodes.filter(c=>n.has(c.name)),a=new Set(o.map(c=>c.id)),r=new Map(e.nodes.map(c=>[c.id,c.length])),s=new Map,i=e.paths?.flatMap(c=>{let d=c.nodeIds.findIndex(l=>a.has(l));if(d<0)return[];let m=c.nodeIds.filter(l=>a.has(l));s.set(c.name,{first:d,nodeIds:m});let p=c.nodeIds.slice(0,d).reduce((l,u)=>l+(r.get(u)??0),0);return[{...c,nodeIds:m,...c.start===void 0?{}:{start:c.start+p}}]});return{name:e.name,nodes:o,edges:e.edges.filter(c=>a.has(c.from)&&a.has(c.to)),...i?.length?{paths:i}:{},anchorPaths:vn(e,s),pathVisits:e.pathVisits,anchoredBy:e.anchoredBy,referencePath:e.referencePath}}function rn(e,t,n,o){let a=e.get(t);e.set(t,{min:Math.min(a?.min??1/0,n.min+o),max:Math.max(a?.max??-1/0,n.max+o),n:Math.min(ao,n.n+(a?.n??0))})}function Sr(e){if(!e.nodes.some(I))return[];let t=new Map(e.nodes.map(l=>[l.id,l])),n=Vt(e),o=new Map(n.map((l,u)=>[l,u])),a=new Int32Array(n.length+1),r=new Map,s=new Set;for(let l of e.edges){let u=o.get(l.from),h=o.get(l.to);if(u===void 0||h===void 0||u===h)continue;s.add(`${l.from}>${l.to}`).add(`${l.to}>${l.from}`);let[f,g]=u<h?[u,h]:[h,u];a[f+1]++,a[g]--;let[w,x]=u<h?[l.from,l.to]:[l.to,l.from];yn(r,w,x)}for(let l=1;l<a.length;l++)a[l]+=a[l-1];let i=e.nodes.filter(I).sort((l,u)=>l.stable.start-u.stable.start),c=new Set([i[0].id,i.at(-1).id]),d=i.map(l=>[l,o.get(l.id)]).filter(([l,u])=>c.has(l.id)||a[u]===0).sort(([l,u],[h,f])=>u-f||l.stable.start-h.stable.start),m=an(e,d.map(([l])=>l.id)),p=[];for(let l=0;l+1<d.length;l++){let[u,h]=d[l],[f,g]=d[l+1],w=n.slice(h+1,g);if(w.length===0)continue;let x=new Map([[u.id,{min:0,max:0,n:1}]]);for(let S of[u.id,...w]){let M=x.get(S);if(M)for(let N of r.get(S)??[])o.get(N)>g||rn(x,N,M,N===f.id?0:t.get(N).length)}let v=sn(e,t,m,u.id,f.id,()=>x.get(f.id)??{min:0,max:0,n:0}),y=u.stable.start+u.length,k=f.stable.start,b=[u.id,...w.filter(S=>I(t.get(S))),f.id],L=b.some((S,M)=>M>0&&!s.has(`${b[M-1]}>${S}`)),R=k-y;p.push(cn({refName:u.stable.refName,start:y,end:k},[u,...w.map(S=>t.get(S)),f],L&&!v.routes?{...v,min:R,max:R}:v,L||v.walksLeave))}return p}function an(e,t){let n=e.paths;if(!n)return;let o=new Map;for(let a of t)o.set(a,new Int32Array(n.length).fill(-1));return n.forEach((a,r)=>{let s=a.nodeIds;for(let i=0;i<s.length;i++){let c=o.get(s[i]);c?.[r]===-1&&(c[r]=i)}}),o}function sn(e,t,n,o,a,r){if(!n)return{...r(),walksLeave:!1};let s=[],i=1/0,c=-1/0,d=0,m=n.get(o),p=n.get(a);e.paths.forEach((u,h)=>{let f=m[h],g=p[h];if(f<0||g<0){(f>=0||g>=0)&&d++;return}let w=u.nodeIds,x=Math.min(f,g)+1,v=Math.max(f,g),y=g<f?b=>w[v-1-b]:b=>w[x+b],k=s.find(b=>b.steps.length===v-x&&b.steps.every((L,R)=>L===y(R)));if(!k){let b=Array.from({length:v-x},(R,S)=>y(S)),L=0;for(let R of b)L+=t.get(R)?.length??0;k={steps:b,bp:L,walks:[]},s.push(k)}k.walks.push(u.name),i=Math.min(i,k.bp),c=Math.max(c,k.bp)});let l=d>0;return s.length?{min:i,max:c,n:s.length,routes:s,walksLeave:l}:{...r(),walksLeave:l}}function cn(e,t,{min:n,max:o,n:a,routes:r},s){return{...e,segmentCount:t.length,pathCount:a,inversion:!1,shortestAlleleLength:n,longestAlleleLength:o,segments:t.map(i=>i.name).join(","),shortestAllele:void 0,longestAllele:void 0,partial:s,routes:r}}function Fa(e,t){let n=e.nodes.length*2,o=new Set,a=[],r=new Int32Array(n);for(let d of e.edges){let m=t.get(d.from),p=t.get(d.to);if(m===void 0||p===void 0)continue;let l=ke(d),u=m*2+(l.from==="end"?1:0),h=p*2+(l.to==="end"?1:0),f=Math.min(u,h)*n+Math.max(u,h);o.has(f)||(o.add(f),a.push(u,h),r[u]++,u!==h&&r[h]++)}let s=new Int32Array(n+1);for(let d=0;d<n;d++)s[d+1]=s[d]+r[d];let i=new Int32Array(s[n]),c=s.slice(0,n);for(let d=0;d<a.length;d+=2){let m=a[d],p=a[d+1];i[c[m]++]=p,m!==p&&(i[c[p]++]=m)}return{offset:s,next:i}}function Da(e,t,n){let o=new Int32Array(e),a=new Uint8Array(e*2),r=new Int32Array(e*2),s=new Int32Array(e),i=[],c=0;return d=>{let m=d>>1;c++,i.length=0;let p=0,l=0,u=0,h,f=g=>{a[g]||(a[g]=1,p++,i.push(g))};f(d),r[l++]=d;e:for(;l>0;){let g=r[--l],w=g>>1;if(o[w]=c,w!==m&&(s[u++]=g),a[g]&&(a[g]=0,p--),t[g]===t[g+1])break;for(let x=t[g];x<t[g+1];x++){let v=n[x],y=v>>1;if(y===m)break e;if(f(v^1),o[y]===c)continue;let k=!0;for(let b=t[v];b<t[v+1];b++)if(o[n[b]>>1]!==c){k=!1;break}k&&(r[l++]=v^1)}if(l===1&&p===1){u>0&&(h={source:d,sink:r[0],inside:s.slice(0,u)});break}}for(let g of i)a[g]=0;return h}}function Xa(e){return{source:e.sink^1,sink:e.source^1,inside:e.inside.map(t=>t^1).reverse()}}var Lr=new Intl.Collator(void 0,{numeric:!0});function dn(e,t){return I(e)&&I(t)&&e.stable.refName===t.stable.refName}function vr(e,t){let n=t[e.source>>1],o=t[e.sink>>1],a=dn(n,o)?n.stable.start-o.stable.start:0,r=((e.sink^1)&1)-(e.source&1);return(a||r||Lr.compare(n.name,o.name))<0}function Mr(e){return[e.source>>1,...Array.from(e.inside,t=>t>>1),e.sink>>1]}function Va(e){let{nodes:t}=e,n=new Map(t.map((c,d)=>[c.id,d])),{offset:o,next:a}=Fa(e,n),r=Da(t.length,o,a),s=new Map;for(let c=0;c<t.length*2;c++){let d=r(c);if(!d)continue;let m=d.source>>1,p=d.sink>>1,l=Math.min(m,p)*t.length+Math.max(m,p);(vr(d,t)||!s.has(l))&&s.set(l,d)}return{found:[...s.values()].map(c=>vr(c,t)?c:Xa(c)),offset:o,next:a}}function ja(e,t,n,o){let a=o.sink>>1,r=new Map([[o.source>>1,{min:0,max:0,n:1}]]);for(let s of[o.source,...o.inside]){let i=r.get(s>>1);if(i)for(let c=t[s];c<t[s+1];c++){let d=n[c]>>1;rn(r,d,i,d===a?0:e[d].length)}}return r.get(a)??{min:0,max:0,n:0}}function pn(e,t){let{nodes:n}=e,{found:o,offset:a,next:r}=Va(e),s=o.map(h=>Fe(h.inside.length,n.length)),i=o.map(Mr),c=new Map;i.forEach((h,f)=>{for(let g of h)bn(c,g,f)});let d=(h,f)=>c.get(h.inside[0]>>1).some(g=>g!==f&&!s[g]&&i[g].length>i[f].length&&i[f].every(w=>c.get(w).includes(g))),m=h=>t!==void 0||dn(n[h.source>>1],n[h.sink>>1]),p=o.filter((h,f)=>!s[f]&&m(h)&&!d(h,f)),l=new Map(n.map(h=>[h.id,h])),u=an(e,p.flatMap(h=>[n[h.source>>1].id,n[h.sink>>1].id]));return p.map(h=>{let f=n[h.source>>1],g=n[h.sink>>1],w=sn(e,l,u,f.id,g.id,()=>ja(n,a,r,h)),x=dn(f,g);return{...cn({refName:x?f.stable.refName:t.refName,start:x?f.stable.start+f.length:t.start,end:x?g.stable.start:t.end},Mr(h).map(v=>n[v]),w,w.walksLeave),key:`${f.name}>${g.name}`,...x?{}:{offReference:!0}}}).sort((h,f)=>h.start-f.start||h.end-f.end||Lr.compare(h.key,f.key))}function wt(e,t){let n=e.nodes.length,o=Sr(e);if(o.length===0){let a=pn(e,t);return t?[...a,{...t,covering:!0}]:a}return o.flatMap(a=>Fe(a.segmentCount-2,n)?[...pn(a.segmentCount===n?e:De(e,ce(a)),a),{...a,covering:!0}]:[a])}function ln(e,t,n){if(t==="uniform"||t==="grey")return;let o=Wn(e,n);return new Map(e.nodes.map((a,r)=>[a.id,_n(Fn(a,r,t,o))]))}var bt=JBrowseExports["@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain"];var Nr=bt&&bt.__esModule?bt.default:bt;var mn={paths:!1,bubbles:!1,deletions:!0,genes:!0,referenceStrip:!0,walkStrip:!1};function Pr(e){let t=z(e)?e:{};return new Set(Object.keys(mn).filter(n=>t[n]??mn[n]))}function Dh(e,t,n){let{[t]:o,...a}=z(e)?e:{};return n===mn[t]?a:{...a,[t]:n}}var un={depth:"depth",length:"node-length",rank:"stable-rank",position:"reference-position"},Ar=Object.fromEntries(Object.entries(un).map(([e,t])=>[t,e]));function Tr(e){if(e==="grey"||e==="uniform")return e;if(z(e)){let{field:t,scheme:n}=e;if(t==="id")return n==="rainbow"?"rainbow":"random";if(typeof t=="string"&&t in un)return un[t]}return"auto"}function Gr(e){return z(e)&&typeof e.domainMin=="number"&&typeof e.domainMax=="number"?{start:e.domainMin,end:e.domainMax}:void 0}function jh(e,t){return e==="grey"||e==="uniform"?e:e==="random"?{field:"id",scale:"categorical"}:e==="rainbow"?{field:"id",scheme:"rainbow"}:e==="reference-position"&&t?{field:"position",domainMin:t.start,domainMax:t.end}:Ar[e]?{field:Ar[e]}:{}}var Er=6;function hn(e){return typeof e=="number"?{width:"uniform",px:e}:z(e)?{width:e.field==="depth"?"depth":"uniform",px:typeof e.value=="number"?e.value:Er}:{width:"depth",px:Er}}function Uh(e,t){return e==="depth"?{field:"depth",value:t}:t}function Ya(e,t,n){let o=Mn(e,t);return o?Nt(o,n):void 0}function Ir(e){try{return e()}catch{return}}function Cr(e){let t=new Map;for(let n of e.nodes)t.set(n.id,n);return t}function Br(e,t,n){return t&&n?It({nodeId:e,nodeById:t,neighbors:n}):void 0}var Or=ro.views(e=>({sessionTrack(t){return U(e).tracks.find(n=>n.trackId===t)},get grammar(){return{}},get hasPendingSource(){return!1},get canRetryLoad(){return!1},get sourceTrack(){return Ir(()=>gn(e).configuration)},get containingView(){return Ir(()=>yt(e))}})).views(e=>{let t=r=>Ln(r,{equals:(s,i)=>JSON.stringify(s)===JSON.stringify(i)}),n=t(()=>Gr(e.grammar.color)),o=t(()=>tt(e.grammar.facet)),a=t(()=>{let r=uo(e.grammar.facet);return r&&r.field!=="walk"&&r.field!=="sample"?r:void 0});return{get chosenLayoutMode(){return e.grammar.layoutMode??"force"},get chosenColorScheme(){return Tr(e.grammar.color)},get statedColorDomain(){return n.get()},get chosenHover(){return e.grammar.hover??"nodes"},get nodeWidth(){return hn(e.grammar.size).width},get contigThickness(){return hn(e.grammar.size).px},get layerSet(){return Pr(e.grammar.layers)},get drawPaths(){return this.layerSet.has("paths")},get showBubbles(){return this.layerSet.has("bubbles")},get showDeletionEdges(){return this.layerSet.has("deletions")},get showGenes(){return this.layerSet.has("genes")},get showReferenceStrip(){return this.layerSet.has("referenceStrip")},get walkStrip(){return this.layerSet.has("walkStrip")},get facetSetting(){return o.get()},get walkRowGroupBy(){return a.get()},get walkRowSamples(){let r=e.grammar.rows?.kept;return Array.isArray(r)?r:void 0},get hoverLightsEverything(){return this.chosenHover==="everything"},get litNode(){return this.chosenHover==="off"?null:e.hoveredNode}}}).views(e=>({get paneWidth(){return yt(e).width},get paneMeasured(){return!0},get drawnGraph(){return e.layoutResult?.tubeMap?.graph??e.graph}})).views(e=>({get nodeById(){return e.drawnGraph&&Cr(e.drawnGraph)},get nodeLengths(){let t=new Map;for(let n of e.drawnGraph?.nodes??[])t.set(n.id,n.length);return t},get nodeCount(){return e.graph?.nodes.length??0},get edgeCount(){return e.graph?.edges.length??0},get pathCount(){return e.graph?.paths?.length??0},get legendAtRest(){return e.hoveredNode===null&&e.hoveredRowWalks.length===0},get hasGraph(){return e.graph!==void 0},get geometryPainted(){return no(e)},get showLoading(){return e.error===void 0&&(e.isLoading||e.hasPendingSource||e.graph!==void 0&&!this.geometryPainted)},get canCancelLoad(){return e.isLoading&&!e.layoutResult},get usesLayoutEngine(){return e.graph?Yt(e.chosenLayoutMode,e.graph):!1},get anchorPaths(){return e.graph?.anchorPaths??[]},get walkChoices(){let t=e.graph?.paths;return t?.length?ve(t):[]},get effectiveDrawPaths(){return e.drawPaths&&je(e.graph?.paths?.length??0)},get activeReferencePath(){return e.graph?.referencePath},get rampDomain(){let t=e.openBubbles.at(-1);return t&&!t.offReference&&t.end>t.start?{start:t.start,end:t.end}:e.statedColorDomain??e.graphRegion},get drawnReferenceRamp(){let t=e.drawnGraph;return t?Ne(t,this.rampDomain):void 0},get walkRamp(){return e.walkLayers.some(t=>t.color?.field==="reference")?this.drawnReferenceRamp:void 0},get modeDrawsNodes(){return Y(e.chosenLayoutMode).drawsNodes},get liftedWalkLayers(){return e.walkLayers.length>0||!this.modeDrawsNodes?e.walkLayers:e.hoveredRowWalks.map(t=>({walk:t}))},get walkLift(){let{graph:t}=e,n=this.liftedWalkLayers;return t&&!e.walkCut&&n.length>0&&!e.layoutResult?.tubeMap?$e(t,n,this.walkRamp):void 0},get facetPanels(){let{graph:t}=e,n=this.walkLift;return e.facetSetting.field!==""&&this.modeDrawsNodes&&t&&n&&e.walkLayers.length>1&&n.walks.length>1?He(t,n,e.walkLayers,this.walkRamp):void 0},get drawnWalks(){return this.facetPanels?.map(t=>t.walks[0])??this.walkLift?.walks??[]},get liftsWalks(){return!Qn.has(e.chosenLayoutMode)},get walkReference(){let t=this.walkLift?.referenceDomain;return t&&{...t,name:e.graphRegion?.refName}},get walkLabels(){return Ye(this.walkChoices)},walkLabel(t){return this.walkLabels.get(t)??t},get liftPaintsOffReference(){return!!this.walkLift?.walks.some(t=>t.encoding.field!=="walk"&&[...t.colors.values()].includes(Kn))},get liftedWalksLabel(){let t=this.walkLift?.walks??[];return t.length===1?this.walkLabel(t[0].name):"these walks"},get effectiveColorScheme(){return e.layoutResult?.tubeMap&&(this.tubeMapReads||e.chosenColorScheme==="auto")?"uniform":We(e.chosenColorScheme,e.graph)},get tubeMapReads(){let t=e.layoutResult;return!t?.tubeMapPanels&&(t?.tubeMap?.layout.reads.length??0)>0},get colorSchemeLock(){return this.walkLift?{value:"By walk",why:"Each highlighted haplotype colours its own lane: set it under Haplotypes, Color highlighted..."}:this.tubeMapReads?{value:"By strand",why:"Reads take the reds and blues, so the tube map leaves its nodes clear"}:void 0},get nodePositions(){return e.layoutResult?.nodePositions},get labelsNodeSizes(){return!e.layoutResult?.tubeMap&&!this.walkLift},get alleleDeletions(){return e.layoutResult?.alleleDeletions??[]},get deletionRoutes(){return e.layoutResult?.deletionRoutes},get stranded(){return e.layoutResult?.stranded},get pixelRows(){return e.layoutResult?.pixelRows??!1},get zoomPercent(){return`${(e.scale*100).toFixed(1)}%`},get isDefaultViewport(){return e.scale===1&&e.translateX===0&&e.translateY===0}})).views(e=>({get derivedBubbles(){return e.graph?wt(e.graph):[]},get openBubbleInsides(){let{graph:t}=e;return t?e.openBubbles.map(n=>wt(De(t,ce(n)),n).filter(o=>!o.covering)):[]},get openBubble(){return e.openBubbles.at(-1)},get openBubbleFocus(){let t=this.openBubble,{graph:n}=e;if(!t||!n)return;let o=new Set(ce(t)),a=new Set(n.nodes.filter(s=>o.has(s.name)).map(s=>s.id)),r=new Set;return n.edges.forEach((s,i)=>{a.has(s.from)&&a.has(s.to)&&r.add(i)}),{walks:[],nodeIds:a,edgeIndexes:r,names:new Set}},get drawnHighlight(){return e.walkLift??this.openBubbleFocus},bubbleIsOpen(t){return e.openBubbles.some(n=>at(n,t))},bubbleFaded({bubble:t,nodeIds:n}){let o=e.walkLift,a=this.openBubbleFocus;return o?!n.some(r=>o.nodeIds.has(r)):!!a&&!this.bubbleIsOpen(t)&&!n.every(r=>a.nodeIds.has(r))}})).views(e=>({get bubbles(){let t=e.indexBubbles?.length?e.indexBubbles:e.derivedBubbles,n=new Set(t.map(st));return[...t,...e.openBubbleInsides.flat().filter(o=>!n.has(st(o))&&n.add(st(o)))]},get foldNote(){let t=e.foldedBelowBp;return t===void 0?void 0:`variants under ${Tn(t)} folded into the reference`}})).views(e=>({get cutHaplotypes(){},get sourceAdapter(){let t=e.sourceTrack;return t?Yo(e,t):void 0},get sourceTrackId(){let t=e.sourceTrack;return t?V(t,"trackId"):void 0},get sessionTracks(){let t=U(e);return t.tracks.map(n=>({trackId:n.trackId,name:V(n,"name"),adapterType:V(n,"adapter").type,assemblies:Qt(t,n)}))}})).views(e=>({get assemblyTrackChoices(){let t=e.graphRegion,n=t&&Zt(U(e),t.assemblyName);return n?e.sessionTracks.filter(o=>o.assemblies.includes(n)):[]}})).views(e=>({get geneTrackChoices(){return e.assemblyTrackChoices.filter(t=>ct.has(t.adapterType))},get repeatTrackChoices(){return e.assemblyTrackChoices.filter(t=>_o.has(t.adapterType))},get repeatChoices(){return e.repeatArrays??[]}})).views(e=>({get repeatTrack(){return $o(e.repeatTrackChoices,e.repeatTrackId)},get geneTrack(){return dt(e.geneTrackChoices,e.geneTrackId)},get repeatOptions(){return[{value:"",label:"Whole window"},...e.repeatChoices.map(({key:t,name:n,unit:o})=>({value:t,label:`${n} \xB7 ${o.toLocaleString()} bp unit`}))]},get selectedRepeat(){return e.repeatChoices.find(t=>t.key===e.repeatKey)},get backbone(){return e.graph?St(e.graph):void 0},get cutWalkRows(){let t=e.walkCut?.walkRowRuns;return t?Nt(t):e.graph?ue(e.graph,e.graphRegion):void 0},assemblySpellings(t){let{assemblyManager:n}=U(e),o=n.has(t)?n.get(t):void 0,a=e.sourceAdapter?.assemblyNameToPanSN??{},r=[t,...o?[o.name,...o.aliases]:[]];return{name:t,aliases:[...r,...r.flatMap(s=>a[s]??[])]}},get drawsLoadedReference(){let t=e.graph;return t?.anchoredBy==="tags"||t?.referencePath!==void 0&&t.referencePath===e.loadedReferencePath}})).views(e=>({get geneAssembly(){let t=e.graphRegion;return t?e.assemblySpellings(t.assemblyName):void 0},get geneLaneFilter(){let t=e.containingView;if(!t)return;let n=Ho(t,e.geneTrack?.trackId);return n.length?new Nr({filters:n,jexl:wn(e).pluginManager.jexl}):void 0},get geneFeatures(){let t=e.geneTrackFeatures,n=this.geneLaneFilter;return t?Wo(n?t.filter(o=>n.passes(o)):t):void 0},get backboneGenes(){let{backbone:t}=e,{geneAssembly:n,geneFeatures:o}=this,a=e.drawsLoadedReference||n!==void 0&&Mt(t,[n])!==void 0;return t&&o&&a?Lt(o,t):void 0}})).views(e=>({get nodeNeighbors(){return e.drawnGraph?Z(e.drawnGraph):void 0},get nodeInk(){return ze(e.drawnGraph,e.nodeById,e.contigThickness,e.nodeWidth)},get allDeletions(){return e.graph&&this.drawsNodes?Re(e.graph):[]},get cohortWalkRows(){if(e.chosenLayoutMode!=="walkrows"||!e.graph)return;let t=e.selectedRepeat,n=e.walkCut,o=t?n?Ya(n,t,t.unit):ue(e.graph,t,t.unit):e.cutWalkRows;if(!o)return;let[a,...r]=Fo([o.reference,...o.rows],t?.calls);return{...o,reference:a,rows:r}},get walkRowSampleChoices(){let t=this.cohortWalkRows?.rows??[];return{samples:[...new Set(t.map(n=>n.sample))].sort(),disagreeing:[...new Set(t.filter(n=>n.call?.agrees===!1).map(n=>n.sample))]}},get walkRowSamplesTsv(){let t=e.sourceAdapter?.samplesTsvLocation;return t&&Sn(t)?t:void 0},get walkRowGroupFields(){return mo(e.walkRowSampleTable)},get tubeMapColoring(){let t=e.tubeMapColorBy,n=e.walkRowSampleTable;if(!t||!n||!this.walkRowGroupFields.includes(t))return;let o=yo(t,n),a=(e.graph?.paths??[]).map(r=>H(r.name).name).filter(r=>r!==e.graph?.referencePath);return{field:t,valueOf:o,palette:wo(a.map(o)),unvalued:a.some(r=>o(r)==="")}},get tableGroupBy(){let t=e.walkRowGroupBy,n=e.walkRowSampleTable;return t&&n&&this.walkRowGroupFields.includes(t.field)?{groupBy:t,table:n}:void 0},get tubeMapPanelSplit(){let{field:t,domain:n}=e.facetSetting,o=this.tableGroupBy;return t!==""?{by:t,domain:n}:o?{by:"column",...o.groupBy,table:o.table}:void 0},get keptCohortRows(){let t=this.cohortWalkRows;return t&&Me(t.rows,e.walkRowSamples)},get walkRowGroups(){let t=this.keptCohortRows,n=this.tableGroupBy;return t&&n?ho(t,n.table,n.groupBy):void 0},get walkRowBars(){let t=this.cohortWalkRows,n=this.keptCohortRows;return t&&n?{...t,rows:this.walkRowGroups?.rows??n}:void 0},get drawsNodes(){return Y(e.drawnLayoutMode??e.chosenLayoutMode).drawsNodes},get genePins(){Ge(e.positionsVersion);let t=e.layoutResult?.nodePositions;return e.showGenes&&this.drawsNodes&&e.graph&&e.backboneGenes&&t?Oe(e.graph,e.backboneGenes,t):[]},get bubbleHalos(){Ge(e.positionsVersion);let t=e.layoutResult?.nodePositions;return!e.showBubbles||!this.drawsNodes||!e.graph||!t?[]:on(e.graph,e.bubbles,t,e.repeatArrays)},get referenceRamp(){return e.effectiveColorScheme==="reference-position"?e.drawnReferenceRamp:void 0},get assemblyNames(){let t=e.graphRegion;return t?[t.assemblyName]:[]},get axisScale(){return ot(e.scale,e.pixelRows)},get scaleX(){return this.axisScale.scaleX},get scaleY(){return this.axisScale.scaleY}})).views(e=>({get screenTransform(){return{scaleX:e.scaleX,scaleY:e.scaleY,translateX:e.translateX,translateY:e.translateY}},toScreen(t){return{x:t.x*e.scaleX+e.translateX,y:t.y*e.scaleY+e.translateY}},get deletionDrawing(){return e.graph?Se(e.graph,e.allDeletions,e.showDeletionEdges):void 0},get deletions(){return this.deletionDrawing?.shown??[]},get deletionEdgeIndexes(){return this.deletionDrawing?.bypassed},get hiddenEdgeIndexes(){return this.deletionDrawing?.hidden},get referenceRampDomain(){let t=e.referenceRamp;return t?{start:t.start,end:t.start+t.span}:void 0},get paintsNodeColors(){return e.drawsNodes||!!e.layoutResult?.tubeMap},get referenceRampDrawsOffReference(){return!!e.referenceRamp&&this.paintsNodeColors&&!!e.drawnGraph?.nodes.some(t=>!I(t))},get tubeMapNodeColors(){let t=e.drawnGraph;return e.layoutResult?.tubeMap&&t?ln(t,e.effectiveColorScheme,e.referenceRamp):void 0},get tubeColorKind(){let t=e.layoutResult,n=e.drawnGraph?.paths??[],o=e.tubeMapReads;return t?.tubeMap?e.tubeMapColoring&&!o?"value":t.tubeMapPanels?"role":this.tubeMapNodeColors?"tinted":!o&&(!je(n.length)||n.some(a=>a.members))?"role":"path":void 0},tubeColorsOf(t,n){let o=t.paths??[],a=this.tubeColorKind,r=e.tubeMapColoring;return a==="value"&&r?bo(o,t.referencePath,r.valueOf,r.palette):a==="tinted"?Ft(o,t.referencePath,go):a==="role"?Ft(o,t.referencePath):n},fadeUnhovered(t,n,o){let a=new Set(e.hoveredRowWalks);return a.size>0?t.map((r,s)=>{let i=n[s]?.name??"";return a.has(i)||o!==void 0&&H(i).name===o?r:Ue}):t},get tubeMapTubeColors(){let t=e.layoutResult?.tubeMap,n=e.drawnGraph;return t&&n?this.fadeUnhovered(this.tubeColorsOf(n,t.pathColors),n.paths??[]):void 0},nodeSpan(t){return Br(t,e.nodeById,e.nodeNeighbors)},get hoverDrawing(){let t=e.hoveredPanel;return(t===null?void 0:e.layoutResult?.tubeMapPanels?.[t]?.result.tubeMap)??e.layoutResult?.tubeMap},get hoverGraph(){return this.hoverDrawing?.graph??e.drawnGraph},get hoverNodeById(){let t=this.hoverGraph;return t===e.drawnGraph?e.nodeById:t&&Cr(t)},get hoverNeighbors(){let t=this.hoverGraph;return t===e.drawnGraph?e.nodeNeighbors:t&&Z(t)}})).views(e=>({get pathLegend(){let t=e.drawnGraph?.paths;return(e.layoutResult?.tubeMap?e.tubeColorKind==="path":e.drawPaths)&&t&&je(t.length)&&!t.some(o=>o.members)?ve(t,e.tubeMapTubeColors):[]},get hoveredSpan(){let t=e.hoveredNode,n=e.hoveredBubble;return t!==null?Br(t,e.hoverNodeById,e.hoverNeighbors):n&&!n.offReference?{start:n.start,end:n.end}:void 0},get hoverHighlight(){let t=e.graphRegion,n=this.hoveredSpan;return t&&n&&e.chosenHover!=="off"?{refName:t.refName,assemblyName:t.assemblyName,...n}:void 0}}));var _r=Or.views(e=>({get host(){let t=e.containingView;return Xo(t)?t:void 0}})).views(e=>({get pairedViewId(){return e.host?.id??e.connectedViewId}})).views(e=>({get contributingAssemblies(){let t=e.graph,n=t?q(t):[];return t?cr(t,{maxGap:n.length>0?Rt(n):1/0}):[]}})).views(e=>({get assemblyResolver(){let{assemblyManager:t}=U(e),n=e.sourceAdapter?.assemblyNameToPanSN,o=new Map(Object.entries(n??{}).map(([r,s])=>[s,r])),a=r=>r!==void 0&&t.has(r)?t.get(r)?.name??r:void 0;return r=>a(o.get(r))??a(r)},get geneTracksByAssembly(){let t=new Map;for(let n of e.sessionTracks)if(ct.has(n.adapterType))for(let o of n.assemblies)t.set(o,[...t.get(o)??[],n]);return new Map([...t].flatMap(([n,o])=>{let a=dt(o,"");return a?[[n,a]]:[]}))}})).views(e=>({get launchableAssemblies(){return dr(mr(e.contributingAssemblies,e.graphRegion),e.assemblyResolver)},get canHighlightInLinearView(){let t=e.graphRegion;return t!==void 0&&Be({views:[...U(e).views],connectedViewId:e.pairedViewId,assemblyName:t.assemblyName})!==void 0},nodeLaunchTargets(t){let n=e.nodeById?.get(t),o=n?sr(n):void 0,a=o?Ce(e.assemblyResolver,o):void 0,r=e.graphRegion,s=r?e.nodeSpan(t):void 0,i=r&&s?{sample:r.assemblyName,haplotype:void 0,refName:r.refName,...s}:void 0;return{own:o&&a?{location:en(o),assembly:a}:void 0,reference:r&&i?{location:en(i),assembly:r.assemblyName}:void 0,highlight:r&&i?{location:i,assembly:r.assemblyName}:void 0}}}));var $r=_r.views(e=>({get walkStripShown(){return zt({walkStrip:e.walkStrip,mode:{drawsNodes:e.modeDrawsNodes},drawsPicture:!!e.layoutResult?.tubeMap||!!e.walkRowBars,walks:e.graph?.paths?.length??0,host:!!e.host})},get walkStripRows(){let t=this.walkStripShown?e.cutWalkRows:void 0;return t?{...t,rows:Me(t.rows,e.walkRowSamples)}:void 0},get walkStripFrame(){let t=this.walkStripRows;if(t)return Ie(t,{width:e.paneWidth})},get cutsWholeWalks(){return Ut(Y(e.chosenLayoutMode),{walkStrip:e.walkStrip,host:!!e.host})},get walkStripMarks(){let t=this.walkStripRows,n=e.hoveredNode??e.selectedNode,o=n===null?void 0:e.nodeById?.get(n);return t&&o&&e.graph?Kt(e.graph,[t.reference,...t.rows],o):[]},rowLocation(t,n){let o={sample:t.sample,haplotype:t.haplotype===void 0?void 0:`${t.sample}#${t.haplotype}`};return{...o,assembly:Ce(e.assemblyResolver,o),span:{refName:n.contig,...Je(n,t.bp)}}},get walkStripLocator(){let t=e.stripHover?e.hoveredNode:null;return t===null?void 0:it(e.nodePositions?.[t],e.toScreen)}})).views(e=>({get walkGeneReads(){let t=e.walkRowBars??e.walkStripRows;if(!t||!e.showGenes)return;let n=[],o=0,a=0;for(let r of t.rows){if(!r.axis){a++;continue}let{assembly:s,span:i}=e.rowLocation(r,r.axis),c=s?e.geneTracksByAssembly.get(s):void 0;if(!s||!c){o++;continue}n.push({row:r.name,trackId:c.trackId,region:{assemblyName:s,...i}})}return{reads:n.slice(0,Wt),gaps:{untracked:o,unplaced:a,unread:Math.max(0,n.length-Wt)}}},get walkRowGeneGaps(){return this.walkGeneReads?.gaps},walkRowLaunchTarget(t,n=e.walkRowBars){let o=n?[n.reference,...n.rows][t]:void 0;if(!o?.axis)return;let{sample:a,haplotype:r,assembly:s,span:i}=e.rowLocation(o,o.axis);return{label:o.label,assembly:t===0?e.graphRegion?.assemblyName:s,location:{sample:a,haplotype:r,...i}}},get walkRowGenes(){let t=e.walkRowBars??e.walkStripRows;if(!t||!e.showGenes)return;let n=new Map(e.walkGeneFeatures??[]);return e.geneFeatures&&n.set(t.reference.name,e.geneFeatures),n.size?Vn([t.reference,...t.rows],n):void 0}}));var Hr=$r.views(e=>({get xIsReferenceBp(){return e.layoutResult?.referenceAxis===!0&&Y(e.drawnLayoutMode??e.chosenLayoutMode).cutMargins}})).views(e=>({get hostPlacesX(){let{host:t,graphRegion:n}=e;return t!==void 0&&t.initialized&&n!==void 0&&e.xIsReferenceBp&&!t.dynamicBlocks.contentBlocks.some(o=>o.refName===n.refName&&o.reversed)}})).views(e=>({get hostBpFrame(){let{host:t,graphRegion:n}=e;return t?.initialized&&n?jo(t,n):void 0}})).views(e=>({get hostFrame(){return e.hostPlacesX?e.hostBpFrame:void 0},get tubeMapPicture(){let t=e.layoutResult?.tubeMap;return t?po(t):void 0},get tubeMapReference(){let t=e.layoutResult?.tubeMap;return t?io(t):void 0},get tubeMapDeviations(){let t=e.layoutResult?.tubeMap;return t?.coarse?co(t,t.coarse.deviations):[]},get tubeMapConnectedBoxes(){let t=this.tubeMapReference,{layoutResult:n}=e;return t&&!n?.referenceAxis&&!n?.tubeMapPanels?[...t.values()].flat():void 0}})).views(e=>({get tubeMapGenes(){let t=e.tubeMapReference;return e.showGenes&&!e.host&&t&&e.backboneGenes&&!e.layoutResult?.tubeMapPanels?To(t,e.backboneGenes):[]},get referenceStripApplies(){return!!e.host?.initialized&&!!e.layoutResult&&e.drawsNodes&&!e.hostPlacesX&&!e.facetPanels}})).views(e=>({get referenceStripBlocks(){let{graph:t}=e;if(!e.showReferenceStrip||!e.referenceStripApplies||!t)return[];let n=Co(t,{colorScheme:e.effectiveColorScheme,referenceRamp:e.referenceRamp,walks:e.walkLift?.walks}),o=e.walkLift?void 0:e.openBubbleFocus;return o?n.map(a=>o.nodeIds.has(a.node)?a:{...a,colors:[Ue],faded:!0}):n}})).views(e=>({get referenceStripShown(){return e.referenceStripBlocks.length>0&&e.hostBpFrame!==void 0},get referenceStripOverhangs(){let t=e.hostBpFrame;if(!t||e.referenceStripBlocks.length===0)return!1;let{left:n,right:o}=Bo(e.referenceStripBlocks,t,e.paneWidth);return n>0||o>0},get referenceStripFaded(){return e.referenceStripBlocks.some(t=>t.faded)}})).views(e=>({get referenceStripLit(){if(!e.referenceStripShown)return;let t=e.hoveredNode===null?e.hoveredBubble:null;if(t&&!t.offReference){let a=e.bubbleHalos.find(r=>at(r.bubble,t));return{start:t.start,end:t.end,anchor:a?e.toScreen(a.labelAt):void 0}}let n=e.hoveredNode??e.selectedNode,o=n===null?void 0:e.nodeSpan(n);return o&&n!==null?{...o,anchor:it(e.nodePositions?.[n],e.toScreen)}:void 0},referenceStripNodeAt(t,n){let o=e.hostBpFrame;return e.referenceStripShown&&o?Oo(e.referenceStripBlocks,o,t,n):void 0},get referenceStripZonePx(){return e.referenceStripShown?Io:0}}));var za=3e3,Ua=350,Ka=34;function Ja(e){let t=[0];for(let n=1;n<e.length;n++)t.push(t[n-1]+Math.hypot(e[n].x-e[n-1].x,e[n].y-e[n-1].y));return t}function qa(e,t){if(e.length===1||t===1)return Array.from({length:t},()=>({...e[0]}));let n=Ja(e),o=n.at(-1),a=[],r=1;for(let s=0;s<t;s++){let i=o*s/(t-1);for(;r<e.length-1&&n[r]<i;)r++;let c=n[r]-n[r-1],d=c>0?(i-n[r-1])/c:0,m=e[r-1],p=e[r];a.push({x:m.x+(p.x-m.x)*d,y:m.y+(p.y-m.y)*d})}return a}var Za=400,Wr=1.8,Qa=.1;function _g(e,t,n,o,a){let r=y=>({x:(y.x*t.scaleX+t.translateX-o.translateX)/o.scaleX,y:(y.y*t.scaleY+t.translateY-o.translateY)/o.scaleY}),s={};for(let[y,k]of Object.entries(n)){let b=e[y];b?.length&&k.length&&(s[y]=qa(b.map(r),k.length))}let i=new Map,c=(y,k)=>{let b=i.get(y);b?b.push(k):i.set(y,[k])};for(let y of a){let{from:k,to:b}=y;if(k!==b&&n[k]?.length&&n[b]?.length){let L=ke(y);c(k,{id:b,side:L.to}),c(b,{id:k,side:L.from})}}let d=new Map,m=y=>d.get(y.id)??(y.side==="start"?s[y.id][0]:s[y.id].at(-1)),p=Object.keys(s),l=[];for(let y of p)for(let k of i.get(y)??[]){if(s[k.id]||d.has(k.id))continue;let b=i.get(k.id).find(L=>L.id===y);d.set(k.id,{...m(b)}),p.push(k.id),l.push(k.id)}let u=new Map(l.map((y,k)=>[y,k])),h=new Float64Array(l.map(y=>d.get(y).x)),f=new Float64Array(l.map(y=>d.get(y).y)),g=new Float64Array(l.length),w=new Float64Array(l.length),x=l.map((y,k)=>i.get(y).flatMap(b=>{let L=u.get(b.id);if(L===void 0){let R=m(b);return g[k]+=R.x,w[k]+=R.y,[]}return[L]})),v=l.map(y=>i.get(y).length);for(let y=0;y<Za;y++){let k=0;for(let b=0;b<l.length;b++){let L=g[b],R=w[b];for(let N of x[b])L+=h[N],R+=f[N];let S=Wr*(L/v[b]-h[b]),M=Wr*(R/v[b]-f[b]);k=Math.max(k,Math.abs(S*o.scaleX)+Math.abs(M*o.scaleY)),h[b]+=S,f[b]+=M}if(k<Qa)break}l.forEach((y,k)=>{s[y]=n[y].map(()=>({x:h[k],y:f[k]}))});for(let[y,k]of Object.entries(n))s[y]??=k.map(b=>({...b}));return s}function es(e,t){let n=0,o=1/0;return e.forEach((a,r)=>{let s=(a.x-t.x)**2+(a.y-t.y)**2;s<o&&(o=s,n=r)}),n}function $g(e,t,n,o){let a=(r,s)=>{let i=n[r],c=o[r];if(!i||!c||c.length===0)return{x:0,y:0};let d=es(c,s);return{x:i[d].x-c[d].x,y:i[d].y-c[d].y}};return Object.fromEntries(Object.entries(e).map(([r,s])=>{let i=t[Number(r)],c=a(i?.from??"",s[0]),d=a(i?.to??"",s.at(-1));return[r,s.map((m,p)=>{let l=s.length>1?p/(s.length-1):0;return{x:m.x+c.x+(d.x-c.x)*l,y:m.y+c.y+(d.y-c.y)*l}})]}))}function Fr(e,t,{ids:n,alpha:o}){let a=(r,s)=>{for(let i=0;s&&i<s.count;i++){let c=r[s.start+i];c.color=$n(c.color,o)}};for(let r of n)a(e.nodeStrokes,e.nodeStrokeRuns.get(r));t.forEach(({from:r,to:s},i)=>{(n.has(r)||n.has(s))&&(a(e.edgeCurves,e.edgeCurveRuns.get(i)),a(e.arrows,e.arrowRuns.get(i)))})}function ts(e){return e<.5?4*e*e*e:1-(-2*e+2)**3/2}function Hg(e,t,n,o){return!(e.referenceAxis||t.referenceAxis||e.pixelRows||t.pixelRows||t.tubeMap||o||n>za)}function Wg(){return typeof requestAnimationFrame<"u"&&!("matchMedia"in window&&window.matchMedia("(prefers-reduced-motion: reduce)").matches)}function Fg(e,t,n){let o={frame:0,finish:()=>{e(1)}},a=0,r=performance.now(),s=()=>{if(!t()){n();return}let i=performance.now();a+=Math.min(i-r,Ka),r=i;let c=Math.min(1,a/Ua);e(ts(c)),c<1?o.frame=requestAnimationFrame(s):n()};return o.frame=requestAnimationFrame(s),o}function Dg(e,t,n,o){for(let[a,r]of Object.entries(e)){let s=t[a],i=n[a];!s||!i||r.forEach((c,d)=>{c.x=o===1?i[d].x:s[d].x+(i[d].x-s[d].x)*o,c.y=o===1?i[d].y:s[d].y+(i[d].y-s[d].y)*o})}}var ns=8,os=19,Dr=Pe+os,rs=48;function as(e,t,n){if(!(!e||!t))return qe(e.rowPx,e.barPx)?n:{untracked:0,unread:0,...n,crowded:!0}}var dw=Hr.views(e=>({get paneCeiling(){return Math.max(rt,e.paneHeight??Jn)},get fitRoom(){return e.host?this.canvasHeight:this.paneCeiling},get walkRowPitch(){let t=e.walkRowBars;if(!t)return;let n=this.fitRoom,o=(e.walkRowGroups?.sections.length??0)*lo;return Ze(t.rows.length+1,n-this.fitPadTopBase-B-o)},get walkRowPlacement(){let t=this.walkRowPitch;return t?fo(e.walkRowGroups?.sections??[],t.rowPx):void 0},get walkRowGeneKey(){return as(this.walkRowPitch,!!e.walkRowGenes?.size,e.walkRowGeneGaps)},get drawnRowLabels(){let t=this.walkRowPlacement,n=fe(e.walkRowBars,e.layoutResult,this.walkRowPitch);return e.walkRowBars&&t?n.map((o,a)=>({...o,y:t.rowY(a)})):n},get visibleRowLabels(){return this.drawnRowLabels.flatMap(({label:t,y:n})=>{let o=e.toScreen({x:0,y:n}).y;return o>=0&&o<=this.canvasHeight?[{label:t,y:n,top:o}]:[]})},get fitPadLeft(){return this.drawnRowLabels.reduce((t,n)=>Math.max(t,An(n.label,0).x1+6),B)},get layoutBounds(){let t=e.layoutResult,n=e.walkRowBars,o=n&&t?.extent?he(n,this.walkRowPitch):void 0;return t?Te(t,{region:e.graphRegion,extent:o&&{...o,maxY:o.maxY+(this.walkRowPlacement?.headersPx??0)}}):void 0},get hoveredWalkRowText(){let t=e.walkRowBars,n=e.hoveredWalkRow;if(!t||n===null||this.walkRowPitch?.readouts!==!1)return;let o=t.reference.name===n,a=o?t.reference:t.rows.find(r=>r.name===n);return a?{label:a.label,readout:Dn(a,o?void 0:t.reference,t.unit,a.call)}:void 0},walkRowAt(t,n){let o=e.walkRowBars,a=this.walkRowPitch,r=this.walkRowPlacement;if(!o||!a||!r)return;let s=r.rowAt((n-e.translateY)/e.scaleY,o.rows.length+1),i=[o.reference,...o.rows][s],c=r.rowY(s)*e.scaleY+e.translateY,d=(t-e.translateX)/e.scaleX-o.origin;return i&&Math.abs(n-c)<=a.barPx/2+2&&d>=0&&d<=i.bp?s:void 0},get fitPadTopBase(){let t=Eo(e.tubeMapGenes);return B+Math.max(0,t-1)*Go+e.referenceStripZonePx},get legendRoom(){let t=this.layoutBounds,{width:n,height:o}=e.legendSize;if(!t||t.w<=0||n===0||e.facetPanels||e.tubeMapReads)return;if(e.hostPlacesX)return"top";let a=this.fitPadTopBase,r=this.fitRoom,s=m=>(e.paneWidth-this.fitPadLeft-m)/t.w,i=m=>e.pixelRows?t.h+m+B<=r?1/0:0:(r-m-B)/t.h,c=Math.min(s(n+2*ee),i(a));return Math.min(s(B),i(a+o+ee))>=c?"top":"right"},get fitPadTop(){return this.fitPadTopBase+(this.legendRoom==="top"?e.legendSize.height+ee:0)},get fitPadRight(){return this.legendRoom==="right"?Math.max(B,e.legendSize.width+2*ee):B},get minFitScale(){let t=this.layoutBounds,n=e.layoutResult,o=n?.tubeMap?.layout.tracks[0]?.width;return t&&t.h>0&&o&&!n.referenceAxis?Math.min(Zn/o,(this.paneCeiling-this.fitPadTop-B)/t.h):0},get facetSpec(){let{field:t,domain:n,columns:o}=e.facetSetting;return t===""?void 0:n.length===0&&o===void 0?t:{field:t,domain:[...n],...o===void 0?{}:{columns:o}}},get facetPlacement(){let t=e.facetPanels,{field:n,domain:o}=e.facetSetting;return t?nt(t.map(a=>a.walks[0].name),e.hostPlacesX||n===""?"walk":n,o):void 0},facetGridIn(t){let n=this.facetPlacement,o=this.layoutBounds;return n&&o&&o.w>0?et({count:n.count,bounds:o,pixelRows:e.pixelRows,width:e.paneWidth,room:t,columns:e.hostPlacesX?1:n.columns??e.facetSetting.columns}):void 0},get facetGrid(){return this.facetGridIn(this.fitRoom-Dr)},get tooltipRightPx(){let{width:t,height:n}=e.legendSize,o=ee+e.referenceStripZonePx+n;return!e.facetPanels&&t>0&&o>this.canvasHeight-rs?t+2*ee:ns},get canvasHeight(){let t=this.layoutBounds,n=this.paneCeiling;if(!t)return n;let o=this.facetGrid;if(o)return Math.max(rt,o.total+Dr);let a=Math.max(rt,e.legendSize.height+2*ee+e.referenceStripZonePx),r=this.fitPads,s=r.top+r.bottom;if(e.pixelRows)return Math.min(n,Math.max(a,t.h+s));let i=e.paneWidth-r.left-r.right;return t.w>0&&i>0?Math.min(n,Math.max(a,t.h*Math.max(i/t.w,this.minFitScale)+s)):n},get viewBox(){let t=this.facetGrid;return t?{width:t.width,height:t.height}:{width:e.paneWidth,height:this.canvasHeight}},get fitPads(){return this.facetGrid?{left:K,top:K,right:K,bottom:K}:{left:this.fitPadLeft,top:this.fitPadTop,right:this.fitPadRight,bottom:B}},get usableHeight(){let{top:t,bottom:n}=this.fitPads;return this.viewBox.height-t-n},get fittedTransform(){let t=this.layoutBounds,{width:n,height:o}=this.viewBox,a=this.fitPads;return t?Ae(t,n,o,e.pixelRows,{minScale:this.facetGrid?0:this.minFitScale,padLeft:a.left,padTop:a.top,padRight:a.right,padBottom:a.bottom}):void 0}})).views(e=>({viewportToBuild(){return Yn(oo(e),to)},applySelection(t){let n=e.selectedNode;t.setNodeHighlights(n===null?new Map:new Map([[n,eo]]))},get hoverLayerNode(){let{litNode:t,selectedNode:n}=e;return t===n?null:t},get paintTransform(){let t=Do();return{scaleX:e.scaleX*t,scaleY:e.scaleY*t,translateX:e.translateX*t,translateY:e.translateY*t,dpr:t}}})).views(e=>({paint(t){t.updateTransform(e.paintTransform),t.render(e.referenceStripShown?[0,0,0,0]:qn)}})).views(e=>({buildDrawing(t,n){let{graph:o,nodeById:a,layoutResult:r,deletionDrawing:s}=e;if(!o||!a||!r||!s)return;Ge(e.viewportDirty,e.positionsVersion);let i=Pt(()=>e.viewportToBuild()),c=Ke({..._e(r,s,{drawsRows:!!e.walkRowBars}),graph:o,nodeById:a,colorScheme:e.effectiveColorScheme,contigThickness:e.contigThickness,connectorThickness:e.connectorThickness,drawPaths:n,nodeWidth:e.nodeWidth,highlight:t,axis:Pt(()=>e.axisScale),linearLayout:e.linearLayout,viewportBounds:i,referenceRamp:e.referenceRamp,version:e.positionsVersion}),d=e.morphEntering;return d?.layout===r&&Fr(c,o.edges,d),{batch:c,viewportBounds:i}},get overlayLabels(){return Lo(e)},hoveredOn(t){let n=e.hoveredNode,o=n?e.nodeById?.get(n):void 0;return o?Ao(t,o.id,o.length)??"not on this walk":void 0},get figureUnavailable(){return e.layoutResult?e.walkRowGroups?"The SVG export cannot group walk rows yet: set Group by... to None first":e.drawsNodes||e.walkRowBars?void 0:`${Y(e.chosenLayoutMode).label} draws a picture of its own, which the SVG export does not`:"Nothing is drawn yet"},figure(){let{graph:t,layoutResult:n}=e;return t&&n&&!this.figureUnavailable?nn(t,n,{width:e.paneWidth,height:e.paneCeiling,walks:e.walkLayers,facet:e.facetSpec,colorScheme:e.effectiveColorScheme,nodeWidth:e.nodeWidth,showDeletionEdges:e.showDeletionEdges,linearLayout:e.linearLayout,contigThickness:e.contigThickness,connectorThickness:e.connectorThickness,region:e.graphRegion,colorDomain:e.statedColorDomain,genes:e.showGenes?e.backboneGenes:void 0,walkRows:e.walkRowBars,walkRowPitch:e.walkRowPitch,rowGenes:e.walkRowGenes,rowGeneGaps:e.walkRowGeneGaps,walkStrip:e.walkStripRows&&{rows:e.walkStripRows,rowGenes:e.walkRowGenes,rowGeneGaps:e.walkRowGeneGaps}}):void 0}})).views(e=>({get followsHostView(){let t=e.layoutResult;return!!e.host&&!e.hostPlacesX&&!!t&&!t.referenceAxis&&!t.pixelRows&&!t.tubeMap&&!e.facetGrid}}));var fn=W(D("path",{d:"M3 16h5v-2H3zm6.5 0h5v-2h-5zm6.5 0h5v-2h-5zM3 20h2v-2H3zm4 0h2v-2H7zm4 0h2v-2h-2zm4 0h2v-2h-2zm4 0h2v-2h-2zM3 12h8v-2H3zm10 0h8v-2h-8zM3 4v4h18V4z"}),"LineStyle");var Xr=W(D("path",{d:"M9.01 14H2v2h7.01v3L13 15l-3.99-4zm5.98-1v-3H22V8h-7.01V5L11 9z"}),"CompareArrows");var Vr=W(D("path",{d:"M17 5h-2V3h2zm-2 16h2v-2.59L19.59 21 21 19.59 18.41 17H21v-2h-6zm4-12h2V7h-2zm0 4h2v-2h-2zm-8 8h2v-2h-2zM7 5h2V3H7zM3 17h2v-2H3zm2 4v-2H3c0 1.1.9 2 2 2M19 3v2h2c0-1.1-.9-2-2-2m-8 2h2V3h-2zM3 9h2V7H3zm4 12h2v-2H7zm-4-8h2v-2H3zm0-8h2V3c-1.1 0-2 .9-2 2"}),"HighlightAlt");var ss="Linear genome view",is="Linear synteny view",cs="No synteny track in this session aligns these assemblies";function jr({label:e,icon:t,entries:n,entryLabel:o,onSelect:a,disabledHelpText:r,nameTheOnlyEntry:s=!0}){let[i]=n,c=r?[{label:e,icon:t,disabled:!0,disabledHelpText:r,onClick:()=>{}}]:[];return n.length===0?c:n.length===1&&i?[{label:s?`${e} \u2014 ${o(i)}`:e,icon:t,onClick:a(i)}]:[{label:e,icon:t,type:"subMenu",subMenu:n.map(d=>({label:o(d),onClick:a(d)}))}]}function vw({contributors:e,linearContributors:t=e,syntenyTracks:n,onShowLinear:o,onShowSynteny:a}){let r=n[0]?.coverage??e.length;return[...jr({label:ss,icon:fn,entries:t,entryLabel:s=>`${s.sample} ${ne(s)}`,onSelect:s=>()=>{o({location:s,assembly:s.sample})}}),...e.length>=2?jr({label:`${is} (${r} assemblies)`,icon:Xr,entries:n,entryLabel:s=>s.coverage<r?`${s.name} (${s.coverage} of ${r})`:s.name,nameTheOnlyEntry:!1,disabledHelpText:cs,onSelect:s=>()=>{a(s.trackId)}}):[]]}function Mw({own:e,reference:t,highlight:n,onShowLinear:o,onHighlight:a}){let r=[e?{label:`Open in ${e.assembly} \u2014 ${ne(e.location)}`,target:e}:void 0,t&&t.assembly!==e?.assembly?{label:`Open in ${t.assembly} \u2014 around this node`,target:t}:void 0].filter(s=>s!==void 0);return[...a&&n?[{label:`Highlight in ${n.assembly}`,icon:Vr,onClick:()=>{a(n)}}]:[],...r.map(({label:s,target:i})=>({label:s,icon:fn,onClick:()=>{o(i)}}))]}var Aw=W(D("path",{d:"M19 15.18V7c0-2.21-1.79-4-4-4s-4 1.79-4 4v10c0 1.1-.9 2-2 2s-2-.9-2-2V8.82C8.16 8.4 9 7.3 9 6c0-1.66-1.34-3-3-3S3 4.34 3 6c0 1.3.84 2.4 2 2.82V17c0 2.21 1.79 4 4 4s4-1.79 4-4V7c0-1.1.9-2 2-2s2 .9 2 2v8.18c-1.16.41-2 1.51-2 2.82 0 1.66 1.34 3 3 3s3-1.34 3-3c0-1.3-.84-2.4-2-2.82"}),"Route");var Iw=W(D("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6"}),"Settings");var _w=W(D("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"}),"Visibility");export{W as a,Qo as b,ut as c,pa as d,Y as e,Ut as f,fa as g,ga as h,wa as i,Jt as j,qt as k,ne as l,ba as m,sr as n,z as o,Ra as p,Zt as q,Lc as r,Qt as s,Nc as t,Pc as u,Ac as v,br as w,_w as x,_g as y,$g as z,Hg as A,Wg as B,Fg as C,Dg as D,ln as E,Xo as F,us as G,Jr as H,hs as I,ea as J,Yo as K,Dh as L,jh as M,Uh as N,ns as O,os as P,Dr as Q,dw as R,fn as S,vw as T,Mw as U,Aw as V,Iw as W};
3
+ //# sourceMappingURL=chunk-GRTN25B6.js.map