@fundar/data-chart-telling 0.0.64 → 1.0.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 +17 -0
- package/LICENSE +21 -0
- package/README.md +81 -561
- package/dist/configuration/config.svelte.d.ts +5 -5
- package/dist/configuration/config.svelte.js +130 -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 +421 -80
- package/dist/configuration/themes/index.js +6 -5
- package/dist/index.d.ts +34 -48
- package/dist/index.js +19 -35
- package/dist/layout/base/BasePlotLayout.svelte +312 -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 +20 -0
- package/dist/layout/hover/HoverSettings.js +27 -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 +79 -0
- package/dist/layout/legend/LegendState.svelte.js +329 -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 +284 -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 +130 -0
- package/dist/layout/plot/PublicPlotContext.js +236 -0
- package/dist/layout/plot/Slice.d.ts +44 -0
- package/dist/layout/plot/Slice.js +98 -0
- package/dist/layout/plot/usePlot.d.ts +9 -0
- package/dist/layout/plot/usePlot.js +13 -0
- package/dist/layout/scales/ScalesLayout.svelte +241 -206
- package/dist/layout/scales/ScalesLayout.svelte.d.ts +2 -1
- package/dist/layout/scales/buildScale.d.ts +5 -22
- package/dist/layout/scales/buildScale.js +11 -34
- package/dist/layout/scales/niceDomain.d.ts +3 -3
- package/dist/layout/scales/niceDomain.js +4 -4
- 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 +237 -0
- package/dist/layout/timeline/Timeline.svelte +80 -74
- package/dist/layout/timeline/TimelineFrame.svelte +86 -0
- package/dist/layout/timeline/TimelineFrame.svelte.d.ts +16 -0
- package/dist/layout/timeline/TimelineLayout.svelte +114 -169
- package/dist/layout/timeline/TimelineLayout.svelte.d.ts +2 -0
- package/dist/layout/timeline/TimelinePlayer.svelte +195 -0
- package/dist/layout/timeline/TimelinePlayer.svelte.d.ts +7 -0
- package/dist/layout/timeline/TimelineRule.svelte +50 -0
- package/dist/layout/timeline/TimelineRule.svelte.d.ts +7 -0
- package/dist/layout/timeline/TimelineState.svelte.d.ts +82 -0
- package/dist/layout/timeline/TimelineState.svelte.js +226 -0
- package/dist/layout/timeline/TimelineSteps.d.ts +24 -0
- package/dist/layout/timeline/TimelineSteps.js +48 -0
- package/dist/layout/tooltip/Tooltip.svelte +82 -85
- package/dist/layout/tooltip/Tooltip.svelte.d.ts +43 -24
- package/dist/layout/tooltip/TooltipState.svelte.d.ts +61 -0
- package/dist/layout/tooltip/TooltipState.svelte.js +107 -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 +94 -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 +226 -0
- package/dist/phases/data/DataPhase.d.ts +25 -0
- package/dist/phases/data/DataPhase.js +82 -0
- package/dist/phases/data/PlotAxes.d.ts +75 -0
- package/dist/phases/data/PlotAxes.js +151 -0
- package/dist/phases/facet/FacetPhase.d.ts +52 -0
- package/dist/phases/facet/FacetPhase.js +114 -0
- package/dist/phases/hover/HoverPhase.d.ts +73 -0
- package/dist/phases/hover/HoverPhase.js +144 -0
- package/dist/phases/mapping/MappingPhase.d.ts +17 -0
- package/dist/phases/mapping/MappingPhase.js +42 -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 +31 -0
- package/dist/phases/scales/ScalesPhase.js +157 -0
- package/dist/phases/sharedScales/SharedScalesPhase.d.ts +55 -0
- package/dist/phases/sharedScales/SharedScalesPhase.js +168 -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 +68 -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 +12 -0
- package/dist/phases/tooltip/TooltipPhase.js +10 -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 +64 -0
- package/dist/phases/transforms/TransformsPhase.js +242 -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 +40 -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 +92 -0
- package/dist/plots/bar/markers.d.ts +45 -0
- package/dist/plots/bar/markers.js +232 -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 +76 -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 +56 -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 +141 -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 +200 -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 +86 -0
- package/dist/plots/pyramid/markers.d.ts +21 -0
- package/dist/plots/pyramid/markers.js +159 -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 +79 -0
- package/dist/plots/scatter/markers.d.ts +19 -0
- package/dist/plots/scatter/markers.js +128 -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 +152 -27
- package/dist/types/layout/box.d.ts +24 -0
- package/dist/types/layout/composer.d.ts +36 -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 +92 -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 +51 -4
- 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 +34 -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 +73 -0
- package/dist/types/phases/state.js +1 -0
- package/dist/types/phases/statistics/phase.d.ts +41 -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 +40 -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/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 +143 -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 +68 -0
- package/docs/composer.md +53 -0
- package/docs/concepts.md +99 -0
- package/docs/development.md +94 -0
- package/docs/facets.md +69 -0
- package/docs/geo.md +151 -0
- package/docs/getting-started.md +79 -0
- package/docs/legend.md +106 -0
- package/docs/markers.md +106 -0
- package/docs/plots.md +158 -0
- package/docs/scales.md +78 -0
- package/docs/state.md +71 -0
- package/docs/styles-and-segments.md +215 -0
- package/docs/theming.md +215 -0
- package/docs/timeline.md +94 -0
- package/docs/tooltip-and-hover.md +80 -0
- package/docs/transforms-and-statistics.md +88 -0
- package/examples/BarValues.svelte +14 -0
- package/examples/CustomTooltip.svelte +37 -0
- package/examples/Facets.svelte +15 -0
- package/examples/LegendReader.svelte +8 -0
- package/examples/LegendToggle.svelte +25 -0
- package/examples/ResponsiveLine.svelte +37 -0
- package/examples/Segments.svelte +17 -0
- package/examples/TimelinePlayer.svelte +20 -0
- package/examples/Tooltip.svelte +19 -0
- package/examples/TooltipCard.svelte +86 -0
- package/examples/data.ts +12 -0
- package/llms-full.txt +114 -0
- package/llms.txt +49 -0
- package/package.json +41 -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/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
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { FacetPhase } from './facet/FacetPhase';
|
|
2
|
+
import { DataPhase } from './data/DataPhase';
|
|
3
|
+
import { MappingPhase } from './mapping/MappingPhase';
|
|
4
|
+
import { TransformsPhase } from './transforms/TransformsPhase';
|
|
5
|
+
import { StatisticsPhase } from './statistics/StatisticsPhase';
|
|
6
|
+
import { ScalesPhase } from './scales/ScalesPhase';
|
|
7
|
+
import { SharedScalesPhase } from './sharedScales/SharedScalesPhase';
|
|
8
|
+
import { StylesPhase } from './styles/StylesPhase';
|
|
9
|
+
import { MarkersPhase } from './markers/MarkersPhase';
|
|
10
|
+
import { TooltipPhase } from './tooltip/TooltipPhase';
|
|
11
|
+
import { HoverPhase } from './hover/HoverPhase';
|
|
12
|
+
import { PlotInteraction } from '../layout/interaction/PlotInteraction.svelte';
|
|
13
|
+
import { DEFAULT_CONFIG } from '../configuration/config.svelte';
|
|
14
|
+
/**
|
|
15
|
+
* A plot's pipeline: its stages, one per phase, in {@link Pipeline.ORDER},
|
|
16
|
+
* and what its plot needs before any of them run - its hover strategy and
|
|
17
|
+
* timeline defaults. Every core of the plot runs it ({@link run}); with a
|
|
18
|
+
* facet, the plot first runs its data phases once over every panel
|
|
19
|
+
* ({@link runData}), and each panel's core runs only the rest.
|
|
20
|
+
*
|
|
21
|
+
* Stages declared out of phase order still run in it - with a warning, once,
|
|
22
|
+
* since the declared order would otherwise read as the one that runs.
|
|
23
|
+
*/
|
|
24
|
+
export class Pipeline {
|
|
25
|
+
/**
|
|
26
|
+
* The phases that work on the plot's rows - everything before its scales,
|
|
27
|
+
* plus the domains its slices share - in order. They run once over every
|
|
28
|
+
* facet panel; the rest depend on each panel's own box.
|
|
29
|
+
*/
|
|
30
|
+
static DATA_PHASES = [
|
|
31
|
+
'facet',
|
|
32
|
+
'data',
|
|
33
|
+
'mapping',
|
|
34
|
+
'transforms',
|
|
35
|
+
'statistics',
|
|
36
|
+
'sharedScales'
|
|
37
|
+
];
|
|
38
|
+
/** Every {@link PlotPhase}, in the order they run: the data phases, then each panel's own. */
|
|
39
|
+
static ORDER = [
|
|
40
|
+
...Pipeline.DATA_PHASES,
|
|
41
|
+
'scales',
|
|
42
|
+
'styles',
|
|
43
|
+
'markers',
|
|
44
|
+
'coordinates',
|
|
45
|
+
'tooltip',
|
|
46
|
+
'hover'
|
|
47
|
+
];
|
|
48
|
+
// Every axis kind's pipeline, built once per kind object.
|
|
49
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
50
|
+
static #axisKinds = new WeakMap();
|
|
51
|
+
stages;
|
|
52
|
+
#options;
|
|
53
|
+
#data;
|
|
54
|
+
#panel;
|
|
55
|
+
constructor(stages, options = {}) {
|
|
56
|
+
const rank = (phase) => Pipeline.ORDER.indexOf(phase);
|
|
57
|
+
const ordered = [...stages].sort((a, b) => rank(a.phase) - rank(b.phase));
|
|
58
|
+
if (ordered.some((stage, i) => stage !== stages[i])) {
|
|
59
|
+
console.warn(`Pipeline: stages declared as [${stages.map((s) => s.phase).join(', ')}] run in phase order: [${ordered.map((s) => s.phase).join(', ')}].`);
|
|
60
|
+
}
|
|
61
|
+
this.stages = ordered;
|
|
62
|
+
this.#options = options;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* An axis-based plot kind's pipeline: the shared stages, each set up with
|
|
66
|
+
* the kind's own options - its marks and value labels among them - started
|
|
67
|
+
* from a core's props. Built once per kind object.
|
|
68
|
+
*/
|
|
69
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
70
|
+
static ofAxisKind(kind) {
|
|
71
|
+
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
72
|
+
const cached = Pipeline.#axisKinds.get(kind);
|
|
73
|
+
if (cached)
|
|
74
|
+
return cached;
|
|
75
|
+
const scales = new ScalesPhase(kind.scales);
|
|
76
|
+
const pipeline = new Pipeline([
|
|
77
|
+
new FacetPhase(),
|
|
78
|
+
new DataPhase(kind.data),
|
|
79
|
+
new MappingPhase(kind.mapping),
|
|
80
|
+
new TransformsPhase(kind.transforms),
|
|
81
|
+
new StatisticsPhase(kind.statistics),
|
|
82
|
+
new SharedScalesPhase(kind.sharedScales, scales),
|
|
83
|
+
scales,
|
|
84
|
+
new StylesPhase(kind.styles),
|
|
85
|
+
new MarkersPhase(kind.markers),
|
|
86
|
+
new TooltipPhase(),
|
|
87
|
+
new HoverPhase(kind.hover)
|
|
88
|
+
], {
|
|
89
|
+
seed: (props, rows) => Pipeline.#axisSeed(props, rows),
|
|
90
|
+
hoverStrategy: kind.hover?.strategy,
|
|
91
|
+
timeline: kind.timeline
|
|
92
|
+
});
|
|
93
|
+
Pipeline.#axisKinds.set(kind, pipeline);
|
|
94
|
+
return pipeline;
|
|
95
|
+
}
|
|
96
|
+
/** A plot's pipeline from what its kind gives: its axis-kind defaults, or a pipeline of its own. */
|
|
97
|
+
static of(
|
|
98
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
99
|
+
defaults
|
|
100
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
101
|
+
) {
|
|
102
|
+
return defaults instanceof Pipeline ? defaults : Pipeline.ofAxisKind(defaults);
|
|
103
|
+
}
|
|
104
|
+
/** The stage of `phase`, if the pipeline has one. */
|
|
105
|
+
stage(phase) {
|
|
106
|
+
return this.stages.find((stage) => stage.phase === phase);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* A core's run: every stage over the state its `input` (an axis core's
|
|
110
|
+
* props) seeds - or, given `panelState` (one facet panel's part of
|
|
111
|
+
* {@link runData}), only the stages after the data phases, over that state
|
|
112
|
+
* with the input's own props (its box, margins and scales) on top.
|
|
113
|
+
*/
|
|
114
|
+
run = (input, ctx, panelState) => {
|
|
115
|
+
const seed = this.#seed(input);
|
|
116
|
+
if (!panelState)
|
|
117
|
+
return Pipeline.#through(this.stages, seed, ctx);
|
|
118
|
+
this.#panel ??= this.stages.filter((stage) => !Pipeline.DATA_PHASES.includes(stage.phase));
|
|
119
|
+
return Pipeline.#through(this.#panel, { ...panelState, ...seed }, ctx);
|
|
120
|
+
};
|
|
121
|
+
/** Whether the pipeline has data phases to run once over every facet panel ({@link runData}). */
|
|
122
|
+
get facets() {
|
|
123
|
+
return this.stage('facet') !== undefined;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* The data phases over `rows`, seeded from a core's `props`, with the
|
|
127
|
+
* plot's `facet`: one run that every facet panel then reads its part of,
|
|
128
|
+
* including the domains its slices share (its "sharedScales" phase).
|
|
129
|
+
*/
|
|
130
|
+
runData(props, rows, facet, legendInteraction, cfg) {
|
|
131
|
+
this.#data ??= this.stages.filter((stage) => Pipeline.DATA_PHASES.includes(stage.phase));
|
|
132
|
+
const seed = { ...this.#seed(props, rows), facet };
|
|
133
|
+
return Pipeline.#through(this.#data, seed, Pipeline.#ctxFor(cfg, legendInteraction));
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* The plot's hover strategy when neither its `tooltip` nor a hover marker
|
|
137
|
+
* sets one, given its props: the kind's own, or the one its axes ask for,
|
|
138
|
+
* read after the "data" phase tells them apart.
|
|
139
|
+
*/
|
|
140
|
+
hoverStrategy(props, cfg = DEFAULT_CONFIG) {
|
|
141
|
+
const fixed = this.#options.hoverStrategy;
|
|
142
|
+
if (fixed !== undefined)
|
|
143
|
+
return fixed;
|
|
144
|
+
const upToData = this.stages.filter((s) => s.phase === 'data');
|
|
145
|
+
const state = Pipeline.#through(upToData, this.#seed(props), Pipeline.#ctxFor(cfg, null));
|
|
146
|
+
return HoverPhase.strategyOf(state);
|
|
147
|
+
}
|
|
148
|
+
/** The plot's default `timeline.filterMode`. */
|
|
149
|
+
get filterMode() {
|
|
150
|
+
return this.#options.timeline?.filterMode;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* How the plot tweens its timeline unless `timeline.interpolate` says
|
|
154
|
+
* otherwise, from the channels its "mapping" phase resolves over
|
|
155
|
+
* `props.data`: rows matched by the values of whichever `key` channels are
|
|
156
|
+
* set, `value` tweened. `undefined` when its kind tweens nothing.
|
|
157
|
+
*/
|
|
158
|
+
interpolation(props, cfg) {
|
|
159
|
+
const channels = this.#options.timeline?.interpolation;
|
|
160
|
+
if (!channels || !props.data)
|
|
161
|
+
return undefined;
|
|
162
|
+
const upToMapping = this.stages.filter((s) => s.phase === 'data' || s.phase === 'mapping');
|
|
163
|
+
// Without a legend: the channels read the same whatever it turns off.
|
|
164
|
+
const state = Pipeline.#through(upToMapping, this.#seed(props), Pipeline.#ctxFor(cfg, null));
|
|
165
|
+
const channel = (ref) => {
|
|
166
|
+
const name = ref === 'value' || ref === 'category' ? state.axes?.[ref] : ref;
|
|
167
|
+
if (name === undefined)
|
|
168
|
+
return undefined;
|
|
169
|
+
const c = state.channels?.[name];
|
|
170
|
+
return typeof c === 'object' ? c : undefined;
|
|
171
|
+
};
|
|
172
|
+
const value = channel(channels.value)?.source;
|
|
173
|
+
if (value === undefined)
|
|
174
|
+
return undefined;
|
|
175
|
+
const keys = channels.key
|
|
176
|
+
.map(channel)
|
|
177
|
+
.filter((c) => c?.source !== undefined);
|
|
178
|
+
const key = keys.length > 1
|
|
179
|
+
? (row) => keys.map((c) => String(c.accessor(row))).join('::')
|
|
180
|
+
: keys[0]?.source;
|
|
181
|
+
return { value: value, key };
|
|
182
|
+
}
|
|
183
|
+
/** The state a run starts from. */
|
|
184
|
+
#seed(input, rows) {
|
|
185
|
+
return this.#options.seed ? this.#options.seed(input, rows) : input;
|
|
186
|
+
}
|
|
187
|
+
/** `stages` over `state`, in order. */
|
|
188
|
+
static #through(stages, state, ctx) {
|
|
189
|
+
return stages.reduce((acc, stage) => stage.run(acc, ctx), state);
|
|
190
|
+
}
|
|
191
|
+
/** The context a plot-level run reads, outside any core: the configuration and the legend. */
|
|
192
|
+
static #ctxFor(cfg, legendInteraction) {
|
|
193
|
+
const interaction = new PlotInteraction(() => cfg, { legend: legendInteraction });
|
|
194
|
+
return { cfg, interaction };
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* The state an axis plot's pipeline starts from: its core props, drawing
|
|
198
|
+
* `rows`. Every kind starts from the same shape; a prop its phases don't
|
|
199
|
+
* read is simply carried along.
|
|
200
|
+
*/
|
|
201
|
+
static #axisSeed(props, rows = props.data) {
|
|
202
|
+
return {
|
|
203
|
+
series: props.series,
|
|
204
|
+
data: rows,
|
|
205
|
+
x: props.x,
|
|
206
|
+
y: props.y,
|
|
207
|
+
grouping: props.grouping,
|
|
208
|
+
color: props.color,
|
|
209
|
+
opacity: props.opacity,
|
|
210
|
+
r: props.r,
|
|
211
|
+
symbol: props.symbol,
|
|
212
|
+
segments: props.segments ?? {},
|
|
213
|
+
styles: props.styles,
|
|
214
|
+
gaps: props.styles?.gaps,
|
|
215
|
+
values: props.styles?.values,
|
|
216
|
+
scales: (props.scales ?? {}),
|
|
217
|
+
width: props.width,
|
|
218
|
+
height: props.height,
|
|
219
|
+
margins: props.margins,
|
|
220
|
+
tooltip: props.tooltip,
|
|
221
|
+
authorMarkers: props.markers ?? [],
|
|
222
|
+
statistics: props.statistics ?? [],
|
|
223
|
+
transforms: props.transforms ?? []
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Accessor } from '../../types/plots/data/common';
|
|
2
|
+
import type { AxisPlotState, AxisPlotCtx, DataStageOptions, PhaseStage } from '../../types/phases';
|
|
3
|
+
type AnyAxisState = AxisPlotState<any, any, any, any>;
|
|
4
|
+
/**
|
|
5
|
+
* The "data" phase every axis-based plot shares: its series (from `series`,
|
|
6
|
+
* or flat rows split by {@link DataPhase.buildGrouping}), what each position
|
|
7
|
+
* channel is and which way the plot runs ({@link PlotAxes}), each series'
|
|
8
|
+
* color, the series a legend omits dropped, each series cut into its styled
|
|
9
|
+
* visual segments, and - for a discrete mark - the values its gaps fill in.
|
|
10
|
+
* Colors and axes come from every series, before any is omitted or split by
|
|
11
|
+
* facet panel, so they stay put and every panel agrees.
|
|
12
|
+
*/
|
|
13
|
+
export declare class DataPhase<TState extends AnyAxisState, TCtx extends AxisPlotCtx> implements PhaseStage<TState, TCtx> {
|
|
14
|
+
#private;
|
|
15
|
+
readonly phase: "data";
|
|
16
|
+
constructor(options?: DataStageOptions<TState, TCtx>);
|
|
17
|
+
run: (state: TState, ctx: TCtx) => TState;
|
|
18
|
+
/**
|
|
19
|
+
* The key a plot's rows split into series by: its `grouping`, or its `color`
|
|
20
|
+
* when that names categories. A numeric `color` is a continuous value (a
|
|
21
|
+
* heatmap's cells), so it colors rows without grouping them.
|
|
22
|
+
*/
|
|
23
|
+
static buildGrouping(state: Pick<AnyAxisState, 'grouping' | 'color' | 'data'>): Accessor<any, unknown> | undefined;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { buildSeries } from '../../utils/grouping';
|
|
2
|
+
import { resolveColorScale } from '../../utils/color';
|
|
3
|
+
import { resolveAccessor } from '../../plots/utils/accessors';
|
|
4
|
+
import { buildGroupedSeries, buildScopedMarkerGroups } from '../../plots/utils/segments';
|
|
5
|
+
import { buildGapFillMaps, isGapValue } from '../../plots/utils/gaps';
|
|
6
|
+
import { FacetPhase } from '../facet/FacetPhase';
|
|
7
|
+
import { PlotAxes } from './PlotAxes';
|
|
8
|
+
/**
|
|
9
|
+
* The "data" phase every axis-based plot shares: its series (from `series`,
|
|
10
|
+
* or flat rows split by {@link DataPhase.buildGrouping}), what each position
|
|
11
|
+
* channel is and which way the plot runs ({@link PlotAxes}), each series'
|
|
12
|
+
* color, the series a legend omits dropped, each series cut into its styled
|
|
13
|
+
* visual segments, and - for a discrete mark - the values its gaps fill in.
|
|
14
|
+
* Colors and axes come from every series, before any is omitted or split by
|
|
15
|
+
* facet panel, so they stay put and every panel agrees.
|
|
16
|
+
*/
|
|
17
|
+
export class DataPhase {
|
|
18
|
+
phase = 'data';
|
|
19
|
+
#options;
|
|
20
|
+
constructor(options = {}) {
|
|
21
|
+
this.#options = options;
|
|
22
|
+
}
|
|
23
|
+
run = (state, ctx) => {
|
|
24
|
+
const options = this.#options;
|
|
25
|
+
const { series, data, segments, scales } = state;
|
|
26
|
+
const { connect = true, color: segmentColor } = options.segments ?? {};
|
|
27
|
+
const built = series ?? buildSeries(data ?? [], state.x, state.y, DataPhase.buildGrouping(state));
|
|
28
|
+
const fullSeries = options.orderSeries ? options.orderSeries(built, state) : built;
|
|
29
|
+
const axes = PlotAxes.build({
|
|
30
|
+
series: fullSeries,
|
|
31
|
+
scales,
|
|
32
|
+
given: { x: state.x !== undefined, y: state.y !== undefined },
|
|
33
|
+
discrete: options.discreteAxes
|
|
34
|
+
});
|
|
35
|
+
const colorForSeries = resolveColorScale(scales.color, (options.colorOrder ? options.colorOrder(fullSeries) : fullSeries).map((s) => s.name), ctx.cfg.palette);
|
|
36
|
+
const panelSeries = state.panels && state.panelOf && !series
|
|
37
|
+
? FacetPhase.splitSeriesByPanel(fullSeries, state.panels, state.panelOf)
|
|
38
|
+
: fullSeries;
|
|
39
|
+
const resolvedSeries = ctx.interaction?.legend?.withoutOmitted(panelSeries) ?? panelSeries;
|
|
40
|
+
const groupedSeries = buildGroupedSeries(resolvedSeries, segments, connect);
|
|
41
|
+
const scopedGroups = buildScopedMarkerGroups({
|
|
42
|
+
groupedSeries,
|
|
43
|
+
segments,
|
|
44
|
+
colorFor: (s) => colorForSeries(s.name),
|
|
45
|
+
segmentColorFor: (style, defaultColor) => segmentColor?.(style) ?? defaultColor
|
|
46
|
+
});
|
|
47
|
+
// A continuous mark bridges its gaps instead (see `buildGapMarkers`).
|
|
48
|
+
const gapFillMaps = connect
|
|
49
|
+
? undefined
|
|
50
|
+
: buildGapFillMaps(resolvedSeries, state.gaps, axes.value);
|
|
51
|
+
const next = {
|
|
52
|
+
...state,
|
|
53
|
+
axes,
|
|
54
|
+
resolvedSeries,
|
|
55
|
+
allSeriesNames: fullSeries.map((s) => s.name),
|
|
56
|
+
groupedSeries,
|
|
57
|
+
flat: resolvedSeries.flatMap((s) => s.data),
|
|
58
|
+
scopedGroups,
|
|
59
|
+
colorForSeries,
|
|
60
|
+
...(gapFillMaps ? { gapFillMaps } : {})
|
|
61
|
+
};
|
|
62
|
+
return options.extend ? options.extend(next, ctx) : next;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* The key a plot's rows split into series by: its `grouping`, or its `color`
|
|
66
|
+
* when that names categories. A numeric `color` is a continuous value (a
|
|
67
|
+
* heatmap's cells), so it colors rows without grouping them.
|
|
68
|
+
*/
|
|
69
|
+
static buildGrouping(state
|
|
70
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
71
|
+
) {
|
|
72
|
+
if (state.grouping !== undefined)
|
|
73
|
+
return state.grouping;
|
|
74
|
+
const color = state.color;
|
|
75
|
+
if (color === undefined || !state.data)
|
|
76
|
+
return color;
|
|
77
|
+
const read = resolveAccessor(color);
|
|
78
|
+
const values = state.data.map(read).filter((v) => !isGapValue(v));
|
|
79
|
+
const continuous = values.length > 0 && values.every((v) => typeof v === 'number');
|
|
80
|
+
return continuous ? undefined : color;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { AxisChannelName } from '../../types/layout/mapping';
|
|
2
|
+
import type { AxisRef, DiscreteAxesCount, InferredAxis, Orientation } from '../../types/phases/data/axes';
|
|
3
|
+
/** What {@link PlotAxes.build} reads: the series' own channels and the author's axis scales. */
|
|
4
|
+
type PlotAxesSource = {
|
|
5
|
+
series: {
|
|
6
|
+
x?: unknown;
|
|
7
|
+
y?: unknown;
|
|
8
|
+
data: unknown[];
|
|
9
|
+
}[];
|
|
10
|
+
scales?: {
|
|
11
|
+
x?: {
|
|
12
|
+
type?: string;
|
|
13
|
+
};
|
|
14
|
+
y?: {
|
|
15
|
+
type?: string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
/** Channels the plot sets itself, which count as active even when no series carries them (an empty one). */
|
|
19
|
+
given?: Partial<Record<AxisChannelName, boolean>>;
|
|
20
|
+
/** How many axes the plot kind lays out as categories. */
|
|
21
|
+
discrete?: DiscreteAxesCount;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* What a plot's position channels are, read once from its series: which
|
|
25
|
+
* channels the author set, how each axis lays out its values, which one holds
|
|
26
|
+
* the categories and which the measured values, and so which way the marks
|
|
27
|
+
* run. Every later phase reads it instead of telling axes apart on its own.
|
|
28
|
+
*/
|
|
29
|
+
export declare class PlotAxes {
|
|
30
|
+
#private;
|
|
31
|
+
readonly x?: InferredAxis;
|
|
32
|
+
readonly y?: InferredAxis;
|
|
33
|
+
/** The axis whose values the plot sorts into, when it has exactly one. */
|
|
34
|
+
readonly category?: AxisChannelName;
|
|
35
|
+
/** The axis the plot measures along. */
|
|
36
|
+
readonly value?: AxisChannelName;
|
|
37
|
+
readonly orientation: Orientation;
|
|
38
|
+
/** The axes the plot kind lays out as bands: its category axes, none for a kind that needs none. */
|
|
39
|
+
readonly bands: readonly AxisChannelName[];
|
|
40
|
+
constructor(fields: {
|
|
41
|
+
x?: InferredAxis;
|
|
42
|
+
y?: InferredAxis;
|
|
43
|
+
category?: AxisChannelName;
|
|
44
|
+
value?: AxisChannelName;
|
|
45
|
+
orientation: Orientation;
|
|
46
|
+
bands?: readonly AxisChannelName[];
|
|
47
|
+
});
|
|
48
|
+
get isHorizontal(): boolean;
|
|
49
|
+
/** The axis `ref` names: itself, or whichever axis plays that role. */
|
|
50
|
+
resolve(ref: AxisRef): AxisChannelName | undefined;
|
|
51
|
+
/** Whether `axis` lays out distinct categories. */
|
|
52
|
+
isDiscrete(axis: AxisChannelName): boolean;
|
|
53
|
+
/** The axis a plot without inferred axes measures along: `y`. */
|
|
54
|
+
static valueOf(state: {
|
|
55
|
+
axes?: PlotAxes;
|
|
56
|
+
}): AxisChannelName;
|
|
57
|
+
/** The axis a plot without inferred axes sorts into: `x`. */
|
|
58
|
+
static categoryOf(state: {
|
|
59
|
+
axes?: PlotAxes;
|
|
60
|
+
}): AxisChannelName;
|
|
61
|
+
/** The other position axis. */
|
|
62
|
+
static other(axis: AxisChannelName): AxisChannelName;
|
|
63
|
+
/**
|
|
64
|
+
* A plot's axes from its series and `scales`. An author's `scales.*.type`
|
|
65
|
+
* always wins; otherwise each axis' values decide (strings are categories,
|
|
66
|
+
* dates are time, numbers a range). A kind needing more category axes than
|
|
67
|
+
* that gives promotes the likeliest ones - time first, then `x` before `y` -
|
|
68
|
+
* so bars over years stay bars. With one category axis, the other is the
|
|
69
|
+
* value, and the plot is horizontal when the categories run along `y`; a
|
|
70
|
+
* plot with a single channel (a histogram) is horizontal when that channel
|
|
71
|
+
* is `y`.
|
|
72
|
+
*/
|
|
73
|
+
static build({ series, scales, given, discrete }: PlotAxesSource): PlotAxes;
|
|
74
|
+
}
|
|
75
|
+
export {};
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { resolveAccessor } from '../../plots/utils/accessors';
|
|
2
|
+
import { isGapValue } from '../../plots/utils/gaps';
|
|
3
|
+
import { DISCRETE_SCALE_TYPES, TEMPORAL_SCALE_TYPES } from '../../types/layout/scales';
|
|
4
|
+
const AXES = ['x', 'y'];
|
|
5
|
+
const DISCRETE_TYPES = new Set(DISCRETE_SCALE_TYPES);
|
|
6
|
+
const TEMPORAL_TYPES = new Set(TEMPORAL_SCALE_TYPES);
|
|
7
|
+
/**
|
|
8
|
+
* What a plot's position channels are, read once from its series: which
|
|
9
|
+
* channels the author set, how each axis lays out its values, which one holds
|
|
10
|
+
* the categories and which the measured values, and so which way the marks
|
|
11
|
+
* run. Every later phase reads it instead of telling axes apart on its own.
|
|
12
|
+
*/
|
|
13
|
+
export class PlotAxes {
|
|
14
|
+
x;
|
|
15
|
+
y;
|
|
16
|
+
/** The axis whose values the plot sorts into, when it has exactly one. */
|
|
17
|
+
category;
|
|
18
|
+
/** The axis the plot measures along. */
|
|
19
|
+
value;
|
|
20
|
+
orientation;
|
|
21
|
+
/** The axes the plot kind lays out as bands: its category axes, none for a kind that needs none. */
|
|
22
|
+
bands;
|
|
23
|
+
constructor(fields) {
|
|
24
|
+
this.x = fields.x;
|
|
25
|
+
this.y = fields.y;
|
|
26
|
+
this.category = fields.category;
|
|
27
|
+
this.value = fields.value;
|
|
28
|
+
this.orientation = fields.orientation;
|
|
29
|
+
this.bands = fields.bands ?? [];
|
|
30
|
+
}
|
|
31
|
+
get isHorizontal() {
|
|
32
|
+
return this.orientation === 'horizontal';
|
|
33
|
+
}
|
|
34
|
+
/** The axis `ref` names: itself, or whichever axis plays that role. */
|
|
35
|
+
resolve(ref) {
|
|
36
|
+
return ref === 'x' || ref === 'y' ? ref : this[ref];
|
|
37
|
+
}
|
|
38
|
+
/** Whether `axis` lays out distinct categories. */
|
|
39
|
+
isDiscrete(axis) {
|
|
40
|
+
return this[axis]?.kind === 'discrete';
|
|
41
|
+
}
|
|
42
|
+
/** The axis a plot without inferred axes measures along: `y`. */
|
|
43
|
+
static valueOf(state) {
|
|
44
|
+
return state.axes?.value ?? 'y';
|
|
45
|
+
}
|
|
46
|
+
/** The axis a plot without inferred axes sorts into: `x`. */
|
|
47
|
+
static categoryOf(state) {
|
|
48
|
+
return state.axes?.category ?? 'x';
|
|
49
|
+
}
|
|
50
|
+
/** The other position axis. */
|
|
51
|
+
static other(axis) {
|
|
52
|
+
return axis === 'x' ? 'y' : 'x';
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* A plot's axes from its series and `scales`. An author's `scales.*.type`
|
|
56
|
+
* always wins; otherwise each axis' values decide (strings are categories,
|
|
57
|
+
* dates are time, numbers a range). A kind needing more category axes than
|
|
58
|
+
* that gives promotes the likeliest ones - time first, then `x` before `y` -
|
|
59
|
+
* so bars over years stay bars. With one category axis, the other is the
|
|
60
|
+
* value, and the plot is horizontal when the categories run along `y`; a
|
|
61
|
+
* plot with a single channel (a histogram) is horizontal when that channel
|
|
62
|
+
* is `y`.
|
|
63
|
+
*/
|
|
64
|
+
static build({ series, scales, given, discrete = 0 }) {
|
|
65
|
+
const axes = {};
|
|
66
|
+
for (const axis of AXES) {
|
|
67
|
+
if (!given?.[axis] && !series.some((s) => s[axis] !== undefined))
|
|
68
|
+
continue;
|
|
69
|
+
const explicit = PlotAxes.#kindOfType(scales?.[axis]?.type);
|
|
70
|
+
axes[axis] = explicit
|
|
71
|
+
? { kind: explicit, origin: 'explicit' }
|
|
72
|
+
: { kind: PlotAxes.#kindOfValues(series, axis), origin: 'inferred' };
|
|
73
|
+
}
|
|
74
|
+
const active = AXES.filter((axis) => axes[axis] !== undefined);
|
|
75
|
+
const discreteAxes = () => active.filter((axis) => axes[axis].kind === 'discrete');
|
|
76
|
+
const candidates = active
|
|
77
|
+
.filter((axis) => axes[axis].kind !== 'discrete' && axes[axis].origin !== 'explicit')
|
|
78
|
+
.sort((a, b) => Number(axes[b].kind === 'temporal') - Number(axes[a].kind === 'temporal'));
|
|
79
|
+
while (discreteAxes().length < discrete && candidates.length) {
|
|
80
|
+
axes[candidates.shift()] = { kind: 'discrete', origin: 'promoted' };
|
|
81
|
+
}
|
|
82
|
+
const found = discreteAxes();
|
|
83
|
+
const fields = { x: axes.x, y: axes.y };
|
|
84
|
+
if (discrete === 2)
|
|
85
|
+
return new PlotAxes({ ...fields, orientation: 'vertical', bands: active });
|
|
86
|
+
if (discrete === 1) {
|
|
87
|
+
if (found.length > 1) {
|
|
88
|
+
console.warn('Plot: both axes lay out categories, but this plot measures along one of them - ' +
|
|
89
|
+
'mark the value axis with a numeric scales type or pass numeric values. Defaulting the categories to x.');
|
|
90
|
+
}
|
|
91
|
+
const category = found.length === 1 ? found[0] : 'x';
|
|
92
|
+
return new PlotAxes({
|
|
93
|
+
...fields,
|
|
94
|
+
category,
|
|
95
|
+
value: PlotAxes.other(category),
|
|
96
|
+
orientation: category === 'y' ? 'horizontal' : 'vertical',
|
|
97
|
+
bands: [category]
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
if (active.length === 1) {
|
|
101
|
+
const [only] = active;
|
|
102
|
+
return new PlotAxes({
|
|
103
|
+
...fields,
|
|
104
|
+
value: PlotAxes.other(only),
|
|
105
|
+
orientation: only === 'y' ? 'horizontal' : 'vertical'
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
// Two free axes: horizontal only when `y` holds positions (categories or time) and `x` a range.
|
|
109
|
+
const horizontal = axes.x?.kind === 'continuous' && axes.y !== undefined && axes.y.kind !== 'continuous';
|
|
110
|
+
const value = horizontal ? 'x' : 'y';
|
|
111
|
+
return new PlotAxes({
|
|
112
|
+
...fields,
|
|
113
|
+
value,
|
|
114
|
+
category: found.length === 1 ? found[0] : undefined,
|
|
115
|
+
orientation: horizontal ? 'horizontal' : 'vertical'
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
/** The kind an author's scale type sets, or `undefined` when it leaves it to the values. */
|
|
119
|
+
static #kindOfType(type) {
|
|
120
|
+
if (type === undefined || type === 'auto')
|
|
121
|
+
return undefined;
|
|
122
|
+
if (DISCRETE_TYPES.has(type))
|
|
123
|
+
return 'discrete';
|
|
124
|
+
if (TEMPORAL_TYPES.has(type))
|
|
125
|
+
return 'temporal';
|
|
126
|
+
return 'continuous';
|
|
127
|
+
}
|
|
128
|
+
/** The kind one axis' values read as: any non-number makes it discrete, all dates temporal. */
|
|
129
|
+
static #kindOfValues(series, axis) {
|
|
130
|
+
let dates = 0;
|
|
131
|
+
let numbers = 0;
|
|
132
|
+
for (const s of series) {
|
|
133
|
+
const accessor = s[axis];
|
|
134
|
+
if (accessor === undefined)
|
|
135
|
+
continue;
|
|
136
|
+
const read = resolveAccessor(accessor);
|
|
137
|
+
for (const row of s.data) {
|
|
138
|
+
const v = read(row);
|
|
139
|
+
if (isGapValue(v) || v === '')
|
|
140
|
+
continue;
|
|
141
|
+
if (typeof v === 'number')
|
|
142
|
+
numbers++;
|
|
143
|
+
else if (v instanceof Date)
|
|
144
|
+
dates++;
|
|
145
|
+
else
|
|
146
|
+
return 'discrete';
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return dates > 0 && numbers === 0 ? 'temporal' : 'continuous';
|
|
150
|
+
}
|
|
151
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { Series } from '../../types/plots/data/common';
|
|
2
|
+
import type { FacetPanel, FacetStageState, PhaseStage } from '../../types/phases';
|
|
3
|
+
/** The state fields narrowing to some panels filters. */
|
|
4
|
+
type NarrowableState = FacetStageState & {
|
|
5
|
+
resolvedSeries?: Series<Record<string, unknown>>[];
|
|
6
|
+
flat?: unknown[];
|
|
7
|
+
scopedGroups?: {
|
|
8
|
+
panel?: string;
|
|
9
|
+
}[];
|
|
10
|
+
groupedSeries?: {
|
|
11
|
+
series: {
|
|
12
|
+
panel?: string;
|
|
13
|
+
};
|
|
14
|
+
}[];
|
|
15
|
+
processedData?: {
|
|
16
|
+
data: Record<string | symbol, unknown>[];
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
/** The field a processed row carries its facet panel under. */
|
|
20
|
+
export declare const PANEL_KEY = "__panel";
|
|
21
|
+
/**
|
|
22
|
+
* The "facet" phase: the panels the plot's `facet` lays its rows out in, and
|
|
23
|
+
* which panel each row belongs to. It runs first, so the "data" phase builds
|
|
24
|
+
* every series already split by panel. A plot drawn from pre-built `series`
|
|
25
|
+
* has no rows to split, so its facet is ignored.
|
|
26
|
+
*/
|
|
27
|
+
export declare class FacetPhase<TState extends FacetStageState> implements PhaseStage<TState> {
|
|
28
|
+
readonly phase: "facet";
|
|
29
|
+
run: (state: TState) => TState;
|
|
30
|
+
/** The id of a series' part in one facet panel. */
|
|
31
|
+
static buildPanelSeriesId(panel: string, name: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* Each series split into one per facet panel, panel by panel: the same
|
|
34
|
+
* `name` (and so the same color and legend entry), its own `id` and `panel`,
|
|
35
|
+
* and only that panel's rows. A series with no rows in a panel has no part there.
|
|
36
|
+
*/
|
|
37
|
+
static splitSeriesByPanel<S extends Series<Record<string, unknown>>>(series: S[], panels: FacetPanel[], panelOf: NonNullable<FacetStageState['panelOf']>): S[];
|
|
38
|
+
/** A state narrowed to one panel's series, rows and processed rows. */
|
|
39
|
+
static narrowToPanel<TState extends NarrowableState>(state: TState, panel: string): TState;
|
|
40
|
+
/** A state narrowed to some panels' series, rows and processed rows. */
|
|
41
|
+
static narrowToPanels<TState extends NarrowableState>(state: TState, panels: readonly string[]): TState;
|
|
42
|
+
/**
|
|
43
|
+
* One facet panel's part of a run of the data phases over every panel: its
|
|
44
|
+
* series, rows, processed rows and markers, without the facet itself, ready
|
|
45
|
+
* for the phases each panel runs on its own.
|
|
46
|
+
*/
|
|
47
|
+
static buildPanelState<TState extends FacetStageState & {
|
|
48
|
+
resolvedSeries?: Series<Record<string, unknown>>[];
|
|
49
|
+
markers?: object[];
|
|
50
|
+
}>(state: TState, panel: string): Omit<TState, 'facet' | 'panels' | 'panelOf'>;
|
|
51
|
+
}
|
|
52
|
+
export {};
|