@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
@@ -6,17 +6,12 @@ import {
6
6
  FacetFieldDef,
7
7
  PrimaryPositionalChannel,
8
8
  } from "./channel.js";
9
- import {
10
- FillAndStrokeProps,
11
- MarkProps,
12
- MarkType,
13
- RectProps,
14
- RuleProps,
15
- ShadowProps,
16
- } from "./mark.js";
9
+ import { MarkProps, MarkType, RuleProps } from "./mark.js";
17
10
  import { ExprRef } from "./parameter.js";
18
11
  import { Title } from "./title.js";
19
12
  import { Parameter } from "./parameter.js";
13
+ import { GenomeSpyConfig } from "./config.js";
14
+ import { ViewBackgroundProps, ZIndexProps } from "./decoration.js";
20
15
 
21
16
  export interface SizeDef {
22
17
  /**
@@ -84,22 +79,50 @@ export type Paddings = Partial<Record<Side, number>>;
84
79
 
85
80
  export type PaddingConfig = Paddings | number;
86
81
 
87
- interface CompleteViewBackground extends RectProps, FillAndStrokeProps {
88
- // TODO: style?: string | string[];
82
+ export interface ViewBackground extends ViewBackgroundProps {
83
+ /**
84
+ * Named style reference(s) resolved from `config.style`.
85
+ * If an array is provided, later styles override earlier ones.
86
+ *
87
+ * __Default value:__ `"cell"`
88
+ */
89
+ style?: string | string[];
89
90
 
90
- // TODO: Move to FillAndStrokeProps or something
91
- strokeWidth?: number;
92
- }
91
+ /**
92
+ * Z-order of the background fill relative to the view content.
93
+ *
94
+ * Values greater than `0` render after the view marks. Values less than or
95
+ * equal to `0` render before the marks.
96
+ *
97
+ * __Default value:__ `0`
98
+ */
99
+ zindex?: number;
93
100
 
94
- export type ViewBackground = Pick<
95
- CompleteViewBackground,
96
- "fill" | "fillOpacity" | "stroke" | "strokeWidth" | "strokeOpacity"
97
- > &
98
- ShadowProps;
101
+ /**
102
+ * Z-order of the background stroke relative to the view content.
103
+ *
104
+ * Values greater than `0` render after the view marks. Values less than or
105
+ * equal to `0` render before the marks.
106
+ *
107
+ * __Default value:__ `0`, or `10` when the view content is clipped or
108
+ * scrollable.
109
+ */
110
+ strokeZindex?: number;
111
+ }
99
112
 
