@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
@@ -39,13 +39,11 @@ export const VISIT_STOP: "VISIT_STOP";
39
39
  * @callback InteractionListener
40
40
  * @param {import("../utils/interaction.js").default} event
41
41
  */
42
+ /** @typedef {import("../types/viewContext.js").ViewOptions} ViewOptions */
42
43
  /**
43
- * @typedef {object} ViewOptions
44
- * @prop {boolean} [blockEncodingInheritance]
45
- * Don't inherit encodings from parent. Default: false.
46
- * @prop {"own" | "inherit"} [layoutSizeParams]
47
- * Whether the view should introduce local layout-driven width/height params.
48
- * Default: "own".
44
+ * @typedef {object} ParentGridChromePolicy
45
+ * @prop {boolean} axes
46
+ * @prop {boolean} background
49
47
  */
50
48
  /**
51
49
  * @template {import("../spec/view.js").ViewSpec} [TSpec=import("../spec/view.js").ViewSpec]
@@ -89,17 +87,16 @@ export default class View<TSpec extends import("../spec/view.js").ViewSpec = imp
89
87
  * @type {Partial<Record<import("../spec/channel.js").PrimaryPositionalChannel, import("../scales/axisResolution.js").default>>}
90
88
  */
91
89
  axis: Partial<Record<import("../spec/channel.js").PrimaryPositionalChannel, import("../scales/axisResolution.js").default>>;
92
- };
93
- options: {
94
- /**
95
- * Don't inherit encodings from parent. Default: false.
96
- */
97
- blockEncodingInheritance: boolean;
98
90
  /**
99
- * Whether the view should introduce local layout-driven width/height params.
100
- * Default: "own".
91
+ * Channel-specific legend resolutions.
92
+ * @type {Partial<Record<import("../spec/channel.js").ChannelWithScale, import("../scales/legendResolution.js").default>>}
101
93
  */
94
+ legend: Partial<Record<import("../spec/channel.js").ChannelWithScale, import("../scales/legendResolution.js").default>>;
95
+ };
96
+ options: {
97
+ inheritEncoding: boolean;
102
98
  layoutSizeParams: string;
99
+ axisLabelClipPolicy?: Partial<Record<import("../spec/channel.js").PrimaryPositionalChannel, import("./axisView.js").AxisLabelClipPolicy>>;
103
100
  };
104
101
  /**
105
102
  * @type {import("../data/flowHandle.js").FlowHandle | undefined}
@@ -336,6 +333,12 @@ export default class View<TSpec extends import("../spec/view.js").ViewSpec = imp
336
333
  * @return {WebGLTexture}
337
334
  */
338
335
  getSampleFacetTexture(): WebGLTexture;
336
+ /**
337
+ * Controls which decorations the parent GridView draws around this view.
338
+ *
339
+ * @returns {ParentGridChromePolicy}
340
+ */
341
+ getParentGridChromePolicy(): ParentGridChromePolicy;
339
342
  /**
340
343
  * @param {import("../spec/channel.js").ChannelWithScale} channel
341
344
  */
@@ -344,6 +347,10 @@ export default class View<TSpec extends import("../spec/view.js").ViewSpec = imp
344
347
  * @param {import("../spec/channel.js").PositionalChannel} channel
345
348
  */
346
349
  getAxisResolution(channel: import("../spec/channel.js").PositionalChannel): import("../scales/axisResolution.js").default;
350
+ /**
351
+ * @param {import("../spec/channel.js").ChannelWithScale} channel
352
+ */
353
+ getLegendResolution(channel: import("../spec/channel.js").ChannelWithScale): import("../scales/legendResolution.js").default;
347
354
  /**
348
355
  * @param {import("../spec/channel.js").Channel | "default"} channel
349
356
  * @param {import("../spec/view.js").ResolutionTarget} resolutionType
@@ -431,16 +438,10 @@ export type BroadcastMessage = {
431
438
  * same view.
432
439
  */
433
440
  export type InteractionListener = (event: import("../utils/interaction.js").default) => any;
