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