@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,7 @@
1
+ /**
2
+ * `patch` deep-merged over `base`: plain objects merge key by key, anything
3
+ * else (arrays included) in `patch` replaces, and an `undefined` in `patch`
4
+ * leaves `base` as it is. Either side may be absent - the other is returned.
5
+ */
6
+ export declare function merge<T extends object>(base: T, patch: object | undefined): T;
7
+ export declare function merge<T extends object>(base: T | undefined, patch: T | undefined): T | undefined;
@@ -0,0 +1,17 @@
1
+ function isPlainObject(value) {
2
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
3
+ }
4
+ export function merge(base, patch) {
5
+ if (!base)
6
+ return patch;
7
+ if (!patch)
8
+ return base;
9
+ const out = { ...base };
10
+ for (const [key, value] of Object.entries(patch)) {
11
+ if (value === undefined)
12
+ continue;
13
+ const prev = out[key];
14
+ out[key] = isPlainObject(prev) && isPlainObject(value) ? merge(prev, value) : value;
15
+ }
16
+ return out;
17
+ }
@@ -0,0 +1,9 @@
1
+ import type { OpacityScaleConfig } from '../types/layout/scales';
2
+ /**
3
+ * Resolves an {@link OpacityScaleConfig} into a `value => opacity` function -
4
+ * mirrors `resolveColorScale`'s shape, but the output is always a number in
5
+ * roughly `[0,1]` instead of a CSS color string. Callers must apply the
6
+ * result as a literal constant per mark instance (never a per-row function
7
+ * handed straight to svelteplot) - see the type's own doc comment for why.
8
+ */
9
+ export declare function resolveOpacityScale(config: OpacityScaleConfig | undefined, computedDomain: [number, number] | string[] | undefined, defaultRange: [number, number]): (value: unknown) => number;
@@ -0,0 +1,38 @@
1
+ import { normalize } from './color';
2
+ /**
3
+ * Resolves an {@link OpacityScaleConfig} into a `value => opacity` function -
4
+ * mirrors `resolveColorScale`'s shape, but the output is always a number in
5
+ * roughly `[0,1]` instead of a CSS color string. Callers must apply the
6
+ * result as a literal constant per mark instance (never a per-row function
7
+ * handed straight to svelteplot) - see the type's own doc comment for why.
8
+ */
9
+ export function resolveOpacityScale(config, computedDomain, defaultRange) {
10
+ const domain = config?.domain ?? computedDomain;
11
+ const range = config?.range ?? defaultRange;
12
+ const unknown = config?.unknown ?? 1;
13
+ if (!domain || domain.length === 0)
14
+ return () => unknown;
15
+ if (typeof range === 'object' && !Array.isArray(range)) {
16
+ return (v) => (v == null ? unknown : (range[String(v)] ?? unknown));
17
+ }
18
+ if (typeof domain[0] === 'string') {
19
+ const categories = domain;
20
+ const [lo, hi] = range;
21
+ return (v) => {
22
+ if (v == null)
23
+ return unknown;
24
+ const idx = categories.indexOf(String(v));
25
+ if (idx < 0)
26
+ return unknown;
27
+ return categories.length > 1 ? lo + ((hi - lo) * idx) / (categories.length - 1) : lo;
28
+ };
29
+ }
30
+ const [dLo, dHi] = domain;
31
+ const [rLo, rHi] = range;
32
+ return (v) => {
33
+ if (v == null)
34
+ return unknown;
35
+ const t = normalize(Number(v), dLo, dHi);
36
+ return rLo + (rHi - rLo) * t;
37
+ };
38
+ }
@@ -0,0 +1,31 @@
1
+ import type { SymbolScaleConfig } from '../types/layout/scales';
2
+ import type { SymbolType } from '../types/plots/constants';
3
+ /**
4
+ * Resolves a {@link SymbolScaleConfig} into a `value => shape` function -
5
+ * always a discrete category lookup, unlike every other channel here (there's
6
+ * no continuous case for a shape). Resolves to a plain shape-name string,
7
+ * which svelteplot recognizes as a literal and renders as-is - safe to hand
8
+ * straight to a per-row accessor, unlike `resolveOpacityScale`'s output.
9
+ * `defaultRange` mirrors `resolveOpacityScale`'s own required (not defaulted)
10
+ * parameter - callers pass the theme's own `cfg.symbols` rather than this
11
+ * module hardcoding a second copy of the default cycle.
12
+ */
13
+ export declare function resolveSymbolScale(config: SymbolScaleConfig | undefined, computedDomain: string[] | undefined, defaultRange: SymbolType[]): (value: unknown) => SymbolType;
14
+ /**
15
+ * A symbol's SVG path, as svelteplot's `dot` mark draws it: the same
16
+ * d3-shape symbol, sized to the area of a circle of the given radius.
17
+ */
18
+ export declare class SymbolPath {
19
+ #private;
20
+ private constructor();
21
+ /** The path of `symbol` at `radius`, centred on the origin. */
22
+ static of(symbol: SymbolType, radius: number): string;
23
+ /** The path of `symbol`, scaled to fit and centred in a `size`-wide square from the origin. */
24
+ static fitted(symbol: SymbolType, size: number): string;
25
+ moveTo(x: number, y: number): void;
26
+ lineTo(x: number, y: number): void;
27
+ closePath(): void;
28
+ rect(x: number, y: number, w: number, h: number): void;
29
+ /** Only the full circle d3-shape's `circle` draws, from its rightmost point. */
30
+ arc(x: number, y: number, r: number): void;
31
+ }
@@ -0,0 +1,92 @@
1
+ import { maybeSymbol } from 'svelteplot/helpers/symbols.js';
2
+ /**
3
+ * Resolves a {@link SymbolScaleConfig} into a `value => shape` function -
4
+ * always a discrete category lookup, unlike every other channel here (there's
5
+ * no continuous case for a shape). Resolves to a plain shape-name string,
6
+ * which svelteplot recognizes as a literal and renders as-is - safe to hand
7
+ * straight to a per-row accessor, unlike `resolveOpacityScale`'s output.
8
+ * `defaultRange` mirrors `resolveOpacityScale`'s own required (not defaulted)
9
+ * parameter - callers pass the theme's own `cfg.symbols` rather than this
10
+ * module hardcoding a second copy of the default cycle.
11
+ */
12
+ export function resolveSymbolScale(config, computedDomain, defaultRange) {
13
+ const domain = config?.domain ?? computedDomain ?? [];
14
+ const range = config?.range ?? defaultRange;
15
+ const unknown = config?.unknown ?? 'circle';
16
+ if (typeof range === 'object' && !Array.isArray(range)) {
17
+ return (v) => (v == null ? unknown : (range[String(v)] ?? unknown));
18
+ }
19
+ return (v) => {
20
+ if (v == null || !domain.length)
21
+ return unknown;
22
+ const idx = domain.indexOf(String(v));
23
+ return idx < 0 ? unknown : range[idx % range.length];
24
+ };
25
+ }
26
+ /**
27
+ * A symbol's SVG path, as svelteplot's `dot` mark draws it: the same
28
+ * d3-shape symbol, sized to the area of a circle of the given radius.
29
+ */
30
+ export class SymbolPath {
31
+ #d = '';
32
+ #bounds = { x0: Infinity, y0: Infinity, x1: -Infinity, y1: -Infinity };
33
+ #k;
34
+ #dx;
35
+ #dy;
36
+ constructor(k = 1, dx = 0, dy = 0) {
37
+ this.#k = k;
38
+ this.#dx = dx;
39
+ this.#dy = dy;
40
+ }
41
+ /** The path of `symbol` at `radius`, centred on the origin. */
42
+ static of(symbol, radius) {
43
+ return SymbolPath.#draw(symbol, radius, new SymbolPath()).#d;
44
+ }
45
+ /** The path of `symbol`, scaled to fit and centred in a `size`-wide square from the origin. */
46
+ static fitted(symbol, size) {
47
+ const { x0, y0, x1, y1 } = SymbolPath.#draw(symbol, 1, new SymbolPath()).#bounds;
48
+ const k = size / Math.max(x1 - x0, y1 - y0);
49
+ const fit = new SymbolPath(k, size / 2 - (k * (x0 + x1)) / 2, size / 2 - (k * (y0 + y1)) / 2);
50
+ return SymbolPath.#draw(symbol, 1, fit).#d;
51
+ }
52
+ static #draw(symbol, radius, path) {
53
+ maybeSymbol(symbol === 'line' ? 'circle' : symbol).draw(path, radius ** 2 * Math.PI);
54
+ return path;
55
+ }
56
+ moveTo(x, y) {
57
+ this.#d += `M${this.#point(x, y)}`;
58
+ }
59
+ lineTo(x, y) {
60
+ this.#d += `L${this.#point(x, y)}`;
61
+ }
62
+ closePath() {
63
+ this.#d += 'Z';
64
+ }
65
+ rect(x, y, w, h) {
66
+ this.moveTo(x, y);
67
+ this.lineTo(x + w, y);
68
+ this.lineTo(x + w, y + h);
69
+ this.lineTo(x, y + h);
70
+ this.closePath();
71
+ }
72
+ /** Only the full circle d3-shape's `circle` draws, from its rightmost point. */
73
+ arc(x, y, r) {
74
+ this.#point(x, y - r);
75
+ this.#point(x, y + r);
76
+ const kr = this.#k * r;
77
+ const left = this.#point(x - r, y);
78
+ const right = this.#point(x + r, y);
79
+ this.#d += `A${kr},${kr},0,1,1,${left}A${kr},${kr},0,1,1,${right}`;
80
+ }
81
+ /** `x`,`y` in the output's coordinates, widening the drawn bounds. */
82
+ #point(x, y) {
83
+ const b = this.#bounds;
84
+ [b.x0, b.y0, b.x1, b.y1] = [
85
+ Math.min(b.x0, x),
86
+ Math.min(b.y0, y),
87
+ Math.max(b.x1, x),
88
+ Math.max(b.y1, y)
89
+ ];
90
+ return `${this.#k * x + this.#dx},${this.#k * y + this.#dy}`;
91
+ }
92
+ }
@@ -0,0 +1,137 @@
1
+ # Architecture
2
+
3
+ For contributors. A figure is built from a few layers, each knowing only the one below it. A public **plot** (`BarPlot`, `LinePlot`, ...) hands its kind's **defaults** to the generic **`Plot`**; `Plot` frames everything in a **`Figure`** (box, stores and chrome) and slices the data by **timeline** and **facet**. A **`PlotComposer`** reuses the same `Figure` and the same **`Grid`** that facets lay out on, so both share one implementation of the frame (title, legend, caption, theme variables, shared hover and legend toggles), of the grid (pixel tracks, labels, margin alignment) and of the cells.
4
+
5
+ ## Source layout
6
+
7
+ | Folder (`src/lib/`) | Holds |
8
+ | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
9
+ | `plots/<kind>/` | `Plot.svelte` (public component), `defaults.ts` (the kind's options for the shared phases), `markers.ts` (the kind's marks) |
10
+ | `phases/` | One class per pipeline phase, and `Pipeline` |
11
+ | `layout/` | `plot` (generic `Plot`, `Core`, `PanelRun`, public context), `figure`, `grid`, `facet`, `timeline`, `composer`, `legend`, `hover`, `tooltip`, `margins`, `coordinates`, `scales`, `styles`, `base` (`BasePlotLayout`, the svelteplot plot) |
12
+ | `markers/` | One component per marker type |
13
+ | `configuration/` | The global config store, defaults and themes |
14
+ | `types/` | Every type another file imports |
15
+ | `utils/` | Color, grouping, merge, interpolation and other helpers |
16
+
17
+ ## How a plot is built
18
+
19
+ Solid arrows are "renders"; the dotted line is "builds".
20
+
21
+ ```mermaid
22
+ %%{init: {"themeVariables": {"lineColor": "#8a8f98"}}}%%
23
+ flowchart TD
24
+ Kind["<b>Plot.svelte</b><br/>BarPlot, LinePlot, ..."]
25
+ Defaults["<b>defaults.ts</b><br/>phase options, markers, hover, timeline"]
26
+ Plot["<b>Plot</b><br/>builds the Pipeline, one core per slice"]
27
+ Figure["<b>Figure</b><br/>box or grid cell, hover store, legend toggles"]
28
+ Chrome["<b>FigureChrome</b><br/>title, legend, caption"]
29
+ Timeline["<b>TimelineLayout</b>"]
30
+ PanelRun["<b>PanelRun</b><br/>data phases once, every panel"]
31
+ Facet["<b>FacetLayout</b>"]
32
+ Core["<b>Core</b><br/>its panel phases, or every phase"]
33
+ Base["<b>BasePlotLayout</b><br/>svelteplot Plot, axes, markers"]
34
+
35
+ Kind -->|core props + defaults| Plot
36
+ Kind -.- Defaults
37
+ Plot --> Figure
38
+ Figure -->|with chrome| Chrome
39
+ Figure -->|with a timeline| Timeline
40
+ Figure -->|without one| Facet
41
+ Timeline -->|with a facet| PanelRun --> Facet
42
+ Timeline --> Facet
43
+ Facet -->|one per slice| Core
44
+ Core --> Base
45
+
46
+ classDef public stroke-width:3px
47
+ class Kind,Plot public
48
+ linkStyle default stroke:#8a8f98,stroke-width:2px
49
+ ```
50
+
51
+ 1. A kind's `Plot.svelte` splits its props into chrome (`title`, `legend`, ...), `timeline`, `facet` and the core props, and renders the shared `Plot` with its `defaults` builder.
52
+ 2. `Plot` builds the kind's **`Pipeline`** once and renders a `Figure` whose body is the `TimelineLayout`, wrapping the `FacetLayout`, wrapping one `Core` per slice. Without a timeline or a facet, the one cell is the whole plot. Each facet's cell gets its scales (shared or free, per `facet.scales`) and whether its axes draw (per `facet.axes` and its edges in the grid).
53
+ 3. `FacetLayout` turns the rows into facets - one per `by` value, flowed into `columns`, or one per `rows` x `cols` combination - and places them on a `Grid`, one `GridCell` each. Every plot reports the margins it settled on; once all have, each column and row pins its widest ones, so the plot areas line up.
54
+ 4. `Core` runs the pipeline over its props and hands the result to `BasePlotLayout`, which draws the svelteplot plot, the axes and the markers.
55
+
56
+ ## The pipeline
57
+
58
+ A `Pipeline` is an ordered list of **phase stages**, each a class in `phases/`. A kind's `defaults.ts` supplies the options each stage needs (its marks, its value labels, its hover strategy, its timeline behaviour); `Pipeline.ofAxisKind` assembles the shared stages around them. A kind that is not axis-based (the map) builds a pipeline of its own.
59
+
60
+ | Phase | Runs | Does |
61
+ | ------------------ | ------------- | --------------------------------------------------------------- |
62
+ | `facet` | once per plot | Splits rows into panels |
63
+ | `data` | once per plot | Builds series from `data` or `series`, infers axes (`PlotAxes`) |
64
+ | `mapping` | once per plot | Resolves channel accessors |
65
+ | `transforms` | once per plot | Runs the plot's `transforms` over all series |
66
+ | `statistics` | once per plot | Derives markers from `statistics` |
67
+ | `sharedScales` | once per plot | Domains the panels share |
68
+ | `scales` | per panel | Final scales, in the panel's box |
69
+ | `styles` | per panel | `styles`, value labels, segments |
70
+ | `markers` | per panel | Composes the kind's marks, author markers and value labels |
71
+ | `tooltip`, `hover` | per panel | Tooltip text, hover points and strategy |
72
+
73
+ The first six are the **data phases** (`Pipeline.DATA_PHASES`). With a facet, `Plot` runs them once over every row (`PanelRun`, reused for a timeline step or a legend that omits a series), and each panel's `Core` runs only the rest. Without a facet, one `Core` runs every phase. Stages declared out of order still run in phase order, with a warning.
74
+
75
+ ## Facets and the composer share one grid
76
+
77
+ The dotted arrow is "reads from": each plot reports its margins to its cell and reads back the pinned ones.
78
+
79
+ ```mermaid
80
+ %%{init: {"themeVariables": {"lineColor": "#8a8f98"}}}%%
81
+ flowchart TD
82
+ Facet["<b>FacetLayout</b><br/>by or rows x cols"]
83
+ Composer["<b>PlotComposer</b><br/>layout, tags, align"]
84
+ Figure["<b>Figure</b><br/>its box, or a cell of the grid above"]
85
+ TimelineFrame["<b>TimelineFrame</b><br/>timeline gutter"]
86
+ Grid["<b>Grid</b><br/>pixel tracks, labels, margin alignment"]
87
+ Cell["<b>GridCell</b><br/>slot or inset, label above its box"]
88
+ Core["<b>Core</b> of each facet"]
89
+ Any["any plot, or a nested PlotComposer"]
90
+ Base["<b>BasePlotLayout</b>"]
91
+
92
+ Facet -->|grid and paginated modes| Grid
93
+ Composer --> Figure --> Grid
94
+ Figure -->|with a timeline| TimelineFrame --> Grid
95
+ Composer -->|children| Any
96
+ Any -->|its own Figure takes| Cell
97
+ Grid -->|places| Cell
98
+ Cell -->|facet| Core
99
+ Core --> Base
100
+ Base -.->|reports margins, reads pinned ones| Cell
101
+
102
+ classDef public stroke-width:3px
103
+ class Composer public
104
+ linkStyle default stroke:#8a8f98,stroke-width:2px
105
+ ```
106
+
107
+ `PlotComposer` renders a `Figure` around a `Grid` (inside a `TimelineFrame` when it has a `timeline`), laid out by `layout` (`columns` or named `areas`, `widths`/`heights` weights, `gap`). Every plot drawn straight in it - or another `PlotComposer` - takes a cell through its own `Figure`: its `area`, an `inset` over it, or the next free one, with the composer's tag above it, drawn at the cell's size. Anything that is not a plot goes in a `GridCell`, which marks what it draws as placed so a plot inside takes no other cell. `layout.align` turns on the margin alignment facets use; it assumes the panels' plots draw no chrome of their own, since the grid only sees each plot's own margins.
108
+
109
+ ## Context
110
+
111
+ Dependencies between layers go through Svelte context, so a layer never imports the one that provides what it reads:
112
+
113
+ | Context | Provided by | Read by |
114
+ | --------------- | ------------------------------------------------------------------- | --------------------------------------------------------------------- |
115
+ | Hover store | `Figure` (the outermost; nested figures share it) | every core's tooltip and hover sync |
116
+ | Legend toggles | `Figure` (a figure with its own `legend` scopes them) | legends and every core below |
117
+ | Timeline | `Figure` | the plot's timeline layout, the player bar, `useFigure().timeline` |
118
+ | Shared timeline | `PlotComposer` with a `timeline` | `Plot`, which then draws no control of its own |
119
+ | Hover scope | `GridCell` in a composer's grid, and `HoverScope` around each facet | hover sync, to tell panels and facets apart |
120
+ | Grid | `Grid` | `GridCell` (registers, gets its box and tag), `Figure` (takes a cell) |
121
+ | Cell alignment | `GridCell` | `BasePlotLayout` (pinned margins), `MarginReporter` |
122
+
123
+ The public readers of that state are `useFigure()` and `usePlot()` ([Reading plot state](state.md)).
124
+
125
+ ## Adding a plot kind
126
+
127
+ 1. Define its props and state types under `types/plots/<kind>/`.
128
+ 2. Write `plots/<kind>/defaults.ts`: a builder returning the options of each phase it customises (`data`, `mapping`, `scales`, `styles`, `markers`, `hover`, `timeline`, ...).
129
+ 3. Write `plots/<kind>/Plot.svelte`: split chrome, `timeline`, `facet` and core props and render the shared `Plot` with the builder.
130
+ 4. Export it from `src/lib/index.ts`, add stories under `stories/plots/<kind>/`, tests under `tests/unit/plots/<kind>/`, and a section in [Plots](plots.md).
131
+
132
+ ## Conventions
133
+
134
+ - A type that another file imports lives under `src/lib/types`, not in its implementation file.
135
+ - Logic that belongs together is a class (`Margins`, `PlotAxes`, `ValueLabels`, `LegendState`), preferred over loose functions.
136
+ - The configuration is data only (it is cloned on write); behaviour is passed through plot props.
137
+ - Names of constructors and derivations use `build*`.
package/docs/chrome.md ADDED
@@ -0,0 +1,99 @@
1
+ # Chrome
2
+
3
+ The chrome is everything a figure draws around its plot: title, subtitle, legend, timeline player, caption. Every plot and every [composer](composer.md) takes the same chrome props.
4
+
5
+ <!-- example: examples/Chrome.svelte -->
6
+
7
+ ```svelte
8
+ <script lang="ts">
9
+ import { LinePlot } from '@fundar/data-chart-telling';
10
+ import { PRICES } from './data';
11
+ </script>
12
+
13
+ <!-- A plot carries its own chrome: title, subtitle, legend and caption. -->
14
+ <LinePlot
15
+ width={720}
16
+ height={440}
17
+ title="Commodity prices"
18
+ subtitle="Price index, January 2021 = 100"
19
+ caption="Source: IMF, Primary Commodity Prices"
20
+ data={PRICES}
21
+ x="date"
22
+ y="index"
23
+ color="commodity"
24
+ />
25
+ ```
26
+
27
+ <!-- /example -->
28
+
29
+ ![A plot with title, subtitle and caption](images/chrome.png)
30
+
31
+ | Prop | Type | Meaning |
32
+ | ---------- | ----------------------- | ------------------------------------------------ |
33
+ | `title` | `string` | Heading |
34
+ | `subtitle` | `string` | Line under the title |
35
+ | `caption` | `string` | Note under the plot |
36
+ | `header` | `Snippet` | Replaces `title` and `subtitle` with your markup |
37
+ | `footer` | `Snippet` | Replaces `caption` with your markup |
38
+ | `legend` | see [Legend](legend.md) | The legend |
39
+ | `order` | `PlotChromeEntry[]` | Which blocks draw, top to bottom |
40
+
41
+ `header` and `footer` are snippets declared inside the component:
42
+
43
+ ```svelte
44
+ <LinePlot ...>
45
+ {#snippet header()}
46
+ <div style="display: flex; justify-content: space-between">
47
+ <h3>My plot</h3>
48
+ <img src="/logo.svg" alt="Logo" />
49
+ </div>
50
+ {/snippet}
51
+
52
+ {#snippet footer()}
53
+ <small>Source: <a href="...">Dataset</a></small>
54
+ {/snippet}
55
+ </LinePlot>
56
+ ```
57
+
58
+ A `header` takes the place of `title` and `subtitle`, and a `footer` the place of `caption`; a component sets one or the other of each pair. Components inside the snippets can read the figure with [`useFigure()`](state.md).
59
+
60
+ ## Order
61
+
62
+ `order` lists the blocks from top to bottom. The blocks are `'header'`, `'title'`, `'subtitle'`, `'legend'`, `'plot'`, `'timeline'` (a player bar, or a horizontal rule), `'caption'`, `'footer'` and `'divider'`.
63
+
64
+ - A block left out is not drawn - except `'plot'`, which then goes last.
65
+ - `'divider'` draws a line between the two blocks around it, and only when both are drawn. Several dividers may appear.
66
+ - A row puts two or three blocks side by side: `'(plot, timeline)'`, `'(legend, plot)'`. The `plot` takes the width the others leave; a row without `plot` shares its width among the blocks.
67
+
68
+ <!-- example: examples/ChromeOrder.svelte -->
69
+
70
+ ```svelte
71
+ <script lang="ts">
72
+ import { LinePlot } from '@fundar/data-chart-telling';
73
+ import { PRICES } from './data';
74
+ </script>
75
+
76
+ <!-- `order` places the chrome blocks; `divider` draws a rule between them. -->
77
+ <LinePlot
78
+ width={720}
79
+ height={460}
80
+ title="Commodity prices"
81
+ subtitle="Price index"
82
+ caption="Source: IMF, Primary Commodity Prices"
83
+ data={PRICES}
84
+ x="date"
85
+ y="index"
86
+ color="commodity"
87
+ order={['title', 'subtitle', 'divider', 'legend', 'plot', 'divider', 'caption']}
88
+ />
89
+ ```
90
+
91
+ <!-- /example -->
92
+
93
+ ![Dividers placed between chrome blocks](images/chrome-order.png)
94
+
95
+ The default order, from the configuration's `chrome.order`: `header`, `title`, `subtitle`, `divider`, `legend`, `plot`, `timeline`, `footer`, `caption`. It can be changed globally with `setConfiguration({ chrome: { order: [...] } })`.
96
+
97
+ ## Look
98
+
99
+ Fonts, sizes, colors and spacing of each block come from the [configuration](theming.md): `title`, `subtitle`, `caption`, `legend`, `divider`, `spacing` and `chrome.rowGap`.
@@ -0,0 +1,69 @@
1
+ # Composer
2
+
3
+ `PlotComposer` puts several plots in one figure. It is a figure like any plot: it takes the same [chrome](chrome.md) (`title`, `subtitle`, `caption`, `legend`, `order`) and a `width` and `height`, and lays its children out on a grid.
4
+
5
+ <!-- example: examples/Composer.svelte -->
6
+
7
+ ```svelte
8
+ <script lang="ts">
9
+ import { PlotComposer, LinePlot, BarPlot, ScatterPlot } from '@fundar/data-chart-telling';
10
+ import { REGION_VALUES, PROVINCE_VALUES, COUNTRIES } from './data';
11
+ </script>
12
+
13
+ <!-- Several plots in one figure, placed on named areas of a grid. -->
14
+ <PlotComposer
15
+ width={900}
16
+ height={560}
17
+ title="Three views, one figure"
18
+ legend={false}
19
+ tags="A"
20
+ layout={{ areas: ['a a b', 'a a c'] }}
21
+ >
22
+ <LinePlot area="a" data={REGION_VALUES} x="date" y="value" color="region" tooltip />
23
+ <BarPlot
24
+ area="b"
25
+ data={PROVINCE_VALUES.filter((row) => row.sex === 'female').slice(0, 3)}
26
+ x="province"
27
+ y="value"
28
+ />
29
+ <ScatterPlot area="c" data={COUNTRIES} x="gdp" y="life" />
30
+ </PlotComposer>
31
+ ```
32
+
33
+ <!-- /example -->
34
+
35
+ ![Three plots in one figure on a named-area layout](images/composer.png)
36
+
37
+ Plots drawn straight inside the composer take a cell of the grid and draw at the cell's size - they need no `width` or `height`.
38
+
39
+ ## Layout
40
+
41
+ `layout` arranges the cells:
42
+
43
+ | Field | Meaning |
44
+ | ------------------- | --------------------------------------------------------------------------------------------------------------------- |
45
+ | `columns` | Flow children into this many columns |
46
+ | `areas` | Named cells: one string per row, names separated by spaces, `.` for an empty cell (`['a a b', 'a a c']`) |
47
+ | `widths`, `heights` | Relative track sizes |
48
+ | `gap` | Pixels between cells (default 12) |
49
+ | `align` | Line up every panel's plot area with its row and column, as facets do. Assumes the panels draw no chrome of their own |
50
+
51
+ ## Placing a child
52
+
53
+ - `area="a"` puts a plot in a named cell of `areas`.
54
+ - `inset={{ left, bottom, right, top }}` floats a plot over its area, as fractions of it (from the left and bottom edges) - a small map over a larger chart, say.
55
+ - With neither, a plot takes the next free cell.
56
+ - Anything that is not a plot goes in a `GridCell`, which takes the same placement (`area`, or `row`/`col` with `rowSpan`/`colSpan`, or `inset`) and a `label`: `<GridCell area="b">{#snippet children({ width, height })}...{/snippet}</GridCell>`.
57
+ - A `PlotComposer` can be nested in a cell.
58
+
59
+ ## Tags
60
+
61
+ `tags` stamps a label above each panel: `'A'` (A, B, C...), `'a'`, `'1'`, `'I'`, `'i'`, or an explicit list of strings.
62
+
63
+ ## Shared hover, legend and timeline
64
+
65
+ - `hover={{ strategy, sync }}` sets how hover finds related points and whether one panel's hover shows in the others.
66
+ - The legend toggles are shared: a composer with a `legend` of its own scopes the toggles to it, and turning a series off dims it in every plot.
67
+ - `timeline={{ values, type, player, progress, ... }}` gives every panel one timeline. Plots inside with their own `timeline` follow its `progress`, and the figure draws no per-plot timeline control. The options are those of a [timeline](timeline.md), with `values` required.
68
+
69
+ Everything inside can read the figure with [`useFigure()`](state.md).
@@ -0,0 +1,99 @@
1
+ # Concepts
2
+
3
+ ## Plots and figures
4
+
5
+ A **plot** is one graph: axes and marks. Every plot is a component named after what it draws - `LinePlot`, `AreaPlot`, `BarPlot`, `HistogramPlot`, `BoxPlot`, `HeatmapPlot`, `PyramidPlot`, `ScatterPlot`, `GeoPlot` (see [Plots](plots.md)).
6
+
7
+ A plot is drawn inside a **figure**: the box that holds the plot together with its [chrome](chrome.md) (title, subtitle, legend, timeline, caption). Every plot component is a figure, so a plot with a `title` and a `legend` is still one component. A [`PlotComposer`](composer.md) is a figure that holds several plots.
8
+
9
+ ## Rows and series
10
+
11
+ A plot draws from one of two data shapes, which are mutually exclusive.
12
+
13
+ **Flat rows** - `data` plus the field for each channel. The plot groups the rows into series itself:
14
+
15
+ ```svelte
16
+ <LinePlot data={rows} x="year" y="value" color="region" {width} {height} />
17
+ ```
18
+
19
+ **Pre-built series** - `series`, an array where each series carries its own name, accessors and rows:
20
+
21
+ ```svelte
22
+ <LinePlot
23
+ series={[
24
+ { name: 'North', x: 'year', y: 'value', data: northRows },
25
+ { name: 'South', x: 'year', y: 'value', data: southRows }
26
+ ]}
27
+ {width}
28
+ {height}
29
+ />
30
+ ```
31
+
32
+ A series' `name` is what the legend, the value labels and the tooltip show.
33
+
34
+ ## Channels
35
+
36
+ A **channel** maps a field of each row to a visual property. Each channel takes a field name (`'region'`) or an accessor function (`(d) => d.region`).
37
+
38
+ | Channel | Maps a row to | Configure with |
39
+ | ---------- | ----------------------------------------------------------- | ---------------------- |
40
+ | `x`, `y` | Position on the horizontal and vertical axis | `scales.x`, `scales.y` |
41
+ | `color` | A color: categorical (one per value) or continuous (a ramp) | `scales.color` |
42
+ | `grouping` | Which series the row belongs to | `scales.grouping` |
43
+ | `opacity` | A fill or stroke opacity | `scales.opacity` |
44
+ | `symbol` | A marker shape (categorical) | `scales.symbol` |
45
+ | `r` | A dot radius, scaled so that area follows the value | `scales.r` |
46
+ | `length` | A vector or spike length | `scales.length` |
47
+
48
+ `grouping` splits `data` into series. When it is unset, `color` groups too, so one accessor both separates and colors the series - the usual case. Pass both to group by one field and color by another:
49
+
50
+ ```svelte
51
+ <ScatterPlot data={rows} x="gdp" y="life" grouping="country" color="temperature" {width} {height} />
52
+ ```
53
+
54
+ `r` and `length` also accept a literal number, which is then a fixed pixel size and bypasses the scale.
55
+
56
+ Details for each channel scale are in [Scales](scales.md).
57
+
58
+ ## Props every plot shares
59
+
60
+ | Prop | Purpose | Docs |
61
+ | ----------------------------------------------------------------- | ------------------------------------------------------------ | --------------------------------------------------------- |
62
+ | `width`, `height` | Pixel size of the figure (not needed inside a composer cell) | [Getting started](getting-started.md) |
63
+ | `data` / `series` | The rows | above |
64
+ | `x`, `y`, `color`, `grouping`, `opacity`, `symbol`, `r`, `length` | Channels | above |
65
+ | `scales` | Axis and channel scales | [Scales](scales.md) |
66
+ | `styles` | Value labels, frame, gap filling | [Styles and segments](styles-and-segments.md) |
67
+ | `segments` | Style ranges of the data | [Styles and segments](styles-and-segments.md) |
68
+ | `markers` | Extra marks | [Markers](markers.md) |
69
+ | `transforms`, `statistics` | Derive rows before drawing | [Transforms and statistics](transforms-and-statistics.md) |
70
+ | `margins` | Space around the plot area | below |
71
+ | `tooltip` | Floating tooltip | [Tooltip and hover](tooltip-and-hover.md) |
72
+ | `legend` | The legend | [Legend](legend.md) |
73
+ | `timeline` | Step through the data by a field | [Timeline](timeline.md) |
74
+ | `facet` | Small multiples | [Facets](facets.md) |
75
+ | `title`, `subtitle`, `caption`, `header`, `footer`, `order` | Chrome | [Chrome](chrome.md) |
76
+
77
+ `GeoPlot` takes the same chrome, `tooltip`, `legend`, `styles`, `segments` and `markers`, with GeoJSON in `data` instead of rows and `coordinates` in place of axes (see [Maps](geo.md)).
78
+
79
+ ### Margins
80
+
81
+ `margins` takes `{ top, right, bottom, left }`. Each side is a number (pixels) or `'auto'`, which fits the side to what is drawn there - tick labels, axis titles, value labels. All sides are `'auto'` by default. `margins` is bindable: `bind:margins` reports the margins the plot settled on.
82
+
83
+ ## What is off until asked for
84
+
85
+ A plot draws its marks, axes and automatic legend by default. These are switched on by a prop:
86
+
87
+ | Feature | Switch |
88
+ | ------------------------------- | --------------------------------------------------------- |
89
+ | Tooltip | `tooltip` (`true` or an options object) |
90
+ | In-plot hover highlight | a `{ type: 'hover' }` marker |
91
+ | Value labels | `styles={{ values: { show: true } }}` |
92
+ | Toggling series from the legend | `legend={{ series: { interactive: { enabled: true } } }}` |
93
+ | A frame around the plot area | `styles={{ frame: true }}` |
94
+ | Timeline | `timeline={{ accessor: 'year' }}` |
95
+ | Facets | `facet={{ by: 'region' }}` |
96
+
97
+ ## Reading the rest of the docs
98
+
99
+ Every config object is typed, and each field carries a JSDoc comment. The types exported from the package root (`AxisBasedScalesConfig`, `AxisBasedMarkersConfig`, `LegendSection`, ...) are the exact shapes, and using `satisfies` on a config object gives completion while keeping the literal type.