@genome-spy/core 0.78.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 (289) 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-DVOHLB1e.js → esm-CTUHLDbv.js} +30 -30
  6. package/dist/bundle/{esm-NIYEaYkc.js → esm-Cx-EbkOj.js} +13 -13
  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 +14840 -11661
  11. package/dist/bundle/index.js +119 -108
  12. package/dist/bundle/{parquetRead-DG_-F5j5.js → parquetRead-Cad1SOVV.js} +473 -399
  13. package/dist/schema.json +18940 -6914
  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 +6 -0
  131. package/dist/src/genomeSpy/renderCoordinator.d.ts.map +1 -1
  132. package/dist/src/genomeSpy/renderCoordinator.js +25 -3
  133. package/dist/src/genomeSpy/viewDataInit.d.ts +14 -0
  134. package/dist/src/genomeSpy/viewDataInit.d.ts.map +1 -1
  135. package/dist/src/genomeSpy/viewDataInit.js +45 -8
  136. package/dist/src/genomeSpyBase.d.ts +6 -0
  137. package/dist/src/genomeSpyBase.d.ts.map +1 -1
  138. package/dist/src/genomeSpyBase.js +20 -3
  139. package/dist/src/gl/glslScaleGenerator.d.ts +17 -0
  140. package/dist/src/gl/glslScaleGenerator.d.ts.map +1 -1
  141. package/dist/src/gl/glslScaleGenerator.js +39 -2
  142. package/dist/src/gl/includes/common.glsl.js +1 -1
  143. package/dist/src/gl/vertexRangeIndex.d.ts.map +1 -1
  144. package/dist/src/gl/vertexRangeIndex.js +4 -2
  145. package/dist/src/gl/webGLHelper.d.ts +1 -1
  146. package/dist/src/gl/webGLHelper.d.ts.map +1 -1
  147. package/dist/src/gl/webGLHelper.js +13 -8
  148. package/dist/src/marks/__snapshots__/shaderSnapshot.test.js.snap +140 -3
  149. package/dist/src/marks/mark.d.ts +47 -4
  150. package/dist/src/marks/mark.d.ts.map +1 -1
  151. package/dist/src/marks/mark.js +158 -54
  152. package/dist/src/marks/point.d.ts.map +1 -1
  153. package/dist/src/marks/point.js +4 -0
  154. package/dist/src/marks/point.vertex.glsl.js +1 -1
  155. package/dist/src/marks/text.d.ts +1 -1
  156. package/dist/src/marks/text.d.ts.map +1 -1
  157. package/dist/src/marks/text.js +2 -7
  158. package/dist/src/marks/text.vertex.glsl.js +1 -1
  159. package/dist/src/paramRuntime/paramUtils.d.ts +43 -9
  160. package/dist/src/paramRuntime/paramUtils.d.ts.map +1 -1
  161. package/dist/src/paramRuntime/paramUtils.js +61 -1
  162. package/dist/src/paramRuntime/viewParamRuntime.d.ts +32 -0
  163. package/dist/src/paramRuntime/viewParamRuntime.d.ts.map +1 -1
  164. package/dist/src/paramRuntime/viewParamRuntime.js +63 -0
  165. package/dist/src/scales/axisResolution.d.ts +35 -0
  166. package/dist/src/scales/axisResolution.d.ts.map +1 -1
  167. package/dist/src/scales/axisResolution.js +115 -7
  168. package/dist/src/scales/legendResolution.d.ts +83 -0
  169. package/dist/src/scales/legendResolution.d.ts.map +1 -0
  170. package/dist/src/scales/legendResolution.js +461 -0
  171. package/dist/src/scales/scaleResolution.d.ts +36 -0
  172. package/dist/src/scales/scaleResolution.d.ts.map +1 -1
  173. package/dist/src/scales/scaleResolution.js +59 -0
  174. package/dist/src/scales/viewLevelGuideConfig.d.ts +53 -0
  175. package/dist/src/scales/viewLevelGuideConfig.d.ts.map +1 -0
  176. package/dist/src/scales/viewLevelGuideConfig.js +224 -0
  177. package/dist/src/scales/viewLevelScaleConfig.d.ts.map +1 -1
  178. package/dist/src/scales/viewLevelScaleConfig.js +13 -2
  179. package/dist/src/spec/axis.d.ts +109 -3
  180. package/dist/src/spec/channel.d.ts +23 -4
  181. package/dist/src/spec/config.d.ts +59 -4
  182. package/dist/src/spec/data.d.ts +177 -17
  183. package/dist/src/spec/legend.d.ts +246 -0
  184. package/dist/src/spec/mark.d.ts +16 -4
  185. package/dist/src/spec/title.d.ts +58 -1
  186. package/dist/src/spec/transform.d.ts +149 -0
  187. package/dist/src/spec/view.d.ts +39 -6
  188. package/dist/src/types/embedApi.d.ts +262 -6
  189. package/dist/src/types/rendering.d.ts +19 -3
  190. package/dist/src/types/viewContext.d.ts +18 -2
  191. package/dist/src/utils/arrayUtils.d.ts +11 -0
  192. package/dist/src/utils/arrayUtils.d.ts.map +1 -1
  193. package/dist/src/utils/arrayUtils.js +23 -0
  194. package/dist/src/utils/suspension.d.ts +17 -0
  195. package/dist/src/utils/suspension.d.ts.map +1 -0
  196. package/dist/src/utils/suspension.js +41 -0
  197. package/dist/src/view/axisGridView.d.ts.map +1 -1
  198. package/dist/src/view/axisGridView.js +1 -4
  199. package/dist/src/view/axisView.d.ts +18 -2
  200. package/dist/src/view/axisView.d.ts.map +1 -1
  201. package/dist/src/view/axisView.js +180 -75
  202. package/dist/src/view/concatView.d.ts +10 -2
  203. package/dist/src/view/concatView.d.ts.map +1 -1
  204. package/dist/src/view/concatView.js +46 -9
  205. package/dist/src/view/containerMutationHelper.d.ts +20 -1
  206. package/dist/src/view/containerMutationHelper.d.ts.map +1 -1
  207. package/dist/src/view/containerMutationHelper.js +196 -33
  208. package/dist/src/view/facetView.d.ts +1 -1
  209. package/dist/src/view/gridView/gridChild.d.ts +54 -4
  210. package/dist/src/view/gridView/gridChild.d.ts.map +1 -1
  211. package/dist/src/view/gridView/gridChild.js +301 -120
  212. package/dist/src/view/gridView/gridChildLegends.d.ts +57 -0
  213. package/dist/src/view/gridView/gridChildLegends.d.ts.map +1 -0
  214. package/dist/src/view/gridView/gridChildLegends.js +503 -0
  215. package/dist/src/view/gridView/gridView.d.ts +25 -0
  216. package/dist/src/view/gridView/gridView.d.ts.map +1 -1
  217. package/dist/src/view/gridView/gridView.js +454 -78
  218. package/dist/src/view/gridView/legendLayout.d.ts +26 -0
  219. package/dist/src/view/gridView/legendLayout.d.ts.map +1 -0
  220. package/dist/src/view/gridView/legendLayout.js +111 -0
  221. package/dist/src/view/gridView/scrollbar.d.ts.map +1 -1
  222. package/dist/src/view/gridView/scrollbar.js +1 -4
  223. package/dist/src/view/gridView/selectionRect.d.ts.map +1 -1
  224. package/dist/src/view/gridView/selectionRect.js +1 -4
  225. package/dist/src/view/gridView/separatorView.d.ts.map +1 -1
  226. package/dist/src/view/gridView/separatorView.js +1 -4
  227. package/dist/src/view/layerView.d.ts +9 -2
  228. package/dist/src/view/layerView.d.ts.map +1 -1
  229. package/dist/src/view/layerView.js +18 -1
  230. package/dist/src/view/layout/flexLayout.d.ts +20 -4
  231. package/dist/src/view/layout/flexLayout.d.ts.map +1 -1
  232. package/dist/src/view/layout/flexLayout.js +331 -31
  233. package/dist/src/view/layout/rectangle.d.ts +14 -0
  234. package/dist/src/view/layout/rectangle.d.ts.map +1 -1
  235. package/dist/src/view/layout/rectangle.js +40 -0
  236. package/dist/src/view/legend/legendEntries.d.ts +20 -0
  237. package/dist/src/view/legend/legendEntries.d.ts.map +1 -0
  238. package/dist/src/view/legend/legendEntries.js +21 -0
  239. package/dist/src/view/legendView.d.ts +134 -0
  240. package/dist/src/view/legendView.d.ts.map +1 -0
  241. package/dist/src/view/legendView.js +1611 -0
  242. package/dist/src/view/renderingContext/bufferedViewRenderingContext.d.ts.map +1 -1
  243. package/dist/src/view/renderingContext/bufferedViewRenderingContext.js +26 -4
  244. package/dist/src/view/renderingContext/clipOptions.d.ts +44 -0
  245. package/dist/src/view/renderingContext/clipOptions.d.ts.map +1 -0
  246. package/dist/src/view/renderingContext/clipOptions.js +140 -0
  247. package/dist/src/view/renderingContext/simpleViewRenderingContext.d.ts.map +1 -1
  248. package/dist/src/view/renderingContext/simpleViewRenderingContext.js +12 -1
  249. package/dist/src/view/resolutionPlanner.d.ts +2 -1
  250. package/dist/src/view/resolutionPlanner.d.ts.map +1 -1
  251. package/dist/src/view/resolutionPlanner.js +89 -25
  252. package/dist/src/view/testUtils.d.ts +4 -2
  253. package/dist/src/view/testUtils.d.ts.map +1 -1
  254. package/dist/src/view/testUtils.js +29 -7
  255. package/dist/src/view/titleView.d.ts +37 -0
  256. package/dist/src/view/titleView.d.ts.map +1 -0
  257. package/dist/src/view/titleView.js +584 -0
  258. package/dist/src/view/unitView.d.ts +3 -3
  259. package/dist/src/view/unitView.d.ts.map +1 -1
  260. package/dist/src/view/unitView.js +3 -2
  261. package/dist/src/view/view.d.ts +25 -24
  262. package/dist/src/view/view.d.ts.map +1 -1
  263. package/dist/src/view/view.js +121 -16
  264. package/dist/src/view/viewFactory.d.ts +2 -5
  265. package/dist/src/view/viewFactory.d.ts.map +1 -1
  266. package/dist/src/view/viewFactory.js +1 -2
  267. package/dist/src/view/viewIdentityRegistry.d.ts +37 -0
  268. package/dist/src/view/viewIdentityRegistry.d.ts.map +1 -0
  269. package/dist/src/view/viewIdentityRegistry.js +71 -0
  270. package/dist/src/view/viewMutationAcidTestUtils.d.ts +112 -0
  271. package/dist/src/view/viewMutationAcidTestUtils.d.ts.map +1 -0
  272. package/dist/src/view/viewMutationAcidTestUtils.js +234 -0
  273. package/dist/src/view/viewMutationApi.d.ts +42 -0
  274. package/dist/src/view/viewMutationApi.d.ts.map +1 -0
  275. package/dist/src/view/viewMutationApi.js +811 -0
  276. package/dist/src/view/viewSelectors.d.ts +10 -0
  277. package/dist/src/view/viewSelectors.d.ts.map +1 -1
  278. package/dist/src/view/viewSelectors.js +23 -1
  279. package/package.json +4 -4
  280. package/dist/bundle/esm-CuMSzCHy.js +0 -298
  281. package/dist/bundle/esm-DAnOffpD.js +0 -1426
  282. package/dist/bundle/esm-DMXpJXM4.js +0 -369
  283. package/dist/bundle/esm-DNtC3H80.js +0 -121
  284. package/dist/src/view/title.d.ts +0 -13
  285. package/dist/src/view/title.d.ts.map +0 -1
  286. package/dist/src/view/title.js +0 -154
  287. /package/dist/bundle/{AbortablePromiseCache-3gHJdF3E.js → AbortablePromiseCache-BTmAcN-t.js} +0 -0
  288. /package/dist/bundle/{esm-CuVa5T98.js → esm-VvpZ9hsq.js} +0 -0
  289. /package/dist/bundle/{chunk-DmhlhrBa.js → rolldown-runtime-Dy4uBu1J.js} +0 -0
