jbrowse-plugin-graphgenomeviewer 7.4.3 → 7.5.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 (170) hide show
  1. package/README.md +10 -7
  2. package/dist/chunks/{AddTrackWorkflow-LK25EC3H.js → AddTrackWorkflow-NLSZYK56.js} +2 -2
  3. package/dist/chunks/{GbzBaseSyntenyAdapter-EKLUEECW.js → GbzBaseSyntenyAdapter-4KVWVUN6.js} +2 -2
  4. package/dist/chunks/{GbzBaseSyntenyAdapter-EKLUEECW.js.map → GbzBaseSyntenyAdapter-4KVWVUN6.js.map} +1 -1
  5. package/dist/chunks/{GraphGenomeView-P3XMSKUQ.js → GraphGenomeView-KI4FQ5A7.js} +2 -2
  6. package/dist/chunks/GraphTrackSettingsDialog-UQNMDXTE.js +4 -0
  7. package/dist/chunks/GraphTrackSettingsDialog-UQNMDXTE.js.map +7 -0
  8. package/dist/chunks/{HighlightColorDialog-G6AFRYUD.js → HighlightColorDialog-D4RCUCUF.js} +2 -2
  9. package/dist/chunks/LinearGraphDisplay-RPZUZSM2.js +2 -0
  10. package/dist/chunks/{LinearGraphDisplay-O4SQSXJJ.js.map → LinearGraphDisplay-RPZUZSM2.js.map} +2 -2
  11. package/dist/chunks/MinigraphBubbleAdapter-TJYI7KEN.js +2 -0
  12. package/dist/chunks/{MinigraphBubbleAdapter-3NJ2VLN2.js.map → MinigraphBubbleAdapter-TJYI7KEN.js.map} +1 -1
  13. package/dist/chunks/RgfaTabixAdapter-5ZMJLFZP.js +2 -0
  14. package/dist/chunks/RgfaTabixAdapter-5ZMJLFZP.js.map +7 -0
  15. package/dist/chunks/WalkFormsAdapter-CAJOWOEX.js +2 -0
  16. package/dist/chunks/WalkFormsAdapter-CAJOWOEX.js.map +7 -0
  17. package/dist/chunks/WalkTabixSyntenyAdapter-VI3KA2GX.js +2 -0
  18. package/dist/chunks/{WalkTabixSyntenyAdapter-NHNSZZBX.js.map → WalkTabixSyntenyAdapter-VI3KA2GX.js.map} +2 -2
  19. package/dist/chunks/{chunk-MCE6STZR.js → chunk-22ANI2KL.js} +2 -2
  20. package/dist/chunks/{chunk-MCE6STZR.js.map → chunk-22ANI2KL.js.map} +1 -1
  21. package/dist/chunks/chunk-42KD4AVY.js +2 -0
  22. package/dist/chunks/{chunk-OKRGO7XA.js.map → chunk-42KD4AVY.js.map} +4 -4
  23. package/dist/chunks/chunk-4NIWMRKH.js +2 -0
  24. package/dist/chunks/chunk-4NIWMRKH.js.map +7 -0
  25. package/dist/chunks/chunk-BCOXRUNQ.js +3 -0
  26. package/dist/chunks/chunk-BCOXRUNQ.js.map +7 -0
  27. package/dist/chunks/chunk-DAPI7M4M.js +4 -0
  28. package/dist/chunks/chunk-DAPI7M4M.js.map +7 -0
  29. package/dist/chunks/chunk-DEWZOJSC.js +2 -0
  30. package/dist/chunks/{chunk-6OXXT2YP.js.map → chunk-DEWZOJSC.js.map} +4 -4
  31. package/dist/chunks/{chunk-K4TFAHGC.js → chunk-FCMXEFJA.js} +1 -1
  32. package/dist/chunks/{chunk-K4TFAHGC.js.map → chunk-FCMXEFJA.js.map} +1 -1
  33. package/dist/chunks/{chunk-UOFWYS6T.js → chunk-GYY6LF5L.js} +1 -1
  34. package/dist/chunks/{chunk-UOFWYS6T.js.map → chunk-GYY6LF5L.js.map} +1 -1
  35. package/dist/chunks/{chunk-F2DMEJEK.js → chunk-HHMJNAA3.js} +2 -2
  36. package/dist/chunks/{chunk-NPV7SRJD.js → chunk-HTTONSO4.js} +2 -2
  37. package/dist/chunks/{chunk-NPV7SRJD.js.map → chunk-HTTONSO4.js.map} +1 -1
  38. package/dist/chunks/{chunk-MVVXRZXV.js → chunk-JRJHXLGP.js} +2 -2
  39. package/dist/chunks/{chunk-MVVXRZXV.js.map → chunk-JRJHXLGP.js.map} +2 -2
  40. package/dist/chunks/chunk-K4JL57NR.js +2 -0
  41. package/dist/chunks/chunk-K4JL57NR.js.map +7 -0
  42. package/dist/chunks/chunk-KOC23YNN.js +4 -0
  43. package/dist/chunks/chunk-KOC23YNN.js.map +7 -0
  44. package/dist/chunks/{chunk-MNCPMOHJ.js → chunk-LTNFVL2F.js} +2 -2
  45. package/dist/chunks/chunk-OZEKEYT3.js +2 -0
  46. package/dist/chunks/{chunk-ZAYC5OMQ.js.map → chunk-OZEKEYT3.js.map} +4 -4
  47. package/dist/chunks/{chunk-DUPBXBYE.js → chunk-POUV7OPY.js} +2 -2
  48. package/dist/chunks/{chunk-DUPBXBYE.js.map → chunk-POUV7OPY.js.map} +1 -1
  49. package/dist/chunks/{chunk-CNNZDE6I.js → chunk-SPL3UO2D.js} +2 -2
  50. package/dist/chunks/{chunk-CNNZDE6I.js.map → chunk-SPL3UO2D.js.map} +1 -1
  51. package/dist/chunks/{chunk-QJ43NDYS.js → chunk-TYV6UXJA.js} +2 -2
  52. package/dist/chunks/chunk-UR2MJJUP.js +2 -0
  53. package/dist/chunks/chunk-VTMJQFN5.js +2 -0
  54. package/dist/chunks/chunk-VTMJQFN5.js.map +7 -0
  55. package/dist/chunks/{chunk-CXOMX2I6.js → chunk-XZGYJ3JC.js} +1 -1
  56. package/dist/chunks/{chunk-CXOMX2I6.js.map → chunk-XZGYJ3JC.js.map} +1 -1
  57. package/dist/chunks/{chunk-TGSDXZXI.js → chunk-Z3IKZAYC.js} +2 -2
  58. package/dist/chunks/{chunk-TGSDXZXI.js.map → chunk-Z3IKZAYC.js.map} +1 -1
  59. package/dist/chunks/chunk-ZV5FNOHS.js +3 -0
  60. package/dist/chunks/chunk-ZV5FNOHS.js.map +7 -0
  61. package/dist/chunks/{renderSvg-7G6NWBXF.js → renderSvg-3PPAEMBT.js} +2 -2
  62. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +4 -4
  63. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +4 -4
  64. package/package.json +3 -3
  65. package/src/GraphComputeLayout.test.ts +24 -0
  66. package/src/GraphComputeLayout.ts +4 -2
  67. package/src/GraphGenomeView/components/GraphSettingsDialog.tsx +16 -0
  68. package/src/GraphGenomeView/components/WalkRowsOverlay.tsx +83 -0
  69. package/src/GraphGenomeView/components/usePaneGestures.test.tsx +82 -5
  70. package/src/GraphGenomeView/components/usePaneGestures.ts +10 -4
  71. package/src/GraphGenomeView/graphLayers.ts +14 -1
  72. package/src/GraphGenomeView/legendSections.ts +32 -0
  73. package/src/GraphGenomeView/model.test.ts +294 -113
  74. package/src/GraphGenomeView/model.ts +3 -10
  75. package/src/GraphGenomeView/nodeSize.test.ts +21 -5
  76. package/src/GraphGenomeView/nodeSize.ts +24 -8
  77. package/src/GraphGenomeView/pane/fitViews.ts +5 -110
  78. package/src/GraphGenomeView/pane/graphViews.ts +96 -20
  79. package/src/GraphGenomeView/pane/launchActions.ts +55 -33
  80. package/src/GraphGenomeView/pane/launchViews.ts +46 -0
  81. package/src/GraphGenomeView/pane/loadActions.ts +85 -25
  82. package/src/GraphGenomeView/pane/morph.test.ts +25 -1
  83. package/src/GraphGenomeView/pane/morph.ts +3 -1
  84. package/src/GraphGenomeView/pane/paneBase.ts +5 -7
  85. package/src/GraphGenomeView/pane/renderingActions.ts +61 -2
  86. package/src/GraphGenomeView/pane/settingActions.ts +62 -4
  87. package/src/GraphGenomeView/pane/walkRowViews.ts +17 -6
  88. package/src/GraphGenomeView/tubeMapPanels.ts +2 -1
  89. package/src/GraphGenomeView/viewModel.ts +4 -9
  90. package/src/GraphGenomeView/walkRowBlocks.ts +50 -0
  91. package/src/LinearGraphDisplay/LinearGraphDisplay.test.ts +35 -5
  92. package/src/LinearGraphDisplay/components/GraphStatusChrome.test.tsx +18 -0
  93. package/src/LinearGraphDisplay/components/GraphStatusChrome.tsx +4 -2
  94. package/src/LinearGraphDisplay/components/SubgraphHaplotypesField.test.tsx +41 -1
  95. package/src/LinearGraphDisplay/components/SubgraphHaplotypesField.tsx +33 -19
  96. package/src/LinearGraphDisplay/configSchema.ts +4 -3
  97. package/src/RgfaTabixAdapter/RgfaTabixAdapter.ts +2 -9
  98. package/src/RgfaTabixAdapter/configSchema.ts +3 -3
  99. package/src/RgfaTabixAdapter/walkFiles.test.ts +6 -6
  100. package/src/WalkFormsAdapter/WalkFormsAdapter.test.ts +204 -0
  101. package/src/WalkFormsAdapter/WalkFormsAdapter.ts +232 -0
  102. package/src/WalkFormsAdapter/configSchema.ts +127 -0
  103. package/src/WalkFormsAdapter/formRows.test.ts +258 -0
  104. package/src/WalkFormsAdapter/formRows.ts +231 -0
  105. package/src/WalkFormsAdapter/formsMenu.test.ts +237 -0
  106. package/src/WalkFormsAdapter/formsMenu.ts +202 -0
  107. package/src/WalkFormsAdapter/index.ts +21 -0
  108. package/src/WalkFormsAdapter/pinned.ts +33 -0
  109. package/src/WalkTabixSyntenyAdapter/WalkTabixSyntenyAdapter.test.ts +5 -5
  110. package/src/WalkTabixSyntenyAdapter/WalkTabixSyntenyAdapter.ts +3 -6
  111. package/src/WalkTabixSyntenyAdapter/configSchema.ts +2 -2
  112. package/src/hoverSync/graphViewHighlights.test.ts +53 -0
  113. package/src/hoverSync/graphViewHighlights.ts +25 -0
  114. package/src/hoverSync/lgvHover.test.ts +100 -1
  115. package/src/hoverSync/lgvHover.ts +77 -6
  116. package/src/index.ts +4 -0
  117. package/src/launchFromGraph/contributors.test.ts +52 -0
  118. package/src/launchFromGraph/contributors.ts +105 -1
  119. package/src/launchFromGraph/launchFromGraph.ts +2 -2
  120. package/src/panSNAliases/panSNAliases.test.ts +2 -2
  121. package/src/panSNTabix.test.ts +28 -0
  122. package/src/panSNTabix.ts +26 -8
  123. package/src/version.ts +1 -1
  124. package/dist/chunks/GraphTrackSettingsDialog-UTYH6HEC.js +0 -6
  125. package/dist/chunks/GraphTrackSettingsDialog-UTYH6HEC.js.map +0 -7
  126. package/dist/chunks/LinearGraphDisplay-O4SQSXJJ.js +0 -2
  127. package/dist/chunks/MinigraphBubbleAdapter-3NJ2VLN2.js +0 -2
  128. package/dist/chunks/RgfaTabixAdapter-55DGDID2.js +0 -2
  129. package/dist/chunks/RgfaTabixAdapter-55DGDID2.js.map +0 -7
  130. package/dist/chunks/WalkTabixSyntenyAdapter-NHNSZZBX.js +0 -2
  131. package/dist/chunks/chunk-4I3K4RHE.js +0 -2
  132. package/dist/chunks/chunk-4I3K4RHE.js.map +0 -7
  133. package/dist/chunks/chunk-6OXXT2YP.js +0 -2
  134. package/dist/chunks/chunk-NFH2U74B.js +0 -2
  135. package/dist/chunks/chunk-OKRGO7XA.js +0 -2
  136. package/dist/chunks/chunk-P7VMOTUM.js +0 -3
  137. package/dist/chunks/chunk-P7VMOTUM.js.map +0 -7
  138. package/dist/chunks/chunk-RU4WSKBO.js +0 -3
  139. package/dist/chunks/chunk-RU4WSKBO.js.map +0 -7
  140. package/dist/chunks/chunk-WGTLNVST.js +0 -2
  141. package/dist/chunks/chunk-WGTLNVST.js.map +0 -7
  142. package/dist/chunks/chunk-XQFBLJU5.js +0 -4
  143. package/dist/chunks/chunk-XQFBLJU5.js.map +0 -7
  144. package/dist/chunks/chunk-Y5DNBFDY.js +0 -3
  145. package/dist/chunks/chunk-Y5DNBFDY.js.map +0 -7
  146. package/dist/chunks/chunk-ZAYC5OMQ.js +0 -2
  147. package/src/launchFromGraph/launchTracks.test.ts +0 -95
  148. package/src/launchFromGraph/launchTracks.ts +0 -49
  149. /package/dist/chunks/{AddTrackWorkflow-LK25EC3H.js.map → AddTrackWorkflow-NLSZYK56.js.map} +0 -0
  150. /package/dist/chunks/{GraphGenomeView-P3XMSKUQ.js.map → GraphGenomeView-KI4FQ5A7.js.map} +0 -0
  151. /package/dist/chunks/{HighlightColorDialog-G6AFRYUD.js.map → HighlightColorDialog-D4RCUCUF.js.map} +0 -0
  152. /package/dist/chunks/{chunk-F2DMEJEK.js.map → chunk-HHMJNAA3.js.map} +0 -0
  153. /package/dist/chunks/{chunk-MNCPMOHJ.js.map → chunk-LTNFVL2F.js.map} +0 -0
  154. /package/dist/chunks/{chunk-QJ43NDYS.js.map → chunk-TYV6UXJA.js.map} +0 -0
  155. /package/dist/chunks/{chunk-NFH2U74B.js.map → chunk-UR2MJJUP.js.map} +0 -0
  156. /package/dist/chunks/{renderSvg-7G6NWBXF.js.map → renderSvg-3PPAEMBT.js.map} +0 -0
  157. /package/src/RgfaTabixAdapter/test_data/{walks4_follow.GRCh38.walks.bed.gz → walks5_follow.GRCh38.walks.bed.gz} +0 -0
  158. /package/src/RgfaTabixAdapter/test_data/{walks4_follow.GRCh38.walks.bed.gz.tbi → walks5_follow.GRCh38.walks.bed.gz.tbi} +0 -0
  159. /package/src/RgfaTabixAdapter/test_data/{walks4_header.GRCh38.walks.bed.gz → walks5_header.GRCh38.walks.bed.gz} +0 -0
  160. /package/src/RgfaTabixAdapter/test_data/{walks4_header.GRCh38.walks.bed.gz.tbi → walks5_header.GRCh38.walks.bed.gz.tbi} +0 -0
  161. /package/src/RgfaTabixAdapter/test_data/{walks4_inversion.GRCh38.walks.bed.gz → walks5_inversion.GRCh38.walks.bed.gz} +0 -0
  162. /package/src/RgfaTabixAdapter/test_data/{walks4_inversion.GRCh38.walks.bed.gz.tbi → walks5_inversion.GRCh38.walks.bed.gz.tbi} +0 -0
  163. /package/src/RgfaTabixAdapter/test_data/{walks4_lanepairs.GRCh38.walks.bed.gz → walks5_lanepairs.GRCh38.walks.bed.gz} +0 -0
  164. /package/src/RgfaTabixAdapter/test_data/{walks4_lanepairs.GRCh38.walks.bed.gz.tbi → walks5_lanepairs.GRCh38.walks.bed.gz.tbi} +0 -0
  165. /package/src/RgfaTabixAdapter/test_data/{walks4_maxnode.GRCh38.walks.bed.gz → walks5_maxnode.GRCh38.walks.bed.gz} +0 -0
  166. /package/src/RgfaTabixAdapter/test_data/{walks4_maxnode.GRCh38.walks.bed.gz.tbi → walks5_maxnode.GRCh38.walks.bed.gz.tbi} +0 -0
  167. /package/src/RgfaTabixAdapter/test_data/{walks4_rejoin.GRCh38.walks.bed.gz → walks5_rejoin.GRCh38.walks.bed.gz} +0 -0
  168. /package/src/RgfaTabixAdapter/test_data/{walks4_rejoin.GRCh38.walks.bed.gz.tbi → walks5_rejoin.GRCh38.walks.bed.gz.tbi} +0 -0
  169. /package/src/RgfaTabixAdapter/test_data/{walks4_twopart.GRCh38.walks.bed.gz → walks5_twopart.GRCh38.walks.bed.gz} +0 -0
  170. /package/src/RgfaTabixAdapter/test_data/{walks4_twopart.GRCh38.walks.bed.gz.tbi → walks5_twopart.GRCh38.walks.bed.gz.tbi} +0 -0
