jbrowse-plugin-graphgenomeviewer 7.6.0 → 8.0.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 (151) hide show
  1. package/README.md +6 -5
  2. package/dist/chunks/{AddTrackWorkflow-NLSZYK56.js → AddTrackWorkflow-KT6Z6PSW.js} +2 -2
  3. package/dist/chunks/{ChooseSamplesDialog-JRN4YLBY.js → ChooseSamplesDialog-YUH6SVEZ.js} +2 -2
  4. package/dist/chunks/{ChooseWalksDialog-SM326TOX.js → ChooseWalksDialog-2QJKRASB.js} +2 -2
  5. package/dist/chunks/GbzBaseSyntenyAdapter-NPEXW3Z3.js +2 -0
  6. package/dist/chunks/{GbzBaseSyntenyAdapter-3PVPTKNW.js.map → GbzBaseSyntenyAdapter-NPEXW3Z3.js.map} +2 -2
  7. package/dist/chunks/{GraphGenomeView-GQW4YC23.js → GraphGenomeView-5LYF6LMA.js} +2 -2
  8. package/dist/chunks/{GraphTrackSettingsDialog-ARWCWJW4.js → GraphTrackSettingsDialog-T5YKMIPH.js} +2 -2
  9. package/dist/chunks/{GraphTrackSettingsDialog-ARWCWJW4.js.map → GraphTrackSettingsDialog-T5YKMIPH.js.map} +1 -1
  10. package/dist/chunks/{HighlightColorDialog-PD3KMF2U.js → HighlightColorDialog-UGAQFACU.js} +2 -2
  11. package/dist/chunks/LinearGraphDisplay-YTSXFZED.js +2 -0
  12. package/dist/chunks/{LinearGraphDisplay-QNS4EAL3.js.map → LinearGraphDisplay-YTSXFZED.js.map} +2 -2
  13. package/dist/chunks/{MinigraphBubbleAdapter-L6JSQIOL.js → MinigraphBubbleAdapter-D57ZFMKV.js} +2 -2
  14. package/dist/chunks/{RgfaTabixAdapter-5HCAJ7QI.js → RgfaTabixAdapter-HN2NLJJW.js} +2 -2
  15. package/dist/chunks/{TrackWarningsDialog-CPAYIP6K.js → TrackWarningsDialog-4YDIV2FN.js} +2 -2
  16. package/dist/chunks/{TrackWarningsDialog-CPAYIP6K.js.map → TrackWarningsDialog-4YDIV2FN.js.map} +1 -1
  17. package/dist/chunks/{WalkFormsAdapter-NX36GP35.js → WalkFormsAdapter-ESCQSNEJ.js} +2 -2
  18. package/dist/chunks/{WalkTabixSyntenyAdapter-JFNFX3JP.js → WalkTabixSyntenyAdapter-62PJZBRP.js} +2 -2
  19. package/dist/chunks/chunk-26SCNTI3.js +2 -0
  20. package/dist/chunks/chunk-26SCNTI3.js.map +7 -0
  21. package/dist/chunks/chunk-2VKDQF54.js +2 -0
  22. package/dist/chunks/chunk-2VKDQF54.js.map +7 -0
  23. package/dist/chunks/chunk-3VGXCEMQ.js +2 -0
  24. package/dist/chunks/{chunk-7WIBGKBU.js.map → chunk-3VGXCEMQ.js.map} +3 -3
  25. package/dist/chunks/chunk-3WG3GF2A.js +2 -0
  26. package/dist/chunks/{chunk-NDRLCGPC.js.map → chunk-3WG3GF2A.js.map} +3 -3
  27. package/dist/chunks/{chunk-ZFJGNGIB.js → chunk-56YYNIV3.js} +2 -2
  28. package/dist/chunks/{chunk-ZFJGNGIB.js.map → chunk-56YYNIV3.js.map} +1 -1
  29. package/dist/chunks/{chunk-UGCNPRKC.js → chunk-5Z4VIKXZ.js} +2 -2
  30. package/dist/chunks/chunk-5Z4VIKXZ.js.map +7 -0
  31. package/dist/chunks/{chunk-4PHM6JNU.js → chunk-A4YQH3PN.js} +3 -3
  32. package/dist/chunks/chunk-A4YQH3PN.js.map +7 -0
  33. package/dist/chunks/chunk-AH5UWTAV.js +2 -0
  34. package/dist/chunks/{chunk-TYV6UXJA.js.map → chunk-AH5UWTAV.js.map} +2 -2
  35. package/dist/chunks/chunk-AZ3YVI3P.js +2 -0
  36. package/dist/chunks/{chunk-XF6GU4GK.js → chunk-DKUKQR3S.js} +3 -3
  37. package/dist/chunks/chunk-DKUKQR3S.js.map +7 -0
  38. package/dist/chunks/chunk-H53NTUCD.js +4 -0
  39. package/dist/chunks/chunk-H53NTUCD.js.map +7 -0
  40. package/dist/chunks/{chunk-TENPGIPX.js → chunk-J5RMHLFJ.js} +1 -1
  41. package/dist/chunks/chunk-J5RMHLFJ.js.map +7 -0
  42. package/dist/chunks/{chunk-LJ7O3736.js → chunk-JSWEU5QG.js} +1 -1
  43. package/dist/chunks/{chunk-LJ7O3736.js.map → chunk-JSWEU5QG.js.map} +1 -1
  44. package/dist/chunks/{chunk-OQHN2GWX.js → chunk-JYTZO52E.js} +2 -2
  45. package/dist/chunks/{chunk-SGP63UMC.js → chunk-KQ6JJDJC.js} +2 -2
  46. package/dist/chunks/{chunk-SGP63UMC.js.map → chunk-KQ6JJDJC.js.map} +4 -4
  47. package/dist/chunks/chunk-KUT6FNKO.js +4 -0
  48. package/dist/chunks/chunk-KUT6FNKO.js.map +7 -0
  49. package/dist/chunks/{chunk-LGV6BTOY.js → chunk-LJAPKX5Y.js} +2 -2
  50. package/dist/chunks/{chunk-LGV6BTOY.js.map → chunk-LJAPKX5Y.js.map} +3 -3
  51. package/dist/chunks/{chunk-IBWORBGY.js → chunk-LR45N54F.js} +2 -2
  52. package/dist/chunks/{chunk-XSDGE4RF.js → chunk-NE3OW4WX.js} +2 -2
  53. package/dist/chunks/{chunk-TWPUVVYH.js → chunk-ON465L7Z.js} +1 -1
  54. package/dist/chunks/{chunk-TWPUVVYH.js.map → chunk-ON465L7Z.js.map} +1 -1
  55. package/dist/chunks/{chunk-T4R3ZVEM.js → chunk-OTBDKJEA.js} +1 -1
  56. package/dist/chunks/{chunk-T4R3ZVEM.js.map → chunk-OTBDKJEA.js.map} +1 -1
  57. package/dist/chunks/{chunk-SI5VLKVN.js → chunk-QGLMVXGX.js} +2 -2
  58. package/dist/chunks/{chunk-SI5VLKVN.js.map → chunk-QGLMVXGX.js.map} +2 -2
  59. package/dist/chunks/{chunk-JRJHXLGP.js → chunk-ROZPEXN4.js} +2 -2
  60. package/dist/chunks/chunk-ROZPEXN4.js.map +7 -0
  61. package/dist/chunks/chunk-SD7WGQ6Y.js +3 -0
  62. package/dist/chunks/chunk-SD7WGQ6Y.js.map +7 -0
  63. package/dist/chunks/{chunk-5LFPNQWH.js → chunk-SVLBMU6I.js} +2 -2
  64. package/dist/chunks/{chunk-5LFPNQWH.js.map → chunk-SVLBMU6I.js.map} +1 -1
  65. package/dist/chunks/{chunk-DOC7QIE2.js → chunk-VCYF5E2N.js} +1 -1
  66. package/dist/chunks/{chunk-DOC7QIE2.js.map → chunk-VCYF5E2N.js.map} +1 -1
  67. package/dist/chunks/{chunk-G4OPM6G7.js → chunk-YXN7J6LG.js} +2 -2
  68. package/dist/chunks/{chunk-G4OPM6G7.js.map → chunk-YXN7J6LG.js.map} +1 -1
  69. package/dist/chunks/chunk-ZKCMVSD4.js +4 -0
  70. package/dist/chunks/chunk-ZKCMVSD4.js.map +7 -0
  71. package/dist/chunks/executeDiagonalize-MDMQAC5Z.js +2 -0
  72. package/dist/chunks/executeDiagonalize-MDMQAC5Z.js.map +7 -0
  73. package/dist/chunks/renderSvg-3KAQCRFY.js +2 -0
  74. package/dist/chunks/renderSvg-3KAQCRFY.js.map +7 -0
  75. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +6 -4
  76. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +4 -4
  77. package/package.json +11 -11
  78. package/src/GraphAddTrackWorkflow/buildTrackConfig.test.ts +3 -1
  79. package/src/GraphAddTrackWorkflow/buildTrackConfig.ts +5 -1
  80. package/src/GraphGenomeView/components/LegendSwatch.tsx +11 -1
  81. package/src/GraphGenomeView/components/WalkStrip.tsx +1 -0
  82. package/src/GraphGenomeView/genes/geneFeatures.ts +8 -0
  83. package/src/GraphGenomeView/genes/genes.test.ts +14 -1
  84. package/src/GraphGenomeView/legendSections.ts +42 -6
  85. package/src/GraphGenomeView/model.test.ts +59 -7
  86. package/src/GraphGenomeView/nodeSize.test.ts +1 -0
  87. package/src/GraphGenomeView/nodeSize.ts +10 -5
  88. package/src/GraphGenomeView/pane/fitViews.ts +6 -5
  89. package/src/GraphGenomeView/pane/graphViews.ts +16 -12
  90. package/src/GraphGenomeView/pane/launchActions.ts +7 -1
  91. package/src/GraphGenomeView/pane/launchViews.ts +11 -3
  92. package/src/GraphGenomeView/pane/loadActions.ts +2 -2
  93. package/src/GraphGenomeView/pane/renderingActions.ts +36 -4
  94. package/src/GraphGenomeView/pane/settingActions.ts +1 -1
  95. package/src/GraphGenomeView/subgraphLoad.test.ts +42 -0
  96. package/src/GraphGenomeView/tubeMapPanels.test.ts +1 -1
  97. package/src/GraphGenomeView/tubeMapPanels.ts +6 -6
  98. package/src/GraphGenomeView/viewModel.ts +2 -2
  99. package/src/GraphGenomeView/walkRowGroups.test.ts +8 -4
  100. package/src/GraphGenomeView/walkRowGroups.ts +8 -6
  101. package/src/LinearGraphDisplay/LinearGraphDisplay.test.ts +1 -1
  102. package/src/LinearGraphDisplay/components/GraphStatusChrome.tsx +4 -8
  103. package/src/LinearGraphDisplay/configSchema.ts +4 -3
  104. package/src/graphTrackConfig.ts +14 -8
  105. package/src/launchFromGraph/launchFromGraph.ts +11 -11
  106. package/src/launchFromGraph/syntenyTracks.test.ts +6 -26
  107. package/src/launchFromGraph/syntenyTracks.ts +20 -17
  108. package/src/panSNAliases/trackAdapterConfig.ts +4 -7
  109. package/src/version.ts +1 -1
  110. package/dist/chunks/GbzBaseSyntenyAdapter-3PVPTKNW.js +0 -2
  111. package/dist/chunks/LinearGraphDisplay-QNS4EAL3.js +0 -2
  112. package/dist/chunks/chunk-2CPD5NX2.js +0 -4
  113. package/dist/chunks/chunk-2CPD5NX2.js.map +0 -7
  114. package/dist/chunks/chunk-3AC33AXB.js +0 -2
  115. package/dist/chunks/chunk-4PHM6JNU.js.map +0 -7
  116. package/dist/chunks/chunk-7WIBGKBU.js +0 -2
  117. package/dist/chunks/chunk-CNEUOM7X.js +0 -2
  118. package/dist/chunks/chunk-CNEUOM7X.js.map +0 -7
  119. package/dist/chunks/chunk-GRLNDNX4.js +0 -2
  120. package/dist/chunks/chunk-GRLNDNX4.js.map +0 -7
  121. package/dist/chunks/chunk-JRJHXLGP.js.map +0 -7
  122. package/dist/chunks/chunk-JYYF3U2H.js +0 -2
  123. package/dist/chunks/chunk-JYYF3U2H.js.map +0 -7
  124. package/dist/chunks/chunk-KDXVLEHS.js +0 -3
  125. package/dist/chunks/chunk-KDXVLEHS.js.map +0 -7
  126. package/dist/chunks/chunk-NDRLCGPC.js +0 -2
  127. package/dist/chunks/chunk-PTDOYJFH.js +0 -4
  128. package/dist/chunks/chunk-PTDOYJFH.js.map +0 -7
  129. package/dist/chunks/chunk-TENPGIPX.js.map +0 -7
  130. package/dist/chunks/chunk-TYV6UXJA.js +0 -2
  131. package/dist/chunks/chunk-UGCNPRKC.js.map +0 -7
  132. package/dist/chunks/chunk-XF6GU4GK.js.map +0 -7
  133. package/dist/chunks/chunk-ZI7RFIA2.js +0 -4
  134. package/dist/chunks/chunk-ZI7RFIA2.js.map +0 -7
  135. package/dist/chunks/executeDiagonalize-SGJDSTYC.js +0 -2
  136. package/dist/chunks/executeDiagonalize-SGJDSTYC.js.map +0 -7
  137. package/dist/chunks/renderSvg-NIWFCY3U.js +0 -2
  138. package/dist/chunks/renderSvg-NIWFCY3U.js.map +0 -7
  139. /package/dist/chunks/{AddTrackWorkflow-NLSZYK56.js.map → AddTrackWorkflow-KT6Z6PSW.js.map} +0 -0
  140. /package/dist/chunks/{ChooseSamplesDialog-JRN4YLBY.js.map → ChooseSamplesDialog-YUH6SVEZ.js.map} +0 -0
  141. /package/dist/chunks/{ChooseWalksDialog-SM326TOX.js.map → ChooseWalksDialog-2QJKRASB.js.map} +0 -0
  142. /package/dist/chunks/{GraphGenomeView-GQW4YC23.js.map → GraphGenomeView-5LYF6LMA.js.map} +0 -0
  143. /package/dist/chunks/{HighlightColorDialog-PD3KMF2U.js.map → HighlightColorDialog-UGAQFACU.js.map} +0 -0
  144. /package/dist/chunks/{MinigraphBubbleAdapter-L6JSQIOL.js.map → MinigraphBubbleAdapter-D57ZFMKV.js.map} +0 -0
  145. /package/dist/chunks/{RgfaTabixAdapter-5HCAJ7QI.js.map → RgfaTabixAdapter-HN2NLJJW.js.map} +0 -0
  146. /package/dist/chunks/{WalkFormsAdapter-NX36GP35.js.map → WalkFormsAdapter-ESCQSNEJ.js.map} +0 -0
  147. /package/dist/chunks/{WalkTabixSyntenyAdapter-JFNFX3JP.js.map → WalkTabixSyntenyAdapter-62PJZBRP.js.map} +0 -0
  148. /package/dist/chunks/{chunk-3AC33AXB.js.map → chunk-AZ3YVI3P.js.map} +0 -0
  149. /package/dist/chunks/{chunk-OQHN2GWX.js.map → chunk-JYTZO52E.js.map} +0 -0
  150. /package/dist/chunks/{chunk-IBWORBGY.js.map → chunk-LR45N54F.js.map} +0 -0
  151. /package/dist/chunks/{chunk-XSDGE4RF.js.map → chunk-NE3OW4WX.js.map} +0 -0
