@fundar/data-chart-telling 0.0.64 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (839) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/LICENSE +21 -0
  3. package/README.md +112 -553
  4. package/dist/configuration/config.svelte.d.ts +5 -5
  5. package/dist/configuration/config.svelte.js +142 -46
  6. package/dist/configuration/fonts.d.ts +6 -0
  7. package/dist/configuration/fonts.js +6 -0
  8. package/dist/configuration/themes/compact.d.ts +2 -2
  9. package/dist/configuration/themes/compact.js +1 -1
  10. package/dist/configuration/themes/dark.d.ts +2 -2
  11. package/dist/configuration/themes/dark.js +5 -4
  12. package/dist/configuration/themes/default.d.ts +8 -3
  13. package/dist/configuration/themes/default.js +8 -2
  14. package/dist/configuration/themes/editorial.d.ts +2 -2
  15. package/dist/configuration/themes/editorial.js +2 -2
  16. package/dist/configuration/themes/index.d.ts +545 -80
  17. package/dist/configuration/themes/index.js +6 -5
  18. package/dist/index.d.ts +35 -48
  19. package/dist/index.js +20 -35
  20. package/dist/layout/base/BasePlotLayout.svelte +325 -0
  21. package/dist/layout/base/BasePlotLayout.svelte.d.ts +111 -0
  22. package/dist/layout/composer/PlotComposer.svelte +94 -0
  23. package/dist/layout/composer/PlotComposer.svelte.d.ts +13 -0
  24. package/dist/layout/coordinates/CameraFit.svelte +4 -4
  25. package/dist/layout/coordinates/CoordinatesLayout.svelte +11 -3
  26. package/dist/layout/coordinates/CoordinatesLayout.svelte.d.ts +6 -2
  27. package/dist/layout/coordinates/camera.svelte.d.ts +1 -1
  28. package/dist/layout/coordinates/camera.svelte.js +6 -6
  29. package/dist/layout/coordinates/projections/argentina.js +3 -3
  30. package/dist/layout/coordinates/projections/fit.js +1 -1
  31. package/dist/layout/coordinates/resolveCameraTarget.d.ts +1 -1
  32. package/dist/layout/coordinates/resolveProjection.d.ts +1 -1
  33. package/dist/layout/coordinates/resolveProjection.js +2 -2
  34. package/dist/layout/coordinates/rotate.svelte.d.ts +3 -3
  35. package/dist/layout/coordinates/rotate.svelte.js +8 -8
  36. package/dist/layout/coordinates/zoom.svelte.d.ts +1 -1
  37. package/dist/layout/facet/FacetIndicator.svelte +23 -23
  38. package/dist/layout/facet/FacetLayout.svelte +435 -398
  39. package/dist/layout/facet/FacetLayout.svelte.d.ts +9 -3
  40. package/dist/layout/facet/axes.d.ts +16 -0
  41. package/dist/layout/facet/axes.js +25 -0
  42. package/dist/layout/facet/config.d.ts +32 -0
  43. package/dist/layout/facet/config.js +82 -0
  44. package/dist/layout/figure/Figure.svelte +177 -0
  45. package/dist/layout/figure/Figure.svelte.d.ts +14 -0
  46. package/dist/layout/figure/FigureChrome.svelte +341 -0
  47. package/dist/layout/figure/FigureChrome.svelte.d.ts +21 -0
  48. package/dist/layout/geometry/FrameClip.svelte +45 -0
  49. package/dist/layout/geometry/FrameClip.svelte.d.ts +8 -0
  50. package/dist/layout/geometry/FrameClipping.d.ts +24 -0
  51. package/dist/layout/geometry/FrameClipping.js +40 -0
  52. package/dist/layout/geometry/GeometryLayout.svelte +287 -224
  53. package/dist/layout/geometry/GeometryLayout.svelte.d.ts +10 -10
  54. package/dist/layout/grid/Grid.svelte +194 -0
  55. package/dist/layout/grid/Grid.svelte.d.ts +26 -0
  56. package/dist/layout/grid/GridAlignment.svelte.d.ts +31 -0
  57. package/dist/layout/grid/GridAlignment.svelte.js +56 -0
  58. package/dist/layout/grid/GridCell.svelte +141 -0
  59. package/dist/layout/grid/GridCell.svelte.d.ts +17 -0
  60. package/dist/layout/grid/GridCellsRegistry.svelte.d.ts +52 -0
  61. package/dist/layout/grid/GridCellsRegistry.svelte.js +70 -0
  62. package/dist/layout/grid/GridPlan.d.ts +49 -0
  63. package/dist/layout/grid/GridPlan.js +167 -0
  64. package/dist/layout/grid/Tags.d.ts +8 -0
  65. package/dist/layout/grid/Tags.js +39 -0
  66. package/dist/layout/hover/HoverScope.svelte +11 -0
  67. package/dist/layout/hover/HoverScope.svelte.d.ts +8 -0
  68. package/dist/layout/hover/HoverSettings.d.ts +34 -0
  69. package/dist/layout/hover/HoverSettings.js +52 -0
  70. package/dist/layout/hover/HoverState.svelte.d.ts +47 -0
  71. package/dist/layout/hover/HoverState.svelte.js +99 -0
  72. package/dist/layout/hover/PlotHover.svelte.d.ts +63 -0
  73. package/dist/layout/hover/PlotHover.svelte.js +133 -0
  74. package/dist/layout/interaction/PlotInteraction.svelte.d.ts +38 -0
  75. package/dist/layout/interaction/PlotInteraction.svelte.js +56 -0
  76. package/dist/layout/legend/AxisNumberFormat.d.ts +12 -0
  77. package/dist/layout/legend/AxisNumberFormat.js +25 -0
  78. package/dist/layout/legend/ContinuousSection.svelte +363 -351
  79. package/dist/layout/legend/DisabledStyle.d.ts +19 -0
  80. package/dist/layout/legend/DisabledStyle.js +57 -0
  81. package/dist/layout/legend/DiscreteBadgeItem.svelte +6 -3
  82. package/dist/layout/legend/DiscreteSection.svelte +32 -32
  83. package/dist/layout/legend/DiscreteSwatchItem.svelte +4 -1
  84. package/dist/layout/legend/DiscreteSymbolIcon.svelte +14 -9
  85. package/dist/layout/legend/LegendChannels.d.ts +21 -0
  86. package/dist/layout/legend/LegendChannels.js +221 -0
  87. package/dist/layout/legend/LegendLayout.svelte +49 -43
  88. package/dist/layout/legend/LegendState.svelte.d.ts +84 -0
  89. package/dist/layout/legend/LegendState.svelte.js +333 -0
  90. package/dist/layout/legend/LegendText.d.ts +12 -0
  91. package/dist/layout/legend/LegendText.js +22 -0
  92. package/dist/layout/legend/SizeSection.svelte +84 -0
  93. package/dist/layout/legend/SizeSection.svelte.d.ts +7 -0
  94. package/dist/layout/legend/SymbolSection.svelte +31 -0
  95. package/dist/layout/legend/SymbolSection.svelte.d.ts +8 -0
  96. package/dist/layout/margins/Box.d.ts +84 -0
  97. package/dist/layout/margins/Box.js +138 -0
  98. package/dist/layout/margins/Margins.d.ts +37 -0
  99. package/dist/layout/margins/Margins.js +71 -0
  100. package/dist/layout/margins/PlotMargins.svelte.d.ts +101 -0
  101. package/dist/layout/margins/PlotMargins.svelte.js +219 -0
  102. package/dist/layout/plot/Core.svelte +61 -0
  103. package/dist/layout/plot/Core.svelte.d.ts +41 -0
  104. package/dist/layout/plot/PanelRun.svelte +28 -0
  105. package/dist/{charts/heatmap/Chart.svelte.d.ts → layout/plot/PanelRun.svelte.d.ts} +11 -7
  106. package/dist/layout/plot/Plot.svelte +287 -0
  107. package/dist/layout/plot/Plot.svelte.d.ts +49 -0
  108. package/dist/layout/plot/PlotContext.d.ts +41 -0
  109. package/dist/layout/plot/PlotContext.js +46 -0
  110. package/dist/layout/plot/PublicPlotContext.d.ts +131 -0
  111. package/dist/layout/plot/PublicPlotContext.js +240 -0
  112. package/dist/layout/plot/Slice.d.ts +44 -0
  113. package/dist/layout/plot/Slice.js +100 -0
  114. package/dist/layout/plot/usePlot.d.ts +9 -0
  115. package/dist/layout/plot/usePlot.js +13 -0
  116. package/dist/layout/scales/EdgeTicks.d.ts +39 -0
  117. package/dist/layout/scales/EdgeTicks.js +82 -0
  118. package/dist/layout/scales/NiceTicks.d.ts +40 -0
  119. package/dist/layout/scales/NiceTicks.js +72 -0
  120. package/dist/layout/scales/ScalesLayout.svelte +275 -206
  121. package/dist/layout/scales/ScalesLayout.svelte.d.ts +7 -1
  122. package/dist/layout/scales/SveltePlotScale.d.ts +15 -0
  123. package/dist/layout/scales/SveltePlotScale.js +79 -0
  124. package/dist/layout/styles/StylesLayout.svelte +65 -65
  125. package/dist/layout/styles/TileLayer.svelte +78 -76
  126. package/dist/layout/styles/TileLayer.svelte.d.ts +1 -1
  127. package/dist/layout/styles/ValueLabels.d.ts +97 -0
  128. package/dist/layout/styles/ValueLabels.js +238 -0
  129. package/dist/layout/timeline/Timeline.svelte +83 -74
  130. package/dist/layout/timeline/Timeline.svelte.d.ts +2 -0
  131. package/dist/layout/timeline/TimelineFrame.svelte +86 -0
  132. package/dist/layout/timeline/TimelineFrame.svelte.d.ts +16 -0
  133. package/dist/layout/timeline/TimelineLayout.svelte +140 -169
  134. package/dist/layout/timeline/TimelineLayout.svelte.d.ts +7 -3
  135. package/dist/layout/timeline/TimelinePlayer.svelte +195 -0
  136. package/dist/layout/timeline/TimelinePlayer.svelte.d.ts +7 -0
  137. package/dist/layout/timeline/TimelineRule.svelte +51 -0
  138. package/dist/layout/timeline/TimelineRule.svelte.d.ts +7 -0
  139. package/dist/layout/timeline/TimelineState.svelte.d.ts +90 -0
  140. package/dist/layout/timeline/TimelineState.svelte.js +260 -0
  141. package/dist/layout/timeline/TimelineSteps.d.ts +24 -0
  142. package/dist/layout/timeline/TimelineSteps.js +48 -0
  143. package/dist/layout/timeline/TimelineTime.d.ts +18 -0
  144. package/dist/layout/timeline/TimelineTime.js +117 -0
  145. package/dist/layout/tooltip/Tooltip.svelte +85 -85
  146. package/dist/layout/tooltip/Tooltip.svelte.d.ts +45 -24
  147. package/dist/layout/tooltip/TooltipState.svelte.d.ts +67 -0
  148. package/dist/layout/tooltip/TooltipState.svelte.js +126 -0
  149. package/dist/markers/MarkerKinds.d.ts +173 -0
  150. package/dist/markers/MarkerKinds.js +51 -0
  151. package/dist/markers/area/AreaMarker.svelte +110 -0
  152. package/dist/markers/area/AreaMarker.svelte.d.ts +7 -0
  153. package/dist/markers/arrow/ArrowMarker.svelte +28 -0
  154. package/dist/markers/arrow/ArrowMarker.svelte.d.ts +7 -0
  155. package/dist/markers/{BarMarker.svelte → bar/BarMarker.svelte} +54 -52
  156. package/dist/markers/{BarMarker.svelte.d.ts → bar/BarMarker.svelte.d.ts} +1 -1
  157. package/dist/markers/bollinger/BollingerMarker.svelte +44 -0
  158. package/dist/markers/bollinger/BollingerMarker.svelte.d.ts +7 -0
  159. package/dist/markers/box/BoxMarker.svelte +143 -0
  160. package/dist/markers/box/BoxMarker.svelte.d.ts +7 -0
  161. package/dist/markers/brush/BrushMarker.svelte +32 -0
  162. package/dist/markers/brush/BrushMarker.svelte.d.ts +7 -0
  163. package/dist/markers/cell/CellMarker.svelte +27 -0
  164. package/dist/markers/{CellMarker.svelte.d.ts → cell/CellMarker.svelte.d.ts} +1 -1
  165. package/dist/markers/contour/ContourClipMarker.svelte +83 -0
  166. package/dist/markers/{ContourClipMarker.svelte.d.ts → contour/ContourClipMarker.svelte.d.ts} +1 -1
  167. package/dist/markers/contour/ContourMarker.svelte +28 -0
  168. package/dist/markers/{ContourMarker.svelte.d.ts → contour/ContourMarker.svelte.d.ts} +1 -1
  169. package/dist/markers/delaunay/DelaunayLinkMarker.svelte +26 -0
  170. package/dist/markers/delaunay/DelaunayLinkMarker.svelte.d.ts +7 -0
  171. package/dist/markers/delaunay/DelaunayMeshMarker.svelte +26 -0
  172. package/dist/markers/delaunay/DelaunayMeshMarker.svelte.d.ts +7 -0
  173. package/dist/markers/delta/Delta.d.ts +21 -0
  174. package/dist/markers/delta/Delta.js +60 -0
  175. package/dist/markers/delta/DeltaMarker.svelte +96 -0
  176. package/dist/markers/{DeltaMarker.svelte.d.ts → delta/DeltaMarker.svelte.d.ts} +2 -2
  177. package/dist/markers/density/DensityMarker.svelte +63 -0
  178. package/dist/markers/density/DensityMarker.svelte.d.ts +7 -0
  179. package/dist/markers/difference/DifferenceMarker.svelte +30 -0
  180. package/dist/markers/difference/DifferenceMarker.svelte.d.ts +7 -0
  181. package/dist/markers/dot/DotMarker.svelte +102 -0
  182. package/dist/markers/{DotMarker.svelte.d.ts → dot/DotMarker.svelte.d.ts} +5 -17
  183. package/dist/markers/geo/GeoFeaturesMarker.svelte +39 -0
  184. package/dist/markers/{GeoFeaturesMarker.svelte.d.ts → geo/GeoFeaturesMarker.svelte.d.ts} +1 -1
  185. package/dist/markers/geo/GeoHoverMarker.svelte +28 -0
  186. package/dist/markers/{GeoHoverMarker.svelte.d.ts → geo/GeoHoverMarker.svelte.d.ts} +2 -2
  187. package/dist/markers/geo/GraticuleMarker.svelte +18 -0
  188. package/dist/markers/{GraticuleMarker.svelte.d.ts → geo/GraticuleMarker.svelte.d.ts} +1 -1
  189. package/dist/markers/geo/SphereMarker.svelte +15 -0
  190. package/dist/markers/{SphereMarker.svelte.d.ts → geo/SphereMarker.svelte.d.ts} +1 -1
  191. package/dist/markers/hover/HoverMarker.svelte +252 -0
  192. package/dist/markers/{HoverMarker.svelte.d.ts → hover/HoverMarker.svelte.d.ts} +10 -10
  193. package/dist/markers/hull/HullMarker.svelte +25 -0
  194. package/dist/markers/hull/HullMarker.svelte.d.ts +7 -0
  195. package/dist/markers/image/ImageMarker.svelte +22 -0
  196. package/dist/markers/image/ImageMarker.svelte.d.ts +7 -0
  197. package/dist/markers/inset/InsetMarker.svelte +184 -150
  198. package/dist/markers/inset/InsetMarker.svelte.d.ts +4 -4
  199. package/dist/markers/inset/insetLayout.d.ts +1 -1
  200. package/dist/markers/inset/insetLayout.js +6 -2
  201. package/dist/markers/inset/insetProjection.d.ts +1 -1
  202. package/dist/markers/inset/insetProjection.js +3 -3
  203. package/dist/markers/line/LineMarker.svelte +30 -0
  204. package/dist/markers/{LineMarker.svelte.d.ts → line/LineMarker.svelte.d.ts} +1 -1
  205. package/dist/markers/link/LinkMarker.svelte +47 -0
  206. package/dist/markers/{LinkMarker.svelte.d.ts → link/LinkMarker.svelte.d.ts} +1 -1
  207. package/dist/markers/raster/RasterMarker.svelte +31 -0
  208. package/dist/markers/raster/RasterMarker.svelte.d.ts +7 -0
  209. package/dist/markers/rect/RectMarker.svelte +62 -0
  210. package/dist/markers/rect/RectMarker.svelte.d.ts +7 -0
  211. package/dist/markers/regression/RegressionMarker.svelte +60 -0
  212. package/dist/markers/regression/RegressionMarker.svelte.d.ts +7 -0
  213. package/dist/markers/rule/RuleMarker.svelte +47 -0
  214. package/dist/markers/{RuleMarker.svelte.d.ts → rule/RuleMarker.svelte.d.ts} +2 -5
  215. package/dist/markers/text/Declutter.d.ts +35 -0
  216. package/dist/markers/text/Declutter.js +157 -0
  217. package/dist/markers/text/TextMarker.svelte +244 -0
  218. package/dist/markers/{TextMarker.svelte.d.ts → text/TextMarker.svelte.d.ts} +5 -9
  219. package/dist/markers/tick/TickMarker.svelte +44 -0
  220. package/dist/markers/tick/TickMarker.svelte.d.ts +7 -0
  221. package/dist/markers/trail/TrailMarker.svelte +27 -0
  222. package/dist/markers/trail/TrailMarker.svelte.d.ts +7 -0
  223. package/dist/markers/utils/BandNudge.d.ts +22 -0
  224. package/dist/markers/utils/BandNudge.js +23 -0
  225. package/dist/markers/utils/MarkerChannels.d.ts +49 -0
  226. package/dist/markers/utils/MarkerChannels.js +97 -0
  227. package/dist/markers/vector/VectorMarker.svelte +29 -0
  228. package/dist/markers/{VectorMarker.svelte.d.ts → vector/VectorMarker.svelte.d.ts} +1 -1
  229. package/dist/markers/voronoi/VoronoiMarker.svelte +26 -0
  230. package/dist/markers/voronoi/VoronoiMarker.svelte.d.ts +7 -0
  231. package/dist/markers/voronoi/VoronoiMeshMarker.svelte +26 -0
  232. package/dist/markers/voronoi/VoronoiMeshMarker.svelte.d.ts +7 -0
  233. package/dist/markers/waffle/WaffleMarker.svelte +56 -0
  234. package/dist/markers/waffle/WaffleMarker.svelte.d.ts +7 -0
  235. package/dist/phases/Pipeline.d.ts +108 -0
  236. package/dist/phases/Pipeline.js +227 -0
  237. package/dist/phases/data/DataPhase.d.ts +19 -0
  238. package/dist/phases/data/DataPhase.js +85 -0
  239. package/dist/phases/data/PlotAxes.d.ts +75 -0
  240. package/dist/phases/data/PlotAxes.js +151 -0
  241. package/dist/phases/facet/FacetPanels.d.ts +54 -0
  242. package/dist/phases/facet/FacetPanels.js +95 -0
  243. package/dist/phases/facet/FacetPhase.d.ts +11 -0
  244. package/dist/phases/facet/FacetPhase.js +28 -0
  245. package/dist/phases/hover/HoverPhase.d.ts +36 -0
  246. package/dist/phases/hover/HoverPhase.js +109 -0
  247. package/dist/phases/mapping/MappingPhase.d.ts +17 -0
  248. package/dist/phases/mapping/MappingPhase.js +40 -0
  249. package/dist/phases/markers/MarkersPhase.d.ts +14 -0
  250. package/dist/phases/markers/MarkersPhase.js +27 -0
  251. package/dist/phases/scales/MarkerAxisValues.d.ts +12 -0
  252. package/dist/phases/scales/MarkerAxisValues.js +34 -0
  253. package/dist/phases/scales/ScalesPhase.d.ts +29 -0
  254. package/dist/phases/scales/ScalesPhase.js +153 -0
  255. package/dist/phases/sharedScales/SharedScalesPhase.d.ts +58 -0
  256. package/dist/phases/sharedScales/SharedScalesPhase.js +171 -0
  257. package/dist/phases/statistics/AuthorMarkers.d.ts +43 -0
  258. package/dist/phases/statistics/AuthorMarkers.js +69 -0
  259. package/dist/phases/statistics/MarkerGrouping.d.ts +48 -0
  260. package/dist/phases/statistics/MarkerGrouping.js +113 -0
  261. package/dist/phases/statistics/Statistics.d.ts +53 -0
  262. package/dist/phases/statistics/Statistics.js +156 -0
  263. package/dist/phases/statistics/StatisticsPhase.d.ts +18 -0
  264. package/dist/phases/statistics/StatisticsPhase.js +67 -0
  265. package/dist/phases/statistics/methods/BollingerStatistic.d.ts +9 -0
  266. package/dist/phases/statistics/methods/BollingerStatistic.js +18 -0
  267. package/dist/phases/statistics/methods/BoxStatistic.d.ts +9 -0
  268. package/dist/phases/statistics/methods/BoxStatistic.js +18 -0
  269. package/dist/phases/statistics/methods/Density2dStatistic.d.ts +9 -0
  270. package/dist/phases/statistics/methods/Density2dStatistic.js +18 -0
  271. package/dist/phases/statistics/methods/DensityStatistic.d.ts +12 -0
  272. package/dist/phases/statistics/methods/DensityStatistic.js +29 -0
  273. package/dist/phases/statistics/methods/MovingAverageStatistic.d.ts +12 -0
  274. package/dist/phases/statistics/methods/MovingAverageStatistic.js +30 -0
  275. package/dist/phases/statistics/methods/RegressionStatistic.d.ts +9 -0
  276. package/dist/phases/statistics/methods/RegressionStatistic.js +21 -0
  277. package/dist/phases/styles/StylesPhase.d.ts +13 -0
  278. package/dist/phases/styles/StylesPhase.js +17 -0
  279. package/dist/phases/tooltip/TooltipPhase.d.ts +14 -0
  280. package/dist/phases/tooltip/TooltipPhase.js +17 -0
  281. package/dist/phases/transforms/ProcessedPositions.d.ts +30 -0
  282. package/dist/phases/transforms/ProcessedPositions.js +74 -0
  283. package/dist/phases/transforms/Transforms.d.ts +42 -0
  284. package/dist/phases/transforms/Transforms.js +130 -0
  285. package/dist/phases/transforms/TransformsPhase.d.ts +27 -0
  286. package/dist/phases/transforms/TransformsPhase.js +205 -0
  287. package/dist/phases/transforms/methods/AnchorBar.d.ts +13 -0
  288. package/dist/phases/transforms/methods/AnchorBar.js +21 -0
  289. package/dist/phases/transforms/methods/BinTransform.d.ts +7 -0
  290. package/dist/phases/transforms/methods/BinTransform.js +48 -0
  291. package/dist/phases/transforms/methods/DensityTransform.d.ts +6 -0
  292. package/dist/phases/transforms/methods/DensityTransform.js +13 -0
  293. package/dist/phases/transforms/methods/GroupTransform.d.ts +8 -0
  294. package/dist/phases/transforms/methods/GroupTransform.js +39 -0
  295. package/dist/phases/transforms/methods/NormalizeTransform.d.ts +10 -0
  296. package/dist/phases/transforms/methods/NormalizeTransform.js +30 -0
  297. package/dist/phases/transforms/methods/OrderTransform.d.ts +16 -0
  298. package/dist/phases/transforms/methods/OrderTransform.js +43 -0
  299. package/dist/phases/transforms/methods/PerGroup.d.ts +11 -0
  300. package/dist/phases/transforms/methods/PerGroup.js +39 -0
  301. package/dist/phases/transforms/methods/PositionTransform.d.ts +15 -0
  302. package/dist/phases/transforms/methods/PositionTransform.js +74 -0
  303. package/dist/phases/transforms/methods/StackTransform.d.ts +8 -0
  304. package/dist/phases/transforms/methods/StackTransform.js +29 -0
  305. package/dist/phases/transforms/methods/WindowTransform.d.ts +8 -0
  306. package/dist/phases/transforms/methods/WindowTransform.js +23 -0
  307. package/dist/plots/area/Plot.svelte +42 -0
  308. package/dist/plots/{heatmap/ValueLabels.svelte.d.ts → area/Plot.svelte.d.ts} +8 -16
  309. package/dist/plots/area/defaults.d.ts +4 -0
  310. package/dist/plots/area/defaults.js +21 -0
  311. package/dist/plots/area/markers.d.ts +14 -0
  312. package/dist/plots/area/markers.js +39 -0
  313. package/dist/plots/bar/Plot.svelte +33 -438
  314. package/dist/plots/bar/Plot.svelte.d.ts +5 -8
  315. package/dist/plots/bar/defaults.d.ts +9 -0
  316. package/dist/plots/bar/defaults.js +88 -0
  317. package/dist/plots/bar/markers.d.ts +45 -0
  318. package/dist/plots/bar/markers.js +233 -0
  319. package/dist/plots/box/BoxSummaries.d.ts +19 -0
  320. package/dist/plots/box/BoxSummaries.js +101 -0
  321. package/dist/plots/box/Plot.svelte +42 -0
  322. package/dist/plots/box/Plot.svelte.d.ts +26 -0
  323. package/dist/plots/box/defaults.d.ts +12 -0
  324. package/dist/plots/box/defaults.js +34 -0
  325. package/dist/plots/box/markers.d.ts +12 -0
  326. package/dist/plots/box/markers.js +34 -0
  327. package/dist/plots/geo/Core.svelte +151 -0
  328. package/dist/plots/geo/Core.svelte.d.ts +25 -0
  329. package/dist/plots/geo/Plot.svelte +103 -324
  330. package/dist/plots/geo/Plot.svelte.d.ts +5 -9
  331. package/dist/plots/geo/defaults.d.ts +4 -0
  332. package/dist/plots/geo/defaults.js +16 -0
  333. package/dist/plots/geo/features.svelte.d.ts +5 -0
  334. package/dist/plots/geo/features.svelte.js +44 -0
  335. package/dist/plots/geo/phases/data.d.ts +6 -0
  336. package/dist/plots/geo/phases/data.js +26 -0
  337. package/dist/plots/geo/phases/hover.d.ts +9 -0
  338. package/dist/plots/geo/phases/hover.js +45 -0
  339. package/dist/plots/geo/phases/markers.d.ts +9 -0
  340. package/dist/plots/geo/phases/markers.js +75 -0
  341. package/dist/plots/geo/phases/scales.d.ts +10 -0
  342. package/dist/plots/geo/phases/scales.js +85 -0
  343. package/dist/plots/geo/phases/tooltip.d.ts +3 -0
  344. package/dist/plots/geo/phases/tooltip.js +5 -0
  345. package/dist/plots/geo/slices.d.ts +18 -0
  346. package/dist/plots/geo/slices.js +59 -0
  347. package/dist/plots/heatmap/Plot.svelte +55 -249
  348. package/dist/plots/heatmap/Plot.svelte.d.ts +5 -8
  349. package/dist/plots/heatmap/defaults.d.ts +11 -0
  350. package/dist/plots/heatmap/defaults.js +91 -0
  351. package/dist/plots/heatmap/markers.d.ts +17 -0
  352. package/dist/plots/heatmap/markers.js +142 -0
  353. package/dist/plots/histogram/Plot.svelte +45 -0
  354. package/dist/plots/histogram/Plot.svelte.d.ts +26 -0
  355. package/dist/plots/histogram/defaults.d.ts +9 -0
  356. package/dist/plots/histogram/defaults.js +87 -0
  357. package/dist/plots/histogram/markers.d.ts +18 -0
  358. package/dist/plots/histogram/markers.js +89 -0
  359. package/dist/plots/line/Plot.svelte +37 -268
  360. package/dist/plots/line/Plot.svelte.d.ts +3 -7
  361. package/dist/plots/line/defaults.d.ts +4 -0
  362. package/dist/plots/line/defaults.js +29 -0
  363. package/dist/plots/line/markers.d.ts +49 -0
  364. package/dist/plots/line/markers.js +199 -0
  365. package/dist/plots/pyramid/Plot.svelte +34 -362
  366. package/dist/plots/pyramid/Plot.svelte.d.ts +5 -8
  367. package/dist/plots/pyramid/defaults.d.ts +13 -0
  368. package/dist/plots/pyramid/defaults.js +87 -0
  369. package/dist/plots/pyramid/markers.d.ts +21 -0
  370. package/dist/plots/pyramid/markers.js +156 -0
  371. package/dist/plots/scatter/Plot.svelte +34 -288
  372. package/dist/plots/scatter/Plot.svelte.d.ts +5 -8
  373. package/dist/plots/scatter/defaults.d.ts +4 -0
  374. package/dist/plots/scatter/defaults.js +80 -0
  375. package/dist/plots/scatter/markers.d.ts +19 -0
  376. package/dist/plots/scatter/markers.js +129 -0
  377. package/dist/plots/utils/ChannelName.d.ts +9 -0
  378. package/dist/plots/utils/ChannelName.js +14 -0
  379. package/dist/plots/utils/accessors.d.ts +1 -1
  380. package/dist/plots/utils/accessors.js +4 -2
  381. package/dist/plots/utils/gaps.d.ts +14 -19
  382. package/dist/plots/utils/gaps.js +38 -18
  383. package/dist/plots/utils/geoAccessors.d.ts +8 -8
  384. package/dist/plots/utils/geoAccessors.js +16 -12
  385. package/dist/plots/utils/geoSegments.d.ts +24 -9
  386. package/dist/plots/utils/geoSegments.js +31 -11
  387. package/dist/plots/utils/segments.d.ts +5 -16
  388. package/dist/plots/utils/segments.js +40 -52
  389. package/dist/plots/utils/tiles.d.ts +9 -9
  390. package/dist/plots/utils/tiles.js +35 -25
  391. package/dist/plots/utils/topojson.d.ts +1 -1
  392. package/dist/plots/utils/topojson.js +3 -3
  393. package/dist/stores/device.js +2 -4
  394. package/dist/types/configuration/styling.d.ts +174 -27
  395. package/dist/types/layout/box.d.ts +24 -0
  396. package/dist/types/layout/composer.d.ts +39 -0
  397. package/dist/types/layout/coordinates.d.ts +14 -14
  398. package/dist/types/layout/facet.d.ts +44 -22
  399. package/dist/types/layout/figure.d.ts +7 -0
  400. package/dist/types/layout/geometry.d.ts +6 -2
  401. package/dist/types/layout/grid.d.ts +66 -0
  402. package/dist/types/layout/hover.d.ts +48 -0
  403. package/dist/types/layout/legend.d.ts +256 -55
  404. package/dist/types/layout/mapping.d.ts +68 -0
  405. package/dist/types/layout/plot.d.ts +41 -0
  406. package/dist/types/layout/scales.d.ts +108 -24
  407. package/dist/types/layout/scales.js +19 -1
  408. package/dist/types/layout/statistics/bollinger.d.ts +18 -0
  409. package/dist/types/layout/statistics/box.d.ts +8 -0
  410. package/dist/types/layout/statistics/box.js +1 -0
  411. package/dist/types/layout/statistics/density.d.ts +27 -0
  412. package/dist/types/layout/statistics/density.js +1 -0
  413. package/dist/types/layout/statistics/index.d.ts +46 -0
  414. package/dist/types/layout/statistics/index.js +1 -0
  415. package/dist/types/layout/statistics/movingAverage.d.ts +12 -0
  416. package/dist/types/layout/statistics/movingAverage.js +1 -0
  417. package/dist/types/layout/statistics/regression.d.ts +20 -0
  418. package/dist/types/layout/statistics/regression.js +1 -0
  419. package/dist/types/layout/styles.d.ts +24 -35
  420. package/dist/types/layout/timeline.d.ts +62 -6
  421. package/dist/types/layout/tooltip.d.ts +7 -85
  422. package/dist/types/markers/all.d.ts +3 -4
  423. package/dist/types/markers/axis/area.d.ts +12 -0
  424. package/dist/types/markers/axis/area.js +1 -0
  425. package/dist/types/markers/axis/arrow.d.ts +15 -0
  426. package/dist/types/markers/axis/arrow.js +1 -0
  427. package/dist/types/markers/axis/axisBasedMarkersConfig.d.ts +29 -0
  428. package/dist/types/markers/axis/axisBasedMarkersConfig.js +1 -0
  429. package/dist/types/markers/axis/bar.d.ts +18 -0
  430. package/dist/types/markers/axis/bar.js +1 -0
  431. package/dist/types/markers/axis/bollinger.d.ts +6 -0
  432. package/dist/types/markers/axis/bollinger.js +1 -0
  433. package/dist/types/markers/axis/box.d.ts +14 -0
  434. package/dist/types/markers/axis/box.js +1 -0
  435. package/dist/types/markers/axis/brush.d.ts +28 -0
  436. package/dist/types/markers/axis/brush.js +1 -0
  437. package/dist/types/markers/axis/cell.d.ts +9 -0
  438. package/dist/types/markers/axis/cell.js +1 -0
  439. package/dist/types/markers/axis/component.d.ts +9 -0
  440. package/dist/types/markers/axis/component.js +1 -0
  441. package/dist/types/markers/axis/curveName.d.ts +2 -0
  442. package/dist/types/markers/axis/curveName.js +1 -0
  443. package/dist/types/markers/axis/delaunayLink.d.ts +7 -0
  444. package/dist/types/markers/axis/delaunayLink.js +1 -0
  445. package/dist/types/markers/axis/delaunayMesh.d.ts +7 -0
  446. package/dist/types/markers/axis/delaunayMesh.js +1 -0
  447. package/dist/types/markers/axis/delta.d.ts +27 -0
  448. package/dist/types/markers/axis/delta.js +1 -0
  449. package/dist/types/markers/axis/density.d.ts +12 -0
  450. package/dist/types/markers/axis/density.js +1 -0
  451. package/dist/types/markers/axis/difference.d.ts +12 -0
  452. package/dist/types/markers/axis/difference.js +1 -0
  453. package/dist/types/markers/axis/hover.d.ts +21 -0
  454. package/dist/types/markers/axis/hover.js +1 -0
  455. package/dist/types/markers/axis/hull.d.ts +7 -0
  456. package/dist/types/markers/axis/hull.js +1 -0
  457. package/dist/types/markers/axis/image.d.ts +12 -0
  458. package/dist/types/markers/axis/image.js +1 -0
  459. package/dist/types/markers/axis/line.d.ts +7 -0
  460. package/dist/types/markers/axis/line.js +1 -0
  461. package/dist/types/markers/axis/raster.d.ts +18 -0
  462. package/dist/types/markers/axis/raster.js +1 -0
  463. package/dist/types/markers/axis/rect.d.ts +15 -0
  464. package/dist/types/markers/axis/rect.js +1 -0
  465. package/dist/types/markers/axis/regression.d.ts +6 -0
  466. package/dist/types/markers/axis/regression.js +1 -0
  467. package/dist/types/markers/axis/rule.d.ts +15 -0
  468. package/dist/types/markers/axis/rule.js +1 -0
  469. package/dist/types/markers/axis/tick.d.ts +8 -0
  470. package/dist/types/markers/axis/tick.js +1 -0
  471. package/dist/types/markers/axis/trail.d.ts +14 -0
  472. package/dist/types/markers/axis/trail.js +1 -0
  473. package/dist/types/markers/axis/voronoi.d.ts +7 -0
  474. package/dist/types/markers/axis/voronoi.js +1 -0
  475. package/dist/types/markers/axis/voronoiMesh.d.ts +7 -0
  476. package/dist/types/markers/axis/voronoiMesh.js +1 -0
  477. package/dist/types/markers/axis/waffle.d.ts +13 -0
  478. package/dist/types/markers/axis/waffle.js +1 -0
  479. package/dist/types/markers/basic/basicMarkersConfig.d.ts +4 -0
  480. package/dist/types/markers/basic/basicMarkersConfig.js +1 -0
  481. package/dist/types/markers/basic/dot.d.ts +9 -0
  482. package/dist/types/markers/basic/dot.js +1 -0
  483. package/dist/types/markers/basic/text.d.ts +60 -0
  484. package/dist/types/markers/basic/text.js +1 -0
  485. package/dist/types/markers/basic.d.ts +4 -0
  486. package/dist/types/markers/basic.js +1 -0
  487. package/dist/types/markers/channels/commonMarkerConfig.d.ts +26 -0
  488. package/dist/types/markers/channels/commonMarkerConfig.js +1 -0
  489. package/dist/types/markers/channels/commonMarkerConfigWithArea.d.ts +6 -0
  490. package/dist/types/markers/channels/commonMarkerConfigWithArea.js +1 -0
  491. package/dist/types/markers/channels/commonMarkerConfigWithColor.d.ts +5 -0
  492. package/dist/types/markers/channels/commonMarkerConfigWithColor.js +1 -0
  493. package/dist/types/markers/channels/commonMarkerConfigWithInterval.d.ts +9 -0
  494. package/dist/types/markers/channels/commonMarkerConfigWithInterval.js +1 -0
  495. package/dist/types/markers/channels/commonMarkerConfigWithRadius.d.ts +5 -0
  496. package/dist/types/markers/channels/commonMarkerConfigWithRadius.js +1 -0
  497. package/dist/types/markers/channels/commonMarkerConfigWithSymbol.d.ts +5 -0
  498. package/dist/types/markers/channels/commonMarkerConfigWithSymbol.js +1 -0
  499. package/dist/types/markers/channels/commonMarkerConfigWithWeight.d.ts +5 -0
  500. package/dist/types/markers/channels/commonMarkerConfigWithWeight.js +1 -0
  501. package/dist/types/markers/common.d.ts +30 -103
  502. package/dist/types/markers/common.js +29 -1
  503. package/dist/types/markers/geo/contour.d.ts +27 -0
  504. package/dist/types/markers/geo/contour.js +1 -0
  505. package/dist/types/markers/geo/features.d.ts +12 -0
  506. package/dist/types/markers/geo/features.js +1 -0
  507. package/dist/types/markers/geo/geoComponent.d.ts +7 -0
  508. package/dist/types/markers/geo/geoComponent.js +1 -0
  509. package/dist/types/markers/geo/geoHover.d.ts +6 -0
  510. package/dist/types/markers/geo/geoHover.js +1 -0
  511. package/dist/types/markers/geo/geoMarkersConfig.d.ts +11 -0
  512. package/dist/types/markers/geo/geoMarkersConfig.js +1 -0
  513. package/dist/types/markers/geo/graticule.d.ts +11 -0
  514. package/dist/types/markers/geo/graticule.js +1 -0
  515. package/dist/types/markers/geo/inset.d.ts +50 -0
  516. package/dist/types/markers/geo/inset.js +1 -0
  517. package/dist/types/markers/geo/link.d.ts +13 -0
  518. package/dist/types/markers/geo/link.js +1 -0
  519. package/dist/types/markers/geo/sphere.d.ts +11 -0
  520. package/dist/types/markers/geo/sphere.js +1 -0
  521. package/dist/types/markers/geo/vector.d.ts +17 -0
  522. package/dist/types/markers/geo/vector.js +1 -0
  523. package/dist/types/markers/geo.d.ts +10 -212
  524. package/dist/types/markers/geo.js +10 -1
  525. package/dist/types/markers/traits.d.ts +22 -0
  526. package/dist/types/markers/traits.js +1 -0
  527. package/dist/types/misc/easing.js +1 -0
  528. package/dist/types/misc/viewport.js +1 -0
  529. package/dist/types/phases/data/axes.d.ts +18 -0
  530. package/dist/types/phases/data/axes.js +1 -0
  531. package/dist/types/phases/data/phase.d.ts +26 -0
  532. package/dist/types/phases/data/phase.js +2 -0
  533. package/dist/types/phases/facet/phase.d.ts +18 -0
  534. package/dist/types/phases/facet/phase.js +1 -0
  535. package/dist/types/phases/hover/phase.d.ts +40 -0
  536. package/dist/types/phases/hover/phase.js +1 -0
  537. package/dist/types/phases/index.d.ts +14 -0
  538. package/dist/types/phases/index.js +1 -0
  539. package/dist/types/phases/kind.d.ts +59 -0
  540. package/dist/types/phases/kind.js +1 -0
  541. package/dist/types/phases/mapping/phase.d.ts +5 -0
  542. package/dist/types/phases/mapping/phase.js +1 -0
  543. package/dist/types/phases/markers/phase.d.ts +13 -0
  544. package/dist/types/phases/markers/phase.js +1 -0
  545. package/dist/types/phases/pipeline.d.ts +10 -0
  546. package/dist/types/phases/pipeline.js +1 -0
  547. package/dist/types/phases/scales/phase.d.ts +26 -0
  548. package/dist/types/phases/scales/phase.js +1 -0
  549. package/dist/types/phases/sharedScales/phase.d.ts +12 -0
  550. package/dist/types/phases/sharedScales/phase.js +1 -0
  551. package/dist/types/phases/stage.d.ts +12 -0
  552. package/dist/types/phases/stage.js +1 -0
  553. package/dist/types/phases/state.d.ts +76 -0
  554. package/dist/types/phases/state.js +1 -0
  555. package/dist/types/phases/statistics/phase.d.ts +43 -0
  556. package/dist/types/phases/statistics/phase.js +1 -0
  557. package/dist/types/phases/statistics/source.d.ts +20 -0
  558. package/dist/types/phases/statistics/source.js +7 -0
  559. package/dist/types/phases/styles/phase.d.ts +24 -0
  560. package/dist/types/phases/styles/phase.js +1 -0
  561. package/dist/types/phases/transforms/adapter.d.ts +27 -0
  562. package/dist/types/phases/transforms/adapter.js +1 -0
  563. package/dist/types/phases/transforms/phase.d.ts +50 -0
  564. package/dist/types/phases/transforms/phase.js +1 -0
  565. package/dist/types/plots/area/props.d.ts +10 -0
  566. package/dist/types/plots/area/props.js +1 -0
  567. package/dist/types/plots/area/state.d.ts +6 -0
  568. package/dist/types/plots/area/state.js +1 -0
  569. package/dist/types/plots/bar/props.d.ts +10 -0
  570. package/dist/types/plots/bar/props.js +1 -0
  571. package/dist/types/plots/bar/state.d.ts +6 -0
  572. package/dist/types/plots/bar/state.js +1 -0
  573. package/dist/types/plots/box/props.d.ts +10 -0
  574. package/dist/types/plots/box/props.js +1 -0
  575. package/dist/types/plots/box/state.d.ts +23 -0
  576. package/dist/types/plots/box/state.js +1 -0
  577. package/dist/types/plots/camera.d.ts +7 -17
  578. package/dist/types/plots/constants.d.ts +16 -8
  579. package/dist/types/plots/data/common.d.ts +25 -17
  580. package/dist/types/plots/data/geo.d.ts +26 -12
  581. package/dist/types/plots/gaps.d.ts +19 -38
  582. package/dist/types/plots/geo/props.d.ts +23 -0
  583. package/dist/types/plots/geo/props.js +1 -0
  584. package/dist/types/plots/geo/state.d.ts +82 -0
  585. package/dist/types/plots/geo/state.js +1 -0
  586. package/dist/types/plots/heatmap/props.d.ts +10 -0
  587. package/dist/types/plots/heatmap/props.js +1 -0
  588. package/dist/types/plots/heatmap/state.d.ts +28 -0
  589. package/dist/types/plots/heatmap/state.js +1 -0
  590. package/dist/types/plots/histogram/props.d.ts +18 -0
  591. package/dist/types/plots/histogram/props.js +1 -0
  592. package/dist/types/plots/histogram/state.d.ts +6 -0
  593. package/dist/types/plots/histogram/state.js +1 -0
  594. package/dist/types/plots/line/props.d.ts +10 -0
  595. package/dist/types/plots/line/props.js +1 -0
  596. package/dist/types/plots/line/state.d.ts +9 -0
  597. package/dist/types/plots/line/state.js +1 -0
  598. package/dist/types/plots/props.d.ts +145 -35
  599. package/dist/types/plots/pyramid/props.d.ts +10 -0
  600. package/dist/types/plots/pyramid/props.js +1 -0
  601. package/dist/types/plots/pyramid/state.d.ts +16 -0
  602. package/dist/types/plots/pyramid/state.js +1 -0
  603. package/dist/types/plots/scatter/props.d.ts +10 -0
  604. package/dist/types/plots/scatter/props.js +1 -0
  605. package/dist/types/plots/scatter/state.d.ts +6 -0
  606. package/dist/types/plots/scatter/state.js +1 -0
  607. package/dist/types/plots/segments/common.d.ts +1 -1
  608. package/dist/types/plots/segments/config.d.ts +12 -6
  609. package/dist/types/plots/styling.d.ts +5 -5
  610. package/dist/types/transforms/bin.d.ts +84 -0
  611. package/dist/types/transforms/bin.js +28 -0
  612. package/dist/types/transforms/bollinger.d.ts +21 -0
  613. package/dist/types/transforms/bollinger.js +1 -0
  614. package/dist/types/transforms/common.d.ts +29 -0
  615. package/dist/types/transforms/common.js +16 -0
  616. package/dist/types/transforms/density.d.ts +45 -0
  617. package/dist/types/transforms/density.js +10 -0
  618. package/dist/types/transforms/filter.d.ts +12 -0
  619. package/dist/types/transforms/filter.js +14 -0
  620. package/dist/types/transforms/group.d.ts +70 -0
  621. package/dist/types/transforms/group.js +8 -0
  622. package/dist/types/transforms/index.d.ts +36 -0
  623. package/dist/types/transforms/index.js +1 -0
  624. package/dist/types/transforms/interval.d.ts +21 -0
  625. package/dist/types/transforms/interval.js +14 -0
  626. package/dist/types/transforms/jitter.d.ts +34 -0
  627. package/dist/types/transforms/jitter.js +1 -0
  628. package/dist/types/transforms/map.d.ts +24 -0
  629. package/dist/types/transforms/map.js +1 -0
  630. package/dist/types/transforms/normalize.d.ts +36 -0
  631. package/dist/types/transforms/normalize.js +1 -0
  632. package/dist/types/transforms/select.d.ts +15 -0
  633. package/dist/types/transforms/select.js +1 -0
  634. package/dist/types/transforms/shift.d.ts +20 -0
  635. package/dist/types/transforms/shift.js +1 -0
  636. package/dist/types/transforms/sort.d.ts +31 -0
  637. package/dist/types/transforms/sort.js +14 -0
  638. package/dist/types/transforms/stack.d.ts +64 -0
  639. package/dist/types/transforms/stack.js +12 -0
  640. package/dist/types/transforms/window.d.ts +29 -0
  641. package/dist/types/transforms/window.js +1 -0
  642. package/dist/utils/ContinuousDomain.d.ts +12 -0
  643. package/dist/utils/ContinuousDomain.js +19 -0
  644. package/dist/utils/Interpolation.d.ts +26 -0
  645. package/dist/utils/Interpolation.js +65 -0
  646. package/dist/utils/{color.d.ts → color/contrast.d.ts} +0 -5
  647. package/dist/utils/color/contrast.js +40 -0
  648. package/dist/utils/color/cssColor.d.ts +4 -0
  649. package/dist/utils/color/cssColor.js +77 -0
  650. package/dist/utils/color/index.d.ts +3 -0
  651. package/dist/utils/color/index.js +3 -0
  652. package/dist/utils/color/ramp.d.ts +17 -0
  653. package/dist/utils/color/ramp.js +110 -0
  654. package/dist/utils/grouping.d.ts +9 -5
  655. package/dist/utils/grouping.js +19 -10
  656. package/dist/utils/merge.d.ts +7 -0
  657. package/dist/utils/merge.js +17 -0
  658. package/dist/utils/opacity.d.ts +9 -0
  659. package/dist/utils/opacity.js +38 -0
  660. package/dist/utils/symbol.d.ts +31 -0
  661. package/dist/utils/symbol.js +92 -0
  662. package/docs/architecture.md +137 -0
  663. package/docs/chrome.md +99 -0
  664. package/docs/composer.md +69 -0
  665. package/docs/concepts.md +99 -0
  666. package/docs/development.md +103 -0
  667. package/docs/facets.md +123 -0
  668. package/docs/geo.md +151 -0
  669. package/docs/getting-started.md +78 -0
  670. package/docs/legend.md +153 -0
  671. package/docs/markers.md +117 -0
  672. package/docs/plots.md +284 -0
  673. package/docs/scales.md +95 -0
  674. package/docs/state.md +71 -0
  675. package/docs/styles-and-segments.md +269 -0
  676. package/docs/theming.md +226 -0
  677. package/docs/timeline.md +128 -0
  678. package/docs/tooltip-and-hover.md +128 -0
  679. package/docs/transforms-and-statistics.md +118 -0
  680. package/examples/BarValues.svelte +14 -0
  681. package/examples/Box.svelte +7 -0
  682. package/examples/Chrome.svelte +17 -0
  683. package/examples/ChromeOrder.svelte +18 -0
  684. package/examples/Composer.svelte +23 -0
  685. package/examples/CustomTooltip.svelte +44 -0
  686. package/examples/Facets.svelte +15 -0
  687. package/examples/FacetsCarousel.svelte +14 -0
  688. package/examples/FacetsRowsCols.svelte +23 -0
  689. package/examples/FirstPlot.svelte +7 -0
  690. package/examples/Gaps.svelte +21 -0
  691. package/examples/GroupedBars.svelte +15 -0
  692. package/examples/Heatmap.svelte +7 -0
  693. package/examples/HeatmapSegments.svelte +26 -0
  694. package/examples/Histogram.svelte +14 -0
  695. package/examples/HorizontalBars.svelte +15 -0
  696. package/examples/LegendReader.svelte +8 -0
  697. package/examples/LegendSections.svelte +27 -0
  698. package/examples/LegendToggle.svelte +25 -0
  699. package/examples/LineByRegion.svelte +18 -0
  700. package/examples/LineDates.svelte +15 -0
  701. package/examples/Markers.svelte +27 -0
  702. package/examples/MovingAverage.svelte +15 -0
  703. package/examples/Pyramid.svelte +7 -0
  704. package/examples/Regression.svelte +14 -0
  705. package/examples/ResponsiveLine.svelte +37 -0
  706. package/examples/Scales.svelte +26 -0
  707. package/examples/Scatter.svelte +16 -0
  708. package/examples/SegmentHighlight.svelte +22 -0
  709. package/examples/Segments.svelte +25 -0
  710. package/examples/SegmentsBySeries.svelte +25 -0
  711. package/examples/StackedArea.svelte +16 -0
  712. package/examples/StackedBars.svelte +15 -0
  713. package/examples/TimelinePlayer.svelte +21 -0
  714. package/examples/TimelineRule.svelte +19 -0
  715. package/examples/Tooltip.svelte +19 -0
  716. package/examples/TooltipCard.svelte +86 -0
  717. package/examples/ValueLabels.svelte +21 -0
  718. package/examples/data.ts +324 -0
  719. package/llms-full.txt +142 -0
  720. package/llms.txt +77 -0
  721. package/package.json +42 -5
  722. package/dist/charts/BaseChart.svelte +0 -149
  723. package/dist/charts/BaseChart.svelte.d.ts +0 -47
  724. package/dist/charts/bar/Chart.svelte +0 -110
  725. package/dist/charts/bar/Chart.svelte.d.ts +0 -26
  726. package/dist/charts/container/ChartContainer.svelte +0 -137
  727. package/dist/charts/container/ChartContainer.svelte.d.ts +0 -16
  728. package/dist/charts/heatmap/Chart.svelte +0 -114
  729. package/dist/charts/line/Chart.svelte +0 -112
  730. package/dist/charts/line/Chart.svelte.d.ts +0 -26
  731. package/dist/charts/pyramid/Chart.svelte +0 -134
  732. package/dist/charts/pyramid/Chart.svelte.d.ts +0 -30
  733. package/dist/charts/scatter/Chart.svelte +0 -95
  734. package/dist/charts/scatter/Chart.svelte.d.ts +0 -28
  735. package/dist/layout/coordinates/margins.d.ts +0 -16
  736. package/dist/layout/coordinates/margins.js +0 -11
  737. package/dist/layout/legend/interaction.svelte.d.ts +0 -15
  738. package/dist/layout/legend/interaction.svelte.js +0 -32
  739. package/dist/layout/plot/BasePlotLayout.svelte +0 -332
  740. package/dist/layout/plot/BasePlotLayout.svelte.d.ts +0 -122
  741. package/dist/layout/plot/margins.d.ts +0 -18
  742. package/dist/layout/plot/margins.js +0 -15
  743. package/dist/layout/plot/measureText.d.ts +0 -4
  744. package/dist/layout/plot/measureText.js +0 -19
  745. package/dist/layout/scales/buildScale.d.ts +0 -25
  746. package/dist/layout/scales/buildScale.js +0 -90
  747. package/dist/layout/scales/niceDomain.d.ts +0 -23
  748. package/dist/layout/scales/niceDomain.js +0 -59
  749. package/dist/layout/tooltip/TooltipLayout.svelte +0 -51
  750. package/dist/layout/tooltip/TooltipLayout.svelte.d.ts +0 -45
  751. package/dist/layout/tooltip/controller.svelte.d.ts +0 -61
  752. package/dist/layout/tooltip/controller.svelte.js +0 -173
  753. package/dist/layout/tooltip/hover.svelte.d.ts +0 -7
  754. package/dist/layout/tooltip/hover.svelte.js +0 -28
  755. package/dist/layout/tooltip/resolveTooltipPlacement.d.ts +0 -24
  756. package/dist/layout/tooltip/resolveTooltipPlacement.js +0 -49
  757. package/dist/layout/tooltip/utils.d.ts +0 -49
  758. package/dist/layout/tooltip/utils.js +0 -82
  759. package/dist/markers/CellMarker.svelte +0 -21
  760. package/dist/markers/ContourClipMarker.svelte +0 -77
  761. package/dist/markers/ContourMarker.svelte +0 -28
  762. package/dist/markers/DeltaMarker.svelte +0 -109
  763. package/dist/markers/DotMarker.svelte +0 -70
  764. package/dist/markers/GeoFeaturesMarker.svelte +0 -19
  765. package/dist/markers/GeoHoverMarker.svelte +0 -25
  766. package/dist/markers/GraticuleMarker.svelte +0 -18
  767. package/dist/markers/HoverMarker.svelte +0 -212
  768. package/dist/markers/LineMarker.svelte +0 -19
  769. package/dist/markers/LinkMarker.svelte +0 -42
  770. package/dist/markers/PeakMarker.svelte +0 -80
  771. package/dist/markers/PeakMarker.svelte.d.ts +0 -13
  772. package/dist/markers/RuleMarker.svelte +0 -24
  773. package/dist/markers/SphereMarker.svelte +0 -15
  774. package/dist/markers/TextMarker.svelte +0 -62
  775. package/dist/markers/VectorMarker.svelte +0 -20
  776. package/dist/plots/bar/ValueLabels.svelte +0 -149
  777. package/dist/plots/bar/ValueLabels.svelte.d.ts +0 -58
  778. package/dist/plots/bar/buildBarMarkers.d.ts +0 -27
  779. package/dist/plots/bar/buildBarMarkers.js +0 -151
  780. package/dist/plots/bar/hoverPoints.d.ts +0 -15
  781. package/dist/plots/bar/hoverPoints.js +0 -37
  782. package/dist/plots/bar/layout.svelte.d.ts +0 -42
  783. package/dist/plots/bar/layout.svelte.js +0 -182
  784. package/dist/plots/geo/buildGeoMarkers.d.ts +0 -33
  785. package/dist/plots/geo/buildGeoMarkers.js +0 -47
  786. package/dist/plots/heatmap/ValueLabels.svelte +0 -56
  787. package/dist/plots/heatmap/buildCellMarkers.d.ts +0 -21
  788. package/dist/plots/heatmap/buildCellMarkers.js +0 -25
  789. package/dist/plots/line/ValueLabels.svelte +0 -269
  790. package/dist/plots/line/ValueLabels.svelte.d.ts +0 -52
  791. package/dist/plots/line/buildGapMarkers.d.ts +0 -28
  792. package/dist/plots/line/buildGapMarkers.js +0 -74
  793. package/dist/plots/line/buildLineMarkers.d.ts +0 -16
  794. package/dist/plots/line/buildLineMarkers.js +0 -56
  795. package/dist/plots/line/valueLabelMargin.d.ts +0 -19
  796. package/dist/plots/line/valueLabelMargin.js +0 -65
  797. package/dist/plots/pyramid/ValueLabels.svelte +0 -139
  798. package/dist/plots/pyramid/ValueLabels.svelte.d.ts +0 -56
  799. package/dist/plots/pyramid/buildPyramidBarMarkers.d.ts +0 -26
  800. package/dist/plots/pyramid/buildPyramidBarMarkers.js +0 -72
  801. package/dist/plots/scatter/ValueLabels.svelte +0 -163
  802. package/dist/plots/scatter/ValueLabels.svelte.d.ts +0 -52
  803. package/dist/plots/scatter/buildScatterMarkers.d.ts +0 -12
  804. package/dist/plots/scatter/buildScatterMarkers.js +0 -36
  805. package/dist/plots/scatter/resolveRadiusPaddedDomain.d.ts +0 -10
  806. package/dist/plots/scatter/resolveRadiusPaddedDomain.js +0 -23
  807. package/dist/plots/utils/categoricalAxisMargin.d.ts +0 -14
  808. package/dist/plots/utils/categoricalAxisMargin.js +0 -20
  809. package/dist/plots/utils/declutter.d.ts +0 -120
  810. package/dist/plots/utils/declutter.js +0 -240
  811. package/dist/plots/utils/labelOverflow.svelte.d.ts +0 -107
  812. package/dist/plots/utils/labelOverflow.svelte.js +0 -257
  813. package/dist/plots/utils/legendDisabled.d.ts +0 -27
  814. package/dist/plots/utils/legendDisabled.js +0 -68
  815. package/dist/plots/utils/valueLabelMargin.d.ts +0 -67
  816. package/dist/plots/utils/valueLabelMargin.js +0 -60
  817. package/dist/types/charts/common.d.ts +0 -22
  818. package/dist/types/charts/props.d.ts +0 -50
  819. package/dist/types/markers/base.d.ts +0 -45
  820. package/dist/types/markers/line.d.ts +0 -34
  821. package/dist/types/markers/props.d.ts +0 -11
  822. package/dist/types/plots/data/scatter.d.ts +0 -13
  823. package/dist/utils/color.js +0 -141
  824. package/dist/utils/delta.d.ts +0 -12
  825. package/dist/utils/delta.js +0 -69
  826. package/dist/utils/edgeAwareAnchor.d.ts +0 -34
  827. package/dist/utils/edgeAwareAnchor.js +0 -60
  828. package/dist/utils/interpolate.d.ts +0 -31
  829. package/dist/utils/interpolate.js +0 -71
  830. /package/dist/types/{charts/common.js → layout/box.js} +0 -0
  831. /package/dist/types/{charts/interpolate.js → layout/composer.js} +0 -0
  832. /package/dist/types/{charts/props.js → layout/figure.js} +0 -0
  833. /package/dist/types/{markers/base.js → layout/grid.js} +0 -0
  834. /package/dist/types/{markers/line.js → layout/hover.js} +0 -0
  835. /package/dist/types/{markers/props.js → layout/mapping.js} +0 -0
  836. /package/dist/types/{plots/data/scatter.js → layout/plot.js} +0 -0
  837. /package/dist/types/{viewport.js → layout/statistics/bollinger.js} +0 -0
  838. /package/dist/types/{charts/interpolate.d.ts → misc/easing.d.ts} +0 -0
  839. /package/dist/types/{viewport.d.ts → misc/viewport.d.ts} +0 -0
