@fundar/data-chart-telling 1.1.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 +32 -0
- package/README.md +6 -6
- package/dist/configuration/config.svelte.d.ts +1 -1
- package/dist/configuration/config.svelte.js +165 -100
- package/dist/configuration/themes/index.d.ts +5 -1428
- package/dist/index.d.ts +23 -14
- package/dist/index.js +20 -11
- package/dist/layout/base/BasePlotLayout.svelte +115 -50
- 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/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 +4 -0
- package/dist/layout/legend/LegendState.svelte.js +20 -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/Slice.d.ts +5 -1
- package/dist/layout/plot/Slice.js +14 -4
- package/dist/layout/scales/NiceTicks.d.ts +3 -0
- package/dist/layout/scales/NiceTicks.js +4 -0
- package/dist/layout/scales/ScalesLayout.svelte +72 -7
- package/dist/layout/scales/ScalesLayout.svelte.d.ts +5 -0
- package/dist/layout/scales/SveltePlotScale.d.ts +2 -2
- package/dist/layout/scales/SveltePlotScale.js +13 -6
- 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 +80 -21
- package/dist/layout/timeline/TimelineLayout.svelte +1 -1
- package/dist/layout/tooltip/Tooltip.svelte +4 -4
- package/dist/layout/tooltip/Tooltip.svelte.d.ts +4 -4
- package/dist/layout/tooltip/TooltipState.svelte.js +1 -1
- 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/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 +5 -0
- package/dist/phases/data/DataPhase.js +3 -3
- package/dist/phases/data/PlotAxes.d.ts +10 -0
- package/dist/phases/data/PlotAxes.js +14 -1
- package/dist/phases/facet/FacetPanels.d.ts +1 -0
- package/dist/phases/facet/FacetPanels.js +1 -0
- package/dist/phases/mapping/MappingPhase.js +1 -1
- 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.js +21 -7
- package/dist/phases/sharedScales/SharedScalesPhase.d.ts +3 -2
- package/dist/phases/sharedScales/SharedScalesPhase.js +5 -2
- package/dist/phases/statistics/Statistics.d.ts +10 -6
- package/dist/phases/statistics/Statistics.js +20 -10
- package/dist/phases/statistics/StatisticsPhase.js +7 -2
- 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/transforms/ProcessedPositions.js +1 -1
- package/dist/phases/transforms/TransformsPhase.js +49 -3
- 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 +3 -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 +4 -4
- package/dist/plots/{scatter → correlation/scatter}/markers.d.ts +4 -4
- package/dist/plots/{scatter → correlation/scatter}/markers.js +3 -3
- package/dist/plots/{box → distribution/box}/BoxSummaries.d.ts +2 -2
- package/dist/plots/{box → distribution/box}/BoxSummaries.js +6 -6
- package/dist/plots/{box → distribution/box}/Plot.svelte +2 -2
- package/dist/plots/{box → distribution/box}/Plot.svelte.d.ts +2 -2
- package/dist/plots/{box → distribution/box}/defaults.d.ts +2 -2
- package/dist/plots/{box → distribution/box}/defaults.js +1 -1
- package/dist/plots/{box → distribution/box}/markers.d.ts +2 -2
- 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 +3 -3
- package/dist/plots/{histogram → distribution/histogram}/markers.d.ts +3 -3
- package/dist/plots/{histogram → distribution/histogram}/markers.js +5 -5
- 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 +6 -6
- package/dist/plots/{pyramid → distribution/pyramid}/markers.d.ts +4 -4
- package/dist/plots/{pyramid → distribution/pyramid}/markers.js +6 -6
- 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 +1 -1
- 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 +6 -4
- 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 +2 -2
- package/dist/plots/{geo → map/geo}/phases/markers.d.ts +1 -1
- package/dist/plots/{geo → map/geo}/phases/markers.js +6 -10
- 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 +2 -2
- 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 +15 -9
- package/dist/plots/{bar → ranking/bar}/markers.d.ts +8 -8
- package/dist/plots/{bar → ranking/bar}/markers.js +8 -17
- 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 +276 -143
- 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 +39 -7
- 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 +5 -2
- 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/index.d.ts +1 -1
- package/dist/types/phases/scales/phase.d.ts +5 -1
- package/dist/types/phases/state.d.ts +15 -2
- package/dist/types/phases/statistics/source.d.ts +3 -1
- package/dist/types/phases/transforms/phase.d.ts +22 -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/{box → distribution/box}/props.d.ts +6 -6
- package/dist/types/plots/{box → distribution/box}/state.d.ts +3 -3
- 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/{histogram → distribution/histogram}/props.d.ts +7 -7
- 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 +1 -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 +2 -2
- package/docs/composer.md +2 -2
- package/docs/concepts.md +1 -1
- package/docs/development.md +1 -1
- package/docs/facets.md +3 -3
- package/docs/getting-started.md +2 -2
- package/docs/legend.md +13 -11
- package/docs/markers.md +29 -27
- 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 -280
- package/docs/scales.md +30 -24
- package/docs/styles-and-segments.md +24 -21
- package/docs/theming.md +23 -20
- package/docs/timeline.md +3 -3
- package/docs/tooltip-and-hover.md +10 -10
- package/docs/transforms-and-statistics.md +13 -12
- package/examples/BarValues.svelte +1 -1
- package/examples/Box.svelte +1 -1
- package/examples/Bullet.svelte +17 -0
- package/examples/Chrome.svelte +1 -1
- package/examples/ChromeOrder.svelte +1 -1
- package/examples/Cleveland.svelte +15 -0
- package/examples/Composer.svelte +2 -2
- package/examples/CustomTooltip.svelte +1 -1
- package/examples/Density.svelte +7 -0
- package/examples/Dumbbell.svelte +16 -0
- package/examples/Facets.svelte +1 -1
- package/examples/FacetsCarousel.svelte +1 -1
- package/examples/FacetsRowsCols.svelte +1 -1
- package/examples/FirstPlot.svelte +1 -1
- package/examples/Forest.svelte +17 -0
- package/examples/Gaps.svelte +2 -2
- package/examples/GroupedBars.svelte +1 -1
- package/examples/Heatmap.svelte +3 -3
- package/examples/HeatmapSegments.svelte +8 -8
- package/examples/Histogram.svelte +1 -1
- package/examples/HorizontalBars.svelte +1 -1
- package/examples/LegendSections.svelte +1 -1
- package/examples/LegendToggle.svelte +1 -1
- package/examples/LineByRegion.svelte +1 -1
- package/examples/LineDates.svelte +1 -1
- package/examples/LineStep.svelte +16 -0
- package/examples/LineStepSegment.svelte +18 -0
- package/examples/Lollipop.svelte +17 -0
- package/examples/Markers.svelte +1 -1
- package/examples/MovingAverage.svelte +1 -1
- package/examples/Pyramid.svelte +9 -2
- package/examples/Regression.svelte +2 -2
- package/examples/ResponsiveLine.svelte +1 -1
- package/examples/Scales.svelte +1 -1
- package/examples/Scatter.svelte +2 -2
- package/examples/SegmentHighlight.svelte +1 -1
- package/examples/Segments.svelte +1 -1
- package/examples/SegmentsBySeries.svelte +1 -1
- package/examples/Slope.svelte +17 -0
- package/examples/Sparkline.svelte +14 -0
- package/examples/StackedArea.svelte +1 -1
- package/examples/StackedBars.svelte +1 -1
- package/examples/TimelinePlayer.svelte +1 -1
- package/examples/TimelineRule.svelte +1 -1
- package/examples/Tooltip.svelte +1 -1
- package/examples/ValueLabels.svelte +1 -1
- 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 +22 -11
- package/llms.txt +32 -4
- package/package.json +10 -1
- 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 -324
- /package/dist/plots/{box → distribution/box}/markers.js +0 -0
- /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/box/props.js → layout/styles/gaps.js} +0 -0
- /package/dist/types/{plots/box/state.js → layout/styles/geo.js} +0 -0
- /package/dist/types/{plots/geo/props.js → layout/styles/values.js} +0 -0
- /package/dist/types/{plots/geo/state.js → markers/axis/violin.js} +0 -0
- /package/dist/types/{plots/heatmap/props.js → markers/channels/commonMarkerConfigWithRowOffset.js} +0 -0
- /package/dist/types/plots/{histogram → correlation/heatmap}/props.js +0 -0
- /package/dist/types/plots/{heatmap → correlation/heatmap}/state.js +0 -0
- /package/dist/types/plots/{line → correlation/scatter}/props.js +0 -0
- /package/dist/types/plots/{histogram → correlation/scatter}/state.js +0 -0
- /package/dist/types/plots/{pyramid → distribution/box}/props.js +0 -0
- /package/dist/types/plots/{line → distribution/box}/state.js +0 -0
- /package/dist/types/plots/{scatter → distribution/density}/props.js +0 -0
- /package/dist/types/plots/{pyramid → distribution/density}/state.js +0 -0
- /package/dist/types/plots/{scatter/state.js → distribution/histogram/props.js} +0 -0
- /package/dist/{plots/utils → utils}/accessors.d.ts +0 -0
- /package/dist/{plots/utils → utils}/accessors.js +0 -0
|
@@ -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,23 +1,27 @@
|
|
|
1
|
-
import { ProcessedPositions } from '
|
|
1
|
+
import { ProcessedPositions } from '../../../phases/transforms/ProcessedPositions';
|
|
2
2
|
import { buildMarks, buildValueLabels, buildHitAreas, buildBarGeometry } from './markers';
|
|
3
|
-
import { NiceTicks } from '
|
|
4
|
-
import { SERIES_KEY } from '
|
|
5
|
-
import { PlotAxes } from '
|
|
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) {
|
|
11
|
+
export function fitValueDomain(state, extra = []) {
|
|
12
12
|
const axis = PlotAxes.valueOf(state);
|
|
13
13
|
const scale = state.scales[axis];
|
|
14
|
-
if (scale?.domain != null || scale?.ticks != null || scale?.nice
|
|
14
|
+
if (scale?.domain != null || scale?.ticks != null || typeof scale?.nice === 'boolean')
|
|
15
15
|
return {};
|
|
16
16
|
// Every bar's span, as the "transforms" phase left it - its baseline is
|
|
17
17
|
// unknown until the domain is, so a plain bar reads as reaching from zero.
|
|
18
18
|
const { of: spanOf } = ProcessedPositions.span(state.processedData, axis);
|
|
19
19
|
let lo = 0;
|
|
20
20
|
let hi = 0;
|
|
21
|
+
for (const value of extra) {
|
|
22
|
+
lo = Math.min(lo, value);
|
|
23
|
+
hi = Math.max(hi, value);
|
|
24
|
+
}
|
|
21
25
|
for (const row of state.processedData?.data ?? []) {
|
|
22
26
|
const span = spanOf(row);
|
|
23
27
|
if (!span)
|
|
@@ -27,7 +31,9 @@ function fitValueDomain(state) {
|
|
|
27
31
|
}
|
|
28
32
|
if (hi <= lo)
|
|
29
33
|
return {};
|
|
30
|
-
return {
|
|
34
|
+
return {
|
|
35
|
+
[axis]: { domain: NiceTicks.fit(state, axis, lo, hi, NiceTicks.toleranceOf(scale?.nice)) }
|
|
36
|
+
};
|
|
31
37
|
}
|
|
32
38
|
/**
|
|
33
39
|
* BarPlot on the shared pipeline: discrete bars with gap fills along one
|
|
@@ -46,7 +52,7 @@ export function buildBarDefaults() {
|
|
|
46
52
|
defaults: (_state, ctx) => ({
|
|
47
53
|
category: { paddingInner: ctx.cfg.bar.paddingInner, paddingOuter: ctx.cfg.bar.paddingOuter }
|
|
48
54
|
}),
|
|
49
|
-
fit: fitValueDomain
|
|
55
|
+
fit: (state) => fitValueDomain(state)
|
|
50
56
|
},
|
|
51
57
|
styles: {
|
|
52
58
|
values: {
|
|
@@ -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,10 +1,10 @@
|
|
|
1
|
-
import { ProcessedPositions } from '
|
|
2
|
-
import { getConfiguration } from '
|
|
3
|
-
import { GAP_KIND, GAP_VALUE, SERIES_ID_KEY } from '
|
|
4
|
-
import { seriesIdOf } from '
|
|
5
|
-
import { resolveGapAreaStyle } from '
|
|
6
|
-
import { PlotAxes } from '
|
|
7
|
-
import { ValueLabels } from '
|
|
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';
|
|
8
8
|
const GAP_KINDS = ['start', 'middle', 'end'];
|
|
9
9
|
/**
|
|
10
10
|
* Where a bar plot's bars sit, read off the state its phases leave: each
|
|
@@ -15,16 +15,7 @@ const GAP_KINDS = ['start', 'middle', 'end'];
|
|
|
15
15
|
export function buildBarGeometry(state, seriesPadding) {
|
|
16
16
|
const valueAxis = PlotAxes.valueOf(state);
|
|
17
17
|
const categoryAxis = PlotAxes.categoryOf(state);
|
|
18
|
-
const
|
|
19
|
-
// Bars rise from zero, or from the nearest end of a domain that leaves it out.
|
|
20
|
-
const baseline = (() => {
|
|
21
|
-
const lo = Number(domain?.[0]);
|
|
22
|
-
const hi = Number(domain?.[(domain?.length ?? 1) - 1]);
|
|
23
|
-
if (!domain || domain.length < 2 || Number.isNaN(lo) || Number.isNaN(hi))
|
|
24
|
-
return 0;
|
|
25
|
-
const [min, max] = [Math.min(lo, hi), Math.max(lo, hi)];
|
|
26
|
-
return min > 0 ? min : max < 0 ? max : 0;
|
|
27
|
-
})();
|
|
18
|
+
const baseline = PlotAxes.baselineOf(state);
|
|
28
19
|
const { stacked, of: spanOf } = ProcessedPositions.span(state.processedData, valueAxis, baseline);
|
|
29
20
|
const position = ProcessedPositions.of(state.processedData, valueAxis);
|
|
30
21
|
const categoryOf = (row) => position[categoryAxis](row);
|
|
@@ -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 {};
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { ColorRamp } from '../../../utils/color';
|
|
2
|
+
/**
|
|
3
|
+
* The connectors of a Cleveland-style plot as `styles.connector` styles them:
|
|
4
|
+
* what each one measures, its color, its thickness and its label. The plot's
|
|
5
|
+
* marks read each category's connector through it.
|
|
6
|
+
*/
|
|
7
|
+
export class ClevelandConnector {
|
|
8
|
+
style;
|
|
9
|
+
#defaults;
|
|
10
|
+
#colorOf;
|
|
11
|
+
constructor(style, defaults, entries) {
|
|
12
|
+
this.style = style ?? {};
|
|
13
|
+
this.#defaults = defaults;
|
|
14
|
+
this.#colorOf = ClevelandConnector.#colors(this.style.color, defaults, entries);
|
|
15
|
+
}
|
|
16
|
+
/** The series a plot's differences run between, from `styles.connector`. */
|
|
17
|
+
static ends(state) {
|
|
18
|
+
const { from, to } = state.styles?.connector ?? {};
|
|
19
|
+
return { from, to };
|
|
20
|
+
}
|
|
21
|
+
/** `styles.connector` of a plot's state, over the configuration's defaults and what `entries` measure. */
|
|
22
|
+
static of(state, defaults, entries) {
|
|
23
|
+
const style = state.styles?.connector;
|
|
24
|
+
return new ClevelandConnector(style, defaults, entries);
|
|
25
|
+
}
|
|
26
|
+
/** What `entry`'s connector measures, which every other setting reads. */
|
|
27
|
+
rangeOf(entry) {
|
|
28
|
+
return {
|
|
29
|
+
category: entry.category,
|
|
30
|
+
from: entry.from,
|
|
31
|
+
to: entry.to,
|
|
32
|
+
length: entry.to - entry.from,
|
|
33
|
+
difference: entry.difference,
|
|
34
|
+
span: entry.span,
|
|
35
|
+
series: entry.dots.length === 1 ? entry.dots[0].series : undefined
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/** The color the author asks for `range`'s connector, if they do. */
|
|
39
|
+
color(range) {
|
|
40
|
+
return this.#colorOf?.(range);
|
|
41
|
+
}
|
|
42
|
+
/** The thickness the author asks for `range`'s connector, if they do, given the dots' radius. */
|
|
43
|
+
width(range, dotRadius) {
|
|
44
|
+
const { width } = this.style;
|
|
45
|
+
if (width === undefined)
|
|
46
|
+
return undefined;
|
|
47
|
+
if (width === 'dots')
|
|
48
|
+
return dotRadius * 2;
|
|
49
|
+
return typeof width === 'function' ? width(range) : width;
|
|
50
|
+
}
|
|
51
|
+
/** The opacity the author asks for `range`'s connector, if they do. */
|
|
52
|
+
opacity(range) {
|
|
53
|
+
const { opacity } = this.style;
|
|
54
|
+
return typeof opacity === 'function' ? opacity(range) : opacity;
|
|
55
|
+
}
|
|
56
|
+
/** How the part of a connector outside the `from`-`to` stretch looks, over the plot's neutral `fallback` color. */
|
|
57
|
+
outside(fallback) {
|
|
58
|
+
const { outside } = this.style;
|
|
59
|
+
const own = typeof outside === 'string' ? { color: outside } : (outside ?? {});
|
|
60
|
+
return {
|
|
61
|
+
stroke: own.color ?? fallback,
|
|
62
|
+
strokeOpacity: own.opacity ?? this.#defaults.outsideOpacity
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/** The head of the arrow a connector is drawn as, `undefined` when it is a line. */
|
|
66
|
+
get arrow() {
|
|
67
|
+
const { arrow } = this.style;
|
|
68
|
+
if (!arrow)
|
|
69
|
+
return undefined;
|
|
70
|
+
const own = arrow === true ? {} : arrow;
|
|
71
|
+
return { ...this.#defaults.arrow, ...own };
|
|
72
|
+
}
|
|
73
|
+
/** 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. */
|
|
74
|
+
caps(byDefault) {
|
|
75
|
+
const { caps } = this.style;
|
|
76
|
+
const on = caps === undefined ? (byDefault ?? false) : caps !== false;
|
|
77
|
+
if (!on)
|
|
78
|
+
return undefined;
|
|
79
|
+
return (typeof caps === 'object' ? caps.length : undefined) ?? this.#defaults.capLength;
|
|
80
|
+
}
|
|
81
|
+
/** The label options: `undefined` without a label. */
|
|
82
|
+
get label() {
|
|
83
|
+
const { label } = this.style;
|
|
84
|
+
return label === undefined || label === false ? undefined : label === true ? {} : label;
|
|
85
|
+
}
|
|
86
|
+
/** What the label of `range`'s connector says, `undefined` when it has nothing to say (no difference). */
|
|
87
|
+
text(range) {
|
|
88
|
+
const label = this.label ?? {};
|
|
89
|
+
const what = label.text ?? 'difference';
|
|
90
|
+
if (typeof what === 'function')
|
|
91
|
+
return what(range);
|
|
92
|
+
const value = what === 'length' ? range.length : range.difference;
|
|
93
|
+
if (value === undefined || !Number.isFinite(value))
|
|
94
|
+
return undefined;
|
|
95
|
+
if (label.format)
|
|
96
|
+
return label.format(value, range);
|
|
97
|
+
const rounded = Math.round(value * 100) / 100;
|
|
98
|
+
return what === 'difference' && rounded > 0 ? `+${rounded}` : String(rounded);
|
|
99
|
+
}
|
|
100
|
+
/** The color function for `by`, over what `entries` measure, or `undefined` when no color is asked for. */
|
|
101
|
+
static #colors(color, defaults, entries) {
|
|
102
|
+
if (color === undefined)
|
|
103
|
+
return undefined;
|
|
104
|
+
if (typeof color === 'string')
|
|
105
|
+
return () => color;
|
|
106
|
+
if (typeof color === 'function')
|
|
107
|
+
return color;
|
|
108
|
+
if (color.by === 'sign') {
|
|
109
|
+
const { positive, negative, zero } = { ...defaults.sign, ...color };
|
|
110
|
+
return ({ difference }) => difference === undefined
|
|
111
|
+
? zero
|
|
112
|
+
: difference > 0
|
|
113
|
+
? positive
|
|
114
|
+
: difference < 0
|
|
115
|
+
? negative
|
|
116
|
+
: zero;
|
|
117
|
+
}
|
|
118
|
+
const { by, ...config } = color;
|
|
119
|
+
const read = (range) => (by === 'length' ? range.length : range.difference);
|
|
120
|
+
const values = entries
|
|
121
|
+
.map((entry) => (by === 'length' ? entry.to - entry.from : entry.difference))
|
|
122
|
+
.filter((value) => value !== undefined && Number.isFinite(value));
|
|
123
|
+
if (values.length === 0)
|
|
124
|
+
return undefined;
|
|
125
|
+
const lo = Math.min(...values);
|
|
126
|
+
const hi = Math.max(...values);
|
|
127
|
+
const diverging = by === 'difference' && config.scheme === undefined;
|
|
128
|
+
const scale = ColorRamp.resolve({
|
|
129
|
+
...(diverging ? { scheme: defaults.differenceScheme, pivot: 0 } : {}),
|
|
130
|
+
...(by === 'length' && config.scheme === undefined
|
|
131
|
+
? { scheme: defaults.lengthScheme }
|
|
132
|
+
: {}),
|
|
133
|
+
...config
|
|
134
|
+
}, by === 'difference' ? [Math.min(lo, 0), Math.max(hi, 0)] : [lo, hi], by === 'length' ? defaults.lengthScheme : defaults.differenceScheme);
|
|
135
|
+
return (range) => {
|
|
136
|
+
const value = read(range);
|
|
137
|
+
return value === undefined ? undefined : scale(value);
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ValueLabels } from '../../../layout/styles/ValueLabels';
|
|
2
|
+
import type { ClevelandPlotState, ClevelandPlotCtx, ClevelandOptions } from '../../../types/plots/ranking/cleveland/state';
|
|
3
|
+
import type { AxisBasedMarkersConfig, TextMarkerConfig } from '../../../types/markers/common';
|
|
4
|
+
import type { EdgeBox } from '../../../types/layout/box';
|
|
5
|
+
/**
|
|
6
|
+
* The marks of the Cleveland family of plots, which differ only by their
|
|
7
|
+
* {@link ClevelandOptions}: per category, a connector from its lowest to its
|
|
8
|
+
* highest value (from the baseline, for a lollipop) with a dot at each value.
|
|
9
|
+
* A category with one dot gets a stem in that dot's series color, restyled by
|
|
10
|
+
* the segment its dot belongs to; a category with several gets one neutral
|
|
11
|
+
* connector. The "markers" phase takes its `marks`, `valueLabels` and `reach`.
|
|
12
|
+
*/
|
|
13
|
+
export declare class ClevelandMarkers {
|
|
14
|
+
#private;
|
|
15
|
+
constructor(options: ClevelandOptions);
|
|
16
|
+
/** Forgets what was warned about; for tests. */
|
|
17
|
+
static resetWarnings(): void;
|
|
18
|
+
/** The plot's connectors, then its dots, which draw on top of them. */
|
|
19
|
+
marks: <TData extends Record<string, unknown>>(state: ClevelandPlotState<TData>, ctx: ClevelandPlotCtx) => AxisBasedMarkersConfig[];
|
|
20
|
+
/**
|
|
21
|
+
* The value labels of the dots `styles.values.of` picks, one `'text'` marker
|
|
22
|
+
* per place a dot can hold in its range - past the top end (above, or right
|
|
23
|
+
* of it), past the bottom end (below, or left of it) and, for the dots
|
|
24
|
+
* between, beside it - and per series, when they take their series' color.
|
|
25
|
+
*/
|
|
26
|
+
valueLabels: <TData extends Record<string, unknown>>(labels: ValueLabels, state: ClevelandPlotState<TData>, ctx: ClevelandPlotCtx) => TextMarkerConfig[];
|
|
27
|
+
/**
|
|
28
|
+
* Room for the labels past the dots at the end of the value axis, so the
|
|
29
|
+
* farthest one fits inside the figure instead of crossing its edge. Only the
|
|
30
|
+
* dots at the top end of their range reach there, and only the picked ones.
|
|
31
|
+
*/
|
|
32
|
+
reach: <TData extends Record<string, unknown>>(labels: ValueLabels, state: ClevelandPlotState<TData>) => EdgeBox[];
|
|
33
|
+
}
|