@fundar/data-chart-telling 0.0.64 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (839) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/LICENSE +21 -0
  3. package/README.md +112 -553
  4. package/dist/configuration/config.svelte.d.ts +5 -5
  5. package/dist/configuration/config.svelte.js +142 -46
  6. package/dist/configuration/fonts.d.ts +6 -0
  7. package/dist/configuration/fonts.js +6 -0
  8. package/dist/configuration/themes/compact.d.ts +2 -2
  9. package/dist/configuration/themes/compact.js +1 -1
  10. package/dist/configuration/themes/dark.d.ts +2 -2
  11. package/dist/configuration/themes/dark.js +5 -4
  12. package/dist/configuration/themes/default.d.ts +8 -3
  13. package/dist/configuration/themes/default.js +8 -2
  14. package/dist/configuration/themes/editorial.d.ts +2 -2
  15. package/dist/configuration/themes/editorial.js +2 -2
  16. package/dist/configuration/themes/index.d.ts +545 -80
  17. package/dist/configuration/themes/index.js +6 -5
  18. package/dist/index.d.ts +35 -48
  19. package/dist/index.js +20 -35
  20. package/dist/layout/base/BasePlotLayout.svelte +325 -0
  21. package/dist/layout/base/BasePlotLayout.svelte.d.ts +111 -0
  22. package/dist/layout/composer/PlotComposer.svelte +94 -0
  23. package/dist/layout/composer/PlotComposer.svelte.d.ts +13 -0
  24. package/dist/layout/coordinates/CameraFit.svelte +4 -4
  25. package/dist/layout/coordinates/CoordinatesLayout.svelte +11 -3
  26. package/dist/layout/coordinates/CoordinatesLayout.svelte.d.ts +6 -2
  27. package/dist/layout/coordinates/camera.svelte.d.ts +1 -1
  28. package/dist/layout/coordinates/camera.svelte.js +6 -6
  29. package/dist/layout/coordinates/projections/argentina.js +3 -3
  30. package/dist/layout/coordinates/projections/fit.js +1 -1
  31. package/dist/layout/coordinates/resolveCameraTarget.d.ts +1 -1
  32. package/dist/layout/coordinates/resolveProjection.d.ts +1 -1
  33. package/dist/layout/coordinates/resolveProjection.js +2 -2
  34. package/dist/layout/coordinates/rotate.svelte.d.ts +3 -3
  35. package/dist/layout/coordinates/rotate.svelte.js +8 -8
  36. package/dist/layout/coordinates/zoom.svelte.d.ts +1 -1
  37. package/dist/layout/facet/FacetIndicator.svelte +23 -23
  38. package/dist/layout/facet/FacetLayout.svelte +435 -398
  39. package/dist/layout/facet/FacetLayout.svelte.d.ts +9 -3
  40. package/dist/layout/facet/axes.d.ts +16 -0
  41. package/dist/layout/facet/axes.js +25 -0
  42. package/dist/layout/facet/config.d.ts +32 -0
  43. package/dist/layout/facet/config.js +82 -0
  44. package/dist/layout/figure/Figure.svelte +177 -0
  45. package/dist/layout/figure/Figure.svelte.d.ts +14 -0
  46. package/dist/layout/figure/FigureChrome.svelte +341 -0
  47. package/dist/layout/figure/FigureChrome.svelte.d.ts +21 -0
  48. package/dist/layout/geometry/FrameClip.svelte +45 -0
  49. package/dist/layout/geometry/FrameClip.svelte.d.ts +8 -0
  50. package/dist/layout/geometry/FrameClipping.d.ts +24 -0
  51. package/dist/layout/geometry/FrameClipping.js +40 -0
  52. package/dist/layout/geometry/GeometryLayout.svelte +287 -224
  53. package/dist/layout/geometry/GeometryLayout.svelte.d.ts +10 -10
  54. package/dist/layout/grid/Grid.svelte +194 -0
  55. package/dist/layout/grid/Grid.svelte.d.ts +26 -0
  56. package/dist/layout/grid/GridAlignment.svelte.d.ts +31 -0
  57. package/dist/layout/grid/GridAlignment.svelte.js +56 -0
  58. package/dist/layout/grid/GridCell.svelte +141 -0
  59. package/dist/layout/grid/GridCell.svelte.d.ts +17 -0
  60. package/dist/layout/grid/GridCellsRegistry.svelte.d.ts +52 -0
  61. package/dist/layout/grid/GridCellsRegistry.svelte.js +70 -0
  62. package/dist/layout/grid/GridPlan.d.ts +49 -0
  63. package/dist/layout/grid/GridPlan.js +167 -0
  64. package/dist/layout/grid/Tags.d.ts +8 -0
  65. package/dist/layout/grid/Tags.js +39 -0
  66. package/dist/layout/hover/HoverScope.svelte +11 -0
  67. package/dist/layout/hover/HoverScope.svelte.d.ts +8 -0
  68. package/dist/layout/hover/HoverSettings.d.ts +34 -0
  69. package/dist/layout/hover/HoverSettings.js +52 -0
  70. package/dist/layout/hover/HoverState.svelte.d.ts +47 -0
  71. package/dist/layout/hover/HoverState.svelte.js +99 -0
  72. package/dist/layout/hover/PlotHover.svelte.d.ts +63 -0
  73. package/dist/layout/hover/PlotHover.svelte.js +133 -0
  74. package/dist/layout/interaction/PlotInteraction.svelte.d.ts +38 -0
  75. package/dist/layout/interaction/PlotInteraction.svelte.js +56 -0
  76. package/dist/layout/legend/AxisNumberFormat.d.ts +12 -0
  77. package/dist/layout/legend/AxisNumberFormat.js +25 -0
  78. package/dist/layout/legend/ContinuousSection.svelte +363 -351
  79. package/dist/layout/legend/DisabledStyle.d.ts +19 -0
  80. package/dist/layout/legend/DisabledStyle.js +57 -0
  81. package/dist/layout/legend/DiscreteBadgeItem.svelte +6 -3
  82. package/dist/layout/legend/DiscreteSection.svelte +32 -32
  83. package/dist/layout/legend/DiscreteSwatchItem.svelte +4 -1
  84. package/dist/layout/legend/DiscreteSymbolIcon.svelte +14 -9
  85. package/dist/layout/legend/LegendChannels.d.ts +21 -0
  86. package/dist/layout/legend/LegendChannels.js +221 -0
  87. package/dist/layout/legend/LegendLayout.svelte +49 -43
  88. package/dist/layout/legend/LegendState.svelte.d.ts +84 -0
  89. package/dist/layout/legend/LegendState.svelte.js +333 -0
  90. package/dist/layout/legend/LegendText.d.ts +12 -0
  91. package/dist/layout/legend/LegendText.js +22 -0
  92. package/dist/layout/legend/SizeSection.svelte +84 -0
  93. package/dist/layout/legend/SizeSection.svelte.d.ts +7 -0
  94. package/dist/layout/legend/SymbolSection.svelte +31 -0
  95. package/dist/layout/legend/SymbolSection.svelte.d.ts +8 -0
  96. package/dist/layout/margins/Box.d.ts +84 -0
  97. package/dist/layout/margins/Box.js +138 -0
  98. package/dist/layout/margins/Margins.d.ts +37 -0
  99. package/dist/layout/margins/Margins.js +71 -0
  100. package/dist/layout/margins/PlotMargins.svelte.d.ts +101 -0
  101. package/dist/layout/margins/PlotMargins.svelte.js +219 -0
  102. package/dist/layout/plot/Core.svelte +61 -0
  103. package/dist/layout/plot/Core.svelte.d.ts +41 -0
  104. package/dist/layout/plot/PanelRun.svelte +28 -0
  105. package/dist/{charts/heatmap/Chart.svelte.d.ts → layout/plot/PanelRun.svelte.d.ts} +11 -7
  106. package/dist/layout/plot/Plot.svelte +287 -0
  107. package/dist/layout/plot/Plot.svelte.d.ts +49 -0
  108. package/dist/layout/plot/PlotContext.d.ts +41 -0
  109. package/dist/layout/plot/PlotContext.js +46 -0
  110. package/dist/layout/plot/PublicPlotContext.d.ts +131 -0
  111. package/dist/layout/plot/PublicPlotContext.js +240 -0
  112. package/dist/layout/plot/Slice.d.ts +44 -0
  113. package/dist/layout/plot/Slice.js +100 -0
  114. package/dist/layout/plot/usePlot.d.ts +9 -0
  115. package/dist/layout/plot/usePlot.js +13 -0
  116. package/dist/layout/scales/EdgeTicks.d.ts +39 -0
  117. package/dist/layout/scales/EdgeTicks.js +82 -0
  118. package/dist/layout/scales/NiceTicks.d.ts +40 -0
  119. package/dist/layout/scales/NiceTicks.js +72 -0
  120. package/dist/layout/scales/ScalesLayout.svelte +275 -206
  121. package/dist/layout/scales/ScalesLayout.svelte.d.ts +7 -1
  122. package/dist/layout/scales/SveltePlotScale.d.ts +15 -0
  123. package/dist/layout/scales/SveltePlotScale.js +79 -0
  124. package/dist/layout/styles/StylesLayout.svelte +65 -65
  125. package/dist/layout/styles/TileLayer.svelte +78 -76
  126. package/dist/layout/styles/TileLayer.svelte.d.ts +1 -1
  127. package/dist/layout/styles/ValueLabels.d.ts +97 -0
  128. package/dist/layout/styles/ValueLabels.js +238 -0
  129. package/dist/layout/timeline/Timeline.svelte +83 -74
  130. package/dist/layout/timeline/Timeline.svelte.d.ts +2 -0
  131. package/dist/layout/timeline/TimelineFrame.svelte +86 -0
  132. package/dist/layout/timeline/TimelineFrame.svelte.d.ts +16 -0
  133. package/dist/layout/timeline/TimelineLayout.svelte +140 -169
  134. package/dist/layout/timeline/TimelineLayout.svelte.d.ts +7 -3
  135. package/dist/layout/timeline/TimelinePlayer.svelte +195 -0
  136. package/dist/layout/timeline/TimelinePlayer.svelte.d.ts +7 -0
  137. package/dist/layout/timeline/TimelineRule.svelte +51 -0
  138. package/dist/layout/timeline/TimelineRule.svelte.d.ts +7 -0
  139. package/dist/layout/timeline/TimelineState.svelte.d.ts +90 -0
  140. package/dist/layout/timeline/TimelineState.svelte.js +260 -0
  141. package/dist/layout/timeline/TimelineSteps.d.ts +24 -0
  142. package/dist/layout/timeline/TimelineSteps.js +48 -0
  143. package/dist/layout/timeline/TimelineTime.d.ts +18 -0
  144. package/dist/layout/timeline/TimelineTime.js +117 -0
  145. package/dist/layout/tooltip/Tooltip.svelte +85 -85
  146. package/dist/layout/tooltip/Tooltip.svelte.d.ts +45 -24
  147. package/dist/layout/tooltip/TooltipState.svelte.d.ts +67 -0
  148. package/dist/layout/tooltip/TooltipState.svelte.js +126 -0
  149. package/dist/markers/MarkerKinds.d.ts +173 -0
  150. package/dist/markers/MarkerKinds.js +51 -0
  151. package/dist/markers/area/AreaMarker.svelte +110 -0
  152. package/dist/markers/area/AreaMarker.svelte.d.ts +7 -0
  153. package/dist/markers/arrow/ArrowMarker.svelte +28 -0
  154. package/dist/markers/arrow/ArrowMarker.svelte.d.ts +7 -0
  155. package/dist/markers/{BarMarker.svelte → bar/BarMarker.svelte} +54 -52
  156. package/dist/markers/{BarMarker.svelte.d.ts → bar/BarMarker.svelte.d.ts} +1 -1
  157. package/dist/markers/bollinger/BollingerMarker.svelte +44 -0
  158. package/dist/markers/bollinger/BollingerMarker.svelte.d.ts +7 -0
  159. package/dist/markers/box/BoxMarker.svelte +143 -0
  160. package/dist/markers/box/BoxMarker.svelte.d.ts +7 -0
  161. package/dist/markers/brush/BrushMarker.svelte +32 -0
  162. package/dist/markers/brush/BrushMarker.svelte.d.ts +7 -0
  163. package/dist/markers/cell/CellMarker.svelte +27 -0
  164. package/dist/markers/{CellMarker.svelte.d.ts → cell/CellMarker.svelte.d.ts} +1 -1
  165. package/dist/markers/contour/ContourClipMarker.svelte +83 -0
  166. package/dist/markers/{ContourClipMarker.svelte.d.ts → contour/ContourClipMarker.svelte.d.ts} +1 -1
  167. package/dist/markers/contour/ContourMarker.svelte +28 -0
  168. package/dist/markers/{ContourMarker.svelte.d.ts → contour/ContourMarker.svelte.d.ts} +1 -1
  169. package/dist/markers/delaunay/DelaunayLinkMarker.svelte +26 -0
  170. package/dist/markers/delaunay/DelaunayLinkMarker.svelte.d.ts +7 -0
  171. package/dist/markers/delaunay/DelaunayMeshMarker.svelte +26 -0
  172. package/dist/markers/delaunay/DelaunayMeshMarker.svelte.d.ts +7 -0
  173. package/dist/markers/delta/Delta.d.ts +21 -0
  174. package/dist/markers/delta/Delta.js +60 -0
  175. package/dist/markers/delta/DeltaMarker.svelte +96 -0
  176. package/dist/markers/{DeltaMarker.svelte.d.ts → delta/DeltaMarker.svelte.d.ts} +2 -2
  177. package/dist/markers/density/DensityMarker.svelte +63 -0
  178. package/dist/markers/density/DensityMarker.svelte.d.ts +7 -0
  179. package/dist/markers/difference/DifferenceMarker.svelte +30 -0
  180. package/dist/markers/difference/DifferenceMarker.svelte.d.ts +7 -0
  181. package/dist/markers/dot/DotMarker.svelte +102 -0
  182. package/dist/markers/{DotMarker.svelte.d.ts → dot/DotMarker.svelte.d.ts} +5 -17
  183. package/dist/markers/geo/GeoFeaturesMarker.svelte +39 -0
  184. package/dist/markers/{GeoFeaturesMarker.svelte.d.ts → geo/GeoFeaturesMarker.svelte.d.ts} +1 -1
  185. package/dist/markers/geo/GeoHoverMarker.svelte +28 -0
  186. package/dist/markers/{GeoHoverMarker.svelte.d.ts → geo/GeoHoverMarker.svelte.d.ts} +2 -2
  187. package/dist/markers/geo/GraticuleMarker.svelte +18 -0
  188. package/dist/markers/{GraticuleMarker.svelte.d.ts → geo/GraticuleMarker.svelte.d.ts} +1 -1
  189. package/dist/markers/geo/SphereMarker.svelte +15 -0
  190. package/dist/markers/{SphereMarker.svelte.d.ts → geo/SphereMarker.svelte.d.ts} +1 -1
  191. package/dist/markers/hover/HoverMarker.svelte +252 -0
  192. package/dist/markers/{HoverMarker.svelte.d.ts → hover/HoverMarker.svelte.d.ts} +10 -10
  193. package/dist/markers/hull/HullMarker.svelte +25 -0
  194. package/dist/markers/hull/HullMarker.svelte.d.ts +7 -0
  195. package/dist/markers/image/ImageMarker.svelte +22 -0
  196. package/dist/markers/image/ImageMarker.svelte.d.ts +7 -0
  197. package/dist/markers/inset/InsetMarker.svelte +184 -150
  198. package/dist/markers/inset/InsetMarker.svelte.d.ts +4 -4
  199. package/dist/markers/inset/insetLayout.d.ts +1 -1
  200. package/dist/markers/inset/insetLayout.js +6 -2
  201. package/dist/markers/inset/insetProjection.d.ts +1 -1
  202. package/dist/markers/inset/insetProjection.js +3 -3
  203. package/dist/markers/line/LineMarker.svelte +30 -0
  204. package/dist/markers/{LineMarker.svelte.d.ts → line/LineMarker.svelte.d.ts} +1 -1
  205. package/dist/markers/link/LinkMarker.svelte +47 -0
  206. package/dist/markers/{LinkMarker.svelte.d.ts → link/LinkMarker.svelte.d.ts} +1 -1
  207. package/dist/markers/raster/RasterMarker.svelte +31 -0
  208. package/dist/markers/raster/RasterMarker.svelte.d.ts +7 -0
  209. package/dist/markers/rect/RectMarker.svelte +62 -0
  210. package/dist/markers/rect/RectMarker.svelte.d.ts +7 -0
  211. package/dist/markers/regression/RegressionMarker.svelte +60 -0
  212. package/dist/markers/regression/RegressionMarker.svelte.d.ts +7 -0
  213. package/dist/markers/rule/RuleMarker.svelte +47 -0
  214. package/dist/markers/{RuleMarker.svelte.d.ts → rule/RuleMarker.svelte.d.ts} +2 -5
  215. package/dist/markers/text/Declutter.d.ts +35 -0
  216. package/dist/markers/text/Declutter.js +157 -0
  217. package/dist/markers/text/TextMarker.svelte +244 -0
  218. package/dist/markers/{TextMarker.svelte.d.ts → text/TextMarker.svelte.d.ts} +5 -9
  219. package/dist/markers/tick/TickMarker.svelte +44 -0
  220. package/dist/markers/tick/TickMarker.svelte.d.ts +7 -0
  221. package/dist/markers/trail/TrailMarker.svelte +27 -0
  222. package/dist/markers/trail/TrailMarker.svelte.d.ts +7 -0
  223. package/dist/markers/utils/BandNudge.d.ts +22 -0
  224. package/dist/markers/utils/BandNudge.js +23 -0
  225. package/dist/markers/utils/MarkerChannels.d.ts +49 -0
  226. package/dist/markers/utils/MarkerChannels.js +97 -0
  227. package/dist/markers/vector/VectorMarker.svelte +29 -0
  228. package/dist/markers/{VectorMarker.svelte.d.ts → vector/VectorMarker.svelte.d.ts} +1 -1
  229. package/dist/markers/voronoi/VoronoiMarker.svelte +26 -0
  230. package/dist/markers/voronoi/VoronoiMarker.svelte.d.ts +7 -0
  231. package/dist/markers/voronoi/VoronoiMeshMarker.svelte +26 -0
  232. package/dist/markers/voronoi/VoronoiMeshMarker.svelte.d.ts +7 -0
  233. package/dist/markers/waffle/WaffleMarker.svelte +56 -0
  234. package/dist/markers/waffle/WaffleMarker.svelte.d.ts +7 -0
  235. package/dist/phases/Pipeline.d.ts +108 -0
  236. package/dist/phases/Pipeline.js +227 -0
  237. package/dist/phases/data/DataPhase.d.ts +19 -0
  238. package/dist/phases/data/DataPhase.js +85 -0
  239. package/dist/phases/data/PlotAxes.d.ts +75 -0
  240. package/dist/phases/data/PlotAxes.js +151 -0
  241. package/dist/phases/facet/FacetPanels.d.ts +54 -0
  242. package/dist/phases/facet/FacetPanels.js +95 -0
  243. package/dist/phases/facet/FacetPhase.d.ts +11 -0
  244. package/dist/phases/facet/FacetPhase.js +28 -0
  245. package/dist/phases/hover/HoverPhase.d.ts +36 -0
  246. package/dist/phases/hover/HoverPhase.js +109 -0
  247. package/dist/phases/mapping/MappingPhase.d.ts +17 -0
  248. package/dist/phases/mapping/MappingPhase.js +40 -0
  249. package/dist/phases/markers/MarkersPhase.d.ts +14 -0
  250. package/dist/phases/markers/MarkersPhase.js +27 -0
  251. package/dist/phases/scales/MarkerAxisValues.d.ts +12 -0
  252. package/dist/phases/scales/MarkerAxisValues.js +34 -0
  253. package/dist/phases/scales/ScalesPhase.d.ts +29 -0
  254. package/dist/phases/scales/ScalesPhase.js +153 -0
  255. package/dist/phases/sharedScales/SharedScalesPhase.d.ts +58 -0
  256. package/dist/phases/sharedScales/SharedScalesPhase.js +171 -0
  257. package/dist/phases/statistics/AuthorMarkers.d.ts +43 -0
  258. package/dist/phases/statistics/AuthorMarkers.js +69 -0
  259. package/dist/phases/statistics/MarkerGrouping.d.ts +48 -0
  260. package/dist/phases/statistics/MarkerGrouping.js +113 -0
  261. package/dist/phases/statistics/Statistics.d.ts +53 -0
  262. package/dist/phases/statistics/Statistics.js +156 -0
  263. package/dist/phases/statistics/StatisticsPhase.d.ts +18 -0
  264. package/dist/phases/statistics/StatisticsPhase.js +67 -0
  265. package/dist/phases/statistics/methods/BollingerStatistic.d.ts +9 -0
  266. package/dist/phases/statistics/methods/BollingerStatistic.js +18 -0
  267. package/dist/phases/statistics/methods/BoxStatistic.d.ts +9 -0
  268. package/dist/phases/statistics/methods/BoxStatistic.js +18 -0
  269. package/dist/phases/statistics/methods/Density2dStatistic.d.ts +9 -0
  270. package/dist/phases/statistics/methods/Density2dStatistic.js +18 -0
  271. package/dist/phases/statistics/methods/DensityStatistic.d.ts +12 -0
  272. package/dist/phases/statistics/methods/DensityStatistic.js +29 -0
  273. package/dist/phases/statistics/methods/MovingAverageStatistic.d.ts +12 -0
  274. package/dist/phases/statistics/methods/MovingAverageStatistic.js +30 -0
  275. package/dist/phases/statistics/methods/RegressionStatistic.d.ts +9 -0
  276. package/dist/phases/statistics/methods/RegressionStatistic.js +21 -0
  277. package/dist/phases/styles/StylesPhase.d.ts +13 -0
  278. package/dist/phases/styles/StylesPhase.js +17 -0
  279. package/dist/phases/tooltip/TooltipPhase.d.ts +14 -0
  280. package/dist/phases/tooltip/TooltipPhase.js +17 -0
  281. package/dist/phases/transforms/ProcessedPositions.d.ts +30 -0
  282. package/dist/phases/transforms/ProcessedPositions.js +74 -0
  283. package/dist/phases/transforms/Transforms.d.ts +42 -0
  284. package/dist/phases/transforms/Transforms.js +130 -0
  285. package/dist/phases/transforms/TransformsPhase.d.ts +27 -0
  286. package/dist/phases/transforms/TransformsPhase.js +205 -0
  287. package/dist/phases/transforms/methods/AnchorBar.d.ts +13 -0
  288. package/dist/phases/transforms/methods/AnchorBar.js +21 -0
  289. package/dist/phases/transforms/methods/BinTransform.d.ts +7 -0
  290. package/dist/phases/transforms/methods/BinTransform.js +48 -0
  291. package/dist/phases/transforms/methods/DensityTransform.d.ts +6 -0
  292. package/dist/phases/transforms/methods/DensityTransform.js +13 -0
  293. package/dist/phases/transforms/methods/GroupTransform.d.ts +8 -0
  294. package/dist/phases/transforms/methods/GroupTransform.js +39 -0
  295. package/dist/phases/transforms/methods/NormalizeTransform.d.ts +10 -0
  296. package/dist/phases/transforms/methods/NormalizeTransform.js +30 -0
  297. package/dist/phases/transforms/methods/OrderTransform.d.ts +16 -0
  298. package/dist/phases/transforms/methods/OrderTransform.js +43 -0
  299. package/dist/phases/transforms/methods/PerGroup.d.ts +11 -0
  300. package/dist/phases/transforms/methods/PerGroup.js +39 -0
  301. package/dist/phases/transforms/methods/PositionTransform.d.ts +15 -0
  302. package/dist/phases/transforms/methods/PositionTransform.js +74 -0
  303. package/dist/phases/transforms/methods/StackTransform.d.ts +8 -0
  304. package/dist/phases/transforms/methods/StackTransform.js +29 -0
  305. package/dist/phases/transforms/methods/WindowTransform.d.ts +8 -0
  306. package/dist/phases/transforms/methods/WindowTransform.js +23 -0
  307. package/dist/plots/area/Plot.svelte +42 -0
  308. package/dist/plots/{heatmap/ValueLabels.svelte.d.ts → area/Plot.svelte.d.ts} +8 -16
  309. package/dist/plots/area/defaults.d.ts +4 -0
  310. package/dist/plots/area/defaults.js +21 -0
  311. package/dist/plots/area/markers.d.ts +14 -0
  312. package/dist/plots/area/markers.js +39 -0
  313. package/dist/plots/bar/Plot.svelte +33 -438
  314. package/dist/plots/bar/Plot.svelte.d.ts +5 -8
  315. package/dist/plots/bar/defaults.d.ts +9 -0
  316. package/dist/plots/bar/defaults.js +88 -0
  317. package/dist/plots/bar/markers.d.ts +45 -0
  318. package/dist/plots/bar/markers.js +233 -0
  319. package/dist/plots/box/BoxSummaries.d.ts +19 -0
  320. package/dist/plots/box/BoxSummaries.js +101 -0
  321. package/dist/plots/box/Plot.svelte +42 -0
  322. package/dist/plots/box/Plot.svelte.d.ts +26 -0
  323. package/dist/plots/box/defaults.d.ts +12 -0
  324. package/dist/plots/box/defaults.js +34 -0
  325. package/dist/plots/box/markers.d.ts +12 -0
  326. package/dist/plots/box/markers.js +34 -0
  327. package/dist/plots/geo/Core.svelte +151 -0
  328. package/dist/plots/geo/Core.svelte.d.ts +25 -0
  329. package/dist/plots/geo/Plot.svelte +103 -324
  330. package/dist/plots/geo/Plot.svelte.d.ts +5 -9
  331. package/dist/plots/geo/defaults.d.ts +4 -0
  332. package/dist/plots/geo/defaults.js +16 -0
  333. package/dist/plots/geo/features.svelte.d.ts +5 -0
  334. package/dist/plots/geo/features.svelte.js +44 -0
  335. package/dist/plots/geo/phases/data.d.ts +6 -0
  336. package/dist/plots/geo/phases/data.js +26 -0
  337. package/dist/plots/geo/phases/hover.d.ts +9 -0
  338. package/dist/plots/geo/phases/hover.js +45 -0
  339. package/dist/plots/geo/phases/markers.d.ts +9 -0
  340. package/dist/plots/geo/phases/markers.js +75 -0
  341. package/dist/plots/geo/phases/scales.d.ts +10 -0
  342. package/dist/plots/geo/phases/scales.js +85 -0
  343. package/dist/plots/geo/phases/tooltip.d.ts +3 -0
  344. package/dist/plots/geo/phases/tooltip.js +5 -0
  345. package/dist/plots/geo/slices.d.ts +18 -0
  346. package/dist/plots/geo/slices.js +59 -0
  347. package/dist/plots/heatmap/Plot.svelte +55 -249
  348. package/dist/plots/heatmap/Plot.svelte.d.ts +5 -8
  349. package/dist/plots/heatmap/defaults.d.ts +11 -0
  350. package/dist/plots/heatmap/defaults.js +91 -0
  351. package/dist/plots/heatmap/markers.d.ts +17 -0
  352. package/dist/plots/heatmap/markers.js +142 -0
  353. package/dist/plots/histogram/Plot.svelte +45 -0
  354. package/dist/plots/histogram/Plot.svelte.d.ts +26 -0
  355. package/dist/plots/histogram/defaults.d.ts +9 -0
  356. package/dist/plots/histogram/defaults.js +87 -0
  357. package/dist/plots/histogram/markers.d.ts +18 -0
  358. package/dist/plots/histogram/markers.js +89 -0
  359. package/dist/plots/line/Plot.svelte +37 -268
  360. package/dist/plots/line/Plot.svelte.d.ts +3 -7
  361. package/dist/plots/line/defaults.d.ts +4 -0
  362. package/dist/plots/line/defaults.js +29 -0
  363. package/dist/plots/line/markers.d.ts +49 -0
  364. package/dist/plots/line/markers.js +199 -0
  365. package/dist/plots/pyramid/Plot.svelte +34 -362
  366. package/dist/plots/pyramid/Plot.svelte.d.ts +5 -8
  367. package/dist/plots/pyramid/defaults.d.ts +13 -0
  368. package/dist/plots/pyramid/defaults.js +87 -0
  369. package/dist/plots/pyramid/markers.d.ts +21 -0
  370. package/dist/plots/pyramid/markers.js +156 -0
  371. package/dist/plots/scatter/Plot.svelte +34 -288
  372. package/dist/plots/scatter/Plot.svelte.d.ts +5 -8
  373. package/dist/plots/scatter/defaults.d.ts +4 -0
  374. package/dist/plots/scatter/defaults.js +80 -0
  375. package/dist/plots/scatter/markers.d.ts +19 -0
  376. package/dist/plots/scatter/markers.js +129 -0
  377. package/dist/plots/utils/ChannelName.d.ts +9 -0
  378. package/dist/plots/utils/ChannelName.js +14 -0
  379. package/dist/plots/utils/accessors.d.ts +1 -1
  380. package/dist/plots/utils/accessors.js +4 -2
  381. package/dist/plots/utils/gaps.d.ts +14 -19
  382. package/dist/plots/utils/gaps.js +38 -18
  383. package/dist/plots/utils/geoAccessors.d.ts +8 -8
  384. package/dist/plots/utils/geoAccessors.js +16 -12
  385. package/dist/plots/utils/geoSegments.d.ts +24 -9
  386. package/dist/plots/utils/geoSegments.js +31 -11
  387. package/dist/plots/utils/segments.d.ts +5 -16
  388. package/dist/plots/utils/segments.js +40 -52
  389. package/dist/plots/utils/tiles.d.ts +9 -9
  390. package/dist/plots/utils/tiles.js +35 -25
  391. package/dist/plots/utils/topojson.d.ts +1 -1
  392. package/dist/plots/utils/topojson.js +3 -3
  393. package/dist/stores/device.js +2 -4
  394. package/dist/types/configuration/styling.d.ts +174 -27
  395. package/dist/types/layout/box.d.ts +24 -0
  396. package/dist/types/layout/composer.d.ts +39 -0
  397. package/dist/types/layout/coordinates.d.ts +14 -14
  398. package/dist/types/layout/facet.d.ts +44 -22
  399. package/dist/types/layout/figure.d.ts +7 -0
  400. package/dist/types/layout/geometry.d.ts +6 -2
  401. package/dist/types/layout/grid.d.ts +66 -0
  402. package/dist/types/layout/hover.d.ts +48 -0
  403. package/dist/types/layout/legend.d.ts +256 -55
  404. package/dist/types/layout/mapping.d.ts +68 -0
  405. package/dist/types/layout/plot.d.ts +41 -0
  406. package/dist/types/layout/scales.d.ts +108 -24
  407. package/dist/types/layout/scales.js +19 -1
  408. package/dist/types/layout/statistics/bollinger.d.ts +18 -0
  409. package/dist/types/layout/statistics/box.d.ts +8 -0
  410. package/dist/types/layout/statistics/box.js +1 -0
  411. package/dist/types/layout/statistics/density.d.ts +27 -0
  412. package/dist/types/layout/statistics/density.js +1 -0
  413. package/dist/types/layout/statistics/index.d.ts +46 -0
  414. package/dist/types/layout/statistics/index.js +1 -0
  415. package/dist/types/layout/statistics/movingAverage.d.ts +12 -0
  416. package/dist/types/layout/statistics/movingAverage.js +1 -0
  417. package/dist/types/layout/statistics/regression.d.ts +20 -0
  418. package/dist/types/layout/statistics/regression.js +1 -0
  419. package/dist/types/layout/styles.d.ts +24 -35
  420. package/dist/types/layout/timeline.d.ts +62 -6
  421. package/dist/types/layout/tooltip.d.ts +7 -85
  422. package/dist/types/markers/all.d.ts +3 -4
  423. package/dist/types/markers/axis/area.d.ts +12 -0
  424. package/dist/types/markers/axis/area.js +1 -0
  425. package/dist/types/markers/axis/arrow.d.ts +15 -0
  426. package/dist/types/markers/axis/arrow.js +1 -0
  427. package/dist/types/markers/axis/axisBasedMarkersConfig.d.ts +29 -0
  428. package/dist/types/markers/axis/axisBasedMarkersConfig.js +1 -0
  429. package/dist/types/markers/axis/bar.d.ts +18 -0
  430. package/dist/types/markers/axis/bar.js +1 -0
  431. package/dist/types/markers/axis/bollinger.d.ts +6 -0
  432. package/dist/types/markers/axis/bollinger.js +1 -0
  433. package/dist/types/markers/axis/box.d.ts +14 -0
  434. package/dist/types/markers/axis/box.js +1 -0
  435. package/dist/types/markers/axis/brush.d.ts +28 -0
  436. package/dist/types/markers/axis/brush.js +1 -0
  437. package/dist/types/markers/axis/cell.d.ts +9 -0
  438. package/dist/types/markers/axis/cell.js +1 -0
  439. package/dist/types/markers/axis/component.d.ts +9 -0
  440. package/dist/types/markers/axis/component.js +1 -0
  441. package/dist/types/markers/axis/curveName.d.ts +2 -0
  442. package/dist/types/markers/axis/curveName.js +1 -0
  443. package/dist/types/markers/axis/delaunayLink.d.ts +7 -0
  444. package/dist/types/markers/axis/delaunayLink.js +1 -0
  445. package/dist/types/markers/axis/delaunayMesh.d.ts +7 -0
  446. package/dist/types/markers/axis/delaunayMesh.js +1 -0
  447. package/dist/types/markers/axis/delta.d.ts +27 -0
  448. package/dist/types/markers/axis/delta.js +1 -0
  449. package/dist/types/markers/axis/density.d.ts +12 -0
  450. package/dist/types/markers/axis/density.js +1 -0
  451. package/dist/types/markers/axis/difference.d.ts +12 -0
  452. package/dist/types/markers/axis/difference.js +1 -0
  453. package/dist/types/markers/axis/hover.d.ts +21 -0
  454. package/dist/types/markers/axis/hover.js +1 -0
  455. package/dist/types/markers/axis/hull.d.ts +7 -0
  456. package/dist/types/markers/axis/hull.js +1 -0
  457. package/dist/types/markers/axis/image.d.ts +12 -0
  458. package/dist/types/markers/axis/image.js +1 -0
  459. package/dist/types/markers/axis/line.d.ts +7 -0
  460. package/dist/types/markers/axis/line.js +1 -0
  461. package/dist/types/markers/axis/raster.d.ts +18 -0
  462. package/dist/types/markers/axis/raster.js +1 -0
  463. package/dist/types/markers/axis/rect.d.ts +15 -0
  464. package/dist/types/markers/axis/rect.js +1 -0
  465. package/dist/types/markers/axis/regression.d.ts +6 -0
  466. package/dist/types/markers/axis/regression.js +1 -0
  467. package/dist/types/markers/axis/rule.d.ts +15 -0
  468. package/dist/types/markers/axis/rule.js +1 -0
  469. package/dist/types/markers/axis/tick.d.ts +8 -0
  470. package/dist/types/markers/axis/tick.js +1 -0
  471. package/dist/types/markers/axis/trail.d.ts +14 -0
  472. package/dist/types/markers/axis/trail.js +1 -0
  473. package/dist/types/markers/axis/voronoi.d.ts +7 -0
  474. package/dist/types/markers/axis/voronoi.js +1 -0
  475. package/dist/types/markers/axis/voronoiMesh.d.ts +7 -0
  476. package/dist/types/markers/axis/voronoiMesh.js +1 -0
  477. package/dist/types/markers/axis/waffle.d.ts +13 -0
  478. package/dist/types/markers/axis/waffle.js +1 -0
  479. package/dist/types/markers/basic/basicMarkersConfig.d.ts +4 -0
  480. package/dist/types/markers/basic/basicMarkersConfig.js +1 -0
  481. package/dist/types/markers/basic/dot.d.ts +9 -0
  482. package/dist/types/markers/basic/dot.js +1 -0
  483. package/dist/types/markers/basic/text.d.ts +60 -0
  484. package/dist/types/markers/basic/text.js +1 -0
  485. package/dist/types/markers/basic.d.ts +4 -0
  486. package/dist/types/markers/basic.js +1 -0
  487. package/dist/types/markers/channels/commonMarkerConfig.d.ts +26 -0
  488. package/dist/types/markers/channels/commonMarkerConfig.js +1 -0
  489. package/dist/types/markers/channels/commonMarkerConfigWithArea.d.ts +6 -0
  490. package/dist/types/markers/channels/commonMarkerConfigWithArea.js +1 -0
  491. package/dist/types/markers/channels/commonMarkerConfigWithColor.d.ts +5 -0
  492. package/dist/types/markers/channels/commonMarkerConfigWithColor.js +1 -0
  493. package/dist/types/markers/channels/commonMarkerConfigWithInterval.d.ts +9 -0
  494. package/dist/types/markers/channels/commonMarkerConfigWithInterval.js +1 -0
  495. package/dist/types/markers/channels/commonMarkerConfigWithRadius.d.ts +5 -0
  496. package/dist/types/markers/channels/commonMarkerConfigWithRadius.js +1 -0
  497. package/dist/types/markers/channels/commonMarkerConfigWithSymbol.d.ts +5 -0
  498. package/dist/types/markers/channels/commonMarkerConfigWithSymbol.js +1 -0
  499. package/dist/types/markers/channels/commonMarkerConfigWithWeight.d.ts +5 -0
  500. package/dist/types/markers/channels/commonMarkerConfigWithWeight.js +1 -0
  501. package/dist/types/markers/common.d.ts +30 -103
  502. package/dist/types/markers/common.js +29 -1
  503. package/dist/types/markers/geo/contour.d.ts +27 -0
  504. package/dist/types/markers/geo/contour.js +1 -0
  505. package/dist/types/markers/geo/features.d.ts +12 -0
  506. package/dist/types/markers/geo/features.js +1 -0
  507. package/dist/types/markers/geo/geoComponent.d.ts +7 -0
  508. package/dist/types/markers/geo/geoComponent.js +1 -0
  509. package/dist/types/markers/geo/geoHover.d.ts +6 -0
  510. package/dist/types/markers/geo/geoHover.js +1 -0
  511. package/dist/types/markers/geo/geoMarkersConfig.d.ts +11 -0
  512. package/dist/types/markers/geo/geoMarkersConfig.js +1 -0
  513. package/dist/types/markers/geo/graticule.d.ts +11 -0
  514. package/dist/types/markers/geo/graticule.js +1 -0
  515. package/dist/types/markers/geo/inset.d.ts +50 -0
  516. package/dist/types/markers/geo/inset.js +1 -0
  517. package/dist/types/markers/geo/link.d.ts +13 -0
  518. package/dist/types/markers/geo/link.js +1 -0
  519. package/dist/types/markers/geo/sphere.d.ts +11 -0
  520. package/dist/types/markers/geo/sphere.js +1 -0
  521. package/dist/types/markers/geo/vector.d.ts +17 -0
  522. package/dist/types/markers/geo/vector.js +1 -0
  523. package/dist/types/markers/geo.d.ts +10 -212
  524. package/dist/types/markers/geo.js +10 -1
  525. package/dist/types/markers/traits.d.ts +22 -0
  526. package/dist/types/markers/traits.js +1 -0
  527. package/dist/types/misc/easing.js +1 -0
  528. package/dist/types/misc/viewport.js +1 -0
  529. package/dist/types/phases/data/axes.d.ts +18 -0
  530. package/dist/types/phases/data/axes.js +1 -0
  531. package/dist/types/phases/data/phase.d.ts +26 -0
  532. package/dist/types/phases/data/phase.js +2 -0
  533. package/dist/types/phases/facet/phase.d.ts +18 -0
  534. package/dist/types/phases/facet/phase.js +1 -0
  535. package/dist/types/phases/hover/phase.d.ts +40 -0
  536. package/dist/types/phases/hover/phase.js +1 -0
  537. package/dist/types/phases/index.d.ts +14 -0
  538. package/dist/types/phases/index.js +1 -0
  539. package/dist/types/phases/kind.d.ts +59 -0
  540. package/dist/types/phases/kind.js +1 -0
  541. package/dist/types/phases/mapping/phase.d.ts +5 -0
  542. package/dist/types/phases/mapping/phase.js +1 -0
  543. package/dist/types/phases/markers/phase.d.ts +13 -0
  544. package/dist/types/phases/markers/phase.js +1 -0
  545. package/dist/types/phases/pipeline.d.ts +10 -0
  546. package/dist/types/phases/pipeline.js +1 -0
  547. package/dist/types/phases/scales/phase.d.ts +26 -0
  548. package/dist/types/phases/scales/phase.js +1 -0
  549. package/dist/types/phases/sharedScales/phase.d.ts +12 -0
  550. package/dist/types/phases/sharedScales/phase.js +1 -0
  551. package/dist/types/phases/stage.d.ts +12 -0
  552. package/dist/types/phases/stage.js +1 -0
  553. package/dist/types/phases/state.d.ts +76 -0
  554. package/dist/types/phases/state.js +1 -0
  555. package/dist/types/phases/statistics/phase.d.ts +43 -0
  556. package/dist/types/phases/statistics/phase.js +1 -0
  557. package/dist/types/phases/statistics/source.d.ts +20 -0
  558. package/dist/types/phases/statistics/source.js +7 -0
  559. package/dist/types/phases/styles/phase.d.ts +24 -0
  560. package/dist/types/phases/styles/phase.js +1 -0
  561. package/dist/types/phases/transforms/adapter.d.ts +27 -0
  562. package/dist/types/phases/transforms/adapter.js +1 -0
  563. package/dist/types/phases/transforms/phase.d.ts +50 -0
  564. package/dist/types/phases/transforms/phase.js +1 -0
  565. package/dist/types/plots/area/props.d.ts +10 -0
  566. package/dist/types/plots/area/props.js +1 -0
  567. package/dist/types/plots/area/state.d.ts +6 -0
  568. package/dist/types/plots/area/state.js +1 -0
  569. package/dist/types/plots/bar/props.d.ts +10 -0
  570. package/dist/types/plots/bar/props.js +1 -0
  571. package/dist/types/plots/bar/state.d.ts +6 -0
  572. package/dist/types/plots/bar/state.js +1 -0
  573. package/dist/types/plots/box/props.d.ts +10 -0
  574. package/dist/types/plots/box/props.js +1 -0
  575. package/dist/types/plots/box/state.d.ts +23 -0
  576. package/dist/types/plots/box/state.js +1 -0
  577. package/dist/types/plots/camera.d.ts +7 -17
  578. package/dist/types/plots/constants.d.ts +16 -8
  579. package/dist/types/plots/data/common.d.ts +25 -17
  580. package/dist/types/plots/data/geo.d.ts +26 -12
  581. package/dist/types/plots/gaps.d.ts +19 -38
  582. package/dist/types/plots/geo/props.d.ts +23 -0
  583. package/dist/types/plots/geo/props.js +1 -0
  584. package/dist/types/plots/geo/state.d.ts +82 -0
  585. package/dist/types/plots/geo/state.js +1 -0
  586. package/dist/types/plots/heatmap/props.d.ts +10 -0
  587. package/dist/types/plots/heatmap/props.js +1 -0
  588. package/dist/types/plots/heatmap/state.d.ts +28 -0
  589. package/dist/types/plots/heatmap/state.js +1 -0
  590. package/dist/types/plots/histogram/props.d.ts +18 -0
  591. package/dist/types/plots/histogram/props.js +1 -0
  592. package/dist/types/plots/histogram/state.d.ts +6 -0
  593. package/dist/types/plots/histogram/state.js +1 -0
  594. package/dist/types/plots/line/props.d.ts +10 -0
  595. package/dist/types/plots/line/props.js +1 -0
  596. package/dist/types/plots/line/state.d.ts +9 -0
  597. package/dist/types/plots/line/state.js +1 -0
  598. package/dist/types/plots/props.d.ts +145 -35
  599. package/dist/types/plots/pyramid/props.d.ts +10 -0
  600. package/dist/types/plots/pyramid/props.js +1 -0
  601. package/dist/types/plots/pyramid/state.d.ts +16 -0
  602. package/dist/types/plots/pyramid/state.js +1 -0
  603. package/dist/types/plots/scatter/props.d.ts +10 -0
  604. package/dist/types/plots/scatter/props.js +1 -0
  605. package/dist/types/plots/scatter/state.d.ts +6 -0
  606. package/dist/types/plots/scatter/state.js +1 -0
  607. package/dist/types/plots/segments/common.d.ts +1 -1
  608. package/dist/types/plots/segments/config.d.ts +12 -6
  609. package/dist/types/plots/styling.d.ts +5 -5
  610. package/dist/types/transforms/bin.d.ts +84 -0
  611. package/dist/types/transforms/bin.js +28 -0
  612. package/dist/types/transforms/bollinger.d.ts +21 -0
  613. package/dist/types/transforms/bollinger.js +1 -0
  614. package/dist/types/transforms/common.d.ts +29 -0
  615. package/dist/types/transforms/common.js +16 -0
  616. package/dist/types/transforms/density.d.ts +45 -0
  617. package/dist/types/transforms/density.js +10 -0
  618. package/dist/types/transforms/filter.d.ts +12 -0
  619. package/dist/types/transforms/filter.js +14 -0
  620. package/dist/types/transforms/group.d.ts +70 -0
  621. package/dist/types/transforms/group.js +8 -0
  622. package/dist/types/transforms/index.d.ts +36 -0
  623. package/dist/types/transforms/index.js +1 -0
  624. package/dist/types/transforms/interval.d.ts +21 -0
  625. package/dist/types/transforms/interval.js +14 -0
  626. package/dist/types/transforms/jitter.d.ts +34 -0
  627. package/dist/types/transforms/jitter.js +1 -0
  628. package/dist/types/transforms/map.d.ts +24 -0
  629. package/dist/types/transforms/map.js +1 -0
  630. package/dist/types/transforms/normalize.d.ts +36 -0
  631. package/dist/types/transforms/normalize.js +1 -0
  632. package/dist/types/transforms/select.d.ts +15 -0
  633. package/dist/types/transforms/select.js +1 -0
  634. package/dist/types/transforms/shift.d.ts +20 -0
  635. package/dist/types/transforms/shift.js +1 -0
  636. package/dist/types/transforms/sort.d.ts +31 -0
  637. package/dist/types/transforms/sort.js +14 -0
  638. package/dist/types/transforms/stack.d.ts +64 -0
  639. package/dist/types/transforms/stack.js +12 -0
  640. package/dist/types/transforms/window.d.ts +29 -0
  641. package/dist/types/transforms/window.js +1 -0
  642. package/dist/utils/ContinuousDomain.d.ts +12 -0
  643. package/dist/utils/ContinuousDomain.js +19 -0
  644. package/dist/utils/Interpolation.d.ts +26 -0
  645. package/dist/utils/Interpolation.js +65 -0
  646. package/dist/utils/{color.d.ts → color/contrast.d.ts} +0 -5
  647. package/dist/utils/color/contrast.js +40 -0
  648. package/dist/utils/color/cssColor.d.ts +4 -0
  649. package/dist/utils/color/cssColor.js +77 -0
  650. package/dist/utils/color/index.d.ts +3 -0
  651. package/dist/utils/color/index.js +3 -0
  652. package/dist/utils/color/ramp.d.ts +17 -0
  653. package/dist/utils/color/ramp.js +110 -0
  654. package/dist/utils/grouping.d.ts +9 -5
  655. package/dist/utils/grouping.js +19 -10
  656. package/dist/utils/merge.d.ts +7 -0
  657. package/dist/utils/merge.js +17 -0
  658. package/dist/utils/opacity.d.ts +9 -0
  659. package/dist/utils/opacity.js +38 -0
  660. package/dist/utils/symbol.d.ts +31 -0
  661. package/dist/utils/symbol.js +92 -0
  662. package/docs/architecture.md +137 -0
  663. package/docs/chrome.md +99 -0
  664. package/docs/composer.md +69 -0
  665. package/docs/concepts.md +99 -0
  666. package/docs/development.md +103 -0
  667. package/docs/facets.md +123 -0
  668. package/docs/geo.md +151 -0
  669. package/docs/getting-started.md +78 -0
  670. package/docs/legend.md +153 -0
  671. package/docs/markers.md +117 -0
  672. package/docs/plots.md +284 -0
  673. package/docs/scales.md +95 -0
  674. package/docs/state.md +71 -0
  675. package/docs/styles-and-segments.md +269 -0
  676. package/docs/theming.md +226 -0
  677. package/docs/timeline.md +128 -0
  678. package/docs/tooltip-and-hover.md +128 -0
  679. package/docs/transforms-and-statistics.md +118 -0
  680. package/examples/BarValues.svelte +14 -0
  681. package/examples/Box.svelte +7 -0
  682. package/examples/Chrome.svelte +17 -0
  683. package/examples/ChromeOrder.svelte +18 -0
  684. package/examples/Composer.svelte +23 -0
  685. package/examples/CustomTooltip.svelte +44 -0
  686. package/examples/Facets.svelte +15 -0
  687. package/examples/FacetsCarousel.svelte +14 -0
  688. package/examples/FacetsRowsCols.svelte +23 -0
  689. package/examples/FirstPlot.svelte +7 -0
  690. package/examples/Gaps.svelte +21 -0
  691. package/examples/GroupedBars.svelte +15 -0
  692. package/examples/Heatmap.svelte +7 -0
  693. package/examples/HeatmapSegments.svelte +26 -0
  694. package/examples/Histogram.svelte +14 -0
  695. package/examples/HorizontalBars.svelte +15 -0
  696. package/examples/LegendReader.svelte +8 -0
  697. package/examples/LegendSections.svelte +27 -0
  698. package/examples/LegendToggle.svelte +25 -0
  699. package/examples/LineByRegion.svelte +18 -0
  700. package/examples/LineDates.svelte +15 -0
  701. package/examples/Markers.svelte +27 -0
  702. package/examples/MovingAverage.svelte +15 -0
  703. package/examples/Pyramid.svelte +7 -0
  704. package/examples/Regression.svelte +14 -0
  705. package/examples/ResponsiveLine.svelte +37 -0
  706. package/examples/Scales.svelte +26 -0
  707. package/examples/Scatter.svelte +16 -0
  708. package/examples/SegmentHighlight.svelte +22 -0
  709. package/examples/Segments.svelte +25 -0
  710. package/examples/SegmentsBySeries.svelte +25 -0
  711. package/examples/StackedArea.svelte +16 -0
  712. package/examples/StackedBars.svelte +15 -0
  713. package/examples/TimelinePlayer.svelte +21 -0
  714. package/examples/TimelineRule.svelte +19 -0
  715. package/examples/Tooltip.svelte +19 -0
  716. package/examples/TooltipCard.svelte +86 -0
  717. package/examples/ValueLabels.svelte +21 -0
  718. package/examples/data.ts +324 -0
  719. package/llms-full.txt +142 -0
  720. package/llms.txt +77 -0
  721. package/package.json +42 -5
  722. package/dist/charts/BaseChart.svelte +0 -149
  723. package/dist/charts/BaseChart.svelte.d.ts +0 -47
  724. package/dist/charts/bar/Chart.svelte +0 -110
  725. package/dist/charts/bar/Chart.svelte.d.ts +0 -26
  726. package/dist/charts/container/ChartContainer.svelte +0 -137
  727. package/dist/charts/container/ChartContainer.svelte.d.ts +0 -16
  728. package/dist/charts/heatmap/Chart.svelte +0 -114
  729. package/dist/charts/line/Chart.svelte +0 -112
  730. package/dist/charts/line/Chart.svelte.d.ts +0 -26
  731. package/dist/charts/pyramid/Chart.svelte +0 -134
  732. package/dist/charts/pyramid/Chart.svelte.d.ts +0 -30
  733. package/dist/charts/scatter/Chart.svelte +0 -95
  734. package/dist/charts/scatter/Chart.svelte.d.ts +0 -28
  735. package/dist/layout/coordinates/margins.d.ts +0 -16
  736. package/dist/layout/coordinates/margins.js +0 -11
  737. package/dist/layout/legend/interaction.svelte.d.ts +0 -15
  738. package/dist/layout/legend/interaction.svelte.js +0 -32
  739. package/dist/layout/plot/BasePlotLayout.svelte +0 -332
  740. package/dist/layout/plot/BasePlotLayout.svelte.d.ts +0 -122
  741. package/dist/layout/plot/margins.d.ts +0 -18
  742. package/dist/layout/plot/margins.js +0 -15
  743. package/dist/layout/plot/measureText.d.ts +0 -4
  744. package/dist/layout/plot/measureText.js +0 -19
  745. package/dist/layout/scales/buildScale.d.ts +0 -25
  746. package/dist/layout/scales/buildScale.js +0 -90
  747. package/dist/layout/scales/niceDomain.d.ts +0 -23
  748. package/dist/layout/scales/niceDomain.js +0 -59
  749. package/dist/layout/tooltip/TooltipLayout.svelte +0 -51
  750. package/dist/layout/tooltip/TooltipLayout.svelte.d.ts +0 -45
  751. package/dist/layout/tooltip/controller.svelte.d.ts +0 -61
  752. package/dist/layout/tooltip/controller.svelte.js +0 -173
  753. package/dist/layout/tooltip/hover.svelte.d.ts +0 -7
  754. package/dist/layout/tooltip/hover.svelte.js +0 -28
  755. package/dist/layout/tooltip/resolveTooltipPlacement.d.ts +0 -24
  756. package/dist/layout/tooltip/resolveTooltipPlacement.js +0 -49
  757. package/dist/layout/tooltip/utils.d.ts +0 -49
  758. package/dist/layout/tooltip/utils.js +0 -82
  759. package/dist/markers/CellMarker.svelte +0 -21
  760. package/dist/markers/ContourClipMarker.svelte +0 -77
  761. package/dist/markers/ContourMarker.svelte +0 -28
  762. package/dist/markers/DeltaMarker.svelte +0 -109
  763. package/dist/markers/DotMarker.svelte +0 -70
  764. package/dist/markers/GeoFeaturesMarker.svelte +0 -19
  765. package/dist/markers/GeoHoverMarker.svelte +0 -25
  766. package/dist/markers/GraticuleMarker.svelte +0 -18
  767. package/dist/markers/HoverMarker.svelte +0 -212
  768. package/dist/markers/LineMarker.svelte +0 -19
  769. package/dist/markers/LinkMarker.svelte +0 -42
  770. package/dist/markers/PeakMarker.svelte +0 -80
  771. package/dist/markers/PeakMarker.svelte.d.ts +0 -13
  772. package/dist/markers/RuleMarker.svelte +0 -24
  773. package/dist/markers/SphereMarker.svelte +0 -15
  774. package/dist/markers/TextMarker.svelte +0 -62
  775. package/dist/markers/VectorMarker.svelte +0 -20
  776. package/dist/plots/bar/ValueLabels.svelte +0 -149
  777. package/dist/plots/bar/ValueLabels.svelte.d.ts +0 -58
  778. package/dist/plots/bar/buildBarMarkers.d.ts +0 -27
  779. package/dist/plots/bar/buildBarMarkers.js +0 -151
  780. package/dist/plots/bar/hoverPoints.d.ts +0 -15
  781. package/dist/plots/bar/hoverPoints.js +0 -37
  782. package/dist/plots/bar/layout.svelte.d.ts +0 -42
  783. package/dist/plots/bar/layout.svelte.js +0 -182
  784. package/dist/plots/geo/buildGeoMarkers.d.ts +0 -33
  785. package/dist/plots/geo/buildGeoMarkers.js +0 -47
  786. package/dist/plots/heatmap/ValueLabels.svelte +0 -56
  787. package/dist/plots/heatmap/buildCellMarkers.d.ts +0 -21
  788. package/dist/plots/heatmap/buildCellMarkers.js +0 -25
  789. package/dist/plots/line/ValueLabels.svelte +0 -269
  790. package/dist/plots/line/ValueLabels.svelte.d.ts +0 -52
  791. package/dist/plots/line/buildGapMarkers.d.ts +0 -28
  792. package/dist/plots/line/buildGapMarkers.js +0 -74
  793. package/dist/plots/line/buildLineMarkers.d.ts +0 -16
  794. package/dist/plots/line/buildLineMarkers.js +0 -56
  795. package/dist/plots/line/valueLabelMargin.d.ts +0 -19
  796. package/dist/plots/line/valueLabelMargin.js +0 -65
  797. package/dist/plots/pyramid/ValueLabels.svelte +0 -139
  798. package/dist/plots/pyramid/ValueLabels.svelte.d.ts +0 -56
  799. package/dist/plots/pyramid/buildPyramidBarMarkers.d.ts +0 -26
  800. package/dist/plots/pyramid/buildPyramidBarMarkers.js +0 -72
  801. package/dist/plots/scatter/ValueLabels.svelte +0 -163
  802. package/dist/plots/scatter/ValueLabels.svelte.d.ts +0 -52
  803. package/dist/plots/scatter/buildScatterMarkers.d.ts +0 -12
  804. package/dist/plots/scatter/buildScatterMarkers.js +0 -36
  805. package/dist/plots/scatter/resolveRadiusPaddedDomain.d.ts +0 -10
  806. package/dist/plots/scatter/resolveRadiusPaddedDomain.js +0 -23
  807. package/dist/plots/utils/categoricalAxisMargin.d.ts +0 -14
  808. package/dist/plots/utils/categoricalAxisMargin.js +0 -20
  809. package/dist/plots/utils/declutter.d.ts +0 -120
  810. package/dist/plots/utils/declutter.js +0 -240
  811. package/dist/plots/utils/labelOverflow.svelte.d.ts +0 -107
  812. package/dist/plots/utils/labelOverflow.svelte.js +0 -257
  813. package/dist/plots/utils/legendDisabled.d.ts +0 -27
  814. package/dist/plots/utils/legendDisabled.js +0 -68
  815. package/dist/plots/utils/valueLabelMargin.d.ts +0 -67
  816. package/dist/plots/utils/valueLabelMargin.js +0 -60
  817. package/dist/types/charts/common.d.ts +0 -22
  818. package/dist/types/charts/props.d.ts +0 -50
  819. package/dist/types/markers/base.d.ts +0 -45
  820. package/dist/types/markers/line.d.ts +0 -34
  821. package/dist/types/markers/props.d.ts +0 -11
  822. package/dist/types/plots/data/scatter.d.ts +0 -13
  823. package/dist/utils/color.js +0 -141
  824. package/dist/utils/delta.d.ts +0 -12
  825. package/dist/utils/delta.js +0 -69
  826. package/dist/utils/edgeAwareAnchor.d.ts +0 -34
  827. package/dist/utils/edgeAwareAnchor.js +0 -60
  828. package/dist/utils/interpolate.d.ts +0 -31
  829. package/dist/utils/interpolate.js +0 -71
  830. /package/dist/types/{charts/common.js → layout/box.js} +0 -0
  831. /package/dist/types/{charts/interpolate.js → layout/composer.js} +0 -0
  832. /package/dist/types/{charts/props.js → layout/figure.js} +0 -0
  833. /package/dist/types/{markers/base.js → layout/grid.js} +0 -0
  834. /package/dist/types/{markers/line.js → layout/hover.js} +0 -0
  835. /package/dist/types/{markers/props.js → layout/mapping.js} +0 -0
  836. /package/dist/types/{plots/data/scatter.js → layout/plot.js} +0 -0
  837. /package/dist/types/{viewport.js → layout/statistics/bollinger.js} +0 -0
  838. /package/dist/types/{charts/interpolate.d.ts → misc/easing.d.ts} +0 -0
  839. /package/dist/types/{viewport.d.ts → misc/viewport.d.ts} +0 -0
