@motionscript/charts 0.1.0 → 0.1.1-alpha.1

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 (215) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +98 -28
  3. package/dist/bar-chart/bar-chart.d.ts +242 -119
  4. package/dist/bar-chart/bar-chart.d.ts.map +1 -1
  5. package/dist/bar-chart/bar-chart.js +231 -260
  6. package/dist/bar-chart/bar-chart.js.map +1 -1
  7. package/dist/bar-chart/category-axis.d.ts +16 -38
  8. package/dist/bar-chart/category-axis.d.ts.map +1 -1
  9. package/dist/bar-chart/category-axis.js +59 -68
  10. package/dist/bar-chart/category-axis.js.map +1 -1
  11. package/dist/bar-chart/chart-bars.d.ts +60 -91
  12. package/dist/bar-chart/chart-bars.d.ts.map +1 -1
  13. package/dist/bar-chart/chart-bars.js +88 -125
  14. package/dist/bar-chart/chart-bars.js.map +1 -1
  15. package/dist/bar-chart/index.d.ts +5 -13
  16. package/dist/bar-chart/index.d.ts.map +1 -1
  17. package/dist/bar-chart/index.js +2 -9
  18. package/dist/bar-chart/index.js.map +1 -1
  19. package/dist/bar-chart/shared.d.ts +40 -132
  20. package/dist/bar-chart/shared.d.ts.map +1 -1
  21. package/dist/bar-chart/shared.js +70 -158
  22. package/dist/bar-chart/shared.js.map +1 -1
  23. package/dist/browser/chunks/chunk-R3Q5EE6E.js +2 -0
  24. package/dist/browser/chunks/chunk-R3Q5EE6E.js.map +7 -0
  25. package/dist/browser/index.js +1 -1
  26. package/dist/browser/index.js.map +4 -4
  27. package/dist/browser/kit.js +1 -1
  28. package/dist/browser/manifest.json +1 -1
  29. package/dist/engine.d.ts +8 -17
  30. package/dist/engine.d.ts.map +1 -1
  31. package/dist/engine.js +8 -17
  32. package/dist/engine.js.map +1 -1
  33. package/dist/index.d.ts +2 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +2 -0
  36. package/dist/index.js.map +1 -1
  37. package/dist/kit/cartesian.d.ts +49 -35
  38. package/dist/kit/cartesian.d.ts.map +1 -1
  39. package/dist/kit/cartesian.js +80 -42
  40. package/dist/kit/cartesian.js.map +1 -1
  41. package/dist/kit/chart-canvas.d.ts +37 -40
  42. package/dist/kit/chart-canvas.d.ts.map +1 -1
  43. package/dist/kit/chart-canvas.js +53 -47
  44. package/dist/kit/chart-canvas.js.map +1 -1
  45. package/dist/kit/chart-legend.d.ts +16 -59
  46. package/dist/kit/chart-legend.d.ts.map +1 -1
  47. package/dist/kit/chart-legend.js +38 -76
  48. package/dist/kit/chart-legend.js.map +1 -1
  49. package/dist/kit/entries.d.ts +2 -0
  50. package/dist/kit/entries.d.ts.map +1 -1
  51. package/dist/kit/entries.js +2 -0
  52. package/dist/kit/entries.js.map +1 -1
  53. package/dist/kit/horizontal-axis.d.ts +77 -0
  54. package/dist/kit/horizontal-axis.d.ts.map +1 -0
  55. package/dist/kit/horizontal-axis.js +99 -0
  56. package/dist/kit/horizontal-axis.js.map +1 -0
  57. package/dist/kit/motion.d.ts +16 -3
  58. package/dist/kit/motion.d.ts.map +1 -1
  59. package/dist/kit/motion.js +15 -1
  60. package/dist/kit/motion.js.map +1 -1
  61. package/dist/{pie-chart → kit}/pie-legend.d.ts +14 -29
  62. package/dist/kit/pie-legend.d.ts.map +1 -0
  63. package/dist/kit/pie-legend.js +93 -0
  64. package/dist/kit/pie-legend.js.map +1 -0
  65. package/dist/kit/polar.d.ts +31 -0
  66. package/dist/kit/polar.d.ts.map +1 -0
  67. package/dist/kit/polar.js +33 -0
  68. package/dist/kit/polar.js.map +1 -0
  69. package/dist/kit/shared.d.ts +60 -214
  70. package/dist/kit/shared.d.ts.map +1 -1
  71. package/dist/kit/shared.js +91 -291
  72. package/dist/kit/shared.js.map +1 -1
  73. package/dist/kit/style.d.ts +254 -0
  74. package/dist/kit/style.d.ts.map +1 -0
  75. package/dist/kit/style.js +197 -0
  76. package/dist/kit/style.js.map +1 -0
  77. package/dist/kit/vertical-axis.d.ts +36 -45
  78. package/dist/kit/vertical-axis.d.ts.map +1 -1
  79. package/dist/kit/vertical-axis.js +69 -81
  80. package/dist/kit/vertical-axis.js.map +1 -1
  81. package/dist/line-chart/chart-line.d.ts +107 -40
  82. package/dist/line-chart/chart-line.d.ts.map +1 -1
  83. package/dist/line-chart/chart-line.js +172 -89
  84. package/dist/line-chart/chart-line.js.map +1 -1
  85. package/dist/line-chart/chart-region.d.ts +14 -27
  86. package/dist/line-chart/chart-region.d.ts.map +1 -1
  87. package/dist/line-chart/chart-region.js +13 -28
  88. package/dist/line-chart/chart-region.js.map +1 -1
  89. package/dist/line-chart/index.d.ts +5 -18
  90. package/dist/line-chart/index.d.ts.map +1 -1
  91. package/dist/line-chart/index.js +3 -16
  92. package/dist/line-chart/index.js.map +1 -1
  93. package/dist/line-chart/line-chart.d.ts +272 -119
  94. package/dist/line-chart/line-chart.d.ts.map +1 -1
  95. package/dist/line-chart/line-chart.js +309 -257
  96. package/dist/line-chart/line-chart.js.map +1 -1
  97. package/dist/line-chart/shared.d.ts +73 -130
  98. package/dist/line-chart/shared.d.ts.map +1 -1
  99. package/dist/line-chart/shared.js +195 -156
  100. package/dist/line-chart/shared.js.map +1 -1
  101. package/dist/line-chart/x-scale.d.ts +16 -55
  102. package/dist/line-chart/x-scale.d.ts.map +1 -1
  103. package/dist/line-chart/x-scale.js +44 -111
  104. package/dist/line-chart/x-scale.js.map +1 -1
  105. package/dist/nodes.d.ts +3 -13
  106. package/dist/nodes.d.ts.map +1 -1
  107. package/dist/nodes.js +9 -13
  108. package/dist/nodes.js.map +1 -1
  109. package/dist/pie-chart/index.d.ts +3 -15
  110. package/dist/pie-chart/index.d.ts.map +1 -1
  111. package/dist/pie-chart/index.js +1 -11
  112. package/dist/pie-chart/index.js.map +1 -1
  113. package/dist/pie-chart/pie-chart.d.ts +147 -85
  114. package/dist/pie-chart/pie-chart.d.ts.map +1 -1
  115. package/dist/pie-chart/pie-chart.js +65 -86
  116. package/dist/pie-chart/pie-chart.js.map +1 -1
  117. package/dist/pie-chart/pie-ring.d.ts +65 -196
  118. package/dist/pie-chart/pie-ring.d.ts.map +1 -1
  119. package/dist/pie-chart/pie-ring.js +154 -292
  120. package/dist/pie-chart/pie-ring.js.map +1 -1
  121. package/dist/pie-chart/shared.d.ts +78 -172
  122. package/dist/pie-chart/shared.d.ts.map +1 -1
  123. package/dist/pie-chart/shared.js +54 -177
  124. package/dist/pie-chart/shared.js.map +1 -1
  125. package/dist/radar-chart/index.d.ts +5 -0
  126. package/dist/radar-chart/index.d.ts.map +1 -0
  127. package/dist/radar-chart/index.js +5 -0
  128. package/dist/radar-chart/index.js.map +1 -0
  129. package/dist/radar-chart/radar-chart.d.ts +218 -0
  130. package/dist/radar-chart/radar-chart.d.ts.map +1 -0
  131. package/dist/radar-chart/radar-chart.js +224 -0
  132. package/dist/radar-chart/radar-chart.js.map +1 -0
  133. package/dist/radar-chart/radar-grid.d.ts +43 -0
  134. package/dist/radar-chart/radar-grid.d.ts.map +1 -0
  135. package/dist/radar-chart/radar-grid.js +61 -0
  136. package/dist/radar-chart/radar-grid.js.map +1 -0
  137. package/dist/radar-chart/radar-series.d.ts +59 -0
  138. package/dist/radar-chart/radar-series.d.ts.map +1 -0
  139. package/dist/radar-chart/radar-series.js +71 -0
  140. package/dist/radar-chart/radar-series.js.map +1 -0
  141. package/dist/radar-chart/shared.d.ts +73 -0
  142. package/dist/radar-chart/shared.d.ts.map +1 -0
  143. package/dist/radar-chart/shared.js +123 -0
  144. package/dist/radar-chart/shared.js.map +1 -0
  145. package/dist/radial-chart/index.d.ts +6 -0
  146. package/dist/radial-chart/index.d.ts.map +1 -0
  147. package/dist/radial-chart/index.js +4 -0
  148. package/dist/radial-chart/index.js.map +1 -0
  149. package/dist/radial-chart/radial-chart.d.ts +216 -0
  150. package/dist/radial-chart/radial-chart.d.ts.map +1 -0
  151. package/dist/radial-chart/radial-chart.js +174 -0
  152. package/dist/radial-chart/radial-chart.js.map +1 -0
  153. package/dist/radial-chart/radial-rings.d.ts +121 -0
  154. package/dist/radial-chart/radial-rings.d.ts.map +1 -0
  155. package/dist/radial-chart/radial-rings.js +273 -0
  156. package/dist/radial-chart/radial-rings.js.map +1 -0
  157. package/dist/radial-chart/shared.d.ts +73 -0
  158. package/dist/radial-chart/shared.d.ts.map +1 -0
  159. package/dist/radial-chart/shared.js +79 -0
  160. package/dist/radial-chart/shared.js.map +1 -0
  161. package/package.json +4 -4
  162. package/registry.json +21 -6
  163. package/src/bar-chart/bar-chart.ts +274 -315
  164. package/src/bar-chart/category-axis.ts +53 -88
  165. package/src/bar-chart/chart-bars.ts +108 -205
  166. package/src/bar-chart/index.ts +8 -19
  167. package/src/bar-chart/shared.ts +81 -309
  168. package/src/engine.ts +8 -17
  169. package/src/index.ts +2 -0
  170. package/src/kit/cartesian.ts +118 -55
  171. package/src/kit/chart-canvas.ts +50 -80
  172. package/src/kit/chart-legend.ts +36 -97
  173. package/src/kit/entries.ts +4 -1
  174. package/src/kit/horizontal-axis.ts +114 -0
  175. package/src/kit/motion.ts +18 -2
  176. package/src/{pie-chart → kit}/pie-legend.ts +25 -65
  177. package/src/kit/polar.ts +54 -0
  178. package/src/kit/shared.ts +104 -487
  179. package/src/kit/style.ts +257 -0
  180. package/src/kit/vertical-axis.ts +81 -115
  181. package/src/line-chart/chart-line.ts +185 -91
  182. package/src/line-chart/chart-region.ts +14 -31
  183. package/src/line-chart/index.ts +14 -22
  184. package/src/line-chart/line-chart.ts +377 -315
  185. package/src/line-chart/shared.ts +229 -304
  186. package/src/line-chart/x-scale.ts +44 -121
  187. package/src/nodes.ts +9 -13
  188. package/src/pie-chart/index.ts +3 -35
  189. package/src/pie-chart/pie-chart.ts +83 -134
  190. package/src/pie-chart/pie-ring.ts +162 -368
  191. package/src/pie-chart/shared.ts +92 -379
  192. package/src/radar-chart/index.ts +4 -0
  193. package/src/radar-chart/radar-chart.ts +287 -0
  194. package/src/radar-chart/radar-grid.ts +78 -0
  195. package/src/radar-chart/radar-series.ts +88 -0
  196. package/src/radar-chart/shared.ts +146 -0
  197. package/src/radial-chart/index.ts +5 -0
  198. package/src/radial-chart/radial-chart.ts +210 -0
  199. package/src/radial-chart/radial-rings.ts +328 -0
  200. package/src/radial-chart/shared.ts +114 -0
  201. package/dist/browser/chunks/chunk-TJNHLQGV.js +0 -2
  202. package/dist/browser/chunks/chunk-TJNHLQGV.js.map +0 -7
  203. package/dist/kit/chart-border.d.ts +0 -27
  204. package/dist/kit/chart-border.d.ts.map +0 -1
  205. package/dist/kit/chart-border.js +0 -28
  206. package/dist/kit/chart-border.js.map +0 -1
  207. package/dist/line-chart/horizontal-axis.d.ts +0 -79
  208. package/dist/line-chart/horizontal-axis.d.ts.map +0 -1
  209. package/dist/line-chart/horizontal-axis.js +0 -129
  210. package/dist/line-chart/horizontal-axis.js.map +0 -1
  211. package/dist/pie-chart/pie-legend.d.ts.map +0 -1
  212. package/dist/pie-chart/pie-legend.js +0 -117
  213. package/dist/pie-chart/pie-legend.js.map +0 -1
  214. package/src/kit/chart-border.ts +0 -50
  215. package/src/line-chart/horizontal-axis.ts +0 -151
