@fundar/data-chart-telling 0.0.64 → 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 -561
  4. package/dist/configuration/config.svelte.d.ts +5 -5
  5. package/dist/configuration/config.svelte.js +130 -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 +421 -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 +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 +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 +152 -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 +256 -55
  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
@@ -1,52 +1,58 @@
1
1
  <script lang="ts">
2
- import type { LegendItemsLayout, LegendSection } from '../../types/layout/legend';
3
- import DiscreteSection from './DiscreteSection.svelte';
4
- import ContinuousSection from './ContinuousSection.svelte';
2
+ import type { LegendItemsLayout, LegendSection } from '../../types/layout/legend';
3
+ import DiscreteSection from './DiscreteSection.svelte';
4
+ import ContinuousSection from './ContinuousSection.svelte';
5
+ import SizeSection from './SizeSection.svelte';
6
+ import SymbolSection from './SymbolSection.svelte';
5
7
 
6
- /**
7
- * Renders one or more legend sections side by side, dispatching each to the
8
- * matching section renderer. Discrete and continuous sections can be mixed.
9
- * A lone discrete section's items default to horizontal flow; vertical once
10
- * a second section joins. A section's own `layout` always wins.
11
- */
12
- let { sections }: { sections: LegendSection[] } = $props();
13
- const defaultItemsLayout = $derived<LegendItemsLayout>(
14
- sections.length === 1 ? { type: 'horizontal' } : { type: 'vertical' }
15
- );
8
+ /**
9
+ * Renders one or more legend sections side by side, dispatching each to the
10
+ * matching section renderer. Discrete, continuous, size and symbol sections can be mixed.
11
+ * A lone discrete section's items default to horizontal flow; vertical once
12
+ * a second section joins. A section's own `layout` always wins.
13
+ */
14
+ let { sections }: { sections: LegendSection[] } = $props();
15
+ const defaultItemsLayout = $derived<LegendItemsLayout>(
16
+ sections.length === 1 ? { type: 'horizontal' } : { type: 'vertical' }
17
+ );
16
18
  </script>
17
19
 
18
20
  <div class="dct-legend">
