@genome-spy/core 0.72.0 → 0.74.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 (396) hide show
  1. package/LICENSE +1 -1
  2. package/dist/bundle/AbortablePromiseCache-3gHJdF3E.js +96 -0
  3. package/dist/bundle/browser-BTgw5ieH.js +126 -0
  4. package/dist/bundle/chunk-DmhlhrBa.js +11 -0
  5. package/dist/bundle/esm-BDFRLEuD.js +1248 -0
  6. package/dist/bundle/esm-BygJiwh0.js +573 -0
  7. package/dist/bundle/esm-CGX-qz1d.js +155 -0
  8. package/dist/bundle/esm-CgfVIRJ-.js +121 -0
  9. package/dist/bundle/esm-CuMSzCHy.js +298 -0
  10. package/dist/bundle/esm-DMXpJXM4.js +369 -0
  11. package/dist/bundle/esm-DQiq2Zhd.js +1426 -0
  12. package/dist/bundle/esm-DtE8VqAv.js +1015 -0
  13. package/dist/bundle/esm-sIoQYZ21.js +461 -0
  14. package/dist/bundle/index.es.js +21078 -24556
  15. package/dist/bundle/index.js +379 -383
  16. package/dist/bundle/parquetRead-DG_-F5j5.js +1609 -0
  17. package/dist/schema.json +13349 -7082
  18. package/dist/src/config/axisConfig.d.ts +16 -0
  19. package/dist/src/config/axisConfig.d.ts.map +1 -0
  20. package/dist/src/config/axisConfig.js +84 -0
  21. package/dist/src/config/defaultConfig.d.ts +3 -0
  22. package/dist/src/config/defaultConfig.d.ts.map +1 -0
  23. package/dist/src/config/defaultConfig.js +38 -0
  24. package/dist/src/config/defaults/axisDefaults.d.ts +5 -0
  25. package/dist/src/config/defaults/axisDefaults.d.ts.map +1 -0
  26. package/dist/src/config/defaults/axisDefaults.js +72 -0
  27. package/dist/src/config/defaults/markDefaults.d.ts +15 -0
  28. package/dist/src/config/defaults/markDefaults.d.ts.map +1 -0
  29. package/dist/src/config/defaults/markDefaults.js +121 -0
  30. package/dist/src/config/defaults/scaleDefaults.d.ts +5 -0
  31. package/dist/src/config/defaults/scaleDefaults.d.ts.map +1 -0
  32. package/dist/src/config/defaults/scaleDefaults.js +18 -0
  33. package/dist/src/config/defaults/titleDefaults.d.ts +5 -0
  34. package/dist/src/config/defaults/titleDefaults.d.ts.map +1 -0
  35. package/dist/src/config/defaults/titleDefaults.js +47 -0
  36. package/dist/src/config/defaults/viewDefaults.d.ts +3 -0
  37. package/dist/src/config/defaults/viewDefaults.d.ts.map +1 -0
  38. package/dist/src/config/defaults/viewDefaults.js +2 -0
  39. package/dist/src/config/markConfig.d.ts +8 -0
  40. package/dist/src/config/markConfig.d.ts.map +1 -0
  41. package/dist/src/config/markConfig.js +27 -0
  42. package/dist/src/config/mergeConfig.d.ts +8 -0
  43. package/dist/src/config/mergeConfig.d.ts.map +1 -0
  44. package/dist/src/config/mergeConfig.js +81 -0
  45. package/dist/src/config/resolveConfig.d.ts +22 -0
  46. package/dist/src/config/resolveConfig.d.ts.map +1 -0
  47. package/dist/src/config/resolveConfig.js +32 -0
  48. package/dist/src/config/scaleConfig.d.ts +40 -0
  49. package/dist/src/config/scaleConfig.d.ts.map +1 -0
  50. package/dist/src/config/scaleConfig.js +220 -0
  51. package/dist/src/config/styleUtils.d.ts +6 -0
  52. package/dist/src/config/styleUtils.d.ts.map +1 -0
  53. package/dist/src/config/styleUtils.js +10 -0
  54. package/dist/src/config/themes.d.ts +15 -0
  55. package/dist/src/config/themes.d.ts.map +1 -0
  56. package/dist/src/config/themes.js +293 -0
  57. package/dist/src/config/titleConfig.d.ts +12 -0
  58. package/dist/src/config/titleConfig.d.ts.map +1 -0
  59. package/dist/src/config/titleConfig.js +42 -0
  60. package/dist/src/config/viewConfig.d.ts +7 -0
  61. package/dist/src/config/viewConfig.d.ts.map +1 -0
  62. package/dist/src/config/viewConfig.js +29 -0
  63. package/dist/src/data/flowNode.d.ts +22 -1
  64. package/dist/src/data/flowNode.d.ts.map +1 -1
  65. package/dist/src/data/flowNode.js +37 -1
  66. package/dist/src/data/formats/bed.d.ts +8 -0
  67. package/dist/src/data/formats/bed.d.ts.map +1 -0
  68. package/dist/src/data/formats/bed.js +58 -0
  69. package/dist/src/data/formats/bedpe.d.ts +8 -0
  70. package/dist/src/data/formats/bedpe.d.ts.map +1 -0
  71. package/dist/src/data/formats/bedpe.js +164 -0
  72. package/dist/src/data/formats/fasta.d.ts.map +1 -1
  73. package/dist/src/data/formats/fasta.js +4 -0
  74. package/dist/src/data/formats/parquet.d.ts.map +1 -1
  75. package/dist/src/data/formats/parquet.js +4 -0
  76. package/dist/src/data/sources/dataSourceFactory.d.ts +2 -13
  77. package/dist/src/data/sources/dataSourceFactory.d.ts.map +1 -1
  78. package/dist/src/data/sources/dataSourceFactory.js +5 -141
  79. package/dist/src/data/sources/dataUtils.d.ts +16 -0
  80. package/dist/src/data/sources/dataUtils.d.ts.map +1 -1
  81. package/dist/src/data/sources/dataUtils.js +53 -3
  82. package/dist/src/data/sources/lazy/axisGenomeSource.d.ts.map +1 -1
  83. package/dist/src/data/sources/lazy/axisGenomeSource.js +11 -0
  84. package/dist/src/data/sources/lazy/axisTickSource.d.ts +1 -1
  85. package/dist/src/data/sources/lazy/axisTickSource.d.ts.map +1 -1
  86. package/dist/src/data/sources/lazy/axisTickSource.js +19 -8
  87. package/dist/src/data/sources/lazy/bamSource.d.ts.map +1 -1
  88. package/dist/src/data/sources/lazy/bamSource.js +11 -0
  89. package/dist/src/data/sources/lazy/bigBedSource.d.ts.map +1 -1
  90. package/dist/src/data/sources/lazy/bigBedSource.js +12 -1
  91. package/dist/src/data/sources/lazy/bigWigSource.d.ts.map +1 -1
  92. package/dist/src/data/sources/lazy/bigWigSource.js +11 -0
  93. package/dist/src/data/sources/lazy/gff3Source.d.ts.map +1 -1
  94. package/dist/src/data/sources/lazy/gff3Source.js +12 -1
  95. package/dist/src/data/sources/lazy/indexedFastaSource.d.ts.map +1 -1
  96. package/dist/src/data/sources/lazy/indexedFastaSource.js +11 -0
  97. package/dist/src/data/sources/lazy/lazyDataSourceRegistry.d.ts +27 -0
  98. package/dist/src/data/sources/lazy/lazyDataSourceRegistry.d.ts.map +1 -0
  99. package/dist/src/data/sources/lazy/lazyDataSourceRegistry.js +65 -0
  100. package/dist/src/data/sources/lazy/registerBuiltInLazySources.d.ts +2 -0
  101. package/dist/src/data/sources/lazy/registerBuiltInLazySources.d.ts.map +1 -0
  102. package/dist/src/data/sources/lazy/registerBuiltInLazySources.js +8 -0
  103. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts.map +1 -1
  104. package/dist/src/data/sources/lazy/singleAxisLazySource.js +11 -2
  105. package/dist/src/data/sources/lazy/vcfSource.d.ts.map +1 -1
  106. package/dist/src/data/sources/lazy/vcfSource.js +11 -0
  107. package/dist/src/data/sources/urlSource.d.ts +4 -0
  108. package/dist/src/data/sources/urlSource.d.ts.map +1 -1
  109. package/dist/src/data/sources/urlSource.js +138 -16
  110. package/dist/src/data/transforms/aggregate.d.ts +1 -0
  111. package/dist/src/data/transforms/aggregate.d.ts.map +1 -1
  112. package/dist/src/data/transforms/aggregate.js +30 -8
  113. package/dist/src/data/transforms/aggregateOps.d.ts.map +1 -1
  114. package/dist/src/data/transforms/aggregateOps.js +12 -1
  115. package/dist/src/data/transforms/coverage.js +2 -2
  116. package/dist/src/data/transforms/filter.js +1 -1
  117. package/dist/src/data/transforms/filterScoredLabels.d.ts +6 -0
  118. package/dist/src/data/transforms/filterScoredLabels.d.ts.map +1 -1
  119. package/dist/src/data/transforms/filterScoredLabels.js +9 -0
  120. package/dist/src/data/transforms/measureText.d.ts +1 -0
  121. package/dist/src/data/transforms/measureText.d.ts.map +1 -1
  122. package/dist/src/data/transforms/measureText.js +14 -5
  123. package/dist/src/data/transforms/pileup.d.ts.map +1 -1
  124. package/dist/src/data/transforms/pileup.js +1 -2
  125. package/dist/src/data/transforms/regexFold.d.ts.map +1 -1
  126. package/dist/src/data/transforms/regexFold.js +0 -1
  127. package/dist/src/embedFactory.d.ts +13 -0
  128. package/dist/src/embedFactory.d.ts.map +1 -0
  129. package/dist/src/embedFactory.js +127 -0
  130. package/dist/src/encoder/accessor.d.ts +3 -12
  131. package/dist/src/encoder/accessor.d.ts.map +1 -1
  132. package/dist/src/encoder/accessor.js +10 -65
  133. package/dist/src/encoder/encoder.d.ts +51 -8
  134. package/dist/src/encoder/encoder.d.ts.map +1 -1
  135. package/dist/src/encoder/encoder.js +179 -55
  136. package/dist/src/fonts/bmFontManager.js +1 -1
  137. package/dist/src/full.d.ts +2 -0
  138. package/dist/src/full.d.ts.map +1 -0
  139. package/dist/src/full.js +2 -0
  140. package/dist/src/genome/assemblyPreflight.d.ts +31 -0
  141. package/dist/src/genome/assemblyPreflight.d.ts.map +1 -0
  142. package/dist/src/genome/assemblyPreflight.js +99 -0
  143. package/dist/src/genome/genome.d.ts +10 -2
  144. package/dist/src/genome/genome.d.ts.map +1 -1
  145. package/dist/src/genome/genome.js +20 -2
  146. package/dist/src/genome/genomeStore.d.ts +34 -3
  147. package/dist/src/genome/genomeStore.d.ts.map +1 -1
  148. package/dist/src/genome/genomeStore.js +409 -18
  149. package/dist/src/genome/rootGenomeConfig.d.ts +26 -0
  150. package/dist/src/genome/rootGenomeConfig.d.ts.map +1 -0
  151. package/dist/src/genome/rootGenomeConfig.js +98 -0
  152. package/dist/src/genome/scaleLocus.d.ts.map +1 -1
  153. package/dist/src/genome/scaleLocus.js +26 -7
  154. package/dist/src/genomeSpy/cursorManager.d.ts +69 -0
  155. package/dist/src/genomeSpy/cursorManager.d.ts.map +1 -0
  156. package/dist/src/genomeSpy/cursorManager.js +131 -0
  157. package/dist/src/genomeSpy/headlessBootstrap.d.ts +113 -0
  158. package/dist/src/genomeSpy/headlessBootstrap.d.ts.map +1 -0
  159. package/dist/src/genomeSpy/headlessBootstrap.js +246 -0
  160. package/dist/src/genomeSpy/interactionController.d.ts +10 -1
  161. package/dist/src/genomeSpy/interactionController.d.ts.map +1 -1
  162. package/dist/src/genomeSpy/interactionController.js +448 -40
  163. package/dist/src/genomeSpy/interactionDispatcher.d.ts +50 -0
  164. package/dist/src/genomeSpy/interactionDispatcher.d.ts.map +1 -0
  165. package/dist/src/genomeSpy/interactionDispatcher.js +203 -0
  166. package/dist/src/genomeSpy/renderCoordinator.js +1 -1
  167. package/dist/src/genomeSpy/viewContextFactory.d.ts +4 -2
  168. package/dist/src/genomeSpy/viewContextFactory.d.ts.map +1 -1
  169. package/dist/src/genomeSpy/viewContextFactory.js +12 -4
  170. package/dist/src/genomeSpy/viewDataInit.d.ts.map +1 -1
  171. package/dist/src/genomeSpy/viewDataInit.js +7 -3
  172. package/dist/src/genomeSpy.d.ts +1 -114
  173. package/dist/src/genomeSpy.d.ts.map +1 -1
  174. package/dist/src/genomeSpy.js +7 -614
  175. package/dist/src/genomeSpyBase.d.ts +133 -0
  176. package/dist/src/genomeSpyBase.d.ts.map +1 -0
  177. package/dist/src/genomeSpyBase.js +719 -0
  178. package/dist/src/gl/arrayBuilder.d.ts.map +1 -1
  179. package/dist/src/gl/arrayBuilder.js +0 -3
  180. package/dist/src/gl/canvasSizeHelper.d.ts +74 -0
  181. package/dist/src/gl/canvasSizeHelper.d.ts.map +1 -0
  182. package/dist/src/gl/canvasSizeHelper.js +203 -0
  183. package/dist/src/gl/colorUtils.d.ts.map +1 -1
  184. package/dist/src/gl/colorUtils.js +3 -0
  185. package/dist/src/gl/dataToVertices.d.ts.map +1 -1
  186. package/dist/src/gl/dataToVertices.js +13 -8
  187. package/dist/src/gl/glslScaleGenerator.d.ts +2 -2
  188. package/dist/src/gl/glslScaleGenerator.d.ts.map +1 -1
  189. package/dist/src/gl/glslScaleGenerator.js +5 -7
  190. package/dist/src/gl/webGLHelper.d.ts +25 -11
  191. package/dist/src/gl/webGLHelper.d.ts.map +1 -1
  192. package/dist/src/gl/webGLHelper.js +59 -33
  193. package/dist/src/index.d.ts +3 -9
  194. package/dist/src/index.d.ts.map +1 -1
  195. package/dist/src/index.js +5 -111
  196. package/dist/src/marks/__snapshots__/shaderSnapshot.test.js.snap +4462 -0
  197. package/dist/src/marks/link.d.ts.map +1 -1
  198. package/dist/src/marks/link.js +5 -26
  199. package/dist/src/marks/mark.d.ts +8 -1
  200. package/dist/src/marks/mark.d.ts.map +1 -1
  201. package/dist/src/marks/mark.js +67 -21
  202. package/dist/src/marks/markUtils.d.ts +18 -1
  203. package/dist/src/marks/markUtils.d.ts.map +1 -1
  204. package/dist/src/marks/markUtils.js +52 -4
  205. package/dist/src/marks/point.d.ts.map +1 -1
  206. package/dist/src/marks/point.js +6 -26
  207. package/dist/src/marks/rect.d.ts.map +1 -1
  208. package/dist/src/marks/rect.js +13 -21
  209. package/dist/src/marks/rule.d.ts +7 -2
  210. package/dist/src/marks/rule.d.ts.map +1 -1
  211. package/dist/src/marks/rule.js +125 -16
  212. package/dist/src/marks/text.d.ts.map +1 -1
  213. package/dist/src/marks/text.js +5 -47
  214. package/dist/src/minimal.d.ts +8 -0
  215. package/dist/src/minimal.d.ts.map +1 -0
  216. package/dist/src/minimal.js +21 -0
  217. package/dist/src/paramRuntime/viewParamRuntime.d.ts +19 -0
  218. package/dist/src/paramRuntime/viewParamRuntime.d.ts.map +1 -1
  219. package/dist/src/paramRuntime/viewParamRuntime.js +35 -0
  220. package/dist/src/scale/scale.d.ts.map +1 -1
  221. package/dist/src/scale/scale.js +13 -7
  222. package/dist/src/scales/axisResolution.d.ts.map +1 -1
  223. package/dist/src/scales/axisResolution.js +9 -5
  224. package/dist/src/scales/domainPlanner.d.ts +58 -7
  225. package/dist/src/scales/domainPlanner.d.ts.map +1 -1
  226. package/dist/src/scales/domainPlanner.js +395 -40
  227. package/dist/src/scales/indexLikeDomainUtils.d.ts +29 -0
  228. package/dist/src/scales/indexLikeDomainUtils.d.ts.map +1 -0
  229. package/dist/src/scales/indexLikeDomainUtils.js +67 -0
  230. package/dist/src/scales/resolutionMemberOrder.d.ts +15 -0
  231. package/dist/src/scales/resolutionMemberOrder.d.ts.map +1 -0
  232. package/dist/src/scales/resolutionMemberOrder.js +22 -0
  233. package/dist/src/scales/scaleInstanceManager.d.ts +2 -1
  234. package/dist/src/scales/scaleInstanceManager.d.ts.map +1 -1
  235. package/dist/src/scales/scaleInstanceManager.js +10 -11
  236. package/dist/src/scales/scaleInteractionController.d.ts.map +1 -1
  237. package/dist/src/scales/scaleInteractionController.js +59 -18
  238. package/dist/src/scales/scalePropsResolver.d.ts +3 -1
  239. package/dist/src/scales/scalePropsResolver.d.ts.map +1 -1
  240. package/dist/src/scales/scalePropsResolver.js +83 -6
  241. package/dist/src/scales/scaleResolution.d.ts +39 -0
  242. package/dist/src/scales/scaleResolution.d.ts.map +1 -1
  243. package/dist/src/scales/scaleResolution.js +504 -82
  244. package/dist/src/scales/scaleResolutionTestUtils.d.ts +21 -0
  245. package/dist/src/scales/scaleResolutionTestUtils.d.ts.map +1 -0
  246. package/dist/src/scales/scaleResolutionTestUtils.js +37 -0
  247. package/dist/src/scales/scaleRules.d.ts.map +1 -1
  248. package/dist/src/scales/scaleRules.js +16 -2
  249. package/dist/src/scales/selectionDomainUtils.d.ts +52 -0
  250. package/dist/src/scales/selectionDomainUtils.d.ts.map +1 -0
  251. package/dist/src/scales/selectionDomainUtils.js +194 -0
  252. package/dist/src/scales/zoomDomainUtils.d.ts +18 -0
  253. package/dist/src/scales/zoomDomainUtils.d.ts.map +1 -0
  254. package/dist/src/scales/zoomDomainUtils.js +69 -0
  255. package/dist/src/screenshotHarness.d.ts +16 -0
  256. package/dist/src/screenshotHarness.d.ts.map +1 -0
  257. package/dist/src/screenshotHarness.js +241 -0
  258. package/dist/src/singlePageApp.js +1 -1
  259. package/dist/src/spec/axis.d.ts +41 -30
  260. package/dist/src/spec/channel.d.ts +15 -9
  261. package/dist/src/spec/config.d.ts +264 -0
  262. package/dist/src/spec/data.d.ts +30 -3
  263. package/dist/src/spec/decoration.d.ts +51 -0
  264. package/dist/src/spec/exampleFiles.d.ts +12 -0
  265. package/dist/src/spec/exampleFiles.d.ts.map +1 -0
  266. package/dist/src/spec/exampleFiles.js +52 -0
  267. package/dist/src/spec/font.d.ts +1 -1
  268. package/dist/src/spec/genome.d.ts +22 -2
  269. package/dist/src/spec/mark.d.ts +97 -13
  270. package/dist/src/spec/parameter.d.ts +62 -5
  271. package/dist/src/spec/root.d.ts +34 -1
  272. package/dist/src/spec/scale.d.ts +46 -5
  273. package/dist/src/spec/title.d.ts +13 -2
  274. package/dist/src/spec/tooltip.d.ts +1 -1
  275. package/dist/src/spec/transform.d.ts +39 -4
  276. package/dist/src/spec/view.d.ts +67 -19
  277. package/dist/src/styles/genome-spy.css +63 -55
  278. package/dist/src/styles/genome-spy.css.d.ts +1 -1
  279. package/dist/src/styles/genome-spy.css.d.ts.map +1 -1
  280. package/dist/src/styles/genome-spy.css.js +31 -22
  281. package/dist/src/testSetup.d.ts +2 -0
  282. package/dist/src/testSetup.d.ts.map +1 -0
  283. package/dist/src/testSetup.js +5 -0
  284. package/dist/src/tooltip/dataTooltipHandler.js +66 -11
  285. package/dist/src/tooltip/tooltipContext.d.ts.map +1 -1
  286. package/dist/src/tooltip/tooltipContext.js +3 -2
  287. package/dist/src/types/embedApi.d.ts +26 -0
  288. package/dist/src/types/encoder.d.ts +17 -15
  289. package/dist/src/types/scaleResolutionApi.d.ts +20 -0
  290. package/dist/src/types/viewContext.d.ts +23 -1
  291. package/dist/src/utils/expression.d.ts +2 -2
  292. package/dist/src/utils/expression.d.ts.map +1 -1
  293. package/dist/src/utils/expression.js +63 -8
  294. package/dist/src/utils/field.d.ts.map +1 -1
  295. package/dist/src/utils/field.js +0 -1
  296. package/dist/src/utils/inertia.d.ts.map +1 -1
  297. package/dist/src/utils/inertia.js +0 -1
  298. package/dist/src/utils/inferSpecBaseUrl.d.ts +14 -0
  299. package/dist/src/utils/inferSpecBaseUrl.d.ts.map +1 -0
  300. package/dist/src/utils/inferSpecBaseUrl.js +73 -0
  301. package/dist/src/utils/inputBinding.d.ts +1 -1
  302. package/dist/src/utils/interaction.d.ts +109 -0
  303. package/dist/src/utils/interaction.d.ts.map +1 -0
  304. package/dist/src/utils/interaction.js +200 -0
  305. package/dist/src/utils/interactionEvent.d.ts +62 -33
  306. package/dist/src/utils/interactionEvent.d.ts.map +1 -1
  307. package/dist/src/utils/interactionEvent.js +86 -48
  308. package/dist/src/utils/kWayMerge.js +1 -1
  309. package/dist/src/utils/mergeObjects.d.ts.map +1 -1
  310. package/dist/src/utils/mergeObjects.js +0 -2
  311. package/dist/src/utils/radixSort.d.ts.map +1 -1
  312. package/dist/src/utils/radixSort.js +0 -2
  313. package/dist/src/utils/throttle.d.ts.map +1 -1
  314. package/dist/src/utils/throttle.js +0 -2
  315. package/dist/src/utils/ui/tooltip.d.ts +1 -0
  316. package/dist/src/utils/ui/tooltip.d.ts.map +1 -1
  317. package/dist/src/utils/ui/tooltip.js +1 -0
  318. package/dist/src/utils/url.js +1 -1
  319. package/dist/src/view/axisGridView.d.ts +1 -1
  320. package/dist/src/view/axisGridView.d.ts.map +1 -1
  321. package/dist/src/view/axisGridView.js +2 -47
  322. package/dist/src/view/axisView.d.ts +2 -3
  323. package/dist/src/view/axisView.d.ts.map +1 -1
  324. package/dist/src/view/axisView.js +251 -106
  325. package/dist/src/view/concatView.d.ts +2 -1
  326. package/dist/src/view/concatView.d.ts.map +1 -1
  327. package/dist/src/view/concatView.js +4 -2
  328. package/dist/src/view/containerMutationHelper.d.ts +3 -0
  329. package/dist/src/view/containerMutationHelper.d.ts.map +1 -1
  330. package/dist/src/view/containerMutationHelper.js +12 -1
  331. package/dist/src/view/dataReadiness.d.ts +2 -2
  332. package/dist/src/view/dataReadiness.d.ts.map +1 -1
  333. package/dist/src/view/dataReadiness.js +63 -58
  334. package/dist/src/view/facetView.d.ts +1 -1
  335. package/dist/src/view/facetView.js +4 -4
  336. package/dist/src/view/flowBuilder.js +2 -2
  337. package/dist/src/view/gridView/gridChild.d.ts +13 -0
  338. package/dist/src/view/gridView/gridChild.d.ts.map +1 -1
  339. package/dist/src/view/gridView/gridChild.js +247 -49
  340. package/dist/src/view/gridView/gridView.d.ts.map +1 -1
  341. package/dist/src/view/gridView/gridView.js +296 -99
  342. package/dist/src/view/gridView/keyboardZoomController.d.ts +2 -2
  343. package/dist/src/view/gridView/keyboardZoomController.d.ts.map +1 -1
  344. package/dist/src/view/gridView/keyboardZoomController.js +1 -1
  345. package/dist/src/view/gridView/scrollbar.d.ts.map +1 -1
  346. package/dist/src/view/gridView/scrollbar.js +4 -2
  347. package/dist/src/view/gridView/selectionRect.d.ts +4 -0
  348. package/dist/src/view/gridView/selectionRect.d.ts.map +1 -1
  349. package/dist/src/view/gridView/selectionRect.js +20 -1
  350. package/dist/src/view/gridView/separatorView.d.ts +1 -0
  351. package/dist/src/view/gridView/separatorView.d.ts.map +1 -1
  352. package/dist/src/view/gridView/separatorView.js +9 -0
  353. package/dist/src/view/interactionRouting.d.ts +20 -0
  354. package/dist/src/view/interactionRouting.d.ts.map +1 -0
  355. package/dist/src/view/interactionRouting.js +53 -0
  356. package/dist/src/view/layerView.d.ts.map +1 -1
  357. package/dist/src/view/layerView.js +12 -9
  358. package/dist/src/view/layout/grid.js +1 -1
  359. package/dist/src/view/renderingContext/bufferedViewRenderingContext.d.ts.map +1 -1
  360. package/dist/src/view/renderingContext/bufferedViewRenderingContext.js +0 -2
  361. package/dist/src/view/testUtils.d.ts +17 -3
  362. package/dist/src/view/testUtils.d.ts.map +1 -1
  363. package/dist/src/view/testUtils.js +62 -69
  364. package/dist/src/view/title.d.ts +8 -1
  365. package/dist/src/view/title.d.ts.map +1 -1
  366. package/dist/src/view/title.js +66 -76
  367. package/dist/src/view/unitView.d.ts +1 -1
  368. package/dist/src/view/unitView.d.ts.map +1 -1
  369. package/dist/src/view/unitView.js +67 -17
  370. package/dist/src/view/view.d.ts +76 -30
  371. package/dist/src/view/view.d.ts.map +1 -1
  372. package/dist/src/view/view.js +136 -47
  373. package/dist/src/view/viewFactory.d.ts +11 -3
  374. package/dist/src/view/viewFactory.d.ts.map +1 -1
  375. package/dist/src/view/viewFactory.js +37 -11
  376. package/dist/src/view/viewUtils.d.ts.map +1 -1
  377. package/dist/src/view/viewUtils.js +41 -5
  378. package/dist/src/view/zoom.d.ts +15 -3
  379. package/dist/src/view/zoom.d.ts.map +1 -1
  380. package/dist/src/view/zoom.js +375 -80
  381. package/package.json +20 -10
  382. package/dist/bundle/AbortablePromiseCache-Dj0vzLnp.js +0 -149
  383. package/dist/bundle/browser-0iNU5Wit.js +0 -138
  384. package/dist/bundle/index-BYsZN7b0.js +0 -1597
  385. package/dist/bundle/index-C3kClAEN.js +0 -1771
  386. package/dist/bundle/index-C7wOh6y1.js +0 -657
  387. package/dist/bundle/index-CRaQAuki.js +0 -326
  388. package/dist/bundle/index-D9v1PCj9.js +0 -507
  389. package/dist/bundle/index-GDOuv_D5.js +0 -266
  390. package/dist/bundle/index-Gt44EOIH.js +0 -628
  391. package/dist/bundle/inflate-GtwLkvSP.js +0 -1048
  392. package/dist/bundle/parquetRead-BnAGCa4_.js +0 -1663
  393. package/dist/bundle/unzip-Bac01w6X.js +0 -1492
  394. package/dist/src/config/scaleDefaults.d.ts +0 -8
  395. package/dist/src/config/scaleDefaults.d.ts.map +0 -1
  396. package/dist/src/config/scaleDefaults.js +0 -45
