@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.
Files changed (839) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/LICENSE +21 -0
  3. package/README.md +112 -553
  4. package/dist/configuration/config.svelte.d.ts +5 -5
  5. package/dist/configuration/config.svelte.js +142 -46
  6. package/dist/configuration/fonts.d.ts +6 -0
  7. package/dist/configuration/fonts.js +6 -0
  8. package/dist/configuration/themes/compact.d.ts +2 -2
  9. package/dist/configuration/themes/compact.js +1 -1
  10. package/dist/configuration/themes/dark.d.ts +2 -2
  11. package/dist/configuration/themes/dark.js +5 -4
  12. package/dist/configuration/themes/default.d.ts +8 -3
  13. package/dist/configuration/themes/default.js +8 -2
  14. package/dist/configuration/themes/editorial.d.ts +2 -2
  15. package/dist/configuration/themes/editorial.js +2 -2
  16. package/dist/configuration/themes/index.d.ts +545 -80
  17. package/dist/configuration/themes/index.js +6 -5
  18. package/dist/index.d.ts +35 -48
  19. package/dist/index.js +20 -35
  20. package/dist/layout/base/BasePlotLayout.svelte +325 -0
  21. package/dist/layout/base/BasePlotLayout.svelte.d.ts +111 -0
  22. package/dist/layout/composer/PlotComposer.svelte +94 -0
  23. package/dist/layout/composer/PlotComposer.svelte.d.ts +13 -0
  24. package/dist/layout/coordinates/CameraFit.svelte +4 -4
  25. package/dist/layout/coordinates/CoordinatesLayout.svelte +11 -3
  26. package/dist/layout/coordinates/CoordinatesLayout.svelte.d.ts +6 -2
  27. package/dist/layout/coordinates/camera.svelte.d.ts +1 -1
  28. package/dist/layout/coordinates/camera.svelte.js +6 -6
  29. package/dist/layout/coordinates/projections/argentina.js +3 -3
  30. package/dist/layout/coordinates/projections/fit.js +1 -1
  31. package/dist/layout/coordinates/resolveCameraTarget.d.ts +1 -1
  32. package/dist/layout/coordinates/resolveProjection.d.ts +1 -1
  33. package/dist/layout/coordinates/resolveProjection.js +2 -2
  34. package/dist/layout/coordinates/rotate.svelte.d.ts +3 -3
  35. package/dist/layout/coordinates/rotate.svelte.js +8 -8
  36. package/dist/layout/coordinates/zoom.svelte.d.ts +1 -1
  37. package/dist/layout/facet/FacetIndicator.svelte +23 -23
  38. package/dist/layout/facet/FacetLayout.svelte +435 -398
  39. package/dist/layout/facet/FacetLayout.svelte.d.ts +9 -3
  40. package/dist/layout/facet/axes.d.ts +16 -0
  41. package/dist/layout/facet/axes.js +25 -0
  42. package/dist/layout/facet/config.d.ts +32 -0
  43. package/dist/layout/facet/config.js +82 -0
  44. package/dist/layout/figure/Figure.svelte +177 -0
  45. package/dist/layout/figure/Figure.svelte.d.ts +14 -0
  46. package/dist/layout/figure/FigureChrome.svelte +341 -0
  47. package/dist/layout/figure/FigureChrome.svelte.d.ts +21 -0
  48. package/dist/layout/geometry/FrameClip.svelte +45 -0
  49. package/dist/layout/geometry/FrameClip.svelte.d.ts +8 -0
  50. package/dist/layout/geometry/FrameClipping.d.ts +24 -0
  51. package/dist/layout/geometry/FrameClipping.js +40 -0
  52. package/dist/layout/geometry/GeometryLayout.svelte +287 -224
  53. package/dist/layout/geometry/GeometryLayout.svelte.d.ts +10 -10
  54. package/dist/layout/grid/Grid.svelte +194 -0
  55. package/dist/layout/grid/Grid.svelte.d.ts +26 -0
  56. package/dist/layout/grid/GridAlignment.svelte.d.ts +31 -0
  57. package/dist/layout/grid/GridAlignment.svelte.js +56 -0
  58. package/dist/layout/grid/GridCell.svelte +141 -0
  59. package/dist/layout/grid/GridCell.svelte.d.ts +17 -0
  60. package/dist/layout/grid/GridCellsRegistry.svelte.d.ts +52 -0
  61. package/dist/layout/grid/GridCellsRegistry.svelte.js +70 -0
  62. package/dist/layout/grid/GridPlan.d.ts +49 -0
  63. package/dist/layout/grid/GridPlan.js +167 -0
  64. package/dist/layout/grid/Tags.d.ts +8 -0
  65. package/dist/layout/grid/Tags.js +39 -0
  66. package/dist/layout/hover/HoverScope.svelte +11 -0
  67. package/dist/layout/hover/HoverScope.svelte.d.ts +8 -0
  68. package/dist/layout/hover/HoverSettings.d.ts +34 -0
  69. package/dist/layout/hover/HoverSettings.js +52 -0
  70. package/dist/layout/hover/HoverState.svelte.d.ts +47 -0
  71. package/dist/layout/hover/HoverState.svelte.js +99 -0
  72. package/dist/layout/hover/PlotHover.svelte.d.ts +63 -0
  73. package/dist/layout/hover/PlotHover.svelte.js +133 -0
  74. package/dist/layout/interaction/PlotInteraction.svelte.d.ts +38 -0
  75. package/dist/layout/interaction/PlotInteraction.svelte.js +56 -0
  76. package/dist/layout/legend/AxisNumberFormat.d.ts +12 -0
  77. package/dist/layout/legend/AxisNumberFormat.js +25 -0
  78. package/dist/layout/legend/ContinuousSection.svelte +363 -351
  79. package/dist/layout/legend/DisabledStyle.d.ts +19 -0
  80. package/dist/layout/legend/DisabledStyle.js +57 -0
  81. package/dist/layout/legend/DiscreteBadgeItem.svelte +6 -3
  82. package/dist/layout/legend/DiscreteSection.svelte +32 -32
  83. package/dist/layout/legend/DiscreteSwatchItem.svelte +4 -1
  84. package/dist/layout/legend/DiscreteSymbolIcon.svelte +14 -9
  85. package/dist/layout/legend/LegendChannels.d.ts +21 -0
  86. package/dist/layout/legend/LegendChannels.js +221 -0
  87. package/dist/layout/legend/LegendLayout.svelte +49 -43
  88. package/dist/layout/legend/LegendState.svelte.d.ts +84 -0
  89. package/dist/layout/legend/LegendState.svelte.js +333 -0
  90. package/dist/layout/legend/LegendText.d.ts +12 -0
  91. package/dist/layout/legend/LegendText.js +22 -0
  92. package/dist/layout/legend/SizeSection.svelte +84 -0
  93. package/dist/layout/legend/SizeSection.svelte.d.ts +7 -0
  94. package/dist/layout/legend/SymbolSection.svelte +31 -0
  95. package/dist/layout/legend/SymbolSection.svelte.d.ts +8 -0
  96. package/dist/layout/margins/Box.d.ts +84 -0
  97. package/dist/layout/margins/Box.js +138 -0
  98. package/dist/layout/margins/Margins.d.ts +37 -0
  99. package/dist/layout/margins/Margins.js +71 -0
  100. package/dist/layout/margins/PlotMargins.svelte.d.ts +101 -0
  101. package/dist/layout/margins/PlotMargins.svelte.js +219 -0
  102. package/dist/layout/plot/Core.svelte +61 -0
  103. package/dist/layout/plot/Core.svelte.d.ts +41 -0
  104. package/dist/layout/plot/PanelRun.svelte +28 -0
  105. package/dist/{charts/heatmap/Chart.svelte.d.ts → layout/plot/PanelRun.svelte.d.ts} +11 -7
  106. package/dist/layout/plot/Plot.svelte +287 -0
  107. package/dist/layout/plot/Plot.svelte.d.ts +49 -0
  108. package/dist/layout/plot/PlotContext.d.ts +41 -0
  109. package/dist/layout/plot/PlotContext.js +46 -0
  110. package/dist/layout/plot/PublicPlotContext.d.ts +131 -0
  111. package/dist/layout/plot/PublicPlotContext.js +240 -0
  112. package/dist/layout/plot/Slice.d.ts +44 -0
  113. package/dist/layout/plot/Slice.js +100 -0
  114. package/dist/layout/plot/usePlot.d.ts +9 -0
  115. package/dist/layout/plot/usePlot.js +13 -0
  116. package/dist/layout/scales/EdgeTicks.d.ts +39 -0
  117. package/dist/layout/scales/EdgeTicks.js +82 -0
  118. package/dist/layout/scales/NiceTicks.d.ts +40 -0
  119. package/dist/layout/scales/NiceTicks.js +72 -0
  120. package/dist/layout/scales/ScalesLayout.svelte +275 -206
  121. package/dist/layout/scales/ScalesLayout.svelte.d.ts +7 -1
  122. package/dist/layout/scales/SveltePlotScale.d.ts +15 -0
  123. package/dist/layout/scales/SveltePlotScale.js +79 -0
  124. package/dist/layout/styles/StylesLayout.svelte +65 -65
  125. package/dist/layout/styles/TileLayer.svelte +78 -76
  126. package/dist/layout/styles/TileLayer.svelte.d.ts +1 -1
  127. package/dist/layout/styles/ValueLabels.d.ts +97 -0
  128. package/dist/layout/styles/ValueLabels.js +238 -0
  129. package/dist/layout/timeline/Timeline.svelte +83 -74
  130. package/dist/layout/timeline/Timeline.svelte.d.ts +2 -0
  131. package/dist/layout/timeline/TimelineFrame.svelte +86 -0
  132. package/dist/layout/timeline/TimelineFrame.svelte.d.ts +16 -0
  133. package/dist/layout/timeline/TimelineLayout.svelte +140 -169
  134. package/dist/layout/timeline/TimelineLayout.svelte.d.ts +7 -3
  135. package/dist/layout/timeline/TimelinePlayer.svelte +195 -0
  136. package/dist/layout/timeline/TimelinePlayer.svelte.d.ts +7 -0
  137. package/dist/layout/timeline/TimelineRule.svelte +51 -0
  138. package/dist/layout/timeline/TimelineRule.svelte.d.ts +7 -0
  139. package/dist/layout/timeline/TimelineState.svelte.d.ts +90 -0
  140. package/dist/layout/timeline/TimelineState.svelte.js +260 -0
  141. package/dist/layout/timeline/TimelineSteps.d.ts +24 -0
  142. package/dist/layout/timeline/TimelineSteps.js +48 -0
  143. package/dist/layout/timeline/TimelineTime.d.ts +18 -0
  144. package/dist/layout/timeline/TimelineTime.js +117 -0
  145. package/dist/layout/tooltip/Tooltip.svelte +85 -85
  146. package/dist/layout/tooltip/Tooltip.svelte.d.ts +45 -24
  147. package/dist/layout/tooltip/TooltipState.svelte.d.ts +67 -0
  148. package/dist/layout/tooltip/TooltipState.svelte.js +126 -0
  149. package/dist/markers/MarkerKinds.d.ts +173 -0
  150. package/dist/markers/MarkerKinds.js +51 -0
  151. package/dist/markers/area/AreaMarker.svelte +110 -0
  152. package/dist/markers/area/AreaMarker.svelte.d.ts +7 -0
  153. package/dist/markers/arrow/ArrowMarker.svelte +28 -0
  154. package/dist/markers/arrow/ArrowMarker.svelte.d.ts +7 -0
  155. package/dist/markers/{BarMarker.svelte → bar/BarMarker.svelte} +54 -52
  156. package/dist/markers/{BarMarker.svelte.d.ts → bar/BarMarker.svelte.d.ts} +1 -1
  157. package/dist/markers/bollinger/BollingerMarker.svelte +44 -0
  158. package/dist/markers/bollinger/BollingerMarker.svelte.d.ts +7 -0
  159. package/dist/markers/box/BoxMarker.svelte +143 -0
  160. package/dist/markers/box/BoxMarker.svelte.d.ts +7 -0
  161. package/dist/markers/brush/BrushMarker.svelte +32 -0
  162. package/dist/markers/brush/BrushMarker.svelte.d.ts +7 -0
  163. package/dist/markers/cell/CellMarker.svelte +27 -0
  164. package/dist/markers/{CellMarker.svelte.d.ts → cell/CellMarker.svelte.d.ts} +1 -1
  165. package/dist/markers/contour/ContourClipMarker.svelte +83 -0
  166. package/dist/markers/{ContourClipMarker.svelte.d.ts → contour/ContourClipMarker.svelte.d.ts} +1 -1
  167. package/dist/markers/contour/ContourMarker.svelte +28 -0
  168. package/dist/markers/{ContourMarker.svelte.d.ts → contour/ContourMarker.svelte.d.ts} +1 -1
  169. package/dist/markers/delaunay/DelaunayLinkMarker.svelte +26 -0
  170. package/dist/markers/delaunay/DelaunayLinkMarker.svelte.d.ts +7 -0
  171. package/dist/markers/delaunay/DelaunayMeshMarker.svelte +26 -0
  172. package/dist/markers/delaunay/DelaunayMeshMarker.svelte.d.ts +7 -0
  173. package/dist/markers/delta/Delta.d.ts +21 -0
  174. package/dist/markers/delta/Delta.js +60 -0
  175. package/dist/markers/delta/DeltaMarker.svelte +96 -0
  176. package/dist/markers/{DeltaMarker.svelte.d.ts → delta/DeltaMarker.svelte.d.ts} +2 -2
  177. package/dist/markers/density/DensityMarker.svelte +63 -0
  178. package/dist/markers/density/DensityMarker.svelte.d.ts +7 -0
  179. package/dist/markers/difference/DifferenceMarker.svelte +30 -0
  180. package/dist/markers/difference/DifferenceMarker.svelte.d.ts +7 -0
  181. package/dist/markers/dot/DotMarker.svelte +102 -0
  182. package/dist/markers/{DotMarker.svelte.d.ts → dot/DotMarker.svelte.d.ts} +5 -17
  183. package/dist/markers/geo/GeoFeaturesMarker.svelte +39 -0
  184. package/dist/markers/{GeoFeaturesMarker.svelte.d.ts → geo/GeoFeaturesMarker.svelte.d.ts} +1 -1
  185. package/dist/markers/geo/GeoHoverMarker.svelte +28 -0
  186. package/dist/markers/{GeoHoverMarker.svelte.d.ts → geo/GeoHoverMarker.svelte.d.ts} +2 -2
  187. package/dist/markers/geo/GraticuleMarker.svelte +18 -0
  188. package/dist/markers/{GraticuleMarker.svelte.d.ts → geo/GraticuleMarker.svelte.d.ts} +1 -1
  189. package/dist/markers/geo/SphereMarker.svelte +15 -0
  190. package/dist/markers/{SphereMarker.svelte.d.ts → geo/SphereMarker.svelte.d.ts} +1 -1
  191. package/dist/markers/hover/HoverMarker.svelte +252 -0
  192. package/dist/markers/{HoverMarker.svelte.d.ts → hover/HoverMarker.svelte.d.ts} +10 -10
  193. package/dist/markers/hull/HullMarker.svelte +25 -0
  194. package/dist/markers/hull/HullMarker.svelte.d.ts +7 -0
  195. package/dist/markers/image/ImageMarker.svelte +22 -0
  196. package/dist/markers/image/ImageMarker.svelte.d.ts +7 -0
  197. package/dist/markers/inset/InsetMarker.svelte +184 -150
  198. package/dist/markers/inset/InsetMarker.svelte.d.ts +4 -4
  199. package/dist/markers/inset/insetLayout.d.ts +1 -1
  200. package/dist/markers/inset/insetLayout.js +6 -2
  201. package/dist/markers/inset/insetProjection.d.ts +1 -1
  202. package/dist/markers/inset/insetProjection.js +3 -3
  203. package/dist/markers/line/LineMarker.svelte +30 -0
  204. package/dist/markers/{LineMarker.svelte.d.ts → line/LineMarker.svelte.d.ts} +1 -1
  205. package/dist/markers/link/LinkMarker.svelte +47 -0
  206. package/dist/markers/{LinkMarker.svelte.d.ts → link/LinkMarker.svelte.d.ts} +1 -1
  207. package/dist/markers/raster/RasterMarker.svelte +31 -0
  208. package/dist/markers/raster/RasterMarker.svelte.d.ts +7 -0
  209. package/dist/markers/rect/RectMarker.svelte +62 -0
  210. package/dist/markers/rect/RectMarker.svelte.d.ts +7 -0
  211. package/dist/markers/regression/RegressionMarker.svelte +60 -0
  212. package/dist/markers/regression/RegressionMarker.svelte.d.ts +7 -0
  213. package/dist/markers/rule/RuleMarker.svelte +47 -0
  214. package/dist/markers/{RuleMarker.svelte.d.ts → rule/RuleMarker.svelte.d.ts} +2 -5
  215. package/dist/markers/text/Declutter.d.ts +35 -0
  216. package/dist/markers/text/Declutter.js +157 -0
  217. package/dist/markers/text/TextMarker.svelte +244 -0
  218. package/dist/markers/{TextMarker.svelte.d.ts → text/TextMarker.svelte.d.ts} +5 -9
  219. package/dist/markers/tick/TickMarker.svelte +44 -0
  220. package/dist/markers/tick/TickMarker.svelte.d.ts +7 -0
  221. package/dist/markers/trail/TrailMarker.svelte +27 -0
  222. package/dist/markers/trail/TrailMarker.svelte.d.ts +7 -0
  223. package/dist/markers/utils/BandNudge.d.ts +22 -0
  224. package/dist/markers/utils/BandNudge.js +23 -0
  225. package/dist/markers/utils/MarkerChannels.d.ts +49 -0
  226. package/dist/markers/utils/MarkerChannels.js +97 -0
  227. package/dist/markers/vector/VectorMarker.svelte +29 -0
  228. package/dist/markers/{VectorMarker.svelte.d.ts → vector/VectorMarker.svelte.d.ts} +1 -1
  229. package/dist/markers/voronoi/VoronoiMarker.svelte +26 -0
  230. package/dist/markers/voronoi/VoronoiMarker.svelte.d.ts +7 -0
  231. package/dist/markers/voronoi/VoronoiMeshMarker.svelte +26 -0
  232. package/dist/markers/voronoi/VoronoiMeshMarker.svelte.d.ts +7 -0
  233. package/dist/markers/waffle/WaffleMarker.svelte +56 -0
  234. package/dist/markers/waffle/WaffleMarker.svelte.d.ts +7 -0
  235. package/dist/phases/Pipeline.d.ts +108 -0
  236. package/dist/phases/Pipeline.js +227 -0
  237. package/dist/phases/data/DataPhase.d.ts +19 -0
  238. package/dist/phases/data/DataPhase.js +85 -0
  239. package/dist/phases/data/PlotAxes.d.ts +75 -0
  240. package/dist/phases/data/PlotAxes.js +151 -0
  241. package/dist/phases/facet/FacetPanels.d.ts +54 -0
  242. package/dist/phases/facet/FacetPanels.js +95 -0
  243. package/dist/phases/facet/FacetPhase.d.ts +11 -0
  244. package/dist/phases/facet/FacetPhase.js +28 -0
  245. package/dist/phases/hover/HoverPhase.d.ts +36 -0
  246. package/dist/phases/hover/HoverPhase.js +109 -0
  247. package/dist/phases/mapping/MappingPhase.d.ts +17 -0
  248. package/dist/phases/mapping/MappingPhase.js +40 -0
  249. package/dist/phases/markers/MarkersPhase.d.ts +14 -0
  250. package/dist/phases/markers/MarkersPhase.js +27 -0
  251. package/dist/phases/scales/MarkerAxisValues.d.ts +12 -0
  252. package/dist/phases/scales/MarkerAxisValues.js +34 -0
  253. package/dist/phases/scales/ScalesPhase.d.ts +29 -0
  254. package/dist/phases/scales/ScalesPhase.js +153 -0
  255. package/dist/phases/sharedScales/SharedScalesPhase.d.ts +58 -0
  256. package/dist/phases/sharedScales/SharedScalesPhase.js +171 -0
  257. package/dist/phases/statistics/AuthorMarkers.d.ts +43 -0
  258. package/dist/phases/statistics/AuthorMarkers.js +69 -0
  259. package/dist/phases/statistics/MarkerGrouping.d.ts +48 -0
  260. package/dist/phases/statistics/MarkerGrouping.js +113 -0
  261. package/dist/phases/statistics/Statistics.d.ts +53 -0
  262. package/dist/phases/statistics/Statistics.js +156 -0
  263. package/dist/phases/statistics/StatisticsPhase.d.ts +18 -0
  264. package/dist/phases/statistics/StatisticsPhase.js +67 -0
  265. package/dist/phases/statistics/methods/BollingerStatistic.d.ts +9 -0
  266. package/dist/phases/statistics/methods/BollingerStatistic.js +18 -0
  267. package/dist/phases/statistics/methods/BoxStatistic.d.ts +9 -0
  268. package/dist/phases/statistics/methods/BoxStatistic.js +18 -0
  269. package/dist/phases/statistics/methods/Density2dStatistic.d.ts +9 -0
  270. package/dist/phases/statistics/methods/Density2dStatistic.js +18 -0
  271. package/dist/phases/statistics/methods/DensityStatistic.d.ts +12 -0
  272. package/dist/phases/statistics/methods/DensityStatistic.js +29 -0
  273. package/dist/phases/statistics/methods/MovingAverageStatistic.d.ts +12 -0
  274. package/dist/phases/statistics/methods/MovingAverageStatistic.js +30 -0
  275. package/dist/phases/statistics/methods/RegressionStatistic.d.ts +9 -0
  276. package/dist/phases/statistics/methods/RegressionStatistic.js +21 -0
  277. package/dist/phases/styles/StylesPhase.d.ts +13 -0
  278. package/dist/phases/styles/StylesPhase.js +17 -0
  279. package/dist/phases/tooltip/TooltipPhase.d.ts +14 -0
  280. package/dist/phases/tooltip/TooltipPhase.js +17 -0
  281. package/dist/phases/transforms/ProcessedPositions.d.ts +30 -0
  282. package/dist/phases/transforms/ProcessedPositions.js +74 -0
  283. package/dist/phases/transforms/Transforms.d.ts +42 -0
  284. package/dist/phases/transforms/Transforms.js +130 -0
  285. package/dist/phases/transforms/TransformsPhase.d.ts +27 -0
  286. package/dist/phases/transforms/TransformsPhase.js +205 -0
  287. package/dist/phases/transforms/methods/AnchorBar.d.ts +13 -0
  288. package/dist/phases/transforms/methods/AnchorBar.js +21 -0
  289. package/dist/phases/transforms/methods/BinTransform.d.ts +7 -0
  290. package/dist/phases/transforms/methods/BinTransform.js +48 -0
  291. package/dist/phases/transforms/methods/DensityTransform.d.ts +6 -0
  292. package/dist/phases/transforms/methods/DensityTransform.js +13 -0
  293. package/dist/phases/transforms/methods/GroupTransform.d.ts +8 -0
  294. package/dist/phases/transforms/methods/GroupTransform.js +39 -0
  295. package/dist/phases/transforms/methods/NormalizeTransform.d.ts +10 -0
  296. package/dist/phases/transforms/methods/NormalizeTransform.js +30 -0
  297. package/dist/phases/transforms/methods/OrderTransform.d.ts +16 -0
  298. package/dist/phases/transforms/methods/OrderTransform.js +43 -0
  299. package/dist/phases/transforms/methods/PerGroup.d.ts +11 -0
  300. package/dist/phases/transforms/methods/PerGroup.js +39 -0
  301. package/dist/phases/transforms/methods/PositionTransform.d.ts +15 -0
  302. package/dist/phases/transforms/methods/PositionTransform.js +74 -0
  303. package/dist/phases/transforms/methods/StackTransform.d.ts +8 -0
  304. package/dist/phases/transforms/methods/StackTransform.js +29 -0
  305. package/dist/phases/transforms/methods/WindowTransform.d.ts +8 -0
  306. package/dist/phases/transforms/methods/WindowTransform.js +23 -0
  307. package/dist/plots/area/Plot.svelte +42 -0
  308. package/dist/plots/{heatmap/ValueLabels.svelte.d.ts → area/Plot.svelte.d.ts} +8 -16
  309. package/dist/plots/area/defaults.d.ts +4 -0
  310. package/dist/plots/area/defaults.js +21 -0
  311. package/dist/plots/area/markers.d.ts +14 -0
  312. package/dist/plots/area/markers.js +39 -0
  313. package/dist/plots/bar/Plot.svelte +33 -438
  314. package/dist/plots/bar/Plot.svelte.d.ts +5 -8
  315. package/dist/plots/bar/defaults.d.ts +9 -0
  316. package/dist/plots/bar/defaults.js +88 -0
  317. package/dist/plots/bar/markers.d.ts +45 -0
  318. package/dist/plots/bar/markers.js +233 -0
  319. package/dist/plots/box/BoxSummaries.d.ts +19 -0
  320. package/dist/plots/box/BoxSummaries.js +101 -0
  321. package/dist/plots/box/Plot.svelte +42 -0
  322. package/dist/plots/box/Plot.svelte.d.ts +26 -0
  323. package/dist/plots/box/defaults.d.ts +12 -0
  324. package/dist/plots/box/defaults.js +34 -0
  325. package/dist/plots/box/markers.d.ts +12 -0
  326. package/dist/plots/box/markers.js +34 -0
  327. package/dist/plots/geo/Core.svelte +151 -0
  328. package/dist/plots/geo/Core.svelte.d.ts +25 -0
  329. package/dist/plots/geo/Plot.svelte +103 -324
  330. package/dist/plots/geo/Plot.svelte.d.ts +5 -9
  331. package/dist/plots/geo/defaults.d.ts +4 -0
  332. package/dist/plots/geo/defaults.js +16 -0
  333. package/dist/plots/geo/features.svelte.d.ts +5 -0
  334. package/dist/plots/geo/features.svelte.js +44 -0
  335. package/dist/plots/geo/phases/data.d.ts +6 -0
  336. package/dist/plots/geo/phases/data.js +26 -0
  337. package/dist/plots/geo/phases/hover.d.ts +9 -0
  338. package/dist/plots/geo/phases/hover.js +45 -0
  339. package/dist/plots/geo/phases/markers.d.ts +9 -0
  340. package/dist/plots/geo/phases/markers.js +75 -0
  341. package/dist/plots/geo/phases/scales.d.ts +10 -0
  342. package/dist/plots/geo/phases/scales.js +85 -0
  343. package/dist/plots/geo/phases/tooltip.d.ts +3 -0
  344. package/dist/plots/geo/phases/tooltip.js +5 -0
  345. package/dist/plots/geo/slices.d.ts +18 -0
  346. package/dist/plots/geo/slices.js +59 -0
  347. package/dist/plots/heatmap/Plot.svelte +55 -249
  348. package/dist/plots/heatmap/Plot.svelte.d.ts +5 -8
  349. package/dist/plots/heatmap/defaults.d.ts +11 -0
  350. package/dist/plots/heatmap/defaults.js +91 -0
  351. package/dist/plots/heatmap/markers.d.ts +17 -0
  352. package/dist/plots/heatmap/markers.js +142 -0
  353. package/dist/plots/histogram/Plot.svelte +45 -0
  354. package/dist/plots/histogram/Plot.svelte.d.ts +26 -0
  355. package/dist/plots/histogram/defaults.d.ts +9 -0
  356. package/dist/plots/histogram/defaults.js +87 -0
  357. package/dist/plots/histogram/markers.d.ts +18 -0
  358. package/dist/plots/histogram/markers.js +89 -0
  359. package/dist/plots/line/Plot.svelte +37 -268
  360. package/dist/plots/line/Plot.svelte.d.ts +3 -7
  361. package/dist/plots/line/defaults.d.ts +4 -0
  362. package/dist/plots/line/defaults.js +29 -0
  363. package/dist/plots/line/markers.d.ts +49 -0
  364. package/dist/plots/line/markers.js +199 -0
  365. package/dist/plots/pyramid/Plot.svelte +34 -362
  366. package/dist/plots/pyramid/Plot.svelte.d.ts +5 -8
  367. package/dist/plots/pyramid/defaults.d.ts +13 -0
  368. package/dist/plots/pyramid/defaults.js +87 -0
  369. package/dist/plots/pyramid/markers.d.ts +21 -0
  370. package/dist/plots/pyramid/markers.js +156 -0
  371. package/dist/plots/scatter/Plot.svelte +34 -288
  372. package/dist/plots/scatter/Plot.svelte.d.ts +5 -8
  373. package/dist/plots/scatter/defaults.d.ts +4 -0
  374. package/dist/plots/scatter/defaults.js +80 -0
  375. package/dist/plots/scatter/markers.d.ts +19 -0
  376. package/dist/plots/scatter/markers.js +129 -0
  377. package/dist/plots/utils/ChannelName.d.ts +9 -0
  378. package/dist/plots/utils/ChannelName.js +14 -0
  379. package/dist/plots/utils/accessors.d.ts +1 -1
  380. package/dist/plots/utils/accessors.js +4 -2
  381. package/dist/plots/utils/gaps.d.ts +14 -19
  382. package/dist/plots/utils/gaps.js +38 -18
  383. package/dist/plots/utils/geoAccessors.d.ts +8 -8
  384. package/dist/plots/utils/geoAccessors.js +16 -12
  385. package/dist/plots/utils/geoSegments.d.ts +24 -9
  386. package/dist/plots/utils/geoSegments.js +31 -11
  387. package/dist/plots/utils/segments.d.ts +5 -16
  388. package/dist/plots/utils/segments.js +40 -52
  389. package/dist/plots/utils/tiles.d.ts +9 -9
  390. package/dist/plots/utils/tiles.js +35 -25
  391. package/dist/plots/utils/topojson.d.ts +1 -1
  392. package/dist/plots/utils/topojson.js +3 -3
  393. package/dist/stores/device.js +2 -4
  394. package/dist/types/configuration/styling.d.ts +174 -27
  395. package/dist/types/layout/box.d.ts +24 -0
  396. package/dist/types/layout/composer.d.ts +39 -0
  397. package/dist/types/layout/coordinates.d.ts +14 -14
  398. package/dist/types/layout/facet.d.ts +44 -22
  399. package/dist/types/layout/figure.d.ts +7 -0
  400. package/dist/types/layout/geometry.d.ts +6 -2
  401. package/dist/types/layout/grid.d.ts +66 -0
  402. package/dist/types/layout/hover.d.ts +48 -0
  403. package/dist/types/layout/legend.d.ts +256 -55
  404. package/dist/types/layout/mapping.d.ts +68 -0
  405. package/dist/types/layout/plot.d.ts +41 -0
  406. package/dist/types/layout/scales.d.ts +108 -24
  407. package/dist/types/layout/scales.js +19 -1
  408. package/dist/types/layout/statistics/bollinger.d.ts +18 -0
  409. package/dist/types/layout/statistics/box.d.ts +8 -0
  410. package/dist/types/layout/statistics/box.js +1 -0
  411. package/dist/types/layout/statistics/density.d.ts +27 -0
  412. package/dist/types/layout/statistics/density.js +1 -0
  413. package/dist/types/layout/statistics/index.d.ts +46 -0
  414. package/dist/types/layout/statistics/index.js +1 -0
  415. package/dist/types/layout/statistics/movingAverage.d.ts +12 -0
  416. package/dist/types/layout/statistics/movingAverage.js +1 -0
  417. package/dist/types/layout/statistics/regression.d.ts +20 -0
  418. package/dist/types/layout/statistics/regression.js +1 -0
  419. package/dist/types/layout/styles.d.ts +24 -35
  420. package/dist/types/layout/timeline.d.ts +62 -6
  421. package/dist/types/layout/tooltip.d.ts +7 -85
  422. package/dist/types/markers/all.d.ts +3 -4
  423. package/dist/types/markers/axis/area.d.ts +12 -0
  424. package/dist/types/markers/axis/area.js +1 -0
  425. package/dist/types/markers/axis/arrow.d.ts +15 -0
  426. package/dist/types/markers/axis/arrow.js +1 -0
  427. package/dist/types/markers/axis/axisBasedMarkersConfig.d.ts +29 -0
  428. package/dist/types/markers/axis/axisBasedMarkersConfig.js +1 -0
  429. package/dist/types/markers/axis/bar.d.ts +18 -0
  430. package/dist/types/markers/axis/bar.js +1 -0
  431. package/dist/types/markers/axis/bollinger.d.ts +6 -0
  432. package/dist/types/markers/axis/bollinger.js +1 -0
  433. package/dist/types/markers/axis/box.d.ts +14 -0
  434. package/dist/types/markers/axis/box.js +1 -0
  435. package/dist/types/markers/axis/brush.d.ts +28 -0
  436. package/dist/types/markers/axis/brush.js +1 -0
  437. package/dist/types/markers/axis/cell.d.ts +9 -0
  438. package/dist/types/markers/axis/cell.js +1 -0
  439. package/dist/types/markers/axis/component.d.ts +9 -0
  440. package/dist/types/markers/axis/component.js +1 -0
  441. package/dist/types/markers/axis/curveName.d.ts +2 -0
  442. package/dist/types/markers/axis/curveName.js +1 -0
  443. package/dist/types/markers/axis/delaunayLink.d.ts +7 -0
  444. package/dist/types/markers/axis/delaunayLink.js +1 -0
  445. package/dist/types/markers/axis/delaunayMesh.d.ts +7 -0
  446. package/dist/types/markers/axis/delaunayMesh.js +1 -0
  447. package/dist/types/markers/axis/delta.d.ts +27 -0
  448. package/dist/types/markers/axis/delta.js +1 -0
  449. package/dist/types/markers/axis/density.d.ts +12 -0
  450. package/dist/types/markers/axis/density.js +1 -0
  451. package/dist/types/markers/axis/difference.d.ts +12 -0
  452. package/dist/types/markers/axis/difference.js +1 -0
  453. package/dist/types/markers/axis/hover.d.ts +21 -0
  454. package/dist/types/markers/axis/hover.js +1 -0
  455. package/dist/types/markers/axis/hull.d.ts +7 -0
  456. package/dist/types/markers/axis/hull.js +1 -0
  457. package/dist/types/markers/axis/image.d.ts +12 -0
  458. package/dist/types/markers/axis/image.js +1 -0
  459. package/dist/types/markers/axis/line.d.ts +7 -0
  460. package/dist/types/markers/axis/line.js +1 -0
  461. package/dist/types/markers/axis/raster.d.ts +18 -0
  462. package/dist/types/markers/axis/raster.js +1 -0
  463. package/dist/types/markers/axis/rect.d.ts +15 -0
  464. package/dist/types/markers/axis/rect.js +1 -0
  465. package/dist/types/markers/axis/regression.d.ts +6 -0
  466. package/dist/types/markers/axis/regression.js +1 -0
  467. package/dist/types/markers/axis/rule.d.ts +15 -0
  468. package/dist/types/markers/axis/rule.js +1 -0
  469. package/dist/types/markers/axis/tick.d.ts +8 -0
  470. package/dist/types/markers/axis/tick.js +1 -0
  471. package/dist/types/markers/axis/trail.d.ts +14 -0
  472. package/dist/types/markers/axis/trail.js +1 -0
  473. package/dist/types/markers/axis/voronoi.d.ts +7 -0
  474. package/dist/types/markers/axis/voronoi.js +1 -0
  475. package/dist/types/markers/axis/voronoiMesh.d.ts +7 -0
  476. package/dist/types/markers/axis/voronoiMesh.js +1 -0
  477. package/dist/types/markers/axis/waffle.d.ts +13 -0
  478. package/dist/types/markers/axis/waffle.js +1 -0
  479. package/dist/types/markers/basic/basicMarkersConfig.d.ts +4 -0
  480. package/dist/types/markers/basic/basicMarkersConfig.js +1 -0
  481. package/dist/types/markers/basic/dot.d.ts +9 -0
  482. package/dist/types/markers/basic/dot.js +1 -0
  483. package/dist/types/markers/basic/text.d.ts +60 -0
  484. package/dist/types/markers/basic/text.js +1 -0
  485. package/dist/types/markers/basic.d.ts +4 -0
  486. package/dist/types/markers/basic.js +1 -0
  487. package/dist/types/markers/channels/commonMarkerConfig.d.ts +26 -0
  488. package/dist/types/markers/channels/commonMarkerConfig.js +1 -0
  489. package/dist/types/markers/channels/commonMarkerConfigWithArea.d.ts +6 -0
  490. package/dist/types/markers/channels/commonMarkerConfigWithArea.js +1 -0
  491. package/dist/types/markers/channels/commonMarkerConfigWithColor.d.ts +5 -0
  492. package/dist/types/markers/channels/commonMarkerConfigWithColor.js +1 -0
  493. package/dist/types/markers/channels/commonMarkerConfigWithInterval.d.ts +9 -0
  494. package/dist/types/markers/channels/commonMarkerConfigWithInterval.js +1 -0
  495. package/dist/types/markers/channels/commonMarkerConfigWithRadius.d.ts +5 -0
  496. package/dist/types/markers/channels/commonMarkerConfigWithRadius.js +1 -0
  497. package/dist/types/markers/channels/commonMarkerConfigWithSymbol.d.ts +5 -0
  498. package/dist/types/markers/channels/commonMarkerConfigWithSymbol.js +1 -0
  499. package/dist/types/markers/channels/commonMarkerConfigWithWeight.d.ts +5 -0
  500. package/dist/types/markers/channels/commonMarkerConfigWithWeight.js +1 -0
  501. package/dist/types/markers/common.d.ts +30 -103
  502. package/dist/types/markers/common.js +29 -1
  503. package/dist/types/markers/geo/contour.d.ts +27 -0
  504. package/dist/types/markers/geo/contour.js +1 -0
  505. package/dist/types/markers/geo/features.d.ts +12 -0
  506. package/dist/types/markers/geo/features.js +1 -0
  507. package/dist/types/markers/geo/geoComponent.d.ts +7 -0
  508. package/dist/types/markers/geo/geoComponent.js +1 -0
  509. package/dist/types/markers/geo/geoHover.d.ts +6 -0
  510. package/dist/types/markers/geo/geoHover.js +1 -0
  511. package/dist/types/markers/geo/geoMarkersConfig.d.ts +11 -0
  512. package/dist/types/markers/geo/geoMarkersConfig.js +1 -0
  513. package/dist/types/markers/geo/graticule.d.ts +11 -0
  514. package/dist/types/markers/geo/graticule.js +1 -0
  515. package/dist/types/markers/geo/inset.d.ts +50 -0
  516. package/dist/types/markers/geo/inset.js +1 -0
  517. package/dist/types/markers/geo/link.d.ts +13 -0
  518. package/dist/types/markers/geo/link.js +1 -0
  519. package/dist/types/markers/geo/sphere.d.ts +11 -0
  520. package/dist/types/markers/geo/sphere.js +1 -0
  521. package/dist/types/markers/geo/vector.d.ts +17 -0
  522. package/dist/types/markers/geo/vector.js +1 -0
  523. package/dist/types/markers/geo.d.ts +10 -212
  524. package/dist/types/markers/geo.js +10 -1
  525. package/dist/types/markers/traits.d.ts +22 -0
  526. package/dist/types/markers/traits.js +1 -0
  527. package/dist/types/misc/easing.js +1 -0
  528. package/dist/types/misc/viewport.js +1 -0
  529. package/dist/types/phases/data/axes.d.ts +18 -0
  530. package/dist/types/phases/data/axes.js +1 -0
  531. package/dist/types/phases/data/phase.d.ts +26 -0
  532. package/dist/types/phases/data/phase.js +2 -0
  533. package/dist/types/phases/facet/phase.d.ts +18 -0
  534. package/dist/types/phases/facet/phase.js +1 -0
  535. package/dist/types/phases/hover/phase.d.ts +40 -0
  536. package/dist/types/phases/hover/phase.js +1 -0
  537. package/dist/types/phases/index.d.ts +14 -0
  538. package/dist/types/phases/index.js +1 -0
  539. package/dist/types/phases/kind.d.ts +59 -0
  540. package/dist/types/phases/kind.js +1 -0
  541. package/dist/types/phases/mapping/phase.d.ts +5 -0
  542. package/dist/types/phases/mapping/phase.js +1 -0
  543. package/dist/types/phases/markers/phase.d.ts +13 -0
  544. package/dist/types/phases/markers/phase.js +1 -0
  545. package/dist/types/phases/pipeline.d.ts +10 -0
  546. package/dist/types/phases/pipeline.js +1 -0
  547. package/dist/types/phases/scales/phase.d.ts +26 -0
  548. package/dist/types/phases/scales/phase.js +1 -0
  549. package/dist/types/phases/sharedScales/phase.d.ts +12 -0
  550. package/dist/types/phases/sharedScales/phase.js +1 -0
  551. package/dist/types/phases/stage.d.ts +12 -0
  552. package/dist/types/phases/stage.js +1 -0
  553. package/dist/types/phases/state.d.ts +76 -0
  554. package/dist/types/phases/state.js +1 -0
  555. package/dist/types/phases/statistics/phase.d.ts +43 -0
  556. package/dist/types/phases/statistics/phase.js +1 -0
  557. package/dist/types/phases/statistics/source.d.ts +20 -0
  558. package/dist/types/phases/statistics/source.js +7 -0
  559. package/dist/types/phases/styles/phase.d.ts +24 -0
  560. package/dist/types/phases/styles/phase.js +1 -0
  561. package/dist/types/phases/transforms/adapter.d.ts +27 -0
  562. package/dist/types/phases/transforms/adapter.js +1 -0
  563. package/dist/types/phases/transforms/phase.d.ts +50 -0
  564. package/dist/types/phases/transforms/phase.js +1 -0
  565. package/dist/types/plots/area/props.d.ts +10 -0
  566. package/dist/types/plots/area/props.js +1 -0
  567. package/dist/types/plots/area/state.d.ts +6 -0
  568. package/dist/types/plots/area/state.js +1 -0
  569. package/dist/types/plots/bar/props.d.ts +10 -0
  570. package/dist/types/plots/bar/props.js +1 -0
  571. package/dist/types/plots/bar/state.d.ts +6 -0
  572. package/dist/types/plots/bar/state.js +1 -0
  573. package/dist/types/plots/box/props.d.ts +10 -0
  574. package/dist/types/plots/box/props.js +1 -0
  575. package/dist/types/plots/box/state.d.ts +23 -0
  576. package/dist/types/plots/box/state.js +1 -0
  577. package/dist/types/plots/camera.d.ts +7 -17
  578. package/dist/types/plots/constants.d.ts +16 -8
  579. package/dist/types/plots/data/common.d.ts +25 -17
  580. package/dist/types/plots/data/geo.d.ts +26 -12
  581. package/dist/types/plots/gaps.d.ts +19 -38
  582. package/dist/types/plots/geo/props.d.ts +23 -0
  583. package/dist/types/plots/geo/props.js +1 -0
  584. package/dist/types/plots/geo/state.d.ts +82 -0
  585. package/dist/types/plots/geo/state.js +1 -0
  586. package/dist/types/plots/heatmap/props.d.ts +10 -0
  587. package/dist/types/plots/heatmap/props.js +1 -0
  588. package/dist/types/plots/heatmap/state.d.ts +28 -0
  589. package/dist/types/plots/heatmap/state.js +1 -0
  590. package/dist/types/plots/histogram/props.d.ts +18 -0
  591. package/dist/types/plots/histogram/props.js +1 -0
  592. package/dist/types/plots/histogram/state.d.ts +6 -0
  593. package/dist/types/plots/histogram/state.js +1 -0
  594. package/dist/types/plots/line/props.d.ts +10 -0
  595. package/dist/types/plots/line/props.js +1 -0
  596. package/dist/types/plots/line/state.d.ts +9 -0
  597. package/dist/types/plots/line/state.js +1 -0
  598. package/dist/types/plots/props.d.ts +145 -35
  599. package/dist/types/plots/pyramid/props.d.ts +10 -0
  600. package/dist/types/plots/pyramid/props.js +1 -0
  601. package/dist/types/plots/pyramid/state.d.ts +16 -0
  602. package/dist/types/plots/pyramid/state.js +1 -0
  603. package/dist/types/plots/scatter/props.d.ts +10 -0
  604. package/dist/types/plots/scatter/props.js +1 -0
  605. package/dist/types/plots/scatter/state.d.ts +6 -0
  606. package/dist/types/plots/scatter/state.js +1 -0
  607. package/dist/types/plots/segments/common.d.ts +1 -1
  608. package/dist/types/plots/segments/config.d.ts +12 -6
  609. package/dist/types/plots/styling.d.ts +5 -5
  610. package/dist/types/transforms/bin.d.ts +84 -0
  611. package/dist/types/transforms/bin.js +28 -0
  612. package/dist/types/transforms/bollinger.d.ts +21 -0
  613. package/dist/types/transforms/bollinger.js +1 -0
  614. package/dist/types/transforms/common.d.ts +29 -0
  615. package/dist/types/transforms/common.js +16 -0
  616. package/dist/types/transforms/density.d.ts +45 -0
  617. package/dist/types/transforms/density.js +10 -0
  618. package/dist/types/transforms/filter.d.ts +12 -0
  619. package/dist/types/transforms/filter.js +14 -0
  620. package/dist/types/transforms/group.d.ts +70 -0
  621. package/dist/types/transforms/group.js +8 -0
  622. package/dist/types/transforms/index.d.ts +36 -0
  623. package/dist/types/transforms/index.js +1 -0
  624. package/dist/types/transforms/interval.d.ts +21 -0
  625. package/dist/types/transforms/interval.js +14 -0
  626. package/dist/types/transforms/jitter.d.ts +34 -0
  627. package/dist/types/transforms/jitter.js +1 -0
  628. package/dist/types/transforms/map.d.ts +24 -0
  629. package/dist/types/transforms/map.js +1 -0
  630. package/dist/types/transforms/normalize.d.ts +36 -0
  631. package/dist/types/transforms/normalize.js +1 -0
  632. package/dist/types/transforms/select.d.ts +15 -0
  633. package/dist/types/transforms/select.js +1 -0
  634. package/dist/types/transforms/shift.d.ts +20 -0
  635. package/dist/types/transforms/shift.js +1 -0
  636. package/dist/types/transforms/sort.d.ts +31 -0
  637. package/dist/types/transforms/sort.js +14 -0
  638. package/dist/types/transforms/stack.d.ts +64 -0
  639. package/dist/types/transforms/stack.js +12 -0
  640. package/dist/types/transforms/window.d.ts +29 -0
  641. package/dist/types/transforms/window.js +1 -0
  642. package/dist/utils/ContinuousDomain.d.ts +12 -0
  643. package/dist/utils/ContinuousDomain.js +19 -0
  644. package/dist/utils/Interpolation.d.ts +26 -0
  645. package/dist/utils/Interpolation.js +65 -0
  646. package/dist/utils/{color.d.ts → color/contrast.d.ts} +0 -5
  647. package/dist/utils/color/contrast.js +40 -0
  648. package/dist/utils/color/cssColor.d.ts +4 -0
  649. package/dist/utils/color/cssColor.js +77 -0
  650. package/dist/utils/color/index.d.ts +3 -0
  651. package/dist/utils/color/index.js +3 -0
  652. package/dist/utils/color/ramp.d.ts +17 -0
  653. package/dist/utils/color/ramp.js +110 -0
  654. package/dist/utils/grouping.d.ts +9 -5
  655. package/dist/utils/grouping.js +19 -10
  656. package/dist/utils/merge.d.ts +7 -0
  657. package/dist/utils/merge.js +17 -0
  658. package/dist/utils/opacity.d.ts +9 -0
  659. package/dist/utils/opacity.js +38 -0
  660. package/dist/utils/symbol.d.ts +31 -0
  661. package/dist/utils/symbol.js +92 -0
  662. package/docs/architecture.md +137 -0
  663. package/docs/chrome.md +99 -0
  664. package/docs/composer.md +69 -0
  665. package/docs/concepts.md +99 -0
  666. package/docs/development.md +103 -0
  667. package/docs/facets.md +123 -0
  668. package/docs/geo.md +151 -0
  669. package/docs/getting-started.md +78 -0
  670. package/docs/legend.md +153 -0
  671. package/docs/markers.md +117 -0
  672. package/docs/plots.md +284 -0
  673. package/docs/scales.md +95 -0
  674. package/docs/state.md +71 -0
  675. package/docs/styles-and-segments.md +269 -0
  676. package/docs/theming.md +226 -0
  677. package/docs/timeline.md +128 -0
  678. package/docs/tooltip-and-hover.md +128 -0
  679. package/docs/transforms-and-statistics.md +118 -0
  680. package/examples/BarValues.svelte +14 -0
  681. package/examples/Box.svelte +7 -0
  682. package/examples/Chrome.svelte +17 -0
  683. package/examples/ChromeOrder.svelte +18 -0
  684. package/examples/Composer.svelte +23 -0
  685. package/examples/CustomTooltip.svelte +44 -0
  686. package/examples/Facets.svelte +15 -0
  687. package/examples/FacetsCarousel.svelte +14 -0
  688. package/examples/FacetsRowsCols.svelte +23 -0
  689. package/examples/FirstPlot.svelte +7 -0
  690. package/examples/Gaps.svelte +21 -0
  691. package/examples/GroupedBars.svelte +15 -0
  692. package/examples/Heatmap.svelte +7 -0
  693. package/examples/HeatmapSegments.svelte +26 -0
  694. package/examples/Histogram.svelte +14 -0
  695. package/examples/HorizontalBars.svelte +15 -0
  696. package/examples/LegendReader.svelte +8 -0
  697. package/examples/LegendSections.svelte +27 -0
  698. package/examples/LegendToggle.svelte +25 -0
  699. package/examples/LineByRegion.svelte +18 -0
  700. package/examples/LineDates.svelte +15 -0
  701. package/examples/Markers.svelte +27 -0
  702. package/examples/MovingAverage.svelte +15 -0
  703. package/examples/Pyramid.svelte +7 -0
  704. package/examples/Regression.svelte +14 -0
  705. package/examples/ResponsiveLine.svelte +37 -0
  706. package/examples/Scales.svelte +26 -0
  707. package/examples/Scatter.svelte +16 -0
  708. package/examples/SegmentHighlight.svelte +22 -0
  709. package/examples/Segments.svelte +25 -0
  710. package/examples/SegmentsBySeries.svelte +25 -0
  711. package/examples/StackedArea.svelte +16 -0
  712. package/examples/StackedBars.svelte +15 -0
  713. package/examples/TimelinePlayer.svelte +21 -0
  714. package/examples/TimelineRule.svelte +19 -0
  715. package/examples/Tooltip.svelte +19 -0
  716. package/examples/TooltipCard.svelte +86 -0
  717. package/examples/ValueLabels.svelte +21 -0
  718. package/examples/data.ts +324 -0
  719. package/llms-full.txt +142 -0
  720. package/llms.txt +77 -0
  721. package/package.json +42 -5
  722. package/dist/charts/BaseChart.svelte +0 -149
  723. package/dist/charts/BaseChart.svelte.d.ts +0 -47
  724. package/dist/charts/bar/Chart.svelte +0 -110
  725. package/dist/charts/bar/Chart.svelte.d.ts +0 -26
  726. package/dist/charts/container/ChartContainer.svelte +0 -137
  727. package/dist/charts/container/ChartContainer.svelte.d.ts +0 -16
  728. package/dist/charts/heatmap/Chart.svelte +0 -114
  729. package/dist/charts/line/Chart.svelte +0 -112
  730. package/dist/charts/line/Chart.svelte.d.ts +0 -26
  731. package/dist/charts/pyramid/Chart.svelte +0 -134
  732. package/dist/charts/pyramid/Chart.svelte.d.ts +0 -30
  733. package/dist/charts/scatter/Chart.svelte +0 -95
  734. package/dist/charts/scatter/Chart.svelte.d.ts +0 -28
  735. package/dist/layout/coordinates/margins.d.ts +0 -16
  736. package/dist/layout/coordinates/margins.js +0 -11
  737. package/dist/layout/legend/interaction.svelte.d.ts +0 -15
  738. package/dist/layout/legend/interaction.svelte.js +0 -32
  739. package/dist/layout/plot/BasePlotLayout.svelte +0 -332
  740. package/dist/layout/plot/BasePlotLayout.svelte.d.ts +0 -122
  741. package/dist/layout/plot/margins.d.ts +0 -18
  742. package/dist/layout/plot/margins.js +0 -15
  743. package/dist/layout/plot/measureText.d.ts +0 -4
  744. package/dist/layout/plot/measureText.js +0 -19
  745. package/dist/layout/scales/buildScale.d.ts +0 -25
  746. package/dist/layout/scales/buildScale.js +0 -90
  747. package/dist/layout/scales/niceDomain.d.ts +0 -23
  748. package/dist/layout/scales/niceDomain.js +0 -59
  749. package/dist/layout/tooltip/TooltipLayout.svelte +0 -51
  750. package/dist/layout/tooltip/TooltipLayout.svelte.d.ts +0 -45
  751. package/dist/layout/tooltip/controller.svelte.d.ts +0 -61
  752. package/dist/layout/tooltip/controller.svelte.js +0 -173
  753. package/dist/layout/tooltip/hover.svelte.d.ts +0 -7
  754. package/dist/layout/tooltip/hover.svelte.js +0 -28
  755. package/dist/layout/tooltip/resolveTooltipPlacement.d.ts +0 -24
  756. package/dist/layout/tooltip/resolveTooltipPlacement.js +0 -49
  757. package/dist/layout/tooltip/utils.d.ts +0 -49
  758. package/dist/layout/tooltip/utils.js +0 -82
  759. package/dist/markers/CellMarker.svelte +0 -21
  760. package/dist/markers/ContourClipMarker.svelte +0 -77
  761. package/dist/markers/ContourMarker.svelte +0 -28
  762. package/dist/markers/DeltaMarker.svelte +0 -109
  763. package/dist/markers/DotMarker.svelte +0 -70
  764. package/dist/markers/GeoFeaturesMarker.svelte +0 -19
  765. package/dist/markers/GeoHoverMarker.svelte +0 -25
  766. package/dist/markers/GraticuleMarker.svelte +0 -18
  767. package/dist/markers/HoverMarker.svelte +0 -212
  768. package/dist/markers/LineMarker.svelte +0 -19
  769. package/dist/markers/LinkMarker.svelte +0 -42
  770. package/dist/markers/PeakMarker.svelte +0 -80
  771. package/dist/markers/PeakMarker.svelte.d.ts +0 -13
  772. package/dist/markers/RuleMarker.svelte +0 -24
  773. package/dist/markers/SphereMarker.svelte +0 -15
  774. package/dist/markers/TextMarker.svelte +0 -62
  775. package/dist/markers/VectorMarker.svelte +0 -20
  776. package/dist/plots/bar/ValueLabels.svelte +0 -149
  777. package/dist/plots/bar/ValueLabels.svelte.d.ts +0 -58
  778. package/dist/plots/bar/buildBarMarkers.d.ts +0 -27
  779. package/dist/plots/bar/buildBarMarkers.js +0 -151
  780. package/dist/plots/bar/hoverPoints.d.ts +0 -15
  781. package/dist/plots/bar/hoverPoints.js +0 -37
  782. package/dist/plots/bar/layout.svelte.d.ts +0 -42
  783. package/dist/plots/bar/layout.svelte.js +0 -182
  784. package/dist/plots/geo/buildGeoMarkers.d.ts +0 -33
  785. package/dist/plots/geo/buildGeoMarkers.js +0 -47
  786. package/dist/plots/heatmap/ValueLabels.svelte +0 -56
  787. package/dist/plots/heatmap/buildCellMarkers.d.ts +0 -21
  788. package/dist/plots/heatmap/buildCellMarkers.js +0 -25
  789. package/dist/plots/line/ValueLabels.svelte +0 -269
  790. package/dist/plots/line/ValueLabels.svelte.d.ts +0 -52
  791. package/dist/plots/line/buildGapMarkers.d.ts +0 -28
  792. package/dist/plots/line/buildGapMarkers.js +0 -74
  793. package/dist/plots/line/buildLineMarkers.d.ts +0 -16
  794. package/dist/plots/line/buildLineMarkers.js +0 -56
  795. package/dist/plots/line/valueLabelMargin.d.ts +0 -19
  796. package/dist/plots/line/valueLabelMargin.js +0 -65
  797. package/dist/plots/pyramid/ValueLabels.svelte +0 -139
  798. package/dist/plots/pyramid/ValueLabels.svelte.d.ts +0 -56
  799. package/dist/plots/pyramid/buildPyramidBarMarkers.d.ts +0 -26
  800. package/dist/plots/pyramid/buildPyramidBarMarkers.js +0 -72
  801. package/dist/plots/scatter/ValueLabels.svelte +0 -163
  802. package/dist/plots/scatter/ValueLabels.svelte.d.ts +0 -52
  803. package/dist/plots/scatter/buildScatterMarkers.d.ts +0 -12
  804. package/dist/plots/scatter/buildScatterMarkers.js +0 -36
  805. package/dist/plots/scatter/resolveRadiusPaddedDomain.d.ts +0 -10
  806. package/dist/plots/scatter/resolveRadiusPaddedDomain.js +0 -23
  807. package/dist/plots/utils/categoricalAxisMargin.d.ts +0 -14
  808. package/dist/plots/utils/categoricalAxisMargin.js +0 -20
  809. package/dist/plots/utils/declutter.d.ts +0 -120
  810. package/dist/plots/utils/declutter.js +0 -240
  811. package/dist/plots/utils/labelOverflow.svelte.d.ts +0 -107
  812. package/dist/plots/utils/labelOverflow.svelte.js +0 -257
  813. package/dist/plots/utils/legendDisabled.d.ts +0 -27
  814. package/dist/plots/utils/legendDisabled.js +0 -68
  815. package/dist/plots/utils/valueLabelMargin.d.ts +0 -67
  816. package/dist/plots/utils/valueLabelMargin.js +0 -60
  817. package/dist/types/charts/common.d.ts +0 -22
  818. package/dist/types/charts/props.d.ts +0 -50
  819. package/dist/types/markers/base.d.ts +0 -45
  820. package/dist/types/markers/line.d.ts +0 -34
  821. package/dist/types/markers/props.d.ts +0 -11
  822. package/dist/types/plots/data/scatter.d.ts +0 -13
  823. package/dist/utils/color.js +0 -141
  824. package/dist/utils/delta.d.ts +0 -12
  825. package/dist/utils/delta.js +0 -69
  826. package/dist/utils/edgeAwareAnchor.d.ts +0 -34
  827. package/dist/utils/edgeAwareAnchor.js +0 -60
  828. package/dist/utils/interpolate.d.ts +0 -31
  829. package/dist/utils/interpolate.js +0 -71
  830. /package/dist/types/{charts/common.js → layout/box.js} +0 -0
  831. /package/dist/types/{charts/interpolate.js → layout/composer.js} +0 -0
  832. /package/dist/types/{charts/props.js → layout/figure.js} +0 -0
  833. /package/dist/types/{markers/base.js → layout/grid.js} +0 -0
  834. /package/dist/types/{markers/line.js → layout/hover.js} +0 -0
  835. /package/dist/types/{markers/props.js → layout/mapping.js} +0 -0
  836. /package/dist/types/{plots/data/scatter.js → layout/plot.js} +0 -0
  837. /package/dist/types/{viewport.js → layout/statistics/bollinger.js} +0 -0
  838. /package/dist/types/{charts/interpolate.d.ts → misc/easing.d.ts} +0 -0
  839. /package/dist/types/{viewport.d.ts → misc/viewport.d.ts} +0 -0
