@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
@@ -0,0 +1,19 @@
1
+ import type { LegendDisabledAction, LegendDisabledStyle } from '../../types/layout/legend';
2
+ import type { DotStyle, StrokeStyle } from '../../types/plots/styling';
3
+ /**
4
+ * How a legend's "disabled" state draws a mark. Each of {@link fill},
5
+ * {@link stroke} and {@link dots} is `undefined` when nothing is disabled, so
6
+ * a call site slots it in as one more `??` layer ahead of its own style chain.
7
+ */
8
+ export declare class DisabledStyle {
9
+ /** The style `action` draws a mark with - `'hide'` and `'omit'` are fully transparent. */
10
+ static of(action: LegendDisabledAction | undefined, fallbackOpacity: number): LegendDisabledStyle | undefined;
11
+ /** The style a legend item draws with while off - it stays visible, so it can be turned back on. */
12
+ static ofItem(action: LegendDisabledAction | undefined, fallbackOpacity: number): LegendDisabledStyle | undefined;
13
+ static stroke(disabled: LegendDisabledStyle | undefined): StrokeStyle | undefined;
14
+ static dots(disabled: LegendDisabledStyle | undefined): DotStyle | undefined;
15
+ static fill(disabled: LegendDisabledStyle | undefined): {
16
+ fill?: string;
17
+ fillOpacity?: number;
18
+ } | undefined;
19
+ }
@@ -0,0 +1,57 @@
1
+ /**
2
+ * How a legend's "disabled" state draws a mark. Each of {@link fill},
3
+ * {@link stroke} and {@link dots} is `undefined` when nothing is disabled, so
4
+ * a call site slots it in as one more `??` layer ahead of its own style chain.
5
+ */
6
+ export class DisabledStyle {
7
+ /** The style `action` draws a mark with - `'hide'` and `'omit'` are fully transparent. */
8
+ static of(action, fallbackOpacity) {
9
+ if (!action)
10
+ return undefined;
11
+ if (action.mode !== 'dim')
12
+ return { opacity: 0 };
13
+ return action.style ?? { opacity: fallbackOpacity };
14
+ }
15
+ /** The style a legend item draws with while off - it stays visible, so it can be turned back on. */
16
+ static ofItem(action, fallbackOpacity) {
17
+ if (!action)
18
+ return undefined;
19
+ return action.mode === 'dim'
20
+ ? DisabledStyle.of(action, fallbackOpacity)
21
+ : { opacity: fallbackOpacity };
22
+ }
23
+ static stroke(disabled) {
24
+ if (!disabled)
25
+ return undefined;
26
+ return {
27
+ stroke: disabled.stroke?.stroke,
28
+ strokeWidth: disabled.stroke?.strokeWidth,
29
+ strokeOpacity: disabled.stroke?.strokeOpacity ?? disabled.opacity,
30
+ strokeDasharray: disabled.stroke?.strokeDasharray,
31
+ strokeLinecap: disabled.stroke?.strokeLinecap,
32
+ strokeLinejoin: disabled.stroke?.strokeLinejoin
33
+ };
34
+ }
35
+ static dots(disabled) {
36
+ if (!disabled)
37
+ return undefined;
38
+ return {
39
+ dotRadius: disabled.dots?.dotRadius,
40
+ dotFill: disabled.dots?.dotFill,
41
+ dotFillOpacity: disabled.dots?.dotFillOpacity ?? disabled.opacity,
42
+ dotSymbol: disabled.dots?.dotSymbol,
43
+ dotStroke: disabled.dots?.dotStroke,
44
+ dotStrokeWidth: disabled.dots?.dotStrokeWidth,
45
+ dotStrokeOpacity: disabled.dots?.dotStrokeOpacity ?? disabled.opacity,
46
+ dotStrokeDasharray: disabled.dots?.dotStrokeDasharray
47
+ };
48
+ }
49
+ static fill(disabled) {
50
+ if (!disabled)
51
+ return undefined;
52
+ return {
53
+ fill: disabled.fill,
54
+ fillOpacity: disabled.fillOpacity ?? disabled.opacity
55
+ };
56
+ }
57
+ }
@@ -1,12 +1,14 @@
1
1
  <script lang="ts">
