@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
@@ -1,75 +1,75 @@
1
1
  <script lang="ts">
2
- import { Frame } from 'svelteplot';
3
- import TileLayer from './TileLayer.svelte';
4
- import { geometryLonLatBounds } from '../../plots/utils/geoAccessors';
5
- import type { StylesLayoutConfig } from '../../types/layout/styles';
2
+ import { Frame } from 'svelteplot';
3
+ import TileLayer from './TileLayer.svelte';
4
+ import { geometryLonLatBounds } from '../../plots/utils/geoAccessors';
5
+ import type { StylesLayoutConfig } from '../../types/layout/styles';
6
6
 
7
- /**
8
- * Non-data cosmetic embellishments driven by a plot kind's own `styles`
9
- * prop. Composed by `BasePlotLayout` for every plot kind, nested inside
10
- * `CoordinatesLayout` so embellishments pan/zoom together with whatever
11
- * they're placed alongside: the raster basemap `tileLayer` (`GeoPlot`
12
- * only — other kinds' `styles` simply don't declare it) and the `frame`
13
- * border, available on every plot kind.
14
- */
15
- let {
16
- styles,
17
- width,
18
- height,
19
- numericMargins,
20
- }: {
21
- styles?: StylesLayoutConfig;
22
- width: number;
23
- height: number;
24
- numericMargins: { top: number; right: number; bottom: number; left: number };
25
- } = $props();
7
+ /**
8
+ * Non-data cosmetic embellishments driven by a plot kind's own `styles`
9
+ * prop. Composed by `BasePlotLayout` for every plot kind, nested inside
10
+ * `CoordinatesLayout` so embellishments pan/zoom together with whatever
11
+ * they're placed alongside: the raster basemap `tileLayer` (`GeoPlot`
12
+ * only - other kinds' `styles` simply don't declare it) and the `frame`
13
+ * border, available on every plot kind.
14
+ */
15
+ let {
16
+ styles,
17
+ width,
18
+ height,
19
+ numericMargins
20
+ }: {
21
+ styles?: StylesLayoutConfig;
22
+ width: number;
23
+ height: number;
24
+ numericMargins: { top: number; right: number; bottom: number; left: number };
25
+ } = $props();
26
26
 
27
- const frame = $derived(styles?.frame);
28
- const frameStyle = $derived(typeof frame === 'object' ? frame : undefined);
27
+ const frame = $derived(styles?.frame);
28
+ const frameStyle = $derived(typeof frame === 'object' ? frame : undefined);
29
29
 
30
- /** Auto-fits `TileLayer` to the tile-layer feature set `GeoPlot` tacks onto `styles.tileLayer.features` — see `StylesLayoutConfig`'s own doc comment. */
31
- const dataLonLatBounds = $derived.by((): [number, number, number, number] | null => {
32
- const features = styles?.tileLayer?.features;
33
- if (!features?.length) return null;
34
- let minLon = Infinity;
35
- let maxLon = -Infinity;
36
- let minLat = Infinity;
37
- let maxLat = -Infinity;
38
- for (const f of features) {
39
- const b = geometryLonLatBounds(f.geometry);
40
- if (!b) continue;
41
- if (b[0] < minLon) minLon = b[0];
42
- if (b[2] > maxLon) maxLon = b[2];
43
- if (b[1] < minLat) minLat = b[1];
44
- if (b[3] > maxLat) maxLat = b[3];
45
- }
46
- return minLon === Infinity ? null : [minLon, minLat, maxLon, maxLat];
47
- });
30
+ /** Auto-fits `TileLayer` to the tile-layer feature set `GeoPlot` tacks onto `styles.tileLayer.features` - see `StylesLayoutConfig`'s own doc comment. */
31
+ const dataLonLatBounds = $derived.by((): [number, number, number, number] | null => {
32
+ const features = styles?.tileLayer?.features;
33
+ if (!features?.length) return null;
34
+ let minLon = Infinity;
35
+ let maxLon = -Infinity;
36
+ let minLat = Infinity;
37
+ let maxLat = -Infinity;
38
+ for (const f of features) {
39
+ const b = geometryLonLatBounds(f.geometry);
40
+ if (!b) continue;
41
+ if (b[0] < minLon) minLon = b[0];
42
+ if (b[2] > maxLon) maxLon = b[2];
43
+ if (b[1] < minLat) minLat = b[1];
44
+ if (b[3] > maxLat) maxLat = b[3];
45
+ }
46
+ return minLon === Infinity ? null : [minLon, minLat, maxLon, maxLat];
47
+ });
48
48
  </script>
