@genome-spy/core 0.73.0 → 0.74.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (359) hide show
  1. package/dist/bundle/AbortablePromiseCache-3gHJdF3E.js +96 -0
  2. package/dist/bundle/browser-BTgw5ieH.js +126 -0
  3. package/dist/bundle/chunk-DmhlhrBa.js +11 -0
  4. package/dist/bundle/esm-BDFRLEuD.js +1248 -0
  5. package/dist/bundle/esm-BygJiwh0.js +573 -0
  6. package/dist/bundle/esm-CGX-qz1d.js +155 -0
  7. package/dist/bundle/esm-CgfVIRJ-.js +121 -0
  8. package/dist/bundle/esm-CuMSzCHy.js +298 -0
  9. package/dist/bundle/esm-DMXpJXM4.js +369 -0
  10. package/dist/bundle/esm-DQiq2Zhd.js +1426 -0
  11. package/dist/bundle/esm-DtE8VqAv.js +1015 -0
  12. package/dist/bundle/esm-sIoQYZ21.js +461 -0
  13. package/dist/bundle/index.es.js +21071 -25935
  14. package/dist/bundle/index.js +363 -379
  15. package/dist/bundle/parquetRead-DG_-F5j5.js +1609 -0
  16. package/dist/schema.json +13098 -7095
  17. package/dist/src/config/axisConfig.d.ts +16 -0
  18. package/dist/src/config/axisConfig.d.ts.map +1 -0
  19. package/dist/src/config/axisConfig.js +84 -0
  20. package/dist/src/config/defaultConfig.d.ts +3 -0
  21. package/dist/src/config/defaultConfig.d.ts.map +1 -0
  22. package/dist/src/config/defaultConfig.js +38 -0
  23. package/dist/src/config/defaults/axisDefaults.d.ts +5 -0
  24. package/dist/src/config/defaults/axisDefaults.d.ts.map +1 -0
  25. package/dist/src/config/defaults/axisDefaults.js +72 -0
  26. package/dist/src/config/defaults/markDefaults.d.ts +15 -0
  27. package/dist/src/config/defaults/markDefaults.d.ts.map +1 -0
  28. package/dist/src/config/defaults/markDefaults.js +121 -0
  29. package/dist/src/config/defaults/scaleDefaults.d.ts +5 -0
  30. package/dist/src/config/defaults/scaleDefaults.d.ts.map +1 -0
  31. package/dist/src/config/defaults/scaleDefaults.js +18 -0
  32. package/dist/src/config/defaults/titleDefaults.d.ts +5 -0
  33. package/dist/src/config/defaults/titleDefaults.d.ts.map +1 -0
  34. package/dist/src/config/defaults/titleDefaults.js +47 -0
  35. package/dist/src/config/defaults/viewDefaults.d.ts +3 -0
  36. package/dist/src/config/defaults/viewDefaults.d.ts.map +1 -0
  37. package/dist/src/config/defaults/viewDefaults.js +2 -0
  38. package/dist/src/config/markConfig.d.ts +8 -0
  39. package/dist/src/config/markConfig.d.ts.map +1 -0
  40. package/dist/src/config/markConfig.js +27 -0
  41. package/dist/src/config/mergeConfig.d.ts +8 -0
  42. package/dist/src/config/mergeConfig.d.ts.map +1 -0
  43. package/dist/src/config/mergeConfig.js +81 -0
  44. package/dist/src/config/resolveConfig.d.ts +22 -0
  45. package/dist/src/config/resolveConfig.d.ts.map +1 -0
  46. package/dist/src/config/resolveConfig.js +32 -0
  47. package/dist/src/config/scaleConfig.d.ts +40 -0
  48. package/dist/src/config/scaleConfig.d.ts.map +1 -0
  49. package/dist/src/config/scaleConfig.js +220 -0
  50. package/dist/src/config/styleUtils.d.ts +6 -0
  51. package/dist/src/config/styleUtils.d.ts.map +1 -0
  52. package/dist/src/config/styleUtils.js +10 -0
  53. package/dist/src/config/themes.d.ts +15 -0
  54. package/dist/src/config/themes.d.ts.map +1 -0
  55. package/dist/src/config/themes.js +293 -0
  56. package/dist/src/config/titleConfig.d.ts +12 -0
  57. package/dist/src/config/titleConfig.d.ts.map +1 -0
  58. package/dist/src/config/titleConfig.js +42 -0
  59. package/dist/src/config/viewConfig.d.ts +7 -0
  60. package/dist/src/config/viewConfig.d.ts.map +1 -0
  61. package/dist/src/config/viewConfig.js +29 -0
  62. package/dist/src/data/flowNode.d.ts +22 -1
  63. package/dist/src/data/flowNode.d.ts.map +1 -1
  64. package/dist/src/data/flowNode.js +37 -1
  65. package/dist/src/data/formats/bed.d.ts.map +1 -1
  66. package/dist/src/data/formats/bed.js +6 -1
  67. package/dist/src/data/formats/bedpe.d.ts.map +1 -1
  68. package/dist/src/data/formats/bedpe.js +4 -0
  69. package/dist/src/data/formats/fasta.d.ts.map +1 -1
  70. package/dist/src/data/formats/fasta.js +4 -0
  71. package/dist/src/data/formats/parquet.d.ts.map +1 -1
  72. package/dist/src/data/formats/parquet.js +4 -0
  73. package/dist/src/data/sources/dataSourceFactory.d.ts +2 -13
  74. package/dist/src/data/sources/dataSourceFactory.d.ts.map +1 -1
  75. package/dist/src/data/sources/dataSourceFactory.js +5 -141
  76. package/dist/src/data/sources/lazy/axisGenomeSource.d.ts.map +1 -1
  77. package/dist/src/data/sources/lazy/axisGenomeSource.js +11 -0
  78. package/dist/src/data/sources/lazy/axisTickSource.d.ts +1 -1
  79. package/dist/src/data/sources/lazy/axisTickSource.d.ts.map +1 -1
  80. package/dist/src/data/sources/lazy/axisTickSource.js +19 -8
  81. package/dist/src/data/sources/lazy/bamSource.d.ts.map +1 -1
  82. package/dist/src/data/sources/lazy/bamSource.js +11 -0
  83. package/dist/src/data/sources/lazy/bigBedSource.d.ts.map +1 -1
  84. package/dist/src/data/sources/lazy/bigBedSource.js +12 -1
  85. package/dist/src/data/sources/lazy/bigWigSource.d.ts.map +1 -1
  86. package/dist/src/data/sources/lazy/bigWigSource.js +11 -0
  87. package/dist/src/data/sources/lazy/gff3Source.d.ts.map +1 -1
  88. package/dist/src/data/sources/lazy/gff3Source.js +12 -1
  89. package/dist/src/data/sources/lazy/indexedFastaSource.d.ts.map +1 -1
  90. package/dist/src/data/sources/lazy/indexedFastaSource.js +11 -0
  91. package/dist/src/data/sources/lazy/lazyDataSourceRegistry.d.ts +27 -0
  92. package/dist/src/data/sources/lazy/lazyDataSourceRegistry.d.ts.map +1 -0
  93. package/dist/src/data/sources/lazy/lazyDataSourceRegistry.js +65 -0
  94. package/dist/src/data/sources/lazy/registerBuiltInLazySources.d.ts +2 -0
  95. package/dist/src/data/sources/lazy/registerBuiltInLazySources.d.ts.map +1 -0
  96. package/dist/src/data/sources/lazy/registerBuiltInLazySources.js +8 -0
  97. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts.map +1 -1
  98. package/dist/src/data/sources/lazy/singleAxisLazySource.js +11 -2
  99. package/dist/src/data/sources/lazy/vcfSource.d.ts.map +1 -1
  100. package/dist/src/data/sources/lazy/vcfSource.js +11 -0
  101. package/dist/src/data/sources/urlSource.d.ts.map +1 -1
  102. package/dist/src/data/sources/urlSource.js +5 -2
  103. package/dist/src/data/transforms/aggregate.d.ts +1 -0
  104. package/dist/src/data/transforms/aggregate.d.ts.map +1 -1
  105. package/dist/src/data/transforms/aggregate.js +30 -8
  106. package/dist/src/data/transforms/aggregateOps.d.ts.map +1 -1
  107. package/dist/src/data/transforms/aggregateOps.js +12 -1
  108. package/dist/src/data/transforms/coverage.js +2 -2
  109. package/dist/src/data/transforms/filter.js +1 -1
  110. package/dist/src/data/transforms/filterScoredLabels.d.ts +6 -0
  111. package/dist/src/data/transforms/filterScoredLabels.d.ts.map +1 -1
  112. package/dist/src/data/transforms/filterScoredLabels.js +9 -0
  113. package/dist/src/data/transforms/measureText.d.ts +1 -0
  114. package/dist/src/data/transforms/measureText.d.ts.map +1 -1
  115. package/dist/src/data/transforms/measureText.js +14 -5
  116. package/dist/src/data/transforms/pileup.d.ts.map +1 -1
  117. package/dist/src/data/transforms/pileup.js +1 -2
  118. package/dist/src/data/transforms/regexFold.d.ts.map +1 -1
  119. package/dist/src/data/transforms/regexFold.js +0 -1
  120. package/dist/src/embedFactory.d.ts +13 -0
  121. package/dist/src/embedFactory.d.ts.map +1 -0
  122. package/dist/src/embedFactory.js +127 -0
  123. package/dist/src/encoder/accessor.d.ts +3 -12
  124. package/dist/src/encoder/accessor.d.ts.map +1 -1
  125. package/dist/src/encoder/accessor.js +10 -65
  126. package/dist/src/encoder/encoder.d.ts +51 -8
  127. package/dist/src/encoder/encoder.d.ts.map +1 -1
  128. package/dist/src/encoder/encoder.js +179 -55
  129. package/dist/src/fonts/bmFontManager.js +1 -1
  130. package/dist/src/full.d.ts +2 -0
  131. package/dist/src/full.d.ts.map +1 -0
  132. package/dist/src/full.js +2 -0
  133. package/dist/src/genome/genome.d.ts +8 -0
  134. package/dist/src/genome/genome.d.ts.map +1 -1
  135. package/dist/src/genome/genome.js +16 -2
  136. package/dist/src/genome/genomeStore.js +1 -1
  137. package/dist/src/genome/rootGenomeConfig.d.ts.map +1 -1
  138. package/dist/src/genome/rootGenomeConfig.js +6 -2
  139. package/dist/src/genome/scaleLocus.d.ts.map +1 -1
  140. package/dist/src/genome/scaleLocus.js +26 -7
  141. package/dist/src/genomeSpy/cursorManager.d.ts +69 -0
  142. package/dist/src/genomeSpy/cursorManager.d.ts.map +1 -0
  143. package/dist/src/genomeSpy/cursorManager.js +131 -0
  144. package/dist/src/genomeSpy/headlessBootstrap.d.ts +113 -0
  145. package/dist/src/genomeSpy/headlessBootstrap.d.ts.map +1 -0
  146. package/dist/src/genomeSpy/headlessBootstrap.js +246 -0
  147. package/dist/src/genomeSpy/interactionController.d.ts +5 -0
  148. package/dist/src/genomeSpy/interactionController.d.ts.map +1 -1
  149. package/dist/src/genomeSpy/interactionController.js +212 -19
  150. package/dist/src/genomeSpy/interactionDispatcher.d.ts +50 -0
  151. package/dist/src/genomeSpy/interactionDispatcher.d.ts.map +1 -0
  152. package/dist/src/genomeSpy/interactionDispatcher.js +203 -0
  153. package/dist/src/genomeSpy/viewContextFactory.d.ts +4 -2
  154. package/dist/src/genomeSpy/viewContextFactory.d.ts.map +1 -1
  155. package/dist/src/genomeSpy/viewContextFactory.js +12 -4
  156. package/dist/src/genomeSpy/viewDataInit.d.ts.map +1 -1
  157. package/dist/src/genomeSpy/viewDataInit.js +7 -3
  158. package/dist/src/genomeSpy.d.ts +1 -124
  159. package/dist/src/genomeSpy.d.ts.map +1 -1
  160. package/dist/src/genomeSpy.js +7 -688
  161. package/dist/src/genomeSpyBase.d.ts +133 -0
  162. package/dist/src/genomeSpyBase.d.ts.map +1 -0
  163. package/dist/src/genomeSpyBase.js +719 -0
  164. package/dist/src/gl/arrayBuilder.d.ts.map +1 -1
  165. package/dist/src/gl/arrayBuilder.js +0 -3
  166. package/dist/src/gl/colorUtils.d.ts.map +1 -1
  167. package/dist/src/gl/colorUtils.js +3 -0
  168. package/dist/src/gl/dataToVertices.d.ts.map +1 -1
  169. package/dist/src/gl/dataToVertices.js +13 -8
  170. package/dist/src/gl/glslScaleGenerator.d.ts +2 -2
  171. package/dist/src/gl/glslScaleGenerator.d.ts.map +1 -1
  172. package/dist/src/gl/glslScaleGenerator.js +5 -7
  173. package/dist/src/index.d.ts +3 -9
  174. package/dist/src/index.d.ts.map +1 -1
  175. package/dist/src/index.js +5 -114
  176. package/dist/src/marks/__snapshots__/shaderSnapshot.test.js.snap +4462 -0
  177. package/dist/src/marks/link.d.ts.map +1 -1
  178. package/dist/src/marks/link.js +0 -23
  179. package/dist/src/marks/mark.d.ts +8 -1
  180. package/dist/src/marks/mark.d.ts.map +1 -1
  181. package/dist/src/marks/mark.js +61 -20
  182. package/dist/src/marks/markUtils.d.ts +18 -1
  183. package/dist/src/marks/markUtils.d.ts.map +1 -1
  184. package/dist/src/marks/markUtils.js +52 -4
  185. package/dist/src/marks/point.d.ts.map +1 -1
  186. package/dist/src/marks/point.js +6 -26
  187. package/dist/src/marks/rect.d.ts.map +1 -1
  188. package/dist/src/marks/rect.js +13 -21
  189. package/dist/src/marks/rule.d.ts +7 -2
  190. package/dist/src/marks/rule.d.ts.map +1 -1
  191. package/dist/src/marks/rule.js +125 -16
  192. package/dist/src/marks/text.d.ts.map +1 -1
  193. package/dist/src/marks/text.js +5 -47
  194. package/dist/src/minimal.d.ts +8 -0
  195. package/dist/src/minimal.d.ts.map +1 -0
  196. package/dist/src/minimal.js +21 -0
  197. package/dist/src/paramRuntime/viewParamRuntime.d.ts +19 -0
  198. package/dist/src/paramRuntime/viewParamRuntime.d.ts.map +1 -1
  199. package/dist/src/paramRuntime/viewParamRuntime.js +35 -0
  200. package/dist/src/scale/scale.d.ts.map +1 -1
  201. package/dist/src/scale/scale.js +13 -7
  202. package/dist/src/scales/axisResolution.d.ts.map +1 -1
  203. package/dist/src/scales/axisResolution.js +9 -5
  204. package/dist/src/scales/domainPlanner.d.ts +28 -8
  205. package/dist/src/scales/domainPlanner.d.ts.map +1 -1
  206. package/dist/src/scales/domainPlanner.js +207 -73
  207. package/dist/src/scales/indexLikeDomainUtils.d.ts +29 -0
  208. package/dist/src/scales/indexLikeDomainUtils.d.ts.map +1 -0
  209. package/dist/src/scales/indexLikeDomainUtils.js +67 -0
  210. package/dist/src/scales/resolutionMemberOrder.d.ts +15 -0
  211. package/dist/src/scales/resolutionMemberOrder.d.ts.map +1 -0
  212. package/dist/src/scales/resolutionMemberOrder.js +22 -0
  213. package/dist/src/scales/scaleInteractionController.d.ts.map +1 -1
  214. package/dist/src/scales/scaleInteractionController.js +43 -4
  215. package/dist/src/scales/scalePropsResolver.d.ts +3 -1
  216. package/dist/src/scales/scalePropsResolver.d.ts.map +1 -1
  217. package/dist/src/scales/scalePropsResolver.js +83 -6
  218. package/dist/src/scales/scaleResolution.d.ts +23 -0
  219. package/dist/src/scales/scaleResolution.d.ts.map +1 -1
  220. package/dist/src/scales/scaleResolution.js +220 -58
  221. package/dist/src/scales/scaleResolutionTestUtils.d.ts.map +1 -1
  222. package/dist/src/scales/scaleResolutionTestUtils.js +6 -2
  223. package/dist/src/scales/scaleRules.d.ts.map +1 -1
  224. package/dist/src/scales/scaleRules.js +16 -2
  225. package/dist/src/scales/selectionDomainUtils.d.ts +30 -0
  226. package/dist/src/scales/selectionDomainUtils.d.ts.map +1 -1
  227. package/dist/src/scales/selectionDomainUtils.js +116 -1
  228. package/dist/src/screenshotHarness.js +3 -4
  229. package/dist/src/spec/axis.d.ts +41 -30
  230. package/dist/src/spec/channel.d.ts +15 -9
  231. package/dist/src/spec/config.d.ts +264 -0
  232. package/dist/src/spec/data.d.ts +7 -0
  233. package/dist/src/spec/decoration.d.ts +51 -0
  234. package/dist/src/spec/exampleFiles.d.ts +12 -0
  235. package/dist/src/spec/exampleFiles.d.ts.map +1 -0
  236. package/dist/src/spec/exampleFiles.js +52 -0
  237. package/dist/src/spec/font.d.ts +1 -1
  238. package/dist/src/spec/mark.d.ts +97 -13
  239. package/dist/src/spec/parameter.d.ts +30 -10
  240. package/dist/src/spec/root.d.ts +14 -0
  241. package/dist/src/spec/scale.d.ts +18 -13
  242. package/dist/src/spec/title.d.ts +13 -2
  243. package/dist/src/spec/tooltip.d.ts +1 -1
  244. package/dist/src/spec/transform.d.ts +39 -4
  245. package/dist/src/spec/view.d.ts +67 -19
  246. package/dist/src/styles/genome-spy.css +55 -55
  247. package/dist/src/styles/genome-spy.css.d.ts +1 -1
  248. package/dist/src/styles/genome-spy.css.d.ts.map +1 -1
  249. package/dist/src/styles/genome-spy.css.js +23 -22
  250. package/dist/src/testSetup.d.ts +2 -0
  251. package/dist/src/testSetup.d.ts.map +1 -0
  252. package/dist/src/testSetup.js +5 -0
  253. package/dist/src/tooltip/dataTooltipHandler.js +8 -2
  254. package/dist/src/tooltip/tooltipContext.d.ts.map +1 -1
  255. package/dist/src/tooltip/tooltipContext.js +3 -2
  256. package/dist/src/types/embedApi.d.ts +7 -0
  257. package/dist/src/types/encoder.d.ts +17 -15
  258. package/dist/src/types/scaleResolutionApi.d.ts +20 -0
  259. package/dist/src/types/viewContext.d.ts +23 -1
  260. package/dist/src/utils/expression.d.ts +2 -2
  261. package/dist/src/utils/expression.d.ts.map +1 -1
  262. package/dist/src/utils/expression.js +63 -8
  263. package/dist/src/utils/field.d.ts.map +1 -1
  264. package/dist/src/utils/field.js +0 -1
  265. package/dist/src/utils/inertia.d.ts.map +1 -1
  266. package/dist/src/utils/inertia.js +0 -1
  267. package/dist/src/utils/inputBinding.d.ts +1 -1
  268. package/dist/src/utils/interaction.d.ts +109 -0
  269. package/dist/src/utils/interaction.d.ts.map +1 -0
  270. package/dist/src/utils/interaction.js +200 -0
  271. package/dist/src/utils/interactionEvent.d.ts +21 -42
  272. package/dist/src/utils/interactionEvent.d.ts.map +1 -1
  273. package/dist/src/utils/interactionEvent.js +43 -66
  274. package/dist/src/utils/kWayMerge.js +1 -1
  275. package/dist/src/utils/mergeObjects.d.ts.map +1 -1
  276. package/dist/src/utils/mergeObjects.js +0 -2
  277. package/dist/src/utils/radixSort.d.ts.map +1 -1
  278. package/dist/src/utils/radixSort.js +0 -2
  279. package/dist/src/utils/throttle.d.ts.map +1 -1
  280. package/dist/src/utils/throttle.js +0 -2
  281. package/dist/src/utils/ui/tooltip.d.ts +1 -0
  282. package/dist/src/utils/ui/tooltip.d.ts.map +1 -1
  283. package/dist/src/utils/ui/tooltip.js +1 -0
  284. package/dist/src/utils/url.js +1 -1
  285. package/dist/src/view/axisGridView.d.ts +1 -1
  286. package/dist/src/view/axisGridView.d.ts.map +1 -1
  287. package/dist/src/view/axisGridView.js +2 -47
  288. package/dist/src/view/axisView.d.ts +2 -3
  289. package/dist/src/view/axisView.d.ts.map +1 -1
  290. package/dist/src/view/axisView.js +251 -106
  291. package/dist/src/view/concatView.d.ts +2 -1
  292. package/dist/src/view/concatView.d.ts.map +1 -1
  293. package/dist/src/view/concatView.js +4 -2
  294. package/dist/src/view/containerMutationHelper.d.ts +3 -0
  295. package/dist/src/view/containerMutationHelper.d.ts.map +1 -1
  296. package/dist/src/view/containerMutationHelper.js +4 -1
  297. package/dist/src/view/facetView.d.ts +1 -1
  298. package/dist/src/view/facetView.js +3 -3
  299. package/dist/src/view/flowBuilder.js +2 -2
  300. package/dist/src/view/gridView/gridChild.d.ts +6 -0
  301. package/dist/src/view/gridView/gridChild.d.ts.map +1 -1
  302. package/dist/src/view/gridView/gridChild.js +72 -43
  303. package/dist/src/view/gridView/gridView.d.ts.map +1 -1
  304. package/dist/src/view/gridView/gridView.js +255 -101
  305. package/dist/src/view/gridView/keyboardZoomController.d.ts +2 -2
  306. package/dist/src/view/gridView/keyboardZoomController.d.ts.map +1 -1
  307. package/dist/src/view/gridView/keyboardZoomController.js +1 -1
  308. package/dist/src/view/gridView/scrollbar.d.ts.map +1 -1
  309. package/dist/src/view/gridView/scrollbar.js +4 -2
  310. package/dist/src/view/gridView/selectionRect.d.ts +4 -0
  311. package/dist/src/view/gridView/selectionRect.d.ts.map +1 -1
  312. package/dist/src/view/gridView/selectionRect.js +20 -1
  313. package/dist/src/view/gridView/separatorView.d.ts +1 -0
  314. package/dist/src/view/gridView/separatorView.d.ts.map +1 -1
  315. package/dist/src/view/gridView/separatorView.js +9 -0
  316. package/dist/src/view/interactionRouting.d.ts +20 -0
  317. package/dist/src/view/interactionRouting.d.ts.map +1 -0
  318. package/dist/src/view/interactionRouting.js +53 -0
  319. package/dist/src/view/layerView.d.ts.map +1 -1
  320. package/dist/src/view/layerView.js +12 -9
  321. package/dist/src/view/layout/grid.js +1 -1
  322. package/dist/src/view/renderingContext/bufferedViewRenderingContext.d.ts.map +1 -1
  323. package/dist/src/view/renderingContext/bufferedViewRenderingContext.js +0 -2
  324. package/dist/src/view/testUtils.d.ts +17 -3
  325. package/dist/src/view/testUtils.d.ts.map +1 -1
  326. package/dist/src/view/testUtils.js +62 -69
  327. package/dist/src/view/title.d.ts +8 -1
  328. package/dist/src/view/title.d.ts.map +1 -1
  329. package/dist/src/view/title.js +66 -76
  330. package/dist/src/view/unitView.d.ts +1 -1
  331. package/dist/src/view/unitView.d.ts.map +1 -1
  332. package/dist/src/view/unitView.js +67 -17
  333. package/dist/src/view/view.d.ts +76 -30
  334. package/dist/src/view/view.d.ts.map +1 -1
  335. package/dist/src/view/view.js +136 -47
  336. package/dist/src/view/viewFactory.d.ts +11 -3
  337. package/dist/src/view/viewFactory.d.ts.map +1 -1
  338. package/dist/src/view/viewFactory.js +37 -11
  339. package/dist/src/view/viewUtils.d.ts.map +1 -1
  340. package/dist/src/view/viewUtils.js +41 -5
  341. package/dist/src/view/zoom.d.ts +2 -2
  342. package/dist/src/view/zoom.d.ts.map +1 -1
  343. package/dist/src/view/zoom.js +21 -23
  344. package/package.json +18 -10
  345. package/dist/bundle/AbortablePromiseCache-Dj0vzLnp.js +0 -149
  346. package/dist/bundle/browser-0iNU5Wit.js +0 -138
  347. package/dist/bundle/index-BYsZN7b0.js +0 -1597
  348. package/dist/bundle/index-C3kClAEN.js +0 -1771
  349. package/dist/bundle/index-C7wOh6y1.js +0 -657
  350. package/dist/bundle/index-CRaQAuki.js +0 -326
  351. package/dist/bundle/index-D9v1PCj9.js +0 -507
  352. package/dist/bundle/index-GDOuv_D5.js +0 -266
  353. package/dist/bundle/index-Gt44EOIH.js +0 -628
  354. package/dist/bundle/inflate-GtwLkvSP.js +0 -1048
  355. package/dist/bundle/parquetRead-BnAGCa4_.js +0 -1663
  356. package/dist/bundle/unzip-Bac01w6X.js +0 -1492
  357. package/dist/src/config/scaleDefaults.d.ts +0 -8
  358. package/dist/src/config/scaleDefaults.d.ts.map +0 -1
  359. package/dist/src/config/scaleDefaults.js +0 -45
