@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,63 @@
1
+ <script lang="ts">
2
+ import { Density } from 'svelteplot';
3
+ import { SvelteMap } from 'svelte/reactivity';
4
+ import { MarkerChannels } from '../utils/MarkerChannels';
5
+ import { getConfiguration } from '../../configuration/config.svelte';
6
+ import type { DensityMarkerConfig } from '../../types/markers/common';
7
+
8
+ /**
9
+ * Renders one `'density'` marker as one `<Density>` per group - 2D KDE
10
+ * contour bands. A grouped marker (its `color`, or its `grouping`, which
11
+ * a plot's own grouping is inherited into) is split here, not through
12
+ * svelteplot's own `z`: svelteplot would color an accessor stroke with its
13
+ * own scale, which doesn't match the plot's series colors. Each group gets
14
+ * its own literal stroke from the same color channel the dots use.
15
+ * svelteplot's own `Density` puts no class on its rendered group unless
16
+ * given one, so this wrapper sets `class="density"` for the same
17
+ * class-based scoping every other marker kind gets from svelteplot itself.
18
+ */
19
+ let { marker }: { marker: DensityMarkerConfig } = $props();
20
+
21
+ const data = $derived(marker.data ?? []);
22
+ const cfg = $derived(getConfiguration());
23
+ const groupKey = $derived(marker.color ?? marker.grouping);
24
+ const channelFill = $derived(MarkerChannels.buildFill(data, groupKey, marker.scales, cfg));
25
+
26
+ const groups = $derived.by(() => {
27
+ if (groupKey === undefined) return [{ rows: data, stroke: undefined as string | undefined }];
28
+ const valueOf =
29
+ typeof groupKey === 'function'
30
+ ? groupKey
31
+ : (d: Record<string, unknown>) => d[groupKey as string];
32
+ const buckets = new SvelteMap<string, Record<string, unknown>[]>();
33
+ for (const row of data) {
34
+ const value = valueOf(row);
35
+ if (value == null) continue;
36
+ const key = String(value);
37
+ const bucket = buckets.get(key);
38
+ if (bucket) bucket.push(row);
39
+ else buckets.set(key, [row]);
40
+ }
41
+ return [...buckets.values()].map((rows) => ({
42
+ rows,
43
+ stroke: channelFill?.(rows[0]) as string | undefined
44
+ }));
45
+ });
46
+ </script>
47
+
48
+ {#each groups as group, i (i)}
49
+ <Density
50
+ data={group.rows}
51
+ class="density"
52
+ x={marker.x}
53
+ y={marker.y}
54
+ weight={marker.weight}
55
+ bandwidth={marker.bandwidth}
56
+ thresholds={marker.thresholds}
57
+ fill={marker.styles?.fill}
58
+ fillOpacity={marker.styles?.fillOpacity}
59
+ stroke={marker.styles?.stroke ?? group.stroke}
60
+ strokeWidth={marker.styles?.strokeWidth}
61
+ strokeOpacity={marker.styles?.strokeOpacity}
62
+ />
63
+ {/each}
@@ -0,0 +1,7 @@
1
+ import type { DensityMarkerConfig } from '../../types/markers/common';
2
+ type $$ComponentProps = {
3
+ marker: DensityMarkerConfig;
4
+ };
5
+ declare const DensityMarker: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type DensityMarker = ReturnType<typeof DensityMarker>;
7
+ export default DensityMarker;
@@ -0,0 +1,30 @@
1
+ <script lang="ts">
2
+ import { DifferenceY } from 'svelteplot';
3
+ import type { DifferenceMarkerConfig } from '../../types/markers/common';
4
+
5
+ /**
6
+ * Renders one `'difference'` marker as `<DifferenceY>` - no horizontal
7
+ * counterpart exists in svelteplot, so this always renders vertically.
8
+ * svelteplot spreads its props over its defaults, so an explicit `undefined`
9
+ * would erase them - each default is restated here instead.
10
+ */
11
+ let { marker }: { marker: DifferenceMarkerConfig } = $props();
12
+
13
+ const data = $derived(marker.data ?? []);
14
+ </script>
15
+
16
+ <DifferenceY
17
+ {data}
18
+ x={marker.x}
19
+ x1={marker.x1}
20
+ x2={marker.x2}
21
+ y={marker.y}
22
+ y1={marker.y1}
23
+ y2={marker.y2}
24
+ curve={marker.curve ?? 'linear'}
25
+ tension={marker.tension ?? 0}
26
+ positiveFill={marker.positiveFill ?? 'red'}
27
+ positiveFillOpacity={marker.positiveFillOpacity ?? 1}
28
+ negativeFill={marker.negativeFill ?? 'blue'}
29
+ negativeFillOpacity={marker.negativeFillOpacity ?? 1}
30
+ />
@@ -0,0 +1,7 @@
1
+ import type { DifferenceMarkerConfig } from '../../types/markers/common';
2
+ type $$ComponentProps = {
3
+ marker: DifferenceMarkerConfig;
4
+ };
5
+ declare const DifferenceMarker: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type DifferenceMarker = ReturnType<typeof DifferenceMarker>;
7
+ export default DifferenceMarker;
@@ -0,0 +1,102 @@
1
+ <script lang="ts" generics="TData = Record<string, unknown>">
2
+ import { Dot } from 'svelteplot';
3
+ import { MarkerChannels } from '../utils/MarkerChannels';
4
+ import { getConfiguration } from '../../configuration/config.svelte';
5
+ import { resolveAccessor } from '../../plots/utils/accessors';
6
+ import type { DotMarkerConfig } from '../../types/markers/common';
7
+
8
+ /**
9
+ * Renders one `'dot'` marker. `x`/`y` also accept a literal number/Date
10
+ * (every row draws at that fixed position) - used by markers like
11
+ * `DeltaMarker` that place a dot at a computed point.
12
+ */
13
+ const { marker }: { marker: DotMarkerConfig } = $props();
14
+
15
+ const data = $derived((marker.data ?? []) as TData[]);
16
+ const x = $derived(marker.x);
17
+ const y = $derived(marker.y);
18
+ const rProp = $derived(marker.r);
19
+ const fillProp = $derived(marker.fill);
20
+ const color = $derived(marker.color ? resolveAccessor(marker.color) : undefined);
21
+ const opacityProp = $derived(marker.opacity ? resolveAccessor(marker.opacity) : undefined);
22
+ const symbolProp = $derived(marker.symbol ? resolveAccessor(marker.symbol) : undefined);
23
+ const scales = $derived(marker.scales);
24
+ const styles = $derived(marker.styles);
25
+
26
+ const cfg = $derived(getConfiguration());
27
+
28
+ /**
29
+ * A per-row accessor (a field key string, now that it's forwarded raw, or
30
+ * a function) reads its position per row and needs real `data` to do
31
+ * that - an empty `data` legitimately means "nothing to plot", not "draw
32
+ * one anyway". Only a true literal (a number/Date, or unset) draws one
33
+ * dot at a fixed point regardless of `data`.
34
+ */
35
+ const isAccessor = (v: unknown) => typeof v === 'function' || typeof v === 'string';
36
+ const displayData = $derived(
37
+ data.length > 0 || isAccessor(x) || isAccessor(y) ? data : [{} as TData]
38
+ );
39
+
40
+ const resolvedFill = $derived(MarkerChannels.buildFill(displayData, color, scales, cfg));
41
+ const resolvedSymbolFn = $derived(
42
+ MarkerChannels.buildSymbol(displayData, symbolProp, scales, cfg)
43
+ );
44
+ /**
45
+ * `opacity` can't be a live per-row function the way `color`/`symbol` are -
46
+ * svelteplot re-derives its own domain from whatever a `fillOpacity`
47
+ * accessor returns and re-normalizes it (no "already resolved" escape
48
+ * hatch for a bare number, unlike a recognized CSS color/shape string) -
49
+ * so an active `opacity` channel splits `displayData` into buckets,
50
+ * each rendered as its own `<Dot>` call with one literal opacity value.
51
+ */
52
+ const opacityBuckets = $derived(
53
+ MarkerChannels.buildOpacityBuckets(displayData, opacityProp, scales, cfg)
54
+ );
55
+
56
+ const r = $derived(rProp ?? styles?.dotRadius ?? 5);
57
+ /**
58
+ * svelteplot reads a literal `'none'` as a value for its color scale (it
59
+ * isn't a CSS color to it) and paints it with the scale's first color, so
60
+ * `'none'` is handed over as unset, which svelteplot draws as no paint.
61
+ */
62
+ const paint = <T,>(value: T): T | undefined => (value === 'none' ? undefined : value);
63
+ const fill = $derived(paint(resolvedFill ?? fillProp ?? styles?.dotFill ?? 'currentColor'));
64
+ const flatFillOpacity = $derived(styles?.dotFillOpacity ?? 1);
65
+ const symbol = $derived(resolvedSymbolFn ?? styles?.dotSymbol ?? 'circle');
66
+ const stroke = $derived(paint(styles?.dotStroke ?? 'currentColor'));
67
+ const strokeWidth = $derived(styles?.dotStrokeWidth ?? 1);
68
+ const strokeOpacity = $derived(styles?.dotStrokeOpacity ?? 1);
69
+ const strokeDasharray = $derived(styles?.dotStrokeDasharray);
70
+ </script>
71
+
72
+ {#if opacityBuckets}
73
+ {#each opacityBuckets as bucket (bucket.value)}
74
+ <Dot
75
+ data={bucket.data}
76
+ x={x ?? 0}
77
+ y={y ?? 0}
78
+ {r}
79
+ {fill}
80
+ fillOpacity={bucket.value}
81
+ {stroke}
82
+ {strokeWidth}
83
+ {strokeOpacity}
84
+ {strokeDasharray}
85
+ {symbol}
86
+ />
87
+ {/each}
88
+ {:else}
89
+ <Dot
90
+ data={displayData}
91
+ x={x ?? 0}
92
+ y={y ?? 0}
93
+ {r}
94
+ {fill}
95
+ fillOpacity={flatFillOpacity}
96
+ {stroke}
97
+ {strokeWidth}
98
+ {strokeOpacity}
99
+ {strokeDasharray}
100
+ {symbol}
101
+ />
102
+ {/if}
@@ -1,21 +1,9 @@
1
- import type { MarkerProps } from '../types/markers/props';
2
- import type { AxisValue } from '../types/layout/scales';
3
- import type { DotStyle } from '../types/plots/styling';
4
- import type { ColorsStyle } from '../types/layout/styles';
1
+ import type { DotMarkerConfig } from '../../types/markers/common';
2
+ type $$ComponentProps = {
3
+ marker: DotMarkerConfig;
4
+ };
5
5
  declare function $$render<TData = Record<string, unknown>>(): {
6
- props: MarkerProps<TData> & {
7
- x?: AxisValue | ((d: TData) => AxisValue);
8
- y?: AxisValue | ((d: TData) => AxisValue);
9
- /** Per-row radius, or a constant — overrides `style.dotRadius` when set. */
10
- r?: number | ((d: TData) => number);
11
- /** Per-row fill, overriding `style.dotFill` — ignored when `value` is set. */
12
- fill?: (d: TData) => string;
13
- /** Continuous value driving a per-dot color ramp through `style.colors` — takes priority over `fill`/`style.dotFill` when set. */
14
- value?: (d: TData) => number;
15
- style?: DotStyle & {
16
- colors?: ColorsStyle;
17
- };
18
- };
6
+ props: $$ComponentProps;
19
7
  exports: {};
20
8
  bindings: "";
21
9
  slots: {};
@@ -0,0 +1,39 @@
1
+ <script lang="ts">
2
+ import { Geo } from 'svelteplot';
3
+ import { PlotContext } from '../../layout/plot/PlotContext';
4
+ import type { GeoFeaturesMarkerConfig } from '../../types/markers/geo';
5
+
6
+ /** Renders one `'geo'` marker - one resolved-style bucket of the base map's own features, as a single `<Geo>` call. */
7
+ let { marker }: { marker: GeoFeaturesMarkerConfig } = $props();
8
+
9
+ const hover = PlotContext.current()?.hover;
10
+ // An `inset` marker's panel has its own hover.
11
+ const overInset = (e: Event) => (e.target as Element | null)?.closest?.('.dct-geo-inset') != null;
12
+ const enter = $derived(
13
+ marker.hover
14
+ ? (e: Event, d: Record<string, unknown>) => {
15
+ const row = marker.hover?.get(d.__id as string);
16
+ if (row && !overInset(e)) hover?.onPointer([row as never]);
17
+ }
18
+ : undefined
19
+ );
20
+ const leave = $derived(
21
+ marker.hover
22
+ ? (e: Event) => {
23
+ if (!overInset(e)) hover?.onLeave();
24
+ }
25
+ : undefined
26
+ );
27
+ </script>
28
+
29
+ <Geo
30
+ data={marker.data}
31
+ fill={marker.fill}
32
+ fillOpacity={marker.fillOpacity ?? 1}
33
+ stroke={marker.stroke ?? 'currentColor'}
34
+ strokeWidth={marker.strokeWidth ?? 0.5}
35
+ style="vector-effect: non-scaling-stroke"
36
+ onclick={marker.onclick}
37
+ onpointerenter={enter}
38
+ onpointerleave={leave}
39
+ />
@@ -1,4 +1,4 @@
1
- import type { GeoFeaturesMarkerConfig } from '../types/markers/geo';
1
+ import type { GeoFeaturesMarkerConfig } from '../../types/markers/geo';
2
2
  type $$ComponentProps = {
3
3
  marker: GeoFeaturesMarkerConfig;
4
4
  };
@@ -0,0 +1,28 @@
1
+ <script lang="ts">
2
+ import { Geo } from 'svelteplot';
3
+ import { getConfiguration } from '../../configuration/config.svelte';
4
+ import type { GeoHoverMarkerConfig } from '../../types/markers/geo';
5
+ import type { HoverPoint } from '../../types/layout/hover';
6
+
7
+ /** Renders the hovered feature restyled in place - no dot, no label. `pointer-events: none` so it never steals hover from the base map underneath it. */
8
+ let {
9
+ marker,
10
+ data
11
+ }: { marker: GeoHoverMarkerConfig; data: HoverPoint<Record<string, unknown>>[] } = $props();
12
+
13
+ const cfg = $derived(getConfiguration());
14
+ const style = $derived({ ...cfg.hover.area, ...marker.styles });
15
+ </script>
16
+
17
+ {#if data.length > 0}
18
+ <Geo
19
+ data={data.map((p) => p.row)}
20
+ fill={style.fill}
21
+ fillOpacity={style.fillOpacity}
22
+ stroke={style.stroke}
23
+ strokeWidth={style.strokeWidth}
24
+ strokeOpacity={style.strokeOpacity}
25
+ strokeDasharray={style.strokeDasharray}
26
+ style="vector-effect: non-scaling-stroke; pointer-events: none;"
27
+ />
28
+ {/if}
@@ -1,5 +1,5 @@
1
- import type { GeoHoverMarkerConfig } from '../types/markers/geo';
2
- import type { HoverPoint } from '../types/layout/tooltip';
1
+ import type { GeoHoverMarkerConfig } from '../../types/markers/geo';
2
+ import type { HoverPoint } from '../../types/layout/hover';
3
3
  type $$ComponentProps = {
4
4
  marker: GeoHoverMarkerConfig;
5
5
  data: HoverPoint<Record<string, unknown>>[];
@@ -0,0 +1,18 @@
1
+ <script lang="ts">
2
+ import { Graticule } from 'svelteplot';
3
+ import type { GeoGraticuleMarkerConfig } from '../../types/markers/geo';
4
+
5
+ /** Renders one `'graticule'` marker - longitude/latitude gridlines. */
6
+ let { marker }: { marker: GeoGraticuleMarkerConfig } = $props();
7
+ </script>
8
+
9
+ <Graticule
10
+ step={marker.step}
11
+ stepX={marker.stepX}
12
+ stepY={marker.stepY}
13
+ stroke={marker.styles?.stroke ?? 'currentColor'}
14
+ strokeWidth={marker.styles?.strokeWidth ?? 0.5}
15
+ strokeOpacity={marker.styles?.strokeOpacity ?? 0.3}
16
+ strokeDasharray={marker.styles?.strokeDasharray}
17
+ style="vector-effect: non-scaling-stroke"
18
+ />
@@ -1,4 +1,4 @@
1
- import type { GeoGraticuleMarkerConfig } from '../types/markers/geo';
1
+ import type { GeoGraticuleMarkerConfig } from '../../types/markers/geo';
2
2
  type $$ComponentProps = {
3
3
  marker: GeoGraticuleMarkerConfig;
4
4
  };
@@ -0,0 +1,15 @@
1
+ <script lang="ts">
2
+ import { Sphere } from 'svelteplot';
3
+ import type { GeoSphereMarkerConfig } from '../../types/markers/geo';
4
+
5
+ /** Renders one `'sphere'` marker - the outer globe outline. */
6
+ let { marker }: { marker: GeoSphereMarkerConfig } = $props();
7
+ </script>
8
+
9
+ <Sphere
10
+ fill={marker.styles?.fill}
11
+ fillOpacity={marker.styles?.fillOpacity}
12
+ stroke={marker.styles?.stroke ?? 'currentColor'}
13
+ strokeWidth={marker.styles?.strokeWidth ?? 1}
14
+ style="vector-effect: non-scaling-stroke"
15
+ />
@@ -1,4 +1,4 @@
1
- import type { GeoSphereMarkerConfig } from '../types/markers/geo';
1
+ import type { GeoSphereMarkerConfig } from '../../types/markers/geo';
2
2
  type $$ComponentProps = {
3
3
  marker: GeoSphereMarkerConfig;
4
4
  };
@@ -0,0 +1,252 @@
1
+ <script lang="ts">
2
+ import { usePlot } from '../../layout/plot/usePlot';
3
+ import DotMarker from '../dot/DotMarker.svelte';
4
+ import TextMarker from '../text/TextMarker.svelte';
5
+ import RuleMarker from '../rule/RuleMarker.svelte';
6
+ import BarMarker from '../bar/BarMarker.svelte';
7
+ import { getConfiguration } from '../../configuration/config.svelte';
8
+ import { BandNudge } from '../utils/BandNudge';
9
+ import type { BandSlice } from '../../types/layout/hover';
10
+ import type { HoverMarkerConfig } from '../../types/markers/common';
11
+ import type { HoverDisplayPoint } from '../../types/layout/hover';
12
+
13
+ /**
14
+ * In-SVG hover highlight, rendered *inside* a `<Plot>`. Because it positions
15
+ * itself through the host plot's scales, it places the same coordinate
16
+ * correctly in every facet - that is what makes cross-facet sync work without
17
+ * any pixel math. Draws optional x/y crosshair rules plus a dot + value label
18
+ * for each matched point.
19
+ *
20
+ * Takes the raw `marker` config plus the couple of things it can't know on
21
+ * its own - `activePoint` (the specific matched point actually under the
22
+ * cursor, for the crosshair position; see `controller.svelte.ts`'s own doc
23
+ * comment) and whether the active hover strategy implies a crosshair on
24
+ * each axis by default - the same "component owns its own rendering"
25
+ * pattern `BarMarker`/`RuleMarker` follow. `activePoint`/
26
+ * `impliesCrosshairX`/`impliesCrosshairY` are all optional and default to
27
+ * "no crosshair".
28
+ *
29
+ * `areaX`/`areaY` are a separate, always-explicit opt-in (no implied
30
+ * default) for a thickened area highlight in place of the thin crosshair -
31
+ * see `HoverMarkerConfig`'s own doc comment. Rendered via `BarMarker`'s
32
+ * `role: 'highlight'`, so it renders nothing on an axis without a band
33
+ * scale (e.g. a line/scatter plot's continuous axis).
34
+ */
35
+ interface Props {
36
+ data?: HoverDisplayPoint[];
37
+ /** Narrowed to just the fields this component reads - `HoverMarkerConfig` also carries routing/scoping fields (`series`/`scope`/`strategy`/`sync`) it has no use for. */
38
+ marker: Pick<
39
+ HoverMarkerConfig,
40
+ | 'ruleX'
41
+ | 'ruleY'
42
+ | 'areaX'
43
+ | 'areaY'
44
+ | 'showLabels'
45
+ | 'format'
46
+ | 'rule'
47
+ | 'area'
48
+ | 'dot'
49
+ | 'text'
50
+ >;
51
+ activePoint?: HoverDisplayPoint | null;
52
+ impliesCrosshairX?: boolean;
53
+ impliesCrosshairY?: boolean;
54
+ /** Reports `activePoint`'s real pixel position within this facet's own box, or `null` when nothing's matched. */
55
+ onActivePointPixel?: (pos: { x: number; y: number } | null) => void;
56
+ }
57
+
58
+ let {
59
+ data = [],
60
+ marker,
61
+ activePoint = null,
62
+ impliesCrosshairX = false,
63
+ impliesCrosshairY = false,
64
+ onActivePointPixel
65
+ }: Props = $props();
66
+
67
+ const cfg = $derived(getConfiguration());
68
+ const plot = usePlot().svelteplot;
69
+
70
+ /** Scaled pixel position of `value`, centered within its band for a band scale. */
71
+ function scaledPixel(
72
+ scale: { type?: string; fn?: (v: never) => unknown } | undefined,
73
+ value: unknown
74
+ ): number | null {
75
+ if (!scale?.fn || value == null) return null;
76
+ const raw = Number(scale.fn(value as never));
77
+ if (!Number.isFinite(raw)) return null;
78
+ if (scale.type === 'band') {
79
+ const bandwidth = (scale.fn as { bandwidth?: () => number }).bandwidth?.() ?? 0;
80
+ return raw + bandwidth / 2;
81
+ }
82
+ return raw;
83
+ }
84
+
85
+ const nudgeOf = (point: { areaInset?: BandSlice } | null | undefined) =>
86
+ BandNudge.of(plot.scales, point?.areaInset);
87
+
88
+ const activePixel = $derived.by((): { x: number; y: number } | null => {
89
+ if (!activePoint) return null;
90
+ const x = scaledPixel(plot.scales.x, activePoint.x);
91
+ const y = scaledPixel(plot.scales.y, activePoint.y);
92
+ if (x == null || y == null) return null;
93
+ const nudge = nudgeOf(activePoint);
94
+ return { x: x + nudge.dx, y: y + nudge.dy };
95
+ });
96
+
97
+ $effect(() => {
98
+ onActivePointPixel?.(activePixel);
99
+ });
100
+
101
+ const showCrosshairX = $derived(
102
+ marker.ruleX !== false && (impliesCrosshairX || marker.ruleX === true)
103
+ );
104
+ const showCrosshairY = $derived(
105
+ marker.ruleY !== false && (impliesCrosshairY || marker.ruleY === true)
106
+ );
107
+ const ruleX = $derived(showCrosshairX ? (activePoint?.x ?? null) : null);
108
+ const ruleY = $derived(showCrosshairY ? (activePoint?.y ?? null) : null);
109
+ // areaX/areaY have no implied default - always off unless explicitly set.
110
+ const areaX = $derived(marker.areaX === true ? (activePoint?.x ?? null) : null);
111
+ const areaY = $derived(marker.areaY === true ? (activePoint?.y ?? null) : null);
112
+ const showLabels = $derived(marker.showLabels ?? true);
113
+ const format = $derived(marker.format);
114
+ const ruleStyle = $derived(marker.rule);
115
+ const areaStyle = $derived({ ...cfg.hover.area, ...marker.area });
116
+ const dotStyle = $derived(marker.dot);
117
+ const fontStyle = $derived(marker.text);
118
+
119
+ /** Explicit style wins; otherwise fall back to the point's own resolved color. */
120
+ const resolveColor = (explicit: string | undefined, point: HoverDisplayPoint) =>
121
+ explicit ?? point.color;
122
+
123
+ // Horizontal gap between the dot's edge and an 'outside'-anchored label -
124
+ // scales with the dot's own resolved radius so the label clears it.
125
+ const dotRadius = $derived(dotStyle?.dotRadius ?? cfg.hover.dot.dotRadius ?? 5);
126
+
127
+ /**
128
+ * Resolves `text.textAnchor: 'outside'` into a per-point anchor +
129
+ * offset, mirroring the value-label `'outside'` anchor's own left/right
130
+ * split (see pyramid/bar's own `ValueAnchor` handling): a positive `x`
131
+ * anchors `'start'` and nudges right, a negative `x` anchors `'end'` and
132
+ * nudges left - so a diverging mark's label sits on the side of the dot
133
+ * away from zero, on whichever side that dot itself landed. Only
134
+ * meaningful when the point's `x` is numeric (e.g. pyramid's magnitude
135
+ * axis); anything else falls through to the plain `text` style unchanged.
136
+ *
137
+ * Also overrides `cfg.hover.font`'s default `dy: -18` (meant for a label
138
+ * floating *above* the dot) back to vertically centered, and clears the
139
+ * dot's own radius horizontally instead of the flat default nudge, so the
140
+ * label doesn't collide with the dot it's labeling.
141
+ */
142
+ function resolveFontStyle(point: HoverDisplayPoint) {
143
+ if (fontStyle?.textAnchor !== 'outside' || typeof point.x !== 'number') {
144
+ return { ...cfg.hover.font, ...fontStyle, fill: resolveColor(fontStyle?.fill, point) };
145
+ }
146
+ const outward = point.x >= 0;
147
+ const gap = dotRadius + 5;
148
+ return {
149
+ ...cfg.hover.font,
150
+ ...fontStyle,
151
+ fill: resolveColor(fontStyle?.fill, point),
152
+ textAnchor: outward ? ('start' as const) : ('end' as const),
153
+ lineAnchor: fontStyle?.lineAnchor ?? ('middle' as const),
154
+ dx: fontStyle?.dx ?? (outward ? gap : -gap),
155
+ dy: fontStyle?.dy ?? 0
156
+ };
157
+ }
158
+ </script>
159
+
160
+ {#if areaX != null}
161
+ <BarMarker
162
+ marker={{
163
+ type: 'bar',
164
+ role: 'highlight',
165
+ isHorizontal: false,
166
+ data: [],
167
+ category: areaX,
168
+ insetLeft: activePoint?.areaInset?.start,
169
+ insetRight: activePoint?.areaInset?.end,
170
+ styles: areaStyle
171
+ }}
172
+ />
173
+ {/if}
174
+
175
+ {#if areaY != null}
176
+ <BarMarker
177
+ marker={{
178
+ type: 'bar',
179
+ role: 'highlight',
180
+ isHorizontal: true,
181
+ data: [],
182
+ category: areaY,
183
+ insetTop: activePoint?.areaInset?.start,
184
+ insetBottom: activePoint?.areaInset?.end,
185
+ styles: areaStyle
186
+ }}
187
+ />
188
+ {/if}
189
+
190
+ {#if ruleX != null}
191
+ <g transform="translate({nudgeOf(activePoint).dx}, {nudgeOf(activePoint).dy})">
192
+ <RuleMarker
193
+ marker={{
194
+ type: 'rule',
195
+ axis: 'x',
196
+ value: ruleX,
197
+ styles: { ...cfg.hover.rule, ...ruleStyle }
198
+ }}
199
+ />
200
+ </g>
201
+ {/if}
202
+
203
+ {#if ruleY != null}
204
+ <g transform="translate({nudgeOf(activePoint).dx}, {nudgeOf(activePoint).dy})">
205
+ <RuleMarker
206
+ marker={{
207
+ type: 'rule',
208
+ axis: 'y',
209
+ value: ruleY,
210
+ styles: { ...cfg.hover.rule, ...ruleStyle }
211
+ }}
212
+ />
213
+ </g>
214
+ {/if}
215
+
216
+ {#if data.length > 0}
217
+ {#each data as point (`${point.series ?? ''}_${point.x}_${point.y}`)}
218
+ <!-- A grouped bar's point sits in its series' slice of the band (`areaInset`), not at the band's middle. -->
219
+ <g transform="translate({nudgeOf(point).dx}, {nudgeOf(point).dy})">
220
+ <DotMarker
221
+ marker={{
222
+ type: 'dot',
223
+ data: [point],
224
+ x: (d) => d.x,
225
+ y: (d) => d.y,
226
+ styles: {
227
+ ...cfg.hover.dot,
228
+ ...dotStyle,
229
+ dotFill: resolveColor(dotStyle?.dotFill, point),
230
+ dotStroke: resolveColor(dotStyle?.dotStroke, point)
231
+ }
232
+ }}
233
+ />
234
+ </g>
235
+ {/each}
236
+ {#if showLabels}
237
+ {#each data as point (`${point.series ?? ''}_${point.x}_${point.y}`)}
238
+ <g transform="translate({nudgeOf(point).dx}, {nudgeOf(point).dy})">
239
+ <TextMarker
240
+ marker={{
241
+ type: 'text',
242
+ data: [point],
243
+ x: (d: HoverDisplayPoint) => d.x,
244
+ y: (d: HoverDisplayPoint) => d.y,
245
+ text: (d: HoverDisplayPoint) => (format ? format(d) : (d.label ?? '')),
246
+ styles: resolveFontStyle(point)
247
+ }}
248
+ />
249
+ </g>
250
+ {/each}
251
+ {/if}
252
+ {/if}
@@ -1,31 +1,31 @@
1
- import type { MarkerProps } from '../types/markers/props';
2
- import type { HoverMarkerConfig } from '../types/markers/common';
3
- import type { HoverDisplayPoint } from '../types/layout/tooltip';
1
+ import type { HoverMarkerConfig } from '../../types/markers/common';
2
+ import type { HoverDisplayPoint } from '../../types/layout/hover';
4
3
  /**
5
4
  * In-SVG hover highlight, rendered *inside* a `<Plot>`. Because it positions
6
5
  * itself through the host plot's scales, it places the same coordinate
7
- * correctly in every facet — that is what makes cross-facet sync work without
6
+ * correctly in every facet - that is what makes cross-facet sync work without
8
7
  * any pixel math. Draws optional x/y crosshair rules plus a dot + value label
9
8
  * for each matched point.
10
9
  *
11
10
  * Takes the raw `marker` config plus the couple of things it can't know on
12
- * its own — `activePoint` (the specific matched point actually under the
11
+ * its own - `activePoint` (the specific matched point actually under the
13
12
  * cursor, for the crosshair position; see `controller.svelte.ts`'s own doc
14
13
  * comment) and whether the active hover strategy implies a crosshair on
15
- * each axis by default — the same "component owns its own rendering"
14
+ * each axis by default - the same "component owns its own rendering"
16
15
  * pattern `BarMarker`/`RuleMarker` follow. `activePoint`/
17
16
  * `impliesCrosshairX`/`impliesCrosshairY` are all optional and default to
18
17
  * "no crosshair".
19
18
  *
20
19
  * `areaX`/`areaY` are a separate, always-explicit opt-in (no implied
21
- * default) for a thickened area highlight in place of the thin crosshair —
20
+ * default) for a thickened area highlight in place of the thin crosshair -
22
21
  * see `HoverMarkerConfig`'s own doc comment. Rendered via `BarMarker`'s
23
22
  * `role: 'highlight'`, so it renders nothing on an axis without a band
24
23
  * scale (e.g. a line/scatter plot's continuous axis).
25
24
  */
26
- interface Props extends MarkerProps<HoverDisplayPoint> {
27
- /** Narrowed to just the fields this component reads — `HoverMarkerConfig` also carries routing/scoping fields (`series`/`scope`/`strategy`/`sync`) it has no use for. */
28
- marker: Pick<HoverMarkerConfig, 'ruleX' | 'ruleY' | 'areaX' | 'areaY' | 'showLabels' | 'format' | 'ruleStyle' | 'areaStyle' | 'dotStyle' | 'fontStyle'>;
25
+ interface Props {
26
+ data?: HoverDisplayPoint[];
27
+ /** Narrowed to just the fields this component reads - `HoverMarkerConfig` also carries routing/scoping fields (`series`/`scope`/`strategy`/`sync`) it has no use for. */
28
+ marker: Pick<HoverMarkerConfig, 'ruleX' | 'ruleY' | 'areaX' | 'areaY' | 'showLabels' | 'format' | 'rule' | 'area' | 'dot' | 'text'>;
29
29
  activePoint?: HoverDisplayPoint | null;
30
30
  impliesCrosshairX?: boolean;
31
31
  impliesCrosshairY?: boolean;