@@ -1,111 +1,60 @@
1
1
  /**
2
- * The vocabulary every chart node shares: what a *series* is, how an axis is
3
- * scaled and formatted, and the theme leaves each chart's own theme is assembled
4
- * from.
2
+ * What every chart shares: series, axis scaling and formatting, and the theme
3
+ * leaves each chart's theme is assembled from. No `Node` imports, so a host's
4
+ * inspector mappings can build a partial theme without the components.
5
5
  *
6
- * This module exists because the three chart types are three ways of drawing the
7
- * same table. A line chart, a bar chart and a pie chart disagree about almost
8
- * everything visible — polylines against columns against wedges — and agree
9
- * about almost everything underneath: a series is a column with a caption and a
10
- * paint, a marker is a number formatted one way, a legend is a swatch beside a
11
- * label, and a theme is a tree of paints with one mapper and one tween. Writing
12
- * that three times would mean three answers to "how does a chart round its axis"
13
- * within one app.
14
- *
15
- * Kept renderer-agnostic (no `Node` imports) so a host's own inspector
16
- * mappings can build a partial theme without pulling the components in.
17
- *
18
- * **Two conventions run through every resolver and lerp below**, inherited from
19
- * the shape system's `resolveStroke`/`resolveShadow`:
20
- *
21
- * - A **mapper** merges the author's loose, partial input onto a `previous`
22
- * resolved value and resolves every leaf, so the tween always has resolved
23
- * data to interpolate. It is idempotent.
24
- * - A **tween** interpolates two resolved values leaf by leaf. Categorical
25
- * fields (`fontFamily`, `textAlign`) and fields that are `undefined` on either
26
- * side **step at the midpoint**, because there is no meaningful in-between and
27
- * defaulting the missing side to 0 would animate a font weight down to nothing
28
- * on the way to "unset".
6
+ * A mapper merges partial input onto a `previous` resolved value (idempotent). A
7
+ * tween interpolates two resolved values leaf by leaf, but categorical fields
8
+ * (`fontFamily`, `textAlign`) and any field `undefined` on either side step at
9
+ * the midpoint: defaulting the missing side to 0 would animate a font weight
10
+ * down to nothing on the way to "unset".
29
11
  */
