@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,157 @@
1
+ import { resolveAccessor } from '../../plots/utils/accessors';
2
+ import { isGapValue } from '../../plots/utils/gaps';
3
+ import { MarkerAxisValues } from './MarkerAxisValues';
4
+ import { PlotAxes } from '../data/PlotAxes';
5
+ import { DISCRETE_SCALE_TYPES } from '../../types/layout/scales';
6
+ const AXES = ['x', 'y'];
7
+ const POSITION_CHANNELS = {
8
+ x: ['x', 'x1', 'x2'],
9
+ y: ['y', 'y1', 'y2']
10
+ };
11
+ const DISCRETE_TYPES = new Set(DISCRETE_SCALE_TYPES);
12
+ /** The values as finite numbers, or `undefined` when any isn't a number (a band or date axis). */
13
+ function numeric(values) {
14
+ const present = values.filter((v) => v != null && v !== '');
15
+ if (!present.every((v) => typeof v === 'number'))
16
+ return undefined;
17
+ return present.filter(Number.isFinite);
18
+ }
19
+ /**
20
+ * The shared "scales" phase. Each axis the kind lays out as categories
21
+ * (`state.axes.bands`) becomes a band scale, padded and ordered as the kind
22
+ * says; each `symmetric` axis reaches as far below zero as above it; and an
23
+ * unpinned numeric axis grows to cover derived markers and the ranges the
24
+ * transforms gave the rows - from zero on the axes `zero` names. The author's
25
+ * `scales` always win, and a kind adds its own on top (`defaults`, `fit`, `extend`).
26
+ */
27
+ export class ScalesPhase {
28
+ phase = 'scales';
29
+ #options;
30
+ constructor(options = {}) {
31
+ this.#options = options;
32
+ }
33
+ /** The axes whose marks grow from zero, in this state. */
34
+ zeroAxes(state) {
35
+ return ScalesPhase.#axesOf(this.#options.zero, state);
36
+ }
37
+ /** The axes that reach as far below zero as above it, in this state. */
38
+ symmetricAxes(state) {
39
+ return ScalesPhase.#axesOf(this.#options.symmetric, state);
40
+ }
41
+ /** Whether the kind keeps its categories in the order the data gives them. */
42
+ get keepsDataOrder() {
43
+ return this.#options.bandOrder === 'data';
44
+ }
45
+ run = (state, ctx) => {
46
+ const options = this.#options;
47
+ const { axes, processedData, markers = [] } = state;
48
+ const defaults = options.defaults?.(state, ctx) ?? {};
49
+ const symmetric = new Set(this.symmetricAxes(state));
50
+ const zero = new Set(this.zeroAxes(state));
51
+ const scales = { ...state.scales };
52
+ for (const axis of AXES) {
53
+ const own = ScalesPhase.#defaultsOf(defaults, axis, axes);
54
+ if (axes?.bands.includes(axis)) {
55
+ scales[axis] = this.#band(scales[axis], own, processedData, axis);
56
+ continue;
57
+ }
58
+ // The value axis of a plot with categories is never one itself, whatever it was marked as.
59
+ const stripType = axis === axes?.value &&
60
+ axes.bands.length > 0 &&
61
+ DISCRETE_TYPES.has(scales[axis]?.type ?? '');
62
+ if (Object.keys(own).length || stripType) {
63
+ const given = { ...scales[axis] };
64
+ if (stripType)
65
+ delete given.type;
66
+ scales[axis] = { ...own, ...given };
67
+ }
68
+ if (symmetric.has(axis) && !scales[axis]?.domain) {
69
+ const reach = ScalesPhase.#reachOf(state, axis);
70
+ scales[axis] = { ...scales[axis], domain: [-reach, reach] };
71
+ }
72
+ }
73
+ const fitted = options.fit?.({ ...state, scales }, ctx) ?? {};
74
+ for (const axis of AXES) {
75
+ if (fitted[axis])
76
+ scales[axis] = { ...scales[axis], ...fitted[axis] };
77
+ }
78
+ for (const axis of AXES) {
79
+ if (axes?.bands.includes(axis) || scales[axis]?.domain)
80
+ continue;
81
+ const derived = MarkerAxisValues.of(markers, axis);
82
+ const ranged = POSITION_CHANNELS[axis]
83
+ .slice(1)
84
+ .some((name) => processedData?.channels[name] !== undefined);
85
+ // A transform's own output on an axis from zero (a bin's count) has no baseline row to reach it.
86
+ const aggregated = (processedData?.transforms.length ?? 0) > 0 && zero.has(axis);
87
+ if (!derived.length && !ranged && !aggregated)
88
+ continue;
89
+ const own = numeric(ScalesPhase.processedValues(processedData, axis));
90
+ if (!own)
91
+ continue;
92
+ const values = [...own, ...derived, ...(zero.has(axis) ? [0] : [])];
93
+ scales[axis] = {
94
+ ...scales[axis],
95
+ domain: [Math.min(...values), Math.max(...values)],
96
+ nice: scales[axis]?.nice ?? true
97
+ };
98
+ }
99
+ const next = { ...state, scales };
100
+ return options.extend ? options.extend(next, ctx) : next;
101
+ };
102
+ /** A category axis as a band scale: the kind's options under the author's, in the order the kind asks for. */
103
+ #band(author, own, processed, axis) {
104
+ const given = author ?? {};
105
+ const type = given.type === undefined || given.type === 'auto' || given.type === 'categorical'
106
+ ? 'band'
107
+ : given.type;
108
+ const band = { ...own, ...given, type };
109
+ // A padding the author gives replaces the kind's own inner and outer ones.
110
+ if (given.padding !== undefined) {
111
+ if (own.paddingInner !== undefined && given.paddingInner === undefined) {
112
+ band.paddingInner = given.padding;
113
+ }
114
+ if (own.paddingOuter !== undefined && given.paddingOuter === undefined) {
115
+ band.paddingOuter = given.padding;
116
+ }
117
+ }
118
+ if (this.keepsDataOrder && !band.domain) {
119
+ band.domain = [...new Set(ScalesPhase.processedValues(processed, axis))];
120
+ }
121
+ return band;
122
+ }
123
+ /** Every value the plot's own processed rows sit at on one axis. */
124
+ static processedValues(processed, axis) {
125
+ if (!processed)
126
+ return [];
127
+ return POSITION_CHANNELS[axis].flatMap((name) => {
128
+ const channel = processed.channels[name];
129
+ if (channel === undefined)
130
+ return [];
131
+ const read = resolveAccessor(channel);
132
+ return processed.data.map((row) => read(row));
133
+ });
134
+ }
135
+ /** The axes `refs` name, by name or by the role they play in this state. */
136
+ static #axesOf(refs, state) {
137
+ return (refs ?? []).map((ref) => ref === 'value'
138
+ ? PlotAxes.valueOf(state)
139
+ : ref === 'category'
140
+ ? PlotAxes.categoryOf(state)
141
+ : ref);
142
+ }
143
+ /** The kind's options for one axis: those for its role, then those for it by name. */
144
+ static #defaultsOf(defaults, axis, axes) {
145
+ const role = axis === axes?.value ? 'value' : axis === axes?.category ? 'category' : undefined;
146
+ return { ...(role ? defaults[role] : undefined), ...defaults[axis] };
147
+ }
148
+ /** How far an axis reaches from zero: the largest magnitude its rows, and the gaps filled in between them, sit at. */
149
+ static #reachOf(state, axis) {
150
+ const rows = ScalesPhase.processedValues(state.processedData, axis)
151
+ .filter((v) => !isGapValue(v))
152
+ .map((v) => Math.abs(Number(v)));
153
+ const filled = [...(state.gapFillMaps?.values() ?? [])].flatMap((fills) => [...fills.values()].map((fill) => Math.abs(fill.value)));
154
+ const reach = Math.max(...[...rows, ...filled].filter(Number.isFinite));
155
+ return Number.isFinite(reach) ? reach : 1;
156
+ }
157
+ }
@@ -0,0 +1,55 @@
1
+ import { ScalesPhase } from '../scales/ScalesPhase';
2
+ import type { PlotAxes } from '../data/PlotAxes';
3
+ import type { AxisChannelName } from '../../types/layout/mapping';
4
+ import type { FacetStageState, PhaseStage, ProcessedData, SharedAxisValues, SharedScalesOptions } from '../../types/phases';
5
+ import type { AxisBasedScalesConfig } from '../../types/layout/scales';
6
+ /** One channel's shared scale: its domain, and whether svelteplot may still round it. */
7
+ type SharedScale = {
8
+ domain: unknown[];
9
+ nice?: boolean;
10
+ } | undefined;
11
+ /** The state the "shared scales" step reads: a data run's output, over every panel. */
12
+ type SharedScalesState = FacetStageState & {
13
+ axes?: PlotAxes;
14
+ processedData?: ProcessedData;
15
+ markers?: object[];
16
+ sharedScales?: Record<string, AxisBasedScalesConfig<never>>;
17
+ };
18
+ /**
19
+ * The "sharedScales" phase, the last of the data phases: the figure-wide part
20
+ * of scales - the domains every slice shares, as `sharedScales` keyed by facet panel
21
+ * (`''` for the whole run without a facet). Each shared x/y domain spans
22
+ * where the sharing panels' rows and markers sit (as bands, or from zero, as
23
+ * the kind's axes and "scales" say), grouped by `facet.scales`; each `fromScalesPhase` channel
24
+ * takes the domain the kind's own "scales" phase sets over
25
+ * those panels. A panel's own "scales" phase only sees its rows, so this
26
+ * can't happen there. Without options, a kind still shares its domains: it just
27
+ * has no bands and nothing that starts from zero.
28
+ */
29
+ export declare class SharedScalesPhase<TState extends SharedScalesState, TCtx> implements PhaseStage<TState, TCtx> {
30
+ #private;
31
+ readonly phase: "sharedScales";
32
+ constructor(options: SharedScalesOptions | undefined, scales?: ScalesPhase<any, any>);
33
+ run: (state: TState, ctx: TCtx) => TState;
34
+ /**
35
+ * One axis' domain over some slices: sorted values on a band axis, `[min, max]`
36
+ * otherwise, or `undefined`. A numeric extent is niced here, once, so every
37
+ * slice gets the exact same domain - svelteplot's own `nice` rounds by a tick
38
+ * count derived from each panel's height, which over-rounds short panels and
39
+ * can disagree between panels of different heights.
40
+ */
41
+ static buildSharedAxisScale(slices: SharedAxisValues[], axis: AxisChannelName): SharedScale;
42
+ /**
43
+ * Where one panel's rows and markers sit on each axis, read off a pipeline
44
+ * run over every panel - or, without a `panel`, where all of them sit.
45
+ */
46
+ static buildPanelAxisValues(state: {
47
+ processedData?: ProcessedData;
48
+ markers?: object[];
49
+ }, panel: string | undefined, layout?: {
50
+ band?: AxisChannelName[];
51
+ zero?: AxisChannelName[];
52
+ dataOrder?: boolean;
53
+ }): SharedAxisValues;
54
+ }
55
+ export {};
@@ -0,0 +1,168 @@
1
+ import { nice as niceExtent } from 'd3-array';
2
+ import { ScalesPhase } from '../scales/ScalesPhase';
3
+ import { Pipeline } from '../Pipeline';
4
+ import { PANEL_KEY, FacetPhase } from '../facet/FacetPhase';
5
+ import { isFacetWrap } from '../../layout/facet/config';
6
+ import { MarkerAxisValues } from '../scales/MarkerAxisValues';
7
+ /** Natural ascending order, as svelteplot sorts a band domain. */
8
+ function ascending(a, b) {
9
+ return a < b ? -1 : a > b ? 1 : 0;
10
+ }
11
+ /**
12
+ * The "sharedScales" phase, the last of the data phases: the figure-wide part
13
+ * of scales - the domains every slice shares, as `sharedScales` keyed by facet panel
14
+ * (`''` for the whole run without a facet). Each shared x/y domain spans
15
+ * where the sharing panels' rows and markers sit (as bands, or from zero, as
16
+ * the kind's axes and "scales" say), grouped by `facet.scales`; each `fromScalesPhase` channel
17
+ * takes the domain the kind's own "scales" phase sets over
18
+ * those panels. A panel's own "scales" phase only sees its rows, so this
19
+ * can't happen there. Without options, a kind still shares its domains: it just
20
+ * has no bands and nothing that starts from zero.
21
+ */
22
+ export class SharedScalesPhase {
23
+ phase = 'sharedScales';
24
+ #options;
25
+ #kindScales;
26
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
+ #scales;
28
+ constructor(options,
29
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
30
+ scales = new ScalesPhase()) {
31
+ this.#options = options;
32
+ this.#scales = scales;
33
+ this.#kindScales = new Pipeline([scales]);
34
+ }
35
+ run = (state, ctx) => {
36
+ const facet = state.facet;
37
+ const panels = facet ? (state.panels ?? []) : [];
38
+ // A symmetric axis has no domain but the one the kind's "scales" phase gives it.
39
+ const fromPhase = new Set([
40
+ ...(this.#options?.fromScalesPhase ?? []),
41
+ ...this.#scales.symmetricAxes(state)
42
+ ]);
43
+ const layout = {
44
+ band: [...(state.axes?.bands ?? [])],
45
+ zero: this.#scales.zeroAxes(state),
46
+ dataOrder: this.#scales.keepsDataOrder
47
+ };
48
+ const channels = fromPhase.has('color') ? ['x', 'y', 'color'] : ['x', 'y'];
49
+ /** The channel's domain over `members` panels, or every row without them. */
50
+ const domainOver = (channel, members) => {
51
+ if (fromPhase.has(channel)) {
52
+ const scoped = members ? FacetPhase.narrowToPanels(state, members) : state;
53
+ const scales = this.#kindScales.run(scoped, ctx).scales;
54
+ const domain = scales?.[channel]?.domain;
55
+ return domain === undefined ? undefined : { domain };
56
+ }
57
+ if (channel === 'color')
58
+ return undefined;
59
+ const values = members
60
+ ? members.map((panel) => SharedScalesPhase.buildPanelAxisValues(state, panel, layout))
61
+ : [SharedScalesPhase.buildPanelAxisValues(state, undefined, layout)];
62
+ return SharedScalesPhase.buildSharedAxisScale(values, channel);
63
+ };
64
+ const cache = new Map();
65
+ const scalesOf = (place) => {
66
+ const out = {};
67
+ for (const channel of channels) {
68
+ const line = SharedScalesPhase.#sharingLine(facet, channel);
69
+ if (!line)
70
+ continue;
71
+ const key = line === 'all' ? '' : (place?.[line] ?? '');
72
+ const cacheKey = `${channel}\u0000${key}`;
73
+ if (!cache.has(cacheKey)) {
74
+ const members = panels.length
75
+ ? panels.filter((p) => line === 'all' || p[line] === key).map((p) => p.key)
76
+ : undefined;
77
+ // Every panel sharing a phase-derived domain is the whole run, as it was built.
78
+ const whole = line === 'all' && fromPhase.has(channel);
79
+ cache.set(cacheKey, domainOver(channel, whole ? undefined : members));
80
+ }
81
+ const scale = cache.get(cacheKey);
82
+ if (scale)
83
+ out[channel] = scale;
84
+ }
85
+ return Object.keys(out).length ? out : undefined;
86
+ };
87
+ const sharedScales = {};
88
+ const add = (key, scales) => {
89
+ if (scales)
90
+ sharedScales[key] = scales;
91
+ };
92
+ if (panels.length)
93
+ for (const panel of panels)
94
+ add(panel.key, scalesOf(panel));
95
+ else
96
+ add('', scalesOf(undefined));
97
+ return { ...state, sharedScales };
98
+ };
99
+ /**
100
+ * One axis' domain over some slices: sorted values on a band axis, `[min, max]`
101
+ * otherwise, or `undefined`. A numeric extent is niced here, once, so every
102
+ * slice gets the exact same domain - svelteplot's own `nice` rounds by a tick
103
+ * count derived from each panel's height, which over-rounds short panels and
104
+ * can disagree between panels of different heights.
105
+ */
106
+ static buildSharedAxisScale(slices, axis) {
107
+ const values = slices
108
+ .flatMap((slice) => slice[axis])
109
+ .filter((v) => v != null && v !== '' && !(typeof v === 'number' && !Number.isFinite(v)));
110
+ if (!values.length)
111
+ return undefined;
112
+ if (slices.some((slice) => slice.band.includes(axis))) {
113
+ const distinct = [...new Set(values)];
114
+ return {
115
+ domain: slices.some((slice) => slice.dataOrder) ? distinct : distinct.sort(ascending)
116
+ };
117
+ }
118
+ if (values.every((v) => typeof v === 'number')) {
119
+ const numbers = slices.some((slice) => slice.zero.includes(axis))
120
+ ? [...values, 0]
121
+ : values;
122
+ return { domain: niceExtent(Math.min(...numbers), Math.max(...numbers), 10), nice: false };
123
+ }
124
+ if (values.every((v) => v instanceof Date)) {
125
+ const times = values.map((d) => +d);
126
+ return { domain: [new Date(Math.min(...times)), new Date(Math.max(...times))] };
127
+ }
128
+ return { domain: [...new Set(values)].sort(ascending) };
129
+ }
130
+ /**
131
+ * Where one panel's rows and markers sit on each axis, read off a pipeline
132
+ * run over every panel - or, without a `panel`, where all of them sit.
133
+ */
134
+ static buildPanelAxisValues(state, panel, layout = {}) {
135
+ const inPanel = (tagged) => panel === undefined || tagged === panel;
136
+ const processed = state.processedData && {
137
+ ...state.processedData,
138
+ data: state.processedData.data.filter((row) => inPanel(row[PANEL_KEY]))
139
+ };
140
+ const markers = (state.markers ?? []).filter((marker) => inPanel(marker[PANEL_KEY]));
141
+ const values = (axis) => [
142
+ ...ScalesPhase.processedValues(processed, axis),
143
+ ...MarkerAxisValues.of(markers, axis)
144
+ ];
145
+ return {
146
+ x: values('x'),
147
+ y: values('y'),
148
+ band: layout.band ?? [],
149
+ zero: layout.zero ?? [],
150
+ dataOrder: layout.dataOrder
151
+ };
152
+ }
153
+ /**
154
+ * Which slices share a channel's domain under `facet.scales`: every one, the
155
+ * panels on one column (x) or row (y) of a `rows`/`cols` grid, or none (a
156
+ * free axis of a wrapped facet). Color is shared by every slice.
157
+ */
158
+ static #sharingLine(facet, channel) {
159
+ if (!facet || channel === 'color')
160
+ return 'all';
161
+ const mode = facet.scales ?? 'shared';
162
+ if (mode !== 'free' && mode !== `free-${channel}`)
163
+ return 'all';
164
+ if (isFacetWrap(facet))
165
+ return null;
166
+ return channel === 'x' ? 'col' : 'row';
167
+ }
168
+ }
@@ -0,0 +1,43 @@
1
+ import type { ProcessedData } from '../../types/phases';
2
+ import type { ScopedMarkerGroup } from '../../types/layout/geometry';
3
+ type Row = Record<string, unknown>;
4
+ /** The plot's own author markers, made ready for the rest of the pipeline. */
5
+ export declare class AuthorMarkers {
6
+ #private;
7
+ /**
8
+ * Prepares a plot's own author markers for the rest of its pipeline: inherits
9
+ * the plot's grouping and default color first (a transform's `z` defaults to
10
+ * the grouping), splits a segment-scoped marker into one marker per segment of
11
+ * its series, then runs each marker's own transforms over its rows - its
12
+ * segment's or series' rows when it's scoped to one, the plot's rows otherwise.
13
+ */
14
+ static prepare<T extends {
15
+ type: string;
16
+ component?: unknown;
17
+ props?: unknown;
18
+ }>(markers: T[], plot: {
19
+ grouping?: unknown;
20
+ color?: unknown;
21
+ defaultColor?: string;
22
+ flat: Row[];
23
+ resolvedSeries?: {
24
+ name: string;
25
+ data: Row[];
26
+ }[];
27
+ scopedGroups?: ScopedMarkerGroup<Row>[];
28
+ }): T[];
29
+ /**
30
+ * A marker that draws the plot's rows (it sets no `data`) draws them as the
31
+ * plot does, after the plot's own transforms: it starts from the plot's
32
+ * processed rows - its series' rows when scoped to one - and takes the
33
+ * processed channels for any position it leaves unset. A position it sets
34
+ * itself reads that field of the processed rows (every source field is kept).
35
+ * Its `grouping` defaults to the plot's series, so it splits, and its own
36
+ * transforms run, per series. A plot without transforms draws its rows as
37
+ * they are, so its markers are left as is, as is a kind that draws no rows.
38
+ */
39
+ static withProcessedRows<T extends {
40
+ type: string;
41
+ }>(marker: T, processed?: ProcessedData): T;
42
+ }
43
+ export {};
@@ -0,0 +1,69 @@
1
+ import { MarkerKinds } from '../../markers/MarkerKinds';
2
+ import { Transforms } from '../transforms/Transforms';
3
+ import { MarkerGrouping } from './MarkerGrouping';
4
+ import { SERIES_ID_KEY, SERIES_KEY } from '../transforms/TransformsPhase';
5
+ /** Kinds that handle `scope: 'segment'` themselves, at render time. */
6
+ const RENDER_SCOPED_KINDS = new Set(['component', 'hover']);
7
+ /** The plot's own author markers, made ready for the rest of the pipeline. */
8
+ export class AuthorMarkers {
9
+ /**
10
+ * Prepares a plot's own author markers for the rest of its pipeline: inherits
11
+ * the plot's grouping and default color first (a transform's `z` defaults to
12
+ * the grouping), splits a segment-scoped marker into one marker per segment of
13
+ * its series, then runs each marker's own transforms over its rows - its
14
+ * segment's or series' rows when it's scoped to one, the plot's rows otherwise.
15
+ */
16
+ static prepare(markers, plot) {
17
+ return MarkerGrouping.inheritPlotGrouping(markers, plot).flatMap((marker) => {
18
+ const scope = marker.series;
19
+ const seriesRows = typeof scope === 'string'
20
+ ? plot.resolvedSeries?.find((s) => s.name === scope)?.data
21
+ : undefined;
22
+ const rows = seriesRows ?? plot.flat;
23
+ return AuthorMarkers.#splitBySegment(marker, rows, plot.scopedGroups).map((own) => Transforms.resolve(own, rows));
24
+ });
25
+ }
26
+ /**
27
+ * One marker per segment of a `scope: 'segment'` marker's series, each over
28
+ * that segment's rows and in its color. Any other marker is kept whole.
29
+ */
30
+ static #splitBySegment(marker, rows, scopedGroups = []) {
31
+ const own = marker;
32
+ if (own.scope !== 'segment' || RENDER_SCOPED_KINDS.has(own.type))
33
+ return [marker];
34
+ const group = scopedGroups.find((g) => g.name === own.series);
35
+ if (!group || group.segments.length === 0)
36
+ return [marker];
37
+ return group.segments
38
+ .map((seg) => ({ seg, data: (own.data ?? rows).filter((row) => seg.match(row)) }))
39
+ .filter(({ data }) => data.length > 0)
40
+ .map(({ seg, data }) => MarkerGrouping.withSeriesColor({ ...own, data }, seg.color));
41
+ }
42
+ /** Whether a marker's kind draws the plot's rows when it sets no `data`. */
43
+ static #drawsRows(type) {
44
+ return MarkerKinds.of(type)?.drawsRows ?? false;
45
+ }
46
+ /**
47
+ * A marker that draws the plot's rows (it sets no `data`) draws them as the
48
+ * plot does, after the plot's own transforms: it starts from the plot's
49
+ * processed rows - its series' rows when scoped to one - and takes the
50
+ * processed channels for any position it leaves unset. A position it sets
51
+ * itself reads that field of the processed rows (every source field is kept).
52
+ * Its `grouping` defaults to the plot's series, so it splits, and its own
53
+ * transforms run, per series. A plot without transforms draws its rows as
54
+ * they are, so its markers are left as is, as is a kind that draws no rows.
55
+ */
56
+ static withProcessedRows(marker, processed) {
57
+ const own = marker;
58
+ if (own.data !== undefined ||
59
+ !AuthorMarkers.#drawsRows(own.type) ||
60
+ !processed?.transforms.length) {
61
+ return marker;
62
+ }
63
+ const rows = typeof own.series === 'string'
64
+ ? processed.data.filter((row) => row[SERIES_KEY] === own.series)
65
+ : processed.data;
66
+ const channels = Object.fromEntries(Object.entries(processed.channels).filter(([key]) => own[key] === undefined));
67
+ return { ...own, ...channels, data: rows, grouping: own.grouping ?? SERIES_ID_KEY };
68
+ }
69
+ }
@@ -0,0 +1,48 @@
1
+ type MarkerLike = {
2
+ type: string;
3
+ series?: unknown;
4
+ color?: unknown;
5
+ fill?: unknown;
6
+ styles?: Record<string, unknown>;
7
+ bar?: object;
8
+ };
9
+ /** How a plot's own grouping and colors reach the markers its author adds. */
10
+ export declare class MarkerGrouping {
11
+ #private;
12
+ /**
13
+ * Gives a marker one flat color (its `styles`, or a box's `bar.fill`) when it
14
+ * sets none of its own: a series color, the plot's default series color.
15
+ * Dots take `dotFill`/`dotStroke`, line-only kinds take `stroke`, text takes
16
+ * `fill` (a stroke would outline its glyphs), filled kinds take both so their
17
+ * outline matches their fill.
18
+ */
19
+ static withSeriesColor<TMarker extends MarkerLike>(marker: TMarker, color: string | undefined): TMarker;
20
+ /**
21
+ * Gives each author marker the plot's own color rules by default:
22
+ *
23
+ * - A grouped plot (`color`/`grouping`) splits its markers the same way. A
24
+ * grouping-capable marker draws one shape per group, and a color-capable
25
+ * marker colors each row by its group's color.
26
+ * - An ungrouped plot's unscoped marker takes the plot's default series color.
27
+ *
28
+ * A marker's own `grouping`/`color` or flat color always wins. Scoped markers
29
+ * (`series`) are colored by their own series at render time, not here.
30
+ */
31
+ static inheritPlotGrouping<TMarker extends {
32
+ type: string;
33
+ }>(markers: TMarker[], plot: {
34
+ grouping?: unknown;
35
+ color?: unknown;
36
+ defaultColor?: string;
37
+ }): TMarker[];
38
+ /**
39
+ * Gives a scoped hover marker its series color through its own `dot` and
40
+ * `text` styles, the way `withSeriesColor` does for other markers. A style the
41
+ * marker sets itself keeps its own color.
42
+ */
43
+ static withHoverSeriesColor<T extends {
44
+ dot?: object;
45
+ text?: object;
46
+ }>(marker: T, color: string | undefined): T;
47
+ }
48
+ export {};
@@ -0,0 +1,113 @@
1
+ /** Marker kinds that split their rows into separate shapes per `grouping`. */
2
+ const GROUPING_KINDS = new Set([
3
+ 'area',
4
+ 'density',
5
+ 'line',
6
+ 'hull',
7
+ 'trail',
8
+ 'delaunayLink',
9
+ 'delaunayMesh',
10
+ 'voronoi',
11
+ 'voronoiMesh'
12
+ ]);
13
+ /** Marker kinds whose per-row `color` resolves through the plot's own color scale. */
14
+ const COLOR_KINDS = new Set([
15
+ 'area',
16
+ 'bar',
17
+ 'cell',
18
+ 'density',
19
+ 'delaunayLink',
20
+ 'delaunayMesh',
21
+ 'dot',
22
+ 'hull',
23
+ 'line',
24
+ 'rect',
25
+ 'tick',
26
+ 'trail',
27
+ 'voronoi',
28
+ 'voronoiMesh',
29
+ 'waffle'
30
+ ]);
31
+ /** Kinds that draw only a line, so their flat color is `stroke` alone. */
32
+ const LINE_KINDS = new Set(['line', 'regression', 'bollinger', 'delta']);
33
+ /** Flat color style keys - when a marker sets one, it keeps that color instead of inheriting one. */
34
+ const FLAT_COLOR_KEYS = ['fill', 'stroke', 'dotFill', 'dotStroke'];
35
+ /** A style value that paints nothing isn't a color choice, so it doesn't block inheritance. */
36
+ const isPaint = (value) => value !== undefined && value !== 'none' && value !== 'transparent';
37
+ /** How a plot's own grouping and colors reach the markers its author adds. */
38
+ export class MarkerGrouping {
39
+ /** Whether a marker sets its own flat color, which then takes precedence over any inherited one. */
40
+ static #hasFlatColor(marker) {
41
+ return isPaint(marker.fill) || FLAT_COLOR_KEYS.some((key) => isPaint(marker.styles?.[key]));
42
+ }
43
+ /**
44
+ * Gives a marker one flat color (its `styles`, or a box's `bar.fill`) when it
45
+ * sets none of its own: a series color, the plot's default series color.
46
+ * Dots take `dotFill`/`dotStroke`, line-only kinds take `stroke`, text takes
47
+ * `fill` (a stroke would outline its glyphs), filled kinds take both so their
48
+ * outline matches their fill.
49
+ */
50
+ static withSeriesColor(marker, color) {
51
+ if (!color || MarkerGrouping.#hasFlatColor(marker) || marker.color !== undefined)
52
+ return marker;
53
+ if (marker.type === 'box') {
54
+ return { ...marker, bar: { fill: color, ...(marker.bar ?? {}) } };
55
+ }
56
+ const keys = marker.type === 'dot'
57
+ ? ['dotFill', 'dotStroke']
58
+ : LINE_KINDS.has(marker.type)
59
+ ? ['stroke']
60
+ : marker.type === 'text'
61
+ ? ['fill']
62
+ : ['fill', 'stroke'];
63
+ const styles = { ...(marker.styles ?? {}) };
64
+ // A `'none'` the marker sets doesn't block the inherited color, but stays itself.
65
+ for (const key of keys)
66
+ styles[key] ??= color;
67
+ return { ...marker, styles };
68
+ }
69
+ /**
70
+ * Gives each author marker the plot's own color rules by default:
71
+ *
72
+ * - A grouped plot (`color`/`grouping`) splits its markers the same way. A
73
+ * grouping-capable marker draws one shape per group, and a color-capable
74
+ * marker colors each row by its group's color.
75
+ * - An ungrouped plot's unscoped marker takes the plot's default series color.
76
+ *
77
+ * A marker's own `grouping`/`color` or flat color always wins. Scoped markers
78
+ * (`series`) are colored by their own series at render time, not here.
79
+ */
80
+ static inheritPlotGrouping(markers, plot) {
81
+ const grouping = plot.grouping ?? plot.color;
82
+ return markers.map((marker) => {
83
+ const m = marker;
84
+ if (m.series !== undefined)
85
+ return marker;
86
+ if (grouping === undefined)
87
+ return MarkerGrouping.withSeriesColor(m, plot.defaultColor);
88
+ const updates = {};
89
+ if (GROUPING_KINDS.has(m.type) && m.grouping === undefined)
90
+ updates.grouping = grouping;
91
+ if (COLOR_KINDS.has(m.type) && m.color === undefined && !MarkerGrouping.#hasFlatColor(m)) {
92
+ updates.color = plot.color ?? plot.grouping;
93
+ }
94
+ return Object.keys(updates).length ? { ...m, ...updates } : marker;
95
+ });
96
+ }
97
+ /**
98
+ * Gives a scoped hover marker its series color through its own `dot` and
99
+ * `text` styles, the way `withSeriesColor` does for other markers. A style the
100
+ * marker sets itself keeps its own color.
101
+ */
102
+ static withHoverSeriesColor(marker, color) {
103
+ if (!color)
104
+ return marker;
105
+ const dot = (marker.dot ?? {});
106
+ const text = (marker.text ?? {});
107
+ return {
108
+ ...marker,
109
+ dot: { ...dot, dotFill: dot.dotFill ?? color, dotStroke: dot.dotStroke ?? color },
110
+ text: { ...text, fill: text.fill ?? color }
111
+ };
112
+ }
113
+ }