@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
@@ -9,14 +9,18 @@ import {
9
9
  } from "../../selection/selection.js";
10
10
  import { createPrimitiveEventProxy } from "../../utils/interactionEvent.js";
11
11
  import AxisGridView from "../axisGridView.js";
12
- import AxisView, { CHANNEL_ORIENTS } from "../axisView.js";
12
+ import AxisView, {
13
+ CHANNEL_ORIENTS,
14
+ getExternalAxisOverhang,
15
+ } from "../axisView.js";
13
16
  import LayerView from "../layerView.js";
14
17
  import Padding from "../layout/padding.js";
15
18
  import Point from "../layout/point.js";
16
19
  import Rectangle from "../layout/rectangle.js";
17
- import createTitle, { resolveTitleSpec } from "../title.js";
20
+ import TitleView from "../titleView.js";
18
21
  import UnitView from "../unitView.js";
19
22
  import {
23
+ isChromeView,
20
24
  markViewAsChrome,
21
25
  markViewAsNonAddressable,
22
26
  } from "../viewSelectors.js";
@@ -27,6 +31,42 @@ import { zoomDomainByScaleType } from "../../scales/zoomDomainUtils.js";
27
31
  import { createEventFilterFunction } from "../../utils/expression.js";
28
32
  import { getConfiguredViewBackground } from "../../config/viewConfig.js";
29
33
  import { getConfiguredAxisDefaults } from "../../config/axisConfig.js";
34
+ import {
35
+ addLegendView,
36
+ createGridChildLegend,
37
+ disposeLegendViews,
38
+ getLegendOverhang,
39
+ getOrderedLegendEntries,
40
+ iterateLegendViews,
41
+ } from "./gridChildLegends.js";
42
+
43
+ /**
44
+ * @typedef {{
45
+ * axisView: AxisView,
46
+ * channel: import("../../spec/channel.js").PrimaryPositionalChannel,
47
+ * orient: import("../../spec/axis.js").AxisOrient,
48
+ * resolution: import("../../scales/axisResolution.js").default,
49
+ * }} AxisCandidate
50
+ */
51
+
52
+ /**
53
+ * @param {import("../view.js").default} view
54
+ * @returns {import("../view.js").default[]}
55
+ */
56
+ function getLegendOwners(view) {
57
+ if (isChromeView(view) || view.getLayoutAncestors().some(isChromeView)) {
58
+ return [];
59
+ } else if (view instanceof UnitView) {
60
+ return Object.keys(view.resolutions.legend).length > 0 ? [view] : [];
61
+ } else if (view instanceof LayerView) {
62
+ return [
63
+ ...(Object.keys(view.resolutions.legend).length > 0 ? [view] : []),
64
+ ...Array.from(view).flatMap((child) => getLegendOwners(child)),
65
+ ];
66
+ } else {
67
+ return [];
68
+ }
69
+ }
30
70
 