@@ -4,13 +4,13 @@
4
4
  * @param {import("../spec/channel.js").PrimaryPositionalChannel} options.channel
5
5
  * @param {import("../spec/axis.js").AxisOrient} [options.orient]
6
6
  * @param {import("../spec/channel.js").Type} [options.type]
7
- * @param {string | string[]} [options.style]
7
+ * @param {string | string[] | null} [options.style]
8
8
  * @returns {import("../spec/config.js").AxisConfig}
9
9
  */
10
10
  export function getConfiguredAxisDefaults(scopes: import("../spec/config.js").GenomeSpyConfig[], { channel, orient, type, style }: {
11
11
  channel: import("../spec/channel.js").PrimaryPositionalChannel;
12
12
  orient?: import("../spec/axis.js").AxisOrient;
13
13
  type?: import("../spec/channel.js").Type;
14
- style?: string | string[];
14
+ style?: string | string[] | null;
15
15
  }): import("../spec/config.js").AxisConfig;
16
16
  //# sourceMappingURL=axisConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"axisConfig.d.ts","sourceRoot":"","sources":["../../../src/config/axisConfig.js"],"names":[],"mappings":"AA0BA;;;;;;;;GAQG;AACH,kDARW,OAAO,mBAAmB,EAAE,eAAe,EAAE,oCAErD;IAAuE,OAAO,EAAtE,OAAO,oBAAoB,EAAE,wBAAwB;IACN,MAAM,GAArD,OAAO,iBAAiB,EAAE,UAAU;IACQ,IAAI,GAAhD,OAAO,oBAAoB,EAAE,IAAI;IACL,KAAK,GAAjC,MAAM,GAAG,MAAM,EAAE;CACzB,GAAU,OAAO,mBAAmB,EAAE,UAAU,CAkDlD"}