30
12
  import { type DataRecord, type Fill, type Insets, type Shadow, type Stroke, type TextStyle } from "@motionscript/sdk";
31
- /**
32
- * One series of a chart: a column of the table, captioned and painted.
33
- *
34
- * `field` names the column carrying this series' values. What that becomes is
35
- * the chart's business — a traced polyline, a column of bars, a wedge — but the
36
- * three questions asked of it are the same everywhere: which column, what to
37
- * call it, what to paint it, and whether it is currently drawn.
38
- *
39
- * `fill` is an **override**: omit it and the series takes the theme palette's
40
- * entry for its own index, which is what makes a chart nobody has themed come
41
- * out in five distinct colours rather than five identical ones.
42
- */
13
+ /** One series of a chart: a column of the table, captioned and painted. */
43
14
  export interface ChartSeries {
44
15
  /** Key into each data row for this series' value. */
45
16
  field: string;
46
- /** Legend caption for this series. */
47
- label: string;
48
- /**
49
- * Paint override for this series' mark and its legend swatch. Omit to take
50
- * the theme palette's entry for this series' index.
51
- */
17
+ /** The legend caption; empty or absent shows `field`. */
18
+ label?: string;
19
+ /** Overrides the theme palette's entry for this series' index, for its mark and legend swatch. */
52
20
  fill?: Fill;
53
- /** Whether the series shows by default. Defaults to `true`. */
21
+ /** Defaults to `true`. */
54
22
  enabled?: boolean;
55
23
  }