@@ -0,0 +1,156 @@
1
+ import { resolveAccessor } from '../utils/accessors';
2
+ import { SERIES_ID_KEY } from '../../phases/transforms/TransformsPhase';
3
+ import { seriesIdOf } from '../../utils/grouping';
4
+ import { PlotAxes } from '../../phases/data/PlotAxes';
5
+ import { getConfiguration } from '../../configuration/config.svelte';
6
+ import { isGapValue, resolveGapAreaStyle } from '../utils/gaps';
7
+ const GAP_KINDS = ['start', 'middle', 'end'];
8
+ function signFor(s, magnitude) {
9
+ return s.side === 'left' ? -magnitude : magnitude;
10
+ }
11
+ /**
12
+ * PyramidPlot's `styles.values` as one `'text'` marker per series, over the
13
+ * same processed rows its bars draw (gap rows never get a label), mirrored to
14
+ * its own side of the shared zero baseline. `anchor` places each label along
15
+ * its bar: past its end (`'outside'`/`'start'`), at the baseline (`'end'`),
16
+ * or centred (`'middle'`). On a vertical pyramid the sides run down and up.
17
+ */
18
+ export function buildValueLabels(labels, state, ctx) {
19
+ const { processedData } = state;
20
+ if (!processedData)
21
+ return [];
22
+ const { font, anchor, format } = labels;
23
+ const categoryAxis = PlotAxes.categoryOf(state);
24
+ const valueAxis = PlotAxes.valueOf(state);
25
+ const isHorizontal = state.axes?.isHorizontal ?? true;
26
+ return (state.processedGroups ?? []).flatMap(({ series }) => {
27
+ const id = seriesIdOf(series);
28
+ const side = state.resolvedSeries.find((s) => seriesIdOf(s) === id).side;
29
+ const isLeft = side === 'left';
30
+ const getMagnitude = resolveAccessor(series[valueAxis]);
31
+ const magnitude = (d) => Math.abs(Number(getMagnitude(d)));
32
+ const signed = (d) => (isLeft ? -magnitude(d) : magnitude(d));
33
+ const data = processedData.data.filter((d) => d[SERIES_ID_KEY] === id && !isGapValue(getMagnitude(d)));
34
+ if (data.length === 0)
35
+ return [];
36
+ const outward = isLeft ? -1 : 1;
37
+ const at = anchor === 'middle' ? (d) => signed(d) / 2 : anchor === 'end' ? 0 : signed;
38
+ const shift = anchor === 'middle' ? 0 : outward * (anchor === 'end' ? 4 : 6);
39
+ // Away from the baseline: left/right on a horizontal pyramid, down/up on a vertical one.
40
+ const awayAnchor = isHorizontal
41
+ ? anchor === 'middle'
42
+ ? 'middle'
43
+ : isLeft
44
+ ? 'end'
45
+ : 'start'
46
+ : 'middle';
47
+ const awayLine = isHorizontal
48
+ ? 'middle'
49
+ : anchor === 'middle'
50
+ ? 'middle'
51
+ : isLeft
52
+ ? 'top'
53
+ : 'bottom';
54
+ return [
55
+ {
56
+ type: 'text',
57
+ data,
58
+ [valueAxis]: at,
59
+ [categoryAxis]: series[categoryAxis],
60
+ text: (d) => format(magnitude(d), series.name),
61
+ styles: {
62
+ ...font,
63
+ fill: font?.fill ?? ctx.cfg.axis.color,
64
+ fontSize: font?.fontSize ?? 12,
65
+ dx: font?.dx ?? (isHorizontal ? shift : 0),
66
+ dy: font?.dy ?? (isHorizontal ? 0 : -shift),
67
+ textAnchor: labels.textAnchor ?? awayAnchor,
68
+ lineAnchor: font?.lineAnchor ?? awayLine
69
+ }
70
+ }
71
+ ];
72
+ });
73
+ }
74
+ /**
75
+ * PyramidPlot's "markers" phase: one `role: 'segment'` bar per visual
76
+ * segment, along the category axis the "data" phase read (horizontal bars for
77
+ * categories on y, signed magnitude on x; vertical ones the other way) and with
78
+ * no insets - prepended onto whatever the "statistics" phase already put in
79
+ * `state.markers`. Emits no `role: 'hitArea'` markers - PyramidPlot's hover
80
+ * matches nearest points rather than hit-testing category bands.
81
+ */
82
+ export function buildMarks(state, ctx) {
83
+ const { groupedSeries, gapFillMaps } = state;
84
+ const gapDefaults = getConfiguration().pyramid.gap;
85
+ const categoryAxis = PlotAxes.categoryOf(state);
86
+ const valueAxis = PlotAxes.valueOf(state);
87
+ const isHorizontal = state.axes?.isHorizontal ?? true;
88
+ /** One bar's own channels: its category, and its span from the baseline to its signed value. */
89
+ const span = (category, to) => ({
90
+ isHorizontal,
91
+ [categoryAxis]: category,
92
+ [`${valueAxis}1`]: 0,
93
+ [`${valueAxis}2`]: to
94
+ });
95
+ // The real bars draw the rows the "transforms" phase left, read through its channels.
96
+ const processedGroups = new Map((state.processedGroups ?? []).map((g) => [seriesIdOf(g.series), g]));
97
+ const markers = [];
98
+ for (const group of groupedSeries) {
99
+ // Forwarded raw (a field key or function, whatever the series' category is)
100
+ // rather than pre-resolved into a closure - svelteplot's own
101
+ // `resolve()` already handles a field-key string per row, and only a
102
+ // literal string (not a function) lets its axis-title auto-inference
103
+ // see the field name. `keyof TData` is always a real string key in
104
+ // practice, just not provably so to TypeScript here.
105
+ const category = group.series[categoryAxis];
106
+ const defaultColor = state.colorForSeries(group.series.name);
107
+ const disabledFill = ctx.interaction?.fillFor(group.series.name);
108
+ const processed = processedGroups.get(seriesIdOf(group.series));
109
+ const processedCategory = processed?.series[categoryAxis];
110
+ const getMagnitude = resolveAccessor((processed?.series[valueAxis] ?? group.series[valueAxis]));
111
+ const signed = (d) => signFor(group.series, Math.abs(Number(getMagnitude(d))));
112
+ for (const seg of processed?.visualSegments ?? []) {
113
+ const realData = seg.data.filter((d) => !isGapValue(getMagnitude(d)));
114
+ if (realData.length === 0)
115
+ continue;
116
+ markers.push({
117
+ type: 'bar',
118
+ role: 'segment',
119
+ data: realData,
120
+ ...span(processedCategory, signed),
121
+ styles: {
122
+ fill: disabledFill?.fill ?? seg.styles.fill ?? defaultColor,
123
+ fillOpacity: disabledFill?.fillOpacity ?? seg.styles.fillOpacity ?? 1
124
+ }
125
+ });
126
+ }
127
+ const fillMap = gapFillMaps.get(seriesIdOf(group.series)) ??
128
+ new Map();
129
+ for (const kind of GAP_KINDS) {
130
+ const filledRows = group.series.data.filter((d) => fillMap.get(d)?.kind === kind);
131
+ if (filledRows.length === 0)
132
+ continue;
133
+ const base = resolveGapAreaStyle(fillMap.get(filledRows[0]).style, defaultColor, gapDefaults);
134
+ // svelteplot shallow-clones each row before invoking a mark's own
135
+ // geometry accessors, so a `fillMap.get(d)` lookup inside `x2` would
136
+ // see a clone, not the original key - tag the resolved value onto the
137
+ // row as a plain field instead, which survives that clone.
138
+ const taggedData = filledRows.map((d) => ({
139
+ ...d,
140
+ __gapValue: signFor(group.series, Math.abs(fillMap.get(d).value))
141
+ }));
142
+ markers.push({
143
+ type: 'bar',
144
+ role: 'segment',
145
+ data: taggedData,
146
+ ...span(category, (d) => d.__gapValue),
147
+ styles: {
148
+ ...base,
149
+ fill: disabledFill?.fill ?? base.fill,
150
+ fillOpacity: disabledFill?.fillOpacity ?? base.fillOpacity
151
+ }
152
+ });
153
+ }
154
+ }
155
+ return markers;
156
+ }
@@ -1,295 +1,41 @@
1
1
  <script lang="ts" generics="TData extends Record<string, unknown>">
