@genome-spy/core 0.73.0 → 0.75.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/AbortablePromiseCache-3gHJdF3E.js +96 -0
- package/dist/bundle/browser-BTgw5ieH.js +126 -0
- package/dist/bundle/chunk-DmhlhrBa.js +11 -0
- package/dist/bundle/esm-BDFRLEuD.js +1248 -0
- package/dist/bundle/esm-BygJiwh0.js +573 -0
- package/dist/bundle/esm-CGX-qz1d.js +155 -0
- package/dist/bundle/esm-CgfVIRJ-.js +121 -0
- package/dist/bundle/esm-CuMSzCHy.js +298 -0
- package/dist/bundle/esm-DMXpJXM4.js +369 -0
- package/dist/bundle/esm-DQiq2Zhd.js +1426 -0
- package/dist/bundle/esm-DtE8VqAv.js +1015 -0
- package/dist/bundle/esm-sIoQYZ21.js +461 -0
- package/dist/bundle/index.es.js +21266 -25938
- package/dist/bundle/index.js +367 -383
- package/dist/bundle/parquetRead-DG_-F5j5.js +1609 -0
- package/dist/schema.json +13421 -7210
- package/dist/src/config/axisConfig.d.ts +16 -0
- package/dist/src/config/axisConfig.d.ts.map +1 -0
- package/dist/src/config/axisConfig.js +84 -0
- package/dist/src/config/defaultConfig.d.ts +3 -0
- package/dist/src/config/defaultConfig.d.ts.map +1 -0
- package/dist/src/config/defaultConfig.js +38 -0
- package/dist/src/config/defaults/axisDefaults.d.ts +5 -0
- package/dist/src/config/defaults/axisDefaults.d.ts.map +1 -0
- package/dist/src/config/defaults/axisDefaults.js +72 -0
- package/dist/src/config/defaults/markDefaults.d.ts +15 -0
- package/dist/src/config/defaults/markDefaults.d.ts.map +1 -0
- package/dist/src/config/defaults/markDefaults.js +121 -0
- package/dist/src/config/defaults/scaleDefaults.d.ts +5 -0
- package/dist/src/config/defaults/scaleDefaults.d.ts.map +1 -0
- package/dist/src/config/defaults/scaleDefaults.js +18 -0
- package/dist/src/config/defaults/titleDefaults.d.ts +5 -0
- package/dist/src/config/defaults/titleDefaults.d.ts.map +1 -0
- package/dist/src/config/defaults/titleDefaults.js +47 -0
- package/dist/src/config/defaults/viewDefaults.d.ts +3 -0
- package/dist/src/config/defaults/viewDefaults.d.ts.map +1 -0
- package/dist/src/config/defaults/viewDefaults.js +2 -0
- package/dist/src/config/markConfig.d.ts +8 -0
- package/dist/src/config/markConfig.d.ts.map +1 -0
- package/dist/src/config/markConfig.js +27 -0
- package/dist/src/config/mergeConfig.d.ts +8 -0
- package/dist/src/config/mergeConfig.d.ts.map +1 -0
- package/dist/src/config/mergeConfig.js +81 -0
- package/dist/src/config/resolveConfig.d.ts +22 -0
- package/dist/src/config/resolveConfig.d.ts.map +1 -0
- package/dist/src/config/resolveConfig.js +32 -0
- package/dist/src/config/scaleConfig.d.ts +40 -0
- package/dist/src/config/scaleConfig.d.ts.map +1 -0
- package/dist/src/config/scaleConfig.js +220 -0
- package/dist/src/config/styleUtils.d.ts +6 -0
- package/dist/src/config/styleUtils.d.ts.map +1 -0
- package/dist/src/config/styleUtils.js +10 -0
- package/dist/src/config/themes.d.ts +15 -0
- package/dist/src/config/themes.d.ts.map +1 -0
- package/dist/src/config/themes.js +293 -0
- package/dist/src/config/titleConfig.d.ts +12 -0
- package/dist/src/config/titleConfig.d.ts.map +1 -0
- package/dist/src/config/titleConfig.js +42 -0
- package/dist/src/config/viewConfig.d.ts +7 -0
- package/dist/src/config/viewConfig.d.ts.map +1 -0
- package/dist/src/config/viewConfig.js +29 -0
- package/dist/src/data/flowNode.d.ts +22 -1
- package/dist/src/data/flowNode.d.ts.map +1 -1
- package/dist/src/data/flowNode.js +37 -1
- package/dist/src/data/formats/bed.d.ts.map +1 -1
- package/dist/src/data/formats/bed.js +6 -1
- package/dist/src/data/formats/bedpe.d.ts.map +1 -1
- package/dist/src/data/formats/bedpe.js +4 -0
- package/dist/src/data/formats/fasta.d.ts.map +1 -1
- package/dist/src/data/formats/fasta.js +4 -0
- package/dist/src/data/formats/parquet.d.ts.map +1 -1
- package/dist/src/data/formats/parquet.js +4 -0
- package/dist/src/data/sources/dataSourceFactory.d.ts +2 -13
- package/dist/src/data/sources/dataSourceFactory.d.ts.map +1 -1
- package/dist/src/data/sources/dataSourceFactory.js +5 -141
- package/dist/src/data/sources/dataUtils.d.ts +25 -0
- package/dist/src/data/sources/dataUtils.d.ts.map +1 -1
- package/dist/src/data/sources/dataUtils.js +23 -0
- package/dist/src/data/sources/inlineSource.js +2 -2
- package/dist/src/data/sources/lazy/axisGenomeSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/axisGenomeSource.js +11 -0
- package/dist/src/data/sources/lazy/axisTickSource.d.ts +1 -1
- package/dist/src/data/sources/lazy/axisTickSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/axisTickSource.js +19 -8
- package/dist/src/data/sources/lazy/bamSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/bamSource.js +11 -0
- package/dist/src/data/sources/lazy/bigBedSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/bigBedSource.js +12 -1
- package/dist/src/data/sources/lazy/bigWigSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/bigWigSource.js +11 -0
- package/dist/src/data/sources/lazy/gff3Source.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/gff3Source.js +12 -1
- package/dist/src/data/sources/lazy/indexedFastaSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/indexedFastaSource.js +11 -0
- package/dist/src/data/sources/lazy/lazyDataSourceRegistry.d.ts +27 -0
- package/dist/src/data/sources/lazy/lazyDataSourceRegistry.d.ts.map +1 -0
- package/dist/src/data/sources/lazy/lazyDataSourceRegistry.js +65 -0
- package/dist/src/data/sources/lazy/registerBuiltInLazySources.d.ts +2 -0
- package/dist/src/data/sources/lazy/registerBuiltInLazySources.d.ts.map +1 -0
- package/dist/src/data/sources/lazy/registerBuiltInLazySources.js +8 -0
- package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/singleAxisLazySource.js +11 -2
- package/dist/src/data/sources/lazy/vcfSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/vcfSource.js +11 -0
- package/dist/src/data/sources/urlSource.d.ts.map +1 -1
- package/dist/src/data/sources/urlSource.js +13 -5
- package/dist/src/data/transforms/aggregate.d.ts +1 -0
- package/dist/src/data/transforms/aggregate.d.ts.map +1 -1
- package/dist/src/data/transforms/aggregate.js +30 -8
- package/dist/src/data/transforms/aggregateOps.d.ts.map +1 -1
- package/dist/src/data/transforms/aggregateOps.js +12 -1
- package/dist/src/data/transforms/coverage.js +2 -2
- package/dist/src/data/transforms/filter.js +1 -1
- package/dist/src/data/transforms/filterScoredLabels.d.ts +6 -0
- package/dist/src/data/transforms/filterScoredLabels.d.ts.map +1 -1
- package/dist/src/data/transforms/filterScoredLabels.js +9 -0
- package/dist/src/data/transforms/measureText.d.ts +1 -0
- package/dist/src/data/transforms/measureText.d.ts.map +1 -1
- package/dist/src/data/transforms/measureText.js +14 -5
- package/dist/src/data/transforms/pileup.d.ts.map +1 -1
- package/dist/src/data/transforms/pileup.js +1 -2
- package/dist/src/data/transforms/regexFold.d.ts.map +1 -1
- package/dist/src/data/transforms/regexFold.js +0 -1
- package/dist/src/embedFactory.d.ts +13 -0
- package/dist/src/embedFactory.d.ts.map +1 -0
- package/dist/src/embedFactory.js +127 -0
- package/dist/src/encoder/accessor.d.ts +3 -12
- package/dist/src/encoder/accessor.d.ts.map +1 -1
- package/dist/src/encoder/accessor.js +10 -65
- package/dist/src/encoder/encoder.d.ts +51 -8
- package/dist/src/encoder/encoder.d.ts.map +1 -1
- package/dist/src/encoder/encoder.js +179 -55
- package/dist/src/fonts/bmFontManager.js +1 -1
- package/dist/src/full.d.ts +2 -0
- package/dist/src/full.d.ts.map +1 -0
- package/dist/src/full.js +2 -0
- package/dist/src/genome/genome.d.ts +8 -0
- package/dist/src/genome/genome.d.ts.map +1 -1
- package/dist/src/genome/genome.js +16 -2
- package/dist/src/genome/genomeStore.js +1 -1
- package/dist/src/genome/rootGenomeConfig.d.ts.map +1 -1
- package/dist/src/genome/rootGenomeConfig.js +6 -2
- package/dist/src/genome/scaleLocus.d.ts.map +1 -1
- package/dist/src/genome/scaleLocus.js +31 -7
- package/dist/src/genomeSpy/cursorManager.d.ts +69 -0
- package/dist/src/genomeSpy/cursorManager.d.ts.map +1 -0
- package/dist/src/genomeSpy/cursorManager.js +131 -0
- package/dist/src/genomeSpy/headlessBootstrap.d.ts +113 -0
- package/dist/src/genomeSpy/headlessBootstrap.d.ts.map +1 -0
- package/dist/src/genomeSpy/headlessBootstrap.js +246 -0
- package/dist/src/genomeSpy/interactionController.d.ts +5 -0
- package/dist/src/genomeSpy/interactionController.d.ts.map +1 -1
- package/dist/src/genomeSpy/interactionController.js +292 -59
- package/dist/src/genomeSpy/interactionDispatcher.d.ts +50 -0
- package/dist/src/genomeSpy/interactionDispatcher.d.ts.map +1 -0
- package/dist/src/genomeSpy/interactionDispatcher.js +203 -0
- package/dist/src/genomeSpy/viewContextFactory.d.ts +4 -2
- package/dist/src/genomeSpy/viewContextFactory.d.ts.map +1 -1
- package/dist/src/genomeSpy/viewContextFactory.js +12 -4
- package/dist/src/genomeSpy/viewDataInit.d.ts.map +1 -1
- package/dist/src/genomeSpy/viewDataInit.js +7 -3
- package/dist/src/genomeSpy.d.ts +1 -124
- package/dist/src/genomeSpy.d.ts.map +1 -1
- package/dist/src/genomeSpy.js +7 -688
- package/dist/src/genomeSpyBase.d.ts +133 -0
- package/dist/src/genomeSpyBase.d.ts.map +1 -0
- package/dist/src/genomeSpyBase.js +719 -0
- package/dist/src/gl/arrayBuilder.d.ts.map +1 -1
- package/dist/src/gl/arrayBuilder.js +0 -3
- package/dist/src/gl/colorUtils.d.ts.map +1 -1
- package/dist/src/gl/colorUtils.js +3 -0
- package/dist/src/gl/dataToVertices.d.ts +12 -14
- package/dist/src/gl/dataToVertices.d.ts.map +1 -1
- package/dist/src/gl/dataToVertices.js +121 -95
- package/dist/src/gl/glslScaleGenerator.d.ts +5 -2
- package/dist/src/gl/glslScaleGenerator.d.ts.map +1 -1
- package/dist/src/gl/glslScaleGenerator.js +15 -15
- package/dist/src/gl/vertexRangeIndex.d.ts +23 -0
- package/dist/src/gl/vertexRangeIndex.d.ts.map +1 -0
- package/dist/src/gl/vertexRangeIndex.js +150 -0
- package/dist/src/index.d.ts +3 -9
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -114
- package/dist/src/marks/__snapshots__/shaderSnapshot.test.js.snap +4462 -0
- package/dist/src/marks/link.d.ts.map +1 -1
- package/dist/src/marks/link.js +0 -23
- package/dist/src/marks/mark.d.ts +8 -1
- package/dist/src/marks/mark.d.ts.map +1 -1
- package/dist/src/marks/mark.js +61 -20
- package/dist/src/marks/markUtils.d.ts +18 -1
- package/dist/src/marks/markUtils.d.ts.map +1 -1
- package/dist/src/marks/markUtils.js +52 -4
- package/dist/src/marks/point.d.ts.map +1 -1
- package/dist/src/marks/point.js +6 -26
- package/dist/src/marks/rect.d.ts.map +1 -1
- package/dist/src/marks/rect.js +13 -21
- package/dist/src/marks/rule.d.ts +7 -2
- package/dist/src/marks/rule.d.ts.map +1 -1
- package/dist/src/marks/rule.js +125 -16
- package/dist/src/marks/text.d.ts.map +1 -1
- package/dist/src/marks/text.js +5 -47
- package/dist/src/minimal.d.ts +8 -0
- package/dist/src/minimal.d.ts.map +1 -0
- package/dist/src/minimal.js +21 -0
- package/dist/src/paramRuntime/expressionCompiler.d.ts +2 -1
- package/dist/src/paramRuntime/expressionCompiler.d.ts.map +1 -1
- package/dist/src/paramRuntime/expressionCompiler.js +3 -2
- package/dist/src/paramRuntime/expressionRef.d.ts +4 -1
- package/dist/src/paramRuntime/expressionRef.d.ts.map +1 -1
- package/dist/src/paramRuntime/expressionRef.js +10 -3
- package/dist/src/paramRuntime/graphRuntime.d.ts.map +1 -1
- package/dist/src/paramRuntime/graphRuntime.js +15 -6
- package/dist/src/paramRuntime/paramRuntime.d.ts +8 -2
- package/dist/src/paramRuntime/paramRuntime.d.ts.map +1 -1
- package/dist/src/paramRuntime/paramRuntime.js +10 -5
- package/dist/src/paramRuntime/types.d.ts +1 -0
- package/dist/src/paramRuntime/types.d.ts.map +1 -1
- package/dist/src/paramRuntime/types.js +1 -0
- package/dist/src/paramRuntime/viewParamRuntime.d.ts +24 -4
- package/dist/src/paramRuntime/viewParamRuntime.d.ts.map +1 -1
- package/dist/src/paramRuntime/viewParamRuntime.js +52 -6
- package/dist/src/scale/scale.d.ts.map +1 -1
- package/dist/src/scale/scale.js +14 -7
- package/dist/src/scales/axisResolution.d.ts.map +1 -1
- package/dist/src/scales/axisResolution.js +9 -5
- package/dist/src/scales/domainPlanner.d.ts +82 -16
- package/dist/src/scales/domainPlanner.d.ts.map +1 -1
- package/dist/src/scales/domainPlanner.js +364 -131
- package/dist/src/scales/indexLikeDomainUtils.d.ts +29 -0
- package/dist/src/scales/indexLikeDomainUtils.d.ts.map +1 -0
- package/dist/src/scales/indexLikeDomainUtils.js +67 -0
- package/dist/src/scales/resolutionMemberOrder.d.ts +15 -0
- package/dist/src/scales/resolutionMemberOrder.d.ts.map +1 -0
- package/dist/src/scales/resolutionMemberOrder.js +22 -0
- package/dist/src/scales/scaleInstanceManager.d.ts.map +1 -1
- package/dist/src/scales/scaleInstanceManager.js +7 -2
- package/dist/src/scales/scaleInteractionController.d.ts.map +1 -1
- package/dist/src/scales/scaleInteractionController.js +43 -4
- package/dist/src/scales/scalePropsResolver.d.ts +5 -3
- package/dist/src/scales/scalePropsResolver.d.ts.map +1 -1
- package/dist/src/scales/scalePropsResolver.js +108 -8
- package/dist/src/scales/scaleResolution.d.ts +35 -1
- package/dist/src/scales/scaleResolution.d.ts.map +1 -1
- package/dist/src/scales/scaleResolution.js +381 -66
- package/dist/src/scales/scaleResolutionTestUtils.d.ts.map +1 -1
- package/dist/src/scales/scaleResolutionTestUtils.js +6 -2
- package/dist/src/scales/scaleRules.d.ts.map +1 -1
- package/dist/src/scales/scaleRules.js +16 -2
- package/dist/src/scales/selectionDomainUtils.d.ts +30 -0
- package/dist/src/scales/selectionDomainUtils.d.ts.map +1 -1
- package/dist/src/scales/selectionDomainUtils.js +116 -1
- package/dist/src/screenshotExport.d.ts +23 -0
- package/dist/src/screenshotExport.d.ts.map +1 -0
- package/dist/src/screenshotExport.js +44 -0
- package/dist/src/screenshotHarness.d.ts.map +1 -1
- package/dist/src/screenshotHarness.js +26 -25
- package/dist/src/spec/axis.d.ts +43 -32
- package/dist/src/spec/channel.d.ts +19 -13
- package/dist/src/spec/config.d.ts +264 -0
- package/dist/src/spec/data.d.ts +19 -0
- package/dist/src/spec/decoration.d.ts +51 -0
- package/dist/src/spec/exampleFiles.d.ts +12 -0
- package/dist/src/spec/exampleFiles.d.ts.map +1 -0
- package/dist/src/spec/exampleFiles.js +52 -0
- package/dist/src/spec/font.d.ts +1 -1
- package/dist/src/spec/mark.d.ts +97 -13
- package/dist/src/spec/parameter.d.ts +30 -10
- package/dist/src/spec/root.d.ts +14 -0
- package/dist/src/spec/scale.d.ts +31 -14
- package/dist/src/spec/title.d.ts +13 -2
- package/dist/src/spec/tooltip.d.ts +1 -1
- package/dist/src/spec/transform.d.ts +39 -4
- package/dist/src/spec/view.d.ts +67 -19
- package/dist/src/styles/genome-spy.css +55 -55
- 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 +23 -22
- package/dist/src/testSetup.d.ts +2 -0
- package/dist/src/testSetup.d.ts.map +1 -0
- package/dist/src/testSetup.js +5 -0
- package/dist/src/tooltip/dataTooltipHandler.js +8 -2
- package/dist/src/tooltip/tooltipContext.d.ts.map +1 -1
- package/dist/src/tooltip/tooltipContext.js +3 -2
- package/dist/src/types/embedApi.d.ts +7 -0
- package/dist/src/types/encoder.d.ts +17 -15
- package/dist/src/types/scaleResolutionApi.d.ts +20 -0
- package/dist/src/types/viewContext.d.ts +23 -1
- package/dist/src/utils/expression.d.ts +18 -10
- package/dist/src/utils/expression.d.ts.map +1 -1
- package/dist/src/utils/expression.js +354 -19
- package/dist/src/utils/field.d.ts.map +1 -1
- package/dist/src/utils/field.js +0 -1
- package/dist/src/utils/inertia.d.ts.map +1 -1
- package/dist/src/utils/inertia.js +0 -1
- package/dist/src/utils/inputBinding.d.ts +1 -1
- package/dist/src/utils/interaction.d.ts +109 -0
- package/dist/src/utils/interaction.d.ts.map +1 -0
- package/dist/src/utils/interaction.js +200 -0
- package/dist/src/utils/interactionEvent.d.ts +21 -42
- package/dist/src/utils/interactionEvent.d.ts.map +1 -1
- package/dist/src/utils/interactionEvent.js +43 -66
- package/dist/src/utils/kWayMerge.js +1 -1
- package/dist/src/utils/mergeObjects.d.ts.map +1 -1
- package/dist/src/utils/mergeObjects.js +0 -2
- package/dist/src/utils/radixSort.d.ts.map +1 -1
- package/dist/src/utils/radixSort.js +0 -2
- package/dist/src/utils/throttle.d.ts.map +1 -1
- package/dist/src/utils/throttle.js +0 -2
- package/dist/src/utils/ui/tooltip.d.ts +1 -0
- package/dist/src/utils/ui/tooltip.d.ts.map +1 -1
- package/dist/src/utils/ui/tooltip.js +1 -0
- package/dist/src/utils/url.js +1 -1
- package/dist/src/view/axisGridView.d.ts +1 -1
- package/dist/src/view/axisGridView.d.ts.map +1 -1
- package/dist/src/view/axisGridView.js +2 -47
- package/dist/src/view/axisView.d.ts +2 -3
- package/dist/src/view/axisView.d.ts.map +1 -1
- package/dist/src/view/axisView.js +251 -106
- package/dist/src/view/concatView.d.ts +2 -1
- package/dist/src/view/concatView.d.ts.map +1 -1
- package/dist/src/view/concatView.js +4 -2
- package/dist/src/view/containerMutationHelper.d.ts +3 -0
- package/dist/src/view/containerMutationHelper.d.ts.map +1 -1
- package/dist/src/view/containerMutationHelper.js +4 -1
- package/dist/src/view/facetView.d.ts +1 -1
- package/dist/src/view/facetView.js +3 -3
- package/dist/src/view/flowBuilder.d.ts +1 -1
- package/dist/src/view/flowBuilder.d.ts.map +1 -1
- package/dist/src/view/flowBuilder.js +13 -9
- package/dist/src/view/gridView/gridChild.d.ts +6 -0
- package/dist/src/view/gridView/gridChild.d.ts.map +1 -1
- package/dist/src/view/gridView/gridChild.js +72 -43
- package/dist/src/view/gridView/gridView.d.ts.map +1 -1
- package/dist/src/view/gridView/gridView.js +255 -101
- package/dist/src/view/gridView/keyboardZoomController.d.ts +2 -2
- package/dist/src/view/gridView/keyboardZoomController.d.ts.map +1 -1
- package/dist/src/view/gridView/keyboardZoomController.js +1 -1
- package/dist/src/view/gridView/scrollbar.d.ts.map +1 -1
- package/dist/src/view/gridView/scrollbar.js +4 -2
- package/dist/src/view/gridView/selectionRect.d.ts +4 -0
- package/dist/src/view/gridView/selectionRect.d.ts.map +1 -1
- package/dist/src/view/gridView/selectionRect.js +20 -1
- package/dist/src/view/gridView/separatorView.d.ts +1 -0
- package/dist/src/view/gridView/separatorView.d.ts.map +1 -1
- package/dist/src/view/gridView/separatorView.js +9 -0
- package/dist/src/view/interactionRouting.d.ts +20 -0
- package/dist/src/view/interactionRouting.d.ts.map +1 -0
- package/dist/src/view/interactionRouting.js +53 -0
- package/dist/src/view/layerView.d.ts.map +1 -1
- package/dist/src/view/layerView.js +12 -9
- package/dist/src/view/layout/grid.js +1 -1
- package/dist/src/view/renderingContext/bufferedViewRenderingContext.d.ts.map +1 -1
- package/dist/src/view/renderingContext/bufferedViewRenderingContext.js +0 -2
- package/dist/src/view/resolutionPlanner.d.ts +9 -0
- package/dist/src/view/resolutionPlanner.d.ts.map +1 -0
- package/dist/src/view/resolutionPlanner.js +302 -0
- package/dist/src/view/testUtils.d.ts +17 -3
- package/dist/src/view/testUtils.d.ts.map +1 -1
- package/dist/src/view/testUtils.js +62 -69
- package/dist/src/view/title.d.ts +8 -1
- package/dist/src/view/title.d.ts.map +1 -1
- package/dist/src/view/title.js +66 -76
- package/dist/src/view/unitView.d.ts +1 -1
- package/dist/src/view/unitView.d.ts.map +1 -1
- package/dist/src/view/unitView.js +72 -169
- package/dist/src/view/view.d.ts +76 -30
- package/dist/src/view/view.d.ts.map +1 -1
- package/dist/src/view/view.js +138 -48
- package/dist/src/view/viewFactory.d.ts +11 -3
- package/dist/src/view/viewFactory.d.ts.map +1 -1
- package/dist/src/view/viewFactory.js +37 -11
- package/dist/src/view/viewUtils.d.ts.map +1 -1
- package/dist/src/view/viewUtils.js +41 -5
- package/dist/src/view/zoom.d.ts +2 -2
- package/dist/src/view/zoom.d.ts.map +1 -1
- package/dist/src/view/zoom.js +21 -23
- package/package.json +18 -10
- package/dist/bundle/AbortablePromiseCache-Dj0vzLnp.js +0 -149
- package/dist/bundle/browser-0iNU5Wit.js +0 -138
- package/dist/bundle/index-BYsZN7b0.js +0 -1597
- package/dist/bundle/index-C3kClAEN.js +0 -1771
- package/dist/bundle/index-C7wOh6y1.js +0 -657
- package/dist/bundle/index-CRaQAuki.js +0 -326
- package/dist/bundle/index-D9v1PCj9.js +0 -507
- package/dist/bundle/index-GDOuv_D5.js +0 -266
- package/dist/bundle/index-Gt44EOIH.js +0 -628
- package/dist/bundle/inflate-GtwLkvSP.js +0 -1048
- package/dist/bundle/parquetRead-BnAGCa4_.js +0 -1663
- package/dist/bundle/unzip-Bac01w6X.js +0 -1492
- package/dist/src/config/scaleDefaults.d.ts +0 -8
- package/dist/src/config/scaleDefaults.d.ts.map +0 -1
- package/dist/src/config/scaleDefaults.js +0 -45
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import LayerView from "./layerView.js";
|
|
2
2
|
import { FlexDimensions } from "./layout/flexLayout.js";
|
|
3
|
+
import UnitView from "./unitView.js";
|
|
3
4
|
import { markViewAsNonAddressable } from "./viewSelectors.js";
|
|
5
|
+
import { getConfiguredAxisDefaults } from "../config/axisConfig.js";
|
|
4
6
|
|
|
5
7
|
const CHROM_LAYER_NAME = "chromosome_ticks_and_labels";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
const LABELS_LAYER_NAME = "labels_main";
|
|
9
|
+
const TICKS_AND_LABELS_LAYER_NAME = "ticks_and_labels";
|
|
10
|
+
const AXIS_EXTENT_PARAM = "axisExtent";
|
|
11
|
+
const LABEL_WIDTH_FIELD = "_labelWidth";
|
|
12
|
+
const Y_AXIS_LABEL_HEURISTIC_PX = 10;
|
|
13
|
+
const AUTO_EXTENT_GROW_THRESHOLD_PX = 2;
|
|
12
14
|
|
|
13
15
|
/**
|
|
14
16
|
* @param {import("../spec/channel.js").PrimaryPositionalChannel} channel
|
|
@@ -49,6 +51,20 @@ export function orient2channel(slot) {
|
|
|
49
51
|
*
|
|
50
52
|
*/
|
|
51
53
|
export default class AxisView extends LayerView {
|
|
54
|
+
#effectiveExtent;
|
|
55
|
+
|
|
56
|
+
#axisExtentSetter;
|
|
57
|
+
|
|
58
|
+
/** @type {UnitView | undefined} */
|
|
59
|
+
#labelsView;
|
|
60
|
+
|
|
61
|
+
// This assumes the labels collector identity stays stable for the lifetime
|
|
62
|
+
// of the AxisView. If flow reinitialization starts replacing collectors for
|
|
63
|
+
// existing axis views, track the collector instance instead of a boolean.
|
|
64
|
+
#labelsObserverAttached = false;
|
|
65
|
+
|
|
66
|
+
#measurementScheduled = false;
|
|
67
|
+
|
|
52
68
|
/**
|
|
53
69
|
*
|
|
54
70
|
* @typedef {import("../spec/view.js").LayerSpec} LayerSpec
|
|
@@ -57,8 +73,6 @@ export default class AxisView extends LayerView {
|
|
|
57
73
|
* @typedef {import("../spec/axis.js").GenomeAxis} GenomeAxis
|
|
58
74
|
* @typedef {import("../spec/axis.js").AxisOrient} AxisOrient
|
|
59
75
|
* @typedef {import("./layout/flexLayout.js").SizeDef} SizeDef
|
|
60
|
-
*
|
|
61
|
-
* @typedef {Axis & { extent: number }} AugmentedAxis
|
|
62
76
|
*/
|
|
63
77
|
|
|
64
78
|
/**
|
|
@@ -70,20 +84,35 @@ export default class AxisView extends LayerView {
|
|
|
70
84
|
* @param {import("./view.js").ViewOptions} [options]
|
|
71
85
|
*/
|
|
72
86
|
constructor(axisProps, type, context, layoutParent, dataParent, options) {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
87
|
+
const channel = orient2channel(axisProps.orient);
|
|
88
|
+
const configuredDefaults = getConfiguredAxisDefaults(
|
|
89
|
+
dataParent.getConfigScopes(),
|
|
90
|
+
{
|
|
91
|
+
channel,
|
|
92
|
+
orient: axisProps.orient,
|
|
93
|
+
type: /** @type {import("../spec/channel.js").Type} */ (type),
|
|
94
|
+
style: axisProps.style,
|
|
95
|
+
}
|
|
96
|
+
);
|
|
77
97
|
|
|
78
|
-
|
|
98
|
+
/** @type {Axis} */
|
|
99
|
+
const preliminaryAxisProps = {
|
|
100
|
+
...configuredDefaults,
|
|
101
|
+
...axisProps,
|
|
102
|
+
};
|
|
79
103
|
|
|
80
104
|
/** @type {Axis | GenomeAxis} */
|
|
81
105
|
const fullAxisProps = {
|
|
82
|
-
...
|
|
83
|
-
...getDefaultAngleAndAlign(type,
|
|
106
|
+
...configuredDefaults,
|
|
107
|
+
...getDefaultAngleAndAlign(type, preliminaryAxisProps),
|
|
84
108
|
...axisProps,
|
|
85
109
|
};
|
|
86
110
|
|
|
111
|
+
// Now the presence of genomeAxis is based on field type, not scale type.
|
|
112
|
+
// TODO: Use scale instead. However, it would make the initialization much more
|
|
113
|
+
// complex because scales are not available before scale resolution.
|
|
114
|
+
const genomeAxis = type == "locus";
|
|
115
|
+
|
|
87
116
|
super(
|
|
88
117
|
genomeAxis
|
|
89
118
|
? createGenomeAxis(fullAxisProps, type)
|
|
@@ -99,10 +128,37 @@ export default class AxisView extends LayerView {
|
|
|
99
128
|
);
|
|
100
129
|
|
|
101
130
|
this.axisProps = fullAxisProps;
|
|
131
|
+
this.#effectiveExtent = getExtent(fullAxisProps);
|
|
132
|
+
this.#axisExtentSetter = this.paramRuntime.allocateSetter(
|
|
133
|
+
AXIS_EXTENT_PARAM,
|
|
134
|
+
this.#effectiveExtent
|
|
135
|
+
);
|
|
102
136
|
|
|
103
137
|
markViewAsNonAddressable(this, { skipSubtree: true });
|
|
104
138
|
}
|
|
105
139
|
|
|
140
|
+
async initializeChildren() {
|
|
141
|
+
await super.initializeChildren();
|
|
142
|
+
|
|
143
|
+
const labelsView = this.getDescendants().find(
|
|
144
|
+
(view) =>
|
|
145
|
+
view instanceof UnitView && view.name === LABELS_LAYER_NAME
|
|
146
|
+
);
|
|
147
|
+
if (labelsView instanceof UnitView) {
|
|
148
|
+
this.#labelsView = labelsView;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if (!this.axisProps.labels || !this.#labelsView) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
this.registerDisposer(
|
|
156
|
+
this._addBroadcastHandler("subtreeDataReady", () =>
|
|
157
|
+
this.#ensureLabelsObserver()
|
|
158
|
+
)
|
|
159
|
+
);
|
|
160
|
+
}
|
|
161
|
+
|
|
106
162
|
getSize() {
|
|
107
163
|
/** @type {SizeDef} */
|
|
108
164
|
const perpendicularSize = { px: this.getPerpendicularSize() };
|
|
@@ -118,91 +174,181 @@ export default class AxisView extends LayerView {
|
|
|
118
174
|
}
|
|
119
175
|
|
|
120
176
|
getPerpendicularSize() {
|
|
121
|
-
return
|
|
177
|
+
return this.#effectiveExtent;
|
|
122
178
|
}
|
|
123
179
|
|
|
124
180
|
isPickingSupported() {
|
|
125
181
|
return false;
|
|
126
182
|
}
|
|
183
|
+
|
|
184
|
+
#scheduleAutoExtentMeasurement() {
|
|
185
|
+
if (this.#measurementScheduled) {
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
this.#measurementScheduled = true;
|
|
190
|
+
queueMicrotask(() => {
|
|
191
|
+
this.#measurementScheduled = false;
|
|
192
|
+
this.#updateAutoExtent();
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
#ensureLabelsObserver() {
|
|
197
|
+
if (this.#labelsObserverAttached) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
const collector = this.#labelsView?.getCollector();
|
|
202
|
+
if (!collector) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
this.#labelsObserverAttached = true;
|
|
207
|
+
this.registerDisposer(
|
|
208
|
+
collector.observe(() => this.#scheduleAutoExtentMeasurement())
|
|
209
|
+
);
|
|
210
|
+
|
|
211
|
+
if (collector.completed) {
|
|
212
|
+
this.#scheduleAutoExtentMeasurement();
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
#updateAutoExtent() {
|
|
217
|
+
const channel = orient2channel(this.axisProps.orient);
|
|
218
|
+
const scaleResolution = this.dataParent.getScaleResolution(channel);
|
|
219
|
+
if (
|
|
220
|
+
scaleResolution &&
|
|
221
|
+
!scaleResolution.isDomainDefinedExplicitly() &&
|
|
222
|
+
!scaleResolution.isDomainInitialized()
|
|
223
|
+
) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
const measuredLabelExtent = getMeasuredLabelExtent(
|
|
228
|
+
this.axisProps,
|
|
229
|
+
this.context,
|
|
230
|
+
this.#labelsView
|
|
231
|
+
);
|
|
232
|
+
if (measuredLabelExtent === undefined) {
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
const nextExtent = getExtent(this.axisProps, measuredLabelExtent);
|
|
237
|
+
const willGrow =
|
|
238
|
+
nextExtent >= this.#effectiveExtent + AUTO_EXTENT_GROW_THRESHOLD_PX;
|
|
239
|
+
|
|
240
|
+
if (!willGrow) {
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
this.#effectiveExtent = nextExtent;
|
|
245
|
+
this.#axisExtentSetter(nextExtent);
|
|
246
|
+
this.invalidateSizeCache();
|
|
247
|
+
this.context.requestLayoutReflow();
|
|
248
|
+
}
|
|
127
249
|
}
|
|
128
250
|
|
|
129
251
|
/**
|
|
130
252
|
* @param {Axis} axisProps
|
|
253
|
+
* @param {number} [measuredLabelExtent]
|
|
131
254
|
*/
|
|
132
|
-
function getExtent(axisProps) {
|
|
133
|
-
const mainChannel = orient2channel(axisProps.orient);
|
|
134
|
-
|
|
255
|
+
function getExtent(axisProps, measuredLabelExtent) {
|
|
135
256
|
/** @type {number} */
|
|
257
|
+
let extent = getFixedAxisExtent(axisProps);
|
|
258
|
+
|
|
259
|
+
if (axisProps.labels) {
|
|
260
|
+
extent += measuredLabelExtent ?? getHeuristicLabelExtent(axisProps);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
// TODO: Include chrom ticks and labels!
|
|
264
|
+
|
|
265
|
+
return clampAxisExtent(axisProps, extent);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* @param {Axis} axisProps
|
|
270
|
+
*/
|
|
271
|
+
function getFixedAxisExtent(axisProps) {
|
|
136
272
|
let extent = (axisProps.ticks && axisProps.tickSize) || 0;
|
|
137
273
|
|
|
138
274
|
if (axisProps.labels) {
|
|
139
275
|
extent += axisProps.labelPadding;
|
|
140
|
-
if (mainChannel == "x") {
|
|
141
|
-
extent += axisProps.labelFontSize;
|
|
142
|
-
} else {
|
|
143
|
-
extent += 30; // TODO: Measure label lengths!
|
|
144
|
-
}
|
|
145
276
|
}
|
|
277
|
+
|
|
146
278
|
if (axisProps.title) {
|
|
147
279
|
extent += axisProps.titlePadding + axisProps.titleFontSize;
|
|
148
280
|
}
|
|
149
281
|
|
|
150
|
-
|
|
282
|
+
return extent;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* @param {Axis} axisProps
|
|
287
|
+
*/
|
|
288
|
+
function getHeuristicLabelExtent(axisProps) {
|
|
289
|
+
return orient2channel(axisProps.orient) == "x"
|
|
290
|
+
? axisProps.labelFontSize
|
|
291
|
+
: Y_AXIS_LABEL_HEURISTIC_PX;
|
|
292
|
+
}
|
|
151
293
|
|
|
152
|
-
|
|
294
|
+
/**
|
|
295
|
+
* @param {Axis} axisProps
|
|
296
|
+
* @param {number} extent
|
|
297
|
+
*/
|
|
298
|
+
function clampAxisExtent(axisProps, extent) {
|
|
299
|
+
return Math.min(
|
|
153
300
|
axisProps.maxExtent || Infinity,
|
|
154
301
|
Math.max(axisProps.minExtent || 0, extent)
|
|
155
302
|
);
|
|
156
|
-
|
|
157
|
-
return extent;
|
|
158
303
|
}
|
|
159
304
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
305
|
+
/**
|
|
306
|
+
* @param {Axis} axisProps
|
|
307
|
+
* @param {import("../types/viewContext.js").default} context
|
|
308
|
+
* @param {UnitView | undefined} labelsView
|
|
309
|
+
*/
|
|
310
|
+
function getMeasuredLabelExtent(axisProps, context, labelsView) {
|
|
311
|
+
const collector = labelsView?.getCollector();
|
|
312
|
+
if (!collector?.completed) {
|
|
313
|
+
return undefined;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
let maxWidth = 0;
|
|
317
|
+
collector.visitData((datum) => {
|
|
318
|
+
maxWidth = Math.max(maxWidth, Number(datum[LABEL_WIDTH_FIELD]) || 0);
|
|
319
|
+
});
|
|
320
|
+
|
|
321
|
+
const font = axisProps.labelFont
|
|
322
|
+
? context.fontManager.getFont(
|
|
323
|
+
axisProps.labelFont,
|
|
324
|
+
/** @type {import("../spec/font.js").FontStyle | undefined} */ (
|
|
325
|
+
axisProps.labelFontStyle
|
|
326
|
+
),
|
|
327
|
+
/** @type {import("../spec/font.js").FontWeight | undefined} */ (
|
|
328
|
+
axisProps.labelFontWeight
|
|
329
|
+
)
|
|
330
|
+
)
|
|
331
|
+
: context.fontManager.getDefaultFont();
|
|
332
|
+
const metrics = font.metrics;
|
|
333
|
+
if (!metrics) {
|
|
334
|
+
return undefined;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
const labelHeight =
|
|
338
|
+
((metrics.capHeight + metrics.descent) / metrics.common.base) *
|
|
339
|
+
axisProps.labelFontSize;
|
|
340
|
+
|
|
341
|
+
const radians = (axisProps.labelAngle * Math.PI) / 180;
|
|
342
|
+
const absSin = Math.abs(Math.sin(radians));
|
|
343
|
+
const absCos = Math.abs(Math.cos(radians));
|
|
344
|
+
|
|
345
|
+
const perpendicularExtent =
|
|
346
|
+
orient2channel(axisProps.orient) == "x"
|
|
347
|
+
? maxWidth * absSin + labelHeight * absCos
|
|
348
|
+
: maxWidth * absCos + labelHeight * absSin;
|
|
349
|
+
|
|
350
|
+
return Math.ceil(perpendicularExtent);
|
|
351
|
+
}
|
|
206
352
|
|
|
207
353
|
/**
|
|
208
354
|
* @param {string} type
|
|
@@ -258,7 +404,7 @@ function getDefaultAngleAndAlign(type, axisProps) {
|
|
|
258
404
|
function createAxis(axisProps, type) {
|
|
259
405
|
// TODO: Ensure that no channels except the positional ones are shared
|
|
260
406
|
|
|
261
|
-
const ap =
|
|
407
|
+
const ap = axisProps;
|
|
262
408
|
|
|
263
409
|
const main = orient2channel(ap.orient);
|
|
264
410
|
const secondary = getPerpendicularChannel(main);
|
|
@@ -294,13 +440,27 @@ function createAxis(axisProps, type) {
|
|
|
294
440
|
* @return {import("../spec/view.js").UnitSpec}
|
|
295
441
|
*/
|
|
296
442
|
const createLabels = () => ({
|
|
297
|
-
name:
|
|
443
|
+
name: LABELS_LAYER_NAME,
|
|
444
|
+
transform: [
|
|
445
|
+
{
|
|
446
|
+
type: "measureText",
|
|
447
|
+
field: "label",
|
|
448
|
+
as: LABEL_WIDTH_FIELD,
|
|
449
|
+
fontSize: ap.labelFontSize,
|
|
450
|
+
font: ap.labelFont,
|
|
451
|
+
fontStyle: ap.labelFontStyle,
|
|
452
|
+
fontWeight: ap.labelFontWeight,
|
|
453
|
+
},
|
|
454
|
+
],
|
|
298
455
|
mark: {
|
|
299
456
|
type: "text",
|
|
300
457
|
clip: false,
|
|
301
458
|
align: ap.labelAlign,
|
|
302
459
|
angle: ap.labelAngle,
|
|
303
460
|
baseline: ap.labelBaseline,
|
|
461
|
+
font: ap.labelFont,
|
|
462
|
+
fontStyle: ap.labelFontStyle,
|
|
463
|
+
fontWeight: ap.labelFontWeight,
|
|
304
464
|
[secondary + "Offset"]:
|
|
305
465
|
(ap.tickSize + ap.labelPadding) * offsetDirection,
|
|
306
466
|
[secondary]: anchor,
|
|
@@ -331,7 +491,11 @@ function createAxis(axisProps, type) {
|
|
|
331
491
|
encoding: {
|
|
332
492
|
[secondary]: { value: anchor },
|
|
333
493
|
[secondary + "2"]: {
|
|
334
|
-
value:
|
|
494
|
+
value: {
|
|
495
|
+
expr: `${anchor} - ${ap.tickSize} / ${AXIS_EXTENT_PARAM} * ${
|
|
496
|
+
anchor ? 1 : -1
|
|
497
|
+
}`,
|
|
498
|
+
},
|
|
335
499
|
},
|
|
336
500
|
},
|
|
337
501
|
});
|
|
@@ -363,7 +527,7 @@ function createAxis(axisProps, type) {
|
|
|
363
527
|
const createTicksAndLabels = () => {
|
|
364
528
|
/** @type {LayerSpec} */
|
|
365
529
|
const spec = {
|
|
366
|
-
name:
|
|
530
|
+
name: TICKS_AND_LABELS_LAYER_NAME,
|
|
367
531
|
encoding: {
|
|
368
532
|
[main]: makeMainDomainDef(),
|
|
369
533
|
},
|
|
@@ -386,7 +550,6 @@ function createAxis(axisProps, type) {
|
|
|
386
550
|
// Force the resolution towards the parent view even if it has "independent" behavior
|
|
387
551
|
resolve: { scale: { [main]: "forced" } },
|
|
388
552
|
domainInert: true,
|
|
389
|
-
[CHANNEL_DIMENSIONS[getPerpendicularChannel(main)]]: ap.extent,
|
|
390
553
|
data: {
|
|
391
554
|
lazy: {
|
|
392
555
|
type: "axisTicks",
|
|
@@ -412,34 +575,13 @@ function createAxis(axisProps, type) {
|
|
|
412
575
|
return axisSpec;
|
|
413
576
|
}
|
|
414
577
|
|
|
415
|
-
/** @type {import("../spec/axis.js").GenomeAxis} */
|
|
416
|
-
const defaultGenomeAxisProps = {
|
|
417
|
-
...defaultAxisProps,
|
|
418
|
-
|
|
419
|
-
chromTicks: true,
|
|
420
|
-
chromTickSize: 18,
|
|
421
|
-
chromTickWidth: 1,
|
|
422
|
-
chromTickColor: "#989898",
|
|
423
|
-
chromTickDash: [4, 2],
|
|
424
|
-
chromTickDashOffset: 1,
|
|
425
|
-
|
|
426
|
-
chromLabels: true,
|
|
427
|
-
chromLabelFontSize: 13,
|
|
428
|
-
chromLabelFontWeight: "normal",
|
|
429
|
-
chromLabelFontStyle: "normal",
|
|
430
|
-
chromLabelColor: "black",
|
|
431
|
-
chromLabelAlign: "left",
|
|
432
|
-
chromLabelPadding: 7,
|
|
433
|
-
// TODO: chromLabelAngle
|
|
434
|
-
};
|
|
435
|
-
|
|
436
578
|
/**
|
|
437
579
|
* @param {GenomeAxis} axisProps
|
|
438
580
|
* @param {string} type
|
|
439
581
|
* @returns {LayerSpec}
|
|
440
582
|
*/
|
|
441
583
|
export function createGenomeAxis(axisProps, type) {
|
|
442
|
-
const ap =
|
|
584
|
+
const ap = axisProps;
|
|
443
585
|
|
|
444
586
|
const main = orient2channel(ap.orient);
|
|
445
587
|
const secondary = getPerpendicularChannel(main);
|
|
@@ -456,8 +598,11 @@ export function createGenomeAxis(axisProps, type) {
|
|
|
456
598
|
strokeDash: axisProps.chromTickDash,
|
|
457
599
|
strokeDashOffset: axisProps.chromTickDashOffset,
|
|
458
600
|
[secondary]: anchor,
|
|
459
|
-
[secondary + "2"]:
|
|
460
|
-
anchor -
|
|
601
|
+
[secondary + "2"]: {
|
|
602
|
+
expr: `${anchor} - ${ap.chromTickSize} / ${AXIS_EXTENT_PARAM} * ${
|
|
603
|
+
anchor ? 1 : -1
|
|
604
|
+
}`,
|
|
605
|
+
},
|
|
461
606
|
color: axisProps.chromTickColor,
|
|
462
607
|
size: ap.chromTickWidth,
|
|
463
608
|
},
|
|
@@ -467,7 +612,7 @@ export function createGenomeAxis(axisProps, type) {
|
|
|
467
612
|
* @return {import("../spec/view.js").UnitSpec}
|
|
468
613
|
*/
|
|
469
614
|
const createChromosomeLabels = () => {
|
|
470
|
-
/** @type {Partial<import("../spec/mark.js").
|
|
615
|
+
/** @type {Partial<import("../spec/mark.js").TextProps>} */
|
|
471
616
|
let chromLabelMarkProps;
|
|
472
617
|
switch (ap.orient) {
|
|
473
618
|
case "top":
|
|
@@ -614,10 +759,10 @@ export function createGenomeAxis(axisProps, type) {
|
|
|
614
759
|
|
|
615
760
|
// TODO: Simplify the following mess
|
|
616
761
|
axisSpec.layer
|
|
617
|
-
.filter((view) => view.name ==
|
|
762
|
+
.filter((view) => view.name == TICKS_AND_LABELS_LAYER_NAME)
|
|
618
763
|
.forEach((/** @type {LayerSpec} */ view) =>
|
|
619
764
|
view.layer
|
|
620
|
-
.filter((view) => view.name ==
|
|
765
|
+
.filter((view) => view.name == LABELS_LAYER_NAME)
|
|
621
766
|
.forEach(
|
|
622
767
|
(
|
|
623
768
|
/** @type {import("../spec/view.js").UnitSpec} */ view
|
|
@@ -12,8 +12,9 @@ export default class ConcatView<TSpec extends import("../spec/view.js").AnyConca
|
|
|
12
12
|
* @param {import("./containerView.js").default} layoutParent
|
|
13
13
|
* @param {import("./view.js").default} dataParent
|
|
14
14
|
* @param {string} name
|
|
15
|
+
* @param {import("./view.js").ViewOptions} [options]
|
|
15
16
|
*/
|
|
16
|
-
constructor(spec: TSpec, context: import("../types/viewContext.js").default, layoutParent: import("./containerView.js").default, dataParent: import("./view.js").default, name: string);
|
|
17
|
+
constructor(spec: TSpec, context: import("../types/viewContext.js").default, layoutParent: import("./containerView.js").default, dataParent: import("./view.js").default, name: string, options?: import("./view.js").ViewOptions);
|
|
17
18
|
/**
|
|
18
19
|
* Adds a child spec dynamically. Intended for post-initialization updates.
|
|
19
20
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"concatView.d.ts","sourceRoot":"","sources":["../../../src/view/concatView.js"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,gCAHwD,KAAK,SAAhD,OAAQ,iBAAiB,EAAE,aAAc;IAIlD
|
|
1
|
+
{"version":3,"file":"concatView.d.ts","sourceRoot":"","sources":["../../../src/view/concatView.js"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,gCAHwD,KAAK,SAAhD,OAAQ,iBAAiB,EAAE,aAAc;IAIlD;;;;;;;;OAQG;IACH,kBAPW,KAAK,WACL,OAAO,yBAAyB,EAAE,OAAO,gBACzC,OAAO,oBAAoB,EAAE,OAAO,cACpC,OAAO,WAAW,EAAE,OAAO,QAC3B,MAAM,YACN,OAAO,WAAW,EAAE,WAAW,EAkBzC;IA6BD;;;;;;;;;OASG;IACH,wBAJW,OAAO,iBAAiB,EAAE,QAAQ,UAClC,MAAM,GACJ,OAAO,CAAC,OAAO,WAAW,EAAE,OAAO,CAAC,CAIhD;IAED;;;;OAIG;IACH,qBAFW,MAAM,iBAIhB;;CA2EJ;qBAhKoB,wBAAwB"}
|
|
@@ -20,8 +20,9 @@ export default class ConcatView extends GridView {
|
|
|
20
20
|
* @param {import("./containerView.js").default} layoutParent
|
|
21
21
|
* @param {import("./view.js").default} dataParent
|
|
22
22
|
* @param {string} name
|
|
23
|
+
* @param {import("./view.js").ViewOptions} [options]
|
|
23
24
|
*/
|
|
24
|
-
constructor(spec, context, layoutParent, dataParent, name) {
|
|
25
|
+
constructor(spec, context, layoutParent, dataParent, name, options) {
|
|
25
26
|
super(
|
|
26
27
|
spec,
|
|
27
28
|
context,
|
|
@@ -32,7 +33,8 @@ export default class ConcatView extends GridView {
|
|
|
32
33
|
? spec.columns
|
|
33
34
|
: isVConcatSpec(spec)
|
|
34
35
|
? 1
|
|
35
|
-
: Infinity
|
|
36
|
+
: Infinity,
|
|
37
|
+
options
|
|
36
38
|
);
|
|
37
39
|
|
|
38
40
|
this.spec = spec;
|
|
@@ -22,6 +22,7 @@ export default class ContainerMutationHelper {
|
|
|
22
22
|
* prepareView?: (view: View, index: number, insertionResult: any) => Promise<void>,
|
|
23
23
|
* afterRemove?: (index: number) => Promise<void>,
|
|
24
24
|
* defaultName?: (index: number, spec: ViewSpec | ImportSpec) => string,
|
|
25
|
+
* createViewOptions?: import("../types/viewContext.js").CreateViewOptions,
|
|
25
26
|
* requestLayout?: boolean
|
|
26
27
|
* }} MutationOptions
|
|
27
28
|
*/
|
|
@@ -40,6 +41,7 @@ export default class ContainerMutationHelper {
|
|
|
40
41
|
prepareView?: (view: import("./view.js").default<import("../spec/view.js").ViewSpec>, index: number, insertionResult: any) => Promise<void>;
|
|
41
42
|
afterRemove?: (index: number) => Promise<void>;
|
|
42
43
|
defaultName?: (index: number, spec: import("../spec/view.js").ViewSpec | import("../spec/view.js").ImportSpec) => string;
|
|
44
|
+
createViewOptions?: import("../types/viewContext.js").CreateViewOptions;
|
|
43
45
|
requestLayout?: boolean;
|
|
44
46
|
});
|
|
45
47
|
container: import("./containerView.js").default<import("../spec/view.js").ContainerSpec>;
|
|
@@ -54,6 +56,7 @@ export default class ContainerMutationHelper {
|
|
|
54
56
|
prepareView?: (view: import("./view.js").default<import("../spec/view.js").ViewSpec>, index: number, insertionResult: any) => Promise<void>;
|
|
55
57
|
afterRemove?: (index: number) => Promise<void>;
|
|
56
58
|
defaultName?: (index: number, spec: import("../spec/view.js").ViewSpec | import("../spec/view.js").ImportSpec) => string;
|
|
59
|
+
createViewOptions?: import("../types/viewContext.js").CreateViewOptions;
|
|
57
60
|
requestLayout?: boolean;
|
|
58
61
|
};
|
|
59
62
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"containerMutationHelper.d.ts","sourceRoot":"","sources":["../../../src/view/containerMutationHelper.js"],"names":[],"mappings":"AAQA;;;GAGG;AACH;IACI;;;;;;;;;;OAUG;IAEH
|
|
1
|
+
{"version":3,"file":"containerMutationHelper.d.ts","sourceRoot":"","sources":["../../../src/view/containerMutationHelper.js"],"names":[],"mappings":"AAQA;;;GAGG;AACH;IACI;;;;;;;;;;OAUG;IAEH;;;;;;;;;;;OAWG;IAEH;;;OAGG;IACH,uBAHW,OAAO,oBAAoB,EAAE,OAAO;uBAZ3B;mBARR,CAAC,yEAAqB,CAAC,EAAE;sBACtB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,yEAAqB,KAAK,IAAI;sBACpD,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;SAMF;oBACnB,CAAC,IAAI,iEAAM,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG;oBAClC,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;sBACrB,CAAC,IAAI,iEAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC;sBAClE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;sBAChC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,yEAAqB,KAAK,MAAM;4BAChD,OAAO,yBAAyB,EAAE,iBAAiB;wBACvD,OAAO;OAW3B;IAFG,yFAA0B;IAC1B;uBAjBgB;mBARR,CAAC,yEAAqB,CAAC,EAAE;sBACtB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,yEAAqB,KAAK,IAAI;sBACpD,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;SAMF;oBACnB,CAAC,IAAI,iEAAM,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG;oBAClC,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;sBACrB,CAAC,IAAI,iEAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC;sBAClE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;sBAChC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,yEAAqB,KAAK,MAAM;4BAChD,OAAO,yBAAyB,EAAE,iBAAiB;wBACvD,OAAO;MAUF;IAG1B;;;;;;OAMG;IACH,wBAJW,OAAO,iBAAiB,EAAE,QAAQ,GAAG,OAAO,iBAAiB,EAAE,UAAU,UACzE,MAAM,GACJ,OAAO,iEAAM,CAuDzB;IAED;;;;OAIG;IACH,qBAFW,MAAM,iBAehB;CACJ"}
|
|
@@ -31,6 +31,7 @@ export default class ContainerMutationHelper {
|
|
|
31
31
|
* prepareView?: (view: View, index: number, insertionResult: any) => Promise<void>,
|
|
32
32
|
* afterRemove?: (index: number) => Promise<void>,
|
|
33
33
|
* defaultName?: (index: number, spec: ViewSpec | ImportSpec) => string,
|
|
34
|
+
* createViewOptions?: import("../types/viewContext.js").CreateViewOptions,
|
|
34
35
|
* requestLayout?: boolean
|
|
35
36
|
* }} MutationOptions
|
|
36
37
|
*/
|
|
@@ -62,7 +63,9 @@ export default class ContainerMutationHelper {
|
|
|
62
63
|
childSpec,
|
|
63
64
|
this.container,
|
|
64
65
|
this.container,
|
|
65
|
-
name
|
|
66
|
+
name,
|
|
67
|
+
undefined,
|
|
68
|
+
this.options.createViewOptions
|
|
66
69
|
);
|
|
67
70
|
|
|
68
71
|
// Reminder: ensure assemblies from the real child hierarchy before any
|
|
@@ -48,7 +48,7 @@ export default class FacetView extends ContainerView<import("../spec/view.js").C
|
|
|
48
48
|
getAccessor(channel: "row" | "column"): any;
|
|
49
49
|
updateFacets(): void;
|
|
50
50
|
updateLabels(): void;
|
|
51
|
-
getFacetGroups():
|
|
51
|
+
getFacetGroups(): string[] | number[] | boolean[];
|
|
52
52
|
/**
|
|
53
53
|
* @param {import("./renderingContext/viewRenderingContext.js").default} context
|
|
54
54
|
* @param {import("./layout/rectangle.js").default} coords
|
|
@@ -15,7 +15,7 @@ export function buildDataFlow(root: import("./view.js").default<import("../spec/
|
|
|
15
15
|
*/
|
|
16
16
|
export function linearizeLocusAccess(view: import("./unitView.js").default): {
|
|
17
17
|
transforms: import("../data/flowNode.js").default[];
|
|
18
|
-
rewrittenEncoding:
|
|
18
|
+
rewrittenEncoding: Record<string, any>;
|
|
19
19
|
/**
|
|
20
20
|
* Should be called after the whole flow has been created in order to
|
|
21
21
|
* not disrupt inheritance of encodings
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flowBuilder.d.ts","sourceRoot":"","sources":["../../../src/view/flowBuilder.js"],"names":[],"mappings":"AAyBA;;;;;;GAMG;AACH,oHALW,QAAQ,eAER,CAAC,IAAI,iEAAM,KAAK,OAAO,gCACvB,CAAC,IAAI,iEAAM,KAAK,OAAO,YAoPjC;AAuBD;;;;;;GAMG;AACH,2CAFW,OAAO,eAAe,EAAE,OAAO;;;
|
|
1
|
+
{"version":3,"file":"flowBuilder.d.ts","sourceRoot":"","sources":["../../../src/view/flowBuilder.js"],"names":[],"mappings":"AAyBA;;;;;;GAMG;AACH,oHALW,QAAQ,eAER,CAAC,IAAI,iEAAM,KAAK,OAAO,gCACvB,CAAC,IAAI,iEAAM,KAAK,OAAO,YAoPjC;AAuBD;;;;;;GAMG;AACH,2CAFW,OAAO,eAAe,EAAE,OAAO;;;IAwH5B;;;OAGG;;EAYhB;AAgCD;;;;;;GAMG;AACH,4BAFwB,CAAC,SAAZ,qCAAU,cAFZ,CAAC,iBACA,uCAAW;;;0BAwBG,OAAO,CAAC,QAAQ,CAAC,OAAO,qBAAqB,EAAE,KAAK,CAAC,CAAC;EAkB/E;qBA5foB,qBAAqB;sBAPpB,sBAAsB"}
|