@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
@@ -0,0 +1,83 @@
1
+ export default class LegendResolution {
2
+ /**
3
+ * @param {import("../spec/channel.js").ChannelWithScale} channel
4
+ */
5
+ constructor(channel: import("../spec/channel.js").ChannelWithScale);
6
+ channel: import("../spec/channel.js").ChannelWithScale;
7
+ /**
8
+ * @param {LegendResolutionMember} member
9
+ * @returns {() => boolean}
10
+ */
11
+ registerMember(member: LegendResolutionMember): () => boolean;
12
+ /**
13
+ * @param {LegendResolutionMember} member
14
+ * @returns {boolean}
15
+ */
16
+ removeMember(member: LegendResolutionMember): boolean;
17
+ /**
18
+ * @returns {LegendDefinition[]}
19
+ */
20
+ getLegendDefs(): LegendDefinition[];
21
+ /**
22
+ * @returns {boolean}
23
+ */
24
+ hasVisibleNonChromeMember(): boolean;
25
+ getDebugState(): {
26
+ kind: string;
27
+ channel: import("../spec/channel.js").ChannelWithScale;
28
+ hostView: any;
29
+ legendDefs: {
30
+ view: import("../view/unitView.js").default<import("../spec/view.js").UnitSpec>;
31
+ scaleResolution: import("./scaleResolution.js").default;
32
+ legend: import("../spec/legend.js").LegendConfig;
33
+ channel: import("../spec/channel.js").ChannelWithScale;
34
+ field?: string;
35
+ type: LegendType;
36
+ symbolChannels?: Partial<Record<import("../spec/channel.js").ChannelWithScale, string>>;
37
+ symbolGeometry?: "point" | "stroke";
38
+ format?: string;
39
+ dataType: import("../spec/channel.js").Type;
40
+ }[];
41
+ hasVisibleNonChromeMember: boolean;
42
+ members: {
43
+ view: import("../view/unitView.js").default<import("../spec/view.js").UnitSpec>;
44
+ channel: import("../spec/channel.js").ChannelWithScale;
45
+ }[];
46
+ viewLevelLegendConfig: {
47
+ view: import("../view/view.js").default<import("../spec/view.js").ViewSpec>;
48
+ config: import("../spec/legend.js").Legend;
49
+ };
50
+ };
51
+ /**
52
+ * @param {import("../view/view.js").default} view
53
+ * @param {import("../spec/legend.js").Legend} config
54
+ */
55
+ attachViewLevelLegendConfig(view: import("../view/view.js").default, config: import("../spec/legend.js").Legend): void;
56
+ /**
57
+ * @param {import("../view/view.js").default} view
58
+ */
59
+ clearViewLevelLegendConfig(view: import("../view/view.js").default): void;
60
+ getViewLevelLegendConfig(): {
61
+ view: import("../view/view.js").default;
62
+ config: import("../spec/legend.js").Legend;
63
+ };
64
+ #private;
65
+ }
66
+ export type LegendType = "symbol" | "gradient";
67
+ export type LegendResolutionMember = {
68
+ view: import("../view/unitView.js").default;
69
+ channel: import("../spec/channel.js").ChannelWithScale;
70
+ };
71
+ export type LegendDefinition = {
72
+ view: import("../view/unitView.js").default;
73
+ channel: import("../spec/channel.js").ChannelWithScale;
74
+ field?: string;
75
+ type: LegendType;
76
+ symbolChannels?: Partial<Record<import("../spec/channel.js").ChannelWithScale, string>>;
77
+ symbolGeometry?: "point" | "stroke";
78
+ legend: import("../spec/legend.js").LegendConfig;
79
+ format?: string;
80
+ dataType: import("../spec/channel.js").Type;
81
+ scaleResolution: import("./scaleResolution.js").default;
82
+ };
83
+ //# sourceMappingURL=legendResolution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legendResolution.d.ts","sourceRoot":"","sources":["../../../src/scales/legendResolution.js"],"names":[],"mappings":"AA2CA;IAOI;;OAEG;IACH,qBAFW,OAAO,oBAAoB,EAAE,gBAAgB,EAIvD;IADG,uDAAsB;IAG1B;;;OAGG;IACH,uBAHW,sBAAsB,GACpB,MAAM,OAAO,CAMzB;IAED;;;OAGG;IACH,qBAHW,sBAAsB,GACpB,OAAO,CAInB;IAED;;OAEG;IACH,iBAFa,gBAAgB,EAAE,CAoB9B;IAgGD;;OAEG;IACH,6BAFa,OAAO,CAanB;IAED;;;;;;;;qBA7LY,OAAO,oBAAoB,EAAE,gBAAgB;oBAC9C,MAAM;kBACR,UAAU;6BACC,OAAO,CAAC,MAAM,CAAC,OAAO,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;6BACtE,OAAO,GAAG,QAAQ;qBAE1B,MAAM;sBACL,OAAO,oBAAoB,EAAE,IAAI;;;;;;;;;;;MAmN7C;IAED;;;OAGG;IACH,kCAHW,OAAO,iBAAiB,EAAE,OAAO,UACjC,OAAO,mBAAmB,EAAE,MAAM,QAqB5C;IAED;;OAEG;IACH,iCAFW,OAAO,iBAAiB,EAAE,OAAO,QAM3C;IAED;cAlOmB,OAAO,iBAAiB,EAAE,OAAO;gBAAU,OAAO,mBAAmB,EAAE,MAAM;MAoO/F;;CAYJ;yBAnRY,QAAQ,GAAG,UAAU;;UAExB,OAAO,qBAAqB,EAAE,OAAO;aACrC,OAAO,oBAAoB,EAAE,gBAAgB;;+BAE1C;IACN,IAAI,EAAE,OAAO,qBAAqB,EAAE,OAAO,CAAC;IAC5C,OAAO,EAAE,OAAO,oBAAoB,EAAE,gBAAgB,CAAC;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;IACxF,cAAc,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IACpC,MAAM,EAAE,OAAO,mBAAmB,EAAE,YAAY,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,oBAAoB,EAAE,IAAI,CAAC;IAC5C,eAAe,EAAE,OAAO,sBAAsB,EAAE,OAAO,CAAA;CAC1D"}
@@ -0,0 +1,461 @@
1
+ import {
2
+ findChannelDefWithScale,
3
+ isColorChannel,
4
+ isFieldDef,
5
+ isValueDef,
6
+ } from "../encoder/encoder.js";
7
+ import { getConfiguredLegendDefaults } from "../config/legendConfig.js";
8
+ import { shallowArrayEquals } from "../utils/arrayUtils.js";
9
+ import { orderResolutionMembers } from "./resolutionMemberOrder.js";
10
+ import { isChromeView } from "../view/viewSelectors.js";
11
+
12
+ /**
13
+ * @typedef {"symbol" | "gradient"} LegendType
14
+ * @typedef {object} LegendResolutionMember
15
+ * @prop {import("../view/unitView.js").default} view
16
+ * @prop {import("../spec/channel.js").ChannelWithScale} channel
17
+ *
18
+ * @typedef {{
19
+ * view: import("../view/unitView.js").default,
20
+ * channel: import("../spec/channel.js").ChannelWithScale,
21
+ * field?: string,
22
+ * type: LegendType,
23
+ * symbolChannels?: Partial<Record<import("../spec/channel.js").ChannelWithScale, string>>,
24
+ * symbolGeometry?: "point" | "stroke",
25
+ * legend: import("../spec/legend.js").LegendConfig,
26
+ * format?: string,
27
+ * dataType: import("../spec/channel.js").Type,
28
+ * scaleResolution: import("./scaleResolution.js").default
29
+ * }} LegendDefinition
30
+ */
31
+
32
+ const SYMBOL_LEGEND_CHANNELS = new Set([
33
+ "color",
34
+ "fill",
35
+ "stroke",
36
+ "opacity",
37
+ "fillOpacity",
38
+ "strokeOpacity",
39
+ "shape",
40
+ "size",
41
+ ]);
42
+ const GRADIENT_LEGEND_CHANNELS = new Set(["color", "fill", "stroke"]);
43
+
44
+ export default class LegendResolution {
45
+ /** @type {Set<LegendResolutionMember>} */
46
+ #members = new Set();
47
+
48
+ /** @type {{ view: import("../view/view.js").default, config: import("../spec/legend.js").Legend } | undefined} */
49
+ #viewLevelLegendConfig;
50
+
51
+ /**
52
+ * @param {import("../spec/channel.js").ChannelWithScale} channel
53
+ */
54
+ constructor(channel) {
55
+ this.channel = channel;
56
+ }
57
+
58
+ /**
59
+ * @param {LegendResolutionMember} member
60
+ * @returns {() => boolean}
61
+ */
62
+ registerMember(member) {
63
+ this.#assertNoMixing(member);
64
+ this.#members.add(member);
65
+ return () => this.removeMember(member) && this.#members.size === 0;
66
+ }
67
+
68
+ /**
69
+ * @param {LegendResolutionMember} member
70
+ * @returns {boolean}
71
+ */
72
+ removeMember(member) {
73
+ return this.#members.delete(member);
74
+ }
75
+
76
+ /**
77
+ * @returns {LegendDefinition[]}
78
+ */
79
+ getLegendDefs() {
80
+ /** @type {Set<import("./scaleResolution.js").default>} */
81
+ const seenScaleResolutions = new Set();
82
+ /** @type {LegendDefinition[]} */
83
+ const definitions = [];
84
+
85
+ for (const member of orderResolutionMembers(this.#members)) {
86
+ const definition = this.#createLegendDefinition(member);
87
+ if (
88
+ definition &&
89
+ !seenScaleResolutions.has(definition.scaleResolution)
90
+ ) {
91
+ seenScaleResolutions.add(definition.scaleResolution);
92
+ definitions.push(definition);
93
+ }
94
+ }
95
+
96
+ return definitions;
97
+ }
98
+
99
+ /**
100
+ * @param {LegendResolutionMember} member
101
+ * @returns {LegendDefinition | undefined}
102
+ */
103
+ #createLegendDefinition(member) {
104
+ const { channel, view: legendParent } = member;
105
+ if (hasRedundantPrimaryLegend(channel, legendParent)) {
106
+ return undefined;
107
+ }
108
+
109
+ const channelDef = getLegendChannelDef(channel, legendParent);
110
+ if (!channelDef || isValueDef(channelDef)) {
111
+ return undefined;
112
+ }
113
+
114
+ const memberLegend =
115
+ "legend" in channelDef ? channelDef.legend : undefined;
116
+ if (!this.#viewLevelLegendConfig && memberLegend === null) {
117
+ return undefined;
118
+ }
119
+
120
+ if ("scale" in channelDef && channelDef.scale === null) {
121
+ return undefined;
122
+ }
123
+
124
+ const explicitLegend =
125
+ this.#viewLevelLegendConfig?.config ?? memberLegend;
126
+ const legendOverrides =
127
+ explicitLegend === undefined
128
+ ? undefined
129
+ : /** @type {import("../spec/legend.js").LegendConfig} */ ({
130
+ disable: false,
131
+ .../** @type {import("../spec/legend.js").Legend} */ (
132
+ explicitLegend
133
+ ),
134
+ });
135
+ const scaleResolution = legendParent.getScaleResolution(channel);
136
+ if (!scaleResolution) {
137
+ return undefined;
138
+ }
139
+
140
+ const legendDefaults = getConfiguredLegendDefaults(
141
+ legendParent.getConfigScopes(),
142
+ legendOverrides,
143
+ { track: isTrackLegendParent(legendParent) }
144
+ );
145
+ if (legendDefaults.disable === true) {
146
+ return undefined;
147
+ }
148
+
149
+ const legendType = getLegendType(channel, channelDef);
150
+ if (!legendType) {
151
+ return undefined;
152
+ }
153
+
154
+ const channelTitle =
155
+ /** @type {import("../spec/legend.js").Legend["title"] | undefined} */ (
156
+ "title" in channelDef ? channelDef.title : undefined
157
+ );
158
+ const title =
159
+ legendDefaults.title !== undefined
160
+ ? legendDefaults.title
161
+ : channelTitle !== undefined
162
+ ? channelTitle
163
+ : isFieldDef(channelDef)
164
+ ? channelDef.field
165
+ : undefined;
166
+ const format = "format" in channelDef ? channelDef.format : undefined;
167
+ const symbolChannels =
168
+ legendType == "symbol"
169
+ ? getRedundantSymbolChannels(channel, legendParent)
170
+ : undefined;
171
+ const symbolGeometry =
172
+ legendType == "symbol"
173
+ ? getSymbolGeometry(channel, legendParent)
174
+ : undefined;
175
+
176
+ return {
177
+ view: legendParent,
178
+ channel,
179
+ field: isFieldDef(channelDef) ? channelDef.field : undefined,
180
+ type: legendType,
181
+ symbolChannels,
182
+ symbolGeometry,
183
+ legend: {
184
+ ...legendDefaults,
185
+ title,
186
+ },
187
+ format,
188
+ dataType: channelDef.type,
189
+ scaleResolution,
190
+ };
191
+ }
192
+
193
+ /**
194
+ * @returns {boolean}
195
+ */
196
+ hasVisibleNonChromeMember() {
197
+ for (const member of this.#members) {
198
+ if (
199
+ member.view.isVisible() &&
200
+ !member.view.getLayoutAncestors().some(isChromeView)
201
+ ) {
202
+ return true;
203
+ }
204
+ }
205
+
206
+ return false;
207
+ }
208
+
209
+ getDebugState() {
210
+ const legendDefs = this.getLegendDefs();
211
+ return {
212
+ kind: "legend",
213
+ channel: this.channel,
214
+ hostView:
215
+ legendDefs[0]?.scaleResolution.getDebugState().hostView ??
216
+ this.#viewLevelLegendConfig?.view ??
217
+ this.#members.values().next().value?.view,
218
+ legendDefs: legendDefs.map((definition) => ({
219
+ ...definition,
220
+ view: definition.view,
221
+ scaleResolution: definition.scaleResolution,
222
+ legend: structuredClone(definition.legend),
223
+ })),
224
+ hasVisibleNonChromeMember: this.hasVisibleNonChromeMember(),
225
+ members: orderResolutionMembers(this.#members).map((member) => ({
226
+ view: member.view,
227
+ channel: member.channel,
228
+ })),
229
+ viewLevelLegendConfig: this.#viewLevelLegendConfig
230
+ ? {
231
+ view: this.#viewLevelLegendConfig.view,
232
+ config: structuredClone(
233
+ this.#viewLevelLegendConfig.config
234
+ ),
235
+ }
236
+ : undefined,
237
+ };
238
+ }
239
+
240
+ /**
241
+ * @param {import("../view/view.js").default} view
242
+ * @param {import("../spec/legend.js").Legend} config
243
+ */
244
+ attachViewLevelLegendConfig(view, config) {
245
+ if (
246
+ this.#viewLevelLegendConfig &&
247
+ this.#viewLevelLegendConfig.view !== view
248
+ ) {
249
+ throw new Error(
250
+ `Multiple view-level legend configs target the same ${this.channel} legend resolution.`
251
+ );
252
+ }
253
+
254
+ const configuredMember = Array.from(this.#members).find((member) =>
255
+ hasExplicitLegendConfig(member)
256
+ );
257
+ if (configuredMember) {
258
+ throw new Error(
259
+ `Cannot mix view-level legends.${this.channel} with encoding.${configuredMember.channel}.legend in the same legend resolution.`
260
+ );
261
+ }
262
+ this.#viewLevelLegendConfig = { view, config };
263
+ }
264
+
265
+ /**
266
+ * @param {import("../view/view.js").default} view
267
+ */
268
+ clearViewLevelLegendConfig(view) {
269
+ if (this.#viewLevelLegendConfig?.view === view) {
270
+ this.#viewLevelLegendConfig = undefined;
271
+ }
272
+ }
273
+
274
+ getViewLevelLegendConfig() {
275
+ return this.#viewLevelLegendConfig;
276
+ }
277
+
278
+ /**
279
+ * @param {LegendResolutionMember} member
280
+ */
281
+ #assertNoMixing(member) {
282
+ if (this.#viewLevelLegendConfig && hasExplicitLegendConfig(member)) {
283
+ throw new Error(
284
+ `Cannot mix view-level legends.${this.channel} with encoding.${member.channel}.legend in the same legend resolution.`
285
+ );
286
+ }
287
+ }
288
+ }
289
+
290
+ /**
291
+ * @param {LegendResolutionMember} member
292
+ * @returns {boolean}
293
+ */
294
+ function hasExplicitLegendConfig(member) {
295
+ const channelDef = getLegendChannelDef(member.channel, member.view);
296
+ return Boolean(
297
+ channelDef && "legend" in channelDef && channelDef.legend !== undefined
298
+ );
299
+ }
300
+
301
+ /**
302
+ * @param {import("../spec/channel.js").ChannelWithScale} channel
303
+ * @param {import("../view/unitView.js").default} legendParent
304
+ * @returns {"point" | "stroke"}
305
+ */
306
+ function getSymbolGeometry(channel, legendParent) {
307
+ const markType = legendParent.getMarkType();
308
+ return channel == "size" && (markType == "rule" || markType == "link")
309
+ ? "stroke"
310
+ : "point";
311
+ }
312
+
313
+ /**
314
+ * @param {import("../view/unitView.js").default} legendParent
315
+ * @returns {boolean}
316
+ */
317
+ function isTrackLegendParent(legendParent) {
318
+ const xDef = getLegendChannelDef("x", legendParent);
319
+ const xScaleType = legendParent
320
+ .getScaleResolution("x")
321
+ ?.getResolvedScaleType();
322
+
323
+ return (
324
+ xDef?.type == "index" ||
325
+ xDef?.type == "locus" ||
326
+ xScaleType == "index" ||
327
+ xScaleType == "locus"
328
+ );
329
+ }
330
+
331
+ /**
332
+ * Classifies currently implemented legend support. Deferred and unsupported
333
+ * channels intentionally return undefined so accidental legends are not
334
+ * generated before their visual representation is designed.
335
+ *
336
+ * @param {import("../spec/channel.js").ChannelWithScale} channel
337
+ * @param {import("../spec/channel.js").ChannelDefWithScale} channelDef
338
+ * @returns {LegendType | undefined}
339
+ */
340
+ function getLegendType(channel, channelDef) {
341
+ if (
342
+ ["opacity", "fillOpacity", "strokeOpacity", "size"].includes(channel) &&
343
+ channelDef.type == "quantitative"
344
+ ) {
345
+ return "symbol";
346
+ } else if (
347
+ (channelDef.type === "nominal" || channelDef.type === "ordinal") &&
348
+ SYMBOL_LEGEND_CHANNELS.has(channel)
349
+ ) {
350
+ return "symbol";
351
+ } else if (
352
+ channelDef.type === "quantitative" &&
353
+ GRADIENT_LEGEND_CHANNELS.has(channel)
354
+ ) {
355
+ return "gradient";
356
+ } else {
357
+ return undefined;
358
+ }
359
+ }
360
+
361
+ /**
362
+ * @param {import("../spec/channel.js").ChannelWithScale} channel
363
+ * @param {import("../view/unitView.js").default} legendParent
364
+ * @returns {import("../spec/channel.js").ChannelDefWithScale | undefined}
365
+ */
366
+ function getLegendChannelDef(channel, legendParent) {
367
+ return findChannelDefWithScale(legendParent.spec.encoding?.[channel]);
368
+ }
369
+
370
+ /**
371
+ * @param {import("../spec/channel.js").ChannelWithScale} channel
372
+ * @param {import("../view/unitView.js").default} legendParent
373
+ * @returns {boolean}
374
+ */
375
+ function isExplicitLegendNull(channel, legendParent) {
376
+ const channelDef = getLegendChannelDef(channel, legendParent);
377
+ return Boolean(
378
+ channelDef && "legend" in channelDef && channelDef.legend === null
379
+ );
380
+ }
381
+
382
+ /**
383
+ * @param {import("../spec/channel.js").ChannelWithScale} primary
384
+ * @param {import("../spec/channel.js").ChannelWithScale} secondary
385
+ * @param {import("../view/unitView.js").default} legendParent
386
+ * @returns {boolean}
387
+ */
388
+ function canMergeSymbolChannels(primary, secondary, legendParent) {
389
+ const primaryDef = getLegendChannelDef(primary, legendParent);
390
+ const secondaryDef = getLegendChannelDef(secondary, legendParent);
391
+ const primaryResolution = legendParent.getScaleResolution(primary);
392
+ const secondaryResolution = legendParent.getScaleResolution(secondary);
393
+
394
+ return (
395
+ isFieldDef(primaryDef) &&
396
+ isFieldDef(secondaryDef) &&
397
+ primaryDef.field === secondaryDef.field &&
398
+ primaryResolution &&
399
+ secondaryResolution &&
400
+ shallowArrayEquals(
401
+ primaryResolution.getDomain(),
402
+ secondaryResolution.getDomain()
403
+ )
404
+ );
405
+ }
406
+
407
+ /**
408
+ * @param {import("../spec/channel.js").ChannelWithScale} channel
409
+ * @param {import("../view/unitView.js").default} legendParent
410
+ * @returns {boolean}
411
+ */
412
+ function hasRedundantPrimaryLegend(channel, legendParent) {
413
+ if (channel !== "shape") {
414
+ return false;
415
+ }
416
+
417
+ const channelDef = getLegendChannelDef(channel, legendParent);
418
+ if (!isFieldDef(channelDef)) {
419
+ return false;
420
+ }
421
+
422
+ for (const primary of /** @type {const} */ (["color", "fill", "stroke"])) {
423
+ if (
424
+ canMergeSymbolChannels(primary, channel, legendParent) &&
425
+ !isExplicitLegendNull(primary, legendParent)
426
+ ) {
427
+ return true;
428
+ }
429
+ }
430
+
431
+ return false;
432
+ }
433
+
434
+ /**
435
+ * @param {import("../spec/channel.js").ChannelWithScale} channel
436
+ * @param {import("../view/unitView.js").default} legendParent
437
+ * @returns {Partial<Record<import("../spec/channel.js").ChannelWithScale, string>>}
438
+ */
439
+ function getRedundantSymbolChannels(channel, legendParent) {
440
+ if (!isColorChannel(channel)) {
441
+ return {};
442
+ }
443
+
444
+ const channelDef = getLegendChannelDef(channel, legendParent);
445
+ const shapeDef = getLegendChannelDef("shape", legendParent);
446
+ const shapeResolution = legendParent.getScaleResolution("shape");
447
+
448
+ if (
449
+ isFieldDef(channelDef) &&
450
+ isFieldDef(shapeDef) &&
451
+ shapeResolution &&
452
+ canMergeSymbolChannels(channel, "shape", legendParent) &&
453
+ !isExplicitLegendNull("shape", legendParent)
454
+ ) {
455
+ return {
456
+ shape: shapeResolution.name ?? "shape",
457
+ };
458
+ }
459
+
460
+ return {};
461
+ }
@@ -17,6 +17,7 @@ export default class ScaleInstanceManager {
17
17
  get scale(): import("../types/encoder.js").VegaScale & {
18
18
  props: import("../spec/scale.js").Scale;
19
19
  };
20
+ resetScale(): void;
20
21
  /**
21
22
  * @param {import("../spec/scale.js").Scale["assembly"]} [assembly]
22
23
  * @returns {import("../genome/genome.js").default}
@@ -1 +1 @@
1
- {"version":3,"file":"scaleInstanceManager.d.ts","sourceRoot":"","sources":["../../../src/scales/scaleInstanceManager.js"],"names":[],"mappings":"AAMA;IA0BI;;;;;;OAMG;IACH,iFALG;QAAkH,eAAe,EAAzH,MAAM;YAAE,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,0BAA0B,EAAE,eAAe,CAAA;SAAE;QAC5E,aAAa,EAAjC,MAAM,IAAI;QACW,cAAc,GAAnC,MAAM,IAAI;QAC6D,cAAc,GAArF,MAAM,OAAO,0BAA0B,EAAE,OAAO,GAAG,SAAS;KAA0B,EAYhG;IAED;eA1CkC,OAAO,kBAAkB,EAAE,KAAK;MA4CjE;IAED;;;OAGG;IACH,0BAHW,OAAO,kBAAkB,EAAE,KAAK,CAAC,UAAU,CAAC,GAC1C,OAAO,qBAAqB,EAAE,OAAO,CAajD;IAED;;;OAGG;IACH,mBAHW,OAAO,kBAAkB,EAAE,KAAK;eAhET,OAAO,kBAAkB,EAAE,KAAK;MAqFjE;IAcD;;OAEG;IACH,wBAFW,OAAO,kBAAkB,EAAE,KAAK,QAc1C;IAED;;;OAGG;IACH,4CAHW,MAAM,IAAI,GACR,IAAI,CAShB;IAwFD,gBAGC;;CACJ"}
1
+ {"version":3,"file":"scaleInstanceManager.d.ts","sourceRoot":"","sources":["../../../src/scales/scaleInstanceManager.js"],"names":[],"mappings":"AAMA;IA0BI;;;;;;OAMG;IACH,iFALG;QAAkH,eAAe,EAAzH,MAAM;YAAE,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,0BAA0B,EAAE,eAAe,CAAA;SAAE;QAC5E,aAAa,EAAjC,MAAM,IAAI;QACW,cAAc,GAAnC,MAAM,IAAI;QAC6D,cAAc,GAArF,MAAM,OAAO,0BAA0B,EAAE,OAAO,GAAG,SAAS;KAA0B,EAYhG;IAED;eA1CkC,OAAO,kBAAkB,EAAE,KAAK;MA4CjE;IAED,mBAGC;IAED;;;OAGG;IACH,0BAHW,OAAO,kBAAkB,EAAE,KAAK,CAAC,UAAU,CAAC,GAC1C,OAAO,qBAAqB,EAAE,OAAO,CAajD;IAED;;;OAGG;IACH,mBAHW,OAAO,kBAAkB,EAAE,KAAK;eArET,OAAO,kBAAkB,EAAE,KAAK;MA0FjE;IAcD;;OAEG;IACH,wBAFW,OAAO,kBAAkB,EAAE,KAAK,QAc1C;IAED;;;OAGG;IACH,4CAHW,MAAM,IAAI,GACR,IAAI,CAShB;IAwFD,gBAGC;;CACJ"}
@@ -53,6 +53,11 @@ export default class ScaleInstanceManager {
53
53
  return this.#scale;
54
54
  }
55
55
 
56
+ resetScale() {
57
+ this.dispose();
58
+ this.#scale = undefined;
59
+ }
60
+
56
61
  /**
57
62
  * @param {import("../spec/scale.js").Scale["assembly"]} [assembly]
58
63
  * @returns {import("../genome/genome.js").default}
@@ -8,14 +8,19 @@
8
8
  * @param {Channel} options.channel
9
9
  * @param {import("../spec/channel.js").Type} options.dataType
10
10
  * @param {ScaleResolutionMember[]} options.orderedMembers
11
+ * @param {{ view: import("../view/view.js").default, config: Scale } | undefined} [options.viewLevelScaleConfig]
11
12
  * @param {boolean} options.isExplicitDomain
12
13
  * @param {import("../spec/config.js").GenomeSpyConfig[]} options.configScopes
13
14
  * @returns {Scale}
14
15
  */
15
- export function resolveScalePropsBase({ channel, dataType, orderedMembers, isExplicitDomain, configScopes, }: {
16
+ export function resolveScalePropsBase({ channel, dataType, orderedMembers, viewLevelScaleConfig, isExplicitDomain, configScopes, }: {
16
17
  channel: Channel;
17
18
  dataType: import("../spec/channel.js").Type;
18
19
  orderedMembers: ScaleResolutionMember[];
20
+ viewLevelScaleConfig?: {
21
+ view: import("../view/view.js").default;
22
+ config: Scale;
23
+ } | undefined;
19
24
  isExplicitDomain: boolean;
20
25
  configScopes: import("../spec/config.js").GenomeSpyConfig[];
21
26
  }): Scale;
@@ -1 +1 @@
1
- {"version":3,"file":"scalePropsResolver.d.ts","sourceRoot":"","sources":["../../../src/scales/scalePropsResolver.js"],"names":[],"mappings":"AAcA;;;;GAIG;AAEH;;;;;;;;GAQG;AACH,8GAPG;IAAyB,OAAO,EAAxB,OAAO;IACoC,QAAQ,EAAnD,OAAO,oBAAoB,EAAE,IAAI;IACA,cAAc,EAA/C,qBAAqB,EAAE;IACN,gBAAgB,EAAjC,OAAO;IACgD,YAAY,EAAnE,OAAO,mBAAmB,EAAE,eAAe,EAAE;CACrD,GAAU,KAAK,CA6IjB;sBAzJY,OAAO,oBAAoB,EAAE,OAAO;oBACpC,OAAO,kBAAkB,EAAE,KAAK;oCAChC,OAAO,sBAAsB,EAAE,qBAAqB"}
1
+ {"version":3,"file":"scalePropsResolver.d.ts","sourceRoot":"","sources":["../../../src/scales/scalePropsResolver.js"],"names":[],"mappings":"AAmBA;;;;GAIG;AAEH;;;;;;;;;GASG;AACH,oIARG;IAAyB,OAAO,EAAxB,OAAO;IACoC,QAAQ,EAAnD,OAAO,oBAAoB,EAAE,IAAI;IACA,cAAc,EAA/C,qBAAqB,EAAE;IAC0D,oBAAoB,GAArG;QAAE,IAAI,EAAE,OAAO,iBAAiB,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,KAAK,CAAA;KAAE,GAAG,SAAS;IACrD,gBAAgB,EAAjC,OAAO;IACgD,YAAY,EAAnE,OAAO,mBAAmB,EAAE,eAAe,EAAE;CACrD,GAAU,KAAK,CAgKjB;sBA7KY,OAAO,oBAAoB,EAAE,OAAO;oBACpC,OAAO,kBAAkB,EAAE,KAAK;oCAChC,OAAO,sBAAsB,EAAE,qBAAqB"}