@@ -1,4 +1,3 @@
1
- /* eslint-disable max-depth */
2
1
  import { primaryPositionalChannels } from "../../encoder/encoder.js";
3
2
  import {
4
3
  FlexDimensions,
@@ -12,6 +11,10 @@ import Padding from "../layout/padding.js";
12
11
  import Rectangle from "../layout/rectangle.js";
13
12
  import AxisView, { CHANNEL_ORIENTS, ORIENT_CHANNELS } from "../axisView.js";
14
13
  import ContainerView from "../containerView.js";
14
+ import {
15
+ propagateInteraction,
16
+ propagateInteractionSurface,
17
+ } from "../interactionRouting.js";
15
18
  import LayerView from "../layerView.js";
16
19
  import UnitView from "../unitView.js";
17
20
  import { interactionToZoom } from "../zoom.js";
@@ -20,6 +23,26 @@ import KeyboardZoomController from "./keyboardZoomController.js";
20
23
  import SeparatorView, { resolveSeparatorProps } from "./separatorView.js";
21
24
  import { getZoomableResolutions } from "./zoomNavigationUtils.js";
22
25
 
26
+ // Secondary ordering within a z-index bucket for GridView-owned decorations.
27
+ // These are not z-indices themselves: actual layering is decided first by the
28
+ // decoration's zindex (underlay vs overlay relative to content), and these
29
+ // values are only used as tie-break phases among decorations in the same batch.
30
+ const DECORATION_ORDER = Object.freeze({
31
+ background: 0,
32
+ separator: 10,
33
+ grid: 20,
34
+ backgroundStroke: 30,
35
+ axis: 40,
36
+ selectionRect: 80,
37
+ scrollbar: 90,
38
+ title: 100,
39
+ });
40
+
41
+ // Default z-index for axes and view strokes when the content is clipped or
42
+ // scrollable. This keeps guides above content-edge artifacts while still
43
+ // letting an explicit user zindex override the default.
44
+ const CLIPPED_DECORATION_ZINDEX = 10;
45
+
23
46
  /**
24
47
  * Modeled after: https://vega.github.io/vega/docs/layout/
25
48
  *
@@ -543,7 +566,6 @@ export default class GridView extends ContainerView {
543
566
  * @param {import("../layout/rectangle.js").default} coords
544
567
  * @param {import("../../types/rendering.js").RenderingOptions} [options]
545
568
  */
546
- // eslint-disable-next-line complexity
547
569
  render(context, coords, options = {}) {
548
570
  super.render(context, coords, options);
549
571
 
@@ -585,8 +607,8 @@ export default class GridView extends ContainerView {
585
607
  const round = (x) =>
586
608
  Math.round(x * devicePixelRatio) / devicePixelRatio;
587
609
 
588
- // Two-phase render: compute layout once, then render backgrounds/separators
589
- // before gridlines/axes/marks without recomputing per-child coords.
610
+ // Compute layout once and then dispatch decorations around the content
611
+ // render pass without recomputing per-child coordinates.
590
612
  const renderItems = [];
591
613
 
592
614
  for (const [i, gridChild] of this.#visibleChildren.entries()) {
@@ -685,14 +707,62 @@ export default class GridView extends ContainerView {
685
707
  });
686
708
  }
687
709
 
688
- for (const item of renderItems) {
689
- item.background?.render(context, item.clippedChildCoords, {
690
- ...options,
691
- clipRect: undefined,
710
+ const gridOverhang = this.#getGridOverhang();
711
+
712
+ /** @type {{ zindex: number, order: number, sequence: number, render: () => void }[]} */
713
+ const underlays = [];
714
+ /** @type {{ zindex: number, order: number, sequence: number, render: () => void }[]} */
715
+ const overlays = [];
716
+ /** @type {(() => void)[]} */
717
+ const contents = [];
718
+ let sequence = 0;
719
+
720
+ const queueDecoration = (
721
+ /** @type {number} */ zindex,
722
+ /** @type {number} */ order,
723
+ /** @type {() => void} */ render
724
+ ) => {
725
+ const target = zindex > 0 ? overlays : underlays;
726
+ target.push({
727
+ zindex,
728
+ order,
729
+ sequence: sequence++,
730
+ render,
692
731
  });
693
- }
732
+ };
694
733
 
695
- const gridOverhang = this.#getGridOverhang();
734
+ const renderDecorations = (
735
+ /** @type {{ zindex: number, order: number, sequence: number, render: () => void }[]} */ items
736
+ ) => {
737
+ items.sort(
738
+ (a, b) =>
739
+ a.zindex - b.zindex ||
740
+ a.order - b.order ||
741
+ a.sequence - b.sequence
742
+ );
743
+
744
+ for (const item of items) {
745
+ item.render();
746
+ }
747
+ };
748
+
749
+ for (const item of renderItems) {
750
+ if (item.background) {
751
+ queueDecoration(
752
+ item.gridChild.backgroundZindex,
753
+ DECORATION_ORDER.background,
754
+ () =>
755
+ item.background?.render(
756
+ context,
757
+ item.clippedChildCoords,
758
+ {
759
+ ...options,
760
+ clipRect: undefined,
761
+ }
762
+ )
763
+ );
764
+ }
765
+ }
696
766
 
697
767
  const verticalSeparator = this.#separatorViews.vertical;
698
768
  if (verticalSeparator) {
@@ -704,7 +774,11 @@ export default class GridView extends ContainerView {
704
774
  this.wrappingFacet,
705
775
  gridOverhang
706
776
  );
707
- verticalSeparator.render(context, coords, options);
777
+ queueDecoration(
778
+ verticalSeparator.getZindex(),
779
+ DECORATION_ORDER.separator,
780
+ () => verticalSeparator.render(context, coords, options)
781
+ );
708
782
  }
709
783
 
710
784
  const horizontalSeparator = this.#separatorViews.horizontal;
@@ -717,7 +791,11 @@ export default class GridView extends ContainerView {
717
791
  this.wrappingFacet,
718
792
  gridOverhang
719
793
  );
720
- horizontalSeparator.render(context, coords, options);
794
+ queueDecoration(
795
+ horizontalSeparator.getZindex(),
796
+ DECORATION_ORDER.separator,
797
+ () => horizontalSeparator.render(context, coords, options)
798
+ );
721
799
  }
722
800
 
723
801
  for (const item of renderItems) {
@@ -739,24 +817,44 @@ export default class GridView extends ContainerView {
739
817
  row,
740
818
  } = item;
741
819
 
820
+ const clipped = isClippedChildren(view) || scrollable;
821
+
742
822
  for (const gridLineView of Object.values(gridLines)) {
743
- gridLineView.render(context, viewportCoords, options);
823
+ queueDecoration(
824
+ gridLineView.axisProps.zindex ?? 0,
825
+ DECORATION_ORDER.grid,
826
+ () => gridLineView.render(context, viewportCoords, options)
827
+ );
744
828
  }
745
829
 
746
- const clipped = isClippedChildren(view) || scrollable;
830
+ const renderContent = () =>
831
+ view.render(
832
+ context,
833
+ viewCoords,
834
+ clipped
835
+ ? {
836
+ ...options,
837
+ clipRect: clippedChildCoords,
838
+ }
839
+ : options
840
+ );
747
841
 
748
- // If clipped, the axes should be drawn on top of the marks (because clipping may not be pixel-perfect)
749
- if (clipped) {
750
- view.render(context, viewCoords, {
751
- ...options,
752
- clipRect: clippedChildCoords,
753
- });
754
- }
842
+ contents.push(renderContent);
755
843
 
756
- backgroundStroke?.render(context, clippedChildCoords, {
757
- ...options,
758
- clipRect: undefined,
759
- });
844
+ if (backgroundStroke) {
845
+ queueDecoration(
846
+ defaultBackgroundStrokeZindex(
847
+ gridChild.backgroundStrokeZindex,
848
+ clipped
849
+ ),
850
+ DECORATION_ORDER.backgroundStroke,
851
+ () =>
852
+ backgroundStroke?.render(context, clippedChildCoords, {
853
+ ...options,
854
+ clipRect: undefined,
855
+ })
856
+ );
857
+ }
760
858
 
761
859
  // Independent axes
762
860
  for (const [orient, axisView] of Object.entries(axes)) {
@@ -811,10 +909,15 @@ export default class GridView extends ContainerView {
811
909
  );
812
910
  }
813
911
 
814
- axisView.render(context, translatedCoords, {
815
- ...options,
816
- clipRect,
817
- });
912
+ queueDecoration(
913
+ defaultAxisZindex(axisView.axisProps.zindex, clipped),
914
+ DECORATION_ORDER.axis,
915
+ () =>
916
+ axisView.render(context, translatedCoords, {
917
+ ...options,
918
+ clipRect,
919
+ })
920
+ );
818
921
  }
819
922
 
820
923
  // Axes shared between children
@@ -829,109 +932,136 @@ export default class GridView extends ContainerView {
829
932
  (orient == "top" && row == 0) ||
830
933
  (orient == "bottom" && row == grid.nRows - 1)
831
934
  ) {
832
- axisView.render(
833
- context,
834
- translateAxisCoords(
835
- viewportCoords.shrink(gridChild.view.getOverhang()),
836
- orient,
837
- axisView
838
- ),
839
- options
935
+ queueDecoration(
936
+ defaultAxisZindex(axisView.axisProps.zindex, clipped),
937
+ DECORATION_ORDER.axis,
938
+ () =>
939
+ axisView.render(
940
+ context,
941
+ translateAxisCoords(
942
+ viewportCoords.shrink(
943
+ gridChild.view.getOverhang()
944
+ ),
945
+ orient,
946
+ axisView
947
+ ),
948
+ options
949
+ )
840
950
  );
841
951
  }
842
952
  }
843
953
 
844
- if (!clipped) {
845
- view.render(context, viewCoords, options);
954
+ if (selectionRect) {
955
+ queueDecoration(
956
+ selectionRect.getZindex(),
957
+ DECORATION_ORDER.selectionRect,
958
+ () => selectionRect?.render(context, viewCoords, options)
959
+ );
846
960
  }
847
961
 
848
- selectionRect?.render(context, viewCoords, options);
849
-
850
962
  for (const scrollbar of Object.values(gridChild.scrollbars)) {
851
- scrollbar.updateScrollbar(viewportCoords, viewCoords);
852
- scrollbar.render(context, coords, options);
963
+ queueDecoration(1, DECORATION_ORDER.scrollbar, () => {
964
+ scrollbar.updateScrollbar(viewportCoords, viewCoords);
965
+ scrollbar.render(context, coords, options);
966
+ });
853
967
  }
854
968
 
855
- title?.render(context, viewportCoords, options);
969
+ if (title) {
970
+ queueDecoration(
971
+ gridChild.titleZindex,
972
+ DECORATION_ORDER.title,
973
+ () => title?.render(context, viewportCoords, options)
974
+ );
975
+ }
976
+ }
977
+
978
+ renderDecorations(underlays);
979
+
980
+ for (const renderContent of contents) {
981
+ renderContent();
856
982
  }
857
983
 
984
+ renderDecorations(overlays);
985
+
858
986
  context.popView(this);
859
987
  }
860
988
 
861
989
  /**
862
- * @param {import("../../utils/interactionEvent.js").default} event
990
+ * @param {import("../../utils/interaction.js").default} event
863
991
  */
864
- propagateInteractionEvent(event) {
865
- this.handleInteractionEvent(undefined, event, true);
866
-
867
- if (event.stopped) {
868
- return;
869
- }
992
+ propagateInteraction(event) {
993
+ propagateInteraction(this, event, () => {
994
+ const pointedChild = this.#visibleChildren.find((gridChild) =>
995
+ gridChild.coords.containsPoint(event.point.x, event.point.y)
996
+ );
997
+ const pointedView = pointedChild?.view;
870
998
 
871
- const pointedChild = this.#visibleChildren.find((gridChild) =>
872
- gridChild.coords.containsPoint(event.point.x, event.point.y)
873
- );
874
- const pointedView = pointedChild?.view;
999
+ if (event.type === "wheelclaimprobe") {
1000
+ // Probe path: claim wheel ownership without executing regular wheel
1001
+ // behavior. InteractionController uses this to decide whether native
1002
+ // wheel should be preventDefault()'ed before inertia kicks in.
1003
+ if (!pointedView) {
1004
+ return;
1005
+ }
875
1006
 
876
- if (event.type === "wheelclaimprobe") {
877
- // Probe path: claim wheel ownership without executing regular wheel
878
- // behavior. InteractionController uses this to decide whether native
879
- // wheel should be preventDefault()'ed before inertia kicks in.
880
- if (!pointedView) {
1007
+ if (isZoomInteractionView(pointedView)) {
1008
+ if (hasZoomableResolutions(pointedView)) {
1009
+ event.claimWheel();
1010
+ }
1011
+ } else {
1012
+ pointedView.propagateInteraction(event);
1013
+ }
881
1014
  return;
882
1015
  }
883
1016
 
884
- if (isZoomInteractionView(pointedView)) {
885
- if (hasZoomableResolutions(pointedView)) {
886
- event.claimWheel();
887
- }
888
- } else {
889
- pointedView.propagateInteractionEvent(event);
890
- }
891
- return;
892
- }
1017
+ this.#keyboardZoomController?.handlePointerEvent(
1018
+ pointedChild,
1019
+ event
1020
+ );
893
1021
 
894
- this.#keyboardZoomController?.handlePointerEvent(pointedChild, event);
1022
+ for (const scrollbar of Object.values(
1023
+ pointedChild?.scrollbars ?? {}
1024
+ )) {
1025
+ propagateInteractionSurface(
1026
+ event,
1027
+ () =>
1028
+ scrollbar.coords.containsPoint(
1029
+ event.point.x,
1030
+ event.point.y
1031
+ ),
1032
+ () => scrollbar.propagateInteraction(event)
1033
+ );
895
1034
 
896
- for (const scrollbar of Object.values(pointedChild?.scrollbars ?? {})) {
897
- if (scrollbar.coords.containsPoint(event.point.x, event.point.y)) {
898
- scrollbar.propagateInteractionEvent(event);
899
1035
  if (event.stopped) {
900
1036
  return;
901
1037
  }
902
1038
  }
903
- }
904
1039
 
905
- if (pointedView) {
906
- pointedView.propagateInteractionEvent(event);
907
-
908
- if (event.stopped) {
1040
+ if (!pointedView) {
909
1041
  return;
910
1042
  }
911
1043
 
912
- // Hmm, maybe this should be registered when needed and not include
913
- // as a hardcoded interaction?
914
- if (isZoomInteractionView(pointedView)) {
915
- interactionToZoom(
916
- event,
917
- pointedChild.coords,
918
- (zoomEvent) =>
919
- this.#handleZoom(
920
- pointedChild.coords,
921
- pointedChild.view,
922
- zoomEvent
923
- ),
924
- this.context.getCurrentHover(),
925
- this.context.animator
926
- );
927
- }
928
- }
929
-
930
- if (event.stopped) {
931
- return;
932
- }
933
-
934
- this.handleInteractionEvent(undefined, event, false);
1044
+ propagateInteractionSurface(
1045
+ event,
1046
+ () => true,
1047
+ () => pointedView.propagateInteraction(event),
1048
+ isZoomInteractionView(pointedView)
1049
+ ? () =>
1050
+ interactionToZoom(
1051
+ event,
1052
+ pointedChild.coords,
1053
+ (zoomEvent) =>
1054
+ this.#handleZoom(
1055
+ pointedChild.coords,
1056
+ pointedChild.view,
1057
+ zoomEvent
1058
+ ),
1059
+ this.context.getCurrentHover(),
1060
+ this.context.animator
1061
+ )
1062
+ : undefined
1063
+ );
1064
+ });
935
1065
  }
936
1066
 
937
1067
  /**
@@ -1040,6 +1170,30 @@ function getSeparatorDirections(spec) {
1040
1170
  return ["horizontal", "vertical"];
1041
1171
  }
1042
1172
 
1173
+ /**
1174
+ * Default z-index for axes. Clipped or scrollable content gets a higher
1175
+ * default to keep guides above visible edge artifacts.
1176
+ *
1177
+ * @param {number | undefined} zindex
1178
+ * @param {boolean} clipped
1179
+ * @returns {number}
1180
+ */
1181
+ function defaultAxisZindex(zindex, clipped) {
1182
+ return zindex ?? (clipped ? CLIPPED_DECORATION_ZINDEX : 0);
1183
+ }
1184
+
1185
+ /**
1186
+ * Default z-index for view strokes. Clipped or scrollable content gets a
1187
+ * higher default to keep the stroke above visible edge artifacts.
1188
+ *
1189
+ * @param {number | undefined} zindex
1190
+ * @param {boolean} clipped
1191
+ * @returns {number}
1192
+ */
1193
+ function defaultBackgroundStrokeZindex(zindex, clipped) {
1194
+ return zindex ?? (clipped ? CLIPPED_DECORATION_ZINDEX : 0);
1195
+ }
1196
+
1043
1197
  /**
1044
1198
  *
1045
1199
  * @param {import("../layout/rectangle.js").default} coords
@@ -13,9 +13,9 @@ export default class KeyboardZoomController {
13
13
  });
14
14
  /**
15
15
  * @param {import("./gridChild.js").default | undefined} pointedChild
16
- * @param {import("../../utils/interactionEvent.js").default} event
16
+ * @param {import("../../utils/interaction.js").default} event
17
17
  */
18
- handlePointerEvent(pointedChild: import("./gridChild.js").default | undefined, event: import("../../utils/interactionEvent.js").default): void;
18
+ handlePointerEvent(pointedChild: import("./gridChild.js").default | undefined, event: import("../../utils/interaction.js").default): void;
19
19
  #private;
20
20
  }