19
- {#each sections as section, i (section.title ?? i)}
20
- <div class="dct-legend__section">
21
- {#if section.title}
22
- <div class="dct-legend__title">{section.title}</div>
23
- {/if}
24
- {#if section.type === 'discrete'}
25
- <DiscreteSection {section} {defaultItemsLayout} />
26
- {:else if section.type === 'continuous'}
27
- <ContinuousSection {section} />
28
- {/if}
29
- </div>
30
- {/each}
21
+ {#each sections as section, i (section.title ?? i)}
22
+ <div class="dct-legend__section">
23
+ {#if section.title}
24
+ <div class="dct-legend__title">{section.title}</div>
25
+ {/if}
26
+ {#if section.type === 'discrete'}
27
+ <DiscreteSection {section} {defaultItemsLayout} />
28
+ {:else if section.type === 'continuous'}
29
+ <ContinuousSection {section} />
30
+ {:else if section.type === 'size'}
31
+ <SizeSection {section} />
32
+ {:else if section.type === 'symbol'}
33
+ <SymbolSection {section} {defaultItemsLayout} />
34
+ {/if}
35
+ </div>
36
+ {/each}
31
37
  </div>
32
38
 
33
39
  <style>
34
- .dct-legend {
35
- display: flex;
36
- flex-wrap: wrap;
37
- gap: var(--dct-legend-gap, 0.5rem 2rem);
38
- align-items: flex-start;
39
- font-family: var(--dct-legend-font, inherit);
40
- color: var(--dct-legend-color, inherit);
41
- }
42
- .dct-legend__section {
43
- display: flex;
44
- flex-direction: column;
45
- gap: 0.5rem;
46
- min-width: 0;
47
- }
48
- .dct-legend__title {
49
- font-size: var(--dct-legend-title-size, 0.875rem);
50
- font-weight: var(--dct-legend-title-weight, 500);
51
- }
40
+ .dct-legend {
41
+ display: flex;
42
+ flex-wrap: wrap;
43
+ gap: var(--dct-legend-gap, 0.5rem 2rem);
44
+ align-items: flex-start;
45
+ font-family: var(--dct-legend-font, inherit);
46
+ color: var(--dct-legend-color, inherit);
47
+ }
48
+ .dct-legend__section {
49
+ display: flex;
50
+ flex-direction: column;
51
+ gap: 0.5rem;
52
+ min-width: 0;
53
+ }
54
+ .dct-legend__title {
55
+ font-size: var(--dct-legend-title-size, 0.875rem);
56
+ font-weight: var(--dct-legend-title-weight, 500);
57
+ }
52
58
  </style>
@@ -0,0 +1,79 @@
1
+ import { SvelteMap } from 'svelte/reactivity';
2
+ import type { LegendDisabledAction, LegendEntry, LegendExtension, LegendPlot, LegendRange, LegendSection } from '../../types/layout/legend';
3
+ /**
4
+ * A figure's legend, shared by every plot and legend under it: what the
5
+ * reader turned off - each series' {@link LegendDisabledAction}, and the
6
+ * range a continuous section narrows to - and what the plots draw, as each
7
+ * registers it ({@link register}): its series, their colors and marks, and
8
+ * its continuous scales. From those, {@link sections} reads as a legend of
9
+ * its own, for a figure that sets none.
10
+ */
11
+ export declare class LegendState {
12
+ #private;
13
+ /** Series name → what turning it off does. A series in here is off. */
14
+ readonly disabled: SvelteMap<string, LegendDisabledAction>;
15
+ /** The narrowed range of the first interactive continuous section, or `null`. */
16
+ range: LegendRange | null;
17
+ /** The enclosing figure's legend, or `null` outside one. Call during component init. */
18
+ static current(): LegendState | null;
19
+ /** A new legend, shared with everything below. Call during component init. */
20
+ static provide(): LegendState;
21
+ /** The enclosing figure's legend, or a private one for a legend drawn outside any. Call during component init. */
22
+ static ensure(): LegendState;
23
+ /** Whether `series` is turned off. */
24
+ isOff(series: string): boolean;
25
+ /** What turning `series` off does, while it is off. */
26
+ actionOf(series: string): LegendDisabledAction | undefined;
27
+ turnOff(series: string, action: LegendDisabledAction): void;
28
+ turnOn(series: string): void;
29
+ /** Turns `series` off with `action`, or back on. */
30
+ toggle(series: string, action: LegendDisabledAction): void;
31
+ /** Whether any series is off with `'omit'` - which changes the plot's own rows, not just how they draw. */
32
+ get omits(): boolean;
33
+ /** `series` without those turned off with `'omit'`. */
34
+ withoutOmitted<S extends {
35
+ name: string;
36
+ }>(series: S[]): S[];
37
+ /**
38
+ * Records what the plot `source` draws, replacing what it recorded before.
39
+ * A series or mark that is off keeps its entry, in its place, even when
40
+ * the plot no longer draws it (an `'omit'`): the legend must still list it
41
+ * to turn it back on.
42
+ */
43
+ register(source: unknown, entries: LegendEntry[]): void;
44
+ unregister(source: unknown): void;
45
+ /**
46
+ * Everything the plots draw: series first, then what names itself, then
47
+ * scales - each once, however many plots (or facet panels) draw it: a
48
+ * series or mark by its name, a size or symbol scale by its title.
49
+ */
50
+ get entries(): LegendEntry[];
51
+ /**
52
+ * The legend {@link entries} read as, with `extension` added: one discrete
53
+ * section of every series and every segment or marker that names itself -
54
+ * a dot as a circle, a line as its stroke, anything else as a swatch - with
55
+ * `extension.items` after them; a continuous section per color scale, a
56
+ * size section per dot size scale and a symbol section per dot shape
57
+ * scale, each titled by its field name (see `legend.pretty`);
58
+ * then `extension.sections`. A lone series, with nothing else to tell it
59
+ * from, shows no discrete section; with other sections beside it, the
60
+ * discrete one is titled `legend.seriesTitle`.
61
+ */
62
+ sections(extension?: LegendExtension): LegendSection[];
63
+ /**
64
+ * The author's own `sections`, each discrete item that names something the
65
+ * plots draw - a series, or a segment or marker that names itself - in its
66
+ * color, unless the item sets one. Any other item keeps its own color, or
67
+ * the palette's in item order.
68
+ */
69
+ colorize(sections: LegendSection[]): LegendSection[];
70
+ /**
71
+ * What a plot draws, as legend entries: each of its series, by name, in
72
+ * its color, drawn as the plot's own mark - the first of its markers a
73
+ * legend can show, as dots in the shape they share - then each of its
74
+ * segments and markers that names itself (its `legend`), in its own color
75
+ * and mark, then what the plot's and its markers' `color`, `opacity`, `r`
76
+ * and `symbol` channels draw with.
77
+ */
78
+ static entriesOf(plot: LegendPlot): LegendEntry[];
79
+ }
@@ -0,0 +1,329 @@
1
+ import { getContext, setContext, untrack } from 'svelte';
2
+ import { SvelteMap } from 'svelte/reactivity';
3
+ import { getConfiguration } from '../../configuration/config.svelte';
4
+ import { MarkerKinds } from '../../markers/MarkerKinds';
5
+ import { LegendChannels } from './LegendChannels';
6
+ import { LegendText } from './LegendText';
7
+ const LEGEND_KEY = Symbol('dct-legend');
8
+ /**
9
+ * A figure's legend, shared by every plot and legend under it: what the
10
+ * reader turned off - each series' {@link LegendDisabledAction}, and the
11
+ * range a continuous section narrows to - and what the plots draw, as each
12
+ * registers it ({@link register}): its series, their colors and marks, and
13
+ * its continuous scales. From those, {@link sections} reads as a legend of
14
+ * its own, for a figure that sets none.
15
+ */
16
+ export class LegendState {
17
+ /** Series name → what turning it off does. A series in here is off. */
18
+ disabled = new SvelteMap();
19
+ /** The narrowed range of the first interactive continuous section, or `null`. */
20
+ range = $state(null);
21
+ #sources = new SvelteMap();
22
+ /** The enclosing figure's legend, or `null` outside one. Call during component init. */
23
+ static current() {
24
+ return getContext(LEGEND_KEY) ?? null;
25
+ }
26
+ /** A new legend, shared with everything below. Call during component init. */
27
+ static provide() {
28
+ const legend = new LegendState();
29
+ setContext(LEGEND_KEY, legend);
30
+ return legend;
31
+ }
32
+ /** The enclosing figure's legend, or a private one for a legend drawn outside any. Call during component init. */
33
+ static ensure() {
34
+ return LegendState.current() ?? new LegendState();
35
+ }
36
+ /** Whether `series` is turned off. */
37
+ isOff(series) {
38
+ return this.disabled.has(series);
39
+ }
40
+ /** What turning `series` off does, while it is off. */
41
+ actionOf(series) {
42
+ return this.disabled.get(series);
43
+ }
44
+ turnOff(series, action) {
45
+ this.disabled.set(series, action);
46
+ }
47
+ turnOn(series) {
48
+ this.disabled.delete(series);
49
+ }
50
+ /** Turns `series` off with `action`, or back on. */
51
+ toggle(series, action) {
52
+ if (this.isOff(series))
53
+ this.turnOn(series);
54
+ else
55
+ this.turnOff(series, action);
56
+ }
57
+ /** Whether any series is off with `'omit'` - which changes the plot's own rows, not just how they draw. */
58
+ get omits() {
59
+ return [...this.disabled.values()].some((action) => action.mode === 'omit');
60
+ }
61
+ /** `series` without those turned off with `'omit'`. */
62
+ withoutOmitted(series) {
63
+ return series.filter((s) => this.actionOf(s.name)?.mode !== 'omit');
64
+ }
65
+ /**
66
+ * Records what the plot `source` draws, replacing what it recorded before.
67
+ * A series or mark that is off keeps its entry, in its place, even when
68
+ * the plot no longer draws it (an `'omit'`): the legend must still list it
69
+ * to turn it back on.
70
+ */
71
+ register(source, entries) {
72
+ untrack(() => {
73
+ const known = this.#sources.get(source);
74
+ const next = known ? this.#keepingOff(known, entries) : entries;
75
+ if (known && JSON.stringify(known) === JSON.stringify(next))
76
+ return;
77
+ this.#sources.set(source, next);
78
+ });
79
+ }
80
+ /** `entries` in the order `known` had them, with the off series and marks `entries` lacks kept from `known`. */
81
+ #keepingOff(known, entries) {
82
+ const key = (entry) => entry.type === 'series' || entry.type === 'mark' ? `${entry.type}:${entry.name}` : undefined;
83
+ const drawn = (entry) => entries.find((other) => key(other) === key(entry));
84
+ const isKept = (entry) => key(entry) !== undefined &&
85
+ !drawn(entry) &&
86
+ this.disabled.has(entry.name);
87
+ if (!known.some(isKept))
88
+ return entries;
89
+ const ordered = known.flatMap((entry) => {
90
+ const current = isKept(entry) ? entry : drawn(entry);
91
+ return current ? [current] : [];
92
+ });
93
+ return [...ordered, ...entries.filter((entry) => !ordered.includes(entry))];
94
+ }
95
+ unregister(source) {
96
+ this.#sources.delete(source);
97
+ }
98
+ /**
99
+ * Everything the plots draw: series first, then what names itself, then
100
+ * scales - each once, however many plots (or facet panels) draw it: a
101
+ * series or mark by its name, a size or symbol scale by its title.
102
+ */
103
+ get entries() {
104
+ const all = [...this.#sources.values()].flat();
105
+ const keyOf = (entry) => entry.type === 'series' || entry.type === 'mark'
106
+ ? `${entry.type}:${entry.name}`
107
+ : entry.type === 'size' || entry.type === 'symbol'
108
+ ? `${entry.type}:${entry.title ?? ''}`
109
+ : entry.type === 'scale' || entry.type === 'opacity'
110
+ ? JSON.stringify(entry)
111
+ : undefined;
112
+ const once = (type) => all.filter((entry, i) => entry.type === type &&
113
+ (keyOf(entry) === undefined ||
114
+ all.findIndex((other) => keyOf(other) === keyOf(entry)) === i));
115
+ return [
116
+ ...once('series'),
117
+ ...once('mark'),
118
+ ...once('scale'),
119
+ ...once('opacity'),
120
+ ...once('size'),
121
+ ...once('symbol')
122
+ ];
123
+ }
124
+ /**
125
+ * The legend {@link entries} read as, with `extension` added: one discrete
126
+ * section of every series and every segment or marker that names itself -
127
+ * a dot as a circle, a line as its stroke, anything else as a swatch - with
128
+ * `extension.items` after them; a continuous section per color scale, a
129
+ * size section per dot size scale and a symbol section per dot shape
130
+ * scale, each titled by its field name (see `legend.pretty`);
131
+ * then `extension.sections`. A lone series, with nothing else to tell it
132
+ * from, shows no discrete section; with other sections beside it, the
133
+ * discrete one is titled `legend.seriesTitle`.
134
+ */
135
+ sections(extension) {
136
+ const entries = this.entries;
137
+ const cfg = getConfiguration();
138
+ const format = (title) => LegendText.of(title, cfg);
139
+ const adjust = (channel, title) => LegendState.#adjustment(extension?.[channel], title, format);
140
+ const items = [];
141
+ const ramps = [];
142
+ let interactive = false;
143
+ for (const entry of entries) {
144
+ if (entry.type === 'size') {
145
+ const { title, domain, range, color, filled, symbol } = entry;
146
+ ramps.push({
147
+ type: 'size',
148
+ title: title && format(title),
149
+ domain,
150
+ range,
151
+ color,
152
+ filled,
153
+ ...(symbol ? { symbol } : {}),
154
+ ...adjust('size', title)
155
+ });
156
+ }
157
+ else if (entry.type === 'symbol') {
158
+ const { title, items: shapes, color, filled } = entry;
159
+ ramps.push({
160
+ type: 'symbol',
161
+ title: title && format(title),
162
+ items: shapes,
163
+ color,
164
+ filled,
165
+ ...adjust('symbol', title)
166
+ });
167
+ }
168
+ else if (entry.type === 'opacity') {
169
+ const { title, min, max, opacityMin, opacityMax, color } = entry;
170
+ ramps.push({
171
+ type: 'continuous',
172
+ title: title && format(title),
173
+ min,
174
+ max,
175
+ opacity: [opacityMin, opacityMax],
176
+ ...(color ? { colorMin: color } : {}),
177
+ ...adjust('opacity', title)
178
+ });
179
+ }
180
+ else if (entry.type === 'scale') {
181
+ const { title, min, max, colorMin, colorMax, scheme, pivot } = entry;
182
+ const section = {
183
+ type: 'continuous',
184
+ title: title && format(title),
185
+ min,
186
+ max,
187
+ colorMin,
188
+ colorMax,
189
+ ...(scheme !== undefined ? { scheme } : {}),
190
+ ...(pivot !== undefined ? { pivot } : {}),
191
+ ...adjust('color', title)
192
+ };
193
+ // The legend holds one range, so only the first interactive ramp drives it.
194
+ if (section.interactive?.enabled) {
195
+ if (interactive)
196
+ section.interactive = { ...section.interactive, enabled: false };
197
+ interactive = true;
198
+ }
199
+ ramps.push(section);
200
+ }
201
+ else {
202
+ items.push(LegendState.#itemOf(entry));
203
+ }
204
+ }
205
+ items.push(...(extension?.items ?? []));
206
+ const named = entries.some((entry) => entry.type === 'mark') || !!extension?.items?.length;
207
+ const others = [...ramps, ...(extension?.sections ?? [])];
208
+ const title = cfg.legend.seriesTitle.enabled && others.length > 0;
209
+ const discrete = items.length > 1 || (named && items.length > 0)
210
+ ? [
211
+ {
212
+ type: 'discrete',
213
+ ...(title ? { title: cfg.legend.seriesTitle.text } : {}),
214
+ items,
215
+ ...LegendState.#adjustment(extension?.color, undefined, format),
216
+ ...extension?.series
217
+ }
218
+ ]
219
+ : [];
220
+ return [...discrete, ...others];
221
+ }
222
+ /** What `override` changes in the section titled `title`: the entries that match it, in order, merged. */
223
+ static #adjustment(override, title, format) {
224
+ if (!override)
225
+ return {};
226
+ const list = Array.isArray(override) ? override : [override];
227
+ const merged = {};
228
+ for (const { match, ...config } of list) {
229
+ const matches = match === undefined ||
230
+ (title !== undefined && (match === title || match === format(title)));
231
+ if (matches)
232
+ Object.assign(merged, config);
233
+ }
234
+ return merged;
235
+ }
236
+ /**
237
+ * The author's own `sections`, each discrete item that names something the
238
+ * plots draw - a series, or a segment or marker that names itself - in its
239
+ * color, unless the item sets one. Any other item keeps its own color, or
240
+ * the palette's in item order.
241
+ */
242
+ colorize(sections) {
243
+ const colorOf = (name) => {
244
+ const entry = this.entries.find((e) => (e.type === 'series' || e.type === 'mark') && e.name === name);
245
+ return entry && (entry.type === 'series' || entry.type === 'mark') ? entry.color : undefined;
246
+ };
247
+ return sections.map((section) => section.type !== 'discrete'
248
+ ? section
249
+ : {
250
+ ...section,
251
+ items: section.items.map((item) => {
252
+ const drawn = item.color ? undefined : colorOf(item.name);
253
+ return drawn ? { ...item, color: drawn } : item;
254
+ })
255
+ });
256
+ }
257
+ /**
258
+ * What a plot draws, as legend entries: each of its series, by name, in
259
+ * its color, drawn as the plot's own mark - the first of its markers a
260
+ * legend can show, as dots in the shape they share - then each of its
261
+ * segments and markers that names itself (its `legend`), in its own color
262
+ * and mark, then what the plot's and its markers' `color`, `opacity`, `r`
263
+ * and `symbol` channels draw with.
264
+ */
265
+ static entriesOf(plot) {
266
+ const color = (name) => name !== undefined && name !== 'default' ? plot.colorForSeries?.(name) : undefined;
267
+ const mark = plot.markers
268
+ ?.map((marker) => MarkerKinds.of(marker.type)?.legendSymbol)
269
+ .find((kind) => kind !== undefined);
270
+ const dots = LegendChannels.look((plot.markers ?? []).filter((marker) => marker.type === 'dot' && !marker.legend));
271
+ const series = (plot.resolvedSeries ?? []).map((s) => ({
272
+ type: 'series',
273
+ name: s.name,
274
+ color: color(s.name),
275
+ ...(mark ? { mark } : {}),
276
+ ...(mark === 'dot' && dots.symbol ? { symbol: dots.symbol } : {}),
277
+ ...(mark === 'dot' && !dots.filled ? { filled: false } : {})
278
+ }));
279
+ const segments = Object.entries(plot.segments ?? {}).flatMap(([name, list]) => (list ?? []).flatMap((segment) => LegendState.#markEntry(segment, mark, color(name))));
280
+ const markers = (plot.markers ?? []).flatMap((marker) => LegendState.#markEntry(marker, MarkerKinds.of(marker.type)?.legendSymbol, color(marker.series)));
281
+ return [...series, ...segments, ...markers, ...LegendChannels.of(plot)];
282
+ }
283
+ /** A segment's or marker's own entry, when it names itself on the legend. */
284
+ static #markEntry(source, mark, fallbackColor) {
285
+ const legend = source.legend;
286
+ if (!legend)
287
+ return [];
288
+ const own = typeof legend === 'string' ? { label: legend } : legend;
289
+ const styles = source.styles ?? {};
290
+ const drawn = [
291
+ styles.fill,
292
+ styles.stroke,
293
+ styles.dotFill,
294
+ styles.dotStroke,
295
+ source.fill,
296
+ source.stroke
297
+ ].find((value) => typeof value === 'string' && value !== 'none');
298
+ const dashed = styles.strokeDasharray !== undefined && styles.strokeDasharray !== 'none';
299
+ const dot = mark === 'dot' ? LegendChannels.look([source]) : undefined;
300
+ const symbol = own.symbol ?? dot?.symbol;
301
+ const filled = own.filled ?? dot?.filled;
302
+ return [
303
+ {
304
+ type: 'mark',
305
+ name: own.label,
306
+ label: own.label,
307
+ color: own.color ?? drawn ?? fallbackColor,
308
+ ...(mark ? { mark } : {}),
309
+ ...(symbol ? { symbol } : {}),
310
+ ...(filled === false ? { filled } : {}),
311
+ ...(own.lineStyle || dashed ? { lineStyle: own.lineStyle ?? 'dashed' } : {})
312
+ }
313
+ ];
314
+ }
315
+ /** A series or mark entry as a discrete legend item. */
316
+ static #itemOf(entry) {
317
+ return {
318
+ name: entry.name,
319
+ ...(entry.label ? { label: entry.label } : {}),
320
+ color: entry.color,
321
+ ...(entry.filled === false ? { filled: false } : {}),
322
+ ...(entry.symbol || entry.mark === 'dot'
323
+ ? { symbol: entry.symbol ?? 'circle' }
324
+ : entry.mark === 'line'
325
+ ? { symbol: 'line', lineStyle: entry.lineStyle ?? 'solid' }
326
+ : {})
327
+ };
328
+ }
329
+ }
@@ -0,0 +1,12 @@
1
+ import type { PlotStylesConfig } from '../../types/configuration/styling';
2
+ /** How a legend shows the names it reads off the data. */
3
+ export declare class LegendText {
4
+ /** `name` as the legend shows it: as words, unless `legend.pretty` is off. */
5
+ static of(name: string, cfg: Pick<PlotStylesConfig, 'legend'>): string;
6
+ /**
7
+ * A field or category name as words: `_` and camel-case humps split it,
8
+ * all lowercase but the first letter - `gdp_per_capita` and `gdpPerCapita`
9
+ * both read "Gdp per capita". All-caps words (acronyms) keep their case.
10
+ */
11
+ static humanize(name: string): string;
12
+ }
@@ -0,0 +1,22 @@
1
+ /** How a legend shows the names it reads off the data. */
2
+ export class LegendText {
3
+ /** `name` as the legend shows it: as words, unless `legend.pretty` is off. */
4
+ static of(name, cfg) {
5
+ return cfg.legend.pretty ? LegendText.humanize(name) : name;
6
+ }
7
+ /**
8
+ * A field or category name as words: `_` and camel-case humps split it,
9
+ * all lowercase but the first letter - `gdp_per_capita` and `gdpPerCapita`
10
+ * both read "Gdp per capita". All-caps words (acronyms) keep their case.
11
+ */
12
+ static humanize(name) {
13
+ const words = name
14
+ .replace(/_+/g, ' ')
15
+ .replace(/([a-z\d])([A-Z])/g, '$1 $2')
16
+ .trim()
17
+ .split(/\s+/)
18
+ .map((word) => (word === word.toUpperCase() ? word : word.toLowerCase()))
19
+ .join(' ');
20
+ return words.charAt(0).toUpperCase() + words.slice(1);
21
+ }
22
+ }
@@ -0,0 +1,84 @@
1
+ <script lang="ts">
2
+ import { ticks } from 'd3-array';
3
+ import type { SizeLegendSection } from '../../types/layout/legend';
4
+ import { SymbolPath } from '../../utils/symbol';
5
+ import { AxisNumberFormat } from './AxisNumberFormat';
6
+ import { getConfiguration } from '../../configuration/config.svelte';
7
+
8
+ /**
9
+ * A size legend: a row of dots, each the radius one value draws at - its
10
+ * `domain` onto `range` (px) on a square-root scale, as a plot's `r`
11
+ * channel sizes its dots - bottom-aligned, with the value under each,
12
+ * spaced by whichever is wider. Values read as the axes write theirs.
13
+ * Filled, or drawn as rings, in the section's color.
14
+ */
15
+ let { section }: { section: SizeLegendSection } = $props();
16
+
17
+ const cfg = $derived(getConfiguration());
18
+ const fmt = $derived(section.format ?? AxisNumberFormat.of(section.domain, cfg));
19
+ /** A value's radius: `domain` onto `range` on a square-root scale. */
20
+ function radius(value: number): number {
21
+ const [d0, d1] = section.domain.map(Math.sqrt);
22
+ const [r0, r1] = section.range;
23
+ return r0 + ((r1 - r0) * (Math.sqrt(value) - d0)) / (d1 - d0 || 1);
24
+ }
25
+
26
+ /** A few round values across the domain, above zero: at most four. */
27
+ const values = $derived.by(() => {
28
+ if (section.values) return section.values;
29
+ const [lo, hi] = section.domain;
30
+ const round = ticks(lo, hi, 8).filter((v) => v > 0);
31
+ const step = Math.ceil(round.length / 4);
32
+ return round.filter((_, i) => (round.length - 1 - i) % step === 0);
33
+ });
34
+
35
+ const dots = $derived(values.map((value) => ({ value, r: Math.max(1, radius(value)) })));
36
+ const maxR = $derived(Math.max(1, ...dots.map((dot) => dot.r)));
37
+ const color = $derived(section.color ?? 'currentColor');
38
+ const filled = $derived(section.filled ?? true);
39
+ const symbol = $derived(section.symbol ?? 'circle');
40
+ const paint = $derived({
41
+ fill: filled ? color : 'none',
42
+ 'fill-opacity': filled ? 0.85 : undefined,
43
+ stroke: color,
44
+ 'stroke-width': 1
45
+ });
46
+ </script>
47
+
48
+ <div class="dct-size" role="img" aria-label={section.title ?? 'Size'}>
49
+ {#each dots as dot (dot.value)}
50
+ <div class="dct-size__item">
51
+ <svg width={2 * dot.r + 2} height={2 * maxR + 2} style="overflow: visible">
52
+ {#if symbol === 'circle'}
53
+ <circle cx={dot.r + 1} cy={1 + 2 * maxR - dot.r} r={dot.r} {...paint} />
54
+ {:else}
55
+ <path
56
+ d={SymbolPath.of(symbol, dot.r)}
57
+ transform="translate({dot.r + 1},{1 + 2 * maxR - dot.r})"
58
+ {...paint}
59
+ />
60
+ {/if}
61
+ </svg>
62
+ <span class="dct-size__label">{fmt(dot.value)}</span>
63
+ </div>
64
+ {/each}
65
+ </div>
66
+
67
+ <style>
68
+ .dct-size {
69
+ display: flex;
70
+ align-items: flex-end;
71
+ gap: var(--dct-legend-size-gap, 12px);
72
+ }
73
+ .dct-size__item {
74
+ display: flex;
75
+ flex-direction: column;
76
+ align-items: center;
77
+ gap: 0.125rem;
78
+ }
79
+ .dct-size__label {
80
+ font-size: var(--dct-continuous-label-size, 0.875rem);
81
+ line-height: 1.2;
82
+ white-space: nowrap;
83
+ }
84
+ </style>
@@ -0,0 +1,7 @@
1
+ import type { SizeLegendSection } from '../../types/layout/legend';
2
+ type $$ComponentProps = {
3
+ section: SizeLegendSection;
4
+ };
5
+ declare const SizeSection: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type SizeSection = ReturnType<typeof SizeSection>;
7
+ export default SizeSection;
@@ -0,0 +1,31 @@
1
+ <script lang="ts">
2
+ import DiscreteSection from './DiscreteSection.svelte';
3
+ import type {
4
+ DiscreteLegendSection,
5
+ LegendItemsLayout,
6
+ SymbolLegendSection
7
+ } from '../../types/layout/legend';
8
+
9
+ /**
10
+ * A shape scale: each category next to its shape, drawn as a discrete
11
+ * section's items - all in one color, and never toggling, since they name
12
+ * categories rather than series.
13
+ */
14
+ let {
15
+ section,
16
+ defaultItemsLayout
17
+ }: { section: SymbolLegendSection; defaultItemsLayout?: LegendItemsLayout } = $props();
18
+
19
+ const discrete = $derived<DiscreteLegendSection>({
20
+ type: 'discrete',
21
+ columns: section.columns,
22
+ layout: section.layout,
23
+ items: section.items.map((item) => ({
24
+ ...item,
25
+ color: section.color ?? 'currentColor',
26
+ filled: section.filled ?? true
27
+ }))
28
+ });
29
+ </script>
30
+
31
+ <DiscreteSection section={discrete} {defaultItemsLayout} />