@fundar/data-chart-telling 0.0.64 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/LICENSE +21 -0
- package/README.md +81 -561
- package/dist/configuration/config.svelte.d.ts +5 -5
- package/dist/configuration/config.svelte.js +130 -46
- package/dist/configuration/fonts.d.ts +6 -0
- package/dist/configuration/fonts.js +6 -0
- package/dist/configuration/themes/compact.d.ts +2 -2
- package/dist/configuration/themes/compact.js +1 -1
- package/dist/configuration/themes/dark.d.ts +2 -2
- package/dist/configuration/themes/dark.js +5 -4
- package/dist/configuration/themes/default.d.ts +8 -3
- package/dist/configuration/themes/default.js +8 -2
- package/dist/configuration/themes/editorial.d.ts +2 -2
- package/dist/configuration/themes/editorial.js +2 -2
- package/dist/configuration/themes/index.d.ts +421 -80
- package/dist/configuration/themes/index.js +6 -5
- package/dist/index.d.ts +34 -48
- package/dist/index.js +19 -35
- package/dist/layout/base/BasePlotLayout.svelte +312 -0
- package/dist/layout/base/BasePlotLayout.svelte.d.ts +111 -0
- package/dist/layout/composer/PlotComposer.svelte +94 -0
- package/dist/layout/composer/PlotComposer.svelte.d.ts +13 -0
- package/dist/layout/coordinates/CameraFit.svelte +4 -4
- package/dist/layout/coordinates/CoordinatesLayout.svelte +11 -3
- package/dist/layout/coordinates/CoordinatesLayout.svelte.d.ts +6 -2
- package/dist/layout/coordinates/camera.svelte.d.ts +1 -1
- package/dist/layout/coordinates/camera.svelte.js +6 -6
- package/dist/layout/coordinates/projections/argentina.js +3 -3
- package/dist/layout/coordinates/projections/fit.js +1 -1
- package/dist/layout/coordinates/resolveCameraTarget.d.ts +1 -1
- package/dist/layout/coordinates/resolveProjection.d.ts +1 -1
- package/dist/layout/coordinates/resolveProjection.js +2 -2
- package/dist/layout/coordinates/rotate.svelte.d.ts +3 -3
- package/dist/layout/coordinates/rotate.svelte.js +8 -8
- package/dist/layout/coordinates/zoom.svelte.d.ts +1 -1
- package/dist/layout/facet/FacetIndicator.svelte +23 -23
- package/dist/layout/facet/FacetLayout.svelte +435 -398
- package/dist/layout/facet/FacetLayout.svelte.d.ts +9 -3
- package/dist/layout/facet/axes.d.ts +16 -0
- package/dist/layout/facet/axes.js +25 -0
- package/dist/layout/facet/config.d.ts +32 -0
- package/dist/layout/facet/config.js +82 -0
- package/dist/layout/figure/Figure.svelte +177 -0
- package/dist/layout/figure/Figure.svelte.d.ts +14 -0
- package/dist/layout/figure/FigureChrome.svelte +341 -0
- package/dist/layout/figure/FigureChrome.svelte.d.ts +21 -0
- package/dist/layout/geometry/FrameClip.svelte +45 -0
- package/dist/layout/geometry/FrameClip.svelte.d.ts +8 -0
- package/dist/layout/geometry/FrameClipping.d.ts +24 -0
- package/dist/layout/geometry/FrameClipping.js +40 -0
- package/dist/layout/geometry/GeometryLayout.svelte +287 -224
- package/dist/layout/geometry/GeometryLayout.svelte.d.ts +10 -10
- package/dist/layout/grid/Grid.svelte +194 -0
- package/dist/layout/grid/Grid.svelte.d.ts +26 -0
- package/dist/layout/grid/GridAlignment.svelte.d.ts +31 -0
- package/dist/layout/grid/GridAlignment.svelte.js +56 -0
- package/dist/layout/grid/GridCell.svelte +141 -0
- package/dist/layout/grid/GridCell.svelte.d.ts +17 -0
- package/dist/layout/grid/GridCellsRegistry.svelte.d.ts +52 -0
- package/dist/layout/grid/GridCellsRegistry.svelte.js +70 -0
- package/dist/layout/grid/GridPlan.d.ts +49 -0
- package/dist/layout/grid/GridPlan.js +167 -0
- package/dist/layout/grid/Tags.d.ts +8 -0
- package/dist/layout/grid/Tags.js +39 -0
- package/dist/layout/hover/HoverScope.svelte +11 -0
- package/dist/layout/hover/HoverScope.svelte.d.ts +8 -0
- package/dist/layout/hover/HoverSettings.d.ts +20 -0
- package/dist/layout/hover/HoverSettings.js +27 -0
- package/dist/layout/hover/HoverState.svelte.d.ts +47 -0
- package/dist/layout/hover/HoverState.svelte.js +99 -0
- package/dist/layout/hover/PlotHover.svelte.d.ts +63 -0
- package/dist/layout/hover/PlotHover.svelte.js +133 -0
- package/dist/layout/interaction/PlotInteraction.svelte.d.ts +38 -0
- package/dist/layout/interaction/PlotInteraction.svelte.js +56 -0
- package/dist/layout/legend/AxisNumberFormat.d.ts +12 -0
- package/dist/layout/legend/AxisNumberFormat.js +25 -0
- package/dist/layout/legend/ContinuousSection.svelte +363 -351
- package/dist/layout/legend/DisabledStyle.d.ts +19 -0
- package/dist/layout/legend/DisabledStyle.js +57 -0
- package/dist/layout/legend/DiscreteBadgeItem.svelte +6 -3
- package/dist/layout/legend/DiscreteSection.svelte +32 -32
- package/dist/layout/legend/DiscreteSwatchItem.svelte +4 -1
- package/dist/layout/legend/DiscreteSymbolIcon.svelte +14 -9
- package/dist/layout/legend/LegendChannels.d.ts +21 -0
- package/dist/layout/legend/LegendChannels.js +221 -0
- package/dist/layout/legend/LegendLayout.svelte +49 -43
- package/dist/layout/legend/LegendState.svelte.d.ts +79 -0
- package/dist/layout/legend/LegendState.svelte.js +329 -0
- package/dist/layout/legend/LegendText.d.ts +12 -0
- package/dist/layout/legend/LegendText.js +22 -0
- package/dist/layout/legend/SizeSection.svelte +84 -0
- package/dist/layout/legend/SizeSection.svelte.d.ts +7 -0
- package/dist/layout/legend/SymbolSection.svelte +31 -0
- package/dist/layout/legend/SymbolSection.svelte.d.ts +8 -0
- package/dist/layout/margins/Box.d.ts +84 -0
- package/dist/layout/margins/Box.js +138 -0
- package/dist/layout/margins/Margins.d.ts +37 -0
- package/dist/layout/margins/Margins.js +71 -0
- package/dist/layout/margins/PlotMargins.svelte.d.ts +101 -0
- package/dist/layout/margins/PlotMargins.svelte.js +219 -0
- package/dist/layout/plot/Core.svelte +61 -0
- package/dist/layout/plot/Core.svelte.d.ts +41 -0
- package/dist/layout/plot/PanelRun.svelte +28 -0
- package/dist/{charts/heatmap/Chart.svelte.d.ts → layout/plot/PanelRun.svelte.d.ts} +11 -7
- package/dist/layout/plot/Plot.svelte +284 -0
- package/dist/layout/plot/Plot.svelte.d.ts +49 -0
- package/dist/layout/plot/PlotContext.d.ts +41 -0
- package/dist/layout/plot/PlotContext.js +46 -0
- package/dist/layout/plot/PublicPlotContext.d.ts +130 -0
- package/dist/layout/plot/PublicPlotContext.js +236 -0
- package/dist/layout/plot/Slice.d.ts +44 -0
- package/dist/layout/plot/Slice.js +98 -0
- package/dist/layout/plot/usePlot.d.ts +9 -0
- package/dist/layout/plot/usePlot.js +13 -0
- package/dist/layout/scales/ScalesLayout.svelte +241 -206
- package/dist/layout/scales/ScalesLayout.svelte.d.ts +2 -1
- package/dist/layout/scales/buildScale.d.ts +5 -22
- package/dist/layout/scales/buildScale.js +11 -34
- package/dist/layout/scales/niceDomain.d.ts +3 -3
- package/dist/layout/scales/niceDomain.js +4 -4
- package/dist/layout/styles/StylesLayout.svelte +65 -65
- package/dist/layout/styles/TileLayer.svelte +78 -76
- package/dist/layout/styles/TileLayer.svelte.d.ts +1 -1
- package/dist/layout/styles/ValueLabels.d.ts +97 -0
- package/dist/layout/styles/ValueLabels.js +237 -0
- package/dist/layout/timeline/Timeline.svelte +80 -74
- package/dist/layout/timeline/TimelineFrame.svelte +86 -0
- package/dist/layout/timeline/TimelineFrame.svelte.d.ts +16 -0
- package/dist/layout/timeline/TimelineLayout.svelte +114 -169
- package/dist/layout/timeline/TimelineLayout.svelte.d.ts +2 -0
- package/dist/layout/timeline/TimelinePlayer.svelte +195 -0
- package/dist/layout/timeline/TimelinePlayer.svelte.d.ts +7 -0
- package/dist/layout/timeline/TimelineRule.svelte +50 -0
- package/dist/layout/timeline/TimelineRule.svelte.d.ts +7 -0
- package/dist/layout/timeline/TimelineState.svelte.d.ts +82 -0
- package/dist/layout/timeline/TimelineState.svelte.js +226 -0
- package/dist/layout/timeline/TimelineSteps.d.ts +24 -0
- package/dist/layout/timeline/TimelineSteps.js +48 -0
- package/dist/layout/tooltip/Tooltip.svelte +82 -85
- package/dist/layout/tooltip/Tooltip.svelte.d.ts +43 -24
- package/dist/layout/tooltip/TooltipState.svelte.d.ts +61 -0
- package/dist/layout/tooltip/TooltipState.svelte.js +107 -0
- package/dist/markers/MarkerKinds.d.ts +173 -0
- package/dist/markers/MarkerKinds.js +51 -0
- package/dist/markers/area/AreaMarker.svelte +110 -0
- package/dist/markers/area/AreaMarker.svelte.d.ts +7 -0
- package/dist/markers/arrow/ArrowMarker.svelte +28 -0
- package/dist/markers/arrow/ArrowMarker.svelte.d.ts +7 -0
- package/dist/markers/{BarMarker.svelte → bar/BarMarker.svelte} +54 -52
- package/dist/markers/{BarMarker.svelte.d.ts → bar/BarMarker.svelte.d.ts} +1 -1
- package/dist/markers/bollinger/BollingerMarker.svelte +44 -0
- package/dist/markers/bollinger/BollingerMarker.svelte.d.ts +7 -0
- package/dist/markers/box/BoxMarker.svelte +143 -0
- package/dist/markers/box/BoxMarker.svelte.d.ts +7 -0
- package/dist/markers/brush/BrushMarker.svelte +32 -0
- package/dist/markers/brush/BrushMarker.svelte.d.ts +7 -0
- package/dist/markers/cell/CellMarker.svelte +27 -0
- package/dist/markers/{CellMarker.svelte.d.ts → cell/CellMarker.svelte.d.ts} +1 -1
- package/dist/markers/contour/ContourClipMarker.svelte +83 -0
- package/dist/markers/{ContourClipMarker.svelte.d.ts → contour/ContourClipMarker.svelte.d.ts} +1 -1
- package/dist/markers/contour/ContourMarker.svelte +28 -0
- package/dist/markers/{ContourMarker.svelte.d.ts → contour/ContourMarker.svelte.d.ts} +1 -1
- package/dist/markers/delaunay/DelaunayLinkMarker.svelte +26 -0
- package/dist/markers/delaunay/DelaunayLinkMarker.svelte.d.ts +7 -0
- package/dist/markers/delaunay/DelaunayMeshMarker.svelte +26 -0
- package/dist/markers/delaunay/DelaunayMeshMarker.svelte.d.ts +7 -0
- package/dist/markers/delta/Delta.d.ts +21 -0
- package/dist/markers/delta/Delta.js +60 -0
- package/dist/markers/delta/DeltaMarker.svelte +94 -0
- package/dist/markers/{DeltaMarker.svelte.d.ts → delta/DeltaMarker.svelte.d.ts} +2 -2
- package/dist/markers/density/DensityMarker.svelte +63 -0
- package/dist/markers/density/DensityMarker.svelte.d.ts +7 -0
- package/dist/markers/difference/DifferenceMarker.svelte +30 -0
- package/dist/markers/difference/DifferenceMarker.svelte.d.ts +7 -0
- package/dist/markers/dot/DotMarker.svelte +102 -0
- package/dist/markers/{DotMarker.svelte.d.ts → dot/DotMarker.svelte.d.ts} +5 -17
- package/dist/markers/geo/GeoFeaturesMarker.svelte +39 -0
- package/dist/markers/{GeoFeaturesMarker.svelte.d.ts → geo/GeoFeaturesMarker.svelte.d.ts} +1 -1
- package/dist/markers/geo/GeoHoverMarker.svelte +28 -0
- package/dist/markers/{GeoHoverMarker.svelte.d.ts → geo/GeoHoverMarker.svelte.d.ts} +2 -2
- package/dist/markers/geo/GraticuleMarker.svelte +18 -0
- package/dist/markers/{GraticuleMarker.svelte.d.ts → geo/GraticuleMarker.svelte.d.ts} +1 -1
- package/dist/markers/geo/SphereMarker.svelte +15 -0
- package/dist/markers/{SphereMarker.svelte.d.ts → geo/SphereMarker.svelte.d.ts} +1 -1
- package/dist/markers/hover/HoverMarker.svelte +252 -0
- package/dist/markers/{HoverMarker.svelte.d.ts → hover/HoverMarker.svelte.d.ts} +10 -10
- package/dist/markers/hull/HullMarker.svelte +25 -0
- package/dist/markers/hull/HullMarker.svelte.d.ts +7 -0
- package/dist/markers/image/ImageMarker.svelte +22 -0
- package/dist/markers/image/ImageMarker.svelte.d.ts +7 -0
- package/dist/markers/inset/InsetMarker.svelte +184 -150
- package/dist/markers/inset/InsetMarker.svelte.d.ts +4 -4
- package/dist/markers/inset/insetLayout.d.ts +1 -1
- package/dist/markers/inset/insetLayout.js +6 -2
- package/dist/markers/inset/insetProjection.d.ts +1 -1
- package/dist/markers/inset/insetProjection.js +3 -3
- package/dist/markers/line/LineMarker.svelte +30 -0
- package/dist/markers/{LineMarker.svelte.d.ts → line/LineMarker.svelte.d.ts} +1 -1
- package/dist/markers/link/LinkMarker.svelte +47 -0
- package/dist/markers/{LinkMarker.svelte.d.ts → link/LinkMarker.svelte.d.ts} +1 -1
- package/dist/markers/raster/RasterMarker.svelte +31 -0
- package/dist/markers/raster/RasterMarker.svelte.d.ts +7 -0
- package/dist/markers/rect/RectMarker.svelte +62 -0
- package/dist/markers/rect/RectMarker.svelte.d.ts +7 -0
- package/dist/markers/regression/RegressionMarker.svelte +60 -0
- package/dist/markers/regression/RegressionMarker.svelte.d.ts +7 -0
- package/dist/markers/rule/RuleMarker.svelte +47 -0
- package/dist/markers/{RuleMarker.svelte.d.ts → rule/RuleMarker.svelte.d.ts} +2 -5
- package/dist/markers/text/Declutter.d.ts +35 -0
- package/dist/markers/text/Declutter.js +157 -0
- package/dist/markers/text/TextMarker.svelte +244 -0
- package/dist/markers/{TextMarker.svelte.d.ts → text/TextMarker.svelte.d.ts} +5 -9
- package/dist/markers/tick/TickMarker.svelte +44 -0
- package/dist/markers/tick/TickMarker.svelte.d.ts +7 -0
- package/dist/markers/trail/TrailMarker.svelte +27 -0
- package/dist/markers/trail/TrailMarker.svelte.d.ts +7 -0
- package/dist/markers/utils/BandNudge.d.ts +22 -0
- package/dist/markers/utils/BandNudge.js +23 -0
- package/dist/markers/utils/MarkerChannels.d.ts +49 -0
- package/dist/markers/utils/MarkerChannels.js +97 -0
- package/dist/markers/vector/VectorMarker.svelte +29 -0
- package/dist/markers/{VectorMarker.svelte.d.ts → vector/VectorMarker.svelte.d.ts} +1 -1
- package/dist/markers/voronoi/VoronoiMarker.svelte +26 -0
- package/dist/markers/voronoi/VoronoiMarker.svelte.d.ts +7 -0
- package/dist/markers/voronoi/VoronoiMeshMarker.svelte +26 -0
- package/dist/markers/voronoi/VoronoiMeshMarker.svelte.d.ts +7 -0
- package/dist/markers/waffle/WaffleMarker.svelte +56 -0
- package/dist/markers/waffle/WaffleMarker.svelte.d.ts +7 -0
- package/dist/phases/Pipeline.d.ts +108 -0
- package/dist/phases/Pipeline.js +226 -0
- package/dist/phases/data/DataPhase.d.ts +25 -0
- package/dist/phases/data/DataPhase.js +82 -0
- package/dist/phases/data/PlotAxes.d.ts +75 -0
- package/dist/phases/data/PlotAxes.js +151 -0
- package/dist/phases/facet/FacetPhase.d.ts +52 -0
- package/dist/phases/facet/FacetPhase.js +114 -0
- package/dist/phases/hover/HoverPhase.d.ts +73 -0
- package/dist/phases/hover/HoverPhase.js +144 -0
- package/dist/phases/mapping/MappingPhase.d.ts +17 -0
- package/dist/phases/mapping/MappingPhase.js +42 -0
- package/dist/phases/markers/MarkersPhase.d.ts +14 -0
- package/dist/phases/markers/MarkersPhase.js +27 -0
- package/dist/phases/scales/MarkerAxisValues.d.ts +12 -0
- package/dist/phases/scales/MarkerAxisValues.js +34 -0
- package/dist/phases/scales/ScalesPhase.d.ts +31 -0
- package/dist/phases/scales/ScalesPhase.js +157 -0
- package/dist/phases/sharedScales/SharedScalesPhase.d.ts +55 -0
- package/dist/phases/sharedScales/SharedScalesPhase.js +168 -0
- package/dist/phases/statistics/AuthorMarkers.d.ts +43 -0
- package/dist/phases/statistics/AuthorMarkers.js +69 -0
- package/dist/phases/statistics/MarkerGrouping.d.ts +48 -0
- package/dist/phases/statistics/MarkerGrouping.js +113 -0
- package/dist/phases/statistics/Statistics.d.ts +53 -0
- package/dist/phases/statistics/Statistics.js +156 -0
- package/dist/phases/statistics/StatisticsPhase.d.ts +18 -0
- package/dist/phases/statistics/StatisticsPhase.js +68 -0
- package/dist/phases/statistics/methods/BollingerStatistic.d.ts +9 -0
- package/dist/phases/statistics/methods/BollingerStatistic.js +18 -0
- package/dist/phases/statistics/methods/BoxStatistic.d.ts +9 -0
- package/dist/phases/statistics/methods/BoxStatistic.js +18 -0
- package/dist/phases/statistics/methods/Density2dStatistic.d.ts +9 -0
- package/dist/phases/statistics/methods/Density2dStatistic.js +18 -0
- package/dist/phases/statistics/methods/DensityStatistic.d.ts +12 -0
- package/dist/phases/statistics/methods/DensityStatistic.js +29 -0
- package/dist/phases/statistics/methods/MovingAverageStatistic.d.ts +12 -0
- package/dist/phases/statistics/methods/MovingAverageStatistic.js +30 -0
- package/dist/phases/statistics/methods/RegressionStatistic.d.ts +9 -0
- package/dist/phases/statistics/methods/RegressionStatistic.js +21 -0
- package/dist/phases/styles/StylesPhase.d.ts +13 -0
- package/dist/phases/styles/StylesPhase.js +17 -0
- package/dist/phases/tooltip/TooltipPhase.d.ts +12 -0
- package/dist/phases/tooltip/TooltipPhase.js +10 -0
- package/dist/phases/transforms/Transforms.d.ts +42 -0
- package/dist/phases/transforms/Transforms.js +130 -0
- package/dist/phases/transforms/TransformsPhase.d.ts +64 -0
- package/dist/phases/transforms/TransformsPhase.js +242 -0
- package/dist/phases/transforms/methods/AnchorBar.d.ts +13 -0
- package/dist/phases/transforms/methods/AnchorBar.js +21 -0
- package/dist/phases/transforms/methods/BinTransform.d.ts +7 -0
- package/dist/phases/transforms/methods/BinTransform.js +48 -0
- package/dist/phases/transforms/methods/DensityTransform.d.ts +6 -0
- package/dist/phases/transforms/methods/DensityTransform.js +13 -0
- package/dist/phases/transforms/methods/GroupTransform.d.ts +8 -0
- package/dist/phases/transforms/methods/GroupTransform.js +39 -0
- package/dist/phases/transforms/methods/NormalizeTransform.d.ts +10 -0
- package/dist/phases/transforms/methods/NormalizeTransform.js +30 -0
- package/dist/phases/transforms/methods/OrderTransform.d.ts +16 -0
- package/dist/phases/transforms/methods/OrderTransform.js +43 -0
- package/dist/phases/transforms/methods/PerGroup.d.ts +11 -0
- package/dist/phases/transforms/methods/PerGroup.js +39 -0
- package/dist/phases/transforms/methods/PositionTransform.d.ts +15 -0
- package/dist/phases/transforms/methods/PositionTransform.js +74 -0
- package/dist/phases/transforms/methods/StackTransform.d.ts +8 -0
- package/dist/phases/transforms/methods/StackTransform.js +29 -0
- package/dist/phases/transforms/methods/WindowTransform.d.ts +8 -0
- package/dist/phases/transforms/methods/WindowTransform.js +23 -0
- package/dist/plots/area/Plot.svelte +42 -0
- package/dist/plots/{heatmap/ValueLabels.svelte.d.ts → area/Plot.svelte.d.ts} +8 -16
- package/dist/plots/area/defaults.d.ts +4 -0
- package/dist/plots/area/defaults.js +21 -0
- package/dist/plots/area/markers.d.ts +14 -0
- package/dist/plots/area/markers.js +40 -0
- package/dist/plots/bar/Plot.svelte +33 -438
- package/dist/plots/bar/Plot.svelte.d.ts +5 -8
- package/dist/plots/bar/defaults.d.ts +9 -0
- package/dist/plots/bar/defaults.js +92 -0
- package/dist/plots/bar/markers.d.ts +45 -0
- package/dist/plots/bar/markers.js +232 -0
- package/dist/plots/geo/Core.svelte +151 -0
- package/dist/plots/geo/Core.svelte.d.ts +25 -0
- package/dist/plots/geo/Plot.svelte +103 -324
- package/dist/plots/geo/Plot.svelte.d.ts +5 -9
- package/dist/plots/geo/defaults.d.ts +4 -0
- package/dist/plots/geo/defaults.js +16 -0
- package/dist/plots/geo/features.svelte.d.ts +5 -0
- package/dist/plots/geo/features.svelte.js +44 -0
- package/dist/plots/geo/phases/data.d.ts +6 -0
- package/dist/plots/geo/phases/data.js +26 -0
- package/dist/plots/geo/phases/hover.d.ts +9 -0
- package/dist/plots/geo/phases/hover.js +45 -0
- package/dist/plots/geo/phases/markers.d.ts +9 -0
- package/dist/plots/geo/phases/markers.js +76 -0
- package/dist/plots/geo/phases/scales.d.ts +10 -0
- package/dist/plots/geo/phases/scales.js +85 -0
- package/dist/plots/geo/phases/tooltip.d.ts +3 -0
- package/dist/plots/geo/phases/tooltip.js +5 -0
- package/dist/plots/geo/slices.d.ts +18 -0
- package/dist/plots/geo/slices.js +56 -0
- package/dist/plots/heatmap/Plot.svelte +55 -249
- package/dist/plots/heatmap/Plot.svelte.d.ts +5 -8
- package/dist/plots/heatmap/defaults.d.ts +11 -0
- package/dist/plots/heatmap/defaults.js +91 -0
- package/dist/plots/heatmap/markers.d.ts +17 -0
- package/dist/plots/heatmap/markers.js +141 -0
- package/dist/plots/histogram/Plot.svelte +45 -0
- package/dist/plots/histogram/Plot.svelte.d.ts +26 -0
- package/dist/plots/histogram/defaults.d.ts +9 -0
- package/dist/plots/histogram/defaults.js +87 -0
- package/dist/plots/histogram/markers.d.ts +18 -0
- package/dist/plots/histogram/markers.js +89 -0
- package/dist/plots/line/Plot.svelte +37 -268
- package/dist/plots/line/Plot.svelte.d.ts +3 -7
- package/dist/plots/line/defaults.d.ts +4 -0
- package/dist/plots/line/defaults.js +29 -0
- package/dist/plots/line/markers.d.ts +49 -0
- package/dist/plots/line/markers.js +200 -0
- package/dist/plots/pyramid/Plot.svelte +34 -362
- package/dist/plots/pyramid/Plot.svelte.d.ts +5 -8
- package/dist/plots/pyramid/defaults.d.ts +13 -0
- package/dist/plots/pyramid/defaults.js +86 -0
- package/dist/plots/pyramid/markers.d.ts +21 -0
- package/dist/plots/pyramid/markers.js +159 -0
- package/dist/plots/scatter/Plot.svelte +34 -288
- package/dist/plots/scatter/Plot.svelte.d.ts +5 -8
- package/dist/plots/scatter/defaults.d.ts +4 -0
- package/dist/plots/scatter/defaults.js +79 -0
- package/dist/plots/scatter/markers.d.ts +19 -0
- package/dist/plots/scatter/markers.js +128 -0
- package/dist/plots/utils/ChannelName.d.ts +9 -0
- package/dist/plots/utils/ChannelName.js +14 -0
- package/dist/plots/utils/accessors.d.ts +1 -1
- package/dist/plots/utils/accessors.js +4 -2
- package/dist/plots/utils/gaps.d.ts +14 -19
- package/dist/plots/utils/gaps.js +38 -18
- package/dist/plots/utils/geoAccessors.d.ts +8 -8
- package/dist/plots/utils/geoAccessors.js +16 -12
- package/dist/plots/utils/geoSegments.d.ts +24 -9
- package/dist/plots/utils/geoSegments.js +31 -11
- package/dist/plots/utils/segments.d.ts +5 -16
- package/dist/plots/utils/segments.js +40 -52
- package/dist/plots/utils/tiles.d.ts +9 -9
- package/dist/plots/utils/tiles.js +35 -25
- package/dist/plots/utils/topojson.d.ts +1 -1
- package/dist/plots/utils/topojson.js +3 -3
- package/dist/stores/device.js +2 -4
- package/dist/types/configuration/styling.d.ts +152 -27
- package/dist/types/layout/box.d.ts +24 -0
- package/dist/types/layout/composer.d.ts +36 -0
- package/dist/types/layout/coordinates.d.ts +14 -14
- package/dist/types/layout/facet.d.ts +44 -22
- package/dist/types/layout/figure.d.ts +7 -0
- package/dist/types/layout/geometry.d.ts +6 -2
- package/dist/types/layout/grid.d.ts +66 -0
- package/dist/types/layout/hover.d.ts +48 -0
- package/dist/types/layout/legend.d.ts +256 -55
- package/dist/types/layout/mapping.d.ts +68 -0
- package/dist/types/layout/plot.d.ts +41 -0
- package/dist/types/layout/scales.d.ts +92 -24
- package/dist/types/layout/scales.js +19 -1
- package/dist/types/layout/statistics/bollinger.d.ts +18 -0
- package/dist/types/layout/statistics/box.d.ts +8 -0
- package/dist/types/layout/statistics/box.js +1 -0
- package/dist/types/layout/statistics/density.d.ts +27 -0
- package/dist/types/layout/statistics/density.js +1 -0
- package/dist/types/layout/statistics/index.d.ts +46 -0
- package/dist/types/layout/statistics/index.js +1 -0
- package/dist/types/layout/statistics/movingAverage.d.ts +12 -0
- package/dist/types/layout/statistics/movingAverage.js +1 -0
- package/dist/types/layout/statistics/regression.d.ts +20 -0
- package/dist/types/layout/statistics/regression.js +1 -0
- package/dist/types/layout/styles.d.ts +24 -35
- package/dist/types/layout/timeline.d.ts +51 -4
- package/dist/types/layout/tooltip.d.ts +7 -85
- package/dist/types/markers/all.d.ts +3 -4
- package/dist/types/markers/axis/area.d.ts +12 -0
- package/dist/types/markers/axis/area.js +1 -0
- package/dist/types/markers/axis/arrow.d.ts +15 -0
- package/dist/types/markers/axis/arrow.js +1 -0
- package/dist/types/markers/axis/axisBasedMarkersConfig.d.ts +29 -0
- package/dist/types/markers/axis/axisBasedMarkersConfig.js +1 -0
- package/dist/types/markers/axis/bar.d.ts +18 -0
- package/dist/types/markers/axis/bar.js +1 -0
- package/dist/types/markers/axis/bollinger.d.ts +6 -0
- package/dist/types/markers/axis/bollinger.js +1 -0
- package/dist/types/markers/axis/box.d.ts +14 -0
- package/dist/types/markers/axis/box.js +1 -0
- package/dist/types/markers/axis/brush.d.ts +28 -0
- package/dist/types/markers/axis/brush.js +1 -0
- package/dist/types/markers/axis/cell.d.ts +9 -0
- package/dist/types/markers/axis/cell.js +1 -0
- package/dist/types/markers/axis/component.d.ts +9 -0
- package/dist/types/markers/axis/component.js +1 -0
- package/dist/types/markers/axis/curveName.d.ts +2 -0
- package/dist/types/markers/axis/curveName.js +1 -0
- package/dist/types/markers/axis/delaunayLink.d.ts +7 -0
- package/dist/types/markers/axis/delaunayLink.js +1 -0
- package/dist/types/markers/axis/delaunayMesh.d.ts +7 -0
- package/dist/types/markers/axis/delaunayMesh.js +1 -0
- package/dist/types/markers/axis/delta.d.ts +27 -0
- package/dist/types/markers/axis/delta.js +1 -0
- package/dist/types/markers/axis/density.d.ts +12 -0
- package/dist/types/markers/axis/density.js +1 -0
- package/dist/types/markers/axis/difference.d.ts +12 -0
- package/dist/types/markers/axis/difference.js +1 -0
- package/dist/types/markers/axis/hover.d.ts +21 -0
- package/dist/types/markers/axis/hover.js +1 -0
- package/dist/types/markers/axis/hull.d.ts +7 -0
- package/dist/types/markers/axis/hull.js +1 -0
- package/dist/types/markers/axis/image.d.ts +12 -0
- package/dist/types/markers/axis/image.js +1 -0
- package/dist/types/markers/axis/line.d.ts +7 -0
- package/dist/types/markers/axis/line.js +1 -0
- package/dist/types/markers/axis/raster.d.ts +18 -0
- package/dist/types/markers/axis/raster.js +1 -0
- package/dist/types/markers/axis/rect.d.ts +15 -0
- package/dist/types/markers/axis/rect.js +1 -0
- package/dist/types/markers/axis/regression.d.ts +6 -0
- package/dist/types/markers/axis/regression.js +1 -0
- package/dist/types/markers/axis/rule.d.ts +15 -0
- package/dist/types/markers/axis/rule.js +1 -0
- package/dist/types/markers/axis/tick.d.ts +8 -0
- package/dist/types/markers/axis/tick.js +1 -0
- package/dist/types/markers/axis/trail.d.ts +14 -0
- package/dist/types/markers/axis/trail.js +1 -0
- package/dist/types/markers/axis/voronoi.d.ts +7 -0
- package/dist/types/markers/axis/voronoi.js +1 -0
- package/dist/types/markers/axis/voronoiMesh.d.ts +7 -0
- package/dist/types/markers/axis/voronoiMesh.js +1 -0
- package/dist/types/markers/axis/waffle.d.ts +13 -0
- package/dist/types/markers/axis/waffle.js +1 -0
- package/dist/types/markers/basic/basicMarkersConfig.d.ts +4 -0
- package/dist/types/markers/basic/basicMarkersConfig.js +1 -0
- package/dist/types/markers/basic/dot.d.ts +9 -0
- package/dist/types/markers/basic/dot.js +1 -0
- package/dist/types/markers/basic/text.d.ts +60 -0
- package/dist/types/markers/basic/text.js +1 -0
- package/dist/types/markers/basic.d.ts +4 -0
- package/dist/types/markers/basic.js +1 -0
- package/dist/types/markers/channels/commonMarkerConfig.d.ts +26 -0
- package/dist/types/markers/channels/commonMarkerConfig.js +1 -0
- package/dist/types/markers/channels/commonMarkerConfigWithArea.d.ts +6 -0
- package/dist/types/markers/channels/commonMarkerConfigWithArea.js +1 -0
- package/dist/types/markers/channels/commonMarkerConfigWithColor.d.ts +5 -0
- package/dist/types/markers/channels/commonMarkerConfigWithColor.js +1 -0
- package/dist/types/markers/channels/commonMarkerConfigWithInterval.d.ts +9 -0
- package/dist/types/markers/channels/commonMarkerConfigWithInterval.js +1 -0
- package/dist/types/markers/channels/commonMarkerConfigWithRadius.d.ts +5 -0
- package/dist/types/markers/channels/commonMarkerConfigWithRadius.js +1 -0
- package/dist/types/markers/channels/commonMarkerConfigWithSymbol.d.ts +5 -0
- package/dist/types/markers/channels/commonMarkerConfigWithSymbol.js +1 -0
- package/dist/types/markers/channels/commonMarkerConfigWithWeight.d.ts +5 -0
- package/dist/types/markers/channels/commonMarkerConfigWithWeight.js +1 -0
- package/dist/types/markers/common.d.ts +30 -103
- package/dist/types/markers/common.js +29 -1
- package/dist/types/markers/geo/contour.d.ts +27 -0
- package/dist/types/markers/geo/contour.js +1 -0
- package/dist/types/markers/geo/features.d.ts +12 -0
- package/dist/types/markers/geo/features.js +1 -0
- package/dist/types/markers/geo/geoComponent.d.ts +7 -0
- package/dist/types/markers/geo/geoComponent.js +1 -0
- package/dist/types/markers/geo/geoHover.d.ts +6 -0
- package/dist/types/markers/geo/geoHover.js +1 -0
- package/dist/types/markers/geo/geoMarkersConfig.d.ts +11 -0
- package/dist/types/markers/geo/geoMarkersConfig.js +1 -0
- package/dist/types/markers/geo/graticule.d.ts +11 -0
- package/dist/types/markers/geo/graticule.js +1 -0
- package/dist/types/markers/geo/inset.d.ts +50 -0
- package/dist/types/markers/geo/inset.js +1 -0
- package/dist/types/markers/geo/link.d.ts +13 -0
- package/dist/types/markers/geo/link.js +1 -0
- package/dist/types/markers/geo/sphere.d.ts +11 -0
- package/dist/types/markers/geo/sphere.js +1 -0
- package/dist/types/markers/geo/vector.d.ts +17 -0
- package/dist/types/markers/geo/vector.js +1 -0
- package/dist/types/markers/geo.d.ts +10 -212
- package/dist/types/markers/geo.js +10 -1
- package/dist/types/markers/traits.d.ts +22 -0
- package/dist/types/markers/traits.js +1 -0
- package/dist/types/misc/easing.js +1 -0
- package/dist/types/misc/viewport.js +1 -0
- package/dist/types/phases/data/axes.d.ts +18 -0
- package/dist/types/phases/data/axes.js +1 -0
- package/dist/types/phases/data/phase.d.ts +26 -0
- package/dist/types/phases/data/phase.js +2 -0
- package/dist/types/phases/facet/phase.d.ts +18 -0
- package/dist/types/phases/facet/phase.js +1 -0
- package/dist/types/phases/hover/phase.d.ts +34 -0
- package/dist/types/phases/hover/phase.js +1 -0
- package/dist/types/phases/index.d.ts +14 -0
- package/dist/types/phases/index.js +1 -0
- package/dist/types/phases/kind.d.ts +59 -0
- package/dist/types/phases/kind.js +1 -0
- package/dist/types/phases/mapping/phase.d.ts +5 -0
- package/dist/types/phases/mapping/phase.js +1 -0
- package/dist/types/phases/markers/phase.d.ts +13 -0
- package/dist/types/phases/markers/phase.js +1 -0
- package/dist/types/phases/pipeline.d.ts +10 -0
- package/dist/types/phases/pipeline.js +1 -0
- package/dist/types/phases/scales/phase.d.ts +26 -0
- package/dist/types/phases/scales/phase.js +1 -0
- package/dist/types/phases/sharedScales/phase.d.ts +12 -0
- package/dist/types/phases/sharedScales/phase.js +1 -0
- package/dist/types/phases/stage.d.ts +12 -0
- package/dist/types/phases/stage.js +1 -0
- package/dist/types/phases/state.d.ts +73 -0
- package/dist/types/phases/state.js +1 -0
- package/dist/types/phases/statistics/phase.d.ts +41 -0
- package/dist/types/phases/statistics/phase.js +1 -0
- package/dist/types/phases/statistics/source.d.ts +20 -0
- package/dist/types/phases/statistics/source.js +7 -0
- package/dist/types/phases/styles/phase.d.ts +24 -0
- package/dist/types/phases/styles/phase.js +1 -0
- package/dist/types/phases/transforms/adapter.d.ts +27 -0
- package/dist/types/phases/transforms/adapter.js +1 -0
- package/dist/types/phases/transforms/phase.d.ts +40 -0
- package/dist/types/phases/transforms/phase.js +1 -0
- package/dist/types/plots/area/props.d.ts +10 -0
- package/dist/types/plots/area/props.js +1 -0
- package/dist/types/plots/area/state.d.ts +6 -0
- package/dist/types/plots/area/state.js +1 -0
- package/dist/types/plots/bar/props.d.ts +10 -0
- package/dist/types/plots/bar/props.js +1 -0
- package/dist/types/plots/bar/state.d.ts +6 -0
- package/dist/types/plots/bar/state.js +1 -0
- package/dist/types/plots/camera.d.ts +7 -17
- package/dist/types/plots/constants.d.ts +16 -8
- package/dist/types/plots/data/common.d.ts +25 -17
- package/dist/types/plots/data/geo.d.ts +26 -12
- package/dist/types/plots/gaps.d.ts +19 -38
- package/dist/types/plots/geo/props.d.ts +23 -0
- package/dist/types/plots/geo/props.js +1 -0
- package/dist/types/plots/geo/state.d.ts +82 -0
- package/dist/types/plots/geo/state.js +1 -0
- package/dist/types/plots/heatmap/props.d.ts +10 -0
- package/dist/types/plots/heatmap/props.js +1 -0
- package/dist/types/plots/heatmap/state.d.ts +28 -0
- package/dist/types/plots/heatmap/state.js +1 -0
- package/dist/types/plots/histogram/props.d.ts +18 -0
- package/dist/types/plots/histogram/props.js +1 -0
- package/dist/types/plots/histogram/state.d.ts +6 -0
- package/dist/types/plots/histogram/state.js +1 -0
- package/dist/types/plots/line/props.d.ts +10 -0
- package/dist/types/plots/line/props.js +1 -0
- package/dist/types/plots/line/state.d.ts +9 -0
- package/dist/types/plots/line/state.js +1 -0
- package/dist/types/plots/props.d.ts +143 -35
- package/dist/types/plots/pyramid/props.d.ts +10 -0
- package/dist/types/plots/pyramid/props.js +1 -0
- package/dist/types/plots/pyramid/state.d.ts +16 -0
- package/dist/types/plots/pyramid/state.js +1 -0
- package/dist/types/plots/scatter/props.d.ts +10 -0
- package/dist/types/plots/scatter/props.js +1 -0
- package/dist/types/plots/scatter/state.d.ts +6 -0
- package/dist/types/plots/scatter/state.js +1 -0
- package/dist/types/plots/segments/common.d.ts +1 -1
- package/dist/types/plots/segments/config.d.ts +12 -6
- package/dist/types/plots/styling.d.ts +5 -5
- package/dist/types/transforms/bin.d.ts +84 -0
- package/dist/types/transforms/bin.js +28 -0
- package/dist/types/transforms/bollinger.d.ts +21 -0
- package/dist/types/transforms/bollinger.js +1 -0
- package/dist/types/transforms/common.d.ts +29 -0
- package/dist/types/transforms/common.js +16 -0
- package/dist/types/transforms/density.d.ts +45 -0
- package/dist/types/transforms/density.js +10 -0
- package/dist/types/transforms/filter.d.ts +12 -0
- package/dist/types/transforms/filter.js +14 -0
- package/dist/types/transforms/group.d.ts +70 -0
- package/dist/types/transforms/group.js +8 -0
- package/dist/types/transforms/index.d.ts +36 -0
- package/dist/types/transforms/index.js +1 -0
- package/dist/types/transforms/interval.d.ts +21 -0
- package/dist/types/transforms/interval.js +14 -0
- package/dist/types/transforms/jitter.d.ts +34 -0
- package/dist/types/transforms/jitter.js +1 -0
- package/dist/types/transforms/map.d.ts +24 -0
- package/dist/types/transforms/map.js +1 -0
- package/dist/types/transforms/normalize.d.ts +36 -0
- package/dist/types/transforms/normalize.js +1 -0
- package/dist/types/transforms/select.d.ts +15 -0
- package/dist/types/transforms/select.js +1 -0
- package/dist/types/transforms/shift.d.ts +20 -0
- package/dist/types/transforms/shift.js +1 -0
- package/dist/types/transforms/sort.d.ts +31 -0
- package/dist/types/transforms/sort.js +14 -0
- package/dist/types/transforms/stack.d.ts +64 -0
- package/dist/types/transforms/stack.js +12 -0
- package/dist/types/transforms/window.d.ts +29 -0
- package/dist/types/transforms/window.js +1 -0
- package/dist/utils/ContinuousDomain.d.ts +12 -0
- package/dist/utils/ContinuousDomain.js +19 -0
- package/dist/utils/Interpolation.d.ts +26 -0
- package/dist/utils/Interpolation.js +65 -0
- package/dist/utils/{color.d.ts → color/contrast.d.ts} +0 -5
- package/dist/utils/color/contrast.js +40 -0
- package/dist/utils/color/cssColor.d.ts +4 -0
- package/dist/utils/color/cssColor.js +77 -0
- package/dist/utils/color/index.d.ts +3 -0
- package/dist/utils/color/index.js +3 -0
- package/dist/utils/color/ramp.d.ts +17 -0
- package/dist/utils/color/ramp.js +110 -0
- package/dist/utils/grouping.d.ts +9 -5
- package/dist/utils/grouping.js +19 -10
- package/dist/utils/merge.d.ts +7 -0
- package/dist/utils/merge.js +17 -0
- package/dist/utils/opacity.d.ts +9 -0
- package/dist/utils/opacity.js +38 -0
- package/dist/utils/symbol.d.ts +31 -0
- package/dist/utils/symbol.js +92 -0
- package/docs/architecture.md +137 -0
- package/docs/chrome.md +68 -0
- package/docs/composer.md +53 -0
- package/docs/concepts.md +99 -0
- package/docs/development.md +94 -0
- package/docs/facets.md +69 -0
- package/docs/geo.md +151 -0
- package/docs/getting-started.md +79 -0
- package/docs/legend.md +106 -0
- package/docs/markers.md +106 -0
- package/docs/plots.md +158 -0
- package/docs/scales.md +78 -0
- package/docs/state.md +71 -0
- package/docs/styles-and-segments.md +215 -0
- package/docs/theming.md +215 -0
- package/docs/timeline.md +94 -0
- package/docs/tooltip-and-hover.md +80 -0
- package/docs/transforms-and-statistics.md +88 -0
- package/examples/BarValues.svelte +14 -0
- package/examples/CustomTooltip.svelte +37 -0
- package/examples/Facets.svelte +15 -0
- package/examples/LegendReader.svelte +8 -0
- package/examples/LegendToggle.svelte +25 -0
- package/examples/ResponsiveLine.svelte +37 -0
- package/examples/Segments.svelte +17 -0
- package/examples/TimelinePlayer.svelte +20 -0
- package/examples/Tooltip.svelte +19 -0
- package/examples/TooltipCard.svelte +86 -0
- package/examples/data.ts +12 -0
- package/llms-full.txt +114 -0
- package/llms.txt +49 -0
- package/package.json +41 -5
- package/dist/charts/BaseChart.svelte +0 -149
- package/dist/charts/BaseChart.svelte.d.ts +0 -47
- package/dist/charts/bar/Chart.svelte +0 -110
- package/dist/charts/bar/Chart.svelte.d.ts +0 -26
- package/dist/charts/container/ChartContainer.svelte +0 -137
- package/dist/charts/container/ChartContainer.svelte.d.ts +0 -16
- package/dist/charts/heatmap/Chart.svelte +0 -114
- package/dist/charts/line/Chart.svelte +0 -112
- package/dist/charts/line/Chart.svelte.d.ts +0 -26
- package/dist/charts/pyramid/Chart.svelte +0 -134
- package/dist/charts/pyramid/Chart.svelte.d.ts +0 -30
- package/dist/charts/scatter/Chart.svelte +0 -95
- package/dist/charts/scatter/Chart.svelte.d.ts +0 -28
- package/dist/layout/coordinates/margins.d.ts +0 -16
- package/dist/layout/coordinates/margins.js +0 -11
- package/dist/layout/legend/interaction.svelte.d.ts +0 -15
- package/dist/layout/legend/interaction.svelte.js +0 -32
- package/dist/layout/plot/BasePlotLayout.svelte +0 -332
- package/dist/layout/plot/BasePlotLayout.svelte.d.ts +0 -122
- package/dist/layout/plot/margins.d.ts +0 -18
- package/dist/layout/plot/margins.js +0 -15
- package/dist/layout/plot/measureText.d.ts +0 -4
- package/dist/layout/plot/measureText.js +0 -19
- package/dist/layout/tooltip/TooltipLayout.svelte +0 -51
- package/dist/layout/tooltip/TooltipLayout.svelte.d.ts +0 -45
- package/dist/layout/tooltip/controller.svelte.d.ts +0 -61
- package/dist/layout/tooltip/controller.svelte.js +0 -173
- package/dist/layout/tooltip/hover.svelte.d.ts +0 -7
- package/dist/layout/tooltip/hover.svelte.js +0 -28
- package/dist/layout/tooltip/resolveTooltipPlacement.d.ts +0 -24
- package/dist/layout/tooltip/resolveTooltipPlacement.js +0 -49
- package/dist/layout/tooltip/utils.d.ts +0 -49
- package/dist/layout/tooltip/utils.js +0 -82
- package/dist/markers/CellMarker.svelte +0 -21
- package/dist/markers/ContourClipMarker.svelte +0 -77
- package/dist/markers/ContourMarker.svelte +0 -28
- package/dist/markers/DeltaMarker.svelte +0 -109
- package/dist/markers/DotMarker.svelte +0 -70
- package/dist/markers/GeoFeaturesMarker.svelte +0 -19
- package/dist/markers/GeoHoverMarker.svelte +0 -25
- package/dist/markers/GraticuleMarker.svelte +0 -18
- package/dist/markers/HoverMarker.svelte +0 -212
- package/dist/markers/LineMarker.svelte +0 -19
- package/dist/markers/LinkMarker.svelte +0 -42
- package/dist/markers/PeakMarker.svelte +0 -80
- package/dist/markers/PeakMarker.svelte.d.ts +0 -13
- package/dist/markers/RuleMarker.svelte +0 -24
- package/dist/markers/SphereMarker.svelte +0 -15
- package/dist/markers/TextMarker.svelte +0 -62
- package/dist/markers/VectorMarker.svelte +0 -20
- package/dist/plots/bar/ValueLabels.svelte +0 -149
- package/dist/plots/bar/ValueLabels.svelte.d.ts +0 -58
- package/dist/plots/bar/buildBarMarkers.d.ts +0 -27
- package/dist/plots/bar/buildBarMarkers.js +0 -151
- package/dist/plots/bar/hoverPoints.d.ts +0 -15
- package/dist/plots/bar/hoverPoints.js +0 -37
- package/dist/plots/bar/layout.svelte.d.ts +0 -42
- package/dist/plots/bar/layout.svelte.js +0 -182
- package/dist/plots/geo/buildGeoMarkers.d.ts +0 -33
- package/dist/plots/geo/buildGeoMarkers.js +0 -47
- package/dist/plots/heatmap/ValueLabels.svelte +0 -56
- package/dist/plots/heatmap/buildCellMarkers.d.ts +0 -21
- package/dist/plots/heatmap/buildCellMarkers.js +0 -25
- package/dist/plots/line/ValueLabels.svelte +0 -269
- package/dist/plots/line/ValueLabels.svelte.d.ts +0 -52
- package/dist/plots/line/buildGapMarkers.d.ts +0 -28
- package/dist/plots/line/buildGapMarkers.js +0 -74
- package/dist/plots/line/buildLineMarkers.d.ts +0 -16
- package/dist/plots/line/buildLineMarkers.js +0 -56
- package/dist/plots/line/valueLabelMargin.d.ts +0 -19
- package/dist/plots/line/valueLabelMargin.js +0 -65
- package/dist/plots/pyramid/ValueLabels.svelte +0 -139
- package/dist/plots/pyramid/ValueLabels.svelte.d.ts +0 -56
- package/dist/plots/pyramid/buildPyramidBarMarkers.d.ts +0 -26
- package/dist/plots/pyramid/buildPyramidBarMarkers.js +0 -72
- package/dist/plots/scatter/ValueLabels.svelte +0 -163
- package/dist/plots/scatter/ValueLabels.svelte.d.ts +0 -52
- package/dist/plots/scatter/buildScatterMarkers.d.ts +0 -12
- package/dist/plots/scatter/buildScatterMarkers.js +0 -36
- package/dist/plots/scatter/resolveRadiusPaddedDomain.d.ts +0 -10
- package/dist/plots/scatter/resolveRadiusPaddedDomain.js +0 -23
- package/dist/plots/utils/categoricalAxisMargin.d.ts +0 -14
- package/dist/plots/utils/categoricalAxisMargin.js +0 -20
- package/dist/plots/utils/declutter.d.ts +0 -120
- package/dist/plots/utils/declutter.js +0 -240
- package/dist/plots/utils/labelOverflow.svelte.d.ts +0 -107
- package/dist/plots/utils/labelOverflow.svelte.js +0 -257
- package/dist/plots/utils/legendDisabled.d.ts +0 -27
- package/dist/plots/utils/legendDisabled.js +0 -68
- package/dist/plots/utils/valueLabelMargin.d.ts +0 -67
- package/dist/plots/utils/valueLabelMargin.js +0 -60
- package/dist/types/charts/common.d.ts +0 -22
- package/dist/types/charts/props.d.ts +0 -50
- package/dist/types/markers/base.d.ts +0 -45
- package/dist/types/markers/line.d.ts +0 -34
- package/dist/types/markers/props.d.ts +0 -11
- package/dist/types/plots/data/scatter.d.ts +0 -13
- package/dist/utils/color.js +0 -141
- package/dist/utils/delta.d.ts +0 -12
- package/dist/utils/delta.js +0 -69
- package/dist/utils/edgeAwareAnchor.d.ts +0 -34
- package/dist/utils/edgeAwareAnchor.js +0 -60
- package/dist/utils/interpolate.d.ts +0 -31
- package/dist/utils/interpolate.js +0 -71
- /package/dist/types/{charts/common.js → layout/box.js} +0 -0
- /package/dist/types/{charts/interpolate.js → layout/composer.js} +0 -0
- /package/dist/types/{charts/props.js → layout/figure.js} +0 -0
- /package/dist/types/{markers/base.js → layout/grid.js} +0 -0
- /package/dist/types/{markers/line.js → layout/hover.js} +0 -0
- /package/dist/types/{markers/props.js → layout/mapping.js} +0 -0
- /package/dist/types/{plots/data/scatter.js → layout/plot.js} +0 -0
- /package/dist/types/{viewport.js → layout/statistics/bollinger.js} +0 -0
- /package/dist/types/{charts/interpolate.d.ts → misc/easing.d.ts} +0 -0
- /package/dist/types/{viewport.d.ts → misc/viewport.d.ts} +0 -0
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { GridPlan } from './GridPlan';
|
|
3
|
+
import { GridCellsRegistry } from './GridCellsRegistry.svelte';
|
|
4
|
+
import type { GridCellLayout } from '../../types/layout/grid';
|
|
5
|
+
import { Tags } from './Tags';
|
|
6
|
+
import { HoverState } from '../hover/HoverState.svelte';
|
|
7
|
+
import type { Snippet } from 'svelte';
|
|
8
|
+
import type { ComposerTags } from '../../types/layout/composer';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* The grid both facets and composers lay their panels out on. `GridCell`
|
|
12
|
+
* children register into it and get a pixel box: a named `area`, an
|
|
13
|
+
* explicit `row`/`col`, or the next free slot of `columns`; `widths` and
|
|
14
|
+
* `heights` weigh the tracks. `header` reserves a label row above every
|
|
15
|
+
* cell; `colLabels`/`rowLabels` add a strip above the columns and beside
|
|
16
|
+
* the rows. With `align`, the grid waits for every cell's plot to report
|
|
17
|
+
* its margins, then sizes tracks so every plot area lines up. `tags`
|
|
18
|
+
* labels the cells in order, and `scoped` gives each its own hover scope -
|
|
19
|
+
* how a `PlotComposer` marks its panels.
|
|
20
|
+
*/
|
|
21
|
+
let {
|
|
22
|
+
width,
|
|
23
|
+
height,
|
|
24
|
+
columns,
|
|
25
|
+
rows,
|
|
26
|
+
areas,
|
|
27
|
+
widths,
|
|
28
|
+
heights,
|
|
29
|
+
gap = 12,
|
|
30
|
+
header = 0,
|
|
31
|
+
align = false,
|
|
32
|
+
colLabels,
|
|
33
|
+
rowLabels,
|
|
34
|
+
strip = 24,
|
|
35
|
+
tags,
|
|
36
|
+
scoped = false,
|
|
37
|
+
children
|
|
38
|
+
}: {
|
|
39
|
+
width: number;
|
|
40
|
+
height: number;
|
|
41
|
+
columns?: number;
|
|
42
|
+
/** At least this many rows, even when the last ones stay empty. */
|
|
43
|
+
rows?: number;
|
|
44
|
+
areas?: string[];
|
|
45
|
+
widths?: number[];
|
|
46
|
+
heights?: number[];
|
|
47
|
+
gap?: number;
|
|
48
|
+
header?: number;
|
|
49
|
+
align?: boolean;
|
|
50
|
+
colLabels?: string[];
|
|
51
|
+
rowLabels?: string[];
|
|
52
|
+
strip?: number;
|
|
53
|
+
/** Labels every cell without its own, in the order they register - see {@link Tags}. */
|
|
54
|
+
tags?: ComposerTags;
|
|
55
|
+
/** Whether each cell gives what it draws its own hover-scope id, under the one in scope here. */
|
|
56
|
+
scoped?: boolean;
|
|
57
|
+
children: Snippet;
|
|
58
|
+
} = $props();
|
|
59
|
+
|
|
60
|
+
const parentScope = HoverState.scope();
|
|
61
|
+
const tagSequence = $derived(tags === undefined ? undefined : new Tags(tags));
|
|
62
|
+
// The cells below register here; each is tagged and scoped by its registration order.
|
|
63
|
+
const grid = new GridCellsRegistry({
|
|
64
|
+
layouts: () => layouts,
|
|
65
|
+
header: () => header,
|
|
66
|
+
aligned: () => align,
|
|
67
|
+
tag: (index) => tagSequence?.at(index),
|
|
68
|
+
scope: (index) => {
|
|
69
|
+
if (!scoped) return undefined;
|
|
70
|
+
const parent = parentScope();
|
|
71
|
+
return parent ? `${parent}/panel-${index}` : `panel-${index}`;
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
grid.provide();
|
|
75
|
+
|
|
76
|
+
const resolved = $derived(grid.requests);
|
|
77
|
+
const slotted = $derived(resolved.filter((cell) => !cell.inset));
|
|
78
|
+
|
|
79
|
+
const plan = $derived(new GridPlan(slotted, { areas, columns, rows }));
|
|
80
|
+
|
|
81
|
+
const colStrip = $derived(colLabels?.length ? strip : 0);
|
|
82
|
+
const rowStrip = $derived(rowLabels?.length ? strip : 0);
|
|
83
|
+
const innerWidth = $derived(width - (rowStrip ? rowStrip + gap : 0));
|
|
84
|
+
const innerHeight = $derived(height - (colStrip ? colStrip + gap : 0));
|
|
85
|
+
|
|
86
|
+
const tracks = $derived(
|
|
87
|
+
plan.tracks({
|
|
88
|
+
width: innerWidth,
|
|
89
|
+
height: innerHeight,
|
|
90
|
+
gap,
|
|
91
|
+
header,
|
|
92
|
+
widths,
|
|
93
|
+
heights,
|
|
94
|
+
margins: align ? slotted.map((cell) => grid.alignment.settled[cell.id]) : undefined
|
|
95
|
+
})
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
/** The px size of `count` tracks from `from`, gaps between them included. */
|
|
99
|
+
const spanSize = (sizes: number[], from: number, count: number) =>
|
|
100
|
+
sizes.slice(from, from + count).reduce((a, b) => a + b, 0) + (count - 1) * gap;
|
|
101
|
+
|
|
102
|
+
const rowOffset = $derived(colStrip ? 2 : 1);
|
|
103
|
+
|
|
104
|
+
const layouts = $derived.by(() => {
|
|
105
|
+
const out: Record<string, GridCellLayout> = {};
|
|
106
|
+
slotted.forEach((cell, i) => {
|
|
107
|
+
const span = plan.spans[i];
|
|
108
|
+
out[cell.id] = {
|
|
109
|
+
gridRow: `${span.row + rowOffset} / span ${span.rowSpan}`,
|
|
110
|
+
gridColumn: `${span.col + 1} / span ${span.colSpan}`,
|
|
111
|
+
box: tracks.boxes[i],
|
|
112
|
+
edges: plan.edges[i]
|
|
113
|
+
};
|
|
114
|
+
});
|
|
115
|
+
for (const cell of resolved) {
|
|
116
|
+
if (!cell.inset) continue;
|
|
117
|
+
const area = cell.area && areas ? areaBox(cell.area) : null;
|
|
118
|
+
const box = area ?? { width: innerWidth, height: innerHeight };
|
|
119
|
+
out[cell.id] = {
|
|
120
|
+
gridRow: area ? area.gridRow : undefined,
|
|
121
|
+
gridColumn: area ? area.gridColumn : undefined,
|
|
122
|
+
box: {
|
|
123
|
+
width: Math.max(0, Math.floor(box.width * (cell.inset.right - cell.inset.left))),
|
|
124
|
+
height: Math.max(
|
|
125
|
+
0,
|
|
126
|
+
Math.floor(box.height * (cell.inset.top - cell.inset.bottom)) - header
|
|
127
|
+
)
|
|
128
|
+
},
|
|
129
|
+
edges: { top: true, right: true, bottom: true, left: true }
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
return out;
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
/** A named area's px box and CSS placement, for an inset floating over it. */
|
|
136
|
+
function areaBox(name: string) {
|
|
137
|
+
const span = plan.areaSpan(name) ?? { row: 0, col: 0, rowSpan: 1, colSpan: 1 };
|
|
138
|
+
return {
|
|
139
|
+
width: spanSize(tracks.colWidths, span.col, span.colSpan),
|
|
140
|
+
height: spanSize(tracks.rowHeights, span.row, span.rowSpan),
|
|
141
|
+
gridRow: `${span.row + rowOffset} / span ${span.rowSpan}`,
|
|
142
|
+
gridColumn: `${span.col + 1} / span ${span.colSpan}`
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
</script>
|
|
146
|
+
|
|
147
|
+
<div
|
|
148
|
+
class="dct-grid"
|
|
149
|
+
style:width="{width}px"
|
|
150
|
+
style:height="{height}px"
|
|
151
|
+
style:gap="{gap}px"
|
|
152
|
+
style:grid-template-columns="{tracks.colWidths.map((w) => `${w}px`).join(' ')}{rowStrip
|
|
153
|
+
? ` ${rowStrip}px`
|
|
154
|
+
: ''}"
|
|
155
|
+
style:grid-template-rows="{colStrip ? `${colStrip}px ` : ''}{tracks.rowHeights
|
|
156
|
+
.map((h) => `${h}px`)
|
|
157
|
+
.join(' ')}"
|
|
158
|
+
>
|
|
159
|
+
{#each colLabels ?? [] as label, c (c)}
|
|
160
|
+
<div class="dct-grid__strip dct-grid__strip--col" style:grid-row="1" style:grid-column={c + 1}>
|
|
161
|
+
{label}
|
|
162
|
+
</div>
|
|
163
|
+
{/each}
|
|
164
|
+
{#each rowLabels ?? [] as label, r (r)}
|
|
165
|
+
<div
|
|
166
|
+
class="dct-grid__strip dct-grid__strip--row"
|
|
167
|
+
style:grid-row={r + rowOffset}
|
|
168
|
+
style:grid-column={plan.columns + 1}
|
|
169
|
+
>
|
|
170
|
+
{label}
|
|
171
|
+
</div>
|
|
172
|
+
{/each}
|
|
173
|
+
{@render children()}
|
|
174
|
+
</div>
|
|
175
|
+
|
|
176
|
+
<style>
|
|
177
|
+
.dct-grid {
|
|
178
|
+
position: relative;
|
|
179
|
+
display: grid;
|
|
180
|
+
}
|
|
181
|
+
.dct-grid__strip {
|
|
182
|
+
display: flex;
|
|
183
|
+
align-items: center;
|
|
184
|
+
justify-content: center;
|
|
185
|
+
font-size: 0.85rem;
|
|
186
|
+
font-weight: 600;
|
|
187
|
+
opacity: 0.9;
|
|
188
|
+
overflow: hidden;
|
|
189
|
+
white-space: nowrap;
|
|
190
|
+
}
|
|
191
|
+
.dct-grid__strip--row {
|
|
192
|
+
writing-mode: vertical-rl;
|
|
193
|
+
}
|
|
194
|
+
</style>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { ComposerTags } from '../../types/layout/composer';
|
|
3
|
+
type $$ComponentProps = {
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
columns?: number;
|
|
7
|
+
/** At least this many rows, even when the last ones stay empty. */
|
|
8
|
+
rows?: number;
|
|
9
|
+
areas?: string[];
|
|
10
|
+
widths?: number[];
|
|
11
|
+
heights?: number[];
|
|
12
|
+
gap?: number;
|
|
13
|
+
header?: number;
|
|
14
|
+
align?: boolean;
|
|
15
|
+
colLabels?: string[];
|
|
16
|
+
rowLabels?: string[];
|
|
17
|
+
strip?: number;
|
|
18
|
+
/** Labels every cell without its own, in the order they register - see {@link Tags}. */
|
|
19
|
+
tags?: ComposerTags;
|
|
20
|
+
/** Whether each cell gives what it draws its own hover-scope id, under the one in scope here. */
|
|
21
|
+
scoped?: boolean;
|
|
22
|
+
children: Snippet;
|
|
23
|
+
};
|
|
24
|
+
declare const Grid: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
25
|
+
type Grid = ReturnType<typeof Grid>;
|
|
26
|
+
export default Grid;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Margins } from '../margins/Margins';
|
|
2
|
+
/**
|
|
3
|
+
* How an aligned `Grid` collects the margins its cells' plots settle on. A
|
|
4
|
+
* report is kept once it moves by more than 1px, and `settled` only follows
|
|
5
|
+
* once reports stop changing for `delay` ms - a plot reports placeholder
|
|
6
|
+
* margins before svelteplot sizes its axes, and pinning those would freeze them.
|
|
7
|
+
*/
|
|
8
|
+
export declare class GridAlignment {
|
|
9
|
+
#private;
|
|
10
|
+
readonly delay: number;
|
|
11
|
+
constructor(delay?: number);
|
|
12
|
+
/** Each cell's settled margins, by cell id. */
|
|
13
|
+
get settled(): Record<string, Margins>;
|
|
14
|
+
/** Records the margins `cell`'s plot settled on. */
|
|
15
|
+
report(cell: string, margins: Margins): void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* One grid cell's part in aligning its grid: where the plot inside reports
|
|
19
|
+
* the margins it settled on, and the margins the grid pinned on it.
|
|
20
|
+
*/
|
|
21
|
+
export declare class CellAlignment {
|
|
22
|
+
#private;
|
|
23
|
+
constructor(report: (margins: Margins) => void, pinned: () => Margins | undefined);
|
|
24
|
+
/** The enclosing cell's alignment, or `null` outside a grid cell. Call during component init. */
|
|
25
|
+
static current(): CellAlignment | null;
|
|
26
|
+
/** Hands this alignment to the plot below. Call during component init. */
|
|
27
|
+
provide(): void;
|
|
28
|
+
report(margins: Margins): void;
|
|
29
|
+
/** The margins the grid pinned on this cell, once it aligned. */
|
|
30
|
+
get pinned(): Margins | undefined;
|
|
31
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { getContext, setContext } from 'svelte';
|
|
2
|
+
const CELL_ALIGNMENT_KEY = Symbol('dct-cell-alignment');
|
|
3
|
+
/**
|
|
4
|
+
* How an aligned `Grid` collects the margins its cells' plots settle on. A
|
|
5
|
+
* report is kept once it moves by more than 1px, and `settled` only follows
|
|
6
|
+
* once reports stop changing for `delay` ms - a plot reports placeholder
|
|
7
|
+
* margins before svelteplot sizes its axes, and pinning those would freeze them.
|
|
8
|
+
*/
|
|
9
|
+
export class GridAlignment {
|
|
10
|
+
delay;
|
|
11
|
+
#live = {};
|
|
12
|
+
#timer;
|
|
13
|
+
#settled = $state.raw({});
|
|
14
|
+
constructor(delay = 150) {
|
|
15
|
+
this.delay = delay;
|
|
16
|
+
}
|
|
17
|
+
/** Each cell's settled margins, by cell id. */
|
|
18
|
+
get settled() {
|
|
19
|
+
return this.#settled;
|
|
20
|
+
}
|
|
21
|
+
/** Records the margins `cell`'s plot settled on. */
|
|
22
|
+
report(cell, margins) {
|
|
23
|
+
if (margins.equals(this.#live[cell], 1))
|
|
24
|
+
return;
|
|
25
|
+
this.#live = { ...this.#live, [cell]: margins };
|
|
26
|
+
clearTimeout(this.#timer);
|
|
27
|
+
this.#timer = setTimeout(() => (this.#settled = this.#live), this.delay);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* One grid cell's part in aligning its grid: where the plot inside reports
|
|
32
|
+
* the margins it settled on, and the margins the grid pinned on it.
|
|
33
|
+
*/
|
|
34
|
+
export class CellAlignment {
|
|
35
|
+
#report;
|
|
36
|
+
#pinned;
|
|
37
|
+
constructor(report, pinned) {
|
|
38
|
+
this.#report = report;
|
|
39
|
+
this.#pinned = pinned;
|
|
40
|
+
}
|
|
41
|
+
/** The enclosing cell's alignment, or `null` outside a grid cell. Call during component init. */
|
|
42
|
+
static current() {
|
|
43
|
+
return getContext(CELL_ALIGNMENT_KEY) ?? null;
|
|
44
|
+
}
|
|
45
|
+
/** Hands this alignment to the plot below. Call during component init. */
|
|
46
|
+
provide() {
|
|
47
|
+
setContext(CELL_ALIGNMENT_KEY, this);
|
|
48
|
+
}
|
|
49
|
+
report(margins) {
|
|
50
|
+
this.#report(margins);
|
|
51
|
+
}
|
|
52
|
+
/** The margins the grid pinned on this cell, once it aligned. */
|
|
53
|
+
get pinned() {
|
|
54
|
+
return this.#pinned();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { onDestroy, onMount } from 'svelte';
|
|
3
|
+
import { GridCellsRegistry } from './GridCellsRegistry.svelte';
|
|
4
|
+
import { CellAlignment } from './GridAlignment.svelte';
|
|
5
|
+
import { HoverState } from '../hover/HoverState.svelte';
|
|
6
|
+
import type { GridCellSnippet, GridInset } from '../../types/layout/grid';
|
|
7
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* One cell of a `Grid`: takes the slot it asks for (a named `area`,
|
|
11
|
+
* an explicit `row`/`col`, or the next free one) and hands its box to
|
|
12
|
+
* `children`. With `inset`, it floats over its area instead of taking a
|
|
13
|
+
* slot. `label` fills the grid's `header` row above the cell - centered
|
|
14
|
+
* like a facet title, or flush left like a panel tag (the grid's own tag
|
|
15
|
+
* for the cell, when it tags them). In an aligned grid, the plot inside
|
|
16
|
+
* reports its margins and gets the grid's pinned ones. Anything a figure
|
|
17
|
+
* can't be drawn as on its own - a legend, a note - goes in one.
|
|
18
|
+
*/
|
|
19
|
+
let {
|
|
20
|
+
area,
|
|
21
|
+
row,
|
|
22
|
+
col,
|
|
23
|
+
rowSpan,
|
|
24
|
+
colSpan,
|
|
25
|
+
inset,
|
|
26
|
+
label,
|
|
27
|
+
labelKind = 'title',
|
|
28
|
+
class: className,
|
|
29
|
+
children,
|
|
30
|
+
...rest
|
|
31
|
+
}: {
|
|
32
|
+
area?: string;
|
|
33
|
+
row?: number;
|
|
34
|
+
col?: number;
|
|
35
|
+
rowSpan?: number;
|
|
36
|
+
colSpan?: number;
|
|
37
|
+
inset?: GridInset;
|
|
38
|
+
label?: string;
|
|
39
|
+
labelKind?: 'title' | 'tag';
|
|
40
|
+
class?: string;
|
|
41
|
+
children: GridCellSnippet;
|
|
42
|
+
} & Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'class'> = $props();
|
|
43
|
+
|
|
44
|
+
const grid = GridCellsRegistry.current();
|
|
45
|
+
if (!grid) console.warn('GridCell: render it inside a `Grid`.');
|
|
46
|
+
|
|
47
|
+
const id = grid?.register(() => ({ area, row, col, rowSpan, colSpan, inset }));
|
|
48
|
+
onDestroy(() => {
|
|
49
|
+
if (id) grid?.unregister(id);
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
const layout = $derived(id ? grid?.layout(id) : undefined);
|
|
53
|
+
const header = $derived(grid?.header ?? 0);
|
|
54
|
+
// Without a label of its own, the cell reads as the grid's tag for it.
|
|
55
|
+
const tag = $derived(id ? grid?.tagOf(id) : undefined);
|
|
56
|
+
const shownLabel = $derived(label ?? tag);
|
|
57
|
+
const shownKind = $derived(label === undefined && tag !== undefined ? 'tag' : labelKind);
|
|
58
|
+
|
|
59
|
+
const scope = id ? grid?.scopeOf(id) : undefined;
|
|
60
|
+
if (scope !== undefined) HoverState.provideScope(() => scope);
|
|
61
|
+
// What the cell draws is placed: a figure below it takes no cell of its own.
|
|
62
|
+
GridCellsRegistry.leave();
|
|
63
|
+
|
|
64
|
+
new CellAlignment(
|
|
65
|
+
(margins) => {
|
|
66
|
+
if (id) grid?.report(id, margins);
|
|
67
|
+
},
|
|
68
|
+
() => layout?.box.margins
|
|
69
|
+
).provide();
|
|
70
|
+
|
|
71
|
+
// Draw only once every sibling registered, so the plot's first render already sees its final box and edges.
|
|
72
|
+
let ready = $state(false);
|
|
73
|
+
onMount(() => {
|
|
74
|
+
ready = true;
|
|
75
|
+
});
|
|
76
|
+
</script>
|
|
77
|
+
|
|
78
|
+
<div
|
|
79
|
+
{...rest}
|
|
80
|
+
class={['dct-grid-cell', className]}
|
|
81
|
+
class:dct-grid-cell--inset={inset}
|
|
82
|
+
style:grid-row={layout?.gridRow}
|
|
83
|
+
style:grid-column={layout?.gridColumn}
|
|
84
|
+
style:left={inset ? `${inset.left * 100}%` : undefined}
|
|
85
|
+
style:top={inset ? `${(1 - inset.top) * 100}%` : undefined}
|
|
86
|
+
style:width={inset ? `${(inset.right - inset.left) * 100}%` : undefined}
|
|
87
|
+
style:height={inset ? `${(inset.top - inset.bottom) * 100}%` : undefined}
|
|
88
|
+
>
|
|
89
|
+
{#if header > 0}
|
|
90
|
+
<div
|
|
91
|
+
class="dct-grid-cell__label"
|
|
92
|
+
class:dct-grid-cell__label--tag={shownKind === 'tag'}
|
|
93
|
+
style:height="{header}px"
|
|
94
|
+
>
|
|
95
|
+
{shownLabel ?? ''}
|
|
96
|
+
</div>
|
|
97
|
+
{/if}
|
|
98
|
+
{#if ready && layout && layout.box.width > 0 && layout.box.height > 0}
|
|
99
|
+
{#key JSON.stringify(layout.box.margins ?? null)}
|
|
100
|
+
{@render children({
|
|
101
|
+
width: layout.box.width,
|
|
102
|
+
height: layout.box.height,
|
|
103
|
+
margins: layout.box.margins,
|
|
104
|
+
edges: layout.edges
|
|
105
|
+
})}
|
|
106
|
+
{/key}
|
|
107
|
+
{/if}
|
|
108
|
+
</div>
|
|
109
|
+
|
|
110
|
+
<style>
|
|
111
|
+
.dct-grid-cell {
|
|
112
|
+
display: flex;
|
|
113
|
+
flex-direction: column;
|
|
114
|
+
min-width: 0;
|
|
115
|
+
min-height: 0;
|
|
116
|
+
overflow: hidden;
|
|
117
|
+
}
|
|
118
|
+
.dct-grid-cell--inset {
|
|
119
|
+
position: absolute;
|
|
120
|
+
z-index: 1;
|
|
121
|
+
background: var(--dct-cell-inset-bg, var(--dct-bg, Canvas));
|
|
122
|
+
}
|
|
123
|
+
.dct-grid-cell__label {
|
|
124
|
+
flex: 0 0 auto;
|
|
125
|
+
overflow: hidden;
|
|
126
|
+
white-space: nowrap;
|
|
127
|
+
text-overflow: ellipsis;
|
|
128
|
+
font-size: 0.85rem;
|
|
129
|
+
font-weight: 600;
|
|
130
|
+
text-align: center;
|
|
131
|
+
opacity: 0.9;
|
|
132
|
+
}
|
|
133
|
+
.dct-grid-cell__label--tag {
|
|
134
|
+
font-family: var(--dct-title-font, inherit);
|
|
135
|
+
font-size: var(--dct-cell-tag-size, 1rem);
|
|
136
|
+
font-weight: var(--dct-cell-tag-weight, 600);
|
|
137
|
+
line-height: 1.2;
|
|
138
|
+
text-align: start;
|
|
139
|
+
opacity: 1;
|
|
140
|
+
}
|
|
141
|
+
</style>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { GridCellSnippet, GridInset } from '../../types/layout/grid';
|
|
2
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
+
type $$ComponentProps = {
|
|
4
|
+
area?: string;
|
|
5
|
+
row?: number;
|
|
6
|
+
col?: number;
|
|
7
|
+
rowSpan?: number;
|
|
8
|
+
colSpan?: number;
|
|
9
|
+
inset?: GridInset;
|
|
10
|
+
label?: string;
|
|
11
|
+
labelKind?: 'title' | 'tag';
|
|
12
|
+
class?: string;
|
|
13
|
+
children: GridCellSnippet;
|
|
14
|
+
} & Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'class'>;
|
|
15
|
+
declare const GridCell: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
16
|
+
type GridCell = ReturnType<typeof GridCell>;
|
|
17
|
+
export default GridCell;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { GridAlignment } from './GridAlignment.svelte';
|
|
2
|
+
import type { Margins } from '../margins/Margins';
|
|
3
|
+
import type { GridCellLayout, GridCellRequest } from '../../types/layout/grid';
|
|
4
|
+
/** What a grid tells its cells, each read reactively. */
|
|
5
|
+
export type GridCellsRegistryInputs = {
|
|
6
|
+
/** Each cell's layout by id, once the grid placed it. */
|
|
7
|
+
layouts: () => Record<string, GridCellLayout>;
|
|
8
|
+
/** Height reserved above every cell for its label. */
|
|
9
|
+
header: () => number;
|
|
10
|
+
/** Whether the grid lines its cells' plot areas up. */
|
|
11
|
+
aligned: () => boolean;
|
|
12
|
+
/** The tag a cell's label falls back to, by its registration order. */
|
|
13
|
+
tag: (index: number) => string | undefined;
|
|
14
|
+
/** The hover-scope id a cell gives what it draws, by its registration order. */
|
|
15
|
+
scope: (index: number) => string | undefined;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* The cells of one `Grid`: each `GridCell` below registers here, with what
|
|
19
|
+
* it asks for, and reads back its layout, its label's tag and its hover
|
|
20
|
+
* scope. In an aligned grid, the plot inside each cell reports the margins
|
|
21
|
+
* it settled on into {@link alignment}. Create it in the `Grid` during
|
|
22
|
+
* component init and {@link provide} it.
|
|
23
|
+
*/
|
|
24
|
+
export declare class GridCellsRegistry {
|
|
25
|
+
#private;
|
|
26
|
+
/** The margins the cells' plots settled on, which an aligned grid lines up. */
|
|
27
|
+
readonly alignment: GridAlignment;
|
|
28
|
+
constructor(inputs: GridCellsRegistryInputs);
|
|
29
|
+
/** The enclosing grid's cells, or `null` outside a grid. Call during component init. */
|
|
30
|
+
static current(): GridCellsRegistry | null;
|
|
31
|
+
/** Marks what a grid cell draws as already placed: a figure below it takes no cell of its own. */
|
|
32
|
+
static leave(): void;
|
|
33
|
+
/** Hands these cells to the `GridCell`s below. Call during component init. */
|
|
34
|
+
provide(): void;
|
|
35
|
+
/** Every registered cell's request, with its id, in registration order. */
|
|
36
|
+
get requests(): (GridCellRequest & {
|
|
37
|
+
id: string;
|
|
38
|
+
})[];
|
|
39
|
+
/** Registers a cell (its request read reactively), returning its id. */
|
|
40
|
+
register(request: () => GridCellRequest): string;
|
|
41
|
+
unregister(id: string): void;
|
|
42
|
+
/** The cell's layout, or `undefined` before the grid placed it. */
|
|
43
|
+
layout(id: string): GridCellLayout | undefined;
|
|
44
|
+
/** Records the margins a cell's plot settled on - only an aligned grid listens. */
|
|
45
|
+
report(id: string, margins: Margins): void;
|
|
46
|
+
/** Height reserved above every cell for its label. */
|
|
47
|
+
get header(): number;
|
|
48
|
+
/** The tag a cell's label falls back to, when the grid tags its cells in order. */
|
|
49
|
+
tagOf(id: string): string | undefined;
|
|
50
|
+
/** The hover-scope id a cell gives what it draws, when the grid scopes them. */
|
|
51
|
+
scopeOf(id: string): string | undefined;
|
|
52
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { getContext, setContext } from 'svelte';
|
|
2
|
+
import { GridAlignment } from './GridAlignment.svelte';
|
|
3
|
+
const GRID_KEY = Symbol('dct-grid');
|
|
4
|
+
/**
|
|
5
|
+
* The cells of one `Grid`: each `GridCell` below registers here, with what
|
|
6
|
+
* it asks for, and reads back its layout, its label's tag and its hover
|
|
7
|
+
* scope. In an aligned grid, the plot inside each cell reports the margins
|
|
8
|
+
* it settled on into {@link alignment}. Create it in the `Grid` during
|
|
9
|
+
* component init and {@link provide} it.
|
|
10
|
+
*/
|
|
11
|
+
export class GridCellsRegistry {
|
|
12
|
+
/** The margins the cells' plots settled on, which an aligned grid lines up. */
|
|
13
|
+
alignment = new GridAlignment();
|
|
14
|
+
#inputs;
|
|
15
|
+
#cells = $state([]);
|
|
16
|
+
#next = 0;
|
|
17
|
+
constructor(inputs) {
|
|
18
|
+
this.#inputs = inputs;
|
|
19
|
+
}
|
|
20
|
+
/** The enclosing grid's cells, or `null` outside a grid. Call during component init. */
|
|
21
|
+
static current() {
|
|
22
|
+
return getContext(GRID_KEY) ?? null;
|
|
23
|
+
}
|
|
24
|
+
/** Marks what a grid cell draws as already placed: a figure below it takes no cell of its own. */
|
|
25
|
+
static leave() {
|
|
26
|
+
setContext(GRID_KEY, null);
|
|
27
|
+
}
|
|
28
|
+
/** Hands these cells to the `GridCell`s below. Call during component init. */
|
|
29
|
+
provide() {
|
|
30
|
+
setContext(GRID_KEY, this);
|
|
31
|
+
}
|
|
32
|
+
/** Every registered cell's request, with its id, in registration order. */
|
|
33
|
+
get requests() {
|
|
34
|
+
return this.#cells.map((cell) => ({ id: cell.id, ...cell.request() }));
|
|
35
|
+
}
|
|
36
|
+
/** Registers a cell (its request read reactively), returning its id. */
|
|
37
|
+
register(request) {
|
|
38
|
+
const id = `cell-${this.#next++}`;
|
|
39
|
+
this.#cells.push({ id, request });
|
|
40
|
+
return id;
|
|
41
|
+
}
|
|
42
|
+
unregister(id) {
|
|
43
|
+
this.#cells = this.#cells.filter((cell) => cell.id !== id);
|
|
44
|
+
}
|
|
45
|
+
/** The cell's layout, or `undefined` before the grid placed it. */
|
|
46
|
+
layout(id) {
|
|
47
|
+
return this.#inputs.layouts()[id];
|
|
48
|
+
}
|
|
49
|
+
/** Records the margins a cell's plot settled on - only an aligned grid listens. */
|
|
50
|
+
report(id, margins) {
|
|
51
|
+
if (this.#inputs.aligned())
|
|
52
|
+
this.alignment.report(id, margins);
|
|
53
|
+
}
|
|
54
|
+
/** Height reserved above every cell for its label. */
|
|
55
|
+
get header() {
|
|
56
|
+
return this.#inputs.header();
|
|
57
|
+
}
|
|
58
|
+
/** The tag a cell's label falls back to, when the grid tags its cells in order. */
|
|
59
|
+
tagOf(id) {
|
|
60
|
+
return this.#inputs.tag(GridCellsRegistry.#indexOf(id));
|
|
61
|
+
}
|
|
62
|
+
/** The hover-scope id a cell gives what it draws, when the grid scopes them. */
|
|
63
|
+
scopeOf(id) {
|
|
64
|
+
return this.#inputs.scope(GridCellsRegistry.#indexOf(id));
|
|
65
|
+
}
|
|
66
|
+
/** A cell's 0-based registration order - insets included. */
|
|
67
|
+
static #indexOf(id) {
|
|
68
|
+
return Number(id.slice('cell-'.length));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Margins } from '../margins/Margins';
|
|
2
|
+
import type { CellBox, CellEdges, GridCellSpec, GridSpan } from '../../types/layout/grid';
|
|
3
|
+
/**
|
|
4
|
+
* Where a grid's cells sit, without Svelte: each cell's slot - a named
|
|
5
|
+
* `area`'s box in `areas`, an explicit `row`/`col` of its own, or, in order,
|
|
6
|
+
* the next slot nothing claimed (adding rows as needed) - the grid's size,
|
|
7
|
+
* which sides of each cell face no other cell, and the pixel tracks for a
|
|
8
|
+
* box ({@link GridPlan.tracks}). Without `areas`, `columns` defaults to the
|
|
9
|
+
* smallest square that fits every cell.
|
|
10
|
+
*/
|
|
11
|
+
export declare class GridPlan {
|
|
12
|
+
#private;
|
|
13
|
+
readonly rows: number;
|
|
14
|
+
readonly columns: number;
|
|
15
|
+
/** Each cell's slot, in the order the cells came. */
|
|
16
|
+
readonly spans: GridSpan[];
|
|
17
|
+
constructor(cells: GridCellSpec[], options?: {
|
|
18
|
+
areas?: string[];
|
|
19
|
+
columns?: number;
|
|
20
|
+
/** At least this many rows, even when the last ones stay empty. */
|
|
21
|
+
rows?: number;
|
|
22
|
+
});
|
|
23
|
+
/** Which sides of each cell face no other cell - where an `'outer'` axis draws. */
|
|
24
|
+
get edges(): CellEdges[];
|
|
25
|
+
/** The slot a named area covers, or `null` when it isn't in `areas`. */
|
|
26
|
+
areaSpan(name: string): GridSpan | null;
|
|
27
|
+
/**
|
|
28
|
+
* Pixel tracks for a `width` x `height` box and every cell's box. Each
|
|
29
|
+
* track's panel share follows its weight (`widths`, `heights`). With
|
|
30
|
+
* `margins` (one per cell, all reported), every column takes the widest
|
|
31
|
+
* left margin among cells starting in it and the widest right among cells
|
|
32
|
+
* ending in it - rows likewise - and those margins are pinned on the
|
|
33
|
+
* cells, so every plot area lines up with its row and column. `header` is
|
|
34
|
+
* the height each row spends above its cells (a label).
|
|
35
|
+
*/
|
|
36
|
+
tracks(args: {
|
|
37
|
+
width: number;
|
|
38
|
+
height: number;
|
|
39
|
+
gap: number;
|
|
40
|
+
header?: number;
|
|
41
|
+
widths?: number[];
|
|
42
|
+
heights?: number[];
|
|
43
|
+
margins?: (Margins | undefined)[];
|
|
44
|
+
}): {
|
|
45
|
+
colWidths: number[];
|
|
46
|
+
rowHeights: number[];
|
|
47
|
+
boxes: CellBox[];
|
|
48
|
+
};
|
|
49
|
+
}
|