@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,25 @@
1
+ import type { GeoPlotCoreProps } from '../../types/plots/geo/props';
2
+ declare function $$render<TProps extends Record<string, unknown>>(): {
3
+ props: GeoPlotCoreProps<TProps>;
4
+ exports: {};
5
+ bindings: "margins";
6
+ slots: {};
7
+ events: {};
8
+ };
9
+ declare class __sveltets_Render<TProps extends Record<string, unknown>> {
10
+ props(): ReturnType<typeof $$render<TProps>>['props'];
11
+ events(): ReturnType<typeof $$render<TProps>>['events'];
12
+ slots(): ReturnType<typeof $$render<TProps>>['slots'];
13
+ bindings(): "margins";
14
+ exports(): {};
15
+ }
16
+ interface $$IsomorphicComponent {
17
+ new <TProps extends Record<string, unknown>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TProps>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TProps>['props']>, ReturnType<__sveltets_Render<TProps>['events']>, ReturnType<__sveltets_Render<TProps>['slots']>> & {
18
+ $$bindings?: ReturnType<__sveltets_Render<TProps>['bindings']>;
19
+ } & ReturnType<__sveltets_Render<TProps>['exports']>;
20
+ <TProps extends Record<string, unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<TProps>['props']> & {}): ReturnType<__sveltets_Render<TProps>['exports']>;
21
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
22
+ }
23
+ declare const Core: $$IsomorphicComponent;
24
+ type Core<TProps extends Record<string, unknown>> = InstanceType<typeof Core<TProps>>;
25
+ export default Core;
@@ -1,328 +1,107 @@
1
1
  <script lang="ts" generics="TProps extends Record<string, unknown>">
