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