@@ -1,446 +1,41 @@
1
1
  <script lang="ts" generics="TData extends Record<string, unknown>">
2
- import { paletteColor } from '../../utils/color';
3
- import { buildSeries } from '../../utils/grouping';
4
- import { getLegendInteraction } from '../../layout/legend/interaction.svelte';
5
- import {
6
- disabledFillOverride,
7
- resolveEffectiveDisabledStyle,
8
- omitDisabledSeries,
9
- buildSeriesColorIndex
10
- } from '../utils/legendDisabled';
11
- import { SvelteMap } from 'svelte/reactivity';
12
- import { resolveAccessor } from '../utils/accessors';
13
- import { getConfiguration } from '../../configuration/config.svelte';
14
- import {
15
- buildGroupedSeries,
16
- validateSegments,
17
- buildScopedMarkerGroups
18
- } from '../utils/segments';
19
- import { isGapValue } from '../utils/gaps';
20
- import { niceDomain, naturalTickCount } from '../../layout/scales/niceDomain';
21
- import { AUTO_MARGIN_ESTIMATE } from '../../layout/plot/margins';
22
- import { createBarLayout } from './layout.svelte';
23
- import {
24
- createLabelMarginTracker,
25
- halfDimensionOverflowCap
26
- } from '../utils/labelOverflow.svelte';
27
- import { estimateValueLabelMargin } from '../utils/valueLabelMargin';
28
- import { buildHoverPoints } from './hoverPoints';
29
- import { buildBarMarkers } from './buildBarMarkers';
30
- import { resolveGapsForSeries, resolveDiscreteGapFills } from '../utils/gaps';
31
- import ValueLabels from './ValueLabels.svelte';
32
- import BasePlotLayout from '../../layout/plot/BasePlotLayout.svelte';
33
- import {
34
- hasHoverMarker,
35
- resolveHoverStrategy,
36
- resolveHoverSync
37
- } from '../../layout/tooltip/utils';
38
- import type { AxisBasedMarkersConfig } from '../../types/markers/common';
39
- import type { BasePlotProps } from '../../types/plots/props';
40
- import type { AxisValue, AxisScale, AxisBasedScalesConfig } from '../../types/layout/scales';
41
- import type { Series, SeriesProps, DataProps } from '../../types/plots/data/common';
42
- import type { GapsAwarePlotStylesConfig } from '../../types/layout/styles';
43
- import type { ValueAnchor } from '../../types/plots/constants';
44
- import type { BarSegmentStyle } from '../../types/plots/segments/common';
45
- import type { LegendDisabledStyle } from '../../types/layout/legend';
46
- import type { MarginOverflow } from '../utils/labelOverflow.svelte';
2
+ import Plot from '../../layout/plot/Plot.svelte';
3
+ import { buildBarDefaults } from './defaults';
4
+ import type { BarPlotProps, BarPlotCoreProps } from '../../types/plots/bar/props';
47
5
 
