@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
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
export type Declutter1DResult<T> = {
|
|
2
|
-
/** Sorted input, each with `.pos` replaced by its decluttered position. */
|
|
3
|
-
positions: T[];
|
|
4
|
-
/**
|
|
5
|
-
* `connected[i]` is true when `positions[i]` and `positions[i + 1]` were
|
|
6
|
-
* actually pushed apart by the algorithm — either the down-pass pushed
|
|
7
|
-
* `i + 1` down because of `i`, or the up-pass pulled `i` up because of
|
|
8
|
-
* `i + 1`. `length === positions.length - 1`.
|
|
9
|
-
*/
|
|
10
|
-
connected: boolean[];
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* Spreads a set of pixel-space positions apart along one axis so that no two
|
|
14
|
-
* end up closer than `minGap`, while keeping the overall block centered on
|
|
15
|
-
* the original positions. Computes two independent, individually-valid
|
|
16
|
-
* arrangements — a forward pass that only ever pushes items *down* to clear
|
|
17
|
-
* the one above it, and a backward pass that only ever pushes items *up* to
|
|
18
|
-
* clear the one below — then averages them index-by-index.
|
|
19
|
-
*
|
|
20
|
-
* A pass chained directly onto the other's output (push down, *then* pull up
|
|
21
|
-
* on the already-pushed result) is a no-op: by the time the down-pass
|
|
22
|
-
* finishes, `sorted[i] >= sorted[i-1] + minGap` already holds everywhere,
|
|
23
|
-
* which is exactly the condition an up-pass would otherwise "fix". Averaging
|
|
24
|
-
* two independent passes instead is what actually centers the block; it
|
|
25
|
-
* still keeps every adjacent gap >= minGap, since each pass's own gaps are
|
|
26
|
-
* already >= minGap and the average of two such gaps is too.
|
|
27
|
-
*
|
|
28
|
-
* Also records, per adjacent pair, whether either pass actually had to push
|
|
29
|
-
* — the ground truth for "did these two really interact," which
|
|
30
|
-
* `laneAssignment` needs and can't reliably reconstruct from positions alone
|
|
31
|
-
* after the fact (see its own doc comment).
|
|
32
|
-
*
|
|
33
|
-
* `bounds`, if given, keeps every *run* (a maximal stretch of connected
|
|
34
|
-
* items — lone, unconnected items are left at their true position
|
|
35
|
-
* regardless) inside `[lo, hi]`: nothing pushed apart by this function is
|
|
36
|
-
* ever allowed to end up off the edge of whatever pixel range the caller
|
|
37
|
-
* considers in-bounds (typically the plot's own content box). A run that
|
|
38
|
-
* already fits is only shifted, never resized; a run too big to fit even
|
|
39
|
-
* at its natural spacing is shrunk just enough to fit, uniformly, so it's
|
|
40
|
-
* still evenly spaced — just tighter than `minGap` calls for. See
|
|
41
|
-
* `fitRunsWithinBounds` for the actual shift/shrink math.
|
|
42
|
-
*
|
|
43
|
-
* `bounds` also biases *which* pass a run's average leans on, via
|
|
44
|
-
* {@link runBiasWeights}: a run sitting close to one edge has little slack on
|
|
45
|
-
* that side, so a plain 50/50 blend would still ask the up-pass and
|
|
46
|
-
* down-pass to pull the block symmetrically toward *both* edges before
|
|
47
|
-
* `fitRunsWithinBounds` shifts/shrinks it back — the up-pass reaching for
|
|
48
|
-
* room that was never really there, needlessly widening how far members end
|
|
49
|
-
* up travelling from their original positions (`laneAssignment`'s own lane
|
|
50
|
-
* count grows with exactly that travel distance — see its doc comment) — so
|
|
51
|
-
* a run near an edge leans toward whichever pass already grows away from it
|
|
52
|
-
* instead — the block still expands to clear `minGap` everywhere, just
|
|
53
|
-
* mostly in the one direction that was actually available, the way a person
|
|
54
|
-
* sliding books apart on a shelf pinned against one wall would.
|
|
55
|
-
*/
|
|
56
|
-
export declare function declutter1D<T extends {
|
|
57
|
-
pos: number;
|
|
58
|
-
}>(items: T[], minGap: number, bounds?: readonly [number, number]): Declutter1DResult<T>;
|
|
59
|
-
/**
|
|
60
|
-
* Groups `declutter1D`'s own `connected` flags into runs (maximal stretches
|
|
61
|
-
* of consecutive connected pairs), then gives every run member its own,
|
|
62
|
-
* unique lane — no two members ever share one, deliberately (see below) —
|
|
63
|
-
* ordered so that a leader line drawn through lane `rank` never crosses, or
|
|
64
|
-
* even draws visually flush against, one drawn through any other lane of
|
|
65
|
-
* the same run.
|
|
66
|
-
*
|
|
67
|
-
* Every member's leader line is the same three-segment elbow: a horizontal
|
|
68
|
-
* stub from the data point out to its lane, a vertical run up/down that
|
|
69
|
-
* lane to the label's height, then a final horizontal run in to the shared
|
|
70
|
-
* label column. Two such elbows, `i` (in the tighter of the two lanes) and
|
|
71
|
-
* `j` (further out), are safe from crossing *specifically* when neither of
|
|
72
|
-
* these can happen:
|
|
73
|
-
* - `j`'s own stub (at `j`'s original height) reaches out past `i`'s lane
|
|
74
|
-
* while `i`'s vertical run passes through that height — `j`'s stub would
|
|
75
|
-
* cut across `i`'s vertical segment.
|
|
76
|
-
* - `i`'s final run (at `i`'s label height) reaches past `i`'s own lane out
|
|
77
|
-
* to the shared column, and in doing so crosses `j`'s lane while `j`'s
|
|
78
|
-
* vertical run passes through *that* height — `i`'s own final segment
|
|
79
|
-
* would cut across `j`'s vertical segment.
|
|
80
|
-
*
|
|
81
|
-
* Whether `i` can safely take the tighter lane depends on both members'
|
|
82
|
-
* *actual* pixel geometry — not simply on which one moved further — so each
|
|
83
|
-
* pair is checked directly per {@link saferNearer} rather than inferred from
|
|
84
|
-
* a single sort key. A pair with a clean, provable answer either way (the
|
|
85
|
-
* overwhelmingly common case for `declutter1D`'s own output) is ordered by
|
|
86
|
-
* that answer; a pair with no clean answer (both directions equally
|
|
87
|
-
* "unsafe," or, symmetrically, both fine) falls back to the same *travel
|
|
88
|
-
* distance* heuristic used before this per-pair check existed — furthest
|
|
89
|
-
* `|final - original|` first — which is what decides ties and keeps the
|
|
90
|
-
* "furthest traveller gets the tightest lane, so it starts bending
|
|
91
|
-
* immediately rather than reaching across everyone else's leader lines
|
|
92
|
-
* first" intent for every pair the geometry itself doesn't already settle.
|
|
93
|
-
*
|
|
94
|
-
* No sharing, ever, is the other half of this: two members can only have
|
|
95
|
-
* non-overlapping travel spans (and so pass the old, now-removed,
|
|
96
|
-
* share-a-lane check) by sitting far apart along the axis — but "far apart"
|
|
97
|
-
* is exactly the case with the most room to spare, so it never needed the
|
|
98
|
-
* lane it would save by sharing, while any pair close enough to actually be
|
|
99
|
-
* short on room has spans close enough together that sharing draws their
|
|
100
|
-
* two leader lines only a couple pixels apart — visually indistinguishable
|
|
101
|
-
* from one continuous line touching the next label down. A run of `n`
|
|
102
|
-
* members uses exactly `n` lanes; letting the lane count grow is the price
|
|
103
|
-
* of a fan that never has two leader lines touching *or* crossing, and
|
|
104
|
-
* `ValueLabels`' own auto-margin measurement (see its doc comment) already
|
|
105
|
-
* grows `margins.right` to fit however many lanes that turns out to be, so
|
|
106
|
-
* nothing has to be guessed up front.
|
|
107
|
-
*
|
|
108
|
-
* `rank` is the lane index (0-indexed) to drive a leader line's routing:
|
|
109
|
-
* `rank` 0 bends right off the data point (a short first stub); higher
|
|
110
|
-
* ranks travel further before bending (right up to the shared label
|
|
111
|
-
* column). `lanesUsed` is the run's own total lane count — always equal to
|
|
112
|
-
* `runSize` — shared by every member; `runSize` is the run's member count,
|
|
113
|
-
* for callers that just need to know whether a given member belongs to a
|
|
114
|
-
* real run at all.
|
|
115
|
-
*/
|
|
116
|
-
export declare function laneAssignment(originals: number[], finals: number[], connected: boolean[]): {
|
|
117
|
-
rank: number;
|
|
118
|
-
lanesUsed: number;
|
|
119
|
-
runSize: number;
|
|
120
|
-
}[];
|
|
@@ -1,240 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Spreads a set of pixel-space positions apart along one axis so that no two
|
|
3
|
-
* end up closer than `minGap`, while keeping the overall block centered on
|
|
4
|
-
* the original positions. Computes two independent, individually-valid
|
|
5
|
-
* arrangements — a forward pass that only ever pushes items *down* to clear
|
|
6
|
-
* the one above it, and a backward pass that only ever pushes items *up* to
|
|
7
|
-
* clear the one below — then averages them index-by-index.
|
|
8
|
-
*
|
|
9
|
-
* A pass chained directly onto the other's output (push down, *then* pull up
|
|
10
|
-
* on the already-pushed result) is a no-op: by the time the down-pass
|
|
11
|
-
* finishes, `sorted[i] >= sorted[i-1] + minGap` already holds everywhere,
|
|
12
|
-
* which is exactly the condition an up-pass would otherwise "fix". Averaging
|
|
13
|
-
* two independent passes instead is what actually centers the block; it
|
|
14
|
-
* still keeps every adjacent gap >= minGap, since each pass's own gaps are
|
|
15
|
-
* already >= minGap and the average of two such gaps is too.
|
|
16
|
-
*
|
|
17
|
-
* Also records, per adjacent pair, whether either pass actually had to push
|
|
18
|
-
* — the ground truth for "did these two really interact," which
|
|
19
|
-
* `laneAssignment` needs and can't reliably reconstruct from positions alone
|
|
20
|
-
* after the fact (see its own doc comment).
|
|
21
|
-
*
|
|
22
|
-
* `bounds`, if given, keeps every *run* (a maximal stretch of connected
|
|
23
|
-
* items — lone, unconnected items are left at their true position
|
|
24
|
-
* regardless) inside `[lo, hi]`: nothing pushed apart by this function is
|
|
25
|
-
* ever allowed to end up off the edge of whatever pixel range the caller
|
|
26
|
-
* considers in-bounds (typically the plot's own content box). A run that
|
|
27
|
-
* already fits is only shifted, never resized; a run too big to fit even
|
|
28
|
-
* at its natural spacing is shrunk just enough to fit, uniformly, so it's
|
|
29
|
-
* still evenly spaced — just tighter than `minGap` calls for. See
|
|
30
|
-
* `fitRunsWithinBounds` for the actual shift/shrink math.
|
|
31
|
-
*
|
|
32
|
-
* `bounds` also biases *which* pass a run's average leans on, via
|
|
33
|
-
* {@link runBiasWeights}: a run sitting close to one edge has little slack on
|
|
34
|
-
* that side, so a plain 50/50 blend would still ask the up-pass and
|
|
35
|
-
* down-pass to pull the block symmetrically toward *both* edges before
|
|
36
|
-
* `fitRunsWithinBounds` shifts/shrinks it back — the up-pass reaching for
|
|
37
|
-
* room that was never really there, needlessly widening how far members end
|
|
38
|
-
* up travelling from their original positions (`laneAssignment`'s own lane
|
|
39
|
-
* count grows with exactly that travel distance — see its doc comment) — so
|
|
40
|
-
* a run near an edge leans toward whichever pass already grows away from it
|
|
41
|
-
* instead — the block still expands to clear `minGap` everywhere, just
|
|
42
|
-
* mostly in the one direction that was actually available, the way a person
|
|
43
|
-
* sliding books apart on a shelf pinned against one wall would.
|
|
44
|
-
*/
|
|
45
|
-
export function declutter1D(items, minGap, bounds) {
|
|
46
|
-
const sorted = [...items].sort((a, b) => a.pos - b.pos);
|
|
47
|
-
const n = sorted.length;
|
|
48
|
-
const connected = new Array(Math.max(0, n - 1)).fill(false);
|
|
49
|
-
const down = sorted.map((d) => d.pos);
|
|
50
|
-
for (let i = 1; i < n; i++) {
|
|
51
|
-
const pushed = down[i - 1] + minGap;
|
|
52
|
-
if (pushed > down[i]) {
|
|
53
|
-
down[i] = pushed;
|
|
54
|
-
connected[i - 1] = true;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
const up = sorted.map((d) => d.pos);
|
|
58
|
-
for (let i = n - 2; i >= 0; i--) {
|
|
59
|
-
const pulled = up[i + 1] - minGap;
|
|
60
|
-
if (pulled < up[i]) {
|
|
61
|
-
up[i] = pulled;
|
|
62
|
-
connected[i] = true;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
const weights = bounds ? runBiasWeights(down, up, connected, bounds) : sorted.map(() => 0.5);
|
|
66
|
-
const averaged = sorted.map((_, i) => down[i] * weights[i] + up[i] * (1 - weights[i]));
|
|
67
|
-
const fitted = bounds ? fitRunsWithinBounds(averaged, connected, bounds) : averaged;
|
|
68
|
-
const positions = sorted.map((d, i) => ({ ...d, pos: fitted[i] }));
|
|
69
|
-
return { positions, connected };
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Per-run blend weight (applied to the down-pass; `1 - weight` goes to the
|
|
73
|
-
* up-pass) favouring whichever pass already grows away from the nearer edge
|
|
74
|
-
* — see {@link declutter1D}'s doc comment for why. `0.5` (the down/up
|
|
75
|
-
* midpoint, i.e. no bias) when a run's naturally-centred span has roughly
|
|
76
|
-
* equal room on both sides; sliding toward `1` (all down-pass) as room above
|
|
77
|
-
* vanishes, toward `0` (all up-pass) as room below vanishes. Every member of
|
|
78
|
-
* a run gets the *same* weight — the point is the block moving as one
|
|
79
|
-
* (mostly) one-directional piece, not each member picking its own bias.
|
|
80
|
-
*/
|
|
81
|
-
function runBiasWeights(down, up, connected, [lo, hi]) {
|
|
82
|
-
const weights = down.map(() => 0.5);
|
|
83
|
-
let i = 0;
|
|
84
|
-
while (i < down.length) {
|
|
85
|
-
let j = i;
|
|
86
|
-
while (j < connected.length && connected[j])
|
|
87
|
-
j++;
|
|
88
|
-
if (j > i) {
|
|
89
|
-
const center = ((down[i] + up[i]) / 2 + (down[j] + up[j]) / 2) / 2;
|
|
90
|
-
const roomAbove = Math.max(0, center - lo);
|
|
91
|
-
const roomBelow = Math.max(0, hi - center);
|
|
92
|
-
const total = roomAbove + roomBelow;
|
|
93
|
-
const weight = total > 0 ? roomBelow / total : 0.5;
|
|
94
|
-
for (let k = i; k <= j; k++)
|
|
95
|
-
weights[k] = weight;
|
|
96
|
-
}
|
|
97
|
-
i = j + 1;
|
|
98
|
-
}
|
|
99
|
-
return weights;
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Shifts, and shrinks only if it must, each run of `connected` positions so
|
|
103
|
-
* it lands entirely inside `[lo, hi]`. A run's own relative spacing is
|
|
104
|
-
* preserved as-is (just translated) whenever it already fits in `hi - lo`;
|
|
105
|
-
* only a run wider than the available space gets uniformly scaled down
|
|
106
|
-
* around its centre first. A lone, unconnected position is simply clamped
|
|
107
|
-
* to the nearer bound instead — its own value never needed decluttering,
|
|
108
|
-
* but it can still sit close enough to the scale's own edge to overflow on
|
|
109
|
-
* its own.
|
|
110
|
-
*/
|
|
111
|
-
function fitRunsWithinBounds(positions, connected, [lo, hi]) {
|
|
112
|
-
const out = [...positions];
|
|
113
|
-
const available = hi - lo;
|
|
114
|
-
let i = 0;
|
|
115
|
-
while (i < out.length) {
|
|
116
|
-
let j = i;
|
|
117
|
-
while (j < connected.length && connected[j])
|
|
118
|
-
j++;
|
|
119
|
-
if (j > i) {
|
|
120
|
-
const runMin = out[i];
|
|
121
|
-
const runMax = out[j];
|
|
122
|
-
if (runMin < lo || runMax > hi) {
|
|
123
|
-
const naturalSpan = runMax - runMin;
|
|
124
|
-
const scale = naturalSpan > 0 ? Math.min(1, available / naturalSpan) : 1;
|
|
125
|
-
const idealCenter = (runMin + runMax) / 2;
|
|
126
|
-
const newSpan = naturalSpan * scale;
|
|
127
|
-
const newCenter = Math.min(Math.max(idealCenter, lo + newSpan / 2), hi - newSpan / 2);
|
|
128
|
-
for (let k = i; k <= j; k++) {
|
|
129
|
-
out[k] = newCenter + (out[k] - idealCenter) * scale;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
out[i] = Math.min(Math.max(out[i], lo), hi);
|
|
135
|
-
}
|
|
136
|
-
i = j + 1;
|
|
137
|
-
}
|
|
138
|
-
return out;
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Groups `declutter1D`'s own `connected` flags into runs (maximal stretches
|
|
142
|
-
* of consecutive connected pairs), then gives every run member its own,
|
|
143
|
-
* unique lane — no two members ever share one, deliberately (see below) —
|
|
144
|
-
* ordered so that a leader line drawn through lane `rank` never crosses, or
|
|
145
|
-
* even draws visually flush against, one drawn through any other lane of
|
|
146
|
-
* the same run.
|
|
147
|
-
*
|
|
148
|
-
* Every member's leader line is the same three-segment elbow: a horizontal
|
|
149
|
-
* stub from the data point out to its lane, a vertical run up/down that
|
|
150
|
-
* lane to the label's height, then a final horizontal run in to the shared
|
|
151
|
-
* label column. Two such elbows, `i` (in the tighter of the two lanes) and
|
|
152
|
-
* `j` (further out), are safe from crossing *specifically* when neither of
|
|
153
|
-
* these can happen:
|
|
154
|
-
* - `j`'s own stub (at `j`'s original height) reaches out past `i`'s lane
|
|
155
|
-
* while `i`'s vertical run passes through that height — `j`'s stub would
|
|
156
|
-
* cut across `i`'s vertical segment.
|
|
157
|
-
* - `i`'s final run (at `i`'s label height) reaches past `i`'s own lane out
|
|
158
|
-
* to the shared column, and in doing so crosses `j`'s lane while `j`'s
|
|
159
|
-
* vertical run passes through *that* height — `i`'s own final segment
|
|
160
|
-
* would cut across `j`'s vertical segment.
|
|
161
|
-
*
|
|
162
|
-
* Whether `i` can safely take the tighter lane depends on both members'
|
|
163
|
-
* *actual* pixel geometry — not simply on which one moved further — so each
|
|
164
|
-
* pair is checked directly per {@link saferNearer} rather than inferred from
|
|
165
|
-
* a single sort key. A pair with a clean, provable answer either way (the
|
|
166
|
-
* overwhelmingly common case for `declutter1D`'s own output) is ordered by
|
|
167
|
-
* that answer; a pair with no clean answer (both directions equally
|
|
168
|
-
* "unsafe," or, symmetrically, both fine) falls back to the same *travel
|
|
169
|
-
* distance* heuristic used before this per-pair check existed — furthest
|
|
170
|
-
* `|final - original|` first — which is what decides ties and keeps the
|
|
171
|
-
* "furthest traveller gets the tightest lane, so it starts bending
|
|
172
|
-
* immediately rather than reaching across everyone else's leader lines
|
|
173
|
-
* first" intent for every pair the geometry itself doesn't already settle.
|
|
174
|
-
*
|
|
175
|
-
* No sharing, ever, is the other half of this: two members can only have
|
|
176
|
-
* non-overlapping travel spans (and so pass the old, now-removed,
|
|
177
|
-
* share-a-lane check) by sitting far apart along the axis — but "far apart"
|
|
178
|
-
* is exactly the case with the most room to spare, so it never needed the
|
|
179
|
-
* lane it would save by sharing, while any pair close enough to actually be
|
|
180
|
-
* short on room has spans close enough together that sharing draws their
|
|
181
|
-
* two leader lines only a couple pixels apart — visually indistinguishable
|
|
182
|
-
* from one continuous line touching the next label down. A run of `n`
|
|
183
|
-
* members uses exactly `n` lanes; letting the lane count grow is the price
|
|
184
|
-
* of a fan that never has two leader lines touching *or* crossing, and
|
|
185
|
-
* `ValueLabels`' own auto-margin measurement (see its doc comment) already
|
|
186
|
-
* grows `margins.right` to fit however many lanes that turns out to be, so
|
|
187
|
-
* nothing has to be guessed up front.
|
|
188
|
-
*
|
|
189
|
-
* `rank` is the lane index (0-indexed) to drive a leader line's routing:
|
|
190
|
-
* `rank` 0 bends right off the data point (a short first stub); higher
|
|
191
|
-
* ranks travel further before bending (right up to the shared label
|
|
192
|
-
* column). `lanesUsed` is the run's own total lane count — always equal to
|
|
193
|
-
* `runSize` — shared by every member; `runSize` is the run's member count,
|
|
194
|
-
* for callers that just need to know whether a given member belongs to a
|
|
195
|
-
* real run at all.
|
|
196
|
-
*/
|
|
197
|
-
export function laneAssignment(originals, finals, connected) {
|
|
198
|
-
const n = connected.length + 1;
|
|
199
|
-
const out = Array.from({ length: n }, () => ({ rank: 0, lanesUsed: 1, runSize: 1 }));
|
|
200
|
-
const span = (k) => {
|
|
201
|
-
const a = originals[k];
|
|
202
|
-
const b = finals[k];
|
|
203
|
-
return a < b ? [a, b] : [b, a];
|
|
204
|
-
};
|
|
205
|
-
const distance = (k) => Math.abs(finals[k] - originals[k]);
|
|
206
|
-
/** Whether lane-`i`-nearer-than-`j` is provably crossing-free — see this function's doc comment. */
|
|
207
|
-
function saferNearer(i, j) {
|
|
208
|
-
const [loI, hiI] = span(i);
|
|
209
|
-
const [loJ, hiJ] = span(j);
|
|
210
|
-
const jStubCutsI = originals[j] >= loI && originals[j] <= hiI;
|
|
211
|
-
const iFinalCutsJ = finals[i] >= loJ && finals[i] <= hiJ;
|
|
212
|
-
return !jStubCutsI && !iFinalCutsJ;
|
|
213
|
-
}
|
|
214
|
-
let i = 0;
|
|
215
|
-
while (i < n) {
|
|
216
|
-
let j = i;
|
|
217
|
-
while (j < connected.length && connected[j])
|
|
218
|
-
j++;
|
|
219
|
-
const runSize = j - i + 1;
|
|
220
|
-
if (runSize > 1) {
|
|
221
|
-
// Members of this run, ordered so each is provably safe to place
|
|
222
|
-
// nearer than the next whenever that's decidable, furthest-travelled
|
|
223
|
-
// first otherwise (ties keep their original — i.e. top-to-bottom —
|
|
224
|
-
// order, since `sort` is stable). Position in this order *is* the
|
|
225
|
-
// rank: no sharing.
|
|
226
|
-
const order = Array.from({ length: runSize }, (_, k) => i + k).sort((a, b) => {
|
|
227
|
-
const aNearer = saferNearer(a, b);
|
|
228
|
-
const bNearer = saferNearer(b, a);
|
|
229
|
-
if (aNearer !== bNearer)
|
|
230
|
-
return aNearer ? -1 : 1;
|
|
231
|
-
return distance(b) - distance(a);
|
|
232
|
-
});
|
|
233
|
-
order.forEach((k, rank) => {
|
|
234
|
-
out[k] = { rank, lanesUsed: runSize, runSize };
|
|
235
|
-
});
|
|
236
|
-
}
|
|
237
|
-
i = j + 1;
|
|
238
|
-
}
|
|
239
|
-
return out;
|
|
240
|
-
}
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import type { MarginConfig } from '../../types/plots/props';
|
|
2
|
-
/** How far a value label's rendered box extends past the plot's own content box, in pixels, on each side (0 = no overflow). */
|
|
3
|
-
export type MarginOverflow = {
|
|
4
|
-
left: number;
|
|
5
|
-
right: number;
|
|
6
|
-
top: number;
|
|
7
|
-
bottom: number;
|
|
8
|
-
};
|
|
9
|
-
/**
|
|
10
|
-
* A generic `maxOverflow` cap for {@link createLabelMarginTracker}: half of
|
|
11
|
-
* each dimension, so a facet cramped enough that its own value label can
|
|
12
|
-
* never fully fit still leaves the plot's own content box the other half,
|
|
13
|
-
* rather than `measured` growing without bound (see that function's own
|
|
14
|
-
* `maxOverflow` doc comment). The same backstop applies regardless of *what*
|
|
15
|
-
* overflows or *why* — every value-label-drawing plot (line/bar/pyramid/
|
|
16
|
-
* scatter) passes this, sized off its own `width`/`height`.
|
|
17
|
-
*/
|
|
18
|
-
export declare function halfDimensionOverflowCap(width: number, height: number): MarginOverflow;
|
|
19
|
-
/**
|
|
20
|
-
* Watches an SVG group's rendered bounding box against the plot's own
|
|
21
|
-
* content box (`bounds`) and reports how far it overflows on each side.
|
|
22
|
-
* Polled across successive paints until two consecutive readings agree,
|
|
23
|
-
* rather than trusted after a single frame: the group's own resolved
|
|
24
|
-
* geometry (driven by svelteplot's separate reactive graph) and svelteplot's
|
|
25
|
-
* own axis auto-margins can take a variable number of frames to settle —
|
|
26
|
-
* more on a page with many other components competing for layout (e.g. a
|
|
27
|
-
* docs page) than in an isolated story. Measuring too early can catch
|
|
28
|
-
* content still at its pre-layout default position; capped so a layout that
|
|
29
|
-
* genuinely never stabilizes still reports its last reading instead of
|
|
30
|
-
* polling forever. Also waits for web fonts to finish loading, since glyph
|
|
31
|
-
* metrics (and therefore `getBBox()`) can still reflect a fallback font's
|
|
32
|
-
* narrower widths until the real font swaps in.
|
|
33
|
-
*/
|
|
34
|
-
export declare function watchLabelOverflow(args: {
|
|
35
|
-
el: () => SVGGElement | undefined;
|
|
36
|
-
bounds: () => {
|
|
37
|
-
left: number;
|
|
38
|
-
right: number;
|
|
39
|
-
top: number;
|
|
40
|
-
bottom: number;
|
|
41
|
-
} | undefined;
|
|
42
|
-
onOverflow: (overflow: MarginOverflow) => void;
|
|
43
|
-
}): void;
|
|
44
|
-
/**
|
|
45
|
-
* Tracks value-label overflow reported by (possibly several, e.g. one per
|
|
46
|
-
* series) {@link watchLabelOverflow} calls and grows a local margin override
|
|
47
|
-
* to fit it — monotonically, since shrinking it back would re-expose the
|
|
48
|
-
* overflow that caused the growth in the first place, oscillating between
|
|
49
|
-
* "shrink margin → overflow reappears → grow margin → …". Each side is only
|
|
50
|
-
* ever set when the caller's own `margins` prop hasn't already pinned it, so
|
|
51
|
-
* an explicit caller override always wins over this auto-grown one.
|
|
52
|
-
*
|
|
53
|
-
* That monotonic growth is only sound for a *stable* dataset — it assumes
|
|
54
|
-
* every reading describes the same thing being measured, just possibly at an
|
|
55
|
-
* earlier, not-yet-settled frame. It stops being sound once the caller's own
|
|
56
|
-
* data changes identity underneath it (e.g. a timeline scrubber revealing a
|
|
57
|
-
* different slice of rows on every tick): an overflow measured against
|
|
58
|
-
* *that* frame's rendered labels doesn't describe the next frame's, so
|
|
59
|
-
* carrying it forward forever can leave a plot permanently — and wrongly —
|
|
60
|
-
* margin-inflated by whatever the single most cluttered frame it ever
|
|
61
|
-
* passed through needed, long after scrubbing away from it. `resetKey`, if
|
|
62
|
-
* given, is compared by identity on every call; a change drops `measured`
|
|
63
|
-
* back to zero so the next frame's overflow is measured fresh against only
|
|
64
|
-
* what's actually on screen now. Pass whatever reactive value identifies
|
|
65
|
-
* "what's currently being plotted" for the caller (e.g. its own resolved
|
|
66
|
-
* series list) — a plain reference/value comparison, not a deep one, so it
|
|
67
|
-
* only need change identity when the rendered content actually does.
|
|
68
|
-
*/
|
|
69
|
-
export declare function createLabelMarginTracker(margins: () => MarginConfig | undefined, resetKey?: () => unknown,
|
|
70
|
-
/**
|
|
71
|
-
* A precomputed overflow estimate — from the full dataset, not just the
|
|
72
|
-
* current frame — used as the reset target instead of zero. Since it's
|
|
73
|
-
* derived from stable inputs, a `resetKey` change resets `measured` back
|
|
74
|
-
* to roughly the same value instead of zero, so DOM growth rarely needs
|
|
75
|
-
* to re-detect and re-grow it (which would otherwise remount the plot on
|
|
76
|
-
* every reset). DOM measurement can still grow past it for whatever this
|
|
77
|
-
* estimate doesn't cover.
|
|
78
|
-
*/
|
|
79
|
-
floor?: () => MarginOverflow,
|
|
80
|
-
/**
|
|
81
|
-
* Ceiling on how far `measured` can grow on each side, independent of
|
|
82
|
-
* `floor`. Without one, a cell too small to ever fully fit its own label
|
|
83
|
-
* (e.g. a narrow facet) keeps reporting overflow after every growth-
|
|
84
|
-
* triggered remount — since the label's absolute size never shrinks —
|
|
85
|
-
* and `measured` grows without bound, eventually leaving nothing for the
|
|
86
|
-
* plot's own content box. Capping it trades a permanently-clipped label
|
|
87
|
-
* in that case for a plot that still renders. Pass `Infinity` on a side
|
|
88
|
-
* (the default) to leave it uncapped.
|
|
89
|
-
*/
|
|
90
|
-
maxOverflow?: () => MarginOverflow): {
|
|
91
|
-
report: (overflow: MarginOverflow) => void;
|
|
92
|
-
readonly resolvedMargins: Partial<{
|
|
93
|
-
top: number | "auto";
|
|
94
|
-
right: number | "auto";
|
|
95
|
-
bottom: number | "auto";
|
|
96
|
-
left: number | "auto";
|
|
97
|
-
}> | undefined;
|
|
98
|
-
readonly plotProps: {
|
|
99
|
-
margins: Partial<{
|
|
100
|
-
top: number | "auto";
|
|
101
|
-
right: number | "auto";
|
|
102
|
-
bottom: number | "auto";
|
|
103
|
-
left: number | "auto";
|
|
104
|
-
}> | undefined;
|
|
105
|
-
marginRemountKey: string;
|
|
106
|
-
};
|
|
107
|
-
};
|