jbrowse-plugin-graphgenomeviewer 8.0.2 → 8.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/dist/chunks/{AddTrackWorkflow-RJSOQZYQ.js → AddTrackWorkflow-7CXTSSMR.js} +2 -2
  2. package/dist/chunks/GbzBaseSyntenyAdapter-EJIR3HZM.js +2 -0
  3. package/dist/chunks/GbzBaseSyntenyAdapter-EJIR3HZM.js.map +7 -0
  4. package/dist/chunks/{GraphGenomeView-667ZUNDI.js → GraphGenomeView-2AKRM74B.js} +2 -2
  5. package/dist/chunks/{GraphTrackSettingsDialog-7M3Q635V.js → GraphTrackSettingsDialog-7XRZQW6T.js} +2 -2
  6. package/dist/chunks/{HighlightColorDialog-4F34Q4PY.js → HighlightColorDialog-LCBGD2ZA.js} +2 -2
  7. package/dist/chunks/LinearGraphDisplay-WWQ73BO5.js +2 -0
  8. package/dist/chunks/{MinigraphBubbleAdapter-G25V6MZL.js → MinigraphBubbleAdapter-4OOBJ44C.js} +2 -2
  9. package/dist/chunks/RgfaTabixAdapter-CEGFN2QY.js +2 -0
  10. package/dist/chunks/RgfaTabixAdapter-CEGFN2QY.js.map +7 -0
  11. package/dist/chunks/{WalkFormsAdapter-PBN7BJZW.js → WalkFormsAdapter-LTAKACZD.js} +2 -2
  12. package/dist/chunks/{WalkTabixSyntenyAdapter-27WDE5JF.js → WalkTabixSyntenyAdapter-B6V3YNW7.js} +2 -2
  13. package/dist/chunks/chunk-5FNGR33G.js +2 -0
  14. package/dist/chunks/chunk-5FNGR33G.js.map +7 -0
  15. package/dist/chunks/chunk-6VNDP3UB.js +2 -0
  16. package/dist/chunks/chunk-6VNDP3UB.js.map +7 -0
  17. package/dist/chunks/{chunk-CJAV55QB.js → chunk-BJHWGRMP.js} +1 -1
  18. package/dist/chunks/{chunk-CJAV55QB.js.map → chunk-BJHWGRMP.js.map} +1 -1
  19. package/dist/chunks/{chunk-IAXUZMOX.js → chunk-CNCYMJ5E.js} +2 -2
  20. package/dist/chunks/{chunk-IAXUZMOX.js.map → chunk-CNCYMJ5E.js.map} +2 -2
  21. package/dist/chunks/{chunk-2V75YPTT.js → chunk-CVHKXFVS.js} +2 -2
  22. package/dist/chunks/{chunk-2V75YPTT.js.map → chunk-CVHKXFVS.js.map} +2 -2
  23. package/dist/chunks/chunk-CZI7IP5S.js +2 -0
  24. package/dist/chunks/chunk-CZI7IP5S.js.map +7 -0
  25. package/dist/chunks/chunk-CZXJXNZN.js +3 -0
  26. package/dist/chunks/chunk-CZXJXNZN.js.map +7 -0
  27. package/dist/chunks/chunk-HAAABGE7.js +2 -0
  28. package/dist/chunks/{chunk-JMRW3IGK.js → chunk-IK3MQ4ZJ.js} +2 -2
  29. package/dist/chunks/chunk-IK3MQ4ZJ.js.map +7 -0
  30. package/dist/chunks/{chunk-JOYKGTDE.js → chunk-MCBYBZZJ.js} +2 -2
  31. package/dist/chunks/chunk-NOXHIOIM.js +2 -0
  32. package/dist/chunks/chunk-NOXHIOIM.js.map +7 -0
  33. package/dist/chunks/{chunk-FY7X6253.js → chunk-OGXVDZPS.js} +2 -2
  34. package/dist/chunks/{chunk-FY7X6253.js.map → chunk-OGXVDZPS.js.map} +2 -2
  35. package/dist/chunks/{chunk-3EQNVA3F.js → chunk-OLZZDBQJ.js} +2 -2
  36. package/dist/chunks/{chunk-3EQNVA3F.js.map → chunk-OLZZDBQJ.js.map} +2 -2
  37. package/dist/chunks/{chunk-I6F25EXY.js → chunk-PTOKTIQG.js} +2 -2
  38. package/dist/chunks/{chunk-O5FDMVL3.js → chunk-QWG7NASD.js} +2 -2
  39. package/dist/chunks/chunk-SL4JJJQJ.js +3 -0
  40. package/dist/chunks/chunk-SL4JJJQJ.js.map +7 -0
  41. package/dist/chunks/{chunk-XB5KC2EZ.js → chunk-T2VC3EEL.js} +1 -1
  42. package/dist/chunks/{chunk-XB5KC2EZ.js.map → chunk-T2VC3EEL.js.map} +1 -1
  43. package/dist/chunks/{chunk-2PNGGCQJ.js → chunk-UECOGSWM.js} +2 -2
  44. package/dist/chunks/{chunk-2PNGGCQJ.js.map → chunk-UECOGSWM.js.map} +1 -1
  45. package/dist/chunks/chunk-UHV6XIDG.js +2 -0
  46. package/dist/chunks/chunk-UHV6XIDG.js.map +7 -0
  47. package/dist/chunks/{chunk-5RHNR3TH.js → chunk-VKZALU57.js} +1 -1
  48. package/dist/chunks/{chunk-5RHNR3TH.js.map → chunk-VKZALU57.js.map} +1 -1
  49. package/dist/chunks/chunk-W7IHIVSE.js +2 -0
  50. package/dist/chunks/{chunk-XWCLYB5C.js.map → chunk-W7IHIVSE.js.map} +4 -4
  51. package/dist/chunks/{chunk-NLS74JSZ.js → chunk-WUOXZAGN.js} +2 -2
  52. package/dist/chunks/{chunk-NLS74JSZ.js.map → chunk-WUOXZAGN.js.map} +1 -1
  53. package/dist/chunks/{renderSvg-YNA5VK6A.js → renderSvg-E5Q7MLCH.js} +2 -2
  54. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +5 -5
  55. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +4 -4
  56. package/package.json +4 -4
  57. package/src/GraphAddTrackWorkflow/buildTrackConfig.ts +12 -2
  58. package/src/GraphAddTrackWorkflow/graphManifest.ts +16 -9
  59. package/src/GraphGenomeView/components/HoverTooltip.tsx +8 -0
  60. package/src/GraphGenomeView/pane/paneBase.ts +14 -9
  61. package/src/RgfaTabixAdapter/RgfaTabixAdapter.ts +94 -41
  62. package/src/RgfaTabixAdapter/configSchema.ts +35 -4
  63. package/src/RgfaTabixAdapter/format2.test.ts +128 -0
  64. package/src/RgfaTabixAdapter/test_data/pggb_ecoli_f1.links.bed.gz +0 -0
  65. package/src/RgfaTabixAdapter/test_data/pggb_ecoli_f1.links.bed.gz.tbi +0 -0
  66. package/src/RgfaTabixAdapter/test_data/pggb_ecoli_f1.segs.bed.gz +0 -0
  67. package/src/RgfaTabixAdapter/test_data/pggb_ecoli_f1.segs.bed.gz.tbi +0 -0
  68. package/src/RgfaTabixAdapter/test_data/pggb_ecoli_f2.graph.bed.gz +0 -0
  69. package/src/RgfaTabixAdapter/test_data/pggb_ecoli_f2.graph.bed.gz.tbi +0 -0
  70. package/src/RgfaTabixAdapter/test_data/walks5_skip.GRCh38.walks.bed.gz +0 -0
  71. package/src/RgfaTabixAdapter/test_data/walks5_skip.GRCh38.walks.bed.gz.tbi +0 -0
  72. package/src/RgfaTabixAdapter/walkFiles.test.ts +21 -0
  73. package/src/RgfaTabixAdapter/walkReader.ts +20 -15
  74. package/src/graphTrackDefaults/index.ts +2 -2
  75. package/src/locationName.ts +2 -0
  76. package/src/version.ts +1 -1
  77. package/dist/chunks/GbzBaseSyntenyAdapter-EGNUOKB2.js +0 -2
  78. package/dist/chunks/GbzBaseSyntenyAdapter-EGNUOKB2.js.map +0 -7
  79. package/dist/chunks/LinearGraphDisplay-BAEMS5WG.js +0 -2
  80. package/dist/chunks/RgfaTabixAdapter-JPTUWO2Z.js +0 -2
  81. package/dist/chunks/RgfaTabixAdapter-JPTUWO2Z.js.map +0 -7
  82. package/dist/chunks/chunk-AH5UWTAV.js +0 -2
  83. package/dist/chunks/chunk-AH5UWTAV.js.map +0 -7
  84. package/dist/chunks/chunk-DG3E6BSX.js +0 -3
  85. package/dist/chunks/chunk-DG3E6BSX.js.map +0 -7
  86. package/dist/chunks/chunk-HLAQQI6G.js +0 -2
  87. package/dist/chunks/chunk-HLAQQI6G.js.map +0 -7
  88. package/dist/chunks/chunk-IKJZPPOA.js +0 -2
  89. package/dist/chunks/chunk-IKJZPPOA.js.map +0 -7
  90. package/dist/chunks/chunk-JMRW3IGK.js.map +0 -7
  91. package/dist/chunks/chunk-Q7QC2EQU.js +0 -2
  92. package/dist/chunks/chunk-RHYBJCA4.js +0 -2
  93. package/dist/chunks/chunk-RHYBJCA4.js.map +0 -7
  94. package/dist/chunks/chunk-X7YIGIYW.js +0 -2
  95. package/dist/chunks/chunk-X7YIGIYW.js.map +0 -7
  96. package/dist/chunks/chunk-XWCLYB5C.js +0 -2
  97. package/dist/chunks/chunk-ZGTG74GE.js +0 -3
  98. package/dist/chunks/chunk-ZGTG74GE.js.map +0 -7
  99. /package/dist/chunks/{AddTrackWorkflow-RJSOQZYQ.js.map → AddTrackWorkflow-7CXTSSMR.js.map} +0 -0
  100. /package/dist/chunks/{GraphGenomeView-667ZUNDI.js.map → GraphGenomeView-2AKRM74B.js.map} +0 -0
  101. /package/dist/chunks/{GraphTrackSettingsDialog-7M3Q635V.js.map → GraphTrackSettingsDialog-7XRZQW6T.js.map} +0 -0
  102. /package/dist/chunks/{HighlightColorDialog-4F34Q4PY.js.map → HighlightColorDialog-LCBGD2ZA.js.map} +0 -0
  103. /package/dist/chunks/{LinearGraphDisplay-BAEMS5WG.js.map → LinearGraphDisplay-WWQ73BO5.js.map} +0 -0
  104. /package/dist/chunks/{MinigraphBubbleAdapter-G25V6MZL.js.map → MinigraphBubbleAdapter-4OOBJ44C.js.map} +0 -0
  105. /package/dist/chunks/{WalkFormsAdapter-PBN7BJZW.js.map → WalkFormsAdapter-LTAKACZD.js.map} +0 -0
  106. /package/dist/chunks/{WalkTabixSyntenyAdapter-27WDE5JF.js.map → WalkTabixSyntenyAdapter-B6V3YNW7.js.map} +0 -0
  107. /package/dist/chunks/{chunk-Q7QC2EQU.js.map → chunk-HAAABGE7.js.map} +0 -0
  108. /package/dist/chunks/{chunk-JOYKGTDE.js.map → chunk-MCBYBZZJ.js.map} +0 -0
  109. /package/dist/chunks/{chunk-I6F25EXY.js.map → chunk-PTOKTIQG.js.map} +0 -0
  110. /package/dist/chunks/{chunk-O5FDMVL3.js.map → chunk-QWG7NASD.js.map} +0 -0
  111. /package/dist/chunks/{renderSvg-YNA5VK6A.js.map → renderSvg-E5Q7MLCH.js.map} +0 -0
