@fundar/data-chart-telling 0.0.64 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +38 -0
- package/LICENSE +21 -0
- package/README.md +112 -553
- package/dist/configuration/config.svelte.d.ts +5 -5
- package/dist/configuration/config.svelte.js +142 -46
- package/dist/configuration/fonts.d.ts +6 -0
- package/dist/configuration/fonts.js +6 -0
- package/dist/configuration/themes/compact.d.ts +2 -2
- package/dist/configuration/themes/compact.js +1 -1
- package/dist/configuration/themes/dark.d.ts +2 -2
- package/dist/configuration/themes/dark.js +5 -4
- package/dist/configuration/themes/default.d.ts +8 -3
- package/dist/configuration/themes/default.js +8 -2
- package/dist/configuration/themes/editorial.d.ts +2 -2
- package/dist/configuration/themes/editorial.js +2 -2
- package/dist/configuration/themes/index.d.ts +545 -80
- package/dist/configuration/themes/index.js +6 -5
- package/dist/index.d.ts +35 -48
- package/dist/index.js +20 -35
- package/dist/layout/base/BasePlotLayout.svelte +325 -0
- package/dist/layout/base/BasePlotLayout.svelte.d.ts +111 -0
- package/dist/layout/composer/PlotComposer.svelte +94 -0
- package/dist/layout/composer/PlotComposer.svelte.d.ts +13 -0
- package/dist/layout/coordinates/CameraFit.svelte +4 -4
- package/dist/layout/coordinates/CoordinatesLayout.svelte +11 -3
- package/dist/layout/coordinates/CoordinatesLayout.svelte.d.ts +6 -2
- package/dist/layout/coordinates/camera.svelte.d.ts +1 -1
- package/dist/layout/coordinates/camera.svelte.js +6 -6
- package/dist/layout/coordinates/projections/argentina.js +3 -3
- package/dist/layout/coordinates/projections/fit.js +1 -1
- package/dist/layout/coordinates/resolveCameraTarget.d.ts +1 -1
- package/dist/layout/coordinates/resolveProjection.d.ts +1 -1
- package/dist/layout/coordinates/resolveProjection.js +2 -2
- package/dist/layout/coordinates/rotate.svelte.d.ts +3 -3
- package/dist/layout/coordinates/rotate.svelte.js +8 -8
- package/dist/layout/coordinates/zoom.svelte.d.ts +1 -1
- package/dist/layout/facet/FacetIndicator.svelte +23 -23
- package/dist/layout/facet/FacetLayout.svelte +435 -398
- package/dist/layout/facet/FacetLayout.svelte.d.ts +9 -3
- package/dist/layout/facet/axes.d.ts +16 -0
- package/dist/layout/facet/axes.js +25 -0
- package/dist/layout/facet/config.d.ts +32 -0
- package/dist/layout/facet/config.js +82 -0
- package/dist/layout/figure/Figure.svelte +177 -0
- package/dist/layout/figure/Figure.svelte.d.ts +14 -0
- package/dist/layout/figure/FigureChrome.svelte +341 -0
- package/dist/layout/figure/FigureChrome.svelte.d.ts +21 -0
- package/dist/layout/geometry/FrameClip.svelte +45 -0
- package/dist/layout/geometry/FrameClip.svelte.d.ts +8 -0
- package/dist/layout/geometry/FrameClipping.d.ts +24 -0
- package/dist/layout/geometry/FrameClipping.js +40 -0
- package/dist/layout/geometry/GeometryLayout.svelte +287 -224
- package/dist/layout/geometry/GeometryLayout.svelte.d.ts +10 -10
- package/dist/layout/grid/Grid.svelte +194 -0
- package/dist/layout/grid/Grid.svelte.d.ts +26 -0
- package/dist/layout/grid/GridAlignment.svelte.d.ts +31 -0
- package/dist/layout/grid/GridAlignment.svelte.js +56 -0
- package/dist/layout/grid/GridCell.svelte +141 -0
- package/dist/layout/grid/GridCell.svelte.d.ts +17 -0
- package/dist/layout/grid/GridCellsRegistry.svelte.d.ts +52 -0
- package/dist/layout/grid/GridCellsRegistry.svelte.js +70 -0
- package/dist/layout/grid/GridPlan.d.ts +49 -0
- package/dist/layout/grid/GridPlan.js +167 -0
- package/dist/layout/grid/Tags.d.ts +8 -0
- package/dist/layout/grid/Tags.js +39 -0
- package/dist/layout/hover/HoverScope.svelte +11 -0
- package/dist/layout/hover/HoverScope.svelte.d.ts +8 -0
- package/dist/layout/hover/HoverSettings.d.ts +34 -0
- package/dist/layout/hover/HoverSettings.js +52 -0
- package/dist/layout/hover/HoverState.svelte.d.ts +47 -0
- package/dist/layout/hover/HoverState.svelte.js +99 -0
- package/dist/layout/hover/PlotHover.svelte.d.ts +63 -0
- package/dist/layout/hover/PlotHover.svelte.js +133 -0
- package/dist/layout/interaction/PlotInteraction.svelte.d.ts +38 -0
- package/dist/layout/interaction/PlotInteraction.svelte.js +56 -0
- package/dist/layout/legend/AxisNumberFormat.d.ts +12 -0
- package/dist/layout/legend/AxisNumberFormat.js +25 -0
- package/dist/layout/legend/ContinuousSection.svelte +363 -351
- package/dist/layout/legend/DisabledStyle.d.ts +19 -0
- package/dist/layout/legend/DisabledStyle.js +57 -0
- package/dist/layout/legend/DiscreteBadgeItem.svelte +6 -3
- package/dist/layout/legend/DiscreteSection.svelte +32 -32
- package/dist/layout/legend/DiscreteSwatchItem.svelte +4 -1
- package/dist/layout/legend/DiscreteSymbolIcon.svelte +14 -9
- package/dist/layout/legend/LegendChannels.d.ts +21 -0
- package/dist/layout/legend/LegendChannels.js +221 -0
- package/dist/layout/legend/LegendLayout.svelte +49 -43
- package/dist/layout/legend/LegendState.svelte.d.ts +84 -0
- package/dist/layout/legend/LegendState.svelte.js +333 -0
- package/dist/layout/legend/LegendText.d.ts +12 -0
- package/dist/layout/legend/LegendText.js +22 -0
- package/dist/layout/legend/SizeSection.svelte +84 -0
- package/dist/layout/legend/SizeSection.svelte.d.ts +7 -0
- package/dist/layout/legend/SymbolSection.svelte +31 -0
- package/dist/layout/legend/SymbolSection.svelte.d.ts +8 -0
- package/dist/layout/margins/Box.d.ts +84 -0
- package/dist/layout/margins/Box.js +138 -0
- package/dist/layout/margins/Margins.d.ts +37 -0
- package/dist/layout/margins/Margins.js +71 -0
- package/dist/layout/margins/PlotMargins.svelte.d.ts +101 -0
- package/dist/layout/margins/PlotMargins.svelte.js +219 -0
- package/dist/layout/plot/Core.svelte +61 -0
- package/dist/layout/plot/Core.svelte.d.ts +41 -0
- package/dist/layout/plot/PanelRun.svelte +28 -0
- package/dist/{charts/heatmap/Chart.svelte.d.ts → layout/plot/PanelRun.svelte.d.ts} +11 -7
- package/dist/layout/plot/Plot.svelte +287 -0
- package/dist/layout/plot/Plot.svelte.d.ts +49 -0
- package/dist/layout/plot/PlotContext.d.ts +41 -0
- package/dist/layout/plot/PlotContext.js +46 -0
- package/dist/layout/plot/PublicPlotContext.d.ts +131 -0
- package/dist/layout/plot/PublicPlotContext.js +240 -0
- package/dist/layout/plot/Slice.d.ts +44 -0
- package/dist/layout/plot/Slice.js +100 -0
- package/dist/layout/plot/usePlot.d.ts +9 -0
- package/dist/layout/plot/usePlot.js +13 -0
- package/dist/layout/scales/EdgeTicks.d.ts +39 -0
- package/dist/layout/scales/EdgeTicks.js +82 -0
- package/dist/layout/scales/NiceTicks.d.ts +40 -0
- package/dist/layout/scales/NiceTicks.js +72 -0
- package/dist/layout/scales/ScalesLayout.svelte +275 -206
- package/dist/layout/scales/ScalesLayout.svelte.d.ts +7 -1
- package/dist/layout/scales/SveltePlotScale.d.ts +15 -0
- package/dist/layout/scales/SveltePlotScale.js +79 -0
- package/dist/layout/styles/StylesLayout.svelte +65 -65
- package/dist/layout/styles/TileLayer.svelte +78 -76
- package/dist/layout/styles/TileLayer.svelte.d.ts +1 -1
- package/dist/layout/styles/ValueLabels.d.ts +97 -0
- package/dist/layout/styles/ValueLabels.js +238 -0
- package/dist/layout/timeline/Timeline.svelte +83 -74
- package/dist/layout/timeline/Timeline.svelte.d.ts +2 -0
- package/dist/layout/timeline/TimelineFrame.svelte +86 -0
- package/dist/layout/timeline/TimelineFrame.svelte.d.ts +16 -0
- package/dist/layout/timeline/TimelineLayout.svelte +140 -169
- package/dist/layout/timeline/TimelineLayout.svelte.d.ts +7 -3
- package/dist/layout/timeline/TimelinePlayer.svelte +195 -0
- package/dist/layout/timeline/TimelinePlayer.svelte.d.ts +7 -0
- package/dist/layout/timeline/TimelineRule.svelte +51 -0
- package/dist/layout/timeline/TimelineRule.svelte.d.ts +7 -0
- package/dist/layout/timeline/TimelineState.svelte.d.ts +90 -0
- package/dist/layout/timeline/TimelineState.svelte.js +260 -0
- package/dist/layout/timeline/TimelineSteps.d.ts +24 -0
- package/dist/layout/timeline/TimelineSteps.js +48 -0
- package/dist/layout/timeline/TimelineTime.d.ts +18 -0
- package/dist/layout/timeline/TimelineTime.js +117 -0
- package/dist/layout/tooltip/Tooltip.svelte +85 -85
- package/dist/layout/tooltip/Tooltip.svelte.d.ts +45 -24
- package/dist/layout/tooltip/TooltipState.svelte.d.ts +67 -0
- package/dist/layout/tooltip/TooltipState.svelte.js +126 -0
- package/dist/markers/MarkerKinds.d.ts +173 -0
- package/dist/markers/MarkerKinds.js +51 -0
- package/dist/markers/area/AreaMarker.svelte +110 -0
- package/dist/markers/area/AreaMarker.svelte.d.ts +7 -0
- package/dist/markers/arrow/ArrowMarker.svelte +28 -0
- package/dist/markers/arrow/ArrowMarker.svelte.d.ts +7 -0
- package/dist/markers/{BarMarker.svelte → bar/BarMarker.svelte} +54 -52
- package/dist/markers/{BarMarker.svelte.d.ts → bar/BarMarker.svelte.d.ts} +1 -1
- package/dist/markers/bollinger/BollingerMarker.svelte +44 -0
- package/dist/markers/bollinger/BollingerMarker.svelte.d.ts +7 -0
- package/dist/markers/box/BoxMarker.svelte +143 -0
- package/dist/markers/box/BoxMarker.svelte.d.ts +7 -0
- package/dist/markers/brush/BrushMarker.svelte +32 -0
- package/dist/markers/brush/BrushMarker.svelte.d.ts +7 -0
- package/dist/markers/cell/CellMarker.svelte +27 -0
- package/dist/markers/{CellMarker.svelte.d.ts → cell/CellMarker.svelte.d.ts} +1 -1
- package/dist/markers/contour/ContourClipMarker.svelte +83 -0
- package/dist/markers/{ContourClipMarker.svelte.d.ts → contour/ContourClipMarker.svelte.d.ts} +1 -1
- package/dist/markers/contour/ContourMarker.svelte +28 -0
- package/dist/markers/{ContourMarker.svelte.d.ts → contour/ContourMarker.svelte.d.ts} +1 -1
- package/dist/markers/delaunay/DelaunayLinkMarker.svelte +26 -0
- package/dist/markers/delaunay/DelaunayLinkMarker.svelte.d.ts +7 -0
- package/dist/markers/delaunay/DelaunayMeshMarker.svelte +26 -0
- package/dist/markers/delaunay/DelaunayMeshMarker.svelte.d.ts +7 -0
- package/dist/markers/delta/Delta.d.ts +21 -0
- package/dist/markers/delta/Delta.js +60 -0
- package/dist/markers/delta/DeltaMarker.svelte +96 -0
- package/dist/markers/{DeltaMarker.svelte.d.ts → delta/DeltaMarker.svelte.d.ts} +2 -2
- package/dist/markers/density/DensityMarker.svelte +63 -0
- package/dist/markers/density/DensityMarker.svelte.d.ts +7 -0
- package/dist/markers/difference/DifferenceMarker.svelte +30 -0
- package/dist/markers/difference/DifferenceMarker.svelte.d.ts +7 -0
- package/dist/markers/dot/DotMarker.svelte +102 -0
- package/dist/markers/{DotMarker.svelte.d.ts → dot/DotMarker.svelte.d.ts} +5 -17
- package/dist/markers/geo/GeoFeaturesMarker.svelte +39 -0
- package/dist/markers/{GeoFeaturesMarker.svelte.d.ts → geo/GeoFeaturesMarker.svelte.d.ts} +1 -1
- package/dist/markers/geo/GeoHoverMarker.svelte +28 -0
- package/dist/markers/{GeoHoverMarker.svelte.d.ts → geo/GeoHoverMarker.svelte.d.ts} +2 -2
- package/dist/markers/geo/GraticuleMarker.svelte +18 -0
- package/dist/markers/{GraticuleMarker.svelte.d.ts → geo/GraticuleMarker.svelte.d.ts} +1 -1
- package/dist/markers/geo/SphereMarker.svelte +15 -0
- package/dist/markers/{SphereMarker.svelte.d.ts → geo/SphereMarker.svelte.d.ts} +1 -1
- package/dist/markers/hover/HoverMarker.svelte +252 -0
- package/dist/markers/{HoverMarker.svelte.d.ts → hover/HoverMarker.svelte.d.ts} +10 -10
- package/dist/markers/hull/HullMarker.svelte +25 -0
- package/dist/markers/hull/HullMarker.svelte.d.ts +7 -0
- package/dist/markers/image/ImageMarker.svelte +22 -0
- package/dist/markers/image/ImageMarker.svelte.d.ts +7 -0
- package/dist/markers/inset/InsetMarker.svelte +184 -150
- package/dist/markers/inset/InsetMarker.svelte.d.ts +4 -4
- package/dist/markers/inset/insetLayout.d.ts +1 -1
- package/dist/markers/inset/insetLayout.js +6 -2
- package/dist/markers/inset/insetProjection.d.ts +1 -1
- package/dist/markers/inset/insetProjection.js +3 -3
- package/dist/markers/line/LineMarker.svelte +30 -0
- package/dist/markers/{LineMarker.svelte.d.ts → line/LineMarker.svelte.d.ts} +1 -1
- package/dist/markers/link/LinkMarker.svelte +47 -0
- package/dist/markers/{LinkMarker.svelte.d.ts → link/LinkMarker.svelte.d.ts} +1 -1
- package/dist/markers/raster/RasterMarker.svelte +31 -0
- package/dist/markers/raster/RasterMarker.svelte.d.ts +7 -0
- package/dist/markers/rect/RectMarker.svelte +62 -0
- package/dist/markers/rect/RectMarker.svelte.d.ts +7 -0
- package/dist/markers/regression/RegressionMarker.svelte +60 -0
- package/dist/markers/regression/RegressionMarker.svelte.d.ts +7 -0
- package/dist/markers/rule/RuleMarker.svelte +47 -0
- package/dist/markers/{RuleMarker.svelte.d.ts → rule/RuleMarker.svelte.d.ts} +2 -5
- package/dist/markers/text/Declutter.d.ts +35 -0
- package/dist/markers/text/Declutter.js +157 -0
- package/dist/markers/text/TextMarker.svelte +244 -0
- package/dist/markers/{TextMarker.svelte.d.ts → text/TextMarker.svelte.d.ts} +5 -9
- package/dist/markers/tick/TickMarker.svelte +44 -0
- package/dist/markers/tick/TickMarker.svelte.d.ts +7 -0
- package/dist/markers/trail/TrailMarker.svelte +27 -0
- package/dist/markers/trail/TrailMarker.svelte.d.ts +7 -0
- package/dist/markers/utils/BandNudge.d.ts +22 -0
- package/dist/markers/utils/BandNudge.js +23 -0
- package/dist/markers/utils/MarkerChannels.d.ts +49 -0
- package/dist/markers/utils/MarkerChannels.js +97 -0
- package/dist/markers/vector/VectorMarker.svelte +29 -0
- package/dist/markers/{VectorMarker.svelte.d.ts → vector/VectorMarker.svelte.d.ts} +1 -1
- package/dist/markers/voronoi/VoronoiMarker.svelte +26 -0
- package/dist/markers/voronoi/VoronoiMarker.svelte.d.ts +7 -0
- package/dist/markers/voronoi/VoronoiMeshMarker.svelte +26 -0
- package/dist/markers/voronoi/VoronoiMeshMarker.svelte.d.ts +7 -0
- package/dist/markers/waffle/WaffleMarker.svelte +56 -0
- package/dist/markers/waffle/WaffleMarker.svelte.d.ts +7 -0
- package/dist/phases/Pipeline.d.ts +108 -0
- package/dist/phases/Pipeline.js +227 -0
- package/dist/phases/data/DataPhase.d.ts +19 -0
- package/dist/phases/data/DataPhase.js +85 -0
- package/dist/phases/data/PlotAxes.d.ts +75 -0
- package/dist/phases/data/PlotAxes.js +151 -0
- package/dist/phases/facet/FacetPanels.d.ts +54 -0
- package/dist/phases/facet/FacetPanels.js +95 -0
- package/dist/phases/facet/FacetPhase.d.ts +11 -0
- package/dist/phases/facet/FacetPhase.js +28 -0
- package/dist/phases/hover/HoverPhase.d.ts +36 -0
- package/dist/phases/hover/HoverPhase.js +109 -0
- package/dist/phases/mapping/MappingPhase.d.ts +17 -0
- package/dist/phases/mapping/MappingPhase.js +40 -0
- package/dist/phases/markers/MarkersPhase.d.ts +14 -0
- package/dist/phases/markers/MarkersPhase.js +27 -0
- package/dist/phases/scales/MarkerAxisValues.d.ts +12 -0
- package/dist/phases/scales/MarkerAxisValues.js +34 -0
- package/dist/phases/scales/ScalesPhase.d.ts +29 -0
- package/dist/phases/scales/ScalesPhase.js +153 -0
- package/dist/phases/sharedScales/SharedScalesPhase.d.ts +58 -0
- package/dist/phases/sharedScales/SharedScalesPhase.js +171 -0
- package/dist/phases/statistics/AuthorMarkers.d.ts +43 -0
- package/dist/phases/statistics/AuthorMarkers.js +69 -0
- package/dist/phases/statistics/MarkerGrouping.d.ts +48 -0
- package/dist/phases/statistics/MarkerGrouping.js +113 -0
- package/dist/phases/statistics/Statistics.d.ts +53 -0
- package/dist/phases/statistics/Statistics.js +156 -0
- package/dist/phases/statistics/StatisticsPhase.d.ts +18 -0
- package/dist/phases/statistics/StatisticsPhase.js +67 -0
- package/dist/phases/statistics/methods/BollingerStatistic.d.ts +9 -0
- package/dist/phases/statistics/methods/BollingerStatistic.js +18 -0
- package/dist/phases/statistics/methods/BoxStatistic.d.ts +9 -0
- package/dist/phases/statistics/methods/BoxStatistic.js +18 -0
- package/dist/phases/statistics/methods/Density2dStatistic.d.ts +9 -0
- package/dist/phases/statistics/methods/Density2dStatistic.js +18 -0
- package/dist/phases/statistics/methods/DensityStatistic.d.ts +12 -0
- package/dist/phases/statistics/methods/DensityStatistic.js +29 -0
- package/dist/phases/statistics/methods/MovingAverageStatistic.d.ts +12 -0
- package/dist/phases/statistics/methods/MovingAverageStatistic.js +30 -0
- package/dist/phases/statistics/methods/RegressionStatistic.d.ts +9 -0
- package/dist/phases/statistics/methods/RegressionStatistic.js +21 -0
- package/dist/phases/styles/StylesPhase.d.ts +13 -0
- package/dist/phases/styles/StylesPhase.js +17 -0
- package/dist/phases/tooltip/TooltipPhase.d.ts +14 -0
- package/dist/phases/tooltip/TooltipPhase.js +17 -0
- package/dist/phases/transforms/ProcessedPositions.d.ts +30 -0
- package/dist/phases/transforms/ProcessedPositions.js +74 -0
- package/dist/phases/transforms/Transforms.d.ts +42 -0
- package/dist/phases/transforms/Transforms.js +130 -0
- package/dist/phases/transforms/TransformsPhase.d.ts +27 -0
- package/dist/phases/transforms/TransformsPhase.js +205 -0
- package/dist/phases/transforms/methods/AnchorBar.d.ts +13 -0
- package/dist/phases/transforms/methods/AnchorBar.js +21 -0
- package/dist/phases/transforms/methods/BinTransform.d.ts +7 -0
- package/dist/phases/transforms/methods/BinTransform.js +48 -0
- package/dist/phases/transforms/methods/DensityTransform.d.ts +6 -0
- package/dist/phases/transforms/methods/DensityTransform.js +13 -0
- package/dist/phases/transforms/methods/GroupTransform.d.ts +8 -0
- package/dist/phases/transforms/methods/GroupTransform.js +39 -0
- package/dist/phases/transforms/methods/NormalizeTransform.d.ts +10 -0
- package/dist/phases/transforms/methods/NormalizeTransform.js +30 -0
- package/dist/phases/transforms/methods/OrderTransform.d.ts +16 -0
- package/dist/phases/transforms/methods/OrderTransform.js +43 -0
- package/dist/phases/transforms/methods/PerGroup.d.ts +11 -0
- package/dist/phases/transforms/methods/PerGroup.js +39 -0
- package/dist/phases/transforms/methods/PositionTransform.d.ts +15 -0
- package/dist/phases/transforms/methods/PositionTransform.js +74 -0
- package/dist/phases/transforms/methods/StackTransform.d.ts +8 -0
- package/dist/phases/transforms/methods/StackTransform.js +29 -0
- package/dist/phases/transforms/methods/WindowTransform.d.ts +8 -0
- package/dist/phases/transforms/methods/WindowTransform.js +23 -0
- package/dist/plots/area/Plot.svelte +42 -0
- package/dist/plots/{heatmap/ValueLabels.svelte.d.ts → area/Plot.svelte.d.ts} +8 -16
- package/dist/plots/area/defaults.d.ts +4 -0
- package/dist/plots/area/defaults.js +21 -0
- package/dist/plots/area/markers.d.ts +14 -0
- package/dist/plots/area/markers.js +39 -0
- package/dist/plots/bar/Plot.svelte +33 -438
- package/dist/plots/bar/Plot.svelte.d.ts +5 -8
- package/dist/plots/bar/defaults.d.ts +9 -0
- package/dist/plots/bar/defaults.js +88 -0
- package/dist/plots/bar/markers.d.ts +45 -0
- package/dist/plots/bar/markers.js +233 -0
- package/dist/plots/box/BoxSummaries.d.ts +19 -0
- package/dist/plots/box/BoxSummaries.js +101 -0
- package/dist/plots/box/Plot.svelte +42 -0
- package/dist/plots/box/Plot.svelte.d.ts +26 -0
- package/dist/plots/box/defaults.d.ts +12 -0
- package/dist/plots/box/defaults.js +34 -0
- package/dist/plots/box/markers.d.ts +12 -0
- package/dist/plots/box/markers.js +34 -0
- package/dist/plots/geo/Core.svelte +151 -0
- package/dist/plots/geo/Core.svelte.d.ts +25 -0
- package/dist/plots/geo/Plot.svelte +103 -324
- package/dist/plots/geo/Plot.svelte.d.ts +5 -9
- package/dist/plots/geo/defaults.d.ts +4 -0
- package/dist/plots/geo/defaults.js +16 -0
- package/dist/plots/geo/features.svelte.d.ts +5 -0
- package/dist/plots/geo/features.svelte.js +44 -0
- package/dist/plots/geo/phases/data.d.ts +6 -0
- package/dist/plots/geo/phases/data.js +26 -0
- package/dist/plots/geo/phases/hover.d.ts +9 -0
- package/dist/plots/geo/phases/hover.js +45 -0
- package/dist/plots/geo/phases/markers.d.ts +9 -0
- package/dist/plots/geo/phases/markers.js +75 -0
- package/dist/plots/geo/phases/scales.d.ts +10 -0
- package/dist/plots/geo/phases/scales.js +85 -0
- package/dist/plots/geo/phases/tooltip.d.ts +3 -0
- package/dist/plots/geo/phases/tooltip.js +5 -0
- package/dist/plots/geo/slices.d.ts +18 -0
- package/dist/plots/geo/slices.js +59 -0
- package/dist/plots/heatmap/Plot.svelte +55 -249
- package/dist/plots/heatmap/Plot.svelte.d.ts +5 -8
- package/dist/plots/heatmap/defaults.d.ts +11 -0
- package/dist/plots/heatmap/defaults.js +91 -0
- package/dist/plots/heatmap/markers.d.ts +17 -0
- package/dist/plots/heatmap/markers.js +142 -0
- package/dist/plots/histogram/Plot.svelte +45 -0
- package/dist/plots/histogram/Plot.svelte.d.ts +26 -0
- package/dist/plots/histogram/defaults.d.ts +9 -0
- package/dist/plots/histogram/defaults.js +87 -0
- package/dist/plots/histogram/markers.d.ts +18 -0
- package/dist/plots/histogram/markers.js +89 -0
- package/dist/plots/line/Plot.svelte +37 -268
- package/dist/plots/line/Plot.svelte.d.ts +3 -7
- package/dist/plots/line/defaults.d.ts +4 -0
- package/dist/plots/line/defaults.js +29 -0
- package/dist/plots/line/markers.d.ts +49 -0
- package/dist/plots/line/markers.js +199 -0
- package/dist/plots/pyramid/Plot.svelte +34 -362
- package/dist/plots/pyramid/Plot.svelte.d.ts +5 -8
- package/dist/plots/pyramid/defaults.d.ts +13 -0
- package/dist/plots/pyramid/defaults.js +87 -0
- package/dist/plots/pyramid/markers.d.ts +21 -0
- package/dist/plots/pyramid/markers.js +156 -0
- package/dist/plots/scatter/Plot.svelte +34 -288
- package/dist/plots/scatter/Plot.svelte.d.ts +5 -8
- package/dist/plots/scatter/defaults.d.ts +4 -0
- package/dist/plots/scatter/defaults.js +80 -0
- package/dist/plots/scatter/markers.d.ts +19 -0
- package/dist/plots/scatter/markers.js +129 -0
- package/dist/plots/utils/ChannelName.d.ts +9 -0
- package/dist/plots/utils/ChannelName.js +14 -0
- package/dist/plots/utils/accessors.d.ts +1 -1
- package/dist/plots/utils/accessors.js +4 -2
- package/dist/plots/utils/gaps.d.ts +14 -19
- package/dist/plots/utils/gaps.js +38 -18
- package/dist/plots/utils/geoAccessors.d.ts +8 -8
- package/dist/plots/utils/geoAccessors.js +16 -12
- package/dist/plots/utils/geoSegments.d.ts +24 -9
- package/dist/plots/utils/geoSegments.js +31 -11
- package/dist/plots/utils/segments.d.ts +5 -16
- package/dist/plots/utils/segments.js +40 -52
- package/dist/plots/utils/tiles.d.ts +9 -9
- package/dist/plots/utils/tiles.js +35 -25
- package/dist/plots/utils/topojson.d.ts +1 -1
- package/dist/plots/utils/topojson.js +3 -3
- package/dist/stores/device.js +2 -4
- package/dist/types/configuration/styling.d.ts +174 -27
- package/dist/types/layout/box.d.ts +24 -0
- package/dist/types/layout/composer.d.ts +39 -0
- package/dist/types/layout/coordinates.d.ts +14 -14
- package/dist/types/layout/facet.d.ts +44 -22
- package/dist/types/layout/figure.d.ts +7 -0
- package/dist/types/layout/geometry.d.ts +6 -2
- package/dist/types/layout/grid.d.ts +66 -0
- package/dist/types/layout/hover.d.ts +48 -0
- package/dist/types/layout/legend.d.ts +256 -55
- package/dist/types/layout/mapping.d.ts +68 -0
- package/dist/types/layout/plot.d.ts +41 -0
- package/dist/types/layout/scales.d.ts +108 -24
- package/dist/types/layout/scales.js +19 -1
- package/dist/types/layout/statistics/bollinger.d.ts +18 -0
- package/dist/types/layout/statistics/box.d.ts +8 -0
- package/dist/types/layout/statistics/box.js +1 -0
- package/dist/types/layout/statistics/density.d.ts +27 -0
- package/dist/types/layout/statistics/density.js +1 -0
- package/dist/types/layout/statistics/index.d.ts +46 -0
- package/dist/types/layout/statistics/index.js +1 -0
- package/dist/types/layout/statistics/movingAverage.d.ts +12 -0
- package/dist/types/layout/statistics/movingAverage.js +1 -0
- package/dist/types/layout/statistics/regression.d.ts +20 -0
- package/dist/types/layout/statistics/regression.js +1 -0
- package/dist/types/layout/styles.d.ts +24 -35
- package/dist/types/layout/timeline.d.ts +62 -6
- package/dist/types/layout/tooltip.d.ts +7 -85
- package/dist/types/markers/all.d.ts +3 -4
- package/dist/types/markers/axis/area.d.ts +12 -0
- package/dist/types/markers/axis/area.js +1 -0
- package/dist/types/markers/axis/arrow.d.ts +15 -0
- package/dist/types/markers/axis/arrow.js +1 -0
- package/dist/types/markers/axis/axisBasedMarkersConfig.d.ts +29 -0
- package/dist/types/markers/axis/axisBasedMarkersConfig.js +1 -0
- package/dist/types/markers/axis/bar.d.ts +18 -0
- package/dist/types/markers/axis/bar.js +1 -0
- package/dist/types/markers/axis/bollinger.d.ts +6 -0
- package/dist/types/markers/axis/bollinger.js +1 -0
- package/dist/types/markers/axis/box.d.ts +14 -0
- package/dist/types/markers/axis/box.js +1 -0
- package/dist/types/markers/axis/brush.d.ts +28 -0
- package/dist/types/markers/axis/brush.js +1 -0
- package/dist/types/markers/axis/cell.d.ts +9 -0
- package/dist/types/markers/axis/cell.js +1 -0
- package/dist/types/markers/axis/component.d.ts +9 -0
- package/dist/types/markers/axis/component.js +1 -0
- package/dist/types/markers/axis/curveName.d.ts +2 -0
- package/dist/types/markers/axis/curveName.js +1 -0
- package/dist/types/markers/axis/delaunayLink.d.ts +7 -0
- package/dist/types/markers/axis/delaunayLink.js +1 -0
- package/dist/types/markers/axis/delaunayMesh.d.ts +7 -0
- package/dist/types/markers/axis/delaunayMesh.js +1 -0
- package/dist/types/markers/axis/delta.d.ts +27 -0
- package/dist/types/markers/axis/delta.js +1 -0
- package/dist/types/markers/axis/density.d.ts +12 -0
- package/dist/types/markers/axis/density.js +1 -0
- package/dist/types/markers/axis/difference.d.ts +12 -0
- package/dist/types/markers/axis/difference.js +1 -0
- package/dist/types/markers/axis/hover.d.ts +21 -0
- package/dist/types/markers/axis/hover.js +1 -0
- package/dist/types/markers/axis/hull.d.ts +7 -0
- package/dist/types/markers/axis/hull.js +1 -0
- package/dist/types/markers/axis/image.d.ts +12 -0
- package/dist/types/markers/axis/image.js +1 -0
- package/dist/types/markers/axis/line.d.ts +7 -0
- package/dist/types/markers/axis/line.js +1 -0
- package/dist/types/markers/axis/raster.d.ts +18 -0
- package/dist/types/markers/axis/raster.js +1 -0
- package/dist/types/markers/axis/rect.d.ts +15 -0
- package/dist/types/markers/axis/rect.js +1 -0
- package/dist/types/markers/axis/regression.d.ts +6 -0
- package/dist/types/markers/axis/regression.js +1 -0
- package/dist/types/markers/axis/rule.d.ts +15 -0
- package/dist/types/markers/axis/rule.js +1 -0
- package/dist/types/markers/axis/tick.d.ts +8 -0
- package/dist/types/markers/axis/tick.js +1 -0
- package/dist/types/markers/axis/trail.d.ts +14 -0
- package/dist/types/markers/axis/trail.js +1 -0
- package/dist/types/markers/axis/voronoi.d.ts +7 -0
- package/dist/types/markers/axis/voronoi.js +1 -0
- package/dist/types/markers/axis/voronoiMesh.d.ts +7 -0
- package/dist/types/markers/axis/voronoiMesh.js +1 -0
- package/dist/types/markers/axis/waffle.d.ts +13 -0
- package/dist/types/markers/axis/waffle.js +1 -0
- package/dist/types/markers/basic/basicMarkersConfig.d.ts +4 -0
- package/dist/types/markers/basic/basicMarkersConfig.js +1 -0
- package/dist/types/markers/basic/dot.d.ts +9 -0
- package/dist/types/markers/basic/dot.js +1 -0
- package/dist/types/markers/basic/text.d.ts +60 -0
- package/dist/types/markers/basic/text.js +1 -0
- package/dist/types/markers/basic.d.ts +4 -0
- package/dist/types/markers/basic.js +1 -0
- package/dist/types/markers/channels/commonMarkerConfig.d.ts +26 -0
- package/dist/types/markers/channels/commonMarkerConfig.js +1 -0
- package/dist/types/markers/channels/commonMarkerConfigWithArea.d.ts +6 -0
- package/dist/types/markers/channels/commonMarkerConfigWithArea.js +1 -0
- package/dist/types/markers/channels/commonMarkerConfigWithColor.d.ts +5 -0
- package/dist/types/markers/channels/commonMarkerConfigWithColor.js +1 -0
- package/dist/types/markers/channels/commonMarkerConfigWithInterval.d.ts +9 -0
- package/dist/types/markers/channels/commonMarkerConfigWithInterval.js +1 -0
- package/dist/types/markers/channels/commonMarkerConfigWithRadius.d.ts +5 -0
- package/dist/types/markers/channels/commonMarkerConfigWithRadius.js +1 -0
- package/dist/types/markers/channels/commonMarkerConfigWithSymbol.d.ts +5 -0
- package/dist/types/markers/channels/commonMarkerConfigWithSymbol.js +1 -0
- package/dist/types/markers/channels/commonMarkerConfigWithWeight.d.ts +5 -0
- package/dist/types/markers/channels/commonMarkerConfigWithWeight.js +1 -0
- package/dist/types/markers/common.d.ts +30 -103
- package/dist/types/markers/common.js +29 -1
- package/dist/types/markers/geo/contour.d.ts +27 -0
- package/dist/types/markers/geo/contour.js +1 -0
- package/dist/types/markers/geo/features.d.ts +12 -0
- package/dist/types/markers/geo/features.js +1 -0
- package/dist/types/markers/geo/geoComponent.d.ts +7 -0
- package/dist/types/markers/geo/geoComponent.js +1 -0
- package/dist/types/markers/geo/geoHover.d.ts +6 -0
- package/dist/types/markers/geo/geoHover.js +1 -0
- package/dist/types/markers/geo/geoMarkersConfig.d.ts +11 -0
- package/dist/types/markers/geo/geoMarkersConfig.js +1 -0
- package/dist/types/markers/geo/graticule.d.ts +11 -0
- package/dist/types/markers/geo/graticule.js +1 -0
- package/dist/types/markers/geo/inset.d.ts +50 -0
- package/dist/types/markers/geo/inset.js +1 -0
- package/dist/types/markers/geo/link.d.ts +13 -0
- package/dist/types/markers/geo/link.js +1 -0
- package/dist/types/markers/geo/sphere.d.ts +11 -0
- package/dist/types/markers/geo/sphere.js +1 -0
- package/dist/types/markers/geo/vector.d.ts +17 -0
- package/dist/types/markers/geo/vector.js +1 -0
- package/dist/types/markers/geo.d.ts +10 -212
- package/dist/types/markers/geo.js +10 -1
- package/dist/types/markers/traits.d.ts +22 -0
- package/dist/types/markers/traits.js +1 -0
- package/dist/types/misc/easing.js +1 -0
- package/dist/types/misc/viewport.js +1 -0
- package/dist/types/phases/data/axes.d.ts +18 -0
- package/dist/types/phases/data/axes.js +1 -0
- package/dist/types/phases/data/phase.d.ts +26 -0
- package/dist/types/phases/data/phase.js +2 -0
- package/dist/types/phases/facet/phase.d.ts +18 -0
- package/dist/types/phases/facet/phase.js +1 -0
- package/dist/types/phases/hover/phase.d.ts +40 -0
- package/dist/types/phases/hover/phase.js +1 -0
- package/dist/types/phases/index.d.ts +14 -0
- package/dist/types/phases/index.js +1 -0
- package/dist/types/phases/kind.d.ts +59 -0
- package/dist/types/phases/kind.js +1 -0
- package/dist/types/phases/mapping/phase.d.ts +5 -0
- package/dist/types/phases/mapping/phase.js +1 -0
- package/dist/types/phases/markers/phase.d.ts +13 -0
- package/dist/types/phases/markers/phase.js +1 -0
- package/dist/types/phases/pipeline.d.ts +10 -0
- package/dist/types/phases/pipeline.js +1 -0
- package/dist/types/phases/scales/phase.d.ts +26 -0
- package/dist/types/phases/scales/phase.js +1 -0
- package/dist/types/phases/sharedScales/phase.d.ts +12 -0
- package/dist/types/phases/sharedScales/phase.js +1 -0
- package/dist/types/phases/stage.d.ts +12 -0
- package/dist/types/phases/stage.js +1 -0
- package/dist/types/phases/state.d.ts +76 -0
- package/dist/types/phases/state.js +1 -0
- package/dist/types/phases/statistics/phase.d.ts +43 -0
- package/dist/types/phases/statistics/phase.js +1 -0
- package/dist/types/phases/statistics/source.d.ts +20 -0
- package/dist/types/phases/statistics/source.js +7 -0
- package/dist/types/phases/styles/phase.d.ts +24 -0
- package/dist/types/phases/styles/phase.js +1 -0
- package/dist/types/phases/transforms/adapter.d.ts +27 -0
- package/dist/types/phases/transforms/adapter.js +1 -0
- package/dist/types/phases/transforms/phase.d.ts +50 -0
- package/dist/types/phases/transforms/phase.js +1 -0
- package/dist/types/plots/area/props.d.ts +10 -0
- package/dist/types/plots/area/props.js +1 -0
- package/dist/types/plots/area/state.d.ts +6 -0
- package/dist/types/plots/area/state.js +1 -0
- package/dist/types/plots/bar/props.d.ts +10 -0
- package/dist/types/plots/bar/props.js +1 -0
- package/dist/types/plots/bar/state.d.ts +6 -0
- package/dist/types/plots/bar/state.js +1 -0
- package/dist/types/plots/box/props.d.ts +10 -0
- package/dist/types/plots/box/props.js +1 -0
- package/dist/types/plots/box/state.d.ts +23 -0
- package/dist/types/plots/box/state.js +1 -0
- package/dist/types/plots/camera.d.ts +7 -17
- package/dist/types/plots/constants.d.ts +16 -8
- package/dist/types/plots/data/common.d.ts +25 -17
- package/dist/types/plots/data/geo.d.ts +26 -12
- package/dist/types/plots/gaps.d.ts +19 -38
- package/dist/types/plots/geo/props.d.ts +23 -0
- package/dist/types/plots/geo/props.js +1 -0
- package/dist/types/plots/geo/state.d.ts +82 -0
- package/dist/types/plots/geo/state.js +1 -0
- package/dist/types/plots/heatmap/props.d.ts +10 -0
- package/dist/types/plots/heatmap/props.js +1 -0
- package/dist/types/plots/heatmap/state.d.ts +28 -0
- package/dist/types/plots/heatmap/state.js +1 -0
- package/dist/types/plots/histogram/props.d.ts +18 -0
- package/dist/types/plots/histogram/props.js +1 -0
- package/dist/types/plots/histogram/state.d.ts +6 -0
- package/dist/types/plots/histogram/state.js +1 -0
- package/dist/types/plots/line/props.d.ts +10 -0
- package/dist/types/plots/line/props.js +1 -0
- package/dist/types/plots/line/state.d.ts +9 -0
- package/dist/types/plots/line/state.js +1 -0
- package/dist/types/plots/props.d.ts +145 -35
- package/dist/types/plots/pyramid/props.d.ts +10 -0
- package/dist/types/plots/pyramid/props.js +1 -0
- package/dist/types/plots/pyramid/state.d.ts +16 -0
- package/dist/types/plots/pyramid/state.js +1 -0
- package/dist/types/plots/scatter/props.d.ts +10 -0
- package/dist/types/plots/scatter/props.js +1 -0
- package/dist/types/plots/scatter/state.d.ts +6 -0
- package/dist/types/plots/scatter/state.js +1 -0
- package/dist/types/plots/segments/common.d.ts +1 -1
- package/dist/types/plots/segments/config.d.ts +12 -6
- package/dist/types/plots/styling.d.ts +5 -5
- package/dist/types/transforms/bin.d.ts +84 -0
- package/dist/types/transforms/bin.js +28 -0
- package/dist/types/transforms/bollinger.d.ts +21 -0
- package/dist/types/transforms/bollinger.js +1 -0
- package/dist/types/transforms/common.d.ts +29 -0
- package/dist/types/transforms/common.js +16 -0
- package/dist/types/transforms/density.d.ts +45 -0
- package/dist/types/transforms/density.js +10 -0
- package/dist/types/transforms/filter.d.ts +12 -0
- package/dist/types/transforms/filter.js +14 -0
- package/dist/types/transforms/group.d.ts +70 -0
- package/dist/types/transforms/group.js +8 -0
- package/dist/types/transforms/index.d.ts +36 -0
- package/dist/types/transforms/index.js +1 -0
- package/dist/types/transforms/interval.d.ts +21 -0
- package/dist/types/transforms/interval.js +14 -0
- package/dist/types/transforms/jitter.d.ts +34 -0
- package/dist/types/transforms/jitter.js +1 -0
- package/dist/types/transforms/map.d.ts +24 -0
- package/dist/types/transforms/map.js +1 -0
- package/dist/types/transforms/normalize.d.ts +36 -0
- package/dist/types/transforms/normalize.js +1 -0
- package/dist/types/transforms/select.d.ts +15 -0
- package/dist/types/transforms/select.js +1 -0
- package/dist/types/transforms/shift.d.ts +20 -0
- package/dist/types/transforms/shift.js +1 -0
- package/dist/types/transforms/sort.d.ts +31 -0
- package/dist/types/transforms/sort.js +14 -0
- package/dist/types/transforms/stack.d.ts +64 -0
- package/dist/types/transforms/stack.js +12 -0
- package/dist/types/transforms/window.d.ts +29 -0
- package/dist/types/transforms/window.js +1 -0
- package/dist/utils/ContinuousDomain.d.ts +12 -0
- package/dist/utils/ContinuousDomain.js +19 -0
- package/dist/utils/Interpolation.d.ts +26 -0
- package/dist/utils/Interpolation.js +65 -0
- package/dist/utils/{color.d.ts → color/contrast.d.ts} +0 -5
- package/dist/utils/color/contrast.js +40 -0
- package/dist/utils/color/cssColor.d.ts +4 -0
- package/dist/utils/color/cssColor.js +77 -0
- package/dist/utils/color/index.d.ts +3 -0
- package/dist/utils/color/index.js +3 -0
- package/dist/utils/color/ramp.d.ts +17 -0
- package/dist/utils/color/ramp.js +110 -0
- package/dist/utils/grouping.d.ts +9 -5
- package/dist/utils/grouping.js +19 -10
- package/dist/utils/merge.d.ts +7 -0
- package/dist/utils/merge.js +17 -0
- package/dist/utils/opacity.d.ts +9 -0
- package/dist/utils/opacity.js +38 -0
- package/dist/utils/symbol.d.ts +31 -0
- package/dist/utils/symbol.js +92 -0
- package/docs/architecture.md +137 -0
- package/docs/chrome.md +99 -0
- package/docs/composer.md +69 -0
- package/docs/concepts.md +99 -0
- package/docs/development.md +103 -0
- package/docs/facets.md +123 -0
- package/docs/geo.md +151 -0
- package/docs/getting-started.md +78 -0
- package/docs/legend.md +153 -0
- package/docs/markers.md +117 -0
- package/docs/plots.md +284 -0
- package/docs/scales.md +95 -0
- package/docs/state.md +71 -0
- package/docs/styles-and-segments.md +269 -0
- package/docs/theming.md +226 -0
- package/docs/timeline.md +128 -0
- package/docs/tooltip-and-hover.md +128 -0
- package/docs/transforms-and-statistics.md +118 -0
- package/examples/BarValues.svelte +14 -0
- package/examples/Box.svelte +7 -0
- package/examples/Chrome.svelte +17 -0
- package/examples/ChromeOrder.svelte +18 -0
- package/examples/Composer.svelte +23 -0
- package/examples/CustomTooltip.svelte +44 -0
- package/examples/Facets.svelte +15 -0
- package/examples/FacetsCarousel.svelte +14 -0
- package/examples/FacetsRowsCols.svelte +23 -0
- package/examples/FirstPlot.svelte +7 -0
- package/examples/Gaps.svelte +21 -0
- package/examples/GroupedBars.svelte +15 -0
- package/examples/Heatmap.svelte +7 -0
- package/examples/HeatmapSegments.svelte +26 -0
- package/examples/Histogram.svelte +14 -0
- package/examples/HorizontalBars.svelte +15 -0
- package/examples/LegendReader.svelte +8 -0
- package/examples/LegendSections.svelte +27 -0
- package/examples/LegendToggle.svelte +25 -0
- package/examples/LineByRegion.svelte +18 -0
- package/examples/LineDates.svelte +15 -0
- package/examples/Markers.svelte +27 -0
- package/examples/MovingAverage.svelte +15 -0
- package/examples/Pyramid.svelte +7 -0
- package/examples/Regression.svelte +14 -0
- package/examples/ResponsiveLine.svelte +37 -0
- package/examples/Scales.svelte +26 -0
- package/examples/Scatter.svelte +16 -0
- package/examples/SegmentHighlight.svelte +22 -0
- package/examples/Segments.svelte +25 -0
- package/examples/SegmentsBySeries.svelte +25 -0
- package/examples/StackedArea.svelte +16 -0
- package/examples/StackedBars.svelte +15 -0
- package/examples/TimelinePlayer.svelte +21 -0
- package/examples/TimelineRule.svelte +19 -0
- package/examples/Tooltip.svelte +19 -0
- package/examples/TooltipCard.svelte +86 -0
- package/examples/ValueLabels.svelte +21 -0
- package/examples/data.ts +324 -0
- package/llms-full.txt +142 -0
- package/llms.txt +77 -0
- package/package.json +42 -5
- package/dist/charts/BaseChart.svelte +0 -149
- package/dist/charts/BaseChart.svelte.d.ts +0 -47
- package/dist/charts/bar/Chart.svelte +0 -110
- package/dist/charts/bar/Chart.svelte.d.ts +0 -26
- package/dist/charts/container/ChartContainer.svelte +0 -137
- package/dist/charts/container/ChartContainer.svelte.d.ts +0 -16
- package/dist/charts/heatmap/Chart.svelte +0 -114
- package/dist/charts/line/Chart.svelte +0 -112
- package/dist/charts/line/Chart.svelte.d.ts +0 -26
- package/dist/charts/pyramid/Chart.svelte +0 -134
- package/dist/charts/pyramid/Chart.svelte.d.ts +0 -30
- package/dist/charts/scatter/Chart.svelte +0 -95
- package/dist/charts/scatter/Chart.svelte.d.ts +0 -28
- package/dist/layout/coordinates/margins.d.ts +0 -16
- package/dist/layout/coordinates/margins.js +0 -11
- package/dist/layout/legend/interaction.svelte.d.ts +0 -15
- package/dist/layout/legend/interaction.svelte.js +0 -32
- package/dist/layout/plot/BasePlotLayout.svelte +0 -332
- package/dist/layout/plot/BasePlotLayout.svelte.d.ts +0 -122
- package/dist/layout/plot/margins.d.ts +0 -18
- package/dist/layout/plot/margins.js +0 -15
- package/dist/layout/plot/measureText.d.ts +0 -4
- package/dist/layout/plot/measureText.js +0 -19
- package/dist/layout/scales/buildScale.d.ts +0 -25
- package/dist/layout/scales/buildScale.js +0 -90
- package/dist/layout/scales/niceDomain.d.ts +0 -23
- package/dist/layout/scales/niceDomain.js +0 -59
- package/dist/layout/tooltip/TooltipLayout.svelte +0 -51
- package/dist/layout/tooltip/TooltipLayout.svelte.d.ts +0 -45
- package/dist/layout/tooltip/controller.svelte.d.ts +0 -61
- package/dist/layout/tooltip/controller.svelte.js +0 -173
- package/dist/layout/tooltip/hover.svelte.d.ts +0 -7
- package/dist/layout/tooltip/hover.svelte.js +0 -28
- package/dist/layout/tooltip/resolveTooltipPlacement.d.ts +0 -24
- package/dist/layout/tooltip/resolveTooltipPlacement.js +0 -49
- package/dist/layout/tooltip/utils.d.ts +0 -49
- package/dist/layout/tooltip/utils.js +0 -82
- package/dist/markers/CellMarker.svelte +0 -21
- package/dist/markers/ContourClipMarker.svelte +0 -77
- package/dist/markers/ContourMarker.svelte +0 -28
- package/dist/markers/DeltaMarker.svelte +0 -109
- package/dist/markers/DotMarker.svelte +0 -70
- package/dist/markers/GeoFeaturesMarker.svelte +0 -19
- package/dist/markers/GeoHoverMarker.svelte +0 -25
- package/dist/markers/GraticuleMarker.svelte +0 -18
- package/dist/markers/HoverMarker.svelte +0 -212
- package/dist/markers/LineMarker.svelte +0 -19
- package/dist/markers/LinkMarker.svelte +0 -42
- package/dist/markers/PeakMarker.svelte +0 -80
- package/dist/markers/PeakMarker.svelte.d.ts +0 -13
- package/dist/markers/RuleMarker.svelte +0 -24
- package/dist/markers/SphereMarker.svelte +0 -15
- package/dist/markers/TextMarker.svelte +0 -62
- package/dist/markers/VectorMarker.svelte +0 -20
- package/dist/plots/bar/ValueLabels.svelte +0 -149
- package/dist/plots/bar/ValueLabels.svelte.d.ts +0 -58
- package/dist/plots/bar/buildBarMarkers.d.ts +0 -27
- package/dist/plots/bar/buildBarMarkers.js +0 -151
- package/dist/plots/bar/hoverPoints.d.ts +0 -15
- package/dist/plots/bar/hoverPoints.js +0 -37
- package/dist/plots/bar/layout.svelte.d.ts +0 -42
- package/dist/plots/bar/layout.svelte.js +0 -182
- package/dist/plots/geo/buildGeoMarkers.d.ts +0 -33
- package/dist/plots/geo/buildGeoMarkers.js +0 -47
- package/dist/plots/heatmap/ValueLabels.svelte +0 -56
- package/dist/plots/heatmap/buildCellMarkers.d.ts +0 -21
- package/dist/plots/heatmap/buildCellMarkers.js +0 -25
- package/dist/plots/line/ValueLabels.svelte +0 -269
- package/dist/plots/line/ValueLabels.svelte.d.ts +0 -52
- package/dist/plots/line/buildGapMarkers.d.ts +0 -28
- package/dist/plots/line/buildGapMarkers.js +0 -74
- package/dist/plots/line/buildLineMarkers.d.ts +0 -16
- package/dist/plots/line/buildLineMarkers.js +0 -56
- package/dist/plots/line/valueLabelMargin.d.ts +0 -19
- package/dist/plots/line/valueLabelMargin.js +0 -65
- package/dist/plots/pyramid/ValueLabels.svelte +0 -139
- package/dist/plots/pyramid/ValueLabels.svelte.d.ts +0 -56
- package/dist/plots/pyramid/buildPyramidBarMarkers.d.ts +0 -26
- package/dist/plots/pyramid/buildPyramidBarMarkers.js +0 -72
- package/dist/plots/scatter/ValueLabels.svelte +0 -163
- package/dist/plots/scatter/ValueLabels.svelte.d.ts +0 -52
- package/dist/plots/scatter/buildScatterMarkers.d.ts +0 -12
- package/dist/plots/scatter/buildScatterMarkers.js +0 -36
- package/dist/plots/scatter/resolveRadiusPaddedDomain.d.ts +0 -10
- package/dist/plots/scatter/resolveRadiusPaddedDomain.js +0 -23
- package/dist/plots/utils/categoricalAxisMargin.d.ts +0 -14
- package/dist/plots/utils/categoricalAxisMargin.js +0 -20
- package/dist/plots/utils/declutter.d.ts +0 -120
- package/dist/plots/utils/declutter.js +0 -240
- package/dist/plots/utils/labelOverflow.svelte.d.ts +0 -107
- package/dist/plots/utils/labelOverflow.svelte.js +0 -257
- package/dist/plots/utils/legendDisabled.d.ts +0 -27
- package/dist/plots/utils/legendDisabled.js +0 -68
- package/dist/plots/utils/valueLabelMargin.d.ts +0 -67
- package/dist/plots/utils/valueLabelMargin.js +0 -60
- package/dist/types/charts/common.d.ts +0 -22
- package/dist/types/charts/props.d.ts +0 -50
- package/dist/types/markers/base.d.ts +0 -45
- package/dist/types/markers/line.d.ts +0 -34
- package/dist/types/markers/props.d.ts +0 -11
- package/dist/types/plots/data/scatter.d.ts +0 -13
- package/dist/utils/color.js +0 -141
- package/dist/utils/delta.d.ts +0 -12
- package/dist/utils/delta.js +0 -69
- package/dist/utils/edgeAwareAnchor.d.ts +0 -34
- package/dist/utils/edgeAwareAnchor.js +0 -60
- package/dist/utils/interpolate.d.ts +0 -31
- package/dist/utils/interpolate.js +0 -71
- /package/dist/types/{charts/common.js → layout/box.js} +0 -0
- /package/dist/types/{charts/interpolate.js → layout/composer.js} +0 -0
- /package/dist/types/{charts/props.js → layout/figure.js} +0 -0
- /package/dist/types/{markers/base.js → layout/grid.js} +0 -0
- /package/dist/types/{markers/line.js → layout/hover.js} +0 -0
- /package/dist/types/{markers/props.js → layout/mapping.js} +0 -0
- /package/dist/types/{plots/data/scatter.js → layout/plot.js} +0 -0
- /package/dist/types/{viewport.js → layout/statistics/bollinger.js} +0 -0
- /package/dist/types/{charts/interpolate.d.ts → misc/easing.d.ts} +0 -0
- /package/dist/types/{viewport.d.ts → misc/viewport.d.ts} +0 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { ProcessedPositions } from '../../phases/transforms/ProcessedPositions';
|
|
2
|
+
import { SERIES_KEY } from '../../phases/transforms/TransformsPhase';
|
|
3
|
+
import { ValueLabels } from '../../layout/styles/ValueLabels';
|
|
4
|
+
/**
|
|
5
|
+
* ScatterPlot's `styles.values` as one `'text'` marker over the same
|
|
6
|
+
* processed rows its dots draw, each labelled with its own `y` value. A label
|
|
7
|
+
* sits beside its point and flips to the other side where its text would
|
|
8
|
+
* cross the plot's edge (`edgeAware`).
|
|
9
|
+
*/
|
|
10
|
+
export function buildValueLabels(labels, state, ctx) {
|
|
11
|
+
const { processedData } = state;
|
|
12
|
+
if (!processedData?.data.length)
|
|
13
|
+
return [];
|
|
14
|
+
const { font, format } = labels;
|
|
15
|
+
const position = ProcessedPositions.of(processedData);
|
|
16
|
+
const nameOf = (d) => String(d[SERIES_KEY]);
|
|
17
|
+
const valueOf = ValueLabels.valueOf(state);
|
|
18
|
+
return [
|
|
19
|
+
{
|
|
20
|
+
type: 'text',
|
|
21
|
+
data: processedData.data,
|
|
22
|
+
x: position.x,
|
|
23
|
+
y: position.y,
|
|
24
|
+
text: (d) => format(Number(valueOf(d)), nameOf(d)),
|
|
25
|
+
styles: {
|
|
26
|
+
...font,
|
|
27
|
+
fill: font?.fill ?? ctx.cfg.axis.color,
|
|
28
|
+
fontSize: font?.fontSize ?? 11,
|
|
29
|
+
fontWeight: font?.fontWeight ?? 500,
|
|
30
|
+
dx: font?.dx ?? 8,
|
|
31
|
+
dy: font?.dy ?? 0,
|
|
32
|
+
textAnchor: labels.textAnchor ?? 'start',
|
|
33
|
+
lineAnchor: font?.lineAnchor ?? 'middle'
|
|
34
|
+
},
|
|
35
|
+
edgeAware: true
|
|
36
|
+
}
|
|
37
|
+
];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* ScatterPlot's "markers" phase: one `'dot'` marker per visual segment of the
|
|
41
|
+
* rows the "transforms" phase left, in their own order, so a reordering
|
|
42
|
+
* transform decides which dots paint on top - prepended onto whatever the
|
|
43
|
+
* "statistics" phase already put in `state.markers` - and its value labels on
|
|
44
|
+
* top of everything.
|
|
45
|
+
*/
|
|
46
|
+
export function buildMarks(state, ctx) {
|
|
47
|
+
const { channels, colorForSeries, scales, flat } = state;
|
|
48
|
+
const { cfg, interaction } = ctx;
|
|
49
|
+
const r = channels.r;
|
|
50
|
+
const rFn = r === undefined || typeof r === 'number' ? r : r.accessor;
|
|
51
|
+
const opacityFn = channels.opacity?.accessor;
|
|
52
|
+
const symbolFn = channels.symbol?.accessor;
|
|
53
|
+
/**
|
|
54
|
+
* `color`/`grouping` splits `flat` into one series per category, so each
|
|
55
|
+
* marker call below only ever sees one series' own rows - computing a
|
|
56
|
+
* channel's domain from just that slice would collapse a categorical
|
|
57
|
+
* domain to a single value (every row in a series shares the same
|
|
58
|
+
* category by construction) and skew a continuous one to that series'
|
|
59
|
+
* own range. Computed once here, across every (non-disabled) series'
|
|
60
|
+
* combined rows, and passed down as an explicit `domain` so each
|
|
61
|
+
* marker's own local computation (in `DotMarker.svelte`) is overridden
|
|
62
|
+
* instead of silently re-deriving a wrong, per-series one.
|
|
63
|
+
*/
|
|
64
|
+
function globalValuesFor(fn) {
|
|
65
|
+
if (!fn || !flat?.length)
|
|
66
|
+
return [];
|
|
67
|
+
return flat.map((d) => fn(d)).filter((v) => v != null);
|
|
68
|
+
}
|
|
69
|
+
function globalOpacityDomain() {
|
|
70
|
+
const vals = globalValuesFor(opacityFn);
|
|
71
|
+
if (!vals.length)
|
|
72
|
+
return undefined;
|
|
73
|
+
const allNumeric = vals.every((v) => Number.isFinite(Number(v)));
|
|
74
|
+
return allNumeric
|
|
75
|
+
? [Math.min(...vals.map(Number)), Math.max(...vals.map(Number))]
|
|
76
|
+
: [...new Set(vals.map(String))];
|
|
77
|
+
}
|
|
78
|
+
function globalSymbolDomain() {
|
|
79
|
+
const vals = globalValuesFor(symbolFn);
|
|
80
|
+
return vals.length ? [...new Set(vals.map(String))] : undefined;
|
|
81
|
+
}
|
|
82
|
+
const channelScales = opacityFn || symbolFn
|
|
83
|
+
? {
|
|
84
|
+
opacity: opacityFn
|
|
85
|
+
? { ...scales.opacity, domain: scales.opacity?.domain ?? globalOpacityDomain() }
|
|
86
|
+
: undefined,
|
|
87
|
+
symbol: symbolFn
|
|
88
|
+
? { ...scales.symbol, domain: scales.symbol?.domain ?? globalSymbolDomain() }
|
|
89
|
+
: undefined
|
|
90
|
+
}
|
|
91
|
+
: undefined;
|
|
92
|
+
const markers = [];
|
|
93
|
+
(state.processedGroups ?? []).forEach((group) => {
|
|
94
|
+
const defaultColor = colorForSeries(group.series.name);
|
|
95
|
+
const disabledDots = interaction?.dotsFor(group.series.name);
|
|
96
|
+
for (const seg of group.visualSegments) {
|
|
97
|
+
const dotStyle = seg.styles;
|
|
98
|
+
markers.push({
|
|
99
|
+
type: 'dot',
|
|
100
|
+
data: seg.data,
|
|
101
|
+
// Forwarded raw (a field key or function, whatever `series.x`/`.y`
|
|
102
|
+
// is) rather than pre-resolved into a closure - `DotMarker.svelte`
|
|
103
|
+
// and svelteplot's own `resolve()` already handle a field-key
|
|
104
|
+
// string per row, and only a literal string (not a function)
|
|
105
|
+
// lets svelteplot's axis-title auto-inference see the field name.
|
|
106
|
+
// `keyof TData` is always a real string key in practice (every
|
|
107
|
+
// row is a plain field-keyed record), just not provably so to
|
|
108
|
+
// TypeScript here.
|
|
109
|
+
x: group.series.x,
|
|
110
|
+
y: group.series.y,
|
|
111
|
+
r: rFn,
|
|
112
|
+
opacity: opacityFn,
|
|
113
|
+
symbol: symbolFn,
|
|
114
|
+
scales: channelScales,
|
|
115
|
+
styles: {
|
|
116
|
+
dotRadius: disabledDots?.dotRadius ?? dotStyle.dotRadius ?? cfg.scatter.dotRadius,
|
|
117
|
+
dotFill: disabledDots?.dotFill ?? dotStyle.dotFill ?? defaultColor,
|
|
118
|
+
dotSymbol: disabledDots?.dotSymbol ?? dotStyle.dotSymbol,
|
|
119
|
+
dotStroke: disabledDots?.dotStroke ?? dotStyle.dotStroke,
|
|
120
|
+
dotStrokeWidth: disabledDots?.dotStrokeWidth ?? dotStyle.dotStrokeWidth,
|
|
121
|
+
dotFillOpacity: disabledDots?.dotFillOpacity ?? dotStyle.dotFillOpacity,
|
|
122
|
+
dotStrokeOpacity: disabledDots?.dotStrokeOpacity ?? dotStyle.dotStrokeOpacity,
|
|
123
|
+
dotStrokeDasharray: disabledDots?.dotStrokeDasharray ?? dotStyle.dotStrokeDasharray
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
return markers;
|
|
129
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** The name a channel reads under on a legend, taken from the function that computes it. */
|
|
2
|
+
export declare class ChannelName {
|
|
3
|
+
/**
|
|
4
|
+
* `channel`'s own name, when it is a function with one worth showing: not
|
|
5
|
+
* anonymous, and not the name of the property it was assigned to (`color`
|
|
6
|
+
* for a `color: (d) => ...`), which says nothing a legend doesn't.
|
|
7
|
+
*/
|
|
8
|
+
static of(channel: unknown, property: string): string | undefined;
|
|
9
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** The name a channel reads under on a legend, taken from the function that computes it. */
|
|
2
|
+
export class ChannelName {
|
|
3
|
+
/**
|
|
4
|
+
* `channel`'s own name, when it is a function with one worth showing: not
|
|
5
|
+
* anonymous, and not the name of the property it was assigned to (`color`
|
|
6
|
+
* for a `color: (d) => ...`), which says nothing a legend doesn't.
|
|
7
|
+
*/
|
|
8
|
+
static of(channel, property) {
|
|
9
|
+
if (typeof channel !== 'function')
|
|
10
|
+
return undefined;
|
|
11
|
+
const name = channel.name;
|
|
12
|
+
return name && name !== property && name !== 'anonymous' ? name : undefined;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Converts a field key or a function into a data accessor function.
|
|
3
|
-
* Svelteplot marks expect `(d: T) => value`
|
|
3
|
+
* Svelteplot marks expect `(d: T) => value` - this bridges the
|
|
4
4
|
* shorthand key notation used in series definitions.
|
|
5
5
|
*/
|
|
6
6
|
export declare function resolveAccessor<T extends Record<string, unknown>>(field: keyof T | ((d: T) => any)): (d: T) => any;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Converts a field key or a function into a data accessor function.
|
|
3
|
-
* Svelteplot marks expect `(d: T) => value`
|
|
3
|
+
* Svelteplot marks expect `(d: T) => value` - this bridges the
|
|
4
4
|
* shorthand key notation used in series definitions.
|
|
5
5
|
*/
|
|
6
6
|
export function resolveAccessor(
|
|
7
7
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
8
|
-
field
|
|
8
|
+
field
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
10
|
+
) {
|
|
9
11
|
return typeof field === 'function' ? field : (d) => d[field];
|
|
10
12
|
}
|
|
@@ -1,20 +1,16 @@
|
|
|
1
1
|
import type { Series } from '../../types/plots/data/common';
|
|
2
|
-
import type { GapZonesConfig, GapZoneConfig } from '../../types/plots/gaps';
|
|
2
|
+
import type { DiscreteGapFill, GapPoint, GapZonesConfig, GapZoneConfig } from '../../types/plots/gaps';
|
|
3
3
|
import type { AreaStyle } from '../../types/plots/styling';
|
|
4
|
+
import type { AxisChannelName } from '../../types/layout/mapping';
|
|
4
5
|
/**
|
|
5
6
|
* Resolves one series' zone config out of `LinePlot`'s full `gaps` prop: a
|
|
6
7
|
* named entry (keyed by the series' own `name`) applies only to that
|
|
7
8
|
* series; `'default'` fills in whichever zone the named entry itself leaves
|
|
8
9
|
* unset. Unlike `segments`' own specific/default resolution (which
|
|
9
|
-
* concatenates two rule lists), this merges at zone granularity
|
|
10
|
+
* concatenates two rule lists), this merges at zone granularity - there's
|
|
10
11
|
* no list to concatenate, just three independent slots.
|
|
11
12
|
*/
|
|
12
|
-
export declare function resolveGapsForSeries<TStyle>(gaps: Record<string, GapZonesConfig<TStyle
|
|
13
|
-
/** A point sampled along a gap-fill bridge, already resolved to plot data-space numbers. */
|
|
14
|
-
export type GapPoint = {
|
|
15
|
-
x: number;
|
|
16
|
-
y: number;
|
|
17
|
-
};
|
|
13
|
+
export declare function resolveGapsForSeries<TStyle>(gaps: Record<string, GapZonesConfig<TStyle>> | undefined, seriesName: string): GapZonesConfig<TStyle>;
|
|
18
14
|
export type GapRun<TStyle> = {
|
|
19
15
|
kind: 'start' | 'middle' | 'end';
|
|
20
16
|
zone: GapZoneConfig<TStyle>;
|
|
@@ -28,25 +24,24 @@ export declare function isGapValue(v: unknown): boolean;
|
|
|
28
24
|
* configured, builds the eased bridge points that visually fill it. Rows
|
|
29
25
|
* are sorted by `x` first, so an out-of-order series is handled the same as
|
|
30
26
|
* a sorted one. A series with no valid (non-missing) rows at all produces
|
|
31
|
-
* no runs
|
|
27
|
+
* no runs - there's nothing to bridge from or to.
|
|
32
28
|
*/
|
|
33
29
|
export declare function resolveGapRuns<T extends Record<string, unknown>, TStyle>(series: Series<T>, gaps: GapZonesConfig<TStyle>): GapRun<TStyle>[];
|
|
34
|
-
/** One gap row's resolved fill — the interpolated value to render instead of the missing one, and which zone produced it. */
|
|
35
|
-
export type DiscreteGapFill<TStyle> = {
|
|
36
|
-
value: number;
|
|
37
|
-
kind: 'start' | 'middle' | 'end';
|
|
38
|
-
style?: TStyle;
|
|
39
|
-
};
|
|
40
30
|
/**
|
|
41
31
|
* Bar/pyramid analog of `resolveGapRuns`: a category axis has no continuous
|
|
42
32
|
* bridge to sample, so this returns one interpolated value per *individual*
|
|
43
33
|
* gap row instead. Runs are detected by `series.data`'s own array order
|
|
44
|
-
* (not a numeric `x` sort like `resolveGapRuns`
|
|
34
|
+
* (not a numeric `x` sort like `resolveGapRuns` - a category axis is often
|
|
45
35
|
* nominal, so there's no meaningful numeric ordering to sort by). Keyed by
|
|
46
36
|
* row object reference rather than category, since a series' `y` accessor
|
|
47
|
-
* may be an arbitrary function
|
|
37
|
+
* may be an arbitrary function - there's no general way to write the
|
|
48
38
|
* interpolated value back onto a row, so callers look it up here instead.
|
|
49
39
|
*/
|
|
50
|
-
export declare function resolveDiscreteGapFills<T extends Record<string, unknown>, TStyle>(series: Series<T>, gaps: GapZonesConfig<TStyle
|
|
51
|
-
/** Field-by-field style fallback for a discrete gap-fill marker
|
|
40
|
+
export declare function resolveDiscreteGapFills<T extends Record<string, unknown>, TStyle>(series: Series<T>, gaps: GapZonesConfig<TStyle>, valueAxis?: AxisChannelName): Map<T, DiscreteGapFill<TStyle>>;
|
|
41
|
+
/** Field-by-field style fallback for a discrete gap-fill marker - mirrors how `buildGapMarkers.ts` merges a line gap zone's style under `cfg.line.gap`. */
|
|
52
42
|
export declare function resolveGapAreaStyle(zoneStyle: AreaStyle | undefined, defaultColor: string, gapDefaults: AreaStyle): AreaStyle;
|
|
43
|
+
/**
|
|
44
|
+
* Each series' gap fills, keyed by series id - the interpolated value a
|
|
45
|
+
* `styles.gaps` zone gives each missing row along `valueAxis`, resolved per series like `segments`.
|
|
46
|
+
*/
|
|
47
|
+
export declare function buildGapFillMaps<TData extends Record<string, unknown>, TStyle>(seriesList: Series<TData>[], gaps: Record<string, GapZonesConfig<TStyle>> | undefined, valueAxis?: AxisChannelName): Map<string, Map<TData, DiscreteGapFill<TStyle>>>;
|
package/dist/plots/utils/gaps.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
+
import { seriesIdOf } from '../../utils/grouping';
|
|
1
2
|
import { resolveAccessor } from './accessors';
|
|
2
|
-
import {
|
|
3
|
+
import { Interpolation } from '../../utils/Interpolation';
|
|
3
4
|
const DEFAULT_KEY = 'default';
|
|
4
5
|
/**
|
|
5
6
|
* Resolves one series' zone config out of `LinePlot`'s full `gaps` prop: a
|
|
6
7
|
* named entry (keyed by the series' own `name`) applies only to that
|
|
7
8
|
* series; `'default'` fills in whichever zone the named entry itself leaves
|
|
8
9
|
* unset. Unlike `segments`' own specific/default resolution (which
|
|
9
|
-
* concatenates two rule lists), this merges at zone granularity
|
|
10
|
+
* concatenates two rule lists), this merges at zone granularity - there's
|
|
10
11
|
* no list to concatenate, just three independent slots.
|
|
11
12
|
*/
|
|
12
|
-
export function resolveGapsForSeries(gaps, seriesName) {
|
|
13
|
+
export function resolveGapsForSeries(gaps = {}, seriesName) {
|
|
13
14
|
const specific = gaps[seriesName];
|
|
14
15
|
const defaults = gaps[DEFAULT_KEY];
|
|
15
16
|
if (!specific)
|
|
@@ -19,7 +20,7 @@ export function resolveGapsForSeries(gaps, seriesName) {
|
|
|
19
20
|
return {
|
|
20
21
|
start: specific.start ?? defaults.start,
|
|
21
22
|
middle: specific.middle ?? defaults.middle,
|
|
22
|
-
end: specific.end ?? defaults.end
|
|
23
|
+
end: specific.end ?? defaults.end
|
|
23
24
|
};
|
|
24
25
|
}
|
|
25
26
|
const BRIDGE_STEPS = 24;
|
|
@@ -29,7 +30,7 @@ export function isGapValue(v) {
|
|
|
29
30
|
}
|
|
30
31
|
/** Samples `BRIDGE_STEPS + 1` points between two endpoints, x moving linearly and y eased by the zone's `interpolate`. */
|
|
31
32
|
function buildBridge(from, to, zone) {
|
|
32
|
-
const ease =
|
|
33
|
+
const ease = Interpolation.buildEasing(zone.interpolate);
|
|
33
34
|
const points = [];
|
|
34
35
|
for (let i = 0; i <= BRIDGE_STEPS; i++) {
|
|
35
36
|
const t = i / BRIDGE_STEPS;
|
|
@@ -43,10 +44,12 @@ function buildBridge(from, to, zone) {
|
|
|
43
44
|
* configured, builds the eased bridge points that visually fill it. Rows
|
|
44
45
|
* are sorted by `x` first, so an out-of-order series is handled the same as
|
|
45
46
|
* a sorted one. A series with no valid (non-missing) rows at all produces
|
|
46
|
-
* no runs
|
|
47
|
+
* no runs - there's nothing to bridge from or to.
|
|
47
48
|
*/
|
|
48
49
|
export function resolveGapRuns(series, gaps) {
|
|
49
|
-
if (!gaps.start && !gaps.middle && !gaps.end)
|
|
50
|
+
if ((!gaps.start && !gaps.middle && !gaps.end) ||
|
|
51
|
+
series.x === undefined ||
|
|
52
|
+
series.y === undefined)
|
|
50
53
|
return [];
|
|
51
54
|
const xFn = resolveAccessor(series.x);
|
|
52
55
|
const yFn = resolveAccessor(series.y);
|
|
@@ -63,7 +66,10 @@ export function resolveGapRuns(series, gaps) {
|
|
|
63
66
|
const firstValid = validIdx[0];
|
|
64
67
|
if (firstValid > 0 && gaps.start) {
|
|
65
68
|
const to = pt(sorted[firstValid]);
|
|
66
|
-
const from = {
|
|
69
|
+
const from = {
|
|
70
|
+
x: Number(gaps.start.x),
|
|
71
|
+
y: gaps.start.y != null ? Number(gaps.start.y) : to.y
|
|
72
|
+
};
|
|
67
73
|
runs.push({ kind: 'start', zone: gaps.start, points: buildBridge(from, to, gaps.start) });
|
|
68
74
|
}
|
|
69
75
|
if (gaps.middle) {
|
|
@@ -74,7 +80,7 @@ export function resolveGapRuns(series, gaps) {
|
|
|
74
80
|
runs.push({
|
|
75
81
|
kind: 'middle',
|
|
76
82
|
zone: gaps.middle,
|
|
77
|
-
points: buildBridge(pt(sorted[a]), pt(sorted[b]), gaps.middle)
|
|
83
|
+
points: buildBridge(pt(sorted[a]), pt(sorted[b]), gaps.middle)
|
|
78
84
|
});
|
|
79
85
|
}
|
|
80
86
|
}
|
|
@@ -82,7 +88,10 @@ export function resolveGapRuns(series, gaps) {
|
|
|
82
88
|
const lastValid = validIdx[validIdx.length - 1];
|
|
83
89
|
if (lastValid < sorted.length - 1 && gaps.end) {
|
|
84
90
|
const from = pt(sorted[lastValid]);
|
|
85
|
-
const to = {
|
|
91
|
+
const to = {
|
|
92
|
+
x: Number(gaps.end.x),
|
|
93
|
+
y: gaps.end.y != null ? Number(gaps.end.y) : from.y
|
|
94
|
+
};
|
|
86
95
|
runs.push({ kind: 'end', zone: gaps.end, points: buildBridge(from, to, gaps.end) });
|
|
87
96
|
}
|
|
88
97
|
return runs;
|
|
@@ -91,17 +100,18 @@ export function resolveGapRuns(series, gaps) {
|
|
|
91
100
|
* Bar/pyramid analog of `resolveGapRuns`: a category axis has no continuous
|
|
92
101
|
* bridge to sample, so this returns one interpolated value per *individual*
|
|
93
102
|
* gap row instead. Runs are detected by `series.data`'s own array order
|
|
94
|
-
* (not a numeric `x` sort like `resolveGapRuns`
|
|
103
|
+
* (not a numeric `x` sort like `resolveGapRuns` - a category axis is often
|
|
95
104
|
* nominal, so there's no meaningful numeric ordering to sort by). Keyed by
|
|
96
105
|
* row object reference rather than category, since a series' `y` accessor
|
|
97
|
-
* may be an arbitrary function
|
|
106
|
+
* may be an arbitrary function - there's no general way to write the
|
|
98
107
|
* interpolated value back onto a row, so callers look it up here instead.
|
|
99
108
|
*/
|
|
100
|
-
export function resolveDiscreteGapFills(series, gaps) {
|
|
109
|
+
export function resolveDiscreteGapFills(series, gaps, valueAxis = 'y') {
|
|
101
110
|
const result = new Map();
|
|
102
|
-
|
|
111
|
+
const accessor = series[valueAxis];
|
|
112
|
+
if ((!gaps.start && !gaps.middle && !gaps.end) || accessor === undefined)
|
|
103
113
|
return result;
|
|
104
|
-
const yFn = resolveAccessor(
|
|
114
|
+
const yFn = resolveAccessor(accessor);
|
|
105
115
|
const rows = series.data;
|
|
106
116
|
const valueAt = (i) => Number(yFn(rows[i]));
|
|
107
117
|
const validIdx = rows.reduce((acc, row, i) => {
|
|
@@ -112,7 +122,7 @@ export function resolveDiscreteGapFills(series, gaps) {
|
|
|
112
122
|
if (validIdx.length === 0)
|
|
113
123
|
return result;
|
|
114
124
|
function fillRun(indices, from, to, zone, kind) {
|
|
115
|
-
const ease =
|
|
125
|
+
const ease = Interpolation.buildEasing(zone.interpolate);
|
|
116
126
|
const span = indices.length + 1;
|
|
117
127
|
indices.forEach((idx, i) => {
|
|
118
128
|
const t = (i + 1) / span;
|
|
@@ -142,7 +152,7 @@ export function resolveDiscreteGapFills(series, gaps) {
|
|
|
142
152
|
}
|
|
143
153
|
return result;
|
|
144
154
|
}
|
|
145
|
-
/** Field-by-field style fallback for a discrete gap-fill marker
|
|
155
|
+
/** Field-by-field style fallback for a discrete gap-fill marker - mirrors how `buildGapMarkers.ts` merges a line gap zone's style under `cfg.line.gap`. */
|
|
146
156
|
export function resolveGapAreaStyle(zoneStyle, defaultColor, gapDefaults) {
|
|
147
157
|
return {
|
|
148
158
|
fill: zoneStyle?.fill ?? gapDefaults.fill ?? defaultColor,
|
|
@@ -151,6 +161,16 @@ export function resolveGapAreaStyle(zoneStyle, defaultColor, gapDefaults) {
|
|
|
151
161
|
strokeWidth: zoneStyle?.strokeWidth ?? gapDefaults.strokeWidth,
|
|
152
162
|
strokeOpacity: zoneStyle?.strokeOpacity ?? gapDefaults.strokeOpacity,
|
|
153
163
|
strokeDasharray: zoneStyle?.strokeDasharray ?? gapDefaults.strokeDasharray,
|
|
154
|
-
borderRadius: zoneStyle?.borderRadius ?? gapDefaults.borderRadius
|
|
164
|
+
borderRadius: zoneStyle?.borderRadius ?? gapDefaults.borderRadius
|
|
155
165
|
};
|
|
156
166
|
}
|
|
167
|
+
/**
|
|
168
|
+
* Each series' gap fills, keyed by series id - the interpolated value a
|
|
169
|
+
* `styles.gaps` zone gives each missing row along `valueAxis`, resolved per series like `segments`.
|
|
170
|
+
*/
|
|
171
|
+
export function buildGapFillMaps(seriesList, gaps, valueAxis = 'y') {
|
|
172
|
+
return new Map(seriesList.map((s) => [
|
|
173
|
+
seriesIdOf(s),
|
|
174
|
+
resolveDiscreteGapFills(s, resolveGapsForSeries(gaps, s.name), valueAxis)
|
|
175
|
+
]));
|
|
176
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { GeoFeature } from '../../types/plots/data/geo';
|
|
2
2
|
/**
|
|
3
|
-
* Bounding-box center of a geometry's flattened coordinates
|
|
3
|
+
* Bounding-box center of a geometry's flattened coordinates - a cheap
|
|
4
4
|
* approximation used for default label placement, not a true
|
|
5
5
|
* geographic/area centroid (no polygon-hole or geodesic-area weighting).
|
|
6
|
-
* For hover-matching specifically, see `geometryPartCentroids` instead
|
|
6
|
+
* For hover-matching specifically, see `geometryPartCentroids` instead -
|
|
7
7
|
* this single combined point can land far from every actual part of a
|
|
8
8
|
* multi-part geometry whose pieces are geographically spread out.
|
|
9
9
|
*/
|
|
@@ -20,10 +20,10 @@ export declare function splitGeometryParts(geometry: GeoJSON.Geometry): GeoJSON.
|
|
|
20
20
|
/**
|
|
21
21
|
* Like `geometryCentroid`, but returns one point per disjoint part instead
|
|
22
22
|
* of a single bounding-box center across all of them. A `MultiPolygon`
|
|
23
|
-
* whose parts are geographically far apart
|
|
23
|
+
* whose parts are geographically far apart - e.g. Argentina's "Tierra del
|
|
24
24
|
* Fuego, Antártida e Islas del Atlántico Sur" province, whose `MultiPolygon`
|
|
25
25
|
* spans the mainland island, the Antarctic sector, and the South Atlantic
|
|
26
|
-
* islands in one feature
|
|
26
|
+
* islands in one feature - would otherwise get a single hover point
|
|
27
27
|
* stranded somewhere between all of them, matching hovers over *none* of
|
|
28
28
|
* the actually-rendered shapes. Multiple points attributed to the same
|
|
29
29
|
* feature is fine for hover-matching (nearest point wins, whichever part
|
|
@@ -34,7 +34,7 @@ export declare function geometryPartCentroids(geometry: GeoJSON.Geometry): [numb
|
|
|
34
34
|
/**
|
|
35
35
|
* Keeps or drops each disjoint part of a geometry (see `splitGeometryParts`)
|
|
36
36
|
* based on a per-part predicate, reassembling a geometry of the same type
|
|
37
|
-
* from whatever survives
|
|
37
|
+
* from whatever survives - `null` if nothing does. Used to let a single
|
|
38
38
|
* feature's geometry be split between the main map and an `inset` marker
|
|
39
39
|
* (see `GeoDataProps.excludeParts`/`GeoInsetMarkerConfig.featurePartsFilter`)
|
|
40
40
|
* without preprocessing the source data: e.g. a province whose `MultiPolygon`
|
|
@@ -48,7 +48,7 @@ export declare function filterGeometryParts(geometry: GeoJSON.Geometry, keep: (p
|
|
|
48
48
|
/** Default `featureId`: `feature.id`, else `properties.id`, else `properties.name`. */
|
|
49
49
|
export declare function defaultFeatureId<TProps extends Record<string, unknown>>(f: GeoFeature<TProps>): string;
|
|
50
50
|
/**
|
|
51
|
-
* `[minLon, minLat, maxLon, maxLat]` across every coordinate of a geometry
|
|
51
|
+
* `[minLon, minLat, maxLon, maxLat]` across every coordinate of a geometry -
|
|
52
52
|
* `null` for one with none (an empty `GeometryCollection`). Used by
|
|
53
53
|
* `Plot.svelte`'s `dataLonLatBounds` to cap how far a tile layer's
|
|
54
54
|
* letterboxed margin reaches (see `clampBoundsToDataPadding` in
|
|
@@ -57,14 +57,14 @@ export declare function defaultFeatureId<TProps extends Record<string, unknown>>
|
|
|
57
57
|
export declare function geometryLonLatBounds(geometry: GeoJSON.Geometry): [number, number, number, number] | null;
|
|
58
58
|
/**
|
|
59
59
|
* Densifies a great-circle arc between two lon/lat points into `steps + 1`
|
|
60
|
-
* points via spherical linear interpolation (slerp)
|
|
60
|
+
* points via spherical linear interpolation (slerp) - used to draw a `link`
|
|
61
61
|
* marker's geodesic curve through the `Geo` mark (see `Plot.svelte`).
|
|
62
62
|
*
|
|
63
63
|
* Not delegated to svelteplot's own `Link` mark: its 0.14.2 projection
|
|
64
64
|
* integration (`Mark.svelte`'s paired-channel handling) reads a single
|
|
65
65
|
* `row.x`/`row.y` pair regardless of channel suffix, so a mark bound to
|
|
66
66
|
* `x1`/`y1`/`x2`/`y2` (never plain `x`/`y`) resolves every point as invalid
|
|
67
|
-
* whenever the plot has an active `projection` scale
|
|
67
|
+
* whenever the plot has an active `projection` scale - which GeoPlot always
|
|
68
68
|
* does. `Geo` has no such limitation (geo marks are explicitly excluded from
|
|
69
69
|
* that code path), so a manually-interpolated `LineString` feature sidesteps
|
|
70
70
|
* the bug entirely while still producing the same geodesic visual.
|
|
@@ -49,10 +49,10 @@ function boundsCenter(coords) {
|
|
|
49
49
|
return [(minX + maxX) / 2, (minY + maxY) / 2];
|
|
50
50
|
}
|
|
51
51
|
/**
|
|
52
|
-
* Bounding-box center of a geometry's flattened coordinates
|
|
52
|
+
* Bounding-box center of a geometry's flattened coordinates - a cheap
|
|
53
53
|
* approximation used for default label placement, not a true
|
|
54
54
|
* geographic/area centroid (no polygon-hole or geodesic-area weighting).
|
|
55
|
-
* For hover-matching specifically, see `geometryPartCentroids` instead
|
|
55
|
+
* For hover-matching specifically, see `geometryPartCentroids` instead -
|
|
56
56
|
* this single combined point can land far from every actual part of a
|
|
57
57
|
* multi-part geometry whose pieces are geographically spread out.
|
|
58
58
|
*/
|
|
@@ -84,10 +84,10 @@ export function splitGeometryParts(geometry) {
|
|
|
84
84
|
/**
|
|
85
85
|
* Like `geometryCentroid`, but returns one point per disjoint part instead
|
|
86
86
|
* of a single bounding-box center across all of them. A `MultiPolygon`
|
|
87
|
-
* whose parts are geographically far apart
|
|
87
|
+
* whose parts are geographically far apart - e.g. Argentina's "Tierra del
|
|
88
88
|
* Fuego, Antártida e Islas del Atlántico Sur" province, whose `MultiPolygon`
|
|
89
89
|
* spans the mainland island, the Antarctic sector, and the South Atlantic
|
|
90
|
-
* islands in one feature
|
|
90
|
+
* islands in one feature - would otherwise get a single hover point
|
|
91
91
|
* stranded somewhere between all of them, matching hovers over *none* of
|
|
92
92
|
* the actually-rendered shapes. Multiple points attributed to the same
|
|
93
93
|
* feature is fine for hover-matching (nearest point wins, whichever part
|
|
@@ -100,7 +100,7 @@ export function geometryPartCentroids(geometry) {
|
|
|
100
100
|
/**
|
|
101
101
|
* Keeps or drops each disjoint part of a geometry (see `splitGeometryParts`)
|
|
102
102
|
* based on a per-part predicate, reassembling a geometry of the same type
|
|
103
|
-
* from whatever survives
|
|
103
|
+
* from whatever survives - `null` if nothing does. Used to let a single
|
|
104
104
|
* feature's geometry be split between the main map and an `inset` marker
|
|
105
105
|
* (see `GeoDataProps.excludeParts`/`GeoInsetMarkerConfig.featurePartsFilter`)
|
|
106
106
|
* without preprocessing the source data: e.g. a province whose `MultiPolygon`
|
|
@@ -118,11 +118,14 @@ export function filterGeometryParts(geometry, keep) {
|
|
|
118
118
|
return keptParts[0];
|
|
119
119
|
switch (geometry.type) {
|
|
120
120
|
case 'MultiPolygon':
|
|
121
|
-
return {
|
|
121
|
+
return {
|
|
122
|
+
type: 'MultiPolygon',
|
|
123
|
+
coordinates: keptParts.map((part) => part.coordinates)
|
|
124
|
+
};
|
|
122
125
|
case 'MultiLineString':
|
|
123
126
|
return {
|
|
124
127
|
type: 'MultiLineString',
|
|
125
|
-
coordinates: keptParts.map((part) => part.coordinates)
|
|
128
|
+
coordinates: keptParts.map((part) => part.coordinates)
|
|
126
129
|
};
|
|
127
130
|
case 'GeometryCollection':
|
|
128
131
|
return { type: 'GeometryCollection', geometries: keptParts };
|
|
@@ -136,7 +139,7 @@ export function defaultFeatureId(f) {
|
|
|
136
139
|
return String(f.id ?? props?.id ?? props?.name ?? '');
|
|
137
140
|
}
|
|
138
141
|
/**
|
|
139
|
-
* `[minLon, minLat, maxLon, maxLat]` across every coordinate of a geometry
|
|
142
|
+
* `[minLon, minLat, maxLon, maxLat]` across every coordinate of a geometry -
|
|
140
143
|
* `null` for one with none (an empty `GeometryCollection`). Used by
|
|
141
144
|
* `Plot.svelte`'s `dataLonLatBounds` to cap how far a tile layer's
|
|
142
145
|
* letterboxed margin reaches (see `clampBoundsToDataPadding` in
|
|
@@ -171,14 +174,14 @@ function toDeg(rad) {
|
|
|
171
174
|
}
|
|
172
175
|
/**
|
|
173
176
|
* Densifies a great-circle arc between two lon/lat points into `steps + 1`
|
|
174
|
-
* points via spherical linear interpolation (slerp)
|
|
177
|
+
* points via spherical linear interpolation (slerp) - used to draw a `link`
|
|
175
178
|
* marker's geodesic curve through the `Geo` mark (see `Plot.svelte`).
|
|
176
179
|
*
|
|
177
180
|
* Not delegated to svelteplot's own `Link` mark: its 0.14.2 projection
|
|
178
181
|
* integration (`Mark.svelte`'s paired-channel handling) reads a single
|
|
179
182
|
* `row.x`/`row.y` pair regardless of channel suffix, so a mark bound to
|
|
180
183
|
* `x1`/`y1`/`x2`/`y2` (never plain `x`/`y`) resolves every point as invalid
|
|
181
|
-
* whenever the plot has an active `projection` scale
|
|
184
|
+
* whenever the plot has an active `projection` scale - which GeoPlot always
|
|
182
185
|
* does. `Geo` has no such limitation (geo marks are explicitly excluded from
|
|
183
186
|
* that code path), so a manually-interpolated `LineString` feature sidesteps
|
|
184
187
|
* the bug entirely while still producing the same geodesic visual.
|
|
@@ -193,11 +196,12 @@ export function greatCircleInterpolate(lon1, lat1, lon2, lat2, steps = 64) {
|
|
|
193
196
|
const sinPhi2 = Math.sin(phi2);
|
|
194
197
|
const cosPhi2 = Math.cos(phi2);
|
|
195
198
|
const d = 2 *
|
|
196
|
-
Math.asin(Math.sqrt(Math.sin((phi2 - phi1) / 2) ** 2 +
|
|
199
|
+
Math.asin(Math.sqrt(Math.sin((phi2 - phi1) / 2) ** 2 +
|
|
200
|
+
cosPhi1 * cosPhi2 * Math.sin((lambda2 - lambda1) / 2) ** 2));
|
|
197
201
|
if (!Number.isFinite(d) || d === 0) {
|
|
198
202
|
return [
|
|
199
203
|
[lon1, lat1],
|
|
200
|
-
[lon2, lat2]
|
|
204
|
+
[lon2, lat2]
|
|
201
205
|
];
|
|
202
206
|
}
|
|
203
207
|
const points = [];
|
|
@@ -1,14 +1,29 @@
|
|
|
1
|
+
import type { ChannelScalesConfig } from '../../types/layout/scales';
|
|
1
2
|
import type { Segment } from '../../types/plots/segments/config';
|
|
2
3
|
import type { SegmentsConfig } from '../../types/plots/props';
|
|
3
|
-
/** Feature-specific segments listed after 'default' so they override it on merge (see `resolveFeatureStyle`). */
|
|
4
|
-
export declare function resolveSegmentsForFeature<TStyle>(segments: SegmentsConfig<TStyle>, featureId: string): Segment<TStyle>[];
|
|
5
4
|
/**
|
|
6
|
-
*
|
|
5
|
+
* Feature-specific segments listed after 'default' so they override it on
|
|
6
|
+
* merge (see `resolveFeatureStyle`). When the feature has a resolved
|
|
7
|
+
* `grouping` bucket, that bucket's own entries are listed in between -
|
|
8
|
+
* `default` < grouping bucket < feature-specific, most specific last.
|
|
9
|
+
*/
|
|
10
|
+
export declare function resolveSegmentsForFeature<TStyle>(segments: SegmentsConfig<TStyle>, featureId: string, groupingValue?: string): Segment<TStyle>[];
|
|
11
|
+
/**
|
|
12
|
+
* A geo feature is atomic - `Segment.areas` (x/y range restriction) doesn't
|
|
7
13
|
* apply, so every entry under a key is treated as a flat style patch applied
|
|
8
|
-
* in order: `'default'` entries apply first,
|
|
9
|
-
*
|
|
10
|
-
* `validateSegments`
|
|
11
|
-
* area-based semantics that don't hold here, since every geo
|
|
12
|
-
* merges rather than being dropped.
|
|
14
|
+
* in order: `'default'` entries apply first, then the grouping bucket's (if
|
|
15
|
+
* any), then feature-specific entries. This intentionally does NOT reuse
|
|
16
|
+
* `segments.ts`'s `validateSegments` - its "only the first catch-all wins"
|
|
17
|
+
* warning assumes area-based semantics that don't hold here, since every geo
|
|
18
|
+
* segment entry merges rather than being dropped.
|
|
19
|
+
*/
|
|
20
|
+
export declare function resolveFeatureStyle<TStyle extends object>(segments: SegmentsConfig<TStyle>, featureId: string, groupingValue?: string): TStyle;
|
|
21
|
+
/**
|
|
22
|
+
* A feature's own effective `scales` override, if any of its matching
|
|
23
|
+
* segments (`default`, its grouping bucket, or itself) set one - the last
|
|
24
|
+
* (most specific) entry that defines `scales` wins outright, unlike
|
|
25
|
+
* `resolveFeatureStyle`'s field-by-field merge, since a ramp config isn't
|
|
26
|
+
* sensibly mergeable key-by-key (a `domain` from one entry and a `scheme`
|
|
27
|
+
* from another wouldn't be a coherent scale).
|
|
13
28
|
*/
|
|
14
|
-
export declare function
|
|
29
|
+
export declare function resolveFeatureScales<TStyle>(segments: SegmentsConfig<TStyle>, featureId: string, groupingValue?: string): ChannelScalesConfig | undefined;
|
|
@@ -1,17 +1,37 @@
|
|
|
1
1
|
const DEFAULT_KEY = 'default';
|
|
2
|
-
/**
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Feature-specific segments listed after 'default' so they override it on
|
|
4
|
+
* merge (see `resolveFeatureStyle`). When the feature has a resolved
|
|
5
|
+
* `grouping` bucket, that bucket's own entries are listed in between -
|
|
6
|
+
* `default` < grouping bucket < feature-specific, most specific last.
|
|
7
|
+
*/
|
|
8
|
+
export function resolveSegmentsForFeature(segments, featureId, groupingValue) {
|
|
9
|
+
return [
|
|
10
|
+
...(segments[DEFAULT_KEY] ?? []),
|
|
11
|
+
...(groupingValue ? (segments[groupingValue] ?? []) : []),
|
|
12
|
+
...(segments[featureId] ?? [])
|
|
13
|
+
];
|
|
5
14
|
}
|
|
6
15
|
/**
|
|
7
|
-
* A geo feature is atomic
|
|
16
|
+
* A geo feature is atomic - `Segment.areas` (x/y range restriction) doesn't
|
|
8
17
|
* apply, so every entry under a key is treated as a flat style patch applied
|
|
9
|
-
* in order: `'default'` entries apply first,
|
|
10
|
-
*
|
|
11
|
-
* `validateSegments`
|
|
12
|
-
* area-based semantics that don't hold here, since every geo
|
|
13
|
-
* merges rather than being dropped.
|
|
18
|
+
* in order: `'default'` entries apply first, then the grouping bucket's (if
|
|
19
|
+
* any), then feature-specific entries. This intentionally does NOT reuse
|
|
20
|
+
* `segments.ts`'s `validateSegments` - its "only the first catch-all wins"
|
|
21
|
+
* warning assumes area-based semantics that don't hold here, since every geo
|
|
22
|
+
* segment entry merges rather than being dropped.
|
|
23
|
+
*/
|
|
24
|
+
export function resolveFeatureStyle(segments, featureId, groupingValue) {
|
|
25
|
+
return resolveSegmentsForFeature(segments, featureId, groupingValue).reduce((acc, seg) => ({ ...acc, ...(seg.styles ?? {}) }), {});
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* A feature's own effective `scales` override, if any of its matching
|
|
29
|
+
* segments (`default`, its grouping bucket, or itself) set one - the last
|
|
30
|
+
* (most specific) entry that defines `scales` wins outright, unlike
|
|
31
|
+
* `resolveFeatureStyle`'s field-by-field merge, since a ramp config isn't
|
|
32
|
+
* sensibly mergeable key-by-key (a `domain` from one entry and a `scheme`
|
|
33
|
+
* from another wouldn't be a coherent scale).
|
|
14
34
|
*/
|
|
15
|
-
export function
|
|
16
|
-
return resolveSegmentsForFeature(segments, featureId).reduce((acc, seg) =>
|
|
35
|
+
export function resolveFeatureScales(segments, featureId, groupingValue) {
|
|
36
|
+
return resolveSegmentsForFeature(segments, featureId, groupingValue).reduce((acc, seg) => seg.scales ?? acc, undefined);
|
|
17
37
|
}
|