@@ -1,2 +1,2 @@
1
- import{a as K}from"./chunk-OQHN2GWX.js";import{b as $,d as U,e as X,f as O,g as z,h as G}from"./chunk-4PHM6JNU.js";import"./chunk-3AC33AXB.js";import{a as q}from"./chunk-KOB7YIMR.js";import{p as M,q as _,r as T}from"./chunk-M2D7NUOY.js";import"./chunk-YBLNN5FU.js";import"./chunk-G4OPM6G7.js";import"./chunk-ZFJGNGIB.js";import{C as D,D as H,i as j}from"./chunk-XF6GU4GK.js";import"./chunk-YBLNN5FU.js";import"./chunk-JRJHXLGP.js";import{a as S,c as I,d as W,g as F,h as w,i as x}from"./chunk-TWPUVVYH.js";import"./chunk-T4R3ZVEM.js";import"./chunk-7WIBGKBU.js";import"./chunk-OGQ6OQDN.js";import"./chunk-NDRLCGPC.js";import{o as R}from"./chunk-TENPGIPX.js";var se=50;function re(r){let i=[];for(let e=0;e<r.length;e++){let[t,a]=r[e],[s,n]=r[e+1]??[];a===n&&a<=se&&(t==="I"&&s==="D"||t==="D"&&s==="I")?(i.push(["X",a]),e++):i.push([t,a])}return i}function E(r){return Array.from(r.ids,(i,e)=>2*i+r.rev[e])}function A(r,i){let e=r.get(i);return e===void 0?0:e.end-e.start}function V(r){let i=new Map,e=s=>{let n=A(r,s),o=i.get(n);return o===void 0&&(o="N".repeat(n),i.set(n,o)),o},t=new Map,a=s=>{let n=t.get(s);return n===void 0&&(n=E(s),t.set(s,n)),n};return(s,n)=>_({query:a(s),target:a(n),sequenceOf:e,bases:!1})}var B=100;function v(r,i,e){let t=r.at(-1);e>0&&(t?.[0]===i?t[1]+=e:r.push([i,e]))}function Z(r){let i=t=>A(r,t>>1),e=t=>{let a=new Float64Array(t.length+1);return t.forEach((s,n)=>{a[n+1]=a[n]+i(s)}),a};return(t,a)=>{let s=E(a),n=E(t),[o,l]=M(n,s,i),[u,f]=M(n.map(g=>g^1).reverse(),s,i),c=f>l,p=c?u:o,N=Math.max(l,f);if(N<B)return[];let h=e(s),d=e(n),y=g=>c?n.length-1-p[g][0]:p[g][0],m=[];p.forEach(([,g],k)=>{if(k>0){let[ee,te]=[y(k-1),y(k)].sort((ae,ne)=>ae-ne);v(m,"I",d[te]-d[ee+1]),v(m,"D",h[g]-h[p[k-1][1]+1])}v(m,"=",i(s[g]))});let[b,P]=[y(0),y(p.length-1)].sort((g,k)=>g-k);return[{queryStart:d[b],queryEnd:d[P+1],targetStart:h[p[0][1]],targetEnd:h[p.at(-1)[1]+1],strand:c?"-":"+",edits:m,sharedBases:N}]}}function oe(r){let i=new Map,e=new Set;r.ids.forEach((t,a)=>{i.has(t)?e.add(t):i.set(t,r.rev[a])});for(let t of e)i.delete(t);return i}function J(r){let i=new Map,e=t=>{let a=i.get(t);return a===void 0&&(a=oe(t),i.set(t,a)),a};return(t,a)=>{let s=e(a),n=0,o=0;for(let[l,u]of e(t)){let f=s.get(l);f===u?n+=A(r,l):f!==void 0&&(o+=A(r,l))}return{same:n,opposite:o}}}function Q(r){let i=Z(r),e=V(r),t=J(r);return(a,s)=>{let{same:n,opposite:o}=t(a,s);return n>=B&&o>=B?e(a,s):i(a,s)}}var ie=1e4;function Y(r){let i=Z(r),e=V(r),t=J(r);return(a,s)=>{let n=i(a,s),o=n[0]?.strand,{same:l,opposite:u}=t(a,s);return o===void 0||Math.min(l,u)<ie?n:[...n,...e(a,s).filter(f=>f.strand!==o)]}}function C({chain:r,target:i,query:e,assemblyName:t,refName:a,mateAssemblyName:s}){let n=re(r.edits);return G({target:{name:i.name,assemblyName:t,refName:a,start:i.hapStart+r.targetStart,end:i.hapStart+r.targetEnd},query:{name:e.name,assemblyName:s,refName:W(e.name),start:e.hapStart+r.queryStart,end:e.hapStart+r.queryEnd},strand:r.strand,cigar:T(n),matches:n.reduce((o,[l,u])=>o+(l==="="?u:0),0),columns:n.reduce((o,[,l])=>o+l,0)})}var me=r=>I(r.name)??r.name,L=class extends ${constructor(){super(...arguments);this.walks=new K(D(this,["walksLocation"],["walksIndex"]),this);this.refNames=new H(this.walks.file,this)}get anchor(){let e=this.getConf("assemblyNames")[0];if(e===void 0)throw new Error("WalkTabixSyntenyAdapter needs assemblyNames: its first entry is the assembly the reference sample is loaded as");return e}async getHaplotypeNames(e={}){return this.walks.haplotypeNames(e)}async getHeader(e={}){let{haplotypes:t}=await this.walks.reader.header(e),{anchor:a}=this,s=w(this,a),n=x(this);return{hasCoarseTier:!1,anchorAssemblyName:a,lanes:t.filter(o=>o!==s&&S(o)!==s).map(o=>({name:O(n,o),label:o,group:S(o)}))}}async getRefNames(e={}){let{assemblyName:t}=e;return t===void 0||t===this.anchor?this.refNames.assemblyRefNames({...e,assemblyName:this.anchor}):[]}async getSubgraph(e,t={}){let a=await this.refNames.resolveForCut(e,{signal:t.signal});return this.walks.subgraph(a,e,t)}async laneWalks(e,t,a,s,n){let o=j(a,e);return R(n,s.statusCallback,()=>this.walks.reader.cut(e,t,{...this.walks.budgets(),signal:s.signal,keep:o,expand:o,links:!1}).catch(l=>{throw z(l,t.end-t.start)}))}async anchorFeatures(e,t,a){let s=a.haplotypes?.length?a.haplotypes.map(m=>w(this,m)):void 0,n=w(this,a.targetAssemblyName),o=n===void 0?s:s===void 0||s.some(m=>F(n,m)||F(m,n))?[n]:[];if(o?.length===0)return[];let{start:l,end:u}=t,{graph:f,fragments:c}=await this.laneWalks(e,t,o,a,`Reading walks ${t.refName}:${l.toLocaleString()}-${u.toLocaleString()}`),p=Y(f.nodes),N=x(this),h=c.filter(m=>m.name===e),d=m=>o===void 0?0:o.findIndex(b=>F(m.name,b));return c.filter(m=>m.name!==e&&d(m)>=0).sort((m,b)=>d(m)-d(b)).flatMap(m=>h.flatMap(b=>p(m,b).map(P=>C({chain:P,target:b,query:m,assemblyName:t.assemblyName,refName:t.refName,mateAssemblyName:O(N,me(m))}))))}async pairFeatures(e,t,a,s){let n=a.map(c=>({pair:c,featurePrefix:w(this,c.queryAssemblyName),matePrefix:w(this,c.targetAssemblyName)})),{graph:o,fragments:l}=await this.laneWalks(e,t,n.flatMap(c=>[c.featurePrefix,c.matePrefix]),s,X(a)),u=Q(o.nodes),f=c=>l.filter(p=>F(p.name,c));return n.flatMap(({pair:c,featurePrefix:p,matePrefix:N})=>f(p).flatMap(h=>f(N).flatMap(d=>u(d,h).map(y=>C({chain:y,target:h,query:d,assemblyName:c.queryAssemblyName,refName:W(h.name),mateAssemblyName:c.targetAssemblyName})))))}getFeatures(e,t={}){return q(async a=>{let s=e.assemblyName===this.anchor?await this.refNames.resolve(e,t):void 0;if(s!==void 0){let n=U(t),o=n.length>0?await this.pairFeatures(s,e,n,t):await this.anchorFeatures(s,e,t);for(let l of o)a.next(l)}a.complete()},t.signal)}};export{L as default};
2
- //# sourceMappingURL=WalkTabixSyntenyAdapter-JFNFX3JP.js.map
1
+ import{a as K}from"./chunk-JYTZO52E.js";import{b as $,d as U,e as X,f as O,g as z,h as G}from"./chunk-A4YQH3PN.js";import"./chunk-AZ3YVI3P.js";import{a as q}from"./chunk-KOB7YIMR.js";import{p as M,q as _,r as T}from"./chunk-M2D7NUOY.js";import"./chunk-YBLNN5FU.js";import"./chunk-YXN7J6LG.js";import"./chunk-56YYNIV3.js";import{C as D,D as H,i as j}from"./chunk-DKUKQR3S.js";import"./chunk-YBLNN5FU.js";import"./chunk-ROZPEXN4.js";import{a as S,c as I,d as W,g as F,h as w,i as x}from"./chunk-ON465L7Z.js";import"./chunk-OTBDKJEA.js";import"./chunk-3VGXCEMQ.js";import"./chunk-OGQ6OQDN.js";import"./chunk-3WG3GF2A.js";import{o as R}from"./chunk-J5RMHLFJ.js";var se=50;function re(r){let i=[];for(let e=0;e<r.length;e++){let[t,a]=r[e],[s,n]=r[e+1]??[];a===n&&a<=se&&(t==="I"&&s==="D"||t==="D"&&s==="I")?(i.push(["X",a]),e++):i.push([t,a])}return i}function E(r){return Array.from(r.ids,(i,e)=>2*i+r.rev[e])}function A(r,i){let e=r.get(i);return e===void 0?0:e.end-e.start}function V(r){let i=new Map,e=s=>{let n=A(r,s),o=i.get(n);return o===void 0&&(o="N".repeat(n),i.set(n,o)),o},t=new Map,a=s=>{let n=t.get(s);return n===void 0&&(n=E(s),t.set(s,n)),n};return(s,n)=>_({query:a(s),target:a(n),sequenceOf:e,bases:!1})}var B=100;function v(r,i,e){let t=r.at(-1);e>0&&(t?.[0]===i?t[1]+=e:r.push([i,e]))}function Z(r){let i=t=>A(r,t>>1),e=t=>{let a=new Float64Array(t.length+1);return t.forEach((s,n)=>{a[n+1]=a[n]+i(s)}),a};return(t,a)=>{let s=E(a),n=E(t),[o,l]=M(n,s,i),[u,f]=M(n.map(g=>g^1).reverse(),s,i),c=f>l,p=c?u:o,N=Math.max(l,f);if(N<B)return[];let h=e(s),d=e(n),y=g=>c?n.length-1-p[g][0]:p[g][0],m=[];p.forEach(([,g],k)=>{if(k>0){let[ee,te]=[y(k-1),y(k)].sort((ae,ne)=>ae-ne);v(m,"I",d[te]-d[ee+1]),v(m,"D",h[g]-h[p[k-1][1]+1])}v(m,"=",i(s[g]))});let[b,P]=[y(0),y(p.length-1)].sort((g,k)=>g-k);return[{queryStart:d[b],queryEnd:d[P+1],targetStart:h[p[0][1]],targetEnd:h[p.at(-1)[1]+1],strand:c?"-":"+",edits:m,sharedBases:N}]}}function oe(r){let i=new Map,e=new Set;r.ids.forEach((t,a)=>{i.has(t)?e.add(t):i.set(t,r.rev[a])});for(let t of e)i.delete(t);return i}function J(r){let i=new Map,e=t=>{let a=i.get(t);return a===void 0&&(a=oe(t),i.set(t,a)),a};return(t,a)=>{let s=e(a),n=0,o=0;for(let[l,u]of e(t)){let f=s.get(l);f===u?n+=A(r,l):f!==void 0&&(o+=A(r,l))}return{same:n,opposite:o}}}function Q(r){let i=Z(r),e=V(r),t=J(r);return(a,s)=>{let{same:n,opposite:o}=t(a,s);return n>=B&&o>=B?e(a,s):i(a,s)}}var ie=1e4;function Y(r){let i=Z(r),e=V(r),t=J(r);return(a,s)=>{let n=i(a,s),o=n[0]?.strand,{same:l,opposite:u}=t(a,s);return o===void 0||Math.min(l,u)<ie?n:[...n,...e(a,s).filter(f=>f.strand!==o)]}}function C({chain:r,target:i,query:e,assemblyName:t,refName:a,mateAssemblyName:s}){let n=re(r.edits);return G({target:{name:i.name,assemblyName:t,refName:a,start:i.hapStart+r.targetStart,end:i.hapStart+r.targetEnd},query:{name:e.name,assemblyName:s,refName:W(e.name),start:e.hapStart+r.queryStart,end:e.hapStart+r.queryEnd},strand:r.strand,cigar:T(n),matches:n.reduce((o,[l,u])=>o+(l==="="?u:0),0),columns:n.reduce((o,[,l])=>o+l,0)})}var me=r=>I(r.name)??r.name,L=class extends ${constructor(){super(...arguments);this.walks=new K(D(this,["walksLocation"],["walksIndex"]),this);this.refNames=new H(this.walks.file,this)}get anchor(){let e=this.getConf("assemblyNames")[0];if(e===void 0)throw new Error("WalkTabixSyntenyAdapter needs assemblyNames: its first entry is the assembly the reference sample is loaded as");return e}async getHaplotypeNames(e={}){return this.walks.haplotypeNames(e)}async getHeader(e={}){let{haplotypes:t}=await this.walks.reader.header(e),{anchor:a}=this,s=w(this,a),n=x(this);return{hasCoarseTier:!1,anchorAssemblyName:a,lanes:t.filter(o=>o!==s&&S(o)!==s).map(o=>({name:O(n,o),label:o,group:S(o)}))}}async getRefNames(e={}){let{assemblyName:t}=e;return t===void 0||t===this.anchor?this.refNames.assemblyRefNames({...e,assemblyName:this.anchor}):[]}async getSubgraph(e,t={}){let a=await this.refNames.resolveForCut(e,{signal:t.signal});return this.walks.subgraph(a,e,t)}async laneWalks(e,t,a,s,n){let o=j(a,e);return R(n,s.statusCallback,()=>this.walks.reader.cut(e,t,{...this.walks.budgets(),signal:s.signal,keep:o,expand:o,links:!1}).catch(l=>{throw z(l,t.end-t.start)}))}async anchorFeatures(e,t,a){let s=a.haplotypes?.length?a.haplotypes.map(m=>w(this,m)):void 0,n=w(this,a.targetAssemblyName),o=n===void 0?s:s===void 0||s.some(m=>F(n,m)||F(m,n))?[n]:[];if(o?.length===0)return[];let{start:l,end:u}=t,{graph:f,fragments:c}=await this.laneWalks(e,t,o,a,`Reading walks ${t.refName}:${l.toLocaleString()}-${u.toLocaleString()}`),p=Y(f.nodes),N=x(this),h=c.filter(m=>m.name===e),d=m=>o===void 0?0:o.findIndex(b=>F(m.name,b));return c.filter(m=>m.name!==e&&d(m)>=0).sort((m,b)=>d(m)-d(b)).flatMap(m=>h.flatMap(b=>p(m,b).map(P=>C({chain:P,target:b,query:m,assemblyName:t.assemblyName,refName:t.refName,mateAssemblyName:O(N,me(m))}))))}async pairFeatures(e,t,a,s){let n=a.map(c=>({pair:c,featurePrefix:w(this,c.queryAssemblyName),matePrefix:w(this,c.targetAssemblyName)})),{graph:o,fragments:l}=await this.laneWalks(e,t,n.flatMap(c=>[c.featurePrefix,c.matePrefix]),s,X(a)),u=Q(o.nodes),f=c=>l.filter(p=>F(p.name,c));return n.flatMap(({pair:c,featurePrefix:p,matePrefix:N})=>f(p).flatMap(h=>f(N).flatMap(d=>u(d,h).map(y=>C({chain:y,target:h,query:d,assemblyName:c.queryAssemblyName,refName:W(h.name),mateAssemblyName:c.targetAssemblyName})))))}getFeatures(e,t={}){return q(async a=>{let s=e.assemblyName===this.anchor?await this.refNames.resolve(e,t):void 0;if(s!==void 0){let n=U(t),o=n.length>0?await this.pairFeatures(s,e,n,t):await this.anchorFeatures(s,e,t);for(let l of o)a.next(l)}a.complete()},t.signal)}};export{L as default};
2
+ //# sourceMappingURL=WalkTabixSyntenyAdapter-62PJZBRP.js.map
@@ -0,0 +1,2 @@
1
+ import{d as A}from"./chunk-ROZPEXN4.js";import{a as x,d as O}from"./chunk-3VGXCEMQ.js";import{e as I}from"./chunk-IKJZPPOA.js";function G(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")}function oe(e){let t=x(e).slice(1);return t.length>0?t:void 0}function P(e){return e.type==="WalkTabixSyntenyAdapter"||e.type==="RgfaTabixAdapter"&&(typeof e.walksUri=="string"&&e.walksUri!==""||I(e.walksLocation))}function se(e){return e.type==="GbzBaseSyntenyAdapter"||P(e)}function ie(e){let{defaultHaplotypes:t}=e;return P(e)&&G(t)&&t.length>0?t:void 0}function ae(e){return x(e)[0]}function ce(e){return O(e).adapter}function ue(e,t){return e===void 0||e===t?void 0:`The graph is cut on its reference, ${e}: open it from a view of ${e}`}function i(e,t){return typeof e.get=="function"?e.get(t):e[t]}function T(e,t){return e.find(n=>n.trackId===t)}function g(e){return`${e.trackId} ${e.name??""}`}var U=new Set(["BedAdapter","BedTabixAdapter","BigBedAdapter","VcfAdapter","VcfTabixAdapter"]),R=/repeat|tandem|\bstr\b|vntr|trf|trgt|vamos|expansion|microsat/i;function Ze(e,t){let n=t?T(e,t):void 0;return n||e.filter(o=>U.has(o.adapterType)).find(o=>R.test(g(o)))}var D=/^\w+=[^;]*(;\w+=[^;]*)*$/;function H(e){let t=i(e,"name");if(!(typeof t!="string"||!D.test(t)))return Object.fromEntries(t.split(";").map(n=>{let r=n.indexOf("=");return[n.slice(0,r),n.slice(r+1)]}))}function d(e,t){let n=i(e,t);return n!==void 0?n:i(e,"INFO")?.[t]??H(e)?.[t]}var M=["RUS","MOTIFS","RU","motifs","motif","sequence","consensus"],v=["RUL","period","PERIOD","consensusSize","unit","unitLength"],j=["TRID","REPID","VARID","ID","name","id"];function y(e,t){for(let n of t){let r=d(e,n),o=String((Array.isArray(r)?r[0]:r)??"").split(",")[0].trim();if(o!==""&&o!==".")return o}}var B=/^[ACGTURYSWKMBDHVN]+$/i;function V(e){let t=Number(y(e,v));if(Number.isFinite(t)&&t>0)return Math.round(t);let n=y(e,M);return n&&B.test(n)?n.length:void 0}function m(e){return(Array.isArray(e)?e:String(e??"").split(",")).map(n=>{let r=n===""||n===null||n===void 0?NaN:Number(n);return Number.isFinite(r)?r:void 0})}function N(e){return(Array.isArray(e)?e:String(e??"").split(",")).map(n=>{let r=String(n??"").trim();return r===""||r==="."?void 0:r})}var w="<CNV:TR>";function W(e){let t=N(i(e,"ALT"));if(!t.includes(w))return;let n=m(d(e,"RN")),r=N(d(e,"RUS")),o=m(d(e,"RUL")),s=m(d(e,"RUC")),a=m(d(e,"RB")),c=0;return t.map((u,f)=>{let p=n[f]??(u===w?1:0),h=0,F=0;for(let S=0;S<p;S++,c++){let b=r[c],L=o[c]??(b&&B.test(b)?b.length:void 0),_=s[c],C=a[c]??(L&&_!==void 0?Math.round(L*_):void 0);C!==void 0&&(h+=C,F++)}return u===w&&p>0&&F===p?h:void 0})}function K(e,t,n){let r=e?.includes("|");return(e??"").split(/[/|]/).flatMap((o,s)=>{let a=o===""?NaN:Number(o),c=a>0?t[a-1]:n;return!Number.isInteger(a)||c===void 0?[]:[{bp:c,...r?{haplotype:s+1}:{}}]})}function q(e,t,n){let r=i(e,"samples"),o={};for(let[s,a]of Object.entries(r??{})){let c=m(a.SD),u=m(a.AL).flatMap((p,h)=>p!==void 0&&p>0?[c[h]===void 0?{bp:p}:{bp:p,spanningReads:c[h]}]:[]),f=u.length>0||!t?u:K(N(a.GT)[0],t,n);f.length>0&&(o[s]=f)}return Object.keys(o).length>0?o:void 0}function Y(e,t){let n=d(e,"start"),r=d(e,"end"),o=m(d(e,"SVLEN"))[0];return t&&o!==void 0?{start:n+1,end:n+1+o}:{start:n,end:r}}function en(e){let t=[];for(let n of e){let r=W(n),{start:o,end:s}=Y(n,r!==void 0),a=V(n);if(!(s>o)||a===void 0)continue;let c=d(n,"refName"),u=y(n,M),f=y(n,j);t.push({key:`${c}:${o}-${s}`,name:(f&&!D.test(f)?f:void 0)??(u&&u.length<=12?`(${u})n`:`${c}:${(o+1).toLocaleString("en-US")}-${s.toLocaleString("en-US")}`),refName:c,start:o,end:s,unit:a,motif:u,calls:q(n,r,s-o)})}return t.sort((n,r)=>n.start-r.start)}function k(e){let t=[];for(let n of[...e].sort((r,o)=>r.start-o.start)){let r=t.at(-1);r&&n.start<=r.end?r.end=Math.max(r.end,n.end):t.push({...n})}return t}function E(e){let t=[],n=new Map;for(let r of[...e].sort((o,s)=>o.start-s.start)){let o=`${r.refName} ${r.strand} ${r.name}`,s=n.get(o);if(s&&r.start<s.end)s.end=Math.max(s.end,r.end),s.exons=k([...s.exons,...r.exons]);else{let a={...r,exons:k(r.exons)};t.push(a),n.set(o,a)}}return t}var J=new Set(["Gff3TabixAdapter","Gff3Adapter","BedTabixAdapter","BedAdapter","GtfTabixAdapter","GtfAdapter","BigBedAdapter","NCListAdapter"]),z=/gene|refseq|gencode|ensembl|annotation/i,X=new Set(["BedTabixAdapter","BedAdapter"]);function mn(e,t){let n=t?T(e,t):void 0;if(n)return n;let r=e.filter(o=>J.has(o.adapterType)&&!R.test(g(o)));return r.find(o=>z.test(g(o)))??r.find(o=>!X.has(o.adapterType))}var Q=/\bTEs?\b|transpos/i;function ln(e){return e&&Q.test(g(e))?"TE":"gene"}function gn(e,t){let n=e.tracks?.find(r=>A(r.configuration,"trackId")===t)?.displays[0];return n?A(n.configuration,"filter")??[]:[]}var Z=new Set(["chromosome","region","contig","supercontig","scaffold"]),ee=new Set(["exon","CDS","five_prime_UTR","three_prime_UTR","UTR"]);function $(e,t){let n=i(e,"type");typeof n=="string"&&ee.has(n)&&t.push({start:i(e,"start"),end:i(e,"end")});let r=i(e,"subfeatures");for(let o of r??[])$(o,t)}function hn(e){let t=[];for(let n of e){let r=i(n,"gene_name")??i(n,"name")??i(n,"gene")??i(n,"gene_id"),o=i(n,"start"),s=i(n,"end");if(!r||!(s>o)||Z.has(i(n,"type")))continue;let a=[];$(n,a),t.push({name:r,refName:i(n,"refName"),start:o,end:s,strand:i(n,"strand")??0,exons:a.length?k(a):[{start:o,end:s}]})}return E(t)}var l=JBrowseExports["tss-react/mui"],ne=e=>l!=null&&e in Object(l)?l[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from 'tss-react/mui' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e});var Tn=ne("makeStyles"),yn=l&&l.__esModule?l.default:l;export{oe as a,P as b,se as c,ie as d,ae as e,ce as f,ue as g,U as h,Ze as i,en as j,J as k,mn as l,ln as m,gn as n,hn as o,Tn as p};
2
+ //# sourceMappingURL=chunk-26SCNTI3.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/graphTrackConfig.ts", "../../src/GraphGenomeView/trackFeatures.ts", "../../src/GraphGenomeView/repeats/repeatFeatures.ts", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-EQDQ7P4Y.js", "../../src/GraphGenomeView/genes/geneFeatures.ts", "host:tss-react/mui"],
4
+ "sourcesContent": ["import {\n getConfAssemblyNamesOrNone,\n toTrackConfigEntry,\n} from '@jbrowse/core/util/tracks'\n\nimport { snapshotNamesFile } from './locationName.ts'\n\nimport type { AnyTrackConfig } from '@jbrowse/core/configuration'\n\nfunction isStringArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(item => typeof item === 'string')\n}\n\n// The assemblies the track names after its reference, which is what core's\n// MultiWaySyntenyDisplay opens a lane-declaring source on.\nexport function trackLanes(track: AnyTrackConfig) {\n const lanes = getConfAssemblyNamesOrNone(track).slice(1)\n return lanes.length > 0 ? lanes : undefined\n}\n\n// Whether a track names a walk file, by the `walksUri` shorthand as written\n// or the location it expands to: an rGFA track may, and a\n// WalkTabixSyntenyAdapter one does\nexport function walkIndexed(adapterConfig: Record<string, unknown>) {\n return (\n adapterConfig.type === 'WalkTabixSyntenyAdapter' ||\n (adapterConfig.type === 'RgfaTabixAdapter' &&\n ((typeof adapterConfig.walksUri === 'string' &&\n adapterConfig.walksUri !== '') ||\n snapshotNamesFile(adapterConfig.walksLocation)))\n )\n}\n\n// Whether a track's cut reads `haplotypes`: a GBZ cut does, and so does an\n// rGFA one with a walk file\nexport function cutsByHaplotype(adapterConfig: Record<string, unknown>) {\n return (\n adapterConfig.type === 'GbzBaseSyntenyAdapter' || walkIndexed(adapterConfig)\n )\n}\n\n// The haplotypes a walk-indexed track's config names to cut for until the\n// user picks others\nexport function configHaplotypes(adapterConfig: Record<string, unknown>) {\n const { defaultHaplotypes } = adapterConfig\n return walkIndexed(adapterConfig) &&\n isStringArray(defaultHaplotypes) &&\n defaultHaplotypes.length > 0\n ? defaultHaplotypes\n : undefined\n}\n\n// A graph is cut on the first assembly its track names, the rule\n// GbzBaseSyntenyAdapter states for its anchor. Every other assembly the track\n// names holds its sequence as rank>0 alleles off that reference's backbone, so\n// a window on one has no reference coordinates to frame the cut by.\nexport function graphReferenceAssembly(track: AnyTrackConfig) {\n return getConfAssemblyNamesOrNone(track)[0]\n}\n\n// A track's adapter config, from a live node or a session's frozen entry\nexport function trackAdapterSnapshot(track: AnyTrackConfig) {\n return toTrackConfigEntry(track).adapter as Record<string, unknown>\n}\n\nexport function offReferenceProblem(\n referenceAssembly: string | undefined,\n assemblyName: string,\n) {\n return referenceAssembly === undefined || referenceAssembly === assemblyName\n ? undefined\n : `The graph is cut on its reference, ${referenceAssembly}: open it from a view of ${referenceAssembly}`\n}\n", "import type { Feature } from '@jbrowse/core/util'\n\nexport type FeatureLike = Feature | Record<string, unknown>\n\nexport function ownField(f: FeatureLike, name: string): unknown {\n return typeof (f as Feature).get === 'function'\n ? (f as Feature).get(name)\n : (f as Record<string, unknown>)[name]\n}\n\nexport interface TrackChoice {\n trackId: string\n name?: string\n adapterType: string\n}\n\nexport function namedTrack<T extends TrackChoice>(tracks: T[], named: string) {\n return tracks.find(t => t.trackId === named)\n}\n\n// what a track-name hint such as /repeat|tandem/ is matched against\nexport function trackLabel(t: TrackChoice) {\n return `${t.trackId} ${t.name ?? ''}`\n}\n", "import { namedTrack, ownField, trackLabel } from '../trackFeatures'\n\nimport type { FeatureLike, TrackChoice } from '../trackFeatures'\n\nexport interface RepeatCall {\n bp: number\n // TRGT's `SD`. Zero means the allele is a copy of the one the reads did\n // support, so its length states nothing about a second haplotype; absent\n // where the genotyper writes no such field.\n spanningReads?: number\n // the PanSN haplotype a phased genotype puts this allele on\n haplotype?: number\n}\n\n// A tandem repeat array as the walk rows need it: its span on the reference,\n// which is what the bars measure between, and its unit length, which is what\n// they tile by. Read off whatever repeat annotation the session has, since the\n// tools all state the same two facts under different names: VCF 4.5's\n// `<CNV:TR>` allele gives `RUL` and `RUS` (one entry per repeat sequence,\n// grouped by `RN`), UCSC simpleRepeat and TRF give `period` and the consensus\n// `sequence`, TRGT gives `MOTIFS` and `TRID`, ExpansionHunter `RU` and `REPID`,\n// HipSTR and GangSTR `PERIOD`, vamos its `motifs`. A VCF record's INFO is\n// searched as well as its top level, and a list's first entry is the unit the\n// bars tile by: for a compound array that is the first repeat sequence, which\n// is the expanding one at every such locus in the common catalogues.\nexport interface RepeatArray {\n key: string\n name: string\n refName: string\n start: number\n end: number\n unit: number\n motif?: string\n // Each sample's genotyped alleles, from a genotyper's per-sample `AL`\n // (TRGT) or a genotype over VCF 4.5 <CNV:TR> alleles; absent from a\n // catalogue.\n calls?: Record<string, RepeatCall[]>\n}\n\nexport const REPEAT_ADAPTER_TYPES = new Set([\n 'BedAdapter',\n 'BedTabixAdapter',\n 'BigBedAdapter',\n 'VcfAdapter',\n 'VcfTabixAdapter',\n])\n\nexport const REPEAT_TRACK_HINT =\n /repeat|tandem|\\bstr\\b|vntr|trf|trgt|vamos|expansion|microsat/i\n\nexport function pickRepeatTrack<T extends TrackChoice>(\n tracks: T[],\n named: string,\n) {\n const chosen = named ? namedTrack(tracks, named) : undefined\n if (chosen) {\n return chosen\n }\n const candidates = tracks.filter(t => REPEAT_ADAPTER_TYPES.has(t.adapterType))\n return candidates.find(t => REPEAT_TRACK_HINT.test(trackLabel(t)))\n}\n\n// A TRGT repeat catalogue is a BED whose name column packs the record:\n// `ID=HTT;MOTIFS=CAG,CCG;STRUC=(CAG)nCAACAG(CCG)n`. Read as fields when it\n// has that shape.\nconst PACKED_NAME = /^\\w+=[^;]*(;\\w+=[^;]*)*$/\n\nfunction packedName(f: FeatureLike) {\n const name = ownField(f, 'name')\n if (typeof name !== 'string' || !PACKED_NAME.test(name)) {\n return undefined\n }\n return Object.fromEntries(\n name.split(';').map(pair => {\n const i = pair.indexOf('=')\n return [pair.slice(0, i), pair.slice(i + 1)]\n }),\n )\n}\n\n// A field at the feature's top level, in a VCF record's INFO, or in a packed\n// name column, in that order.\nfunction field(f: FeatureLike, name: string): unknown {\n const top = ownField(f, name)\n if (top !== undefined) {\n return top\n }\n const info = ownField(f, 'INFO') as Record<string, unknown> | undefined\n return info?.[name] ?? packedName(f)?.[name]\n}\n\nconst MOTIF_FIELDS = [\n 'RUS',\n 'MOTIFS',\n 'RU',\n 'motifs',\n 'motif',\n 'sequence',\n 'consensus',\n]\nconst PERIOD_FIELDS = [\n 'RUL',\n 'period',\n 'PERIOD',\n 'consensusSize',\n 'unit',\n 'unitLength',\n]\nconst NAME_FIELDS = ['TRID', 'REPID', 'VARID', 'ID', 'name', 'id']\n\n// The first entry of a list-valued field, whether it arrived parsed or as\n// the comma-joined text a VCF INFO or a BED column holds; VCF's missing \".\"\n// counts as absent.\nfunction first(f: FeatureLike, names: string[]) {\n for (const name of names) {\n const value = field(f, name)\n const one = String((Array.isArray(value) ? value[0] : value) ?? '')\n .split(',')[0]!\n .trim()\n if (one !== '' && one !== '.') {\n return one\n }\n }\n return undefined\n}\n\nconst IUPAC = /^[ACGTURYSWKMBDHVN]+$/i\n\n// The unit in bp: a stated period, else the length of the first motif.\nexport function repeatUnitOf(f: FeatureLike) {\n const period = Number(first(f, PERIOD_FIELDS))\n if (Number.isFinite(period) && period > 0) {\n return Math.round(period)\n }\n const motif = first(f, MOTIF_FIELDS)\n return motif && IUPAC.test(motif) ? motif.length : undefined\n}\n\n// A per-sample list field, parsed or as the comma-joined text a VCF column\n// holds. A missing entry stays missing: read as 0, an absent `SD` would make\n// every allele of every genotyper that writes no such field unspanned.\nfunction numbers(value: unknown) {\n const raw: unknown[] = Array.isArray(value)\n ? value\n : String(value ?? '').split(',')\n return raw.map(one => {\n const n =\n one === '' || one === null || one === undefined ? NaN : Number(one)\n return Number.isFinite(n) ? n : undefined\n })\n}\n\nfunction strings(value: unknown) {\n const raw: unknown[] = Array.isArray(value)\n ? value\n : String(value ?? '').split(',')\n return raw.map(one => {\n const text = String(one ?? '').trim()\n return text === '' || text === '.' ? undefined : text\n })\n}\n\nconst TANDEM_REPEAT = '<CNV:TR>'\n\n// Each ALT allele's length, off VCF 4.5's flattened list-of-lists: RN says how\n// many RUS/RUL/RUC/RB entries each allele takes, and the allele's bases are\n// its runs' RB, or unit length times count where RB is missing. An allele that\n// is not <CNV:TR>, or has a run stating neither, has none.\nfunction tandemAlleleBp(f: FeatureLike) {\n const alts = strings(ownField(f, 'ALT'))\n if (!alts.includes(TANDEM_REPEAT)) {\n return undefined\n }\n const rn = numbers(field(f, 'RN'))\n const rus = strings(field(f, 'RUS'))\n const rul = numbers(field(f, 'RUL'))\n const ruc = numbers(field(f, 'RUC'))\n const rb = numbers(field(f, 'RB'))\n let k = 0\n return alts.map((alt, i) => {\n const n = rn[i] ?? (alt === TANDEM_REPEAT ? 1 : 0)\n let bp = 0\n let known = 0\n for (let j = 0; j < n; j++, k++) {\n const motif = rus[k]\n const unitLength =\n rul[k] ?? (motif && IUPAC.test(motif) ? motif.length : undefined)\n const count = ruc[k]\n const runBp =\n rb[k] ??\n (unitLength && count !== undefined\n ? Math.round(unitLength * count)\n : undefined)\n if (runBp !== undefined) {\n bp += runBp\n known++\n }\n }\n return alt === TANDEM_REPEAT && n > 0 && known === n ? bp : undefined\n })\n}\n\n// A sample's alleles through its genotype: 0 is the reference's, an index\n// past it the ALT allele's. A phased genotype's k-th allele is PanSN\n// haplotype k, the order vg deconstruct writes an assembly's haplotypes in.\nfunction genotyped(\n gt: string | undefined,\n alleleBp: (number | undefined)[],\n referenceBp: number,\n) {\n const phased = gt?.includes('|')\n return (gt ?? '').split(/[/|]/).flatMap((index, k): RepeatCall[] => {\n const i = index === '' ? NaN : Number(index)\n const bp = i > 0 ? alleleBp[i - 1] : referenceBp\n if (!Number.isInteger(i) || bp === undefined) {\n return []\n }\n return [{ bp, ...(phased ? { haplotype: k + 1 } : {}) }]\n })\n}\n\nfunction callsOf(\n f: FeatureLike,\n alleleBp: (number | undefined)[] | undefined,\n referenceBp: number,\n) {\n const samples = ownField(f, 'samples') as\n Record<string, Record<string, unknown>> | undefined\n const called: Record<string, RepeatCall[]> = {}\n for (const [sample, fields] of Object.entries(samples ?? {})) {\n const reads = numbers(fields.SD)\n const lengths = numbers(fields.AL).flatMap((bp, i) =>\n bp !== undefined && bp > 0\n ? [reads[i] === undefined ? { bp } : { bp, spanningReads: reads[i] }]\n : [],\n )\n const calls =\n lengths.length > 0 || !alleleBp\n ? lengths\n : genotyped(strings(fields.GT)[0], alleleBp, referenceBp)\n if (calls.length > 0) {\n called[sample] = calls\n }\n }\n return Object.keys(called).length > 0 ? called : undefined\n}\n\n// A <CNV:TR> record's POS is the base before the array and SVLEN the\n// reference allele's length, while a VCF feature starts at that padding base.\nfunction spanOf(f: FeatureLike, tandem: boolean) {\n const start = field(f, 'start') as number\n const end = field(f, 'end') as number\n const svlen = numbers(field(f, 'SVLEN'))[0]\n return tandem && svlen !== undefined\n ? { start: start + 1, end: start + 1 + svlen }\n : { start, end }\n}\n\nexport function repeatArraysFrom(features: FeatureLike[]): RepeatArray[] {\n const arrays: RepeatArray[] = []\n for (const f of features) {\n const alleleBp = tandemAlleleBp(f)\n const { start, end } = spanOf(f, alleleBp !== undefined)\n const unit = repeatUnitOf(f)\n if (!(end > start) || unit === undefined) {\n continue\n }\n const refName = field(f, 'refName') as string\n const motif = first(f, MOTIF_FIELDS)\n const stated = first(f, NAME_FIELDS)\n arrays.push({\n key: `${refName}:${start}-${end}`,\n name:\n (stated && !PACKED_NAME.test(stated) ? stated : undefined) ??\n (motif && motif.length <= 12\n ? `(${motif})n`\n : `${refName}:${(start + 1).toLocaleString('en-US')}-${end.toLocaleString('en-US')}`),\n refName,\n start,\n end,\n unit,\n motif,\n calls: callsOf(f, alleleBp, end - start),\n })\n }\n return arrays.sort((a, b) => a.start - b.start)\n}\n", "// src/genes/geneFiles.ts\nvar GENE_TYPE = /(gene|gene_segment|RNA|transcript)$/i;\nvar isGene = (type) => GENE_TYPE.test(type) || type === \"CDS\" || type === \"exon\";\nfunction mergedIntervals(intervals) {\n const out = [];\n for (const iv of [...intervals].sort((a, b) => a.start - b.start)) {\n const last = out.at(-1);\n if (last && iv.start <= last.end) {\n last.end = Math.max(last.end, iv.end);\n } else {\n out.push({ ...iv });\n }\n }\n return out;\n}\nfunction strandOf(s) {\n return s === \"+\" ? 1 : s === \"-\" ? -1 : 0;\n}\nfunction unescape(value) {\n try {\n return decodeURIComponent(value);\n } catch {\n return value;\n }\n}\nfunction attributes(column) {\n const out = /* @__PURE__ */ new Map();\n for (const pair of column.split(\";\")) {\n const eq = pair.indexOf(\"=\");\n if (eq > 0) {\n out.set(pair.slice(0, eq).trim(), unescape(pair.slice(eq + 1).trim()));\n }\n }\n return out;\n}\nfunction gff3Row(line) {\n const cols = line.split(\"\t\");\n const start = Number(cols[3]);\n const end = Number(cols[4]);\n if (cols.length < 9 || !Number.isInteger(start) || !Number.isInteger(end)) {\n return void 0;\n }\n return {\n refName: cols[0],\n type: cols[2],\n start: start - 1,\n end,\n strand: strandOf(cols[6]),\n attrs: attributes(cols[8])\n };\n}\nfunction genesFromGff3Lines(lines) {\n const rows = [];\n for (const line of lines) {\n if (line.startsWith(\"##FASTA\")) {\n break;\n }\n const row = line.startsWith(\"#\") ? void 0 : gff3Row(line);\n if (row) {\n rows.push(row);\n }\n }\n const parentOf = /* @__PURE__ */ new Map();\n for (const { attrs } of rows) {\n const id = attrs.get(\"ID\");\n const parent = attrs.get(\"Parent\")?.split(\",\")[0];\n if (id && parent) {\n parentOf.set(id, parent);\n }\n }\n const rootOf = (row) => {\n let id = row.attrs.get(\"Parent\")?.split(\",\")[0] ?? row.attrs.get(\"ID\");\n if (!id) {\n return row.attrs.get(\"gene_id\");\n }\n const seen = /* @__PURE__ */ new Set();\n while (id && parentOf.has(id) && !seen.has(id)) {\n seen.add(id);\n id = parentOf.get(id);\n }\n return id;\n };\n const groups = /* @__PURE__ */ new Map();\n rows.forEach((row, i) => {\n const root = rootOf(row) ?? `#${i}`;\n const key = `${row.refName}\t${root}`;\n const group = groups.get(key) ?? groups.set(key, { rows: [] }).get(key);\n group.rows.push(row);\n if (!row.attrs.has(\"Parent\") && !group.top) {\n group.top = row;\n }\n });\n const genes = [];\n for (const [key, { top, rows: rows2 }] of groups) {\n if (top && !isGene(top.type)) {\n continue;\n }\n const first = top ?? rows2[0];\n const start = top?.start ?? Math.min(...rows2.map((r) => r.start));\n const end = top?.end ?? Math.max(...rows2.map((r) => r.end));\n const a = first.attrs;\n const spans = (type) => rows2.filter((r) => r.type === type).map((r) => ({ start: r.start, end: r.end }));\n const exons = spans(\"exon\");\n const coding = spans(\"CDS\");\n const transcribed = rows2.some(\n (r) => r !== top && r.type !== \"exon\" && r.type !== \"CDS\"\n );\n genes.push({\n name: a.get(\"Name\") ?? a.get(\"gene_name\") ?? a.get(\"gene\") ?? a.get(\"gene_id\") ?? key.split(\"\t\")[1],\n refName: first.refName,\n start,\n end,\n strand: first.strand,\n // A range read holds only the rows over its window, so a gene with\n // transcripts but no exon or CDS there is intronic in it. Only a gene\n // with no transcripts, as a bacterium's gene and CDS, is one exon.\n exons: exons.length ? mergedIntervals(exons) : transcribed ? mergedIntervals(coding) : [{ start, end }]\n });\n }\n return genes;\n}\nfunction mergeOverlappingByName(genes) {\n const out = [];\n const open = /* @__PURE__ */ new Map();\n for (const g of [...genes].sort((a, b) => a.start - b.start)) {\n const key = `${g.refName}\t${g.strand}\t${g.name}`;\n const last = open.get(key);\n if (last && g.start < last.end) {\n last.end = Math.max(last.end, g.end);\n last.exons = mergedIntervals([...last.exons, ...g.exons]);\n } else {\n const gene = { ...g, exons: mergedIntervals(g.exons) };\n out.push(gene);\n open.set(key, gene);\n }\n }\n return out;\n}\nvar BED_HEADER = /^(#|track\\s|browser\\s)/;\nfunction genesFromBed(text) {\n const rows = [];\n for (const line of text.split(\"\\n\")) {\n const cols = line.replace(/\\r$/, \"\").split(\"\t\");\n const start = Number(cols[1]);\n const end = Number(cols[2]);\n if (BED_HEADER.test(line) || cols.length < 3 || !Number.isInteger(start) || !(end > start)) {\n continue;\n }\n const refName = cols[0];\n const name = cols[3] && cols[3] !== \".\" ? cols[3] : `${refName}:${start + 1}-${end}`;\n const sizes = cols[10]?.split(\",\").filter((s) => s !== \"\").map(Number);\n const starts = cols[11]?.split(\",\").filter((s) => s !== \"\").map(Number);\n const blocks = sizes?.length && sizes.length === starts?.length ? sizes.map((size, i) => ({\n start: start + starts[i],\n end: start + starts[i] + size\n })) : [{ start, end }];\n rows.push({\n name,\n refName,\n start,\n end,\n strand: strandOf(cols[5]),\n exons: blocks\n });\n }\n return mergeOverlappingByName(rows);\n}\nfunction sniffedFormat(text) {\n const first = text.split(\"\\n\", 1e3).find((l) => l.trim() !== \"\" && !BED_HEADER.test(l));\n const cols = first?.split(\"\t\") ?? [];\n return /^\\d+$/.test(cols[1] ?? \"\") && /^\\d+$/.test(cols[2] ?? \"\") ? \"bed\" : \"gff3\";\n}\nfunction genesFromText(text, format = sniffedFormat(text)) {\n return format === \"bed\" ? genesFromBed(text) : genesFromGff3Lines(text.split(/\\r?\\n/));\n}\n\nexport {\n mergedIntervals,\n genesFromGff3Lines,\n mergeOverlappingByName,\n genesFromBed,\n genesFromText\n};\n", "import {\n mergeOverlappingByName,\n mergedIntervals,\n} from '@jbrowse/bandage-core/genes/geneFiles'\nimport { readConfObject } from '@jbrowse/core/configuration'\n\nimport { REPEAT_TRACK_HINT } from '../repeats/repeatFeatures'\nimport { namedTrack, ownField, trackLabel } from '../trackFeatures'\n\nimport type { FeatureLike, TrackChoice } from '../trackFeatures'\nimport type { GeneModel } from '@jbrowse/bandage-core/genes/genePins'\nimport type { AnyConfigurationModel } from '@jbrowse/core/configuration'\n\n// The adapters whose tracks hold gene models, in the order the session's\n// tracks are searched when no track is named.\nexport const GENE_ADAPTER_TYPES = new Set([\n 'Gff3TabixAdapter',\n 'Gff3Adapter',\n 'BedTabixAdapter',\n 'BedAdapter',\n 'GtfTabixAdapter',\n 'GtfAdapter',\n 'BigBedAdapter',\n 'NCListAdapter',\n])\n\nconst GENE_TRACK_HINT = /gene|refseq|gencode|ensembl|annotation/i\n\n// A BED track is as often peaks or repeats as genes, so one counts only where\n// its name says it is annotation\nconst BED_ADAPTER_TYPES = new Set(['BedTabixAdapter', 'BedAdapter'])\n\n// Which of the session's tracks to read genes from: the named one while the\n// assembly has it (a saved pick can name a track since removed), else the\n// first gene-bearing track on the assembly whose name says it is annotation,\n// else the first non-BED gene-bearing track. A track whose name says repeats is\n// never picked unnamed, as \"RepeatMasker annotation\" would be.\nexport function pickGeneTrack<T extends TrackChoice>(\n tracks: T[],\n named: string,\n) {\n const chosen = named ? namedTrack(tracks, named) : undefined\n if (chosen) {\n return chosen\n }\n const candidates = tracks.filter(\n t =>\n GENE_ADAPTER_TYPES.has(t.adapterType) &&\n !REPEAT_TRACK_HINT.test(trackLabel(t)),\n )\n return (\n candidates.find(t => GENE_TRACK_HINT.test(trackLabel(t))) ??\n candidates.find(t => !BED_ADAPTER_TYPES.has(t.adapterType))\n )\n}\n\nconst TE_TRACK_HINT = /\\bTEs?\\b|transpos/i\n\n// What a walk row's boxes are, for the key: TEs where the annotation track's\n// name says so, else genes\nexport function annotationNoun(track: TrackChoice | undefined) {\n return track && TE_TRACK_HINT.test(trackLabel(track)) ? 'TE' : 'gene'\n}\n\ninterface LaneView {\n tracks?: readonly {\n configuration: AnyConfigurationModel\n displays: readonly { configuration: AnyConfigurationModel }[]\n }[]\n}\n\n// The `filter` of the gene track's lane in the view the graph is drawn in, so\n// the chips name what the lane draws. None where the view shows no such lane,\n// or has no tracks, as a graph genome view of its own.\nexport function laneFilters(view: object, trackId: string | undefined) {\n const lane = (view as LaneView).tracks?.find(\n t => readConfObject(t.configuration, 'trackId') === trackId,\n )?.displays[0]\n return lane\n ? ((readConfObject(lane.configuration, 'filter') as string[] | undefined) ??\n [])\n : []\n}\n\n// Records spanning a whole sequence, the types the GFF3 adapter declines to\n// widen a fetch for. RefSeq opens every molecule with a `region` named\n// ANONYMOUS.\nconst WHOLE_SEQUENCE_TYPES = new Set([\n 'chromosome',\n 'region',\n 'contig',\n 'supercontig',\n 'scaffold',\n])\n\n// JBrowse's BED parser splits a coding BED12 block into CDS and UTR parts and\n// keeps `exon` for non-coding ones, so all of them are exon\nconst EXON_PARTS = new Set([\n 'exon',\n 'CDS',\n 'five_prime_UTR',\n 'three_prime_UTR',\n 'UTR',\n])\n\nfunction exonsOf(f: FeatureLike, into: { start: number; end: number }[]) {\n const type = ownField(f, 'type')\n if (typeof type === 'string' && EXON_PARTS.has(type)) {\n into.push({\n start: ownField(f, 'start') as number,\n end: ownField(f, 'end') as number,\n })\n }\n const children = ownField(f, 'subfeatures') as FeatureLike[] | undefined\n for (const child of children ?? []) {\n exonsOf(child, into)\n }\n}\n\n// Genes from a track's features: every top-level feature but a whole-sequence\n// record, named by the first of gene_name, name, gene and gene_id it carries,\n// with the exons found anywhere under it merged. A feature with no exons is one exon,\n// its whole span. A BED track gives one feature per transcript, so a name's\n// overlapping features merge, while its copies down the contig stay apart.\n// UCSC's ncbiRefSeq.gff gene records carry their symbol only as gene_id. A\n// feature with none of those names is left out: its raw ID, RefSeq's\n// `id-NC_000913.3:1978503..1979270`, only restates where it is.\nexport function geneModelsFrom(features: FeatureLike[]): GeneModel[] {\n const genes: GeneModel[] = []\n for (const f of features) {\n const name =\n (ownField(f, 'gene_name') as string | undefined) ??\n (ownField(f, 'name') as string | undefined) ??\n (ownField(f, 'gene') as string | undefined) ??\n (ownField(f, 'gene_id') as string | undefined)\n const start = ownField(f, 'start') as number\n const end = ownField(f, 'end') as number\n if (\n !name ||\n !(end > start) ||\n WHOLE_SEQUENCE_TYPES.has(ownField(f, 'type') as string)\n ) {\n continue\n }\n const exons: { start: number; end: number }[] = []\n exonsOf(f, exons)\n genes.push({\n name,\n refName: ownField(f, 'refName') as string,\n start,\n end,\n strand: (ownField(f, 'strand') as number | undefined) ?? 0,\n exons: exons.length ? mergedIntervals(exons) : [{ start, end }],\n })\n }\n return mergeOverlappingByName(genes)\n}\n", "const host = JBrowseExports[\"tss-react/mui\"]\nconst read = name =>\n host != null && name in Object(host)\n ? host[name]\n : Object.assign(\n function () {\n throw new Error(\n \"This JBrowse does not provide '\" + name + \"' from '\" + \"tss-react/mui\" + \"' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse\",\n )\n },\n { jbrowseHostMissing: name },\n )\nexport const cx = /* @__PURE__ */ read(\"cx\")\nexport const keyframes = /* @__PURE__ */ read(\"keyframes\")\nexport const makeStyles = /* @__PURE__ */ read(\"makeStyles\")\nexport default host && host.__esModule ? host.default : host"],
5
+ "mappings": "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",
6
+ "names": ["isStringArray", "value", "item", "trackLanes", "track", "lanes", "getConfAssemblyNamesOrNone", "walkIndexed", "adapterConfig", "snapshotNamesFile", "cutsByHaplotype", "configHaplotypes", "defaultHaplotypes", "graphReferenceAssembly", "trackAdapterSnapshot", "toTrackConfigEntry", "offReferenceProblem", "referenceAssembly", "assemblyName", "ownField", "f", "name", "namedTrack", "tracks", "named", "t", "trackLabel", "REPEAT_ADAPTER_TYPES", "REPEAT_TRACK_HINT", "pickRepeatTrack", "tracks", "named", "chosen", "namedTrack", "t", "trackLabel", "PACKED_NAME", "packedName", "f", "name", "ownField", "pair", "i", "field", "top", "MOTIF_FIELDS", "PERIOD_FIELDS", "NAME_FIELDS", "first", "names", "value", "one", "IUPAC", "repeatUnitOf", "period", "motif", "numbers", "n", "strings", "text", "TANDEM_REPEAT", "tandemAlleleBp", "alts", "rn", "rus", "rul", "ruc", "rb", "k", "alt", "bp", "known", "j", "unitLength", "count", "runBp", "genotyped", "gt", "alleleBp", "referenceBp", "phased", "index", "callsOf", "samples", "called", "sample", "fields", "reads", "lengths", "calls", "spanOf", "tandem", "start", "end", "svlen", "repeatArraysFrom", "features", "arrays", "unit", "refName", "stated", "a", "b", "mergedIntervals", "intervals", "out", "iv", "a", "b", "last", "mergeOverlappingByName", "genes", "out", "open", "g", "a", "b", "key", "last", "mergedIntervals", "gene", "GENE_ADAPTER_TYPES", "GENE_TRACK_HINT", "BED_ADAPTER_TYPES", "pickGeneTrack", "tracks", "named", "chosen", "namedTrack", "candidates", "t", "REPEAT_TRACK_HINT", "trackLabel", "TE_TRACK_HINT", "annotationNoun", "track", "laneFilters", "view", "trackId", "lane", "readConfObject", "WHOLE_SEQUENCE_TYPES", "EXON_PARTS", "exonsOf", "f", "into", "type", "ownField", "children", "child", "geneModelsFrom", "features", "genes", "name", "start", "end", "exons", "mergedIntervals", "mergeOverlappingByName", "host", "read", "name", "makeStyles", "read", "mui_default", "host"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{a as dt,c as ht,d as yt,g as C,j as K,l as xt,q as Mt,r as $,w as bt,x as vt}from"./chunk-56YYNIV3.js";import{b as pt,c as mt}from"./chunk-ON465L7Z.js";var gt=20;function be(t){let n=e=>Math.round(e*100)/100;return t.map((e,o)=>`${o?"L":"M"}${n(e.x)},${n(e.y)}`).join("")}function wt(t,n,e,o,r){let s=Math.hypot(o-n,e-t);if(s===0)return[e,o];let c=(e-t)/s,a=(o-n)/s;return[e+r*c,o+r*a]}function Y(t,n){let e=1-n,o=e*e*e,r=3*e*e*n,s=3*e*n*n,c=n*n*n;return{x:o*t.x0+r*t.cx0+s*t.cx1+c*t.x1,y:o*t.y0+r*t.cy0+s*t.cy1+c*t.y1}}function Pt(t){let n=t[Math.floor(t.length/2)];return n?Y(n,.5):void 0}function Nt(t){let n=1/0,e=1/0,o=-1/0,r=-1/0;for(let s of t)n=Math.min(n,s.x0,s.cx0,s.cx1,s.x1),o=Math.max(o,s.x0,s.cx0,s.cx1,s.x1),e=Math.min(e,s.y0,s.cy0,s.cy1,s.y1),r=Math.max(r,s.y0,s.cy0,s.cy1,s.y1);return{minX:n,minY:e,maxX:o,maxY:r}}function Zt(t,n,e){let o=Y(t,n),r=Y(t,e),s=(e-n)/3,c=At(t,n),a=At(t,e);return{x0:o.x,y0:o.y,cx0:o.x+c.x*s,cy0:o.y+c.y*s,cx1:r.x-a.x*s,cy1:r.y-a.y*s,x1:r.x,y1:r.y}}function At(t,n){let e=1-n,o=3*e*e,r=6*e*n,s=3*n*n;return{x:o*(t.cx0-t.x0)+r*(t.cx1-t.cx0)+s*(t.x1-t.cx1),y:o*(t.cy0-t.y0)+r*(t.cy1-t.cy0)+s*(t.y1-t.cy1)}}var H=32;function tn(t,n,e,o){let r=[],s=0;return t.forEach((c,a)=>{let i=n[a],d=i/H,l=Y(c,0);for(let u=1;u<=H;u++){let h=Y(c,u/H);if(Math.max(l.x,h.x)+d>=e.minX&&Math.min(l.x,h.x)-d<=e.maxX&&Math.max(l.y,h.y)+d/o>=e.minY&&Math.min(l.y,h.y)-d/o<=e.maxY){let f=s+i*(u-1)/H,y=s+i*u/H,x=r.at(-1);x&&x[1]>=f?x[1]=y:r.push([f,y])}l=h}s+=i}),r}function ve(t,n,e=1,o){let r=t.map(u=>Math.hypot(u.cx0-u.x0,(u.cy0-u.y0)*e)+Math.hypot(u.cx1-u.cx0,(u.cy1-u.cy0)*e)+Math.hypot(u.x1-u.cx1,(u.y1-u.cy1)*e)),s=r.reduce((u,h)=>u+h,0),c=Math.round(s/n),a=Math.max(3,c%2?c:c+1),i=o?tn(t,r,o,e):void 0,d=0,l=[];for(let u=0;u<a;u+=2){let h=u/a*s,f=(u+1)/a*s;if(i){for(;d<i.length&&i[d][1]<h;)d++;if(d===i.length)break;if(i[d][0]>f)continue}let y=[],x=[],p=0;t.forEach((b,m)=>{let M=r[m],g=p+M;if(M>0&&g>h&&p<f){let v=Math.max(0,(h-p)/M),w=Math.min(1,(f-p)/M);y.push(Zt(b,v,w)),x.push((m+v)/t.length,(m+w)/t.length)}p=g}),y.length&&l.push({curves:y,startAlong:x[0],endAlong:x.at(-1)})}return l}var ge=(t,n,e)=>({dx:t.dx+(n.dx-t.dx)*e,dy:t.dy+(n.dy-t.dy)*e});function we(t,n,e,o,r){let s=t.length,c=new Array(s);for(let a=0;a<s;a++){let i=t[a],d=a/s,l=(a+1)/s,u=n+(o-n)*d,h=e+(r-e)*d,f=n+(o-n)*l,y=e+(r-e)*l;c[a]={x0:i.x0+u,y0:i.y0+h,cx0:i.cx0+u,cy0:i.cy0+h,cx1:i.cx1+f,cy1:i.cy1+y,x1:i.x1+f,y1:i.y1+y}}return c}function Ae(t,n,e){let o=new Array(t.length);for(let r=0;r<t.length;r++){let s=t[r];o[r]={x0:s.x0+n,y0:s.y0+e,cx0:s.cx0+n,cy0:s.cy0+e,cx1:s.cx1+n,cy1:s.cy1+e,x1:s.x1+n,y1:s.y1+e}}return o}function W(t,n){let e=t.length-1;return n==="end"?{at:t[e],inward:t[e-1]}:{at:t[0],inward:t[1]}}var nn=.5,en=80;function F(t){return t.endsWith("-")?"-":"+"}function q(t){let n=(e,o)=>(o??F(e))===F(e);return{from:n(t.from,t.fromStrand)?"end":"start",to:n(t.to,t.toStrand)?"start":"end"}}function _t(t){let n=1/0,e=-1/0;for(let o of t)n=Math.min(n,o.x),e=Math.max(e,o.x);return{min:n,max:e}}function Et(t,n){return Math.max(0,n.min-t,t-n.max)}function It(t,n,e){let o=Et(t[0].x,n),r=Et(t[t.length-1].x,n);return o===r?e:o<r?"start":"end"}function on(t,n){return{from:It(t,_t(n),"end"),to:It(n,_t(t),"start")}}var Lt=new WeakMap;function rn(t,n){let e=Lt.get(t);e||(e=new WeakMap,Lt.set(t,e));let o=e.get(n);return o||(o=on(t,n),e.set(n,o)),o}var sn=.75,cn=1.15,an=.35,fn=3*gt;function un(t,n,e,o,r,s){let c=Math.hypot(e-t,o-n),a=c===0?1:(e-t)/c,i=c===0?0:(o-n)/c,d=0,l=1/0,u=-1/0;for(let x of r){let p=x.x-t,b=x.y-n,m=p*-i+b*a;Math.abs(m)>Math.abs(d)&&(d=m);let M=p*a+b*i;l=Math.min(l,M),u=Math.max(u,M)}let h=r.length?u-l:0,f=Math.max(Math.abs(d)*cn/sn,h*an),y=s===void 0?f:Math.min(f,s);return d<0?-y:y}function Xt({scaleX:t,scaleY:n}){return n/t}var ln=3;function J(t,n,e){let o=n.x-t.x,r=(n.y-t.y)*e,s=Math.hypot(o,r);return s===0?void 0:{x:o/s,y:r/s}}function _e(t,n,e,o){let r=Xt(o),s=ln/Math.max(o.scaleX,1e-6),c=J(t[t.length-1],n[0],r)??J(t[0],t.at(-1),r)??J(n[0],n.at(-1),r)??{x:1,y:0},a=[];for(let i=0;i<e;i++){let d=(i-(e-1)/2)*s;a.push({x:-c.y*d,y:c.x*d/r})}return a}function Q(t,n){return t.map(e=>({x:e.x,y:e.y*n}))}function dn(t,n){for(let e of t)e.y0/=n,e.cy0/=n,e.cy1/=n,e.y1/=n;return t}function Z(t,n,e){let o=0;for(let r=1;r<t.length;r++){let s=t[r-1],c=t[r];o+=Math.hypot((c.x-s.x)*n,(c.y-s.y)*e)}return o}var hn=12,yn=40;function Ot(t,n){let e=Z(t,n,n);return Math.min(yn,Math.max(hn,e/2))/Math.max(n,Number.EPSILON)}function xn(t){return t.from!==t.to?!1:t.fromStrand&&t.toStrand&&t.fromStrand!==t.toStrand?t.fromStrand==="+"?"end":"start":!0}function Ct(t,n=!1){let e=xn(t);if(!n)return e;let o=q(t);return e===!1?o:o.from===o.to?o.from:!0}function pn(t,n){let{at:e,inward:o}=t,r=o?e.x-o.x:1,s=o?e.y-o.y:0,c=Math.hypot(r,s)||1,a=r/c,i=s/c,d=e.x,l=e.y,u=d+a*n/3,h=l+i*n/3,f=d+a*n,y=l+i*n,x=-i*n/2,p=a*n/2;return[{x0:d,y0:l,cx0:u,cy0:h,cx1:f+x,cy1:y+p,x1:f,y1:y},{x0:f,y0:y,cx0:f-x,cy0:y-p,cx1:u,cy1:h,x1:d,y1:l}]}function tt(t,n,e,o,r=[],s){let c=o.scaleX,a=Xt(o),i=s??(o.pixelRows?fn:void 0);if(e===!1&&(e=rn(t,n)),a!==1)return dn(tt(Q(t,a),Q(n,a),e,{scaleX:c,scaleY:c},Q(r,a),i===void 0?void 0:i*a),a);if(typeof e=="string")return pn(W(t,e),Ot(t,c));let d=e===!0,l=e===!0?{from:"end",to:"start"}:e,u=W(t,l.from),h=W(n,l.to),f=u.at,y=h.at,x=f.x,p=f.y,b=y.x,m=y.y;if(d){let M=1,g=0;if(u.inward){let S=f.x-u.inward.x,P=f.y-u.inward.y,X=Math.hypot(S,P);X>0&&(M=S/X,g=P/X)}let v=Ot(t,c),w=-g,_=M,I=(f.x+y.x)/2+w*v,E=(f.y+y.y)/2+_*v,A=x+M*v,N=p+g*v,O=b-M*v,L=m-g*v;return[{x0:x,y0:p,cx0:A,cy0:N,cx1:A+w*v,cy1:N+_*v,x1:I,y1:E},{x0:I,y0:E,cx0:O+w*v,cy0:L+_*v,cx1:O,cy1:L,x1:b,y1:m}]}else{let M=u.inward??{x:f.x-(y.x-f.x),y:f.y-(y.y-f.y)},g=h.inward??{x:y.x-(f.x-y.x),y:y.y-(f.y-y.y)},v=Math.hypot(b-x,m-p),w=(at,it,Kt,Jt)=>{let ft=it.x-at.x,ut=it.y-at.y,lt=Math.hypot(ft,ut),Qt=lt===0?0:(Kt*ft+Jt*ut)/lt;return Math.max(0,Math.min(v*nn,en,Qt*.5))},_=y.x-f.x,I=y.y-f.y,[E,A]=wt(M.x,M.y,f.x,f.y,w(M,f,_,I)),[N,O]=wt(g.x,g.y,y.x,y.y,w(g,y,-_,-I)),L=r.length?un(x,p,b,m,r,i):0,S=v===0?1:v,P=(b-x)/S,X=(m-p)/S,T=-X*L,B=P*L,R=P*Math.abs(L),ct=X*Math.abs(L);return[{x0:x,y0:p,cx0:E+T-R,cy0:A+B-ct,cx1:N+T+R,cy1:O+B+ct,x1:b,y1:m}]}}function St(t,n){let e=t[0],o=t.at(-1);return Math.hypot(e.x-n.x,e.y-n.y)<Math.hypot(o.x-n.x,o.y-n.y)?"start":"end"}function kt(t,n,e,o){let r=W(t,o?.from??St(t,e[0])),s=W(n,o?.to??St(n,e.at(-1))),c=[r.at,...e,s.at],a=d=>{let l=c[d],u=f=>Math.hypot(f.x-l.x,f.y-l.y),h=(f,y)=>{let x=f?u(f):0,p=u(y);return x===0?{x:y.x-l.x,y:y.y-l.y}:{x:(l.x-f.x)/x*p,y:(l.y-f.y)/x*p}};if(d===0)return h(r.inward,c[1]);if(d===c.length-1){let f=h(s.inward,c[d-1]);return{x:-f.x,y:-f.y}}return{x:(c[d+1].x-c[d-1].x)/2,y:(c[d+1].y-c[d-1].y)/2}},i=[];for(let d=0;d<c.length-1;d++){let l=c[d],u=c[d+1],h=a(d),f=a(d+1);i.push({x0:l.x,y0:l.y,cx0:l.x+h.x/3,cy0:l.y+h.y/3,cx1:u.x-f.x/3,cy1:u.y-f.y/3,x1:u.x,y1:u.y})}return i}function nt(){let t=new WeakMap;return(n,e,o)=>{let r=t.get(n);if(r?.deps.length===e.length&&r.deps.every((c,a)=>Object.is(c,e[a])))return r.value;let s=o();return t.set(n,{deps:e,value:s}),s}}var Bt=11,mn=6.2,D=4;function et(t){return t.length*mn+D*2}function Mn(t,n){return t.x0<n.x1&&t.x1>n.x0&&t.y0<n.y1&&t.y1>n.y0}function Tt(t,n){return t.x1<=0||t.x0>=n.width||t.y1<=0||t.y0>=n.height}function bn(t,n){return t.x0>=0&&t.x1<=n.width&&t.y0>=0&&t.y1<=n.height}function Rt(t,n=[]){let e=[...n];return o=>Tt(o,t)||e.some(r=>Mn(r,o))?!1:(e.push(o),!0)}function Le(t,n,e){let o=[],r=Bt+D*2,s=(c,a)=>{let i=et(a),d=c.y>n.height/2?-1:1;for(let l=0;l<=(c.stack??0);l++){let u=c.y+d*l*r,h={x0:c.x-i/2,x1:c.x+i/2,y0:u-Bt-D,y1:u+D};if(Tt(h,n))return;if(bn(h,n)&&(c.fits?.(h)??!0)&&e(h))return{...c,text:a,y:u,w:i}}};for(let c of t){let a=s(c,c.text)??(c.fallback===void 0?void 0:s(c,c.fallback));a&&o.push(a)}return o}function $t(t){return t==="+"?"-":"+"}function Xe(t,n=new Set){let e=t.edges.map(q),o=new Map,r=(f,y,x)=>{dt(o,`${f}|${y}`,x)};t.edges.forEach((f,y)=>{r(f.from,e[y].from,y),r(f.to,e[y].to,y)});let s=f=>{let y=o.get(`${f}|end`);if(y?.length!==1)return;let x=y[0],p=t.edges[x];return p.from===f&&p.to!==f&&!n.has(f)&&!n.has(p.to)&&e[x].from==="end"&&e[x].to==="start"&&o.get(`${p.to}|start`)?.length===1?x:void 0},c=new Set,a=new Map,i=new Map;for(let f of t.nodes){let y=o.get(`${f.id}|start`),x=y?.length===1?t.edges[y[0]].from:void 0;if(a.has(f.id)||x!==void 0&&s(x)===y[0])continue;let p=[f.id];for(;;){let b=s(p.at(-1)),m=b===void 0?void 0:t.edges[b].to;if(m===void 0||a.has(m))break;c.add(b),p.push(m)}for(let b of p)a.set(b,f.id);p.length>1&&i.set(f.id,p)}for(let f of t.nodes)a.has(f.id)||a.set(f.id,f.id);let d=new Map(t.nodes.map(f=>[f.id,f])),l=[];for(let f of t.nodes){if(a.get(f.id)!==f.id)continue;let y=i.get(f.id);if(!y){l.push(f);continue}let x=y.map(m=>d.get(m)),p=x.filter(C),b=p.length?p.reduce((m,M)=>m.stable.start<=M.stable.start?m:M):x[0];l.push({id:f.id,name:f.name,length:x.reduce((m,M)=>m+M.length,0),depth:f.depth,stable:b.stable})}let u=new Set,h=[];return t.edges.forEach((f,y)=>{let x=a.get(f.from),p=a.get(f.to),b=e[y],m=`${x}|${b.from}>${p}|${b.to}`;c.has(y)||u.has(m)||(u.add(m),h.push({from:x,to:p,...b.from==="start"?{fromStrand:$t(F(x))}:{},...b.to==="end"?{toStrand:$t(F(p))}:{}}))}),{graph:{...t,nodes:l,edges:h,paths:void 0,pathVisits:void 0},runs:i}}function Ce(t,n,e){let o={...t};for(let[r,s]of n){let c=t[r];if(!c?.length)continue;delete o[r];let a=rt(c),i=a.at(-1),d=s.map(h=>Math.max(e(h),0)),l=d.reduce((h,f)=>h+f,0),u=0;s.forEach((h,f)=>{let y=l?d[f]/l*i:i/s.length,x=f===s.length-1?i:u+y;o[h]=Yt(c,a,u,x),u=x})}return o}function ke(t,n,e){if(t.length===0)return[];let o=rt(t),r=o.at(-1);return Yt(t,o,n*r,e*r)}function Ht(t){let n=rt(t);return ot(t,n,n.at(-1)/2)}function rt(t){let n=[0];for(let e=1;e<t.length;e++)n.push(n[e-1]+Math.hypot(t[e].x-t[e-1].x,t[e].y-t[e-1].y));return n}function Wt(t,n){let e=0,o=t.length;for(;e<o;){let r=e+o>>1;t[r]<n?e=r+1:o=r}return e}function ot(t,n,e){if(e<=0)return{...t[0]};let o=Wt(n,e);if(o>=n.length)return{...t.at(-1)};let r=n[o]-n[o-1],s=r>0?(e-n[o-1])/r:0,c=t[o-1],a=t[o];return{x:c.x+(a.x-c.x)*s,y:c.y+(a.y-c.y)*s}}function Yt(t,n,e,o){let r=[ot(t,n,e)];for(let s=Wt(n,e);s<t.length&&n[s]<o;s++)n[s]>e&&r.push({...t[s]});return r.push(ot(t,n,o)),r}function He(t,n){let e=new Set(t.nodes.filter(i=>C(i)&&K(i,n)).map(i=>i.id)),o=t.paths??[];if(e.size===0||o.length===0)return t;let r=o.map(i=>{let d=-1,l=-1;return i.nodeIds.forEach((u,h)=>{e.has(u)&&(d<0&&(d=h),l=h)}),d<0?void 0:{first:d,last:l}});if(r.every((i,d)=>i?.first===0&&i.last===o[d].nodeIds.length-1))return t;let s=new Set,c=[],a=new Map;return o.forEach((i,d)=>{let l=r[d];if(l){let u=i.nodeIds.slice(l.first,l.last+1);for(let h of u)s.add(h);c.push({...i,nodeIds:u}),a.set(i.name,{first:l.first,nodeIds:u})}}),{...t,nodes:t.nodes.filter(i=>s.has(i.id)),edges:t.edges.filter(i=>s.has(i.from)&&s.has(i.to)),paths:c,pathVisits:t.pathVisits&&vn(t.pathVisits,o,r,new Map(t.nodes.map(i=>[i.id,i.name]))),anchorPaths:bt(t,a)}}function vn(t,n,e,o){let r=t.replay(),s=new Mt;return n.forEach((c,a)=>{let i=t.pathIndex($(c.name).name),d=e[a];c.nodeIds.forEach((l,u)=>{let h=o.get(l)??l,f=r(t.slot(h),i);f>=0&&d&&u>=d.first&&u<=d.last&&s.add(h,t.paths[i],t.samples[i],t.start[f],t.reversed[f]===1)})}),s.build()}function We(t,n,e){let o=t.nodes.map(r=>{if(!C(r))return r;let s=r.stable.start,c=s+r.length,[a,i]=K(r,n)?[Math.max(s,n.start),Math.min(c,n.end)]:c<=n.start?[Math.max(s,c-e),c]:[s,Math.min(c,s+e)];return a===s&&i===c?r:{...r,length:i-a,stable:{...r.stable,start:a},unclipped:{start:s,length:r.length}}});return o.some((r,s)=>r!==t.nodes[s])?{...t,nodes:o}:t}function Ft(t){return t.nodes.some(n=>n.unclipped)?{...t,nodes:t.nodes.map(({unclipped:n,...e})=>n&&e.stable?{...e,length:n.length,stable:{...e.stable,start:n.start}}:e)}:t}var gn=1,je=t=>`skips ${t??"the reference"} sequence (a deletion)`;function wn(t,n){return n.flatMap(e=>t[e]??[])}function Gt(t,n,e,o,r,s){let c=t[n.from],a=t[n.to];if(!(!c?.length||!a?.length))return r?kt(c,a,r,s?q(n):void 0):tt(c,a,Ct(n,s),e,o?wn(t,o):[])}function An(t){let n=ht(t.nodes.filter(C),e=>e.stable.refName);for(let e of n.values())e.sort((o,r)=>o.stable.start-r.stable.start);return n}function _n(t,n,e){let o=[];if(t)for(let r=xt(t,n);r<t.length;r++){let s=t[r];if(s.stable.start>=e)break;s.stable.start+s.length<=e&&o.push(s.id)}return o}function En(t,n,e,o){let{fromStrand:r,toStrand:s}=t;if(r===void 0||s===void 0)return!0;let c=r===(n.stable.strand??"+"),a=s===(e.stable.strand??"+");return o?c&&a:!c&&!a}function In(t,n,e,o){let r;for(let s of o(n))for(let c of o(e)){let a=s<=c,i=a?{start:s+n.length,end:c}:{start:c+e.length,end:s};En(t,n,e,a)&&(!r||Math.abs(i.end-i.start)<Math.abs(r.end-r.start))&&(r=i)}return r}var Ln=.01;function On(t,n){let e=new Map;for(let[o,r]of t){let s=r.flatMap(c=>{let a=n(c);return a.slice(1).map((i,d)=>({at:a[d],copy:i-a[d]}))});s.length&&e.set(o,s.sort((c,a)=>c.at-a.at))}return e}function Sn(t,n,e){if(!t)return!1;let o=yt(t.length,s=>t[s].at<n),r=[t[o-1],t[o]].filter(s=>s!==void 0).sort((s,c)=>Math.abs(s.at-n)-Math.abs(c.at-n))[0];return r!==void 0&&Math.abs(r.at-n)<=r.copy&&Math.abs(e-r.copy)<=r.copy*Ln}function Ue(t){let n=Ft(t),e=new Map(n.nodes.map(a=>[a.id,a])),o=An(n),r=vt(n),s=On(o,r),c=[];for(let a=0;a<n.edges.length;a++){let i=n.edges[a],d=e.get(i.from),l=e.get(i.to);if(!i.foldBridge&&d!==void 0&&l!==void 0&&C(d)&&C(l)&&d.stable.refName===l.stable.refName){let u=In(i,d,l,r),h=d.stable.refName,f=u?u.end-u.start:0;if(u&&f>=gn&&!Sn(s.get(h),u.start,f)){let{start:y,end:x}=u;c.push({edgeIndex:a,from:i.from,to:i.to,...i.fromStrand?{fromStrand:i.fromStrand}:{},...i.toStrand?{toStrand:i.toStrand}:{},refName:h,start:y,end:x,bp:f,bypassed:_n(o.get(h),y,x)})}}}return c}function Pn(t,n){let e=new Map,o=c=>{let a=c;for(;e.has(a);)a=e.get(a);return a!==c&&e.set(c,a),a},r=(c,a)=>{let[i,d]=[o(c),o(a)];return i!==d&&e.set(i,d),i!==d},s=new Set(n.map(c=>c.edgeIndex));return t.edges.forEach((c,a)=>{s.has(a)||r(c.from,c.to)}),new Set(n.filter(c=>!r(c.from,c.to)).map(c=>c.edgeIndex))}var qt=new WeakMap;function Ke(t,n,e=!0){let o=qt.get(n);o||(o=new Map,qt.set(n,o));let r=o.get(e);if(!r){let s=e?new Set:Pn(t,n);r={shown:n.filter(c=>!s.has(c.edgeIndex)),bypassed:new Map(n.map(c=>[c.edgeIndex,c.bypassed])),hidden:s},o.set(e,r)}return r}var Nn=26,Xn=4e4,Cn=8,kn=8,Bn=5.7,Tn=6,Rn=13,G=3,V=2;function U(t){return(t.length*Bn+Tn+G)/2}var k=(Rn+G)/2,$n=U("1 bp");function z(t,n,e){return{x0:n-t,x1:n+t,y0:e-k,y1:e+k}}function oo(t,n){return{x0:6,x1:6+et(t)+G,y0:n-8-G/2,y1:n+8+G/2}}function j(t,n,e){return e<n?t:Math.min(Math.max(t,n),e)}function zt(t){return String(t).replace(/\B(?=(\d{3})+$)/g,",")}function jt(t){let[n,e]=t>=999500?[t/1e6,"Mb"]:t>=1e3?[t/1e3,"kb"]:[];return n===void 0?`${t} bp`:`${+n.toFixed(n>=100?0:1)} ${e}`}function Dt(t){return`${jt(t)} del`}function Hn(t,n,e,o){let r=t[0],s=t[t.length-1],c=(n.x-(r.x0+s.x1)/2)*e,a=(n.y-(r.y0+s.y1)/2)*o,i=Math.hypot(c,a);return i===0?{x:0,y:-1}:{x:c/i,y:a/i}}function Wn(t,n){return Math.abs(n.x)*(t.x1-t.x0)/2+Math.abs(n.y)*(t.y1-t.y0)/2}function Yn(t,n){let e=(t.x1-t.x0)/2,o=(t.y1-t.y0)/2;return Math.min(n.x===0?1/0:e/Math.abs(n.x),n.y===0?1/0:o/Math.abs(n.y))}function Fn(t,n){let e=1/0,o=1/0,r=-1/0,s=-1/0;for(let c of t)for(let a of n[c]??[])e=Math.min(e,a.x),r=Math.max(r,a.x),o=Math.min(o,a.y),s=Math.max(s,a.y);return e===1/0?void 0:{minX:e,minY:o,maxX:r,maxY:s}}var qn=nt();function Gn(t,n){return qn(t,[n],()=>Object.entries(t).filter(([e,o])=>o.length>0&&n.has(e)).sort(([e],[o])=>n.get(o)-n.get(e)))}var Dn=nt();function Vn(t,n,e,o,r,s){let{scaleX:c,scaleY:a}=e;return Dn(t,[n,r,s,c,a,o],()=>{let i=[];for(let d of[...n].sort((l,u)=>u.bp-l.bp)){let l=Gt(t,d,e,d.bypassed,r?.[d.edgeIndex],s),u=l?Pt(l):void 0;if(l&&u){let{minX:h,minY:f,maxX:y,maxY:x}=Nt(l);i.push({deletion:d,curves:l,apex:u,extent:Math.max((y-h)*c,(x-f)*a)})}}return i})}function zn({nodePositions:t,nodeLengths:n,deletions:e,deletionRoutes:o,stranded:r=!1,alleleDeletions:s,axis:c,translateX:a,translateY:i,width:d,height:l,version:u=0}){let{scaleX:h,scaleY:f}=c,y=[],x=[];for(let{deletion:m,curves:M,apex:g,extent:v}of Vn(t,e,c,u,o,r))if(v>=Nn){let w=Dt(m.bp),_=U(w),I=z(_,0,0),E=g.x*h+a,A=g.y*f+i;if(E<0||E>d||A<0||A>l)continue;let N=v>=_*2/V,O=Hn(M,g,h,f),L=Wn(I,O)+kn,S=N?E:j(E+O.x*L,_,d-_),P=N?A:j(A+O.y*L,k,l-k),X=Math.hypot(S-E,P-A),T;if(X>0){let B={x:(S-E)/X,y:(P-A)/X},R=Yn(I,B);T={arcX:E,arcY:A,labelX:S-B.x*R,labelY:P-B.y*R}}y.push({label:{key:`del:${m.edgeIndex}`,text:w,x:S,y:P,kind:"deletion",leader:T},box:z(_,S,P)})}let p=new Set,b=[...s??[]].sort((m,M)=>M.bp-m.bp);for(let m of b){let M=Fn(m.nodeIds,t);if(!M)continue;let g=Math.max(M.minX*h+a,0),v=Math.min(M.maxX*h+a,d),w=Math.max(M.minY*f+i,0),_=Math.min(M.maxY*f+i,l);if(v<g||_<w)continue;let I=Math.max(v-g,_-w),E=Dt(m.bp),A=U(E);if(I>=A*2/V){for(let L of m.nodeIds)p.add(L);let N=j((g+v)/2,A,d-A),O=j((w+_)/2,k,l-k);y.push({label:{key:`alleledel:${m.nodeIds.join(",")}`,text:E,x:N,y:O,kind:"deletion"},box:z(A,N,O)})}}for(let[m,M]of Gn(t,n)){if(p.has(m))continue;let{x:g,y:v}=Ht(M),w=v*f+i;if(w+k<=0||w-k>=l)continue;let _=Z(M,h,f);if(_<$n*2/V)continue;let I=jt(n.get(m)),E=U(I);if(_>=E*2/V){let A=g*h+a;x.push({label:{key:`node:${m}`,text:I,x:A,y:w,kind:"node"},box:z(E,A,w)})}}return{deletions:y,nodes:x}}function jn(t,n){return Math.max(Cn,Math.floor(t*n/Xn))}function Vt(t,n,e=1/0){let o=[];for(let{label:r,box:s}of t){if(o.length>=e)break;n(s)&&o.push(r)}return o}function ro({reserved:t,take:n,...e}){n??=Rt(e,t);let{deletions:o,nodes:r}=zn(e);return[...Vt(o,n),...Vt(r,n,jn(e.width,e.height))]}function fo(t){let n=0;for(let e=0;e<t.length;e++)n=t.charCodeAt(e)+((n<<5)-n);return Math.abs(n%360)}function Un(t,n){return t*360/n}var Kn=.7,Jn=.5,Qn=16;function uo(t){return t>0&&t<=Qn}function Zn(t,n){return`hsl(${Un(t,n)}, ${Kn*100}%, ${Jn*100}%)`}function lo(t,n){return`hsl(0, 0%, ${n>1?25+45*t/(n-1):45}%)`}function te(t){let n=$(t).name.split("#"),e=n.join("#");if(n.length>=3&&pt(n[0])){let o=n.slice(2).join("#");return[o,o,e]}return[n[0],n.slice(0,2).join("#"),e]}function ne(t,n){let{start:e}=$(t);return n.map(o=>`${o} @${zt(e)}`)}function ho(t,n){let e=new Map;t.forEach((l,u)=>{e.has(l.name)||e.set(l.name,u)});let o=[...e].map(([l,u])=>({name:l,i:u})),r=o.map(l=>te(l.name)),s=l=>o.map((u,h)=>r[h][l]),c=l=>o.map((u,h)=>ne(u.name,r[h])[l]),a=[s(0),s(1),c(0),s(2),c(1),c(2)],d=a.find(l=>new Set(l).size===o.length)??a.at(-1);return o.map(({name:l,i:u},h)=>({name:l,label:d[h],color:n?.[u]??Zn(u,t.length)}))}function yo(t){let n=new Map;return new Map([...t].sort((e,o)=>e.label.localeCompare(o.label)).map(e=>{let o=(n.get(e.label)??0)+1;return n.set(e.label,o),[e.name,o>1?`${e.label} (${o})`:e.label]}))}var mo=[{value:"depth",label:"By depth",description:"Thicker the more paths carry a node, on the square root of its depth against the mean. A graph with one depth everywhere draws uniform."},{value:"frequency",label:"By frequency",description:"As wide as the share of haplotypes that pass a node, or its AF tag: full width at 100%, half at 50%, and wider where a haplotype passes it more than once."},{value:"uniform",label:"Uniform",description:"Every node the same thickness."}],ee=.3,st=3,oe=.05;function re(t){let n=0,e=0;for(let o of t.nodes)n+=o.depth*o.length,e+=o.length;return e>0?n/e:0}function se(t){return t.sample===void 0?mt(t.name)??t.name:`${t.sample}#${t.haplotype??0}`}function ce(t){return new Set((t.paths??[]).map(se)).size}function ae(t,n){return t.frequency??(n>0?t.depth/n:void 0)}function ie(t,n){return n==="depth"?re(t):n==="frequency"?ce(t):0}function fe(t){return Math.min(st,Math.max(oe,t))}function ue(t,n){let e=ae(t,n);return e===void 0?1:fe(e)}function le(t,n){return!(n>0)||!(t.depth>0)?1:Math.min(st,Math.max(ee,Math.sqrt(t.depth/n)))}function de(t,n,e,o){return n*(e==="depth"?le(t,o):e==="frequency"?ue(t,o):1)}function he(t,n){return t*(n==="uniform"?1:st)}var ye=4;function xe(t,n){return Math.max(t/n,ye)}function Mo(t,n,e,o,r=0){let s=t?ie(t,o):0,c=a=>r>0?xe(a,r)*r/2:a/2;return{maxHalfWidthPx:c(he(e,o)),halfWidthPx:a=>{let i=n?.get(a);return c(i?de(i,e,o,s):e)}}}var vo=[{value:"uniform",label:"Uniform",description:"Every link the same thickness."},{value:"walks",label:"By walks",description:"Thicker the more walks take a link, on the square root of its count against the busiest link in the cut. A graph without walks draws uniform."}],Ut=.5,pe=4;function go(t){let n=0;for(let e of t.edges)n=Math.max(n,e.pathIds?.length??0);return n}function wo(t,n,e){return e==="uniform"||n===0?1:Ut+(pe-Ut)*Math.sqrt(t/n)}export{gt as a,be as b,Nt as c,ve as d,ge as e,we as f,Ae as g,F as h,q as i,Xt as j,_e as k,Z as l,nt as m,Bt as n,mn as o,D as p,et as q,Rt as r,Le as s,Xe as t,Ce as u,ke as v,He as w,We as x,je as y,Gt as z,Ue as A,Ke as B,oo as C,zt as D,jt as E,ro as F,fo as G,Un as H,Kn as I,Jn as J,Qn as K,uo as L,Zn as M,lo as N,ho as O,yo as P,mo as Q,ie as R,de as S,xe as T,Mo as U,vo as V,go as W,wo as X};
2
+ //# sourceMappingURL=chunk-2VKDQF54.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@12.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-CPMHA4W5.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-JJV2GT2Z.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-HMXCN6PG.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-AB35TJST.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-HNNP5QUN.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-TLWXLNLY.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-OMQWCVOJ.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-ENBFQH7Y.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-EHEIS3TE.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-XWH4LB56.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-DAEEMZ74.js"],
4
+ "sourcesContent": ["// src/layout/rowSpacing.ts\nvar ROW_HEIGHT_PX = 20;\n\nexport {\n ROW_HEIGHT_PX\n};\n", "import {\n ROW_HEIGHT_PX\n} from \"./chunk-CPMHA4W5.js\";\n\n// src/util/geometry.ts\nfunction svgPath(points) {\n const round = (v) => Math.round(v * 100) / 100;\n return points.map((p, i) => `${i ? \"L\" : \"M\"}${round(p.x)},${round(p.y)}`).join(\"\");\n}\nfunction projectLine(x1, y1, x2, y2, distance) {\n const d = Math.hypot(y2 - y1, x2 - x1);\n if (d === 0) {\n return [x2, y2];\n }\n const vx = (x2 - x1) / d;\n const vy = (y2 - y1) / d;\n return [x2 + distance * vx, y2 + distance * vy];\n}\nfunction curvePointAt(c, t) {\n const u = 1 - t;\n const a = u * u * u;\n const b = 3 * u * u * t;\n const d = 3 * u * t * t;\n const e = t * t * t;\n return {\n x: a * c.x0 + b * c.cx0 + d * c.cx1 + e * c.x1,\n y: a * c.y0 + b * c.cy0 + d * c.cy1 + e * c.y1\n };\n}\nfunction curveMidpoint(curves) {\n const mid = curves[Math.floor(curves.length / 2)];\n return mid ? curvePointAt(mid, 0.5) : void 0;\n}\nfunction curveBounds(curves) {\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n for (const c of curves) {\n minX = Math.min(minX, c.x0, c.cx0, c.cx1, c.x1);\n maxX = Math.max(maxX, c.x0, c.cx0, c.cx1, c.x1);\n minY = Math.min(minY, c.y0, c.cy0, c.cy1, c.y1);\n maxY = Math.max(maxY, c.y0, c.cy0, c.cy1, c.y1);\n }\n return { minX, minY, maxX, maxY };\n}\nfunction subCurve(c, t0, t1) {\n const p0 = curvePointAt(c, t0);\n const p1 = curvePointAt(c, t1);\n const dt = (t1 - t0) / 3;\n const d0 = curveTangentAt(c, t0);\n const d1 = curveTangentAt(c, t1);\n return {\n x0: p0.x,\n y0: p0.y,\n cx0: p0.x + d0.x * dt,\n cy0: p0.y + d0.y * dt,\n cx1: p1.x - d1.x * dt,\n cy1: p1.y - d1.y * dt,\n x1: p1.x,\n y1: p1.y\n };\n}\nfunction curveTangentAt(c, t) {\n const u = 1 - t;\n const a = 3 * u * u;\n const b = 6 * u * t;\n const d = 3 * t * t;\n return {\n x: a * (c.cx0 - c.x0) + b * (c.cx1 - c.cx0) + d * (c.x1 - c.cx1),\n y: a * (c.cy0 - c.y0) + b * (c.cy1 - c.cy0) + d * (c.y1 - c.cy1)\n };\n}\nvar VISIBLE_SAMPLES = 32;\nfunction visibleStretches(curves, lengths, bounds, yToX) {\n const stretches = [];\n let start = 0;\n curves.forEach((c, k) => {\n const length = lengths[k];\n const pad = length / VISIBLE_SAMPLES;\n let last = curvePointAt(c, 0);\n for (let i = 1; i <= VISIBLE_SAMPLES; i++) {\n const next = curvePointAt(c, i / VISIBLE_SAMPLES);\n if (Math.max(last.x, next.x) + pad >= bounds.minX && Math.min(last.x, next.x) - pad <= bounds.maxX && Math.max(last.y, next.y) + pad / yToX >= bounds.minY && Math.min(last.y, next.y) - pad / yToX <= bounds.maxY) {\n const from = start + length * (i - 1) / VISIBLE_SAMPLES;\n const to = start + length * i / VISIBLE_SAMPLES;\n const prev = stretches.at(-1);\n if (prev && prev[1] >= from) {\n prev[1] = to;\n } else {\n stretches.push([from, to]);\n }\n }\n last = next;\n }\n start += length;\n });\n return stretches;\n}\nvar dashCurves = (curves, dashWorld, yToX = 1, bounds) => dashSpans(curves, dashWorld, yToX, bounds).map((d) => d.curves);\nfunction dashSpans(curves, dashWorld, yToX = 1, bounds) {\n const lengths = curves.map(\n (c) => Math.hypot(c.cx0 - c.x0, (c.cy0 - c.y0) * yToX) + Math.hypot(c.cx1 - c.cx0, (c.cy1 - c.cy0) * yToX) + Math.hypot(c.x1 - c.cx1, (c.y1 - c.cy1) * yToX)\n );\n const total = lengths.reduce((a, b) => a + b, 0);\n const periods = Math.round(total / dashWorld);\n const spans = Math.max(3, periods % 2 ? periods : periods + 1);\n const stretches = bounds ? visibleStretches(curves, lengths, bounds, yToX) : void 0;\n let seen = 0;\n const out = [];\n for (let i = 0; i < spans; i += 2) {\n const from = i / spans * total;\n const to = (i + 1) / spans * total;\n if (stretches) {\n while (seen < stretches.length && stretches[seen][1] < from) {\n seen++;\n }\n if (seen === stretches.length) {\n break;\n }\n if (stretches[seen][0] > to) {\n continue;\n }\n }\n const dash = [];\n const along = [];\n let start = 0;\n curves.forEach((c, k) => {\n const length = lengths[k];\n const end = start + length;\n if (length > 0 && end > from && start < to) {\n const t0 = Math.max(0, (from - start) / length);\n const t1 = Math.min(1, (to - start) / length);\n dash.push(subCurve(c, t0, t1));\n along.push((k + t0) / curves.length, (k + t1) / curves.length);\n }\n start = end;\n });\n if (dash.length) {\n out.push({\n curves: dash,\n startAlong: along[0],\n endAlong: along.at(-1)\n });\n }\n }\n return out;\n}\nvar slideAt = (from, to, along) => ({\n dx: from.dx + (to.dx - from.dx) * along,\n dy: from.dy + (to.dy - from.dy) * along\n});\nfunction slideCurves(curves, fromDx, fromDy, toDx, toDy) {\n const n = curves.length;\n const out = new Array(n);\n for (let i = 0; i < n; i++) {\n const c = curves[i];\n const a = i / n;\n const b = (i + 1) / n;\n const adx = fromDx + (toDx - fromDx) * a;\n const ady = fromDy + (toDy - fromDy) * a;\n const bdx = fromDx + (toDx - fromDx) * b;\n const bdy = fromDy + (toDy - fromDy) * b;\n out[i] = {\n x0: c.x0 + adx,\n y0: c.y0 + ady,\n cx0: c.cx0 + adx,\n cy0: c.cy0 + ady,\n cx1: c.cx1 + bdx,\n cy1: c.cy1 + bdy,\n x1: c.x1 + bdx,\n y1: c.y1 + bdy\n };\n }\n return out;\n}\nfunction translateCurves(curves, dx, dy) {\n const out = new Array(curves.length);\n for (let i = 0; i < curves.length; i++) {\n const c = curves[i];\n out[i] = {\n x0: c.x0 + dx,\n y0: c.y0 + dy,\n cx0: c.cx0 + dx,\n cy0: c.cy0 + dy,\n cx1: c.cx1 + dx,\n cy1: c.cy1 + dy,\n x1: c.x1 + dx,\n y1: c.y1 + dy\n };\n }\n return out;\n}\nfunction attachment(segments, side) {\n const last = segments.length - 1;\n return side === \"end\" ? { at: segments[last], inward: segments[last - 1] } : { at: segments[0], inward: segments[1] };\n}\nvar TANGENT_SPAN_FACTOR = 0.5;\nvar MAX_TANGENT = 80;\nfunction ownStrand(id) {\n return id.endsWith(\"-\") ? \"-\" : \"+\";\n}\nfunction strandSides(edge) {\n const own = (id, strand) => (strand ?? ownStrand(id)) === ownStrand(id);\n return {\n from: own(edge.from, edge.fromStrand) ? \"end\" : \"start\",\n to: own(edge.to, edge.toStrand) ? \"start\" : \"end\"\n };\n}\nfunction spanOf(segments) {\n let min = Infinity;\n let max = -Infinity;\n for (const s of segments) {\n min = Math.min(min, s.x);\n max = Math.max(max, s.x);\n }\n return { min, max };\n}\nfunction distanceToSpan(x, span) {\n return Math.max(0, span.min - x, x - span.max);\n}\nfunction facingSide(segments, other, tieBreak) {\n const startGap = distanceToSpan(segments[0].x, other);\n const endGap = distanceToSpan(segments[segments.length - 1].x, other);\n return startGap === endGap ? tieBreak : startGap < endGap ? \"start\" : \"end\";\n}\nfunction facingSides(fromSegments, toSegments) {\n return {\n from: facingSide(fromSegments, spanOf(toSegments), \"end\"),\n to: facingSide(toSegments, spanOf(fromSegments), \"start\")\n };\n}\nvar laidSides = /* @__PURE__ */ new WeakMap();\nfunction heldFacingSides(fromSegments, toSegments) {\n let byTo = laidSides.get(fromSegments);\n if (!byTo) {\n byTo = /* @__PURE__ */ new WeakMap();\n laidSides.set(fromSegments, byTo);\n }\n let sides = byTo.get(toSegments);\n if (!sides) {\n sides = facingSides(fromSegments, toSegments);\n byTo.set(toSegments, sides);\n }\n return sides;\n}\nvar APEX_FRACTION = 0.75;\nvar BOW_CLEARANCE = 1.15;\nvar ALONG_FRACTION = 0.35;\nvar MAX_ROW_BOW_PX = 3 * ROW_HEIGHT_PX;\nfunction bowAround(p1x, p1y, p2x, p2y, toward, maxBow) {\n const chord = Math.hypot(p2x - p1x, p2y - p1y);\n const ux = chord === 0 ? 1 : (p2x - p1x) / chord;\n const uy = chord === 0 ? 0 : (p2y - p1y) / chord;\n let reach = 0;\n let minAlong = Infinity;\n let maxAlong = -Infinity;\n for (const p of toward) {\n const dx = p.x - p1x;\n const dy = p.y - p1y;\n const perp = dx * -uy + dy * ux;\n if (Math.abs(perp) > Math.abs(reach)) {\n reach = perp;\n }\n const along = dx * ux + dy * uy;\n minAlong = Math.min(minAlong, along);\n maxAlong = Math.max(maxAlong, along);\n }\n const span = toward.length ? maxAlong - minAlong : 0;\n const uncapped = Math.max(\n Math.abs(reach) * BOW_CLEARANCE / APEX_FRACTION,\n span * ALONG_FRACTION\n );\n const size = maxBow === void 0 ? uncapped : Math.min(uncapped, maxBow);\n return reach < 0 ? -size : size;\n}\nfunction yToXOf({ scaleX, scaleY }) {\n return scaleY / scaleX;\n}\nvar PATH_RIBBON_SPACING_PX = 3;\nfunction drawnDirection(a, b, yToX) {\n const dx = b.x - a.x;\n const dy = (b.y - a.y) * yToX;\n const len = Math.hypot(dx, dy);\n return len === 0 ? void 0 : { x: dx / len, y: dy / len };\n}\nfunction pathRibbonOffsets(fromSegments, toSegments, count, axis) {\n const yToX = yToXOf(axis);\n const spacing = PATH_RIBBON_SPACING_PX / Math.max(axis.scaleX, 1e-6);\n const dir = drawnDirection(\n fromSegments[fromSegments.length - 1],\n toSegments[0],\n yToX\n ) ?? drawnDirection(fromSegments[0], fromSegments.at(-1), yToX) ?? drawnDirection(toSegments[0], toSegments.at(-1), yToX) ?? { x: 1, y: 0 };\n const offsets = [];\n for (let i = 0; i < count; i++) {\n const distance = (i - (count - 1) / 2) * spacing;\n offsets.push({ x: -dir.y * distance, y: dir.x * distance / yToX });\n }\n return offsets;\n}\nfunction scaleYOf(points, yToX) {\n return points.map((p) => ({ x: p.x, y: p.y * yToX }));\n}\nfunction unscaleYOf(curves, yToX) {\n for (const c of curves) {\n c.y0 /= yToX;\n c.cy0 /= yToX;\n c.cy1 /= yToX;\n c.y1 /= yToX;\n }\n return curves;\n}\nfunction polylinePx(points, scaleX, scaleY) {\n let total = 0;\n for (let i = 1; i < points.length; i++) {\n const a = points[i - 1];\n const b = points[i];\n total += Math.hypot((b.x - a.x) * scaleX, (b.y - a.y) * scaleY);\n }\n return total;\n}\nvar SELF_LOOP_MIN_PX = 12;\nvar SELF_LOOP_MAX_PX = 40;\nfunction selfLoopReach(segments, scale) {\n const nodePx = polylinePx(segments, scale, scale);\n const reachPx = Math.min(\n SELF_LOOP_MAX_PX,\n Math.max(SELF_LOOP_MIN_PX, nodePx / 2)\n );\n return reachPx / Math.max(scale, Number.EPSILON);\n}\nfunction selfLinkOf(edge) {\n if (edge.from !== edge.to) {\n return false;\n }\n return edge.fromStrand && edge.toStrand && edge.fromStrand !== edge.toStrand ? edge.fromStrand === \"+\" ? \"end\" : \"start\" : true;\n}\nfunction edgeJoinOf(edge, stranded = false) {\n const self = selfLinkOf(edge);\n if (!stranded) {\n return self;\n }\n const sides = strandSides(edge);\n return self === false ? sides : sides.from === sides.to ? sides.from : true;\n}\nfunction hairpinCurves(attach, reach) {\n const { at, inward } = attach;\n const dx = inward ? at.x - inward.x : 1;\n const dy = inward ? at.y - inward.y : 0;\n const len = Math.hypot(dx, dy) || 1;\n const ux = dx / len;\n const uy = dy / len;\n const px = at.x;\n const py = at.y;\n const nearX = px + ux * reach / 3;\n const nearY = py + uy * reach / 3;\n const apexX = px + ux * reach;\n const apexY = py + uy * reach;\n const sideX = -uy * reach / 2;\n const sideY = ux * reach / 2;\n return [\n {\n x0: px,\n y0: py,\n cx0: nearX,\n cy0: nearY,\n cx1: apexX + sideX,\n cy1: apexY + sideY,\n x1: apexX,\n y1: apexY\n },\n {\n x0: apexX,\n y0: apexY,\n cx0: apexX - sideX,\n cy0: apexY - sideY,\n cx1: nearX,\n cy1: nearY,\n x1: px,\n y1: py\n }\n ];\n}\nfunction computeEdgeCurves(fromSegments, toSegments, join, axis, bypassed = [], maxBowIn) {\n const scale = axis.scaleX;\n const yToX = yToXOf(axis);\n const maxBow = maxBowIn ?? (axis.pixelRows ? MAX_ROW_BOW_PX : void 0);\n if (join === false) {\n join = heldFacingSides(fromSegments, toSegments);\n }\n if (yToX !== 1) {\n return unscaleYOf(\n computeEdgeCurves(\n scaleYOf(fromSegments, yToX),\n scaleYOf(toSegments, yToX),\n join,\n { scaleX: scale, scaleY: scale },\n scaleYOf(bypassed, yToX),\n // the cap is a y measure and the body works in x units, so it converts\n // with everything else that crosses this boundary\n maxBow === void 0 ? void 0 : maxBow * yToX\n ),\n yToX\n );\n }\n if (typeof join === \"string\") {\n return hairpinCurves(\n attachment(fromSegments, join),\n selfLoopReach(fromSegments, scale)\n );\n }\n const loop = join === true;\n const sides = join === true ? { from: \"end\", to: \"start\" } : join;\n const fromAttach = attachment(fromSegments, sides.from);\n const toAttach = attachment(toSegments, sides.to);\n const fromEnd = fromAttach.at;\n const toStart = toAttach.at;\n const p1x = fromEnd.x;\n const p1y = fromEnd.y;\n const p2x = toStart.x;\n const p2y = toStart.y;\n if (loop) {\n let segDirX = 1;\n let segDirY = 0;\n if (fromAttach.inward) {\n const dx = fromEnd.x - fromAttach.inward.x;\n const dy = fromEnd.y - fromAttach.inward.y;\n const len = Math.hypot(dx, dy);\n if (len > 0) {\n segDirX = dx / len;\n segDirY = dy / len;\n }\n }\n const ext = selfLoopReach(fromSegments, scale);\n const perpX = -segDirY;\n const perpY = segDirX;\n const midX = (fromEnd.x + toStart.x) / 2 + perpX * ext;\n const midY = (fromEnd.y + toStart.y) / 2 + perpY * ext;\n const cp1x = p1x + segDirX * ext;\n const cp1y = p1y + segDirY * ext;\n const cp2x = p2x - segDirX * ext;\n const cp2y = p2y - segDirY * ext;\n return [\n {\n x0: p1x,\n y0: p1y,\n cx0: cp1x,\n cy0: cp1y,\n cx1: cp1x + perpX * ext,\n cy1: cp1y + perpY * ext,\n x1: midX,\n y1: midY\n },\n {\n x0: midX,\n y0: midY,\n cx0: cp2x + perpX * ext,\n cy0: cp2y + perpY * ext,\n cx1: cp2x,\n cy1: cp2y,\n x1: p2x,\n y1: p2y\n }\n ];\n } else {\n const fromPrev = fromAttach.inward ?? {\n x: fromEnd.x - (toStart.x - fromEnd.x),\n y: fromEnd.y - (toStart.y - fromEnd.y)\n };\n const toNext = toAttach.inward ?? {\n x: toStart.x - (fromEnd.x - toStart.x),\n y: toStart.y - (fromEnd.y - toStart.y)\n };\n const dist = Math.hypot(p2x - p1x, p2y - p1y);\n const tangentProj = (prev, at, towardX, towardY) => {\n const dx = at.x - prev.x;\n const dy = at.y - prev.y;\n const len = Math.hypot(dx, dy);\n const along = len === 0 ? 0 : (towardX * dx + towardY * dy) / len;\n return Math.max(\n 0,\n Math.min(dist * TANGENT_SPAN_FACTOR, MAX_TANGENT, along * 0.5)\n );\n };\n const towardToX = toStart.x - fromEnd.x;\n const towardToY = toStart.y - fromEnd.y;\n const [cx1, cy1] = projectLine(\n fromPrev.x,\n fromPrev.y,\n fromEnd.x,\n fromEnd.y,\n tangentProj(fromPrev, fromEnd, towardToX, towardToY)\n );\n const [cx2, cy2] = projectLine(\n toNext.x,\n toNext.y,\n toStart.x,\n toStart.y,\n tangentProj(toNext, toStart, -towardToX, -towardToY)\n );\n const bulge = bypassed.length ? bowAround(p1x, p1y, p2x, p2y, bypassed, maxBow) : 0;\n const chordLen = dist === 0 ? 1 : dist;\n const ux = (p2x - p1x) / chordLen;\n const uy = (p2y - p1y) / chordLen;\n const bulgeX = -uy * bulge;\n const bulgeY = ux * bulge;\n const spreadX = ux * Math.abs(bulge);\n const spreadY = uy * Math.abs(bulge);\n return [\n {\n x0: p1x,\n y0: p1y,\n cx0: cx1 + bulgeX - spreadX,\n cy0: cy1 + bulgeY - spreadY,\n cx1: cx2 + bulgeX + spreadX,\n cy1: cy2 + bulgeY + spreadY,\n x1: p2x,\n y1: p2y\n }\n ];\n }\n}\nfunction nearerEnd(segments, to) {\n const start = segments[0];\n const end = segments.at(-1);\n return Math.hypot(start.x - to.x, start.y - to.y) < Math.hypot(end.x - to.x, end.y - to.y) ? \"start\" : \"end\";\n}\nfunction routedEdgeCurves(fromSegments, toSegments, route, sides) {\n const fromAttach = attachment(\n fromSegments,\n sides?.from ?? nearerEnd(fromSegments, route[0])\n );\n const toAttach = attachment(\n toSegments,\n sides?.to ?? nearerEnd(toSegments, route.at(-1))\n );\n const points = [fromAttach.at, ...route, toAttach.at];\n const tangent = (i) => {\n const p = points[i];\n const span = (q) => Math.hypot(q.x - p.x, q.y - p.y);\n const along = (inward, next) => {\n const len = inward ? span(inward) : 0;\n const reach = span(next);\n return len === 0 ? { x: next.x - p.x, y: next.y - p.y } : {\n x: (p.x - inward.x) / len * reach,\n y: (p.y - inward.y) / len * reach\n };\n };\n if (i === 0) {\n return along(fromAttach.inward, points[1]);\n }\n if (i === points.length - 1) {\n const out = along(toAttach.inward, points[i - 1]);\n return { x: -out.x, y: -out.y };\n }\n return {\n x: (points[i + 1].x - points[i - 1].x) / 2,\n y: (points[i + 1].y - points[i - 1].y) / 2\n };\n };\n const curves = [];\n for (let i = 0; i < points.length - 1; i++) {\n const a = points[i];\n const b = points[i + 1];\n const ta = tangent(i);\n const tb = tangent(i + 1);\n curves.push({\n x0: a.x,\n y0: a.y,\n cx0: a.x + ta.x / 3,\n cy0: a.y + ta.y / 3,\n cx1: b.x - tb.x / 3,\n cy1: b.y - tb.y / 3,\n x1: b.x,\n y1: b.y\n });\n }\n return curves;\n}\n\nexport {\n svgPath,\n projectLine,\n curvePointAt,\n curveMidpoint,\n curveBounds,\n dashCurves,\n dashSpans,\n slideAt,\n slideCurves,\n translateCurves,\n ownStrand,\n strandSides,\n bowAround,\n yToXOf,\n PATH_RIBBON_SPACING_PX,\n pathRibbonOffsets,\n polylinePx,\n selfLinkOf,\n edgeJoinOf,\n computeEdgeCurves,\n routedEdgeCurves\n};\n", "// src/util/weakMemo.ts\nfunction weakMemo() {\n const cache = /* @__PURE__ */ new WeakMap();\n return (key, deps, compute) => {\n const hit = cache.get(key);\n if (hit?.deps.length === deps.length && hit.deps.every((d, i) => Object.is(d, deps[i]))) {\n return hit.value;\n }\n const value = compute();\n cache.set(key, { deps, value });\n return value;\n };\n}\n\nexport {\n weakMemo\n};\n", "// src/overlayLabels.ts\nvar LABEL_PX = 11;\nvar LABEL_CHAR_PX = 6.2;\nvar LABEL_PAD = 4;\nfunction labelWidth(text) {\n return text.length * LABEL_CHAR_PX + LABEL_PAD * 2;\n}\nfunction overlaps(a, b) {\n return a.x0 < b.x1 && a.x1 > b.x0 && a.y0 < b.y1 && a.y1 > b.y0;\n}\nfunction offFrame(box, frame) {\n return box.x1 <= 0 || box.x0 >= frame.width || box.y1 <= 0 || box.y0 >= frame.height;\n}\nfunction insideFrame(box, frame) {\n return box.x0 >= 0 && box.x1 <= frame.width && box.y0 >= 0 && box.y1 <= frame.height;\n}\nfunction occupancy(frame, reserved = []) {\n const placed = [...reserved];\n return (box) => {\n if (offFrame(box, frame) || placed.some((p) => overlaps(p, box))) {\n return false;\n }\n placed.push(box);\n return true;\n };\n}\nfunction placeLabels(candidates, frame, take) {\n const out = [];\n const row = LABEL_PX + LABEL_PAD * 2;\n const place = (c, text) => {\n const w = labelWidth(text);\n const direction = c.y > frame.height / 2 ? -1 : 1;\n for (let tries = 0; tries <= (c.stack ?? 0); tries++) {\n const y = c.y + direction * tries * row;\n const box = {\n x0: c.x - w / 2,\n x1: c.x + w / 2,\n y0: y - LABEL_PX - LABEL_PAD,\n y1: y + LABEL_PAD\n };\n if (offFrame(box, frame)) {\n return void 0;\n }\n if (insideFrame(box, frame) && (c.fits?.(box) ?? true) && take(box)) {\n return { ...c, text, y, w };\n }\n }\n return void 0;\n };\n for (const c of candidates) {\n const placed = place(c, c.text) ?? (c.fallback === void 0 ? void 0 : place(c, c.fallback));\n if (placed) {\n out.push(placed);\n }\n }\n return out;\n}\n\nexport {\n LABEL_PX,\n LABEL_CHAR_PX,\n LABEL_PAD,\n labelWidth,\n overlaps,\n occupancy,\n placeLabels\n};\n", "import {\n ownStrand,\n strandSides\n} from \"./chunk-JJV2GT2Z.js\";\nimport {\n pushTo\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n isBackbone\n} from \"./chunk-RJWPJCIB.js\";\n\n// src/layout/mergeRuns.ts\nfunction flip(strand) {\n return strand === \"+\" ? \"-\" : \"+\";\n}\nfunction mergeRuns(graph, alone = /* @__PURE__ */ new Set()) {\n const sides = graph.edges.map(strandSides);\n const at = /* @__PURE__ */ new Map();\n const attach = (id, side, ei) => {\n pushTo(at, `${id}|${side}`, ei);\n };\n graph.edges.forEach((edge, ei) => {\n attach(edge.from, sides[ei].from, ei);\n attach(edge.to, sides[ei].to, ei);\n });\n const joinAfter = (a) => {\n const out = at.get(`${a}|end`);\n if (out?.length !== 1) {\n return void 0;\n }\n const ei = out[0];\n const edge = graph.edges[ei];\n return edge.from === a && edge.to !== a && !alone.has(a) && !alone.has(edge.to) && sides[ei].from === \"end\" && sides[ei].to === \"start\" && at.get(`${edge.to}|start`)?.length === 1 ? ei : void 0;\n };\n const joined = /* @__PURE__ */ new Set();\n const runOf = /* @__PURE__ */ new Map();\n const runs = /* @__PURE__ */ new Map();\n for (const node of graph.nodes) {\n const into = at.get(`${node.id}|start`);\n const pred = into?.length === 1 ? graph.edges[into[0]].from : void 0;\n if (runOf.has(node.id) || pred !== void 0 && joinAfter(pred) === into[0]) {\n continue;\n }\n const run = [node.id];\n for (; ; ) {\n const ei = joinAfter(run.at(-1));\n const next = ei === void 0 ? void 0 : graph.edges[ei].to;\n if (next === void 0 || runOf.has(next)) {\n break;\n }\n joined.add(ei);\n run.push(next);\n }\n for (const id of run) {\n runOf.set(id, node.id);\n }\n if (run.length > 1) {\n runs.set(node.id, run);\n }\n }\n for (const node of graph.nodes) {\n if (!runOf.has(node.id)) {\n runOf.set(node.id, node.id);\n }\n }\n const byId = new Map(graph.nodes.map((n) => [n.id, n]));\n const nodes = [];\n for (const node of graph.nodes) {\n if (runOf.get(node.id) !== node.id) {\n continue;\n }\n const run = runs.get(node.id);\n if (!run) {\n nodes.push(node);\n continue;\n }\n const members = run.map((id) => byId.get(id));\n const backbone = members.filter(isBackbone);\n const first = backbone.length ? backbone.reduce((a, b) => a.stable.start <= b.stable.start ? a : b) : members[0];\n nodes.push({\n id: node.id,\n name: node.name,\n length: members.reduce((sum, n) => sum + n.length, 0),\n depth: node.depth,\n stable: first.stable\n });\n }\n const seen = /* @__PURE__ */ new Set();\n const edges = [];\n graph.edges.forEach((edge, ei) => {\n const from = runOf.get(edge.from);\n const to = runOf.get(edge.to);\n const side = sides[ei];\n const key = `${from}|${side.from}>${to}|${side.to}`;\n if (joined.has(ei) || seen.has(key)) {\n return;\n }\n seen.add(key);\n edges.push({\n from,\n to,\n ...side.from === \"start\" ? { fromStrand: flip(ownStrand(from)) } : {},\n ...side.to === \"end\" ? { toStrand: flip(ownStrand(to)) } : {}\n });\n });\n return {\n graph: { ...graph, nodes, edges, paths: void 0, pathVisits: void 0 },\n runs\n };\n}\nfunction splitRuns(positions, runs, weightOf) {\n const out = { ...positions };\n for (const [id, members] of runs) {\n const line = positions[id];\n if (!line?.length) {\n continue;\n }\n delete out[id];\n const arc = arcPrefix(line);\n const total = arc.at(-1);\n const weights = members.map((m) => Math.max(weightOf(m), 0));\n const weightSum = weights.reduce((a, b) => a + b, 0);\n let from = 0;\n members.forEach((member, k) => {\n const share = weightSum ? weights[k] / weightSum * total : total / members.length;\n const to = k === members.length - 1 ? total : from + share;\n out[member] = slice(line, arc, from, to);\n from = to;\n });\n }\n return out;\n}\nfunction polylineSlice(line, from, to) {\n if (line.length === 0) {\n return [];\n }\n const arc = arcPrefix(line);\n const total = arc.at(-1);\n return slice(line, arc, from * total, to * total);\n}\nfunction polylineMidpoint(line) {\n const arc = arcPrefix(line);\n return pointAt(line, arc, arc.at(-1) / 2);\n}\nfunction arcPrefix(line) {\n const arc = [0];\n for (let i = 1; i < line.length; i++) {\n arc.push(\n arc[i - 1] + Math.hypot(line[i].x - line[i - 1].x, line[i].y - line[i - 1].y)\n );\n }\n return arc;\n}\nfunction firstReaching(arc, s) {\n let lo = 0;\n let hi = arc.length;\n while (lo < hi) {\n const mid = lo + hi >> 1;\n if (arc[mid] < s) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n return lo;\n}\nfunction pointAt(line, arc, s) {\n if (s <= 0) {\n return { ...line[0] };\n }\n const i = firstReaching(arc, s);\n if (i >= arc.length) {\n return { ...line.at(-1) };\n }\n const span = arc[i] - arc[i - 1];\n const t = span > 0 ? (s - arc[i - 1]) / span : 0;\n const a = line[i - 1];\n const b = line[i];\n return { x: a.x + (b.x - a.x) * t, y: a.y + (b.y - a.y) * t };\n}\nfunction slice(line, arc, from, to) {\n const points = [pointAt(line, arc, from)];\n for (let i = firstReaching(arc, from); i < line.length && arc[i] < to; i++) {\n if (arc[i] > from) {\n points.push({ ...line[i] });\n }\n }\n points.push(pointAt(line, arc, to));\n return points;\n}\n\nexport {\n mergeRuns,\n splitRuns,\n polylineSlice,\n polylineMidpoint\n};\n", "import {\n pathOrigin,\n trimOrigins\n} from \"./chunk-3YBP46PB.js\";\nimport {\n PathVisitsBuilder\n} from \"./chunk-ZPZ7GNBT.js\";\nimport {\n isBackbone,\n overlapsWindow\n} from \"./chunk-RJWPJCIB.js\";\n\n// src/layout/trimToWindow.ts\nfunction trimToWindow(graph, window) {\n const inWindow = new Set(\n graph.nodes.filter((n) => isBackbone(n) && overlapsWindow(n, window)).map((n) => n.id)\n );\n const paths = graph.paths ?? [];\n if (inWindow.size === 0 || paths.length === 0) {\n return graph;\n }\n const spans = paths.map((path) => {\n let first = -1;\n let last = -1;\n path.nodeIds.forEach((id, i) => {\n if (inWindow.has(id)) {\n if (first < 0) {\n first = i;\n }\n last = i;\n }\n });\n return first < 0 ? void 0 : { first, last };\n });\n if (spans.every(\n (span, i) => span?.first === 0 && span.last === paths[i].nodeIds.length - 1\n )) {\n return graph;\n }\n const kept = /* @__PURE__ */ new Set();\n const trimmed = [];\n const stretches = /* @__PURE__ */ new Map();\n paths.forEach((path, i) => {\n const span = spans[i];\n if (span) {\n const nodeIds = path.nodeIds.slice(span.first, span.last + 1);\n for (const id of nodeIds) {\n kept.add(id);\n }\n trimmed.push({ ...path, nodeIds });\n stretches.set(path.name, { first: span.first, nodeIds });\n }\n });\n return {\n ...graph,\n nodes: graph.nodes.filter((n) => kept.has(n.id)),\n edges: graph.edges.filter((e) => kept.has(e.from) && kept.has(e.to)),\n paths: trimmed,\n pathVisits: graph.pathVisits && trimVisits(\n graph.pathVisits,\n paths,\n spans,\n new Map(graph.nodes.map((n) => [n.id, n.name]))\n ),\n anchorPaths: trimOrigins(graph, stretches)\n };\n}\nfunction trimVisits(visits, paths, spans, nameOf) {\n const next = visits.replay();\n const out = new PathVisitsBuilder();\n paths.forEach((path, p) => {\n const origin = visits.pathIndex(pathOrigin(path.name).name);\n const span = spans[p];\n path.nodeIds.forEach((id, i) => {\n const segment = nameOf.get(id) ?? id;\n const at = next(visits.slot(segment), origin);\n if (at >= 0 && span && i >= span.first && i <= span.last) {\n out.add(\n segment,\n visits.paths[origin],\n visits.samples[origin],\n visits.start[at],\n visits.reversed[at] === 1\n );\n }\n });\n });\n return out.build();\n}\nfunction clipToWindow(graph, window, reachBp) {\n const nodes = graph.nodes.map((node) => {\n if (!isBackbone(node)) {\n return node;\n }\n const from = node.stable.start;\n const to = from + node.length;\n const [start, end] = overlapsWindow(node, window) ? [Math.max(from, window.start), Math.min(to, window.end)] : to <= window.start ? [Math.max(from, to - reachBp), to] : [from, Math.min(to, from + reachBp)];\n return start === from && end === to ? node : {\n ...node,\n length: end - start,\n stable: { ...node.stable, start },\n unclipped: { start: from, length: node.length }\n };\n });\n return nodes.some((node, i) => node !== graph.nodes[i]) ? { ...graph, nodes } : graph;\n}\nfunction unclipped(graph) {\n return graph.nodes.some((n) => n.unclipped) ? {\n ...graph,\n nodes: graph.nodes.map(\n ({ unclipped: full, ...node }) => full && node.stable ? {\n ...node,\n length: full.length,\n stable: { ...node.stable, start: full.start }\n } : node\n )\n } : graph;\n}\n\nexport {\n trimToWindow,\n clipToWindow,\n unclipped\n};\n", "import {\n unclipped\n} from \"./chunk-TLWXLNLY.js\";\nimport {\n referenceVisitStarts\n} from \"./chunk-3YBP46PB.js\";\nimport {\n computeEdgeCurves,\n edgeJoinOf,\n routedEdgeCurves,\n strandSides\n} from \"./chunk-JJV2GT2Z.js\";\nimport {\n groupBy\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n firstNodeAtOrAfter,\n isBackbone\n} from \"./chunk-RJWPJCIB.js\";\nimport {\n partitionPoint\n} from \"./chunk-HOAIOEI7.js\";\n\n// src/deletionEdges.ts\nvar MIN_DELETION_BP = 1;\nvar deletionKey = (reference) => `skips ${reference ?? \"the reference\"} sequence (a deletion)`;\nfunction bypassedPoints(nodePositions, bypassed) {\n return bypassed.flatMap((id) => nodePositions[id] ?? []);\n}\nfunction edgeCurvesOf(nodePositions, edge, axis, bypassed, route, stranded) {\n const from = nodePositions[edge.from];\n const to = nodePositions[edge.to];\n if (!from?.length || !to?.length) {\n return void 0;\n }\n return route ? routedEdgeCurves(\n from,\n to,\n route,\n stranded ? strandSides(edge) : void 0\n ) : computeEdgeCurves(\n from,\n to,\n edgeJoinOf(edge, stranded),\n axis,\n bypassed ? bypassedPoints(nodePositions, bypassed) : []\n );\n}\nfunction backboneBySequence(graph) {\n const bySequence = groupBy(\n graph.nodes.filter(isBackbone),\n (node) => node.stable.refName\n );\n for (const list of bySequence.values()) {\n list.sort((a, b) => a.stable.start - b.stable.start);\n }\n return bySequence;\n}\nfunction bypassedNodes(nodes, start, end) {\n const bypassed = [];\n if (nodes) {\n for (let i = firstNodeAtOrAfter(nodes, start); i < nodes.length; i++) {\n const node = nodes[i];\n if (node.stable.start >= end) {\n break;\n }\n if (node.stable.start + node.length <= end) {\n bypassed.push(node.id);\n }\n }\n }\n return bypassed;\n}\nfunction skipsBetween(edge, from, to, forwards) {\n const { fromStrand, toStrand } = edge;\n if (fromStrand === void 0 || toStrand === void 0) {\n return true;\n }\n const leavesRight = fromStrand === (from.stable.strand ?? \"+\");\n const arrivesLeft = toStrand === (to.stable.strand ?? \"+\");\n return forwards ? leavesRight && arrivesLeft : !leavesRight && !arrivesLeft;\n}\nfunction skippedSpan(edge, from, to, startsOf) {\n let best;\n for (const a of startsOf(from)) {\n for (const b of startsOf(to)) {\n const forwards = a <= b;\n const span = forwards ? { start: a + from.length, end: b } : { start: b + to.length, end: a };\n if (skipsBetween(edge, from, to, forwards) && (!best || Math.abs(span.end - span.start) < Math.abs(best.end - best.start))) {\n best = span;\n }\n }\n }\n return best;\n}\nvar COPY_SWITCH_SHARE = 0.01;\nfunction repeatCopies(backbone, startsOf) {\n const bySequence = /* @__PURE__ */ new Map();\n for (const [refName, nodes] of backbone) {\n const copies = nodes.flatMap((node) => {\n const starts = startsOf(node);\n return starts.slice(1).map((next, i) => ({\n at: starts[i],\n copy: next - starts[i]\n }));\n });\n if (copies.length) {\n bySequence.set(\n refName,\n copies.sort((a, b) => a.at - b.at)\n );\n }\n }\n return bySequence;\n}\nfunction switchesCopy(copies, start, bp) {\n if (!copies) {\n return false;\n }\n const i = partitionPoint(copies.length, (k) => copies[k].at < start);\n const near = [copies[i - 1], copies[i]].filter((c) => c !== void 0).sort((a, b) => Math.abs(a.at - start) - Math.abs(b.at - start))[0];\n return near !== void 0 && Math.abs(near.at - start) <= near.copy && Math.abs(bp - near.copy) <= near.copy * COPY_SWITCH_SHARE;\n}\nfunction deletionEdges(cut) {\n const graph = unclipped(cut);\n const byId = new Map(graph.nodes.map((n) => [n.id, n]));\n const backbone = backboneBySequence(graph);\n const startsOf = referenceVisitStarts(graph);\n const copies = repeatCopies(backbone, startsOf);\n const found = [];\n for (let edgeIndex = 0; edgeIndex < graph.edges.length; edgeIndex++) {\n const edge = graph.edges[edgeIndex];\n const from = byId.get(edge.from);\n const to = byId.get(edge.to);\n if (!edge.foldBridge && from !== void 0 && to !== void 0 && isBackbone(from) && isBackbone(to) && from.stable.refName === to.stable.refName) {\n const span = skippedSpan(edge, from, to, startsOf);\n const refName = from.stable.refName;\n const bp = span ? span.end - span.start : 0;\n if (span && bp >= MIN_DELETION_BP && !switchesCopy(copies.get(refName), span.start, bp)) {\n const { start, end } = span;\n found.push({\n edgeIndex,\n from: edge.from,\n to: edge.to,\n ...edge.fromStrand ? { fromStrand: edge.fromStrand } : {},\n ...edge.toStrand ? { toStrand: edge.toStrand } : {},\n refName,\n start,\n end,\n bp,\n bypassed: bypassedNodes(backbone.get(refName), start, end)\n });\n }\n }\n }\n return found;\n}\nfunction closableDeletions(graph, deletions) {\n const parent = /* @__PURE__ */ new Map();\n const root = (id) => {\n let r = id;\n while (parent.has(r)) {\n r = parent.get(r);\n }\n if (r !== id) {\n parent.set(id, r);\n }\n return r;\n };\n const join = (a, b) => {\n const [ra, rb] = [root(a), root(b)];\n if (ra !== rb) {\n parent.set(ra, rb);\n }\n return ra !== rb;\n };\n const candidates = new Set(deletions.map((d) => d.edgeIndex));\n graph.edges.forEach((e, ei) => {\n if (!candidates.has(ei)) {\n join(e.from, e.to);\n }\n });\n return new Set(\n deletions.filter((d) => !join(d.from, d.to)).map((d) => d.edgeIndex)\n );\n}\nvar drawings = /* @__PURE__ */ new WeakMap();\nfunction deletionDrawing(graph, deletions, show = true) {\n let byShow = drawings.get(deletions);\n if (!byShow) {\n byShow = /* @__PURE__ */ new Map();\n drawings.set(deletions, byShow);\n }\n let drawing = byShow.get(show);\n if (!drawing) {\n const hidden = show ? /* @__PURE__ */ new Set() : closableDeletions(graph, deletions);\n drawing = {\n shown: deletions.filter((d) => !hidden.has(d.edgeIndex)),\n bypassed: new Map(deletions.map((d) => [d.edgeIndex, d.bypassed])),\n hidden\n };\n byShow.set(show, drawing);\n }\n return drawing;\n}\n\nexport {\n deletionKey,\n edgeCurvesOf,\n deletionEdges,\n closableDeletions,\n deletionDrawing\n};\n", "import {\n weakMemo\n} from \"./chunk-HMXCN6PG.js\";\nimport {\n labelWidth,\n occupancy\n} from \"./chunk-AB35TJST.js\";\nimport {\n polylineMidpoint\n} from \"./chunk-HNNP5QUN.js\";\nimport {\n edgeCurvesOf\n} from \"./chunk-OMQWCVOJ.js\";\nimport {\n curveBounds,\n curveMidpoint,\n polylinePx\n} from \"./chunk-JJV2GT2Z.js\";\n\n// src/graphLabels.ts\nvar MIN_DELETION_LABEL_PX = 26;\nvar PX_PER_NODE_LABEL = 4e4;\nvar MIN_NODE_LABELS = 8;\nvar LEADER_GAP_PX = 8;\nvar LABEL_CHAR_PX = 5.7;\nvar LABEL_PAD_PX = 6;\nvar LABEL_HEIGHT_PX = 13;\nvar LABEL_GAP_PX = 3;\nvar MAX_LABEL_OVERHANG = 2;\nfunction labelHalfWidth(text) {\n return (text.length * LABEL_CHAR_PX + LABEL_PAD_PX + LABEL_GAP_PX) / 2;\n}\nvar LABEL_HALF_HEIGHT = (LABEL_HEIGHT_PX + LABEL_GAP_PX) / 2;\nvar MIN_LABEL_HALF_WIDTH = labelHalfWidth(\"1 bp\");\nfunction boxAt(halfW, x, y) {\n return {\n x0: x - halfW,\n x1: x + halfW,\n y0: y - LABEL_HALF_HEIGHT,\n y1: y + LABEL_HALF_HEIGHT\n };\n}\nfunction rowLabelBox(text, screenY) {\n return {\n x0: 6,\n x1: 6 + labelWidth(text) + LABEL_GAP_PX,\n y0: screenY - 8 - LABEL_GAP_PX / 2,\n y1: screenY + 8 + LABEL_GAP_PX / 2\n };\n}\nfunction clamp(v, lo, hi) {\n return hi < lo ? v : Math.min(Math.max(v, lo), hi);\n}\nfunction groupDigits(n) {\n return String(n).replace(/\\B(?=(\\d{3})+$)/g, \",\");\n}\nfunction formatBp(bp) {\n const [value, unit] = bp >= 999500 ? [bp / 1e6, \"Mb\"] : bp >= 1e3 ? [bp / 1e3, \"kb\"] : [];\n if (value === void 0) {\n return `${bp} bp`;\n }\n return `${+value.toFixed(value >= 100 ? 0 : 1)} ${unit}`;\n}\nfunction deletionText(bp) {\n return `${formatBp(bp)} del`;\n}\nfunction arcOutward(curves, apex, scaleX, scaleY) {\n const first = curves[0];\n const last = curves[curves.length - 1];\n const dx = (apex.x - (first.x0 + last.x1) / 2) * scaleX;\n const dy = (apex.y - (first.y0 + last.y1) / 2) * scaleY;\n const len = Math.hypot(dx, dy);\n return len === 0 ? { x: 0, y: -1 } : { x: dx / len, y: dy / len };\n}\nfunction boxSupport(box, dir) {\n return Math.abs(dir.x) * (box.x1 - box.x0) / 2 + Math.abs(dir.y) * (box.y1 - box.y0) / 2;\n}\nfunction boxRayCrossing(box, dir) {\n const halfW = (box.x1 - box.x0) / 2;\n const halfH = (box.y1 - box.y0) / 2;\n return Math.min(\n dir.x === 0 ? Infinity : halfW / Math.abs(dir.x),\n dir.y === 0 ? Infinity : halfH / Math.abs(dir.y)\n );\n}\nfunction runBounds(nodeIds, nodePositions) {\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n for (const id of nodeIds) {\n for (const p of nodePositions[id] ?? []) {\n minX = Math.min(minX, p.x);\n maxX = Math.max(maxX, p.x);\n minY = Math.min(minY, p.y);\n maxY = Math.max(maxY, p.y);\n }\n }\n return minX === Infinity ? void 0 : { minX, minY, maxX, maxY };\n}\nvar nodeOrderCache = weakMemo();\nfunction labelOrder(nodePositions, nodeLengths) {\n return nodeOrderCache(\n nodePositions,\n [nodeLengths],\n () => Object.entries(nodePositions).filter(([id, segments]) => segments.length > 0 && nodeLengths.has(id)).sort(([a], [b]) => nodeLengths.get(b) - nodeLengths.get(a))\n );\n}\nvar arcCache = weakMemo();\nfunction arcPlacements(nodePositions, deletions, axis, version, routes, stranded) {\n const { scaleX, scaleY } = axis;\n return arcCache(\n nodePositions,\n [deletions, routes, stranded, scaleX, scaleY, version],\n () => {\n const arcs = [];\n for (const deletion of [...deletions].sort((a, b) => b.bp - a.bp)) {\n const curves = edgeCurvesOf(\n nodePositions,\n deletion,\n axis,\n deletion.bypassed,\n routes?.[deletion.edgeIndex],\n stranded\n );\n const apex = curves ? curveMidpoint(curves) : void 0;\n if (curves && apex) {\n const { minX, minY, maxX, maxY } = curveBounds(curves);\n arcs.push({\n deletion,\n curves,\n apex,\n // in screen px, so the two axes' units cannot be added by accident\n extent: Math.max((maxX - minX) * scaleX, (maxY - minY) * scaleY)\n });\n }\n }\n return arcs;\n }\n );\n}\nfunction sizeLabelCandidates({\n nodePositions,\n nodeLengths,\n deletions,\n deletionRoutes,\n stranded = false,\n alleleDeletions,\n axis,\n translateX,\n translateY,\n width,\n height,\n version = 0\n}) {\n const { scaleX, scaleY } = axis;\n const deletionCandidates = [];\n const nodeCandidates = [];\n for (const { deletion, curves, apex, extent } of arcPlacements(\n nodePositions,\n deletions,\n axis,\n version,\n deletionRoutes,\n stranded\n )) {\n if (extent >= MIN_DELETION_LABEL_PX) {\n const text = deletionText(deletion.bp);\n const halfW = labelHalfWidth(text);\n const box = boxAt(halfW, 0, 0);\n const arcX = apex.x * scaleX + translateX;\n const arcY = apex.y * scaleY + translateY;\n if (arcX < 0 || arcX > width || arcY < 0 || arcY > height) {\n continue;\n }\n const fits = extent >= halfW * 2 / MAX_LABEL_OVERHANG;\n const bow = arcOutward(curves, apex, scaleX, scaleY);\n const offset = boxSupport(box, bow) + LEADER_GAP_PX;\n const x = fits ? arcX : clamp(arcX + bow.x * offset, halfW, width - halfW);\n const y = fits ? arcY : clamp(\n arcY + bow.y * offset,\n LABEL_HALF_HEIGHT,\n height - LABEL_HALF_HEIGHT\n );\n const away = Math.hypot(x - arcX, y - arcY);\n let leader;\n if (away > 0) {\n const dir = { x: (x - arcX) / away, y: (y - arcY) / away };\n const crossing = boxRayCrossing(box, dir);\n leader = {\n arcX,\n arcY,\n labelX: x - dir.x * crossing,\n labelY: y - dir.y * crossing\n };\n }\n deletionCandidates.push({\n label: {\n key: `del:${deletion.edgeIndex}`,\n text,\n x,\n y,\n kind: \"deletion\",\n leader\n },\n box: boxAt(halfW, x, y)\n });\n }\n }\n const labelledByDeletion = /* @__PURE__ */ new Set();\n const alleleRuns = [...alleleDeletions ?? []].sort((a, b) => b.bp - a.bp);\n for (const run of alleleRuns) {\n const drawn = runBounds(run.nodeIds, nodePositions);\n if (!drawn) {\n continue;\n }\n const shownLeft = Math.max(drawn.minX * scaleX + translateX, 0);\n const shownRight = Math.min(drawn.maxX * scaleX + translateX, width);\n const shownTop = Math.max(drawn.minY * scaleY + translateY, 0);\n const shownBottom = Math.min(drawn.maxY * scaleY + translateY, height);\n if (shownRight < shownLeft || shownBottom < shownTop) {\n continue;\n }\n const extent = Math.max(shownRight - shownLeft, shownBottom - shownTop);\n const text = deletionText(run.bp);\n const halfW = labelHalfWidth(text);\n if (extent >= halfW * 2 / MAX_LABEL_OVERHANG) {\n for (const id of run.nodeIds) {\n labelledByDeletion.add(id);\n }\n const x = clamp((shownLeft + shownRight) / 2, halfW, width - halfW);\n const y = clamp(\n (shownTop + shownBottom) / 2,\n LABEL_HALF_HEIGHT,\n height - LABEL_HALF_HEIGHT\n );\n deletionCandidates.push({\n label: {\n key: `alleledel:${run.nodeIds.join(\",\")}`,\n text,\n x,\n y,\n kind: \"deletion\"\n },\n box: boxAt(halfW, x, y)\n });\n }\n }\n for (const [id, segments] of labelOrder(nodePositions, nodeLengths)) {\n if (labelledByDeletion.has(id)) {\n continue;\n }\n const { x, y } = polylineMidpoint(segments);\n const screenY = y * scaleY + translateY;\n if (screenY + LABEL_HALF_HEIGHT <= 0 || screenY - LABEL_HALF_HEIGHT >= height) {\n continue;\n }\n const drawn = polylinePx(segments, scaleX, scaleY);\n if (drawn < MIN_LABEL_HALF_WIDTH * 2 / MAX_LABEL_OVERHANG) {\n continue;\n }\n const text = formatBp(nodeLengths.get(id));\n const halfW = labelHalfWidth(text);\n if (drawn >= halfW * 2 / MAX_LABEL_OVERHANG) {\n const screenX = x * scaleX + translateX;\n nodeCandidates.push({\n label: {\n key: `node:${id}`,\n text,\n x: screenX,\n y: screenY,\n kind: \"node\"\n },\n box: boxAt(halfW, screenX, screenY)\n });\n }\n }\n return { deletions: deletionCandidates, nodes: nodeCandidates };\n}\nfunction nodeLabelBudget(width, height) {\n return Math.max(\n MIN_NODE_LABELS,\n Math.floor(width * height / PX_PER_NODE_LABEL)\n );\n}\nfunction placeSizeLabels(candidates, take, budget = Infinity) {\n const labels = [];\n for (const { label, box } of candidates) {\n if (labels.length >= budget) {\n break;\n }\n if (take(box)) {\n labels.push(label);\n }\n }\n return labels;\n}\nfunction graphLabels({\n reserved,\n take,\n ...args\n}) {\n take ??= occupancy(args, reserved);\n const { deletions, nodes } = sizeLabelCandidates(args);\n return [\n ...placeSizeLabels(deletions, take),\n ...placeSizeLabels(nodes, take, nodeLabelBudget(args.width, args.height))\n ];\n}\n\nexport {\n rowLabelBox,\n groupDigits,\n formatBp,\n sizeLabelCandidates,\n nodeLabelBudget,\n placeSizeLabels,\n graphLabels\n};\n", "import {\n groupDigits\n} from \"./chunk-ENBFQH7Y.js\";\nimport {\n pathOrigin\n} from \"./chunk-3YBP46PB.js\";\nimport {\n isGenericSample\n} from \"./chunk-2JL2JVZ2.js\";\n\n// src/pathColors.ts\nfunction nameHue(name) {\n let hash = 0;\n for (let i = 0; i < name.length; i++) {\n hash = name.charCodeAt(i) + ((hash << 5) - hash);\n }\n return Math.abs(hash % 360);\n}\nfunction pathHueAt(index, count) {\n return index * 360 / count;\n}\nvar PATH_SATURATION = 0.7;\nvar PATH_LIGHTNESS = 0.5;\nvar MAX_PATH_COLORS = 16;\nfunction pathColorsLegible(pathCount) {\n return pathCount > 0 && pathCount <= MAX_PATH_COLORS;\n}\nfunction pathCssColor(index, count) {\n return `hsl(${pathHueAt(index, count)}, ${PATH_SATURATION * 100}%, ${PATH_LIGHTNESS * 100}%)`;\n}\nfunction pathGreyCssColor(index, count) {\n const lightness = count > 1 ? 25 + 45 * index / (count - 1) : 45;\n return `hsl(0, 0%, ${lightness}%)`;\n}\nfunction labelTiers(name) {\n const parts = pathOrigin(name).name.split(\"#\");\n const full = parts.join(\"#\");\n if (parts.length >= 3 && isGenericSample(parts[0])) {\n const contig = parts.slice(2).join(\"#\");\n return [contig, contig, full];\n }\n return [parts[0], parts.slice(0, 2).join(\"#\"), full];\n}\nfunction offsetTiers(name, tiers) {\n const { start } = pathOrigin(name);\n return tiers.map((t) => `${t} @${groupDigits(start)}`);\n}\nfunction pathLegend(paths, colors) {\n const firstOf = /* @__PURE__ */ new Map();\n paths.forEach((path, i) => {\n if (!firstOf.has(path.name)) {\n firstOf.set(path.name, i);\n }\n });\n const entries = [...firstOf].map(([name2, i]) => ({ name: name2, i }));\n const named = entries.map((e) => labelTiers(e.name));\n const name = (t) => entries.map((_, k) => named[k][t]);\n const offset = (t) => entries.map((e, k) => offsetTiers(e.name, named[k])[t]);\n const candidates = [\n name(0),\n name(1),\n offset(0),\n name(2),\n offset(1),\n offset(2)\n ];\n const distinct = candidates.find(\n (labels2) => new Set(labels2).size === entries.length\n );\n const labels = distinct ?? candidates.at(-1);\n return entries.map(({ name: name2, i }, k) => ({\n name: name2,\n label: labels[k],\n color: colors?.[i] ?? pathCssColor(i, paths.length)\n }));\n}\nfunction walkLabelsOf(entries) {\n const seen = /* @__PURE__ */ new Map();\n return new Map(\n [...entries].sort((a, b) => a.label.localeCompare(b.label)).map((e) => {\n const n = (seen.get(e.label) ?? 0) + 1;\n seen.set(e.label, n);\n return [e.name, n > 1 ? `${e.label} (${n})` : e.label];\n })\n );\n}\n\nexport {\n nameHue,\n pathHueAt,\n PATH_SATURATION,\n PATH_LIGHTNESS,\n MAX_PATH_COLORS,\n pathColorsLegible,\n pathCssColor,\n pathGreyCssColor,\n pathLegend,\n walkLabelsOf\n};\n", "import {\n panSNHaplotype\n} from \"./chunk-2JL2JVZ2.js\";\n\n// src/nodeWidths.ts\nvar NODE_WIDTHS = [\n {\n value: \"depth\",\n label: \"By depth\",\n description: \"Thicker the more paths carry a node, on the square root of its depth against the mean. A graph with one depth everywhere draws uniform.\"\n },\n {\n value: \"frequency\",\n label: \"By frequency\",\n description: \"As wide as the share of haplotypes that pass a node, or its AF tag: full width at 100%, half at 50%, and wider where a haplotype passes it more than once.\"\n },\n {\n value: \"uniform\",\n label: \"Uniform\",\n description: \"Every node the same thickness.\"\n }\n];\nvar MIN_FACTOR = 0.3;\nvar MAX_FACTOR = 3;\nvar MIN_FREQUENCY_FACTOR = 0.05;\nfunction meanDepth(graph) {\n let weighted = 0;\n let length = 0;\n for (const node of graph.nodes) {\n weighted += node.depth * node.length;\n length += node.length;\n }\n return length > 0 ? weighted / length : 0;\n}\nfunction haplotypeOf(path) {\n return path.sample === void 0 ? panSNHaplotype(path.name) ?? path.name : `${path.sample}#${path.haplotype ?? 0}`;\n}\nfunction haplotypeCount(graph) {\n return new Set((graph.paths ?? []).map(haplotypeOf)).size;\n}\nfunction nodeFrequency(node, haplotypes) {\n return node.frequency ?? (haplotypes > 0 ? node.depth / haplotypes : void 0);\n}\nfunction withFrequencies(graph, frequencies) {\n if (!frequencies) {\n return graph;\n }\n const nodes = graph.nodes.map((node) => {\n const frequency = frequencies[node.name];\n return frequency === void 0 ? node : { ...node, frequency };\n });\n return { ...graph, nodes };\n}\nfunction widthNorm(graph, nodeWidth) {\n return nodeWidth === \"depth\" ? meanDepth(graph) : nodeWidth === \"frequency\" ? haplotypeCount(graph) : 0;\n}\nfunction frequencyFactor(f) {\n return Math.min(MAX_FACTOR, Math.max(MIN_FREQUENCY_FACTOR, f));\n}\nfunction frequencyWidthFactor(node, haplotypes) {\n const f = nodeFrequency(node, haplotypes);\n return f === void 0 ? 1 : frequencyFactor(f);\n}\nfunction frequencyKey(contigThickness) {\n return [1, 0.5, 0.1].map((f) => ({\n label: `${f * 100}%`,\n widthPx: contigThickness * frequencyFactor(f)\n }));\n}\nfunction depthWidthFactor(node, mean) {\n if (!(mean > 0) || !(node.depth > 0)) {\n return 1;\n }\n return Math.min(\n MAX_FACTOR,\n Math.max(MIN_FACTOR, Math.sqrt(node.depth / mean))\n );\n}\nfunction nodeWidthPx(node, contigThickness, nodeWidth, norm) {\n return contigThickness * (nodeWidth === \"depth\" ? depthWidthFactor(node, norm) : nodeWidth === \"frequency\" ? frequencyWidthFactor(node, norm) : 1);\n}\nfunction maxNodeWidthPx(contigThickness, nodeWidth) {\n return contigThickness * (nodeWidth === \"uniform\" ? 1 : MAX_FACTOR);\n}\nvar MIN_WALK_LANE_PX = 4;\nfunction walkLaneWidthPx(width, lanes) {\n return Math.max(width / lanes, MIN_WALK_LANE_PX);\n}\nfunction nodeInk(graph, nodeById, contigThickness, nodeWidth, lanes = 0) {\n const norm = graph ? widthNorm(graph, nodeWidth) : 0;\n const reach = (width) => lanes > 0 ? walkLaneWidthPx(width, lanes) * lanes / 2 : width / 2;\n return {\n maxHalfWidthPx: reach(maxNodeWidthPx(contigThickness, nodeWidth)),\n halfWidthPx: (id) => {\n const node = nodeById?.get(id);\n return reach(\n node ? nodeWidthPx(node, contigThickness, nodeWidth, norm) : contigThickness\n );\n }\n };\n}\n\nexport {\n NODE_WIDTHS,\n meanDepth,\n haplotypeCount,\n nodeFrequency,\n withFrequencies,\n widthNorm,\n frequencyKey,\n nodeWidthPx,\n maxNodeWidthPx,\n walkLaneWidthPx,\n nodeInk\n};\n", "// src/edgeWidths.ts\nvar EDGE_WIDTHS = [\n {\n value: \"uniform\",\n label: \"Uniform\",\n description: \"Every link the same thickness.\"\n },\n {\n value: \"walks\",\n label: \"By walks\",\n description: \"Thicker the more walks take a link, on the square root of its count against the busiest link in the cut. A graph without walks draws uniform.\"\n }\n];\nvar MIN_FACTOR = 0.5;\nvar MAX_FACTOR = 4;\nfunction busiestEdge(graph) {\n let most = 0;\n for (const edge of graph.edges) {\n most = Math.max(most, edge.pathIds?.length ?? 0);\n }\n return most;\n}\nfunction edgeWidthFactor(walks, busiest, edgeWidth) {\n if (edgeWidth === \"uniform\" || busiest === 0) {\n return 1;\n }\n return MIN_FACTOR + (MAX_FACTOR - MIN_FACTOR) * Math.sqrt(walks / busiest);\n}\n\nexport {\n EDGE_WIDTHS,\n busiestEdge,\n edgeWidthFactor\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["ROW_HEIGHT_PX", "svgPath", "points", "round", "v", "p", "i", "projectLine", "x1", "y1", "x2", "y2", "distance", "d", "vx", "vy", "curvePointAt", "c", "t", "u", "a", "b", "e", "curveMidpoint", "curves", "mid", "curveBounds", "minX", "minY", "maxX", "maxY", "subCurve", "t0", "t1", "p0", "p1", "dt", "d0", "curveTangentAt", "d1", "VISIBLE_SAMPLES", "visibleStretches", "lengths", "bounds", "yToX", "stretches", "start", "k", "length", "pad", "last", "next", "from", "to", "prev", "dashSpans", "curves", "dashWorld", "yToX", "bounds", "lengths", "c", "total", "a", "b", "periods", "spans", "stretches", "visibleStretches", "seen", "out", "i", "from", "to", "dash", "along", "start", "k", "length", "end", "t0", "t1", "subCurve", "slideAt", "slideCurves", "fromDx", "fromDy", "toDx", "toDy", "n", "adx", "ady", "bdx", "bdy", "translateCurves", "dx", "dy", "attachment", "segments", "side", "last", "TANGENT_SPAN_FACTOR", "MAX_TANGENT", "ownStrand", "id", "strandSides", "edge", "own", "strand", "spanOf", "min", "max", "s", "distanceToSpan", "x", "span", "facingSide", "other", "tieBreak", "startGap", "endGap", "facingSides", "fromSegments", "toSegments", "laidSides", "heldFacingSides", "byTo", "sides", "APEX_FRACTION", "BOW_CLEARANCE", "ALONG_FRACTION", "MAX_ROW_BOW_PX", "ROW_HEIGHT_PX", "bowAround", "p1x", "p1y", "p2x", "p2y", "toward", "maxBow", "chord", "ux", "uy", "reach", "minAlong", "maxAlong", "p", "perp", "uncapped", "size", "yToXOf", "scaleX", "scaleY", "PATH_RIBBON_SPACING_PX", "drawnDirection", "len", "pathRibbonOffsets", "count", "axis", "spacing", "dir", "offsets", "distance", "scaleYOf", "points", "unscaleYOf", "polylinePx", "SELF_LOOP_MIN_PX", "SELF_LOOP_MAX_PX", "selfLoopReach", "scale", "nodePx", "selfLinkOf", "edgeJoinOf", "stranded", "self", "hairpinCurves", "attach", "at", "inward", "px", "py", "nearX", "nearY", "apexX", "apexY", "sideX", "sideY", "computeEdgeCurves", "join", "bypassed", "maxBowIn", "loop", "fromAttach", "toAttach", "fromEnd", "toStart", "segDirX", "segDirY", "ext", "perpX", "perpY", "midX", "midY", "cp1x", "cp1y", "cp2x", "cp2y", "fromPrev", "toNext", "dist", "tangentProj", "prev", "towardX", "towardY", "towardToX", "towardToY", "cx1", "cy1", "projectLine", "cx2", "cy2", "bulge", "chordLen", "bulgeX", "bulgeY", "spreadX", "spreadY", "nearerEnd", "routedEdgeCurves", "route", "tangent", "q", "next", "ta", "tb", "weakMemo", "cache", "key", "deps", "compute", "hit", "d", "i", "value", "LABEL_PX", "LABEL_CHAR_PX", "LABEL_PAD", "labelWidth", "text", "overlaps", "a", "b", "offFrame", "box", "frame", "insideFrame", "occupancy", "reserved", "placed", "p", "placeLabels", "candidates", "take", "out", "row", "place", "w", "direction", "tries", "y", "flip", "strand", "mergeRuns", "graph", "alone", "sides", "strandSides", "at", "attach", "id", "side", "ei", "pushTo", "edge", "joinAfter", "a", "out", "joined", "runOf", "runs", "node", "into", "pred", "run", "next", "byId", "n", "nodes", "members", "backbone", "isBackbone", "first", "b", "sum", "seen", "edges", "from", "to", "key", "ownStrand", "splitRuns", "positions", "weightOf", "line", "arc", "arcPrefix", "total", "weights", "m", "weightSum", "member", "k", "share", "slice", "polylineSlice", "polylineMidpoint", "pointAt", "i", "firstReaching", "s", "lo", "hi", "mid", "span", "t", "points", "trimToWindow", "graph", "window", "inWindow", "n", "isBackbone", "overlapsWindow", "paths", "spans", "path", "first", "last", "id", "i", "span", "kept", "trimmed", "stretches", "nodeIds", "e", "trimVisits", "trimOrigins", "visits", "nameOf", "next", "out", "PathVisitsBuilder", "p", "origin", "pathOrigin", "segment", "at", "clipToWindow", "reachBp", "nodes", "node", "from", "to", "start", "end", "unclipped", "full", "MIN_DELETION_BP", "deletionKey", "reference", "bypassedPoints", "nodePositions", "bypassed", "id", "edgeCurvesOf", "edge", "axis", "route", "stranded", "from", "to", "routedEdgeCurves", "strandSides", "computeEdgeCurves", "edgeJoinOf", "backboneBySequence", "graph", "bySequence", "groupBy", "isBackbone", "node", "list", "a", "b", "bypassedNodes", "nodes", "start", "end", "i", "firstNodeAtOrAfter", "skipsBetween", "forwards", "fromStrand", "toStrand", "leavesRight", "arrivesLeft", "skippedSpan", "startsOf", "best", "span", "COPY_SWITCH_SHARE", "repeatCopies", "backbone", "refName", "copies", "starts", "next", "switchesCopy", "bp", "partitionPoint", "k", "near", "c", "deletionEdges", "cut", "unclipped", "byId", "n", "referenceVisitStarts", "found", "edgeIndex", "closableDeletions", "deletions", "parent", "root", "r", "join", "ra", "rb", "candidates", "d", "e", "ei", "drawings", "deletionDrawing", "show", "byShow", "drawing", "hidden", "MIN_DELETION_LABEL_PX", "PX_PER_NODE_LABEL", "MIN_NODE_LABELS", "LEADER_GAP_PX", "LABEL_CHAR_PX", "LABEL_PAD_PX", "LABEL_HEIGHT_PX", "LABEL_GAP_PX", "MAX_LABEL_OVERHANG", "labelHalfWidth", "text", "LABEL_HALF_HEIGHT", "MIN_LABEL_HALF_WIDTH", "boxAt", "halfW", "x", "y", "rowLabelBox", "screenY", "labelWidth", "clamp", "v", "lo", "hi", "groupDigits", "n", "formatBp", "bp", "value", "unit", "deletionText", "arcOutward", "curves", "apex", "scaleX", "scaleY", "first", "last", "dx", "dy", "len", "boxSupport", "box", "dir", "boxRayCrossing", "halfH", "runBounds", "nodeIds", "nodePositions", "minX", "minY", "maxX", "maxY", "id", "p", "nodeOrderCache", "weakMemo", "labelOrder", "nodeLengths", "segments", "a", "b", "arcCache", "arcPlacements", "deletions", "axis", "version", "routes", "stranded", "arcs", "deletion", "edgeCurvesOf", "curveMidpoint", "curveBounds", "sizeLabelCandidates", "deletionRoutes", "alleleDeletions", "translateX", "translateY", "width", "height", "deletionCandidates", "nodeCandidates", "extent", "arcX", "arcY", "fits", "bow", "offset", "away", "leader", "crossing", "labelledByDeletion", "alleleRuns", "run", "drawn", "shownLeft", "shownRight", "shownTop", "shownBottom", "polylineMidpoint", "polylinePx", "screenX", "nodeLabelBudget", "placeSizeLabels", "candidates", "take", "budget", "labels", "label", "graphLabels", "reserved", "args", "occupancy", "nodes", "nameHue", "name", "hash", "i", "pathHueAt", "index", "count", "PATH_SATURATION", "PATH_LIGHTNESS", "MAX_PATH_COLORS", "pathColorsLegible", "pathCount", "pathCssColor", "pathGreyCssColor", "labelTiers", "parts", "pathOrigin", "full", "isGenericSample", "contig", "offsetTiers", "tiers", "start", "t", "groupDigits", "pathLegend", "paths", "colors", "firstOf", "path", "entries", "name2", "named", "e", "_", "k", "offset", "candidates", "labels", "labels2", "walkLabelsOf", "seen", "a", "b", "n", "NODE_WIDTHS", "MIN_FACTOR", "MAX_FACTOR", "MIN_FREQUENCY_FACTOR", "meanDepth", "graph", "weighted", "length", "node", "haplotypeOf", "path", "panSNHaplotype", "haplotypeCount", "nodeFrequency", "haplotypes", "widthNorm", "graph", "nodeWidth", "meanDepth", "haplotypeCount", "frequencyFactor", "f", "MAX_FACTOR", "MIN_FREQUENCY_FACTOR", "frequencyWidthFactor", "node", "haplotypes", "nodeFrequency", "depthWidthFactor", "node", "mean", "MAX_FACTOR", "MIN_FACTOR", "nodeWidthPx", "contigThickness", "nodeWidth", "norm", "frequencyWidthFactor", "maxNodeWidthPx", "MIN_WALK_LANE_PX", "walkLaneWidthPx", "width", "lanes", "nodeInk", "graph", "nodeById", "widthNorm", "reach", "id", "EDGE_WIDTHS", "MIN_FACTOR", "MAX_FACTOR", "busiestEdge", "graph", "most", "edge", "edgeWidthFactor", "walks", "busiest", "edgeWidth"]
7
+ }
@@ -0,0 +1,2 @@
1
+ var e=JBrowseExports["@jbrowse/core/util/tracks"],t=o=>e!=null&&o in Object(e)?e[o]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+o+"' from '@jbrowse/core/util/tracks' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:o});var s=t("getConfAssemblyNamesOrNone");var r=t("getTrackName");var n=t("makeIndexType");var a=t("toTrackConfigEntry");var c=e&&e.__esModule?e.default:e;export{s as a,r as b,n as c,a as d};
2
+ //# sourceMappingURL=chunk-3VGXCEMQ.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["host:@jbrowse/core/util/tracks"],
4
- "sourcesContent": ["const host = JBrowseExports[\"@jbrowse/core/util/tracks\"]\nconst read = name =>\n host != null && name in Object(host)\n ? host[name]\n : Object.assign(\n function () {\n throw new Error(\n \"This JBrowse does not provide '\" + name + \"' from '\" + \"@jbrowse/core/util/tracks\" + \"' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse\",\n )\n },\n { jbrowseHostMissing: name },\n )\nexport const UNKNOWN = /* @__PURE__ */ read(\"UNKNOWN\")\nexport const UNSUPPORTED = /* @__PURE__ */ read(\"UNSUPPORTED\")\nexport const addAdapterGuesser = /* @__PURE__ */ read(\"addAdapterGuesser\")\nexport const addTrackTypeGuesser = /* @__PURE__ */ read(\"addTrackTypeGuesser\")\nexport const allSessionTracks = /* @__PURE__ */ read(\"allSessionTracks\")\nexport const annotationTrackIds = /* @__PURE__ */ read(\"annotationTrackIds\")\nexport const canonicalAssemblyNames = /* @__PURE__ */ read(\"canonicalAssemblyNames\")\nexport const clearFileFromCache = /* @__PURE__ */ read(\"clearFileFromCache\")\nexport const ensureFileHandleReady = /* @__PURE__ */ read(\"ensureFileHandleReady\")\nexport const expandLooseTrackConfig = /* @__PURE__ */ read(\"expandLooseTrackConfig\")\nexport const filterTracks = /* @__PURE__ */ read(\"filterTracks\")\nexport const findFileHandleIds = /* @__PURE__ */ read(\"findFileHandleIds\")\nexport const generateUnknownTrackConf = /* @__PURE__ */ read(\"generateUnknownTrackConf\")\nexport const generateUnsupportedTrackConf = /* @__PURE__ */ read(\"generateUnsupportedTrackConf\")\nexport const getBlob = /* @__PURE__ */ read(\"getBlob\")\nexport const getBlobMap = /* @__PURE__ */ read(\"getBlobMap\")\nexport const getConfAssemblyNames = /* @__PURE__ */ read(\"getConfAssemblyNames\")\nexport const getConfAssemblyNamesOrNone = /* @__PURE__ */ read(\"getConfAssemblyNamesOrNone\")\nexport const getConfRpcSessionId = /* @__PURE__ */ read(\"getConfRpcSessionId\")\nexport const getFileFromCache = /* @__PURE__ */ read(\"getFileFromCache\")\nexport const getFileName = /* @__PURE__ */ read(\"getFileName\")\nexport const getRpcSessionId = /* @__PURE__ */ read(\"getRpcSessionId\")\nexport const getTrackAssemblyNames = /* @__PURE__ */ read(\"getTrackAssemblyNames\")\nexport const getTrackName = /* @__PURE__ */ read(\"getTrackName\")\nexport const guessAdapter = /* @__PURE__ */ read(\"guessAdapter\")\nexport const guessTabixIndex = /* @__PURE__ */ read(\"guessTabixIndex\")\nexport const guessTrackConf = /* @__PURE__ */ read(\"guessTrackConf\")\nexport const guessTrackConfForLocation = /* @__PURE__ */ read(\"guessTrackConfForLocation\")\nexport const guessTrackType = /* @__PURE__ */ read(\"guessTrackType\")\nexport const hasFileHandlesInCache = /* @__PURE__ */ read(\"hasFileHandlesInCache\")\nexport const hideTrackGeneric = /* @__PURE__ */ read(\"hideTrackGeneric\")\nexport const isLooseTrackConfig = /* @__PURE__ */ read(\"isLooseTrackConfig\")\nexport const isSameAssemblyName = /* @__PURE__ */ read(\"isSameAssemblyName\")\nexport const launchToggleTrackGeneric = /* @__PURE__ */ read(\"launchToggleTrackGeneric\")\nexport const launchTrackGeneric = /* @__PURE__ */ read(\"launchTrackGeneric\")\nexport const makeIndex = /* @__PURE__ */ read(\"makeIndex\")\nexport const makeIndexType = /* @__PURE__ */ read(\"makeIndexType\")\nexport const normalizeTrackInit = /* @__PURE__ */ read(\"normalizeTrackInit\")\nexport const offeredTracks = /* @__PURE__ */ read(\"offeredTracks\")\nexport const openAssemblyInLinearView = /* @__PURE__ */ read(\"openAssemblyInLinearView\")\nexport const openMateLabel = /* @__PURE__ */ read(\"openMateLabel\")\nexport const pickDisplayForView = /* @__PURE__ */ read(\"pickDisplayForView\")\nexport const restoreFileHandles = /* @__PURE__ */ read(\"restoreFileHandles\")\nexport const restoreFileHandlesFromSnapshot = /* @__PURE__ */ read(\"restoreFileHandlesFromSnapshot\")\nexport const setBlobMap = /* @__PURE__ */ read(\"setBlobMap\")\nexport const setFileInCache = /* @__PURE__ */ read(\"setFileInCache\")\nexport const showTrackGeneric = /* @__PURE__ */ read(\"showTrackGeneric\")\nexport const storeBlobLocation = /* @__PURE__ */ read(\"storeBlobLocation\")\nexport const storeFileHandleLocation = /* @__PURE__ */ read(\"storeFileHandleLocation\")\nexport const stripFileExtension = /* @__PURE__ */ read(\"stripFileExtension\")\nexport const stripTrackIds = /* @__PURE__ */ read(\"stripTrackIds\")\nexport const toggleTrackGeneric = /* @__PURE__ */ read(\"toggleTrackGeneric\")\nexport const viewCanDisplayTrack = /* @__PURE__ */ read(\"viewCanDisplayTrack\")\nexport const viewDisplayNames = /* @__PURE__ */ read(\"viewDisplayNames\")\nexport const warmTrackDisplayGeneric = /* @__PURE__ */ read(\"warmTrackDisplayGeneric\")\nexport default host && host.__esModule ? host.default : host"],
5
- "mappings": "AAAA,IAAMA,EAAO,eAAe,2BAA2B,EACjDC,EAAOC,GACXF,GAAQ,MAAQE,KAAQ,OAAOF,CAAI,EAC/BA,EAAKE,CAAI,EACT,OAAO,OACL,UAAY,CACV,MAAM,IAAI,MACR,kCAAoCA,EAAO,2IAC7C,CACF,EACA,CAAE,mBAAoBA,CAAK,CAC7B,EAwBC,IAAMC,EAA+BC,EAAK,cAAc,EAaxD,IAAMC,EAAgCC,EAAK,eAAe,EAmBjE,IAAOC,EAAQC,GAAQA,EAAK,WAAaA,EAAK,QAAUA",
6
- "names": ["host", "read", "name", "getTrackName", "read", "makeIndexType", "read", "tracks_default", "host"]
4
+ "sourcesContent": ["const host = JBrowseExports[\"@jbrowse/core/util/tracks\"]\nconst read = name =>\n host != null && name in Object(host)\n ? host[name]\n : Object.assign(\n function () {\n throw new Error(\n \"This JBrowse does not provide '\" + name + \"' from '\" + \"@jbrowse/core/util/tracks\" + \"' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse\",\n )\n },\n { jbrowseHostMissing: name },\n )\nexport const UNKNOWN = /* @__PURE__ */ read(\"UNKNOWN\")\nexport const UNSUPPORTED = /* @__PURE__ */ read(\"UNSUPPORTED\")\nexport const addAdapterGuesser = /* @__PURE__ */ read(\"addAdapterGuesser\")\nexport const addTrackTypeGuesser = /* @__PURE__ */ read(\"addTrackTypeGuesser\")\nexport const allSessionTracks = /* @__PURE__ */ read(\"allSessionTracks\")\nexport const annotationTrackIds = /* @__PURE__ */ read(\"annotationTrackIds\")\nexport const canonicalAssemblyNames = /* @__PURE__ */ read(\"canonicalAssemblyNames\")\nexport const clearFileFromCache = /* @__PURE__ */ read(\"clearFileFromCache\")\nexport const ensureFileHandleReady = /* @__PURE__ */ read(\"ensureFileHandleReady\")\nexport const expandLooseTrackConfig = /* @__PURE__ */ read(\"expandLooseTrackConfig\")\nexport const filterTracks = /* @__PURE__ */ read(\"filterTracks\")\nexport const findFileHandleIds = /* @__PURE__ */ read(\"findFileHandleIds\")\nexport const generateUnknownTrackConf = /* @__PURE__ */ read(\"generateUnknownTrackConf\")\nexport const generateUnsupportedTrackConf = /* @__PURE__ */ read(\"generateUnsupportedTrackConf\")\nexport const getBlob = /* @__PURE__ */ read(\"getBlob\")\nexport const getBlobMap = /* @__PURE__ */ read(\"getBlobMap\")\nexport const getConfAssemblyNames = /* @__PURE__ */ read(\"getConfAssemblyNames\")\nexport const getConfAssemblyNamesOrNone = /* @__PURE__ */ read(\"getConfAssemblyNamesOrNone\")\nexport const getConfRpcSessionId = /* @__PURE__ */ read(\"getConfRpcSessionId\")\nexport const getFileFromCache = /* @__PURE__ */ read(\"getFileFromCache\")\nexport const getFileName = /* @__PURE__ */ read(\"getFileName\")\nexport const getRpcSessionId = /* @__PURE__ */ read(\"getRpcSessionId\")\nexport const getTrackAssemblyNames = /* @__PURE__ */ read(\"getTrackAssemblyNames\")\nexport const getTrackName = /* @__PURE__ */ read(\"getTrackName\")\nexport const guessAdapter = /* @__PURE__ */ read(\"guessAdapter\")\nexport const guessTabixIndex = /* @__PURE__ */ read(\"guessTabixIndex\")\nexport const guessTrackConf = /* @__PURE__ */ read(\"guessTrackConf\")\nexport const guessTrackConfForLocation = /* @__PURE__ */ read(\"guessTrackConfForLocation\")\nexport const guessTrackType = /* @__PURE__ */ read(\"guessTrackType\")\nexport const hasFileHandlesInCache = /* @__PURE__ */ read(\"hasFileHandlesInCache\")\nexport const hideTrackGeneric = /* @__PURE__ */ read(\"hideTrackGeneric\")\nexport const isLooseTrackConfig = /* @__PURE__ */ read(\"isLooseTrackConfig\")\nexport const isSameAssemblyName = /* @__PURE__ */ read(\"isSameAssemblyName\")\nexport const launchToggleTrackGeneric = /* @__PURE__ */ read(\"launchToggleTrackGeneric\")\nexport const launchTrackGeneric = /* @__PURE__ */ read(\"launchTrackGeneric\")\nexport const makeIndex = /* @__PURE__ */ read(\"makeIndex\")\nexport const makeIndexType = /* @__PURE__ */ read(\"makeIndexType\")\nexport const normalizeTrackInit = /* @__PURE__ */ read(\"normalizeTrackInit\")\nexport const offeredTracks = /* @__PURE__ */ read(\"offeredTracks\")\nexport const openAssemblyInLinearView = /* @__PURE__ */ read(\"openAssemblyInLinearView\")\nexport const openMateLabel = /* @__PURE__ */ read(\"openMateLabel\")\nexport const pickDisplayForView = /* @__PURE__ */ read(\"pickDisplayForView\")\nexport const restoreFileHandles = /* @__PURE__ */ read(\"restoreFileHandles\")\nexport const restoreFileHandlesFromSnapshot = /* @__PURE__ */ read(\"restoreFileHandlesFromSnapshot\")\nexport const setBlobMap = /* @__PURE__ */ read(\"setBlobMap\")\nexport const setFileInCache = /* @__PURE__ */ read(\"setFileInCache\")\nexport const showTrackGeneric = /* @__PURE__ */ read(\"showTrackGeneric\")\nexport const storeBlobLocation = /* @__PURE__ */ read(\"storeBlobLocation\")\nexport const storeFileHandleLocation = /* @__PURE__ */ read(\"storeFileHandleLocation\")\nexport const stripFileExtension = /* @__PURE__ */ read(\"stripFileExtension\")\nexport const stripTrackIds = /* @__PURE__ */ read(\"stripTrackIds\")\nexport const toTrackConfigEntry = /* @__PURE__ */ read(\"toTrackConfigEntry\")\nexport const toggleTrackGeneric = /* @__PURE__ */ read(\"toggleTrackGeneric\")\nexport const trackCatalog = /* @__PURE__ */ read(\"trackCatalog\")\nexport const trackCatalogEntry = /* @__PURE__ */ read(\"trackCatalogEntry\")\nexport const trackDisplayType = /* @__PURE__ */ read(\"trackDisplayType\")\nexport const viewCanDisplayTrack = /* @__PURE__ */ read(\"viewCanDisplayTrack\")\nexport const viewDisplayNames = /* @__PURE__ */ read(\"viewDisplayNames\")\nexport const warmTrackDisplayGeneric = /* @__PURE__ */ read(\"warmTrackDisplayGeneric\")\nexport default host && host.__esModule ? host.default : host"],
5
+ "mappings": "AAAA,IAAMA,EAAO,eAAe,2BAA2B,EACjDC,EAAOC,GACXF,GAAQ,MAAQE,KAAQ,OAAOF,CAAI,EAC/BA,EAAKE,CAAI,EACT,OAAO,OACL,UAAY,CACV,MAAM,IAAI,MACR,kCAAoCA,EAAO,2IAC7C,CACF,EACA,CAAE,mBAAoBA,CAAK,CAC7B,EAkBC,IAAMC,EAA6CC,EAAK,4BAA4B,EAMpF,IAAMC,EAA+BC,EAAK,cAAc,EAaxD,IAAMC,EAAgCC,EAAK,eAAe,EAe1D,IAAMC,EAAqCC,EAAK,oBAAoB,EAQ3E,IAAOC,EAAQC,GAAQA,EAAK,WAAaA,EAAK,QAAUA",
6
+ "names": ["host", "read", "name", "getConfAssemblyNamesOrNone", "read", "getTrackName", "read", "makeIndexType", "read", "toTrackConfigEntry", "read", "tracks_default", "host"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ var e=JBrowseExports["mobx-state-tree"],t=o=>e!=null&&o in Object(e)?e[o]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+o+"' from 'mobx-state-tree' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:o}),n=t("addDisposer");var s=t("flow");var r=t("getEnv");var p=t("getRoot");var c=t("isAlive");var i=t("types");var a=e&&e.__esModule?e.default:e;export{n as a,s as b,r as c,p as d,c as e,i as f};
2
+ //# sourceMappingURL=chunk-3WG3GF2A.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["host:@jbrowse/mobx-state-tree"],
4
- "sourcesContent": ["const host = JBrowseExports[\"mobx-state-tree\"]\nconst read = name =>\n host != null && name in Object(host)\n ? host[name]\n : Object.assign(\n function () {\n throw new Error(\n \"This JBrowse does not provide '\" + name + \"' from '\" + \"mobx-state-tree\" + \"' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse\",\n )\n },\n { jbrowseHostMissing: name },\n )\nexport const addDisposer = /* @__PURE__ */ read(\"addDisposer\")\nexport const addMiddleware = /* @__PURE__ */ read(\"addMiddleware\")\nexport const applyAction = /* @__PURE__ */ read(\"applyAction\")\nexport const applyPatch = /* @__PURE__ */ read(\"applyPatch\")\nexport const applySnapshot = /* @__PURE__ */ read(\"applySnapshot\")\nexport const asArrayType = /* @__PURE__ */ read(\"asArrayType\")\nexport const asMapType = /* @__PURE__ */ read(\"asMapType\")\nexport const asModelType = /* @__PURE__ */ read(\"asModelType\")\nexport const cannotDetermineSubtype = /* @__PURE__ */ read(\"cannotDetermineSubtype\")\nexport const cast = /* @__PURE__ */ read(\"cast\")\nexport const castFlowReturn = /* @__PURE__ */ read(\"castFlowReturn\")\nexport const castToReferenceSnapshot = /* @__PURE__ */ read(\"castToReferenceSnapshot\")\nexport const castToSnapshot = /* @__PURE__ */ read(\"castToSnapshot\")\nexport const clone = /* @__PURE__ */ read(\"clone\")\nexport const createActionTrackingMiddleware = /* @__PURE__ */ read(\"createActionTrackingMiddleware\")\nexport const createActionTrackingMiddleware2 = /* @__PURE__ */ read(\"createActionTrackingMiddleware2\")\nexport const decorate = /* @__PURE__ */ read(\"decorate\")\nexport const destroy = /* @__PURE__ */ read(\"destroy\")\nexport const detach = /* @__PURE__ */ read(\"detach\")\nexport const escapeJsonPath = /* @__PURE__ */ read(\"escapeJsonPath\")\nexport const extendInstance = /* @__PURE__ */ read(\"extendInstance\")\nexport const flow = /* @__PURE__ */ read(\"flow\")\nexport const getChildType = /* @__PURE__ */ read(\"getChildType\")\nexport const getEnv = /* @__PURE__ */ read(\"getEnv\")\nexport const getIdentifier = /* @__PURE__ */ read(\"getIdentifier\")\nexport const getLivelinessChecking = /* @__PURE__ */ read(\"getLivelinessChecking\")\nexport const getMembers = /* @__PURE__ */ read(\"getMembers\")\nexport const getNodeId = /* @__PURE__ */ read(\"getNodeId\")\nexport const getParent = /* @__PURE__ */ read(\"getParent\")\nexport const getParentOfType = /* @__PURE__ */ read(\"getParentOfType\")\nexport const getPath = /* @__PURE__ */ read(\"getPath\")\nexport const getPathParts = /* @__PURE__ */ read(\"getPathParts\")\nexport const getPropertyMembers = /* @__PURE__ */ read(\"getPropertyMembers\")\nexport const getRelativePath = /* @__PURE__ */ read(\"getRelativePath\")\nexport const getRoot = /* @__PURE__ */ read(\"getRoot\")\nexport const getRunningActionContext = /* @__PURE__ */ read(\"getRunningActionContext\")\nexport const getSnapshot = /* @__PURE__ */ read(\"getSnapshot\")\nexport const getType = /* @__PURE__ */ read(\"getType\")\nexport const getUnionSubtypes = /* @__PURE__ */ read(\"getUnionSubtypes\")\nexport const getWrappedType = /* @__PURE__ */ read(\"getWrappedType\")\nexport const hasParent = /* @__PURE__ */ read(\"hasParent\")\nexport const hasParentOfType = /* @__PURE__ */ read(\"hasParentOfType\")\nexport const isActionContextChildOf = /* @__PURE__ */ read(\"isActionContextChildOf\")\nexport const isActionContextThisOrChildOf = /* @__PURE__ */ read(\"isActionContextThisOrChildOf\")\nexport const isAlive = /* @__PURE__ */ read(\"isAlive\")\nexport const isArrayType = /* @__PURE__ */ read(\"isArrayType\")\nexport const isFrozenType = /* @__PURE__ */ read(\"isFrozenType\")\nexport const isIdentifierType = /* @__PURE__ */ read(\"isIdentifierType\")\nexport const isLateType = /* @__PURE__ */ read(\"isLateType\")\nexport const isLiteralType = /* @__PURE__ */ read(\"isLiteralType\")\nexport const isMapType = /* @__PURE__ */ read(\"isMapType\")\nexport const isModelType = /* @__PURE__ */ read(\"isModelType\")\nexport const isOptionalType = /* @__PURE__ */ read(\"isOptionalType\")\nexport const isPrimitiveType = /* @__PURE__ */ read(\"isPrimitiveType\")\nexport const isProtected = /* @__PURE__ */ read(\"isProtected\")\nexport const isReferenceType = /* @__PURE__ */ read(\"isReferenceType\")\nexport const isRefinementType = /* @__PURE__ */ read(\"isRefinementType\")\nexport const isRoot = /* @__PURE__ */ read(\"isRoot\")\nexport const isStateTreeNode = /* @__PURE__ */ read(\"isStateTreeNode\")\nexport const isType = /* @__PURE__ */ read(\"isType\")\nexport const isUnionType = /* @__PURE__ */ read(\"isUnionType\")\nexport const isValidReference = /* @__PURE__ */ read(\"isValidReference\")\nexport const joinJsonPath = /* @__PURE__ */ read(\"joinJsonPath\")\nexport const onAction = /* @__PURE__ */ read(\"onAction\")\nexport const onPatch = /* @__PURE__ */ read(\"onPatch\")\nexport const onSnapshot = /* @__PURE__ */ read(\"onSnapshot\")\nexport const protect = /* @__PURE__ */ read(\"protect\")\nexport const recordActions = /* @__PURE__ */ read(\"recordActions\")\nexport const recordPatches = /* @__PURE__ */ read(\"recordPatches\")\nexport const resolveIdentifier = /* @__PURE__ */ read(\"resolveIdentifier\")\nexport const resolvePath = /* @__PURE__ */ read(\"resolvePath\")\nexport const setDevMode = /* @__PURE__ */ read(\"setDevMode\")\nexport const setLivelinessChecking = /* @__PURE__ */ read(\"setLivelinessChecking\")\nexport const setLivelynessChecking = /* @__PURE__ */ read(\"setLivelynessChecking\")\nexport const setTypeChecking = /* @__PURE__ */ read(\"setTypeChecking\")\nexport const splitJsonPath = /* @__PURE__ */ read(\"splitJsonPath\")\nexport const t = /* @__PURE__ */ read(\"t\")\nexport const toGenerator = /* @__PURE__ */ read(\"toGenerator\")\nexport const toGeneratorFunction = /* @__PURE__ */ read(\"toGeneratorFunction\")\nexport const tryReference = /* @__PURE__ */ read(\"tryReference\")\nexport const tryResolve = /* @__PURE__ */ read(\"tryResolve\")\nexport const typecheck = /* @__PURE__ */ read(\"typecheck\")\nexport const types = /* @__PURE__ */ read(\"types\")\nexport const unescapeJsonPath = /* @__PURE__ */ read(\"unescapeJsonPath\")\nexport const unprotect = /* @__PURE__ */ read(\"unprotect\")\nexport const unwrapType = /* @__PURE__ */ read(\"unwrapType\")\nexport const walk = /* @__PURE__ */ read(\"walk\")\nexport default host && host.__esModule ? host.default : host"],
5
- "mappings": "AAAA,IAAMA,EAAO,eAAe,iBAAiB,EACvCC,EAAOC,GACXF,GAAQ,MAAQE,KAAQ,OAAOF,CAAI,EAC/BA,EAAKE,CAAI,EACT,OAAO,OACL,UAAY,CACV,MAAM,IAAI,MACR,kCAAoCA,EAAO,iIAC7C,CACF,EACA,CAAE,mBAAoBA,CAAK,CAC7B,EACOC,EAA8BF,EAAK,aAAa,EAqBtD,IAAMG,EAAuBC,EAAK,MAAM,EAExC,IAAMC,EAAyBC,EAAK,QAAQ,EAW5C,IAAMC,EAA0BC,EAAK,SAAS,EAU9C,IAAMC,EAA0BC,EAAK,SAAS,EAc9C,IAAMC,EAAkCC,EAAK,iBAAiB,EAwB9D,IAAMC,EAAwBC,EAAK,OAAO,EAKjD,IAAOC,EAAQC,GAAQA,EAAK,WAAaA,EAAK,QAAUA",
6
- "names": ["host", "read", "name", "addDisposer", "flow", "read", "getEnv", "read", "getRoot", "read", "isAlive", "read", "isStateTreeNode", "read", "types", "read", "mobx_state_tree_default", "host"]
4
+ "sourcesContent": ["const host = JBrowseExports[\"mobx-state-tree\"]\nconst read = name =>\n host != null && name in Object(host)\n ? host[name]\n : Object.assign(\n function () {\n throw new Error(\n \"This JBrowse does not provide '\" + name + \"' from '\" + \"mobx-state-tree\" + \"' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse\",\n )\n },\n { jbrowseHostMissing: name },\n )\nexport const addDisposer = /* @__PURE__ */ read(\"addDisposer\")\nexport const addMiddleware = /* @__PURE__ */ read(\"addMiddleware\")\nexport const applyAction = /* @__PURE__ */ read(\"applyAction\")\nexport const applyPatch = /* @__PURE__ */ read(\"applyPatch\")\nexport const applySnapshot = /* @__PURE__ */ read(\"applySnapshot\")\nexport const asArrayType = /* @__PURE__ */ read(\"asArrayType\")\nexport const asMapType = /* @__PURE__ */ read(\"asMapType\")\nexport const asModelType = /* @__PURE__ */ read(\"asModelType\")\nexport const cannotDetermineSubtype = /* @__PURE__ */ read(\"cannotDetermineSubtype\")\nexport const cast = /* @__PURE__ */ read(\"cast\")\nexport const castFlowReturn = /* @__PURE__ */ read(\"castFlowReturn\")\nexport const castToReferenceSnapshot = /* @__PURE__ */ read(\"castToReferenceSnapshot\")\nexport const castToSnapshot = /* @__PURE__ */ read(\"castToSnapshot\")\nexport const clone = /* @__PURE__ */ read(\"clone\")\nexport const createActionTrackingMiddleware = /* @__PURE__ */ read(\"createActionTrackingMiddleware\")\nexport const createActionTrackingMiddleware2 = /* @__PURE__ */ read(\"createActionTrackingMiddleware2\")\nexport const decorate = /* @__PURE__ */ read(\"decorate\")\nexport const destroy = /* @__PURE__ */ read(\"destroy\")\nexport const detach = /* @__PURE__ */ read(\"detach\")\nexport const escapeJsonPath = /* @__PURE__ */ read(\"escapeJsonPath\")\nexport const extendInstance = /* @__PURE__ */ read(\"extendInstance\")\nexport const findParent = /* @__PURE__ */ read(\"findParent\")\nexport const flow = /* @__PURE__ */ read(\"flow\")\nexport const getChildType = /* @__PURE__ */ read(\"getChildType\")\nexport const getEnv = /* @__PURE__ */ read(\"getEnv\")\nexport const getIdentifier = /* @__PURE__ */ read(\"getIdentifier\")\nexport const getLivelinessChecking = /* @__PURE__ */ read(\"getLivelinessChecking\")\nexport const getMembers = /* @__PURE__ */ read(\"getMembers\")\nexport const getNodeId = /* @__PURE__ */ read(\"getNodeId\")\nexport const getParent = /* @__PURE__ */ read(\"getParent\")\nexport const getParentOfType = /* @__PURE__ */ read(\"getParentOfType\")\nexport const getPath = /* @__PURE__ */ read(\"getPath\")\nexport const getPathParts = /* @__PURE__ */ read(\"getPathParts\")\nexport const getPropertyMembers = /* @__PURE__ */ read(\"getPropertyMembers\")\nexport const getRelativePath = /* @__PURE__ */ read(\"getRelativePath\")\nexport const getRoot = /* @__PURE__ */ read(\"getRoot\")\nexport const getRunningActionContext = /* @__PURE__ */ read(\"getRunningActionContext\")\nexport const getSnapshot = /* @__PURE__ */ read(\"getSnapshot\")\nexport const getType = /* @__PURE__ */ read(\"getType\")\nexport const getUnionSubtypes = /* @__PURE__ */ read(\"getUnionSubtypes\")\nexport const getWrappedType = /* @__PURE__ */ read(\"getWrappedType\")\nexport const hasParent = /* @__PURE__ */ read(\"hasParent\")\nexport const hasParentOfType = /* @__PURE__ */ read(\"hasParentOfType\")\nexport const isActionContextChildOf = /* @__PURE__ */ read(\"isActionContextChildOf\")\nexport const isActionContextThisOrChildOf = /* @__PURE__ */ read(\"isActionContextThisOrChildOf\")\nexport const isAlive = /* @__PURE__ */ read(\"isAlive\")\nexport const isArrayType = /* @__PURE__ */ read(\"isArrayType\")\nexport const isFrozenType = /* @__PURE__ */ read(\"isFrozenType\")\nexport const isIdentifierType = /* @__PURE__ */ read(\"isIdentifierType\")\nexport const isLateType = /* @__PURE__ */ read(\"isLateType\")\nexport const isLiteralType = /* @__PURE__ */ read(\"isLiteralType\")\nexport const isMapType = /* @__PURE__ */ read(\"isMapType\")\nexport const isModelType = /* @__PURE__ */ read(\"isModelType\")\nexport const isOptionalType = /* @__PURE__ */ read(\"isOptionalType\")\nexport const isPrimitiveType = /* @__PURE__ */ read(\"isPrimitiveType\")\nexport const isProtected = /* @__PURE__ */ read(\"isProtected\")\nexport const isReferenceType = /* @__PURE__ */ read(\"isReferenceType\")\nexport const isRefinementType = /* @__PURE__ */ read(\"isRefinementType\")\nexport const isRoot = /* @__PURE__ */ read(\"isRoot\")\nexport const isStateTreeNode = /* @__PURE__ */ read(\"isStateTreeNode\")\nexport const isType = /* @__PURE__ */ read(\"isType\")\nexport const isUnionType = /* @__PURE__ */ read(\"isUnionType\")\nexport const isValidReference = /* @__PURE__ */ read(\"isValidReference\")\nexport const joinJsonPath = /* @__PURE__ */ read(\"joinJsonPath\")\nexport const onAction = /* @__PURE__ */ read(\"onAction\")\nexport const onPatch = /* @__PURE__ */ read(\"onPatch\")\nexport const onSnapshot = /* @__PURE__ */ read(\"onSnapshot\")\nexport const protect = /* @__PURE__ */ read(\"protect\")\nexport const recordActions = /* @__PURE__ */ read(\"recordActions\")\nexport const recordPatches = /* @__PURE__ */ read(\"recordPatches\")\nexport const resolveIdentifier = /* @__PURE__ */ read(\"resolveIdentifier\")\nexport const resolvePath = /* @__PURE__ */ read(\"resolvePath\")\nexport const setDevMode = /* @__PURE__ */ read(\"setDevMode\")\nexport const setLivelinessChecking = /* @__PURE__ */ read(\"setLivelinessChecking\")\nexport const setLivelynessChecking = /* @__PURE__ */ read(\"setLivelynessChecking\")\nexport const setTypeChecking = /* @__PURE__ */ read(\"setTypeChecking\")\nexport const splitJsonPath = /* @__PURE__ */ read(\"splitJsonPath\")\nexport const t = /* @__PURE__ */ read(\"t\")\nexport const toGenerator = /* @__PURE__ */ read(\"toGenerator\")\nexport const toGeneratorFunction = /* @__PURE__ */ read(\"toGeneratorFunction\")\nexport const tryReference = /* @__PURE__ */ read(\"tryReference\")\nexport const tryResolve = /* @__PURE__ */ read(\"tryResolve\")\nexport const typecheck = /* @__PURE__ */ read(\"typecheck\")\nexport const types = /* @__PURE__ */ read(\"types\")\nexport const unescapeJsonPath = /* @__PURE__ */ read(\"unescapeJsonPath\")\nexport const unprotect = /* @__PURE__ */ read(\"unprotect\")\nexport const unwrapType = /* @__PURE__ */ read(\"unwrapType\")\nexport const walk = /* @__PURE__ */ read(\"walk\")\nexport default host && host.__esModule ? host.default : host"],
5
+ "mappings": "AAAA,IAAMA,EAAO,eAAe,iBAAiB,EACvCC,EAAOC,GACXF,GAAQ,MAAQE,KAAQ,OAAOF,CAAI,EAC/BA,EAAKE,CAAI,EACT,OAAO,OACL,UAAY,CACV,MAAM,IAAI,MACR,kCAAoCA,EAAO,iIAC7C,CACF,EACA,CAAE,mBAAoBA,CAAK,CAC7B,EACOC,EAA8BF,EAAK,aAAa,EAsBtD,IAAMG,EAAuBC,EAAK,MAAM,EAExC,IAAMC,EAAyBC,EAAK,QAAQ,EAW5C,IAAMC,EAA0BC,EAAK,SAAS,EAU9C,IAAMC,EAA0BC,EAAK,SAAS,EAsC9C,IAAMC,EAAwBC,EAAK,OAAO,EAKjD,IAAOC,EAAQC,GAAQA,EAAK,WAAaA,EAAK,QAAUA",
6
+ "names": ["host", "read", "name", "addDisposer", "flow", "read", "getEnv", "read", "getRoot", "read", "isAlive", "read", "types", "read", "mobx_state_tree_default", "host"]
7
7
  }