@@ -1,4 +1,4 @@
1
- import{a as I,b as L,f as S,h as w}from"./chunk-6OXXT2YP.js";import{p as T}from"./chunk-CNNZDE6I.js";var O=62,Z=60,G=9,k=48,z=57,_=/^(?:LN:i|SN:Z|SO:i|SR:i):/,q=/^[PEOUFG]\t/,C=e=>e.endsWith("\r")?e.slice(0,-1):e;function P(){return{nodes:new T(new Int32Array(65536)),reversed:new T(new Uint8Array(65536))}}var R=class{constructor(){this.names=[],this.byName=new Map,this.byNumber=new Map}has(e){return this.byName.has(e)}add(e){let s=this.names.length;this.byName.set(e,s),this.names.push(e);let t=+e;return Number.isSafeInteger(t)&&String(t)===e&&this.byNumber.set(t,s),s}of(e){return this.byName.get(e)??this.add(e)}ofNumber(e){return this.byNumber.get(e)}};function U(e){let[,s,t="*",...r]=e.split(" ");if(!s||/^\d+$/.test(t))return;let i=t==="*"?0:t.length,n,f,o;for(let c of r){if(!_.test(c))return;let a=c.slice(5),p=c.slice(0,2);p==="LN"?i=+a:p==="SN"?n=a:p==="SO"?f=+a:o=+a}return{name:s,length:i,stable:n!==void 0&&f!==void 0&&o!==void 0?{refName:n,start:f,rank:o}:void 0}}function $(e,s,t,r){let i=0,n=-1,f=0,o=!0,d=a=>{if(n>=0&&a>n){let p=o&&a-n<16&&(a-n===1||e.charCodeAt(n)!==k)?t.ofNumber(f):void 0;r.nodes.push(p??t.of(e.slice(n,a))),r.reversed.push(i)}},c=s;for(;c<e.length;c++){let a=e.charCodeAt(c);if(a===O||a===Z)d(c),i=a===Z?1:0,n=c+1,f=0,o=!0;else{if(a===G)break;o&&a>=k&&a<=z?f=f*10+a-k:o=!1}}return d(c),c}function x(e){let s=[],t=0;for(;s.length<6;){let d=e.indexOf(" ",t);if(d===-1)return;s.push(e.slice(t,d)),t=d+1}let[,r,i,n,f,o]=s;return r&&i&&n&&f&&o&&t<e.length?{sample:r,haplotype:i,contig:n,start:f,end:o,body:t}:void 0}function K(e){let s=e.split(`
1
+ import{a as I,b as L,f as S,h as w}from"./chunk-DEWZOJSC.js";import{p as T}from"./chunk-SPL3UO2D.js";var O=62,Z=60,G=9,k=48,z=57,_=/^(?:LN:i|SN:Z|SO:i|SR:i):/,q=/^[PEOUFG]\t/,C=e=>e.endsWith("\r")?e.slice(0,-1):e;function P(){return{nodes:new T(new Int32Array(65536)),reversed:new T(new Uint8Array(65536))}}var R=class{constructor(){this.names=[],this.byName=new Map,this.byNumber=new Map}has(e){return this.byName.has(e)}add(e){let s=this.names.length;this.byName.set(e,s),this.names.push(e);let t=+e;return Number.isSafeInteger(t)&&String(t)===e&&this.byNumber.set(t,s),s}of(e){return this.byName.get(e)??this.add(e)}ofNumber(e){return this.byNumber.get(e)}};function U(e){let[,s,t="*",...r]=e.split(" ");if(!s||/^\d+$/.test(t))return;let i=t==="*"?0:t.length,n,f,o;for(let c of r){if(!_.test(c))return;let a=c.slice(5),p=c.slice(0,2);p==="LN"?i=+a:p==="SN"?n=a:p==="SO"?f=+a:o=+a}return{name:s,length:i,stable:n!==void 0&&f!==void 0&&o!==void 0?{refName:n,start:f,rank:o}:void 0}}function $(e,s,t,r){let i=0,n=-1,f=0,o=!0,d=a=>{if(n>=0&&a>n){let p=o&&a-n<16&&(a-n===1||e.charCodeAt(n)!==k)?t.ofNumber(f):void 0;r.nodes.push(p??t.of(e.slice(n,a))),r.reversed.push(i)}},c=s;for(;c<e.length;c++){let a=e.charCodeAt(c);if(a===O||a===Z)d(c),i=a===Z?1:0,n=c+1,f=0,o=!0;else{if(a===G)break;o&&a>=k&&a<=z?f=f*10+a-k:o=!1}}return d(c),c}function x(e){let s=[],t=0;for(;s.length<6;){let d=e.indexOf(" ",t);if(d===-1)return;s.push(e.slice(t,d)),t=d+1}let[,r,i,n,f,o]=s;return r&&i&&n&&f&&o&&t<e.length?{sample:r,haplotype:i,contig:n,start:f,end:o,body:t}:void 0}function K(e){let s=e.split(`
2
2
  `),t=new R,r=[],i=[],n=[],f=[],o=[],d=new Map;for(let u of s){if(q.test(u))return;if(u.startsWith("S ")){let l=U(C(u));if(!l||t.has(l.name))return;t.add(l.name),r.push(l.length);let h=-1;l.stable&&(h=d.get(l.stable.refName)??o.length,h===o.length&&(o.push(l.stable.refName),d.set(l.stable.refName,h))),i.push(h),n.push(l.stable?.start??0),f.push(l.stable?.rank??0)}}let c=[],a=[],p=[],v=[],E=[],W=[],y=[0],g=P(),A=new w,N=new w;for(let u of s)if(u.startsWith("L ")){let[,l,h,b,m]=C(u).split(" ");l&&b&&m&&(c.push(t.of(l)),a.push(t.of(b)),p.push((h==="-"?1:0)|(m==="-"?2:0)))}else if(u.startsWith("W ")){let l=C(u),h=x(l);if(h){v.push(`${h.sample}#${h.haplotype}#${h.contig}`),E.push(h.start==="*"?0:+h.start),W.push(h.end==="*"?-1:+h.end);let b=$(l,h.body,t,g),m=F(l,b);if(m===void 0||(m.before&&A.push(m.before),m.after&&N.push(m.after),g.nodes.length===y.at(-1)))return;y.push(g.nodes.length)}}if(![A.kinds.length,N.kinds.length].some(u=>u>0&&u<v.length))return{nodes:{names:t.names,lengths:Int32Array.from(r),refs:Int32Array.from(i),starts:Float64Array.from(n),ranks:Int32Array.from(f),refNames:o},links:{from:Int32Array.from(c),to:Int32Array.from(a),strands:Uint8Array.from(p)},walks:{names:v,starts:Float64Array.from(E),ends:Float64Array.from(W),offsets:Int32Array.from(y),steps:g.nodes.data.slice(0,g.nodes.length),reversed:g.reversed.data.slice(0,g.reversed.length),...B(v.length,A,N)}}}function F(e,s){let t={};for(let r of s<e.length?e.slice(s+1).split(" "):[]){let i=r.slice(5);if(r.startsWith(`${I}:Z:`)){if(t.before=S(i),!t.before)return}else if(r.startsWith(`${L}:Z:`)&&(t.after=S(i),!t.after))return}return t}function B(e,s,t){return{...s.kinds.length===e&&e>0?{before:s.table()}:{},...t.kinds.length===e&&e>0?{after:t.table()}:{}}}var D=/([><])([^><]+)/g;function M(e){if(!e.startsWith(">")&&!e.startsWith("<"))return;let s=[];for(let[,t,r]of e.matchAll(D))s.push({name:r,strand:t===">"?"+":"-"});return s}function Q(e){let s=e.trimEnd(),t=s.split(" ");if(t.length<12||s.startsWith("#"))return;let r=M(t[5]);if(!r)return;let i,n=!1;for(let f=12;f<t.length;f++){let o=t[f];o.startsWith("cs:Z:")?i=o.slice(5):o==="tp:A:S"&&(n=!0)}return{name:t[0],queryLength:+t[1],queryStart:+t[2],queryEnd:+t[3],strand:t[4]==="-"?"-":"+",path:r,pathLength:+t[6],pathStart:+t[7],pathEnd:+t[8],matches:+t[9],blockLength:+t[10],mappingQuality:+t[11],secondary:n,...i===void 0?{}:{cs:i}}}function Y(e){let s=[];for(let t of e.split(`
3
3
  `)){let r=Q(t);r&&s.push(r)}return s}var j=/:(\d+)|=([A-Za-z]+)|\*[a-zA-Z]([a-zA-Z])|\+([A-Za-z]+)|-([A-Za-z]+)|~[a-z]{2}(\d+)[a-z]{2}/g;function tt(e){let s=[];for(let t of e.matchAll(j))t[1]!==void 0?s.push({op:"match",length:+t[1]}):t[2]!==void 0?s.push({op:"match",length:t[2].length}):t[3]!==void 0?s.push({op:"substitution",seq:t[3].toUpperCase()}):t[4]!==void 0?s.push({op:"insertion",seq:t[4].toUpperCase()}):t[5]!==void 0?s.push({op:"deletion",length:t[5].length}):t[6]!==void 0&&s.push({op:"match",length:+t[6]});return s}export{K as a,Q as b,Y as c,tt as d};
4
- //# sourceMappingURL=chunk-DUPBXBYE.js.map
4
+ //# sourceMappingURL=chunk-POUV7OPY.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.7.3/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-VSSIYQYF.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.7.3/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-5OJZV6YT.js"],
3
+ "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.11.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-VSSIYQYF.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.11.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-5OJZV6YT.js"],
4
4
  "sourcesContent": ["import {\n END_STOP_TAG,\n START_STOP_TAG,\n StopColumns,\n parseStopTag\n} from \"./chunk-LG2UK4MB.js\";\nimport {\n Column\n} from \"./chunk-ZPZ7GNBT.js\";\n\n// src/gfa/gfaTables.ts\nvar GT = 62;\nvar LT = 60;\nvar TAB = 9;\nvar ZERO = 48;\nvar NINE = 57;\nvar TABLE_TAG = /^(?:LN:i|SN:Z|SO:i|SR:i):/;\nvar UNTABLED_RECORD = /^[PEOUFG]\\t/;\nvar trimCR = (line) => line.endsWith(\"\\r\") ? line.slice(0, -1) : line;\nfunction stepColumns() {\n return {\n nodes: new Column(new Int32Array(1 << 16)),\n reversed: new Column(new Uint8Array(1 << 16))\n };\n}\nvar SegmentIndex = class {\n constructor() {\n this.names = [];\n this.byName = /* @__PURE__ */ new Map();\n // ids that are plain decimal, so a walk step finds its segment without\n // slicing a string out of the body\n this.byNumber = /* @__PURE__ */ new Map();\n }\n has(name) {\n return this.byName.has(name);\n }\n add(name) {\n const i = this.names.length;\n this.byName.set(name, i);\n this.names.push(name);\n const n = +name;\n if (Number.isSafeInteger(n) && String(n) === name) {\n this.byNumber.set(n, i);\n }\n return i;\n }\n of(name) {\n return this.byName.get(name) ?? this.add(name);\n }\n ofNumber(n) {\n return this.byNumber.get(n);\n }\n};\nfunction readSegment(line) {\n const [, name, sequence = \"*\", ...tags] = line.split(\"\t\");\n if (!name || /^\\d+$/.test(sequence)) {\n return void 0;\n }\n let length = sequence === \"*\" ? 0 : sequence.length;\n let refName;\n let start;\n let rank;\n for (const tag of tags) {\n if (!TABLE_TAG.test(tag)) {\n return void 0;\n }\n const value = tag.slice(5);\n const key = tag.slice(0, 2);\n if (key === \"LN\") {\n length = +value;\n } else if (key === \"SN\") {\n refName = value;\n } else if (key === \"SO\") {\n start = +value;\n } else {\n rank = +value;\n }\n }\n const stable = refName !== void 0 && start !== void 0 && rank !== void 0 ? { refName, start, rank } : void 0;\n return { name, length, stable };\n}\nfunction readWalkBody(line, from, segments, steps) {\n let reversed = 0;\n let start = -1;\n let value = 0;\n let decimal = true;\n const finish = (end) => {\n if (start >= 0 && end > start) {\n const node = decimal && end - start < 16 && (end - start === 1 || line.charCodeAt(start) !== ZERO) ? segments.ofNumber(value) : void 0;\n steps.nodes.push(node ?? segments.of(line.slice(start, end)));\n steps.reversed.push(reversed);\n }\n };\n let i = from;\n for (; i < line.length; i++) {\n const ch = line.charCodeAt(i);\n if (ch === GT || ch === LT) {\n finish(i);\n reversed = ch === LT ? 1 : 0;\n start = i + 1;\n value = 0;\n decimal = true;\n } else if (ch === TAB) {\n break;\n } else if (decimal && ch >= ZERO && ch <= NINE) {\n value = value * 10 + ch - ZERO;\n } else {\n decimal = false;\n }\n }\n finish(i);\n return i;\n}\nfunction walkFields(line) {\n const fields = [];\n let at = 0;\n while (fields.length < 6) {\n const tab = line.indexOf(\"\t\", at);\n if (tab === -1) {\n return void 0;\n }\n fields.push(line.slice(at, tab));\n at = tab + 1;\n }\n const [, sample, haplotype, contig, start, end] = fields;\n return sample && haplotype && contig && start && end && at < line.length ? { sample, haplotype, contig, start, end, body: at } : void 0;\n}\nfunction gfaTables(text) {\n const lines = text.split(\"\\n\");\n const segments = new SegmentIndex();\n const lengths = [];\n const refs = [];\n const starts = [];\n const ranks = [];\n const refNames = [];\n const refIndex = /* @__PURE__ */ new Map();\n for (const raw of lines) {\n if (UNTABLED_RECORD.test(raw)) {\n return void 0;\n }\n if (raw.startsWith(\"S\t\")) {\n const s = readSegment(trimCR(raw));\n if (!s || segments.has(s.name)) {\n return void 0;\n }\n segments.add(s.name);\n lengths.push(s.length);\n let ref = -1;\n if (s.stable) {\n ref = refIndex.get(s.stable.refName) ?? refNames.length;\n if (ref === refNames.length) {\n refNames.push(s.stable.refName);\n refIndex.set(s.stable.refName, ref);\n }\n }\n refs.push(ref);\n starts.push(s.stable?.start ?? 0);\n ranks.push(s.stable?.rank ?? 0);\n }\n }\n const from = [];\n const to = [];\n const strands = [];\n const names = [];\n const walkStarts = [];\n const walkEnds = [];\n const offsets = [0];\n const steps = stepColumns();\n const before = new StopColumns();\n const after = new StopColumns();\n for (const raw of lines) {\n if (raw.startsWith(\"L\t\")) {\n const [, source, strand1, target, strand2] = trimCR(raw).split(\"\t\");\n if (source && target && strand2) {\n from.push(segments.of(source));\n to.push(segments.of(target));\n strands.push((strand1 === \"-\" ? 1 : 0) | (strand2 === \"-\" ? 2 : 0));\n }\n } else if (raw.startsWith(\"W\t\")) {\n const line = trimCR(raw);\n const w = walkFields(line);\n if (w) {\n names.push(`${w.sample}#${w.haplotype}#${w.contig}`);\n walkStarts.push(w.start === \"*\" ? 0 : +w.start);\n walkEnds.push(w.end === \"*\" ? -1 : +w.end);\n const end = readWalkBody(line, w.body, segments, steps);\n const tags = walkTags(line, end);\n if (tags === void 0) {\n return void 0;\n }\n if (tags.before) {\n before.push(tags.before);\n }\n if (tags.after) {\n after.push(tags.after);\n }\n if (steps.nodes.length === offsets.at(-1)) {\n return void 0;\n }\n offsets.push(steps.nodes.length);\n }\n }\n }\n if ([before.kinds.length, after.kinds.length].some(\n (n) => n > 0 && n < names.length\n )) {\n return void 0;\n }\n return {\n nodes: {\n names: segments.names,\n lengths: Int32Array.from(lengths),\n refs: Int32Array.from(refs),\n starts: Float64Array.from(starts),\n ranks: Int32Array.from(ranks),\n refNames\n },\n links: {\n from: Int32Array.from(from),\n to: Int32Array.from(to),\n strands: Uint8Array.from(strands)\n },\n walks: {\n names,\n starts: Float64Array.from(walkStarts),\n ends: Float64Array.from(walkEnds),\n offsets: Int32Array.from(offsets),\n steps: steps.nodes.data.slice(0, steps.nodes.length),\n reversed: steps.reversed.data.slice(0, steps.reversed.length),\n ...stopColumns(names.length, before, after)\n }\n };\n}\nfunction walkTags(line, from) {\n const out = {};\n for (const tag of from < line.length ? line.slice(from + 1).split(\"\t\") : []) {\n const value = tag.slice(5);\n if (tag.startsWith(`${START_STOP_TAG}:Z:`)) {\n out.before = parseStopTag(value);\n if (!out.before) {\n return void 0;\n }\n } else if (tag.startsWith(`${END_STOP_TAG}:Z:`)) {\n out.after = parseStopTag(value);\n if (!out.after) {\n return void 0;\n }\n }\n }\n return out;\n}\nfunction stopColumns(walks, before, after) {\n return {\n ...before.kinds.length === walks && walks > 0 ? { before: before.table() } : {},\n ...after.kinds.length === walks && walks > 0 ? { after: after.table() } : {}\n };\n}\n\nexport {\n gfaTables\n};\n", "// src/gaf/parseGaf.ts\nvar STEP = /([><])([^><]+)/g;\nfunction parseGafPath(column) {\n if (!column.startsWith(\">\") && !column.startsWith(\"<\")) {\n return void 0;\n }\n const steps = [];\n for (const [, arrow, name] of column.matchAll(STEP)) {\n steps.push({ name, strand: arrow === \">\" ? \"+\" : \"-\" });\n }\n return steps;\n}\nfunction parseGafLine(text) {\n const line = text.trimEnd();\n const columns = line.split(\"\t\");\n if (columns.length < 12 || line.startsWith(\"#\")) {\n return void 0;\n }\n const path = parseGafPath(columns[5]);\n if (!path) {\n return void 0;\n }\n let cs;\n let secondary = false;\n for (let i = 12; i < columns.length; i++) {\n const tag = columns[i];\n if (tag.startsWith(\"cs:Z:\")) {\n cs = tag.slice(5);\n } else if (tag === \"tp:A:S\") {\n secondary = true;\n }\n }\n return {\n name: columns[0],\n queryLength: +columns[1],\n queryStart: +columns[2],\n queryEnd: +columns[3],\n strand: columns[4] === \"-\" ? \"-\" : \"+\",\n path,\n pathLength: +columns[6],\n pathStart: +columns[7],\n pathEnd: +columns[8],\n matches: +columns[9],\n blockLength: +columns[10],\n mappingQuality: +columns[11],\n secondary,\n ...cs === void 0 ? {} : { cs }\n };\n}\nfunction parseGaf(text) {\n const records = [];\n for (const line of text.split(\"\\n\")) {\n const record = parseGafLine(line);\n if (record) {\n records.push(record);\n }\n }\n return records;\n}\nvar CS_OP = /:(\\d+)|=([A-Za-z]+)|\\*[a-zA-Z]([a-zA-Z])|\\+([A-Za-z]+)|-([A-Za-z]+)|~[a-z]{2}(\\d+)[a-z]{2}/g;\nfunction parseCs(cs) {\n const ops = [];\n for (const m of cs.matchAll(CS_OP)) {\n if (m[1] !== void 0) {\n ops.push({ op: \"match\", length: +m[1] });\n } else if (m[2] !== void 0) {\n ops.push({ op: \"match\", length: m[2].length });\n } else if (m[3] !== void 0) {\n ops.push({ op: \"substitution\", seq: m[3].toUpperCase() });\n } else if (m[4] !== void 0) {\n ops.push({ op: \"insertion\", seq: m[4].toUpperCase() });\n } else if (m[5] !== void 0) {\n ops.push({ op: \"deletion\", length: m[5].length });\n } else if (m[6] !== void 0) {\n ops.push({ op: \"match\", length: +m[6] });\n }\n }\n return ops;\n}\n\nexport {\n parseGafPath,\n parseGafLine,\n parseGaf,\n parseCs\n};\n"],
5
5
  "mappings": "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",
6
6
  "names": ["GT", "LT", "TAB", "ZERO", "NINE", "TABLE_TAG", "UNTABLED_RECORD", "trimCR", "line", "stepColumns", "Column", "SegmentIndex", "name", "i", "n", "readSegment", "sequence", "tags", "length", "refName", "start", "rank", "tag", "value", "key", "readWalkBody", "from", "segments", "steps", "reversed", "decimal", "finish", "end", "node", "ch", "walkFields", "fields", "at", "tab", "sample", "haplotype", "contig", "gfaTables", "text", "lines", "lengths", "refs", "starts", "ranks", "refNames", "refIndex", "raw", "s", "ref", "to", "strands", "names", "walkStarts", "walkEnds", "offsets", "before", "StopColumns", "after", "source", "strand1", "target", "strand2", "w", "walkTags", "stopColumns", "out", "START_STOP_TAG", "parseStopTag", "END_STOP_TAG", "walks", "STEP", "parseGafPath", "column", "steps", "arrow", "name", "parseGafLine", "text", "line", "columns", "path", "cs", "secondary", "i", "tag", "parseGaf", "records", "record", "CS_OP", "parseCs", "ops", "m"]
@@ -1,2 +1,2 @@
1
- import{a as p}from"./chunk-K4TFAHGC.js";function b(t,s,e){let n=t.get(s);n?n.push(e):t.set(s,[e])}function F(t,s,e){let n=t.get(s);n?n.add(e):t.set(s,new Set([e]))}function m(t,s){let e=new Map;for(let n of t)b(e,s(n),n);return e}function g(t,s){let e=0,n=t;for(;e<n;){let r=e+n>>1;s(r)?e=r+1:n=r}return e}var l=0;function _(t){return t.stable!==void 0}function w(t){return t.stable?.rank===l}function G(t){return t.stable!==void 0&&t.stable.rank>l}function U(t){return t.nodes.filter(w)}function C(t,s){return t.stable.start<s.end&&t.stable.start+t.length>s.start}function K(t){let s={};for(let e of t)s[e.id]=[{x:e.stable.start,y:0},{x:e.stable.start+e.length,y:0}];return s}function T(t,s){return g(t.length,e=>t[e].stable.start<s)}function y(t){let s=1/0,e=-1/0;for(let n of t)s=Math.min(s,n.stable.start),e=Math.max(e,n.stable.start+n.length);return e-s}function $(t,s){return s&&s.end>s.start?s.end-s.start:y(t)}var A=class{constructor(t){this.segments=t.segments,this.offsets=t.offsets,this.path=t.path,this.start=t.start,this.reversed=t.reversed,this.paths=t.paths,this.samples=t.samples,this.slots=new Map(this.segments.map((s,e)=>[s,e]))}static from(t){let s=new u;for(let[e,n]of t){s.declare(e);for(let r of n)s.add(e,r.path,r.sample,r.start,r.strand==="-")}return s.build()}get size(){return this.segments.length}slot(t){return this.slots.get(t)??-1}pathIndex(t){return this.paths.indexOf(t)}firstBy(t,s){for(let e=this.offsets[t];e<this.offsets[t+1];e++)if(this.path[e]===s)return e;return-1}replay(){let t=new Map;return(s,e)=>{if(s<0||e<0)return-1;let n=s*this.paths.length+e,r=this.offsets[s+1],a=t.get(n)??this.offsets[s];for(;a<r&&this.path[a]!==e;)a++;return t.set(n,a+1),a<r?a:-1}}filter(t,s=()=>!0){let e=this.paths.map(t),n=new u;return this.segments.forEach((r,a)=>{if(!s(r))return;let h=n.declare(r);for(let o=this.offsets[a];o<this.offsets[a+1];o++){let i=this.path[o];e[i]&&n.addAt(h,n.pathOf(this.paths[i],this.samples[i]),this.start[o],this.reversed[o]===1)}}),n.build()}strand(t){return this.reversed[t]?"-":"+"}visit(t){let s=this.path[t];return{path:this.paths[s],sample:this.samples[s],start:this.start[t],strand:this.strand(t)}}visitsAt(t){let s=[];for(let e=this.offsets[t];e<this.offsets[t+1];e++)s.push(this.visit(e));return s}get(t){let s=this.slot(t);return s<0?void 0:this.visitsAt(s)}has(t){return this.slots.has(t)}keys(){return this.segments[Symbol.iterator]()}*values(){for(let t=0;t<this.segments.length;t++)yield this.visitsAt(t)}*entries(){for(let t=0;t<this.segments.length;t++)yield[this.segments[t],this.visitsAt(t)]}[Symbol.iterator](){return this.entries()}},d=class{constructor(t){this.data=t,this.length=0}push(t){if(this.length===this.data.length){let s=new this.data.constructor(this.data.length*2);s.set(this.data),this.data=s}this.data[this.length++]=t}},u=class{constructor(){this.segments=[],this.slots=new Map,this.paths=[],this.samples=[],this.pathIndex=new Map,this.slot=new d(new Int32Array(1024)),this.path=new d(new Int32Array(1024)),this.start=new d(new Float64Array(1024)),this.reversed=new d(new Uint8Array(1024))}declare(t){let s=this.slots.get(t);return s===void 0&&(s=this.segments.length,this.slots.set(t,s),this.segments.push(t)),s}pathOf(t,s){let e=this.pathIndex.get(t);return e===void 0&&(e=this.paths.length,this.pathIndex.set(t,e),this.paths.push(t),this.samples.push(s)),e}add(t,s,e,n,r){this.addAt(this.declare(t),this.pathOf(s,e),n,r)}addAt(t,s,e,n){this.slot.push(t),this.path.push(s),this.start.push(e),this.reversed.push(n?1:0)}build(){let t=this.slot.length,s=this.segments.length,e=new Int32Array(s+1),n=this.slot.data;for(let i=0;i<t;i++)e[n[i]+1]++;for(let i=0;i<s;i++)e[i+1]+=e[i];let r=e.slice(0,s),a=new Int32Array(t),h=new Float64Array(t),o=new Uint8Array(t);for(let i=0;i<t;i++){let f=r[n[i]]++;a[f]=this.path.data[i],h[f]=this.start.data[i],o[f]=this.reversed.data[i]}return new A({segments:this.segments,offsets:e,path:a,start:h,reversed:o,paths:this.paths,samples:this.samples})}};var v=/:(\d+)-\d+$/,x=/^([^#]*#[^#]*#[^#[]*)#(\d+)(?:\[(\d+)-\d+\])?$/,I=/\[(\d+)-\d+\]$/;function E(t){let s=x.exec(t);if(s)return{name:s[1],start:+s[2]+ +(s[3]??0)};let e=v.exec(t)??I.exec(t);return e?{name:t.slice(0,e.index),start:+e[1]}:{name:t,start:0}}function Q(t,s){let e=[],n=new u;for(let r of t){let a=p(r.name),h=n.pathOf(r.name,a),o=r.start;for(let i of r.steps)n.addAt(n.declare(i.id),h,o,i.strand==="-"),o+=s(i.id);e.push({name:r.name,sample:a,start:r.start,length:o-r.start})}return{anchorPaths:e,pathVisits:n.build()}}function P(t,s){return t.find(n=>n.sample===s||n.name===s)??t[0]}var R=1;function N(t,s,e,n){let r=s.slot(t.name);if(r<0||s.offsets[r]===s.offsets[r+1])return t;let a=s.firstBy(r,e),h=a>=0?a:s.offsets[r];return{...t,stable:{refName:s.paths[s.path[h]],start:s.start[h],rank:a>=0?l:R,strand:s.strand(h)},samples:n(r)}}function O(t){let s=[...new Set(t.samples)].sort(),e=new Map(s.map((h,o)=>[h,o])),n=Int32Array.from(t.samples,h=>e.get(h)),r=new Uint8Array(s.length),a=new Int32Array(s.length);return h=>{let o=0;for(let f=t.offsets[h];f<t.offsets[h+1];f++){let c=n[t.path[f]];r[c]===0&&(r[c]=1,a[o++]=c)}let i;if(o===s.length)i=s,r.fill(0);else if(o*8<s.length){let f=a.subarray(0,o);f.forEach(c=>r[c]=0),i=Array.from(f.sort(),c=>s[c])}else{i=[];for(let f=0;f<s.length;f++)r[f]===1&&(r[f]=0,i.push(s[f]))}return i}}function k(t,s){let{anchorPaths:e,pathVisits:n}=t,r=e&&n?P(e,s):void 0;if(!r||!e||!n)return t;let a=O(n),h=n.pathIndex(r.name);return{...t,nodes:t.nodes.map(o=>N(o,n,h,a)),anchoredBy:"paths",referencePath:r.name}}function Y(t,s){if(t.anchoredBy!=="tags")return k(t,s);let e=S(t);return e?{...t,referencePath:e}:t}function S(t){let s=t.nodes.find(e=>e.stable?.rank===0)?.stable?.refName;return s!==void 0&&t.anchorPaths?.some(e=>e.name===s)?s:void 0}function Z(t,s){if(!t.anchorPaths)return;let e=new Map(t.nodes.map(a=>[a.id,a.length])),n=(a,h=a.length)=>{let o=0;for(let i=0;i<h;i++)o+=e.get(a[i])??0;return o},r=m(t.paths??[],a=>E(a.name).name);return t.anchorPaths.map(a=>{let h=r.get(a.name),o=h?.length===1?h[0]:void 0,i=o&&s.get(o.name);return o&&i?{...a,start:a.start+n(o.nodeIds,i.first),length:n(i.nodeIds)}:a})}function tt(t){let{pathVisits:s}=t,e=new Map;return n=>{let r=e.get(n.id);if(!r){r=[];let a=s?s.slot(n.name):-1,h=a>=0?s.pathIndex(n.stable.refName):-1;if(h>=0)for(let o=s.offsets[a];o<s.offsets[a+1];o++)s.path[o]===h&&r.push(s.start[o]);r.length<2&&(r=[n.stable.start]),e.set(n.id,r)}return r}}export{b as a,F as b,m as c,g as d,l as e,_ as f,w as g,G as h,U as i,C as j,K as k,T as l,y as m,$ as n,A as o,d as p,u as q,E as r,Q as s,P as t,k as u,Y as v,Z as w,tt as x};
2
- //# sourceMappingURL=chunk-CNNZDE6I.js.map
1
+ import{a as p}from"./chunk-FCMXEFJA.js";function b(t,s,e){let n=t.get(s);n?n.push(e):t.set(s,[e])}function F(t,s,e){let n=t.get(s);n?n.add(e):t.set(s,new Set([e]))}function m(t,s){let e=new Map;for(let n of t)b(e,s(n),n);return e}function g(t,s){let e=0,n=t;for(;e<n;){let r=e+n>>1;s(r)?e=r+1:n=r}return e}var l=0;function _(t){return t.stable!==void 0}function w(t){return t.stable?.rank===l}function G(t){return t.stable!==void 0&&t.stable.rank>l}function U(t){return t.nodes.filter(w)}function C(t,s){return t.stable.start<s.end&&t.stable.start+t.length>s.start}function K(t){let s={};for(let e of t)s[e.id]=[{x:e.stable.start,y:0},{x:e.stable.start+e.length,y:0}];return s}function T(t,s){return g(t.length,e=>t[e].stable.start<s)}function y(t){let s=1/0,e=-1/0;for(let n of t)s=Math.min(s,n.stable.start),e=Math.max(e,n.stable.start+n.length);return e-s}function $(t,s){return s&&s.end>s.start?s.end-s.start:y(t)}var A=class{constructor(t){this.segments=t.segments,this.offsets=t.offsets,this.path=t.path,this.start=t.start,this.reversed=t.reversed,this.paths=t.paths,this.samples=t.samples,this.slots=new Map(this.segments.map((s,e)=>[s,e]))}static from(t){let s=new u;for(let[e,n]of t){s.declare(e);for(let r of n)s.add(e,r.path,r.sample,r.start,r.strand==="-")}return s.build()}get size(){return this.segments.length}slot(t){return this.slots.get(t)??-1}pathIndex(t){return this.paths.indexOf(t)}firstBy(t,s){for(let e=this.offsets[t];e<this.offsets[t+1];e++)if(this.path[e]===s)return e;return-1}replay(){let t=new Map;return(s,e)=>{if(s<0||e<0)return-1;let n=s*this.paths.length+e,r=this.offsets[s+1],a=t.get(n)??this.offsets[s];for(;a<r&&this.path[a]!==e;)a++;return t.set(n,a+1),a<r?a:-1}}filter(t,s=()=>!0){let e=this.paths.map(t),n=new u;return this.segments.forEach((r,a)=>{if(!s(r))return;let h=n.declare(r);for(let o=this.offsets[a];o<this.offsets[a+1];o++){let i=this.path[o];e[i]&&n.addAt(h,n.pathOf(this.paths[i],this.samples[i]),this.start[o],this.reversed[o]===1)}}),n.build()}strand(t){return this.reversed[t]?"-":"+"}visit(t){let s=this.path[t];return{path:this.paths[s],sample:this.samples[s],start:this.start[t],strand:this.strand(t)}}visitsAt(t){let s=[];for(let e=this.offsets[t];e<this.offsets[t+1];e++)s.push(this.visit(e));return s}get(t){let s=this.slot(t);return s<0?void 0:this.visitsAt(s)}has(t){return this.slots.has(t)}keys(){return this.segments[Symbol.iterator]()}*values(){for(let t=0;t<this.segments.length;t++)yield this.visitsAt(t)}*entries(){for(let t=0;t<this.segments.length;t++)yield[this.segments[t],this.visitsAt(t)]}[Symbol.iterator](){return this.entries()}},d=class{constructor(t){this.data=t,this.length=0}push(t){if(this.length===this.data.length){let s=new this.data.constructor(this.data.length*2);s.set(this.data),this.data=s}this.data[this.length++]=t}},u=class{constructor(){this.segments=[],this.slots=new Map,this.paths=[],this.samples=[],this.pathIndex=new Map,this.slot=new d(new Int32Array(1024)),this.path=new d(new Int32Array(1024)),this.start=new d(new Float64Array(1024)),this.reversed=new d(new Uint8Array(1024))}declare(t){let s=this.slots.get(t);return s===void 0&&(s=this.segments.length,this.slots.set(t,s),this.segments.push(t)),s}pathOf(t,s){let e=this.pathIndex.get(t);return e===void 0&&(e=this.paths.length,this.pathIndex.set(t,e),this.paths.push(t),this.samples.push(s)),e}add(t,s,e,n,r){this.addAt(this.declare(t),this.pathOf(s,e),n,r)}addAt(t,s,e,n){this.slot.push(t),this.path.push(s),this.start.push(e),this.reversed.push(n?1:0)}build(){let t=this.slot.length,s=this.segments.length,e=new Int32Array(s+1),n=this.slot.data;for(let i=0;i<t;i++)e[n[i]+1]++;for(let i=0;i<s;i++)e[i+1]+=e[i];let r=e.slice(0,s),a=new Int32Array(t),h=new Float64Array(t),o=new Uint8Array(t);for(let i=0;i<t;i++){let f=r[n[i]]++;a[f]=this.path.data[i],h[f]=this.start.data[i],o[f]=this.reversed.data[i]}return new A({segments:this.segments,offsets:e,path:a,start:h,reversed:o,paths:this.paths,samples:this.samples})}};var v=/:(\d+)-\d+$/,x=/^([^#]*#[^#]*#[^#[]*)#(\d+)(?:\[(\d+)-\d+\])?$/,I=/\[(\d+)-\d+\]$/;function E(t){let s=x.exec(t);if(s)return{name:s[1],start:+s[2]+ +(s[3]??0)};let e=v.exec(t)??I.exec(t);return e?{name:t.slice(0,e.index),start:+e[1]}:{name:t,start:0}}function Q(t,s){let e=[],n=new u;for(let r of t){let a=p(r.name),h=n.pathOf(r.name,a),o=r.start;for(let i of r.steps)n.addAt(n.declare(i.id),h,o,i.strand==="-"),o+=s(i.id);e.push({name:r.name,sample:a,start:r.start,length:o-r.start})}return{anchorPaths:e,pathVisits:n.build()}}function P(t,s){return t.find(n=>n.sample===s||n.name===s)??t[0]}var R=1;function N(t,s,e,n){let r=s.slot(t.name);if(r<0||s.offsets[r]===s.offsets[r+1])return t;let a=s.firstBy(r,e),h=a>=0?a:s.offsets[r];return{...t,stable:{refName:s.paths[s.path[h]],start:s.start[h],rank:a>=0?l:R,strand:s.strand(h)},samples:n(r)}}function O(t){let s=[...new Set(t.samples)].sort(),e=new Map(s.map((h,o)=>[h,o])),n=Int32Array.from(t.samples,h=>e.get(h)),r=new Uint8Array(s.length),a=new Int32Array(s.length);return h=>{let o=0;for(let f=t.offsets[h];f<t.offsets[h+1];f++){let c=n[t.path[f]];r[c]===0&&(r[c]=1,a[o++]=c)}let i;if(o===s.length)i=s,r.fill(0);else if(o*8<s.length){let f=a.subarray(0,o);f.forEach(c=>r[c]=0),i=Array.from(f.sort(),c=>s[c])}else{i=[];for(let f=0;f<s.length;f++)r[f]===1&&(r[f]=0,i.push(s[f]))}return i}}function k(t,s){let{anchorPaths:e,pathVisits:n}=t,r=e&&n?P(e,s):void 0;if(!r||!e||!n)return t;let a=O(n),h=n.pathIndex(r.name);return{...t,nodes:t.nodes.map(o=>N(o,n,h,a)),anchoredBy:"paths",referencePath:r.name}}function Y(t,s){if(t.anchoredBy!=="tags")return k(t,s);let e=S(t);return e?{...t,referencePath:e}:t}function S(t){let s=t.nodes.find(e=>e.stable?.rank===0)?.stable?.refName;return s!==void 0&&t.anchorPaths?.some(e=>e.name===s)?s:void 0}function Z(t,s){if(!t.anchorPaths)return;let e=new Map(t.nodes.map(a=>[a.id,a.length])),n=(a,h=a.length)=>{let o=0;for(let i=0;i<h;i++)o+=e.get(a[i])??0;return o},r=m(t.paths??[],a=>E(a.name).name);return t.anchorPaths.map(a=>{let h=r.get(a.name),o=h?.length===1?h[0]:void 0,i=o&&s.get(o.name);return o&&i?{...a,start:a.start+n(o.nodeIds,i.first),length:n(i.nodeIds)}:a})}function tt(t){let{pathVisits:s}=t,e=new Map;return n=>{let r=e.get(n.id);if(!r){r=[];let a=s?s.slot(n.name):-1,h=a>=0?s.pathIndex(n.stable.refName):-1;if(h>=0)for(let o=s.offsets[a];o<s.offsets[a+1];o++)s.path[o]===h&&r.push(s.start[o]);r.length<2&&(r=[n.stable.start]),e.set(n.id,r)}return r}}export{b as a,F as b,m as c,g as d,l as e,_ as f,w as g,G as h,U as i,C as j,K as k,T as l,y as m,$ as n,A as o,d as p,u as q,E as r,Q as s,P as t,k as u,Y as v,Z as w,tt as x};
2
+ //# sourceMappingURL=chunk-SPL3UO2D.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.7.3/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-BSOZW3FC.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.7.3/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-HOAIOEI7.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.7.3/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-RJWPJCIB.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.7.3/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-ZPZ7GNBT.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.7.3/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-3YBP46PB.js"],
3
+ "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.11.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-BSOZW3FC.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.11.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-HOAIOEI7.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.11.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-RJWPJCIB.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.11.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-ZPZ7GNBT.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.11.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-3YBP46PB.js"],
4
4
  "sourcesContent": ["// src/util/groups.ts\nfunction pushTo(map, key, value) {\n const list = map.get(key);\n if (list) {\n list.push(value);\n } else {\n map.set(key, [value]);\n }\n}\nfunction addTo(map, key, value) {\n const set = map.get(key);\n if (set) {\n set.add(value);\n } else {\n map.set(key, /* @__PURE__ */ new Set([value]));\n }\n}\nfunction groupBy(items, keyOf) {\n const groups = /* @__PURE__ */ new Map();\n for (const item of items) {\n pushTo(groups, keyOf(item), item);\n }\n return groups;\n}\n\nexport {\n pushTo,\n addTo,\n groupBy\n};\n", "// src/util/partitionPoint.ts\nfunction partitionPoint(n, pred) {\n let lo = 0;\n let hi = n;\n while (lo < hi) {\n const mid = lo + hi >> 1;\n if (pred(mid)) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n return lo;\n}\n\nexport {\n partitionPoint\n};\n", "import {\n partitionPoint\n} from \"./chunk-HOAIOEI7.js\";\n\n// src/anchoredNodes.ts\nvar REFERENCE_RANK = 0;\nfunction isAnchored(node) {\n return node.stable !== void 0;\n}\nfunction isBackbone(node) {\n return node.stable?.rank === REFERENCE_RANK;\n}\nfunction isOffReference(node) {\n return node.stable !== void 0 && node.stable.rank > REFERENCE_RANK;\n}\nfunction backboneNodes(graph) {\n return graph.nodes.filter(isBackbone);\n}\nfunction overlapsWindow(node, window) {\n return node.stable.start < window.end && node.stable.start + node.length > window.start;\n}\nfunction backbonePositions(backbone) {\n const positions = {};\n for (const node of backbone) {\n positions[node.id] = [\n { x: node.stable.start, y: 0 },\n { x: node.stable.start + node.length, y: 0 }\n ];\n }\n return positions;\n}\nfunction firstNodeAtOrAfter(nodes, bp) {\n return partitionPoint(nodes.length, (i) => nodes[i].stable.start < bp);\n}\nfunction backboneSpan(backbone) {\n let min = Infinity;\n let max = -Infinity;\n for (const node of backbone) {\n min = Math.min(min, node.stable.start);\n max = Math.max(max, node.stable.start + node.length);\n }\n return max - min;\n}\nfunction referenceSpan(backbone, region) {\n return region && region.end > region.start ? region.end - region.start : backboneSpan(backbone);\n}\n\nexport {\n REFERENCE_RANK,\n isAnchored,\n isBackbone,\n isOffReference,\n backboneNodes,\n overlapsWindow,\n backbonePositions,\n firstNodeAtOrAfter,\n backboneSpan,\n referenceSpan\n};\n", "// src/pathVisits.ts\nvar PathVisits = class {\n constructor(columns) {\n this.segments = columns.segments;\n this.offsets = columns.offsets;\n this.path = columns.path;\n this.start = columns.start;\n this.reversed = columns.reversed;\n this.paths = columns.paths;\n this.samples = columns.samples;\n this.slots = new Map(this.segments.map((s, i) => [s, i]));\n }\n static from(entries) {\n const builder = new PathVisitsBuilder();\n for (const [segment, visits] of entries) {\n builder.declare(segment);\n for (const v of visits) {\n builder.add(segment, v.path, v.sample, v.start, v.strand === \"-\");\n }\n }\n return builder.build();\n }\n get size() {\n return this.segments.length;\n }\n // the segment's index into `segments` and `offsets`, -1 when unvisited\n slot(segment) {\n return this.slots.get(segment) ?? -1;\n }\n pathIndex(path) {\n return this.paths.indexOf(path);\n }\n // the first of `slot`'s visits by path `p`, -1 for none\n firstBy(slot, p) {\n for (let i = this.offsets[slot]; i < this.offsets[slot + 1]; i++) {\n if (this.path[i] === p) {\n return i;\n }\n }\n return -1;\n }\n // Paths' steps replayed in walk order against their visits: the k-th call\n // for one path and segment answers that path's k-th visit there, -1 past\n // its last. A walk in pieces lists its pieces in path order, so replaying\n // the pieces in order reads each step's own visit.\n replay() {\n const cursor = /* @__PURE__ */ new Map();\n return (slot, p) => {\n if (slot < 0 || p < 0) {\n return -1;\n }\n const key = slot * this.paths.length + p;\n const end = this.offsets[slot + 1];\n let at = cursor.get(key) ?? this.offsets[slot];\n while (at < end && this.path[at] !== p) {\n at++;\n }\n cursor.set(key, at + 1);\n return at < end ? at : -1;\n };\n }\n // the visits of paths `keepPath` accepts, at segments `keepSegment` does\n filter(keepPath, keepSegment = () => true) {\n const kept = this.paths.map(keepPath);\n const builder = new PathVisitsBuilder();\n this.segments.forEach((segment, s) => {\n if (!keepSegment(segment)) {\n return;\n }\n const slot = builder.declare(segment);\n for (let i = this.offsets[s]; i < this.offsets[s + 1]; i++) {\n const p = this.path[i];\n if (kept[p]) {\n builder.addAt(\n slot,\n builder.pathOf(this.paths[p], this.samples[p]),\n this.start[i],\n this.reversed[i] === 1\n );\n }\n }\n });\n return builder.build();\n }\n strand(i) {\n return this.reversed[i] ? \"-\" : \"+\";\n }\n visit(i) {\n const p = this.path[i];\n return {\n path: this.paths[p],\n sample: this.samples[p],\n start: this.start[i],\n strand: this.strand(i)\n };\n }\n visitsAt(slot) {\n const out = [];\n for (let i = this.offsets[slot]; i < this.offsets[slot + 1]; i++) {\n out.push(this.visit(i));\n }\n return out;\n }\n get(segment) {\n const slot = this.slot(segment);\n return slot < 0 ? void 0 : this.visitsAt(slot);\n }\n has(segment) {\n return this.slots.has(segment);\n }\n keys() {\n return this.segments[Symbol.iterator]();\n }\n *values() {\n for (let s = 0; s < this.segments.length; s++) {\n yield this.visitsAt(s);\n }\n }\n *entries() {\n for (let s = 0; s < this.segments.length; s++) {\n yield [this.segments[s], this.visitsAt(s)];\n }\n }\n [Symbol.iterator]() {\n return this.entries();\n }\n};\nvar Column = class {\n constructor(data) {\n this.data = data;\n this.length = 0;\n }\n push(value) {\n if (this.length === this.data.length) {\n const grown = new this.data.constructor(\n this.data.length * 2\n );\n grown.set(this.data);\n this.data = grown;\n }\n this.data[this.length++] = value;\n }\n};\nvar PathVisitsBuilder = class {\n constructor() {\n this.segments = [];\n this.slots = /* @__PURE__ */ new Map();\n this.paths = [];\n this.samples = [];\n this.pathIndex = /* @__PURE__ */ new Map();\n this.slot = new Column(new Int32Array(1024));\n this.path = new Column(new Int32Array(1024));\n this.start = new Column(new Float64Array(1024));\n this.reversed = new Column(new Uint8Array(1024));\n }\n // a segment's place in iteration order, though it has no visits yet\n declare(segment) {\n let s = this.slots.get(segment);\n if (s === void 0) {\n s = this.segments.length;\n this.slots.set(segment, s);\n this.segments.push(segment);\n }\n return s;\n }\n // a path's index, so a caller adding many of its visits names it once\n pathOf(path, sample) {\n let p = this.pathIndex.get(path);\n if (p === void 0) {\n p = this.paths.length;\n this.pathIndex.set(path, p);\n this.paths.push(path);\n this.samples.push(sample);\n }\n return p;\n }\n add(segment, path, sample, start, reversed) {\n this.addAt(\n this.declare(segment),\n this.pathOf(path, sample),\n start,\n reversed\n );\n }\n addAt(slot, path, start, reversed) {\n this.slot.push(slot);\n this.path.push(path);\n this.start.push(start);\n this.reversed.push(reversed ? 1 : 0);\n }\n build() {\n const n = this.slot.length;\n const segments = this.segments.length;\n const offsets = new Int32Array(segments + 1);\n const slot = this.slot.data;\n for (let i = 0; i < n; i++) {\n offsets[slot[i] + 1]++;\n }\n for (let s = 0; s < segments; s++) {\n offsets[s + 1] += offsets[s];\n }\n const fill = offsets.slice(0, segments);\n const path = new Int32Array(n);\n const start = new Float64Array(n);\n const reversed = new Uint8Array(n);\n for (let i = 0; i < n; i++) {\n const at = fill[slot[i]]++;\n path[at] = this.path.data[i];\n start[at] = this.start.data[i];\n reversed[at] = this.reversed.data[i];\n }\n return new PathVisits({\n segments: this.segments,\n offsets,\n path,\n start,\n reversed,\n paths: this.paths,\n samples: this.samples\n });\n }\n};\n\nexport {\n PathVisits,\n Column,\n PathVisitsBuilder\n};\n", "import {\n PathVisitsBuilder\n} from \"./chunk-ZPZ7GNBT.js\";\nimport {\n groupBy\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n REFERENCE_RANK\n} from \"./chunk-RJWPJCIB.js\";\nimport {\n panSNSample\n} from \"./chunk-2JL2JVZ2.js\";\n\n// src/pathAnchoring.ts\nvar RANGE_SUFFIX = /:(\\d+)-\\d+$/;\nvar VG_FRAGMENT = /^([^#]*#[^#]*#[^#[]*)#(\\d+)(?:\\[(\\d+)-\\d+\\])?$/;\nvar VG_SUBRANGE = /\\[(\\d+)-\\d+\\]$/;\nfunction pathOrigin(pathName) {\n const fragment = VG_FRAGMENT.exec(pathName);\n if (fragment) {\n return { name: fragment[1], start: +fragment[2] + +(fragment[3] ?? 0) };\n }\n const match = RANGE_SUFFIX.exec(pathName) ?? VG_SUBRANGE.exec(pathName);\n return match ? { name: pathName.slice(0, match.index), start: +match[1] } : { name: pathName, start: 0 };\n}\nfunction surveyPaths(paths, lengthOf) {\n const anchorPaths = [];\n const visits = new PathVisitsBuilder();\n for (const path of paths) {\n const sample = panSNSample(path.name);\n const p = visits.pathOf(path.name, sample);\n let pos = path.start;\n for (const step of path.steps) {\n visits.addAt(visits.declare(step.id), p, pos, step.strand === \"-\");\n pos += lengthOf(step.id);\n }\n anchorPaths.push({\n name: path.name,\n sample,\n start: path.start,\n length: pos - path.start\n });\n }\n return { anchorPaths, pathVisits: visits.build() };\n}\nfunction chooseReferencePath(anchorPaths, preferred) {\n const named = anchorPaths.find(\n (p) => p.sample === preferred || p.name === preferred\n );\n return named ?? anchorPaths[0];\n}\nvar OFF_REFERENCE_RANK = 1;\nfunction anchorNode(node, visits, reference, samplesOf) {\n const slot = visits.slot(node.name);\n if (slot < 0 || visits.offsets[slot] === visits.offsets[slot + 1]) {\n return node;\n }\n const own = visits.firstBy(slot, reference);\n const anchor = own >= 0 ? own : visits.offsets[slot];\n return {\n ...node,\n stable: {\n refName: visits.paths[visits.path[anchor]],\n start: visits.start[anchor],\n rank: own >= 0 ? REFERENCE_RANK : OFF_REFERENCE_RANK,\n strand: visits.strand(anchor)\n },\n samples: samplesOf(slot)\n };\n}\nfunction sampleSorter(visits) {\n const sorted = [...new Set(visits.samples)].sort();\n const rank = new Map(sorted.map((sample, i) => [sample, i]));\n const pathRank = Int32Array.from(visits.samples, (s) => rank.get(s));\n const seen = new Uint8Array(sorted.length);\n const ranks = new Int32Array(sorted.length);\n return (slot) => {\n let n = 0;\n for (let i = visits.offsets[slot]; i < visits.offsets[slot + 1]; i++) {\n const r = pathRank[visits.path[i]];\n if (seen[r] === 0) {\n seen[r] = 1;\n ranks[n++] = r;\n }\n }\n let out;\n if (n === sorted.length) {\n out = sorted;\n seen.fill(0);\n } else if (n * 8 < sorted.length) {\n const found = ranks.subarray(0, n);\n found.forEach((r) => seen[r] = 0);\n out = Array.from(found.sort(), (r) => sorted[r]);\n } else {\n out = [];\n for (let r = 0; r < sorted.length; r++) {\n if (seen[r] === 1) {\n seen[r] = 0;\n out.push(sorted[r]);\n }\n }\n }\n return out;\n };\n}\nfunction anchorFromPaths(graph, preferred) {\n const { anchorPaths, pathVisits } = graph;\n const reference = anchorPaths && pathVisits ? chooseReferencePath(anchorPaths, preferred) : void 0;\n if (!reference || !anchorPaths || !pathVisits) {\n return graph;\n }\n const samplesOf = sampleSorter(pathVisits);\n const referenceIndex = pathVisits.pathIndex(reference.name);\n return {\n ...graph,\n nodes: graph.nodes.map(\n (node) => anchorNode(node, pathVisits, referenceIndex, samplesOf)\n ),\n anchoredBy: \"paths\",\n referencePath: reference.name\n };\n}\nfunction anchorGraph(graph, preferred) {\n if (graph.anchoredBy !== \"tags\") {\n return anchorFromPaths(graph, preferred);\n }\n const referencePath = taggedReferencePath(graph);\n return referencePath ? { ...graph, referencePath } : graph;\n}\nfunction taggedReferencePath(graph) {\n const refName = graph.nodes.find((n) => n.stable?.rank === 0)?.stable?.refName;\n return refName !== void 0 && graph.anchorPaths?.some((p) => p.name === refName) ? refName : void 0;\n}\nfunction trimOrigins(graph, kept) {\n if (!graph.anchorPaths) {\n return void 0;\n }\n const lengthOf = new Map(graph.nodes.map((n) => [n.id, n.length]));\n const bp = (ids, end = ids.length) => {\n let sum = 0;\n for (let i = 0; i < end; i++) {\n sum += lengthOf.get(ids[i]) ?? 0;\n }\n return sum;\n };\n const byOrigin = groupBy(graph.paths ?? [], (p) => pathOrigin(p.name).name);\n return graph.anchorPaths.map((o) => {\n const pieces = byOrigin.get(o.name);\n const path = pieces?.length === 1 ? pieces[0] : void 0;\n const stretch = path && kept.get(path.name);\n return path && stretch ? {\n ...o,\n start: o.start + bp(path.nodeIds, stretch.first),\n length: bp(stretch.nodeIds)\n } : o;\n });\n}\nfunction referenceVisitStarts(graph) {\n const { pathVisits } = graph;\n const cache = /* @__PURE__ */ new Map();\n return (node) => {\n let starts = cache.get(node.id);\n if (!starts) {\n starts = [];\n const slot = pathVisits ? pathVisits.slot(node.name) : -1;\n const p = slot >= 0 ? pathVisits.pathIndex(node.stable.refName) : -1;\n if (p >= 0) {\n for (let i = pathVisits.offsets[slot]; i < pathVisits.offsets[slot + 1]; i++) {\n if (pathVisits.path[i] === p) {\n starts.push(pathVisits.start[i]);\n }\n }\n }\n if (starts.length < 2) {\n starts = [node.stable.start];\n }\n cache.set(node.id, starts);\n }\n return starts;\n };\n}\n\nexport {\n pathOrigin,\n surveyPaths,\n chooseReferencePath,\n anchorFromPaths,\n anchorGraph,\n trimOrigins,\n referenceVisitStarts\n};\n"],
5
5
  "mappings": "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",
6
6
  "names": ["pushTo", "map", "key", "value", "list", "addTo", "set", "groupBy", "items", "keyOf", "groups", "item", "partitionPoint", "n", "pred", "lo", "hi", "mid", "REFERENCE_RANK", "isAnchored", "node", "isBackbone", "isOffReference", "backboneNodes", "graph", "overlapsWindow", "window", "backbonePositions", "backbone", "positions", "firstNodeAtOrAfter", "nodes", "bp", "partitionPoint", "i", "backboneSpan", "min", "max", "referenceSpan", "region", "PathVisits", "columns", "i", "entries", "builder", "PathVisitsBuilder", "segment", "visits", "v", "path", "slot", "p", "cursor", "key", "end", "at", "keepPath", "keepSegment", "kept", "s", "out", "Column", "data", "value", "grown", "sample", "start", "reversed", "n", "segments", "offsets", "fill", "RANGE_SUFFIX", "VG_FRAGMENT", "VG_SUBRANGE", "pathOrigin", "pathName", "fragment", "match", "surveyPaths", "paths", "lengthOf", "anchorPaths", "visits", "PathVisitsBuilder", "path", "sample", "panSNSample", "p", "pos", "step", "chooseReferencePath", "preferred", "OFF_REFERENCE_RANK", "anchorNode", "node", "reference", "samplesOf", "slot", "own", "anchor", "REFERENCE_RANK", "sampleSorter", "sorted", "rank", "i", "pathRank", "s", "seen", "ranks", "n", "r", "out", "found", "anchorFromPaths", "graph", "pathVisits", "referenceIndex", "anchorGraph", "referencePath", "taggedReferencePath", "refName", "trimOrigins", "kept", "bp", "ids", "end", "sum", "byOrigin", "groupBy", "o", "pieces", "stretch", "referenceVisitStarts", "cache", "starts"]
@@ -1,2 +1,2 @@
1
- import{a as o,b,c as w,g as r,h as f,i as l}from"./chunk-IKJZPPOA.js";import{b as c}from"./chunk-7WIBGKBU.js";import{a as L}from"./chunk-OGQ6OQDN.js";var M=5e3;function A(e){return typeof e=="string"&&/^[\w+-][\w.+-]*$/.test(e)}function h(e){return e==null}function I(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function T(e){return I(e)&&A(e.prefix)&&typeof e.foldBelowBp=="number"&&Number.isFinite(e.foldBelowBp)&&e.foldBelowBp>0}function E(e){let n;try{n=JSON.parse(e)}catch{return}if(!I(n)||n.schema!==1)return;let{reference:i,tier:t,index:a,contig:s,bubbles:p,alleles:d}=n;if((h(i)||typeof i=="string"&&i.trim()!=="")&&(h(t)||T(t))&&[a,s,p,d].every(S=>h(S)||A(S)))return{...typeof i=="string"?{reference:i.trim()}:{},...T(t)?{tier:{prefix:t.prefix,foldBelowBp:t.foldBelowBp}}:{}}}function m(e,n){return l(e,i=>i.replace(/[^/\\]*$/,n))}function R(e){return f(e)&&r(e).endsWith(o)}function x(e,n){return l(e,i=>`${i.slice(0,-o.length)}${n}`)}function z(e){return R(e)?x(e,".graph.json"):void 0}async function $(e,n){let i=z(e);if(i)try{let t=await L(i,n).readFile({encoding:"utf8",signal:AbortSignal.timeout(M)});return E(t)}catch{return}}var O={RgfaTabixAdapter:"rGFA segments (tabix BED pair)",RgfaTabixWalks:"Haplotype walks (.walks.bed.gz)",GbzBaseSyntenyAdapter:"GBZ database (.gbz.db)",MinigraphBubbleAdapter:"Minigraph bubbles (tabix BED)"},v={RgfaTabixAdapter:"Path to segments BED (.segs.bed.gz from gfa-to-tabix; the .links.bed.gz, its index and any .graph.json are read beside it)",RgfaTabixWalks:"Path to a walk file (<prefix>.<sample>.walks.bed.gz from gfa-to-tabix --walks, for the sample this assembly is)",GbzBaseSyntenyAdapter:"Path to the .gbz.db written by gbz-base construct",MinigraphBubbleAdapter:"Path to bubbles BED (.bed.gz from gfatools bubble)"},y="Path to tabix index (optional; the sibling .tbi is assumed, a .csi is recognised by name)",J={RgfaTabixAdapter:y,RgfaTabixWalks:y,GbzBaseSyntenyAdapter:"Path to the haplotype index (optional; graph.haplotype-index.db beside the database is assumed)",MinigraphBubbleAdapter:y};function g(e,n){return l(e,i=>i+n)}function N(e){if(!r(e).endsWith(o))throw new Error(`Expected a segments BED ending in ${o}, got ${r(e)}`);return x(e,".links.bed.gz")}function F(e,n){return n?{location:n,indexType:c(r(n),"CSI","TBI")}:{location:g(e,".tbi"),indexType:"TBI"}}function B(e,n){return n!==void 0&&c(r(n),"CSI","TBI")==="CSI"?{location:g(e,".csi"),indexType:"CSI"}:{location:g(e,".tbi"),indexType:"TBI"}}function k(e,n){let i=n.trim();return i&&e?{assemblyNameToPanSN:{[e]:i}}:{}}function P(e,n,i){if(!i)return{};let t=m(e,`${i.prefix}${o}`),a=m(e,`${i.prefix}.links.bed.gz`);return{coarse:{foldBelowBp:i.foldBelowBp,segmentsLocation:t,segmentsIndex:B(t,n),linksLocation:a,linksIndex:B(a,n)}}}function G(e,n,i){let t=i===e?void 0:i;return k(e,n.trim()||t||"")}function C(e){return e?{readsLocation:e,...r(e).endsWith(".gz")&&f(e)?{readsIndex:{location:g(e,".tbi")}}:{}}:{}}function K(e){return e.split(/[\s,]+/).filter(n=>n!=="")}function _({choice:e,loc:n,indexLoc:i,readsLoc:t,manifest:a,assembly:s,sample:p,haplotypes:d=[]}){if(e==="RgfaTabixWalks"){if(!r(n).endsWith(b))throw new Error(`Expected a walk file ending in ${b}, got ${r(n)}`);return{type:"RgfaTabixAdapter",walksLocation:n,walksIndex:F(n,i),...G(s,p,w(n)),...d.length>0?{defaultHaplotypes:d}:{}}}if(e==="GbzBaseSyntenyAdapter")return{type:"GbzBaseSyntenyAdapter",gbzDbLocation:n,...i?{haplotypeIndexLocation:i}:{},...C(t),...k(s,p)};if(e==="MinigraphBubbleAdapter")return{type:"MinigraphBubbleAdapter",bubblesLocation:n,index:F(n,i),...k(s,p)};let u=N(n);return{type:"RgfaTabixAdapter",segmentsLocation:n,segmentsIndex:F(n,i),linksLocation:u,linksIndex:B(u,i),...G(s,p,a?.reference),...P(n,i,a?.tier)}}function Z(e){let{choice:n,assembly:i,trackId:t,name:a}=e;return{type:n==="MinigraphBubbleAdapter"?"FeatureTrack":"GraphTrack",trackId:t,name:a,assemblyNames:[i],adapter:_(e),...n==="RgfaTabixAdapter"||n==="RgfaTabixWalks"?{displayDefaults:{showLabels:"none"}}:{}}}export{R as a,$ as b,O as c,v as d,J as e,K as f,_ as g,Z as h};
2
- //# sourceMappingURL=chunk-QJ43NDYS.js.map
1
+ import{b as c}from"./chunk-7WIBGKBU.js";import{a as o,b,c as w,g as r,h as f,i as l}from"./chunk-IKJZPPOA.js";import{a as L}from"./chunk-OGQ6OQDN.js";var M=5e3;function A(e){return typeof e=="string"&&/^[\w+-][\w.+-]*$/.test(e)}function h(e){return e==null}function I(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function T(e){return I(e)&&A(e.prefix)&&typeof e.foldBelowBp=="number"&&Number.isFinite(e.foldBelowBp)&&e.foldBelowBp>0}function E(e){let n;try{n=JSON.parse(e)}catch{return}if(!I(n)||n.schema!==1)return;let{reference:i,tier:t,index:a,contig:s,bubbles:p,alleles:d}=n;if((h(i)||typeof i=="string"&&i.trim()!=="")&&(h(t)||T(t))&&[a,s,p,d].every(S=>h(S)||A(S)))return{...typeof i=="string"?{reference:i.trim()}:{},...T(t)?{tier:{prefix:t.prefix,foldBelowBp:t.foldBelowBp}}:{}}}function m(e,n){return l(e,i=>i.replace(/[^/\\]*$/,n))}function R(e){return f(e)&&r(e).endsWith(o)}function x(e,n){return l(e,i=>`${i.slice(0,-o.length)}${n}`)}function z(e){return R(e)?x(e,".graph.json"):void 0}async function $(e,n){let i=z(e);if(i)try{let t=await L(i,n).readFile({encoding:"utf8",signal:AbortSignal.timeout(M)});return E(t)}catch{return}}var O={RgfaTabixAdapter:"rGFA segments (tabix BED pair)",RgfaTabixWalks:"Haplotype walks (.walks.bed.gz)",GbzBaseSyntenyAdapter:"GBZ database (.gbz.db)",MinigraphBubbleAdapter:"Minigraph bubbles (tabix BED)"},v={RgfaTabixAdapter:"Path to segments BED (.segs.bed.gz from gfa-to-tabix; the .links.bed.gz, its index and any .graph.json are read beside it)",RgfaTabixWalks:"Path to a walk file (<prefix>.<sample>.walks.bed.gz from gfa-to-tabix --walks, for the sample this assembly is)",GbzBaseSyntenyAdapter:"Path to the .gbz.db written by gbz-base construct",MinigraphBubbleAdapter:"Path to bubbles BED (.bed.gz from gfatools bubble)"},y="Path to tabix index (optional; the sibling .tbi is assumed, a .csi is recognised by name)",J={RgfaTabixAdapter:y,RgfaTabixWalks:y,GbzBaseSyntenyAdapter:"Path to the haplotype index (optional; graph.haplotype-index.db beside the database is assumed)",MinigraphBubbleAdapter:y};function g(e,n){return l(e,i=>i+n)}function N(e){if(!r(e).endsWith(o))throw new Error(`Expected a segments BED ending in ${o}, got ${r(e)}`);return x(e,".links.bed.gz")}function F(e,n){return n?{location:n,indexType:c(r(n),"CSI","TBI")}:{location:g(e,".tbi"),indexType:"TBI"}}function B(e,n){return n!==void 0&&c(r(n),"CSI","TBI")==="CSI"?{location:g(e,".csi"),indexType:"CSI"}:{location:g(e,".tbi"),indexType:"TBI"}}function k(e,n){let i=n.trim();return i&&e?{assemblyNameToPanSN:{[e]:i}}:{}}function P(e,n,i){if(!i)return{};let t=m(e,`${i.prefix}${o}`),a=m(e,`${i.prefix}.links.bed.gz`);return{coarse:{foldBelowBp:i.foldBelowBp,segmentsLocation:t,segmentsIndex:B(t,n),linksLocation:a,linksIndex:B(a,n)}}}function G(e,n,i){let t=i===e?void 0:i;return k(e,n.trim()||t||"")}function C(e){return e?{readsLocation:e,...r(e).endsWith(".gz")&&f(e)?{readsIndex:{location:g(e,".tbi")}}:{}}:{}}function K(e){return e.split(/[\s,]+/).filter(n=>n!=="")}function _({choice:e,loc:n,indexLoc:i,readsLoc:t,manifest:a,assembly:s,sample:p,haplotypes:d=[]}){if(e==="RgfaTabixWalks"){if(!r(n).endsWith(b))throw new Error(`Expected a walk file ending in ${b}, got ${r(n)}`);return{type:"RgfaTabixAdapter",walksLocation:n,walksIndex:F(n,i),...G(s,p,w(n)),...d.length>0?{defaultHaplotypes:d}:{}}}if(e==="GbzBaseSyntenyAdapter")return{type:"GbzBaseSyntenyAdapter",gbzDbLocation:n,...i?{haplotypeIndexLocation:i}:{},...C(t),...k(s,p)};if(e==="MinigraphBubbleAdapter")return{type:"MinigraphBubbleAdapter",bubblesLocation:n,index:F(n,i),...k(s,p)};let u=N(n);return{type:"RgfaTabixAdapter",segmentsLocation:n,segmentsIndex:F(n,i),linksLocation:u,linksIndex:B(u,i),...G(s,p,a?.reference),...P(n,i,a?.tier)}}function Z(e){let{choice:n,assembly:i,trackId:t,name:a}=e;return{type:n==="MinigraphBubbleAdapter"?"FeatureTrack":"GraphTrack",trackId:t,name:a,assemblyNames:[i],adapter:_(e),...n==="RgfaTabixAdapter"||n==="RgfaTabixWalks"?{displayDefaults:{showLabels:"none"}}:{}}}export{R as a,$ as b,O as c,v as d,J as e,K as f,_ as g,Z as h};
2
+ //# sourceMappingURL=chunk-TYV6UXJA.js.map
@@ -0,0 +1,2 @@
1
+ import{l as o}from"./chunk-DEWZOJSC.js";function u(a,r,e){return e?{...a,walkRowRuns:o(a,r)}:a}export{u as a};
2
+ //# sourceMappingURL=chunk-UR2MJJUP.js.map
@@ -0,0 +1,2 @@
1
+ import{F as Hn,G as Dn,H as Yt,I as Vt,Q as Fn,R as Lt,S as jt,V as Wn,W as Gn,d as Cn,e as Tn,f as On,g as Ut,i as kn,j as In,k as Pn,l as Nn,m as Nt,y as Ln}from"./chunk-4NIWMRKH.js";import{a as St,g as Ct}from"./chunk-SPL3UO2D.js";var ut=2,Yn=1.5,Pe=4,Xn=12,Ne=64,Le=24,He=48,Bn="a thread per pass through a node",qt=t=>t.length>1&&t.some(n=>n.mostPasses>1),Vn=t=>t*ut+Math.max(0,t-1)*Yn,$n=t=>t.reduce((n,o)=>n+o,0);function jn(t,n,o){let e=t.map((a,c)=>n[c]>1?Vn(a):o*Math.min(1,a)),s=0,r=t.map(a=>{let c=Math.min(1,a),i=Pe*c*s;return s=Math.max(s,c),i});return{widths:e,gaps:r,band:$n(e)+$n(r)}}var qn=ut+Yn;function zt(t,n,o=t){let{widths:e,gaps:s,band:r}=jn(t,n,ut),a=-r/2;return e.map((c,i)=>{a+=s[i];let h=n[i]>1?Math.max(0,c-Vn(o[i])):0,f=a+h/2+ut/2;return a+=c,f})}var Ht=t=>jn(t,t,ut).band,Dt=t=>Math.min(1,He/(Ht(t)||1)),qo=t=>Dt(t.map(n=>n.mostPasses))<1?`${Bn}, thinned to fit`:Bn;function Jt(t,n,o){let e=({normal:c,offsetX:i})=>({dx:c.nx*i,dy:c.ny*i}),{dx:s,dy:r}=Tn(e(t),e(n),o),a=Math.hypot(s,r);return a>0?{normal:{nx:s/a,ny:r/a},offsetX:a}:{normal:{nx:0,ny:0},offsetX:0}}var Qt=(t,n)=>Math.hypot(n.x-t.x,n.y-t.y);function Mt(t){let n=new Float64Array(t.length);for(let o=1;o<t.length;o++)n[o]=n[o-1]+Qt(t[o-1],t[o]);return n}function De(t,n,o,e){let s=new Set,r=t.map(u=>u.map(m=>s.has(m)?!1:(s.add(m),!!n[m]?.length))),a=(u,m)=>Math.hypot(m.x-u.x,m.y*o-u.y),c=[],i=[],h=[],f=[],l=()=>{h.length&&(c.push(h),i.push(f)),h=[],f=[]};return t.forEach((u,m)=>{r[m].includes(!0)&&(u.forEach((I,k)=>{let A=n[I];if(!A?.length){l();return}let _=A[0],R=A.at(-1),S=h.at(-1),w=n[u[k+1]??""],v=g=>{let P={x:g.x,y:g.y*o};return w?.length?Math.min(a(P,w[0]),a(P,w.at(-1))):0},x=S?a(S,_)<=a(S,R):v(R)<=v(_);S&&a(S,x?_:R)>e&&l();let M=Math.floor(A.length/2);for(let g=0;g<A.length;g++){let P=x?g:A.length-1-g,b=A[P];h.push({x:b.x,y:b.y*o,id:I,index:P,middle:P===M,forward:x}),f.push(r[m][k])}}),l())}),{runs:c,owned:i}}function zn(t,n,o){let e=[];for(let s=0;s<n.length;s++){if(!n[s])continue;let r=s;for(;r+1<n.length&&n[r+1];)r++;let a=e.at(-1),c=a?a[1]:0,i=s;for(;i>c&&t[s]-t[i-1]<=o;)i--;let h=r;for(;h+1<t.length&&t[h+1]-t[r]<=o;)h++;a&&i<=a[1]+1?a[1]=h:e.push([i,h]),s=r}return e}function Fe(t,n){let o=Mt(t),e=o.at(-1),s=(c,i)=>{let h=t[i],f=t[Math.min(i+1,t.length-1)],l=o[Math.min(i+1,t.length-1)]-o[i],u=l>0?(c-o[i])/l:0;return{x:h.x+(f.x-h.x)*u,y:h.y+(f.y-h.y)*u}},r=0,a=0;return t.map((c,i)=>{let h=Math.max(0,o[i]-n/2),f=Math.min(e,o[i]+n/2);for(;r<t.length-1&&o[r+1]<=h;)r++;for(;a<t.length-1&&o[a+1]<=f;)a++;let l=s(h,r),u=s(f,a),m=Qt(l,u);return m>0?{nx:-(u.y-l.y)/m,ny:(u.x-l.x)/m}:void 0})}function We(t,n,o){let e=Mt(t),s=t.slice(),r=[];e.forEach((c,i)=>{let h=r.at(-1);(h===void 0||c-e[h]>=n/4)&&r.push(i)}),r.at(-1)!==t.length-1&&r.push(t.length-1);let a=0;for(;a<r.length;){let c=r[a],i=-1;for(let u=a+1;u<r.length&&e[r[u]]-e[c]<=o;u++){let m=r[u];e[m]-e[c]>Math.PI*n&&Qt(t[c],t[m])<=n&&(i=u)}if(i<0){a++;continue}let h=r[i],f=t[c],l=t[h];for(let u=c+1;u<h;u++){let m=(e[u]-e[c])/(e[h]-e[c]);s[u]={...t[u],x:f.x+(l.x-f.x)*m,y:f.y+(l.y-f.y)*m}}a=i}return s}function Ge(t,n){let o=t.length,e=Mt(t),s=e[o-1],r=new Float64Array(o+1),a=new Float64Array(o+1),c=new Float64Array(o+1);for(let l=0;l<o;l++){let u=t[l],m=(e[Math.min(l+1,o-1)]-e[Math.max(l-1,0)])/2;r[l+1]=r[l]+m,a[l+1]=a[l]+m*u.x,c[l+1]=c[l]+m*u.y}let i=new Array(o),h=0,f=0;for(let l=0;l<o;l++){let u=t[l],m=Math.min(n,e[l],s-e[l]),I=e[l]-m,k=e[l]+m+1e-9*(1+s);for(;h<o&&e[h]<I;)h++;for(;f<o&&e[f]<k;)f++;let A=r[f]-r[h];i[l]=A>0?{x:(a[f]-a[h])/A,y:(c[f]-c[h])/A}:{x:u.x,y:u.y}}return i}function Kn(t,n){return({id:o,index:e},s)=>{let r=t.get(o);r||(r=new Array(n[o].length),t.set(o,r)),r[e]=s}}function Xe(t,n,o,e,s,r=!0){let a=Math.max(e,2*s),c=Math.PI*s,i=r?c+s/2+a/2:a/2,h=new Map,f=new Map,l=Kn(h,n),u=Kn(f,n);return t.runs.forEach((m,I)=>{let k=t.owned[I],A=zn(Mt(m),k,i).map(([w,v])=>{let x=m.slice(w,v+1),M=r?Ge(We(x,s/2,c),s/2):x;return{lo:w,points:x,line:M,normals:Fe(M,a)}}),_=0,R=0;for(let w of A)w.points.forEach((v,x)=>{let M=h.get(v.id)?.[v.index],g=w.normals[x];M&&g&&(_+=M.nx*g.nx+M.ny*g.ny),R+=v.forward?1:-1});let S=(_===0?R:_)<0?-1:1;for(let{lo:w,points:v,line:x,normals:M}of A)v.forEach((g,P)=>{if(!k[w+P])return;let b=M[P];b&&l(g,S>0?b:{nx:-b.nx,ny:-b.ny}),r&&u(g,{dx:x[P].x-g.x,dy:(x[P].y-g.y)/o})})}),{normals:h,shifts:f}}function Jn(t,n,o,e){let s=new Array(n.length),r=[],a=0,c=0;for(let i=0;i<n.length;i++){for(;c<n.length&&t[c]-t[i]<=o;){for(;r.length>a&&e*n[r.at(-1)]<=e*n[c];)r.pop();r.push(c++)}for(;t[i]-t[r[a]]>o;)a++;s[i]=n[r[a]]}return s}function Un(t,n,o,e=()=>!0){let s=n.length,r=t.map((f,l)=>e(n[l])?s>1?(t[Math.min(l+1,s-1)]-t[Math.max(l-1,0)])/2:1:0),a=[0],c=[0];for(let f=0;f<s;f++)a.push(a[f]+r[f]),c.push(c[f]+r[f]*n[f]);let i=0,h=0;return n.map((f,l)=>{for(;t[l]-t[i]>o;)i++;for(;h<s&&t[h]-t[l]<=o;)h++;let u=a[h]-a[i];return u>0?(c[h]-c[i])/u:f})}var Be=[0];function $e(t){for(let n of t.values())if(n>1)return!0;return!1}function Ke(t,n,o,e,s){if(!$e(n))return{span:n,nodeThreads:new Map,threadPasses:new Map,linkThreads:new Map};let r=new Map,a=[],c=[],i=[],h=[],f=[],l=[];for(let S of t){let w=[],v=[];for(let E of S){let X=r.get(E);X===void 0&&(X=a.length,r.set(E,X),a.push(E),c.push(0),i.push(0)),v.push(X);let U=o[E],j=U?.[Math.floor(U.length/2)];w.push(j?{x:j.x,y:j.y*e}:w.at(-1)??{x:0,y:0})}let x=Mt(w),M=S.map(E=>n.get(E)??1),g=Jn(x,M,s/2,1),P=v.map(E=>++i[E]),b=S.length,V=new Int32Array(b),D=-1;for(let E=0;E<b;E++)D=M[E]===g[E]?E:D,V[E]=D;let st=new Int32Array(b);D=-1;for(let E=b-1;E>=0;E--)D=M[E]===g[E]?E:D,st[E]=D;let G=new Array(b);for(let E=0;E<b;E++){let X=V[E],U=st[E],j=X<0?U:U<0||x[E]-x[X]<=x[U]-x[E]?X:U;G[E]=Math.min(P[j],g[E])-1,c[v[E]]=Math.max(c[v[E]],g[E])}h.push(v),f.push(P),l.push(G)}let u=[],m=[],I=(S,w)=>{let v=c[S],x=u[S]??=new Set;for(let M=0;M<v;M++)for(let g of[w-M,w+M])if(g>=0&&g<v&&!x.has(g))return g;return w};h.forEach((S,w)=>{S.forEach((v,x)=>{if(c[v]>1){let M=I(v,l[w][x]);u[v].add(M),(m[v]??=[])[f[w][x]]=M}})});let k=new Map,A=new Map,_=new Map;a.forEach((S,w)=>{k.set(S,c[w]),A.set(S,u[w]?[...u[w]].sort((x,M)=>x-M):Be);let v=[];m[w]?.forEach((x,M)=>{v[x]=M-1}),_.set(S,v)});let R=new Map;return h.forEach((S,w)=>{let v=f[w];for(let x=1;x<S.length;x++){let M=S[x-1],g=S[x],P=[m[M]?.[v[x-1]]??0,m[g]?.[v[x]]??0],b=R.get(a[M]);b||(b=new Map,R.set(a[M],b));let V=b.get(a[g]);V?V.some(([D,st])=>D===P[0]&&st===P[1])||V.push(P):b.set(a[g],[P])}}),{span:k,nodeThreads:A,threadPasses:_,linkThreads:R}}function Ue(t,n,{reach:o,taper:e}){let s=new Map;return t.runs.forEach((r,a)=>{let c=Mt(r),i=r.flatMap((l,u)=>l.middle?[u]:[]),h=i.map(l=>c[l]),f=i.map(l=>t.owned[a][l]);for(let[l,u]of zn(h,f,o/2+e/2)){let m=h.slice(l,u+1),I=i.slice(l,u+1).map(A=>r[A].id),k=n.map(A=>{let _=I.map(R=>A.get(R)??0);return _.every(R=>R===_[0])?{slot:_,held:_}:{slot:Un(m,Jn(m,_,o/2,1),e/2),held:Un(m,_,e/2,R=>R>0)}});I.forEach((A,_)=>{f[l+_]&&s.set(A,{slot:k.map(R=>R.slot[_]),held:k.map(R=>R.held[_])})})}}),s}function Qn(t,n,o,e){let s=qt(t),r=t.map(u=>u.mostPasses),a=Ne*e,c=De(t.flatMap(u=>u.route),n,o,Xn*e),i=Xe(c,n,o,Xn*e,Ht(r)*(s?Dt(r):1)*e,s),h=s?t.map(u=>Ke(u.route,u.passes,n,o,a)):void 0,f=h?Ue(c,h.map(u=>u.span),{reach:a,taper:Le*e}):void 0,l={dx:0,dy:0};for(let u of i.shifts.values())for(let m of u)l.dx=Math.max(l.dx,Math.abs(m?.dx??0)),l.dy=Math.max(l.dy,Math.abs(m?.dy??0));return{lines:i,threads:h,spans:f,furthestShift:l}}function L(t,n,o,e){return(e<<24|o<<16|n<<8|t)>>>0}function Zt(t){return t&255}function tn(t){return t>>>8&255}function nn(t){return t>>>16&255}function en(t){return t>>>24&255}function Zn(t){return`rgba(${Zt(t)},${tn(t)},${nn(t)},${en(t)/255})`}function Jo(t,n){return`rgba(${Math.round(t[0]*255)},${Math.round(t[1]*255)},${Math.round(t[2]*255)},${n})`}function Et(t,n){return L(Zt(t),tn(t),nn(t),Math.round(en(t)*n))}function Qo(t,n){let o=Math.max(0,1-1/n),e=s=>Math.round(s+(255-s)*o);return L(e(Zt(t)),e(tn(t)),e(nn(t)),en(t))}var te=300,Tt=.7,Ot=.5;function Ye(t){return`hsl(${t}, ${Tt*100}%, ${Ot*100}%)`}function kt(t){return Math.max(0,Math.min(1,t))*te}function on(t,n){return kt((t-n.start)/(n.end-n.start))}var Ve=30;function ts({start:t,bp:n,reversed:o},e){let s=on(t,e),r=on(t+n,e);if(r-s<1)return[(s+r)/2];let a=Math.ceil((r-s)/Ve);return Array.from({length:a+1},(c,i)=>on(t+n*(o?a-i:i)/a,e))}var je=Array.from({length:7},(t,n)=>({offset:n/6,color:Ye(n/6*te)})),ns=`linear-gradient(to right, ${je.map(t=>`${t.color} ${t.offset*100}%`).join(", ")})`;var qe=Nt();function ne(t,n,o,e,s,r,a=!1){return qe(t,[n,o.scaleX,o.scaleY,e,r,a,s],()=>{let c=new Map;for(let i=0;i<n.edges.length;i++){let h=e?.get(i),f=Ln(t,n.edges[i],o,h,h&&r?.[i],a);f&&c.set(i,f)}return c})}var ze=4;function Je(t){let n=new Map;for(let o of t.edges)St(n,o.from,o.to),St(n,o.to,o.from);return n}function Qe({nodeId:t,nodeById:n,neighbors:o}){let e=new Set([t]),s=[t],r=1/0,a=-1/0;for(let c=0;c<ze&&s.length>0;c++){let i=[];for(let h of s){let f=o.get(h);if(f){for(let l of f)if(!e.has(l)){e.add(l);let u=n.get(l);u&&Ct(u)?(r=Math.min(r,u.stable.start+u.length),a=Math.max(a,u.stable.start)):i.push(l)}}}s=i}return r===1/0?void 0:{start:Math.min(r,a),end:Math.max(r,a)}}function Ze({nodeId:t,nodeById:n,neighbors:o}){let e=n.get(t);return e===void 0?void 0:Ct(e)?{start:e.stable.start,end:e.stable.start+e.length}:Qe({nodeId:t,nodeById:n,neighbors:o})}function ee(t){let n=new Map(t.nodes.map(s=>[s.id,s])),o=Je(t),e=new Map;for(let s of t.nodes){let r=Ze({nodeId:s.id,nodeById:n,neighbors:o});r&&e.set(s.id,(r.start+r.end)/2)}return e}var to=L(119,119,119,217),oe=L(136,136,136,217),no=L(24,24,28,240),eo=2.2,de=L(160,160,160,255),It=.18,ws=Zn(Et(de,It)),oo=11,so=1.2,ro=1e-6,ao=7,co=3,io=3,lo=1.5,se=3,ho=.5,fo=.45,sn=12,uo=1e-6,ot=new Float64Array(64),dt=new Float64Array(64),mt=new Float64Array(64);function mo(t,n,o,e){let s=t.length*sn+1;ot.length<s&&(ot=new Float64Array(s),dt=new Float64Array(s),mt=new Float64Array(s));let r=t[t.length-1];ot[0]=r.x1,dt[0]=r.y1,mt[0]=0;let a=1,c=0;for(let i=t.length-1;i>=0&&c<e;i--){let h=t[i];for(let f=1;f<=sn&&c<e;f++){let l=1-(f/sn)**2,u=1-l,m=u*u*u,I=3*u*u*l,k=3*u*l*l,A=l*l*l,_=m*h.x0+I*h.cx0+k*h.cx1+A*h.x1,R=m*h.y0+I*h.cy0+k*h.cy1+A*h.y1;c+=Math.hypot(_-ot[a-1],(R-dt[a-1])*o)*n,ot[a]=_,dt[a]=R,mt[a]=c,a++}}return a}function re(t,n){let o=1;for(;o<t-1&&mt[o]<n;)o++;let e=mt[o-1],s=mt[o],r=s>e?Math.min(1,Math.max(0,(n-e)/(s-e))):0;return{x:ot[o-1]+(ot[o]-ot[o-1])*r,y:dt[o-1]+(dt[o]-dt[o-1])*r}}function po({curves:t,edgeHalfWidth:n,nodeHalfWidth:o,scale:e,yToX:s,color:r,fromSegments:a,toSegments:c}){let i=ao+co*n,h=mo(t,e,s,o+se*i),f=mt[h-1],l=f<uo,u=Math.min(o,f),m=l?Math.min(1,Nn(a,e,e*s)/i):1;if(l?m<ho:f<se*i)return;let I=re(h,u),k=re(h,u+i*m),A=I.x-k.x,_=(I.y-k.y)*s,R=t[t.length-1];return{x:I.x,y:I.y,angle:Math.hypot(A,_)>0?Math.atan2(_,A):Co(R,s,Mo(R,c)),length:i*m,halfWidth:(io+lo*n)*m,color:r}}var ae=[[0,0]],go=[0],xo={dx:0,dy:0};function me(t,n,o){let e=s=>Math.hypot(s.x-t.x,(s.y-t.y)*o);return e(n[0])<e(n.at(-1))}function yo(t,n,o,e,s){return e?kn(t).from==="start":me({x:o.x0,y:o.y0},n,s)}function Mo(t,n){if(n.length<2)return;let o=n[0],e=n[n.length-1];return Math.hypot(t.x1-o.x,t.y1-o.y)<=Math.hypot(t.x1-e.x,t.y1-e.y)?{from:o,to:n[1]}:{from:e,to:n[n.length-2]}}function ce(t,n){if(!t||!n)return;let o=n.x-t.x,e=n.y-t.y,s=Math.hypot(o,e);return s>0?{nx:-e/s,ny:o/s}:void 0}var pe=.1,Eo=1/Math.sqrt(pe);function rn(t,n=1){let o=n===1?t:t.map(e=>({x:e.x,y:e.y*n}));return o.map((e,s)=>{let r=ce(o[s-1],e),a=ce(e,o[s+1]);if(r&&a){let c=(r.nx+a.nx)/2,i=(r.ny+a.ny)/2,h=r.nx*c+r.ny*i;return h>pe?{nx:c/h,ny:i/h}:{nx:c,ny:i}}return r??a??{nx:0,ny:0}})}function ie(t,n,o,e=1){let s=new Array(t.length);for(let r=0;r<t.length;r++)s[r]={x:t[r].x+n[r].nx*o,y:t[r].y+n[r].ny*o/e};return s}function cn(t,n,o){let e=(1-Math.abs(2*o-1))*n,s=e*(1-Math.abs(t/60%2-1)),r=o-e/2,a=0,c=0,i=0;return t<60?(a=e,c=s):t<120?(a=s,c=e):t<180?(c=e,i=s):t<240?(c=s,i=e):t<300?(a=s,i=e):(a=e,i=s),[a+r,c+r,i+r]}function Ft(t,n,o,e=1){let[s,r,a]=cn(t,n,o);return L(Math.round(s*255),Math.round(r*255),Math.round(a*255),Math.round(e*255))}var wo=[[68,1,84],[59,82,139],[33,145,140],[94,201,98],[253,231,37]],vo=[[237,137,44],[158,42,122]],Ao=[[220,50,50],[50,120,220]];function an(t,n){let o=Math.max(0,Math.min(1,n))*(t.length-1),e=Math.min(t.length-2,Math.floor(o)),s=o-e,r=t[e],a=t[e+1];return L(Math.round(r[0]+(a[0]-r[0])*s),Math.round(r[1]+(a[1]-r[1])*s),Math.round(r[2]+(a[2]-r[2])*s),255)}function _o(t,n){return Ft(Hn(t),Yt,Vt,n)}var ge=[60,65,72],ln=L(...ge,255),vs=`rgb(${ge.join(", ")})`;function Ro(t,n){let o=n.midpoints.get(t.id);return Ct(t)&&o!==void 0?(o-n.start)/n.span:void 0}function As(t,n){let o=ee(t);if(n&&n.end>n.start)return{start:n.start,span:n.end-n.start,midpoints:o};let e=1/0,s=-1/0;for(let r of o.values())e=Math.min(e,r),s=Math.max(s,r);return{start:e===1/0?0:e,span:s>e?s-e:1,midpoints:o}}function bo(t,n){let o=1/0,e=-1/0,s=1/0,r=-1/0,a=0;for(let c of t.nodes)c.stable!==void 0&&c.stable.rank>a&&(a=c.stable.rank),c.depth<o&&(o=c.depth),c.depth>e&&(e=c.depth),c.length<s&&(s=c.length),c.length>r&&(r=c.length);return{minDepth:o,maxDepth:e,minLength:s,maxLength:r,maxRank:a,nodeCount:t.nodes.length,referenceRamp:n}}function So(t,n,o,e){switch(o){case"random":return _o(t.id,1);case"depth":return an(wo,e.maxDepth>e.minDepth?(t.depth-e.minDepth)/(e.maxDepth-e.minDepth):.5);case"node-length":return an(Ao,e.maxLength>e.minLength?(t.length-e.minLength)/(e.maxLength-e.minLength):.5);case"stable-rank":return t.stable===void 0?L(160,160,160,255):t.stable.rank===0?L(52,152,219,255):an(vo,e.maxRank>1?(t.stable.rank-1)/(e.maxRank-1):0);case"reference-position":{let s=e.referenceRamp;if(s===void 0)return L(160,160,160,255);let r=Ro(t,s);return r===void 0?ln:Ft(kt(r),Tt,Ot)}case"grey":return L(160,160,160,255);case"rainbow":{let s=e.nodeCount>1?n/e.nodeCount*360:0;return Ft(s,.75,.5)}default:return L(52,152,219,255)}}function Co(t,n=1,o){let e=[[t.cx1,t.cy1],[t.cx0,t.cy0],[t.x0,t.y0]];for(let[s,r]of e){let a=t.x1-s,c=(t.y1-r)*n;if(Math.hypot(a,c)>0)return Math.atan2(c,a)}return o?Math.atan2((o.to.y-o.from.y)*n,o.to.x-o.from.x):0}function To(t,n){let o=!1;for(let e=0;e<t.length-1&&!o;e++){let s=t[e],r=t[e+1];o=Math.max(s.x,r.x)>=n.minX&&Math.min(s.x,r.x)<=n.maxX&&Math.max(s.y,r.y)>=n.minY&&Math.min(s.y,r.y)<=n.maxY}return o}function le(t,n,o=0,e=0){for(let s of t){let r=Math.min(s.x0,s.cx0,s.cx1,s.x1),a=Math.max(s.x0,s.cx0,s.cx1,s.x1),c=Math.min(s.y0,s.cy0,s.cy1,s.y1),i=Math.max(s.y0,s.cy0,s.cy1,s.y1);if(a>=n.minX-o&&r<=n.maxX+o&&i>=n.minY-e&&c<=n.maxY+e)return!0}return!1}var he=new WeakMap;function Oo(t){let n=he.get(t);if(!n){let o=[],e=new Map,s=t.paths??[];for(let r=0;r<s.length;r++)o.push(Ft(Dn(r,s.length),Yt,Vt,.85)),e.has(s[r].name)||e.set(s[r].name,r);n={pathColorByIndex:o,pathIndexByName:e},he.set(t,n)}return n}var fe=new WeakMap,ko=new Map;function Io(t){let n=fe.get(t);if(!n){n=new Map;for(let[o,e]of(t.paths??[]).entries())for(let s of new Set(e.nodeIds))St(n,s,o);fe.set(t,n)}return n}var Po=Nt(),ue=new WeakMap;function No(t){let n=ue.get(t);if(!n){n=new Map;for(let{from:o,to:e}of t.edges){let s=n.get(o);s||(s=new Set,n.set(o,s)),s.add(e)}ue.set(t,n)}return n}function _s(t){let{nodePositions:n,graph:o,nodeById:e,colorScheme:s,contigThickness:r,connectorThickness:a,drawPaths:c,nodeWidth:i="uniform",edgeWidth:h="uniform",highlight:f,axis:l,linearLayout:u,viewportBounds:m,referenceRamp:I,deletions:k,deletionRoutes:A,stranded:_,hiddenEdges:R,version:S=0}=t,w=i==="depth"?Fn(o):0,v=h==="walks"?Wn(o):0,x=l.scaleX,M=1/Math.max(x,ro),g=In(l),P=ne(n,o,l,k,S,A,_),b=[],V=new Map,D=[],st=new Map,G=[],E=new Map,X=bo(o,I),U=new Map;if(s==="rainbow")for(let d=0;d<o.nodes.length;d++)U.set(o.nodes[d].id,d);let j=o.paths?.length??0,{pathColorByIndex:pn,pathIndexByName:Ae}=Oo(o),_e=d=>pn[Ae.get(d)??-1]??oe,Re=c&&j>1?Io(o):ko,z=f?.walks??[],J=qt(z),wt=z.map(d=>d.mostPasses),Gt=J?Dt(wt):1,vt=f&&z.length>1?Po(f,[n,S,l.scaleX,l.scaleY],()=>Qn(z,n,g,M)):void 0,Xt=vt?.lines,Bt=vt?.threads,be=vt?.spans,Se=J?zt(wt,wt):[],gn=new Map,Ce=d=>{let p=gn.get(d);if(!p){let y=be?.get(d);p=y?zt(y.slot,wt,y.held):Se,gn.set(d,p)}return p},$t=(d,p,y,C)=>J?(Ce(d)[y]+C*qn)*Gt:(y-(z.length-1)/2)*p,xn=d=>J?ut/2*Gt:d/2,yn=new Map,Mn=(d,p)=>{let y=yn.get(d);if(!y){let C=Xt?.normals.get(d);y=C?rn(p,g).map((O,F)=>C[F]??O):rn(p,g),yn.set(d,y)}return y},En=new Map,wn=d=>{let p=En.get(d);if(p===void 0){let y=e.get(d);p=jt(y?Lt(y,r,i,w):r,z.length),En.set(d,p)}return p},vn=(d,p)=>Xt?.shifts.get(d)?.[p]??xo,An=(d,p,y)=>{let C=y?0:p.length-1;return{id:d,laneWidth:wn(d),normal:Mn(d,p)[C]??{nx:0,ny:0},shift:vn(d,C)}},Te=(d,p)=>{if(!m)return!0;let y=J?Ht(wt)*Gt:(z.length-1)/2*wn(p),C=Eo*y*M;return le(d,m,C+(vt?.furthestShift.dx??0),C/g+(vt?.furthestShift.dy??0))},Oe=(d,p,y)=>{let C=Bt?.[d]?.linkThreads;if(!C?.size)return ae;let O=C.get(p)?.get(y),F=No(o).get(y)?.has(p)?void 0:C.get(y)?.get(p);if(!F)return O??ae;let rt=F.map(([Y,Q])=>[Q,Y]);return O?[...O,...rt]:rt},Kt=(d,p,y)=>z[d]?.passColors.get(p)?.[Bt?.[d]?.threadPasses.get(p)?.[y]??0],ke=(d,p)=>Xt?.shifts.has(d)?p.map((y,C)=>{let{dx:O,dy:F}=vn(d,C);return{...y,x:y.x+O,y:y.y+F}}):p,Ie=x>(u?1:fo);for(let d=0;d<o.edges.length;d++){let p=o.edges[d],y=n[p.from],C=n[p.to],O=P.get(d);if(!y?.length||!C?.length||!O||R?.has(d))continue;let F=p.pathIds?.length??0,Y=k?.get(d)!==void 0,Q=f?.edgeIndexes.has(d)??!1,pt=a/2*(Y?eo:1),gt=Y?pt:a/2*Gn(F,v,h),at=c&&F>0,B=Y?no:to,At=!f||Q?B:Et(B,It),ct=e.get(p.to),it=(ct?Lt(ct,r,i,w):r)/2,lt=T=>!m||le(T,m),Z=T=>Cn(T,oo/x,g,m),$=(T,W,N)=>{if(!Y){G.push({curves:T,thickness:W,color:N});return}for(let q of Z(T))G.push({curves:q.curves,thickness:W,color:N})},Pt=(T,W,N,q,ht,H,xt,yt,bt)=>{if(!Y){G.push({curves:T,thickness:W,color:N,walk:q,pass:ht,normal:H,offsetX:xt,endNormal:yt,endOffsetX:bt});return}let K={normal:H,offsetX:xt},ft={normal:yt,offsetX:bt};for(let et of Z(T)){let bn=et.startAlong===0?K:Jt(K,ft,et.startAlong),Sn=et.endAlong===1?ft:Jt(K,ft,et.endAlong);G.push({curves:et.curves,thickness:W,color:N,walk:q,pass:ht,normal:bn.normal,offsetX:bn.offsetX,endNormal:Sn.normal,endOffsetX:Sn.offsetX})}},_t=T=>{let W=Ie?po({curves:T,edgeHalfWidth:Y||at?a/2:gt,nodeHalfWidth:it,scale:x,yToX:g,color:At,fromSegments:y,toSegments:C}):void 0;W&&D.push(W)},tt=G.length,Rt=D.length,nt=f?.walks.length&&Q&&!at?f.walks:void 0;if(nt&&!Te(O,p.from))continue;if(nt){let T=An(p.from,y,yo(p,y,O[0],_,g)),W=O.at(-1),N=J?An(p.to,C,me({x:W.x1,y:W.y1},C,g)):T,q=nt.length===1,ht=xn(T.laneWidth);for(let H=0;H<nt.length;H++)if(nt[H].edgeIndexes.has(d))for(let[yt,bt]of Oe(H,p.from,p.to)){let K=q?0:$t(T.id,T.laneWidth,H,yt)*M,ft=J?$t(N.id,N.laneWidth,H,bt)*M:K,et=J?On(O,T.shift.dx+T.normal.nx*K,T.shift.dy+T.normal.ny*K/g,N.shift.dx+N.normal.nx*ft,N.shift.dy+N.normal.ny*ft/g):K===0?O:Ut(O,T.normal.nx*K,T.normal.ny*K/g);lt(et)&&Pt(et,ht,Kt(H,p.from,yt)??Kt(H,p.to,bt)??B,H,yt,T.normal,K,N.normal,ft)}G.length>tt&&_t(O)}else if(!at)lt(O)&&($(O,gt,At),_t(O));else{let T=Pn(y,C,F,l),W=Math.floor((F-1)/2);for(let N=0;N<F;N++){let{x:q,y:ht}=T[N],H=q===0&&ht===0?O:Ut(O,q,ht);if(!lt(H))continue;let xt=_e(p.pathIds[N]);$(H,pt,f&&(f.walks.length?!f.names.has(p.pathIds[N]):!Q)?Et(xt,It):xt),N===W&&_t(H)}}let _n=G.length-tt;_n>0&&E.set(d,{start:tt,count:_n});let Rn=D.length-Rt;Rn>0&&st.set(d,{start:Rt,count:Rn})}for(let[d,p]of Object.entries(n)){let y=e.get(d);if(!y||m&&!To(p,m))continue;let C=f!==void 0&&!f.nodeIds.has(d),O=C?de:So(y,U.get(d)??0,s,X),F=C?Et(O,It):O,rt=Lt(y,r,i,w),Y=rt/2,Q=b.length,pt=Re.get(d),gt=rt/j,at=p.length>=2,B=f?.walks.length&&!C&&!pt?.length?f.walks:void 0;if(at&&B){let ct=jt(rt,B.length),it=B.length>1?Mn(d,p):[],lt=B.length>1?ke(d,p):p,Z=xn(ct);for(let $=0;$<B.length;$++){let Pt=B[$].colors.get(d);if(Pt===void 0)continue;let _t=Bt?.[$]?.nodeThreads.get(d)??go;for(let tt of _t){let Rt=Kt($,d,tt)??Pt;if(B.length===1){b.push({points:p,thickness:Z,color:Rt,walk:$,pass:tt});continue}let nt=$t(d,ct,$,tt)*M;b.push({points:ie(lt,it,nt,g),thickness:Z,color:Rt,walk:$,pass:tt,normals:it,offsetX:nt})}}}else if(at&&pt?.length&&gt>=so){let ct=rn(p,g);for(let it of pt){let lt=(it-(j-1)/2)*gt*M,Z=pn[it]??oe;b.push({points:ie(p,ct,lt,g),thickness:gt/2,color:C?Et(Z,It):Z})}}else at&&b.push({points:p,thickness:Y,color:F});let At=b.length-Q;At>0&&V.set(d,{start:Q,count:At})}return{nodeStrokes:b,nodeStrokeRuns:V,arrows:D,arrowRuns:st,edgeCurves:G,edgeCurveRuns:E}}var Me=[{value:"progress",label:"Progress along the walk"},{value:"walk",label:"One colour for the walk"},{value:"reference",label:"Reference position"}],un=[{value:"grey",label:"Grey to black",ends:["#a3a3a3","#151515"]},{value:"blue",label:"Cyan to navy",ends:["#6ee0f0","#0b2c7a"]},{value:"red",label:"Yellow to red",ends:["#ffd24a","#b3121b"]},{value:"purple",label:"Pink to plum",ends:["#f5a3d8","#5e1a6e"]},{value:"green",label:"Lime to forest",ends:["#b6e36c","#0b5d3b"]},{value:"orange",label:"Peach to rust",ends:["#ffc285","#8f3a00"]},{value:"rainbow",label:"Rainbow"}],hn=["blue","red","purple","green"],Lo=t=>Me.some(n=>n.value===t),Ho=t=>un.some(n=>n.value===t);function Do(t,n,o,e=!0){let{field:s,scheme:r}=t.color??{},a=Lo(s)?s:e?"progress":"walk",c=n?"grey":hn[o%hn.length],i=Ho(r)?r==="rainbow"&&a!=="reference"?c:r:c,h=Math.floor(o/hn.length)%xe.length;return a==="walk"&&i===c&&h>0?{field:a,scheme:i,shade:xe[h]}:e||a==="walk"?{field:a,scheme:i}:{field:a,scheme:i,darkest:Fo}}var Fo=.55,dn=.5,xe=[dn,.85,.2],Wo=.08,ye=({field:t,scheme:n})=>t!=="walk"&&n!=="rainbow";function Go(t){let n=new Map;for(let e of t)ye(e)&&n.set(e.scheme,(n.get(e.scheme)??0)+1);let o=new Map;return t.map(e=>{let s=ye(e)?n.get(e.scheme):1;if(s<2)return e;let r=o.get(e.scheme)??0;o.set(e.scheme,r+1);let a=Wo/2;return{...e,stretch:[r/s+(r>0?a:0),(r+1)/s-(r<s-1?a:0)]}})}var Ee=({stretch:t},n)=>t?t[0]+(t[1]-t[0])*n:n,Xo=t=>t<=.04045?t/12.92:((t+.055)/1.055)**2.4,Bo=t=>t<=.0031308?t*12.92:1.055*t**(1/2.4)-.055;function $o(t){let[n,o,e]=[1,3,5].map(c=>Xo(Number.parseInt(t.slice(c,c+2),16)/255)),s=Math.cbrt(.4122214708*n+.5363325363*o+.0514459929*e),r=Math.cbrt(.2119034982*n+.6806995451*o+.1073969566*e),a=Math.cbrt(.0883024619*n+.2817188376*o+.6299787005*e);return[.2104542553*s+.793617785*r-.0040720468*a,1.9779984951*s-2.428592205*r+.4505937099*a,.0259040371*s+.7827717662*r-.808675766*a]}function Ko([t,n,o]){let e=(t+.3963377774*n+.2158037573*o)**3,s=(t-.1055613458*n-.0638541728*o)**3,r=(t-.0894841775*n-1.291485548*o)**3;return[4.0767416621*e-3.3077115913*s+.2309699292*r,-1.2684380046*e+2.6097574011*s-.3413193965*r,-.0041960863*e-.7034186147*s+1.707614701*r].map(a=>Bo(Math.max(0,Math.min(1,a)))*255)}var fn=new Map;function Uo(t){if(!fn.has(t)){let n=un.find(o=>o.value===t);fn.set(t,n&&"ends"in n?n.ends.map($o):void 0)}return fn.get(t)}function mn(t,n,o=0){let e=Math.max(0,Math.min(1,n)),s=Uo(t);if(!s)return cn(kt(e),Tt,Ot).map(f=>f*255);let[r,a]=s,c=r[0],i=a[0],h=i<o&&c>o?(c-o)/(c-i):1;return Ko(r.map((f,l)=>f+(a[l]-f)*e*h))}function we(t,n,o){let[e,s,r]=mn(t,n,o).map(Math.round);return`rgb(${e}, ${s}, ${r})`}function Wt(t,n,o){let[e,s,r]=mn(t,n,o).map(Math.round);return L(e,s,r,255)}function Yo(t,n){let{field:o,scheme:e,darkest:s,shade:r=dn}=t;return o==="walk"?Wt(e,r):n===void 0?ve:Wt(e,Ee(t,n),s)}var ve=ln;function Vo(t){let{field:n,scheme:o,darkest:e,shade:s=dn}=t,r=(a,c)=>({offset:a,color:we(o,c,e),abgr:Wt(o,c,e)});return n==="walk"?[r(0,s)]:Array.from({length:7},(a,c)=>r(c/6,Ee(t,c/6)))}export{Je as a,Ze as b,ut as c,qt as d,qo as e,L as f,Zn as g,Jo as h,Et as i,Qo as j,Ye as k,ts as l,je as m,ns as n,ne as o,ws as p,cn as q,vs as r,Ro as s,As as t,bo as u,So as v,_s as w,Me as x,un as y,Do as z,Go as A,Yo as B,ve as C,Vo as D};
2
+ //# sourceMappingURL=chunk-VTMJQFN5.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.11.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-4KBZ7WPP.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.11.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-G2FD7S3C.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.11.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-GQZVR5DW.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.11.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-P2GJBFNA.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.11.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-VX656OAZ.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.11.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-GXCMBPC6.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.11.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-EB4Q35QD.js"],
4
+ "sourcesContent": ["import {\n slideAt\n} from \"./chunk-JJV2GT2Z.js\";\n\n// src/renderer/walkLanes.ts\nvar THREAD_PX = 2;\nvar THREAD_GAP_PX = 1.5;\nvar SLOT_GAP_PX = 4;\nvar LANE_SMOOTHING_PX = 12;\nvar THREAD_REACH_PX = 64;\nvar THREAD_TAPER_PX = 24;\nvar MAX_BAND_PX = 48;\nvar PASSES_KEY = \"a thread per pass through a node\";\nvar threadsPasses = (walks) => walks.length > 1 && walks.some((w) => w.mostPasses > 1);\nvar threadsWidth = (threads) => threads * THREAD_PX + Math.max(0, threads - 1) * THREAD_GAP_PX;\nvar sum = (values) => values.reduce((a, b) => a + b, 0);\nfunction slotLayout(spans, mostPasses, laneWidth) {\n const widths = spans.map(\n (m, i) => mostPasses[i] > 1 ? threadsWidth(m) : laneWidth * Math.min(1, m)\n );\n let seen = 0;\n const gaps = spans.map((m) => {\n const share = Math.min(1, m);\n const gap = SLOT_GAP_PX * share * seen;\n seen = Math.max(seen, share);\n return gap;\n });\n return { widths, gaps, band: sum(widths) + sum(gaps) };\n}\nvar THREAD_PITCH_PX = THREAD_PX + THREAD_GAP_PX;\nfunction slotCentres(spans, mostPasses, held = spans) {\n const { widths, gaps, band } = slotLayout(spans, mostPasses, THREAD_PX);\n let at = -band / 2;\n return widths.map((width, i) => {\n at += gaps[i];\n const slack = mostPasses[i] > 1 ? Math.max(0, width - threadsWidth(held[i])) : 0;\n const centre = at + slack / 2 + THREAD_PX / 2;\n at += width;\n return centre;\n });\n}\nvar bandWidthPx = (mostPasses) => slotLayout(mostPasses, mostPasses, THREAD_PX).band;\nvar bandScale = (mostPasses) => Math.min(1, MAX_BAND_PX / (bandWidthPx(mostPasses) || 1));\nvar passesKey = (walks) => bandScale(walks.map((w) => w.mostPasses)) < 1 ? `${PASSES_KEY}, thinned to fit` : PASSES_KEY;\nfunction laneSlideAt(start, end, along) {\n const vector = ({ normal, offsetX: offsetX2 }) => ({\n dx: normal.nx * offsetX2,\n dy: normal.ny * offsetX2\n });\n const { dx, dy } = slideAt(vector(start), vector(end), along);\n const offsetX = Math.hypot(dx, dy);\n return offsetX > 0 ? { normal: { nx: dx / offsetX, ny: dy / offsetX }, offsetX } : { normal: { nx: 0, ny: 0 }, offsetX: 0 };\n}\nvar gapOf = (a, b) => Math.hypot(b.x - a.x, b.y - a.y);\nfunction arcOf(run) {\n const s = new Float64Array(run.length);\n for (let i = 1; i < run.length; i++) {\n s[i] = s[i - 1] + gapOf(run[i - 1], run[i]);\n }\n return s;\n}\nfunction laneRuns(routes, nodePositions, yToX, jump) {\n const seen = /* @__PURE__ */ new Set();\n const owns = routes.map(\n (route) => route.map((id) => {\n if (seen.has(id)) {\n return false;\n }\n seen.add(id);\n return !!nodePositions[id]?.length;\n })\n );\n const gap = (a, b) => Math.hypot(b.x - a.x, b.y * yToX - a.y);\n const runs = [];\n const owned = [];\n let run = [];\n let mine = [];\n const breakRun = () => {\n if (run.length) {\n runs.push(run);\n owned.push(mine);\n }\n run = [];\n mine = [];\n };\n routes.forEach((route, r) => {\n if (!owns[r].includes(true)) {\n return;\n }\n route.forEach((id, step) => {\n const segments = nodePositions[id];\n if (!segments?.length) {\n breakRun();\n return;\n }\n const first = segments[0];\n const last = segments.at(-1);\n const prev = run.at(-1);\n const next = nodePositions[route[step + 1] ?? \"\"];\n const toNext = (p) => {\n const at = { x: p.x, y: p.y * yToX };\n return next?.length ? Math.min(gap(at, next[0]), gap(at, next.at(-1))) : 0;\n };\n const forward = prev ? gap(prev, first) <= gap(prev, last) : toNext(last) <= toNext(first);\n if (prev && gap(prev, forward ? first : last) > jump) {\n breakRun();\n }\n const middle = Math.floor(segments.length / 2);\n for (let k = 0; k < segments.length; k++) {\n const index = forward ? k : segments.length - 1 - k;\n const p = segments[index];\n run.push({\n x: p.x,\n y: p.y * yToX,\n id,\n index,\n middle: index === middle,\n forward\n });\n mine.push(owns[r][step]);\n }\n });\n breakRun();\n });\n return { runs, owned };\n}\nfunction ownedWindows(s, owned, margin) {\n const windows = [];\n for (let i = 0; i < owned.length; i++) {\n if (!owned[i]) {\n continue;\n }\n let j = i;\n while (j + 1 < owned.length && owned[j + 1]) {\n j++;\n }\n const last = windows.at(-1);\n const floor = last ? last[1] : 0;\n let lo = i;\n while (lo > floor && s[i] - s[lo - 1] <= margin) {\n lo--;\n }\n let hi = j;\n while (hi + 1 < s.length && s[hi + 1] - s[j] <= margin) {\n hi++;\n }\n if (last && lo <= last[1] + 1) {\n last[1] = hi;\n } else {\n windows.push([lo, hi]);\n }\n i = j;\n }\n return windows;\n}\nfunction smoothedNormals(run, reach) {\n const s = arcOf(run);\n const end = s.at(-1);\n const pointAt = (at, j) => {\n const a = run[j];\n const b = run[Math.min(j + 1, run.length - 1)];\n const span = s[Math.min(j + 1, run.length - 1)] - s[j];\n const f = span > 0 ? (at - s[j]) / span : 0;\n return { x: a.x + (b.x - a.x) * f, y: a.y + (b.y - a.y) * f };\n };\n let lo = 0;\n let hi = 0;\n return run.map((_, i) => {\n const back = Math.max(0, s[i] - reach / 2);\n const ahead = Math.min(end, s[i] + reach / 2);\n while (lo < run.length - 1 && s[lo + 1] <= back) {\n lo++;\n }\n while (hi < run.length - 1 && s[hi + 1] <= ahead) {\n hi++;\n }\n const a = pointAt(back, lo);\n const b = pointAt(ahead, hi);\n const len = gapOf(a, b);\n return len > 0 ? { nx: -(b.y - a.y) / len, ny: (b.x - a.x) / len } : void 0;\n });\n}\nfunction cutCurls(run, close, length) {\n const s = arcOf(run);\n const out = run.slice();\n const picks = [];\n s.forEach((at, k) => {\n const last = picks.at(-1);\n if (last === void 0 || at - s[last] >= close / 4) {\n picks.push(k);\n }\n });\n if (picks.at(-1) !== run.length - 1) {\n picks.push(run.length - 1);\n }\n let a = 0;\n while (a < picks.length) {\n const i = picks[a];\n let to = -1;\n for (let b = a + 1; b < picks.length && s[picks[b]] - s[i] <= length; b++) {\n const j2 = picks[b];\n if (s[j2] - s[i] > Math.PI * close && gapOf(run[i], run[j2]) <= close) {\n to = b;\n }\n }\n if (to < 0) {\n a++;\n continue;\n }\n const j = picks[to];\n const p = run[i];\n const q = run[j];\n for (let k = i + 1; k < j; k++) {\n const f = (s[k] - s[i]) / (s[j] - s[i]);\n out[k] = {\n ...run[k],\n x: p.x + (q.x - p.x) * f,\n y: p.y + (q.y - p.y) * f\n };\n }\n a = to;\n }\n return out;\n}\nfunction rounded(run, half) {\n const n = run.length;\n const s = arcOf(run);\n const end = s[n - 1];\n const sumW = new Float64Array(n + 1);\n const sumX = new Float64Array(n + 1);\n const sumY = new Float64Array(n + 1);\n for (let i = 0; i < n; i++) {\n const p = run[i];\n const w = (s[Math.min(i + 1, n - 1)] - s[Math.max(i - 1, 0)]) / 2;\n sumW[i + 1] = sumW[i] + w;\n sumX[i + 1] = sumX[i] + w * p.x;\n sumY[i + 1] = sumY[i] + w * p.y;\n }\n const out = new Array(n);\n let lo = 0;\n let hi = 0;\n for (let i = 0; i < n; i++) {\n const p = run[i];\n const reach = Math.min(half, s[i], end - s[i]);\n const from = s[i] - reach;\n const to = s[i] + reach + 1e-9 * (1 + end);\n while (lo < n && s[lo] < from) {\n lo++;\n }\n while (hi < n && s[hi] < to) {\n hi++;\n }\n const w = sumW[hi] - sumW[lo];\n out[i] = w > 0 ? { x: (sumX[hi] - sumX[lo]) / w, y: (sumY[hi] - sumY[lo]) / w } : { x: p.x, y: p.y };\n }\n return out;\n}\nfunction fieldSetter(field, nodePositions) {\n return ({ id, index }, value) => {\n let own = field.get(id);\n if (!own) {\n own = new Array(nodePositions[id].length);\n field.set(id, own);\n }\n own[index] = value;\n };\n}\nfunction laneLines(lanes, nodePositions, yToX, reach, band, smooth = true) {\n const turn = Math.max(reach, 2 * band);\n const curl = Math.PI * band;\n const margin = smooth ? curl + band / 2 + turn / 2 : turn / 2;\n const normals = /* @__PURE__ */ new Map();\n const shifts = /* @__PURE__ */ new Map();\n const setNormal = fieldSetter(normals, nodePositions);\n const setShift = fieldSetter(shifts, nodePositions);\n lanes.runs.forEach((run, r) => {\n const owned = lanes.owned[r];\n const pieces = ownedWindows(arcOf(run), owned, margin).map(([lo, hi]) => {\n const points = run.slice(lo, hi + 1);\n const line = smooth ? rounded(cutCurls(points, band / 2, curl), band / 2) : points;\n return { lo, points, line, normals: smoothedNormals(line, turn) };\n });\n let agree = 0;\n let along = 0;\n for (const piece of pieces) {\n piece.points.forEach((p, i) => {\n const theirs = normals.get(p.id)?.[p.index];\n const mine = piece.normals[i];\n if (theirs && mine) {\n agree += theirs.nx * mine.nx + theirs.ny * mine.ny;\n }\n along += p.forward ? 1 : -1;\n });\n }\n const sign = (agree === 0 ? along : agree) < 0 ? -1 : 1;\n for (const { lo, points, line, normals: own } of pieces) {\n points.forEach((p, i) => {\n if (!owned[lo + i]) {\n return;\n }\n const n = own[i];\n if (n) {\n setNormal(p, sign > 0 ? n : { nx: -n.nx, ny: -n.ny });\n }\n if (smooth) {\n setShift(p, {\n dx: line[i].x - p.x,\n dy: (line[i].y - p.y) / yToX\n });\n }\n });\n }\n });\n return { normals, shifts };\n}\nfunction windowed(s, v, half, sign) {\n const out = new Array(v.length);\n const deque = [];\n let head = 0;\n let next = 0;\n for (let i = 0; i < v.length; i++) {\n while (next < v.length && s[next] - s[i] <= half) {\n while (deque.length > head && sign * v[deque.at(-1)] <= sign * v[next]) {\n deque.pop();\n }\n deque.push(next++);\n }\n while (s[i] - s[deque[head]] > half) {\n head++;\n }\n out[i] = v[deque[head]];\n }\n return out;\n}\nfunction windowMean(s, v, half, counted = () => true) {\n const n = v.length;\n const weight = s.map(\n (_, i) => !counted(v[i]) ? 0 : n > 1 ? (s[Math.min(i + 1, n - 1)] - s[Math.max(i - 1, 0)]) / 2 : 1\n );\n const sumW = [0];\n const sumWV = [0];\n for (let i = 0; i < n; i++) {\n sumW.push(sumW[i] + weight[i]);\n sumWV.push(sumWV[i] + weight[i] * v[i]);\n }\n let lo = 0;\n let hi = 0;\n return v.map((value, i) => {\n while (s[i] - s[lo] > half) {\n lo++;\n }\n while (hi < n && s[hi] - s[i] <= half) {\n hi++;\n }\n const w = sumW[hi] - sumW[lo];\n return w > 0 ? (sumWV[hi] - sumWV[lo]) / w : value;\n });\n}\nvar ONE_THREAD = [0];\nfunction repeats(passes) {\n for (const p of passes.values()) {\n if (p > 1) {\n return true;\n }\n }\n return false;\n}\nfunction walkThreads(route, passes, nodePositions, yToX, reach) {\n if (!repeats(passes)) {\n return {\n span: passes,\n nodeThreads: /* @__PURE__ */ new Map(),\n threadPasses: /* @__PURE__ */ new Map(),\n linkThreads: /* @__PURE__ */ new Map()\n };\n }\n const index = /* @__PURE__ */ new Map();\n const ids = [];\n const widths = [];\n const visits = [];\n const steps = [];\n const stepVisits = [];\n const stepWants = [];\n for (const piece of route) {\n const points = [];\n const nodes = [];\n for (const id of piece) {\n let k = index.get(id);\n if (k === void 0) {\n k = ids.length;\n index.set(id, k);\n ids.push(id);\n widths.push(0);\n visits.push(0);\n }\n nodes.push(k);\n const segments = nodePositions[id];\n const mid = segments?.[Math.floor(segments.length / 2)];\n points.push(\n mid ? { x: mid.x, y: mid.y * yToX } : points.at(-1) ?? { x: 0, y: 0 }\n );\n }\n const s = arcOf(points);\n const p = piece.map((id) => passes.get(id) ?? 1);\n const most = windowed(s, p, reach / 2, 1);\n const copy = nodes.map((k) => ++visits[k]);\n const n = piece.length;\n const before = new Int32Array(n);\n let last = -1;\n for (let i = 0; i < n; i++) {\n last = p[i] === most[i] ? i : last;\n before[i] = last;\n }\n const after = new Int32Array(n);\n last = -1;\n for (let i = n - 1; i >= 0; i--) {\n last = p[i] === most[i] ? i : last;\n after[i] = last;\n }\n const wants = new Array(n);\n for (let i = 0; i < n; i++) {\n const b = before[i];\n const a = after[i];\n const nearest = b < 0 ? a : a < 0 ? b : s[i] - s[b] <= s[a] - s[i] ? b : a;\n wants[i] = Math.min(copy[nearest], most[i]) - 1;\n widths[nodes[i]] = Math.max(widths[nodes[i]], most[i]);\n }\n steps.push(nodes);\n stepVisits.push(copy);\n stepWants.push(wants);\n }\n const taken = [];\n const threadOf = [];\n const free = (k, want) => {\n const width = widths[k];\n const own = taken[k] ??= /* @__PURE__ */ new Set();\n for (let d = 0; d < width; d++) {\n for (const c of [want - d, want + d]) {\n if (c >= 0 && c < width && !own.has(c)) {\n return c;\n }\n }\n }\n return want;\n };\n steps.forEach((nodes, piece) => {\n nodes.forEach((k, i) => {\n if (widths[k] > 1) {\n const t = free(k, stepWants[piece][i]);\n taken[k].add(t);\n (threadOf[k] ??= [])[stepVisits[piece][i]] = t;\n }\n });\n });\n const span = /* @__PURE__ */ new Map();\n const nodeThreads = /* @__PURE__ */ new Map();\n const threadPasses = /* @__PURE__ */ new Map();\n ids.forEach((id, k) => {\n span.set(id, widths[k]);\n nodeThreads.set(\n id,\n taken[k] ? [...taken[k]].sort((a, b) => a - b) : ONE_THREAD\n );\n const passOf = [];\n threadOf[k]?.forEach((thread, visit) => {\n passOf[thread] = visit - 1;\n });\n threadPasses.set(id, passOf);\n });\n const linkThreads = /* @__PURE__ */ new Map();\n steps.forEach((nodes, piece) => {\n const visit = stepVisits[piece];\n for (let i = 1; i < nodes.length; i++) {\n const from = nodes[i - 1];\n const to = nodes[i];\n const pair = [\n threadOf[from]?.[visit[i - 1]] ?? 0,\n threadOf[to]?.[visit[i]] ?? 0\n ];\n let ahead = linkThreads.get(ids[from]);\n if (!ahead) {\n ahead = /* @__PURE__ */ new Map();\n linkThreads.set(ids[from], ahead);\n }\n const list = ahead.get(ids[to]);\n if (!list) {\n ahead.set(ids[to], [pair]);\n } else if (!list.some(([a, b]) => a === pair[0] && b === pair[1])) {\n list.push(pair);\n }\n }\n });\n return { span, nodeThreads, threadPasses, linkThreads };\n}\nfunction bandSpans(lanes, spans, { reach, taper }) {\n const out = /* @__PURE__ */ new Map();\n lanes.runs.forEach((run, r) => {\n const s = arcOf(run);\n const mids = run.flatMap((p, i) => p.middle ? [i] : []);\n const along = mids.map((i) => s[i]);\n const owned = mids.map((i) => lanes.owned[r][i]);\n for (const [lo, hi] of ownedWindows(along, owned, reach / 2 + taper / 2)) {\n const at = along.slice(lo, hi + 1);\n const ids = mids.slice(lo, hi + 1).map((i) => run[i].id);\n const eased = spans.map((own) => {\n const raw = ids.map((id) => own.get(id) ?? 0);\n return raw.every((v) => v === raw[0]) ? { slot: raw, held: raw } : {\n slot: windowMean(at, windowed(at, raw, reach / 2, 1), taper / 2),\n held: windowMean(at, raw, taper / 2, (v) => v > 0)\n };\n });\n ids.forEach((id, i) => {\n if (owned[lo + i]) {\n out.set(id, {\n slot: eased.map((e) => e.slot[i]),\n held: eased.map((e) => e.held[i])\n });\n }\n });\n }\n });\n return out;\n}\nfunction liftLanes(walks, nodePositions, yToX, worldPerScreenPx) {\n const threaded = threadsPasses(walks);\n const passes = walks.map((w) => w.mostPasses);\n const reach = THREAD_REACH_PX * worldPerScreenPx;\n const runs = laneRuns(\n walks.flatMap((w) => w.route),\n nodePositions,\n yToX,\n LANE_SMOOTHING_PX * worldPerScreenPx\n );\n const lines = laneLines(\n runs,\n nodePositions,\n yToX,\n LANE_SMOOTHING_PX * worldPerScreenPx,\n bandWidthPx(passes) * (threaded ? bandScale(passes) : 1) * worldPerScreenPx,\n threaded\n );\n const threads = threaded ? walks.map((w) => walkThreads(w.route, w.passes, nodePositions, yToX, reach)) : void 0;\n const spans = threads ? bandSpans(\n runs,\n threads.map((t) => t.span),\n { reach, taper: THREAD_TAPER_PX * worldPerScreenPx }\n ) : void 0;\n const furthestShift = { dx: 0, dy: 0 };\n for (const own of lines.shifts.values()) {\n for (const shift of own) {\n furthestShift.dx = Math.max(furthestShift.dx, Math.abs(shift?.dx ?? 0));\n furthestShift.dy = Math.max(furthestShift.dy, Math.abs(shift?.dy ?? 0));\n }\n }\n return { lines, threads, spans, furthestShift };\n}\n\nexport {\n THREAD_PX,\n THREAD_GAP_PX,\n SLOT_GAP_PX,\n LANE_SMOOTHING_PX,\n THREAD_REACH_PX,\n THREAD_TAPER_PX,\n MAX_BAND_PX,\n PASSES_KEY,\n threadsPasses,\n THREAD_PITCH_PX,\n slotCentres,\n bandWidthPx,\n bandScale,\n passesKey,\n laneSlideAt,\n laneRuns,\n laneLines,\n walkThreads,\n bandSpans,\n liftLanes\n};\n", "// src/renderer/colorBits.ts\nfunction packAbgr(r, g, b, a) {\n return (a << 24 | b << 16 | g << 8 | r) >>> 0;\n}\nfunction abgrRed(c) {\n return c & 255;\n}\nfunction abgrGreen(c) {\n return c >>> 8 & 255;\n}\nfunction abgrBlue(c) {\n return c >>> 16 & 255;\n}\nfunction abgrAlpha(c) {\n return c >>> 24 & 255;\n}\nfunction abgrToCssRgba(c) {\n return `rgba(${abgrRed(c)},${abgrGreen(c)},${abgrBlue(c)},${abgrAlpha(c) / 255})`;\n}\nfunction normalizedRgbToCssRgba(c, alpha) {\n return `rgba(${Math.round(c[0] * 255)},${Math.round(c[1] * 255)},${Math.round(c[2] * 255)},${alpha})`;\n}\nfunction fadeAbgr(c, alpha) {\n return packAbgr(\n abgrRed(c),\n abgrGreen(c),\n abgrBlue(c),\n Math.round(abgrAlpha(c) * alpha)\n );\n}\nfunction brightenAbgr(c, factor) {\n const t = Math.max(0, 1 - 1 / factor);\n const lift = (v) => Math.round(v + (255 - v) * t);\n return packAbgr(\n lift(abgrRed(c)),\n lift(abgrGreen(c)),\n lift(abgrBlue(c)),\n abgrAlpha(c)\n );\n}\n\nexport {\n packAbgr,\n abgrRed,\n abgrGreen,\n abgrBlue,\n abgrAlpha,\n abgrToCssRgba,\n normalizedRgbToCssRgba,\n fadeAbgr,\n brightenAbgr\n};\n", "// src/referenceRampCss.ts\nvar REFERENCE_RAMP_MAX_HUE = 300;\nvar REFERENCE_RAMP_SATURATION = 0.7;\nvar REFERENCE_RAMP_LIGHTNESS = 0.5;\nfunction rampHueCss(hue) {\n return `hsl(${hue}, ${REFERENCE_RAMP_SATURATION * 100}%, ${REFERENCE_RAMP_LIGHTNESS * 100}%)`;\n}\nfunction rampHueAt(frac) {\n return Math.max(0, Math.min(1, frac)) * REFERENCE_RAMP_MAX_HUE;\n}\nfunction rampHue(bp, domain) {\n return rampHueAt((bp - domain.start) / (domain.end - domain.start));\n}\nvar HUE_STOP_DEG = 30;\nfunction rampStops({ start, bp, reversed }, domain) {\n const low = rampHue(start, domain);\n const high = rampHue(start + bp, domain);\n if (high - low < 1) {\n return [(low + high) / 2];\n }\n const n = Math.ceil((high - low) / HUE_STOP_DEG);\n return Array.from(\n { length: n + 1 },\n (_, i) => rampHue(start + bp * (reversed ? n - i : i) / n, domain)\n );\n}\nvar RAMP_GRADIENT_STOPS = Array.from({ length: 7 }, (_, i) => ({\n offset: i / 6,\n color: rampHueCss(i / 6 * REFERENCE_RAMP_MAX_HUE)\n}));\nvar RAMP_GRADIENT_CSS = `linear-gradient(to right, ${RAMP_GRADIENT_STOPS.map(\n (s) => `${s.color} ${s.offset * 100}%`\n).join(\", \")})`;\n\nexport {\n REFERENCE_RAMP_MAX_HUE,\n REFERENCE_RAMP_SATURATION,\n REFERENCE_RAMP_LIGHTNESS,\n rampHueCss,\n rampHueAt,\n rampHue,\n rampStops,\n RAMP_GRADIENT_STOPS,\n RAMP_GRADIENT_CSS\n};\n", "import {\n weakMemo\n} from \"./chunk-HMXCN6PG.js\";\nimport {\n edgeCurvesOf\n} from \"./chunk-3GORESBG.js\";\n\n// src/util/edgeCurves.ts\nvar cache = weakMemo();\nfunction baseEdgeCurves(nodePositions, graph, axis, deletions, version, routes, stranded = false) {\n return cache(\n nodePositions,\n [graph, axis.scaleX, axis.scaleY, deletions, routes, stranded, version],\n () => {\n const curves = /* @__PURE__ */ new Map();\n for (let ei = 0; ei < graph.edges.length; ei++) {\n const bypassed = deletions?.get(ei);\n const edgeCurves = edgeCurvesOf(\n nodePositions,\n graph.edges[ei],\n axis,\n bypassed,\n bypassed && routes?.[ei],\n stranded\n );\n if (edgeCurves) {\n curves.set(ei, edgeCurves);\n }\n }\n return curves;\n }\n );\n}\n\nexport {\n baseEdgeCurves\n};\n", "import {\n pushTo\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n isBackbone\n} from \"./chunk-RJWPJCIB.js\";\n\n// src/referenceSpan.ts\nvar MAX_BACKBONE_HOPS = 4;\nfunction buildNeighbors(graph) {\n const neighbors = /* @__PURE__ */ new Map();\n for (const edge of graph.edges) {\n pushTo(neighbors, edge.from, edge.to);\n pushTo(neighbors, edge.to, edge.from);\n }\n return neighbors;\n}\nfunction flankingSpan({\n nodeId,\n nodeById,\n neighbors\n}) {\n const seen = /* @__PURE__ */ new Set([nodeId]);\n let frontier = [nodeId];\n let minEnd = Infinity;\n let maxStart = -Infinity;\n for (let hop = 0; hop < MAX_BACKBONE_HOPS && frontier.length > 0; hop++) {\n const next = [];\n for (const id of frontier) {\n const adjacent = neighbors.get(id);\n if (adjacent) {\n for (const neighborId of adjacent) {\n if (!seen.has(neighborId)) {\n seen.add(neighborId);\n const neighbor = nodeById.get(neighborId);\n if (neighbor && isBackbone(neighbor)) {\n minEnd = Math.min(minEnd, neighbor.stable.start + neighbor.length);\n maxStart = Math.max(maxStart, neighbor.stable.start);\n } else {\n next.push(neighborId);\n }\n }\n }\n }\n }\n frontier = next;\n }\n return minEnd === Infinity ? void 0 : {\n start: Math.min(minEnd, maxStart),\n end: Math.max(minEnd, maxStart)\n };\n}\nfunction nodeReferenceSpan({\n nodeId,\n nodeById,\n neighbors\n}) {\n const node = nodeById.get(nodeId);\n return node === void 0 ? void 0 : isBackbone(node) ? { start: node.stable.start, end: node.stable.start + node.length } : flankingSpan({ nodeId, nodeById, neighbors });\n}\nfunction referenceMidpoints(graph) {\n const nodeById = new Map(graph.nodes.map((node) => [node.id, node]));\n const neighbors = buildNeighbors(graph);\n const midpoints = /* @__PURE__ */ new Map();\n for (const node of graph.nodes) {\n const span = nodeReferenceSpan({ nodeId: node.id, nodeById, neighbors });\n if (span) {\n midpoints.set(node.id, (span.start + span.end) / 2);\n }\n }\n return midpoints;\n}\n\nexport {\n buildNeighbors,\n nodeReferenceSpan,\n referenceMidpoints\n};\n", "import {\n THREAD_PITCH_PX,\n THREAD_PX,\n bandScale,\n bandWidthPx,\n laneSlideAt,\n liftLanes,\n slotCentres,\n threadsPasses\n} from \"./chunk-4KBZ7WPP.js\";\nimport {\n abgrToCssRgba,\n fadeAbgr,\n packAbgr\n} from \"./chunk-G2FD7S3C.js\";\nimport {\n REFERENCE_RAMP_LIGHTNESS,\n REFERENCE_RAMP_SATURATION,\n rampHueAt\n} from \"./chunk-GQZVR5DW.js\";\nimport {\n baseEdgeCurves\n} from \"./chunk-P2GJBFNA.js\";\nimport {\n PATH_LIGHTNESS,\n PATH_SATURATION,\n nameHue,\n pathHueAt\n} from \"./chunk-VQ353UDK.js\";\nimport {\n meanDepth,\n nodeWidthPx,\n walkLaneWidthPx\n} from \"./chunk-ZANALBSX.js\";\nimport {\n referenceMidpoints\n} from \"./chunk-VX656OAZ.js\";\nimport {\n weakMemo\n} from \"./chunk-HMXCN6PG.js\";\nimport {\n dashSpans,\n pathRibbonOffsets,\n polylinePx,\n slideCurves,\n strandSides,\n translateCurves,\n yToXOf\n} from \"./chunk-JJV2GT2Z.js\";\nimport {\n pushTo\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n isBackbone\n} from \"./chunk-RJWPJCIB.js\";\nimport {\n busiestEdge,\n edgeWidthFactor\n} from \"./chunk-DAEEMZ74.js\";\n\n// src/renderer/GeometryBuilder.ts\nvar EDGE_DEFAULT_COLOR = packAbgr(119, 119, 119, 217);\nvar EDGE_PATH_FALLBACK_COLOR = packAbgr(136, 136, 136, 217);\nvar EDGE_DELETION_COLOR = packAbgr(24, 24, 28, 240);\nvar DELETION_THICKNESS_FACTOR = 2.2;\nvar LIFT_BACKDROP_COLOR = packAbgr(160, 160, 160, 255);\nvar FADED_ALPHA = 0.18;\nvar LIFT_BACKDROP_CSS = abgrToCssRgba(\n fadeAbgr(LIFT_BACKDROP_COLOR, FADED_ALPHA)\n);\nvar DELETION_DASH_PX = 11;\nvar MIN_PATH_STRIPE_PX = 1.2;\nvar MIN_SCALE_FOR_OFFSET = 1e-6;\nvar ARROW_LENGTH_BASE_PX = 7;\nvar ARROW_LENGTH_PER_EDGE_PX = 3;\nvar ARROW_HALF_WIDTH_BASE_PX = 3;\nvar ARROW_HALF_WIDTH_PER_EDGE_PX = 1.5;\nvar MIN_LINK_HEADS = 3;\nvar MIN_ARROW_FIT = 0.5;\nvar MIN_ARROW_SCALE = 0.45;\nvar ARROW_CURVE_STEPS = 12;\nvar ABUTTING_PX = 1e-6;\nvar walkX = new Float64Array(64);\nvar walkY = new Float64Array(64);\nvar walkPx = new Float64Array(64);\nfunction backFromEnd(curves, scale, yToX, untilPx) {\n const most = curves.length * ARROW_CURVE_STEPS + 1;\n if (walkX.length < most) {\n walkX = new Float64Array(most);\n walkY = new Float64Array(most);\n walkPx = new Float64Array(most);\n }\n const last = curves[curves.length - 1];\n walkX[0] = last.x1;\n walkY[0] = last.y1;\n walkPx[0] = 0;\n let n = 1;\n let px = 0;\n for (let ci = curves.length - 1; ci >= 0 && px < untilPx; ci--) {\n const c = curves[ci];\n for (let k = 1; k <= ARROW_CURVE_STEPS && px < untilPx; k++) {\n const t = 1 - (k / ARROW_CURVE_STEPS) ** 2;\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 const x = a * c.x0 + b * c.cx0 + d * c.cx1 + e * c.x1;\n const y = a * c.y0 + b * c.cy0 + d * c.cy1 + e * c.y1;\n px += Math.hypot(x - walkX[n - 1], (y - walkY[n - 1]) * yToX) * scale;\n walkX[n] = x;\n walkY[n] = y;\n walkPx[n] = px;\n n++;\n }\n }\n return n;\n}\nfunction walkPointAt(n, px) {\n let i = 1;\n while (i < n - 1 && walkPx[i] < px) {\n i++;\n }\n const from = walkPx[i - 1];\n const to = walkPx[i];\n const f = to > from ? Math.min(1, Math.max(0, (px - from) / (to - from))) : 0;\n return {\n x: walkX[i - 1] + (walkX[i] - walkX[i - 1]) * f,\n y: walkY[i - 1] + (walkY[i] - walkY[i - 1]) * f\n };\n}\nfunction arrowheadFor({\n curves,\n edgeHalfWidth,\n nodeHalfWidth,\n scale,\n yToX,\n color,\n fromSegments,\n toSegments\n}) {\n const length = ARROW_LENGTH_BASE_PX + ARROW_LENGTH_PER_EDGE_PX * edgeHalfWidth;\n const n = backFromEnd(\n curves,\n scale,\n yToX,\n nodeHalfWidth + MIN_LINK_HEADS * length\n );\n const lengthPx = walkPx[n - 1];\n const abutting = lengthPx < ABUTTING_PX;\n const inset = Math.min(nodeHalfWidth, lengthPx);\n const fit = abutting ? Math.min(1, polylinePx(fromSegments, scale, scale * yToX) / length) : 1;\n if (abutting ? fit < MIN_ARROW_FIT : lengthPx < MIN_LINK_HEADS * length) {\n return void 0;\n }\n const tip = walkPointAt(n, inset);\n const base = walkPointAt(n, inset + length * fit);\n const dx = tip.x - base.x;\n const dy = (tip.y - base.y) * yToX;\n const last = curves[curves.length - 1];\n return {\n x: tip.x,\n y: tip.y,\n angle: Math.hypot(dx, dy) > 0 ? Math.atan2(dy, dx) : endTangent(last, yToX, intoDirection(last, toSegments)),\n length: length * fit,\n halfWidth: (ARROW_HALF_WIDTH_BASE_PX + ARROW_HALF_WIDTH_PER_EDGE_PX * edgeHalfWidth) * fit,\n color\n };\n}\nvar FIRST_THREADS = [[0, 0]];\nvar ONE_PASS = [0];\nvar NO_SHIFT = { dx: 0, dy: 0 };\nfunction nearerStart(at, segments, yToX) {\n const gap = (p) => Math.hypot(p.x - at.x, (p.y - at.y) * yToX);\n return gap(segments[0]) < gap(segments.at(-1));\n}\nfunction leavesStart(edge, segments, first, stranded, yToX) {\n return stranded ? strandSides(edge).from === \"start\" : nearerStart({ x: first.x0, y: first.y0 }, segments, yToX);\n}\nfunction intoDirection(last, toSegments) {\n if (toSegments.length < 2) {\n return void 0;\n }\n const first = toSegments[0];\n const final = toSegments[toSegments.length - 1];\n const atStart = Math.hypot(last.x1 - first.x, last.y1 - first.y) <= Math.hypot(last.x1 - final.x, last.y1 - final.y);\n return atStart ? { from: first, to: toSegments[1] } : { from: final, to: toSegments[toSegments.length - 2] };\n}\nfunction normal(a, b) {\n if (!a || !b) {\n return void 0;\n }\n const dx = b.x - a.x;\n const dy = b.y - a.y;\n const len = Math.hypot(dx, dy);\n return len > 0 ? { nx: -dy / len, ny: dx / len } : void 0;\n}\nvar MITRE_LIMIT = 0.1;\nvar LONGEST_NORMAL = 1 / Math.sqrt(MITRE_LIMIT);\nfunction pointNormalsOf(rawPoints, yToX = 1) {\n const points = yToX === 1 ? rawPoints : rawPoints.map((p) => ({ x: p.x, y: p.y * yToX }));\n return points.map((p, i) => {\n const before = normal(points[i - 1], p);\n const after = normal(p, points[i + 1]);\n if (before && after) {\n const nx = (before.nx + after.nx) / 2;\n const ny = (before.ny + after.ny) / 2;\n const dot = before.nx * nx + before.ny * ny;\n return dot > MITRE_LIMIT ? { nx: nx / dot, ny: ny / dot } : { nx, ny };\n }\n return before ?? after ?? { nx: 0, ny: 0 };\n });\n}\nfunction offsetPolyline(points, normals, distance, yToX = 1) {\n const out = new Array(points.length);\n for (let i = 0; i < points.length; i++) {\n out[i] = {\n x: points[i].x + normals[i].nx * distance,\n y: points[i].y + normals[i].ny * distance / yToX\n };\n }\n return out;\n}\nfunction hslToRgb(h, s, l) {\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const x = c * (1 - Math.abs(h / 60 % 2 - 1));\n const m = l - c / 2;\n let r = 0;\n let g = 0;\n let b = 0;\n if (h < 60) {\n r = c;\n g = x;\n } else if (h < 120) {\n r = x;\n g = c;\n } else if (h < 180) {\n g = c;\n b = x;\n } else if (h < 240) {\n g = x;\n b = c;\n } else if (h < 300) {\n r = x;\n b = c;\n } else {\n r = c;\n b = x;\n }\n return [r + m, g + m, b + m];\n}\nfunction packHsl(h, s, l, a = 1) {\n const [r, g, b] = hslToRgb(h, s, l);\n return packAbgr(\n Math.round(r * 255),\n Math.round(g * 255),\n Math.round(b * 255),\n Math.round(a * 255)\n );\n}\nvar DEPTH_GRADIENT = [\n [68, 1, 84],\n [59, 82, 139],\n [33, 145, 140],\n [94, 201, 98],\n [253, 231, 37]\n];\nvar STABLE_RANK_GRADIENT = [\n [237, 137, 44],\n [158, 42, 122]\n];\nvar NODE_LENGTH_GRADIENT = [\n [220, 50, 50],\n [50, 120, 220]\n];\nfunction sampleGradient(stops, t) {\n const pos = Math.max(0, Math.min(1, t)) * (stops.length - 1);\n const i = Math.min(stops.length - 2, Math.floor(pos));\n const f = pos - i;\n const a = stops[i];\n const b = stops[i + 1];\n return packAbgr(\n Math.round(a[0] + (b[0] - a[0]) * f),\n Math.round(a[1] + (b[1] - a[1]) * f),\n Math.round(a[2] + (b[2] - a[2]) * f),\n 255\n );\n}\nfunction hashColor(str, alpha) {\n return packHsl(nameHue(str), PATH_SATURATION, PATH_LIGHTNESS, alpha);\n}\nvar REFERENCE_RAMP_ALT_RGB = [60, 65, 72];\nvar REFERENCE_RAMP_ALT_COLOR = packAbgr(...REFERENCE_RAMP_ALT_RGB, 255);\nvar REFERENCE_RAMP_ALT_CSS = `rgb(${REFERENCE_RAMP_ALT_RGB.join(\", \")})`;\nfunction rampFraction(node, ramp) {\n const mid = ramp.midpoints.get(node.id);\n return isBackbone(node) && mid !== void 0 ? (mid - ramp.start) / ramp.span : void 0;\n}\nfunction computeReferenceRamp(graph, domain) {\n const midpoints = referenceMidpoints(graph);\n if (domain && domain.end > domain.start) {\n return {\n start: domain.start,\n span: domain.end - domain.start,\n midpoints\n };\n }\n let min = Infinity;\n let max = -Infinity;\n for (const mid of midpoints.values()) {\n min = Math.min(min, mid);\n max = Math.max(max, mid);\n }\n return {\n start: min === Infinity ? 0 : min,\n span: max > min ? max - min : 1,\n midpoints\n };\n}\nfunction computeColorSchemeRange(graph, referenceRamp) {\n let minDepth = Infinity;\n let maxDepth = -Infinity;\n let minLength = Infinity;\n let maxLength = -Infinity;\n let maxRank = 0;\n for (const n of graph.nodes) {\n if (n.stable !== void 0 && n.stable.rank > maxRank) {\n maxRank = n.stable.rank;\n }\n if (n.depth < minDepth) {\n minDepth = n.depth;\n }\n if (n.depth > maxDepth) {\n maxDepth = n.depth;\n }\n if (n.length < minLength) {\n minLength = n.length;\n }\n if (n.length > maxLength) {\n maxLength = n.length;\n }\n }\n return {\n minDepth,\n maxDepth,\n minLength,\n maxLength,\n maxRank,\n nodeCount: graph.nodes.length,\n referenceRamp\n };\n}\nfunction getNodeColor(node, nodeIndex, colorScheme, range) {\n switch (colorScheme) {\n case \"random\":\n return hashColor(node.id, 1);\n case \"depth\":\n return sampleGradient(\n DEPTH_GRADIENT,\n range.maxDepth > range.minDepth ? (node.depth - range.minDepth) / (range.maxDepth - range.minDepth) : 0.5\n );\n case \"node-length\":\n return sampleGradient(\n NODE_LENGTH_GRADIENT,\n range.maxLength > range.minLength ? (node.length - range.minLength) / (range.maxLength - range.minLength) : 0.5\n );\n // rGFA states the backbone rather than leaving it to be inferred: rank 0 is\n // the reference, higher ranks are the sequence that diverges from it. A\n // graph with no SR tags draws every node as unranked.\n case \"stable-rank\":\n return node.stable === void 0 ? packAbgr(160, 160, 160, 255) : node.stable.rank === 0 ? packAbgr(52, 152, 219, 255) : sampleGradient(\n STABLE_RANK_GRADIENT,\n range.maxRank > 1 ? (node.stable.rank - 1) / (range.maxRank - 1) : 0\n );\n // Position on the reference, the one quantity both panels of a\n // graph-over-linear figure can state, so only the backbone takes a hue\n case \"reference-position\": {\n const ramp = range.referenceRamp;\n if (ramp === void 0) {\n return packAbgr(160, 160, 160, 255);\n }\n const t = rampFraction(node, ramp);\n return t === void 0 ? REFERENCE_RAMP_ALT_COLOR : packHsl(\n rampHueAt(t),\n REFERENCE_RAMP_SATURATION,\n REFERENCE_RAMP_LIGHTNESS\n );\n }\n case \"grey\":\n return packAbgr(160, 160, 160, 255);\n case \"rainbow\": {\n const hue = range.nodeCount > 1 ? nodeIndex / range.nodeCount * 360 : 0;\n return packHsl(hue, 0.75, 0.5);\n }\n default:\n return packAbgr(52, 152, 219, 255);\n }\n}\nfunction endTangent(c, yToX = 1, into) {\n const candidates = [\n [c.cx1, c.cy1],\n [c.cx0, c.cy0],\n [c.x0, c.y0]\n ];\n for (const [x, y] of candidates) {\n const dx = c.x1 - x;\n const dy = (c.y1 - y) * yToX;\n if (Math.hypot(dx, dy) > 0) {\n return Math.atan2(dy, dx);\n }\n }\n return into ? Math.atan2((into.to.y - into.from.y) * yToX, into.to.x - into.from.x) : 0;\n}\nfunction isPolylineInBounds(segments, bounds) {\n let hit = false;\n for (let i = 0; i < segments.length - 1 && !hit; i++) {\n const a = segments[i];\n const b = segments[i + 1];\n hit = Math.max(a.x, b.x) >= bounds.minX && Math.min(a.x, b.x) <= bounds.maxX && Math.max(a.y, b.y) >= bounds.minY && Math.min(a.y, b.y) <= bounds.maxY;\n }\n return hit;\n}\nfunction isBezierInBounds(curves, bounds, growX = 0, growY = 0) {\n for (const c of curves) {\n const cMinX = Math.min(c.x0, c.cx0, c.cx1, c.x1);\n const cMaxX = Math.max(c.x0, c.cx0, c.cx1, c.x1);\n const cMinY = Math.min(c.y0, c.cy0, c.cy1, c.y1);\n const cMaxY = Math.max(c.y0, c.cy0, c.cy1, c.y1);\n if (cMaxX >= bounds.minX - growX && cMinX <= bounds.maxX + growX && cMaxY >= bounds.minY - growY && cMinY <= bounds.maxY + growY) {\n return true;\n }\n }\n return false;\n}\nvar paletteCache = /* @__PURE__ */ new WeakMap();\nfunction pathPaletteOf(graph) {\n let palette = paletteCache.get(graph);\n if (!palette) {\n const pathColorByIndex = [];\n const pathIndexByName = /* @__PURE__ */ new Map();\n const paths = graph.paths ?? [];\n for (let i = 0; i < paths.length; i++) {\n pathColorByIndex.push(\n packHsl(\n pathHueAt(i, paths.length),\n PATH_SATURATION,\n PATH_LIGHTNESS,\n 0.85\n )\n );\n if (!pathIndexByName.has(paths[i].name)) {\n pathIndexByName.set(paths[i].name, i);\n }\n }\n palette = { pathColorByIndex, pathIndexByName };\n paletteCache.set(graph, palette);\n }\n return palette;\n}\nvar slotsCache = /* @__PURE__ */ new WeakMap();\nvar NO_SLOTS = /* @__PURE__ */ new Map();\nfunction pathSlotsOf(graph) {\n let slots = slotsCache.get(graph);\n if (!slots) {\n slots = /* @__PURE__ */ new Map();\n for (const [pathIdx, path] of (graph.paths ?? []).entries()) {\n for (const nodeId of new Set(path.nodeIds)) {\n pushTo(slots, nodeId, pathIdx);\n }\n }\n slotsCache.set(graph, slots);\n }\n return slots;\n}\nvar lanesCache = weakMemo();\nvar linksCache = /* @__PURE__ */ new WeakMap();\nfunction linksOf(graph) {\n let links = linksCache.get(graph);\n if (!links) {\n links = /* @__PURE__ */ new Map();\n for (const { from, to } of graph.edges) {\n let out = links.get(from);\n if (!out) {\n out = /* @__PURE__ */ new Set();\n links.set(from, out);\n }\n out.add(to);\n }\n linksCache.set(graph, links);\n }\n return links;\n}\nfunction buildGeometry(options) {\n const {\n nodePositions,\n graph,\n nodeById,\n colorScheme,\n contigThickness,\n connectorThickness,\n drawPaths,\n nodeWidth = \"uniform\",\n edgeWidth = \"uniform\",\n highlight,\n axis,\n linearLayout,\n viewportBounds,\n referenceRamp,\n deletions,\n deletionRoutes,\n stranded,\n hiddenEdges,\n version = 0\n } = options;\n const depthNorm = nodeWidth === \"depth\" ? meanDepth(graph) : 0;\n const busiest = edgeWidth === \"walks\" ? busiestEdge(graph) : 0;\n const scale = axis.scaleX;\n const worldPerScreenPx = 1 / Math.max(scale, MIN_SCALE_FOR_OFFSET);\n const yToX = yToXOf(axis);\n const sharedCurves = baseEdgeCurves(\n nodePositions,\n graph,\n axis,\n deletions,\n version,\n deletionRoutes,\n stranded\n );\n const nodeStrokes = [];\n const nodeStrokeRuns = /* @__PURE__ */ new Map();\n const arrows = [];\n const arrowRuns = /* @__PURE__ */ new Map();\n const edgeCurves = [];\n const edgeCurveRuns = /* @__PURE__ */ new Map();\n const colorRange = computeColorSchemeRange(graph, referenceRamp);\n const nodeIndexMap = /* @__PURE__ */ new Map();\n if (colorScheme === \"rainbow\") {\n for (let i = 0; i < graph.nodes.length; i++) {\n nodeIndexMap.set(graph.nodes[i].id, i);\n }\n }\n const pathCount = graph.paths?.length ?? 0;\n const { pathColorByIndex, pathIndexByName } = pathPaletteOf(graph);\n const pathColorByName = (name) => pathColorByIndex[pathIndexByName.get(name) ?? -1] ?? EDGE_PATH_FALLBACK_COLOR;\n const nodePathSlots = drawPaths && pathCount > 1 ? pathSlotsOf(graph) : NO_SLOTS;\n const liftedWalks = highlight?.walks ?? [];\n const threaded = threadsPasses(liftedWalks);\n const lanePasses = liftedWalks.map((w) => w.mostPasses);\n const thinned = threaded ? bandScale(lanePasses) : 1;\n const fields = highlight && liftedWalks.length > 1 ? lanesCache(\n highlight,\n [nodePositions, version, axis.scaleX, axis.scaleY],\n () => liftLanes(liftedWalks, nodePositions, yToX, worldPerScreenPx)\n ) : void 0;\n const lines = fields?.lines;\n const threads = fields?.threads;\n const spanField = fields?.spans;\n const plainCentres = threaded ? slotCentres(lanePasses, lanePasses) : [];\n const centresByNode = /* @__PURE__ */ new Map();\n const centresOf = (nodeId) => {\n let centres = centresByNode.get(nodeId);\n if (!centres) {\n const spans = spanField?.get(nodeId);\n centres = spans ? slotCentres(spans.slot, lanePasses, spans.held) : plainCentres;\n centresByNode.set(nodeId, centres);\n }\n return centres;\n };\n const laneOffset = (nodeId, laneWidth, lane, pass) => threaded ? (centresOf(nodeId)[lane] + pass * THREAD_PITCH_PX) * thinned : (lane - (liftedWalks.length - 1) / 2) * laneWidth;\n const laneHalfWidth = (laneWidth) => threaded ? THREAD_PX / 2 * thinned : laneWidth / 2;\n const laneNormals = /* @__PURE__ */ new Map();\n const laneNormalsOf = (nodeId, segments) => {\n let normals = laneNormals.get(nodeId);\n if (!normals) {\n const smoothed = lines?.normals.get(nodeId);\n normals = smoothed ? pointNormalsOf(segments, yToX).map((n, i) => smoothed[i] ?? n) : pointNormalsOf(segments, yToX);\n laneNormals.set(nodeId, normals);\n }\n return normals;\n };\n const laneWidths = /* @__PURE__ */ new Map();\n const laneWidthOf = (id) => {\n let width = laneWidths.get(id);\n if (width === void 0) {\n const node = nodeById.get(id);\n width = walkLaneWidthPx(\n node ? nodeWidthPx(node, contigThickness, nodeWidth, depthNorm) : contigThickness,\n liftedWalks.length\n );\n laneWidths.set(id, width);\n }\n return width;\n };\n const laneShiftOf = (nodeId, index) => lines?.shifts.get(nodeId)?.[index] ?? NO_SHIFT;\n const laneEndOf = (id, segments, atStart) => {\n const at = atStart ? 0 : segments.length - 1;\n return {\n id,\n laneWidth: laneWidthOf(id),\n normal: laneNormalsOf(id, segments)[at] ?? { nx: 0, ny: 0 },\n shift: laneShiftOf(id, at)\n };\n };\n const lanesMayShow = (curves, fromId) => {\n if (!viewportBounds) {\n return true;\n }\n const offset = threaded ? bandWidthPx(lanePasses) * thinned : (liftedWalks.length - 1) / 2 * laneWidthOf(fromId);\n const reach = LONGEST_NORMAL * offset * worldPerScreenPx;\n return isBezierInBounds(\n curves,\n viewportBounds,\n reach + (fields?.furthestShift.dx ?? 0),\n reach / yToX + (fields?.furthestShift.dy ?? 0)\n );\n };\n const threadPairs = (lane, from, to) => {\n const own = threads?.[lane]?.linkThreads;\n if (!own?.size) {\n return FIRST_THREADS;\n }\n const ahead = own.get(from)?.get(to);\n const back = linksOf(graph).get(to)?.has(from) ? void 0 : own.get(to)?.get(from);\n if (!back) {\n return ahead ?? FIRST_THREADS;\n }\n const turned = back.map(([a, b]) => [b, a]);\n return ahead ? [...ahead, ...turned] : turned;\n };\n const threadColor = (lane, nodeId, thread) => liftedWalks[lane]?.passColors.get(nodeId)?.[threads?.[lane]?.threadPasses.get(nodeId)?.[thread] ?? 0];\n const lanePointsOf = (nodeId, segments) => lines?.shifts.has(nodeId) ? segments.map((p, i) => {\n const { dx, dy } = laneShiftOf(nodeId, i);\n return { ...p, x: p.x + dx, y: p.y + dy };\n }) : segments;\n const showArrows = scale > (linearLayout ? 1 : MIN_ARROW_SCALE);\n for (let ei = 0; ei < graph.edges.length; ei++) {\n const edge = graph.edges[ei];\n const fromSegments = nodePositions[edge.from];\n const toSegments = nodePositions[edge.to];\n const baseCurves = sharedCurves.get(ei);\n if (!fromSegments?.length || !toSegments?.length || !baseCurves || hiddenEdges?.has(ei)) {\n continue;\n }\n const numPaths = edge.pathIds?.length ?? 0;\n const bypassed = deletions?.get(ei);\n const isDeletion = bypassed !== void 0;\n const onWalk = highlight?.edgeIndexes.has(ei) ?? false;\n const ribbonThickness = connectorThickness / 2 * (isDeletion ? DELETION_THICKNESS_FACTOR : 1);\n const edgeThickness = isDeletion ? ribbonThickness : connectorThickness / 2 * edgeWidthFactor(numPaths, busiest, edgeWidth);\n const ribbons = drawPaths && numPaths > 0;\n const plainEdgeColor = isDeletion ? EDGE_DELETION_COLOR : EDGE_DEFAULT_COLOR;\n const edgeColor = !highlight || onWalk ? plainEdgeColor : fadeAbgr(plainEdgeColor, FADED_ALPHA);\n const toNode = nodeById.get(edge.to);\n const intoHalfWidth = (toNode ? nodeWidthPx(toNode, contigThickness, nodeWidth, depthNorm) : contigThickness) / 2;\n const inView = (curves) => !viewportBounds || isBezierInBounds(curves, viewportBounds);\n const dashesOf = (curves) => dashSpans(curves, DELETION_DASH_PX / scale, yToX, viewportBounds);\n const stroke = (curves, thickness, color) => {\n if (!isDeletion) {\n edgeCurves.push({ curves, thickness, color });\n return;\n }\n for (const dash of dashesOf(curves)) {\n edgeCurves.push({ curves: dash.curves, thickness, color });\n }\n };\n const laneStroke = (curves, thickness, color, walk, pass, normal2, offsetX, endNormal, endOffsetX) => {\n if (!isDeletion) {\n edgeCurves.push({\n curves,\n thickness,\n color,\n walk,\n pass,\n normal: normal2,\n offsetX,\n endNormal,\n endOffsetX\n });\n return;\n }\n const start = { normal: normal2, offsetX };\n const end = { normal: endNormal, offsetX: endOffsetX };\n for (const dash of dashesOf(curves)) {\n const a = dash.startAlong === 0 ? start : laneSlideAt(start, end, dash.startAlong);\n const b = dash.endAlong === 1 ? end : laneSlideAt(start, end, dash.endAlong);\n edgeCurves.push({\n curves: dash.curves,\n thickness,\n color,\n walk,\n pass,\n normal: a.normal,\n offsetX: a.offsetX,\n endNormal: b.normal,\n endOffsetX: b.offsetX\n });\n }\n };\n const arrowOn = (curves) => {\n const head = showArrows ? arrowheadFor({\n curves,\n edgeHalfWidth: isDeletion || ribbons ? connectorThickness / 2 : edgeThickness,\n nodeHalfWidth: intoHalfWidth,\n scale,\n yToX,\n color: edgeColor,\n fromSegments,\n toSegments\n }) : void 0;\n if (head) {\n arrows.push(head);\n }\n };\n const edgeCurveStart = edgeCurves.length;\n const arrowStart = arrows.length;\n const laneWalks = highlight?.walks.length && onWalk && !ribbons ? highlight.walks : void 0;\n if (laneWalks && !lanesMayShow(baseCurves, edge.from)) {\n continue;\n }\n if (laneWalks) {\n const from = laneEndOf(\n edge.from,\n fromSegments,\n leavesStart(edge, fromSegments, baseCurves[0], stranded, yToX)\n );\n const last = baseCurves.at(-1);\n const to = threaded ? laneEndOf(\n edge.to,\n toSegments,\n nearerStart({ x: last.x1, y: last.y1 }, toSegments, yToX)\n ) : from;\n const single = laneWalks.length === 1;\n const thickness = laneHalfWidth(from.laneWidth);\n for (let lane = 0; lane < laneWalks.length; lane++) {\n const walk = laneWalks[lane];\n if (!walk.edgeIndexes.has(ei)) {\n continue;\n }\n for (const [pass, toPass] of threadPairs(lane, edge.from, edge.to)) {\n const offsetX = single ? 0 : laneOffset(from.id, from.laneWidth, lane, pass) * worldPerScreenPx;\n const endOffsetX = threaded ? laneOffset(to.id, to.laneWidth, lane, toPass) * worldPerScreenPx : offsetX;\n const curves = threaded ? slideCurves(\n baseCurves,\n from.shift.dx + from.normal.nx * offsetX,\n from.shift.dy + from.normal.ny * offsetX / yToX,\n to.shift.dx + to.normal.nx * endOffsetX,\n to.shift.dy + to.normal.ny * endOffsetX / yToX\n ) : offsetX === 0 ? baseCurves : translateCurves(\n baseCurves,\n from.normal.nx * offsetX,\n from.normal.ny * offsetX / yToX\n );\n if (inView(curves)) {\n laneStroke(\n curves,\n thickness,\n threadColor(lane, edge.from, pass) ?? threadColor(lane, edge.to, toPass) ?? plainEdgeColor,\n lane,\n pass,\n from.normal,\n offsetX,\n to.normal,\n endOffsetX\n );\n }\n }\n }\n if (edgeCurves.length > edgeCurveStart) {\n arrowOn(baseCurves);\n }\n } else if (!ribbons) {\n if (inView(baseCurves)) {\n stroke(baseCurves, edgeThickness, edgeColor);\n arrowOn(baseCurves);\n }\n } else {\n const offsets = pathRibbonOffsets(\n fromSegments,\n toSegments,\n numPaths,\n axis\n );\n const arrowRibbon = Math.floor((numPaths - 1) / 2);\n for (let pathIdx = 0; pathIdx < numPaths; pathIdx++) {\n const { x, y } = offsets[pathIdx];\n const curves = x === 0 && y === 0 ? baseCurves : translateCurves(baseCurves, x, y);\n if (!inView(curves)) {\n continue;\n }\n const ribbonColor = pathColorByName(edge.pathIds[pathIdx]);\n stroke(\n curves,\n ribbonThickness,\n highlight && (highlight.walks.length ? !highlight.names.has(edge.pathIds[pathIdx]) : !onWalk) ? fadeAbgr(ribbonColor, FADED_ALPHA) : ribbonColor\n );\n if (pathIdx === arrowRibbon) {\n arrowOn(curves);\n }\n }\n }\n const edgeCurveCount = edgeCurves.length - edgeCurveStart;\n if (edgeCurveCount > 0) {\n edgeCurveRuns.set(ei, { start: edgeCurveStart, count: edgeCurveCount });\n }\n const arrowCount = arrows.length - arrowStart;\n if (arrowCount > 0) {\n arrowRuns.set(ei, { start: arrowStart, count: arrowCount });\n }\n }\n for (const [nodeId, segments] of Object.entries(nodePositions)) {\n const node = nodeById.get(nodeId);\n if (!node) {\n continue;\n }\n if (viewportBounds && !isPolylineInBounds(segments, viewportBounds)) {\n continue;\n }\n const faded = highlight !== void 0 && !highlight.nodeIds.has(nodeId);\n const own = faded ? LIFT_BACKDROP_COLOR : getNodeColor(\n node,\n nodeIndexMap.get(nodeId) ?? 0,\n colorScheme,\n colorRange\n );\n const color = faded ? fadeAbgr(own, FADED_ALPHA) : own;\n const width = nodeWidthPx(node, contigThickness, nodeWidth, depthNorm);\n const nodeThickness = width / 2;\n const start = nodeStrokes.length;\n const slots = nodePathSlots.get(nodeId);\n const slotWidth = width / pathCount;\n const drawable = segments.length >= 2;\n const lanes = highlight?.walks.length && !faded && !slots?.length ? highlight.walks : void 0;\n if (drawable && lanes) {\n const laneWidth = walkLaneWidthPx(width, lanes.length);\n const normals = lanes.length > 1 ? laneNormalsOf(nodeId, segments) : [];\n const points = lanes.length > 1 ? lanePointsOf(nodeId, segments) : segments;\n const thickness = laneHalfWidth(laneWidth);\n for (let lane = 0; lane < lanes.length; lane++) {\n const laneColor = lanes[lane].colors.get(nodeId);\n if (laneColor === void 0) {\n continue;\n }\n const onThreads = threads?.[lane]?.nodeThreads.get(nodeId) ?? ONE_PASS;\n for (const pass of onThreads) {\n const color2 = threadColor(lane, nodeId, pass) ?? laneColor;\n if (lanes.length === 1) {\n nodeStrokes.push({\n points: segments,\n thickness,\n color: color2,\n walk: lane,\n pass\n });\n continue;\n }\n const offsetX = laneOffset(nodeId, laneWidth, lane, pass) * worldPerScreenPx;\n nodeStrokes.push({\n points: offsetPolyline(points, normals, offsetX, yToX),\n thickness,\n color: color2,\n walk: lane,\n pass,\n normals,\n offsetX\n });\n }\n }\n } else if (drawable && slots?.length && slotWidth >= MIN_PATH_STRIPE_PX) {\n const normals = pointNormalsOf(segments, yToX);\n for (const slot of slots) {\n const offset = (slot - (pathCount - 1) / 2) * slotWidth * worldPerScreenPx;\n const stripe = pathColorByIndex[slot] ?? EDGE_PATH_FALLBACK_COLOR;\n nodeStrokes.push({\n points: offsetPolyline(segments, normals, offset, yToX),\n thickness: slotWidth / 2,\n // a node off the lifted walk fades whichever way it is painted\n color: faded ? fadeAbgr(stripe, FADED_ALPHA) : stripe\n });\n }\n } else if (drawable) {\n nodeStrokes.push({ points: segments, thickness: nodeThickness, color });\n }\n const count = nodeStrokes.length - start;\n if (count > 0) {\n nodeStrokeRuns.set(nodeId, { start, count });\n }\n }\n return {\n nodeStrokes,\n nodeStrokeRuns,\n arrows,\n arrowRuns,\n edgeCurves,\n edgeCurveRuns\n };\n}\n\nexport {\n LIFT_BACKDROP_COLOR,\n FADED_ALPHA,\n LIFT_BACKDROP_CSS,\n hslToRgb,\n REFERENCE_RAMP_ALT_COLOR,\n REFERENCE_RAMP_ALT_CSS,\n rampFraction,\n computeReferenceRamp,\n computeColorSchemeRange,\n getNodeColor,\n endTangent,\n buildGeometry\n};\n", "import {\n REFERENCE_RAMP_ALT_COLOR,\n hslToRgb\n} from \"./chunk-GXCMBPC6.js\";\nimport {\n packAbgr\n} from \"./chunk-G2FD7S3C.js\";\nimport {\n REFERENCE_RAMP_LIGHTNESS,\n REFERENCE_RAMP_SATURATION,\n rampHueAt\n} from \"./chunk-GQZVR5DW.js\";\n\n// src/walkEncoding.ts\nvar WALK_FIELDS = [\n { value: \"progress\", label: \"Progress along the walk\" },\n { value: \"walk\", label: \"One colour for the walk\" },\n { value: \"reference\", label: \"Reference position\" }\n];\nvar WALK_SCHEMES = [\n { value: \"grey\", label: \"Grey to black\", ends: [\"#a3a3a3\", \"#151515\"] },\n { value: \"blue\", label: \"Cyan to navy\", ends: [\"#6ee0f0\", \"#0b2c7a\"] },\n { value: \"red\", label: \"Yellow to red\", ends: [\"#ffd24a\", \"#b3121b\"] },\n { value: \"purple\", label: \"Pink to plum\", ends: [\"#f5a3d8\", \"#5e1a6e\"] },\n { value: \"green\", label: \"Lime to forest\", ends: [\"#b6e36c\", \"#0b5d3b\"] },\n { value: \"orange\", label: \"Peach to rust\", ends: [\"#ffc285\", \"#8f3a00\"] },\n { value: \"rainbow\", label: \"Rainbow\" }\n];\nvar FAMILIES = [\"blue\", \"red\", \"purple\", \"green\"];\nvar isField = (v) => WALK_FIELDS.some((f) => f.value === v);\nvar isScheme = (v) => WALK_SCHEMES.some((s) => s.value === v);\nfunction resolveEncoding(layer, reference, picked, alone = true) {\n const { field: askedField, scheme: askedScheme } = layer.color ?? {};\n const field = isField(askedField) ? askedField : alone ? \"progress\" : \"walk\";\n const family = reference ? \"grey\" : FAMILIES[picked % FAMILIES.length];\n const scheme = isScheme(askedScheme) ? askedScheme === \"rainbow\" && field !== \"reference\" ? family : askedScheme : family;\n const round = Math.floor(picked / FAMILIES.length) % SHADES.length;\n return field === \"walk\" && scheme === family && round > 0 ? { field, scheme, shade: SHADES[round] } : alone || field === \"walk\" ? { field, scheme } : { field, scheme, darkest: TOGETHER_DARKEST };\n}\nvar TOGETHER_DARKEST = 0.55;\nvar BASE_T = 0.5;\nvar SHADES = [BASE_T, 0.85, 0.2];\nvar STRETCH_GAP = 0.08;\nvar rampsOn = ({ field, scheme }) => field !== \"walk\" && scheme !== \"rainbow\";\nfunction splitFamilies(encodings) {\n const counts = /* @__PURE__ */ new Map();\n for (const e of encodings) {\n if (rampsOn(e)) {\n counts.set(e.scheme, (counts.get(e.scheme) ?? 0) + 1);\n }\n }\n const seen = /* @__PURE__ */ new Map();\n return encodings.map((e) => {\n const k = rampsOn(e) ? counts.get(e.scheme) : 1;\n if (k < 2) {\n return e;\n }\n const j = seen.get(e.scheme) ?? 0;\n seen.set(e.scheme, j + 1);\n const half = STRETCH_GAP / 2;\n return {\n ...e,\n stretch: [\n j / k + (j > 0 ? half : 0),\n (j + 1) / k - (j < k - 1 ? half : 0)\n ]\n };\n });\n}\nvar along = ({ stretch }, t) => stretch ? stretch[0] + (stretch[1] - stretch[0]) * t : t;\nvar toLinear = (c) => c <= 0.04045 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\nvar toGamma = (c) => c <= 31308e-7 ? c * 12.92 : 1.055 * c ** (1 / 2.4) - 0.055;\nfunction oklab(hex) {\n const [r, g, b] = [1, 3, 5].map(\n (i) => toLinear(Number.parseInt(hex.slice(i, i + 2), 16) / 255)\n );\n const l = Math.cbrt(0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b);\n const m = Math.cbrt(0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b);\n const s = Math.cbrt(0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b);\n return [\n 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s,\n 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s,\n 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s\n ];\n}\nfunction oklabToRgb([L, a, b]) {\n const l = (L + 0.3963377774 * a + 0.2158037573 * b) ** 3;\n const m = (L - 0.1055613458 * a - 0.0638541728 * b) ** 3;\n const s = (L - 0.0894841775 * a - 1.291485548 * b) ** 3;\n return [\n 4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s,\n -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s,\n -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s\n ].map((c) => toGamma(Math.max(0, Math.min(1, c))) * 255);\n}\nvar endsCache = /* @__PURE__ */ new Map();\nfunction oklabEnds(scheme) {\n if (!endsCache.has(scheme)) {\n const family = WALK_SCHEMES.find((s) => s.value === scheme);\n endsCache.set(\n scheme,\n family && \"ends\" in family ? family.ends.map(oklab) : void 0\n );\n }\n return endsCache.get(scheme);\n}\nfunction schemeRgb(scheme, t, darkest = 0) {\n const x = Math.max(0, Math.min(1, t));\n const ends = oklabEnds(scheme);\n if (!ends) {\n return hslToRgb(\n rampHueAt(x),\n REFERENCE_RAMP_SATURATION,\n REFERENCE_RAMP_LIGHTNESS\n ).map((c) => c * 255);\n }\n const [from, to] = ends;\n const light = from[0];\n const dark = to[0];\n const reach = dark < darkest && light > darkest ? (light - darkest) / (light - dark) : 1;\n return oklabToRgb(from.map((v, i) => v + (to[i] - v) * x * reach));\n}\nfunction schemeCss(scheme, t, darkest) {\n const [r, g, b] = schemeRgb(scheme, t, darkest).map(Math.round);\n return `rgb(${r}, ${g}, ${b})`;\n}\nfunction schemeColor(scheme, t, darkest) {\n const [r, g, b] = schemeRgb(scheme, t, darkest).map(Math.round);\n return packAbgr(r, g, b, 255);\n}\nfunction encodedColor(encoding, t) {\n const { field, scheme, darkest, shade = BASE_T } = encoding;\n return field === \"walk\" ? schemeColor(scheme, shade) : t === void 0 ? NO_VALUE_COLOR : schemeColor(scheme, along(encoding, t), darkest);\n}\nvar NO_VALUE_COLOR = REFERENCE_RAMP_ALT_COLOR;\nfunction encodingStops(encoding) {\n const { field, scheme, darkest, shade = BASE_T } = encoding;\n const stop = (offset, t) => ({\n offset,\n color: schemeCss(scheme, t, darkest),\n abgr: schemeColor(scheme, t, darkest)\n });\n return field === \"walk\" ? [stop(0, shade)] : Array.from({ length: 7 }, (_, i) => stop(i / 6, along(encoding, i / 6)));\n}\nfunction encodingSwatchCss(encoding) {\n const stops = encodingStops(encoding);\n return stops.length === 1 ? stops[0].color : `linear-gradient(to right, ${stops.map((s) => `${s.color} ${s.offset * 100}%`).join(\", \")})`;\n}\n\nexport {\n WALK_FIELDS,\n WALK_SCHEMES,\n resolveEncoding,\n splitFamilies,\n schemeRgb,\n schemeCss,\n schemeColor,\n encodedColor,\n NO_VALUE_COLOR,\n encodingStops,\n encodingSwatchCss\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["THREAD_PX", "THREAD_GAP_PX", "SLOT_GAP_PX", "LANE_SMOOTHING_PX", "THREAD_REACH_PX", "THREAD_TAPER_PX", "MAX_BAND_PX", "PASSES_KEY", "threadsPasses", "walks", "w", "threadsWidth", "threads", "sum", "values", "a", "b", "slotLayout", "spans", "mostPasses", "laneWidth", "widths", "m", "i", "seen", "gaps", "share", "gap", "THREAD_PITCH_PX", "slotCentres", "held", "band", "at", "width", "slack", "centre", "bandWidthPx", "bandScale", "passesKey", "laneSlideAt", "start", "end", "along", "vector", "normal", "offsetX2", "dx", "dy", "slideAt", "offsetX", "gapOf", "arcOf", "run", "s", "laneRuns", "routes", "nodePositions", "yToX", "jump", "owns", "route", "id", "runs", "owned", "mine", "breakRun", "r", "step", "segments", "first", "last", "prev", "next", "toNext", "p", "forward", "middle", "k", "index", "ownedWindows", "margin", "windows", "j", "floor", "lo", "hi", "smoothedNormals", "reach", "pointAt", "span", "f", "_", "back", "ahead", "len", "cutCurls", "close", "length", "out", "picks", "to", "j2", "q", "rounded", "half", "n", "sumW", "sumX", "sumY", "from", "fieldSetter", "field", "value", "own", "laneLines", "lanes", "smooth", "turn", "curl", "normals", "shifts", "setNormal", "setShift", "pieces", "points", "line", "agree", "piece", "theirs", "sign", "windowed", "v", "deque", "head", "windowMean", "counted", "weight", "sumWV", "ONE_THREAD", "repeats", "passes", "walkThreads", "ids", "visits", "steps", "stepVisits", "stepWants", "nodes", "mid", "most", "copy", "before", "after", "wants", "nearest", "taken", "threadOf", "free", "want", "d", "c", "t", "nodeThreads", "threadPasses", "passOf", "thread", "visit", "linkThreads", "pair", "list", "bandSpans", "taper", "mids", "eased", "raw", "e", "liftLanes", "worldPerScreenPx", "threaded", "lines", "furthestShift", "shift", "packAbgr", "r", "g", "b", "a", "abgrRed", "c", "abgrGreen", "abgrBlue", "abgrAlpha", "abgrToCssRgba", "normalizedRgbToCssRgba", "alpha", "fadeAbgr", "brightenAbgr", "factor", "t", "lift", "v", "REFERENCE_RAMP_MAX_HUE", "REFERENCE_RAMP_SATURATION", "REFERENCE_RAMP_LIGHTNESS", "rampHueCss", "hue", "rampHueAt", "frac", "rampHue", "bp", "domain", "HUE_STOP_DEG", "rampStops", "start", "reversed", "low", "high", "n", "_", "RAMP_GRADIENT_STOPS", "i", "RAMP_GRADIENT_CSS", "s", "cache", "weakMemo", "baseEdgeCurves", "nodePositions", "graph", "axis", "deletions", "version", "routes", "stranded", "curves", "ei", "bypassed", "edgeCurves", "edgeCurvesOf", "MAX_BACKBONE_HOPS", "buildNeighbors", "graph", "neighbors", "edge", "pushTo", "flankingSpan", "nodeId", "nodeById", "seen", "frontier", "minEnd", "maxStart", "hop", "next", "id", "adjacent", "neighborId", "neighbor", "isBackbone", "nodeReferenceSpan", "node", "referenceMidpoints", "midpoints", "span", "EDGE_DEFAULT_COLOR", "packAbgr", "EDGE_PATH_FALLBACK_COLOR", "EDGE_DELETION_COLOR", "DELETION_THICKNESS_FACTOR", "LIFT_BACKDROP_COLOR", "FADED_ALPHA", "LIFT_BACKDROP_CSS", "abgrToCssRgba", "fadeAbgr", "DELETION_DASH_PX", "MIN_PATH_STRIPE_PX", "MIN_SCALE_FOR_OFFSET", "ARROW_LENGTH_BASE_PX", "ARROW_LENGTH_PER_EDGE_PX", "ARROW_HALF_WIDTH_BASE_PX", "ARROW_HALF_WIDTH_PER_EDGE_PX", "MIN_LINK_HEADS", "MIN_ARROW_FIT", "MIN_ARROW_SCALE", "ARROW_CURVE_STEPS", "ABUTTING_PX", "walkX", "walkY", "walkPx", "backFromEnd", "curves", "scale", "yToX", "untilPx", "most", "last", "n", "px", "ci", "c", "k", "t", "a", "b", "d", "e", "x", "y", "walkPointAt", "i", "from", "to", "f", "arrowheadFor", "edgeHalfWidth", "nodeHalfWidth", "color", "fromSegments", "toSegments", "length", "lengthPx", "abutting", "inset", "fit", "polylinePx", "tip", "base", "dx", "dy", "endTangent", "intoDirection", "FIRST_THREADS", "ONE_PASS", "NO_SHIFT", "nearerStart", "at", "segments", "gap", "p", "leavesStart", "edge", "first", "stranded", "strandSides", "final", "normal", "len", "MITRE_LIMIT", "LONGEST_NORMAL", "pointNormalsOf", "rawPoints", "points", "before", "after", "nx", "ny", "dot", "offsetPolyline", "normals", "distance", "out", "hslToRgb", "h", "s", "l", "m", "r", "g", "packHsl", "DEPTH_GRADIENT", "STABLE_RANK_GRADIENT", "NODE_LENGTH_GRADIENT", "sampleGradient", "stops", "pos", "hashColor", "str", "alpha", "nameHue", "PATH_SATURATION", "PATH_LIGHTNESS", "REFERENCE_RAMP_ALT_RGB", "REFERENCE_RAMP_ALT_COLOR", "REFERENCE_RAMP_ALT_CSS", "rampFraction", "node", "ramp", "mid", "isBackbone", "computeReferenceRamp", "graph", "domain", "midpoints", "referenceMidpoints", "min", "max", "computeColorSchemeRange", "referenceRamp", "minDepth", "maxDepth", "minLength", "maxLength", "maxRank", "getNodeColor", "nodeIndex", "colorScheme", "range", "rampHueAt", "REFERENCE_RAMP_SATURATION", "REFERENCE_RAMP_LIGHTNESS", "hue", "into", "candidates", "isPolylineInBounds", "bounds", "hit", "isBezierInBounds", "growX", "growY", "cMinX", "cMaxX", "cMinY", "cMaxY", "paletteCache", "pathPaletteOf", "palette", "pathColorByIndex", "pathIndexByName", "paths", "pathHueAt", "slotsCache", "NO_SLOTS", "pathSlotsOf", "slots", "pathIdx", "path", "nodeId", "pushTo", "lanesCache", "weakMemo", "linksCache", "linksOf", "links", "buildGeometry", "options", "nodePositions", "nodeById", "contigThickness", "connectorThickness", "drawPaths", "nodeWidth", "edgeWidth", "highlight", "axis", "linearLayout", "viewportBounds", "deletions", "deletionRoutes", "hiddenEdges", "version", "depthNorm", "meanDepth", "busiest", "busiestEdge", "worldPerScreenPx", "yToXOf", "sharedCurves", "baseEdgeCurves", "nodeStrokes", "nodeStrokeRuns", "arrows", "arrowRuns", "edgeCurves", "edgeCurveRuns", "colorRange", "nodeIndexMap", "pathCount", "pathColorByName", "name", "nodePathSlots", "liftedWalks", "threaded", "threadsPasses", "lanePasses", "w", "thinned", "bandScale", "fields", "liftLanes", "lines", "threads", "spanField", "plainCentres", "slotCentres", "centresByNode", "centresOf", "centres", "spans", "laneOffset", "laneWidth", "lane", "pass", "THREAD_PITCH_PX", "laneHalfWidth", "THREAD_PX", "laneNormals", "laneNormalsOf", "smoothed", "laneWidths", "laneWidthOf", "id", "width", "walkLaneWidthPx", "nodeWidthPx", "laneShiftOf", "index", "laneEndOf", "atStart", "lanesMayShow", "fromId", "offset", "bandWidthPx", "reach", "threadPairs", "own", "ahead", "back", "turned", "threadColor", "thread", "lanePointsOf", "showArrows", "ei", "baseCurves", "numPaths", "isDeletion", "onWalk", "ribbonThickness", "edgeThickness", "edgeWidthFactor", "ribbons", "plainEdgeColor", "edgeColor", "toNode", "intoHalfWidth", "inView", "dashesOf", "dashSpans", "stroke", "thickness", "dash", "laneStroke", "walk", "normal2", "offsetX", "endNormal", "endOffsetX", "start", "end", "laneSlideAt", "arrowOn", "head", "edgeCurveStart", "arrowStart", "laneWalks", "single", "toPass", "slideCurves", "translateCurves", "offsets", "pathRibbonOffsets", "arrowRibbon", "ribbonColor", "edgeCurveCount", "arrowCount", "faded", "nodeThickness", "slotWidth", "drawable", "lanes", "laneColor", "onThreads", "color2", "slot", "stripe", "count", "WALK_FIELDS", "WALK_SCHEMES", "FAMILIES", "isField", "v", "f", "isScheme", "s", "resolveEncoding", "layer", "reference", "picked", "alone", "askedField", "askedScheme", "field", "family", "scheme", "round", "SHADES", "TOGETHER_DARKEST", "BASE_T", "STRETCH_GAP", "rampsOn", "splitFamilies", "encodings", "counts", "seen", "k", "j", "half", "along", "stretch", "t", "toLinear", "c", "toGamma", "oklab", "hex", "r", "g", "b", "i", "l", "m", "oklabToRgb", "L", "a", "endsCache", "oklabEnds", "schemeRgb", "darkest", "x", "ends", "hslToRgb", "rampHueAt", "REFERENCE_RAMP_SATURATION", "REFERENCE_RAMP_LIGHTNESS", "from", "to", "light", "dark", "reach", "schemeCss", "schemeColor", "packAbgr", "encodedColor", "encoding", "shade", "NO_VALUE_COLOR", "REFERENCE_RAMP_ALT_COLOR", "encodingStops", "stop", "offset", "_"]
7
+ }