@fundar/data-chart-telling 1.1.0 → 1.2.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 (524) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +6 -6
  3. package/dist/configuration/config.svelte.d.ts +1 -1
  4. package/dist/configuration/config.svelte.js +165 -100
  5. package/dist/configuration/themes/index.d.ts +5 -1428
  6. package/dist/index.d.ts +23 -14
  7. package/dist/index.js +20 -11
  8. package/dist/layout/base/BasePlotLayout.svelte +115 -50
  9. package/dist/layout/base/BasePlotLayout.svelte.d.ts +1 -38
  10. package/dist/layout/coordinates/CoordinatesLayout.svelte +42 -40
  11. package/dist/layout/coordinates/CoordinatesLayout.svelte.d.ts +0 -2
  12. package/dist/layout/coordinates/ProjectionZoom.svelte +48 -0
  13. package/dist/layout/coordinates/ProjectionZoom.svelte.d.ts +10 -0
  14. package/dist/layout/coordinates/ZoomedProjection.d.ts +11 -0
  15. package/dist/layout/coordinates/ZoomedProjection.js +24 -0
  16. package/dist/layout/coordinates/camera.svelte.js +11 -8
  17. package/dist/layout/coordinates/projections/argentina.js +1 -1
  18. package/dist/layout/coordinates/projections/fit.d.ts +1 -1
  19. package/dist/layout/coordinates/projections/fit.js +1 -1
  20. package/dist/layout/coordinates/zoom.svelte.d.ts +4 -5
  21. package/dist/layout/coordinates/zoom.svelte.js +4 -5
  22. package/dist/layout/facet/FacetLayout.svelte +1 -1
  23. package/dist/layout/facet/config.js +1 -1
  24. package/dist/layout/figure/Figure.svelte +2 -0
  25. package/dist/layout/geometry/GeometryLayout.svelte +14 -9
  26. package/dist/layout/geometry/GeometryLayout.svelte.d.ts +0 -3
  27. package/dist/layout/geometry/MarkerOffset.svelte +28 -0
  28. package/dist/layout/geometry/MarkerOffset.svelte.d.ts +13 -0
  29. package/dist/layout/grid/GridCell.svelte +6 -8
  30. package/dist/layout/legend/ContinuousSection.svelte +44 -9
  31. package/dist/layout/legend/DiscreteBadgeItem.svelte +2 -2
  32. package/dist/layout/legend/DiscreteSection.svelte +2 -2
  33. package/dist/layout/legend/DiscreteSymbolIcon.svelte +1 -1
  34. package/dist/layout/legend/LegendChannels.js +36 -12
  35. package/dist/layout/legend/LegendLayout.svelte +9 -1
  36. package/dist/layout/legend/LegendState.svelte.d.ts +4 -0
  37. package/dist/layout/legend/LegendState.svelte.js +20 -3
  38. package/dist/layout/legend/SizeSection.svelte +1 -1
  39. package/dist/layout/margins/PlotMargins.svelte.d.ts +2 -5
  40. package/dist/layout/margins/PlotMargins.svelte.js +4 -8
  41. package/dist/layout/plot/Slice.d.ts +5 -1
  42. package/dist/layout/plot/Slice.js +14 -4
  43. package/dist/layout/scales/NiceTicks.d.ts +3 -0
  44. package/dist/layout/scales/NiceTicks.js +4 -0
  45. package/dist/layout/scales/ScalesLayout.svelte +72 -7
  46. package/dist/layout/scales/ScalesLayout.svelte.d.ts +5 -0
  47. package/dist/layout/scales/SveltePlotScale.d.ts +2 -2
  48. package/dist/layout/scales/SveltePlotScale.js +13 -6
  49. package/dist/layout/scales/TickLabels.d.ts +32 -0
  50. package/dist/layout/scales/TickLabels.js +55 -0
  51. package/dist/layout/styles/StylesLayout.svelte +2 -2
  52. package/dist/layout/styles/ValueLabels.d.ts +33 -5
  53. package/dist/layout/styles/ValueLabels.js +80 -21
  54. package/dist/layout/timeline/TimelineLayout.svelte +1 -1
  55. package/dist/layout/tooltip/Tooltip.svelte +4 -4
  56. package/dist/layout/tooltip/Tooltip.svelte.d.ts +4 -4
  57. package/dist/layout/tooltip/TooltipState.svelte.js +1 -1
  58. package/dist/markers/MarkerKinds.d.ts +5 -0
  59. package/dist/markers/MarkerKinds.js +1 -0
  60. package/dist/markers/area/AreaMarker.svelte +15 -63
  61. package/dist/markers/arrow/ArrowMarker.svelte +51 -9
  62. package/dist/markers/bar/BarMarker.svelte +8 -4
  63. package/dist/markers/bollinger/BollingerMarker.svelte +33 -18
  64. package/dist/markers/box/BoxMarker.svelte +40 -9
  65. package/dist/markers/delta/Delta.js +1 -1
  66. package/dist/markers/dot/DotMarker.svelte +24 -27
  67. package/dist/markers/image/ImageMarker.svelte +17 -12
  68. package/dist/markers/inset/InsetMarker.svelte +2 -2
  69. package/dist/markers/line/LineMarker.svelte +1 -0
  70. package/dist/markers/link/LinkMarker.svelte +174 -29
  71. package/dist/markers/regression/RegressionMarker.svelte +16 -33
  72. package/dist/markers/rule/RuleMarker.svelte +9 -3
  73. package/dist/markers/text/Declutter.d.ts +4 -0
  74. package/dist/markers/text/Declutter.js +26 -11
  75. package/dist/markers/text/TextMarker.svelte +91 -48
  76. package/dist/markers/tick/TickMarker.svelte +27 -25
  77. package/dist/markers/utils/MarkerChannels.d.ts +24 -0
  78. package/dist/markers/utils/MarkerChannels.js +42 -7
  79. package/dist/markers/utils/RowOffset.d.ts +23 -0
  80. package/dist/markers/utils/RowOffset.js +23 -0
  81. package/dist/markers/utils/RowOffsetMarks.svelte +30 -0
  82. package/dist/markers/utils/RowOffsetMarks.svelte.d.ts +33 -0
  83. package/dist/markers/utils/RowStroke.d.ts +31 -0
  84. package/dist/markers/utils/RowStroke.js +28 -0
  85. package/dist/markers/violin/ViolinMarker.svelte +75 -0
  86. package/dist/markers/violin/ViolinMarker.svelte.d.ts +7 -0
  87. package/dist/markers/violin/ViolinProfiles.d.ts +29 -0
  88. package/dist/markers/violin/ViolinProfiles.js +55 -0
  89. package/dist/markers/waffle/WaffleMarker.svelte +17 -37
  90. package/dist/phases/Pipeline.d.ts +5 -0
  91. package/dist/phases/Pipeline.js +5 -0
  92. package/dist/phases/data/DataPhase.js +3 -3
  93. package/dist/phases/data/PlotAxes.d.ts +10 -0
  94. package/dist/phases/data/PlotAxes.js +14 -1
  95. package/dist/phases/facet/FacetPanels.d.ts +1 -0
  96. package/dist/phases/facet/FacetPanels.js +1 -0
  97. package/dist/phases/mapping/MappingPhase.js +1 -1
  98. package/dist/phases/markers/MarkersPhase.js +2 -1
  99. package/dist/phases/scales/CategoryOrder.d.ts +23 -0
  100. package/dist/phases/scales/CategoryOrder.js +73 -0
  101. package/dist/phases/scales/ScalesPhase.js +21 -7
  102. package/dist/phases/sharedScales/SharedScalesPhase.d.ts +3 -2
  103. package/dist/phases/sharedScales/SharedScalesPhase.js +5 -2
  104. package/dist/phases/statistics/Statistics.d.ts +10 -6
  105. package/dist/phases/statistics/Statistics.js +20 -10
  106. package/dist/phases/statistics/StatisticsPhase.js +7 -2
  107. package/dist/phases/statistics/methods/BollingerStatistic.d.ts +1 -1
  108. package/dist/phases/statistics/methods/BollingerStatistic.js +13 -11
  109. package/dist/phases/statistics/methods/BoxStatistic.d.ts +1 -1
  110. package/dist/phases/statistics/methods/BoxStatistic.js +14 -12
  111. package/dist/phases/statistics/methods/Density2dStatistic.d.ts +1 -1
  112. package/dist/phases/statistics/methods/Density2dStatistic.js +13 -11
  113. package/dist/phases/statistics/methods/DensityStatistic.d.ts +1 -1
  114. package/dist/phases/statistics/methods/DensityStatistic.js +11 -9
  115. package/dist/phases/statistics/methods/DeviationStatistic.d.ts +8 -0
  116. package/dist/phases/statistics/methods/DeviationStatistic.js +111 -0
  117. package/dist/phases/statistics/methods/MovingAverageStatistic.d.ts +1 -1
  118. package/dist/phases/statistics/methods/MovingAverageStatistic.js +11 -9
  119. package/dist/phases/statistics/methods/RegressionStatistic.d.ts +1 -1
  120. package/dist/phases/statistics/methods/RegressionStatistic.js +16 -14
  121. package/dist/phases/transforms/ProcessedPositions.js +1 -1
  122. package/dist/phases/transforms/TransformsPhase.js +49 -3
  123. package/dist/phases/transforms/ValueSelection.d.ts +30 -0
  124. package/dist/phases/transforms/ValueSelection.js +53 -0
  125. package/dist/plots/{heatmap → correlation/heatmap}/Plot.svelte +5 -2
  126. package/dist/plots/{heatmap → correlation/heatmap}/Plot.svelte.d.ts +2 -2
  127. package/dist/plots/{heatmap → correlation/heatmap}/defaults.d.ts +2 -2
  128. package/dist/plots/{heatmap → correlation/heatmap}/defaults.js +5 -5
  129. package/dist/plots/{heatmap → correlation/heatmap}/markers.d.ts +4 -4
  130. package/dist/plots/{heatmap → correlation/heatmap}/markers.js +3 -3
  131. package/dist/plots/{scatter → correlation/scatter}/Plot.svelte +5 -2
  132. package/dist/plots/{scatter → correlation/scatter}/Plot.svelte.d.ts +2 -2
  133. package/dist/plots/{scatter → correlation/scatter}/defaults.d.ts +2 -2
  134. package/dist/plots/{scatter → correlation/scatter}/defaults.js +4 -4
  135. package/dist/plots/{scatter → correlation/scatter}/markers.d.ts +4 -4
  136. package/dist/plots/{scatter → correlation/scatter}/markers.js +3 -3
  137. package/dist/plots/{box → distribution/box}/BoxSummaries.d.ts +2 -2
  138. package/dist/plots/{box → distribution/box}/BoxSummaries.js +6 -6
  139. package/dist/plots/{box → distribution/box}/Plot.svelte +2 -2
  140. package/dist/plots/{box → distribution/box}/Plot.svelte.d.ts +2 -2
  141. package/dist/plots/{box → distribution/box}/defaults.d.ts +2 -2
  142. package/dist/plots/{box → distribution/box}/defaults.js +1 -1
  143. package/dist/plots/{box → distribution/box}/markers.d.ts +2 -2
  144. package/dist/plots/distribution/density/Plot.svelte +45 -0
  145. package/dist/plots/distribution/density/Plot.svelte.d.ts +26 -0
  146. package/dist/plots/distribution/density/defaults.d.ts +9 -0
  147. package/dist/plots/distribution/density/defaults.js +29 -0
  148. package/dist/plots/distribution/density/markers.d.ts +9 -0
  149. package/dist/plots/distribution/density/markers.js +42 -0
  150. package/dist/plots/{histogram → distribution/histogram}/Plot.svelte +2 -2
  151. package/dist/plots/{histogram → distribution/histogram}/Plot.svelte.d.ts +2 -2
  152. package/dist/plots/{histogram → distribution/histogram}/defaults.d.ts +2 -2
  153. package/dist/plots/{histogram → distribution/histogram}/defaults.js +3 -3
  154. package/dist/plots/{histogram → distribution/histogram}/markers.d.ts +3 -3
  155. package/dist/plots/{histogram → distribution/histogram}/markers.js +5 -5
  156. package/dist/plots/{pyramid → distribution/pyramid}/Plot.svelte +5 -2
  157. package/dist/plots/{pyramid → distribution/pyramid}/Plot.svelte.d.ts +2 -2
  158. package/dist/plots/{pyramid → distribution/pyramid}/defaults.d.ts +2 -2
  159. package/dist/plots/{pyramid → distribution/pyramid}/defaults.js +6 -6
  160. package/dist/plots/{pyramid → distribution/pyramid}/markers.d.ts +4 -4
  161. package/dist/plots/{pyramid → distribution/pyramid}/markers.js +6 -6
  162. package/dist/plots/distribution/violin/Plot.svelte +45 -0
  163. package/dist/plots/distribution/violin/Plot.svelte.d.ts +26 -0
  164. package/dist/plots/distribution/violin/defaults.d.ts +10 -0
  165. package/dist/plots/distribution/violin/defaults.js +58 -0
  166. package/dist/plots/distribution/violin/markers.d.ts +10 -0
  167. package/dist/plots/distribution/violin/markers.js +71 -0
  168. package/dist/plots/{area → evolution/area}/Plot.svelte +2 -2
  169. package/dist/plots/{area → evolution/area}/Plot.svelte.d.ts +2 -2
  170. package/dist/plots/{area → evolution/area}/defaults.d.ts +2 -2
  171. package/dist/plots/{area → evolution/area}/defaults.js +2 -0
  172. package/dist/plots/{area → evolution/area}/markers.d.ts +2 -2
  173. package/dist/plots/{area → evolution/area}/markers.js +1 -1
  174. package/dist/plots/{line → evolution/line}/Plot.svelte +2 -2
  175. package/dist/plots/{line → evolution/line}/Plot.svelte.d.ts +2 -2
  176. package/dist/plots/{line → evolution/line}/defaults.d.ts +2 -2
  177. package/dist/plots/{line → evolution/line}/defaults.js +2 -0
  178. package/dist/plots/{line → evolution/line}/markers.d.ts +11 -8
  179. package/dist/plots/{line → evolution/line}/markers.js +6 -4
  180. package/dist/plots/evolution/slope/Plot.svelte +42 -0
  181. package/dist/plots/evolution/slope/Plot.svelte.d.ts +26 -0
  182. package/dist/plots/evolution/slope/defaults.d.ts +8 -0
  183. package/dist/plots/evolution/slope/defaults.js +31 -0
  184. package/dist/plots/evolution/slope/markers.d.ts +16 -0
  185. package/dist/plots/evolution/slope/markers.js +79 -0
  186. package/dist/plots/evolution/sparkline/Plot.svelte +45 -0
  187. package/dist/plots/evolution/sparkline/Plot.svelte.d.ts +26 -0
  188. package/dist/plots/evolution/sparkline/defaults.d.ts +7 -0
  189. package/dist/plots/evolution/sparkline/defaults.js +23 -0
  190. package/dist/plots/evolution/sparkline/markers.d.ts +7 -0
  191. package/dist/plots/evolution/sparkline/markers.js +56 -0
  192. package/dist/plots/{geo → map/geo}/Core.svelte +11 -10
  193. package/dist/plots/{geo → map/geo}/Core.svelte.d.ts +1 -1
  194. package/dist/plots/map/geo/GeoFeatures.svelte.d.ts +9 -0
  195. package/dist/plots/map/geo/GeoFeatures.svelte.js +55 -0
  196. package/dist/plots/map/geo/GeoGeometry.d.ts +27 -0
  197. package/dist/plots/map/geo/GeoGeometry.js +142 -0
  198. package/dist/plots/map/geo/GeoSegments.d.ts +16 -0
  199. package/dist/plots/map/geo/GeoSegments.js +23 -0
  200. package/dist/plots/{geo → map/geo}/Plot.svelte +10 -10
  201. package/dist/plots/{geo → map/geo}/Plot.svelte.d.ts +2 -2
  202. package/dist/plots/{geo → map/geo}/defaults.d.ts +2 -2
  203. package/dist/plots/{geo → map/geo}/defaults.js +1 -1
  204. package/dist/plots/{geo → map/geo}/phases/data.d.ts +1 -1
  205. package/dist/plots/{geo → map/geo}/phases/data.js +7 -6
  206. package/dist/plots/{geo → map/geo}/phases/hover.d.ts +1 -1
  207. package/dist/plots/{geo → map/geo}/phases/hover.js +2 -2
  208. package/dist/plots/{geo → map/geo}/phases/markers.d.ts +1 -1
  209. package/dist/plots/{geo → map/geo}/phases/markers.js +6 -10
  210. package/dist/plots/{geo → map/geo}/phases/scales.d.ts +2 -2
  211. package/dist/plots/{geo → map/geo}/phases/scales.js +28 -12
  212. package/dist/plots/{geo → map/geo}/phases/tooltip.d.ts +1 -1
  213. package/dist/plots/map/geo/phases/tooltip.js +5 -0
  214. package/dist/plots/{geo → map/geo}/slices.d.ts +2 -2
  215. package/dist/plots/{geo → map/geo}/slices.js +2 -2
  216. package/dist/plots/{bar → ranking/bar}/Plot.svelte +2 -2
  217. package/dist/plots/{bar → ranking/bar}/Plot.svelte.d.ts +2 -2
  218. package/dist/plots/ranking/bar/defaults.d.ts +16 -0
  219. package/dist/plots/{bar → ranking/bar}/defaults.js +15 -9
  220. package/dist/plots/{bar → ranking/bar}/markers.d.ts +8 -8
  221. package/dist/plots/{bar → ranking/bar}/markers.js +8 -17
  222. package/dist/plots/ranking/bullet/Plot.svelte +42 -0
  223. package/dist/plots/ranking/bullet/Plot.svelte.d.ts +26 -0
  224. package/dist/plots/ranking/bullet/defaults.d.ts +8 -0
  225. package/dist/plots/ranking/bullet/defaults.js +24 -0
  226. package/dist/plots/ranking/bullet/markers.d.ts +10 -0
  227. package/dist/plots/ranking/bullet/markers.js +90 -0
  228. package/dist/plots/ranking/cleveland/ClevelandConnector.d.ts +48 -0
  229. package/dist/plots/ranking/cleveland/ClevelandConnector.js +140 -0
  230. package/dist/plots/ranking/cleveland/ClevelandMarkers.d.ts +33 -0
  231. package/dist/plots/ranking/cleveland/ClevelandMarkers.js +375 -0
  232. package/dist/plots/ranking/cleveland/ClevelandRanges.d.ts +31 -0
  233. package/dist/plots/ranking/cleveland/ClevelandRanges.js +116 -0
  234. package/dist/plots/ranking/cleveland/Plot.svelte +45 -0
  235. package/dist/plots/ranking/cleveland/Plot.svelte.d.ts +26 -0
  236. package/dist/plots/ranking/cleveland/defaults.d.ts +13 -0
  237. package/dist/plots/ranking/cleveland/defaults.js +66 -0
  238. package/dist/plots/ranking/dumbbell/Plot.svelte +45 -0
  239. package/dist/plots/ranking/dumbbell/Plot.svelte.d.ts +26 -0
  240. package/dist/plots/ranking/dumbbell/defaults.d.ts +9 -0
  241. package/dist/plots/ranking/dumbbell/defaults.js +19 -0
  242. package/dist/plots/ranking/forest/Plot.svelte +42 -0
  243. package/dist/plots/ranking/forest/Plot.svelte.d.ts +26 -0
  244. package/dist/plots/ranking/forest/defaults.d.ts +11 -0
  245. package/dist/plots/ranking/forest/defaults.js +20 -0
  246. package/dist/plots/ranking/lollipop/Plot.svelte +45 -0
  247. package/dist/plots/ranking/lollipop/Plot.svelte.d.ts +26 -0
  248. package/dist/plots/ranking/lollipop/defaults.d.ts +9 -0
  249. package/dist/plots/ranking/lollipop/defaults.js +18 -0
  250. package/dist/plots/utils/RowNumbers.d.ts +16 -0
  251. package/dist/plots/utils/RowNumbers.js +24 -0
  252. package/dist/plots/utils/gaps.js +1 -1
  253. package/dist/plots/utils/segments.js +1 -1
  254. package/dist/types/configuration/styling.d.ts +276 -143
  255. package/dist/types/layout/coordinates.d.ts +5 -4
  256. package/dist/types/layout/legend.d.ts +21 -5
  257. package/dist/types/layout/plot.d.ts +44 -1
  258. package/dist/types/layout/scales.d.ts +39 -7
  259. package/dist/types/layout/statistics/deviation.d.ts +40 -0
  260. package/dist/types/layout/statistics/index.d.ts +7 -2
  261. package/dist/types/layout/styles/base.d.ts +18 -0
  262. package/dist/types/layout/styles/bullet.d.ts +25 -0
  263. package/dist/types/layout/styles/connector.d.ts +98 -0
  264. package/dist/types/layout/styles/curve.d.ts +11 -0
  265. package/dist/types/layout/styles/frame.d.ts +17 -0
  266. package/dist/types/layout/styles/gaps.d.ts +12 -0
  267. package/dist/types/layout/styles/geo.d.ts +55 -0
  268. package/dist/types/layout/styles/index.d.ts +8 -0
  269. package/dist/types/layout/styles/index.js +8 -0
  270. package/dist/types/layout/styles/values.d.ts +47 -0
  271. package/dist/types/layout/timeline.d.ts +5 -2
  272. package/dist/types/layout/tooltip.d.ts +6 -2
  273. package/dist/types/markers/axis/area.d.ts +2 -2
  274. package/dist/types/markers/axis/arrow.d.ts +3 -0
  275. package/dist/types/markers/axis/axisBasedMarkersConfig.d.ts +2 -1
  276. package/dist/types/markers/axis/bar.d.ts +1 -1
  277. package/dist/types/markers/axis/box.d.ts +5 -0
  278. package/dist/types/markers/axis/difference.d.ts +2 -2
  279. package/dist/types/markers/axis/image.d.ts +3 -2
  280. package/dist/types/markers/axis/line.d.ts +2 -0
  281. package/dist/types/markers/axis/rule.d.ts +9 -0
  282. package/dist/types/markers/axis/trail.d.ts +2 -3
  283. package/dist/types/markers/axis/violin.d.ts +25 -0
  284. package/dist/types/markers/basic/dot.d.ts +3 -2
  285. package/dist/types/markers/basic/text.d.ts +13 -3
  286. package/dist/types/markers/channels/commonMarkerConfig.d.ts +7 -3
  287. package/dist/types/markers/channels/commonMarkerConfigWithRowOffset.d.ts +13 -0
  288. package/dist/types/markers/common.d.ts +1 -1
  289. package/dist/types/markers/common.js +1 -0
  290. package/dist/types/markers/geo/link.d.ts +5 -1
  291. package/dist/types/phases/index.d.ts +1 -1
  292. package/dist/types/phases/scales/phase.d.ts +5 -1
  293. package/dist/types/phases/state.d.ts +15 -2
  294. package/dist/types/phases/statistics/source.d.ts +3 -1
  295. package/dist/types/phases/transforms/phase.d.ts +22 -0
  296. package/dist/types/plots/{heatmap → correlation/heatmap}/props.d.ts +6 -6
  297. package/dist/types/plots/{heatmap → correlation/heatmap}/state.d.ts +4 -4
  298. package/dist/types/plots/{scatter → correlation/scatter}/props.d.ts +6 -6
  299. package/dist/types/plots/{scatter → correlation/scatter}/state.d.ts +2 -2
  300. package/dist/types/plots/{box → distribution/box}/props.d.ts +6 -6
  301. package/dist/types/plots/{box → distribution/box}/state.d.ts +3 -3
  302. package/dist/types/plots/distribution/density/props.d.ts +23 -0
  303. package/dist/types/plots/distribution/density/state.d.ts +6 -0
  304. package/dist/types/plots/{histogram → distribution/histogram}/props.d.ts +7 -7
  305. package/dist/types/plots/{histogram → distribution/histogram}/state.d.ts +2 -2
  306. package/dist/types/plots/distribution/histogram/state.js +1 -0
  307. package/dist/types/plots/{pyramid → distribution/pyramid}/props.d.ts +6 -6
  308. package/dist/types/plots/distribution/pyramid/props.js +1 -0
  309. package/dist/types/plots/{pyramid → distribution/pyramid}/state.d.ts +3 -3
  310. package/dist/types/plots/distribution/pyramid/state.js +1 -0
  311. package/dist/types/plots/distribution/violin/props.d.ts +23 -0
  312. package/dist/types/plots/distribution/violin/props.js +1 -0
  313. package/dist/types/plots/distribution/violin/state.d.ts +6 -0
  314. package/dist/types/plots/distribution/violin/state.js +1 -0
  315. package/dist/types/plots/{area → evolution/area}/props.d.ts +6 -6
  316. package/dist/types/plots/evolution/area/props.js +1 -0
  317. package/dist/types/plots/{area → evolution/area}/state.d.ts +2 -2
  318. package/dist/types/plots/evolution/area/state.js +1 -0
  319. package/dist/types/plots/evolution/line/props.d.ts +10 -0
  320. package/dist/types/plots/evolution/line/props.js +1 -0
  321. package/dist/types/plots/{line → evolution/line}/state.d.ts +3 -3
  322. package/dist/types/plots/evolution/line/state.js +1 -0
  323. package/dist/types/plots/evolution/slope/props.d.ts +5 -0
  324. package/dist/types/plots/evolution/slope/props.js +1 -0
  325. package/dist/types/plots/evolution/slope/state.d.ts +5 -0
  326. package/dist/types/plots/evolution/slope/state.js +1 -0
  327. package/dist/types/plots/evolution/sparkline/props.d.ts +5 -0
  328. package/dist/types/plots/evolution/sparkline/props.js +1 -0
  329. package/dist/types/plots/evolution/sparkline/state.d.ts +5 -0
  330. package/dist/types/plots/evolution/sparkline/state.js +1 -0
  331. package/dist/types/plots/{geo → map/geo}/props.d.ts +8 -8
  332. package/dist/types/plots/map/geo/props.js +1 -0
  333. package/dist/types/plots/{geo → map/geo}/state.d.ts +18 -11
  334. package/dist/types/plots/map/geo/state.js +1 -0
  335. package/dist/types/plots/props.d.ts +1 -1
  336. package/dist/types/plots/{bar → ranking/bar}/props.d.ts +6 -6
  337. package/dist/types/plots/ranking/bar/props.js +1 -0
  338. package/dist/types/plots/{bar → ranking/bar}/state.d.ts +2 -2
  339. package/dist/types/plots/ranking/bar/state.js +1 -0
  340. package/dist/types/plots/ranking/bullet/props.d.ts +22 -0
  341. package/dist/types/plots/ranking/bullet/props.js +1 -0
  342. package/dist/types/plots/ranking/bullet/state.d.ts +5 -0
  343. package/dist/types/plots/ranking/bullet/state.js +1 -0
  344. package/dist/types/plots/ranking/cleveland/props.d.ts +10 -0
  345. package/dist/types/plots/ranking/cleveland/props.js +1 -0
  346. package/dist/types/plots/ranking/cleveland/state.d.ts +49 -0
  347. package/dist/types/plots/ranking/cleveland/state.js +1 -0
  348. package/dist/types/plots/ranking/dumbbell/props.d.ts +10 -0
  349. package/dist/types/plots/ranking/dumbbell/props.js +1 -0
  350. package/dist/types/plots/ranking/dumbbell/state.d.ts +5 -0
  351. package/dist/types/plots/ranking/dumbbell/state.js +1 -0
  352. package/dist/types/plots/ranking/forest/props.d.ts +23 -0
  353. package/dist/types/plots/ranking/forest/props.js +1 -0
  354. package/dist/types/plots/ranking/forest/state.d.ts +5 -0
  355. package/dist/types/plots/ranking/forest/state.js +1 -0
  356. package/dist/types/plots/ranking/lollipop/props.d.ts +10 -0
  357. package/dist/types/plots/ranking/lollipop/props.js +1 -0
  358. package/dist/types/plots/ranking/lollipop/state.d.ts +5 -0
  359. package/dist/types/plots/ranking/lollipop/state.js +1 -0
  360. package/dist/types/plots/segments/common.d.ts +4 -1
  361. package/dist/utils/OpacityScale.d.ts +14 -0
  362. package/dist/utils/OpacityScale.js +43 -0
  363. package/dist/utils/{symbol.d.ts → SymbolPath.d.ts} +0 -12
  364. package/dist/utils/{symbol.js → SymbolPath.js} +0 -24
  365. package/dist/utils/SymbolScale.d.ts +18 -0
  366. package/dist/utils/SymbolScale.js +29 -0
  367. package/dist/utils/color/ColorRamp.d.ts +27 -0
  368. package/dist/utils/color/ColorRamp.js +120 -0
  369. package/dist/utils/color/CssColor.d.ts +19 -0
  370. package/dist/utils/color/CssColor.js +114 -0
  371. package/dist/utils/color/Palette.d.ts +21 -0
  372. package/dist/utils/color/Palette.js +52 -0
  373. package/dist/utils/color/index.d.ts +11 -3
  374. package/dist/utils/color/index.js +14 -3
  375. package/dist/utils/grouping.js +1 -1
  376. package/docs/architecture.md +1 -1
  377. package/docs/chrome.md +2 -2
  378. package/docs/composer.md +2 -2
  379. package/docs/concepts.md +1 -1
  380. package/docs/development.md +1 -1
  381. package/docs/facets.md +3 -3
  382. package/docs/getting-started.md +2 -2
  383. package/docs/legend.md +13 -11
  384. package/docs/markers.md +29 -27
  385. package/docs/plots/correlation/heatmap.md +26 -0
  386. package/docs/plots/correlation/scatter.md +35 -0
  387. package/docs/plots/distribution/box.md +28 -0
  388. package/docs/plots/distribution/density.md +26 -0
  389. package/docs/plots/distribution/histogram.md +33 -0
  390. package/docs/plots/distribution/pyramid.md +31 -0
  391. package/docs/plots/distribution/violin.md +35 -0
  392. package/docs/plots/evolution/area.md +32 -0
  393. package/docs/plots/evolution/line.md +93 -0
  394. package/docs/plots/evolution/slope.md +39 -0
  395. package/docs/plots/evolution/sparkline.md +34 -0
  396. package/docs/plots/ranking/bar.md +59 -0
  397. package/docs/plots/ranking/bullet.md +37 -0
  398. package/docs/plots/ranking/cleveland.md +54 -0
  399. package/docs/plots/ranking/dumbbell.md +39 -0
  400. package/docs/plots/ranking/forest.md +40 -0
  401. package/docs/plots/ranking/lollipop.md +39 -0
  402. package/docs/plots.md +22 -280
  403. package/docs/scales.md +30 -24
  404. package/docs/styles-and-segments.md +24 -21
  405. package/docs/theming.md +23 -20
  406. package/docs/timeline.md +3 -3
  407. package/docs/tooltip-and-hover.md +10 -10
  408. package/docs/transforms-and-statistics.md +13 -12
  409. package/examples/BarValues.svelte +1 -1
  410. package/examples/Box.svelte +1 -1
  411. package/examples/Bullet.svelte +17 -0
  412. package/examples/Chrome.svelte +1 -1
  413. package/examples/ChromeOrder.svelte +1 -1
  414. package/examples/Cleveland.svelte +15 -0
  415. package/examples/Composer.svelte +2 -2
  416. package/examples/CustomTooltip.svelte +1 -1
  417. package/examples/Density.svelte +7 -0
  418. package/examples/Dumbbell.svelte +16 -0
  419. package/examples/Facets.svelte +1 -1
  420. package/examples/FacetsCarousel.svelte +1 -1
  421. package/examples/FacetsRowsCols.svelte +1 -1
  422. package/examples/FirstPlot.svelte +1 -1
  423. package/examples/Forest.svelte +17 -0
  424. package/examples/Gaps.svelte +2 -2
  425. package/examples/GroupedBars.svelte +1 -1
  426. package/examples/Heatmap.svelte +3 -3
  427. package/examples/HeatmapSegments.svelte +8 -8
  428. package/examples/Histogram.svelte +1 -1
  429. package/examples/HorizontalBars.svelte +1 -1
  430. package/examples/LegendSections.svelte +1 -1
  431. package/examples/LegendToggle.svelte +1 -1
  432. package/examples/LineByRegion.svelte +1 -1
  433. package/examples/LineDates.svelte +1 -1
  434. package/examples/LineStep.svelte +16 -0
  435. package/examples/LineStepSegment.svelte +18 -0
  436. package/examples/Lollipop.svelte +17 -0
  437. package/examples/Markers.svelte +1 -1
  438. package/examples/MovingAverage.svelte +1 -1
  439. package/examples/Pyramid.svelte +9 -2
  440. package/examples/Regression.svelte +2 -2
  441. package/examples/ResponsiveLine.svelte +1 -1
  442. package/examples/Scales.svelte +1 -1
  443. package/examples/Scatter.svelte +2 -2
  444. package/examples/SegmentHighlight.svelte +1 -1
  445. package/examples/Segments.svelte +1 -1
  446. package/examples/SegmentsBySeries.svelte +1 -1
  447. package/examples/Slope.svelte +17 -0
  448. package/examples/Sparkline.svelte +14 -0
  449. package/examples/StackedArea.svelte +1 -1
  450. package/examples/StackedBars.svelte +1 -1
  451. package/examples/TimelinePlayer.svelte +1 -1
  452. package/examples/TimelineRule.svelte +1 -1
  453. package/examples/Tooltip.svelte +1 -1
  454. package/examples/ValueLabels.svelte +1 -1
  455. package/examples/Violin.svelte +14 -0
  456. package/examples/datasets/argentina-chile-trends.ts +34 -0
  457. package/examples/datasets/commodity-prices.ts +48 -0
  458. package/examples/datasets/countries-over-time.ts +368 -0
  459. package/examples/datasets/daily-temperature.ts +121 -0
  460. package/examples/datasets/earthquakes.ts +977 -0
  461. package/examples/datasets/flight-routes.ts +29 -0
  462. package/examples/datasets/height-density.ts +37 -0
  463. package/examples/datasets/heights.ts +370 -0
  464. package/examples/datasets/index.ts +24 -0
  465. package/examples/datasets/inflation-by-region.ts +44 -0
  466. package/examples/datasets/inflation-ranges.ts +34 -0
  467. package/examples/datasets/iris-flower.ts +207 -0
  468. package/examples/datasets/life-expectancy.ts +95 -0
  469. package/examples/datasets/napoleons-march.ts +182 -0
  470. package/examples/datasets/penguins.ts +54 -0
  471. package/examples/datasets/population-by-age-with-gaps.ts +23 -0
  472. package/examples/datasets/population-by-age.ts +890 -0
  473. package/examples/datasets/province-population.ts +521 -0
  474. package/examples/datasets/stock-prices.ts +63 -0
  475. package/examples/datasets/weather-stations-over-time.ts +31 -0
  476. package/examples/datasets/weather-stations.ts +22 -0
  477. package/examples/datasets/wind-vectors.ts +30 -0
  478. package/examples/datasets/world-temperature.ts +400 -0
  479. package/llms-full.txt +22 -11
  480. package/llms.txt +32 -4
  481. package/package.json +10 -1
  482. package/dist/plots/bar/defaults.d.ts +0 -9
  483. package/dist/plots/geo/features.svelte.d.ts +0 -5
  484. package/dist/plots/geo/features.svelte.js +0 -44
  485. package/dist/plots/geo/phases/tooltip.js +0 -5
  486. package/dist/plots/utils/geoAccessors.d.ts +0 -72
  487. package/dist/plots/utils/geoAccessors.js +0 -220
  488. package/dist/plots/utils/geoSegments.d.ts +0 -29
  489. package/dist/plots/utils/geoSegments.js +0 -37
  490. package/dist/types/layout/styles.d.ts +0 -122
  491. package/dist/types/markers/axis/curveName.d.ts +0 -2
  492. package/dist/types/plots/line/props.d.ts +0 -10
  493. package/dist/utils/color/contrast.d.ts +0 -9
  494. package/dist/utils/color/contrast.js +0 -40
  495. package/dist/utils/color/cssColor.d.ts +0 -4
  496. package/dist/utils/color/cssColor.js +0 -77
  497. package/dist/utils/color/ramp.d.ts +0 -17
  498. package/dist/utils/color/ramp.js +0 -110
  499. package/dist/utils/opacity.d.ts +0 -9
  500. package/dist/utils/opacity.js +0 -38
  501. package/examples/data.ts +0 -324
  502. /package/dist/plots/{box → distribution/box}/markers.js +0 -0
  503. /package/dist/types/layout/{styles.js → statistics/deviation.js} +0 -0
  504. /package/dist/types/{markers/axis/curveName.js → layout/styles/base.js} +0 -0
  505. /package/dist/types/{plots/area/props.js → layout/styles/bullet.js} +0 -0
  506. /package/dist/types/{plots/area/state.js → layout/styles/connector.js} +0 -0
  507. /package/dist/types/{plots/bar/props.js → layout/styles/curve.js} +0 -0
  508. /package/dist/types/{plots/bar/state.js → layout/styles/frame.js} +0 -0
  509. /package/dist/types/{plots/box/props.js → layout/styles/gaps.js} +0 -0
  510. /package/dist/types/{plots/box/state.js → layout/styles/geo.js} +0 -0
  511. /package/dist/types/{plots/geo/props.js → layout/styles/values.js} +0 -0
  512. /package/dist/types/{plots/geo/state.js → markers/axis/violin.js} +0 -0
  513. /package/dist/types/{plots/heatmap/props.js → markers/channels/commonMarkerConfigWithRowOffset.js} +0 -0
  514. /package/dist/types/plots/{histogram → correlation/heatmap}/props.js +0 -0
  515. /package/dist/types/plots/{heatmap → correlation/heatmap}/state.js +0 -0
  516. /package/dist/types/plots/{line → correlation/scatter}/props.js +0 -0
  517. /package/dist/types/plots/{histogram → correlation/scatter}/state.js +0 -0
  518. /package/dist/types/plots/{pyramid → distribution/box}/props.js +0 -0
  519. /package/dist/types/plots/{line → distribution/box}/state.js +0 -0
  520. /package/dist/types/plots/{scatter → distribution/density}/props.js +0 -0
  521. /package/dist/types/plots/{pyramid → distribution/density}/state.js +0 -0
  522. /package/dist/types/plots/{scatter/state.js → distribution/histogram/props.js} +0 -0
  523. /package/dist/{plots/utils → utils}/accessors.d.ts +0 -0
  524. /package/dist/{plots/utils → utils}/accessors.js +0 -0
