@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
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Runs the shared capture/body/bubble interaction frame for a container view.
3
+ *
4
+ * @param {import("./view.js").default} view
5
+ * @param {import("../utils/interaction.js").default} event
6
+ * @param {() => void} handler
7
+ */
8
+ export function propagateInteraction(view: import("./view.js").default, event: import("../utils/interaction.js").default, handler: () => void): void;
9
+ /**
10
+ * Propagates an interaction to a single hit-tested surface and optionally runs
11
+ * a follow-up action such as zoom handling.
12
+ *
13
+ * @param {import("../utils/interaction.js").default} event
14
+ * @param {() => boolean} hitTest
15
+ * @param {() => void} propagate
16
+ * @param {() => void} [afterPropagate]
17
+ * @returns {boolean}
18
+ */
19
+ export function propagateInteractionSurface(event: import("../utils/interaction.js").default, hitTest: () => boolean, propagate: () => void, afterPropagate?: () => void): boolean;
20
+ //# sourceMappingURL=interactionRouting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactionRouting.d.ts","sourceRoot":"","sources":["../../../src/view/interactionRouting.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,2CAJW,OAAO,WAAW,EAAE,OAAO,SAC3B,OAAO,yBAAyB,EAAE,OAAO,WACzC,MAAM,IAAI,QAgBpB;AAED;;;;;;;;;GASG;AACH,mDANW,OAAO,yBAAyB,EAAE,OAAO,WACzC,MAAM,OAAO,aACb,MAAM,IAAI,mBACV,MAAM,IAAI,GACR,OAAO,CAqBnB"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Runs the shared capture/body/bubble interaction frame for a container view.
3
+ *
4
+ * @param {import("./view.js").default} view
5
+ * @param {import("../utils/interaction.js").default} event
6
+ * @param {() => void} handler
7
+ */
8
+ export function propagateInteraction(view, event, handler) {
9
+ view.handleInteraction(event, true);
10
+
11
+ if (event.stopped) {
12
+ return;
13
+ }
14
+
15
+ handler();
16
+
17
+ if (event.stopped) {
18
+ return;
19
+ }
20
+
21
+ view.handleInteraction(event, false);
22
+ }
23
+
24
+ /**
25
+ * Propagates an interaction to a single hit-tested surface and optionally runs
26
+ * a follow-up action such as zoom handling.
27
+ *
28
+ * @param {import("../utils/interaction.js").default} event
29
+ * @param {() => boolean} hitTest
30
+ * @param {() => void} propagate
31
+ * @param {() => void} [afterPropagate]
32
+ * @returns {boolean}
33
+ */
34
+ export function propagateInteractionSurface(
35
+ event,
36
+ hitTest,
37
+ propagate,
38
+ afterPropagate
39
+ ) {
40
+ if (!hitTest()) {
41
+ return false;
42
+ }
43
+
44
+ propagate();
45
+
46
+ if (event.stopped) {
47
+ return true;
48
+ }
49
+
50
+ afterPropagate?.();
51
+
52
+ return true;
53
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"layerView.d.ts","sourceRoot":"","sources":["../../../src/view/layerView.js"],"names":[],"mappings":"AAMA;;;GAGG;AACH,+BAHoD,KAAK,SAA5C,OAAQ,iBAAiB,EAAE,SAAU;IAW9C;;;;;;;;OAQG;IACH,kBAPW,KAAK,WACL,OAAO,yBAAyB,EAAE,OAAO,gBACzC,aAAa,cACb,OAAO,WAAW,EAAE,OAAO,QAC3B,MAAM,YACN,OAAO,WAAW,EAAE,WAAW,EAWzC;IAkCD;;;;;;OAMG;IACH,wBAJW,OAAO,iBAAiB,EAAE,SAAS,GAAG,OAAO,iBAAiB,EAAE,QAAQ,GAAG,OAAO,iBAAiB,EAAE,UAAU,UAC/G,MAAM,GACJ,OAAO,CAAC,SAAS,GAAG,OAAO,eAAe,EAAE,OAAO,CAAC,CAMhE;IAED;;;;OAIG;IACH,qBAFW,MAAM,iBAIhB;IA6CD,yIAEC;;CA6CJ;0BAtLyB,oBAAoB"}
1
+ {"version":3,"file":"layerView.d.ts","sourceRoot":"","sources":["../../../src/view/layerView.js"],"names":[],"mappings":"AAMA;;;GAGG;AACH,+BAHoD,KAAK,SAA5C,OAAQ,iBAAiB,EAAE,SAAU;IAW9C;;;;;;;;OAQG;IACH,kBAPW,KAAK,WACL,OAAO,yBAAyB,EAAE,OAAO,gBACzC,aAAa,cACb,OAAO,WAAW,EAAE,OAAO,QAC3B,MAAM,YACN,OAAO,WAAW,EAAE,WAAW,EAQzC;IAqCD;;;;;;OAMG;IACH,wBAJW,OAAO,iBAAiB,EAAE,SAAS,GAAG,OAAO,iBAAiB,EAAE,QAAQ,GAAG,OAAO,iBAAiB,EAAE,UAAU,UAC/G,MAAM,GACJ,OAAO,CAAC,SAAS,GAAG,OAAO,eAAe,EAAE,OAAO,CAAC,CAMhE;IAED;;;;OAIG;IACH,qBAFW,MAAM,iBAIhB;IAgDD,yIAEC;;CA6CJ;0BAzLyB,oBAAoB"}
@@ -26,10 +26,7 @@ export default class LayerView extends ContainerView {
26
26
  * @param {import("./view.js").ViewOptions} [options]
27
27
  */
28
28
  constructor(spec, context, layoutParent, dataParent, name, options) {
29
- super(spec, context, layoutParent, dataParent, name, {
30
- layersChildren: true,
31
- ...options,
32
- });
29
+ super(spec, context, layoutParent, dataParent, name, options);
33
30
 
34
31
  this.spec = spec;
35
32
 
@@ -61,6 +58,9 @@ export default class LayerView extends ContainerView {
61
58
  );
62
59
  // TODO: Add view to exception
63
60
  }
61
+ },
62
+ {
63
+ layoutSizeParams: "inherit",
64
64
  }