2
- import { SvelteMap } from 'svelte/reactivity';
3
- import { resolveAccessor } from '../utils/accessors';
4
- import { resolveFeatureStyle } from '../utils/geoSegments';
5
- import { geometryCentroid, filterGeometryParts, defaultFeatureId } from '../utils/geoAccessors';
6
- import { isTopology, topologyToGeoJson } from '../utils/topojson';
7
- import { makeColorScale } from '../../utils/color';
8
- import { getConfiguration } from '../../configuration/config.svelte';
9
- import { getLegendInteraction } from '../../layout/legend/interaction.svelte';
10
- import { disabledFillOverride } from '../utils/legendDisabled';
11
- import { GEO_MARGIN_ESTIMATE } from '../../layout/coordinates/margins';
12
- import { buildGeoMarkers } from './buildGeoMarkers';
13
- import { hasHoverMarker } from '../../layout/tooltip/utils';
14
- import BasePlotLayout from '../../layout/plot/BasePlotLayout.svelte';
15
- import type { BasePlotProps } from '../../types/plots/props';
16
- import type { GeoScalesConfig, CoordinatesConfig } from '../../types/layout/coordinates';
17
- import type { GeoFeature, GeoDataProps } from '../../types/plots/data/geo';
18
- import type { GeoStylesConfig } from '../../types/layout/styles';
19
- import type { GeoSegmentStyle } from '../../types/plots/segments/common';
20
- import type { GeoMarkersConfig } from '../../types/markers/geo';
21
-
22
- /**
23
- * A map, rendered from GeoJSON or TopoJSON. Unlike the other plot kinds
24
- * there's no x/y/z axis pair: `data` IS the map. `segments` styles
25
- * features by id; `value` + `scales.color`/`styles.colors` drive a
26
- * continuous choropleth ramp. Everything drawn on top — points, arrows,
27
- * links, contours, graticule/sphere — is a `markers` entry, assembled by
28
- * `buildGeoMarkers` and routed through `GeometryLayout`.
29
- */
30
- type TaggedFeature = GeoFeature<TProps> & { __id: string; __cx: number; __cy: number };
31
-
32
- type Props = BasePlotProps<
33
- GeoDataProps<TProps>,
34
- GeoFeature<TProps>,
35
- GeoStylesConfig<TProps>,
36
- GeoSegmentStyle,
37
- GeoMarkersConfig,
38
- GeoScalesConfig,
39
- CoordinatesConfig
40
- >;
41
-
42
- let {
43
- data,
44
- object,
45
- featureId,
46
- value,
47
- excludeParts,
48
- width,
49
- height,
50
- styles = {},
51
- segments = {},
52
- markers = [],
53
- scales = {},
54
- coordinates = {},
55
- margins,
56
- tooltip = undefined,
57
- }: Props = $props();
58
-
59
- const cfg = $derived(getConfiguration());
60
-
61
- // ── Resolve data: GeoJSON is synchronous, TopoJSON is converted async ────
62
- let topoFeatures = $state<GeoFeature<TProps>[] | null>(null);
63
-
64
- $effect(() => {
65
- if (!isTopology(data)) return;
66
- if (!object) {
67
- console.warn('GeoPlot: `data` is a TopoJSON Topology but no `object` key was given — nothing will render.');
68
- topoFeatures = [];
69
- return;
70
- }
71
- let cancelled = false;
72
- topologyToGeoJson<TProps>(data, object)
73
- .then((resolved) => {
74
- if (!cancelled) topoFeatures = resolved;
75
- })
76
- .catch((err) => {
77
- if (!cancelled) {
78
- console.warn(err instanceof Error ? err.message : String(err));
79
- topoFeatures = [];
80
- }
81
- });
82
- return () => {
83
- cancelled = true;
84
- };
85
- });
86
-
87
- const rawFeatures = $derived.by((): GeoFeature<TProps>[] => {
88
- if (isTopology(data)) return topoFeatures ?? [];
89
- if (Array.isArray(data)) return data;
90
- // `FeatureCollection.features` is GeoJSON's own `Feature<G, P>[]`, without
91
- // the `Record<string, unknown>` intersection `GeoFeature` adds to satisfy
92
- // this package's generic row-type bound — safe to assert, since every
93
- // property `GeoFeature` promises is already present.
94
- return data.features as GeoFeature<TProps>[];
95
- });
96
-
97
- const getFeatureId = $derived(
98
- featureId ? resolveAccessor<GeoFeature<TProps>>(featureId) : defaultFeatureId<TProps>,
99
- );
100
-
101
- /**
102
- * Tags each feature with a plain enumerable `__id`/`__cx`/`__cy`, so
103
- * per-row metadata (feature id for style/hover lookups, centroid for
104
- * positioning) lives as an own property on the object itself rather than a
105
- * side lookup. Untouched by `excludeParts`: passed to `InsetMarker` as-is,
106
- * so an inset can show a part the main map's own rendering (`features`,
107
- * below) excludes.
108
- */
109
- const allFeatures = $derived.by((): TaggedFeature[] =>
110
- rawFeatures.map((f) => {
111
- const [cx, cy] = geometryCentroid(f.geometry);
112
- return { ...f, __id: getFeatureId(f), __cx: cx, __cy: cy } as TaggedFeature;
113
- }),
114
- );
115
-
116
- /**
117
- * `allFeatures`, reduced per `excludeParts` — this is what actually
118
- * renders (`styleGroups`/the base `'geo'` marker below) and what
119
- * `hoverPoints` derives from. A feature reduced to no parts at all is
120
- * dropped entirely.
121
- */
122
- const features = $derived.by((): TaggedFeature[] => {
123
- if (!excludeParts) return allFeatures;
124
- return allFeatures.flatMap((f) => {
125
- const geometry = filterGeometryParts(f.geometry, (part) => !excludeParts(part, f));
126
- if (!geometry) return [];
127
- const [cx, cy] = geometryCentroid(geometry);
128
- return [{ ...f, geometry, __cx: cx, __cy: cy } as TaggedFeature];
129
- });
130
- });
131
-
132
- // ── Tile-layer / projection compatibility ────────────────────────────────
133
- $effect(() => {
134
- if (!styles.tileLayer) return;
135
- const proj = coordinates.projection;
136
- const name = typeof proj === 'string' ? proj : proj?.type;
137
- if (name && name !== 'mercator' && name !== 'transverse-mercator') {
138
- console.warn(
139
- `GeoPlot: styles.tileLayer only renders correctly with a mercator-family projection — got "${name}". Rendering anyway.`,
140
- );
141
- }
142
- });
143
-
144
- /**
145
- * `coordinates.projection`, defaulted to `'mercator'` when unset and
146
- * `styles.tileLayer` is active (the only projection family `TileLayer`
147
- * renders correctly under) — folded in here, before `coordinates` reaches
148
- * `BasePlotLayout`/`CoordinatesLayout`, since neither knows about
149
- * `styles.tileLayer`.
150
- */
151
- const resolvedCoordinates = $derived.by((): CoordinatesConfig => ({
152
- ...coordinates,
153
- projection: coordinates.projection ?? (styles.tileLayer ? 'mercator' : undefined),
154
- }));
155
-
156
- /**
157
- * `styles`, with `features` tacked onto `tileLayer` (never author-facing —
158
- * `GeoTileLayerConfig` doesn't declare it) so `StylesLayout` can compute
159
- * the tile layer's auto-fit bounds without raw geometry threaded through
160
- * as a separate prop. `excludeParts`-reduced `features`, matching what
161
- * actually renders.
162
- */
163
- const resolvedStyles = $derived.by(() =>
164
- styles.tileLayer ? { ...styles, tileLayer: { ...styles.tileLayer, features } } : styles,
165
- );
166
-
167
- // ── Choropleth color scale (mirrors heatmap's styles.colors/scales.z) ────
168
- const minColor = $derived(styles.colors?.min ?? cfg.continuous.min);
169
- const maxColor = $derived(styles.colors?.max ?? cfg.continuous.max);
170
-
171
- const valueDomain = $derived.by((): [number, number] | null => {
172
- if (scales.color?.domain) return scales.color.domain;
173
- if (!value) return null;
174
- const vals = features.map((f) => value(f)).filter((v): v is number => v != null);
175
- return vals.length ? [Math.min(...vals), Math.max(...vals)] : null;
176
- });
177
-
178
- // ── Legend-driven range filter (mirrors HeatmapPlot's own) ────────────────
179
- const legendInteraction = $derived(getLegendInteraction());
180
- const range = $derived(legendInteraction?.continuousRange);
181
- const effectiveDomain = $derived.by((): [number, number] | null => {
182
- if (!valueDomain) return null;
183
- return range && range.mode === 'rescale' ? [range.min, range.max] : valueDomain;
184
- });
185
-
186
- const colorScale = $derived(
187
- effectiveDomain ? makeColorScale(effectiveDomain[0], effectiveDomain[1], minColor, maxColor) : null,
188
- );
189
-
190
- function resolveBaseFill(f: TaggedFeature): string {
191
- if (value && colorScale) {
192
- const v = value(f);
193
- if (v != null) return colorScale(v);
194
- }
195
- return styles.fill ?? cfg.palette[0];
196
- }
197
-
198
- function rangeFilteredStyle(base: GeoSegmentStyle, f: TaggedFeature): GeoSegmentStyle {
199
- const r = range;
200
- if (r == null || !value) return base;
201
- const v = value(f);
202
- if (v == null || (v >= r.min && v <= r.max)) return base;
203
- return { ...base, ...disabledFillOverride(r.disabledStyle) };
204
- }
205
-
206
- // ── Per-feature style resolution, grouped by distinct resolved style ─────
207
- // (one `'geo'` marker per group — mirrors heatmap's styleGroups: svelteplot's
208
- // shared numeric-scale machinery collapses a per-row fillOpacity/strokeWidth
209
- // *accessor* to a single value, so literal per-call constants are required.)
210
- function getFeatureStyle(f: TaggedFeature): GeoSegmentStyle {
211
- return rangeFilteredStyle(resolveFeatureStyle<GeoSegmentStyle>(segments, f.__id), f);
212
- }
213
-
214
- type StyleGroup = { style: GeoSegmentStyle; data: TaggedFeature[] };
215
- const styleGroups = $derived.by((): StyleGroup[] => {
216
- const groups = new SvelteMap<string, StyleGroup>();
217
- for (const f of features) {
218
- const style = getFeatureStyle(f);
219
- const key = JSON.stringify(style);
220
- let group = groups.get(key);
221
- if (!group) {
222
- group = { style, data: [] };
223
- groups.set(key, group);
224
- }
225
- group.data.push(f);
226
- }
227
- return [...groups.values()];
228
- });
229
-
230
- // A feature outside the active range is dimmed in place, but never
231
- // surfaces in hover/tooltip — it's simply absent from the candidate list.
232
- const hoverPoints = $derived(
233
- features
234
- .filter((f) => {
235
- const r = range;
236
- if (r == null || !value) return true;
237
- const v = value(f);
238
- return v == null || (v >= r.min && v <= r.max);
239
- })
240
- .map((f) => ({ x: f.__cx, y: f.__cy, row: f, label: f.__id })),
241
- );
242
- const hoverGetX = (f: TaggedFeature) => f.__cx;
243
- const hoverGetY = (f: TaggedFeature) => f.__cy;
244
-
245
- /**
246
- * `hoverPoints` keyed by feature `__id`, looked up from the exact feature
247
- * the browser's own SVG hit-testing resolved a pointer event to (see the
248
- * base `'geo'` marker's `onpointerenter`, built by `buildGeoMarkers`). A
249
- * feature absent here was filtered out of `hoverPoints` and correctly
250
- * produces no match.
251
- */
252
- const hoverPointById = $derived.by(() => {
253
- const map = new SvelteMap<string, (typeof hoverPoints)[number]>();
254
- for (const p of hoverPoints) map.set(p.row.__id, p);
255
- return map;
256
- });
257
-
258
- const hoverActive = $derived(tooltip != null || hasHoverMarker(markers));
259
-
260
- const hover = $derived({
261
- active: hoverActive,
262
- points: hoverPoints,
263
- label: (f: TaggedFeature) => f.__id,
264
- strategy: 'punctual' as const,
265
- // A map has no axis to draw a crosshair rule against — 'punctual' here
266
- // only means "exact XY hover match", unlike heatmap's own use of it.
267
- crosshair: false,
268
- sync: tooltip?.sync ?? false,
269
- tooltip,
270
- exclude: isOverInset,
271
- // A feature's true visual center can sit far from where the cursor
272
- // actually is on a large/irregular shape (e.g. an elongated province) —
273
- // 'contains' matches the feature the cursor is really over, via the
274
- // browser's own SVG hit-testing on each rendered feature path, rather
275
- // than 'nearest' centroid distance.
276
- pointMatching: 'contains' as const,
277
- });
278
-
279
- /**
280
- * The main map's own hover must never fire while the cursor is over an
281
- * `inset` marker's panel, which draws at its own scale/projection.
282
- * Checked via `e.target` (tagged with the `dct-geo-inset` ancestor class
283
- * by `InsetMarker`'s own hit-test elements) rather than precomputed pixel
284
- * bounds, since the browser's own hit-testing already accounts for any
285
- * scale mismatch between `<Plot>`'s props and its rendered viewBox.
286
- */
287
- function isOverInset(e: PointerEvent): boolean {
288
- return (e.target as Element | null)?.closest?.('.dct-geo-inset') != null;
289
- }
2
+ import Core from './Core.svelte';
3
+ import Plot from '../../layout/plot/Plot.svelte';
4
+ import { merge } from '../../utils/merge';
5
+ import { buildGeoDefaults } from './defaults';
6
+ import { buildGeoSlicing } from './slices';
7
+ import { createGeoFeatures } from './features.svelte';
8
+ import type { GeoPlotProps, GeoPlotCoreProps } from '../../types/plots/geo/props';
9
+ import type { GeoFeature } from '../../types/plots/data/geo';
10
+ import type { GeoScalesConfig } from '../../types/layout/coordinates';
11
+ import type { PlotCellContext } from '../../types/layout/plot';
12
+ import type { TooltipConfig } from '../../types/plots/props';
13
+ import type { TooltipProp } from '../../types/layout/tooltip';
14
+
15
+ type Row = Record<string, unknown>;
16
+
17
+ /**
18
+ * A map, rendered from GeoJSON or TopoJSON - `data` is the map itself.
19
+ * Optional chrome (`title`, `subtitle`, `caption`, `header`, `footer`,
20
+ * `legend`) frames it. `timeline` and `facet` slice its features and its
21
+ * markers' own rows by a field (a feature's from its `properties`); what
22
+ * lacks the field draws in every slice, and the color ramp spans every
23
+ * slice. With `coordinates.projection.domain: 'data'`, each facet zooms to
24
+ * its own features.
25
+ */
26
+ let {
27
+ title,
28
+ subtitle,
29
+ caption,
30
+ header,
31
+ footer,
32
+ legend,
33
+ order,
34
+ tooltip,
35
+ timeline,
36
+ facet,
37
+ margins = $bindable(),
38
+ ...core
39
+ }: GeoPlotProps<TProps> = $props();
40
+
41
+ const sliced = $derived(timeline != null || facet != null);
42
+ // Only resolved here when slicing; otherwise the core resolves `data` itself.
43
+ const resolved = createGeoFeatures<TProps>(
44
+ () => (sliced ? core.data : []),
45
+ () => core.object
46
+ );
47
+ const features = $derived(resolved.features as unknown as Row[]);
48
+ const markerRows = $derived(
49
+ (core.markers ?? []).flatMap((m) =>
50
+ Array.isArray((m as { data?: unknown }).data) ? ((m as { data: Row[] }).data ?? []) : []
51
+ )
52
+ );
53
+ const slicing = $derived(
54
+ buildGeoSlicing({ rows: [...features, ...markerRows], timeline, facet })
55
+ );
56
+
57
+ /** The color ramp's domain over every feature, so each slice colors on the same scale. */
58
+ const sharedColor = $derived.by((): GeoScalesConfig | undefined => {
59
+ const value = core.color;
60
+ if (!value) return undefined;
61
+ const values = (resolved.features as GeoFeature<TProps>[])
62
+ .map((f) => value(f))
63
+ .filter((v): v is number => typeof v === 'number' && Number.isFinite(v));
64
+ return values.length
65
+ ? { color: { domain: [Math.min(...values), Math.max(...values)] } }
66
+ : undefined;
67
+ });
68
+
69
+ /** The core's props for one slice: the features and marker rows it keeps. */
70
+ function sliceProps(slice: PlotCellContext<Row>): GeoPlotCoreProps<TProps> {
71
+ const tip = slice.tooltip as TooltipConfig<GeoFeature<TProps>> | undefined;
72
+ if (!sliced)
73
+ return { ...core, width: slice.width, height: slice.height, margins, tooltip: tip };
74
+ return {
75
+ ...core,
76
+ data: features.filter(slice.keep) as unknown as GeoFeature<TProps>[],
77
+ markers: core.markers?.map((m) => {
78
+ const rows = (m as { data?: unknown }).data;
79
+ return Array.isArray(rows) ? { ...m, data: (rows as Row[]).filter(slice.keep) } : m;
80
+ }),
81
+ width: slice.width,
82
+ height: slice.height,
83
+ margins: slice.margins ?? margins,
84
+ scales: merge(sharedColor, core.scales),
85
+ tooltip: tip
86
+ } as GeoPlotCoreProps<TProps>;
87
+ }
290
88
  </script>
