@genome-spy/core 0.77.0 → 0.79.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. package/dist/bundle/{browser-KWU9rWZT.js → browser-CETrb2cm.js} +53 -33
  2. package/dist/bundle/esm-BdLYkz-m.js +248 -0
  3. package/dist/bundle/esm-BwiDsqSb.js +1367 -0
  4. package/dist/bundle/esm-CDFd1cjk.js +441 -0
  5. package/dist/bundle/{esm-CRMf_I9V.js → esm-CTUHLDbv.js} +30 -30
  6. package/dist/bundle/esm-Cx-EbkOj.js +1221 -0
  7. package/dist/bundle/esm-DlYGqi79.js +128 -0
  8. package/dist/bundle/{esm-BygJiwh0.js → esm-k9p3oHkt.js} +133 -158
  9. package/dist/bundle/{esm-CT3ygiMq.js → esm-zAZJQO6D.js} +226 -212
  10. package/dist/bundle/index.es.js +14102 -10810
  11. package/dist/bundle/index.js +109 -95
  12. package/dist/bundle/{parquetRead-DG_-F5j5.js → parquetRead-Cad1SOVV.js} +473 -399
  13. package/dist/schema.json +23788 -11049
  14. package/dist/src/config/axisConfig.d.ts +2 -2
  15. package/dist/src/config/axisConfig.d.ts.map +1 -1
  16. package/dist/src/config/axisConfig.js +28 -44
  17. package/dist/src/config/configLayers.d.ts +45 -0
  18. package/dist/src/config/configLayers.d.ts.map +1 -0
  19. package/dist/src/config/configLayers.js +110 -0
  20. package/dist/src/config/defaultConfig.d.ts.map +1 -1
  21. package/dist/src/config/defaultConfig.js +8 -1
  22. package/dist/src/config/defaults/legendDefaults.d.ts +14 -0
  23. package/dist/src/config/defaults/legendDefaults.d.ts.map +1 -0
  24. package/dist/src/config/defaults/legendDefaults.js +46 -0
  25. package/dist/src/config/defaults/titleDefaults.d.ts.map +1 -1
  26. package/dist/src/config/defaults/titleDefaults.js +26 -18
  27. package/dist/src/config/legendConfig.d.ts +11 -0
  28. package/dist/src/config/legendConfig.d.ts.map +1 -0
  29. package/dist/src/config/legendConfig.js +63 -0
  30. package/dist/src/config/styleUtils.d.ts +8 -2
  31. package/dist/src/config/styleUtils.d.ts.map +1 -1
  32. package/dist/src/config/styleUtils.js +25 -1
  33. package/dist/src/config/themes.d.ts.map +1 -1
  34. package/dist/src/config/themes.js +21 -2
  35. package/dist/src/config/titleConfig.d.ts.map +1 -1
  36. package/dist/src/config/titleConfig.js +2 -18
  37. package/dist/src/data/collector.d.ts.map +1 -1
  38. package/dist/src/data/collector.js +40 -18
  39. package/dist/src/data/flowInit.d.ts +6 -0
  40. package/dist/src/data/flowInit.d.ts.map +1 -1
  41. package/dist/src/data/flowInit.js +1 -1
  42. package/dist/src/data/flowNode.d.ts +32 -0
  43. package/dist/src/data/flowNode.d.ts.map +1 -1
  44. package/dist/src/data/flowNode.js +59 -0
  45. package/dist/src/data/sources/lazy/bamSource.d.ts +0 -1
  46. package/dist/src/data/sources/lazy/bamSource.d.ts.map +1 -1
  47. package/dist/src/data/sources/lazy/bamSource.js +39 -30
  48. package/dist/src/data/sources/lazy/bigBedSource.d.ts +0 -10
  49. package/dist/src/data/sources/lazy/bigBedSource.d.ts.map +1 -1
  50. package/dist/src/data/sources/lazy/bigBedSource.js +127 -62
  51. package/dist/src/data/sources/lazy/bigWigSource.d.ts +2 -2
  52. package/dist/src/data/sources/lazy/bigWigSource.d.ts.map +1 -1
  53. package/dist/src/data/sources/lazy/bigWigSource.js +234 -81
  54. package/dist/src/data/sources/lazy/gff3Source.d.ts +7 -3
  55. package/dist/src/data/sources/lazy/gff3Source.d.ts.map +1 -1
  56. package/dist/src/data/sources/lazy/gff3Source.js +7 -8
  57. package/dist/src/data/sources/lazy/indexedFastaSource.d.ts +1 -1
  58. package/dist/src/data/sources/lazy/indexedFastaSource.d.ts.map +1 -1
  59. package/dist/src/data/sources/lazy/indexedFastaSource.js +28 -19
  60. package/dist/src/data/sources/lazy/legendEntriesSource.d.ts +24 -0
  61. package/dist/src/data/sources/lazy/legendEntriesSource.d.ts.map +1 -0
  62. package/dist/src/data/sources/lazy/legendEntriesSource.js +217 -0
  63. package/dist/src/data/sources/lazy/legendGradientSource.d.ts +30 -0
  64. package/dist/src/data/sources/lazy/legendGradientSource.d.ts.map +1 -0
  65. package/dist/src/data/sources/lazy/legendGradientSource.js +388 -0
  66. package/dist/src/data/sources/lazy/mockLazySource.d.ts +4 -1
  67. package/dist/src/data/sources/lazy/mockLazySource.d.ts.map +1 -1
  68. package/dist/src/data/sources/lazy/mockLazySource.js +49 -4
  69. package/dist/src/data/sources/lazy/registerCoreLazySources.js +2 -0
  70. package/dist/src/data/sources/lazy/singleAxisWindowedSource.d.ts.map +1 -1
  71. package/dist/src/data/sources/lazy/singleAxisWindowedSource.js +3 -4
  72. package/dist/src/data/sources/lazy/tabixSource.d.ts +9 -4
  73. package/dist/src/data/sources/lazy/tabixSource.d.ts.map +1 -1
  74. package/dist/src/data/sources/lazy/tabixSource.js +201 -70
  75. package/dist/src/data/sources/lazy/tabixTsvSource.d.ts +2 -3
  76. package/dist/src/data/sources/lazy/tabixTsvSource.d.ts.map +1 -1
  77. package/dist/src/data/sources/lazy/tabixTsvSource.js +14 -12
  78. package/dist/src/data/sources/lazy/vcfSource.d.ts +7 -3
  79. package/dist/src/data/sources/lazy/vcfSource.d.ts.map +1 -1
  80. package/dist/src/data/sources/lazy/vcfSource.js +7 -8
  81. package/dist/src/data/sources/urlDescriptor.d.ts +165 -0
  82. package/dist/src/data/sources/urlDescriptor.d.ts.map +1 -0
  83. package/dist/src/data/sources/urlDescriptor.js +473 -0
  84. package/dist/src/data/sources/urlDescriptorController.d.ts +25 -0
  85. package/dist/src/data/sources/urlDescriptorController.d.ts.map +1 -0
  86. package/dist/src/data/sources/urlDescriptorController.js +72 -0
  87. package/dist/src/data/sources/urlDescriptorState.d.ts +47 -0
  88. package/dist/src/data/sources/urlDescriptorState.d.ts.map +1 -0
  89. package/dist/src/data/sources/urlDescriptorState.js +129 -0
  90. package/dist/src/data/sources/urlSource.d.ts.map +1 -1
  91. package/dist/src/data/sources/urlSource.js +101 -61
  92. package/dist/src/data/transforms/packLegendLabels.d.ts +21 -0
  93. package/dist/src/data/transforms/packLegendLabels.d.ts.map +1 -0
  94. package/dist/src/data/transforms/packLegendLabels.js +189 -0
  95. package/dist/src/data/transforms/transformFactory.d.ts.map +1 -1
  96. package/dist/src/data/transforms/transformFactory.js +4 -0
  97. package/dist/src/data/transforms/truncateText.d.ts +27 -0
  98. package/dist/src/data/transforms/truncateText.d.ts.map +1 -0
  99. package/dist/src/data/transforms/truncateText.js +94 -0
  100. package/dist/src/debug/dataflowDebugSnapshot.d.ts +58 -0
  101. package/dist/src/debug/dataflowDebugSnapshot.d.ts.map +1 -0
  102. package/dist/src/debug/dataflowDebugSnapshot.js +159 -0
  103. package/dist/src/debug/markDebugSnapshot.d.ts +54 -0
  104. package/dist/src/debug/markDebugSnapshot.d.ts.map +1 -0
  105. package/dist/src/debug/markDebugSnapshot.js +100 -0
  106. package/dist/src/debug/paramDebugSnapshot.d.ts +53 -0
  107. package/dist/src/debug/paramDebugSnapshot.d.ts.map +1 -0
  108. package/dist/src/debug/paramDebugSnapshot.js +86 -0
  109. package/dist/src/debug/resolutionDebugSnapshot.d.ts +155 -0
  110. package/dist/src/debug/resolutionDebugSnapshot.d.ts.map +1 -0
  111. package/dist/src/debug/resolutionDebugSnapshot.js +291 -0
  112. package/dist/src/debug/valuePreview.d.ts +9 -0
  113. package/dist/src/debug/valuePreview.d.ts.map +1 -0
  114. package/dist/src/debug/valuePreview.js +57 -0
  115. package/dist/src/debug/viewDebugSnapshot.d.ts +131 -0
  116. package/dist/src/debug/viewDebugSnapshot.d.ts.map +1 -0
  117. package/dist/src/debug/viewDebugSnapshot.js +390 -0
  118. package/dist/src/embedFactory.d.ts.map +1 -1
  119. package/dist/src/embedFactory.js +6 -1
  120. package/dist/src/encoder/encoder.d.ts +2 -2
  121. package/dist/src/encoder/encoder.d.ts.map +1 -1
  122. package/dist/src/encoder/encoder.js +5 -4
  123. package/dist/src/fonts/bmFontManager.d.ts +1 -1
  124. package/dist/src/fonts/bmFontManager.d.ts.map +1 -1
  125. package/dist/src/fonts/bmFontManager.js +45 -10
  126. package/dist/src/fonts/textMetrics.d.ts +69 -0
  127. package/dist/src/fonts/textMetrics.d.ts.map +1 -0
  128. package/dist/src/fonts/textMetrics.js +73 -0
  129. package/dist/src/genomeSpy/headlessBootstrap.d.ts.map +1 -1
  130. package/dist/src/genomeSpy/headlessBootstrap.js +8 -0
  131. package/dist/src/genomeSpy/interactionController.d.ts +4 -1
  132. package/dist/src/genomeSpy/interactionController.d.ts.map +1 -1
  133. package/dist/src/genomeSpy/interactionController.js +57 -13
  134. package/dist/src/genomeSpy/renderCoordinator.d.ts.map +1 -1
  135. package/dist/src/genomeSpy/renderCoordinator.js +25 -3
  136. package/dist/src/genomeSpy/viewDataInit.d.ts +14 -0
  137. package/dist/src/genomeSpy/viewDataInit.d.ts.map +1 -1
  138. package/dist/src/genomeSpy/viewDataInit.js +45 -8
  139. package/dist/src/genomeSpyBase.d.ts +6 -0
  140. package/dist/src/genomeSpyBase.d.ts.map +1 -1
  141. package/dist/src/genomeSpyBase.js +25 -4
  142. package/dist/src/gl/glslScaleGenerator.d.ts +17 -0
  143. package/dist/src/gl/glslScaleGenerator.d.ts.map +1 -1
  144. package/dist/src/gl/glslScaleGenerator.js +39 -2
  145. package/dist/src/gl/includes/common.glsl.js +1 -1
  146. package/dist/src/gl/vertexRangeIndex.d.ts.map +1 -1
  147. package/dist/src/gl/vertexRangeIndex.js +4 -2
  148. package/dist/src/gl/webGLHelper.d.ts +1 -1
  149. package/dist/src/gl/webGLHelper.d.ts.map +1 -1
  150. package/dist/src/gl/webGLHelper.js +13 -8
  151. package/dist/src/marks/__snapshots__/shaderSnapshot.test.js.snap +140 -3
  152. package/dist/src/marks/mark.d.ts +47 -4
  153. package/dist/src/marks/mark.d.ts.map +1 -1
  154. package/dist/src/marks/mark.js +158 -54
  155. package/dist/src/marks/point.d.ts.map +1 -1
  156. package/dist/src/marks/point.js +4 -0
  157. package/dist/src/marks/point.vertex.glsl.js +1 -1
  158. package/dist/src/marks/text.d.ts +1 -1
  159. package/dist/src/marks/text.d.ts.map +1 -1
  160. package/dist/src/marks/text.js +2 -7
  161. package/dist/src/marks/text.vertex.glsl.js +1 -1
  162. package/dist/src/paramRuntime/paramUtils.d.ts +43 -9
  163. package/dist/src/paramRuntime/paramUtils.d.ts.map +1 -1
  164. package/dist/src/paramRuntime/paramUtils.js +61 -1
  165. package/dist/src/paramRuntime/viewParamRuntime.d.ts +32 -0
  166. package/dist/src/paramRuntime/viewParamRuntime.d.ts.map +1 -1
  167. package/dist/src/paramRuntime/viewParamRuntime.js +63 -0
  168. package/dist/src/scales/axisResolution.d.ts +35 -0
  169. package/dist/src/scales/axisResolution.d.ts.map +1 -1
  170. package/dist/src/scales/axisResolution.js +115 -7
  171. package/dist/src/scales/domainExpressions.d.ts +21 -0
  172. package/dist/src/scales/domainExpressions.d.ts.map +1 -0
  173. package/dist/src/scales/domainExpressions.js +43 -0
  174. package/dist/src/scales/domainPlanner.d.ts +12 -1
  175. package/dist/src/scales/domainPlanner.d.ts.map +1 -1
  176. package/dist/src/scales/domainPlanner.js +55 -36
  177. package/dist/src/scales/legendResolution.d.ts +83 -0
  178. package/dist/src/scales/legendResolution.d.ts.map +1 -0
  179. package/dist/src/scales/legendResolution.js +461 -0
  180. package/dist/src/scales/scaleInstanceManager.d.ts +1 -0
  181. package/dist/src/scales/scaleInstanceManager.d.ts.map +1 -1
  182. package/dist/src/scales/scaleInstanceManager.js +5 -0
  183. package/dist/src/scales/scalePropsResolver.d.ts +6 -1
  184. package/dist/src/scales/scalePropsResolver.d.ts.map +1 -1
  185. package/dist/src/scales/scalePropsResolver.js +35 -10
  186. package/dist/src/scales/scaleResolution.d.ts +52 -0
  187. package/dist/src/scales/scaleResolution.d.ts.map +1 -1
  188. package/dist/src/scales/scaleResolution.js +195 -16
  189. package/dist/src/scales/scaleRules.d.ts +10 -0
  190. package/dist/src/scales/scaleRules.d.ts.map +1 -1
  191. package/dist/src/scales/scaleRules.js +38 -1
  192. package/dist/src/scales/viewLevelGuideConfig.d.ts +53 -0
  193. package/dist/src/scales/viewLevelGuideConfig.d.ts.map +1 -0
  194. package/dist/src/scales/viewLevelGuideConfig.js +224 -0
  195. package/dist/src/scales/viewLevelScaleConfig.d.ts +45 -0
  196. package/dist/src/scales/viewLevelScaleConfig.d.ts.map +1 -0
  197. package/dist/src/scales/viewLevelScaleConfig.js +149 -0
  198. package/dist/src/spec/axis.d.ts +109 -3
  199. package/dist/src/spec/channel.d.ts +23 -4
  200. package/dist/src/spec/config.d.ts +59 -4
  201. package/dist/src/spec/data.d.ts +177 -17
  202. package/dist/src/spec/legend.d.ts +246 -0
  203. package/dist/src/spec/mark.d.ts +16 -4
  204. package/dist/src/spec/scale.d.ts +19 -6
  205. package/dist/src/spec/title.d.ts +58 -1
  206. package/dist/src/spec/transform.d.ts +149 -0
  207. package/dist/src/spec/view.d.ts +50 -6
  208. package/dist/src/styles/genome-spy.css +4 -1
  209. package/dist/src/styles/genome-spy.css.d.ts +1 -1
  210. package/dist/src/styles/genome-spy.css.d.ts.map +1 -1
  211. package/dist/src/styles/genome-spy.css.js +4 -1
  212. package/dist/src/types/embedApi.d.ts +262 -6
  213. package/dist/src/types/rendering.d.ts +19 -3
  214. package/dist/src/types/viewContext.d.ts +18 -2
  215. package/dist/src/utils/arrayUtils.d.ts +11 -0
  216. package/dist/src/utils/arrayUtils.d.ts.map +1 -1
  217. package/dist/src/utils/arrayUtils.js +23 -0
  218. package/dist/src/utils/suspension.d.ts +17 -0
  219. package/dist/src/utils/suspension.d.ts.map +1 -0
  220. package/dist/src/utils/suspension.js +41 -0
  221. package/dist/src/utils/ui/tooltip.d.ts +4 -0
  222. package/dist/src/utils/ui/tooltip.d.ts.map +1 -1
  223. package/dist/src/utils/ui/tooltip.js +35 -10
  224. package/dist/src/view/axisGridView.d.ts.map +1 -1
  225. package/dist/src/view/axisGridView.js +1 -4
  226. package/dist/src/view/axisView.d.ts +18 -2
  227. package/dist/src/view/axisView.d.ts.map +1 -1
  228. package/dist/src/view/axisView.js +180 -75
  229. package/dist/src/view/concatView.d.ts +10 -2
  230. package/dist/src/view/concatView.d.ts.map +1 -1
  231. package/dist/src/view/concatView.js +46 -9
  232. package/dist/src/view/containerMutationHelper.d.ts +20 -1
  233. package/dist/src/view/containerMutationHelper.d.ts.map +1 -1
  234. package/dist/src/view/containerMutationHelper.js +203 -32
  235. package/dist/src/view/facetView.d.ts +1 -1
  236. package/dist/src/view/gridView/gridChild.d.ts +54 -4
  237. package/dist/src/view/gridView/gridChild.d.ts.map +1 -1
  238. package/dist/src/view/gridView/gridChild.js +301 -120
  239. package/dist/src/view/gridView/gridChildLegends.d.ts +57 -0
  240. package/dist/src/view/gridView/gridChildLegends.d.ts.map +1 -0
  241. package/dist/src/view/gridView/gridChildLegends.js +503 -0
  242. package/dist/src/view/gridView/gridView.d.ts +25 -0
  243. package/dist/src/view/gridView/gridView.d.ts.map +1 -1
  244. package/dist/src/view/gridView/gridView.js +454 -78
  245. package/dist/src/view/gridView/legendLayout.d.ts +26 -0
  246. package/dist/src/view/gridView/legendLayout.d.ts.map +1 -0
  247. package/dist/src/view/gridView/legendLayout.js +111 -0
  248. package/dist/src/view/gridView/scrollbar.d.ts.map +1 -1
  249. package/dist/src/view/gridView/scrollbar.js +1 -4
  250. package/dist/src/view/gridView/selectionRect.d.ts.map +1 -1
  251. package/dist/src/view/gridView/selectionRect.js +1 -4
  252. package/dist/src/view/gridView/separatorView.d.ts.map +1 -1
  253. package/dist/src/view/gridView/separatorView.js +1 -4
  254. package/dist/src/view/layerView.d.ts +9 -2
  255. package/dist/src/view/layerView.d.ts.map +1 -1
  256. package/dist/src/view/layerView.js +18 -1
  257. package/dist/src/view/layout/flexLayout.d.ts +20 -4
  258. package/dist/src/view/layout/flexLayout.d.ts.map +1 -1
  259. package/dist/src/view/layout/flexLayout.js +331 -31
  260. package/dist/src/view/layout/rectangle.d.ts +14 -0
  261. package/dist/src/view/layout/rectangle.d.ts.map +1 -1
  262. package/dist/src/view/layout/rectangle.js +40 -0
  263. package/dist/src/view/legend/legendEntries.d.ts +20 -0
  264. package/dist/src/view/legend/legendEntries.d.ts.map +1 -0
  265. package/dist/src/view/legend/legendEntries.js +21 -0
  266. package/dist/src/view/legendView.d.ts +134 -0
  267. package/dist/src/view/legendView.d.ts.map +1 -0
  268. package/dist/src/view/legendView.js +1611 -0
  269. package/dist/src/view/renderingContext/bufferedViewRenderingContext.d.ts.map +1 -1
  270. package/dist/src/view/renderingContext/bufferedViewRenderingContext.js +26 -4
  271. package/dist/src/view/renderingContext/clipOptions.d.ts +44 -0
  272. package/dist/src/view/renderingContext/clipOptions.d.ts.map +1 -0
  273. package/dist/src/view/renderingContext/clipOptions.js +140 -0
  274. package/dist/src/view/renderingContext/simpleViewRenderingContext.d.ts.map +1 -1
  275. package/dist/src/view/renderingContext/simpleViewRenderingContext.js +12 -1
  276. package/dist/src/view/resolutionPlanner.d.ts +2 -1
  277. package/dist/src/view/resolutionPlanner.d.ts.map +1 -1
  278. package/dist/src/view/resolutionPlanner.js +89 -25
  279. package/dist/src/view/testUtils.d.ts +4 -2
  280. package/dist/src/view/testUtils.d.ts.map +1 -1
  281. package/dist/src/view/testUtils.js +29 -7
  282. package/dist/src/view/titleView.d.ts +37 -0
  283. package/dist/src/view/titleView.d.ts.map +1 -0
  284. package/dist/src/view/titleView.js +584 -0
  285. package/dist/src/view/unitView.d.ts +3 -3
  286. package/dist/src/view/unitView.d.ts.map +1 -1
  287. package/dist/src/view/unitView.js +3 -2
  288. package/dist/src/view/view.d.ts +25 -24
  289. package/dist/src/view/view.d.ts.map +1 -1
  290. package/dist/src/view/view.js +121 -16
  291. package/dist/src/view/viewFactory.d.ts +2 -5
  292. package/dist/src/view/viewFactory.d.ts.map +1 -1
  293. package/dist/src/view/viewFactory.js +1 -2
  294. package/dist/src/view/viewIdentityRegistry.d.ts +37 -0
  295. package/dist/src/view/viewIdentityRegistry.d.ts.map +1 -0
  296. package/dist/src/view/viewIdentityRegistry.js +71 -0
  297. package/dist/src/view/viewMutationAcidTestUtils.d.ts +112 -0
  298. package/dist/src/view/viewMutationAcidTestUtils.d.ts.map +1 -0
  299. package/dist/src/view/viewMutationAcidTestUtils.js +234 -0
  300. package/dist/src/view/viewMutationApi.d.ts +42 -0
  301. package/dist/src/view/viewMutationApi.d.ts.map +1 -0
  302. package/dist/src/view/viewMutationApi.js +811 -0
  303. package/dist/src/view/viewSelectors.d.ts +10 -0
  304. package/dist/src/view/viewSelectors.d.ts.map +1 -1
  305. package/dist/src/view/viewSelectors.js +23 -1
  306. package/package.json +4 -4
  307. package/dist/bundle/esm-0dYHNV_D.js +0 -121
  308. package/dist/bundle/esm-C49STiCR.js +0 -1248
  309. package/dist/bundle/esm-CscjKVDc.js +0 -1426
  310. package/dist/bundle/esm-CuMSzCHy.js +0 -298
  311. package/dist/bundle/esm-DMXpJXM4.js +0 -369
  312. package/dist/src/view/title.d.ts +0 -13
  313. package/dist/src/view/title.d.ts.map +0 -1
  314. package/dist/src/view/title.js +0 -154
  315. /package/dist/bundle/{AbortablePromiseCache-3gHJdF3E.js → AbortablePromiseCache-BTmAcN-t.js} +0 -0
  316. /package/dist/bundle/{esm-CuVa5T98.js → esm-VvpZ9hsq.js} +0 -0
  317. /package/dist/bundle/{chunk-DmhlhrBa.js → rolldown-runtime-Dy4uBu1J.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"vertexRangeIndex.d.ts","sourceRoot":"","sources":["../../../src/gl/vertexRangeIndex.js"],"names":[],"mappings":"AAKA;;;;GAIG;AAEH;;;;;;;;;;;;;;GAcG;AACH,+CARW,MAAM,UACN,CAAC,MAAM,EAAE,MAAM,CAAC,aAChB,YAAY,YACZ,YAAY,qBACZ,MAAM,mBACN,MAAM,GACJ,OAAO,yBAAyB,EAAE,MAAM,GAAG,SAAS,CA6HhE;yCA9IU,MAAM,KACJ,MAAM"}