49
49
 
50
50
  {#if styles?.tileLayer}
51
- <TileLayer
52
- config={styles.tileLayer}
53
- left={numericMargins.left}
54
- top={numericMargins.top}
55
- width={Math.max(0, width - numericMargins.left - numericMargins.right)}
56
- height={Math.max(0, height - numericMargins.top - numericMargins.bottom)}
57
- {dataLonLatBounds}
58
- />
51
+ <TileLayer
52
+ config={styles.tileLayer}
53
+ left={numericMargins.left}
54
+ top={numericMargins.top}
55
+ width={Math.max(0, width - numericMargins.left - numericMargins.right)}
56
+ height={Math.max(0, height - numericMargins.top - numericMargins.bottom)}
57
+ {dataLonLatBounds}
58
+ />
59
59
  {/if}
60
60
  {#if frame}
61
- <Frame
62
- fill={frameStyle?.fill}
63
- fillOpacity={frameStyle?.fillOpacity}
64
- stroke={frameStyle?.stroke}
65
- strokeWidth={frameStyle?.strokeWidth}
66
- strokeOpacity={frameStyle?.strokeOpacity}
67
- strokeDasharray={frameStyle?.strokeDasharray}
68
- borderRadius={frameStyle?.borderRadius}
69
- inset={frameStyle?.inset}
70
- insetTop={frameStyle?.insetTop}
71
- insetRight={frameStyle?.insetRight}
72
- insetBottom={frameStyle?.insetBottom}
73
- insetLeft={frameStyle?.insetLeft}
74
- />
61
+ <Frame
62
+ fill={frameStyle?.fill}
63
+ fillOpacity={frameStyle?.fillOpacity}
64
+ stroke={frameStyle?.stroke}
65
+ strokeWidth={frameStyle?.strokeWidth}
66
+ strokeOpacity={frameStyle?.strokeOpacity}
67
+ strokeDasharray={frameStyle?.strokeDasharray}
68
+ borderRadius={frameStyle?.borderRadius}
69
+ inset={frameStyle?.inset}
70
+ insetTop={frameStyle?.insetTop}
71
+ insetRight={frameStyle?.insetRight}
72
+ insetBottom={frameStyle?.insetBottom}
73
+ insetLeft={frameStyle?.insetLeft}
74
+ />
75
75
  {/if}
@@ -1,87 +1,89 @@
1
1
  <script lang="ts">
2
- import { usePlot } from 'svelteplot';
3
- import {
4
- visibleTiles,
5
- buildMercatorFit,
6
- tileScreenBounds,
7
- tileUrl,
8
- toProjectionLike,
9
- type StreamingProjection,
10
- } from '../../plots/utils/tiles';
11
- import type { GeoTileLayerConfig } from '../../types/layout/styles';
2
+ import { usePlot } from '../plot/usePlot';
3
+ import {
4
+ visibleTiles,
5
+ buildMercatorFit,
6
+ tileScreenBounds,
7
+ tileUrl,
8
+ toProjectionLike,
9
+ type StreamingProjection
10
+ } from '../../plots/utils/tiles';
11
+ import type { GeoTileLayerConfig } from '../../types/layout/styles';
12
12
 
13
- /**
14
- * Renders an XYZ raster tile basemap under the vector geometry. Mounted as
15
- * a child of svelteplot's `<Plot>` so `usePlot()` resolves its already-fit
16
- * projection — this module never depends on `d3-geo` directly.
17
- *
18
- * v1 limitation: the visible tile grid is computed once for the initial
19
- * view, not re-fetched as the pan/zoom `<g>` transform changes — tiles pan
20
- * and scale visually with the map, but don't reveal new coverage when
21
- * panned far, and pixelate past their native resolution when zoomed in.
22
- */
23
- let {
24
- config,
25
- left,
26
- top,
27
- width,
28
- height,
29
- dataLonLatBounds,
30
- }: {
31
- config: GeoTileLayerConfig;
32
- left: number;
33
- top: number;
34
- width: number;
35
- height: number;
36
- /** Forwarded to `visibleTiles`/`buildMercatorFit` — see `Plot.svelte`'s `dataLonLatBounds`. */
37
- dataLonLatBounds?: [number, number, number, number] | null;
38
- } = $props();
13
+ /**
14
+ * Renders an XYZ raster tile basemap under the vector geometry. Mounted as
15
+ * a child of svelteplot's `<Plot>` so `usePlot()` resolves its already-fit
16
+ * projection - this module never depends on `d3-geo` directly.
17
+ *
18
+ * v1 limitation: the visible tile grid is computed once for the initial
19
+ * view, not re-fetched as the pan/zoom `<g>` transform changes - tiles pan
20
+ * and scale visually with the map, but don't reveal new coverage when
21
+ * panned far, and pixelate past their native resolution when zoomed in.
22
+ */
23
+ let {
24
+ config,
25
+ left,
26
+ top,
27
+ width,
28
+ height,
29
+ dataLonLatBounds
30
+ }: {
31
+ config: GeoTileLayerConfig;
32
+ left: number;
33
+ top: number;
34
+ width: number;
35
+ height: number;
36
+ /** Forwarded to `visibleTiles`/`buildMercatorFit` - see `Plot.svelte`'s `dataLonLatBounds`. */
37
+ dataLonLatBounds?: [number, number, number, number] | null;
38
+ } = $props();
39
39
 
40
- const plot = usePlot();
40
+ const plot = usePlot().svelteplot;
41
41
 
42
- const tileSize = $derived(config.tileSize ?? 256);
42
+ const tileSize = $derived(config.tileSize ?? 256);
43
43
 
44
- // svelteplot's own `PlotScale` type doesn't reflect this, but at runtime
45
- // `scales.projection` is `createProjection()`'s `{ stream, invert }`
46
- // result (verified against svelteplot's own `helpers/projection.js`).
47
- const rawProjection = $derived(plot.scales.projection as unknown as StreamingProjection | undefined);
48
- const projection = $derived(rawProjection ? toProjectionLike(rawProjection) : undefined);
44
+ // svelteplot's own `PlotScale` type doesn't reflect this, but at runtime
45
+ // `scales.projection` is `createProjection()`'s `{ stream, invert }`
46
+ // result (verified against svelteplot's own `helpers/projection.js`).
47
+ const rawProjection = $derived(
48
+ plot.scales.projection as unknown as StreamingProjection | undefined
49
+ );
50
+ const projection = $derived(rawProjection ? toProjectionLike(rawProjection) : undefined);
49
51
 
50
- const tiles = $derived.by(() => {
51
- if (!projection) return [];
52
- return visibleTiles(
53
- projection,
54
- { left, top, width, height },
55
- tileSize,
56
- config.minZoom ?? 0,
57
- config.maxZoom ?? 19,
58
- dataLonLatBounds,
59
- );
60
- });
52
+ const tiles = $derived.by(() => {
53
+ if (!projection) return [];
54
+ return visibleTiles(
55
+ projection,
56
+ { left, top, width, height },
57
+ tileSize,
58
+ config.minZoom ?? 0,
59
+ config.maxZoom ?? 19,
60
+ dataLonLatBounds
61
+ );
62
+ });
61
63
 
62
- // One affine fit per zoom level, shared across every tile in `tiles` — see
63
- // `buildMercatorFit`'s doc comment for why this replaces forward-projecting
64
- // each tile's own corners individually.
65
- const fit = $derived.by(() => {
66
- if (!projection || tiles.length === 0) return null;
67
- return buildMercatorFit(projection, { left, top, width, height }, tiles[0].z, dataLonLatBounds);
68
- });
64
+ // One affine fit per zoom level, shared across every tile in `tiles` - see
65
+ // `buildMercatorFit`'s doc comment for why this replaces forward-projecting
66
+ // each tile's own corners individually.
67
+ const fit = $derived.by(() => {
68
+ if (!projection || tiles.length === 0) return null;
69
+ return buildMercatorFit(projection, { left, top, width, height }, tiles[0].z, dataLonLatBounds);
70
+ });
69
71
  </script>
70
72
 
71
73
  {#if projection && fit}
72
- <g class="dct-geo-tiles" opacity={config.opacity ?? 1}>
73
- {#each tiles as tile (`${tile.z}/${tile.x}/${tile.y}`)}
74
- {@const bounds = tileScreenBounds(fit, tile)}
75
- {#if bounds}
76
- <image
77
- href={tileUrl(config.url, tile)}
78
- x={bounds.left}
79
- y={bounds.top}
80
- width={bounds.width}
81
- height={bounds.height}
82
- preserveAspectRatio="none"
83
- />
84
- {/if}
85
- {/each}
86
- </g>
74
+ <g class="dct-geo-tiles" opacity={config.opacity ?? 1}>
75
+ {#each tiles as tile (`${tile.z}/${tile.x}/${tile.y}`)}
76
+ {@const bounds = tileScreenBounds(fit, tile)}
77
+ {#if bounds}
78
+ <image
79
+ href={tileUrl(config.url, tile)}
80
+ x={bounds.left}
81
+ y={bounds.top}
82
+ width={bounds.width}
83
+ height={bounds.height}
84
+ preserveAspectRatio="none"
85
+ />
86
+ {/if}
87
+ {/each}
88
+ </g>
87
89
  {/if}
@@ -5,7 +5,7 @@ type $$ComponentProps = {
5
5
  top: number;
6
6
  width: number;
7
7
  height: number;
8
- /** Forwarded to `visibleTiles`/`buildMercatorFit` — see `Plot.svelte`'s `dataLonLatBounds`. */
8
+ /** Forwarded to `visibleTiles`/`buildMercatorFit` - see `Plot.svelte`'s `dataLonLatBounds`. */
9
9
  dataLonLatBounds?: [number, number, number, number] | null;
10
10
  };
11
11
  declare const TileLayer: import("svelte").Component<$$ComponentProps, {}, "">;
@@ -0,0 +1,97 @@
1
+ import { Box } from '../margins/Box';
2
+ import { PlotAxes } from '../../phases/data/PlotAxes';
3
+ import type { PlotStylesConfig } from '../../types/configuration/styling';
4
+ import type { ValuesStyle } from '../../types/layout/styles';
5
+ import type { ValueLabelsOptions } from '../../types/phases/styles/phase';
6
+ import type { Series } from '../../types/plots/data/common';
7
+ import type { FontStyle, StrokeStyle } from '../../types/plots/styling';
8
+ import type { TextAnchor, ValueAnchor } from '../../types/plots/constants';
9
+ import type { BoxAnchors, EdgeBox } from '../../types/layout/box';
10
+ import type { MarginSide } from '../../types/plots/props';
11
+ import type { AxisPlotCtx, AxisPlotState, ProcessedRow } from '../../types/phases';
12
+ import type { TextMarkerConfig } from '../../types/markers/common';
13
+ /**
14
+ * A plot's value labels: the author's `styles.values` over the plot kind's
15
+ * own defaults, how their text measures, where they are expected to sit
16
+ * (`reach`, which the plot's margins keep room for), and what every label marker shares
17
+ * ({@link hooks}). The "markers" phase draws them.
18
+ */
19
+ export declare class ValueLabels {
20
+ #private;
21
+ readonly show: boolean;
22
+ readonly anchor: ValueAnchor;
23
+ readonly format: (value: number, seriesName: string) => string;
24
+ readonly hoverIsolate: boolean;
25
+ readonly font: FontStyle | undefined;
26
+ readonly fontSize: number;
27
+ /** The connectors of labels that had to move apart. */
28
+ readonly strokeStyle: StrokeStyle | undefined;
29
+ /** How labels that would overlap move apart - the configuration's `text.declutter`. */
30
+ readonly declutter: PlotStylesConfig['text']['declutter'];
31
+ /** Where the labels are expected to sit: boxes around their points, on the edges those can reach. */
32
+ readonly reach: EdgeBox[];
33
+ constructor(values: ValuesStyle | undefined, cfg: PlotStylesConfig, options?: Omit<ValueLabelsOptions<never>, 'reach'>, reach?: (labels: ValueLabels) => EdgeBox[]);
34
+ /** A plot's value labels: `values` over `options`, the kind's own defaults, their reach read off `state`. */
35
+ static build<TState>(values: ValuesStyle | undefined, cfg: PlotStylesConfig, options: ValueLabelsOptions<TState>, state: TState): ValueLabels;
36
+ /** One line of label text's height. */
37
+ get lineHeight(): number;
38
+ /** The box one label's `text` takes. */
39
+ textBox(text: string): Box;
40
+ /** The labels' gap (px) from their mark along `axis`: their own `dx`/`dy`, else `fallback`. */
41
+ offset(axis: 'x' | 'y', fallback?: number): number;
42
+ /**
43
+ * Where a label reading `text` sits around its point: anchored `at` that
44
+ * offset from it (its `dx`/`dy`), on `side` of that anchor per axis - the
45
+ * way its `textAnchor`/`lineAnchor` set it - with the plot `edges` the
46
+ * point can sit on.
47
+ */
48
+ edgeBox(text: string, side: BoxAnchors, at: {
49
+ x?: number;
50
+ y?: number;
51
+ }, edges: MarginSide[]): EdgeBox;
52
+ /** Each series' value farthest from zero, read on `valueAxis` - the widest label it can show. */
53
+ extremes<S extends Series<any>>(series: S[], valueAxis?: 'x' | 'y'): {
54
+ series: S;
55
+ value: number;
56
+ }[];
57
+ /**
58
+ * The author's own `textAnchor`, if any. `'outside'` is a hover marker's
59
+ * per-point anchor; a label's own `anchor` already places it, so here it
60
+ * counts as unset.
61
+ */
62
+ get textAnchor(): Exclude<TextAnchor, 'outside'> | undefined;
63
+ /**
64
+ * What every label marker shares: the plot's margins grow to fit it, it
65
+ * dims with its row's series, and with `hoverIsolate`, hovering it
66
+ * isolates that series. A row without a series gets the margins only.
67
+ */
68
+ hooks(ctx: AxisPlotCtx): Pick<TextMarkerConfig, 'fillOpacity' | 'fitMargins' | 'onPointerEnter' | 'onPointerLeave'>;
69
+ /**
70
+ * A processed row's own value, read through its series' own value channel
71
+ * (`y`, or `x` on a horizontal plot) - what a label shows, even where a
72
+ * transform moved the row (a stacked row's top is the running total, not
73
+ * its own value).
74
+ */
75
+ static valueOf<TData extends Record<string, unknown>>(state: {
76
+ resolvedSeries?: Series<TData>[];
77
+ axes?: PlotAxes;
78
+ }): (d: ProcessedRow) => unknown;
79
+ /**
80
+ * A series-over-`x` plot's (line, area) labels: one `'text'` marker over
81
+ * the processed rows, each visible series' last row with a value
82
+ * (`filter` + `selectLast`, per series), at its top (a stacked row's
83
+ * `y2`), labelled with its own value and placed by `anchor`. Labels that
84
+ * would overlap fan out into a shared column (`declutter`), colored by the
85
+ * segment the row falls in.
86
+ */
87
+ atSeriesEnds<TData extends Record<string, unknown>>(state: AxisPlotState<TData, object>): TextMarkerConfig[];
88
+ /**
89
+ * Where {@link atSeriesEnds}' labels are expected to sit: past each
90
+ * series' last point, at the right edge (or the left, for labels set
91
+ * before their point; both for a fan of several series, which can flip),
92
+ * reaching up or down from the top or bottom edge. Read off the `y`
93
+ * domain when the scales set one, so it holds across a timeline; else off
94
+ * every value.
95
+ */
96
+ reachAtSeriesEnds<TData extends Record<string, unknown>>(state: AxisPlotState<TData, object>): EdgeBox[];
97
+ }
@@ -0,0 +1,238 @@
1
+ import { ProcessedPositions } from '../../phases/transforms/ProcessedPositions';
2
+ import { Box } from '../margins/Box';
3
+ import { resolveAccessor } from '../../plots/utils/accessors';
4
+ import { SERIES_ID_KEY, SERIES_KEY } from '../../phases/transforms/TransformsPhase';
5
+ import { seriesIdOf } from '../../utils/grouping';
6
+ import { Transforms } from '../../phases/transforms/Transforms';
7
+ import { isGapValue } from '../../plots/utils/gaps';
8
+ import { PlotAxes } from '../../phases/data/PlotAxes';
9
+ /**
10
+ * A plot's value labels: the author's `styles.values` over the plot kind's
11
+ * own defaults, how their text measures, where they are expected to sit
12
+ * (`reach`, which the plot's margins keep room for), and what every label marker shares
13
+ * ({@link hooks}). The "markers" phase draws them.
14
+ */
15
+ export class ValueLabels {
16
+ show;
17
+ anchor;
18
+ format;
19
+ hoverIsolate;
20
+ font;
21
+ fontSize;
22
+ /** The connectors of labels that had to move apart. */
23
+ strokeStyle;
24
+ /** How labels that would overlap move apart - the configuration's `text.declutter`. */
25
+ declutter;
26
+ /** Where the labels are expected to sit: boxes around their points, on the edges those can reach. */
27
+ reach;
28
+ #cfg;
29
+ constructor(values, cfg, options = {}, reach) {
30
+ this.show = values?.show ?? options.show ?? false;
31
+ this.anchor = values?.anchor ?? options.anchor ?? 'outside';
32
+ this.format = values?.format ?? options.format ?? ((v) => `${v}`);
33
+ this.hoverIsolate = values?.hoverIsolate ?? false;
34
+ this.font = values?.fontStyle;
35
+ this.fontSize = typeof this.font?.fontSize === 'number' ? this.font.fontSize : 12;
36
+ this.strokeStyle = values?.strokeStyle;
37
+ this.declutter = cfg.text.declutter;
38
+ this.#cfg = cfg;
39
+ this.reach = (this.show && reach?.(this)) || [];
40
+ }
41
+ /** A plot's value labels: `values` over `options`, the kind's own defaults, their reach read off `state`. */
42
+ static build(values, cfg, options, state) {
43
+ const { reach } = options;
44
+ return new ValueLabels(values, cfg, options, reach && ((labels) => reach(labels, state)));
45
+ }
46
+ /** One line of label text's height. */
47
+ get lineHeight() {
48
+ return this.fontSize * 1.2;
49
+ }
50
+ /** The box one label's `text` takes. */
51
+ textBox(text) {
52
+ return Box.ofText(text, this.fontSize, this.#cfg);
53
+ }
54
+ /** The labels' gap (px) from their mark along `axis`: their own `dx`/`dy`, else `fallback`. */
55
+ offset(axis, fallback = 6) {
56
+ const own = axis === 'x' ? this.font?.dx : this.font?.dy;
57
+ return Math.abs(typeof own === 'number' ? own : fallback);
58
+ }
59
+ /**
60
+ * Where a label reading `text` sits around its point: anchored `at` that
61
+ * offset from it (its `dx`/`dy`), on `side` of that anchor per axis - the
62
+ * way its `textAnchor`/`lineAnchor` set it - with the plot `edges` the
63
+ * point can sit on.
64
+ */
65
+ edgeBox(text, side, at, edges) {
66
+ const box = this.textBox(text).beside({ x: at.x ?? 0, y: at.y ?? 0 }, side);
67
+ return { box, edges };
68
+ }
69
+ /** Each series' value farthest from zero, read on `valueAxis` - the widest label it can show. */
70
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
71
+ extremes(series, valueAxis = 'y') {
72
+ return series.flatMap((s) => {
73
+ const accessor = s[valueAxis];
74
+ if (accessor === undefined)
75
+ return [];
76
+ const y = resolveAccessor(accessor);
77
+ let extreme;
78
+ for (const d of s.data) {
79
+ const v = Number(y(d));
80
+ if (!Number.isNaN(v) && (extreme === undefined || Math.abs(v) > Math.abs(extreme)))
81
+ extreme = v;
82
+ }
83
+ return extreme === undefined ? [] : [{ series: s, value: extreme }];
84
+ });
85
+ }
86
+ /**
87
+ * The author's own `textAnchor`, if any. `'outside'` is a hover marker's
88
+ * per-point anchor; a label's own `anchor` already places it, so here it
89
+ * counts as unset.
90
+ */
91
+ get textAnchor() {
92
+ const own = this.font?.textAnchor;
93
+ return own === 'outside' ? undefined : own;
94
+ }
95
+ /**
96
+ * What every label marker shares: the plot's margins grow to fit it, it
97
+ * dims with its row's series, and with `hoverIsolate`, hovering it
98
+ * isolates that series. A row without a series gets the margins only.
99
+ */
100
+ hooks(ctx) {
101
+ const interaction = ctx.interaction;
102
+ const seriesOf = (d) => d?.[SERIES_KEY] === undefined ? undefined : String(d[SERIES_KEY]);
103
+ const isolate = this.hoverIsolate && interaction;
104
+ return {
105
+ fitMargins: true,
106
+ fillOpacity: (d) => {
107
+ const series = seriesOf(d);
108
+ return series === undefined ? undefined : interaction?.fillFor(series)?.fillOpacity;
109
+ },
110
+ onPointerEnter: isolate
111
+ ? (d) => interaction.isolate(seriesOf(d) ?? null)
112
+ : undefined,
113
+ onPointerLeave: isolate ? () => interaction.isolate(null) : undefined
114
+ };
115
+ }
116
+ /**
117
+ * A processed row's own value, read through its series' own value channel
118
+ * (`y`, or `x` on a horizontal plot) - what a label shows, even where a
119
+ * transform moved the row (a stacked row's top is the running total, not
120
+ * its own value).
121
+ */
122
+ static valueOf(state) {
123
+ const valueAxis = PlotAxes.valueOf(state);
124
+ const bySeries = new Map((state.resolvedSeries ?? []).flatMap((s) => {
125
+ const accessor = s[valueAxis];
126
+ return accessor === undefined ? [] : [[seriesIdOf(s), resolveAccessor(accessor)]];
127
+ }));
128
+ return (d) => bySeries.get(String(d[SERIES_ID_KEY]))?.(d);
129
+ }
130
+ /**
131
+ * A series-over-`x` plot's (line, area) labels: one `'text'` marker over
132
+ * the processed rows, each visible series' last row with a value
133
+ * (`filter` + `selectLast`, per series), at its top (a stacked row's
134
+ * `y2`), labelled with its own value and placed by `anchor`. Labels that
135
+ * would overlap fan out into a shared column (`declutter`), colored by the
136
+ * segment the row falls in.
137
+ */
138
+ atSeriesEnds(state) {
139
+ const processed = state.processedData;
140
+ if (!processed)
141
+ return [];
142
+ const { font, anchor, format } = this;
143
+ const position = ProcessedPositions.of(processed);
144
+ const topOf = (d) => position.y(d);
145
+ const nameOf = (d) => String(d[SERIES_KEY]);
146
+ const valueOf = ValueLabels.valueOf(state);
147
+ const colorOf = (d) => {
148
+ const id = String(d[SERIES_ID_KEY]);
149
+ const group = state.scopedGroups?.find((g) => (g.id ?? g.name) === id);
150
+ const segment = group?.segments.find((seg) => seg.match(d));
151
+ return (segment?.color ??
152
+ group?.segments[0]?.color ??
153
+ group?.color ??
154
+ state.colorForSeries?.(nameOf(d)));
155
+ };
156
+ const marker = Transforms.resolve({
157
+ type: 'text',
158
+ data: processed.data,
159
+ x: (processed.channels.x ?? position.x),
160
+ y: (processed.channels.y2 ?? processed.channels.y ?? topOf),
161
+ grouping: SERIES_ID_KEY,
162
+ transforms: [
163
+ {
164
+ type: 'filter',
165
+ filter: (d) => !isGapValue(valueOf(d)) && !isGapValue(topOf(d))
166
+ },
167
+ { type: 'selectLast' }
168
+ ],
169
+ text: (d) => format(Number(valueOf(d)), nameOf(d)),
170
+ styles: {
171
+ ...font,
172
+ fontSize: font?.fontSize ?? 12,
173
+ dx: font?.dx ?? (anchor === 'start' ? 6 : anchor === 'end' ? -6 : 0),
174
+ dy: font?.dy ?? (anchor === 'outside' ? -8 : 0),
175
+ textAnchor: this.textAnchor ?? (anchor === 'start' || anchor === 'end' ? anchor : 'middle'),
176
+ lineAnchor: font?.lineAnchor ?? (anchor === 'outside' ? 'bottom' : 'middle')
177
+ },
178
+ fill: font?.fill ? undefined : colorOf,
179
+ declutter: { connector: this.strokeStyle }
180
+ }, processed.data);
181
+ return marker.data?.length ? [marker] : [];
182
+ }
183
+ /**
184
+ * Where {@link atSeriesEnds}' labels are expected to sit: past each
185
+ * series' last point, at the right edge (or the left, for labels set
186
+ * before their point; both for a fan of several series, which can flip),
187
+ * reaching up or down from the top or bottom edge. Read off the `y`
188
+ * domain when the scales set one, so it holds across a timeline; else off
189
+ * every value.
190
+ */
191
+ reachAtSeriesEnds(state) {
192
+ const series = state.resolvedSeries ?? [];
193
+ const { anchor, font, format } = this;
194
+ const dx = typeof font?.dx === 'number' ? font.dx : anchor === 'start' ? 6 : anchor === 'end' ? -6 : 0;
195
+ const dy = typeof font?.dy === 'number' ? font.dy : anchor === 'outside' ? -8 : 0;
196
+ const textAnchor = this.textAnchor ?? (anchor === 'start' ? 'start' : anchor === 'end' ? 'end' : 'middle');
197
+ const lineAnchor = font?.lineAnchor ?? (anchor === 'outside' ? 'bottom' : 'middle');
198
+ const side = {
199
+ x: textAnchor === 'start' ? 'after' : textAnchor === 'end' ? 'before' : 'middle',
200
+ y: lineAnchor === 'top' ? 'after' : lineAnchor === 'bottom' ? 'before' : 'middle'
201
+ };
202
+ // Labels that would overlap fan out into lanes, each one further out.
203
+ const { elbowGap, laneStep, labelGap } = this.declutter;
204
+ const lanes = elbowGap + (series.length - 1) * laneStep + labelGap;
205
+ const at = { x: series.length > 1 ? (Math.sign(dx) || 1) * lanes : dx, y: dy };
206
+ const edges = [
207
+ 'top',
208
+ 'bottom',
209
+ ...(dx < 0 ? ['left'] : []),
210
+ ...(dx >= 0 || series.length > 1 ? ['right'] : [])
211
+ ];
212
+ const texts = [];
213
+ const domain = state.scales.y?.domain;
214
+ if (domain && domain.length >= 2) {
215
+ const lo = Number(domain[0]);
216
+ const hi = Number(domain[domain.length - 1]);
217
+ for (const s of series)
218
+ texts.push(format(lo, s.name), format(hi, s.name));
219
+ }
220
+ else {
221
+ for (const s of series) {
222
+ if (s.y === undefined)
223
+ continue;
224
+ const y = resolveAccessor(s.y);
225
+ for (const d of s.data) {
226
+ const v = Number(y(d));
227
+ if (!Number.isNaN(v))
228
+ texts.push(format(v, s.name));
229
+ }
230
+ }
231
+ }
232
+ // +2px: canvas and SVG text can measure a pixel or so apart.
233
+ return texts.map((text) => {
234
+ const { box } = this.edgeBox(text, side, at, edges);
235
+ return { box: box.pad(2), edges };
236
+ });
237
+ }
238
+ }