291
89
 
292
- <!--
293
- `x`/`y`: pins the plot's generic linear scales to the full lon/lat range.
294
- Every geo-aware mark routes through the active projection instead, except
295
- svelteplot's `Contour`, whose grid reads `plot.scales.x`/`y` directly —
296
- this keeps a `contour` marker aligned with the map under it.
297
- -->
298
- <BasePlotLayout
299
- {width}
300
- {height}
301
- data={features}
302
- getX={hoverGetX}
303
- getY={hoverGetY}
304
- {hover}
305
- x={{ domain: [-180, 180] }}
306
- y={{ domain: [90, -90] }}
307
- coordinates={resolvedCoordinates}
308
- {margins}
309
- marginEstimate={GEO_MARGIN_ESTIMATE}
310
- styles={resolvedStyles}
311
- markers={({ setHoverMatch, clearHoverMatch }) =>
312
- buildGeoMarkers({
313
- styleGroups,
314
- resolveBaseFill,
315
- fillOpacity: styles.fillOpacity,
316
- stroke: styles.stroke,
317
- strokeWidth: styles.strokeWidth,
318
- axisColor: cfg.axis.color,
319
- onFeatureClick: styles.onFeatureClick,
320
- markers,
321
- hoverActive,
322
- hoverPointById,
323
- isOverInset,
324
- setHoverMatch,
325
- clearHoverMatch,
326
- })}
327
- geoAllFeatures={allFeatures}
90
+ <Plot
91
+ {Core}
92
+ core={core as GeoPlotCoreProps<TProps>}
93
+ defaults={buildGeoDefaults}
94
+ slice={sliceProps}
95
+ bind:margins
96
+ {title}
97
+ {subtitle}
98
+ {caption}
99
+ {header}
100
+ {footer}
101
+ {legend}
102
+ {order}
103
+ timeline={slicing.timeline}
104
+ facet={slicing.facet}
105
+ data={slicing.rows}
106
+ tooltip={tooltip as TooltipProp<Row> | undefined}
328
107
  />
