@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,219 @@
1
+ import { getContext, setContext } from 'svelte';
2
+ import { Margins } from './Margins';
3
+ import { Box } from './Box';
4
+ import { CellAlignment } from '../grid/GridAlignment.svelte';
5
+ const PLOT_MARGINS_KEY = Symbol('dct-plot-margins');
6
+ /** The side each axis draws its tick labels on. */
7
+ const TICK_SIDES = { x: 'bottom', y: 'left' };
8
+ /**
9
+ * One plot's margins: the theme's, then the author's, then the room its
10
+ * labels reach out into (grown on every side the author left open), then the
11
+ * room rotated tick labels take or give back, and last the margins an aligned grid pinned on
12
+ * it. The plot's markers hand it what they draw to measure ({@link watch});
13
+ * it follows what svelteplot settles on ({@link follow}), for its grid. Its {@link box} and {@link contentBox} are the plot's box and
14
+ * area for any consumer, and {@link place} fits something of a given size
15
+ * next to a point inside the box.
16
+ *
17
+ * The margins the labels settled on go back out through `settle`; read back
18
+ * in as `author`, they hold as a minimum instead of fixing their sides.
19
+ * Create it during component init: it registers itself for the plot's
20
+ * markers ({@link PlotMargins.current}).
21
+ */
22
+ export class PlotMargins {
23
+ #inputs;
24
+ #cell = CellAlignment.current();
25
+ #measured = $state.raw(Margins.ZERO);
26
+ /** The sides the labels settled on, as last handed to `settle`. */
27
+ #settled;
28
+ constructor(inputs) {
29
+ this.#inputs = inputs;
30
+ setContext(PLOT_MARGINS_KEY, this);
31
+ // The first run is not a reset.
32
+ let first = true;
33
+ $effect(() => {
34
+ inputs.resetKey();
35
+ if (first)
36
+ first = false;
37
+ else
38
+ this.#measured = Margins.ZERO;
39
+ });
40
+ $effect(() => {
41
+ const grown = this.#grown;
42
+ const settled = this.#settled;
43
+ if (!inputs.settle || Object.keys(grown).length === 0)
44
+ return;
45
+ if (settled && Margins.SIDES.every((side) => settled[side] === grown[side]))
46
+ return;
47
+ this.#settled = grown;
48
+ inputs.settle({ ...inputs.author(), ...grown });
49
+ });
50
+ }
51
+ /** The plot's margins, or `null` outside a plot. Call during component init. */
52
+ static current() {
53
+ return getContext(PLOT_MARGINS_KEY) ?? null;
54
+ }
55
+ /**
56
+ * Measures `el`'s rendered box once its readings settle - again whenever
57
+ * the content box or `deps` change - and reports how far it reaches past
58
+ * the content box: to `onOverflow`, and, when `grow` holds, into the room
59
+ * the margins grow by. Call during component init.
60
+ */
61
+ watch(el, options) {
62
+ $effect(() => {
63
+ const element = el();
64
+ const bounds = this.contentBox;
65
+ options.deps?.();
66
+ if (!element)
67
+ return;
68
+ let cancelled = false;
69
+ let frame;
70
+ let attempt = 0;
71
+ let last;
72
+ const measure = () => {
73
+ if (cancelled)
74
+ return;
75
+ let box;
76
+ try {
77
+ box = Box.of(element.getBBox());
78
+ }
79
+ catch {
80
+ return;
81
+ }
82
+ const overflow = box.overflow(bounds);
83
+ attempt += 1;
84
+ const stable = overflow.equals(last);
85
+ last = overflow;
86
+ if (!stable && attempt < PlotMargins.#MAX_READINGS) {
87
+ frame = requestAnimationFrame(measure);
88
+ return;
89
+ }
90
+ options.onOverflow?.(overflow);
91
+ if (options.grow?.())
92
+ this.reportOverflow(overflow);
93
+ };
94
+ // Text measures right only once its fonts load.
95
+ (document.fonts?.ready ?? Promise.resolve()).then(() => {
96
+ if (!cancelled)
97
+ frame = requestAnimationFrame(measure);
98
+ });
99
+ return () => {
100
+ cancelled = true;
101
+ if (frame !== undefined)
102
+ cancelAnimationFrame(frame);
103
+ };
104
+ });
105
+ }
106
+ /** How many frames {@link watch} waits for a box to settle. */
107
+ static #MAX_READINGS = 30;
108
+ /** Grows the labels' room to fit what reached `overflow` px past the content box. */
109
+ reportOverflow(overflow) {
110
+ const next = this.#measured.max(overflow);
111
+ if (!next.equals(this.#measured))
112
+ this.#measured = next;
113
+ }
114
+ /**
115
+ * Follows the margins svelteplot settles on - `plot` is its `usePlot()`,
116
+ * only readable inside its `<Plot>` - and reports them to the enclosing
117
+ * aligned grid cell, if any. Call during the init of a component inside it.
118
+ */
119
+ follow(plot) {
120
+ const cell = this.#cell;
121
+ if (!cell)
122
+ return;
123
+ $effect(() => {
124
+ const { marginTop, marginRight, marginBottom, marginLeft } = plot.options;
125
+ cell.report(new Margins(Number(marginTop) || 0, Number(marginRight) || 0, Number(marginBottom) || 0, Number(marginLeft) || 0));
126
+ });
127
+ }
128
+ /** The room the `reserve` boxes take past the edges their points can sit on. */
129
+ #reserved = $derived.by(() => this.#inputs.reserve().reduce((room, { box, edges }) => {
130
+ const reach = box.reach;
131
+ return room.max(Margins.of(Object.fromEntries(edges.map((side) => [side, reach[side]]))));
132
+ }, Margins.ZERO));
133
+ /** The room labels need, on every side the author left open. */
134
+ #grown = $derived.by(() => {
135
+ const author = this.#inputs.author();
136
+ const settled = this.#settled;
137
+ const { width, height } = this.#inputs.size();
138
+ const growth = this.#measured.max(this.#reserved).min(Margins.half(width, height));
139
+ const estimate = this.#inputs.estimate();
140
+ const out = {};
141
+ for (const side of Margins.SIDES) {
142
+ const own = author?.[side];
143
+ // A side read back from `settle` is a minimum; any other the author set is fixed.
144
+ const held = typeof own === 'number' && settled?.[side] === own ? own : undefined;
145
+ if (own !== undefined && held === undefined)
146
+ continue;
147
+ const grown = growth[side] > 0 ? estimate[side] + growth[side] : undefined;
148
+ if (held !== undefined || grown !== undefined)
149
+ out[side] = Math.max(held ?? 0, grown ?? 0);
150
+ }
151
+ return out;
152
+ });
153
+ /** The author's margins, with the room labels need. */
154
+ #labels = $derived.by(() => {
155
+ const author = this.#inputs.author();
156
+ const grown = this.#grown;
157
+ return author === undefined && Object.keys(grown).length === 0
158
+ ? undefined
159
+ : { ...author, ...grown };
160
+ });
161
+ /**
162
+ * How much more room (or less) each axis' rotated tick labels take across
163
+ * it, on its side. An x label stands as tall as its text, a y label as wide;
164
+ * rotated, it reaches across by its turned box. A label is taken as twice
165
+ * as wide as its font size.
166
+ */
167
+ #tickRoom = $derived.by(() => {
168
+ const scales = this.#inputs.scales();
169
+ const height = this.#inputs.tickFontSize();
170
+ const width = 2 * height;
171
+ const room = {};
172
+ for (const axis of ['x', 'y']) {
173
+ const degrees = scales?.[axis]?.tickRotate;
174
+ if (!degrees)
175
+ continue;
176
+ const rad = (degrees * Math.PI) / 180;
177
+ const [across, along] = axis === 'x' ? [height, width] : [width, height];
178
+ const turned = Math.abs(Math.cos(rad)) * across + Math.abs(Math.sin(rad)) * along;
179
+ room[TICK_SIDES[axis]] = Math.ceil(turned - across);
180
+ }
181
+ return room;
182
+ });
183
+ /** What svelteplot's `<Plot margin>` takes. */
184
+ config = $derived.by(() => {
185
+ const base = { ...this.#inputs.theme(), ...this.#labels };
186
+ const pinned = this.#cell?.pinned;
187
+ if (pinned)
188
+ return { ...base, ...pinned.toJSON() };
189
+ // A fixed side makes room for its rotated tick labels; an `'auto'` one fits them itself.
190
+ const out = { ...base };
191
+ for (const [side, room] of Object.entries(this.#tickRoom)) {
192
+ const own = out[side];
193
+ if (typeof own === 'number')
194
+ out[side] = Math.max(0, own + room);
195
+ }
196
+ return out;
197
+ });
198
+ /** {@link config} as numbers, an `'auto'` side read as the plot's estimate. */
199
+ numeric = $derived.by(() => Margins.resolve(this.config, this.#inputs.estimate()));
200
+ /** The plot's whole box, in pixels. */
201
+ box = $derived.by(() => {
202
+ const { width, height } = this.#inputs.size();
203
+ return Box.size(width, height);
204
+ });
205
+ /** The plot's own area, in pixels: what its margins leave inside its box. */
206
+ contentBox = $derived.by(() => this.numeric.contentBox(this.box.width, this.box.height));
207
+ /**
208
+ * Where something of `size` sits next to `point`, on its preferred side
209
+ * per axis, without leaving the plot's box - see {@link Box.placeNear}.
210
+ */
211
+ place(size, point, anchor) {
212
+ return size.placeNear(point, anchor, this.box);
213
+ }
214
+ /**
215
+ * Changes whenever the labels' margins move after mount, which svelteplot
216
+ * only takes on a remount. The same margins read back from `settle` keep it.
217
+ */
218
+ remountKey = $derived.by(() => JSON.stringify(this.#labels ?? null));
219
+ }
@@ -0,0 +1,61 @@
1
+ <script lang="ts" generics="TData extends Record<string, unknown>">
2
+ import { getConfiguration } from '../../configuration/config.svelte';
3
+ import { PlotInteraction } from '../interaction/PlotInteraction.svelte';
4
+ import BasePlotLayout from '../base/BasePlotLayout.svelte';
5
+ import { validateSegments } from '../../plots/utils/segments';
6
+ import type { Pipeline } from '../../phases/Pipeline';
7
+ import type { SegmentsConfig, MarginConfig } from '../../types/plots/props';
8
+ import type { FacetStageState } from '../../types/phases';
9
+
10
+ /**
11
+ * What every axis plot kind renders for one slice of its rows: its props
12
+ * run through the plot's `pipeline`, and the state that comes out drawn by
13
+ * `BasePlotLayout`. It sits under the plot's `Figure`, which provides the
14
+ * legend's toggles and the hover its phases read.
15
+ */
16
+ type Props = {
17
+ width: number;
18
+ height: number;
19
+ styles?: object;
20
+ segments?: SegmentsConfig<never>;
21
+ markers?: { type: string }[];
22
+ scales?: object;
23
+ margins?: MarginConfig;
24
+ panelState?: FacetStageState;
25
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
+ pipeline?: Pipeline<any, any>;
27
+ data?: TData[];
28
+ [prop: string]: unknown;
29
+ };
30
+
31
+ let {
32
+ width,
33
+ height,
34
+ styles = {},
35
+ segments = {},
36
+ markers = [],
37
+ scales = {},
38
+ margins = $bindable(),
39
+ panelState,
40
+ pipeline,
41
+ ...rest
42
+ }: Props = $props();
43
+
44
+ $effect(() => {
45
+ validateSegments(segments as never);
46
+ });
47
+
48
+ const cfg = $derived(getConfiguration());
49
+ const interaction = PlotInteraction.current(() => cfg);
50
+ const ctx = $derived({ cfg, interaction, range: interaction.legend?.range });
51
+
52
+ const plotState = $derived(
53
+ pipeline!.run(
54
+ { ...rest, width, height, styles, segments, markers, scales, margins },
55
+ ctx,
56
+ panelState
57
+ )
58
+ );
59
+ </script>
60
+
61
+ <BasePlotLayout {width} {height} state={plotState} bind:margins />
@@ -0,0 +1,41 @@
1
+ import type { Pipeline } from '../../phases/Pipeline';
2
+ import type { SegmentsConfig, MarginConfig } from '../../types/plots/props';
3
+ import type { FacetStageState } from '../../types/phases';
4
+ declare function $$render<TData extends Record<string, unknown>>(): {
5
+ props: {
6
+ [prop: string]: unknown;
7
+ width: number;
8
+ height: number;
9
+ styles?: object;
10
+ segments?: SegmentsConfig<never>;
11
+ markers?: {
12
+ type: string;
13
+ }[];
14
+ scales?: object;
15
+ margins?: MarginConfig;
16
+ panelState?: FacetStageState;
17
+ pipeline?: Pipeline<any, any>;
18
+ data?: TData[];
19
+ };
20
+ exports: {};
21
+ bindings: "margins";
22
+ slots: {};
23
+ events: {};
24
+ };
25
+ declare class __sveltets_Render<TData extends Record<string, unknown>> {
26
+ props(): ReturnType<typeof $$render<TData>>['props'];
27
+ events(): ReturnType<typeof $$render<TData>>['events'];
28
+ slots(): ReturnType<typeof $$render<TData>>['slots'];
29
+ bindings(): "margins";
30
+ exports(): {};
31
+ }
32
+ interface $$IsomorphicComponent {
33
+ new <TData extends Record<string, unknown>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TData>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TData>['props']>, ReturnType<__sveltets_Render<TData>['events']>, ReturnType<__sveltets_Render<TData>['slots']>> & {
34
+ $$bindings?: ReturnType<__sveltets_Render<TData>['bindings']>;
35
+ } & ReturnType<__sveltets_Render<TData>['exports']>;
36
+ <TData extends Record<string, unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<TData>['props']> & {}): ReturnType<__sveltets_Render<TData>['exports']>;
37
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
38
+ }
39
+ declare const Core: $$IsomorphicComponent;
40
+ type Core<TData extends Record<string, unknown>> = InstanceType<typeof Core<TData>>;
41
+ export default Core;
@@ -0,0 +1,28 @@
1
+ <script lang="ts" generics="TRow extends Record<string, unknown>">
2
+ import { LegendState } from '../legend/LegendState.svelte';
3
+ import type { Snippet } from 'svelte';
4
+ import type { FacetStageState } from '../../types/phases';
5
+
6
+ /**
7
+ * Runs a plot's data phases once over `rows`, for every facet panel, under
8
+ * the legend in scope, and hands the result to `children`. `frame` is the
9
+ * same run over the same rows without the legend: reused while the legend
10
+ * omits no series, since only omitting one changes the data phases.
11
+ */
12
+ let {
13
+ rows,
14
+ run,
15
+ frame,
16
+ children
17
+ }: {
18
+ rows: TRow[];
19
+ run: (rows: TRow[], legend: LegendState | null) => FacetStageState;
20
+ frame?: FacetStageState;
21
+ children: Snippet<[FacetStageState]>;
22
+ } = $props();
23
+
24
+ const legend = LegendState.current();
25
+ const state = $derived(frame && !legend?.omits ? frame : run(rows, legend));
26
+ </script>
27
+
28
+ {@render children(state)}
@@ -1,8 +1,12 @@
1
- import type { Accessor } from '../../types/plots/data/common';
2
- import type { ChartProps } from '../../types/charts/props';
1
+ import { LegendState } from '../legend/LegendState.svelte';
2
+ import type { Snippet } from 'svelte';
3
+ import type { FacetStageState } from '../../types/phases';
3
4
  declare function $$render<TRow extends Record<string, unknown>>(): {
4
- props: ChartProps<TRow, import("../..").AreaStyle> & {
5
- z: Accessor<TRow, number>;
5
+ props: {
6
+ rows: TRow[];
7
+ run: (rows: TRow[], legend: LegendState | null) => FacetStageState;
8
+ frame?: FacetStageState;
9
+ children: Snippet<[FacetStageState]>;
6
10
  };
7
11
  exports: {};
8
12
  bindings: "";
@@ -23,6 +27,6 @@ interface $$IsomorphicComponent {
23
27
  <TRow extends Record<string, unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<TRow>['props']> & {}): ReturnType<__sveltets_Render<TRow>['exports']>;
24
28
  z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
25
29
  }
26
- declare const Chart: $$IsomorphicComponent;
27
- type Chart<TRow extends Record<string, unknown>> = InstanceType<typeof Chart<TRow>>;
28
- export default Chart;
30
+ declare const PanelRun: $$IsomorphicComponent;
31
+ type PanelRun<TRow extends Record<string, unknown>> = InstanceType<typeof PanelRun<TRow>>;
32
+ export default PanelRun;
@@ -0,0 +1,287 @@
1
+ <script
2
+ lang="ts"
3
+ generics="TRow extends Record<string, unknown>, TScales extends object, TCore extends PlotCoreBase"
4
+ >
5
+ import type { Component } from 'svelte';
6
+ import Figure from '../figure/Figure.svelte';
7
+ import TimelineLayout from '../timeline/TimelineLayout.svelte';
8
+ import FacetLayout from '../facet/FacetLayout.svelte';
9
+ import HoverScope from '../hover/HoverScope.svelte';
10
+ import PanelRun from './PanelRun.svelte';
11
+ import GenericCore from './Core.svelte';
12
+ import { getConfiguration } from '../../configuration/config.svelte';
13
+ import { TimelineState } from '../timeline/TimelineState.svelte';
14
+ import { HoverState } from '../hover/HoverState.svelte';
15
+ import { HoverSettings } from '../hover/HoverSettings';
16
+ import { Interpolation } from '../../utils/Interpolation';
17
+ import { FacetPanels } from '../../phases/facet/FacetPanels';
18
+ import { merge } from '../../utils/merge';
19
+ import { Pipeline } from '../../phases/Pipeline';
20
+ import { Slice } from './Slice';
21
+ import type { TooltipProp } from '../../types/layout/tooltip';
22
+ import type { MarginConfig, PlotChromeConfig } from '../../types/plots/props';
23
+ import type { PlotCellContext, PlotCellSnippet, PlotCoreBase } from '../../types/layout/plot';
24
+ import type { FacetCellContext, FacetConfig } from '../../types/layout/facet';
25
+ import type { TimelineConfig, TimeValue } from '../../types/layout/timeline';
26
+ import type { LegendState } from '../legend/LegendState.svelte';
27
+ import type { AxisPlotDefaults, DataRunState, FacetStageState } from '../../types/phases';
28
+
29
+ /**
30
+ * Renders a plot's core from its `core` props, inside the plot's
31
+ * {@link Figure} (its box, stores and chrome): once, or once per slice of
32
+ * its `timeline` and `facet`. `slice` builds the core's props for one
33
+ * slice; by default it swaps in the slice's rows, box, margins and shared
34
+ * scales. The core is the generic one, which runs the kind's pipeline; a
35
+ * kind with its own rendering (a map) passes its `Core`. The `cell`
36
+ * snippet draws each slice instead -
37
+ * anything that takes `{ data, width, height }`. `defaults` builds the
38
+ * kind's defaults - or its own pipeline - once per plot: the {@link Pipeline}
39
+ * every core it renders runs, and the plot's hover and timeline defaults. `margins` is
40
+ * bindable: an unsliced core reports the margin it settled on. The plot's
41
+ * box is its own `width`/`height` or, drawn straight inside a
42
+ * `PlotComposer`, a cell (`area`, `inset`).
43
+ */
44
+ let {
45
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
46
+ Core = GenericCore as Component<any, Record<string, never>, 'margins'>,
47
+ core,
48
+ defaults,
49
+ slice,
50
+ cell,
51
+ margins = $bindable(),
52
+ tooltip,
53
+ data,
54
+ width,
55
+ height,
56
+ markers,
57
+ title,
58
+ subtitle,
59
+ caption,
60
+ header,
61
+ footer,
62
+ legend,
63
+ order,
64
+ timeline,
65
+ facet
66
+ }: PlotChromeConfig & {
67
+ // A generic plot core can't be typed against `core`'s own row type.
68
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
69
+ Core?: Component<any, Record<string, never>, 'margins'>;
70
+ core?: TCore;
71
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
72
+ defaults?: () => AxisPlotDefaults<any, any> | Pipeline<any, any>;
73
+ slice?: (cell: PlotCellContext<TRow, TScales>) => TCore;
74
+ cell?: PlotCellSnippet<TRow, TScales>;
75
+ margins?: MarginConfig;
76
+ tooltip?: TooltipProp<TRow>;
77
+ /** The rows `timeline` and `facet` slice. Defaults to `core.data`. */
78
+ data?: TRow[];
79
+ width?: number;
80
+ height?: number;
81
+ markers?: { type: string }[];
82
+ timeline?: TimelineConfig<TRow>;
83
+ facet?: FacetConfig<TRow>;
84
+ } = $props();
85
+
86
+ const cfg = $derived(getConfiguration());
87
+ // The kind's pipeline, built once per plot: every core it renders runs it.
88
+ const pipeline = $derived(defaults ? Pipeline.of(defaults()) : undefined);
89
+ const hoverSettings = $derived(
90
+ new HoverSettings(
91
+ tooltip,
92
+ markers ?? core?.markers,
93
+ pipeline?.hoverStrategy(core ?? {}, cfg) ?? 'x'
94
+ )
95
+ );
96
+ const tooltipConfig = $derived(hoverSettings.tooltip);
97
+ const rows = $derived(data ?? (core?.data as TRow[] | undefined));
98
+
99
+ // Inside a composer with a timeline, that one drives every panel; otherwise
100
+ // this plot has one of its own, which its figure draws when it's a player.
101
+ const outerTimeline = TimelineState.current();
102
+ const sharedTimeline = outerTimeline?.enabled ? outerTimeline : null;
103
+ const ownTimeline = sharedTimeline ? null : new TimelineState(() => timeline);
104
+ ownTimeline?.watch();
105
+ const timelineState = sharedTimeline ?? ownTimeline;
106
+ const parentScope = HoverState.scope();
107
+ const scopeOf = (facetValue: string) => {
108
+ const parent = parentScope();
109
+ return parent ? `${parent}/${facetValue}` : facetValue;
110
+ };
111
+
112
+ // How the rows divide into slices: timeline steps and facet panels.
113
+ const slicing = $derived(new Slice({ rows, timeline, facet, filterMode: pipeline?.filterMode }));
114
+ // A boolean, so a timeline step re-slicing the same rows invalidates nothing downstream.
115
+ const sliced = $derived(slicing.sliced);
116
+ $effect(() => {
117
+ for (const problem of slicing.problems) console.warn(`Plot: ${problem}`);
118
+ });
119
+
120
+ // With a facet, the kind's data phases run once over every panel (`dataRun`),
121
+ // and each panel's core runs only the phases after them. The run over every
122
+ // row, without the legend (the frame), also gives the domains that facets
123
+ // and timeline steps share.
124
+ const dataRun = $derived.by(() => {
125
+ const run = pipeline;
126
+ if (!sliced || !run?.facets) return undefined;
127
+ return (r: TRow[], f: FacetConfig<TRow> | undefined, legend: LegendState | null) =>
128
+ run.runData(core ?? {}, r, f as never, legend, cfg);
129
+ });
130
+ // Kept while its inputs are the same objects: a timeline step re-reads them without changing them.
131
+ let frame: { inputs: unknown[]; state: DataRunState | undefined } | undefined;
132
+ const frameState = $derived.by(() => {
133
+ const inputs = [dataRun, facet, rows];
134
+ if (frame?.inputs.every((input, i) => input === inputs[i])) return frame.state;
135
+ const state = dataRun && rows ? dataRun(rows, facet, null) : undefined;
136
+ frame = { inputs, state };
137
+ return state;
138
+ });
139
+ // The domains slices share, from the frame's "sharedScales" phase, keyed by facet panel.
140
+ const sharedScales = $derived(frameState?.sharedScales);
141
+
142
+ const timelineInterpolation = $derived.by(() => {
143
+ if (!timeline) return undefined;
144
+ const tween = pipeline?.interpolation<TRow>((core ?? {}) as { data?: TRow[] }, cfg);
145
+ if (tween) return Interpolation.buildTimeline(timeline.interpolate, tween);
146
+ return typeof timeline.interpolate === 'object' ? timeline.interpolate : undefined;
147
+ });
148
+
149
+ /** A core's props without `margins`, for a core that binds them instead. */
150
+ function withoutMargins<T extends object>(props: T): Omit<T, 'margins'> {
151
+ const rest = { ...props } as T & { margins?: unknown };
152
+ delete rest.margins;
153
+ return rest;
154
+ }
155
+
156
+ function buildSliceProps(ctx: PlotCellContext<TRow, TScales>) {
157
+ return {
158
+ ...core,
159
+ ...(ctx.data ? { data: ctx.data } : {}),
160
+ width: ctx.width,
161
+ height: ctx.height,
162
+ margins: ctx.margins ?? margins,
163
+ scales: merge(ctx.scales, core?.scales as TScales | undefined),
164
+ tooltip: ctx.tooltip,
165
+ ...(ctx.panel ? { panelState: ctx.panel } : {})
166
+ };
167
+ }
168
+ </script>
169
+
170
+ <!-- One slice: the kind's core with the slice's rows, box and scales, or the author's own `cell`. -->
171
+ {#snippet sliceCell(ctx: PlotCellContext<TRow, TScales>)}
172
+ {#if cell}
173
+ {@render cell(ctx)}
174
+ {:else if Core && sliced}
175
+ <Core {...(slice ?? buildSliceProps)(ctx)} {pipeline} />
176
+ {:else if Core}
177
+ <Core {...withoutMargins((slice ?? buildSliceProps)(ctx))} bind:margins {pipeline} />
178
+ {/if}
179
+ {/snippet}
180
+
181
+ {#snippet facetCell(
182
+ place: FacetCellContext<TRow>,
183
+ time: TimeValue | undefined,
184
+ panels: FacetStageState | undefined
185
+ )}
186
+ <HoverScope id={scopeOf(place.facetValue)}>
187
+ {@render sliceCell({
188
+ data: place.data,
189
+ width: place.width,
190
+ height: place.height,
191
+ margins: place.margins,
192
+ tooltip: tooltipConfig,
193
+ scales: slicing.facetScales<TScales>(sharedScales, place),
194
+ panel: panels
195
+ ? FacetPanels.buildPanelState(panels, slicing.panelKey(place) ?? '')
196
+ : undefined,
197
+ keep: slicing.keep({ time, facet: place })
198
+ })}
199
+ </HoverScope>
200
+ {/snippet}
201
+
202
+ {#snippet facetGrid(
203
+ stepRows: TRow[],
204
+ w: number,
205
+ h: number,
206
+ time: TimeValue | undefined,
207
+ panels: FacetStageState | undefined
208
+ )}
209
+ <FacetLayout data={stepRows} {...slicing.layout} width={w} height={h}>
210
+ {#snippet cell(place)}
211
+ {@render facetCell(place, time, panels)}
212
+ {/snippet}
213
+ </FacetLayout>
214
+ {/snippet}
215
+
216
+ {#snippet facetBody(
217
+ stepRows: TRow[] | undefined,
218
+ w: number,
219
+ h: number,
220
+ time: TimeValue | undefined
221
+ )}
222
+ {#if facet && stepRows && dataRun}
223
+ <PanelRun
224
+ rows={stepRows}
225
+ run={(r, legendInteraction) => dataRun(r, facet, legendInteraction)}
226
+ frame={stepRows === rows ? frameState : undefined}
227
+ >
228
+ {#snippet children(panels)}
229
+ {@render facetGrid(stepRows, w, h, time, panels)}
230
+ {/snippet}
231
+ </PanelRun>
232
+ {:else if facet && stepRows}
233
+ {@render facetGrid(stepRows, w, h, time, undefined)}
234
+ {:else}
235
+ {@render sliceCell({
236
+ data: stepRows,
237
+ width: w,
238
+ height: h,
239
+ tooltip: tooltipConfig,
240
+ scales: slicing.timelineScales<TScales>(sharedScales),
241
+ keep: slicing.keep({ time })
242
+ })}
243
+ {/if}
244
+ {/snippet}
245
+
246
+ {#snippet body({ width: w, height: h }: { width: number; height: number })}
247
+ {#if timeline && rows}
248
+ <TimelineLayout
249
+ data={rows}
250
+ accessor={timeline.accessor}
251
+ dateFormat={timeline.dateFormat}
252
+ progress={timelineState?.progress ?? timeline.progress ?? 0}
253
+ values={sharedTimeline ? sharedTimeline.steps : timeline.values}
254
+ onsteps={ownTimeline ? (found, temporal) => ownTimeline.setSteps(found, temporal) : undefined}
255
+ orientation={timeline.orientation}
256
+ show={false}
257
+ filterMode={slicing.filterMode}
258
+ interpolate={timelineInterpolation}
259
+ width={w}
260
+ height={h}
261
+ >
262
+ {#snippet child({ data: stepRows, width: tw, height: th, selectedValue })}
263
+ {@render facetBody(stepRows, tw, th, selectedValue)}
264
+ {/snippet}
265
+ </TimelineLayout>
266
+ {:else}
267
+ {@render facetBody(rows, w, h, undefined)}
268
+ {/if}
269
+ {/snippet}
270
+
271
+ <Figure
272
+ width={width ?? core?.width}
273
+ height={height ?? core?.height}
274
+ area={core?.area}
275
+ inset={core?.inset}
276
+ {title}
277
+ {subtitle}
278
+ {caption}
279
+ {header}
280
+ {footer}
281
+ {legend}
282
+ {order}
283
+ hoverStrategy={hoverSettings.strategy}
284
+ hoverSync={hoverSettings.sync}
285
+ timelineState={ownTimeline}
286
+ {body}
287
+ />