minerva-design 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/dist/charts/canvas.d.cts +4 -1
- package/dist/charts/canvas.d.ts +4 -1
- package/dist/charts/core.cjs +1 -1
- package/dist/charts/core.d.cts +5 -2
- package/dist/charts/core.d.ts +5 -2
- package/dist/charts/core.js +6 -4
- package/dist/charts/engine/canvas.cjs +1 -1
- package/dist/charts/engine/canvas.cjs.map +1 -1
- package/dist/charts/engine/canvas.js +65 -53
- package/dist/charts/engine/canvas.js.map +1 -1
- package/dist/charts/engine/chart.cjs +1 -2
- package/dist/charts/engine/chart.cjs.map +1 -1
- package/dist/charts/engine/chart.js +342 -323
- package/dist/charts/engine/chart.js.map +1 -1
- package/dist/charts/engine/color.cjs +1 -1
- package/dist/charts/engine/color.cjs.map +1 -1
- package/dist/charts/engine/color.d.cts +17 -0
- package/dist/charts/engine/color.d.ts +17 -0
- package/dist/charts/engine/color.js +27 -3
- package/dist/charts/engine/color.js.map +1 -1
- package/dist/charts/engine/controller.cjs +2 -2
- package/dist/charts/engine/controller.cjs.map +1 -1
- package/dist/charts/engine/controller.d.cts +6 -0
- package/dist/charts/engine/controller.d.ts +6 -0
- package/dist/charts/engine/controller.js +317 -253
- package/dist/charts/engine/controller.js.map +1 -1
- package/dist/charts/engine/curve.cjs +2 -0
- package/dist/charts/engine/curve.cjs.map +1 -0
- package/dist/charts/engine/curve.d.cts +15 -0
- package/dist/charts/engine/curve.d.ts +15 -0
- package/dist/charts/engine/curve.js +56 -0
- package/dist/charts/engine/curve.js.map +1 -0
- package/dist/charts/engine/data.cjs +1 -1
- package/dist/charts/engine/data.cjs.map +1 -1
- package/dist/charts/engine/data.d.cts +15 -2
- package/dist/charts/engine/data.d.ts +15 -2
- package/dist/charts/engine/data.js +98 -38
- package/dist/charts/engine/data.js.map +1 -1
- package/dist/charts/engine/dom.cjs +1 -1
- package/dist/charts/engine/dom.cjs.map +1 -1
- package/dist/charts/engine/dom.d.cts +5 -3
- package/dist/charts/engine/dom.d.ts +5 -3
- package/dist/charts/engine/dom.js +27 -22
- package/dist/charts/engine/dom.js.map +1 -1
- package/dist/charts/engine/items.cjs +1 -1
- package/dist/charts/engine/items.cjs.map +1 -1
- package/dist/charts/engine/items.js +132 -61
- package/dist/charts/engine/items.js.map +1 -1
- package/dist/charts/engine/model.cjs +1 -1
- package/dist/charts/engine/model.cjs.map +1 -1
- package/dist/charts/engine/model.d.cts +30 -3
- package/dist/charts/engine/model.d.ts +30 -3
- package/dist/charts/engine/model.js +225 -108
- package/dist/charts/engine/model.js.map +1 -1
- package/dist/charts/engine/overlay.cjs +1 -1
- package/dist/charts/engine/overlay.cjs.map +1 -1
- package/dist/charts/engine/overlay.d.cts +2 -0
- package/dist/charts/engine/overlay.d.ts +2 -0
- package/dist/charts/engine/overlay.js +16 -16
- package/dist/charts/engine/overlay.js.map +1 -1
- package/dist/charts/engine/presets.cjs +2 -2
- package/dist/charts/engine/presets.cjs.map +1 -1
- package/dist/charts/engine/presets.d.cts +71 -5
- package/dist/charts/engine/presets.d.ts +71 -5
- package/dist/charts/engine/presets.js +120 -33
- package/dist/charts/engine/presets.js.map +1 -1
- package/dist/charts/engine/renderers/canvas2d.cjs +1 -1
- package/dist/charts/engine/renderers/canvas2d.cjs.map +1 -1
- package/dist/charts/engine/renderers/canvas2d.js +149 -111
- package/dist/charts/engine/renderers/canvas2d.js.map +1 -1
- package/dist/charts/engine/renderers/range.cjs +1 -1
- package/dist/charts/engine/renderers/range.cjs.map +1 -1
- package/dist/charts/engine/renderers/range.js +4 -4
- package/dist/charts/engine/renderers/range.js.map +1 -1
- package/dist/charts/engine/renderers/shaders.cjs +37 -19
- package/dist/charts/engine/renderers/shaders.cjs.map +1 -1
- package/dist/charts/engine/renderers/shaders.d.cts +2 -2
- package/dist/charts/engine/renderers/shaders.d.ts +2 -2
- package/dist/charts/engine/renderers/shaders.js +37 -19
- package/dist/charts/engine/renderers/shaders.js.map +1 -1
- package/dist/charts/engine/renderers/types.cjs.map +1 -1
- package/dist/charts/engine/renderers/types.d.cts +11 -4
- package/dist/charts/engine/renderers/types.d.ts +11 -4
- package/dist/charts/engine/renderers/types.js.map +1 -1
- package/dist/charts/engine/renderers/webgl2.cjs +1 -1
- package/dist/charts/engine/renderers/webgl2.cjs.map +1 -1
- package/dist/charts/engine/renderers/webgl2.js +33 -12
- package/dist/charts/engine/renderers/webgl2.js.map +1 -1
- package/dist/charts/engine/renderers/webgpu.cjs +1 -1
- package/dist/charts/engine/renderers/webgpu.cjs.map +1 -1
- package/dist/charts/engine/renderers/webgpu.js +18 -15
- package/dist/charts/engine/renderers/webgpu.js.map +1 -1
- package/dist/charts/engine/scene.cjs +1 -1
- package/dist/charts/engine/scene.cjs.map +1 -1
- package/dist/charts/engine/scene.d.cts +19 -6
- package/dist/charts/engine/scene.d.ts +19 -6
- package/dist/charts/engine/scene.js +201 -89
- package/dist/charts/engine/scene.js.map +1 -1
- package/dist/charts/engine/shapes/canvas.cjs +2 -0
- package/dist/charts/engine/shapes/canvas.cjs.map +1 -0
- package/dist/charts/engine/shapes/canvas.d.cts +58 -0
- package/dist/charts/engine/shapes/canvas.d.ts +58 -0
- package/dist/charts/engine/shapes/canvas.js +159 -0
- package/dist/charts/engine/shapes/canvas.js.map +1 -0
- package/dist/charts/engine/shapes/chart.cjs +2 -0
- package/dist/charts/engine/shapes/chart.cjs.map +1 -0
- package/dist/charts/engine/shapes/chart.d.cts +6 -0
- package/dist/charts/engine/shapes/chart.d.ts +6 -0
- package/dist/charts/engine/shapes/chart.js +273 -0
- package/dist/charts/engine/shapes/chart.js.map +1 -0
- package/dist/charts/engine/shapes/draw.cjs +2 -0
- package/dist/charts/engine/shapes/draw.cjs.map +1 -0
- package/dist/charts/engine/shapes/draw.d.cts +20 -0
- package/dist/charts/engine/shapes/draw.d.ts +20 -0
- package/dist/charts/engine/shapes/draw.js +152 -0
- package/dist/charts/engine/shapes/draw.js.map +1 -0
- package/dist/charts/engine/shapes/funnel.cjs +2 -0
- package/dist/charts/engine/shapes/funnel.cjs.map +1 -0
- package/dist/charts/engine/shapes/funnel.d.cts +6 -0
- package/dist/charts/engine/shapes/funnel.d.ts +6 -0
- package/dist/charts/engine/shapes/funnel.js +149 -0
- package/dist/charts/engine/shapes/funnel.js.map +1 -0
- package/dist/charts/engine/shapes/gauge.cjs +2 -0
- package/dist/charts/engine/shapes/gauge.cjs.map +1 -0
- package/dist/charts/engine/shapes/gauge.d.cts +7 -0
- package/dist/charts/engine/shapes/gauge.d.ts +7 -0
- package/dist/charts/engine/shapes/gauge.js +173 -0
- package/dist/charts/engine/shapes/gauge.js.map +1 -0
- package/dist/charts/engine/shapes/hit.cjs +2 -0
- package/dist/charts/engine/shapes/hit.cjs.map +1 -0
- package/dist/charts/engine/shapes/hit.d.cts +28 -0
- package/dist/charts/engine/shapes/hit.d.ts +28 -0
- package/dist/charts/engine/shapes/hit.js +124 -0
- package/dist/charts/engine/shapes/hit.js.map +1 -0
- package/dist/charts/engine/shapes/index.d.cts +9 -0
- package/dist/charts/engine/shapes/index.d.ts +9 -0
- package/dist/charts/engine/shapes/layout.cjs +3 -0
- package/dist/charts/engine/shapes/layout.cjs.map +1 -0
- package/dist/charts/engine/shapes/layout.d.cts +88 -0
- package/dist/charts/engine/shapes/layout.d.ts +88 -0
- package/dist/charts/engine/shapes/layout.js +266 -0
- package/dist/charts/engine/shapes/layout.js.map +1 -0
- package/dist/charts/engine/shapes/pie.cjs +2 -0
- package/dist/charts/engine/shapes/pie.cjs.map +1 -0
- package/dist/charts/engine/shapes/pie.d.cts +20 -0
- package/dist/charts/engine/shapes/pie.d.ts +20 -0
- package/dist/charts/engine/shapes/pie.js +302 -0
- package/dist/charts/engine/shapes/pie.js.map +1 -0
- package/dist/charts/engine/shapes/radar.cjs +2 -0
- package/dist/charts/engine/shapes/radar.cjs.map +1 -0
- package/dist/charts/engine/shapes/radar.d.cts +8 -0
- package/dist/charts/engine/shapes/radar.d.ts +8 -0
- package/dist/charts/engine/shapes/radar.js +197 -0
- package/dist/charts/engine/shapes/radar.js.map +1 -0
- package/dist/charts/engine/shapes/runtime.cjs +2 -0
- package/dist/charts/engine/shapes/runtime.cjs.map +1 -0
- package/dist/charts/engine/shapes/runtime.d.cts +29 -0
- package/dist/charts/engine/shapes/runtime.d.ts +29 -0
- package/dist/charts/engine/shapes/runtime.js +97 -0
- package/dist/charts/engine/shapes/runtime.js.map +1 -0
- package/dist/charts/engine/shapes/scene.cjs +2 -0
- package/dist/charts/engine/shapes/scene.cjs.map +1 -0
- package/dist/charts/engine/shapes/scene.d.cts +257 -0
- package/dist/charts/engine/shapes/scene.d.ts +257 -0
- package/dist/charts/engine/shapes/scene.js +123 -0
- package/dist/charts/engine/shapes/scene.js.map +1 -0
- package/dist/charts/engine/shapes/treemap.cjs +2 -0
- package/dist/charts/engine/shapes/treemap.cjs.map +1 -0
- package/dist/charts/engine/shapes/treemap.d.cts +14 -0
- package/dist/charts/engine/shapes/treemap.d.ts +14 -0
- package/dist/charts/engine/shapes/treemap.js +213 -0
- package/dist/charts/engine/shapes/treemap.js.map +1 -0
- package/dist/charts/engine/shapes/types.d.cts +292 -0
- package/dist/charts/engine/shapes/types.d.ts +292 -0
- package/dist/charts/engine/signature.cjs +2 -0
- package/dist/charts/engine/signature.cjs.map +1 -0
- package/dist/charts/engine/signature.d.cts +9 -0
- package/dist/charts/engine/signature.d.ts +9 -0
- package/dist/charts/engine/signature.js +13 -0
- package/dist/charts/engine/signature.js.map +1 -0
- package/dist/charts/engine/theme.cjs +1 -1
- package/dist/charts/engine/theme.cjs.map +1 -1
- package/dist/charts/engine/theme.d.cts +10 -1
- package/dist/charts/engine/theme.d.ts +10 -1
- package/dist/charts/engine/theme.js +40 -16
- package/dist/charts/engine/theme.js.map +1 -1
- package/dist/charts/engine/types.d.cts +70 -9
- package/dist/charts/engine/types.d.ts +70 -9
- package/dist/charts/index.cjs +1 -1
- package/dist/charts/index.d.cts +4 -2
- package/dist/charts/index.d.ts +4 -2
- package/dist/charts/index.js +8 -5
- package/dist/charts/react/Chart.cjs +1 -1
- package/dist/charts/react/Chart.cjs.map +1 -1
- package/dist/charts/react/Chart.d.cts +8 -1
- package/dist/charts/react/Chart.d.ts +8 -1
- package/dist/charts/react/Chart.js +66 -47
- package/dist/charts/react/Chart.js.map +1 -1
- package/dist/charts/react/charts.cjs +1 -1
- package/dist/charts/react/charts.cjs.map +1 -1
- package/dist/charts/react/charts.d.cts +10 -2
- package/dist/charts/react/charts.d.ts +10 -2
- package/dist/charts/react/charts.js +174 -51
- package/dist/charts/react/charts.js.map +1 -1
- package/dist/charts/react/shapes.cjs +2 -0
- package/dist/charts/react/shapes.cjs.map +1 -0
- package/dist/charts/react/shapes.d.cts +255 -0
- package/dist/charts/react/shapes.d.ts +255 -0
- package/dist/charts/react/shapes.js +242 -0
- package/dist/charts/react/shapes.js.map +1 -0
- package/dist/charts/react/types.d.cts +73 -4
- package/dist/charts/react/types.d.ts +73 -4
- package/dist/native/charts/src/engine/color.cjs +1 -1
- package/dist/native/charts/src/engine/color.cjs.map +1 -1
- package/dist/native/charts/src/engine/color.js +12 -3
- package/dist/native/charts/src/engine/color.js.map +1 -1
- package/dist/native/charts/src/engine/controller.cjs +2 -2
- package/dist/native/charts/src/engine/controller.cjs.map +1 -1
- package/dist/native/charts/src/engine/controller.js +334 -270
- package/dist/native/charts/src/engine/controller.js.map +1 -1
- package/dist/native/charts/src/engine/curve.cjs +2 -0
- package/dist/native/charts/src/engine/curve.cjs.map +1 -0
- package/dist/native/charts/src/engine/curve.js +56 -0
- package/dist/native/charts/src/engine/curve.js.map +1 -0
- package/dist/native/charts/src/engine/data.cjs +1 -1
- package/dist/native/charts/src/engine/data.cjs.map +1 -1
- package/dist/native/charts/src/engine/data.js +98 -38
- package/dist/native/charts/src/engine/data.js.map +1 -1
- package/dist/native/charts/src/engine/model.cjs +1 -1
- package/dist/native/charts/src/engine/model.cjs.map +1 -1
- package/dist/native/charts/src/engine/model.js +229 -112
- package/dist/native/charts/src/engine/model.js.map +1 -1
- package/dist/native/charts/src/engine/overlay.cjs +1 -1
- package/dist/native/charts/src/engine/overlay.cjs.map +1 -1
- package/dist/native/charts/src/engine/overlay.js +16 -16
- package/dist/native/charts/src/engine/overlay.js.map +1 -1
- package/dist/native/charts/src/engine/presets.cjs +1 -1
- package/dist/native/charts/src/engine/presets.cjs.map +1 -1
- package/dist/native/charts/src/engine/presets.js +11 -4
- package/dist/native/charts/src/engine/presets.js.map +1 -1
- package/dist/native/charts/src/engine/scene.cjs +1 -1
- package/dist/native/charts/src/engine/scene.cjs.map +1 -1
- package/dist/native/charts/src/engine/scene.js +209 -97
- package/dist/native/charts/src/engine/scene.js.map +1 -1
- package/dist/native/charts/src/engine/theme.cjs.map +1 -1
- package/dist/native/charts/src/engine/theme.js.map +1 -1
- package/dist/native/components/Chart/scene.cjs +1 -1
- package/dist/native/components/Chart/scene.cjs.map +1 -1
- package/dist/native/components/Chart/scene.js +31 -19
- package/dist/native/components/Chart/scene.js.map +1 -1
- package/dist/native/source/components/Chart/scene.tsx +54 -20
- package/dist/taro/index.js +1059 -579
- package/dist/uni/charts-canvas.js +3 -1
- package/dist/weapp/controls.js +966 -225
- package/package.json +1 -1
|
@@ -8,30 +8,51 @@ export type ChartRendererPreference = "auto" | ChartRendererKind;
|
|
|
8
8
|
/** Scale of an axis */
|
|
9
9
|
export type ChartAxisType = "linear" | "time" | "category";
|
|
10
10
|
/** How a series is drawn */
|
|
11
|
-
export type ChartSeriesType = "line" | "area" | "bar" | "scatter";
|
|
11
|
+
export type ChartSeriesType = "line" | "area" | "bar" | "scatter" | "candlestick" | "heatmap";
|
|
12
|
+
/** Shape of a line (and of the edge of an area) between its points */
|
|
13
|
+
export type ChartCurve = "linear" | "smooth" | "step";
|
|
12
14
|
/** X value of a datum: a number, a `Date` (time axis) or a category name */
|
|
13
15
|
export type ChartXValue = number | Date | string;
|
|
14
16
|
/** One datum written as an object */
|
|
15
17
|
export interface ChartPointDatum {
|
|
16
18
|
/** X value; the datum index when omitted */
|
|
17
19
|
x?: ChartXValue;
|
|
18
|
-
/**
|
|
19
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Y value; `null` leaves a gap. Candlesticks: the close. Heatmaps: the
|
|
22
|
+
* row (a number, or a category name of a `category` y axis)
|
|
23
|
+
*/
|
|
24
|
+
y: number | string | null;
|
|
20
25
|
/** Diameter of the dot in CSS pixels (scatter) */
|
|
21
26
|
size?: number;
|
|
22
|
-
/** Color of the dot (scatter); any CSS color */
|
|
27
|
+
/** Color of the dot or bar (scatter, bar); any CSS color */
|
|
23
28
|
color?: string;
|
|
24
29
|
/** Text drawn next to the dot (scatter with `showLabels`) and shown in the tooltip */
|
|
25
30
|
label?: string;
|
|
31
|
+
/** Candlestick: opening value */
|
|
32
|
+
open?: number;
|
|
33
|
+
/** Candlestick: highest value */
|
|
34
|
+
high?: number;
|
|
35
|
+
/** Candlestick: lowest value */
|
|
36
|
+
low?: number;
|
|
37
|
+
/** Heatmap: value of the cell, mapped to `colorScale` */
|
|
38
|
+
value?: number | null;
|
|
26
39
|
}
|
|
27
40
|
/** Column-oriented data: the fastest form for large data sets (typed arrays are used as is) */
|
|
28
41
|
export interface ChartColumnData {
|
|
29
42
|
/** X values; the index when omitted */
|
|
30
43
|
x?: ArrayLike<number> | readonly ChartXValue[];
|
|
31
|
-
/** Y values (`NaN` / `null` leave a gap) */
|
|
32
|
-
y: ArrayLike<number> | readonly (number | null)[];
|
|
44
|
+
/** Y values (`NaN` / `null` leave a gap); candlesticks: the closes; heatmaps: the rows */
|
|
45
|
+
y: ArrayLike<number> | readonly (number | string | null)[];
|
|
33
46
|
/** Per-point diameters in CSS pixels (scatter) */
|
|
34
47
|
size?: ArrayLike<number>;
|
|
48
|
+
/** Candlestick: opening values */
|
|
49
|
+
open?: ArrayLike<number>;
|
|
50
|
+
/** Candlestick: highest values */
|
|
51
|
+
high?: ArrayLike<number>;
|
|
52
|
+
/** Candlestick: lowest values */
|
|
53
|
+
low?: ArrayLike<number>;
|
|
54
|
+
/** Heatmap: values of the cells */
|
|
55
|
+
value?: ArrayLike<number> | readonly (number | null)[];
|
|
35
56
|
}
|
|
36
57
|
/**
|
|
37
58
|
* Data of a series: y values only (`[3, 5, 2]`, typed arrays included),
|
|
@@ -65,17 +86,45 @@ export interface ChartSeries {
|
|
|
65
86
|
pointSize?: number;
|
|
66
87
|
/** Fill opacity (area, scatter), 0-1 */
|
|
67
88
|
opacity?: number;
|
|
68
|
-
/**
|
|
89
|
+
/**
|
|
90
|
+
* Series with the same stack id are stacked (bars, areas and lines; see
|
|
91
|
+
* `stackMode` for 100% stacks)
|
|
92
|
+
*/
|
|
69
93
|
stack?: string;
|
|
70
94
|
/** Hides the series (it stays in the legend) */
|
|
71
95
|
hidden?: boolean;
|
|
72
|
-
/**
|
|
96
|
+
/**
|
|
97
|
+
* Draws the `label` of each point next to it (scatter) or the value above
|
|
98
|
+
* each bar (bar)
|
|
99
|
+
*/
|
|
73
100
|
showLabels?: boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Shape of the line between the points: straight, smooth (monotone, never
|
|
103
|
+
* overshoots the data) or steps (line / area)
|
|
104
|
+
* @default "linear"
|
|
105
|
+
*/
|
|
106
|
+
curve?: ChartCurve;
|
|
107
|
+
/** Candlestick: color of the rising candles (close >= open); `--success-color` by default */
|
|
108
|
+
upColor?: string;
|
|
109
|
+
/** Candlestick: color of the falling candles; `--danger-color` by default */
|
|
110
|
+
downColor?: string;
|
|
111
|
+
/**
|
|
112
|
+
* Heatmap: colors from the lowest to the highest value (two or more)
|
|
113
|
+
* @default a ramp from the background to the series color
|
|
114
|
+
*/
|
|
115
|
+
colorScale?: readonly string[];
|
|
116
|
+
/** Heatmap: values mapped to the ends of `colorScale`; the data range by default */
|
|
117
|
+
valueRange?: readonly [number, number];
|
|
118
|
+
/** Bar / heatmap: corner radius in CSS pixels (bars: 3, heatmap cells: 2) */
|
|
119
|
+
radius?: number;
|
|
120
|
+
/** Formats the values of this series in the tooltip (the y axis format by default) */
|
|
121
|
+
format?: (value: number) => string;
|
|
74
122
|
}
|
|
75
123
|
/** Options of an axis */
|
|
76
124
|
export interface ChartAxisOptions {
|
|
77
125
|
/**
|
|
78
|
-
* Scale of the axis: `linear` numbers, `time` timestamps / dates, `category`
|
|
126
|
+
* Scale of the axis: `linear` numbers, `time` timestamps / dates, `category`
|
|
127
|
+
* names (x axis, and y axis of heatmaps)
|
|
79
128
|
* @default "linear"
|
|
80
129
|
*/
|
|
81
130
|
type?: ChartAxisType;
|
|
@@ -255,6 +304,12 @@ export interface ChartOptions {
|
|
|
255
304
|
palette?: readonly string[];
|
|
256
305
|
/** Accessible name of the chart */
|
|
257
306
|
ariaLabel?: string;
|
|
307
|
+
/**
|
|
308
|
+
* `percent` scales every stack to 100% at each x (the axis shows percents,
|
|
309
|
+
* the tooltip the actual values)
|
|
310
|
+
* @default "normal"
|
|
311
|
+
*/
|
|
312
|
+
stackMode?: "normal" | "percent";
|
|
258
313
|
}
|
|
259
314
|
/** A point under the pointer */
|
|
260
315
|
export interface ChartHoverItem {
|
|
@@ -268,6 +323,12 @@ export interface ChartHoverItem {
|
|
|
268
323
|
/** Resolved color of the point */
|
|
269
324
|
color: string;
|
|
270
325
|
label?: string;
|
|
326
|
+
/** Candlestick: open / high / low (`y` is the close) */
|
|
327
|
+
open?: number;
|
|
328
|
+
high?: number;
|
|
329
|
+
low?: number;
|
|
330
|
+
/** Heatmap: value of the cell */
|
|
331
|
+
value?: number;
|
|
271
332
|
}
|
|
272
333
|
/** Hover / click payload */
|
|
273
334
|
export interface ChartHoverEvent {
|
|
@@ -8,30 +8,51 @@ export type ChartRendererPreference = "auto" | ChartRendererKind;
|
|
|
8
8
|
/** Scale of an axis */
|
|
9
9
|
export type ChartAxisType = "linear" | "time" | "category";
|
|
10
10
|
/** How a series is drawn */
|
|
11
|
-
export type ChartSeriesType = "line" | "area" | "bar" | "scatter";
|
|
11
|
+
export type ChartSeriesType = "line" | "area" | "bar" | "scatter" | "candlestick" | "heatmap";
|
|
12
|
+
/** Shape of a line (and of the edge of an area) between its points */
|
|
13
|
+
export type ChartCurve = "linear" | "smooth" | "step";
|
|
12
14
|
/** X value of a datum: a number, a `Date` (time axis) or a category name */
|
|
13
15
|
export type ChartXValue = number | Date | string;
|
|
14
16
|
/** One datum written as an object */
|
|
15
17
|
export interface ChartPointDatum {
|
|
16
18
|
/** X value; the datum index when omitted */
|
|
17
19
|
x?: ChartXValue;
|
|
18
|
-
/**
|
|
19
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Y value; `null` leaves a gap. Candlesticks: the close. Heatmaps: the
|
|
22
|
+
* row (a number, or a category name of a `category` y axis)
|
|
23
|
+
*/
|
|
24
|
+
y: number | string | null;
|
|
20
25
|
/** Diameter of the dot in CSS pixels (scatter) */
|
|
21
26
|
size?: number;
|
|
22
|
-
/** Color of the dot (scatter); any CSS color */
|
|
27
|
+
/** Color of the dot or bar (scatter, bar); any CSS color */
|
|
23
28
|
color?: string;
|
|
24
29
|
/** Text drawn next to the dot (scatter with `showLabels`) and shown in the tooltip */
|
|
25
30
|
label?: string;
|
|
31
|
+
/** Candlestick: opening value */
|
|
32
|
+
open?: number;
|
|
33
|
+
/** Candlestick: highest value */
|
|
34
|
+
high?: number;
|
|
35
|
+
/** Candlestick: lowest value */
|
|
36
|
+
low?: number;
|
|
37
|
+
/** Heatmap: value of the cell, mapped to `colorScale` */
|
|
38
|
+
value?: number | null;
|
|
26
39
|
}
|
|
27
40
|
/** Column-oriented data: the fastest form for large data sets (typed arrays are used as is) */
|
|
28
41
|
export interface ChartColumnData {
|
|
29
42
|
/** X values; the index when omitted */
|
|
30
43
|
x?: ArrayLike<number> | readonly ChartXValue[];
|
|
31
|
-
/** Y values (`NaN` / `null` leave a gap) */
|
|
32
|
-
y: ArrayLike<number> | readonly (number | null)[];
|
|
44
|
+
/** Y values (`NaN` / `null` leave a gap); candlesticks: the closes; heatmaps: the rows */
|
|
45
|
+
y: ArrayLike<number> | readonly (number | string | null)[];
|
|
33
46
|
/** Per-point diameters in CSS pixels (scatter) */
|
|
34
47
|
size?: ArrayLike<number>;
|
|
48
|
+
/** Candlestick: opening values */
|
|
49
|
+
open?: ArrayLike<number>;
|
|
50
|
+
/** Candlestick: highest values */
|
|
51
|
+
high?: ArrayLike<number>;
|
|
52
|
+
/** Candlestick: lowest values */
|
|
53
|
+
low?: ArrayLike<number>;
|
|
54
|
+
/** Heatmap: values of the cells */
|
|
55
|
+
value?: ArrayLike<number> | readonly (number | null)[];
|
|
35
56
|
}
|
|
36
57
|
/**
|
|
37
58
|
* Data of a series: y values only (`[3, 5, 2]`, typed arrays included),
|
|
@@ -65,17 +86,45 @@ export interface ChartSeries {
|
|
|
65
86
|
pointSize?: number;
|
|
66
87
|
/** Fill opacity (area, scatter), 0-1 */
|
|
67
88
|
opacity?: number;
|
|
68
|
-
/**
|
|
89
|
+
/**
|
|
90
|
+
* Series with the same stack id are stacked (bars, areas and lines; see
|
|
91
|
+
* `stackMode` for 100% stacks)
|
|
92
|
+
*/
|
|
69
93
|
stack?: string;
|
|
70
94
|
/** Hides the series (it stays in the legend) */
|
|
71
95
|
hidden?: boolean;
|
|
72
|
-
/**
|
|
96
|
+
/**
|
|
97
|
+
* Draws the `label` of each point next to it (scatter) or the value above
|
|
98
|
+
* each bar (bar)
|
|
99
|
+
*/
|
|
73
100
|
showLabels?: boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Shape of the line between the points: straight, smooth (monotone, never
|
|
103
|
+
* overshoots the data) or steps (line / area)
|
|
104
|
+
* @default "linear"
|
|
105
|
+
*/
|
|
106
|
+
curve?: ChartCurve;
|
|
107
|
+
/** Candlestick: color of the rising candles (close >= open); `--success-color` by default */
|
|
108
|
+
upColor?: string;
|
|
109
|
+
/** Candlestick: color of the falling candles; `--danger-color` by default */
|
|
110
|
+
downColor?: string;
|
|
111
|
+
/**
|
|
112
|
+
* Heatmap: colors from the lowest to the highest value (two or more)
|
|
113
|
+
* @default a ramp from the background to the series color
|
|
114
|
+
*/
|
|
115
|
+
colorScale?: readonly string[];
|
|
116
|
+
/** Heatmap: values mapped to the ends of `colorScale`; the data range by default */
|
|
117
|
+
valueRange?: readonly [number, number];
|
|
118
|
+
/** Bar / heatmap: corner radius in CSS pixels (bars: 3, heatmap cells: 2) */
|
|
119
|
+
radius?: number;
|
|
120
|
+
/** Formats the values of this series in the tooltip (the y axis format by default) */
|
|
121
|
+
format?: (value: number) => string;
|
|
74
122
|
}
|
|
75
123
|
/** Options of an axis */
|
|
76
124
|
export interface ChartAxisOptions {
|
|
77
125
|
/**
|
|
78
|
-
* Scale of the axis: `linear` numbers, `time` timestamps / dates, `category`
|
|
126
|
+
* Scale of the axis: `linear` numbers, `time` timestamps / dates, `category`
|
|
127
|
+
* names (x axis, and y axis of heatmaps)
|
|
79
128
|
* @default "linear"
|
|
80
129
|
*/
|
|
81
130
|
type?: ChartAxisType;
|
|
@@ -255,6 +304,12 @@ export interface ChartOptions {
|
|
|
255
304
|
palette?: readonly string[];
|
|
256
305
|
/** Accessible name of the chart */
|
|
257
306
|
ariaLabel?: string;
|
|
307
|
+
/**
|
|
308
|
+
* `percent` scales every stack to 100% at each x (the axis shows percents,
|
|
309
|
+
* the tooltip the actual values)
|
|
310
|
+
* @default "normal"
|
|
311
|
+
*/
|
|
312
|
+
stackMode?: "normal" | "percent";
|
|
258
313
|
}
|
|
259
314
|
/** A point under the pointer */
|
|
260
315
|
export interface ChartHoverItem {
|
|
@@ -268,6 +323,12 @@ export interface ChartHoverItem {
|
|
|
268
323
|
/** Resolved color of the point */
|
|
269
324
|
color: string;
|
|
270
325
|
label?: string;
|
|
326
|
+
/** Candlestick: open / high / low (`y` is the close) */
|
|
327
|
+
open?: number;
|
|
328
|
+
high?: number;
|
|
329
|
+
low?: number;
|
|
330
|
+
/** Heatmap: value of the cell */
|
|
331
|
+
value?: number;
|
|
271
332
|
}
|
|
272
333
|
/** Hover / click payload */
|
|
273
334
|
export interface ChartHoverEvent {
|
package/dist/charts/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./engine/format.cjs"),t=require("./engine/chart.cjs"),n=require("./react/Chart.cjs"),r=require("./engine/presets.cjs"),i=require("./react/charts.cjs"),a=require("./engine/
|
|
1
|
+
"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./engine/format.cjs"),t=require("./engine/chart.cjs"),n=require("./react/Chart.cjs"),r=require("./engine/presets.cjs"),i=require("./react/charts.cjs"),a=require("./engine/shapes/chart.cjs"),o=require("./react/shapes.cjs"),s=require("./engine/shapes/canvas.cjs"),c=require("./engine/controller.cjs"),l=require("./engine/canvas.cjs");require("./core.cjs"),exports.AreaChart=i.AreaChart,exports.BarChart=i.BarChart,exports.CandlestickChart=i.CandlestickChart,exports.Chart=n.Chart,exports.DonutChart=o.DonutChart,exports.FunnelChart=o.FunnelChart,exports.GaugeChart=o.GaugeChart,exports.HeatmapChart=i.HeatmapChart,exports.LineChart=i.LineChart,exports.PieChart=o.PieChart,exports.QuadrantChart=i.QuadrantChart,exports.RadarChart=o.RadarChart,exports.ScatterChart=i.ScatterChart,exports.Sparkline=i.Sparkline,exports.TreemapChart=o.TreemapChart,exports.createCanvasChart=l.createCanvasChart,exports.createCanvasShapeChart=s.createCanvasShapeChart,exports.createChart=t.createChart,exports.createChartController=c.createChartController,exports.createShapeChart=a.createShapeChart,exports.formatCompact=e.formatCompact,exports.heatmapChartOptions=r.heatmapChartOptions,exports.quadrantCenter=r.quadrantCenter,exports.quadrantChartOptions=r.quadrantChartOptions,exports.quadrantOf=r.quadrantOf,exports.scenePrimitives=c.scenePrimitives,exports.sparklineOptions=r.sparklineOptions;
|
package/dist/charts/index.d.cts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { Chart } from './react/Chart.cjs';
|
|
2
|
-
export { BarChart, LineChart, QuadrantChart, ScatterChart, } from './react/charts.cjs';
|
|
3
|
-
export
|
|
2
|
+
export { AreaChart, BarChart, CandlestickChart, HeatmapChart, LineChart, QuadrantChart, ScatterChart, Sparkline, } from './react/charts.cjs';
|
|
3
|
+
export { DonutChart, FunnelChart, GaugeChart, PieChart, RadarChart, TreemapChart, } from './react/shapes.cjs';
|
|
4
|
+
export type { AreaChartProps, BarChartProps, CandlestickChartProps, ChartCommonProps, ChartHandle, ChartProps, HeatmapChartProps, LineChartProps, QuadrantChartProps, QuadrantDropTarget, ScatterChartProps, SparklineProps, } from './react/types.cjs';
|
|
5
|
+
export type { DonutChartProps, FunnelChartProps, GaugeChartProps, PieChartProps, RadarChartProps, ShapeChartCommonProps, ShapeChartHandle, TreemapChartProps, } from './react/shapes.cjs';
|
|
4
6
|
export * from './core.cjs';
|
package/dist/charts/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { Chart } from './react/Chart.js';
|
|
2
|
-
export { BarChart, LineChart, QuadrantChart, ScatterChart, } from './react/charts.js';
|
|
3
|
-
export
|
|
2
|
+
export { AreaChart, BarChart, CandlestickChart, HeatmapChart, LineChart, QuadrantChart, ScatterChart, Sparkline, } from './react/charts.js';
|
|
3
|
+
export { DonutChart, FunnelChart, GaugeChart, PieChart, RadarChart, TreemapChart, } from './react/shapes.js';
|
|
4
|
+
export type { AreaChartProps, BarChartProps, CandlestickChartProps, ChartCommonProps, ChartHandle, ChartProps, HeatmapChartProps, LineChartProps, QuadrantChartProps, QuadrantDropTarget, ScatterChartProps, SparklineProps, } from './react/types.js';
|
|
5
|
+
export type { DonutChartProps, FunnelChartProps, GaugeChartProps, PieChartProps, RadarChartProps, ShapeChartCommonProps, ShapeChartHandle, TreemapChartProps, } from './react/shapes.js';
|
|
4
6
|
export * from './core.js';
|
package/dist/charts/index.js
CHANGED
|
@@ -2,9 +2,12 @@
|
|
|
2
2
|
import { formatCompact as e } from "./engine/format.js";
|
|
3
3
|
import { createChart as t } from "./engine/chart.js";
|
|
4
4
|
import { Chart as n } from "./react/Chart.js";
|
|
5
|
-
import {
|
|
6
|
-
import { BarChart as
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
5
|
+
import { heatmapChartOptions as r, quadrantCenter as i, quadrantChartOptions as a, quadrantOf as o, sparklineOptions as s } from "./engine/presets.js";
|
|
6
|
+
import { AreaChart as c, BarChart as l, CandlestickChart as u, HeatmapChart as d, LineChart as f, QuadrantChart as p, ScatterChart as m, Sparkline as h } from "./react/charts.js";
|
|
7
|
+
import { createShapeChart as g } from "./engine/shapes/chart.js";
|
|
8
|
+
import { DonutChart as _, FunnelChart as v, GaugeChart as y, PieChart as b, RadarChart as x, TreemapChart as S } from "./react/shapes.js";
|
|
9
|
+
import { createCanvasShapeChart as C } from "./engine/shapes/canvas.js";
|
|
10
|
+
import { createChartController as w, scenePrimitives as T } from "./engine/controller.js";
|
|
11
|
+
import { createCanvasChart as E } from "./engine/canvas.js";
|
|
9
12
|
import "./core.js";
|
|
10
|
-
export {
|
|
13
|
+
export { c as AreaChart, l as BarChart, u as CandlestickChart, n as Chart, _ as DonutChart, v as FunnelChart, y as GaugeChart, d as HeatmapChart, f as LineChart, b as PieChart, p as QuadrantChart, x as RadarChart, m as ScatterChart, h as Sparkline, S as TreemapChart, E as createCanvasChart, C as createCanvasShapeChart, t as createChart, w as createChartController, g as createShapeChart, e as formatCompact, r as heatmapChartOptions, i as quadrantCenter, a as quadrantChartOptions, o as quadrantOf, T as scenePrimitives, s as sparklineOptions };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";const e=require("../engine/chart.cjs");let t=require("react"),n=require("react-dom"),r=require("react/jsx-runtime");var i=(e,t)=>e===void 0?t:typeof e==`number`?`${e}px`:e,a=e=>({series:e.series,xAxis:e.xAxis,yAxis:e.yAxis,renderer:e.renderer,legend:e.legend,tooltip:e.tooltip,crosshair:e.crosshair,annotations:e.annotations,interaction:e.interaction,padding:e.padding,palette:e.palette,ariaLabel:e.ariaLabel});
|
|
1
|
+
"use client";const e=require("../engine/chart.cjs");let t=require("react"),n=require("react-dom"),r=require("react/jsx-runtime");var i=(e,t)=>e===void 0?t:typeof e==`number`?`${e}px`:e,a=e=>({series:e.series,xAxis:e.xAxis,yAxis:e.yAxis,renderer:e.renderer,legend:e.legend,tooltip:e.tooltip,crosshair:e.crosshair,annotations:e.annotations,interaction:e.interaction,padding:e.padding,palette:e.palette,ariaLabel:e.ariaLabel,stackMode:e.stackMode}),o=e=>{if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null},s=(e,t)=>{let n=Object.keys(e);return n.length===Object.keys(t).length&&n.every(n=>e[n]===t[n]&&Object.prototype.hasOwnProperty.call(t,n))},c=(e,t)=>e===t?!0:Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((e,n)=>e===t[n]):o(e)&&o(t)&&s(e,t),l=(e,t)=>{if(e===t)return!0;let n=Object.keys(e);return n.length===Object.keys(t).length&&n.every(n=>{if(!Object.prototype.hasOwnProperty.call(t,n))return!1;if(n!==`series`)return c(e[n],t[n]);let r=e.series,i=t.series;return r===i||r.length===i.length&&r.every((e,t)=>e===i[t]||s(e,i[t]))})},u=(e,t)=>!!e&&e.x===t.x&&e.xLabel===t.xLabel&&e.items.length===t.items.length&&e.items.every((e,n)=>s(e,t.items[n]));function d({options:a,height:o,width:s,className:c,style:d,handleRef:f,renderTooltip:p,overlay:m,...h}){let g=(0,t.useRef)(null),_=(0,t.useRef)(null),v=(0,t.useRef)(h),y=(0,t.useRef)(p),b=(0,t.useRef)(null),[x,S]=(0,t.useState)(null),[C,w]=(0,t.useState)(null),T=(0,t.useMemo)(()=>typeof document>`u`?null:document.createElement(`div`),[]),[E,D]=(0,t.useState)(a);E!==a&&!l(E,a)&&D(a);let O=!!p,k=(0,t.useMemo)(()=>{if(!O||!T||E.tooltip===!1)return E;let e=typeof E.tooltip==`object`?E.tooltip:{};return{...E,tooltip:{...e,render:e=>y.current?(u(b.current,e)||(b.current=e,(0,n.flushSync)(()=>S(e))),T):null}}},[E,O,T]),A=(0,t.useRef)(k);return(0,t.useEffect)(()=>{v.current=h,y.current=p}),(0,t.useEffect)(()=>{let t=g.current;if(!t)return;let n=e.createChart(t,A.current);_.current=n;let r=[n.on(`hover`,e=>v.current.onHover?.(e)),n.on(`click`,e=>v.current.onPointClick?.(e)),n.on(`plotClick`,e=>v.current.onPlotClick?.(e)),n.on(`zoom`,e=>v.current.onZoom?.(e)),n.on(`renderer`,e=>v.current.onRendererChange?.(e)),n.on(`drag`,e=>v.current.onDrag?.(e)),n.on(`drop`,e=>v.current.onDrop?.(e)),n.on(`layout`,e=>w(e))];return()=>{r.forEach(e=>e()),n.destroy(),_.current=null}},[]),(0,t.useEffect)(()=>{A.current!==k&&(A.current=k,_.current?.setOptions(k))},[k]),(0,t.useImperativeHandle)(f,()=>({resetZoom:()=>_.current?.resetZoom(),getView:()=>_.current?.getView()??null,setView:e=>_.current?.setView(e),getRenderer:()=>_.current?.getRenderer()??null,getInstance:()=>_.current}),[]),(0,r.jsxs)(`div`,{className:c,style:{position:`relative`,width:i(s,`100%`),height:i(o,`320px`),...d},children:[(0,r.jsx)(`div`,{ref:g,style:{position:`absolute`,inset:0}}),m&&C&&(0,r.jsx)(`div`,{className:`minerva-chart-overlay`,style:{position:`absolute`,left:C.x,top:C.y,width:C.width,height:C.height,pointerEvents:`none`},children:m(C)}),T&&x&&p&&(0,n.createPortal)(p(x),T)]})}function f(e){let{height:t,width:n,className:i,style:o,ref:s,onHover:c,onPointClick:l,onPlotClick:u,onZoom:f,onRendererChange:p,renderTooltip:m}=e;return(0,r.jsx)(d,{options:a(e),height:t,width:n,className:i,style:o,handleRef:s,onHover:c,onPointClick:l,onPlotClick:u,onZoom:f,onRendererChange:p,renderTooltip:m})}exports.Chart=f,exports.ChartBase=d,exports.engineOptions=a,exports.sameOptions=l;
|
|
2
2
|
//# sourceMappingURL=Chart.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.cjs","names":["useRef","useState","useMemo","createChart","createPortal","require_chart","react","react_dom","react_jsx_runtime","size","value","fallback","engineOptions","props","ChartBase","handlers","containerRef","chartRef","handlersRef","tooltipRef","renderTooltip","tipEvent","setTipEvent","plot","setPlot","tipHost","resolved","options","base","event","optionsRef","container","chart","offs","v","r","rect","off","handleRef","view","width","height","style","overlay","Chart","ref"],"sources":["../../../../charts/src/react/Chart.tsx"],"sourcesContent":["import {\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport { createPortal, flushSync } from \"react-dom\";\nimport { createChart } from \"../engine/chart\";\nimport type {\n ChartDragEvent,\n ChartHoverEvent,\n ChartInstance,\n ChartOptions,\n ChartPlotClickEvent,\n ChartRect,\n ChartRendererKind,\n ChartView,\n} from \"../engine/types\";\nimport type { ChartCommonProps, ChartProps } from \"./types\";\n\ninterface Handlers {\n onHover?: (event: ChartHoverEvent | null) => void;\n onPointClick?: (event: ChartHoverEvent) => void;\n onPlotClick?: (event: ChartPlotClickEvent) => void;\n onZoom?: (view: ChartView) => void;\n onRendererChange?: (renderer: ChartRendererKind) => void;\n onDrag?: (event: ChartDragEvent) => void;\n onDrop?: (event: ChartDragEvent) => void;\n}\n\nconst size = (value: number | string | undefined, fallback: string) =>\n value === undefined\n ? fallback\n : typeof value === \"number\"\n ? `${value}px`\n : value;\n\n/** Engine options of the common props */\nexport const engineOptions = (\n props: Pick<\n ChartCommonProps,\n | \"xAxis\"\n | \"yAxis\"\n | \"renderer\"\n | \"legend\"\n | \"tooltip\"\n | \"crosshair\"\n | \"annotations\"\n | \"interaction\"\n | \"padding\"\n | \"palette\"\n | \"ariaLabel\"\n > &\n Pick<ChartOptions, \"series\">,\n): ChartOptions => ({\n series: props.series,\n xAxis: props.xAxis,\n yAxis: props.yAxis,\n renderer: props.renderer,\n legend: props.legend,\n tooltip: props.tooltip,\n crosshair: props.crosshair,\n annotations: props.annotations,\n interaction: props.interaction,\n padding: props.padding,\n palette: props.palette,\n ariaLabel: props.ariaLabel,\n});\n\ninterface ChartBaseProps extends Handlers {\n options: ChartOptions;\n height?: number | string;\n width?: number | string;\n className?: string;\n style?: CSSProperties;\n handleRef?: ChartCommonProps[\"ref\"];\n /** React content of the tooltip (replaces the engine's content) */\n renderTooltip?: (event: ChartHoverEvent) => ReactNode;\n /** React content placed over the chart, given the plot area */\n overlay?: (plot: ChartRect) => ReactNode;\n}\n\n/** Mounts the engine in a sized <div> and forwards option / handler changes */\nexport function ChartBase({\n options,\n height,\n width,\n className,\n style,\n handleRef,\n renderTooltip,\n overlay,\n ...handlers\n}: ChartBaseProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const chartRef = useRef<ChartInstance | null>(null);\n const handlersRef = useRef<Handlers>(handlers);\n const tooltipRef = useRef(renderTooltip);\n const [tipEvent, setTipEvent] = useState<ChartHoverEvent | null>(null);\n const [plot, setPlot] = useState<ChartRect | null>(null);\n const tipHost = useMemo(\n () =>\n typeof document === \"undefined\" ? null : document.createElement(\"div\"),\n [],\n );\n\n const resolved = useMemo((): ChartOptions => {\n if (!renderTooltip || !tipHost || options.tooltip === false) return options;\n const base = typeof options.tooltip === \"object\" ? options.tooltip : {};\n return {\n ...options,\n tooltip: {\n ...base,\n render: (event) => {\n if (!tooltipRef.current) return null;\n // render synchronously so the engine measures the final size\n flushSync(() => setTipEvent(event));\n return tipHost;\n },\n },\n };\n }, [options, renderTooltip, tipHost]);\n const optionsRef = useRef(resolved);\n\n useEffect(() => {\n handlersRef.current = handlers;\n tooltipRef.current = renderTooltip;\n });\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n const chart = createChart(container, optionsRef.current);\n chartRef.current = chart;\n const offs = [\n chart.on(\"hover\", (e) => handlersRef.current.onHover?.(e)),\n chart.on(\"click\", (e) => handlersRef.current.onPointClick?.(e)),\n chart.on(\"plotClick\", (e) => handlersRef.current.onPlotClick?.(e)),\n chart.on(\"zoom\", (v) => handlersRef.current.onZoom?.(v)),\n chart.on(\"renderer\", (r) => handlersRef.current.onRendererChange?.(r)),\n chart.on(\"drag\", (e) => handlersRef.current.onDrag?.(e)),\n chart.on(\"drop\", (e) => handlersRef.current.onDrop?.(e)),\n chart.on(\"layout\", (rect) => setPlot(rect)),\n ];\n return () => {\n offs.forEach((off) => off());\n chart.destroy();\n chartRef.current = null;\n };\n }, []);\n\n useEffect(() => {\n if (optionsRef.current === resolved) return;\n optionsRef.current = resolved;\n chartRef.current?.setOptions(resolved);\n }, [resolved]);\n\n useImperativeHandle(\n handleRef,\n () => ({\n resetZoom: () => chartRef.current?.resetZoom(),\n getView: () => chartRef.current?.getView() ?? null,\n setView: (view) => chartRef.current?.setView(view),\n getRenderer: () => chartRef.current?.getRenderer() ?? null,\n getInstance: () => chartRef.current,\n }),\n [],\n );\n\n return (\n <div\n className={className}\n style={{\n position: \"relative\",\n width: size(width, \"100%\"),\n height: size(height, \"320px\"),\n ...style,\n }}\n >\n <div ref={containerRef} style={{ position: \"absolute\", inset: 0 }} />\n {overlay && plot && (\n <div\n className=\"minerva-chart-overlay\"\n style={{\n position: \"absolute\",\n left: plot.x,\n top: plot.y,\n width: plot.width,\n height: plot.height,\n pointerEvents: \"none\",\n }}\n >\n {overlay(plot)}\n </div>\n )}\n {tipHost &&\n tipEvent &&\n renderTooltip &&\n createPortal(renderTooltip(tipEvent), tipHost)}\n </div>\n );\n}\n\n/**\n * GPU chart (WebGPU, then WebGL2, then Canvas2D) mixing line, area, bar and\n * scatter series; zoomable, keyboard accessible and themed by the Minerva\n * CSS variables.\n */\nexport function Chart(props: ChartProps) {\n const {\n height,\n width,\n className,\n style,\n ref,\n onHover,\n onPointClick,\n onPlotClick,\n onZoom,\n onRendererChange,\n renderTooltip,\n } = props;\n return (\n <ChartBase\n options={engineOptions(props)}\n height={height}\n width={width}\n className={className}\n style={style}\n handleRef={ref}\n onHover={onHover}\n onPointClick={onPointClick}\n onPlotClick={onPlotClick}\n onZoom={onZoom}\n onRendererChange={onRendererChange}\n renderTooltip={renderTooltip}\n />\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Chart.cjs","names":["useRef","useState","useMemo","createChart","createPortal","require_chart","react","react_dom","react_jsx_runtime","size","value","fallback","engineOptions","props","isPlainObject","proto","shallowEqual","keys","a","b","key","sameValue","v","i","sameOptions","sa","sb","s","sameTooltipEvent","item","ChartBase","handlers","containerRef","chartRef","handlersRef","tooltipRef","renderTooltip","tipEventRef","tipEvent","setTipEvent","plot","setPlot","tipHost","stable","setStable","options","hasTooltip","resolved","base","event","optionsRef","container","chart","offs","r","rect","off","handleRef","view","width","height","style","overlay","Chart","ref"],"sources":["../../../../charts/src/react/Chart.tsx"],"sourcesContent":["import {\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport { createPortal, flushSync } from \"react-dom\";\nimport { createChart } from \"../engine/chart\";\nimport type {\n ChartDragEvent,\n ChartHoverEvent,\n ChartInstance,\n ChartOptions,\n ChartPlotClickEvent,\n ChartRect,\n ChartRendererKind,\n ChartView,\n} from \"../engine/types\";\nimport type { ChartCommonProps, ChartProps } from \"./types\";\n\ninterface Handlers {\n onHover?: (event: ChartHoverEvent | null) => void;\n onPointClick?: (event: ChartHoverEvent) => void;\n onPlotClick?: (event: ChartPlotClickEvent) => void;\n onZoom?: (view: ChartView) => void;\n onRendererChange?: (renderer: ChartRendererKind) => void;\n onDrag?: (event: ChartDragEvent) => void;\n onDrop?: (event: ChartDragEvent) => void;\n}\n\nconst size = (value: number | string | undefined, fallback: string) =>\n value === undefined\n ? fallback\n : typeof value === \"number\"\n ? `${value}px`\n : value;\n\n/** Engine options of the common props */\nexport const engineOptions = (\n props: Pick<\n ChartCommonProps,\n | \"xAxis\"\n | \"yAxis\"\n | \"renderer\"\n | \"legend\"\n | \"tooltip\"\n | \"crosshair\"\n | \"annotations\"\n | \"interaction\"\n | \"padding\"\n | \"palette\"\n | \"ariaLabel\"\n > &\n Pick<ChartOptions, \"series\" | \"stackMode\">,\n): ChartOptions => ({\n series: props.series,\n xAxis: props.xAxis,\n yAxis: props.yAxis,\n renderer: props.renderer,\n legend: props.legend,\n tooltip: props.tooltip,\n crosshair: props.crosshair,\n annotations: props.annotations,\n interaction: props.interaction,\n padding: props.padding,\n palette: props.palette,\n ariaLabel: props.ariaLabel,\n stackMode: props.stackMode,\n});\n\ninterface ChartBaseProps extends Handlers {\n options: ChartOptions;\n height?: number | string;\n width?: number | string;\n className?: string;\n style?: CSSProperties;\n handleRef?: ChartCommonProps[\"ref\"];\n /** React content of the tooltip (replaces the engine's content) */\n renderTooltip?: (event: ChartHoverEvent) => ReactNode;\n /** React content placed over the chart, given the plot area */\n overlay?: (plot: ChartRect) => ReactNode;\n}\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> => {\n if (typeof value !== \"object\" || value === null) return false;\n const proto = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n};\n\n/** Same keys with identical values */\nconst shallowEqual = (\n a: Record<string, unknown>,\n b: Record<string, unknown>,\n): boolean => {\n const keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) return false;\n return keys.every(\n (key) => a[key] === b[key] && Object.prototype.hasOwnProperty.call(b, key),\n );\n};\n\n/**\n * Identical values, or plain arrays / objects whose items are identical\n * (`[\"#f00\"]`, `{ title: \"x\" }` written inline)\n */\nconst sameValue = (a: unknown, b: unknown): boolean => {\n if (a === b) return true;\n if (Array.isArray(a) && Array.isArray(b))\n return a.length === b.length && a.every((v, i) => v === b[i]);\n return isPlainObject(a) && isPlainObject(b) && shallowEqual(a, b);\n};\n\n/**\n * Whether `b` describes the same chart as `a`: top-level options compared by\n * identity (or one level deep for inline arrays / objects), series compared\n * one by one, each series shallowly (inline `series={[{ name, data }]}`\n * with a stable `data` stays equal). Data is never compared by content.\n */\nexport const sameOptions = (a: ChartOptions, b: ChartOptions): boolean => {\n if (a === b) return true;\n const keys = Object.keys(a) as (keyof ChartOptions)[];\n if (keys.length !== Object.keys(b).length) return false;\n return keys.every((key) => {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (key !== \"series\") return sameValue(a[key], b[key]);\n const sa = a.series;\n const sb = b.series;\n return (\n sa === sb ||\n (sa.length === sb.length &&\n sa.every(\n (s, i) =>\n s === sb[i] ||\n shallowEqual(\n s as unknown as Record<string, unknown>,\n sb[i] as unknown as Record<string, unknown>,\n ),\n ))\n );\n });\n};\n\n/** Same hovered points with the same values (same tooltip content) */\nconst sameTooltipEvent = (\n a: ChartHoverEvent | null,\n b: ChartHoverEvent,\n): boolean =>\n !!a &&\n a.x === b.x &&\n a.xLabel === b.xLabel &&\n a.items.length === b.items.length &&\n a.items.every((item, i) =>\n shallowEqual(\n item as unknown as Record<string, unknown>,\n b.items[i] as unknown as Record<string, unknown>,\n ),\n );\n\n/** Mounts the engine in a sized <div> and forwards option / handler changes */\nexport function ChartBase({\n options,\n height,\n width,\n className,\n style,\n handleRef,\n renderTooltip,\n overlay,\n ...handlers\n}: ChartBaseProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const chartRef = useRef<ChartInstance | null>(null);\n const handlersRef = useRef<Handlers>(handlers);\n const tooltipRef = useRef(renderTooltip);\n const tipEventRef = useRef<ChartHoverEvent | null>(null);\n const [tipEvent, setTipEvent] = useState<ChartHoverEvent | null>(null);\n const [plot, setPlot] = useState<ChartRect | null>(null);\n const tipHost = useMemo(\n () =>\n typeof document === \"undefined\" ? null : document.createElement(\"div\"),\n [],\n );\n\n // Parents pass a new options object on every render: keep the previous\n // one while it describes the same chart, so the engine isn't rebuilt\n // (state derived during render, the pattern React documents for it)\n const [stable, setStable] = useState(options);\n if (stable !== options && !sameOptions(stable, options)) setStable(options);\n // the render callback reads the latest `renderTooltip` through a ref: only\n // its presence matters here (inline callbacks change on every render)\n const hasTooltip = !!renderTooltip;\n\n const resolved = useMemo((): ChartOptions => {\n if (!hasTooltip || !tipHost || stable.tooltip === false) return stable;\n const base = typeof stable.tooltip === \"object\" ? stable.tooltip : {};\n return {\n ...stable,\n tooltip: {\n ...base,\n render: (event) => {\n if (!tooltipRef.current) return null;\n // render synchronously so the engine measures the final size;\n // pointer moves over the same points keep the rendered content\n if (!sameTooltipEvent(tipEventRef.current, event)) {\n tipEventRef.current = event;\n flushSync(() => setTipEvent(event));\n }\n return tipHost;\n },\n },\n };\n }, [stable, hasTooltip, tipHost]);\n const optionsRef = useRef(resolved);\n\n useEffect(() => {\n handlersRef.current = handlers;\n tooltipRef.current = renderTooltip;\n });\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n const chart = createChart(container, optionsRef.current);\n chartRef.current = chart;\n const offs = [\n chart.on(\"hover\", (e) => handlersRef.current.onHover?.(e)),\n chart.on(\"click\", (e) => handlersRef.current.onPointClick?.(e)),\n chart.on(\"plotClick\", (e) => handlersRef.current.onPlotClick?.(e)),\n chart.on(\"zoom\", (v) => handlersRef.current.onZoom?.(v)),\n chart.on(\"renderer\", (r) => handlersRef.current.onRendererChange?.(r)),\n chart.on(\"drag\", (e) => handlersRef.current.onDrag?.(e)),\n chart.on(\"drop\", (e) => handlersRef.current.onDrop?.(e)),\n chart.on(\"layout\", (rect) => setPlot(rect)),\n ];\n return () => {\n offs.forEach((off) => off());\n chart.destroy();\n chartRef.current = null;\n };\n }, []);\n\n useEffect(() => {\n if (optionsRef.current === resolved) return;\n optionsRef.current = resolved;\n chartRef.current?.setOptions(resolved);\n }, [resolved]);\n\n useImperativeHandle(\n handleRef,\n () => ({\n resetZoom: () => chartRef.current?.resetZoom(),\n getView: () => chartRef.current?.getView() ?? null,\n setView: (view) => chartRef.current?.setView(view),\n getRenderer: () => chartRef.current?.getRenderer() ?? null,\n getInstance: () => chartRef.current,\n }),\n [],\n );\n\n return (\n <div\n className={className}\n style={{\n position: \"relative\",\n width: size(width, \"100%\"),\n height: size(height, \"320px\"),\n ...style,\n }}\n >\n <div ref={containerRef} style={{ position: \"absolute\", inset: 0 }} />\n {overlay && plot && (\n <div\n className=\"minerva-chart-overlay\"\n style={{\n position: \"absolute\",\n left: plot.x,\n top: plot.y,\n width: plot.width,\n height: plot.height,\n pointerEvents: \"none\",\n }}\n >\n {overlay(plot)}\n </div>\n )}\n {tipHost &&\n tipEvent &&\n renderTooltip &&\n createPortal(renderTooltip(tipEvent), tipHost)}\n </div>\n );\n}\n\n/**\n * GPU chart (WebGPU, then WebGL2, then Canvas2D) mixing line, area, bar and\n * scatter series; zoomable, keyboard accessible and themed by the Minerva\n * CSS variables.\n */\nexport function Chart(props: ChartProps) {\n const {\n height,\n width,\n className,\n style,\n ref,\n onHover,\n onPointClick,\n onPlotClick,\n onZoom,\n onRendererChange,\n renderTooltip,\n } = props;\n return (\n <ChartBase\n options={engineOptions(props)}\n height={height}\n width={width}\n className={className}\n style={style}\n handleRef={ref}\n onHover={onHover}\n onPointClick={onPointClick}\n onPlotClick={onPlotClick}\n onZoom={onZoom}\n onRendererChange={onRendererChange}\n renderTooltip={renderTooltip}\n />\n );\n}\n"],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ interface Handlers {
|
|
|
11
11
|
onDrop?: (event: ChartDragEvent) => void;
|
|
12
12
|
}
|
|
13
13
|
/** Engine options of the common props */
|
|
14
|
-
export declare const engineOptions: (props: Pick<ChartCommonProps, "xAxis" | "yAxis" | "renderer" | "legend" | "tooltip" | "crosshair" | "annotations" | "interaction" | "padding" | "palette" | "ariaLabel"> & Pick<ChartOptions, "series">) => ChartOptions;
|
|
14
|
+
export declare const engineOptions: (props: Pick<ChartCommonProps, "xAxis" | "yAxis" | "renderer" | "legend" | "tooltip" | "crosshair" | "annotations" | "interaction" | "padding" | "palette" | "ariaLabel"> & Pick<ChartOptions, "series" | "stackMode">) => ChartOptions;
|
|
15
15
|
interface ChartBaseProps extends Handlers {
|
|
16
16
|
options: ChartOptions;
|
|
17
17
|
height?: number | string;
|
|
@@ -24,6 +24,13 @@ interface ChartBaseProps extends Handlers {
|
|
|
24
24
|
/** React content placed over the chart, given the plot area */
|
|
25
25
|
overlay?: (plot: ChartRect) => ReactNode;
|
|
26
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Whether `b` describes the same chart as `a`: top-level options compared by
|
|
29
|
+
* identity (or one level deep for inline arrays / objects), series compared
|
|
30
|
+
* one by one, each series shallowly (inline `series={[{ name, data }]}`
|
|
31
|
+
* with a stable `data` stays equal). Data is never compared by content.
|
|
32
|
+
*/
|
|
33
|
+
export declare const sameOptions: (a: ChartOptions, b: ChartOptions) => boolean;
|
|
27
34
|
/** Mounts the engine in a sized <div> and forwards option / handler changes */
|
|
28
35
|
export declare function ChartBase({ options, height, width, className, style, handleRef, renderTooltip, overlay, ...handlers }: ChartBaseProps): import('react').JSX.Element;
|
|
29
36
|
/**
|
|
@@ -11,7 +11,7 @@ interface Handlers {
|
|
|
11
11
|
onDrop?: (event: ChartDragEvent) => void;
|
|
12
12
|
}
|
|
13
13
|
/** Engine options of the common props */
|
|
14
|
-
export declare const engineOptions: (props: Pick<ChartCommonProps, "xAxis" | "yAxis" | "renderer" | "legend" | "tooltip" | "crosshair" | "annotations" | "interaction" | "padding" | "palette" | "ariaLabel"> & Pick<ChartOptions, "series">) => ChartOptions;
|
|
14
|
+
export declare const engineOptions: (props: Pick<ChartCommonProps, "xAxis" | "yAxis" | "renderer" | "legend" | "tooltip" | "crosshair" | "annotations" | "interaction" | "padding" | "palette" | "ariaLabel"> & Pick<ChartOptions, "series" | "stackMode">) => ChartOptions;
|
|
15
15
|
interface ChartBaseProps extends Handlers {
|
|
16
16
|
options: ChartOptions;
|
|
17
17
|
height?: number | string;
|
|
@@ -24,6 +24,13 @@ interface ChartBaseProps extends Handlers {
|
|
|
24
24
|
/** React content placed over the chart, given the plot area */
|
|
25
25
|
overlay?: (plot: ChartRect) => ReactNode;
|
|
26
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Whether `b` describes the same chart as `a`: top-level options compared by
|
|
29
|
+
* identity (or one level deep for inline arrays / objects), series compared
|
|
30
|
+
* one by one, each series shallowly (inline `series={[{ name, data }]}`
|
|
31
|
+
* with a stable `data` stays equal). Data is never compared by content.
|
|
32
|
+
*/
|
|
33
|
+
export declare const sameOptions: (a: ChartOptions, b: ChartOptions) => boolean;
|
|
27
34
|
/** Mounts the engine in a sized <div> and forwards option / handler changes */
|
|
28
35
|
export declare function ChartBase({ options, height, width, className, style, handleRef, renderTooltip, overlay, ...handlers }: ChartBaseProps): import('react').JSX.Element;
|
|
29
36
|
/**
|
|
@@ -16,87 +16,106 @@ var u = (e, t) => e === void 0 ? t : typeof e == "number" ? `${e}px` : e, d = (e
|
|
|
16
16
|
interaction: e.interaction,
|
|
17
17
|
padding: e.padding,
|
|
18
18
|
palette: e.palette,
|
|
19
|
-
ariaLabel: e.ariaLabel
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
ariaLabel: e.ariaLabel,
|
|
20
|
+
stackMode: e.stackMode
|
|
21
|
+
}), f = (e) => {
|
|
22
|
+
if (typeof e != "object" || !e) return !1;
|
|
23
|
+
let t = Object.getPrototypeOf(e);
|
|
24
|
+
return t === Object.prototype || t === null;
|
|
25
|
+
}, p = (e, t) => {
|
|
26
|
+
let n = Object.keys(e);
|
|
27
|
+
return n.length === Object.keys(t).length && n.every((n) => e[n] === t[n] && Object.prototype.hasOwnProperty.call(t, n));
|
|
28
|
+
}, m = (e, t) => e === t ? !0 : Array.isArray(e) && Array.isArray(t) ? e.length === t.length && e.every((e, n) => e === t[n]) : f(e) && f(t) && p(e, t), h = (e, t) => {
|
|
29
|
+
if (e === t) return !0;
|
|
30
|
+
let n = Object.keys(e);
|
|
31
|
+
return n.length === Object.keys(t).length && n.every((n) => {
|
|
32
|
+
if (!Object.prototype.hasOwnProperty.call(t, n)) return !1;
|
|
33
|
+
if (n !== "series") return m(e[n], t[n]);
|
|
34
|
+
let r = e.series, i = t.series;
|
|
35
|
+
return r === i || r.length === i.length && r.every((e, t) => e === i[t] || p(e, i[t]));
|
|
36
|
+
});
|
|
37
|
+
}, g = (e, t) => !!e && e.x === t.x && e.xLabel === t.xLabel && e.items.length === t.items.length && e.items.every((e, n) => p(e, t.items[n]));
|
|
38
|
+
function _({ options: d, height: f, width: p, className: m, style: _, handleRef: v, renderTooltip: y, overlay: b, ...x }) {
|
|
39
|
+
let S = i(null), C = i(null), w = i(x), T = i(y), E = i(null), [D, O] = a(null), [k, A] = a(null), j = r(() => typeof document > "u" ? null : document.createElement("div"), []), [M, N] = a(d);
|
|
40
|
+
M !== d && !h(M, d) && N(d);
|
|
41
|
+
let P = !!y, F = r(() => {
|
|
42
|
+
if (!P || !j || M.tooltip === !1) return M;
|
|
43
|
+
let e = typeof M.tooltip == "object" ? M.tooltip : {};
|
|
25
44
|
return {
|
|
26
|
-
...
|
|
45
|
+
...M,
|
|
27
46
|
tooltip: {
|
|
28
47
|
...e,
|
|
29
|
-
render: (e) =>
|
|
48
|
+
render: (e) => T.current ? (g(E.current, e) || (E.current = e, s(() => O(e))), j) : null
|
|
30
49
|
}
|
|
31
50
|
};
|
|
32
51
|
}, [
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
]),
|
|
52
|
+
M,
|
|
53
|
+
P,
|
|
54
|
+
j
|
|
55
|
+
]), I = i(F);
|
|
37
56
|
return t(() => {
|
|
38
|
-
|
|
57
|
+
w.current = x, T.current = y;
|
|
39
58
|
}), t(() => {
|
|
40
|
-
let t =
|
|
59
|
+
let t = S.current;
|
|
41
60
|
if (!t) return;
|
|
42
|
-
let n = e(t,
|
|
43
|
-
|
|
61
|
+
let n = e(t, I.current);
|
|
62
|
+
C.current = n;
|
|
44
63
|
let r = [
|
|
45
|
-
n.on("hover", (e) =>
|
|
46
|
-
n.on("click", (e) =>
|
|
47
|
-
n.on("plotClick", (e) =>
|
|
48
|
-
n.on("zoom", (e) =>
|
|
49
|
-
n.on("renderer", (e) =>
|
|
50
|
-
n.on("drag", (e) =>
|
|
51
|
-
n.on("drop", (e) =>
|
|
52
|
-
n.on("layout", (e) =>
|
|
64
|
+
n.on("hover", (e) => w.current.onHover?.(e)),
|
|
65
|
+
n.on("click", (e) => w.current.onPointClick?.(e)),
|
|
66
|
+
n.on("plotClick", (e) => w.current.onPlotClick?.(e)),
|
|
67
|
+
n.on("zoom", (e) => w.current.onZoom?.(e)),
|
|
68
|
+
n.on("renderer", (e) => w.current.onRendererChange?.(e)),
|
|
69
|
+
n.on("drag", (e) => w.current.onDrag?.(e)),
|
|
70
|
+
n.on("drop", (e) => w.current.onDrop?.(e)),
|
|
71
|
+
n.on("layout", (e) => A(e))
|
|
53
72
|
];
|
|
54
73
|
return () => {
|
|
55
|
-
r.forEach((e) => e()), n.destroy(),
|
|
74
|
+
r.forEach((e) => e()), n.destroy(), C.current = null;
|
|
56
75
|
};
|
|
57
76
|
}, []), t(() => {
|
|
58
|
-
|
|
59
|
-
}, [
|
|
60
|
-
resetZoom: () =>
|
|
61
|
-
getView: () =>
|
|
62
|
-
setView: (e) =>
|
|
63
|
-
getRenderer: () =>
|
|
64
|
-
getInstance: () =>
|
|
77
|
+
I.current !== F && (I.current = F, C.current?.setOptions(F));
|
|
78
|
+
}, [F]), n(v, () => ({
|
|
79
|
+
resetZoom: () => C.current?.resetZoom(),
|
|
80
|
+
getView: () => C.current?.getView() ?? null,
|
|
81
|
+
setView: (e) => C.current?.setView(e),
|
|
82
|
+
getRenderer: () => C.current?.getRenderer() ?? null,
|
|
83
|
+
getInstance: () => C.current
|
|
65
84
|
}), []), /* @__PURE__ */ l("div", {
|
|
66
85
|
className: m,
|
|
67
86
|
style: {
|
|
68
87
|
position: "relative",
|
|
69
88
|
width: u(p, "100%"),
|
|
70
89
|
height: u(f, "320px"),
|
|
71
|
-
...
|
|
90
|
+
..._
|
|
72
91
|
},
|
|
73
92
|
children: [
|
|
74
93
|
/* @__PURE__ */ c("div", {
|
|
75
|
-
ref:
|
|
94
|
+
ref: S,
|
|
76
95
|
style: {
|
|
77
96
|
position: "absolute",
|
|
78
97
|
inset: 0
|
|
79
98
|
}
|
|
80
99
|
}),
|
|
81
|
-
|
|
100
|
+
b && k && /* @__PURE__ */ c("div", {
|
|
82
101
|
className: "minerva-chart-overlay",
|
|
83
102
|
style: {
|
|
84
103
|
position: "absolute",
|
|
85
|
-
left:
|
|
86
|
-
top:
|
|
87
|
-
width:
|
|
88
|
-
height:
|
|
104
|
+
left: k.x,
|
|
105
|
+
top: k.y,
|
|
106
|
+
width: k.width,
|
|
107
|
+
height: k.height,
|
|
89
108
|
pointerEvents: "none"
|
|
90
109
|
},
|
|
91
|
-
children:
|
|
110
|
+
children: b(k)
|
|
92
111
|
}),
|
|
93
|
-
|
|
112
|
+
j && D && y && o(y(D), j)
|
|
94
113
|
]
|
|
95
114
|
});
|
|
96
115
|
}
|
|
97
|
-
function
|
|
98
|
-
let { height: t, width: n, className: r, style: i, ref: a, onHover: o, onPointClick: s, onPlotClick: l, onZoom: u, onRendererChange:
|
|
99
|
-
return /* @__PURE__ */ c(
|
|
116
|
+
function v(e) {
|
|
117
|
+
let { height: t, width: n, className: r, style: i, ref: a, onHover: o, onPointClick: s, onPlotClick: l, onZoom: u, onRendererChange: f, renderTooltip: p } = e;
|
|
118
|
+
return /* @__PURE__ */ c(_, {
|
|
100
119
|
options: d(e),
|
|
101
120
|
height: t,
|
|
102
121
|
width: n,
|
|
@@ -107,11 +126,11 @@ function p(e) {
|
|
|
107
126
|
onPointClick: s,
|
|
108
127
|
onPlotClick: l,
|
|
109
128
|
onZoom: u,
|
|
110
|
-
onRendererChange:
|
|
111
|
-
renderTooltip:
|
|
129
|
+
onRendererChange: f,
|
|
130
|
+
renderTooltip: p
|
|
112
131
|
});
|
|
113
132
|
}
|
|
114
133
|
//#endregion
|
|
115
|
-
export {
|
|
134
|
+
export { v as Chart, _ as ChartBase, d as engineOptions, h as sameOptions };
|
|
116
135
|
|
|
117
136
|
//# sourceMappingURL=Chart.js.map
|