@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
@@ -17,8 +17,16 @@ export function getFormat(params: import("../../spec/data.js").DataSource, urls?
17
17
  type?: "json";
18
18
  property?: string;
19
19
  parse?: import("../../spec/data.js").Parse | null;
20
+ } | {
21
+ type: "bed";
22
+ parse?: import("../../spec/data.js").Parse | null;
23
+ } | {
24
+ type: "bedpe";
25
+ columns?: string[];
26
+ parse?: import("../../spec/data.js").Parse | null;
20
27
  } | {
21
28
  type: string;
29
+ parse?: import("../../spec/data.js").Parse | null;
22
30
  };
23
31
  /**
24
32
  * @param {string} type
@@ -29,6 +37,10 @@ export function responseType(type: string): string;
29
37
  * @param {string | string[]} url
30
38
  */
31
39
  export function extractTypeFromUrl(url: string | string[]): string;
40
+ /**
41
+ * @param {string} url
42
+ */
43
+ export function hasGzipExtension(url: string): boolean;
32
44
  /**
33
45
  * @param {import("../../spec/data.js").DataFormat} dataFormat
34
46
  * @return {dataFormat is import("../../spec/data.js").CsvDataFormat}
@@ -50,6 +62,10 @@ export function isJsonDataFormat(dataFormat: import("../../spec/data.js").DataFo
50
62
  * @return {dataSource is import("../../spec/data.js").UrlData}
51
63
  */
52
64
  export function isUrlData(dataSource: import("../../spec/data.js").DataSource): dataSource is import("../../spec/data.js").UrlData;
65
+ /**
66
+ * @param {string | undefined} type
67
+ */
68
+ export function isAutoParseFormat(type: string | undefined): boolean;
53
69
  export function makeWrapper(d: any): ((x: import("../../spec/channel.js").Scalar) => {
54
70
  data: import("../../spec/channel.js").Scalar;
55
71
  }) | ((x: import("../flowNode.js").Datum) => import("../flowNode.js").Datum);
@@ -1 +1 @@
1
- {"version":3,"file":"dataUtils.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/dataUtils.js"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,kCAJW,OAAO,oBAAoB,EAAE,UAAU,SAEvC,MAAM,GAAG,MAAM,EAAE;;;;;;;;;;;;;EAoB3B;AAED;;;GAGG;AACH,mCAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;GAEG;AACH,wCAFW,MAAM,GAAG,MAAM,EAAE,UAU3B;AAWD;;;GAGG;AACH,4CAHW,OAAO,oBAAoB,EAAE,UAAU,GACtC,UAAU,IAAI,OAAO,oBAAoB,EAAE,aAAa,CAInE;AAED;;;GAGG;AACH,4CAHW,OAAO,oBAAoB,EAAE,UAAU,GACtC,UAAU,IAAI,OAAO,oBAAoB,EAAE,aAAa,CAInE;AAED;;;GAGG;AACH,6CAHW,OAAO,oBAAoB,EAAE,UAAU,GACtC,UAAU,IAAI,OAAO,oBAAoB,EAAE,cAAc,CAIpE;AAED;;;;GAIG;AACH,sCAHW,OAAO,oBAAoB,EAAE,UAAU,GACtC,UAAU,IAAI,OAAO,oBAAoB,EAAE,OAAO,CAI7D;AAxCM,+BAAgC,GAAG,QAI3B,OAAO,uBAAuB,EAAE,MAAM;;UAGtB,OAAO,gBAAgB,EAAE,KAAK,qCANR"}
1
+ {"version":3,"file":"dataUtils.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/dataUtils.js"],"names":[],"mappings":"AAMA;;;;;;;GAOG;AACH,kCAJW,OAAO,oBAAoB,EAAE,UAAU,SAEvC,MAAM,GAAG,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;EAsB3B;AAED;;;GAGG;AACH,mCAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;GAEG;AACH,wCAFW,MAAM,GAAG,MAAM,EAAE,UA2B3B;AAED;;GAEG;AACH,sCAFW,MAAM,WAWhB;AAkBD;;;GAGG;AACH,4CAHW,OAAO,oBAAoB,EAAE,UAAU,GACtC,UAAU,IAAI,OAAO,oBAAoB,EAAE,aAAa,CAInE;AAED;;;GAGG;AACH,4CAHW,OAAO,oBAAoB,EAAE,UAAU,GACtC,UAAU,IAAI,OAAO,oBAAoB,EAAE,aAAa,CAInE;AAED;;;GAGG;AACH,6CAHW,OAAO,oBAAoB,EAAE,UAAU,GACtC,UAAU,IAAI,OAAO,oBAAoB,EAAE,cAAc,CAIpE;AAED;;;;GAIG;AACH,sCAHW,OAAO,oBAAoB,EAAE,UAAU,GACtC,UAAU,IAAI,OAAO,oBAAoB,EAAE,OAAO,CAI7D;AAED;;GAEG;AACH,wCAFW,MAAM,GAAG,SAAS,WAI5B;AA/CM,+BAAgC,GAAG,QAI3B,OAAO,uBAAuB,EAAE,MAAM;;UAGtB,OAAO,gBAAgB,EAAE,KAAK,qCANR"}
@@ -1,6 +1,9 @@
1
1
  import { formats } from "vega-loader";