56
24
  /** A `[min, max]` numeric range in data units. */
57
25
  export type Range = [min: number, max: number];
58
- /**
59
- * One axis's *data* domain — what it shows — as opposed to {@link AxisConfig},
60
- * which is how it's *styled*. Every field is optional: `range`/`ticks` derive
61
- * from the plotted data when omitted, and `label` defaults to `""`.
62
- */
26
+ /** One axis's *data* domain, as opposed to {@link AxisConfig}, which is how it is styled. */
63
27
  export interface AxisDomainConfig {
64
- /** Caption drawn alongside the axis. Pass `""` (the default) to hide it. */
28
+ /** Caption drawn alongside the axis; `""` hides it. */
65
29
  label?: string;
66
- /** `[min, max]` of the scale. Derived from the data bounds when omitted. */
30
+ /** Derived from the data bounds when omitted. */
67
31
  range?: Range;
68
- /** Tick values (in data units). Derived (five evenly-spaced) when omitted. */
32
+ /** Derived (five evenly spaced) when omitted. */
69
33
  ticks?: number[];
70
34
  /**
71
- * How a tick value is written down — a `number-format` pattern such as
72
- * `#,##0.00` or `$#,##0`.
73
- *
74
- * Here rather than in {@link AxisConfig} because it is a statement about the
75
- * *numbers*, not about the ink they are set in: `$` on a revenue axis says
76
- * what the column holds, and it has to survive a re-theme. It sits beside
77
- * `range` and `ticks` for the same reason those do.
35
+ * A `number-format` pattern such as `#,##0.00` or `$#,##0`. It lives here, not
36
+ * in {@link AxisConfig}, because it says what the column holds and has to
37
+ * survive a re-theme.
78
38
  */
79
39
  format?: string;
80
40
  }
