@fundar/data-chart-telling 1.0.0 → 1.2.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/CHANGELOG.md +53 -0
- package/README.md +58 -19
- package/dist/configuration/config.svelte.d.ts +1 -1
- package/dist/configuration/config.svelte.js +172 -95
- package/dist/configuration/themes/index.d.ts +5 -1304
- package/dist/index.d.ts +24 -14
- package/dist/index.js +20 -10
- package/dist/layout/base/BasePlotLayout.svelte +129 -51
- package/dist/layout/base/BasePlotLayout.svelte.d.ts +1 -38
- package/dist/layout/coordinates/CoordinatesLayout.svelte +42 -40
- package/dist/layout/coordinates/CoordinatesLayout.svelte.d.ts +0 -2
- package/dist/layout/coordinates/ProjectionZoom.svelte +48 -0
- package/dist/layout/coordinates/ProjectionZoom.svelte.d.ts +10 -0
- package/dist/layout/coordinates/ZoomedProjection.d.ts +11 -0
- package/dist/layout/coordinates/ZoomedProjection.js +24 -0
- package/dist/layout/coordinates/camera.svelte.js +11 -8
- package/dist/layout/coordinates/projections/argentina.js +1 -1
- package/dist/layout/coordinates/projections/fit.d.ts +1 -1
- package/dist/layout/coordinates/projections/fit.js +1 -1
- package/dist/layout/coordinates/zoom.svelte.d.ts +4 -5
- package/dist/layout/coordinates/zoom.svelte.js +4 -5
- package/dist/layout/facet/FacetLayout.svelte +1 -1
- package/dist/layout/facet/config.js +1 -1
- package/dist/layout/figure/Figure.svelte +2 -0
- package/dist/layout/geometry/GeometryLayout.svelte +14 -9
- package/dist/layout/geometry/GeometryLayout.svelte.d.ts +0 -3
- package/dist/layout/geometry/MarkerOffset.svelte +28 -0
- package/dist/layout/geometry/MarkerOffset.svelte.d.ts +13 -0
- package/dist/layout/grid/GridCell.svelte +6 -8
- package/dist/layout/hover/HoverSettings.d.ts +20 -6
- package/dist/layout/hover/HoverSettings.js +29 -4
- package/dist/layout/legend/ContinuousSection.svelte +44 -9
- package/dist/layout/legend/DiscreteBadgeItem.svelte +2 -2
- package/dist/layout/legend/DiscreteSection.svelte +2 -2
- package/dist/layout/legend/DiscreteSymbolIcon.svelte +1 -1
- package/dist/layout/legend/LegendChannels.js +36 -12
- package/dist/layout/legend/LegendLayout.svelte +9 -1
- package/dist/layout/legend/LegendState.svelte.d.ts +9 -0
- package/dist/layout/legend/LegendState.svelte.js +24 -3
- package/dist/layout/legend/SizeSection.svelte +1 -1
- package/dist/layout/margins/PlotMargins.svelte.d.ts +2 -5
- package/dist/layout/margins/PlotMargins.svelte.js +4 -8
- package/dist/layout/plot/Plot.svelte +6 -3
- package/dist/layout/plot/PublicPlotContext.d.ts +5 -4
- package/dist/layout/plot/PublicPlotContext.js +7 -3
- package/dist/layout/plot/Slice.d.ts +5 -1
- package/dist/layout/plot/Slice.js +18 -6
- package/dist/layout/scales/EdgeTicks.d.ts +39 -0
- package/dist/layout/scales/EdgeTicks.js +82 -0
- package/dist/layout/scales/NiceTicks.d.ts +43 -0
- package/dist/layout/scales/NiceTicks.js +76 -0
- package/dist/layout/scales/ScalesLayout.svelte +133 -34
- package/dist/layout/scales/ScalesLayout.svelte.d.ts +10 -0
- package/dist/layout/scales/SveltePlotScale.d.ts +15 -0
- package/dist/layout/scales/SveltePlotScale.js +86 -0
- package/dist/layout/scales/TickLabels.d.ts +32 -0
- package/dist/layout/scales/TickLabels.js +55 -0
- package/dist/layout/styles/StylesLayout.svelte +2 -2
- package/dist/layout/styles/ValueLabels.d.ts +33 -5
- package/dist/layout/styles/ValueLabels.js +83 -23
- package/dist/layout/timeline/Timeline.svelte +5 -2
- package/dist/layout/timeline/Timeline.svelte.d.ts +2 -0
- package/dist/layout/timeline/TimelineLayout.svelte +39 -13
- package/dist/layout/timeline/TimelineLayout.svelte.d.ts +7 -5
- package/dist/layout/timeline/TimelineRule.svelte +1 -0
- package/dist/layout/timeline/TimelineState.svelte.d.ts +13 -5
- package/dist/layout/timeline/TimelineState.svelte.js +42 -8
- package/dist/layout/timeline/TimelineTime.d.ts +18 -0
- package/dist/layout/timeline/TimelineTime.js +117 -0
- package/dist/layout/tooltip/Tooltip.svelte +10 -7
- package/dist/layout/tooltip/Tooltip.svelte.d.ts +6 -4
- package/dist/layout/tooltip/TooltipState.svelte.d.ts +8 -2
- package/dist/layout/tooltip/TooltipState.svelte.js +23 -4
- package/dist/markers/MarkerKinds.d.ts +5 -0
- package/dist/markers/MarkerKinds.js +1 -0
- package/dist/markers/area/AreaMarker.svelte +15 -63
- package/dist/markers/arrow/ArrowMarker.svelte +51 -9
- package/dist/markers/bar/BarMarker.svelte +8 -4
- package/dist/markers/bollinger/BollingerMarker.svelte +33 -18
- package/dist/markers/box/BoxMarker.svelte +40 -9
- package/dist/markers/delta/Delta.js +1 -1
- package/dist/markers/delta/DeltaMarker.svelte +9 -7
- package/dist/markers/dot/DotMarker.svelte +24 -27
- package/dist/markers/image/ImageMarker.svelte +17 -12
- package/dist/markers/inset/InsetMarker.svelte +2 -2
- package/dist/markers/line/LineMarker.svelte +1 -0
- package/dist/markers/link/LinkMarker.svelte +174 -29
- package/dist/markers/regression/RegressionMarker.svelte +16 -33
- package/dist/markers/rule/RuleMarker.svelte +9 -3
- package/dist/markers/text/Declutter.d.ts +4 -0
- package/dist/markers/text/Declutter.js +26 -11
- package/dist/markers/text/TextMarker.svelte +91 -48
- package/dist/markers/tick/TickMarker.svelte +27 -25
- package/dist/markers/utils/MarkerChannels.d.ts +24 -0
- package/dist/markers/utils/MarkerChannels.js +42 -7
- package/dist/markers/utils/RowOffset.d.ts +23 -0
- package/dist/markers/utils/RowOffset.js +23 -0
- package/dist/markers/utils/RowOffsetMarks.svelte +30 -0
- package/dist/markers/utils/RowOffsetMarks.svelte.d.ts +33 -0
- package/dist/markers/utils/RowStroke.d.ts +31 -0
- package/dist/markers/utils/RowStroke.js +28 -0
- package/dist/markers/violin/ViolinMarker.svelte +75 -0
- package/dist/markers/violin/ViolinMarker.svelte.d.ts +7 -0
- package/dist/markers/violin/ViolinProfiles.d.ts +29 -0
- package/dist/markers/violin/ViolinProfiles.js +55 -0
- package/dist/markers/waffle/WaffleMarker.svelte +17 -37
- package/dist/phases/Pipeline.d.ts +5 -0
- package/dist/phases/Pipeline.js +8 -2
- package/dist/phases/data/DataPhase.d.ts +5 -11
- package/dist/phases/data/DataPhase.js +14 -11
- package/dist/phases/data/PlotAxes.d.ts +10 -0
- package/dist/phases/data/PlotAxes.js +14 -1
- package/dist/phases/facet/FacetPanels.d.ts +55 -0
- package/dist/phases/facet/FacetPanels.js +96 -0
- package/dist/phases/facet/FacetPhase.d.ts +1 -42
- package/dist/phases/facet/FacetPhase.js +1 -87
- package/dist/phases/hover/HoverPhase.d.ts +6 -43
- package/dist/phases/hover/HoverPhase.js +19 -54
- package/dist/phases/mapping/MappingPhase.d.ts +1 -1
- package/dist/phases/mapping/MappingPhase.js +3 -5
- package/dist/phases/markers/MarkersPhase.js +2 -1
- package/dist/phases/scales/CategoryOrder.d.ts +23 -0
- package/dist/phases/scales/CategoryOrder.js +73 -0
- package/dist/phases/scales/ScalesPhase.d.ts +1 -3
- package/dist/phases/scales/ScalesPhase.js +37 -27
- package/dist/phases/sharedScales/SharedScalesPhase.d.ts +6 -2
- package/dist/phases/sharedScales/SharedScalesPhase.js +14 -8
- package/dist/phases/statistics/Statistics.d.ts +10 -6
- package/dist/phases/statistics/Statistics.js +20 -10
- package/dist/phases/statistics/StatisticsPhase.js +10 -6
- package/dist/phases/statistics/methods/BollingerStatistic.d.ts +1 -1
- package/dist/phases/statistics/methods/BollingerStatistic.js +13 -11
- package/dist/phases/statistics/methods/BoxStatistic.d.ts +1 -1
- package/dist/phases/statistics/methods/BoxStatistic.js +14 -12
- package/dist/phases/statistics/methods/Density2dStatistic.d.ts +1 -1
- package/dist/phases/statistics/methods/Density2dStatistic.js +13 -11
- package/dist/phases/statistics/methods/DensityStatistic.d.ts +1 -1
- package/dist/phases/statistics/methods/DensityStatistic.js +11 -9
- package/dist/phases/statistics/methods/DeviationStatistic.d.ts +8 -0
- package/dist/phases/statistics/methods/DeviationStatistic.js +111 -0
- package/dist/phases/statistics/methods/MovingAverageStatistic.d.ts +1 -1
- package/dist/phases/statistics/methods/MovingAverageStatistic.js +11 -9
- package/dist/phases/statistics/methods/RegressionStatistic.d.ts +1 -1
- package/dist/phases/statistics/methods/RegressionStatistic.js +16 -14
- package/dist/phases/tooltip/TooltipPhase.d.ts +4 -2
- package/dist/phases/tooltip/TooltipPhase.js +10 -3
- package/dist/phases/transforms/ProcessedPositions.d.ts +30 -0
- package/dist/phases/transforms/ProcessedPositions.js +74 -0
- package/dist/phases/transforms/TransformsPhase.d.ts +5 -42
- package/dist/phases/transforms/TransformsPhase.js +67 -58
- package/dist/phases/transforms/ValueSelection.d.ts +30 -0
- package/dist/phases/transforms/ValueSelection.js +53 -0
- package/dist/plots/{heatmap → correlation/heatmap}/Plot.svelte +5 -2
- package/dist/plots/{heatmap → correlation/heatmap}/Plot.svelte.d.ts +2 -2
- package/dist/plots/{heatmap → correlation/heatmap}/defaults.d.ts +2 -2
- package/dist/plots/{heatmap → correlation/heatmap}/defaults.js +5 -5
- package/dist/plots/{heatmap → correlation/heatmap}/markers.d.ts +4 -4
- package/dist/plots/{heatmap → correlation/heatmap}/markers.js +4 -3
- package/dist/plots/{scatter → correlation/scatter}/Plot.svelte +5 -2
- package/dist/plots/{scatter → correlation/scatter}/Plot.svelte.d.ts +2 -2
- package/dist/plots/{scatter → correlation/scatter}/defaults.d.ts +2 -2
- package/dist/plots/{scatter → correlation/scatter}/defaults.js +6 -5
- package/dist/plots/{scatter → correlation/scatter}/markers.d.ts +4 -4
- package/dist/plots/{scatter → correlation/scatter}/markers.js +5 -4
- package/dist/plots/distribution/box/BoxSummaries.d.ts +19 -0
- package/dist/plots/distribution/box/BoxSummaries.js +101 -0
- package/dist/plots/distribution/box/Plot.svelte +42 -0
- package/dist/plots/distribution/box/Plot.svelte.d.ts +26 -0
- package/dist/plots/distribution/box/defaults.d.ts +12 -0
- package/dist/plots/distribution/box/defaults.js +34 -0
- package/dist/plots/distribution/box/markers.d.ts +12 -0
- package/dist/plots/distribution/box/markers.js +34 -0
- package/dist/plots/distribution/density/Plot.svelte +45 -0
- package/dist/plots/distribution/density/Plot.svelte.d.ts +26 -0
- package/dist/plots/distribution/density/defaults.d.ts +9 -0
- package/dist/plots/distribution/density/defaults.js +29 -0
- package/dist/plots/distribution/density/markers.d.ts +9 -0
- package/dist/plots/distribution/density/markers.js +42 -0
- package/dist/plots/{histogram → distribution/histogram}/Plot.svelte +2 -2
- package/dist/plots/{histogram → distribution/histogram}/Plot.svelte.d.ts +2 -2
- package/dist/plots/{histogram → distribution/histogram}/defaults.d.ts +2 -2
- package/dist/plots/{histogram → distribution/histogram}/defaults.js +4 -4
- package/dist/plots/{histogram → distribution/histogram}/markers.d.ts +3 -3
- package/dist/plots/{histogram → distribution/histogram}/markers.js +7 -7
- package/dist/plots/{pyramid → distribution/pyramid}/Plot.svelte +5 -2
- package/dist/plots/{pyramid → distribution/pyramid}/Plot.svelte.d.ts +2 -2
- package/dist/plots/{pyramid → distribution/pyramid}/defaults.d.ts +2 -2
- package/dist/plots/{pyramid → distribution/pyramid}/defaults.js +7 -6
- package/dist/plots/{pyramid → distribution/pyramid}/markers.d.ts +4 -4
- package/dist/plots/{pyramid → distribution/pyramid}/markers.js +8 -11
- package/dist/plots/distribution/violin/Plot.svelte +45 -0
- package/dist/plots/distribution/violin/Plot.svelte.d.ts +26 -0
- package/dist/plots/distribution/violin/defaults.d.ts +10 -0
- package/dist/plots/distribution/violin/defaults.js +58 -0
- package/dist/plots/distribution/violin/markers.d.ts +10 -0
- package/dist/plots/distribution/violin/markers.js +71 -0
- package/dist/plots/{area → evolution/area}/Plot.svelte +2 -2
- package/dist/plots/{area → evolution/area}/Plot.svelte.d.ts +2 -2
- package/dist/plots/{area → evolution/area}/defaults.d.ts +2 -2
- package/dist/plots/{area → evolution/area}/defaults.js +2 -0
- package/dist/plots/{area → evolution/area}/markers.d.ts +2 -2
- package/dist/plots/{area → evolution/area}/markers.js +2 -3
- package/dist/plots/{line → evolution/line}/Plot.svelte +2 -2
- package/dist/plots/{line → evolution/line}/Plot.svelte.d.ts +2 -2
- package/dist/plots/{line → evolution/line}/defaults.d.ts +2 -2
- package/dist/plots/{line → evolution/line}/defaults.js +2 -0
- package/dist/plots/{line → evolution/line}/markers.d.ts +11 -8
- package/dist/plots/{line → evolution/line}/markers.js +7 -6
- package/dist/plots/evolution/slope/Plot.svelte +42 -0
- package/dist/plots/evolution/slope/Plot.svelte.d.ts +26 -0
- package/dist/plots/evolution/slope/defaults.d.ts +8 -0
- package/dist/plots/evolution/slope/defaults.js +31 -0
- package/dist/plots/evolution/slope/markers.d.ts +16 -0
- package/dist/plots/evolution/slope/markers.js +79 -0
- package/dist/plots/evolution/sparkline/Plot.svelte +45 -0
- package/dist/plots/evolution/sparkline/Plot.svelte.d.ts +26 -0
- package/dist/plots/evolution/sparkline/defaults.d.ts +7 -0
- package/dist/plots/evolution/sparkline/defaults.js +23 -0
- package/dist/plots/evolution/sparkline/markers.d.ts +7 -0
- package/dist/plots/evolution/sparkline/markers.js +56 -0
- package/dist/plots/{geo → map/geo}/Core.svelte +11 -10
- package/dist/plots/{geo → map/geo}/Core.svelte.d.ts +1 -1
- package/dist/plots/map/geo/GeoFeatures.svelte.d.ts +9 -0
- package/dist/plots/map/geo/GeoFeatures.svelte.js +55 -0
- package/dist/plots/map/geo/GeoGeometry.d.ts +27 -0
- package/dist/plots/map/geo/GeoGeometry.js +142 -0
- package/dist/plots/map/geo/GeoSegments.d.ts +16 -0
- package/dist/plots/map/geo/GeoSegments.js +23 -0
- package/dist/plots/{geo → map/geo}/Plot.svelte +10 -10
- package/dist/plots/{geo → map/geo}/Plot.svelte.d.ts +2 -2
- package/dist/plots/{geo → map/geo}/defaults.d.ts +2 -2
- package/dist/plots/{geo → map/geo}/defaults.js +1 -1
- package/dist/plots/{geo → map/geo}/phases/data.d.ts +1 -1
- package/dist/plots/{geo → map/geo}/phases/data.js +7 -6
- package/dist/plots/{geo → map/geo}/phases/hover.d.ts +1 -1
- package/dist/plots/{geo → map/geo}/phases/hover.js +5 -5
- package/dist/plots/{geo → map/geo}/phases/markers.d.ts +1 -1
- package/dist/plots/{geo → map/geo}/phases/markers.js +8 -13
- package/dist/plots/{geo → map/geo}/phases/scales.d.ts +2 -2
- package/dist/plots/{geo → map/geo}/phases/scales.js +28 -12
- package/dist/plots/{geo → map/geo}/phases/tooltip.d.ts +1 -1
- package/dist/plots/map/geo/phases/tooltip.js +5 -0
- package/dist/plots/{geo → map/geo}/slices.d.ts +2 -2
- package/dist/plots/{geo → map/geo}/slices.js +7 -4
- package/dist/plots/{bar → ranking/bar}/Plot.svelte +2 -2
- package/dist/plots/{bar → ranking/bar}/Plot.svelte.d.ts +2 -2
- package/dist/plots/ranking/bar/defaults.d.ts +16 -0
- package/dist/plots/{bar → ranking/bar}/defaults.js +17 -15
- package/dist/plots/{bar → ranking/bar}/markers.d.ts +8 -8
- package/dist/plots/{bar → ranking/bar}/markers.js +11 -19
- package/dist/plots/ranking/bullet/Plot.svelte +42 -0
- package/dist/plots/ranking/bullet/Plot.svelte.d.ts +26 -0
- package/dist/plots/ranking/bullet/defaults.d.ts +8 -0
- package/dist/plots/ranking/bullet/defaults.js +24 -0
- package/dist/plots/ranking/bullet/markers.d.ts +10 -0
- package/dist/plots/ranking/bullet/markers.js +90 -0
- package/dist/plots/ranking/cleveland/ClevelandConnector.d.ts +48 -0
- package/dist/plots/ranking/cleveland/ClevelandConnector.js +140 -0
- package/dist/plots/ranking/cleveland/ClevelandMarkers.d.ts +33 -0
- package/dist/plots/ranking/cleveland/ClevelandMarkers.js +375 -0
- package/dist/plots/ranking/cleveland/ClevelandRanges.d.ts +31 -0
- package/dist/plots/ranking/cleveland/ClevelandRanges.js +116 -0
- package/dist/plots/ranking/cleveland/Plot.svelte +45 -0
- package/dist/plots/ranking/cleveland/Plot.svelte.d.ts +26 -0
- package/dist/plots/ranking/cleveland/defaults.d.ts +13 -0
- package/dist/plots/ranking/cleveland/defaults.js +66 -0
- package/dist/plots/ranking/dumbbell/Plot.svelte +45 -0
- package/dist/plots/ranking/dumbbell/Plot.svelte.d.ts +26 -0
- package/dist/plots/ranking/dumbbell/defaults.d.ts +9 -0
- package/dist/plots/ranking/dumbbell/defaults.js +19 -0
- package/dist/plots/ranking/forest/Plot.svelte +42 -0
- package/dist/plots/ranking/forest/Plot.svelte.d.ts +26 -0
- package/dist/plots/ranking/forest/defaults.d.ts +11 -0
- package/dist/plots/ranking/forest/defaults.js +20 -0
- package/dist/plots/ranking/lollipop/Plot.svelte +45 -0
- package/dist/plots/ranking/lollipop/Plot.svelte.d.ts +26 -0
- package/dist/plots/ranking/lollipop/defaults.d.ts +9 -0
- package/dist/plots/ranking/lollipop/defaults.js +18 -0
- package/dist/plots/utils/RowNumbers.d.ts +16 -0
- package/dist/plots/utils/RowNumbers.js +24 -0
- package/dist/plots/utils/gaps.js +1 -1
- package/dist/plots/utils/segments.js +1 -1
- package/dist/types/configuration/styling.d.ts +287 -132
- package/dist/types/layout/composer.d.ts +5 -2
- package/dist/types/layout/coordinates.d.ts +5 -4
- package/dist/types/layout/legend.d.ts +21 -5
- package/dist/types/layout/plot.d.ts +44 -1
- package/dist/types/layout/scales.d.ts +51 -3
- package/dist/types/layout/statistics/deviation.d.ts +40 -0
- package/dist/types/layout/statistics/index.d.ts +7 -2
- package/dist/types/layout/styles/base.d.ts +18 -0
- package/dist/types/layout/styles/bullet.d.ts +25 -0
- package/dist/types/layout/styles/connector.d.ts +98 -0
- package/dist/types/layout/styles/curve.d.ts +11 -0
- package/dist/types/layout/styles/frame.d.ts +17 -0
- package/dist/types/layout/styles/gaps.d.ts +12 -0
- package/dist/types/layout/styles/geo.d.ts +55 -0
- package/dist/types/layout/styles/index.d.ts +8 -0
- package/dist/types/layout/styles/index.js +8 -0
- package/dist/types/layout/styles/values.d.ts +47 -0
- package/dist/types/layout/timeline.d.ts +19 -7
- package/dist/types/layout/tooltip.d.ts +6 -2
- package/dist/types/markers/axis/area.d.ts +2 -2
- package/dist/types/markers/axis/arrow.d.ts +3 -0
- package/dist/types/markers/axis/axisBasedMarkersConfig.d.ts +2 -1
- package/dist/types/markers/axis/bar.d.ts +1 -1
- package/dist/types/markers/axis/box.d.ts +5 -0
- package/dist/types/markers/axis/difference.d.ts +2 -2
- package/dist/types/markers/axis/image.d.ts +3 -2
- package/dist/types/markers/axis/line.d.ts +2 -0
- package/dist/types/markers/axis/rule.d.ts +9 -0
- package/dist/types/markers/axis/trail.d.ts +2 -3
- package/dist/types/markers/axis/violin.d.ts +25 -0
- package/dist/types/markers/basic/dot.d.ts +3 -2
- package/dist/types/markers/basic/text.d.ts +13 -3
- package/dist/types/markers/channels/commonMarkerConfig.d.ts +7 -3
- package/dist/types/markers/channels/commonMarkerConfigWithRowOffset.d.ts +13 -0
- package/dist/types/markers/common.d.ts +1 -1
- package/dist/types/markers/common.js +1 -0
- package/dist/types/markers/geo/link.d.ts +5 -1
- package/dist/types/phases/hover/phase.d.ts +6 -0
- package/dist/types/phases/index.d.ts +1 -1
- package/dist/types/phases/scales/phase.d.ts +5 -1
- package/dist/types/phases/state.d.ts +20 -4
- package/dist/types/phases/statistics/phase.d.ts +3 -1
- package/dist/types/phases/statistics/source.d.ts +3 -1
- package/dist/types/phases/transforms/phase.d.ts +32 -0
- package/dist/types/plots/{heatmap → correlation/heatmap}/props.d.ts +6 -6
- package/dist/types/plots/{heatmap → correlation/heatmap}/state.d.ts +4 -4
- package/dist/types/plots/{scatter → correlation/scatter}/props.d.ts +6 -6
- package/dist/types/plots/{scatter → correlation/scatter}/state.d.ts +2 -2
- package/dist/types/plots/distribution/box/props.d.ts +10 -0
- package/dist/types/plots/distribution/box/state.d.ts +23 -0
- package/dist/types/plots/distribution/density/props.d.ts +23 -0
- package/dist/types/plots/distribution/density/state.d.ts +6 -0
- package/dist/types/plots/distribution/density/state.js +1 -0
- package/dist/types/plots/{histogram → distribution/histogram}/props.d.ts +7 -7
- package/dist/types/plots/distribution/histogram/props.js +1 -0
- package/dist/types/plots/{histogram → distribution/histogram}/state.d.ts +2 -2
- package/dist/types/plots/distribution/histogram/state.js +1 -0
- package/dist/types/plots/{pyramid → distribution/pyramid}/props.d.ts +6 -6
- package/dist/types/plots/distribution/pyramid/props.js +1 -0
- package/dist/types/plots/{pyramid → distribution/pyramid}/state.d.ts +3 -3
- package/dist/types/plots/distribution/pyramid/state.js +1 -0
- package/dist/types/plots/distribution/violin/props.d.ts +23 -0
- package/dist/types/plots/distribution/violin/props.js +1 -0
- package/dist/types/plots/distribution/violin/state.d.ts +6 -0
- package/dist/types/plots/distribution/violin/state.js +1 -0
- package/dist/types/plots/{area → evolution/area}/props.d.ts +6 -6
- package/dist/types/plots/evolution/area/props.js +1 -0
- package/dist/types/plots/{area → evolution/area}/state.d.ts +2 -2
- package/dist/types/plots/evolution/area/state.js +1 -0
- package/dist/types/plots/evolution/line/props.d.ts +10 -0
- package/dist/types/plots/evolution/line/props.js +1 -0
- package/dist/types/plots/{line → evolution/line}/state.d.ts +3 -3
- package/dist/types/plots/evolution/line/state.js +1 -0
- package/dist/types/plots/evolution/slope/props.d.ts +5 -0
- package/dist/types/plots/evolution/slope/props.js +1 -0
- package/dist/types/plots/evolution/slope/state.d.ts +5 -0
- package/dist/types/plots/evolution/slope/state.js +1 -0
- package/dist/types/plots/evolution/sparkline/props.d.ts +5 -0
- package/dist/types/plots/evolution/sparkline/props.js +1 -0
- package/dist/types/plots/evolution/sparkline/state.d.ts +5 -0
- package/dist/types/plots/evolution/sparkline/state.js +1 -0
- package/dist/types/plots/{geo → map/geo}/props.d.ts +8 -8
- package/dist/types/plots/map/geo/props.js +1 -0
- package/dist/types/plots/{geo → map/geo}/state.d.ts +18 -11
- package/dist/types/plots/map/geo/state.js +1 -0
- package/dist/types/plots/props.d.ts +3 -1
- package/dist/types/plots/{bar → ranking/bar}/props.d.ts +6 -6
- package/dist/types/plots/ranking/bar/props.js +1 -0
- package/dist/types/plots/{bar → ranking/bar}/state.d.ts +2 -2
- package/dist/types/plots/ranking/bar/state.js +1 -0
- package/dist/types/plots/ranking/bullet/props.d.ts +22 -0
- package/dist/types/plots/ranking/bullet/props.js +1 -0
- package/dist/types/plots/ranking/bullet/state.d.ts +5 -0
- package/dist/types/plots/ranking/bullet/state.js +1 -0
- package/dist/types/plots/ranking/cleveland/props.d.ts +10 -0
- package/dist/types/plots/ranking/cleveland/props.js +1 -0
- package/dist/types/plots/ranking/cleveland/state.d.ts +49 -0
- package/dist/types/plots/ranking/cleveland/state.js +1 -0
- package/dist/types/plots/ranking/dumbbell/props.d.ts +10 -0
- package/dist/types/plots/ranking/dumbbell/props.js +1 -0
- package/dist/types/plots/ranking/dumbbell/state.d.ts +5 -0
- package/dist/types/plots/ranking/dumbbell/state.js +1 -0
- package/dist/types/plots/ranking/forest/props.d.ts +23 -0
- package/dist/types/plots/ranking/forest/props.js +1 -0
- package/dist/types/plots/ranking/forest/state.d.ts +5 -0
- package/dist/types/plots/ranking/forest/state.js +1 -0
- package/dist/types/plots/ranking/lollipop/props.d.ts +10 -0
- package/dist/types/plots/ranking/lollipop/props.js +1 -0
- package/dist/types/plots/ranking/lollipop/state.d.ts +5 -0
- package/dist/types/plots/ranking/lollipop/state.js +1 -0
- package/dist/types/plots/segments/common.d.ts +4 -1
- package/dist/utils/OpacityScale.d.ts +14 -0
- package/dist/utils/OpacityScale.js +43 -0
- package/dist/utils/{symbol.d.ts → SymbolPath.d.ts} +0 -12
- package/dist/utils/{symbol.js → SymbolPath.js} +0 -24
- package/dist/utils/SymbolScale.d.ts +18 -0
- package/dist/utils/SymbolScale.js +29 -0
- package/dist/utils/color/ColorRamp.d.ts +27 -0
- package/dist/utils/color/ColorRamp.js +120 -0
- package/dist/utils/color/CssColor.d.ts +19 -0
- package/dist/utils/color/CssColor.js +114 -0
- package/dist/utils/color/Palette.d.ts +21 -0
- package/dist/utils/color/Palette.js +52 -0
- package/dist/utils/color/index.d.ts +11 -3
- package/dist/utils/color/index.js +14 -3
- package/dist/utils/grouping.js +1 -1
- package/docs/architecture.md +1 -1
- package/docs/chrome.md +39 -8
- package/docs/composer.md +19 -3
- package/docs/concepts.md +1 -1
- package/docs/development.md +14 -5
- package/docs/facets.md +62 -8
- package/docs/getting-started.md +8 -9
- package/docs/legend.md +73 -24
- package/docs/markers.md +45 -32
- package/docs/plots/correlation/heatmap.md +26 -0
- package/docs/plots/correlation/scatter.md +35 -0
- package/docs/plots/distribution/box.md +28 -0
- package/docs/plots/distribution/density.md +26 -0
- package/docs/plots/distribution/histogram.md +33 -0
- package/docs/plots/distribution/pyramid.md +31 -0
- package/docs/plots/distribution/violin.md +35 -0
- package/docs/plots/evolution/area.md +32 -0
- package/docs/plots/evolution/line.md +93 -0
- package/docs/plots/evolution/slope.md +39 -0
- package/docs/plots/evolution/sparkline.md +34 -0
- package/docs/plots/ranking/bar.md +59 -0
- package/docs/plots/ranking/bullet.md +37 -0
- package/docs/plots/ranking/cleveland.md +54 -0
- package/docs/plots/ranking/dumbbell.md +39 -0
- package/docs/plots/ranking/forest.md +40 -0
- package/docs/plots/ranking/lollipop.md +39 -0
- package/docs/plots.md +22 -154
- package/docs/scales.md +50 -27
- package/docs/state.md +1 -1
- package/docs/styles-and-segments.md +96 -39
- package/docs/theming.md +33 -19
- package/docs/timeline.md +62 -28
- package/docs/tooltip-and-hover.md +72 -24
- package/docs/transforms-and-statistics.md +56 -25
- package/examples/BarValues.svelte +2 -2
- package/examples/Box.svelte +7 -0
- package/examples/Bullet.svelte +17 -0
- package/examples/Chrome.svelte +17 -0
- package/examples/ChromeOrder.svelte +18 -0
- package/examples/Cleveland.svelte +15 -0
- package/examples/Composer.svelte +23 -0
- package/examples/CustomTooltip.svelte +21 -14
- package/examples/Density.svelte +7 -0
- package/examples/Dumbbell.svelte +16 -0
- package/examples/Facets.svelte +3 -3
- package/examples/FacetsCarousel.svelte +14 -0
- package/examples/FacetsRowsCols.svelte +23 -0
- package/examples/FirstPlot.svelte +7 -0
- package/examples/Forest.svelte +17 -0
- package/examples/Gaps.svelte +21 -0
- package/examples/GroupedBars.svelte +15 -0
- package/examples/Heatmap.svelte +7 -0
- package/examples/HeatmapSegments.svelte +26 -0
- package/examples/Histogram.svelte +14 -0
- package/examples/HorizontalBars.svelte +15 -0
- package/examples/LegendSections.svelte +27 -0
- package/examples/LegendToggle.svelte +3 -3
- package/examples/LineByRegion.svelte +18 -0
- package/examples/LineDates.svelte +15 -0
- package/examples/LineStep.svelte +16 -0
- package/examples/LineStepSegment.svelte +18 -0
- package/examples/Lollipop.svelte +17 -0
- package/examples/Markers.svelte +27 -0
- package/examples/MovingAverage.svelte +15 -0
- package/examples/Pyramid.svelte +14 -0
- package/examples/Regression.svelte +14 -0
- package/examples/ResponsiveLine.svelte +7 -7
- package/examples/Scales.svelte +26 -0
- package/examples/Scatter.svelte +16 -0
- package/examples/SegmentHighlight.svelte +22 -0
- package/examples/Segments.svelte +11 -3
- package/examples/SegmentsBySeries.svelte +25 -0
- package/examples/Slope.svelte +17 -0
- package/examples/Sparkline.svelte +14 -0
- package/examples/StackedArea.svelte +16 -0
- package/examples/StackedBars.svelte +15 -0
- package/examples/TimelinePlayer.svelte +8 -7
- package/examples/TimelineRule.svelte +19 -0
- package/examples/Tooltip.svelte +3 -3
- package/examples/ValueLabels.svelte +21 -0
- package/examples/Violin.svelte +14 -0
- package/examples/datasets/argentina-chile-trends.ts +34 -0
- package/examples/datasets/commodity-prices.ts +48 -0
- package/examples/datasets/countries-over-time.ts +368 -0
- package/examples/datasets/daily-temperature.ts +121 -0
- package/examples/datasets/earthquakes.ts +977 -0
- package/examples/datasets/flight-routes.ts +29 -0
- package/examples/datasets/height-density.ts +37 -0
- package/examples/datasets/heights.ts +370 -0
- package/examples/datasets/index.ts +24 -0
- package/examples/datasets/inflation-by-region.ts +44 -0
- package/examples/datasets/inflation-ranges.ts +34 -0
- package/examples/datasets/iris-flower.ts +207 -0
- package/examples/datasets/life-expectancy.ts +95 -0
- package/examples/datasets/napoleons-march.ts +182 -0
- package/examples/datasets/penguins.ts +54 -0
- package/examples/datasets/population-by-age-with-gaps.ts +23 -0
- package/examples/datasets/population-by-age.ts +890 -0
- package/examples/datasets/province-population.ts +521 -0
- package/examples/datasets/stock-prices.ts +63 -0
- package/examples/datasets/weather-stations-over-time.ts +31 -0
- package/examples/datasets/weather-stations.ts +22 -0
- package/examples/datasets/wind-vectors.ts +30 -0
- package/examples/datasets/world-temperature.ts +400 -0
- package/llms-full.txt +51 -12
- package/llms.txt +60 -4
- package/package.json +12 -2
- package/dist/layout/scales/buildScale.d.ts +0 -8
- package/dist/layout/scales/buildScale.js +0 -67
- package/dist/layout/scales/niceDomain.d.ts +0 -23
- package/dist/layout/scales/niceDomain.js +0 -59
- package/dist/plots/bar/defaults.d.ts +0 -9
- package/dist/plots/geo/features.svelte.d.ts +0 -5
- package/dist/plots/geo/features.svelte.js +0 -44
- package/dist/plots/geo/phases/tooltip.js +0 -5
- package/dist/plots/utils/geoAccessors.d.ts +0 -72
- package/dist/plots/utils/geoAccessors.js +0 -220
- package/dist/plots/utils/geoSegments.d.ts +0 -29
- package/dist/plots/utils/geoSegments.js +0 -37
- package/dist/types/layout/styles.d.ts +0 -122
- package/dist/types/markers/axis/curveName.d.ts +0 -2
- package/dist/types/plots/line/props.d.ts +0 -10
- package/dist/utils/color/contrast.d.ts +0 -9
- package/dist/utils/color/contrast.js +0 -40
- package/dist/utils/color/cssColor.d.ts +0 -4
- package/dist/utils/color/cssColor.js +0 -77
- package/dist/utils/color/ramp.d.ts +0 -17
- package/dist/utils/color/ramp.js +0 -110
- package/dist/utils/opacity.d.ts +0 -9
- package/dist/utils/opacity.js +0 -38
- package/examples/data.ts +0 -12
- /package/dist/types/layout/{styles.js → statistics/deviation.js} +0 -0
- /package/dist/types/{markers/axis/curveName.js → layout/styles/base.js} +0 -0
- /package/dist/types/{plots/area/props.js → layout/styles/bullet.js} +0 -0
- /package/dist/types/{plots/area/state.js → layout/styles/connector.js} +0 -0
- /package/dist/types/{plots/bar/props.js → layout/styles/curve.js} +0 -0
- /package/dist/types/{plots/bar/state.js → layout/styles/frame.js} +0 -0
- /package/dist/types/{plots/geo/props.js → layout/styles/gaps.js} +0 -0
- /package/dist/types/{plots/geo/state.js → layout/styles/geo.js} +0 -0
- /package/dist/types/{plots/heatmap/props.js → layout/styles/values.js} +0 -0
- /package/dist/types/{plots/heatmap/state.js → markers/axis/violin.js} +0 -0
- /package/dist/types/{plots/histogram/props.js → markers/channels/commonMarkerConfigWithRowOffset.js} +0 -0
- /package/dist/types/plots/{line → correlation/heatmap}/props.js +0 -0
- /package/dist/types/plots/{histogram → correlation/heatmap}/state.js +0 -0
- /package/dist/types/plots/{pyramid → correlation/scatter}/props.js +0 -0
- /package/dist/types/plots/{line → correlation/scatter}/state.js +0 -0
- /package/dist/types/plots/{scatter → distribution/box}/props.js +0 -0
- /package/dist/types/plots/{pyramid → distribution/box}/state.js +0 -0
- /package/dist/types/plots/{scatter/state.js → distribution/density/props.js} +0 -0
- /package/dist/{plots/utils → utils}/accessors.d.ts +0 -0
- /package/dist/{plots/utils → utils}/accessors.js +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { ContinuousDomain } from '
|
|
4
|
-
import {
|
|
1
|
+
import { ColorRamp } from '../../../../utils/color';
|
|
2
|
+
import { OpacityScale } from '../../../../utils/OpacityScale';
|
|
3
|
+
import { ContinuousDomain } from '../../../../utils/ContinuousDomain';
|
|
4
|
+
import { GeoSegments } from '../GeoSegments';
|
|
5
5
|
/**
|
|
6
6
|
* GeoPlot's "scales" phase: each feature's own resolved color (mirrors
|
|
7
7
|
* HeatmapPlot's own), with a per-feature override for whichever segment
|
|
8
8
|
* (its `grouping` bucket, or itself by id) sets its own `scales.color` -
|
|
9
|
-
* see `
|
|
9
|
+
* see `GeoSegments.scales`. A segment ramp's domain is built from just
|
|
10
10
|
* the features that share its own key, so e.g. two grouping buckets each
|
|
11
11
|
* get a ramp scaled to their own value range, not the whole dataset's.
|
|
12
12
|
*/
|
|
@@ -19,14 +19,12 @@ export function buildScales(state, ctx) {
|
|
|
19
19
|
const valueDomain = ContinuousDomain.build(scales.color?.domain, colorValues);
|
|
20
20
|
const effectiveDomain = valueDomain ? ContinuousDomain.ramp(valueDomain, range) : null;
|
|
21
21
|
const colorScale = effectiveDomain
|
|
22
|
-
?
|
|
23
|
-
cfg.continuous.min,
|
|
24
|
-
cfg.continuous.max
|
|
25
|
-
])
|
|
22
|
+
? ColorRamp.continuous(cfg, scales.color, effectiveDomain)
|
|
26
23
|
: null;
|
|
27
24
|
// Per-segment-key ramp cache - built lazily, once per distinct grouping
|
|
28
25
|
// value/feature id that actually has its own `scales.color`.
|
|
29
26
|
const segmentScaleCache = new Map();
|
|
27
|
+
const colorRamps = [];
|
|
30
28
|
function segmentColorScaleFor(key, segScales) {
|
|
31
29
|
if (segmentScaleCache.has(key))
|
|
32
30
|
return segmentScaleCache.get(key);
|
|
@@ -35,9 +33,16 @@ export function buildScales(state, ctx) {
|
|
|
35
33
|
: features.filter((g) => g.__id === key);
|
|
36
34
|
const vals = peers.map((g) => color?.(g)).filter((v) => v != null);
|
|
37
35
|
const scale = vals.length
|
|
38
|
-
?
|
|
36
|
+
? ColorRamp.continuous(cfg, segScales?.color, [Math.min(...vals), Math.max(...vals)])
|
|
39
37
|
: null;
|
|
40
38
|
segmentScaleCache.set(key, scale);
|
|
39
|
+
if (vals.length && segScales?.color) {
|
|
40
|
+
colorRamps.push({
|
|
41
|
+
name: key,
|
|
42
|
+
domain: [Math.min(...vals), Math.max(...vals)],
|
|
43
|
+
scale: segScales.color
|
|
44
|
+
});
|
|
45
|
+
}
|
|
41
46
|
return scale;
|
|
42
47
|
}
|
|
43
48
|
const resolveColor = colorScale
|
|
@@ -47,7 +52,7 @@ export function buildScales(state, ctx) {
|
|
|
47
52
|
return undefined;
|
|
48
53
|
const groupingValue = grouping?.(f);
|
|
49
54
|
const featureId = f.__id ?? '';
|
|
50
|
-
const segScales =
|
|
55
|
+
const segScales = GeoSegments.scales(segments, featureId, groupingValue);
|
|
51
56
|
if (segScales?.color) {
|
|
52
57
|
const scale = segmentColorScaleFor(groupingValue ?? featureId, segScales);
|
|
53
58
|
if (scale)
|
|
@@ -56,6 +61,16 @@ export function buildScales(state, ctx) {
|
|
|
56
61
|
return colorScale ? colorScale(v) : undefined;
|
|
57
62
|
}
|
|
58
63
|
: undefined;
|
|
64
|
+
// Every segment ramp is built up front, so the legend can draw each one.
|
|
65
|
+
if (colorScale) {
|
|
66
|
+
for (const f of features) {
|
|
67
|
+
const featureId = f.__id ?? '';
|
|
68
|
+
const groupingValue = grouping?.(f);
|
|
69
|
+
const segScales = GeoSegments.scales(segments, featureId, groupingValue);
|
|
70
|
+
if (segScales?.color)
|
|
71
|
+
segmentColorScaleFor(groupingValue ?? featureId, segScales);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
59
74
|
// Plot-level only - no segment-scoped opacity ramp (unlike `resolveColor`
|
|
60
75
|
// above), since there's no concrete use case yet driving that complexity.
|
|
61
76
|
const opacityDomain = (() => {
|
|
@@ -65,7 +80,7 @@ export function buildScales(state, ctx) {
|
|
|
65
80
|
return vals.length ? [Math.min(...vals), Math.max(...vals)] : null;
|
|
66
81
|
})();
|
|
67
82
|
const opacityScale = opacityDomain
|
|
68
|
-
?
|
|
83
|
+
? OpacityScale.resolve(scales.opacity, opacityDomain, cfg.continuous.opacityRange)
|
|
69
84
|
: null;
|
|
70
85
|
const resolveOpacity = opacityScale
|
|
71
86
|
? (f) => {
|
|
@@ -76,6 +91,7 @@ export function buildScales(state, ctx) {
|
|
|
76
91
|
return {
|
|
77
92
|
...state,
|
|
78
93
|
colorDomain: valueDomain ?? undefined,
|
|
94
|
+
colorRamps: colorRamps.length ? colorRamps : undefined,
|
|
79
95
|
opacityDomain: opacityDomain && typeof opacityDomain[0] === 'number'
|
|
80
96
|
? opacityDomain
|
|
81
97
|
: undefined,
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { GeoPlotState } from '
|
|
1
|
+
import type { GeoPlotState } from '../../../../types/plots/map/geo/state';
|
|
2
2
|
/** GeoPlot's "tooltip" phase: a hovered feature reads as its id. */
|
|
3
3
|
export declare function buildTooltip<TProps extends Record<string, unknown>>(state: GeoPlotState<TProps>): GeoPlotState<TProps>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { FacetConfig } from '
|
|
2
|
-
import type { TimelineConfig } from '
|
|
1
|
+
import type { FacetConfig } from '../../../types/layout/facet';
|
|
2
|
+
import type { TimelineConfig } from '../../../types/layout/timeline';
|
|
3
3
|
type Row = Record<string, unknown>;
|
|
4
4
|
/**
|
|
5
5
|
* What a GeoPlot hands `Plot` to slice by: one stand-in row per value
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TimelineTime } from '../../../layout/timeline/TimelineTime';
|
|
2
|
+
import { isFacetWrap } from '../../../layout/facet/config';
|
|
2
3
|
const SLICE = Symbol('dct-geo-slice');
|
|
3
4
|
/** A slicing field's value on a feature (from its `properties`) or on a marker's own row. */
|
|
4
5
|
function readField(field, row) {
|
|
@@ -32,9 +33,11 @@ export function buildGeoSlicing(args) {
|
|
|
32
33
|
: readField(fields[dimension], row);
|
|
33
34
|
let combos = [{}];
|
|
34
35
|
for (const dimension of Object.keys(fields)) {
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
const read = rows.map((row) => readField(fields[dimension], row)).filter((v) => v != null);
|
|
37
|
+
// Dates on the same step are one value.
|
|
38
|
+
const time = new TimelineTime(timeline?.dateFormat);
|
|
39
|
+
const keyOf = (value) => dimension === 'time' ? String(time.toTime(value) ?? value) : value;
|
|
40
|
+
const values = [...new Map(read.map((value) => [keyOf(value), value])).values()];
|
|
38
41
|
combos = combos.flatMap((combo) => values.map((value) => ({ ...combo, [dimension]: value })));
|
|
39
42
|
}
|
|
40
43
|
return {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script lang="ts" generics="TData extends Record<string, unknown>">
|
|
2
|
-
import Plot from '
|
|
2
|
+
import Plot from '../../../layout/plot/Plot.svelte';
|
|
3
3
|
import { buildBarDefaults } from './defaults';
|
|
4
|
-
import type { BarPlotProps, BarPlotCoreProps } from '
|
|
4
|
+
import type { BarPlotProps, BarPlotCoreProps } from '../../../types/plots/ranking/bar/props';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* A bar plot: vertical when its categories run along `x`, horizontal when they run along `y` (the value then on `x`, as in svelteplot's `BarX`). Draws from pre-built `series` or flat `data` rows.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import Plot from '
|
|
2
|
-
import type { BarPlotProps } from '
|
|
1
|
+
import Plot from '../../../layout/plot/Plot.svelte';
|
|
2
|
+
import type { BarPlotProps } from '../../../types/plots/ranking/bar/props';
|
|
3
3
|
declare function $$render<TData extends Record<string, unknown>>(): {
|
|
4
4
|
props: BarPlotProps<TData>;
|
|
5
5
|
exports: {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { AxisPlotDefaults } from '../../../types/phases';
|
|
2
|
+
import type { AxisScale } from '../../../types/layout/scales';
|
|
3
|
+
import type { BarPlotState, BarPlotCtx } from '../../../types/plots/ranking/bar/state';
|
|
4
|
+
/**
|
|
5
|
+
* The domain a bar plot fits to its own bars on its value axis: from zero to
|
|
6
|
+
* the tallest span (and the `extra` values a plot draws beyond its bars), niced to as many ticks as fit the plot. Left out when the
|
|
7
|
+
* author pins the axis, and when there is no span to fit.
|
|
8
|
+
*/
|
|
9
|
+
export declare function fitValueDomain<TData extends Record<string, unknown>>(state: BarPlotState<TData>, extra?: readonly number[]): Partial<Record<'x' | 'y', Partial<AxisScale<TData>>>>;
|
|
10
|
+
/**
|
|
11
|
+
* BarPlot on the shared pipeline: discrete bars with gap fills along one
|
|
12
|
+
* category axis - `x`, or `y` for horizontal bars, as the "data" phase reads
|
|
13
|
+
* it off the values - its own scales (padding, bar layout) and markers.
|
|
14
|
+
* Its plot defaults to: hover along the category axis, timeline tweens matched per category and group.
|
|
15
|
+
*/
|
|
16
|
+
export declare function buildBarDefaults<TData extends Record<string, unknown>>(): AxisPlotDefaults<BarPlotState<TData>, BarPlotCtx>;
|
|
@@ -1,24 +1,27 @@
|
|
|
1
|
+
import { ProcessedPositions } from '../../../phases/transforms/ProcessedPositions';
|
|
1
2
|
import { buildMarks, buildValueLabels, buildHitAreas, buildBarGeometry } from './markers';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { PlotAxes } from '../../phases/data/PlotAxes';
|
|
3
|
+
import { NiceTicks } from '../../../layout/scales/NiceTicks';
|
|
4
|
+
import { SERIES_KEY } from '../../../phases/transforms/TransformsPhase';
|
|
5
|
+
import { PlotAxes } from '../../../phases/data/PlotAxes';
|
|
6
6
|
/**
|
|
7
7
|
* The domain a bar plot fits to its own bars on its value axis: from zero to
|
|
8
|
-
* the tallest span, niced to as many ticks as fit the plot. Left out when the
|
|
8
|
+
* the tallest span (and the `extra` values a plot draws beyond its bars), niced to as many ticks as fit the plot. Left out when the
|
|
9
9
|
* author pins the axis, and when there is no span to fit.
|
|
10
10
|
*/
|
|
11
|
-
function fitValueDomain(state) {
|
|
12
|
-
const isHorizontal = state.axes?.isHorizontal ?? false;
|
|
11
|
+
export function fitValueDomain(state, extra = []) {
|
|
13
12
|
const axis = PlotAxes.valueOf(state);
|
|
14
13
|
const scale = state.scales[axis];
|
|
15
|
-
if (scale?.domain != null || scale?.ticks != null || scale?.nice
|
|
14
|
+
if (scale?.domain != null || scale?.ticks != null || typeof scale?.nice === 'boolean')
|
|
16
15
|
return {};
|
|
17
16
|
// Every bar's span, as the "transforms" phase left it - its baseline is
|
|
18
17
|
// unknown until the domain is, so a plain bar reads as reaching from zero.
|
|
19
|
-
const { of: spanOf } =
|
|
18
|
+
const { of: spanOf } = ProcessedPositions.span(state.processedData, axis);
|
|
20
19
|
let lo = 0;
|
|
21
20
|
let hi = 0;
|
|
21
|
+
for (const value of extra) {
|
|
22
|
+
lo = Math.min(lo, value);
|
|
23
|
+
hi = Math.max(hi, value);
|
|
24
|
+
}
|
|
22
25
|
for (const row of state.processedData?.data ?? []) {
|
|
23
26
|
const span = spanOf(row);
|
|
24
27
|
if (!span)
|
|
@@ -28,10 +31,9 @@ function fitValueDomain(state) {
|
|
|
28
31
|
}
|
|
29
32
|
if (hi <= lo)
|
|
30
33
|
return {};
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
return { [axis]: { domain: niceDomain(lo, hi, count) } };
|
|
34
|
+
return {
|
|
35
|
+
[axis]: { domain: NiceTicks.fit(state, axis, lo, hi, NiceTicks.toleranceOf(scale?.nice)) }
|
|
36
|
+
};
|
|
35
37
|
}
|
|
36
38
|
/**
|
|
37
39
|
* BarPlot on the shared pipeline: discrete bars with gap fills along one
|
|
@@ -50,7 +52,7 @@ export function buildBarDefaults() {
|
|
|
50
52
|
defaults: (_state, ctx) => ({
|
|
51
53
|
category: { paddingInner: ctx.cfg.bar.paddingInner, paddingOuter: ctx.cfg.bar.paddingOuter }
|
|
52
54
|
}),
|
|
53
|
-
fit: fitValueDomain
|
|
55
|
+
fit: (state) => fitValueDomain(state)
|
|
54
56
|
},
|
|
55
57
|
styles: {
|
|
56
58
|
values: {
|
|
@@ -59,7 +61,7 @@ export function buildBarDefaults() {
|
|
|
59
61
|
if (labels.anchor !== 'outside')
|
|
60
62
|
return [];
|
|
61
63
|
const axis = PlotAxes.valueOf(state);
|
|
62
|
-
if (
|
|
64
|
+
if (ProcessedPositions.span(state.processedData, axis).stacked)
|
|
63
65
|
return [];
|
|
64
66
|
if (!state.axes?.isHorizontal) {
|
|
65
67
|
const at = { y: -labels.offset('y') };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { BarMarkerConfig, TextMarkerConfig } from '
|
|
2
|
-
import type { BarPlotState, BarPlotCtx } from '
|
|
3
|
-
import type { ProcessedRow } from '
|
|
4
|
-
import type { AxisValue } from '
|
|
5
|
-
import type { BandSlice } from '
|
|
6
|
-
import type { HoverConfig } from '
|
|
7
|
-
import { ValueLabels } from '
|
|
8
|
-
import type { AxisBasedMarkersConfig } from '
|
|
1
|
+
import type { BarMarkerConfig, TextMarkerConfig } from '../../../types/markers/common';
|
|
2
|
+
import type { BarPlotState, BarPlotCtx } from '../../../types/plots/ranking/bar/state';
|
|
3
|
+
import type { ProcessedRow } from '../../../types/phases';
|
|
4
|
+
import type { AxisValue } from '../../../types/layout/mapping';
|
|
5
|
+
import type { BandSlice } from '../../../types/layout/hover';
|
|
6
|
+
import type { HoverConfig } from '../../../types/plots/props';
|
|
7
|
+
import { ValueLabels } from '../../../layout/styles/ValueLabels';
|
|
8
|
+
import type { AxisBasedMarkersConfig } from '../../../types/markers/common';
|
|
9
9
|
/**
|
|
10
10
|
* Where a bar plot's bars sit, read off the state its phases leave: each
|
|
11
11
|
* processed row's category and span along the value axis, whether the series
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
1
|
+
import { ProcessedPositions } from '../../../phases/transforms/ProcessedPositions';
|
|
2
|
+
import { getConfiguration } from '../../../configuration/config.svelte';
|
|
3
|
+
import { GAP_KIND, GAP_VALUE, SERIES_ID_KEY } from '../../../phases/transforms/TransformsPhase';
|
|
4
|
+
import { seriesIdOf } from '../../../utils/grouping';
|
|
5
|
+
import { resolveGapAreaStyle } from '../../utils/gaps';
|
|
6
|
+
import { PlotAxes } from '../../../phases/data/PlotAxes';
|
|
7
|
+
import { ValueLabels } from '../../../layout/styles/ValueLabels';
|
|
7
8
|
const GAP_KINDS = ['start', 'middle', 'end'];
|
|
8
9
|
/**
|
|
9
10
|
* Where a bar plot's bars sit, read off the state its phases leave: each
|
|
@@ -14,18 +15,9 @@ const GAP_KINDS = ['start', 'middle', 'end'];
|
|
|
14
15
|
export function buildBarGeometry(state, seriesPadding) {
|
|
15
16
|
const valueAxis = PlotAxes.valueOf(state);
|
|
16
17
|
const categoryAxis = PlotAxes.categoryOf(state);
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
const
|
|
20
|
-
const lo = Number(domain?.[0]);
|
|
21
|
-
const hi = Number(domain?.[(domain?.length ?? 1) - 1]);
|
|
22
|
-
if (!domain || domain.length < 2 || Number.isNaN(lo) || Number.isNaN(hi))
|
|
23
|
-
return 0;
|
|
24
|
-
const [min, max] = [Math.min(lo, hi), Math.max(lo, hi)];
|
|
25
|
-
return min > 0 ? min : max < 0 ? max : 0;
|
|
26
|
-
})();
|
|
27
|
-
const { stacked, of: spanOf } = TransformsPhase.processedSpan(state.processedData, valueAxis, baseline);
|
|
28
|
-
const position = TransformsPhase.processedPosition(state.processedData, valueAxis);
|
|
18
|
+
const baseline = PlotAxes.baselineOf(state);
|
|
19
|
+
const { stacked, of: spanOf } = ProcessedPositions.span(state.processedData, valueAxis, baseline);
|
|
20
|
+
const position = ProcessedPositions.of(state.processedData, valueAxis);
|
|
29
21
|
const categoryOf = (row) => position[categoryAxis](row);
|
|
30
22
|
const names = [...new Set((state.groupedSeries ?? []).map((g) => g.series.name))];
|
|
31
23
|
// A lone series, or a stack, fills its whole band: there's nothing to set side by side.
|
|
@@ -197,7 +189,7 @@ export function buildMarks(state, ctx) {
|
|
|
197
189
|
}
|
|
198
190
|
const isReal = (row) => row[GAP_VALUE] === undefined && geometry.spanOf(row) !== undefined;
|
|
199
191
|
const segmentMarkers = [];
|
|
200
|
-
|
|
192
|
+
(state.processedGroups ?? []).forEach((group) => {
|
|
201
193
|
const name = group.series.name;
|
|
202
194
|
const slice = geometry.sliceOf(name);
|
|
203
195
|
const defaultColor = colorForSeries(name);
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<script lang="ts" generics="TData extends Record<string, unknown>">
|
|
2
|
+
import Plot from '../../../layout/plot/Plot.svelte';
|
|
3
|
+
import { buildBulletDefaults } from './defaults';
|
|
4
|
+
import type { BulletPlotProps, BulletPlotCoreProps } from '../../../types/plots/ranking/bullet/props';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* A bullet plot: per category, a bar for its value over bands - `ranges` - that grade it, with a tick marking its `target`, upright or sideways when the categories run along `y`. Draws from pre-built `series` or flat `data` rows.
|
|
8
|
+
* Optional chrome (`title`, `subtitle`, `caption`, `header`, `footer`,
|
|
9
|
+
* `legend`) frames it; `timeline` and `facet` slice its `data` rows.
|
|
10
|
+
* `margins` is bindable: it reports the margin the plot settled on.
|
|
11
|
+
*/
|
|
12
|
+
let {
|
|
13
|
+
title,
|
|
14
|
+
subtitle,
|
|
15
|
+
caption,
|
|
16
|
+
header,
|
|
17
|
+
footer,
|
|
18
|
+
legend,
|
|
19
|
+
order,
|
|
20
|
+
timeline,
|
|
21
|
+
facet,
|
|
22
|
+
tooltip,
|
|
23
|
+
margins = $bindable(),
|
|
24
|
+
...core
|
|
25
|
+
}: BulletPlotProps<TData> = $props();
|
|
26
|
+
</script>
|
|
27
|
+
|
|
28
|
+
<Plot
|
|
29
|
+
core={core as BulletPlotCoreProps<TData>}
|
|
30
|
+
defaults={buildBulletDefaults}
|
|
31
|
+
bind:margins
|
|
32
|
+
{title}
|
|
33
|
+
{subtitle}
|
|
34
|
+
{caption}
|
|
35
|
+
{header}
|
|
36
|
+
{footer}
|
|
37
|
+
{legend}
|
|
38
|
+
{order}
|
|
39
|
+
{timeline}
|
|
40
|
+
{facet}
|
|
41
|
+
{tooltip}
|
|
42
|
+
/>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import Plot from '../../../layout/plot/Plot.svelte';
|
|
2
|
+
import type { BulletPlotProps } from '../../../types/plots/ranking/bullet/props';
|
|
3
|
+
declare function $$render<TData extends Record<string, unknown>>(): {
|
|
4
|
+
props: BulletPlotProps<TData>;
|
|
5
|
+
exports: {};
|
|
6
|
+
bindings: "margins";
|
|
7
|
+
slots: {};
|
|
8
|
+
events: {};
|
|
9
|
+
};
|
|
10
|
+
declare class __sveltets_Render<TData extends Record<string, unknown>> {
|
|
11
|
+
props(): ReturnType<typeof $$render<TData>>['props'];
|
|
12
|
+
events(): ReturnType<typeof $$render<TData>>['events'];
|
|
13
|
+
slots(): ReturnType<typeof $$render<TData>>['slots'];
|
|
14
|
+
bindings(): "margins";
|
|
15
|
+
exports(): {};
|
|
16
|
+
}
|
|
17
|
+
interface $$IsomorphicComponent {
|
|
18
|
+
new <TData extends Record<string, unknown>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TData>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TData>['props']>, ReturnType<__sveltets_Render<TData>['events']>, ReturnType<__sveltets_Render<TData>['slots']>> & {
|
|
19
|
+
$$bindings?: ReturnType<__sveltets_Render<TData>['bindings']>;
|
|
20
|
+
} & ReturnType<__sveltets_Render<TData>['exports']>;
|
|
21
|
+
<TData extends Record<string, unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<TData>['props']> & {}): ReturnType<__sveltets_Render<TData>['exports']>;
|
|
22
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
23
|
+
}
|
|
24
|
+
declare const Plot: $$IsomorphicComponent;
|
|
25
|
+
type Plot<TData extends Record<string, unknown>> = InstanceType<typeof Plot<TData>>;
|
|
26
|
+
export default Plot;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AxisPlotDefaults } from '../../../types/phases';
|
|
2
|
+
import type { BulletPlotState, BulletPlotCtx } from '../../../types/plots/ranking/bullet/state';
|
|
3
|
+
/**
|
|
4
|
+
* BulletPlot on the shared pipeline: a BarPlot whose bars are drawn thinner
|
|
5
|
+
* over `ranges` - bands that grade the value - with a tick at each `target`.
|
|
6
|
+
* Its value axis fits them along with the bars.
|
|
7
|
+
*/
|
|
8
|
+
export declare function buildBulletDefaults<TData extends Record<string, unknown>>(): AxisPlotDefaults<BulletPlotState<TData>, BulletPlotCtx>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { buildBarDefaults, fitValueDomain } from '../bar/defaults';
|
|
2
|
+
import { buildMarks, buildReach } from './markers';
|
|
3
|
+
/**
|
|
4
|
+
* BulletPlot on the shared pipeline: a BarPlot whose bars are drawn thinner
|
|
5
|
+
* over `ranges` - bands that grade the value - with a tick at each `target`.
|
|
6
|
+
* Its value axis fits them along with the bars.
|
|
7
|
+
*/
|
|
8
|
+
export function buildBulletDefaults() {
|
|
9
|
+
const bar = buildBarDefaults();
|
|
10
|
+
return {
|
|
11
|
+
...bar,
|
|
12
|
+
scales: {
|
|
13
|
+
...bar.scales,
|
|
14
|
+
defaults: (_state, ctx) => ({
|
|
15
|
+
category: {
|
|
16
|
+
paddingInner: ctx.cfg.bullet.paddingInner,
|
|
17
|
+
paddingOuter: ctx.cfg.bullet.paddingOuter
|
|
18
|
+
}
|
|
19
|
+
}),
|
|
20
|
+
fit: (state, ctx) => fitValueDomain(state, buildReach(state, ctx))
|
|
21
|
+
},
|
|
22
|
+
markers: { ...bar.markers, marks: buildMarks }
|
|
23
|
+
};
|
|
24
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AxisBasedMarkersConfig } from '../../../types/markers/common';
|
|
2
|
+
import type { BulletPlotState, BulletPlotCtx } from '../../../types/plots/ranking/bullet/state';
|
|
3
|
+
/** Every value the axis has to reach beyond the bars. */
|
|
4
|
+
export declare function buildReach<TData extends Record<string, unknown>>(state: BulletPlotState<TData>, ctx: BulletPlotCtx): number[];
|
|
5
|
+
/**
|
|
6
|
+
* BulletPlot's "markers" phase, back to front: a rule per range, the bars of a
|
|
7
|
+
* bar plot - thinner, so the ranges show around them - and a tick at each
|
|
8
|
+
* target.
|
|
9
|
+
*/
|
|
10
|
+
export declare function buildMarks<TData extends Record<string, unknown>>(state: BulletPlotState<TData>, ctx: BulletPlotCtx): AxisBasedMarkersConfig[];
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { buildMarks as buildBarMarks, buildBarGeometry } from '../bar/markers';
|
|
2
|
+
import { GAP_VALUE } from '../../../phases/transforms/TransformsPhase';
|
|
3
|
+
import { RowNumbers } from '../../utils/RowNumbers';
|
|
4
|
+
/** Each category's target and range bounds, read off the rows the bars draw. */
|
|
5
|
+
function buildMeasures(state, ctx) {
|
|
6
|
+
const geometry = buildBarGeometry(state, ctx.cfg.bar.seriesPadding);
|
|
7
|
+
return (state.processedData?.data ?? [])
|
|
8
|
+
.filter((row) => row[GAP_VALUE] === undefined && geometry.spanOf(row) !== undefined)
|
|
9
|
+
.map((row) => ({
|
|
10
|
+
category: geometry.categoryOf(row),
|
|
11
|
+
target: RowNumbers.of(state.target, row),
|
|
12
|
+
bounds: (state.ranges ?? [])
|
|
13
|
+
.map((range) => RowNumbers.of(range, row))
|
|
14
|
+
.filter((bound) => bound !== undefined)
|
|
15
|
+
.sort((a, b) => a - b)
|
|
16
|
+
}));
|
|
17
|
+
}
|
|
18
|
+
/** Every value the axis has to reach beyond the bars. */
|
|
19
|
+
export function buildReach(state, ctx) {
|
|
20
|
+
return buildMeasures(state, ctx).flatMap(({ target, bounds }) => [
|
|
21
|
+
...(target === undefined ? [] : [target]),
|
|
22
|
+
...bounds
|
|
23
|
+
]);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* BulletPlot's "markers" phase, back to front: a rule per range, the bars of a
|
|
27
|
+
* bar plot - thinner, so the ranges show around them - and a tick at each
|
|
28
|
+
* target.
|
|
29
|
+
*/
|
|
30
|
+
export function buildMarks(state, ctx) {
|
|
31
|
+
const configured = ctx.cfg.bullet;
|
|
32
|
+
const own = (state.styles ?? {});
|
|
33
|
+
const rangeColors = own.ranges?.colors ?? configured.rangeColors;
|
|
34
|
+
const rangeWidth = own.ranges?.width ?? configured.rangeWidth;
|
|
35
|
+
const target = {
|
|
36
|
+
color: own.target?.color ?? configured.targetColor ?? ctx.cfg.axis.color,
|
|
37
|
+
width: own.target?.width ?? configured.targetWidth,
|
|
38
|
+
length: own.target?.length ?? configured.targetLength
|
|
39
|
+
};
|
|
40
|
+
const isHorizontal = state.axes?.isHorizontal ?? false;
|
|
41
|
+
const baseline = buildBarGeometry(state, ctx.cfg.bar.seriesPadding).baseline;
|
|
42
|
+
const measures = buildMeasures(state, ctx);
|
|
43
|
+
// Each bound is a band from the baseline, drawn widest first so the narrower ones lie over it.
|
|
44
|
+
const rows = measures.flatMap(({ category, bounds }) => bounds
|
|
45
|
+
.map((bound, rank) => ({
|
|
46
|
+
category,
|
|
47
|
+
from: baseline,
|
|
48
|
+
to: bound,
|
|
49
|
+
stroke: rangeColors[Math.min(rank, rangeColors.length - 1)]
|
|
50
|
+
}))
|
|
51
|
+
.reverse());
|
|
52
|
+
const ranges = rows.length === 0
|
|
53
|
+
? []
|
|
54
|
+
: [
|
|
55
|
+
{
|
|
56
|
+
type: 'rule',
|
|
57
|
+
legend: false,
|
|
58
|
+
axis: isHorizontal ? 'y' : 'x',
|
|
59
|
+
data: rows,
|
|
60
|
+
value: 'category',
|
|
61
|
+
...(isHorizontal ? { x1: 'from', x2: 'to' } : { y1: 'from', y2: 'to' }),
|
|
62
|
+
stroke: 'stroke',
|
|
63
|
+
styles: { strokeWidth: rangeWidth }
|
|
64
|
+
}
|
|
65
|
+
];
|
|
66
|
+
// The bars narrowed to a thickness of their own, centered in their band.
|
|
67
|
+
const bars = buildBarMarks(state, ctx).map((marker) => marker.type === 'bar' && marker.role === 'segment'
|
|
68
|
+
? {
|
|
69
|
+
...marker,
|
|
70
|
+
thickness: own.bar?.thickness ?? configured.barThickness
|
|
71
|
+
}
|
|
72
|
+
: marker);
|
|
73
|
+
const targets = measures.flatMap(({ category, target }) => target === undefined ? [] : [{ category, end: target }]);
|
|
74
|
+
const ticks = targets.length === 0
|
|
75
|
+
? []
|
|
76
|
+
: [
|
|
77
|
+
{
|
|
78
|
+
type: 'tick',
|
|
79
|
+
legend: false,
|
|
80
|
+
data: targets,
|
|
81
|
+
...(isHorizontal ? { x: 'end', y: 'category' } : { x: 'category', y: 'end' }),
|
|
82
|
+
tickLength: target.length,
|
|
83
|
+
styles: {
|
|
84
|
+
stroke: target.color,
|
|
85
|
+
strokeWidth: target.width
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
];
|
|
89
|
+
return [...ranges, ...bars, ...ticks];
|
|
90
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { ClevelandEntry, ClevelandPlotState } from '../../../types/plots/ranking/cleveland/state';
|
|
2
|
+
import type { PlotStylesConfig } from '../../../types/configuration/styling';
|
|
3
|
+
import type { ConnectorLabel, ConnectorRange, ConnectorStyle } from '../../../types/layout/styles';
|
|
4
|
+
/** What a connector falls back to - the configuration's `connector` block. */
|
|
5
|
+
type ConnectorDefaults = PlotStylesConfig['connector'];
|
|
6
|
+
/**
|
|
7
|
+
* The connectors of a Cleveland-style plot as `styles.connector` styles them:
|
|
8
|
+
* what each one measures, its color, its thickness and its label. The plot's
|
|
9
|
+
* marks read each category's connector through it.
|
|
10
|
+
*/
|
|
11
|
+
export declare class ClevelandConnector {
|
|
12
|
+
#private;
|
|
13
|
+
readonly style: ConnectorStyle;
|
|
14
|
+
constructor(style: ConnectorStyle | undefined, defaults: ConnectorDefaults, entries: readonly ClevelandEntry[]);
|
|
15
|
+
/** The series a plot's differences run between, from `styles.connector`. */
|
|
16
|
+
static ends<TData extends Record<string, unknown>>(state: ClevelandPlotState<TData>): {
|
|
17
|
+
from?: string;
|
|
18
|
+
to?: string;
|
|
19
|
+
};
|
|
20
|
+
/** `styles.connector` of a plot's state, over the configuration's defaults and what `entries` measure. */
|
|
21
|
+
static of<TData extends Record<string, unknown>>(state: ClevelandPlotState<TData>, defaults: ConnectorDefaults, entries: readonly ClevelandEntry[]): ClevelandConnector;
|
|
22
|
+
/** What `entry`'s connector measures, which every other setting reads. */
|
|
23
|
+
rangeOf(entry: ClevelandEntry): ConnectorRange;
|
|
24
|
+
/** The color the author asks for `range`'s connector, if they do. */
|
|
25
|
+
color(range: ConnectorRange): string | undefined;
|
|
26
|
+
/** The thickness the author asks for `range`'s connector, if they do, given the dots' radius. */
|
|
27
|
+
width(range: ConnectorRange, dotRadius: number): number | undefined;
|
|
28
|
+
/** The opacity the author asks for `range`'s connector, if they do. */
|
|
29
|
+
opacity(range: ConnectorRange): number | undefined;
|
|
30
|
+
/** How the part of a connector outside the `from`-`to` stretch looks, over the plot's neutral `fallback` color. */
|
|
31
|
+
outside(fallback: string): {
|
|
32
|
+
stroke: string;
|
|
33
|
+
strokeOpacity: number;
|
|
34
|
+
};
|
|
35
|
+
/** The head of the arrow a connector is drawn as, `undefined` when it is a line. */
|
|
36
|
+
get arrow(): {
|
|
37
|
+
width: number;
|
|
38
|
+
headLength: number;
|
|
39
|
+
headAngle: number;
|
|
40
|
+
} | undefined;
|
|
41
|
+
/** The length (px) of the caps a connector draws at its ends, `undefined` when it draws none, given whether the plot draws them unless told otherwise. */
|
|
42
|
+
caps(byDefault: boolean | undefined): number | undefined;
|
|
43
|
+
/** The label options: `undefined` without a label. */
|
|
44
|
+
get label(): ConnectorLabel | undefined;
|
|
45
|
+
/** What the label of `range`'s connector says, `undefined` when it has nothing to say (no difference). */
|
|
46
|
+
text(range: ConnectorRange): string | undefined;
|
|
47
|
+
}
|
|
48
|
+
export {};
|