@@ -0,0 +1,2 @@
1
+ import{l as o}from"./chunk-CZI7IP5S.js";function u(a,r,e){return e?{...a,walkRowRuns:o(a,r)}:a}export{u as a};
2
+ //# sourceMappingURL=chunk-HAAABGE7.js.map
@@ -1,2 +1,2 @@
1
- import{a as p}from"./chunk-5RHNR3TH.js";function b(t,s,e){let n=t.get(s);n?n.push(e):t.set(s,[e])}function F(t,s,e){let n=t.get(s);n?n.add(e):t.set(s,new Set([e]))}function m(t,s){let e=new Map;for(let n of t)b(e,s(n),n);return e}function g(t,s){let e=0,n=t;for(;e<n;){let r=e+n>>1;s(r)?e=r+1:n=r}return e}var l=0;function _(t){return t.stable!==void 0}function w(t){return t.stable?.rank===l}function G(t){return t.stable!==void 0&&t.stable.rank>l}function U(t){return t.nodes.filter(w)}function C(t,s){return t.stable.start<s.end&&t.stable.start+t.length>s.start}function K(t){let s={};for(let e of t)s[e.id]=[{x:e.stable.start,y:0},{x:e.stable.start+e.length,y:0}];return s}function T(t,s){return g(t.length,e=>t[e].stable.start<s)}function y(t){let s=1/0,e=-1/0;for(let n of t)s=Math.min(s,n.stable.start),e=Math.max(e,n.stable.start+n.length);return e-s}function $(t,s){return s&&s.end>s.start?s.end-s.start:y(t)}var A=class{constructor(t){this.segments=t.segments,this.offsets=t.offsets,this.path=t.path,this.start=t.start,this.reversed=t.reversed,this.paths=t.paths,this.samples=t.samples,this.slots=new Map(this.segments.map((s,e)=>[s,e]))}static from(t){let s=new u;for(let[e,n]of t){s.declare(e);for(let r of n)s.add(e,r.path,r.sample,r.start,r.strand==="-")}return s.build()}get size(){return this.segments.length}slot(t){return this.slots.get(t)??-1}pathIndex(t){return this.paths.indexOf(t)}firstBy(t,s){for(let e=this.offsets[t];e<this.offsets[t+1];e++)if(this.path[e]===s)return e;return-1}replay(){let t=new Map;return(s,e)=>{if(s<0||e<0)return-1;let n=s*this.paths.length+e,r=this.offsets[s+1],a=t.get(n)??this.offsets[s];for(;a<r&&this.path[a]!==e;)a++;return t.set(n,a+1),a<r?a:-1}}filter(t,s=()=>!0){let e=this.paths.map(t),n=new u;return this.segments.forEach((r,a)=>{if(!s(r))return;let h=n.declare(r);for(let o=this.offsets[a];o<this.offsets[a+1];o++){let i=this.path[o];e[i]&&n.addAt(h,n.pathOf(this.paths[i],this.samples[i]),this.start[o],this.reversed[o]===1)}}),n.build()}strand(t){return this.reversed[t]?"-":"+"}visit(t){let s=this.path[t];return{path:this.paths[s],sample:this.samples[s],start:this.start[t],strand:this.strand(t)}}visitsAt(t){let s=[];for(let e=this.offsets[t];e<this.offsets[t+1];e++)s.push(this.visit(e));return s}get(t){let s=this.slot(t);return s<0?void 0:this.visitsAt(s)}has(t){return this.slots.has(t)}keys(){return this.segments[Symbol.iterator]()}*values(){for(let t=0;t<this.segments.length;t++)yield this.visitsAt(t)}*entries(){for(let t=0;t<this.segments.length;t++)yield[this.segments[t],this.visitsAt(t)]}[Symbol.iterator](){return this.entries()}},d=class{constructor(t){this.data=t,this.length=0}push(t){if(this.length===this.data.length){let s=new this.data.constructor(this.data.length*2);s.set(this.data),this.data=s}this.data[this.length++]=t}},u=class{constructor(){this.segments=[],this.slots=new Map,this.paths=[],this.samples=[],this.pathIndex=new Map,this.slot=new d(new Int32Array(1024)),this.path=new d(new Int32Array(1024)),this.start=new d(new Float64Array(1024)),this.reversed=new d(new Uint8Array(1024))}declare(t){let s=this.slots.get(t);return s===void 0&&(s=this.segments.length,this.slots.set(t,s),this.segments.push(t)),s}pathOf(t,s){let e=this.pathIndex.get(t);return e===void 0&&(e=this.paths.length,this.pathIndex.set(t,e),this.paths.push(t),this.samples.push(s)),e}add(t,s,e,n,r){this.addAt(this.declare(t),this.pathOf(s,e),n,r)}addAt(t,s,e,n){this.slot.push(t),this.path.push(s),this.start.push(e),this.reversed.push(n?1:0)}build(){let t=this.slot.length,s=this.segments.length,e=new Int32Array(s+1),n=this.slot.data;for(let i=0;i<t;i++)e[n[i]+1]++;for(let i=0;i<s;i++)e[i+1]+=e[i];let r=e.slice(0,s),a=new Int32Array(t),h=new Float64Array(t),o=new Uint8Array(t);for(let i=0;i<t;i++){let f=r[n[i]]++;a[f]=this.path.data[i],h[f]=this.start.data[i],o[f]=this.reversed.data[i]}return new A({segments:this.segments,offsets:e,path:a,start:h,reversed:o,paths:this.paths,samples:this.samples})}};var v=/:(\d+)-\d+$/,x=/^([^#]*#[^#]*#[^#[]*)#(\d+)(?:\[(\d+)-\d+\])?$/,I=/\[(\d+)-\d+\]$/;function E(t){let s=x.exec(t);if(s)return{name:s[1],start:+s[2]+ +(s[3]??0)};let e=v.exec(t)??I.exec(t);return e?{name:t.slice(0,e.index),start:+e[1]}:{name:t,start:0}}function Q(t,s){let e=[],n=new u;for(let r of t){let a=p(r.name),h=n.pathOf(r.name,a),o=r.start;for(let i of r.steps)n.addAt(n.declare(i.id),h,o,i.strand==="-"),o+=s(i.id);e.push({name:r.name,sample:a,start:r.start,length:o-r.start})}return{anchorPaths:e,pathVisits:n.build()}}function P(t,s){return t.find(n=>n.sample===s||n.name===s)??t[0]}var R=1;function N(t,s,e,n){let r=s.slot(t.name);if(r<0||s.offsets[r]===s.offsets[r+1])return t;let a=s.firstBy(r,e),h=a>=0?a:s.offsets[r];return{...t,stable:{refName:s.paths[s.path[h]],start:s.start[h],rank:a>=0?l:R,strand:s.strand(h)},samples:n(r)}}function O(t){let s=[...new Set(t.samples)].sort(),e=new Map(s.map((h,o)=>[h,o])),n=Int32Array.from(t.samples,h=>e.get(h)),r=new Uint8Array(s.length),a=new Int32Array(s.length);return h=>{let o=0;for(let f=t.offsets[h];f<t.offsets[h+1];f++){let c=n[t.path[f]];r[c]===0&&(r[c]=1,a[o++]=c)}let i;if(o===s.length)i=s,r.fill(0);else if(o*8<s.length){let f=a.subarray(0,o);f.forEach(c=>r[c]=0),i=Array.from(f.sort(),c=>s[c])}else{i=[];for(let f=0;f<s.length;f++)r[f]===1&&(r[f]=0,i.push(s[f]))}return i}}function k(t,s){let{anchorPaths:e,pathVisits:n}=t,r=e&&n?P(e,s):void 0;if(!r||!e||!n)return t;let a=O(n),h=n.pathIndex(r.name);return{...t,nodes:t.nodes.map(o=>N(o,n,h,a)),anchoredBy:"paths",referencePath:r.name}}function Y(t,s){if(t.anchoredBy!=="tags")return k(t,s);let e=S(t);return e?{...t,referencePath:e}:t}function S(t){let s=t.nodes.find(e=>e.stable?.rank===0)?.stable?.refName;return s!==void 0&&t.anchorPaths?.some(e=>e.name===s)?s:void 0}function Z(t,s){if(!t.anchorPaths)return;let e=new Map(t.nodes.map(a=>[a.id,a.length])),n=(a,h=a.length)=>{let o=0;for(let i=0;i<h;i++)o+=e.get(a[i])??0;return o},r=m(t.paths??[],a=>E(a.name).name);return t.anchorPaths.map(a=>{let h=r.get(a.name),o=h?.length===1?h[0]:void 0,i=o&&s.get(o.name);return o&&i?{...a,start:a.start+n(o.nodeIds,i.first),length:n(i.nodeIds)}:a})}function tt(t){let{pathVisits:s}=t,e=new Map;return n=>{let r=e.get(n.id);if(!r){r=[];let a=s?s.slot(n.name):-1,h=a>=0?s.pathIndex(n.stable.refName):-1;if(h>=0)for(let o=s.offsets[a];o<s.offsets[a+1];o++)s.path[o]===h&&r.push(s.start[o]);r.length<2&&(r=[n.stable.start]),e.set(n.id,r)}return r}}export{b as a,F as b,m as c,g as d,l as e,_ as f,w as g,G as h,U as i,C as j,K as k,T as l,y as m,$ as n,A as o,d as p,u as q,E as r,Q as s,P as t,k as u,Y as v,Z as w,tt as x};
2
- //# sourceMappingURL=chunk-JMRW3IGK.js.map
1
+ import{a as u}from"./chunk-VKZALU57.js";function b(t,s,e){let n=t.get(s);n?n.push(e):t.set(s,[e])}function S(t,s,e){let n=t.get(s);n?n.add(e):t.set(s,new Set([e]))}function m(t,s){let e=new Map;for(let n of t)b(e,s(n),n);return e}function g(t,s){let e=0,n=t;for(;e<n;){let r=e+n>>1;s(r)?e=r+1:n=r}return e}var l=0;function _(t){return t.stable!==void 0}function w(t){return t.stable?.rank===l}function G(t){return t.stable!==void 0&&t.stable.rank>l}function U(t){return t.nodes.filter(w)}function C(t,s){return t.stable.start<s.end&&t.stable.start+t.length>s.start}function K(t){let s={};for(let e of t)s[e.id]=[{x:e.stable.start,y:0},{x:e.stable.start+e.length,y:0}];return s}function T(t,s){return g(t.length,e=>t[e].stable.start<s)}function y(t){let s=1/0,e=-1/0;for(let n of t)s=Math.min(s,n.stable.start),e=Math.max(e,n.stable.start+n.length);return e-s}function $(t,s){return s&&s.end>s.start?s.end-s.start:y(t)}var A=class{constructor(t){this.segments=t.segments,this.offsets=t.offsets,this.path=t.path,this.start=t.start,this.reversed=t.reversed,this.paths=t.paths,this.samples=t.samples,this.slots=new Map(this.segments.map((s,e)=>[s,e]))}static from(t){let s=new d;for(let[e,n]of t){s.declare(e);for(let r of n)s.add(e,r.path,r.sample,r.start,r.strand==="-")}return s.build()}get size(){return this.segments.length}slot(t){return this.slots.get(t)??-1}pathIndex(t){return this.paths.indexOf(t)}firstBy(t,s){for(let e=this.offsets[t];e<this.offsets[t+1];e++)if(this.path[e]===s)return e;return-1}firstByName(t){let s=this.offsets[t];for(let e=s+1;e<this.offsets[t+1];e++){let n=this.paths[this.path[e]],r=this.paths[this.path[s]];(n<r||n===r&&this.start[e]<this.start[s])&&(s=e)}return s}replay(){let t=new Map;return(s,e)=>{if(s<0||e<0)return-1;let n=s*this.paths.length+e,r=this.offsets[s+1],a=t.get(n)??this.offsets[s];for(;a<r&&this.path[a]!==e;)a++;return t.set(n,a+1),a<r?a:-1}}filter(t,s=()=>!0){let e=this.paths.map(t),n=new d;return this.segments.forEach((r,a)=>{if(!s(r))return;let h=n.declare(r);for(let o=this.offsets[a];o<this.offsets[a+1];o++){let i=this.path[o];e[i]&&n.addAt(h,n.pathOf(this.paths[i],this.samples[i]),this.start[o],this.reversed[o]===1)}}),n.build()}strand(t){return this.reversed[t]?"-":"+"}visit(t){let s=this.path[t];return{path:this.paths[s],sample:this.samples[s],start:this.start[t],strand:this.strand(t)}}visitsAt(t){let s=[];for(let e=this.offsets[t];e<this.offsets[t+1];e++)s.push(this.visit(e));return s}get(t){let s=this.slot(t);return s<0?void 0:this.visitsAt(s)}has(t){return this.slots.has(t)}keys(){return this.segments[Symbol.iterator]()}*values(){for(let t=0;t<this.segments.length;t++)yield this.visitsAt(t)}*entries(){for(let t=0;t<this.segments.length;t++)yield[this.segments[t],this.visitsAt(t)]}[Symbol.iterator](){return this.entries()}},p=class{constructor(t){this.data=t,this.length=0}push(t){if(this.length===this.data.length){let s=new this.data.constructor(this.data.length*2);s.set(this.data),this.data=s}this.data[this.length++]=t}},d=class{constructor(){this.segments=[],this.slots=new Map,this.paths=[],this.samples=[],this.pathIndex=new Map,this.slot=new p(new Int32Array(1024)),this.path=new p(new Int32Array(1024)),this.start=new p(new Float64Array(1024)),this.reversed=new p(new Uint8Array(1024))}declare(t){let s=this.slots.get(t);return s===void 0&&(s=this.segments.length,this.slots.set(t,s),this.segments.push(t)),s}pathOf(t,s){let e=this.pathIndex.get(t);return e===void 0&&(e=this.paths.length,this.pathIndex.set(t,e),this.paths.push(t),this.samples.push(s)),e}add(t,s,e,n,r){this.addAt(this.declare(t),this.pathOf(s,e),n,r)}addAt(t,s,e,n){this.slot.push(t),this.path.push(s),this.start.push(e),this.reversed.push(n?1:0)}build(){let t=this.slot.length,s=this.segments.length,e=new Int32Array(s+1),n=this.slot.data;for(let i=0;i<t;i++)e[n[i]+1]++;for(let i=0;i<s;i++)e[i+1]+=e[i];let r=e.slice(0,s),a=new Int32Array(t),h=new Float64Array(t),o=new Uint8Array(t);for(let i=0;i<t;i++){let f=r[n[i]]++;a[f]=this.path.data[i],h[f]=this.start.data[i],o[f]=this.reversed.data[i]}return new A({segments:this.segments,offsets:e,path:a,start:h,reversed:o,paths:this.paths,samples:this.samples})}};var v=/:(\d+)-\d+$/,x=/^([^#]*#[^#]*#[^#[]*)#(\d+)(?:\[(\d+)-\d+\])?$/,I=/\[(\d+)-\d+\]$/;function E(t){let s=x.exec(t);if(s)return{name:s[1],start:+s[2]+ +(s[3]??0)};let e=v.exec(t)??I.exec(t);return e?{name:t.slice(0,e.index),start:+e[1]}:{name:t,start:0}}function Q(t,s){let e=[],n=new d;for(let r of t){let a=u(r.name),h=n.pathOf(r.name,a),o=r.start;for(let i of r.steps)n.addAt(n.declare(i.id),h,o,i.strand==="-"),o+=s(i.id);e.push({name:r.name,sample:a,start:r.start,length:o-r.start})}return{anchorPaths:e,pathVisits:n.build()}}function P(t,s){return t.find(n=>n.sample===s||n.name===s)??t[0]}var R=1;function N(t,s,e,n){let r=s.slot(t.name);if(r<0||s.offsets[r]===s.offsets[r+1])return t;let a=s.firstBy(r,e),h=a>=0?a:s.firstByName(r);return{...t,stable:{refName:s.paths[s.path[h]],start:s.start[h],rank:a>=0?l:R,strand:s.strand(h)},samples:n(r)}}function O(t){let s=[...new Set(t.samples)].sort(),e=new Map(s.map((h,o)=>[h,o])),n=Int32Array.from(t.samples,h=>e.get(h)),r=new Uint8Array(s.length),a=new Int32Array(s.length);return h=>{let o=0;for(let f=t.offsets[h];f<t.offsets[h+1];f++){let c=n[t.path[f]];r[c]===0&&(r[c]=1,a[o++]=c)}let i;if(o===s.length)i=s,r.fill(0);else if(o*8<s.length){let f=a.subarray(0,o);f.forEach(c=>r[c]=0),i=Array.from(f.sort(),c=>s[c])}else{i=[];for(let f=0;f<s.length;f++)r[f]===1&&(r[f]=0,i.push(s[f]))}return i}}function k(t,s){let{anchorPaths:e,pathVisits:n}=t,r=e&&n?P(e,s):void 0;if(!r||!e||!n)return t;let a=O(n),h=n.pathIndex(r.name);return{...t,nodes:t.nodes.map(o=>N(o,n,h,a)),anchoredBy:"paths",referencePath:r.name}}function Y(t,s){if(t.anchoredBy!=="tags")return k(t,s);let e=B(t);return e?{...t,referencePath:e}:t}function B(t){let s=t.nodes.find(e=>e.stable?.rank===0)?.stable?.refName;return s!==void 0&&t.anchorPaths?.some(e=>e.name===s)?s:void 0}function Z(t,s){if(!t.anchorPaths)return;let e=new Map(t.nodes.map(a=>[a.id,a.length])),n=(a,h=a.length)=>{let o=0;for(let i=0;i<h;i++)o+=e.get(a[i])??0;return o},r=m(t.paths??[],a=>E(a.name).name);return t.anchorPaths.map(a=>{let h=r.get(a.name),o=h?.length===1?h[0]:void 0,i=o&&s.get(o.name);return o&&i?{...a,start:a.start+n(o.nodeIds,i.first),length:n(i.nodeIds)}:a})}function tt(t){let{pathVisits:s}=t,e=new Map;return n=>{let r=e.get(n.id);if(!r){r=[];let a=s?s.slot(n.name):-1,h=a>=0?s.pathIndex(n.stable.refName):-1;if(h>=0)for(let o=s.offsets[a];o<s.offsets[a+1];o++)s.path[o]===h&&r.push(s.start[o]);r.length<2&&(r=[n.stable.start]),e.set(n.id,r)}return r}}export{b as a,S as b,m as c,g as d,l as e,_ as f,w as g,G as h,U as i,C as j,K as k,T as l,y as m,$ as n,A as o,p,d as q,E as r,Q as s,P as t,k as u,Y as v,Z as w,tt as x};
2
+ //# sourceMappingURL=chunk-IK3MQ4ZJ.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@12.1.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-BSOZW3FC.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.1.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-HOAIOEI7.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.1.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-RJWPJCIB.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.1.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-BEUTROKU.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.1.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-BRH73RCH.js"],
4
+ "sourcesContent": ["// src/util/groups.ts\nfunction pushTo(map, key, value) {\n const list = map.get(key);\n if (list) {\n list.push(value);\n } else {\n map.set(key, [value]);\n }\n}\nfunction addTo(map, key, value) {\n const set = map.get(key);\n if (set) {\n set.add(value);\n } else {\n map.set(key, /* @__PURE__ */ new Set([value]));\n }\n}\nfunction groupBy(items, keyOf) {\n const groups = /* @__PURE__ */ new Map();\n for (const item of items) {\n pushTo(groups, keyOf(item), item);\n }\n return groups;\n}\n\nexport {\n pushTo,\n addTo,\n groupBy\n};\n", "// src/util/partitionPoint.ts\nfunction partitionPoint(n, pred) {\n let lo = 0;\n let hi = n;\n while (lo < hi) {\n const mid = lo + hi >> 1;\n if (pred(mid)) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n return lo;\n}\n\nexport {\n partitionPoint\n};\n", "import {\n partitionPoint\n} from \"./chunk-HOAIOEI7.js\";\n\n// src/anchoredNodes.ts\nvar REFERENCE_RANK = 0;\nfunction isAnchored(node) {\n return node.stable !== void 0;\n}\nfunction isBackbone(node) {\n return node.stable?.rank === REFERENCE_RANK;\n}\nfunction isOffReference(node) {\n return node.stable !== void 0 && node.stable.rank > REFERENCE_RANK;\n}\nfunction backboneNodes(graph) {\n return graph.nodes.filter(isBackbone);\n}\nfunction overlapsWindow(node, window) {\n return node.stable.start < window.end && node.stable.start + node.length > window.start;\n}\nfunction backbonePositions(backbone) {\n const positions = {};\n for (const node of backbone) {\n positions[node.id] = [\n { x: node.stable.start, y: 0 },\n { x: node.stable.start + node.length, y: 0 }\n ];\n }\n return positions;\n}\nfunction firstNodeAtOrAfter(nodes, bp) {\n return partitionPoint(nodes.length, (i) => nodes[i].stable.start < bp);\n}\nfunction backboneSpan(backbone) {\n let min = Infinity;\n let max = -Infinity;\n for (const node of backbone) {\n min = Math.min(min, node.stable.start);\n max = Math.max(max, node.stable.start + node.length);\n }\n return max - min;\n}\nfunction referenceSpan(backbone, region) {\n return region && region.end > region.start ? region.end - region.start : backboneSpan(backbone);\n}\n\nexport {\n REFERENCE_RANK,\n isAnchored,\n isBackbone,\n isOffReference,\n backboneNodes,\n overlapsWindow,\n backbonePositions,\n firstNodeAtOrAfter,\n backboneSpan,\n referenceSpan\n};\n", "// src/pathVisits.ts\nvar PathVisits = class {\n constructor(columns) {\n this.segments = columns.segments;\n this.offsets = columns.offsets;\n this.path = columns.path;\n this.start = columns.start;\n this.reversed = columns.reversed;\n this.paths = columns.paths;\n this.samples = columns.samples;\n this.slots = new Map(this.segments.map((s, i) => [s, i]));\n }\n static from(entries) {\n const builder = new PathVisitsBuilder();\n for (const [segment, visits] of entries) {\n builder.declare(segment);\n for (const v of visits) {\n builder.add(segment, v.path, v.sample, v.start, v.strand === \"-\");\n }\n }\n return builder.build();\n }\n get size() {\n return this.segments.length;\n }\n // the segment's index into `segments` and `offsets`, -1 when unvisited\n slot(segment) {\n return this.slots.get(segment) ?? -1;\n }\n pathIndex(path) {\n return this.paths.indexOf(path);\n }\n // the first of `slot`'s visits by path `p`, -1 for none\n firstBy(slot, p) {\n for (let i = this.offsets[slot]; i < this.offsets[slot + 1]; i++) {\n if (this.path[i] === p) {\n return i;\n }\n }\n return -1;\n }\n // the visit of `slot` on the path first in name order, at its lowest offset\n // there: where gfa-to-tabix places a segment the reference doesn't visit, so\n // both place it alike whatever order the file lists its paths in\n firstByName(slot) {\n let best = this.offsets[slot];\n for (let i = best + 1; i < this.offsets[slot + 1]; i++) {\n const a = this.paths[this.path[i]];\n const b = this.paths[this.path[best]];\n if (a < b || a === b && this.start[i] < this.start[best]) {\n best = i;\n }\n }\n return best;\n }\n // Paths' steps replayed in walk order against their visits: the k-th call\n // for one path and segment answers that path's k-th visit there, -1 past\n // its last. A walk in pieces lists its pieces in path order, so replaying\n // the pieces in order reads each step's own visit.\n replay() {\n const cursor = /* @__PURE__ */ new Map();\n return (slot, p) => {\n if (slot < 0 || p < 0) {\n return -1;\n }\n const key = slot * this.paths.length + p;\n const end = this.offsets[slot + 1];\n let at = cursor.get(key) ?? this.offsets[slot];\n while (at < end && this.path[at] !== p) {\n at++;\n }\n cursor.set(key, at + 1);\n return at < end ? at : -1;\n };\n }\n // the visits of paths `keepPath` accepts, at segments `keepSegment` does\n filter(keepPath, keepSegment = () => true) {\n const kept = this.paths.map(keepPath);\n const builder = new PathVisitsBuilder();\n this.segments.forEach((segment, s) => {\n if (!keepSegment(segment)) {\n return;\n }\n const slot = builder.declare(segment);\n for (let i = this.offsets[s]; i < this.offsets[s + 1]; i++) {\n const p = this.path[i];\n if (kept[p]) {\n builder.addAt(\n slot,\n builder.pathOf(this.paths[p], this.samples[p]),\n this.start[i],\n this.reversed[i] === 1\n );\n }\n }\n });\n return builder.build();\n }\n strand(i) {\n return this.reversed[i] ? \"-\" : \"+\";\n }\n visit(i) {\n const p = this.path[i];\n return {\n path: this.paths[p],\n sample: this.samples[p],\n start: this.start[i],\n strand: this.strand(i)\n };\n }\n visitsAt(slot) {\n const out = [];\n for (let i = this.offsets[slot]; i < this.offsets[slot + 1]; i++) {\n out.push(this.visit(i));\n }\n return out;\n }\n get(segment) {\n const slot = this.slot(segment);\n return slot < 0 ? void 0 : this.visitsAt(slot);\n }\n has(segment) {\n return this.slots.has(segment);\n }\n keys() {\n return this.segments[Symbol.iterator]();\n }\n *values() {\n for (let s = 0; s < this.segments.length; s++) {\n yield this.visitsAt(s);\n }\n }\n *entries() {\n for (let s = 0; s < this.segments.length; s++) {\n yield [this.segments[s], this.visitsAt(s)];\n }\n }\n [Symbol.iterator]() {\n return this.entries();\n }\n};\nvar Column = class {\n constructor(data) {\n this.data = data;\n this.length = 0;\n }\n push(value) {\n if (this.length === this.data.length) {\n const grown = new this.data.constructor(\n this.data.length * 2\n );\n grown.set(this.data);\n this.data = grown;\n }\n this.data[this.length++] = value;\n }\n};\nvar PathVisitsBuilder = class {\n constructor() {\n this.segments = [];\n this.slots = /* @__PURE__ */ new Map();\n this.paths = [];\n this.samples = [];\n this.pathIndex = /* @__PURE__ */ new Map();\n this.slot = new Column(new Int32Array(1024));\n this.path = new Column(new Int32Array(1024));\n this.start = new Column(new Float64Array(1024));\n this.reversed = new Column(new Uint8Array(1024));\n }\n // a segment's place in iteration order, though it has no visits yet\n declare(segment) {\n let s = this.slots.get(segment);\n if (s === void 0) {\n s = this.segments.length;\n this.slots.set(segment, s);\n this.segments.push(segment);\n }\n return s;\n }\n // a path's index, so a caller adding many of its visits names it once\n pathOf(path, sample) {\n let p = this.pathIndex.get(path);\n if (p === void 0) {\n p = this.paths.length;\n this.pathIndex.set(path, p);\n this.paths.push(path);\n this.samples.push(sample);\n }\n return p;\n }\n add(segment, path, sample, start, reversed) {\n this.addAt(\n this.declare(segment),\n this.pathOf(path, sample),\n start,\n reversed\n );\n }\n addAt(slot, path, start, reversed) {\n this.slot.push(slot);\n this.path.push(path);\n this.start.push(start);\n this.reversed.push(reversed ? 1 : 0);\n }\n build() {\n const n = this.slot.length;\n const segments = this.segments.length;\n const offsets = new Int32Array(segments + 1);\n const slot = this.slot.data;\n for (let i = 0; i < n; i++) {\n offsets[slot[i] + 1]++;\n }\n for (let s = 0; s < segments; s++) {\n offsets[s + 1] += offsets[s];\n }\n const fill = offsets.slice(0, segments);\n const path = new Int32Array(n);\n const start = new Float64Array(n);\n const reversed = new Uint8Array(n);\n for (let i = 0; i < n; i++) {\n const at = fill[slot[i]]++;\n path[at] = this.path.data[i];\n start[at] = this.start.data[i];\n reversed[at] = this.reversed.data[i];\n }\n return new PathVisits({\n segments: this.segments,\n offsets,\n path,\n start,\n reversed,\n paths: this.paths,\n samples: this.samples\n });\n }\n};\n\nexport {\n PathVisits,\n Column,\n PathVisitsBuilder\n};\n", "import {\n PathVisitsBuilder\n} from \"./chunk-BEUTROKU.js\";\nimport {\n groupBy\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n REFERENCE_RANK\n} from \"./chunk-RJWPJCIB.js\";\nimport {\n panSNSample\n} from \"./chunk-2JL2JVZ2.js\";\n\n// src/pathAnchoring.ts\nvar RANGE_SUFFIX = /:(\\d+)-\\d+$/;\nvar VG_FRAGMENT = /^([^#]*#[^#]*#[^#[]*)#(\\d+)(?:\\[(\\d+)-\\d+\\])?$/;\nvar VG_SUBRANGE = /\\[(\\d+)-\\d+\\]$/;\nfunction pathOrigin(pathName) {\n const fragment = VG_FRAGMENT.exec(pathName);\n if (fragment) {\n return { name: fragment[1], start: +fragment[2] + +(fragment[3] ?? 0) };\n }\n const match = RANGE_SUFFIX.exec(pathName) ?? VG_SUBRANGE.exec(pathName);\n return match ? { name: pathName.slice(0, match.index), start: +match[1] } : { name: pathName, start: 0 };\n}\nfunction surveyPaths(paths, lengthOf) {\n const anchorPaths = [];\n const visits = new PathVisitsBuilder();\n for (const path of paths) {\n const sample = panSNSample(path.name);\n const p = visits.pathOf(path.name, sample);\n let pos = path.start;\n for (const step of path.steps) {\n visits.addAt(visits.declare(step.id), p, pos, step.strand === \"-\");\n pos += lengthOf(step.id);\n }\n anchorPaths.push({\n name: path.name,\n sample,\n start: path.start,\n length: pos - path.start\n });\n }\n return { anchorPaths, pathVisits: visits.build() };\n}\nfunction chooseReferencePath(anchorPaths, preferred) {\n const named = anchorPaths.find(\n (p) => p.sample === preferred || p.name === preferred\n );\n return named ?? anchorPaths[0];\n}\nvar OFF_REFERENCE_RANK = 1;\nfunction anchorNode(node, visits, reference, samplesOf) {\n const slot = visits.slot(node.name);\n if (slot < 0 || visits.offsets[slot] === visits.offsets[slot + 1]) {\n return node;\n }\n const own = visits.firstBy(slot, reference);\n const anchor = own >= 0 ? own : visits.firstByName(slot);\n return {\n ...node,\n stable: {\n refName: visits.paths[visits.path[anchor]],\n start: visits.start[anchor],\n rank: own >= 0 ? REFERENCE_RANK : OFF_REFERENCE_RANK,\n strand: visits.strand(anchor)\n },\n samples: samplesOf(slot)\n };\n}\nfunction sampleSorter(visits) {\n const sorted = [...new Set(visits.samples)].sort();\n const rank = new Map(sorted.map((sample, i) => [sample, i]));\n const pathRank = Int32Array.from(visits.samples, (s) => rank.get(s));\n const seen = new Uint8Array(sorted.length);\n const ranks = new Int32Array(sorted.length);\n return (slot) => {\n let n = 0;\n for (let i = visits.offsets[slot]; i < visits.offsets[slot + 1]; i++) {\n const r = pathRank[visits.path[i]];\n if (seen[r] === 0) {\n seen[r] = 1;\n ranks[n++] = r;\n }\n }\n let out;\n if (n === sorted.length) {\n out = sorted;\n seen.fill(0);\n } else if (n * 8 < sorted.length) {\n const found = ranks.subarray(0, n);\n found.forEach((r) => seen[r] = 0);\n out = Array.from(found.sort(), (r) => sorted[r]);\n } else {\n out = [];\n for (let r = 0; r < sorted.length; r++) {\n if (seen[r] === 1) {\n seen[r] = 0;\n out.push(sorted[r]);\n }\n }\n }\n return out;\n };\n}\nfunction anchorFromPaths(graph, preferred) {\n const { anchorPaths, pathVisits } = graph;\n const reference = anchorPaths && pathVisits ? chooseReferencePath(anchorPaths, preferred) : void 0;\n if (!reference || !anchorPaths || !pathVisits) {\n return graph;\n }\n const samplesOf = sampleSorter(pathVisits);\n const referenceIndex = pathVisits.pathIndex(reference.name);\n return {\n ...graph,\n nodes: graph.nodes.map(\n (node) => anchorNode(node, pathVisits, referenceIndex, samplesOf)\n ),\n anchoredBy: \"paths\",\n referencePath: reference.name\n };\n}\nfunction anchorGraph(graph, preferred) {\n if (graph.anchoredBy !== \"tags\") {\n return anchorFromPaths(graph, preferred);\n }\n const referencePath = taggedReferencePath(graph);\n return referencePath ? { ...graph, referencePath } : graph;\n}\nfunction taggedReferencePath(graph) {\n const refName = graph.nodes.find((n) => n.stable?.rank === 0)?.stable?.refName;\n return refName !== void 0 && graph.anchorPaths?.some((p) => p.name === refName) ? refName : void 0;\n}\nfunction trimOrigins(graph, kept) {\n if (!graph.anchorPaths) {\n return void 0;\n }\n const lengthOf = new Map(graph.nodes.map((n) => [n.id, n.length]));\n const bp = (ids, end = ids.length) => {\n let sum = 0;\n for (let i = 0; i < end; i++) {\n sum += lengthOf.get(ids[i]) ?? 0;\n }\n return sum;\n };\n const byOrigin = groupBy(graph.paths ?? [], (p) => pathOrigin(p.name).name);\n return graph.anchorPaths.map((o) => {\n const pieces = byOrigin.get(o.name);\n const path = pieces?.length === 1 ? pieces[0] : void 0;\n const stretch = path && kept.get(path.name);\n return path && stretch ? {\n ...o,\n start: o.start + bp(path.nodeIds, stretch.first),\n length: bp(stretch.nodeIds)\n } : o;\n });\n}\nfunction referenceVisitStarts(graph) {\n const { pathVisits } = graph;\n const cache = /* @__PURE__ */ new Map();\n return (node) => {\n let starts = cache.get(node.id);\n if (!starts) {\n starts = [];\n const slot = pathVisits ? pathVisits.slot(node.name) : -1;\n const p = slot >= 0 ? pathVisits.pathIndex(node.stable.refName) : -1;\n if (p >= 0) {\n for (let i = pathVisits.offsets[slot]; i < pathVisits.offsets[slot + 1]; i++) {\n if (pathVisits.path[i] === p) {\n starts.push(pathVisits.start[i]);\n }\n }\n }\n if (starts.length < 2) {\n starts = [node.stable.start];\n }\n cache.set(node.id, starts);\n }\n return starts;\n };\n}\n\nexport {\n pathOrigin,\n surveyPaths,\n chooseReferencePath,\n anchorFromPaths,\n anchorGraph,\n trimOrigins,\n referenceVisitStarts\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["pushTo", "map", "key", "value", "list", "addTo", "set", "groupBy", "items", "keyOf", "groups", "item", "partitionPoint", "n", "pred", "lo", "hi", "mid", "REFERENCE_RANK", "isAnchored", "node", "isBackbone", "isOffReference", "backboneNodes", "graph", "overlapsWindow", "window", "backbonePositions", "backbone", "positions", "firstNodeAtOrAfter", "nodes", "bp", "partitionPoint", "i", "backboneSpan", "min", "max", "referenceSpan", "region", "PathVisits", "columns", "i", "entries", "builder", "PathVisitsBuilder", "segment", "visits", "v", "path", "slot", "p", "best", "a", "b", "cursor", "key", "end", "at", "keepPath", "keepSegment", "kept", "s", "out", "Column", "data", "value", "grown", "sample", "start", "reversed", "n", "segments", "offsets", "fill", "RANGE_SUFFIX", "VG_FRAGMENT", "VG_SUBRANGE", "pathOrigin", "pathName", "fragment", "match", "surveyPaths", "paths", "lengthOf", "anchorPaths", "visits", "PathVisitsBuilder", "path", "sample", "panSNSample", "p", "pos", "step", "chooseReferencePath", "preferred", "OFF_REFERENCE_RANK", "anchorNode", "node", "reference", "samplesOf", "slot", "own", "anchor", "REFERENCE_RANK", "sampleSorter", "sorted", "rank", "i", "pathRank", "s", "seen", "ranks", "n", "r", "out", "found", "anchorFromPaths", "graph", "pathVisits", "referenceIndex", "anchorGraph", "referencePath", "taggedReferencePath", "refName", "trimOrigins", "kept", "bp", "ids", "end", "sum", "byOrigin", "groupBy", "o", "pieces", "stretch", "referenceVisitStarts", "cache", "starts"]
7
+ }
@@ -1,4 +1,4 @@
1
- import{Ca as He,Da as $e,Ea as Ke,Eb as Je,Fa as Xe,Gb as G,Hb as be,Ia as Ue,Ib as fe,Ma as Fe,Mb as Ze,Na as ie,Ob as Qe,Qa as Ye,Rb as he,Ta as ze,Ua as le,Vb as et,Ya as ce,_b as tt,a as Se,b as X,ca as Ae,cb as Ve,ec as nt,f as Q,g as ee,gc as rt,ib as qe,ka as S,kb as pe,la as ae,nb as je,ra as Ie,sa as Be,ta as We,ua as se,wa as Ge,xa as De,yb as ue,zb as de}from"./chunk-ZGTG74GE.js";import{D as oe,f as Ee,m as I,p as re,q as Te,r as B}from"./chunk-XWCLYB5C.js";import{E as ne,T as Oe,U as Ne,Z as ve,n as E,p as F,q as te,y as _e}from"./chunk-2V75YPTT.js";import{b as O,c as W}from"./chunk-CJAV55QB.js";import{c as Z}from"./chunk-FY7X6253.js";import{e as K}from"./chunk-3WG3GF2A.js";import{b as Pe,d as M,e as Le,f as Me,g as U,h as Ce}from"./chunk-NIEZKWQV.js";import{a as T,b as u,c as k,d as m}from"./chunk-JMBDTNUR.js";var Lt="data-pans-with-drawing";function ot(e,t){return{position:"absolute",left:0,top:0,pointerEvents:"none",overflow:t,zIndex:e}}var C=m(function({model:t,zIndex:n,overflow:o="hidden",testId:r,pansWithDrawing:a,children:l}){return u("svg",{style:{...ot(n,o),userSelect:a?"none":void 0},width:t.paneWidth,height:t.canvasHeight,"data-testid":r,...a?{[Lt]:""}:{},children:l})}),at=m(function({model:t,children:n}){let{scaleX:o,scaleY:r,translateX:a,translateY:l}=t;return u("g",{transform:`translate(${a} ${l}) scale(${o} ${r})`,children:n})});function _({model:e,zIndex:t,shown:n=!0,testId:o,paint:r}){let a=Ce(null);return Le(()=>{if(n)return Se(()=>{let l=a.current,i=l?.getContext("2d");if(l&&i){let d=e.paneWidth,c=e.canvasHeight;Ae(rt());let p=Je(l,d,c);i.setTransform(p,0,0,p,0,0),i.clearRect(0,0,d,c),r(i,p)}})},[e,n,r]),u("canvas",{ref:a,"data-testid":n?o:void 0,style:{...ot(t),display:n?"block":"none"}})}var Mt=m(function({model:t}){let{bubbleHalos:n,hoveredBubble:o}=t;if(n.length===0)return null;let r=t.contigThickness*Ze;return u(C,{model:t,zIndex:2,testId:"graph-bubble-halos",children:u(at,{model:t,children:n.filter(a=>!a.whole&&(!a.tick||o&&O(a.bubble,o))).map(a=>u("path",{d:a.path,fill:"none",stroke:S[a.kind],strokeOpacity:o&&O(a.bubble,o)?.45:t.bubbleFaded(a)?.06:.22,strokeWidth:r,strokeLinecap:"round",strokeLinejoin:"round",vectorEffect:"non-scaling-stroke"},W(a.bubble)))})})}),In=Mt;var st=["#d4735e","#d8a94a","#c98aa4"],Ct="#e6e6e6",_t="#555",Et="bold 11px sans-serif";var ge=e=>st[e]??Ct;function Y(e){let t=String.fromCharCode(65+e%26);return e<26?t:Y(Math.floor(e/26)-1)+t}var z=st.length;function it(e,t,n){e.font=Et,e.textAlign="center",e.textBaseline="middle";for(let{row:o,start:r,bp:a,block:l}of t){let i=n.x(r),d=n.x(r+a)-i,c=n.rowCentre(o)-n.barPx/2;e.fillStyle=ge(l),e.fillRect(i,c,d,n.barPx),e.strokeStyle=_t,e.lineWidth=1,e.strokeRect(i+.5,c+.5,d-1,n.barPx-1),d>=12&&n.barPx>=9&&(e.fillStyle="#111",e.fillText(Y(l),i+d/2,n.rowCentre(o)))}}var R=18,me=32,pt="rgba(160, 160, 160, 0.45)",Nt="#18181c",vt=6,ut=7,Tt="#b8b8c0",V=Be-4,At="rgba(119, 119, 119, 0.85)",It=15,lt=10;function j(e){return e.kind==="fill"?e.width??R:R}var ke=e=>e.length>1?3:4;function D(e){switch(e.kind){case"fill":return e.height??8;case"bands":return ke(e.bands)*e.bands.length;case"line":return 3;case"halo":case"overhang":return 10;case"outline":case"tick":return e.height;case"glyph":return 15;case"bracket":return 7;case"blank":return 0}}function Nr(e){return e.reduce((t,n)=>n.swatch?Math.max(t,j(n.swatch)):t,0)}function vr(e){return e.reduce((t,n)=>n.swatch?Math.max(t,Math.ceil(D(n.swatch))+3):t,It)}var y=e=>[{offset:0,color:e}];function q(e,t,n){return{key:e,label:n,swatch:{kind:"fill",stops:y(t),width:lt,height:lt,edged:!0}}}function ct(e){return e.flatMap((t,n)=>[{offset:n/e.length,color:t},{offset:(n+1)/e.length,color:t}])}function Bt(e){let t=e.openBubble;if(!t)return[];let n=e.bubbleHalos.find(o=>O(o.bubble,t));return[{key:"open",label:`open: ${n?.label??"bubble"}`,swatch:n?{kind:"halo",color:S[n.kind]}:{kind:"blank"},closesBubble:!0}]}function Wt(e){let t=e.walkLift?void 0:e.referenceRampDomain;if(!t)return[];let n=Math.round(t.start),o=Math.round(t.end);return[{key:"ramp",label:`position on ${e.graph?Z(e.graph):"reference"}`,swatch:{kind:"fill",stops:I,width:me},under:`${n.toLocaleString("en-US")}-${o.toLocaleString("en-US")} (${ne(o-n)})`},...e.referenceRampDrawsOffReference?[q("off",B,"off the reference")]:[]]}function Gt(e){let t=e.walkLift;if(t)return t.walks.map(r=>oe(r.encoding));if(e.effectiveColorScheme==="reference-position")return[I];let n=e.referenceStripBlocks.map(r=>r.colors[0]).filter((r,a,l)=>r!==l[a-1]),o=Math.min(vt,n.length);return[o===0?y(re):Array.from({length:o},(r,a)=>({offset:o>1?a/(o-1):0,color:n[o>1?Math.round(a*(n.length-1)/(o-1)):0]}))]}function Dt(e){if(!e.referenceStripShown)return[];let t=(e.walkLift?.walks.length??0)>1;return[{key:"strip",label:`reference${t?", a row per walk":""}`,swatch:{kind:"bands",bands:Gt(e)}},...e.referenceStripFaded?[q("strip-faded",re,e.walkLift?`reference not on ${t?"that row's walk":e.liftedWalksLabel}`:"reference outside the open bubble")]:[],...e.referenceStripOverhangs?[{key:"overhang",label:"graph runs past this edge",swatch:{kind:"overhang"}}]:[]]}function Ht(e){let t=new Map;for(let n of e.bubbleHalos)if(!n.whole){let o=S[n.kind],r=t.get(o)??new Set;r.add(ae[n.kind]),t.set(o,r)}return[...t].map(([n,o])=>{let r=[...o].join(" or ");return{key:`halo-${n}`,label:r===ae.superbubble?r:`${r} bubble`,swatch:{kind:"halo",color:n}}})}function dt(e){let{graph:t}=e;return t&&e.deletions.length>0?[{key:"deletion",label:_e(Z(t)),swatch:{kind:"line",color:e.walkLift?pt:Nt,dashed:!0}}]:[]}function we(e,t,n,o){return{key:e,label:t,swatch:{kind:"fill",stops:y(o),width:me,height:n}}}var $t=e=>e>=10?Math.round(e):Math.round(e*10)/10;function Kt(e){let{graph:t,contigThickness:n,depthRange:o}=e;if(!t||!e.drawsNodes||e.walkRowBars)return[];if(e.nodeWidth==="frequency"){let c=t.nodes.some(p=>p.frequency!==void 0);return Oe(n).map(({label:p,widthPx:b})=>we(`width-${p}`,c?`AF ${p}`:`${p} of haplotypes`,b,B))}if(e.nodeWidth!=="depth"||!o||o.min===o.max)return[];let r=t.paths?.length??0,a=r>0,l=[...new Set([o.max,o.mean,o.min].map(a?Math.round:$t))],i=l[0]>r,d=c=>i?`${c.toLocaleString("en-US")} walk pass${c===1?"":"es"}`:`${c.toLocaleString("en-US")} walk${c===1?"":"s"}`;return l.map(c=>we(`width-${c}`,a?d(c):`depth ${c.toLocaleString("en-US")}`,Ne({depth:c},n,"depth",o.mean),B))}function Xt(e){let t=e.busiestLink;return!e.drawsNodes||e.walkRowBars||e.linkWidth!=="walks"||t===0?[]:(t>1?[t,1]:[1]).map(o=>we(`link-width-${o}`,`${o.toLocaleString("en-US")} walk${o===1?"":"s"}`,e.connectorThickness*ve(o,t,"walks"),At))}function Ut(e){return e.genePins.some(t=>t.exonsByNode.length>0)?[{key:"exon",label:"exon",swatch:{kind:"outline",color:G,stroke:2,radius:5,height:8}}]:[]}function Ft(e){let t=e.foldNote;return t?[{key:"fold",label:t}]:[]}function Yt(e){return e.pathLegend.map(({name:t,label:n,color:o})=>({key:`path-${t}`,label:n,swatch:{kind:"line",color:o}}))}function N(e,t,n){return{key:e,label:n,swatch:{kind:"fill",stops:t,height:ut,square:!0}}}function zt(e){let{roles:t,haplotypeTube:n,bundled:o,values:r,logWidths:a,foldBp:l,forwardReads:i,reverseReads:d,substitution:c,insertion:p,deletion:b}=e.tubeMapKeys,h=e.readsShown,s=[];if(r){s.push(N("value-reference",y(pe),"reference"));for(let{value:f,color:g}of r)s.push(N(`value-${f}`,y(g),f))}return t&&s.push(N("ref",y(pe),"reference"),N("hap",y(n),o?"shared route, \xD7n haplotypes":"haplotype")),i&&s.push(N("fwd",ct(Q),"read on the forward strand")),d&&s.push(N("rev",ct(ee),"read on the reverse strand")),h&&h.shown<h.total&&s.push({key:"sampled",label:`${h.shown.toLocaleString("en-US")} of ${h.total.toLocaleString("en-US")} reads shown`,swatch:{kind:"blank"}}),c&&s.push({key:"sub",label:"read mismatch",swatch:{kind:"glyph",char:"A"}}),p&&s.push({key:"ins",label:"read insertion",swatch:{kind:"glyph",char:"*"}}),b&&s.push(N("del",y("grey"),"read deletion")),l!==void 0&&s.push({key:"tube-fold",label:`haplotype variant < ${ne(l)}`,swatch:{kind:"tick",color:ze(),height:ut,backing:Tt}}),a&&s.push({key:"log",label:"width grows with log of length",swatch:{kind:"bracket"}}),s}function Vt(e){return e.kind==="gene"?{kind:"outline",color:Ie,stroke:1.5,radius:0,height:V}:{kind:"fill",stops:e.kind==="bar"&&e.ramp?I:y(e.fill),height:e.kind==="gap"?e.px:V}}function qt(e){let t=new Set(e.sharedBlocks?.map(o=>o.block)),n=o=>({kind:"fill",stops:y(ge(o)),height:V});return[...[...t].filter(o=>o<z).sort((o,r)=>o-r).map(o=>({key:`block-${o}`,label:`${Y(o)}: off the reference, walked by several rows`,swatch:n(o)})),...[...t].some(o=>o>=z)?[{key:"block-more",label:"more shared blocks",swatch:n(z)}]:[]]}function jt(e){let t=e.walkRowBars;if(!t)return[];let n=[t.reference,...t.rows].flatMap(r=>r.call??[]),o=(r,a,l)=>({key:r,label:l,swatch:{kind:"tick",color:a,height:V}});return[...He(t,{ramp:e.referenceRampDomain,genes:e.walkRowGeneKey,annotation:e.walkRowAnnotation}).map(r=>({key:`rows-${r.label}`,label:r.label,swatch:r.note?void 0:Vt(r.swatch)})),...qt(e),...n.some(r=>r.spanningReads!==0)?[o("call",$e,"allele length called for this walk")]:[],...n.some(r=>r.spanningReads===0)?[o("unbacked",Ke,"called with no read spanning it")]:[],...n.some(r=>r.agrees===!1)?[o("disagrees",Xe,`walk and call over ${Math.round(.1*100)}% apart`)]:[]]}function Jt(e,t){let n=et(t,e.walkReference);return{key:`walk-${t.name}`,strong:e.walkLabel(t.name),label:n.delta+n.gaps+n.reversed,swatch:{kind:"fill",stops:oe(t.encoding),width:n.shades?me:R},under:n.scale,title:n.hover,walk:t}}function bt(e,t){return[...e.liftPaintsOffReference?[q("lift-off",B,"off the reference")]:[],q("faded",pt,t)]}function Zt(e){let t=e.walkLift;if(!t||e.facetPanels)return[];let n=t.walks.map(r=>Jt(e,r)),o=e.graph?he(e.graph,t,e.liftedWalksLabel):`not on ${e.liftedWalksLabel}`;return[...n,...bt(e,o)]}function Tr(e){let{graph:t,facetPanels:n}=e;if(!t||!n)return[];let o=new Set(n.map(r=>he(t,r,"the panel's walk")));return[...bt(e,o.size===1?[...o][0]:"not on the panel's walk"),...dt(e)]}function Ar(e){let t=[{testid:"graph-open-bubble-legend",rows:Bt(e)},{testid:"graph-ramp-legend",rows:Wt(e),group:"Color"},{testid:"graph-walk-readout",rows:Zt(e),group:"Walks"},{testid:"graph-width-legend",rows:Kt(e),group:"Node thickness"},{testid:"graph-link-width-legend",rows:Xt(e),group:"Link thickness"},{testid:"graph-halo-legend",rows:Ht(e),group:"Marks"},{testid:"graph-deletion-legend",rows:dt(e),group:"Marks"},{testid:"graph-gene-legend",rows:Ut(e),group:"Marks"},{testid:"graph-path-legend",rows:Yt(e),group:"Paths"},{testid:"graph-tube-map-legend",rows:zt(e),group:"Tube map"},{testid:"graph-walk-rows-legend",rows:jt(e),group:"Walk rows"},{testid:"graph-reference-strip-legend",rows:Dt(e),group:"Top strip"},{testid:"graph-fold-legend",rows:Ft(e)}].filter(r=>r.rows.length>0);if(new Set(t.flatMap(r=>r.group??[])).size<2)return t;let o=new Set;return t.map((r,a)=>{let{group:l}=r;return l?o.has(l)?r:(o.add(l),{...r,heading:l}):a===0?r:{...r,spaced:!0}})}function Qt(e){return e==="class"?"className":/^(data|aria)-/.test(e)?e:e.replace(/-([a-z])/g,(t,n)=>n.toUpperCase())}function ft(e,t){if(typeof e=="string")return e;let n={key:t};for(let[o,r]of Object.entries(e.attrs))r!==void 0&&(n[Qt(o)]=r);return Pe(e.tag,n,e.children.map(ft))}function A(){return Me().replaceAll(/[^\w-]/g,"")}function H({el:e}){return ft(e,0)}var en="rgba(0, 0, 0, 0.28)";function ht({id:e,x:t,y:n,stops:o,width:r,height:a,square:l,edged:i}){let d=i?.5:0,c=p=>u("rect",{x:t+d,y:n+d,width:r-d*2,height:a-d*2,rx:l?0:2,fill:p,stroke:i?en:void 0});return o.length>1?k(T,{children:[u("defs",{children:u("linearGradient",{id:e,children:o.map((p,b)=>u("stop",{offset:p.offset,stopColor:p.color},b))})}),c(`url(#${e})`)]}):c(o[0].color)}function tn({swatch:e,x:t,id:n}){switch(e.kind){case"fill":{let r=D(e);return u(ht,{id:n,x:t,y:-5-r/2,stops:e.stops,width:j(e),height:r,square:e.square,edged:e.edged})}case"bands":{let r=ke(e.bands),a=-5-D(e)/2;return u(T,{children:e.bands.map((l,i)=>u(ht,{id:`${n}-${i}`,x:t,y:a+i*r,stops:l,width:R,height:r,square:!0},i))})}case"line":return e.dashed?u("line",{x1:t+1,x2:t+R,y1:-5,y2:-5,stroke:e.color,strokeWidth:3,strokeDasharray:"4 3"}):u("rect",{x:t,y:-5-1.5,width:R,height:3,rx:2,fill:e.color});case"halo":return u("line",{x1:t+5,x2:t+13,y1:-5,y2:-5,stroke:e.color,strokeOpacity:.35,strokeWidth:8,strokeLinecap:"round"});case"outline":{let r=e.stroke/2;return u("rect",{x:t+r,y:-5-e.height/2+r,width:R-e.stroke,height:e.height-e.stroke,rx:Math.max(0,e.radius-r),fill:"none",stroke:e.color,strokeWidth:e.stroke})}case"overhang":return u("path",{transform:`translate(${t} -10)`,d:"M0,5 L8,0 L8,10 Z M18,5 L10,0 L10,10 Z",fill:"#18181c"});case"glyph":return u("text",{x:t+R/2,y:-1,textAnchor:"middle",fontFamily:"monospace",fontSize:12,fill:"currentColor",children:e.char});case"tick":{let r=-5-e.height/2;return k(T,{children:[e.backing?u("rect",{x:t,y:r,width:R,height:e.height,fill:e.backing}):null,u("rect",{x:t+R/2-1,y:r,width:2,height:e.height,fill:e.color})]})}case"bracket":return u("path",{transform:`translate(${t} ${-5-3.5})`,d:`M0.5,6 V1.5 H5.5 V6 M8.5,6 V1.5 H${R-.5} V6`,fill:"none",stroke:Fe()});case"blank":return null}}function $r({swatch:e}){let t=A(),n=D(e);return u("svg",{width:j(e),height:n,overflow:"visible",style:{flex:"none"},children:u("g",{transform:`translate(0 ${n/2+5})`,children:u(tn,{swatch:e,x:0,id:t})})})}var Ur={background:"#fff",padding:"3px 6px",fontSize:11,lineHeight:"15px",whiteSpace:"nowrap"},Fr={display:"flex",alignItems:"center",gap:5},Yr={color:"#666"},nn="#6b7479",zr=4,Vr={color:nn,fontSize:9.5,fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase"};var rn=m(function({model:t}){let n=`exon-outline-${A()}`,o=U(()=>X(()=>{let{genePins:b,walkLift:h}=t,s=h?void 0:t.openBubbleFocus,f=s?b.map(g=>({...g,exonsByNode:g.exonsByNode.filter(w=>s.nodeIds.has(w.nodeId))})):b;return be(f,t.nodeInk.halfWidthPx,h)}),[t]),{scaleX:r,scaleY:a,translateX:l,translateY:i,paneWidth:d,canvasHeight:c}=t,p=fe(o.get(),{id:n,width:d,height:c,transform:`translate(${l} ${i}) scale(${r} ${a})`});return p?u(C,{model:t,zIndex:2,testId:"graph-gene-pins",children:u(H,{el:p})}):null}),no=rn;function gt(e,t,n){return{x:e-n/2,y:t-E-F+2,width:n,height:E+F*2-2}}function wt(e,t,n){let o=gt(e.x,e.y,e.w);return t>=o.x&&t<=o.x+o.width&&n>=o.y&&n<=o.y+o.height}function $({x:e,y:t,w:n,text:o,note:r,color:a,edge:l=a,italic:i,dimmed:d,title:c,testId:p,onClick:b,onHover:h}){return k("g",{style:{pointerEvents:b||h?"auto":"none",cursor:b?"pointer":void 0,opacity:d?.35:1},"data-testid":p,onClick:b,onMouseEnter:()=>{h?.(!0)},onMouseLeave:()=>{h?.(!1)},...b&&{role:"button",tabIndex:0,"aria-label":(c??o).replaceAll(`
1
+ import{Ca as He,Da as $e,Ea as Ke,Eb as Je,Fa as Xe,Gb as G,Hb as be,Ia as Ue,Ib as fe,Ma as Fe,Mb as Ze,Na as ie,Ob as Qe,Qa as Ye,Rb as he,Ta as ze,Ua as le,Vb as et,Ya as ce,_b as tt,a as Se,b as X,ca as Ae,cb as Ve,ec as nt,f as Q,g as ee,gc as rt,ib as qe,ka as S,kb as pe,la as ae,nb as je,ra as Ie,sa as Be,ta as We,ua as se,wa as Ge,xa as De,yb as ue,zb as de}from"./chunk-SL4JJJQJ.js";import{D as oe,f as Ee,m as I,p as re,q as Te,r as B}from"./chunk-W7IHIVSE.js";import{E as ne,T as Oe,U as Ne,Z as ve,n as E,p as F,q as te,y as _e}from"./chunk-CVHKXFVS.js";import{b as O,c as W}from"./chunk-BJHWGRMP.js";import{c as Z}from"./chunk-OGXVDZPS.js";import{e as K}from"./chunk-3WG3GF2A.js";import{b as Pe,d as M,e as Le,f as Me,g as U,h as Ce}from"./chunk-NIEZKWQV.js";import{a as T,b as u,c as k,d as m}from"./chunk-JMBDTNUR.js";var Lt="data-pans-with-drawing";function ot(e,t){return{position:"absolute",left:0,top:0,pointerEvents:"none",overflow:t,zIndex:e}}var C=m(function({model:t,zIndex:n,overflow:o="hidden",testId:r,pansWithDrawing:a,children:l}){return u("svg",{style:{...ot(n,o),userSelect:a?"none":void 0},width:t.paneWidth,height:t.canvasHeight,"data-testid":r,...a?{[Lt]:""}:{},children:l})}),at=m(function({model:t,children:n}){let{scaleX:o,scaleY:r,translateX:a,translateY:l}=t;return u("g",{transform:`translate(${a} ${l}) scale(${o} ${r})`,children:n})});function _({model:e,zIndex:t,shown:n=!0,testId:o,paint:r}){let a=Ce(null);return Le(()=>{if(n)return Se(()=>{let l=a.current,i=l?.getContext("2d");if(l&&i){let d=e.paneWidth,c=e.canvasHeight;Ae(rt());let p=Je(l,d,c);i.setTransform(p,0,0,p,0,0),i.clearRect(0,0,d,c),r(i,p)}})},[e,n,r]),u("canvas",{ref:a,"data-testid":n?o:void 0,style:{...ot(t),display:n?"block":"none"}})}var Mt=m(function({model:t}){let{bubbleHalos:n,hoveredBubble:o}=t;if(n.length===0)return null;let r=t.contigThickness*Ze;return u(C,{model:t,zIndex:2,testId:"graph-bubble-halos",children:u(at,{model:t,children:n.filter(a=>!a.whole&&(!a.tick||o&&O(a.bubble,o))).map(a=>u("path",{d:a.path,fill:"none",stroke:S[a.kind],strokeOpacity:o&&O(a.bubble,o)?.45:t.bubbleFaded(a)?.06:.22,strokeWidth:r,strokeLinecap:"round",strokeLinejoin:"round",vectorEffect:"non-scaling-stroke"},W(a.bubble)))})})}),In=Mt;var st=["#d4735e","#d8a94a","#c98aa4"],Ct="#e6e6e6",_t="#555",Et="bold 11px sans-serif";var ge=e=>st[e]??Ct;function Y(e){let t=String.fromCharCode(65+e%26);return e<26?t:Y(Math.floor(e/26)-1)+t}var z=st.length;function it(e,t,n){e.font=Et,e.textAlign="center",e.textBaseline="middle";for(let{row:o,start:r,bp:a,block:l}of t){let i=n.x(r),d=n.x(r+a)-i,c=n.rowCentre(o)-n.barPx/2;e.fillStyle=ge(l),e.fillRect(i,c,d,n.barPx),e.strokeStyle=_t,e.lineWidth=1,e.strokeRect(i+.5,c+.5,d-1,n.barPx-1),d>=12&&n.barPx>=9&&(e.fillStyle="#111",e.fillText(Y(l),i+d/2,n.rowCentre(o)))}}var R=18,me=32,pt="rgba(160, 160, 160, 0.45)",Nt="#18181c",vt=6,ut=7,Tt="#b8b8c0",V=Be-4,At="rgba(119, 119, 119, 0.85)",It=15,lt=10;function j(e){return e.kind==="fill"?e.width??R:R}var ke=e=>e.length>1?3:4;function D(e){switch(e.kind){case"fill":return e.height??8;case"bands":return ke(e.bands)*e.bands.length;case"line":return 3;case"halo":case"overhang":return 10;case"outline":case"tick":return e.height;case"glyph":return 15;case"bracket":return 7;case"blank":return 0}}function Nr(e){return e.reduce((t,n)=>n.swatch?Math.max(t,j(n.swatch)):t,0)}function vr(e){return e.reduce((t,n)=>n.swatch?Math.max(t,Math.ceil(D(n.swatch))+3):t,It)}var y=e=>[{offset:0,color:e}];function q(e,t,n){return{key:e,label:n,swatch:{kind:"fill",stops:y(t),width:lt,height:lt,edged:!0}}}function ct(e){return e.flatMap((t,n)=>[{offset:n/e.length,color:t},{offset:(n+1)/e.length,color:t}])}function Bt(e){let t=e.openBubble;if(!t)return[];let n=e.bubbleHalos.find(o=>O(o.bubble,t));return[{key:"open",label:`open: ${n?.label??"bubble"}`,swatch:n?{kind:"halo",color:S[n.kind]}:{kind:"blank"},closesBubble:!0}]}function Wt(e){let t=e.walkLift?void 0:e.referenceRampDomain;if(!t)return[];let n=Math.round(t.start),o=Math.round(t.end);return[{key:"ramp",label:`position on ${e.graph?Z(e.graph):"reference"}`,swatch:{kind:"fill",stops:I,width:me},under:`${n.toLocaleString("en-US")}-${o.toLocaleString("en-US")} (${ne(o-n)})`},...e.referenceRampDrawsOffReference?[q("off",B,"off the reference")]:[]]}function Gt(e){let t=e.walkLift;if(t)return t.walks.map(r=>oe(r.encoding));if(e.effectiveColorScheme==="reference-position")return[I];let n=e.referenceStripBlocks.map(r=>r.colors[0]).filter((r,a,l)=>r!==l[a-1]),o=Math.min(vt,n.length);return[o===0?y(re):Array.from({length:o},(r,a)=>({offset:o>1?a/(o-1):0,color:n[o>1?Math.round(a*(n.length-1)/(o-1)):0]}))]}function Dt(e){if(!e.referenceStripShown)return[];let t=(e.walkLift?.walks.length??0)>1;return[{key:"strip",label:`reference${t?", a row per walk":""}`,swatch:{kind:"bands",bands:Gt(e)}},...e.referenceStripFaded?[q("strip-faded",re,e.walkLift?`reference not on ${t?"that row's walk":e.liftedWalksLabel}`:"reference outside the open bubble")]:[],...e.referenceStripOverhangs?[{key:"overhang",label:"graph runs past this edge",swatch:{kind:"overhang"}}]:[]]}function Ht(e){let t=new Map;for(let n of e.bubbleHalos)if(!n.whole){let o=S[n.kind],r=t.get(o)??new Set;r.add(ae[n.kind]),t.set(o,r)}return[...t].map(([n,o])=>{let r=[...o].join(" or ");return{key:`halo-${n}`,label:r===ae.superbubble?r:`${r} bubble`,swatch:{kind:"halo",color:n}}})}function dt(e){let{graph:t}=e;return t&&e.deletions.length>0?[{key:"deletion",label:_e(Z(t)),swatch:{kind:"line",color:e.walkLift?pt:Nt,dashed:!0}}]:[]}function we(e,t,n,o){return{key:e,label:t,swatch:{kind:"fill",stops:y(o),width:me,height:n}}}var $t=e=>e>=10?Math.round(e):Math.round(e*10)/10;function Kt(e){let{graph:t,contigThickness:n,depthRange:o}=e;if(!t||!e.drawsNodes||e.walkRowBars)return[];if(e.nodeWidth==="frequency"){let c=t.nodes.some(p=>p.frequency!==void 0);return Oe(n).map(({label:p,widthPx:b})=>we(`width-${p}`,c?`AF ${p}`:`${p} of haplotypes`,b,B))}if(e.nodeWidth!=="depth"||!o||o.min===o.max)return[];let r=t.paths?.length??0,a=r>0,l=[...new Set([o.max,o.mean,o.min].map(a?Math.round:$t))],i=l[0]>r,d=c=>i?`${c.toLocaleString("en-US")} walk pass${c===1?"":"es"}`:`${c.toLocaleString("en-US")} walk${c===1?"":"s"}`;return l.map(c=>we(`width-${c}`,a?d(c):`depth ${c.toLocaleString("en-US")}`,Ne({depth:c},n,"depth",o.mean),B))}function Xt(e){let t=e.busiestLink;return!e.drawsNodes||e.walkRowBars||e.linkWidth!=="walks"||t===0?[]:(t>1?[t,1]:[1]).map(o=>we(`link-width-${o}`,`${o.toLocaleString("en-US")} walk${o===1?"":"s"}`,e.connectorThickness*ve(o,t,"walks"),At))}function Ut(e){return e.genePins.some(t=>t.exonsByNode.length>0)?[{key:"exon",label:"exon",swatch:{kind:"outline",color:G,stroke:2,radius:5,height:8}}]:[]}function Ft(e){let t=e.foldNote;return t?[{key:"fold",label:t}]:[]}function Yt(e){return e.pathLegend.map(({name:t,label:n,color:o})=>({key:`path-${t}`,label:n,swatch:{kind:"line",color:o}}))}function N(e,t,n){return{key:e,label:n,swatch:{kind:"fill",stops:t,height:ut,square:!0}}}function zt(e){let{roles:t,haplotypeTube:n,bundled:o,values:r,logWidths:a,foldBp:l,forwardReads:i,reverseReads:d,substitution:c,insertion:p,deletion:b}=e.tubeMapKeys,h=e.readsShown,s=[];if(r){s.push(N("value-reference",y(pe),"reference"));for(let{value:f,color:g}of r)s.push(N(`value-${f}`,y(g),f))}return t&&s.push(N("ref",y(pe),"reference"),N("hap",y(n),o?"shared route, \xD7n haplotypes":"haplotype")),i&&s.push(N("fwd",ct(Q),"read on the forward strand")),d&&s.push(N("rev",ct(ee),"read on the reverse strand")),h&&h.shown<h.total&&s.push({key:"sampled",label:`${h.shown.toLocaleString("en-US")} of ${h.total.toLocaleString("en-US")} reads shown`,swatch:{kind:"blank"}}),c&&s.push({key:"sub",label:"read mismatch",swatch:{kind:"glyph",char:"A"}}),p&&s.push({key:"ins",label:"read insertion",swatch:{kind:"glyph",char:"*"}}),b&&s.push(N("del",y("grey"),"read deletion")),l!==void 0&&s.push({key:"tube-fold",label:`haplotype variant < ${ne(l)}`,swatch:{kind:"tick",color:ze(),height:ut,backing:Tt}}),a&&s.push({key:"log",label:"width grows with log of length",swatch:{kind:"bracket"}}),s}function Vt(e){return e.kind==="gene"?{kind:"outline",color:Ie,stroke:1.5,radius:0,height:V}:{kind:"fill",stops:e.kind==="bar"&&e.ramp?I:y(e.fill),height:e.kind==="gap"?e.px:V}}function qt(e){let t=new Set(e.sharedBlocks?.map(o=>o.block)),n=o=>({kind:"fill",stops:y(ge(o)),height:V});return[...[...t].filter(o=>o<z).sort((o,r)=>o-r).map(o=>({key:`block-${o}`,label:`${Y(o)}: off the reference, walked by several rows`,swatch:n(o)})),...[...t].some(o=>o>=z)?[{key:"block-more",label:"more shared blocks",swatch:n(z)}]:[]]}function jt(e){let t=e.walkRowBars;if(!t)return[];let n=[t.reference,...t.rows].flatMap(r=>r.call??[]),o=(r,a,l)=>({key:r,label:l,swatch:{kind:"tick",color:a,height:V}});return[...He(t,{ramp:e.referenceRampDomain,genes:e.walkRowGeneKey,annotation:e.walkRowAnnotation}).map(r=>({key:`rows-${r.label}`,label:r.label,swatch:r.note?void 0:Vt(r.swatch)})),...qt(e),...n.some(r=>r.spanningReads!==0)?[o("call",$e,"allele length called for this walk")]:[],...n.some(r=>r.spanningReads===0)?[o("unbacked",Ke,"called with no read spanning it")]:[],...n.some(r=>r.agrees===!1)?[o("disagrees",Xe,`walk and call over ${Math.round(.1*100)}% apart`)]:[]]}function Jt(e,t){let n=et(t,e.walkReference);return{key:`walk-${t.name}`,strong:e.walkLabel(t.name),label:n.delta+n.gaps+n.reversed,swatch:{kind:"fill",stops:oe(t.encoding),width:n.shades?me:R},under:n.scale,title:n.hover,walk:t}}function bt(e,t){return[...e.liftPaintsOffReference?[q("lift-off",B,"off the reference")]:[],q("faded",pt,t)]}function Zt(e){let t=e.walkLift;if(!t||e.facetPanels)return[];let n=t.walks.map(r=>Jt(e,r)),o=e.graph?he(e.graph,t,e.liftedWalksLabel):`not on ${e.liftedWalksLabel}`;return[...n,...bt(e,o)]}function Tr(e){let{graph:t,facetPanels:n}=e;if(!t||!n)return[];let o=new Set(n.map(r=>he(t,r,"the panel's walk")));return[...bt(e,o.size===1?[...o][0]:"not on the panel's walk"),...dt(e)]}function Ar(e){let t=[{testid:"graph-open-bubble-legend",rows:Bt(e)},{testid:"graph-ramp-legend",rows:Wt(e),group:"Color"},{testid:"graph-walk-readout",rows:Zt(e),group:"Walks"},{testid:"graph-width-legend",rows:Kt(e),group:"Node thickness"},{testid:"graph-link-width-legend",rows:Xt(e),group:"Link thickness"},{testid:"graph-halo-legend",rows:Ht(e),group:"Marks"},{testid:"graph-deletion-legend",rows:dt(e),group:"Marks"},{testid:"graph-gene-legend",rows:Ut(e),group:"Marks"},{testid:"graph-path-legend",rows:Yt(e),group:"Paths"},{testid:"graph-tube-map-legend",rows:zt(e),group:"Tube map"},{testid:"graph-walk-rows-legend",rows:jt(e),group:"Walk rows"},{testid:"graph-reference-strip-legend",rows:Dt(e),group:"Top strip"},{testid:"graph-fold-legend",rows:Ft(e)}].filter(r=>r.rows.length>0);if(new Set(t.flatMap(r=>r.group??[])).size<2)return t;let o=new Set;return t.map((r,a)=>{let{group:l}=r;return l?o.has(l)?r:(o.add(l),{...r,heading:l}):a===0?r:{...r,spaced:!0}})}function Qt(e){return e==="class"?"className":/^(data|aria)-/.test(e)?e:e.replace(/-([a-z])/g,(t,n)=>n.toUpperCase())}function ft(e,t){if(typeof e=="string")return e;let n={key:t};for(let[o,r]of Object.entries(e.attrs))r!==void 0&&(n[Qt(o)]=r);return Pe(e.tag,n,e.children.map(ft))}function A(){return Me().replaceAll(/[^\w-]/g,"")}function H({el:e}){return ft(e,0)}var en="rgba(0, 0, 0, 0.28)";function ht({id:e,x:t,y:n,stops:o,width:r,height:a,square:l,edged:i}){let d=i?.5:0,c=p=>u("rect",{x:t+d,y:n+d,width:r-d*2,height:a-d*2,rx:l?0:2,fill:p,stroke:i?en:void 0});return o.length>1?k(T,{children:[u("defs",{children:u("linearGradient",{id:e,children:o.map((p,b)=>u("stop",{offset:p.offset,stopColor:p.color},b))})}),c(`url(#${e})`)]}):c(o[0].color)}function tn({swatch:e,x:t,id:n}){switch(e.kind){case"fill":{let r=D(e);return u(ht,{id:n,x:t,y:-5-r/2,stops:e.stops,width:j(e),height:r,square:e.square,edged:e.edged})}case"bands":{let r=ke(e.bands),a=-5-D(e)/2;return u(T,{children:e.bands.map((l,i)=>u(ht,{id:`${n}-${i}`,x:t,y:a+i*r,stops:l,width:R,height:r,square:!0},i))})}case"line":return e.dashed?u("line",{x1:t+1,x2:t+R,y1:-5,y2:-5,stroke:e.color,strokeWidth:3,strokeDasharray:"4 3"}):u("rect",{x:t,y:-5-1.5,width:R,height:3,rx:2,fill:e.color});case"halo":return u("line",{x1:t+5,x2:t+13,y1:-5,y2:-5,stroke:e.color,strokeOpacity:.35,strokeWidth:8,strokeLinecap:"round"});case"outline":{let r=e.stroke/2;return u("rect",{x:t+r,y:-5-e.height/2+r,width:R-e.stroke,height:e.height-e.stroke,rx:Math.max(0,e.radius-r),fill:"none",stroke:e.color,strokeWidth:e.stroke})}case"overhang":return u("path",{transform:`translate(${t} -10)`,d:"M0,5 L8,0 L8,10 Z M18,5 L10,0 L10,10 Z",fill:"#18181c"});case"glyph":return u("text",{x:t+R/2,y:-1,textAnchor:"middle",fontFamily:"monospace",fontSize:12,fill:"currentColor",children:e.char});case"tick":{let r=-5-e.height/2;return k(T,{children:[e.backing?u("rect",{x:t,y:r,width:R,height:e.height,fill:e.backing}):null,u("rect",{x:t+R/2-1,y:r,width:2,height:e.height,fill:e.color})]})}case"bracket":return u("path",{transform:`translate(${t} ${-5-3.5})`,d:`M0.5,6 V1.5 H5.5 V6 M8.5,6 V1.5 H${R-.5} V6`,fill:"none",stroke:Fe()});case"blank":return null}}function $r({swatch:e}){let t=A(),n=D(e);return u("svg",{width:j(e),height:n,overflow:"visible",style:{flex:"none"},children:u("g",{transform:`translate(0 ${n/2+5})`,children:u(tn,{swatch:e,x:0,id:t})})})}var Ur={background:"#fff",padding:"3px 6px",fontSize:11,lineHeight:"15px",whiteSpace:"nowrap"},Fr={display:"flex",alignItems:"center",gap:5},Yr={color:"#666"},nn="#6b7479",zr=4,Vr={color:nn,fontSize:9.5,fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase"};var rn=m(function({model:t}){let n=`exon-outline-${A()}`,o=U(()=>X(()=>{let{genePins:b,walkLift:h}=t,s=h?void 0:t.openBubbleFocus,f=s?b.map(g=>({...g,exonsByNode:g.exonsByNode.filter(w=>s.nodeIds.has(w.nodeId))})):b;return be(f,t.nodeInk.halfWidthPx,h)}),[t]),{scaleX:r,scaleY:a,translateX:l,translateY:i,paneWidth:d,canvasHeight:c}=t,p=fe(o.get(),{id:n,width:d,height:c,transform:`translate(${l} ${i}) scale(${r} ${a})`});return p?u(C,{model:t,zIndex:2,testId:"graph-gene-pins",children:u(H,{el:p})}):null}),no=rn;function gt(e,t,n){return{x:e-n/2,y:t-E-F+2,width:n,height:E+F*2-2}}function wt(e,t,n){let o=gt(e.x,e.y,e.w);return t>=o.x&&t<=o.x+o.width&&n>=o.y&&n<=o.y+o.height}function $({x:e,y:t,w:n,text:o,note:r,color:a,edge:l=a,italic:i,dimmed:d,title:c,testId:p,onClick:b,onHover:h}){return k("g",{style:{pointerEvents:b||h?"auto":"none",cursor:b?"pointer":void 0,opacity:d?.35:1},"data-testid":p,onClick:b,onMouseEnter:()=>{h?.(!0)},onMouseLeave:()=>{h?.(!1)},...b&&{role:"button",tabIndex:0,"aria-label":(c??o).replaceAll(`
2
2
  `,", "),onKeyDown:s=>{(s.key==="Enter"||s.key===" ")&&(s.preventDefault(),b())},onFocus:()=>{h?.(!0)},onBlur:()=>{h?.(!1)}},children:[c?u("title",{children:c}):null,u("rect",{...gt(e,t,n),rx:3,fill:"rgba(255,255,255,0.85)",stroke:l,strokeWidth:1}),k("text",{x:e,y:t,fontSize:E,fontFamily:"sans-serif",fontStyle:i?"italic":void 0,fontWeight:i?600:void 0,fill:a,textAnchor:"middle",children:[o,r?u("tspan",{fontStyle:"normal",fontWeight:"normal",children:r}):null]})]})}var mt="#1c1c22",Re=9,xe=3;function Po({genes:e},t,n){let o=e.find(l=>wt(l,t,n))?.item;if(!o)return;let{gene:r}=o,a=Qe(o);return{label:r.name,readout:`${r.refName}:${r.start.toLocaleString()}-${r.end.toLocaleString()}${a?`, ${a} in the cut`:""}`}}var on=m(function({model:t}){let{bubbles:n,genes:o,ticks:r}=t.overlayLabels;if(n.length+o.length+r.length===0)return null;let{scaleY:a,translateY:l,contigThickness:i,hoveredBubble:d}=t,c=d?r.find(s=>O(s.item.bubble,d)):void 0,p=s=>r[Number(s.getAttribute("data-tick"))],b=s=>t.bubbleFaded(s),h=s=>t.bubbleIsOpen(s.bubble);return k(C,{model:t,zIndex:3,testId:"graph-label-layer",pansWithDrawing:!0,children:[u("g",{"data-testid":"graph-bubble-ticks",onClick:s=>{let f=p(s.target);f&&t.toggleBubble(f.item.bubble)},onMouseOver:s=>{let f=p(s.target);f&&t.setHoveredBubble(f.item.bubble)},onMouseOut:()=>{K(t)&&t.setHoveredBubble(null)},onFocus:s=>{let f=p(s.target);f&&t.setHoveredBubble(f.item.bubble)},onBlur:()=>{K(t)&&t.setHoveredBubble(null)},onKeyDown:s=>{let f=p(s.target);f&&(s.key==="Enter"||s.key===" ")&&(s.preventDefault(),t.toggleBubble(f.item.bubble))},children:r.map(({item:s,x:f,y:g},w)=>u("rect",{"data-tick":w,role:"button",tabIndex:0,"aria-label":`${s.label}, ${h(s)?"close":"open"} bubble`,x:f-xe/2,y:g-Re,width:xe,height:Re,rx:xe/2,fill:S[s.kind],opacity:b(s)?.35:1,style:{pointerEvents:"all",cursor:"pointer"}},W(s.bubble)))}),o.map(({item:s,x:f,y:g,w,text:P})=>{let{gene:x}=s;return k("g",{children:[u("line",{x1:f,x2:f,y1:g-E-2,y2:s.at.y*a+l+i/2,stroke:mt,strokeWidth:.8,strokeOpacity:.6}),u($,{x:f,y:g,w,text:x.name,note:P.slice(x.name.length)||void 0,color:mt,edge:G,italic:!0,testId:"graph-gene-pin-label"})]},`${x.name}-${x.start}`)}),n.map(({item:s,x:f,y:g,w,text:P})=>u($,{x:f,y:g,w,text:P,color:S[s.kind],dimmed:b(s),title:`${s.label}
3
3
  ${s.bubble.segmentCount} segments${s.bubble.covering?"":h(s)?" \xB7 click to close":" \xB7 click to open"}`,testId:"graph-bubble-halo-label",onClick:s.bubble.covering?void 0:()=>{t.toggleBubble(s.bubble)},onHover:x=>{K(t)&&t.setHoveredBubble(x?s.bubble:null)}},W(s.bubble))),c?u($,{x:c.x,y:c.y-Re-4,w:te(c.item.label),text:c.item.label,color:S[c.item.kind],testId:"graph-bubble-tick-label"}):null]})}),Lo=on;function an(e,t,{lit:n,dpr:o}){let r=t.hostBpFrame;r&&nt(e,t.referenceStripBlocks,r,{width:t.paneWidth,lit:n,dpr:o})}var sn=m(function({model:t}){let n=M((o,r)=>{an(o,t,{lit:t.referenceStripLit,dpr:r})},[t]);return u(_,{model:t,zIndex:5,shown:t.referenceStripShown,testId:"graph-reference-strip",paint:n})}),vo=sn;var ln=.45;function cn(e,t,{highlightNode:n}){let o=t.tubeMapPicture,r=t.tubeMapFrame;if(!o||!r)return;let a=t.paneWidth,l=t.tubeMapPanelViews;if(l){pn(e,t,l,n);return}let i={...r,width:a,highlightNode:n,tubeColors:t.tubeMapTubeColors,nodeColors:t.tubeMapNodeColors};ce(e,o,i);let d=t.layoutResult?.tubeMap;d&&(ue(e,o,d.graph,i),de(e,d,i)),le(e,t.tubeMapDeviations,i),Ye(e,t.tubeMapConnectors,t.connectorZoneBottom,i);let{bounds:c}=o;tt(e,t.tubeMapGenes,i,r.y(c.minY)-2);let p=t.tubeMapRulerBoxes;p&&ie(e,p,i,r.y(c.maxY)+4,t.layoutResult?.referenceAxis)}function pn(e,t,n,o){let r=t.paneWidth;for(let i of n){if(i.bottom<0||i.titleTop>t.canvasHeight)continue;let d={...i.frame,width:r,highlightNode:o,tubeColors:i.tubeColors,nodeColors:i.nodeColors};ce(e,i.picture,d),ue(e,i.picture,i.panel.result.tubeMap.graph,d),de(e,i.panel.result.tubeMap,d),e.globalAlpha=ln,le(e,i.deviations,d),e.globalAlpha=1,e.strokeStyle="rgba(0,0,0,0.15)",e.lineWidth=1,e.beginPath(),e.moveTo(0,Math.round(i.titleTop)+.5),e.lineTo(r,Math.round(i.titleTop)+.5),e.stroke(),e.font=je,e.textAlign="left",e.textBaseline="top",e.fillStyle="rgba(0,0,0,0.85)",e.fillText(i.label,6,i.titleTop+4)}let a=n.at(-1),l=t.tubeMapPanelRulerBoxes;a&&l&&ie(e,l,{...a.frame,width:r},a.bottom+4,!0)}var un=m(function({model:t}){let n=M(o=>{cn(o,t,{highlightNode:t.selectedNode})},[t]);return u(_,{model:t,zIndex:1,shown:!!t.tubeMapPicture,testId:"graph-tube-map",paint:n})}),Uo=un;var v=JBrowseExports["@jbrowse/render-core/marks"],dn=e=>v!=null&&e in Object(v)?v[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/render-core/marks' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e});var kt=dn("spanMark");var zo=v&&v.__esModule?v.default:v;function xt(e){if(e.startsWith("#")){let r=Number.parseInt(e.slice(1),16);return[r>>16&255,r>>8&255,r&255]}let[t=0,n=0,o=0]=e.match(/[\d.]+/g).map(Number);return e.startsWith("hsl")?Te(t,n/100,o/100).map(r=>r*255):[t,n,o]}var yt=([e,t,n])=>Ee(Math.round(e),Math.round(t),Math.round(n),255),Rt=new Map;function bn(e){let t=Rt.get(e);return t===void 0&&(t=yt(xt(e)),Rt.set(e,t)),t}function fn(e,t,n){let o=e.start+e.bp,r=De(e,t);if("fill"in r)return[[e.start,o,bn(r.fill)]];let a=r.stops.map(xt),l=r.stops.map(p=>Number(/[\d.]+/.exec(p)[0])),i=Math.abs(l.at(-1)-l[0]),d=Math.max(1,Math.min(Math.ceil(e.bp*n),Math.ceil(i),e.bp)),c=[];for(let p=0;p<d;p++){let b=(p+.5)/d*(a.length-1),h=Math.min(Math.floor(b),a.length-2),s=a[h],f=a[h+1],g=b-h;c.push([Math.round(e.start+e.bp*p/d),Math.round(e.start+e.bp*(p+1)/d),yt([0,1,2].map(w=>s[w]+(f[w]-s[w])*g))])}return c}function ye(e){return{x:new Uint32Array(e),x2:new Uint32Array(e),row:new Uint32Array(e),color:new Uint32Array(e),count:0}}function J(e,t,n){return{x:e.x.subarray(t,n),x2:e.x2.subarray(t,n),row:e.row.subarray(t,n),color:e.color.subarray(t,n),count:n-t}}function St(e,t,n){let o=e.map(h=>Ue(h.runs,t).map(s=>({gap:s.gap,hairline:s.gap&&Ge(s.cause).px===se,pieces:fn(s,n,t)}))),r=0;for(let h of o)for(let s of h)r+=s.pieces.length;let a=ye(r),l=ye(r),i=ye(r),d=new Uint32Array(e.length+1),c=new Uint32Array(e.length+1),p=new Uint32Array(e.length+1),b=1;return o.forEach((h,s)=>{for(let f of h){let g=f.hairline?i:f.gap?l:a;for(let[w,P,x]of f.pieces){let L=g.count++;g.x[L]=w,g.x2[L]=P,g.row[L]=s,g.color[L]=x,b=Math.max(b,g.x2[L])}}d[s+1]=a.count,c[s+1]=l.count,p[s+1]=i.count}),{bars:J(a,0,a.count),gaps:J(l,0,l.count),hairlines:J(i,0,i.count),barRows:d,gapRows:c,hairlineRows:p,longest:b}}function Pt(e,t,n){let{longest:o}=t,r={start:0,end:o,screenStartPx:n.origin*n.scaleX+n.translateX,screenEndPx:(n.origin+o)*n.scaleX+n.translateX,reversed:!1,displayedRegionIndex:0},a={canvasWidth:n.width,canvasHeight:n.height},l=n.rowPx*n.scaleY;for(let{first:i,count:d,rowY:c}of n.blocks){let p=l/2-n.translateY-(c-i*n.rowPx)*n.scaleY,b=(c-n.rowPx/2)*n.scaleY+n.translateY;if(!(b>n.height||b+d*l<0))for(let[h,s,f]of[[t.bars,t.barRows,n.barPx],[t.gaps,t.gapRows,Math.min(We,n.barPx)],[t.hairlines,t.hairlineRows,Math.min(se,n.barPx)]])kt.paintBlock(e,J(h,s[i],s[i+d]),r,a,{rowHeight:l,rowProportion:f/l,minWidthPx:1,seamPx:0,scrollTop:p})}}function hn({model:e}){let t=U(()=>X(()=>{let o=e.walkRowBars;return o?St([o.reference,...o.rows],e.scaleX,e.referenceRampDomain):void 0}),[e]),n=M(o=>{let r=e.walkRowBars,a=e.walkRowPlacement,l=e.walkRowPitch,i=t.get();if(!r||!a||!l||!i)return;let d=e.walkRowGroups?.sections,c=d?.length?[{first:0,count:1,rowY:a.rowY(0)},...d.map(p=>({first:p.first,count:p.count,rowY:a.rowY(p.first)}))]:[{first:0,count:r.rows.length+1,rowY:a.rowY(0)}];Pt(o,i,{...e.screenTransform,width:e.paneWidth,height:e.canvasHeight,rowPx:l.rowPx,barPx:l.barPx,origin:r.origin,blocks:c})},[e,t]);return u(_,{model:e,zIndex:3,testId:"graph-walk-rows-spans",paint:n})}var gn="rgba(160, 196, 232, 0.55)",wn="rgba(160, 140, 220, 0.55)";function mn({model:e}){let t=M(n=>{let o=e.walkRowRibbons,r=e.walkRowBars,a=e.walkRowPlacement,l=e.walkRowPitch;if(!o||!r||!a||!l)return;let{scaleX:i,scaleY:d,translateX:c,translateY:p}=e.screenTransform,b=s=>(r.origin+s)*i+c,h=l.barPx/2;for(let{row:s,a0:f,a1:g,b0:w,b1:P}of o){let x=a.rowY(s)*d+p+h,L=a.rowY(s+1)*d+p-h;n.fillStyle=w>P?wn:gn,n.beginPath(),n.moveTo(b(f),x),n.lineTo(b(g),x),n.lineTo(b(P),L),n.lineTo(b(w),L),n.closePath(),n.fill()}},[e]);return u(_,{model:e,zIndex:2,testId:"graph-walk-rows-ribbons",paint:t})}function kn({model:e}){let t=M(n=>{let o=e.sharedBlocks,r=e.walkRowBars,a=e.walkRowPlacement,l=e.walkRowPitch;if(!o||!r||!a||!l)return;let{scaleX:i,scaleY:d,translateX:c,translateY:p}=e.screenTransform;it(n,o,{x:b=>(r.origin+b)*i+c,rowCentre:b=>a.rowY(b)*d+p,barPx:l.barPx})},[e]);return u(_,{model:e,zIndex:3,testId:"graph-walk-rows-blocks",paint:t})}var Rn=m(function({model:t}){let n=t.walkRowBars,o=t.walkRowPlacement,r=t.walkRowPitch;if(!n||!o||!r||!t.hoveredWalkRowText)return null;let a=[n.reference,...n.rows],l=a.findIndex(c=>c.name===t.hoveredWalkRow),i=a[l];if(!i)return null;let d=t.toScreen({x:n.origin,y:o.rowY(l)});return u("rect",{"data-testid":"graph-walk-row-hovered",x:d.x-2,y:d.y-r.rowPx/2-1,width:i.bp*t.scaleX+4,height:r.rowPx+2,fill:"none",stroke:"#111",strokeWidth:1})}),xn=m(function({model:t,vector:n=!1}){let o=A(),r=t.walkRowBars,a=t.walkRowPlacement,l=t.walkRowPitch;if(!r||!a||!l)return null;let{paneWidth:i,canvasHeight:d}=t,c={...t.screenTransform,width:i,height:d,...l,bars:n};return k(T,{children:[n||!t.walkRowRibbons?null:u(mn,{model:t}),n?null:u(hn,{model:t}),n||!t.sharedBlocks?null:u(kn,{model:t}),k(C,{model:t,zIndex:3,overflow:"visible",testId:"graph-walk-rows",children:[qe(r,t.walkRowGroups?.sections??[],a.rowY,c,{ramp:t.referenceRampDomain,rowGenes:t.walkRowGenes,idPrefix:o}).map((p,b)=>u(H,{el:p},b)),a.headers.map(p=>u("text",{x:10,y:t.toScreen({x:0,y:p.top}).y+Ve-4,fontFamily:"sans-serif",fontSize:11,fontWeight:"bold",fill:"#333","data-testid":"graph-walk-section",children:p.title},p.key)),u(Rn,{model:t})]})]})}),la=xn;export{Lt as a,ot as b,C as c,In as d,A as e,H as f,j as g,Nr as h,vr as i,Vt as j,Jt as k,Tr as l,Ar as m,tn as n,$r as o,Ur as p,Fr as q,Yr as r,nn as s,zr as t,Vr as u,no as v,Po as w,Lo as x,an as y,vo as z,cn as A,Uo as B,la as C};
4
- //# sourceMappingURL=chunk-JOYKGTDE.js.map
4
+ //# sourceMappingURL=chunk-MCBYBZZJ.js.map
@@ -0,0 +1,2 @@
1
+ import{a as f}from"./chunk-HAAABGE7.js";import{h as l,i as c,k as m,z as b}from"./chunk-CZXJXNZN.js";import{h as g}from"./chunk-VKZALU57.js";var S={steps:"walkStepBudget",bytes:"walkByteBudget"},x=64,h=class{constructor(t,e){this.file=t;this.adapter=e;this.reader=new m(t)}async haplotypeNames(t={}){let{haplotypes:e}=await this.reader.header(t);return e.length>0?e:void 0}budgets(){return{stepBudget:this.adapter.getConf("walkStepBudget"),byteBudget:this.adapter.getConf("walkByteBudget"),budgetNames:S}}async subgraph(t,e,{signal:i,haplotypes:n,walkRows:a,expand:r}){let d=this.budgets(),p=c(n?.map(s=>g(this.adapter,s)),t),u=a&&p&&(n?.length??0)<=x?p:void 0,o=r?.length?s=>r.includes(s):void 0,{graph:B,kept:y,fragments:k,skips:w}=await this.reader.cut(t,e,{...d,stepBudget:a?1/0:d.stepBudget,signal:i,keep:p,...u||o?{expand:s=>!!u?.(s)||!!o?.(s)}:{}});return f(B.tables(y,k,w),e,a)}async referenceNodes(t,e,i){let n=[];await b(this.file,t,await this.reader.queryStart(e.start,{...i,refName:t,end:e.end}),e.end,{signal:i.signal,lineCallback:r=>{let d=r.split(" ");d[3]==="ref"&&n.push(d)}});let a=new Set;return l(n).filter(r=>r.refName!==t||r.end<=e.start||r.start>=e.end||a.has(r.id)?!1:(a.add(r.id),!0))}};export{h as a};
2
+ //# sourceMappingURL=chunk-NOXHIOIM.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/RgfaTabixAdapter/walkReader.ts"],
4
+ "sourcesContent": ["import { resolvePanSNPrefix } from '@jbrowse/bandage-core/pansn'\nimport { WalkReader, referenceNodes, walksKept } from '@jbrowse/graph-walks'\n\nimport { getLines } from '../tabixRange.ts'\nimport { walkCutFor } from './walkCut.ts'\n\nimport type { SubgraphAdapterOptions } from '../GetSubgraph.ts'\nimport type { TabixIndexedFile } from '@gmod/tabix'\nimport type {\n BaseFeatureDataAdapter,\n BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\n\n// The zoom-in notices name the config slots that set the budgets\nexport const BUDGET_SLOTS = {\n steps: 'walkStepBudget',\n bytes: 'walkByteBudget',\n}\n\n// Walk rows read a list this long or shorter in full where format 5 abridged\n// it; a longer list, or every haplotype, keeps the abridged rows\nexport const EXPAND_NAMED_MAX = 64\n\n/**\n * A walk file and the answers both walk-indexed adapters give from it,\n * RgfaTabixAdapter and WalkTabixSyntenyAdapter, whose schemas declare the\n * budget slots. @jbrowse/graph-walks reads and cuts the file.\n */\nexport class WalkIndex {\n readonly reader: WalkReader\n\n constructor(\n readonly file: TabixIndexedFile,\n private adapter: BaseFeatureDataAdapter,\n ) {\n this.reader = new WalkReader(file)\n }\n\n /**\n * The haplotypes the header names, `sample#haplotype` in byte order, or\n * undefined when it names none\n */\n async haplotypeNames(opts: BaseOptions = {}) {\n const { haplotypes } = await this.reader.header(opts)\n return haplotypes.length > 0 ? haplotypes : undefined\n }\n\n budgets() {\n return {\n stepBudget: this.adapter.getConf('walkStepBudget') as number,\n byteBudget: this.adapter.getConf('walkByteBudget') as number,\n budgetNames: BUDGET_SLOTS,\n }\n }\n\n /**\n * The graph display's cut of a window: the reference walk, the walks of\n * `haplotypes` (every walk when unset), and the nodes and links they visit,\n * with the haplotypes whose deletion spans the window as `skips`, which walk\n * rows draw. Walk rows draw runs, so the step budget spares them, and read a\n * short list of named walks in full where format 5 abridged them.\n */\n async subgraph(\n refName: string,\n region: { start: number; end: number },\n { signal, haplotypes, walkRows, expand }: SubgraphAdapterOptions,\n ) {\n const budgets = this.budgets()\n const keep = walksKept(\n haplotypes?.map(lane => resolvePanSNPrefix(this.adapter, lane)),\n refName,\n )\n const named =\n walkRows && keep && (haplotypes?.length ?? 0) <= EXPAND_NAMED_MAX\n ? keep\n : undefined\n const asked = expand?.length\n ? (name: string) => expand.includes(name)\n : undefined\n const { graph, kept, fragments, skips } = await this.reader.cut(\n refName,\n region,\n {\n ...budgets,\n stepBudget: walkRows ? Infinity : budgets.stepBudget,\n signal,\n keep,\n ...(named || asked\n ? {\n expand: (name: string) => !!named?.(name) || !!asked?.(name),\n }\n : {}),\n },\n )\n return walkCutFor(graph.tables(kept, fragments, skips), region, walkRows)\n }\n\n /**\n * The reference nodes overlapping a window, from the ref rows of its\n * chunks. A row's tabix interval is its chunk's first base, and gfa-to-tabix\n * files a node crossing in from a chunk before under that chunk, so the read\n * starts at queryStart.\n */\n async referenceNodes(\n refName: string,\n region: { start: number; end: number },\n opts: BaseOptions,\n ) {\n const refRows: string[][] = []\n await getLines(\n this.file,\n refName,\n await this.reader.queryStart(region.start, {\n ...opts,\n refName,\n end: region.end,\n }),\n region.end,\n {\n signal: opts.signal,\n lineCallback: line => {\n const cols = line.split('\\t')\n if (cols[3] === 'ref') {\n refRows.push(cols)\n }\n },\n },\n )\n const seen = new Set<number>()\n return referenceNodes(refRows).filter(node => {\n if (\n node.refName !== refName ||\n node.end <= region.start ||\n node.start >= region.end ||\n seen.has(node.id)\n ) {\n return false\n }\n seen.add(node.id)\n return true\n })\n }\n}\n"],
5
+ "mappings": "6IAcO,IAAMA,EAAe,CAC1B,MAAO,iBACP,MAAO,gBACT,EAIaC,EAAmB,GAOnBC,EAAN,KAAgB,CAGrB,YACWC,EACDC,EACR,CAFS,UAAAD,EACD,aAAAC,EAER,KAAK,OAAS,IAAIC,EAAWF,CAAI,CACnC,CAMA,MAAM,eAAeG,EAAoB,CAAC,EAAG,CAC3C,GAAM,CAAE,WAAAC,CAAW,EAAI,MAAM,KAAK,OAAO,OAAOD,CAAI,EACpD,OAAOC,EAAW,OAAS,EAAIA,EAAa,MAC9C,CAEA,SAAU,CACR,MAAO,CACL,WAAY,KAAK,QAAQ,QAAQ,gBAAgB,EACjD,WAAY,KAAK,QAAQ,QAAQ,gBAAgB,EACjD,YAAaP,CACf,CACF,CASA,MAAM,SACJQ,EACAC,EACA,CAAE,OAAAC,EAAQ,WAAAH,EAAY,SAAAI,EAAU,OAAAC,CAAO,EACvC,CACA,IAAMC,EAAU,KAAK,QAAQ,EACvBC,EAAOC,EACXR,GAAY,IAAIS,GAAQC,EAAmB,KAAK,QAASD,CAAI,CAAC,EAC9DR,CACF,EACMU,EACJP,GAAYG,IAASP,GAAY,QAAU,IAAMN,EAC7Ca,EACA,OACAK,EAAQP,GAAQ,OACjBQ,GAAiBR,EAAO,SAASQ,CAAI,EACtC,OACE,CAAE,MAAAC,EAAO,KAAAC,EAAM,UAAAC,EAAW,MAAAC,CAAM,EAAI,MAAM,KAAK,OAAO,IAC1DhB,EACAC,EACA,CACE,GAAGI,EACH,WAAYF,EAAW,IAAWE,EAAQ,WAC1C,OAAAH,EACA,KAAAI,EACA,GAAII,GAASC,EACT,CACE,OAASC,GAAiB,CAAC,CAACF,IAAQE,CAAI,GAAK,CAAC,CAACD,IAAQC,CAAI,CAC7D,EACA,CAAC,CACP,CACF,EACA,OAAOK,EAAWJ,EAAM,OAAOC,EAAMC,EAAWC,CAAK,EAAGf,EAAQE,CAAQ,CAC1E,CAQA,MAAM,eACJH,EACAC,EACAH,EACA,CACA,IAAMoB,EAAsB,CAAC,EAC7B,MAAMC,EACJ,KAAK,KACLnB,EACA,MAAM,KAAK,OAAO,WAAWC,EAAO,MAAO,CACzC,GAAGH,EACH,QAAAE,EACA,IAAKC,EAAO,GACd,CAAC,EACDA,EAAO,IACP,CACE,OAAQH,EAAK,OACb,aAAcsB,GAAQ,CACpB,IAAMC,EAAOD,EAAK,MAAM,GAAI,EACxBC,EAAK,CAAC,IAAM,OACdH,EAAQ,KAAKG,CAAI,CAErB,CACF,CACF,EACA,IAAMC,EAAO,IAAI,IACjB,OAAOC,EAAeL,CAAO,EAAE,OAAOM,GAElCA,EAAK,UAAYxB,GACjBwB,EAAK,KAAOvB,EAAO,OACnBuB,EAAK,OAASvB,EAAO,KACrBqB,EAAK,IAAIE,EAAK,EAAE,EAET,IAETF,EAAK,IAAIE,EAAK,EAAE,EACT,GACR,CACH,CACF",
6
+ "names": ["BUDGET_SLOTS", "EXPAND_NAMED_MAX", "WalkIndex", "file", "adapter", "WalkReader", "opts", "haplotypes", "refName", "region", "signal", "walkRows", "expand", "budgets", "keep", "walksKept", "lane", "resolvePanSNPrefix", "named", "asked", "name", "graph", "kept", "fragments", "skips", "walkCutFor", "refRows", "getLines", "line", "cols", "seen", "referenceNodes", "node"]
7
+ }
@@ -1,4 +1,4 @@
1
- import{a as Z,b as $,f as L,h as M}from"./chunk-X7YIGIYW.js";import{b as O,g as G,p as T}from"./chunk-JMRW3IGK.js";import{a as y,b as I,c as C,d as v}from"./chunk-5RHNR3TH.js";var q=new Map([["hg38","GRCh38"],["hg19","GRCh37"],["hs1","CHM13"],["t2t-chm13","CHM13"],["chm13v2","CHM13"]]);function F(t){return q.get(t.toLowerCase())}function z(t){let s=t.includes("#")?y(t):void 0;return s===void 0||I(s)?void 0:s}function P(t){return C(t)??y(t)}function _(t){let s=new Set((t.anchorPaths??[]).map(n=>n.name));for(let n of t.nodes)n.stable&&s.add(n.stable.refName);let e=new Map;for(let n of s){let r=z(n);r!==void 0&&O(e,r,P(n))}return e}function B(t,s){let e=new Set(t.map(f=>z(f.refName))),[n]=e;if(e.size!==1||n===void 0)return{contigs:t,prefixes:[],named:!1};let r=new Set(t.map(f=>P(f.refName))),i=[...s.get(n)??[]].every(f=>r.has(f)),a=new Set(t.map(f=>C(f.refName))),[o]=a;return{contigs:t,prefixes:[...i?[n]:[],...a.size===1&&o?[o]:[]],named:!0}}function U(t){let s=new Map;for(let n of t.nodes)if(G(n)){let{refName:r,start:i}=n.stable,a=i+n.length,o=s.get(r);o?(o.start=Math.min(o.start,i),o.end=Math.max(o.end,a)):s.set(r,{refName:r,contig:v(r),start:i,end:a})}let e=[...s.values()];return e.length?B(e,_(t)):void 0}function de(t,s){let e=U(t),n=s?v(s.refName):e?.contigs.length===1?e.contigs[0].contig:void 0,r=e?.named?y(e.contigs[0].refName):void 0;return n&&(r?`${r} ${n}`:n)}function H(t,s){let e=a=>[a.name,...a.aliases??[]],n=a=>o=>e(o).some(f=>f.toLowerCase()===a.toLowerCase()),r=[...t?.prefixes??[]].reverse(),i=t?.prefixes.find(a=>!a.includes("#"))?.toLowerCase();for(let a of r){let o=s.find(n(a));if(o)return o}return i===void 0?void 0:s.find(a=>e(a).some(o=>F(o)?.toLowerCase()===i))}function pe(t,s){let e=_(t);return t.anchorPaths?.find(n=>H(B([{refName:n.name,contig:v(n.name),start:n.start,end:n.start+n.length}],e),[s]))}function D(t){let s=t.replace(/^chr/i,""),e=s?/^(M|MT)$/i.test(s)?["M","MT"]:[s]:[];return[...new Set([t,...e.flatMap(n=>[n,`chr${n}`])])]}function K(t,s={}){let e=new Set(t),n=new Map;for(let r of e){let i=v(r),a=s[i];for(let o of new Set([...D(i),...a?[a]:[]]))n.set(o,n.has(o)?void 0:r)}return r=>e.has(r)?r:n.get(r)}function me(t,s,e){let n=K(s.contigs.map(r=>r.refName),e);return t.flatMap(r=>{let i=n(r.refName);return i===void 0?[]:[i===r.refName?r:{...r,refName:i}]})}var Q=62,R=60,j=9,k=48,J=57,V=/^(?:LN:i|SN:Z|SO:i|SR:i):/,X=/^[PEOUFG]\t/,W=t=>t.endsWith("\r")?t.slice(0,-1):t;function Y(){return{nodes:new T(new Int32Array(65536)),reversed:new T(new Uint8Array(65536))}}var ee=class{constructor(){this.names=[],this.byName=new Map,this.byNumber=new Map}has(t){return this.byName.has(t)}add(t){let s=this.names.length;this.byName.set(t,s),this.names.push(t);let e=+t;return Number.isSafeInteger(e)&&String(e)===t&&this.byNumber.set(e,s),s}of(t){return this.byName.get(t)??this.add(t)}ofNumber(t){return this.byNumber.get(t)}};function te(t){let[,s,e="*",...n]=t.split(" ");if(!s||/^\d+$/.test(e))return;let r=e==="*"?0:e.length,i,a,o;for(let u of n){if(!V.test(u))return;let c=u.slice(5),p=u.slice(0,2);p==="LN"?r=+c:p==="SN"?i=c:p==="SO"?a=+c:o=+c}return{name:s,length:r,stable:i!==void 0&&a!==void 0&&o!==void 0?{refName:i,start:a,rank:o}:void 0}}function se(t,s,e,n){let r=0,i=-1,a=0,o=!0,f=c=>{if(i>=0&&c>i){let p=o&&c-i<16&&(c-i===1||t.charCodeAt(i)!==k)?e.ofNumber(a):void 0;n.nodes.push(p??e.of(t.slice(i,c))),n.reversed.push(r)}},u=s;for(;u<t.length;u++){let c=t.charCodeAt(u);if(c===Q||c===R)f(u),r=c===R?1:0,i=u+1,a=0,o=!0;else{if(c===j)break;o&&c>=k&&c<=J?a=a*10+c-k:o=!1}}return f(u),u}function ne(t){let s=[],e=0;for(;s.length<6;){let f=t.indexOf(" ",e);if(f===-1)return;s.push(t.slice(e,f)),e=f+1}let[,n,r,i,a,o]=s;return n&&r&&i&&a&&o&&e<t.length?{sample:n,haplotype:r,contig:i,start:a,end:o,body:e}:void 0}function Ne(t){let s=t.split(`
1
+ import{a as Z,b as $,f as L,h as M}from"./chunk-CZI7IP5S.js";import{b as O,g as G,p as T}from"./chunk-IK3MQ4ZJ.js";import{a as y,b as I,c as C,d as v}from"./chunk-VKZALU57.js";var q=new Map([["hg38","GRCh38"],["hg19","GRCh37"],["hs1","CHM13"],["t2t-chm13","CHM13"],["chm13v2","CHM13"]]);function F(t){return q.get(t.toLowerCase())}function z(t){let s=t.includes("#")?y(t):void 0;return s===void 0||I(s)?void 0:s}function P(t){return C(t)??y(t)}function _(t){let s=new Set((t.anchorPaths??[]).map(n=>n.name));for(let n of t.nodes)n.stable&&s.add(n.stable.refName);let e=new Map;for(let n of s){let r=z(n);r!==void 0&&O(e,r,P(n))}return e}function B(t,s){let e=new Set(t.map(f=>z(f.refName))),[n]=e;if(e.size!==1||n===void 0)return{contigs:t,prefixes:[],named:!1};let r=new Set(t.map(f=>P(f.refName))),i=[...s.get(n)??[]].every(f=>r.has(f)),a=new Set(t.map(f=>C(f.refName))),[o]=a;return{contigs:t,prefixes:[...i?[n]:[],...a.size===1&&o?[o]:[]],named:!0}}function U(t){let s=new Map;for(let n of t.nodes)if(G(n)){let{refName:r,start:i}=n.stable,a=i+n.length,o=s.get(r);o?(o.start=Math.min(o.start,i),o.end=Math.max(o.end,a)):s.set(r,{refName:r,contig:v(r),start:i,end:a})}let e=[...s.values()];return e.length?B(e,_(t)):void 0}function de(t,s){let e=U(t),n=s?v(s.refName):e?.contigs.length===1?e.contigs[0].contig:void 0,r=e?.named?y(e.contigs[0].refName):void 0;return n&&(r?`${r} ${n}`:n)}function H(t,s){let e=a=>[a.name,...a.aliases??[]],n=a=>o=>e(o).some(f=>f.toLowerCase()===a.toLowerCase()),r=[...t?.prefixes??[]].reverse(),i=t?.prefixes.find(a=>!a.includes("#"))?.toLowerCase();for(let a of r){let o=s.find(n(a));if(o)return o}return i===void 0?void 0:s.find(a=>e(a).some(o=>F(o)?.toLowerCase()===i))}function pe(t,s){let e=_(t);return t.anchorPaths?.find(n=>H(B([{refName:n.name,contig:v(n.name),start:n.start,end:n.start+n.length}],e),[s]))}function D(t){let s=t.replace(/^chr/i,""),e=s?/^(M|MT)$/i.test(s)?["M","MT"]:[s]:[];return[...new Set([t,...e.flatMap(n=>[n,`chr${n}`])])]}function K(t,s={}){let e=new Set(t),n=new Map;for(let r of e){let i=v(r),a=s[i];for(let o of new Set([...D(i),...a?[a]:[]]))n.set(o,n.has(o)?void 0:r)}return r=>e.has(r)?r:n.get(r)}function me(t,s,e){let n=K(s.contigs.map(r=>r.refName),e);return t.flatMap(r=>{let i=n(r.refName);return i===void 0?[]:[i===r.refName?r:{...r,refName:i}]})}var Q=62,R=60,j=9,k=48,J=57,V=/^(?:LN:i|SN:Z|SO:i|SR:i):/,X=/^[PEOUFG]\t/,W=t=>t.endsWith("\r")?t.slice(0,-1):t;function Y(){return{nodes:new T(new Int32Array(65536)),reversed:new T(new Uint8Array(65536))}}var ee=class{constructor(){this.names=[],this.byName=new Map,this.byNumber=new Map}has(t){return this.byName.has(t)}add(t){let s=this.names.length;this.byName.set(t,s),this.names.push(t);let e=+t;return Number.isSafeInteger(e)&&String(e)===t&&this.byNumber.set(e,s),s}of(t){return this.byName.get(t)??this.add(t)}ofNumber(t){return this.byNumber.get(t)}};function te(t){let[,s,e="*",...n]=t.split(" ");if(!s||/^\d+$/.test(e))return;let r=e==="*"?0:e.length,i,a,o;for(let u of n){if(!V.test(u))return;let c=u.slice(5),p=u.slice(0,2);p==="LN"?r=+c:p==="SN"?i=c:p==="SO"?a=+c:o=+c}return{name:s,length:r,stable:i!==void 0&&a!==void 0&&o!==void 0?{refName:i,start:a,rank:o}:void 0}}function se(t,s,e,n){let r=0,i=-1,a=0,o=!0,f=c=>{if(i>=0&&c>i){let p=o&&c-i<16&&(c-i===1||t.charCodeAt(i)!==k)?e.ofNumber(a):void 0;n.nodes.push(p??e.of(t.slice(i,c))),n.reversed.push(r)}},u=s;for(;u<t.length;u++){let c=t.charCodeAt(u);if(c===Q||c===R)f(u),r=c===R?1:0,i=u+1,a=0,o=!0;else{if(c===j)break;o&&c>=k&&c<=J?a=a*10+c-k:o=!1}}return f(u),u}function ne(t){let s=[],e=0;for(;s.length<6;){let f=t.indexOf(" ",e);if(f===-1)return;s.push(t.slice(e,f)),e=f+1}let[,n,r,i,a,o]=s;return n&&r&&i&&a&&o&&e<t.length?{sample:n,haplotype:r,contig:i,start:a,end:o,body:e}:void 0}function Ne(t){let s=t.split(`
2
2
  `),e=new ee,n=[],r=[],i=[],a=[],o=[],f=new Map;for(let d of s){if(X.test(d))return;if(d.startsWith("S ")){let l=te(W(d));if(!l||e.has(l.name))return;e.add(l.name),n.push(l.length);let h=-1;l.stable&&(h=f.get(l.stable.refName)??o.length,h===o.length&&(o.push(l.stable.refName),f.set(l.stable.refName,h))),r.push(h),i.push(l.stable?.start??0),a.push(l.stable?.rank??0)}}let u=[],c=[],p=[],b=[],x=[],E=[],S=[0],g=Y(),w=new M,A=new M;for(let d of s)if(d.startsWith("L ")){let[,l,h,N,m]=W(d).split(" ");l&&N&&m&&(u.push(e.of(l)),c.push(e.of(N)),p.push((h==="-"?1:0)|(m==="-"?2:0)))}else if(d.startsWith("W ")){let l=W(d),h=ne(l);if(h){b.push(`${h.sample}#${h.haplotype}#${h.contig}`),x.push(h.start==="*"?0:+h.start),E.push(h.end==="*"?-1:+h.end);let N=se(l,h.body,e,g),m=re(l,N);if(m===void 0||(m.before&&w.push(m.before),m.after&&A.push(m.after),g.nodes.length===S.at(-1)))return;S.push(g.nodes.length)}}if(![w.kinds.length,A.kinds.length].some(d=>d>0&&d<b.length))return{nodes:{names:e.names,lengths:Int32Array.from(n),refs:Int32Array.from(r),starts:Float64Array.from(i),ranks:Int32Array.from(a),refNames:o},links:{from:Int32Array.from(u),to:Int32Array.from(c),strands:Uint8Array.from(p)},walks:{names:b,starts:Float64Array.from(x),ends:Float64Array.from(E),offsets:Int32Array.from(S),steps:g.nodes.data.slice(0,g.nodes.length),reversed:g.reversed.data.slice(0,g.reversed.length),...oe(b.length,w,A)}}}function re(t,s){let e={};for(let n of s<t.length?t.slice(s+1).split(" "):[]){let r=n.slice(5);if(n.startsWith(`${Z}:Z:`)){if(e.before=L(r),!e.before)return}else if(n.startsWith(`${$}:Z:`)&&(e.after=L(r),!e.after))return}return e}function oe(t,s,e){return{...s.kinds.length===t&&t>0?{before:s.table()}:{},...e.kinds.length===t&&t>0?{after:e.table()}:{}}}var ae=/([><])([^><]+)/g;function ie(t){if(!t.startsWith(">")&&!t.startsWith("<"))return;let s=[];for(let[,e,n]of t.matchAll(ae))s.push({name:n,strand:e===">"?"+":"-"});return s}function fe(t){let s=t.trimEnd(),e=s.split(" ");if(e.length<12||s.startsWith("#"))return;let n=ie(e[5]);if(!n)return;let r,i=!1;for(let a=12;a<e.length;a++){let o=e[a];o.startsWith("cs:Z:")?r=o.slice(5):o==="tp:A:S"&&(i=!0)}return{name:e[0],queryLength:+e[1],queryStart:+e[2],queryEnd:+e[3],strand:e[4]==="-"?"-":"+",path:n,pathLength:+e[6],pathStart:+e[7],pathEnd:+e[8],matches:+e[9],blockLength:+e[10],mappingQuality:+e[11],secondary:i,...r===void 0?{}:{cs:r}}}function we(t){let s=[];for(let e of t.split(`
3
3
  `)){let n=fe(e);n&&s.push(n)}return s}var ce=/:(\d+)|=([A-Za-z]+)|\*[a-zA-Z]([a-zA-Z])|\+([A-Za-z]+)|-([A-Za-z]+)|~[a-z]{2}(\d+)[a-z]{2}/g;function Ae(t){let s=[];for(let e of t.matchAll(ce))e[1]!==void 0?s.push({op:"match",length:+e[1]}):e[2]!==void 0?s.push({op:"match",length:e[2].length}):e[3]!==void 0?s.push({op:"substitution",seq:e[3].toUpperCase()}):e[4]!==void 0?s.push({op:"insertion",seq:e[4].toUpperCase()}):e[5]!==void 0?s.push({op:"deletion",length:e[5].length}):e[6]!==void 0&&s.push({op:"match",length:+e[6]});return s}export{F as a,U as b,de as c,H as d,pe as e,me as f,Ne as g,fe as h,we as i,Ae as j};
4
- //# sourceMappingURL=chunk-FY7X6253.js.map
4
+ //# sourceMappingURL=chunk-OGXVDZPS.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@12.0.2/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-5ORP7EFJ.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.0.2/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-VSSIYQYF.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.0.2/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-5OJZV6YT.js"],
4
- "sourcesContent": ["import {\n addTo\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n isBackbone\n} from \"./chunk-RJWPJCIB.js\";\nimport {\n isGenericSample,\n panSNContig,\n panSNHaplotype,\n panSNSample\n} from \"./chunk-2JL2JVZ2.js\";\n\n// src/reference.ts\nvar WELL_KNOWN_SAMPLES = /* @__PURE__ */ new Map([\n [\"hg38\", \"GRCh38\"],\n [\"hg19\", \"GRCh37\"],\n [\"hs1\", \"CHM13\"],\n [\"t2t-chm13\", \"CHM13\"],\n [\"chm13v2\", \"CHM13\"]\n]);\nfunction wellKnownSample(assemblyName) {\n return WELL_KNOWN_SAMPLES.get(assemblyName.toLowerCase());\n}\nfunction sampleOf(refName) {\n const sample = refName.includes(\"#\") ? panSNSample(refName) : void 0;\n return sample === void 0 || isGenericSample(sample) ? void 0 : sample;\n}\nfunction haplotypeOf(refName) {\n return panSNHaplotype(refName) ?? panSNSample(refName);\n}\nfunction graphHaplotypes(graph) {\n const refNames = new Set((graph.anchorPaths ?? []).map((p) => p.name));\n for (const node of graph.nodes) {\n if (node.stable) {\n refNames.add(node.stable.refName);\n }\n }\n const bySample = /* @__PURE__ */ new Map();\n for (const refName of refNames) {\n const sample = sampleOf(refName);\n if (sample !== void 0) {\n addTo(bySample, sample, haplotypeOf(refName));\n }\n }\n return bySample;\n}\nfunction backboneFrom(contigs, haplotypes) {\n const samples = new Set(contigs.map((c) => sampleOf(c.refName)));\n const [sample] = samples;\n if (samples.size !== 1 || sample === void 0) {\n return { contigs, prefixes: [], named: false };\n }\n const own = new Set(contigs.map((c) => haplotypeOf(c.refName)));\n const unique = [...haplotypes.get(sample) ?? []].every((h) => own.has(h));\n const shared = new Set(contigs.map((c) => panSNHaplotype(c.refName)));\n const [haplotype] = shared;\n return {\n contigs,\n prefixes: [\n ...unique ? [sample] : [],\n ...shared.size === 1 && haplotype ? [haplotype] : []\n ],\n named: true\n };\n}\nfunction graphBackbone(graph) {\n const spans = /* @__PURE__ */ new Map();\n for (const node of graph.nodes) {\n if (isBackbone(node)) {\n const { refName, start } = node.stable;\n const end = start + node.length;\n const span = spans.get(refName);\n if (span) {\n span.start = Math.min(span.start, start);\n span.end = Math.max(span.end, end);\n } else {\n spans.set(refName, {\n refName,\n contig: panSNContig(refName),\n start,\n end\n });\n }\n }\n }\n const contigs = [...spans.values()];\n return contigs.length ? backboneFrom(contigs, graphHaplotypes(graph)) : void 0;\n}\nfunction referenceLabel(graph, region) {\n const backbone = graphBackbone(graph);\n const contig = region ? panSNContig(region.refName) : backbone?.contigs.length === 1 ? backbone.contigs[0].contig : void 0;\n const sample = backbone?.named ? panSNSample(backbone.contigs[0].refName) : void 0;\n return contig && (sample ? `${sample} ${contig}` : contig);\n}\nfunction backboneAssembly(backbone, assemblies) {\n const names = (a) => [a.name, ...a.aliases ?? []];\n const naming = (prefix) => (a) => names(a).some((n) => n.toLowerCase() === prefix.toLowerCase());\n const prefixes = [...backbone?.prefixes ?? []].reverse();\n const sample = backbone?.prefixes.find((p) => !p.includes(\"#\"))?.toLowerCase();\n for (const prefix of prefixes) {\n const assembly = assemblies.find(naming(prefix));\n if (assembly) {\n return assembly;\n }\n }\n return sample === void 0 ? void 0 : assemblies.find(\n (a) => names(a).some((n) => wellKnownSample(n)?.toLowerCase() === sample)\n );\n}\nfunction assemblyWalk(graph, assembly) {\n const haplotypes = graphHaplotypes(graph);\n return graph.anchorPaths?.find(\n (walk) => backboneAssembly(\n backboneFrom(\n [\n {\n refName: walk.name,\n contig: panSNContig(walk.name),\n start: walk.start,\n end: walk.start + walk.length\n }\n ],\n haplotypes\n ),\n [assembly]\n )\n );\n}\nfunction contigNames(contig) {\n const bare = contig.replace(/^chr/i, \"\");\n const forms = !bare ? [] : /^(M|MT)$/i.test(bare) ? [\"M\", \"MT\"] : [bare];\n return [.../* @__PURE__ */ new Set([contig, ...forms.flatMap((f) => [f, `chr${f}`])])];\n}\nfunction refNameBinding(refNames, aliases = {}) {\n const exact = new Set(refNames);\n const byName = /* @__PURE__ */ new Map();\n for (const refName of exact) {\n const contig = panSNContig(refName);\n const alias = aliases[contig];\n for (const name of /* @__PURE__ */ new Set([\n ...contigNames(contig),\n ...alias ? [alias] : []\n ])) {\n byName.set(name, byName.has(name) ? void 0 : refName);\n }\n }\n return (name) => exact.has(name) ? name : byName.get(name);\n}\nfunction featuresOnBackbone(features, backbone, aliases) {\n const bind = refNameBinding(\n backbone.contigs.map((c) => c.refName),\n aliases\n );\n return features.flatMap((f) => {\n const refName = bind(f.refName);\n return refName === void 0 ? [] : [refName === f.refName ? f : { ...f, refName }];\n });\n}\n\nexport {\n WELL_KNOWN_SAMPLES,\n wellKnownSample,\n graphBackbone,\n referenceLabel,\n backboneAssembly,\n assemblyWalk,\n contigNames,\n refNameBinding,\n featuresOnBackbone\n};\n", "import {\n END_STOP_TAG,\n START_STOP_TAG,\n StopColumns,\n parseStopTag\n} from \"./chunk-LG2UK4MB.js\";\nimport {\n Column\n} from \"./chunk-ZPZ7GNBT.js\";\n\n// src/gfa/gfaTables.ts\nvar GT = 62;\nvar LT = 60;\nvar TAB = 9;\nvar ZERO = 48;\nvar NINE = 57;\nvar TABLE_TAG = /^(?:LN:i|SN:Z|SO:i|SR:i):/;\nvar UNTABLED_RECORD = /^[PEOUFG]\\t/;\nvar trimCR = (line) => line.endsWith(\"\\r\") ? line.slice(0, -1) : line;\nfunction stepColumns() {\n return {\n nodes: new Column(new Int32Array(1 << 16)),\n reversed: new Column(new Uint8Array(1 << 16))\n };\n}\nvar SegmentIndex = class {\n constructor() {\n this.names = [];\n this.byName = /* @__PURE__ */ new Map();\n // ids that are plain decimal, so a walk step finds its segment without\n // slicing a string out of the body\n this.byNumber = /* @__PURE__ */ new Map();\n }\n has(name) {\n return this.byName.has(name);\n }\n add(name) {\n const i = this.names.length;\n this.byName.set(name, i);\n this.names.push(name);\n const n = +name;\n if (Number.isSafeInteger(n) && String(n) === name) {\n this.byNumber.set(n, i);\n }\n return i;\n }\n of(name) {\n return this.byName.get(name) ?? this.add(name);\n }\n ofNumber(n) {\n return this.byNumber.get(n);\n }\n};\nfunction readSegment(line) {\n const [, name, sequence = \"*\", ...tags] = line.split(\"\t\");\n if (!name || /^\\d+$/.test(sequence)) {\n return void 0;\n }\n let length = sequence === \"*\" ? 0 : sequence.length;\n let refName;\n let start;\n let rank;\n for (const tag of tags) {\n if (!TABLE_TAG.test(tag)) {\n return void 0;\n }\n const value = tag.slice(5);\n const key = tag.slice(0, 2);\n if (key === \"LN\") {\n length = +value;\n } else if (key === \"SN\") {\n refName = value;\n } else if (key === \"SO\") {\n start = +value;\n } else {\n rank = +value;\n }\n }\n const stable = refName !== void 0 && start !== void 0 && rank !== void 0 ? { refName, start, rank } : void 0;\n return { name, length, stable };\n}\nfunction readWalkBody(line, from, segments, steps) {\n let reversed = 0;\n let start = -1;\n let value = 0;\n let decimal = true;\n const finish = (end) => {\n if (start >= 0 && end > start) {\n const node = decimal && end - start < 16 && (end - start === 1 || line.charCodeAt(start) !== ZERO) ? segments.ofNumber(value) : void 0;\n steps.nodes.push(node ?? segments.of(line.slice(start, end)));\n steps.reversed.push(reversed);\n }\n };\n let i = from;\n for (; i < line.length; i++) {\n const ch = line.charCodeAt(i);\n if (ch === GT || ch === LT) {\n finish(i);\n reversed = ch === LT ? 1 : 0;\n start = i + 1;\n value = 0;\n decimal = true;\n } else if (ch === TAB) {\n break;\n } else if (decimal && ch >= ZERO && ch <= NINE) {\n value = value * 10 + ch - ZERO;\n } else {\n decimal = false;\n }\n }\n finish(i);\n return i;\n}\nfunction walkFields(line) {\n const fields = [];\n let at = 0;\n while (fields.length < 6) {\n const tab = line.indexOf(\"\t\", at);\n if (tab === -1) {\n return void 0;\n }\n fields.push(line.slice(at, tab));\n at = tab + 1;\n }\n const [, sample, haplotype, contig, start, end] = fields;\n return sample && haplotype && contig && start && end && at < line.length ? { sample, haplotype, contig, start, end, body: at } : void 0;\n}\nfunction gfaTables(text) {\n const lines = text.split(\"\\n\");\n const segments = new SegmentIndex();\n const lengths = [];\n const refs = [];\n const starts = [];\n const ranks = [];\n const refNames = [];\n const refIndex = /* @__PURE__ */ new Map();\n for (const raw of lines) {\n if (UNTABLED_RECORD.test(raw)) {\n return void 0;\n }\n if (raw.startsWith(\"S\t\")) {\n const s = readSegment(trimCR(raw));\n if (!s || segments.has(s.name)) {\n return void 0;\n }\n segments.add(s.name);\n lengths.push(s.length);\n let ref = -1;\n if (s.stable) {\n ref = refIndex.get(s.stable.refName) ?? refNames.length;\n if (ref === refNames.length) {\n refNames.push(s.stable.refName);\n refIndex.set(s.stable.refName, ref);\n }\n }\n refs.push(ref);\n starts.push(s.stable?.start ?? 0);\n ranks.push(s.stable?.rank ?? 0);\n }\n }\n const from = [];\n const to = [];\n const strands = [];\n const names = [];\n const walkStarts = [];\n const walkEnds = [];\n const offsets = [0];\n const steps = stepColumns();\n const before = new StopColumns();\n const after = new StopColumns();\n for (const raw of lines) {\n if (raw.startsWith(\"L\t\")) {\n const [, source, strand1, target, strand2] = trimCR(raw).split(\"\t\");\n if (source && target && strand2) {\n from.push(segments.of(source));\n to.push(segments.of(target));\n strands.push((strand1 === \"-\" ? 1 : 0) | (strand2 === \"-\" ? 2 : 0));\n }\n } else if (raw.startsWith(\"W\t\")) {\n const line = trimCR(raw);\n const w = walkFields(line);\n if (w) {\n names.push(`${w.sample}#${w.haplotype}#${w.contig}`);\n walkStarts.push(w.start === \"*\" ? 0 : +w.start);\n walkEnds.push(w.end === \"*\" ? -1 : +w.end);\n const end = readWalkBody(line, w.body, segments, steps);\n const tags = walkTags(line, end);\n if (tags === void 0) {\n return void 0;\n }\n if (tags.before) {\n before.push(tags.before);\n }\n if (tags.after) {\n after.push(tags.after);\n }\n if (steps.nodes.length === offsets.at(-1)) {\n return void 0;\n }\n offsets.push(steps.nodes.length);\n }\n }\n }\n if ([before.kinds.length, after.kinds.length].some(\n (n) => n > 0 && n < names.length\n )) {\n return void 0;\n }\n return {\n nodes: {\n names: segments.names,\n lengths: Int32Array.from(lengths),\n refs: Int32Array.from(refs),\n starts: Float64Array.from(starts),\n ranks: Int32Array.from(ranks),\n refNames\n },\n links: {\n from: Int32Array.from(from),\n to: Int32Array.from(to),\n strands: Uint8Array.from(strands)\n },\n walks: {\n names,\n starts: Float64Array.from(walkStarts),\n ends: Float64Array.from(walkEnds),\n offsets: Int32Array.from(offsets),\n steps: steps.nodes.data.slice(0, steps.nodes.length),\n reversed: steps.reversed.data.slice(0, steps.reversed.length),\n ...stopColumns(names.length, before, after)\n }\n };\n}\nfunction walkTags(line, from) {\n const out = {};\n for (const tag of from < line.length ? line.slice(from + 1).split(\"\t\") : []) {\n const value = tag.slice(5);\n if (tag.startsWith(`${START_STOP_TAG}:Z:`)) {\n out.before = parseStopTag(value);\n if (!out.before) {\n return void 0;\n }\n } else if (tag.startsWith(`${END_STOP_TAG}:Z:`)) {\n out.after = parseStopTag(value);\n if (!out.after) {\n return void 0;\n }\n }\n }\n return out;\n}\nfunction stopColumns(walks, before, after) {\n return {\n ...before.kinds.length === walks && walks > 0 ? { before: before.table() } : {},\n ...after.kinds.length === walks && walks > 0 ? { after: after.table() } : {}\n };\n}\n\nexport {\n gfaTables\n};\n", "// src/gaf/parseGaf.ts\nvar STEP = /([><])([^><]+)/g;\nfunction parseGafPath(column) {\n if (!column.startsWith(\">\") && !column.startsWith(\"<\")) {\n return void 0;\n }\n const steps = [];\n for (const [, arrow, name] of column.matchAll(STEP)) {\n steps.push({ name, strand: arrow === \">\" ? \"+\" : \"-\" });\n }\n return steps;\n}\nfunction parseGafLine(text) {\n const line = text.trimEnd();\n const columns = line.split(\"\t\");\n if (columns.length < 12 || line.startsWith(\"#\")) {\n return void 0;\n }\n const path = parseGafPath(columns[5]);\n if (!path) {\n return void 0;\n }\n let cs;\n let secondary = false;\n for (let i = 12; i < columns.length; i++) {\n const tag = columns[i];\n if (tag.startsWith(\"cs:Z:\")) {\n cs = tag.slice(5);\n } else if (tag === \"tp:A:S\") {\n secondary = true;\n }\n }\n return {\n name: columns[0],\n queryLength: +columns[1],\n queryStart: +columns[2],\n queryEnd: +columns[3],\n strand: columns[4] === \"-\" ? \"-\" : \"+\",\n path,\n pathLength: +columns[6],\n pathStart: +columns[7],\n pathEnd: +columns[8],\n matches: +columns[9],\n blockLength: +columns[10],\n mappingQuality: +columns[11],\n secondary,\n ...cs === void 0 ? {} : { cs }\n };\n}\nfunction parseGaf(text) {\n const records = [];\n for (const line of text.split(\"\\n\")) {\n const record = parseGafLine(line);\n if (record) {\n records.push(record);\n }\n }\n return records;\n}\nvar CS_OP = /:(\\d+)|=([A-Za-z]+)|\\*[a-zA-Z]([a-zA-Z])|\\+([A-Za-z]+)|-([A-Za-z]+)|~[a-z]{2}(\\d+)[a-z]{2}/g;\nfunction parseCs(cs) {\n const ops = [];\n for (const m of cs.matchAll(CS_OP)) {\n if (m[1] !== void 0) {\n ops.push({ op: \"match\", length: +m[1] });\n } else if (m[2] !== void 0) {\n ops.push({ op: \"match\", length: m[2].length });\n } else if (m[3] !== void 0) {\n ops.push({ op: \"substitution\", seq: m[3].toUpperCase() });\n } else if (m[4] !== void 0) {\n ops.push({ op: \"insertion\", seq: m[4].toUpperCase() });\n } else if (m[5] !== void 0) {\n ops.push({ op: \"deletion\", length: m[5].length });\n } else if (m[6] !== void 0) {\n ops.push({ op: \"match\", length: +m[6] });\n }\n }\n return ops;\n}\n\nexport {\n parseGafPath,\n parseGafLine,\n parseGaf,\n parseCs\n};\n"],
3
+ "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@12.1.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-5ORP7EFJ.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.1.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-JQVS4DRW.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.1.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-5OJZV6YT.js"],
4
+ "sourcesContent": ["import {\n addTo\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n isBackbone\n} from \"./chunk-RJWPJCIB.js\";\nimport {\n isGenericSample,\n panSNContig,\n panSNHaplotype,\n panSNSample\n} from \"./chunk-2JL2JVZ2.js\";\n\n// src/reference.ts\nvar WELL_KNOWN_SAMPLES = /* @__PURE__ */ new Map([\n [\"hg38\", \"GRCh38\"],\n [\"hg19\", \"GRCh37\"],\n [\"hs1\", \"CHM13\"],\n [\"t2t-chm13\", \"CHM13\"],\n [\"chm13v2\", \"CHM13\"]\n]);\nfunction wellKnownSample(assemblyName) {\n return WELL_KNOWN_SAMPLES.get(assemblyName.toLowerCase());\n}\nfunction sampleOf(refName) {\n const sample = refName.includes(\"#\") ? panSNSample(refName) : void 0;\n return sample === void 0 || isGenericSample(sample) ? void 0 : sample;\n}\nfunction haplotypeOf(refName) {\n return panSNHaplotype(refName) ?? panSNSample(refName);\n}\nfunction graphHaplotypes(graph) {\n const refNames = new Set((graph.anchorPaths ?? []).map((p) => p.name));\n for (const node of graph.nodes) {\n if (node.stable) {\n refNames.add(node.stable.refName);\n }\n }\n const bySample = /* @__PURE__ */ new Map();\n for (const refName of refNames) {\n const sample = sampleOf(refName);\n if (sample !== void 0) {\n addTo(bySample, sample, haplotypeOf(refName));\n }\n }\n return bySample;\n}\nfunction backboneFrom(contigs, haplotypes) {\n const samples = new Set(contigs.map((c) => sampleOf(c.refName)));\n const [sample] = samples;\n if (samples.size !== 1 || sample === void 0) {\n return { contigs, prefixes: [], named: false };\n }\n const own = new Set(contigs.map((c) => haplotypeOf(c.refName)));\n const unique = [...haplotypes.get(sample) ?? []].every((h) => own.has(h));\n const shared = new Set(contigs.map((c) => panSNHaplotype(c.refName)));\n const [haplotype] = shared;\n return {\n contigs,\n prefixes: [\n ...unique ? [sample] : [],\n ...shared.size === 1 && haplotype ? [haplotype] : []\n ],\n named: true\n };\n}\nfunction graphBackbone(graph) {\n const spans = /* @__PURE__ */ new Map();\n for (const node of graph.nodes) {\n if (isBackbone(node)) {\n const { refName, start } = node.stable;\n const end = start + node.length;\n const span = spans.get(refName);\n if (span) {\n span.start = Math.min(span.start, start);\n span.end = Math.max(span.end, end);\n } else {\n spans.set(refName, {\n refName,\n contig: panSNContig(refName),\n start,\n end\n });\n }\n }\n }\n const contigs = [...spans.values()];\n return contigs.length ? backboneFrom(contigs, graphHaplotypes(graph)) : void 0;\n}\nfunction referenceLabel(graph, region) {\n const backbone = graphBackbone(graph);\n const contig = region ? panSNContig(region.refName) : backbone?.contigs.length === 1 ? backbone.contigs[0].contig : void 0;\n const sample = backbone?.named ? panSNSample(backbone.contigs[0].refName) : void 0;\n return contig && (sample ? `${sample} ${contig}` : contig);\n}\nfunction backboneAssembly(backbone, assemblies) {\n const names = (a) => [a.name, ...a.aliases ?? []];\n const naming = (prefix) => (a) => names(a).some((n) => n.toLowerCase() === prefix.toLowerCase());\n const prefixes = [...backbone?.prefixes ?? []].reverse();\n const sample = backbone?.prefixes.find((p) => !p.includes(\"#\"))?.toLowerCase();\n for (const prefix of prefixes) {\n const assembly = assemblies.find(naming(prefix));\n if (assembly) {\n return assembly;\n }\n }\n return sample === void 0 ? void 0 : assemblies.find(\n (a) => names(a).some((n) => wellKnownSample(n)?.toLowerCase() === sample)\n );\n}\nfunction assemblyWalk(graph, assembly) {\n const haplotypes = graphHaplotypes(graph);\n return graph.anchorPaths?.find(\n (walk) => backboneAssembly(\n backboneFrom(\n [\n {\n refName: walk.name,\n contig: panSNContig(walk.name),\n start: walk.start,\n end: walk.start + walk.length\n }\n ],\n haplotypes\n ),\n [assembly]\n )\n );\n}\nfunction contigNames(contig) {\n const bare = contig.replace(/^chr/i, \"\");\n const forms = !bare ? [] : /^(M|MT)$/i.test(bare) ? [\"M\", \"MT\"] : [bare];\n return [.../* @__PURE__ */ new Set([contig, ...forms.flatMap((f) => [f, `chr${f}`])])];\n}\nfunction refNameBinding(refNames, aliases = {}) {\n const exact = new Set(refNames);\n const byName = /* @__PURE__ */ new Map();\n for (const refName of exact) {\n const contig = panSNContig(refName);\n const alias = aliases[contig];\n for (const name of /* @__PURE__ */ new Set([\n ...contigNames(contig),\n ...alias ? [alias] : []\n ])) {\n byName.set(name, byName.has(name) ? void 0 : refName);\n }\n }\n return (name) => exact.has(name) ? name : byName.get(name);\n}\nfunction featuresOnBackbone(features, backbone, aliases) {\n const bind = refNameBinding(\n backbone.contigs.map((c) => c.refName),\n aliases\n );\n return features.flatMap((f) => {\n const refName = bind(f.refName);\n return refName === void 0 ? [] : [refName === f.refName ? f : { ...f, refName }];\n });\n}\n\nexport {\n WELL_KNOWN_SAMPLES,\n wellKnownSample,\n graphBackbone,\n referenceLabel,\n backboneAssembly,\n assemblyWalk,\n contigNames,\n refNameBinding,\n featuresOnBackbone\n};\n", "import {\n END_STOP_TAG,\n START_STOP_TAG,\n StopColumns,\n parseStopTag\n} from \"./chunk-VA5U4F23.js\";\nimport {\n Column\n} from \"./chunk-BEUTROKU.js\";\n\n// src/gfa/gfaTables.ts\nvar GT = 62;\nvar LT = 60;\nvar TAB = 9;\nvar ZERO = 48;\nvar NINE = 57;\nvar TABLE_TAG = /^(?:LN:i|SN:Z|SO:i|SR:i):/;\nvar UNTABLED_RECORD = /^[PEOUFG]\\t/;\nvar trimCR = (line) => line.endsWith(\"\\r\") ? line.slice(0, -1) : line;\nfunction stepColumns() {\n return {\n nodes: new Column(new Int32Array(1 << 16)),\n reversed: new Column(new Uint8Array(1 << 16))\n };\n}\nvar SegmentIndex = class {\n constructor() {\n this.names = [];\n this.byName = /* @__PURE__ */ new Map();\n // ids that are plain decimal, so a walk step finds its segment without\n // slicing a string out of the body\n this.byNumber = /* @__PURE__ */ new Map();\n }\n has(name) {\n return this.byName.has(name);\n }\n add(name) {\n const i = this.names.length;\n this.byName.set(name, i);\n this.names.push(name);\n const n = +name;\n if (Number.isSafeInteger(n) && String(n) === name) {\n this.byNumber.set(n, i);\n }\n return i;\n }\n of(name) {\n return this.byName.get(name) ?? this.add(name);\n }\n ofNumber(n) {\n return this.byNumber.get(n);\n }\n};\nfunction readSegment(line) {\n const [, name, sequence = \"*\", ...tags] = line.split(\"\t\");\n if (!name || /^\\d+$/.test(sequence)) {\n return void 0;\n }\n let length = sequence === \"*\" ? 0 : sequence.length;\n let refName;\n let start;\n let rank;\n for (const tag of tags) {\n if (!TABLE_TAG.test(tag)) {\n return void 0;\n }\n const value = tag.slice(5);\n const key = tag.slice(0, 2);\n if (key === \"LN\") {\n length = +value;\n } else if (key === \"SN\") {\n refName = value;\n } else if (key === \"SO\") {\n start = +value;\n } else {\n rank = +value;\n }\n }\n const stable = refName !== void 0 && start !== void 0 && rank !== void 0 ? { refName, start, rank } : void 0;\n return { name, length, stable };\n}\nfunction readWalkBody(line, from, segments, steps) {\n let reversed = 0;\n let start = -1;\n let value = 0;\n let decimal = true;\n const finish = (end) => {\n if (start >= 0 && end > start) {\n const node = decimal && end - start < 16 && (end - start === 1 || line.charCodeAt(start) !== ZERO) ? segments.ofNumber(value) : void 0;\n steps.nodes.push(node ?? segments.of(line.slice(start, end)));\n steps.reversed.push(reversed);\n }\n };\n let i = from;\n for (; i < line.length; i++) {\n const ch = line.charCodeAt(i);\n if (ch === GT || ch === LT) {\n finish(i);\n reversed = ch === LT ? 1 : 0;\n start = i + 1;\n value = 0;\n decimal = true;\n } else if (ch === TAB) {\n break;\n } else if (decimal && ch >= ZERO && ch <= NINE) {\n value = value * 10 + ch - ZERO;\n } else {\n decimal = false;\n }\n }\n finish(i);\n return i;\n}\nfunction walkFields(line) {\n const fields = [];\n let at = 0;\n while (fields.length < 6) {\n const tab = line.indexOf(\"\t\", at);\n if (tab === -1) {\n return void 0;\n }\n fields.push(line.slice(at, tab));\n at = tab + 1;\n }\n const [, sample, haplotype, contig, start, end] = fields;\n return sample && haplotype && contig && start && end && at < line.length ? { sample, haplotype, contig, start, end, body: at } : void 0;\n}\nfunction gfaTables(text) {\n const lines = text.split(\"\\n\");\n const segments = new SegmentIndex();\n const lengths = [];\n const refs = [];\n const starts = [];\n const ranks = [];\n const refNames = [];\n const refIndex = /* @__PURE__ */ new Map();\n for (const raw of lines) {\n if (UNTABLED_RECORD.test(raw)) {\n return void 0;\n }\n if (raw.startsWith(\"S\t\")) {\n const s = readSegment(trimCR(raw));\n if (!s || segments.has(s.name)) {\n return void 0;\n }\n segments.add(s.name);\n lengths.push(s.length);\n let ref = -1;\n if (s.stable) {\n ref = refIndex.get(s.stable.refName) ?? refNames.length;\n if (ref === refNames.length) {\n refNames.push(s.stable.refName);\n refIndex.set(s.stable.refName, ref);\n }\n }\n refs.push(ref);\n starts.push(s.stable?.start ?? 0);\n ranks.push(s.stable?.rank ?? 0);\n }\n }\n const from = [];\n const to = [];\n const strands = [];\n const names = [];\n const walkStarts = [];\n const walkEnds = [];\n const offsets = [0];\n const steps = stepColumns();\n const before = new StopColumns();\n const after = new StopColumns();\n for (const raw of lines) {\n if (raw.startsWith(\"L\t\")) {\n const [, source, strand1, target, strand2] = trimCR(raw).split(\"\t\");\n if (source && target && strand2) {\n from.push(segments.of(source));\n to.push(segments.of(target));\n strands.push((strand1 === \"-\" ? 1 : 0) | (strand2 === \"-\" ? 2 : 0));\n }\n } else if (raw.startsWith(\"W\t\")) {\n const line = trimCR(raw);\n const w = walkFields(line);\n if (w) {\n names.push(`${w.sample}#${w.haplotype}#${w.contig}`);\n walkStarts.push(w.start === \"*\" ? 0 : +w.start);\n walkEnds.push(w.end === \"*\" ? -1 : +w.end);\n const end = readWalkBody(line, w.body, segments, steps);\n const tags = walkTags(line, end);\n if (tags === void 0) {\n return void 0;\n }\n if (tags.before) {\n before.push(tags.before);\n }\n if (tags.after) {\n after.push(tags.after);\n }\n if (steps.nodes.length === offsets.at(-1)) {\n return void 0;\n }\n offsets.push(steps.nodes.length);\n }\n }\n }\n if ([before.kinds.length, after.kinds.length].some(\n (n) => n > 0 && n < names.length\n )) {\n return void 0;\n }\n return {\n nodes: {\n names: segments.names,\n lengths: Int32Array.from(lengths),\n refs: Int32Array.from(refs),\n starts: Float64Array.from(starts),\n ranks: Int32Array.from(ranks),\n refNames\n },\n links: {\n from: Int32Array.from(from),\n to: Int32Array.from(to),\n strands: Uint8Array.from(strands)\n },\n walks: {\n names,\n starts: Float64Array.from(walkStarts),\n ends: Float64Array.from(walkEnds),\n offsets: Int32Array.from(offsets),\n steps: steps.nodes.data.slice(0, steps.nodes.length),\n reversed: steps.reversed.data.slice(0, steps.reversed.length),\n ...stopColumns(names.length, before, after)\n }\n };\n}\nfunction walkTags(line, from) {\n const out = {};\n for (const tag of from < line.length ? line.slice(from + 1).split(\"\t\") : []) {\n const value = tag.slice(5);\n if (tag.startsWith(`${START_STOP_TAG}:Z:`)) {\n out.before = parseStopTag(value);\n if (!out.before) {\n return void 0;\n }\n } else if (tag.startsWith(`${END_STOP_TAG}:Z:`)) {\n out.after = parseStopTag(value);\n if (!out.after) {\n return void 0;\n }\n }\n }\n return out;\n}\nfunction stopColumns(walks, before, after) {\n return {\n ...before.kinds.length === walks && walks > 0 ? { before: before.table() } : {},\n ...after.kinds.length === walks && walks > 0 ? { after: after.table() } : {}\n };\n}\n\nexport {\n gfaTables\n};\n", "// src/gaf/parseGaf.ts\nvar STEP = /([><])([^><]+)/g;\nfunction parseGafPath(column) {\n if (!column.startsWith(\">\") && !column.startsWith(\"<\")) {\n return void 0;\n }\n const steps = [];\n for (const [, arrow, name] of column.matchAll(STEP)) {\n steps.push({ name, strand: arrow === \">\" ? \"+\" : \"-\" });\n }\n return steps;\n}\nfunction parseGafLine(text) {\n const line = text.trimEnd();\n const columns = line.split(\"\t\");\n if (columns.length < 12 || line.startsWith(\"#\")) {\n return void 0;\n }\n const path = parseGafPath(columns[5]);\n if (!path) {\n return void 0;\n }\n let cs;\n let secondary = false;\n for (let i = 12; i < columns.length; i++) {\n const tag = columns[i];\n if (tag.startsWith(\"cs:Z:\")) {\n cs = tag.slice(5);\n } else if (tag === \"tp:A:S\") {\n secondary = true;\n }\n }\n return {\n name: columns[0],\n queryLength: +columns[1],\n queryStart: +columns[2],\n queryEnd: +columns[3],\n strand: columns[4] === \"-\" ? \"-\" : \"+\",\n path,\n pathLength: +columns[6],\n pathStart: +columns[7],\n pathEnd: +columns[8],\n matches: +columns[9],\n blockLength: +columns[10],\n mappingQuality: +columns[11],\n secondary,\n ...cs === void 0 ? {} : { cs }\n };\n}\nfunction parseGaf(text) {\n const records = [];\n for (const line of text.split(\"\\n\")) {\n const record = parseGafLine(line);\n if (record) {\n records.push(record);\n }\n }\n return records;\n}\nvar CS_OP = /:(\\d+)|=([A-Za-z]+)|\\*[a-zA-Z]([a-zA-Z])|\\+([A-Za-z]+)|-([A-Za-z]+)|~[a-z]{2}(\\d+)[a-z]{2}/g;\nfunction parseCs(cs) {\n const ops = [];\n for (const m of cs.matchAll(CS_OP)) {\n if (m[1] !== void 0) {\n ops.push({ op: \"match\", length: +m[1] });\n } else if (m[2] !== void 0) {\n ops.push({ op: \"match\", length: m[2].length });\n } else if (m[3] !== void 0) {\n ops.push({ op: \"substitution\", seq: m[3].toUpperCase() });\n } else if (m[4] !== void 0) {\n ops.push({ op: \"insertion\", seq: m[4].toUpperCase() });\n } else if (m[5] !== void 0) {\n ops.push({ op: \"deletion\", length: m[5].length });\n } else if (m[6] !== void 0) {\n ops.push({ op: \"match\", length: +m[6] });\n }\n }\n return ops;\n}\n\nexport {\n parseGafPath,\n parseGafLine,\n parseGaf,\n parseCs\n};\n"],
5
5
  "mappings": "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",
6
6
  "names": ["WELL_KNOWN_SAMPLES", "wellKnownSample", "assemblyName", "sampleOf", "refName", "sample", "panSNSample", "isGenericSample", "haplotypeOf", "panSNHaplotype", "graphHaplotypes", "graph", "refNames", "p", "node", "bySample", "addTo", "backboneFrom", "contigs", "haplotypes", "samples", "c", "own", "unique", "h", "shared", "haplotype", "graphBackbone", "spans", "isBackbone", "start", "end", "span", "panSNContig", "referenceLabel", "region", "backbone", "contig", "backboneAssembly", "assemblies", "names", "naming", "prefix", "a", "n", "prefixes", "assembly", "assemblyWalk", "walk", "contigNames", "bare", "forms", "f", "refNameBinding", "aliases", "exact", "byName", "alias", "name", "featuresOnBackbone", "features", "bind", "GT", "LT", "TAB", "ZERO", "NINE", "TABLE_TAG", "UNTABLED_RECORD", "trimCR", "line", "stepColumns", "Column", "SegmentIndex", "name", "i", "n", "readSegment", "sequence", "tags", "length", "refName", "start", "rank", "tag", "value", "key", "readWalkBody", "from", "segments", "steps", "reversed", "decimal", "finish", "end", "node", "ch", "walkFields", "fields", "at", "tab", "sample", "haplotype", "contig", "gfaTables", "text", "lines", "lengths", "refs", "starts", "ranks", "refNames", "refIndex", "raw", "s", "ref", "to", "strands", "names", "walkStarts", "walkEnds", "offsets", "before", "StopColumns", "after", "source", "strand1", "target", "strand2", "w", "walkTags", "stopColumns", "out", "START_STOP_TAG", "parseStopTag", "END_STOP_TAG", "walks", "STEP", "parseGafPath", "column", "steps", "arrow", "name", "parseGafLine", "text", "line", "columns", "path", "cs", "secondary", "i", "tag", "parseGaf", "records", "record", "CS_OP", "parseCs", "ops", "m"]
7
7
  }