@@ -1,620 +1,13 @@
1
- import { formats as vegaFormats } from "vega-loader";
2
-
3
- import {
4
- createContainerUi,
5
- createMessageBox,
6
- } from "./genomeSpy/containerUi.js";
7
- import LoadingIndicatorManager from "./genomeSpy/loadingIndicatorManager.js";
8
- import LoadingStatusRegistry from "./genomeSpy/loadingStatusRegistry.js";
9
- import { createViewHighlighter } from "./genomeSpy/viewHighlight.js";
10
- import KeyboardListenerManager from "./genomeSpy/keyboardListenerManager.js";
11
- import EventListenerRegistry from "./genomeSpy/eventListenerRegistry.js";
12
- import InputBindingManager from "./genomeSpy/inputBindingManager.js";
13
-
14
- import { calculateCanvasSize } from "./view/viewUtils.js";
15
- import {
16
- initializeViewData,
17
- initializeVisibleViewData,
18
- } from "./genomeSpy/viewDataInit.js";
19
- import UnitView from "./view/unitView.js";
20
-
21
- import WebGLHelper from "./gl/webGLHelper.js";
22
- import Animator from "./utils/animator.js";
23
- import DataFlow from "./data/dataFlow.js";
24
- import GenomeStore from "./genome/genomeStore.js";
25
- import BmFontManager from "./fonts/bmFontManager.js";
26
- import fasta from "./data/formats/fasta.js";
27
- import refseqGeneTooltipHandler from "./tooltip/refseqGeneTooltipHandler.js";
28
- import dataTooltipHandler from "./tooltip/dataTooltipHandler.js";
29
- import { invalidatePrefix } from "./utils/propertyCacher.js";
30
- import { VIEW_ROOT_NAME, ViewFactory } from "./view/viewFactory.js";
31
- import InteractionController from "./genomeSpy/interactionController.js";
32
- import RenderCoordinator from "./genomeSpy/renderCoordinator.js";
33
- import { createViewContext } from "./genomeSpy/viewContextFactory.js";
34
- import {
35
- configureViewHierarchy,
36
- configureViewOpacity,
37
- } from "./genomeSpy/viewHierarchyConfig.js";
38
- import { exportCanvas } from "./genomeSpy/canvasExport.js";
39
- import { validateSelectorConstraints } from "./view/viewSelectors.js";
40
- import parquet from "./data/formats/parquet.js";
41
-
42
1
  /**
43
2
  * Events that are broadcasted to all views.
44
3
  * @typedef {"dataFlowBuilt" | "layout" | "layoutComputed" | "subtreeDataReady"} BroadcastEventType
45
4
  */