100
- export interface SeparatorProps extends Omit<RuleProps, "type"> {
113
+ export interface SeparatorProps extends Omit<RuleProps, "type">, ZIndexProps {
101
114
  type?: "rule";
102
115
 
116
+ /**
117
+ * Z-order of the separator relative to the view content.
118
+ *
119
+ * Values greater than `0` render after the view marks. Values less than or
120
+ * equal to `0` render before the marks.
121
+ *
122
+ * __Default value:__ `0`
123
+ */
124
+ zindex?: number;
125
+
103
126
  /**
104
127
  * Whether separators extend into the plot margin (axes/padding) around
105
128
  * the grid.
@@ -118,6 +141,15 @@ export interface ViewSpecBase extends ResolveSpec {
118
141
  */
119
142
  name?: string;
120
143
 
144
+ /**
145
+ * Mouse cursor shown while the pointer is inside the view.
146
+ * The deepest matching cursor wins: mark cursor first, then the pointed
147
+ * view, then ancestor views outward toward the root.
148
+ *
149
+ * __Default value:__ browser default
150
+ */
151
+ cursor?: string | ExprRef;
152
+
121
153
  /**
122
154
  * Height of the view. If a number, it is interpreted as pixels.
123
155
  * Check [child sizing](https://genomespy.app/docs/grammar/composition/concat/#child-sizing)
@@ -172,6 +204,13 @@ export interface ViewSpecBase extends ResolveSpec {
172
204
  */
173
205
  params?: Parameter[];
174
206
 
207
+ /**
208
+ * Configures defaults for this view subtree.
209
+ *
210
+ * Properties in child views override properties inherited from ancestors.
211
+ */
212
+ config?: GenomeSpyConfig;
213
+
175
214
  /**
176
215
  * Specifies a [data source](https://genomespy.app/docs/grammar/data/).
177
216
  * If omitted, the data source is inherited from the parent view.
@@ -433,6 +472,15 @@ export interface ImportSpec {
433
472
  */
434
473
  visible?: boolean;
435
474
 
475
+ /**
476
+ * Configures defaults for the imported subtree at the import site.
477
+ *
478
+ * This config is merged before the imported spec's own root-level `config`,
479
+ * so imported specs can remain self-contained and override import-site
480
+ * defaults where needed.
481
+ */
482
+ config?: GenomeSpyConfig;
483
+
436
484
  /**
437
485
  * The method to import a specification.
438
486
  */
@@ -1,17 +1,17 @@
1
- :root {
2
- --genome-spy-basic-spacing: 10px;
3
- --genome-spy-font-family:
4
- system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif,
5
- "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
6
- }
1
+ @scope {
2
+ :scope {
3
+ --genome-spy-basic-spacing: 10px;
4
+ --genome-spy-font-family:
5
+ system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif,
6
+ "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
7
7
 
8
- .genome-spy {
9
- font-family: var(--genome-spy-font-family);
8
+ font-family: var(--genome-spy-font-family);
10
9
 
11
- position: relative;
10
+ position: relative;
12
11
 
13
- display: flex;
14
- flex-direction: column;
12
+ display: flex;
13
+ flex-direction: column;
14
+ }
15
15
 
16
16
  .canvas-wrapper {
17
17
  position: relative;
@@ -190,6 +190,50 @@
190
190
  }
191
191
  }
192
192
 
193
+ .gs-input-binding {
194
+ display: grid;
195
+ grid-template-columns: max-content max-content;
196
+ column-gap: 1em;
197
+ row-gap: 0.3em;
198
+ justify-items: start;
199
+
200
+ > select,
201
+ > input:not([type="checkbox"]) {
202
+ width: 100%;
203
+ }
204
+
205
+ input[type="range"] + span {
206
+ display: inline-block;
207
+ margin-left: 0.3em;
208
+ min-width: 2.2em;
209
+ font-variant-numeric: tabular-nums;
210
+ }
211
+
212
+ input[type="range"],
213
+ input[type="radio"] {
214
+ vertical-align: text-bottom;
215
+ }
216
+
217
+ .radio-group {
218
+ display: flex;
219
+ align-items: center;
220
+ }
221
+
222
+ .description {
223
+ max-width: 26em;
224
+ grid-column: 1 / -1;
225
+ color: #777;
226
+ font-size: 90%;
227
+ margin-top: -0.5em;
228
+ }
229
+ }
230
+
231
+ .gs-input-bindings {
232
+ flex-basis: content;
233
+ font-size: 14px;
234
+ padding: var(--genome-spy-basic-spacing);
235
+ }
236
+
193
237
  .message-box {
194
238
  display: flex;
195
239
  align-items: center;
@@ -206,47 +250,3 @@
206
250
  }
207
251
  }
208
252
  }
209
-
210
- .gs-input-binding {
211
- display: grid;
212
- grid-template-columns: max-content max-content;
213
- column-gap: 1em;
214
- row-gap: 0.3em;
215
- justify-items: start;
216
-
217
- > select,
218
- > input:not([type="checkbox"]) {
219
- width: 100%;
220
- }
221
-
222
- input[type="range"] + span {
223
- display: inline-block;
224
- margin-left: 0.3em;
225
- min-width: 2.2em;
226
- font-variant-numeric: tabular-nums;
227
- }
228
-
229
- input[type="range"],
230
- input[type="radio"] {
231
- vertical-align: text-bottom;
232
- }
233
-
234
- .radio-group {
235
- display: flex;
236
- align-items: center;
237
- }
238
-
239
- .description {
240
- max-width: 26em;
241
- grid-column: 1 / -1;
242
- color: #777;
243
- font-size: 90%;
244
- margin-top: -0.5em;
245
- }
246
- }
247
-
248
- .gs-input-bindings {
249
- flex-basis: content;
250
- font-size: 14px;
251
- padding: var(--genome-spy-basic-spacing);
252
- }
@@ -1,3 +1,3 @@
1
1
  export default css;
2
- declare const css: "\n:root {\n--genome-spy-basic-spacing: 10px;\n--genome-spy-font-family: system-ui, \"Segoe UI\", Roboto, Helvetica, Arial,\nsans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n}\n\n.genome-spy {\nfont-family: var(--genome-spy-font-family);\n\nposition: relative;\n\ndisplay: flex;\nflex-direction: column;\n\n.canvas-wrapper {\nposition: relative;\nflex-grow: 1;\noverflow: hidden;\n}\n\ncanvas {\ndisplay: block;\ntouch-action: none;\ntransform: scale(1, 1);\nopacity: 1;\ntransition:\ntransform 0.6s,\nopacity 0.6s;\n\n&:focus,\n&:focus-visible {\noutline: none;\n}\n}\n\n.loading {\n> canvas {\ntransform: scale(0.95, 0.95);\nopacity: 0;\n}\n}\n\n.loading-indicators {\nposition: absolute;\ninset: 0;\n\nuser-select: none;\npointer-events: none;\n\ndiv {\nposition: absolute;\ndisplay: flex;\nalign-items: center;\njustify-content: center;\n\n> div {\nfont-size: 11px;\ntransition: opacity 0.2s;\nbackground: white;\npadding: 2px 5px;\ndisplay: flex;\nborder-radius: 3px;\ngap: 0.5em;\nopacity: 0;\n\n&.loading {\nopacity: 0.5;\n}\n\n&.error {\nopacity: 0.8;\ncolor: firebrick;\n}\n\n> * {\ndisplay: block;\n}\n\nimg {\nwidth: 1.5em;\nheight: 1.5em;\n}\n}\n}\n}\n\n.tooltip {\nposition: absolute;\n\nmax-width: 450px;\noverflow: hidden;\n\n--background-color: #f6f6f6;\nbackground: var(--background-color);\npadding: var(--genome-spy-basic-spacing);\n\n--font-size: 12px;\nfont-size: var(--font-size);\n\nbox-shadow: 0px 3px 15px 0px rgba(0, 0, 0, 0.21);\n\n&:not(.sticky) {\npointer-events: none;\n}\n\ntransition:\noutline-color 0.3s ease-in-out,\nbox-shadow 0.3s ease-in-out;\n\noutline: 0px solid transparent;\n&.sticky {\noutline: 2px solid black;\nbox-shadow: 0px 3px 18px 0px rgba(0, 0, 0, 0.3);\n}\n\nz-index: 100;\n\n> :last-child {\nmargin-bottom: 0;\n}\n\n> .title {\npadding-bottom: calc(var(--genome-spy-basic-spacing) / 2);\nmargin-bottom: calc(var(--genome-spy-basic-spacing) / 2);\nborder-bottom: 1px dashed var(--background-color);\nborder-bottom: 1px dashed\ncolor-mix(in srgb, black 25%, var(--background-color));\n}\n\n.summary {\nfont-size: 12px;\n}\n\ntable {\n&:first-child {\nmargin-top: 0;\n}\n\nborder-collapse: collapse;\n\nth,\ntd {\npadding: 2px 0.4em;\nvertical-align: top;\nfont-size: var(--font-size);\n\n&:first-child {\npadding-left: 0;\n}\n}\n\nth {\ntext-align: left;\nfont-weight: bold;\n}\n}\n\n.color-legend {\ndisplay: inline-block;\nwidth: 0.8em;\nheight: 0.8em;\nmargin-left: 0.4em;\nbox-shadow: 0px 0px 3px 1px white;\n}\n\n.color-legend-unmapped {\nbackground-color: transparent;\nborder: 1px solid black;\nbox-sizing: border-box;\nbox-shadow: none;\n}\n\n.attributes {\n.hovered {\nbackground-color: #e0e0e0;\n}\n}\n\n.na {\ncolor: #aaa;\nfont-style: italic;\nfont-size: 80%;\n}\n}\n\n.gene-track-tooltip {\n.summary {\nfont-size: 90%;\n}\n}\n\n.message-box {\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nposition: absolute;\ntop: 0;\nheight: 100%;\nwidth: 100%;\n\n> div {\nborder: 1px solid red;\npadding: 10px;\nbackground: #fff0f0;\n}\n}\n}\n\n.gs-input-binding {\ndisplay: grid;\ngrid-template-columns: max-content max-content;\ncolumn-gap: 1em;\nrow-gap: 0.3em;\njustify-items: start;\n\n> select,\n> input:not([type=\"checkbox\"]) {\nwidth: 100%;\n}\n\ninput[type=\"range\"] + span {\ndisplay: inline-block;\nmargin-left: 0.3em;\nmin-width: 2.2em;\nfont-variant-numeric: tabular-nums;\n}\n\ninput[type=\"range\"],\ninput[type=\"radio\"] {\nvertical-align: text-bottom;\n}\n\n.radio-group {\ndisplay: flex;\nalign-items: center;\n}\n\n.description {\nmax-width: 26em;\ngrid-column: 1 / -1;\ncolor: #777;\nfont-size: 90%;\nmargin-top: -0.5em;\n}\n}\n\n.gs-input-bindings {\nflex-basis: content;\nfont-size: 14px;\npadding: var(--genome-spy-basic-spacing);\n}\n";
2
+ declare const css: "\n@scope {\n:scope {\n--genome-spy-basic-spacing: 10px;\n--genome-spy-font-family:\nsystem-ui, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif,\n\"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n\nfont-family: var(--genome-spy-font-family);\n\nposition: relative;\n\ndisplay: flex;\nflex-direction: column;\n}\n\n.canvas-wrapper {\nposition: relative;\nflex-grow: 1;\noverflow: hidden;\n}\n\ncanvas {\ndisplay: block;\ntouch-action: none;\ntransform: scale(1, 1);\nopacity: 1;\ntransition:\ntransform 0.6s,\nopacity 0.6s;\n\n&:focus,\n&:focus-visible {\noutline: none;\n}\n}\n\n.loading {\n> canvas {\ntransform: scale(0.95, 0.95);\nopacity: 0;\n}\n}\n\n.loading-indicators {\nposition: absolute;\ninset: 0;\n\nuser-select: none;\npointer-events: none;\n\ndiv {\nposition: absolute;\ndisplay: flex;\nalign-items: center;\njustify-content: center;\n\n> div {\nfont-size: 11px;\ntransition: opacity 0.2s;\nbackground: white;\npadding: 2px 5px;\ndisplay: flex;\nborder-radius: 3px;\ngap: 0.5em;\nopacity: 0;\n\n&.loading {\nopacity: 0.5;\n}\n\n&.error {\nopacity: 0.8;\ncolor: firebrick;\n}\n\n> * {\ndisplay: block;\n}\n\nimg {\nwidth: 1.5em;\nheight: 1.5em;\n}\n}\n}\n}\n\n.tooltip {\nposition: absolute;\n\nmax-width: 450px;\noverflow: hidden;\n\n--background-color: #f6f6f6;\nbackground: var(--background-color);\npadding: var(--genome-spy-basic-spacing);\n\n--font-size: 12px;\nfont-size: var(--font-size);\n\nbox-shadow: 0px 3px 15px 0px rgba(0, 0, 0, 0.21);\n\n&:not(.sticky) {\npointer-events: none;\n}\n\ntransition:\noutline-color 0.3s ease-in-out,\nbox-shadow 0.3s ease-in-out;\n\noutline: 0px solid transparent;\n&.sticky {\noutline: 2px solid black;\nbox-shadow: 0px 3px 18px 0px rgba(0, 0, 0, 0.3);\n}\n\nz-index: 100;\n\n> :last-child {\nmargin-bottom: 0;\n}\n\n> .title {\npadding-bottom: calc(var(--genome-spy-basic-spacing) / 2);\nmargin-bottom: calc(var(--genome-spy-basic-spacing) / 2);\nborder-bottom: 1px dashed var(--background-color);\nborder-bottom: 1px dashed\ncolor-mix(in srgb, black 25%, var(--background-color));\n}\n\n.summary {\nfont-size: 12px;\n}\n\ntable {\n&:first-child {\nmargin-top: 0;\n}\n\nborder-collapse: collapse;\n\nth,\ntd {\npadding: 2px 0.4em;\nvertical-align: top;\nfont-size: var(--font-size);\n\n&:first-child {\npadding-left: 0;\n}\n}\n\nth {\ntext-align: left;\nfont-weight: bold;\n}\n}\n\n.color-legend {\ndisplay: inline-block;\nwidth: 0.8em;\nheight: 0.8em;\nmargin-left: 0.4em;\nbox-shadow: 0px 0px 3px 1px white;\n}\n\n.color-legend-unmapped {\nbackground-color: transparent;\nborder: 1px solid black;\nbox-sizing: border-box;\nbox-shadow: none;\n}\n\n.attributes {\n.hovered {\nbackground-color: #e0e0e0;\n}\n}\n\n.na {\ncolor: #aaa;\nfont-style: italic;\nfont-size: 80%;\n}\n}\n\n.gene-track-tooltip {\n.summary {\nfont-size: 90%;\n}\n}\n\n.gs-input-binding {\ndisplay: grid;\ngrid-template-columns: max-content max-content;\ncolumn-gap: 1em;\nrow-gap: 0.3em;\njustify-items: start;\n\n> select,\n> input:not([type=\"checkbox\"]) {\nwidth: 100%;\n}\n\ninput[type=\"range\"] + span {\ndisplay: inline-block;\nmargin-left: 0.3em;\nmin-width: 2.2em;\nfont-variant-numeric: tabular-nums;\n}\n\ninput[type=\"range\"],\ninput[type=\"radio\"] {\nvertical-align: text-bottom;\n}\n\n.radio-group {\ndisplay: flex;\nalign-items: center;\n}\n\n.description {\nmax-width: 26em;\ngrid-column: 1 / -1;\ncolor: #777;\nfont-size: 90%;\nmargin-top: -0.5em;\n}\n}\n\n.gs-input-bindings {\nflex-basis: content;\nfont-size: 14px;\npadding: var(--genome-spy-basic-spacing);\n}\n\n.message-box {\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nposition: absolute;\ntop: 0;\nheight: 100%;\nwidth: 100%;\n\n> div {\nborder: 1px solid red;\npadding: 10px;\nbackground: #fff0f0;\n}\n}\n}\n";
3
3
  //# sourceMappingURL=genome-spy.css.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"genome-spy.css.d.ts","sourceRoot":"","sources":["../../../src/styles/genome-spy.css.js"],"names":[],"mappings":";AAAA,osHA4PE"}
1
+ {"version":3,"file":"genome-spy.css.d.ts","sourceRoot":"","sources":["../../../src/styles/genome-spy.css.js"],"names":[],"mappings":";AAAA,isHA6PE"}
@@ -1,17 +1,18 @@
1
1
  const css = `
2
- :root {
2
+ @scope {
3
+ :scope {
3
4
  --genome-spy-basic-spacing: 10px;
4
- --genome-spy-font-family: system-ui, "Segoe UI", Roboto, Helvetica, Arial,
5
- sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
6
- }
5
+ --genome-spy-font-family:
6
+ system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif,
7
+ "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
7
8
 
8
- .genome-spy {
9
9
  font-family: var(--genome-spy-font-family);
10
10
 
11
11
  position: relative;
12
12
 
13
13
  display: flex;
14
14
  flex-direction: column;
15
+ }
15
16
 
16
17
  .canvas-wrapper {
17
18
  position: relative;
@@ -190,23 +191,6 @@ font-size: 90%;
190
191
  }
191
192
  }
192
193
 
193
- .message-box {
194
- display: flex;
195
- align-items: center;
196
- justify-content: center;
197
- position: absolute;
198
- top: 0;
199
- height: 100%;
200
- width: 100%;
201
-
202
- > div {
203
- border: 1px solid red;
204
- padding: 10px;
205
- background: #fff0f0;
206
- }
207
- }
208
- }
209
-
210
194
  .gs-input-binding {
211
195
  display: grid;
212
196
  grid-template-columns: max-content max-content;
@@ -250,5 +234,22 @@ flex-basis: content;
250
234
  font-size: 14px;
251
235
  padding: var(--genome-spy-basic-spacing);
252
236
  }
237
+
238
+ .message-box {
239
+ display: flex;
240
+ align-items: center;
241
+ justify-content: center;
242
+ position: absolute;
243
+ top: 0;
244
+ height: 100%;
245
+ width: 100%;
246
+
247
+ > div {
248
+ border: 1px solid red;
249
+ padding: 10px;
250
+ background: #fff0f0;
251
+ }
252
+ }
253
+ }
253
254
  `;
254
255
  export default css;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=testSetup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testSetup.d.ts","sourceRoot":"","sources":["../../src/testSetup.js"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import "./data/formats/parquet.js";
2
+ import "./data/formats/bed.js";
3
+ import "./data/formats/bedpe.js";
4
+ import "./data/formats/fasta.js";
5
+ import "./data/sources/lazy/registerBuiltInLazySources.js";
@@ -1,5 +1,6 @@
1
1
  import { html } from "lit";
2
2
  import { splitAccessPath } from "vega-util";
3
+ import { getEncoderDataAccessor } from "../encoder/encoder.js";
3
4
  import formatObject from "../utils/formatObject.js";
4
5
  import { flattenDatumRows } from "./flattenDatumRows.js";
5
6
  import createTooltipContext from "./tooltipContext.js";
@@ -35,7 +36,9 @@ export default async function dataTooltipHandler(datum, mark, params, context) {
35
36
  */
36
37
  const legend = (key, value, datum) => {
37
38
  for (const [channel, encoder] of Object.entries(mark.encoders)) {
38
- const fields = encoder?.dataAccessor?.fields;
39
+ const fields = encoder
40
+ ? getEncoderDataAccessor(encoder)?.fields
41
+ : undefined;
39
42
  if (
40
43
  fields &&
41
44
  fields.some(
@@ -88,7 +91,10 @@ export default async function dataTooltipHandler(datum, mark, params, context) {
88
91
  const genomicRows = tooltipContext.genomicRows ?? [];
89
92
  const hiddenRowKeys = new Set(tooltipContext.hiddenRowKeys ?? []);
90
93
 
91
- const visibleRawRows = rawRows.filter((row) => !hiddenRowKeys.has(row.key));
94
+ const visibleRawRows = rawRows.filter(
95
+ (row) =>
96
+ !hiddenRowKeys.has(row.key) || legend(row.key, row.value, datum)
97
+ );
92
98
  const orderedRows = [...genomicRows, ...visibleRawRows];
93
99
  if (!orderedRows.length) {
94
100
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"tooltipContext.d.ts","sourceRoot":"","sources":["../../../src/tooltip/tooltipContext.js"],"names":[],"mappings":"AA2BA;;;;;;;GAOG;AACH,oDALW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QACnB,OAAO,kBAAkB,EAAE,OAAO,WAClC,OAAO,qBAAqB,EAAE,oBAAoB,GAChD,cAAc,CAgE1B;6BAhGY,OAAO,qBAAqB,EAAE,cAAc;wCAC5C,OAAO,qBAAqB,EAAE,yBAAyB;yBACvD,OAAO,qBAAqB,EAAE,UAAU"}
1
+ {"version":3,"file":"tooltipContext.d.ts","sourceRoot":"","sources":["../../../src/tooltip/tooltipContext.js"],"names":[],"mappings":"AA4BA;;;;;;;GAOG;AACH,oDALW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QACnB,OAAO,kBAAkB,EAAE,OAAO,WAClC,OAAO,qBAAqB,EAAE,oBAAoB,GAChD,cAAc,CAgE1B;6BAjGY,OAAO,qBAAqB,EAAE,cAAc;wCAC5C,OAAO,qBAAqB,EAAE,yBAAyB;yBACvD,OAAO,qBAAqB,EAAE,UAAU"}
@@ -5,6 +5,7 @@
5
5
  */
6
6
 
7
7
  import { asArray } from "../utils/arrayUtils.js";
8
+ import { getEncoderDataAccessor } from "../encoder/encoder.js";
8
9
  import { flattenDatumRows } from "./flattenDatumRows.js";
9
10
 
10
11
  /** @type {Record<"x" | "y", "x2" | "y2">} */
@@ -366,7 +367,7 @@ function readLocusCoordinate(mark, channel, datum) {
366
367
  return;
367
368
  }
368
369
 
369
- const accessor = encoder.dataAccessor;
370
+ const accessor = getEncoderDataAccessor(encoder);
370
371
  if (!accessor) {
371
372
  return;
372
373
  }
@@ -535,7 +536,7 @@ function verifyLinearizationMapping(datum, linearizedField, mapping, mark) {
535
536
  let expected;
536
537
  try {
537
538
  expected = genome.toContinuous(chrom, numericPos - mapping.offset);
538
- } catch (_error) {
539
+ } catch {
539
540
  return false;
540
541
  }
541
542
 
@@ -1,6 +1,7 @@
1
1
  import { ScaleResolutionApi } from "./scaleResolutionApi.js";
2
2
  import { TooltipHandler } from "../tooltip/tooltipHandler.js";
3
3
  import { RootSpec } from "../spec/root.js";
4
+ import { GenomeSpyConfig } from "../spec/config.js";
4
5
 
5
6
  /**
6
7
  * Embeds GenomeSpy into the DOM
@@ -41,6 +42,12 @@ export interface EmbedOptions {
41
42
  */
42
43
  powerPreference?: "default" | "high-performance" | "low-power";
43
44
 
45
+ /**
46
+ * Optional theme configuration object that is merged after the internal
47
+ * defaults and built-in theme, but before `spec.config`.
48
+ */
49
+ theme?: GenomeSpyConfig;
50
+
44
51
  /**
45
52
  * Optional hook for handling launch errors. Return true to suppress default UI.
46
53
  */
@@ -25,7 +25,6 @@ import { ScaleLocus } from "../genome/scaleLocus.js";
25
25
  import { ScaleIndex } from "../genome/scaleIndex.js";
26
26
  import { Scalar } from "../spec/channel.js";
27
27
  import { Datum } from "../data/flowNode.js";
28
- import { ExprRefFunction } from "../paramRuntime/types.js";
29
28
 
30
29
  export interface Accessor<T = Scalar> {
31
30
  (datum: Datum): T;
@@ -86,11 +85,6 @@ export interface Accessor<T = Scalar> {
86
85
  * Format: <type>|<domainKeyBase>
87
86
  */
88
87
  domainKey?: string;
89
-
90
- /**
91
- * This accessor should be used when the predicate is true
92
- */
93
- predicate: Predicate;
94
88
  }
95
89
 
96
90
  export interface ScaleAccessor<T = Scalar> extends Accessor<T> {
@@ -99,7 +93,9 @@ export interface ScaleAccessor<T = Scalar> extends Accessor<T> {
99
93
  domainKeyBase: string;
100
94
  }
101
95
 
102
- export interface Predicate extends ExprRefFunction {
96
+ export interface Predicate {
97
+ (datum: Datum): boolean;
98
+
103
99
  /**
104
100
  * The parameter the predicate is based on
105
101
  */
@@ -113,6 +109,18 @@ export interface Predicate extends ExprRefFunction {
113
109
  empty?: boolean;
114
110
  }
115
111
 
112
+ export interface EncodingBranch {
113
+ /**
114
+ * The accessor used by this branch.
115
+ */
116
+ accessor: Accessor;
117
+
118
+ /**
119
+ * Predicate controlling whether this branch is active.
120
+ */
121
+ predicate: Predicate;
122
+ }
123
+
116
124
  /**
117
125
  * Wraps one or more accessors, uses an optional scale to encode the data.
118
126
  */
@@ -134,15 +142,9 @@ export interface Encoder {
134
142
  scale?: VegaScale;
135
143
 
136
144
  /**
137
- * An accessor, or if the ChannelDef has conditions, all the accessors.
138
- */
139
- accessors: Accessor[];
140
-
141
- /**
142
- * The encoded channel may have a maximum of one accessor accessing the
143
- * data fields. It's this one.
145
+ * Ordered branches of this encoder. The last branch is the fallback branch.
144
146
  */
145
- dataAccessor?: Accessor;
147
+ branches: EncodingBranch[];
146
148
 
147
149
  /**
148
150
  * The ChannelDef that the encoder is based on
@@ -29,12 +29,32 @@ export interface ScaleResolutionApi {
29
29
  */
30
30
  getDomain(): any[];
31
31
 
32
+ /**
33
+ * Returns true if the domain has been provided explicitly in the spec.
34
+ */
35
+ isDomainDefinedExplicitly(): boolean;
36
+
37
+ /**
38
+ * Returns true when the scale domain has moved beyond the placeholder startup state.
39
+ */
40
+ isDomainInitialized(): boolean;
41
+
32
42
  /**
33
43
  * Returns the current, possible zoomed domain converted into complex objects
34
44
  * such as genomic coordinates.
35
45
  */
36
46
  getComplexDomain(): NumericDomain | ComplexDomain;
37
47
 
48
+ getLinkedSelectionDomainInfo():
49
+ | {
50
+ param: string;
51
+ encoding: "x" | "y";
52
+ persist: boolean;
53
+ }
54
+ | undefined;
55
+
56
+ isZoomed(): boolean;
57
+
38
58
  isZoomable(): boolean;
39
59
 
40
60
  zoomTo(
@@ -18,6 +18,10 @@ export interface Hover {
18
18
 
19
19
  export type DataLoadingStatus = "loading" | "complete" | "error";
20
20
 
21
+ export interface CreateViewOptions {
22
+ layoutSizeParams?: "own" | "inherit";
23
+ }
24
+
21
25
  /**
22
26
  * ViewContext provides essential data and interfaces to View classes.
23
27
  */
@@ -37,6 +41,18 @@ export default interface ViewContext {
37
41
 
38
42
  getCurrentHover: () => Hover;
39
43
 
44
+ /**
45
+ * Internal interaction hook: suspends hover recomputation during active
46
+ * drag interactions.
47
+ */
48
+ suspendHoverTracking: () => void;
49
+
50
+ /**
51
+ * Internal interaction hook: resumes hover recomputation after an active
52
+ * drag interaction.
53
+ */
54
+ resumeHoverTracking: (event?: MouseEvent) => void;
55
+
40
56
  /**
41
57
  * Adds a keyboard event listener to the document. Cleanup is performed automatically
42
58
  * when GenomeSpy is finalized.
@@ -82,6 +98,11 @@ export default interface ViewContext {
82
98
 
83
99
  isViewSpec: (spec: any) => boolean;
84
100
 
101
+ /**
102
+ * Returns the base config scope used for root-level resolution.
103
+ */
104
+ getBaseConfig: () => GenomeSpyConfig;
105
+
85
106
  /**
86
107
  *
87
108
  * @param spec
@@ -100,6 +121,7 @@ export default interface ViewContext {
100
121
  * Validates whether the imported spec is acceptable for the importer.
101
122
  * The function should throw an Error if the view is not acceptable.
102
123
  */
103
- validator?: (spec: ViewSpec) => void
124
+ validator?: (spec: ViewSpec) => void,
125
+ options?: CreateViewOptions
104
126
  ) => Promise<View>;
105
127
  }
@@ -12,9 +12,9 @@
12
12
  export default function createFunction(expr: string, globalObject?: {}): ExpressionFunction;
13
13
  /**
14
14
  * @param {string} expr
15
- * @returns {(event: UIEvent) => boolean}
15
+ * @returns {(event: UIEvent | import("./interactionEvent.js").WheelLikeEvent) => boolean}
16
16
  */
17
- export function createEventFilterFunction(expr: string): (event: UIEvent) => boolean;
17
+ export function createEventFilterFunction(expr: string): (event: UIEvent | import("./interactionEvent.js").WheelLikeEvent) => boolean;
18
18
  export type ExpressionProps = {
19
19
  fields: string[];
20
20
  globals: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../../src/utils/expression.js"],"names":[],"mappings":"AAuEA;;;;;;;;;;GAUG;AACH,6CAHW,MAAM,sBACJ,kBAAkB,CAgC9B;AAQD;;;GAGG;AACH,gDAHW,MAAM,GACJ,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CA2BvC;;YA5EU,MAAM,EAAE;aACR,MAAM,EAAE;UACR,MAAM;;iCAEH,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,qBAAqB,EAAE,KAAK,KAAK,GAAG,CAAC,GAAG,eAAe"}
1
+ {"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../../src/utils/expression.js"],"names":[],"mappings":"AA4HA;;;;;;;;;;GAUG;AACH,6CAHW,MAAM,sBACJ,kBAAkB,CAiC9B;AAQD;;;GAGG;AACH,gDAHW,MAAM,GACJ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,uBAAuB,EAAE,cAAc,KAAK,OAAO,CA4BxF;;YA9EU,MAAM,EAAE;aACR,MAAM,EAAE;UACR,MAAM;;iCAEH,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,qBAAqB,EAAE,KAAK,KAAK,GAAG,CAAC,GAAG,eAAe"}