@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,130 @@
|
|
|
1
|
+
import { StackTransform } from './methods/StackTransform';
|
|
2
|
+
import { BinTransform } from './methods/BinTransform';
|
|
3
|
+
import { DensityTransform } from './methods/DensityTransform';
|
|
4
|
+
import { WindowTransform } from './methods/WindowTransform';
|
|
5
|
+
import { NormalizeTransform } from './methods/NormalizeTransform';
|
|
6
|
+
import { PositionTransform } from './methods/PositionTransform';
|
|
7
|
+
import { OrderTransform } from './methods/OrderTransform';
|
|
8
|
+
import { GroupTransform } from './methods/GroupTransform';
|
|
9
|
+
/** Each transform type's adapter: its channels, how it runs, and its own fixes. */
|
|
10
|
+
const ADAPTERS = {
|
|
11
|
+
stackX: StackTransform.x,
|
|
12
|
+
stackY: StackTransform.y,
|
|
13
|
+
stackMosaicX: StackTransform.mosaicX,
|
|
14
|
+
stackMosaicY: StackTransform.mosaicY,
|
|
15
|
+
binX: BinTransform.x,
|
|
16
|
+
binY: BinTransform.y,
|
|
17
|
+
bin: BinTransform.grid,
|
|
18
|
+
densityX: DensityTransform.x,
|
|
19
|
+
densityY: DensityTransform.y,
|
|
20
|
+
windowX: WindowTransform.windowX,
|
|
21
|
+
windowY: WindowTransform.windowY,
|
|
22
|
+
bollingerX: WindowTransform.bollingerX,
|
|
23
|
+
bollingerY: WindowTransform.bollingerY,
|
|
24
|
+
normalizeX: NormalizeTransform.x,
|
|
25
|
+
normalizeY: NormalizeTransform.y,
|
|
26
|
+
normalizeParallelX: NormalizeTransform.parallelX,
|
|
27
|
+
normalizeParallelY: NormalizeTransform.parallelY,
|
|
28
|
+
mapX: NormalizeTransform.mapX,
|
|
29
|
+
mapY: NormalizeTransform.mapY,
|
|
30
|
+
intervalX: PositionTransform.intervalX,
|
|
31
|
+
intervalY: PositionTransform.intervalY,
|
|
32
|
+
jitterX: PositionTransform.jitterX,
|
|
33
|
+
jitterY: PositionTransform.jitterY,
|
|
34
|
+
shiftX: PositionTransform.shiftX,
|
|
35
|
+
shiftY: PositionTransform.shiftY,
|
|
36
|
+
sort: OrderTransform.sort,
|
|
37
|
+
shuffle: OrderTransform.shuffle,
|
|
38
|
+
reverse: OrderTransform.reverse,
|
|
39
|
+
filter: OrderTransform.filter,
|
|
40
|
+
select: OrderTransform.select,
|
|
41
|
+
selectFirst: OrderTransform.first,
|
|
42
|
+
selectLast: OrderTransform.last,
|
|
43
|
+
selectMinX: OrderTransform.minX,
|
|
44
|
+
selectMaxX: OrderTransform.maxX,
|
|
45
|
+
selectMinY: OrderTransform.minY,
|
|
46
|
+
selectMaxY: OrderTransform.maxY,
|
|
47
|
+
groupX: GroupTransform.x,
|
|
48
|
+
groupY: GroupTransform.y,
|
|
49
|
+
groupZ: GroupTransform.z,
|
|
50
|
+
group: GroupTransform.grid
|
|
51
|
+
};
|
|
52
|
+
/** Runs a marker's or a plot's transforms through svelteplot, one type's adapter at a time. */
|
|
53
|
+
export class Transforms {
|
|
54
|
+
/** The channels a marker hands down to its transforms, when it has them. */
|
|
55
|
+
static INHERITED_CHANNELS = ['x', 'y', 'x1', 'x2', 'y1', 'y2'];
|
|
56
|
+
/**
|
|
57
|
+
* Runs one transform through svelteplot and returns what it produces - the
|
|
58
|
+
* transform's own output, ready to spread into the marker's props. A marker
|
|
59
|
+
* transform is one flat object, so its props are split once: the ones the
|
|
60
|
+
* transform reads as channels go first, and the rest (a stack's `offset`, a
|
|
61
|
+
* bin's `thresholds` and reducers) go second, as svelteplot's own signature
|
|
62
|
+
* takes them. An unset prop is left out, so svelteplot's own default applies.
|
|
63
|
+
*
|
|
64
|
+
* `inherited` holds the channels the marker hands down (its rows, `x`/`y`,
|
|
65
|
+
* grouping as `z`). Only the ones the transform reads are used, and the
|
|
66
|
+
* transform's own channels win over them.
|
|
67
|
+
*/
|
|
68
|
+
static run(transform, inherited = {}) {
|
|
69
|
+
const adapter = ADAPTERS[transform.type];
|
|
70
|
+
const { channelKeys, outputKeys } = adapter;
|
|
71
|
+
const isOption = (key) => outputKeys?.[key] === true || channelKeys[key] !== true;
|
|
72
|
+
const props = Object.entries(transform).filter(([k, v]) => k !== 'type' && v !== undefined);
|
|
73
|
+
const readable = Object.entries(inherited).filter(([k, v]) => channelKeys[k] === true && v !== undefined);
|
|
74
|
+
const split = {
|
|
75
|
+
channels: Object.fromEntries([...readable, ...props.filter(([k]) => !isOption(k))]),
|
|
76
|
+
options: Object.fromEntries(props.filter(([k]) => isOption(k)))
|
|
77
|
+
};
|
|
78
|
+
const { channels, options } = adapter.prepare ? adapter.prepare(split) : split;
|
|
79
|
+
return adapter.run(channels, options);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Applies a marker's `transforms` in order, each one's output feeding the next.
|
|
83
|
+
* A transform reads the marker's own rows, position channels and `grouping`
|
|
84
|
+
* (its `z`) by default, falling back to the plot's rows when the marker has
|
|
85
|
+
* none. Any of those the transform sets itself wins. The output is merged onto
|
|
86
|
+
* the marker.
|
|
87
|
+
*
|
|
88
|
+
* A transform only inherits the channels it reads (its adapter's `channelKeys`),
|
|
89
|
+
* so a bin's reducer slot is never filled from the marker: a marker's `y` is not
|
|
90
|
+
* read as `binX`'s `'count'` reducer. A `z` the transform hands back becomes
|
|
91
|
+
* the marker's `grouping`, and a `fill`/`stroke` it reduces to becomes the
|
|
92
|
+
* marker's `color`, so the marker keeps drawing its groups and colors from the
|
|
93
|
+
* new rows. Once every transform has run, {@link Transforms.finish} applies each
|
|
94
|
+
* type's fix to the marker.
|
|
95
|
+
*/
|
|
96
|
+
static resolve(marker, fallbackData) {
|
|
97
|
+
const own = marker;
|
|
98
|
+
if (!own.transforms?.length)
|
|
99
|
+
return marker;
|
|
100
|
+
let resolved = { ...own };
|
|
101
|
+
for (const transform of own.transforms) {
|
|
102
|
+
const inherited = {
|
|
103
|
+
data: resolved.data ?? fallbackData,
|
|
104
|
+
z: resolved.grouping,
|
|
105
|
+
...Object.fromEntries(Transforms.INHERITED_CHANNELS.map((k) => [k, resolved[k]]))
|
|
106
|
+
};
|
|
107
|
+
const { z, fill, stroke, ...out } = Transforms.run(transform, inherited);
|
|
108
|
+
resolved = { ...resolved, ...out };
|
|
109
|
+
if (z !== undefined)
|
|
110
|
+
resolved.grouping = z;
|
|
111
|
+
const color = fill ?? stroke;
|
|
112
|
+
if (color != null && resolved.color === undefined)
|
|
113
|
+
resolved.color = color;
|
|
114
|
+
}
|
|
115
|
+
return Transforms.finish(resolved, own.transforms);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Applies each transform type's `finish` fix to a marker drawing rows those
|
|
119
|
+
* transforms produced, once per type used - for a marker built from rows that
|
|
120
|
+
* were transformed before it existed (a plot's own processed data).
|
|
121
|
+
*/
|
|
122
|
+
static finish(marker, transforms) {
|
|
123
|
+
let finished = marker;
|
|
124
|
+
for (const adapter of new Set(transforms.map((t) => ADAPTERS[t.type]))) {
|
|
125
|
+
if (adapter.finish)
|
|
126
|
+
finished = adapter.finish(finished);
|
|
127
|
+
}
|
|
128
|
+
return finished;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { Series } from '../../types/plots/data/common';
|
|
2
|
+
import type { SegmentsConfig } from '../../types/plots/props';
|
|
3
|
+
import type { VisualGroup } from '../../types/plots/segments/config';
|
|
4
|
+
import type { PhaseStage, ProcessedData, ProcessedRow, TransformsStageOptions, TransformsStageState } from '../../types/phases';
|
|
5
|
+
/** The field each processed row carries its series name under, for its color, legend and labels. */
|
|
6
|
+
export declare const SERIES_KEY = "__series";
|
|
7
|
+
/** The field each processed row carries its series id under - the transforms' `z`, so a stack or bin keeps series apart. */
|
|
8
|
+
export declare const SERIES_ID_KEY = "__seriesId";
|
|
9
|
+
/** The field a gap-filled row carries its interpolated value under, for the transforms to read. */
|
|
10
|
+
export declare const GAP_VALUE = "__gapValue";
|
|
11
|
+
/** The field a gap-filled row carries its gap kind under, so a processed copy of it keeps its fill style. */
|
|
12
|
+
export declare const GAP_KIND = "__gapKind";
|
|
13
|
+
/**
|
|
14
|
+
* The "transforms" phase every axis-based plot shares: runs the plot-level
|
|
15
|
+
* transforms once over every visible series' rows together, so a stack sees
|
|
16
|
+
* every series and a bin keeps each series apart (both group by series), and
|
|
17
|
+
* leaves the result in `state.processedData` for the plot's own marks. With
|
|
18
|
+
* facet panels, the transforms run once per panel's rows, so a stack never
|
|
19
|
+
* combines two panels, and every row they return keeps its panel. A gap that
|
|
20
|
+
* `styles.gaps` fills is read at its interpolated value, so it takes its place
|
|
21
|
+
* in a stack the way a real value would, and keeps its gap kind.
|
|
22
|
+
*/
|
|
23
|
+
export declare class TransformsPhase<TState extends TransformsStageState, TCtx = unknown> implements PhaseStage<TState, TCtx> {
|
|
24
|
+
#private;
|
|
25
|
+
readonly phase: "transforms";
|
|
26
|
+
constructor(options?: TransformsStageOptions<TState, TCtx>);
|
|
27
|
+
run: (state: TState, ctx: TCtx) => TState;
|
|
28
|
+
/**
|
|
29
|
+
* The processed rows split back into one group per visible series, each cut
|
|
30
|
+
* into its styled visual segments by `segments`, matched on the processed `x`.
|
|
31
|
+
* Each series reads its rows through its value axis: a stack's top, a bin's start.
|
|
32
|
+
*/
|
|
33
|
+
static buildProcessedGroups<TStyle>(state: TransformsStageState & {
|
|
34
|
+
segments?: SegmentsConfig<TStyle>;
|
|
35
|
+
}, connect?: boolean): VisualGroup<Series<ProcessedRow>, TStyle>[];
|
|
36
|
+
/**
|
|
37
|
+
* The processed rows in their own order, split into runs of consecutive rows
|
|
38
|
+
* from the same visible series, each cut into its styled visual segments like
|
|
39
|
+
* {@link TransformsPhase.buildProcessedGroups}. Drawn in turn, the runs keep the rows' order
|
|
40
|
+
* across series, so a transform that reorders rows (`sort`, `reverse`,
|
|
41
|
+
* `shuffle`) decides which rows paint on top. Unreordered, each series is one run.
|
|
42
|
+
*/
|
|
43
|
+
static buildProcessedRuns<TStyle>(state: TransformsStageState & {
|
|
44
|
+
segments?: SegmentsConfig<TStyle>;
|
|
45
|
+
}): VisualGroup<Series<ProcessedRow>, TStyle>[];
|
|
46
|
+
/**
|
|
47
|
+
* Where a processed row sits: the top of its value (`y2`, or `y` - `x2`/`x`
|
|
48
|
+
* when `valueAxis` is `x`) and, on the other axis, its own position (or the
|
|
49
|
+
* middle of its `1`-`2` span, a bin's centre).
|
|
50
|
+
*/
|
|
51
|
+
static processedPosition(processed: ProcessedData, valueAxis?: 'x' | 'y'): {
|
|
52
|
+
x: (row: ProcessedRow) => unknown;
|
|
53
|
+
y: (row: ProcessedRow) => unknown;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* A processed row's span along `valueAxis`: from its `1` channel (a stack's
|
|
57
|
+
* bottom) or, with none, from `baseline`, to its top. `undefined` when the
|
|
58
|
+
* row has no value there. `stacked` tells a stack from plain values.
|
|
59
|
+
*/
|
|
60
|
+
static processedSpan(processed: ProcessedData, valueAxis: 'x' | 'y', baseline?: number): {
|
|
61
|
+
stacked: boolean;
|
|
62
|
+
of: (row: ProcessedRow) => [number, number] | undefined;
|
|
63
|
+
};
|
|
64
|
+
}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import { Transforms } from './Transforms';
|
|
2
|
+
import { seriesIdOf } from '../../utils/grouping';
|
|
3
|
+
import { PANEL_KEY } from '../facet/FacetPhase';
|
|
4
|
+
import { resolveAccessor } from '../../plots/utils/accessors';
|
|
5
|
+
import { isGapValue } from '../../plots/utils/gaps';
|
|
6
|
+
import { buildGroupedSeries } from '../../plots/utils/segments';
|
|
7
|
+
import { PlotAxes } from '../data/PlotAxes';
|
|
8
|
+
/** The field each processed row carries its series name under, for its color, legend and labels. */
|
|
9
|
+
export const SERIES_KEY = '__series';
|
|
10
|
+
/** The field each processed row carries its series id under - the transforms' `z`, so a stack or bin keeps series apart. */
|
|
11
|
+
export const SERIES_ID_KEY = '__seriesId';
|
|
12
|
+
/** The field a gap-filled row carries its interpolated value under, for the transforms to read. */
|
|
13
|
+
export const GAP_VALUE = '__gapValue';
|
|
14
|
+
/** The field a gap-filled row carries its gap kind under, so a processed copy of it keeps its fill style. */
|
|
15
|
+
export const GAP_KIND = '__gapKind';
|
|
16
|
+
const CHANNEL_NAMES = ['x', 'y', 'x1', 'x2', 'y1', 'y2'];
|
|
17
|
+
/** Props of a transform's output that are neither a channel nor an option for the mark. */
|
|
18
|
+
const NOT_OPTIONS = new Set(['data', 'z', 'grouping', 'transforms', 'sort', 'filter']);
|
|
19
|
+
/**
|
|
20
|
+
* The "transforms" phase every axis-based plot shares: runs the plot-level
|
|
21
|
+
* transforms once over every visible series' rows together, so a stack sees
|
|
22
|
+
* every series and a bin keeps each series apart (both group by series), and
|
|
23
|
+
* leaves the result in `state.processedData` for the plot's own marks. With
|
|
24
|
+
* facet panels, the transforms run once per panel's rows, so a stack never
|
|
25
|
+
* combines two panels, and every row they return keeps its panel. A gap that
|
|
26
|
+
* `styles.gaps` fills is read at its interpolated value, so it takes its place
|
|
27
|
+
* in a stack the way a real value would, and keeps its gap kind.
|
|
28
|
+
*/
|
|
29
|
+
export class TransformsPhase {
|
|
30
|
+
phase = 'transforms';
|
|
31
|
+
#options;
|
|
32
|
+
constructor(options = {}) {
|
|
33
|
+
this.#options = options;
|
|
34
|
+
}
|
|
35
|
+
run = (state, ctx) => {
|
|
36
|
+
const options = this.#options;
|
|
37
|
+
const series = (state.resolvedSeries ?? []);
|
|
38
|
+
// A gap `styles.gaps` fills carries its filled value and kind, and reads at that value.
|
|
39
|
+
const fillsOf = (s) => state.gapFillMaps?.get(seriesIdOf(s));
|
|
40
|
+
const data = series.flatMap((s) => s.data.map((row) => ({
|
|
41
|
+
...row,
|
|
42
|
+
...TransformsPhase.#fillTags(fillsOf(s)?.get(row)),
|
|
43
|
+
[SERIES_KEY]: s.name,
|
|
44
|
+
[SERIES_ID_KEY]: seriesIdOf(s),
|
|
45
|
+
...(s.panel !== undefined ? { [PANEL_KEY]: s.panel } : {})
|
|
46
|
+
})));
|
|
47
|
+
const valueAxis = PlotAxes.valueOf(state);
|
|
48
|
+
const shared = {
|
|
49
|
+
x: TransformsPhase.#sharedChannel(series, 'x'),
|
|
50
|
+
y: TransformsPhase.#sharedChannel(series, 'y')
|
|
51
|
+
};
|
|
52
|
+
const own = shared[valueAxis];
|
|
53
|
+
const filled = [...(state.gapFillMaps?.values() ?? [])].some((fills) => fills.size > 0);
|
|
54
|
+
if (filled && own !== undefined) {
|
|
55
|
+
const read = resolveAccessor(own);
|
|
56
|
+
shared[valueAxis] = (row) => row[GAP_VALUE] ?? read(row);
|
|
57
|
+
}
|
|
58
|
+
const { x, y } = shared;
|
|
59
|
+
const transforms = options.transforms
|
|
60
|
+
? options.transforms(state, ctx)
|
|
61
|
+
: (state.transforms ?? []);
|
|
62
|
+
if (!transforms.length) {
|
|
63
|
+
const channels = Object.fromEntries(Object.entries({ x, y }).filter(([, channel]) => channel !== undefined));
|
|
64
|
+
const processedData = { data, channels, options: {}, transforms };
|
|
65
|
+
return { ...state, processedData };
|
|
66
|
+
}
|
|
67
|
+
const out = TransformsPhase.#runByPanel(data, (rows) => Transforms.resolve({ data: rows, x, y, grouping: SERIES_ID_KEY, transforms }, rows));
|
|
68
|
+
const channels = {};
|
|
69
|
+
const markOptions = {};
|
|
70
|
+
for (const [key, value] of Object.entries(out)) {
|
|
71
|
+
if (CHANNEL_NAMES.includes(key)) {
|
|
72
|
+
channels[key] = value;
|
|
73
|
+
}
|
|
74
|
+
else if (!NOT_OPTIONS.has(key)) {
|
|
75
|
+
markOptions[key] = value;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// An aggregating transform (bin, group) keeps only its `z`, the series id: put the name back.
|
|
79
|
+
const nameById = new Map(series.map((s) => [seriesIdOf(s), s.name]));
|
|
80
|
+
const rows = out.data;
|
|
81
|
+
for (const row of rows) {
|
|
82
|
+
if (row[SERIES_KEY] === undefined && row[SERIES_ID_KEY] !== undefined) {
|
|
83
|
+
row[SERIES_KEY] = nameById.get(row[SERIES_ID_KEY]);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const processedData = {
|
|
87
|
+
data: rows,
|
|
88
|
+
channels,
|
|
89
|
+
options: markOptions,
|
|
90
|
+
transforms
|
|
91
|
+
};
|
|
92
|
+
return { ...state, processedData };
|
|
93
|
+
};
|
|
94
|
+
/** What a gap-filled row carries: its interpolated value and the kind of zone that filled it. */
|
|
95
|
+
static #fillTags(fill) {
|
|
96
|
+
return fill ? { [GAP_VALUE]: fill.value, [GAP_KIND]: fill.kind } : {};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* The processed rows split back into one group per visible series, each cut
|
|
100
|
+
* into its styled visual segments by `segments`, matched on the processed `x`.
|
|
101
|
+
* Each series reads its rows through its value axis: a stack's top, a bin's start.
|
|
102
|
+
*/
|
|
103
|
+
static buildProcessedGroups(state, connect = true) {
|
|
104
|
+
const { data } = state.processedData;
|
|
105
|
+
const series = (state.resolvedSeries ?? []).map((s) => TransformsPhase.#processedSeries(state, s, data.filter((row) => row[SERIES_ID_KEY] === seriesIdOf(s))));
|
|
106
|
+
return buildGroupedSeries(series, state.segments, connect);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* The processed rows in their own order, split into runs of consecutive rows
|
|
110
|
+
* from the same visible series, each cut into its styled visual segments like
|
|
111
|
+
* {@link TransformsPhase.buildProcessedGroups}. Drawn in turn, the runs keep the rows' order
|
|
112
|
+
* across series, so a transform that reorders rows (`sort`, `reverse`,
|
|
113
|
+
* `shuffle`) decides which rows paint on top. Unreordered, each series is one run.
|
|
114
|
+
*/
|
|
115
|
+
static buildProcessedRuns(state) {
|
|
116
|
+
const byId = new Map((state.resolvedSeries ?? []).map((s) => [seriesIdOf(s), s]));
|
|
117
|
+
const runs = [];
|
|
118
|
+
for (const row of state.processedData.data) {
|
|
119
|
+
const source = byId.get(row[SERIES_ID_KEY]);
|
|
120
|
+
if (!source)
|
|
121
|
+
continue;
|
|
122
|
+
const last = runs.at(-1);
|
|
123
|
+
if (last && seriesIdOf(last) === seriesIdOf(source))
|
|
124
|
+
last.data.push(row);
|
|
125
|
+
else
|
|
126
|
+
runs.push(TransformsPhase.#processedSeries(state, source, [row]));
|
|
127
|
+
}
|
|
128
|
+
return buildGroupedSeries(runs, state.segments, false);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Where a processed row sits: the top of its value (`y2`, or `y` - `x2`/`x`
|
|
132
|
+
* when `valueAxis` is `x`) and, on the other axis, its own position (or the
|
|
133
|
+
* middle of its `1`-`2` span, a bin's centre).
|
|
134
|
+
*/
|
|
135
|
+
static processedPosition(processed, valueAxis = 'y') {
|
|
136
|
+
const { channels } = processed;
|
|
137
|
+
const read = (channel) => resolveAccessor(channel);
|
|
138
|
+
const along = (axis) => {
|
|
139
|
+
const own = channels[axis];
|
|
140
|
+
const from = channels[`${axis}1`];
|
|
141
|
+
const to = channels[`${axis}2`];
|
|
142
|
+
if (axis === valueAxis) {
|
|
143
|
+
const top = to ?? own;
|
|
144
|
+
return top !== undefined ? read(top) : () => undefined;
|
|
145
|
+
}
|
|
146
|
+
if (own !== undefined)
|
|
147
|
+
return read(own);
|
|
148
|
+
if (from === undefined || to === undefined)
|
|
149
|
+
return () => undefined;
|
|
150
|
+
return (row) => (Number(read(from)(row)) + Number(read(to)(row))) / 2;
|
|
151
|
+
};
|
|
152
|
+
return { x: along('x'), y: along('y') };
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* A processed row's span along `valueAxis`: from its `1` channel (a stack's
|
|
156
|
+
* bottom) or, with none, from `baseline`, to its top. `undefined` when the
|
|
157
|
+
* row has no value there. `stacked` tells a stack from plain values.
|
|
158
|
+
*/
|
|
159
|
+
static processedSpan(processed, valueAxis, baseline = 0) {
|
|
160
|
+
const from = processed.channels[`${valueAxis}1`];
|
|
161
|
+
const stacked = from !== undefined && processed.channels[`${valueAxis}2`] !== undefined;
|
|
162
|
+
const top = TransformsPhase.processedPosition(processed, valueAxis)[valueAxis];
|
|
163
|
+
const bottom = stacked
|
|
164
|
+
? resolveAccessor(from)
|
|
165
|
+
: () => baseline;
|
|
166
|
+
return {
|
|
167
|
+
stacked,
|
|
168
|
+
of: (row) => {
|
|
169
|
+
const end = top(row);
|
|
170
|
+
const start = bottom(row);
|
|
171
|
+
if (isGapValue(end) || isGapValue(start))
|
|
172
|
+
return undefined;
|
|
173
|
+
const span = [Number(start), Number(end)];
|
|
174
|
+
return Number.isFinite(span[0]) && Number.isFinite(span[1]) ? span : undefined;
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* One series accessor shared by every series as-is, so a field key keeps
|
|
180
|
+
* feeding svelteplot's axis-title inference; a per-series function otherwise.
|
|
181
|
+
* `undefined` when no series sets the channel.
|
|
182
|
+
*/
|
|
183
|
+
static #sharedChannel(series, key) {
|
|
184
|
+
const first = series[0]?.[key];
|
|
185
|
+
if (series.every((s) => s[key] === first))
|
|
186
|
+
return first;
|
|
187
|
+
const byId = new Map(series.map((s) => [seriesIdOf(s), s[key] === undefined ? undefined : resolveAccessor(s[key])]));
|
|
188
|
+
return (row) => byId.get(row[SERIES_ID_KEY])?.(row);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Runs `run` over each facet panel's rows (or over every row, without
|
|
192
|
+
* panels) and joins the results: the rows in panel order, each tagged with its
|
|
193
|
+
* panel, and the channels and options of the first run - the transforms set
|
|
194
|
+
* the same ones for every panel.
|
|
195
|
+
*/
|
|
196
|
+
static #runByPanel(data, run) {
|
|
197
|
+
const panels = new Map();
|
|
198
|
+
for (const row of data) {
|
|
199
|
+
const bucket = panels.get(row[PANEL_KEY]);
|
|
200
|
+
if (bucket)
|
|
201
|
+
bucket.push(row);
|
|
202
|
+
else
|
|
203
|
+
panels.set(row[PANEL_KEY], [row]);
|
|
204
|
+
}
|
|
205
|
+
if (panels.size === 0 || (panels.size === 1 && panels.has(undefined))) {
|
|
206
|
+
return run(data);
|
|
207
|
+
}
|
|
208
|
+
let first;
|
|
209
|
+
const rows = [];
|
|
210
|
+
for (const [panel, panelRows] of panels) {
|
|
211
|
+
const out = run(panelRows);
|
|
212
|
+
first ??= out;
|
|
213
|
+
for (const row of out.data) {
|
|
214
|
+
if (panel !== undefined && row[PANEL_KEY] === undefined)
|
|
215
|
+
row[PANEL_KEY] = panel;
|
|
216
|
+
rows.push(row);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return { ...first, data: rows };
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* One series over some of its processed rows. With no transforms it keeps its
|
|
223
|
+
* own `x`/`y`; otherwise it reads the transforms' channels - on the value axis
|
|
224
|
+
* a stack's top (`y2` as its `y`, or `x2` as its `x` on a horizontal plot), on
|
|
225
|
+
* the other a bin's start.
|
|
226
|
+
*/
|
|
227
|
+
static #processedSeries(state, source, data) {
|
|
228
|
+
const { channels, transforms } = state.processedData;
|
|
229
|
+
const valueAxis = PlotAxes.valueOf(state);
|
|
230
|
+
const read = (axis) => (transforms.length
|
|
231
|
+
? (channels[axis] ??
|
|
232
|
+
channels[`${axis}${axis === valueAxis ? 2 : 1}`])
|
|
233
|
+
: source[axis]);
|
|
234
|
+
return {
|
|
235
|
+
name: source.name,
|
|
236
|
+
...(source.id !== undefined ? { id: source.id } : {}),
|
|
237
|
+
x: read('x'),
|
|
238
|
+
y: read('y'),
|
|
239
|
+
data
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Row } from '../../../types/phases/transforms/adapter';
|
|
2
|
+
/** The fix transforms that give a `rect` a value on one axis share. */
|
|
3
|
+
export declare class AnchorBar {
|
|
4
|
+
/**
|
|
5
|
+
* A `rect` a transform gave a value on one axis, with no far edge on that axis,
|
|
6
|
+
* draws a bar from zero up to that value, the way svelteplot's `RectY`/`RectX`
|
|
7
|
+
* do. A bin's or a group's value arrives as `y` (for `binX`/`groupX`) or `x`
|
|
8
|
+
* (for `binY`/`groupY`), so the bar's far end on that axis is set here, once the
|
|
9
|
+
* transforms have run. A value with an edge already is left alone, as is a
|
|
10
|
+
* `rect` with an `interval`, which svelteplot draws itself.
|
|
11
|
+
*/
|
|
12
|
+
static toZero(axis: 'x' | 'y'): (marker: Row) => Row;
|
|
13
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** The fix transforms that give a `rect` a value on one axis share. */
|
|
2
|
+
export class AnchorBar {
|
|
3
|
+
/**
|
|
4
|
+
* A `rect` a transform gave a value on one axis, with no far edge on that axis,
|
|
5
|
+
* draws a bar from zero up to that value, the way svelteplot's `RectY`/`RectX`
|
|
6
|
+
* do. A bin's or a group's value arrives as `y` (for `binX`/`groupX`) or `x`
|
|
7
|
+
* (for `binY`/`groupY`), so the bar's far end on that axis is set here, once the
|
|
8
|
+
* transforms have run. A value with an edge already is left alone, as is a
|
|
9
|
+
* `rect` with an `interval`, which svelteplot draws itself.
|
|
10
|
+
*/
|
|
11
|
+
static toZero(axis) {
|
|
12
|
+
const [near, far] = axis === 'y' ? ['y1', 'y2'] : ['x1', 'x2'];
|
|
13
|
+
return (marker) => {
|
|
14
|
+
if (marker.type !== 'rect' || marker.interval !== undefined)
|
|
15
|
+
return marker;
|
|
16
|
+
if (marker[axis] === undefined || marker[far] !== undefined)
|
|
17
|
+
return marker;
|
|
18
|
+
return { ...marker, [near]: marker[near] ?? 0, [far]: marker[axis] };
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { TransformAdapter } from '../../../types/phases/transforms/adapter';
|
|
2
|
+
/** svelteplot's bin transforms: along `x`, along `y`, or both. */
|
|
3
|
+
export declare class BinTransform {
|
|
4
|
+
static readonly x: TransformAdapter;
|
|
5
|
+
static readonly y: TransformAdapter;
|
|
6
|
+
static readonly grid: TransformAdapter;
|
|
7
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { bin, binX, binY } from 'svelteplot';
|
|
2
|
+
import { BIN_X_CHANNEL_KEYS, BIN_Y_CHANNEL_KEYS, BIN_2D_CHANNEL_KEYS } from '../../../types/transforms/bin';
|
|
3
|
+
import { AnchorBar } from './AnchorBar';
|
|
4
|
+
/**
|
|
5
|
+
* A numeric `interval` makes svelteplot start and stop its bins at the data's own
|
|
6
|
+
* extremes, so the first and last bins come out cut short. Without an explicit
|
|
7
|
+
* `domain`, this snaps the domain out to the interval's grid, so every bin is the
|
|
8
|
+
* same width. Date intervals, and a `domain` the transform sets itself, are left alone.
|
|
9
|
+
*/
|
|
10
|
+
function alignBinToInterval(dim) {
|
|
11
|
+
return ({ channels, options }) => {
|
|
12
|
+
const { interval, domain } = options;
|
|
13
|
+
const data = channels.data;
|
|
14
|
+
if (typeof interval !== 'number' || domain !== undefined || !data) {
|
|
15
|
+
return { channels, options };
|
|
16
|
+
}
|
|
17
|
+
const binned = channels[dim];
|
|
18
|
+
const read = typeof binned === 'function'
|
|
19
|
+
? binned
|
|
20
|
+
: (d) => (binned ? d[binned] : undefined);
|
|
21
|
+
const values = data.map((d) => Number(read(d))).filter(Number.isFinite);
|
|
22
|
+
if (!values.length)
|
|
23
|
+
return { channels, options };
|
|
24
|
+
const lo = Math.floor(Math.min(...values) / interval) * interval;
|
|
25
|
+
const hi = Math.ceil(Math.max(...values) / interval) * interval;
|
|
26
|
+
return { channels, options: { ...options, domain: [lo, hi] } };
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/** svelteplot's bin transforms: along `x`, along `y`, or both. */
|
|
30
|
+
export class BinTransform {
|
|
31
|
+
static x = {
|
|
32
|
+
channelKeys: BIN_X_CHANNEL_KEYS,
|
|
33
|
+
run: binX,
|
|
34
|
+
prepare: alignBinToInterval('x'),
|
|
35
|
+
finish: AnchorBar.toZero('y')
|
|
36
|
+
};
|
|
37
|
+
static y = {
|
|
38
|
+
channelKeys: BIN_Y_CHANNEL_KEYS,
|
|
39
|
+
run: binY,
|
|
40
|
+
prepare: alignBinToInterval('y'),
|
|
41
|
+
finish: AnchorBar.toZero('x')
|
|
42
|
+
};
|
|
43
|
+
// Bins on both axes: every cell already has both edges, so no bar to anchor.
|
|
44
|
+
static grid = {
|
|
45
|
+
channelKeys: BIN_2D_CHANNEL_KEYS,
|
|
46
|
+
run: bin
|
|
47
|
+
};
|
|
48
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { densityX, densityY } from 'svelteplot';
|
|
2
|
+
import { DENSITY_CHANNEL_KEYS } from '../../../types/transforms/density';
|
|
3
|
+
/** svelteplot's density transforms, by axis. */
|
|
4
|
+
export class DensityTransform {
|
|
5
|
+
static x = {
|
|
6
|
+
channelKeys: DENSITY_CHANNEL_KEYS,
|
|
7
|
+
run: densityX
|
|
8
|
+
};
|
|
9
|
+
static y = {
|
|
10
|
+
channelKeys: DENSITY_CHANNEL_KEYS,
|
|
11
|
+
run: densityY
|
|
12
|
+
};
|
|
13
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { TransformAdapter } from '../../../types/phases/transforms/adapter';
|
|
2
|
+
/** svelteplot's group transforms: along `x`, along `y`, by `z`, or both axes. */
|
|
3
|
+
export declare class GroupTransform {
|
|
4
|
+
static readonly x: TransformAdapter;
|
|
5
|
+
static readonly y: TransformAdapter;
|
|
6
|
+
static readonly z: TransformAdapter;
|
|
7
|
+
static readonly grid: TransformAdapter;
|
|
8
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { group, groupX, groupY, groupZ } from 'svelteplot';
|
|
2
|
+
import { GROUP_CHANNEL_KEYS } from '../../../types/transforms/group';
|
|
3
|
+
import { AnchorBar } from './AnchorBar';
|
|
4
|
+
/** The style outputs every group transform can reduce to. */
|
|
5
|
+
const STYLE_OUTPUTS = {
|
|
6
|
+
fill: true,
|
|
7
|
+
stroke: true,
|
|
8
|
+
r: true,
|
|
9
|
+
opacity: true,
|
|
10
|
+
fillOpacity: true,
|
|
11
|
+
strokeOpacity: true
|
|
12
|
+
};
|
|
13
|
+
/** svelteplot's group transforms: along `x`, along `y`, by `z`, or both axes. */
|
|
14
|
+
export class GroupTransform {
|
|
15
|
+
// Each group transform's position outputs are reducers on the transform, while
|
|
16
|
+
// the marker's own channel of the same name stays the value they reduce.
|
|
17
|
+
static x = {
|
|
18
|
+
channelKeys: GROUP_CHANNEL_KEYS,
|
|
19
|
+
outputKeys: { y: true, y1: true, y2: true, ...STYLE_OUTPUTS },
|
|
20
|
+
run: groupX,
|
|
21
|
+
finish: AnchorBar.toZero('y')
|
|
22
|
+
};
|
|
23
|
+
static y = {
|
|
24
|
+
channelKeys: GROUP_CHANNEL_KEYS,
|
|
25
|
+
outputKeys: { x: true, x1: true, x2: true, ...STYLE_OUTPUTS },
|
|
26
|
+
run: groupY,
|
|
27
|
+
finish: AnchorBar.toZero('x')
|
|
28
|
+
};
|
|
29
|
+
static z = {
|
|
30
|
+
channelKeys: GROUP_CHANNEL_KEYS,
|
|
31
|
+
outputKeys: { x: true, x1: true, x2: true, y: true, y1: true, y2: true, ...STYLE_OUTPUTS },
|
|
32
|
+
run: groupZ
|
|
33
|
+
};
|
|
34
|
+
static grid = {
|
|
35
|
+
channelKeys: GROUP_CHANNEL_KEYS,
|
|
36
|
+
outputKeys: STYLE_OUTPUTS,
|
|
37
|
+
run: group
|
|
38
|
+
};
|
|
39
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { TransformAdapter } from '../../../types/phases/transforms/adapter';
|
|
2
|
+
/** Normalize and map transforms, by axis. */
|
|
3
|
+
export declare class NormalizeTransform {
|
|
4
|
+
static readonly x: TransformAdapter;
|
|
5
|
+
static readonly y: TransformAdapter;
|
|
6
|
+
static readonly parallelX: TransformAdapter;
|
|
7
|
+
static readonly parallelY: TransformAdapter;
|
|
8
|
+
static readonly mapX: TransformAdapter;
|
|
9
|
+
static readonly mapY: TransformAdapter;
|
|
10
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { normalizeX, normalizeY, normalizeParallelX, normalizeParallelY, mapX, mapY } from 'svelteplot';
|
|
2
|
+
import { POSITION_CHANNEL_KEYS } from '../../../types/transforms/common';
|
|
3
|
+
/** Normalize and map transforms, by axis. */
|
|
4
|
+
export class NormalizeTransform {
|
|
5
|
+
static x = {
|
|
6
|
+
channelKeys: POSITION_CHANNEL_KEYS,
|
|
7
|
+
run: normalizeX
|
|
8
|
+
};
|
|
9
|
+
static y = {
|
|
10
|
+
channelKeys: POSITION_CHANNEL_KEYS,
|
|
11
|
+
run: normalizeY
|
|
12
|
+
};
|
|
13
|
+
static parallelX = {
|
|
14
|
+
channelKeys: POSITION_CHANNEL_KEYS,
|
|
15
|
+
run: normalizeParallelX
|
|
16
|
+
};
|
|
17
|
+
static parallelY = {
|
|
18
|
+
channelKeys: POSITION_CHANNEL_KEYS,
|
|
19
|
+
run: normalizeParallelY
|
|
20
|
+
};
|
|
21
|
+
// svelteplot takes the mapping itself as the second argument, not an options object.
|
|
22
|
+
static mapX = {
|
|
23
|
+
channelKeys: POSITION_CHANNEL_KEYS,
|
|
24
|
+
run: (channels, options) => mapX(channels, options.map)
|
|
25
|
+
};
|
|
26
|
+
static mapY = {
|
|
27
|
+
channelKeys: POSITION_CHANNEL_KEYS,
|
|
28
|
+
run: (channels, options) => mapY(channels, options.map)
|
|
29
|
+
};
|
|
30
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { TransformAdapter } from '../../../types/phases/transforms/adapter';
|
|
2
|
+
/** Transforms that choose and order rows: sort, shuffle, reverse, filter and select. */
|
|
3
|
+
export declare class OrderTransform {
|
|
4
|
+
#private;
|
|
5
|
+
static readonly sort: TransformAdapter;
|
|
6
|
+
static readonly shuffle: TransformAdapter;
|
|
7
|
+
static readonly reverse: TransformAdapter;
|
|
8
|
+
static readonly filter: TransformAdapter;
|
|
9
|
+
static readonly select: TransformAdapter;
|
|
10
|
+
static readonly first: TransformAdapter;
|
|
11
|
+
static readonly last: TransformAdapter;
|
|
12
|
+
static readonly minX: TransformAdapter;
|
|
13
|
+
static readonly maxX: TransformAdapter;
|
|
14
|
+
static readonly minY: TransformAdapter;
|
|
15
|
+
static readonly maxY: TransformAdapter;
|
|
16
|
+
}
|