2
2
  import { isInlineData } from "./inlineSource.js";
3
3
 
4
+ const autoParseFormats = new Set(["csv", "tsv", "dsv"]);
5
+ const compressionExtensions = new Set(["gz", "bgz", "bgzf"]);
6
+
4
7
  /**
5
8
  * Validates data source params, infers format if not specified explicitly,
6
9
  * returns a complete DataSource params object.
@@ -16,8 +19,10 @@ export function getFormat(params, urls = []) {
16
19
  const format = { ...params.format };
17
20
 
18
21
  format.type ??= isUrlData(params) && extractTypeFromUrl(urls);
19
- // @ts-ignore TODO: Fix typing
20
- format.parse ??= "auto";
22
+ if (format.parse === undefined && isAutoParseFormat(format.type)) {
23
+ // @ts-ignore TODO: Fix typing
24
+ format.parse = "auto";
25
+ }
21
26
 
22
27
  if (!format.type) {
23
28
  throw new Error(
@@ -46,8 +51,46 @@ export function extractTypeFromUrl(url) {
46
51
  }
47
52
 
48
53
  if (url) {
49
- return url.match(/\.(csv|tsv|json)/)?.[1];
54
+ const path = stripUrlQueryAndHash(url).split("/").pop()?.toLowerCase();
55
+
56
+ if (!path) {
57
+ return;
58
+ }
59
+
60
+ const extensions = path.split(".");
61
+ while (
62
+ extensions.length > 1 &&
63
+ compressionExtensions.has(extensions.at(-1))
64
+ ) {
65
+ extensions.pop();
66
+ }
67
+
68
+ const extension = extensions.at(-1);
69
+ if (extension && formats(extension)) {
70
+ return extension;
71
+ }
72
+ }
73
+ }
74
+
75
+ /**
76
+ * @param {string} url
77
+ */
78
+ export function hasGzipExtension(url) {
79
+ const path = stripUrlQueryAndHash(url).split("/").pop()?.toLowerCase();
80
+
81
+ if (!path) {
82
+ return false;
50
83
  }
84
+
85
+ const extension = path.split(".").at(-1);
86
+ return !!extension && compressionExtensions.has(extension);
87
+ }
88
+
89
+ /**
90
+ * @param {string} url
91
+ */
92
+ function stripUrlQueryAndHash(url) {
93
+ return url.replace(/[?#].*$/, "");
51
94
  }
52
95
 
53
96
  export const makeWrapper = (/** @type {any} */ d) =>
@@ -91,3 +134,10 @@ export function isJsonDataFormat(dataFormat) {
91
134
  export function isUrlData(dataSource) {
92
135
  return "url" in dataSource;
93
136
  }
137
+
138
+ /**
139
+ * @param {string | undefined} type
140
+ */
141
+ export function isAutoParseFormat(type) {
142
+ return autoParseFormats.has(type);
143
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"axisGenomeSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/axisGenomeSource.js"],"names":[],"mappings":"AAEA;;;GAGG;AACH;IACI;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,cAAc,QAC9C,OAAO,uBAAuB,EAAE,OAAO,EAIjD;CASJ;iCAtBgC,2BAA2B"}
1
+ {"version":3,"file":"axisGenomeSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/axisGenomeSource.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH;IACI;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,cAAc,QAC9C,OAAO,uBAAuB,EAAE,OAAO,EAIjD;CASJ;iCAtBgC,2BAA2B"}
@@ -1,3 +1,4 @@
1
+ import { registerBuiltInLazyDataSource } from "./lazyDataSourceRegistry.js";
1
2
  import SingleAxisLazySource from "./singleAxisLazySource.js";
2
3
 
3
4
  /**
@@ -21,3 +22,13 @@ export default class AxisGenomeSource extends SingleAxisLazySource {
21
22
  this.publishData([this.genome.chromosomes]);
22
23
  }
23
24
  }
25
+
26
+ /**
27
+ * @param {import("../../../spec/data.js").LazyDataParams} params
28
+ * @returns {params is import("../../../spec/data.js").AxisGenomeData}
29
+ */
30
+ function isAxisGenomeSource(params) {
31
+ return params?.type == "axisGenome";
32
+ }
33
+
34
+ registerBuiltInLazyDataSource(isAxisGenomeSource, AxisGenomeSource);
@@ -12,7 +12,7 @@ export default class AxisTickSource extends SingleAxisLazySource {
12
12
  */
13
13
  ticks: import("../../../spec/channel.js").Scalar[];
14
14
  params: import("../../../spec/data.js").AxisTicksData;
15
- onDomainChanged(): void;
15
+ onDomainChanged(): Promise<void>;
16
16
  }
17
17
  import SingleAxisLazySource from "./singleAxisLazySource.js";
18
18
  //# sourceMappingURL=axisTickSource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"axisTickSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/axisTickSource.js"],"names":[],"mappings":"AAYA;;GAEG;AACH;IAMI;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,aAAa,QAC7C,OAAO,uBAAuB,EAAE,OAAO,EAYjD;IAnBD;;OAEG;IACH,OAFU,OAAO,0BAA0B,EAAE,MAAM,EAAE,CAE1C;IAeP,sDAAoB;IAcxB,wBAkCC;CACJ;iCAzEgC,2BAA2B"}
1
+ {"version":3,"file":"axisTickSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/axisTickSource.js"],"names":[],"mappings":"AAaA;;GAEG;AACH;IAMI;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,aAAa,QAC7C,OAAO,uBAAuB,EAAE,OAAO,EAYjD;IAnBD;;OAEG;IACH,OAFU,OAAO,0BAA0B,EAAE,MAAM,EAAE,CAE1C;IAeP,sDAAoB;IAcxB,iCAkCC;CACJ;iCAzEgC,2BAA2B"}
@@ -8,6 +8,7 @@ import {
8
8
  tickFormat,
9
9
  tickCount,
10
10
  } from "../../../scale/ticks.js";
11
+ import { registerBuiltInLazyDataSource } from "./lazyDataSourceRegistry.js";
11
12
  import SingleAxisLazySource from "./singleAxisLazySource.js";
12
13
 
13
14
  /**
@@ -43,24 +44,24 @@ export default class AxisTickSource extends SingleAxisLazySource {
43
44
  // Force the ticks to be recalculated. This is needed because the async
44
45
  // initialization process and non-deterministic order of events.
45
46
  this.ticks = null;
46
- this.onDomainChanged();
47
+ await this.onDomainChanged();
47
48
  }
48
49
 
49
- onDomainChanged() {
50
- // Note, although this function is async, it is not awaited. Data are updated
51
- // synchronously to ensure that the new ticks are available before the next frame is drawn.
52
-
50
+ async onDomainChanged() {
53
51
  const scale = this.scaleResolution.getScale();
54
52
  const axisLength = this.scaleResolution.getAxisLength();
55
53
  const axisParams = this.params.axis;
56
54
 
57
55
  /**
58
- * Make ticks more dense in small plots.
56
+ * Make ticks denser in small plots.
59
57
  * TODO: Make configurable
60
58
  *
61
- * @param {number} length
59
+ * @type {(length: number) => number}
62
60
  */
63
- const tickSpacing = (length) => 25 + 60 * smoothstep(100, 700, length);
61
+ const tickSpacing =
62
+ scale.type != "locus"
63
+ ? (length) => 30 + 55 * smoothstep(100, 700, length)
64
+ : () => 85;
64
65
 
65
66
  const requestedCount = isNumber(axisParams.tickCount)
66
67
  ? axisParams.tickCount
@@ -82,3 +83,13 @@ export default class AxisTickSource extends SingleAxisLazySource {
82
83
  }
83
84
  }
