@fundar/data-chart-telling 0.0.63 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (786) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/LICENSE +21 -0
  3. package/README.md +81 -558
  4. package/dist/configuration/config.svelte.d.ts +5 -5
  5. package/dist/configuration/config.svelte.js +133 -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 +433 -80
  17. package/dist/configuration/themes/index.js +6 -5
  18. package/dist/index.d.ts +34 -48
  19. package/dist/index.js +19 -35
  20. package/dist/layout/base/BasePlotLayout.svelte +312 -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 +20 -0
  69. package/dist/layout/hover/HoverSettings.js +27 -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 +365 -335
  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 +39 -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 +79 -0
  89. package/dist/layout/legend/LegendState.svelte.js +329 -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 +284 -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 +130 -0
  111. package/dist/layout/plot/PublicPlotContext.js +236 -0
  112. package/dist/layout/plot/Slice.d.ts +44 -0
  113. package/dist/layout/plot/Slice.js +98 -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/ScalesLayout.svelte +241 -206
  117. package/dist/layout/scales/ScalesLayout.svelte.d.ts +2 -1
  118. package/dist/layout/scales/buildScale.d.ts +5 -22
  119. package/dist/layout/scales/buildScale.js +11 -34
  120. package/dist/layout/scales/niceDomain.d.ts +3 -3
  121. package/dist/layout/scales/niceDomain.js +4 -4
  122. package/dist/layout/styles/StylesLayout.svelte +65 -65
  123. package/dist/layout/styles/TileLayer.svelte +78 -76
  124. package/dist/layout/styles/TileLayer.svelte.d.ts +1 -1
  125. package/dist/layout/styles/ValueLabels.d.ts +97 -0
  126. package/dist/layout/styles/ValueLabels.js +237 -0
  127. package/dist/layout/timeline/Timeline.svelte +80 -74
  128. package/dist/layout/timeline/TimelineFrame.svelte +86 -0
  129. package/dist/layout/timeline/TimelineFrame.svelte.d.ts +16 -0
  130. package/dist/layout/timeline/TimelineLayout.svelte +114 -169
  131. package/dist/layout/timeline/TimelineLayout.svelte.d.ts +2 -0
  132. package/dist/layout/timeline/TimelinePlayer.svelte +195 -0
  133. package/dist/layout/timeline/TimelinePlayer.svelte.d.ts +7 -0
  134. package/dist/layout/timeline/TimelineRule.svelte +50 -0
  135. package/dist/layout/timeline/TimelineRule.svelte.d.ts +7 -0
  136. package/dist/layout/timeline/TimelineState.svelte.d.ts +82 -0
  137. package/dist/layout/timeline/TimelineState.svelte.js +226 -0
  138. package/dist/layout/timeline/TimelineSteps.d.ts +24 -0
  139. package/dist/layout/timeline/TimelineSteps.js +48 -0
  140. package/dist/layout/tooltip/Tooltip.svelte +82 -85
  141. package/dist/layout/tooltip/Tooltip.svelte.d.ts +43 -24
  142. package/dist/layout/tooltip/TooltipState.svelte.d.ts +61 -0
  143. package/dist/layout/tooltip/TooltipState.svelte.js +107 -0
  144. package/dist/markers/MarkerKinds.d.ts +173 -0
  145. package/dist/markers/MarkerKinds.js +51 -0
  146. package/dist/markers/area/AreaMarker.svelte +110 -0
  147. package/dist/markers/area/AreaMarker.svelte.d.ts +7 -0
  148. package/dist/markers/arrow/ArrowMarker.svelte +28 -0
  149. package/dist/markers/arrow/ArrowMarker.svelte.d.ts +7 -0
  150. package/dist/markers/{BarMarker.svelte → bar/BarMarker.svelte} +54 -52
  151. package/dist/markers/{BarMarker.svelte.d.ts → bar/BarMarker.svelte.d.ts} +1 -1
  152. package/dist/markers/bollinger/BollingerMarker.svelte +44 -0
  153. package/dist/markers/bollinger/BollingerMarker.svelte.d.ts +7 -0
  154. package/dist/markers/box/BoxMarker.svelte +143 -0
  155. package/dist/markers/box/BoxMarker.svelte.d.ts +7 -0
  156. package/dist/markers/brush/BrushMarker.svelte +32 -0
  157. package/dist/markers/brush/BrushMarker.svelte.d.ts +7 -0
  158. package/dist/markers/cell/CellMarker.svelte +27 -0
  159. package/dist/markers/{CellMarker.svelte.d.ts → cell/CellMarker.svelte.d.ts} +1 -1
  160. package/dist/markers/contour/ContourClipMarker.svelte +83 -0
  161. package/dist/markers/{ContourClipMarker.svelte.d.ts → contour/ContourClipMarker.svelte.d.ts} +1 -1
  162. package/dist/markers/contour/ContourMarker.svelte +28 -0
  163. package/dist/markers/{ContourMarker.svelte.d.ts → contour/ContourMarker.svelte.d.ts} +1 -1
  164. package/dist/markers/delaunay/DelaunayLinkMarker.svelte +26 -0
  165. package/dist/markers/delaunay/DelaunayLinkMarker.svelte.d.ts +7 -0
  166. package/dist/markers/delaunay/DelaunayMeshMarker.svelte +26 -0
  167. package/dist/markers/delaunay/DelaunayMeshMarker.svelte.d.ts +7 -0
  168. package/dist/markers/delta/Delta.d.ts +21 -0
  169. package/dist/markers/delta/Delta.js +60 -0
  170. package/dist/markers/delta/DeltaMarker.svelte +94 -0
  171. package/dist/markers/{DeltaMarker.svelte.d.ts → delta/DeltaMarker.svelte.d.ts} +2 -2
  172. package/dist/markers/density/DensityMarker.svelte +63 -0
  173. package/dist/markers/density/DensityMarker.svelte.d.ts +7 -0
  174. package/dist/markers/difference/DifferenceMarker.svelte +30 -0
  175. package/dist/markers/difference/DifferenceMarker.svelte.d.ts +7 -0
  176. package/dist/markers/dot/DotMarker.svelte +102 -0
  177. package/dist/markers/{DotMarker.svelte.d.ts → dot/DotMarker.svelte.d.ts} +5 -17
  178. package/dist/markers/geo/GeoFeaturesMarker.svelte +39 -0
  179. package/dist/markers/{GeoFeaturesMarker.svelte.d.ts → geo/GeoFeaturesMarker.svelte.d.ts} +1 -1
  180. package/dist/markers/geo/GeoHoverMarker.svelte +28 -0
  181. package/dist/markers/{GeoHoverMarker.svelte.d.ts → geo/GeoHoverMarker.svelte.d.ts} +2 -2
  182. package/dist/markers/geo/GraticuleMarker.svelte +18 -0
  183. package/dist/markers/{GraticuleMarker.svelte.d.ts → geo/GraticuleMarker.svelte.d.ts} +1 -1
  184. package/dist/markers/geo/SphereMarker.svelte +15 -0
  185. package/dist/markers/{SphereMarker.svelte.d.ts → geo/SphereMarker.svelte.d.ts} +1 -1
  186. package/dist/markers/hover/HoverMarker.svelte +252 -0
  187. package/dist/markers/{HoverMarker.svelte.d.ts → hover/HoverMarker.svelte.d.ts} +10 -10
  188. package/dist/markers/hull/HullMarker.svelte +25 -0
  189. package/dist/markers/hull/HullMarker.svelte.d.ts +7 -0
  190. package/dist/markers/image/ImageMarker.svelte +22 -0
  191. package/dist/markers/image/ImageMarker.svelte.d.ts +7 -0
  192. package/dist/markers/inset/InsetMarker.svelte +184 -150
  193. package/dist/markers/inset/InsetMarker.svelte.d.ts +4 -4
  194. package/dist/markers/inset/insetLayout.d.ts +1 -1
  195. package/dist/markers/inset/insetLayout.js +6 -2
  196. package/dist/markers/inset/insetProjection.d.ts +1 -1
  197. package/dist/markers/inset/insetProjection.js +3 -3
  198. package/dist/markers/line/LineMarker.svelte +30 -0
  199. package/dist/markers/{LineMarker.svelte.d.ts → line/LineMarker.svelte.d.ts} +1 -1
  200. package/dist/markers/link/LinkMarker.svelte +47 -0
  201. package/dist/markers/{LinkMarker.svelte.d.ts → link/LinkMarker.svelte.d.ts} +1 -1
  202. package/dist/markers/raster/RasterMarker.svelte +31 -0
  203. package/dist/markers/raster/RasterMarker.svelte.d.ts +7 -0
  204. package/dist/markers/rect/RectMarker.svelte +62 -0
  205. package/dist/markers/rect/RectMarker.svelte.d.ts +7 -0
  206. package/dist/markers/regression/RegressionMarker.svelte +60 -0
  207. package/dist/markers/regression/RegressionMarker.svelte.d.ts +7 -0
  208. package/dist/markers/rule/RuleMarker.svelte +47 -0
  209. package/dist/markers/{RuleMarker.svelte.d.ts → rule/RuleMarker.svelte.d.ts} +2 -5
  210. package/dist/markers/text/Declutter.d.ts +35 -0
  211. package/dist/markers/text/Declutter.js +157 -0
  212. package/dist/markers/text/TextMarker.svelte +244 -0
  213. package/dist/markers/{TextMarker.svelte.d.ts → text/TextMarker.svelte.d.ts} +5 -9
  214. package/dist/markers/tick/TickMarker.svelte +44 -0
  215. package/dist/markers/tick/TickMarker.svelte.d.ts +7 -0
  216. package/dist/markers/trail/TrailMarker.svelte +27 -0
  217. package/dist/markers/trail/TrailMarker.svelte.d.ts +7 -0
  218. package/dist/markers/utils/BandNudge.d.ts +22 -0
  219. package/dist/markers/utils/BandNudge.js +23 -0
  220. package/dist/markers/utils/MarkerChannels.d.ts +49 -0
  221. package/dist/markers/utils/MarkerChannels.js +97 -0
  222. package/dist/markers/vector/VectorMarker.svelte +29 -0
  223. package/dist/markers/{VectorMarker.svelte.d.ts → vector/VectorMarker.svelte.d.ts} +1 -1
  224. package/dist/markers/voronoi/VoronoiMarker.svelte +26 -0
  225. package/dist/markers/voronoi/VoronoiMarker.svelte.d.ts +7 -0
  226. package/dist/markers/voronoi/VoronoiMeshMarker.svelte +26 -0
  227. package/dist/markers/voronoi/VoronoiMeshMarker.svelte.d.ts +7 -0
  228. package/dist/markers/waffle/WaffleMarker.svelte +56 -0
  229. package/dist/markers/waffle/WaffleMarker.svelte.d.ts +7 -0
  230. package/dist/phases/Pipeline.d.ts +108 -0
  231. package/dist/phases/Pipeline.js +226 -0
  232. package/dist/phases/data/DataPhase.d.ts +25 -0
  233. package/dist/phases/data/DataPhase.js +82 -0
  234. package/dist/phases/data/PlotAxes.d.ts +75 -0
  235. package/dist/phases/data/PlotAxes.js +151 -0
  236. package/dist/phases/facet/FacetPhase.d.ts +52 -0
  237. package/dist/phases/facet/FacetPhase.js +114 -0
  238. package/dist/phases/hover/HoverPhase.d.ts +73 -0
  239. package/dist/phases/hover/HoverPhase.js +144 -0
  240. package/dist/phases/mapping/MappingPhase.d.ts +17 -0
  241. package/dist/phases/mapping/MappingPhase.js +42 -0
  242. package/dist/phases/markers/MarkersPhase.d.ts +14 -0
  243. package/dist/phases/markers/MarkersPhase.js +27 -0
  244. package/dist/phases/scales/MarkerAxisValues.d.ts +12 -0
  245. package/dist/phases/scales/MarkerAxisValues.js +34 -0
  246. package/dist/phases/scales/ScalesPhase.d.ts +31 -0
  247. package/dist/phases/scales/ScalesPhase.js +157 -0
  248. package/dist/phases/sharedScales/SharedScalesPhase.d.ts +55 -0
  249. package/dist/phases/sharedScales/SharedScalesPhase.js +168 -0
  250. package/dist/phases/statistics/AuthorMarkers.d.ts +43 -0
  251. package/dist/phases/statistics/AuthorMarkers.js +69 -0
  252. package/dist/phases/statistics/MarkerGrouping.d.ts +48 -0
  253. package/dist/phases/statistics/MarkerGrouping.js +113 -0
  254. package/dist/phases/statistics/Statistics.d.ts +53 -0
  255. package/dist/phases/statistics/Statistics.js +156 -0
  256. package/dist/phases/statistics/StatisticsPhase.d.ts +18 -0
  257. package/dist/phases/statistics/StatisticsPhase.js +68 -0
  258. package/dist/phases/statistics/methods/BollingerStatistic.d.ts +9 -0
  259. package/dist/phases/statistics/methods/BollingerStatistic.js +18 -0
  260. package/dist/phases/statistics/methods/BoxStatistic.d.ts +9 -0
  261. package/dist/phases/statistics/methods/BoxStatistic.js +18 -0
  262. package/dist/phases/statistics/methods/Density2dStatistic.d.ts +9 -0
  263. package/dist/phases/statistics/methods/Density2dStatistic.js +18 -0
  264. package/dist/phases/statistics/methods/DensityStatistic.d.ts +12 -0
  265. package/dist/phases/statistics/methods/DensityStatistic.js +29 -0
  266. package/dist/phases/statistics/methods/MovingAverageStatistic.d.ts +12 -0
  267. package/dist/phases/statistics/methods/MovingAverageStatistic.js +30 -0
  268. package/dist/phases/statistics/methods/RegressionStatistic.d.ts +9 -0
  269. package/dist/phases/statistics/methods/RegressionStatistic.js +21 -0
  270. package/dist/phases/styles/StylesPhase.d.ts +13 -0
  271. package/dist/phases/styles/StylesPhase.js +17 -0
  272. package/dist/phases/tooltip/TooltipPhase.d.ts +12 -0
  273. package/dist/phases/tooltip/TooltipPhase.js +10 -0
  274. package/dist/phases/transforms/Transforms.d.ts +42 -0
  275. package/dist/phases/transforms/Transforms.js +130 -0
  276. package/dist/phases/transforms/TransformsPhase.d.ts +64 -0
  277. package/dist/phases/transforms/TransformsPhase.js +242 -0
  278. package/dist/phases/transforms/methods/AnchorBar.d.ts +13 -0
  279. package/dist/phases/transforms/methods/AnchorBar.js +21 -0
  280. package/dist/phases/transforms/methods/BinTransform.d.ts +7 -0
  281. package/dist/phases/transforms/methods/BinTransform.js +48 -0
  282. package/dist/phases/transforms/methods/DensityTransform.d.ts +6 -0
  283. package/dist/phases/transforms/methods/DensityTransform.js +13 -0
  284. package/dist/phases/transforms/methods/GroupTransform.d.ts +8 -0
  285. package/dist/phases/transforms/methods/GroupTransform.js +39 -0
  286. package/dist/phases/transforms/methods/NormalizeTransform.d.ts +10 -0
  287. package/dist/phases/transforms/methods/NormalizeTransform.js +30 -0
  288. package/dist/phases/transforms/methods/OrderTransform.d.ts +16 -0
  289. package/dist/phases/transforms/methods/OrderTransform.js +43 -0
  290. package/dist/phases/transforms/methods/PerGroup.d.ts +11 -0
  291. package/dist/phases/transforms/methods/PerGroup.js +39 -0
  292. package/dist/phases/transforms/methods/PositionTransform.d.ts +15 -0
  293. package/dist/phases/transforms/methods/PositionTransform.js +74 -0
  294. package/dist/phases/transforms/methods/StackTransform.d.ts +8 -0
  295. package/dist/phases/transforms/methods/StackTransform.js +29 -0
  296. package/dist/phases/transforms/methods/WindowTransform.d.ts +8 -0
  297. package/dist/phases/transforms/methods/WindowTransform.js +23 -0
  298. package/dist/plots/area/Plot.svelte +42 -0
  299. package/dist/plots/{heatmap/ValueLabels.svelte.d.ts → area/Plot.svelte.d.ts} +8 -16
  300. package/dist/plots/area/defaults.d.ts +4 -0
  301. package/dist/plots/area/defaults.js +21 -0
  302. package/dist/plots/area/markers.d.ts +14 -0
  303. package/dist/plots/area/markers.js +40 -0
  304. package/dist/plots/bar/Plot.svelte +33 -438
  305. package/dist/plots/bar/Plot.svelte.d.ts +5 -8
  306. package/dist/plots/bar/defaults.d.ts +9 -0
  307. package/dist/plots/bar/defaults.js +92 -0
  308. package/dist/plots/bar/markers.d.ts +45 -0
  309. package/dist/plots/bar/markers.js +232 -0
  310. package/dist/plots/geo/Core.svelte +151 -0
  311. package/dist/plots/geo/Core.svelte.d.ts +25 -0
  312. package/dist/plots/geo/Plot.svelte +103 -324
  313. package/dist/plots/geo/Plot.svelte.d.ts +5 -9
  314. package/dist/plots/geo/defaults.d.ts +4 -0
  315. package/dist/plots/geo/defaults.js +16 -0
  316. package/dist/plots/geo/features.svelte.d.ts +5 -0
  317. package/dist/plots/geo/features.svelte.js +44 -0
  318. package/dist/plots/geo/phases/data.d.ts +6 -0
  319. package/dist/plots/geo/phases/data.js +26 -0
  320. package/dist/plots/geo/phases/hover.d.ts +9 -0
  321. package/dist/plots/geo/phases/hover.js +45 -0
  322. package/dist/plots/geo/phases/markers.d.ts +9 -0
  323. package/dist/plots/geo/phases/markers.js +76 -0
  324. package/dist/plots/geo/phases/scales.d.ts +10 -0
  325. package/dist/plots/geo/phases/scales.js +85 -0
  326. package/dist/plots/geo/phases/tooltip.d.ts +3 -0
  327. package/dist/plots/geo/phases/tooltip.js +5 -0
  328. package/dist/plots/geo/slices.d.ts +18 -0
  329. package/dist/plots/geo/slices.js +56 -0
  330. package/dist/plots/heatmap/Plot.svelte +55 -249
  331. package/dist/plots/heatmap/Plot.svelte.d.ts +5 -8
  332. package/dist/plots/heatmap/defaults.d.ts +11 -0
  333. package/dist/plots/heatmap/defaults.js +91 -0
  334. package/dist/plots/heatmap/markers.d.ts +17 -0
  335. package/dist/plots/heatmap/markers.js +141 -0
  336. package/dist/plots/histogram/Plot.svelte +45 -0
  337. package/dist/plots/histogram/Plot.svelte.d.ts +26 -0
  338. package/dist/plots/histogram/defaults.d.ts +9 -0
  339. package/dist/plots/histogram/defaults.js +87 -0
  340. package/dist/plots/histogram/markers.d.ts +18 -0
  341. package/dist/plots/histogram/markers.js +89 -0
  342. package/dist/plots/line/Plot.svelte +37 -268
  343. package/dist/plots/line/Plot.svelte.d.ts +3 -7
  344. package/dist/plots/line/defaults.d.ts +4 -0
  345. package/dist/plots/line/defaults.js +29 -0
  346. package/dist/plots/line/markers.d.ts +49 -0
  347. package/dist/plots/line/markers.js +200 -0
  348. package/dist/plots/pyramid/Plot.svelte +34 -362
  349. package/dist/plots/pyramid/Plot.svelte.d.ts +5 -8
  350. package/dist/plots/pyramid/defaults.d.ts +13 -0
  351. package/dist/plots/pyramid/defaults.js +86 -0
  352. package/dist/plots/pyramid/markers.d.ts +21 -0
  353. package/dist/plots/pyramid/markers.js +159 -0
  354. package/dist/plots/scatter/Plot.svelte +34 -288
  355. package/dist/plots/scatter/Plot.svelte.d.ts +5 -8
  356. package/dist/plots/scatter/defaults.d.ts +4 -0
  357. package/dist/plots/scatter/defaults.js +79 -0
  358. package/dist/plots/scatter/markers.d.ts +19 -0
  359. package/dist/plots/scatter/markers.js +128 -0
  360. package/dist/plots/utils/ChannelName.d.ts +9 -0
  361. package/dist/plots/utils/ChannelName.js +14 -0
  362. package/dist/plots/utils/accessors.d.ts +1 -1
  363. package/dist/plots/utils/accessors.js +4 -2
  364. package/dist/plots/utils/gaps.d.ts +14 -19
  365. package/dist/plots/utils/gaps.js +38 -18
  366. package/dist/plots/utils/geoAccessors.d.ts +8 -8
  367. package/dist/plots/utils/geoAccessors.js +16 -12
  368. package/dist/plots/utils/geoSegments.d.ts +24 -9
  369. package/dist/plots/utils/geoSegments.js +31 -11
  370. package/dist/plots/utils/segments.d.ts +5 -16
  371. package/dist/plots/utils/segments.js +40 -52
  372. package/dist/plots/utils/tiles.d.ts +9 -9
  373. package/dist/plots/utils/tiles.js +35 -25
  374. package/dist/plots/utils/topojson.d.ts +1 -1
  375. package/dist/plots/utils/topojson.js +3 -3
  376. package/dist/stores/device.js +2 -4
  377. package/dist/types/configuration/styling.d.ts +158 -27
  378. package/dist/types/layout/box.d.ts +24 -0
  379. package/dist/types/layout/composer.d.ts +36 -0
  380. package/dist/types/layout/coordinates.d.ts +14 -14
  381. package/dist/types/layout/facet.d.ts +44 -22
  382. package/dist/types/layout/figure.d.ts +7 -0
  383. package/dist/types/layout/geometry.d.ts +6 -2
  384. package/dist/types/layout/grid.d.ts +66 -0
  385. package/dist/types/layout/hover.d.ts +48 -0
  386. package/dist/types/layout/legend.d.ts +258 -54
  387. package/dist/types/layout/mapping.d.ts +68 -0
  388. package/dist/types/layout/plot.d.ts +41 -0
  389. package/dist/types/layout/scales.d.ts +92 -24
  390. package/dist/types/layout/scales.js +19 -1
  391. package/dist/types/layout/statistics/bollinger.d.ts +18 -0
  392. package/dist/types/layout/statistics/box.d.ts +8 -0
  393. package/dist/types/layout/statistics/box.js +1 -0
  394. package/dist/types/layout/statistics/density.d.ts +27 -0
  395. package/dist/types/layout/statistics/density.js +1 -0
  396. package/dist/types/layout/statistics/index.d.ts +46 -0
  397. package/dist/types/layout/statistics/index.js +1 -0
  398. package/dist/types/layout/statistics/movingAverage.d.ts +12 -0
  399. package/dist/types/layout/statistics/movingAverage.js +1 -0
  400. package/dist/types/layout/statistics/regression.d.ts +20 -0
  401. package/dist/types/layout/statistics/regression.js +1 -0
  402. package/dist/types/layout/styles.d.ts +24 -35
  403. package/dist/types/layout/timeline.d.ts +51 -4
  404. package/dist/types/layout/tooltip.d.ts +7 -85
  405. package/dist/types/markers/all.d.ts +3 -4
  406. package/dist/types/markers/axis/area.d.ts +12 -0
  407. package/dist/types/markers/axis/area.js +1 -0
  408. package/dist/types/markers/axis/arrow.d.ts +15 -0
  409. package/dist/types/markers/axis/arrow.js +1 -0
  410. package/dist/types/markers/axis/axisBasedMarkersConfig.d.ts +29 -0
  411. package/dist/types/markers/axis/axisBasedMarkersConfig.js +1 -0
  412. package/dist/types/markers/axis/bar.d.ts +18 -0
  413. package/dist/types/markers/axis/bar.js +1 -0
  414. package/dist/types/markers/axis/bollinger.d.ts +6 -0
  415. package/dist/types/markers/axis/bollinger.js +1 -0
  416. package/dist/types/markers/axis/box.d.ts +14 -0
  417. package/dist/types/markers/axis/box.js +1 -0
  418. package/dist/types/markers/axis/brush.d.ts +28 -0
  419. package/dist/types/markers/axis/brush.js +1 -0
  420. package/dist/types/markers/axis/cell.d.ts +9 -0
  421. package/dist/types/markers/axis/cell.js +1 -0
  422. package/dist/types/markers/axis/component.d.ts +9 -0
  423. package/dist/types/markers/axis/component.js +1 -0
  424. package/dist/types/markers/axis/curveName.d.ts +2 -0
  425. package/dist/types/markers/axis/curveName.js +1 -0
  426. package/dist/types/markers/axis/delaunayLink.d.ts +7 -0
  427. package/dist/types/markers/axis/delaunayLink.js +1 -0
  428. package/dist/types/markers/axis/delaunayMesh.d.ts +7 -0
  429. package/dist/types/markers/axis/delaunayMesh.js +1 -0
  430. package/dist/types/markers/axis/delta.d.ts +27 -0
  431. package/dist/types/markers/axis/delta.js +1 -0
  432. package/dist/types/markers/axis/density.d.ts +12 -0
  433. package/dist/types/markers/axis/density.js +1 -0
  434. package/dist/types/markers/axis/difference.d.ts +12 -0
  435. package/dist/types/markers/axis/difference.js +1 -0
  436. package/dist/types/markers/axis/hover.d.ts +21 -0
  437. package/dist/types/markers/axis/hover.js +1 -0
  438. package/dist/types/markers/axis/hull.d.ts +7 -0
  439. package/dist/types/markers/axis/hull.js +1 -0
  440. package/dist/types/markers/axis/image.d.ts +12 -0
  441. package/dist/types/markers/axis/image.js +1 -0
  442. package/dist/types/markers/axis/line.d.ts +7 -0
  443. package/dist/types/markers/axis/line.js +1 -0
  444. package/dist/types/markers/axis/raster.d.ts +18 -0
  445. package/dist/types/markers/axis/raster.js +1 -0
  446. package/dist/types/markers/axis/rect.d.ts +15 -0
  447. package/dist/types/markers/axis/rect.js +1 -0
  448. package/dist/types/markers/axis/regression.d.ts +6 -0
  449. package/dist/types/markers/axis/regression.js +1 -0
  450. package/dist/types/markers/axis/rule.d.ts +15 -0
  451. package/dist/types/markers/axis/rule.js +1 -0
  452. package/dist/types/markers/axis/tick.d.ts +8 -0
  453. package/dist/types/markers/axis/tick.js +1 -0
  454. package/dist/types/markers/axis/trail.d.ts +14 -0
  455. package/dist/types/markers/axis/trail.js +1 -0
  456. package/dist/types/markers/axis/voronoi.d.ts +7 -0
  457. package/dist/types/markers/axis/voronoi.js +1 -0
  458. package/dist/types/markers/axis/voronoiMesh.d.ts +7 -0
  459. package/dist/types/markers/axis/voronoiMesh.js +1 -0
  460. package/dist/types/markers/axis/waffle.d.ts +13 -0
  461. package/dist/types/markers/axis/waffle.js +1 -0
  462. package/dist/types/markers/basic/basicMarkersConfig.d.ts +4 -0
  463. package/dist/types/markers/basic/basicMarkersConfig.js +1 -0
  464. package/dist/types/markers/basic/dot.d.ts +9 -0
  465. package/dist/types/markers/basic/dot.js +1 -0
  466. package/dist/types/markers/basic/text.d.ts +60 -0
  467. package/dist/types/markers/basic/text.js +1 -0
  468. package/dist/types/markers/basic.d.ts +4 -0
  469. package/dist/types/markers/basic.js +1 -0
  470. package/dist/types/markers/channels/commonMarkerConfig.d.ts +26 -0
  471. package/dist/types/markers/channels/commonMarkerConfig.js +1 -0
  472. package/dist/types/markers/channels/commonMarkerConfigWithArea.d.ts +6 -0
  473. package/dist/types/markers/channels/commonMarkerConfigWithArea.js +1 -0
  474. package/dist/types/markers/channels/commonMarkerConfigWithColor.d.ts +5 -0
  475. package/dist/types/markers/channels/commonMarkerConfigWithColor.js +1 -0
  476. package/dist/types/markers/channels/commonMarkerConfigWithInterval.d.ts +9 -0
  477. package/dist/types/markers/channels/commonMarkerConfigWithInterval.js +1 -0
  478. package/dist/types/markers/channels/commonMarkerConfigWithRadius.d.ts +5 -0
  479. package/dist/types/markers/channels/commonMarkerConfigWithRadius.js +1 -0
  480. package/dist/types/markers/channels/commonMarkerConfigWithSymbol.d.ts +5 -0
  481. package/dist/types/markers/channels/commonMarkerConfigWithSymbol.js +1 -0
  482. package/dist/types/markers/channels/commonMarkerConfigWithWeight.d.ts +5 -0
  483. package/dist/types/markers/channels/commonMarkerConfigWithWeight.js +1 -0
  484. package/dist/types/markers/common.d.ts +30 -103
  485. package/dist/types/markers/common.js +29 -1
  486. package/dist/types/markers/geo/contour.d.ts +27 -0
  487. package/dist/types/markers/geo/contour.js +1 -0
  488. package/dist/types/markers/geo/features.d.ts +12 -0
  489. package/dist/types/markers/geo/features.js +1 -0
  490. package/dist/types/markers/geo/geoComponent.d.ts +7 -0
  491. package/dist/types/markers/geo/geoComponent.js +1 -0
  492. package/dist/types/markers/geo/geoHover.d.ts +6 -0
  493. package/dist/types/markers/geo/geoHover.js +1 -0
  494. package/dist/types/markers/geo/geoMarkersConfig.d.ts +11 -0
  495. package/dist/types/markers/geo/geoMarkersConfig.js +1 -0
  496. package/dist/types/markers/geo/graticule.d.ts +11 -0
  497. package/dist/types/markers/geo/graticule.js +1 -0
  498. package/dist/types/markers/geo/inset.d.ts +50 -0
  499. package/dist/types/markers/geo/inset.js +1 -0
  500. package/dist/types/markers/geo/link.d.ts +13 -0
  501. package/dist/types/markers/geo/link.js +1 -0
  502. package/dist/types/markers/geo/sphere.d.ts +11 -0
  503. package/dist/types/markers/geo/sphere.js +1 -0
  504. package/dist/types/markers/geo/vector.d.ts +17 -0
  505. package/dist/types/markers/geo/vector.js +1 -0
  506. package/dist/types/markers/geo.d.ts +10 -212
  507. package/dist/types/markers/geo.js +10 -1
  508. package/dist/types/markers/traits.d.ts +22 -0
  509. package/dist/types/markers/traits.js +1 -0
  510. package/dist/types/misc/easing.js +1 -0
  511. package/dist/types/misc/viewport.js +1 -0
  512. package/dist/types/phases/data/axes.d.ts +18 -0
  513. package/dist/types/phases/data/axes.js +1 -0
  514. package/dist/types/phases/data/phase.d.ts +26 -0
  515. package/dist/types/phases/data/phase.js +2 -0
  516. package/dist/types/phases/facet/phase.d.ts +18 -0
  517. package/dist/types/phases/facet/phase.js +1 -0
  518. package/dist/types/phases/hover/phase.d.ts +34 -0
  519. package/dist/types/phases/hover/phase.js +1 -0
  520. package/dist/types/phases/index.d.ts +14 -0
  521. package/dist/types/phases/index.js +1 -0
  522. package/dist/types/phases/kind.d.ts +59 -0
  523. package/dist/types/phases/kind.js +1 -0
  524. package/dist/types/phases/mapping/phase.d.ts +5 -0
  525. package/dist/types/phases/mapping/phase.js +1 -0
  526. package/dist/types/phases/markers/phase.d.ts +13 -0
  527. package/dist/types/phases/markers/phase.js +1 -0
  528. package/dist/types/phases/pipeline.d.ts +10 -0
  529. package/dist/types/phases/pipeline.js +1 -0
  530. package/dist/types/phases/scales/phase.d.ts +26 -0
  531. package/dist/types/phases/scales/phase.js +1 -0
  532. package/dist/types/phases/sharedScales/phase.d.ts +12 -0
  533. package/dist/types/phases/sharedScales/phase.js +1 -0
  534. package/dist/types/phases/stage.d.ts +12 -0
  535. package/dist/types/phases/stage.js +1 -0
  536. package/dist/types/phases/state.d.ts +73 -0
  537. package/dist/types/phases/state.js +1 -0
  538. package/dist/types/phases/statistics/phase.d.ts +41 -0
  539. package/dist/types/phases/statistics/phase.js +1 -0
  540. package/dist/types/phases/statistics/source.d.ts +20 -0
  541. package/dist/types/phases/statistics/source.js +7 -0
  542. package/dist/types/phases/styles/phase.d.ts +24 -0
  543. package/dist/types/phases/styles/phase.js +1 -0
  544. package/dist/types/phases/transforms/adapter.d.ts +27 -0
  545. package/dist/types/phases/transforms/adapter.js +1 -0
  546. package/dist/types/phases/transforms/phase.d.ts +40 -0
  547. package/dist/types/phases/transforms/phase.js +1 -0
  548. package/dist/types/plots/area/props.d.ts +10 -0
  549. package/dist/types/plots/area/props.js +1 -0
  550. package/dist/types/plots/area/state.d.ts +6 -0
  551. package/dist/types/plots/area/state.js +1 -0
  552. package/dist/types/plots/bar/props.d.ts +10 -0
  553. package/dist/types/plots/bar/props.js +1 -0
  554. package/dist/types/plots/bar/state.d.ts +6 -0
  555. package/dist/types/plots/bar/state.js +1 -0
  556. package/dist/types/plots/camera.d.ts +7 -17
  557. package/dist/types/plots/constants.d.ts +16 -8
  558. package/dist/types/plots/data/common.d.ts +25 -17
  559. package/dist/types/plots/data/geo.d.ts +26 -12
  560. package/dist/types/plots/gaps.d.ts +19 -38
  561. package/dist/types/plots/geo/props.d.ts +23 -0
  562. package/dist/types/plots/geo/props.js +1 -0
  563. package/dist/types/plots/geo/state.d.ts +82 -0
  564. package/dist/types/plots/geo/state.js +1 -0
  565. package/dist/types/plots/heatmap/props.d.ts +10 -0
  566. package/dist/types/plots/heatmap/props.js +1 -0
  567. package/dist/types/plots/heatmap/state.d.ts +28 -0
  568. package/dist/types/plots/heatmap/state.js +1 -0
  569. package/dist/types/plots/histogram/props.d.ts +18 -0
  570. package/dist/types/plots/histogram/props.js +1 -0
  571. package/dist/types/plots/histogram/state.d.ts +6 -0
  572. package/dist/types/plots/histogram/state.js +1 -0
  573. package/dist/types/plots/line/props.d.ts +10 -0
  574. package/dist/types/plots/line/props.js +1 -0
  575. package/dist/types/plots/line/state.d.ts +9 -0
  576. package/dist/types/plots/line/state.js +1 -0
  577. package/dist/types/plots/props.d.ts +143 -35
  578. package/dist/types/plots/pyramid/props.d.ts +10 -0
  579. package/dist/types/plots/pyramid/props.js +1 -0
  580. package/dist/types/plots/pyramid/state.d.ts +16 -0
  581. package/dist/types/plots/pyramid/state.js +1 -0
  582. package/dist/types/plots/scatter/props.d.ts +10 -0
  583. package/dist/types/plots/scatter/props.js +1 -0
  584. package/dist/types/plots/scatter/state.d.ts +6 -0
  585. package/dist/types/plots/scatter/state.js +1 -0
  586. package/dist/types/plots/segments/common.d.ts +1 -1
  587. package/dist/types/plots/segments/config.d.ts +12 -6
  588. package/dist/types/plots/styling.d.ts +5 -5
  589. package/dist/types/transforms/bin.d.ts +84 -0
  590. package/dist/types/transforms/bin.js +28 -0
  591. package/dist/types/transforms/bollinger.d.ts +21 -0
  592. package/dist/types/transforms/bollinger.js +1 -0
  593. package/dist/types/transforms/common.d.ts +29 -0
  594. package/dist/types/transforms/common.js +16 -0
  595. package/dist/types/transforms/density.d.ts +45 -0
  596. package/dist/types/transforms/density.js +10 -0
  597. package/dist/types/transforms/filter.d.ts +12 -0
  598. package/dist/types/transforms/filter.js +14 -0
  599. package/dist/types/transforms/group.d.ts +70 -0
  600. package/dist/types/transforms/group.js +8 -0
  601. package/dist/types/transforms/index.d.ts +36 -0
  602. package/dist/types/transforms/index.js +1 -0
  603. package/dist/types/transforms/interval.d.ts +21 -0
  604. package/dist/types/transforms/interval.js +14 -0
  605. package/dist/types/transforms/jitter.d.ts +34 -0
  606. package/dist/types/transforms/jitter.js +1 -0
  607. package/dist/types/transforms/map.d.ts +24 -0
  608. package/dist/types/transforms/map.js +1 -0
  609. package/dist/types/transforms/normalize.d.ts +36 -0
  610. package/dist/types/transforms/normalize.js +1 -0
  611. package/dist/types/transforms/select.d.ts +15 -0
  612. package/dist/types/transforms/select.js +1 -0
  613. package/dist/types/transforms/shift.d.ts +20 -0
  614. package/dist/types/transforms/shift.js +1 -0
  615. package/dist/types/transforms/sort.d.ts +31 -0
  616. package/dist/types/transforms/sort.js +14 -0
  617. package/dist/types/transforms/stack.d.ts +64 -0
  618. package/dist/types/transforms/stack.js +12 -0
  619. package/dist/types/transforms/window.d.ts +29 -0
  620. package/dist/types/transforms/window.js +1 -0
  621. package/dist/utils/ContinuousDomain.d.ts +12 -0
  622. package/dist/utils/ContinuousDomain.js +19 -0
  623. package/dist/utils/Interpolation.d.ts +26 -0
  624. package/dist/utils/Interpolation.js +65 -0
  625. package/dist/utils/{color.d.ts → color/contrast.d.ts} +0 -5
  626. package/dist/utils/color/contrast.js +40 -0
  627. package/dist/utils/color/cssColor.d.ts +4 -0
  628. package/dist/utils/color/cssColor.js +77 -0
  629. package/dist/utils/color/index.d.ts +3 -0
  630. package/dist/utils/color/index.js +3 -0
  631. package/dist/utils/color/ramp.d.ts +17 -0
  632. package/dist/utils/color/ramp.js +110 -0
  633. package/dist/utils/grouping.d.ts +9 -5
  634. package/dist/utils/grouping.js +19 -10
  635. package/dist/utils/merge.d.ts +7 -0
  636. package/dist/utils/merge.js +17 -0
  637. package/dist/utils/opacity.d.ts +9 -0
  638. package/dist/utils/opacity.js +38 -0
  639. package/dist/utils/symbol.d.ts +31 -0
  640. package/dist/utils/symbol.js +92 -0
  641. package/docs/architecture.md +137 -0
  642. package/docs/chrome.md +68 -0
  643. package/docs/composer.md +53 -0
  644. package/docs/concepts.md +99 -0
  645. package/docs/development.md +94 -0
  646. package/docs/facets.md +69 -0
  647. package/docs/geo.md +151 -0
  648. package/docs/getting-started.md +79 -0
  649. package/docs/legend.md +106 -0
  650. package/docs/markers.md +106 -0
  651. package/docs/plots.md +158 -0
  652. package/docs/scales.md +78 -0
  653. package/docs/state.md +71 -0
  654. package/docs/styles-and-segments.md +215 -0
  655. package/docs/theming.md +215 -0
  656. package/docs/timeline.md +94 -0
  657. package/docs/tooltip-and-hover.md +80 -0
  658. package/docs/transforms-and-statistics.md +88 -0
  659. package/examples/BarValues.svelte +14 -0
  660. package/examples/CustomTooltip.svelte +37 -0
  661. package/examples/Facets.svelte +15 -0
  662. package/examples/LegendReader.svelte +8 -0
  663. package/examples/LegendToggle.svelte +25 -0
  664. package/examples/ResponsiveLine.svelte +37 -0
  665. package/examples/Segments.svelte +17 -0
  666. package/examples/TimelinePlayer.svelte +20 -0
  667. package/examples/Tooltip.svelte +19 -0
  668. package/examples/TooltipCard.svelte +86 -0
  669. package/examples/data.ts +12 -0
  670. package/llms-full.txt +114 -0
  671. package/llms.txt +49 -0
  672. package/package.json +41 -5
  673. package/dist/charts/BaseChart.svelte +0 -149
  674. package/dist/charts/BaseChart.svelte.d.ts +0 -47
  675. package/dist/charts/bar/Chart.svelte +0 -110
  676. package/dist/charts/bar/Chart.svelte.d.ts +0 -26
  677. package/dist/charts/container/ChartContainer.svelte +0 -137
  678. package/dist/charts/container/ChartContainer.svelte.d.ts +0 -16
  679. package/dist/charts/heatmap/Chart.svelte +0 -114
  680. package/dist/charts/line/Chart.svelte +0 -112
  681. package/dist/charts/line/Chart.svelte.d.ts +0 -26
  682. package/dist/charts/pyramid/Chart.svelte +0 -134
  683. package/dist/charts/pyramid/Chart.svelte.d.ts +0 -30
  684. package/dist/charts/scatter/Chart.svelte +0 -95
  685. package/dist/charts/scatter/Chart.svelte.d.ts +0 -28
  686. package/dist/layout/coordinates/margins.d.ts +0 -16
  687. package/dist/layout/coordinates/margins.js +0 -11
  688. package/dist/layout/legend/interaction.svelte.d.ts +0 -15
  689. package/dist/layout/legend/interaction.svelte.js +0 -32
  690. package/dist/layout/plot/BasePlotLayout.svelte +0 -332
  691. package/dist/layout/plot/BasePlotLayout.svelte.d.ts +0 -122
  692. package/dist/layout/plot/margins.d.ts +0 -18
  693. package/dist/layout/plot/margins.js +0 -15
  694. package/dist/layout/plot/measureText.d.ts +0 -4
  695. package/dist/layout/plot/measureText.js +0 -19
  696. package/dist/layout/tooltip/TooltipLayout.svelte +0 -51
  697. package/dist/layout/tooltip/TooltipLayout.svelte.d.ts +0 -45
  698. package/dist/layout/tooltip/controller.svelte.d.ts +0 -61
  699. package/dist/layout/tooltip/controller.svelte.js +0 -173
  700. package/dist/layout/tooltip/hover.svelte.d.ts +0 -7
  701. package/dist/layout/tooltip/hover.svelte.js +0 -28
  702. package/dist/layout/tooltip/resolveTooltipPlacement.d.ts +0 -24
  703. package/dist/layout/tooltip/resolveTooltipPlacement.js +0 -49
  704. package/dist/layout/tooltip/utils.d.ts +0 -49
  705. package/dist/layout/tooltip/utils.js +0 -82
  706. package/dist/markers/CellMarker.svelte +0 -21
  707. package/dist/markers/ContourClipMarker.svelte +0 -77
  708. package/dist/markers/ContourMarker.svelte +0 -28
  709. package/dist/markers/DeltaMarker.svelte +0 -109
  710. package/dist/markers/DotMarker.svelte +0 -70
  711. package/dist/markers/GeoFeaturesMarker.svelte +0 -19
  712. package/dist/markers/GeoHoverMarker.svelte +0 -25
  713. package/dist/markers/GraticuleMarker.svelte +0 -18
  714. package/dist/markers/HoverMarker.svelte +0 -212
  715. package/dist/markers/LineMarker.svelte +0 -19
  716. package/dist/markers/LinkMarker.svelte +0 -42
  717. package/dist/markers/PeakMarker.svelte +0 -80
  718. package/dist/markers/PeakMarker.svelte.d.ts +0 -13
  719. package/dist/markers/RuleMarker.svelte +0 -24
  720. package/dist/markers/SphereMarker.svelte +0 -15
  721. package/dist/markers/TextMarker.svelte +0 -62
  722. package/dist/markers/VectorMarker.svelte +0 -20
  723. package/dist/plots/bar/ValueLabels.svelte +0 -149
  724. package/dist/plots/bar/ValueLabels.svelte.d.ts +0 -58
  725. package/dist/plots/bar/buildBarMarkers.d.ts +0 -27
  726. package/dist/plots/bar/buildBarMarkers.js +0 -151
  727. package/dist/plots/bar/hoverPoints.d.ts +0 -15
  728. package/dist/plots/bar/hoverPoints.js +0 -37
  729. package/dist/plots/bar/layout.svelte.d.ts +0 -42
  730. package/dist/plots/bar/layout.svelte.js +0 -182
  731. package/dist/plots/geo/buildGeoMarkers.d.ts +0 -33
  732. package/dist/plots/geo/buildGeoMarkers.js +0 -47
  733. package/dist/plots/heatmap/ValueLabels.svelte +0 -56
  734. package/dist/plots/heatmap/buildCellMarkers.d.ts +0 -21
  735. package/dist/plots/heatmap/buildCellMarkers.js +0 -25
  736. package/dist/plots/line/ValueLabels.svelte +0 -269
  737. package/dist/plots/line/ValueLabels.svelte.d.ts +0 -52
  738. package/dist/plots/line/buildGapMarkers.d.ts +0 -28
  739. package/dist/plots/line/buildGapMarkers.js +0 -74
  740. package/dist/plots/line/buildLineMarkers.d.ts +0 -16
  741. package/dist/plots/line/buildLineMarkers.js +0 -56
  742. package/dist/plots/line/valueLabelMargin.d.ts +0 -19
  743. package/dist/plots/line/valueLabelMargin.js +0 -65
  744. package/dist/plots/pyramid/ValueLabels.svelte +0 -139
  745. package/dist/plots/pyramid/ValueLabels.svelte.d.ts +0 -56
  746. package/dist/plots/pyramid/buildPyramidBarMarkers.d.ts +0 -26
  747. package/dist/plots/pyramid/buildPyramidBarMarkers.js +0 -72
  748. package/dist/plots/scatter/ValueLabels.svelte +0 -163
  749. package/dist/plots/scatter/ValueLabels.svelte.d.ts +0 -52
  750. package/dist/plots/scatter/buildScatterMarkers.d.ts +0 -12
  751. package/dist/plots/scatter/buildScatterMarkers.js +0 -36
  752. package/dist/plots/scatter/resolveRadiusPaddedDomain.d.ts +0 -10
  753. package/dist/plots/scatter/resolveRadiusPaddedDomain.js +0 -23
  754. package/dist/plots/utils/categoricalAxisMargin.d.ts +0 -14
  755. package/dist/plots/utils/categoricalAxisMargin.js +0 -20
  756. package/dist/plots/utils/declutter.d.ts +0 -120
  757. package/dist/plots/utils/declutter.js +0 -240
  758. package/dist/plots/utils/labelOverflow.svelte.d.ts +0 -107
  759. package/dist/plots/utils/labelOverflow.svelte.js +0 -257
  760. package/dist/plots/utils/legendDisabled.d.ts +0 -27
  761. package/dist/plots/utils/legendDisabled.js +0 -68
  762. package/dist/plots/utils/valueLabelMargin.d.ts +0 -67
  763. package/dist/plots/utils/valueLabelMargin.js +0 -60
  764. package/dist/types/charts/common.d.ts +0 -22
  765. package/dist/types/charts/props.d.ts +0 -50
  766. package/dist/types/markers/base.d.ts +0 -45
  767. package/dist/types/markers/line.d.ts +0 -34
  768. package/dist/types/markers/props.d.ts +0 -11
  769. package/dist/types/plots/data/scatter.d.ts +0 -13
  770. package/dist/utils/color.js +0 -141
  771. package/dist/utils/delta.d.ts +0 -12
  772. package/dist/utils/delta.js +0 -69
  773. package/dist/utils/edgeAwareAnchor.d.ts +0 -34
  774. package/dist/utils/edgeAwareAnchor.js +0 -60
  775. package/dist/utils/interpolate.d.ts +0 -31
  776. package/dist/utils/interpolate.js +0 -71
  777. /package/dist/types/{charts/common.js → layout/box.js} +0 -0
  778. /package/dist/types/{charts/interpolate.js → layout/composer.js} +0 -0
  779. /package/dist/types/{charts/props.js → layout/figure.js} +0 -0
  780. /package/dist/types/{markers/base.js → layout/grid.js} +0 -0
  781. /package/dist/types/{markers/line.js → layout/hover.js} +0 -0
  782. /package/dist/types/{markers/props.js → layout/mapping.js} +0 -0
  783. /package/dist/types/{plots/data/scatter.js → layout/plot.js} +0 -0
  784. /package/dist/types/{viewport.js → layout/statistics/bollinger.js} +0 -0
  785. /package/dist/types/{charts/interpolate.d.ts → misc/easing.d.ts} +0 -0
  786. /package/dist/types/{viewport.d.ts → misc/viewport.d.ts} +0 -0
