@cascivo/charts 0.18.0 → 1.0.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.
package/README.md CHANGED
@@ -81,6 +81,20 @@ The charts are signal-driven. In a plain React app (no Babel signals transform),
81
81
  from `@cascivo/core` as the first statement of any component that reads a signal during render. The
82
82
  docs app (Preact) does not need this.
83
83
 
84
+ ## One sparkline, without the engine
85
+
86
+ `import { Sparkline } from '@cascivo/charts'` pulls in the whole charting engine — tooltips, voronoi hit-testing, a canvas layer, zoom/pan, a toolbox, PNG/SVG export — because `Sparkline` is built on the same frame as every other chart. An adopter measured 44.87 kB / 14.84 kB gzip for a single trend line on a landing page.
87
+
88
+ For a page that wants a sparkline and draws no other charts, there is a subpath that does not:
89
+
90
+ ```tsx
91
+ import { Sparkline } from '@cascivo/charts/sparkline' // ~3.5 kB gzip, no engine
92
+ ```
93
+
94
+ Identical props, identical markup, identical styling — asserted by a DOM-parity test, and the size is held by a budget in CI. **One difference: no hover tooltip**, because the tooltip is what requires the engine.
95
+
96
+ Use the main entry when the page draws other charts anyway: the engine is already paid for and the subpath saves nothing.
97
+
84
98
  ## Coloring
85
99
 
86
100
  By default every slice/series/layer is colored from the positional palette