84
85
  }
86
+
87
+ /**
88
+ * @param {import("../../../spec/data.js").LazyDataParams} params
89
+ * @returns {params is import("../../../spec/data.js").AxisTicksData}
90
+ */
91
+ function isAxisTickSource(params) {
92
+ return params?.type == "axisTicks";
93
+ }
94
+
95
+ registerBuiltInLazyDataSource(isAxisTickSource, AxisTickSource);
@@ -1 +1 @@
1
- {"version":3,"file":"bamSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/bamSource.js"],"names":[],"mappings":"AAGA;IAeI;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,OAAO,QACvC,OAAO,uBAAuB,EAAE,OAAO,EAmDjD;IAhED;;;;;;;;OAQG;IACH,gBAFU,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAEH;IAkB1B,gDAAgC;IAQhC,iCA4BE;;CAuCT;qCA5GoC,+BAA+B"}
1
+ {"version":3,"file":"bamSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/bamSource.js"],"names":[],"mappings":"AAIA;IAeI;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,OAAO,QACvC,OAAO,uBAAuB,EAAE,OAAO,EAmDjD;IAhED;;;;;;;;OAQG;IACH,gBAFU,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAEH;IAkB1B,gDAAgC;IAQhC,iCA4BE;;CAuCT;qCA5GoC,+BAA+B"}
@@ -1,4 +1,5 @@
1
1
  import addBaseUrl from "../../../utils/addBaseUrl.js";