41
+ /** An {@link AxisDomainConfig} with `range` and `ticks` worked out. */
42
+ export type ResolvedAxisDomain = AxisDomainConfig & {
43
+ readonly range: Range;
44
+ readonly ticks: number[];
45
+ };
81
46
  /**
82
- * An axis domain entry's resolve: merges the author's partial input onto
83
- * `previous`, so a later partial `.set({ yAxis: {...} })` patches
84
- * `label`/`range`/`ticks` independently. `range`/`ticks` staying `undefined`
85
- * after the merge is the auto-derive signal the scale getters read.
47
+ * Merges partial input onto `previous`, so a later `.set({ yAxis: {...} })`
48
+ * patches `label`/`range`/`ticks` independently. An unset `range`/`ticks` is the
49
+ * auto-derive signal.
86
50
  */
87
51
  export declare function resolveAxisDomain(domain: AxisDomainConfig | undefined, previous?: AxisDomainConfig): AxisDomainConfig;
88
52
  /**
89
- * An axis domain entry's lerp: interpolates `range`/`ticks` numerically
90
- * (pairwise by index for `ticks`), so a `to` command that restates a range
91
- * rescales the plot smoothly. `label`, and either field when one side is in
92
- * auto-derive mode, step at the midpoint.
53
+ * Interpolates `range` and `ticks` numerically (ticks pairwise by index).
54
+ * `label`, `format`, and either field when one side is auto, step at the
55
+ * midpoint: there is no halfway between `$#,##0` and `0.0%`.
93
56
  */
94
57
  export declare function lerpAxisDomain(from: AxisDomainConfig, to: AxisDomainConfig, t: number): AxisDomainConfig;