@@ -0,0 +1,191 @@
1
+ "use client";
2
+ //#region src/engine/scale.ts
3
+ function e(e, n) {
4
+ let [r, i] = e, [a, o] = n, s = i - r;
5
+ return {
6
+ domain: e,
7
+ range: n,
8
+ map: (e) => s === 0 ? a : a + (e - r) / s * (o - a),
9
+ invert: (e) => o - a === 0 ? r : r + (e - a) / (o - a) * s,
10
+ ticks: (e = 5, n) => t(r, i, e, n)
11
+ };
12
+ }
13
+ function t(e, t, n = 5, r) {
14
+ if (!Number.isFinite(e) || !Number.isFinite(t) || e === t) return [e];
15
+ e > t && ([e, t] = [t, e]);
16
+ let i = r ?? !(Number.isInteger(e) && Number.isInteger(t)), a = (t - e) / Math.max(1, n), o = 10 ** Math.floor(Math.log10(a)), s = i ? [
17
+ 1,
18
+ 2,
19
+ 2.5,
20
+ 5,
21
+ 10
22
+ ] : [
23
+ 1,
24
+ 2,
25
+ 5,
26
+ 10
27
+ ], c = a / o, l = (s.find((e) => e >= c) ?? 10) * o;
28
+ i || (l = Math.max(1, Math.round(l)));
29
+ let u = Math.ceil(e / l), d = Math.floor(t / l + 1e-9), f = [], p = Math.max(0, Math.ceil(-Math.log10(l)) + 2);
30
+ for (let e = u; e <= d; e++) f.push(parseFloat((e * l).toFixed(p)));
31
+ return f;
32
+ }
33
+ function n(e, t, n = .1) {
34
+ let [r, i] = t, a = e.length, o = (i - r) / Math.max(1, a + n * (a + 1)), s = o, c = o * n, l = new Map(e.map((e, t) => [e, t]));
35
+ return {
36
+ domain: e,
37
+ range: t,
38
+ bandwidth: s,
39
+ map: (e) => {
40
+ let t = l.get(e);
41
+ return t === void 0 ? void 0 : r + c + t * (o + c);
42
+ }
43
+ };
44
+ }
45
+ function r(e, t) {
46
+ let [n, r] = e, [i, a] = t, o = Math.sqrt(Math.max(0, n)), s = Math.sqrt(Math.max(0, r)) - o;
47
+ return (e) => s === 0 ? (i + a) / 2 : i + (Math.sqrt(Math.max(0, e)) - o) / s * (a - i);
48
+ }
49
+ //#endregion
50
+ //#region src/engine/shape.ts
51
+ function i(e) {
52
+ return Math.round(e * 100) / 100;
53
+ }
54
+ function a(e, t = !1) {
55
+ if (t) {
56
+ let t = e.filter((e) => e !== null);
57
+ return t.length > 0 ? [t] : [];
58
+ }
59
+ let n = [], r = [];
60
+ for (let t of e) t === null ? (r.length > 0 && n.push(r), r = []) : r.push(t);
61
+ return r.length > 0 && n.push(r), n;
62
+ }
63
+ function o(e, t = "linear") {
64
+ if (e.length === 0) return "";
65
+ if (e.length === 1 || t === "linear") return e.map(([e, t], n) => `${n === 0 ? "M" : "L"}${e},${t}`).join("");
66
+ switch (t) {
67
+ case "monotone": return p(e);
68
+ case "step":
69
+ case "stepBefore":
70
+ case "stepAfter": return s(e, t);
71
+ case "natural": return l(e);
72
+ case "basis": return u(e);
73
+ case "cardinal": return d(e, 0);
74
+ case "catmullRom": return f(e, .5);
75
+ default: return p(e);
76
+ }
77
+ }
78
+ function s(e, t) {
79
+ let n = `M${e[0][0]},${e[0][1]}`;
80
+ for (let r = 0; r < e.length - 1; r++) {
81
+ let [i, a] = e[r], [o, s] = e[r + 1];
82
+ if (t === "stepBefore") n += `L${i},${s}L${o},${s}`;
83
+ else if (t === "stepAfter") n += `L${o},${a}L${o},${s}`;
84
+ else {
85
+ let e = (i + o) / 2;
86
+ n += `L${e},${a}L${e},${s}L${o},${s}`;
87
+ }
88
+ }
89
+ return n;
90
+ }
91
+ function c(e) {
92
+ let t = e.length - 1;
93
+ if (t < 1) return [[], []];
94
+ let n = Array(t), r = Array(t), i = Array(t);
95
+ r[0] = 2, i[0] = e[0] + 2 * e[1];
96
+ for (let a = 1; a < t - 1; a++) n[a] = 1, r[a] = 4, i[a] = 4 * e[a] + 2 * e[a + 1];
97
+ n[t - 1] = 2, r[t - 1] = 7, i[t - 1] = 8 * e[t - 1] + e[t];
98
+ for (let e = 1; e < t; e++) {
99
+ let t = (n[e] ?? 0) / r[e - 1];
100
+ r[e] = r[e] - t, i[e] = i[e] - t * i[e - 1];
101
+ }
102
+ let a = Array(t), o = Array(t);
103
+ a[t - 1] = i[t - 1] / r[t - 1];
104
+ for (let e = t - 2; e >= 0; e--) a[e] = (i[e] - a[e + 1]) / r[e];
105
+ for (let n = 0; n < t - 1; n++) o[n] = 2 * e[n + 1] - a[n + 1];
106
+ return o[t - 1] = (e[t] + a[t - 1]) / 2, [a, o];
107
+ }
108
+ function l(e) {
109
+ let t = e.length;
110
+ if (t < 3) return e.map(([e, t], n) => `${n === 0 ? "M" : "L"}${e},${t}`).join("");
111
+ let n = e.map((e) => e[0]), r = e.map((e) => e[1]), [i, a] = c(n), [o, s] = c(r), l = `M${n[0]},${r[0]}`;
112
+ for (let e = 0; e < t - 1; e++) l += `C${i[e]},${o[e]} ${a[e]},${s[e]} ${n[e + 1]},${r[e + 1]}`;
113
+ return l;
114
+ }
115
+ function u(e) {
116
+ let t = e.length;
117
+ if (t < 3) return e.map(([e, t], n) => `${n === 0 ? "M" : "L"}${e},${t}`).join("");
118
+ let n = (n) => e[Math.max(0, Math.min(t - 1, n))][0], r = (n) => e[Math.max(0, Math.min(t - 1, n))][1], i = `M${n(0)},${r(0)}`;
119
+ for (let e = 0; e < t - 1; e++) {
120
+ let t = n(e - 1), a = r(e - 1), o = n(e), s = r(e), c = n(e + 1), l = r(e + 1), u = (2 * t + o) / 3, d = (2 * a + s) / 3, f = (t + 2 * o) / 3, p = (a + 2 * s) / 3, m = (t + 4 * o + c) / 6, h = (a + 4 * s + l) / 6;
121
+ i += `C${u},${d} ${f},${p} ${m},${h}`;
122
+ }
123
+ let a = e[t - 1];
124
+ return i += `L${a[0]},${a[1]}`, i;
125
+ }
126
+ function d(e, t) {
127
+ let n = e.length;
128
+ if (n < 3) return e.map(([e, t], n) => `${n === 0 ? "M" : "L"}${e},${t}`).join("");
129
+ let r = (1 - t) / 6, i = (t) => e[Math.max(0, Math.min(n - 1, t))], a = `M${e[0][0]},${e[0][1]}`;
130
+ for (let e = 0; e < n - 1; e++) {
131
+ let t = i(e - 1), n = i(e), o = i(e + 1), s = i(e + 2), c = n[0] + r * (o[0] - t[0]), l = n[1] + r * (o[1] - t[1]), u = o[0] - r * (s[0] - n[0]), d = o[1] - r * (s[1] - n[1]);
132
+ a += `C${c},${l} ${u},${d} ${o[0]},${o[1]}`;
133
+ }
134
+ return a;
135
+ }
136
+ function f(e, t) {
137
+ let n = e.length;
138
+ if (n < 3) return e.map(([e, t], n) => `${n === 0 ? "M" : "L"}${e},${t}`).join("");
139
+ let r = (t) => e[Math.max(0, Math.min(n - 1, t))], i = (e, t) => Math.hypot(t[0] - e[0], t[1] - e[1]), a = `M${e[0][0]},${e[0][1]}`;
140
+ for (let e = 0; e < n - 1; e++) {
141
+ let n = r(e - 1), o = r(e), s = r(e + 1), c = r(e + 2), l = i(n, o) ** +t || 1e-6, u = i(o, s) ** +t || 1e-6, d = i(s, c) ** +t || 1e-6, f = s[0] - o[0] + u * ((o[0] - n[0]) / l - (s[0] - n[0]) / (l + u)), p = s[1] - o[1] + u * ((o[1] - n[1]) / l - (s[1] - n[1]) / (l + u)), m = s[0] - o[0] + u * ((c[0] - s[0]) / d - (c[0] - o[0]) / (u + d)), h = s[1] - o[1] + u * ((c[1] - s[1]) / d - (c[1] - o[1]) / (u + d)), g = o[0] + f / 3, _ = o[1] + p / 3, v = s[0] - m / 3, y = s[1] - h / 3;
142
+ a += `C${g},${_} ${v},${y} ${s[0]},${s[1]}`;
143
+ }
144
+ return a;
145
+ }
146
+ function p(e) {
147
+ let t = e.length, n = [], r = [], i = [];
148
+ for (let a = 0; a < t - 1; a++) n[a] = e[a + 1][0] - e[a][0], r[a] = e[a + 1][1] - e[a][1], i[a] = n[a] === 0 ? 0 : r[a] / n[a];
149
+ let a = [i[0] ?? 0];
150
+ for (let e = 1; e < t - 1; e++) {
151
+ let t = i[e - 1], n = i[e];
152
+ a[e] = t * n <= 0 ? 0 : 2 * t * n / (t + n);
153
+ }
154
+ a[t - 1] = i[t - 2] ?? 0;
155
+ let o = `M${e[0][0]},${e[0][1]}`;
156
+ for (let n = 0; n < t - 1; n++) {
157
+ let [t, r] = e[n], [i, s] = e[n + 1], c = (i - t) / 3;
158
+ o += `C${t + c},${r + c * a[n]} ${i - c},${s - c * a[n + 1]} ${i},${s}`;
159
+ }
160
+ return o;
161
+ }
162
+ function m(e, t, n = "linear") {
163
+ if (e.length === 0) return "";
164
+ let r = o(e, n), i = e[e.length - 1], a = e[0];
165
+ return `${r}L${i[0]},${t}L${a[0]},${t}Z`;
166
+ }
167
+ function h(e, t, n, r, a, o) {
168
+ let s = 2 * Math.PI;
169
+ if (Math.abs(o - a) >= s - 1e-9) {
170
+ let i = a + Math.PI;
171
+ return h(e, t, n, r, a, i) + h(e, t, n, r, i, a + s - 1e-9);
172
+ }
173
+ let c = (n, r) => [i(e + n * Math.sin(r)), i(t - n * Math.cos(r))], l = +(o - a > Math.PI), u = i(n), d = i(r), [f, p] = c(n, a), [m, g] = c(n, o);
174
+ if (r <= 0) return `M${i(e)},${i(t)}L${f},${p}A${u},${u} 0 ${l} 1 ${m},${g}Z`;
175
+ let [_, v] = c(r, o), [y, b] = c(r, a);
176
+ return `M${f},${p}A${u},${u} 0 ${l} 1 ${m},${g}L${_},${v}A${d},${d} 0 ${l} 0 ${y},${b}Z`;
177
+ }
178
+ function g(e) {
179
+ let t = e[0]?.length ?? 0, n = Array.from({ length: t }, () => 0);
180
+ return e.map((e) => e.map((e, t) => {
181
+ let r = n[t];
182
+ return n[t] = r + e, [r, n[t]];
183
+ }));
184
+ }
185
+ var _ = {
186
+ frame: "_frame_1gm0a_2",
187
+ "cascivo-chart-in": "_cascivo-chart-in_1gm0a_1",
188
+ fallback: "_fallback_1gm0a_78"
189
+ };
190
+ //#endregion
191
+ export { i as a, n as c, r as d, o as i, e as l, h as n, a as o, m as r, g as s, _ as t, t as u };
package/dist/index.d.ts CHANGED
@@ -312,7 +312,9 @@ interface BarChartProps<Datum = {
312
312
  title: string;
313
313
  description?: string;
314
314
  /**
315
- * Layout orientation of the component.
315
+ * Direction the bars grow. `vertical` puts the categories on the x-axis and grows bars
316
+ * upward (columns); `horizontal` puts them on the y-axis and grows bars rightward — the
317
+ * better choice for long category names.
316
318
  *
317
319
  * @defaultValue `vertical`
318
320
  * @see the component manifest
@@ -329,37 +331,14 @@ interface BarChartProps<Datum = {
329
331
  */
330
332
  width?: number;
331
333
  height?: number;
332
- /**
333
- * Approximate number of ticks on the x-axis.
334
- *
335
- * ⚠ **Follows SCREEN position, so its meaning swaps with `orientation`.** On a vertical
336
- * chart the x-axis is the category axis; on a horizontal one it is the VALUE axis. Prefer
337
- * {@link BarChartProps.valueAxisTicks} / {@link BarChartProps.categoryAxisTicks}, which
338
- * name the axis by role and never swap.
339
- *
340
- * @defaultValue `5`
341
- * @deprecated Use `valueAxisTicks` / `categoryAxisTicks`.
342
- */
343
- xTicks?: number;
344
- /**
345
- * Approximate number of ticks on the y-axis.
346
- *
347
- * ⚠ **Follows SCREEN position, so its meaning swaps with `orientation`** — see
348
- * {@link BarChartProps.xTicks}.
349
- *
350
- * @defaultValue `5`
351
- * @deprecated Use `valueAxisTicks` / `categoryAxisTicks`.
352
- */
353
- yTicks?: number;
354
334
  /**
355
335
  * Approximate number of ticks on the **value** axis, whichever way the chart is turned.
356
336
  *
357
- * This is the prop you want. `xTicks`/`yTicks` are named for where the axis is *drawn*,
358
- * so on `orientation="horizontal"` the value axis moves from screen-y to screen-x and the
359
- * controlling prop moves with it — `yTicks={1}` silently does nothing while `xTicks={1}`
360
- * works. Meanwhile `xLabelEvery` does NOT swap: it always strides the category axis. Two
361
- * conventions in one component, with nothing in the types to say so (2026-07-28 report
362
- * C17b). Wins over `xTicks`/`yTicks` when both are given.
337
+ * Named by ROLE, so it means the same thing on both orientations. The screen-position
338
+ * pair it replaced (`xTicks`/`yTicks`, removed at 1.0) swapped meaning with `orientation`:
339
+ * `yTicks={1}` silently did nothing on a horizontal chart while `xTicks={1}` worked, and
340
+ * `xLabelEvery` did not swap at all two conventions in one component with nothing in the
341
+ * types to say so (2026-07-28 report C17b).
363
342
  *
364
343
  * @defaultValue `5`
365
344
  */
@@ -376,7 +355,7 @@ interface BarChartProps<Datum = {
376
355
  * Show every Nth category label (and always the last) to thin a crowded axis.
377
356
  *
378
357
  * Always strides the **category** axis (the `x` field of each datum), on both
379
- * orientations — unlike `xTicks`/`yTicks`, which follow screen position.
358
+ * orientations.
380
359
  * {@link BarChartProps.categoryLabelEvery} is the unambiguous name; this is kept for
381
360
  * compatibility.
382
361
  */
@@ -438,8 +417,6 @@ declare function BarChart<Datum = {
438
417
  mode,
439
418
  width: fixedWidth,
440
419
  height,
441
- xTicks,
442
- yTicks,
443
420
  valueAxisTicks,
444
421
  categoryAxisTicks,
445
422
  xLabelEvery,
@@ -1257,7 +1234,7 @@ declare function Glyph({
1257
1234
  }: GlyphProps): ReactNode;
1258
1235
  /** Greedily wrap `text` to lines no wider than `maxWidth` (px) at the given font size. */
1259
1236
  declare function wrapText(text: string, maxWidth: number, fontSize: number): string[];
1260
- interface TextProps {
1237
+ interface ChartTextProps {
1261
1238
  x: number;
1262
1239
  y: number;
1263
1240
  children: string;
@@ -1270,11 +1247,17 @@ interface TextProps {
1270
1247
  className?: string;
1271
1248
  }
1272
1249
  /**
1273
- * An SVG text primitive that wraps to a max width (canvas-measured, with a char
1274
- * fallback). The `@visx/text` analogue — used by `Axis` for long category labels
1275
- * and available to custom charts.
1250
+ * An SVG `<text>` primitive that wraps to a max width (canvas-measured, with a char
1251
+ * fallback). The `@visx/text` analogue — used by `Axis` for long category labels and
1252
+ * available to custom charts.
1253
+ *
1254
+ * Named `ChartText`, not `Text`: `@cascivo/react` also exports a `Text` (the typography
1255
+ * component), and a dashboard file importing from both packages is the normal case. The
1256
+ * collision resolved silently — the wrong `Text` renders an SVG node where a paragraph was
1257
+ * meant, with no error — and it was the last one in the catalog after `Calendar` became
1258
+ * `CalendarHeatmap` (2026-08-22 report item 20).
1276
1259
  */
1277
- declare function Text({
1260
+ declare function ChartText({
1278
1261
  x,
1279
1262
  y,
1280
1263
  children,
@@ -1284,7 +1267,7 @@ declare function Text({
1284
1267
  fill,
1285
1268
  lineHeight,
1286
1269
  className
1287
- }: TextProps): ReactNode;
1270
+ }: ChartTextProps): ReactNode;
1288
1271
  interface BrushProps {
1289
1272
  /** Total number of selectable items (data length). */
1290
1273
  count: number;
@@ -1693,9 +1676,11 @@ interface AreaChartProps<Datum = {
1693
1676
  */
1694
1677
  curve?: Curve;
1695
1678
  /**
1696
- * Area fill style — solid, a top→bottom gradient, or a pattern.
1679
+ * Area fill style — solid, a top→bottom gradient, or a pattern. A single non-stacked
1680
+ * series defaults to `gradient` (a lone solid area reads as a heavy block); stacked and
1681
+ * overlapping series default to `solid`.
1697
1682
  *
1698
- * @defaultValue `solid`
1683
+ * @defaultValue `gradient for one non-stacked series, solid otherwise`
1699
1684
  * @see the component manifest
1700
1685
  */
1701
1686
  fill?: FillKind;
@@ -1804,7 +1789,7 @@ declare function AreaChart<Datum = {
1804
1789
  description,
1805
1790
  stacked,
1806
1791
  curve,
1807
- fill,
1792
+ fill: fillProp,
1808
1793
  patternKind,
1809
1794
  width: fixedWidth,
1810
1795
  height,
@@ -2062,7 +2047,7 @@ interface MeterProps {
2062
2047
  max?: number;
2063
2048
  label: string;
2064
2049
  /**
2065
- * Selects the visual style variant.
2050
+ * `bar` draws a straight horizontal track; `gauge` draws a half-donut dial.
2066
2051
  *
2067
2052
  * @defaultValue `bar`
2068
2053
  * @see the component manifest
@@ -2191,7 +2176,7 @@ declare function Histogram({
2191
2176
  data,
2192
2177
  bins,
2193
2178
  title,
2194
- label: _label,
2179
+ label,
2195
2180
  description,
2196
2181
  width: fixedWidth,
2197
2182
  height,
@@ -2852,7 +2837,22 @@ interface CalendarHeatmapProps {
2852
2837
  * @see the component manifest
2853
2838
  */
2854
2839
  width?: number;
2840
+ /**
2841
+ * SVG height in px. A **cap on the drawn grid, never a crop** — cells shrink so all seven
2842
+ * weekday rows fit inside it.
2843
+ *
2844
+ * @defaultValue `160` (`48` when `plain`)
2845
+ * @see the component manifest
2846
+ */
2855
2847
  height?: number;
2848
+ /**
2849
+ * Optional ceiling on a cell's edge, in px. Cells are already clamped to fit `height`; use
2850
+ * this only to keep them small in a short, wide range (GitHub's calendar uses ~11).
2851
+ *
2852
+ * Omitted by default so the height budget alone decides — a fixed default would shrink
2853
+ * year-length ranges that render correctly today.
2854
+ */
2855
+ maxCellSize?: number;
2856
2856
  tooltip?: boolean;
2857
2857
  className?: string;
2858
2858
  /**
@@ -2874,6 +2874,7 @@ declare function CalendarHeatmap({
2874
2874
  to,
2875
2875
  width: fixedWidth,
2876
2876
  height,
2877
+ maxCellSize,
2877
2878
  tooltip,
2878
2879
  className,
2879
2880
  plain,
@@ -3112,4 +3113,4 @@ declare function Gauge({
3112
3113
  className,
3113
3114
  plain
3114
3115
  }: GaugeProps): import("react").JSX.Element;
3115
- export { AXIS_CHAR_PX, AXIS_LINE_PX, AggOp, AggregateSpec, AngleBand, Annotation, AnnotationContext, AnnotationScale, AreaChart, AreaChartProps, AreaChartSeries, AreaDecimateOptions, Axis, AxisProps, BandScale, BarChart, BarChartProps, BarChartSeries, Bin, BoundStream, BoxStats, Boxplot, BoxplotProps, BoxplotSeries, Brush, BrushProps, BubbleChart, BubbleChartProps, BubbleDatum, BubbleSeries, Bullet, BulletProps, CalendarHeatmap, CalendarHeatmapDatum, CalendarHeatmapProps, Candlestick, CandlestickDatum, CandlestickProps, CanvasLayer, CanvasLayerProps, CanvasPaint, CanvasSize, CategoryDatum, CategoryMapping, ChartDefs, ChartDefsProps, ChartFrame, ChartFrameProps, ChartSize, ComboChart, ComboChartBar, ComboChartPoint, ComboChartProps, Curve, DEFAULT_MARGINS, DataLabel, DataLabelProps, DataZoom, DataZoomProps, DecimateMethod, DecimateOptions, DefSeries, EncodeMapping, EncodedResult, EncodedSeries, FillKind, Funnel, FunnelProps, FunnelStage, Gauge, GaugeProps, GaugeThreshold, Glyph, GlyphProps, GlyphShape, GridLines, GridLinesProps, Heatmap, HeatmapDatum, HeatmapProps, HierNode, Histogram, HistogramBin, HistogramProps, IntervalUnit, Kpi, KpiProps, LabelOptions, LaidLink, LaidNode, Legend, LegendProps, LegendSeries, LineChart, LineChartProps, LineChartSeries, LinearScale, LogScale, Meter, MeterProps, MeterThresholds, PLAIN_MARGINS, PartitionedNode, PatternKind, PieChart, PieChartDatum, PieChartProps, Point, Polar, PolarDatum, PolarProps, Pt, Radar, RadarProps, RadarSeries, RadialBar, RadialBarDatum, RadialBarProps, RampKind, Rect, RegressionResult, RegressionType, ResolvedLabelOptions, Row, Sankey, SankeyLayout, SankeyLink, SankeyNode, SankeyOptions, SankeyProps, ScatterChart, ScatterChartProps, ScatterChartSeries, ScatterDatum, Sparkline, SparklineProps, StackedRow, StackedSegment, Stream, StreamDecimate, StreamOffset, StreamProps, StreamSeries, StreamSeriesOptions, StreamSource, Sunburst, SunburstProps, SyncGroup, Text, TextProps, TimeScale, Toolbox, ToolboxOptions, ToolboxProps, Treemap, TreemapDatum, TreemapNode, TreemapProps, TreemapRect, Vec, VisualChannel, VisualMap, VisualMapOptions, VisualMapProps, VisualMode, VisualResult, ZoomConfig, _syncGroupCount, aggregate, angleBand, annotationSummary, arcPath, areaPath, autoLabelStride, bandScale, bin, binValues, bindStream, boxStats, cellPath, decimate$1 as decimate, divergingRamp, download, encode, encodeCategory, extent, fillFor, filter, getSyncGroup, glyphPath, gradientId, isZoomed, leftMarginForLabels, linePath, linearScale, linkPath, logScale, lttb, mapVisual, maxDepth, minmax, nearestIndex, niceTicks, panWindow, partition, patternId, pieceIndex, polarPoint, quantize, radiusScale, rampLightness, rampOf, rampStops, regression, releaseSyncGroup, renderAnnotation, renderAnnotations, resolveColor, resolveLabels, rightMarginForLabels, sankeyLayout, sequentialRamp, serializeSvg, sort, splitDefined, sqrtScale, squarify, stackSeries, streamExtent, streamLayout, sumValue, svgToPngBlob, timeScale, toStackedSeries, useChartSize, useStreamSeries, visualVisible, voronoiCells, voronoiFind, wrapText, zoomWindow };
3116
+ export { AXIS_CHAR_PX, AXIS_LINE_PX, AggOp, AggregateSpec, AngleBand, Annotation, AnnotationContext, AnnotationScale, AreaChart, AreaChartProps, AreaChartSeries, AreaDecimateOptions, Axis, AxisProps, BandScale, BarChart, BarChartProps, BarChartSeries, Bin, BoundStream, BoxStats, Boxplot, BoxplotProps, BoxplotSeries, Brush, BrushProps, BubbleChart, BubbleChartProps, BubbleDatum, BubbleSeries, Bullet, BulletProps, CalendarHeatmap, CalendarHeatmapDatum, CalendarHeatmapProps, Candlestick, CandlestickDatum, CandlestickProps, CanvasLayer, CanvasLayerProps, CanvasPaint, CanvasSize, CategoryDatum, CategoryMapping, ChartDefs, ChartDefsProps, ChartFrame, ChartFrameProps, ChartSize, ChartText, ChartTextProps, ComboChart, ComboChartBar, ComboChartPoint, ComboChartProps, Curve, DEFAULT_MARGINS, DataLabel, DataLabelProps, DataZoom, DataZoomProps, DecimateMethod, DecimateOptions, DefSeries, EncodeMapping, EncodedResult, EncodedSeries, FillKind, Funnel, FunnelProps, FunnelStage, Gauge, GaugeProps, GaugeThreshold, Glyph, GlyphProps, GlyphShape, GridLines, GridLinesProps, Heatmap, HeatmapDatum, HeatmapProps, HierNode, Histogram, HistogramBin, HistogramProps, IntervalUnit, Kpi, KpiProps, LabelOptions, LaidLink, LaidNode, Legend, LegendProps, LegendSeries, LineChart, LineChartProps, LineChartSeries, LinearScale, LogScale, Meter, MeterProps, MeterThresholds, PLAIN_MARGINS, PartitionedNode, PatternKind, PieChart, PieChartDatum, PieChartProps, Point, Polar, PolarDatum, PolarProps, Pt, Radar, RadarProps, RadarSeries, RadialBar, RadialBarDatum, RadialBarProps, RampKind, Rect, RegressionResult, RegressionType, ResolvedLabelOptions, Row, Sankey, SankeyLayout, SankeyLink, SankeyNode, SankeyOptions, SankeyProps, ScatterChart, ScatterChartProps, ScatterChartSeries, ScatterDatum, Sparkline, SparklineProps, StackedRow, StackedSegment, Stream, StreamDecimate, StreamOffset, StreamProps, StreamSeries, StreamSeriesOptions, StreamSource, Sunburst, SunburstProps, SyncGroup, TimeScale, Toolbox, ToolboxOptions, ToolboxProps, Treemap, TreemapDatum, TreemapNode, TreemapProps, TreemapRect, Vec, VisualChannel, VisualMap, VisualMapOptions, VisualMapProps, VisualMode, VisualResult, ZoomConfig, _syncGroupCount, aggregate, angleBand, annotationSummary, arcPath, areaPath, autoLabelStride, bandScale, bin, binValues, bindStream, boxStats, cellPath, decimate$1 as decimate, divergingRamp, download, encode, encodeCategory, extent, fillFor, filter, getSyncGroup, glyphPath, gradientId, isZoomed, leftMarginForLabels, linePath, linearScale, linkPath, logScale, lttb, mapVisual, maxDepth, minmax, nearestIndex, niceTicks, panWindow, partition, patternId, pieceIndex, polarPoint, quantize, radiusScale, rampLightness, rampOf, rampStops, regression, releaseSyncGroup, renderAnnotation, renderAnnotations, resolveColor, resolveLabels, rightMarginForLabels, sankeyLayout, sequentialRamp, serializeSvg, sort, splitDefined, sqrtScale, squarify, stackSeries, streamExtent, streamLayout, sumValue, svgToPngBlob, timeScale, toStackedSeries, useChartSize, useStreamSeries, visualVisible, voronoiCells, voronoiFind, wrapText, zoomWindow };