@wick-charts/vue 0.5.1 → 0.6.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.
- package/README.md +45 -6
- package/dist/BarSeries.vue.js +26 -20
- package/dist/CandlestickSeries.vue.js +30 -24
- package/dist/ChartContainer.vue.js +125 -72
- package/dist/HeatmapSeries.vue.js +40 -0
- package/dist/HeatmapSeries.vue2.js +4 -0
- package/dist/LineSeries.vue.js +26 -20
- package/dist/PieSeries.vue.js +24 -18
- package/dist/core/dist/animation/animator.js +21 -21
- package/dist/core/dist/animation/config.js +114 -87
- package/dist/core/dist/animation/easing.js +3 -1
- package/dist/core/dist/animation/intro-wave.js +68 -0
- package/dist/core/dist/axis/dom-labels.js +13 -14
- package/dist/core/dist/chart/badge-animator.js +56 -0
- package/dist/core/dist/chart/edge-indicators.js +28 -13
- package/dist/core/dist/chart/last-value.js +18 -17
- package/dist/core/dist/chart/options.js +27 -16
- package/dist/core/dist/chart/y-target.js +13 -12
- package/dist/core/dist/chart.js +868 -441
- package/dist/core/dist/components/annotation-chip.js +28 -0
- package/dist/core/dist/components/crosshair.js +8 -6
- package/dist/core/dist/components/edge-indicator.js +58 -26
- package/dist/core/dist/components/loading-indicator.js +46 -0
- package/dist/core/dist/components/marker.js +49 -31
- package/dist/core/dist/components/reference-line.js +27 -36
- package/dist/core/dist/components/time-region.js +30 -28
- package/dist/core/dist/data/store.js +38 -19
- package/dist/core/dist/data/sync.js +60 -38
- package/dist/core/dist/heatmap-tooltip.js +16 -0
- package/dist/core/dist/interactions/handler.js +86 -46
- package/dist/core/dist/perf/perf-hud.js +5 -5
- package/dist/core/dist/scales/x-scale.js +85 -37
- package/dist/core/dist/scales/y-scale.js +38 -27
- package/dist/core/dist/series/bar-intro.js +18 -0
- package/dist/core/dist/series/bar.js +337 -205
- package/dist/core/dist/series/base-multi-layer.js +224 -96
- package/dist/core/dist/series/candlestick-intro.js +57 -0
- package/dist/core/dist/series/candlestick.js +454 -276
- package/dist/core/dist/series/heatmap.js +387 -0
- package/dist/core/dist/series/line-intro.js +85 -0
- package/dist/core/dist/series/line.js +590 -282
- package/dist/core/dist/series/painters/builtins.js +2 -2
- package/dist/core/dist/series/pie.js +396 -259
- package/dist/core/dist/series/register-builtins.js +8 -7
- package/dist/core/dist/series/types.js +6 -0
- package/dist/core/dist/series/wave-intro.js +26 -0
- package/dist/core/dist/theme/create.js +69 -63
- package/dist/core/dist/theme/themes/mint-breeze.js +2 -2
- package/dist/core/dist/theme/themes/sand-dune.js +2 -2
- package/dist/core/dist/utils/color.js +109 -34
- package/dist/core/dist/utils/deep-equal.js +18 -0
- package/dist/core/dist/utils/time.js +25 -19
- package/dist/index.d.ts +1494 -122
- package/dist/index.js +177 -130
- package/dist/ui/Crosshair.vue.js +20 -21
- package/dist/ui/HeatmapTooltip.vue.js +96 -0
- package/dist/ui/HeatmapTooltip.vue2.js +4 -0
- package/dist/ui/InfoBar.vue.js +46 -47
- package/dist/ui/Legend.vue.js +80 -79
- package/dist/ui/PieLegend.vue.js +5 -5
- package/dist/ui/PieTooltip.vue.js +77 -67
- package/dist/ui/Tooltip.vue.js +60 -60
- package/dist/ui/YAxis.vue.js +2 -2
- package/dist/ui/YLabel.vue.js +94 -61
- package/package.json +2 -2
- package/src/BarSeries.vue +23 -7
- package/src/CandlestickSeries.vue +23 -7
- package/src/ChartContainer.vue +250 -13
- package/src/HeatmapSeries.vue +69 -0
- package/src/LineSeries.vue +23 -7
- package/src/PieSeries.vue +22 -6
- package/src/index.ts +84 -3
- package/src/ui/Crosshair.vue +1 -2
- package/src/ui/HeatmapTooltip.vue +144 -0
- package/src/ui/InfoBar.vue +1 -2
- package/src/ui/Legend.vue +13 -0
- package/src/ui/Marker.vue +1 -1
- package/src/ui/PieTooltip.vue +10 -0
- package/src/ui/ReferenceLine.vue +2 -2
- package/src/ui/TimeRegion.vue +2 -2
- package/src/ui/Tooltip.vue +2 -2
- package/src/ui/YLabel.vue +123 -8
package/dist/index.d.ts
CHANGED
|
@@ -6,8 +6,15 @@ import { Ref } from 'vue';
|
|
|
6
6
|
import { ShallowRef } from 'vue';
|
|
7
7
|
|
|
8
8
|
declare const __VLS_component: DefineComponent<__VLS_Props_3, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_3> & Readonly<{}>, {
|
|
9
|
+
fade: boolean | {
|
|
10
|
+
top?: number;
|
|
11
|
+
overlap?: number;
|
|
12
|
+
right?: number;
|
|
13
|
+
left?: number;
|
|
14
|
+
};
|
|
9
15
|
theme: ChartTheme;
|
|
10
16
|
gradient: boolean;
|
|
17
|
+
interactive: boolean;
|
|
11
18
|
headerLayout: "overlay" | "inline";
|
|
12
19
|
}, {}, {}, {}, string, ComponentProvideOptions, false, {
|
|
13
20
|
titleAnchor: HTMLDivElement;
|
|
@@ -19,30 +26,30 @@ legendAnchor: HTMLDivElement;
|
|
|
19
26
|
navigatorAnchor: HTMLDivElement;
|
|
20
27
|
}, HTMLDivElement>;
|
|
21
28
|
|
|
22
|
-
declare const __VLS_component_2: DefineComponent<
|
|
29
|
+
declare const __VLS_component_2: DefineComponent<__VLS_Props_8, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_8> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
|
|
23
30
|
|
|
24
|
-
declare const __VLS_component_3: DefineComponent<
|
|
31
|
+
declare const __VLS_component_3: DefineComponent<__VLS_Props_9, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_9> & Readonly<{}>, {
|
|
25
32
|
position: "bottom" | "right";
|
|
26
33
|
mode: LegendMode;
|
|
27
34
|
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
|
|
28
35
|
|
|
29
|
-
declare const __VLS_component_4: DefineComponent<
|
|
36
|
+
declare const __VLS_component_4: DefineComponent<__VLS_Props_13, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_13> & Readonly<{}>, {
|
|
30
37
|
position: PieLegendPosition;
|
|
31
38
|
format: ValueFormatter;
|
|
32
39
|
mode: PieLegendMode;
|
|
33
40
|
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
|
|
34
41
|
|
|
35
|
-
declare const __VLS_component_5: DefineComponent<
|
|
42
|
+
declare const __VLS_component_5: DefineComponent<__VLS_Props_14, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_14> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {
|
|
36
43
|
containerRef: HTMLDivElement;
|
|
37
44
|
}, any>;
|
|
38
45
|
|
|
39
|
-
declare const __VLS_component_6: DefineComponent<
|
|
46
|
+
declare const __VLS_component_6: DefineComponent<__VLS_Props_18, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_18> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
|
|
40
47
|
|
|
41
|
-
declare const __VLS_component_7: DefineComponent<
|
|
48
|
+
declare const __VLS_component_7: DefineComponent<__VLS_Props_19, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_19> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {
|
|
42
49
|
containerRef: HTMLDivElement;
|
|
43
50
|
}, any>;
|
|
44
51
|
|
|
45
|
-
declare const __VLS_component_8: DefineComponent<
|
|
52
|
+
declare const __VLS_component_8: DefineComponent<__VLS_Props_21, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_21> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
|
|
46
53
|
|
|
47
54
|
declare type __VLS_Props = {
|
|
48
55
|
/** Flat `TimePoint[]`, `TimePoint[][]`, or named `{ label, color?, data }` layers. Time accepts ms or `Date`. */
|
|
@@ -50,9 +57,34 @@ declare type __VLS_Props = {
|
|
|
50
57
|
options?: Partial<BarSeriesOptions>;
|
|
51
58
|
/** Stable series ID — same value across remounts. */
|
|
52
59
|
id?: string;
|
|
60
|
+
/** Show/hide the series without unmounting it — excludes it from the Y-range fit and tooltip/legend. Default `true`. Live. */
|
|
61
|
+
visible?: boolean;
|
|
53
62
|
};
|
|
54
63
|
|
|
55
64
|
declare type __VLS_Props_10 = {
|
|
65
|
+
/** X anchor — epoch ms or a `Date`. */
|
|
66
|
+
time: TimeValue;
|
|
67
|
+
/** Y anchor as a data value. Omit and set `seriesId` to snap to that series' value at `time`. */
|
|
68
|
+
value?: number;
|
|
69
|
+
/** Snap Y to this series' value at `time` when `value` is omitted. Also the default color source. */
|
|
70
|
+
seriesId?: string;
|
|
71
|
+
/** Glyph at the anchor. Default: `'dot'`. Arrows point their tip at the anchor. */
|
|
72
|
+
shape?: MarkerShape;
|
|
73
|
+
/** Reuse the line pulse halo around the anchor. Default: `false`. */
|
|
74
|
+
pulse?: boolean;
|
|
75
|
+
/** Optional text label drawn as a callout chip whose tail points at the anchor. */
|
|
76
|
+
label?: string;
|
|
77
|
+
/** Color override. Falls back to the series color (when `seriesId` is set), then the theme line color. */
|
|
78
|
+
color?: string;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
declare type __VLS_Props_11 = {
|
|
82
|
+
data: NavigatorData;
|
|
83
|
+
/** Strip height in CSS pixels. Defaults to `theme.navigator.height` (60). */
|
|
84
|
+
height?: number;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
declare type __VLS_Props_12 = {
|
|
56
88
|
value: number;
|
|
57
89
|
/**
|
|
58
90
|
* Value-to-string formatter. Defaults to the current locale's
|
|
@@ -64,7 +96,7 @@ declare type __VLS_Props_10 = {
|
|
|
64
96
|
spinDuration?: number;
|
|
65
97
|
};
|
|
66
98
|
|
|
67
|
-
declare type
|
|
99
|
+
declare type __VLS_Props_13 = {
|
|
68
100
|
/**
|
|
69
101
|
* Owning series id. **Optional** — when omitted, the first visible pie
|
|
70
102
|
* series is picked.
|
|
@@ -78,7 +110,7 @@ declare type __VLS_Props_11 = {
|
|
|
78
110
|
position?: PieLegendPosition;
|
|
79
111
|
};
|
|
80
112
|
|
|
81
|
-
declare type
|
|
113
|
+
declare type __VLS_Props_14 = {
|
|
82
114
|
/**
|
|
83
115
|
* Owning series id. **Optional** — when omitted, the first visible pie
|
|
84
116
|
* series is picked.
|
|
@@ -88,14 +120,14 @@ declare type __VLS_Props_12 = {
|
|
|
88
120
|
format?: ValueFormatter;
|
|
89
121
|
};
|
|
90
122
|
|
|
91
|
-
declare type
|
|
123
|
+
declare type __VLS_Props_15 = {
|
|
92
124
|
/** Horizontal line at this Y data value. Mutually exclusive with `time`. */
|
|
93
125
|
value?: number;
|
|
94
126
|
/** Vertical line at this `time` (epoch ms or `Date`). Mutually exclusive with `value`. */
|
|
95
127
|
time?: TimeValue;
|
|
96
|
-
/** Line and label-
|
|
128
|
+
/** Line and label-chip accent color. Default: the theme line color. */
|
|
97
129
|
color?: string;
|
|
98
|
-
/** Optional text label drawn in
|
|
130
|
+
/** Optional text label drawn in an annotation chip at the line's near end. */
|
|
99
131
|
label?: string;
|
|
100
132
|
/** Dash style. Default: `'dashed'`. */
|
|
101
133
|
style?: ReferenceLineStyle;
|
|
@@ -103,27 +135,27 @@ declare type __VLS_Props_13 = {
|
|
|
103
135
|
width?: number;
|
|
104
136
|
};
|
|
105
137
|
|
|
106
|
-
declare type
|
|
138
|
+
declare type __VLS_Props_16 = {
|
|
107
139
|
/** Desired number of labels (≥ 2). Overrides chart-level `axis.x.labelCount`. */
|
|
108
140
|
labelCount?: number;
|
|
109
141
|
/** Minimum pixel gap between adjacent labels (hard floor). Overrides chart-level. */
|
|
110
142
|
minLabelSpacing?: number;
|
|
111
143
|
};
|
|
112
144
|
|
|
113
|
-
declare type
|
|
145
|
+
declare type __VLS_Props_17 = {
|
|
114
146
|
/** Left edge — epoch ms or a `Date`. */
|
|
115
147
|
from: TimeValue;
|
|
116
148
|
/** Right edge — epoch ms or a `Date`. Omit (or pass `'now'`) for an open-ended band to the right edge. */
|
|
117
149
|
to?: TimeRegionEnd;
|
|
118
150
|
/** Band fill — any CSS color, typically translucent. Default: a faint tint of `color`. */
|
|
119
151
|
fill?: string;
|
|
120
|
-
/** Optional text label drawn in
|
|
152
|
+
/** Optional text label drawn in an annotation chip at the top of the band. */
|
|
121
153
|
label?: string;
|
|
122
|
-
/** Edge-line and label-
|
|
154
|
+
/** Edge-line and label-chip accent. Default: the theme's muted axis text color. */
|
|
123
155
|
color?: string;
|
|
124
156
|
};
|
|
125
157
|
|
|
126
|
-
declare type
|
|
158
|
+
declare type __VLS_Props_18 = {
|
|
127
159
|
/**
|
|
128
160
|
* @deprecated Use the named `sub` slot instead — it accepts arbitrary
|
|
129
161
|
* inline markup (icons, badges, formatted text) to mirror React's
|
|
@@ -137,12 +169,22 @@ declare type __VLS_Props_16 = {
|
|
|
137
169
|
sub?: string;
|
|
138
170
|
};
|
|
139
171
|
|
|
140
|
-
declare type
|
|
172
|
+
declare type __VLS_Props_19 = {
|
|
141
173
|
sort?: SnapshotSort;
|
|
142
174
|
format?: TooltipFormatter;
|
|
143
175
|
};
|
|
144
176
|
|
|
145
|
-
declare type
|
|
177
|
+
declare type __VLS_Props_2 = {
|
|
178
|
+
/** Flat `OHLCInput[]`, or `{ label, data }` to name the stream. */
|
|
179
|
+
data: CandlestickData;
|
|
180
|
+
options?: Partial<CandlestickSeriesOptions>;
|
|
181
|
+
/** Stable series ID — same value across remounts. */
|
|
182
|
+
id?: string;
|
|
183
|
+
/** Show/hide the series without unmounting it — excludes it from the Y-range fit and tooltip/legend. Default `true`. Live. */
|
|
184
|
+
visible?: boolean;
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
declare type __VLS_Props_20 = {
|
|
146
188
|
/** Custom tick-label formatter. Overrides the built-in range-adaptive default. */
|
|
147
189
|
format?: ValueFormatter;
|
|
148
190
|
/**
|
|
@@ -154,7 +196,7 @@ declare type __VLS_Props_18 = {
|
|
|
154
196
|
minLabelSpacing?: number;
|
|
155
197
|
};
|
|
156
198
|
|
|
157
|
-
declare type
|
|
199
|
+
declare type __VLS_Props_21 = {
|
|
158
200
|
/**
|
|
159
201
|
* Owning series id. **Optional** — when omitted, the first visible
|
|
160
202
|
* single-layer time series is picked, falling back to the first visible
|
|
@@ -164,18 +206,17 @@ declare type __VLS_Props_19 = {
|
|
|
164
206
|
color?: string;
|
|
165
207
|
/** Custom formatter; routed through NumberFlow's `formatter` so the digit animation still plays. */
|
|
166
208
|
format?: ValueFormatter;
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
options?: Partial<CandlestickSeriesOptions>;
|
|
173
|
-
/** Stable series ID — same value across remounts. */
|
|
174
|
-
id?: string;
|
|
209
|
+
/**
|
|
210
|
+
* Badge motion. `true` (default) glides + counts up + fades in with the
|
|
211
|
+
* intro; `false` snaps with no easing; an object tunes individual parts.
|
|
212
|
+
*/
|
|
213
|
+
animate?: YLabelAnimate;
|
|
175
214
|
};
|
|
176
215
|
|
|
177
216
|
declare type __VLS_Props_3 = {
|
|
217
|
+
/** Visual theme. Live — changing this at runtime updates all themed elements. */
|
|
178
218
|
theme?: ChartTheme;
|
|
219
|
+
/** Grouped axis configuration (Y/X visibility, bounds, sizing). Live. */
|
|
179
220
|
axis?: AxisConfig;
|
|
180
221
|
/**
|
|
181
222
|
* Viewport padding. `top`/`bottom` are in pixels. `left`/`right` accept either pixels (`50`)
|
|
@@ -215,16 +256,62 @@ declare type __VLS_Props_3 = {
|
|
|
215
256
|
*/
|
|
216
257
|
initialRange?: VisibleRangeSpec;
|
|
217
258
|
};
|
|
218
|
-
/**
|
|
259
|
+
/**
|
|
260
|
+
* Controlled visible range. Same shape as the imperative
|
|
261
|
+
* `chart.setVisibleRange` — a bar count, an explicit `{from, to}` window,
|
|
262
|
+
* or `{from, bars}`. Every reference/value change applies via
|
|
263
|
+
* `chart.setVisibleRange`, so pair it with `onVisibleRangeChange` for a
|
|
264
|
+
* two-way binding; a same-value literal (compared structurally) is a
|
|
265
|
+
* no-op, so an inline object doesn't re-apply on every render.
|
|
266
|
+
*
|
|
267
|
+
* For a one-shot initial window that isn't re-applied on every prop
|
|
268
|
+
* change, use `viewport.initialRange` instead.
|
|
269
|
+
*/
|
|
270
|
+
visibleRange?: VisibleRangeSpec;
|
|
271
|
+
/** Show the chart background gradient. Live. Defaults to true. */
|
|
219
272
|
gradient?: boolean;
|
|
220
|
-
/**
|
|
273
|
+
/**
|
|
274
|
+
* Enable zoom, pan, and crosshair interactions. Defaults to true.
|
|
275
|
+
*
|
|
276
|
+
* Mount-only — core has no `setInteractive`, so changing this prop after
|
|
277
|
+
* mount is ignored.
|
|
278
|
+
*/
|
|
221
279
|
interactive?: boolean;
|
|
222
|
-
/** Background grid configuration. Default: `{ visible: true }`. */
|
|
280
|
+
/** Background grid configuration. Live. Default: `{ visible: true }`. */
|
|
223
281
|
grid?: {
|
|
224
282
|
visible: boolean;
|
|
225
283
|
};
|
|
226
284
|
/**
|
|
227
|
-
*
|
|
285
|
+
* Soft fade-out at the top of the plot area, so series content dissolves
|
|
286
|
+
* under a floating `<Title>` / `<InfoBar>` instead of colliding with it.
|
|
287
|
+
* The mask erases canvas alpha rather than painting a cover color, so it
|
|
288
|
+
* stays correct over the default background gradient. Live.
|
|
289
|
+
*
|
|
290
|
+
* Two directions, independently controlled:
|
|
291
|
+
*
|
|
292
|
+
* **X (under the axis)** — panning content slides under the Y-axis
|
|
293
|
+
* column and dissolves instead of hard-clipping at the pane edge. **On
|
|
294
|
+
* by default** as a 60px ramp that finishes just inside the axis
|
|
295
|
+
* column, before the label glyphs; `{ right }` overrides the total
|
|
296
|
+
* ramp width in CSS px (`0` disables). `{ left }` adds the mirror zone
|
|
297
|
+
* at the left pane edge (default off).
|
|
298
|
+
*
|
|
299
|
+
* **Top (under the header)** — opt-in. `true` enables the auto zone
|
|
300
|
+
* (measured header + 24px run-out, half the header fold-in released so
|
|
301
|
+
* data rides up into the zone at rest), `{ top }` sets the zone height
|
|
302
|
+
* explicitly, and `{ overlap }` tunes how many px of the fold-in to
|
|
303
|
+
* release (0 keeps the strict fold-in). Off unless one of those is set.
|
|
304
|
+
*
|
|
305
|
+
* `false` — every mask off, strict edges everywhere.
|
|
306
|
+
*/
|
|
307
|
+
fade?: boolean | {
|
|
308
|
+
top?: number;
|
|
309
|
+
overlap?: number;
|
|
310
|
+
right?: number;
|
|
311
|
+
left?: number;
|
|
312
|
+
};
|
|
313
|
+
/**
|
|
314
|
+
* How `<Title>` and `<InfoBar>` are positioned relative to the canvas. Live.
|
|
228
315
|
* - `'overlay'` (default): absolute overlays on top of the canvas.
|
|
229
316
|
* - `'inline'`: flex siblings above the canvas — the canvas (and grid) shift down.
|
|
230
317
|
*/
|
|
@@ -235,10 +322,10 @@ declare type __VLS_Props_3 = {
|
|
|
235
322
|
* `<CandlestickSeries>` / `<BarSeries>` override these chart-level
|
|
236
323
|
* defaults unless the category here is explicitly `false`.
|
|
237
324
|
*
|
|
238
|
-
* **Init-only by reference
|
|
239
|
-
*
|
|
240
|
-
*
|
|
241
|
-
*
|
|
325
|
+
* **Init-only, but diffed by value, not reference.** A same-value
|
|
326
|
+
* inline object literal is a no-op — only a genuine change to the
|
|
327
|
+
* resolved config recreates the underlying `ChartInstance`, since the
|
|
328
|
+
* animation engine doesn't support live reconfiguration yet.
|
|
242
329
|
*/
|
|
243
330
|
animations?: boolean | AnimationsConfig;
|
|
244
331
|
/**
|
|
@@ -253,56 +340,94 @@ declare type __VLS_Props_3 = {
|
|
|
253
340
|
* the prop identity later is ignored.
|
|
254
341
|
*/
|
|
255
342
|
onEdgeReached?: (info: EdgeReachedInfo) => void;
|
|
343
|
+
/**
|
|
344
|
+
* Fired on a click (or tap) on the chart canvas that isn't the tail end
|
|
345
|
+
* of a pan drag. `info.spatialHit` resolves a pie/heatmap/custom-spatial
|
|
346
|
+
* series directly under the pointer; for a time-series series, resolve
|
|
347
|
+
* the point yourself from `info.time` (`chart.getDataAtTime` /
|
|
348
|
+
* `buildHoverSnapshots`). Live — the latest callback is always used.
|
|
349
|
+
*/
|
|
350
|
+
onPointClick?: (info: PointClickInfo) => void;
|
|
351
|
+
/**
|
|
352
|
+
* Fired on a double-click on the chart canvas. The chart also responds
|
|
353
|
+
* by calling `fitContent()`. Live — the latest callback is always used.
|
|
354
|
+
*/
|
|
355
|
+
onPointDoubleClick?: (info: PointClickInfo) => void;
|
|
356
|
+
/**
|
|
357
|
+
* Fired when the spatially-hovered series/index changes (pie, heatmap,
|
|
358
|
+
* or a custom spatial kind) — `null` when the pointer leaves every hit
|
|
359
|
+
* area. Live — the latest callback is always used.
|
|
360
|
+
*/
|
|
361
|
+
onSeriesHover?: (hit: SeriesHoverInfo | null) => void;
|
|
362
|
+
/**
|
|
363
|
+
* Fired once the underlying `ChartInstance` is constructed — on mount,
|
|
364
|
+
* and again if the chart is ever rebuilt (a genuine `animations` value
|
|
365
|
+
* change). Live — the latest callback is always used for the next rebuild.
|
|
366
|
+
*/
|
|
367
|
+
onReady?: (chart: ChartInstance) => void;
|
|
368
|
+
/**
|
|
369
|
+
* Fired whenever the committed visible range changes — pan, zoom,
|
|
370
|
+
* `fitContent()`, a data update that shifts the tail-scroll window, or a
|
|
371
|
+
* `visibleRange` prop change. Live — the latest callback is always used.
|
|
372
|
+
*/
|
|
373
|
+
onVisibleRangeChange?: (range: VisibleRange) => void;
|
|
374
|
+
/**
|
|
375
|
+
* Fired on every crosshair move, with `null` when the pointer leaves the
|
|
376
|
+
* chart. Live — the latest callback is always used.
|
|
377
|
+
*/
|
|
378
|
+
onCrosshairMove?: (position: CrosshairPosition | null) => void;
|
|
256
379
|
};
|
|
257
380
|
|
|
258
381
|
declare type __VLS_Props_4 = {
|
|
382
|
+
data: HeatmapCellData[];
|
|
383
|
+
options?: Partial<HeatmapSeriesOptions>;
|
|
384
|
+
/** Stable series ID — same value across remounts. */
|
|
385
|
+
id?: string;
|
|
386
|
+
/** Show/hide the series without unmounting it — excludes it from the Y-range fit and tooltip/legend. Default `true`. Live. */
|
|
387
|
+
visible?: boolean;
|
|
388
|
+
};
|
|
389
|
+
|
|
390
|
+
declare type __VLS_Props_5 = {
|
|
259
391
|
/** Flat `TimePoint[]`, `TimePoint[][]`, or named `{ label, color?, data }` layers. Time accepts ms or `Date`. */
|
|
260
392
|
data: MultiLayerData;
|
|
261
393
|
options?: Partial<LineSeriesOptions>;
|
|
262
394
|
/** Stable series ID — same value across remounts. */
|
|
263
395
|
id?: string;
|
|
396
|
+
/** Show/hide the series without unmounting it — excludes it from the Y-range fit and tooltip/legend. Default `true`. Live. */
|
|
397
|
+
visible?: boolean;
|
|
264
398
|
};
|
|
265
399
|
|
|
266
|
-
declare type
|
|
400
|
+
declare type __VLS_Props_6 = {
|
|
267
401
|
data: PieSliceData[];
|
|
268
402
|
options?: Partial<PieSeriesOptions>;
|
|
269
403
|
/** Stable series ID — same value across remounts. */
|
|
270
404
|
id?: string;
|
|
405
|
+
/** Show/hide the series without unmounting it — excludes it from the Y-range fit and tooltip/legend. Default `true`. Live. */
|
|
406
|
+
visible?: boolean;
|
|
271
407
|
};
|
|
272
408
|
|
|
273
|
-
declare type
|
|
409
|
+
declare type __VLS_Props_7 = {
|
|
410
|
+
/**
|
|
411
|
+
* Owning series id. **Optional** — when omitted, the first visible heatmap
|
|
412
|
+
* series is picked.
|
|
413
|
+
*/
|
|
414
|
+
seriesId?: string;
|
|
415
|
+
/** Custom formatter for the cell value. Default: plain integers, compact decimals. */
|
|
416
|
+
format?: ValueFormatter;
|
|
417
|
+
};
|
|
418
|
+
|
|
419
|
+
declare type __VLS_Props_8 = {
|
|
274
420
|
sort?: SnapshotSort;
|
|
275
421
|
format?: TooltipFormatter;
|
|
276
422
|
};
|
|
277
423
|
|
|
278
|
-
declare type
|
|
424
|
+
declare type __VLS_Props_9 = {
|
|
279
425
|
items?: LegendItemOverride[];
|
|
280
426
|
position?: 'bottom' | 'right';
|
|
281
427
|
/** `'isolate'` shows only the clicked item; `'solo'` is a @deprecated alias. */
|
|
282
428
|
mode?: LegendMode;
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
declare type __VLS_Props_8 = {
|
|
286
|
-
/** X anchor — epoch ms or a `Date`. */
|
|
287
|
-
time: TimeValue;
|
|
288
|
-
/** Y anchor as a data value. Omit and set `seriesId` to snap to that series' value at `time`. */
|
|
289
|
-
value?: number;
|
|
290
|
-
/** Snap Y to this series' value at `time` when `value` is omitted. Also the default color source. */
|
|
291
|
-
seriesId?: string;
|
|
292
|
-
/** Glyph at the anchor. Default: `'dot'`. Arrows point their tip at the anchor. */
|
|
293
|
-
shape?: MarkerShape;
|
|
294
|
-
/** Reuse the line pulse halo around the anchor. Default: `false`. */
|
|
295
|
-
pulse?: boolean;
|
|
296
|
-
/** Optional text label drawn in a pill next to the anchor. */
|
|
297
|
-
label?: string;
|
|
298
|
-
/** Color override. Falls back to the series color (when `seriesId` is set), then the theme line color. */
|
|
299
|
-
color?: string;
|
|
300
|
-
};
|
|
301
|
-
|
|
302
|
-
declare type __VLS_Props_9 = {
|
|
303
|
-
data: NavigatorData;
|
|
304
|
-
/** Strip height in CSS pixels. Defaults to `theme.navigator.height` (60). */
|
|
305
|
-
height?: number;
|
|
429
|
+
/** Fired after a click changes series visibility — via the built-in UI or a custom slot calling `item.toggle()`/`isolate()` directly. */
|
|
430
|
+
onToggle?: (info: LegendToggleInfo) => void;
|
|
306
431
|
};
|
|
307
432
|
|
|
308
433
|
declare function __VLS_template(): {
|
|
@@ -452,6 +577,7 @@ declare function __VLS_template_8(): {
|
|
|
452
577
|
isLive: boolean;
|
|
453
578
|
direction: YLabelDirection;
|
|
454
579
|
format: ValueFormatter;
|
|
580
|
+
opacity: number;
|
|
455
581
|
}): unknown;
|
|
456
582
|
}> & {
|
|
457
583
|
default?(ctx: {
|
|
@@ -461,6 +587,7 @@ declare function __VLS_template_8(): {
|
|
|
461
587
|
isLive: boolean;
|
|
462
588
|
direction: YLabelDirection;
|
|
463
589
|
format: ValueFormatter;
|
|
590
|
+
opacity: number;
|
|
464
591
|
}): unknown;
|
|
465
592
|
};
|
|
466
593
|
refs: {};
|
|
@@ -542,7 +669,7 @@ export declare const andromeda: ThemePreset;
|
|
|
542
669
|
* - `axis.ticks` — axis tick label cross-fade.
|
|
543
670
|
* - `toggle` — series visibility (alpha fade + Y re-fit, locked to one
|
|
544
671
|
* duration so they finish on the same frame).
|
|
545
|
-
* - `series.{line,candlestick,bar,pie}` — per-series-type data tweens.
|
|
672
|
+
* - `series.{line,candlestick,bar,pie,heatmap}` — per-series-type data tweens.
|
|
546
673
|
*
|
|
547
674
|
* Top-level `false` disables every animation category. `axis: false`
|
|
548
675
|
* disables both axes and ticks. `axis.y: false` / `axis.x: false` disables
|
|
@@ -555,7 +682,7 @@ export declare const andromeda: ThemePreset;
|
|
|
555
682
|
* own override; an explicit `series.<type>: false` (or top-level `false`)
|
|
556
683
|
* is a hard disable that overrides per-series.
|
|
557
684
|
*/
|
|
558
|
-
declare interface AnimationsConfig {
|
|
685
|
+
export declare interface AnimationsConfig {
|
|
559
686
|
/**
|
|
560
687
|
* Axis-level animation. `false` collapses both axes and ticks to instant.
|
|
561
688
|
*/
|
|
@@ -664,6 +791,15 @@ declare interface AnimationsConfig {
|
|
|
664
791
|
* @default {@link DEFAULT_LINE_ENTRY}
|
|
665
792
|
*/
|
|
666
793
|
entry?: AnimationTime;
|
|
794
|
+
/**
|
|
795
|
+
* Initial-load reveal — the line draws itself left-to-right
|
|
796
|
+
* on the first data seed, with a glowing head riding the
|
|
797
|
+
* reveal front. The value is the per-element wave duration;
|
|
798
|
+
* the full sweep lasts ~2×. `false` / `0` disables the intro.
|
|
799
|
+
*
|
|
800
|
+
* @default {@link DEFAULT_LINE_INTRO}
|
|
801
|
+
*/
|
|
802
|
+
intro?: AnimationTime;
|
|
667
803
|
/**
|
|
668
804
|
* Last-value chase duration on `updateLastPoint`. `false` /
|
|
669
805
|
* `0` snaps to the target instantly.
|
|
@@ -691,6 +827,15 @@ declare interface AnimationsConfig {
|
|
|
691
827
|
* @default {@link DEFAULT_CANDLESTICK_ENTRY}
|
|
692
828
|
*/
|
|
693
829
|
entry?: AnimationTime;
|
|
830
|
+
/**
|
|
831
|
+
* Initial-load reveal — candles unfold in a left-to-right
|
|
832
|
+
* wave on the first data seed. The value is the per-candle
|
|
833
|
+
* wave duration; the full wave lasts ~2×. `false` / `0`
|
|
834
|
+
* disables the intro.
|
|
835
|
+
*
|
|
836
|
+
* @default {@link DEFAULT_CANDLESTICK_INTRO}
|
|
837
|
+
*/
|
|
838
|
+
intro?: AnimationTime;
|
|
694
839
|
/**
|
|
695
840
|
* Live OHLC chase duration on `updateLastPoint`. `false` / `0`
|
|
696
841
|
* snaps to the target instantly.
|
|
@@ -710,6 +855,15 @@ declare interface AnimationsConfig {
|
|
|
710
855
|
* @default {@link DEFAULT_BAR_ENTRY}
|
|
711
856
|
*/
|
|
712
857
|
entry?: AnimationTime;
|
|
858
|
+
/**
|
|
859
|
+
* Initial-load reveal — bars grow from the baseline in a
|
|
860
|
+
* left-to-right wave on the first data seed. The value is the
|
|
861
|
+
* per-bar wave duration; the full wave lasts ~2×. `false` /
|
|
862
|
+
* `0` disables the intro.
|
|
863
|
+
*
|
|
864
|
+
* @default {@link DEFAULT_BAR_INTRO}
|
|
865
|
+
*/
|
|
866
|
+
intro?: AnimationTime;
|
|
713
867
|
/**
|
|
714
868
|
* Live value chase duration on `updateLastPoint`. `false` /
|
|
715
869
|
* `0` snaps to the target instantly.
|
|
@@ -719,13 +873,15 @@ declare interface AnimationsConfig {
|
|
|
719
873
|
smooth?: AnimationTime;
|
|
720
874
|
};
|
|
721
875
|
/**
|
|
722
|
-
* Pie segment entry/update tweens.
|
|
723
|
-
*
|
|
724
|
-
*
|
|
876
|
+
* Pie segment entry/update tweens. `false` disables the slice
|
|
877
|
+
* entry sweep (`update` is still parse-only; wiring lands in a
|
|
878
|
+
* later phase).
|
|
725
879
|
*/
|
|
726
880
|
pie?: false | {
|
|
727
881
|
/**
|
|
728
|
-
*
|
|
882
|
+
* Initial-load reveal — slices unfurl clockwise over this
|
|
883
|
+
* total duration on the first data seed, then the outside
|
|
884
|
+
* labels chain in. `false` / `0` disables the intro.
|
|
729
885
|
*
|
|
730
886
|
* @default {@link DEFAULT_PIE_ENTRY}
|
|
731
887
|
*/
|
|
@@ -737,6 +893,25 @@ declare interface AnimationsConfig {
|
|
|
737
893
|
*/
|
|
738
894
|
update?: AnimationTime;
|
|
739
895
|
};
|
|
896
|
+
/**
|
|
897
|
+
* Heatmap tweens. `false` disables the entrance wave, value tween,
|
|
898
|
+
* and hover lift.
|
|
899
|
+
*/
|
|
900
|
+
heatmap?: false | {
|
|
901
|
+
/**
|
|
902
|
+
* Per-cell entrance duration — the diagonal reveal wave on
|
|
903
|
+
* first paint / grid-shape change.
|
|
904
|
+
*
|
|
905
|
+
* @default {@link DEFAULT_HEATMAP_ENTRY}
|
|
906
|
+
*/
|
|
907
|
+
entry?: AnimationTime;
|
|
908
|
+
/**
|
|
909
|
+
* In-place value/color tween and hover-lift ease.
|
|
910
|
+
*
|
|
911
|
+
* @default {@link DEFAULT_HEATMAP_UPDATE}
|
|
912
|
+
*/
|
|
913
|
+
update?: AnimationTime;
|
|
914
|
+
};
|
|
740
915
|
};
|
|
741
916
|
}
|
|
742
917
|
|
|
@@ -757,7 +932,7 @@ declare interface AnimationState {
|
|
|
757
932
|
* - `string` in `<n>ms` or `<n>s` form (`"250ms"`, `"1s"`, `"2.5s"`)
|
|
758
933
|
* - `false` — disable (equivalent to `0`)
|
|
759
934
|
*/
|
|
760
|
-
declare type AnimationTime = Milliseconds | string | false;
|
|
935
|
+
export declare type AnimationTime = Milliseconds | string | false;
|
|
761
936
|
|
|
762
937
|
/**
|
|
763
938
|
* Build a 2-stop candle-body gradient around a single hex color — a lightened
|
|
@@ -853,6 +1028,21 @@ declare interface AxisTickTrackerOptions {
|
|
|
853
1028
|
|
|
854
1029
|
export declare const ayuMirage: ThemePreset;
|
|
855
1030
|
|
|
1031
|
+
/**
|
|
1032
|
+
* History back-fill: the reveal front sweeps from the data boundary into
|
|
1033
|
+
* the prepended span. Meant for the `historyReveal` option, whose localized
|
|
1034
|
+
* frame interprets clip coordinates in reveal space — `x = 0` at the
|
|
1035
|
+
* boundary, increasing toward the older end, `width` = the prepended span's
|
|
1036
|
+
* bitmap width — so the line reads as plotting itself backwards. The
|
|
1037
|
+
* default `historyReveal` for the line series.
|
|
1038
|
+
*/
|
|
1039
|
+
export declare function backfillSweepIntro(): LineIntroFn;
|
|
1040
|
+
|
|
1041
|
+
/** Declarative per-bar transform — translation and opacity only; growth is
|
|
1042
|
+
* expressed through {@link BarIntroDirectives.value} instead so stacked
|
|
1043
|
+
* columns rise as one attached unit. */
|
|
1044
|
+
export declare type BarElementTransform = WaveIntroTransform;
|
|
1045
|
+
|
|
856
1046
|
/**
|
|
857
1047
|
* Entrance animation styles for bars.
|
|
858
1048
|
* - `'none'` — no animation.
|
|
@@ -861,7 +1051,7 @@ export declare const ayuMirage: ThemePreset;
|
|
|
861
1051
|
* - `'slide'` — translates in from the right with a fade.
|
|
862
1052
|
* - `'fade-grow'` *(default)* — fade + grow combined.
|
|
863
1053
|
*/
|
|
864
|
-
declare type BarEntryAnimation = 'none' | 'fade' | 'grow' | 'slide' | 'fade-grow';
|
|
1054
|
+
export declare type BarEntryAnimation = 'none' | 'fade' | 'grow' | 'slide' | 'fade-grow';
|
|
865
1055
|
|
|
866
1056
|
/** Post-transform bitmap rectangle a bar painter fills. */
|
|
867
1057
|
declare interface BarGeometry {
|
|
@@ -873,6 +1063,57 @@ declare interface BarGeometry {
|
|
|
873
1063
|
baselineY: number;
|
|
874
1064
|
}
|
|
875
1065
|
|
|
1066
|
+
/** What one intro frame should look like. */
|
|
1067
|
+
export declare interface BarIntroDirectives {
|
|
1068
|
+
/** Horizontal clip window in bitmap px applied to the whole pass.
|
|
1069
|
+
* Omitted sides default to the pane edges. */
|
|
1070
|
+
clip?: {
|
|
1071
|
+
fromX?: number;
|
|
1072
|
+
toX?: number;
|
|
1073
|
+
};
|
|
1074
|
+
/** Per-value transform applied before geometry and stacking. Scaling the
|
|
1075
|
+
* value grows the bar from the baseline on every render path. */
|
|
1076
|
+
value?: (args: BarIntroValueArgs) => number;
|
|
1077
|
+
/** Per-bar transform applied after the geometry is resolved. */
|
|
1078
|
+
element?: (el: BarIntroElement) => BarElementTransform;
|
|
1079
|
+
}
|
|
1080
|
+
|
|
1081
|
+
/** Arguments handed to {@link BarIntroDirectives.element} per drawn bar. */
|
|
1082
|
+
export declare interface BarIntroElement extends WaveIntroElement {
|
|
1083
|
+
/** Settled left edge in bitmap px. */
|
|
1084
|
+
x: number;
|
|
1085
|
+
/** Settled top edge in bitmap px. */
|
|
1086
|
+
topY: number;
|
|
1087
|
+
/** Settled bar height in bitmap px. */
|
|
1088
|
+
barHeight: number;
|
|
1089
|
+
/** Y the bar grows from — the zero line, or the segment's own base for
|
|
1090
|
+
* stacked bars. */
|
|
1091
|
+
baselineY: number;
|
|
1092
|
+
/** Bar body width in bitmap px. */
|
|
1093
|
+
barWidth: number;
|
|
1094
|
+
}
|
|
1095
|
+
|
|
1096
|
+
/** One frame of bar intro choreography. */
|
|
1097
|
+
export declare type BarIntroFn = (frame: BarIntroFrame) => BarIntroDirectives;
|
|
1098
|
+
|
|
1099
|
+
/** Read view of one bar intro frame. */
|
|
1100
|
+
export declare interface BarIntroFrame extends WaveIntroFrame {
|
|
1101
|
+
/** Time → bitmap X through the live time scale. */
|
|
1102
|
+
timeToX(time: number): number;
|
|
1103
|
+
}
|
|
1104
|
+
|
|
1105
|
+
/** Arguments handed to {@link BarIntroDirectives.value} for every rendered value. */
|
|
1106
|
+
export declare interface BarIntroValueArgs {
|
|
1107
|
+
layerIndex: number;
|
|
1108
|
+
time: number;
|
|
1109
|
+
/** The value the renderer would draw without the intro (live smoothing included). */
|
|
1110
|
+
value: number;
|
|
1111
|
+
/** Normalized x-position across the visible window, clamped to `[0, 1]`. */
|
|
1112
|
+
position: number;
|
|
1113
|
+
/** Eased wave progress for this value, staggered left → right. */
|
|
1114
|
+
progress: number;
|
|
1115
|
+
}
|
|
1116
|
+
|
|
876
1117
|
/** Arguments handed to a {@link BarPainter} once per bar / stacked segment. */
|
|
877
1118
|
export declare interface BarPaintArgs {
|
|
878
1119
|
geom: BarGeometry;
|
|
@@ -898,7 +1139,9 @@ export declare interface BarPaintArgs {
|
|
|
898
1139
|
/** Paints one bar / stacked segment. Owns its fill — it calls `ctx.fill()`. */
|
|
899
1140
|
export declare type BarPainter = (env: PaintEnv, args: BarPaintArgs) => void;
|
|
900
1141
|
|
|
901
|
-
export declare const BarSeries: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
1142
|
+
export declare const BarSeries: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
1143
|
+
visible: boolean;
|
|
1144
|
+
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
|
|
902
1145
|
|
|
903
1146
|
/** Series definition for `chart.addSeries` — keeps the chart renderer-agnostic
|
|
904
1147
|
* so hosts that never render bars don't bundle this module. */
|
|
@@ -938,6 +1181,63 @@ export declare interface BarSeriesOptions {
|
|
|
938
1181
|
* @see BarSeriesOptions.entryAnimation
|
|
939
1182
|
*/
|
|
940
1183
|
entryMs?: number | false;
|
|
1184
|
+
/**
|
|
1185
|
+
* Initial-load intro animation — a `BarIntroFn`, usually one of the
|
|
1186
|
+
* shipped factories: `growIntro()` (the default), `springIntro()`,
|
|
1187
|
+
* `riseIntro()`, `fadeIntro()`, `wipeIntro()`. Independent of
|
|
1188
|
+
* `entryAnimation` — the intro plays once on the first data seed,
|
|
1189
|
+
* streaming entrances keep their own style.
|
|
1190
|
+
*
|
|
1191
|
+
* @see introMs — cross-linked duration for this animation.
|
|
1192
|
+
*/
|
|
1193
|
+
introAnimation?: BarIntroFn;
|
|
1194
|
+
/**
|
|
1195
|
+
* Initial-load reveal duration in milliseconds. On the first data seed
|
|
1196
|
+
* (empty → non-empty) bars reveal in a left-to-right wave: each bar
|
|
1197
|
+
* tweens for `introMs`, starts staggered across another `introMs`, so
|
|
1198
|
+
* the full wave lasts ~2×. The visual style is picked by
|
|
1199
|
+
* `introAnimation`. Default: `500`.
|
|
1200
|
+
*
|
|
1201
|
+
* ```
|
|
1202
|
+
* // Per-series override:
|
|
1203
|
+
* <BarSeries options={{ introMs: 800 }} data={data} />
|
|
1204
|
+
*
|
|
1205
|
+
* // Chart-level default:
|
|
1206
|
+
* <ChartContainer animations={{ series: { bar: { intro: 800 } } }}>
|
|
1207
|
+
* <BarSeries data={data} />
|
|
1208
|
+
* </ChartContainer>
|
|
1209
|
+
* ```
|
|
1210
|
+
*
|
|
1211
|
+
* `false` or `0` disables the intro. Bulk re-seeds of a non-empty series
|
|
1212
|
+
* never replay it. Skipped entirely under `prefers-reduced-motion`.
|
|
1213
|
+
*/
|
|
1214
|
+
introMs?: number | false;
|
|
1215
|
+
/**
|
|
1216
|
+
* History-prepend reveal — plays when older points land at the front of
|
|
1217
|
+
* the series (the `EdgeLoader` load-more-on-scroll path). A wave sweeps
|
|
1218
|
+
* from the data boundary into the new history; each bar's stagger
|
|
1219
|
+
* position is `0` at the boundary and `1` at the deepest new point, so
|
|
1220
|
+
* intro factories that read `el.progress` (`fadeIntro()` — the default,
|
|
1221
|
+
* `riseIntro()`, `growIntro()`, `springIntro()`) work here unchanged.
|
|
1222
|
+
* Clip directives are interpreted in reveal space: `x = 0` at the
|
|
1223
|
+
* boundary, increasing toward the older end.
|
|
1224
|
+
*
|
|
1225
|
+
* The fn receives a localized frame: `range` is the prepended time span
|
|
1226
|
+
* (not the visible window) and `width` is that span's bitmap width.
|
|
1227
|
+
*
|
|
1228
|
+
* `'none'` disables the reveal — prepended points appear instantly.
|
|
1229
|
+
*
|
|
1230
|
+
* @see historyRevealMs — cross-linked duration for this animation.
|
|
1231
|
+
*/
|
|
1232
|
+
historyReveal?: BarIntroFn | 'none';
|
|
1233
|
+
/**
|
|
1234
|
+
* History-prepend reveal duration in milliseconds — the per-bar wave
|
|
1235
|
+
* duration; the full reveal lasts ~2×. Default: `400`. `false` or `0`
|
|
1236
|
+
* disables the reveal. Skipped entirely under `prefers-reduced-motion`.
|
|
1237
|
+
*
|
|
1238
|
+
* @see BarSeriesOptions.historyReveal
|
|
1239
|
+
*/
|
|
1240
|
+
historyRevealMs?: number | false;
|
|
941
1241
|
/**
|
|
942
1242
|
* How long the displayed bar value takes to catch up to the actual one
|
|
943
1243
|
* on every `updateLastPoint`. Default: `250` ms.
|
|
@@ -995,10 +1295,11 @@ export declare interface BarSeriesOptions {
|
|
|
995
1295
|
* Multi-layer renderers (Line, Bar) override them against each internal store.
|
|
996
1296
|
*
|
|
997
1297
|
* Time-series data queries are NOT here — they live on {@link TimeSeriesRenderer}
|
|
998
|
-
* as required methods, so Chart narrows via
|
|
999
|
-
* directly (no optional chaining).
|
|
1298
|
+
* as required methods, so Chart narrows via {@link isTimeSeriesRenderer} and
|
|
1299
|
+
* calls them directly (no optional chaining). Never narrow by comparing `kind`
|
|
1300
|
+
* against a single spatial value — new spatial kinds slip through such guards.
|
|
1000
1301
|
*/
|
|
1001
|
-
declare interface BaseSeriesRenderer {
|
|
1302
|
+
export declare interface BaseSeriesRenderer {
|
|
1002
1303
|
/** Paint the series on the main layer. */
|
|
1003
1304
|
render(ctx: SeriesRenderContext): void;
|
|
1004
1305
|
/**
|
|
@@ -1008,6 +1309,21 @@ declare interface BaseSeriesRenderer {
|
|
|
1008
1309
|
setData(data: unknown, layerIndex?: number): void;
|
|
1009
1310
|
/** Append a single point (real-time tick). Optional — not all renderers support streaming. */
|
|
1010
1311
|
appendPoint?(point: unknown, layerIndex?: number): void;
|
|
1312
|
+
/**
|
|
1313
|
+
* Insert older points at the front of the series (history prepend / load-more).
|
|
1314
|
+
* The suffix already on screen is untouched, so — unlike {@link setData} — this
|
|
1315
|
+
* does NOT re-arm the intro, clear entrance/chase state, or force a Y snap.
|
|
1316
|
+
* Optional; not all renderers support it.
|
|
1317
|
+
*/
|
|
1318
|
+
prependPoints?(points: unknown[], layerIndex?: number): void;
|
|
1319
|
+
/**
|
|
1320
|
+
* Seed the placeholder shapes a loading indicator was showing at the data
|
|
1321
|
+
* boundary, called by the chart right before the matching
|
|
1322
|
+
* {@link prependPoints}. A history reveal that supports morphing (e.g.
|
|
1323
|
+
* `skeletonMorphIntro`) grows the real elements out of these shapes; a
|
|
1324
|
+
* renderer that doesn't implement this simply plays its plain reveal.
|
|
1325
|
+
*/
|
|
1326
|
+
setHistoryHandoff?(bars: PlaceholderBar[]): void;
|
|
1011
1327
|
/** Replace the last point in place (live candle update). Optional. */
|
|
1012
1328
|
updateLastPoint?(point: unknown, layerIndex?: number): void;
|
|
1013
1329
|
/**
|
|
@@ -1077,6 +1393,14 @@ declare interface BaseSeriesRenderer {
|
|
|
1077
1393
|
value: number;
|
|
1078
1394
|
isLive: boolean;
|
|
1079
1395
|
} | null;
|
|
1396
|
+
/**
|
|
1397
|
+
* Stacked value at an arbitrary `time` — the cumulative stack top at that
|
|
1398
|
+
* sample, mirroring {@link getStackedLastValue} but anywhere in the window
|
|
1399
|
+
* (used for the YLabel intro count-up start so it shares the stack basis).
|
|
1400
|
+
* Single-layer renderers return the nearest sample's value; `null` when no
|
|
1401
|
+
* layer has a sample near `time`.
|
|
1402
|
+
*/
|
|
1403
|
+
getStackedValueAtTime?(time: number, interval: number): number | null;
|
|
1080
1404
|
/**
|
|
1081
1405
|
* Per-layer last snapshots, each with its own `time`. Useful for ragged
|
|
1082
1406
|
* multi-layer series where layers advance independently — last-mode
|
|
@@ -1124,6 +1448,13 @@ declare interface BaseSeriesRenderer {
|
|
|
1124
1448
|
getLayerAlpha?(index: number): number;
|
|
1125
1449
|
/** True while the renderer has an active animation (Chart polls per frame). */
|
|
1126
1450
|
readonly needsAnimation?: boolean;
|
|
1451
|
+
/**
|
|
1452
|
+
* Reveal-front position in `[0, 1]` of the initial-load intro across the
|
|
1453
|
+
* visible window — `1` once settled (or when the renderer has no intro).
|
|
1454
|
+
* Overlays (the Y-label badge, annotations) key their own entrance off this
|
|
1455
|
+
* so they reveal in step with the series draw. Omitted → treated as `1`.
|
|
1456
|
+
*/
|
|
1457
|
+
getIntroFront?(): number;
|
|
1127
1458
|
/**
|
|
1128
1459
|
* Optional overlay hook. Chart invokes this during the overlay pass so each
|
|
1129
1460
|
* renderer can paint type-specific overlays (crosshair dots, pulse dots).
|
|
@@ -1146,7 +1477,7 @@ declare interface BaseSeriesRenderer {
|
|
|
1146
1477
|
dispose(): void;
|
|
1147
1478
|
}
|
|
1148
1479
|
|
|
1149
|
-
declare interface BitmapCoordinateSpace {
|
|
1480
|
+
export declare interface BitmapCoordinateSpace {
|
|
1150
1481
|
context: CanvasRenderingContext2D;
|
|
1151
1482
|
bitmapSize: {
|
|
1152
1483
|
width: number;
|
|
@@ -1204,6 +1535,24 @@ export declare interface BuildLastSnapshotsArgs {
|
|
|
1204
1535
|
cacheKey: string;
|
|
1205
1536
|
}
|
|
1206
1537
|
|
|
1538
|
+
/** What one element should look like this frame. Every field is optional —
|
|
1539
|
+
* an empty object renders the element settled. */
|
|
1540
|
+
export declare interface CandleElementTransform extends WaveIntroTransform {
|
|
1541
|
+
/** Lerp factor from `anchorY` toward the settled edges: `0` = collapsed
|
|
1542
|
+
* at the anchor, `1` = settled. Applied before the offsets. */
|
|
1543
|
+
unfold?: number;
|
|
1544
|
+
/** Absolute top edge override in bitmap px — replaces the `unfold` math
|
|
1545
|
+
* for this frame (the offsets still apply). Lets a morph start from
|
|
1546
|
+
* arbitrary geometry instead of the anchor. */
|
|
1547
|
+
topY?: number;
|
|
1548
|
+
/** Absolute bottom edge override in bitmap px — see {@link topY}. */
|
|
1549
|
+
bottomY?: number;
|
|
1550
|
+
/** Blend of the element's fill toward the theme's muted placeholder gray
|
|
1551
|
+
* (the axis text color): `0` = the candle's own color, `1` = fully
|
|
1552
|
+
* placeholder-colored. Volume bars ignore it. */
|
|
1553
|
+
tint?: number;
|
|
1554
|
+
}
|
|
1555
|
+
|
|
1207
1556
|
/** Post-transform bitmap rectangle a candle-body painter fills. */
|
|
1208
1557
|
declare interface CandleGeometry {
|
|
1209
1558
|
x: number;
|
|
@@ -1212,6 +1561,51 @@ declare interface CandleGeometry {
|
|
|
1212
1561
|
height: number;
|
|
1213
1562
|
}
|
|
1214
1563
|
|
|
1564
|
+
/** What one intro frame should look like. */
|
|
1565
|
+
export declare interface CandleIntroDirectives {
|
|
1566
|
+
/** Horizontal clip window in bitmap px applied to the whole pass (volume
|
|
1567
|
+
* band included). Omitted sides default to the pane edges. */
|
|
1568
|
+
clip?: {
|
|
1569
|
+
fromX?: number;
|
|
1570
|
+
toX?: number;
|
|
1571
|
+
};
|
|
1572
|
+
/** Per-element transform — called for every wick, body, and volume bar. */
|
|
1573
|
+
element?: (el: CandleIntroElement) => CandleElementTransform;
|
|
1574
|
+
}
|
|
1575
|
+
|
|
1576
|
+
/** Arguments handed to {@link CandleIntroDirectives.element} per element. */
|
|
1577
|
+
export declare interface CandleIntroElement extends WaveIntroElement {
|
|
1578
|
+
/** Which candle element is being transformed. */
|
|
1579
|
+
element: 'wick' | 'body' | 'volume';
|
|
1580
|
+
/** Settled left edge in bitmap px. */
|
|
1581
|
+
x: number;
|
|
1582
|
+
/** Settled top edge in bitmap px. */
|
|
1583
|
+
topY: number;
|
|
1584
|
+
/** Settled bottom edge in bitmap px. */
|
|
1585
|
+
bottomY: number;
|
|
1586
|
+
/** Y the element unfolds around — the open price for wick/body, the band
|
|
1587
|
+
* baseline for volume. */
|
|
1588
|
+
anchorY: number;
|
|
1589
|
+
/** Element width in bitmap px. */
|
|
1590
|
+
barWidth: number;
|
|
1591
|
+
}
|
|
1592
|
+
|
|
1593
|
+
/** One frame of candlestick intro choreography. */
|
|
1594
|
+
export declare type CandleIntroFn = (frame: CandleIntroFrame) => CandleIntroDirectives;
|
|
1595
|
+
|
|
1596
|
+
/** Read view of one candlestick intro frame. */
|
|
1597
|
+
export declare interface CandleIntroFrame extends WaveIntroFrame {
|
|
1598
|
+
/** Time → bitmap X through the live time scale. */
|
|
1599
|
+
timeToX(time: number): number;
|
|
1600
|
+
/**
|
|
1601
|
+
* Placeholder shapes the loading indicator was showing when this history
|
|
1602
|
+
* reveal armed — present only on a history-reveal frame that followed a
|
|
1603
|
+
* loading-indicator hand-off (see `skeletonMorphIntro`). Absent on
|
|
1604
|
+
* initial-load intro frames and on reveals with no hand-off.
|
|
1605
|
+
*/
|
|
1606
|
+
placeholders?: readonly MorphPlaceholder[];
|
|
1607
|
+
}
|
|
1608
|
+
|
|
1215
1609
|
/** Arguments handed to a {@link CandlePainter} once per candle body. */
|
|
1216
1610
|
export declare interface CandlePaintArgs {
|
|
1217
1611
|
geom: CandleGeometry;
|
|
@@ -1265,9 +1659,11 @@ declare interface CandlestickDirectionColors {
|
|
|
1265
1659
|
* - `'fade-unfold'` *(default)* — fade + unfold combined; the default because a lone fade is
|
|
1266
1660
|
* hard to notice in streaming demos, while the body-unfold gives a clear visual anchor.
|
|
1267
1661
|
*/
|
|
1268
|
-
declare type CandlestickEntryAnimation = 'none' | 'fade' | 'unfold' | 'slide' | 'fade-unfold';
|
|
1662
|
+
export declare type CandlestickEntryAnimation = 'none' | 'fade' | 'unfold' | 'slide' | 'fade-unfold';
|
|
1269
1663
|
|
|
1270
|
-
export declare const CandlestickSeries: DefineComponent<__VLS_Props_2, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_2> & Readonly<{}>, {
|
|
1664
|
+
export declare const CandlestickSeries: DefineComponent<__VLS_Props_2, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_2> & Readonly<{}>, {
|
|
1665
|
+
visible: boolean;
|
|
1666
|
+
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
|
|
1271
1667
|
|
|
1272
1668
|
/** Series definition for `chart.addSeries` — keeps the chart renderer-agnostic
|
|
1273
1669
|
* so hosts that never render candles don't bundle this module. */
|
|
@@ -1310,6 +1706,63 @@ export declare interface CandlestickSeriesOptions {
|
|
|
1310
1706
|
* @see CandlestickSeriesOptions.entryAnimation
|
|
1311
1707
|
*/
|
|
1312
1708
|
entryMs?: number | false;
|
|
1709
|
+
/**
|
|
1710
|
+
* Initial-load intro animation — a `CandleIntroFn`, usually one of the
|
|
1711
|
+
* shipped factories: `candleUnfoldIntro()` (the default),
|
|
1712
|
+
* `wickBodyIntro()`, `riseIntro()`, `fadeIntro()`. Independent of
|
|
1713
|
+
* `entryAnimation` — the intro plays once on the first data seed,
|
|
1714
|
+
* streaming entrances keep their own style.
|
|
1715
|
+
*
|
|
1716
|
+
* @see introMs — cross-linked duration for this animation.
|
|
1717
|
+
*/
|
|
1718
|
+
introAnimation?: CandleIntroFn;
|
|
1719
|
+
/**
|
|
1720
|
+
* Initial-load reveal duration in milliseconds. On the first data seed
|
|
1721
|
+
* (empty → non-empty) candles reveal in a left-to-right wave: each candle
|
|
1722
|
+
* tweens for `introMs`, starts staggered across another `introMs`, so the
|
|
1723
|
+
* full wave lasts ~2×. The visual style is picked by `introAnimation`.
|
|
1724
|
+
* Default: `500`.
|
|
1725
|
+
*
|
|
1726
|
+
* ```
|
|
1727
|
+
* // Per-series override:
|
|
1728
|
+
* <CandlestickSeries options={{ introMs: 800 }} data={data} />
|
|
1729
|
+
*
|
|
1730
|
+
* // Chart-level default:
|
|
1731
|
+
* <ChartContainer animations={{ series: { candlestick: { intro: 800 } } }}>
|
|
1732
|
+
* <CandlestickSeries data={data} />
|
|
1733
|
+
* </ChartContainer>
|
|
1734
|
+
* ```
|
|
1735
|
+
*
|
|
1736
|
+
* `false` or `0` disables the intro. Bulk re-seeds of a non-empty series
|
|
1737
|
+
* never replay it. Skipped entirely under `prefers-reduced-motion`.
|
|
1738
|
+
*/
|
|
1739
|
+
introMs?: number | false;
|
|
1740
|
+
/**
|
|
1741
|
+
* History-prepend reveal — plays when older points land at the front of
|
|
1742
|
+
* the series (the `EdgeLoader` load-more-on-scroll path). A wave sweeps
|
|
1743
|
+
* from the data boundary into the new history; each candle's stagger
|
|
1744
|
+
* position is `0` at the boundary and `1` at the deepest new point, so
|
|
1745
|
+
* intro factories that read `el.progress` (`fadeIntro()` — the default,
|
|
1746
|
+
* `riseIntro()`, `candleUnfoldIntro()`, `wickBodyIntro()`) work here
|
|
1747
|
+
* unchanged. Clip directives are interpreted in reveal space: `x = 0` at
|
|
1748
|
+
* the boundary, increasing toward the older end.
|
|
1749
|
+
*
|
|
1750
|
+
* The fn receives a localized frame: `range` is the prepended time span
|
|
1751
|
+
* (not the visible window) and `width` is that span's bitmap width.
|
|
1752
|
+
*
|
|
1753
|
+
* `'none'` disables the reveal — prepended points appear instantly.
|
|
1754
|
+
*
|
|
1755
|
+
* @see historyRevealMs — cross-linked duration for this animation.
|
|
1756
|
+
*/
|
|
1757
|
+
historyReveal?: CandleIntroFn | 'none';
|
|
1758
|
+
/**
|
|
1759
|
+
* History-prepend reveal duration in milliseconds — the per-candle wave
|
|
1760
|
+
* duration; the full reveal lasts ~2×. Default: `400`. `false` or `0`
|
|
1761
|
+
* disables the reveal. Skipped entirely under `prefers-reduced-motion`.
|
|
1762
|
+
*
|
|
1763
|
+
* @see CandlestickSeriesOptions.historyReveal
|
|
1764
|
+
*/
|
|
1765
|
+
historyRevealMs?: number | false;
|
|
1313
1766
|
/**
|
|
1314
1767
|
* How long the displayed OHLC takes to catch up to the actual last value
|
|
1315
1768
|
* on every `updateLastPoint`. Default: `250` ms.
|
|
@@ -1349,13 +1802,36 @@ export declare interface CandlestickSeriesOptions {
|
|
|
1349
1802
|
candlePainter?: CandlePainter;
|
|
1350
1803
|
}
|
|
1351
1804
|
|
|
1805
|
+
/** Each candle unfolds from its open price in a left-to-right wave — the
|
|
1806
|
+
* default intro. Alpha rides the same progress as the unfold so a candle
|
|
1807
|
+
* still waiting for the wave front stays invisible instead of painting as
|
|
1808
|
+
* a flat, min-height line at its open price. */
|
|
1809
|
+
export declare function candleUnfoldIntro(): CandleIntroFn;
|
|
1810
|
+
|
|
1352
1811
|
export declare const catppuccin: ThemePreset;
|
|
1353
1812
|
|
|
1813
|
+
/**
|
|
1814
|
+
* Center-out reveal: the clip window opens from the pane's horizontal
|
|
1815
|
+
* center outward, a glowing head riding each front.
|
|
1816
|
+
*/
|
|
1817
|
+
export declare function centerOutIntro(): LineIntroFn;
|
|
1818
|
+
|
|
1354
1819
|
export declare const ChartContainer: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
1355
1820
|
|
|
1356
1821
|
/** Events emitted by {@link ChartInstance}. */
|
|
1357
1822
|
declare interface ChartEvents {
|
|
1358
1823
|
crosshairMove: (pos: CrosshairPosition | null) => void;
|
|
1824
|
+
/** Fired on a click (or tap) on the chart canvas that isn't the tail end of a pan drag. */
|
|
1825
|
+
pointClick: (info: PointClickInfo) => void;
|
|
1826
|
+
/** Fired on a double-click on the chart canvas. Chart also responds by calling `fitContent()`. */
|
|
1827
|
+
pointDoubleClick: (info: PointClickInfo) => void;
|
|
1828
|
+
/**
|
|
1829
|
+
* Fired when the spatially-hovered series/index changes (pie, heatmap, or
|
|
1830
|
+
* a custom spatial kind) — `null` when the pointer leaves every hit area.
|
|
1831
|
+
* Time-series series have no pixel geometry to hover this way; read
|
|
1832
|
+
* `crosshairMove` + `getDataAtTime`/`buildHoverSnapshots` for those.
|
|
1833
|
+
*/
|
|
1834
|
+
seriesHover: (hit: SeriesHoverInfo | null) => void;
|
|
1359
1835
|
viewportChange: () => void;
|
|
1360
1836
|
dataUpdate: () => void;
|
|
1361
1837
|
seriesChange: () => void;
|
|
@@ -1422,6 +1898,10 @@ export declare class ChartInstance extends EventEmitter<ChartEvents> implements
|
|
|
1422
1898
|
id?: string;
|
|
1423
1899
|
label?: string;
|
|
1424
1900
|
}>): string;
|
|
1901
|
+
addSeries(type: 'heatmap', options?: Partial<HeatmapSeriesOptions & {
|
|
1902
|
+
id?: string;
|
|
1903
|
+
label?: string;
|
|
1904
|
+
}>): string;
|
|
1425
1905
|
addSeries<O>(def: SeriesDefinition<O>, options?: Partial<O> & {
|
|
1426
1906
|
layers?: number;
|
|
1427
1907
|
id?: string;
|
|
@@ -1488,6 +1968,14 @@ export declare class ChartInstance extends EventEmitter<ChartEvents> implements
|
|
|
1488
1968
|
* underlying animator mutates between frames.
|
|
1489
1969
|
*/
|
|
1490
1970
|
getAnimationState(): AnimationState;
|
|
1971
|
+
/**
|
|
1972
|
+
* Reveal-front position in `[0, 1]` of any in-flight initial-load intro.
|
|
1973
|
+
* With a `seriesId`, that series' own front; without, the minimum across
|
|
1974
|
+
* every visible time series — overlays wait for the slowest reveal. `1`
|
|
1975
|
+
* whenever nothing is introing. Overlay components (the Y-label badge,
|
|
1976
|
+
* annotations) read this to reveal their entrance in step with the draw.
|
|
1977
|
+
*/
|
|
1978
|
+
getIntroFront(seriesId?: string): number;
|
|
1491
1979
|
/**
|
|
1492
1980
|
* Replace all data for a series.
|
|
1493
1981
|
*
|
|
@@ -1500,6 +1988,20 @@ export declare class ChartInstance extends EventEmitter<ChartEvents> implements
|
|
|
1500
1988
|
setSeriesData(id: string, data: unknown, layerIndex?: number): void;
|
|
1501
1989
|
/** Append a new data point to the end of a series (real-time tick). */
|
|
1502
1990
|
appendData(id: string, point: OHLCInput | TimePointInput, layerIndex?: number): void;
|
|
1991
|
+
/**
|
|
1992
|
+
* Prepend older points to the front of a series — the "load more history on
|
|
1993
|
+
* scroll" path. Unlike {@link setSeriesData}, this deliberately does NOT set
|
|
1994
|
+
* `#dataReplaceSnapPending`: the visible window and the data inside it don't
|
|
1995
|
+
* change, so the viewport must stay put (X) and the Y axis eases if newly
|
|
1996
|
+
* revealed history shifts the range — instead of the full-span re-fit and
|
|
1997
|
+
* instant dual-axis snap a bulk `setSeriesData` replace would force. Routes
|
|
1998
|
+
* through the streaming `onPointAppended` engine signal via `onDataChanged`.
|
|
1999
|
+
*
|
|
2000
|
+
* `points` must be sorted ascending and sit strictly before the current
|
|
2001
|
+
* first point; the sync reconciler guarantees this before calling here.
|
|
2002
|
+
* No-op if the renderer doesn't support prepend.
|
|
2003
|
+
*/
|
|
2004
|
+
prependData(id: string, points: (OHLCInput | TimePointInput)[], layerIndex?: number): void;
|
|
1503
2005
|
/** Update the last data point of a series in place (e.g. live candle update). */
|
|
1504
2006
|
updateData(id: string, point: OHLCInput | TimePointInput, layerIndex?: number): void;
|
|
1505
2007
|
/**
|
|
@@ -1517,7 +2019,7 @@ export declare class ChartInstance extends EventEmitter<ChartEvents> implements
|
|
|
1517
2019
|
*/
|
|
1518
2020
|
keepLast(id: string, count: number, layerIndex?: number): void;
|
|
1519
2021
|
/** Update visual options (color, width, etc.) for an existing series. */
|
|
1520
|
-
updateSeriesOptions(id: string, options: Partial<CandlestickSeriesOptions> | Partial<LineSeriesOptions> | Partial<BarSeriesOptions> | Partial<PieSeriesOptions>): void;
|
|
2022
|
+
updateSeriesOptions(id: string, options: Partial<CandlestickSeriesOptions> | Partial<LineSeriesOptions> | Partial<BarSeriesOptions> | Partial<PieSeriesOptions> | Partial<HeatmapSeriesOptions>): void;
|
|
1521
2023
|
/**
|
|
1522
2024
|
* Batch multiple updates: suppress recomputes until `fn` returns. Exceptions
|
|
1523
2025
|
* inside `fn` still flush the batch so counters don't leak across calls.
|
|
@@ -1651,15 +2153,24 @@ export declare class ChartInstance extends EventEmitter<ChartEvents> implements
|
|
|
1651
2153
|
}[] | null;
|
|
1652
2154
|
getSeriesIds(): string[];
|
|
1653
2155
|
/**
|
|
1654
|
-
*
|
|
1655
|
-
*
|
|
2156
|
+
* Whether pan/zoom gestures currently apply — true when any visible series
|
|
2157
|
+
* has a time axis. Part of the {@link PanZoomTarget} surface: on a
|
|
2158
|
+
* spatial-only chart (pie, heatmap) the interaction layer stops capturing
|
|
2159
|
+
* wheel and touch events, so the page scrolls normally under the cursor.
|
|
2160
|
+
*/
|
|
2161
|
+
canPanZoom(): boolean;
|
|
2162
|
+
/**
|
|
2163
|
+
* Filter `getSeriesIds()` by renderer type. A concrete kind (`'pie'`,
|
|
2164
|
+
* `'heatmap'`, a custom kind, …) returns series of that exact kind;
|
|
2165
|
+
* `'time'` returns every time-axis series (line/bar/candlestick and any
|
|
2166
|
+
* custom time-series kind).
|
|
1656
2167
|
*
|
|
1657
2168
|
* - `opts.visibleOnly` — exclude series with `isSeriesVisible=false`; for
|
|
1658
2169
|
* multi-layer series also exclude when every layer is hidden.
|
|
1659
2170
|
* - `opts.singleLayerOnly` — exclude series with more than one layer.
|
|
1660
2171
|
* Useful for YLabel fallback priority (stick to a single line first).
|
|
1661
2172
|
*/
|
|
1662
|
-
getSeriesIdsByType(type:
|
|
2173
|
+
getSeriesIdsByType(type: SeriesKind | 'time', opts?: {
|
|
1663
2174
|
visibleOnly?: boolean;
|
|
1664
2175
|
singleLayerOnly?: boolean;
|
|
1665
2176
|
}): string[];
|
|
@@ -1673,6 +2184,14 @@ export declare class ChartInstance extends EventEmitter<ChartEvents> implements
|
|
|
1673
2184
|
value: number;
|
|
1674
2185
|
isLive: boolean;
|
|
1675
2186
|
} | null;
|
|
2187
|
+
/**
|
|
2188
|
+
* Stacked value at an arbitrary `time` — the cumulative stack top at that
|
|
2189
|
+
* sample, sharing a basis with {@link getStackedLastValue}. Falls back to the
|
|
2190
|
+
* nearest raw sample (close / value) for renderers without a stacked concept
|
|
2191
|
+
* (Candlestick, single-layer Line/Bar). Returns `null` for unknown ids or
|
|
2192
|
+
* when no sample sits near `time`. Used by the YLabel intro count-up start.
|
|
2193
|
+
*/
|
|
2194
|
+
getStackedValueAtTime(seriesId: string, time: number): number | null;
|
|
1676
2195
|
/**
|
|
1677
2196
|
* Per-layer last snapshots with each layer's own `time`. Returns `null`
|
|
1678
2197
|
* for single-layer renderers or when no visible layer has data. Used by
|
|
@@ -1717,6 +2236,12 @@ export declare class ChartInstance extends EventEmitter<ChartEvents> implements
|
|
|
1717
2236
|
/** Apply a new theme and update series colors where appropriate. */
|
|
1718
2237
|
setTheme(theme: ChartTheme): void;
|
|
1719
2238
|
getTheme(): ChartTheme;
|
|
2239
|
+
/** BCP 47 locale applied to the built-in time-axis / tooltip / crosshair formatting. */
|
|
2240
|
+
setLocale(locale: string | undefined): void;
|
|
2241
|
+
getLocale(): string | undefined;
|
|
2242
|
+
/** IANA timezone applied to the same built-in date-time formatting. */
|
|
2243
|
+
setTimeZone(timeZone: string | undefined): void;
|
|
2244
|
+
getTimeZone(): string | undefined;
|
|
1720
2245
|
/** Update axis configuration and re-render. */
|
|
1721
2246
|
setAxis(config: AxisConfig): void;
|
|
1722
2247
|
/**
|
|
@@ -1751,6 +2276,14 @@ export declare class ChartInstance extends EventEmitter<ChartEvents> implements
|
|
|
1751
2276
|
setGrid(grid: {
|
|
1752
2277
|
visible: boolean;
|
|
1753
2278
|
}): void;
|
|
2279
|
+
/**
|
|
2280
|
+
* Set or clear the edge fade masks (see {@link ChartOptions.fade}).
|
|
2281
|
+
* Content the main layer draws inside a zone dissolves toward that edge.
|
|
2282
|
+
* `right` omitted re-arms its default (track the Y-axis width); pass
|
|
2283
|
+
* `{ top: 0, right: 0, left: 0 }` to turn every mask off. Takes effect on
|
|
2284
|
+
* the next render frame.
|
|
2285
|
+
*/
|
|
2286
|
+
setFade(fade: ChartOptions['fade']): void;
|
|
1754
2287
|
/**
|
|
1755
2288
|
* Set the visual state for one side of the chart. Typically called in
|
|
1756
2289
|
* response to the `onEdgeReached` callback:
|
|
@@ -1764,7 +2297,14 @@ export declare class ChartInstance extends EventEmitter<ChartEvents> implements
|
|
|
1764
2297
|
/** Read the current host-declared state for a given edge. */
|
|
1765
2298
|
getEdgeState(side: EdgeSide): EdgeState;
|
|
1766
2299
|
/**
|
|
1767
|
-
*
|
|
2300
|
+
* Swap the painter used for a side's `loading` spinner — the same
|
|
2301
|
+
* pluggable-function contract as the series intro animations. `null`
|
|
2302
|
+
* (default) falls back to the built-in three-dot spinner. Takes effect
|
|
2303
|
+
* immediately if that side is currently in the `loading` state.
|
|
2304
|
+
*/
|
|
2305
|
+
setEdgeIndicator(side: EdgeSide, indicator: LoadingIndicatorFn | null): void;
|
|
2306
|
+
/**
|
|
2307
|
+
* Notify chart that a YLabel overlay is mounted / unmounted. Currently a
|
|
1768
2308
|
* no-op — placeholder for the right-padding reflow that will adjust the
|
|
1769
2309
|
* chart area to make room for the badge.
|
|
1770
2310
|
* TODO: implement reflow.
|
|
@@ -1867,10 +2407,35 @@ export declare interface ChartOptions {
|
|
|
1867
2407
|
};
|
|
1868
2408
|
/** Enable zoom, pan, and crosshair interactions. Defaults to true. */
|
|
1869
2409
|
interactive?: boolean;
|
|
2410
|
+
/**
|
|
2411
|
+
* BCP 47 locale applied to the built-in time-axis / tooltip / crosshair
|
|
2412
|
+
* date-time formatting (e.g. `'de-DE'`). Default: `'en-US'`. Live —
|
|
2413
|
+
* `chart.setLocale()` updates it after construction. Ignored for a series
|
|
2414
|
+
* that installs a custom formatter via `chart.timeScale.setFormat()`.
|
|
2415
|
+
*/
|
|
2416
|
+
locale?: string;
|
|
2417
|
+
/**
|
|
2418
|
+
* IANA timezone applied to the same built-in date-time formatting (e.g.
|
|
2419
|
+
* `'America/New_York'`). Default: the browser's local timezone. Live —
|
|
2420
|
+
* `chart.setTimeZone()` updates it after construction.
|
|
2421
|
+
*/
|
|
2422
|
+
timeZone?: string;
|
|
1870
2423
|
/** Background grid configuration. Default: `{ visible: true }`. */
|
|
1871
2424
|
grid?: {
|
|
1872
2425
|
visible: boolean;
|
|
1873
2426
|
};
|
|
2427
|
+
/**
|
|
2428
|
+
* Soft alpha fade applied at the edges of the plot area. Anything the main
|
|
2429
|
+
* layer draws inside a zone (series, grid, time-region bands) dissolves to
|
|
2430
|
+
* transparent as it approaches the edge: horizontally sliding under the
|
|
2431
|
+
* Y-axis labels on the right (`right`, **on by default**), toward a
|
|
2432
|
+
* floating Title / InfoBar at the top (`top`), or out the left edge
|
|
2433
|
+
* (`left`). The mask *erases* pixels rather than painting a cover color,
|
|
2434
|
+
* so it stays correct over any container background — including the
|
|
2435
|
+
* default CSS gradient. Live — `chart.setFade()` updates it after
|
|
2436
|
+
* construction.
|
|
2437
|
+
*/
|
|
2438
|
+
fade?: FadeConfig;
|
|
1874
2439
|
/**
|
|
1875
2440
|
* Animation control. Grouped as `axis: { y, x, ticks }` (axis-side
|
|
1876
2441
|
* behaviour), `toggle` (series visibility — alpha + Y refit), and
|
|
@@ -1993,6 +2558,20 @@ export declare interface ChartTheme {
|
|
|
1993
2558
|
*/
|
|
1994
2559
|
otherColor: string;
|
|
1995
2560
|
};
|
|
2561
|
+
/**
|
|
2562
|
+
* Heatmap sequential ramp. Optional so hand-built theme literals keep
|
|
2563
|
+
* compiling — the renderer falls back to a ramp derived from
|
|
2564
|
+
* {@link ChartTheme.line} `color` and the background at render time.
|
|
2565
|
+
*/
|
|
2566
|
+
heatmap?: {
|
|
2567
|
+
/**
|
|
2568
|
+
* Ramp stops, low → high, interpolated perceptually. {@link createTheme}
|
|
2569
|
+
* derives a two-stop single-hue ramp: a faint accent wash near the
|
|
2570
|
+
* surface up to the full accent — which flips anchor automatically with
|
|
2571
|
+
* theme polarity (low values sink into the background in both modes).
|
|
2572
|
+
*/
|
|
2573
|
+
colors: string[];
|
|
2574
|
+
};
|
|
1996
2575
|
/** Bollinger band / envelope fill colors. */
|
|
1997
2576
|
bands: {
|
|
1998
2577
|
/** Fill for the upper band region (above the middle band). */
|
|
@@ -2163,12 +2742,38 @@ export declare interface CrosshairPosition {
|
|
|
2163
2742
|
/** Path-shape selector for {@link tracePath}. */
|
|
2164
2743
|
export declare type CurveKind = 'straight' | 'smooth' | 'stepped';
|
|
2165
2744
|
|
|
2745
|
+
/**
|
|
2746
|
+
* A custom spatial renderer with no time axis — implement this (rather than
|
|
2747
|
+
* {@link PieSeriesRenderer} / {@link HeatmapSeriesRenderer}, which are reserved
|
|
2748
|
+
* for the built-ins) when writing a new non-time-axis series from scratch,
|
|
2749
|
+
* e.g. a radar or treemap chart. Pick any `kind` that isn't a built-in one.
|
|
2750
|
+
*/
|
|
2751
|
+
export declare interface CustomSpatialSeriesRenderer extends BaseSeriesRenderer {
|
|
2752
|
+
readonly kind: string;
|
|
2753
|
+
}
|
|
2754
|
+
|
|
2755
|
+
/**
|
|
2756
|
+
* Structural equality for plain option bags that may carry function-valued
|
|
2757
|
+
* fields (e.g. `AnimationsConfig.axis.y.curve`, a transition factory).
|
|
2758
|
+
* Functions (and any other non-plain value) compare by reference — only
|
|
2759
|
+
* arrays and plain objects recurse. Used to tell a caller's brand-new inline
|
|
2760
|
+
* object literal (same values, new reference) apart from a genuine option
|
|
2761
|
+
* change, so wrappers can skip an expensive rebuild in the former case.
|
|
2762
|
+
*/
|
|
2763
|
+
export declare function deepEqual(a: unknown, b: unknown): boolean;
|
|
2764
|
+
|
|
2765
|
+
declare const _default: DefineComponent<__VLS_Props_16, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_16> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {
|
|
2766
|
+
containerRef: HTMLDivElement;
|
|
2767
|
+
}, HTMLDivElement>;
|
|
2768
|
+
export { _default as TimeAxis }
|
|
2769
|
+
export { _default as XAxis }
|
|
2770
|
+
|
|
2166
2771
|
export declare function detectInterval(times: number[]): number;
|
|
2167
2772
|
|
|
2168
2773
|
export declare const dracula: ThemePreset;
|
|
2169
2774
|
|
|
2170
2775
|
/** Payload for {@link ChartOptions.onEdgeReached}. */
|
|
2171
|
-
declare interface EdgeReachedInfo {
|
|
2776
|
+
export declare interface EdgeReachedInfo {
|
|
2172
2777
|
side: EdgeSide;
|
|
2173
2778
|
/** Time units the user pulled past the soft bound. */
|
|
2174
2779
|
overshoot: number;
|
|
@@ -2177,7 +2782,9 @@ declare interface EdgeReachedInfo {
|
|
|
2177
2782
|
}
|
|
2178
2783
|
|
|
2179
2784
|
/** Which data side the user pulled past during a gesture. */
|
|
2180
|
-
declare type EdgeSide = 'left' | 'right';
|
|
2785
|
+
export declare type EdgeSide = 'left' | 'right';
|
|
2786
|
+
|
|
2787
|
+
declare type EdgeSide_2 = 'left' | 'right';
|
|
2181
2788
|
|
|
2182
2789
|
/**
|
|
2183
2790
|
* Host-controlled visual state for a chart edge:
|
|
@@ -2186,7 +2793,7 @@ declare type EdgeSide = 'left' | 'right';
|
|
|
2186
2793
|
* - `no-data`: a dashed boundary line + "No more data" label appears at the data edge.
|
|
2187
2794
|
* - `has-more`: reserved — currently behaves like `idle`. Use when more data exists but is not being fetched.
|
|
2188
2795
|
*/
|
|
2189
|
-
declare type EdgeState = 'idle' | 'loading' | 'no-data' | 'has-more';
|
|
2796
|
+
export declare type EdgeState = 'idle' | 'loading' | 'no-data' | 'has-more';
|
|
2190
2797
|
|
|
2191
2798
|
declare class EventEmitter<Events = Record<string, Listener>> {
|
|
2192
2799
|
private listeners;
|
|
@@ -2196,6 +2803,33 @@ declare class EventEmitter<Events = Record<string, Listener>> {
|
|
|
2196
2803
|
removeAllListeners(): void;
|
|
2197
2804
|
}
|
|
2198
2805
|
|
|
2806
|
+
/** Shape of {@link ChartOptions.fade}. */
|
|
2807
|
+
declare interface FadeConfig {
|
|
2808
|
+
/** Fade-zone height in CSS pixels, measured down from the top of the plot
|
|
2809
|
+
* area. `0` / omitted disables the mask. */
|
|
2810
|
+
top?: number;
|
|
2811
|
+
/**
|
|
2812
|
+
* Total width in CSS pixels of the horizontal dissolve at the right edge.
|
|
2813
|
+
* The ramp finishes just inside the Y-axis column — 12px past the pane
|
|
2814
|
+
* edge, before the right-anchored label glyphs start — so content melts
|
|
2815
|
+
* on approach (pan / tail-scroll exit) and is fully gone before it can
|
|
2816
|
+
* cross any axis text; the rest of the width runs backward into the pane
|
|
2817
|
+
* as a soft lead-in. **Defaults to a 60px ramp** — on out of the box;
|
|
2818
|
+
* `0` disables. A no-op while the Y axis is hidden.
|
|
2819
|
+
*/
|
|
2820
|
+
right?: number;
|
|
2821
|
+
/** Fade-zone width in CSS pixels at the left pane edge — content panning
|
|
2822
|
+
* out to the left dissolves instead of hard-clipping at the canvas
|
|
2823
|
+
* boundary. `0` / omitted disables. */
|
|
2824
|
+
left?: number;
|
|
2825
|
+
}
|
|
2826
|
+
|
|
2827
|
+
/**
|
|
2828
|
+
* Plain staggered fade-in, no geometry motion. Works for both bar and
|
|
2829
|
+
* candlestick series.
|
|
2830
|
+
*/
|
|
2831
|
+
export declare function fadeIntro(): WaveIntroFn;
|
|
2832
|
+
|
|
2199
2833
|
/**
|
|
2200
2834
|
* Fill a rounded rectangle with per-corner masking, using manual `arcTo` so the
|
|
2201
2835
|
* output is deterministic and independent of `CanvasRenderingContext2D.roundRect`
|
|
@@ -2218,7 +2852,7 @@ export declare function formatCompact(v: number, opts?: {
|
|
|
2218
2852
|
decimals?: number;
|
|
2219
2853
|
}): string;
|
|
2220
2854
|
|
|
2221
|
-
export declare function formatDate(timestamp: number): string;
|
|
2855
|
+
export declare function formatDate(timestamp: number, opts?: TimeFormatOptions): string;
|
|
2222
2856
|
|
|
2223
2857
|
/**
|
|
2224
2858
|
* Full-precision display that adapts decimal count to the value's magnitude.
|
|
@@ -2227,7 +2861,7 @@ export declare function formatDate(timestamp: number): string;
|
|
|
2227
2861
|
*/
|
|
2228
2862
|
export declare function formatPriceAdaptive(v: number): string;
|
|
2229
2863
|
|
|
2230
|
-
export declare function formatTime(timestamp: number, interval: number): string;
|
|
2864
|
+
export declare function formatTime(timestamp: number, interval: number, opts?: TimeFormatOptions): string;
|
|
2231
2865
|
|
|
2232
2866
|
declare type FrameKind = 'main' | 'overlay';
|
|
2233
2867
|
|
|
@@ -2242,10 +2876,103 @@ declare interface FrameTimingSample {
|
|
|
2242
2876
|
|
|
2243
2877
|
export declare const githubLight: ThemePreset;
|
|
2244
2878
|
|
|
2879
|
+
/** Bars fade-grow up from the baseline in a left-to-right wave — the
|
|
2880
|
+
* default intro. */
|
|
2881
|
+
export declare function growIntro(): BarIntroFn;
|
|
2882
|
+
|
|
2245
2883
|
export declare const gruvbox: ThemePreset;
|
|
2246
2884
|
|
|
2247
2885
|
export declare const handwritten: ThemePreset;
|
|
2248
2886
|
|
|
2887
|
+
/** One cell of a heatmap matrix — a (column, row) coordinate with a magnitude. */
|
|
2888
|
+
export declare interface HeatmapCellData {
|
|
2889
|
+
/** Column key. Column order follows first appearance unless {@link HeatmapSeriesOptions.columns} pins it. */
|
|
2890
|
+
x: string;
|
|
2891
|
+
/** Row key. Row order follows first appearance unless {@link HeatmapSeriesOptions.rows} pins it. */
|
|
2892
|
+
y: string;
|
|
2893
|
+
/** Magnitude mapped onto the sequential color ramp. */
|
|
2894
|
+
value: number;
|
|
2895
|
+
/** Explicit fill override for this cell. Skips the ramp entirely. */
|
|
2896
|
+
color?: string;
|
|
2897
|
+
}
|
|
2898
|
+
|
|
2899
|
+
/** Per-cell value labels drawn inside heatmap cells. */
|
|
2900
|
+
export declare interface HeatmapCellLabelsOptions {
|
|
2901
|
+
/** Font size in CSS pixels. Default: 10. */
|
|
2902
|
+
fontSize?: number;
|
|
2903
|
+
/**
|
|
2904
|
+
* Value formatter. Default: decimals adapt to the value domain — 2 for
|
|
2905
|
+
* unit-scale domains (correlations), integers for wide ones, compact
|
|
2906
|
+
* notation (`1.2K`) past 1000.
|
|
2907
|
+
*/
|
|
2908
|
+
format?: (value: number) => string;
|
|
2909
|
+
}
|
|
2910
|
+
|
|
2911
|
+
export declare const HeatmapSeries: DefineComponent<__VLS_Props_4, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_4> & Readonly<{}>, {
|
|
2912
|
+
visible: boolean;
|
|
2913
|
+
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
|
|
2914
|
+
|
|
2915
|
+
/** Series definition for `chart.addSeries` — keeps the chart renderer-agnostic
|
|
2916
|
+
* so hosts that never render heatmaps don't bundle this module. */
|
|
2917
|
+
export declare const HeatmapSeriesDef: SeriesDefinition<HeatmapSeriesOptions>;
|
|
2918
|
+
|
|
2919
|
+
/** Visual options for a heatmap series. */
|
|
2920
|
+
export declare interface HeatmapSeriesOptions {
|
|
2921
|
+
/**
|
|
2922
|
+
* Sequential ramp stops, low → high, interpolated perceptually (OKLab).
|
|
2923
|
+
* Two stops give a classic single-hue ramp; three make a diverging scale.
|
|
2924
|
+
* Default: derived from the theme — a faint wash of the accent color near
|
|
2925
|
+
* the surface up to the full accent (`theme.heatmap.colors` when present).
|
|
2926
|
+
*/
|
|
2927
|
+
colors?: string[];
|
|
2928
|
+
/** Domain minimum mapped to the first ramp stop. Default: the data minimum. */
|
|
2929
|
+
min?: number;
|
|
2930
|
+
/** Domain maximum mapped to the last ramp stop. Default: the data maximum. */
|
|
2931
|
+
max?: number;
|
|
2932
|
+
/** Surface gap between adjacent cells in CSS pixels. Default: 2. */
|
|
2933
|
+
gap?: number;
|
|
2934
|
+
/** Cell corner radius in CSS pixels. Default: 3. */
|
|
2935
|
+
cornerRadius?: number;
|
|
2936
|
+
/** Draw row labels (left) and column labels (bottom). Default: true. */
|
|
2937
|
+
axisLabels?: boolean;
|
|
2938
|
+
/** Draw the value inside each cell (auto-skipped when it doesn't fit). Default: false. */
|
|
2939
|
+
cellLabels?: boolean | HeatmapCellLabelsOptions;
|
|
2940
|
+
/** Explicit column order. Keys absent from the data render as empty columns. */
|
|
2941
|
+
columns?: string[];
|
|
2942
|
+
/** Explicit row order. Keys absent from the data render as empty rows. */
|
|
2943
|
+
rows?: string[];
|
|
2944
|
+
/**
|
|
2945
|
+
* Entrance duration per cell in milliseconds — the diagonal reveal wave on
|
|
2946
|
+
* first paint / grid-shape change. `0` paints instantly.
|
|
2947
|
+
* Default: chart animation config (600).
|
|
2948
|
+
*/
|
|
2949
|
+
entryMs?: number;
|
|
2950
|
+
/**
|
|
2951
|
+
* Value/color tween duration when a cell's value changes in place, and the
|
|
2952
|
+
* hover-lift ease. `0` snaps. Default: chart animation config (300).
|
|
2953
|
+
*/
|
|
2954
|
+
updateMs?: number;
|
|
2955
|
+
}
|
|
2956
|
+
|
|
2957
|
+
/** A spatial matrix renderer with no time axis (Heatmap). Has no time-series queries. */
|
|
2958
|
+
export declare interface HeatmapSeriesRenderer extends BaseSeriesRenderer {
|
|
2959
|
+
readonly kind: 'heatmap';
|
|
2960
|
+
}
|
|
2961
|
+
|
|
2962
|
+
export declare const HeatmapTooltip: DefineComponent<__VLS_Props_7, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_7> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
|
|
2963
|
+
|
|
2964
|
+
/**
|
|
2965
|
+
* Velocity-matched cubic Hermite Y transition. Direction-aware: per-call
|
|
2966
|
+
* `expandMs` (outward, default 250 ms via the engine) and `contractMs`
|
|
2967
|
+
* (inward, default 2500 ms — sticky-Y) are supplied through `retarget()`.
|
|
2968
|
+
*
|
|
2969
|
+
* Default Y transition. Bounded duration — after the supplied settle each
|
|
2970
|
+
* side lands exactly at the target with zero velocity, unlike spring's
|
|
2971
|
+
* asymptotic approach. Predictable for animations whose end-state matters
|
|
2972
|
+
* (axis labels can settle in a known time).
|
|
2973
|
+
*/
|
|
2974
|
+
export declare function hermite(): TransitionFactory<YRange>;
|
|
2975
|
+
|
|
2249
2976
|
export declare const highContrast: ThemePreset;
|
|
2250
2977
|
|
|
2251
2978
|
/** Horizontal padding expressed as a fixed pixel offset or a number of data intervals. */
|
|
@@ -2263,6 +2990,17 @@ export declare interface HoverInfo {
|
|
|
2263
2990
|
|
|
2264
2991
|
export declare const InfoBar: __VLS_WithTemplateSlots_2<typeof __VLS_component_2, __VLS_TemplateResult_2["slots"]>;
|
|
2265
2992
|
|
|
2993
|
+
export declare function isDarkBg(bg: string): boolean;
|
|
2994
|
+
|
|
2995
|
+
/**
|
|
2996
|
+
* Narrow a renderer to the time-axis variant. A capability check, not a
|
|
2997
|
+
* `kind` allowlist — any renderer implementing the required time-series
|
|
2998
|
+
* queries (own a `getTimeBounds()`) counts, including custom series kinds.
|
|
2999
|
+
* The chart's viewport, crosshair, interval detection, and Y autoscale all
|
|
3000
|
+
* dispatch through this guard.
|
|
3001
|
+
*/
|
|
3002
|
+
export declare function isTimeSeriesRenderer(renderer: SeriesRenderer): renderer is TimeSeriesRenderer;
|
|
3003
|
+
|
|
2266
3004
|
export declare const lavenderMist: ThemePreset;
|
|
2267
3005
|
|
|
2268
3006
|
export declare const Legend: __VLS_WithTemplateSlots_3<typeof __VLS_component_3, __VLS_TemplateResult_3["slots"]>;
|
|
@@ -2312,6 +3050,14 @@ declare interface LegendItemOverride {
|
|
|
2312
3050
|
|
|
2313
3051
|
declare type LegendMode = 'toggle' | 'isolate' | 'solo';
|
|
2314
3052
|
|
|
3053
|
+
/** Payload for the `onToggle` prop — one entry per user click, regardless of built-in vs custom rendering. */
|
|
3054
|
+
declare interface LegendToggleInfo {
|
|
3055
|
+
/** The clicked item's id (matches {@link LegendItem.id}). */
|
|
3056
|
+
id: string;
|
|
3057
|
+
/** Which interaction produced this change. */
|
|
3058
|
+
action: 'toggle' | 'isolate' | 'unisolate';
|
|
3059
|
+
}
|
|
3060
|
+
|
|
2315
3061
|
export declare const lightPink: ThemePreset;
|
|
2316
3062
|
|
|
2317
3063
|
/** Internal bookkeeping for a registered reference line. `coord` is a Y value (horizontal) or normalized epoch ms (vertical). */
|
|
@@ -2333,6 +3079,91 @@ declare interface LineEntry {
|
|
|
2333
3079
|
*/
|
|
2334
3080
|
declare type LineEntryAnimation = 'none' | 'grow' | 'fade';
|
|
2335
3081
|
|
|
3082
|
+
/** What one intro frame should look like. Every field is optional — an empty
|
|
3083
|
+
* object renders the frame settled. */
|
|
3084
|
+
export declare interface LineIntroDirectives {
|
|
3085
|
+
/**
|
|
3086
|
+
* Horizontal clip window in bitmap pixels. Omitted sides default to the
|
|
3087
|
+
* pane edges, so `{ toX }` is a left-to-right reveal and `{ fromX }` a
|
|
3088
|
+
* right-to-left one.
|
|
3089
|
+
*/
|
|
3090
|
+
clip?: {
|
|
3091
|
+
fromX?: number;
|
|
3092
|
+
toX?: number;
|
|
3093
|
+
};
|
|
3094
|
+
/**
|
|
3095
|
+
* Draw a stroke-only ghost of the full line under the main pass at this
|
|
3096
|
+
* alpha (the area fill is left to the main pass).
|
|
3097
|
+
*/
|
|
3098
|
+
ghostAlpha?: number;
|
|
3099
|
+
/**
|
|
3100
|
+
* Head-glow anchors — the renderer draws a pulse dot per visible layer at
|
|
3101
|
+
* each head's `time` (bell-faded over the intro window). Heads are
|
|
3102
|
+
* skipped for stacked series, where a single layer's Y is meaningless.
|
|
3103
|
+
*/
|
|
3104
|
+
heads?: Array<{
|
|
3105
|
+
x: number;
|
|
3106
|
+
time: number;
|
|
3107
|
+
}>;
|
|
3108
|
+
/**
|
|
3109
|
+
* Per-value transform applied to every rendered value (stroke, area,
|
|
3110
|
+
* stacked cumulative, trailing endpoint, overlay pulse) via the
|
|
3111
|
+
* renderer's `effectiveValue` hook.
|
|
3112
|
+
*/
|
|
3113
|
+
value?: (args: LineIntroValueArgs) => number;
|
|
3114
|
+
}
|
|
3115
|
+
|
|
3116
|
+
/** One frame of intro choreography. See the module docs for the contract. */
|
|
3117
|
+
export declare type LineIntroFn = (frame: LineIntroFrame) => LineIntroDirectives;
|
|
3118
|
+
|
|
3119
|
+
/** Read view of one intro frame — everything a {@link LineIntroFn} may need. */
|
|
3120
|
+
export declare interface LineIntroFrame {
|
|
3121
|
+
/** Linear intro progress in `[0, 1]` over the whole reveal window. */
|
|
3122
|
+
progress: number;
|
|
3123
|
+
/** Visible time range. */
|
|
3124
|
+
range: VisibleRange;
|
|
3125
|
+
/**
|
|
3126
|
+
* Plot-area width in bitmap pixels — the span `timeToX` maps the visible
|
|
3127
|
+
* range onto (excludes the Y-axis strip sharing the canvas).
|
|
3128
|
+
*/
|
|
3129
|
+
width: number;
|
|
3130
|
+
/** Plot-area height in bitmap pixels (excludes the X-axis strip). */
|
|
3131
|
+
height: number;
|
|
3132
|
+
/** The series' stacking mode — path-based intros usually degrade to a plain clip when stacked. */
|
|
3133
|
+
stacking: StackingMode;
|
|
3134
|
+
/** Time → bitmap X through the live time scale. */
|
|
3135
|
+
timeToX(time: number): number;
|
|
3136
|
+
/** Bitmap X → time — the inverse of {@link timeToX}, for mapping a clip front back into the time domain. */
|
|
3137
|
+
xToTime(x: number): number;
|
|
3138
|
+
/** Value → bitmap Y through the live Y scale. */
|
|
3139
|
+
valueToY(value: number): number;
|
|
3140
|
+
/** Number of layers in the series. */
|
|
3141
|
+
layerCount: number;
|
|
3142
|
+
/** Visible data of one layer (memoized per frame). */
|
|
3143
|
+
layerData(layerIndex: number): readonly TimePoint[];
|
|
3144
|
+
/** Mean of the layer's visible finite values, or `null` for an empty/poisoned layer (memoized per frame). */
|
|
3145
|
+
layerMean(layerIndex: number): number | null;
|
|
3146
|
+
/**
|
|
3147
|
+
* Bitmap-space polyline of the first visible layer (finite values only,
|
|
3148
|
+
* memoized per frame), or `null` when no layer has two drawable points.
|
|
3149
|
+
*/
|
|
3150
|
+
primaryPath(): ReadonlyArray<{
|
|
3151
|
+
x: number;
|
|
3152
|
+
y: number;
|
|
3153
|
+
time: number;
|
|
3154
|
+
}> | null;
|
|
3155
|
+
}
|
|
3156
|
+
|
|
3157
|
+
/** Arguments handed to {@link LineIntroDirectives.value} for every rendered value. */
|
|
3158
|
+
export declare interface LineIntroValueArgs {
|
|
3159
|
+
layerIndex: number;
|
|
3160
|
+
time: number;
|
|
3161
|
+
/** The value the renderer would draw without the intro (live smoothing included). */
|
|
3162
|
+
value: number;
|
|
3163
|
+
/** Normalized x-position of `time` across the visible range, clamped to `[0, 1]`. */
|
|
3164
|
+
position: number;
|
|
3165
|
+
}
|
|
3166
|
+
|
|
2336
3167
|
/** Arguments handed to a {@link LinePainter} once per finite run. */
|
|
2337
3168
|
export declare interface LinePaintArgs {
|
|
2338
3169
|
/**
|
|
@@ -2372,7 +3203,9 @@ declare interface LinePoint {
|
|
|
2372
3203
|
y: number;
|
|
2373
3204
|
}
|
|
2374
3205
|
|
|
2375
|
-
export declare const LineSeries: DefineComponent<
|
|
3206
|
+
export declare const LineSeries: DefineComponent<__VLS_Props_5, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_5> & Readonly<{}>, {
|
|
3207
|
+
visible: boolean;
|
|
3208
|
+
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
|
|
2376
3209
|
|
|
2377
3210
|
/** Series definition for `chart.addSeries` — keeps the chart renderer-agnostic
|
|
2378
3211
|
* so hosts that never render lines don't bundle this module. */
|
|
@@ -2441,6 +3274,66 @@ export declare interface LineSeriesOptions {
|
|
|
2441
3274
|
* @see LineSeriesOptions.entryAnimation
|
|
2442
3275
|
*/
|
|
2443
3276
|
entryMs?: number | false;
|
|
3277
|
+
/**
|
|
3278
|
+
* Initial-load reveal duration in milliseconds. On the first data seed
|
|
3279
|
+
* (empty → non-empty) the line draws itself left-to-right — stroke and
|
|
3280
|
+
* area sweep in behind a glowing head that rides the reveal front. The
|
|
3281
|
+
* full sweep lasts ~2× `introMs`. Default: `500`.
|
|
3282
|
+
*
|
|
3283
|
+
* ```
|
|
3284
|
+
* // Per-series override:
|
|
3285
|
+
* <LineSeries options={{ introMs: 800 }} data={data} />
|
|
3286
|
+
*
|
|
3287
|
+
* // Chart-level default:
|
|
3288
|
+
* <ChartContainer animations={{ series: { line: { intro: 800 } } }}>
|
|
3289
|
+
* <LineSeries data={data} />
|
|
3290
|
+
* </ChartContainer>
|
|
3291
|
+
* ```
|
|
3292
|
+
*
|
|
3293
|
+
* `false` or `0` disables the intro. Bulk re-seeds of a non-empty series
|
|
3294
|
+
* never replay it. Skipped entirely under `prefers-reduced-motion`.
|
|
3295
|
+
*/
|
|
3296
|
+
introMs?: number | false;
|
|
3297
|
+
/**
|
|
3298
|
+
* Initial-load reveal choreography — a `LineIntroFn` called once per
|
|
3299
|
+
* frame while the intro plays. The shipped styles are factories over the
|
|
3300
|
+
* same contract: `unfoldIntro()` (the default — amplitude springs from
|
|
3301
|
+
* the mean into shape), `sweepIntro()` (left-to-right draw-on with a
|
|
3302
|
+
* glowing head), `traceIntro()` (faint ghost, then an ink sweep),
|
|
3303
|
+
* `plotterIntro()` (head advances at constant path speed), `centerOutIntro()`
|
|
3304
|
+
* (clip opens from the pane's center outward). Style is specific to the
|
|
3305
|
+
* line series; there is no chart-level override for style — only for
|
|
3306
|
+
* duration (`introMs`).
|
|
3307
|
+
*
|
|
3308
|
+
* @see LineIntroFn — the custom-fn contract (frame → directives).
|
|
3309
|
+
* @see introMs — cross-linked duration for this animation.
|
|
3310
|
+
*/
|
|
3311
|
+
introAnimation?: LineIntroFn;
|
|
3312
|
+
/**
|
|
3313
|
+
* History-prepend reveal — plays when older points land at the front of
|
|
3314
|
+
* the series (the `EdgeLoader` load-more-on-scroll path). Default: the
|
|
3315
|
+
* line back-fills itself from the data boundary into the new history
|
|
3316
|
+
* behind a moving clip front (`backfillSweepIntro()`).
|
|
3317
|
+
*
|
|
3318
|
+
* A custom `LineIntroFn` receives a localized frame: `range` is the
|
|
3319
|
+
* prepended time span with `range.to` at the data boundary (not the
|
|
3320
|
+
* visible window), `width` is that span's bitmap width, and `progress`
|
|
3321
|
+
* runs over the reveal. Value-transform directives are applied to the
|
|
3322
|
+
* prepended points only.
|
|
3323
|
+
*
|
|
3324
|
+
* `'none'` disables the reveal — prepended points appear instantly.
|
|
3325
|
+
*
|
|
3326
|
+
* @see historyRevealMs — cross-linked duration for this animation.
|
|
3327
|
+
*/
|
|
3328
|
+
historyReveal?: LineIntroFn | 'none';
|
|
3329
|
+
/**
|
|
3330
|
+
* History-prepend reveal duration in milliseconds — the full sweep lasts
|
|
3331
|
+
* ~2×. Default: `400`. `false` or `0` disables the reveal. Skipped
|
|
3332
|
+
* entirely under `prefers-reduced-motion`.
|
|
3333
|
+
*
|
|
3334
|
+
* @see LineSeriesOptions.historyReveal
|
|
3335
|
+
*/
|
|
3336
|
+
historyRevealMs?: number | false;
|
|
2444
3337
|
/**
|
|
2445
3338
|
* How long the displayed last value takes to catch up to the actual one
|
|
2446
3339
|
* on every `updateLastPoint`. Default: `250` ms.
|
|
@@ -2502,11 +3395,90 @@ export declare interface LineSeriesOptions {
|
|
|
2502
3395
|
/** Color below the threshold. Default: the series' resolved color. */
|
|
2503
3396
|
below?: string;
|
|
2504
3397
|
};
|
|
3398
|
+
/**
|
|
3399
|
+
* Dot markers at each data point. Hidden by default.
|
|
3400
|
+
*
|
|
3401
|
+
* Dots ride the same animated geometry as the stroke (entrance unfurl,
|
|
3402
|
+
* live-value smoothing, stacked cumulative), so they glide with the line
|
|
3403
|
+
* instead of snapping. When the visible points sit too dense to read as
|
|
3404
|
+
* discrete markers (average spacing under ~1.5 dot diameters, e.g. zoomed
|
|
3405
|
+
* far out), the dots are skipped for that frame — they'd merge into a fat
|
|
3406
|
+
* line and hide the stroke. Zooming back in brings them back.
|
|
3407
|
+
*
|
|
3408
|
+
* ```
|
|
3409
|
+
* <LineSeries data={data} options={{ points: { visible: true } }} />
|
|
3410
|
+
* ```
|
|
3411
|
+
*/
|
|
3412
|
+
points?: {
|
|
3413
|
+
/** Whether a dot is drawn at each data point. */
|
|
3414
|
+
visible: boolean;
|
|
3415
|
+
/** Dot radius in CSS pixels. Default: `3`. */
|
|
3416
|
+
radius?: number;
|
|
3417
|
+
/** Fill color override. Default: the layer's resolved series color. */
|
|
3418
|
+
color?: string;
|
|
3419
|
+
};
|
|
2505
3420
|
}
|
|
2506
3421
|
|
|
2507
3422
|
declare type Listener = (...args: any[]) => void;
|
|
2508
3423
|
|
|
2509
|
-
|
|
3424
|
+
/** Read view of one loading-indicator frame — everything a {@link LoadingIndicatorFn} may need. */
|
|
3425
|
+
export declare interface LoadingIndicatorArgs {
|
|
3426
|
+
scope: BitmapCoordinateSpace;
|
|
3427
|
+
theme: ChartTheme;
|
|
3428
|
+
/**
|
|
3429
|
+
* Plot-area size in CSS/media pixels (excludes the axis bands) — multiply
|
|
3430
|
+
* by the scope's pixel ratios to get bitmap units.
|
|
3431
|
+
*/
|
|
3432
|
+
chartMediaWidth: number;
|
|
3433
|
+
chartMediaHeight: number;
|
|
3434
|
+
/** Animation timestamp, typically `performance.now()`. */
|
|
3435
|
+
now: number;
|
|
3436
|
+
/**
|
|
3437
|
+
* Which edge this indicator's stage is anchored to. `'left'` means the
|
|
3438
|
+
* data boundary sits at local x = `chartMediaWidth` (the stage extends
|
|
3439
|
+
* further away from the data as x decreases); `'right'` means the
|
|
3440
|
+
* boundary sits at local x = `0`. Present only when painted by
|
|
3441
|
+
* `chart.setEdgeIndicator` — absent for a hypothetical future non-edge
|
|
3442
|
+
* caller.
|
|
3443
|
+
*/
|
|
3444
|
+
side?: EdgeSide_2;
|
|
3445
|
+
/**
|
|
3446
|
+
* Y position (media px, within `[0, chartMediaHeight]`) of the boundary
|
|
3447
|
+
* point on the chart's primary visible time series — lets an indicator
|
|
3448
|
+
* start exactly where the real data leaves off. `undefined` when there's
|
|
3449
|
+
* no visible time series or no data resolvable at the boundary.
|
|
3450
|
+
*/
|
|
3451
|
+
edgeValueY?: number;
|
|
3452
|
+
/**
|
|
3453
|
+
* Media px between adjacent bars at the chart's current zoom level — lets
|
|
3454
|
+
* an indicator size its placeholder shapes to match the real candles/bars
|
|
3455
|
+
* that will render once data lands. `undefined` when not resolvable (e.g.
|
|
3456
|
+
* a chart with no meaningful viewport span yet).
|
|
3457
|
+
*/
|
|
3458
|
+
barSpacing?: number;
|
|
3459
|
+
/**
|
|
3460
|
+
* Kind of the primary visible time series (`'candlestick'`, `'line'`,
|
|
3461
|
+
* `'bar'`, ...) — lets an indicator adapt its shape to what's actually
|
|
3462
|
+
* loading instead of always drawing one fixed shape. `undefined` when
|
|
3463
|
+
* unresolvable.
|
|
3464
|
+
*/
|
|
3465
|
+
seriesKind?: SeriesKind;
|
|
3466
|
+
/**
|
|
3467
|
+
* Report the placeholder shapes drawn this frame. The chart snapshots the
|
|
3468
|
+
* latest report and, when the fetched history lands, hands it to the
|
|
3469
|
+
* series' history reveal — a morph-style reveal (`skeletonMorphIntro`)
|
|
3470
|
+
* grows the real candles out of these exact placeholders instead of
|
|
3471
|
+
* cross-fading. Optional both ways: an indicator that never reports (or
|
|
3472
|
+
* a chart caller that doesn't collect) simply falls back to the plain
|
|
3473
|
+
* reveal.
|
|
3474
|
+
*/
|
|
3475
|
+
reportPlaceholders?(bars: PlaceholderBar[]): void;
|
|
3476
|
+
}
|
|
3477
|
+
|
|
3478
|
+
/** Pure function contract for a pluggable loading indicator. */
|
|
3479
|
+
export declare type LoadingIndicatorFn = (args: LoadingIndicatorArgs) => void;
|
|
3480
|
+
|
|
3481
|
+
export declare const Marker: DefineComponent<__VLS_Props_10, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_10> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
|
|
2510
3482
|
|
|
2511
3483
|
/**
|
|
2512
3484
|
* A point annotation pinned to a `time` (X) and a `value` (Y) — "anomaly opened
|
|
@@ -2528,7 +3500,12 @@ export declare interface MarkerConfig {
|
|
|
2528
3500
|
shape?: MarkerShape;
|
|
2529
3501
|
/** Reuse the line pulse halo around the anchor. Default: `false`. */
|
|
2530
3502
|
pulse?: boolean;
|
|
2531
|
-
/**
|
|
3503
|
+
/**
|
|
3504
|
+
* Optional text label, drawn as a callout chip whose tail points at the
|
|
3505
|
+
* anchor — above it for `arrow-down` / `dot` / `circle`, below for
|
|
3506
|
+
* `arrow-up`, flipping when the plot edge would cut it off. On arrow
|
|
3507
|
+
* shapes the tail replaces the glyph.
|
|
3508
|
+
*/
|
|
2532
3509
|
label?: string;
|
|
2533
3510
|
/** Color override. Falls back to the series color (when `seriesId` is set), then the theme line color. */
|
|
2534
3511
|
color?: string;
|
|
@@ -2546,7 +3523,13 @@ declare interface MarkerEntry {
|
|
|
2546
3523
|
color?: string;
|
|
2547
3524
|
}
|
|
2548
3525
|
|
|
2549
|
-
/**
|
|
3526
|
+
/**
|
|
3527
|
+
* Glyph drawn at the marker anchor. On a bare marker, arrows point their tip
|
|
3528
|
+
* *at* the anchor point. On a labeled marker the callout tail does the
|
|
3529
|
+
* pointing instead — the arrow glyph is dropped and the shape only picks the
|
|
3530
|
+
* callout's side: above the anchor for `arrow-down`, below for `arrow-up`.
|
|
3531
|
+
* `dot` and `circle` keep their glyph under the callout.
|
|
3532
|
+
*/
|
|
2550
3533
|
export declare type MarkerShape = 'dot' | 'circle' | 'arrow-up' | 'arrow-down';
|
|
2551
3534
|
|
|
2552
3535
|
export declare const materialPalenight: ThemePreset;
|
|
@@ -2564,8 +3547,37 @@ export declare const minimalLight: ThemePreset;
|
|
|
2564
3547
|
|
|
2565
3548
|
export declare const mintBreeze: ThemePreset;
|
|
2566
3549
|
|
|
3550
|
+
/**
|
|
3551
|
+
* Blend two colors perceptually (OKLab), `t` in [0, 1]. Accepts `#rgb`,
|
|
3552
|
+
* `#rrggbb`, and `rgb()/rgba()` inputs; anything else (named colors,
|
|
3553
|
+
* `hsl()`) falls back to a hard switch at `t = 0.5` — it never produces a
|
|
3554
|
+
* NaN canvas fill. An `rgba()` input's alpha interpolates linearly alongside
|
|
3555
|
+
* the OKLab channels — the result is an `rgba()` string whenever either
|
|
3556
|
+
* endpoint is translucent, an opaque hex otherwise. Results are cached on a
|
|
3557
|
+
* quantized `t` (1/256 steps), so per-frame per-cell sampling stays
|
|
3558
|
+
* allocation-free after the first frame.
|
|
3559
|
+
*/
|
|
3560
|
+
export declare function mixColors(from: string, to: string, t: number): string;
|
|
3561
|
+
|
|
2567
3562
|
export declare const monokaiPro: ThemePreset;
|
|
2568
3563
|
|
|
3564
|
+
/**
|
|
3565
|
+
* One placeholder shape a loading indicator painted at the data boundary,
|
|
3566
|
+
* mapped into bitmap space — what a morph-style history reveal grows the
|
|
3567
|
+
* real candles out of. Re-anchored to the boundary every frame, so the
|
|
3568
|
+
* morph stays glued while the user keeps panning.
|
|
3569
|
+
*/
|
|
3570
|
+
declare interface MorphPlaceholder {
|
|
3571
|
+
/** Bar center X, bitmap px. */
|
|
3572
|
+
x: number;
|
|
3573
|
+
/** Bar center Y, bitmap px. */
|
|
3574
|
+
y: number;
|
|
3575
|
+
/** Half the body height, bitmap px. */
|
|
3576
|
+
halfHeight: number;
|
|
3577
|
+
/** Body width, bitmap px. */
|
|
3578
|
+
width: number;
|
|
3579
|
+
}
|
|
3580
|
+
|
|
2569
3581
|
/**
|
|
2570
3582
|
* Omnivorous `data` shape for line and bar series. Accepts, interchangeably:
|
|
2571
3583
|
* - `TimePointInput[]` — one auto-named layer (the common single-series case);
|
|
@@ -2576,9 +3588,9 @@ export declare const monokaiPro: ThemePreset;
|
|
|
2576
3588
|
* Everything normalizes to `SeriesLayer[]` internally (see `toLayers`). Time
|
|
2577
3589
|
* accepts epoch milliseconds or a `Date` on every point.
|
|
2578
3590
|
*/
|
|
2579
|
-
declare type MultiLayerData = TimePointInput[] | SeriesLayer<TimePointInput> | Array<TimePointInput[] | SeriesLayer<TimePointInput>>;
|
|
3591
|
+
export declare type MultiLayerData = TimePointInput[] | SeriesLayer<TimePointInput> | Array<TimePointInput[] | SeriesLayer<TimePointInput>>;
|
|
2580
3592
|
|
|
2581
|
-
declare const Navigator_2: DefineComponent<
|
|
3593
|
+
declare const Navigator_2: DefineComponent<__VLS_Props_11, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_11> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {
|
|
2582
3594
|
stripRef: HTMLDivElement;
|
|
2583
3595
|
}, any>;
|
|
2584
3596
|
export { Navigator_2 as Navigator }
|
|
@@ -2670,7 +3682,7 @@ export declare const nightOwl: ThemePreset;
|
|
|
2670
3682
|
/** Convert a {@link TimeValue} (number ms or Date) to a millisecond timestamp. */
|
|
2671
3683
|
export declare function normalizeTime(t: TimeValue): number;
|
|
2672
3684
|
|
|
2673
|
-
export declare const NumberFlow: DefineComponent<
|
|
3685
|
+
export declare const NumberFlow: DefineComponent<__VLS_Props_12, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_12> & Readonly<{}>, {
|
|
2674
3686
|
locale: string;
|
|
2675
3687
|
spinDuration: number;
|
|
2676
3688
|
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLSpanElement>;
|
|
@@ -2693,7 +3705,7 @@ export declare type OHLCInput = Omit<OHLCData, 'time'> & {
|
|
|
2693
3705
|
export declare const oneDarkPro: ThemePreset;
|
|
2694
3706
|
|
|
2695
3707
|
/** Overlay render state passed to {@link SeriesRenderer.drawOverlay}. */
|
|
2696
|
-
declare interface OverlayRenderContext {
|
|
3708
|
+
export declare interface OverlayRenderContext {
|
|
2697
3709
|
scope: BitmapCoordinateSpace;
|
|
2698
3710
|
timeScale: XScale;
|
|
2699
3711
|
yScale: YScale;
|
|
@@ -2751,8 +3763,22 @@ declare interface PanZoomTarget {
|
|
|
2751
3763
|
* `chartWidth` participates in soft-bound math the same way as in `pan`.
|
|
2752
3764
|
*/
|
|
2753
3765
|
zoomAt(centerTime: number, factor: number, chartWidth?: number): void;
|
|
3766
|
+
/**
|
|
3767
|
+
* Whether pan/zoom gestures currently apply to this target. A spatial-only
|
|
3768
|
+
* chart (pie, heatmap) has no time axis to gesture on, so the interaction
|
|
3769
|
+
* layer leaves wheel and touch events to the page — scrolling past the
|
|
3770
|
+
* chart keeps working. Targets that omit the hook are always pan/zoomable.
|
|
3771
|
+
*/
|
|
3772
|
+
canPanZoom?(): boolean;
|
|
2754
3773
|
}
|
|
2755
3774
|
|
|
3775
|
+
/**
|
|
3776
|
+
* Parse an {@link AnimationTime} to milliseconds. Invalid strings throw at
|
|
3777
|
+
* config-resolution time, so a typo surfaces at startup, not silently as zero
|
|
3778
|
+
* animation later. Used once per field in `resolveAnimationsConfig`.
|
|
3779
|
+
*/
|
|
3780
|
+
export declare function parseAnimationTime(value: AnimationTime): Milliseconds;
|
|
3781
|
+
|
|
2756
3782
|
export declare const peachCream: ThemePreset;
|
|
2757
3783
|
|
|
2758
3784
|
/**
|
|
@@ -2968,7 +3994,9 @@ declare interface PieOtherOptions {
|
|
|
2968
3994
|
color?: string;
|
|
2969
3995
|
}
|
|
2970
3996
|
|
|
2971
|
-
export declare const PieSeries: DefineComponent<
|
|
3997
|
+
export declare const PieSeries: DefineComponent<__VLS_Props_6, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_6> & Readonly<{}>, {
|
|
3998
|
+
visible: boolean;
|
|
3999
|
+
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
|
|
2972
4000
|
|
|
2973
4001
|
/** Series definition for `chart.addSeries` — keeps the chart renderer-agnostic
|
|
2974
4002
|
* so hosts that never render pies don't bundle this module. */
|
|
@@ -2982,6 +4010,16 @@ export declare interface PieSeriesOptions {
|
|
|
2982
4010
|
innerRadiusRatio: number;
|
|
2983
4011
|
/** Gap between slices in degrees. Default: 1.15° (≈ 0.02 rad). */
|
|
2984
4012
|
padAngle: number;
|
|
4013
|
+
/**
|
|
4014
|
+
* Rounds each slice's corners in CSS pixels — the two where the outer rim
|
|
4015
|
+
* meets the straight edges, plus two more on the inner rim once
|
|
4016
|
+
* `innerRadiusRatio > 0` carves out a donut hole. Default: 3 (matching the
|
|
4017
|
+
* bar/candlestick families); pass 0 for sharp wedges. Thin rings and narrow
|
|
4018
|
+
* slices automatically clamp the radius down to whatever they can fit
|
|
4019
|
+
* without the corners overlapping, so a value that's too large for a given
|
|
4020
|
+
* slice degrades gracefully instead of producing a malformed shape.
|
|
4021
|
+
*/
|
|
4022
|
+
cornerRadius?: number;
|
|
2985
4023
|
/** Display the label shown in the tooltip. */
|
|
2986
4024
|
label?: string;
|
|
2987
4025
|
/** Per-slice label rendering on the pie itself. See {@link PieLabelsOptions}. */
|
|
@@ -3002,6 +4040,27 @@ export declare interface PieSeriesOptions {
|
|
|
3002
4040
|
* value.
|
|
3003
4041
|
*/
|
|
3004
4042
|
animate?: boolean;
|
|
4043
|
+
/**
|
|
4044
|
+
* Initial-load reveal duration in milliseconds. On the first data seed
|
|
4045
|
+
* (empty → non-empty) slices unfurl clockwise over this total duration,
|
|
4046
|
+
* then the outside labels draw in. Default: `600`.
|
|
4047
|
+
*
|
|
4048
|
+
* ```
|
|
4049
|
+
* // Per-series override:
|
|
4050
|
+
* <PieSeries options={{ entryMs: 900 }} data={data} />
|
|
4051
|
+
*
|
|
4052
|
+
* // Chart-level default:
|
|
4053
|
+
* <ChartContainer animations={{ series: { pie: { entry: 900 } } }}>
|
|
4054
|
+
* <PieSeries data={data} />
|
|
4055
|
+
* </ChartContainer>
|
|
4056
|
+
* ```
|
|
4057
|
+
*
|
|
4058
|
+
* `false` or `0` disables the intro (a chart-level
|
|
4059
|
+
* `animations.series.pie: false` also force-disables it). Bulk re-seeds
|
|
4060
|
+
* of a non-empty series never replay it. Skipped entirely under
|
|
4061
|
+
* `prefers-reduced-motion`.
|
|
4062
|
+
*/
|
|
4063
|
+
entryMs?: number | false;
|
|
3005
4064
|
/**
|
|
3006
4065
|
* Per-slice radial *depth* gradient — a subtle lightening from the slice
|
|
3007
4066
|
* center toward its edge that gives the pie a soft 3D sheen. On by default.
|
|
@@ -3046,7 +4105,7 @@ export declare interface PieSeriesOptions {
|
|
|
3046
4105
|
}
|
|
3047
4106
|
|
|
3048
4107
|
/** A spatial renderer with no time axis (Pie). Has no time-series queries. */
|
|
3049
|
-
declare interface PieSeriesRenderer extends BaseSeriesRenderer {
|
|
4108
|
+
export declare interface PieSeriesRenderer extends BaseSeriesRenderer {
|
|
3050
4109
|
readonly kind: 'pie';
|
|
3051
4110
|
}
|
|
3052
4111
|
|
|
@@ -3061,6 +4120,51 @@ export declare interface PieSliceData {
|
|
|
3061
4120
|
|
|
3062
4121
|
export declare const PieTooltip: __VLS_WithTemplateSlots_5<typeof __VLS_component_5, __VLS_TemplateResult_5["slots"]>;
|
|
3063
4122
|
|
|
4123
|
+
/**
|
|
4124
|
+
* One placeholder shape a loading indicator painted, in chart-media pixels
|
|
4125
|
+
* relative to the data boundary — the hand-off currency between an edge
|
|
4126
|
+
* indicator and a series' history reveal. `offsetX` grows away from the
|
|
4127
|
+
* data (into the overshoot zone), so the geometry stays glued to the
|
|
4128
|
+
* boundary while the user keeps panning.
|
|
4129
|
+
*/
|
|
4130
|
+
declare interface PlaceholderBar {
|
|
4131
|
+
/** Distance from the data boundary to the bar's center, media px, ≥ 0. */
|
|
4132
|
+
offsetX: number;
|
|
4133
|
+
/** Bar center Y, media px within the plot area. */
|
|
4134
|
+
y: number;
|
|
4135
|
+
/** Half the body height, media px. */
|
|
4136
|
+
halfHeight: number;
|
|
4137
|
+
/** Body width, media px. */
|
|
4138
|
+
width: number;
|
|
4139
|
+
}
|
|
4140
|
+
|
|
4141
|
+
/**
|
|
4142
|
+
* Chart-recorder pen: the reveal front advances at constant speed along the
|
|
4143
|
+
* polyline's arc length (bitmap space), so it decelerates through volatile
|
|
4144
|
+
* stretches and races across flat ones. Falls back to the plain sweep for
|
|
4145
|
+
* stacked series and degenerate paths.
|
|
4146
|
+
*/
|
|
4147
|
+
export declare function plotterIntro(): LineIntroFn;
|
|
4148
|
+
|
|
4149
|
+
/**
|
|
4150
|
+
* Payload for `pointClick` / `pointDoubleClick`. `spatialHit` resolves a
|
|
4151
|
+
* no-time-axis series (pie, heatmap, or a custom spatial kind) directly
|
|
4152
|
+
* under the pointer — for time-series series (line/bar/candlestick, or a
|
|
4153
|
+
* custom time-axis kind), resolve the point yourself from `time`, e.g. via
|
|
4154
|
+
* `buildHoverSnapshots(chart, { time: info.time, cacheKey: '…' })` or
|
|
4155
|
+
* `chart.getDataAtTime(seriesId, info.time)`.
|
|
4156
|
+
*/
|
|
4157
|
+
export declare interface PointClickInfo {
|
|
4158
|
+
mediaX: number;
|
|
4159
|
+
mediaY: number;
|
|
4160
|
+
time: number;
|
|
4161
|
+
y: number;
|
|
4162
|
+
spatialHit: {
|
|
4163
|
+
seriesId: string;
|
|
4164
|
+
index: number;
|
|
4165
|
+
} | null;
|
|
4166
|
+
}
|
|
4167
|
+
|
|
3064
4168
|
export declare const quietLight: ThemePreset;
|
|
3065
4169
|
|
|
3066
4170
|
/** Axis-aligned rectangle in media (CSS) coordinates. */
|
|
@@ -3071,7 +4175,7 @@ declare interface Rect {
|
|
|
3071
4175
|
height: number;
|
|
3072
4176
|
}
|
|
3073
4177
|
|
|
3074
|
-
export declare const ReferenceLine: DefineComponent<
|
|
4178
|
+
export declare const ReferenceLine: DefineComponent<__VLS_Props_15, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_15> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
|
|
3075
4179
|
|
|
3076
4180
|
/**
|
|
3077
4181
|
* A straight reference line across the plot — a horizontal threshold / baseline
|
|
@@ -3086,9 +4190,9 @@ export declare interface ReferenceLineConfig {
|
|
|
3086
4190
|
value?: number;
|
|
3087
4191
|
/** Vertical line at this `time` (epoch ms or `Date`). Mutually exclusive with {@link value}. */
|
|
3088
4192
|
time?: TimeValue;
|
|
3089
|
-
/** Line and label-
|
|
4193
|
+
/** Line and label-chip accent color. Default: the theme line color. */
|
|
3090
4194
|
color?: string;
|
|
3091
|
-
/** Optional text label drawn in
|
|
4195
|
+
/** Optional text label drawn in an annotation chip at the line's near end. */
|
|
3092
4196
|
label?: string;
|
|
3093
4197
|
/** Dash style. Default: `'dashed'`. */
|
|
3094
4198
|
style?: ReferenceLineStyle;
|
|
@@ -3113,7 +4217,7 @@ declare interface RegionEntry {
|
|
|
3113
4217
|
}
|
|
3114
4218
|
|
|
3115
4219
|
/**
|
|
3116
|
-
* Register the
|
|
4220
|
+
* Register the five built-in series so the string form
|
|
3117
4221
|
* `chart.addSeries('line', …)` resolves. Call it once at startup.
|
|
3118
4222
|
*
|
|
3119
4223
|
* Importing this helper pulls every renderer into the bundle — hosts that
|
|
@@ -3143,7 +4247,7 @@ export declare function registerSeriesDefinition(def: SeriesDefinition): void;
|
|
|
3143
4247
|
* but spatial renderers (Pie) need the raw pixel reservation to keep their
|
|
3144
4248
|
* layout out of the Title / InfoBar overlay regions.
|
|
3145
4249
|
*/
|
|
3146
|
-
declare interface RenderPadding {
|
|
4250
|
+
export declare interface RenderPadding {
|
|
3147
4251
|
top: number;
|
|
3148
4252
|
bottom: number;
|
|
3149
4253
|
}
|
|
@@ -3202,6 +4306,14 @@ declare interface RetargetOptions {
|
|
|
3202
4306
|
contractMs?: number;
|
|
3203
4307
|
}
|
|
3204
4308
|
|
|
4309
|
+
/**
|
|
4310
|
+
* Elements float up into place from below, fading in along the wave.
|
|
4311
|
+
* Works for both bar and candlestick series.
|
|
4312
|
+
*/
|
|
4313
|
+
export declare function riseIntro(options?: {
|
|
4314
|
+
travel?: number;
|
|
4315
|
+
}): WaveIntroFn;
|
|
4316
|
+
|
|
3205
4317
|
export declare const rosePineDawn: ThemePreset;
|
|
3206
4318
|
|
|
3207
4319
|
/** DEFAULT bar painter (registered as `'rounded'`). Trusts the engine-supplied
|
|
@@ -3225,6 +4337,13 @@ export declare interface RoundedRectArgs {
|
|
|
3225
4337
|
corners: CornerMask;
|
|
3226
4338
|
}
|
|
3227
4339
|
|
|
4340
|
+
/**
|
|
4341
|
+
* Sample a multi-stop ramp at `t` in [0, 1] with perceptual interpolation
|
|
4342
|
+
* between adjacent stops. A single-stop ramp returns that stop; an empty
|
|
4343
|
+
* ramp returns transparent black (defensive — resolved options never allow it).
|
|
4344
|
+
*/
|
|
4345
|
+
export declare function sampleRamp(stops: readonly string[], t: number): string;
|
|
4346
|
+
|
|
3228
4347
|
export declare const sandDune: ThemePreset;
|
|
3229
4348
|
|
|
3230
4349
|
/** Environment the chart hands a {@link SeriesDefinition} when constructing its renderer. */
|
|
@@ -3250,6 +4369,20 @@ export declare interface SeriesDefinition<O = Record<string, unknown>> {
|
|
|
3250
4369
|
create(env: SeriesCreateEnv, options: Partial<O>): SeriesRenderer;
|
|
3251
4370
|
}
|
|
3252
4371
|
|
|
4372
|
+
/** Which spatial series (pie, heatmap, or a custom spatial kind) is currently hovered, and its slice/cell info. */
|
|
4373
|
+
export declare interface SeriesHoverInfo {
|
|
4374
|
+
seriesId: string;
|
|
4375
|
+
index: number;
|
|
4376
|
+
info: HoverInfo | null;
|
|
4377
|
+
}
|
|
4378
|
+
|
|
4379
|
+
/**
|
|
4380
|
+
* Discriminant for the {@link SeriesRenderer} union. Open-ended — a custom
|
|
4381
|
+
* series (see {@link CustomSpatialSeriesRenderer} / {@link TimeSeriesRenderer})
|
|
4382
|
+
* picks any string that isn't one of the built-ins.
|
|
4383
|
+
*/
|
|
4384
|
+
export declare type SeriesKind = 'candlestick' | 'line' | 'bar' | 'pie' | 'heatmap' | (string & {});
|
|
4385
|
+
|
|
3253
4386
|
/**
|
|
3254
4387
|
* A single named (and optionally colored) layer. Carries the layer's display
|
|
3255
4388
|
* name and color *alongside* its data, so `Tooltip` / `Legend` show per-layer
|
|
@@ -3265,7 +4398,7 @@ declare interface SeriesLayer<T> {
|
|
|
3265
4398
|
data: T[];
|
|
3266
4399
|
}
|
|
3267
4400
|
|
|
3268
|
-
declare interface SeriesRenderContext {
|
|
4401
|
+
export declare interface SeriesRenderContext {
|
|
3269
4402
|
scope: BitmapCoordinateSpace;
|
|
3270
4403
|
timeScale: XScale;
|
|
3271
4404
|
yScale: YScale;
|
|
@@ -3289,9 +4422,10 @@ declare interface SeriesRenderContext {
|
|
|
3289
4422
|
|
|
3290
4423
|
/**
|
|
3291
4424
|
* Every series renderer is one of these. Discriminated on `kind`: narrow with
|
|
3292
|
-
*
|
|
4425
|
+
* {@link isTimeSeriesRenderer} to reach the time-axis surface — spatial kinds
|
|
4426
|
+
* (pie, heatmap, and any custom spatial kind) have no time-series queries.
|
|
3293
4427
|
*/
|
|
3294
|
-
declare type SeriesRenderer = TimeSeriesRenderer | PieSeriesRenderer;
|
|
4428
|
+
export declare type SeriesRenderer = TimeSeriesRenderer | PieSeriesRenderer | HeatmapSeriesRenderer | CustomSpatialSeriesRenderer;
|
|
3295
4429
|
|
|
3296
4430
|
/**
|
|
3297
4431
|
* Frozen, per-row snapshot of a series at a single point in time. The shape
|
|
@@ -3319,8 +4453,8 @@ export declare interface SeriesSnapshot {
|
|
|
3319
4453
|
readonly color: string;
|
|
3320
4454
|
}
|
|
3321
4455
|
|
|
3322
|
-
/**
|
|
3323
|
-
export declare type SeriesType = 'candlestick' | 'line' | 'bar' | 'pie';
|
|
4456
|
+
/** Primary series types. Open-ended — a custom {@link SeriesDefinition} picks any string that isn't a built-in. */
|
|
4457
|
+
export declare type SeriesType = 'candlestick' | 'line' | 'bar' | 'pie' | 'heatmap' | (string & {});
|
|
3324
4458
|
|
|
3325
4459
|
/** Width and height pair. */
|
|
3326
4460
|
declare interface Size {
|
|
@@ -3328,17 +4462,97 @@ declare interface Size {
|
|
|
3328
4462
|
height: number;
|
|
3329
4463
|
}
|
|
3330
4464
|
|
|
4465
|
+
/**
|
|
4466
|
+
* "Chart skeleton" — muted placeholder candle shapes with a soft shimmer
|
|
4467
|
+
* band sweeping across them, the classic skeleton-screen pattern adapted for
|
|
4468
|
+
* a time-series stage. The bar nearest the boundary is centered on the real
|
|
4469
|
+
* {@link LoadingIndicatorArgs.edgeValueY} so it still visually picks up
|
|
4470
|
+
* where the chart leaves off; the rest are honest placeholders (a gentle
|
|
4471
|
+
* taper), not a prediction. Falls back to mid-height when no boundary value
|
|
4472
|
+
* is resolvable (e.g. an empty chart).
|
|
4473
|
+
*
|
|
4474
|
+
* Placeholder size tracks {@link LoadingIndicatorArgs.barSpacing} — the
|
|
4475
|
+
* chart's actual current zoom level — so bars don't visually "pop" to a
|
|
4476
|
+
* different size once real data lands; when it isn't resolvable, falls back
|
|
4477
|
+
* to a fixed gap. Wick stubs only draw for `seriesKind === 'candlestick'`
|
|
4478
|
+
* (or when the kind isn't resolvable, since candlestick is the common case);
|
|
4479
|
+
* a `'line'`/`'bar'` series gets a plain placeholder body instead, since a
|
|
4480
|
+
* wick reads as OHLC-specific.
|
|
4481
|
+
*/
|
|
4482
|
+
export declare const skeletonLoadingIndicator: LoadingIndicatorFn;
|
|
4483
|
+
|
|
4484
|
+
/**
|
|
4485
|
+
* Skeleton morph: candles that land where the loading indicator's
|
|
4486
|
+
* placeholder bars stood grow out of those exact shapes — geometry eases
|
|
4487
|
+
* from the placeholder body to the real OHLC, fill blends from the muted
|
|
4488
|
+
* placeholder gray to the candle's own color. Candles outside the
|
|
4489
|
+
* placeholder zone (and any reveal with no hand-off, e.g. a custom
|
|
4490
|
+
* indicator that never reports its shapes) play the `fallback` instead —
|
|
4491
|
+
* `fadeIntro()` unless overridden.
|
|
4492
|
+
*
|
|
4493
|
+
* Meant for the `historyReveal` option, paired with an `EdgeLoader` whose
|
|
4494
|
+
* indicator reports placeholders (`skeletonLoadingIndicator` does).
|
|
4495
|
+
*/
|
|
4496
|
+
export declare function skeletonMorphIntro(options?: {
|
|
4497
|
+
fallback?: CandleIntroFn;
|
|
4498
|
+
}): CandleIntroFn;
|
|
4499
|
+
|
|
3331
4500
|
export declare type SliceInfo = HoverInfo;
|
|
3332
4501
|
|
|
3333
4502
|
/** `curve: 'smooth'` — monotone cubic. The in-flight last segment stays straight
|
|
3334
4503
|
* while the trailing endpoint is growing so the head can't wobble / overshoot. */
|
|
3335
4504
|
export declare const smoothCurve: LinePainter;
|
|
3336
4505
|
|
|
4506
|
+
/**
|
|
4507
|
+
* Snap factory — no animation, no parameters. Generic so it works for both
|
|
4508
|
+
* Y and X. Exposed so power users can opt out of axis motion without
|
|
4509
|
+
* disabling other animations:
|
|
4510
|
+
*
|
|
4511
|
+
* ```
|
|
4512
|
+
* animations: { axis: { y: { curve: snap() } } }
|
|
4513
|
+
* ```
|
|
4514
|
+
*/
|
|
4515
|
+
export declare function snap<T extends YRange | VisibleRange = YRange>(): TransitionFactory<T>;
|
|
4516
|
+
|
|
3337
4517
|
/** Sort order applied to a snapshot list by the helper. */
|
|
3338
4518
|
export declare type SnapshotSort = 'none' | 'asc' | 'desc';
|
|
3339
4519
|
|
|
3340
4520
|
export declare const solarizedLight: ThemePreset;
|
|
3341
4521
|
|
|
4522
|
+
/**
|
|
4523
|
+
* Critically-damped spring transition factory. Generic over the value type
|
|
4524
|
+
* so the same factory works for both Y (`YRange`) and X (`VisibleRange`).
|
|
4525
|
+
*
|
|
4526
|
+
* The factory dispatches at construction time based on the shape of the
|
|
4527
|
+
* initial value:
|
|
4528
|
+
*
|
|
4529
|
+
* - `{ min, max }` → {@link YRangeSpring} (direction-aware ω: expand vs
|
|
4530
|
+
* contract, used by the sticky-Y mechanism).
|
|
4531
|
+
* - `{ from, to }` → {@link VisibleRangeSpring} (single ω, no direction
|
|
4532
|
+
* asymmetry — X has no analog of sticky-Y).
|
|
4533
|
+
*
|
|
4534
|
+
* Both implementations carry velocity through mid-flight retargets so
|
|
4535
|
+
* wheel-zoom sequences and rapid streaming ticks stay continuous.
|
|
4536
|
+
*
|
|
4537
|
+
* Usage:
|
|
4538
|
+
* ```ts
|
|
4539
|
+
* animations: {
|
|
4540
|
+
* axis: {
|
|
4541
|
+
* y: { curve: spring() },
|
|
4542
|
+
* x: { curve: spring() },
|
|
4543
|
+
* },
|
|
4544
|
+
* }
|
|
4545
|
+
* ```
|
|
4546
|
+
*
|
|
4547
|
+
* The engine is the single source of truth for the per-call durations —
|
|
4548
|
+
* settle times come through `RetargetOptions.expandMs` / `contractMs`.
|
|
4549
|
+
*/
|
|
4550
|
+
export declare function spring<T extends YRange | VisibleRange = YRange>(): TransitionFactory<T>;
|
|
4551
|
+
|
|
4552
|
+
/** Bars grow from the baseline with a soft ease-out-back overshoot past
|
|
4553
|
+
* their final height before settling. */
|
|
4554
|
+
export declare function springIntro(): BarIntroFn;
|
|
4555
|
+
|
|
3342
4556
|
/** Stacking mode for bar/line series: off (overlap), normal (stacked), percent (100% stacked). */
|
|
3343
4557
|
export declare type StackingMode = 'off' | 'normal' | 'percent';
|
|
3344
4558
|
|
|
@@ -3349,6 +4563,11 @@ export declare const steppedCurve: LinePainter;
|
|
|
3349
4563
|
* the pre-feature stroke path. */
|
|
3350
4564
|
export declare const straightCurve: LinePainter;
|
|
3351
4565
|
|
|
4566
|
+
/** Left-to-right draw-on behind a clip edge with a glowing head. */
|
|
4567
|
+
export declare function sweepIntro(options?: {
|
|
4568
|
+
head?: boolean;
|
|
4569
|
+
}): LineIntroFn;
|
|
4570
|
+
|
|
3352
4571
|
/**
|
|
3353
4572
|
* Input config for {@link createTheme}. Mirrors the structure of {@link ChartTheme}
|
|
3354
4573
|
* but everything is optional except `background`. Missing values are derived automatically.
|
|
@@ -3368,6 +4587,7 @@ export declare interface ThemeConfig {
|
|
|
3368
4587
|
seriesColors?: string[];
|
|
3369
4588
|
bar?: Partial<NonNullable<ChartTheme['bar']>>;
|
|
3370
4589
|
pie?: Partial<NonNullable<ChartTheme['pie']>>;
|
|
4590
|
+
heatmap?: Partial<NonNullable<ChartTheme['heatmap']>>;
|
|
3371
4591
|
bands?: Partial<ChartTheme['bands']>;
|
|
3372
4592
|
crosshair?: Partial<ChartTheme['crosshair']>;
|
|
3373
4593
|
axis?: Partial<ChartTheme['axis']>;
|
|
@@ -3431,9 +4651,18 @@ declare interface TickTrackerSnapshot {
|
|
|
3431
4651
|
readonly isAnimating: boolean;
|
|
3432
4652
|
}
|
|
3433
4653
|
|
|
3434
|
-
|
|
3435
|
-
|
|
3436
|
-
|
|
4654
|
+
/** Locale / timezone override for {@link formatTime} / {@link formatDate}. Any field omitted keeps the built-in default. */
|
|
4655
|
+
export declare interface TimeFormatOptions {
|
|
4656
|
+
/** BCP 47 locale tag (e.g. `'de-DE'`). Default: `'en-US'`. */
|
|
4657
|
+
locale?: string;
|
|
4658
|
+
/** IANA timezone name (e.g. `'America/New_York'`). Default: the browser's local timezone. */
|
|
4659
|
+
timeZone?: string;
|
|
4660
|
+
/** 12-hour clock. Default: `false` (24-hour), preserved from the original hardcoded behavior. */
|
|
4661
|
+
hour12?: boolean;
|
|
4662
|
+
}
|
|
4663
|
+
|
|
4664
|
+
/** Custom time-tick formatter, mirroring {@link YScale}'s `ValueFormatter` contract. */
|
|
4665
|
+
export declare type TimeFormatter = (timestamp: number, interval: number) => string;
|
|
3437
4666
|
|
|
3438
4667
|
/** A single time-value data point for line and bar series. Time is a timestamp in milliseconds. */
|
|
3439
4668
|
export declare interface TimePoint {
|
|
@@ -3446,7 +4675,7 @@ export declare type TimePointInput = Omit<TimePoint, 'time'> & {
|
|
|
3446
4675
|
time: TimeValue;
|
|
3447
4676
|
};
|
|
3448
4677
|
|
|
3449
|
-
export declare const TimeRegion: DefineComponent<
|
|
4678
|
+
export declare const TimeRegion: DefineComponent<__VLS_Props_17, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_17> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
|
|
3450
4679
|
|
|
3451
4680
|
/**
|
|
3452
4681
|
* A translucent vertical band shading the interval `[from, to]` — Grafana's
|
|
@@ -3465,9 +4694,9 @@ export declare interface TimeRegionConfig {
|
|
|
3465
4694
|
to?: TimeRegionEnd;
|
|
3466
4695
|
/** Band fill — any CSS color, typically translucent. Default: a faint tint of `color`. */
|
|
3467
4696
|
fill?: string;
|
|
3468
|
-
/** Optional text label drawn in
|
|
4697
|
+
/** Optional text label drawn in an annotation chip at the top of the band. */
|
|
3469
4698
|
label?: string;
|
|
3470
|
-
/** Edge-line and label-
|
|
4699
|
+
/** Edge-line and label-chip accent. Default: the theme's muted axis text color. */
|
|
3471
4700
|
color?: string;
|
|
3472
4701
|
}
|
|
3473
4702
|
|
|
@@ -3485,8 +4714,8 @@ export declare type TimeRegionEnd = TimeValue | 'now';
|
|
|
3485
4714
|
* `getLastDataPoint` / `getSecondLastDataPoint` / `getVisibleDataPoints` are
|
|
3486
4715
|
* pinned to layer 0 (see {@link BaseMultiLayerSeries}).
|
|
3487
4716
|
*/
|
|
3488
|
-
declare interface TimeSeriesRenderer extends BaseSeriesRenderer {
|
|
3489
|
-
readonly kind: 'candlestick' | 'line' | 'bar';
|
|
4717
|
+
export declare interface TimeSeriesRenderer extends BaseSeriesRenderer {
|
|
4718
|
+
readonly kind: 'candlestick' | 'line' | 'bar' | (string & {});
|
|
3490
4719
|
/** Earliest/latest sample time across all owned layers, or null when empty. */
|
|
3491
4720
|
getTimeBounds(): {
|
|
3492
4721
|
first: number;
|
|
@@ -3507,6 +4736,9 @@ declare interface TimeSeriesRenderer extends BaseSeriesRenderer {
|
|
|
3507
4736
|
} | null;
|
|
3508
4737
|
}
|
|
3509
4738
|
|
|
4739
|
+
/** Custom tick-value generator — replaces the built-in `niceTimeIntervals` tier resolution entirely when installed. */
|
|
4740
|
+
export declare type TimeTickGenerator = (range: XRange, dataInterval: number) => number[];
|
|
4741
|
+
|
|
3510
4742
|
/**
|
|
3511
4743
|
* Accepted time input: a timestamp in **milliseconds** (like `Date.now()`) or a `Date` object.
|
|
3512
4744
|
* `Date` values are converted to milliseconds internally via `Date.getTime()`.
|
|
@@ -3557,6 +4789,15 @@ export declare interface TooltipPositionArgs {
|
|
|
3557
4789
|
offsetY?: number;
|
|
3558
4790
|
}
|
|
3559
4791
|
|
|
4792
|
+
/**
|
|
4793
|
+
* Blueprint → ink: a faint stroke-only ghost of the whole line shows from
|
|
4794
|
+
* the first frame, while the full-color pass (area included) sweeps across
|
|
4795
|
+
* behind the same front as `'sweep'`.
|
|
4796
|
+
*/
|
|
4797
|
+
export declare function traceIntro(options?: {
|
|
4798
|
+
ghostAlpha?: number;
|
|
4799
|
+
}): LineIntroFn;
|
|
4800
|
+
|
|
3560
4801
|
/**
|
|
3561
4802
|
* Emit path commands for one run of points onto `env.ctx`. Issues only
|
|
3562
4803
|
* `moveTo` / `lineTo` / `bezierCurveTo`; it never opens or closes a path, so the
|
|
@@ -3591,7 +4832,7 @@ export declare interface TracePathArgs {
|
|
|
3591
4832
|
* Other animation math (entry tweens, pulse, axis tick fade) stays
|
|
3592
4833
|
* engine-fixed.
|
|
3593
4834
|
*/
|
|
3594
|
-
declare interface Transition<T> {
|
|
4835
|
+
export declare interface Transition<T> {
|
|
3595
4836
|
/** Current sampled position. Read by renderers on every frame. */
|
|
3596
4837
|
readonly current: T;
|
|
3597
4838
|
/** Active retarget destination. May equal `current` after settle. */
|
|
@@ -3617,7 +4858,7 @@ declare interface Transition<T> {
|
|
|
3617
4858
|
* Holds the initial value so the produced transition starts pinned to
|
|
3618
4859
|
* the same value the chart will render on its first frame.
|
|
3619
4860
|
*/
|
|
3620
|
-
declare interface TransitionContext<T> {
|
|
4861
|
+
export declare interface TransitionContext<T> {
|
|
3621
4862
|
initial: T;
|
|
3622
4863
|
}
|
|
3623
4864
|
|
|
@@ -3627,7 +4868,7 @@ declare interface TransitionContext<T> {
|
|
|
3627
4868
|
* smoothing strategy. Built-in factories: {@link hermite} (Y default),
|
|
3628
4869
|
* {@link spring} (X default, also valid for Y), {@link snap} (no animation).
|
|
3629
4870
|
*/
|
|
3630
|
-
declare type TransitionFactory<T> = (ctx: TransitionContext<T>) => Transition<T>;
|
|
4871
|
+
export declare type TransitionFactory<T> = (ctx: TransitionContext<T>) => Transition<T>;
|
|
3631
4872
|
|
|
3632
4873
|
/** Font family and base font size used across the chart. */
|
|
3633
4874
|
export declare interface Typography {
|
|
@@ -3637,6 +4878,17 @@ export declare interface Typography {
|
|
|
3637
4878
|
fontSize: number;
|
|
3638
4879
|
}
|
|
3639
4880
|
|
|
4881
|
+
/**
|
|
4882
|
+
* Amplitude unfold: every value lerps from its layer's visible mean toward
|
|
4883
|
+
* its real value with a soft ease-out-back overshoot, staggered
|
|
4884
|
+
* left-to-right by `stagger` (fraction of the window; default 0.35,
|
|
4885
|
+
* clamped to `[0, 0.9]` — at 1 the rightmost points would never finish
|
|
4886
|
+
* their tween and snap on settle).
|
|
4887
|
+
*/
|
|
4888
|
+
export declare function unfoldIntro(options?: {
|
|
4889
|
+
stagger?: number;
|
|
4890
|
+
}): LineIntroFn;
|
|
4891
|
+
|
|
3640
4892
|
export declare function useChartInstance(): ChartInstance;
|
|
3641
4893
|
|
|
3642
4894
|
export declare function useCrosshairPosition(chart: ChartInstance): Ref<CrosshairPosition | null>;
|
|
@@ -3685,6 +4937,9 @@ declare type ValueColor = string | ((value: number) => string);
|
|
|
3685
4937
|
/** Signature for a value-to-string formatter (YAxis, YLabel, Pie, Sparkline, NumberFlow). */
|
|
3686
4938
|
export declare type ValueFormatter = (value: number) => string;
|
|
3687
4939
|
|
|
4940
|
+
/** Custom tick-value generator — replaces the built-in {1,2,5}×10^k resolution entirely when installed. */
|
|
4941
|
+
export declare type ValueTickGenerator = (range: YRange) => number[];
|
|
4942
|
+
|
|
3688
4943
|
/** @deprecated Use {@link XRange} instead. Visible time range of the chart. */
|
|
3689
4944
|
export declare type VisibleRange = XRange;
|
|
3690
4945
|
|
|
@@ -3698,7 +4953,7 @@ export declare type VisibleRange = XRange;
|
|
|
3698
4953
|
* right by `bars` data intervals. Useful for "show N bars starting
|
|
3699
4954
|
* here" patterns (warm-up windows for streaming charts, etc.).
|
|
3700
4955
|
*/
|
|
3701
|
-
declare type VisibleRangeSpec = number | {
|
|
4956
|
+
export declare type VisibleRangeSpec = number | {
|
|
3702
4957
|
from: TimeValue;
|
|
3703
4958
|
to: TimeValue;
|
|
3704
4959
|
} | {
|
|
@@ -3706,6 +4961,70 @@ declare type VisibleRangeSpec = number | {
|
|
|
3706
4961
|
bars: number;
|
|
3707
4962
|
};
|
|
3708
4963
|
|
|
4964
|
+
/** Directives shape common to both series (each extends it with its own
|
|
4965
|
+
* element/value callbacks). */
|
|
4966
|
+
export declare interface WaveIntroDirectives {
|
|
4967
|
+
/**
|
|
4968
|
+
* Horizontal clip window in bitmap pixels applied to the whole series
|
|
4969
|
+
* pass. Omitted sides default to the pane edges, so `{ toX }` is a
|
|
4970
|
+
* left-to-right reveal.
|
|
4971
|
+
*/
|
|
4972
|
+
clip?: {
|
|
4973
|
+
fromX?: number;
|
|
4974
|
+
toX?: number;
|
|
4975
|
+
};
|
|
4976
|
+
element?: (el: WaveIntroElement) => WaveIntroTransform;
|
|
4977
|
+
}
|
|
4978
|
+
|
|
4979
|
+
/** Per-element fields common to the bar and candlestick intro contracts. */
|
|
4980
|
+
export declare interface WaveIntroElement {
|
|
4981
|
+
/** Eased wave progress for this element, staggered left → right. */
|
|
4982
|
+
progress: number;
|
|
4983
|
+
/** Normalized x-position across the visible window, clamped to `[0, 1]`. */
|
|
4984
|
+
position: number;
|
|
4985
|
+
/** The element's time coordinate. */
|
|
4986
|
+
time: number;
|
|
4987
|
+
}
|
|
4988
|
+
|
|
4989
|
+
/** An intro function built only from the shared fields — assignable to both
|
|
4990
|
+
* `BarIntroFn` and `CandleIntroFn`. */
|
|
4991
|
+
export declare type WaveIntroFn = (frame: WaveIntroFrame) => WaveIntroDirectives;
|
|
4992
|
+
|
|
4993
|
+
/** Frame fields common to the bar and candlestick intro contracts. */
|
|
4994
|
+
export declare interface WaveIntroFrame {
|
|
4995
|
+
/** Linear intro progress in `[0, 1]` over the whole reveal window. */
|
|
4996
|
+
progress: number;
|
|
4997
|
+
/**
|
|
4998
|
+
* Plot-area width in bitmap pixels — the span the time scale maps the
|
|
4999
|
+
* visible range onto (excludes the Y-axis strip sharing the canvas).
|
|
5000
|
+
*/
|
|
5001
|
+
width: number;
|
|
5002
|
+
/** Plot-area height in bitmap pixels (excludes the X-axis strip). */
|
|
5003
|
+
height: number;
|
|
5004
|
+
/** Visible time range. */
|
|
5005
|
+
range: VisibleRange;
|
|
5006
|
+
}
|
|
5007
|
+
|
|
5008
|
+
/** Declarative transform understood by both series' element callbacks. */
|
|
5009
|
+
export declare interface WaveIntroTransform {
|
|
5010
|
+
/** Horizontal translation in bitmap px. */
|
|
5011
|
+
offsetX?: number;
|
|
5012
|
+
/** Vertical translation in bitmap px. */
|
|
5013
|
+
offsetY?: number;
|
|
5014
|
+
/** Opacity multiplier in `[0, 1]`. */
|
|
5015
|
+
alpha?: number;
|
|
5016
|
+
}
|
|
5017
|
+
|
|
5018
|
+
/** Two-phase reveal: wicks needle out first as a skeleton, then bodies (and
|
|
5019
|
+
* volume) unfold over them from the open price. */
|
|
5020
|
+
export declare function wickBodyIntro(): CandleIntroFn;
|
|
5021
|
+
|
|
5022
|
+
/**
|
|
5023
|
+
* A hard reveal front sweeps left to right; elements appear fully formed
|
|
5024
|
+
* behind it. Works for both bar and candlestick series.
|
|
5025
|
+
*/
|
|
5026
|
+
export declare function wipeIntro(): WaveIntroFn;
|
|
5027
|
+
|
|
3709
5028
|
/** Configuration for the X (time) axis. */
|
|
3710
5029
|
export declare interface XAxisConfig {
|
|
3711
5030
|
/** Height in CSS pixels. Default: 30. */
|
|
@@ -3720,7 +5039,7 @@ declare interface XRange {
|
|
|
3720
5039
|
to: number;
|
|
3721
5040
|
}
|
|
3722
5041
|
|
|
3723
|
-
declare class XScale {
|
|
5042
|
+
export declare class XScale {
|
|
3724
5043
|
/**
|
|
3725
5044
|
* Shared fade state for time ticks. Grid lines (canvas) and DOM tick labels
|
|
3726
5045
|
* read opacity from the same tracker, so a tick fading in/out looks
|
|
@@ -3734,6 +5053,12 @@ declare class XScale {
|
|
|
3734
5053
|
private dataInterval;
|
|
3735
5054
|
private labelCountHintValue;
|
|
3736
5055
|
private minSpacingValue;
|
|
5056
|
+
/** Custom formatter (driven by `setFormat` / a future `<TimeAxis format=…>`). */
|
|
5057
|
+
private customFormat;
|
|
5058
|
+
/** Custom tick generator — bypasses tier resolution in `niceTickValues` when set. */
|
|
5059
|
+
private customTickGenerator;
|
|
5060
|
+
private localeValue;
|
|
5061
|
+
private timeZoneValue;
|
|
3737
5062
|
private resolvedInterval;
|
|
3738
5063
|
private lastInterval;
|
|
3739
5064
|
/**
|
|
@@ -3750,6 +5075,28 @@ declare class XScale {
|
|
|
3750
5075
|
update(range: XRange, mediaWidth: number, pixelRatio: number, dataInterval?: number): void;
|
|
3751
5076
|
setLabelCount(n: number | null | undefined): void;
|
|
3752
5077
|
setMinSpacing(px: number | null | undefined): void;
|
|
5078
|
+
/** Install (or clear) a custom tick-label formatter. */
|
|
5079
|
+
setFormat(fn: TimeFormatter | null): void;
|
|
5080
|
+
/** Read back the currently installed formatter — null when the built-in is active. */
|
|
5081
|
+
getFormat(): TimeFormatter | null;
|
|
5082
|
+
/**
|
|
5083
|
+
* Install (or clear) a custom tick-value generator. When set, it replaces
|
|
5084
|
+
* `niceTimeIntervals` tier resolution entirely — `niceTickValues` calls it
|
|
5085
|
+
* directly with the current range and reports its own tick spacing.
|
|
5086
|
+
*/
|
|
5087
|
+
setTickGenerator(fn: TimeTickGenerator | null): void;
|
|
5088
|
+
/** BCP 47 locale applied to the built-in formatter. Ignored while a custom `setFormat` is installed. */
|
|
5089
|
+
setLocale(locale: string | undefined): void;
|
|
5090
|
+
getLocale(): string | undefined;
|
|
5091
|
+
/** IANA timezone applied to the built-in formatter. Ignored while a custom `setFormat` is installed. */
|
|
5092
|
+
setTimeZone(timeZone: string | undefined): void;
|
|
5093
|
+
getTimeZone(): string | undefined;
|
|
5094
|
+
/**
|
|
5095
|
+
* Format a tick timestamp for display. A custom formatter (via
|
|
5096
|
+
* {@link setFormat}) wins; otherwise falls back to the built-in
|
|
5097
|
+
* `formatTime`, applying the installed locale/timezone.
|
|
5098
|
+
*/
|
|
5099
|
+
formatX(timestamp: number, interval: number): string;
|
|
3753
5100
|
private resetHysteresis;
|
|
3754
5101
|
timeToX(time: number): number;
|
|
3755
5102
|
timeToBitmapX(time: number): number;
|
|
@@ -3777,7 +5124,7 @@ declare class XScale {
|
|
|
3777
5124
|
private countTicks;
|
|
3778
5125
|
}
|
|
3779
5126
|
|
|
3780
|
-
export declare const YAxis: DefineComponent<
|
|
5127
|
+
export declare const YAxis: DefineComponent<__VLS_Props_20, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_20> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {
|
|
3781
5128
|
containerRef: HTMLDivElement;
|
|
3782
5129
|
}, HTMLDivElement>;
|
|
3783
5130
|
|
|
@@ -3795,6 +5142,23 @@ export declare interface YAxisConfig {
|
|
|
3795
5142
|
|
|
3796
5143
|
export declare const YLabel: __VLS_WithTemplateSlots_8<typeof __VLS_component_8, __VLS_TemplateResult_8["slots"]>;
|
|
3797
5144
|
|
|
5145
|
+
/**
|
|
5146
|
+
* Badge motion: `true` (default) glides + counts up + fades in with the intro;
|
|
5147
|
+
* `false` snaps with no easing (the pre-animation behavior); an object tunes
|
|
5148
|
+
* individual parts.
|
|
5149
|
+
*/
|
|
5150
|
+
declare type YLabelAnimate = boolean | YLabelAnimateOptions;
|
|
5151
|
+
|
|
5152
|
+
/** Fine-grained badge motion tuning. See the framework `YLabel`'s `animate` prop. */
|
|
5153
|
+
declare interface YLabelAnimateOptions {
|
|
5154
|
+
/** Glide the badge vertically across value jumps instead of snapping. Default `true`. */
|
|
5155
|
+
glide?: boolean;
|
|
5156
|
+
/** Count the value up from the first visible sample to the last during the initial reveal. Default `true`. */
|
|
5157
|
+
countUp?: boolean;
|
|
5158
|
+
/** Settle time (ms) for the vertical glide. Default {@link DEFAULT_SETTLE_MS}. */
|
|
5159
|
+
settleMs?: number;
|
|
5160
|
+
}
|
|
5161
|
+
|
|
3798
5162
|
/** Direction of the current value vs. previous close. Drives the badge color in the default UI. */
|
|
3799
5163
|
declare type YLabelDirection = 'up' | 'down' | 'neutral';
|
|
3800
5164
|
|
|
@@ -3811,7 +5175,7 @@ export declare interface YRange {
|
|
|
3811
5175
|
* Maps values to vertical pixel positions (and vice versa).
|
|
3812
5176
|
* Also provides tick generation and value formatting for the Y axis.
|
|
3813
5177
|
*/
|
|
3814
|
-
declare class YScale {
|
|
5178
|
+
export declare class YScale {
|
|
3815
5179
|
/** Shared fade state for Y ticks; see {@link TimeScale.tickTracker}. */
|
|
3816
5180
|
readonly tickTracker: AxisTickTracker;
|
|
3817
5181
|
private min;
|
|
@@ -3834,6 +5198,8 @@ declare class YScale {
|
|
|
3834
5198
|
private lastRawInterval;
|
|
3835
5199
|
/** Custom formatter (driven by `<YAxis format=…>`). */
|
|
3836
5200
|
private customFormat;
|
|
5201
|
+
/** Custom tick generator — bypasses {1,2,5}×10^k resolution in `niceTickValues` when set. */
|
|
5202
|
+
private customTickGenerator;
|
|
3837
5203
|
private get labelCountHint();
|
|
3838
5204
|
private get minLabelSpacing();
|
|
3839
5205
|
/** Recalculate the scale with a new Y range, chart height, and device pixel ratio. */
|
|
@@ -3847,6 +5213,12 @@ declare class YScale {
|
|
|
3847
5213
|
setFormat(fn: ValueFormatter | null): void;
|
|
3848
5214
|
/** Read back the currently installed formatter — null when the built-in is active. */
|
|
3849
5215
|
getFormat(): ValueFormatter | null;
|
|
5216
|
+
/**
|
|
5217
|
+
* Install (or clear) a custom tick-value generator. When set, it replaces
|
|
5218
|
+
* {1,2,5}×10^k resolution entirely — `niceTickValues` calls it directly
|
|
5219
|
+
* with the current range.
|
|
5220
|
+
*/
|
|
5221
|
+
setTickGenerator(fn: ValueTickGenerator | null): void;
|
|
3850
5222
|
/** Convert a value to a Y position in CSS (media) pixels. */
|
|
3851
5223
|
valueToY(value: number): number;
|
|
3852
5224
|
/** Convert a value to a Y position in physical (bitmap) pixels. */
|