@@ -1,13 +1,9 @@
1
- import type { BasePlotProps } from '../../types/plots/props';
2
- import type { GeoScalesConfig, CoordinatesConfig } from '../../types/layout/coordinates';
3
- import type { GeoFeature, GeoDataProps } from '../../types/plots/data/geo';
4
- import type { GeoStylesConfig } from '../../types/layout/styles';
5
- import type { GeoSegmentStyle } from '../../types/plots/segments/common';
6
- import type { GeoMarkersConfig } from '../../types/markers/geo';
1
+ import Plot from '../../layout/plot/Plot.svelte';
2
+ import type { GeoPlotProps } from '../../types/plots/geo/props';
7
3
  declare function $$render<TProps extends Record<string, unknown>>(): {
8
- props: BasePlotProps<GeoDataProps<TProps>, GeoFeature<TProps>, GeoStylesConfig<TProps>, GeoSegmentStyle, GeoMarkersConfig, GeoScalesConfig, CoordinatesConfig>;
4
+ props: GeoPlotProps<TProps>;
9
5
  exports: {};
10
- bindings: "";
6
+ bindings: "margins";
11
7
  slots: {};
12
8
  events: {};
13
9
  };
@@ -15,7 +11,7 @@ declare class __sveltets_Render<TProps extends Record<string, unknown>> {
15
11
  props(): ReturnType<typeof $$render<TProps>>['props'];
16
12
  events(): ReturnType<typeof $$render<TProps>>['events'];
17
13
  slots(): ReturnType<typeof $$render<TProps>>['slots'];
18
- bindings(): "";
14
+ bindings(): "margins";
19
15
  exports(): {};
20
16
  }