2
+ import { registerBuiltInLazyDataSource } from "./lazyDataSourceRegistry.js";
2
3
  import SingleAxisWindowedSource from "./singleAxisWindowedSource.js";
3
4
 
4
5
  export default class BamSource extends SingleAxisWindowedSource {
@@ -108,3 +109,13 @@ export default class BamSource extends SingleAxisWindowedSource {
108
109
  }
109
110
  }
110
111
  }
112
+
113
+ /**
114
+ * @param {import("../../../spec/data.js").LazyDataParams} params
115
+ * @returns {params is import("../../../spec/data.js").BamData}
116
+ */
117
+ function isBamSource(params) {
118
+ return params?.type == "bam";
119
+ }
120
+
121
+ registerBuiltInLazyDataSource(isBamSource, BamSource);
@@ -1 +1 @@
1
- {"version":3,"file":"bigBedSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/bigBedSource.js"],"names":[],"mappings":"AAOA;IAUI;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,UAAU,QAC1C,OAAO,uBAAuB,EAAE,OAAO,EAoCjD;IA/CD,0CAA0C;IAC1C,QADW,OAAO,WAAW,EAAE,OAAO,CAC/B;IAEP,yCAAyC;IACzC,KADW,OAAO,WAAW,EAAE,MAAM,CACjC;IAEJ,4GAA4G;IAC5G,WADW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAC9F;IAmBN,mDAYC;;CAwFR;qCAjIoC,+BAA+B"}
1
+ {"version":3,"file":"bigBedSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/bigBedSource.js"],"names":[],"mappings":"AAQA;IAUI;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,UAAU,QAC1C,OAAO,uBAAuB,EAAE,OAAO,EAoCjD;IA/CD,0CAA0C;IAC1C,QADW,OAAO,WAAW,EAAE,OAAO,CAC/B;IAEP,yCAAyC;IACzC,KADW,OAAO,WAAW,EAAE,MAAM,CACjC;IAEJ,4GAA4G;IAC5G,WADW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAC9F;IAmBN,mDAYC;;CAwFR;qCAjIoC,+BAA+B"}
@@ -3,6 +3,7 @@ import {
3
3
  withoutExprRef,
4
4
  } from "../../../paramRuntime/paramUtils.js";
5
5
  import addBaseUrl from "../../../utils/addBaseUrl.js";
6
+ import { registerBuiltInLazyDataSource } from "./lazyDataSourceRegistry.js";
6
7
  import SingleAxisWindowedSource from "./singleAxisWindowedSource.js";
7
8
 