31
71
  export default class GridChild {
32
72
  /**
@@ -56,16 +96,22 @@ export default class GridChild {
56
96
  /** @type {Partial<Record<import("../../spec/axis.js").AxisOrient, AxisView>>} axes */
57
97
  this.axes = {};
58
98
 
99
+ /** @type {AxisCandidate[]} */
100
+ this.axisCandidates = [];
101
+
59
102
  /** @type {Partial<Record<import("../../spec/axis.js").AxisOrient, AxisGridView>>} gridLines */
60
103
  this.gridLines = {};
61
104
 
105
+ /** @type {import("./gridChildLegends.js").GridChildLegends} */
106
+ this.legends = {};
107
+
62
108
  /** @type {Partial<Record<import("./scrollbar.js").ScrollDirection, Scrollbar>>} */
63
109
  this.scrollbars = {};
64
110
 
65
111
  /** @type {SelectionRect} */
66
112
  this.selectionRect = undefined;
67
113
 
68
- /** @type {UnitView} */
114
+ /** @type {TitleView} */
69
115
  this.title = undefined;
70
116
 
71
117
  /** @type {number} */
@@ -74,17 +120,21 @@ export default class GridChild {
74
120
  /** @type {number | undefined} */
75
121
  this.backgroundStrokeZindex = undefined;
76
122
 
77
- /** @type {number} */
78
- this.titleZindex = 1;
79
-
80
123
  /** @type {Rectangle} */
81
124
  this.coords = Rectangle.ZERO;
82
125
 
83
- if (view.needsAxes.x || view.needsAxes.y) {
84
- const spec = view.spec;
126
+ const needsAxes = view.needsAxes.x || view.needsAxes.y;
127
+ const parentChromePolicy = view.getParentGridChromePolicy();
128
+ const spec = view.spec;
129
+ const explicitViewBackground = "view" in spec ? spec.view : undefined;
130
+
131
+ if (
132
+ parentChromePolicy.background &&
133
+ (needsAxes || explicitViewBackground)
134
+ ) {
85
135
  const viewBackground = getConfiguredViewBackground(
86
136
  view.getConfigScopes(),
87
- "view" in spec ? spec.view : undefined
137
+ explicitViewBackground
88
138
  );
89
139
  this.backgroundZindex = viewBackground?.zindex ?? 0;
90
140
  this.backgroundStrokeZindex = viewBackground?.strokeZindex;
@@ -96,10 +146,7 @@ export default class GridChild {
96
146
  layoutParent.context,
97
147
  layoutParent,
98
148
  view,
99
- "background" + serial,
100
- {
101
- blockEncodingInheritance: true,
102
- }
149
+ "background" + serial
103
150
  );
104
151
  markViewAsNonAddressable(this.background, {
105
152
  skipSubtree: true,
@@ -114,10 +161,7 @@ export default class GridChild {
114
161
  layoutParent.context,
115
162
  layoutParent,
116
163
  view,
117
- "backgroundStroke" + serial,
118
- {
119
- blockEncodingInheritance: true,
120
- }
164
+ "backgroundStroke" + serial
121
165
  );
122
166
  markViewAsNonAddressable(this.backgroundStroke, {
123
167
  skipSubtree: true,
@@ -126,30 +170,19 @@ export default class GridChild {
126
170
  skipSubtree: true,
127
171
  });
128
172
  }
129
-
130
- const titleSpec = resolveTitleSpec(
131
- view.spec.title,
132
- view.getConfigScopes()
133
- );
134
- this.titleZindex = titleSpec?.zindex ?? 1;
135
- const title = createTitle(titleSpec);
136
- if (title) {
137
- const unitView = new UnitView(
138
- title,
139
- layoutParent.context,
140
- layoutParent,
141
- view,
142
- "title" + serial,
143
- {
144
- blockEncodingInheritance: true,
145
- }
146
- );
147
- this.title = unitView;
148
- markViewAsNonAddressable(this.title, { skipSubtree: true });
149
- markViewAsChrome(this.title, { skipSubtree: true });
150
- }
151
173
  }
152
174
 
175
+ this.title = view.spec.title
176
+ ? TitleView.create(
177
+ view.spec.title,
178
+ view.getConfigScopes(),
179
+ layoutParent.context,
180
+ layoutParent,
181
+ view,
182
+ "title" + serial
183
+ )
184
+ : undefined;
185
+
153
186
  // TODO: More specific getter for this
154
187
  if (view.spec.viewportWidth != null) {
155
188
  this.scrollbars.horizontal = new Scrollbar(this, "horizontal");
@@ -629,7 +662,10 @@ export default class GridChild {
629
662
  if (this.title) {
630
663
  yield this.title;
631
664
  }
632
- yield* Object.values(this.axes);
665
+ for (const candidate of this.axisCandidates) {
666
+ yield candidate.axisView;
667
+ }
668
+ yield* iterateLegendViews(this.legends);
633
669
  yield* Object.values(this.gridLines);
634
670
  yield this.view;
635
671
  yield* Object.values(this.scrollbars);
@@ -645,7 +681,7 @@ export default class GridChild {
645
681
  this.disposeAxisViews();
646
682
 
647
683
  const { view, axes, gridLines } = this;
648
-
684
+ const parentChromePolicy = view.getParentGridChromePolicy();
649
685
  /**
650
686
  * @param {import("../../scales/axisResolution.js").default} r
651
687
  * @param {import("../../spec/channel.js").PrimaryPositionalChannel} channel
@@ -696,7 +732,7 @@ export default class GridChild {
696
732
  const props = getAxisPropsWithDefaults(r, channel);
697
733
 
698
734
  if (props) {
699
- if (axes[props.orient]) {
735
+ if (axes[props.orient] && !this.allowDuplicateAxes()) {
700
736
  throw new Error(
701
737
  `An axis with the orient "${props.orient}" already exists!`
702
738
  );
@@ -707,9 +743,21 @@ export default class GridChild {
707
743
  r.scaleResolution.type,
708
744
  this.layoutParent.context,
709
745
  this.layoutParent,
710
- axisParent
746
+ axisParent,
747
+ {
748
+ labelClipPolicy: this.getAxisLabelClipPolicy(
749
+ channel,
750
+ view
751
+ ),
752
+ }
711
753
  );
712
- axes[props.orient] = axisView;
754
+ axes[props.orient] ??= axisView;
755
+ this.axisCandidates.push({
756
+ axisView,
757
+ channel,
758
+ orient: props.orient,
759
+ resolution: r,
760
+ });
713
761
  await axisView.initializeChildren();
714
762
  }
715
763
  };
@@ -754,74 +802,90 @@ export default class GridChild {
754
802
  }
755
803
  };
756
804
 
757
- // Handle children that have caught axis resolutions. Create axes for them.
758
- for (const channel of /** @type {import("../../spec/channel.js").PrimaryPositionalChannel[]} */ ([
759
- "x",
760
- "y",
761
- ])) {
762
- if (view.needsAxes[channel]) {
763
- const r = view.resolutions.axis[channel];
764
- if (!r) {
765
- continue;
766
- }
805
+ if (parentChromePolicy.axes) {
806
+ // Handle children that have caught axis resolutions. Create axes for them.
807
+ for (const channel of /** @type {import("../../spec/channel.js").PrimaryPositionalChannel[]} */ ([
808
+ "x",
809
+ "y",
810
+ ])) {
811
+ if (view.needsAxes[channel]) {
812
+ const r = view.resolutions.axis[channel];
813
+ if (!r) {
814
+ continue;
815
+ }
767
816
 
768
- await createAxis(r, channel, view);
817
+ await createAxis(r, channel, view);
818
+ }
769
819
  }
770
- }
771
820
 
772
- // Handle gridlines of children. Note: children's axis resolution may be caught by
773
- // this view or some of this view's ancestors.
774
- for (const channel of /** @type {import("../../spec/channel.js").PrimaryPositionalChannel[]} */ ([
775
- "x",
776
- "y",
777
- ])) {
778
- if (
779
- view.needsAxes[channel] &&
780
- // Handle a special case where the child view has an excluded resolution
781
- // but no scale or axis, e.g., when only values are used on a channel.
782
- view.getConfiguredOrDefaultResolution(channel, "axis") !=
783
- "excluded"
784
- ) {
785
- const r = view.getAxisResolution(channel);
786
- if (!r) {
787
- continue;
788
- }
821
+ // Handle gridlines of children. Note: children's axis resolution may be caught by
822
+ // this view or some of this view's ancestors.
823
+ for (const channel of /** @type {import("../../spec/channel.js").PrimaryPositionalChannel[]} */ ([
824
+ "x",
825
+ "y",
826
+ ])) {
827
+ if (
828
+ view.needsAxes[channel] &&
829
+ // Handle a special case where the child view has an excluded resolution
830
+ // but no scale or axis, e.g., when only values are used on a channel.
831
+ view.getConfiguredOrDefaultResolution(channel, "axis") !=
832
+ "excluded"
833
+ ) {
834
+ const r = view.getAxisResolution(channel);
835
+ if (!r) {
836
+ continue;
837
+ }
789
838
 
790
- await createAxisGrid(r, channel, view);
839
+ await createAxisGrid(r, channel, view);
840
+ }
791
841
  }
792
- }
793
842
 
794
- // Handle LayerView's possible independent axes
795
- if (view instanceof LayerView) {
796
- // First create axes that have an orient preference
797
- for (const layerChild of view) {
798
- for (const [channel, r] of Object.entries(
799
- layerChild.resolutions.axis
800
- )) {
801
- const props = r.getAxisProps();
802
- if (props && props.orient) {
803
- await createAxis(r, channel, layerChild);
843
+ // Handle LayerView's possible independent axes
844
+ if (view instanceof LayerView) {
845
+ // First create axes that have an orient preference
846
+ for (const layerChild of view) {
847
+ for (const [channel, r] of Object.entries(
848
+ layerChild.resolutions.axis
849
+ )) {
850
+ const props = r.getAxisProps();
851
+ if (props && props.orient) {
852
+ await createAxis(r, channel, layerChild);
853
+ }
804
854
  }
805
855
  }
806
- }
807
856
 
808
- // Then create axes in a priority order
809
- for (const layerChild of view) {
810
- for (const [channel, r] of Object.entries(
811
- layerChild.resolutions.axis
812
- )) {
813
- const props = r.getAxisProps();
814
- if (props && !props.orient) {
815
- await createAxis(r, channel, layerChild);
857
+ // Then create axes in a priority order
858
+ for (const layerChild of view) {
859
+ for (const [channel, r] of Object.entries(
860
+ layerChild.resolutions.axis
861
+ )) {
862
+ const props = r.getAxisProps();
863
+ if (props && !props.orient) {
864
+ await createAxis(r, channel, layerChild);
865
+ }
816
866
  }
817
867
  }
868
+
869
+ // TODO: Axis grid
818
870
  }
871
+ }
819
872
 
820
- // TODO: Axis grid
873
+ for (const { definition, resolution } of getOrderedLegendEntries(
874
+ getLegendOwners(view)
875
+ )) {
876
+ const legend = await createGridChildLegend(
877
+ definition,
878
+ this.layoutParent
879
+ );
880
+ await addLegendView(this.legends, legend, resolution);
821
881
  }
822
882
 
823
883
  // Axes are created after scales are resolved, so we need to resolve possible new scales here
824
- [...Object.values(axes), ...Object.values(gridLines)].forEach((v) =>
884
+ [
885
+ ...this.axisCandidates.map((candidate) => candidate.axisView),
886
+ ...Object.values(gridLines),
887
+ ...iterateLegendViews(this.legends),
888
+ ].forEach((v) =>
825
889
  v.visit((view) => {
826
890
  if (view instanceof UnitView) {
827
891
  view.resolve("scale");
@@ -830,43 +894,160 @@ export default class GridChild {
830
894
  );
831
895
  }
832
896
 
897
+ /**
898
+ * Allows subclasses such as SampleGridChild to keep multiple same-orient
899
+ * axis candidates. Ordinary GridView behavior still rejects duplicates.
900
+ *
901
+ * @protected
902
+ * @returns {boolean}
903
+ */
904
+ allowDuplicateAxes() {
905
+ return false;
906
+ }
907
+
908
+ /**
909
+ * @param {import("../../spec/axis.js").AxisOrient} orient
910
+ * @returns {AxisCandidate | undefined}
911
+ */
912
+ getActiveAxisCandidate(orient) {
913
+ // Later candidates win, matching the existing layer draw order.
914
+ return this.getActiveAxisCandidates(orient).at(-1);
915
+ }
916
+
917
+ /**
918
+ * @param {import("../../spec/axis.js").AxisOrient} orient
919
+ * @returns {AxisCandidate[]}
920
+ */
921
+ getActiveAxisCandidates(orient) {
922
+ return this.axisCandidates.filter(
923
+ (candidate) =>
924
+ candidate.orient === orient &&
925
+ candidate.resolution.hasVisibleNonChromeMember()
926
+ );
927
+ }
928
+
833
929
  /**
834
930
  * Disposes axis and gridline views so axes can be recreated safely.
835
931
  */
836
932
  disposeAxisViews() {
837
- for (const axisView of Object.values(this.axes)) {
838
- axisView.disposeSubtree();
933
+ for (const candidate of this.axisCandidates) {
934
+ candidate.axisView.disposeSubtree();
839
935
  }
840
936
 
841
937
  for (const gridView of Object.values(this.gridLines)) {
842
938
  gridView.disposeSubtree();
843
939
  }
844
940
 
941
+ disposeLegendViews(this.legends);
942
+
845
943
  this.axes = {};
944
+ this.axisCandidates = [];
846
945
  this.gridLines = {};
946
+ this.legends = {};
947
+ }
948
+
949
+ /**
950
+ * @param {import("../../spec/channel.js").PrimaryPositionalChannel} channel
951
+ * @param {import("../view.js").default} view
952
+ * @returns {import("../axisView.js").AxisLabelClipPolicy}
953
+ */
954
+ getAxisLabelClipPolicy(channel, view) {
955
+ const configuredPolicy = view.options.axisLabelClipPolicy?.[channel];
956
+ if (configuredPolicy) {
957
+ return configuredPolicy;
958
+ }
959
+
960
+ return (channel === "x" &&
961
+ (view.spec.viewportWidth != null ||
962
+ this.layoutParent.spec.viewportWidth != null)) ||
963
+ (channel === "y" &&
964
+ (view.spec.viewportHeight != null ||
965
+ this.layoutParent.spec.viewportHeight != null))
966
+ ? "anchor"
967
+ : "pixel";
847
968
  }
848
969
 
849
970
  getOverhang() {
971
+ // Axes and overhang should be mutually exclusive, so we can just add them together
972
+ return this.getGuideOverhang()
973
+ .add(this.getTitleOverhang())
974
+ .add(this.view.getOverhang());
975
+ }
976
+
977
+ getGuideOverhang() {
850
978
  const calculate = (
851
979
  /** @type {import("../../spec/axis.js").AxisOrient} */ orient
852
- ) => {
853
- const axisView = this.axes[orient];
854
- return axisView
855
- ? Math.max(
856
- axisView.getPerpendicularSize() +
857
- (axisView.axisProps.offset ?? 0),
858
- 0
859
- )
860
- : 0;
861
- };
980
+ ) => getExternalAxisOverhang(this.axes[orient]);
981
+ const legend = (
982
+ /** @type {import("../../spec/legend.js").LegendOrient} */ orient
983
+ ) => getLegendOverhang(this.legends, orient);
862
984
 
863
- // Axes and overhang should be mutually exclusive, so we can just add them together
864
985
  return new Padding(
865
- calculate("top"),
866
- calculate("right"),
867
- calculate("bottom"),
868
- calculate("left")
869
- ).add(this.view.getOverhang());
986
+ calculate("top") + legend("top"),
987
+ calculate("right") + legend("right"),
988
+ calculate("bottom") + legend("bottom"),
989
+ calculate("left") + legend("left")
990
+ );
991
+ }
992
+
993
+ getTitleOverhang() {
994
+ return this.title?.getOverhang() ?? Padding.zero();
995
+ }
996
+
997
+ getTitleZindex() {
998
+ return this.title?.titleSpec.zindex ?? 1;
999
+ }
1000
+
1001
+ /**
1002
+ * @param {import("../renderingContext/viewRenderingContext.js").default} context
1003
+ * @param {Rectangle} viewportCoords
1004
+ * @param {import("../../types/rendering.js").RenderingOptions} options
1005
+ */
1006
+ renderTitle(context, viewportCoords, options) {
1007
+ this.title?.render(
1008
+ context,
1009
+ this.getTitleCoords(viewportCoords),
1010
+ options
1011
+ );
1012
+ }
1013
+
1014
+ /**
1015
+ * Returns the frame used for rendering a view title. Reserved titles are
1016
+ * placed outside guide overhang orthogonally, while the title frame controls
1017
+ * the parallel anchor range.
1018
+ *
1019
+ * @param {Rectangle} viewportCoords
1020
+ */
1021
+ getTitleCoords(viewportCoords) {
1022
+ const titleSpec = this.title?.titleSpec;
1023
+ if (!titleSpec) {
1024
+ return viewportCoords;
1025
+ }
1026
+
1027
+ const guideCoords = viewportCoords.expand(this.getGuideOverhang());
1028
+ const frame = titleSpec.frame ?? "group";
1029
+ if (titleSpec.reserve === false) {
1030
+ return frame == "bounds" ? guideCoords : viewportCoords;
1031
+ } else if (frame == "bounds") {
1032
+ return guideCoords;
1033
+ }
1034
+
1035
+ switch (titleSpec.orient) {
1036
+ case "top":
1037
+ case "bottom":
1038
+ return guideCoords.modify({
1039
+ x: () => viewportCoords.x,
1040
+ width: () => viewportCoords.width,
1041
+ });
1042
+ case "left":
1043
+ case "right":
1044
+ return guideCoords.modify({
1045
+ y: () => viewportCoords.y,
1046
+ height: () => viewportCoords.height,
1047
+ });
1048
+ default:
1049
+ return viewportCoords;
1050
+ }
870
1051
  }
871
1052
 
872
1053
  getOverhangAndPadding() {
@@ -922,10 +1103,11 @@ function normalizeIntervalForChannel(scaleResolution, interval) {
922
1103
  * @returns {import("../../spec/view.js").UnitSpec}
923
1104
  */
924
1105
  export function createBackground(viewBackground) {
1106
+ const fillOpacity =
1107
+ viewBackground?.fillOpacity ?? (viewBackground?.fill ? 1.0 : 0.0);
1108
+ const shadowOpacity = viewBackground?.shadowOpacity ?? 0.0;
925
1109
  const required =
926
- viewBackground?.fill ||
927
- viewBackground?.fillOpacity ||
928
- viewBackground?.shadowOpacity;
1110
+ (viewBackground?.fill && fillOpacity !== 0) || shadowOpacity !== 0;
929
1111
  if (!required) {
930
1112
  return;
931
1113
  }
@@ -934,8 +1116,7 @@ export function createBackground(viewBackground) {
934
1116
  data: { values: [{}] },
935
1117
  mark: {
936
1118
  color: viewBackground.fill,
937
- opacity:
938
- viewBackground.fillOpacity ?? (viewBackground.fill ? 1.0 : 0.0),
1119
+ opacity: fillOpacity,
939
1120
  type: "rect",
940
1121
  clip: false, // Shouldn't be needed
941
1122
  tooltip: null,
@@ -986,7 +1167,7 @@ export function createBackgroundStroke(viewBackground) {
986
1167
  strokeCap: "square",
987
1168
  opacity: viewBackground.strokeOpacity ?? 1.0,
988
1169
  type: "rule",
989
- clip: false,
1170
+ clip: "never",
990
1171
  tooltip: null,
991
1172
  },
992
1173
  encoding: {
@@ -0,0 +1,57 @@
1
+ /**
2
+ * @param {import("../view.js").default[]} legendOwners
3
+ * @returns {OrderedLegendEntry[]}
4
+ */
5
+ export function getOrderedLegendEntries(legendOwners: import("../view.js").default[]): OrderedLegendEntry[];
6
+ /**
7
+ * @param {import("../../scales/legendResolution.js").LegendDefinition} definition
8
+ * @param {import("../containerView.js").default} layoutParent
9
+ * @returns {Promise<LegendView>}
10
+ */
11
+ export function createGridChildLegend(definition: import("../../scales/legendResolution.js").LegendDefinition, layoutParent: import("../containerView.js").default): Promise<LegendView>;
12
+ /**
13
+ * @param {GridChildLegends} legends
14
+ * @param {LegendView} legend
15
+ * @param {import("../../scales/legendResolution.js").default} resolution
16
+ */
17
+ export function addLegendView(legends: GridChildLegends, legend: LegendView, resolution: import("../../scales/legendResolution.js").default): Promise<void>;
18
+ /**
19
+ * @param {GridChildLegends} legends
20
+ */
21
+ export function iterateLegendViews(legends: GridChildLegends): Generator<LegendRegionView, void, unknown>;
22
+ /**
23
+ * @param {GridChildLegends} legends
24
+ */
25
+ export function disposeLegendViews(legends: GridChildLegends): void;
26
+ /**
27
+ * @param {GridChildLegends} legends
28
+ * @param {import("../../spec/legend.js").LegendOrient} orient
29
+ */
30
+ export function getLegendOverhang(legends: GridChildLegends, orient: import("../../spec/legend.js").LegendOrient): number;
31
+ /**
32
+ * @param {GridChildLegendEntry} entry
33
+ */
34
+ export function isActiveLegendEntry(entry: GridChildLegendEntry): boolean;
35
+ /**
36
+ * @param {GridChildLegendRegion} region
37
+ */
38
+ export function isActiveLegendRegion(region: GridChildLegendRegion): boolean;
39
+ export type GridChildLegendEntry = {
40
+ legendView: LegendView;
41
+ resolution: import("../../scales/legendResolution.js").default;
42
+ };
43
+ export type OrderedLegendEntry = {
44
+ definition: import("../../scales/legendResolution.js").LegendDefinition;
45
+ resolution: import("../../scales/legendResolution.js").default;
46
+ };
47
+ export type GridChildLegendRegion = {
48
+ legendView: LegendRegionView;
49
+ entries: GridChildLegendEntry[];
50
+ };
51
+ export type GridChildLegends = Partial<Record<import("../../spec/legend.js").LegendOrient, GridChildLegendRegion>>;
52
+ export type ResolvedLegendConfig = Omit<import("../../spec/legend.js").LegendConfig, "orient"> & {
53
+ orient?: import("../../spec/legend.js").LegendOrient;
54
+ };
55
+ import LegendView from "../legendView.js";
56
+ import { LegendRegionView } from "../legendView.js";
57
+ //# sourceMappingURL=gridChildLegends.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gridChildLegends.d.ts","sourceRoot":"","sources":["../../../../src/view/gridView/gridChildLegends.js"],"names":[],"mappings":"AAqFA;;;GAGG;AACH,sDAHW,OAAO,YAAY,EAAE,OAAO,EAAE,GAC5B,kBAAkB,EAAE,CAoChC;AAqPD;;;;GAIG;AACH,kDAJW,OAAO,kCAAkC,EAAE,gBAAgB,gBAC3D,OAAO,qBAAqB,EAAE,OAAO,GACnC,OAAO,CAAC,UAAU,CAAC,CAuD/B;AAED;;;;GAIG;AACH,uCAJW,gBAAgB,UAChB,UAAU,cACV,OAAO,kCAAkC,EAAE,OAAO,iBA4B5D;AAED;;GAEG;AACH,4CAFW,gBAAgB,8CAM1B;AAED;;GAEG;AACH,4CAFW,gBAAgB,QAM1B;AAED;;;GAGG;AACH,2CAHW,gBAAgB,UAChB,OAAO,sBAAsB,EAAE,YAAY,UAOrD;AAED;;GAEG;AACH,2CAFW,oBAAoB,WAI9B;AAED;;GAEG;AACH,6CAFW,qBAAqB,WAI/B;mCA3eY;IACN,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,OAAO,kCAAkC,EAAE,OAAO,CAAC;CAClE;iCAES;IACN,UAAU,EAAE,OAAO,kCAAkC,EAAE,gBAAgB,CAAC;IACxE,UAAU,EAAE,OAAO,kCAAkC,EAAE,OAAO,CAAC;CAClE;oCAES;IACN,UAAU,EAAE,gBAAgB,CAAC;IAC7B,OAAO,EAAE,oBAAoB,EAAE,CAAC;CACnC;+BAES,OAAO,CAAC,MAAM,CAAC,OAAO,sBAAsB,EAAE,YAAY,EAAE,qBAAqB,CAAC,CAAC;mCACnF,IAAI,CAAC,OAAO,sBAAsB,EAAE,YAAY,EAAE,QAAQ,CAAC,GAAG;IACpE,MAAM,CAAC,EAAE,OAAO,sBAAsB,EAAE,YAAY,CAAA;CACvD;uBArBG,kBAAkB;iCAAlB,kBAAkB"}