2
- import { resolveAccessor } from '../utils/accessors';
3
- import { getConfiguration } from '../../configuration/config.svelte';
4
- import { paletteColor } from '../../utils/color';
5
- import { buildSeries } from '../../utils/grouping';
6
- import { getLegendInteraction } from '../../layout/legend/interaction.svelte';
7
- import {
8
- disabledDotsOverride,
9
- resolveEffectiveDisabledStyle,
10
- omitDisabledSeries,
11
- buildSeriesColorIndex
12
- } from '../utils/legendDisabled';
13
- import { buildScatterMarkers } from './buildScatterMarkers';
14
- import { resolveRadiusPaddedDomain } from './resolveRadiusPaddedDomain';
15
- import {
16
- createLabelMarginTracker,
17
- halfDimensionOverflowCap
18
- } from '../utils/labelOverflow.svelte';
19
- import BasePlotLayout from '../../layout/plot/BasePlotLayout.svelte';
20
- import ValueLabels from './ValueLabels.svelte';
21
- import {
22
- hasHoverMarker,
23
- resolveHoverStrategy,
24
- resolveHoverSync
25
- } from '../../layout/tooltip/utils';
26
- import {
27
- buildGroupedSeries,
28
- validateSegments,
29
- buildScopedMarkerGroups
30
- } from '../utils/segments';
31
- import { numericMargin } from '../../layout/plot/margins';
32
- import type { BasePlotProps } from '../../types/plots/props';
33
- import type { AxisValue, AxisBasedScalesConfig } from '../../types/layout/scales';
34
- import type { Series } from '../../types/plots/data/common';
35
- import type { ScatterDataProps } from '../../types/plots/data/scatter';
36
- import type { AxisBasedStylesConfig } from '../../types/layout/styles';
37
- import type { ScatterSegmentStyle } from '../../types/plots/segments/common';
38
- import type { AxisBasedMarkersConfig } from '../../types/markers/common';
39
- import type { LegendDisabledStyle } from '../../types/layout/legend';
2
+ import Plot from '../../layout/plot/Plot.svelte';
3
+ import { buildScatterDefaults } from './defaults';
4
+ import type { ScatterPlotProps, ScatterPlotCoreProps } from '../../types/plots/scatter/props';
40
5
 