95
- /**
96
- * Where a generic `to()` of an axis domain should land, given the domain as it
97
- * is *drawn* (`drawn`, with `range` and `ticks` resolved off the data), or
98
- * `undefined` when the request states neither a `range` nor `ticks` and the
99
- * plain property tween will do.
100
- *
101
- * The stored domain of an auto axis has no `range` and no `ticks`, and
102
- * {@link lerpAxisDomain} steps an unset side at the midpoint, so tweening the
103
- * stored value from an auto axis is a cut. The charts therefore tween between
104
- * resolved domains, as their zoom does; this builds the destination. A `range`
105
- * given without `ticks` keeps the tick *count* the axis already draws, so each
106
- * marker slides from its old value to its new one instead of the row popping.
107
- */
108
- export declare function axisTweenTarget(drawn: AxisDomainConfig, requested: AxisDomainConfig | undefined): AxisDomainConfig | undefined;
109
58
  /**
110
59
  * An axis domain part-way through a tween that leaves or reaches a `range` or
111
60
  * `ticks` left to the data: both ends as stored, and how far along. Only the
@@ -121,90 +70,43 @@ export interface AxisDomainBlend extends AxisDomainConfig {
121
70
  };
122
71
  }
123
72
  /**
124
- * A chart's axis entry tween: what `to({ yAxis: { range } })` moves through.
125
- * Between two explicit domains it is {@link lerpAxisDomain}, and a restated
126
- * `range` without `ticks` spreads explicit ticks across it, keeping their count.
127
- * When either end leaves `range` or `ticks` to the data, the value between is an
128
- * {@link AxisDomainBlend}, which the chart draws as the blend of what each end
129
- * draws: a rescale from an auto axis is continuous, not a cut at the midpoint.
73
+ * The axis entry tween behind `to({ yAxis: { range } })`. Between explicit
74
+ * domains it is {@link lerpAxisDomain}, and a restated `range` without `ticks`
75
+ * spreads ticks across it, keeping their count. When either end leaves `range`
76
+ * or `ticks` to the data, the value between is an {@link AxisDomainBlend}, so a
77
+ * rescale from an auto axis is continuous rather than a cut at the midpoint.
130
78
  */
131
79
  export declare function lerpAxisEntry(from: AxisDomainConfig, to: AxisDomainConfig, t: number): AxisDomainConfig;
132
- /**
133
- * `domain` as the chart draws it: `drawn` resolves a plain domain's auto `range`
134
- * and `ticks` off the data, and a blend is the lerp of what its two ends draw.
135
- */
80
+ /** `domain` as drawn: `drawn` resolves a plain domain's auto `range` and `ticks`; a blend is the lerp of what its ends draw. */
136
81
  export declare function settleAxisDomain(domain: AxisDomainConfig, drawn: (domain: AxisDomainConfig) => AxisDomainConfig): AxisDomainConfig;
137
- /**
138
- * The low-level colour tokens the default themes are built from — a dark plot
139
- * panel with warm-grey axis furniture.
140
- */
141
- export declare const CHART_PALETTE: {
142
- /** Fill of the plot panel behind the marks. */
143
- readonly plotFill: "#15130e";
144
- /** Colour of the plot's thick border. */
145
- readonly borderColor: "#4a4036";
146
- /** Colour of the faint grid lines spanning the plot. */
147
- readonly gridColor: "#2c2820";
148
- /** Colour of the numeric axis markers, axis captions, and legend labels. */
149
- readonly markerColor: "#8a7f70";
150
- /** Colour of a spotlit region's dashed rules and its wash. */
151
- readonly regionColor: "#d99a3a";
152
- };
153
- /** The out-of-the-box series palette, cycled by series index. */
154
- export declare const DEFAULT_SERIES_COLORS: readonly ["#d9603b", "#8194ad", "#e0a93b", "#5e9d6b", "#9ec85a"];
155
- /**
156
- * Opacity an *un*-spotlighted series fades to — its mark and its legend entry
157
- * alike, so the two dim together.
158
- */
82
+ /** Opacity an un-spotlighted series fades to, mark and legend entry alike. */
159
83
  export declare const SPOTLIGHT_DIM = 0.2;
160
- /** Clamp a number into `[0, 1]` — the range every reveal signal here runs in. */
161
- export declare function clampUnit(value: number): number;
162
84
  /**
163
- * Read a numeric field off a row, defaulting missing, non-numeric and non-finite
164
- * values to 0.
165
- *
166
- * A column left as strings silently plots as 0, which is why the CSV parser's
167
- * numeric auto-coercion matters — a quoted or unit-suffixed column won't plot
168
- * until it's coerced.
85
+ * Reads a numeric field off a row. A string column plots as 0, so a quoted or
86
+ * unit-suffixed column needs the CSV parser's numeric coercion first.
169
87
  */
170
88
  export declare function num(row: DataRecord, field: string | undefined): number;
171
- /**
172
- * Read a field off a row as its caption — the counterpart to {@link num} for
173
- * the columns a chart *names* things by rather than measures them by (a bar's
174
- * category, a wedge's slice). A missing cell reads as empty rather than as the
175
- * string `"undefined"`.
176
- */
89
+ /** The counterpart to {@link num} for the columns a chart names things by; a missing cell reads as empty, not `"undefined"`. */
177
90
  export declare function text(row: DataRecord, field: string | undefined): string;