@@ -0,0 +1,226 @@
1
+ import { FacetPhase } from './facet/FacetPhase';
2
+ import { DataPhase } from './data/DataPhase';
3
+ import { MappingPhase } from './mapping/MappingPhase';
4
+ import { TransformsPhase } from './transforms/TransformsPhase';
5
+ import { StatisticsPhase } from './statistics/StatisticsPhase';
6
+ import { ScalesPhase } from './scales/ScalesPhase';
7
+ import { SharedScalesPhase } from './sharedScales/SharedScalesPhase';
8
+ import { StylesPhase } from './styles/StylesPhase';
9
+ import { MarkersPhase } from './markers/MarkersPhase';
10
+ import { TooltipPhase } from './tooltip/TooltipPhase';
11
+ import { HoverPhase } from './hover/HoverPhase';
12
+ import { PlotInteraction } from '../layout/interaction/PlotInteraction.svelte';
13
+ import { DEFAULT_CONFIG } from '../configuration/config.svelte';
14
+ /**
15
+ * A plot's pipeline: its stages, one per phase, in {@link Pipeline.ORDER},
16
+ * and what its plot needs before any of them run - its hover strategy and
17
+ * timeline defaults. Every core of the plot runs it ({@link run}); with a
18
+ * facet, the plot first runs its data phases once over every panel
19
+ * ({@link runData}), and each panel's core runs only the rest.
20
+ *
21
+ * Stages declared out of phase order still run in it - with a warning, once,
22
+ * since the declared order would otherwise read as the one that runs.
23
+ */
24
+ export class Pipeline {
25
+ /**
26
+ * The phases that work on the plot's rows - everything before its scales,
27
+ * plus the domains its slices share - in order. They run once over every
28
+ * facet panel; the rest depend on each panel's own box.
29
+ */
30
+ static DATA_PHASES = [
31
+ 'facet',
32
+ 'data',
33
+ 'mapping',
34
+ 'transforms',
35
+ 'statistics',
36
+ 'sharedScales'
37
+ ];
38
+ /** Every {@link PlotPhase}, in the order they run: the data phases, then each panel's own. */
39
+ static ORDER = [
40
+ ...Pipeline.DATA_PHASES,
41
+ 'scales',
42
+ 'styles',
43
+ 'markers',
44
+ 'coordinates',
45
+ 'tooltip',
46
+ 'hover'
47
+ ];
48
+ // Every axis kind's pipeline, built once per kind object.
49
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
+ static #axisKinds = new WeakMap();
51
+ stages;
52
+ #options;
53
+ #data;
54
+ #panel;
55
+ constructor(stages, options = {}) {
56
+ const rank = (phase) => Pipeline.ORDER.indexOf(phase);
57
+ const ordered = [...stages].sort((a, b) => rank(a.phase) - rank(b.phase));
58
+ if (ordered.some((stage, i) => stage !== stages[i])) {
59
+ console.warn(`Pipeline: stages declared as [${stages.map((s) => s.phase).join(', ')}] run in phase order: [${ordered.map((s) => s.phase).join(', ')}].`);
60
+ }
61
+ this.stages = ordered;
62
+ this.#options = options;
63
+ }
64
+ /**
65
+ * An axis-based plot kind's pipeline: the shared stages, each set up with
66
+ * the kind's own options - its marks and value labels among them - started
67
+ * from a core's props. Built once per kind object.
68
+ */
69
+ /* eslint-disable @typescript-eslint/no-explicit-any */
70
+ static ofAxisKind(kind) {
71
+ /* eslint-enable @typescript-eslint/no-explicit-any */
72
+ const cached = Pipeline.#axisKinds.get(kind);
73
+ if (cached)
74
+ return cached;
75
+ const scales = new ScalesPhase(kind.scales);
76
+ const pipeline = new Pipeline([
77
+ new FacetPhase(),
78
+ new DataPhase(kind.data),
79
+ new MappingPhase(kind.mapping),
80
+ new TransformsPhase(kind.transforms),
81
+ new StatisticsPhase(kind.statistics),
82
+ new SharedScalesPhase(kind.sharedScales, scales),
83
+ scales,
84
+ new StylesPhase(kind.styles),
85
+ new MarkersPhase(kind.markers),
86
+ new TooltipPhase(),
87
+ new HoverPhase(kind.hover)
88
+ ], {
89
+ seed: (props, rows) => Pipeline.#axisSeed(props, rows),
90
+ hoverStrategy: kind.hover?.strategy,
91
+ timeline: kind.timeline
92
+ });
93
+ Pipeline.#axisKinds.set(kind, pipeline);
94
+ return pipeline;
95
+ }
96
+ /** A plot's pipeline from what its kind gives: its axis-kind defaults, or a pipeline of its own. */
97
+ static of(
98
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
99
+ defaults
100
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
101
+ ) {
102
+ return defaults instanceof Pipeline ? defaults : Pipeline.ofAxisKind(defaults);
103
+ }
104
+ /** The stage of `phase`, if the pipeline has one. */
105
+ stage(phase) {
106
+ return this.stages.find((stage) => stage.phase === phase);
107
+ }
108
+ /**
109
+ * A core's run: every stage over the state its `input` (an axis core's
110
+ * props) seeds - or, given `panelState` (one facet panel's part of
111
+ * {@link runData}), only the stages after the data phases, over that state
112
+ * with the input's own props (its box, margins and scales) on top.
113
+ */
114
+ run = (input, ctx, panelState) => {
115
+ const seed = this.#seed(input);
116
+ if (!panelState)
117
+ return Pipeline.#through(this.stages, seed, ctx);
118
+ this.#panel ??= this.stages.filter((stage) => !Pipeline.DATA_PHASES.includes(stage.phase));
119
+ return Pipeline.#through(this.#panel, { ...panelState, ...seed }, ctx);
120
+ };
121
+ /** Whether the pipeline has data phases to run once over every facet panel ({@link runData}). */
122
+ get facets() {
123
+ return this.stage('facet') !== undefined;
124
+ }
125
+ /**
126
+ * The data phases over `rows`, seeded from a core's `props`, with the
127
+ * plot's `facet`: one run that every facet panel then reads its part of,
128
+ * including the domains its slices share (its "sharedScales" phase).
129
+ */
130
+ runData(props, rows, facet, legendInteraction, cfg) {
131
+ this.#data ??= this.stages.filter((stage) => Pipeline.DATA_PHASES.includes(stage.phase));
132
+ const seed = { ...this.#seed(props, rows), facet };
133
+ return Pipeline.#through(this.#data, seed, Pipeline.#ctxFor(cfg, legendInteraction));
134
+ }
135
+ /**
136
+ * The plot's hover strategy when neither its `tooltip` nor a hover marker
137
+ * sets one, given its props: the kind's own, or the one its axes ask for,
138
+ * read after the "data" phase tells them apart.
139
+ */
140
+ hoverStrategy(props, cfg = DEFAULT_CONFIG) {
141
+ const fixed = this.#options.hoverStrategy;
142
+ if (fixed !== undefined)
143
+ return fixed;
144
+ const upToData = this.stages.filter((s) => s.phase === 'data');
145
+ const state = Pipeline.#through(upToData, this.#seed(props), Pipeline.#ctxFor(cfg, null));
146
+ return HoverPhase.strategyOf(state);
147
+ }
148
+ /** The plot's default `timeline.filterMode`. */
149
+ get filterMode() {
150
+ return this.#options.timeline?.filterMode;
151
+ }
152
+ /**
153
+ * How the plot tweens its timeline unless `timeline.interpolate` says
154
+ * otherwise, from the channels its "mapping" phase resolves over
155
+ * `props.data`: rows matched by the values of whichever `key` channels are
156
+ * set, `value` tweened. `undefined` when its kind tweens nothing.
157
+ */
158
+ interpolation(props, cfg) {
159
+ const channels = this.#options.timeline?.interpolation;
160
+ if (!channels || !props.data)
161
+ return undefined;
162
+ const upToMapping = this.stages.filter((s) => s.phase === 'data' || s.phase === 'mapping');
163
+ // Without a legend: the channels read the same whatever it turns off.
164
+ const state = Pipeline.#through(upToMapping, this.#seed(props), Pipeline.#ctxFor(cfg, null));
165
+ const channel = (ref) => {
166
+ const name = ref === 'value' || ref === 'category' ? state.axes?.[ref] : ref;
167
+ if (name === undefined)
168
+ return undefined;
169
+ const c = state.channels?.[name];
170
+ return typeof c === 'object' ? c : undefined;
171
+ };
172
+ const value = channel(channels.value)?.source;
173
+ if (value === undefined)
174
+ return undefined;
175
+ const keys = channels.key
176
+ .map(channel)
177
+ .filter((c) => c?.source !== undefined);
178
+ const key = keys.length > 1
179
+ ? (row) => keys.map((c) => String(c.accessor(row))).join('::')
180
+ : keys[0]?.source;
181
+ return { value: value, key };
182
+ }
183
+ /** The state a run starts from. */
184
+ #seed(input, rows) {
185
+ return this.#options.seed ? this.#options.seed(input, rows) : input;
186
+ }
187
+ /** `stages` over `state`, in order. */
188
+ static #through(stages, state, ctx) {
189
+ return stages.reduce((acc, stage) => stage.run(acc, ctx), state);
190
+ }
191
+ /** The context a plot-level run reads, outside any core: the configuration and the legend. */
192
+ static #ctxFor(cfg, legendInteraction) {
193
+ const interaction = new PlotInteraction(() => cfg, { legend: legendInteraction });
194
+ return { cfg, interaction };
195
+ }
196
+ /**
197
+ * The state an axis plot's pipeline starts from: its core props, drawing
198
+ * `rows`. Every kind starts from the same shape; a prop its phases don't
199
+ * read is simply carried along.
200
+ */
201
+ static #axisSeed(props, rows = props.data) {
202
+ return {
203
+ series: props.series,
204
+ data: rows,
205
+ x: props.x,
206
+ y: props.y,
207
+ grouping: props.grouping,
208
+ color: props.color,
209
+ opacity: props.opacity,
210
+ r: props.r,
211
+ symbol: props.symbol,
212
+ segments: props.segments ?? {},
213
+ styles: props.styles,
214
+ gaps: props.styles?.gaps,
215
+ values: props.styles?.values,
216
+ scales: (props.scales ?? {}),
217
+ width: props.width,
218
+ height: props.height,
219
+ margins: props.margins,
220
+ tooltip: props.tooltip,
221
+ authorMarkers: props.markers ?? [],
222
+ statistics: props.statistics ?? [],
223
+ transforms: props.transforms ?? []
224
+ };
225
+ }
226
+ }
@@ -0,0 +1,25 @@
1
+ import type { Accessor } from '../../types/plots/data/common';
2
+ import type { AxisPlotState, AxisPlotCtx, DataStageOptions, PhaseStage } from '../../types/phases';
3
+ type AnyAxisState = AxisPlotState<any, any, any, any>;
4
+ /**
5
+ * The "data" phase every axis-based plot shares: its series (from `series`,
6
+ * or flat rows split by {@link DataPhase.buildGrouping}), what each position
7
+ * channel is and which way the plot runs ({@link PlotAxes}), each series'
8
+ * color, the series a legend omits dropped, each series cut into its styled
9
+ * visual segments, and - for a discrete mark - the values its gaps fill in.
10
+ * Colors and axes come from every series, before any is omitted or split by
11
+ * facet panel, so they stay put and every panel agrees.
12
+ */
13
+ export declare class DataPhase<TState extends AnyAxisState, TCtx extends AxisPlotCtx> implements PhaseStage<TState, TCtx> {
14
+ #private;
15
+ readonly phase: "data";
16
+ constructor(options?: DataStageOptions<TState, TCtx>);
17
+ run: (state: TState, ctx: TCtx) => TState;
18
+ /**
19
+ * The key a plot's rows split into series by: its `grouping`, or its `color`
20
+ * when that names categories. A numeric `color` is a continuous value (a
21
+ * heatmap's cells), so it colors rows without grouping them.
22
+ */
23
+ static buildGrouping(state: Pick<AnyAxisState, 'grouping' | 'color' | 'data'>): Accessor<any, unknown> | undefined;
24
+ }
25
+ export {};
@@ -0,0 +1,82 @@
1
+ import { buildSeries } from '../../utils/grouping';
2
+ import { resolveColorScale } from '../../utils/color';
3
+ import { resolveAccessor } from '../../plots/utils/accessors';
4
+ import { buildGroupedSeries, buildScopedMarkerGroups } from '../../plots/utils/segments';
5
+ import { buildGapFillMaps, isGapValue } from '../../plots/utils/gaps';
6
+ import { FacetPhase } from '../facet/FacetPhase';
7
+ import { PlotAxes } from './PlotAxes';
8
+ /**
9
+ * The "data" phase every axis-based plot shares: its series (from `series`,
10
+ * or flat rows split by {@link DataPhase.buildGrouping}), what each position
11
+ * channel is and which way the plot runs ({@link PlotAxes}), each series'
12
+ * color, the series a legend omits dropped, each series cut into its styled
13
+ * visual segments, and - for a discrete mark - the values its gaps fill in.
14
+ * Colors and axes come from every series, before any is omitted or split by
15
+ * facet panel, so they stay put and every panel agrees.
16
+ */
17
+ export class DataPhase {
18
+ phase = 'data';
19
+ #options;
20
+ constructor(options = {}) {
21
+ this.#options = options;
22
+ }
23
+ run = (state, ctx) => {
24
+ const options = this.#options;
25
+ const { series, data, segments, scales } = state;
26
+ const { connect = true, color: segmentColor } = options.segments ?? {};
27
+ const built = series ?? buildSeries(data ?? [], state.x, state.y, DataPhase.buildGrouping(state));
28
+ const fullSeries = options.orderSeries ? options.orderSeries(built, state) : built;
29
+ const axes = PlotAxes.build({
30
+ series: fullSeries,
31
+ scales,
32
+ given: { x: state.x !== undefined, y: state.y !== undefined },
33
+ discrete: options.discreteAxes
34
+ });
35
+ const colorForSeries = resolveColorScale(scales.color, (options.colorOrder ? options.colorOrder(fullSeries) : fullSeries).map((s) => s.name), ctx.cfg.palette);
36
+ const panelSeries = state.panels && state.panelOf && !series
37
+ ? FacetPhase.splitSeriesByPanel(fullSeries, state.panels, state.panelOf)
38
+ : fullSeries;
39
+ const resolvedSeries = ctx.interaction?.legend?.withoutOmitted(panelSeries) ?? panelSeries;
40
+ const groupedSeries = buildGroupedSeries(resolvedSeries, segments, connect);
41
+ const scopedGroups = buildScopedMarkerGroups({
42
+ groupedSeries,
43
+ segments,
44
+ colorFor: (s) => colorForSeries(s.name),
45
+ segmentColorFor: (style, defaultColor) => segmentColor?.(style) ?? defaultColor
46
+ });
47
+ // A continuous mark bridges its gaps instead (see `buildGapMarkers`).
48
+ const gapFillMaps = connect
49
+ ? undefined
50
+ : buildGapFillMaps(resolvedSeries, state.gaps, axes.value);
51
+ const next = {
52
+ ...state,
53
+ axes,
54
+ resolvedSeries,
55
+ allSeriesNames: fullSeries.map((s) => s.name),
56
+ groupedSeries,
57
+ flat: resolvedSeries.flatMap((s) => s.data),
58
+ scopedGroups,
59
+ colorForSeries,
60
+ ...(gapFillMaps ? { gapFillMaps } : {})
61
+ };
62
+ return options.extend ? options.extend(next, ctx) : next;
63
+ };
64
+ /**
65
+ * The key a plot's rows split into series by: its `grouping`, or its `color`
66
+ * when that names categories. A numeric `color` is a continuous value (a
67
+ * heatmap's cells), so it colors rows without grouping them.
68
+ */
69
+ static buildGrouping(state
70
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
71
+ ) {
72
+ if (state.grouping !== undefined)
73
+ return state.grouping;
74
+ const color = state.color;
75
+ if (color === undefined || !state.data)
76
+ return color;
77
+ const read = resolveAccessor(color);
78
+ const values = state.data.map(read).filter((v) => !isGapValue(v));
79
+ const continuous = values.length > 0 && values.every((v) => typeof v === 'number');
80
+ return continuous ? undefined : color;
81
+ }
82
+ }
@@ -0,0 +1,75 @@
1
+ import type { AxisChannelName } from '../../types/layout/mapping';
2
+ import type { AxisRef, DiscreteAxesCount, InferredAxis, Orientation } from '../../types/phases/data/axes';
3
+ /** What {@link PlotAxes.build} reads: the series' own channels and the author's axis scales. */
4
+ type PlotAxesSource = {
5
+ series: {
6
+ x?: unknown;
7
+ y?: unknown;
8
+ data: unknown[];
9
+ }[];
10
+ scales?: {
11
+ x?: {
12
+ type?: string;
13
+ };
14
+ y?: {
15
+ type?: string;
16
+ };
17
+ };
18
+ /** Channels the plot sets itself, which count as active even when no series carries them (an empty one). */
19
+ given?: Partial<Record<AxisChannelName, boolean>>;
20
+ /** How many axes the plot kind lays out as categories. */
21
+ discrete?: DiscreteAxesCount;
22
+ };
23
+ /**
24
+ * What a plot's position channels are, read once from its series: which
25
+ * channels the author set, how each axis lays out its values, which one holds
26
+ * the categories and which the measured values, and so which way the marks
27
+ * run. Every later phase reads it instead of telling axes apart on its own.
28
+ */
29
+ export declare class PlotAxes {
30
+ #private;
31
+ readonly x?: InferredAxis;
32
+ readonly y?: InferredAxis;
33
+ /** The axis whose values the plot sorts into, when it has exactly one. */
34
+ readonly category?: AxisChannelName;
35
+ /** The axis the plot measures along. */
36
+ readonly value?: AxisChannelName;
37
+ readonly orientation: Orientation;
38
+ /** The axes the plot kind lays out as bands: its category axes, none for a kind that needs none. */
39
+ readonly bands: readonly AxisChannelName[];
40
+ constructor(fields: {
41
+ x?: InferredAxis;
42
+ y?: InferredAxis;
43
+ category?: AxisChannelName;
44
+ value?: AxisChannelName;
45
+ orientation: Orientation;
46
+ bands?: readonly AxisChannelName[];
47
+ });
48
+ get isHorizontal(): boolean;
49
+ /** The axis `ref` names: itself, or whichever axis plays that role. */
50
+ resolve(ref: AxisRef): AxisChannelName | undefined;
51
+ /** Whether `axis` lays out distinct categories. */
52
+ isDiscrete(axis: AxisChannelName): boolean;
53
+ /** The axis a plot without inferred axes measures along: `y`. */
54
+ static valueOf(state: {
55
+ axes?: PlotAxes;
56
+ }): AxisChannelName;
57
+ /** The axis a plot without inferred axes sorts into: `x`. */
58
+ static categoryOf(state: {
59
+ axes?: PlotAxes;
60
+ }): AxisChannelName;
61
+ /** The other position axis. */
62
+ static other(axis: AxisChannelName): AxisChannelName;
63
+ /**
64
+ * A plot's axes from its series and `scales`. An author's `scales.*.type`
65
+ * always wins; otherwise each axis' values decide (strings are categories,
66
+ * dates are time, numbers a range). A kind needing more category axes than
67
+ * that gives promotes the likeliest ones - time first, then `x` before `y` -
68
+ * so bars over years stay bars. With one category axis, the other is the
69
+ * value, and the plot is horizontal when the categories run along `y`; a
70
+ * plot with a single channel (a histogram) is horizontal when that channel
71
+ * is `y`.
72
+ */
73
+ static build({ series, scales, given, discrete }: PlotAxesSource): PlotAxes;
74
+ }
75
+ export {};
@@ -0,0 +1,151 @@
1
+ import { resolveAccessor } from '../../plots/utils/accessors';
2
+ import { isGapValue } from '../../plots/utils/gaps';
3
+ import { DISCRETE_SCALE_TYPES, TEMPORAL_SCALE_TYPES } from '../../types/layout/scales';
4
+ const AXES = ['x', 'y'];
5
+ const DISCRETE_TYPES = new Set(DISCRETE_SCALE_TYPES);
6
+ const TEMPORAL_TYPES = new Set(TEMPORAL_SCALE_TYPES);
7
+ /**
8
+ * What a plot's position channels are, read once from its series: which
9
+ * channels the author set, how each axis lays out its values, which one holds
10
+ * the categories and which the measured values, and so which way the marks
11
+ * run. Every later phase reads it instead of telling axes apart on its own.
12
+ */
13
+ export class PlotAxes {
14
+ x;
15
+ y;
16
+ /** The axis whose values the plot sorts into, when it has exactly one. */
17
+ category;
18
+ /** The axis the plot measures along. */
19
+ value;
20
+ orientation;
21
+ /** The axes the plot kind lays out as bands: its category axes, none for a kind that needs none. */
22
+ bands;
23
+ constructor(fields) {
24
+ this.x = fields.x;
25
+ this.y = fields.y;
26
+ this.category = fields.category;
27
+ this.value = fields.value;
28
+ this.orientation = fields.orientation;
29
+ this.bands = fields.bands ?? [];
30
+ }
31
+ get isHorizontal() {
32
+ return this.orientation === 'horizontal';
33
+ }
34
+ /** The axis `ref` names: itself, or whichever axis plays that role. */
35
+ resolve(ref) {
36
+ return ref === 'x' || ref === 'y' ? ref : this[ref];
37
+ }
38
+ /** Whether `axis` lays out distinct categories. */
39
+ isDiscrete(axis) {
40
+ return this[axis]?.kind === 'discrete';
41
+ }
42
+ /** The axis a plot without inferred axes measures along: `y`. */
43
+ static valueOf(state) {
44
+ return state.axes?.value ?? 'y';
45
+ }
46
+ /** The axis a plot without inferred axes sorts into: `x`. */
47
+ static categoryOf(state) {
48
+ return state.axes?.category ?? 'x';
49
+ }
50
+ /** The other position axis. */
51
+ static other(axis) {
52
+ return axis === 'x' ? 'y' : 'x';
53
+ }
54
+ /**
55
+ * A plot's axes from its series and `scales`. An author's `scales.*.type`
56
+ * always wins; otherwise each axis' values decide (strings are categories,
57
+ * dates are time, numbers a range). A kind needing more category axes than
58
+ * that gives promotes the likeliest ones - time first, then `x` before `y` -
59
+ * so bars over years stay bars. With one category axis, the other is the
60
+ * value, and the plot is horizontal when the categories run along `y`; a
61
+ * plot with a single channel (a histogram) is horizontal when that channel
62
+ * is `y`.
63
+ */
64
+ static build({ series, scales, given, discrete = 0 }) {
65
+ const axes = {};
66
+ for (const axis of AXES) {
67
+ if (!given?.[axis] && !series.some((s) => s[axis] !== undefined))
68
+ continue;
69
+ const explicit = PlotAxes.#kindOfType(scales?.[axis]?.type);
70
+ axes[axis] = explicit
71
+ ? { kind: explicit, origin: 'explicit' }
72
+ : { kind: PlotAxes.#kindOfValues(series, axis), origin: 'inferred' };
73
+ }
74
+ const active = AXES.filter((axis) => axes[axis] !== undefined);
75
+ const discreteAxes = () => active.filter((axis) => axes[axis].kind === 'discrete');
76
+ const candidates = active
77
+ .filter((axis) => axes[axis].kind !== 'discrete' && axes[axis].origin !== 'explicit')
78
+ .sort((a, b) => Number(axes[b].kind === 'temporal') - Number(axes[a].kind === 'temporal'));
79
+ while (discreteAxes().length < discrete && candidates.length) {
80
+ axes[candidates.shift()] = { kind: 'discrete', origin: 'promoted' };
81
+ }
82
+ const found = discreteAxes();
83
+ const fields = { x: axes.x, y: axes.y };
84
+ if (discrete === 2)
85
+ return new PlotAxes({ ...fields, orientation: 'vertical', bands: active });
86
+ if (discrete === 1) {
87
+ if (found.length > 1) {
88
+ console.warn('Plot: both axes lay out categories, but this plot measures along one of them - ' +
89
+ 'mark the value axis with a numeric scales type or pass numeric values. Defaulting the categories to x.');
90
+ }
91
+ const category = found.length === 1 ? found[0] : 'x';
92
+ return new PlotAxes({
93
+ ...fields,
94
+ category,
95
+ value: PlotAxes.other(category),
96
+ orientation: category === 'y' ? 'horizontal' : 'vertical',
97
+ bands: [category]
98
+ });
99
+ }
100
+ if (active.length === 1) {
101
+ const [only] = active;
102
+ return new PlotAxes({
103
+ ...fields,
104
+ value: PlotAxes.other(only),
105
+ orientation: only === 'y' ? 'horizontal' : 'vertical'
106
+ });
107
+ }
108
+ // Two free axes: horizontal only when `y` holds positions (categories or time) and `x` a range.
109
+ const horizontal = axes.x?.kind === 'continuous' && axes.y !== undefined && axes.y.kind !== 'continuous';
110
+ const value = horizontal ? 'x' : 'y';
111
+ return new PlotAxes({
112
+ ...fields,
113
+ value,
114
+ category: found.length === 1 ? found[0] : undefined,
115
+ orientation: horizontal ? 'horizontal' : 'vertical'
116
+ });
117
+ }
118
+ /** The kind an author's scale type sets, or `undefined` when it leaves it to the values. */
119
+ static #kindOfType(type) {
120
+ if (type === undefined || type === 'auto')
121
+ return undefined;
122
+ if (DISCRETE_TYPES.has(type))
123
+ return 'discrete';
124
+ if (TEMPORAL_TYPES.has(type))
125
+ return 'temporal';
126
+ return 'continuous';
127
+ }
128
+ /** The kind one axis' values read as: any non-number makes it discrete, all dates temporal. */
129
+ static #kindOfValues(series, axis) {
130
+ let dates = 0;
131
+ let numbers = 0;
132
+ for (const s of series) {
133
+ const accessor = s[axis];
134
+ if (accessor === undefined)
135
+ continue;
136
+ const read = resolveAccessor(accessor);
137
+ for (const row of s.data) {
138
+ const v = read(row);
139
+ if (isGapValue(v) || v === '')
140
+ continue;
141
+ if (typeof v === 'number')
142
+ numbers++;
143
+ else if (v instanceof Date)
144
+ dates++;
145
+ else
146
+ return 'discrete';
147
+ }
148
+ }
149
+ return dates > 0 && numbers === 0 ? 'temporal' : 'continuous';
150
+ }
151
+ }
@@ -0,0 +1,52 @@
1
+ import type { Series } from '../../types/plots/data/common';
2
+ import type { FacetPanel, FacetStageState, PhaseStage } from '../../types/phases';
3
+ /** The state fields narrowing to some panels filters. */
4
+ type NarrowableState = FacetStageState & {
5
+ resolvedSeries?: Series<Record<string, unknown>>[];
6
+ flat?: unknown[];
7
+ scopedGroups?: {
8
+ panel?: string;
9
+ }[];
10
+ groupedSeries?: {
11
+ series: {
12
+ panel?: string;
13
+ };
14
+ }[];
15
+ processedData?: {
16
+ data: Record<string | symbol, unknown>[];
17
+ };
18
+ };
19
+ /** The field a processed row carries its facet panel under. */
20
+ export declare const PANEL_KEY = "__panel";
21
+ /**
22
+ * The "facet" phase: the panels the plot's `facet` lays its rows out in, and
23
+ * which panel each row belongs to. It runs first, so the "data" phase builds
24
+ * every series already split by panel. A plot drawn from pre-built `series`
25
+ * has no rows to split, so its facet is ignored.
26
+ */
27
+ export declare class FacetPhase<TState extends FacetStageState> implements PhaseStage<TState> {
28
+ readonly phase: "facet";
29
+ run: (state: TState) => TState;
30
+ /** The id of a series' part in one facet panel. */
31
+ static buildPanelSeriesId(panel: string, name: string): string;
32
+ /**
33
+ * Each series split into one per facet panel, panel by panel: the same
34
+ * `name` (and so the same color and legend entry), its own `id` and `panel`,
35
+ * and only that panel's rows. A series with no rows in a panel has no part there.
36
+ */
37
+ static splitSeriesByPanel<S extends Series<Record<string, unknown>>>(series: S[], panels: FacetPanel[], panelOf: NonNullable<FacetStageState['panelOf']>): S[];
38
+ /** A state narrowed to one panel's series, rows and processed rows. */
39
+ static narrowToPanel<TState extends NarrowableState>(state: TState, panel: string): TState;
40
+ /** A state narrowed to some panels' series, rows and processed rows. */
41
+ static narrowToPanels<TState extends NarrowableState>(state: TState, panels: readonly string[]): TState;
42
+ /**
43
+ * One facet panel's part of a run of the data phases over every panel: its
44
+ * series, rows, processed rows and markers, without the facet itself, ready
45
+ * for the phases each panel runs on its own.
46
+ */
47
+ static buildPanelState<TState extends FacetStageState & {
48
+ resolvedSeries?: Series<Record<string, unknown>>[];
49
+ markers?: object[];
50
+ }>(state: TState, panel: string): Omit<TState, 'facet' | 'panels' | 'panelOf'>;
51
+ }
52
+ export {};