41
6
  /**
42
- * A point cloud on continuous x/y axes. Accepts either a pre-built `series`
43
- * array or flat `data/x/y/z` props — mirrors the line/bar plot contract so
44
- * the chart-level container/timeline/facet/legend wrap it unchanged. `r`
45
- * gives every dot a per-row radius (bubble sizing), independent of `z`
46
- * grouping/coloring — see {@link ScatterDataProps} for its auto-scaling
47
- * behavior.
7
+ * A point cloud on continuous x/y axes; `r` sizes each dot. Draws from pre-built `series` or flat `data` rows.
8
+ * Optional chrome (`title`, `subtitle`, `caption`, `header`, `footer`,
9
+ * `legend`) frames it; `timeline` and `facet` slice its `data` rows.
48
10
  */
49
- type Props = BasePlotProps<
50
- ScatterDataProps<TData>,
51
- TData,
52
- AxisBasedStylesConfig,
53
- ScatterSegmentStyle,
54
- AxisBasedMarkersConfig,
55
- AxisBasedScalesConfig<TData>
56
- >;
57
-
58
11
  let {
59
- width,
60
- height,
61
- series,
62
- data,
63
- x,
64
- y,
65
- z,
66
- r,
67
- styles = {},
68
- segments = {},
69
- markers = [],
70
- scales = {},
71
- margins,
72
- tooltip = undefined
73
- }: Props = $props();
74
-
75
- const cfg = $derived(getConfiguration());
76
- const legendInteraction = $derived(getLegendInteraction());
77
- // Unfiltered series list, for stable per-name color indexing.
78
- const fullSeries = $derived(series ?? buildSeries(data!, x!, y!, z));
79
- const colorIndex = $derived(buildSeriesColorIndex(fullSeries));
80
- function colorForSeries(name: string): string {
81
- return paletteColor(colorIndex.get(name) ?? 0, cfg.palette);
82
- }
83
- // Drops series toggled off with `disabled: { mode: 'omit' }`.
84
- const resolvedSeries = $derived(omitDisabledSeries(fullSeries, legendInteraction));
85
-
86
- $effect(() => {
87
- validateSegments(segments);
88
- });
89
-
90
- // A scatter point cloud is discrete (no connecting line), so adjacent
91
- // segments never need a bridge point at their boundary — see
92
- // buildGroupedSeries's own doc.
93
- const groupedSeries = $derived(
94
- buildGroupedSeries<Series<TData>, ScatterSegmentStyle>(resolvedSeries, segments, false)
95
- );
96
-
97
- const showVals = $derived(styles.values?.show ?? false);
98
- const formatValue = $derived(styles.values?.format ?? ((v: number) => `${v}`));
99
- const hoverIsolate = $derived(styles.values?.hoverIsolate ?? false);
100
-
101
- // A value label hovered while `styles.values.hoverIsolate` is on dims
102
- // every other series exactly like a legend toggle would — local to this
103
- // one `<Plot>` instance (not the shared HoverStore) so the gesture can't
104
- // leak into unrelated tooltip/crosshair behavior.
105
- let hoverIsolatedSeries = $state<string | null>(null);
106
-
107
- function effectiveDisabledFor(name: string): LegendDisabledStyle | undefined {
108
- return resolveEffectiveDisabledStyle(
109
- name,
110
- legendInteraction,
111
- cfg.legend.disabledOpacity,
112
- hoverIsolate,
113
- hoverIsolatedSeries
114
- );
115
- }
116
-
117
- const xAcc = $derived(resolveAccessor(resolvedSeries[0]?.x ?? ((d: TData) => d)));
118
- const yAcc = $derived(resolveAccessor(resolvedSeries[0]?.y ?? ((d: TData) => d)));
119
- const flat = $derived(resolvedSeries.flatMap((s) => s.data));
120
-
121
- // A legend-disabled series is dimmed on the mark itself, but never surfaces
122
- // in hover/tooltip — its points are simply absent from the candidate list.
123
- const hoverPoints = $derived(
124
- resolvedSeries.flatMap((s) => {
125
- if (legendInteraction?.disabledSeries.has(s.name)) return [];
126
- const sx = resolveAccessor(s.x);
127
- const sy = resolveAccessor(s.y);
128
- return s.data.map((d) => ({
129
- x: sx(d) as AxisValue,
130
- y: Number(sy(d)),
131
- row: d,
132
- label: `${sx(d)}, ${sy(d)}`,
133
- series: s.name,
134
- color: colorForSeries(s.name)
135
- }));
136
- })
137
- );
138
-
139
- // Points scatter freely across x/y rather than sharing discrete x values —
140
- // 'punctual' matches the single nearest point, not a whole column.
141
- const hover = $derived({
142
- active: tooltip != null || hasHoverMarker(markers),
143
- points: hoverPoints,
144
- label: (row: TData) => `${xAcc(row)}, ${yAcc(row)}`,
145
- strategy: resolveHoverStrategy(tooltip?.strategy, markers, 'punctual'),
146
- sync: resolveHoverSync(tooltip?.sync, markers),
147
- tooltip
148
- });
149
-
150
- const scatterMarkers = $derived(
151
- buildScatterMarkers({
152
- groupedSeries,
153
- r,
154
- colorFor: colorForSeries,
155
- disabledDotsFor: (name) => disabledDotsOverride(effectiveDisabledFor(name))
156
- })
157
- );
158
-
159
- const scopedGroups = $derived(
160
- buildScopedMarkerGroups<TData, Series<TData>, ScatterSegmentStyle>({
161
- groupedSeries,
162
- segments,
163
- colorFor: (series) => colorForSeries(series.name),
164
- segmentColorFor: (style, defaultColor) => style?.dotFill ?? defaultColor
165
- })
166
- );
167
-
168
- // svelteplot treats a per-row `r` (a field key or accessor function) as a
169
- // proper channel bound to its own auto sqrt scale — the raw values it
170
- // returns (e.g. a population in the millions) are data, not pixels, and
171
- // get compressed into a modest, roughly data-magnitude-independent pixel
172
- // range regardless of how large the raw numbers are. A literal constant
173
- // `r` (or the theme/segment `dotRadius` fallback), by contrast, *is*
174
- // already a literal pixel value. `AUTO_SCALED_RADIUS_ESTIMATE` stands in
175
- // for whatever svelteplot's own r-scale ends up rendering at, since the
176
- // real value isn't knowable until that scale is built.
177
- const AUTO_SCALED_RADIUS_ESTIMATE = 20;
178
-
179
- // The largest radius any dot actually renders at — pads the scale domain
180
- // below so a point at the data extreme doesn't get its own circle clipped
181
- // by the frame. svelteplot's own 'auto' margin only measures axis chrome,
182
- // never mark geometry.
183
- const maxDotRadius = $derived.by(() => {
184
- let max = 0;
185
- for (const marker of scatterMarkers) {
186
- const rConst = typeof marker.r === 'number' ? marker.r : undefined;
187
- const isChannel = typeof marker.r === 'function';
188
- const fallbackR = marker.style?.dotRadius ?? cfg.scatter.dotRadius;
189
- if (rConst !== undefined) {
190
- max = Math.max(max, rConst);
191
- } else if (isChannel) {
192
- max = Math.max(max, AUTO_SCALED_RADIUS_ESTIMATE);
193
- } else {
194
- max = Math.max(max, fallbackR);
195
- }
196
- }
197
- return max;
198
- });
199
-
200
- // Best-effort pre-render estimate of the plot's own inner content size —
201
- // the real size isn't known until svelteplot measures its own axis
202
- // chrome, so this is only used to convert a pixel radius into a domain
203
- // padding amount, not as the actual rendered margin.
204
- const estimatedMargins = $derived({ ...cfg.margins, ...margins });
205
- const estimatedInnerWidth = $derived(
206
- width -
207
- numericMargin('left', estimatedMargins.left) -
208
- numericMargin('right', estimatedMargins.right)
209
- );
210
- const estimatedInnerHeight = $derived(
211
- height -
212
- numericMargin('top', estimatedMargins.top) -
213
- numericMargin('bottom', estimatedMargins.bottom)
214
- );
215
-
216
- const resolvedScales = $derived.by((): AxisBasedScalesConfig<TData> => {
217
- if (maxDotRadius <= 0) return scales;
218
- const xValues = flat.map((d) => Number(xAcc(d)));
219
- const yValues = flat.map((d) => Number(yAcc(d)));
220
- const paddedX = scales.x?.domain
221
- ? undefined
222
- : resolveRadiusPaddedDomain(xValues, maxDotRadius, estimatedInnerWidth);
223
- const paddedY = scales.y?.domain
224
- ? undefined
225
- : resolveRadiusPaddedDomain(yValues, maxDotRadius, estimatedInnerHeight);
226
- if (!paddedX && !paddedY) return scales;
227
- return {
228
- ...scales,
229
- x: paddedX ? { ...scales.x, domain: paddedX } : scales.x,
230
- y: paddedY ? { ...scales.y, domain: paddedY } : scales.y
231
- };
232
- });
233
-
234
- // See `halfDimensionOverflowCap`'s own doc comment — relevant here mainly
235
- // for a corner point with no room in any direction even after
236
- // `resolveEdgeAwareAnchor`'s own flip.
237
- const maxLabelOverflow = $derived(halfDimensionOverflowCap(width, height));
238
-
239
- // A scatter point's value label can grow past the plot's own content box
240
- // (e.g. a point volcado toward a corner, past what its own edge-aware flip
241
- // can fit) — reserving real space there is what each label's own overflow
242
- // measurement feeds into here, via a tracker local to this one `<Plot>`
243
- // instance. See `labelOverflow.svelte.ts`. Resets on `resolvedSeries` so
244
- // overflow from an earlier, differently-shaped frame doesn't linger once
245
- // that frame is gone.
246
- const labelMargin = createLabelMarginTracker(
247
- () => margins,
248
- () => resolvedSeries,
249
- undefined,
250
- () => maxLabelOverflow
251
- );
12
+ title,
13
+ subtitle,
14
+ caption,
15
+ header,
16
+ footer,
17
+ legend,
18
+ order,
19
+ timeline,
20
+ facet,
21
+ tooltip,
22
+ margins = $bindable(),
23
+ ...core
24
+ }: ScatterPlotProps<TData> = $props();
252
25
  </script>
