@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,159 @@
|
|
|
1
|
+
import { resolveAccessor } from '../utils/accessors';
|
|
2
|
+
import { SERIES_ID_KEY, TransformsPhase } from '../../phases/transforms/TransformsPhase';
|
|
3
|
+
import { seriesIdOf } from '../../utils/grouping';
|
|
4
|
+
import { PlotAxes } from '../../phases/data/PlotAxes';
|
|
5
|
+
import { getConfiguration } from '../../configuration/config.svelte';
|
|
6
|
+
import { isGapValue, resolveGapAreaStyle } from '../utils/gaps';
|
|
7
|
+
const GAP_KINDS = ['start', 'middle', 'end'];
|
|
8
|
+
function signFor(s, magnitude) {
|
|
9
|
+
return s.side === 'left' ? -magnitude : magnitude;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* PyramidPlot's `styles.values` as one `'text'` marker per series, over the
|
|
13
|
+
* same processed rows its bars draw (gap rows never get a label), mirrored to
|
|
14
|
+
* its own side of the shared zero baseline. `anchor` places each label along
|
|
15
|
+
* its bar: past its end (`'outside'`/`'start'`), at the baseline (`'end'`),
|
|
16
|
+
* or centred (`'middle'`). On a vertical pyramid the sides run down and up.
|
|
17
|
+
*/
|
|
18
|
+
export function buildValueLabels(labels, state, ctx) {
|
|
19
|
+
const { processedData } = state;
|
|
20
|
+
if (!processedData)
|
|
21
|
+
return [];
|
|
22
|
+
const { font, anchor, format } = labels;
|
|
23
|
+
const categoryAxis = PlotAxes.categoryOf(state);
|
|
24
|
+
const valueAxis = PlotAxes.valueOf(state);
|
|
25
|
+
const isHorizontal = state.axes?.isHorizontal ?? true;
|
|
26
|
+
return TransformsPhase.buildProcessedGroups(state, false).flatMap(({ series }) => {
|
|
27
|
+
const id = seriesIdOf(series);
|
|
28
|
+
const side = state.resolvedSeries.find((s) => seriesIdOf(s) === id).side;
|
|
29
|
+
const isLeft = side === 'left';
|
|
30
|
+
const getMagnitude = resolveAccessor(series[valueAxis]);
|
|
31
|
+
const magnitude = (d) => Math.abs(Number(getMagnitude(d)));
|
|
32
|
+
const signed = (d) => (isLeft ? -magnitude(d) : magnitude(d));
|
|
33
|
+
const data = processedData.data.filter((d) => d[SERIES_ID_KEY] === id && !isGapValue(getMagnitude(d)));
|
|
34
|
+
if (data.length === 0)
|
|
35
|
+
return [];
|
|
36
|
+
const outward = isLeft ? -1 : 1;
|
|
37
|
+
const at = anchor === 'middle' ? (d) => signed(d) / 2 : anchor === 'end' ? 0 : signed;
|
|
38
|
+
const shift = anchor === 'middle' ? 0 : outward * (anchor === 'end' ? 4 : 6);
|
|
39
|
+
// Away from the baseline: left/right on a horizontal pyramid, down/up on a vertical one.
|
|
40
|
+
const awayAnchor = isHorizontal
|
|
41
|
+
? anchor === 'middle'
|
|
42
|
+
? 'middle'
|
|
43
|
+
: isLeft
|
|
44
|
+
? 'end'
|
|
45
|
+
: 'start'
|
|
46
|
+
: 'middle';
|
|
47
|
+
const awayLine = isHorizontal
|
|
48
|
+
? 'middle'
|
|
49
|
+
: anchor === 'middle'
|
|
50
|
+
? 'middle'
|
|
51
|
+
: isLeft
|
|
52
|
+
? 'top'
|
|
53
|
+
: 'bottom';
|
|
54
|
+
return [
|
|
55
|
+
{
|
|
56
|
+
type: 'text',
|
|
57
|
+
data,
|
|
58
|
+
[valueAxis]: at,
|
|
59
|
+
[categoryAxis]: series[categoryAxis],
|
|
60
|
+
text: (d) => format(magnitude(d), series.name),
|
|
61
|
+
styles: {
|
|
62
|
+
...font,
|
|
63
|
+
fill: font?.fill ?? ctx.cfg.axis.color,
|
|
64
|
+
fontSize: font?.fontSize ?? 12,
|
|
65
|
+
dx: font?.dx ?? (isHorizontal ? shift : 0),
|
|
66
|
+
dy: font?.dy ?? (isHorizontal ? 0 : -shift),
|
|
67
|
+
textAnchor: labels.textAnchor ?? awayAnchor,
|
|
68
|
+
lineAnchor: font?.lineAnchor ?? awayLine
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
];
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* PyramidPlot's "markers" phase: one `role: 'segment'` bar per visual
|
|
76
|
+
* segment, along the category axis the "data" phase read (horizontal bars for
|
|
77
|
+
* categories on y, signed magnitude on x; vertical ones the other way) and with
|
|
78
|
+
* no insets - prepended onto whatever the "statistics" phase already put in
|
|
79
|
+
* `state.markers`. Emits no `role: 'hitArea'` markers - PyramidPlot's hover
|
|
80
|
+
* matches nearest points rather than hit-testing category bands.
|
|
81
|
+
*/
|
|
82
|
+
export function buildMarks(state, ctx) {
|
|
83
|
+
const { groupedSeries, gapFillMaps } = state;
|
|
84
|
+
const gapDefaults = getConfiguration().pyramid.gap;
|
|
85
|
+
const categoryAxis = PlotAxes.categoryOf(state);
|
|
86
|
+
const valueAxis = PlotAxes.valueOf(state);
|
|
87
|
+
const isHorizontal = state.axes?.isHorizontal ?? true;
|
|
88
|
+
/** One bar's own channels: its category, and its span from the baseline to its signed value. */
|
|
89
|
+
const span = (category, to) => ({
|
|
90
|
+
isHorizontal,
|
|
91
|
+
[categoryAxis]: category,
|
|
92
|
+
[`${valueAxis}1`]: 0,
|
|
93
|
+
[`${valueAxis}2`]: to
|
|
94
|
+
});
|
|
95
|
+
// The real bars draw the rows the "transforms" phase left, read through its channels.
|
|
96
|
+
const processedGroups = new Map(TransformsPhase.buildProcessedGroups(state, false).map((g) => [
|
|
97
|
+
seriesIdOf(g.series),
|
|
98
|
+
g
|
|
99
|
+
]));
|
|
100
|
+
const markers = [];
|
|
101
|
+
for (const group of groupedSeries) {
|
|
102
|
+
// Forwarded raw (a field key or function, whatever the series' category is)
|
|
103
|
+
// rather than pre-resolved into a closure - svelteplot's own
|
|
104
|
+
// `resolve()` already handles a field-key string per row, and only a
|
|
105
|
+
// literal string (not a function) lets its axis-title auto-inference
|
|
106
|
+
// see the field name. `keyof TData` is always a real string key in
|
|
107
|
+
// practice, just not provably so to TypeScript here.
|
|
108
|
+
const category = group.series[categoryAxis];
|
|
109
|
+
const defaultColor = state.colorForSeries(group.series.name);
|
|
110
|
+
const disabledFill = ctx.interaction?.fillFor(group.series.name);
|
|
111
|
+
const processed = processedGroups.get(seriesIdOf(group.series));
|
|
112
|
+
const processedCategory = processed?.series[categoryAxis];
|
|
113
|
+
const getMagnitude = resolveAccessor((processed?.series[valueAxis] ?? group.series[valueAxis]));
|
|
114
|
+
const signed = (d) => signFor(group.series, Math.abs(Number(getMagnitude(d))));
|
|
115
|
+
for (const seg of processed?.visualSegments ?? []) {
|
|
116
|
+
const realData = seg.data.filter((d) => !isGapValue(getMagnitude(d)));
|
|
117
|
+
if (realData.length === 0)
|
|
118
|
+
continue;
|
|
119
|
+
markers.push({
|
|
120
|
+
type: 'bar',
|
|
121
|
+
role: 'segment',
|
|
122
|
+
data: realData,
|
|
123
|
+
...span(processedCategory, signed),
|
|
124
|
+
styles: {
|
|
125
|
+
fill: disabledFill?.fill ?? seg.styles.fill ?? defaultColor,
|
|
126
|
+
fillOpacity: disabledFill?.fillOpacity ?? seg.styles.fillOpacity ?? 1
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
const fillMap = gapFillMaps.get(seriesIdOf(group.series)) ??
|
|
131
|
+
new Map();
|
|
132
|
+
for (const kind of GAP_KINDS) {
|
|
133
|
+
const filledRows = group.series.data.filter((d) => fillMap.get(d)?.kind === kind);
|
|
134
|
+
if (filledRows.length === 0)
|
|
135
|
+
continue;
|
|
136
|
+
const base = resolveGapAreaStyle(fillMap.get(filledRows[0]).style, defaultColor, gapDefaults);
|
|
137
|
+
// svelteplot shallow-clones each row before invoking a mark's own
|
|
138
|
+
// geometry accessors, so a `fillMap.get(d)` lookup inside `x2` would
|
|
139
|
+
// see a clone, not the original key - tag the resolved value onto the
|
|
140
|
+
// row as a plain field instead, which survives that clone.
|
|
141
|
+
const taggedData = filledRows.map((d) => ({
|
|
142
|
+
...d,
|
|
143
|
+
__gapValue: signFor(group.series, Math.abs(fillMap.get(d).value))
|
|
144
|
+
}));
|
|
145
|
+
markers.push({
|
|
146
|
+
type: 'bar',
|
|
147
|
+
role: 'segment',
|
|
148
|
+
data: taggedData,
|
|
149
|
+
...span(category, (d) => d.__gapValue),
|
|
150
|
+
styles: {
|
|
151
|
+
...base,
|
|
152
|
+
fill: disabledFill?.fill ?? base.fill,
|
|
153
|
+
fillOpacity: disabledFill?.fillOpacity ?? base.fillOpacity
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return markers;
|
|
159
|
+
}
|
|
@@ -1,295 +1,41 @@
|
|
|
1
1
|
<script lang="ts" generics="TData extends Record<string, unknown>">
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { buildSeries } from '../../utils/grouping';
|
|
6
|
-
import { getLegendInteraction } from '../../layout/legend/interaction.svelte';
|
|
7
|
-
import {
|
|
8
|
-
disabledDotsOverride,
|
|
9
|
-
resolveEffectiveDisabledStyle,
|
|
10
|
-
omitDisabledSeries,
|
|
11
|
-
buildSeriesColorIndex
|
|
12
|
-
} from '../utils/legendDisabled';
|
|
13
|
-
import { buildScatterMarkers } from './buildScatterMarkers';
|
|
14
|
-
import { resolveRadiusPaddedDomain } from './resolveRadiusPaddedDomain';
|
|
15
|
-
import {
|
|
16
|
-
createLabelMarginTracker,
|
|
17
|
-
halfDimensionOverflowCap
|
|
18
|
-
} from '../utils/labelOverflow.svelte';
|
|
19
|
-
import BasePlotLayout from '../../layout/plot/BasePlotLayout.svelte';
|
|
20
|
-
import ValueLabels from './ValueLabels.svelte';
|
|
21
|
-
import {
|
|
22
|
-
hasHoverMarker,
|
|
23
|
-
resolveHoverStrategy,
|
|
24
|
-
resolveHoverSync
|
|
25
|
-
} from '../../layout/tooltip/utils';
|
|
26
|
-
import {
|
|
27
|
-
buildGroupedSeries,
|
|
28
|
-
validateSegments,
|
|
29
|
-
buildScopedMarkerGroups
|
|
30
|
-
} from '../utils/segments';
|
|
31
|
-
import { numericMargin } from '../../layout/plot/margins';
|
|
32
|
-
import type { BasePlotProps } from '../../types/plots/props';
|
|
33
|
-
import type { AxisValue, AxisBasedScalesConfig } from '../../types/layout/scales';
|
|
34
|
-
import type { Series } from '../../types/plots/data/common';
|
|
35
|
-
import type { ScatterDataProps } from '../../types/plots/data/scatter';
|
|
36
|
-
import type { AxisBasedStylesConfig } from '../../types/layout/styles';
|
|
37
|
-
import type { ScatterSegmentStyle } from '../../types/plots/segments/common';
|
|
38
|
-
import type { AxisBasedMarkersConfig } from '../../types/markers/common';
|
|
39
|
-
import type { LegendDisabledStyle } from '../../types/layout/legend';
|
|
2
|
+
import Plot from '../../layout/plot/Plot.svelte';
|
|
3
|
+
import { buildScatterDefaults } from './defaults';
|
|
4
|
+
import type { ScatterPlotProps, ScatterPlotCoreProps } from '../../types/plots/scatter/props';
|
|
40
5
|
|
|
41
6
|
/**
|
|
42
|
-
* A point cloud on continuous x/y axes.
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* gives every dot a per-row radius (bubble sizing), independent of `z`
|
|
46
|
-
* grouping/coloring — see {@link ScatterDataProps} for its auto-scaling
|
|
47
|
-
* behavior.
|
|
7
|
+
* A point cloud on continuous x/y axes; `r` sizes each dot. Draws from pre-built `series` or flat `data` rows.
|
|
8
|
+
* Optional chrome (`title`, `subtitle`, `caption`, `header`, `footer`,
|
|
9
|
+
* `legend`) frames it; `timeline` and `facet` slice its `data` rows.
|
|
48
10
|
*/
|
|
49
|
-
type Props = BasePlotProps<
|
|
50
|
-
ScatterDataProps<TData>,
|
|
51
|
-
TData,
|
|
52
|
-
AxisBasedStylesConfig,
|
|
53
|
-
ScatterSegmentStyle,
|
|
54
|
-
AxisBasedMarkersConfig,
|
|
55
|
-
AxisBasedScalesConfig<TData>
|
|
56
|
-
>;
|
|
57
|
-
|
|
58
11
|
let {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
tooltip = undefined
|
|
73
|
-
}: Props = $props();
|
|
74
|
-
|
|
75
|
-
const cfg = $derived(getConfiguration());
|
|
76
|
-
const legendInteraction = $derived(getLegendInteraction());
|
|
77
|
-
// Unfiltered series list, for stable per-name color indexing.
|
|
78
|
-
const fullSeries = $derived(series ?? buildSeries(data!, x!, y!, z));
|
|
79
|
-
const colorIndex = $derived(buildSeriesColorIndex(fullSeries));
|
|
80
|
-
function colorForSeries(name: string): string {
|
|
81
|
-
return paletteColor(colorIndex.get(name) ?? 0, cfg.palette);
|
|
82
|
-
}
|
|
83
|
-
// Drops series toggled off with `disabled: { mode: 'omit' }`.
|
|
84
|
-
const resolvedSeries = $derived(omitDisabledSeries(fullSeries, legendInteraction));
|
|
85
|
-
|
|
86
|
-
$effect(() => {
|
|
87
|
-
validateSegments(segments);
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
// A scatter point cloud is discrete (no connecting line), so adjacent
|
|
91
|
-
// segments never need a bridge point at their boundary — see
|
|
92
|
-
// buildGroupedSeries's own doc.
|
|
93
|
-
const groupedSeries = $derived(
|
|
94
|
-
buildGroupedSeries<Series<TData>, ScatterSegmentStyle>(resolvedSeries, segments, false)
|
|
95
|
-
);
|
|
96
|
-
|
|
97
|
-
const showVals = $derived(styles.values?.show ?? false);
|
|
98
|
-
const formatValue = $derived(styles.values?.format ?? ((v: number) => `${v}`));
|
|
99
|
-
const hoverIsolate = $derived(styles.values?.hoverIsolate ?? false);
|
|
100
|
-
|
|
101
|
-
// A value label hovered while `styles.values.hoverIsolate` is on dims
|
|
102
|
-
// every other series exactly like a legend toggle would — local to this
|
|
103
|
-
// one `<Plot>` instance (not the shared HoverStore) so the gesture can't
|
|
104
|
-
// leak into unrelated tooltip/crosshair behavior.
|
|
105
|
-
let hoverIsolatedSeries = $state<string | null>(null);
|
|
106
|
-
|
|
107
|
-
function effectiveDisabledFor(name: string): LegendDisabledStyle | undefined {
|
|
108
|
-
return resolveEffectiveDisabledStyle(
|
|
109
|
-
name,
|
|
110
|
-
legendInteraction,
|
|
111
|
-
cfg.legend.disabledOpacity,
|
|
112
|
-
hoverIsolate,
|
|
113
|
-
hoverIsolatedSeries
|
|
114
|
-
);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
const xAcc = $derived(resolveAccessor(resolvedSeries[0]?.x ?? ((d: TData) => d)));
|
|
118
|
-
const yAcc = $derived(resolveAccessor(resolvedSeries[0]?.y ?? ((d: TData) => d)));
|
|
119
|
-
const flat = $derived(resolvedSeries.flatMap((s) => s.data));
|
|
120
|
-
|
|
121
|
-
// A legend-disabled series is dimmed on the mark itself, but never surfaces
|
|
122
|
-
// in hover/tooltip — its points are simply absent from the candidate list.
|
|
123
|
-
const hoverPoints = $derived(
|
|
124
|
-
resolvedSeries.flatMap((s) => {
|
|
125
|
-
if (legendInteraction?.disabledSeries.has(s.name)) return [];
|
|
126
|
-
const sx = resolveAccessor(s.x);
|
|
127
|
-
const sy = resolveAccessor(s.y);
|
|
128
|
-
return s.data.map((d) => ({
|
|
129
|
-
x: sx(d) as AxisValue,
|
|
130
|
-
y: Number(sy(d)),
|
|
131
|
-
row: d,
|
|
132
|
-
label: `${sx(d)}, ${sy(d)}`,
|
|
133
|
-
series: s.name,
|
|
134
|
-
color: colorForSeries(s.name)
|
|
135
|
-
}));
|
|
136
|
-
})
|
|
137
|
-
);
|
|
138
|
-
|
|
139
|
-
// Points scatter freely across x/y rather than sharing discrete x values —
|
|
140
|
-
// 'punctual' matches the single nearest point, not a whole column.
|
|
141
|
-
const hover = $derived({
|
|
142
|
-
active: tooltip != null || hasHoverMarker(markers),
|
|
143
|
-
points: hoverPoints,
|
|
144
|
-
label: (row: TData) => `${xAcc(row)}, ${yAcc(row)}`,
|
|
145
|
-
strategy: resolveHoverStrategy(tooltip?.strategy, markers, 'punctual'),
|
|
146
|
-
sync: resolveHoverSync(tooltip?.sync, markers),
|
|
147
|
-
tooltip
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
const scatterMarkers = $derived(
|
|
151
|
-
buildScatterMarkers({
|
|
152
|
-
groupedSeries,
|
|
153
|
-
r,
|
|
154
|
-
colorFor: colorForSeries,
|
|
155
|
-
disabledDotsFor: (name) => disabledDotsOverride(effectiveDisabledFor(name))
|
|
156
|
-
})
|
|
157
|
-
);
|
|
158
|
-
|
|
159
|
-
const scopedGroups = $derived(
|
|
160
|
-
buildScopedMarkerGroups<TData, Series<TData>, ScatterSegmentStyle>({
|
|
161
|
-
groupedSeries,
|
|
162
|
-
segments,
|
|
163
|
-
colorFor: (series) => colorForSeries(series.name),
|
|
164
|
-
segmentColorFor: (style, defaultColor) => style?.dotFill ?? defaultColor
|
|
165
|
-
})
|
|
166
|
-
);
|
|
167
|
-
|
|
168
|
-
// svelteplot treats a per-row `r` (a field key or accessor function) as a
|
|
169
|
-
// proper channel bound to its own auto sqrt scale — the raw values it
|
|
170
|
-
// returns (e.g. a population in the millions) are data, not pixels, and
|
|
171
|
-
// get compressed into a modest, roughly data-magnitude-independent pixel
|
|
172
|
-
// range regardless of how large the raw numbers are. A literal constant
|
|
173
|
-
// `r` (or the theme/segment `dotRadius` fallback), by contrast, *is*
|
|
174
|
-
// already a literal pixel value. `AUTO_SCALED_RADIUS_ESTIMATE` stands in
|
|
175
|
-
// for whatever svelteplot's own r-scale ends up rendering at, since the
|
|
176
|
-
// real value isn't knowable until that scale is built.
|
|
177
|
-
const AUTO_SCALED_RADIUS_ESTIMATE = 20;
|
|
178
|
-
|
|
179
|
-
// The largest radius any dot actually renders at — pads the scale domain
|
|
180
|
-
// below so a point at the data extreme doesn't get its own circle clipped
|
|
181
|
-
// by the frame. svelteplot's own 'auto' margin only measures axis chrome,
|
|
182
|
-
// never mark geometry.
|
|
183
|
-
const maxDotRadius = $derived.by(() => {
|
|
184
|
-
let max = 0;
|
|
185
|
-
for (const marker of scatterMarkers) {
|
|
186
|
-
const rConst = typeof marker.r === 'number' ? marker.r : undefined;
|
|
187
|
-
const isChannel = typeof marker.r === 'function';
|
|
188
|
-
const fallbackR = marker.style?.dotRadius ?? cfg.scatter.dotRadius;
|
|
189
|
-
if (rConst !== undefined) {
|
|
190
|
-
max = Math.max(max, rConst);
|
|
191
|
-
} else if (isChannel) {
|
|
192
|
-
max = Math.max(max, AUTO_SCALED_RADIUS_ESTIMATE);
|
|
193
|
-
} else {
|
|
194
|
-
max = Math.max(max, fallbackR);
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
return max;
|
|
198
|
-
});
|
|
199
|
-
|
|
200
|
-
// Best-effort pre-render estimate of the plot's own inner content size —
|
|
201
|
-
// the real size isn't known until svelteplot measures its own axis
|
|
202
|
-
// chrome, so this is only used to convert a pixel radius into a domain
|
|
203
|
-
// padding amount, not as the actual rendered margin.
|
|
204
|
-
const estimatedMargins = $derived({ ...cfg.margins, ...margins });
|
|
205
|
-
const estimatedInnerWidth = $derived(
|
|
206
|
-
width -
|
|
207
|
-
numericMargin('left', estimatedMargins.left) -
|
|
208
|
-
numericMargin('right', estimatedMargins.right)
|
|
209
|
-
);
|
|
210
|
-
const estimatedInnerHeight = $derived(
|
|
211
|
-
height -
|
|
212
|
-
numericMargin('top', estimatedMargins.top) -
|
|
213
|
-
numericMargin('bottom', estimatedMargins.bottom)
|
|
214
|
-
);
|
|
215
|
-
|
|
216
|
-
const resolvedScales = $derived.by((): AxisBasedScalesConfig<TData> => {
|
|
217
|
-
if (maxDotRadius <= 0) return scales;
|
|
218
|
-
const xValues = flat.map((d) => Number(xAcc(d)));
|
|
219
|
-
const yValues = flat.map((d) => Number(yAcc(d)));
|
|
220
|
-
const paddedX = scales.x?.domain
|
|
221
|
-
? undefined
|
|
222
|
-
: resolveRadiusPaddedDomain(xValues, maxDotRadius, estimatedInnerWidth);
|
|
223
|
-
const paddedY = scales.y?.domain
|
|
224
|
-
? undefined
|
|
225
|
-
: resolveRadiusPaddedDomain(yValues, maxDotRadius, estimatedInnerHeight);
|
|
226
|
-
if (!paddedX && !paddedY) return scales;
|
|
227
|
-
return {
|
|
228
|
-
...scales,
|
|
229
|
-
x: paddedX ? { ...scales.x, domain: paddedX } : scales.x,
|
|
230
|
-
y: paddedY ? { ...scales.y, domain: paddedY } : scales.y
|
|
231
|
-
};
|
|
232
|
-
});
|
|
233
|
-
|
|
234
|
-
// See `halfDimensionOverflowCap`'s own doc comment — relevant here mainly
|
|
235
|
-
// for a corner point with no room in any direction even after
|
|
236
|
-
// `resolveEdgeAwareAnchor`'s own flip.
|
|
237
|
-
const maxLabelOverflow = $derived(halfDimensionOverflowCap(width, height));
|
|
238
|
-
|
|
239
|
-
// A scatter point's value label can grow past the plot's own content box
|
|
240
|
-
// (e.g. a point volcado toward a corner, past what its own edge-aware flip
|
|
241
|
-
// can fit) — reserving real space there is what each label's own overflow
|
|
242
|
-
// measurement feeds into here, via a tracker local to this one `<Plot>`
|
|
243
|
-
// instance. See `labelOverflow.svelte.ts`. Resets on `resolvedSeries` so
|
|
244
|
-
// overflow from an earlier, differently-shaped frame doesn't linger once
|
|
245
|
-
// that frame is gone.
|
|
246
|
-
const labelMargin = createLabelMarginTracker(
|
|
247
|
-
() => margins,
|
|
248
|
-
() => resolvedSeries,
|
|
249
|
-
undefined,
|
|
250
|
-
() => maxLabelOverflow
|
|
251
|
-
);
|
|
12
|
+
title,
|
|
13
|
+
subtitle,
|
|
14
|
+
caption,
|
|
15
|
+
header,
|
|
16
|
+
footer,
|
|
17
|
+
legend,
|
|
18
|
+
order,
|
|
19
|
+
timeline,
|
|
20
|
+
facet,
|
|
21
|
+
tooltip,
|
|
22
|
+
margins = $bindable(),
|
|
23
|
+
...core
|
|
24
|
+
}: ScatterPlotProps<TData> = $props();
|
|
252
25
|
</script>
|
|
253
26
|
|
|
254
|
-
<
|
|
255
|
-
{
|
|
256
|
-
{
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
{
|
|
262
|
-
|
|
263
|
-
{
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
{
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
{#if showVals}
|
|
270
|
-
{#each groupedSeries as group (group.series.name)}
|
|
271
|
-
<ValueLabels
|
|
272
|
-
{group}
|
|
273
|
-
{formatValue}
|
|
274
|
-
values={styles.values}
|
|
275
|
-
defaultColor={cfg.axis.color}
|
|
276
|
-
disabled={effectiveDisabledFor(group.series.name)}
|
|
277
|
-
{width}
|
|
278
|
-
{height}
|
|
279
|
-
{numericMargins}
|
|
280
|
-
onHoverSeries={hoverIsolate
|
|
281
|
-
? () => {
|
|
282
|
-
hoverIsolatedSeries = group.series.name;
|
|
283
|
-
}
|
|
284
|
-
: undefined}
|
|
285
|
-
onHoverEnd={hoverIsolate
|
|
286
|
-
? () => {
|
|
287
|
-
hoverIsolatedSeries = null;
|
|
288
|
-
}
|
|
289
|
-
: undefined}
|
|
290
|
-
onOverflow={labelMargin.report}
|
|
291
|
-
/>
|
|
292
|
-
{/each}
|
|
293
|
-
{/if}
|
|
294
|
-
{/snippet}
|
|
295
|
-
</BasePlotLayout>
|
|
27
|
+
<Plot
|
|
28
|
+
core={core as ScatterPlotCoreProps<TData>}
|
|
29
|
+
defaults={buildScatterDefaults}
|
|
30
|
+
bind:margins
|
|
31
|
+
{title}
|
|
32
|
+
{subtitle}
|
|
33
|
+
{caption}
|
|
34
|
+
{header}
|
|
35
|
+
{footer}
|
|
36
|
+
{legend}
|
|
37
|
+
{order}
|
|
38
|
+
{timeline}
|
|
39
|
+
{facet}
|
|
40
|
+
{tooltip}
|
|
41
|
+
/>
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type {
|
|
3
|
-
import type { ScatterDataProps } from '../../types/plots/data/scatter';
|
|
4
|
-
import type { AxisBasedStylesConfig } from '../../types/layout/styles';
|
|
5
|
-
import type { AxisBasedMarkersConfig } from '../../types/markers/common';
|
|
1
|
+
import Plot from '../../layout/plot/Plot.svelte';
|
|
2
|
+
import type { ScatterPlotProps } from '../../types/plots/scatter/props';
|
|
6
3
|
declare function $$render<TData extends Record<string, unknown>>(): {
|
|
7
|
-
props:
|
|
4
|
+
props: ScatterPlotProps<TData>;
|
|
8
5
|
exports: {};
|
|
9
|
-
bindings: "";
|
|
6
|
+
bindings: "margins";
|
|
10
7
|
slots: {};
|
|
11
8
|
events: {};
|
|
12
9
|
};
|
|
@@ -14,7 +11,7 @@ declare class __sveltets_Render<TData extends Record<string, unknown>> {
|
|
|
14
11
|
props(): ReturnType<typeof $$render<TData>>['props'];
|
|
15
12
|
events(): ReturnType<typeof $$render<TData>>['events'];
|
|
16
13
|
slots(): ReturnType<typeof $$render<TData>>['slots'];
|
|
17
|
-
bindings(): "";
|
|
14
|
+
bindings(): "margins";
|
|
18
15
|
exports(): {};
|
|
19
16
|
}
|
|
20
17
|
interface $$IsomorphicComponent {
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AxisPlotDefaults } from '../../types/phases';
|
|
2
|
+
import type { ScatterPlotState, ScatterPlotCtx } from '../../types/plots/scatter/state';
|
|
3
|
+
/** ScatterPlot on the shared pipeline: discrete dots, its own radius-padded scales, and its own markers. Its plot defaults to: hover the exact point. */
|
|
4
|
+
export declare function buildScatterDefaults<TData extends Record<string, unknown>>(): AxisPlotDefaults<ScatterPlotState<TData>, ScatterPlotCtx>;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { buildMarks, buildValueLabels } from './markers';
|
|
2
|
+
import { TransformsPhase } from '../../phases/transforms/TransformsPhase';
|
|
3
|
+
import { Margins } from '../../layout/margins/Margins';
|
|
4
|
+
import { MarkerAxisValues } from '../../phases/scales/MarkerAxisValues';
|
|
5
|
+
/** Stand-in max render radius for a channel-bound `r` (svelteplot's own auto sqrt scale). */
|
|
6
|
+
const AUTO_SCALED_RADIUS_ESTIMATE = 20;
|
|
7
|
+
/**
|
|
8
|
+
* `values`' extent widened by `radiusPx` of data on each side, over a plot
|
|
9
|
+
* `sizePx` wide, so the largest dot doesn't clip the frame. All-equal values
|
|
10
|
+
* widen by a unit instead.
|
|
11
|
+
*/
|
|
12
|
+
function paddedDomain(values, radiusPx, sizePx) {
|
|
13
|
+
const finite = values.filter((v) => Number.isFinite(v));
|
|
14
|
+
if (finite.length === 0)
|
|
15
|
+
return undefined;
|
|
16
|
+
const min = Math.min(...finite);
|
|
17
|
+
const max = Math.max(...finite);
|
|
18
|
+
if (min === max)
|
|
19
|
+
return [min - 1, max + 1];
|
|
20
|
+
const pad = sizePx > 0 ? (radiusPx * (max - min)) / sizePx : 0;
|
|
21
|
+
return [min - pad, max + pad];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The domains a scatter fits to its own dots: each unpinned axis padded by
|
|
25
|
+
* the largest dot's radius, and grown to cover what derived markers draw
|
|
26
|
+
* (a density curve's peak, a regression band).
|
|
27
|
+
*/
|
|
28
|
+
function fitDomains(state, ctx) {
|
|
29
|
+
const { scales, channels, groupedSeries } = state;
|
|
30
|
+
const processed = state.processedData;
|
|
31
|
+
const position = TransformsPhase.processedPosition(processed);
|
|
32
|
+
const extra = {
|
|
33
|
+
x: MarkerAxisValues.of(state.markers ?? [], 'x'),
|
|
34
|
+
y: MarkerAxisValues.of(state.markers ?? [], 'y')
|
|
35
|
+
};
|
|
36
|
+
// The largest radius a dot renders at, from the `r` channel and segment styles.
|
|
37
|
+
const r = channels.r;
|
|
38
|
+
const radius = typeof r === 'number'
|
|
39
|
+
? r
|
|
40
|
+
: r !== undefined
|
|
41
|
+
? AUTO_SCALED_RADIUS_ESTIMATE
|
|
42
|
+
: Math.max(0, ...groupedSeries.flatMap((group) => group.visualSegments.map((seg) => seg.styles.dotRadius ?? ctx.cfg.scatter.dotRadius)));
|
|
43
|
+
if (radius <= 0 && !extra.x.length && !extra.y.length)
|
|
44
|
+
return {};
|
|
45
|
+
const box = Margins.resolve({ ...ctx.cfg.margins, ...state.margins }).contentBox(state.width, state.height);
|
|
46
|
+
const fit = {};
|
|
47
|
+
for (const [axis, size] of [
|
|
48
|
+
['x', box.width],
|
|
49
|
+
['y', box.height]
|
|
50
|
+
]) {
|
|
51
|
+
if (scales[axis]?.domain)
|
|
52
|
+
continue;
|
|
53
|
+
const values = [...processed.data.map((d) => Number(position[axis](d))), ...extra[axis]];
|
|
54
|
+
const domain = paddedDomain(values, radius, size);
|
|
55
|
+
if (domain)
|
|
56
|
+
fit[axis] = { domain };
|
|
57
|
+
}
|
|
58
|
+
return fit;
|
|
59
|
+
}
|
|
60
|
+
/** ScatterPlot on the shared pipeline: discrete dots, its own radius-padded scales, and its own markers. Its plot defaults to: hover the exact point. */
|
|
61
|
+
export function buildScatterDefaults() {
|
|
62
|
+
return {
|
|
63
|
+
data: {
|
|
64
|
+
segments: {
|
|
65
|
+
color: (style) => style?.dotFill,
|
|
66
|
+
connect: false
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
scales: { fit: fitDomains },
|
|
70
|
+
markers: { marks: buildMarks, valueLabels: buildValueLabels },
|
|
71
|
+
hover: {
|
|
72
|
+
strategy: 'punctual',
|
|
73
|
+
label: (state) => {
|
|
74
|
+
const { x, y } = state.channels;
|
|
75
|
+
return (row) => `${x.accessor(row)}, ${y.accessor(row)}`;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ScatterPlotState, ScatterPlotCtx } from '../../types/plots/scatter/state';
|
|
2
|
+
import type { TextMarkerConfig } from '../../types/markers/common';
|
|
3
|
+
import { ValueLabels } from '../../layout/styles/ValueLabels';
|
|
4
|
+
import type { AxisBasedMarkersConfig } from '../../types/markers/common';
|
|
5
|
+
/**
|
|
6
|
+
* ScatterPlot's `styles.values` as one `'text'` marker over the same
|
|
7
|
+
* processed rows its dots draw, each labelled with its own `y` value. A label
|
|
8
|
+
* sits beside its point and flips to the other side where its text would
|
|
9
|
+
* cross the plot's edge (`edgeAware`).
|
|
10
|
+
*/
|
|
11
|
+
export declare function buildValueLabels<TData extends Record<string, unknown>>(labels: ValueLabels, state: ScatterPlotState<TData>, ctx: ScatterPlotCtx): TextMarkerConfig[];
|
|
12
|
+
/**
|
|
13
|
+
* ScatterPlot's "markers" phase: one `'dot'` marker per visual segment of the
|
|
14
|
+
* rows the "transforms" phase left, in their own order, so a reordering
|
|
15
|
+
* transform decides which dots paint on top - prepended onto whatever the
|
|
16
|
+
* "statistics" phase already put in `state.markers` - and its value labels on
|
|
17
|
+
* top of everything.
|
|
18
|
+
*/
|
|
19
|
+
export declare function buildMarks<TData extends Record<string, unknown>>(state: ScatterPlotState<TData>, ctx: ScatterPlotCtx): AxisBasedMarkersConfig[];
|