@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
@@ -0,0 +1,233 @@
1
+ import { ProcessedPositions } from '../../phases/transforms/ProcessedPositions';
2
+ import { getConfiguration } from '../../configuration/config.svelte';
3
+ import { GAP_KIND, GAP_VALUE, SERIES_ID_KEY } from '../../phases/transforms/TransformsPhase';
4
+ import { seriesIdOf } from '../../utils/grouping';
5
+ import { resolveGapAreaStyle } from '../utils/gaps';
6
+ import { PlotAxes } from '../../phases/data/PlotAxes';
7
+ import { ValueLabels } from '../../layout/styles/ValueLabels';
8
+ const GAP_KINDS = ['start', 'middle', 'end'];
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 function buildBarGeometry(state, seriesPadding) {
16
+ const valueAxis = PlotAxes.valueOf(state);
17
+ const categoryAxis = PlotAxes.categoryOf(state);
18
+ const domain = state.scales[valueAxis]?.domain;
19
+ // Bars rise from zero, or from the nearest end of a domain that leaves it out.
20
+ const baseline = (() => {
21
+ const lo = Number(domain?.[0]);
22
+ const hi = Number(domain?.[(domain?.length ?? 1) - 1]);
23
+ if (!domain || domain.length < 2 || Number.isNaN(lo) || Number.isNaN(hi))
24
+ return 0;
25
+ const [min, max] = [Math.min(lo, hi), Math.max(lo, hi)];
26
+ return min > 0 ? min : max < 0 ? max : 0;
27
+ })();
28
+ const { stacked, of: spanOf } = ProcessedPositions.span(state.processedData, valueAxis, baseline);
29
+ const position = ProcessedPositions.of(state.processedData, valueAxis);
30
+ const categoryOf = (row) => position[categoryAxis](row);
31
+ const names = [...new Set((state.groupedSeries ?? []).map((g) => g.series.name))];
32
+ // A lone series, or a stack, fills its whole band: there's nothing to set side by side.
33
+ const sideBySide = !stacked && names.length > 1;
34
+ const gap = Math.max(0, Math.min(1, seriesPadding));
35
+ /** A series' slice of the band, `undefined` while it takes the whole of it. */
36
+ const sliceOf = (name) => {
37
+ if (!sideBySide)
38
+ return undefined;
39
+ const index = names.indexOf(name);
40
+ const width = 1 / names.length;
41
+ const margin = (gap * width) / 2;
42
+ return {
43
+ start: index * width + margin,
44
+ end: (names.length - 1 - index) * width + margin
45
+ };
46
+ };
47
+ return { stacked, baseline, spanOf, categoryOf, sliceOf };
48
+ }
49
+ /**
50
+ * BarPlot's invisible `role: 'hitArea'` markers - one per hover candidate: a
51
+ * band across the whole plot along the value axis (full height for vertical
52
+ * bars, full width for horizontal ones), over its category, or its series'
53
+ * slice of it. The pointer needn't be over the visible bar. They drive the
54
+ * plot's hover when it is active.
55
+ */
56
+ export function buildHitAreas(state,
57
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
58
+ hover, ctx) {
59
+ const { categoryOf, sliceOf } = buildBarGeometry(state, ctx.cfg.bar.seriesPadding);
60
+ const isHorizontal = state.axes?.isHorizontal ?? false;
61
+ return hover.points.map(({ row, series }) => {
62
+ const slice = series === undefined ? undefined : sliceOf(series);
63
+ return {
64
+ type: 'bar',
65
+ role: 'hitArea',
66
+ isHorizontal,
67
+ data: [row],
68
+ category: categoryOf(row),
69
+ hover: hover.active,
70
+ ...(slice
71
+ ? isHorizontal
72
+ ? { insetTop: slice.start, insetBottom: slice.end }
73
+ : { insetLeft: slice.start, insetRight: slice.end }
74
+ : {})
75
+ };
76
+ });
77
+ }
78
+ /**
79
+ * BarPlot's `styles.values` as one `'text'` marker per series, over the same
80
+ * processed rows its bars draw (gap rows never get a label). `anchor` places
81
+ * each label along its bar: past its top (`'outside'`), just inside it
82
+ * (`'start'`), at its base (`'end'`), or centred (`'middle'`); a stacked bar's
83
+ * label always sits at the middle of its own span. A grouped bar's label
84
+ * shifts with its series' slice of the band.
85
+ */
86
+ export function buildValueLabels(labels, state, ctx) {
87
+ const { processedData } = state;
88
+ const isHorizontal = state.axes?.isHorizontal ?? false;
89
+ if (!processedData)
90
+ return [];
91
+ const geometry = buildBarGeometry(state, ctx.cfg.bar.seriesPadding);
92
+ const { font, anchor, format } = labels;
93
+ const valueOf = ValueLabels.valueOf(state);
94
+ const top = (d) => geometry.spanOf(d)?.[1] ?? 0;
95
+ const position = geometry.stacked
96
+ ? (d) => {
97
+ const [from, to] = geometry.spanOf(d) ?? [0, 0];
98
+ return (from + to) / 2;
99
+ }
100
+ : anchor === 'middle' && !isHorizontal
101
+ ? (d) => top(d) / 2
102
+ : anchor === 'end'
103
+ ? () => 0
104
+ : top;
105
+ // Outward from the bar's top along the value axis: up for a vertical bar, right for a horizontal one.
106
+ const outward = anchor === 'outside' ? 6 : anchor === 'start' ? -4 : anchor === 'end' ? 4 : 0;
107
+ const textAnchor = labels.textAnchor ??
108
+ (isHorizontal
109
+ ? anchor === 'outside' || anchor === 'end'
110
+ ? 'start'
111
+ : anchor === 'start'
112
+ ? 'end'
113
+ : 'middle'
114
+ : 'middle');
115
+ const lineAnchor = font?.lineAnchor ??
116
+ (isHorizontal
117
+ ? 'middle'
118
+ : anchor === 'outside' || anchor === 'end'
119
+ ? 'bottom'
120
+ : anchor === 'start'
121
+ ? 'top'
122
+ : 'middle');
123
+ const labelled = processedData.data.filter((d) => d[GAP_VALUE] === undefined && geometry.spanOf(d) !== undefined);
124
+ return (state.resolvedSeries ?? []).flatMap((s) => {
125
+ const data = labelled.filter((d) => d[SERIES_ID_KEY] === seriesIdOf(s));
126
+ if (data.length === 0)
127
+ return [];
128
+ return [
129
+ {
130
+ type: 'text',
131
+ data,
132
+ ...(isHorizontal
133
+ ? { x: position, y: geometry.categoryOf }
134
+ : { x: geometry.categoryOf, y: position }),
135
+ bandSlice: geometry.sliceOf(s.name),
136
+ text: (d) => format(Number(valueOf(d)), s.name),
137
+ styles: {
138
+ ...font,
139
+ fill: font?.fill ?? ctx.cfg.axis.color,
140
+ fontSize: font?.fontSize ?? 12,
141
+ dx: font?.dx ?? (isHorizontal ? outward : 0),
142
+ dy: font?.dy ?? (isHorizontal ? 0 : -outward),
143
+ textAnchor,
144
+ lineAnchor
145
+ }
146
+ }
147
+ ];
148
+ });
149
+ }
150
+ /**
151
+ * BarPlot's "markers" phase: visible `role: 'segment'` bars - real data plus
152
+ * gap fills - drawing the rows the "transforms" phase left, prepended onto
153
+ * whatever the "statistics" phase already put in `state.markers`, and its
154
+ * value labels on top of everything.
155
+ */
156
+ export function buildMarks(state, ctx) {
157
+ const { gapFillMaps, colorForSeries, processedData } = state;
158
+ const isHorizontal = state.axes?.isHorizontal ?? false;
159
+ const [categoryAxis, valueAxis] = isHorizontal ? ['y', 'x'] : ['x', 'y'];
160
+ const geometry = buildBarGeometry(state, ctx.cfg.bar.seriesPadding);
161
+ const { channels } = processedData;
162
+ const gapDefaults = getConfiguration().bar.gap;
163
+ // Forwarded raw when the transforms left a plain channel (a field key keeps
164
+ // feeding svelteplot's axis-title inference), read through the geometry otherwise.
165
+ const category = (channels[categoryAxis] ?? geometry.categoryOf);
166
+ const bottom = (row) => geometry.spanOf(row)?.[0] ?? geometry.baseline;
167
+ const top = (row) => geometry.spanOf(row)?.[1] ?? geometry.baseline;
168
+ // A gap-filled row reads its value through the processed value channel, which
169
+ // falls back to the filled value; a real row through its own series' one,
170
+ // which stays a field key whenever the plot has no transforms.
171
+ const valueOf = (channel) => (geometry.stacked || channel === undefined ? top : channel);
172
+ const gapValue = valueOf(channels[valueAxis]);
173
+ function makeMarker(data, slice, value, styles) {
174
+ if (data.length === 0)
175
+ return null;
176
+ const from = (geometry.stacked ? bottom : geometry.baseline);
177
+ const marker = {
178
+ type: 'bar',
179
+ role: 'segment',
180
+ isHorizontal,
181
+ data,
182
+ styles,
183
+ ...(isHorizontal
184
+ ? { y: category, x1: from, x2: value }
185
+ : { x: category, y1: from, y2: value })
186
+ };
187
+ if (slice) {
188
+ if (isHorizontal) {
189
+ marker.insetTop = slice.start;
190
+ marker.insetBottom = slice.end;
191
+ }
192
+ else {
193
+ marker.insetLeft = slice.start;
194
+ marker.insetRight = slice.end;
195
+ }
196
+ }
197
+ return marker;
198
+ }
199
+ const isReal = (row) => row[GAP_VALUE] === undefined && geometry.spanOf(row) !== undefined;
200
+ const segmentMarkers = [];
201
+ (state.processedGroups ?? []).forEach((group) => {
202
+ const name = group.series.name;
203
+ const slice = geometry.sliceOf(name);
204
+ const defaultColor = colorForSeries(name);
205
+ const disabledFill = ctx.interaction?.fillFor(name);
206
+ for (const seg of group.visualSegments) {
207
+ const marker = makeMarker(seg.data.filter(isReal), slice, valueOf(group.series[valueAxis]), {
208
+ fill: disabledFill?.fill ?? seg.styles.fill ?? defaultColor,
209
+ fillOpacity: disabledFill?.fillOpacity ?? seg.styles.fillOpacity ?? 1
210
+ });
211
+ if (marker)
212
+ segmentMarkers.push(marker);
213
+ }
214
+ const id = seriesIdOf(group.series);
215
+ const fills = [...(gapFillMaps.get(id)?.values() ?? [])];
216
+ const seriesRows = processedData.data.filter((row) => row[SERIES_ID_KEY] === id);
217
+ for (const kind of GAP_KINDS) {
218
+ const fill = fills.find((f) => f.kind === kind);
219
+ if (!fill)
220
+ continue;
221
+ const base = resolveGapAreaStyle(fill.style, defaultColor, gapDefaults);
222
+ const rows = seriesRows.filter((row) => row[GAP_KIND] === kind && geometry.spanOf(row) !== undefined);
223
+ const marker = makeMarker(rows, slice, gapValue, {
224
+ ...base,
225
+ fill: disabledFill?.fill ?? base.fill,
226
+ fillOpacity: disabledFill?.fillOpacity ?? base.fillOpacity
227
+ });
228
+ if (marker)
229
+ segmentMarkers.push(marker);
230
+ }
231
+ });
232
+ return segmentMarkers;
233
+ }
@@ -0,0 +1,19 @@
1
+ import type { HoverPosition } from '../../types/phases';
2
+ import type { BoxPlotState, BoxSummaryRow } from '../../types/plots/box/state';
3
+ /**
4
+ * The boxes a box plot draws, one summary row per series, category and facet
5
+ * panel - the same quartiles and whiskers svelteplot's `BoxX`/`BoxY` compute,
6
+ * so its hover and tooltip read a box rather than every value inside it.
7
+ */
8
+ export declare class BoxSummaries {
9
+ /** One summary per box, in the order the processed rows first reach it. */
10
+ static of<TData extends Record<string, unknown>>(state: BoxPlotState<TData>): BoxSummaryRow[];
11
+ /** Where a box's summary sits for hover: at its category, level with its median. */
12
+ static position<TData extends Record<string, unknown>>(state: BoxPlotState<TData>): HoverPosition;
13
+ /**
14
+ * How a hovered box reads by default: its series, when the plot groups its
15
+ * rows; its category; then its five numbers, highest first, and how many
16
+ * values fall past the whiskers.
17
+ */
18
+ static format<TData extends Record<string, unknown>>(state: BoxPlotState<TData>): (row: BoxSummaryRow) => string;
19
+ }
@@ -0,0 +1,101 @@
1
+ import { ProcessedPositions } from '../../phases/transforms/ProcessedPositions';
2
+ import { quantile } from 'd3-array';
3
+ import { SERIES_ID_KEY, SERIES_KEY } from '../../phases/transforms/TransformsPhase';
4
+ import { PANEL_KEY } from '../../phases/facet/FacetPanels';
5
+ import { PlotAxes } from '../../phases/data/PlotAxes';
6
+ import { TooltipState } from '../../layout/tooltip/TooltipState.svelte';
7
+ import { isGapValue } from '../utils/gaps';
8
+ /** The whiskers reach this many interquartile ranges past the box, as svelteplot draws them. */
9
+ const WHISKER_IQR = 1.5;
10
+ /** A summary value as a tooltip shows it: at most two decimals. */
11
+ const round = (value) => String(Math.round(value * 100) / 100);
12
+ /**
13
+ * The boxes a box plot draws, one summary row per series, category and facet
14
+ * panel - the same quartiles and whiskers svelteplot's `BoxX`/`BoxY` compute,
15
+ * so its hover and tooltip read a box rather than every value inside it.
16
+ */
17
+ export class BoxSummaries {
18
+ /** One summary per box, in the order the processed rows first reach it. */
19
+ static of(state) {
20
+ const processed = state.processedData;
21
+ if (!processed?.data.length)
22
+ return [];
23
+ const valueAxis = PlotAxes.valueOf(state);
24
+ const categoryAxis = PlotAxes.categoryOf(state);
25
+ const position = ProcessedPositions.of(processed, valueAxis);
26
+ const valueOf = position[valueAxis];
27
+ const categoryOf = position[categoryAxis];
28
+ const categoryField = processed.channels[categoryAxis];
29
+ const boxes = new Map();
30
+ for (const row of processed.data) {
31
+ const value = valueOf(row);
32
+ if (isGapValue(value))
33
+ continue;
34
+ const n = Number(value);
35
+ if (!Number.isFinite(n))
36
+ continue;
37
+ const key = JSON.stringify([
38
+ row[SERIES_ID_KEY],
39
+ row[PANEL_KEY] ?? null,
40
+ String(categoryOf(row))
41
+ ]);
42
+ const box = boxes.get(key);
43
+ if (box)
44
+ box.values.push(n);
45
+ else
46
+ boxes.set(key, { first: row, values: [n] });
47
+ }
48
+ return [...boxes.values()].map(({ first, values }) => {
49
+ const sorted = values.sort((a, b) => a - b);
50
+ const p25 = quantile(sorted, 0.25);
51
+ const median = quantile(sorted, 0.5);
52
+ const p75 = quantile(sorted, 0.75);
53
+ const reach = (p75 - p25) * WHISKER_IQR;
54
+ const inside = sorted.filter((v) => v >= p25 - reach && v <= p75 + reach);
55
+ const category = categoryOf(first);
56
+ return {
57
+ ...(typeof categoryField === 'string' ? { [categoryField]: category } : {}),
58
+ [SERIES_KEY]: first[SERIES_KEY],
59
+ [SERIES_ID_KEY]: first[SERIES_ID_KEY],
60
+ ...(first[PANEL_KEY] !== undefined ? { [PANEL_KEY]: first[PANEL_KEY] } : {}),
61
+ category,
62
+ min: inside[0] ?? p25,
63
+ p25,
64
+ median,
65
+ p75,
66
+ max: inside.at(-1) ?? p75,
67
+ count: sorted.length,
68
+ outliers: sorted.filter((v) => v < p25 - reach || v > p75 + reach)
69
+ };
70
+ });
71
+ }
72
+ /** Where a box's summary sits for hover: at its category, level with its median. */
73
+ static position(state) {
74
+ const valueAxis = PlotAxes.valueOf(state);
75
+ const at = {
76
+ [valueAxis]: (row) => row.median,
77
+ [PlotAxes.other(valueAxis)]: (row) => row.category
78
+ };
79
+ return at;
80
+ }
81
+ /**
82
+ * How a hovered box reads by default: its series, when the plot groups its
83
+ * rows; its category; then its five numbers, highest first, and how many
84
+ * values fall past the whiskers.
85
+ */
86
+ static format(state) {
87
+ const grouped = state.channels?.grouping !== undefined;
88
+ return (row) => {
89
+ const lines = grouped ? [String(row[SERIES_KEY])] : [];
90
+ lines.push(TooltipState.value(row.category));
91
+ lines.push(`max: ${round(row.max)}`);
92
+ lines.push(`p75: ${round(row.p75)}`);
93
+ lines.push(`median: ${round(row.median)}`);
94
+ lines.push(`p25: ${round(row.p25)}`);
95
+ lines.push(`min: ${round(row.min)}`);
96
+ if (row.outliers.length)
97
+ lines.push(`outliers: ${row.outliers.length}`);
98
+ return lines.join('\n');
99
+ };
100
+ }
101
+ }
@@ -0,0 +1,42 @@
1
+ <script lang="ts" generics="TData extends Record<string, unknown>">
2
+ import Plot from '../../layout/plot/Plot.svelte';
3
+ import { buildBoxDefaults } from './defaults';
4
+ import type { BoxPlotProps, BoxPlotCoreProps } from '../../types/plots/box/props';
5
+
6
+ /**
7
+ * A box plot: the distribution of each series' values per category - quartiles, whiskers and outliers - one box per category, upright, or sideways when the categories run along `y`. 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.
10
+ * `margins` is bindable: it reports the margin the plot settled on.
11
+ */
12
+ let {
13
+ title,
14
+ subtitle,
15
+ caption,
16
+ header,
17
+ footer,
18
+ legend,
19
+ order,
20
+ timeline,
21
+ facet,
22
+ tooltip,
23
+ margins = $bindable(),
24
+ ...core
25
+ }: BoxPlotProps<TData> = $props();
26
+ </script>
27
+
28
+ <Plot
29
+ core={core as BoxPlotCoreProps<TData>}
30
+ defaults={buildBoxDefaults}
31
+ bind:margins
32
+ {title}
33
+ {subtitle}
34
+ {caption}
35
+ {header}
36
+ {footer}
37
+ {legend}
38
+ {order}
39
+ {timeline}
40
+ {facet}
41
+ {tooltip}
42
+ />
@@ -0,0 +1,26 @@
1
+ import Plot from '../../layout/plot/Plot.svelte';
2
+ import type { BoxPlotProps } from '../../types/plots/box/props';
3
+ declare function $$render<TData extends Record<string, unknown>>(): {
4
+ props: BoxPlotProps<TData>;
5
+ exports: {};
6
+ bindings: "margins";
7
+ slots: {};
8
+ events: {};
9
+ };
10
+ declare class __sveltets_Render<TData extends Record<string, unknown>> {
11
+ props(): ReturnType<typeof $$render<TData>>['props'];
12
+ events(): ReturnType<typeof $$render<TData>>['events'];
13
+ slots(): ReturnType<typeof $$render<TData>>['slots'];
14
+ bindings(): "margins";
15
+ exports(): {};
16
+ }
17
+ interface $$IsomorphicComponent {
18
+ new <TData extends Record<string, unknown>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TData>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TData>['props']>, ReturnType<__sveltets_Render<TData>['events']>, ReturnType<__sveltets_Render<TData>['slots']>> & {
19
+ $$bindings?: ReturnType<__sveltets_Render<TData>['bindings']>;
20
+ } & ReturnType<__sveltets_Render<TData>['exports']>;
21
+ <TData extends Record<string, unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<TData>['props']> & {}): ReturnType<__sveltets_Render<TData>['exports']>;
22
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
23
+ }
24
+ declare const Plot: $$IsomorphicComponent;
25
+ type Plot<TData extends Record<string, unknown>> = InstanceType<typeof Plot<TData>>;
26
+ export default Plot;
@@ -0,0 +1,12 @@
1
+ import type { AxisPlotDefaults } from '../../types/phases';
2
+ import type { BoxPlotState, BoxPlotCtx } from '../../types/plots/box/state';
3
+ /**
4
+ * BoxPlot on the shared pipeline: one box per category of each series along
5
+ * one category axis - `x`, or `y` for horizontal boxes, as the "data" phase
6
+ * reads it off the values, in the order the data gives them - with its own
7
+ * band padding and markers. The value
8
+ * axis fits the values, without reaching for zero. Its plot defaults to:
9
+ * hover along the category axis, over one summary per box rather than every
10
+ * value inside it.
11
+ */
12
+ export declare function buildBoxDefaults<TData extends Record<string, unknown>>(): AxisPlotDefaults<BoxPlotState<TData>, BoxPlotCtx>;
@@ -0,0 +1,34 @@
1
+ import { buildMarks } from './markers';
2
+ import { BoxSummaries } from './BoxSummaries';
3
+ import { TooltipState } from '../../layout/tooltip/TooltipState.svelte';
4
+ /**
5
+ * BoxPlot on the shared pipeline: one box per category of each series along
6
+ * one category axis - `x`, or `y` for horizontal boxes, as the "data" phase
7
+ * reads it off the values, in the order the data gives them - with its own
8
+ * band padding and markers. The value
9
+ * axis fits the values, without reaching for zero. Its plot defaults to:
10
+ * hover along the category axis, over one summary per box rather than every
11
+ * value inside it.
12
+ */
13
+ export function buildBoxDefaults() {
14
+ return {
15
+ data: {
16
+ discreteAxes: 1,
17
+ segments: { color: (style) => style?.fill, connect: false }
18
+ },
19
+ scales: {
20
+ bandOrder: 'data',
21
+ defaults: (_state, ctx) => ({
22
+ category: { paddingInner: ctx.cfg.box.paddingInner, paddingOuter: ctx.cfg.box.paddingOuter }
23
+ })
24
+ },
25
+ markers: { marks: buildMarks },
26
+ hover: {
27
+ rows: BoxSummaries.of,
28
+ position: BoxSummaries.position,
29
+ label: () => ((row) => String(row.median)),
30
+ format: (state) => BoxSummaries.format(state),
31
+ sort: () => TooltipState.descending((row) => row.median)
32
+ }
33
+ };
34
+ }
@@ -0,0 +1,12 @@
1
+ import type { BoxPlotState, BoxPlotCtx } from '../../types/plots/box/state';
2
+ import type { AxisBasedMarkersConfig } from '../../types/markers/common';
3
+ /**
4
+ * BoxPlot's "markers" phase: one `box` per visual segment of each series,
5
+ * one box per category of its rows, filled with its series' color (or its
6
+ * segment's own `fill`). The markers the "statistics" phase already put in
7
+ * `state.markers` come after, so they render on top.
8
+ *
9
+ * A series toggled off in the legend (style mode), or dimmed by hovering
10
+ * another one, takes the legend's disabled fill.
11
+ */
12
+ export declare function buildMarks<TData extends Record<string, unknown>>(state: BoxPlotState<TData>, ctx: BoxPlotCtx): AxisBasedMarkersConfig[];
@@ -0,0 +1,34 @@
1
+ /**
2
+ * BoxPlot's "markers" phase: one `box` per visual segment of each series,
3
+ * one box per category of its rows, filled with its series' color (or its
4
+ * segment's own `fill`). The markers the "statistics" phase already put in
5
+ * `state.markers` come after, so they render on top.
6
+ *
7
+ * A series toggled off in the legend (style mode), or dimmed by hovering
8
+ * another one, takes the legend's disabled fill.
9
+ */
10
+ export function buildMarks(state, ctx) {
11
+ const { channels } = state.processedData;
12
+ const { cfg } = ctx;
13
+ return (state.processedGroups ?? []).flatMap((group) => {
14
+ const name = group.series.name;
15
+ const disabled = ctx.interaction?.fillFor(name);
16
+ return group.visualSegments.map((seg) => {
17
+ const { stroke, strokeWidth, strokeOpacity, borderRadius } = seg.styles;
18
+ const outline = { stroke, strokeWidth, strokeOpacity, borderRadius };
19
+ return {
20
+ type: 'box',
21
+ series: name,
22
+ data: seg.data,
23
+ x: channels.x,
24
+ y: channels.y,
25
+ bar: {
26
+ // The box's own outline, from its segment; unset fields stay svelteplot's.
27
+ ...Object.fromEntries(Object.entries(outline).filter(([, v]) => v !== undefined)),
28
+ fill: disabled?.fill ?? seg.styles.fill ?? state.colorForSeries(name),
29
+ fillOpacity: disabled?.fillOpacity ?? seg.styles.fillOpacity ?? cfg.box.fillOpacity
30
+ }
31
+ };
32
+ });
33
+ });
34
+ }
@@ -0,0 +1,151 @@
1
+ <script lang="ts" generics="TProps extends Record<string, unknown>">
2
+ import { createGeoFeatures } from './features.svelte';
3
+ import { getConfiguration } from '../../configuration/config.svelte';
4
+ import { LegendState } from '../../layout/legend/LegendState.svelte';
5
+ import { ChannelName } from '../utils/ChannelName';
6
+ import { Margins } from '../../layout/margins/Margins';
7
+ import BasePlotLayout from '../../layout/base/BasePlotLayout.svelte';
8
+ import type { GeoPlotCoreProps } from '../../types/plots/geo/props';
9
+ import type { CoordinatesConfig } from '../../types/layout/coordinates';
10
+ import type { GeoPlotState, GeoPlotCtx } from '../../types/plots/geo/state';
11
+
12
+ /**
13
+ * A map from GeoJSON or TopoJSON. `segments` styles features by id,
14
+ * `color` + `scales.color` drive a choropleth ramp, and everything drawn on
15
+ * top is a `markers` entry.
16
+ */
17
+ type Props = GeoPlotCoreProps<TProps>;
18
+
19
+ let {
20
+ data,
21
+ object,
22
+ featureId,
23
+ color,
24
+ grouping,
25
+ opacity,
26
+ excludeParts,
27
+ width,
28
+ height,
29
+ styles = {},
30
+ segments = {},
31
+ markers = [],
32
+ scales = {},
33
+ coordinates = {},
34
+ margins = $bindable(),
35
+ tooltip = undefined,
36
+ pipeline
37
+ }: Props = $props();
38
+
39
+ const cfg = $derived(getConfiguration());
40
+
41
+ // ── Resolve data: GeoJSON is synchronous, TopoJSON is converted async ────
42
+ const resolved = createGeoFeatures<TProps>(
43
+ () => data,
44
+ () => object
45
+ );
46
+ const rawFeatures = $derived(resolved.features);
47
+
48
+ // ── Tile-layer / projection compatibility ────────────────────────────────
49
+ $effect(() => {
50
+ if (!styles.tileLayer) return;
51
+ const proj = coordinates.projection;
52
+ const name = typeof proj === 'string' ? proj : proj?.type;
53
+ if (name && name !== 'mercator' && name !== 'transverse-mercator') {
54
+ console.warn(
55
+ `GeoPlot: styles.tileLayer only renders correctly with a mercator-family projection - got "${name}". Rendering anyway.`
56
+ );
57
+ }
58
+ });
59
+
60
+ /** `coordinates`, with the projection defaulting to `'mercator'` under a tile layer. */
61
+ const resolvedCoordinates = $derived.by(
62
+ (): CoordinatesConfig => ({
63
+ ...coordinates,
64
+ projection: coordinates.projection ?? (styles.tileLayer ? 'mercator' : undefined)
65
+ })
66
+ );
67
+
68
+ // ── Legend-driven range filter (mirrors HeatmapPlot's own) ────────────────
69
+ const legendInteraction = $derived(LegendState.current());
70
+ const range = $derived(legendInteraction?.range);
71
+
72
+ /** `scales` plus the fixed lon/lat frame every projection renders against. */
73
+ const layoutScales = $derived({
74
+ ...scales,
75
+ x: { domain: [-180, 180] },
76
+ y: { domain: [90, -90] }
77
+ });
78
+
79
+ const ctx = $derived<GeoPlotCtx<TProps>>({
80
+ cfg,
81
+ range,
82
+ fill: styles.fill,
83
+ fillOpacity: styles.fillOpacity,
84
+ stroke: styles.stroke,
85
+ strokeWidth: styles.strokeWidth,
86
+ onFeatureClick: styles.onFeatureClick
87
+ });
88
+ // The kind's pipeline, built once by its plot, over the state this core seeds.
89
+ const plotState = $derived(
90
+ pipeline!.run(
91
+ {
92
+ rawFeatures,
93
+ featureId,
94
+ color,
95
+ grouping,
96
+ opacity,
97
+ excludeParts,
98
+ segments,
99
+ scales,
100
+ authoredMarkers: markers,
101
+ tooltip,
102
+ width,
103
+ height,
104
+ margins
105
+ },
106
+ ctx
107
+ ) as GeoPlotState<TProps>
108
+ );
109
+
110
+ const allFeatures = $derived(plotState.allFeatures!);
111
+ const features = $derived(plotState.features!);
112
+
113
+ /** `styles`, with the drawn features handed to the tile layer for its fit. */
114
+ const resolvedStyles = $derived(
115
+ styles.tileLayer ? { ...styles, tileLayer: { ...styles.tileLayer, features } } : styles
116
+ );
117
+
118
+ // The features match the pointer themselves, while the plot's hover is active.
119
+ const markersOut = $derived(
120
+ (plotState.markers ?? []).map((m) =>
121
+ m.type === 'geo' && !plotState.hover!.active ? { ...m, hover: undefined } : m
122
+ )
123
+ );
124
+
125
+ /** What `BasePlotLayout` draws from: the features, where each sits, the hover config and scales. */
126
+ const layoutState = $derived({
127
+ hover: plotState.hover,
128
+ hoverPosition: plotState.hoverPosition,
129
+ hoverRows: plotState.hoverRows,
130
+ markers: markersOut,
131
+ scales: layoutScales,
132
+ channels: {
133
+ color: { source: ChannelName.of(color, 'color') },
134
+ opacity: { source: ChannelName.of(opacity, 'opacity') }
135
+ },
136
+ colorDomain: plotState.colorDomain,
137
+ opacityDomain: plotState.opacityDomain,
138
+ styles: resolvedStyles,
139
+ marginEstimate: Margins.GEO_ESTIMATE
140
+ });
141
+ </script>
142
+
143
+ <!-- `layoutScales` pins x/y to the lon/lat range, which `contour` markers read. -->
144
+ <BasePlotLayout
145
+ {width}
146
+ {height}
147
+ state={layoutState}
148
+ coordinates={resolvedCoordinates}
149
+ bind:margins
150
+ geoAllFeatures={allFeatures}
151
+ />