178
91
  /**
179
- * Every column that holds numbers across `data`, in header order, skipping the
180
- * names in `exclude` (typically the category column).
181
- *
182
- * A column counts as numeric only if every non-empty cell in it is a number, so
183
- * a stray text cell leaves the column out rather than plotting zeros. This is
184
- * what lets a chart plot "every other column" without the author naming twenty
185
- * fields.
92
+ * Every numeric column of `data` in header order, skipping `exclude`. A column
93
+ * is numeric only if every non-empty cell is a number, so a stray text cell
94
+ * drops the column rather than plotting zeros.
186
95
  */
187
96
  export declare function numericFields(data: DataRecord[], exclude?: string[]): string[];
188
97
  /** One axis's (x or y) style vocabulary. */
189
98
  export interface AxisConfig {
190
99
  /** Style of each marker along the axis. */
191
100
  labelStyle: TextStyle;
192
- /** Style of the axis caption. */
193
101
  titleStyle: TextStyle;
194
- /**
195
- * This axis's direction of the plot's internal grid — weight+fill honoured,
196
- * dash/cap/join ignored (grid lines are drawn as filled rects).
197
- */
102
+ /** This axis's grid lines: weight and fill honoured, dash/cap/join ignored (they are filled rects). */
198
103
  lineStyle: Stroke;
199
- /**
200
- * Gap between the plot and the marker row. Only the side facing the plot is
201
- * read — `.top` for a horizontal axis, `.right` for a vertical one.
202
- */
104
+ /** Gap between the plot and the marker row; only the side facing the plot is read (`.top` horizontal, `.right` vertical). */
203
105
  tickPadding: Insets;
204
106
  /** Gap between the marker row and the caption, read the same side. */
205
107
  titlePadding: Insets;
206
108
  }
