@fundar/data-chart-telling 0.0.64 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (839) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/LICENSE +21 -0
  3. package/README.md +112 -553
  4. package/dist/configuration/config.svelte.d.ts +5 -5
  5. package/dist/configuration/config.svelte.js +142 -46
  6. package/dist/configuration/fonts.d.ts +6 -0
  7. package/dist/configuration/fonts.js +6 -0
  8. package/dist/configuration/themes/compact.d.ts +2 -2
  9. package/dist/configuration/themes/compact.js +1 -1
  10. package/dist/configuration/themes/dark.d.ts +2 -2
  11. package/dist/configuration/themes/dark.js +5 -4
  12. package/dist/configuration/themes/default.d.ts +8 -3
  13. package/dist/configuration/themes/default.js +8 -2
  14. package/dist/configuration/themes/editorial.d.ts +2 -2
  15. package/dist/configuration/themes/editorial.js +2 -2
  16. package/dist/configuration/themes/index.d.ts +545 -80
  17. package/dist/configuration/themes/index.js +6 -5
  18. package/dist/index.d.ts +35 -48
  19. package/dist/index.js +20 -35
  20. package/dist/layout/base/BasePlotLayout.svelte +325 -0
  21. package/dist/layout/base/BasePlotLayout.svelte.d.ts +111 -0
  22. package/dist/layout/composer/PlotComposer.svelte +94 -0
  23. package/dist/layout/composer/PlotComposer.svelte.d.ts +13 -0
  24. package/dist/layout/coordinates/CameraFit.svelte +4 -4
  25. package/dist/layout/coordinates/CoordinatesLayout.svelte +11 -3
  26. package/dist/layout/coordinates/CoordinatesLayout.svelte.d.ts +6 -2
  27. package/dist/layout/coordinates/camera.svelte.d.ts +1 -1
  28. package/dist/layout/coordinates/camera.svelte.js +6 -6
  29. package/dist/layout/coordinates/projections/argentina.js +3 -3
  30. package/dist/layout/coordinates/projections/fit.js +1 -1
  31. package/dist/layout/coordinates/resolveCameraTarget.d.ts +1 -1
  32. package/dist/layout/coordinates/resolveProjection.d.ts +1 -1
  33. package/dist/layout/coordinates/resolveProjection.js +2 -2
  34. package/dist/layout/coordinates/rotate.svelte.d.ts +3 -3
  35. package/dist/layout/coordinates/rotate.svelte.js +8 -8
  36. package/dist/layout/coordinates/zoom.svelte.d.ts +1 -1
  37. package/dist/layout/facet/FacetIndicator.svelte +23 -23
  38. package/dist/layout/facet/FacetLayout.svelte +435 -398
  39. package/dist/layout/facet/FacetLayout.svelte.d.ts +9 -3
  40. package/dist/layout/facet/axes.d.ts +16 -0
  41. package/dist/layout/facet/axes.js +25 -0
  42. package/dist/layout/facet/config.d.ts +32 -0
  43. package/dist/layout/facet/config.js +82 -0
  44. package/dist/layout/figure/Figure.svelte +177 -0
  45. package/dist/layout/figure/Figure.svelte.d.ts +14 -0
  46. package/dist/layout/figure/FigureChrome.svelte +341 -0
  47. package/dist/layout/figure/FigureChrome.svelte.d.ts +21 -0
  48. package/dist/layout/geometry/FrameClip.svelte +45 -0
  49. package/dist/layout/geometry/FrameClip.svelte.d.ts +8 -0
  50. package/dist/layout/geometry/FrameClipping.d.ts +24 -0
  51. package/dist/layout/geometry/FrameClipping.js +40 -0
  52. package/dist/layout/geometry/GeometryLayout.svelte +287 -224
  53. package/dist/layout/geometry/GeometryLayout.svelte.d.ts +10 -10
  54. package/dist/layout/grid/Grid.svelte +194 -0
  55. package/dist/layout/grid/Grid.svelte.d.ts +26 -0
  56. package/dist/layout/grid/GridAlignment.svelte.d.ts +31 -0
  57. package/dist/layout/grid/GridAlignment.svelte.js +56 -0
  58. package/dist/layout/grid/GridCell.svelte +141 -0
  59. package/dist/layout/grid/GridCell.svelte.d.ts +17 -0
  60. package/dist/layout/grid/GridCellsRegistry.svelte.d.ts +52 -0
  61. package/dist/layout/grid/GridCellsRegistry.svelte.js +70 -0
  62. package/dist/layout/grid/GridPlan.d.ts +49 -0
  63. package/dist/layout/grid/GridPlan.js +167 -0
  64. package/dist/layout/grid/Tags.d.ts +8 -0
  65. package/dist/layout/grid/Tags.js +39 -0
  66. package/dist/layout/hover/HoverScope.svelte +11 -0
  67. package/dist/layout/hover/HoverScope.svelte.d.ts +8 -0
  68. package/dist/layout/hover/HoverSettings.d.ts +34 -0
  69. package/dist/layout/hover/HoverSettings.js +52 -0
  70. package/dist/layout/hover/HoverState.svelte.d.ts +47 -0
  71. package/dist/layout/hover/HoverState.svelte.js +99 -0
  72. package/dist/layout/hover/PlotHover.svelte.d.ts +63 -0
  73. package/dist/layout/hover/PlotHover.svelte.js +133 -0
  74. package/dist/layout/interaction/PlotInteraction.svelte.d.ts +38 -0
  75. package/dist/layout/interaction/PlotInteraction.svelte.js +56 -0
  76. package/dist/layout/legend/AxisNumberFormat.d.ts +12 -0
  77. package/dist/layout/legend/AxisNumberFormat.js +25 -0
  78. package/dist/layout/legend/ContinuousSection.svelte +363 -351
  79. package/dist/layout/legend/DisabledStyle.d.ts +19 -0
  80. package/dist/layout/legend/DisabledStyle.js +57 -0
  81. package/dist/layout/legend/DiscreteBadgeItem.svelte +6 -3
  82. package/dist/layout/legend/DiscreteSection.svelte +32 -32
  83. package/dist/layout/legend/DiscreteSwatchItem.svelte +4 -1
  84. package/dist/layout/legend/DiscreteSymbolIcon.svelte +14 -9
  85. package/dist/layout/legend/LegendChannels.d.ts +21 -0
  86. package/dist/layout/legend/LegendChannels.js +221 -0
  87. package/dist/layout/legend/LegendLayout.svelte +49 -43
  88. package/dist/layout/legend/LegendState.svelte.d.ts +84 -0
  89. package/dist/layout/legend/LegendState.svelte.js +333 -0
  90. package/dist/layout/legend/LegendText.d.ts +12 -0
  91. package/dist/layout/legend/LegendText.js +22 -0
  92. package/dist/layout/legend/SizeSection.svelte +84 -0
  93. package/dist/layout/legend/SizeSection.svelte.d.ts +7 -0
  94. package/dist/layout/legend/SymbolSection.svelte +31 -0
  95. package/dist/layout/legend/SymbolSection.svelte.d.ts +8 -0
  96. package/dist/layout/margins/Box.d.ts +84 -0
  97. package/dist/layout/margins/Box.js +138 -0
  98. package/dist/layout/margins/Margins.d.ts +37 -0
  99. package/dist/layout/margins/Margins.js +71 -0
  100. package/dist/layout/margins/PlotMargins.svelte.d.ts +101 -0
  101. package/dist/layout/margins/PlotMargins.svelte.js +219 -0
  102. package/dist/layout/plot/Core.svelte +61 -0
  103. package/dist/layout/plot/Core.svelte.d.ts +41 -0
  104. package/dist/layout/plot/PanelRun.svelte +28 -0
  105. package/dist/{charts/heatmap/Chart.svelte.d.ts → layout/plot/PanelRun.svelte.d.ts} +11 -7
  106. package/dist/layout/plot/Plot.svelte +287 -0
  107. package/dist/layout/plot/Plot.svelte.d.ts +49 -0
  108. package/dist/layout/plot/PlotContext.d.ts +41 -0
  109. package/dist/layout/plot/PlotContext.js +46 -0
  110. package/dist/layout/plot/PublicPlotContext.d.ts +131 -0
  111. package/dist/layout/plot/PublicPlotContext.js +240 -0
  112. package/dist/layout/plot/Slice.d.ts +44 -0
  113. package/dist/layout/plot/Slice.js +100 -0
  114. package/dist/layout/plot/usePlot.d.ts +9 -0
  115. package/dist/layout/plot/usePlot.js +13 -0
  116. package/dist/layout/scales/EdgeTicks.d.ts +39 -0
  117. package/dist/layout/scales/EdgeTicks.js +82 -0
  118. package/dist/layout/scales/NiceTicks.d.ts +40 -0
  119. package/dist/layout/scales/NiceTicks.js +72 -0
  120. package/dist/layout/scales/ScalesLayout.svelte +275 -206
  121. package/dist/layout/scales/ScalesLayout.svelte.d.ts +7 -1
  122. package/dist/layout/scales/SveltePlotScale.d.ts +15 -0
  123. package/dist/layout/scales/SveltePlotScale.js +79 -0
  124. package/dist/layout/styles/StylesLayout.svelte +65 -65
  125. package/dist/layout/styles/TileLayer.svelte +78 -76
  126. package/dist/layout/styles/TileLayer.svelte.d.ts +1 -1
  127. package/dist/layout/styles/ValueLabels.d.ts +97 -0
  128. package/dist/layout/styles/ValueLabels.js +238 -0
  129. package/dist/layout/timeline/Timeline.svelte +83 -74
  130. package/dist/layout/timeline/Timeline.svelte.d.ts +2 -0
  131. package/dist/layout/timeline/TimelineFrame.svelte +86 -0
  132. package/dist/layout/timeline/TimelineFrame.svelte.d.ts +16 -0
  133. package/dist/layout/timeline/TimelineLayout.svelte +140 -169
  134. package/dist/layout/timeline/TimelineLayout.svelte.d.ts +7 -3
  135. package/dist/layout/timeline/TimelinePlayer.svelte +195 -0
  136. package/dist/layout/timeline/TimelinePlayer.svelte.d.ts +7 -0
  137. package/dist/layout/timeline/TimelineRule.svelte +51 -0
  138. package/dist/layout/timeline/TimelineRule.svelte.d.ts +7 -0
  139. package/dist/layout/timeline/TimelineState.svelte.d.ts +90 -0
  140. package/dist/layout/timeline/TimelineState.svelte.js +260 -0
  141. package/dist/layout/timeline/TimelineSteps.d.ts +24 -0
  142. package/dist/layout/timeline/TimelineSteps.js +48 -0
  143. package/dist/layout/timeline/TimelineTime.d.ts +18 -0
  144. package/dist/layout/timeline/TimelineTime.js +117 -0
  145. package/dist/layout/tooltip/Tooltip.svelte +85 -85
  146. package/dist/layout/tooltip/Tooltip.svelte.d.ts +45 -24
  147. package/dist/layout/tooltip/TooltipState.svelte.d.ts +67 -0
  148. package/dist/layout/tooltip/TooltipState.svelte.js +126 -0
  149. package/dist/markers/MarkerKinds.d.ts +173 -0
  150. package/dist/markers/MarkerKinds.js +51 -0
  151. package/dist/markers/area/AreaMarker.svelte +110 -0
  152. package/dist/markers/area/AreaMarker.svelte.d.ts +7 -0
  153. package/dist/markers/arrow/ArrowMarker.svelte +28 -0
  154. package/dist/markers/arrow/ArrowMarker.svelte.d.ts +7 -0
  155. package/dist/markers/{BarMarker.svelte → bar/BarMarker.svelte} +54 -52
  156. package/dist/markers/{BarMarker.svelte.d.ts → bar/BarMarker.svelte.d.ts} +1 -1
  157. package/dist/markers/bollinger/BollingerMarker.svelte +44 -0
  158. package/dist/markers/bollinger/BollingerMarker.svelte.d.ts +7 -0
  159. package/dist/markers/box/BoxMarker.svelte +143 -0
  160. package/dist/markers/box/BoxMarker.svelte.d.ts +7 -0
  161. package/dist/markers/brush/BrushMarker.svelte +32 -0
  162. package/dist/markers/brush/BrushMarker.svelte.d.ts +7 -0
  163. package/dist/markers/cell/CellMarker.svelte +27 -0
  164. package/dist/markers/{CellMarker.svelte.d.ts → cell/CellMarker.svelte.d.ts} +1 -1
  165. package/dist/markers/contour/ContourClipMarker.svelte +83 -0
  166. package/dist/markers/{ContourClipMarker.svelte.d.ts → contour/ContourClipMarker.svelte.d.ts} +1 -1
  167. package/dist/markers/contour/ContourMarker.svelte +28 -0
  168. package/dist/markers/{ContourMarker.svelte.d.ts → contour/ContourMarker.svelte.d.ts} +1 -1
  169. package/dist/markers/delaunay/DelaunayLinkMarker.svelte +26 -0
  170. package/dist/markers/delaunay/DelaunayLinkMarker.svelte.d.ts +7 -0
  171. package/dist/markers/delaunay/DelaunayMeshMarker.svelte +26 -0
  172. package/dist/markers/delaunay/DelaunayMeshMarker.svelte.d.ts +7 -0
  173. package/dist/markers/delta/Delta.d.ts +21 -0
  174. package/dist/markers/delta/Delta.js +60 -0
  175. package/dist/markers/delta/DeltaMarker.svelte +96 -0
  176. package/dist/markers/{DeltaMarker.svelte.d.ts → delta/DeltaMarker.svelte.d.ts} +2 -2
  177. package/dist/markers/density/DensityMarker.svelte +63 -0
  178. package/dist/markers/density/DensityMarker.svelte.d.ts +7 -0
  179. package/dist/markers/difference/DifferenceMarker.svelte +30 -0
  180. package/dist/markers/difference/DifferenceMarker.svelte.d.ts +7 -0
  181. package/dist/markers/dot/DotMarker.svelte +102 -0
  182. package/dist/markers/{DotMarker.svelte.d.ts → dot/DotMarker.svelte.d.ts} +5 -17
  183. package/dist/markers/geo/GeoFeaturesMarker.svelte +39 -0
  184. package/dist/markers/{GeoFeaturesMarker.svelte.d.ts → geo/GeoFeaturesMarker.svelte.d.ts} +1 -1
  185. package/dist/markers/geo/GeoHoverMarker.svelte +28 -0
  186. package/dist/markers/{GeoHoverMarker.svelte.d.ts → geo/GeoHoverMarker.svelte.d.ts} +2 -2
  187. package/dist/markers/geo/GraticuleMarker.svelte +18 -0
  188. package/dist/markers/{GraticuleMarker.svelte.d.ts → geo/GraticuleMarker.svelte.d.ts} +1 -1
  189. package/dist/markers/geo/SphereMarker.svelte +15 -0
  190. package/dist/markers/{SphereMarker.svelte.d.ts → geo/SphereMarker.svelte.d.ts} +1 -1
  191. package/dist/markers/hover/HoverMarker.svelte +252 -0
  192. package/dist/markers/{HoverMarker.svelte.d.ts → hover/HoverMarker.svelte.d.ts} +10 -10
  193. package/dist/markers/hull/HullMarker.svelte +25 -0
  194. package/dist/markers/hull/HullMarker.svelte.d.ts +7 -0
  195. package/dist/markers/image/ImageMarker.svelte +22 -0
  196. package/dist/markers/image/ImageMarker.svelte.d.ts +7 -0
  197. package/dist/markers/inset/InsetMarker.svelte +184 -150
  198. package/dist/markers/inset/InsetMarker.svelte.d.ts +4 -4
  199. package/dist/markers/inset/insetLayout.d.ts +1 -1
  200. package/dist/markers/inset/insetLayout.js +6 -2
  201. package/dist/markers/inset/insetProjection.d.ts +1 -1
  202. package/dist/markers/inset/insetProjection.js +3 -3
  203. package/dist/markers/line/LineMarker.svelte +30 -0
  204. package/dist/markers/{LineMarker.svelte.d.ts → line/LineMarker.svelte.d.ts} +1 -1
  205. package/dist/markers/link/LinkMarker.svelte +47 -0
  206. package/dist/markers/{LinkMarker.svelte.d.ts → link/LinkMarker.svelte.d.ts} +1 -1
  207. package/dist/markers/raster/RasterMarker.svelte +31 -0
  208. package/dist/markers/raster/RasterMarker.svelte.d.ts +7 -0
  209. package/dist/markers/rect/RectMarker.svelte +62 -0
  210. package/dist/markers/rect/RectMarker.svelte.d.ts +7 -0
  211. package/dist/markers/regression/RegressionMarker.svelte +60 -0
  212. package/dist/markers/regression/RegressionMarker.svelte.d.ts +7 -0
  213. package/dist/markers/rule/RuleMarker.svelte +47 -0
  214. package/dist/markers/{RuleMarker.svelte.d.ts → rule/RuleMarker.svelte.d.ts} +2 -5
  215. package/dist/markers/text/Declutter.d.ts +35 -0
  216. package/dist/markers/text/Declutter.js +157 -0
  217. package/dist/markers/text/TextMarker.svelte +244 -0
  218. package/dist/markers/{TextMarker.svelte.d.ts → text/TextMarker.svelte.d.ts} +5 -9
  219. package/dist/markers/tick/TickMarker.svelte +44 -0
  220. package/dist/markers/tick/TickMarker.svelte.d.ts +7 -0
  221. package/dist/markers/trail/TrailMarker.svelte +27 -0
  222. package/dist/markers/trail/TrailMarker.svelte.d.ts +7 -0
  223. package/dist/markers/utils/BandNudge.d.ts +22 -0
  224. package/dist/markers/utils/BandNudge.js +23 -0
  225. package/dist/markers/utils/MarkerChannels.d.ts +49 -0
  226. package/dist/markers/utils/MarkerChannels.js +97 -0
  227. package/dist/markers/vector/VectorMarker.svelte +29 -0
  228. package/dist/markers/{VectorMarker.svelte.d.ts → vector/VectorMarker.svelte.d.ts} +1 -1
  229. package/dist/markers/voronoi/VoronoiMarker.svelte +26 -0
  230. package/dist/markers/voronoi/VoronoiMarker.svelte.d.ts +7 -0
  231. package/dist/markers/voronoi/VoronoiMeshMarker.svelte +26 -0
  232. package/dist/markers/voronoi/VoronoiMeshMarker.svelte.d.ts +7 -0
  233. package/dist/markers/waffle/WaffleMarker.svelte +56 -0
  234. package/dist/markers/waffle/WaffleMarker.svelte.d.ts +7 -0
  235. package/dist/phases/Pipeline.d.ts +108 -0
  236. package/dist/phases/Pipeline.js +227 -0
  237. package/dist/phases/data/DataPhase.d.ts +19 -0
  238. package/dist/phases/data/DataPhase.js +85 -0
  239. package/dist/phases/data/PlotAxes.d.ts +75 -0
  240. package/dist/phases/data/PlotAxes.js +151 -0
  241. package/dist/phases/facet/FacetPanels.d.ts +54 -0
  242. package/dist/phases/facet/FacetPanels.js +95 -0
  243. package/dist/phases/facet/FacetPhase.d.ts +11 -0
  244. package/dist/phases/facet/FacetPhase.js +28 -0
  245. package/dist/phases/hover/HoverPhase.d.ts +36 -0
  246. package/dist/phases/hover/HoverPhase.js +109 -0
  247. package/dist/phases/mapping/MappingPhase.d.ts +17 -0
  248. package/dist/phases/mapping/MappingPhase.js +40 -0
  249. package/dist/phases/markers/MarkersPhase.d.ts +14 -0
  250. package/dist/phases/markers/MarkersPhase.js +27 -0
  251. package/dist/phases/scales/MarkerAxisValues.d.ts +12 -0
  252. package/dist/phases/scales/MarkerAxisValues.js +34 -0
  253. package/dist/phases/scales/ScalesPhase.d.ts +29 -0
  254. package/dist/phases/scales/ScalesPhase.js +153 -0
  255. package/dist/phases/sharedScales/SharedScalesPhase.d.ts +58 -0
  256. package/dist/phases/sharedScales/SharedScalesPhase.js +171 -0
  257. package/dist/phases/statistics/AuthorMarkers.d.ts +43 -0
  258. package/dist/phases/statistics/AuthorMarkers.js +69 -0
  259. package/dist/phases/statistics/MarkerGrouping.d.ts +48 -0
  260. package/dist/phases/statistics/MarkerGrouping.js +113 -0
  261. package/dist/phases/statistics/Statistics.d.ts +53 -0
  262. package/dist/phases/statistics/Statistics.js +156 -0
  263. package/dist/phases/statistics/StatisticsPhase.d.ts +18 -0
  264. package/dist/phases/statistics/StatisticsPhase.js +67 -0
  265. package/dist/phases/statistics/methods/BollingerStatistic.d.ts +9 -0
  266. package/dist/phases/statistics/methods/BollingerStatistic.js +18 -0
  267. package/dist/phases/statistics/methods/BoxStatistic.d.ts +9 -0
  268. package/dist/phases/statistics/methods/BoxStatistic.js +18 -0
  269. package/dist/phases/statistics/methods/Density2dStatistic.d.ts +9 -0
  270. package/dist/phases/statistics/methods/Density2dStatistic.js +18 -0
  271. package/dist/phases/statistics/methods/DensityStatistic.d.ts +12 -0
  272. package/dist/phases/statistics/methods/DensityStatistic.js +29 -0
  273. package/dist/phases/statistics/methods/MovingAverageStatistic.d.ts +12 -0
  274. package/dist/phases/statistics/methods/MovingAverageStatistic.js +30 -0
  275. package/dist/phases/statistics/methods/RegressionStatistic.d.ts +9 -0
  276. package/dist/phases/statistics/methods/RegressionStatistic.js +21 -0
  277. package/dist/phases/styles/StylesPhase.d.ts +13 -0
  278. package/dist/phases/styles/StylesPhase.js +17 -0
  279. package/dist/phases/tooltip/TooltipPhase.d.ts +14 -0
  280. package/dist/phases/tooltip/TooltipPhase.js +17 -0
  281. package/dist/phases/transforms/ProcessedPositions.d.ts +30 -0
  282. package/dist/phases/transforms/ProcessedPositions.js +74 -0
  283. package/dist/phases/transforms/Transforms.d.ts +42 -0
  284. package/dist/phases/transforms/Transforms.js +130 -0
  285. package/dist/phases/transforms/TransformsPhase.d.ts +27 -0
  286. package/dist/phases/transforms/TransformsPhase.js +205 -0
  287. package/dist/phases/transforms/methods/AnchorBar.d.ts +13 -0
  288. package/dist/phases/transforms/methods/AnchorBar.js +21 -0
  289. package/dist/phases/transforms/methods/BinTransform.d.ts +7 -0
  290. package/dist/phases/transforms/methods/BinTransform.js +48 -0
  291. package/dist/phases/transforms/methods/DensityTransform.d.ts +6 -0
  292. package/dist/phases/transforms/methods/DensityTransform.js +13 -0
  293. package/dist/phases/transforms/methods/GroupTransform.d.ts +8 -0
  294. package/dist/phases/transforms/methods/GroupTransform.js +39 -0
  295. package/dist/phases/transforms/methods/NormalizeTransform.d.ts +10 -0
  296. package/dist/phases/transforms/methods/NormalizeTransform.js +30 -0
  297. package/dist/phases/transforms/methods/OrderTransform.d.ts +16 -0
  298. package/dist/phases/transforms/methods/OrderTransform.js +43 -0
  299. package/dist/phases/transforms/methods/PerGroup.d.ts +11 -0
  300. package/dist/phases/transforms/methods/PerGroup.js +39 -0
  301. package/dist/phases/transforms/methods/PositionTransform.d.ts +15 -0
  302. package/dist/phases/transforms/methods/PositionTransform.js +74 -0
  303. package/dist/phases/transforms/methods/StackTransform.d.ts +8 -0
  304. package/dist/phases/transforms/methods/StackTransform.js +29 -0
  305. package/dist/phases/transforms/methods/WindowTransform.d.ts +8 -0
  306. package/dist/phases/transforms/methods/WindowTransform.js +23 -0
  307. package/dist/plots/area/Plot.svelte +42 -0
  308. package/dist/plots/{heatmap/ValueLabels.svelte.d.ts → area/Plot.svelte.d.ts} +8 -16
  309. package/dist/plots/area/defaults.d.ts +4 -0
  310. package/dist/plots/area/defaults.js +21 -0
  311. package/dist/plots/area/markers.d.ts +14 -0
  312. package/dist/plots/area/markers.js +39 -0
  313. package/dist/plots/bar/Plot.svelte +33 -438
  314. package/dist/plots/bar/Plot.svelte.d.ts +5 -8
  315. package/dist/plots/bar/defaults.d.ts +9 -0
  316. package/dist/plots/bar/defaults.js +88 -0
  317. package/dist/plots/bar/markers.d.ts +45 -0
  318. package/dist/plots/bar/markers.js +233 -0
  319. package/dist/plots/box/BoxSummaries.d.ts +19 -0
  320. package/dist/plots/box/BoxSummaries.js +101 -0
  321. package/dist/plots/box/Plot.svelte +42 -0
  322. package/dist/plots/box/Plot.svelte.d.ts +26 -0
  323. package/dist/plots/box/defaults.d.ts +12 -0
  324. package/dist/plots/box/defaults.js +34 -0
  325. package/dist/plots/box/markers.d.ts +12 -0
  326. package/dist/plots/box/markers.js +34 -0
  327. package/dist/plots/geo/Core.svelte +151 -0
  328. package/dist/plots/geo/Core.svelte.d.ts +25 -0
  329. package/dist/plots/geo/Plot.svelte +103 -324
  330. package/dist/plots/geo/Plot.svelte.d.ts +5 -9
  331. package/dist/plots/geo/defaults.d.ts +4 -0
  332. package/dist/plots/geo/defaults.js +16 -0
  333. package/dist/plots/geo/features.svelte.d.ts +5 -0
  334. package/dist/plots/geo/features.svelte.js +44 -0
  335. package/dist/plots/geo/phases/data.d.ts +6 -0
  336. package/dist/plots/geo/phases/data.js +26 -0
  337. package/dist/plots/geo/phases/hover.d.ts +9 -0
  338. package/dist/plots/geo/phases/hover.js +45 -0
  339. package/dist/plots/geo/phases/markers.d.ts +9 -0
  340. package/dist/plots/geo/phases/markers.js +75 -0
  341. package/dist/plots/geo/phases/scales.d.ts +10 -0
  342. package/dist/plots/geo/phases/scales.js +85 -0
  343. package/dist/plots/geo/phases/tooltip.d.ts +3 -0
  344. package/dist/plots/geo/phases/tooltip.js +5 -0
  345. package/dist/plots/geo/slices.d.ts +18 -0
  346. package/dist/plots/geo/slices.js +59 -0
  347. package/dist/plots/heatmap/Plot.svelte +55 -249
  348. package/dist/plots/heatmap/Plot.svelte.d.ts +5 -8
  349. package/dist/plots/heatmap/defaults.d.ts +11 -0
  350. package/dist/plots/heatmap/defaults.js +91 -0
  351. package/dist/plots/heatmap/markers.d.ts +17 -0
  352. package/dist/plots/heatmap/markers.js +142 -0
  353. package/dist/plots/histogram/Plot.svelte +45 -0
  354. package/dist/plots/histogram/Plot.svelte.d.ts +26 -0
  355. package/dist/plots/histogram/defaults.d.ts +9 -0
  356. package/dist/plots/histogram/defaults.js +87 -0
  357. package/dist/plots/histogram/markers.d.ts +18 -0
  358. package/dist/plots/histogram/markers.js +89 -0
  359. package/dist/plots/line/Plot.svelte +37 -268
  360. package/dist/plots/line/Plot.svelte.d.ts +3 -7
  361. package/dist/plots/line/defaults.d.ts +4 -0
  362. package/dist/plots/line/defaults.js +29 -0
  363. package/dist/plots/line/markers.d.ts +49 -0
  364. package/dist/plots/line/markers.js +199 -0
  365. package/dist/plots/pyramid/Plot.svelte +34 -362
  366. package/dist/plots/pyramid/Plot.svelte.d.ts +5 -8
  367. package/dist/plots/pyramid/defaults.d.ts +13 -0
  368. package/dist/plots/pyramid/defaults.js +87 -0
  369. package/dist/plots/pyramid/markers.d.ts +21 -0
  370. package/dist/plots/pyramid/markers.js +156 -0
  371. package/dist/plots/scatter/Plot.svelte +34 -288
  372. package/dist/plots/scatter/Plot.svelte.d.ts +5 -8
  373. package/dist/plots/scatter/defaults.d.ts +4 -0
  374. package/dist/plots/scatter/defaults.js +80 -0
  375. package/dist/plots/scatter/markers.d.ts +19 -0
  376. package/dist/plots/scatter/markers.js +129 -0
  377. package/dist/plots/utils/ChannelName.d.ts +9 -0
  378. package/dist/plots/utils/ChannelName.js +14 -0
  379. package/dist/plots/utils/accessors.d.ts +1 -1
  380. package/dist/plots/utils/accessors.js +4 -2
  381. package/dist/plots/utils/gaps.d.ts +14 -19
  382. package/dist/plots/utils/gaps.js +38 -18
  383. package/dist/plots/utils/geoAccessors.d.ts +8 -8
  384. package/dist/plots/utils/geoAccessors.js +16 -12
  385. package/dist/plots/utils/geoSegments.d.ts +24 -9
  386. package/dist/plots/utils/geoSegments.js +31 -11
  387. package/dist/plots/utils/segments.d.ts +5 -16
  388. package/dist/plots/utils/segments.js +40 -52
  389. package/dist/plots/utils/tiles.d.ts +9 -9
  390. package/dist/plots/utils/tiles.js +35 -25
  391. package/dist/plots/utils/topojson.d.ts +1 -1
  392. package/dist/plots/utils/topojson.js +3 -3
  393. package/dist/stores/device.js +2 -4
  394. package/dist/types/configuration/styling.d.ts +174 -27
  395. package/dist/types/layout/box.d.ts +24 -0
  396. package/dist/types/layout/composer.d.ts +39 -0
  397. package/dist/types/layout/coordinates.d.ts +14 -14
  398. package/dist/types/layout/facet.d.ts +44 -22
  399. package/dist/types/layout/figure.d.ts +7 -0
  400. package/dist/types/layout/geometry.d.ts +6 -2
  401. package/dist/types/layout/grid.d.ts +66 -0
  402. package/dist/types/layout/hover.d.ts +48 -0
  403. package/dist/types/layout/legend.d.ts +256 -55
  404. package/dist/types/layout/mapping.d.ts +68 -0
  405. package/dist/types/layout/plot.d.ts +41 -0
  406. package/dist/types/layout/scales.d.ts +108 -24
  407. package/dist/types/layout/scales.js +19 -1
  408. package/dist/types/layout/statistics/bollinger.d.ts +18 -0
  409. package/dist/types/layout/statistics/box.d.ts +8 -0
  410. package/dist/types/layout/statistics/box.js +1 -0
  411. package/dist/types/layout/statistics/density.d.ts +27 -0
  412. package/dist/types/layout/statistics/density.js +1 -0
  413. package/dist/types/layout/statistics/index.d.ts +46 -0
  414. package/dist/types/layout/statistics/index.js +1 -0
  415. package/dist/types/layout/statistics/movingAverage.d.ts +12 -0
  416. package/dist/types/layout/statistics/movingAverage.js +1 -0
  417. package/dist/types/layout/statistics/regression.d.ts +20 -0
  418. package/dist/types/layout/statistics/regression.js +1 -0
  419. package/dist/types/layout/styles.d.ts +24 -35
  420. package/dist/types/layout/timeline.d.ts +62 -6
  421. package/dist/types/layout/tooltip.d.ts +7 -85
  422. package/dist/types/markers/all.d.ts +3 -4
  423. package/dist/types/markers/axis/area.d.ts +12 -0
  424. package/dist/types/markers/axis/area.js +1 -0
  425. package/dist/types/markers/axis/arrow.d.ts +15 -0
  426. package/dist/types/markers/axis/arrow.js +1 -0
  427. package/dist/types/markers/axis/axisBasedMarkersConfig.d.ts +29 -0
  428. package/dist/types/markers/axis/axisBasedMarkersConfig.js +1 -0
  429. package/dist/types/markers/axis/bar.d.ts +18 -0
  430. package/dist/types/markers/axis/bar.js +1 -0
  431. package/dist/types/markers/axis/bollinger.d.ts +6 -0
  432. package/dist/types/markers/axis/bollinger.js +1 -0
  433. package/dist/types/markers/axis/box.d.ts +14 -0
  434. package/dist/types/markers/axis/box.js +1 -0
  435. package/dist/types/markers/axis/brush.d.ts +28 -0
  436. package/dist/types/markers/axis/brush.js +1 -0
  437. package/dist/types/markers/axis/cell.d.ts +9 -0
  438. package/dist/types/markers/axis/cell.js +1 -0
  439. package/dist/types/markers/axis/component.d.ts +9 -0
  440. package/dist/types/markers/axis/component.js +1 -0
  441. package/dist/types/markers/axis/curveName.d.ts +2 -0
  442. package/dist/types/markers/axis/curveName.js +1 -0
  443. package/dist/types/markers/axis/delaunayLink.d.ts +7 -0
  444. package/dist/types/markers/axis/delaunayLink.js +1 -0
  445. package/dist/types/markers/axis/delaunayMesh.d.ts +7 -0
  446. package/dist/types/markers/axis/delaunayMesh.js +1 -0
  447. package/dist/types/markers/axis/delta.d.ts +27 -0
  448. package/dist/types/markers/axis/delta.js +1 -0
  449. package/dist/types/markers/axis/density.d.ts +12 -0
  450. package/dist/types/markers/axis/density.js +1 -0
  451. package/dist/types/markers/axis/difference.d.ts +12 -0
  452. package/dist/types/markers/axis/difference.js +1 -0
  453. package/dist/types/markers/axis/hover.d.ts +21 -0
  454. package/dist/types/markers/axis/hover.js +1 -0
  455. package/dist/types/markers/axis/hull.d.ts +7 -0
  456. package/dist/types/markers/axis/hull.js +1 -0
  457. package/dist/types/markers/axis/image.d.ts +12 -0
  458. package/dist/types/markers/axis/image.js +1 -0
  459. package/dist/types/markers/axis/line.d.ts +7 -0
  460. package/dist/types/markers/axis/line.js +1 -0
  461. package/dist/types/markers/axis/raster.d.ts +18 -0
  462. package/dist/types/markers/axis/raster.js +1 -0
  463. package/dist/types/markers/axis/rect.d.ts +15 -0
  464. package/dist/types/markers/axis/rect.js +1 -0
  465. package/dist/types/markers/axis/regression.d.ts +6 -0
  466. package/dist/types/markers/axis/regression.js +1 -0
  467. package/dist/types/markers/axis/rule.d.ts +15 -0
  468. package/dist/types/markers/axis/rule.js +1 -0
  469. package/dist/types/markers/axis/tick.d.ts +8 -0
  470. package/dist/types/markers/axis/tick.js +1 -0
  471. package/dist/types/markers/axis/trail.d.ts +14 -0
  472. package/dist/types/markers/axis/trail.js +1 -0
  473. package/dist/types/markers/axis/voronoi.d.ts +7 -0
  474. package/dist/types/markers/axis/voronoi.js +1 -0
  475. package/dist/types/markers/axis/voronoiMesh.d.ts +7 -0
  476. package/dist/types/markers/axis/voronoiMesh.js +1 -0
  477. package/dist/types/markers/axis/waffle.d.ts +13 -0
  478. package/dist/types/markers/axis/waffle.js +1 -0
  479. package/dist/types/markers/basic/basicMarkersConfig.d.ts +4 -0
  480. package/dist/types/markers/basic/basicMarkersConfig.js +1 -0
  481. package/dist/types/markers/basic/dot.d.ts +9 -0
  482. package/dist/types/markers/basic/dot.js +1 -0
  483. package/dist/types/markers/basic/text.d.ts +60 -0
  484. package/dist/types/markers/basic/text.js +1 -0
  485. package/dist/types/markers/basic.d.ts +4 -0
  486. package/dist/types/markers/basic.js +1 -0
  487. package/dist/types/markers/channels/commonMarkerConfig.d.ts +26 -0
  488. package/dist/types/markers/channels/commonMarkerConfig.js +1 -0
  489. package/dist/types/markers/channels/commonMarkerConfigWithArea.d.ts +6 -0
  490. package/dist/types/markers/channels/commonMarkerConfigWithArea.js +1 -0
  491. package/dist/types/markers/channels/commonMarkerConfigWithColor.d.ts +5 -0
  492. package/dist/types/markers/channels/commonMarkerConfigWithColor.js +1 -0
  493. package/dist/types/markers/channels/commonMarkerConfigWithInterval.d.ts +9 -0
  494. package/dist/types/markers/channels/commonMarkerConfigWithInterval.js +1 -0
  495. package/dist/types/markers/channels/commonMarkerConfigWithRadius.d.ts +5 -0
  496. package/dist/types/markers/channels/commonMarkerConfigWithRadius.js +1 -0
  497. package/dist/types/markers/channels/commonMarkerConfigWithSymbol.d.ts +5 -0
  498. package/dist/types/markers/channels/commonMarkerConfigWithSymbol.js +1 -0
  499. package/dist/types/markers/channels/commonMarkerConfigWithWeight.d.ts +5 -0
  500. package/dist/types/markers/channels/commonMarkerConfigWithWeight.js +1 -0
  501. package/dist/types/markers/common.d.ts +30 -103
  502. package/dist/types/markers/common.js +29 -1
  503. package/dist/types/markers/geo/contour.d.ts +27 -0
  504. package/dist/types/markers/geo/contour.js +1 -0
  505. package/dist/types/markers/geo/features.d.ts +12 -0
  506. package/dist/types/markers/geo/features.js +1 -0
  507. package/dist/types/markers/geo/geoComponent.d.ts +7 -0
  508. package/dist/types/markers/geo/geoComponent.js +1 -0
  509. package/dist/types/markers/geo/geoHover.d.ts +6 -0
  510. package/dist/types/markers/geo/geoHover.js +1 -0
  511. package/dist/types/markers/geo/geoMarkersConfig.d.ts +11 -0
  512. package/dist/types/markers/geo/geoMarkersConfig.js +1 -0
  513. package/dist/types/markers/geo/graticule.d.ts +11 -0
  514. package/dist/types/markers/geo/graticule.js +1 -0
  515. package/dist/types/markers/geo/inset.d.ts +50 -0
  516. package/dist/types/markers/geo/inset.js +1 -0
  517. package/dist/types/markers/geo/link.d.ts +13 -0
  518. package/dist/types/markers/geo/link.js +1 -0
  519. package/dist/types/markers/geo/sphere.d.ts +11 -0
  520. package/dist/types/markers/geo/sphere.js +1 -0
  521. package/dist/types/markers/geo/vector.d.ts +17 -0
  522. package/dist/types/markers/geo/vector.js +1 -0
  523. package/dist/types/markers/geo.d.ts +10 -212
  524. package/dist/types/markers/geo.js +10 -1
  525. package/dist/types/markers/traits.d.ts +22 -0
  526. package/dist/types/markers/traits.js +1 -0
  527. package/dist/types/misc/easing.js +1 -0
  528. package/dist/types/misc/viewport.js +1 -0
  529. package/dist/types/phases/data/axes.d.ts +18 -0
  530. package/dist/types/phases/data/axes.js +1 -0
  531. package/dist/types/phases/data/phase.d.ts +26 -0
  532. package/dist/types/phases/data/phase.js +2 -0
  533. package/dist/types/phases/facet/phase.d.ts +18 -0
  534. package/dist/types/phases/facet/phase.js +1 -0
  535. package/dist/types/phases/hover/phase.d.ts +40 -0
  536. package/dist/types/phases/hover/phase.js +1 -0
  537. package/dist/types/phases/index.d.ts +14 -0
  538. package/dist/types/phases/index.js +1 -0
  539. package/dist/types/phases/kind.d.ts +59 -0
  540. package/dist/types/phases/kind.js +1 -0
  541. package/dist/types/phases/mapping/phase.d.ts +5 -0
  542. package/dist/types/phases/mapping/phase.js +1 -0
  543. package/dist/types/phases/markers/phase.d.ts +13 -0
  544. package/dist/types/phases/markers/phase.js +1 -0
  545. package/dist/types/phases/pipeline.d.ts +10 -0
  546. package/dist/types/phases/pipeline.js +1 -0
  547. package/dist/types/phases/scales/phase.d.ts +26 -0
  548. package/dist/types/phases/scales/phase.js +1 -0
  549. package/dist/types/phases/sharedScales/phase.d.ts +12 -0
  550. package/dist/types/phases/sharedScales/phase.js +1 -0
  551. package/dist/types/phases/stage.d.ts +12 -0
  552. package/dist/types/phases/stage.js +1 -0
  553. package/dist/types/phases/state.d.ts +76 -0
  554. package/dist/types/phases/state.js +1 -0
  555. package/dist/types/phases/statistics/phase.d.ts +43 -0
  556. package/dist/types/phases/statistics/phase.js +1 -0
  557. package/dist/types/phases/statistics/source.d.ts +20 -0
  558. package/dist/types/phases/statistics/source.js +7 -0
  559. package/dist/types/phases/styles/phase.d.ts +24 -0
  560. package/dist/types/phases/styles/phase.js +1 -0
  561. package/dist/types/phases/transforms/adapter.d.ts +27 -0
  562. package/dist/types/phases/transforms/adapter.js +1 -0
  563. package/dist/types/phases/transforms/phase.d.ts +50 -0
  564. package/dist/types/phases/transforms/phase.js +1 -0
  565. package/dist/types/plots/area/props.d.ts +10 -0
  566. package/dist/types/plots/area/props.js +1 -0
  567. package/dist/types/plots/area/state.d.ts +6 -0
  568. package/dist/types/plots/area/state.js +1 -0
  569. package/dist/types/plots/bar/props.d.ts +10 -0
  570. package/dist/types/plots/bar/props.js +1 -0
  571. package/dist/types/plots/bar/state.d.ts +6 -0
  572. package/dist/types/plots/bar/state.js +1 -0
  573. package/dist/types/plots/box/props.d.ts +10 -0
  574. package/dist/types/plots/box/props.js +1 -0
  575. package/dist/types/plots/box/state.d.ts +23 -0
  576. package/dist/types/plots/box/state.js +1 -0
  577. package/dist/types/plots/camera.d.ts +7 -17
  578. package/dist/types/plots/constants.d.ts +16 -8
  579. package/dist/types/plots/data/common.d.ts +25 -17
  580. package/dist/types/plots/data/geo.d.ts +26 -12
  581. package/dist/types/plots/gaps.d.ts +19 -38
  582. package/dist/types/plots/geo/props.d.ts +23 -0
  583. package/dist/types/plots/geo/props.js +1 -0
  584. package/dist/types/plots/geo/state.d.ts +82 -0
  585. package/dist/types/plots/geo/state.js +1 -0
  586. package/dist/types/plots/heatmap/props.d.ts +10 -0
  587. package/dist/types/plots/heatmap/props.js +1 -0
  588. package/dist/types/plots/heatmap/state.d.ts +28 -0
  589. package/dist/types/plots/heatmap/state.js +1 -0
  590. package/dist/types/plots/histogram/props.d.ts +18 -0
  591. package/dist/types/plots/histogram/props.js +1 -0
  592. package/dist/types/plots/histogram/state.d.ts +6 -0
  593. package/dist/types/plots/histogram/state.js +1 -0
  594. package/dist/types/plots/line/props.d.ts +10 -0
  595. package/dist/types/plots/line/props.js +1 -0
  596. package/dist/types/plots/line/state.d.ts +9 -0
  597. package/dist/types/plots/line/state.js +1 -0
  598. package/dist/types/plots/props.d.ts +145 -35
  599. package/dist/types/plots/pyramid/props.d.ts +10 -0
  600. package/dist/types/plots/pyramid/props.js +1 -0
  601. package/dist/types/plots/pyramid/state.d.ts +16 -0
  602. package/dist/types/plots/pyramid/state.js +1 -0
  603. package/dist/types/plots/scatter/props.d.ts +10 -0
  604. package/dist/types/plots/scatter/props.js +1 -0
  605. package/dist/types/plots/scatter/state.d.ts +6 -0
  606. package/dist/types/plots/scatter/state.js +1 -0
  607. package/dist/types/plots/segments/common.d.ts +1 -1
  608. package/dist/types/plots/segments/config.d.ts +12 -6
  609. package/dist/types/plots/styling.d.ts +5 -5
  610. package/dist/types/transforms/bin.d.ts +84 -0
  611. package/dist/types/transforms/bin.js +28 -0
  612. package/dist/types/transforms/bollinger.d.ts +21 -0
  613. package/dist/types/transforms/bollinger.js +1 -0
  614. package/dist/types/transforms/common.d.ts +29 -0
  615. package/dist/types/transforms/common.js +16 -0
  616. package/dist/types/transforms/density.d.ts +45 -0
  617. package/dist/types/transforms/density.js +10 -0
  618. package/dist/types/transforms/filter.d.ts +12 -0
  619. package/dist/types/transforms/filter.js +14 -0
  620. package/dist/types/transforms/group.d.ts +70 -0
  621. package/dist/types/transforms/group.js +8 -0
  622. package/dist/types/transforms/index.d.ts +36 -0
  623. package/dist/types/transforms/index.js +1 -0
  624. package/dist/types/transforms/interval.d.ts +21 -0
  625. package/dist/types/transforms/interval.js +14 -0
  626. package/dist/types/transforms/jitter.d.ts +34 -0
  627. package/dist/types/transforms/jitter.js +1 -0
  628. package/dist/types/transforms/map.d.ts +24 -0
  629. package/dist/types/transforms/map.js +1 -0
  630. package/dist/types/transforms/normalize.d.ts +36 -0
  631. package/dist/types/transforms/normalize.js +1 -0
  632. package/dist/types/transforms/select.d.ts +15 -0
  633. package/dist/types/transforms/select.js +1 -0
  634. package/dist/types/transforms/shift.d.ts +20 -0
  635. package/dist/types/transforms/shift.js +1 -0
  636. package/dist/types/transforms/sort.d.ts +31 -0
  637. package/dist/types/transforms/sort.js +14 -0
  638. package/dist/types/transforms/stack.d.ts +64 -0
  639. package/dist/types/transforms/stack.js +12 -0
  640. package/dist/types/transforms/window.d.ts +29 -0
  641. package/dist/types/transforms/window.js +1 -0
  642. package/dist/utils/ContinuousDomain.d.ts +12 -0
  643. package/dist/utils/ContinuousDomain.js +19 -0
  644. package/dist/utils/Interpolation.d.ts +26 -0
  645. package/dist/utils/Interpolation.js +65 -0
  646. package/dist/utils/{color.d.ts → color/contrast.d.ts} +0 -5
  647. package/dist/utils/color/contrast.js +40 -0
  648. package/dist/utils/color/cssColor.d.ts +4 -0
  649. package/dist/utils/color/cssColor.js +77 -0
  650. package/dist/utils/color/index.d.ts +3 -0
  651. package/dist/utils/color/index.js +3 -0
  652. package/dist/utils/color/ramp.d.ts +17 -0
  653. package/dist/utils/color/ramp.js +110 -0
  654. package/dist/utils/grouping.d.ts +9 -5
  655. package/dist/utils/grouping.js +19 -10
  656. package/dist/utils/merge.d.ts +7 -0
  657. package/dist/utils/merge.js +17 -0
  658. package/dist/utils/opacity.d.ts +9 -0
  659. package/dist/utils/opacity.js +38 -0
  660. package/dist/utils/symbol.d.ts +31 -0
  661. package/dist/utils/symbol.js +92 -0
  662. package/docs/architecture.md +137 -0
  663. package/docs/chrome.md +99 -0
  664. package/docs/composer.md +69 -0
  665. package/docs/concepts.md +99 -0
  666. package/docs/development.md +103 -0
  667. package/docs/facets.md +123 -0
  668. package/docs/geo.md +151 -0
  669. package/docs/getting-started.md +78 -0
  670. package/docs/legend.md +153 -0
  671. package/docs/markers.md +117 -0
  672. package/docs/plots.md +284 -0
  673. package/docs/scales.md +95 -0
  674. package/docs/state.md +71 -0
  675. package/docs/styles-and-segments.md +269 -0
  676. package/docs/theming.md +226 -0
  677. package/docs/timeline.md +128 -0
  678. package/docs/tooltip-and-hover.md +128 -0
  679. package/docs/transforms-and-statistics.md +118 -0
  680. package/examples/BarValues.svelte +14 -0
  681. package/examples/Box.svelte +7 -0
  682. package/examples/Chrome.svelte +17 -0
  683. package/examples/ChromeOrder.svelte +18 -0
  684. package/examples/Composer.svelte +23 -0
  685. package/examples/CustomTooltip.svelte +44 -0
  686. package/examples/Facets.svelte +15 -0
  687. package/examples/FacetsCarousel.svelte +14 -0
  688. package/examples/FacetsRowsCols.svelte +23 -0
  689. package/examples/FirstPlot.svelte +7 -0
  690. package/examples/Gaps.svelte +21 -0
  691. package/examples/GroupedBars.svelte +15 -0
  692. package/examples/Heatmap.svelte +7 -0
  693. package/examples/HeatmapSegments.svelte +26 -0
  694. package/examples/Histogram.svelte +14 -0
  695. package/examples/HorizontalBars.svelte +15 -0
  696. package/examples/LegendReader.svelte +8 -0
  697. package/examples/LegendSections.svelte +27 -0
  698. package/examples/LegendToggle.svelte +25 -0
  699. package/examples/LineByRegion.svelte +18 -0
  700. package/examples/LineDates.svelte +15 -0
  701. package/examples/Markers.svelte +27 -0
  702. package/examples/MovingAverage.svelte +15 -0
  703. package/examples/Pyramid.svelte +7 -0
  704. package/examples/Regression.svelte +14 -0
  705. package/examples/ResponsiveLine.svelte +37 -0
  706. package/examples/Scales.svelte +26 -0
  707. package/examples/Scatter.svelte +16 -0
  708. package/examples/SegmentHighlight.svelte +22 -0
  709. package/examples/Segments.svelte +25 -0
  710. package/examples/SegmentsBySeries.svelte +25 -0
  711. package/examples/StackedArea.svelte +16 -0
  712. package/examples/StackedBars.svelte +15 -0
  713. package/examples/TimelinePlayer.svelte +21 -0
  714. package/examples/TimelineRule.svelte +19 -0
  715. package/examples/Tooltip.svelte +19 -0
  716. package/examples/TooltipCard.svelte +86 -0
  717. package/examples/ValueLabels.svelte +21 -0
  718. package/examples/data.ts +324 -0
  719. package/llms-full.txt +142 -0
  720. package/llms.txt +77 -0
  721. package/package.json +42 -5
  722. package/dist/charts/BaseChart.svelte +0 -149
  723. package/dist/charts/BaseChart.svelte.d.ts +0 -47
  724. package/dist/charts/bar/Chart.svelte +0 -110
  725. package/dist/charts/bar/Chart.svelte.d.ts +0 -26
  726. package/dist/charts/container/ChartContainer.svelte +0 -137
  727. package/dist/charts/container/ChartContainer.svelte.d.ts +0 -16
  728. package/dist/charts/heatmap/Chart.svelte +0 -114
  729. package/dist/charts/line/Chart.svelte +0 -112
  730. package/dist/charts/line/Chart.svelte.d.ts +0 -26
  731. package/dist/charts/pyramid/Chart.svelte +0 -134
  732. package/dist/charts/pyramid/Chart.svelte.d.ts +0 -30
  733. package/dist/charts/scatter/Chart.svelte +0 -95
  734. package/dist/charts/scatter/Chart.svelte.d.ts +0 -28
  735. package/dist/layout/coordinates/margins.d.ts +0 -16
  736. package/dist/layout/coordinates/margins.js +0 -11
  737. package/dist/layout/legend/interaction.svelte.d.ts +0 -15
  738. package/dist/layout/legend/interaction.svelte.js +0 -32
  739. package/dist/layout/plot/BasePlotLayout.svelte +0 -332
  740. package/dist/layout/plot/BasePlotLayout.svelte.d.ts +0 -122
  741. package/dist/layout/plot/margins.d.ts +0 -18
  742. package/dist/layout/plot/margins.js +0 -15
  743. package/dist/layout/plot/measureText.d.ts +0 -4
  744. package/dist/layout/plot/measureText.js +0 -19
  745. package/dist/layout/scales/buildScale.d.ts +0 -25
  746. package/dist/layout/scales/buildScale.js +0 -90
  747. package/dist/layout/scales/niceDomain.d.ts +0 -23
  748. package/dist/layout/scales/niceDomain.js +0 -59
  749. package/dist/layout/tooltip/TooltipLayout.svelte +0 -51
  750. package/dist/layout/tooltip/TooltipLayout.svelte.d.ts +0 -45
  751. package/dist/layout/tooltip/controller.svelte.d.ts +0 -61
  752. package/dist/layout/tooltip/controller.svelte.js +0 -173
  753. package/dist/layout/tooltip/hover.svelte.d.ts +0 -7
  754. package/dist/layout/tooltip/hover.svelte.js +0 -28
  755. package/dist/layout/tooltip/resolveTooltipPlacement.d.ts +0 -24
  756. package/dist/layout/tooltip/resolveTooltipPlacement.js +0 -49
  757. package/dist/layout/tooltip/utils.d.ts +0 -49
  758. package/dist/layout/tooltip/utils.js +0 -82
  759. package/dist/markers/CellMarker.svelte +0 -21
  760. package/dist/markers/ContourClipMarker.svelte +0 -77
  761. package/dist/markers/ContourMarker.svelte +0 -28
  762. package/dist/markers/DeltaMarker.svelte +0 -109
  763. package/dist/markers/DotMarker.svelte +0 -70
  764. package/dist/markers/GeoFeaturesMarker.svelte +0 -19
  765. package/dist/markers/GeoHoverMarker.svelte +0 -25
  766. package/dist/markers/GraticuleMarker.svelte +0 -18
  767. package/dist/markers/HoverMarker.svelte +0 -212
  768. package/dist/markers/LineMarker.svelte +0 -19
  769. package/dist/markers/LinkMarker.svelte +0 -42
  770. package/dist/markers/PeakMarker.svelte +0 -80
  771. package/dist/markers/PeakMarker.svelte.d.ts +0 -13
  772. package/dist/markers/RuleMarker.svelte +0 -24
  773. package/dist/markers/SphereMarker.svelte +0 -15
  774. package/dist/markers/TextMarker.svelte +0 -62
  775. package/dist/markers/VectorMarker.svelte +0 -20
  776. package/dist/plots/bar/ValueLabels.svelte +0 -149
  777. package/dist/plots/bar/ValueLabels.svelte.d.ts +0 -58
  778. package/dist/plots/bar/buildBarMarkers.d.ts +0 -27
  779. package/dist/plots/bar/buildBarMarkers.js +0 -151
  780. package/dist/plots/bar/hoverPoints.d.ts +0 -15
  781. package/dist/plots/bar/hoverPoints.js +0 -37
  782. package/dist/plots/bar/layout.svelte.d.ts +0 -42
  783. package/dist/plots/bar/layout.svelte.js +0 -182
  784. package/dist/plots/geo/buildGeoMarkers.d.ts +0 -33
  785. package/dist/plots/geo/buildGeoMarkers.js +0 -47
  786. package/dist/plots/heatmap/ValueLabels.svelte +0 -56
  787. package/dist/plots/heatmap/buildCellMarkers.d.ts +0 -21
  788. package/dist/plots/heatmap/buildCellMarkers.js +0 -25
  789. package/dist/plots/line/ValueLabels.svelte +0 -269
  790. package/dist/plots/line/ValueLabels.svelte.d.ts +0 -52
  791. package/dist/plots/line/buildGapMarkers.d.ts +0 -28
  792. package/dist/plots/line/buildGapMarkers.js +0 -74
  793. package/dist/plots/line/buildLineMarkers.d.ts +0 -16
  794. package/dist/plots/line/buildLineMarkers.js +0 -56
  795. package/dist/plots/line/valueLabelMargin.d.ts +0 -19
  796. package/dist/plots/line/valueLabelMargin.js +0 -65
  797. package/dist/plots/pyramid/ValueLabels.svelte +0 -139
  798. package/dist/plots/pyramid/ValueLabels.svelte.d.ts +0 -56
  799. package/dist/plots/pyramid/buildPyramidBarMarkers.d.ts +0 -26
  800. package/dist/plots/pyramid/buildPyramidBarMarkers.js +0 -72
  801. package/dist/plots/scatter/ValueLabels.svelte +0 -163
  802. package/dist/plots/scatter/ValueLabels.svelte.d.ts +0 -52
  803. package/dist/plots/scatter/buildScatterMarkers.d.ts +0 -12
  804. package/dist/plots/scatter/buildScatterMarkers.js +0 -36
  805. package/dist/plots/scatter/resolveRadiusPaddedDomain.d.ts +0 -10
  806. package/dist/plots/scatter/resolveRadiusPaddedDomain.js +0 -23
  807. package/dist/plots/utils/categoricalAxisMargin.d.ts +0 -14
  808. package/dist/plots/utils/categoricalAxisMargin.js +0 -20
  809. package/dist/plots/utils/declutter.d.ts +0 -120
  810. package/dist/plots/utils/declutter.js +0 -240
  811. package/dist/plots/utils/labelOverflow.svelte.d.ts +0 -107
  812. package/dist/plots/utils/labelOverflow.svelte.js +0 -257
  813. package/dist/plots/utils/legendDisabled.d.ts +0 -27
  814. package/dist/plots/utils/legendDisabled.js +0 -68
  815. package/dist/plots/utils/valueLabelMargin.d.ts +0 -67
  816. package/dist/plots/utils/valueLabelMargin.js +0 -60
  817. package/dist/types/charts/common.d.ts +0 -22
  818. package/dist/types/charts/props.d.ts +0 -50
  819. package/dist/types/markers/base.d.ts +0 -45
  820. package/dist/types/markers/line.d.ts +0 -34
  821. package/dist/types/markers/props.d.ts +0 -11
  822. package/dist/types/plots/data/scatter.d.ts +0 -13
  823. package/dist/utils/color.js +0 -141
  824. package/dist/utils/delta.d.ts +0 -12
  825. package/dist/utils/delta.js +0 -69
  826. package/dist/utils/edgeAwareAnchor.d.ts +0 -34
  827. package/dist/utils/edgeAwareAnchor.js +0 -60
  828. package/dist/utils/interpolate.d.ts +0 -31
  829. package/dist/utils/interpolate.js +0 -71
  830. /package/dist/types/{charts/common.js → layout/box.js} +0 -0
  831. /package/dist/types/{charts/interpolate.js → layout/composer.js} +0 -0
  832. /package/dist/types/{charts/props.js → layout/figure.js} +0 -0
  833. /package/dist/types/{markers/base.js → layout/grid.js} +0 -0
  834. /package/dist/types/{markers/line.js → layout/hover.js} +0 -0
  835. /package/dist/types/{markers/props.js → layout/mapping.js} +0 -0
  836. /package/dist/types/{plots/data/scatter.js → layout/plot.js} +0 -0
  837. /package/dist/types/{viewport.js → layout/statistics/bollinger.js} +0 -0
  838. /package/dist/types/{charts/interpolate.d.ts → misc/easing.d.ts} +0 -0
  839. /package/dist/types/{viewport.d.ts → misc/viewport.d.ts} +0 -0
@@ -0,0 +1,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
+ }