434
- export type ViewOptions = {
435
- /**
436
- * Don't inherit encodings from parent. Default: false.
437
- */
438
- blockEncodingInheritance?: boolean;
439
- /**
440
- * Whether the view should introduce local layout-driven width/height params.
441
- * Default: "own".
442
- */
443
- layoutSizeParams?: "own" | "inherit";
441
+ export type ViewOptions = import("../types/viewContext.js").ViewOptions;
442
+ export type ParentGridChromePolicy = {
443
+ axes: boolean;
444
+ background: boolean;
444
445
  };
445
446
  import ViewParamRuntime from "../paramRuntime/viewParamRuntime.js";
446
447
  import Padding from "./layout/padding.js";
@@ -1 +1 @@
1
- {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../src/view/view.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../src/view/view.js"],"names":[],"mappings":"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"}
@@ -21,6 +21,10 @@ import { isExprRef } from "../paramRuntime/paramUtils.js";
21
21
  import { InternMap } from "internmap";
22
22
  import { endWithSlash } from "../utils/addBaseUrl.js";
23
23
  import { mergeConfigScopes } from "../config/mergeConfig.js";
24
+ import {
25
+ clipCoords,
26
+ normalizeClipOptions,
27
+ } from "./renderingContext/clipOptions.js";
24
28
 
25
29
  // TODO: View classes have too many responsibilities. Come up with a way
26
30
  // to separate the concerns. However, most concerns are tightly tied to
@@ -74,14 +78,14 @@ const defaultOpacityFunction = (parentOpacity) => parentOpacity;
74
78
  * @param {import("../utils/interaction.js").default} event
75
79
  */
76
80
 
81
+ /** @typedef {import("../types/viewContext.js").ViewOptions} ViewOptions */
82
+
77
83
  /**
78
- * @typedef {object} ViewOptions
79
- * @prop {boolean} [blockEncodingInheritance]
80
- * Don't inherit encodings from parent. Default: false.
81
- * @prop {"own" | "inherit"} [layoutSizeParams]
82
- * Whether the view should introduce local layout-driven width/height params.
83
- * Default: "own".
84
+ * @typedef {object} ParentGridChromePolicy
85
+ * @prop {boolean} axes
86
+ * @prop {boolean} background
84
87
  */
88
+
85
89
  /**
86
90
  * @template {import("../spec/view.js").ViewSpec} [TSpec=import("../spec/view.js").ViewSpec]
87
91
  */
@@ -185,12 +189,17 @@ export default class View {
185
189
  * @type {Partial<Record<import("../spec/channel.js").PrimaryPositionalChannel, import("../scales/axisResolution.js").default>>}
186
190
  */
187
191
  axis: {},
192
+ /**
193
+ * Channel-specific legend resolutions.
194
+ * @type {Partial<Record<import("../spec/channel.js").ChannelWithScale, import("../scales/legendResolution.js").default>>}
195
+ */
196
+ legend: {},
188
197
  };
189
198
 
190
199
  initPropertyCache(this);
191
200
 
192
201
  this.options = {
193
- blockEncodingInheritance: false,
202
+ inheritEncoding: false,
194
203
  layoutSizeParams: "own",
195
204
  ...options,
196
205
  };
@@ -235,7 +244,8 @@ export default class View {
235
244
  #createLayoutSizeSetter(name) {
236
245
  if (
237
246
  this.paramRuntime.hasLocalParam(name) ||
238
- this.paramRuntime.hasConfiguredParamInScopeChain(name)
247
+ (this.options.layoutSizeParams != "force" &&
248
+ this.paramRuntime.hasConfiguredParamInScopeChain(name))
239
249
  ) {
240
250
  return undefined;
241
251
  }
@@ -383,7 +393,7 @@ export default class View {
383
393
  * @return {import("./layout/flexLayout.js").SizeDef}
384
394
  */
385
395
  #getDimensionSize(dimension) {
386
- let value = this.spec[dimension];
396
+ const { value, implicit } = this.#getDimensionValue(dimension);
387
397
  const needsStepInvalidation = isStepSize(value);
388
398
 
389
399
  const viewport =
@@ -431,6 +441,10 @@ export default class View {
431
441
  );
432
442
 
433
443
  return { px: steps * stepSize, grow: 0 };
444
+ } else if (implicit) {
445
+ // Vega-Lite treats a missing positional channel as one
446
+ // discrete step. Keep explicit step sizes strict.
447
+ return { px: stepSize, grow: 0 };
434
448
  } else {
435
449
  throw new ViewError(
436
450
  `Cannot use step-based size with "${dimension}"!`,
@@ -445,6 +459,59 @@ export default class View {
445
459
  }
446
460
  }
447
461
 
462
+ /**
463
+ * @param {"width" | "height" | "viewportWidth" | "viewportHeight"} dimension
464
+ * @returns {{ value: "container" | number | import("../spec/view.js").SizeDef | import("../spec/view.js").Step | undefined, implicit: boolean }}
465
+ */
466
+ #getDimensionValue(dimension) {
467
+ const value = this.spec[dimension];
468
+ if (value != null) {
469
+ return { value, implicit: false };
470
+ }
471
+
472
+ const viewport =
473
+ dimension == "viewportWidth" || dimension == "viewportHeight";
474
+ if (viewport) {
475
+ return { value, implicit: false };
476
+ }
477
+
478
+ return {
479
+ value: this.#getConfiguredDefaultSize(
480
+ /** @type {"width" | "height"} */ (dimension)
481
+ ),
482
+ implicit: true,
483
+ };
484
+ }
485
+
486
+ /**
487
+ * @param {"width" | "height"} dimension
488
+ * @returns {number | import("../spec/view.js").Step | undefined}
489
+ */
490
+ #getConfiguredDefaultSize(dimension) {
491
+ const viewConfig = this.getConfig().view;
492
+ if (!viewConfig) {
493
+ return undefined;
494
+ }
495
+
496
+ const channel = dimension == "width" ? "x" : "y";
497
+ const scaleType =
498
+ this.getScaleResolution(channel)?.getResolvedScaleType();
499
+ if (scaleType && !isDiscrete(scaleType)) {
500
+ return dimension == "width"
501
+ ? viewConfig.continuousWidth
502
+ : viewConfig.continuousHeight;
503
+ } else {
504
+ return (
505
+ (dimension == "width"
506
+ ? viewConfig.discreteWidth
507
+ : viewConfig.discreteHeight) ??
508
+ (viewConfig.step !== undefined
509
+ ? { step: viewConfig.step }
510
+ : undefined)
511
+ );
512
+ }
513
+ }
514
+
448
515
  registerStepSizeInvalidation() {
449
516
  this.#registerStepSizeInvalidationFor("width", "x");
450
517
  this.#registerStepSizeInvalidationFor("height", "y");
@@ -455,13 +522,17 @@ export default class View {
455
522
  * @param {import("../spec/channel.js").PrimaryPositionalChannel} channel
456
523
  */
457
524
  #registerStepSizeInvalidationFor(dimension, channel) {
458
- const value = this.spec[dimension];
525
+ const { value, implicit } = this.#getDimensionValue(dimension);
459
526
  if (!isStepSize(value)) {
460
527
  return;
461
528
  }
462
529
 
463
530
  const resolution = this.getScaleResolution(channel);
464
531
  if (!resolution) {
532
+ if (implicit) {
533
+ return;
534
+ }
535
+
465
536
  throw new ViewError(
466
537
  "Cannot use 'step' size without a scale!",
467
538
  this
@@ -820,7 +891,7 @@ export default class View {
820
891
  }
821
892
  this.facetCoords.set(
822
893
  options.facetId,
823
- options.clipRect ? coords.intersect(options.clipRect) : coords
894
+ clipCoords(coords, normalizeClipOptions(options))
824
895
  );
825
896
 
826
897
  this.#widthSetter?.(coords.width);
@@ -838,7 +909,7 @@ export default class View {
838
909
  */
839
910
  getEncoding() {
840
911
  const pe =
841
- this.dataParent && !this.options.blockEncodingInheritance
912
+ this.dataParent && this.options.inheritEncoding
842
913
  ? this.dataParent.getEncoding()
843
914
  : {};
844
915
  const te = this.spec.encoding || {};
@@ -880,6 +951,8 @@ export default class View {
880
951
  const sampleFieldDef = this.getEncoding().sample;
881
952
  if (isFieldDef(sampleFieldDef)) {
882
953
  return [sampleFieldDef.field];
954
+ } else if (!this.options.inheritEncoding) {
955
+ return [];
883
956
  } else {
884
957
  return this.layoutParent?.getFacetFields(this);
885
958
  }
@@ -905,6 +978,18 @@ export default class View {
905
978
  return undefined;
906
979
  }
907
980
 
981
+ /**
982
+ * Controls which decorations the parent GridView draws around this view.
983
+ *
984
+ * @returns {ParentGridChromePolicy}
985
+ */
986
+ getParentGridChromePolicy() {
987
+ return {
988
+ axes: true,
989
+ background: true,
990
+ };
991
+ }
992
+
908
993
  /**
909
994
  * @param {import("../spec/channel.js").ChannelWithScale} channel
910
995
  */
@@ -933,6 +1018,20 @@ export default class View {
933
1018
  .find((resolution) => resolution);
934
1019
  }
935
1020
 
1021
+ /**
1022
+ * @param {import("../spec/channel.js").ChannelWithScale} channel
1023
+ */
1024
+ getLegendResolution(channel) {
1025
+ const primaryChannel =
1026
+ /** @type {import("../spec/channel.js").ChannelWithScale} */ (
1027
+ getPrimaryChannel(channel)
1028
+ );
1029
+
1030
+ return this.getDataAncestors()
1031
+ .map((view) => view.resolutions.legend[primaryChannel])
1032
+ .find((resolution) => resolution);
1033
+ }
1034
+
936
1035
  /**
937
1036
  * @param {import("../spec/channel.js").Channel | "default"} channel
938
1037
  * @param {import("../spec/view.js").ResolutionTarget} resolutionType
@@ -948,11 +1047,17 @@ export default class View {
948
1047
  * @returns {import("../spec/view.js").ResolutionBehavior}
949
1048
  */
950
1049
  getConfiguredOrDefaultResolution(channel, resolutionType) {
951
- return (
1050
+ const configuredResolution =
952
1051
  this.getConfiguredResolution(channel, resolutionType) ??
953
- this.getConfiguredResolution("default", resolutionType) ??
954
- this.getDefaultResolution(channel, resolutionType)
955
- );
1052
+ this.getConfiguredResolution("default", resolutionType);
1053
+
1054
+ if (configuredResolution) {
1055
+ return configuredResolution;
1056
+ } else if (resolutionType == "legend") {
1057
+ return this.getConfiguredOrDefaultResolution(channel, "scale");
1058
+ } else {
1059
+ return this.getDefaultResolution(channel, resolutionType);
1060
+ }
956
1061
  }
957
1062
 
958
1063
  /**
@@ -4,8 +4,7 @@ export const VIEW_ROOT_NAME: "viewRoot";
4
4
  * @property {boolean} [allowImport] allows imports from urls
5
5
  * @property {boolean} [wrapRoot]
6
6
  *
7
- * @typedef {object} CreateViewOptions
8
- * @property {"own" | "inherit"} [layoutSizeParams]
7
+ * @typedef {import("../types/viewContext.js").CreateViewOptions} CreateViewOptions
9
8
  */
10
9
  /**
11
10
  *
@@ -59,9 +58,7 @@ export type ViewFactoryOptions = {
59
58
  allowImport?: boolean;
60
59
  wrapRoot?: boolean;
61
60
  };
62
- export type CreateViewOptions = {
63
- layoutSizeParams?: "own" | "inherit";
64
- };
61
+ export type CreateViewOptions = import("../types/viewContext.js").CreateViewOptions;
65
62
  import View from "./view.js";
66
63
  export { isConcatSpec, isFacetSpec, isHConcatSpec, isImportSpec, isLayerSpec, isUnitSpec, isVConcatSpec } from "./viewSpecGuards.js";
67
64
  //# sourceMappingURL=viewFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"viewFactory.d.ts","sourceRoot":"","sources":["../../../src/view/viewFactory.js"],"names":[],"mappings":"AA2BA,6BAA8B,UAAU,CAAC;AAEzC;;;;;;;GAOG;AAEH;;GAEG;AACH;IAiBI;;OAEG;IACH,sBAFW,kBAAkB,EAoE5B;IAjEG,2CAA2C;IAC3C,SADW,QAAQ,CAAC,kBAAkB,CAAC,CAKtC;IA8DL;;;OAGG;IACH,qEAlFiC,OAAO,yHAC2B,OAAO,oBAAoB,EAAE,OAAO,eAAe,OAAO,WAAW,EAAE,OAAO,gBAAgB,MAAM,YAAY,iBAAiB,KAAK,IAAI,QAmF5M;IAED;;;;;;;OAOG;IACH,wHALW,OAAO,oBAAoB,EAAE,OAAO,eACpC,OAAO,WAAW,EAAE,OAAO,gBAC3B,MAAM,YACN,iBAAiB,4CA0B3B;IAED;;;;OAIG;IACH,sDAFa,IAAI,sCAAY,CAU5B;IAED;;;;;;;;;;;OAWG;IACH,yBARW,qCAAW,OAAO,iBAAiB,EAAE,UAAU,qEAE/C,OAAO,oBAAoB,EAAE,OAAO,eACpC,OAAO,WAAW,EAAE,OAAO,gBAC3B,MAAM,cACN,CAAC,IAAI,oCAAU,KAAK,IAAI,YACxB,iBAAiB,qDAqG3B;;CACJ;;;;;kBA3Qa,OAAO;eACP,OAAO;;;uBAGP,KAAK,GAAG,SAAS;;iBAlCd,WAAW"}
1
+ {"version":3,"file":"viewFactory.d.ts","sourceRoot":"","sources":["../../../src/view/viewFactory.js"],"names":[],"mappings":"AA2BA,6BAA8B,UAAU,CAAC;AAEzC;;;;;;GAMG;AAEH;;GAEG;AACH;IAiBI;;OAEG;IACH,sBAFW,kBAAkB,EAoE5B;IAjEG,2CAA2C;IAC3C,SADW,QAAQ,CAAC,kBAAkB,CAAC,CAKtC;IA8DL;;;OAGG;IACH,qEAlFiC,OAAO,yHAC2B,OAAO,oBAAoB,EAAE,OAAO,eAAe,OAAO,WAAW,EAAE,OAAO,gBAAgB,MAAM,YAAY,iBAAiB,KAAK,IAAI,QAmF5M;IAED;;;;;;;OAOG;IACH,wHALW,OAAO,oBAAoB,EAAE,OAAO,eACpC,OAAO,WAAW,EAAE,OAAO,gBAC3B,MAAM,YACN,iBAAiB,4CA0B3B;IAED;;;;OAIG;IACH,sDAFa,IAAI,sCAAY,CAU5B;IAED;;;;;;;;;;;OAWG;IACH,yBARW,qCAAW,OAAO,iBAAiB,EAAE,UAAU,qEAE/C,OAAO,oBAAoB,EAAE,OAAO,eACpC,OAAO,WAAW,EAAE,OAAO,gBAC3B,MAAM,cACN,CAAC,IAAI,oCAAU,KAAK,IAAI,YACxB,iBAAiB,qDAqG3B;;CACJ;;;;;kBA1Qa,OAAO;eACP,OAAO;;gCAER,OAAO,yBAAyB,EAAE,iBAAiB;iBAjC/C,WAAW"}
@@ -32,8 +32,7 @@ export const VIEW_ROOT_NAME = "viewRoot";
32
32
  * @property {boolean} [allowImport] allows imports from urls
33
33
  * @property {boolean} [wrapRoot]
34
34
  *
35
- * @typedef {object} CreateViewOptions
36
- * @property {"own" | "inherit"} [layoutSizeParams]
35
+ * @typedef {import("../types/viewContext.js").CreateViewOptions} CreateViewOptions
37
36
  */
38
37
 
39
38
  /**
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Returns the shared runtime identity registry for a view hierarchy.
3
+ *
4
+ * The registry is keyed by the root view instead of being global because view
5
+ * ids are only meaningful inside one embedded GenomeSpy runtime. This keeps
6
+ * independent embeds isolated while still allowing optional tools, such as the
7
+ * inspector and the public view API, to agree on ids for the same live views.
8
+ *
9
+ * The WeakMap avoids adding debug-only fields to View instances and lets the
10
+ * registry disappear when the root hierarchy is released.
11
+ *
12
+ * @param {View} root
13
+ * @returns {ViewIdentityRegistry}
14
+ */
15
+ export function getViewIdentityRegistry(root: View): ViewIdentityRegistry;
16
+ /**
17
+ * Allocates runtime-stable ids for View object identities.
18
+ *
19
+ * Ids are intentionally synthetic. They are stable for the lifetime of the
20
+ * root view hierarchy, but they are not persisted and must not be used as
21
+ * bookmarks across reloads.
22
+ */
23
+ export class ViewIdentityRegistry {
24
+ /**
25
+ * @param {View} view
26
+ * @returns {string}
27
+ */
28
+ getId(view: View): string;
29
+ /**
30
+ * @param {string} id
31
+ * @returns {View | undefined}
32
+ */
33
+ getView(id: string): View | undefined;
34
+ #private;
35
+ }
36
+ export type View = import("./view.js").default;
37
+ //# sourceMappingURL=viewIdentityRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewIdentityRegistry.d.ts","sourceRoot":"","sources":["../../../src/view/viewIdentityRegistry.js"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;GAaG;AACH,8CAHW,IAAI,GACF,oBAAoB,CAUhC;AAED;;;;;;GAMG;AACH;IASI;;;OAGG;IACH,YAHW,IAAI,GACF,MAAM,CAYlB;IAED;;;OAGG;IACH,YAHW,MAAM,GACJ,IAAI,GAAG,SAAS,CAI5B;;CACJ;mBArEY,OAAO,WAAW,EAAE,OAAO"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * @typedef {import("./view.js").default} View
3
+ */
4
+
5
+ /** @type {WeakMap<View, ViewIdentityRegistry>} */
6
+ const registriesByRoot = new WeakMap();
7
+
8
+ /**
9
+ * Returns the shared runtime identity registry for a view hierarchy.
10
+ *
11
+ * The registry is keyed by the root view instead of being global because view
12
+ * ids are only meaningful inside one embedded GenomeSpy runtime. This keeps
13
+ * independent embeds isolated while still allowing optional tools, such as the
14
+ * inspector and the public view API, to agree on ids for the same live views.
15
+ *
16
+ * The WeakMap avoids adding debug-only fields to View instances and lets the
17
+ * registry disappear when the root hierarchy is released.
18
+ *
19
+ * @param {View} root
20
+ * @returns {ViewIdentityRegistry}
21
+ */
22
+ export function getViewIdentityRegistry(root) {
23
+ let registry = registriesByRoot.get(root);
24
+ if (!registry) {
25
+ registry = new ViewIdentityRegistry();
26
+ registriesByRoot.set(root, registry);
27
+ }
28
+
29
+ return registry;
30
+ }
31
+
32
+ /**
33
+ * Allocates runtime-stable ids for View object identities.
34
+ *
35
+ * Ids are intentionally synthetic. They are stable for the lifetime of the
36
+ * root view hierarchy, but they are not persisted and must not be used as
37
+ * bookmarks across reloads.
38
+ */
39
+ export class ViewIdentityRegistry {
40
+ /** @type {WeakMap<View, string>} */
41
+ #idsByView = new WeakMap();
42
+
43
+ /** @type {Map<string, View>} */
44
+ #viewsById = new Map();
45
+
46
+ #nextId = 0;
47
+
48
+ /**
49
+ * @param {View} view
50
+ * @returns {string}
51
+ */
52
+ getId(view) {
53
+ let id = this.#idsByView.get(view);
54
+ if (!id) {
55
+ id = "view-" + String(this.#nextId);
56
+ this.#nextId++;
57
+ this.#idsByView.set(view, id);
58
+ this.#viewsById.set(id, view);
59
+ }
60
+
61
+ return id;
62
+ }
63
+
64
+ /**
65
+ * @param {string} id
66
+ * @returns {View | undefined}
67
+ */
68
+ getView(id) {
69
+ return this.#viewsById.get(id);
70
+ }
71
+ }
@@ -0,0 +1,112 @@
1
+ /**
2
+ * @typedef {{
3
+ * view: import("./view.js").default,
4
+ * api: import("../types/embedApi.js").ViewApi,
5
+ * context: import("../types/viewContext.js").default
6
+ * }} ViewMutationAcidHarness
7
+ */
8
+ /**
9
+ * @param {import("../spec/root.js").RootSpec} spec
10
+ * @param {Parameters<typeof createHeadlessEngine>[1]} [options]
11
+ * @returns {Promise<ViewMutationAcidHarness>}
12
+ */
13
+ export function createViewMutationAcidHarness(spec: import("../spec/root.js").RootSpec, options?: Parameters<typeof createHeadlessEngine>[1]): Promise<ViewMutationAcidHarness>;
14
+ /**
15
+ * Captures normalized lifecycle state that should remain stable after a
16
+ * round-trip mutation.
17
+ *
18
+ * @param {import("./view.js").default} viewRoot
19
+ */
20
+ export function createMutationAcidSnapshot(viewRoot: import("./view.js").default): {
21
+ hierarchy: {
22
+ name: string;
23
+ explicitName: string;
24
+ defaultName: string;
25
+ type: string;
26
+ dataState: "none" | "pending" | "ready";
27
+ visibleInSpec: boolean;
28
+ configuredVisible: boolean;
29
+ layoutParent: number;
30
+ dataParent: number;
31
+ children: number[];
32
+ flowHandle: {
33
+ dataSource: boolean;
34
+ collector: boolean;
35
+ };
36
+ resolutions: {
37
+ scale: {
38
+ [k: string]: {
39
+ view: number;
40
+ channel: import("../spec/channel.js").ChannelWithScale;
41
+ contributesToDomain: boolean;
42
+ }[];
43
+ };
44
+ axis: {
45
+ [k: string]: {
46
+ visible: boolean;
47
+ title: string;
48
+ };
49
+ };
50
+ legend: {
51
+ [k: string]: {
52
+ visible: boolean;
53
+ definitions: {
54
+ view: number;
55
+ channel: import("../spec/channel.js").ChannelWithScale;
56
+ type: import("../scales/legendResolution.js").LegendType;
57
+ field: string;
58
+ }[];
59
+ };
60
+ };
61
+ };
62
+ }[];
63
+ layout: {
64
+ viewName: string;
65
+ coords: string;
66
+ children: /*elided*/ any[];
67
+ addChild(viewCoords: /*elided*/ any): void;
68
+ };
69
+ };
70
+ /**
71
+ * Captures object identities that should survive a round-trip mutation.
72
+ *
73
+ * @param {import("./view.js").default} viewRoot
74
+ */
75
+ export function captureMutationAcidIdentities(viewRoot: import("./view.js").default): {
76
+ views: import("./view.js").default<import("../spec/view.js").ViewSpec>[];
77
+ collectors: import("../data/collector.js").default[];
78
+ };
79
+ /**
80
+ * @template T
81
+ * @returns {{
82
+ * promise: Promise<T>,
83
+ * resolve: (value: T) => void,
84
+ * reject: (reason?: unknown) => void
85
+ * }}
86
+ */
87
+ export function createDeferred<T>(): {
88
+ promise: Promise<T>;
89
+ resolve: (value: T) => void;
90
+ reject: (reason?: unknown) => void;
91
+ };
92
+ /**
93
+ * @param {() => boolean} predicate
94
+ * @returns {Promise<void>}
95
+ */
96
+ export function waitUntil(predicate: () => boolean): Promise<void>;
97
+ /**
98
+ * @param {import("./view.js").default} viewRoot
99
+ * @param {string} name
100
+ */
101
+ export function getRequiredView(viewRoot: import("./view.js").default, name: string): import("./view.js").default<import("../spec/view.js").ViewSpec>;
102
+ /**
103
+ * @param {import("./view.js").default} view
104
+ */
105
+ export function countCollectorRows(view: import("./view.js").default): number;
106
+ export type ViewMutationAcidHarness = {
107
+ view: import("./view.js").default;
108
+ api: import("../types/embedApi.js").ViewApi;
109
+ context: import("../types/viewContext.js").default;
110
+ };
111
+ import { createHeadlessEngine } from "../genomeSpy/headlessBootstrap.js";
112
+ //# sourceMappingURL=viewMutationAcidTestUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewMutationAcidTestUtils.d.ts","sourceRoot":"","sources":["../../../src/view/viewMutationAcidTestUtils.js"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH;;;;GAIG;AACH,oDAJW,OAAO,iBAAiB,EAAE,QAAQ,YAClC,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC,CAAC,GACxC,OAAO,CAAC,uBAAuB,CAAC,CAU5C;AAED;;;;;GAKG;AACH,qDAFW,OAAO,WAAW,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOrC;AAED;;;;GAIG;AACH,wDAFW,OAAO,WAAW,EAAE,OAAO;;;EASrC;AAED;;;;;;;GAOG;AACH,+BAPa,CAAC,KACD;IACR,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC5B,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;CACnC,CAaH;AAED;;;GAGG;AACH,qCAHW,MAAM,OAAO,GACX,OAAO,CAAC,IAAI,CAAC,CAYzB;AAED;;;GAGG;AACH,0CAHW,OAAO,WAAW,EAAE,OAAO,QAC3B,MAAM,mEAShB;AAED;;GAEG;AACH,yCAFW,OAAO,WAAW,EAAE,OAAO,UAerC;sCAnHY;IACR,IAAI,EAAE,OAAO,WAAW,EAAE,OAAO,CAAC;IAClC,GAAG,EAAE,OAAO,sBAAsB,EAAE,OAAO,CAAC;IAC5C,OAAO,EAAE,OAAO,yBAAyB,EAAE,OAAO,CAAA;CACnD;qCARiC,mCAAmC"}