@fundar/data-chart-telling 0.0.63 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (786) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/LICENSE +21 -0
  3. package/README.md +81 -558
  4. package/dist/configuration/config.svelte.d.ts +5 -5
  5. package/dist/configuration/config.svelte.js +133 -46
  6. package/dist/configuration/fonts.d.ts +6 -0
  7. package/dist/configuration/fonts.js +6 -0
  8. package/dist/configuration/themes/compact.d.ts +2 -2
  9. package/dist/configuration/themes/compact.js +1 -1
  10. package/dist/configuration/themes/dark.d.ts +2 -2
  11. package/dist/configuration/themes/dark.js +5 -4
  12. package/dist/configuration/themes/default.d.ts +8 -3
  13. package/dist/configuration/themes/default.js +8 -2
  14. package/dist/configuration/themes/editorial.d.ts +2 -2
  15. package/dist/configuration/themes/editorial.js +2 -2
  16. package/dist/configuration/themes/index.d.ts +433 -80
  17. package/dist/configuration/themes/index.js +6 -5
  18. package/dist/index.d.ts +34 -48
  19. package/dist/index.js +19 -35
  20. package/dist/layout/base/BasePlotLayout.svelte +312 -0
  21. package/dist/layout/base/BasePlotLayout.svelte.d.ts +111 -0
  22. package/dist/layout/composer/PlotComposer.svelte +94 -0
  23. package/dist/layout/composer/PlotComposer.svelte.d.ts +13 -0
  24. package/dist/layout/coordinates/CameraFit.svelte +4 -4
  25. package/dist/layout/coordinates/CoordinatesLayout.svelte +11 -3
  26. package/dist/layout/coordinates/CoordinatesLayout.svelte.d.ts +6 -2
  27. package/dist/layout/coordinates/camera.svelte.d.ts +1 -1
  28. package/dist/layout/coordinates/camera.svelte.js +6 -6
  29. package/dist/layout/coordinates/projections/argentina.js +3 -3
  30. package/dist/layout/coordinates/projections/fit.js +1 -1
  31. package/dist/layout/coordinates/resolveCameraTarget.d.ts +1 -1
  32. package/dist/layout/coordinates/resolveProjection.d.ts +1 -1
  33. package/dist/layout/coordinates/resolveProjection.js +2 -2
  34. package/dist/layout/coordinates/rotate.svelte.d.ts +3 -3
  35. package/dist/layout/coordinates/rotate.svelte.js +8 -8
  36. package/dist/layout/coordinates/zoom.svelte.d.ts +1 -1
  37. package/dist/layout/facet/FacetIndicator.svelte +23 -23
  38. package/dist/layout/facet/FacetLayout.svelte +435 -398
  39. package/dist/layout/facet/FacetLayout.svelte.d.ts +9 -3
  40. package/dist/layout/facet/axes.d.ts +16 -0
  41. package/dist/layout/facet/axes.js +25 -0
  42. package/dist/layout/facet/config.d.ts +32 -0
  43. package/dist/layout/facet/config.js +82 -0
  44. package/dist/layout/figure/Figure.svelte +177 -0
  45. package/dist/layout/figure/Figure.svelte.d.ts +14 -0
  46. package/dist/layout/figure/FigureChrome.svelte +341 -0
  47. package/dist/layout/figure/FigureChrome.svelte.d.ts +21 -0
  48. package/dist/layout/geometry/FrameClip.svelte +45 -0
  49. package/dist/layout/geometry/FrameClip.svelte.d.ts +8 -0
  50. package/dist/layout/geometry/FrameClipping.d.ts +24 -0
  51. package/dist/layout/geometry/FrameClipping.js +40 -0
  52. package/dist/layout/geometry/GeometryLayout.svelte +287 -224
  53. package/dist/layout/geometry/GeometryLayout.svelte.d.ts +10 -10
  54. package/dist/layout/grid/Grid.svelte +194 -0
  55. package/dist/layout/grid/Grid.svelte.d.ts +26 -0
  56. package/dist/layout/grid/GridAlignment.svelte.d.ts +31 -0
  57. package/dist/layout/grid/GridAlignment.svelte.js +56 -0
  58. package/dist/layout/grid/GridCell.svelte +141 -0
  59. package/dist/layout/grid/GridCell.svelte.d.ts +17 -0
  60. package/dist/layout/grid/GridCellsRegistry.svelte.d.ts +52 -0
  61. package/dist/layout/grid/GridCellsRegistry.svelte.js +70 -0
  62. package/dist/layout/grid/GridPlan.d.ts +49 -0
  63. package/dist/layout/grid/GridPlan.js +167 -0
  64. package/dist/layout/grid/Tags.d.ts +8 -0
  65. package/dist/layout/grid/Tags.js +39 -0
  66. package/dist/layout/hover/HoverScope.svelte +11 -0
  67. package/dist/layout/hover/HoverScope.svelte.d.ts +8 -0
  68. package/dist/layout/hover/HoverSettings.d.ts +20 -0
  69. package/dist/layout/hover/HoverSettings.js +27 -0
  70. package/dist/layout/hover/HoverState.svelte.d.ts +47 -0
  71. package/dist/layout/hover/HoverState.svelte.js +99 -0
  72. package/dist/layout/hover/PlotHover.svelte.d.ts +63 -0
  73. package/dist/layout/hover/PlotHover.svelte.js +133 -0
  74. package/dist/layout/interaction/PlotInteraction.svelte.d.ts +38 -0
  75. package/dist/layout/interaction/PlotInteraction.svelte.js +56 -0
  76. package/dist/layout/legend/AxisNumberFormat.d.ts +12 -0
  77. package/dist/layout/legend/AxisNumberFormat.js +25 -0
  78. package/dist/layout/legend/ContinuousSection.svelte +365 -335
  79. package/dist/layout/legend/DisabledStyle.d.ts +19 -0
  80. package/dist/layout/legend/DisabledStyle.js +57 -0
  81. package/dist/layout/legend/DiscreteBadgeItem.svelte +6 -3
  82. package/dist/layout/legend/DiscreteSection.svelte +39 -32
  83. package/dist/layout/legend/DiscreteSwatchItem.svelte +4 -1
  84. package/dist/layout/legend/DiscreteSymbolIcon.svelte +14 -9
  85. package/dist/layout/legend/LegendChannels.d.ts +21 -0
  86. package/dist/layout/legend/LegendChannels.js +221 -0
  87. package/dist/layout/legend/LegendLayout.svelte +49 -43
  88. package/dist/layout/legend/LegendState.svelte.d.ts +79 -0
  89. package/dist/layout/legend/LegendState.svelte.js +329 -0
  90. package/dist/layout/legend/LegendText.d.ts +12 -0
  91. package/dist/layout/legend/LegendText.js +22 -0
  92. package/dist/layout/legend/SizeSection.svelte +84 -0
  93. package/dist/layout/legend/SizeSection.svelte.d.ts +7 -0
  94. package/dist/layout/legend/SymbolSection.svelte +31 -0
  95. package/dist/layout/legend/SymbolSection.svelte.d.ts +8 -0
  96. package/dist/layout/margins/Box.d.ts +84 -0
  97. package/dist/layout/margins/Box.js +138 -0
  98. package/dist/layout/margins/Margins.d.ts +37 -0
  99. package/dist/layout/margins/Margins.js +71 -0
  100. package/dist/layout/margins/PlotMargins.svelte.d.ts +101 -0
  101. package/dist/layout/margins/PlotMargins.svelte.js +219 -0
  102. package/dist/layout/plot/Core.svelte +61 -0
  103. package/dist/layout/plot/Core.svelte.d.ts +41 -0
  104. package/dist/layout/plot/PanelRun.svelte +28 -0
  105. package/dist/{charts/heatmap/Chart.svelte.d.ts → layout/plot/PanelRun.svelte.d.ts} +11 -7
  106. package/dist/layout/plot/Plot.svelte +284 -0
  107. package/dist/layout/plot/Plot.svelte.d.ts +49 -0
  108. package/dist/layout/plot/PlotContext.d.ts +41 -0
  109. package/dist/layout/plot/PlotContext.js +46 -0
  110. package/dist/layout/plot/PublicPlotContext.d.ts +130 -0
  111. package/dist/layout/plot/PublicPlotContext.js +236 -0
  112. package/dist/layout/plot/Slice.d.ts +44 -0
  113. package/dist/layout/plot/Slice.js +98 -0
  114. package/dist/layout/plot/usePlot.d.ts +9 -0
  115. package/dist/layout/plot/usePlot.js +13 -0
  116. package/dist/layout/scales/ScalesLayout.svelte +241 -206
  117. package/dist/layout/scales/ScalesLayout.svelte.d.ts +2 -1
  118. package/dist/layout/scales/buildScale.d.ts +5 -22
  119. package/dist/layout/scales/buildScale.js +11 -34
  120. package/dist/layout/scales/niceDomain.d.ts +3 -3
  121. package/dist/layout/scales/niceDomain.js +4 -4
  122. package/dist/layout/styles/StylesLayout.svelte +65 -65
  123. package/dist/layout/styles/TileLayer.svelte +78 -76
  124. package/dist/layout/styles/TileLayer.svelte.d.ts +1 -1
  125. package/dist/layout/styles/ValueLabels.d.ts +97 -0
  126. package/dist/layout/styles/ValueLabels.js +237 -0
  127. package/dist/layout/timeline/Timeline.svelte +80 -74
  128. package/dist/layout/timeline/TimelineFrame.svelte +86 -0
  129. package/dist/layout/timeline/TimelineFrame.svelte.d.ts +16 -0
  130. package/dist/layout/timeline/TimelineLayout.svelte +114 -169
  131. package/dist/layout/timeline/TimelineLayout.svelte.d.ts +2 -0
  132. package/dist/layout/timeline/TimelinePlayer.svelte +195 -0
  133. package/dist/layout/timeline/TimelinePlayer.svelte.d.ts +7 -0
  134. package/dist/layout/timeline/TimelineRule.svelte +50 -0
  135. package/dist/layout/timeline/TimelineRule.svelte.d.ts +7 -0
  136. package/dist/layout/timeline/TimelineState.svelte.d.ts +82 -0
  137. package/dist/layout/timeline/TimelineState.svelte.js +226 -0
  138. package/dist/layout/timeline/TimelineSteps.d.ts +24 -0
  139. package/dist/layout/timeline/TimelineSteps.js +48 -0
  140. package/dist/layout/tooltip/Tooltip.svelte +82 -85
  141. package/dist/layout/tooltip/Tooltip.svelte.d.ts +43 -24
  142. package/dist/layout/tooltip/TooltipState.svelte.d.ts +61 -0
  143. package/dist/layout/tooltip/TooltipState.svelte.js +107 -0
  144. package/dist/markers/MarkerKinds.d.ts +173 -0
  145. package/dist/markers/MarkerKinds.js +51 -0
  146. package/dist/markers/area/AreaMarker.svelte +110 -0
  147. package/dist/markers/area/AreaMarker.svelte.d.ts +7 -0
  148. package/dist/markers/arrow/ArrowMarker.svelte +28 -0
  149. package/dist/markers/arrow/ArrowMarker.svelte.d.ts +7 -0
  150. package/dist/markers/{BarMarker.svelte → bar/BarMarker.svelte} +54 -52
  151. package/dist/markers/{BarMarker.svelte.d.ts → bar/BarMarker.svelte.d.ts} +1 -1
  152. package/dist/markers/bollinger/BollingerMarker.svelte +44 -0
  153. package/dist/markers/bollinger/BollingerMarker.svelte.d.ts +7 -0
  154. package/dist/markers/box/BoxMarker.svelte +143 -0
  155. package/dist/markers/box/BoxMarker.svelte.d.ts +7 -0
  156. package/dist/markers/brush/BrushMarker.svelte +32 -0
  157. package/dist/markers/brush/BrushMarker.svelte.d.ts +7 -0
  158. package/dist/markers/cell/CellMarker.svelte +27 -0
  159. package/dist/markers/{CellMarker.svelte.d.ts → cell/CellMarker.svelte.d.ts} +1 -1
  160. package/dist/markers/contour/ContourClipMarker.svelte +83 -0
  161. package/dist/markers/{ContourClipMarker.svelte.d.ts → contour/ContourClipMarker.svelte.d.ts} +1 -1
  162. package/dist/markers/contour/ContourMarker.svelte +28 -0
  163. package/dist/markers/{ContourMarker.svelte.d.ts → contour/ContourMarker.svelte.d.ts} +1 -1
  164. package/dist/markers/delaunay/DelaunayLinkMarker.svelte +26 -0
  165. package/dist/markers/delaunay/DelaunayLinkMarker.svelte.d.ts +7 -0
  166. package/dist/markers/delaunay/DelaunayMeshMarker.svelte +26 -0
  167. package/dist/markers/delaunay/DelaunayMeshMarker.svelte.d.ts +7 -0
  168. package/dist/markers/delta/Delta.d.ts +21 -0
  169. package/dist/markers/delta/Delta.js +60 -0
  170. package/dist/markers/delta/DeltaMarker.svelte +94 -0
  171. package/dist/markers/{DeltaMarker.svelte.d.ts → delta/DeltaMarker.svelte.d.ts} +2 -2
  172. package/dist/markers/density/DensityMarker.svelte +63 -0
  173. package/dist/markers/density/DensityMarker.svelte.d.ts +7 -0
  174. package/dist/markers/difference/DifferenceMarker.svelte +30 -0
  175. package/dist/markers/difference/DifferenceMarker.svelte.d.ts +7 -0
  176. package/dist/markers/dot/DotMarker.svelte +102 -0
  177. package/dist/markers/{DotMarker.svelte.d.ts → dot/DotMarker.svelte.d.ts} +5 -17
  178. package/dist/markers/geo/GeoFeaturesMarker.svelte +39 -0
  179. package/dist/markers/{GeoFeaturesMarker.svelte.d.ts → geo/GeoFeaturesMarker.svelte.d.ts} +1 -1
  180. package/dist/markers/geo/GeoHoverMarker.svelte +28 -0
  181. package/dist/markers/{GeoHoverMarker.svelte.d.ts → geo/GeoHoverMarker.svelte.d.ts} +2 -2
  182. package/dist/markers/geo/GraticuleMarker.svelte +18 -0
  183. package/dist/markers/{GraticuleMarker.svelte.d.ts → geo/GraticuleMarker.svelte.d.ts} +1 -1
  184. package/dist/markers/geo/SphereMarker.svelte +15 -0
  185. package/dist/markers/{SphereMarker.svelte.d.ts → geo/SphereMarker.svelte.d.ts} +1 -1
  186. package/dist/markers/hover/HoverMarker.svelte +252 -0
  187. package/dist/markers/{HoverMarker.svelte.d.ts → hover/HoverMarker.svelte.d.ts} +10 -10
  188. package/dist/markers/hull/HullMarker.svelte +25 -0
  189. package/dist/markers/hull/HullMarker.svelte.d.ts +7 -0
  190. package/dist/markers/image/ImageMarker.svelte +22 -0
  191. package/dist/markers/image/ImageMarker.svelte.d.ts +7 -0
  192. package/dist/markers/inset/InsetMarker.svelte +184 -150
  193. package/dist/markers/inset/InsetMarker.svelte.d.ts +4 -4
  194. package/dist/markers/inset/insetLayout.d.ts +1 -1
  195. package/dist/markers/inset/insetLayout.js +6 -2
  196. package/dist/markers/inset/insetProjection.d.ts +1 -1
  197. package/dist/markers/inset/insetProjection.js +3 -3
  198. package/dist/markers/line/LineMarker.svelte +30 -0
  199. package/dist/markers/{LineMarker.svelte.d.ts → line/LineMarker.svelte.d.ts} +1 -1
  200. package/dist/markers/link/LinkMarker.svelte +47 -0
  201. package/dist/markers/{LinkMarker.svelte.d.ts → link/LinkMarker.svelte.d.ts} +1 -1
  202. package/dist/markers/raster/RasterMarker.svelte +31 -0
  203. package/dist/markers/raster/RasterMarker.svelte.d.ts +7 -0
  204. package/dist/markers/rect/RectMarker.svelte +62 -0
  205. package/dist/markers/rect/RectMarker.svelte.d.ts +7 -0
  206. package/dist/markers/regression/RegressionMarker.svelte +60 -0
  207. package/dist/markers/regression/RegressionMarker.svelte.d.ts +7 -0
  208. package/dist/markers/rule/RuleMarker.svelte +47 -0
  209. package/dist/markers/{RuleMarker.svelte.d.ts → rule/RuleMarker.svelte.d.ts} +2 -5
  210. package/dist/markers/text/Declutter.d.ts +35 -0
  211. package/dist/markers/text/Declutter.js +157 -0
  212. package/dist/markers/text/TextMarker.svelte +244 -0
  213. package/dist/markers/{TextMarker.svelte.d.ts → text/TextMarker.svelte.d.ts} +5 -9
  214. package/dist/markers/tick/TickMarker.svelte +44 -0
  215. package/dist/markers/tick/TickMarker.svelte.d.ts +7 -0
  216. package/dist/markers/trail/TrailMarker.svelte +27 -0
  217. package/dist/markers/trail/TrailMarker.svelte.d.ts +7 -0
  218. package/dist/markers/utils/BandNudge.d.ts +22 -0
  219. package/dist/markers/utils/BandNudge.js +23 -0
  220. package/dist/markers/utils/MarkerChannels.d.ts +49 -0
  221. package/dist/markers/utils/MarkerChannels.js +97 -0
  222. package/dist/markers/vector/VectorMarker.svelte +29 -0
  223. package/dist/markers/{VectorMarker.svelte.d.ts → vector/VectorMarker.svelte.d.ts} +1 -1
  224. package/dist/markers/voronoi/VoronoiMarker.svelte +26 -0
  225. package/dist/markers/voronoi/VoronoiMarker.svelte.d.ts +7 -0
  226. package/dist/markers/voronoi/VoronoiMeshMarker.svelte +26 -0
  227. package/dist/markers/voronoi/VoronoiMeshMarker.svelte.d.ts +7 -0
  228. package/dist/markers/waffle/WaffleMarker.svelte +56 -0
  229. package/dist/markers/waffle/WaffleMarker.svelte.d.ts +7 -0
  230. package/dist/phases/Pipeline.d.ts +108 -0
  231. package/dist/phases/Pipeline.js +226 -0
  232. package/dist/phases/data/DataPhase.d.ts +25 -0
  233. package/dist/phases/data/DataPhase.js +82 -0
  234. package/dist/phases/data/PlotAxes.d.ts +75 -0
  235. package/dist/phases/data/PlotAxes.js +151 -0
  236. package/dist/phases/facet/FacetPhase.d.ts +52 -0
  237. package/dist/phases/facet/FacetPhase.js +114 -0
  238. package/dist/phases/hover/HoverPhase.d.ts +73 -0
  239. package/dist/phases/hover/HoverPhase.js +144 -0
  240. package/dist/phases/mapping/MappingPhase.d.ts +17 -0
  241. package/dist/phases/mapping/MappingPhase.js +42 -0
  242. package/dist/phases/markers/MarkersPhase.d.ts +14 -0
  243. package/dist/phases/markers/MarkersPhase.js +27 -0
  244. package/dist/phases/scales/MarkerAxisValues.d.ts +12 -0
  245. package/dist/phases/scales/MarkerAxisValues.js +34 -0
  246. package/dist/phases/scales/ScalesPhase.d.ts +31 -0
  247. package/dist/phases/scales/ScalesPhase.js +157 -0
  248. package/dist/phases/sharedScales/SharedScalesPhase.d.ts +55 -0
  249. package/dist/phases/sharedScales/SharedScalesPhase.js +168 -0
  250. package/dist/phases/statistics/AuthorMarkers.d.ts +43 -0
  251. package/dist/phases/statistics/AuthorMarkers.js +69 -0
  252. package/dist/phases/statistics/MarkerGrouping.d.ts +48 -0
  253. package/dist/phases/statistics/MarkerGrouping.js +113 -0
  254. package/dist/phases/statistics/Statistics.d.ts +53 -0
  255. package/dist/phases/statistics/Statistics.js +156 -0
  256. package/dist/phases/statistics/StatisticsPhase.d.ts +18 -0
  257. package/dist/phases/statistics/StatisticsPhase.js +68 -0
  258. package/dist/phases/statistics/methods/BollingerStatistic.d.ts +9 -0
  259. package/dist/phases/statistics/methods/BollingerStatistic.js +18 -0
  260. package/dist/phases/statistics/methods/BoxStatistic.d.ts +9 -0
  261. package/dist/phases/statistics/methods/BoxStatistic.js +18 -0
  262. package/dist/phases/statistics/methods/Density2dStatistic.d.ts +9 -0
  263. package/dist/phases/statistics/methods/Density2dStatistic.js +18 -0
  264. package/dist/phases/statistics/methods/DensityStatistic.d.ts +12 -0
  265. package/dist/phases/statistics/methods/DensityStatistic.js +29 -0
  266. package/dist/phases/statistics/methods/MovingAverageStatistic.d.ts +12 -0
  267. package/dist/phases/statistics/methods/MovingAverageStatistic.js +30 -0
  268. package/dist/phases/statistics/methods/RegressionStatistic.d.ts +9 -0
  269. package/dist/phases/statistics/methods/RegressionStatistic.js +21 -0
  270. package/dist/phases/styles/StylesPhase.d.ts +13 -0
  271. package/dist/phases/styles/StylesPhase.js +17 -0
  272. package/dist/phases/tooltip/TooltipPhase.d.ts +12 -0
  273. package/dist/phases/tooltip/TooltipPhase.js +10 -0
  274. package/dist/phases/transforms/Transforms.d.ts +42 -0
  275. package/dist/phases/transforms/Transforms.js +130 -0
  276. package/dist/phases/transforms/TransformsPhase.d.ts +64 -0
  277. package/dist/phases/transforms/TransformsPhase.js +242 -0
  278. package/dist/phases/transforms/methods/AnchorBar.d.ts +13 -0
  279. package/dist/phases/transforms/methods/AnchorBar.js +21 -0
  280. package/dist/phases/transforms/methods/BinTransform.d.ts +7 -0
  281. package/dist/phases/transforms/methods/BinTransform.js +48 -0
  282. package/dist/phases/transforms/methods/DensityTransform.d.ts +6 -0
  283. package/dist/phases/transforms/methods/DensityTransform.js +13 -0
  284. package/dist/phases/transforms/methods/GroupTransform.d.ts +8 -0
  285. package/dist/phases/transforms/methods/GroupTransform.js +39 -0
  286. package/dist/phases/transforms/methods/NormalizeTransform.d.ts +10 -0
  287. package/dist/phases/transforms/methods/NormalizeTransform.js +30 -0
  288. package/dist/phases/transforms/methods/OrderTransform.d.ts +16 -0
  289. package/dist/phases/transforms/methods/OrderTransform.js +43 -0
  290. package/dist/phases/transforms/methods/PerGroup.d.ts +11 -0
  291. package/dist/phases/transforms/methods/PerGroup.js +39 -0
  292. package/dist/phases/transforms/methods/PositionTransform.d.ts +15 -0
  293. package/dist/phases/transforms/methods/PositionTransform.js +74 -0
  294. package/dist/phases/transforms/methods/StackTransform.d.ts +8 -0
  295. package/dist/phases/transforms/methods/StackTransform.js +29 -0
  296. package/dist/phases/transforms/methods/WindowTransform.d.ts +8 -0
  297. package/dist/phases/transforms/methods/WindowTransform.js +23 -0
  298. package/dist/plots/area/Plot.svelte +42 -0
  299. package/dist/plots/{heatmap/ValueLabels.svelte.d.ts → area/Plot.svelte.d.ts} +8 -16
  300. package/dist/plots/area/defaults.d.ts +4 -0
  301. package/dist/plots/area/defaults.js +21 -0
  302. package/dist/plots/area/markers.d.ts +14 -0
  303. package/dist/plots/area/markers.js +40 -0
  304. package/dist/plots/bar/Plot.svelte +33 -438
  305. package/dist/plots/bar/Plot.svelte.d.ts +5 -8
  306. package/dist/plots/bar/defaults.d.ts +9 -0
  307. package/dist/plots/bar/defaults.js +92 -0
  308. package/dist/plots/bar/markers.d.ts +45 -0
  309. package/dist/plots/bar/markers.js +232 -0
  310. package/dist/plots/geo/Core.svelte +151 -0
  311. package/dist/plots/geo/Core.svelte.d.ts +25 -0
  312. package/dist/plots/geo/Plot.svelte +103 -324
  313. package/dist/plots/geo/Plot.svelte.d.ts +5 -9
  314. package/dist/plots/geo/defaults.d.ts +4 -0
  315. package/dist/plots/geo/defaults.js +16 -0
  316. package/dist/plots/geo/features.svelte.d.ts +5 -0
  317. package/dist/plots/geo/features.svelte.js +44 -0
  318. package/dist/plots/geo/phases/data.d.ts +6 -0
  319. package/dist/plots/geo/phases/data.js +26 -0
  320. package/dist/plots/geo/phases/hover.d.ts +9 -0
  321. package/dist/plots/geo/phases/hover.js +45 -0
  322. package/dist/plots/geo/phases/markers.d.ts +9 -0
  323. package/dist/plots/geo/phases/markers.js +76 -0
  324. package/dist/plots/geo/phases/scales.d.ts +10 -0
  325. package/dist/plots/geo/phases/scales.js +85 -0
  326. package/dist/plots/geo/phases/tooltip.d.ts +3 -0
  327. package/dist/plots/geo/phases/tooltip.js +5 -0
  328. package/dist/plots/geo/slices.d.ts +18 -0
  329. package/dist/plots/geo/slices.js +56 -0
  330. package/dist/plots/heatmap/Plot.svelte +55 -249
  331. package/dist/plots/heatmap/Plot.svelte.d.ts +5 -8
  332. package/dist/plots/heatmap/defaults.d.ts +11 -0
  333. package/dist/plots/heatmap/defaults.js +91 -0
  334. package/dist/plots/heatmap/markers.d.ts +17 -0
  335. package/dist/plots/heatmap/markers.js +141 -0
  336. package/dist/plots/histogram/Plot.svelte +45 -0
  337. package/dist/plots/histogram/Plot.svelte.d.ts +26 -0
  338. package/dist/plots/histogram/defaults.d.ts +9 -0
  339. package/dist/plots/histogram/defaults.js +87 -0
  340. package/dist/plots/histogram/markers.d.ts +18 -0
  341. package/dist/plots/histogram/markers.js +89 -0
  342. package/dist/plots/line/Plot.svelte +37 -268
  343. package/dist/plots/line/Plot.svelte.d.ts +3 -7
  344. package/dist/plots/line/defaults.d.ts +4 -0
  345. package/dist/plots/line/defaults.js +29 -0
  346. package/dist/plots/line/markers.d.ts +49 -0
  347. package/dist/plots/line/markers.js +200 -0
  348. package/dist/plots/pyramid/Plot.svelte +34 -362
  349. package/dist/plots/pyramid/Plot.svelte.d.ts +5 -8
  350. package/dist/plots/pyramid/defaults.d.ts +13 -0
  351. package/dist/plots/pyramid/defaults.js +86 -0
  352. package/dist/plots/pyramid/markers.d.ts +21 -0
  353. package/dist/plots/pyramid/markers.js +159 -0
  354. package/dist/plots/scatter/Plot.svelte +34 -288
  355. package/dist/plots/scatter/Plot.svelte.d.ts +5 -8
  356. package/dist/plots/scatter/defaults.d.ts +4 -0
  357. package/dist/plots/scatter/defaults.js +79 -0
  358. package/dist/plots/scatter/markers.d.ts +19 -0
  359. package/dist/plots/scatter/markers.js +128 -0
  360. package/dist/plots/utils/ChannelName.d.ts +9 -0
  361. package/dist/plots/utils/ChannelName.js +14 -0
  362. package/dist/plots/utils/accessors.d.ts +1 -1
  363. package/dist/plots/utils/accessors.js +4 -2
  364. package/dist/plots/utils/gaps.d.ts +14 -19
  365. package/dist/plots/utils/gaps.js +38 -18
  366. package/dist/plots/utils/geoAccessors.d.ts +8 -8
  367. package/dist/plots/utils/geoAccessors.js +16 -12
  368. package/dist/plots/utils/geoSegments.d.ts +24 -9
  369. package/dist/plots/utils/geoSegments.js +31 -11
  370. package/dist/plots/utils/segments.d.ts +5 -16
  371. package/dist/plots/utils/segments.js +40 -52
  372. package/dist/plots/utils/tiles.d.ts +9 -9
  373. package/dist/plots/utils/tiles.js +35 -25
  374. package/dist/plots/utils/topojson.d.ts +1 -1
  375. package/dist/plots/utils/topojson.js +3 -3
  376. package/dist/stores/device.js +2 -4
  377. package/dist/types/configuration/styling.d.ts +158 -27
  378. package/dist/types/layout/box.d.ts +24 -0
  379. package/dist/types/layout/composer.d.ts +36 -0
  380. package/dist/types/layout/coordinates.d.ts +14 -14
  381. package/dist/types/layout/facet.d.ts +44 -22
  382. package/dist/types/layout/figure.d.ts +7 -0
  383. package/dist/types/layout/geometry.d.ts +6 -2
  384. package/dist/types/layout/grid.d.ts +66 -0
  385. package/dist/types/layout/hover.d.ts +48 -0
  386. package/dist/types/layout/legend.d.ts +258 -54
  387. package/dist/types/layout/mapping.d.ts +68 -0
  388. package/dist/types/layout/plot.d.ts +41 -0
  389. package/dist/types/layout/scales.d.ts +92 -24
  390. package/dist/types/layout/scales.js +19 -1
  391. package/dist/types/layout/statistics/bollinger.d.ts +18 -0
  392. package/dist/types/layout/statistics/box.d.ts +8 -0
  393. package/dist/types/layout/statistics/box.js +1 -0
  394. package/dist/types/layout/statistics/density.d.ts +27 -0
  395. package/dist/types/layout/statistics/density.js +1 -0
  396. package/dist/types/layout/statistics/index.d.ts +46 -0
  397. package/dist/types/layout/statistics/index.js +1 -0
  398. package/dist/types/layout/statistics/movingAverage.d.ts +12 -0
  399. package/dist/types/layout/statistics/movingAverage.js +1 -0
  400. package/dist/types/layout/statistics/regression.d.ts +20 -0
  401. package/dist/types/layout/statistics/regression.js +1 -0
  402. package/dist/types/layout/styles.d.ts +24 -35
  403. package/dist/types/layout/timeline.d.ts +51 -4
  404. package/dist/types/layout/tooltip.d.ts +7 -85
  405. package/dist/types/markers/all.d.ts +3 -4
  406. package/dist/types/markers/axis/area.d.ts +12 -0
  407. package/dist/types/markers/axis/area.js +1 -0
  408. package/dist/types/markers/axis/arrow.d.ts +15 -0
  409. package/dist/types/markers/axis/arrow.js +1 -0
  410. package/dist/types/markers/axis/axisBasedMarkersConfig.d.ts +29 -0
  411. package/dist/types/markers/axis/axisBasedMarkersConfig.js +1 -0
  412. package/dist/types/markers/axis/bar.d.ts +18 -0
  413. package/dist/types/markers/axis/bar.js +1 -0
  414. package/dist/types/markers/axis/bollinger.d.ts +6 -0
  415. package/dist/types/markers/axis/bollinger.js +1 -0
  416. package/dist/types/markers/axis/box.d.ts +14 -0
  417. package/dist/types/markers/axis/box.js +1 -0
  418. package/dist/types/markers/axis/brush.d.ts +28 -0
  419. package/dist/types/markers/axis/brush.js +1 -0
  420. package/dist/types/markers/axis/cell.d.ts +9 -0
  421. package/dist/types/markers/axis/cell.js +1 -0
  422. package/dist/types/markers/axis/component.d.ts +9 -0
  423. package/dist/types/markers/axis/component.js +1 -0
  424. package/dist/types/markers/axis/curveName.d.ts +2 -0
  425. package/dist/types/markers/axis/curveName.js +1 -0
  426. package/dist/types/markers/axis/delaunayLink.d.ts +7 -0
  427. package/dist/types/markers/axis/delaunayLink.js +1 -0
  428. package/dist/types/markers/axis/delaunayMesh.d.ts +7 -0
  429. package/dist/types/markers/axis/delaunayMesh.js +1 -0
  430. package/dist/types/markers/axis/delta.d.ts +27 -0
  431. package/dist/types/markers/axis/delta.js +1 -0
  432. package/dist/types/markers/axis/density.d.ts +12 -0
  433. package/dist/types/markers/axis/density.js +1 -0
  434. package/dist/types/markers/axis/difference.d.ts +12 -0
  435. package/dist/types/markers/axis/difference.js +1 -0
  436. package/dist/types/markers/axis/hover.d.ts +21 -0
  437. package/dist/types/markers/axis/hover.js +1 -0
  438. package/dist/types/markers/axis/hull.d.ts +7 -0
  439. package/dist/types/markers/axis/hull.js +1 -0
  440. package/dist/types/markers/axis/image.d.ts +12 -0
  441. package/dist/types/markers/axis/image.js +1 -0
  442. package/dist/types/markers/axis/line.d.ts +7 -0
  443. package/dist/types/markers/axis/line.js +1 -0
  444. package/dist/types/markers/axis/raster.d.ts +18 -0
  445. package/dist/types/markers/axis/raster.js +1 -0
  446. package/dist/types/markers/axis/rect.d.ts +15 -0
  447. package/dist/types/markers/axis/rect.js +1 -0
  448. package/dist/types/markers/axis/regression.d.ts +6 -0
  449. package/dist/types/markers/axis/regression.js +1 -0
  450. package/dist/types/markers/axis/rule.d.ts +15 -0
  451. package/dist/types/markers/axis/rule.js +1 -0
  452. package/dist/types/markers/axis/tick.d.ts +8 -0
  453. package/dist/types/markers/axis/tick.js +1 -0
  454. package/dist/types/markers/axis/trail.d.ts +14 -0
  455. package/dist/types/markers/axis/trail.js +1 -0
  456. package/dist/types/markers/axis/voronoi.d.ts +7 -0
  457. package/dist/types/markers/axis/voronoi.js +1 -0
  458. package/dist/types/markers/axis/voronoiMesh.d.ts +7 -0
  459. package/dist/types/markers/axis/voronoiMesh.js +1 -0
  460. package/dist/types/markers/axis/waffle.d.ts +13 -0
  461. package/dist/types/markers/axis/waffle.js +1 -0
  462. package/dist/types/markers/basic/basicMarkersConfig.d.ts +4 -0
  463. package/dist/types/markers/basic/basicMarkersConfig.js +1 -0
  464. package/dist/types/markers/basic/dot.d.ts +9 -0
  465. package/dist/types/markers/basic/dot.js +1 -0
  466. package/dist/types/markers/basic/text.d.ts +60 -0
  467. package/dist/types/markers/basic/text.js +1 -0
  468. package/dist/types/markers/basic.d.ts +4 -0
  469. package/dist/types/markers/basic.js +1 -0
  470. package/dist/types/markers/channels/commonMarkerConfig.d.ts +26 -0
  471. package/dist/types/markers/channels/commonMarkerConfig.js +1 -0
  472. package/dist/types/markers/channels/commonMarkerConfigWithArea.d.ts +6 -0
  473. package/dist/types/markers/channels/commonMarkerConfigWithArea.js +1 -0
  474. package/dist/types/markers/channels/commonMarkerConfigWithColor.d.ts +5 -0
  475. package/dist/types/markers/channels/commonMarkerConfigWithColor.js +1 -0
  476. package/dist/types/markers/channels/commonMarkerConfigWithInterval.d.ts +9 -0
  477. package/dist/types/markers/channels/commonMarkerConfigWithInterval.js +1 -0
  478. package/dist/types/markers/channels/commonMarkerConfigWithRadius.d.ts +5 -0
  479. package/dist/types/markers/channels/commonMarkerConfigWithRadius.js +1 -0
  480. package/dist/types/markers/channels/commonMarkerConfigWithSymbol.d.ts +5 -0
  481. package/dist/types/markers/channels/commonMarkerConfigWithSymbol.js +1 -0
  482. package/dist/types/markers/channels/commonMarkerConfigWithWeight.d.ts +5 -0
  483. package/dist/types/markers/channels/commonMarkerConfigWithWeight.js +1 -0
  484. package/dist/types/markers/common.d.ts +30 -103
  485. package/dist/types/markers/common.js +29 -1
  486. package/dist/types/markers/geo/contour.d.ts +27 -0
  487. package/dist/types/markers/geo/contour.js +1 -0
  488. package/dist/types/markers/geo/features.d.ts +12 -0
  489. package/dist/types/markers/geo/features.js +1 -0
  490. package/dist/types/markers/geo/geoComponent.d.ts +7 -0
  491. package/dist/types/markers/geo/geoComponent.js +1 -0
  492. package/dist/types/markers/geo/geoHover.d.ts +6 -0
  493. package/dist/types/markers/geo/geoHover.js +1 -0
  494. package/dist/types/markers/geo/geoMarkersConfig.d.ts +11 -0
  495. package/dist/types/markers/geo/geoMarkersConfig.js +1 -0
  496. package/dist/types/markers/geo/graticule.d.ts +11 -0
  497. package/dist/types/markers/geo/graticule.js +1 -0
  498. package/dist/types/markers/geo/inset.d.ts +50 -0
  499. package/dist/types/markers/geo/inset.js +1 -0
  500. package/dist/types/markers/geo/link.d.ts +13 -0
  501. package/dist/types/markers/geo/link.js +1 -0
  502. package/dist/types/markers/geo/sphere.d.ts +11 -0
  503. package/dist/types/markers/geo/sphere.js +1 -0
  504. package/dist/types/markers/geo/vector.d.ts +17 -0
  505. package/dist/types/markers/geo/vector.js +1 -0
  506. package/dist/types/markers/geo.d.ts +10 -212
  507. package/dist/types/markers/geo.js +10 -1
  508. package/dist/types/markers/traits.d.ts +22 -0
  509. package/dist/types/markers/traits.js +1 -0
  510. package/dist/types/misc/easing.js +1 -0
  511. package/dist/types/misc/viewport.js +1 -0
  512. package/dist/types/phases/data/axes.d.ts +18 -0
  513. package/dist/types/phases/data/axes.js +1 -0
  514. package/dist/types/phases/data/phase.d.ts +26 -0
  515. package/dist/types/phases/data/phase.js +2 -0
  516. package/dist/types/phases/facet/phase.d.ts +18 -0
  517. package/dist/types/phases/facet/phase.js +1 -0
  518. package/dist/types/phases/hover/phase.d.ts +34 -0
  519. package/dist/types/phases/hover/phase.js +1 -0
  520. package/dist/types/phases/index.d.ts +14 -0
  521. package/dist/types/phases/index.js +1 -0
  522. package/dist/types/phases/kind.d.ts +59 -0
  523. package/dist/types/phases/kind.js +1 -0
  524. package/dist/types/phases/mapping/phase.d.ts +5 -0
  525. package/dist/types/phases/mapping/phase.js +1 -0
  526. package/dist/types/phases/markers/phase.d.ts +13 -0
  527. package/dist/types/phases/markers/phase.js +1 -0
  528. package/dist/types/phases/pipeline.d.ts +10 -0
  529. package/dist/types/phases/pipeline.js +1 -0
  530. package/dist/types/phases/scales/phase.d.ts +26 -0
  531. package/dist/types/phases/scales/phase.js +1 -0
  532. package/dist/types/phases/sharedScales/phase.d.ts +12 -0
  533. package/dist/types/phases/sharedScales/phase.js +1 -0
  534. package/dist/types/phases/stage.d.ts +12 -0
  535. package/dist/types/phases/stage.js +1 -0
  536. package/dist/types/phases/state.d.ts +73 -0
  537. package/dist/types/phases/state.js +1 -0
  538. package/dist/types/phases/statistics/phase.d.ts +41 -0
  539. package/dist/types/phases/statistics/phase.js +1 -0
  540. package/dist/types/phases/statistics/source.d.ts +20 -0
  541. package/dist/types/phases/statistics/source.js +7 -0
  542. package/dist/types/phases/styles/phase.d.ts +24 -0
  543. package/dist/types/phases/styles/phase.js +1 -0
  544. package/dist/types/phases/transforms/adapter.d.ts +27 -0
  545. package/dist/types/phases/transforms/adapter.js +1 -0
  546. package/dist/types/phases/transforms/phase.d.ts +40 -0
  547. package/dist/types/phases/transforms/phase.js +1 -0
  548. package/dist/types/plots/area/props.d.ts +10 -0
  549. package/dist/types/plots/area/props.js +1 -0
  550. package/dist/types/plots/area/state.d.ts +6 -0
  551. package/dist/types/plots/area/state.js +1 -0
  552. package/dist/types/plots/bar/props.d.ts +10 -0
  553. package/dist/types/plots/bar/props.js +1 -0
  554. package/dist/types/plots/bar/state.d.ts +6 -0
  555. package/dist/types/plots/bar/state.js +1 -0
  556. package/dist/types/plots/camera.d.ts +7 -17
  557. package/dist/types/plots/constants.d.ts +16 -8
  558. package/dist/types/plots/data/common.d.ts +25 -17
  559. package/dist/types/plots/data/geo.d.ts +26 -12
  560. package/dist/types/plots/gaps.d.ts +19 -38
  561. package/dist/types/plots/geo/props.d.ts +23 -0
  562. package/dist/types/plots/geo/props.js +1 -0
  563. package/dist/types/plots/geo/state.d.ts +82 -0
  564. package/dist/types/plots/geo/state.js +1 -0
  565. package/dist/types/plots/heatmap/props.d.ts +10 -0
  566. package/dist/types/plots/heatmap/props.js +1 -0
  567. package/dist/types/plots/heatmap/state.d.ts +28 -0
  568. package/dist/types/plots/heatmap/state.js +1 -0
  569. package/dist/types/plots/histogram/props.d.ts +18 -0
  570. package/dist/types/plots/histogram/props.js +1 -0
  571. package/dist/types/plots/histogram/state.d.ts +6 -0
  572. package/dist/types/plots/histogram/state.js +1 -0
  573. package/dist/types/plots/line/props.d.ts +10 -0
  574. package/dist/types/plots/line/props.js +1 -0
  575. package/dist/types/plots/line/state.d.ts +9 -0
  576. package/dist/types/plots/line/state.js +1 -0
  577. package/dist/types/plots/props.d.ts +143 -35
  578. package/dist/types/plots/pyramid/props.d.ts +10 -0
  579. package/dist/types/plots/pyramid/props.js +1 -0
  580. package/dist/types/plots/pyramid/state.d.ts +16 -0
  581. package/dist/types/plots/pyramid/state.js +1 -0
  582. package/dist/types/plots/scatter/props.d.ts +10 -0
  583. package/dist/types/plots/scatter/props.js +1 -0
  584. package/dist/types/plots/scatter/state.d.ts +6 -0
  585. package/dist/types/plots/scatter/state.js +1 -0
  586. package/dist/types/plots/segments/common.d.ts +1 -1
  587. package/dist/types/plots/segments/config.d.ts +12 -6
  588. package/dist/types/plots/styling.d.ts +5 -5
  589. package/dist/types/transforms/bin.d.ts +84 -0
  590. package/dist/types/transforms/bin.js +28 -0
  591. package/dist/types/transforms/bollinger.d.ts +21 -0
  592. package/dist/types/transforms/bollinger.js +1 -0
  593. package/dist/types/transforms/common.d.ts +29 -0
  594. package/dist/types/transforms/common.js +16 -0
  595. package/dist/types/transforms/density.d.ts +45 -0
  596. package/dist/types/transforms/density.js +10 -0
  597. package/dist/types/transforms/filter.d.ts +12 -0
  598. package/dist/types/transforms/filter.js +14 -0
  599. package/dist/types/transforms/group.d.ts +70 -0
  600. package/dist/types/transforms/group.js +8 -0
  601. package/dist/types/transforms/index.d.ts +36 -0
  602. package/dist/types/transforms/index.js +1 -0
  603. package/dist/types/transforms/interval.d.ts +21 -0
  604. package/dist/types/transforms/interval.js +14 -0
  605. package/dist/types/transforms/jitter.d.ts +34 -0
  606. package/dist/types/transforms/jitter.js +1 -0
  607. package/dist/types/transforms/map.d.ts +24 -0
  608. package/dist/types/transforms/map.js +1 -0
  609. package/dist/types/transforms/normalize.d.ts +36 -0
  610. package/dist/types/transforms/normalize.js +1 -0
  611. package/dist/types/transforms/select.d.ts +15 -0
  612. package/dist/types/transforms/select.js +1 -0
  613. package/dist/types/transforms/shift.d.ts +20 -0
  614. package/dist/types/transforms/shift.js +1 -0
  615. package/dist/types/transforms/sort.d.ts +31 -0
  616. package/dist/types/transforms/sort.js +14 -0
  617. package/dist/types/transforms/stack.d.ts +64 -0
  618. package/dist/types/transforms/stack.js +12 -0
  619. package/dist/types/transforms/window.d.ts +29 -0
  620. package/dist/types/transforms/window.js +1 -0
  621. package/dist/utils/ContinuousDomain.d.ts +12 -0
  622. package/dist/utils/ContinuousDomain.js +19 -0
  623. package/dist/utils/Interpolation.d.ts +26 -0
  624. package/dist/utils/Interpolation.js +65 -0
  625. package/dist/utils/{color.d.ts → color/contrast.d.ts} +0 -5
  626. package/dist/utils/color/contrast.js +40 -0
  627. package/dist/utils/color/cssColor.d.ts +4 -0
  628. package/dist/utils/color/cssColor.js +77 -0
  629. package/dist/utils/color/index.d.ts +3 -0
  630. package/dist/utils/color/index.js +3 -0
  631. package/dist/utils/color/ramp.d.ts +17 -0
  632. package/dist/utils/color/ramp.js +110 -0
  633. package/dist/utils/grouping.d.ts +9 -5
  634. package/dist/utils/grouping.js +19 -10
  635. package/dist/utils/merge.d.ts +7 -0
  636. package/dist/utils/merge.js +17 -0
  637. package/dist/utils/opacity.d.ts +9 -0
  638. package/dist/utils/opacity.js +38 -0
  639. package/dist/utils/symbol.d.ts +31 -0
  640. package/dist/utils/symbol.js +92 -0
  641. package/docs/architecture.md +137 -0
  642. package/docs/chrome.md +68 -0
  643. package/docs/composer.md +53 -0
  644. package/docs/concepts.md +99 -0
  645. package/docs/development.md +94 -0
  646. package/docs/facets.md +69 -0
  647. package/docs/geo.md +151 -0
  648. package/docs/getting-started.md +79 -0
  649. package/docs/legend.md +106 -0
  650. package/docs/markers.md +106 -0
  651. package/docs/plots.md +158 -0
  652. package/docs/scales.md +78 -0
  653. package/docs/state.md +71 -0
  654. package/docs/styles-and-segments.md +215 -0
  655. package/docs/theming.md +215 -0
  656. package/docs/timeline.md +94 -0
  657. package/docs/tooltip-and-hover.md +80 -0
  658. package/docs/transforms-and-statistics.md +88 -0
  659. package/examples/BarValues.svelte +14 -0
  660. package/examples/CustomTooltip.svelte +37 -0
  661. package/examples/Facets.svelte +15 -0
  662. package/examples/LegendReader.svelte +8 -0
  663. package/examples/LegendToggle.svelte +25 -0
  664. package/examples/ResponsiveLine.svelte +37 -0
  665. package/examples/Segments.svelte +17 -0
  666. package/examples/TimelinePlayer.svelte +20 -0
  667. package/examples/Tooltip.svelte +19 -0
  668. package/examples/TooltipCard.svelte +86 -0
  669. package/examples/data.ts +12 -0
  670. package/llms-full.txt +114 -0
  671. package/llms.txt +49 -0
  672. package/package.json +41 -5
  673. package/dist/charts/BaseChart.svelte +0 -149
  674. package/dist/charts/BaseChart.svelte.d.ts +0 -47
  675. package/dist/charts/bar/Chart.svelte +0 -110
  676. package/dist/charts/bar/Chart.svelte.d.ts +0 -26
  677. package/dist/charts/container/ChartContainer.svelte +0 -137
  678. package/dist/charts/container/ChartContainer.svelte.d.ts +0 -16
  679. package/dist/charts/heatmap/Chart.svelte +0 -114
  680. package/dist/charts/line/Chart.svelte +0 -112
  681. package/dist/charts/line/Chart.svelte.d.ts +0 -26
  682. package/dist/charts/pyramid/Chart.svelte +0 -134
  683. package/dist/charts/pyramid/Chart.svelte.d.ts +0 -30
  684. package/dist/charts/scatter/Chart.svelte +0 -95
  685. package/dist/charts/scatter/Chart.svelte.d.ts +0 -28
  686. package/dist/layout/coordinates/margins.d.ts +0 -16
  687. package/dist/layout/coordinates/margins.js +0 -11
  688. package/dist/layout/legend/interaction.svelte.d.ts +0 -15
  689. package/dist/layout/legend/interaction.svelte.js +0 -32
  690. package/dist/layout/plot/BasePlotLayout.svelte +0 -332
  691. package/dist/layout/plot/BasePlotLayout.svelte.d.ts +0 -122
  692. package/dist/layout/plot/margins.d.ts +0 -18
  693. package/dist/layout/plot/margins.js +0 -15
  694. package/dist/layout/plot/measureText.d.ts +0 -4
  695. package/dist/layout/plot/measureText.js +0 -19
  696. package/dist/layout/tooltip/TooltipLayout.svelte +0 -51
  697. package/dist/layout/tooltip/TooltipLayout.svelte.d.ts +0 -45
  698. package/dist/layout/tooltip/controller.svelte.d.ts +0 -61
  699. package/dist/layout/tooltip/controller.svelte.js +0 -173
  700. package/dist/layout/tooltip/hover.svelte.d.ts +0 -7
  701. package/dist/layout/tooltip/hover.svelte.js +0 -28
  702. package/dist/layout/tooltip/resolveTooltipPlacement.d.ts +0 -24
  703. package/dist/layout/tooltip/resolveTooltipPlacement.js +0 -49
  704. package/dist/layout/tooltip/utils.d.ts +0 -49
  705. package/dist/layout/tooltip/utils.js +0 -82
  706. package/dist/markers/CellMarker.svelte +0 -21
  707. package/dist/markers/ContourClipMarker.svelte +0 -77
  708. package/dist/markers/ContourMarker.svelte +0 -28
  709. package/dist/markers/DeltaMarker.svelte +0 -109
  710. package/dist/markers/DotMarker.svelte +0 -70
  711. package/dist/markers/GeoFeaturesMarker.svelte +0 -19
  712. package/dist/markers/GeoHoverMarker.svelte +0 -25
  713. package/dist/markers/GraticuleMarker.svelte +0 -18
  714. package/dist/markers/HoverMarker.svelte +0 -212
  715. package/dist/markers/LineMarker.svelte +0 -19
  716. package/dist/markers/LinkMarker.svelte +0 -42
  717. package/dist/markers/PeakMarker.svelte +0 -80
  718. package/dist/markers/PeakMarker.svelte.d.ts +0 -13
  719. package/dist/markers/RuleMarker.svelte +0 -24
  720. package/dist/markers/SphereMarker.svelte +0 -15
  721. package/dist/markers/TextMarker.svelte +0 -62
  722. package/dist/markers/VectorMarker.svelte +0 -20
  723. package/dist/plots/bar/ValueLabels.svelte +0 -149
  724. package/dist/plots/bar/ValueLabels.svelte.d.ts +0 -58
  725. package/dist/plots/bar/buildBarMarkers.d.ts +0 -27
  726. package/dist/plots/bar/buildBarMarkers.js +0 -151
  727. package/dist/plots/bar/hoverPoints.d.ts +0 -15
  728. package/dist/plots/bar/hoverPoints.js +0 -37
  729. package/dist/plots/bar/layout.svelte.d.ts +0 -42
  730. package/dist/plots/bar/layout.svelte.js +0 -182
  731. package/dist/plots/geo/buildGeoMarkers.d.ts +0 -33
  732. package/dist/plots/geo/buildGeoMarkers.js +0 -47
  733. package/dist/plots/heatmap/ValueLabels.svelte +0 -56
  734. package/dist/plots/heatmap/buildCellMarkers.d.ts +0 -21
  735. package/dist/plots/heatmap/buildCellMarkers.js +0 -25
  736. package/dist/plots/line/ValueLabels.svelte +0 -269
  737. package/dist/plots/line/ValueLabels.svelte.d.ts +0 -52
  738. package/dist/plots/line/buildGapMarkers.d.ts +0 -28
  739. package/dist/plots/line/buildGapMarkers.js +0 -74
  740. package/dist/plots/line/buildLineMarkers.d.ts +0 -16
  741. package/dist/plots/line/buildLineMarkers.js +0 -56
  742. package/dist/plots/line/valueLabelMargin.d.ts +0 -19
  743. package/dist/plots/line/valueLabelMargin.js +0 -65
  744. package/dist/plots/pyramid/ValueLabels.svelte +0 -139
  745. package/dist/plots/pyramid/ValueLabels.svelte.d.ts +0 -56
  746. package/dist/plots/pyramid/buildPyramidBarMarkers.d.ts +0 -26
  747. package/dist/plots/pyramid/buildPyramidBarMarkers.js +0 -72
  748. package/dist/plots/scatter/ValueLabels.svelte +0 -163
  749. package/dist/plots/scatter/ValueLabels.svelte.d.ts +0 -52
  750. package/dist/plots/scatter/buildScatterMarkers.d.ts +0 -12
  751. package/dist/plots/scatter/buildScatterMarkers.js +0 -36
  752. package/dist/plots/scatter/resolveRadiusPaddedDomain.d.ts +0 -10
  753. package/dist/plots/scatter/resolveRadiusPaddedDomain.js +0 -23
  754. package/dist/plots/utils/categoricalAxisMargin.d.ts +0 -14
  755. package/dist/plots/utils/categoricalAxisMargin.js +0 -20
  756. package/dist/plots/utils/declutter.d.ts +0 -120
  757. package/dist/plots/utils/declutter.js +0 -240
  758. package/dist/plots/utils/labelOverflow.svelte.d.ts +0 -107
  759. package/dist/plots/utils/labelOverflow.svelte.js +0 -257
  760. package/dist/plots/utils/legendDisabled.d.ts +0 -27
  761. package/dist/plots/utils/legendDisabled.js +0 -68
  762. package/dist/plots/utils/valueLabelMargin.d.ts +0 -67
  763. package/dist/plots/utils/valueLabelMargin.js +0 -60
  764. package/dist/types/charts/common.d.ts +0 -22
  765. package/dist/types/charts/props.d.ts +0 -50
  766. package/dist/types/markers/base.d.ts +0 -45
  767. package/dist/types/markers/line.d.ts +0 -34
  768. package/dist/types/markers/props.d.ts +0 -11
  769. package/dist/types/plots/data/scatter.d.ts +0 -13
  770. package/dist/utils/color.js +0 -141
  771. package/dist/utils/delta.d.ts +0 -12
  772. package/dist/utils/delta.js +0 -69
  773. package/dist/utils/edgeAwareAnchor.d.ts +0 -34
  774. package/dist/utils/edgeAwareAnchor.js +0 -60
  775. package/dist/utils/interpolate.d.ts +0 -31
  776. package/dist/utils/interpolate.js +0 -71
  777. /package/dist/types/{charts/common.js → layout/box.js} +0 -0
  778. /package/dist/types/{charts/interpolate.js → layout/composer.js} +0 -0
  779. /package/dist/types/{charts/props.js → layout/figure.js} +0 -0
  780. /package/dist/types/{markers/base.js → layout/grid.js} +0 -0
  781. /package/dist/types/{markers/line.js → layout/hover.js} +0 -0
  782. /package/dist/types/{markers/props.js → layout/mapping.js} +0 -0
  783. /package/dist/types/{plots/data/scatter.js → layout/plot.js} +0 -0
  784. /package/dist/types/{viewport.js → layout/statistics/bollinger.js} +0 -0
  785. /package/dist/types/{charts/interpolate.d.ts → misc/easing.d.ts} +0 -0
  786. /package/dist/types/{viewport.d.ts → misc/viewport.d.ts} +0 -0