8
9
  export default class BigBedSource extends SingleAxisWindowedSource {
@@ -87,7 +88,7 @@ export default class BigBedSource extends SingleAxisWindowedSource {
87
88
  const fastParser = makeFastParser(this.parser);
88
89
  this.parseLine = (chrom, f) =>
89
90
  fastParser(chrom, f.start, f.end, f.rest);
90
- } catch (e) {
91
+ } catch {
91
92
  this.parseLine = (chrom, f) =>
92
93
  this.parser.parseLine(
93
94
  `${chrom}\t${f.start}\t${f.end}\t${f.rest}`
@@ -299,6 +300,16 @@ function makeFastParser(bed) {
299
300
  return parseLine;
300
301
  }
301
302
 
303
+ /**
304
+ * @param {import("../../../spec/data.js").LazyDataParams} params
305
+ * @returns {params is import("../../../spec/data.js").BigBedData}
306
+ */
307
+ function isBigBedSource(params) {
308
+ return params?.type == "bigbed";
309
+ }
310
+
311
+ registerBuiltInLazyDataSource(isBigBedSource, BigBedSource);
312
+
302
313
  /**
303
314
  * @param {T[]} arr
304
315
  * @param {number} size
@@ -1 +1 @@
1
- {"version":3,"file":"bigWigSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/bigWigSource.js"],"names":[],"mappings":"AAOA;;GAEG;AACH;IAOI;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,UAAU,QAC1C,OAAO,uBAAuB,EAAE,OAAO,EAoCjD;IArBG,mDAYC;IA+DL;;;;OAIG;IACH,wBAFW,MAAM,EAAE,iBAqBlB;IAED;;;OAGG;IAEH,uBAJW,MAAM,EAAE,kBACR,MAAM,iBA2BhB;;CACJ;qCAhKoC,+BAA+B"}
1
+ {"version":3,"file":"bigWigSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/bigWigSource.js"],"names":[],"mappings":"AAQA;;GAEG;AACH;IAOI;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,UAAU,QAC1C,OAAO,uBAAuB,EAAE,OAAO,EAoCjD;IArBG,mDAYC;IA+DL;;;;OAIG;IACH,wBAFW,MAAM,EAAE,iBAqBlB;IAED;;;OAGG;IAEH,uBAJW,MAAM,EAAE,kBACR,MAAM,iBA2BhB;;CACJ;qCAhKoC,+BAA+B"}
@@ -3,6 +3,7 @@ import {
3
3
  withoutExprRef,
4
4
  } from "../../../paramRuntime/paramUtils.js";
5
5
  import addBaseUrl from "../../../utils/addBaseUrl.js";
6
+ import { registerBuiltInLazyDataSource } from "./lazyDataSourceRegistry.js";
6
7
  import SingleAxisWindowedSource from "./singleAxisWindowedSource.js";
7
8
 
8
9
  /**
@@ -165,6 +166,16 @@ export default class BigWigSource extends SingleAxisWindowedSource {
165
166
  }
166
167
  }
167
168
 
169
+ /**
170
+ * @param {import("../../../spec/data.js").LazyDataParams} params
171
+ * @returns {params is import("../../../spec/data.js").BigWigData}
172
+ */
173
+ function isBigWigSource(params) {
174
+ return params?.type == "bigwig";
175
+ }
176
+
177
+ registerBuiltInLazyDataSource(isBigWigSource, BigWigSource);
178
+
168
179
  /**
169
180
  * @param {number[]} domain
170
181
  * @param {number} widthInPixels view width in pixels
@@ -1 +1 @@
1
- {"version":3,"file":"gff3Source.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/gff3Source.js"],"names":[],"mappings":"AAEA;;GAEG;AACH;;;CAuBC;wBA5BuB,kBAAkB"}
1
+ {"version":3,"file":"gff3Source.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/gff3Source.js"],"names":[],"mappings":"AAGA;;GAEG;AACH;;;CAuBC;wBA5BuB,kBAAkB"}
@@ -1,3 +1,4 @@
1
+ import { registerBuiltInLazyDataSource } from "./lazyDataSourceRegistry.js";
1
2
  import TabixSource from "./tabixSource.js";
2
3
 
3
4
  /**
@@ -22,8 +23,18 @@ export default class Gff3Source extends TabixSource {
22
23
  * @param {string[]} lines
23
24
  */
24
25
  _parseFeatures(lines) {
25
- const features = this.#gff?.parseArraySync(lines);
26
+ const features = this.#gff?.parseStringSync(lines.join("\n"));
26
27
 
27
28
  return features;
28
29
  }
29
30
  }
31
+
32
+ /**
33
+ * @param {import("../../../spec/data.js").LazyDataParams} params
34
+ * @returns {params is import("../../../spec/data.js").Gff3Data}
35
+ */
36
+ function isGff3Source(params) {
37
+ return params?.type == "gff3";
38
+ }
39
+
40
+ registerBuiltInLazyDataSource(isGff3Source, Gff3Source);
@@ -1 +1 @@
1
- {"version":3,"file":"indexedFastaSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/indexedFastaSource.js"],"names":[],"mappings":"AAGA;IACI;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,gBAAgB,QAChD,OAAO,uBAAuB,EAAE,OAAO,EAwCjD;IA1BG,yDAAgC;IAQhC,iCAiBE;IATM,iDAKE;CAwCjB;qCAhFoC,+BAA+B"}
1
+ {"version":3,"file":"indexedFastaSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/indexedFastaSource.js"],"names":[],"mappings":"AAIA;IACI;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,gBAAgB,QAChD,OAAO,uBAAuB,EAAE,OAAO,EAwCjD;IA1BG,yDAAgC;IAQhC,iCAiBE;IATM,iDAKE;CAwCjB;qCAhFoC,+BAA+B"}
@@ -1,4 +1,5 @@
1
1
  import addBaseUrl from "../../../utils/addBaseUrl.js";
2
+ import { registerBuiltInLazyDataSource } from "./lazyDataSourceRegistry.js";
2
3
  import SingleAxisWindowedSource from "./singleAxisWindowedSource.js";
3
4
 
4
5
  export default class IndexedFastaSource extends SingleAxisWindowedSource {
@@ -80,3 +81,13 @@ export default class IndexedFastaSource extends SingleAxisWindowedSource {
80
81
  this.publishData([features.filter((f) => f !== undefined)]);
81
82
  }
82
83
  }
