@genome-spy/core 0.78.0 → 0.79.1
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.
- package/dist/bundle/{browser-KWU9rWZT.js → browser-CETrb2cm.js} +53 -33
- package/dist/bundle/esm-BdLYkz-m.js +248 -0
- package/dist/bundle/esm-BwiDsqSb.js +1367 -0
- package/dist/bundle/esm-CDFd1cjk.js +441 -0
- package/dist/bundle/{esm-DVOHLB1e.js → esm-CTUHLDbv.js} +30 -30
- package/dist/bundle/{esm-NIYEaYkc.js → esm-Cx-EbkOj.js} +13 -13
- package/dist/bundle/esm-DlYGqi79.js +128 -0
- package/dist/bundle/{esm-BygJiwh0.js → esm-k9p3oHkt.js} +133 -158
- package/dist/bundle/{esm-CT3ygiMq.js → esm-zAZJQO6D.js} +226 -212
- package/dist/bundle/index.es.js +14879 -11656
- package/dist/bundle/index.js +119 -108
- package/dist/bundle/{parquetRead-DG_-F5j5.js → parquetRead-Cad1SOVV.js} +473 -399
- package/dist/schema.json +18940 -6914
- package/dist/src/config/axisConfig.d.ts +2 -2
- package/dist/src/config/axisConfig.d.ts.map +1 -1
- package/dist/src/config/axisConfig.js +28 -44
- package/dist/src/config/configLayers.d.ts +45 -0
- package/dist/src/config/configLayers.d.ts.map +1 -0
- package/dist/src/config/configLayers.js +110 -0
- package/dist/src/config/defaultConfig.d.ts.map +1 -1
- package/dist/src/config/defaultConfig.js +8 -1
- package/dist/src/config/defaults/legendDefaults.d.ts +14 -0
- package/dist/src/config/defaults/legendDefaults.d.ts.map +1 -0
- package/dist/src/config/defaults/legendDefaults.js +46 -0
- package/dist/src/config/defaults/titleDefaults.d.ts.map +1 -1
- package/dist/src/config/defaults/titleDefaults.js +26 -18
- package/dist/src/config/legendConfig.d.ts +11 -0
- package/dist/src/config/legendConfig.d.ts.map +1 -0
- package/dist/src/config/legendConfig.js +63 -0
- package/dist/src/config/styleUtils.d.ts +8 -2
- package/dist/src/config/styleUtils.d.ts.map +1 -1
- package/dist/src/config/styleUtils.js +25 -1
- package/dist/src/config/themes.d.ts.map +1 -1
- package/dist/src/config/themes.js +21 -2
- package/dist/src/config/titleConfig.d.ts.map +1 -1
- package/dist/src/config/titleConfig.js +2 -18
- package/dist/src/data/collector.d.ts.map +1 -1
- package/dist/src/data/collector.js +40 -18
- package/dist/src/data/flowInit.d.ts +6 -0
- package/dist/src/data/flowInit.d.ts.map +1 -1
- package/dist/src/data/flowInit.js +1 -1
- package/dist/src/data/flowNode.d.ts +32 -0
- package/dist/src/data/flowNode.d.ts.map +1 -1
- package/dist/src/data/flowNode.js +59 -0
- package/dist/src/data/sources/lazy/bamSource.d.ts +0 -1
- package/dist/src/data/sources/lazy/bamSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/bamSource.js +39 -30
- package/dist/src/data/sources/lazy/bigBedSource.d.ts +0 -10
- package/dist/src/data/sources/lazy/bigBedSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/bigBedSource.js +127 -62
- package/dist/src/data/sources/lazy/bigWigSource.d.ts +2 -2
- package/dist/src/data/sources/lazy/bigWigSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/bigWigSource.js +234 -81
- package/dist/src/data/sources/lazy/gff3Source.d.ts +7 -3
- package/dist/src/data/sources/lazy/gff3Source.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/gff3Source.js +7 -8
- package/dist/src/data/sources/lazy/indexedFastaSource.d.ts +1 -1
- package/dist/src/data/sources/lazy/indexedFastaSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/indexedFastaSource.js +28 -19
- package/dist/src/data/sources/lazy/legendEntriesSource.d.ts +24 -0
- package/dist/src/data/sources/lazy/legendEntriesSource.d.ts.map +1 -0
- package/dist/src/data/sources/lazy/legendEntriesSource.js +218 -0
- package/dist/src/data/sources/lazy/legendGradientSource.d.ts +30 -0
- package/dist/src/data/sources/lazy/legendGradientSource.d.ts.map +1 -0
- package/dist/src/data/sources/lazy/legendGradientSource.js +388 -0
- package/dist/src/data/sources/lazy/mockLazySource.d.ts +4 -1
- package/dist/src/data/sources/lazy/mockLazySource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/mockLazySource.js +49 -4
- package/dist/src/data/sources/lazy/registerCoreLazySources.js +2 -0
- package/dist/src/data/sources/lazy/singleAxisWindowedSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/singleAxisWindowedSource.js +3 -4
- package/dist/src/data/sources/lazy/tabixSource.d.ts +9 -4
- package/dist/src/data/sources/lazy/tabixSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/tabixSource.js +201 -70
- package/dist/src/data/sources/lazy/tabixTsvSource.d.ts +2 -3
- package/dist/src/data/sources/lazy/tabixTsvSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/tabixTsvSource.js +14 -12
- package/dist/src/data/sources/lazy/vcfSource.d.ts +7 -3
- package/dist/src/data/sources/lazy/vcfSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/vcfSource.js +7 -8
- package/dist/src/data/sources/urlDescriptor.d.ts +165 -0
- package/dist/src/data/sources/urlDescriptor.d.ts.map +1 -0
- package/dist/src/data/sources/urlDescriptor.js +473 -0
- package/dist/src/data/sources/urlDescriptorController.d.ts +25 -0
- package/dist/src/data/sources/urlDescriptorController.d.ts.map +1 -0
- package/dist/src/data/sources/urlDescriptorController.js +72 -0
- package/dist/src/data/sources/urlDescriptorState.d.ts +47 -0
- package/dist/src/data/sources/urlDescriptorState.d.ts.map +1 -0
- package/dist/src/data/sources/urlDescriptorState.js +129 -0
- package/dist/src/data/sources/urlSource.d.ts.map +1 -1
- package/dist/src/data/sources/urlSource.js +101 -61
- package/dist/src/data/transforms/packLegendLabels.d.ts +21 -0
- package/dist/src/data/transforms/packLegendLabels.d.ts.map +1 -0
- package/dist/src/data/transforms/packLegendLabels.js +189 -0
- package/dist/src/data/transforms/transformFactory.d.ts.map +1 -1
- package/dist/src/data/transforms/transformFactory.js +4 -0
- package/dist/src/data/transforms/truncateText.d.ts +27 -0
- package/dist/src/data/transforms/truncateText.d.ts.map +1 -0
- package/dist/src/data/transforms/truncateText.js +94 -0
- package/dist/src/debug/dataflowDebugSnapshot.d.ts +58 -0
- package/dist/src/debug/dataflowDebugSnapshot.d.ts.map +1 -0
- package/dist/src/debug/dataflowDebugSnapshot.js +159 -0
- package/dist/src/debug/markDebugSnapshot.d.ts +54 -0
- package/dist/src/debug/markDebugSnapshot.d.ts.map +1 -0
- package/dist/src/debug/markDebugSnapshot.js +100 -0
- package/dist/src/debug/paramDebugSnapshot.d.ts +53 -0
- package/dist/src/debug/paramDebugSnapshot.d.ts.map +1 -0
- package/dist/src/debug/paramDebugSnapshot.js +86 -0
- package/dist/src/debug/resolutionDebugSnapshot.d.ts +155 -0
- package/dist/src/debug/resolutionDebugSnapshot.d.ts.map +1 -0
- package/dist/src/debug/resolutionDebugSnapshot.js +291 -0
- package/dist/src/debug/valuePreview.d.ts +9 -0
- package/dist/src/debug/valuePreview.d.ts.map +1 -0
- package/dist/src/debug/valuePreview.js +57 -0
- package/dist/src/debug/viewDebugSnapshot.d.ts +131 -0
- package/dist/src/debug/viewDebugSnapshot.d.ts.map +1 -0
- package/dist/src/debug/viewDebugSnapshot.js +390 -0
- package/dist/src/embedFactory.d.ts.map +1 -1
- package/dist/src/embedFactory.js +6 -1
- package/dist/src/encoder/encoder.d.ts +2 -2
- package/dist/src/encoder/encoder.d.ts.map +1 -1
- package/dist/src/encoder/encoder.js +5 -4
- package/dist/src/fonts/bmFontManager.d.ts +1 -1
- package/dist/src/fonts/bmFontManager.d.ts.map +1 -1
- package/dist/src/fonts/bmFontManager.js +45 -10
- package/dist/src/fonts/textMetrics.d.ts +69 -0
- package/dist/src/fonts/textMetrics.d.ts.map +1 -0
- package/dist/src/fonts/textMetrics.js +73 -0
- package/dist/src/genomeSpy/headlessBootstrap.d.ts.map +1 -1
- package/dist/src/genomeSpy/headlessBootstrap.js +6 -0
- package/dist/src/genomeSpy/renderCoordinator.d.ts.map +1 -1
- package/dist/src/genomeSpy/renderCoordinator.js +25 -3
- package/dist/src/genomeSpy/viewDataInit.d.ts +14 -0
- package/dist/src/genomeSpy/viewDataInit.d.ts.map +1 -1
- package/dist/src/genomeSpy/viewDataInit.js +45 -8
- package/dist/src/genomeSpyBase.d.ts +6 -0
- package/dist/src/genomeSpyBase.d.ts.map +1 -1
- package/dist/src/genomeSpyBase.js +20 -3
- package/dist/src/gl/glslScaleGenerator.d.ts +17 -0
- package/dist/src/gl/glslScaleGenerator.d.ts.map +1 -1
- package/dist/src/gl/glslScaleGenerator.js +39 -2
- package/dist/src/gl/includes/common.glsl.js +1 -1
- package/dist/src/gl/vertexRangeIndex.d.ts.map +1 -1
- package/dist/src/gl/vertexRangeIndex.js +4 -2
- package/dist/src/gl/webGLHelper.d.ts +1 -1
- package/dist/src/gl/webGLHelper.d.ts.map +1 -1
- package/dist/src/gl/webGLHelper.js +13 -8
- package/dist/src/marks/__snapshots__/shaderSnapshot.test.js.snap +140 -3
- package/dist/src/marks/mark.d.ts +47 -4
- package/dist/src/marks/mark.d.ts.map +1 -1
- package/dist/src/marks/mark.js +158 -54
- package/dist/src/marks/point.d.ts.map +1 -1
- package/dist/src/marks/point.js +4 -0
- package/dist/src/marks/point.vertex.glsl.js +1 -1
- package/dist/src/marks/text.d.ts +1 -1
- package/dist/src/marks/text.d.ts.map +1 -1
- package/dist/src/marks/text.js +2 -7
- package/dist/src/marks/text.vertex.glsl.js +1 -1
- package/dist/src/paramRuntime/paramUtils.d.ts +43 -9
- package/dist/src/paramRuntime/paramUtils.d.ts.map +1 -1
- package/dist/src/paramRuntime/paramUtils.js +61 -1
- package/dist/src/paramRuntime/viewParamRuntime.d.ts +32 -0
- package/dist/src/paramRuntime/viewParamRuntime.d.ts.map +1 -1
- package/dist/src/paramRuntime/viewParamRuntime.js +63 -0
- package/dist/src/scales/axisResolution.d.ts +35 -0
- package/dist/src/scales/axisResolution.d.ts.map +1 -1
- package/dist/src/scales/axisResolution.js +115 -7
- package/dist/src/scales/legendResolution.d.ts +83 -0
- package/dist/src/scales/legendResolution.d.ts.map +1 -0
- package/dist/src/scales/legendResolution.js +461 -0
- package/dist/src/scales/scaleResolution.d.ts +36 -0
- package/dist/src/scales/scaleResolution.d.ts.map +1 -1
- package/dist/src/scales/scaleResolution.js +59 -0
- package/dist/src/scales/viewLevelGuideConfig.d.ts +53 -0
- package/dist/src/scales/viewLevelGuideConfig.d.ts.map +1 -0
- package/dist/src/scales/viewLevelGuideConfig.js +224 -0
- package/dist/src/scales/viewLevelScaleConfig.d.ts.map +1 -1
- package/dist/src/scales/viewLevelScaleConfig.js +13 -2
- package/dist/src/spec/axis.d.ts +109 -3
- package/dist/src/spec/channel.d.ts +23 -4
- package/dist/src/spec/config.d.ts +59 -4
- package/dist/src/spec/data.d.ts +177 -17
- package/dist/src/spec/legend.d.ts +246 -0
- package/dist/src/spec/mark.d.ts +16 -4
- package/dist/src/spec/title.d.ts +58 -1
- package/dist/src/spec/transform.d.ts +149 -0
- package/dist/src/spec/view.d.ts +39 -6
- package/dist/src/types/embedApi.d.ts +262 -6
- package/dist/src/types/rendering.d.ts +19 -3
- package/dist/src/types/viewContext.d.ts +18 -2
- package/dist/src/utils/arrayUtils.d.ts +11 -0
- package/dist/src/utils/arrayUtils.d.ts.map +1 -1
- package/dist/src/utils/arrayUtils.js +23 -0
- package/dist/src/utils/suspension.d.ts +17 -0
- package/dist/src/utils/suspension.d.ts.map +1 -0
- package/dist/src/utils/suspension.js +41 -0
- package/dist/src/view/axisGridView.d.ts.map +1 -1
- package/dist/src/view/axisGridView.js +1 -4
- package/dist/src/view/axisView.d.ts +18 -2
- package/dist/src/view/axisView.d.ts.map +1 -1
- package/dist/src/view/axisView.js +180 -75
- package/dist/src/view/concatView.d.ts +10 -2
- package/dist/src/view/concatView.d.ts.map +1 -1
- package/dist/src/view/concatView.js +46 -9
- package/dist/src/view/containerMutationHelper.d.ts +20 -1
- package/dist/src/view/containerMutationHelper.d.ts.map +1 -1
- package/dist/src/view/containerMutationHelper.js +196 -33
- package/dist/src/view/facetView.d.ts +1 -1
- package/dist/src/view/gridView/gridChild.d.ts +54 -4
- package/dist/src/view/gridView/gridChild.d.ts.map +1 -1
- package/dist/src/view/gridView/gridChild.js +301 -120
- package/dist/src/view/gridView/gridChildLegends.d.ts +57 -0
- package/dist/src/view/gridView/gridChildLegends.d.ts.map +1 -0
- package/dist/src/view/gridView/gridChildLegends.js +503 -0
- package/dist/src/view/gridView/gridView.d.ts +25 -0
- package/dist/src/view/gridView/gridView.d.ts.map +1 -1
- package/dist/src/view/gridView/gridView.js +490 -78
- package/dist/src/view/gridView/legendLayout.d.ts +30 -0
- package/dist/src/view/gridView/legendLayout.d.ts.map +1 -0
- package/dist/src/view/gridView/legendLayout.js +115 -0
- package/dist/src/view/gridView/scrollbar.d.ts.map +1 -1
- package/dist/src/view/gridView/scrollbar.js +1 -4
- package/dist/src/view/gridView/selectionRect.d.ts.map +1 -1
- package/dist/src/view/gridView/selectionRect.js +1 -4
- package/dist/src/view/gridView/separatorView.d.ts.map +1 -1
- package/dist/src/view/gridView/separatorView.js +1 -4
- package/dist/src/view/layerView.d.ts +9 -2
- package/dist/src/view/layerView.d.ts.map +1 -1
- package/dist/src/view/layerView.js +18 -1
- package/dist/src/view/layout/flexLayout.d.ts +20 -4
- package/dist/src/view/layout/flexLayout.d.ts.map +1 -1
- package/dist/src/view/layout/flexLayout.js +331 -31
- package/dist/src/view/layout/rectangle.d.ts +14 -0
- package/dist/src/view/layout/rectangle.d.ts.map +1 -1
- package/dist/src/view/layout/rectangle.js +40 -0
- package/dist/src/view/legend/legendEntries.d.ts +20 -0
- package/dist/src/view/legend/legendEntries.d.ts.map +1 -0
- package/dist/src/view/legend/legendEntries.js +21 -0
- package/dist/src/view/legendView.d.ts +137 -0
- package/dist/src/view/legendView.d.ts.map +1 -0
- package/dist/src/view/legendView.js +1654 -0
- package/dist/src/view/renderingContext/bufferedViewRenderingContext.d.ts.map +1 -1
- package/dist/src/view/renderingContext/bufferedViewRenderingContext.js +26 -4
- package/dist/src/view/renderingContext/clipOptions.d.ts +44 -0
- package/dist/src/view/renderingContext/clipOptions.d.ts.map +1 -0
- package/dist/src/view/renderingContext/clipOptions.js +140 -0
- package/dist/src/view/renderingContext/simpleViewRenderingContext.d.ts.map +1 -1
- package/dist/src/view/renderingContext/simpleViewRenderingContext.js +12 -1
- package/dist/src/view/resolutionPlanner.d.ts +2 -1
- package/dist/src/view/resolutionPlanner.d.ts.map +1 -1
- package/dist/src/view/resolutionPlanner.js +89 -25
- package/dist/src/view/testUtils.d.ts +4 -2
- package/dist/src/view/testUtils.d.ts.map +1 -1
- package/dist/src/view/testUtils.js +60 -7
- package/dist/src/view/titleView.d.ts +37 -0
- package/dist/src/view/titleView.d.ts.map +1 -0
- package/dist/src/view/titleView.js +584 -0
- package/dist/src/view/unitView.d.ts +3 -3
- package/dist/src/view/unitView.d.ts.map +1 -1
- package/dist/src/view/unitView.js +3 -2
- package/dist/src/view/view.d.ts +25 -24
- package/dist/src/view/view.d.ts.map +1 -1
- package/dist/src/view/view.js +126 -16
- package/dist/src/view/viewChrome.d.ts +33 -0
- package/dist/src/view/viewChrome.d.ts.map +1 -0
- package/dist/src/view/viewChrome.js +64 -0
- package/dist/src/view/viewFactory.d.ts +2 -5
- package/dist/src/view/viewFactory.d.ts.map +1 -1
- package/dist/src/view/viewFactory.js +1 -2
- package/dist/src/view/viewIdentityRegistry.d.ts +37 -0
- package/dist/src/view/viewIdentityRegistry.d.ts.map +1 -0
- package/dist/src/view/viewIdentityRegistry.js +71 -0
- package/dist/src/view/viewMutationAcidTestUtils.d.ts +112 -0
- package/dist/src/view/viewMutationAcidTestUtils.d.ts.map +1 -0
- package/dist/src/view/viewMutationAcidTestUtils.js +234 -0
- package/dist/src/view/viewMutationApi.d.ts +42 -0
- package/dist/src/view/viewMutationApi.d.ts.map +1 -0
- package/dist/src/view/viewMutationApi.js +811 -0
- package/dist/src/view/viewSelectors.d.ts +11 -9
- package/dist/src/view/viewSelectors.d.ts.map +1 -1
- package/dist/src/view/viewSelectors.js +28 -17
- package/package.json +4 -4
- package/dist/bundle/esm-CuMSzCHy.js +0 -298
- package/dist/bundle/esm-DAnOffpD.js +0 -1426
- package/dist/bundle/esm-DMXpJXM4.js +0 -369
- package/dist/bundle/esm-DNtC3H80.js +0 -121
- package/dist/src/view/title.d.ts +0 -13
- package/dist/src/view/title.d.ts.map +0 -1
- package/dist/src/view/title.js +0 -154
- /package/dist/bundle/{AbortablePromiseCache-3gHJdF3E.js → AbortablePromiseCache-BTmAcN-t.js} +0 -0
- /package/dist/bundle/{esm-CuVa5T98.js → esm-VvpZ9hsq.js} +0 -0
- /package/dist/bundle/{chunk-DmhlhrBa.js → rolldown-runtime-Dy4uBu1J.js} +0 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { VISIT_SKIP } from "../view/view.js";
|
|
2
|
+
import { visitNonChromeViews } from "../view/viewSelectors.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @typedef {import("../spec/channel.js").ChannelWithScale} ChannelWithScale
|
|
6
|
+
* @typedef {import("../spec/channel.js").PrimaryPositionalChannel} PrimaryPositionalChannel
|
|
7
|
+
* @typedef {import("../spec/axis.js").Axis & import("../spec/axis.js").GenomeAxis} AxisConfig
|
|
8
|
+
* @typedef {import("../spec/legend.js").Legend} LegendConfig
|
|
9
|
+
* @typedef {import("../view/view.js").default} View
|
|
10
|
+
* @typedef {import("./axisResolution.js").default} AxisResolution
|
|
11
|
+
* @typedef {import("./legendResolution.js").default} LegendResolution
|
|
12
|
+
*
|
|
13
|
+
* @typedef {object} ViewLevelAxisConfigMapping
|
|
14
|
+
* @prop {View} view
|
|
15
|
+
* @prop {PrimaryPositionalChannel} channel
|
|
16
|
+
* @prop {Partial<AxisConfig>} config
|
|
17
|
+
* @prop {AxisResolution | undefined} resolution
|
|
18
|
+
*
|
|
19
|
+
* @typedef {object} ViewLevelLegendConfigMapping
|
|
20
|
+
* @prop {View} view
|
|
21
|
+
* @prop {ChannelWithScale} channel
|
|
22
|
+
* @prop {LegendConfig} config
|
|
23
|
+
* @prop {LegendResolution | undefined} resolution
|
|
24
|
+
*
|
|
25
|
+
* @typedef {object} GuideConfigSpec
|
|
26
|
+
* @prop {"axes" | "legends"} configKey
|
|
27
|
+
* @prop {"axis" | "legend"} resolutionType
|
|
28
|
+
* @prop {(view: View, channel: any) => AxisResolution | LegendResolution | undefined} getResolution
|
|
29
|
+
* @prop {(view: View) => Iterable<AxisResolution | LegendResolution>} getAllResolutions
|
|
30
|
+
* @prop {(resolution: any, view: View, config: any) => void} attach
|
|
31
|
+
* @prop {(resolution: any) => { view: View } | undefined} getAttachedConfig
|
|
32
|
+
* @prop {(resolution: any, view: View) => void} clear
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
/** @type {GuideConfigSpec} */
|
|
36
|
+
const AXIS_GUIDE = {
|
|
37
|
+
configKey: "axes",
|
|
38
|
+
resolutionType: "axis",
|
|
39
|
+
getResolution: (view, channel) => view.getAxisResolution(channel),
|
|
40
|
+
getAllResolutions: (view) => Object.values(view.resolutions.axis),
|
|
41
|
+
attach: (resolution, view, config) =>
|
|
42
|
+
resolution.attachViewLevelAxisConfig(view, config),
|
|
43
|
+
getAttachedConfig: (resolution) => resolution.getViewLevelAxisConfig(),
|
|
44
|
+
clear: (resolution, view) => resolution.clearViewLevelAxisConfig(view),
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
/** @type {GuideConfigSpec} */
|
|
48
|
+
const LEGEND_GUIDE = {
|
|
49
|
+
configKey: "legends",
|
|
50
|
+
resolutionType: "legend",
|
|
51
|
+
getResolution: (view, channel) => view.getLegendResolution(channel),
|
|
52
|
+
getAllResolutions: (view) => Object.values(view.resolutions.legend),
|
|
53
|
+
attach: (resolution, view, config) =>
|
|
54
|
+
resolution.attachViewLevelLegendConfig(view, config),
|
|
55
|
+
getAttachedConfig: (resolution) => resolution.getViewLevelLegendConfig(),
|
|
56
|
+
clear: (resolution, view) => resolution.clearViewLevelLegendConfig(view),
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Maps view-level axis configs and attaches non-pending configs to their
|
|
61
|
+
* target resolutions.
|
|
62
|
+
*
|
|
63
|
+
* @param {View} root
|
|
64
|
+
* @returns {ViewLevelAxisConfigMapping[]}
|
|
65
|
+
*/
|
|
66
|
+
export function attachViewLevelAxisConfigs(root) {
|
|
67
|
+
return /** @type {ViewLevelAxisConfigMapping[]} */ (
|
|
68
|
+
attachViewLevelGuideConfigs(root, AXIS_GUIDE)
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Maps view-level legend configs and attaches non-pending configs to their
|
|
74
|
+
* target resolutions.
|
|
75
|
+
*
|
|
76
|
+
* @param {View} root
|
|
77
|
+
* @returns {ViewLevelLegendConfigMapping[]}
|
|
78
|
+
*/
|
|
79
|
+
export function attachViewLevelLegendConfigs(root) {
|
|
80
|
+
return /** @type {ViewLevelLegendConfigMapping[]} */ (
|
|
81
|
+
attachViewLevelGuideConfigs(root, LEGEND_GUIDE)
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Clears view-level guide configs owned by views in the subtree.
|
|
87
|
+
*
|
|
88
|
+
* @param {View} root
|
|
89
|
+
*/
|
|
90
|
+
export function clearViewLevelGuideConfigs(root) {
|
|
91
|
+
clearViewLevelGuideConfigsOfType(root, AXIS_GUIDE);
|
|
92
|
+
clearViewLevelGuideConfigsOfType(root, LEGEND_GUIDE);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* @param {View} root
|
|
97
|
+
* @param {GuideConfigSpec} guide
|
|
98
|
+
* @returns {Array<ViewLevelAxisConfigMapping | ViewLevelLegendConfigMapping>}
|
|
99
|
+
*/
|
|
100
|
+
function attachViewLevelGuideConfigs(root, guide) {
|
|
101
|
+
clearViewLevelGuideConfigsOfType(root, guide);
|
|
102
|
+
const mappings = mapViewLevelGuideConfigs(root, guide);
|
|
103
|
+
for (const mapping of mappings) {
|
|
104
|
+
if (mapping.resolution) {
|
|
105
|
+
guide.attach(mapping.resolution, mapping.view, mapping.config);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return mappings;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Maps view-level guide configs to the unique guide resolution visible from
|
|
113
|
+
* each configured subtree. Configs with no matching resolution stay pending.
|
|
114
|
+
*
|
|
115
|
+
* @param {View} root
|
|
116
|
+
* @param {GuideConfigSpec} guide
|
|
117
|
+
* @returns {Array<ViewLevelAxisConfigMapping | ViewLevelLegendConfigMapping>}
|
|
118
|
+
*/
|
|
119
|
+
function mapViewLevelGuideConfigs(root, guide) {
|
|
120
|
+
/** @type {Array<ViewLevelAxisConfigMapping | ViewLevelLegendConfigMapping>} */
|
|
121
|
+
const mappings = [];
|
|
122
|
+
|
|
123
|
+
for (const view of root.getDescendants()) {
|
|
124
|
+
const configs = view.spec[guide.configKey];
|
|
125
|
+
if (!configs) {
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
for (const [channel, config] of Object.entries(configs)) {
|
|
130
|
+
mappings.push(
|
|
131
|
+
mapViewLevelGuideConfig(view, guide, channel, config)
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return mappings;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* @param {View} view
|
|
141
|
+
* @param {GuideConfigSpec} guide
|
|
142
|
+
* @param {string} channel
|
|
143
|
+
* @param {unknown} config
|
|
144
|
+
* @returns {ViewLevelAxisConfigMapping | ViewLevelLegendConfigMapping}
|
|
145
|
+
*/
|
|
146
|
+
function mapViewLevelGuideConfig(view, guide, channel, config) {
|
|
147
|
+
const resolutions = collectVisibleGuideResolutions(view, guide, channel);
|
|
148
|
+
|
|
149
|
+
if (resolutions.size > 1) {
|
|
150
|
+
throw new Error(
|
|
151
|
+
`View-level ${guide.configKey}.${channel} maps to multiple ${guide.resolutionType} resolutions. ` +
|
|
152
|
+
`Move ${guide.configKey}.${channel} closer to the intended subtree or configure ${guide.resolutionType} resolution explicitly.`
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
return {
|
|
157
|
+
view,
|
|
158
|
+
channel: /** @type {PrimaryPositionalChannel & ChannelWithScale} */ (
|
|
159
|
+
channel
|
|
160
|
+
),
|
|
161
|
+
config: /** @type {Partial<AxisConfig> & LegendConfig} */ (config),
|
|
162
|
+
resolution: resolutions.values().next().value,
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* @param {View} view
|
|
168
|
+
* @param {GuideConfigSpec} guide
|
|
169
|
+
* @param {string} channel
|
|
170
|
+
* @returns {Set<AxisResolution | LegendResolution>}
|
|
171
|
+
*/
|
|
172
|
+
function collectVisibleGuideResolutions(view, guide, channel) {
|
|
173
|
+
/** @type {Set<AxisResolution | LegendResolution>} */
|
|
174
|
+
const resolutions = new Set();
|
|
175
|
+
visitNonChromeViews(view, (descendant) => {
|
|
176
|
+
if (
|
|
177
|
+
descendant !== view &&
|
|
178
|
+
descendant.getConfiguredOrDefaultResolution(
|
|
179
|
+
/** @type {ChannelWithScale} */ (channel),
|
|
180
|
+
guide.resolutionType
|
|
181
|
+
) === "excluded"
|
|
182
|
+
) {
|
|
183
|
+
return VISIT_SKIP;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
const resolution = guide.getResolution(descendant, channel);
|
|
187
|
+
if (resolution) {
|
|
188
|
+
resolutions.add(resolution);
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
return resolutions;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* @param {View} root
|
|
196
|
+
* @param {GuideConfigSpec} guide
|
|
197
|
+
*/
|
|
198
|
+
function clearViewLevelGuideConfigsOfType(root, guide) {
|
|
199
|
+
const views = new Set(root.getDescendants());
|
|
200
|
+
const resolutions = collectAllGuideResolutions(root, guide);
|
|
201
|
+
|
|
202
|
+
for (const resolution of resolutions) {
|
|
203
|
+
const config = guide.getAttachedConfig(resolution);
|
|
204
|
+
if (config && views.has(config.view)) {
|
|
205
|
+
guide.clear(resolution, config.view);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* @param {View} view
|
|
212
|
+
* @param {GuideConfigSpec} guide
|
|
213
|
+
* @returns {Set<AxisResolution | LegendResolution>}
|
|
214
|
+
*/
|
|
215
|
+
function collectAllGuideResolutions(view, guide) {
|
|
216
|
+
/** @type {Set<AxisResolution | LegendResolution>} */
|
|
217
|
+
const resolutions = new Set();
|
|
218
|
+
for (const descendant of view.getDescendants()) {
|
|
219
|
+
for (const resolution of guide.getAllResolutions(descendant)) {
|
|
220
|
+
resolutions.add(resolution);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
return resolutions;
|
|
224
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewLevelScaleConfig.d.ts","sourceRoot":"","sources":["../../../src/scales/viewLevelScaleConfig.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"viewLevelScaleConfig.d.ts","sourceRoot":"","sources":["../../../src/scales/viewLevelScaleConfig.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;GAWG;AAEH;;;;;;GAMG;AACH,+CAHW,IAAI,GACF,2BAA2B,EAAE,CAwBzC;AAED;;;;;;GAMG;AACH,kDAHW,IAAI,GACF,2BAA2B,EAAE,CAczC;AAED;;;;GAIG;AACH,iDAFW,IAAI,QAYd;+BA/EY,OAAO,oBAAoB,EAAE,gBAAgB;oBAC7C,OAAO,kBAAkB,EAAE,KAAK;mBAChC,OAAO,iBAAiB,EAAE,OAAO;8BACjC,OAAO,sBAAsB,EAAE,OAAO;;UAGzC,IAAI;aACJ,gBAAgB;YAChB,KAAK;gBACL,eAAe,GAAG,SAAS"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { VISIT_SKIP } from "../view/view.js";
|
|
2
|
+
import { visitNonChromeViews } from "../view/viewSelectors.js";
|
|
3
|
+
|
|
1
4
|
/**
|
|
2
5
|
* @typedef {import("../spec/channel.js").ChannelWithScale} ChannelWithScale
|
|
3
6
|
* @typedef {import("../spec/scale.js").Scale} Scale
|
|
@@ -113,12 +116,20 @@ function mapViewLevelScaleConfig(view, channel, config) {
|
|
|
113
116
|
function collectVisibleScaleResolutions(view, channel) {
|
|
114
117
|
/** @type {Set<ScaleResolution>} */
|
|
115
118
|
const resolutions = new Set();
|
|
116
|
-
|
|
119
|
+
visitNonChromeViews(view, (descendant) => {
|
|
120
|
+
if (
|
|
121
|
+
descendant !== view &&
|
|
122
|
+
descendant.getConfiguredOrDefaultResolution(channel, "scale") ===
|
|
123
|
+
"excluded"
|
|
124
|
+
) {
|
|
125
|
+
return VISIT_SKIP;
|
|
126
|
+
}
|
|
127
|
+
|
|
117
128
|
const resolution = descendant.getScaleResolution(channel);
|
|
118
129
|
if (resolution) {
|
|
119
130
|
resolutions.add(resolution);
|
|
120
131
|
}
|
|
121
|
-
}
|
|
132
|
+
});
|
|
122
133
|
return resolutions;
|
|
123
134
|
}
|
|
124
135
|
|
package/dist/src/spec/axis.d.ts
CHANGED
|
@@ -2,20 +2,103 @@ import { Align, Baseline, FontStyle, FontWeight } from "./font.js";
|
|
|
2
2
|
import { ZIndexProps } from "./decoration.js";
|
|
3
3
|
|
|
4
4
|
export interface GenomeAxis extends Axis {
|
|
5
|
+
/**
|
|
6
|
+
* A boolean flag indicating if chromosome boundary ticks should be included as part of the genome axis.
|
|
7
|
+
*
|
|
8
|
+
* __Default value:__ `true`
|
|
9
|
+
*/
|
|
5
10
|
chromTicks?: boolean;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* The size in pixels of chromosome boundary ticks.
|
|
14
|
+
*
|
|
15
|
+
* __Default value:__ `18`
|
|
16
|
+
* @minimum 0
|
|
17
|
+
*/
|
|
6
18
|
chromTickSize?: number;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The width, in pixels, of chromosome boundary ticks.
|
|
22
|
+
*
|
|
23
|
+
* __Default value:__ `1`
|
|
24
|
+
* @minimum 0
|
|
25
|
+
*/
|
|
7
26
|
chromTickWidth?: number;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* The color of chromosome boundary ticks.
|
|
30
|
+
*
|
|
31
|
+
* __Default value:__ `"#989898"`
|
|
32
|
+
*/
|
|
8
33
|
chromTickColor?: string;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* An array of alternating [stroke, space] lengths for dashed chromosome boundary ticks.
|
|
37
|
+
*
|
|
38
|
+
* __Default value:__ `[4, 2]`
|
|
39
|
+
*/
|
|
9
40
|
chromTickDash?: number[];
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* The pixel offset at which to start drawing with the chromosome tick dash array.
|
|
44
|
+
*
|
|
45
|
+
* __Default value:__ `1`
|
|
46
|
+
*/
|
|
10
47
|
chromTickDashOffset?: number;
|
|
11
48
|
|
|
49
|
+
/**
|
|
50
|
+
* A boolean flag indicating if chromosome name labels should be included as part of the genome axis.
|
|
51
|
+
*
|
|
52
|
+
* __Default value:__ `true`
|
|
53
|
+
*/
|
|
12
54
|
chromLabels?: boolean;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* The font of chromosome name labels.
|
|
58
|
+
*/
|
|
13
59
|
chromLabelFont?: string;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Font size of chromosome name labels, in pixels.
|
|
63
|
+
*
|
|
64
|
+
* __Default value:__ `13`
|
|
65
|
+
* @minimum 0
|
|
66
|
+
*/
|
|
14
67
|
chromLabelFontSize?: number;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Font weight of chromosome name labels.
|
|
71
|
+
*
|
|
72
|
+
* __Default value:__ `"normal"`
|
|
73
|
+
*/
|
|
15
74
|
chromLabelFontWeight?: FontWeight;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Font style of chromosome name labels.
|
|
78
|
+
*
|
|
79
|
+
* __Default value:__ `"normal"`
|
|
80
|
+
*/
|
|
16
81
|
chromLabelFontStyle?: FontStyle;
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Text color of chromosome name labels.
|
|
85
|
+
*
|
|
86
|
+
* __Default value:__ `"black"`
|
|
87
|
+
*/
|
|
17
88
|
chromLabelColor?: string;
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* The padding, in pixels, between chromosome boundary ticks and chromosome name labels.
|
|
92
|
+
*
|
|
93
|
+
* __Default value:__ `7`
|
|
94
|
+
*/
|
|
18
95
|
chromLabelPadding?: number;
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Horizontal text alignment of chromosome name labels.
|
|
99
|
+
*
|
|
100
|
+
* __Default value:__ `"left"`
|
|
101
|
+
*/
|
|
19
102
|
chromLabelAlign?: Align;
|
|
20
103
|
// TODO: chromLabelPerpendicularPadding
|
|
21
104
|
|
|
@@ -92,12 +175,15 @@ export interface GenomeAxis extends Axis {
|
|
|
92
175
|
|
|
93
176
|
export type AxisOrient = "top" | "bottom" | "left" | "right";
|
|
94
177
|
|
|
178
|
+
export type AxisPlacement = "outside" | "inside";
|
|
179
|
+
|
|
95
180
|
export interface Axis extends BaseAxis, ZIndexProps {
|
|
96
181
|
/**
|
|
97
182
|
* Named style reference(s) resolved from `config.style`.
|
|
98
|
-
* If an array is provided, later styles override earlier ones.
|
|
183
|
+
* If an array is provided, later styles override earlier ones. Set to
|
|
184
|
+
* `null` to reset inherited axis styles.
|
|
99
185
|
*/
|
|
100
|
-
style?: string | string[];
|
|
186
|
+
style?: string | string[] | null;
|
|
101
187
|
|
|
102
188
|
/**
|
|
103
189
|
* The orientation of the axis. One of `"top"`, `"bottom"`, `"left"` or `"right"`. The orientation can be used to further specialize the axis type (e.g., a y axis oriented for the right edge of the chart).
|
|
@@ -106,6 +192,13 @@ export interface Axis extends BaseAxis, ZIndexProps {
|
|
|
106
192
|
*/
|
|
107
193
|
orient?: AxisOrient;
|
|
108
194
|
|
|
195
|
+
/**
|
|
196
|
+
* Placement of the axis relative to the plotting area. Outside axes reserve layout space outside the plot. Inside axes are mirrored into the plot and do not reserve external layout space.
|
|
197
|
+
*
|
|
198
|
+
* __Default value:__ `"outside"`.
|
|
199
|
+
*/
|
|
200
|
+
placement?: AxisPlacement;
|
|
201
|
+
|
|
109
202
|
/**
|
|
110
203
|
* The format specifier pattern for axis labels.
|
|
111
204
|
* Must be a legal [d3-format](https://github.com/d3/d3-format#locale_format) specifier.
|
|
@@ -113,10 +206,23 @@ export interface Axis extends BaseAxis, ZIndexProps {
|
|
|
113
206
|
format?: string;
|
|
114
207
|
|
|
115
208
|
/**
|
|
116
|
-
* A title for the axis
|
|
209
|
+
* A title for the axis. By default, the title is derived from the encoding title,
|
|
210
|
+
* field, or expression. Set to `null` to remove it.
|
|
117
211
|
*/
|
|
118
212
|
title?: string | null;
|
|
119
213
|
|
|
214
|
+
/**
|
|
215
|
+
* Fitting mode for the axis title. `"point"` anchors the title at the
|
|
216
|
+
* center of the axis without constraining its length. `"range"` constrains
|
|
217
|
+
* the title to the axis span using
|
|
218
|
+
* [ranged text](https://genomespy.app/docs/grammar/mark/text/#ranged-text),
|
|
219
|
+
* allowing it to be squeezed to fit and kept visible inside scrollable
|
|
220
|
+
* viewports.
|
|
221
|
+
*
|
|
222
|
+
* __Default value:__ `"point"`
|
|
223
|
+
*/
|
|
224
|
+
titleFit?: "point" | "range";
|
|
225
|
+
|
|
120
226
|
/**
|
|
121
227
|
* The orthogonal offset in pixels by which to displace the axis from its position along the edge of the chart.
|
|
122
228
|
*/
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
import { ExprRef } from "./parameter.js";
|
|
12
12
|
import { Scale } from "./scale.js";
|
|
13
13
|
import { GenomeAxis } from "./axis.js";
|
|
14
|
+
import { Legend } from "./legend.js";
|
|
14
15
|
|
|
15
16
|
// TODO: Rename Scalar to PrimitiveValue
|
|
16
17
|
export type Scalar = string | number | boolean;
|
|
@@ -42,6 +43,11 @@ export type ChannelWithScale =
|
|
|
42
43
|
| "dx"
|
|
43
44
|
| "dy";
|
|
44
45
|
|
|
46
|
+
export type NonPositionalChannelWithScale = Exclude<
|
|
47
|
+
ChannelWithScale,
|
|
48
|
+
PositionalChannel
|
|
49
|
+
>;
|
|
50
|
+
|
|
45
51
|
export type ChannelWithoutScale =
|
|
46
52
|
| "uniqueId"
|
|
47
53
|
| "search"
|
|
@@ -217,7 +223,8 @@ export interface ExprDef
|
|
|
217
223
|
* Field definition of a mark property, which can contain a legend.
|
|
218
224
|
*/
|
|
219
225
|
export type MarkPropFieldDef<T extends Type = Type> = ScaleFieldDef<T> &
|
|
220
|
-
LegendMixins
|
|
226
|
+
LegendMixins &
|
|
227
|
+
FormatMixins;
|
|
221
228
|
|
|
222
229
|
export type MarkPropExprDef<T extends Type = Type> = ExprDef &
|
|
223
230
|
TypeMixins<T> &
|
|
@@ -237,8 +244,16 @@ export type MarkPropDatumDef<T extends Type> = LegendMixins &
|
|
|
237
244
|
*
|
|
238
245
|
* __See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.
|
|
239
246
|
*/
|
|
240
|
-
|
|
241
|
-
|
|
247
|
+
export interface LegendMixins {
|
|
248
|
+
/**
|
|
249
|
+
* Legend properties for the encoding channel. If `null`, the legend for
|
|
250
|
+
* the channel is removed. If an object is provided, a legend is created
|
|
251
|
+
* even when legends are disabled by default in the config.
|
|
252
|
+
*
|
|
253
|
+
* __Default value:__ If undefined, configured legend defaults are applied.
|
|
254
|
+
*/
|
|
255
|
+
legend?: Legend | null;
|
|
256
|
+
}
|
|
242
257
|
|
|
243
258
|
export type ConditionalTemplate =
|
|
244
259
|
| FieldDef<any>
|
|
@@ -429,7 +444,11 @@ export type ChannelDef = Exclude<
|
|
|
429
444
|
// TODO: Does this make sense?
|
|
430
445
|
export type ChannelDefWithScale = ScaleMixins &
|
|
431
446
|
TypeMixins<Type> &
|
|
432
|
-
DomainContributionMixins
|
|
447
|
+
DomainContributionMixins &
|
|
448
|
+
TitleMixins &
|
|
449
|
+
Partial<FormatMixins> & {
|
|
450
|
+
axis?: GenomeAxis | null;
|
|
451
|
+
};
|
|
433
452
|
|
|
434
453
|
export interface XIndexDef {
|
|
435
454
|
/**
|
|
@@ -11,6 +11,8 @@ import {
|
|
|
11
11
|
import { Scale, SchemeParams } from "./scale.js";
|
|
12
12
|
import { Title } from "./title.js";
|
|
13
13
|
import { ViewBackgroundProps } from "./decoration.js";
|
|
14
|
+
import { LegendConfig } from "./legend.js";
|
|
15
|
+
import { Step } from "./view.js";
|
|
14
16
|
|
|
15
17
|
export type BuiltInThemeName =
|
|
16
18
|
| "genomespy"
|
|
@@ -20,7 +22,44 @@ export type BuiltInThemeName =
|
|
|
20
22
|
| "fivethirtyeight"
|
|
21
23
|
| "urbaninstitute";
|
|
22
24
|
|
|
23
|
-
export
|
|
25
|
+
export interface ViewConfig extends ViewBackgroundProps {
|
|
26
|
+
/**
|
|
27
|
+
* The default width when the view has a continuous x scale.
|
|
28
|
+
*
|
|
29
|
+
* __Default value:__ `"container"`
|
|
30
|
+
*/
|
|
31
|
+
continuousWidth?: number;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* The default width when the view has a discrete x scale or no x scale.
|
|
35
|
+
* This may be a fixed width or a step size for each discrete domain value.
|
|
36
|
+
*
|
|
37
|
+
* __Default value:__ `"container"`
|
|
38
|
+
*/
|
|
39
|
+
discreteWidth?: number | Step;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The default height when the view has a continuous y scale.
|
|
43
|
+
*
|
|
44
|
+
* __Default value:__ `"container"`
|
|
45
|
+
*/
|
|
46
|
+
continuousHeight?: number;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The default height when the view has a discrete y scale or no y scale.
|
|
50
|
+
* This may be a fixed height or a step size for each discrete domain value.
|
|
51
|
+
*
|
|
52
|
+
* __Default value:__ `"container"`
|
|
53
|
+
*/
|
|
54
|
+
discreteHeight?: number | Step;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Default step size for discrete view sizes.
|
|
58
|
+
*
|
|
59
|
+
* __Default value:__ none
|
|
60
|
+
*/
|
|
61
|
+
step?: number;
|
|
62
|
+
}
|
|
24
63
|
|
|
25
64
|
export type MarkConfig = Partial<Omit<MarkPropsBase, "type">>;
|
|
26
65
|
|
|
@@ -137,7 +176,9 @@ type CombinedStyleConfig = MergeProps<
|
|
|
137
176
|
MergeProps<MergeProps<LinkConfig, AxisConfig>, TitleConfig>
|
|
138
177
|
>;
|
|
139
178
|
|
|
140
|
-
export type StyleConfig = Partial<
|
|
179
|
+
export type StyleConfig = Partial<
|
|
180
|
+
MergeProps<CombinedStyleConfig, LegendConfig>
|
|
181
|
+
>;
|
|
141
182
|
|
|
142
183
|
export interface GenomeSpyConfig {
|
|
143
184
|
/**
|
|
@@ -186,6 +227,20 @@ export interface GenomeSpyConfig {
|
|
|
186
227
|
*/
|
|
187
228
|
axis?: AxisConfig;
|
|
188
229
|
|
|
230
|
+
/**
|
|
231
|
+
* Defaults shared by all legends. Set `disable` to `true` to suppress
|
|
232
|
+
* automatic legend creation by default.
|
|
233
|
+
*/
|
|
234
|
+
legend?: LegendConfig;
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* Defaults for legends of track-like views that use `index` or `locus`
|
|
238
|
+
* scales on the x channel.
|
|
239
|
+
*
|
|
240
|
+
* __Default value:__ `{ "style": "track-bottom" }`
|
|
241
|
+
*/
|
|
242
|
+
legendTrack?: LegendConfig;
|
|
243
|
+
|
|
189
244
|
/**
|
|
190
245
|
* Defaults for x axes.
|
|
191
246
|
*/
|
|
@@ -257,8 +312,8 @@ export interface GenomeSpyConfig {
|
|
|
257
312
|
title?: TitleConfig;
|
|
258
313
|
|
|
259
314
|
/**
|
|
260
|
-
* Named reusable style buckets that marks, axes, titles, and
|
|
261
|
-
* reference through their `style` properties.
|
|
315
|
+
* Named reusable style buckets that marks, axes, legends, titles, and
|
|
316
|
+
* views can reference through their `style` properties.
|
|
262
317
|
*/
|
|
263
318
|
style?: Record<string, StyleConfig>;
|
|
264
319
|
}
|