65
65
  )
66
66
  )
@@ -130,6 +130,9 @@ export default class LayerView extends ContainerView {
130
130
  this.#children.splice(index, 1);
131
131
  },
132
132
  defaultName: () => this.getNextAutoName("layer"),
133
+ createViewOptions: {
134
+ layoutSizeParams: "inherit",
135
+ },
133
136
  });
134
137
  }
135
138
 
@@ -168,16 +171,16 @@ export default class LayerView extends ContainerView {
168
171
  }
169
172
 
170
173
  /**
171
- * @param {import("../utils/interactionEvent.js").default} event
174
+ * @param {import("../utils/interaction.js").default} event
172
175
  */
173
- propagateInteractionEvent(event) {
174
- this.handleInteractionEvent(undefined, event, true);
176
+ propagateInteraction(event) {
177
+ this.handleInteraction(event, true);
175
178
  for (let i = this.#children.length - 1; i >= 0; i--) {
176
- this.#children[i].propagateInteractionEvent(event);
179
+ this.#children[i].propagateInteraction(event);
177
180
  if (event.stopped) {
178
181
  return;
179
182
  }
180
183
  }
181
- this.handleInteractionEvent(undefined, event, false);
184
+ this.handleInteraction(event, false);
182
185
  }
183
186
  }