1
+ {"version":3,"file":"axisConfig.d.ts","sourceRoot":"","sources":["../../../src/config/axisConfig.js"],"names":[],"mappings":"AAyBA;;;;;;;;GAQG;AACH,kDARW,OAAO,mBAAmB,EAAE,eAAe,EAAE,oCAErD;IAAuE,OAAO,EAAtE,OAAO,oBAAoB,EAAE,wBAAwB;IACN,MAAM,GAArD,OAAO,iBAAiB,EAAE,UAAU;IACQ,IAAI,GAAhD,OAAO,oBAAoB,EAAE,IAAI;IACE,KAAK,GAAxC,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;CAChC,GAAU,OAAO,mBAAmB,EAAE,UAAU,CAmClD"}
@@ -1,5 +1,4 @@
1
- import { mergeConfigScopes } from "./mergeConfig.js";
2
- import { normalizeStyle } from "./styleUtils.js";
1
+ import { createConfigLayerStack } from "./configLayers.js";
3
2
 
4
3
  /** @type {Record<import("../spec/channel.js").PrimaryPositionalChannel, keyof import("../spec/config.js").GenomeSpyConfig>} */
5
4
  const CHANNEL_BUCKETS = {
@@ -30,55 +29,40 @@ const TYPE_BUCKETS = {
30
29
  * @param {import("../spec/channel.js").PrimaryPositionalChannel} options.channel
31
30
  * @param {import("../spec/axis.js").AxisOrient} [options.orient]
32
31
  * @param {import("../spec/channel.js").Type} [options.type]
33
- * @param {string | string[]} [options.style]
32
+ * @param {string | string[] | null} [options.style]
34
33
  * @returns {import("../spec/config.js").AxisConfig}
35
34
  */
36
35
  export function getConfiguredAxisDefaults(
37
36
  scopes,
38
37
  { channel, orient, type, style }
39
38
  ) {
40
- const styles = normalizeStyle(style);
39
+ const layers = createConfigLayerStack();
41
40
 
42
- return /** @type {import("../spec/config.js").AxisConfig} */ (
43
- mergeConfigScopes(
44
- scopes.flatMap((scope) => {
45
- const channelBucket = CHANNEL_BUCKETS[channel];
46
- const orientBucket = orient
47
- ? ORIENT_BUCKETS[orient]
48
- : undefined;
49
- const typeBucket = type ? TYPE_BUCKETS[type] : undefined;
50
- const bucketConfigs = [
51
- /** @type {Record<string, any> | undefined} */ (scope.axis),
52
- /** @type {Record<string, any> | undefined} */ (
53
- channelBucket ? scope[channelBucket] : undefined
54
- ),
55
- /** @type {Record<string, any> | undefined} */ (
56
- orientBucket ? scope[orientBucket] : undefined
57
- ),
58
- /** @type {Record<string, any> | undefined} */ (
59
- typeBucket ? scope[typeBucket] : undefined
60
- ),
61
- ];
62
- const bucketStyles = bucketConfigs.flatMap((config) =>
63
- normalizeStyle(config?.style)
64
- );
41
+ for (const [index, scope] of scopes.entries()) {
42
+ const channelBucket = CHANNEL_BUCKETS[channel];
43
+ const orientBucket = orient ? ORIENT_BUCKETS[orient] : undefined;
44
+ const typeBucket = type ? TYPE_BUCKETS[type] : undefined;
45
+ const precedingScopes = scopes.slice(0, index + 1);
46
+ const bucketConfigs = [
47
+ /** @type {Record<string, any> | undefined} */ (scope.axis),
48
+ /** @type {Record<string, any> | undefined} */ (
49
+ channelBucket ? scope[channelBucket] : undefined
50
+ ),
51
+ /** @type {Record<string, any> | undefined} */ (
52
+ orientBucket ? scope[orientBucket] : undefined
53
+ ),
54
+ /** @type {Record<string, any> | undefined} */ (
55
+ typeBucket ? scope[typeBucket] : undefined
56
+ ),
57
+ ];
58
+
59
+ for (const config of bucketConfigs) {
60
+ layers.appendConfig(precedingScopes, config);
61
+ }
62
+ layers.appendStyle(precedingScopes, style);
63
+ }
65
64
 
66
- return [
67
- ...bucketStyles.map(
68
- (styleName) =>
69
- /** @type {Record<string, any> | undefined} */ (
70
- scope.style?.[styleName]
71
- )
72
- ),
73
- ...bucketConfigs,
74
- ...styles.map(
75
- (styleName) =>
76
- /** @type {Record<string, any> | undefined} */ (
77
- scope.style?.[styleName]
78
- )
79
- ),
80
- ];
81
- })
82
- )
65
+ return /** @type {import("../spec/config.js").AxisConfig} */ (
66
+ layers.merge()
83
67
  );
84
68
  }
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @typedef {{
3
+ * kind: "style" | "config",
4
+ * config: Record<string, any>
5
+ * }} ConfigLayer
6
+ *
7
+ * @typedef {{
8
+ * appendConfig: (scopes: import("../spec/config.js").GenomeSpyConfig[], config: StyleableConfig | undefined) => void,
9
+ * appendStyle: (scopes: import("../spec/config.js").GenomeSpyConfig[], style: string | string[] | null | undefined) => void,
10
+ * merge: () => Record<string, any>
11
+ * }} ConfigLayerStack
12
+ *
13
+ * @typedef {{
14
+ * style?: string | string[] | null
15
+ * }} StyleableConfig
16
+ */
17
+ /**
18
+ * Creates an ordered config layer stack that understands GenomeSpy style
19
+ * expansion. A style reference is not an ordinary property: it expands to a
20
+ * separate layer of defaults before the config object that declared it. Keeping
21
+ * these expanded defaults as tagged layers makes `style: null` meaningful: it
22
+ * can remove previously expanded style defaults while preserving ordinary
23
+ * inherited config properties such as `disable`, colors, or label settings.
24
+ *
25
+ * This is primarily needed by guide-like config hierarchies where defaults are
26
+ * assembled from multiple buckets, for example `legend`, `legendTrack`, and
27
+ * channel-level legend properties. The caller remains responsible for appending
28
+ * buckets in the desired precedence order.
29
+ *
30
+ * @returns {ConfigLayerStack}
31
+ */
32
+ export function createConfigLayerStack(): ConfigLayerStack;
33
+ export type ConfigLayer = {
34
+ kind: "style" | "config";
35
+ config: Record<string, any>;
36
+ };
37
+ export type ConfigLayerStack = {
38
+ appendConfig: (scopes: import("../spec/config.js").GenomeSpyConfig[], config: StyleableConfig | undefined) => void;
39
+ appendStyle: (scopes: import("../spec/config.js").GenomeSpyConfig[], style: string | string[] | null | undefined) => void;
40
+ merge: () => Record<string, any>;
41
+ };
42
+ export type StyleableConfig = {
43
+ style?: string | string[] | null;
44
+ };
45
+ //# sourceMappingURL=configLayers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configLayers.d.ts","sourceRoot":"","sources":["../../../src/config/configLayers.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;GAeG;AAEH;;;;;;;;;;;;;;GAcG;AACH,0CAFa,gBAAgB,CAmB5B;0BAhDY;IACN,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC9B;+BAES;IACN,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,mBAAmB,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE,eAAe,GAAG,SAAS,KAAK,IAAI,CAAC;IACnH,WAAW,EAAE,CAAC,MAAM,EAAE,OAAO,mBAAmB,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;IAC1H,KAAK,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CACnC;8BAES;IACN,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;CACnC"}
@@ -0,0 +1,110 @@
1
+ import { mergeConfigScopes } from "./mergeConfig.js";
2
+ import { getConfiguredStyleConfig } from "./styleUtils.js";
3
+
4
+ /**
5
+ * @typedef {{
6
+ * kind: "style" | "config",
7
+ * config: Record<string, any>
8
+ * }} ConfigLayer
9
+ *
10
+ * @typedef {{
11
+ * appendConfig: (scopes: import("../spec/config.js").GenomeSpyConfig[], config: StyleableConfig | undefined) => void,
12
+ * appendStyle: (scopes: import("../spec/config.js").GenomeSpyConfig[], style: string | string[] | null | undefined) => void,
13
+ * merge: () => Record<string, any>
14
+ * }} ConfigLayerStack
15
+ *
16
+ * @typedef {{
17
+ * style?: string | string[] | null
18
+ * }} StyleableConfig
19
+ */
20
+
21
+ /**
22
+ * Creates an ordered config layer stack that understands GenomeSpy style
23
+ * expansion. A style reference is not an ordinary property: it expands to a
24
+ * separate layer of defaults before the config object that declared it. Keeping
25
+ * these expanded defaults as tagged layers makes `style: null` meaningful: it
26
+ * can remove previously expanded style defaults while preserving ordinary
27
+ * inherited config properties such as `disable`, colors, or label settings.
28
+ *
29
+ * This is primarily needed by guide-like config hierarchies where defaults are
30
+ * assembled from multiple buckets, for example `legend`, `legendTrack`, and
31
+ * channel-level legend properties. The caller remains responsible for appending
32
+ * buckets in the desired precedence order.
33
+ *
34
+ * @returns {ConfigLayerStack}
35
+ */
36
+ export function createConfigLayerStack() {
37
+ /** @type {ConfigLayer[]} */
38
+ const layers = [];
39
+
40
+ return {
41
+ appendConfig(scopes, config) {
42
+ appendConfigLayer(layers, scopes, config);
43
+ },
44
+
45
+ appendStyle(scopes, style) {
46
+ appendStyleLayer(layers, scopes, style);
47
+ },
48
+
49
+ merge() {
50
+ return mergeConfigScopes(layers.map((layer) => layer.config));
51
+ },
52
+ };
53
+ }
54
+
55
+ /**
56
+ * @param {ConfigLayer[]} layers
57
+ * @param {import("../spec/config.js").GenomeSpyConfig[]} scopes
58
+ * @param {StyleableConfig | undefined} config
59
+ */
60
+ function appendConfigLayer(layers, scopes, config) {
61
+ if (!config) {
62
+ return;
63
+ }
64
+
65
+ appendStyleLayer(
66
+ layers,
67
+ scopes,
68
+ Object.hasOwn(config, "style") ? config.style : undefined
69
+ );
70
+
71
+ layers.push({ kind: "config", config });
72
+ }
73
+
74
+ /**
75
+ * Appends style-expanded defaults without appending the style declaration
76
+ * itself. Use this for explicit style inputs whose only purpose is to select a
77
+ * named style layer.
78
+ *
79
+ * @param {ConfigLayer[]} layers
80
+ * @param {import("../spec/config.js").GenomeSpyConfig[]} scopes
81
+ * @param {string | string[] | null | undefined} style
82
+ */
83
+ function appendStyleLayer(layers, scopes, style) {
84
+ if (style === undefined) {
85
+ return;
86
+ }
87
+
88
+ if (style === null) {
89
+ removeStyleLayers(layers);
90
+ return;
91
+ }
92
+
93
+ const styleConfig = getConfiguredStyleConfig(scopes, style);
94
+ layers.push({ kind: "style", config: styleConfig });
95
+ }
96
+
97
+ /**
98
+ * Removes expanded style layers while leaving ordinary config layers intact.
99
+ * This allows a deeper config scope to clear inherited styles without clearing
100
+ * unrelated inherited defaults.
101
+ *
102
+ * @param {ConfigLayer[]} layers
103
+ */
104
+ function removeStyleLayers(layers) {
105
+ for (let index = layers.length - 1; index >= 0; index--) {
106
+ if (layers[index].kind == "style") {
107
+ layers.splice(index, 1);
108
+ }
109
+ }
110
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"defaultConfig.d.ts","sourceRoot":"","sources":["../../../src/config/defaultConfig.js"],"names":[],"mappings":"AAiBA,0DAA0D;AAC1D,sCADW,OAAO,mBAAmB,EAAE,eAAe,CAoBpD"}
1
+ {"version":3,"file":"defaultConfig.d.ts","sourceRoot":"","sources":["../../../src/config/defaultConfig.js"],"names":[],"mappings":"AAsBA,0DAA0D;AAC1D,sCADW,OAAO,mBAAmB,EAAE,eAAe,CAsBpD"}
@@ -8,6 +8,11 @@ import {
8
8
  TEXT_MARK_DEFAULTS,
9
9
  } from "./defaults/markDefaults.js";
10
10
  import { AXIS_DEFAULTS, LOCUS_AXIS_DEFAULTS } from "./defaults/axisDefaults.js";
11
+ import {
12
+ LEGEND_DEFAULTS,
13
+ LEGEND_STYLE_DEFAULTS,
14
+ LEGEND_TRACK_DEFAULTS,
15
+ } from "./defaults/legendDefaults.js";
11
16
  import { RANGE_DEFAULTS, SCALE_DEFAULTS } from "./defaults/scaleDefaults.js";
12
17
  import {
13
18
  TITLE_DEFAULTS,
@@ -29,10 +34,12 @@ export const INTERNAL_DEFAULT_CONFIG = {
29
34
 
30
35
  axis: AXIS_DEFAULTS,
31
36
  axisLocus: LOCUS_AXIS_DEFAULTS,
37
+ legend: LEGEND_DEFAULTS,
38
+ legendTrack: LEGEND_TRACK_DEFAULTS,
32
39
 
33
40
  scale: SCALE_DEFAULTS,
34
41
  range: RANGE_DEFAULTS,
35
42
 
36
43
  title: TITLE_DEFAULTS,
37
- style: TITLE_STYLE_DEFAULTS,
44
+ style: { ...TITLE_STYLE_DEFAULTS, ...LEGEND_STYLE_DEFAULTS },
38
45
  };
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Initial legend defaults are adapted from Vega:
3
+ * https://github.com/vega/vega/
4
+ *
5
+ * @type {import("../../spec/legend.js").LegendConfig}
6
+ */
7
+ export const LEGEND_DEFAULTS: import("../../spec/legend.js").LegendConfig;
8
+ /** @type {Record<string, import("../../spec/config.js").StyleConfig>} */
9
+ export const LEGEND_STYLE_DEFAULTS: Record<string, import("../../spec/config.js").StyleConfig>;
10
+ /**
11
+ * @type {import("../../spec/legend.js").LegendConfig}
12
+ */
13
+ export const LEGEND_TRACK_DEFAULTS: import("../../spec/legend.js").LegendConfig;
14
+ //# sourceMappingURL=legendDefaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legendDefaults.d.ts","sourceRoot":"","sources":["../../../../src/config/defaults/legendDefaults.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,8BAFU,OAAO,sBAAsB,EAAE,YAAY,CAwBnD;AAEF,yEAAyE;AACzE,oCADW,MAAM,CAAC,MAAM,EAAE,OAAO,sBAAsB,EAAE,WAAW,CAAC,CAQnE;AAEF;;GAEG;AACH,oCAFU,OAAO,sBAAsB,EAAE,YAAY,CAInD"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Initial legend defaults are adapted from Vega:
3
+ * https://github.com/vega/vega/
4
+ *
5
+ * @type {import("../../spec/legend.js").LegendConfig}
6
+ */
7
+ export const LEGEND_DEFAULTS = {
8
+ disable: false,
9
+ orient: "right",
10
+ direction: "vertical",
11
+ offset: 18,
12
+ padding: 0,
13
+ spacing: 10,
14
+ columnPadding: 10,
15
+ rowPadding: 2,
16
+ labelAlign: "left",
17
+ labelBaseline: "middle",
18
+ labelLimit: 160,
19
+ labelOffset: 4,
20
+ symbolType: "circle",
21
+ symbolSize: 100,
22
+ symbolOffset: 0,
23
+ symbolStrokeWidth: 1.5,
24
+ symbolBaseFillColor: "transparent",
25
+ symbolBaseStrokeColor: "#888",
26
+ titleLimit: 180,
27
+ titleOrient: "top",
28
+ titlePadding: 5,
29
+ };
30
+
31
+ /** @type {Record<string, import("../../spec/config.js").StyleConfig>} */
32
+ export const LEGEND_STYLE_DEFAULTS = {
33
+ "track-bottom": {
34
+ orient: "bottom",
35
+ titleOrient: "left",
36
+ spacing: 3,
37
+ offset: 3,
38
+ },
39
+ };
40
+
41
+ /**
42
+ * @type {import("../../spec/legend.js").LegendConfig}
43
+ */
44
+ export const LEGEND_TRACK_DEFAULTS = {
45
+ style: "track-bottom",
46
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"titleDefaults.d.ts","sourceRoot":"","sources":["../../../../src/config/defaults/titleDefaults.js"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,6BADW,OAAO,sBAAsB,EAAE,WAAW,CAgBnD;AAEF,yEAAyE;AACzE,mCADW,MAAM,CAAC,MAAM,EAAE,OAAO,sBAAsB,EAAE,WAAW,CAAC,CA4BnE"}
1
+ {"version":3,"file":"titleDefaults.d.ts","sourceRoot":"","sources":["../../../../src/config/defaults/titleDefaults.js"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,6BADW,OAAO,sBAAsB,EAAE,WAAW,CAkBnD;AAeF,yEAAyE;AACzE,mCADW,MAAM,CAAC,MAAM,EAAE,OAAO,sBAAsB,EAAE,WAAW,CAAC,CAqBnE"}
@@ -4,6 +4,7 @@ export const TITLE_DEFAULTS = {
4
4
  frame: "group",
5
5
  offset: 10,
6
6
  orient: "top",
7
+ reserve: true,
7
8
  align: undefined,
8
9
  angle: 0,
9
10
  baseline: "alphabetic",
@@ -11,37 +12,44 @@ export const TITLE_DEFAULTS = {
11
12
  dy: 0,
12
13
  color: undefined,
13
14
  font: undefined,
14
- fontSize: 12,
15
+ fontSize: 13,
15
16
  fontStyle: "normal",
16
17
  fontWeight: "normal",
18
+ subtitlePadding: 3,
19
+ };
20
+
21
+ /** @type {import("../../spec/config.js").StyleConfig} */
22
+ const OVERLAY_TITLE_STYLE = {
23
+ orient: "top",
24
+ frame: "group",
25
+ reserve: false,
26
+ anchor: "start",
27
+ align: "left",
28
+ baseline: "top",
29
+ offset: -10,
30
+ dx: 10,
31
+ fontSize: 12,
17
32
  };
18
33
 
19
34
  /** @type {Record<string, import("../../spec/config.js").StyleConfig>} */
20
35
  export const TITLE_STYLE_DEFAULTS = {
36
+ "group-title": {},
21
37
  "track-title": {
22
38
  orient: "left",
39
+ frame: "group",
40
+ reserve: true,
23
41
  anchor: "middle",
24
42
  align: "right",
25
43
  baseline: "middle",
26
44
  angle: 0,
27
45
  fontSize: 12,
28
46
  },
29
- overlay: {
30
- orient: "top",
31
- anchor: "start",
32
- align: "left",
33
- baseline: "top",
34
- offset: -10,
35
- dx: 10,
36
- fontSize: 12,
37
- },
38
- "overlay-title": {
39
- orient: "top",
40
- anchor: "start",
41
- align: "left",
42
- baseline: "top",
43
- offset: -10,
44
- dx: 10,
45
- fontSize: 12,
47
+ // Legacy name kept for backward compatibility. Prefer "overlay-title".
48
+ overlay: OVERLAY_TITLE_STYLE,
49
+ "overlay-title": OVERLAY_TITLE_STYLE,
50
+ "group-subtitle": {
51
+ fontSize: 11,
52
+ fontStyle: "normal",
53
+ fontWeight: "normal",
46
54
  },
47
55
  };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @param {import("../spec/config.js").GenomeSpyConfig[]} scopes
3
+ * @param {import("../spec/legend.js").Legend | import("../spec/legend.js").LegendConfig} [legend]
4
+ * @param {object} [options]
5
+ * @param {boolean} [options.track]
6
+ * @returns {import("../spec/legend.js").LegendConfig}
7
+ */
8
+ export function getConfiguredLegendDefaults(scopes: import("../spec/config.js").GenomeSpyConfig[], legend?: import("../spec/legend.js").Legend | import("../spec/legend.js").LegendConfig, options?: {
9
+ track?: boolean;
10
+ }): import("../spec/legend.js").LegendConfig;
11
+ //# sourceMappingURL=legendConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legendConfig.d.ts","sourceRoot":"","sources":["../../../src/config/legendConfig.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,oDANW,OAAO,mBAAmB,EAAE,eAAe,EAAE,WAC7C,OAAO,mBAAmB,EAAE,MAAM,GAAG,OAAO,mBAAmB,EAAE,YAAY,YAErF;IAA0B,KAAK,GAAvB,OAAO;CACf,GAAU,OAAO,mBAAmB,EAAE,YAAY,CAoBpD"}
@@ -0,0 +1,63 @@
1
+ import { createConfigLayerStack } from "./configLayers.js";
2
+
3
+ /**
4
+ * @param {import("../spec/config.js").GenomeSpyConfig[]} scopes
5
+ * @param {import("../spec/legend.js").Legend | import("../spec/legend.js").LegendConfig} [legend]
6
+ * @param {object} [options]
7
+ * @param {boolean} [options.track]
8
+ * @returns {import("../spec/legend.js").LegendConfig}
9
+ */
10
+ export function getConfiguredLegendDefaults(scopes, legend, options = {}) {
11
+ const baseScope = scopes[0];
12
+ const scopedOverrides = scopes.slice(1);
13
+ const layers = createConfigLayerStack();
14
+
15
+ appendLegendScopeDefaults(layers, scopes, baseScope, options.track);
16
+
17
+ for (const [index, scope] of scopedOverrides.entries()) {
18
+ const scopedScopes = scopes.slice(0, index + 2);
19
+ appendTrackScopeDefaults(layers, scopedScopes, scope, options.track);
20
+ appendLegendConfigLayer(layers, scopedScopes, scope.legend);
21
+ }
22
+
23
+ appendLegendConfigLayer(layers, scopes, legend);
24
+
25
+ return /** @type {import("../spec/legend.js").LegendConfig} */ (
26
+ layers.merge()
27
+ );
28
+ }
29
+
30
+ /**
31
+ * @param {import("./configLayers.js").ConfigLayerStack} layers
32
+ * @param {import("../spec/config.js").GenomeSpyConfig[]} scopes
33
+ * @param {import("../spec/config.js").GenomeSpyConfig | undefined} baseScope
34
+ * @param {boolean | undefined} track
35
+ */
36
+ function appendLegendScopeDefaults(layers, scopes, baseScope, track) {
37
+ const scopedScopes = scopes.slice(0, 1);
38
+ appendLegendConfigLayer(layers, scopedScopes, baseScope?.legend);
39
+ appendTrackScopeDefaults(layers, scopedScopes, baseScope, track);
40
+ }
41
+
42
+ /**
43
+ * @param {import("./configLayers.js").ConfigLayerStack} layers
44
+ * @param {import("../spec/config.js").GenomeSpyConfig[]} scopedScopes
45
+ * @param {import("../spec/config.js").GenomeSpyConfig | undefined} scope
46
+ * @param {boolean | undefined} track
47
+ */
48
+ function appendTrackScopeDefaults(layers, scopedScopes, scope, track) {
49
+ if (!track) {
50
+ return;
51
+ }
52
+
53
+ appendLegendConfigLayer(layers, scopedScopes, scope?.legendTrack);
54
+ }
55
+
56
+ /**
57
+ * @param {import("./configLayers.js").ConfigLayerStack} layers
58
+ * @param {import("../spec/config.js").GenomeSpyConfig[]} scopes
59
+ * @param {import("../spec/legend.js").Legend | import("../spec/legend.js").LegendConfig | undefined} config
60
+ */
61
+ function appendLegendConfigLayer(layers, scopes, config) {
62
+ layers.appendConfig(scopes, config);
63
+ }
@@ -1,6 +1,12 @@
1
1
  /**
2
- * @param {string | string[] | undefined} style
2
+ * @param {string | string[] | null | undefined} style
3
3
  * @returns {string[]}
4
4
  */
5
- export function normalizeStyle(style: string | string[] | undefined): string[];
5
+ export function normalizeStyle(style: string | string[] | null | undefined): string[];
6
+ /**
7
+ * @param {import("../spec/config.js").GenomeSpyConfig[]} scopes
8
+ * @param {string | string[] | null | undefined} style
9
+ * @returns {import("../spec/config.js").StyleConfig}
10
+ */
11
+ export function getConfiguredStyleConfig(scopes: import("../spec/config.js").GenomeSpyConfig[], style: string | string[] | null | undefined): import("../spec/config.js").StyleConfig;
6
12
  //# sourceMappingURL=styleUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styleUtils.d.ts","sourceRoot":"","sources":["../../../src/config/styleUtils.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,sCAHW,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GAC3B,MAAM,EAAE,CAOpB"}
1
+ {"version":3,"file":"styleUtils.d.ts","sourceRoot":"","sources":["../../../src/config/styleUtils.js"],"names":[],"mappings":"AAEA;;;GAGG;AACH,sCAHW,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,GAClC,MAAM,EAAE,CAOpB;AAED;;;;GAIG;AACH,iDAJW,OAAO,mBAAmB,EAAE,eAAe,EAAE,SAC7C,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,GAClC,OAAO,mBAAmB,EAAE,WAAW,CAiBnD"}
@@ -1,5 +1,7 @@
1
+ import { mergeConfigScopes } from "./mergeConfig.js";
2
+
1
3
  /**
2
- * @param {string | string[] | undefined} style
4
+ * @param {string | string[] | null | undefined} style
3
5
  * @returns {string[]}
4
6
  */
5
7
  export function normalizeStyle(style) {
@@ -8,3 +10,25 @@ export function normalizeStyle(style) {
8
10
  }
9
11
  return Array.isArray(style) ? style : [style];
10
12
  }
13
+
14
+ /**
15
+ * @param {import("../spec/config.js").GenomeSpyConfig[]} scopes
16
+ * @param {string | string[] | null | undefined} style
17
+ * @returns {import("../spec/config.js").StyleConfig}
18
+ */
19
+ export function getConfiguredStyleConfig(scopes, style) {
20
+ const styles = normalizeStyle(style);
21
+
22
+ return /** @type {import("../spec/config.js").StyleConfig} */ (
23
+ mergeConfigScopes(
24
+ scopes.flatMap((scope) =>
25
+ styles.map(
26
+ (styleName) =>
27
+ /** @type {Record<string, any> | undefined} */ (
28
+ scope.style?.[styleName]
29
+ )
30
+ )
31
+ )
32
+ )
33
+ );
34
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../../../src/config/themes.js"],"names":[],"mappings":"AA4RA;;;GAGG;AACH,gDAHW,OAAO,mBAAmB,EAAE,gBAAgB,GAC1C,MAAM,GAAG,SAAS,CAI9B;AAED;;;GAGG;AACH,iDAHW,OAAO,mBAAmB,EAAE,gBAAgB,GAAG,OAAO,mBAAmB,EAAE,gBAAgB,EAAE,GAAG,SAAS,GACvG,OAAO,mBAAmB,EAAE,eAAe,GAAG,SAAS,CAWnE;AA1BD;;GAEG;AACH,iCAFU,OAAO,mBAAmB,EAAE,gBAAgB,CAER"}
1
+ {"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../../../src/config/themes.js"],"names":[],"mappings":"AA+SA;;;GAGG;AACH,gDAHW,OAAO,mBAAmB,EAAE,gBAAgB,GAC1C,MAAM,GAAG,SAAS,CAI9B;AAED;;;GAGG;AACH,iDAHW,OAAO,mBAAmB,EAAE,gBAAgB,GAAG,OAAO,mBAAmB,EAAE,gBAAgB,EAAE,GAAG,SAAS,GACvG,OAAO,mBAAmB,EAAE,eAAe,GAAG,SAAS,CAWnE;AA1BD;;GAEG;AACH,iCAFU,OAAO,mBAAmB,EAAE,gBAAgB,CAER"}
@@ -16,6 +16,9 @@ const VEGALITE_THEME = {
16
16
  color: "black",
17
17
  },
18
18
  view: {
19
+ continuousWidth: 300,
20
+ continuousHeight: 300,
21
+ step: 20,
19
22
  stroke: "#ddd",
20
23
  strokeWidth: 1,
21
24
  },
@@ -26,9 +29,25 @@ const VEGALITE_THEME = {
26
29
  domainColor: "gray",
27
30
  gridColor: "#ddd",
28
31
  labelColor: "#333",
29
- titleColor: "#333",
32
+ titleColor: "black",
30
33
  titleFontSize: 11,
31
- titleFontWeight: "normal",
34
+ titleFontWeight: "bold",
35
+ },
36
+ legend: {
37
+ titleColor: "black",
38
+ titleFontSize: 11,
39
+ titleFontWeight: "bold",
40
+ },
41
+ style: {
42
+ "group-title": {
43
+ color: "black",
44
+ fontSize: 13,
45
+ fontWeight: "bold",
46
+ },
47
+ "group-subtitle": {
48
+ color: "black",
49
+ fontSize: 12,
50
+ },
32
51
  },
33
52
  axisQuantitative: {
34
53
  grid: true,
@@ -1 +1 @@
1
- {"version":3,"file":"titleConfig.d.ts","sourceRoot":"","sources":["../../../src/config/titleConfig.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH,iDAHW,OAAO,mBAAmB,EAAE,eAAe,EAAE,GAC3C,OAAO,mBAAmB,EAAE,WAAW,CAWnD;AAED;;;;GAIG;AACH,iDAJW,OAAO,mBAAmB,EAAE,eAAe,EAAE,cAC7C,MAAM,GAAG,MAAM,EAAE,GACf,OAAO,mBAAmB,EAAE,WAAW,CAoBnD"}
1
+ {"version":3,"file":"titleConfig.d.ts","sourceRoot":"","sources":["../../../src/config/titleConfig.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH,iDAHW,OAAO,mBAAmB,EAAE,eAAe,EAAE,GAC3C,OAAO,mBAAmB,EAAE,WAAW,CAWnD;AAED;;;;GAIG;AACH,iDAJW,OAAO,mBAAmB,EAAE,eAAe,EAAE,cAC7C,MAAM,GAAG,MAAM,EAAE,GACf,OAAO,mBAAmB,EAAE,WAAW,CAInD"}