@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,195 @@
1
+ <script lang="ts">
2
+ import type { TimelineState } from './TimelineState.svelte';
3
+
4
+ /**
5
+ * A timeline drawn as a player bar: play and pause, the current step, a
6
+ * slider over the steps, and a speed and a loop button - each only when the
7
+ * timeline's `controls` list it, in that order. It draws the
8
+ * {@link TimelineState} it is handed and tells it what the reader does;
9
+ * every size and color comes from the `--dct-player-*` custom properties
10
+ * (the configuration's `timeline.player`).
11
+ */
12
+ let { timeline }: { timeline: TimelineState } = $props();
13
+
14
+ const last = $derived(Math.max(0, timeline.steps.length - 1));
15
+ const percent = $derived(timeline.progress * 100);
16
+
17
+ function onkeydown(event: KeyboardEvent) {
18
+ const target = event.target as HTMLElement;
19
+ if (event.key !== ' ' || target.closest('button')) return;
20
+ event.preventDefault();
21
+ timeline.toggle();
22
+ }
23
+ </script>
24
+
25
+ <!-- svelte-ignore a11y_no_noninteractive_element_interactions -->
26
+ <div class="dct-player" role="group" aria-label="Timeline" {onkeydown}>
27
+ {#each timeline.controls as control (control)}
28
+ {#if control === 'play'}
29
+ <button
30
+ type="button"
31
+ class="dct-player__play"
32
+ aria-label={timeline.playing ? 'Pause' : 'Play'}
33
+ onclick={() => timeline.toggle()}
34
+ >
35
+ <svg viewBox="0 0 16 16" width="55%" height="55%" aria-hidden="true">
36
+ {#if timeline.playing}
37
+ <path fill="currentColor" d="M4 2h3v12H4zM9 2h3v12H9z" />
38
+ {:else}
39
+ <path fill="currentColor" d="M4 2l10 6-10 6z" />
40
+ {/if}
41
+ </svg>
42
+ </button>
43
+ {:else if control === 'value'}
44
+ <span class="dct-player__value" aria-live="off">
45
+ {timeline.value === undefined ? '' : timeline.format(timeline.value)}
46
+ </span>
47
+ {:else if control === 'slider'}
48
+ <input
49
+ type="range"
50
+ class="dct-player__slider"
51
+ aria-label="Step"
52
+ min="0"
53
+ max={last}
54
+ step="1"
55
+ value={Math.max(0, timeline.index)}
56
+ style:--dct-player-progress="{percent}%"
57
+ oninput={(event) => timeline.seekIndex(Number(event.currentTarget.value))}
58
+ />
59
+ {:else if control === 'speed'}
60
+ <button
61
+ type="button"
62
+ class="dct-player__toggle"
63
+ aria-label="Speed"
64
+ onclick={() => timeline.cycleSpeed()}
65
+ >
66
+ ×{timeline.speed}
67
+ </button>
68
+ {:else if control === 'loop'}
69
+ <button
70
+ type="button"
71
+ class="dct-player__toggle"
72
+ class:dct-player__toggle--active={timeline.loop}
73
+ aria-label="Loop"
74
+ aria-pressed={timeline.loop}
75
+ onclick={() => timeline.setLoop(!timeline.loop)}
76
+ >
77
+ <svg viewBox="0 0 16 16" width="1.1em" height="1.1em" aria-hidden="true">
78
+ <path
79
+ fill="none"
80
+ stroke="currentColor"
81
+ stroke-width="1.6"
82
+ stroke-linecap="round"
83
+ stroke-linejoin="round"
84
+ d="M3 7V6a2 2 0 0 1 2-2h7M10 1.5 12.5 4 10 6.5M13 9v1a2 2 0 0 1-2 2H4M6 14.5 3.5 12 6 9.5"
85
+ />
86
+ </svg>
87
+ </button>
88
+ {/if}
89
+ {/each}
90
+ </div>
91
+
92
+ <style>
93
+ .dct-player {
94
+ display: flex;
95
+ align-items: center;
96
+ gap: var(--dct-player-gap, 1rem);
97
+ padding: var(--dct-player-pad, 0.5rem 1rem);
98
+ border-radius: var(--dct-player-radius, 0.5rem);
99
+ background: var(--dct-player-bg, transparent);
100
+ color: var(--dct-player-color, currentColor);
101
+ font-size: var(--dct-player-size, 0.875rem);
102
+ font-weight: var(--dct-player-weight, 500);
103
+ }
104
+
105
+ .dct-player__play {
106
+ flex: 0 0 auto;
107
+ display: inline-flex;
108
+ align-items: center;
109
+ justify-content: center;
110
+ width: var(--dct-player-button-size, 2rem);
111
+ height: var(--dct-player-button-size, 2rem);
112
+ padding: 0;
113
+ border: none;
114
+ border-radius: var(--dct-player-button-radius, 999px);
115
+ background: var(--dct-player-button-bg, #e6580d);
116
+ color: var(--dct-player-button-color, #fff);
117
+ cursor: pointer;
118
+ }
119
+ .dct-player__play:hover {
120
+ background: var(--dct-player-button-hover-bg, var(--dct-player-button-bg, #e6580d));
121
+ }
122
+
123
+ .dct-player__value {
124
+ flex: 0 0 auto;
125
+ min-width: var(--dct-player-value-width, 3rem);
126
+ font-variant-numeric: tabular-nums;
127
+ }
128
+
129
+ .dct-player__slider {
130
+ flex: 1 1 auto;
131
+ min-width: 0;
132
+ height: var(--dct-player-thumb-size, 14px);
133
+ margin: 0;
134
+ background: transparent;
135
+ appearance: none;
136
+ cursor: pointer;
137
+ }
138
+ .dct-player__slider::-webkit-slider-runnable-track {
139
+ height: var(--dct-player-track-height, 3px);
140
+ border-radius: var(--dct-player-track-radius, 999px);
141
+ background: linear-gradient(
142
+ to right,
143
+ var(--dct-player-track-fill, currentColor) var(--dct-player-progress, 0%),
144
+ var(--dct-player-track-color, currentColor) var(--dct-player-progress, 0%)
145
+ );
146
+ }
147
+ .dct-player__slider::-moz-range-track {
148
+ height: var(--dct-player-track-height, 3px);
149
+ border-radius: var(--dct-player-track-radius, 999px);
150
+ background: var(--dct-player-track-color, currentColor);
151
+ }
152
+ .dct-player__slider::-moz-range-progress {
153
+ height: var(--dct-player-track-height, 3px);
154
+ border-radius: var(--dct-player-track-radius, 999px);
155
+ background: var(--dct-player-track-fill, currentColor);
156
+ }
157
+ .dct-player__slider::-webkit-slider-thumb {
158
+ appearance: none;
159
+ width: var(--dct-player-thumb-size, 14px);
160
+ height: var(--dct-player-thumb-size, 14px);
161
+ margin-top: calc(
162
+ (var(--dct-player-track-height, 3px) - var(--dct-player-thumb-size, 14px)) / 2
163
+ );
164
+ border: none;
165
+ border-radius: 50%;
166
+ background: var(--dct-player-thumb-color, currentColor);
167
+ }
168
+ .dct-player__slider::-moz-range-thumb {
169
+ width: var(--dct-player-thumb-size, 14px);
170
+ height: var(--dct-player-thumb-size, 14px);
171
+ border: none;
172
+ border-radius: 50%;
173
+ background: var(--dct-player-thumb-color, currentColor);
174
+ }
175
+
176
+ .dct-player__toggle {
177
+ flex: 0 0 auto;
178
+ display: inline-flex;
179
+ align-items: center;
180
+ padding: var(--dct-player-toggle-pad, 0.125rem 0.5rem);
181
+ border: 1px solid color-mix(in srgb, currentColor 25%, transparent);
182
+ border-radius: var(--dct-player-toggle-radius, 0.375rem);
183
+ background: var(--dct-player-toggle-bg, transparent);
184
+ color: var(--dct-player-toggle-color, currentColor);
185
+ font: inherit;
186
+ font-size: var(--dct-player-toggle-size, 0.75rem);
187
+ font-variant-numeric: tabular-nums;
188
+ cursor: pointer;
189
+ }
190
+ .dct-player__toggle--active {
191
+ border-color: transparent;
192
+ background: var(--dct-player-toggle-active-bg, currentColor);
193
+ color: var(--dct-player-toggle-active-color, #fff);
194
+ }
195
+ </style>
@@ -0,0 +1,7 @@
1
+ import type { TimelineState } from './TimelineState.svelte';
2
+ type $$ComponentProps = {
3
+ timeline: TimelineState;
4
+ };
5
+ declare const TimelinePlayer: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type TimelinePlayer = ReturnType<typeof TimelinePlayer>;
7
+ export default TimelinePlayer;
@@ -0,0 +1,51 @@
1
+ <script lang="ts">
2
+ import Timeline from './Timeline.svelte';
3
+ import type { TimelineState } from './TimelineState.svelte';
4
+
5
+ /**
6
+ * A timeline drawn as a rule: a line with the steps written along it, the
7
+ * current one emphasised. It takes `thickness` across and, along it, the
8
+ * room the chrome gives it - measured, so a vertical rule lines up with
9
+ * the plot beside it - and draws the {@link TimelineState} it is handed.
10
+ */
11
+ let { timeline }: { timeline: TimelineState } = $props();
12
+
13
+ const vertical = $derived(timeline.orientation === 'vertical');
14
+
15
+ let measuredWidth = $state(0);
16
+ let measuredHeight = $state(0);
17
+ </script>
18
+
19
+ <div
20
+ class="dct-timeline-rule"
21
+ style:width={vertical ? `${timeline.thickness}px` : '100%'}
22
+ style:height={vertical ? '100%' : `${timeline.thickness}px`}
23
+ bind:clientWidth={measuredWidth}
24
+ bind:clientHeight={measuredHeight}
25
+ >
26
+ {#if measuredWidth > 0 && measuredHeight > 0 && timeline.value !== undefined}
27
+ <div class="dct-timeline-rule__box">
28
+ <Timeline
29
+ currentValue={timeline.value}
30
+ values={timeline.steps}
31
+ format={timeline.format}
32
+ orientation={timeline.orientation}
33
+ width={measuredWidth}
34
+ height={measuredHeight}
35
+ />
36
+ </div>
37
+ {/if}
38
+ </div>
39
+
40
+ <style>
41
+ .dct-timeline-rule {
42
+ position: relative;
43
+ min-width: 0;
44
+ min-height: 0;
45
+ }
46
+ /* Out of flow, so the rule's own size doesn't feed back into the box it is measured in. */
47
+ .dct-timeline-rule__box {
48
+ position: absolute;
49
+ inset: 0;
50
+ }
51
+ </style>
@@ -0,0 +1,7 @@
1
+ import type { TimelineState } from './TimelineState.svelte';
2
+ type $$ComponentProps = {
3
+ timeline: TimelineState;
4
+ };
5
+ declare const TimelineRule: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type TimelineRule = ReturnType<typeof TimelineRule>;
7
+ export default TimelineRule;
@@ -0,0 +1,90 @@
1
+ import type { PlayerConfig, PlayerControl, Orientation, TimeInput, TimeValue, TimelineStep, TimelineCallbacks, TimelineType } from '../../types/layout/timeline';
2
+ /** What a {@link TimelineState} reads from the timeline's owner, each time it needs it. */
3
+ export type TimelineSettings = TimelineCallbacks & {
4
+ type?: TimelineType;
5
+ player?: PlayerConfig;
6
+ progress?: number;
7
+ values?: TimeInput[];
8
+ /** How a non-ISO date string in `values` reads. */
9
+ dateFormat?: string;
10
+ show?: boolean;
11
+ orientation?: Orientation;
12
+ thickness?: number;
13
+ };
14
+ /**
15
+ * One figure's timeline: where it is across its steps, and whether it is
16
+ * playing, looping and how fast. Shared by everything in the figure - the
17
+ * plots that slice their rows by it, the player bar that draws it, and what
18
+ * the user builds with `useFigure().timeline`.
19
+ *
20
+ * The position is the owner's `progress` until the player (or a reader)
21
+ * moves it; from then on it is theirs, until the owner's `progress` changes.
22
+ * Create it during component init and call {@link watch} there.
23
+ */
24
+ export declare class TimelineState {
25
+ #private;
26
+ constructor(settings: () => TimelineSettings | undefined);
27
+ /** The enclosing figure's timeline, or `null` outside one. Call during component init. */
28
+ static current(): TimelineState | null;
29
+ /** Makes `state` the timeline of everything below. Call during component init. */
30
+ static provide(state: TimelineState): TimelineState;
31
+ /** Whether its owner set a timeline at all. */
32
+ get enabled(): boolean;
33
+ get type(): TimelineType;
34
+ /** Which way a `'rule'` runs; a `'player'` is always horizontal. */
35
+ get orientation(): Orientation;
36
+ /** How much room a `'rule'` takes across, in px. */
37
+ get thickness(): number;
38
+ /** Whether the owner wants it drawn. */
39
+ get shown(): boolean;
40
+ /** The steps it moves across, ascending: the owner's `values`, else those its plots report. */
41
+ get steps(): TimeValue[];
42
+ /** Whether the steps are dates. */
43
+ get temporal(): boolean;
44
+ /** Reports the steps the plots found in their rows, and whether they are dates. */
45
+ setSteps(values: TimeValue[], temporal?: boolean): void;
46
+ /** The position across the steps, `0`-`1`. */
47
+ get progress(): number;
48
+ /** The step the position lands on, as an index; `-1` without steps. */
49
+ get index(): number;
50
+ /** The step the position lands on, or `undefined` without steps. */
51
+ get value(): TimeValue | undefined;
52
+ get playing(): boolean;
53
+ get loop(): boolean;
54
+ /** The playing speed, as a multiple of {@link stepDuration}. */
55
+ get speed(): number;
56
+ /** The controls the player bar draws, in order. */
57
+ get controls(): PlayerControl[];
58
+ /** The speeds the speed control cycles through. */
59
+ get speeds(): number[];
60
+ /** Milliseconds each step lasts at speed `1`. */
61
+ get stepDuration(): number;
62
+ /** How a step reads: the player's `format`, else a date label or the number. */
63
+ get format(): (value: TimeValue) => string;
64
+ /** A step as authors see it. */
65
+ step(value: TimeValue): TimelineStep;
66
+ /** An author's step as the timeline's own, or `undefined` when it reads as none. */
67
+ timeOf(value: TimeInput): TimeValue | undefined;
68
+ /** Moves to `progress` (`0`-`1`), and tells the owner. */
69
+ seek(progress: number): void;
70
+ /** Moves to the step at `index`. */
71
+ seekIndex(index: number): void;
72
+ /** Moves to the step closest to `value`. */
73
+ seekValue(value: TimeValue): void;
74
+ next(): void;
75
+ previous(): void;
76
+ play(): void;
77
+ pause(): void;
78
+ toggle(): void;
79
+ setLoop(loop: boolean): void;
80
+ setSpeed(speed: number): void;
81
+ /** Takes the next of `speeds` after the current one, from the first again after the last. */
82
+ cycleSpeed(): void;
83
+ /**
84
+ * Moves the position on by `elapsed` milliseconds of playing. At the end it
85
+ * starts again from the first step when looping, and stops otherwise.
86
+ */
87
+ advance(elapsed: number): void;
88
+ /** Starts what the timeline does by itself: playing, the owner's `onvalue` and `autoplay`. Call during component init. */
89
+ watch(): void;
90
+ }
@@ -0,0 +1,260 @@
1
+ import { getContext, setContext, untrack } from 'svelte';
2
+ import { getConfiguration } from '../../configuration/config.svelte';
3
+ import { TimelineSteps } from './TimelineSteps';
4
+ import { TimelineTime } from './TimelineTime';
5
+ const TIMELINE_KEY = Symbol('dct-timeline');
6
+ /** The longest a frame counts for while playing, so a hidden tab doesn't jump ahead when it comes back. */
7
+ const MAX_FRAME_MS = 250;
8
+ /**
9
+ * One figure's timeline: where it is across its steps, and whether it is
10
+ * playing, looping and how fast. Shared by everything in the figure - the
11
+ * plots that slice their rows by it, the player bar that draws it, and what
12
+ * the user builds with `useFigure().timeline`.
13
+ *
14
+ * The position is the owner's `progress` until the player (or a reader)
15
+ * moves it; from then on it is theirs, until the owner's `progress` changes.
16
+ * Create it during component init and call {@link watch} there.
17
+ */
18
+ export class TimelineState {
19
+ #settings;
20
+ #steps = $state([]);
21
+ #temporal = $state(false);
22
+ #own = $state(null);
23
+ #playing = $state(false);
24
+ #loop = $state(false);
25
+ #speed = $state(1);
26
+ constructor(settings) {
27
+ this.#settings = settings;
28
+ untrack(() => {
29
+ this.#loop = settings()?.player?.loop ?? false;
30
+ this.#speed = settings()?.player?.speed ?? 1;
31
+ });
32
+ }
33
+ /** The enclosing figure's timeline, or `null` outside one. Call during component init. */
34
+ static current() {
35
+ return getContext(TIMELINE_KEY) ?? null;
36
+ }
37
+ /** Makes `state` the timeline of everything below. Call during component init. */
38
+ static provide(state) {
39
+ setContext(TIMELINE_KEY, state);
40
+ return state;
41
+ }
42
+ /** Whether its owner set a timeline at all. */
43
+ get enabled() {
44
+ return this.#settings() !== undefined;
45
+ }
46
+ get type() {
47
+ return this.#settings()?.type ?? 'player';
48
+ }
49
+ /** Which way a `'rule'` runs; a `'player'` is always horizontal. */
50
+ get orientation() {
51
+ return this.type === 'player' ? 'horizontal' : (this.#settings()?.orientation ?? 'vertical');
52
+ }
53
+ /** How much room a `'rule'` takes across, in px. */
54
+ get thickness() {
55
+ return this.#settings()?.thickness ?? getConfiguration().timeline.thickness;
56
+ }
57
+ /** Whether the owner wants it drawn. */
58
+ get shown() {
59
+ return this.#settings()?.show !== false;
60
+ }
61
+ /** The steps it moves across, ascending: the owner's `values`, else those its plots report. */
62
+ get steps() {
63
+ const values = this.#ownerValues;
64
+ return values ? new TimelineSteps(values).values : this.#steps;
65
+ }
66
+ /** Whether the steps are dates. */
67
+ get temporal() {
68
+ const settings = this.#settings();
69
+ if (!settings?.values?.length)
70
+ return this.#temporal;
71
+ return new TimelineTime(settings.dateFormat).isTemporal(settings.values);
72
+ }
73
+ /** Reports the steps the plots found in their rows, and whether they are dates. */
74
+ setSteps(values, temporal = false) {
75
+ const same = values.length === this.#steps.length && values.every((v, i) => v === this.#steps[i]);
76
+ if (!same)
77
+ this.#steps = values;
78
+ if (temporal !== this.#temporal)
79
+ this.#temporal = temporal;
80
+ }
81
+ /** The owner's `values` as steps, or `undefined` without any. */
82
+ get #ownerValues() {
83
+ const settings = this.#settings();
84
+ if (!settings?.values?.length)
85
+ return undefined;
86
+ const time = new TimelineTime(settings.dateFormat);
87
+ return settings.values
88
+ .map((value) => time.toTime(value))
89
+ .filter((value) => value !== undefined);
90
+ }
91
+ /** The position across the steps, `0`-`1`. */
92
+ get progress() {
93
+ const external = this.#settings()?.progress ?? 0;
94
+ return this.#own && this.#own.base === external ? this.#own.value : external;
95
+ }
96
+ /** The step the position lands on, as an index; `-1` without steps. */
97
+ get index() {
98
+ const count = this.steps.length;
99
+ return count === 0 ? -1 : Math.min(count - 1, Math.round(this.progress * (count - 1)));
100
+ }
101
+ /** The step the position lands on, or `undefined` without steps. */
102
+ get value() {
103
+ return this.steps[this.index];
104
+ }
105
+ get playing() {
106
+ return this.#playing;
107
+ }
108
+ get loop() {
109
+ return this.#loop;
110
+ }
111
+ /** The playing speed, as a multiple of {@link stepDuration}. */
112
+ get speed() {
113
+ return this.#speed;
114
+ }
115
+ /** The controls the player bar draws, in order. */
116
+ get controls() {
117
+ return this.#settings()?.player?.controls ?? getConfiguration().timeline.player.controls;
118
+ }
119
+ /** The speeds the speed control cycles through. */
120
+ get speeds() {
121
+ return this.#settings()?.player?.speeds ?? getConfiguration().timeline.player.speeds;
122
+ }
123
+ /** Milliseconds each step lasts at speed `1`. */
124
+ get stepDuration() {
125
+ return (this.#settings()?.player?.stepDuration ?? getConfiguration().timeline.player.stepDuration);
126
+ }
127
+ /** How a step reads: the player's `format`, else a date label or the number. */
128
+ get format() {
129
+ const own = this.#settings()?.player?.format;
130
+ if (own)
131
+ return (value) => own(this.step(value));
132
+ if (this.temporal)
133
+ return TimelineTime.dateLabel(this.steps, getConfiguration().axis.locale);
134
+ return (value) => String(value);
135
+ }
136
+ /** A step as authors see it. */
137
+ step(value) {
138
+ return TimelineTime.toStep(value, this.temporal);
139
+ }
140
+ /** An author's step as the timeline's own, or `undefined` when it reads as none. */
141
+ timeOf(value) {
142
+ return new TimelineTime(this.#settings()?.dateFormat).toTime(value);
143
+ }
144
+ /** Moves to `progress` (`0`-`1`), and tells the owner. */
145
+ seek(progress) {
146
+ const next = Math.min(1, Math.max(0, progress));
147
+ if (next === this.progress)
148
+ return;
149
+ this.#own = { base: this.#settings()?.progress ?? 0, value: next };
150
+ this.#settings()?.onprogress?.(next);
151
+ }
152
+ /** Moves to the step at `index`. */
153
+ seekIndex(index) {
154
+ const count = this.steps.length;
155
+ this.seek(count > 1 ? Math.min(count - 1, Math.max(0, index)) / (count - 1) : 0);
156
+ }
157
+ /** Moves to the step closest to `value`. */
158
+ seekValue(value) {
159
+ const nearest = new TimelineSteps(this.steps).nearest(value);
160
+ if (nearest !== undefined)
161
+ this.seekIndex(this.steps.indexOf(nearest));
162
+ }
163
+ next() {
164
+ this.seekIndex(this.index + 1);
165
+ }
166
+ previous() {
167
+ this.seekIndex(this.index - 1);
168
+ }
169
+ play() {
170
+ if (this.#playing || this.steps.length < 2)
171
+ return;
172
+ if (this.progress >= 1)
173
+ this.seek(0);
174
+ this.#playing = true;
175
+ this.#settings()?.player?.onplay?.(true);
176
+ }
177
+ pause() {
178
+ if (!this.#playing)
179
+ return;
180
+ this.#playing = false;
181
+ this.#settings()?.player?.onplay?.(false);
182
+ }
183
+ toggle() {
184
+ if (this.#playing)
185
+ this.pause();
186
+ else
187
+ this.play();
188
+ }
189
+ setLoop(loop) {
190
+ if (loop === this.#loop)
191
+ return;
192
+ this.#loop = loop;
193
+ this.#settings()?.player?.onloop?.(loop);
194
+ }
195
+ setSpeed(speed) {
196
+ if (!(speed > 0) || speed === this.#speed)
197
+ return;
198
+ this.#speed = speed;
199
+ this.#settings()?.player?.onspeed?.(speed);
200
+ }
201
+ /** Takes the next of `speeds` after the current one, from the first again after the last. */
202
+ cycleSpeed() {
203
+ const { speeds } = this;
204
+ if (speeds.length === 0)
205
+ return;
206
+ const at = speeds.indexOf(this.#speed);
207
+ this.setSpeed(speeds[(at + 1) % speeds.length]);
208
+ }
209
+ /**
210
+ * Moves the position on by `elapsed` milliseconds of playing. At the end it
211
+ * starts again from the first step when looping, and stops otherwise.
212
+ */
213
+ advance(elapsed) {
214
+ const count = this.steps.length;
215
+ if (!this.#playing || count < 2)
216
+ return;
217
+ const span = (this.stepDuration / this.#speed) * (count - 1);
218
+ const next = this.progress + Math.min(elapsed, MAX_FRAME_MS) / span;
219
+ if (next < 1)
220
+ return this.seek(next);
221
+ if (this.#loop)
222
+ return this.seek(next - 1);
223
+ this.seek(1);
224
+ this.pause();
225
+ }
226
+ /** Starts what the timeline does by itself: playing, the owner's `onvalue` and `autoplay`. Call during component init. */
227
+ watch() {
228
+ let last;
229
+ $effect(() => {
230
+ const value = this.value;
231
+ untrack(() => {
232
+ if (last !== undefined && value !== undefined && value !== last) {
233
+ this.#settings()?.onvalue?.(this.step(value));
234
+ }
235
+ last = value;
236
+ });
237
+ });
238
+ let autoplayed = false;
239
+ $effect(() => {
240
+ if (autoplayed || this.steps.length < 2)
241
+ return;
242
+ autoplayed = true;
243
+ if (untrack(() => this.#settings()?.player?.autoplay))
244
+ untrack(() => this.play());
245
+ });
246
+ $effect(() => {
247
+ if (!this.#playing)
248
+ return;
249
+ let frame = 0;
250
+ let previous = performance.now();
251
+ const tick = (now) => {
252
+ untrack(() => this.advance(now - previous));
253
+ previous = now;
254
+ frame = requestAnimationFrame(tick);
255
+ };
256
+ frame = requestAnimationFrame(tick);
257
+ return () => cancelAnimationFrame(frame);
258
+ });
259
+ }
260
+ }
@@ -0,0 +1,24 @@
1
+ import type { EasingFn } from '../../types/misc/easing';
2
+ import type { TimeValue } from '../../types/layout/timeline';
3
+ /**
4
+ * A timeline's distinct steps, ascending: where a scrubber `progress`
5
+ * (`0`-`1`) lands on them, the span they cover and which rows a step shows.
6
+ */
7
+ export declare class TimelineSteps {
8
+ readonly values: TimeValue[];
9
+ constructor(values: Iterable<TimeValue>);
10
+ /** The steps the author listed in `values` or, without any, the times of `rows`. */
11
+ static of<TRow>(values: TimeValue[] | undefined, rows: TRow[], getTime: (row: TRow) => TimeValue): TimelineSteps;
12
+ /** Whether a row at time `value` shows in `step`: at it, or up to it. */
13
+ static matches(value: unknown, step: TimeValue, mode?: 'exact' | 'upTo'): boolean;
14
+ get first(): TimeValue | undefined;
15
+ get last(): TimeValue | undefined;
16
+ /** The first and last step - empty without any. */
17
+ get domain(): TimeValue[];
18
+ /** The step a scrubber `progress` snaps to, or `undefined` without steps. */
19
+ at(progress: number): TimeValue | undefined;
20
+ /** The continuous time `progress` is at across the steps, eased - `0` without steps. */
21
+ timeAt(progress: number, easing: EasingFn): number;
22
+ /** The step closest to `time`, or `undefined` without steps. */
23
+ nearest(time: number): TimeValue | undefined;
24
+ }
@@ -0,0 +1,48 @@
1
+ /**
2
+ * A timeline's distinct steps, ascending: where a scrubber `progress`
3
+ * (`0`-`1`) lands on them, the span they cover and which rows a step shows.
4
+ */
5
+ export class TimelineSteps {
6
+ values;
7
+ constructor(values) {
8
+ this.values = [...new Set(values)].sort((a, b) => a - b);
9
+ }
10
+ /** The steps the author listed in `values` or, without any, the times of `rows`. */
11
+ static of(values, rows, getTime) {
12
+ return new TimelineSteps(values?.length ? values : rows.map(getTime));
13
+ }
14
+ /** Whether a row at time `value` shows in `step`: at it, or up to it. */
15
+ static matches(value, step, mode = 'exact') {
16
+ return mode === 'upTo' ? Number(value) <= step : Number(value) === step;
17
+ }
18
+ get first() {
19
+ return this.values[0];
20
+ }
21
+ get last() {
22
+ return this.values[this.values.length - 1];
23
+ }
24
+ /** The first and last step - empty without any. */
25
+ get domain() {
26
+ const { first, last } = this;
27
+ return first === undefined || last === undefined ? [] : [first, last];
28
+ }
29
+ /** The step a scrubber `progress` snaps to, or `undefined` without steps. */
30
+ at(progress) {
31
+ const { values } = this;
32
+ if (!values.length)
33
+ return undefined;
34
+ const index = Math.round(progress * (values.length - 1));
35
+ return values[Math.min(values.length - 1, Math.max(0, index))];
36
+ }
37
+ /** The continuous time `progress` is at across the steps, eased - `0` without steps. */
38
+ timeAt(progress, easing) {
39
+ const { first, last } = this;
40
+ if (first === undefined || last === undefined)
41
+ return 0;
42
+ return first + (last - first) * easing(progress);
43
+ }
44
+ /** The step closest to `time`, or `undefined` without steps. */
45
+ nearest(time) {
46
+ return this.values.reduce((best, step) => best === undefined || Math.abs(step - time) < Math.abs(best - time) ? step : best, undefined);
47
+ }
48
+ }