21
21
  //# sourceMappingURL=keyboardZoomController.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"keyboardZoomController.d.ts","sourceRoot":"","sources":["../../../../src/view/gridView/keyboardZoomController.js"],"names":[],"mappings":"AAIA;;GAEG;AACH;IAuDI;;;;OAIG;IACH,mCAHG;QAA6D,OAAO,EAA5D,OAAO,4BAA4B,EAAE,OAAO;QACP,QAAQ,EAA7C,OAAO,YAAY,EAAE,OAAO;KACtC,EAKA;IAED;;;OAGG;IACH,iCAHW,OAAO,gBAAgB,EAAE,OAAO,GAAG,SAAS,SAC5C,OAAO,iCAAiC,EAAE,OAAO,QA0B3D;;CA4DJ"}
1
+ {"version":3,"file":"keyboardZoomController.d.ts","sourceRoot":"","sources":["../../../../src/view/gridView/keyboardZoomController.js"],"names":[],"mappings":"AAIA;;GAEG;AACH;IAuDI;;;;OAIG;IACH,mCAHG;QAA6D,OAAO,EAA5D,OAAO,4BAA4B,EAAE,OAAO;QACP,QAAQ,EAA7C,OAAO,YAAY,EAAE,OAAO;KACtC,EAKA;IAED;;;OAGG;IACH,iCAHW,OAAO,gBAAgB,EAAE,OAAO,GAAG,SAAS,SAC5C,OAAO,4BAA4B,EAAE,OAAO,QA0BtD;;CA4DJ"}
@@ -73,7 +73,7 @@ export default class KeyboardZoomController {
73
73
 
74
74
  /**
75
75
  * @param {import("./gridChild.js").default | undefined} pointedChild
76
- * @param {import("../../utils/interactionEvent.js").default} event
76
+ * @param {import("../../utils/interaction.js").default} event
77
77
  */
78
78
  handlePointerEvent(pointedChild, event) {
79
79
  if (!pointedChild) {
@@ -1 +1 @@
1
- {"version":3,"file":"scrollbar.d.ts","sourceRoot":"","sources":["../../../../src/view/gridView/scrollbar.js"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH;IAwBI;;;;OAIG;IACH,uBAJW,OAAO,gBAAgB,EAAE,OAAO,mBAChC,eAAe,YACf;QAAE,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,EAyH/D;IAxID;;;;;;OAMG;IACH,uBAAmB;IAkDf;;;;MAAoB;IAiFxB,2BAEC;IAED;;;OAGG;IACH,yBAHW,MAAM,6BACN;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,QAYtD;IAqFD;;;;;;;;;OASG;IACH,gCAHW,SAAS,iBACT,SAAS,QASnB;IAMG;;;;MAWC;;CAER;;;;;8BAnSY,YAAY,GAAG,UAAU;qBAPjB,gBAAgB;sBADf,wBAAwB"}
1
+ {"version":3,"file":"scrollbar.d.ts","sourceRoot":"","sources":["../../../../src/view/gridView/scrollbar.js"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH;IAwBI;;;;OAIG;IACH,uBAJW,OAAO,gBAAgB,EAAE,OAAO,mBAChC,eAAe,YACf;QAAE,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,EA2H/D;IA1ID;;;;;;OAMG;IACH,uBAAmB;IAkDf;;;;MAAoB;IAmFxB,2BAEC;IAED;;;OAGG;IACH,yBAHW,MAAM,6BACN;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,QAYtD;IAqFD;;;;;;;;;OASG;IACH,gCAHW,SAAS,iBACT,SAAS,QASnB;IAMG;;;;MAWC;;CAER;;;;;8BArSY,YAAY,GAAG,UAAU;qBAPjB,gBAAgB;sBADf,wBAAwB"}
@@ -112,7 +112,7 @@ export default class Scrollbar extends UnitView {
112
112
  // Smooth viewport offset updates
113
113
  this.#initViewportOffsetSmoother(this.viewportOffset);
114
114
 
115
- this.addInteractionEventListener("mousedown", (coords, event) => {
115
+ this.addInteractionListener("mousedown", (event) => {
116
116
  event.stopPropagation();
117
117
 
118
118
  if (this.#getMaxScrollOffset() <= 0) {
@@ -125,6 +125,7 @@ export default class Scrollbar extends UnitView {
125
125
  : mouseEvent.clientX;
126
126
 
127
127
  event.mouseEvent.preventDefault();
128
+ this.context.suspendHoverTracking();
128
129
 
129
130
  const initialScrollOffset = this.scrollOffset;
130
131
  const initialOffset = getMouseOffset(event.mouseEvent);
@@ -150,9 +151,10 @@ export default class Scrollbar extends UnitView {
150
151
  });
151
152
  };
152
153
 
153
- const onMouseup = () => {
154
+ const onMouseup = (/** @type {MouseEvent} */ upEvent) => {
154
155
  document.removeEventListener("mousemove", onMousemove);
155
156
  document.removeEventListener("mouseup", onMouseup);
157
+ this.context.resumeHoverTracking(upEvent);
156
158
  };
157
159
 
158
160
  document.addEventListener("mouseup", onMouseup, false);
@@ -1,3 +1,4 @@
1
+ export const INTERVAL_DRAG_ACTIVE_PARAM: "intervalDragActive";
1
2
  export default class SelectionRect extends LayerView<import("../../spec/view.js").LayerSpec> {
2
3
  /**
3
4
  * @typedef {import("../../spec/channel.js").PrimaryPositionalChannel} PrimaryPositionalChannel
@@ -9,6 +10,9 @@ export default class SelectionRect extends LayerView<import("../../spec/view.js"
9
10
  * @param {import("../../spec/parameter.js").BrushConfig} [brushConfig]
10
11
  */
11
12
  constructor(gridChild: import("./gridChild.js").default, selectionExpr: import("../../paramRuntime/types.js").ExprRefFunction, brushConfig?: import("../../spec/parameter.js").BrushConfig);
13
+ /** @type {number} */
14
+ _zindex: number;
15
+ getZindex(): number;
12
16
  }
13
17
  import LayerView from "../layerView.js";
14
18
  //# sourceMappingURL=selectionRect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"selectionRect.d.ts","sourceRoot":"","sources":["../../../../src/view/gridView/selectionRect.js"],"names":[],"mappings":"AAIA;IACI;;;OAGG;IAEH;;;;OAIG;IACH,uBAJW,OAAO,gBAAgB,EAAE,OAAO,iBAChC,OAAO,6BAA6B,EAAE,eAAe,gBACrD,OAAO,yBAAyB,EAAE,WAAW,EA+JvD;CACJ;sBA5KqB,iBAAiB"}
1
+ {"version":3,"file":"selectionRect.d.ts","sourceRoot":"","sources":["../../../../src/view/gridView/selectionRect.js"],"names":[],"mappings":"AAIA,yCAA0C,oBAAoB,CAAC;AAE/D;IACI;;;OAGG;IAEH;;;;OAIG;IACH,uBAJW,OAAO,gBAAgB,EAAE,OAAO,iBAChC,OAAO,6BAA6B,EAAE,eAAe,gBACrD,OAAO,yBAAyB,EAAE,WAAW,EA4KvD;IA1BG,qBAAqB;IACrB,SADW,MAAM,CACI;IA2BzB,oBAEC;CACJ;sBA/LqB,iBAAiB"}
@@ -2,6 +2,8 @@ import { primaryPositionalChannels } from "../../encoder/encoder.js";
2
2
  import LayerView from "../layerView.js";
3
3
  import { markViewAsNonAddressable } from "../viewSelectors.js";
4
4
 
5
+ export const INTERVAL_DRAG_ACTIVE_PARAM = "intervalDragActive";
6
+
5
7
  export default class SelectionRect extends LayerView {
6
8
  /**
7
9
  * @typedef {import("../../spec/channel.js").PrimaryPositionalChannel} PrimaryPositionalChannel
@@ -18,6 +20,7 @@ export default class SelectionRect extends LayerView {
18
20
  selectionExpr()
19
21
  );
20
22
  const channels = Object.keys(initialSelection.intervals);
23
+ const { zindex = 1, ...brushMarkProps } = brushConfig;
21
24
 
22
25
  if (primaryPositionalChannels.every((c) => !channels.includes(c))) {
23
26
  throw new Error(
@@ -29,6 +32,12 @@ export default class SelectionRect extends LayerView {
29
32
  const layerSpec = {
30
33
  name: "selectionRect",
31
34
  domainInert: true,
35
+ params: [
36
+ {
37
+ name: INTERVAL_DRAG_ACTIVE_PARAM,
38
+ value: false,
39
+ },
40
+ ],
32
41
  resolve: {
33
42
  scale: {
34
43
  x: "forced",
@@ -72,7 +81,10 @@ export default class SelectionRect extends LayerView {
72
81
  stroke: "black",
73
82
  strokeWidth: 1,
74
83
  strokeOpacity: 0.2,
75
- ...brushConfig,
84
+ cursor: brushMarkProps.cursor ?? {
85
+ expr: `${INTERVAL_DRAG_ACTIVE_PARAM} ? 'grabbing' : 'move'`,
86
+ },
87
+ ...brushMarkProps,
76
88
  },
77
89
  },
78
90
  });
@@ -147,6 +159,9 @@ export default class SelectionRect extends LayerView {
147
159
  }
148
160
  );
149
161
 
162
+ /** @type {number} */
163
+ this._zindex = zindex;
164
+
150
165
  markViewAsNonAddressable(this, { skipSubtree: true });
151
166
 
152
167
  const selectionListener = () => {
@@ -171,6 +186,10 @@ export default class SelectionRect extends LayerView {
171
186
 
172
187
  this.registerDisposer(selectionExpr.subscribe(selectionListener));
173
188
  }
189
+
190
+ getZindex() {
191
+ return this._zindex;
192
+ }
174
193
  }
175
194
 
176
195
  /**
@@ -29,6 +29,7 @@ export default class SeparatorView {
29
29
  * @returns {UnitView}
30
30
  */
31
31
  get view(): UnitView;
32
+ getZindex(): number;
32
33
  /**
33
34
  * @param {import("../layout/flexLayout.js").LocSize[]} flexCoords
34
35
  * @param {number} count
@@ -1 +1 @@
1
- {"version":3,"file":"separatorView.d.ts","sourceRoot":"","sources":["../../../../src/view/gridView/separatorView.js"],"names":[],"mappings":"AA2NA;;;GAGG;AACH,iDAHW,OAAO,oBAAoB,EAAE,cAAc,GAAG,OAAO,GAAG,SAAS,GAC/D,OAAO,oBAAoB,EAAE,cAAc,GAAG,IAAI,CAiB9D;AA/ND;;GAEG;AACH;IAsBI;;;;;;;;;OASG;IACH,+EATW;QACN,SAAS,EAAE,kBAAkB,CAAC;QAC9B,KAAK,EAAE,OAAO,oBAAoB,EAAE,cAAc,CAAC;QACnD,OAAO,EAAE,OAAO,4BAA4B,EAAE,OAAO,CAAC;QACtD,YAAY,EAAE,OAAO,qBAAqB,EAAE,OAAO,CAAC;QACpD,UAAU,EAAE,OAAO,YAAY,EAAE,OAAO,CAAC;QACzC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAA;KACpC,EAqBH;IAED;;OAEG;IACH,YAFa,QAAQ,CAIpB;IAED;;;;;;;OAOG;IACH,mBAPW,OAAO,yBAAyB,EAAE,OAAO,EAAE,SAC3C,MAAM,UACN,OAAO,wBAAwB,EAAE,OAAO,eACxC,CAAC,SAAS,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,iBACtD,OAAO,YACP,OAAO,sBAAsB,EAAE,OAAO,QAKhD;IAED;;;;OAIG;IACH,gBAJW,OAAO,6CAA6C,EAAE,OAAO,UAC7D,OAAO,wBAAwB,EAAE,OAAO,WACxC,OAAO,0BAA0B,EAAE,gBAAgB,QAI7D;;CAuHJ;iCArNY,YAAY,GAAG,UAAU;qBAJjB,gBAAgB"}
1
+ {"version":3,"file":"separatorView.d.ts","sourceRoot":"","sources":["../../../../src/view/gridView/separatorView.js"],"names":[],"mappings":"AAoOA;;;GAGG;AACH,iDAHW,OAAO,oBAAoB,EAAE,cAAc,GAAG,OAAO,GAAG,SAAS,GAC/D,OAAO,oBAAoB,EAAE,cAAc,GAAG,IAAI,CAiB9D;AAxOD;;GAEG;AACH;IAyBI;;;;;;;;;OASG;IACH,+EATW;QACN,SAAS,EAAE,kBAAkB,CAAC;QAC9B,KAAK,EAAE,OAAO,oBAAoB,EAAE,cAAc,CAAC;QACnD,OAAO,EAAE,OAAO,4BAA4B,EAAE,OAAO,CAAC;QACtD,YAAY,EAAE,OAAO,qBAAqB,EAAE,OAAO,CAAC;QACpD,UAAU,EAAE,OAAO,YAAY,EAAE,OAAO,CAAC;QACzC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAA;KACpC,EAuBH;IAED;;OAEG;IACH,YAFa,QAAQ,CAIpB;IAED,oBAEC;IAED;;;;;;;OAOG;IACH,mBAPW,OAAO,yBAAyB,EAAE,OAAO,EAAE,SAC3C,MAAM,UACN,OAAO,wBAAwB,EAAE,OAAO,eACxC,CAAC,SAAS,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,iBACtD,OAAO,YACP,OAAO,sBAAsB,EAAE,OAAO,QAKhD;IAED;;;;OAIG;IACH,gBAJW,OAAO,6CAA6C,EAAE,OAAO,UAC7D,OAAO,wBAAwB,EAAE,OAAO,WACxC,OAAO,0BAA0B,EAAE,gBAAgB,QAI7D;;CAuHJ;iCA9NY,YAAY,GAAG,UAAU;qBAJjB,gBAAgB"}
@@ -26,6 +26,9 @@ export default class SeparatorView {
26
26
  /** @type {UnitView} */
27
27
  #view;
28
28
 
29
+ /** @type {number} */
30
+ #zindex;
31
+
29
32
  /** @type {import("../../data/flowNode.js").Datum[]} */
30
33
  #data = [];
31
34
 
@@ -58,8 +61,10 @@ export default class SeparatorView {
58
61
  }) {
59
62
  this.#direction = direction;
60
63
  this.#includePlotMargin = props.includePlotMargin ?? true;
64
+ this.#zindex = props.zindex ?? 0;
61
65
  const markProps = { ...props };
62
66
  delete markProps.includePlotMargin;
67
+ delete markProps.zindex;
63
68
  this.#view = this.#createView(
64
69
  markProps,
65
70
  context,
@@ -76,6 +81,10 @@ export default class SeparatorView {
76
81
  return this.#view;
77
82
  }
78
83
 
84
+ getZindex() {
85
+ return this.#zindex;
86
+ }
87
+
79
88
  /**
80
89
  * @param {import("../layout/flexLayout.js").LocSize[]} flexCoords
81
90
  * @param {number} count