@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
@@ -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,84 @@
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 `value` lies within `range`; a missing value always does. */
24
+ static inRange(value: number | null | undefined, range: {
25
+ min: number;
26
+ max: number;
27
+ }): boolean;
28
+ /** Whether `series` is turned off. */
29
+ isOff(series: string): boolean;
30
+ /** What turning `series` off does, while it is off. */
31
+ actionOf(series: string): LegendDisabledAction | undefined;
32
+ turnOff(series: string, action: LegendDisabledAction): void;
33
+ turnOn(series: string): void;
34
+ /** Turns `series` off with `action`, or back on. */
35
+ toggle(series: string, action: LegendDisabledAction): void;
36
+ /** Whether any series is off with `'omit'` - which changes the plot's own rows, not just how they draw. */
37
+ get omits(): boolean;
38
+ /** `series` without those turned off with `'omit'`. */
39
+ withoutOmitted<S extends {
40
+ name: string;
41
+ }>(series: S[]): S[];
42
+ /**
43
+ * Records what the plot `source` draws, replacing what it recorded before.
44
+ * A series or mark that is off keeps its entry, in its place, even when
45
+ * the plot no longer draws it (an `'omit'`): the legend must still list it
46
+ * to turn it back on.
47
+ */
48
+ register(source: unknown, entries: LegendEntry[]): void;
49
+ unregister(source: unknown): void;
50
+ /**
51
+ * Everything the plots draw: series first, then what names itself, then
52
+ * scales - each once, however many plots (or facet panels) draw it: a
53
+ * series or mark by its name, a size or symbol scale by its title.
54
+ */
55
+ get entries(): LegendEntry[];
56
+ /**
57
+ * The legend {@link entries} read as, with `extension` added: one discrete
58
+ * section of every series and every segment or marker that names itself -
59
+ * a dot as a circle, a line as its stroke, anything else as a swatch - with
60
+ * `extension.items` after them; a continuous section per color scale, a
61
+ * size section per dot size scale and a symbol section per dot shape
62
+ * scale, each titled by its field name (see `legend.pretty`);
63
+ * then `extension.sections`. A lone series, with nothing else to tell it
64
+ * from, shows no discrete section; with other sections beside it, the
65
+ * discrete one is titled `legend.seriesTitle`.
66
+ */
67
+ sections(extension?: LegendExtension): LegendSection[];
68
+ /**
69
+ * The author's own `sections`, each discrete item that names something the
70
+ * plots draw - a series, or a segment or marker that names itself - in its
71
+ * color, unless the item sets one. Any other item keeps its own color, or
72
+ * the palette's in item order.
73
+ */
74
+ colorize(sections: LegendSection[]): LegendSection[];
75
+ /**
76
+ * What a plot draws, as legend entries: each of its series, by name, in
77
+ * its color, drawn as the plot's own mark - the first of its markers a
78
+ * legend can show, as dots in the shape they share - then each of its
79
+ * segments and markers that names itself (its `legend`), in its own color
80
+ * and mark, then what the plot's and its markers' `color`, `opacity`, `r`
81
+ * and `symbol` channels draw with.
82
+ */
83
+ static entriesOf(plot: LegendPlot): LegendEntry[];
84
+ }
@@ -0,0 +1,333 @@
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 `value` lies within `range`; a missing value always does. */
37
+ static inRange(value, range) {
38
+ return value == null || (value >= range.min && value <= range.max);
39
+ }
40
+ /** Whether `series` is turned off. */
41
+ isOff(series) {
42
+ return this.disabled.has(series);
43
+ }
44
+ /** What turning `series` off does, while it is off. */
45
+ actionOf(series) {
46
+ return this.disabled.get(series);
47
+ }
48
+ turnOff(series, action) {
49
+ this.disabled.set(series, action);
50
+ }
51
+ turnOn(series) {
52
+ this.disabled.delete(series);
53
+ }
54
+ /** Turns `series` off with `action`, or back on. */
55
+ toggle(series, action) {
56
+ if (this.isOff(series))
57
+ this.turnOn(series);
58
+ else
59
+ this.turnOff(series, action);
60
+ }
61
+ /** Whether any series is off with `'omit'` - which changes the plot's own rows, not just how they draw. */
62
+ get omits() {
63
+ return [...this.disabled.values()].some((action) => action.mode === 'omit');
64
+ }
65
+ /** `series` without those turned off with `'omit'`. */
66
+ withoutOmitted(series) {
67
+ return series.filter((s) => this.actionOf(s.name)?.mode !== 'omit');
68
+ }
69
+ /**
70
+ * Records what the plot `source` draws, replacing what it recorded before.
71
+ * A series or mark that is off keeps its entry, in its place, even when
72
+ * the plot no longer draws it (an `'omit'`): the legend must still list it
73
+ * to turn it back on.
74
+ */
75
+ register(source, entries) {
76
+ untrack(() => {
77
+ const known = this.#sources.get(source);
78
+ const next = known ? this.#keepingOff(known, entries) : entries;
79
+ if (known && JSON.stringify(known) === JSON.stringify(next))
80
+ return;
81
+ this.#sources.set(source, next);
82
+ });
83
+ }
84
+ /** `entries` in the order `known` had them, with the off series and marks `entries` lacks kept from `known`. */
85
+ #keepingOff(known, entries) {
86
+ const key = (entry) => entry.type === 'series' || entry.type === 'mark' ? `${entry.type}:${entry.name}` : undefined;
87
+ const drawn = (entry) => entries.find((other) => key(other) === key(entry));
88
+ const isKept = (entry) => key(entry) !== undefined &&
89
+ !drawn(entry) &&
90
+ this.disabled.has(entry.name);
91
+ if (!known.some(isKept))
92
+ return entries;
93
+ const ordered = known.flatMap((entry) => {
94
+ const current = isKept(entry) ? entry : drawn(entry);
95
+ return current ? [current] : [];
96
+ });
97
+ return [...ordered, ...entries.filter((entry) => !ordered.includes(entry))];
98
+ }
99
+ unregister(source) {
100
+ this.#sources.delete(source);
101
+ }
102
+ /**
103
+ * Everything the plots draw: series first, then what names itself, then
104
+ * scales - each once, however many plots (or facet panels) draw it: a
105
+ * series or mark by its name, a size or symbol scale by its title.
106
+ */
107
+ get entries() {
108
+ const all = [...this.#sources.values()].flat();
109
+ const keyOf = (entry) => entry.type === 'series' || entry.type === 'mark'
110
+ ? `${entry.type}:${entry.name}`
111
+ : entry.type === 'size' || entry.type === 'symbol'
112
+ ? `${entry.type}:${entry.title ?? ''}`
113
+ : entry.type === 'scale' || entry.type === 'opacity'
114
+ ? JSON.stringify(entry)
115
+ : undefined;
116
+ const once = (type) => all.filter((entry, i) => entry.type === type &&
117
+ (keyOf(entry) === undefined ||
118
+ all.findIndex((other) => keyOf(other) === keyOf(entry)) === i));
119
+ return [
120
+ ...once('series'),
121
+ ...once('mark'),
122
+ ...once('scale'),
123
+ ...once('opacity'),
124
+ ...once('size'),
125
+ ...once('symbol')
126
+ ];
127
+ }
128
+ /**
129
+ * The legend {@link entries} read as, with `extension` added: one discrete
130
+ * section of every series and every segment or marker that names itself -
131
+ * a dot as a circle, a line as its stroke, anything else as a swatch - with
132
+ * `extension.items` after them; a continuous section per color scale, a
133
+ * size section per dot size scale and a symbol section per dot shape
134
+ * scale, each titled by its field name (see `legend.pretty`);
135
+ * then `extension.sections`. A lone series, with nothing else to tell it
136
+ * from, shows no discrete section; with other sections beside it, the
137
+ * discrete one is titled `legend.seriesTitle`.
138
+ */
139
+ sections(extension) {
140
+ const entries = this.entries;
141
+ const cfg = getConfiguration();
142
+ const format = (title) => LegendText.of(title, cfg);
143
+ const adjust = (channel, title) => LegendState.#adjustment(extension?.[channel], title, format);
144
+ const items = [];
145
+ const ramps = [];
146
+ let interactive = false;
147
+ for (const entry of entries) {
148
+ if (entry.type === 'size') {
149
+ const { title, domain, range, color, filled, symbol } = entry;
150
+ ramps.push({
151
+ type: 'size',
152
+ title: title && format(title),
153
+ domain,
154
+ range,
155
+ color,
156
+ filled,
157
+ ...(symbol ? { symbol } : {}),
158
+ ...adjust('size', title)
159
+ });
160
+ }
161
+ else if (entry.type === 'symbol') {
162
+ const { title, items: shapes, color, filled } = entry;
163
+ ramps.push({
164
+ type: 'symbol',
165
+ title: title && format(title),
166
+ items: shapes,
167
+ color,
168
+ filled,
169
+ ...adjust('symbol', title)
170
+ });
171
+ }
172
+ else if (entry.type === 'opacity') {
173
+ const { title, min, max, opacityMin, opacityMax, color } = entry;
174
+ ramps.push({
175
+ type: 'continuous',
176
+ title: title && format(title),
177
+ min,
178
+ max,
179
+ opacity: [opacityMin, opacityMax],
180
+ ...(color ? { colorMin: color } : {}),
181
+ ...adjust('opacity', title)
182
+ });
183
+ }
184
+ else if (entry.type === 'scale') {
185
+ const { title, min, max, colorMin, colorMax, scheme, pivot } = entry;
186
+ const section = {
187
+ type: 'continuous',
188
+ title: title && format(title),
189
+ min,
190
+ max,
191
+ colorMin,
192
+ colorMax,
193
+ ...(scheme !== undefined ? { scheme } : {}),
194
+ ...(pivot !== undefined ? { pivot } : {}),
195
+ ...adjust('color', title)
196
+ };
197
+ // The legend holds one range, so only the first interactive ramp drives it.
198
+ if (section.interactive?.enabled) {
199
+ if (interactive)
200
+ section.interactive = { ...section.interactive, enabled: false };
201
+ interactive = true;
202
+ }
203
+ ramps.push(section);
204
+ }
205
+ else {
206
+ items.push(LegendState.#itemOf(entry));
207
+ }
208
+ }
209
+ items.push(...(extension?.items ?? []));
210
+ const named = entries.some((entry) => entry.type === 'mark') || !!extension?.items?.length;
211
+ const others = [...ramps, ...(extension?.sections ?? [])];
212
+ const title = cfg.legend.seriesTitle.enabled && others.length > 0;
213
+ const discrete = items.length > 1 || (named && items.length > 0)
214
+ ? [
215
+ {
216
+ type: 'discrete',
217
+ ...(title ? { title: cfg.legend.seriesTitle.text } : {}),
218
+ items,
219
+ ...LegendState.#adjustment(extension?.color, undefined, format),
220
+ ...extension?.series
221
+ }
222
+ ]
223
+ : [];
224
+ return [...discrete, ...others];
225
+ }
226
+ /** What `override` changes in the section titled `title`: the entries that match it, in order, merged. */
227
+ static #adjustment(override, title, format) {
228
+ if (!override)
229
+ return {};
230
+ const list = Array.isArray(override) ? override : [override];
231
+ const merged = {};
232
+ for (const { match, ...config } of list) {
233
+ const matches = match === undefined ||
234
+ (title !== undefined && (match === title || match === format(title)));
235
+ if (matches)
236
+ Object.assign(merged, config);
237
+ }
238
+ return merged;
239
+ }
240
+ /**
241
+ * The author's own `sections`, each discrete item that names something the
242
+ * plots draw - a series, or a segment or marker that names itself - in its
243
+ * color, unless the item sets one. Any other item keeps its own color, or
244
+ * the palette's in item order.
245
+ */
246
+ colorize(sections) {
247
+ const colorOf = (name) => {
248
+ const entry = this.entries.find((e) => (e.type === 'series' || e.type === 'mark') && e.name === name);
249
+ return entry && (entry.type === 'series' || entry.type === 'mark') ? entry.color : undefined;
250
+ };
251
+ return sections.map((section) => section.type !== 'discrete'
252
+ ? section
253
+ : {
254
+ ...section,
255
+ items: section.items.map((item) => {
256
+ const drawn = item.color ? undefined : colorOf(item.name);
257
+ return drawn ? { ...item, color: drawn } : item;
258
+ })
259
+ });
260
+ }
261
+ /**
262
+ * What a plot draws, as legend entries: each of its series, by name, in
263
+ * its color, drawn as the plot's own mark - the first of its markers a
264
+ * legend can show, as dots in the shape they share - then each of its
265
+ * segments and markers that names itself (its `legend`), in its own color
266
+ * and mark, then what the plot's and its markers' `color`, `opacity`, `r`
267
+ * and `symbol` channels draw with.
268
+ */
269
+ static entriesOf(plot) {
270
+ const color = (name) => name !== undefined && name !== 'default' ? plot.colorForSeries?.(name) : undefined;
271
+ const mark = plot.markers
272
+ ?.map((marker) => MarkerKinds.of(marker.type)?.legendSymbol)
273
+ .find((kind) => kind !== undefined);
274
+ const dots = LegendChannels.look((plot.markers ?? []).filter((marker) => marker.type === 'dot' && !marker.legend));
275
+ const series = (plot.resolvedSeries ?? []).map((s) => ({
276
+ type: 'series',
277
+ name: s.name,
278
+ color: color(s.name),
279
+ ...(mark ? { mark } : {}),
280
+ ...(mark === 'dot' && dots.symbol ? { symbol: dots.symbol } : {}),
281
+ ...(mark === 'dot' && !dots.filled ? { filled: false } : {})
282
+ }));
283
+ const segments = Object.entries(plot.segments ?? {}).flatMap(([name, list]) => (list ?? []).flatMap((segment) => LegendState.#markEntry(segment, mark, color(name))));
284
+ const markers = (plot.markers ?? []).flatMap((marker) => LegendState.#markEntry(marker, MarkerKinds.of(marker.type)?.legendSymbol, color(marker.series)));
285
+ return [...series, ...segments, ...markers, ...LegendChannels.of(plot)];
286
+ }
287
+ /** A segment's or marker's own entry, when it names itself on the legend. */
288
+ static #markEntry(source, mark, fallbackColor) {
289
+ const legend = source.legend;
290
+ if (!legend)
291
+ return [];
292
+ const own = typeof legend === 'string' ? { label: legend } : legend;
293
+ const styles = source.styles ?? {};
294
+ const drawn = [
295
+ styles.fill,
296
+ styles.stroke,
297
+ styles.dotFill,
298
+ styles.dotStroke,
299
+ source.fill,
300
+ source.stroke
301
+ ].find((value) => typeof value === 'string' && value !== 'none');
302
+ const dashed = styles.strokeDasharray !== undefined && styles.strokeDasharray !== 'none';
303
+ const dot = mark === 'dot' ? LegendChannels.look([source]) : undefined;
304
+ const symbol = own.symbol ?? dot?.symbol;
305
+ const filled = own.filled ?? dot?.filled;
306
+ return [
307
+ {
308
+ type: 'mark',
309
+ name: own.label,
310
+ label: own.label,
311
+ color: own.color ?? drawn ?? fallbackColor,
312
+ ...(mark ? { mark } : {}),
313
+ ...(symbol ? { symbol } : {}),
314
+ ...(filled === false ? { filled } : {}),
315
+ ...(own.lineStyle || dashed ? { lineStyle: own.lineStyle ?? 'dashed' } : {})
316
+ }
317
+ ];
318
+ }
319
+ /** A series or mark entry as a discrete legend item. */
320
+ static #itemOf(entry) {
321
+ return {
322
+ name: entry.name,
323
+ ...(entry.label ? { label: entry.label } : {}),
324
+ color: entry.color,
325
+ ...(entry.filled === false ? { filled: false } : {}),
326
+ ...(entry.symbol || entry.mark === 'dot'
327
+ ? { symbol: entry.symbol ?? 'circle' }
328
+ : entry.mark === 'line'
329
+ ? { symbol: 'line', lineStyle: entry.lineStyle ?? 'solid' }
330
+ : {})
331
+ };
332
+ }
333
+ }
@@ -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;