@@ -67,7 +67,7 @@ export default class Grid {
67
67
  * @param {number} row
68
68
  */
69
69
  getCellIndex(col, row) {
70
- let i = 0;
70
+ let i;
71
71
 
72
72
  if (this.maxCols == Infinity) {
73
73
  i = row == 0 ? col : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"bufferedViewRenderingContext.d.ts","sourceRoot":"","sources":["../../../../src/view/renderingContext/bufferedViewRenderingContext.js"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AAEH;;;GAGG;AACH;IA2BI;;;OAGG;IACH,2BAHW,OAAO,0BAA0B,EAAE,sBAAsB,mBACzD,4BAA4B,EActC;IAyCD;;;OAGG;IACH,eAmCC;;CA8EJ;;iBArNS,OAAO,yBAAyB,EAAE,OAAO;;;;gBACzC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC;sBAC/B,MAAM;sBACN,OAAO,SAAS,EAAE,eAAe;;;;;iBACjC,MAAM;;iCATiB,2BAA2B"}
1
+ {"version":3,"file":"bufferedViewRenderingContext.d.ts","sourceRoot":"","sources":["../../../../src/view/renderingContext/bufferedViewRenderingContext.js"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AAEH;;;GAGG;AACH;IA2BI;;;OAGG;IACH,2BAHW,OAAO,0BAA0B,EAAE,sBAAsB,mBACzD,4BAA4B,EActC;IAyCD;;;OAGG;IACH,eAmCC;;CA4EJ;;iBAnNS,OAAO,yBAAyB,EAAE,OAAO;;;;gBACzC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC;sBAC/B,MAAM;sBACN,OAAO,SAAS,EAAE,eAAe;;;;;iBACjC,MAAM;;iCATiB,2BAA2B"}
@@ -183,7 +183,6 @@ export default class BufferedViewRenderingContext extends ViewRenderingContext {
183
183
  continue;
184
184
  }
185
185
 
186
- // eslint-disable-next-line no-loop-func
187
186
  this.#batch.push(() => {
188
187
  enabled = mark.unitView.getEffectiveOpacity() > 0;
189
188
  });
@@ -201,7 +200,6 @@ export default class BufferedViewRenderingContext extends ViewRenderingContext {
201
200
  // Render each facet
202
201
  if (!coords.equals(previousCoords)) {
203
202
  this.#batch.push(
204
- // eslint-disable-next-line no-loop-func
205
203
  ifEnabled(() => {
206
204
  // Suppress rendering if viewport is outside the clipRect
207
205
  viewportVisible = mark.setViewport(
@@ -3,23 +3,37 @@
3
3
  * @returns
4
4
  */
5
5
  export function createTestViewContext(viewFactoryOptions?: import("./viewFactory.js").ViewFactoryOptions): import("../types/viewContext.js").default;
6
- export function create<V extends import("./view.js").default>(spec: ViewSpec, viewClass: {
6
+ /**
7
+ * @param {import("./viewFactory.js").ViewFactoryOptions} [viewFactoryOptions]
8
+ * @returns {BroadcastingViewContext}
9
+ */
10
+ export function createBroadcastingTestViewContext(viewFactoryOptions?: import("./viewFactory.js").ViewFactoryOptions): BroadcastingViewContext;
11
+ export function create<V extends import("./view.js").default>(spec: RootSpec, viewClass: {
7
12
  new (...args: any[]): V;
8
13
  }, ViewFactoryOptions?: import("./viewFactory.js").ViewFactoryOptions): Promise<V>;
9
- export function createAndInitialize<V extends import("./view.js").default>(spec: ViewSpec, viewClass: {
14
+ export function createAndInitialize<V extends import("./view.js").default>(spec: RootSpec, viewClass: {
10
15
  new (...args: any[]): V;
11
16
  }, context?: ViewContext, options?: {
12
17
  noData: boolean;
13
18
  implicitRoot: boolean;
14
19
  }): Promise<V>;
20
+ export { createHeadlessEngine };
15
21
  /**
16
22
  * Utils for Jest tests
17
23
  * TODO: Find a better place and convention
18
24
  */
19
- export type ViewSpec = import("../spec/view.js").ViewSpec;
25
+ export type RootSpec = import("../spec/root.js").RootSpec;
20
26
  /**
21
27
  * Utils for Jest tests
22
28
  * TODO: Find a better place and convention
23
29
  */
24
30
  export type ViewContext = import("../types/viewContext.js").default;
31
+ /**
32
+ * Utils for Jest tests
33
+ * TODO: Find a better place and convention
34
+ */
35
+ export type BroadcastingViewContext = ViewContext & {
36
+ emitBroadcast: (root: import("./view.js").default, type: import("../genomeSpy.js").BroadcastEventType, payload?: any) => void;
37
+ };
38
+ import { createHeadlessEngine } from "../genomeSpy/headlessBootstrap.js";
25
39
  //# sourceMappingURL=testUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../../src/view/testUtils.js"],"names":[],"mappings":"AAoBA;;;GAGG;AACH,2DAHW,OAAO,kBAAkB,EAAE,kBAAkB,6CAoEvD;AAGS,uBAAC,CAAC,SAAS,OAAO,WAAW,EAAE,OAAO,QAAQ,QAAQ,aAAa;IAAE,KAAI,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;CAAE,uBAAuB,OAAO,kBAAkB,EAAE,kBAAkB,GAAK,OAAO,CAAC,CAAC,CAAC,CAAA;AAgBhL,oCAAC,CAAC,SAAS,OAAO,WAAW,EAAE,OAAO,QAAQ,QAAQ,aAAa;IAAE,KAAI,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;CAAE,YAAY,WAAW,YAAY;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAC,GAAK,OAAO,CAAC,CAAC,CAAC,CAAA;;;;;uBAxGpL,OAAO,iBAAiB,EAAE,QAAQ;;;;;0BAClC,OAAO,yBAAyB,EAAE,OAAO"}
1
+ {"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../../src/view/testUtils.js"],"names":[],"mappings":"AA4BA;;;GAGG;AACH,2DAHW,OAAO,kBAAkB,EAAE,kBAAkB,6CAOvD;AAED;;;GAGG;AACH,uEAHW,OAAO,kBAAkB,EAAE,kBAAkB,GAC3C,uBAAuB,CAmCnC;AAGS,uBAAC,CAAC,SAAS,OAAO,WAAW,EAAE,OAAO,QAAQ,QAAQ,aAAa;IAAE,KAAI,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;CAAE,uBAAuB,OAAO,kBAAkB,EAAE,kBAAkB,GAAK,OAAO,CAAC,CAAC,CAAC,CAAA;AAqBhL,oCAAC,CAAC,SAAS,OAAO,WAAW,EAAE,OAAO,QAAQ,QAAQ,aAAa;IAAE,KAAI,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;CAAE,YAAY,WAAW,YAAY;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAC,GAAK,OAAO,CAAC,CAAC,CAAC,CAAA;;;;;;uBA/FpL,OAAO,iBAAiB,EAAE,QAAQ;;;;;0BAClC,OAAO,yBAAyB,EAAE,OAAO;;;;;sCACzC,WAAW,GAAG;IACtB,aAAa,EAAE,CACb,IAAI,EAAE,OAAO,WAAW,EAAE,OAAO,EACjC,IAAI,EAAE,OAAO,iBAAiB,EAAE,kBAAkB,EAClD,OAAO,CAAC,EAAE,GAAG,KACV,IAAI,CAAA;CACV;qCAcG,mCAAmC"}
@@ -2,8 +2,15 @@
2
2
  * Utils for Jest tests
3
3
  * TODO: Find a better place and convention
4
4
  *
5
- * @typedef {import("../spec/view.js").ViewSpec} ViewSpec
5
+ * @typedef {import("../spec/root.js").RootSpec} RootSpec
6
6
  * @typedef {import("../types/viewContext.js").default} ViewContext
7
+ * @typedef {ViewContext & {
8
+ * emitBroadcast: (
9
+ * root: import("./view.js").default,
10
+ * type: import("../genomeSpy.js").BroadcastEventType,
11
+ * payload?: any
12
+ * ) => void
13
+ * }} BroadcastingViewContext
7
14
  */
8
15
 
9
16
  import { checkForDuplicateScaleNames } from "./viewUtils.js";
@@ -11,90 +18,74 @@ import {
11
18
  initializeViewSubtree,
12
19
  loadViewSubtreeData,
13
20
  } from "../data/flowInit.js";
14
- import DataFlow from "../data/dataFlow.js";
15
- import { VIEW_ROOT_NAME, ViewFactory } from "./viewFactory.js";
16
- import GenomeStore from "../genome/genomeStore.js";
17
- import BmFontManager from "../fonts/bmFontManager.js";
21
+ import { VIEW_ROOT_NAME } from "./viewFactory.js";
18
22
  import UnitView from "./unitView.js";
19
23
  import ContainerView from "./containerView.js";
24
+ import {
25
+ createHeadlessEngine,
26
+ createHeadlessViewContext,
27
+ } from "../genomeSpy/headlessBootstrap.js";
20
28
 
21
29
  /**
22
30
  * @param {import("./viewFactory.js").ViewFactoryOptions} [viewFactoryOptions]
23
31
  * @returns
24
32
  */
25
33
  export function createTestViewContext(viewFactoryOptions = {}) {
26
- const viewFactory = new ViewFactory({
27
- allowImport: false,
28
- wrapRoot: false,
29
- ...viewFactoryOptions,
30
- });
31
-
32
- const genomeStore = new GenomeStore(".");
33
- genomeStore.initialize({
34
- name: "test",
35
- contigs: [
36
- { name: "chr1", size: 20 },
37
- { name: "chr2", size: 30 },
38
- ],
34
+ return createHeadlessViewContext({
35
+ viewFactoryOptions,
39
36
  });
37
+ }
40
38
 
41
- const dataFlow = new DataFlow();
42
-
43
- // @ts-expect-error
44
- const c = /** @type {ViewContext} */ ({
45
- createOrImportView: async function (
46
- spec,
47
- parent,
48
- dataParent,
49
- defaultName
50
- ) {
51
- return viewFactory.createOrImportView(
52
- spec,
53
- this,
54
- parent,
55
- dataParent,
56
- defaultName
57
- );
58
- },
59
-
60
- dataFlow,
61
- genomeStore,
62
-
63
- fontManager: new BmFontManager(),
64
- animator: /** @type {import("../utils/animator.js").default} */ (
65
- /** @type {any} */ ({
66
- requestRender: /** @type {() => void} */ (() => undefined),
67
- requestTransition:
68
- /** @type {(callback: () => void) => void} */ (
69
- (callback) => callback()
70
- ),
71
- transition: (/** @type {any} */ options) => {
72
- const to = typeof options.to === "number" ? options.to : 1;
73
- options.onUpdate(to);
74
- return Promise.resolve();
75
- },
76
- })
77
- ),
78
-
79
- requestLayoutReflow: () => undefined,
80
-
81
- isViewConfiguredVisible: () => true,
82
-
83
- addBroadcastListener: () => undefined,
84
- removeBroadcastListener: () => undefined,
85
-
86
- //...partialContext,
87
- });
39
+ /**
40
+ * @param {import("./viewFactory.js").ViewFactoryOptions} [viewFactoryOptions]
41
+ * @returns {BroadcastingViewContext}
42
+ */
43
+ export function createBroadcastingTestViewContext(viewFactoryOptions = {}) {
44
+ const context = /** @type {BroadcastingViewContext} */ (
45
+ createTestViewContext({
46
+ wrapRoot: true,
47
+ ...viewFactoryOptions,
48
+ })
49
+ );
50
+
51
+ /** @type {Map<string, Set<(message: any) => void>>} */
52
+ const listeners = new Map();
53
+
54
+ context.addBroadcastListener = (type, listener) => {
55
+ const typedListeners = listeners.get(type) ?? new Set();
56
+ typedListeners.add(listener);
57
+ listeners.set(type, typedListeners);
58
+ };
59
+
60
+ context.removeBroadcastListener = (type, listener) => {
61
+ listeners.get(type)?.delete(listener);
62
+ };
63
+
64
+ context.emitBroadcast = (root, type, payload) => {
65
+ const message = /** @type {import("./view.js").BroadcastMessage} */ ({
66
+ type,
67
+ payload,
68
+ });
69
+ root.visit((view) => view.handleBroadcast(message));
70
+ for (const listener of listeners.get(type) ?? []) {
71
+ listener(message);
72
+ }
73
+ };
88
74
 
89
- return c;
75
+ return context;
90
76
  }
91
77
 
92
78
  /**
93
- * @type {<V extends import("./view.js").default>(spec: ViewSpec, viewClass: { new(...args: any[]): V }, ViewFactoryOptions?: import("./viewFactory.js").ViewFactoryOptions) => Promise<V>}
79
+ * @type {<V extends import("./view.js").default>(spec: RootSpec, viewClass: { new(...args: any[]): V }, ViewFactoryOptions?: import("./viewFactory.js").ViewFactoryOptions) => Promise<V>}
94
80
  */
95
81
  export async function create(spec, viewClass, viewFactoryOptions = {}) {
96
82
  const c = createTestViewContext(viewFactoryOptions);
97
- const view = await c.createOrImportView(spec, null, null, VIEW_ROOT_NAME);
83
+ const view = await c.createOrImportView(
84
+ /** @type {import("../spec/view.js").ViewSpec} */ (spec),
85
+ null,
86
+ null,
87
+ VIEW_ROOT_NAME
88
+ );
98
89
 
99
90
  if (!(view instanceof viewClass)) {
100
91
  throw new Error("ViewClass and the spec do not match!");
@@ -106,7 +97,7 @@ export async function create(spec, viewClass, viewFactoryOptions = {}) {
106
97
  /**
107
98
  * Creates a view and initializes its data. Does not wrap it in an implicit root view.
108
99
  *
109
- * @type {<V extends import("./view.js").default>(spec: ViewSpec, viewClass: { new(...args: any[]): V }, context?: ViewContext, options?: {noData: boolean, implicitRoot: boolean}) => Promise<V>}
100
+ * @type {<V extends import("./view.js").default>(spec: RootSpec, viewClass: { new(...args: any[]): V }, context?: ViewContext, options?: {noData: boolean, implicitRoot: boolean}) => Promise<V>}
110
101
  */
111
102
  export async function createAndInitialize(spec, viewClass) {
112
103
  const view = await create(spec, viewClass);
@@ -126,3 +117,5 @@ export async function createAndInitialize(spec, viewClass) {
126
117
  await loadViewSubtreeData(view, dataSources);
127
118
  return view;
128
119
  }
120
+
121
+ export { createHeadlessEngine };
@@ -1,6 +1,13 @@
1
1
  /**
2
2
  * @param {string | import("../spec/title.js").Title} title
3
+ * @param {import("../spec/config.js").GenomeSpyConfig[]} [configScopes]
4
+ * @returns {import("../spec/title.js").Title}
5
+ */
6
+ export function resolveTitleSpec(title: string | import("../spec/title.js").Title, configScopes?: import("../spec/config.js").GenomeSpyConfig[]): import("../spec/title.js").Title;
7
+ /**
8
+ * @param {string | import("../spec/title.js").Title} title
9
+ * @param {import("../spec/config.js").GenomeSpyConfig[]} [configScopes]
3
10
  * @returns {import("../spec/view.js").UnitSpec}
4
11
  */
5
- export default function createTitle(title: string | import("../spec/title.js").Title): import("../spec/view.js").UnitSpec;
12
+ export default function createTitle(title: string | import("../spec/title.js").Title, configScopes?: import("../spec/config.js").GenomeSpyConfig[]): import("../spec/view.js").UnitSpec;
6
13
  //# sourceMappingURL=title.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"title.d.ts","sourceRoot":"","sources":["../../../src/view/title.js"],"names":[],"mappings":"AAuDA;;;GAGG;AACH,2CAHW,MAAM,GAAG,OAAO,kBAAkB,EAAE,KAAK,GACvC,OAAO,iBAAiB,EAAE,QAAQ,CA0G9C"}
1
+ {"version":3,"file":"title.d.ts","sourceRoot":"","sources":["../../../src/view/title.js"],"names":[],"mappings":"AAuDA;;;;GAIG;AACH,wCAJW,MAAM,GAAG,OAAO,kBAAkB,EAAE,KAAK,iBACzC,OAAO,mBAAmB,EAAE,eAAe,EAAE,GAC3C,OAAO,kBAAkB,EAAE,KAAK,CAuC5C;AAED;;;;GAIG;AACH,2CAJW,MAAM,GAAG,OAAO,kBAAkB,EAAE,KAAK,iBACzC,OAAO,mBAAmB,EAAE,eAAe,EAAE,GAC3C,OAAO,iBAAiB,EAAE,QAAQ,CAmD9C"}
@@ -1,43 +1,8 @@
1
1
  import { isString } from "vega-util";
2
-
3
- /** @type {Omit<Required<import("../spec/title.js").Title>, "text" | "style">} */
4
- const BASE_TITLE_STYLE = {
5
- anchor: "middle",
6
- frame: "group",
7
- offset: 10,
8
- orient: "top",
9
- align: undefined,
10
- angle: 0,
11
- baseline: "alphabetic",
12
- dx: 0,
13
- dy: 0,
14
- color: undefined,
15
- font: undefined,
16
- fontSize: 12,
17
- fontStyle: "normal",
18
- fontWeight: "normal",
19
- };
20
-
21
- /** @type {Partial<import("../spec/title.js").Title>} */
22
- const TRACK_TITLE_STYLE = {
23
- orient: "left",
24
- anchor: "middle",
25
- align: "right",
26
- baseline: "middle",
27
- angle: 0,
28
- fontSize: 12,
29
- };
30
-
31
- /** @type {Partial<import("../spec/title.js").Title>} */
32
- const OVERLAY_TITLE_STYLE = {
33
- orient: "top",
34
- anchor: "start",
35
- align: "left",
36
- baseline: "top",
37
- offset: -10,
38
- dx: 10,
39
- fontSize: 12,
40
- };
2
+ import {
3
+ getConfiguredStyleConfig,
4
+ getConfiguredTitleConfig,
5
+ } from "../config/titleConfig.js";
41
6
 
42
7
  /** @type {Record<import("../spec/title.js").TitleAnchor, number>} */
43
8
  const ANCHORS = {
@@ -53,46 +18,19 @@ const ANCHOR_TO_ALIGN = {
53
18
  end: "right",
54
19
  };
55
20
 
21
+ const DEFAULT_TITLE_STYLE = "group-title";
22
+
56
23
  /**
57
- * @param {string | import("../spec/title.js").Title} title
58
- * @returns {import("../spec/view.js").UnitSpec}
24
+ * @param {import("../spec/title.js").Title} spec
59
25
  */
60
- export default function createTitle(title) {
61
- if (!title) {
62
- return;
63
- }
64
-
65
- /** @type {import("../spec/title.js").Title} */
66
- const titleSpec = isString(title) ? { text: title } : title;
67
-
68
- if (!titleSpec.text || titleSpec.orient == "none") {
69
- return;
70
- }
71
-
72
- // TODO: Make these configurable
73
- /** @type {Partial<import("../spec/title.js").Title>} */
74
- const config =
75
- {
76
- "track-title": TRACK_TITLE_STYLE,
77
- overlay: OVERLAY_TITLE_STYLE,
78
- }[titleSpec.style] ?? {};
79
-
80
- // TODO: frame prop
81
-
82
- /** @type {import("../spec/title.js").Title} */
83
- const preliminarySpec = {
84
- ...BASE_TITLE_STYLE,
85
- ...config,
86
- ...titleSpec,
87
- };
88
-
26
+ function getTitleOrientMetadata(spec) {
89
27
  /** @type {Partial<import("../spec/title.js").Title>} */
90
28
  let orientConfig = {};
91
29
  let xy = { x: 0, y: 0 };
92
30
 
93
- const anchorPos = ANCHORS[preliminarySpec.anchor ?? "middle"];
31
+ const anchorPos = ANCHORS[spec.anchor ?? "middle"];
94
32
 
95
- switch (preliminarySpec.orient) {
33
+ switch (spec.orient) {
96
34
  case "top":
97
35
  xy = { x: anchorPos, y: 1 };
98
36
  orientConfig = { baseline: "alphabetic", angle: 0 };
@@ -112,16 +50,68 @@ export default function createTitle(title) {
112
50
  default:
113
51
  }
114
52
 
53
+ return { orientConfig, xy };
54
+ }
55
+
56
+ /**
57
+ * @param {string | import("../spec/title.js").Title} title
58
+ * @param {import("../spec/config.js").GenomeSpyConfig[]} [configScopes]
59
+ * @returns {import("../spec/title.js").Title}
60
+ */
61
+ export function resolveTitleSpec(title, configScopes = []) {
62
+ if (!title) {
63
+ return;
64
+ }
65
+
66
+ /** @type {import("../spec/title.js").Title} */
67
+ const titleSpec = isString(title) ? { text: title } : title;
68
+
69
+ if (!titleSpec.text || titleSpec.orient == "none") {
70
+ return;
71
+ }
72
+
73
+ const titleConfig = getConfiguredTitleConfig(configScopes);
74
+ const styleConfig = /** @type {import("../spec/config.js").TitleConfig} */ (
75
+ getConfiguredStyleConfig(
76
+ configScopes,
77
+ titleSpec.style ?? DEFAULT_TITLE_STYLE
78
+ )
79
+ );
80
+
81
+ // TODO: frame prop
82
+
115
83
  /** @type {import("../spec/title.js").Title} */
116
- const spec = {
117
- ...BASE_TITLE_STYLE,
84
+ const preliminarySpec = {
85
+ ...titleConfig,
86
+ ...styleConfig,
87
+ ...titleSpec,
88
+ };
89
+
90
+ const { orientConfig } = getTitleOrientMetadata(preliminarySpec);
91
+
92
+ return {
93
+ ...titleConfig,
118
94
  ...orientConfig,
119
- ...config,
95
+ ...styleConfig,
120
96
  ...titleSpec,
121
97
  };
98
+ }
99
+
100
+ /**
101
+ * @param {string | import("../spec/title.js").Title} title
102
+ * @param {import("../spec/config.js").GenomeSpyConfig[]} [configScopes]
103
+ * @returns {import("../spec/view.js").UnitSpec}
104
+ */
105
+ export default function createTitle(title, configScopes = []) {
106
+ const spec = resolveTitleSpec(title, configScopes);
107
+ if (!spec) {
108
+ return;
109
+ }
110
+
111
+ const { xy } = getTitleOrientMetadata(spec);
122
112
 
123
113
  const offsets = { xOffset: 0, yOffset: 0 };
124
- switch (preliminarySpec.orient) {
114
+ switch (spec.orient) {
125
115
  case "top":
126
116
  offsets.yOffset = -spec.offset;
127
117
  break;
@@ -21,7 +21,7 @@ export default class UnitView<TSpec extends import("../spec/view.js").UnitSpec =
21
21
  constructor(spec: TSpec, context: import("../types/viewContext.js").default, layoutParent: import("./containerView.js").default, dataParent: import("./view.js").default, name: string, options?: import("./view.js").ViewOptions);
22
22
  /** @type {import("../marks/mark.js").default} */
23
23
  mark: import("../marks/mark.js").default;
24
- getMarkType(): "link" | "point" | "text" | "rect" | "rule";
24
+ getMarkType(): "point" | "link" | "text" | "rect" | "rule" | "tick";
25
25
  /**
26
26
  * Pulls scales and axes up in the view hierarcy according to the resolution rules, using dataParents.
27
27
  * TODO: legends
@@ -1 +1 @@
1
- {"version":3,"file":"unitView.d.ts","sourceRoot":"","sources":["../../../src/view/unitView.js"],"names":[],"mappings":"AA+BA;;;;GAIG;AACH,wBAHU,MAAM,CAAC,OAAO,iBAAiB,EAAE,QAAQ,EAAE,cAAc,kBAAkB,EAAE,OAAO,CAAC,CAc7F;AAEF;;;GAGG;AACH,8BAHmD,KAAK,SAA3C,OAAQ,iBAAiB,EAAE,QAAS;IA2B7C;;;;;;;;OAQG;IACH,kBAPW,KAAK,WACL,OAAO,yBAAyB,EAAE,OAAO,gBACzC,OAAO,oBAAoB,EAAE,OAAO,cACpC,OAAO,WAAW,EAAE,OAAO,QAC3B,MAAM,YACN,OAAO,WAAW,EAAE,WAAW,EAyCzC;IAhCO,iDAAiD;IACjD,MADW,OAAO,kBAAkB,EAAE,OAAO,CACnB;IAyKlC,2DAIC;IAoBD;;;;;OAKG;IAEH,iEAqJC;IAUD;;;;;OAKG;IACH,4IAMC;IAED;;;;OAIG;IACH,sBAFa,OAAO,WAAW,EAAE,UAAU,EAAE,CAS5C;IAkBD;;OAEG;IACH,uDAEC;IAED;;OAEG;IACH,oCA0EC;IAED,uBAQC;IAgBD;;;;OAIG;IACH,8BAJW,MAAM,+DAEJ,OAAO,iBAAiB,EAAE,kBAAkB,CAKxD;;CACJ;iBAtlBgB,WAAW"}
1
+ {"version":3,"file":"unitView.d.ts","sourceRoot":"","sources":["../../../src/view/unitView.js"],"names":[],"mappings":"AAkCA;;;;GAIG;AACH,wBAHU,MAAM,CAAC,OAAO,iBAAiB,EAAE,QAAQ,EAAE,cAAc,kBAAkB,EAAE,OAAO,CAAC,CAgB7F;AAEF;;;GAGG;AACH,8BAHmD,KAAK,SAA3C,OAAQ,iBAAiB,EAAE,QAAS;IA2B7C;;;;;;;;OAQG;IACH,kBAPW,KAAK,WACL,OAAO,yBAAyB,EAAE,OAAO,gBACzC,OAAO,oBAAoB,EAAE,OAAO,cACpC,OAAO,WAAW,EAAE,OAAO,QAC3B,MAAM,YACN,OAAO,WAAW,EAAE,WAAW,EAmDzC;IA1CO,iDAAiD;IACjD,MADW,OAAO,kBAAkB,EAAE,OAAO,CACnB;IAiLlC,oEAIC;IAoBD;;;;;OAKG;IACH,iEAoJC;IAUD;;;;;OAKG;IACH,4IAQC;IAED;;;;OAIG;IACH,sBAFa,OAAO,WAAW,EAAE,UAAU,EAAE,CAS5C;IAkBD;;OAEG;IACH,uDAEC;IAED;;OAEG;IACH,oCAsFC;IAED,uBAQC;IAgBD;;;;OAIG;IACH,8BAJW,MAAM,+DAEJ,OAAO,iBAAiB,EAAE,kBAAkB,CAKxD;;CACJ;iBA7mBgB,WAAW"}