@genome-spy/core 0.77.0 → 0.79.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 (317) hide show
  1. package/dist/bundle/{browser-KWU9rWZT.js → browser-CETrb2cm.js} +53 -33
  2. package/dist/bundle/esm-BdLYkz-m.js +248 -0
  3. package/dist/bundle/esm-BwiDsqSb.js +1367 -0
  4. package/dist/bundle/esm-CDFd1cjk.js +441 -0
  5. package/dist/bundle/{esm-CRMf_I9V.js → esm-CTUHLDbv.js} +30 -30
  6. package/dist/bundle/esm-Cx-EbkOj.js +1221 -0
  7. package/dist/bundle/esm-DlYGqi79.js +128 -0
  8. package/dist/bundle/{esm-BygJiwh0.js → esm-k9p3oHkt.js} +133 -158
  9. package/dist/bundle/{esm-CT3ygiMq.js → esm-zAZJQO6D.js} +226 -212
  10. package/dist/bundle/index.es.js +14102 -10810
  11. package/dist/bundle/index.js +109 -95
  12. package/dist/bundle/{parquetRead-DG_-F5j5.js → parquetRead-Cad1SOVV.js} +473 -399
  13. package/dist/schema.json +23788 -11049
  14. package/dist/src/config/axisConfig.d.ts +2 -2
  15. package/dist/src/config/axisConfig.d.ts.map +1 -1
  16. package/dist/src/config/axisConfig.js +28 -44
  17. package/dist/src/config/configLayers.d.ts +45 -0
  18. package/dist/src/config/configLayers.d.ts.map +1 -0
  19. package/dist/src/config/configLayers.js +110 -0
  20. package/dist/src/config/defaultConfig.d.ts.map +1 -1
  21. package/dist/src/config/defaultConfig.js +8 -1
  22. package/dist/src/config/defaults/legendDefaults.d.ts +14 -0
  23. package/dist/src/config/defaults/legendDefaults.d.ts.map +1 -0
  24. package/dist/src/config/defaults/legendDefaults.js +46 -0
  25. package/dist/src/config/defaults/titleDefaults.d.ts.map +1 -1
  26. package/dist/src/config/defaults/titleDefaults.js +26 -18
  27. package/dist/src/config/legendConfig.d.ts +11 -0
  28. package/dist/src/config/legendConfig.d.ts.map +1 -0
  29. package/dist/src/config/legendConfig.js +63 -0
  30. package/dist/src/config/styleUtils.d.ts +8 -2
  31. package/dist/src/config/styleUtils.d.ts.map +1 -1
  32. package/dist/src/config/styleUtils.js +25 -1
  33. package/dist/src/config/themes.d.ts.map +1 -1
  34. package/dist/src/config/themes.js +21 -2
  35. package/dist/src/config/titleConfig.d.ts.map +1 -1
  36. package/dist/src/config/titleConfig.js +2 -18
  37. package/dist/src/data/collector.d.ts.map +1 -1
  38. package/dist/src/data/collector.js +40 -18
  39. package/dist/src/data/flowInit.d.ts +6 -0
  40. package/dist/src/data/flowInit.d.ts.map +1 -1
  41. package/dist/src/data/flowInit.js +1 -1
  42. package/dist/src/data/flowNode.d.ts +32 -0
  43. package/dist/src/data/flowNode.d.ts.map +1 -1
  44. package/dist/src/data/flowNode.js +59 -0
  45. package/dist/src/data/sources/lazy/bamSource.d.ts +0 -1
  46. package/dist/src/data/sources/lazy/bamSource.d.ts.map +1 -1
  47. package/dist/src/data/sources/lazy/bamSource.js +39 -30
  48. package/dist/src/data/sources/lazy/bigBedSource.d.ts +0 -10
  49. package/dist/src/data/sources/lazy/bigBedSource.d.ts.map +1 -1
  50. package/dist/src/data/sources/lazy/bigBedSource.js +127 -62
  51. package/dist/src/data/sources/lazy/bigWigSource.d.ts +2 -2
  52. package/dist/src/data/sources/lazy/bigWigSource.d.ts.map +1 -1
  53. package/dist/src/data/sources/lazy/bigWigSource.js +234 -81
  54. package/dist/src/data/sources/lazy/gff3Source.d.ts +7 -3
  55. package/dist/src/data/sources/lazy/gff3Source.d.ts.map +1 -1
  56. package/dist/src/data/sources/lazy/gff3Source.js +7 -8
  57. package/dist/src/data/sources/lazy/indexedFastaSource.d.ts +1 -1
  58. package/dist/src/data/sources/lazy/indexedFastaSource.d.ts.map +1 -1
  59. package/dist/src/data/sources/lazy/indexedFastaSource.js +28 -19
  60. package/dist/src/data/sources/lazy/legendEntriesSource.d.ts +24 -0
  61. package/dist/src/data/sources/lazy/legendEntriesSource.d.ts.map +1 -0
  62. package/dist/src/data/sources/lazy/legendEntriesSource.js +217 -0
  63. package/dist/src/data/sources/lazy/legendGradientSource.d.ts +30 -0
  64. package/dist/src/data/sources/lazy/legendGradientSource.d.ts.map +1 -0
  65. package/dist/src/data/sources/lazy/legendGradientSource.js +388 -0
  66. package/dist/src/data/sources/lazy/mockLazySource.d.ts +4 -1
  67. package/dist/src/data/sources/lazy/mockLazySource.d.ts.map +1 -1
  68. package/dist/src/data/sources/lazy/mockLazySource.js +49 -4
  69. package/dist/src/data/sources/lazy/registerCoreLazySources.js +2 -0
  70. package/dist/src/data/sources/lazy/singleAxisWindowedSource.d.ts.map +1 -1
  71. package/dist/src/data/sources/lazy/singleAxisWindowedSource.js +3 -4
  72. package/dist/src/data/sources/lazy/tabixSource.d.ts +9 -4
  73. package/dist/src/data/sources/lazy/tabixSource.d.ts.map +1 -1
  74. package/dist/src/data/sources/lazy/tabixSource.js +201 -70
  75. package/dist/src/data/sources/lazy/tabixTsvSource.d.ts +2 -3
  76. package/dist/src/data/sources/lazy/tabixTsvSource.d.ts.map +1 -1
  77. package/dist/src/data/sources/lazy/tabixTsvSource.js +14 -12
  78. package/dist/src/data/sources/lazy/vcfSource.d.ts +7 -3
  79. package/dist/src/data/sources/lazy/vcfSource.d.ts.map +1 -1
  80. package/dist/src/data/sources/lazy/vcfSource.js +7 -8
  81. package/dist/src/data/sources/urlDescriptor.d.ts +165 -0
  82. package/dist/src/data/sources/urlDescriptor.d.ts.map +1 -0
  83. package/dist/src/data/sources/urlDescriptor.js +473 -0
  84. package/dist/src/data/sources/urlDescriptorController.d.ts +25 -0
  85. package/dist/src/data/sources/urlDescriptorController.d.ts.map +1 -0
  86. package/dist/src/data/sources/urlDescriptorController.js +72 -0
  87. package/dist/src/data/sources/urlDescriptorState.d.ts +47 -0
  88. package/dist/src/data/sources/urlDescriptorState.d.ts.map +1 -0
  89. package/dist/src/data/sources/urlDescriptorState.js +129 -0
  90. package/dist/src/data/sources/urlSource.d.ts.map +1 -1
  91. package/dist/src/data/sources/urlSource.js +101 -61
  92. package/dist/src/data/transforms/packLegendLabels.d.ts +21 -0
  93. package/dist/src/data/transforms/packLegendLabels.d.ts.map +1 -0
  94. package/dist/src/data/transforms/packLegendLabels.js +189 -0
  95. package/dist/src/data/transforms/transformFactory.d.ts.map +1 -1
  96. package/dist/src/data/transforms/transformFactory.js +4 -0
  97. package/dist/src/data/transforms/truncateText.d.ts +27 -0
  98. package/dist/src/data/transforms/truncateText.d.ts.map +1 -0
  99. package/dist/src/data/transforms/truncateText.js +94 -0
  100. package/dist/src/debug/dataflowDebugSnapshot.d.ts +58 -0
  101. package/dist/src/debug/dataflowDebugSnapshot.d.ts.map +1 -0
  102. package/dist/src/debug/dataflowDebugSnapshot.js +159 -0
  103. package/dist/src/debug/markDebugSnapshot.d.ts +54 -0
  104. package/dist/src/debug/markDebugSnapshot.d.ts.map +1 -0
  105. package/dist/src/debug/markDebugSnapshot.js +100 -0
  106. package/dist/src/debug/paramDebugSnapshot.d.ts +53 -0
  107. package/dist/src/debug/paramDebugSnapshot.d.ts.map +1 -0
  108. package/dist/src/debug/paramDebugSnapshot.js +86 -0
  109. package/dist/src/debug/resolutionDebugSnapshot.d.ts +155 -0
  110. package/dist/src/debug/resolutionDebugSnapshot.d.ts.map +1 -0
  111. package/dist/src/debug/resolutionDebugSnapshot.js +291 -0
  112. package/dist/src/debug/valuePreview.d.ts +9 -0
  113. package/dist/src/debug/valuePreview.d.ts.map +1 -0
  114. package/dist/src/debug/valuePreview.js +57 -0
  115. package/dist/src/debug/viewDebugSnapshot.d.ts +131 -0
  116. package/dist/src/debug/viewDebugSnapshot.d.ts.map +1 -0
  117. package/dist/src/debug/viewDebugSnapshot.js +390 -0
  118. package/dist/src/embedFactory.d.ts.map +1 -1
  119. package/dist/src/embedFactory.js +6 -1
  120. package/dist/src/encoder/encoder.d.ts +2 -2
  121. package/dist/src/encoder/encoder.d.ts.map +1 -1
  122. package/dist/src/encoder/encoder.js +5 -4
  123. package/dist/src/fonts/bmFontManager.d.ts +1 -1
  124. package/dist/src/fonts/bmFontManager.d.ts.map +1 -1
  125. package/dist/src/fonts/bmFontManager.js +45 -10
  126. package/dist/src/fonts/textMetrics.d.ts +69 -0
  127. package/dist/src/fonts/textMetrics.d.ts.map +1 -0
  128. package/dist/src/fonts/textMetrics.js +73 -0
  129. package/dist/src/genomeSpy/headlessBootstrap.d.ts.map +1 -1
  130. package/dist/src/genomeSpy/headlessBootstrap.js +8 -0
  131. package/dist/src/genomeSpy/interactionController.d.ts +4 -1
  132. package/dist/src/genomeSpy/interactionController.d.ts.map +1 -1
  133. package/dist/src/genomeSpy/interactionController.js +57 -13
  134. package/dist/src/genomeSpy/renderCoordinator.d.ts.map +1 -1
  135. package/dist/src/genomeSpy/renderCoordinator.js +25 -3
  136. package/dist/src/genomeSpy/viewDataInit.d.ts +14 -0
  137. package/dist/src/genomeSpy/viewDataInit.d.ts.map +1 -1
  138. package/dist/src/genomeSpy/viewDataInit.js +45 -8
  139. package/dist/src/genomeSpyBase.d.ts +6 -0
  140. package/dist/src/genomeSpyBase.d.ts.map +1 -1
  141. package/dist/src/genomeSpyBase.js +25 -4
  142. package/dist/src/gl/glslScaleGenerator.d.ts +17 -0
  143. package/dist/src/gl/glslScaleGenerator.d.ts.map +1 -1
  144. package/dist/src/gl/glslScaleGenerator.js +39 -2
  145. package/dist/src/gl/includes/common.glsl.js +1 -1
  146. package/dist/src/gl/vertexRangeIndex.d.ts.map +1 -1
  147. package/dist/src/gl/vertexRangeIndex.js +4 -2
  148. package/dist/src/gl/webGLHelper.d.ts +1 -1
  149. package/dist/src/gl/webGLHelper.d.ts.map +1 -1
  150. package/dist/src/gl/webGLHelper.js +13 -8
  151. package/dist/src/marks/__snapshots__/shaderSnapshot.test.js.snap +140 -3
  152. package/dist/src/marks/mark.d.ts +47 -4
  153. package/dist/src/marks/mark.d.ts.map +1 -1
  154. package/dist/src/marks/mark.js +158 -54
  155. package/dist/src/marks/point.d.ts.map +1 -1
  156. package/dist/src/marks/point.js +4 -0
  157. package/dist/src/marks/point.vertex.glsl.js +1 -1
  158. package/dist/src/marks/text.d.ts +1 -1
  159. package/dist/src/marks/text.d.ts.map +1 -1
  160. package/dist/src/marks/text.js +2 -7
  161. package/dist/src/marks/text.vertex.glsl.js +1 -1
  162. package/dist/src/paramRuntime/paramUtils.d.ts +43 -9
  163. package/dist/src/paramRuntime/paramUtils.d.ts.map +1 -1
  164. package/dist/src/paramRuntime/paramUtils.js +61 -1
  165. package/dist/src/paramRuntime/viewParamRuntime.d.ts +32 -0
  166. package/dist/src/paramRuntime/viewParamRuntime.d.ts.map +1 -1
  167. package/dist/src/paramRuntime/viewParamRuntime.js +63 -0
  168. package/dist/src/scales/axisResolution.d.ts +35 -0
  169. package/dist/src/scales/axisResolution.d.ts.map +1 -1
  170. package/dist/src/scales/axisResolution.js +115 -7
  171. package/dist/src/scales/domainExpressions.d.ts +21 -0
  172. package/dist/src/scales/domainExpressions.d.ts.map +1 -0
  173. package/dist/src/scales/domainExpressions.js +43 -0
  174. package/dist/src/scales/domainPlanner.d.ts +12 -1
  175. package/dist/src/scales/domainPlanner.d.ts.map +1 -1
  176. package/dist/src/scales/domainPlanner.js +55 -36
  177. package/dist/src/scales/legendResolution.d.ts +83 -0
  178. package/dist/src/scales/legendResolution.d.ts.map +1 -0
  179. package/dist/src/scales/legendResolution.js +461 -0
  180. package/dist/src/scales/scaleInstanceManager.d.ts +1 -0
  181. package/dist/src/scales/scaleInstanceManager.d.ts.map +1 -1
  182. package/dist/src/scales/scaleInstanceManager.js +5 -0
  183. package/dist/src/scales/scalePropsResolver.d.ts +6 -1
  184. package/dist/src/scales/scalePropsResolver.d.ts.map +1 -1
  185. package/dist/src/scales/scalePropsResolver.js +35 -10
  186. package/dist/src/scales/scaleResolution.d.ts +52 -0
  187. package/dist/src/scales/scaleResolution.d.ts.map +1 -1
  188. package/dist/src/scales/scaleResolution.js +195 -16
  189. package/dist/src/scales/scaleRules.d.ts +10 -0
  190. package/dist/src/scales/scaleRules.d.ts.map +1 -1
  191. package/dist/src/scales/scaleRules.js +38 -1
  192. package/dist/src/scales/viewLevelGuideConfig.d.ts +53 -0
  193. package/dist/src/scales/viewLevelGuideConfig.d.ts.map +1 -0
  194. package/dist/src/scales/viewLevelGuideConfig.js +224 -0
  195. package/dist/src/scales/viewLevelScaleConfig.d.ts +45 -0
  196. package/dist/src/scales/viewLevelScaleConfig.d.ts.map +1 -0
  197. package/dist/src/scales/viewLevelScaleConfig.js +149 -0
  198. package/dist/src/spec/axis.d.ts +109 -3
  199. package/dist/src/spec/channel.d.ts +23 -4
  200. package/dist/src/spec/config.d.ts +59 -4
  201. package/dist/src/spec/data.d.ts +177 -17
  202. package/dist/src/spec/legend.d.ts +246 -0
  203. package/dist/src/spec/mark.d.ts +16 -4
  204. package/dist/src/spec/scale.d.ts +19 -6
  205. package/dist/src/spec/title.d.ts +58 -1
  206. package/dist/src/spec/transform.d.ts +149 -0
  207. package/dist/src/spec/view.d.ts +50 -6
  208. package/dist/src/styles/genome-spy.css +4 -1
  209. package/dist/src/styles/genome-spy.css.d.ts +1 -1
  210. package/dist/src/styles/genome-spy.css.d.ts.map +1 -1
  211. package/dist/src/styles/genome-spy.css.js +4 -1
  212. package/dist/src/types/embedApi.d.ts +262 -6
  213. package/dist/src/types/rendering.d.ts +19 -3
  214. package/dist/src/types/viewContext.d.ts +18 -2
  215. package/dist/src/utils/arrayUtils.d.ts +11 -0
  216. package/dist/src/utils/arrayUtils.d.ts.map +1 -1
  217. package/dist/src/utils/arrayUtils.js +23 -0
  218. package/dist/src/utils/suspension.d.ts +17 -0
  219. package/dist/src/utils/suspension.d.ts.map +1 -0
  220. package/dist/src/utils/suspension.js +41 -0
  221. package/dist/src/utils/ui/tooltip.d.ts +4 -0
  222. package/dist/src/utils/ui/tooltip.d.ts.map +1 -1
  223. package/dist/src/utils/ui/tooltip.js +35 -10
  224. package/dist/src/view/axisGridView.d.ts.map +1 -1
  225. package/dist/src/view/axisGridView.js +1 -4
  226. package/dist/src/view/axisView.d.ts +18 -2
  227. package/dist/src/view/axisView.d.ts.map +1 -1
  228. package/dist/src/view/axisView.js +180 -75
  229. package/dist/src/view/concatView.d.ts +10 -2
  230. package/dist/src/view/concatView.d.ts.map +1 -1
  231. package/dist/src/view/concatView.js +46 -9
  232. package/dist/src/view/containerMutationHelper.d.ts +20 -1
  233. package/dist/src/view/containerMutationHelper.d.ts.map +1 -1
  234. package/dist/src/view/containerMutationHelper.js +203 -32
  235. package/dist/src/view/facetView.d.ts +1 -1
  236. package/dist/src/view/gridView/gridChild.d.ts +54 -4
  237. package/dist/src/view/gridView/gridChild.d.ts.map +1 -1
  238. package/dist/src/view/gridView/gridChild.js +301 -120
  239. package/dist/src/view/gridView/gridChildLegends.d.ts +57 -0
  240. package/dist/src/view/gridView/gridChildLegends.d.ts.map +1 -0
  241. package/dist/src/view/gridView/gridChildLegends.js +503 -0
  242. package/dist/src/view/gridView/gridView.d.ts +25 -0
  243. package/dist/src/view/gridView/gridView.d.ts.map +1 -1
  244. package/dist/src/view/gridView/gridView.js +454 -78
  245. package/dist/src/view/gridView/legendLayout.d.ts +26 -0
  246. package/dist/src/view/gridView/legendLayout.d.ts.map +1 -0
  247. package/dist/src/view/gridView/legendLayout.js +111 -0
  248. package/dist/src/view/gridView/scrollbar.d.ts.map +1 -1
  249. package/dist/src/view/gridView/scrollbar.js +1 -4
  250. package/dist/src/view/gridView/selectionRect.d.ts.map +1 -1
  251. package/dist/src/view/gridView/selectionRect.js +1 -4
  252. package/dist/src/view/gridView/separatorView.d.ts.map +1 -1
  253. package/dist/src/view/gridView/separatorView.js +1 -4
  254. package/dist/src/view/layerView.d.ts +9 -2
  255. package/dist/src/view/layerView.d.ts.map +1 -1
  256. package/dist/src/view/layerView.js +18 -1
  257. package/dist/src/view/layout/flexLayout.d.ts +20 -4
  258. package/dist/src/view/layout/flexLayout.d.ts.map +1 -1
  259. package/dist/src/view/layout/flexLayout.js +331 -31
  260. package/dist/src/view/layout/rectangle.d.ts +14 -0
  261. package/dist/src/view/layout/rectangle.d.ts.map +1 -1
  262. package/dist/src/view/layout/rectangle.js +40 -0
  263. package/dist/src/view/legend/legendEntries.d.ts +20 -0
  264. package/dist/src/view/legend/legendEntries.d.ts.map +1 -0
  265. package/dist/src/view/legend/legendEntries.js +21 -0
  266. package/dist/src/view/legendView.d.ts +134 -0
  267. package/dist/src/view/legendView.d.ts.map +1 -0
  268. package/dist/src/view/legendView.js +1611 -0
  269. package/dist/src/view/renderingContext/bufferedViewRenderingContext.d.ts.map +1 -1
  270. package/dist/src/view/renderingContext/bufferedViewRenderingContext.js +26 -4
  271. package/dist/src/view/renderingContext/clipOptions.d.ts +44 -0
  272. package/dist/src/view/renderingContext/clipOptions.d.ts.map +1 -0
  273. package/dist/src/view/renderingContext/clipOptions.js +140 -0
  274. package/dist/src/view/renderingContext/simpleViewRenderingContext.d.ts.map +1 -1
  275. package/dist/src/view/renderingContext/simpleViewRenderingContext.js +12 -1
  276. package/dist/src/view/resolutionPlanner.d.ts +2 -1
  277. package/dist/src/view/resolutionPlanner.d.ts.map +1 -1
  278. package/dist/src/view/resolutionPlanner.js +89 -25
  279. package/dist/src/view/testUtils.d.ts +4 -2
  280. package/dist/src/view/testUtils.d.ts.map +1 -1
  281. package/dist/src/view/testUtils.js +29 -7
  282. package/dist/src/view/titleView.d.ts +37 -0
  283. package/dist/src/view/titleView.d.ts.map +1 -0
  284. package/dist/src/view/titleView.js +584 -0
  285. package/dist/src/view/unitView.d.ts +3 -3
  286. package/dist/src/view/unitView.d.ts.map +1 -1
  287. package/dist/src/view/unitView.js +3 -2
  288. package/dist/src/view/view.d.ts +25 -24
  289. package/dist/src/view/view.d.ts.map +1 -1
  290. package/dist/src/view/view.js +121 -16
  291. package/dist/src/view/viewFactory.d.ts +2 -5
  292. package/dist/src/view/viewFactory.d.ts.map +1 -1
  293. package/dist/src/view/viewFactory.js +1 -2
  294. package/dist/src/view/viewIdentityRegistry.d.ts +37 -0
  295. package/dist/src/view/viewIdentityRegistry.d.ts.map +1 -0
  296. package/dist/src/view/viewIdentityRegistry.js +71 -0
  297. package/dist/src/view/viewMutationAcidTestUtils.d.ts +112 -0
  298. package/dist/src/view/viewMutationAcidTestUtils.d.ts.map +1 -0
  299. package/dist/src/view/viewMutationAcidTestUtils.js +234 -0
  300. package/dist/src/view/viewMutationApi.d.ts +42 -0
  301. package/dist/src/view/viewMutationApi.d.ts.map +1 -0
  302. package/dist/src/view/viewMutationApi.js +811 -0
  303. package/dist/src/view/viewSelectors.d.ts +10 -0
  304. package/dist/src/view/viewSelectors.d.ts.map +1 -1
  305. package/dist/src/view/viewSelectors.js +23 -1
  306. package/package.json +4 -4
  307. package/dist/bundle/esm-0dYHNV_D.js +0 -121
  308. package/dist/bundle/esm-C49STiCR.js +0 -1248
  309. package/dist/bundle/esm-CscjKVDc.js +0 -1426
  310. package/dist/bundle/esm-CuMSzCHy.js +0 -298
  311. package/dist/bundle/esm-DMXpJXM4.js +0 -369
  312. package/dist/src/view/title.d.ts +0 -13
  313. package/dist/src/view/title.d.ts.map +0 -1
  314. package/dist/src/view/title.js +0 -154
  315. /package/dist/bundle/{AbortablePromiseCache-3gHJdF3E.js → AbortablePromiseCache-BTmAcN-t.js} +0 -0
  316. /package/dist/bundle/{esm-CuVa5T98.js → esm-VvpZ9hsq.js} +0 -0
  317. /package/dist/bundle/{chunk-DmhlhrBa.js → rolldown-runtime-Dy4uBu1J.js} +0 -0
