@genome-spy/core 0.36.0 → 0.37.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/README.md +1 -0
- package/dist/{index.es.js → bundled/index.es.js} +4227 -4085
- package/dist/{index.js → bundled/index.js} +191 -55
- package/dist/src/data/collector.d.ts +36 -0
- package/dist/src/data/collector.d.ts.map +1 -0
- package/dist/src/data/collector.js +184 -0
- package/dist/src/data/collector.test.js +84 -0
- package/dist/src/data/dataFlow.d.ts +65 -0
- package/dist/src/data/dataFlow.d.ts.map +1 -0
- package/dist/src/data/dataFlow.js +142 -0
- package/dist/src/data/dataFlow.test.js +5 -0
- package/dist/src/data/facetNode.d.ts +17 -0
- package/dist/src/data/facetNode.d.ts.map +1 -0
- package/dist/src/data/facetNode.js +17 -0
- package/dist/src/data/flow.test.js +72 -0
- package/dist/src/data/flowNode.d.ts +136 -0
- package/dist/src/data/flowNode.d.ts.map +1 -0
- package/dist/src/data/flowNode.js +286 -0
- package/dist/src/data/flowNode.test.js +50 -0
- package/dist/src/data/flowOptimizer.d.ts +27 -0
- package/dist/src/data/flowOptimizer.d.ts.map +1 -0
- package/dist/src/data/flowOptimizer.js +133 -0
- package/dist/src/data/flowOptimizer.test.js +193 -0
- package/dist/src/data/flowTestUtils.d.ts +30 -0
- package/dist/src/data/flowTestUtils.d.ts.map +1 -0
- package/dist/src/data/flowTestUtils.js +63 -0
- package/dist/src/data/formats/fasta.d.ts +20 -0
- package/dist/src/data/formats/fasta.d.ts.map +1 -0
- package/dist/src/data/formats/fasta.js +32 -0
- package/dist/src/data/formats/fasta.test.js +27 -0
- package/dist/src/data/sources/dataSource.d.ts +12 -0
- package/dist/src/data/sources/dataSource.d.ts.map +1 -0
- package/dist/src/data/sources/dataSource.js +25 -0
- package/dist/src/data/sources/dataSourceFactory.d.ts +16 -0
- package/dist/src/data/sources/dataSourceFactory.d.ts.map +1 -0
- package/dist/src/data/sources/dataSourceFactory.js +127 -0
- package/dist/src/data/sources/dataUtils.d.ts +50 -0
- package/dist/src/data/sources/dataUtils.d.ts.map +1 -0
- package/dist/src/data/sources/dataUtils.js +83 -0
- package/dist/src/data/sources/dynamic/README.md +3 -0
- package/dist/src/data/sources/dynamic/axisGenomeSource.d.ts +13 -0
- package/dist/src/data/sources/dynamic/axisGenomeSource.d.ts.map +1 -0
- package/dist/src/data/sources/dynamic/axisGenomeSource.js +19 -0
- package/dist/src/data/sources/dynamic/axisTickSource.d.ts +18 -0
- package/dist/src/data/sources/dynamic/axisTickSource.d.ts.map +1 -0
- package/dist/src/data/sources/dynamic/axisTickSource.js +73 -0
- package/dist/src/data/sources/dynamic/bamSource.d.ts +46 -0
- package/dist/src/data/sources/dynamic/bamSource.d.ts.map +1 -0
- package/dist/src/data/sources/dynamic/bamSource.js +115 -0
- package/dist/src/data/sources/dynamic/bigBedSource.d.ts +51 -0
- package/dist/src/data/sources/dynamic/bigBedSource.d.ts.map +1 -0
- package/dist/src/data/sources/dynamic/bigBedSource.js +128 -0
- package/dist/src/data/sources/dynamic/bigWigSource.d.ts +58 -0
- package/dist/src/data/sources/dynamic/bigWigSource.d.ts.map +1 -0
- package/dist/src/data/sources/dynamic/bigWigSource.js +166 -0
- package/dist/src/data/sources/dynamic/gff3Source.d.ts +8 -0
- package/dist/src/data/sources/dynamic/gff3Source.d.ts.map +1 -0
- package/dist/src/data/sources/dynamic/gff3Source.js +19 -0
- package/dist/src/data/sources/dynamic/indexedFastaSource.d.ts +30 -0
- package/dist/src/data/sources/dynamic/indexedFastaSource.d.ts.map +1 -0
- package/dist/src/data/sources/dynamic/indexedFastaSource.js +86 -0
- package/dist/src/data/sources/dynamic/singleAxisLazySource.d.ts +42 -0
- package/dist/src/data/sources/dynamic/singleAxisLazySource.d.ts.map +1 -0
- package/dist/src/data/sources/dynamic/singleAxisLazySource.js +129 -0
- package/dist/src/data/sources/dynamic/tabixSource.d.ts +54 -0
- package/dist/src/data/sources/dynamic/tabixSource.d.ts.map +1 -0
- package/dist/src/data/sources/dynamic/tabixSource.js +140 -0
- package/dist/src/data/sources/dynamic/windowedMixin.d.ts +32 -0
- package/dist/src/data/sources/dynamic/windowedMixin.d.ts.map +1 -0
- package/dist/src/data/sources/dynamic/windowedMixin.js +53 -0
- package/dist/src/data/sources/inlineSource.d.ts +16 -0
- package/dist/src/data/sources/inlineSource.d.ts.map +1 -0
- package/dist/src/data/sources/inlineSource.js +68 -0
- package/dist/src/data/sources/inlineSource.test.js +56 -0
- package/dist/src/data/sources/namedSource.d.ts +25 -0
- package/dist/src/data/sources/namedSource.d.ts.map +1 -0
- package/dist/src/data/sources/namedSource.js +80 -0
- package/dist/src/data/sources/sequenceSource.d.ts +17 -0
- package/dist/src/data/sources/sequenceSource.d.ts.map +1 -0
- package/dist/src/data/sources/sequenceSource.js +47 -0
- package/dist/src/data/sources/sequenceSource.test.js +46 -0
- package/dist/src/data/sources/urlSource.d.ts +16 -0
- package/dist/src/data/sources/urlSource.d.ts.map +1 -0
- package/dist/src/data/sources/urlSource.js +74 -0
- package/dist/src/data/transforms/aggregate.d.ts +18 -0
- package/dist/src/data/transforms/aggregate.d.ts.map +1 -0
- package/dist/src/data/transforms/aggregate.js +67 -0
- package/dist/src/data/transforms/clone.d.ts +15 -0
- package/dist/src/data/transforms/clone.d.ts.map +1 -0
- package/dist/src/data/transforms/clone.js +40 -0
- package/dist/src/data/transforms/clone.test.js +11 -0
- package/dist/src/data/transforms/coverage.d.ts +30 -0
- package/dist/src/data/transforms/coverage.d.ts.map +1 -0
- package/dist/src/data/transforms/coverage.js +183 -0
- package/dist/src/data/transforms/coverage.test.js +123 -0
- package/dist/src/data/transforms/filter.d.ts +12 -0
- package/dist/src/data/transforms/filter.d.ts.map +1 -0
- package/dist/src/data/transforms/filter.js +33 -0
- package/dist/src/data/transforms/filter.test.js +18 -0
- package/dist/src/data/transforms/filterScoredLabels.d.ts +29 -0
- package/dist/src/data/transforms/filterScoredLabels.d.ts.map +1 -0
- package/dist/src/data/transforms/filterScoredLabels.js +134 -0
- package/dist/src/data/transforms/flatten.d.ts +10 -0
- package/dist/src/data/transforms/flatten.d.ts.map +1 -0
- package/dist/src/data/transforms/flatten.js +68 -0
- package/dist/src/data/transforms/flatten.test.js +93 -0
- package/dist/src/data/transforms/flattenCompressedExons.d.ts +19 -0
- package/dist/src/data/transforms/flattenCompressedExons.d.ts.map +1 -0
- package/dist/src/data/transforms/flattenCompressedExons.js +53 -0
- package/dist/src/data/transforms/flattenDelimited.d.ts +10 -0
- package/dist/src/data/transforms/flattenDelimited.d.ts.map +1 -0
- package/dist/src/data/transforms/flattenDelimited.js +66 -0
- package/dist/src/data/transforms/flattenDelimited.test.js +87 -0
- package/dist/src/data/transforms/flattenSequence.d.ts +11 -0
- package/dist/src/data/transforms/flattenSequence.d.ts.map +1 -0
- package/dist/src/data/transforms/flattenSequence.js +35 -0
- package/dist/src/data/transforms/flattenSequence.test.js +34 -0
- package/dist/src/data/transforms/formula.d.ts +13 -0
- package/dist/src/data/transforms/formula.d.ts.map +1 -0
- package/dist/src/data/transforms/formula.js +35 -0
- package/dist/src/data/transforms/formula.test.js +19 -0
- package/dist/src/data/transforms/identifier.d.ts +40 -0
- package/dist/src/data/transforms/identifier.d.ts.map +1 -0
- package/dist/src/data/transforms/identifier.js +106 -0
- package/dist/src/data/transforms/identifier.test.js +83 -0
- package/dist/src/data/transforms/linearizeGenomicCoordinate.d.ts +10 -0
- package/dist/src/data/transforms/linearizeGenomicCoordinate.d.ts.map +1 -0
- package/dist/src/data/transforms/linearizeGenomicCoordinate.js +97 -0
- package/dist/src/data/transforms/measureText.d.ts +18 -0
- package/dist/src/data/transforms/measureText.d.ts.map +1 -0
- package/dist/src/data/transforms/measureText.js +42 -0
- package/dist/src/data/transforms/pileup.d.ts +10 -0
- package/dist/src/data/transforms/pileup.d.ts.map +1 -0
- package/dist/src/data/transforms/pileup.js +126 -0
- package/dist/src/data/transforms/pileup.test.js +70 -0
- package/dist/src/data/transforms/project.d.ts +13 -0
- package/dist/src/data/transforms/project.d.ts.map +1 -0
- package/dist/src/data/transforms/project.js +38 -0
- package/dist/src/data/transforms/project.test.js +32 -0
- package/dist/src/data/transforms/regexExtract.d.ts +13 -0
- package/dist/src/data/transforms/regexExtract.d.ts.map +1 -0
- package/dist/src/data/transforms/regexExtract.js +57 -0
- package/dist/src/data/transforms/regexExtract.test.js +67 -0
- package/dist/src/data/transforms/regexFold.d.ts +14 -0
- package/dist/src/data/transforms/regexFold.d.ts.map +1 -0
- package/dist/src/data/transforms/regexFold.js +139 -0
- package/dist/src/data/transforms/regexFold.test.js +160 -0
- package/dist/src/data/transforms/sample.d.ts +42 -0
- package/dist/src/data/transforms/sample.d.ts.map +1 -0
- package/dist/src/data/transforms/sample.js +99 -0
- package/dist/src/data/transforms/sample.test.js +38 -0
- package/dist/src/data/transforms/stack.d.ts +11 -0
- package/dist/src/data/transforms/stack.d.ts.map +1 -0
- package/dist/src/data/transforms/stack.js +134 -0
- package/dist/src/data/transforms/stack.test.js +91 -0
- package/dist/src/data/transforms/transformFactory.d.ts +12 -0
- package/dist/src/data/transforms/transformFactory.d.ts.map +1 -0
- package/dist/src/data/transforms/transformFactory.js +59 -0
- package/dist/src/encoder/accessor.d.ts +15 -0
- package/dist/src/encoder/accessor.d.ts.map +1 -0
- package/dist/src/encoder/accessor.js +76 -0
- package/dist/src/encoder/accessor.test.js +47 -0
- package/dist/src/encoder/encoder.d.ts +144 -0
- package/dist/src/encoder/encoder.d.ts.map +1 -0
- package/dist/src/encoder/encoder.js +400 -0
- package/dist/src/encoder/encoder.test.js +98 -0
- package/dist/src/fonts/Lato-Regular.json +1267 -0
- package/dist/src/fonts/Lato-Regular.png +0 -0
- package/dist/src/fonts/OFL.txt +93 -0
- package/dist/src/fonts/README.md +3 -0
- package/dist/src/fonts/bmFontManager.d.ts +182 -0
- package/dist/src/fonts/bmFontManager.d.ts.map +1 -0
- package/dist/src/fonts/bmFontManager.js +359 -0
- package/dist/src/fonts/bmFontMetrics.d.ts +45 -0
- package/dist/src/fonts/bmFontMetrics.d.ts.map +1 -0
- package/dist/src/fonts/bmFontMetrics.js +108 -0
- package/dist/src/genome/genome.d.ts +172 -0
- package/dist/src/genome/genome.d.ts.map +1 -0
- package/dist/src/genome/genome.js +379 -0
- package/dist/src/genome/genome.test.js +226 -0
- package/dist/src/genome/genomeStore.d.ts +20 -0
- package/dist/src/genome/genomeStore.d.ts.map +1 -0
- package/dist/src/genome/genomeStore.js +54 -0
- package/dist/src/genome/locusFormat.d.ts +14 -0
- package/dist/src/genome/locusFormat.d.ts.map +1 -0
- package/dist/src/genome/locusFormat.js +37 -0
- package/dist/src/genome/scaleIndex.d.ts +6 -0
- package/dist/src/genome/scaleIndex.d.ts.map +1 -0
- package/dist/src/genome/scaleIndex.js +165 -0
- package/dist/src/genome/scaleIndex.test.js +78 -0
- package/dist/src/genome/scaleLocus.d.ts +3 -0
- package/dist/src/genome/scaleLocus.d.ts.map +1 -0
- package/dist/src/genome/scaleLocus.js +101 -0
- package/dist/src/genome/scaleLocus.test.js +4 -0
- package/dist/src/genomeSpy.d.ts +141 -0
- package/dist/src/genomeSpy.d.ts.map +1 -0
- package/dist/src/genomeSpy.js +788 -0
- package/dist/src/gl/arrayBuilder.d.ts +71 -0
- package/dist/src/gl/arrayBuilder.d.ts.map +1 -0
- package/dist/src/gl/arrayBuilder.js +199 -0
- package/dist/src/gl/dataToVertices.d.ts +194 -0
- package/dist/src/gl/dataToVertices.d.ts.map +1 -0
- package/dist/src/gl/dataToVertices.js +639 -0
- package/dist/src/gl/includes/common.glsl.js +2 -0
- package/dist/src/gl/includes/picking.fragment.glsl.js +2 -0
- package/dist/src/gl/includes/picking.vertex.glsl.js +2 -0
- package/dist/src/gl/includes/sampleFacet.glsl.js +2 -0
- package/dist/src/gl/includes/scales.glsl.js +2 -0
- package/dist/src/gl/link.fragment.glsl.js +2 -0
- package/dist/src/gl/link.vertex.glsl.js +2 -0
- package/dist/src/gl/point.fragment.glsl.js +2 -0
- package/dist/src/gl/point.vertex.glsl.js +2 -0
- package/dist/src/gl/rect.fragment.glsl.js +2 -0
- package/dist/src/gl/rect.vertex.glsl.js +2 -0
- package/dist/src/gl/rule.fragment.glsl.js +2 -0
- package/dist/src/gl/rule.vertex.glsl.js +2 -0
- package/dist/src/gl/text.fragment.glsl.js +2 -0
- package/dist/src/gl/text.vertex.glsl.js +2 -0
- package/dist/src/gl/webGLHelper.d.ts +118 -0
- package/dist/src/gl/webGLHelper.d.ts.map +1 -0
- package/dist/src/gl/webGLHelper.js +513 -0
- package/dist/src/img/bowtie.svg +1 -0
- package/dist/src/img/genomespy-favicon.svg +34 -0
- package/dist/src/index.d.ts +15 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.html +11 -0
- package/dist/src/index.js +129 -0
- package/dist/src/marks/link.d.ts +11 -0
- package/dist/src/marks/link.d.ts.map +1 -0
- package/dist/src/marks/link.js +175 -0
- package/dist/src/marks/mark.d.ts +226 -0
- package/dist/src/marks/mark.d.ts.map +1 -0
- package/dist/src/marks/mark.js +1004 -0
- package/dist/src/marks/markUtils.d.ts +23 -0
- package/dist/src/marks/markUtils.d.ts.map +1 -0
- package/dist/src/marks/markUtils.js +125 -0
- package/dist/src/marks/pointMark.d.ts +11 -0
- package/dist/src/marks/pointMark.d.ts.map +1 -0
- package/dist/src/marks/pointMark.js +251 -0
- package/dist/src/marks/rectMark.d.ts +18 -0
- package/dist/src/marks/rectMark.d.ts.map +1 -0
- package/dist/src/marks/rectMark.js +255 -0
- package/dist/src/marks/rule.d.ts +6 -0
- package/dist/src/marks/rule.d.ts.map +1 -0
- package/dist/src/marks/rule.js +250 -0
- package/dist/src/marks/text.d.ts +13 -0
- package/dist/src/marks/text.d.ts.map +1 -0
- package/dist/src/marks/text.js +279 -0
- package/dist/src/scale/colorUtils.d.ts +34 -0
- package/dist/src/scale/colorUtils.d.ts.map +1 -0
- package/dist/src/scale/colorUtils.js +184 -0
- package/dist/src/scale/glslScaleGenerator.d.ts +45 -0
- package/dist/src/scale/glslScaleGenerator.d.ts.map +1 -0
- package/dist/src/scale/glslScaleGenerator.js +506 -0
- package/dist/src/scale/scale.d.ts +10 -0
- package/dist/src/scale/scale.d.ts.map +1 -0
- package/dist/src/scale/scale.js +456 -0
- package/dist/src/scale/scale.test.js +324 -0
- package/dist/src/scale/ticks.d.ts +47 -0
- package/dist/src/scale/ticks.d.ts.map +1 -0
- package/dist/src/scale/ticks.js +203 -0
- package/dist/src/scale/ticks.test.js +40 -0
- package/dist/src/singlePageApp.d.ts +2 -0
- package/dist/src/singlePageApp.d.ts.map +1 -0
- package/dist/src/singlePageApp.js +13 -0
- package/dist/src/spec/axis.d.ts +402 -0
- package/dist/src/spec/channel.d.ts +440 -0
- package/dist/src/spec/data.d.ts +370 -0
- package/dist/src/spec/font.d.ts +15 -0
- package/dist/src/spec/genome.d.ts +35 -0
- package/dist/src/spec/mark.d.ts +435 -0
- package/dist/src/spec/root.d.ts +22 -0
- package/dist/src/spec/sampleView.d.ts +185 -0
- package/dist/src/spec/scale.d.ts +273 -0
- package/dist/src/spec/title.d.ts +102 -0
- package/dist/src/spec/tooltip.d.ts +9 -0
- package/dist/src/spec/transform.d.ts +504 -0
- package/dist/src/spec/view.d.ts +214 -0
- package/dist/src/styles/genome-spy.css.d.ts +3 -0
- package/dist/src/styles/genome-spy.css.d.ts.map +1 -0
- package/dist/src/styles/genome-spy.css.js +114 -0
- package/dist/src/styles/genome-spy.scss +153 -0
- package/dist/src/tooltip/dataTooltipHandler.d.ts +2 -0
- package/dist/src/tooltip/dataTooltipHandler.d.ts.map +1 -0
- package/dist/src/tooltip/dataTooltipHandler.js +64 -0
- package/dist/src/tooltip/refseqGeneTooltipHandler.d.ts +2 -0
- package/dist/src/tooltip/refseqGeneTooltipHandler.d.ts.map +1 -0
- package/dist/src/tooltip/refseqGeneTooltipHandler.js +78 -0
- package/dist/src/tooltip/tooltipHandler.d.ts +9 -0
- package/dist/src/tooltip/tooltipHandler.d.ts.map +1 -0
- package/dist/src/tooltip/tooltipHandler.ts +12 -0
- package/dist/src/types/bmFont.d.ts +58 -0
- package/dist/src/types/embedApi.d.ts +67 -0
- package/dist/src/types/encoder.d.ts +84 -0
- package/dist/src/types/flowBatch.d.ts +40 -0
- package/dist/src/types/rendering.d.ts +65 -0
- package/dist/src/types/scaleResolutionApi.d.ts +40 -0
- package/dist/src/types/viewContext.d.ts +85 -0
- package/dist/src/utils/addBaseUrl.d.ts +6 -0
- package/dist/src/utils/addBaseUrl.d.ts.map +1 -0
- package/dist/src/utils/addBaseUrl.js +19 -0
- package/dist/src/utils/addBaseUrl.test.js +22 -0
- package/dist/src/utils/animator.d.ts +41 -0
- package/dist/src/utils/animator.d.ts.map +1 -0
- package/dist/src/utils/animator.js +83 -0
- package/dist/src/utils/arrayUtils.d.ts +34 -0
- package/dist/src/utils/arrayUtils.d.ts.map +1 -0
- package/dist/src/utils/arrayUtils.js +61 -0
- package/dist/src/utils/binnedIndex.d.ts +23 -0
- package/dist/src/utils/binnedIndex.d.ts.map +1 -0
- package/dist/src/utils/binnedIndex.js +167 -0
- package/dist/src/utils/binnedIndex.test.js +155 -0
- package/dist/src/utils/clamp.d.ts +7 -0
- package/dist/src/utils/clamp.d.ts.map +1 -0
- package/dist/src/utils/clamp.js +8 -0
- package/dist/src/utils/cloner.d.ts +16 -0
- package/dist/src/utils/cloner.d.ts.map +1 -0
- package/dist/src/utils/cloner.js +34 -0
- package/dist/src/utils/cloner.test.js +24 -0
- package/dist/src/utils/coalesce.d.ts +6 -0
- package/dist/src/utils/coalesce.d.ts.map +1 -0
- package/dist/src/utils/coalesce.js +11 -0
- package/dist/src/utils/coalesce.test.js +16 -0
- package/dist/src/utils/concatIterables.d.ts +8 -0
- package/dist/src/utils/concatIterables.d.ts.map +1 -0
- package/dist/src/utils/concatIterables.js +26 -0
- package/dist/src/utils/concatIterables.test.js +8 -0
- package/dist/src/utils/debounce.d.ts +8 -0
- package/dist/src/utils/debounce.d.ts.map +1 -0
- package/dist/src/utils/debounce.js +37 -0
- package/dist/src/utils/domainArray.d.ts +61 -0
- package/dist/src/utils/domainArray.d.ts.map +1 -0
- package/dist/src/utils/domainArray.js +216 -0
- package/dist/src/utils/domainArray.test.js +130 -0
- package/dist/src/utils/eerp.d.ts +12 -0
- package/dist/src/utils/eerp.d.ts.map +1 -0
- package/dist/src/utils/eerp.js +13 -0
- package/dist/src/utils/expression.d.ts +9 -0
- package/dist/src/utils/expression.d.ts.map +1 -0
- package/dist/src/utils/expression.js +32 -0
- package/dist/src/utils/field.d.ts +17 -0
- package/dist/src/utils/field.d.ts.map +1 -0
- package/dist/src/utils/field.js +28 -0
- package/dist/src/utils/formatObject.d.ts +7 -0
- package/dist/src/utils/formatObject.d.ts.map +1 -0
- package/dist/src/utils/formatObject.js +37 -0
- package/dist/src/utils/indexer.d.ts +16 -0
- package/dist/src/utils/indexer.d.ts.map +1 -0
- package/dist/src/utils/indexer.js +43 -0
- package/dist/src/utils/indexer.test.js +47 -0
- package/dist/src/utils/inertia.d.ts +42 -0
- package/dist/src/utils/inertia.d.ts.map +1 -0
- package/dist/src/utils/inertia.js +124 -0
- package/dist/src/utils/interactionEvent.d.ts +26 -0
- package/dist/src/utils/interactionEvent.d.ts.map +1 -0
- package/dist/src/utils/interactionEvent.js +33 -0
- package/dist/src/utils/iterateNestedMaps.d.ts +11 -0
- package/dist/src/utils/iterateNestedMaps.d.ts.map +1 -0
- package/dist/src/utils/iterateNestedMaps.js +21 -0
- package/dist/src/utils/iterateNestedMaps.test.js +33 -0
- package/dist/src/utils/kWayMerge.d.ts +9 -0
- package/dist/src/utils/kWayMerge.d.ts.map +1 -0
- package/dist/src/utils/kWayMerge.js +42 -0
- package/dist/src/utils/kWayMerge.test.js +26 -0
- package/dist/src/utils/layout/flexLayout.d.ts +182 -0
- package/dist/src/utils/layout/flexLayout.d.ts.map +1 -0
- package/dist/src/utils/layout/flexLayout.js +381 -0
- package/dist/src/utils/layout/flexLayout.test.js +323 -0
- package/dist/src/utils/layout/grid.d.ts +29 -0
- package/dist/src/utils/layout/grid.d.ts.map +1 -0
- package/dist/src/utils/layout/grid.js +95 -0
- package/dist/src/utils/layout/grid.test.js +71 -0
- package/dist/src/utils/layout/padding.d.ts +83 -0
- package/dist/src/utils/layout/padding.d.ts.map +1 -0
- package/dist/src/utils/layout/padding.js +155 -0
- package/dist/src/utils/layout/point.d.ts +16 -0
- package/dist/src/utils/layout/point.d.ts.map +1 -0
- package/dist/src/utils/layout/point.js +23 -0
- package/dist/src/utils/layout/rectangle.d.ts +142 -0
- package/dist/src/utils/layout/rectangle.d.ts.map +1 -0
- package/dist/src/utils/layout/rectangle.js +296 -0
- package/dist/src/utils/layout/rectangle.test.js +172 -0
- package/dist/src/utils/mergeObjects.d.ts +15 -0
- package/dist/src/utils/mergeObjects.d.ts.map +1 -0
- package/dist/src/utils/mergeObjects.js +99 -0
- package/dist/src/utils/mergeObjects.test.js +42 -0
- package/dist/src/utils/numberExtractor.d.ts +9 -0
- package/dist/src/utils/numberExtractor.d.ts.map +1 -0
- package/dist/src/utils/numberExtractor.js +24 -0
- package/dist/src/utils/numberExtractor.test.js +6 -0
- package/dist/src/utils/point.d.ts +9 -0
- package/dist/src/utils/point.d.ts.map +1 -0
- package/dist/src/utils/point.js +14 -0
- package/dist/src/utils/propertyCacher.d.ts +30 -0
- package/dist/src/utils/propertyCacher.d.ts.map +1 -0
- package/dist/src/utils/propertyCacher.js +70 -0
- package/dist/src/utils/propertyCacher.test.js +85 -0
- package/dist/src/utils/propertyCoalescer.d.ts +15 -0
- package/dist/src/utils/propertyCoalescer.d.ts.map +1 -0
- package/dist/src/utils/propertyCoalescer.js +42 -0
- package/dist/src/utils/propertyCoalescer.test.js +22 -0
- package/dist/src/utils/reservationMap.d.ts +42 -0
- package/dist/src/utils/reservationMap.d.ts.map +1 -0
- package/dist/src/utils/reservationMap.js +103 -0
- package/dist/src/utils/reservationMap.test.js +20 -0
- package/dist/src/utils/scaleNull.d.ts +13 -0
- package/dist/src/utils/scaleNull.d.ts.map +1 -0
- package/dist/src/utils/scaleNull.js +21 -0
- package/dist/src/utils/setOperations.d.ts +31 -0
- package/dist/src/utils/setOperations.d.ts.map +1 -0
- package/dist/src/utils/setOperations.js +75 -0
- package/dist/src/utils/smoothstep.d.ts +7 -0
- package/dist/src/utils/smoothstep.d.ts.map +1 -0
- package/dist/src/utils/smoothstep.js +10 -0
- package/dist/src/utils/throttle.d.ts +8 -0
- package/dist/src/utils/throttle.d.ts.map +1 -0
- package/dist/src/utils/throttle.js +34 -0
- package/dist/src/utils/topK.d.ts +22 -0
- package/dist/src/utils/topK.d.ts.map +1 -0
- package/dist/src/utils/topK.js +76 -0
- package/dist/src/utils/topK.test.js +64 -0
- package/dist/src/utils/transition.d.ts +44 -0
- package/dist/src/utils/transition.d.ts.map +1 -0
- package/dist/src/utils/transition.js +74 -0
- package/dist/src/utils/trees.d.ts +56 -0
- package/dist/src/utils/trees.d.ts.map +1 -0
- package/dist/src/utils/trees.js +92 -0
- package/dist/src/utils/trees.test.js +130 -0
- package/dist/src/utils/ui/tooltip.d.ts +50 -0
- package/dist/src/utils/ui/tooltip.d.ts.map +1 -0
- package/dist/src/utils/ui/tooltip.js +189 -0
- package/dist/src/utils/url.d.ts +9 -0
- package/dist/src/utils/url.d.ts.map +1 -0
- package/dist/src/utils/url.js +22 -0
- package/dist/src/utils/variableTools.d.ts +14 -0
- package/dist/src/utils/variableTools.d.ts.map +1 -0
- package/dist/src/utils/variableTools.js +24 -0
- package/dist/src/utils/variableTools.test.js +13 -0
- package/dist/src/view/axisGridView.d.ts +39 -0
- package/dist/src/view/axisGridView.d.ts.map +1 -0
- package/dist/src/view/axisGridView.js +246 -0
- package/dist/src/view/axisResolution.d.ts +24 -0
- package/dist/src/view/axisResolution.d.ts.map +1 -0
- package/dist/src/view/axisResolution.js +141 -0
- package/dist/src/view/axisResolution.test.js +201 -0
- package/dist/src/view/axisView.d.ts +49 -0
- package/dist/src/view/axisView.d.ts.map +1 -0
- package/dist/src/view/axisView.js +629 -0
- package/dist/src/view/concatView.d.ts +16 -0
- package/dist/src/view/concatView.d.ts.map +1 -0
- package/dist/src/view/concatView.js +84 -0
- package/dist/src/view/containerView.d.ts +43 -0
- package/dist/src/view/containerView.d.ts.map +1 -0
- package/dist/src/view/containerView.js +137 -0
- package/dist/src/view/facetView.d.ts +71 -0
- package/dist/src/view/facetView.d.ts.map +1 -0
- package/dist/src/view/facetView.js +492 -0
- package/dist/src/view/flowBuilder.d.ts +37 -0
- package/dist/src/view/flowBuilder.d.ts.map +1 -0
- package/dist/src/view/flowBuilder.js +383 -0
- package/dist/src/view/flowBuilder.test.js +125 -0
- package/dist/src/view/gridView.d.ts +111 -0
- package/dist/src/view/gridView.d.ts.map +1 -0
- package/dist/src/view/gridView.js +1086 -0
- package/dist/src/view/implicitRootView.d.ts +9 -0
- package/dist/src/view/implicitRootView.d.ts.map +1 -0
- package/dist/src/view/implicitRootView.js +23 -0
- package/dist/src/view/importView.d.ts +17 -0
- package/dist/src/view/importView.d.ts.map +1 -0
- package/dist/src/view/importView.js +22 -0
- package/dist/src/view/layerView.d.ts +25 -0
- package/dist/src/view/layerView.d.ts.map +1 -0
- package/dist/src/view/layerView.js +77 -0
- package/dist/src/view/renderingContext/bufferedViewRenderingContext.d.ts +30 -0
- package/dist/src/view/renderingContext/bufferedViewRenderingContext.d.ts.map +1 -0
- package/dist/src/view/renderingContext/bufferedViewRenderingContext.js +175 -0
- package/dist/src/view/renderingContext/compositeViewRenderingContext.d.ts +14 -0
- package/dist/src/view/renderingContext/compositeViewRenderingContext.d.ts.map +1 -0
- package/dist/src/view/renderingContext/compositeViewRenderingContext.js +51 -0
- package/dist/src/view/renderingContext/debuggingViewRenderingContext.d.ts +51 -0
- package/dist/src/view/renderingContext/debuggingViewRenderingContext.d.ts.map +1 -0
- package/dist/src/view/renderingContext/debuggingViewRenderingContext.js +94 -0
- package/dist/src/view/renderingContext/layoutRecorderViewRenderingContext.d.ts +60 -0
- package/dist/src/view/renderingContext/layoutRecorderViewRenderingContext.d.ts.map +1 -0
- package/dist/src/view/renderingContext/layoutRecorderViewRenderingContext.js +128 -0
- package/dist/src/view/renderingContext/simpleViewRenderingContext.d.ts +19 -0
- package/dist/src/view/renderingContext/simpleViewRenderingContext.d.ts.map +1 -0
- package/dist/src/view/renderingContext/simpleViewRenderingContext.js +64 -0
- package/dist/src/view/renderingContext/svgViewRenderingContext.d.ts +22 -0
- package/dist/src/view/renderingContext/svgViewRenderingContext.d.ts.map +1 -0
- package/dist/src/view/renderingContext/svgViewRenderingContext.js +125 -0
- package/dist/src/view/renderingContext/viewRenderingContext.d.ts +33 -0
- package/dist/src/view/renderingContext/viewRenderingContext.d.ts.map +1 -0
- package/dist/src/view/renderingContext/viewRenderingContext.js +41 -0
- package/dist/src/view/scaleResolution.d.ts +170 -0
- package/dist/src/view/scaleResolution.d.ts.map +1 -0
- package/dist/src/view/scaleResolution.js +874 -0
- package/dist/src/view/scaleResolution.test.js +658 -0
- package/dist/src/view/testUtils.d.ts +30 -0
- package/dist/src/view/testUtils.d.ts.map +1 -0
- package/dist/src/view/testUtils.js +101 -0
- package/dist/src/view/title.d.ts +6 -0
- package/dist/src/view/title.d.ts.map +1 -0
- package/dist/src/view/title.js +165 -0
- package/dist/src/view/unitView.d.ts +93 -0
- package/dist/src/view/unitView.d.ts.map +1 -0
- package/dist/src/view/unitView.js +345 -0
- package/dist/src/view/view.d.ts +291 -0
- package/dist/src/view/view.d.ts.map +1 -0
- package/dist/src/view/view.js +691 -0
- package/dist/src/view/view.test.js +214 -0
- package/dist/src/view/viewFactory.d.ts +76 -0
- package/dist/src/view/viewFactory.d.ts.map +1 -0
- package/dist/src/view/viewFactory.js +178 -0
- package/dist/src/view/viewFactory.test.js +17 -0
- package/dist/src/view/viewUtils.d.ts +90 -0
- package/dist/src/view/viewUtils.d.ts.map +1 -0
- package/dist/src/view/viewUtils.js +326 -0
- package/dist/src/view/zoom.d.ts +23 -0
- package/dist/src/view/zoom.d.ts.map +1 -0
- package/dist/src/view/zoom.js +89 -0
- package/package.json +15 -12
- package/dist/style.css +0 -1
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
3
|
+
<svg width="100%" height="100%" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;">
|
|
4
|
+
<g transform="matrix(0.10221,0.00683825,-0.0067136,0.100347,-8.03424,-13.2222)">
|
|
5
|
+
<path d="M208.629,548.17C208.629,548.17 219.768,594.389 239.814,619.222C259.86,644.055 319.119,680.831 319.119,680.831C319.119,680.831 385.557,622.915 437.87,498.346C437.87,498.346 456.021,499.236 473.808,486.446C491.594,473.656 490.239,478.534 494.883,461.62C494.883,461.62 551.848,467.937 625.826,451.863C667.634,442.778 710.238,425.649 747.382,393.142C747.382,393.142 721.992,360.244 689.422,291.45C677.029,265.275 647.518,257.098 590.747,203.309L438.083,391.273L208.629,548.17Z" style="fill-opacity:0.11;"/>
|
|
6
|
+
</g>
|
|
7
|
+
<g transform="matrix(0.081985,-0.0582493,0.0582493,0.081985,-40.4754,34.7668)">
|
|
8
|
+
<path d="M561.588,349.155C561.588,349.155 516.297,271.341 328.841,252.044C328.841,252.044 302.342,325.189 307.686,368.056C313.031,410.922 303.001,456.147 329.132,501.174C329.132,501.174 443.114,506.743 554.649,428.469L629.204,432.112C629.204,432.112 673.755,534.351 856.964,554.375C856.964,554.375 886.717,491.768 879.193,417.478C871.211,338.673 871.716,293.443 871.716,293.443C871.716,293.443 775.485,283.928 635.418,361.795L561.588,349.155Z" style="fill:rgb(127,187,221);"/>
|
|
9
|
+
<clipPath id="_clip1">
|
|
10
|
+
<path d="M561.588,349.155C561.588,349.155 516.297,271.341 328.841,252.044C328.841,252.044 302.342,325.189 307.686,368.056C313.031,410.922 303.001,456.147 329.132,501.174C329.132,501.174 443.114,506.743 554.649,428.469L629.204,432.112C629.204,432.112 673.755,534.351 856.964,554.375C856.964,554.375 886.717,491.768 879.193,417.478C871.211,338.673 871.716,293.443 871.716,293.443C871.716,293.443 775.485,283.928 635.418,361.795L561.588,349.155Z"/>
|
|
11
|
+
</clipPath>
|
|
12
|
+
<g clip-path="url(#_clip1)">
|
|
13
|
+
<g transform="matrix(0.758637,0.45892,-0.45892,0.758637,425.635,-121.213)">
|
|
14
|
+
<path d="M386.873,397.241C371.345,383.628 335.138,374.782 290.644,380.543C246.149,386.304 196.827,402.266 178.802,412.065C168.202,417.828 151.494,429.354 150.682,439.334C149.527,453.528 153.593,477.066 165.625,491.284C171.69,498.451 179.927,503.445 193.838,505.423C211.701,507.963 252.714,480.627 275.399,469.22C299.332,457.187 313.981,454.56 338.386,447.014C338.386,447.014 291.346,478.587 270.205,494.393C239.61,517.268 218.575,522.444 212.859,539.897C209.766,549.34 212.237,567.767 220.354,577.538C229.427,588.461 233.197,595.069 254.591,597.624C267.303,599.143 276.685,598.802 314.37,568.95C336.06,551.767 370.297,509.817 381.412,494.616C397.581,472.506 405.165,451.462 402.656,435.04C399.045,411.391 394.259,403.716 386.873,397.241Z" style="fill:white;"/>
|
|
15
|
+
</g>
|
|
16
|
+
<g transform="matrix(0.752145,0.454993,-0.454993,0.752145,468.36,-108.293)">
|
|
17
|
+
<path d="M484.733,378.934C479.33,367.886 467.092,350.452 483.886,325.205C502.172,297.717 514.898,280.938 528.117,264.632C541.335,248.326 574.793,218.447 587.739,212.53C600.684,206.613 621.026,203.852 631.889,212.841C642.874,221.93 648.416,233.377 654.92,245.478C662.331,259.267 667.318,274.808 656.518,288.278C641.093,307.515 622.242,305.294 594.912,319.844C567.244,334.573 552.644,342.943 539.244,355.703C539.244,355.703 591.431,334.114 621.229,324.474C651.027,314.833 680.952,304.461 695.995,315.975C711.038,327.49 710.631,331.463 714.425,347.187C719.107,366.59 707.231,385.165 694.294,395.838C681.356,406.51 659.958,411.756 636.875,416.852C606.42,423.576 540.278,431.917 512.819,419.366C485.361,406.815 488.488,386.613 484.733,378.934Z" style="fill:white;"/>
|
|
18
|
+
</g>
|
|
19
|
+
</g>
|
|
20
|
+
<path d="M561.588,349.155C561.588,349.155 516.297,271.341 328.841,252.044C328.841,252.044 302.342,325.189 307.686,368.056C313.031,410.922 303.001,456.147 329.132,501.174C329.132,501.174 443.114,506.743 554.649,428.469L629.204,432.112C629.204,432.112 673.755,534.351 856.964,554.375C856.964,554.375 886.717,491.768 879.193,417.478C871.211,338.673 871.716,293.443 871.716,293.443C871.716,293.443 775.485,283.928 635.418,361.795L561.588,349.155Z" style="fill:none;stroke:black;stroke-width:16.57px;"/>
|
|
21
|
+
</g>
|
|
22
|
+
<g transform="matrix(0.100298,-0.00740488,0.00740488,0.100298,-15.7457,-5.17528)">
|
|
23
|
+
<path d="M384.916,385.459C384.916,385.459 430.781,347.868 450.027,350.093C471.685,352.596 490.49,407.747 490.208,424.416C489.927,441.085 442.948,469.866 422.537,466.24C422.537,466.24 425.525,442.129 412.114,413.335C398.702,384.54 384.916,385.459 384.916,385.459Z" style="fill:rgb(127,187,221);"/>
|
|
24
|
+
<clipPath id="_clip2">
|
|
25
|
+
<path d="M384.916,385.459C384.916,385.459 430.781,347.868 450.027,350.093C471.685,352.596 490.49,407.747 490.208,424.416C489.927,441.085 442.948,469.866 422.537,466.24C422.537,466.24 425.525,442.129 412.114,413.335C398.702,384.54 384.916,385.459 384.916,385.459Z"/>
|
|
26
|
+
</clipPath>
|
|
27
|
+
<g clip-path="url(#_clip2)">
|
|
28
|
+
<g transform="matrix(0.909069,3.67641e-17,-3.79818e-17,0.85852,37.051,52.1829)">
|
|
29
|
+
<path d="M413.282,402.697C430.77,421.58 423.307,448.426 441.683,446.137C463.409,443.431 472.604,430.356 473.316,413.402C474.028,396.448 472.245,393.911 466.172,375.321C460.099,356.731 447.953,352.176 422.842,357.179C401.957,361.339 405.039,360.215 398.735,367.228C392.43,374.242 384.315,393.182 384.315,393.182C384.315,393.182 392.715,380.492 413.282,402.697Z" style="fill:white;"/>
|
|
30
|
+
</g>
|
|
31
|
+
</g>
|
|
32
|
+
<path d="M384.916,385.459C384.916,385.459 430.781,347.868 450.027,350.093C471.685,352.596 490.49,407.747 490.208,424.416C489.927,441.085 442.948,469.866 422.537,466.24C422.537,466.24 425.525,442.129 412.114,413.335C398.702,384.54 384.916,385.459 384.916,385.459Z" style="fill:none;stroke:black;stroke-width:16.57px;"/>
|
|
33
|
+
</g>
|
|
34
|
+
</svg>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/// <reference types="external-typings/filetypes.js" />
|
|
2
|
+
export function embed(el: string | HTMLElement, spec: string | import("./spec/root.js").RootSpec, options?: import("./types/embedApi.js").EmbedOptions): import("./types/embedApi.js").EmbedResult;
|
|
3
|
+
/**
|
|
4
|
+
* Loads the spec from the given url and sets the baseUrl if it is not
|
|
5
|
+
* defined in the spec.
|
|
6
|
+
*
|
|
7
|
+
* @param {string} url
|
|
8
|
+
*/
|
|
9
|
+
export function loadSpec(url: string): Promise<any>;
|
|
10
|
+
import GenomeSpy from "./genomeSpy.js";
|
|
11
|
+
import { html } from "lit-html";
|
|
12
|
+
import icon from "./img/bowtie.svg";
|
|
13
|
+
import favIcon from "./img/genomespy-favicon.svg";
|
|
14
|
+
export { GenomeSpy, html, icon, favIcon };
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.js"],"names":[],"mappings":";AAaU,mMACkD;AA2F5D;;;;;GAKG;AACH,8BAFW,MAAM,gBAmBhB;sBA5HqB,gBAAgB;qBAFjB,UAAU;iBAGd,kBAAkB;oBACf,6BAA6B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>GenomeSpy</title>
|
|
7
|
+
</head>
|
|
8
|
+
<body>
|
|
9
|
+
<script type="module" src="/singlePageApp.js"></script>
|
|
10
|
+
</body>
|
|
11
|
+
</html>
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { isObject, isString } from "vega-util";
|
|
2
|
+
import { loader as vegaLoader } from "vega-loader";
|
|
3
|
+
import { html } from "lit-html";
|
|
4
|
+
|
|
5
|
+
import GenomeSpy from "./genomeSpy.js";
|
|
6
|
+
import icon from "./img/bowtie.svg";
|
|
7
|
+
import favIcon from "./img/genomespy-favicon.svg";
|
|
8
|
+
|
|
9
|
+
export { GenomeSpy, html, icon, favIcon };
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Embeds GenomeSpy into the DOM
|
|
13
|
+
*
|
|
14
|
+
* @type {import("./types/embedApi.js").EmbedFunction}
|
|
15
|
+
* @returns {Promise<import("./types/embedApi.js").EmbedResult>}
|
|
16
|
+
*/
|
|
17
|
+
export async function embed(el, spec, options = {}) {
|
|
18
|
+
/** @type {HTMLElement} */
|
|
19
|
+
let element;
|
|
20
|
+
|
|
21
|
+
if (isString(el)) {
|
|
22
|
+
element = document.querySelector(el);
|
|
23
|
+
if (!element) {
|
|
24
|
+
throw new Error(`No such element: ${el}`);
|
|
25
|
+
}
|
|
26
|
+
} else if (el instanceof HTMLElement) {
|
|
27
|
+
element = el;
|
|
28
|
+
} else {
|
|
29
|
+
throw new Error(`Invalid element: ${el}`);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** @type {GenomeSpy} */
|
|
33
|
+
let genomeSpy;
|
|
34
|
+
|
|
35
|
+
try {
|
|
36
|
+
const specObject = isObject(spec) ? spec : await loadSpec(spec);
|
|
37
|
+
|
|
38
|
+
specObject.baseUrl ??= "";
|
|
39
|
+
specObject.width ??= "container";
|
|
40
|
+
specObject.padding ??= 10;
|
|
41
|
+
|
|
42
|
+
if (element == document.body) {
|
|
43
|
+
// Need to add a wrapper to make sizing behavior more stable
|
|
44
|
+
const wrapper = document.createElement("div");
|
|
45
|
+
wrapper.style.position = "fixed";
|
|
46
|
+
wrapper.style.inset = "0";
|
|
47
|
+
wrapper.style.overflow = "hidden";
|
|
48
|
+
element.appendChild(wrapper);
|
|
49
|
+
element = wrapper;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
genomeSpy = new GenomeSpy(element, specObject, options);
|
|
53
|
+
applyOptions(genomeSpy, options);
|
|
54
|
+
await genomeSpy.launch();
|
|
55
|
+
} catch (e) {
|
|
56
|
+
// eslint-disable-next-line require-atomic-updates
|
|
57
|
+
element.innerText = e.toString();
|
|
58
|
+
console.error(e);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return {
|
|
62
|
+
finalize() {
|
|
63
|
+
genomeSpy.destroy();
|
|
64
|
+
while (element.firstChild) {
|
|
65
|
+
element.firstChild.remove();
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
|
|
69
|
+
addEventListener(type, listener) {
|
|
70
|
+
const listenersByType = genomeSpy._eventListeners;
|
|
71
|
+
|
|
72
|
+
let listeners = listenersByType.get(type);
|
|
73
|
+
if (!listeners) {
|
|
74
|
+
listeners = new Set();
|
|
75
|
+
listenersByType.set(type, listeners);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
listeners.add(listener);
|
|
79
|
+
},
|
|
80
|
+
|
|
81
|
+
removeEventListener(type, listener) {
|
|
82
|
+
const listenersByType = genomeSpy._eventListeners;
|
|
83
|
+
|
|
84
|
+
listenersByType.get(type)?.delete(listener);
|
|
85
|
+
},
|
|
86
|
+
|
|
87
|
+
getScaleResolutionByName(name) {
|
|
88
|
+
return genomeSpy.getNamedScaleResolutions().get(name);
|
|
89
|
+
},
|
|
90
|
+
|
|
91
|
+
updateNamedData: genomeSpy.updateNamedData.bind(genomeSpy),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
*
|
|
97
|
+
* @param {import("./genomeSpy").default} genomeSpy
|
|
98
|
+
* @param {import("./types/embedApi.js").EmbedOptions} options options
|
|
99
|
+
*/
|
|
100
|
+
function applyOptions(genomeSpy, options) {
|
|
101
|
+
if (options.namedDataProvider) {
|
|
102
|
+
genomeSpy.registerNamedDataProvider(options.namedDataProvider);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Loads the spec from the given url and sets the baseUrl if it is not
|
|
108
|
+
* defined in the spec.
|
|
109
|
+
*
|
|
110
|
+
* @param {string} url
|
|
111
|
+
*/
|
|
112
|
+
export async function loadSpec(url) {
|
|
113
|
+
let spec;
|
|
114
|
+
|
|
115
|
+
try {
|
|
116
|
+
spec = JSON.parse(await vegaLoader().load(url));
|
|
117
|
+
} catch (e) {
|
|
118
|
+
throw new Error(
|
|
119
|
+
`Could not load or parse configuration: ${url}, reason: ${e.message}`
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if (!spec.baseUrl) {
|
|
124
|
+
const m = url.match(/^[^?#]*\//);
|
|
125
|
+
spec.baseUrl = (m && m[0]) || "./";
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return spec;
|
|
129
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../src/marks/link.js"],"names":[],"mappings":"AAOA;IAqGQ;;;;;;MAKC;CAkDR;iBA9JgB,QAAQ"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { drawBufferInfo, setBuffersAndAttributes, setUniforms } from "twgl.js";
|
|
2
|
+
import VERTEX_SHADER from "../gl/link.vertex.glsl.js";
|
|
3
|
+
import FRAGMENT_SHADER from "../gl/link.fragment.glsl.js";
|
|
4
|
+
import { ConnectionVertexBuilder } from "../gl/dataToVertices";
|
|
5
|
+
|
|
6
|
+
import Mark from "./mark";
|
|
7
|
+
|
|
8
|
+
export default class LinkMark extends Mark {
|
|
9
|
+
/**
|
|
10
|
+
* @param {import("../view/unitView").default} unitView
|
|
11
|
+
*/
|
|
12
|
+
constructor(unitView) {
|
|
13
|
+
super(unitView);
|
|
14
|
+
|
|
15
|
+
Object.defineProperties(
|
|
16
|
+
this.defaultProperties,
|
|
17
|
+
Object.getOwnPropertyDescriptors({
|
|
18
|
+
x: 0.0,
|
|
19
|
+
x2: undefined,
|
|
20
|
+
y: 0.0,
|
|
21
|
+
y2: undefined,
|
|
22
|
+
size: 1.0,
|
|
23
|
+
color: "black",
|
|
24
|
+
opacity: 1.0,
|
|
25
|
+
|
|
26
|
+
segments: 101, // Performance is affected more by the fill rate, i.e. number of pixels
|
|
27
|
+
sagittaScaleFactor: 1.0,
|
|
28
|
+
minSagittaLength: 1.5,
|
|
29
|
+
})
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
getAttributes() {
|
|
34
|
+
return [
|
|
35
|
+
"uniqueId",
|
|
36
|
+
"facetIndex",
|
|
37
|
+
"x",
|
|
38
|
+
"x2",
|
|
39
|
+
"y",
|
|
40
|
+
"y2",
|
|
41
|
+
"size",
|
|
42
|
+
"height",
|
|
43
|
+
"color",
|
|
44
|
+
"opacity",
|
|
45
|
+
];
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** @return {import("../spec/channel").Channel[]} */
|
|
49
|
+
getSupportedChannels() {
|
|
50
|
+
return [...super.getSupportedChannels(), "x2", "y2", "size"];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* @param {import("../spec/channel").Encoding} encoding
|
|
55
|
+
* @returns {import("../spec/channel").Encoding}
|
|
56
|
+
*/
|
|
57
|
+
fixEncoding(encoding) {
|
|
58
|
+
if (!encoding.x) {
|
|
59
|
+
encoding.x2 = encoding.x;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (!encoding.y2) {
|
|
63
|
+
encoding.y2 = encoding.y;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return encoding;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
async initializeGraphics() {
|
|
70
|
+
await super.initializeGraphics();
|
|
71
|
+
|
|
72
|
+
this.createAndLinkShaders(VERTEX_SHADER, FRAGMENT_SHADER);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
finalizeGraphicsInitialization() {
|
|
76
|
+
super.finalizeGraphicsInitialization();
|
|
77
|
+
this.gl.useProgram(this.programInfo.program);
|
|
78
|
+
|
|
79
|
+
const props = this.properties;
|
|
80
|
+
|
|
81
|
+
// TODO: Use uniform block.
|
|
82
|
+
setUniforms(this.programInfo, {
|
|
83
|
+
uSagittaScaleFactor: props.sagittaScaleFactor,
|
|
84
|
+
uMinSagittaLength: props.minSagittaLength,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
updateGraphicsData() {
|
|
89
|
+
const collector = this.unitView.getCollector();
|
|
90
|
+
const itemCount = collector.getItemCount();
|
|
91
|
+
|
|
92
|
+
const builder = new ConnectionVertexBuilder({
|
|
93
|
+
encoders: this.encoders,
|
|
94
|
+
attributes: this.getAttributes(),
|
|
95
|
+
numItems: itemCount,
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
builder.addBatches(collector.facetBatches);
|
|
99
|
+
|
|
100
|
+
const vertexData = builder.toArrays();
|
|
101
|
+
|
|
102
|
+
vertexData.arrays.strip = {
|
|
103
|
+
data: createStrip(this.properties.segments),
|
|
104
|
+
numComponents: 2,
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
this.rangeMap.migrateEntries(vertexData.rangeMap);
|
|
108
|
+
|
|
109
|
+
this.arrays = Object.fromEntries(
|
|
110
|
+
Object.entries(vertexData.arrays).map(([k, v]) => [
|
|
111
|
+
k,
|
|
112
|
+
{ ...v, data: undefined },
|
|
113
|
+
])
|
|
114
|
+
);
|
|
115
|
+
|
|
116
|
+
this.updateBufferInfo(vertexData);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* @param {import("./mark").MarkRenderingOptions} options
|
|
121
|
+
*/
|
|
122
|
+
render(options) {
|
|
123
|
+
const gl = this.gl;
|
|
124
|
+
|
|
125
|
+
// TODO: Vertical clipping in faceted view
|
|
126
|
+
|
|
127
|
+
return this.createRenderCallback((offset, count) => {
|
|
128
|
+
// We are using instanced drawing here.
|
|
129
|
+
// However, WebGL does not provide glDrawArraysInstancedBaseInstance and thus,
|
|
130
|
+
// we have to hack with offsets in vertexAttribPointer
|
|
131
|
+
// TODO: Use VAOs more intelligently to reduce WebGL calls
|
|
132
|
+
// TODO: Explore multiDrawArraysInstancedWEBGL
|
|
133
|
+
// There's also a promising extension draft:
|
|
134
|
+
// https://www.khronos.org/registry/webgl/extensions/WEBGL_draw_instanced_base_vertex_base_instance/
|
|
135
|
+
// (and https://www.khronos.org/registry/webgl/extensions/WEBGL_multi_draw_instanced_base_vertex_base_instance/)
|
|
136
|
+
|
|
137
|
+
this.gl.bindVertexArray(this.vertexArrayInfo.vertexArrayObject);
|
|
138
|
+
|
|
139
|
+
for (const attribInfoObject of Object.entries(
|
|
140
|
+
this.bufferInfo.attribs
|
|
141
|
+
)) {
|
|
142
|
+
const [attribute, attribInfo] = attribInfoObject;
|
|
143
|
+
if (
|
|
144
|
+
attribInfo.buffer &&
|
|
145
|
+
attribInfo.numComponents &&
|
|
146
|
+
attribInfo.divisor
|
|
147
|
+
) {
|
|
148
|
+
attribInfo.offset =
|
|
149
|
+
offset * this.arrays[attribute].numComponents * 4; // gl.FLOAT in bytes
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
setBuffersAndAttributes(gl, this.programInfo, this.bufferInfo);
|
|
153
|
+
|
|
154
|
+
drawBufferInfo(
|
|
155
|
+
gl,
|
|
156
|
+
this.bufferInfo,
|
|
157
|
+
gl.TRIANGLE_STRIP,
|
|
158
|
+
(this.properties.segments + 1) * 2, // number of vertices in a triangle strip
|
|
159
|
+
0,
|
|
160
|
+
count
|
|
161
|
+
);
|
|
162
|
+
}, options);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
function createStrip(/** @type number */ segments) {
|
|
167
|
+
let i = 0;
|
|
168
|
+
const coords = [];
|
|
169
|
+
|
|
170
|
+
for (; i <= segments; i++) {
|
|
171
|
+
coords.push(i / segments, 0.5);
|
|
172
|
+
coords.push(i / segments, -0.5);
|
|
173
|
+
}
|
|
174
|
+
return coords;
|
|
175
|
+
}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
/// <reference types="external-typings/internmap" />
|
|
2
|
+
export const SAMPLE_FACET_UNIFORM: "SAMPLE_FACET_UNIFORM";
|
|
3
|
+
export const SAMPLE_FACET_TEXTURE: "SAMPLE_FACET_TEXTURE";
|
|
4
|
+
/**
|
|
5
|
+
*
|
|
6
|
+
* @typedef {import("../types/rendering").RenderingOptions} RenderingOptions
|
|
7
|
+
* @typedef {object} _MarkRenderingOptions
|
|
8
|
+
* @prop {boolean} [skipViewportSetup] Don't configure viewport. Allows for
|
|
9
|
+
* optimized faceted rendering
|
|
10
|
+
* @typedef {RenderingOptions & _MarkRenderingOptions} MarkRenderingOptions
|
|
11
|
+
*
|
|
12
|
+
* @callback DrawFunction
|
|
13
|
+
* @param {number} offset
|
|
14
|
+
* @param {number} count
|
|
15
|
+
*
|
|
16
|
+
*/
|
|
17
|
+
export default class Mark {
|
|
18
|
+
/**
|
|
19
|
+
* @typedef {import("../spec/mark").MarkConfig} MarkConfig
|
|
20
|
+
* @typedef {import("../spec/channel").Channel} Channel
|
|
21
|
+
* @typedef {import("../spec/channel").Encoding} Encoding
|
|
22
|
+
* @typedef {import("../spec/channel").ValueDef} ValueDef
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* @param {import("../view/unitView").default} unitView
|
|
26
|
+
*/
|
|
27
|
+
constructor(unitView: import("../view/unitView").default);
|
|
28
|
+
unitView: import("../view/unitView").default;
|
|
29
|
+
/** @type {Record<string, import("../types/encoder").Encoder>} */
|
|
30
|
+
encoders: Record<string, import("../types/encoder").Encoder>;
|
|
31
|
+
/** @type {import("twgl.js").BufferInfo & { allocatedVertices?: number }} WebGL buffers */
|
|
32
|
+
bufferInfo: import("twgl.js").BufferInfo & {
|
|
33
|
+
allocatedVertices?: number;
|
|
34
|
+
};
|
|
35
|
+
/** @type {import("twgl.js").ProgramInfo} WebGL buffers */
|
|
36
|
+
programInfo: import("twgl.js").ProgramInfo;
|
|
37
|
+
/** @type {import("twgl.js").VertexArrayInfo} WebGL buffers */
|
|
38
|
+
vertexArrayInfo: import("twgl.js").VertexArrayInfo;
|
|
39
|
+
/** @type {import("twgl.js").UniformBlockInfo} WebGL buffers */
|
|
40
|
+
domainUniformInfo: import("twgl.js").UniformBlockInfo;
|
|
41
|
+
/** @type {import("twgl.js").UniformBlockInfo} WebGL buffers */
|
|
42
|
+
viewUniformInfo: import("twgl.js").UniformBlockInfo;
|
|
43
|
+
/** @type {RangeMap<any>} keep track of facet locations within the vertex array */
|
|
44
|
+
rangeMap: RangeMap<any>;
|
|
45
|
+
/** @type {MarkConfig} */
|
|
46
|
+
defaultProperties: import("../spec/mark").MarkConfig;
|
|
47
|
+
/**
|
|
48
|
+
* A properties object that contains the configured mark properties or
|
|
49
|
+
* default values as fallback.
|
|
50
|
+
*
|
|
51
|
+
* TODO: Proper and comprehensive typings for mark properties
|
|
52
|
+
*
|
|
53
|
+
* @type {Partial<MarkConfig>}
|
|
54
|
+
* @readonly
|
|
55
|
+
*/
|
|
56
|
+
readonly properties: Partial<import("../spec/mark").MarkConfig>;
|
|
57
|
+
get opaque(): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Returns attribute info for WebGL attributes that match visual channels.
|
|
60
|
+
*
|
|
61
|
+
* Note: attributes and channels do not necessarily match.
|
|
62
|
+
* For example, rectangles have x, y, x2, and y2 channels but only x and y as attributes.
|
|
63
|
+
*
|
|
64
|
+
* @returns {string[]}
|
|
65
|
+
*/
|
|
66
|
+
getAttributes(): string[];
|
|
67
|
+
/**
|
|
68
|
+
* @returns {Channel[]}
|
|
69
|
+
*/
|
|
70
|
+
getSupportedChannels(): import("../spec/channel").Channel[];
|
|
71
|
+
/**
|
|
72
|
+
* @returns {Encoding}
|
|
73
|
+
*/
|
|
74
|
+
getDefaultEncoding(): import("../spec/channel").Encoding<string>;
|
|
75
|
+
/**
|
|
76
|
+
* Adds intelligent defaults etc to the encoding.
|
|
77
|
+
*
|
|
78
|
+
* @param {Encoding} encoding
|
|
79
|
+
* @returns {Encoding}
|
|
80
|
+
*/
|
|
81
|
+
fixEncoding(encoding: import("../spec/channel").Encoding<string>): import("../spec/channel").Encoding<string>;
|
|
82
|
+
/**
|
|
83
|
+
* Returns the encoding spec supplemented with mark's default encodings
|
|
84
|
+
*
|
|
85
|
+
* @returns {Encoding}
|
|
86
|
+
*/
|
|
87
|
+
get encoding(): import("../spec/channel").Encoding<string>;
|
|
88
|
+
getContext(): import("../types/viewContext").default;
|
|
89
|
+
getType(): import("../spec/mark").MarkType;
|
|
90
|
+
initializeData(): void;
|
|
91
|
+
/**
|
|
92
|
+
* Initialize encoders that encode fields of the data (or constants) to
|
|
93
|
+
* the ranges of the visual channels.
|
|
94
|
+
*/
|
|
95
|
+
initializeEncoders(): void;
|
|
96
|
+
/**
|
|
97
|
+
* Initialize shaders etc.
|
|
98
|
+
*/
|
|
99
|
+
initializeGraphics(): Promise<void>;
|
|
100
|
+
/**
|
|
101
|
+
* Update WebGL buffers from the data
|
|
102
|
+
*/
|
|
103
|
+
updateGraphicsData(): void;
|
|
104
|
+
getSampleFacetMode(): "SAMPLE_FACET_TEXTURE" | "SAMPLE_FACET_UNIFORM";
|
|
105
|
+
/**
|
|
106
|
+
*
|
|
107
|
+
* @param {string} vertexShader
|
|
108
|
+
* @param {string} fragmentShader
|
|
109
|
+
* @param {string[]} [extraHeaders]
|
|
110
|
+
*/
|
|
111
|
+
createAndLinkShaders(vertexShader: string, fragmentShader: string, extraHeaders?: string[]): void;
|
|
112
|
+
/** @type {string[]} */
|
|
113
|
+
domainUniforms: string[];
|
|
114
|
+
programStatus: {
|
|
115
|
+
program: WebGLProgram;
|
|
116
|
+
getProgramErrors: () => {
|
|
117
|
+
message: string;
|
|
118
|
+
detail: string;
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* Check WebGL shader/program compilation/linking status and finalize
|
|
123
|
+
* initialization.
|
|
124
|
+
*/
|
|
125
|
+
finalizeGraphicsInitialization(): void;
|
|
126
|
+
_setDatums(): void;
|
|
127
|
+
/**
|
|
128
|
+
* Delete WebGL buffers etc.
|
|
129
|
+
*/
|
|
130
|
+
deleteGraphicsData(): void;
|
|
131
|
+
/**
|
|
132
|
+
*
|
|
133
|
+
* @param {any} vertexData TODO: Extract type from VertexBuilder
|
|
134
|
+
*/
|
|
135
|
+
updateBufferInfo(vertexData: any): void;
|
|
136
|
+
/** Convenience method */
|
|
137
|
+
get glHelper(): import("../gl/webGLHelper").default;
|
|
138
|
+
/** Convenience method */
|
|
139
|
+
get gl(): WebGL2RenderingContext;
|
|
140
|
+
onBeforeSampleAnimation(): void;
|
|
141
|
+
onAfterSampleAnimation(): void;
|
|
142
|
+
isReady(): import("twgl.js").ProgramInfo;
|
|
143
|
+
/**
|
|
144
|
+
* Returns true if this mark instance participates in picking.
|
|
145
|
+
*
|
|
146
|
+
* TODO: Check if tooltip is enabled,
|
|
147
|
+
* TODO: Check if selection (when it's implemented) is enabled
|
|
148
|
+
*/
|
|
149
|
+
isPickingParticipant(): boolean;
|
|
150
|
+
/**
|
|
151
|
+
* Configures the WebGL state for rendering the mark instances.
|
|
152
|
+
* A separate preparation stage allows for efficient rendering of faceted
|
|
153
|
+
* views, i.e., multiple views share the uniforms (such as mark properties
|
|
154
|
+
* and scales) and buffers.
|
|
155
|
+
*
|
|
156
|
+
* @param {import("../types/rendering").GlobalRenderingOptions} options
|
|
157
|
+
* @returns {(() => void)[]}
|
|
158
|
+
*/
|
|
159
|
+
prepareRender(options: import("../types/rendering").GlobalRenderingOptions): (() => void)[];
|
|
160
|
+
/**
|
|
161
|
+
* Prepares rendering of a single sample facet.
|
|
162
|
+
*
|
|
163
|
+
* @param {MarkRenderingOptions} options
|
|
164
|
+
* @returns {boolean} true if rendering should proceed,
|
|
165
|
+
* false if it should be skipped
|
|
166
|
+
*/
|
|
167
|
+
prepareSampleFacetRendering(options: MarkRenderingOptions): boolean;
|
|
168
|
+
/**
|
|
169
|
+
* Returns a callback function that the ViewRenderingContext calls to
|
|
170
|
+
* perform the actual rendering either immediately or at a later time.
|
|
171
|
+
*
|
|
172
|
+
* @param {MarkRenderingOptions} options
|
|
173
|
+
* @returns {function():void} A function that renderingContext calls to
|
|
174
|
+
* trigger the actual rendering
|
|
175
|
+
*/
|
|
176
|
+
render(options: MarkRenderingOptions): () => void;
|
|
177
|
+
/**
|
|
178
|
+
* @param {DrawFunction} draw A function that draws a range of vertices
|
|
179
|
+
* @param {import("./mark").MarkRenderingOptions} options
|
|
180
|
+
*/
|
|
181
|
+
createRenderCallback(draw: DrawFunction, options: import("./mark").MarkRenderingOptions): () => void;
|
|
182
|
+
/**
|
|
183
|
+
* Sets viewport, clipping, and uniforms related to scaling and translation
|
|
184
|
+
*
|
|
185
|
+
* @param {import("../utils/layout/rectangle").default} coords
|
|
186
|
+
* @param {import("../utils/layout/rectangle").default} [clipRect]
|
|
187
|
+
* @returns {boolean} true if the viewport is renderable (size > 0)
|
|
188
|
+
*/
|
|
189
|
+
setViewport(coords: import("../utils/layout/rectangle").default, clipRect?: import("../utils/layout/rectangle").default): boolean;
|
|
190
|
+
/**
|
|
191
|
+
* Finds a datum that overlaps the given value on the x domain.
|
|
192
|
+
* The result is unspecified if multiple data are found.
|
|
193
|
+
*
|
|
194
|
+
* This is highly specific to SampleView and its sorting/filtering functionality.
|
|
195
|
+
*
|
|
196
|
+
* @param {string} facetId
|
|
197
|
+
* @param {import("../spec/channel").Scalar} x value on the x domain
|
|
198
|
+
* @returns {any}
|
|
199
|
+
*/
|
|
200
|
+
findDatumAt(facetId: string, x: import("../spec/channel").Scalar): any;
|
|
201
|
+
}
|
|
202
|
+
export type RenderingOptions = import("../types/rendering").RenderingOptions;
|
|
203
|
+
export type _MarkRenderingOptions = {
|
|
204
|
+
/**
|
|
205
|
+
* Don't configure viewport. Allows for
|
|
206
|
+
* optimized faceted rendering
|
|
207
|
+
*/
|
|
208
|
+
skipViewportSetup?: boolean;
|
|
209
|
+
};
|
|
210
|
+
export type MarkRenderingOptions = RenderingOptions & _MarkRenderingOptions;
|
|
211
|
+
export type DrawFunction = (offset: number, count: number) => any;
|
|
212
|
+
/**
|
|
213
|
+
* @augments {InternMap<K, import("../gl/dataToVertices").RangeEntry>}
|
|
214
|
+
* @template K
|
|
215
|
+
*/
|
|
216
|
+
declare class RangeMap<K> extends InternMap<K, import("../gl/dataToVertices").RangeEntry> {
|
|
217
|
+
constructor();
|
|
218
|
+
/**
|
|
219
|
+
*
|
|
220
|
+
* @param {Map<K, import("../gl/dataToVertices").RangeEntry>} anotherMap
|
|
221
|
+
*/
|
|
222
|
+
migrateEntries(anotherMap: Map<K, import("../gl/dataToVertices").RangeEntry>): void;
|
|
223
|
+
}
|
|
224
|
+
import { InternMap } from "internmap";
|
|
225
|
+
export {};
|
|
226
|
+
//# sourceMappingURL=mark.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mark.d.ts","sourceRoot":"","sources":["../../../src/marks/mark.js"],"names":[],"mappings":";AAuCA,0DAA2D;AAC3D,0DAA2D;AAE3D;;;;;;;;;;;;GAYG;AACH;IACI;;;;;OAKG;IAEH;;OAEG;IACH,sBAFW,OAAO,kBAAkB,EAAE,OAAO,EAoE5C;IAjEG,6CAAwB;IAExB,iEAAiE;IACjE,UADW,OAAO,MAAM,EAAE,OAAO,kBAAkB,EAAE,OAAO,CAAC,CACpC;IAIzB,0FAA0F;IAC1F;4BADgE,MAAM;MAC3C;IAE3B,0DAA0D;IAC1D,aADW,OAAO,SAAS,EAAE,WAAW,CACZ;IAE5B,8DAA8D;IAC9D,iBADW,OAAO,SAAS,EAAE,eAAe,CACZ;IAEhC,+DAA+D;IAC/D,mBADW,OAAO,SAAS,EAAE,gBAAgB,CACX;IAElC,+DAA+D;IAC/D,iBADW,OAAO,SAAS,EAAE,gBAAgB,CACb;IAEhC,kFAAkF;IAClF,UADW,SAAS,GAAG,CAAC,CACM;IAG9B,yBAAyB;IACzB,qDAqBC;IAED;;;;;;;;OAQG;IACH,gEAKC;IAGL,sBAEC;IAED;;;;;;;OAOG;IACH,iBAFa,MAAM,EAAE,CAKpB;IAED;;OAEG;IACH,4DAWC;IAED;;OAEG;IACH,iEAcC;IAED;;;;;OAKG;IACH,8GAEC;IAED;;;;OAIG;IACH,2DAyCC;IAED,qDAEC;IAED,2CAEC;IAED,uBAEC;IAED;;;OAGG;IACH,2BAEC;IAED;;OAEG;IACH,oCAEC;IAED;;OAEG;IACH,2BAEC;IAED,sEAeC;IAED;;;;;OAKG;IACH,mCAJW,MAAM,kBACN,MAAM,iBACN,MAAM,EAAE,QA+FlB;IAtFG,uBAAuB;IACvB,gBADW,MAAM,EAAE,CACK;IAgFxB;;;;;;MAIC;IAGL;;;OAGG;IACH,uCA2CC;IAED,mBAgBC;IAED;;OAEG;IACH,2BAiBC;IAED;;;OAGG;IACH,6BAFW,GAAG,QAoCb;IAED,yBAAyB;IACzB,oDAEC;IAED,yBAAyB;IACzB,iCAEC;IAED,gCAEC;IAED,+BAEC;IAED,yCAEC;IAED;;;;;OAKG;IACH,gCAcC;IAED;;;;;;;;OAQG;IAEH,uBAJW,OAAO,oBAAoB,EAAE,sBAAsB,GACjD,CAAC,MAAM,IAAI,CAAC,EAAE,CA+H1B;IAED;;;;;;OAMG;IACH,qCAJW,oBAAoB,GAClB,OAAO,CAqCnB;IAED;;;;;;;OAOG;IACH,gBAJW,oBAAoB,SACP,IAAI,CAM3B;IAED;;;OAGG;IACH,2BAHW,YAAY,WACZ,OAAO,QAAQ,EAAE,oBAAoB,cAmE/C;IAED;;;;;;OAMG;IACH,oBAJW,OAAO,2BAA2B,EAAE,OAAO,aAC3C,OAAO,2BAA2B,EAAE,OAAO,GACzC,OAAO,CAmHnB;IAED;;;;;;;;;OASG;IACH,qBAJW,MAAM,KACN,OAAO,iBAAiB,EAAE,MAAM,GAC9B,GAAG,CAIf;CACJ;+BA35BY,OAAO,oBAAoB,EAAE,gBAAgB;;;;;;wBAEhD,OAAO;;mCAEJ,gBAAgB,GAAG,qBAAqB;oCAG1C,MAAM,SACN,MAAM;AAq5BjB;;;GAGG;AACH;IACI,cAEC;IAkBD;;;OAGG;IACH,2BAFW,IAAI,CAAC,EAAE,OAAO,sBAAsB,EAAE,UAAU,CAAC,QAM3D;CACJ;0BAv8ByB,WAAW"}
|