@@ -0,0 +1,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,34 @@
1
+ import type { TooltipProp } from '../../types/layout/tooltip';
2
+ import type { HoverPoint, HoverStrategy } from '../../types/layout/hover';
3
+ import { PlotAxes } from '../../phases/data/PlotAxes';
4
+ import type { HoverConfig, PointMatchingStrategy, TooltipConfig } from '../../types/plots/props';
5
+ /**
6
+ * A plot's hover as its `tooltip` and hover marker set it up: whether it is on,
7
+ * how it matches points and whether it syncs across plots.
8
+ */
9
+ export declare class HoverSettings<TRow extends Record<string, unknown>> {
10
+ /** The tooltip, or `undefined` when off. */
11
+ readonly tooltip: TooltipConfig<TRow> | undefined;
12
+ /** Whether anything hovers: a tooltip or a hover marker. */
13
+ readonly active: boolean;
14
+ readonly strategy: HoverStrategy;
15
+ readonly sync: boolean;
16
+ constructor(tooltip: TooltipProp<TRow> | TooltipConfig<TRow> | undefined, markers: {
17
+ type: string;
18
+ }[] | undefined, defaultStrategy: HoverStrategy);
19
+ /** The strategy a plot's axes ask for: along the unmeasured axis, or `'punctual'` when both hold categories. */
20
+ static strategyOf(axes: PlotAxes | undefined): HoverStrategy;
21
+ /** A plot's `hover` config; its tooltip reads as `format` unless it sets its own. */
22
+ static buildConfig<TRow extends Record<string, unknown>>(args: {
23
+ tooltip: TooltipConfig<TRow> | undefined;
24
+ format: (row: TRow) => string;
25
+ sort?: (a: TRow, b: TRow) => number;
26
+ markers: {
27
+ type: string;
28
+ }[];
29
+ points: HoverPoint<TRow>[];
30
+ label: (row: TRow) => string;
31
+ defaultStrategy: HoverStrategy;
32
+ pointMatching?: PointMatchingStrategy;
33
+ }): HoverConfig<TRow>;
34
+ }
@@ -0,0 +1,52 @@
1
+ import { PlotAxes } from '../../phases/data/PlotAxes';
2
+ /**
3
+ * A plot's hover as its `tooltip` and hover marker set it up: whether it is on,
4
+ * how it matches points and whether it syncs across plots.
5
+ */
6
+ export class HoverSettings {
7
+ /** The tooltip, or `undefined` when off. */
8
+ tooltip;
9
+ /** Whether anything hovers: a tooltip or a hover marker. */
10
+ active;
11
+ strategy;
12
+ sync;
13
+ constructor(tooltip, markers, defaultStrategy) {
14
+ this.tooltip = !tooltip
15
+ ? undefined
16
+ : tooltip === true
17
+ ? { sync: false }
18
+ : { ...tooltip, sync: tooltip.sync ?? false };
19
+ const marker = markers?.find((m) => m.type === 'hover');
20
+ this.active =
21
+ this.tooltip !== undefined ||
22
+ (markers ?? []).some((m) => m.type === 'hover' || m.type === 'geo-hover');
23
+ this.strategy = this.tooltip?.strategy ?? marker?.strategy ?? defaultStrategy;
24
+ this.sync = this.tooltip?.sync ?? marker?.sync ?? false;
25
+ }
26
+ /** The strategy a plot's axes ask for: along the unmeasured axis, or `'punctual'` when both hold categories. */
27
+ static strategyOf(axes) {
28
+ if (!axes)
29
+ return 'x';
30
+ if (axes.isDiscrete('x') && axes.isDiscrete('y'))
31
+ return 'punctual';
32
+ return PlotAxes.other(PlotAxes.valueOf({ axes }));
33
+ }
34
+ /** A plot's `hover` config; its tooltip reads as `format` unless it sets its own. */
35
+ static buildConfig(args) {
36
+ const { tooltip, format, sort, markers, points, label, defaultStrategy, pointMatching } = args;
37
+ const settings = new HoverSettings(tooltip, markers, defaultStrategy);
38
+ return {
39
+ active: settings.active,
40
+ points,
41
+ label,
42
+ strategy: settings.strategy,
43
+ sync: settings.sync,
44
+ tooltip: tooltip && {
45
+ ...tooltip,
46
+ format: tooltip.format ?? format,
47
+ ...(sort ? { sort } : {})
48
+ },
49
+ ...(pointMatching ? { pointMatching } : {})
50
+ };
51
+ }
52
+ }
@@ -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
+ }