84
+
85
+ /**
86
+ * @param {import("../../../spec/data.js").LazyDataParams} params
87
+ * @returns {params is import("../../../spec/data.js").IndexedFastaData}
88
+ */
89
+ function isIndexedFastaSource(params) {
90
+ return params?.type == "indexedFasta";
91
+ }
92
+
93
+ registerBuiltInLazyDataSource(isIndexedFastaSource, IndexedFastaSource);
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Registers a lazy data source for a custom type.
3
+ *
4
+ * @template {import("../../../spec/data.js").LazyDataParams} P
5
+ * @param {LazySourceEntry<P>["guard"]} guard
6
+ * @param {LazySourceEntry<P>["Source"]} Source
7
+ * @returns {() => void}
8
+ */
9
+ export function registerLazyDataSource<P extends import("../../../spec/data.js").LazyDataParams>(guard: LazySourceEntry<P>["guard"], Source: LazySourceEntry<P>["Source"]): () => void;
10
+ /**
11
+ * Registers a built-in lazy data source.
12
+ *
13
+ * @template {import("../../../spec/data.js").LazyDataParams} P
14
+ * @param {LazySourceEntry<P>["guard"]} guard
15
+ * @param {LazySourceEntry<P>["Source"]} Source
16
+ */
17
+ export function registerBuiltInLazyDataSource<P extends import("../../../spec/data.js").LazyDataParams>(guard: LazySourceEntry<P>["guard"], Source: LazySourceEntry<P>["Source"]): void;
18
+ /**
19
+ * @param {import("../../../spec/data.js").LazyDataParams} params
20
+ * @param {import("../../../view/view.js").default} view
21
+ */
22
+ export function createLazyDataSource(params: import("../../../spec/data.js").LazyDataParams, view: import("../../../view/view.js").default): import("../dataSource.js").default;
23
+ export type LazySourceEntry<P extends import("../../../spec/data.js").LazyDataParams> = {
24
+ guard: (params: import("../../../spec/data.js").LazyDataParams) => params is P;
25
+ Source: new (params: any, view: import("../../../view/view.js").default) => import("../dataSource.js").default;
26
+ };
27
+ //# sourceMappingURL=lazyDataSourceRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazyDataSourceRegistry.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/lazyDataSourceRegistry.js"],"names":[],"mappings":"AAcA;;;;;;;GAOG;AACH,uCAL8D,CAAC,SAAlD,OAAQ,uBAAuB,EAAE,cAAe,SAClD,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAC3B,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAC1B,MAAM,IAAI,CAYtB;AAED;;;;;;GAMG;AACH,8CAJ8D,CAAC,SAAlD,OAAQ,uBAAuB,EAAE,cAAe,SAClD,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAC3B,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAItC;AAED;;;GAGG;AACH,6CAHW,OAAO,uBAAuB,EAAE,cAAc,QAC9C,OAAO,uBAAuB,EAAE,OAAO,sCAiBjD;4BA/D6D,CAAC,SAAlD,OAAQ,uBAAuB,EAAE,cAAe,IAChD;IACR,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,uBAAuB,EAAE,cAAc,KAAK,MAAM,IAAI,CAAC,CAAC;IAC/E,MAAM,EAAE,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,uBAAuB,EAAE,OAAO,KAAK,OAAO,kBAAkB,EAAE,OAAO,CAAA;CAC/G"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * @template {import("../../../spec/data.js").LazyDataParams} P
3
+ * @typedef {{
4
+ * guard: (params: import("../../../spec/data.js").LazyDataParams) => params is P,
5
+ * Source: new (params: any, view: import("../../../view/view.js").default) => import("../dataSource.js").default
6
+ * }} LazySourceEntry
7
+ */
8
+
9
+ /** @type {LazySourceEntry<any>[]} */
10
+ const customLazySources = [];
11
+
12
+ /** @type {LazySourceEntry<any>[]} */
13
+ const builtinLazySources = [];
14
+
15
+ /**
16
+ * Registers a lazy data source for a custom type.
17
+ *
18
+ * @template {import("../../../spec/data.js").LazyDataParams} P
19
+ * @param {LazySourceEntry<P>["guard"]} guard
20
+ * @param {LazySourceEntry<P>["Source"]} Source
21
+ * @returns {() => void}
22
+ */
23
+ export function registerLazyDataSource(guard, Source) {
24
+ /** @type {LazySourceEntry<any>} */
25
+ const entry = { guard, Source };
26
+ customLazySources.push(entry);
27
+ return () => {
28
+ const index = customLazySources.indexOf(entry);
29
+ if (index >= 0) {
30
+ customLazySources.splice(index, 1);
31
+ }
32
+ };
33
+ }
34
+
35
+ /**
36
+ * Registers a built-in lazy data source.
37
+ *
38
+ * @template {import("../../../spec/data.js").LazyDataParams} P
39
+ * @param {LazySourceEntry<P>["guard"]} guard
40
+ * @param {LazySourceEntry<P>["Source"]} Source
41
+ */
42
+ export function registerBuiltInLazyDataSource(guard, Source) {
43
+ builtinLazySources.push({ guard, Source });
44
+ }
45
+
46
+ /**
47
+ * @param {import("../../../spec/data.js").LazyDataParams} params
48
+ * @param {import("../../../view/view.js").default} view
49
+ */
50
+ export function createLazyDataSource(params, view) {
51
+ for (const entry of customLazySources) {
52
+ if (entry.guard(params)) {
53
+ return new entry.Source(/** @type {any} */ (params), view);
54
+ }
55
+ }
56
+ for (const entry of builtinLazySources) {
57
+ if (entry.guard(params)) {
58
+ return new entry.Source(/** @type {any} */ (params), view);
59
+ }
60
+ }
61
+
62
+ throw new Error(
63
+ "Cannot figure out the data source type: " + JSON.stringify(params)
64
+ );
65
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=registerBuiltInLazySources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerBuiltInLazySources.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/registerBuiltInLazySources.js"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import "./axisTickSource.js";
2
+ import "./axisGenomeSource.js";
3
+ import "./indexedFastaSource.js";
4
+ import "./bigWigSource.js";
5
+ import "./bigBedSource.js";
6
+ import "./bamSource.js";
7
+ import "./gff3Source.js";
8
+ import "./vcfSource.js";
@@ -1 +1 @@
1
- {"version":3,"file":"singleAxisLazySource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/singleAxisLazySource.js"],"names":[],"mappings":"AAGA;;GAEG;AAEH;;GAEG;AAEH;;;;;GAKG;AACH,wEAFgB,sBAAsB;IAelC;;;OAGG;IACH,kBAHW,OAAO,uBAAuB,EAAE,OAAO,WACvC,OAAO,0BAA0B,EAAE,wBAAwB,EA+CrE;IA7DD;;;OAGG;IACH,4CAAuC;IAEvC;;;OAGG;IACH,6BAHU,MAAM,EAAE,GAAG,SAAS,CAGZ;IAmBd,2EAA2E;IAC3E,SADW,OAAO,0BAA0B,EAAE,wBAAwB,CAChD;IAEtB,sEAA4D;IA+BhE;;;;OAIG;IACH,oEASC;IAED;;;;;;OAMG;IACH,wBAJW,MAAM,EAAE,iBACR,OAAO,yBAAyB,EAAE,gBAAgB,EAAE,QAK9D;IAED;;;;;OAKG;IACH,gCAGC;IAQD;;;;;;;;OAQG;IACH,8BAHW,OAAO,mBAAmB,EAAE,KAAK,EAAE,EAAE,QAe/C;IAED;;;OAGG;IACH,8BAHW,oBAAoB,GAClB,OAAO,CAenB;CACJ;mCAlKY,OAAO,CAAC,MAAM,CAAC,OAAO,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,EAAE,CAAC,CAAC;qCAItF;IAAC,oBAAoB,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAA;CAAC;uBAPxD,kBAAkB"}
1
+ {"version":3,"file":"singleAxisLazySource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/singleAxisLazySource.js"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;GAEG;AAEH;;;;;GAKG;AACH,wEAFgB,sBAAsB;IAelC;;;OAGG;IACH,kBAHW,OAAO,uBAAuB,EAAE,OAAO,WACvC,OAAO,0BAA0B,EAAE,wBAAwB,EA+CrE;IA7DD;;;OAGG;IACH,4CAAuC;IAEvC;;;OAGG;IACH,6BAHU,MAAM,EAAE,GAAG,SAAS,CAGZ;IAmBd,2EAA2E;IAC3E,SADW,OAAO,0BAA0B,EAAE,wBAAwB,CAChD;IAEtB,sEAA4D;IA+BhE;;;;OAIG;IACH,oEASC;IAED;;;;;;OAMG;IACH,wBAJW,MAAM,EAAE,iBACR,OAAO,yBAAyB,EAAE,gBAAgB,EAAE,QAK9D;IAED;;;;;OAKG;IACH,gCAGC;IAQD;;;;;;;;OAQG;IACH,8BAHW,OAAO,mBAAmB,EAAE,KAAK,EAAE,EAAE,QAe/C;IAED;;;OAGG;IACH,8BAHW,oBAAoB,GAClB,OAAO,CAenB;CACJ;mCAlKY,OAAO,CAAC,MAAM,CAAC,OAAO,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,EAAE,CAAC,CAAC;qCAItF;IAAC,oBAAoB,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAA;CAAC;uBAPxD,kBAAkB"}
@@ -1,4 +1,3 @@
1
- import UnitView from "../../../view/unitView.js";
2
1
  import DataSource from "../dataSource.js";
3
2
 
4
3
  /**
@@ -53,7 +52,7 @@ export default class SingleAxisLazySource extends DataSource {
53
52
  const sentences = [
54
53
  `The lazy data source cannot find a resolved scale for channel "${channel}".`,
55
54
  ];
56
- if (!(this.view instanceof UnitView)) {
55
+ if (!isUnitViewLike(this.view)) {
57
56
  sentences.push(
58
57
  `Make sure the view has a "shared" scale resolution as it is not a unit view.`
59
58
  );
@@ -165,3 +164,13 @@ export default class SingleAxisLazySource extends DataSource {
165
164
  return min >= loadedMin && max <= loadedMax;
166
165
  }
167
166
  }
167
+
168
+ /**
169
+ * Unit views expose `getMarkType()`, while container and helper views do not.
170
+ *
171
+ * @param {import("../../../view/view.js").default} view
172
+ * @returns {view is import("../../../view/unitView.js").default}
173
+ */
174
+ function isUnitViewLike(view) {
175
+ return typeof (/** @type {any} */ (view).getMarkType) == "function";
176
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"vcfSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/vcfSource.js"],"names":[],"mappings":"AAEA;;GAEG;AACH;;;CAgCC;wBArCuB,kBAAkB"}
1
+ {"version":3,"file":"vcfSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/vcfSource.js"],"names":[],"mappings":"AAGA;;GAEG;AACH;;;CAgCC;wBAtCuB,kBAAkB"}
@@ -1,4 +1,5 @@
1
1
  import TabixSource from "./tabixSource.js";