46
5
 
47
- vegaFormats("fasta", fasta);
48
- vegaFormats("parquet", parquet);
49
-
50
- export default class GenomeSpy {
51
- /** @type {(() => void)[]} */
52
- #destructionCallbacks = [];
53
- /** @type {RenderCoordinator} */
54
- #renderCoordinator;
55
- /** @type {LoadingIndicatorManager} */
56
- #loadingIndicatorManager;
57
- /** @type {LoadingStatusRegistry} */
58
- #loadingStatusRegistry;
59
- /** @type {InputBindingManager} */
60
- #inputBindingManager;
61
- /** @type {InteractionController} */
62
- #interactionController;
63
- /** @type {WebGLHelper} */
64
- #glHelper;
65
-
66
- #keyboardListenerManager = new KeyboardListenerManager();
67
- #eventListeners = new EventListenerRegistry();
68
- #extraBroadcastListeners = new EventListenerRegistry();
69
-
70
- /**
71
- * @typedef {import("./view/view.js").default} View
72
- * @typedef {import("./spec/view.js").ViewSpec} ViewSpec
73
- * @typedef {import("./spec/root.js").RootSpec} RootSpec
74
- * @typedef {import("./spec/root.js").RootConfig} RootConfig
75
- */
76
-
77
- /**
78
- *
79
- * @param {HTMLElement} container
80
- * @param {RootSpec} spec
81
- * @param {import("./types/embedApi.js").EmbedOptions} [options]
82
- */
83
- constructor(container, spec, options = {}) {
84
- this.container = container;
85
- this.options = options;
86
-
87
- options.inputBindingContainer ??= "default";
88
-
89
- /** Root level configuration object */
90
- this.spec = spec;
91
-
92
- this.viewFactory = new ViewFactory();
93
-
94
- /** @type {(function(string):object[])[]} */
95
- this.namedDataProviders = [];
96
-
97
- this.animator = new Animator(() => this.renderAll());
98
-
99
- /** @type {GenomeStore} */
100
- this.genomeStore = undefined;
101
-
102
- /**
103
- * View visibility is checked using a predicate that can be overridden
104
- * for more dynamic visibility management.
105
- *
106
- * @type {(view: View) => boolean}
107
- */
108
- this.viewVisibilityPredicate = (view) => view.isVisibleInSpec();
109
-
110
- /** @type {Record<string, import("./tooltip/tooltipHandler.js").TooltipHandler>}> */
111
- this.tooltipHandlers = {
112
- default: dataTooltipHandler,
113
- refseqgene: refseqGeneTooltipHandler,
114
- ...(options.tooltipHandlers ?? {}),
115
- };
116
-
117
- /** @type {View} */
118
- this.viewRoot = undefined;
119
-
120
- this.#inputBindingManager = new InputBindingManager(container, options);
121
-
122
- this.dpr = window.devicePixelRatio;
123
- }
124
-
125
- get #canvasWrapper() {
126
- return /** @type {HTMLElement} */ (
127
- this.container.querySelector(".canvas-wrapper")
128
- );
129
- }
130
-
131
- #initializeParameterBindings() {
132
- this.#inputBindingManager.initialize(this.viewRoot);
133
- }
134
-
135
- /**
136
- *
137
- * @param {(name: string) => any[]} provider
138
- */
139
- registerNamedDataProvider(provider) {
140
- this.namedDataProviders.unshift(provider);
141
- }
142
-
143
- /**
144
- * @param {string} name
145
- */
146
- getNamedDataFromProvider(name) {
147
- for (const provider of this.namedDataProviders) {
148
- const data = provider(name);
149
- if (data) {
150
- return data;
151
- }
152
- }
153
- }
154
-
155
- /**
156
- *
157
- * @param {string} name
158
- * @param {any[]} data
159
- */
160
- updateNamedData(name, data) {
161
- const namedSource =
162
- this.viewRoot.context.dataFlow.findNamedDataSource(name);
163
- if (!namedSource) {
164
- throw new Error("No such named data source: " + name);
165
- }
166
-
167
- namedSource.dataSource.updateDynamicData(data);
168
-
169
- this.animator.requestRender();
170
- }
171
-
172
- /**
173
- * @param {string} type
174
- * @param {(event: any) => void} listener
175
- */
176
- addEventListener(type, listener) {
177
- this.#eventListeners.add(type, listener);
178
- }
179
-
180
- /**
181
- * @param {string} type
182
- * @param {(event: any) => void} listener
183
- */
184
- removeEventListener(type, listener) {
185
- this.#eventListeners.remove(type, listener);
186
- }
187
-
188
- /**
189
- * Broadcast a message to all views
190
-
191
- * @param {BroadcastEventType} type
192
- * @param {any} [payload]
193
- */
194
- broadcast(type, payload) {
195
- const message = { type, payload };
196
- this.viewRoot.visit((view) => view.handleBroadcast(message));
197
- this.#extraBroadcastListeners.emit(type, message);
198
- }
199
-
200
- #setupDpr() {
201
- const dprSetter = this.viewRoot.paramRuntime.allocateSetter(
202
- "devicePixelRatio",
203
- this.dpr
204
- );
205
-
206
- const resizeCallback = () => {
207
- this.#glHelper.invalidateSize();
208
- this.dpr = window.devicePixelRatio;
209
- dprSetter(this.dpr);
210
- this.computeLayout();
211
- // Render immediately, without RAF
212
- this.renderAll();
213
- };
214
-
215
- if (this.viewRoot.getSize().isGrowing()) {
216
- // TODO: Size should be observed only if the content is not absolutely sized
217
- const resizeObserver = new ResizeObserver(resizeCallback);
218
- resizeObserver.observe(this.container);
219
- this.#destructionCallbacks.push(() => resizeObserver.disconnect());
220
- }
221
-
222
- /** @type {() => void} */
223
- let remove = null;
224
-
225
- const updatePixelRatio = () => {
226
- if (remove != null) {
227
- remove();
228
- resizeCallback();
229
- }
230
- const media = matchMedia(
231
- `(resolution: ${window.devicePixelRatio}dppx)`
232
- );
233
- media.addEventListener("change", updatePixelRatio);
234
- remove = () => {
235
- media.removeEventListener("change", updatePixelRatio);
236
- };
237
- };
238
- updatePixelRatio();
239
-
240
- if (remove) {
241
- this.#destructionCallbacks.push(remove);
242
- }
243
- }
244
-
245
- #prepareContainer() {
246
- const { canvasWrapper, loadingIndicatorsElement, tooltip } =
247
- createContainerUi(this.container);
248
-
249
- this.#glHelper = new WebGLHelper(
250
- canvasWrapper,
251
- () =>
252
- this.viewRoot
253
- ? calculateCanvasSize(this.viewRoot)
254
- : { width: undefined, height: undefined },
255
- { powerPreference: this.options.powerPreference ?? "default" }
256
- );
257
-
258
- canvasWrapper.appendChild(loadingIndicatorsElement);
259
-
260
- this.tooltip = tooltip;
261
- this.#loadingStatusRegistry = new LoadingStatusRegistry();
262
- this.#loadingIndicatorManager = new LoadingIndicatorManager(
263
- loadingIndicatorsElement,
264
- this.#loadingStatusRegistry
265
- );
266
- }
267
-
268
- /**
269
- * Unregisters all listeners, removes all created dom elements, removes all css classes from the container
270
- */
271
- destroy() {
272
- // TODO: There's a memory leak somewhere
273
-
274
- const canvasWrapper = this.#canvasWrapper;
275
-
276
- this.container.classList.remove("genome-spy");
277
- canvasWrapper.classList.remove("loading");
278
-
279
- this.#keyboardListenerManager.removeAll();
280
-
281
- this.#destructionCallbacks.forEach((callback) => callback());
282
-
283
- this.#glHelper.finalize();
284
-
285
- this.#inputBindingManager.remove();
286
-
287
- this.#loadingIndicatorManager.destroy();
288
-
289
- while (this.container.firstChild) {
290
- this.container.firstChild.remove();
291
- }
292
- }
293
-
294
- async #prepareViewsAndData() {
295
- await this.#initializeGenomeStore();
296
- const context = this.#createViewContext();
297
- await this.#initializeViewHierarchy(context);
298
- await initializeViewData(
299
- this.viewRoot,
300
- context.dataFlow,
301
- context.fontManager,
302
- (flow) => this.broadcast("dataFlowBuilt", flow)
303
- );
304
- this.#finalizeViewInitialization(context);
305
- }
306
-
307
- async #initializeGenomeStore() {
308
- if (this.spec.genome) {
309
- this.genomeStore = new GenomeStore(this.spec.baseUrl);
310
- await this.genomeStore.initialize(this.spec.genome);
311
- }
312
- }
313
-
314
- #createViewContext() {
315
- const dataFlow = new DataFlow();
316
- dataFlow.loadingStatusRegistry = this.#loadingStatusRegistry;
317
-
318
- return createViewContext({
319
- dataFlow,
320
- glHelper: this.#glHelper,
321
- animator: this.animator,
322
- genomeStore: this.genomeStore,
323
- fontManager: new BmFontManager(this.#glHelper),
324
- updateTooltip: this.updateTooltip.bind(this),
325
- getNamedDataFromProvider: this.getNamedDataFromProvider.bind(this),
326
- getCurrentHover: () =>
327
- this.#interactionController.getCurrentHover(),
328
- addKeyboardListener: (type, listener) => {
329
- this.#keyboardListenerManager.add(type, (event) => {
330
- if (this.#shouldDispatchKeyboardEvent(type, event)) {
331
- listener(event);
332
- }
333
- });
334
- },
335
- addBroadcastListener: (type, listener) =>
336
- this.#extraBroadcastListeners.add(type, listener),
337
- removeBroadcastListener: (type, listener) =>
338
- this.#extraBroadcastListeners.remove(type, listener),
339
- isViewConfiguredVisible: this.viewVisibilityPredicate,
340
- isViewSpec: (spec) => this.viewFactory.isViewSpec(spec),
341
- createOrImportViewWithContext: (
342
- ctx,
343
- spec,
344
- layoutParent,
345
- dataParent,
346
- defaultName,
347
- validator
348
- ) =>
349
- this.viewFactory.createOrImportView(
350
- spec,
351
- ctx,
352
- layoutParent,
353
- dataParent,
354
- defaultName,
355
- validator
356
- ),
357
- highlightView: createViewHighlighter(this.container),
358
- });
359
- }
360
-
361
- /**
362
- * Scopes keydown events to the active embed (focused container or hovered container).
363
- * Keyup is always dispatched so key-state machines can reliably release keys.
364
- *
365
- * @param {"keydown" | "keyup"} type
366
- * @param {KeyboardEvent} event
367
- */
368
- #shouldDispatchKeyboardEvent(type, event) {
369
- if (type === "keyup") {
370
- return true;
371
- }
372
-
373
- const activeElement = document.activeElement;
374
- if (activeElement && activeElement !== document.body) {
375
- return this.container.contains(activeElement);
376
- } else {
377
- return this.container.matches(":hover");
378
- }
379
- }
380
-
381
- /**
382
- * @param {import("./types/viewContext.js").default} context
383
- */
384
- async #initializeViewHierarchy(context) {
385
- /** @type {ViewSpec & RootConfig} */
386
- const rootSpec = this.spec;
387
-
388
- if (rootSpec.datasets) {
389
- this.registerNamedDataProvider((name) => rootSpec.datasets[name]);
390
- }
391
-
392
- // Create the view hierarchy.
393
- // This also resolves scales and axes.
394
- this.viewRoot = await context.createOrImportView(
395
- rootSpec,
396
- null,
397
- null,
398
- VIEW_ROOT_NAME
399
- );
400
-
401
- this.#loadingStatusRegistry.set(this.viewRoot, "loading");
402
-
403
- this.#canvasWrapper.style.flexGrow =
404
- this.viewRoot.getSize().height.grow > 0 ? "1" : "0";
405
-
406
- this.#initializeParameterBindings();
407
-
408
- configureViewHierarchy(this.viewRoot);
409
- configureViewOpacity(this.viewRoot);
410
- this.#logSelectorConstraintWarnings();
411
-
412
- // We should now have a complete view hierarchy. Let's update the canvas size
413
- // and ensure that the loading message is visible.
414
- this.#glHelper.invalidateSize();
415
- this.#renderCoordinator = new RenderCoordinator({
416
- viewRoot: this.viewRoot,
417
- glHelper: this.#glHelper,
418
- getBackground: () => this.spec.background,
419
- broadcast: this.broadcast.bind(this),
420
- onLayoutComputed: () =>
421
- this.#loadingIndicatorManager.updateLayout(),
422
- });
423
-
424
- // Allow early layout requests from view subscriptions created during initialization.
425
- // Layout will be recomputed anyway once launch completes.
426
- context.requestLayoutReflow = this.computeLayout.bind(this);
427
-
428
- this.#setupDpr();
429
- }
430
-
431
- #logSelectorConstraintWarnings() {
432
- const issues = validateSelectorConstraints(this.viewRoot);
433
- if (!issues.length) {
434
- return;
435
- }
436
-
437
- for (const issue of issues) {
438
- console.warn("Selector constraints warning:", issue.message);
439
- }
440
- }
441
-
442
- /**
443
- * @param {import("./types/viewContext.js").default} context
444
- */
445
- #finalizeViewInitialization(context) {
446
- // Allow layout computation (in case a custom context overrode the early assignment).
447
- // eslint-disable-next-line require-atomic-updates
448
- context.requestLayoutReflow = this.computeLayout.bind(this);
449
-
450
- // Invalidate cached sizes to ensure that step-based sizes are current.
451
- // TODO: This should be done automatically when the domains of band/point scales are updated.
452
- this.viewRoot.visit((view) => invalidatePrefix(view, "size"));
453
- this.#glHelper.invalidateSize();
454
-
455
- this.#interactionController = new InteractionController({
456
- viewRoot: this.viewRoot,
457
- glHelper: this.#glHelper,
458
- tooltip: this.tooltip,
459
- animator: this.animator,
460
- emitEvent: this.#eventListeners.emit.bind(this.#eventListeners),
461
- tooltipHandlers: this.tooltipHandlers,
462
- renderPickingFramebuffer: this.renderPickingFramebuffer.bind(this),
463
- getDevicePixelRatio: () => this.dpr,
464
- });
465
- }
466
-
467
- /**
468
- * TODO: Come up with a sensible name. And maybe this should be called at the end of the constructor.
469
- * @returns {Promise<boolean>} true if the launch was successful
470
- */
471
- async launch() {
472
- let launched = false;
473
- try {
474
- this.#prepareContainer();
475
-
476
- await this.#prepareViewsAndData();
477
-
478
- this.registerMouseEvents();
479
-
480
- this.computeLayout();
481
- this.animator.requestRender();
482
-
483
- launched = true;
484
- return true;
485
- } catch (reason) {
486
- const message = `${
487
- reason.view ? `At "${reason.view.getPathString()}": ` : ""
488
- }${reason.toString()}`;
489
- console.error(reason.stack);
490
- const handled = this.options.onError?.(reason, this.container);
491
- if (!handled) {
492
- createMessageBox(this.container, message);
493
- }
494
-
495
- if (this.viewRoot) {
496
- this.#loadingStatusRegistry.set(
497
- this.viewRoot,
498
- "error",
499
- message
500
- );
501
- }
502
-
503
- return false;
504
- } finally {
505
- this.#canvasWrapper.classList.remove("loading");
506
- if (launched && this.viewRoot) {
507
- this.#loadingStatusRegistry.set(this.viewRoot, "complete");
508
- }
509
- }
510
- }
511
-
512
- async initializeVisibleViewData() {
513
- if (!this.viewRoot) {
514
- return;
515
- }
516
-
517
- await initializeVisibleViewData(
518
- this.viewRoot,
519
- this.viewRoot.context.dataFlow,
520
- this.viewRoot.context.fontManager
521
- );
522
-
523
- // Visibility toggles can change sizes; ensure layout is recomputed even
524
- // when callers don't explicitly request it.
525
- this.viewRoot._invalidateCacheByPrefix("size", "progeny");
526
- this.#glHelper.invalidateSize();
527
- this.computeLayout();
528
- this.animator.requestRender();
529
- }
530
-
531
- registerMouseEvents() {
532
- this.#interactionController.registerMouseEvents();
533
- }
534
-
535
- /**
536
- * This method should be called in a mouseMove handler. If not called, the
537
- * tooltip will be hidden.
538
- *
539
- * @param {T} datum
540
- * @param {function(T):Promise<string | HTMLElement | import("lit").TemplateResult>} [converter]
541
- * @template T
542
- */
543
- updateTooltip(datum, converter) {
544
- this.#interactionController.updateTooltip(datum, converter);
545
- }
546
-
547
- /**
548
- * Returns a PNG data URL of the current canvas.
549
- *
550
- * @param {number} [logicalWidth] defaults to canvas width
551
- * @param {number} [logicalHeight] defaults to canvas height
552
- * @param {number} [devicePixelRatio] defaults to window.devicePixelRatio
553
- * @param {string} [clearColor] null for transparent
554
- * @returns A PNG data Url
555
- */
556
- exportCanvas(
557
- logicalWidth,
558
- logicalHeight,
559
- devicePixelRatio,
560
- clearColor = "white"
561
- ) {
562
- const pngUrl = exportCanvas({
563
- glHelper: this.#glHelper,
564
- viewRoot: this.viewRoot,
565
- logicalWidth,
566
- logicalHeight,
567
- devicePixelRatio,
568
- clearColor,
569
- });
570
-
571
- // Clean up
572
- this.computeLayout();
573
- this.renderAll();
574
-
575
- return pngUrl;
576
- }
577
-
578
- getLogicalCanvasSize() {
579
- return this.#glHelper.getLogicalCanvasSize();
580
- }
581
-
582
- computeLayout() {
583
- this.#renderCoordinator.computeLayout();
584
- }
585
-
586
- renderAll() {
587
- this.#renderCoordinator.renderAll();
588
- }
589
-
590
- renderPickingFramebuffer() {
591
- this.#renderCoordinator.renderPickingFramebuffer();
592
- }
593
-
594
- getSearchableViews() {
595
- /** @type {UnitView[]} */
596
- const views = [];
597
- this.viewRoot.visit((view) => {
598
- if (
599
- view instanceof UnitView &&
600
- view.getSearchAccessors().length > 0
601
- ) {
602
- views.push(view);
603
- }
604
- });
605
- return views;
606
- }
6
+ import "./data/formats/parquet.js";
7
+ import "./data/formats/bed.js";
8
+ import "./data/formats/bedpe.js";
9
+ import "./data/formats/fasta.js";
10
+ // These side-effect imports make the default runtime fat for convenience.
11
+ import "./data/sources/lazy/registerBuiltInLazySources.js";
607
12
 
608
- getNamedScaleResolutions() {
609
- /** @type {Map<string, import("./scales/scaleResolution.js").default>} */
610
- const resolutions = new Map();
611
- this.viewRoot.visit((view) => {
612
- for (const resolution of Object.values(view.resolutions.scale)) {
613
- if (resolution.name) {
614
- resolutions.set(resolution.name, resolution);
615
- }
616
- }
617
- });
618
- return resolutions;
619
- }
620
- }
13
+ export { default } from "./genomeSpyBase.js";