1
+ {"version":3,"file":"vertexRangeIndex.d.ts","sourceRoot":"","sources":["../../../src/gl/vertexRangeIndex.js"],"names":[],"mappings":"AAKA;;;;GAIG;AAEH;;;;;;;;;;;;;;GAcG;AACH,+CARW,MAAM,UACN,CAAC,MAAM,EAAE,MAAM,CAAC,aAChB,YAAY,YACZ,YAAY,qBACZ,MAAM,mBACN,MAAM,GACJ,OAAO,yBAAyB,EAAE,MAAM,GAAG,SAAS,CA+HhE;yCAhJU,MAAM,KACJ,MAAM"}
@@ -40,6 +40,8 @@ export function createVertexRangeIndexer(
40
40
  return undefined;
41
41
  }
42
42
 
43
+ const pointIndex = readStart === readEnd;
44
+
43
45
  const startIndices = new Array(size);
44
46
  startIndices.fill(MAX_INTEGER);
45
47
 
@@ -105,14 +107,14 @@ export function createVertexRangeIndexer(
105
107
  break;
106
108
  }
107
109
 
108
- if (runX < lastStart || runX2 < runX) {
110
+ if (runX < lastStart || (!pointIndex && runX2 < runX)) {
109
111
  unordered = true;
110
112
  break;
111
113
  }
112
114
  lastStart = runX;
113
115
 
114
116
  const startBin = getBin(runX, false);
115
- const endBin = getBin(runX2, true);
117
+ const endBin = pointIndex ? startBin : getBin(runX2, true);
116
118
 
117
119
  for (let bin = startBin; bin <= endBin; bin++) {
118
120
  if (startIndices[bin] > runStart) {
@@ -74,7 +74,7 @@ export default class WebGLHelper {
74
74
  /** @type {import("twgl.js").AttachmentOptions[]} */
75
75
  _pickingAttachmentOptions: import("twgl.js").AttachmentOptions[];
76
76
  _pickingBufferInfo: import("twgl.js").FramebufferInfo;
77
- invalidateSize(): void;
77
+ invalidateSize(): boolean;
78
78
  /**
79
79
  * Compiles and caches a shader. The shader source is used as a cache key.
80
80
  *
@@ -1 +1 @@
1
- {"version":3,"file":"webGLHelper.d.ts","sourceRoot":"","sources":["../../../src/gl/webGLHelper.js"],"names":[],"mappings":"AA0cA;;;;GAIG;AACH,kCAJW,sBAAsB,gBACtB,WAAW,kBACX,WAAW;;;;;;EA8CrB;AAED;;;;;GAKG;AACH,0CALW,qBAAqB,WACrB,IAAI,CAAC,OAAO,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,OAC7C,MAAM,EAAE,GAAG,eAAe,YAC1B,YAAY,gBAYtB;AAED;;;;;;GAMG;AACH,qCALW,sBAAsB,mBACtB,OAAO,SAAS,EAAE,eAAe,KACjC,MAAM,KACN,MAAM,2BAWhB;AAED;;;;;GAKG;AACH,yCAJW,sBAAsB,mBACtB,OAAO,SAAS,EAAE,eAAe,SACjC,MAAM,UA4BhB;AA9hBD;IACI;;;;;;;;OAQG;IACH,uBAPW,WAAW,eACX,MAAM;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,2BAGrC,sBAAsB,mBACtB,MAAM,IAAI,EAoHpB;IArGG;;OAEG;IACH,mBAFU,gBAAgB,CAEQ;IAElC;;OAEG;IACH,oBAFU;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAEjF;IAEnC,yBAAyB;IACzB,iBADW,MAAM,IAAI,CAC8B;IAEnD,uCAAuC;IACvC,cADW,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CACN;IAE7B,6EAA6E;IAC7E,eADW,OAAO,CAAC,OAAO,qBAAqB,EAAE,SAAS,EAAE,YAAY,CAAC,CACvC;IAElC;;OAEG;IACH,mBAFU,OAAO,CAAC,OAAO,4BAA4B,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAEnD;IA8CtC,0BAAoB;IACpB,2BAAY;IAGZ,oDAAoD;IACpD,2BADW,OAAO,SAAS,EAAE,iBAAiB,EAAE,CAQ/C;IACD,sDAGC;IAmBL,uBAGC;IAED;;;;;OAKG;IACH,oBAHW,MAAM,QACN,MAAM,GAAG,MAAM,EAAE,eA2B3B;IAED,oBAkCC;IAED,iBAGC;IAED;;;;OAIG;IACH,oCAFW;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;;;MAI3C;IAED;;;;OAIG;IACH,kCAFW;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,UAI3C;IAED;;;OAGG;IACH;;;MAEC;IAED;;;;;;;;;OASG;IACH,+BAHW,OAAO,8BAA8B,EAAE,OAAO,WAC9C,OAAO,QA2GjB;IAED;;OAEG;IACH,kCAFW,OAAO,4BAA4B,EAAE,mBAAmB,0BAwClE;CACJ;6BAxY4B,uBAAuB"}
1
+ {"version":3,"file":"webGLHelper.d.ts","sourceRoot":"","sources":["../../../src/gl/webGLHelper.js"],"names":[],"mappings":"AA+cA;;;;GAIG;AACH,kCAJW,sBAAsB,gBACtB,WAAW,kBACX,WAAW;;;;;;EA8CrB;AAED;;;;;GAKG;AACH,0CALW,qBAAqB,WACrB,IAAI,CAAC,OAAO,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,OAC7C,MAAM,EAAE,GAAG,eAAe,YAC1B,YAAY,gBAYtB;AAED;;;;;;GAMG;AACH,qCALW,sBAAsB,mBACtB,OAAO,SAAS,EAAE,eAAe,KACjC,MAAM,KACN,MAAM,2BAWhB;AAED;;;;;GAKG;AACH,yCAJW,sBAAsB,mBACtB,OAAO,SAAS,EAAE,eAAe,SACjC,MAAM,UA4BhB;AAliBD;IACI;;;;;;;;OAQG;IACH,uBAPW,WAAW,eACX,MAAM;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,2BAGrC,sBAAsB,mBACtB,MAAM,IAAI,EAoHpB;IArGG;;OAEG;IACH,mBAFU,gBAAgB,CAEQ;IAElC;;OAEG;IACH,oBAFU;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAEjF;IAEnC,yBAAyB;IACzB,iBADW,MAAM,IAAI,CAC8B;IAEnD,uCAAuC;IACvC,cADW,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CACN;IAE7B,6EAA6E;IAC7E,eADW,OAAO,CAAC,OAAO,qBAAqB,EAAE,SAAS,EAAE,YAAY,CAAC,CACvC;IAElC;;OAEG;IACH,mBAFU,OAAO,CAAC,OAAO,4BAA4B,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAEnD;IA8CtC,0BAAoB;IACpB,2BAAY;IAGZ,oDAAoD;IACpD,2BADW,OAAO,SAAS,EAAE,iBAAiB,EAAE,CAQ/C;IACD,sDAGC;IAmBL,0BAKC;IAED;;;;;OAKG;IACH,oBAHW,MAAM,QACN,MAAM,GAAG,MAAM,EAAE,eA2B3B;IAED,oBAkCC;IAED,iBAGC;IAED;;;;OAIG;IACH,oCAFW;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;;;MAI3C;IAED;;;;OAIG;IACH,kCAFW;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,UAI3C;IAED;;;OAGG;IACH;;;MAEC;IAED;;;;;;;;;OASG;IACH,+BAHW,OAAO,8BAA8B,EAAE,OAAO,WAC9C,OAAO,QA6GjB;IAED;;OAEG;IACH,kCAFW,OAAO,4BAA4B,EAAE,mBAAmB,0BAwClE;CACJ;6BA5Y4B,uBAAuB"}
@@ -21,6 +21,7 @@ import {
21
21
  createInterpolatedColorTexture,
22
22
  createSchemeTexture,
23
23
  } from "./colorUtils.js";
24
+ import { getDiscreteRangeCountForGlsl } from "./glslScaleGenerator.js";
24
25
  import {
25
26
  getDiscreteRangeMapper,
26
27
  isColorChannel,
@@ -161,7 +162,9 @@ export default class WebGLHelper {
161
162
 
162
163
  invalidateSize() {
163
164
  this._canvasSizeHelper.invalidate();
164
- this.adjustGl();
165
+ // The return value tells layout code whether cached render commands may
166
+ // have been built against a stale logical or physical canvas size.
167
+ return this.adjustGl();
165
168
  }
166
169
 
167
170
  /**
@@ -290,10 +293,8 @@ export default class WebGLHelper {
290
293
  function fixCount(count, scale) {
291
294
  if (isDiscrete(scale.type)) {
292
295
  return scale.domain().length;
293
- } else if (scale.type == "threshold") {
294
- return scale.domain().length + 1;
295
- } else if (scale.type == "quantize") {
296
- return count ?? 4;
296
+ } else if (scale.type == "threshold" || scale.type == "quantize") {
297
+ return getDiscreteRangeCountForGlsl(scale);
297
298
  } else if (scale.type == "quantile") {
298
299
  return count ?? 4;
299
300
  }
@@ -317,7 +318,7 @@ export default class WebGLHelper {
317
318
  texture = createDiscreteColorTexture(
318
319
  range,
319
320
  this.gl,
320
- scale.domain().length,
321
+ getDiscreteRangeCountForGlsl(scale),
321
322
  existingTexture
322
323
  );
323
324
  } else {
@@ -351,7 +352,9 @@ export default class WebGLHelper {
351
352
  texture = createDiscreteColorTexture(
352
353
  range,
353
354
  this.gl,
354
- scale.domain().length,
355
+ isDiscretizing(scale.type)
356
+ ? getDiscreteRangeCountForGlsl(scale)
357
+ : scale.domain().length,
355
358
  existingTexture
356
359
  );
357
360
  }
@@ -373,7 +376,9 @@ export default class WebGLHelper {
373
376
  createDiscreteTexture(
374
377
  range.map(mapper),
375
378
  this.gl,
376
- scale.domain().length,
379
+ isDiscretizing(scale.type)
380
+ ? getDiscreteRangeCountForGlsl(scale)
381
+ : scale.domain().length,
377
382
  existingTexture
378
383
  )
379
384
  );
@@ -43,6 +43,8 @@ uniform View {
43
43
  mediump vec2 uViewScale;
44
44
  /** Size of the logical viewport in pixels, i.e., the view */
45
45
  mediump vec2 uViewportSize;
46
+ mediump vec4 uLogicalVisibleRect;
47
+ lowp vec2 uCullByVisibleRange;
46
48
  lowp float uDevicePixelRatio;
47
49
  // TODO: Views with opacity less than 1.0 should be rendered into a texture
48
50
  // that is rendered with the specified opacity.
@@ -71,6 +73,15 @@ vec4 pixelsToNdc(float x, float y) {
71
73
  return pixelsToNdc(vec2(x, y));
72
74
  }
73
75
 
76
+ bool isOutsideVisibleRange(vec2 pos) {
77
+ return (uCullByVisibleRange.x > 0.5 &&
78
+ (pos.x < uLogicalVisibleRect.x ||
79
+ pos.x > uLogicalVisibleRect.z)) ||
80
+ (uCullByVisibleRange.y > 0.5 &&
81
+ (pos.y < uLogicalVisibleRect.y ||
82
+ pos.y > uLogicalVisibleRect.w));
83
+ }
84
+
74
85
  float linearstep(float edge0, float edge1, float x) {
75
86
  return clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
76
87
  }
@@ -309,6 +320,8 @@ uniform View {
309
320
  mediump vec2 uViewScale;
310
321
  /** Size of the logical viewport in pixels, i.e., the view */
311
322
  mediump vec2 uViewportSize;
323
+ mediump vec4 uLogicalVisibleRect;
324
+ lowp vec2 uCullByVisibleRange;
312
325
  lowp float uDevicePixelRatio;
313
326
  // TODO: Views with opacity less than 1.0 should be rendered into a texture
314
327
  // that is rendered with the specified opacity.
@@ -337,6 +350,15 @@ vec4 pixelsToNdc(float x, float y) {
337
350
  return pixelsToNdc(vec2(x, y));
338
351
  }
339
352
 
353
+ bool isOutsideVisibleRange(vec2 pos) {
354
+ return (uCullByVisibleRange.x > 0.5 &&
355
+ (pos.x < uLogicalVisibleRect.x ||
356
+ pos.x > uLogicalVisibleRect.z)) ||
357
+ (uCullByVisibleRange.y > 0.5 &&
358
+ (pos.y < uLogicalVisibleRect.y ||
359
+ pos.y > uLogicalVisibleRect.w));
360
+ }
361
+
340
362
  float linearstep(float edge0, float edge1, float x) {
341
363
  return clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
342
364
  }
@@ -996,8 +1018,17 @@ void main(void) {
996
1018
 
997
1019
  float size = getScaled_size();
998
1020
  vec2 pos = vec2(getScaled_x(), getScaled_y()) + getDxDy();
1021
+ vec2 facetedPos = applySampleFacet(pos);
1022
+
1023
+ #ifdef VISIBLE_RANGE_CULLING
1024
+ if (isOutsideVisibleRange(facetedPos)) {
1025
+ gl_PointSize = 0.0;
1026
+ gl_Position = vec4(100.0, 0.0, 0.0, 0.0);
1027
+ return;
1028
+ }
1029
+ #endif
999
1030
 
1000
- gl_Position = unitToNdc(applySampleFacet(pos));
1031
+ gl_Position = unitToNdc(facetedPos);
1001
1032
 
1002
1033
  float strokeWidth = getScaled_strokeWidth();
1003
1034
 
@@ -1115,6 +1146,8 @@ uniform View {
1115
1146
  mediump vec2 uViewScale;
1116
1147
  /** Size of the logical viewport in pixels, i.e., the view */
1117
1148
  mediump vec2 uViewportSize;
1149
+ mediump vec4 uLogicalVisibleRect;
1150
+ lowp vec2 uCullByVisibleRange;
1118
1151
  lowp float uDevicePixelRatio;
1119
1152
  // TODO: Views with opacity less than 1.0 should be rendered into a texture
1120
1153
  // that is rendered with the specified opacity.
@@ -1143,6 +1176,15 @@ vec4 pixelsToNdc(float x, float y) {
1143
1176
  return pixelsToNdc(vec2(x, y));
1144
1177
  }
1145
1178
 
1179
+ bool isOutsideVisibleRange(vec2 pos) {
1180
+ return (uCullByVisibleRange.x > 0.5 &&
1181
+ (pos.x < uLogicalVisibleRect.x ||
1182
+ pos.x > uLogicalVisibleRect.z)) ||
1183
+ (uCullByVisibleRange.y > 0.5 &&
1184
+ (pos.y < uLogicalVisibleRect.y ||
1185
+ pos.y > uLogicalVisibleRect.w));
1186
+ }
1187
+
1146
1188
  float linearstep(float edge0, float edge1, float x) {
1147
1189
  return clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
1148
1190
  }
@@ -1293,6 +1335,8 @@ uniform View {
1293
1335
  mediump vec2 uViewScale;
1294
1336
  /** Size of the logical viewport in pixels, i.e., the view */
1295
1337
  mediump vec2 uViewportSize;
1338
+ mediump vec4 uLogicalVisibleRect;
1339
+ lowp vec2 uCullByVisibleRange;
1296
1340
  lowp float uDevicePixelRatio;
1297
1341
  // TODO: Views with opacity less than 1.0 should be rendered into a texture
1298
1342
  // that is rendered with the specified opacity.
@@ -1321,6 +1365,15 @@ vec4 pixelsToNdc(float x, float y) {
1321
1365
  return pixelsToNdc(vec2(x, y));
1322
1366
  }
1323
1367
 
1368
+ bool isOutsideVisibleRange(vec2 pos) {
1369
+ return (uCullByVisibleRange.x > 0.5 &&
1370
+ (pos.x < uLogicalVisibleRect.x ||
1371
+ pos.x > uLogicalVisibleRect.z)) ||
1372
+ (uCullByVisibleRange.y > 0.5 &&
1373
+ (pos.y < uLogicalVisibleRect.y ||
1374
+ pos.y > uLogicalVisibleRect.w));
1375
+ }
1376
+
1324
1377
  float linearstep(float edge0, float edge1, float x) {
1325
1378
  return clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
1326
1379
  }
@@ -2199,6 +2252,8 @@ uniform View {
2199
2252
  mediump vec2 uViewScale;
2200
2253
  /** Size of the logical viewport in pixels, i.e., the view */
2201
2254
  mediump vec2 uViewportSize;
2255
+ mediump vec4 uLogicalVisibleRect;
2256
+ lowp vec2 uCullByVisibleRange;
2202
2257
  lowp float uDevicePixelRatio;
2203
2258
  // TODO: Views with opacity less than 1.0 should be rendered into a texture
2204
2259
  // that is rendered with the specified opacity.
@@ -2227,6 +2282,15 @@ vec4 pixelsToNdc(float x, float y) {
2227
2282
  return pixelsToNdc(vec2(x, y));
2228
2283
  }
2229
2284
 
2285
+ bool isOutsideVisibleRange(vec2 pos) {
2286
+ return (uCullByVisibleRange.x > 0.5 &&
2287
+ (pos.x < uLogicalVisibleRect.x ||
2288
+ pos.x > uLogicalVisibleRect.z)) ||
2289
+ (uCullByVisibleRange.y > 0.5 &&
2290
+ (pos.y < uLogicalVisibleRect.y ||
2291
+ pos.y > uLogicalVisibleRect.w));
2292
+ }
2293
+
2230
2294
  float linearstep(float edge0, float edge1, float x) {
2231
2295
  return clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
2232
2296
  }
@@ -2471,6 +2535,8 @@ uniform View {
2471
2535
  mediump vec2 uViewScale;
2472
2536
  /** Size of the logical viewport in pixels, i.e., the view */
2473
2537
  mediump vec2 uViewportSize;
2538
+ mediump vec4 uLogicalVisibleRect;
2539
+ lowp vec2 uCullByVisibleRange;
2474
2540
  lowp float uDevicePixelRatio;
2475
2541
  // TODO: Views with opacity less than 1.0 should be rendered into a texture
2476
2542
  // that is rendered with the specified opacity.
@@ -2499,6 +2565,15 @@ vec4 pixelsToNdc(float x, float y) {
2499
2565
  return pixelsToNdc(vec2(x, y));
2500
2566
  }
2501
2567
 
2568
+ bool isOutsideVisibleRange(vec2 pos) {
2569
+ return (uCullByVisibleRange.x > 0.5 &&
2570
+ (pos.x < uLogicalVisibleRect.x ||
2571
+ pos.x > uLogicalVisibleRect.z)) ||
2572
+ (uCullByVisibleRange.y > 0.5 &&
2573
+ (pos.y < uLogicalVisibleRect.y ||
2574
+ pos.y > uLogicalVisibleRect.w));
2575
+ }
2576
+
2502
2577
  float linearstep(float edge0, float edge1, float x) {
2503
2578
  return clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
2504
2579
  }
@@ -3195,8 +3270,17 @@ void main(void) {
3195
3270
 
3196
3271
  float size = getScaled_size();
3197
3272
  vec2 pos = vec2(getScaled_x(), getScaled_y()) + getDxDy();
3273
+ vec2 facetedPos = applySampleFacet(pos);
3274
+
3275
+ #ifdef VISIBLE_RANGE_CULLING
3276
+ if (isOutsideVisibleRange(facetedPos)) {
3277
+ gl_PointSize = 0.0;
3278
+ gl_Position = vec4(100.0, 0.0, 0.0, 0.0);
3279
+ return;
3280
+ }
3281
+ #endif
3198
3282
 
3199
- gl_Position = unitToNdc(applySampleFacet(pos));
3283
+ gl_Position = unitToNdc(facetedPos);
3200
3284
 
3201
3285
  float strokeWidth = getScaled_strokeWidth();
3202
3286
 
@@ -3310,6 +3394,8 @@ uniform View {
3310
3394
  mediump vec2 uViewScale;
3311
3395
  /** Size of the logical viewport in pixels, i.e., the view */
3312
3396
  mediump vec2 uViewportSize;
3397
+ mediump vec4 uLogicalVisibleRect;
3398
+ lowp vec2 uCullByVisibleRange;
3313
3399
  lowp float uDevicePixelRatio;
3314
3400
  // TODO: Views with opacity less than 1.0 should be rendered into a texture
3315
3401
  // that is rendered with the specified opacity.
@@ -3338,6 +3424,15 @@ vec4 pixelsToNdc(float x, float y) {
3338
3424
  return pixelsToNdc(vec2(x, y));
3339
3425
  }
3340
3426
 
3427
+ bool isOutsideVisibleRange(vec2 pos) {
3428
+ return (uCullByVisibleRange.x > 0.5 &&
3429
+ (pos.x < uLogicalVisibleRect.x ||
3430
+ pos.x > uLogicalVisibleRect.z)) ||
3431
+ (uCullByVisibleRange.y > 0.5 &&
3432
+ (pos.y < uLogicalVisibleRect.y ||
3433
+ pos.y > uLogicalVisibleRect.w));
3434
+ }
3435
+
3341
3436
  float linearstep(float edge0, float edge1, float x) {
3342
3437
  return clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
3343
3438
  }
@@ -3576,6 +3671,8 @@ uniform View {
3576
3671
  mediump vec2 uViewScale;
3577
3672
  /** Size of the logical viewport in pixels, i.e., the view */
3578
3673
  mediump vec2 uViewportSize;
3674
+ mediump vec4 uLogicalVisibleRect;
3675
+ lowp vec2 uCullByVisibleRange;
3579
3676
  lowp float uDevicePixelRatio;
3580
3677
  // TODO: Views with opacity less than 1.0 should be rendered into a texture
3581
3678
  // that is rendered with the specified opacity.
@@ -3604,6 +3701,15 @@ vec4 pixelsToNdc(float x, float y) {
3604
3701
  return pixelsToNdc(vec2(x, y));
3605
3702
  }
3606
3703
 
3704
+ bool isOutsideVisibleRange(vec2 pos) {
3705
+ return (uCullByVisibleRange.x > 0.5 &&
3706
+ (pos.x < uLogicalVisibleRect.x ||
3707
+ pos.x > uLogicalVisibleRect.z)) ||
3708
+ (uCullByVisibleRange.y > 0.5 &&
3709
+ (pos.y < uLogicalVisibleRect.y ||
3710
+ pos.y > uLogicalVisibleRect.w));
3711
+ }
3712
+
3607
3713
  float linearstep(float edge0, float edge1, float x) {
3608
3714
  return clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
3609
3715
  }
@@ -4261,8 +4367,17 @@ void main(void) {
4261
4367
 
4262
4368
  float size = getScaled_size();
4263
4369
  vec2 pos = vec2(getScaled_x(), getScaled_y()) + getDxDy();
4370
+ vec2 facetedPos = applySampleFacet(pos);
4264
4371
 
4265
- gl_Position = unitToNdc(applySampleFacet(pos));
4372
+ #ifdef VISIBLE_RANGE_CULLING
4373
+ if (isOutsideVisibleRange(facetedPos)) {
4374
+ gl_PointSize = 0.0;
4375
+ gl_Position = vec4(100.0, 0.0, 0.0, 0.0);
4376
+ return;
4377
+ }
4378
+ #endif
4379
+
4380
+ gl_Position = unitToNdc(facetedPos);
4266
4381
 
4267
4382
  float strokeWidth = getScaled_strokeWidth();
4268
4383
 
@@ -4385,6 +4500,8 @@ uniform View {
4385
4500
  mediump vec2 uViewScale;
4386
4501
  /** Size of the logical viewport in pixels, i.e., the view */
4387
4502
  mediump vec2 uViewportSize;
4503
+ mediump vec4 uLogicalVisibleRect;
4504
+ lowp vec2 uCullByVisibleRange;
4388
4505
  lowp float uDevicePixelRatio;
4389
4506
  // TODO: Views with opacity less than 1.0 should be rendered into a texture
4390
4507
  // that is rendered with the specified opacity.
@@ -4413,6 +4530,15 @@ vec4 pixelsToNdc(float x, float y) {
4413
4530
  return pixelsToNdc(vec2(x, y));
4414
4531
  }
4415
4532
 
4533
+ bool isOutsideVisibleRange(vec2 pos) {
4534
+ return (uCullByVisibleRange.x > 0.5 &&
4535
+ (pos.x < uLogicalVisibleRect.x ||
4536
+ pos.x > uLogicalVisibleRect.z)) ||
4537
+ (uCullByVisibleRange.y > 0.5 &&
4538
+ (pos.y < uLogicalVisibleRect.y ||
4539
+ pos.y > uLogicalVisibleRect.w));
4540
+ }
4541
+
4416
4542
  float linearstep(float edge0, float edge1, float x) {
4417
4543
  return clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
4418
4544
  }
@@ -4770,6 +4896,8 @@ uniform View {
4770
4896
  mediump vec2 uViewScale;
4771
4897
  /** Size of the logical viewport in pixels, i.e., the view */
4772
4898
  mediump vec2 uViewportSize;
4899
+ mediump vec4 uLogicalVisibleRect;
4900
+ lowp vec2 uCullByVisibleRange;
4773
4901
  lowp float uDevicePixelRatio;
4774
4902
  // TODO: Views with opacity less than 1.0 should be rendered into a texture
4775
4903
  // that is rendered with the specified opacity.
@@ -4798,6 +4926,15 @@ vec4 pixelsToNdc(float x, float y) {
4798
4926
  return pixelsToNdc(vec2(x, y));
4799
4927
  }
4800
4928
 
4929
+ bool isOutsideVisibleRange(vec2 pos) {
4930
+ return (uCullByVisibleRange.x > 0.5 &&
4931
+ (pos.x < uLogicalVisibleRect.x ||
4932
+ pos.x > uLogicalVisibleRect.z)) ||
4933
+ (uCullByVisibleRange.y > 0.5 &&
4934
+ (pos.y < uLogicalVisibleRect.y ||
4935
+ pos.y > uLogicalVisibleRect.w));
4936
+ }
4937
+
4801
4938
  float linearstep(float edge0, float edge1, float x) {
4802
4939
  return clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
4803
4940
  }
@@ -1,6 +1,29 @@
1
+ /**
2
+ * @param {{ width: number, height: number }} canvasSize
3
+ * @param {Rectangle} coords
4
+ * @param {ClipOptions | undefined} clip
5
+ * @param {boolean} [clipSelf]
6
+ */
7
+ export function createViewportScope(canvasSize: {
8
+ width: number;
9
+ height: number;
10
+ }, coords: Rectangle, clip: ClipOptions | undefined, clipSelf?: boolean): {
11
+ requiresScissor: boolean;
12
+ coords: import("../view/layout/rectangle.js").default;
13
+ };
14
+ /**
15
+ * @param {Rectangle} coords
16
+ * @param {ClipOptions | undefined} clip
17
+ * @returns {[number, number, number, number]}
18
+ */
19
+ export function createLogicalVisibleRect(coords: Rectangle, clip: ClipOptions | undefined): [number, number, number, number];
1
20
  export const SAMPLE_FACET_UNIFORM: "SAMPLE_FACET_UNIFORM";
2
21
  export const SAMPLE_FACET_TEXTURE: "SAMPLE_FACET_TEXTURE";
3
22
  export const SELECTION_TEXTURE_PREFIX: "uSelectionTexture_";
23
+ /**
24
+ * @typedef {import("../types/rendering.js").ClipOptions} ClipOptions
25
+ * @typedef {import("../view/layout/rectangle.js").default} Rectangle
26
+ */
4
27
  /**
5
28
  *
6
29
  * @typedef {import("../types/rendering.js").RenderingOptions} RenderingOptions
@@ -15,6 +38,13 @@ export const SELECTION_TEXTURE_PREFIX: "uSelectionTexture_";
15
38
  *
16
39
  * @typedef {"intersects" | "encloses" | "endpoints"} HitTestMode
17
40
  */
41
+ /**
42
+ * @typedef {object} MarkDebugState
43
+ * @prop {boolean} markUniformsAltered
44
+ * @prop {number | undefined} vertexCount
45
+ * @prop {number | undefined} allocatedVertices
46
+ * @prop {Record<string, any>} properties
47
+ */
18
48
  /**
19
49
  * @template {MarkProps} [P=MarkProps]
20
50
  */
@@ -144,7 +174,7 @@ export default class Mark<P extends import("../spec/mark.js").MarkProps = import
144
174
  */
145
175
  get encoding(): import("../spec/channel.js").Encoding;
146
176
  getContext(): import("../types/viewContext.js").default;
147
- getType(): "text" | "point" | "link" | "rect" | "rule" | "tick";
177
+ getType(): "rect" | "point" | "rule" | "tick" | "text" | "link";
148
178
  initializeData(): void;
149
179
  /**
150
180
  * Initialize encoders that encode fields of the data (or constants) to
@@ -159,7 +189,7 @@ export default class Mark<P extends import("../spec/mark.js").MarkProps = import
159
189
  * Update WebGL buffers from the data
160
190
  */
161
191
  updateGraphicsData(): void;
162
- getSampleFacetMode(): "SAMPLE_FACET_UNIFORM" | "SAMPLE_FACET_TEXTURE";
192
+ getSampleFacetMode(): "SAMPLE_FACET_TEXTURE" | "SAMPLE_FACET_UNIFORM";
163
193
  /**
164
194
  *
165
195
  * @param {string} vertexShader
@@ -222,6 +252,10 @@ export default class Mark<P extends import("../spec/mark.js").MarkProps = import
222
252
  * Returns true if this mark instance participates in picking.
223
253
  */
224
254
  isPickingParticipant(): boolean;
255
+ /**
256
+ * @returns {MarkDebugState}
257
+ */
258
+ getDebugState(): MarkDebugState;
225
259
  /**
226
260
  * @protected
227
261
  */
@@ -265,13 +299,14 @@ export default class Mark<P extends import("../spec/mark.js").MarkProps = import
265
299
  * @param {{width: number, height: number}} canvasSize Size of the canvas in logical pixels
266
300
  * @param {number} dpr Device pixel ratio
267
301
  * @param {import("../view/layout/rectangle.js").default} coords
268
- * @param {import("../view/layout/rectangle.js").default} [clipRect]
302
+ * @param {ClipOptions} [clip]
303
+ * @param {ClipOptions} [cullClip]
269
304
  * @returns {boolean} true if the viewport is renderable (size > 0)
270
305
  */
271
306
  setViewport(canvasSize: {
272
307
  width: number;
273
308
  height: number;
274
- }, dpr: number, coords: import("../view/layout/rectangle.js").default, clipRect?: import("../view/layout/rectangle.js").default): boolean;
309
+ }, dpr: number, coords: import("../view/layout/rectangle.js").default, clip?: ClipOptions, cullClip?: ClipOptions): boolean;
275
310
  /**
276
311
  * Finds a datum that overlaps the given value on the x domain.
277
312
  * The result is unspecified if multiple data are found.
@@ -285,6 +320,8 @@ export default class Mark<P extends import("../spec/mark.js").MarkProps = import
285
320
  findDatumAt(facetId: string, x: import("../spec/channel.js").Scalar): any;
286
321
  #private;
287
322
  }
323
+ export type ClipOptions = import("../types/rendering.js").ClipOptions;
324
+ export type Rectangle = import("../view/layout/rectangle.js").default;
288
325
  export type RenderingOptions = import("../types/rendering.js").RenderingOptions;
289
326
  export type _MarkRenderingOptions = {
290
327
  /**
@@ -296,6 +333,12 @@ export type _MarkRenderingOptions = {
296
333
  export type MarkRenderingOptions = RenderingOptions & _MarkRenderingOptions;
297
334
  export type DrawFunction = (offset: number, count: number) => any;
298
335
  export type HitTestMode = "intersects" | "encloses" | "endpoints";
336
+ export type MarkDebugState = {
337
+ markUniformsAltered: boolean;
338
+ vertexCount: number | undefined;
339
+ allocatedVertices: number | undefined;
340
+ properties: Record<string, any>;
341
+ };
299
342
  /**
300
343
  * @augments {InternMap<K, import("../gl/dataToVertices.js").RangeEntry>}
301
344
  * @template K
@@ -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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"}