@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 +1 @@
1
- {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../src/marks/link.js"],"names":[],"mappings":"AAYA;;GAEG;AACH;IACI;;OAEG;IACH,sBAFW,OAAO,qBAAqB,EAAE,OAAO,EAkC/C;IAPG;;;;;OAKG;IACH,yBAAiC;IAkIjC;;kBAGiC,GAAG;;;;MAEnC;CA4FR;iBA/QgB,WAAW"}
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../src/marks/link.js"],"names":[],"mappings":"AAYA;;GAEG;AACH;IACI;;OAEG;IACH,sBAFW,OAAO,qBAAqB,EAAE,OAAO,EAW/C;IAPG;;;;;OAKG;IACH,yBAAiC;IAkIjC;;kBAGiC,GAAG;;;;MAEnC;CA4FR;iBAxPgB,WAAW"}
@@ -19,29 +19,6 @@ export default class LinkMark extends Mark {
19
19
  */
20
20
  constructor(unitView) {
21
21
  super(unitView);
22
-
23
- this.augmentDefaultProperties({
24
- x: 0.0,
25
- x2: undefined,
26
- y: 0.0,
27
- y2: undefined,
28
- size: 1.0,
29
- color: "black",
30
- opacity: 1.0,
31
-
32
- segments: 101, // Performance is affected more by the fill rate, i.e. number of pixels
33
- arcHeightFactor: 1.0,
34
- minArcHeight: 1.5,
35
- minPickingSize: 3.0,
36
- clampApex: false,
37
- maxChordLength: 50000,
38
- arcFadingDistance: false,
39
- noFadingOnPointSelection: true,
40
-
41
- linkShape: "arc",
42
- orient: "vertical",
43
- });
44
-
45
22
  /**
46
23
  * Only available if "WebGL Draft Extensions" is enabled in chrome://flags
47
24
  * But seems to work.
@@ -94,6 +94,13 @@ export default class Mark<P extends import("../spec/mark.js").MarkProps = import
94
94
  * @protected
95
95
  */
96
96
  protected augmentDefaultProperties(props: Partial<P>): void;
97
+ getCursorSpec(): string | import("../spec/parameter.js").ExprRef;
98
+ getCursor(): any;
99
+ /**
100
+ * @param {() => void} listener
101
+ * @param {(disposer: () => void) => void} [registerDisposer]
102
+ */
103
+ watchCursor(listener: () => void, registerDisposer?: (disposer: () => void) => void): void;
97
104
  get opaque(): boolean;
98
105
  /**
99
106
  * Returns the default hit test mode for this mark.
@@ -137,7 +144,7 @@ export default class Mark<P extends import("../spec/mark.js").MarkProps = import
137
144
  */
138
145
  get encoding(): import("../spec/channel.js").Encoding;
139
146
  getContext(): import("../types/viewContext.js").default;
140
- getType(): "link" | "point" | "text" | "rect" | "rule";
147
+ getType(): "point" | "link" | "text" | "rect" | "rule" | "tick";
141
148
  initializeData(): void;
142
149
  /**
143
150
  * Initialize encoders that encode fields of the data (or constants) to
@@ -1 +1 @@
1
- {"version":3,"file":"mark.d.ts","sourceRoot":"","sources":["../../../src/marks/mark.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mark.d.ts","sourceRoot":"","sources":["../../../src/marks/mark.js"],"names":[],"mappings":"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"}
@@ -58,6 +58,7 @@ import {
58
58
  isMultiPointSelection,
59
59
  isSinglePointSelection,
60
60
  } from "../selection/selection.js";
61
+ import { getConfiguredMarkDefaults } from "../config/markConfig.js";
61
62
 
62
63
  export const SAMPLE_FACET_UNIFORM = "SAMPLE_FACET_UNIFORM";
63
64
  export const SAMPLE_FACET_TEXTURE = "SAMPLE_FACET_TEXTURE";
@@ -103,6 +104,7 @@ export default class Mark {
103
104
  */
104
105
  constructor(unitView) {
105
106
  this.unitView = unitView;
107
+ const mark = this;
106
108
 
107
109
  /** @type {Partial<Record<Channel, import("../types/encoder.js").Encoder>>} */
108
110
  this.encoders = undefined;
@@ -170,18 +172,32 @@ export default class Mark {
170
172
  /** @type {RangeMap<any>} keep track of facet locations within the vertex array */
171
173
  this.rangeMap = new RangeMap();
172
174
 
173
- // TODO: Implement config: https://vega.github.io/vega-lite/docs/config.html
175
+ const configuredDefaults = getConfiguredMarkDefaults(
176
+ this.unitView.getConfigScopes(),
177
+ this.unitView.getMarkType(),
178
+ typeof this.unitView.spec.mark == "object"
179
+ ? this.unitView.spec.mark.style
180
+ : undefined
181
+ );
182
+
174
183
  this.defaultProperties = /** @type {P} */ ({
175
184
  get clip() {
176
- // TODO: Cache once the scales have been resolved
177
- // TODO: Only check channels that are used
178
- // TODO: provide more fine-grained xClip and yClip props
179
- return /** @type {import("../spec/channel.js").PositionalChannel[]} */ ([
180
- "x",
181
- "y",
182
- ])
183
- .map((channel) => unitView.getScaleResolution(channel))
184
- .some((resolution) => resolution?.isZoomable() ?? false);
185
+ return getCachedOrCall(mark, "defaultClip", () => {
186
+ // TODO: Only check channels that are used
187
+ // TODO: provide more fine-grained xClip and yClip props
188
+ for (const channel of /** @type {import("../spec/channel.js").PositionalChannel[]} */ ([
189
+ "x",
190
+ "y",
191
+ ])) {
192
+ if (
193
+ unitView.getScaleResolution(channel)?.isZoomable()
194
+ ) {
195
+ return true;
196
+ }
197
+ }
198
+
199
+ return false;
200
+ });
185
201
  },
186
202
  xOffset: 0,
187
203
  yOffset: 0,
@@ -192,6 +208,7 @@ export default class Mark {
192
208
  * This property is intended for internal usage.
193
209
  */
194
210
  minBufferSize: 0,
211
+ ...configuredDefaults,
195
212
  });
196
213
 
197
214
  /**
@@ -220,6 +237,33 @@ export default class Mark {
220
237
  );
221
238
  }
222
239
 
240
+ getCursorSpec() {
241
+ return this.properties.cursor;
242
+ }
243
+
244
+ getCursor() {
245
+ const cursor = this.getCursorSpec();
246
+ return isExprRef(cursor)
247
+ ? this.unitView.paramRuntime.evaluateAndGet(cursor.expr)
248
+ : cursor;
249
+ }
250
+
251
+ /**
252
+ * @param {() => void} listener
253
+ * @param {(disposer: () => void) => void} [registerDisposer]
254
+ */
255
+ watchCursor(listener, registerDisposer) {
256
+ const cursor = this.getCursorSpec();
257
+ if (!isExprRef(cursor)) {
258
+ return;
259
+ }
260
+
261
+ this.unitView.paramRuntime.watchExpression(cursor.expr, listener, {
262
+ scopeOwned: false,
263
+ registerDisposer,
264
+ });
265
+ }
266
+
223
267
  get opaque() {
224
268
  return false;
225
269
  }
@@ -380,7 +424,7 @@ export default class Mark {
380
424
  if (encoding.x) {
381
425
  // Building the x index is rarely necessary, but it's safer to build
382
426
  // it by default.
383
- encoding.x.buildIndex ??= true;
427
+ encoding.x.buildIndex ??= this.properties.buildIndex ?? true;
384
428
  }
385
429
 
386
430
  return encoding;
@@ -445,7 +489,6 @@ export default class Mark {
445
489
  * @param {string[]} [extraHeaders]
446
490
  * @protected
447
491
  */
448
- // eslint-disable-next-line complexity
449
492
  createAndLinkShaders(vertexShader, fragmentShader, extraHeaders = []) {
450
493
  const shaderChannels = this.getAttributes();
451
494
  const encoders = this.encoders;
@@ -473,8 +516,8 @@ export default class Mark {
473
516
  const dynamicMarkUniforms = [];
474
517
 
475
518
  const paramPredicates = Object.values(encoders)
476
- .flatMap((e) => e.accessors)
477
- .map((a) => a.predicate)
519
+ .flatMap((e) => e.branches ?? [])
520
+ .map((branch) => branch.predicate)
478
521
  .filter((p) => p.param);
479
522
 
480
523
  /**
@@ -787,12 +830,12 @@ export default class Mark {
787
830
  continue;
788
831
  }
789
832
 
790
- const { channelDef, accessors, scale } = encoder;
833
+ const { branches, channelDef, scale } = encoder;
791
834
 
792
835
  // Generate accessors, one for each condition -------------
793
836
 
794
- for (let i = 0; i < accessors.length; i++) {
795
- addAccessor(channel, accessors[i], i, scale);
837
+ for (let i = 0; i < branches.length; i++) {
838
+ addAccessor(channel, branches[i].accessor, i, scale);
796
839
  }
797
840
 
798
841
  // Generate scale if needed -------------------------------
@@ -863,7 +906,7 @@ export default class Mark {
863
906
 
864
907
  // Generate conditional encoder -------------------------------
865
908
 
866
- scaleCode.push(generateConditionalEncoderGlsl(channel, accessors));
909
+ scaleCode.push(generateConditionalEncoderGlsl(channel, branches));
867
910
  }
868
911
 
869
912
  // Generate a function that checks if the datum is subject to any point selection
@@ -1196,7 +1239,6 @@ export default class Mark {
1196
1239
  * @param {import("../types/rendering.js").GlobalRenderingOptions} options
1197
1240
  * @returns {(() => void)[]}
1198
1241
  */
1199
- // eslint-disable-next-line complexity
1200
1242
  prepareRender(options) {
1201
1243
  const glHelper = this.glHelper;
1202
1244
  const gl = this.gl;
@@ -1339,7 +1381,6 @@ export default class Mark {
1339
1381
  return () => undefined;
1340
1382
  }
1341
1383
 
1342
- // eslint-disable-next-line consistent-this
1343
1384
  const self = this;
1344
1385
 
1345
1386
  /** @type {function(import("../gl/dataToVertices.js").RangeEntry):void} rangeEntry */
@@ -4,10 +4,27 @@
4
4
  * @typedef {import("../spec/channel.js").Channel} Channel
5
5
  */
6
6
  /**
7
+ * Expands a primary positional channel into a coverage range.
8
+ *
9
+ * Rect-like marks use this to turn a discrete position into band coverage and
10
+ * a quantitative position into a zero-anchored span.
11
+ *
12
+ * @param {Encoding} encoding
13
+ * @param {import("../spec/channel.js").PrimaryPositionalChannel} channel
14
+ */
15
+ export function fixCoveragePositional(encoding: Encoding, channel: import("../spec/channel.js").PrimaryPositionalChannel): void;
16
+ /**
17
+ * Rewrites explicit ranged text on zero-based half-open coordinate systems to
18
+ * use interval edges instead of default band centers.
19
+ *
20
+ * With only `x`, text stays centered inside one band (`band = 0.5`). When both
21
+ * `x` and `x2` are defined for `index`/`locus`, the pair is interpreted as
22
+ * half-open interval edges, e.g. `[0, 1)`, so both endpoints use `band = 0`.
23
+ *
7
24
  * @param {Encoding} encoding
8
25
  * @param {import("../spec/channel.js").PrimaryPositionalChannel} channel
9
26
  */
10
- export function fixPositional(encoding: Encoding, channel: import("../spec/channel.js").PrimaryPositionalChannel): void;
27
+ export function fixHalfOpenRangedText(encoding: Encoding, channel: import("../spec/channel.js").PrimaryPositionalChannel): void;
11
28
  /**
12
29
  * @param {import("../spec/channel.js").Encoding} encoding
13
30
  * @param {boolean} filled
@@ -1 +1 @@
1
- {"version":3,"file":"markUtils.d.ts","sourceRoot":"","sources":["../../../src/marks/markUtils.js"],"names":[],"mappings":"AAOA;;;;GAIG;AAEH;;;GAGG;AACH,wCAHW,QAAQ,WACR,OAAO,oBAAoB,EAAE,wBAAwB,QAoD/D;AAcD;;;GAGG;AACH,oCAHW,OAAO,oBAAoB,EAAE,QAAQ,UACrC,OAAO,QAqBjB;AAED;;;GAGG;AACH,kCAHW,OAAO,oBAAoB,EAAE,QAAQ,UACrC,OAAO,QAsBjB;AAED;;;GAGG;AACH,oCAHW,OAAO,iBAAiB,EAAE,SAAS,GACjC,KAAK,IAAI,OAAO,iBAAiB,EAAE,UAAU,CAIzD;AAED;;;GAGG;AACH,mCAHW,OAAO,iBAAiB,EAAE,SAAS,GACjC,KAAK,IAAI,OAAO,iBAAiB,EAAE,SAAS,CAIxD;AAED;;;GAGG;AACH,mCAHW,OAAO,iBAAiB,EAAE,SAAS,GACjC,KAAK,IAAI,OAAO,iBAAiB,EAAE,SAAS,CAIxD;AAED;;;GAGG;AACH,mCAHW,OAAO,iBAAiB,EAAE,SAAS,GACjC,KAAK,IAAI,OAAO,iBAAiB,EAAE,SAAS,CAIxD;AAED;;;GAGG;AACH,mCAHW,OAAO,iBAAiB,EAAE,SAAS,GACjC,KAAK,IAAI,OAAO,iBAAiB,EAAE,SAAS,CAIxD;uBAjKY,OAAO,oBAAoB,EAAE,QAAQ;sBACrC,OAAO,oBAAoB,EAAE,OAAO"}
1
+ {"version":3,"file":"markUtils.d.ts","sourceRoot":"","sources":["../../../src/marks/markUtils.js"],"names":[],"mappings":"AAOA;;;;GAIG;AAEH;;;;;;;;GAQG;AACH,gDAHW,QAAQ,WACR,OAAO,oBAAoB,EAAE,wBAAwB,QAiD/D;AAED;;;;;;;;;;GAUG;AACH,gDAHW,QAAQ,WACR,OAAO,oBAAoB,EAAE,wBAAwB,QAmC/D;AAcD;;;GAGG;AACH,oCAHW,OAAO,oBAAoB,EAAE,QAAQ,UACrC,OAAO,QAqBjB;AAED;;;GAGG;AACH,kCAHW,OAAO,oBAAoB,EAAE,QAAQ,UACrC,OAAO,QAsBjB;AAED;;;GAGG;AACH,oCAHW,OAAO,iBAAiB,EAAE,SAAS,GACjC,KAAK,IAAI,OAAO,iBAAiB,EAAE,UAAU,CAIzD;AAED;;;GAGG;AACH,mCAHW,OAAO,iBAAiB,EAAE,SAAS,GACjC,KAAK,IAAI,OAAO,iBAAiB,EAAE,SAAS,CAIxD;AAED;;;GAGG;AACH,mCAHW,OAAO,iBAAiB,EAAE,SAAS,GACjC,KAAK,IAAI,OAAO,iBAAiB,EAAE,SAAS,CAIxD;AAED;;;GAGG;AACH,mCAHW,OAAO,iBAAiB,EAAE,SAAS,GACjC,KAAK,IAAI,OAAO,iBAAiB,EAAE,SAAS,CAIxD;AAED;;;GAGG;AACH,mCAHW,OAAO,iBAAiB,EAAE,SAAS,GACjC,KAAK,IAAI,OAAO,iBAAiB,EAAE,SAAS,CAIxD;uBAjNY,OAAO,oBAAoB,EAAE,QAAQ;sBACrC,OAAO,oBAAoB,EAAE,OAAO"}
@@ -12,10 +12,15 @@ import {
12
12
  */
13
13
 
14
14
  /**
15
+ * Expands a primary positional channel into a coverage range.
16
+ *
17
+ * Rect-like marks use this to turn a discrete position into band coverage and
18
+ * a quantitative position into a zero-anchored span.
19
+ *
15
20
  * @param {Encoding} encoding
16
21
  * @param {import("../spec/channel.js").PrimaryPositionalChannel} channel
17
22
  */
18
- export function fixPositional(encoding, channel) {
23
+ export function fixCoveragePositional(encoding, channel) {
19
24
  const secondaryChannel = getSecondaryChannel(channel);
20
25
 
21
26
  // Must make copies because the definition may be shared with other views/marks
@@ -48,9 +53,6 @@ export function fixPositional(encoding, channel) {
48
53
  const adjustment = (1 - (primary.band ?? 1)) / 2;
49
54
  primary.band = 0 + adjustment;
50
55
  secondary.band = 1 - adjustment;
51
-
52
- // TODO: If the secondary channel duplicates the primary channel
53
- // the data should be uploaded to the GPU only once.
54
56
  }
55
57
  } else if (primary.type != "quantitative") {
56
58
  const adjustment = (1 - (primary.band || 1)) / 2;
@@ -67,6 +69,52 @@ export function fixPositional(encoding, channel) {
67
69
  encoding[secondaryChannel] = secondary;
68
70
  }
69
71
 
72
+ /**
73
+ * Rewrites explicit ranged text on zero-based half-open coordinate systems to
74
+ * use interval edges instead of default band centers.
75
+ *
76
+ * With only `x`, text stays centered inside one band (`band = 0.5`). When both
77
+ * `x` and `x2` are defined for `index`/`locus`, the pair is interpreted as
78
+ * half-open interval edges, e.g. `[0, 1)`, so both endpoints use `band = 0`.
79
+ *
80
+ * @param {Encoding} encoding
81
+ * @param {import("../spec/channel.js").PrimaryPositionalChannel} channel
82
+ */
83
+ export function fixHalfOpenRangedText(encoding, channel) {
84
+ const secondaryChannel = getSecondaryChannel(channel);
85
+
86
+ const primary = encoding[channel];
87
+ const secondary = encoding[secondaryChannel];
88
+
89
+ if (
90
+ !primary ||
91
+ !secondary ||
92
+ isValueDef(primary) ||
93
+ isValueDef(secondary)
94
+ ) {
95
+ return;
96
+ }
97
+
98
+ if (
99
+ !isChannelDefWithScale(primary) ||
100
+ !isChannelDefWithScale(secondary) ||
101
+ !["index", "locus"].includes(primary.type)
102
+ ) {
103
+ return;
104
+ }
105
+
106
+ const primaryBand = /** @type {import("../spec/channel.js").BandMixins} */ (
107
+ primary
108
+ ).band;
109
+ const secondaryBand =
110
+ /** @type {import("../spec/channel.js").BandMixins} */ (secondary).band;
111
+
112
+ const band = primaryBand ?? secondaryBand ?? 0;
113
+
114
+ encoding[channel] = { ...primary, band };
115
+ encoding[secondaryChannel] = { ...secondary, band: secondaryBand ?? band };
116
+ }
117
+
70
118
  /**
71
119
  *
72
120
  * @param {import("../spec/channel.js").ChannelDef} channelDef
@@ -1 +1 @@
1
- {"version":3,"file":"point.d.ts","sourceRoot":"","sources":["../../../src/marks/point.js"],"names":[],"mappings":"AAmBA;;GAEG;AACH;IAGI;;OAEG;IACH,sBAFW,OAAO,qBAAqB,EAAE,OAAO,EAiD/C;IA0EO,iDAMC;IAkET,+BAkBC;;CAgDJ;iBApRgB,WAAW"}
1
+ {"version":3,"file":"point.d.ts","sourceRoot":"","sources":["../../../src/marks/point.js"],"names":[],"mappings":"AAoBA;;GAEG;AACH;IAGI;;OAEG;IACH,sBAFW,OAAO,qBAAqB,EAAE,OAAO,EAyB/C;IA6EO,iDAMC;IAkET,+BAkBC;;CAgDJ;iBAhQgB,WAAW"}
@@ -10,6 +10,7 @@ import FRAGMENT_SHADER from "./point.fragment.glsl.js";
10
10
  import COMMON_SHADER from "./point.common.glsl.js";
11
11
 
12
12
  import Mark from "./mark.js";
13
+ import { getEncoderDataAccessor } from "../encoder/encoder.js";
13
14
  import { isExprRef } from "../paramRuntime/paramUtils.js";
14
15
  import { sampleIterable } from "../data/transforms/sample.js";
15
16
  import { fixFill, fixStroke } from "./markUtils.js";
@@ -28,30 +29,6 @@ export default class PointMark extends Mark {
28
29
  */
29
30
  constructor(unitView) {
30
31
  super(unitView);
31
-
32
- this.augmentDefaultProperties({
33
- x: 0.5,
34
- y: 0.5,
35
- color: "#4c78a8",
36
- filled: true,
37
- opacity: 1.0,
38
- size: 100.0,
39
- // @ts-expect-error - TODO: Should be datum instead of value. But needs fixing.
40
- semanticScore: 0.0,
41
- shape: "circle",
42
- strokeWidth: 2.0,
43
- fillGradientStrength: 0.0,
44
- dx: 0,
45
- dy: 0,
46
- angle: 0,
47
-
48
- sampleFacetPadding: 0.1,
49
-
50
- semanticZoomFraction: 0.02,
51
-
52
- minPickingSize: 2.0,
53
- });
54
-
55
32
  // TODO: This mess should be simplified
56
33
  // TODO: createExpression should accept constant values or ExprRefs and allow
57
34
  // easy registration of requestRender listeners
@@ -142,8 +119,11 @@ export default class PointMark extends Mark {
142
119
 
143
120
  // Semantic zooming is currently solely a feature of point mark.
144
121
  // Build a sorted sample that allows for computing p-quantiles
145
- const semanticScoreAccessor =
146
- this.encoders["semanticScore"]?.dataAccessor?.asNumberAccessor();
122
+ const semanticScoreAccessor = this.encoders["semanticScore"]
123
+ ? getEncoderDataAccessor(
124
+ this.encoders["semanticScore"]
125
+ )?.asNumberAccessor()
126
+ : undefined;
147
127
  if (semanticScoreAccessor) {
148
128
  // n chosen using Stetson-Harrison
149
129
  // TODO: Throw on missing scores
@@ -1 +1 @@
1
- {"version":3,"file":"rect.d.ts","sourceRoot":"","sources":["../../../src/marks/rect.js"],"names":[],"mappings":"AA2BA;;GAEG;AACH;IACI;;OAEG;IACH,sBAFW,OAAO,qBAAqB,EAAE,OAAO,EAkB/C;IA0ND;;;;;;;;;;OAUG;IACH,8BALW,GAAG,KACH,OAAO,oBAAoB,EAAE,MAAM,GACjC,GAAG,CAyBf;;CACJ;iBAxSgB,WAAW"}
1
+ {"version":3,"file":"rect.d.ts","sourceRoot":"","sources":["../../../src/marks/rect.js"],"names":[],"mappings":"AA2BA;;GAEG;AACH;IACI;;OAEG;IACH,sBAFW,OAAO,qBAAqB,EAAE,OAAO,EAI/C;IA0ND;;;;;;;;;;OAUG;IACH,8BALW,GAAG,KACH,OAAO,oBAAoB,EAAE,MAAM,GACjC,GAAG,CA+Bf;;CACJ;iBAhSgB,WAAW"}
@@ -5,9 +5,9 @@ import COMMON_SHADER from "./rect.common.glsl.js";
5
5
  import { RectVertexBuilder } from "../gl/dataToVertices.js";
6
6
 
7
7
  import Mark from "./mark.js";
8
- import { fixFill, fixPositional, fixStroke } from "./markUtils.js";
8
+ import { fixCoveragePositional, fixFill, fixStroke } from "./markUtils.js";
9
9
  import { asArray } from "../utils/arrayUtils.js";
10
- import { isValueDef } from "../encoder/encoder.js";
10
+ import { getEncoderDataAccessor, isValueDef } from "../encoder/encoder.js";
11
11
  import { getCachedOrCall } from "../utils/propertyCacher.js";
12
12
  import { isDiscrete } from "vega-scale";
13
13
  import { cssColorToArray } from "../gl/colorUtils.js";
@@ -34,20 +34,6 @@ export default class RectMark extends Mark {
34
34
  */
35
35
  constructor(unitView) {
36
36
  super(unitView);
37
-
38
- this.augmentDefaultProperties({
39
- x2: undefined,
40
- y2: undefined,
41
- filled: true,
42
- color: "#4c78a8",
43
- opacity: 1.0,
44
- strokeWidth: 3,
45
- cornerRadius: 0.0,
46
-
47
- minWidth: 0.5, // Minimum width/height prevents annoying flickering when zooming
48
- minHeight: 0.5,
49
- minOpacity: 1.0,
50
- });
51
37
  }
52
38
 
53
39
  /**
@@ -107,8 +93,8 @@ export default class RectMark extends Mark {
107
93
  */
108
94
  fixEncoding(encoding) {
109
95
  // TODO: Ensure that both the primary and secondary channel are either variables or constants (values)
110
- fixPositional(encoding, "x");
111
- fixPositional(encoding, "y");
96
+ fixCoveragePositional(encoding, "x");
97
+ fixCoveragePositional(encoding, "y");
112
98
 
113
99
  fixStroke(encoding, this.properties.filled);
114
100
  fixFill(encoding, this.properties.filled);
@@ -289,13 +275,19 @@ export default class RectMark extends Mark {
289
275
  const scaleType = e.x.scale.type;
290
276
 
291
277
  if (isDiscrete(scaleType)) {
292
- const a = e.x.dataAccessor;
278
+ const a = getEncoderDataAccessor(e.x);
279
+ if (!a) {
280
+ return;
281
+ }
293
282
  // TODO: Binary search
294
283
  return data.find((d) => x == a(d));
295
284
  } else {
296
285
  // TODO: Handle point features on locus/index scales
297
- const a = e.x.dataAccessor;
298
- const a2 = e.x2.dataAccessor;
286
+ const a = getEncoderDataAccessor(e.x);
287
+ const a2 = getEncoderDataAccessor(e.x2);
288
+ if (!a || !a2) {
289
+ return;
290
+ }
299
291
  // TODO: Binary search
300
292
  return data.find((d) => x >= a(d) && x < a2(d));
301
293
  }
@@ -1,12 +1,17 @@
1
1
  /**
2
- * @extends {Mark<import("../spec/mark.js").RuleProps>}
2
+ * @extends {Mark<import("../spec/mark.js").RuleProps | import("../spec/mark.js").TickProps>}
3
3
  */
4
- export default class RuleMark extends Mark<import("../spec/mark.js").RuleProps> {
4
+ export default class RuleMark extends Mark<import("../spec/mark.js").RuleProps | import("../spec/mark.js").TickProps> {
5
5
  /**
6
6
  * @param {import("../view/unitView.js").default} unitView
7
7
  */
8
8
  constructor(unitView: import("../view/unitView.js").default);
9
9
  dashTextureSize: number;
10
+ /**
11
+ * @param {import("../spec/channel.js").Encoding} encoding
12
+ * @returns {import("../spec/channel.js").Encoding}
13
+ */
14
+ fixTickEncoding(encoding: import("../spec/channel.js").Encoding): import("../spec/channel.js").Encoding;
10
15
  dashTexture: WebGLTexture;
11
16
  }
12
17
  import Mark from "./mark.js";
@@ -1 +1 @@
1
- {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../src/marks/rule.js"],"names":[],"mappings":"AAcA;;GAEG;AACH;IACI;;OAEG;IACH,sBAFW,OAAO,qBAAqB,EAAE,OAAO,EAoB/C;IAfG,wBAAwB;IAyGxB,0BAQE;CA+FT;iBAxOgB,WAAW"}
1
+ {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../src/marks/rule.js"],"names":[],"mappings":"AAiBA;;GAEG;AACH;IACI;;OAEG;IACH,sBAFW,OAAO,qBAAqB,EAAE,OAAO,EAM/C;IADG,wBAAwB;IAyF5B;;;OAGG;IACH,0BAHW,OAAO,oBAAoB,EAAE,QAAQ,GACnC,OAAO,oBAAoB,EAAE,QAAQ,CAqBjD;IAOG,0BAQE;CA+FT;iBAzPgB,WAAW"}