@@ -1,9 +1,13 @@
1
1
  /**
2
- * @extends {TabixSource<import("gff-nostream").GFF3Feature>}
2
+ * @extends {TabixSource<import("gff-nostream").GFF3Feature, import("gff-nostream")>}
3
3
  */
4
- export default class Gff3Source extends TabixSource<import("gff-nostream").GFF3Feature> {
4
+ export default class Gff3Source extends TabixSource<import("gff-nostream").GFF3Feature, typeof import("gff-nostream")> {
5
5
  constructor(params: import("../../../spec/data.js").TabixData, view: import("../../../view/view.js").default);
6
- #private;
6
+ /**
7
+ * @param {string} header
8
+ * @returns {Promise<import("gff-nostream")>}
9
+ */
10
+ _createParser(header: string): Promise<typeof import("gff-nostream")>;
7
11
  }
8
12
  import TabixSource from "./tabixSource.js";
9
13
  //# sourceMappingURL=gff3Source.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gff3Source.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/gff3Source.js"],"names":[],"mappings":"AAGA;;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;;IAKI;;;OAGG;IACH,sBAHW,MAAM,GACJ,OAAO,CAAC,6BAAsB,CAAC,CAI3C;CAWJ;wBA3BuB,kBAAkB"}
@@ -2,28 +2,27 @@ import { registerBuiltInLazyDataSource } from "./lazyDataSourceRegistry.js";
2
2
  import TabixSource from "./tabixSource.js";
3
3
 
4
4
  /**
5
- * @extends {TabixSource<import("gff-nostream").GFF3Feature>}
5
+ * @extends {TabixSource<import("gff-nostream").GFF3Feature, import("gff-nostream")>}
6
6
  */
7
7
  export default class Gff3Source extends TabixSource {
8
- /** @type {import("gff-nostream")} */
9
- #gff;
10
-
11
8
  get label() {
12
9
  return "gff3Source";
13
10
  }
14
11
 
15
12
  /**
16
13
  * @param {string} header
14
+ * @returns {Promise<import("gff-nostream")>}
17
15
  */
18
- async _handleHeader(header) {
19
- this.#gff = await import("gff-nostream");
16
+ async _createParser(header) {
17
+ return await import("gff-nostream");
20
18
  }
21
19
 
22
20
  /**
23
21
  * @param {string[]} lines
22
+ * @param {import("gff-nostream")} gff
24
23
  */
25
- _parseFeatures(lines) {
26
- const features = this.#gff?.parseStringSync(lines.join("\n"));
24
+ _parseFeatures(lines, gff) {
25
+ const features = gff.parseStringSync(lines.join("\n"));
27
26
 
28
27
  return features;
29
28
  }
@@ -5,8 +5,8 @@ export default class IndexedFastaSource extends SingleAxisWindowedSource {
5
5
  */
6
6
  constructor(params: import("../../../spec/data.js").IndexedFastaData, view: import("../../../view/view.js").default);
7
7
  params: import("../../../spec/data.js").IndexedFastaData;
8
- initializedPromise: Promise<any>;
9
8
  fasta: import("@gmod/indexedfasta").IndexedFasta;
9
+ #private;
10
10
  }
11
11
  import SingleAxisWindowedSource from "./singleAxisWindowedSource.js";
12
12
  //# sourceMappingURL=indexedFastaSource.d.ts.map
@@ -1 +1 @@
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
+ {"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,EAuBjD;IATG,yDAAgC;IAmChC,iDAGE;;CAgCT;qCAzFoC,+BAA+B"}
@@ -1,4 +1,4 @@
1
- import addBaseUrl from "../../../utils/addBaseUrl.js";
1
+ import { normalizeSingleUrlDescriptor } from "../urlDescriptor.js";
2
2
  import { registerBuiltInLazyDataSource } from "./lazyDataSourceRegistry.js";
3
3
  import SingleAxisWindowedSource from "./singleAxisWindowedSource.js";
4
4
 
@@ -27,30 +27,39 @@ export default class IndexedFastaSource extends SingleAxisWindowedSource {
27
27
 
28
28
  this.setupDebouncing(this.params);
29
29
 
30
- this.initializedPromise = new Promise((resolve) => {
31
- Promise.all([
32
- import("@gmod/indexedfasta"),
33
- import("generic-filehandle2"),
34
- ]).then(([{ IndexedFasta }, { RemoteFile }]) => {
35
- const withBase = (/** @type {string} */ uri) =>
36
- new RemoteFile(addBaseUrl(uri, this.view.getBaseUrl()));
37
-
38
- this.fasta = new IndexedFasta({
39
- fasta: withBase(this.params.url),
40
- fai: withBase(
41
- this.params.indexUrl ?? this.params.url + ".fai"
42
- ),
43
- });
44
-
45
- resolve();
46
- });
47
- });
30
+ this.#initialize();
48
31
  }
49
32
 
50
33
  get label() {
51
34
  return "bigWigSource";
52
35
  }
53
36
 
37
+ #initialize() {
38
+ this.initializedPromise = this.#doInitialize();
39
+ return this.initializedPromise;
40
+ }
41
+
42
+ async #doInitialize() {
43
+ const descriptor = await normalizeSingleUrlDescriptor(
44
+ {
45
+ url: this.params.url,
46
+ indexUrl: this.params.indexUrl,
47
+ baseUrl: this.view.getBaseUrl(),
48
+ paramRuntime: this.paramRuntime,
49
+ },
50
+ "IndexedFastaSource"
51
+ );
52
+ const [{ IndexedFasta }, { RemoteFile }] = await Promise.all([
53
+ import("@gmod/indexedfasta"),
54
+ import("generic-filehandle2"),
55
+ ]);
56
+
57
+ this.fasta = new IndexedFasta({
58
+ fasta: new RemoteFile(descriptor.url),
59
+ fai: new RemoteFile(descriptor.indexUrl ?? descriptor.url + ".fai"),
60
+ });
61
+ }
62
+
54
63
  /**
55
64
  * @param {number[]} interval linearized domain
56
65
  */
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @param {import("../../../view/view.js").default} view
3
+ * @param {import("../../../spec/channel.js").ChannelWithScale} channel
4
+ */
5
+ export function findLegendScaleResolution(view: import("../../../view/view.js").default, channel: import("../../../spec/channel.js").ChannelWithScale): import("../../../scales/scaleResolution.js").default;
6
+ export default class LegendEntriesSource extends DataSource {
7
+ /**
8
+ * @param {import("../../../spec/data.js").LegendEntriesData} params
9
+ * @param {import("../../../view/view.js").default} view
10
+ */
11
+ constructor(params: import("../../../spec/data.js").LegendEntriesData, view: import("../../../view/view.js").default);
12
+ params: import("../../../spec/data.js").LegendEntriesData;
13
+ scaleResolution: import("../../../scales/scaleResolution.js").default;
14
+ /**
15
+ * Defers size-entry updates caused by scale range changes. The live scale
16
+ * still updates marks; only the layout helper fields are republished later.
17
+ *
18
+ * @returns {() => void}
19
+ */
20
+ suspendRangeUpdates(): () => void;
21
+ #private;
22
+ }
23
+ import DataSource from "../dataSource.js";
24
+ //# sourceMappingURL=legendEntriesSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legendEntriesSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/legendEntriesSource.js"],"names":[],"mappings":"AAiMA;;;GAGG;AACH,gDAHW,OAAO,uBAAuB,EAAE,OAAO,WACvC,OAAO,0BAA0B,EAAE,gBAAgB,wDAW7D;AAhMD;IAUI;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,iBAAiB,QACjD,OAAO,uBAAuB,EAAE,OAAO,EAmCjD;IA9BG,0DAAoB;IACpB,sEAAsE;IA4C1E;;;;;OAKG;IACH,uBAFa,MAAM,IAAI,CAQtB;;CAuGJ;uBAxLsB,kBAAkB"}
@@ -0,0 +1,217 @@
1
+ import { format as numberFormat } from "d3-format";
2
+
3
+ import { tickFormat, tickValues, validTicks } from "../../../scale/ticks.js";
4
+ import { shallowArrayEquals } from "../../../utils/arrayUtils.js";
5
+ import { createDiscreteLegendEntries } from "../../../view/legend/legendEntries.js";
6
+ import { isChromeView } from "../../../view/viewSelectors.js";
7
+ import Suspension from "../../../utils/suspension.js";
8
+ import DataSource from "../dataSource.js";
9
+ import { registerBuiltInLazyDataSource } from "./lazyDataSourceRegistry.js";
10
+
11
+ const DEFAULT_QUANTITATIVE_ENTRY_COUNT = 5;
12
+ const LEGEND_SYMBOL_SIZE_FIELD = "_legendSymbolSize";
13
+ const LEGEND_STROKE_WIDTH_FIELD = "_legendStrokeWidth";
14
+
15
+ export default class LegendEntriesSource extends DataSource {
16
+ /** @type {import("../../../spec/channel.js").Scalar[] | undefined} */
17
+ #domain = undefined;
18
+
19
+ #rangeUpdatePending = false;
20
+
21
+ #rangeUpdateSuspension = new Suspension(() =>
22
+ this.#flushPendingRangeUpdate()
23
+ );
24
+
25
+ /**
26
+ * @param {import("../../../spec/data.js").LegendEntriesData} params
27
+ * @param {import("../../../view/view.js").default} view
28
+ */
29
+ constructor(params, view) {
30
+ super(view);
31
+
32
+ this.params = params;
33
+ this.scaleResolution = findLegendScaleResolution(view, params.channel);
34
+ if (!this.scaleResolution) {
35
+ throw new Error(
36
+ `The legend entries data source cannot find a resolved scale for channel "${params.channel}".`
37
+ );
38
+ }
39
+
40
+ const publish = () => this.#publishEntries();
41
+ this.scaleResolution.addEventListener("domain", publish);
42
+ if (params.channel == "size") {
43
+ const publishSizeEntries = () => {
44
+ if (this.#deferRangeUpdateIfSuspended()) {
45
+ return;
46
+ }
47
+
48
+ this.#domain = undefined;
49
+ this.#publishEntries();
50
+ };
51
+ this.scaleResolution.addEventListener("range", publishSizeEntries);
52
+ this.view.registerDisposer(() =>
53
+ this.scaleResolution.removeEventListener(
54
+ "range",
55
+ publishSizeEntries
56
+ )
57
+ );
58
+ }
59
+ this.view.registerDisposer(() =>
60
+ this.scaleResolution.removeEventListener("domain", publish)
61
+ );
62
+ }
63
+
64
+ get label() {
65
+ return "legendEntriesSource";
66
+ }
67
+
68
+ async load() {
69
+ if (this.#deferRangeUpdateIfSuspended()) {
70
+ return;
71
+ }
72
+
73
+ this.#domain = undefined;
74
+ this.#publishEntries();
75
+ }
76
+
77
+ /**
78
+ * Defers size-entry updates caused by scale range changes. The live scale
79
+ * still updates marks; only the layout helper fields are republished later.
80
+ *
81
+ * @returns {() => void}
82
+ */
83
+ suspendRangeUpdates() {
84
+ if (this.params.channel != "size") {
85
+ return () => undefined;
86
+ }
87
+
88
+ return this.#rangeUpdateSuspension.suspend();
89
+ }
90
+
91
+ #deferRangeUpdateIfSuspended() {
92
+ if (
93
+ this.params.channel != "size" ||
94
+ !this.#rangeUpdateSuspension.active ||
95
+ !this.#domain
96
+ ) {
97
+ return false;
98
+ }
99
+
100
+ this.#rangeUpdatePending = true;
101
+ return true;
102
+ }
103
+
104
+ #flushPendingRangeUpdate() {
105
+ if (this.#rangeUpdatePending) {
106
+ this.#rangeUpdatePending = false;
107
+ this.#domain = undefined;
108
+ this.#publishEntries();
109
+ }
110
+ }
111
+
112
+ #publishEntries() {
113
+ const domain = this.scaleResolution.getDomain();
114
+
115
+ if (!this.#domain || !shallowArrayEquals(domain, this.#domain)) {
116
+ this.#domain = domain.slice();
117
+ this.reset();
118
+ this.beginBatch({ type: "file" });
119
+
120
+ for (const datum of this.#createEntries()) {
121
+ this._propagate(datum);
122
+ }
123
+
124
+ this.complete();
125
+ }
126
+ }
127
+
128
+ #createEntries() {
129
+ const entries =
130
+ this.params.dataType == "quantitative"
131
+ ? this.#createQuantitativeEntries()
132
+ : this.#createDiscreteEntries();
133
+
134
+ if (this.params.channel == "size") {
135
+ const scale = this.scaleResolution.getScale();
136
+ for (const entry of entries) {
137
+ if (this.params.sizeMode == "strokeWidth") {
138
+ /** @type {Record<string, any>} */ (entry)[
139
+ LEGEND_STROKE_WIDTH_FIELD
140
+ ] = scale(entry.value);
141
+ } else {
142
+ /** @type {Record<string, any>} */ (entry)[
143
+ LEGEND_SYMBOL_SIZE_FIELD
144
+ ] = scale(entry.value);
145
+ }
146
+ }
147
+ }
148
+
149
+ return entries;
150
+ }
151
+
152
+ #createDiscreteEntries() {
153
+ const format = this.params.format;
154
+ const formatter = format
155
+ ? (
156
+ /** @type {import("../../../spec/channel.js").Scalar} */ value
157
+ ) => numberFormat(format)(Number(value))
158
+ : undefined;
159
+
160
+ const entries = createDiscreteLegendEntries(
161
+ this.scaleResolution,
162
+ formatter
163
+ );
164
+
165
+ if (!this.params.values) {
166
+ return entries;
167
+ }
168
+
169
+ const entriesByValue = new Map(
170
+ entries.map((entry) => [entry.value, entry])
171
+ );
172
+
173
+ return this.params.values.flatMap((value) =>
174
+ entriesByValue.has(value) ? [entriesByValue.get(value)] : []
175
+ );
176
+ }
177
+
178
+ #createQuantitativeEntries() {
179
+ const scale = this.scaleResolution.getScale();
180
+ const count = this.params.count ?? DEFAULT_QUANTITATIVE_ENTRY_COUNT;
181
+ const format = tickFormat(scale, count, this.params.format);
182
+ const values = this.params.values
183
+ ? validTicks(scale, this.params.values, count)
184
+ : tickValues(scale, count);
185
+
186
+ return values.map((value, index) => ({
187
+ value,
188
+ label: format(value),
189
+ _legendIndex: index,
190
+ }));
191
+ }
192
+ }
193
+
194
+ /**
195
+ * @param {import("../../../view/view.js").default} view
196
+ * @param {import("../../../spec/channel.js").ChannelWithScale} channel
197
+ */
198
+ export function findLegendScaleResolution(view, channel) {
199
+ let parent = view.dataParent;
200
+ while (parent && isChromeView(parent)) {
201
+ parent = parent.dataParent;
202
+ }
203
+
204
+ return (
205
+ parent?.getScaleResolution(channel) ?? view.getScaleResolution(channel)
206
+ );
207
+ }
208
+
209
+ /**
210
+ * @param {import("../../../spec/data.js").LazyDataParams} params
211
+ * @returns {params is import("../../../spec/data.js").LegendEntriesData}
212
+ */
213
+ function isLegendEntriesSource(params) {
214
+ return params?.type == "legendEntries";
215
+ }
216
+
217
+ registerBuiltInLazyDataSource(isLegendEntriesSource, LegendEntriesSource);
@@ -0,0 +1,30 @@
1
+ export default class LegendGradientSource extends LegendGradientBaseSource {
2
+ #private;
3
+ }
4
+ export type NormalizedPositionScale = ((value: number) => number) & {
5
+ invert: (position: number) => number;
6
+ };
7
+ export type LegendGradientSourceData = import("../../../spec/data.js").LegendGradientData | import("../../../spec/data.js").LegendGradientTicksData;
8
+ export type QuantizeScale = import("../../../types/encoder.js").VegaScale & {
9
+ range: () => unknown[];
10
+ invertExtent: (value: unknown) => [unknown, unknown];
11
+ thresholds: () => unknown[];
12
+ };
13
+ declare class LegendGradientBaseSource extends DataSource {
14
+ /**
15
+ * @param {LegendGradientSourceData} params
16
+ * @param {import("../../../view/view.js").default} view
17
+ */
18
+ constructor(params: LegendGradientSourceData, view: import("../../../view/view.js").default);
19
+ params: LegendGradientSourceData;
20
+ scaleResolution: import("../../../scales/scaleResolution.js").default;
21
+ /**
22
+ * @param {number} start
23
+ * @param {number} stop
24
+ */
25
+ publishData(start: number, stop: number): void;
26
+ #private;
27
+ }
28
+ import DataSource from "../dataSource.js";
29
+ export {};
30
+ //# sourceMappingURL=legendGradientSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legendGradientSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/legendGradientSource.js"],"names":[],"mappings":"AAuOA;;CAiFC;sCA7SY,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG;IAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;CAAE;uCACtE,OAAO,uBAAuB,EAAE,kBAAkB,GAAG,OAAO,uBAAuB,EAAE,uBAAuB;4BAC5G,OAAO,2BAA2B,EAAE,SAAS,GAAG;IACtD,KAAK,EAAE,MAAM,OAAO,EAAE,CAAC;IACvB,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrD,UAAU,EAAE,MAAM,OAAO,EAAE,CAAA;CAC9B;AAwJJ;IAII;;;OAGG;IACH,oBAHW,wBAAwB,QACxB,OAAO,uBAAuB,EAAE,OAAO,EAkBjD;IAbG,iCAAoB;IACpB,sEAAsE;IAuC1E;;;OAGG;IACH,mBAHW,MAAM,QACN,MAAM,QAMhB;;CACJ;uBAjOsB,kBAAkB"}