@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
|
@@ -17,6 +17,23 @@ export {
|
|
|
17
17
|
withoutExprRef,
|
|
18
18
|
} from "./paramUtils.js";
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* @typedef {object} ViewParamRuntimeDebugState
|
|
22
|
+
* @prop {string} scopeId
|
|
23
|
+
* @prop {boolean} disposed
|
|
24
|
+
* @prop {ViewParamDebugState[]} params
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @typedef {object} ViewParamDebugState
|
|
29
|
+
* @prop {string} name
|
|
30
|
+
* @prop {"auto" | "base" | "derived" | "selection" | "push"} kind
|
|
31
|
+
* @prop {any} value
|
|
32
|
+
* @prop {boolean} writable
|
|
33
|
+
* @prop {boolean} configured
|
|
34
|
+
* @prop {import("../spec/parameter.js").Parameter | undefined} config
|
|
35
|
+
*/
|
|
36
|
+
|
|
20
37
|
/**
|
|
21
38
|
* A class that manages parameters and expressions.
|
|
22
39
|
* Supports nesting and scoped parameters through a shared runtime graph.
|
|
@@ -352,6 +369,32 @@ export default class ViewParamRuntime {
|
|
|
352
369
|
}
|
|
353
370
|
}
|
|
354
371
|
|
|
372
|
+
/**
|
|
373
|
+
* @returns {ViewParamRuntimeDebugState}
|
|
374
|
+
*/
|
|
375
|
+
getDebugState() {
|
|
376
|
+
/** @type {ViewParamDebugState[]} */
|
|
377
|
+
const params = [];
|
|
378
|
+
|
|
379
|
+
for (const [name, ref] of this.#localRefs) {
|
|
380
|
+
const config = this.#paramConfigs.get(name);
|
|
381
|
+
params.push({
|
|
382
|
+
name,
|
|
383
|
+
kind: getParamKind(config),
|
|
384
|
+
value: ref.get(),
|
|
385
|
+
writable: this.#allocatedSetters.has(name),
|
|
386
|
+
configured: Boolean(config),
|
|
387
|
+
config: config ? structuredClone(config) : undefined,
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
return {
|
|
392
|
+
scopeId: this.#scopeId,
|
|
393
|
+
disposed: this.#disposed,
|
|
394
|
+
params,
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
|
|
355
398
|
// Setter lifecycle is scope-owned: setters are dropped when the runtime scope
|
|
356
399
|
// is disposed. A standalone deallocation API is intentionally not exposed.
|
|
357
400
|
|
|
@@ -487,3 +530,23 @@ export default class ViewParamRuntime {
|
|
|
487
530
|
return false;
|
|
488
531
|
}
|
|
489
532
|
}
|
|
533
|
+
|
|
534
|
+
/**
|
|
535
|
+
* @param {import("../spec/parameter.js").Parameter | undefined} config
|
|
536
|
+
* @returns {"auto" | "base" | "derived" | "selection" | "push"}
|
|
537
|
+
*/
|
|
538
|
+
function getParamKind(config) {
|
|
539
|
+
if (!config) {
|
|
540
|
+
return "auto";
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
if (config.push === "outer") {
|
|
544
|
+
return "push";
|
|
545
|
+
} else if ("select" in config) {
|
|
546
|
+
return "selection";
|
|
547
|
+
} else if ("expr" in config) {
|
|
548
|
+
return "derived";
|
|
549
|
+
} else {
|
|
550
|
+
return "base";
|
|
551
|
+
}
|
|
552
|
+
}
|
|
@@ -23,8 +23,43 @@ export default class AxisResolution {
|
|
|
23
23
|
* @returns {boolean}
|
|
24
24
|
*/
|
|
25
25
|
removeMember(member: AxisResolutionMember): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* @returns {boolean} True when at least one non-chrome axis-contributing view is visible.
|
|
28
|
+
*/
|
|
29
|
+
hasVisibleNonChromeMember(): boolean;
|
|
30
|
+
getDebugState(): {
|
|
31
|
+
kind: string;
|
|
32
|
+
channel: import("../spec/channel.js").PrimaryPositionalChannel;
|
|
33
|
+
hostView: any;
|
|
34
|
+
scaleResolution: any;
|
|
35
|
+
title: string;
|
|
36
|
+
axisProps: import("../spec/axis.js").GenomeAxis;
|
|
37
|
+
hasVisibleNonChromeMember: boolean;
|
|
38
|
+
members: {
|
|
39
|
+
view: import("../view/unitView.js").default<import("../spec/view.js").UnitSpec>;
|
|
40
|
+
channel: import("../spec/channel.js").PositionalChannel;
|
|
41
|
+
channelDef: import("../spec/channel.js").ChannelDefWithScale;
|
|
42
|
+
}[];
|
|
43
|
+
viewLevelAxisConfig: {
|
|
44
|
+
view: import("../view/view.js").default<import("../spec/view.js").ViewSpec>;
|
|
45
|
+
config: Partial<import("../spec/axis.js").Axis & import("../spec/axis.js").GenomeAxis>;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
26
48
|
getAxisProps(): import("../spec/axis.js").GenomeAxis;
|
|
27
49
|
getTitle(): string;
|
|
50
|
+
/**
|
|
51
|
+
* @param {import("../view/view.js").default} view
|
|
52
|
+
* @param {Partial<import("../spec/axis.js").Axis & import("../spec/axis.js").GenomeAxis>} config
|
|
53
|
+
*/
|
|
54
|
+
attachViewLevelAxisConfig(view: import("../view/view.js").default, config: Partial<import("../spec/axis.js").Axis & import("../spec/axis.js").GenomeAxis>): void;
|
|
55
|
+
/**
|
|
56
|
+
* @param {import("../view/view.js").default} view
|
|
57
|
+
*/
|
|
58
|
+
clearViewLevelAxisConfig(view: import("../view/view.js").default): void;
|
|
59
|
+
getViewLevelAxisConfig(): {
|
|
60
|
+
view: import("../view/view.js").default;
|
|
61
|
+
config: Partial<import("../spec/axis.js").Axis & import("../spec/axis.js").GenomeAxis>;
|
|
62
|
+
};
|
|
28
63
|
#private;
|
|
29
64
|
}
|
|
30
65
|
export type AxisResolutionMember<T extends import("../spec/channel.js").PositionalChannel = import("../spec/channel.js").PositionalChannel> = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axisResolution.d.ts","sourceRoot":"","sources":["../../../src/scales/axisResolution.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"axisResolution.d.ts","sourceRoot":"","sources":["../../../src/scales/axisResolution.js"],"names":[],"mappings":"AAgBA;;;;;;;GAOG;AACH;IAYI;;OAEG;IACH,qBAFW,OAAO,oBAAoB,EAAE,wBAAwB,EAI/D;IADG,+DAAsB;IAG1B,2BAGC;IAiCD;;;OAGG;IACH,uBAHW,oBAAoB,GAClB,MAAM,OAAO,CASzB;IAED;;;OAGG;IACH,qBAHW,oBAAoB,GAClB,OAAO,CAQnB;IAED;;OAEG;IACH,6BAFa,OAAO,CAanB;IAED;;;;;;;;;;;;;;;;;MAwBC;IAED,qDA0BC;IAED,mBAuEC;IAED;;;OAGG;IACH,gCAHW,OAAO,iBAAiB,EAAE,OAAO,UACjC,OAAO,CAAC,OAAO,iBAAiB,EAAE,IAAI,GAAG,OAAO,iBAAiB,EAAE,UAAU,CAAC,QAuBxF;IAED;;OAEG;IACH,+BAFW,OAAO,iBAAiB,EAAE,OAAO,QAO3C;IAED;cA3PmB,OAAO,iBAAiB,EAAE,OAAO;gBAAU,OAAO,CAAC,OAAO,iBAAiB,EAAE,IAAI,GAAG,OAAO,iBAAiB,EAAE,UAAU,CAAC;MA6P3I;;CAiBJ;iCA9R6D,CAAC,SAAlD,OAAQ,oBAAoB,EAAE,iBAAkB;UAGnD,OAAO,qBAAqB,EAAE,OAAO;aACrC,CAAC;gBACD,OAAO,oBAAoB,EAAE,mBAAmB"}
|
|
@@ -11,6 +11,7 @@ import coalesce from "../utils/coalesce.js";
|
|
|
11
11
|
|
|
12
12
|
import mergeObjects from "../utils/mergeObjects.js";
|
|
13
13
|
import { getCachedOrCall, invalidate } from "../utils/propertyCacher.js";
|
|
14
|
+
import { isChromeView } from "../view/viewSelectors.js";
|
|
14
15
|
import { orderResolutionMembers } from "./resolutionMemberOrder.js";
|
|
15
16
|
|
|
16
17
|
/**
|
|
@@ -30,6 +31,9 @@ export default class AxisResolution {
|
|
|
30
31
|
/** @type {Set<AxisResolutionMember>} The involved views */
|
|
31
32
|
#members = new Set();
|
|
32
33
|
|
|
34
|
+
/** @type {{ view: import("../view/view.js").default, config: Partial<import("../spec/axis.js").Axis & import("../spec/axis.js").GenomeAxis> } | undefined} */
|
|
35
|
+
#viewLevelAxisConfig;
|
|
36
|
+
|
|
33
37
|
/**
|
|
34
38
|
* @param {import("../spec/channel.js").PrimaryPositionalChannel} channel
|
|
35
39
|
*/
|
|
@@ -78,6 +82,7 @@ export default class AxisResolution {
|
|
|
78
82
|
* @returns {() => boolean}
|
|
79
83
|
*/
|
|
80
84
|
registerMember(member) {
|
|
85
|
+
this.#assertNoMixing(member);
|
|
81
86
|
this.#addMember(member);
|
|
82
87
|
return () => {
|
|
83
88
|
const removed = this.removeMember(member);
|
|
@@ -97,15 +102,57 @@ export default class AxisResolution {
|
|
|
97
102
|
return removed;
|
|
98
103
|
}
|
|
99
104
|
|
|
105
|
+
/**
|
|
106
|
+
* @returns {boolean} True when at least one non-chrome axis-contributing view is visible.
|
|
107
|
+
*/
|
|
108
|
+
hasVisibleNonChromeMember() {
|
|
109
|
+
for (const member of this.#members) {
|
|
110
|
+
if (
|
|
111
|
+
member.view.isVisible() &&
|
|
112
|
+
!member.view.getLayoutAncestors().some(isChromeView)
|
|
113
|
+
) {
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
getDebugState() {
|
|
122
|
+
return {
|
|
123
|
+
kind: "axis",
|
|
124
|
+
channel: this.channel,
|
|
125
|
+
hostView:
|
|
126
|
+
this.scaleResolution?.getDebugState().hostView ??
|
|
127
|
+
this.#viewLevelAxisConfig?.view ??
|
|
128
|
+
this.#members.values().next().value?.view,
|
|
129
|
+
scaleResolution: this.scaleResolution,
|
|
130
|
+
title: this.getTitle(),
|
|
131
|
+
axisProps: this.getAxisProps(),
|
|
132
|
+
hasVisibleNonChromeMember: this.hasVisibleNonChromeMember(),
|
|
133
|
+
members: orderResolutionMembers(this.#members).map((member) => ({
|
|
134
|
+
view: member.view,
|
|
135
|
+
channel: member.channel,
|
|
136
|
+
channelDef: structuredClone(member.channelDef),
|
|
137
|
+
})),
|
|
138
|
+
viewLevelAxisConfig: this.#viewLevelAxisConfig
|
|
139
|
+
? {
|
|
140
|
+
view: this.#viewLevelAxisConfig.view,
|
|
141
|
+
config: structuredClone(this.#viewLevelAxisConfig.config),
|
|
142
|
+
}
|
|
143
|
+
: undefined,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
|
|
100
147
|
getAxisProps() {
|
|
101
148
|
return getCachedOrCall(this, "axisProps", () => {
|
|
102
|
-
const propArray =
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
149
|
+
const propArray = this.#viewLevelAxisConfig
|
|
150
|
+
? [this.#viewLevelAxisConfig.config]
|
|
151
|
+
: orderResolutionMembers(this.#members).map((member) => {
|
|
152
|
+
const channelDef =
|
|
153
|
+
member.view.mark.encoding[member.channel];
|
|
154
|
+
return "axis" in channelDef && channelDef.axis;
|
|
155
|
+
});
|
|
109
156
|
|
|
110
157
|
if (
|
|
111
158
|
propArray.length > 0 &&
|
|
@@ -126,6 +173,10 @@ export default class AxisResolution {
|
|
|
126
173
|
}
|
|
127
174
|
|
|
128
175
|
getTitle() {
|
|
176
|
+
if (this.#viewLevelAxisConfig?.config.title !== undefined) {
|
|
177
|
+
return this.#viewLevelAxisConfig.config.title;
|
|
178
|
+
}
|
|
179
|
+
|
|
129
180
|
/** @param {AxisResolutionMember} member} */
|
|
130
181
|
const computeTitle = (member) => {
|
|
131
182
|
const channelDef = getChannelDefWithScale(
|
|
@@ -193,4 +244,61 @@ export default class AxisResolution {
|
|
|
193
244
|
|
|
194
245
|
return uniqueTitles.size ? [...uniqueTitles].join(", ") : null;
|
|
195
246
|
}
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* @param {import("../view/view.js").default} view
|
|
250
|
+
* @param {Partial<import("../spec/axis.js").Axis & import("../spec/axis.js").GenomeAxis>} config
|
|
251
|
+
*/
|
|
252
|
+
attachViewLevelAxisConfig(view, config) {
|
|
253
|
+
if (
|
|
254
|
+
this.#viewLevelAxisConfig &&
|
|
255
|
+
this.#viewLevelAxisConfig.view !== view
|
|
256
|
+
) {
|
|
257
|
+
throw new Error(
|
|
258
|
+
`Multiple view-level axis configs target the same ${this.channel} axis resolution.`
|
|
259
|
+
);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
for (const member of this.#members) {
|
|
263
|
+
const channelDef = member.view.mark.encoding[member.channel];
|
|
264
|
+
if ("axis" in channelDef && channelDef.axis !== undefined) {
|
|
265
|
+
throw new Error(
|
|
266
|
+
`Cannot mix view-level axes.${this.channel} with encoding.${member.channel}.axis in the same axis resolution.`
|
|
267
|
+
);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
this.#viewLevelAxisConfig = { view, config };
|
|
272
|
+
invalidate(this, "axisProps");
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* @param {import("../view/view.js").default} view
|
|
277
|
+
*/
|
|
278
|
+
clearViewLevelAxisConfig(view) {
|
|
279
|
+
if (this.#viewLevelAxisConfig?.view === view) {
|
|
280
|
+
this.#viewLevelAxisConfig = undefined;
|
|
281
|
+
invalidate(this, "axisProps");
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
getViewLevelAxisConfig() {
|
|
286
|
+
return this.#viewLevelAxisConfig;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* @param {AxisResolutionMember} member
|
|
291
|
+
*/
|
|
292
|
+
#assertNoMixing(member) {
|
|
293
|
+
if (!this.#viewLevelAxisConfig) {
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
const channelDef = member.view.mark.encoding[member.channel];
|
|
298
|
+
if ("axis" in channelDef && channelDef.axis !== undefined) {
|
|
299
|
+
throw new Error(
|
|
300
|
+
`Cannot mix view-level axes.${this.channel} with encoding.${member.channel}.axis in the same axis resolution.`
|
|
301
|
+
);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
196
304
|
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
export default class LegendResolution {
|
|
2
|
+
/**
|
|
3
|
+
* @param {import("../spec/channel.js").ChannelWithScale} channel
|
|
4
|
+
*/
|
|
5
|
+
constructor(channel: import("../spec/channel.js").ChannelWithScale);
|
|
6
|
+
channel: import("../spec/channel.js").ChannelWithScale;
|
|
7
|
+
/**
|
|
8
|
+
* @param {LegendResolutionMember} member
|
|
9
|
+
* @returns {() => boolean}
|
|
10
|
+
*/
|
|
11
|
+
registerMember(member: LegendResolutionMember): () => boolean;
|
|
12
|
+
/**
|
|
13
|
+
* @param {LegendResolutionMember} member
|
|
14
|
+
* @returns {boolean}
|
|
15
|
+
*/
|
|
16
|
+
removeMember(member: LegendResolutionMember): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* @returns {LegendDefinition[]}
|
|
19
|
+
*/
|
|
20
|
+
getLegendDefs(): LegendDefinition[];
|
|
21
|
+
/**
|
|
22
|
+
* @returns {boolean}
|
|
23
|
+
*/
|
|
24
|
+
hasVisibleNonChromeMember(): boolean;
|
|
25
|
+
getDebugState(): {
|
|
26
|
+
kind: string;
|
|
27
|
+
channel: import("../spec/channel.js").ChannelWithScale;
|
|
28
|
+
hostView: any;
|
|
29
|
+
legendDefs: {
|
|
30
|
+
view: import("../view/unitView.js").default<import("../spec/view.js").UnitSpec>;
|
|
31
|
+
scaleResolution: import("./scaleResolution.js").default;
|
|
32
|
+
legend: import("../spec/legend.js").LegendConfig;
|
|
33
|
+
channel: import("../spec/channel.js").ChannelWithScale;
|
|
34
|
+
field?: string;
|
|
35
|
+
type: LegendType;
|
|
36
|
+
symbolChannels?: Partial<Record<import("../spec/channel.js").ChannelWithScale, string>>;
|
|
37
|
+
symbolGeometry?: "point" | "stroke";
|
|
38
|
+
format?: string;
|
|
39
|
+
dataType: import("../spec/channel.js").Type;
|
|
40
|
+
}[];
|
|
41
|
+
hasVisibleNonChromeMember: boolean;
|
|
42
|
+
members: {
|
|
43
|
+
view: import("../view/unitView.js").default<import("../spec/view.js").UnitSpec>;
|
|
44
|
+
channel: import("../spec/channel.js").ChannelWithScale;
|
|
45
|
+
}[];
|
|
46
|
+
viewLevelLegendConfig: {
|
|
47
|
+
view: import("../view/view.js").default<import("../spec/view.js").ViewSpec>;
|
|
48
|
+
config: import("../spec/legend.js").Legend;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* @param {import("../view/view.js").default} view
|
|
53
|
+
* @param {import("../spec/legend.js").Legend} config
|
|
54
|
+
*/
|
|
55
|
+
attachViewLevelLegendConfig(view: import("../view/view.js").default, config: import("../spec/legend.js").Legend): void;
|
|
56
|
+
/**
|
|
57
|
+
* @param {import("../view/view.js").default} view
|
|
58
|
+
*/
|
|
59
|
+
clearViewLevelLegendConfig(view: import("../view/view.js").default): void;
|
|
60
|
+
getViewLevelLegendConfig(): {
|
|
61
|
+
view: import("../view/view.js").default;
|
|
62
|
+
config: import("../spec/legend.js").Legend;
|
|
63
|
+
};
|
|
64
|
+
#private;
|
|
65
|
+
}
|
|
66
|
+
export type LegendType = "symbol" | "gradient";
|
|
67
|
+
export type LegendResolutionMember = {
|
|
68
|
+
view: import("../view/unitView.js").default;
|
|
69
|
+
channel: import("../spec/channel.js").ChannelWithScale;
|
|
70
|
+
};
|
|
71
|
+
export type LegendDefinition = {
|
|
72
|
+
view: import("../view/unitView.js").default;
|
|
73
|
+
channel: import("../spec/channel.js").ChannelWithScale;
|
|
74
|
+
field?: string;
|
|
75
|
+
type: LegendType;
|
|
76
|
+
symbolChannels?: Partial<Record<import("../spec/channel.js").ChannelWithScale, string>>;
|
|
77
|
+
symbolGeometry?: "point" | "stroke";
|
|
78
|
+
legend: import("../spec/legend.js").LegendConfig;
|
|
79
|
+
format?: string;
|
|
80
|
+
dataType: import("../spec/channel.js").Type;
|
|
81
|
+
scaleResolution: import("./scaleResolution.js").default;
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=legendResolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legendResolution.d.ts","sourceRoot":"","sources":["../../../src/scales/legendResolution.js"],"names":[],"mappings":"AA2CA;IAOI;;OAEG;IACH,qBAFW,OAAO,oBAAoB,EAAE,gBAAgB,EAIvD;IADG,uDAAsB;IAG1B;;;OAGG;IACH,uBAHW,sBAAsB,GACpB,MAAM,OAAO,CAMzB;IAED;;;OAGG;IACH,qBAHW,sBAAsB,GACpB,OAAO,CAInB;IAED;;OAEG;IACH,iBAFa,gBAAgB,EAAE,CAoB9B;IAgGD;;OAEG;IACH,6BAFa,OAAO,CAanB;IAED;;;;;;;;qBA7LY,OAAO,oBAAoB,EAAE,gBAAgB;oBAC9C,MAAM;kBACR,UAAU;6BACC,OAAO,CAAC,MAAM,CAAC,OAAO,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;6BACtE,OAAO,GAAG,QAAQ;qBAE1B,MAAM;sBACL,OAAO,oBAAoB,EAAE,IAAI;;;;;;;;;;;MAmN7C;IAED;;;OAGG;IACH,kCAHW,OAAO,iBAAiB,EAAE,OAAO,UACjC,OAAO,mBAAmB,EAAE,MAAM,QAqB5C;IAED;;OAEG;IACH,iCAFW,OAAO,iBAAiB,EAAE,OAAO,QAM3C;IAED;cAlOmB,OAAO,iBAAiB,EAAE,OAAO;gBAAU,OAAO,mBAAmB,EAAE,MAAM;MAoO/F;;CAYJ;yBAnRY,QAAQ,GAAG,UAAU;;UAExB,OAAO,qBAAqB,EAAE,OAAO;aACrC,OAAO,oBAAoB,EAAE,gBAAgB;;+BAE1C;IACN,IAAI,EAAE,OAAO,qBAAqB,EAAE,OAAO,CAAC;IAC5C,OAAO,EAAE,OAAO,oBAAoB,EAAE,gBAAgB,CAAC;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;IACxF,cAAc,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IACpC,MAAM,EAAE,OAAO,mBAAmB,EAAE,YAAY,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,oBAAoB,EAAE,IAAI,CAAC;IAC5C,eAAe,EAAE,OAAO,sBAAsB,EAAE,OAAO,CAAA;CAC1D"}
|