@@ -0,0 +1,167 @@
1
+ import { Margins } from '../margins/Margins';
2
+ /**
3
+ * Where a grid's cells sit, without Svelte: each cell's slot - a named
4
+ * `area`'s box in `areas`, an explicit `row`/`col` of its own, or, in order,
5
+ * the next slot nothing claimed (adding rows as needed) - the grid's size,
6
+ * which sides of each cell face no other cell, and the pixel tracks for a
7
+ * box ({@link GridPlan.tracks}). Without `areas`, `columns` defaults to the
8
+ * smallest square that fits every cell.
9
+ */
10
+ export class GridPlan {
11
+ rows;
12
+ columns;
13
+ /** Each cell's slot, in the order the cells came. */
14
+ spans;
15
+ #areas;
16
+ #edges;
17
+ constructor(cells, options = {}) {
18
+ const args = { cells, ...options };
19
+ const areaRows = GridPlan.#parseAreas(args.areas);
20
+ const columns = Math.max(1, areaRows?.[0]?.length ?? args.columns ?? Math.ceil(Math.sqrt(args.cells.length || 1)));
21
+ const taken = new Set();
22
+ const claim = (span) => {
23
+ for (let r = span.row; r < span.row + span.rowSpan; r++)
24
+ for (let c = span.col; c < span.col + span.colSpan; c++)
25
+ taken.add(`${r}:${c}`);
26
+ };
27
+ const spans = args.cells.map((cell) => {
28
+ const named = cell.area && areaRows ? GridPlan.#areaSpan(areaRows, cell.area) : null;
29
+ const span = named ??
30
+ (cell.row !== undefined || cell.col !== undefined
31
+ ? {
32
+ row: cell.row ?? 0,
33
+ col: cell.col ?? 0,
34
+ rowSpan: cell.rowSpan ?? 1,
35
+ colSpan: cell.colSpan ?? 1
36
+ }
37
+ : null);
38
+ if (span)
39
+ claim(span);
40
+ return span;
41
+ });
42
+ // Named areas no cell uses still keep their slots, as CSS grid would.
43
+ areaRows?.forEach((row, r) => row.forEach((name, c) => name !== '.' && taken.add(`${r}:${c}`)));
44
+ let next = 0;
45
+ const placed = spans.map((span) => {
46
+ if (span)
47
+ return span;
48
+ while (taken.has(`${Math.floor(next / columns)}:${next % columns}`))
49
+ next++;
50
+ const flowed = {
51
+ row: Math.floor(next / columns),
52
+ col: next % columns,
53
+ rowSpan: 1,
54
+ colSpan: 1
55
+ };
56
+ claim(flowed);
57
+ return flowed;
58
+ });
59
+ const rows = Math.max(areaRows?.length ?? 0, args.rows ?? 1, 1, ...placed.map((span) => span.row + span.rowSpan));
60
+ this.#areas = areaRows;
61
+ this.rows = rows;
62
+ this.columns = columns;
63
+ this.spans = placed;
64
+ }
65
+ /** Which sides of each cell face no other cell - where an `'outer'` axis draws. */
66
+ get edges() {
67
+ this.#edges ??= this.#buildEdges();
68
+ return this.#edges;
69
+ }
70
+ /** The slot a named area covers, or `null` when it isn't in `areas`. */
71
+ areaSpan(name) {
72
+ return this.#areas ? GridPlan.#areaSpan(this.#areas, name) : null;
73
+ }
74
+ /**
75
+ * Pixel tracks for a `width` x `height` box and every cell's box. Each
76
+ * track's panel share follows its weight (`widths`, `heights`). With
77
+ * `margins` (one per cell, all reported), every column takes the widest
78
+ * left margin among cells starting in it and the widest right among cells
79
+ * ending in it - rows likewise - and those margins are pinned on the
80
+ * cells, so every plot area lines up with its row and column. `header` is
81
+ * the height each row spends above its cells (a label).
82
+ */
83
+ tracks(args) {
84
+ const { rows, columns, spans } = this;
85
+ const { width, height, gap, header = 0 } = args;
86
+ const aligned = args.margins != null && args.margins.every((m) => m !== undefined);
87
+ const marginOf = (i) => (aligned ? args.margins[i] : Margins.ZERO);
88
+ const colLeft = Array.from({ length: columns }, () => 0);
89
+ const colRight = Array.from({ length: columns }, () => 0);
90
+ const rowTop = Array.from({ length: rows }, () => 0);
91
+ const rowBottom = Array.from({ length: rows }, () => 0);
92
+ spans.forEach((span, i) => {
93
+ const m = marginOf(i);
94
+ const lastCol = span.col + span.colSpan - 1;
95
+ const lastRow = span.row + span.rowSpan - 1;
96
+ colLeft[span.col] = Math.max(colLeft[span.col], m.left);
97
+ colRight[lastCol] = Math.max(colRight[lastCol], m.right);
98
+ rowTop[span.row] = Math.max(rowTop[span.row], m.top);
99
+ rowBottom[lastRow] = Math.max(rowBottom[lastRow], m.bottom);
100
+ });
101
+ const sum = (values) => values.reduce((a, b) => a + b, 0);
102
+ const share = (total, weights) => {
103
+ const whole = sum(weights) || 1;
104
+ return weights.map((w) => (Math.max(0, total) * w) / whole);
105
+ };
106
+ const panelWidths = share(width - (columns - 1) * gap - sum(colLeft) - sum(colRight), GridPlan.#weights(args.widths, columns));
107
+ const panelHeights = share(height - (rows - 1) * gap - rows * header - sum(rowTop) - sum(rowBottom), GridPlan.#weights(args.heights, rows));
108
+ const colWidths = panelWidths.map((w, c) => colLeft[c] + w + colRight[c]);
109
+ const rowHeights = panelHeights.map((h, r) => header + rowTop[r] + h + rowBottom[r]);
110
+ const span = (tracks, from, count) => sum(tracks.slice(from, from + count)) + (count - 1) * gap;
111
+ const boxes = spans.map((s) => ({
112
+ width: Math.max(0, Math.floor(span(colWidths, s.col, s.colSpan))),
113
+ height: Math.max(0, Math.floor(span(rowHeights, s.row, s.rowSpan) - header)),
114
+ ...(aligned
115
+ ? {
116
+ margins: new Margins(rowTop[s.row], colRight[s.col + s.colSpan - 1], rowBottom[s.row + s.rowSpan - 1], colLeft[s.col])
117
+ }
118
+ : {})
119
+ }));
120
+ return { colWidths, rowHeights, boxes };
121
+ }
122
+ #buildEdges() {
123
+ const occupied = new Set();
124
+ for (const span of this.spans)
125
+ for (let r = span.row; r < span.row + span.rowSpan; r++)
126
+ for (let c = span.col; c < span.col + span.colSpan; c++)
127
+ occupied.add(`${r}:${c}`);
128
+ const any = (cells) => cells.some(([r, c]) => occupied.has(`${r}:${c}`));
129
+ const range = (from, count) => Array.from({ length: count }, (_, i) => from + i);
130
+ return this.spans.map((span) => {
131
+ const cols = range(span.col, span.colSpan);
132
+ const rows = range(span.row, span.rowSpan);
133
+ return {
134
+ top: !any(cols.map((c) => [span.row - 1, c])),
135
+ bottom: !any(cols.map((c) => [span.row + span.rowSpan, c])),
136
+ left: !any(rows.map((r) => [r, span.col - 1])),
137
+ right: !any(rows.map((r) => [r, span.col + span.colSpan]))
138
+ };
139
+ });
140
+ }
141
+ /** `areas` rows split into their cell names. */
142
+ static #parseAreas(areas) {
143
+ return areas?.map((row) => row.trim().split(/\s+/));
144
+ }
145
+ /** The slot a named area covers: the bounding box of its cells, or `null` when it isn't in `areas`. */
146
+ static #areaSpan(areas, name) {
147
+ let top = Infinity;
148
+ let left = Infinity;
149
+ let bottom = -1;
150
+ let right = -1;
151
+ areas.forEach((row, r) => row.forEach((cell, c) => {
152
+ if (cell !== name)
153
+ return;
154
+ top = Math.min(top, r);
155
+ left = Math.min(left, c);
156
+ bottom = Math.max(bottom, r);
157
+ right = Math.max(right, c);
158
+ }));
159
+ if (bottom < 0)
160
+ return null;
161
+ return { row: top, col: left, rowSpan: bottom - top + 1, colSpan: right - left + 1 };
162
+ }
163
+ /** `weights` when they match `count` tracks, else equal ones. */
164
+ static #weights(weights, count) {
165
+ return weights?.length === count ? weights : Array.from({ length: count }, () => 1);
166
+ }
167
+ }
@@ -0,0 +1,8 @@
1
+ import type { ComposerTags } from '../../types/layout/composer';
2
+ /** A sequence of tags - one per composer cell, in the order the cells register. */
3
+ export declare class Tags {
4
+ #private;
5
+ constructor(tags: ComposerTags);
6
+ /** The `index`-th tag. */
7
+ at(index: number): string | undefined;
8
+ }
@@ -0,0 +1,39 @@
1
+ const ROMAN = [
2
+ [10, 'X'],
3
+ [9, 'IX'],
4
+ [5, 'V'],
5
+ [4, 'IV'],
6
+ [1, 'I']
7
+ ];
8
+ /** A sequence of tags - one per composer cell, in the order the cells register. */
9
+ export class Tags {
10
+ #tags;
11
+ constructor(tags) {
12
+ this.#tags = tags;
13
+ }
14
+ /** The `index`-th tag. */
15
+ at(index) {
16
+ const tags = this.#tags;
17
+ if (Array.isArray(tags))
18
+ return tags[index];
19
+ if (tags === 'A')
20
+ return String.fromCharCode(65 + (index % 26));
21
+ if (tags === 'a')
22
+ return String.fromCharCode(97 + (index % 26));
23
+ if (tags === 'I')
24
+ return Tags.#roman(index + 1);
25
+ if (tags === 'i')
26
+ return Tags.#roman(index + 1).toLowerCase();
27
+ return String(index + 1);
28
+ }
29
+ static #roman(n) {
30
+ let out = '';
31
+ for (const [value, numeral] of ROMAN) {
32
+ while (n >= value) {
33
+ out += numeral;
34
+ n -= value;
35
+ }
36
+ }
37
+ return out;
38
+ }
39
+ }
@@ -0,0 +1,11 @@
1
+ <script lang="ts">
2
+ import { HoverState } from './HoverState.svelte';
3
+ import type { Snippet } from 'svelte';
4
+
5
+ /** Gives every plot rendered inside its own hover scope - see {@link HoverState.provideScope}. */
6
+ let { id, children }: { id: string; children: Snippet } = $props();
7
+
8
+ HoverState.provideScope(() => id);
9
+ </script>
10
+
11
+ {@render children()}
@@ -0,0 +1,8 @@
1
+ import type { Snippet } from 'svelte';
2
+ type $$ComponentProps = {
3
+ id: string;
4
+ children: Snippet;
5
+ };
6
+ declare const HoverScope: import("svelte").Component<$$ComponentProps, {}, "">;
7
+ type HoverScope = ReturnType<typeof HoverScope>;
8
+ export default HoverScope;
@@ -0,0 +1,20 @@
1
+ import type { TooltipProp } from '../../types/layout/tooltip';
2
+ import type { HoverStrategy } from '../../types/layout/hover';
3
+ import type { TooltipConfig } from '../../types/plots/props';
4
+ /**
5
+ * How the author set up a plot's hover, from its `tooltip` and its hover
6
+ * marker (`'hover'`, or `'geo-hover'` on a map): whether it is on, the
7
+ * strategy that matches points (the tooltip's, else the marker's, else the
8
+ * plot kind's `defaultStrategy`) and whether it syncs across plots.
9
+ */
10
+ export declare class HoverSettings<TRow extends Record<string, unknown>> {
11
+ /** The tooltip, or `undefined` when off. */
12
+ readonly tooltip: TooltipConfig<TRow> | undefined;
13
+ /** Whether anything hovers: a tooltip or a hover marker. */
14
+ readonly active: boolean;
15
+ readonly strategy: HoverStrategy;
16
+ readonly sync: boolean;
17
+ constructor(tooltip: TooltipProp<TRow> | TooltipConfig<TRow> | undefined, markers: {
18
+ type: string;
19
+ }[] | undefined, defaultStrategy: HoverStrategy);
20
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * How the author set up a plot's hover, from its `tooltip` and its hover
3
+ * marker (`'hover'`, or `'geo-hover'` on a map): whether it is on, the
4
+ * strategy that matches points (the tooltip's, else the marker's, else the
5
+ * plot kind's `defaultStrategy`) and whether it syncs across plots.
6
+ */
7
+ export class HoverSettings {
8
+ /** The tooltip, or `undefined` when off. */
9
+ tooltip;
10
+ /** Whether anything hovers: a tooltip or a hover marker. */
11
+ active;
12
+ strategy;
13
+ sync;
14
+ constructor(tooltip, markers, defaultStrategy) {
15
+ this.tooltip = !tooltip
16
+ ? undefined
17
+ : tooltip === true
18
+ ? { sync: false }
19
+ : { ...tooltip, sync: tooltip.sync ?? false };
20
+ const marker = markers?.find((m) => m.type === 'hover');
21
+ this.active =
22
+ this.tooltip !== undefined ||
23
+ (markers ?? []).some((m) => m.type === 'hover' || m.type === 'geo-hover');
24
+ this.strategy = this.tooltip?.strategy ?? marker?.strategy ?? defaultStrategy;
25
+ this.sync = this.tooltip?.sync ?? marker?.sync ?? false;
26
+ }
27
+ }
@@ -0,0 +1,47 @@
1
+ import type { AxisValue } from '../../types/layout/mapping';
2
+ import type { HoverPoint, HoverStore, HoverStrategy } from '../../types/layout/hover';
3
+ /**
4
+ * What the pointer is over, shared by every plot under one figure: the
5
+ * hovered x, y and series, where the cursor sits, which plot (hover scope)
6
+ * owns the hover, and the series a value label isolates. The single source
7
+ * every consumer reads the hover from.
8
+ */
9
+ export declare class HoverState implements HoverStore {
10
+ #private;
11
+ activeX: AxisValue | null;
12
+ activeY: AxisValue | null;
13
+ activeSeries: string | null;
14
+ cursorFrac: {
15
+ x: number;
16
+ y: number;
17
+ } | null;
18
+ source: string | null;
19
+ strategy: HoverStrategy;
20
+ sync: boolean;
21
+ /** The enclosing figure's hover, or `null` outside one. Call during component init. */
22
+ static current(): HoverState | null;
23
+ /** A new hover, shared with every plot below. Call during component init. */
24
+ static provide(): HoverState;
25
+ /** The hover scope of the plots below: which one owns the hover, one per facet panel or composer cell. Call during component init. */
26
+ static provideScope(id: () => string): void;
27
+ /** The enclosing hover scope's id, or `''` outside any. Call during component init. */
28
+ static scope(): () => string;
29
+ /** Whether two axis values are the same - dates by their time. */
30
+ static same(a: AxisValue, b: AxisValue): boolean;
31
+ /** Whether the strategy draws a crosshair rule across x by default. */
32
+ get crosshairX(): boolean;
33
+ /** Whether the strategy draws a crosshair rule across y by default. */
34
+ get crosshairY(): boolean;
35
+ /** The `points` the current hover highlights, by its strategy. */
36
+ match<T>(points: HoverPoint<T>[]): HoverPoint<T>[];
37
+ /** Takes the hover from scope `source`: at `x`/`y`, on `series`. */
38
+ enter(source: string, x: AxisValue, y: AxisValue, series: string | null): void;
39
+ /** Ends the hover, if scope `source` owns it - keeping where the cursor is, unless `cursor` is `false`. */
40
+ leave(source: string, { cursor }?: {
41
+ cursor?: boolean | undefined;
42
+ }): void;
43
+ /** Isolates `series` from the plot in hover `scope` (a hovered value label), or ends it with `null`. */
44
+ isolate(series: string | null, scope: string): void;
45
+ /** The series isolated in `scope` - or in any, when the hover is synced. */
46
+ isolatedIn(scope: string): string | null;
47
+ }
@@ -0,0 +1,99 @@
1
+ import { getContext, setContext } from 'svelte';
2
+ const HOVER_KEY = Symbol('dct-hover');
3
+ const HOVER_SCOPE_KEY = Symbol('dct-hover-scope');
4
+ /**
5
+ * What the pointer is over, shared by every plot under one figure: the
6
+ * hovered x, y and series, where the cursor sits, which plot (hover scope)
7
+ * owns the hover, and the series a value label isolates. The single source
8
+ * every consumer reads the hover from.
9
+ */
10
+ export class HoverState {
11
+ activeX = $state(null);
12
+ activeY = $state(null);
13
+ activeSeries = $state(null);
14
+ cursorFrac = $state(null);
15
+ source = $state(null);
16
+ strategy = $state('x');
17
+ sync = $state(false);
18
+ #isolated = $state(null);
19
+ /** The enclosing figure's hover, or `null` outside one. Call during component init. */
20
+ static current() {
21
+ return getContext(HOVER_KEY) ?? null;
22
+ }
23
+ /** A new hover, shared with every plot below. Call during component init. */
24
+ static provide() {
25
+ const hover = new HoverState();
26
+ setContext(HOVER_KEY, hover);
27
+ return hover;
28
+ }
29
+ /** The hover scope of the plots below: which one owns the hover, one per facet panel or composer cell. Call during component init. */
30
+ static provideScope(id) {
31
+ setContext(HOVER_SCOPE_KEY, id);
32
+ }
33
+ /** The enclosing hover scope's id, or `''` outside any. Call during component init. */
34
+ static scope() {
35
+ return getContext(HOVER_SCOPE_KEY) ?? (() => '');
36
+ }
37
+ /** Whether two axis values are the same - dates by their time. */
38
+ static same(a, b) {
39
+ if (a instanceof Date && b instanceof Date)
40
+ return +a === +b;
41
+ return a === b;
42
+ }
43
+ /** Whether the strategy draws a crosshair rule across x by default. */
44
+ get crosshairX() {
45
+ return this.strategy === 'x' || this.strategy === 'punctual';
46
+ }
47
+ /** Whether the strategy draws a crosshair rule across y by default. */
48
+ get crosshairY() {
49
+ return this.strategy === 'y' || this.strategy === 'punctual';
50
+ }
51
+ /** The `points` the current hover highlights, by its strategy. */
52
+ match(points) {
53
+ const { strategy, activeX, activeY, activeSeries } = this;
54
+ if (strategy === 'x') {
55
+ return activeX == null ? [] : points.filter((p) => HoverState.same(p.x, activeX));
56
+ }
57
+ if (strategy === 'y') {
58
+ return activeY == null ? [] : points.filter((p) => HoverState.same(p.y, activeY));
59
+ }
60
+ if (strategy === 'series') {
61
+ return activeSeries == null ? [] : points.filter((p) => p.series === activeSeries);
62
+ }
63
+ // 'punctual': the exact x and y, of the same series when both sides tag one.
64
+ if (activeX == null || activeY == null)
65
+ return [];
66
+ return points.filter((p) => HoverState.same(p.x, activeX) &&
67
+ HoverState.same(p.y, activeY) &&
68
+ (activeSeries == null || p.series == null || p.series === activeSeries));
69
+ }
70
+ /** Takes the hover from scope `source`: at `x`/`y`, on `series`. */
71
+ enter(source, x, y, series) {
72
+ this.activeX = x;
73
+ this.activeY = y;
74
+ this.activeSeries = series;
75
+ this.source = source;
76
+ }
77
+ /** Ends the hover, if scope `source` owns it - keeping where the cursor is, unless `cursor` is `false`. */
78
+ leave(source, { cursor = false } = {}) {
79
+ if (this.source !== source)
80
+ return;
81
+ this.activeX = null;
82
+ this.activeY = null;
83
+ this.activeSeries = null;
84
+ this.source = null;
85
+ if (!cursor)
86
+ this.cursorFrac = null;
87
+ }
88
+ /** Isolates `series` from the plot in hover `scope` (a hovered value label), or ends it with `null`. */
89
+ isolate(series, scope) {
90
+ this.#isolated = series === null ? null : { series, scope };
91
+ }
92
+ /** The series isolated in `scope` - or in any, when the hover is synced. */
93
+ isolatedIn(scope) {
94
+ const isolated = this.#isolated;
95
+ if (!isolated)
96
+ return null;
97
+ return isolated.scope === scope || this.sync ? isolated.series : null;
98
+ }
99
+ }
@@ -0,0 +1,63 @@
1
+ import { HoverState } from './HoverState.svelte';
2
+ import type { AxisValue } from '../../types/layout/mapping';
3
+ import type { HoverPoint } from '../../types/layout/hover';
4
+ import type { HoverConfig } from '../../types/plots/props';
5
+ /** What a plot's hover is built from, each read reactively. */
6
+ export type PlotHoverInputs<T extends Record<string, unknown>> = {
7
+ /** The plot's hover config: its points, label, strategy, sync and tooltip. */
8
+ hover: () => HoverConfig<T>;
9
+ getX: () => (d: T) => AxisValue;
10
+ getY: () => (d: T) => AxisValue;
11
+ /** The plot's box, to carry the cursor to synced plots as a fraction of it. */
12
+ width: () => number;
13
+ height: () => number;
14
+ };
15
+ /**
16
+ * One plot's hover: the figure's {@link HoverState} (or its own, outside a
17
+ * figure) seen from the plot's hover scope. It turns the pointer into the
18
+ * shared hover (`onPointer`, `onMove`, `onLeave`) and reads back what the
19
+ * plot draws: the highlighted points, the hovered one, its crosshairs and
20
+ * its tooltip. Create it during component init.
21
+ */
22
+ export declare class PlotHover<T extends Record<string, unknown>> {
23
+ #private;
24
+ readonly state: HoverState;
25
+ constructor(inputs: PlotHoverInputs<T>);
26
+ /** The matched points the tooltip reads: only the tooltip's `series`, when it names some. */
27
+ readonly matchedRows: HoverPoint<T>[];
28
+ /** The points the hover marker highlights. */
29
+ readonly points: {
30
+ x: AxisValue;
31
+ y: AxisValue;
32
+ label: string;
33
+ series: string | undefined;
34
+ color: string | undefined;
35
+ areaInset: import("../../types/layout/hover").BandSlice | undefined;
36
+ row: T;
37
+ }[];
38
+ /**
39
+ * The matched point actually under the cursor: of the hovered series, and
40
+ * among ties, the one at the hovered x and y. Crosshair rules sit on it.
41
+ */
42
+ readonly activePoint: HoverPoint<T> | null;
43
+ /** Whether a crosshair rule runs across x - the strategy's, unless the config turns them off. */
44
+ get impliesCrosshairX(): boolean;
45
+ /** Whether a crosshair rule runs across y. */
46
+ get impliesCrosshairY(): boolean;
47
+ /** Whether the tooltip shows: under the cursor in the owning plot, in every synced one. */
48
+ get showTooltip(): boolean;
49
+ /** Where the tooltip sits: the cursor, else the hovered point, else the owning plot's cursor carried over. */
50
+ get tooltipPosition(): {
51
+ x: number;
52
+ y: number;
53
+ } | null;
54
+ /** The rows under the pointer, from svelteplot's `Pointer` or a mark's own hit area. */
55
+ onPointer: (rows: T[]) => void;
56
+ onMove: (e: PointerEvent) => void;
57
+ onLeave: () => void;
58
+ /** The hovered point's pixel position, as the hover marker drew it. */
59
+ reportActivePointPixel: (position: {
60
+ x: number;
61
+ y: number;
62
+ } | null) => void;
63
+ }
@@ -0,0 +1,133 @@
1
+ import { HoverState } from './HoverState.svelte';
2
+ /**
3
+ * One plot's hover: the figure's {@link HoverState} (or its own, outside a
4
+ * figure) seen from the plot's hover scope. It turns the pointer into the
5
+ * shared hover (`onPointer`, `onMove`, `onLeave`) and reads back what the
6
+ * plot draws: the highlighted points, the hovered one, its crosshairs and
7
+ * its tooltip. Create it during component init.
8
+ */
9
+ export class PlotHover {
10
+ state;
11
+ #inputs;
12
+ #scope;
13
+ #cursor = $state(null);
14
+ // The hovered point's pixel position, as `HoverMarker` reports it.
15
+ #activePixel = $state(null);
16
+ constructor(inputs) {
17
+ this.#inputs = inputs;
18
+ this.#scope = HoverState.scope();
19
+ const shared = HoverState.current();
20
+ this.state = shared ?? new HoverState();
21
+ // Outside a figure, the plot's own config drives its own hover.
22
+ if (!shared) {
23
+ $effect(() => {
24
+ this.state.strategy = inputs.hover().strategy ?? 'x';
25
+ this.state.sync = inputs.hover().sync ?? false;
26
+ });
27
+ }
28
+ }
29
+ /** Whether this plot owns the hover. */
30
+ get #owner() {
31
+ return this.state.source === this.#scope();
32
+ }
33
+ /** The point a hit row is: by identity, else by its x and y (svelteplot's `Pointer` hands back clones). */
34
+ #pointFor(row) {
35
+ const points = this.#inputs.hover().points;
36
+ const byIdentity = points.find((p) => p.row === row);
37
+ if (byIdentity)
38
+ return byIdentity;
39
+ const x = this.#inputs.getX()(row);
40
+ const y = this.#inputs.getY()(row);
41
+ return points.find((p) => HoverState.same(p.x, x) && HoverState.same(p.y, y));
42
+ }
43
+ // The points matched here: in the owning plot, or in every one while synced.
44
+ #matched = $derived.by(() => {
45
+ if (!this.#owner && !this.state.sync)
46
+ return [];
47
+ return this.state.match(this.#inputs.hover().points);
48
+ });
49
+ /** The matched points the tooltip reads: only the tooltip's `series`, when it names some. */
50
+ matchedRows = $derived.by(() => {
51
+ const series = this.#inputs.hover().tooltip?.series;
52
+ if (!series || series.length === 0)
53
+ return this.#matched;
54
+ return this.#matched.filter((p) => p.series != null && series.includes(p.series));
55
+ });
56
+ /** The points the hover marker highlights. */
57
+ points = $derived(this.#matched.map(({ x, y, label, series, color, areaInset, row }) => ({
58
+ x,
59
+ y,
60
+ label,
61
+ series,
62
+ color,
63
+ areaInset,
64
+ row
65
+ })));
66
+ /**
67
+ * The matched point actually under the cursor: of the hovered series, and
68
+ * among ties, the one at the hovered x and y. Crosshair rules sit on it.
69
+ */
70
+ activePoint = $derived.by(() => {
71
+ const matched = this.#matched;
72
+ if (matched.length === 0)
73
+ return null;
74
+ const { activeSeries, activeX, activeY } = this.state;
75
+ const bySeries = matched.filter((p) => p.series === activeSeries);
76
+ const candidates = bySeries.length > 0 ? bySeries : matched;
77
+ if (candidates.length === 1 || activeX == null || activeY == null)
78
+ return candidates[0];
79
+ return (candidates.find((p) => HoverState.same(p.x, activeX) && HoverState.same(p.y, activeY)) ??
80
+ candidates[0]);
81
+ });
82
+ /** Whether a crosshair rule runs across x - the strategy's, unless the config turns them off. */
83
+ get impliesCrosshairX() {
84
+ return this.#inputs.hover().crosshair !== false && this.state.crosshairX;
85
+ }
86
+ /** Whether a crosshair rule runs across y. */
87
+ get impliesCrosshairY() {
88
+ return this.#inputs.hover().crosshair !== false && this.state.crosshairY;
89
+ }
90
+ /** Whether the tooltip shows: under the cursor in the owning plot, in every synced one. */
91
+ get showTooltip() {
92
+ if (this.matchedRows.length === 0)
93
+ return false;
94
+ return this.#owner ? this.#cursor != null : this.state.sync;
95
+ }
96
+ /** Where the tooltip sits: the cursor, else the hovered point, else the owning plot's cursor carried over. */
97
+ get tooltipPosition() {
98
+ if (this.#cursor)
99
+ return this.#cursor;
100
+ if (this.#activePixel)
101
+ return this.#activePixel;
102
+ const frac = this.state.cursorFrac;
103
+ return frac ? { x: frac.x * this.#inputs.width(), y: frac.y * this.#inputs.height() } : null;
104
+ }
105
+ /** The rows under the pointer, from svelteplot's `Pointer` or a mark's own hit area. */
106
+ onPointer = (rows) => {
107
+ const row = rows[0];
108
+ if (row === undefined) {
109
+ this.state.leave(this.#scope(), { cursor: true });
110
+ return;
111
+ }
112
+ const point = this.#pointFor(row);
113
+ this.state.enter(this.#scope(), point?.x ?? this.#inputs.getX()(row), point?.y ?? this.#inputs.getY()(row), point?.series ?? null);
114
+ };
115
+ onMove = (e) => {
116
+ const rect = e.currentTarget.getBoundingClientRect();
117
+ const x = e.clientX - rect.left;
118
+ const y = e.clientY - rect.top;
119
+ this.#cursor = { x, y };
120
+ const width = this.#inputs.width();
121
+ const height = this.#inputs.height();
122
+ if (width > 0 && height > 0)
123
+ this.state.cursorFrac = { x: x / width, y: y / height };
124
+ };
125
+ onLeave = () => {
126
+ this.#cursor = null;
127
+ this.state.leave(this.#scope());
128
+ };
129
+ /** The hovered point's pixel position, as the hover marker drew it. */
130
+ reportActivePointPixel = (position) => {
131
+ this.#activePixel = position;
132
+ };
133
+ }
@@ -0,0 +1,38 @@
1
+ import { LegendState } from '../legend/LegendState.svelte';
2
+ import { HoverState } from '../hover/HoverState.svelte';
3
+ import type { PlotStylesConfig } from '../../types/configuration/styling';
4
+ import type { LegendDisabledStyle } from '../../types/layout/legend';
5
+ import type { DotStyle, StrokeStyle } from '../../types/plots/styling';
6
+ /**
7
+ * What the reader is doing with one plot: the legend's toggles and the
8
+ * figure's hover, read in the plot's own hover scope. Its phases ask it how
9
+ * each series draws - dimmed when the legend turns it off, or when a value
10
+ * label isolates another one - and its value labels tell it what they
11
+ * isolate. A core takes the enclosing figure's ({@link PlotInteraction.current});
12
+ * a run outside any core builds one from the legend it has.
13
+ */
14
+ export declare class PlotInteraction {
15
+ #private;
16
+ readonly legend: LegendState | null;
17
+ readonly hover: HoverState;
18
+ constructor(cfg: () => PlotStylesConfig, parts?: {
19
+ legend?: LegendState | null;
20
+ hover?: HoverState;
21
+ scope?: () => string;
22
+ });
23
+ /** The enclosing figure's legend and hover, in the plot's own hover scope. Call during component init. */
24
+ static current(cfg: () => PlotStylesConfig): PlotInteraction;
25
+ /** How `series` dims: the legend's off style, else the legend's opacity while another series is isolated. */
26
+ dimmed(series: string): LegendDisabledStyle | undefined;
27
+ /** `series`' fill while dimmed. */
28
+ fillFor(series: string): {
29
+ fill?: string;
30
+ fillOpacity?: number;
31
+ } | undefined;
32
+ /** `series`' stroke while dimmed. */
33
+ strokeFor(series: string): StrokeStyle | undefined;
34
+ /** `series`' dots while dimmed. */
35
+ dotsFor(series: string): DotStyle | undefined;
36
+ /** Isolates `series` - every other one dims - or ends it with `null`. */
37
+ isolate(series: string | null): void;
38
+ }