207
- /** A legend's per-series colour swatch — a rounded chip, not the caption. */
109
+ /** A legend's per-series colour swatch. */
208
110
  export interface LegendMarkerConfig {
209
111
  width: number;
210
112
  height: number;
@@ -212,84 +114,20 @@ export interface LegendMarkerConfig {
212
114
  stroke: Stroke;
213
115
  shadow: Shadow;
214
116
  }
215
- /** A legend's visual theme. */
216
117
  export interface LegendConfig {
217
118
  padding: Insets;
218
- /** Caption style — only the swatch carries the series colour. */
119
+ /** Only the swatch carries the series colour. */
219
120
  textStyle: TextStyle;
220
- /** Gap between legend entries. */
221
121
  itemGap: number;
222
122
  markerStyle: LegendMarkerConfig;
223
123
  }
224
- /** The plot panel a cartesian chart draws its marks over. */
225
- export interface PlotAreaConfig {
226
- stroke: Stroke;
227
- fill: Fill;
228
- shadow: Shadow;
229
- }
230
- /** The default styling of a horizontal (marker row beneath the plot) axis. */
231
124
  export declare const DEFAULT_X_AXIS: AxisConfig;
232
- /** The default styling of a vertical (marker column beside the plot) axis. */
233
125
  export declare const DEFAULT_Y_AXIS: AxisConfig;
234
- /**
235
- * The default plot panel: **unpainted**, framed. A chart reads against the
236
- * stage rather than punching a panel into it, which is the look the family was
237
- * designed at.
238
- */
239
- export declare const DEFAULT_PLOT_AREA: PlotAreaConfig;
240
- /** The default legend styling, shared by every chart that draws one. */
241
126
  export declare const DEFAULT_LEGEND: LegendConfig;
242
- /** The default per-series stroke palette — {@link DEFAULT_SERIES_COLORS}, drawn 4px. */
243
- export declare const DEFAULT_SERIES_STROKES: Stroke[];
244
- /** The default per-series fill palette — the same colours, as solid paint. */
245
- export declare const DEFAULT_SERIES_FILLS: Fill[];
246
- export declare function resolveAxisConfig(axis: Partial<AxisConfig> | undefined, previous: AxisConfig): AxisConfig;
247
- export declare function lerpAxisConfig(from: AxisConfig, to: AxisConfig, t: number): AxisConfig;
248
- export declare function resolvePlotArea(plotArea: Partial<PlotAreaConfig> | undefined, previous: PlotAreaConfig): PlotAreaConfig;
249
- export declare function lerpPlotArea(from: PlotAreaConfig, to: PlotAreaConfig, t: number): PlotAreaConfig;
250
- /** A legend theme as the author may state it — every branch optional. */
251
- export type LegendTheme = Partial<Omit<LegendConfig, "markerStyle">> & {
252
- markerStyle?: Partial<LegendMarkerConfig>;
253
- };
254
- export declare function resolveLegendConfig(legend: LegendTheme | undefined, previous: LegendConfig): LegendConfig;
255
- export declare function lerpLegendConfig(from: LegendConfig, to: LegendConfig, t: number): LegendConfig;
256
- /** A whole-palette override replaces the previous palette outright. */
257
- export declare function resolveSeriesStrokes(styles: Stroke[] | undefined, previous: Stroke[]): Stroke[];
258
- /** Pairwise by index; a palette that grows/shrinks holds the longer side's tail. */
259
- export declare function lerpSeriesStrokes(from: Stroke[], to: Stroke[], t: number): Stroke[];
260
- /** The fill-palette twin of {@link resolveSeriesStrokes}, for filled marks. */
261
- export declare function resolveSeriesFills(fills: Fill[] | undefined, previous: Fill[]): Fill[];
262
- /** The fill-palette twin of {@link lerpSeriesStrokes}. */
263
- export declare function lerpSeriesFills(from: Fill[], to: Fill[], t: number): Fill[];
264
- /**
265
- * The effective stroke for series `index`: the palette's entry at
266
- * `index % palette.length`, with the series' own `fill`, if set, overriding just
267
- * the last (topmost) layer's colour.
268
- */
269
- export declare function resolveSeriesStroke(palette: Stroke[], series: ChartSeries, index: number): Stroke;
270
127
  /**
271
- * The effective *colour* for series `index` — the same colour
272
- * {@link resolveSeriesStroke} draws its line in — for contexts (a legend
273
- * swatch) that only need the fill.
274
- */
275
- export declare function resolveSeriesFill(palette: Stroke[], series: ChartSeries, index: number): Fill;
276
- /**
277
- * The effective paint for mark `index` of a **filled** chart (a bar, a wedge):
278
- * the series' own `fill` when it carries one, else the palette's entry for its
279
- * index, cycled.
280
- *
281
- * The stroke twin above has to reach inside a stroke to swap one layer's colour;
282
- * a filled mark has no such geometry wrapped around its paint, so an override is
283
- * simply the whole answer.
284
- */
285
- export declare function resolvePalettePaint(palette: Fill[], override: Fill | undefined, index: number): Fill;
286
- /**
287
- * Format a marker value: integers plain, otherwise trimmed to one decimal, or to
288
- * as many as the axis's tick `step` needs to tell neighbouring ticks apart.
289
- *
290
- * One decimal is the floor, so a step of 0.1 or more reads exactly as it always
291
- * has; a finer step (a unit axis ticked every 0.05) gets two, instead of five
292
- * ticks captioned `0.1 0.1 0.2 0.2 0.3`. Trailing zeros are dropped either way.
128
+ * Format a marker value: integers plain, otherwise one decimal, or as many as
129
+ * the tick `step` needs to tell neighbours apart (a unit axis ticked every 0.05
130
+ * gets two, not `0.1 0.1 0.2 0.2 0.3`). Trailing zeros are dropped.
293
131
  */
294
132
  export declare function formatMarker(value: number, step?: number): string;
295
133
  /** The gap between neighbouring tick values, or `undefined` for fewer than two distinct ones. */
@@ -298,5 +136,13 @@ export declare function markerStep(markers: readonly number[]): number | undefin
298
136
  export declare function formatPercent(fraction: number): string;
299
137
  /** `markerCount` evenly-spaced tick values across `[min, max]`, ends inclusive. */
300
138
  export declare function markerValues([min, max]: Range, markerCount: number): number[];
301
- export { niceStep, enterBudget } from "@motionscript/sdk/component";
139
+ /** `[lo, hi]` nudged out to bounds a whole number of tidy steps apart, about `divisions` of them. */
140
+ export declare function niceRange([lo, hi]: Range, divisions: number): Range;
141
+ /**
142
+ * Ticks for a range worked out from the data: every multiple of the tidiest
143
+ * step (1, 2 or 5 times a power of ten) that divides it into about `divisions`
144
+ * parts, so zero is a tick whenever the range spans it. A range no such step
145
+ * divides (an author's) is split evenly instead.
146
+ */
147
+ export declare function niceTicks([lo, hi]: Range, divisions: number): number[];
302
148
  //# sourceMappingURL=shared.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/kit/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/kit/shared.ts"],"names":[],"mappings":"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"}