253
26
 
254
- <BasePlotLayout
255
- {width}
256
- {height}
257
- {styles}
258
- data={flat}
259
- getX={xAcc}
260
- getY={(d) => Number(yAcc(d))}
261
- {hover}
262
- scales={resolvedScales}
263
- {...labelMargin.plotProps}
264
- markers={[...scatterMarkers, ...markers]}
265
- seriesData={resolvedSeries}
266
- {scopedGroups}
267
- >
268
- {#snippet children({ numericMargins })}
269
- {#if showVals}
270
- {#each groupedSeries as group (group.series.name)}
271
- <ValueLabels
272
- {group}
273
- {formatValue}
274
- values={styles.values}
275
- defaultColor={cfg.axis.color}
276
- disabled={effectiveDisabledFor(group.series.name)}
277
- {width}
278
- {height}
279
- {numericMargins}
280
- onHoverSeries={hoverIsolate
281
- ? () => {
282
- hoverIsolatedSeries = group.series.name;
283
- }
284
- : undefined}
285
- onHoverEnd={hoverIsolate
286
- ? () => {
287
- hoverIsolatedSeries = null;
288
- }
289
- : undefined}
290
- onOverflow={labelMargin.report}
291
- />
292
- {/each}
293
- {/if}
294
- {/snippet}
295
- </BasePlotLayout>
27
+ <Plot
28
+ core={core as ScatterPlotCoreProps<TData>}
29
+ defaults={buildScatterDefaults}
30
+ bind:margins
31
+ {title}
32
+ {subtitle}
33
+ {caption}
34
+ {header}
35
+ {footer}
36
+ {legend}
37
+ {order}
38
+ {timeline}
39
+ {facet}
40
+ {tooltip}
41
+ />
@@ -1,12 +1,9 @@
1
- import type { BasePlotProps } from '../../types/plots/props';
2
- import type { AxisBasedScalesConfig } from '../../types/layout/scales';
3
- import type { ScatterDataProps } from '../../types/plots/data/scatter';
4
- import type { AxisBasedStylesConfig } from '../../types/layout/styles';
5
- import type { AxisBasedMarkersConfig } from '../../types/markers/common';
1
+ import Plot from '../../layout/plot/Plot.svelte';
2
+ import type { ScatterPlotProps } from '../../types/plots/scatter/props';
6
3
  declare function $$render<TData extends Record<string, unknown>>(): {
7
- props: BasePlotProps<ScatterDataProps<TData>, TData, AxisBasedStylesConfig, import("../..").DotStyle, AxisBasedMarkersConfig, AxisBasedScalesConfig<TData>>;
4
+ props: ScatterPlotProps<TData>;
8
5
  exports: {};
9
- bindings: "";
6
+ bindings: "margins";
10
7
  slots: {};
11
8
  events: {};
12
9
  };
@@ -14,7 +11,7 @@ declare class __sveltets_Render<TData extends Record<string, unknown>> {
14
11
  props(): ReturnType<typeof $$render<TData>>['props'];
15
12
  events(): ReturnType<typeof $$render<TData>>['events'];
16
13
  slots(): ReturnType<typeof $$render<TData>>['slots'];
17
- bindings(): "";
14
+ bindings(): "margins";
18
15
  exports(): {};
19
16
  }
20
17
  interface $$IsomorphicComponent {
@@ -0,0 +1,4 @@
1
+ import type { AxisPlotDefaults } from '../../types/phases';
2
+ import type { ScatterPlotState, ScatterPlotCtx } from '../../types/plots/scatter/state';
3
+ /** ScatterPlot on the shared pipeline: discrete dots, its own radius-padded scales, and its own markers. Its plot defaults to: hover the exact point. */
4
+ export declare function buildScatterDefaults<TData extends Record<string, unknown>>(): AxisPlotDefaults<ScatterPlotState<TData>, ScatterPlotCtx>;
@@ -0,0 +1,80 @@
1
+ import { ProcessedPositions } from '../../phases/transforms/ProcessedPositions';
2
+ import { buildMarks, buildValueLabels } from './markers';
3
+ import { Margins } from '../../layout/margins/Margins';
4
+ import { MarkerAxisValues } from '../../phases/scales/MarkerAxisValues';
5
+ /** Stand-in max render radius for a channel-bound `r` (svelteplot's own auto sqrt scale). */
6
+ const AUTO_SCALED_RADIUS_ESTIMATE = 20;
7
+ /**
8
+ * `values`' extent widened by `radiusPx` of data on each side, over a plot
9
+ * `sizePx` wide, so the largest dot doesn't clip the frame. All-equal values
10
+ * widen by a unit instead.
11
+ */
12
+ function paddedDomain(values, radiusPx, sizePx) {
13
+ const finite = values.filter((v) => Number.isFinite(v));
14
+ if (finite.length === 0)
15
+ return undefined;
16
+ const min = Math.min(...finite);
17
+ const max = Math.max(...finite);
18
+ if (min === max)
19
+ return [min - 1, max + 1];
20
+ const pad = sizePx > 0 ? (radiusPx * (max - min)) / sizePx : 0;
21
+ return [min - pad, max + pad];
22
+ }
23
+ /**
24
+ * The domains a scatter fits to its own dots: each unpinned axis padded by
25
+ * the largest dot's radius, and grown to cover what derived markers draw
26
+ * (a density curve's peak, a regression band).
27
+ */
28
+ function fitDomains(state, ctx) {
29
+ const { scales, channels, groupedSeries } = state;
30
+ const processed = state.processedData;
31
+ const position = ProcessedPositions.of(processed);
32
+ const extra = {
33
+ x: MarkerAxisValues.of(state.markers ?? [], 'x'),
34
+ y: MarkerAxisValues.of(state.markers ?? [], 'y')
35
+ };
36
+ // The largest radius a dot renders at, from the `r` channel and segment styles.
37
+ const r = channels.r;
38
+ const radius = typeof r === 'number'
39
+ ? r
40
+ : r !== undefined
41
+ ? AUTO_SCALED_RADIUS_ESTIMATE
42
+ : Math.max(0, ...groupedSeries.flatMap((group) => group.visualSegments.map((seg) => seg.styles.dotRadius ?? ctx.cfg.scatter.dotRadius)));
43
+ if (radius <= 0 && !extra.x.length && !extra.y.length)
44
+ return {};
45
+ const box = Margins.resolve({ ...ctx.cfg.margins, ...state.margins }).contentBox(state.width, state.height);
46
+ const fit = {};
47
+ for (const [axis, size] of [
48
+ ['x', box.width],
49
+ ['y', box.height]
50
+ ]) {
51
+ if (scales[axis]?.domain)
52
+ continue;
53
+ const values = [...processed.data.map((d) => Number(position[axis](d))), ...extra[axis]];
54
+ const domain = paddedDomain(values, radius, size);
55
+ if (domain)
56
+ fit[axis] = { domain };
57
+ }
58
+ return fit;
59
+ }
60
+ /** ScatterPlot on the shared pipeline: discrete dots, its own radius-padded scales, and its own markers. Its plot defaults to: hover the exact point. */
61
+ export function buildScatterDefaults() {
62
+ return {
63
+ data: {
64
+ segments: {
65
+ color: (style) => style?.dotFill,
66
+ connect: false
67
+ }
68
+ },
69
+ transforms: { groups: 'runs' },
70
+ scales: { fit: fitDomains },
71
+ markers: { marks: buildMarks, valueLabels: buildValueLabels },
72
+ hover: {
73
+ strategy: 'punctual',
74
+ label: (state) => {
75
+ const { x, y } = state.channels;
76
+ return (row) => `${x.accessor(row)}, ${y.accessor(row)}`;
77
+ }
78
+ }
79
+ };
80
+ }
@@ -0,0 +1,19 @@
1
+ import type { ScatterPlotState, ScatterPlotCtx } from '../../types/plots/scatter/state';
2
+ import type { TextMarkerConfig } from '../../types/markers/common';
3
+ import { ValueLabels } from '../../layout/styles/ValueLabels';
4
+ import type { AxisBasedMarkersConfig } from '../../types/markers/common';
5
+ /**
6
+ * ScatterPlot's `styles.values` as one `'text'` marker over the same
7
+ * processed rows its dots draw, each labelled with its own `y` value. A label
8
+ * sits beside its point and flips to the other side where its text would
9
+ * cross the plot's edge (`edgeAware`).
10
+ */
11
+ export declare function buildValueLabels<TData extends Record<string, unknown>>(labels: ValueLabels, state: ScatterPlotState<TData>, ctx: ScatterPlotCtx): TextMarkerConfig[];
12
+ /**
13
+ * ScatterPlot's "markers" phase: one `'dot'` marker per visual segment of the
14
+ * rows the "transforms" phase left, in their own order, so a reordering
15
+ * transform decides which dots paint on top - prepended onto whatever the
16
+ * "statistics" phase already put in `state.markers` - and its value labels on
17
+ * top of everything.
18
+ */
19
+ export declare function buildMarks<TData extends Record<string, unknown>>(state: ScatterPlotState<TData>, ctx: ScatterPlotCtx): AxisBasedMarkersConfig[];