21
17
  interface $$IsomorphicComponent {
@@ -0,0 +1,4 @@
1
+ import type { GeoPlotState, GeoPlotCtx } from '../../types/plots/geo/state';
2
+ import { Pipeline } from '../../phases/Pipeline';
3
+ /** GeoPlot's own pipeline (data, scales, markers, tooltip, hover), run over the state its core seeds, hovering one feature at a time. */
4
+ export declare function buildGeoDefaults<TProps extends Record<string, unknown>>(): Pipeline<GeoPlotState<TProps>, GeoPlotCtx<TProps>>;
@@ -0,0 +1,16 @@
1
+ import { buildData } from './phases/data';
2
+ import { buildScales } from './phases/scales';
3
+ import { buildMarkers } from './phases/markers';
4
+ import { buildTooltip } from './phases/tooltip';
5
+ import { buildHover } from './phases/hover';
6
+ import { Pipeline } from '../../phases/Pipeline';
7
+ /** GeoPlot's own pipeline (data, scales, markers, tooltip, hover), run over the state its core seeds, hovering one feature at a time. */
8
+ export function buildGeoDefaults() {
9
+ return new Pipeline([
10
+ { phase: 'data', run: buildData },
11
+ { phase: 'scales', run: buildScales },
12
+ { phase: 'markers', run: buildMarkers },
13
+ { phase: 'tooltip', run: buildTooltip },
14
+ { phase: 'hover', run: buildHover }
15
+ ], { hoverStrategy: 'punctual' });
16
+ }
@@ -0,0 +1,5 @@
1
+ import type { GeoFeature, GeoJsonInput, Topology } from '../../types/plots/data/geo';
2
+ /** A GeoPlot's `data` as a feature list: GeoJSON as is, a TopoJSON `Topology` converted under `object`. */
3
+ export declare function createGeoFeatures<TProps extends Record<string, unknown>>(getData: () => GeoJsonInput<TProps> | Topology, getObject: () => string | undefined): {
4
+ readonly features: GeoFeature<TProps>[];
5
+ };
@@ -0,0 +1,44 @@
1
+ import { isTopology, topologyToGeoJson } from '../utils/topojson';
2
+ /** A GeoPlot's `data` as a feature list: GeoJSON as is, a TopoJSON `Topology` converted under `object`. */
3
+ export function createGeoFeatures(getData, getObject) {
4
+ let topoFeatures = $state(null);
5
+ $effect(() => {
6
+ const data = getData();
7
+ const object = getObject();
8
+ if (!isTopology(data))
9
+ return;
10
+ if (!object) {
11
+ console.warn('GeoPlot: `data` is a TopoJSON Topology but no `object` key was given - nothing will render.');
12
+ topoFeatures = [];
13
+ return;
14
+ }
15
+ let cancelled = false;
16
+ topologyToGeoJson(data, object)
17
+ .then((resolved) => {
18
+ if (!cancelled)
19
+ topoFeatures = resolved;
20
+ })
21
+ .catch((err) => {
22
+ if (!cancelled) {
23
+ console.warn(err instanceof Error ? err.message : String(err));
24
+ topoFeatures = [];
25
+ }
26
+ });
27
+ return () => {
28
+ cancelled = true;
29
+ };
30
+ });
31
+ const features = $derived.by(() => {
32
+ const data = getData();
33
+ if (isTopology(data))
34
+ return topoFeatures ?? [];
35
+ if (Array.isArray(data))
36
+ return data;
37
+ return data.features;
38
+ });
39
+ return {
40
+ get features() {
41
+ return features;
42
+ }
43
+ };
44
+ }
@@ -0,0 +1,6 @@
1
+ import type { GeoPlotState } from '../../../types/plots/geo/state';
2
+ /**
3
+ * GeoPlot's "data" phase: every feature tagged with its resolved id/centroid,
4
+ * then reduced by `excludeParts`. Reads no ctx.
5
+ */
6
+ export declare function buildData<TProps extends Record<string, unknown>>(state: GeoPlotState<TProps>): GeoPlotState<TProps>;
@@ -0,0 +1,26 @@
1
+ import { resolveAccessor } from '../../utils/accessors';
2
+ import { geometryCentroid, filterGeometryParts, defaultFeatureId } from '../../utils/geoAccessors';
3
+ /**
4
+ * GeoPlot's "data" phase: every feature tagged with its resolved id/centroid,
5
+ * then reduced by `excludeParts`. Reads no ctx.
6
+ */
7
+ export function buildData(state) {
8
+ const { rawFeatures, featureId, excludeParts } = state;
9
+ const getFeatureId = featureId
10
+ ? resolveAccessor(featureId)
11
+ : defaultFeatureId;
12
+ const allFeatures = rawFeatures.map((f) => {
13
+ const [cx, cy] = geometryCentroid(f.geometry);
14
+ return { ...f, __id: getFeatureId(f), __cx: cx, __cy: cy };
15
+ });
16
+ const features = !excludeParts
17
+ ? allFeatures
18
+ : allFeatures.flatMap((f) => {
19
+ const geometry = filterGeometryParts(f.geometry, (part) => !excludeParts(part, f));
20
+ if (!geometry)
21
+ return [];
22
+ const [cx, cy] = geometryCentroid(geometry);
23
+ return [{ ...f, geometry, __cx: cx, __cy: cy }];
24
+ });
25
+ return { ...state, allFeatures, features };
26
+ }
@@ -0,0 +1,9 @@
1
+ import type { GeoPlotState, GeoPlotCtx } from '../../../types/plots/geo/state';
2
+ /** Whether a pointer event is over an `inset` marker's panel, which has its own hover. */
3
+ export declare function isOverInset(e: PointerEvent): boolean;
4
+ /**
5
+ * GeoPlot's "hover" phase: each feature, at its centroid, matched by the
6
+ * feature under the cursor and read as its id. A feature outside the active
7
+ * legend range stays drawn, dimmed, but is never a candidate.
8
+ */
9
+ export declare function buildHover<TProps extends Record<string, unknown>>(state: GeoPlotState<TProps>, ctx: GeoPlotCtx<TProps>): GeoPlotState<TProps>;
@@ -0,0 +1,45 @@
1
+ import { LegendState } from '../../../layout/legend/LegendState.svelte';
2
+ import { HoverSettings } from '../../../layout/hover/HoverSettings';
3
+ /** Whether a pointer event is over an `inset` marker's panel, which has its own hover. */
4
+ export function isOverInset(e) {
5
+ return e.target?.closest?.('.dct-geo-inset') != null;
6
+ }
7
+ /**
8
+ * GeoPlot's "hover" phase: each feature, at its centroid, matched by the
9
+ * feature under the cursor and read as its id. A feature outside the active
10
+ * legend range stays drawn, dimmed, but is never a candidate.
11
+ */
12
+ export function buildHover(state, ctx) {
13
+ const { color, tooltip, authoredMarkers } = state;
14
+ const { range } = ctx;
15
+ const features = state.features;
16
+ const label = (f) => f.__id;
17
+ const points = features
18
+ .filter((f) => !range || !color || LegendState.inRange(color(f), range))
19
+ .map((f) => ({ x: f.__cx, y: f.__cy, row: f, label: label(f) }));
20
+ const hover = {
21
+ ...HoverSettings.buildConfig({
22
+ tooltip: tooltip,
23
+ format: state.tooltipFormat,
24
+ markers: authoredMarkers,
25
+ points,
26
+ label,
27
+ defaultStrategy: 'punctual',
28
+ // Match the feature under the cursor, not the nearest centroid.
29
+ pointMatching: 'contains'
30
+ }),
31
+ // A map has no axes for a crosshair: 'punctual' only means an exact match.
32
+ strategy: 'punctual',
33
+ crosshair: false,
34
+ exclude: isOverInset
35
+ };
36
+ return {
37
+ ...state,
38
+ hover,
39
+ hoverPosition: {
40
+ x: (f) => f.__cx,
41
+ y: (f) => f.__cy
42
+ },
43
+ hoverRows: features
44
+ };
45
+ }