@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
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,10 @@ 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";
|
|
24
28
|
|
|
25
29
|
// TODO: View classes have too many responsibilities. Come up with a way
|
|
26
30
|
// to separate the concerns. However, most concerns are tightly tied to
|
|
@@ -74,14 +78,14 @@ const defaultOpacityFunction = (parentOpacity) => parentOpacity;
|
|
|
74
78
|
* @param {import("../utils/interaction.js").default} event
|
|
75
79
|
*/
|
|
76
80
|
|
|
81
|
+
/** @typedef {import("../types/viewContext.js").ViewOptions} ViewOptions */
|
|
82
|
+
|
|
77
83
|
/**
|
|
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".
|
|
84
|
+
* @typedef {object} ParentGridChromePolicy
|
|
85
|
+
* @prop {boolean} axes
|
|
86
|
+
* @prop {boolean} background
|
|
84
87
|
*/
|
|
88
|
+
|
|
85
89
|
/**
|
|
86
90
|
* @template {import("../spec/view.js").ViewSpec} [TSpec=import("../spec/view.js").ViewSpec]
|
|
87
91
|
*/
|
|
@@ -185,12 +189,17 @@ export default class View {
|
|
|
185
189
|
* @type {Partial<Record<import("../spec/channel.js").PrimaryPositionalChannel, import("../scales/axisResolution.js").default>>}
|
|
186
190
|
*/
|
|
187
191
|
axis: {},
|
|
192
|
+
/**
|
|
193
|
+
* Channel-specific legend resolutions.
|
|
194
|
+
* @type {Partial<Record<import("../spec/channel.js").ChannelWithScale, import("../scales/legendResolution.js").default>>}
|
|
195
|
+
*/
|
|
196
|
+
legend: {},
|
|
188
197
|
};
|
|
189
198
|
|
|
190
199
|
initPropertyCache(this);
|
|
191
200
|
|
|
192
201
|
this.options = {
|
|
193
|
-
|
|
202
|
+
inheritEncoding: false,
|
|
194
203
|
layoutSizeParams: "own",
|
|
195
204
|
...options,
|
|
196
205
|
};
|
|
@@ -235,7 +244,8 @@ export default class View {
|
|
|
235
244
|
#createLayoutSizeSetter(name) {
|
|
236
245
|
if (
|
|
237
246
|
this.paramRuntime.hasLocalParam(name) ||
|
|
238
|
-
this.
|
|
247
|
+
(this.options.layoutSizeParams != "force" &&
|
|
248
|
+
this.paramRuntime.hasConfiguredParamInScopeChain(name))
|
|
239
249
|
) {
|
|
240
250
|
return undefined;
|
|
241
251
|
}
|
|
@@ -383,7 +393,7 @@ export default class View {
|
|
|
383
393
|
* @return {import("./layout/flexLayout.js").SizeDef}
|
|
384
394
|
*/
|
|
385
395
|
#getDimensionSize(dimension) {
|
|
386
|
-
|
|
396
|
+
const { value, implicit } = this.#getDimensionValue(dimension);
|
|
387
397
|
const needsStepInvalidation = isStepSize(value);
|
|
388
398
|
|
|
389
399
|
const viewport =
|
|
@@ -431,6 +441,10 @@ export default class View {
|
|
|
431
441
|
);
|
|
432
442
|
|
|
433
443
|
return { px: steps * stepSize, grow: 0 };
|
|
444
|
+
} else if (implicit) {
|
|
445
|
+
// Vega-Lite treats a missing positional channel as one
|
|
446
|
+
// discrete step. Keep explicit step sizes strict.
|
|
447
|
+
return { px: stepSize, grow: 0 };
|
|
434
448
|
} else {
|
|
435
449
|
throw new ViewError(
|
|
436
450
|
`Cannot use step-based size with "${dimension}"!`,
|
|
@@ -445,6 +459,59 @@ export default class View {
|
|
|
445
459
|
}
|
|
446
460
|
}
|
|
447
461
|
|
|
462
|
+
/**
|
|
463
|
+
* @param {"width" | "height" | "viewportWidth" | "viewportHeight"} dimension
|
|
464
|
+
* @returns {{ value: "container" | number | import("../spec/view.js").SizeDef | import("../spec/view.js").Step | undefined, implicit: boolean }}
|
|
465
|
+
*/
|
|
466
|
+
#getDimensionValue(dimension) {
|
|
467
|
+
const value = this.spec[dimension];
|
|
468
|
+
if (value != null) {
|
|
469
|
+
return { value, implicit: false };
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
const viewport =
|
|
473
|
+
dimension == "viewportWidth" || dimension == "viewportHeight";
|
|
474
|
+
if (viewport) {
|
|
475
|
+
return { value, implicit: false };
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
return {
|
|
479
|
+
value: this.#getConfiguredDefaultSize(
|
|
480
|
+
/** @type {"width" | "height"} */ (dimension)
|
|
481
|
+
),
|
|
482
|
+
implicit: true,
|
|
483
|
+
};
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
/**
|
|
487
|
+
* @param {"width" | "height"} dimension
|
|
488
|
+
* @returns {number | import("../spec/view.js").Step | undefined}
|
|
489
|
+
*/
|
|
490
|
+
#getConfiguredDefaultSize(dimension) {
|
|
491
|
+
const viewConfig = this.getConfig().view;
|
|
492
|
+
if (!viewConfig) {
|
|
493
|
+
return undefined;
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
const channel = dimension == "width" ? "x" : "y";
|
|
497
|
+
const scaleType =
|
|
498
|
+
this.getScaleResolution(channel)?.getResolvedScaleType();
|
|
499
|
+
if (scaleType && !isDiscrete(scaleType)) {
|
|
500
|
+
return dimension == "width"
|
|
501
|
+
? viewConfig.continuousWidth
|
|
502
|
+
: viewConfig.continuousHeight;
|
|
503
|
+
} else {
|
|
504
|
+
return (
|
|
505
|
+
(dimension == "width"
|
|
506
|
+
? viewConfig.discreteWidth
|
|
507
|
+
: viewConfig.discreteHeight) ??
|
|
508
|
+
(viewConfig.step !== undefined
|
|
509
|
+
? { step: viewConfig.step }
|
|
510
|
+
: undefined)
|
|
511
|
+
);
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
|
|
448
515
|
registerStepSizeInvalidation() {
|
|
449
516
|
this.#registerStepSizeInvalidationFor("width", "x");
|
|
450
517
|
this.#registerStepSizeInvalidationFor("height", "y");
|
|
@@ -455,13 +522,17 @@ export default class View {
|
|
|
455
522
|
* @param {import("../spec/channel.js").PrimaryPositionalChannel} channel
|
|
456
523
|
*/
|
|
457
524
|
#registerStepSizeInvalidationFor(dimension, channel) {
|
|
458
|
-
const value = this
|
|
525
|
+
const { value, implicit } = this.#getDimensionValue(dimension);
|
|
459
526
|
if (!isStepSize(value)) {
|
|
460
527
|
return;
|
|
461
528
|
}
|
|
462
529
|
|
|
463
530
|
const resolution = this.getScaleResolution(channel);
|
|
464
531
|
if (!resolution) {
|
|
532
|
+
if (implicit) {
|
|
533
|
+
return;
|
|
534
|
+
}
|
|
535
|
+
|
|
465
536
|
throw new ViewError(
|
|
466
537
|
"Cannot use 'step' size without a scale!",
|
|
467
538
|
this
|
|
@@ -820,7 +891,7 @@ export default class View {
|
|
|
820
891
|
}
|
|
821
892
|
this.facetCoords.set(
|
|
822
893
|
options.facetId,
|
|
823
|
-
|
|
894
|
+
clipCoords(coords, normalizeClipOptions(options))
|
|
824
895
|
);
|
|
825
896
|
|
|
826
897
|
this.#widthSetter?.(coords.width);
|
|
@@ -838,7 +909,7 @@ export default class View {
|
|
|
838
909
|
*/
|
|
839
910
|
getEncoding() {
|
|
840
911
|
const pe =
|
|
841
|
-
this.dataParent &&
|
|
912
|
+
this.dataParent && this.options.inheritEncoding
|
|
842
913
|
? this.dataParent.getEncoding()
|
|
843
914
|
: {};
|
|
844
915
|
const te = this.spec.encoding || {};
|
|
@@ -880,6 +951,8 @@ export default class View {
|
|
|
880
951
|
const sampleFieldDef = this.getEncoding().sample;
|
|
881
952
|
if (isFieldDef(sampleFieldDef)) {
|
|
882
953
|
return [sampleFieldDef.field];
|
|
954
|
+
} else if (!this.options.inheritEncoding) {
|
|
955
|
+
return [];
|
|
883
956
|
} else {
|
|
884
957
|
return this.layoutParent?.getFacetFields(this);
|
|
885
958
|
}
|
|
@@ -905,6 +978,18 @@ export default class View {
|
|
|
905
978
|
return undefined;
|
|
906
979
|
}
|
|
907
980
|
|
|
981
|
+
/**
|
|
982
|
+
* Controls which decorations the parent GridView draws around this view.
|
|
983
|
+
*
|
|
984
|
+
* @returns {ParentGridChromePolicy}
|
|
985
|
+
*/
|
|
986
|
+
getParentGridChromePolicy() {
|
|
987
|
+
return {
|
|
988
|
+
axes: true,
|
|
989
|
+
background: true,
|
|
990
|
+
};
|
|
991
|
+
}
|
|
992
|
+
|
|
908
993
|
/**
|
|
909
994
|
* @param {import("../spec/channel.js").ChannelWithScale} channel
|
|
910
995
|
*/
|
|
@@ -933,6 +1018,20 @@ export default class View {
|
|
|
933
1018
|
.find((resolution) => resolution);
|
|
934
1019
|
}
|
|
935
1020
|
|
|
1021
|
+
/**
|
|
1022
|
+
* @param {import("../spec/channel.js").ChannelWithScale} channel
|
|
1023
|
+
*/
|
|
1024
|
+
getLegendResolution(channel) {
|
|
1025
|
+
const primaryChannel =
|
|
1026
|
+
/** @type {import("../spec/channel.js").ChannelWithScale} */ (
|
|
1027
|
+
getPrimaryChannel(channel)
|
|
1028
|
+
);
|
|
1029
|
+
|
|
1030
|
+
return this.getDataAncestors()
|
|
1031
|
+
.map((view) => view.resolutions.legend[primaryChannel])
|
|
1032
|
+
.find((resolution) => resolution);
|
|
1033
|
+
}
|
|
1034
|
+
|
|
936
1035
|
/**
|
|
937
1036
|
* @param {import("../spec/channel.js").Channel | "default"} channel
|
|
938
1037
|
* @param {import("../spec/view.js").ResolutionTarget} resolutionType
|
|
@@ -948,11 +1047,17 @@ export default class View {
|
|
|
948
1047
|
* @returns {import("../spec/view.js").ResolutionBehavior}
|
|
949
1048
|
*/
|
|
950
1049
|
getConfiguredOrDefaultResolution(channel, resolutionType) {
|
|
951
|
-
|
|
1050
|
+
const configuredResolution =
|
|
952
1051
|
this.getConfiguredResolution(channel, resolutionType) ??
|
|
953
|
-
this.getConfiguredResolution("default", resolutionType)
|
|
954
|
-
|
|
955
|
-
)
|
|
1052
|
+
this.getConfiguredResolution("default", resolutionType);
|
|
1053
|
+
|
|
1054
|
+
if (configuredResolution) {
|
|
1055
|
+
return configuredResolution;
|
|
1056
|
+
} else if (resolutionType == "legend") {
|
|
1057
|
+
return this.getConfiguredOrDefaultResolution(channel, "scale");
|
|
1058
|
+
} else {
|
|
1059
|
+
return this.getDefaultResolution(channel, resolutionType);
|
|
1060
|
+
}
|
|
956
1061
|
}
|
|
957
1062
|
|
|
958
1063
|
/**
|
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {{
|
|
3
|
+
* view: import("./view.js").default,
|
|
4
|
+
* api: import("../types/embedApi.js").ViewApi,
|
|
5
|
+
* context: import("../types/viewContext.js").default
|
|
6
|
+
* }} ViewMutationAcidHarness
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* @param {import("../spec/root.js").RootSpec} spec
|
|
10
|
+
* @param {Parameters<typeof createHeadlessEngine>[1]} [options]
|
|
11
|
+
* @returns {Promise<ViewMutationAcidHarness>}
|
|
12
|
+
*/
|
|
13
|
+
export function createViewMutationAcidHarness(spec: import("../spec/root.js").RootSpec, options?: Parameters<typeof createHeadlessEngine>[1]): Promise<ViewMutationAcidHarness>;
|
|
14
|
+
/**
|
|
15
|
+
* Captures normalized lifecycle state that should remain stable after a
|
|
16
|
+
* round-trip mutation.
|
|
17
|
+
*
|
|
18
|
+
* @param {import("./view.js").default} viewRoot
|
|
19
|
+
*/
|
|
20
|
+
export function createMutationAcidSnapshot(viewRoot: import("./view.js").default): {
|
|
21
|
+
hierarchy: {
|
|
22
|
+
name: string;
|
|
23
|
+
explicitName: string;
|
|
24
|
+
defaultName: string;
|
|
25
|
+
type: string;
|
|
26
|
+
dataState: "none" | "pending" | "ready";
|
|
27
|
+
visibleInSpec: boolean;
|
|
28
|
+
configuredVisible: boolean;
|
|
29
|
+
layoutParent: number;
|
|
30
|
+
dataParent: number;
|
|
31
|
+
children: number[];
|
|
32
|
+
flowHandle: {
|
|
33
|
+
dataSource: boolean;
|
|
34
|
+
collector: boolean;
|
|
35
|
+
};
|
|
36
|
+
resolutions: {
|
|
37
|
+
scale: {
|
|
38
|
+
[k: string]: {
|
|
39
|
+
view: number;
|
|
40
|
+
channel: import("../spec/channel.js").ChannelWithScale;
|
|
41
|
+
contributesToDomain: boolean;
|
|
42
|
+
}[];
|
|
43
|
+
};
|
|
44
|
+
axis: {
|
|
45
|
+
[k: string]: {
|
|
46
|
+
visible: boolean;
|
|
47
|
+
title: string;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
legend: {
|
|
51
|
+
[k: string]: {
|
|
52
|
+
visible: boolean;
|
|
53
|
+
definitions: {
|
|
54
|
+
view: number;
|
|
55
|
+
channel: import("../spec/channel.js").ChannelWithScale;
|
|
56
|
+
type: import("../scales/legendResolution.js").LegendType;
|
|
57
|
+
field: string;
|
|
58
|
+
}[];
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
}[];
|
|
63
|
+
layout: {
|
|
64
|
+
viewName: string;
|
|
65
|
+
coords: string;
|
|
66
|
+
children: /*elided*/ any[];
|
|
67
|
+
addChild(viewCoords: /*elided*/ any): void;
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Captures object identities that should survive a round-trip mutation.
|
|
72
|
+
*
|
|
73
|
+
* @param {import("./view.js").default} viewRoot
|
|
74
|
+
*/
|
|
75
|
+
export function captureMutationAcidIdentities(viewRoot: import("./view.js").default): {
|
|
76
|
+
views: import("./view.js").default<import("../spec/view.js").ViewSpec>[];
|
|
77
|
+
collectors: import("../data/collector.js").default[];
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* @template T
|
|
81
|
+
* @returns {{
|
|
82
|
+
* promise: Promise<T>,
|
|
83
|
+
* resolve: (value: T) => void,
|
|
84
|
+
* reject: (reason?: unknown) => void
|
|
85
|
+
* }}
|
|
86
|
+
*/
|
|
87
|
+
export function createDeferred<T>(): {
|
|
88
|
+
promise: Promise<T>;
|
|
89
|
+
resolve: (value: T) => void;
|
|
90
|
+
reject: (reason?: unknown) => void;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* @param {() => boolean} predicate
|
|
94
|
+
* @returns {Promise<void>}
|
|
95
|
+
*/
|
|
96
|
+
export function waitUntil(predicate: () => boolean): Promise<void>;
|
|
97
|
+
/**
|
|
98
|
+
* @param {import("./view.js").default} viewRoot
|
|
99
|
+
* @param {string} name
|
|
100
|
+
*/
|
|
101
|
+
export function getRequiredView(viewRoot: import("./view.js").default, name: string): import("./view.js").default<import("../spec/view.js").ViewSpec>;
|
|
102
|
+
/**
|
|
103
|
+
* @param {import("./view.js").default} view
|
|
104
|
+
*/
|
|
105
|
+
export function countCollectorRows(view: import("./view.js").default): number;
|
|
106
|
+
export type ViewMutationAcidHarness = {
|
|
107
|
+
view: import("./view.js").default;
|
|
108
|
+
api: import("../types/embedApi.js").ViewApi;
|
|
109
|
+
context: import("../types/viewContext.js").default;
|
|
110
|
+
};
|
|
111
|
+
import { createHeadlessEngine } from "../genomeSpy/headlessBootstrap.js";
|
|
112
|
+
//# sourceMappingURL=viewMutationAcidTestUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewMutationAcidTestUtils.d.ts","sourceRoot":"","sources":["../../../src/view/viewMutationAcidTestUtils.js"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH;;;;GAIG;AACH,oDAJW,OAAO,iBAAiB,EAAE,QAAQ,YAClC,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC,CAAC,GACxC,OAAO,CAAC,uBAAuB,CAAC,CAU5C;AAED;;;;;GAKG;AACH,qDAFW,OAAO,WAAW,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOrC;AAED;;;;GAIG;AACH,wDAFW,OAAO,WAAW,EAAE,OAAO;;;EASrC;AAED;;;;;;;GAOG;AACH,+BAPa,CAAC,KACD;IACR,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC5B,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;CACnC,CAaH;AAED;;;GAGG;AACH,qCAHW,MAAM,OAAO,GACX,OAAO,CAAC,IAAI,CAAC,CAYzB;AAED;;;GAGG;AACH,0CAHW,OAAO,WAAW,EAAE,OAAO,QAC3B,MAAM,mEAShB;AAED;;GAEG;AACH,yCAFW,OAAO,WAAW,EAAE,OAAO,UAerC;sCAnHY;IACR,IAAI,EAAE,OAAO,WAAW,EAAE,OAAO,CAAC;IAClC,GAAG,EAAE,OAAO,sBAAsB,EAAE,OAAO,CAAC;IAC5C,OAAO,EAAE,OAAO,yBAAyB,EAAE,OAAO,CAAA;CACnD;qCARiC,mCAAmC"}
|