2
+ import { registerBuiltInLazyDataSource } from "./lazyDataSourceRegistry.js";
2
3
 
3
4
  /**
4
5
  * @extends {TabixSource<import("./vcfTypes.js").ParsedVariant>}
@@ -36,3 +37,13 @@ export default class VcfSource extends TabixSource {
36
37
  });
37
38
  }
38
39
  }
40
+
41
+ /**
42
+ * @param {import("../../../spec/data.js").LazyDataParams} params
43
+ * @returns {params is import("../../../spec/data.js").VcfData}
44
+ */
45
+ function isVcfSource(params) {
46
+ return params?.type == "vcf";
47
+ }
48
+
49
+ registerBuiltInLazyDataSource(isVcfSource, VcfSource);
@@ -3,6 +3,10 @@
3
3
  * @returns {data is import("../../spec/data.js").UrlData}
4
4
  */
5
5
  export function isUrlData(data: Partial<import("../../spec/data.js").Data>): data is import("../../spec/data.js").UrlData;
6
+ /**
7
+ * Loads eager data from URLs and transparently decompresses gzip-compatible
8
+ * payloads before handing them to the registered format reader.
9
+ */
6
10
  export default class UrlSource extends DataSource {
7
11
  /**
8
12
  * @param {import("../../spec/data.js").UrlData} params
@@ -1 +1 @@
1
- {"version":3,"file":"urlSource.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/urlSource.js"],"names":[],"mappings":"AASA;;;GAGG;AACH,gCAHW,OAAO,CAAC,OAAO,oBAAoB,EAAE,IAAI,CAAC,GACxC,IAAI,IAAI,OAAO,oBAAoB,EAAE,OAAO,CAIxD;AAED;IACI;;;OAGG;IACH,oBAHW,OAAO,oBAAoB,EAAE,OAAO,QACpC,OAAO,oBAAoB,EAAE,OAAO,EAc9C;IATG,6CAMC;IAED,gBAAiC;;CA4GxC;uBA3IsB,iBAAiB"}
1
+ {"version":3,"file":"urlSource.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/urlSource.js"],"names":[],"mappings":"AAkJA;;;GAGG;AACH,gCAHW,OAAO,CAAC,OAAO,oBAAoB,EAAE,IAAI,CAAC,GACxC,IAAI,IAAI,OAAO,oBAAoB,EAAE,OAAO,CAIxD;AA5ID;;;GAGG;AACH;IACI;;;OAGG;IACH,oBAHW,OAAO,oBAAoB,EAAE,OAAO,QACpC,OAAO,oBAAoB,EAAE,OAAO,EAc9C;IATG,6CAMC;IAED,gBAAiC;;CAgHxC;uBA9IsB,iBAAiB"}