@fundar/data-chart-telling 0.0.63 → 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 -558
- package/dist/configuration/config.svelte.d.ts +5 -5
- package/dist/configuration/config.svelte.js +133 -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 +433 -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 +365 -335
- 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 +39 -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 +158 -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 +258 -54
- 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,157 @@
|
|
|
1
|
+
import { resolveAccessor } from '../../plots/utils/accessors';
|
|
2
|
+
import { isGapValue } from '../../plots/utils/gaps';
|
|
3
|
+
import { MarkerAxisValues } from './MarkerAxisValues';
|
|
4
|
+
import { PlotAxes } from '../data/PlotAxes';
|
|
5
|
+
import { DISCRETE_SCALE_TYPES } from '../../types/layout/scales';
|
|
6
|
+
const AXES = ['x', 'y'];
|
|
7
|
+
const POSITION_CHANNELS = {
|
|
8
|
+
x: ['x', 'x1', 'x2'],
|
|
9
|
+
y: ['y', 'y1', 'y2']
|
|
10
|
+
};
|
|
11
|
+
const DISCRETE_TYPES = new Set(DISCRETE_SCALE_TYPES);
|
|
12
|
+
/** The values as finite numbers, or `undefined` when any isn't a number (a band or date axis). */
|
|
13
|
+
function numeric(values) {
|
|
14
|
+
const present = values.filter((v) => v != null && v !== '');
|
|
15
|
+
if (!present.every((v) => typeof v === 'number'))
|
|
16
|
+
return undefined;
|
|
17
|
+
return present.filter(Number.isFinite);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The shared "scales" phase. Each axis the kind lays out as categories
|
|
21
|
+
* (`state.axes.bands`) becomes a band scale, padded and ordered as the kind
|
|
22
|
+
* says; each `symmetric` axis reaches as far below zero as above it; and an
|
|
23
|
+
* unpinned numeric axis grows to cover derived markers and the ranges the
|
|
24
|
+
* transforms gave the rows - from zero on the axes `zero` names. The author's
|
|
25
|
+
* `scales` always win, and a kind adds its own on top (`defaults`, `fit`, `extend`).
|
|
26
|
+
*/
|
|
27
|
+
export class ScalesPhase {
|
|
28
|
+
phase = 'scales';
|
|
29
|
+
#options;
|
|
30
|
+
constructor(options = {}) {
|
|
31
|
+
this.#options = options;
|
|
32
|
+
}
|
|
33
|
+
/** The axes whose marks grow from zero, in this state. */
|
|
34
|
+
zeroAxes(state) {
|
|
35
|
+
return ScalesPhase.#axesOf(this.#options.zero, state);
|
|
36
|
+
}
|
|
37
|
+
/** The axes that reach as far below zero as above it, in this state. */
|
|
38
|
+
symmetricAxes(state) {
|
|
39
|
+
return ScalesPhase.#axesOf(this.#options.symmetric, state);
|
|
40
|
+
}
|
|
41
|
+
/** Whether the kind keeps its categories in the order the data gives them. */
|
|
42
|
+
get keepsDataOrder() {
|
|
43
|
+
return this.#options.bandOrder === 'data';
|
|
44
|
+
}
|
|
45
|
+
run = (state, ctx) => {
|
|
46
|
+
const options = this.#options;
|
|
47
|
+
const { axes, processedData, markers = [] } = state;
|
|
48
|
+
const defaults = options.defaults?.(state, ctx) ?? {};
|
|
49
|
+
const symmetric = new Set(this.symmetricAxes(state));
|
|
50
|
+
const zero = new Set(this.zeroAxes(state));
|
|
51
|
+
const scales = { ...state.scales };
|
|
52
|
+
for (const axis of AXES) {
|
|
53
|
+
const own = ScalesPhase.#defaultsOf(defaults, axis, axes);
|
|
54
|
+
if (axes?.bands.includes(axis)) {
|
|
55
|
+
scales[axis] = this.#band(scales[axis], own, processedData, axis);
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
// The value axis of a plot with categories is never one itself, whatever it was marked as.
|
|
59
|
+
const stripType = axis === axes?.value &&
|
|
60
|
+
axes.bands.length > 0 &&
|
|
61
|
+
DISCRETE_TYPES.has(scales[axis]?.type ?? '');
|
|
62
|
+
if (Object.keys(own).length || stripType) {
|
|
63
|
+
const given = { ...scales[axis] };
|
|
64
|
+
if (stripType)
|
|
65
|
+
delete given.type;
|
|
66
|
+
scales[axis] = { ...own, ...given };
|
|
67
|
+
}
|
|
68
|
+
if (symmetric.has(axis) && !scales[axis]?.domain) {
|
|
69
|
+
const reach = ScalesPhase.#reachOf(state, axis);
|
|
70
|
+
scales[axis] = { ...scales[axis], domain: [-reach, reach] };
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const fitted = options.fit?.({ ...state, scales }, ctx) ?? {};
|
|
74
|
+
for (const axis of AXES) {
|
|
75
|
+
if (fitted[axis])
|
|
76
|
+
scales[axis] = { ...scales[axis], ...fitted[axis] };
|
|
77
|
+
}
|
|
78
|
+
for (const axis of AXES) {
|
|
79
|
+
if (axes?.bands.includes(axis) || scales[axis]?.domain)
|
|
80
|
+
continue;
|
|
81
|
+
const derived = MarkerAxisValues.of(markers, axis);
|
|
82
|
+
const ranged = POSITION_CHANNELS[axis]
|
|
83
|
+
.slice(1)
|
|
84
|
+
.some((name) => processedData?.channels[name] !== undefined);
|
|
85
|
+
// A transform's own output on an axis from zero (a bin's count) has no baseline row to reach it.
|
|
86
|
+
const aggregated = (processedData?.transforms.length ?? 0) > 0 && zero.has(axis);
|
|
87
|
+
if (!derived.length && !ranged && !aggregated)
|
|
88
|
+
continue;
|
|
89
|
+
const own = numeric(ScalesPhase.processedValues(processedData, axis));
|
|
90
|
+
if (!own)
|
|
91
|
+
continue;
|
|
92
|
+
const values = [...own, ...derived, ...(zero.has(axis) ? [0] : [])];
|
|
93
|
+
scales[axis] = {
|
|
94
|
+
...scales[axis],
|
|
95
|
+
domain: [Math.min(...values), Math.max(...values)],
|
|
96
|
+
nice: scales[axis]?.nice ?? true
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
const next = { ...state, scales };
|
|
100
|
+
return options.extend ? options.extend(next, ctx) : next;
|
|
101
|
+
};
|
|
102
|
+
/** A category axis as a band scale: the kind's options under the author's, in the order the kind asks for. */
|
|
103
|
+
#band(author, own, processed, axis) {
|
|
104
|
+
const given = author ?? {};
|
|
105
|
+
const type = given.type === undefined || given.type === 'auto' || given.type === 'categorical'
|
|
106
|
+
? 'band'
|
|
107
|
+
: given.type;
|
|
108
|
+
const band = { ...own, ...given, type };
|
|
109
|
+
// A padding the author gives replaces the kind's own inner and outer ones.
|
|
110
|
+
if (given.padding !== undefined) {
|
|
111
|
+
if (own.paddingInner !== undefined && given.paddingInner === undefined) {
|
|
112
|
+
band.paddingInner = given.padding;
|
|
113
|
+
}
|
|
114
|
+
if (own.paddingOuter !== undefined && given.paddingOuter === undefined) {
|
|
115
|
+
band.paddingOuter = given.padding;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (this.keepsDataOrder && !band.domain) {
|
|
119
|
+
band.domain = [...new Set(ScalesPhase.processedValues(processed, axis))];
|
|
120
|
+
}
|
|
121
|
+
return band;
|
|
122
|
+
}
|
|
123
|
+
/** Every value the plot's own processed rows sit at on one axis. */
|
|
124
|
+
static processedValues(processed, axis) {
|
|
125
|
+
if (!processed)
|
|
126
|
+
return [];
|
|
127
|
+
return POSITION_CHANNELS[axis].flatMap((name) => {
|
|
128
|
+
const channel = processed.channels[name];
|
|
129
|
+
if (channel === undefined)
|
|
130
|
+
return [];
|
|
131
|
+
const read = resolveAccessor(channel);
|
|
132
|
+
return processed.data.map((row) => read(row));
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
/** The axes `refs` name, by name or by the role they play in this state. */
|
|
136
|
+
static #axesOf(refs, state) {
|
|
137
|
+
return (refs ?? []).map((ref) => ref === 'value'
|
|
138
|
+
? PlotAxes.valueOf(state)
|
|
139
|
+
: ref === 'category'
|
|
140
|
+
? PlotAxes.categoryOf(state)
|
|
141
|
+
: ref);
|
|
142
|
+
}
|
|
143
|
+
/** The kind's options for one axis: those for its role, then those for it by name. */
|
|
144
|
+
static #defaultsOf(defaults, axis, axes) {
|
|
145
|
+
const role = axis === axes?.value ? 'value' : axis === axes?.category ? 'category' : undefined;
|
|
146
|
+
return { ...(role ? defaults[role] : undefined), ...defaults[axis] };
|
|
147
|
+
}
|
|
148
|
+
/** How far an axis reaches from zero: the largest magnitude its rows, and the gaps filled in between them, sit at. */
|
|
149
|
+
static #reachOf(state, axis) {
|
|
150
|
+
const rows = ScalesPhase.processedValues(state.processedData, axis)
|
|
151
|
+
.filter((v) => !isGapValue(v))
|
|
152
|
+
.map((v) => Math.abs(Number(v)));
|
|
153
|
+
const filled = [...(state.gapFillMaps?.values() ?? [])].flatMap((fills) => [...fills.values()].map((fill) => Math.abs(fill.value)));
|
|
154
|
+
const reach = Math.max(...[...rows, ...filled].filter(Number.isFinite));
|
|
155
|
+
return Number.isFinite(reach) ? reach : 1;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { ScalesPhase } from '../scales/ScalesPhase';
|
|
2
|
+
import type { PlotAxes } from '../data/PlotAxes';
|
|
3
|
+
import type { AxisChannelName } from '../../types/layout/mapping';
|
|
4
|
+
import type { FacetStageState, PhaseStage, ProcessedData, SharedAxisValues, SharedScalesOptions } from '../../types/phases';
|
|
5
|
+
import type { AxisBasedScalesConfig } from '../../types/layout/scales';
|
|
6
|
+
/** One channel's shared scale: its domain, and whether svelteplot may still round it. */
|
|
7
|
+
type SharedScale = {
|
|
8
|
+
domain: unknown[];
|
|
9
|
+
nice?: boolean;
|
|
10
|
+
} | undefined;
|
|
11
|
+
/** The state the "shared scales" step reads: a data run's output, over every panel. */
|
|
12
|
+
type SharedScalesState = FacetStageState & {
|
|
13
|
+
axes?: PlotAxes;
|
|
14
|
+
processedData?: ProcessedData;
|
|
15
|
+
markers?: object[];
|
|
16
|
+
sharedScales?: Record<string, AxisBasedScalesConfig<never>>;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* The "sharedScales" phase, the last of the data phases: the figure-wide part
|
|
20
|
+
* of scales - the domains every slice shares, as `sharedScales` keyed by facet panel
|
|
21
|
+
* (`''` for the whole run without a facet). Each shared x/y domain spans
|
|
22
|
+
* where the sharing panels' rows and markers sit (as bands, or from zero, as
|
|
23
|
+
* the kind's axes and "scales" say), grouped by `facet.scales`; each `fromScalesPhase` channel
|
|
24
|
+
* takes the domain the kind's own "scales" phase sets over
|
|
25
|
+
* those panels. A panel's own "scales" phase only sees its rows, so this
|
|
26
|
+
* can't happen there. Without options, a kind still shares its domains: it just
|
|
27
|
+
* has no bands and nothing that starts from zero.
|
|
28
|
+
*/
|
|
29
|
+
export declare class SharedScalesPhase<TState extends SharedScalesState, TCtx> implements PhaseStage<TState, TCtx> {
|
|
30
|
+
#private;
|
|
31
|
+
readonly phase: "sharedScales";
|
|
32
|
+
constructor(options: SharedScalesOptions | undefined, scales?: ScalesPhase<any, any>);
|
|
33
|
+
run: (state: TState, ctx: TCtx) => TState;
|
|
34
|
+
/**
|
|
35
|
+
* One axis' domain over some slices: sorted values on a band axis, `[min, max]`
|
|
36
|
+
* otherwise, or `undefined`. A numeric extent is niced here, once, so every
|
|
37
|
+
* slice gets the exact same domain - svelteplot's own `nice` rounds by a tick
|
|
38
|
+
* count derived from each panel's height, which over-rounds short panels and
|
|
39
|
+
* can disagree between panels of different heights.
|
|
40
|
+
*/
|
|
41
|
+
static buildSharedAxisScale(slices: SharedAxisValues[], axis: AxisChannelName): SharedScale;
|
|
42
|
+
/**
|
|
43
|
+
* Where one panel's rows and markers sit on each axis, read off a pipeline
|
|
44
|
+
* run over every panel - or, without a `panel`, where all of them sit.
|
|
45
|
+
*/
|
|
46
|
+
static buildPanelAxisValues(state: {
|
|
47
|
+
processedData?: ProcessedData;
|
|
48
|
+
markers?: object[];
|
|
49
|
+
}, panel: string | undefined, layout?: {
|
|
50
|
+
band?: AxisChannelName[];
|
|
51
|
+
zero?: AxisChannelName[];
|
|
52
|
+
dataOrder?: boolean;
|
|
53
|
+
}): SharedAxisValues;
|
|
54
|
+
}
|
|
55
|
+
export {};
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { nice as niceExtent } from 'd3-array';
|
|
2
|
+
import { ScalesPhase } from '../scales/ScalesPhase';
|
|
3
|
+
import { Pipeline } from '../Pipeline';
|
|
4
|
+
import { PANEL_KEY, FacetPhase } from '../facet/FacetPhase';
|
|
5
|
+
import { isFacetWrap } from '../../layout/facet/config';
|
|
6
|
+
import { MarkerAxisValues } from '../scales/MarkerAxisValues';
|
|
7
|
+
/** Natural ascending order, as svelteplot sorts a band domain. */
|
|
8
|
+
function ascending(a, b) {
|
|
9
|
+
return a < b ? -1 : a > b ? 1 : 0;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* The "sharedScales" phase, the last of the data phases: the figure-wide part
|
|
13
|
+
* of scales - the domains every slice shares, as `sharedScales` keyed by facet panel
|
|
14
|
+
* (`''` for the whole run without a facet). Each shared x/y domain spans
|
|
15
|
+
* where the sharing panels' rows and markers sit (as bands, or from zero, as
|
|
16
|
+
* the kind's axes and "scales" say), grouped by `facet.scales`; each `fromScalesPhase` channel
|
|
17
|
+
* takes the domain the kind's own "scales" phase sets over
|
|
18
|
+
* those panels. A panel's own "scales" phase only sees its rows, so this
|
|
19
|
+
* can't happen there. Without options, a kind still shares its domains: it just
|
|
20
|
+
* has no bands and nothing that starts from zero.
|
|
21
|
+
*/
|
|
22
|
+
export class SharedScalesPhase {
|
|
23
|
+
phase = 'sharedScales';
|
|
24
|
+
#options;
|
|
25
|
+
#kindScales;
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
27
|
+
#scales;
|
|
28
|
+
constructor(options,
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
30
|
+
scales = new ScalesPhase()) {
|
|
31
|
+
this.#options = options;
|
|
32
|
+
this.#scales = scales;
|
|
33
|
+
this.#kindScales = new Pipeline([scales]);
|
|
34
|
+
}
|
|
35
|
+
run = (state, ctx) => {
|
|
36
|
+
const facet = state.facet;
|
|
37
|
+
const panels = facet ? (state.panels ?? []) : [];
|
|
38
|
+
// A symmetric axis has no domain but the one the kind's "scales" phase gives it.
|
|
39
|
+
const fromPhase = new Set([
|
|
40
|
+
...(this.#options?.fromScalesPhase ?? []),
|
|
41
|
+
...this.#scales.symmetricAxes(state)
|
|
42
|
+
]);
|
|
43
|
+
const layout = {
|
|
44
|
+
band: [...(state.axes?.bands ?? [])],
|
|
45
|
+
zero: this.#scales.zeroAxes(state),
|
|
46
|
+
dataOrder: this.#scales.keepsDataOrder
|
|
47
|
+
};
|
|
48
|
+
const channels = fromPhase.has('color') ? ['x', 'y', 'color'] : ['x', 'y'];
|
|
49
|
+
/** The channel's domain over `members` panels, or every row without them. */
|
|
50
|
+
const domainOver = (channel, members) => {
|
|
51
|
+
if (fromPhase.has(channel)) {
|
|
52
|
+
const scoped = members ? FacetPhase.narrowToPanels(state, members) : state;
|
|
53
|
+
const scales = this.#kindScales.run(scoped, ctx).scales;
|
|
54
|
+
const domain = scales?.[channel]?.domain;
|
|
55
|
+
return domain === undefined ? undefined : { domain };
|
|
56
|
+
}
|
|
57
|
+
if (channel === 'color')
|
|
58
|
+
return undefined;
|
|
59
|
+
const values = members
|
|
60
|
+
? members.map((panel) => SharedScalesPhase.buildPanelAxisValues(state, panel, layout))
|
|
61
|
+
: [SharedScalesPhase.buildPanelAxisValues(state, undefined, layout)];
|
|
62
|
+
return SharedScalesPhase.buildSharedAxisScale(values, channel);
|
|
63
|
+
};
|
|
64
|
+
const cache = new Map();
|
|
65
|
+
const scalesOf = (place) => {
|
|
66
|
+
const out = {};
|
|
67
|
+
for (const channel of channels) {
|
|
68
|
+
const line = SharedScalesPhase.#sharingLine(facet, channel);
|
|
69
|
+
if (!line)
|
|
70
|
+
continue;
|
|
71
|
+
const key = line === 'all' ? '' : (place?.[line] ?? '');
|
|
72
|
+
const cacheKey = `${channel}\u0000${key}`;
|
|
73
|
+
if (!cache.has(cacheKey)) {
|
|
74
|
+
const members = panels.length
|
|
75
|
+
? panels.filter((p) => line === 'all' || p[line] === key).map((p) => p.key)
|
|
76
|
+
: undefined;
|
|
77
|
+
// Every panel sharing a phase-derived domain is the whole run, as it was built.
|
|
78
|
+
const whole = line === 'all' && fromPhase.has(channel);
|
|
79
|
+
cache.set(cacheKey, domainOver(channel, whole ? undefined : members));
|
|
80
|
+
}
|
|
81
|
+
const scale = cache.get(cacheKey);
|
|
82
|
+
if (scale)
|
|
83
|
+
out[channel] = scale;
|
|
84
|
+
}
|
|
85
|
+
return Object.keys(out).length ? out : undefined;
|
|
86
|
+
};
|
|
87
|
+
const sharedScales = {};
|
|
88
|
+
const add = (key, scales) => {
|
|
89
|
+
if (scales)
|
|
90
|
+
sharedScales[key] = scales;
|
|
91
|
+
};
|
|
92
|
+
if (panels.length)
|
|
93
|
+
for (const panel of panels)
|
|
94
|
+
add(panel.key, scalesOf(panel));
|
|
95
|
+
else
|
|
96
|
+
add('', scalesOf(undefined));
|
|
97
|
+
return { ...state, sharedScales };
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* One axis' domain over some slices: sorted values on a band axis, `[min, max]`
|
|
101
|
+
* otherwise, or `undefined`. A numeric extent is niced here, once, so every
|
|
102
|
+
* slice gets the exact same domain - svelteplot's own `nice` rounds by a tick
|
|
103
|
+
* count derived from each panel's height, which over-rounds short panels and
|
|
104
|
+
* can disagree between panels of different heights.
|
|
105
|
+
*/
|
|
106
|
+
static buildSharedAxisScale(slices, axis) {
|
|
107
|
+
const values = slices
|
|
108
|
+
.flatMap((slice) => slice[axis])
|
|
109
|
+
.filter((v) => v != null && v !== '' && !(typeof v === 'number' && !Number.isFinite(v)));
|
|
110
|
+
if (!values.length)
|
|
111
|
+
return undefined;
|
|
112
|
+
if (slices.some((slice) => slice.band.includes(axis))) {
|
|
113
|
+
const distinct = [...new Set(values)];
|
|
114
|
+
return {
|
|
115
|
+
domain: slices.some((slice) => slice.dataOrder) ? distinct : distinct.sort(ascending)
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
if (values.every((v) => typeof v === 'number')) {
|
|
119
|
+
const numbers = slices.some((slice) => slice.zero.includes(axis))
|
|
120
|
+
? [...values, 0]
|
|
121
|
+
: values;
|
|
122
|
+
return { domain: niceExtent(Math.min(...numbers), Math.max(...numbers), 10), nice: false };
|
|
123
|
+
}
|
|
124
|
+
if (values.every((v) => v instanceof Date)) {
|
|
125
|
+
const times = values.map((d) => +d);
|
|
126
|
+
return { domain: [new Date(Math.min(...times)), new Date(Math.max(...times))] };
|
|
127
|
+
}
|
|
128
|
+
return { domain: [...new Set(values)].sort(ascending) };
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Where one panel's rows and markers sit on each axis, read off a pipeline
|
|
132
|
+
* run over every panel - or, without a `panel`, where all of them sit.
|
|
133
|
+
*/
|
|
134
|
+
static buildPanelAxisValues(state, panel, layout = {}) {
|
|
135
|
+
const inPanel = (tagged) => panel === undefined || tagged === panel;
|
|
136
|
+
const processed = state.processedData && {
|
|
137
|
+
...state.processedData,
|
|
138
|
+
data: state.processedData.data.filter((row) => inPanel(row[PANEL_KEY]))
|
|
139
|
+
};
|
|
140
|
+
const markers = (state.markers ?? []).filter((marker) => inPanel(marker[PANEL_KEY]));
|
|
141
|
+
const values = (axis) => [
|
|
142
|
+
...ScalesPhase.processedValues(processed, axis),
|
|
143
|
+
...MarkerAxisValues.of(markers, axis)
|
|
144
|
+
];
|
|
145
|
+
return {
|
|
146
|
+
x: values('x'),
|
|
147
|
+
y: values('y'),
|
|
148
|
+
band: layout.band ?? [],
|
|
149
|
+
zero: layout.zero ?? [],
|
|
150
|
+
dataOrder: layout.dataOrder
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Which slices share a channel's domain under `facet.scales`: every one, the
|
|
155
|
+
* panels on one column (x) or row (y) of a `rows`/`cols` grid, or none (a
|
|
156
|
+
* free axis of a wrapped facet). Color is shared by every slice.
|
|
157
|
+
*/
|
|
158
|
+
static #sharingLine(facet, channel) {
|
|
159
|
+
if (!facet || channel === 'color')
|
|
160
|
+
return 'all';
|
|
161
|
+
const mode = facet.scales ?? 'shared';
|
|
162
|
+
if (mode !== 'free' && mode !== `free-${channel}`)
|
|
163
|
+
return 'all';
|
|
164
|
+
if (isFacetWrap(facet))
|
|
165
|
+
return null;
|
|
166
|
+
return channel === 'x' ? 'col' : 'row';
|
|
167
|
+
}
|
|
168
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { ProcessedData } from '../../types/phases';
|
|
2
|
+
import type { ScopedMarkerGroup } from '../../types/layout/geometry';
|
|
3
|
+
type Row = Record<string, unknown>;
|
|
4
|
+
/** The plot's own author markers, made ready for the rest of the pipeline. */
|
|
5
|
+
export declare class AuthorMarkers {
|
|
6
|
+
#private;
|
|
7
|
+
/**
|
|
8
|
+
* Prepares a plot's own author markers for the rest of its pipeline: inherits
|
|
9
|
+
* the plot's grouping and default color first (a transform's `z` defaults to
|
|
10
|
+
* the grouping), splits a segment-scoped marker into one marker per segment of
|
|
11
|
+
* its series, then runs each marker's own transforms over its rows - its
|
|
12
|
+
* segment's or series' rows when it's scoped to one, the plot's rows otherwise.
|
|
13
|
+
*/
|
|
14
|
+
static prepare<T extends {
|
|
15
|
+
type: string;
|
|
16
|
+
component?: unknown;
|
|
17
|
+
props?: unknown;
|
|
18
|
+
}>(markers: T[], plot: {
|
|
19
|
+
grouping?: unknown;
|
|
20
|
+
color?: unknown;
|
|
21
|
+
defaultColor?: string;
|
|
22
|
+
flat: Row[];
|
|
23
|
+
resolvedSeries?: {
|
|
24
|
+
name: string;
|
|
25
|
+
data: Row[];
|
|
26
|
+
}[];
|
|
27
|
+
scopedGroups?: ScopedMarkerGroup<Row>[];
|
|
28
|
+
}): T[];
|
|
29
|
+
/**
|
|
30
|
+
* A marker that draws the plot's rows (it sets no `data`) draws them as the
|
|
31
|
+
* plot does, after the plot's own transforms: it starts from the plot's
|
|
32
|
+
* processed rows - its series' rows when scoped to one - and takes the
|
|
33
|
+
* processed channels for any position it leaves unset. A position it sets
|
|
34
|
+
* itself reads that field of the processed rows (every source field is kept).
|
|
35
|
+
* Its `grouping` defaults to the plot's series, so it splits, and its own
|
|
36
|
+
* transforms run, per series. A plot without transforms draws its rows as
|
|
37
|
+
* they are, so its markers are left as is, as is a kind that draws no rows.
|
|
38
|
+
*/
|
|
39
|
+
static withProcessedRows<T extends {
|
|
40
|
+
type: string;
|
|
41
|
+
}>(marker: T, processed?: ProcessedData): T;
|
|
42
|
+
}
|
|
43
|
+
export {};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { MarkerKinds } from '../../markers/MarkerKinds';
|
|
2
|
+
import { Transforms } from '../transforms/Transforms';
|
|
3
|
+
import { MarkerGrouping } from './MarkerGrouping';
|
|
4
|
+
import { SERIES_ID_KEY, SERIES_KEY } from '../transforms/TransformsPhase';
|
|
5
|
+
/** Kinds that handle `scope: 'segment'` themselves, at render time. */
|
|
6
|
+
const RENDER_SCOPED_KINDS = new Set(['component', 'hover']);
|
|
7
|
+
/** The plot's own author markers, made ready for the rest of the pipeline. */
|
|
8
|
+
export class AuthorMarkers {
|
|
9
|
+
/**
|
|
10
|
+
* Prepares a plot's own author markers for the rest of its pipeline: inherits
|
|
11
|
+
* the plot's grouping and default color first (a transform's `z` defaults to
|
|
12
|
+
* the grouping), splits a segment-scoped marker into one marker per segment of
|
|
13
|
+
* its series, then runs each marker's own transforms over its rows - its
|
|
14
|
+
* segment's or series' rows when it's scoped to one, the plot's rows otherwise.
|
|
15
|
+
*/
|
|
16
|
+
static prepare(markers, plot) {
|
|
17
|
+
return MarkerGrouping.inheritPlotGrouping(markers, plot).flatMap((marker) => {
|
|
18
|
+
const scope = marker.series;
|
|
19
|
+
const seriesRows = typeof scope === 'string'
|
|
20
|
+
? plot.resolvedSeries?.find((s) => s.name === scope)?.data
|
|
21
|
+
: undefined;
|
|
22
|
+
const rows = seriesRows ?? plot.flat;
|
|
23
|
+
return AuthorMarkers.#splitBySegment(marker, rows, plot.scopedGroups).map((own) => Transforms.resolve(own, rows));
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* One marker per segment of a `scope: 'segment'` marker's series, each over
|
|
28
|
+
* that segment's rows and in its color. Any other marker is kept whole.
|
|
29
|
+
*/
|
|
30
|
+
static #splitBySegment(marker, rows, scopedGroups = []) {
|
|
31
|
+
const own = marker;
|
|
32
|
+
if (own.scope !== 'segment' || RENDER_SCOPED_KINDS.has(own.type))
|
|
33
|
+
return [marker];
|
|
34
|
+
const group = scopedGroups.find((g) => g.name === own.series);
|
|
35
|
+
if (!group || group.segments.length === 0)
|
|
36
|
+
return [marker];
|
|
37
|
+
return group.segments
|
|
38
|
+
.map((seg) => ({ seg, data: (own.data ?? rows).filter((row) => seg.match(row)) }))
|
|
39
|
+
.filter(({ data }) => data.length > 0)
|
|
40
|
+
.map(({ seg, data }) => MarkerGrouping.withSeriesColor({ ...own, data }, seg.color));
|
|
41
|
+
}
|
|
42
|
+
/** Whether a marker's kind draws the plot's rows when it sets no `data`. */
|
|
43
|
+
static #drawsRows(type) {
|
|
44
|
+
return MarkerKinds.of(type)?.drawsRows ?? false;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* A marker that draws the plot's rows (it sets no `data`) draws them as the
|
|
48
|
+
* plot does, after the plot's own transforms: it starts from the plot's
|
|
49
|
+
* processed rows - its series' rows when scoped to one - and takes the
|
|
50
|
+
* processed channels for any position it leaves unset. A position it sets
|
|
51
|
+
* itself reads that field of the processed rows (every source field is kept).
|
|
52
|
+
* Its `grouping` defaults to the plot's series, so it splits, and its own
|
|
53
|
+
* transforms run, per series. A plot without transforms draws its rows as
|
|
54
|
+
* they are, so its markers are left as is, as is a kind that draws no rows.
|
|
55
|
+
*/
|
|
56
|
+
static withProcessedRows(marker, processed) {
|
|
57
|
+
const own = marker;
|
|
58
|
+
if (own.data !== undefined ||
|
|
59
|
+
!AuthorMarkers.#drawsRows(own.type) ||
|
|
60
|
+
!processed?.transforms.length) {
|
|
61
|
+
return marker;
|
|
62
|
+
}
|
|
63
|
+
const rows = typeof own.series === 'string'
|
|
64
|
+
? processed.data.filter((row) => row[SERIES_KEY] === own.series)
|
|
65
|
+
: processed.data;
|
|
66
|
+
const channels = Object.fromEntries(Object.entries(processed.channels).filter(([key]) => own[key] === undefined));
|
|
67
|
+
return { ...own, ...channels, data: rows, grouping: own.grouping ?? SERIES_ID_KEY };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
type MarkerLike = {
|
|
2
|
+
type: string;
|
|
3
|
+
series?: unknown;
|
|
4
|
+
color?: unknown;
|
|
5
|
+
fill?: unknown;
|
|
6
|
+
styles?: Record<string, unknown>;
|
|
7
|
+
bar?: object;
|
|
8
|
+
};
|
|
9
|
+
/** How a plot's own grouping and colors reach the markers its author adds. */
|
|
10
|
+
export declare class MarkerGrouping {
|
|
11
|
+
#private;
|
|
12
|
+
/**
|
|
13
|
+
* Gives a marker one flat color (its `styles`, or a box's `bar.fill`) when it
|
|
14
|
+
* sets none of its own: a series color, the plot's default series color.
|
|
15
|
+
* Dots take `dotFill`/`dotStroke`, line-only kinds take `stroke`, text takes
|
|
16
|
+
* `fill` (a stroke would outline its glyphs), filled kinds take both so their
|
|
17
|
+
* outline matches their fill.
|
|
18
|
+
*/
|
|
19
|
+
static withSeriesColor<TMarker extends MarkerLike>(marker: TMarker, color: string | undefined): TMarker;
|
|
20
|
+
/**
|
|
21
|
+
* Gives each author marker the plot's own color rules by default:
|
|
22
|
+
*
|
|
23
|
+
* - A grouped plot (`color`/`grouping`) splits its markers the same way. A
|
|
24
|
+
* grouping-capable marker draws one shape per group, and a color-capable
|
|
25
|
+
* marker colors each row by its group's color.
|
|
26
|
+
* - An ungrouped plot's unscoped marker takes the plot's default series color.
|
|
27
|
+
*
|
|
28
|
+
* A marker's own `grouping`/`color` or flat color always wins. Scoped markers
|
|
29
|
+
* (`series`) are colored by their own series at render time, not here.
|
|
30
|
+
*/
|
|
31
|
+
static inheritPlotGrouping<TMarker extends {
|
|
32
|
+
type: string;
|
|
33
|
+
}>(markers: TMarker[], plot: {
|
|
34
|
+
grouping?: unknown;
|
|
35
|
+
color?: unknown;
|
|
36
|
+
defaultColor?: string;
|
|
37
|
+
}): TMarker[];
|
|
38
|
+
/**
|
|
39
|
+
* Gives a scoped hover marker its series color through its own `dot` and
|
|
40
|
+
* `text` styles, the way `withSeriesColor` does for other markers. A style the
|
|
41
|
+
* marker sets itself keeps its own color.
|
|
42
|
+
*/
|
|
43
|
+
static withHoverSeriesColor<T extends {
|
|
44
|
+
dot?: object;
|
|
45
|
+
text?: object;
|
|
46
|
+
}>(marker: T, color: string | undefined): T;
|
|
47
|
+
}
|
|
48
|
+
export {};
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/** Marker kinds that split their rows into separate shapes per `grouping`. */
|
|
2
|
+
const GROUPING_KINDS = new Set([
|
|
3
|
+
'area',
|
|
4
|
+
'density',
|
|
5
|
+
'line',
|
|
6
|
+
'hull',
|
|
7
|
+
'trail',
|
|
8
|
+
'delaunayLink',
|
|
9
|
+
'delaunayMesh',
|
|
10
|
+
'voronoi',
|
|
11
|
+
'voronoiMesh'
|
|
12
|
+
]);
|
|
13
|
+
/** Marker kinds whose per-row `color` resolves through the plot's own color scale. */
|
|
14
|
+
const COLOR_KINDS = new Set([
|
|
15
|
+
'area',
|
|
16
|
+
'bar',
|
|
17
|
+
'cell',
|
|
18
|
+
'density',
|
|
19
|
+
'delaunayLink',
|
|
20
|
+
'delaunayMesh',
|
|
21
|
+
'dot',
|
|
22
|
+
'hull',
|
|
23
|
+
'line',
|
|
24
|
+
'rect',
|
|
25
|
+
'tick',
|
|
26
|
+
'trail',
|
|
27
|
+
'voronoi',
|
|
28
|
+
'voronoiMesh',
|
|
29
|
+
'waffle'
|
|
30
|
+
]);
|
|
31
|
+
/** Kinds that draw only a line, so their flat color is `stroke` alone. */
|
|
32
|
+
const LINE_KINDS = new Set(['line', 'regression', 'bollinger', 'delta']);
|
|
33
|
+
/** Flat color style keys - when a marker sets one, it keeps that color instead of inheriting one. */
|
|
34
|
+
const FLAT_COLOR_KEYS = ['fill', 'stroke', 'dotFill', 'dotStroke'];
|
|
35
|
+
/** A style value that paints nothing isn't a color choice, so it doesn't block inheritance. */
|
|
36
|
+
const isPaint = (value) => value !== undefined && value !== 'none' && value !== 'transparent';
|
|
37
|
+
/** How a plot's own grouping and colors reach the markers its author adds. */
|
|
38
|
+
export class MarkerGrouping {
|
|
39
|
+
/** Whether a marker sets its own flat color, which then takes precedence over any inherited one. */
|
|
40
|
+
static #hasFlatColor(marker) {
|
|
41
|
+
return isPaint(marker.fill) || FLAT_COLOR_KEYS.some((key) => isPaint(marker.styles?.[key]));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Gives a marker one flat color (its `styles`, or a box's `bar.fill`) when it
|
|
45
|
+
* sets none of its own: a series color, the plot's default series color.
|
|
46
|
+
* Dots take `dotFill`/`dotStroke`, line-only kinds take `stroke`, text takes
|
|
47
|
+
* `fill` (a stroke would outline its glyphs), filled kinds take both so their
|
|
48
|
+
* outline matches their fill.
|
|
49
|
+
*/
|
|
50
|
+
static withSeriesColor(marker, color) {
|
|
51
|
+
if (!color || MarkerGrouping.#hasFlatColor(marker) || marker.color !== undefined)
|
|
52
|
+
return marker;
|
|
53
|
+
if (marker.type === 'box') {
|
|
54
|
+
return { ...marker, bar: { fill: color, ...(marker.bar ?? {}) } };
|
|
55
|
+
}
|
|
56
|
+
const keys = marker.type === 'dot'
|
|
57
|
+
? ['dotFill', 'dotStroke']
|
|
58
|
+
: LINE_KINDS.has(marker.type)
|
|
59
|
+
? ['stroke']
|
|
60
|
+
: marker.type === 'text'
|
|
61
|
+
? ['fill']
|
|
62
|
+
: ['fill', 'stroke'];
|
|
63
|
+
const styles = { ...(marker.styles ?? {}) };
|
|
64
|
+
// A `'none'` the marker sets doesn't block the inherited color, but stays itself.
|
|
65
|
+
for (const key of keys)
|
|
66
|
+
styles[key] ??= color;
|
|
67
|
+
return { ...marker, styles };
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Gives each author marker the plot's own color rules by default:
|
|
71
|
+
*
|
|
72
|
+
* - A grouped plot (`color`/`grouping`) splits its markers the same way. A
|
|
73
|
+
* grouping-capable marker draws one shape per group, and a color-capable
|
|
74
|
+
* marker colors each row by its group's color.
|
|
75
|
+
* - An ungrouped plot's unscoped marker takes the plot's default series color.
|
|
76
|
+
*
|
|
77
|
+
* A marker's own `grouping`/`color` or flat color always wins. Scoped markers
|
|
78
|
+
* (`series`) are colored by their own series at render time, not here.
|
|
79
|
+
*/
|
|
80
|
+
static inheritPlotGrouping(markers, plot) {
|
|
81
|
+
const grouping = plot.grouping ?? plot.color;
|
|
82
|
+
return markers.map((marker) => {
|
|
83
|
+
const m = marker;
|
|
84
|
+
if (m.series !== undefined)
|
|
85
|
+
return marker;
|
|
86
|
+
if (grouping === undefined)
|
|
87
|
+
return MarkerGrouping.withSeriesColor(m, plot.defaultColor);
|
|
88
|
+
const updates = {};
|
|
89
|
+
if (GROUPING_KINDS.has(m.type) && m.grouping === undefined)
|
|
90
|
+
updates.grouping = grouping;
|
|
91
|
+
if (COLOR_KINDS.has(m.type) && m.color === undefined && !MarkerGrouping.#hasFlatColor(m)) {
|
|
92
|
+
updates.color = plot.color ?? plot.grouping;
|
|
93
|
+
}
|
|
94
|
+
return Object.keys(updates).length ? { ...m, ...updates } : marker;
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Gives a scoped hover marker its series color through its own `dot` and
|
|
99
|
+
* `text` styles, the way `withSeriesColor` does for other markers. A style the
|
|
100
|
+
* marker sets itself keeps its own color.
|
|
101
|
+
*/
|
|
102
|
+
static withHoverSeriesColor(marker, color) {
|
|
103
|
+
if (!color)
|
|
104
|
+
return marker;
|
|
105
|
+
const dot = (marker.dot ?? {});
|
|
106
|
+
const text = (marker.text ?? {});
|
|
107
|
+
return {
|
|
108
|
+
...marker,
|
|
109
|
+
dot: { ...dot, dotFill: dot.dotFill ?? color, dotStroke: dot.dotStroke ?? color },
|
|
110
|
+
text: { ...text, fill: text.fill ?? color }
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
}
|