@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
package/dist/src/view/view.d.ts
CHANGED
|
@@ -39,13 +39,11 @@ export const VISIT_STOP: "VISIT_STOP";
|
|
|
39
39
|
* @callback InteractionListener
|
|
40
40
|
* @param {import("../utils/interaction.js").default} event
|
|
41
41
|
*/
|
|
42
|
+
/** @typedef {import("../types/viewContext.js").ViewOptions} ViewOptions */
|
|
42
43
|
/**
|
|
43
|
-
* @typedef {object}
|
|
44
|
-
* @prop {boolean}
|
|
45
|
-
*
|
|
46
|
-
* @prop {"own" | "inherit"} [layoutSizeParams]
|
|
47
|
-
* Whether the view should introduce local layout-driven width/height params.
|
|
48
|
-
* Default: "own".
|
|
44
|
+
* @typedef {object} ParentGridChromePolicy
|
|
45
|
+
* @prop {boolean} axes
|
|
46
|
+
* @prop {boolean} background
|
|
49
47
|
*/
|
|
50
48
|
/**
|
|
51
49
|
* @template {import("../spec/view.js").ViewSpec} [TSpec=import("../spec/view.js").ViewSpec]
|
|
@@ -89,17 +87,16 @@ export default class View<TSpec extends import("../spec/view.js").ViewSpec = imp
|
|
|
89
87
|
* @type {Partial<Record<import("../spec/channel.js").PrimaryPositionalChannel, import("../scales/axisResolution.js").default>>}
|
|
90
88
|
*/
|
|
91
89
|
axis: Partial<Record<import("../spec/channel.js").PrimaryPositionalChannel, import("../scales/axisResolution.js").default>>;
|
|
92
|
-
};
|
|
93
|
-
options: {
|
|
94
|
-
/**
|
|
95
|
-
* Don't inherit encodings from parent. Default: false.
|
|
96
|
-
*/
|
|
97
|
-
blockEncodingInheritance: boolean;
|
|
98
90
|
/**
|
|
99
|
-
*
|
|
100
|
-
*
|
|
91
|
+
* Channel-specific legend resolutions.
|
|
92
|
+
* @type {Partial<Record<import("../spec/channel.js").ChannelWithScale, import("../scales/legendResolution.js").default>>}
|
|
101
93
|
*/
|
|
94
|
+
legend: Partial<Record<import("../spec/channel.js").ChannelWithScale, import("../scales/legendResolution.js").default>>;
|
|
95
|
+
};
|
|
96
|
+
options: {
|
|
97
|
+
inheritEncoding: boolean;
|
|
102
98
|
layoutSizeParams: string;
|
|
99
|
+
axisLabelClipPolicy?: Partial<Record<import("../spec/channel.js").PrimaryPositionalChannel, import("./axisView.js").AxisLabelClipPolicy>>;
|
|
103
100
|
};
|
|
104
101
|
/**
|
|
105
102
|
* @type {import("../data/flowHandle.js").FlowHandle | undefined}
|
|
@@ -336,6 +333,12 @@ export default class View<TSpec extends import("../spec/view.js").ViewSpec = imp
|
|
|
336
333
|
* @return {WebGLTexture}
|
|
337
334
|
*/
|
|
338
335
|
getSampleFacetTexture(): WebGLTexture;
|
|
336
|
+
/**
|
|
337
|
+
* Controls which decorations the parent GridView draws around this view.
|
|
338
|
+
*
|
|
339
|
+
* @returns {ParentGridChromePolicy}
|
|
340
|
+
*/
|
|
341
|
+
getParentGridChromePolicy(): ParentGridChromePolicy;
|
|
339
342
|
/**
|
|
340
343
|
* @param {import("../spec/channel.js").ChannelWithScale} channel
|
|
341
344
|
*/
|
|
@@ -344,6 +347,10 @@ export default class View<TSpec extends import("../spec/view.js").ViewSpec = imp
|
|
|
344
347
|
* @param {import("../spec/channel.js").PositionalChannel} channel
|
|
345
348
|
*/
|
|
346
349
|
getAxisResolution(channel: import("../spec/channel.js").PositionalChannel): import("../scales/axisResolution.js").default;
|
|
350
|
+
/**
|
|
351
|
+
* @param {import("../spec/channel.js").ChannelWithScale} channel
|
|
352
|
+
*/
|
|
353
|
+
getLegendResolution(channel: import("../spec/channel.js").ChannelWithScale): import("../scales/legendResolution.js").default;
|
|
347
354
|
/**
|
|
348
355
|
* @param {import("../spec/channel.js").Channel | "default"} channel
|
|
349
356
|
* @param {import("../spec/view.js").ResolutionTarget} resolutionType
|
|
@@ -431,16 +438,10 @@ export type BroadcastMessage = {
|
|
|
431
438
|
* same view.
|
|
432
439
|
*/
|
|
433
440
|
export type InteractionListener = (event: import("../utils/interaction.js").default) => any;
|
|
434
|
-
export type ViewOptions =
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
blockEncodingInheritance?: boolean;
|
|
439
|
-
/**
|
|
440
|
-
* Whether the view should introduce local layout-driven width/height params.
|
|
441
|
-
* Default: "own".
|
|
442
|
-
*/
|
|
443
|
-
layoutSizeParams?: "own" | "inherit";
|
|
441
|
+
export type ViewOptions = import("../types/viewContext.js").ViewOptions;
|
|
442
|
+
export type ParentGridChromePolicy = {
|
|
443
|
+
axes: boolean;
|
|
444
|
+
background: boolean;
|
|
444
445
|
};
|
|
445
446
|
import ViewParamRuntime from "../paramRuntime/viewParamRuntime.js";
|
|
446
447
|
import Padding from "./layout/padding.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../src/view/view.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../src/view/view.js"],"names":[],"mappings":"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"}
|
package/dist/src/view/view.js
CHANGED
|
@@ -21,6 +21,11 @@ import { isExprRef } from "../paramRuntime/paramUtils.js";
|
|
|
21
21
|
import { InternMap } from "internmap";
|
|
22
22
|
import { endWithSlash } from "../utils/addBaseUrl.js";
|
|
23
23
|
import { mergeConfigScopes } from "../config/mergeConfig.js";
|
|
24
|
+
import {
|
|
25
|
+
clipCoords,
|
|
26
|
+
normalizeClipOptions,
|
|
27
|
+
} from "./renderingContext/clipOptions.js";
|
|
28
|
+
import { isInChromeSubtree } from "./viewChrome.js";
|
|
24
29
|
|
|
25
30
|
// TODO: View classes have too many responsibilities. Come up with a way
|
|
26
31
|
// to separate the concerns. However, most concerns are tightly tied to
|
|
@@ -74,14 +79,14 @@ const defaultOpacityFunction = (parentOpacity) => parentOpacity;
|
|
|
74
79
|
* @param {import("../utils/interaction.js").default} event
|
|
75
80
|
*/
|
|
76
81
|
|
|
82
|
+
/** @typedef {import("../types/viewContext.js").ViewOptions} ViewOptions */
|
|
83
|
+
|
|
77
84
|
/**
|
|
78
|
-
* @typedef {object}
|
|
79
|
-
* @prop {boolean}
|
|
80
|
-
*
|
|
81
|
-
* @prop {"own" | "inherit"} [layoutSizeParams]
|
|
82
|
-
* Whether the view should introduce local layout-driven width/height params.
|
|
83
|
-
* Default: "own".
|
|
85
|
+
* @typedef {object} ParentGridChromePolicy
|
|
86
|
+
* @prop {boolean} axes
|
|
87
|
+
* @prop {boolean} background
|
|
84
88
|
*/
|
|
89
|
+
|
|
85
90
|
/**
|
|
86
91
|
* @template {import("../spec/view.js").ViewSpec} [TSpec=import("../spec/view.js").ViewSpec]
|
|
87
92
|
*/
|
|
@@ -185,12 +190,17 @@ export default class View {
|
|
|
185
190
|
* @type {Partial<Record<import("../spec/channel.js").PrimaryPositionalChannel, import("../scales/axisResolution.js").default>>}
|
|
186
191
|
*/
|
|
187
192
|
axis: {},
|
|
193
|
+
/**
|
|
194
|
+
* Channel-specific legend resolutions.
|
|
195
|
+
* @type {Partial<Record<import("../spec/channel.js").ChannelWithScale, import("../scales/legendResolution.js").default>>}
|
|
196
|
+
*/
|
|
197
|
+
legend: {},
|
|
188
198
|
};
|
|
189
199
|
|
|
190
200
|
initPropertyCache(this);
|
|
191
201
|
|
|
192
202
|
this.options = {
|
|
193
|
-
|
|
203
|
+
inheritEncoding: false,
|
|
194
204
|
layoutSizeParams: "own",
|
|
195
205
|
...options,
|
|
196
206
|
};
|
|
@@ -235,7 +245,8 @@ export default class View {
|
|
|
235
245
|
#createLayoutSizeSetter(name) {
|
|
236
246
|
if (
|
|
237
247
|
this.paramRuntime.hasLocalParam(name) ||
|
|
238
|
-
this.
|
|
248
|
+
(this.options.layoutSizeParams != "force" &&
|
|
249
|
+
this.paramRuntime.hasConfiguredParamInScopeChain(name))
|
|
239
250
|
) {
|
|
240
251
|
return undefined;
|
|
241
252
|
}
|
|
@@ -383,7 +394,7 @@ export default class View {
|
|
|
383
394
|
* @return {import("./layout/flexLayout.js").SizeDef}
|
|
384
395
|
*/
|
|
385
396
|
#getDimensionSize(dimension) {
|
|
386
|
-
|
|
397
|
+
const { value, implicit } = this.#getDimensionValue(dimension);
|
|
387
398
|
const needsStepInvalidation = isStepSize(value);
|
|
388
399
|
|
|
389
400
|
const viewport =
|
|
@@ -431,6 +442,10 @@ export default class View {
|
|
|
431
442
|
);
|
|
432
443
|
|
|
433
444
|
return { px: steps * stepSize, grow: 0 };
|
|
445
|
+
} else if (implicit) {
|
|
446
|
+
// Vega-Lite treats a missing positional channel as one
|
|
447
|
+
// discrete step. Keep explicit step sizes strict.
|
|
448
|
+
return { px: stepSize, grow: 0 };
|
|
434
449
|
} else {
|
|
435
450
|
throw new ViewError(
|
|
436
451
|
`Cannot use step-based size with "${dimension}"!`,
|
|
@@ -445,6 +460,63 @@ export default class View {
|
|
|
445
460
|
}
|
|
446
461
|
}
|
|
447
462
|
|
|
463
|
+
/**
|
|
464
|
+
* @param {"width" | "height" | "viewportWidth" | "viewportHeight"} dimension
|
|
465
|
+
* @returns {{ value: "container" | number | import("../spec/view.js").SizeDef | import("../spec/view.js").Step | undefined, implicit: boolean }}
|
|
466
|
+
*/
|
|
467
|
+
#getDimensionValue(dimension) {
|
|
468
|
+
const value = this.spec[dimension];
|
|
469
|
+
if (value != null) {
|
|
470
|
+
return { value, implicit: false };
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
const viewport =
|
|
474
|
+
dimension == "viewportWidth" || dimension == "viewportHeight";
|
|
475
|
+
if (viewport) {
|
|
476
|
+
return { value, implicit: false };
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
return {
|
|
480
|
+
value: this.#getConfiguredDefaultSize(
|
|
481
|
+
/** @type {"width" | "height"} */ (dimension)
|
|
482
|
+
),
|
|
483
|
+
implicit: true,
|
|
484
|
+
};
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
/**
|
|
488
|
+
* @param {"width" | "height"} dimension
|
|
489
|
+
* @returns {number | import("../spec/view.js").Step | undefined}
|
|
490
|
+
*/
|
|
491
|
+
#getConfiguredDefaultSize(dimension) {
|
|
492
|
+
if (isInChromeSubtree(this)) {
|
|
493
|
+
return undefined;
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
const viewConfig = this.getConfig().view;
|
|
497
|
+
if (!viewConfig) {
|
|
498
|
+
return undefined;
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
const channel = dimension == "width" ? "x" : "y";
|
|
502
|
+
const scaleType =
|
|
503
|
+
this.getScaleResolution(channel)?.getResolvedScaleType();
|
|
504
|
+
if (scaleType && !isDiscrete(scaleType)) {
|
|
505
|
+
return dimension == "width"
|
|
506
|
+
? viewConfig.continuousWidth
|
|
507
|
+
: viewConfig.continuousHeight;
|
|
508
|
+
} else {
|
|
509
|
+
return (
|
|
510
|
+
(dimension == "width"
|
|
511
|
+
? viewConfig.discreteWidth
|
|
512
|
+
: viewConfig.discreteHeight) ??
|
|
513
|
+
(viewConfig.step !== undefined
|
|
514
|
+
? { step: viewConfig.step }
|
|
515
|
+
: undefined)
|
|
516
|
+
);
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
|
|
448
520
|
registerStepSizeInvalidation() {
|
|
449
521
|
this.#registerStepSizeInvalidationFor("width", "x");
|
|
450
522
|
this.#registerStepSizeInvalidationFor("height", "y");
|
|
@@ -455,13 +527,17 @@ export default class View {
|
|
|
455
527
|
* @param {import("../spec/channel.js").PrimaryPositionalChannel} channel
|
|
456
528
|
*/
|
|
457
529
|
#registerStepSizeInvalidationFor(dimension, channel) {
|
|
458
|
-
const value = this
|
|
530
|
+
const { value, implicit } = this.#getDimensionValue(dimension);
|
|
459
531
|
if (!isStepSize(value)) {
|
|
460
532
|
return;
|
|
461
533
|
}
|
|
462
534
|
|
|
463
535
|
const resolution = this.getScaleResolution(channel);
|
|
464
536
|
if (!resolution) {
|
|
537
|
+
if (implicit) {
|
|
538
|
+
return;
|
|
539
|
+
}
|
|
540
|
+
|
|
465
541
|
throw new ViewError(
|
|
466
542
|
"Cannot use 'step' size without a scale!",
|
|
467
543
|
this
|
|
@@ -820,7 +896,7 @@ export default class View {
|
|
|
820
896
|
}
|
|
821
897
|
this.facetCoords.set(
|
|
822
898
|
options.facetId,
|
|
823
|
-
|
|
899
|
+
clipCoords(coords, normalizeClipOptions(options))
|
|
824
900
|
);
|
|
825
901
|
|
|
826
902
|
this.#widthSetter?.(coords.width);
|
|
@@ -838,7 +914,7 @@ export default class View {
|
|
|
838
914
|
*/
|
|
839
915
|
getEncoding() {
|
|
840
916
|
const pe =
|
|
841
|
-
this.dataParent &&
|
|
917
|
+
this.dataParent && this.options.inheritEncoding
|
|
842
918
|
? this.dataParent.getEncoding()
|
|
843
919
|
: {};
|
|
844
920
|
const te = this.spec.encoding || {};
|
|
@@ -880,6 +956,8 @@ export default class View {
|
|
|
880
956
|
const sampleFieldDef = this.getEncoding().sample;
|
|
881
957
|
if (isFieldDef(sampleFieldDef)) {
|
|
882
958
|
return [sampleFieldDef.field];
|
|
959
|
+
} else if (!this.options.inheritEncoding) {
|
|
960
|
+
return [];
|
|
883
961
|
} else {
|
|
884
962
|
return this.layoutParent?.getFacetFields(this);
|
|
885
963
|
}
|
|
@@ -905,6 +983,18 @@ export default class View {
|
|
|
905
983
|
return undefined;
|
|
906
984
|
}
|
|
907
985
|
|
|
986
|
+
/**
|
|
987
|
+
* Controls which decorations the parent GridView draws around this view.
|
|
988
|
+
*
|
|
989
|
+
* @returns {ParentGridChromePolicy}
|
|
990
|
+
*/
|
|
991
|
+
getParentGridChromePolicy() {
|
|
992
|
+
return {
|
|
993
|
+
axes: true,
|
|
994
|
+
background: true,
|
|
995
|
+
};
|
|
996
|
+
}
|
|
997
|
+
|
|
908
998
|
/**
|
|
909
999
|
* @param {import("../spec/channel.js").ChannelWithScale} channel
|
|
910
1000
|
*/
|
|
@@ -933,6 +1023,20 @@ export default class View {
|
|
|
933
1023
|
.find((resolution) => resolution);
|
|
934
1024
|
}
|
|
935
1025
|
|
|
1026
|
+
/**
|
|
1027
|
+
* @param {import("../spec/channel.js").ChannelWithScale} channel
|
|
1028
|
+
*/
|
|
1029
|
+
getLegendResolution(channel) {
|
|
1030
|
+
const primaryChannel =
|
|
1031
|
+
/** @type {import("../spec/channel.js").ChannelWithScale} */ (
|
|
1032
|
+
getPrimaryChannel(channel)
|
|
1033
|
+
);
|
|
1034
|
+
|
|
1035
|
+
return this.getDataAncestors()
|
|
1036
|
+
.map((view) => view.resolutions.legend[primaryChannel])
|
|
1037
|
+
.find((resolution) => resolution);
|
|
1038
|
+
}
|
|
1039
|
+
|
|
936
1040
|
/**
|
|
937
1041
|
* @param {import("../spec/channel.js").Channel | "default"} channel
|
|
938
1042
|
* @param {import("../spec/view.js").ResolutionTarget} resolutionType
|
|
@@ -948,11 +1052,17 @@ export default class View {
|
|
|
948
1052
|
* @returns {import("../spec/view.js").ResolutionBehavior}
|
|
949
1053
|
*/
|
|
950
1054
|
getConfiguredOrDefaultResolution(channel, resolutionType) {
|
|
951
|
-
|
|
1055
|
+
const configuredResolution =
|
|
952
1056
|
this.getConfiguredResolution(channel, resolutionType) ??
|
|
953
|
-
this.getConfiguredResolution("default", resolutionType)
|
|
954
|
-
|
|
955
|
-
)
|
|
1057
|
+
this.getConfiguredResolution("default", resolutionType);
|
|
1058
|
+
|
|
1059
|
+
if (configuredResolution) {
|
|
1060
|
+
return configuredResolution;
|
|
1061
|
+
} else if (resolutionType == "legend") {
|
|
1062
|
+
return this.getConfiguredOrDefaultResolution(channel, "scale");
|
|
1063
|
+
} else {
|
|
1064
|
+
return this.getDefaultResolution(channel, resolutionType);
|
|
1065
|
+
}
|
|
956
1066
|
}
|
|
957
1067
|
|
|
958
1068
|
/**
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {import("./view.js").default} view
|
|
3
|
+
* @param {ChromeOverride} behavior
|
|
4
|
+
*/
|
|
5
|
+
export function setChromeOverride(view: import("./view.js").default, behavior: ChromeOverride): void;
|
|
6
|
+
/**
|
|
7
|
+
* @param {import("./view.js").default} view
|
|
8
|
+
* @returns {ChromeOverride | undefined}
|
|
9
|
+
*/
|
|
10
|
+
export function getChromeOverride(view: import("./view.js").default): ChromeOverride | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* Returns whether a view itself has been marked as decorative chrome.
|
|
13
|
+
*
|
|
14
|
+
* @param {import("./view.js").default} view
|
|
15
|
+
* @returns {boolean}
|
|
16
|
+
*/
|
|
17
|
+
export function isChromeView(view: import("./view.js").default): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Returns whether a view is inside a chrome subtree in the layout hierarchy.
|
|
20
|
+
*
|
|
21
|
+
* @param {import("./view.js").default} view
|
|
22
|
+
* @returns {boolean}
|
|
23
|
+
*/
|
|
24
|
+
export function isInChromeSubtree(view: import("./view.js").default): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Tracks views that are decorative chrome instead of user-authored plot views.
|
|
27
|
+
*
|
|
28
|
+
* Chrome views may still need inherited data, scales, or parameters, but they
|
|
29
|
+
* should not participate in plot-oriented defaults such as configured
|
|
30
|
+
* continuous view sizes.
|
|
31
|
+
*/
|
|
32
|
+
export type ChromeOverride = "exclude" | "excludeSubtree";
|
|
33
|
+
//# sourceMappingURL=viewChrome.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewChrome.d.ts","sourceRoot":"","sources":["../../../src/view/viewChrome.js"],"names":[],"mappings":"AAaA;;;GAGG;AACH,wCAHW,OAAO,WAAW,EAAE,OAAO,YAC3B,cAAc,QAIxB;AAED;;;GAGG;AACH,wCAHW,OAAO,WAAW,EAAE,OAAO,GACzB,cAAc,GAAG,SAAS,CAItC;AAED;;;;;GAKG;AACH,mCAHW,OAAO,WAAW,EAAE,OAAO,GACzB,OAAO,CAInB;AAED;;;;;GAKG;AACH,wCAHW,OAAO,WAAW,EAAE,OAAO,GACzB,OAAO,CAoBnB;;;;;;;;6BAxDY,SAAS,GAAG,gBAAgB"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tracks views that are decorative chrome instead of user-authored plot views.
|
|
3
|
+
*
|
|
4
|
+
* Chrome views may still need inherited data, scales, or parameters, but they
|
|
5
|
+
* should not participate in plot-oriented defaults such as configured
|
|
6
|
+
* continuous view sizes.
|
|
7
|
+
*
|
|
8
|
+
* @typedef {"exclude" | "excludeSubtree"} ChromeOverride
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/** @type {WeakMap<import("./view.js").default, ChromeOverride>} */
|
|
12
|
+
const chromeOverrides = new WeakMap();
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @param {import("./view.js").default} view
|
|
16
|
+
* @param {ChromeOverride} behavior
|
|
17
|
+
*/
|
|
18
|
+
export function setChromeOverride(view, behavior) {
|
|
19
|
+
chromeOverrides.set(view, behavior);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @param {import("./view.js").default} view
|
|
24
|
+
* @returns {ChromeOverride | undefined}
|
|
25
|
+
*/
|
|
26
|
+
export function getChromeOverride(view) {
|
|
27
|
+
return chromeOverrides.get(view);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Returns whether a view itself has been marked as decorative chrome.
|
|
32
|
+
*
|
|
33
|
+
* @param {import("./view.js").default} view
|
|
34
|
+
* @returns {boolean}
|
|
35
|
+
*/
|
|
36
|
+
export function isChromeView(view) {
|
|
37
|
+
return chromeOverrides.has(view);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Returns whether a view is inside a chrome subtree in the layout hierarchy.
|
|
42
|
+
*
|
|
43
|
+
* @param {import("./view.js").default} view
|
|
44
|
+
* @returns {boolean}
|
|
45
|
+
*/
|
|
46
|
+
export function isInChromeSubtree(view) {
|
|
47
|
+
/** @type {import("./view.js").default | null} */
|
|
48
|
+
let current = view;
|
|
49
|
+
|
|
50
|
+
while (current) {
|
|
51
|
+
const behavior = chromeOverrides.get(current);
|
|
52
|
+
if (behavior === "excludeSubtree") {
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (current === view && behavior === "exclude") {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
current = current.layoutParent;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
@@ -4,8 +4,7 @@ export const VIEW_ROOT_NAME: "viewRoot";
|
|
|
4
4
|
* @property {boolean} [allowImport] allows imports from urls
|
|
5
5
|
* @property {boolean} [wrapRoot]
|
|
6
6
|
*
|
|
7
|
-
* @typedef {
|
|
8
|
-
* @property {"own" | "inherit"} [layoutSizeParams]
|
|
7
|
+
* @typedef {import("../types/viewContext.js").CreateViewOptions} CreateViewOptions
|
|
9
8
|
*/
|
|
10
9
|
/**
|
|
11
10
|
*
|
|
@@ -59,9 +58,7 @@ export type ViewFactoryOptions = {
|
|
|
59
58
|
allowImport?: boolean;
|
|
60
59
|
wrapRoot?: boolean;
|
|
61
60
|
};
|
|
62
|
-
export type CreateViewOptions =
|
|
63
|
-
layoutSizeParams?: "own" | "inherit";
|
|
64
|
-
};
|
|
61
|
+
export type CreateViewOptions = import("../types/viewContext.js").CreateViewOptions;
|
|
65
62
|
import View from "./view.js";
|
|
66
63
|
export { isConcatSpec, isFacetSpec, isHConcatSpec, isImportSpec, isLayerSpec, isUnitSpec, isVConcatSpec } from "./viewSpecGuards.js";
|
|
67
64
|
//# sourceMappingURL=viewFactory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewFactory.d.ts","sourceRoot":"","sources":["../../../src/view/viewFactory.js"],"names":[],"mappings":"AA2BA,6BAA8B,UAAU,CAAC;AAEzC
|
|
1
|
+
{"version":3,"file":"viewFactory.d.ts","sourceRoot":"","sources":["../../../src/view/viewFactory.js"],"names":[],"mappings":"AA2BA,6BAA8B,UAAU,CAAC;AAEzC;;;;;;GAMG;AAEH;;GAEG;AACH;IAiBI;;OAEG;IACH,sBAFW,kBAAkB,EAoE5B;IAjEG,2CAA2C;IAC3C,SADW,QAAQ,CAAC,kBAAkB,CAAC,CAKtC;IA8DL;;;OAGG;IACH,qEAlFiC,OAAO,yHAC2B,OAAO,oBAAoB,EAAE,OAAO,eAAe,OAAO,WAAW,EAAE,OAAO,gBAAgB,MAAM,YAAY,iBAAiB,KAAK,IAAI,QAmF5M;IAED;;;;;;;OAOG;IACH,wHALW,OAAO,oBAAoB,EAAE,OAAO,eACpC,OAAO,WAAW,EAAE,OAAO,gBAC3B,MAAM,YACN,iBAAiB,4CA0B3B;IAED;;;;OAIG;IACH,sDAFa,IAAI,sCAAY,CAU5B;IAED;;;;;;;;;;;OAWG;IACH,yBARW,qCAAW,OAAO,iBAAiB,EAAE,UAAU,qEAE/C,OAAO,oBAAoB,EAAE,OAAO,eACpC,OAAO,WAAW,EAAE,OAAO,gBAC3B,MAAM,cACN,CAAC,IAAI,oCAAU,KAAK,IAAI,YACxB,iBAAiB,qDAqG3B;;CACJ;;;;;kBA1Qa,OAAO;eACP,OAAO;;gCAER,OAAO,yBAAyB,EAAE,iBAAiB;iBAjC/C,WAAW"}
|
|
@@ -32,8 +32,7 @@ export const VIEW_ROOT_NAME = "viewRoot";
|
|
|
32
32
|
* @property {boolean} [allowImport] allows imports from urls
|
|
33
33
|
* @property {boolean} [wrapRoot]
|
|
34
34
|
*
|
|
35
|
-
* @typedef {
|
|
36
|
-
* @property {"own" | "inherit"} [layoutSizeParams]
|
|
35
|
+
* @typedef {import("../types/viewContext.js").CreateViewOptions} CreateViewOptions
|
|
37
36
|
*/
|
|
38
37
|
|
|
39
38
|
/**
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns the shared runtime identity registry for a view hierarchy.
|
|
3
|
+
*
|
|
4
|
+
* The registry is keyed by the root view instead of being global because view
|
|
5
|
+
* ids are only meaningful inside one embedded GenomeSpy runtime. This keeps
|
|
6
|
+
* independent embeds isolated while still allowing optional tools, such as the
|
|
7
|
+
* inspector and the public view API, to agree on ids for the same live views.
|
|
8
|
+
*
|
|
9
|
+
* The WeakMap avoids adding debug-only fields to View instances and lets the
|
|
10
|
+
* registry disappear when the root hierarchy is released.
|
|
11
|
+
*
|
|
12
|
+
* @param {View} root
|
|
13
|
+
* @returns {ViewIdentityRegistry}
|
|
14
|
+
*/
|
|
15
|
+
export function getViewIdentityRegistry(root: View): ViewIdentityRegistry;
|
|
16
|
+
/**
|
|
17
|
+
* Allocates runtime-stable ids for View object identities.
|
|
18
|
+
*
|
|
19
|
+
* Ids are intentionally synthetic. They are stable for the lifetime of the
|
|
20
|
+
* root view hierarchy, but they are not persisted and must not be used as
|
|
21
|
+
* bookmarks across reloads.
|
|
22
|
+
*/
|
|
23
|
+
export class ViewIdentityRegistry {
|
|
24
|
+
/**
|
|
25
|
+
* @param {View} view
|
|
26
|
+
* @returns {string}
|
|
27
|
+
*/
|
|
28
|
+
getId(view: View): string;
|
|
29
|
+
/**
|
|
30
|
+
* @param {string} id
|
|
31
|
+
* @returns {View | undefined}
|
|
32
|
+
*/
|
|
33
|
+
getView(id: string): View | undefined;
|
|
34
|
+
#private;
|
|
35
|
+
}
|
|
36
|
+
export type View = import("./view.js").default;
|
|
37
|
+
//# sourceMappingURL=viewIdentityRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewIdentityRegistry.d.ts","sourceRoot":"","sources":["../../../src/view/viewIdentityRegistry.js"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;GAaG;AACH,8CAHW,IAAI,GACF,oBAAoB,CAUhC;AAED;;;;;;GAMG;AACH;IASI;;;OAGG;IACH,YAHW,IAAI,GACF,MAAM,CAYlB;IAED;;;OAGG;IACH,YAHW,MAAM,GACJ,IAAI,GAAG,SAAS,CAI5B;;CACJ;mBArEY,OAAO,WAAW,EAAE,OAAO"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {import("./view.js").default} View
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/** @type {WeakMap<View, ViewIdentityRegistry>} */
|
|
6
|
+
const registriesByRoot = new WeakMap();
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Returns the shared runtime identity registry for a view hierarchy.
|
|
10
|
+
*
|
|
11
|
+
* The registry is keyed by the root view instead of being global because view
|
|
12
|
+
* ids are only meaningful inside one embedded GenomeSpy runtime. This keeps
|
|
13
|
+
* independent embeds isolated while still allowing optional tools, such as the
|
|
14
|
+
* inspector and the public view API, to agree on ids for the same live views.
|
|
15
|
+
*
|
|
16
|
+
* The WeakMap avoids adding debug-only fields to View instances and lets the
|
|
17
|
+
* registry disappear when the root hierarchy is released.
|
|
18
|
+
*
|
|
19
|
+
* @param {View} root
|
|
20
|
+
* @returns {ViewIdentityRegistry}
|
|
21
|
+
*/
|
|
22
|
+
export function getViewIdentityRegistry(root) {
|
|
23
|
+
let registry = registriesByRoot.get(root);
|
|
24
|
+
if (!registry) {
|
|
25
|
+
registry = new ViewIdentityRegistry();
|
|
26
|
+
registriesByRoot.set(root, registry);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return registry;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Allocates runtime-stable ids for View object identities.
|
|
34
|
+
*
|
|
35
|
+
* Ids are intentionally synthetic. They are stable for the lifetime of the
|
|
36
|
+
* root view hierarchy, but they are not persisted and must not be used as
|
|
37
|
+
* bookmarks across reloads.
|
|
38
|
+
*/
|
|
39
|
+
export class ViewIdentityRegistry {
|
|
40
|
+
/** @type {WeakMap<View, string>} */
|
|
41
|
+
#idsByView = new WeakMap();
|
|
42
|
+
|
|
43
|
+
/** @type {Map<string, View>} */
|
|
44
|
+
#viewsById = new Map();
|
|
45
|
+
|
|
46
|
+
#nextId = 0;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* @param {View} view
|
|
50
|
+
* @returns {string}
|
|
51
|
+
*/
|
|
52
|
+
getId(view) {
|
|
53
|
+
let id = this.#idsByView.get(view);
|
|
54
|
+
if (!id) {
|
|
55
|
+
id = "view-" + String(this.#nextId);
|
|
56
|
+
this.#nextId++;
|
|
57
|
+
this.#idsByView.set(view, id);
|
|
58
|
+
this.#viewsById.set(id, view);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return id;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* @param {string} id
|
|
66
|
+
* @returns {View | undefined}
|
|
67
|
+
*/
|
|
68
|
+
getView(id) {
|
|
69
|
+
return this.#viewsById.get(id);
|
|
70
|
+
}
|
|
71
|
+
}
|