48
6
  /**
49
- * A bar chart, vertical by default. Accepts either a pre-built `series`
50
- * array or flat `data/x/y/z` props — mirrors the line/heatmap plot contract
51
- * so the chart-level container/timeline/facet/legend wrap it unchanged.
7
+ * A bar plot: vertical when its categories run along `x`, horizontal when they run along `y` (the value then on `x`, as in svelteplot's `BarX`). Draws from pre-built `series` or flat `data` rows.
8
+ * Optional chrome (`title`, `subtitle`, `caption`, `header`, `footer`,
9
+ * `legend`) frames it; `timeline` and `facet` slice its `data` rows.
52
10
  */
53
- type Props = BasePlotProps<
54
- SeriesProps<TData> | DataProps<TData>,
55
- TData,
56
- GapsAwarePlotStylesConfig<BarSegmentStyle>,
57
- BarSegmentStyle,
58
- AxisBasedMarkersConfig,
59
- AxisBasedScalesConfig<TData>
60
- >;
61
-
62
11
  let {
63
- width,
64
- height,
65
- series,
66
- data,
67
- x,
68
- y,
69
- z,
70
- styles = {},
71
- segments = {},
72
- markers = [],
73
- scales = {},
74
- margins,
75
- tooltip = undefined
76
- }: Props = $props();
77
-
78
- $effect(() => {
79
- validateSegments(segments);
80
- });
81
-
82
- const cfg = $derived(getConfiguration());
83
- const legendInteraction = $derived(getLegendInteraction());
84
- // Unfiltered series list, for stable per-name color indexing.
85
- const fullSeries = $derived(series ?? buildSeries(data!, x!, y!, z));
86
- const colorIndex = $derived(buildSeriesColorIndex(fullSeries));
87
- function colorForSeries(name: string): string {
88
- return paletteColor(colorIndex.get(name) ?? 0, cfg.palette);
89
- }
90
- // Drops series toggled off with `disabled: { mode: 'omit' }`.
91
- const resolvedSeries = $derived(omitDisabledSeries(fullSeries, legendInteraction));
92
- const groupedSeries = $derived(
93
- // connect: false — bars are discrete; there's no visual gap between
94
- // adjacent categories to bridge (see buildGroupedSeries's own doc).
95
- buildGroupedSeries<Series<TData>, BarSegmentStyle>(resolvedSeries, segments, false)
96
- );
97
- const showVals = $derived(styles.values?.show ?? false);
98
- const formatValue = $derived(styles.values?.format ?? ((v: number) => `${v}`));
99
- const valAnchor = $derived<ValueAnchor>(styles.values?.anchor ?? 'outside');
100
-
101
- // Fills leading/internal/trailing missing-data holes with an
102
- // interpolated, distinctly-styled bar, resolved per series like
103
- // `segments` — see `GapsAwarePlotStylesConfig` (`types/layout/styles.ts`).
104
- const gaps = $derived(styles.gaps ?? {});
105
- const gapFillMaps = $derived(
106
- new Map(
107
- resolvedSeries.map((s) => [
108
- s.name,
109
- resolveDiscreteGapFills(s, resolveGapsForSeries(gaps, s.name))
110
- ])
111
- )
112
- );
113
-
114
- // `xAcc`/`yAcc` are always data-semantic (category/value) — independent of
115
- // which *visual* axis ends up drawing them, decided by `categoricalAxis`.
116
- const xAcc = $derived(resolveAccessor(resolvedSeries[0]?.x ?? ((d: TData) => d)));
117
- const yAcc = $derived(resolveAccessor(resolvedSeries[0]?.y ?? ((d: TData) => d)));
118
- const flat = $derived(resolvedSeries.flatMap((s) => s.data));
119
-
120
- const scopedGroups = $derived(
121
- buildScopedMarkerGroups<TData, Series<TData>, BarSegmentStyle>({
122
- groupedSeries,
123
- segments,
124
- colorFor: (series) => colorForSeries(series.name),
125
- segmentColorFor: (style, defaultColor) => style?.fill ?? defaultColor
126
- })
127
- );
128
-
129
- /**
130
- * Which visual axis draws the category, and therefore whether this renders
131
- * as vertical bars (`BarY`, category on X) or horizontal bars (`BarX`,
132
- * category on Y). Mirrors how pyramid/heatmap default an `AxisScale.type`
133
- * themselves: `scales.x`/`scales.y` always describe *that visual axis*
134
- * regardless of which data field lands there, so marking `scales.y.type:
135
- * 'categorical'` simply says "the category is drawn on Y this time" — x
136
- * defaults to categorical when neither is marked.
137
- */
138
- const categoricalAxis = $derived.by((): 'x' | 'y' => {
139
- const xCategorical = scales.x?.type === 'categorical';
140
- const yCategorical = scales.y?.type === 'categorical';
141
- if (xCategorical && yCategorical) {
142
- console.warn(
143
- "BarPlot: scales.x.type and scales.y.type can't both be 'categorical' — " +
144
- 'mark only one axis as the category axis. Defaulting to x.'
145
- );
146
- return 'x';
147
- }
148
- return yCategorical ? 'y' : 'x';
149
- });
150
- const isHorizontal = $derived(categoricalAxis === 'y');
151
-
152
- /**
153
- * `'categorical'` is our own sentinel (BarPlot-only), not a real svelteplot
154
- * scale type — svelteplot's x/y scales don't recognise it (it's valid only
155
- * for `color`/`symbol`). Strip it before the scale reaches svelteplot so it
156
- * auto-infers the real type (typically `point`/`band`) the same way it
157
- * already does when `type` is left unset entirely.
158
- */
159
- function stripCategoricalType(scale?: AxisScale<TData>): AxisScale<TData> | undefined {
160
- if (scale?.type !== 'categorical') return scale;
161
- const rest = { ...scale };
162
- delete rest.type;
163
- return rest;
164
- }
165
- // Backs the category axis's `paddingInner`/`paddingOuter` — the gap
166
- // *between* category groups — with the theme's `bar.paddingInner`/
167
- // `paddingOuter` default, when the plot doesn't set its own (or the
168
- // `padding` shorthand). BarPlot-only, unlike svelteplot's own hardcoded
169
- // 0.15 fallback for every band scale.
170
- function withDefaultPadding(scale?: AxisScale<TData>): AxisScale<TData> {
171
- return {
172
- ...scale,
173
- paddingInner: scale?.paddingInner ?? scale?.padding ?? cfg.bar.paddingInner,
174
- paddingOuter: scale?.paddingOuter ?? scale?.padding ?? cfg.bar.paddingOuter
175
- };
176
- }
177
-
178
- // Mirrors `createBarLayout`'s own `layout` derivation, read off the raw
179
- // `scales` prop rather than `resolvedScales` — `valueExtent`/
180
- // `withValueDomain` below feed `resolvedScales`, so reading it back off
181
- // `resolvedScales` (or `barLayout.layout`, built from it) would be circular.
182
- const seriesLayout = $derived(scales.z?.seriesLayout ?? 'overlap');
183
-
184
- /**
185
- * The value axis's real rendered range — `[0, ...]` for 'grouped'/'overlap'
186
- * (each row's own value, same range `svelteplot`'s own auto-domain would
187
- * find), but for 'stacked' the *per-category total* (every series summed),
188
- * which a plain per-row scan can't see. Needed so `withValueDomain` can
189
- * nice-widen the axis itself instead of deferring to `buildScale`'s
190
- * `nice: true` default, which only ever sees raw per-row values and would
191
- * under-widen a stacked total's real top.
192
- */
193
- const valueExtent = $derived.by((): [number, number] | undefined => {
194
- let lo = 0;
195
- let hi = 0;
196
- if (seriesLayout === 'stacked') {
197
- const totals = new SvelteMap<AxisValue, number>();
198
- for (const s of resolvedSeries) {
199
- const sx = resolveAccessor(s.x);
200
- const sy = resolveAccessor(s.y);
201
- for (const row of s.data) {
202
- const raw = sy(row);
203
- if (isGapValue(raw)) continue;
204
- const cat = sx(row);
205
- totals.set(cat, (totals.get(cat) ?? 0) + Number(raw));
206
- }
207
- }
208
- for (const total of totals.values()) {
209
- lo = Math.min(lo, total);
210
- hi = Math.max(hi, total);
211
- }
212
- } else {
213
- for (const s of resolvedSeries) {
214
- const sy = resolveAccessor(s.y);
215
- for (const row of s.data) {
216
- const raw = sy(row);
217
- if (isGapValue(raw)) continue;
218
- const v = Number(raw);
219
- lo = Math.min(lo, v);
220
- hi = Math.max(hi, v);
221
- }
222
- }
223
- }
224
- return hi > lo ? [lo, hi] : undefined;
225
- });
226
-
227
- /**
228
- * Nice-widens the value axis using `valueExtent` (baseline/stack-aware,
229
- * unlike `buildScale`'s own `nice: true` default) with an epsilon
230
- * tolerance — see `niceDomain` — so a stacked total that's supposed to
231
- * land exactly on a round number (a "parts of a whole" dataset, e.g.
232
- * percentages summing to 100) doesn't get bumped a full step further by
233
- * float noise from summing already-rounded parts. Skipped once the
234
- * caller sets their own `domain`/`ticks`/`nice`.
235
- */
236
- function withValueDomain(scale?: AxisScale<TData>): AxisScale<TData> | undefined {
237
- if (scale?.domain != null || scale?.ticks != null || scale?.nice != null) return scale;
238
- if (!valueExtent) return scale;
239
- const [lo, hi] = valueExtent;
240
- const spacing = isHorizontal ? 80 : 50;
241
- const marginEstimate = isHorizontal
242
- ? AUTO_MARGIN_ESTIMATE.left + AUTO_MARGIN_ESTIMATE.right
243
- : AUTO_MARGIN_ESTIMATE.top + AUTO_MARGIN_ESTIMATE.bottom;
244
- const span = Math.max(0, (isHorizontal ? width : height) - marginEstimate);
245
- const count = naturalTickCount(span, spacing, 2);
246
- return { ...scale, domain: niceDomain(lo, hi, count) };
247
- }
248
-
249
- // The single, fully-resolved scales object both BasePlotLayout (ticks,
250
- // grid, sort, the real svelteplot scale) and `createBarLayout` (the
251
- // grouped-bar-width estimate) read for everything — avoids keeping a
252
- // second, separately-patched copy of `scales.x`/`scales.y` in sync with
253
- // the one actually forwarded.
254
- const resolvedScales = $derived({
255
- ...scales,
256
- x: stripCategoricalType(
257
- categoricalAxis === 'x' ? withDefaultPadding(scales.x) : withValueDomain(scales.x)
258
- ),
259
- y: stripCategoricalType(
260
- categoricalAxis === 'y' ? withDefaultPadding(scales.y) : withValueDomain(scales.y)
261
- )
262
- });
263
-
264
- // The accessor feeding each *visual* channel — swapped from the
265
- // data-semantic xAcc/yAcc when the category is drawn on Y.
266
- const plotGetX = $derived(isHorizontal ? (d: TData) => Number(yAcc(d)) : xAcc);
267
- const plotGetY = $derived(isHorizontal ? xAcc : (d: TData) => Number(yAcc(d)));
268
-
269
- /**
270
- * Series-layout geometry (grouped/stacked offsets, band-width estimate,
271
- * value baseline) — the single source of truth shared by bar-segment
272
- * rendering, value labels, and hover markers below. See `layout.svelte.ts`.
273
- */
274
- const barLayout = createBarLayout<TData>({
275
- scales: () => resolvedScales,
276
- isHorizontal: () => isHorizontal,
277
- width: () => width,
278
- height: () => height,
279
- margins: () => margins,
280
- flat: () => flat,
281
- xAcc: () => xAcc,
282
- groupedSeries: () => groupedSeries,
283
- gapFillMaps: () => gapFillMaps
284
- });
285
-
286
- // `x`/`y` here are visual (matched against BasePlotLayout's own getX/getY,
287
- // which drive tick/domain computation and the Pointer's hit-testing) —
288
- // `row` (see BasePlotLayout/HoverPoint) is what lets the template recover the
289
- // semantic category regardless of which axis it landed on.
290
- const hoverIsolate = $derived(styles.values?.hoverIsolate ?? false);
291
-
292
- // A value label hovered while `styles.values.hoverIsolate` is on dims
293
- // every other series exactly like a legend toggle would — local to this
294
- // one `<Plot>` instance (not the shared HoverStore) so the gesture can't
295
- // leak into unrelated tooltip/crosshair behavior.
296
- let hoverIsolatedSeries = $state<string | null>(null);
297
-
298
- function effectiveDisabledFor(name: string): LegendDisabledStyle | undefined {
299
- return resolveEffectiveDisabledStyle(
300
- name,
301
- legendInteraction,
302
- cfg.legend.disabledOpacity,
303
- hoverIsolate,
304
- hoverIsolatedSeries
305
- );
306
- }
307
-
308
- // A legend-disabled series is dimmed on the bar itself, but never surfaces
309
- // in hover/tooltip — its points are simply absent from the candidate list.
310
- const hoverPoints = $derived(
311
- buildHoverPoints(resolvedSeries, isHorizontal, barLayout, colorForSeries).filter(
312
- (p) => !legendInteraction?.disabledSeries.has(p.series!)
313
- )
314
- );
315
-
316
- const hover = $derived({
317
- active: tooltip != null || hasHoverMarker(markers),
318
- points: hoverPoints,
319
- label: (r: TData) => String(yAcc(r)),
320
- strategy: resolveHoverStrategy(tooltip?.strategy, markers, categoricalAxis),
321
- sync: resolveHoverSync(tooltip?.sync, markers),
12
+ title,
13
+ subtitle,
14
+ caption,
15
+ header,
16
+ footer,
17
+ legend,
18
+ order,
19
+ timeline,
20
+ facet,
322
21
  tooltip,
323
- // The category axis is a band scale — `<Pointer>`'s nearest-point-by-
324
- // distance match (svelteplot's own projection of each candidate's band
325
- // centre) can disagree by a couple of pixels with where `<BarX>`/`<BarY>`
326
- // (via svelteplot's `RectPath`) actually render that band, which is
327
- // enough to mismatch the neighbouring category once bands get thin
328
- // (many categories). The `role: 'hitArea'` bar markers `buildBarMarkers`
329
- // emits hit-test each series' own segment directly instead — see its
330
- // own doc comment.
331
- pointMatching: 'contains' as const
332
- });
333
-
334
- // Estimated overflow for an `'outside'`-anchored value label at the most
335
- // extreme value in the whole dataset — not just the current frame, so it
336
- // stays stable across a timeline scrubber instead of resetting to zero
337
- // and regrowing on every tick. Stacked labels sit at their own segment's
338
- // midpoint (see `valueTextFn` above), well inside the bar, so they carry
339
- // no such risk; `start`/`end` anchors sit inside the bar too.
340
- const valueLabelFloor = $derived.by((): MarginOverflow | undefined => {
341
- if (!showVals || valAnchor !== 'outside' || barLayout.layout === 'stacked') return undefined;
342
- const font = styles.values?.fontStyle;
343
- const fontSize = typeof font?.fontSize === 'number' ? font.fontSize : 12;
344
- const canvasFont = `${fontSize}px ${cfg.font === 'inherit' ? 'sans-serif' : cfg.font}`;
345
- if (isHorizontal) {
346
- const offset = Math.abs(typeof font?.dx === 'number' ? font.dx : 6);
347
- const texts: string[] = [];
348
- for (const s of resolvedSeries) {
349
- const sy = resolveAccessor(s.y);
350
- let extremeValue = 0;
351
- let extremeRow: TData | undefined;
352
- for (const d of s.data) {
353
- const v = Number(sy(d));
354
- if (Number.isNaN(v)) continue;
355
- if (extremeRow === undefined || Math.abs(v) > Math.abs(extremeValue)) {
356
- extremeValue = v;
357
- extremeRow = d;
358
- }
359
- }
360
- if (extremeRow === undefined) continue;
361
- texts.push(formatValue(extremeValue, s.name));
362
- }
363
- const right = estimateValueLabelMargin(texts, { canvasFont, reach: offset });
364
- return { left: 0, right, top: 0, bottom: 0 };
365
- }
366
- const offset = Math.abs(typeof font?.dy === 'number' ? font.dy : 6);
367
- return { left: 0, right: 0, top: Math.ceil(offset + fontSize * 1.2), bottom: 0 };
368
- });
369
-
370
- // See `halfDimensionOverflowCap`'s own doc comment.
371
- const maxLabelOverflow = $derived(halfDimensionOverflowCap(width, height));
372
-
373
- // A bar's value label can grow past the plot's own content box (e.g. a
374
- // tall bar's `anchor: 'outside'` label pushing past the top margin) —
375
- // `valueLabelFloor` covers the common case up front; each label's own
376
- // rendered overflow still feeds `labelMargin.report` for whatever that
377
- // estimate doesn't cover. See `labelOverflow.svelte.ts`.
378
- const labelMargin = createLabelMarginTracker(
379
- () => margins,
380
- () => resolvedSeries,
381
- () => valueLabelFloor ?? { left: 0, right: 0, top: 0, bottom: 0 },
382
- () => maxLabelOverflow
383
- );
22
+ margins = $bindable(),
23
+ ...core
24
+ }: BarPlotProps<TData> = $props();
384
25
  </script>