2
2
  import { contrastTextColor } from '../../utils/color';
3
+ import { getConfiguration } from '../../configuration/config.svelte';
4
+ import { LegendText } from './LegendText';
3
5
  import DiscreteSymbolIcon from './DiscreteSymbolIcon.svelte';
4
6
  import type { LegendItem } from '../../types/layout/legend';
5
7
 
6
8
  /**
7
9
  * The `interactive.legendStyle: 'badge'` item look: a pill with the series
8
- * color, symbol icon, label, and a toggle icon — an eye (crossed out when
9
- * `disabled`) for `'style'` mode, or a plus/cross pair for `'omit'`.
10
+ * color, symbol icon, label, and a toggle icon - an eye (crossed out when
11
+ * `disabled`) for `'dim'` and `'hide'`, or a plus/cross pair for `'omit'`.
10
12
  */
11
13
  let {
12
14
  item,
@@ -21,6 +23,7 @@
21
23
  showIcon?: boolean;
22
24
  omitMode?: boolean;
23
25
  } = $props();
26
+ const cfg = $derived(getConfiguration());
24
27
  const textColor = $derived(contrastTextColor(color));
25
28
  </script>
26
29
 
@@ -28,7 +31,7 @@
28
31
  {#if showIcon}
29
32
  <DiscreteSymbolIcon {item} color={textColor} />
30
33
  {/if}
31
- <span class="dct-discrete__label">{item.label || item.name}</span>
34
+ <span class="dct-discrete__label">{item.label || LegendText.of(item.name, cfg)}</span>
32
35
  <svg class="dct-discrete__eye" viewBox="0 0 24 24" aria-hidden="true">
33
36
  {#if omitMode}
34
37
  {#if disabled}
@@ -2,11 +2,8 @@
2
2
  import { SvelteSet } from 'svelte/reactivity';
3
3
  import { getConfiguration } from '../../configuration/config.svelte';
4
4
  import { paletteColor } from '../../utils/color';
5
- import {
6
- getLegendInteraction,
7
- createLegendInteraction
8
- } from './interaction.svelte';
9
- import { resolveDisabledStyle } from '../../plots/utils/legendDisabled';
5
+ import { LegendState } from './LegendState.svelte';
6
+ import { DisabledStyle } from './DisabledStyle';
10
7
  import DiscreteBadgeItem from './DiscreteBadgeItem.svelte';
11
8
  import DiscreteSwatchItem from './DiscreteSwatchItem.svelte';
12
9
  import type {
@@ -28,16 +25,28 @@
28
25
  const isHorizontal = $derived(layout.type === 'horizontal');
29
26
  const isFlex = $derived(layout.type === 'flex');
30
27
  const maxRows = $derived(layout.type === 'horizontal' ? Math.max(1, layout.maxRows ?? 1) : 1);
31
- const columns = $derived(section.columns ?? 1);
28
+ /**
29
+ * Without its own `columns` or `layout`, a vertical section spreads its
30
+ * items across columns, favoring rows: up to two items side by side, then
31
+ * half as many columns as items, at most four.
32
+ */
33
+ const columns = $derived(
34
+ section.columns ??
35
+ (section.layout
36
+ ? 1
37
+ : section.items.length <= 2
38
+ ? Math.max(1, section.items.length)
39
+ : Math.min(4, Math.ceil(section.items.length / 2)))
40
+ );
32
41
  const isInteractive = $derived(section.interactive?.enabled ?? false);
33
42
  const useBadge = $derived(
34
43
  isInteractive && (section.interactive?.legendStyle ?? 'badge') === 'badge'
35
44
  );
36
45
  const showIcon = $derived(section.interactive?.showIcon ?? true);
37
46
  const disabledAction = $derived<LegendDisabledAction>(
38
- section.interactive?.disabled ?? { mode: 'style' }
47
+ section.interactive?.disabled ?? { mode: 'dim' }
39
48
  );
40
- const interaction = getLegendInteraction() ?? createLegendInteraction();
49
+ const interaction = LegendState.ensure();
41
50
 
42
51
  const seeded = new SvelteSet<string>();
43
52
  $effect(() => {
@@ -45,17 +54,17 @@
45
54
  if (seeded.has(item.name)) continue;
46
55
  seeded.add(item.name);
47
56
  if (item.disabled) {
48
- interaction.disabledSeries.set(item.name, disabledAction);
57
+ interaction.turnOff(item.name, disabledAction);
49
58
  }
50
59
  }
51
60
  });
52
61
 
53
62
  function toggle(item: LegendItem): void {
54
63
  if (!isInteractive) return;
55
- if (interaction.disabledSeries.has(item.name)) {
56
- interaction.disabledSeries.delete(item.name);
64
+ if (interaction.isOff(item.name)) {
65
+ interaction.turnOn(item.name);
57
66
  } else {
58
- interaction.disabledSeries.set(item.name, disabledAction);
67
+ interaction.turnOff(item.name, disabledAction);
59
68
  }
60
69
  }
61
70
 
@@ -67,12 +76,12 @@
67
76
 
68
77
  // ── Horizontal pagination ──────────────────────────────────────────────
69
78
  // Row breaks are found by measuring each item's `offsetTop` on a full,
70
- // hidden copy of the list kept in normal document flow — not
71
- // `position: absolute` — alongside the visible, paginated one.
79
+ // hidden copy of the list kept in normal document flow - not
80
+ // `position: absolute` - alongside the visible, paginated one.
72
81
  // (In-flow is required: an absolutely-positioned measurer doesn't count
73
82
  // toward its shrink-to-fit ancestors' width, so the container would
74
83
  // collapse to the narrow visible page and each remeasurement would then
75
- // wrap even fewer items than the last — a runaway shrink.)
84
+ // wrap even fewer items than the last - a runaway shrink.)
76
85
  let measurerEl: HTMLDivElement | undefined = $state();
77
86
  // Resize trigger for the measurement effect; the value itself is unused.
78
87
  let containerWidth = $state(0);
@@ -113,7 +122,7 @@
113
122
  measuredKey = key;
114
123
  });
115
124
 
116
- // Whether `rows` was measured against the current item list — before it
125
+ // Whether `rows` was measured against the current item list - before it
117
126
  // is, this reads as unpaginated, same as an empty `rows`.
118
127
  const rowsCurrent = $derived(measuredKey === currentKey);
119
128
 
@@ -150,14 +159,10 @@
150
159
  </script>
151
160
 
152
161
  {#snippet discreteItem(item: LegendItem, i: number)}
153
- {@const action = interaction.disabledSeries.get(item.name)}
162
+ {@const action = interaction.actionOf(item.name)}
154
163
  {@const isDisabled = action != null}
155
- {@const omitMode = disabledAction.mode === 'omit'}
156
- {@const disabledStyle = isDisabled
157
- ? omitMode
158
- ? { opacity: cfg.legend.disabledOpacity }
159
- : resolveDisabledStyle(action, cfg.legend.disabledOpacity)
160
- : undefined}
164
+ {@const omitMode = (action ?? disabledAction).mode === 'omit'}
165
+ {@const disabledStyle = DisabledStyle.ofItem(action, cfg.legend.disabledOpacity)}
161
166
  {@const color =
162
167
  disabledStyle?.fill ??
163
168
  disabledStyle?.stroke?.stroke ??
@@ -212,7 +217,7 @@
212
217
  {#if isHorizontal}
213
218
  <div class="dct-discrete-paginated">
214
219
  {#if showNav}
215
- {@render navButtonSlot('prev', page === 0, prevPage, 'Página anterior de referencias')}
220
+ {@render navButtonSlot('prev', page === 0, prevPage, 'Previous legend page')}
216
221
  {/if}
217
222
  <div class="dct-discrete-horizontal" bind:clientWidth={containerWidth}>
218
223
  <div class="dct-discrete dct-discrete--horizontal">
@@ -231,12 +236,7 @@
231
236
  </div>
232
237
  </div>
233
238
  {#if showNav}
234
- {@render navButtonSlot(
235
- 'next',
236
- page >= totalPages - 1,
237
- nextPage,
238
- 'Página siguiente de referencias'
239
- )}
239
+ {@render navButtonSlot('next', page >= totalPages - 1, nextPage, 'Next legend page')}
240
240
  {/if}
241
241
  </div>
242
242
  {:else if isFlex}
@@ -265,7 +265,7 @@
265
265
  flex-wrap: wrap;
266
266
  }
267
267
  /* Items keep their natural width and wrap to a new row instead of
268
- shrinking — matches the grid variant's `max-content` columns, and
268
+ shrinking - matches the grid variant's `max-content` columns, and
269
269
  overrides flex's default `flex-shrink: 1`, which would otherwise cram
270
270
  every item onto one line before wrapping. */
271
271
  .dct-discrete--horizontal .dct-discrete__item {
@@ -284,7 +284,7 @@
284
284
  min-width: 0;
285
285
  }
286
286
  /* Full, untruncated copy of the list, used only to measure row breaks
287
- (kept in normal flow — see the pagination comment above). Collapsed to
287
+ (kept in normal flow - see the pagination comment above). Collapsed to
288
288
  zero height and clipped so it adds no visible space; `overflow: hidden`
289
289
  only clips painted content, so `offsetTop` on its children still
290
290
  reports real layout position. */
@@ -1,12 +1,15 @@
1
1
  <script lang="ts">
2
+ import { getConfiguration } from '../../configuration/config.svelte';
3
+ import { LegendText } from './LegendText';
2
4
  import DiscreteSymbolIcon from './DiscreteSymbolIcon.svelte';
3
5
  import type { LegendItem } from '../../types/layout/legend';
4
6
 
5
7
  let { item, color }: { item: LegendItem; color: string } = $props();
8
+ const cfg = $derived(getConfiguration());
6
9
  </script>
7
10
 
8
11
  <DiscreteSymbolIcon {item} {color} />
9
- <span class="dct-discrete__label">{item.label || item.name}</span>
12
+ <span class="dct-discrete__label">{item.label || LegendText.of(item.name, cfg)}</span>
10
13
 
11
14
  <style>
12
15
  .dct-discrete__label {
@@ -1,15 +1,24 @@
1
1
  <script lang="ts">
2
2
  import type { LegendItem } from '../../types/layout/legend';
3
3
  import type { LineStyle } from '../../types/plots/constants';
4
+ import { SymbolPath } from '../../utils/symbol';
4
5
 
5
6
  /**
6
7
  * The series' symbol/line-style icon, shared by both discrete item looks
7
8
  * (`DiscreteSwatchItem` and `DiscreteBadgeItem`) so the two stay in sync.
8
- * `color` is caller-supplied rather than read off `item` — the swatch look
9
+ * `color` is caller-supplied rather than read off `item` - the swatch look
9
10
  * fills it with the series color, the badge look with its own label color.
11
+ * A shape draws as the plot's dot does, fitted to the icon.
10
12
  */
11
13
  let { item, color }: { item: LegendItem; color: string } = $props();
12
14
 
15
+ const filled = $derived(item.filled ?? true);
16
+ const paint = $derived(
17
+ filled
18
+ ? { fill: color }
19
+ : { fill: 'none', stroke: color, 'stroke-width': 1.5, 'vector-effect': 'non-scaling-stroke' }
20
+ );
21
+
13
22
  function dashArray(style?: LineStyle): string | undefined {
14
23
  switch (style) {
15
24
  case 'dashed':
@@ -25,15 +34,11 @@
25
34
  </script>
26
35
 
27
36
  <svg class="dct-discrete__swatch" viewBox="0 0 15 10">
28
- {#if item.symbol === 'circle'}
29
- <circle cx="5" cy="5" r="4" fill={color} />
30
- {:else if item.symbol === 'square'}
31
- <rect x="1" y="1" width="8" height="8" rx="2" fill={color} />
32
- {:else if item.symbol === 'triangle'}
37
+ {#if item.symbol && item.symbol !== 'line'}
33
38
  <path
34
- d="M 6 2 L 9 7.5 A 1.5 1.5 0 0 1 7.8 10 L 2.2 10 A 1.5 1.5 0 0 1 1 7.5 L 4 2 A 1.5 1.5 0 0 1 6 2"
35
- fill={color}
36
- transform="translate(0,-1)"
39
+ d={SymbolPath.fitted(item.symbol, filled ? 8 : 7)}
40
+ transform={filled ? 'translate(1,1)' : 'translate(1.5,1.5)'}
41
+ {...paint}
37
42
  />
38
43
  {:else if item.symbol === 'line'}
39
44
  <line
@@ -0,0 +1,21 @@
1
+ import type { SymbolType } from '../../types/plots/constants';
2
+ import type { LegendEntry, LegendPlot, LegendSource } from '../../types/layout/legend';
3
+ /**
4
+ * What a plot's value channels - `color`, `opacity`, `r` and `symbol` - draw
5
+ * with, as legend entries: the plot's own (a heatmap's cells, a map's
6
+ * features) and every marker's, read the way the marker resolves them.
7
+ */
8
+ export declare class LegendChannels {
9
+ #private;
10
+ static of(plot: LegendPlot): LegendEntry[];
11
+ /**
12
+ * How `dots` draw: filled unless they all draw as rings; in the one color
13
+ * they share (their fill, or their stroke as rings), if any; in the one
14
+ * shape they share, unless a `symbol` channel shapes them.
15
+ */
16
+ static look(dots: LegendSource[]): {
17
+ filled: boolean;
18
+ color?: string;
19
+ symbol?: SymbolType;
20
+ };
21
+ }
@@ -0,0 +1,221 @@
1
+ import { resolveAccessor } from '../../plots/utils/accessors';
2
+ import { getConfiguration } from '../../configuration/config.svelte';
3
+ import { ChannelName } from '../../plots/utils/ChannelName';
4
+ import { MarkerKinds } from '../../markers/MarkerKinds';
5
+ import { ContinuousDomain } from '../../utils/ContinuousDomain';
6
+ import { resolveColorScale } from '../../utils/color';
7
+ import { resolveOpacityScale } from '../../utils/opacity';
8
+ import { resolveSymbolScale } from '../../utils/symbol';
9
+ /**
10
+ * What a plot's value channels - `color`, `opacity`, `r` and `symbol` - draw
11
+ * with, as legend entries: the plot's own (a heatmap's cells, a map's
12
+ * features) and every marker's, read the way the marker resolves them.
13
+ */
14
+ export class LegendChannels {
15
+ static of(plot) {
16
+ const markers = plot.markers ?? [];
17
+ const taken = new Set((plot.resolvedSeries ?? []).map((s) => s.name));
18
+ return [
19
+ ...LegendChannels.#plotColor(plot),
20
+ ...markers.flatMap((marker) => LegendChannels.#markerColor(marker, taken)),
21
+ ...LegendChannels.#plotOpacity(plot),
22
+ ...markers.flatMap((marker) => LegendChannels.#markerOpacity(marker, plot)),
23
+ ...LegendChannels.#sizeEntries(plot),
24
+ ...LegendChannels.#symbolEntries(plot)
25
+ ];
26
+ }
27
+ /**
28
+ * How `dots` draw: filled unless they all draw as rings; in the one color
29
+ * they share (their fill, or their stroke as rings), if any; in the one
30
+ * shape they share, unless a `symbol` channel shapes them.
31
+ */
32
+ static look(dots) {
33
+ const filled = dots.length === 0 || dots.some((dot) => dot.styles?.dotFill !== 'none');
34
+ const shared = (values, keep) => {
35
+ const unique = values.filter(keep).filter((value, i, all) => all.indexOf(value) === i);
36
+ return unique.length === 1 && values.every(keep) ? unique[0] : undefined;
37
+ };
38
+ const color = shared(dots.map((dot) => (filled ? dot.styles?.dotFill : dot.styles?.dotStroke)), (value) => typeof value === 'string' && value !== 'none');
39
+ const symbol = dots.some((dot) => dot.symbol !== undefined)
40
+ ? undefined
41
+ : shared(dots.map((dot) => dot.styles?.dotSymbol), (value) => typeof value === 'string');
42
+ return { filled, ...(color ? { color } : {}), ...(symbol ? { symbol } : {}) };
43
+ }
44
+ /** What a channel is called on a legend: its field, or the name of the function that computes it. */
45
+ static #title(channel, property) {
46
+ return typeof channel === 'string' ? channel : ChannelName.of(channel, property);
47
+ }
48
+ /** `marker`'s rows read through `channel` (a field or a function), without the missing and non-finite ones. */
49
+ static #values(marker, channel) {
50
+ if (channel === undefined || channel === null || typeof channel === 'number')
51
+ return [];
52
+ const read = resolveAccessor(channel);
53
+ return (marker.data ?? [])
54
+ .map((row) => read(row))
55
+ .filter((v) => v != null && !(typeof v === 'number' && !Number.isFinite(v)));
56
+ }
57
+ /** The color a marker draws in when it has one color, or its series' own. */
58
+ static #colorOf(marker, plot) {
59
+ const own = LegendChannels.look([marker]).color;
60
+ if (own)
61
+ return own;
62
+ const fill = [marker.fill, marker.stroke].find((v) => typeof v === 'string' && v !== 'none');
63
+ if (fill)
64
+ return fill;
65
+ const name = marker.series ?? plot.resolvedSeries?.[0]?.name;
66
+ return name !== undefined && name !== 'default' ? plot.colorForSeries?.(name) : undefined;
67
+ }
68
+ /** The ramp a continuous color scale draws with, when its config sets one: a name or colors (a category map is not a ramp). */
69
+ static #ramp(scale) {
70
+ const scheme = scale?.scheme;
71
+ const isRamp = typeof scheme === 'string' ||
72
+ (Array.isArray(scheme) && scheme.every((c) => typeof c === 'string'));
73
+ return isRamp
74
+ ? {
75
+ scheme: scheme,
76
+ ...(scale?.pivot !== undefined ? { pivot: scale.pivot } : {})
77
+ }
78
+ : {};
79
+ }
80
+ static #scaleEntry(title, domain, scale) {
81
+ return {
82
+ type: 'scale',
83
+ channel: 'color',
84
+ ...(title ? { title } : {}),
85
+ min: domain[0],
86
+ max: domain[1],
87
+ ...LegendChannels.#ramp(scale)
88
+ };
89
+ }
90
+ /** The plot's own continuous color scale: a numeric `color` field, or a `colorDomain` the plot hands over. */
91
+ static #plotColor(plot) {
92
+ const source = plot.channels?.color?.source;
93
+ const scale = plot.scales?.color;
94
+ const domain = plot.colorDomain ?? scale?.domain;
95
+ if (source === undefined && !plot.colorDomain)
96
+ return [];
97
+ if (!Array.isArray(domain) || domain.length !== 2)
98
+ return [];
99
+ if (!domain.every((v) => typeof v === 'number' && Number.isFinite(v)))
100
+ return [];
101
+ return [
102
+ LegendChannels.#scaleEntry(typeof source === 'string' ? source : undefined, domain, scale)
103
+ ];
104
+ }
105
+ /**
106
+ * A marker's `color` channel: a continuous scale for numbers; for
107
+ * categories, one item each in the color the marker draws it, unless a
108
+ * series of the plot already has that name.
109
+ */
110
+ static #markerColor(marker, taken) {
111
+ const values = LegendChannels.#values(marker, marker.color);
112
+ if (values.length === 0)
113
+ return [];
114
+ const title = LegendChannels.#title(marker.color, 'color');
115
+ const scale = marker.scales?.color;
116
+ if (values.every((v) => Number.isFinite(Number(v)))) {
117
+ const domain = ContinuousDomain.build(scale?.domain, values.map(Number));
118
+ return domain ? [LegendChannels.#scaleEntry(title, domain, scale)] : [];
119
+ }
120
+ const categories = [...new Set(values.map(String))];
121
+ const colorOf = resolveColorScale(scale, categories, getConfiguration().palette);
122
+ const mark = MarkerKinds.of(marker.type)?.legendSymbol;
123
+ return categories
124
+ .filter((name) => !taken.has(name))
125
+ .map((name) => ({ type: 'mark', name, color: colorOf(name), ...(mark ? { mark } : {}) }));
126
+ }
127
+ static #opacityEntry(title, domain, scale, color) {
128
+ if (scale?.range !== undefined && !Array.isArray(scale.range))
129
+ return [];
130
+ const read = resolveOpacityScale(scale, domain, getConfiguration().continuous.opacityRange);
131
+ return [
132
+ {
133
+ type: 'opacity',
134
+ channel: 'opacity',
135
+ ...(title ? { title } : {}),
136
+ min: domain[0],
137
+ max: domain[1],
138
+ opacityMin: read(domain[0]),
139
+ opacityMax: read(domain[1]),
140
+ ...(color ? { color } : {})
141
+ }
142
+ ];
143
+ }
144
+ /** The plot's own numeric `opacity` channel, over the `opacityDomain` it hands over. */
145
+ static #plotOpacity(plot) {
146
+ if (!plot.opacityDomain)
147
+ return [];
148
+ const source = plot.channels?.opacity?.source;
149
+ const name = plot.resolvedSeries?.[0]?.name;
150
+ const color = name !== undefined && name !== 'default' ? plot.colorForSeries?.(name) : undefined;
151
+ return LegendChannels.#opacityEntry(typeof source === 'string' ? source : undefined, plot.opacityDomain, plot.scales?.opacity, color);
152
+ }
153
+ /** A marker's numeric `opacity` channel, in the color the marker draws. */
154
+ static #markerOpacity(marker, plot) {
155
+ const values = LegendChannels.#values(marker, marker.opacity);
156
+ if (values.length === 0 || !values.every((v) => Number.isFinite(Number(v))))
157
+ return [];
158
+ const scale = marker.scales?.opacity;
159
+ const domain = ContinuousDomain.build(scale?.domain, values.map(Number));
160
+ if (!domain)
161
+ return [];
162
+ return LegendChannels.#opacityEntry(LegendChannels.#title(marker.opacity, 'opacity'), domain, scale, LegendChannels.#colorOf(marker, plot));
163
+ }
164
+ /**
165
+ * The size scale of the markers that size by a value (`r` as a field or
166
+ * function), as svelteplot draws it: a square-root scale from 0 to the
167
+ * largest value onto 0-10 px, unless `scales.r` pins either end. The
168
+ * markers' own color when they share one, filled unless they all draw as
169
+ * rings.
170
+ */
171
+ static #sizeEntries(plot) {
172
+ const sized = (plot.markers ?? []).filter((marker) => marker.r !== undefined && typeof marker.r !== 'number');
173
+ if (sized.length === 0)
174
+ return [];
175
+ const values = sized.flatMap((marker) => LegendChannels.#values(marker, marker.r).map(Number).filter(Number.isFinite));
176
+ if (values.length === 0)
177
+ return [];
178
+ const { filled, color, symbol } = LegendChannels.look(sized);
179
+ const source = plot.channels?.r?.source ?? LegendChannels.#title(sized[0].r, 'r');
180
+ return [
181
+ {
182
+ type: 'size',
183
+ channel: 'r',
184
+ ...(typeof source === 'string' ? { title: source } : {}),
185
+ domain: plot.scales?.r?.domain ?? [0, Math.max(...values)],
186
+ range: plot.scales?.r?.range ?? [0, 10],
187
+ ...(color ? { color } : {}),
188
+ filled,
189
+ ...(symbol ? { symbol } : {})
190
+ }
191
+ ];
192
+ }
193
+ /**
194
+ * The shapes the markers' `symbol` channel draws each category as, from
195
+ * `scales.symbol` or the theme's own cycle. Colored and filled as the size
196
+ * scale is.
197
+ */
198
+ static #symbolEntries(plot) {
199
+ const shaped = (plot.markers ?? []).filter((marker) => marker.symbol !== undefined);
200
+ if (shaped.length === 0)
201
+ return [];
202
+ const config = shaped[0].scales?.symbol;
203
+ const domain = (config?.domain ??
204
+ shaped.flatMap((marker) => LegendChannels.#values(marker, marker.symbol).map(String))).filter((value, i, all) => all.indexOf(value) === i);
205
+ if (domain.length === 0)
206
+ return [];
207
+ const shapeOf = resolveSymbolScale(config, domain, getConfiguration().symbols);
208
+ const { filled, color } = LegendChannels.look(shaped);
209
+ const source = plot.channels?.symbol?.source ?? LegendChannels.#title(shaped[0].symbol, 'symbol');
210
+ return [
211
+ {
212
+ type: 'symbol',
213
+ channel: 'symbol',
214
+ ...(typeof source === 'string' ? { title: source } : {}),
215
+ items: domain.map((name) => ({ name, symbol: shapeOf(name) })),
216
+ ...(color ? { color } : {}),
217
+ filled
218
+ }
219
+ ];
220
+ }
221
+ }