@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/marks/mark.js
CHANGED
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
setUniformBlock,
|
|
10
10
|
setUniforms,
|
|
11
11
|
} from "twgl.js";
|
|
12
|
-
import { isContinuous, isDiscrete } from "vega-scale";
|
|
12
|
+
import { isContinuous, isDiscrete, isDiscretizing } from "vega-scale";
|
|
13
13
|
import createEncoders, {
|
|
14
14
|
findChannelDefWithScale,
|
|
15
15
|
getSecondaryChannel,
|
|
@@ -29,6 +29,7 @@ import {
|
|
|
29
29
|
generateDynamicValueGlslAndUniform,
|
|
30
30
|
splitLargeHighPrecision,
|
|
31
31
|
getRangeForGlsl,
|
|
32
|
+
getDiscretizingDomainForGlsl,
|
|
32
33
|
getAttributeAndArrayTypes,
|
|
33
34
|
generateDataGlsl,
|
|
34
35
|
generateDatumGlslAndUniform,
|
|
@@ -65,6 +66,11 @@ export const SAMPLE_FACET_TEXTURE = "SAMPLE_FACET_TEXTURE";
|
|
|
65
66
|
|
|
66
67
|
export const SELECTION_TEXTURE_PREFIX = "uSelectionTexture_";
|
|
67
68
|
|
|
69
|
+
/**
|
|
70
|
+
* @typedef {import("../types/rendering.js").ClipOptions} ClipOptions
|
|
71
|
+
* @typedef {import("../view/layout/rectangle.js").default} Rectangle
|
|
72
|
+
*/
|
|
73
|
+
|
|
68
74
|
/**
|
|
69
75
|
*
|
|
70
76
|
* @typedef {import("../types/rendering.js").RenderingOptions} RenderingOptions
|
|
@@ -80,6 +86,14 @@ export const SELECTION_TEXTURE_PREFIX = "uSelectionTexture_";
|
|
|
80
86
|
* @typedef {"intersects" | "encloses" | "endpoints"} HitTestMode
|
|
81
87
|
*/
|
|
82
88
|
|
|
89
|
+
/**
|
|
90
|
+
* @typedef {object} MarkDebugState
|
|
91
|
+
* @prop {boolean} markUniformsAltered
|
|
92
|
+
* @prop {number | undefined} vertexCount
|
|
93
|
+
* @prop {number | undefined} allocatedVertices
|
|
94
|
+
* @prop {Record<string, any>} properties
|
|
95
|
+
*/
|
|
96
|
+
|
|
83
97
|
/**
|
|
84
98
|
* @template {MarkProps} [P=MarkProps]
|
|
85
99
|
*/
|
|
@@ -184,19 +198,22 @@ export default class Mark {
|
|
|
184
198
|
get clip() {
|
|
185
199
|
return getCachedOrCall(mark, "defaultClip", () => {
|
|
186
200
|
// TODO: Only check channels that are used
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
201
|
+
const clipX = unitView
|
|
202
|
+
.getScaleResolution("x")
|
|
203
|
+
?.isZoomable();
|
|
204
|
+
const clipY = unitView
|
|
205
|
+
.getScaleResolution("y")
|
|
206
|
+
?.isZoomable();
|
|
207
|
+
|
|
208
|
+
if (clipX && clipY) {
|
|
209
|
+
return true;
|
|
210
|
+
} else if (clipX) {
|
|
211
|
+
return "x";
|
|
212
|
+
} else if (clipY) {
|
|
213
|
+
return "y";
|
|
214
|
+
} else {
|
|
215
|
+
return false;
|
|
197
216
|
}
|
|
198
|
-
|
|
199
|
-
return false;
|
|
200
217
|
});
|
|
201
218
|
},
|
|
202
219
|
xOffset: 0,
|
|
@@ -493,9 +510,15 @@ export default class Mark {
|
|
|
493
510
|
const shaderChannels = this.getAttributes();
|
|
494
511
|
const encoders = this.encoders;
|
|
495
512
|
const sampleFacetMode = this.getSampleFacetMode();
|
|
513
|
+
const useVisibleRangeCulling = Boolean(
|
|
514
|
+
this.properties.cullByVisibleRange
|
|
515
|
+
);
|
|
496
516
|
if (sampleFacetMode) {
|
|
497
517
|
extraHeaders.push(`#define ${sampleFacetMode}`);
|
|
498
518
|
}
|
|
519
|
+
if (useVisibleRangeCulling) {
|
|
520
|
+
extraHeaders.push("#define VISIBLE_RANGE_CULLING");
|
|
521
|
+
}
|
|
499
522
|
|
|
500
523
|
// For debugging
|
|
501
524
|
const debugHeader = "// view: " + this.unitView.getPathString();
|
|
@@ -884,9 +907,14 @@ export default class Mark {
|
|
|
884
907
|
const domainSetter =
|
|
885
908
|
this.createMarkUniformSetter(domainUniformName);
|
|
886
909
|
const set = () => {
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
910
|
+
let domain;
|
|
911
|
+
if (isDiscrete(scale.type)) {
|
|
912
|
+
domain = [0, scale.domain().length];
|
|
913
|
+
} else if (isDiscretizing(scale.type)) {
|
|
914
|
+
domain = getDiscretizingDomainForGlsl(scale);
|
|
915
|
+
} else {
|
|
916
|
+
domain = scale.domain();
|
|
917
|
+
}
|
|
890
918
|
|
|
891
919
|
domainSetter(
|
|
892
920
|
isHighPrecisionScale(scale.type)
|
|
@@ -1212,6 +1240,34 @@ export default class Mark {
|
|
|
1212
1240
|
return true;
|
|
1213
1241
|
}
|
|
1214
1242
|
|
|
1243
|
+
/**
|
|
1244
|
+
* @returns {MarkDebugState}
|
|
1245
|
+
*/
|
|
1246
|
+
getDebugState() {
|
|
1247
|
+
const specProperties =
|
|
1248
|
+
typeof this.unitView.spec.mark == "object"
|
|
1249
|
+
? this.unitView.spec.mark
|
|
1250
|
+
: {};
|
|
1251
|
+
const propertyKeys = new Set([
|
|
1252
|
+
...Object.keys(this.defaultProperties),
|
|
1253
|
+
...Object.keys(specProperties),
|
|
1254
|
+
]);
|
|
1255
|
+
/** @type {Record<string, any>} */
|
|
1256
|
+
const properties = {};
|
|
1257
|
+
for (const key of propertyKeys) {
|
|
1258
|
+
properties[key] = /** @type {Record<string, any>} */ (
|
|
1259
|
+
this.properties
|
|
1260
|
+
)[key];
|
|
1261
|
+
}
|
|
1262
|
+
|
|
1263
|
+
return {
|
|
1264
|
+
markUniformsAltered: this.markUniformsAltered,
|
|
1265
|
+
vertexCount: this.bufferInfo?.numElements,
|
|
1266
|
+
allocatedVertices: this.bufferInfo?.allocatedVertices,
|
|
1267
|
+
properties,
|
|
1268
|
+
};
|
|
1269
|
+
}
|
|
1270
|
+
|
|
1215
1271
|
/**
|
|
1216
1272
|
* @protected
|
|
1217
1273
|
*/
|
|
@@ -1437,10 +1493,11 @@ export default class Mark {
|
|
|
1437
1493
|
* @param {{width: number, height: number}} canvasSize Size of the canvas in logical pixels
|
|
1438
1494
|
* @param {number} dpr Device pixel ratio
|
|
1439
1495
|
* @param {import("../view/layout/rectangle.js").default} coords
|
|
1440
|
-
* @param {
|
|
1496
|
+
* @param {ClipOptions} [clip]
|
|
1497
|
+
* @param {ClipOptions} [cullClip]
|
|
1441
1498
|
* @returns {boolean} true if the viewport is renderable (size > 0)
|
|
1442
1499
|
*/
|
|
1443
|
-
setViewport(canvasSize, dpr, coords,
|
|
1500
|
+
setViewport(canvasSize, dpr, coords, clip, cullClip) {
|
|
1444
1501
|
coords = coords.flatten();
|
|
1445
1502
|
|
|
1446
1503
|
const gl = this.gl;
|
|
@@ -1457,41 +1514,24 @@ export default class Mark {
|
|
|
1457
1514
|
/** @type {object} */
|
|
1458
1515
|
let uniforms;
|
|
1459
1516
|
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
let uViewScale;
|
|
1468
|
-
|
|
1469
|
-
if (clipRect) {
|
|
1470
|
-
// The following fails with axes that are handled by a GridView
|
|
1471
|
-
// that itself is scrollable. The axes are clipped to the viewport
|
|
1472
|
-
// but also to the axis view, resulting in clipped axes where
|
|
1473
|
-
// not necessary.
|
|
1474
|
-
clippedCoords = coords.intersect(clipRect).flatten();
|
|
1475
|
-
if (!clippedCoords.isDefined()) {
|
|
1476
|
-
return false;
|
|
1477
|
-
}
|
|
1478
|
-
|
|
1479
|
-
uViewScale = [
|
|
1480
|
-
coords.width / clippedCoords.width,
|
|
1481
|
-
coords.height / clippedCoords.height,
|
|
1482
|
-
];
|
|
1517
|
+
const viewportScope = createViewportScope(
|
|
1518
|
+
canvasSize,
|
|
1519
|
+
coords,
|
|
1520
|
+
props.clip === "never" ? undefined : clip,
|
|
1521
|
+
false
|
|
1522
|
+
);
|
|
1523
|
+
const scopedCoords = viewportScope.coords;
|
|
1483
1524
|
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
uViewScale = [1, 1];
|
|
1525
|
+
if (viewportScope.requiresScissor) {
|
|
1526
|
+
if (!scopedCoords.isDefined()) {
|
|
1527
|
+
return false;
|
|
1488
1528
|
}
|
|
1489
1529
|
|
|
1490
1530
|
const physicalGlCoords = [
|
|
1491
|
-
|
|
1492
|
-
canvasSize.height -
|
|
1493
|
-
|
|
1494
|
-
|
|
1531
|
+
scopedCoords.x,
|
|
1532
|
+
canvasSize.height - scopedCoords.y2,
|
|
1533
|
+
scopedCoords.width,
|
|
1534
|
+
scopedCoords.height,
|
|
1495
1535
|
].map((x) => x * dpr);
|
|
1496
1536
|
|
|
1497
1537
|
// Because glViewport accepts only integers, we subtract the rounding
|
|
@@ -1510,12 +1550,15 @@ export default class Mark {
|
|
|
1510
1550
|
|
|
1511
1551
|
uniforms = {
|
|
1512
1552
|
uViewOffset: [
|
|
1513
|
-
(
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1553
|
+
(coords.x - scopedCoords.x + xOffset + xError / dpr) /
|
|
1554
|
+
scopedCoords.width,
|
|
1555
|
+
(scopedCoords.y2 - coords.y2 - yOffset + yError / dpr) /
|
|
1556
|
+
scopedCoords.height,
|
|
1557
|
+
],
|
|
1558
|
+
uViewScale: [
|
|
1559
|
+
coords.width / scopedCoords.width,
|
|
1560
|
+
coords.height / scopedCoords.height,
|
|
1517
1561
|
],
|
|
1518
|
-
uViewScale,
|
|
1519
1562
|
};
|
|
1520
1563
|
} else {
|
|
1521
1564
|
if (!coords.isDefined()) {
|
|
@@ -1548,6 +1591,17 @@ export default class Mark {
|
|
|
1548
1591
|
setBlockUniforms(this.viewUniformInfo, {
|
|
1549
1592
|
...uniforms,
|
|
1550
1593
|
uViewportSize: [coords.width, coords.height],
|
|
1594
|
+
uLogicalVisibleRect: createLogicalVisibleRect(coords, cullClip),
|
|
1595
|
+
uCullByVisibleRange: [
|
|
1596
|
+
props.cullByVisibleRange === true ||
|
|
1597
|
+
props.cullByVisibleRange === "x"
|
|
1598
|
+
? 1
|
|
1599
|
+
: 0,
|
|
1600
|
+
props.cullByVisibleRange === true ||
|
|
1601
|
+
props.cullByVisibleRange === "y"
|
|
1602
|
+
? 1
|
|
1603
|
+
: 0,
|
|
1604
|
+
],
|
|
1551
1605
|
uDevicePixelRatio: dpr,
|
|
1552
1606
|
});
|
|
1553
1607
|
|
|
@@ -1617,3 +1671,53 @@ class RangeMap extends InternMap {
|
|
|
1617
1671
|
}
|
|
1618
1672
|
}
|
|
1619
1673
|
}
|
|
1674
|
+
|
|
1675
|
+
/**
|
|
1676
|
+
* @param {{ width: number, height: number }} canvasSize
|
|
1677
|
+
* @param {Rectangle} coords
|
|
1678
|
+
* @param {ClipOptions | undefined} clip
|
|
1679
|
+
* @param {boolean} [clipSelf]
|
|
1680
|
+
*/
|
|
1681
|
+
export function createViewportScope(canvasSize, coords, clip, clipSelf = true) {
|
|
1682
|
+
if (!clip || (!clip.clipX && !clip.clipY)) {
|
|
1683
|
+
return {
|
|
1684
|
+
requiresScissor: false,
|
|
1685
|
+
coords,
|
|
1686
|
+
};
|
|
1687
|
+
}
|
|
1688
|
+
|
|
1689
|
+
let clippedCoords = clipSelf ? coords.intersect(clip.rect) : clip.rect;
|
|
1690
|
+
|
|
1691
|
+
if (!clip.clipX) {
|
|
1692
|
+
clippedCoords = clippedCoords.modify({
|
|
1693
|
+
x: 0,
|
|
1694
|
+
width: canvasSize.width,
|
|
1695
|
+
});
|
|
1696
|
+
}
|
|
1697
|
+
|
|
1698
|
+
if (!clip.clipY) {
|
|
1699
|
+
clippedCoords = clippedCoords.modify({
|
|
1700
|
+
y: 0,
|
|
1701
|
+
height: canvasSize.height,
|
|
1702
|
+
});
|
|
1703
|
+
}
|
|
1704
|
+
|
|
1705
|
+
return {
|
|
1706
|
+
requiresScissor: true,
|
|
1707
|
+
coords: clippedCoords.flatten(),
|
|
1708
|
+
};
|
|
1709
|
+
}
|
|
1710
|
+
|
|
1711
|
+
/**
|
|
1712
|
+
* @param {Rectangle} coords
|
|
1713
|
+
* @param {ClipOptions | undefined} clip
|
|
1714
|
+
* @returns {[number, number, number, number]}
|
|
1715
|
+
*/
|
|
1716
|
+
export function createLogicalVisibleRect(coords, clip) {
|
|
1717
|
+
const x1 = clip?.clipX ? (clip.rect.x - coords.x) / coords.width : 0;
|
|
1718
|
+
const x2 = clip?.clipX ? (clip.rect.x2 - coords.x) / coords.width : 1;
|
|
1719
|
+
const y1 = clip?.clipY ? (coords.y2 - clip.rect.y2) / coords.height : 0;
|
|
1720
|
+
const y2 = clip?.clipY ? (coords.y2 - clip.rect.y) / coords.height : 1;
|
|
1721
|
+
|
|
1722
|
+
return [x1, y1, x2, y2];
|
|
1723
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"point.d.ts","sourceRoot":"","sources":["../../../src/marks/point.js"],"names":[],"mappings":"AAoBA;;GAEG;AACH;IAGI;;OAEG;IACH,sBAFW,OAAO,qBAAqB,EAAE,OAAO,EAyB/C;IA6EO,iDAMC;IAkET,+
|
|
1
|
+
{"version":3,"file":"point.d.ts","sourceRoot":"","sources":["../../../src/marks/point.js"],"names":[],"mappings":"AAoBA;;GAEG;AACH;IAGI;;OAEG;IACH,sBAFW,OAAO,qBAAqB,EAAE,OAAO,EAyB/C;IA6EO,iDAMC;IAkET,+BAsBC;;CAgDJ;iBApQgB,WAAW"}
|
package/dist/src/marks/point.js
CHANGED
|
@@ -201,6 +201,10 @@ export default class PointMark extends Mark {
|
|
|
201
201
|
|
|
202
202
|
getSemanticThreshold() {
|
|
203
203
|
if (this.sampledSemanticScores) {
|
|
204
|
+
if (this.sampledSemanticScores.length === 0) {
|
|
205
|
+
return -1;
|
|
206
|
+
}
|
|
207
|
+
|
|
204
208
|
const p = Math.max(
|
|
205
209
|
0,
|
|
206
210
|
1 - this.#semanticZoomFraction() * this.unitView.getZoomLevel()
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const shader = "flat out float vRadius;flat out float vRadiusWithPadding;flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out lowp float vShape;flat out lowp float vHalfStrokeWidth;flat out mat2 vRotationMatrix;const float CIRCLE=0.0;const float SQUARE=1.0;const float CROSS=2.0;const float DIAMOND=3.0;const float TRIANGLE_UP=4.0;const float TRIANGLE_RIGHT=5.0;const float TRIANGLE_DOWN=6.0;const float TRIANGLE_LEFT=7.0;const float TICK_UP=8.0;const float TICK_RIGHT=9.0;const float TICK_DOWN=10.0;const float TICK_LEFT=11.0;float computeSemanticThresholdFactor(){return getScaled_semanticScore()>=uSemanticThreshold ? 1.0 : 0.0;}vec2 getDxDy(){\n#if defined(dx_DEFINED) || defined(dy_DEFINED)\nreturn vec2(getScaled_dx(),getScaled_dy())/uViewportSize;\n#else\nreturn vec2(0.0,0.0);\n#endif\n}void main(void){float shapeAngle=0.0;float semanticThresholdFactor=isPointSelected()? 1.0: computeSemanticThresholdFactor();if(semanticThresholdFactor<=0.0){gl_PointSize=0.0;gl_Position=vec4(100.0,0.0,0.0,0.0);return;}float size=getScaled_size();vec2 pos=vec2(getScaled_x(),getScaled_y())+getDxDy();
|
|
1
|
+
const shader = "flat out float vRadius;flat out float vRadiusWithPadding;flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out lowp float vShape;flat out lowp float vHalfStrokeWidth;flat out mat2 vRotationMatrix;const float CIRCLE=0.0;const float SQUARE=1.0;const float CROSS=2.0;const float DIAMOND=3.0;const float TRIANGLE_UP=4.0;const float TRIANGLE_RIGHT=5.0;const float TRIANGLE_DOWN=6.0;const float TRIANGLE_LEFT=7.0;const float TICK_UP=8.0;const float TICK_RIGHT=9.0;const float TICK_DOWN=10.0;const float TICK_LEFT=11.0;float computeSemanticThresholdFactor(){return getScaled_semanticScore()>=uSemanticThreshold ? 1.0 : 0.0;}vec2 getDxDy(){\n#if defined(dx_DEFINED) || defined(dy_DEFINED)\nreturn vec2(getScaled_dx(),getScaled_dy())/uViewportSize;\n#else\nreturn vec2(0.0,0.0);\n#endif\n}void main(void){float shapeAngle=0.0;float semanticThresholdFactor=isPointSelected()? 1.0: computeSemanticThresholdFactor();if(semanticThresholdFactor<=0.0){gl_PointSize=0.0;gl_Position=vec4(100.0,0.0,0.0,0.0);return;}float size=getScaled_size();vec2 pos=vec2(getScaled_x(),getScaled_y())+getDxDy();vec2 facetedPos=applySampleFacet(pos);\n#ifdef VISIBLE_RANGE_CULLING\nif(isOutsideVisibleRange(facetedPos)){gl_PointSize=0.0;gl_Position=vec4(100.0,0.0,0.0,0.0);return;}\n#endif\ngl_Position=unitToNdc(facetedPos);float strokeWidth=getScaled_strokeWidth();float diameter=sqrt(size)*uScaleFactor*semanticThresholdFactor;float opacity=uViewOpacity;if(strokeWidth<=0.0||uInwardStroke){float minDiameter=1.0/uDevicePixelRatio;if(diameter<minDiameter){opacity*=pow(diameter/minDiameter,2.5);diameter=minDiameter;}}float fillOpa=getScaled_fillOpacity()*opacity;float strokeOpa=getScaled_strokeOpacity()*opacity;vShape=getScaled_shape();bool circle=vShape==0.0;if(vShape>TICK_UP&&vShape<=TICK_LEFT){shapeAngle=(vShape-TICK_UP)*90.0;vShape=TICK_UP;}else if(vShape>TRIANGLE_UP&&vShape<=TRIANGLE_LEFT){shapeAngle=(vShape-TRIANGLE_UP)*90.0;vShape=TRIANGLE_UP;}float angleInDegrees=getScaled_angle();float angle=-(shapeAngle+angleInDegrees)*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);vRotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);float roomForRotation=circle ? 1.0 : sin(mod(angle,PI/2.0)+PI/4.0)/sin(PI/4.0);float aaPadding=1.0/uDevicePixelRatio;float rotationPadding=(diameter*roomForRotation)-diameter;float strokePadding=uInwardStroke ? 0.0 : strokeWidth*(circle ? 1.0 : sqrt(3.0));float padding=rotationPadding+strokePadding+aaPadding;gl_PointSize=max((diameter+padding),uPickingEnabled ? uMinPickingSize : 0.0)*uDevicePixelRatio;vRadius=diameter/2.0;vRadiusWithPadding=vRadius+padding/2.0;vHalfStrokeWidth=strokeWidth/2.0;vFillColor=vec4(getScaled_fill()*fillOpa,fillOpa);vStrokeColor=vec4(getScaled_stroke()*strokeOpa,strokeOpa);setupPicking();}";
|
|
2
2
|
export default shader;
|
package/dist/src/marks/text.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export default class TextMark extends Mark<import("../spec/mark.js").TextProps>
|
|
|
16
16
|
* @param {import("../view/unitView.js").default} unitView
|
|
17
17
|
*/
|
|
18
18
|
constructor(unitView: import("../view/unitView.js").default);
|
|
19
|
-
font: import("../fonts/
|
|
19
|
+
font: import("../fonts/textMetrics.js").FontEntryLike;
|
|
20
20
|
}
|
|
21
21
|
import Mark from "./mark.js";
|
|
22
22
|
//# sourceMappingURL=text.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/marks/text.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/marks/text.js"],"names":[],"mappings":"AAkCA;;;;;;;;;GASG;AACH;IACI;;OAEG;IACH;;OAEG;IACH,sBAFW,OAAO,qBAAqB,EAAE,OAAO,EAW/C;IAPG,sDAAsE;CAyM7E;iBAjPgB,WAAW"}
|
package/dist/src/marks/text.js
CHANGED
|
@@ -14,6 +14,7 @@ import { TextVertexBuilder } from "../gl/dataToVertices.js";
|
|
|
14
14
|
import Mark from "./mark.js";
|
|
15
15
|
import { fixCoveragePositional, fixHalfOpenRangedText } from "./markUtils.js";
|
|
16
16
|
import { primaryPositionalChannels } from "../encoder/encoder.js";
|
|
17
|
+
import { requestFont } from "../fonts/textMetrics.js";
|
|
17
18
|
|
|
18
19
|
/** For GLSL uniforms */
|
|
19
20
|
const alignments = {
|
|
@@ -50,13 +51,7 @@ export default class TextMark extends Mark {
|
|
|
50
51
|
*/
|
|
51
52
|
constructor(unitView) {
|
|
52
53
|
super(unitView);
|
|
53
|
-
this.font = this.properties
|
|
54
|
-
? unitView.context.fontManager.getFont(
|
|
55
|
-
this.properties.font,
|
|
56
|
-
this.properties.fontStyle,
|
|
57
|
-
this.properties.fontWeight
|
|
58
|
-
)
|
|
59
|
-
: unitView.context.fontManager.getDefaultFont();
|
|
54
|
+
this.font = requestFont(unitView.context.fontManager, this.properties);
|
|
60
55
|
|
|
61
56
|
this.setupExprRefsNeedingGraphicsUpdate([
|
|
62
57
|
"text",
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const shader = "in mediump vec2 vertexCoord;in lowp vec2 textureCoord;in float width;out vec2 vTexCoord;out float vEdgeFadeOpacity;flat out vec4 vColor;flat out float vSlope;flat out float vGamma;struct RangeResult{float pos;float scale;};float minValue(vec4 v){return min(min(v.x,v.y),min(v.z,v.w));}float maxValue(vec4 v){return max(max(v.x,v.y),max(v.z,v.w));}/***All measures are in[0,1]*/RangeResult positionInsideRange(float a,float b,float width,float padding,int align,bool flush){float span=b-a;float paddedWidth=width+2.0*padding;if(a>1.0||b<0.0){return RangeResult(0.0,0.0);}float extra=max(0.0,span-paddedWidth);float pos;if(align==0){float centre=a+b;if(flush){float leftOver=max(0.0,paddedWidth-centre);centre+=min(leftOver,extra);float rightOver=max(0.0,paddedWidth+centre-2.0);centre-=min(rightOver,extra);}pos=centre/2.0;}else if(align<0){float edge=a;if(flush){float over=max(0.0,-edge);edge+=min(over,extra);}pos=edge+padding;}else{float edge=b;if(flush){float over=max(0.0,edge-1.0);edge-=min(over,extra);}pos=edge-padding;}float scale=clamp((span-padding)/paddedWidth,0.0,1.0);return RangeResult(pos,scale);}vec2 calculateRotatedDimensions(float width,mat2 rotationMatrix){vec2 a=abs(rotationMatrix*vec2(width/2.0,0.5));vec2 b=abs(rotationMatrix*vec2(width/2.0,-0.5));return vec2(max(a.x,b.x),max(a.y,b.y))*2.0;}ivec2 fixAlignForAngle(ivec2 align,float angleInDegrees){float a=mod(angleInDegrees+45.0,360.0);int x=align.x;int y=-align.y;if(a<90.0){return ivec2(x,y);}else if(a<180.0){return ivec2(y,-x);}else if(a<270.0){return ivec2(-x,y);}else{return ivec2(-y,x);}}void main(void){float opacity=getScaled_opacity()*uViewOpacity;vec2 size=vec2(getScaled_size());float x=getScaled_x();float y=getScaled_y();float scale=1.0;float angleInDegrees=getScaled_angle();float angle=-angleInDegrees*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);mat2 rotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);vec2 flushSize=calculateRotatedDimensions(width,rotationMatrix);\n#if defined(x2_DEFINED) || defined(y2_DEFINED)\nivec2 align=fixAlignForAngle(uAlign,angleInDegrees);\n#else\nivec2 align=uAlign;\n#endif\n#ifdef x2_DEFINED\nfloat x2=getScaled_x2();if(uLogoLetter){size.x=(x2-x)*uViewportSize.x;x+=(x2-x)/2.0;}else{float x2=getScaled_x2();RangeResult result=positionInsideRange(min(x,x2),max(x,x2),size.x*scale*flushSize.x/uViewportSize.x,uPaddingX/uViewportSize.x,align.x,uFlushX);x=result.pos;scale*=result.scale;}\n#endif\nvec2 pos=applySampleFacet(vec2(x,y));\n#ifdef y2_DEFINED\nfloat y2=getScaled_y2();vec2 pos2=applySampleFacet(vec2(x,y2));if(uLogoLetter){size.y=(pos2.y-pos.y)*uViewportSize.y;pos.y+=(pos2.y-pos.y)/2.0;}else{RangeResult result=positionInsideRange(min(pos.y,pos2.y),max(pos.y,pos2.y),size.y*scale*flushSize.y/uViewportSize.y,uPaddingY/uViewportSize.y,align.y,uFlushY);pos.y=result.pos;scale*=result.scale;}\n#endif\nif(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scaleFadeExtent[0]){gl_Position=vec4(0.0);return;}size*=scale;opacity*=linearstep(scaleFadeExtent[0],scaleFadeExtent[1],scale);}else if(scale<1.0){gl_Position=vec4(0.0);return;}}vec2 charPos=rotationMatrix*(vertexCoord*size+uD);vec2 unitPos=pos+charPos/uViewportSize;gl_Position=unitToNdc(unitPos);vSlope=max(1.0,min(size.x,size.y)/uSdfNumerator*uDevicePixelRatio);vec3 color=getScaled_color();vColor=vec4(color*opacity,opacity);vGamma=getGammaForColor(color);vTexCoord=textureCoord;if(maxValue(uViewportEdgeFadeDistance)>-pow(10.0,10.0)){vEdgeFadeOpacity=minValue(((vec4(1.0,1.0,0.0,0.0)+vec4(-1.0,-1.0,1.0,1.0)*unitPos.yxyx)*uViewportSize.yxyx-uViewportEdgeFadeDistance)/uViewportEdgeFadeWidth);}else{vEdgeFadeOpacity=1.0;}setupPicking();}";
|
|
1
|
+
const shader = "in mediump vec2 vertexCoord;in lowp vec2 textureCoord;in float width;out vec2 vTexCoord;out float vEdgeFadeOpacity;flat out vec4 vColor;flat out float vSlope;flat out float vGamma;struct RangeResult{float pos;float scale;};float minValue(vec4 v){return min(min(v.x,v.y),min(v.z,v.w));}float maxValue(vec4 v){return max(max(v.x,v.y),max(v.z,v.w));}/***All measures are in[0,1]*/RangeResult positionInsideRange(float a,float b,float width,float padding,int align,bool flush){float span=b-a;float paddedWidth=width+2.0*padding;if(a>1.0||b<0.0){return RangeResult(0.0,0.0);}float extra=max(0.0,span-paddedWidth);float pos;if(align==0){float centre=a+b;if(flush){float leftOver=max(0.0,paddedWidth-centre);centre+=min(leftOver,extra);float rightOver=max(0.0,paddedWidth+centre-2.0);centre-=min(rightOver,extra);}pos=centre/2.0;}else if(align<0){float edge=a;if(flush){float over=max(0.0,-edge);edge+=min(over,extra);}pos=edge+padding;}else{float edge=b;if(flush){float over=max(0.0,edge-1.0);edge-=min(over,extra);}pos=edge-padding;}float scale=clamp((span-padding)/paddedWidth,0.0,1.0);return RangeResult(pos,scale);}vec2 calculateRotatedDimensions(float width,mat2 rotationMatrix){vec2 a=abs(rotationMatrix*vec2(width/2.0,0.5));vec2 b=abs(rotationMatrix*vec2(width/2.0,-0.5));return vec2(max(a.x,b.x),max(a.y,b.y))*2.0;}ivec2 fixAlignForAngle(ivec2 align,float angleInDegrees){float a=mod(angleInDegrees+45.0,360.0);int x=align.x;int y=-align.y;if(a<90.0){return ivec2(x,y);}else if(a<180.0){return ivec2(y,-x);}else if(a<270.0){return ivec2(-x,y);}else{return ivec2(-y,x);}}void main(void){float opacity=getScaled_opacity()*uViewOpacity;vec2 size=vec2(getScaled_size());float x=getScaled_x();float y=getScaled_y();float scale=1.0;float angleInDegrees=getScaled_angle();float angle=-angleInDegrees*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);mat2 rotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);vec2 flushSize=calculateRotatedDimensions(width,rotationMatrix);\n#if defined(x2_DEFINED) || defined(y2_DEFINED)\nivec2 align=fixAlignForAngle(uAlign,angleInDegrees);\n#else\nivec2 align=uAlign;\n#endif\n#ifdef x2_DEFINED\nfloat x2=getScaled_x2();if(uLogoLetter){size.x=(x2-x)*uViewportSize.x;x+=(x2-x)/2.0;}else{float x2=getScaled_x2();RangeResult result=positionInsideRange(min(x,x2),max(x,x2),size.x*scale*flushSize.x/uViewportSize.x,uPaddingX/uViewportSize.x,align.x,uFlushX);x=result.pos;scale*=result.scale;}\n#endif\nvec2 pos=applySampleFacet(vec2(x,y));\n#ifdef y2_DEFINED\nfloat y2=getScaled_y2();vec2 pos2=applySampleFacet(vec2(x,y2));if(uLogoLetter){size.y=(pos2.y-pos.y)*uViewportSize.y;pos.y+=(pos2.y-pos.y)/2.0;}else{RangeResult result=positionInsideRange(min(pos.y,pos2.y),max(pos.y,pos2.y),size.y*scale*flushSize.y/uViewportSize.y,uPaddingY/uViewportSize.y,align.y,uFlushY);pos.y=result.pos;scale*=result.scale;}\n#endif\n#ifdef VISIBLE_RANGE_CULLING\nif(isOutsideVisibleRange(pos)){gl_Position=vec4(0.0);return;}\n#endif\nif(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scaleFadeExtent[0]){gl_Position=vec4(0.0);return;}size*=scale;opacity*=linearstep(scaleFadeExtent[0],scaleFadeExtent[1],scale);}else if(scale<1.0){gl_Position=vec4(0.0);return;}}vec2 charPos=rotationMatrix*(vertexCoord*size+uD);vec2 unitPos=pos+charPos/uViewportSize;gl_Position=unitToNdc(unitPos);vSlope=max(1.0,min(size.x,size.y)/uSdfNumerator*uDevicePixelRatio);vec3 color=getScaled_color();vColor=vec4(color*opacity,opacity);vGamma=getGammaForColor(color);vTexCoord=textureCoord;if(maxValue(uViewportEdgeFadeDistance)>-pow(10.0,10.0)){vEdgeFadeOpacity=minValue(((vec4(1.0,1.0,0.0,0.0)+vec4(-1.0,-1.0,1.0,1.0)*unitPos.yxyx)*uViewportSize.yxyx-uViewportEdgeFadeDistance)/uViewportEdgeFadeWidth);}else{vEdgeFadeOpacity=1.0;}setupPicking();}";
|
|
2
2
|
export default shader;
|
|
@@ -5,6 +5,23 @@
|
|
|
5
5
|
* identifier: () => string
|
|
6
6
|
* }} ExprRefFunction
|
|
7
7
|
*/
|
|
8
|
+
/**
|
|
9
|
+
* @typedef {{
|
|
10
|
+
* scopeOwned?: boolean,
|
|
11
|
+
* registerDisposer?: (disposer: () => void) => void
|
|
12
|
+
* }} WatchExpressionOptions
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* @typedef {{
|
|
16
|
+
* createExpression: (expr: string) => ExprRefFunction,
|
|
17
|
+
* watchExpression?: (
|
|
18
|
+
* expr: string,
|
|
19
|
+
* listener: () => void,
|
|
20
|
+
* options?: WatchExpressionOptions
|
|
21
|
+
* ) => ExprRefFunction,
|
|
22
|
+
* whenPropagated?: () => Promise<void>
|
|
23
|
+
* }} ExprRefRuntime
|
|
24
|
+
*/
|
|
8
25
|
/**
|
|
9
26
|
* @param {any} x
|
|
10
27
|
* @returns {x is import("../spec/parameter.js").ExprRef}
|
|
@@ -53,7 +70,7 @@ export function getDefaultParamValue(param: import("../spec/parameter.js").Param
|
|
|
53
70
|
* ExprRefs to getters and setups a listener that is called when any of the
|
|
54
71
|
* expressions (upstream parameters) change.
|
|
55
72
|
*
|
|
56
|
-
* @param {
|
|
73
|
+
* @param {ExprRefRuntime} paramRuntime
|
|
57
74
|
* @param {T} props The properties object
|
|
58
75
|
* @param {(props: ReadonlySet<keyof T>) => void} [listener] Listener to be called when any of the expressions change
|
|
59
76
|
* @param {(disposer: () => void) => void} [registerDisposer]
|
|
@@ -61,16 +78,24 @@ export function getDefaultParamValue(param: import("../spec/parameter.js").Param
|
|
|
61
78
|
* @returns T
|
|
62
79
|
* @template {Record<string, any | import("../spec/parameter.js").ExprRef>} T
|
|
63
80
|
*/
|
|
64
|
-
export function activateExprRefProps<T extends Record<string, any | import("../spec/parameter.js").ExprRef>>(paramRuntime: {
|
|
65
|
-
createExpression: (expr: string) => ExprRefFunction;
|
|
66
|
-
watchExpression?: (expr: string, listener: () => void, options?: {
|
|
67
|
-
scopeOwned?: boolean;
|
|
68
|
-
registerDisposer?: (disposer: () => void) => void;
|
|
69
|
-
}) => ExprRefFunction;
|
|
70
|
-
whenPropagated?: () => Promise<void>;
|
|
71
|
-
}, props: T, listener?: (props: ReadonlySet<keyof T>) => void, registerDisposer?: (disposer: () => void) => void, options?: {
|
|
81
|
+
export function activateExprRefProps<T extends Record<string, any | import("../spec/parameter.js").ExprRef>>(paramRuntime: ExprRefRuntime, props: T, listener?: (props: ReadonlySet<keyof T>) => void, registerDisposer?: (disposer: () => void) => void, options?: {
|
|
72
82
|
batchMode?: "microtask" | "whenPropagated";
|
|
73
83
|
}): T;
|
|
84
|
+
/**
|
|
85
|
+
* Resolves a literal or ExprRef for properties that may be parameterized during
|
|
86
|
+
* view construction but are not safe to update reactively. This is intended for
|
|
87
|
+
* structural options, such as layout regions or view ownership, where a later
|
|
88
|
+
* value change would require rebuilding part of the view hierarchy. ExprRefs
|
|
89
|
+
* are evaluated once and subscribed with a fail-fast listener.
|
|
90
|
+
*
|
|
91
|
+
* @param {ExprRefRuntime} paramRuntime
|
|
92
|
+
* @param {T | import("../spec/parameter.js").ExprRef} value
|
|
93
|
+
* @param {string} errorMessage Error thrown if an ExprRef changes after initialization
|
|
94
|
+
* @param {(disposer: () => void) => void} [registerDisposer]
|
|
95
|
+
* @returns {T}
|
|
96
|
+
* @template T
|
|
97
|
+
*/
|
|
98
|
+
export function resolveInitOnlyExprRef<T>(paramRuntime: ExprRefRuntime, value: T | import("../spec/parameter.js").ExprRef, errorMessage: string, registerDisposer?: (disposer: () => void) => void): T;
|
|
74
99
|
/**
|
|
75
100
|
* Creates a function that always returns the same value.
|
|
76
101
|
*
|
|
@@ -83,4 +108,13 @@ export type ExprRefFunction = import("../utils/expression.js").ExpressionFunctio
|
|
|
83
108
|
invalidate: () => void;
|
|
84
109
|
identifier: () => string;
|
|
85
110
|
};
|
|
111
|
+
export type WatchExpressionOptions = {
|
|
112
|
+
scopeOwned?: boolean;
|
|
113
|
+
registerDisposer?: (disposer: () => void) => void;
|
|
114
|
+
};
|
|
115
|
+
export type ExprRefRuntime = {
|
|
116
|
+
createExpression: (expr: string) => ExprRefFunction;
|
|
117
|
+
watchExpression?: (expr: string, listener: () => void, options?: WatchExpressionOptions) => ExprRefFunction;
|
|
118
|
+
whenPropagated?: () => Promise<void>;
|
|
119
|
+
};
|
|
86
120
|
//# sourceMappingURL=paramUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paramUtils.d.ts","sourceRoot":"","sources":["../../../src/paramRuntime/paramUtils.js"],"names":[],"mappings":"AAUA;;;;;;GAMG;AAEH;;;GAGG;AACH,6BAHW,GAAG,GACD,CAAC,IAAI,OAAO,sBAAsB,EAAE,OAAO,CAIvD;AAED;;;;;;;GAOG;AACH,+BAHa,CAAC,KADH,CAAC,GAAG,OAAO,sBAAsB,EAAE,OAAO,GAExC,CAAC,CAWb;AAED;;;GAGG;AACH,2CAHW,OAAO,sBAAsB,EAAE,SAAS,GACtC,KAAK,IAAI,OAAO,sBAAsB,EAAE,iBAAiB,CAIrE;AAED;;;GAGG;AACH,4CAHW,OAAO,sBAAsB,EAAE,SAAS,GACtC,KAAK,IAAI,OAAO,sBAAsB,EAAE,kBAAkB,CAItE;AAED;;;;;;GAMG;AACH,4CAHW,MAAM,GACJ,MAAM,CAYlB;AAED;;;;;;;GAOG;AACH,4CALW,OAAO,sBAAsB,EAAE,SAAS,iBACxC;IAAE,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,eAAe,CAAA;CAAE,WACvD,eAAe,GACb,GAAG,CA0Cf;AAED;;;;;;;;;;;;GAYG;AACH,qCAF4E,CAAC,SAA/D,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,sBAAsB,EAAE,OAAO,CAAE,gBANhE
|
|
1
|
+
{"version":3,"file":"paramUtils.d.ts","sourceRoot":"","sources":["../../../src/paramRuntime/paramUtils.js"],"names":[],"mappings":"AAUA;;;;;;GAMG;AAEH;;;;;GAKG;AAEH;;;;;;;;;;GAUG;AAEH;;;GAGG;AACH,6BAHW,GAAG,GACD,CAAC,IAAI,OAAO,sBAAsB,EAAE,OAAO,CAIvD;AAED;;;;;;;GAOG;AACH,+BAHa,CAAC,KADH,CAAC,GAAG,OAAO,sBAAsB,EAAE,OAAO,GAExC,CAAC,CAWb;AAED;;;GAGG;AACH,2CAHW,OAAO,sBAAsB,EAAE,SAAS,GACtC,KAAK,IAAI,OAAO,sBAAsB,EAAE,iBAAiB,CAIrE;AAED;;;GAGG;AACH,4CAHW,OAAO,sBAAsB,EAAE,SAAS,GACtC,KAAK,IAAI,OAAO,sBAAsB,EAAE,kBAAkB,CAItE;AAED;;;;;;GAMG;AACH,4CAHW,MAAM,GACJ,MAAM,CAYlB;AAED;;;;;;;GAOG;AACH,4CALW,OAAO,sBAAsB,EAAE,SAAS,iBACxC;IAAE,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,eAAe,CAAA;CAAE,WACvD,eAAe,GACb,GAAG,CA0Cf;AAED;;;;;;;;;;;;GAYG;AACH,qCAF4E,CAAC,SAA/D,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,sBAAsB,EAAE,OAAO,CAAE,gBANhE,cAAc,SACd,CAAC,aACD,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,qBACrC,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,YAC9B;IAAE,SAAS,CAAC,EAAE,WAAW,GAAG,gBAAgB,CAAA;CAAE,GAkHnC,CAAC,CACtB;AAED;;;;;;;;;;;;;GAaG;AACH,uCAFa,CAAC,gBALH,cAAc,SACd,CAAC,GAAG,OAAO,sBAAsB,EAAE,OAAO,gBAC1C,MAAM,qBACN,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,GAC5B,CAAC,CA4Bb;AAED;;;;;GAKG;AACH,2CAHW,GAAG,GACD,eAAe,CAW3B;8BAhUY,OAAO,wBAAwB,EAAE,kBAAkB,GAAG;IAC9D,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IAChD,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,MAAM,CAAA;CACzB;qCAIS;IACR,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;CAClD;6BAIS;IACR,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,eAAe,CAAC;IACpD,eAAe,CAAC,EAAE,CAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,IAAI,EACpB,OAAO,CAAC,EAAE,sBAAsB,KAC7B,eAAe,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACrC"}
|
|
@@ -16,6 +16,25 @@ import {
|
|
|
16
16
|
* }} ExprRefFunction
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
|
+
/**
|
|
20
|
+
* @typedef {{
|
|
21
|
+
* scopeOwned?: boolean,
|
|
22
|
+
* registerDisposer?: (disposer: () => void) => void
|
|
23
|
+
* }} WatchExpressionOptions
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @typedef {{
|
|
28
|
+
* createExpression: (expr: string) => ExprRefFunction,
|
|
29
|
+
* watchExpression?: (
|
|
30
|
+
* expr: string,
|
|
31
|
+
* listener: () => void,
|
|
32
|
+
* options?: WatchExpressionOptions
|
|
33
|
+
* ) => ExprRefFunction,
|
|
34
|
+
* whenPropagated?: () => Promise<void>
|
|
35
|
+
* }} ExprRefRuntime
|
|
36
|
+
*/
|
|
37
|
+
|
|
19
38
|
/**
|
|
20
39
|
* @param {any} x
|
|
21
40
|
* @returns {x is import("../spec/parameter.js").ExprRef}
|
|
@@ -133,7 +152,7 @@ export function getDefaultParamValue(param, paramRuntime, exprFn) {
|
|
|
133
152
|
* ExprRefs to getters and setups a listener that is called when any of the
|
|
134
153
|
* expressions (upstream parameters) change.
|
|
135
154
|
*
|
|
136
|
-
* @param {
|
|
155
|
+
* @param {ExprRefRuntime} paramRuntime
|
|
137
156
|
* @param {T} props The properties object
|
|
138
157
|
* @param {(props: ReadonlySet<keyof T>) => void} [listener] Listener to be called when any of the expressions change
|
|
139
158
|
* @param {(disposer: () => void) => void} [registerDisposer]
|
|
@@ -254,6 +273,47 @@ export function activateExprRefProps(
|
|
|
254
273
|
return /** @type {T} */ (activatedProps);
|
|
255
274
|
}
|
|
256
275
|
|
|
276
|
+
/**
|
|
277
|
+
* Resolves a literal or ExprRef for properties that may be parameterized during
|
|
278
|
+
* view construction but are not safe to update reactively. This is intended for
|
|
279
|
+
* structural options, such as layout regions or view ownership, where a later
|
|
280
|
+
* value change would require rebuilding part of the view hierarchy. ExprRefs
|
|
281
|
+
* are evaluated once and subscribed with a fail-fast listener.
|
|
282
|
+
*
|
|
283
|
+
* @param {ExprRefRuntime} paramRuntime
|
|
284
|
+
* @param {T | import("../spec/parameter.js").ExprRef} value
|
|
285
|
+
* @param {string} errorMessage Error thrown if an ExprRef changes after initialization
|
|
286
|
+
* @param {(disposer: () => void) => void} [registerDisposer]
|
|
287
|
+
* @returns {T}
|
|
288
|
+
* @template T
|
|
289
|
+
*/
|
|
290
|
+
export function resolveInitOnlyExprRef(
|
|
291
|
+
paramRuntime,
|
|
292
|
+
value,
|
|
293
|
+
errorMessage,
|
|
294
|
+
registerDisposer
|
|
295
|
+
) {
|
|
296
|
+
if (!isExprRef(value)) {
|
|
297
|
+
return value;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
const throwUnsupportedChange = () => {
|
|
301
|
+
throw new Error(errorMessage);
|
|
302
|
+
};
|
|
303
|
+
const fn = paramRuntime.watchExpression
|
|
304
|
+
? paramRuntime.watchExpression(value.expr, throwUnsupportedChange, {
|
|
305
|
+
scopeOwned: false,
|
|
306
|
+
registerDisposer,
|
|
307
|
+
})
|
|
308
|
+
: paramRuntime.createExpression(value.expr);
|
|
309
|
+
if (!paramRuntime.watchExpression) {
|
|
310
|
+
const unsubscribe = fn.subscribe(throwUnsupportedChange);
|
|
311
|
+
registerDisposer?.(unsubscribe);
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
return fn();
|
|
315
|
+
}
|
|
316
|
+
|
|
257
317
|
/**
|
|
258
318
|
* Creates a function that always returns the same value.
|
|
259
319
|
*
|
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {object} ViewParamRuntimeDebugState
|
|
3
|
+
* @prop {string} scopeId
|
|
4
|
+
* @prop {boolean} disposed
|
|
5
|
+
* @prop {ViewParamDebugState[]} params
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* @typedef {object} ViewParamDebugState
|
|
9
|
+
* @prop {string} name
|
|
10
|
+
* @prop {"auto" | "base" | "derived" | "selection" | "push"} kind
|
|
11
|
+
* @prop {any} value
|
|
12
|
+
* @prop {boolean} writable
|
|
13
|
+
* @prop {boolean} configured
|
|
14
|
+
* @prop {import("../spec/parameter.js").Parameter | undefined} config
|
|
15
|
+
*/
|
|
1
16
|
/**
|
|
2
17
|
* A class that manages parameters and expressions.
|
|
3
18
|
* Supports nesting and scoped parameters through a shared runtime graph.
|
|
@@ -97,6 +112,10 @@ export default class ViewParamRuntime {
|
|
|
97
112
|
* @returns {ViewParamRuntime}
|
|
98
113
|
*/
|
|
99
114
|
findRuntimeForParam(paramName: string): ViewParamRuntime;
|
|
115
|
+
/**
|
|
116
|
+
* @returns {ViewParamRuntimeDebugState}
|
|
117
|
+
*/
|
|
118
|
+
getDebugState(): ViewParamRuntimeDebugState;
|
|
100
119
|
/**
|
|
101
120
|
* Parse expr and return a function that returns the value of the parameter.
|
|
102
121
|
*
|
|
@@ -168,6 +187,19 @@ export default class ViewParamRuntime {
|
|
|
168
187
|
hasPointSelections(): boolean;
|
|
169
188
|
#private;
|
|
170
189
|
}
|
|
190
|
+
export type ViewParamRuntimeDebugState = {
|
|
191
|
+
scopeId: string;
|
|
192
|
+
disposed: boolean;
|
|
193
|
+
params: ViewParamDebugState[];
|
|
194
|
+
};
|
|
195
|
+
export type ViewParamDebugState = {
|
|
196
|
+
name: string;
|
|
197
|
+
kind: "auto" | "base" | "derived" | "selection" | "push";
|
|
198
|
+
value: any;
|
|
199
|
+
writable: boolean;
|
|
200
|
+
configured: boolean;
|
|
201
|
+
config: import("../spec/parameter.js").Parameter | undefined;
|
|
202
|
+
};
|
|
171
203
|
/**
|
|
172
204
|
* A class that manages parameters and expressions.
|
|
173
205
|
* Supports nesting and scoped parameters through a shared runtime graph.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewParamRuntime.d.ts","sourceRoot":"","sources":["../../../src/paramRuntime/viewParamRuntime.js"],"names":[],"mappings":"AAmBA;;;;;;;;GAQG;AACH;IAwCI;;;;;;OAMG;IACH,2BANW,MAAM,gBAAgB,4BACtB,CAAC,OAAO,EAAE,OAAO,oBAAoB,EAAE,gBAAgB,KAAK,OAAO,8BAA8B,EAAE,OAAO,GAAG,SAAS,EAkBhI;IAED;;;;;;;;;;;OAWG;IACH,wEAvEqB,GAAG,KAAK,IAAI,CAkKhC;IAED;;;;;;;OAOG;IACH,eAFa,CAAC,aAJH,MAAM,gBACN,CAAC,YACD,OAAO,GACL,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAgC9B;IAED;;;;;;;;OAQG;IACH,oBAHW,MAAM,SACN,GAAG,QAWb;IAED;;;OAGG;IACH,oBAFW,MAAM,OAIhB;IAED;;;;;;;;OAQG;IACH,qBAJW,MAAM,YACN,MAAM,IAAI,GACR,MAAM,IAAI,CAiBtB;IAED;;;OAGG;IACH,qBAFW,MAAM,OAKhB;IAED;;OAEG;IACH,oBACsB,WAAW,CAAC,MAAM,2CAAY,CAGnD;IAED;;;;;OAKG;IACH,yBAHW,MAAM,GACJ,OAAO,CAKnB;IAED;;;;;;;;;;OAUG;IACH,0CAHW,MAAM,GACJ,OAAO,CAanB;IAED;;;;OAIG;IACH,+BAHW,MAAM,GACJ,gBAAgB,CAQ5B;IAKD;;;;OAIG;IACH,uBAFW,MAAM,wCAMhB;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,sBALW,MAAM,YACN,MAAM,IAAI;;;;;;;
|
|
1
|
+
{"version":3,"file":"viewParamRuntime.d.ts","sourceRoot":"","sources":["../../../src/paramRuntime/viewParamRuntime.js"],"names":[],"mappings":"AAmBA;;;;;GAKG;AAEH;;;;;;;;GAQG;AAEH;;;;;;;;GAQG;AACH;IAwCI;;;;;;OAMG;IACH,2BANW,MAAM,gBAAgB,4BACtB,CAAC,OAAO,EAAE,OAAO,oBAAoB,EAAE,gBAAgB,KAAK,OAAO,8BAA8B,EAAE,OAAO,GAAG,SAAS,EAkBhI;IAED;;;;;;;;;;;OAWG;IACH,wEAvEqB,GAAG,KAAK,IAAI,CAkKhC;IAED;;;;;;;OAOG;IACH,eAFa,CAAC,aAJH,MAAM,gBACN,CAAC,YACD,OAAO,GACL,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAgC9B;IAED;;;;;;;;OAQG;IACH,oBAHW,MAAM,SACN,GAAG,QAWb;IAED;;;OAGG;IACH,oBAFW,MAAM,OAIhB;IAED;;;;;;;;OAQG;IACH,qBAJW,MAAM,YACN,MAAM,IAAI,GACR,MAAM,IAAI,CAiBtB;IAED;;;OAGG;IACH,qBAFW,MAAM,OAKhB;IAED;;OAEG;IACH,oBACsB,WAAW,CAAC,MAAM,2CAAY,CAGnD;IAED;;;;;OAKG;IACH,yBAHW,MAAM,GACJ,OAAO,CAKnB;IAED;;;;;;;;;;OAUG;IACH,0CAHW,MAAM,GACJ,OAAO,CAanB;IAED;;;;OAIG;IACH,+BAHW,MAAM,GACJ,gBAAgB,CAQ5B;IAED;;OAEG;IACH,iBAFa,0BAA0B,CAuBtC;IAKD;;;;OAIG;IACH,uBAFW,MAAM,wCAMhB;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,sBALW,MAAM,YACN,MAAM,IAAI;;;;;;;qBArXX,OAAO;;;;;;2BAKP,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI;QAkX3B,eAAe,CAY3B;IA0BD;;;;OAIG;IACH,qBAFW,MAAM,OAKhB;IAED;;;;OAIG;IACH,iBAJa,CAAC,MACH,MAAM,CAAC,GACL,CAAC,CAIb;IAED,iBAEC;IAED;;;;;OAKG;IACH,yBAFW;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,iBAItD;IAED,gBAUC;IAED;;;;;OAKG;IACH,sBAFa,OAAO,CAiBnB;;CACJ;;aA9fS,MAAM;cACN,OAAO;YACP,mBAAmB,EAAE;;;UAKrB,MAAM;UACN,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM;WAClD,GAAG;cACH,OAAO;gBACP,OAAO;YACP,OAAO,sBAAsB,EAAE,SAAS,GAAG,SAAS;;;;;;;;;8BAUjD,OAAO,wBAAwB,EAAE,kBAAkB,GAAG;IAAE,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,MAAM,CAAA;CAAC"}
|