385
26
 
386
- <BasePlotLayout
387
- {width}
388
- {height}
389
- {styles}
390
- data={flat}
391
- getX={plotGetX}
392
- getY={plotGetY}
393
- {hover}
394
- scales={resolvedScales}
395
- {...labelMargin.plotProps}
396
- xTickRotate={resolvedScales?.x?.tickRotate}
397
- markers={({ setHoverMatch, clearHoverMatch }) => [
398
- ...buildBarMarkers({
399
- groupedSeries,
400
- barLayout,
401
- isHorizontal,
402
- hoverPoints,
403
- colorFor: colorForSeries,
404
- disabledFillFor: (name) => disabledFillOverride(effectiveDisabledFor(name)),
405
- active: hover.active,
406
- setHoverMatch,
407
- clearHoverMatch,
408
- gapFillMaps
409
- }),
410
- ...markers
411
- ]}
412
- seriesData={resolvedSeries}
413
- {scopedGroups}
414
- >
415
- {#snippet children({ numericMargins })}
416
- {#if showVals}
417
- {#each groupedSeries as group, seriesIndex (group.series.name)}
418
- <ValueLabels
419
- {group}
420
- {seriesIndex}
421
- {barLayout}
422
- {isHorizontal}
423
- {valAnchor}
424
- {formatValue}
425
- values={styles.values}
426
- axisColor={cfg.axis.color}
427
- disabled={effectiveDisabledFor(group.series.name)}
428
- {width}
429
- {height}
430
- {numericMargins}
431
- onHoverSeries={hoverIsolate
432
- ? () => {
433
- hoverIsolatedSeries = group.series.name;
434
- }
435
- : undefined}
436
- onHoverEnd={hoverIsolate
437
- ? () => {
438
- hoverIsolatedSeries = null;
439
- }
440
- : undefined}
441
- onOverflow={labelMargin.report}
442
- />
443
- {/each}
444
- {/if}
445
- {/snippet}
446
- </BasePlotLayout>
27
+ <Plot
28
+ core={core as BarPlotCoreProps<TData>}
29
+ defaults={buildBarDefaults}
30
+ bind:margins
31
+ {title}
32
+ {subtitle}
33
+ {caption}
34
+ {header}
35
+ {footer}
36
+ {legend}
37
+ {order}
38
+ {timeline}
39
+ {facet}
40
+ {tooltip}
41
+ />
@@ -1,12 +1,9 @@
1
- import type { AxisBasedMarkersConfig } from '../../types/markers/common';
2
- import type { BasePlotProps } from '../../types/plots/props';
3
- import type { AxisBasedScalesConfig } from '../../types/layout/scales';
4
- import type { SeriesProps, DataProps } from '../../types/plots/data/common';
5
- import type { GapsAwarePlotStylesConfig } from '../../types/layout/styles';
1
+ import Plot from '../../layout/plot/Plot.svelte';
2
+ import type { BarPlotProps } from '../../types/plots/bar/props';
6
3
  declare function $$render<TData extends Record<string, unknown>>(): {
7
- props: BasePlotProps<SeriesProps<TData> | DataProps<TData>, TData, GapsAwarePlotStylesConfig<import("../..").AreaStyle>, import("../..").AreaStyle, AxisBasedMarkersConfig, AxisBasedScalesConfig<TData>>;
4
+ props: BarPlotProps<TData>;
8
5
  exports: {};
9
- bindings: "";
6
+ bindings: "margins";
10
7
  slots: {};
11
8
  events: {};
12
9
  };
@@ -14,7 +11,7 @@ declare class __sveltets_Render<TData extends Record<string, unknown>> {
14
11
  props(): ReturnType<typeof $$render<TData>>['props'];
15
12
  events(): ReturnType<typeof $$render<TData>>['events'];
16
13
  slots(): ReturnType<typeof $$render<TData>>['slots'];
17
- bindings(): "";
14
+ bindings(): "margins";
18
15
  exports(): {};
19
16
  }
20
17
  interface $$IsomorphicComponent {
@@ -0,0 +1,9 @@
1
+ import type { AxisPlotDefaults } from '../../types/phases';
2
+ import type { BarPlotState, BarPlotCtx } from '../../types/plots/bar/state';
3
+ /**
4
+ * BarPlot on the shared pipeline: discrete bars with gap fills along one
5
+ * category axis - `x`, or `y` for horizontal bars, as the "data" phase reads
6
+ * it off the values - its own scales (padding, bar layout) and markers.
7
+ * Its plot defaults to: hover along the category axis, timeline tweens matched per category and group.
8
+ */
9
+ export declare function buildBarDefaults<TData extends Record<string, unknown>>(): AxisPlotDefaults<BarPlotState<TData>, BarPlotCtx>;
@@ -0,0 +1,88 @@
1
+ import { ProcessedPositions } from '../../phases/transforms/ProcessedPositions';
2
+ import { buildMarks, buildValueLabels, buildHitAreas, buildBarGeometry } from './markers';
3
+ import { NiceTicks } from '../../layout/scales/NiceTicks';
4
+ import { SERIES_KEY } from '../../phases/transforms/TransformsPhase';
5
+ import { PlotAxes } from '../../phases/data/PlotAxes';
6
+ /**
7
+ * The domain a bar plot fits to its own bars on its value axis: from zero to
8
+ * the tallest span, niced to as many ticks as fit the plot. Left out when the
9
+ * author pins the axis, and when there is no span to fit.
10
+ */
11
+ function fitValueDomain(state) {
12
+ const axis = PlotAxes.valueOf(state);
13
+ const scale = state.scales[axis];
14
+ if (scale?.domain != null || scale?.ticks != null || scale?.nice != null)
15
+ return {};
16
+ // Every bar's span, as the "transforms" phase left it - its baseline is
17
+ // unknown until the domain is, so a plain bar reads as reaching from zero.
18
+ const { of: spanOf } = ProcessedPositions.span(state.processedData, axis);
19
+ let lo = 0;
20
+ let hi = 0;
21
+ for (const row of state.processedData?.data ?? []) {
22
+ const span = spanOf(row);
23
+ if (!span)
24
+ continue;
25
+ lo = Math.min(lo, ...span);
26
+ hi = Math.max(hi, ...span);
27
+ }
28
+ if (hi <= lo)
29
+ return {};
30
+ return { [axis]: { domain: NiceTicks.fit(state, axis, lo, hi, scale?.niceTolerance) } };
31
+ }
32
+ /**
33
+ * BarPlot on the shared pipeline: discrete bars with gap fills along one
34
+ * category axis - `x`, or `y` for horizontal bars, as the "data" phase reads
35
+ * it off the values - its own scales (padding, bar layout) and markers.
36
+ * Its plot defaults to: hover along the category axis, timeline tweens matched per category and group.
37
+ */
38
+ export function buildBarDefaults() {
39
+ return {
40
+ data: {
41
+ discreteAxes: 1,
42
+ segments: { color: (style) => style?.fill, connect: false }
43
+ },
44
+ scales: {
45
+ zero: ['value'],
46
+ defaults: (_state, ctx) => ({
47
+ category: { paddingInner: ctx.cfg.bar.paddingInner, paddingOuter: ctx.cfg.bar.paddingOuter }
48
+ }),
49
+ fit: fitValueDomain
50
+ },
51
+ styles: {
52
+ values: {
53
+ // An `'outside'` label sits past its bar's end, which the tallest bar takes to the edge.
54
+ reach: (labels, state) => {
55
+ if (labels.anchor !== 'outside')
56
+ return [];
57
+ const axis = PlotAxes.valueOf(state);
58
+ if (ProcessedPositions.span(state.processedData, axis).stacked)
59
+ return [];
60
+ if (!state.axes?.isHorizontal) {
61
+ const at = { y: -labels.offset('y') };
62
+ return [labels.edgeBox('0', { x: 'middle', y: 'before' }, at, ['top'])];
63
+ }
64
+ const at = { x: labels.offset('x') };
65
+ return labels
66
+ .extremes(state.resolvedSeries ?? [], PlotAxes.valueOf(state))
67
+ .map(({ series, value }) => labels.edgeBox(labels.format(value, series.name), { x: 'after', y: 'middle' }, at, [
68
+ 'right'
69
+ ]));
70
+ }
71
+ }
72
+ },
73
+ markers: { marks: buildMarks, valueLabels: buildValueLabels },
74
+ hover: {
75
+ // Each bar matched by its own band (see `buildHitAreas`); a grouped bar's dot is
76
+ // drawn in its series' slice of the band.
77
+ pointMatching: 'contains',
78
+ decorate: (state, ctx) => {
79
+ const { sliceOf } = buildBarGeometry(state, ctx.cfg.bar.seriesPadding);
80
+ return (row) => ({
81
+ areaInset: sliceOf(String(row[SERIES_KEY]))
82
+ });
83
+ },
84
+ hitAreas: buildHitAreas
85
+ },
86
+ timeline: { interpolation: { value: 'value', key: ['category', 'grouping'] } }
87
+ };
88
+ }
@@ -0,0 +1,45 @@
1
+ import type { BarMarkerConfig, TextMarkerConfig } from '../../types/markers/common';
2
+ import type { BarPlotState, BarPlotCtx } from '../../types/plots/bar/state';
3
+ import type { ProcessedRow } from '../../types/phases';
4
+ import type { AxisValue } from '../../types/layout/mapping';
5
+ import type { BandSlice } from '../../types/layout/hover';
6
+ import type { HoverConfig } from '../../types/plots/props';
7
+ import { ValueLabels } from '../../layout/styles/ValueLabels';
8
+ import type { AxisBasedMarkersConfig } from '../../types/markers/common';
9
+ /**
10
+ * Where a bar plot's bars sit, read off the state its phases leave: each
11
+ * processed row's category and span along the value axis, whether the series
12
+ * stack, and the slice of its category band each series takes when they sit
13
+ * side by side. Slices are fractions of the band, so they hold at any width.
14
+ */
15
+ export declare function buildBarGeometry<TData extends Record<string, unknown>>(state: BarPlotState<TData>, seriesPadding: number): {
16
+ stacked: boolean;
17
+ baseline: number;
18
+ spanOf: (row: ProcessedRow) => [number, number] | undefined;
19
+ categoryOf: (row: ProcessedRow) => AxisValue;
20
+ sliceOf: (name: string) => BandSlice | undefined;
21
+ };
22
+ /**
23
+ * BarPlot's invisible `role: 'hitArea'` markers - one per hover candidate: a
24
+ * band across the whole plot along the value axis (full height for vertical
25
+ * bars, full width for horizontal ones), over its category, or its series'
26
+ * slice of it. The pointer needn't be over the visible bar. They drive the
27
+ * plot's hover when it is active.
28
+ */
29
+ export declare function buildHitAreas<TData extends Record<string, unknown>>(state: BarPlotState<TData>, hover: HoverConfig<any>, ctx: BarPlotCtx): BarMarkerConfig[];
30
+ /**
31
+ * BarPlot's `styles.values` as one `'text'` marker per series, over the same
32
+ * processed rows its bars draw (gap rows never get a label). `anchor` places
33
+ * each label along its bar: past its top (`'outside'`), just inside it
34
+ * (`'start'`), at its base (`'end'`), or centred (`'middle'`); a stacked bar's
35
+ * label always sits at the middle of its own span. A grouped bar's label
36
+ * shifts with its series' slice of the band.
37
+ */
38
+ export declare function buildValueLabels<TData extends Record<string, unknown>>(labels: ValueLabels, state: BarPlotState<TData>, ctx: BarPlotCtx): TextMarkerConfig[];
39
+ /**
40
+ * BarPlot's "markers" phase: visible `role: 'segment'` bars - real data plus
41
+ * gap fills - drawing the rows the "transforms" phase left, prepended onto
42
+ * whatever the "statistics" phase already put in `state.markers`, and its
43
+ * value labels on top of everything.
44
+ */
45
+ export declare function buildMarks<TData extends Record<string, unknown>>(state: BarPlotState<TData>, ctx: BarPlotCtx): AxisBasedMarkersConfig[];