@@ -1,5 +1,5 @@
1
- import Plot from '../../layout/plot/Plot.svelte';
2
- import type { BarPlotProps } from '../../types/plots/bar/props';
1
+ import Plot from '../../../layout/plot/Plot.svelte';
2
+ import type { BarPlotProps } from '../../../types/plots/ranking/bar/props';
3
3
  declare function $$render<TData extends Record<string, unknown>>(): {
4
4
  props: BarPlotProps<TData>;
5
5
  exports: {};
@@ -0,0 +1,16 @@
1
+ import type { AxisPlotDefaults } from '../../../types/phases';
2
+ import type { AxisScale } from '../../../types/layout/scales';
3
+ import type { BarPlotState, BarPlotCtx } from '../../../types/plots/ranking/bar/state';
4
+ /**
5
+ * The domain a bar plot fits to its own bars on its value axis: from zero to
6
+ * the tallest span (and the `extra` values a plot draws beyond its bars), niced to as many ticks as fit the plot. Left out when the
7
+ * author pins the axis, and when there is no span to fit.
8
+ */
9
+ export declare function fitValueDomain<TData extends Record<string, unknown>>(state: BarPlotState<TData>, extra?: readonly number[]): Partial<Record<'x' | 'y', Partial<AxisScale<TData>>>>;
10
+ /**
11
+ * BarPlot on the shared pipeline: discrete bars with gap fills along one
12
+ * category axis - `x`, or `y` for horizontal bars, as the "data" phase reads
13
+ * it off the values - its own scales (padding, bar layout) and markers.
14
+ * Its plot defaults to: hover along the category axis, timeline tweens matched per category and group.
15
+ */
16
+ export declare function buildBarDefaults<TData extends Record<string, unknown>>(): AxisPlotDefaults<BarPlotState<TData>, BarPlotCtx>;
@@ -1,23 +1,27 @@
1
- import { ProcessedPositions } from '../../phases/transforms/ProcessedPositions';
1
+ import { ProcessedPositions } from '../../../phases/transforms/ProcessedPositions';
2
2
  import { buildMarks, buildValueLabels, buildHitAreas, buildBarGeometry } from './markers';
3
- import { NiceTicks } from '../../layout/scales/NiceTicks';
4
- import { SERIES_KEY } from '../../phases/transforms/TransformsPhase';
5
- import { PlotAxes } from '../../phases/data/PlotAxes';
3
+ import { NiceTicks } from '../../../layout/scales/NiceTicks';
4
+ import { SERIES_KEY } from '../../../phases/transforms/TransformsPhase';
5
+ import { PlotAxes } from '../../../phases/data/PlotAxes';
6
6
  /**
7
7
  * The domain a bar plot fits to its own bars on its value axis: from zero to
8
- * the tallest span, niced to as many ticks as fit the plot. Left out when the
8
+ * the tallest span (and the `extra` values a plot draws beyond its bars), niced to as many ticks as fit the plot. Left out when the
9
9
  * author pins the axis, and when there is no span to fit.
10
10
  */
11
- function fitValueDomain(state) {
11
+ export function fitValueDomain(state, extra = []) {
12
12
  const axis = PlotAxes.valueOf(state);
13
13
  const scale = state.scales[axis];
14
- if (scale?.domain != null || scale?.ticks != null || scale?.nice != null)
14
+ if (scale?.domain != null || scale?.ticks != null || typeof scale?.nice === 'boolean')
15
15
  return {};
16
16
  // Every bar's span, as the "transforms" phase left it - its baseline is
17
17
  // unknown until the domain is, so a plain bar reads as reaching from zero.
18
18
  const { of: spanOf } = ProcessedPositions.span(state.processedData, axis);
19
19
  let lo = 0;
20
20
  let hi = 0;
21
+ for (const value of extra) {
22
+ lo = Math.min(lo, value);
23
+ hi = Math.max(hi, value);
24
+ }
21
25
  for (const row of state.processedData?.data ?? []) {
22
26
  const span = spanOf(row);
23
27
  if (!span)
@@ -27,7 +31,9 @@ function fitValueDomain(state) {
27
31
  }
28
32
  if (hi <= lo)
29
33
  return {};
30
- return { [axis]: { domain: NiceTicks.fit(state, axis, lo, hi, scale?.niceTolerance) } };
34
+ return {
35
+ [axis]: { domain: NiceTicks.fit(state, axis, lo, hi, NiceTicks.toleranceOf(scale?.nice)) }
36
+ };
31
37
  }
32
38
  /**
33
39
  * BarPlot on the shared pipeline: discrete bars with gap fills along one
@@ -46,7 +52,7 @@ export function buildBarDefaults() {
46
52
  defaults: (_state, ctx) => ({
47
53
  category: { paddingInner: ctx.cfg.bar.paddingInner, paddingOuter: ctx.cfg.bar.paddingOuter }
48
54
  }),
49
- fit: fitValueDomain
55
+ fit: (state) => fitValueDomain(state)
50
56
  },
51
57
  styles: {
52
58
  values: {
@@ -1,11 +1,11 @@
1
- import type { BarMarkerConfig, TextMarkerConfig } from '../../types/markers/common';
2
- import type { BarPlotState, BarPlotCtx } from '../../types/plots/bar/state';
3
- import type { ProcessedRow } from '../../types/phases';
4
- import type { AxisValue } from '../../types/layout/mapping';
5
- import type { BandSlice } from '../../types/layout/hover';
6
- import type { HoverConfig } from '../../types/plots/props';
7
- import { ValueLabels } from '../../layout/styles/ValueLabels';
8
- import type { AxisBasedMarkersConfig } from '../../types/markers/common';
1
+ import type { BarMarkerConfig, TextMarkerConfig } from '../../../types/markers/common';
2
+ import type { BarPlotState, BarPlotCtx } from '../../../types/plots/ranking/bar/state';
3
+ import type { ProcessedRow } from '../../../types/phases';
4
+ import type { AxisValue } from '../../../types/layout/mapping';
5
+ import type { BandSlice } from '../../../types/layout/hover';
6
+ import type { HoverConfig } from '../../../types/plots/props';
7
+ import { ValueLabels } from '../../../layout/styles/ValueLabels';
8
+ import type { AxisBasedMarkersConfig } from '../../../types/markers/common';
9
9
  /**
10
10
  * Where a bar plot's bars sit, read off the state its phases leave: each
11
11
  * processed row's category and span along the value axis, whether the series
@@ -1,10 +1,10 @@
1
- import { ProcessedPositions } from '../../phases/transforms/ProcessedPositions';
2
- import { getConfiguration } from '../../configuration/config.svelte';
3
- import { GAP_KIND, GAP_VALUE, SERIES_ID_KEY } from '../../phases/transforms/TransformsPhase';
4
- import { seriesIdOf } from '../../utils/grouping';
5
- import { resolveGapAreaStyle } from '../utils/gaps';
6
- import { PlotAxes } from '../../phases/data/PlotAxes';
7
- import { ValueLabels } from '../../layout/styles/ValueLabels';
1
+ import { ProcessedPositions } from '../../../phases/transforms/ProcessedPositions';
2
+ import { getConfiguration } from '../../../configuration/config.svelte';
3
+ import { GAP_KIND, GAP_VALUE, SERIES_ID_KEY } from '../../../phases/transforms/TransformsPhase';
4
+ import { seriesIdOf } from '../../../utils/grouping';
5
+ import { resolveGapAreaStyle } from '../../utils/gaps';
6
+ import { PlotAxes } from '../../../phases/data/PlotAxes';
7
+ import { ValueLabels } from '../../../layout/styles/ValueLabels';
8
8
  const GAP_KINDS = ['start', 'middle', 'end'];
9
9
  /**
10
10
  * Where a bar plot's bars sit, read off the state its phases leave: each
@@ -15,16 +15,7 @@ const GAP_KINDS = ['start', 'middle', 'end'];
15
15
  export function buildBarGeometry(state, seriesPadding) {
16
16
  const valueAxis = PlotAxes.valueOf(state);
17
17
  const categoryAxis = PlotAxes.categoryOf(state);
18
- const domain = state.scales[valueAxis]?.domain;
19
- // Bars rise from zero, or from the nearest end of a domain that leaves it out.
20
- const baseline = (() => {
21
- const lo = Number(domain?.[0]);
22
- const hi = Number(domain?.[(domain?.length ?? 1) - 1]);
23
- if (!domain || domain.length < 2 || Number.isNaN(lo) || Number.isNaN(hi))
24
- return 0;
25
- const [min, max] = [Math.min(lo, hi), Math.max(lo, hi)];
26
- return min > 0 ? min : max < 0 ? max : 0;
27
- })();
18
+ const baseline = PlotAxes.baselineOf(state);
28
19
  const { stacked, of: spanOf } = ProcessedPositions.span(state.processedData, valueAxis, baseline);
29
20
  const position = ProcessedPositions.of(state.processedData, valueAxis);
30
21
  const categoryOf = (row) => position[categoryAxis](row);
@@ -0,0 +1,42 @@
1
+ <script lang="ts" generics="TData extends Record<string, unknown>">
2
+ import Plot from '../../../layout/plot/Plot.svelte';
3
+ import { buildBulletDefaults } from './defaults';
4
+ import type { BulletPlotProps, BulletPlotCoreProps } from '../../../types/plots/ranking/bullet/props';
5
+
6
+ /**
7
+ * A bullet plot: per category, a bar for its value over bands - `ranges` - that grade it, with a tick marking its `target`, upright or sideways when the categories run along `y`. Draws from pre-built `series` or flat `data` rows.
8
+ * Optional chrome (`title`, `subtitle`, `caption`, `header`, `footer`,
9
+ * `legend`) frames it; `timeline` and `facet` slice its `data` rows.
10
+ * `margins` is bindable: it reports the margin the plot settled on.
11
+ */
12
+ let {
13
+ title,
14
+ subtitle,
15
+ caption,
16
+ header,
17
+ footer,
18
+ legend,
19
+ order,
20
+ timeline,
21
+ facet,
22
+ tooltip,
23
+ margins = $bindable(),
24
+ ...core
25
+ }: BulletPlotProps<TData> = $props();
26
+ </script>
27
+
28
+ <Plot
29
+ core={core as BulletPlotCoreProps<TData>}
30
+ defaults={buildBulletDefaults}
31
+ bind:margins
32
+ {title}
33
+ {subtitle}
34
+ {caption}
35
+ {header}
36
+ {footer}
37
+ {legend}
38
+ {order}
39
+ {timeline}
40
+ {facet}
41
+ {tooltip}
42
+ />
@@ -0,0 +1,26 @@
1
+ import Plot from '../../../layout/plot/Plot.svelte';
2
+ import type { BulletPlotProps } from '../../../types/plots/ranking/bullet/props';
3
+ declare function $$render<TData extends Record<string, unknown>>(): {
4
+ props: BulletPlotProps<TData>;
5
+ exports: {};
6
+ bindings: "margins";
7
+ slots: {};
8
+ events: {};
9
+ };
10
+ declare class __sveltets_Render<TData extends Record<string, unknown>> {
11
+ props(): ReturnType<typeof $$render<TData>>['props'];
12
+ events(): ReturnType<typeof $$render<TData>>['events'];
13
+ slots(): ReturnType<typeof $$render<TData>>['slots'];
14
+ bindings(): "margins";
15
+ exports(): {};
16
+ }
17
+ interface $$IsomorphicComponent {
18
+ new <TData extends Record<string, unknown>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TData>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TData>['props']>, ReturnType<__sveltets_Render<TData>['events']>, ReturnType<__sveltets_Render<TData>['slots']>> & {
19
+ $$bindings?: ReturnType<__sveltets_Render<TData>['bindings']>;
20
+ } & ReturnType<__sveltets_Render<TData>['exports']>;
21
+ <TData extends Record<string, unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<TData>['props']> & {}): ReturnType<__sveltets_Render<TData>['exports']>;
22
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
23
+ }
24
+ declare const Plot: $$IsomorphicComponent;
25
+ type Plot<TData extends Record<string, unknown>> = InstanceType<typeof Plot<TData>>;
26
+ export default Plot;
@@ -0,0 +1,8 @@
1
+ import type { AxisPlotDefaults } from '../../../types/phases';
2
+ import type { BulletPlotState, BulletPlotCtx } from '../../../types/plots/ranking/bullet/state';
3
+ /**
4
+ * BulletPlot on the shared pipeline: a BarPlot whose bars are drawn thinner
5
+ * over `ranges` - bands that grade the value - with a tick at each `target`.
6
+ * Its value axis fits them along with the bars.
7
+ */
8
+ export declare function buildBulletDefaults<TData extends Record<string, unknown>>(): AxisPlotDefaults<BulletPlotState<TData>, BulletPlotCtx>;
@@ -0,0 +1,24 @@
1
+ import { buildBarDefaults, fitValueDomain } from '../bar/defaults';
2
+ import { buildMarks, buildReach } from './markers';
3
+ /**
4
+ * BulletPlot on the shared pipeline: a BarPlot whose bars are drawn thinner
5
+ * over `ranges` - bands that grade the value - with a tick at each `target`.
6
+ * Its value axis fits them along with the bars.
7
+ */
8
+ export function buildBulletDefaults() {
9
+ const bar = buildBarDefaults();
10
+ return {
11
+ ...bar,
12
+ scales: {
13
+ ...bar.scales,
14
+ defaults: (_state, ctx) => ({
15
+ category: {
16
+ paddingInner: ctx.cfg.bullet.paddingInner,
17
+ paddingOuter: ctx.cfg.bullet.paddingOuter
18
+ }
19
+ }),
20
+ fit: (state, ctx) => fitValueDomain(state, buildReach(state, ctx))
21
+ },
22
+ markers: { ...bar.markers, marks: buildMarks }
23
+ };
24
+ }
@@ -0,0 +1,10 @@
1
+ import type { AxisBasedMarkersConfig } from '../../../types/markers/common';
2
+ import type { BulletPlotState, BulletPlotCtx } from '../../../types/plots/ranking/bullet/state';
3
+ /** Every value the axis has to reach beyond the bars. */
4
+ export declare function buildReach<TData extends Record<string, unknown>>(state: BulletPlotState<TData>, ctx: BulletPlotCtx): number[];
5
+ /**
6
+ * BulletPlot's "markers" phase, back to front: a rule per range, the bars of a
7
+ * bar plot - thinner, so the ranges show around them - and a tick at each
8
+ * target.
9
+ */
10
+ export declare function buildMarks<TData extends Record<string, unknown>>(state: BulletPlotState<TData>, ctx: BulletPlotCtx): AxisBasedMarkersConfig[];
@@ -0,0 +1,90 @@
1
+ import { buildMarks as buildBarMarks, buildBarGeometry } from '../bar/markers';
2
+ import { GAP_VALUE } from '../../../phases/transforms/TransformsPhase';
3
+ import { RowNumbers } from '../../utils/RowNumbers';
4
+ /** Each category's target and range bounds, read off the rows the bars draw. */
5
+ function buildMeasures(state, ctx) {
6
+ const geometry = buildBarGeometry(state, ctx.cfg.bar.seriesPadding);
7
+ return (state.processedData?.data ?? [])
8
+ .filter((row) => row[GAP_VALUE] === undefined && geometry.spanOf(row) !== undefined)
9
+ .map((row) => ({
10
+ category: geometry.categoryOf(row),
11
+ target: RowNumbers.of(state.target, row),
12
+ bounds: (state.ranges ?? [])
13
+ .map((range) => RowNumbers.of(range, row))
14
+ .filter((bound) => bound !== undefined)
15
+ .sort((a, b) => a - b)
16
+ }));
17
+ }
18
+ /** Every value the axis has to reach beyond the bars. */
19
+ export function buildReach(state, ctx) {
20
+ return buildMeasures(state, ctx).flatMap(({ target, bounds }) => [
21
+ ...(target === undefined ? [] : [target]),
22
+ ...bounds
23
+ ]);
24
+ }
25
+ /**
26
+ * BulletPlot's "markers" phase, back to front: a rule per range, the bars of a
27
+ * bar plot - thinner, so the ranges show around them - and a tick at each
28
+ * target.
29
+ */
30
+ export function buildMarks(state, ctx) {
31
+ const configured = ctx.cfg.bullet;
32
+ const own = (state.styles ?? {});
33
+ const rangeColors = own.ranges?.colors ?? configured.rangeColors;
34
+ const rangeWidth = own.ranges?.width ?? configured.rangeWidth;
35
+ const target = {
36
+ color: own.target?.color ?? configured.targetColor ?? ctx.cfg.axis.color,
37
+ width: own.target?.width ?? configured.targetWidth,
38
+ length: own.target?.length ?? configured.targetLength
39
+ };
40
+ const isHorizontal = state.axes?.isHorizontal ?? false;
41
+ const baseline = buildBarGeometry(state, ctx.cfg.bar.seriesPadding).baseline;
42
+ const measures = buildMeasures(state, ctx);
43
+ // Each bound is a band from the baseline, drawn widest first so the narrower ones lie over it.
44
+ const rows = measures.flatMap(({ category, bounds }) => bounds
45
+ .map((bound, rank) => ({
46
+ category,
47
+ from: baseline,
48
+ to: bound,
49
+ stroke: rangeColors[Math.min(rank, rangeColors.length - 1)]
50
+ }))
51
+ .reverse());
52
+ const ranges = rows.length === 0
53
+ ? []
54
+ : [
55
+ {
56
+ type: 'rule',
57
+ legend: false,
58
+ axis: isHorizontal ? 'y' : 'x',
59
+ data: rows,
60
+ value: 'category',
61
+ ...(isHorizontal ? { x1: 'from', x2: 'to' } : { y1: 'from', y2: 'to' }),
62
+ stroke: 'stroke',
63
+ styles: { strokeWidth: rangeWidth }
64
+ }
65
+ ];
66
+ // The bars narrowed to a thickness of their own, centered in their band.
67
+ const bars = buildBarMarks(state, ctx).map((marker) => marker.type === 'bar' && marker.role === 'segment'
68
+ ? {
69
+ ...marker,
70
+ thickness: own.bar?.thickness ?? configured.barThickness
71
+ }
72
+ : marker);
73
+ const targets = measures.flatMap(({ category, target }) => target === undefined ? [] : [{ category, end: target }]);
74
+ const ticks = targets.length === 0
75
+ ? []
76
+ : [
77
+ {
78
+ type: 'tick',
79
+ legend: false,
80
+ data: targets,
81
+ ...(isHorizontal ? { x: 'end', y: 'category' } : { x: 'category', y: 'end' }),
82
+ tickLength: target.length,
83
+ styles: {
84
+ stroke: target.color,
85
+ strokeWidth: target.width
86
+ }
87
+ }
88
+ ];
89
+ return [...ranges, ...bars, ...ticks];
90
+ }
@@ -0,0 +1,48 @@
1
+ import type { ClevelandEntry, ClevelandPlotState } from '../../../types/plots/ranking/cleveland/state';
2
+ import type { PlotStylesConfig } from '../../../types/configuration/styling';
3
+ import type { ConnectorLabel, ConnectorRange, ConnectorStyle } from '../../../types/layout/styles';
4
+ /** What a connector falls back to - the configuration's `connector` block. */
5
+ type ConnectorDefaults = PlotStylesConfig['connector'];
6
+ /**
7
+ * The connectors of a Cleveland-style plot as `styles.connector` styles them:
8
+ * what each one measures, its color, its thickness and its label. The plot's
9
+ * marks read each category's connector through it.
10
+ */
11
+ export declare class ClevelandConnector {
12
+ #private;
13
+ readonly style: ConnectorStyle;
14
+ constructor(style: ConnectorStyle | undefined, defaults: ConnectorDefaults, entries: readonly ClevelandEntry[]);
15
+ /** The series a plot's differences run between, from `styles.connector`. */
16
+ static ends<TData extends Record<string, unknown>>(state: ClevelandPlotState<TData>): {
17
+ from?: string;
18
+ to?: string;
19
+ };
20
+ /** `styles.connector` of a plot's state, over the configuration's defaults and what `entries` measure. */
21
+ static of<TData extends Record<string, unknown>>(state: ClevelandPlotState<TData>, defaults: ConnectorDefaults, entries: readonly ClevelandEntry[]): ClevelandConnector;
22
+ /** What `entry`'s connector measures, which every other setting reads. */
23
+ rangeOf(entry: ClevelandEntry): ConnectorRange;
24
+ /** The color the author asks for `range`'s connector, if they do. */
25
+ color(range: ConnectorRange): string | undefined;
26
+ /** The thickness the author asks for `range`'s connector, if they do, given the dots' radius. */
27
+ width(range: ConnectorRange, dotRadius: number): number | undefined;
28
+ /** The opacity the author asks for `range`'s connector, if they do. */
29
+ opacity(range: ConnectorRange): number | undefined;
30
+ /** How the part of a connector outside the `from`-`to` stretch looks, over the plot's neutral `fallback` color. */
31
+ outside(fallback: string): {
32
+ stroke: string;
33
+ strokeOpacity: number;
34
+ };
35
+ /** The head of the arrow a connector is drawn as, `undefined` when it is a line. */
36
+ get arrow(): {
37
+ width: number;
38
+ headLength: number;
39
+ headAngle: number;
40
+ } | undefined;
41
+ /** The length (px) of the caps a connector draws at its ends, `undefined` when it draws none, given whether the plot draws them unless told otherwise. */
42
+ caps(byDefault: boolean | undefined): number | undefined;
43
+ /** The label options: `undefined` without a label. */
44
+ get label(): ConnectorLabel | undefined;
45
+ /** What the label of `range`'s connector says, `undefined` when it has nothing to say (no difference). */
46
+ text(range: ConnectorRange): string | undefined;
47
+ }
48
+ export {};
@@ -0,0 +1,140 @@
1
+ import { ColorRamp } from '../../../utils/color';
2
+ /**
3
+ * The connectors of a Cleveland-style plot as `styles.connector` styles them:
4
+ * what each one measures, its color, its thickness and its label. The plot's
5
+ * marks read each category's connector through it.
6
+ */
7
+ export class ClevelandConnector {
8
+ style;
9
+ #defaults;
10
+ #colorOf;
11
+ constructor(style, defaults, entries) {
12
+ this.style = style ?? {};
13
+ this.#defaults = defaults;
14
+ this.#colorOf = ClevelandConnector.#colors(this.style.color, defaults, entries);
15
+ }
16
+ /** The series a plot's differences run between, from `styles.connector`. */
17
+ static ends(state) {
18
+ const { from, to } = state.styles?.connector ?? {};
19
+ return { from, to };
20
+ }
21
+ /** `styles.connector` of a plot's state, over the configuration's defaults and what `entries` measure. */
22
+ static of(state, defaults, entries) {
23
+ const style = state.styles?.connector;
24
+ return new ClevelandConnector(style, defaults, entries);
25
+ }
26
+ /** What `entry`'s connector measures, which every other setting reads. */
27
+ rangeOf(entry) {
28
+ return {
29
+ category: entry.category,
30
+ from: entry.from,
31
+ to: entry.to,
32
+ length: entry.to - entry.from,
33
+ difference: entry.difference,
34
+ span: entry.span,
35
+ series: entry.dots.length === 1 ? entry.dots[0].series : undefined
36
+ };
37
+ }
38
+ /** The color the author asks for `range`'s connector, if they do. */
39
+ color(range) {
40
+ return this.#colorOf?.(range);
41
+ }
42
+ /** The thickness the author asks for `range`'s connector, if they do, given the dots' radius. */
43
+ width(range, dotRadius) {
44
+ const { width } = this.style;
45
+ if (width === undefined)
46
+ return undefined;
47
+ if (width === 'dots')
48
+ return dotRadius * 2;
49
+ return typeof width === 'function' ? width(range) : width;
50
+ }
51
+ /** The opacity the author asks for `range`'s connector, if they do. */
52
+ opacity(range) {
53
+ const { opacity } = this.style;
54
+ return typeof opacity === 'function' ? opacity(range) : opacity;
55
+ }
56
+ /** How the part of a connector outside the `from`-`to` stretch looks, over the plot's neutral `fallback` color. */
57
+ outside(fallback) {
58
+ const { outside } = this.style;
59
+ const own = typeof outside === 'string' ? { color: outside } : (outside ?? {});
60
+ return {
61
+ stroke: own.color ?? fallback,
62
+ strokeOpacity: own.opacity ?? this.#defaults.outsideOpacity
63
+ };
64
+ }
65
+ /** The head of the arrow a connector is drawn as, `undefined` when it is a line. */
66
+ get arrow() {
67
+ const { arrow } = this.style;
68
+ if (!arrow)
69
+ return undefined;
70
+ const own = arrow === true ? {} : arrow;
71
+ return { ...this.#defaults.arrow, ...own };
72
+ }
73
+ /** The length (px) of the caps a connector draws at its ends, `undefined` when it draws none, given whether the plot draws them unless told otherwise. */
74
+ caps(byDefault) {
75
+ const { caps } = this.style;
76
+ const on = caps === undefined ? (byDefault ?? false) : caps !== false;
77
+ if (!on)
78
+ return undefined;
79
+ return (typeof caps === 'object' ? caps.length : undefined) ?? this.#defaults.capLength;
80
+ }
81
+ /** The label options: `undefined` without a label. */
82
+ get label() {
83
+ const { label } = this.style;
84
+ return label === undefined || label === false ? undefined : label === true ? {} : label;
85
+ }
86
+ /** What the label of `range`'s connector says, `undefined` when it has nothing to say (no difference). */
87
+ text(range) {
88
+ const label = this.label ?? {};
89
+ const what = label.text ?? 'difference';
90
+ if (typeof what === 'function')
91
+ return what(range);
92
+ const value = what === 'length' ? range.length : range.difference;
93
+ if (value === undefined || !Number.isFinite(value))
94
+ return undefined;
95
+ if (label.format)
96
+ return label.format(value, range);
97
+ const rounded = Math.round(value * 100) / 100;
98
+ return what === 'difference' && rounded > 0 ? `+${rounded}` : String(rounded);
99
+ }
100
+ /** The color function for `by`, over what `entries` measure, or `undefined` when no color is asked for. */
101
+ static #colors(color, defaults, entries) {
102
+ if (color === undefined)
103
+ return undefined;
104
+ if (typeof color === 'string')
105
+ return () => color;
106
+ if (typeof color === 'function')
107
+ return color;
108
+ if (color.by === 'sign') {
109
+ const { positive, negative, zero } = { ...defaults.sign, ...color };
110
+ return ({ difference }) => difference === undefined
111
+ ? zero
112
+ : difference > 0
113
+ ? positive
114
+ : difference < 0
115
+ ? negative
116
+ : zero;
117
+ }
118
+ const { by, ...config } = color;
119
+ const read = (range) => (by === 'length' ? range.length : range.difference);
120
+ const values = entries
121
+ .map((entry) => (by === 'length' ? entry.to - entry.from : entry.difference))
122
+ .filter((value) => value !== undefined && Number.isFinite(value));
123
+ if (values.length === 0)
124
+ return undefined;
125
+ const lo = Math.min(...values);
126
+ const hi = Math.max(...values);
127
+ const diverging = by === 'difference' && config.scheme === undefined;
128
+ const scale = ColorRamp.resolve({
129
+ ...(diverging ? { scheme: defaults.differenceScheme, pivot: 0 } : {}),
130
+ ...(by === 'length' && config.scheme === undefined
131
+ ? { scheme: defaults.lengthScheme }
132
+ : {}),
133
+ ...config
134
+ }, by === 'difference' ? [Math.min(lo, 0), Math.max(hi, 0)] : [lo, hi], by === 'length' ? defaults.lengthScheme : defaults.differenceScheme);
135
+ return (range) => {
136
+ const value = read(range);
137
+ return value === undefined ? undefined : scale(value);
138
+ };
139
+ }
140
+ }
@@ -0,0 +1,33 @@
1
+ import { ValueLabels } from '../../../layout/styles/ValueLabels';
2
+ import type { ClevelandPlotState, ClevelandPlotCtx, ClevelandOptions } from '../../../types/plots/ranking/cleveland/state';
3
+ import type { AxisBasedMarkersConfig, TextMarkerConfig } from '../../../types/markers/common';
4
+ import type { EdgeBox } from '../../../types/layout/box';
5
+ /**
6
+ * The marks of the Cleveland family of plots, which differ only by their
7
+ * {@link ClevelandOptions}: per category, a connector from its lowest to its
8
+ * highest value (from the baseline, for a lollipop) with a dot at each value.
9
+ * A category with one dot gets a stem in that dot's series color, restyled by
10
+ * the segment its dot belongs to; a category with several gets one neutral
11
+ * connector. The "markers" phase takes its `marks`, `valueLabels` and `reach`.
12
+ */
13
+ export declare class ClevelandMarkers {
14
+ #private;
15
+ constructor(options: ClevelandOptions);
16
+ /** Forgets what was warned about; for tests. */
17
+ static resetWarnings(): void;
18
+ /** The plot's connectors, then its dots, which draw on top of them. */
19
+ marks: <TData extends Record<string, unknown>>(state: ClevelandPlotState<TData>, ctx: ClevelandPlotCtx) => AxisBasedMarkersConfig[];
20
+ /**
21
+ * The value labels of the dots `styles.values.of` picks, one `'text'` marker
22
+ * per place a dot can hold in its range - past the top end (above, or right
23
+ * of it), past the bottom end (below, or left of it) and, for the dots
24
+ * between, beside it - and per series, when they take their series' color.
25
+ */
26
+ valueLabels: <TData extends Record<string, unknown>>(labels: ValueLabels, state: ClevelandPlotState<TData>, ctx: ClevelandPlotCtx) => TextMarkerConfig[];
27
+ /**
28
+ * Room for the labels past the dots at the end of the value axis, so the
29
+ * farthest one fits inside the figure instead of crossing its edge. Only the
30
+ * dots at the top end of their range reach there, and only the picked ones.
31
+ */
32
+ reach: <TData extends Record<string, unknown>>(labels: ValueLabels, state: ClevelandPlotState<TData>) => EdgeBox[];
33
+ }