@fundar/data-chart-telling 0.0.64 → 1.1.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 +38 -0
- package/LICENSE +21 -0
- package/README.md +112 -553
- package/dist/configuration/config.svelte.d.ts +5 -5
- package/dist/configuration/config.svelte.js +142 -46
- package/dist/configuration/fonts.d.ts +6 -0
- package/dist/configuration/fonts.js +6 -0
- package/dist/configuration/themes/compact.d.ts +2 -2
- package/dist/configuration/themes/compact.js +1 -1
- package/dist/configuration/themes/dark.d.ts +2 -2
- package/dist/configuration/themes/dark.js +5 -4
- package/dist/configuration/themes/default.d.ts +8 -3
- package/dist/configuration/themes/default.js +8 -2
- package/dist/configuration/themes/editorial.d.ts +2 -2
- package/dist/configuration/themes/editorial.js +2 -2
- package/dist/configuration/themes/index.d.ts +545 -80
- package/dist/configuration/themes/index.js +6 -5
- package/dist/index.d.ts +35 -48
- package/dist/index.js +20 -35
- package/dist/layout/base/BasePlotLayout.svelte +325 -0
- package/dist/layout/base/BasePlotLayout.svelte.d.ts +111 -0
- package/dist/layout/composer/PlotComposer.svelte +94 -0
- package/dist/layout/composer/PlotComposer.svelte.d.ts +13 -0
- package/dist/layout/coordinates/CameraFit.svelte +4 -4
- package/dist/layout/coordinates/CoordinatesLayout.svelte +11 -3
- package/dist/layout/coordinates/CoordinatesLayout.svelte.d.ts +6 -2
- package/dist/layout/coordinates/camera.svelte.d.ts +1 -1
- package/dist/layout/coordinates/camera.svelte.js +6 -6
- package/dist/layout/coordinates/projections/argentina.js +3 -3
- package/dist/layout/coordinates/projections/fit.js +1 -1
- package/dist/layout/coordinates/resolveCameraTarget.d.ts +1 -1
- package/dist/layout/coordinates/resolveProjection.d.ts +1 -1
- package/dist/layout/coordinates/resolveProjection.js +2 -2
- package/dist/layout/coordinates/rotate.svelte.d.ts +3 -3
- package/dist/layout/coordinates/rotate.svelte.js +8 -8
- package/dist/layout/coordinates/zoom.svelte.d.ts +1 -1
- package/dist/layout/facet/FacetIndicator.svelte +23 -23
- package/dist/layout/facet/FacetLayout.svelte +435 -398
- package/dist/layout/facet/FacetLayout.svelte.d.ts +9 -3
- package/dist/layout/facet/axes.d.ts +16 -0
- package/dist/layout/facet/axes.js +25 -0
- package/dist/layout/facet/config.d.ts +32 -0
- package/dist/layout/facet/config.js +82 -0
- package/dist/layout/figure/Figure.svelte +177 -0
- package/dist/layout/figure/Figure.svelte.d.ts +14 -0
- package/dist/layout/figure/FigureChrome.svelte +341 -0
- package/dist/layout/figure/FigureChrome.svelte.d.ts +21 -0
- package/dist/layout/geometry/FrameClip.svelte +45 -0
- package/dist/layout/geometry/FrameClip.svelte.d.ts +8 -0
- package/dist/layout/geometry/FrameClipping.d.ts +24 -0
- package/dist/layout/geometry/FrameClipping.js +40 -0
- package/dist/layout/geometry/GeometryLayout.svelte +287 -224
- package/dist/layout/geometry/GeometryLayout.svelte.d.ts +10 -10
- package/dist/layout/grid/Grid.svelte +194 -0
- package/dist/layout/grid/Grid.svelte.d.ts +26 -0
- package/dist/layout/grid/GridAlignment.svelte.d.ts +31 -0
- package/dist/layout/grid/GridAlignment.svelte.js +56 -0
- package/dist/layout/grid/GridCell.svelte +141 -0
- package/dist/layout/grid/GridCell.svelte.d.ts +17 -0
- package/dist/layout/grid/GridCellsRegistry.svelte.d.ts +52 -0
- package/dist/layout/grid/GridCellsRegistry.svelte.js +70 -0
- package/dist/layout/grid/GridPlan.d.ts +49 -0
- package/dist/layout/grid/GridPlan.js +167 -0
- package/dist/layout/grid/Tags.d.ts +8 -0
- package/dist/layout/grid/Tags.js +39 -0
- package/dist/layout/hover/HoverScope.svelte +11 -0
- package/dist/layout/hover/HoverScope.svelte.d.ts +8 -0
- package/dist/layout/hover/HoverSettings.d.ts +34 -0
- package/dist/layout/hover/HoverSettings.js +52 -0
- package/dist/layout/hover/HoverState.svelte.d.ts +47 -0
- package/dist/layout/hover/HoverState.svelte.js +99 -0
- package/dist/layout/hover/PlotHover.svelte.d.ts +63 -0
- package/dist/layout/hover/PlotHover.svelte.js +133 -0
- package/dist/layout/interaction/PlotInteraction.svelte.d.ts +38 -0
- package/dist/layout/interaction/PlotInteraction.svelte.js +56 -0
- package/dist/layout/legend/AxisNumberFormat.d.ts +12 -0
- package/dist/layout/legend/AxisNumberFormat.js +25 -0
- package/dist/layout/legend/ContinuousSection.svelte +363 -351
- package/dist/layout/legend/DisabledStyle.d.ts +19 -0
- package/dist/layout/legend/DisabledStyle.js +57 -0
- package/dist/layout/legend/DiscreteBadgeItem.svelte +6 -3
- package/dist/layout/legend/DiscreteSection.svelte +32 -32
- package/dist/layout/legend/DiscreteSwatchItem.svelte +4 -1
- package/dist/layout/legend/DiscreteSymbolIcon.svelte +14 -9
- package/dist/layout/legend/LegendChannels.d.ts +21 -0
- package/dist/layout/legend/LegendChannels.js +221 -0
- package/dist/layout/legend/LegendLayout.svelte +49 -43
- package/dist/layout/legend/LegendState.svelte.d.ts +84 -0
- package/dist/layout/legend/LegendState.svelte.js +333 -0
- package/dist/layout/legend/LegendText.d.ts +12 -0
- package/dist/layout/legend/LegendText.js +22 -0
- package/dist/layout/legend/SizeSection.svelte +84 -0
- package/dist/layout/legend/SizeSection.svelte.d.ts +7 -0
- package/dist/layout/legend/SymbolSection.svelte +31 -0
- package/dist/layout/legend/SymbolSection.svelte.d.ts +8 -0
- package/dist/layout/margins/Box.d.ts +84 -0
- package/dist/layout/margins/Box.js +138 -0
- package/dist/layout/margins/Margins.d.ts +37 -0
- package/dist/layout/margins/Margins.js +71 -0
- package/dist/layout/margins/PlotMargins.svelte.d.ts +101 -0
- package/dist/layout/margins/PlotMargins.svelte.js +219 -0
- package/dist/layout/plot/Core.svelte +61 -0
- package/dist/layout/plot/Core.svelte.d.ts +41 -0
- package/dist/layout/plot/PanelRun.svelte +28 -0
- package/dist/{charts/heatmap/Chart.svelte.d.ts → layout/plot/PanelRun.svelte.d.ts} +11 -7
- package/dist/layout/plot/Plot.svelte +287 -0
- package/dist/layout/plot/Plot.svelte.d.ts +49 -0
- package/dist/layout/plot/PlotContext.d.ts +41 -0
- package/dist/layout/plot/PlotContext.js +46 -0
- package/dist/layout/plot/PublicPlotContext.d.ts +131 -0
- package/dist/layout/plot/PublicPlotContext.js +240 -0
- package/dist/layout/plot/Slice.d.ts +44 -0
- package/dist/layout/plot/Slice.js +100 -0
- package/dist/layout/plot/usePlot.d.ts +9 -0
- package/dist/layout/plot/usePlot.js +13 -0
- package/dist/layout/scales/EdgeTicks.d.ts +39 -0
- package/dist/layout/scales/EdgeTicks.js +82 -0
- package/dist/layout/scales/NiceTicks.d.ts +40 -0
- package/dist/layout/scales/NiceTicks.js +72 -0
- package/dist/layout/scales/ScalesLayout.svelte +275 -206
- package/dist/layout/scales/ScalesLayout.svelte.d.ts +7 -1
- package/dist/layout/scales/SveltePlotScale.d.ts +15 -0
- package/dist/layout/scales/SveltePlotScale.js +79 -0
- package/dist/layout/styles/StylesLayout.svelte +65 -65
- package/dist/layout/styles/TileLayer.svelte +78 -76
- package/dist/layout/styles/TileLayer.svelte.d.ts +1 -1
- package/dist/layout/styles/ValueLabels.d.ts +97 -0
- package/dist/layout/styles/ValueLabels.js +238 -0
- package/dist/layout/timeline/Timeline.svelte +83 -74
- package/dist/layout/timeline/Timeline.svelte.d.ts +2 -0
- package/dist/layout/timeline/TimelineFrame.svelte +86 -0
- package/dist/layout/timeline/TimelineFrame.svelte.d.ts +16 -0
- package/dist/layout/timeline/TimelineLayout.svelte +140 -169
- package/dist/layout/timeline/TimelineLayout.svelte.d.ts +7 -3
- package/dist/layout/timeline/TimelinePlayer.svelte +195 -0
- package/dist/layout/timeline/TimelinePlayer.svelte.d.ts +7 -0
- package/dist/layout/timeline/TimelineRule.svelte +51 -0
- package/dist/layout/timeline/TimelineRule.svelte.d.ts +7 -0
- package/dist/layout/timeline/TimelineState.svelte.d.ts +90 -0
- package/dist/layout/timeline/TimelineState.svelte.js +260 -0
- package/dist/layout/timeline/TimelineSteps.d.ts +24 -0
- package/dist/layout/timeline/TimelineSteps.js +48 -0
- package/dist/layout/timeline/TimelineTime.d.ts +18 -0
- package/dist/layout/timeline/TimelineTime.js +117 -0
- package/dist/layout/tooltip/Tooltip.svelte +85 -85
- package/dist/layout/tooltip/Tooltip.svelte.d.ts +45 -24
- package/dist/layout/tooltip/TooltipState.svelte.d.ts +67 -0
- package/dist/layout/tooltip/TooltipState.svelte.js +126 -0
- package/dist/markers/MarkerKinds.d.ts +173 -0
- package/dist/markers/MarkerKinds.js +51 -0
- package/dist/markers/area/AreaMarker.svelte +110 -0
- package/dist/markers/area/AreaMarker.svelte.d.ts +7 -0
- package/dist/markers/arrow/ArrowMarker.svelte +28 -0
- package/dist/markers/arrow/ArrowMarker.svelte.d.ts +7 -0
- package/dist/markers/{BarMarker.svelte → bar/BarMarker.svelte} +54 -52
- package/dist/markers/{BarMarker.svelte.d.ts → bar/BarMarker.svelte.d.ts} +1 -1
- package/dist/markers/bollinger/BollingerMarker.svelte +44 -0
- package/dist/markers/bollinger/BollingerMarker.svelte.d.ts +7 -0
- package/dist/markers/box/BoxMarker.svelte +143 -0
- package/dist/markers/box/BoxMarker.svelte.d.ts +7 -0
- package/dist/markers/brush/BrushMarker.svelte +32 -0
- package/dist/markers/brush/BrushMarker.svelte.d.ts +7 -0
- package/dist/markers/cell/CellMarker.svelte +27 -0
- package/dist/markers/{CellMarker.svelte.d.ts → cell/CellMarker.svelte.d.ts} +1 -1
- package/dist/markers/contour/ContourClipMarker.svelte +83 -0
- package/dist/markers/{ContourClipMarker.svelte.d.ts → contour/ContourClipMarker.svelte.d.ts} +1 -1
- package/dist/markers/contour/ContourMarker.svelte +28 -0
- package/dist/markers/{ContourMarker.svelte.d.ts → contour/ContourMarker.svelte.d.ts} +1 -1
- package/dist/markers/delaunay/DelaunayLinkMarker.svelte +26 -0
- package/dist/markers/delaunay/DelaunayLinkMarker.svelte.d.ts +7 -0
- package/dist/markers/delaunay/DelaunayMeshMarker.svelte +26 -0
- package/dist/markers/delaunay/DelaunayMeshMarker.svelte.d.ts +7 -0
- package/dist/markers/delta/Delta.d.ts +21 -0
- package/dist/markers/delta/Delta.js +60 -0
- package/dist/markers/delta/DeltaMarker.svelte +96 -0
- package/dist/markers/{DeltaMarker.svelte.d.ts → delta/DeltaMarker.svelte.d.ts} +2 -2
- package/dist/markers/density/DensityMarker.svelte +63 -0
- package/dist/markers/density/DensityMarker.svelte.d.ts +7 -0
- package/dist/markers/difference/DifferenceMarker.svelte +30 -0
- package/dist/markers/difference/DifferenceMarker.svelte.d.ts +7 -0
- package/dist/markers/dot/DotMarker.svelte +102 -0
- package/dist/markers/{DotMarker.svelte.d.ts → dot/DotMarker.svelte.d.ts} +5 -17
- package/dist/markers/geo/GeoFeaturesMarker.svelte +39 -0
- package/dist/markers/{GeoFeaturesMarker.svelte.d.ts → geo/GeoFeaturesMarker.svelte.d.ts} +1 -1
- package/dist/markers/geo/GeoHoverMarker.svelte +28 -0
- package/dist/markers/{GeoHoverMarker.svelte.d.ts → geo/GeoHoverMarker.svelte.d.ts} +2 -2
- package/dist/markers/geo/GraticuleMarker.svelte +18 -0
- package/dist/markers/{GraticuleMarker.svelte.d.ts → geo/GraticuleMarker.svelte.d.ts} +1 -1
- package/dist/markers/geo/SphereMarker.svelte +15 -0
- package/dist/markers/{SphereMarker.svelte.d.ts → geo/SphereMarker.svelte.d.ts} +1 -1
- package/dist/markers/hover/HoverMarker.svelte +252 -0
- package/dist/markers/{HoverMarker.svelte.d.ts → hover/HoverMarker.svelte.d.ts} +10 -10
- package/dist/markers/hull/HullMarker.svelte +25 -0
- package/dist/markers/hull/HullMarker.svelte.d.ts +7 -0
- package/dist/markers/image/ImageMarker.svelte +22 -0
- package/dist/markers/image/ImageMarker.svelte.d.ts +7 -0
- package/dist/markers/inset/InsetMarker.svelte +184 -150
- package/dist/markers/inset/InsetMarker.svelte.d.ts +4 -4
- package/dist/markers/inset/insetLayout.d.ts +1 -1
- package/dist/markers/inset/insetLayout.js +6 -2
- package/dist/markers/inset/insetProjection.d.ts +1 -1
- package/dist/markers/inset/insetProjection.js +3 -3
- package/dist/markers/line/LineMarker.svelte +30 -0
- package/dist/markers/{LineMarker.svelte.d.ts → line/LineMarker.svelte.d.ts} +1 -1
- package/dist/markers/link/LinkMarker.svelte +47 -0
- package/dist/markers/{LinkMarker.svelte.d.ts → link/LinkMarker.svelte.d.ts} +1 -1
- package/dist/markers/raster/RasterMarker.svelte +31 -0
- package/dist/markers/raster/RasterMarker.svelte.d.ts +7 -0
- package/dist/markers/rect/RectMarker.svelte +62 -0
- package/dist/markers/rect/RectMarker.svelte.d.ts +7 -0
- package/dist/markers/regression/RegressionMarker.svelte +60 -0
- package/dist/markers/regression/RegressionMarker.svelte.d.ts +7 -0
- package/dist/markers/rule/RuleMarker.svelte +47 -0
- package/dist/markers/{RuleMarker.svelte.d.ts → rule/RuleMarker.svelte.d.ts} +2 -5
- package/dist/markers/text/Declutter.d.ts +35 -0
- package/dist/markers/text/Declutter.js +157 -0
- package/dist/markers/text/TextMarker.svelte +244 -0
- package/dist/markers/{TextMarker.svelte.d.ts → text/TextMarker.svelte.d.ts} +5 -9
- package/dist/markers/tick/TickMarker.svelte +44 -0
- package/dist/markers/tick/TickMarker.svelte.d.ts +7 -0
- package/dist/markers/trail/TrailMarker.svelte +27 -0
- package/dist/markers/trail/TrailMarker.svelte.d.ts +7 -0
- package/dist/markers/utils/BandNudge.d.ts +22 -0
- package/dist/markers/utils/BandNudge.js +23 -0
- package/dist/markers/utils/MarkerChannels.d.ts +49 -0
- package/dist/markers/utils/MarkerChannels.js +97 -0
- package/dist/markers/vector/VectorMarker.svelte +29 -0
- package/dist/markers/{VectorMarker.svelte.d.ts → vector/VectorMarker.svelte.d.ts} +1 -1
- package/dist/markers/voronoi/VoronoiMarker.svelte +26 -0
- package/dist/markers/voronoi/VoronoiMarker.svelte.d.ts +7 -0
- package/dist/markers/voronoi/VoronoiMeshMarker.svelte +26 -0
- package/dist/markers/voronoi/VoronoiMeshMarker.svelte.d.ts +7 -0
- package/dist/markers/waffle/WaffleMarker.svelte +56 -0
- package/dist/markers/waffle/WaffleMarker.svelte.d.ts +7 -0
- package/dist/phases/Pipeline.d.ts +108 -0
- package/dist/phases/Pipeline.js +227 -0
- package/dist/phases/data/DataPhase.d.ts +19 -0
- package/dist/phases/data/DataPhase.js +85 -0
- package/dist/phases/data/PlotAxes.d.ts +75 -0
- package/dist/phases/data/PlotAxes.js +151 -0
- package/dist/phases/facet/FacetPanels.d.ts +54 -0
- package/dist/phases/facet/FacetPanels.js +95 -0
- package/dist/phases/facet/FacetPhase.d.ts +11 -0
- package/dist/phases/facet/FacetPhase.js +28 -0
- package/dist/phases/hover/HoverPhase.d.ts +36 -0
- package/dist/phases/hover/HoverPhase.js +109 -0
- package/dist/phases/mapping/MappingPhase.d.ts +17 -0
- package/dist/phases/mapping/MappingPhase.js +40 -0
- package/dist/phases/markers/MarkersPhase.d.ts +14 -0
- package/dist/phases/markers/MarkersPhase.js +27 -0
- package/dist/phases/scales/MarkerAxisValues.d.ts +12 -0
- package/dist/phases/scales/MarkerAxisValues.js +34 -0
- package/dist/phases/scales/ScalesPhase.d.ts +29 -0
- package/dist/phases/scales/ScalesPhase.js +153 -0
- package/dist/phases/sharedScales/SharedScalesPhase.d.ts +58 -0
- package/dist/phases/sharedScales/SharedScalesPhase.js +171 -0
- package/dist/phases/statistics/AuthorMarkers.d.ts +43 -0
- package/dist/phases/statistics/AuthorMarkers.js +69 -0
- package/dist/phases/statistics/MarkerGrouping.d.ts +48 -0
- package/dist/phases/statistics/MarkerGrouping.js +113 -0
- package/dist/phases/statistics/Statistics.d.ts +53 -0
- package/dist/phases/statistics/Statistics.js +156 -0
- package/dist/phases/statistics/StatisticsPhase.d.ts +18 -0
- package/dist/phases/statistics/StatisticsPhase.js +67 -0
- package/dist/phases/statistics/methods/BollingerStatistic.d.ts +9 -0
- package/dist/phases/statistics/methods/BollingerStatistic.js +18 -0
- package/dist/phases/statistics/methods/BoxStatistic.d.ts +9 -0
- package/dist/phases/statistics/methods/BoxStatistic.js +18 -0
- package/dist/phases/statistics/methods/Density2dStatistic.d.ts +9 -0
- package/dist/phases/statistics/methods/Density2dStatistic.js +18 -0
- package/dist/phases/statistics/methods/DensityStatistic.d.ts +12 -0
- package/dist/phases/statistics/methods/DensityStatistic.js +29 -0
- package/dist/phases/statistics/methods/MovingAverageStatistic.d.ts +12 -0
- package/dist/phases/statistics/methods/MovingAverageStatistic.js +30 -0
- package/dist/phases/statistics/methods/RegressionStatistic.d.ts +9 -0
- package/dist/phases/statistics/methods/RegressionStatistic.js +21 -0
- package/dist/phases/styles/StylesPhase.d.ts +13 -0
- package/dist/phases/styles/StylesPhase.js +17 -0
- package/dist/phases/tooltip/TooltipPhase.d.ts +14 -0
- package/dist/phases/tooltip/TooltipPhase.js +17 -0
- package/dist/phases/transforms/ProcessedPositions.d.ts +30 -0
- package/dist/phases/transforms/ProcessedPositions.js +74 -0
- package/dist/phases/transforms/Transforms.d.ts +42 -0
- package/dist/phases/transforms/Transforms.js +130 -0
- package/dist/phases/transforms/TransformsPhase.d.ts +27 -0
- package/dist/phases/transforms/TransformsPhase.js +205 -0
- package/dist/phases/transforms/methods/AnchorBar.d.ts +13 -0
- package/dist/phases/transforms/methods/AnchorBar.js +21 -0
- package/dist/phases/transforms/methods/BinTransform.d.ts +7 -0
- package/dist/phases/transforms/methods/BinTransform.js +48 -0
- package/dist/phases/transforms/methods/DensityTransform.d.ts +6 -0
- package/dist/phases/transforms/methods/DensityTransform.js +13 -0
- package/dist/phases/transforms/methods/GroupTransform.d.ts +8 -0
- package/dist/phases/transforms/methods/GroupTransform.js +39 -0
- package/dist/phases/transforms/methods/NormalizeTransform.d.ts +10 -0
- package/dist/phases/transforms/methods/NormalizeTransform.js +30 -0
- package/dist/phases/transforms/methods/OrderTransform.d.ts +16 -0
- package/dist/phases/transforms/methods/OrderTransform.js +43 -0
- package/dist/phases/transforms/methods/PerGroup.d.ts +11 -0
- package/dist/phases/transforms/methods/PerGroup.js +39 -0
- package/dist/phases/transforms/methods/PositionTransform.d.ts +15 -0
- package/dist/phases/transforms/methods/PositionTransform.js +74 -0
- package/dist/phases/transforms/methods/StackTransform.d.ts +8 -0
- package/dist/phases/transforms/methods/StackTransform.js +29 -0
- package/dist/phases/transforms/methods/WindowTransform.d.ts +8 -0
- package/dist/phases/transforms/methods/WindowTransform.js +23 -0
- package/dist/plots/area/Plot.svelte +42 -0
- package/dist/plots/{heatmap/ValueLabels.svelte.d.ts → area/Plot.svelte.d.ts} +8 -16
- package/dist/plots/area/defaults.d.ts +4 -0
- package/dist/plots/area/defaults.js +21 -0
- package/dist/plots/area/markers.d.ts +14 -0
- package/dist/plots/area/markers.js +39 -0
- package/dist/plots/bar/Plot.svelte +33 -438
- package/dist/plots/bar/Plot.svelte.d.ts +5 -8
- package/dist/plots/bar/defaults.d.ts +9 -0
- package/dist/plots/bar/defaults.js +88 -0
- package/dist/plots/bar/markers.d.ts +45 -0
- package/dist/plots/bar/markers.js +233 -0
- package/dist/plots/box/BoxSummaries.d.ts +19 -0
- package/dist/plots/box/BoxSummaries.js +101 -0
- package/dist/plots/box/Plot.svelte +42 -0
- package/dist/plots/box/Plot.svelte.d.ts +26 -0
- package/dist/plots/box/defaults.d.ts +12 -0
- package/dist/plots/box/defaults.js +34 -0
- package/dist/plots/box/markers.d.ts +12 -0
- package/dist/plots/box/markers.js +34 -0
- package/dist/plots/geo/Core.svelte +151 -0
- package/dist/plots/geo/Core.svelte.d.ts +25 -0
- package/dist/plots/geo/Plot.svelte +103 -324
- package/dist/plots/geo/Plot.svelte.d.ts +5 -9
- package/dist/plots/geo/defaults.d.ts +4 -0
- package/dist/plots/geo/defaults.js +16 -0
- package/dist/plots/geo/features.svelte.d.ts +5 -0
- package/dist/plots/geo/features.svelte.js +44 -0
- package/dist/plots/geo/phases/data.d.ts +6 -0
- package/dist/plots/geo/phases/data.js +26 -0
- package/dist/plots/geo/phases/hover.d.ts +9 -0
- package/dist/plots/geo/phases/hover.js +45 -0
- package/dist/plots/geo/phases/markers.d.ts +9 -0
- package/dist/plots/geo/phases/markers.js +75 -0
- package/dist/plots/geo/phases/scales.d.ts +10 -0
- package/dist/plots/geo/phases/scales.js +85 -0
- package/dist/plots/geo/phases/tooltip.d.ts +3 -0
- package/dist/plots/geo/phases/tooltip.js +5 -0
- package/dist/plots/geo/slices.d.ts +18 -0
- package/dist/plots/geo/slices.js +59 -0
- package/dist/plots/heatmap/Plot.svelte +55 -249
- package/dist/plots/heatmap/Plot.svelte.d.ts +5 -8
- package/dist/plots/heatmap/defaults.d.ts +11 -0
- package/dist/plots/heatmap/defaults.js +91 -0
- package/dist/plots/heatmap/markers.d.ts +17 -0
- package/dist/plots/heatmap/markers.js +142 -0
- package/dist/plots/histogram/Plot.svelte +45 -0
- package/dist/plots/histogram/Plot.svelte.d.ts +26 -0
- package/dist/plots/histogram/defaults.d.ts +9 -0
- package/dist/plots/histogram/defaults.js +87 -0
- package/dist/plots/histogram/markers.d.ts +18 -0
- package/dist/plots/histogram/markers.js +89 -0
- package/dist/plots/line/Plot.svelte +37 -268
- package/dist/plots/line/Plot.svelte.d.ts +3 -7
- package/dist/plots/line/defaults.d.ts +4 -0
- package/dist/plots/line/defaults.js +29 -0
- package/dist/plots/line/markers.d.ts +49 -0
- package/dist/plots/line/markers.js +199 -0
- package/dist/plots/pyramid/Plot.svelte +34 -362
- package/dist/plots/pyramid/Plot.svelte.d.ts +5 -8
- package/dist/plots/pyramid/defaults.d.ts +13 -0
- package/dist/plots/pyramid/defaults.js +87 -0
- package/dist/plots/pyramid/markers.d.ts +21 -0
- package/dist/plots/pyramid/markers.js +156 -0
- package/dist/plots/scatter/Plot.svelte +34 -288
- package/dist/plots/scatter/Plot.svelte.d.ts +5 -8
- package/dist/plots/scatter/defaults.d.ts +4 -0
- package/dist/plots/scatter/defaults.js +80 -0
- package/dist/plots/scatter/markers.d.ts +19 -0
- package/dist/plots/scatter/markers.js +129 -0
- package/dist/plots/utils/ChannelName.d.ts +9 -0
- package/dist/plots/utils/ChannelName.js +14 -0
- package/dist/plots/utils/accessors.d.ts +1 -1
- package/dist/plots/utils/accessors.js +4 -2
- package/dist/plots/utils/gaps.d.ts +14 -19
- package/dist/plots/utils/gaps.js +38 -18
- package/dist/plots/utils/geoAccessors.d.ts +8 -8
- package/dist/plots/utils/geoAccessors.js +16 -12
- package/dist/plots/utils/geoSegments.d.ts +24 -9
- package/dist/plots/utils/geoSegments.js +31 -11
- package/dist/plots/utils/segments.d.ts +5 -16
- package/dist/plots/utils/segments.js +40 -52
- package/dist/plots/utils/tiles.d.ts +9 -9
- package/dist/plots/utils/tiles.js +35 -25
- package/dist/plots/utils/topojson.d.ts +1 -1
- package/dist/plots/utils/topojson.js +3 -3
- package/dist/stores/device.js +2 -4
- package/dist/types/configuration/styling.d.ts +174 -27
- package/dist/types/layout/box.d.ts +24 -0
- package/dist/types/layout/composer.d.ts +39 -0
- package/dist/types/layout/coordinates.d.ts +14 -14
- package/dist/types/layout/facet.d.ts +44 -22
- package/dist/types/layout/figure.d.ts +7 -0
- package/dist/types/layout/geometry.d.ts +6 -2
- package/dist/types/layout/grid.d.ts +66 -0
- package/dist/types/layout/hover.d.ts +48 -0
- package/dist/types/layout/legend.d.ts +256 -55
- package/dist/types/layout/mapping.d.ts +68 -0
- package/dist/types/layout/plot.d.ts +41 -0
- package/dist/types/layout/scales.d.ts +108 -24
- package/dist/types/layout/scales.js +19 -1
- package/dist/types/layout/statistics/bollinger.d.ts +18 -0
- package/dist/types/layout/statistics/box.d.ts +8 -0
- package/dist/types/layout/statistics/box.js +1 -0
- package/dist/types/layout/statistics/density.d.ts +27 -0
- package/dist/types/layout/statistics/density.js +1 -0
- package/dist/types/layout/statistics/index.d.ts +46 -0
- package/dist/types/layout/statistics/index.js +1 -0
- package/dist/types/layout/statistics/movingAverage.d.ts +12 -0
- package/dist/types/layout/statistics/movingAverage.js +1 -0
- package/dist/types/layout/statistics/regression.d.ts +20 -0
- package/dist/types/layout/statistics/regression.js +1 -0
- package/dist/types/layout/styles.d.ts +24 -35
- package/dist/types/layout/timeline.d.ts +62 -6
- package/dist/types/layout/tooltip.d.ts +7 -85
- package/dist/types/markers/all.d.ts +3 -4
- package/dist/types/markers/axis/area.d.ts +12 -0
- package/dist/types/markers/axis/area.js +1 -0
- package/dist/types/markers/axis/arrow.d.ts +15 -0
- package/dist/types/markers/axis/arrow.js +1 -0
- package/dist/types/markers/axis/axisBasedMarkersConfig.d.ts +29 -0
- package/dist/types/markers/axis/axisBasedMarkersConfig.js +1 -0
- package/dist/types/markers/axis/bar.d.ts +18 -0
- package/dist/types/markers/axis/bar.js +1 -0
- package/dist/types/markers/axis/bollinger.d.ts +6 -0
- package/dist/types/markers/axis/bollinger.js +1 -0
- package/dist/types/markers/axis/box.d.ts +14 -0
- package/dist/types/markers/axis/box.js +1 -0
- package/dist/types/markers/axis/brush.d.ts +28 -0
- package/dist/types/markers/axis/brush.js +1 -0
- package/dist/types/markers/axis/cell.d.ts +9 -0
- package/dist/types/markers/axis/cell.js +1 -0
- package/dist/types/markers/axis/component.d.ts +9 -0
- package/dist/types/markers/axis/component.js +1 -0
- package/dist/types/markers/axis/curveName.d.ts +2 -0
- package/dist/types/markers/axis/curveName.js +1 -0
- package/dist/types/markers/axis/delaunayLink.d.ts +7 -0
- package/dist/types/markers/axis/delaunayLink.js +1 -0
- package/dist/types/markers/axis/delaunayMesh.d.ts +7 -0
- package/dist/types/markers/axis/delaunayMesh.js +1 -0
- package/dist/types/markers/axis/delta.d.ts +27 -0
- package/dist/types/markers/axis/delta.js +1 -0
- package/dist/types/markers/axis/density.d.ts +12 -0
- package/dist/types/markers/axis/density.js +1 -0
- package/dist/types/markers/axis/difference.d.ts +12 -0
- package/dist/types/markers/axis/difference.js +1 -0
- package/dist/types/markers/axis/hover.d.ts +21 -0
- package/dist/types/markers/axis/hover.js +1 -0
- package/dist/types/markers/axis/hull.d.ts +7 -0
- package/dist/types/markers/axis/hull.js +1 -0
- package/dist/types/markers/axis/image.d.ts +12 -0
- package/dist/types/markers/axis/image.js +1 -0
- package/dist/types/markers/axis/line.d.ts +7 -0
- package/dist/types/markers/axis/line.js +1 -0
- package/dist/types/markers/axis/raster.d.ts +18 -0
- package/dist/types/markers/axis/raster.js +1 -0
- package/dist/types/markers/axis/rect.d.ts +15 -0
- package/dist/types/markers/axis/rect.js +1 -0
- package/dist/types/markers/axis/regression.d.ts +6 -0
- package/dist/types/markers/axis/regression.js +1 -0
- package/dist/types/markers/axis/rule.d.ts +15 -0
- package/dist/types/markers/axis/rule.js +1 -0
- package/dist/types/markers/axis/tick.d.ts +8 -0
- package/dist/types/markers/axis/tick.js +1 -0
- package/dist/types/markers/axis/trail.d.ts +14 -0
- package/dist/types/markers/axis/trail.js +1 -0
- package/dist/types/markers/axis/voronoi.d.ts +7 -0
- package/dist/types/markers/axis/voronoi.js +1 -0
- package/dist/types/markers/axis/voronoiMesh.d.ts +7 -0
- package/dist/types/markers/axis/voronoiMesh.js +1 -0
- package/dist/types/markers/axis/waffle.d.ts +13 -0
- package/dist/types/markers/axis/waffle.js +1 -0
- package/dist/types/markers/basic/basicMarkersConfig.d.ts +4 -0
- package/dist/types/markers/basic/basicMarkersConfig.js +1 -0
- package/dist/types/markers/basic/dot.d.ts +9 -0
- package/dist/types/markers/basic/dot.js +1 -0
- package/dist/types/markers/basic/text.d.ts +60 -0
- package/dist/types/markers/basic/text.js +1 -0
- package/dist/types/markers/basic.d.ts +4 -0
- package/dist/types/markers/basic.js +1 -0
- package/dist/types/markers/channels/commonMarkerConfig.d.ts +26 -0
- package/dist/types/markers/channels/commonMarkerConfig.js +1 -0
- package/dist/types/markers/channels/commonMarkerConfigWithArea.d.ts +6 -0
- package/dist/types/markers/channels/commonMarkerConfigWithArea.js +1 -0
- package/dist/types/markers/channels/commonMarkerConfigWithColor.d.ts +5 -0
- package/dist/types/markers/channels/commonMarkerConfigWithColor.js +1 -0
- package/dist/types/markers/channels/commonMarkerConfigWithInterval.d.ts +9 -0
- package/dist/types/markers/channels/commonMarkerConfigWithInterval.js +1 -0
- package/dist/types/markers/channels/commonMarkerConfigWithRadius.d.ts +5 -0
- package/dist/types/markers/channels/commonMarkerConfigWithRadius.js +1 -0
- package/dist/types/markers/channels/commonMarkerConfigWithSymbol.d.ts +5 -0
- package/dist/types/markers/channels/commonMarkerConfigWithSymbol.js +1 -0
- package/dist/types/markers/channels/commonMarkerConfigWithWeight.d.ts +5 -0
- package/dist/types/markers/channels/commonMarkerConfigWithWeight.js +1 -0
- package/dist/types/markers/common.d.ts +30 -103
- package/dist/types/markers/common.js +29 -1
- package/dist/types/markers/geo/contour.d.ts +27 -0
- package/dist/types/markers/geo/contour.js +1 -0
- package/dist/types/markers/geo/features.d.ts +12 -0
- package/dist/types/markers/geo/features.js +1 -0
- package/dist/types/markers/geo/geoComponent.d.ts +7 -0
- package/dist/types/markers/geo/geoComponent.js +1 -0
- package/dist/types/markers/geo/geoHover.d.ts +6 -0
- package/dist/types/markers/geo/geoHover.js +1 -0
- package/dist/types/markers/geo/geoMarkersConfig.d.ts +11 -0
- package/dist/types/markers/geo/geoMarkersConfig.js +1 -0
- package/dist/types/markers/geo/graticule.d.ts +11 -0
- package/dist/types/markers/geo/graticule.js +1 -0
- package/dist/types/markers/geo/inset.d.ts +50 -0
- package/dist/types/markers/geo/inset.js +1 -0
- package/dist/types/markers/geo/link.d.ts +13 -0
- package/dist/types/markers/geo/link.js +1 -0
- package/dist/types/markers/geo/sphere.d.ts +11 -0
- package/dist/types/markers/geo/sphere.js +1 -0
- package/dist/types/markers/geo/vector.d.ts +17 -0
- package/dist/types/markers/geo/vector.js +1 -0
- package/dist/types/markers/geo.d.ts +10 -212
- package/dist/types/markers/geo.js +10 -1
- package/dist/types/markers/traits.d.ts +22 -0
- package/dist/types/markers/traits.js +1 -0
- package/dist/types/misc/easing.js +1 -0
- package/dist/types/misc/viewport.js +1 -0
- package/dist/types/phases/data/axes.d.ts +18 -0
- package/dist/types/phases/data/axes.js +1 -0
- package/dist/types/phases/data/phase.d.ts +26 -0
- package/dist/types/phases/data/phase.js +2 -0
- package/dist/types/phases/facet/phase.d.ts +18 -0
- package/dist/types/phases/facet/phase.js +1 -0
- package/dist/types/phases/hover/phase.d.ts +40 -0
- package/dist/types/phases/hover/phase.js +1 -0
- package/dist/types/phases/index.d.ts +14 -0
- package/dist/types/phases/index.js +1 -0
- package/dist/types/phases/kind.d.ts +59 -0
- package/dist/types/phases/kind.js +1 -0
- package/dist/types/phases/mapping/phase.d.ts +5 -0
- package/dist/types/phases/mapping/phase.js +1 -0
- package/dist/types/phases/markers/phase.d.ts +13 -0
- package/dist/types/phases/markers/phase.js +1 -0
- package/dist/types/phases/pipeline.d.ts +10 -0
- package/dist/types/phases/pipeline.js +1 -0
- package/dist/types/phases/scales/phase.d.ts +26 -0
- package/dist/types/phases/scales/phase.js +1 -0
- package/dist/types/phases/sharedScales/phase.d.ts +12 -0
- package/dist/types/phases/sharedScales/phase.js +1 -0
- package/dist/types/phases/stage.d.ts +12 -0
- package/dist/types/phases/stage.js +1 -0
- package/dist/types/phases/state.d.ts +76 -0
- package/dist/types/phases/state.js +1 -0
- package/dist/types/phases/statistics/phase.d.ts +43 -0
- package/dist/types/phases/statistics/phase.js +1 -0
- package/dist/types/phases/statistics/source.d.ts +20 -0
- package/dist/types/phases/statistics/source.js +7 -0
- package/dist/types/phases/styles/phase.d.ts +24 -0
- package/dist/types/phases/styles/phase.js +1 -0
- package/dist/types/phases/transforms/adapter.d.ts +27 -0
- package/dist/types/phases/transforms/adapter.js +1 -0
- package/dist/types/phases/transforms/phase.d.ts +50 -0
- package/dist/types/phases/transforms/phase.js +1 -0
- package/dist/types/plots/area/props.d.ts +10 -0
- package/dist/types/plots/area/props.js +1 -0
- package/dist/types/plots/area/state.d.ts +6 -0
- package/dist/types/plots/area/state.js +1 -0
- package/dist/types/plots/bar/props.d.ts +10 -0
- package/dist/types/plots/bar/props.js +1 -0
- package/dist/types/plots/bar/state.d.ts +6 -0
- package/dist/types/plots/bar/state.js +1 -0
- package/dist/types/plots/box/props.d.ts +10 -0
- package/dist/types/plots/box/props.js +1 -0
- package/dist/types/plots/box/state.d.ts +23 -0
- package/dist/types/plots/box/state.js +1 -0
- package/dist/types/plots/camera.d.ts +7 -17
- package/dist/types/plots/constants.d.ts +16 -8
- package/dist/types/plots/data/common.d.ts +25 -17
- package/dist/types/plots/data/geo.d.ts +26 -12
- package/dist/types/plots/gaps.d.ts +19 -38
- package/dist/types/plots/geo/props.d.ts +23 -0
- package/dist/types/plots/geo/props.js +1 -0
- package/dist/types/plots/geo/state.d.ts +82 -0
- package/dist/types/plots/geo/state.js +1 -0
- package/dist/types/plots/heatmap/props.d.ts +10 -0
- package/dist/types/plots/heatmap/props.js +1 -0
- package/dist/types/plots/heatmap/state.d.ts +28 -0
- package/dist/types/plots/heatmap/state.js +1 -0
- package/dist/types/plots/histogram/props.d.ts +18 -0
- package/dist/types/plots/histogram/props.js +1 -0
- package/dist/types/plots/histogram/state.d.ts +6 -0
- package/dist/types/plots/histogram/state.js +1 -0
- package/dist/types/plots/line/props.d.ts +10 -0
- package/dist/types/plots/line/props.js +1 -0
- package/dist/types/plots/line/state.d.ts +9 -0
- package/dist/types/plots/line/state.js +1 -0
- package/dist/types/plots/props.d.ts +145 -35
- package/dist/types/plots/pyramid/props.d.ts +10 -0
- package/dist/types/plots/pyramid/props.js +1 -0
- package/dist/types/plots/pyramid/state.d.ts +16 -0
- package/dist/types/plots/pyramid/state.js +1 -0
- package/dist/types/plots/scatter/props.d.ts +10 -0
- package/dist/types/plots/scatter/props.js +1 -0
- package/dist/types/plots/scatter/state.d.ts +6 -0
- package/dist/types/plots/scatter/state.js +1 -0
- package/dist/types/plots/segments/common.d.ts +1 -1
- package/dist/types/plots/segments/config.d.ts +12 -6
- package/dist/types/plots/styling.d.ts +5 -5
- package/dist/types/transforms/bin.d.ts +84 -0
- package/dist/types/transforms/bin.js +28 -0
- package/dist/types/transforms/bollinger.d.ts +21 -0
- package/dist/types/transforms/bollinger.js +1 -0
- package/dist/types/transforms/common.d.ts +29 -0
- package/dist/types/transforms/common.js +16 -0
- package/dist/types/transforms/density.d.ts +45 -0
- package/dist/types/transforms/density.js +10 -0
- package/dist/types/transforms/filter.d.ts +12 -0
- package/dist/types/transforms/filter.js +14 -0
- package/dist/types/transforms/group.d.ts +70 -0
- package/dist/types/transforms/group.js +8 -0
- package/dist/types/transforms/index.d.ts +36 -0
- package/dist/types/transforms/index.js +1 -0
- package/dist/types/transforms/interval.d.ts +21 -0
- package/dist/types/transforms/interval.js +14 -0
- package/dist/types/transforms/jitter.d.ts +34 -0
- package/dist/types/transforms/jitter.js +1 -0
- package/dist/types/transforms/map.d.ts +24 -0
- package/dist/types/transforms/map.js +1 -0
- package/dist/types/transforms/normalize.d.ts +36 -0
- package/dist/types/transforms/normalize.js +1 -0
- package/dist/types/transforms/select.d.ts +15 -0
- package/dist/types/transforms/select.js +1 -0
- package/dist/types/transforms/shift.d.ts +20 -0
- package/dist/types/transforms/shift.js +1 -0
- package/dist/types/transforms/sort.d.ts +31 -0
- package/dist/types/transforms/sort.js +14 -0
- package/dist/types/transforms/stack.d.ts +64 -0
- package/dist/types/transforms/stack.js +12 -0
- package/dist/types/transforms/window.d.ts +29 -0
- package/dist/types/transforms/window.js +1 -0
- package/dist/utils/ContinuousDomain.d.ts +12 -0
- package/dist/utils/ContinuousDomain.js +19 -0
- package/dist/utils/Interpolation.d.ts +26 -0
- package/dist/utils/Interpolation.js +65 -0
- package/dist/utils/{color.d.ts → color/contrast.d.ts} +0 -5
- package/dist/utils/color/contrast.js +40 -0
- package/dist/utils/color/cssColor.d.ts +4 -0
- package/dist/utils/color/cssColor.js +77 -0
- package/dist/utils/color/index.d.ts +3 -0
- package/dist/utils/color/index.js +3 -0
- package/dist/utils/color/ramp.d.ts +17 -0
- package/dist/utils/color/ramp.js +110 -0
- package/dist/utils/grouping.d.ts +9 -5
- package/dist/utils/grouping.js +19 -10
- package/dist/utils/merge.d.ts +7 -0
- package/dist/utils/merge.js +17 -0
- package/dist/utils/opacity.d.ts +9 -0
- package/dist/utils/opacity.js +38 -0
- package/dist/utils/symbol.d.ts +31 -0
- package/dist/utils/symbol.js +92 -0
- package/docs/architecture.md +137 -0
- package/docs/chrome.md +99 -0
- package/docs/composer.md +69 -0
- package/docs/concepts.md +99 -0
- package/docs/development.md +103 -0
- package/docs/facets.md +123 -0
- package/docs/geo.md +151 -0
- package/docs/getting-started.md +78 -0
- package/docs/legend.md +153 -0
- package/docs/markers.md +117 -0
- package/docs/plots.md +284 -0
- package/docs/scales.md +95 -0
- package/docs/state.md +71 -0
- package/docs/styles-and-segments.md +269 -0
- package/docs/theming.md +226 -0
- package/docs/timeline.md +128 -0
- package/docs/tooltip-and-hover.md +128 -0
- package/docs/transforms-and-statistics.md +118 -0
- package/examples/BarValues.svelte +14 -0
- package/examples/Box.svelte +7 -0
- package/examples/Chrome.svelte +17 -0
- package/examples/ChromeOrder.svelte +18 -0
- package/examples/Composer.svelte +23 -0
- package/examples/CustomTooltip.svelte +44 -0
- package/examples/Facets.svelte +15 -0
- package/examples/FacetsCarousel.svelte +14 -0
- package/examples/FacetsRowsCols.svelte +23 -0
- package/examples/FirstPlot.svelte +7 -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/LegendReader.svelte +8 -0
- package/examples/LegendSections.svelte +27 -0
- package/examples/LegendToggle.svelte +25 -0
- package/examples/LineByRegion.svelte +18 -0
- package/examples/LineDates.svelte +15 -0
- package/examples/Markers.svelte +27 -0
- package/examples/MovingAverage.svelte +15 -0
- package/examples/Pyramid.svelte +7 -0
- package/examples/Regression.svelte +14 -0
- package/examples/ResponsiveLine.svelte +37 -0
- package/examples/Scales.svelte +26 -0
- package/examples/Scatter.svelte +16 -0
- package/examples/SegmentHighlight.svelte +22 -0
- package/examples/Segments.svelte +25 -0
- package/examples/SegmentsBySeries.svelte +25 -0
- package/examples/StackedArea.svelte +16 -0
- package/examples/StackedBars.svelte +15 -0
- package/examples/TimelinePlayer.svelte +21 -0
- package/examples/TimelineRule.svelte +19 -0
- package/examples/Tooltip.svelte +19 -0
- package/examples/TooltipCard.svelte +86 -0
- package/examples/ValueLabels.svelte +21 -0
- package/examples/data.ts +324 -0
- package/llms-full.txt +142 -0
- package/llms.txt +77 -0
- package/package.json +42 -5
- package/dist/charts/BaseChart.svelte +0 -149
- package/dist/charts/BaseChart.svelte.d.ts +0 -47
- package/dist/charts/bar/Chart.svelte +0 -110
- package/dist/charts/bar/Chart.svelte.d.ts +0 -26
- package/dist/charts/container/ChartContainer.svelte +0 -137
- package/dist/charts/container/ChartContainer.svelte.d.ts +0 -16
- package/dist/charts/heatmap/Chart.svelte +0 -114
- package/dist/charts/line/Chart.svelte +0 -112
- package/dist/charts/line/Chart.svelte.d.ts +0 -26
- package/dist/charts/pyramid/Chart.svelte +0 -134
- package/dist/charts/pyramid/Chart.svelte.d.ts +0 -30
- package/dist/charts/scatter/Chart.svelte +0 -95
- package/dist/charts/scatter/Chart.svelte.d.ts +0 -28
- package/dist/layout/coordinates/margins.d.ts +0 -16
- package/dist/layout/coordinates/margins.js +0 -11
- package/dist/layout/legend/interaction.svelte.d.ts +0 -15
- package/dist/layout/legend/interaction.svelte.js +0 -32
- package/dist/layout/plot/BasePlotLayout.svelte +0 -332
- package/dist/layout/plot/BasePlotLayout.svelte.d.ts +0 -122
- package/dist/layout/plot/margins.d.ts +0 -18
- package/dist/layout/plot/margins.js +0 -15
- package/dist/layout/plot/measureText.d.ts +0 -4
- package/dist/layout/plot/measureText.js +0 -19
- package/dist/layout/scales/buildScale.d.ts +0 -25
- package/dist/layout/scales/buildScale.js +0 -90
- package/dist/layout/scales/niceDomain.d.ts +0 -23
- package/dist/layout/scales/niceDomain.js +0 -59
- package/dist/layout/tooltip/TooltipLayout.svelte +0 -51
- package/dist/layout/tooltip/TooltipLayout.svelte.d.ts +0 -45
- package/dist/layout/tooltip/controller.svelte.d.ts +0 -61
- package/dist/layout/tooltip/controller.svelte.js +0 -173
- package/dist/layout/tooltip/hover.svelte.d.ts +0 -7
- package/dist/layout/tooltip/hover.svelte.js +0 -28
- package/dist/layout/tooltip/resolveTooltipPlacement.d.ts +0 -24
- package/dist/layout/tooltip/resolveTooltipPlacement.js +0 -49
- package/dist/layout/tooltip/utils.d.ts +0 -49
- package/dist/layout/tooltip/utils.js +0 -82
- package/dist/markers/CellMarker.svelte +0 -21
- package/dist/markers/ContourClipMarker.svelte +0 -77
- package/dist/markers/ContourMarker.svelte +0 -28
- package/dist/markers/DeltaMarker.svelte +0 -109
- package/dist/markers/DotMarker.svelte +0 -70
- package/dist/markers/GeoFeaturesMarker.svelte +0 -19
- package/dist/markers/GeoHoverMarker.svelte +0 -25
- package/dist/markers/GraticuleMarker.svelte +0 -18
- package/dist/markers/HoverMarker.svelte +0 -212
- package/dist/markers/LineMarker.svelte +0 -19
- package/dist/markers/LinkMarker.svelte +0 -42
- package/dist/markers/PeakMarker.svelte +0 -80
- package/dist/markers/PeakMarker.svelte.d.ts +0 -13
- package/dist/markers/RuleMarker.svelte +0 -24
- package/dist/markers/SphereMarker.svelte +0 -15
- package/dist/markers/TextMarker.svelte +0 -62
- package/dist/markers/VectorMarker.svelte +0 -20
- package/dist/plots/bar/ValueLabels.svelte +0 -149
- package/dist/plots/bar/ValueLabels.svelte.d.ts +0 -58
- package/dist/plots/bar/buildBarMarkers.d.ts +0 -27
- package/dist/plots/bar/buildBarMarkers.js +0 -151
- package/dist/plots/bar/hoverPoints.d.ts +0 -15
- package/dist/plots/bar/hoverPoints.js +0 -37
- package/dist/plots/bar/layout.svelte.d.ts +0 -42
- package/dist/plots/bar/layout.svelte.js +0 -182
- package/dist/plots/geo/buildGeoMarkers.d.ts +0 -33
- package/dist/plots/geo/buildGeoMarkers.js +0 -47
- package/dist/plots/heatmap/ValueLabels.svelte +0 -56
- package/dist/plots/heatmap/buildCellMarkers.d.ts +0 -21
- package/dist/plots/heatmap/buildCellMarkers.js +0 -25
- package/dist/plots/line/ValueLabels.svelte +0 -269
- package/dist/plots/line/ValueLabels.svelte.d.ts +0 -52
- package/dist/plots/line/buildGapMarkers.d.ts +0 -28
- package/dist/plots/line/buildGapMarkers.js +0 -74
- package/dist/plots/line/buildLineMarkers.d.ts +0 -16
- package/dist/plots/line/buildLineMarkers.js +0 -56
- package/dist/plots/line/valueLabelMargin.d.ts +0 -19
- package/dist/plots/line/valueLabelMargin.js +0 -65
- package/dist/plots/pyramid/ValueLabels.svelte +0 -139
- package/dist/plots/pyramid/ValueLabels.svelte.d.ts +0 -56
- package/dist/plots/pyramid/buildPyramidBarMarkers.d.ts +0 -26
- package/dist/plots/pyramid/buildPyramidBarMarkers.js +0 -72
- package/dist/plots/scatter/ValueLabels.svelte +0 -163
- package/dist/plots/scatter/ValueLabels.svelte.d.ts +0 -52
- package/dist/plots/scatter/buildScatterMarkers.d.ts +0 -12
- package/dist/plots/scatter/buildScatterMarkers.js +0 -36
- package/dist/plots/scatter/resolveRadiusPaddedDomain.d.ts +0 -10
- package/dist/plots/scatter/resolveRadiusPaddedDomain.js +0 -23
- package/dist/plots/utils/categoricalAxisMargin.d.ts +0 -14
- package/dist/plots/utils/categoricalAxisMargin.js +0 -20
- package/dist/plots/utils/declutter.d.ts +0 -120
- package/dist/plots/utils/declutter.js +0 -240
- package/dist/plots/utils/labelOverflow.svelte.d.ts +0 -107
- package/dist/plots/utils/labelOverflow.svelte.js +0 -257
- package/dist/plots/utils/legendDisabled.d.ts +0 -27
- package/dist/plots/utils/legendDisabled.js +0 -68
- package/dist/plots/utils/valueLabelMargin.d.ts +0 -67
- package/dist/plots/utils/valueLabelMargin.js +0 -60
- package/dist/types/charts/common.d.ts +0 -22
- package/dist/types/charts/props.d.ts +0 -50
- package/dist/types/markers/base.d.ts +0 -45
- package/dist/types/markers/line.d.ts +0 -34
- package/dist/types/markers/props.d.ts +0 -11
- package/dist/types/plots/data/scatter.d.ts +0 -13
- package/dist/utils/color.js +0 -141
- package/dist/utils/delta.d.ts +0 -12
- package/dist/utils/delta.js +0 -69
- package/dist/utils/edgeAwareAnchor.d.ts +0 -34
- package/dist/utils/edgeAwareAnchor.js +0 -60
- package/dist/utils/interpolate.d.ts +0 -31
- package/dist/utils/interpolate.js +0 -71
- /package/dist/types/{charts/common.js → layout/box.js} +0 -0
- /package/dist/types/{charts/interpolate.js → layout/composer.js} +0 -0
- /package/dist/types/{charts/props.js → layout/figure.js} +0 -0
- /package/dist/types/{markers/base.js → layout/grid.js} +0 -0
- /package/dist/types/{markers/line.js → layout/hover.js} +0 -0
- /package/dist/types/{markers/props.js → layout/mapping.js} +0 -0
- /package/dist/types/{plots/data/scatter.js → layout/plot.js} +0 -0
- /package/dist/types/{viewport.js → layout/statistics/bollinger.js} +0 -0
- /package/dist/types/{charts/interpolate.d.ts → misc/easing.d.ts} +0 -0
- /package/dist/types/{viewport.d.ts → misc/viewport.d.ts} +0 -0
|
@@ -1,446 +1,41 @@
|
|
|
1
1
|
<script lang="ts" generics="TData extends Record<string, unknown>">
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
disabledFillOverride,
|
|
7
|
-
resolveEffectiveDisabledStyle,
|
|
8
|
-
omitDisabledSeries,
|
|
9
|
-
buildSeriesColorIndex
|
|
10
|
-
} from '../utils/legendDisabled';
|
|
11
|
-
import { SvelteMap } from 'svelte/reactivity';
|
|
12
|
-
import { resolveAccessor } from '../utils/accessors';
|
|
13
|
-
import { getConfiguration } from '../../configuration/config.svelte';
|
|
14
|
-
import {
|
|
15
|
-
buildGroupedSeries,
|
|
16
|
-
validateSegments,
|
|
17
|
-
buildScopedMarkerGroups
|
|
18
|
-
} from '../utils/segments';
|
|
19
|
-
import { isGapValue } from '../utils/gaps';
|
|
20
|
-
import { niceDomain, naturalTickCount } from '../../layout/scales/niceDomain';
|
|
21
|
-
import { AUTO_MARGIN_ESTIMATE } from '../../layout/plot/margins';
|
|
22
|
-
import { createBarLayout } from './layout.svelte';
|
|
23
|
-
import {
|
|
24
|
-
createLabelMarginTracker,
|
|
25
|
-
halfDimensionOverflowCap
|
|
26
|
-
} from '../utils/labelOverflow.svelte';
|
|
27
|
-
import { estimateValueLabelMargin } from '../utils/valueLabelMargin';
|
|
28
|
-
import { buildHoverPoints } from './hoverPoints';
|
|
29
|
-
import { buildBarMarkers } from './buildBarMarkers';
|
|
30
|
-
import { resolveGapsForSeries, resolveDiscreteGapFills } from '../utils/gaps';
|
|
31
|
-
import ValueLabels from './ValueLabels.svelte';
|
|
32
|
-
import BasePlotLayout from '../../layout/plot/BasePlotLayout.svelte';
|
|
33
|
-
import {
|
|
34
|
-
hasHoverMarker,
|
|
35
|
-
resolveHoverStrategy,
|
|
36
|
-
resolveHoverSync
|
|
37
|
-
} from '../../layout/tooltip/utils';
|
|
38
|
-
import type { AxisBasedMarkersConfig } from '../../types/markers/common';
|
|
39
|
-
import type { BasePlotProps } from '../../types/plots/props';
|
|
40
|
-
import type { AxisValue, AxisScale, AxisBasedScalesConfig } from '../../types/layout/scales';
|
|
41
|
-
import type { Series, SeriesProps, DataProps } from '../../types/plots/data/common';
|
|
42
|
-
import type { GapsAwarePlotStylesConfig } from '../../types/layout/styles';
|
|
43
|
-
import type { ValueAnchor } from '../../types/plots/constants';
|
|
44
|
-
import type { BarSegmentStyle } from '../../types/plots/segments/common';
|
|
45
|
-
import type { LegendDisabledStyle } from '../../types/layout/legend';
|
|
46
|
-
import type { MarginOverflow } from '../utils/labelOverflow.svelte';
|
|
2
|
+
import Plot from '../../layout/plot/Plot.svelte';
|
|
3
|
+
import { buildBarDefaults } from './defaults';
|
|
4
|
+
import type { BarPlotProps, BarPlotCoreProps } from '../../types/plots/bar/props';
|
|
47
5
|
|
|
48
6
|
/**
|
|
49
|
-
* A bar
|
|
50
|
-
*
|
|
51
|
-
*
|
|
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.
|
|
8
|
+
* Optional chrome (`title`, `subtitle`, `caption`, `header`, `footer`,
|
|
9
|
+
* `legend`) frames it; `timeline` and `facet` slice its `data` rows.
|
|
52
10
|
*/
|
|
53
|
-
type Props = BasePlotProps<
|
|
54
|
-
SeriesProps<TData> | DataProps<TData>,
|
|
55
|
-
TData,
|
|
56
|
-
GapsAwarePlotStylesConfig<BarSegmentStyle>,
|
|
57
|
-
BarSegmentStyle,
|
|
58
|
-
AxisBasedMarkersConfig,
|
|
59
|
-
AxisBasedScalesConfig<TData>
|
|
60
|
-
>;
|
|
61
|
-
|
|
62
11
|
let {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
markers = [],
|
|
73
|
-
scales = {},
|
|
74
|
-
margins,
|
|
75
|
-
tooltip = undefined
|
|
76
|
-
}: Props = $props();
|
|
77
|
-
|
|
78
|
-
$effect(() => {
|
|
79
|
-
validateSegments(segments);
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
const cfg = $derived(getConfiguration());
|
|
83
|
-
const legendInteraction = $derived(getLegendInteraction());
|
|
84
|
-
// Unfiltered series list, for stable per-name color indexing.
|
|
85
|
-
const fullSeries = $derived(series ?? buildSeries(data!, x!, y!, z));
|
|
86
|
-
const colorIndex = $derived(buildSeriesColorIndex(fullSeries));
|
|
87
|
-
function colorForSeries(name: string): string {
|
|
88
|
-
return paletteColor(colorIndex.get(name) ?? 0, cfg.palette);
|
|
89
|
-
}
|
|
90
|
-
// Drops series toggled off with `disabled: { mode: 'omit' }`.
|
|
91
|
-
const resolvedSeries = $derived(omitDisabledSeries(fullSeries, legendInteraction));
|
|
92
|
-
const groupedSeries = $derived(
|
|
93
|
-
// connect: false — bars are discrete; there's no visual gap between
|
|
94
|
-
// adjacent categories to bridge (see buildGroupedSeries's own doc).
|
|
95
|
-
buildGroupedSeries<Series<TData>, BarSegmentStyle>(resolvedSeries, segments, false)
|
|
96
|
-
);
|
|
97
|
-
const showVals = $derived(styles.values?.show ?? false);
|
|
98
|
-
const formatValue = $derived(styles.values?.format ?? ((v: number) => `${v}`));
|
|
99
|
-
const valAnchor = $derived<ValueAnchor>(styles.values?.anchor ?? 'outside');
|
|
100
|
-
|
|
101
|
-
// Fills leading/internal/trailing missing-data holes with an
|
|
102
|
-
// interpolated, distinctly-styled bar, resolved per series like
|
|
103
|
-
// `segments` — see `GapsAwarePlotStylesConfig` (`types/layout/styles.ts`).
|
|
104
|
-
const gaps = $derived(styles.gaps ?? {});
|
|
105
|
-
const gapFillMaps = $derived(
|
|
106
|
-
new Map(
|
|
107
|
-
resolvedSeries.map((s) => [
|
|
108
|
-
s.name,
|
|
109
|
-
resolveDiscreteGapFills(s, resolveGapsForSeries(gaps, s.name))
|
|
110
|
-
])
|
|
111
|
-
)
|
|
112
|
-
);
|
|
113
|
-
|
|
114
|
-
// `xAcc`/`yAcc` are always data-semantic (category/value) — independent of
|
|
115
|
-
// which *visual* axis ends up drawing them, decided by `categoricalAxis`.
|
|
116
|
-
const xAcc = $derived(resolveAccessor(resolvedSeries[0]?.x ?? ((d: TData) => d)));
|
|
117
|
-
const yAcc = $derived(resolveAccessor(resolvedSeries[0]?.y ?? ((d: TData) => d)));
|
|
118
|
-
const flat = $derived(resolvedSeries.flatMap((s) => s.data));
|
|
119
|
-
|
|
120
|
-
const scopedGroups = $derived(
|
|
121
|
-
buildScopedMarkerGroups<TData, Series<TData>, BarSegmentStyle>({
|
|
122
|
-
groupedSeries,
|
|
123
|
-
segments,
|
|
124
|
-
colorFor: (series) => colorForSeries(series.name),
|
|
125
|
-
segmentColorFor: (style, defaultColor) => style?.fill ?? defaultColor
|
|
126
|
-
})
|
|
127
|
-
);
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Which visual axis draws the category, and therefore whether this renders
|
|
131
|
-
* as vertical bars (`BarY`, category on X) or horizontal bars (`BarX`,
|
|
132
|
-
* category on Y). Mirrors how pyramid/heatmap default an `AxisScale.type`
|
|
133
|
-
* themselves: `scales.x`/`scales.y` always describe *that visual axis*
|
|
134
|
-
* regardless of which data field lands there, so marking `scales.y.type:
|
|
135
|
-
* 'categorical'` simply says "the category is drawn on Y this time" — x
|
|
136
|
-
* defaults to categorical when neither is marked.
|
|
137
|
-
*/
|
|
138
|
-
const categoricalAxis = $derived.by((): 'x' | 'y' => {
|
|
139
|
-
const xCategorical = scales.x?.type === 'categorical';
|
|
140
|
-
const yCategorical = scales.y?.type === 'categorical';
|
|
141
|
-
if (xCategorical && yCategorical) {
|
|
142
|
-
console.warn(
|
|
143
|
-
"BarPlot: scales.x.type and scales.y.type can't both be 'categorical' — " +
|
|
144
|
-
'mark only one axis as the category axis. Defaulting to x.'
|
|
145
|
-
);
|
|
146
|
-
return 'x';
|
|
147
|
-
}
|
|
148
|
-
return yCategorical ? 'y' : 'x';
|
|
149
|
-
});
|
|
150
|
-
const isHorizontal = $derived(categoricalAxis === 'y');
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* `'categorical'` is our own sentinel (BarPlot-only), not a real svelteplot
|
|
154
|
-
* scale type — svelteplot's x/y scales don't recognise it (it's valid only
|
|
155
|
-
* for `color`/`symbol`). Strip it before the scale reaches svelteplot so it
|
|
156
|
-
* auto-infers the real type (typically `point`/`band`) the same way it
|
|
157
|
-
* already does when `type` is left unset entirely.
|
|
158
|
-
*/
|
|
159
|
-
function stripCategoricalType(scale?: AxisScale<TData>): AxisScale<TData> | undefined {
|
|
160
|
-
if (scale?.type !== 'categorical') return scale;
|
|
161
|
-
const rest = { ...scale };
|
|
162
|
-
delete rest.type;
|
|
163
|
-
return rest;
|
|
164
|
-
}
|
|
165
|
-
// Backs the category axis's `paddingInner`/`paddingOuter` — the gap
|
|
166
|
-
// *between* category groups — with the theme's `bar.paddingInner`/
|
|
167
|
-
// `paddingOuter` default, when the plot doesn't set its own (or the
|
|
168
|
-
// `padding` shorthand). BarPlot-only, unlike svelteplot's own hardcoded
|
|
169
|
-
// 0.15 fallback for every band scale.
|
|
170
|
-
function withDefaultPadding(scale?: AxisScale<TData>): AxisScale<TData> {
|
|
171
|
-
return {
|
|
172
|
-
...scale,
|
|
173
|
-
paddingInner: scale?.paddingInner ?? scale?.padding ?? cfg.bar.paddingInner,
|
|
174
|
-
paddingOuter: scale?.paddingOuter ?? scale?.padding ?? cfg.bar.paddingOuter
|
|
175
|
-
};
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
// Mirrors `createBarLayout`'s own `layout` derivation, read off the raw
|
|
179
|
-
// `scales` prop rather than `resolvedScales` — `valueExtent`/
|
|
180
|
-
// `withValueDomain` below feed `resolvedScales`, so reading it back off
|
|
181
|
-
// `resolvedScales` (or `barLayout.layout`, built from it) would be circular.
|
|
182
|
-
const seriesLayout = $derived(scales.z?.seriesLayout ?? 'overlap');
|
|
183
|
-
|
|
184
|
-
/**
|
|
185
|
-
* The value axis's real rendered range — `[0, ...]` for 'grouped'/'overlap'
|
|
186
|
-
* (each row's own value, same range `svelteplot`'s own auto-domain would
|
|
187
|
-
* find), but for 'stacked' the *per-category total* (every series summed),
|
|
188
|
-
* which a plain per-row scan can't see. Needed so `withValueDomain` can
|
|
189
|
-
* nice-widen the axis itself instead of deferring to `buildScale`'s
|
|
190
|
-
* `nice: true` default, which only ever sees raw per-row values and would
|
|
191
|
-
* under-widen a stacked total's real top.
|
|
192
|
-
*/
|
|
193
|
-
const valueExtent = $derived.by((): [number, number] | undefined => {
|
|
194
|
-
let lo = 0;
|
|
195
|
-
let hi = 0;
|
|
196
|
-
if (seriesLayout === 'stacked') {
|
|
197
|
-
const totals = new SvelteMap<AxisValue, number>();
|
|
198
|
-
for (const s of resolvedSeries) {
|
|
199
|
-
const sx = resolveAccessor(s.x);
|
|
200
|
-
const sy = resolveAccessor(s.y);
|
|
201
|
-
for (const row of s.data) {
|
|
202
|
-
const raw = sy(row);
|
|
203
|
-
if (isGapValue(raw)) continue;
|
|
204
|
-
const cat = sx(row);
|
|
205
|
-
totals.set(cat, (totals.get(cat) ?? 0) + Number(raw));
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
for (const total of totals.values()) {
|
|
209
|
-
lo = Math.min(lo, total);
|
|
210
|
-
hi = Math.max(hi, total);
|
|
211
|
-
}
|
|
212
|
-
} else {
|
|
213
|
-
for (const s of resolvedSeries) {
|
|
214
|
-
const sy = resolveAccessor(s.y);
|
|
215
|
-
for (const row of s.data) {
|
|
216
|
-
const raw = sy(row);
|
|
217
|
-
if (isGapValue(raw)) continue;
|
|
218
|
-
const v = Number(raw);
|
|
219
|
-
lo = Math.min(lo, v);
|
|
220
|
-
hi = Math.max(hi, v);
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
return hi > lo ? [lo, hi] : undefined;
|
|
225
|
-
});
|
|
226
|
-
|
|
227
|
-
/**
|
|
228
|
-
* Nice-widens the value axis using `valueExtent` (baseline/stack-aware,
|
|
229
|
-
* unlike `buildScale`'s own `nice: true` default) with an epsilon
|
|
230
|
-
* tolerance — see `niceDomain` — so a stacked total that's supposed to
|
|
231
|
-
* land exactly on a round number (a "parts of a whole" dataset, e.g.
|
|
232
|
-
* percentages summing to 100) doesn't get bumped a full step further by
|
|
233
|
-
* float noise from summing already-rounded parts. Skipped once the
|
|
234
|
-
* caller sets their own `domain`/`ticks`/`nice`.
|
|
235
|
-
*/
|
|
236
|
-
function withValueDomain(scale?: AxisScale<TData>): AxisScale<TData> | undefined {
|
|
237
|
-
if (scale?.domain != null || scale?.ticks != null || scale?.nice != null) return scale;
|
|
238
|
-
if (!valueExtent) return scale;
|
|
239
|
-
const [lo, hi] = valueExtent;
|
|
240
|
-
const spacing = isHorizontal ? 80 : 50;
|
|
241
|
-
const marginEstimate = isHorizontal
|
|
242
|
-
? AUTO_MARGIN_ESTIMATE.left + AUTO_MARGIN_ESTIMATE.right
|
|
243
|
-
: AUTO_MARGIN_ESTIMATE.top + AUTO_MARGIN_ESTIMATE.bottom;
|
|
244
|
-
const span = Math.max(0, (isHorizontal ? width : height) - marginEstimate);
|
|
245
|
-
const count = naturalTickCount(span, spacing, 2);
|
|
246
|
-
return { ...scale, domain: niceDomain(lo, hi, count) };
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
// The single, fully-resolved scales object both BasePlotLayout (ticks,
|
|
250
|
-
// grid, sort, the real svelteplot scale) and `createBarLayout` (the
|
|
251
|
-
// grouped-bar-width estimate) read for everything — avoids keeping a
|
|
252
|
-
// second, separately-patched copy of `scales.x`/`scales.y` in sync with
|
|
253
|
-
// the one actually forwarded.
|
|
254
|
-
const resolvedScales = $derived({
|
|
255
|
-
...scales,
|
|
256
|
-
x: stripCategoricalType(
|
|
257
|
-
categoricalAxis === 'x' ? withDefaultPadding(scales.x) : withValueDomain(scales.x)
|
|
258
|
-
),
|
|
259
|
-
y: stripCategoricalType(
|
|
260
|
-
categoricalAxis === 'y' ? withDefaultPadding(scales.y) : withValueDomain(scales.y)
|
|
261
|
-
)
|
|
262
|
-
});
|
|
263
|
-
|
|
264
|
-
// The accessor feeding each *visual* channel — swapped from the
|
|
265
|
-
// data-semantic xAcc/yAcc when the category is drawn on Y.
|
|
266
|
-
const plotGetX = $derived(isHorizontal ? (d: TData) => Number(yAcc(d)) : xAcc);
|
|
267
|
-
const plotGetY = $derived(isHorizontal ? xAcc : (d: TData) => Number(yAcc(d)));
|
|
268
|
-
|
|
269
|
-
/**
|
|
270
|
-
* Series-layout geometry (grouped/stacked offsets, band-width estimate,
|
|
271
|
-
* value baseline) — the single source of truth shared by bar-segment
|
|
272
|
-
* rendering, value labels, and hover markers below. See `layout.svelte.ts`.
|
|
273
|
-
*/
|
|
274
|
-
const barLayout = createBarLayout<TData>({
|
|
275
|
-
scales: () => resolvedScales,
|
|
276
|
-
isHorizontal: () => isHorizontal,
|
|
277
|
-
width: () => width,
|
|
278
|
-
height: () => height,
|
|
279
|
-
margins: () => margins,
|
|
280
|
-
flat: () => flat,
|
|
281
|
-
xAcc: () => xAcc,
|
|
282
|
-
groupedSeries: () => groupedSeries,
|
|
283
|
-
gapFillMaps: () => gapFillMaps
|
|
284
|
-
});
|
|
285
|
-
|
|
286
|
-
// `x`/`y` here are visual (matched against BasePlotLayout's own getX/getY,
|
|
287
|
-
// which drive tick/domain computation and the Pointer's hit-testing) —
|
|
288
|
-
// `row` (see BasePlotLayout/HoverPoint) is what lets the template recover the
|
|
289
|
-
// semantic category regardless of which axis it landed on.
|
|
290
|
-
const hoverIsolate = $derived(styles.values?.hoverIsolate ?? false);
|
|
291
|
-
|
|
292
|
-
// A value label hovered while `styles.values.hoverIsolate` is on dims
|
|
293
|
-
// every other series exactly like a legend toggle would — local to this
|
|
294
|
-
// one `<Plot>` instance (not the shared HoverStore) so the gesture can't
|
|
295
|
-
// leak into unrelated tooltip/crosshair behavior.
|
|
296
|
-
let hoverIsolatedSeries = $state<string | null>(null);
|
|
297
|
-
|
|
298
|
-
function effectiveDisabledFor(name: string): LegendDisabledStyle | undefined {
|
|
299
|
-
return resolveEffectiveDisabledStyle(
|
|
300
|
-
name,
|
|
301
|
-
legendInteraction,
|
|
302
|
-
cfg.legend.disabledOpacity,
|
|
303
|
-
hoverIsolate,
|
|
304
|
-
hoverIsolatedSeries
|
|
305
|
-
);
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
// A legend-disabled series is dimmed on the bar itself, but never surfaces
|
|
309
|
-
// in hover/tooltip — its points are simply absent from the candidate list.
|
|
310
|
-
const hoverPoints = $derived(
|
|
311
|
-
buildHoverPoints(resolvedSeries, isHorizontal, barLayout, colorForSeries).filter(
|
|
312
|
-
(p) => !legendInteraction?.disabledSeries.has(p.series!)
|
|
313
|
-
)
|
|
314
|
-
);
|
|
315
|
-
|
|
316
|
-
const hover = $derived({
|
|
317
|
-
active: tooltip != null || hasHoverMarker(markers),
|
|
318
|
-
points: hoverPoints,
|
|
319
|
-
label: (r: TData) => String(yAcc(r)),
|
|
320
|
-
strategy: resolveHoverStrategy(tooltip?.strategy, markers, categoricalAxis),
|
|
321
|
-
sync: resolveHoverSync(tooltip?.sync, markers),
|
|
12
|
+
title,
|
|
13
|
+
subtitle,
|
|
14
|
+
caption,
|
|
15
|
+
header,
|
|
16
|
+
footer,
|
|
17
|
+
legend,
|
|
18
|
+
order,
|
|
19
|
+
timeline,
|
|
20
|
+
facet,
|
|
322
21
|
tooltip,
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
// (via svelteplot's `RectPath`) actually render that band, which is
|
|
327
|
-
// enough to mismatch the neighbouring category once bands get thin
|
|
328
|
-
// (many categories). The `role: 'hitArea'` bar markers `buildBarMarkers`
|
|
329
|
-
// emits hit-test each series' own segment directly instead — see its
|
|
330
|
-
// own doc comment.
|
|
331
|
-
pointMatching: 'contains' as const
|
|
332
|
-
});
|
|
333
|
-
|
|
334
|
-
// Estimated overflow for an `'outside'`-anchored value label at the most
|
|
335
|
-
// extreme value in the whole dataset — not just the current frame, so it
|
|
336
|
-
// stays stable across a timeline scrubber instead of resetting to zero
|
|
337
|
-
// and regrowing on every tick. Stacked labels sit at their own segment's
|
|
338
|
-
// midpoint (see `valueTextFn` above), well inside the bar, so they carry
|
|
339
|
-
// no such risk; `start`/`end` anchors sit inside the bar too.
|
|
340
|
-
const valueLabelFloor = $derived.by((): MarginOverflow | undefined => {
|
|
341
|
-
if (!showVals || valAnchor !== 'outside' || barLayout.layout === 'stacked') return undefined;
|
|
342
|
-
const font = styles.values?.fontStyle;
|
|
343
|
-
const fontSize = typeof font?.fontSize === 'number' ? font.fontSize : 12;
|
|
344
|
-
const canvasFont = `${fontSize}px ${cfg.font === 'inherit' ? 'sans-serif' : cfg.font}`;
|
|
345
|
-
if (isHorizontal) {
|
|
346
|
-
const offset = Math.abs(typeof font?.dx === 'number' ? font.dx : 6);
|
|
347
|
-
const texts: string[] = [];
|
|
348
|
-
for (const s of resolvedSeries) {
|
|
349
|
-
const sy = resolveAccessor(s.y);
|
|
350
|
-
let extremeValue = 0;
|
|
351
|
-
let extremeRow: TData | undefined;
|
|
352
|
-
for (const d of s.data) {
|
|
353
|
-
const v = Number(sy(d));
|
|
354
|
-
if (Number.isNaN(v)) continue;
|
|
355
|
-
if (extremeRow === undefined || Math.abs(v) > Math.abs(extremeValue)) {
|
|
356
|
-
extremeValue = v;
|
|
357
|
-
extremeRow = d;
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
if (extremeRow === undefined) continue;
|
|
361
|
-
texts.push(formatValue(extremeValue, s.name));
|
|
362
|
-
}
|
|
363
|
-
const right = estimateValueLabelMargin(texts, { canvasFont, reach: offset });
|
|
364
|
-
return { left: 0, right, top: 0, bottom: 0 };
|
|
365
|
-
}
|
|
366
|
-
const offset = Math.abs(typeof font?.dy === 'number' ? font.dy : 6);
|
|
367
|
-
return { left: 0, right: 0, top: Math.ceil(offset + fontSize * 1.2), bottom: 0 };
|
|
368
|
-
});
|
|
369
|
-
|
|
370
|
-
// See `halfDimensionOverflowCap`'s own doc comment.
|
|
371
|
-
const maxLabelOverflow = $derived(halfDimensionOverflowCap(width, height));
|
|
372
|
-
|
|
373
|
-
// A bar's value label can grow past the plot's own content box (e.g. a
|
|
374
|
-
// tall bar's `anchor: 'outside'` label pushing past the top margin) —
|
|
375
|
-
// `valueLabelFloor` covers the common case up front; each label's own
|
|
376
|
-
// rendered overflow still feeds `labelMargin.report` for whatever that
|
|
377
|
-
// estimate doesn't cover. See `labelOverflow.svelte.ts`.
|
|
378
|
-
const labelMargin = createLabelMarginTracker(
|
|
379
|
-
() => margins,
|
|
380
|
-
() => resolvedSeries,
|
|
381
|
-
() => valueLabelFloor ?? { left: 0, right: 0, top: 0, bottom: 0 },
|
|
382
|
-
() => maxLabelOverflow
|
|
383
|
-
);
|
|
22
|
+
margins = $bindable(),
|
|
23
|
+
...core
|
|
24
|
+
}: BarPlotProps<TData> = $props();
|
|
384
25
|
</script>
|
|
385
26
|
|
|
386
|
-
<
|
|
387
|
-
{
|
|
388
|
-
{
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
{
|
|
394
|
-
|
|
395
|
-
{
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
isHorizontal,
|
|
402
|
-
hoverPoints,
|
|
403
|
-
colorFor: colorForSeries,
|
|
404
|
-
disabledFillFor: (name) => disabledFillOverride(effectiveDisabledFor(name)),
|
|
405
|
-
active: hover.active,
|
|
406
|
-
setHoverMatch,
|
|
407
|
-
clearHoverMatch,
|
|
408
|
-
gapFillMaps
|
|
409
|
-
}),
|
|
410
|
-
...markers
|
|
411
|
-
]}
|
|
412
|
-
seriesData={resolvedSeries}
|
|
413
|
-
{scopedGroups}
|
|
414
|
-
>
|
|
415
|
-
{#snippet children({ numericMargins })}
|
|
416
|
-
{#if showVals}
|
|
417
|
-
{#each groupedSeries as group, seriesIndex (group.series.name)}
|
|
418
|
-
<ValueLabels
|
|
419
|
-
{group}
|
|
420
|
-
{seriesIndex}
|
|
421
|
-
{barLayout}
|
|
422
|
-
{isHorizontal}
|
|
423
|
-
{valAnchor}
|
|
424
|
-
{formatValue}
|
|
425
|
-
values={styles.values}
|
|
426
|
-
axisColor={cfg.axis.color}
|
|
427
|
-
disabled={effectiveDisabledFor(group.series.name)}
|
|
428
|
-
{width}
|
|
429
|
-
{height}
|
|
430
|
-
{numericMargins}
|
|
431
|
-
onHoverSeries={hoverIsolate
|
|
432
|
-
? () => {
|
|
433
|
-
hoverIsolatedSeries = group.series.name;
|
|
434
|
-
}
|
|
435
|
-
: undefined}
|
|
436
|
-
onHoverEnd={hoverIsolate
|
|
437
|
-
? () => {
|
|
438
|
-
hoverIsolatedSeries = null;
|
|
439
|
-
}
|
|
440
|
-
: undefined}
|
|
441
|
-
onOverflow={labelMargin.report}
|
|
442
|
-
/>
|
|
443
|
-
{/each}
|
|
444
|
-
{/if}
|
|
445
|
-
{/snippet}
|
|
446
|
-
</BasePlotLayout>
|
|
27
|
+
<Plot
|
|
28
|
+
core={core as BarPlotCoreProps<TData>}
|
|
29
|
+
defaults={buildBarDefaults}
|
|
30
|
+
bind:margins
|
|
31
|
+
{title}
|
|
32
|
+
{subtitle}
|
|
33
|
+
{caption}
|
|
34
|
+
{header}
|
|
35
|
+
{footer}
|
|
36
|
+
{legend}
|
|
37
|
+
{order}
|
|
38
|
+
{timeline}
|
|
39
|
+
{facet}
|
|
40
|
+
{tooltip}
|
|
41
|
+
/>
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type {
|
|
3
|
-
import type { AxisBasedScalesConfig } from '../../types/layout/scales';
|
|
4
|
-
import type { SeriesProps, DataProps } from '../../types/plots/data/common';
|
|
5
|
-
import type { GapsAwarePlotStylesConfig } from '../../types/layout/styles';
|
|
1
|
+
import Plot from '../../layout/plot/Plot.svelte';
|
|
2
|
+
import type { BarPlotProps } from '../../types/plots/bar/props';
|
|
6
3
|
declare function $$render<TData extends Record<string, unknown>>(): {
|
|
7
|
-
props:
|
|
4
|
+
props: BarPlotProps<TData>;
|
|
8
5
|
exports: {};
|
|
9
|
-
bindings: "";
|
|
6
|
+
bindings: "margins";
|
|
10
7
|
slots: {};
|
|
11
8
|
events: {};
|
|
12
9
|
};
|
|
@@ -14,7 +11,7 @@ declare class __sveltets_Render<TData extends Record<string, unknown>> {
|
|
|
14
11
|
props(): ReturnType<typeof $$render<TData>>['props'];
|
|
15
12
|
events(): ReturnType<typeof $$render<TData>>['events'];
|
|
16
13
|
slots(): ReturnType<typeof $$render<TData>>['slots'];
|
|
17
|
-
bindings(): "";
|
|
14
|
+
bindings(): "margins";
|
|
18
15
|
exports(): {};
|
|
19
16
|
}
|
|
20
17
|
interface $$IsomorphicComponent {
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AxisPlotDefaults } from '../../types/phases';
|
|
2
|
+
import type { BarPlotState, BarPlotCtx } from '../../types/plots/bar/state';
|
|
3
|
+
/**
|
|
4
|
+
* BarPlot on the shared pipeline: discrete bars with gap fills along one
|
|
5
|
+
* category axis - `x`, or `y` for horizontal bars, as the "data" phase reads
|
|
6
|
+
* it off the values - its own scales (padding, bar layout) and markers.
|
|
7
|
+
* Its plot defaults to: hover along the category axis, timeline tweens matched per category and group.
|
|
8
|
+
*/
|
|
9
|
+
export declare function buildBarDefaults<TData extends Record<string, unknown>>(): AxisPlotDefaults<BarPlotState<TData>, BarPlotCtx>;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { ProcessedPositions } from '../../phases/transforms/ProcessedPositions';
|
|
2
|
+
import { buildMarks, buildValueLabels, buildHitAreas, buildBarGeometry } from './markers';
|
|
3
|
+
import { NiceTicks } from '../../layout/scales/NiceTicks';
|
|
4
|
+
import { SERIES_KEY } from '../../phases/transforms/TransformsPhase';
|
|
5
|
+
import { PlotAxes } from '../../phases/data/PlotAxes';
|
|
6
|
+
/**
|
|
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
|
|
9
|
+
* author pins the axis, and when there is no span to fit.
|
|
10
|
+
*/
|
|
11
|
+
function fitValueDomain(state) {
|
|
12
|
+
const axis = PlotAxes.valueOf(state);
|
|
13
|
+
const scale = state.scales[axis];
|
|
14
|
+
if (scale?.domain != null || scale?.ticks != null || scale?.nice != null)
|
|
15
|
+
return {};
|
|
16
|
+
// Every bar's span, as the "transforms" phase left it - its baseline is
|
|
17
|
+
// unknown until the domain is, so a plain bar reads as reaching from zero.
|
|
18
|
+
const { of: spanOf } = ProcessedPositions.span(state.processedData, axis);
|
|
19
|
+
let lo = 0;
|
|
20
|
+
let hi = 0;
|
|
21
|
+
for (const row of state.processedData?.data ?? []) {
|
|
22
|
+
const span = spanOf(row);
|
|
23
|
+
if (!span)
|
|
24
|
+
continue;
|
|
25
|
+
lo = Math.min(lo, ...span);
|
|
26
|
+
hi = Math.max(hi, ...span);
|
|
27
|
+
}
|
|
28
|
+
if (hi <= lo)
|
|
29
|
+
return {};
|
|
30
|
+
return { [axis]: { domain: NiceTicks.fit(state, axis, lo, hi, scale?.niceTolerance) } };
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* BarPlot on the shared pipeline: discrete bars with gap fills along one
|
|
34
|
+
* category axis - `x`, or `y` for horizontal bars, as the "data" phase reads
|
|
35
|
+
* it off the values - its own scales (padding, bar layout) and markers.
|
|
36
|
+
* Its plot defaults to: hover along the category axis, timeline tweens matched per category and group.
|
|
37
|
+
*/
|
|
38
|
+
export function buildBarDefaults() {
|
|
39
|
+
return {
|
|
40
|
+
data: {
|
|
41
|
+
discreteAxes: 1,
|
|
42
|
+
segments: { color: (style) => style?.fill, connect: false }
|
|
43
|
+
},
|
|
44
|
+
scales: {
|
|
45
|
+
zero: ['value'],
|
|
46
|
+
defaults: (_state, ctx) => ({
|
|
47
|
+
category: { paddingInner: ctx.cfg.bar.paddingInner, paddingOuter: ctx.cfg.bar.paddingOuter }
|
|
48
|
+
}),
|
|
49
|
+
fit: fitValueDomain
|
|
50
|
+
},
|
|
51
|
+
styles: {
|
|
52
|
+
values: {
|
|
53
|
+
// An `'outside'` label sits past its bar's end, which the tallest bar takes to the edge.
|
|
54
|
+
reach: (labels, state) => {
|
|
55
|
+
if (labels.anchor !== 'outside')
|
|
56
|
+
return [];
|
|
57
|
+
const axis = PlotAxes.valueOf(state);
|
|
58
|
+
if (ProcessedPositions.span(state.processedData, axis).stacked)
|
|
59
|
+
return [];
|
|
60
|
+
if (!state.axes?.isHorizontal) {
|
|
61
|
+
const at = { y: -labels.offset('y') };
|
|
62
|
+
return [labels.edgeBox('0', { x: 'middle', y: 'before' }, at, ['top'])];
|
|
63
|
+
}
|
|
64
|
+
const at = { x: labels.offset('x') };
|
|
65
|
+
return labels
|
|
66
|
+
.extremes(state.resolvedSeries ?? [], PlotAxes.valueOf(state))
|
|
67
|
+
.map(({ series, value }) => labels.edgeBox(labels.format(value, series.name), { x: 'after', y: 'middle' }, at, [
|
|
68
|
+
'right'
|
|
69
|
+
]));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
markers: { marks: buildMarks, valueLabels: buildValueLabels },
|
|
74
|
+
hover: {
|
|
75
|
+
// Each bar matched by its own band (see `buildHitAreas`); a grouped bar's dot is
|
|
76
|
+
// drawn in its series' slice of the band.
|
|
77
|
+
pointMatching: 'contains',
|
|
78
|
+
decorate: (state, ctx) => {
|
|
79
|
+
const { sliceOf } = buildBarGeometry(state, ctx.cfg.bar.seriesPadding);
|
|
80
|
+
return (row) => ({
|
|
81
|
+
areaInset: sliceOf(String(row[SERIES_KEY]))
|
|
82
|
+
});
|
|
83
|
+
},
|
|
84
|
+
hitAreas: buildHitAreas
|
|
85
|
+
},
|
|
86
|
+
timeline: { interpolation: { value: 'value', key: ['category', 'grouping'] } }
|
|
87
|
+
};
|
|
88
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { BarMarkerConfig, TextMarkerConfig } from '../../types/markers/common';
|
|
2
|
+
import type { BarPlotState, BarPlotCtx } from '../../types/plots/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
|
+
/**
|
|
10
|
+
* Where a bar plot's bars sit, read off the state its phases leave: each
|
|
11
|
+
* processed row's category and span along the value axis, whether the series
|
|
12
|
+
* stack, and the slice of its category band each series takes when they sit
|
|
13
|
+
* side by side. Slices are fractions of the band, so they hold at any width.
|
|
14
|
+
*/
|
|
15
|
+
export declare function buildBarGeometry<TData extends Record<string, unknown>>(state: BarPlotState<TData>, seriesPadding: number): {
|
|
16
|
+
stacked: boolean;
|
|
17
|
+
baseline: number;
|
|
18
|
+
spanOf: (row: ProcessedRow) => [number, number] | undefined;
|
|
19
|
+
categoryOf: (row: ProcessedRow) => AxisValue;
|
|
20
|
+
sliceOf: (name: string) => BandSlice | undefined;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* BarPlot's invisible `role: 'hitArea'` markers - one per hover candidate: a
|
|
24
|
+
* band across the whole plot along the value axis (full height for vertical
|
|
25
|
+
* bars, full width for horizontal ones), over its category, or its series'
|
|
26
|
+
* slice of it. The pointer needn't be over the visible bar. They drive the
|
|
27
|
+
* plot's hover when it is active.
|
|
28
|
+
*/
|
|
29
|
+
export declare function buildHitAreas<TData extends Record<string, unknown>>(state: BarPlotState<TData>, hover: HoverConfig<any>, ctx: BarPlotCtx): BarMarkerConfig[];
|
|
30
|
+
/**
|
|
31
|
+
* BarPlot's `styles.values` as one `'text'` marker per series, over the same
|
|
32
|
+
* processed rows its bars draw (gap rows never get a label). `anchor` places
|
|
33
|
+
* each label along its bar: past its top (`'outside'`), just inside it
|
|
34
|
+
* (`'start'`), at its base (`'end'`), or centred (`'middle'`); a stacked bar's
|
|
35
|
+
* label always sits at the middle of its own span. A grouped bar's label
|
|
36
|
+
* shifts with its series' slice of the band.
|
|
37
|
+
*/
|
|
38
|
+
export declare function buildValueLabels<TData extends Record<string, unknown>>(labels: ValueLabels, state: BarPlotState<TData>, ctx: BarPlotCtx): TextMarkerConfig[];
|
|
39
|
+
/**
|
|
40
|
+
* BarPlot's "markers" phase: visible `role: 'segment'` bars - real data plus
|
|
41
|
+
* gap fills - drawing the rows the "transforms" phase left, prepended onto
|
|
42
|
+
* whatever the "statistics" phase already put in `state.markers`, and its
|
|
43
|
+
* value labels on top of everything.
|
|
44
|
+
*/
|
|
45
|
+
export declare function buildMarks<TData extends Record<string, unknown>>(state: BarPlotState<TData>, ctx: BarPlotCtx): AxisBasedMarkersConfig[];
|