minerva-design 1.0.2 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/README.md +21 -19
- package/dist/charts/canvas.d.cts +7 -0
- package/dist/charts/canvas.d.ts +7 -0
- package/dist/charts/core.cjs +1 -0
- package/dist/charts/core.d.cts +7 -0
- package/dist/charts/core.d.ts +7 -0
- package/dist/charts/core.js +6 -0
- package/dist/charts/engine/axis.cjs +2 -0
- package/dist/charts/engine/axis.cjs.map +1 -0
- package/dist/charts/engine/axis.d.cts +13 -0
- package/dist/charts/engine/axis.d.ts +13 -0
- package/dist/charts/engine/axis.js +38 -0
- package/dist/charts/engine/axis.js.map +1 -0
- package/dist/charts/engine/canvas.cjs +2 -0
- package/dist/charts/engine/canvas.cjs.map +1 -0
- package/dist/charts/engine/canvas.d.cts +85 -0
- package/dist/charts/engine/canvas.d.ts +85 -0
- package/dist/charts/engine/canvas.js +165 -0
- package/dist/charts/engine/canvas.js.map +1 -0
- package/dist/charts/engine/chart.cjs +3 -0
- package/dist/charts/engine/chart.cjs.map +1 -0
- package/dist/charts/engine/chart.d.cts +6 -0
- package/dist/charts/engine/chart.d.ts +6 -0
- package/dist/charts/engine/chart.js +566 -0
- package/dist/charts/engine/chart.js.map +1 -0
- package/dist/charts/engine/color.cjs +2 -0
- package/dist/charts/engine/color.cjs.map +1 -0
- package/dist/charts/engine/color.d.cts +33 -0
- package/dist/charts/engine/color.d.ts +33 -0
- package/dist/charts/engine/color.js +167 -0
- package/dist/charts/engine/color.js.map +1 -0
- package/dist/charts/engine/controller.cjs +3 -0
- package/dist/charts/engine/controller.cjs.map +1 -0
- package/dist/charts/engine/controller.d.cts +182 -0
- package/dist/charts/engine/controller.d.ts +182 -0
- package/dist/charts/engine/controller.js +528 -0
- package/dist/charts/engine/controller.js.map +1 -0
- package/dist/charts/engine/data.cjs +2 -0
- package/dist/charts/engine/data.cjs.map +1 -0
- package/dist/charts/engine/data.d.cts +29 -0
- package/dist/charts/engine/data.d.ts +29 -0
- package/dist/charts/engine/data.js +104 -0
- package/dist/charts/engine/data.js.map +1 -0
- package/dist/charts/engine/decimate.cjs +2 -0
- package/dist/charts/engine/decimate.cjs.map +1 -0
- package/dist/charts/engine/decimate.d.cts +13 -0
- package/dist/charts/engine/decimate.d.ts +13 -0
- package/dist/charts/engine/decimate.js +28 -0
- package/dist/charts/engine/decimate.js.map +1 -0
- package/dist/charts/engine/dom.cjs +2 -0
- package/dist/charts/engine/dom.cjs.map +1 -0
- package/dist/charts/engine/dom.d.cts +21 -0
- package/dist/charts/engine/dom.d.ts +21 -0
- package/dist/charts/engine/dom.js +125 -0
- package/dist/charts/engine/dom.js.map +1 -0
- package/dist/charts/engine/format.cjs +2 -0
- package/dist/charts/engine/format.cjs.map +1 -0
- package/dist/charts/engine/format.d.cts +9 -0
- package/dist/charts/engine/format.d.ts +9 -0
- package/dist/charts/engine/format.js +34 -0
- package/dist/charts/engine/format.js.map +1 -0
- package/dist/charts/engine/items.cjs +2 -0
- package/dist/charts/engine/items.cjs.map +1 -0
- package/dist/charts/engine/items.d.cts +8 -0
- package/dist/charts/engine/items.d.ts +8 -0
- package/dist/charts/engine/items.js +91 -0
- package/dist/charts/engine/items.js.map +1 -0
- package/dist/charts/engine/layout.cjs +2 -0
- package/dist/charts/engine/layout.cjs.map +1 -0
- package/dist/charts/engine/layout.d.cts +37 -0
- package/dist/charts/engine/layout.d.ts +37 -0
- package/dist/charts/engine/layout.js +26 -0
- package/dist/charts/engine/layout.js.map +1 -0
- package/dist/charts/engine/model.cjs +2 -0
- package/dist/charts/engine/model.cjs.map +1 -0
- package/dist/charts/engine/model.d.cts +74 -0
- package/dist/charts/engine/model.d.ts +74 -0
- package/dist/charts/engine/model.js +175 -0
- package/dist/charts/engine/model.js.map +1 -0
- package/dist/charts/engine/overlay.cjs +2 -0
- package/dist/charts/engine/overlay.cjs.map +1 -0
- package/dist/charts/engine/overlay.d.cts +78 -0
- package/dist/charts/engine/overlay.d.ts +78 -0
- package/dist/charts/engine/overlay.js +137 -0
- package/dist/charts/engine/overlay.js.map +1 -0
- package/dist/charts/engine/presets.cjs +3 -0
- package/dist/charts/engine/presets.cjs.map +1 -0
- package/dist/charts/engine/presets.d.cts +103 -0
- package/dist/charts/engine/presets.d.ts +103 -0
- package/dist/charts/engine/presets.js +153 -0
- package/dist/charts/engine/presets.js.map +1 -0
- package/dist/charts/engine/renderers/canvas2d.cjs +2 -0
- package/dist/charts/engine/renderers/canvas2d.cjs.map +1 -0
- package/dist/charts/engine/renderers/canvas2d.d.cts +20 -0
- package/dist/charts/engine/renderers/canvas2d.d.ts +20 -0
- package/dist/charts/engine/renderers/canvas2d.js +193 -0
- package/dist/charts/engine/renderers/canvas2d.js.map +1 -0
- package/dist/charts/engine/renderers/detect.cjs +2 -0
- package/dist/charts/engine/renderers/detect.cjs.map +1 -0
- package/dist/charts/engine/renderers/detect.d.cts +12 -0
- package/dist/charts/engine/renderers/detect.d.ts +12 -0
- package/dist/charts/engine/renderers/detect.js +33 -0
- package/dist/charts/engine/renderers/detect.js.map +1 -0
- package/dist/charts/engine/renderers/range.cjs +2 -0
- package/dist/charts/engine/renderers/range.cjs.map +1 -0
- package/dist/charts/engine/renderers/range.d.cts +5 -0
- package/dist/charts/engine/renderers/range.d.ts +5 -0
- package/dist/charts/engine/renderers/range.js +32 -0
- package/dist/charts/engine/renderers/range.js.map +1 -0
- package/dist/charts/engine/renderers/shaders.cjs +266 -0
- package/dist/charts/engine/renderers/shaders.cjs.map +1 -0
- package/dist/charts/engine/renderers/shaders.d.cts +20 -0
- package/dist/charts/engine/renderers/shaders.d.ts +20 -0
- package/dist/charts/engine/renderers/shaders.js +251 -0
- package/dist/charts/engine/renderers/shaders.js.map +1 -0
- package/dist/charts/engine/renderers/types.cjs +2 -0
- package/dist/charts/engine/renderers/types.cjs.map +1 -0
- package/dist/charts/engine/renderers/types.d.cts +83 -0
- package/dist/charts/engine/renderers/types.d.ts +83 -0
- package/dist/charts/engine/renderers/types.js +6 -0
- package/dist/charts/engine/renderers/types.js.map +1 -0
- package/dist/charts/engine/renderers/webgl2.cjs +2 -0
- package/dist/charts/engine/renderers/webgl2.cjs.map +1 -0
- package/dist/charts/engine/renderers/webgl2.d.cts +5 -0
- package/dist/charts/engine/renderers/webgl2.d.ts +5 -0
- package/dist/charts/engine/renderers/webgl2.js +134 -0
- package/dist/charts/engine/renderers/webgl2.js.map +1 -0
- package/dist/charts/engine/renderers/webgpu.cjs +2 -0
- package/dist/charts/engine/renderers/webgpu.cjs.map +1 -0
- package/dist/charts/engine/renderers/webgpu.d.cts +6 -0
- package/dist/charts/engine/renderers/webgpu.d.ts +6 -0
- package/dist/charts/engine/renderers/webgpu.js +220 -0
- package/dist/charts/engine/renderers/webgpu.js.map +1 -0
- package/dist/charts/engine/scale.cjs +2 -0
- package/dist/charts/engine/scale.cjs.map +1 -0
- package/dist/charts/engine/scale.d.cts +13 -0
- package/dist/charts/engine/scale.d.ts +13 -0
- package/dist/charts/engine/scale.js +37 -0
- package/dist/charts/engine/scale.js.map +1 -0
- package/dist/charts/engine/scene.cjs +2 -0
- package/dist/charts/engine/scene.cjs.map +1 -0
- package/dist/charts/engine/scene.d.cts +89 -0
- package/dist/charts/engine/scene.d.ts +89 -0
- package/dist/charts/engine/scene.js +241 -0
- package/dist/charts/engine/scene.js.map +1 -0
- package/dist/charts/engine/spatial.cjs +2 -0
- package/dist/charts/engine/spatial.cjs.map +1 -0
- package/dist/charts/engine/spatial.d.cts +18 -0
- package/dist/charts/engine/spatial.d.ts +18 -0
- package/dist/charts/engine/spatial.js +53 -0
- package/dist/charts/engine/spatial.js.map +1 -0
- package/dist/charts/engine/theme.cjs +2 -0
- package/dist/charts/engine/theme.cjs.map +1 -0
- package/dist/charts/engine/theme.d.cts +45 -0
- package/dist/charts/engine/theme.d.ts +45 -0
- package/dist/charts/engine/theme.js +86 -0
- package/dist/charts/engine/theme.js.map +1 -0
- package/dist/charts/engine/time.cjs +2 -0
- package/dist/charts/engine/time.cjs.map +1 -0
- package/dist/charts/engine/time.d.cts +10 -0
- package/dist/charts/engine/time.d.ts +10 -0
- package/dist/charts/engine/time.js +189 -0
- package/dist/charts/engine/time.js.map +1 -0
- package/dist/charts/engine/types.d.cts +356 -0
- package/dist/charts/engine/types.d.ts +356 -0
- package/dist/charts/engine/viewport.cjs +2 -0
- package/dist/charts/engine/viewport.cjs.map +1 -0
- package/dist/charts/engine/viewport.d.cts +12 -0
- package/dist/charts/engine/viewport.d.ts +12 -0
- package/dist/charts/engine/viewport.js +15 -0
- package/dist/charts/engine/viewport.js.map +1 -0
- package/dist/charts/index.cjs +1 -0
- package/dist/charts/index.d.cts +4 -0
- package/dist/charts/index.d.ts +4 -0
- package/dist/charts/index.js +10 -0
- package/dist/charts/react/Chart.cjs +2 -0
- package/dist/charts/react/Chart.cjs.map +1 -0
- package/dist/charts/react/Chart.d.cts +35 -0
- package/dist/charts/react/Chart.d.ts +35 -0
- package/dist/charts/react/Chart.js +117 -0
- package/dist/charts/react/Chart.js.map +1 -0
- package/dist/charts/react/charts.cjs +2 -0
- package/dist/charts/react/charts.cjs.map +1 -0
- package/dist/charts/react/charts.d.cts +13 -0
- package/dist/charts/react/charts.d.ts +13 -0
- package/dist/charts/react/charts.js +133 -0
- package/dist/charts/react/charts.js.map +1 -0
- package/dist/charts/react/types.d.cts +136 -0
- package/dist/charts/react/types.d.ts +136 -0
- package/dist/native/charts/src/canvas.cjs +1 -0
- package/dist/native/charts/src/canvas.js +6 -0
- package/dist/native/charts/src/engine/axis.cjs +2 -0
- package/dist/native/charts/src/engine/axis.cjs.map +1 -0
- package/dist/native/charts/src/engine/axis.js +38 -0
- package/dist/native/charts/src/engine/axis.js.map +1 -0
- package/dist/native/charts/src/engine/canvas.cjs +1 -0
- package/dist/native/charts/src/engine/canvas.js +1 -0
- package/dist/native/charts/src/engine/color.cjs +2 -0
- package/dist/native/charts/src/engine/color.cjs.map +1 -0
- package/dist/native/charts/src/engine/color.js +130 -0
- package/dist/native/charts/src/engine/color.js.map +1 -0
- package/dist/native/charts/src/engine/controller.cjs +3 -0
- package/dist/native/charts/src/engine/controller.cjs.map +1 -0
- package/dist/native/charts/src/engine/controller.js +528 -0
- package/dist/native/charts/src/engine/controller.js.map +1 -0
- package/dist/native/charts/src/engine/data.cjs +2 -0
- package/dist/native/charts/src/engine/data.cjs.map +1 -0
- package/dist/native/charts/src/engine/data.js +104 -0
- package/dist/native/charts/src/engine/data.js.map +1 -0
- package/dist/native/charts/src/engine/decimate.cjs +2 -0
- package/dist/native/charts/src/engine/decimate.cjs.map +1 -0
- package/dist/native/charts/src/engine/decimate.js +28 -0
- package/dist/native/charts/src/engine/decimate.js.map +1 -0
- package/dist/native/charts/src/engine/format.cjs +2 -0
- package/dist/native/charts/src/engine/format.cjs.map +1 -0
- package/dist/native/charts/src/engine/format.js +34 -0
- package/dist/native/charts/src/engine/format.js.map +1 -0
- package/dist/native/charts/src/engine/layout.cjs +2 -0
- package/dist/native/charts/src/engine/layout.cjs.map +1 -0
- package/dist/native/charts/src/engine/layout.js +26 -0
- package/dist/native/charts/src/engine/layout.js.map +1 -0
- package/dist/native/charts/src/engine/model.cjs +2 -0
- package/dist/native/charts/src/engine/model.cjs.map +1 -0
- package/dist/native/charts/src/engine/model.js +175 -0
- package/dist/native/charts/src/engine/model.js.map +1 -0
- package/dist/native/charts/src/engine/overlay.cjs +2 -0
- package/dist/native/charts/src/engine/overlay.cjs.map +1 -0
- package/dist/native/charts/src/engine/overlay.js +49 -0
- package/dist/native/charts/src/engine/overlay.js.map +1 -0
- package/dist/native/charts/src/engine/presets.cjs +3 -0
- package/dist/native/charts/src/engine/presets.cjs.map +1 -0
- package/dist/native/charts/src/engine/presets.js +147 -0
- package/dist/native/charts/src/engine/presets.js.map +1 -0
- package/dist/native/charts/src/engine/scale.cjs +2 -0
- package/dist/native/charts/src/engine/scale.cjs.map +1 -0
- package/dist/native/charts/src/engine/scale.js +37 -0
- package/dist/native/charts/src/engine/scale.js.map +1 -0
- package/dist/native/charts/src/engine/scene.cjs +2 -0
- package/dist/native/charts/src/engine/scene.cjs.map +1 -0
- package/dist/native/charts/src/engine/scene.js +241 -0
- package/dist/native/charts/src/engine/scene.js.map +1 -0
- package/dist/native/charts/src/engine/spatial.cjs +2 -0
- package/dist/native/charts/src/engine/spatial.cjs.map +1 -0
- package/dist/native/charts/src/engine/spatial.js +53 -0
- package/dist/native/charts/src/engine/spatial.js.map +1 -0
- package/dist/native/charts/src/engine/theme.cjs +2 -0
- package/dist/native/charts/src/engine/theme.cjs.map +1 -0
- package/dist/native/charts/src/engine/theme.js +62 -0
- package/dist/native/charts/src/engine/theme.js.map +1 -0
- package/dist/native/charts/src/engine/time.cjs +2 -0
- package/dist/native/charts/src/engine/time.cjs.map +1 -0
- package/dist/native/charts/src/engine/time.js +189 -0
- package/dist/native/charts/src/engine/time.js.map +1 -0
- package/dist/native/charts/src/engine/viewport.cjs +2 -0
- package/dist/native/charts/src/engine/viewport.cjs.map +1 -0
- package/dist/native/charts/src/engine/viewport.js +12 -0
- package/dist/native/charts/src/engine/viewport.js.map +1 -0
- package/dist/native/components/Chart/ChartBase.cjs +2 -0
- package/dist/native/components/Chart/ChartBase.cjs.map +1 -0
- package/dist/native/components/Chart/ChartBase.d.cts +29 -0
- package/dist/native/components/Chart/ChartBase.d.ts +29 -0
- package/dist/native/components/Chart/ChartBase.js +287 -0
- package/dist/native/components/Chart/ChartBase.js.map +1 -0
- package/dist/native/components/Chart/charts.cjs +2 -0
- package/dist/native/components/Chart/charts.cjs.map +1 -0
- package/dist/native/components/Chart/charts.d.cts +19 -0
- package/dist/native/components/Chart/charts.d.ts +19 -0
- package/dist/native/components/Chart/charts.js +173 -0
- package/dist/native/components/Chart/charts.js.map +1 -0
- package/dist/native/components/Chart/index.cjs +1 -0
- package/dist/native/components/Chart/index.d.cts +2 -0
- package/dist/native/components/Chart/index.d.ts +2 -0
- package/dist/native/components/Chart/index.js +2 -0
- package/dist/native/components/Chart/measure.cjs +2 -0
- package/dist/native/components/Chart/measure.cjs.map +1 -0
- package/dist/native/components/Chart/measure.d.cts +5 -0
- package/dist/native/components/Chart/measure.d.ts +5 -0
- package/dist/native/components/Chart/measure.js +11 -0
- package/dist/native/components/Chart/measure.js.map +1 -0
- package/dist/native/components/Chart/scene.cjs +2 -0
- package/dist/native/components/Chart/scene.cjs.map +1 -0
- package/dist/native/components/Chart/scene.d.cts +41 -0
- package/dist/native/components/Chart/scene.d.ts +41 -0
- package/dist/native/components/Chart/scene.js +419 -0
- package/dist/native/components/Chart/scene.js.map +1 -0
- package/dist/native/components/Chart/theme.cjs +2 -0
- package/dist/native/components/Chart/theme.cjs.map +1 -0
- package/dist/native/components/Chart/theme.d.cts +10 -0
- package/dist/native/components/Chart/theme.d.ts +10 -0
- package/dist/native/components/Chart/theme.js +10 -0
- package/dist/native/components/Chart/theme.js.map +1 -0
- package/dist/native/components/Chart/types.d.cts +129 -0
- package/dist/native/components/Chart/types.d.ts +129 -0
- package/dist/native/index.cjs +1 -1
- package/dist/native/index.d.cts +1 -0
- package/dist/native/index.d.ts +1 -0
- package/dist/native/index.js +6 -4
- package/dist/native/manifest.d.cts +7 -0
- package/dist/native/manifest.d.ts +7 -0
- package/dist/native/source/components/Chart/ChartBase.tsx +545 -0
- package/dist/native/source/components/Chart/charts.tsx +291 -0
- package/dist/native/source/components/Chart/index.ts +8 -0
- package/dist/native/source/components/Chart/measure.ts +50 -0
- package/dist/native/source/components/Chart/scene.tsx +987 -0
- package/dist/native/source/components/Chart/theme.ts +16 -0
- package/dist/native/source/components/Chart/types.ts +194 -0
- package/dist/native/source/index.ts +1 -0
- package/dist/native/source/manifest.ts +14 -0
- package/dist/taro/charts.d.ts +144 -0
- package/dist/taro/index.d.ts +1 -0
- package/dist/taro/index.js +3064 -618
- package/dist/uni/BarChart.vue +75 -0
- package/dist/uni/BarChart.vue.d.ts +111 -0
- package/dist/uni/Chart.vue +68 -0
- package/dist/uni/Chart.vue.d.ts +100 -0
- package/dist/uni/LineChart.vue +75 -0
- package/dist/uni/LineChart.vue.d.ts +111 -0
- package/dist/uni/ProgressIndicator.vue.d.ts +1 -1
- package/dist/uni/QuadrantChart.vue +184 -0
- package/dist/uni/QuadrantChart.vue.d.ts +173 -0
- package/dist/uni/ScatterChart.vue +69 -0
- package/dist/uni/ScatterChart.vue.d.ts +100 -0
- package/dist/uni/chart-canvas.d.ts +68 -0
- package/dist/uni/chart-canvas.js +363 -0
- package/dist/uni/chart-types.d.ts +135 -0
- package/dist/uni/chart-types.js +84 -0
- package/dist/uni/charts-canvas.d.ts +1 -0
- package/dist/uni/charts-canvas.js +8 -0
- package/dist/uni/index.d.ts +6 -0
- package/dist/uni/index.js +6 -0
- package/dist/weapp/bar-chart/index.js +1 -0
- package/dist/weapp/bar-chart/index.json +1 -0
- package/dist/weapp/bar-chart/index.wxml +1 -0
- package/dist/weapp/bar-chart/index.wxss +1 -0
- package/dist/weapp/chart/index.js +1 -0
- package/dist/weapp/chart/index.json +1 -0
- package/dist/weapp/chart/index.wxml +1 -0
- package/dist/weapp/chart/index.wxss +1 -0
- package/dist/weapp/controls.js +4019 -266
- package/dist/weapp/line-chart/index.js +1 -0
- package/dist/weapp/line-chart/index.json +1 -0
- package/dist/weapp/line-chart/index.wxml +1 -0
- package/dist/weapp/line-chart/index.wxss +1 -0
- package/dist/weapp/quadrant-chart/index.js +1 -0
- package/dist/weapp/quadrant-chart/index.json +1 -0
- package/dist/weapp/quadrant-chart/index.wxml +1 -0
- package/dist/weapp/quadrant-chart/index.wxss +1 -0
- package/dist/weapp/scatter-chart/index.js +1 -0
- package/dist/weapp/scatter-chart/index.json +1 -0
- package/dist/weapp/scatter-chart/index.wxml +1 -0
- package/dist/weapp/scatter-chart/index.wxss +1 -0
- package/dist/weapp/types.d.ts +295 -0
- package/package.json +48 -2
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { createChart as e } from "../engine/chart.js";
|
|
3
|
+
import { useEffect as t, useImperativeHandle as n, useMemo as r, useRef as i, useState as a } from "react";
|
|
4
|
+
import { createPortal as o, flushSync as s } from "react-dom";
|
|
5
|
+
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
6
|
+
//#region src/react/Chart.tsx
|
|
7
|
+
var u = (e, t) => e === void 0 ? t : typeof e == "number" ? `${e}px` : e, d = (e) => ({
|
|
8
|
+
series: e.series,
|
|
9
|
+
xAxis: e.xAxis,
|
|
10
|
+
yAxis: e.yAxis,
|
|
11
|
+
renderer: e.renderer,
|
|
12
|
+
legend: e.legend,
|
|
13
|
+
tooltip: e.tooltip,
|
|
14
|
+
crosshair: e.crosshair,
|
|
15
|
+
annotations: e.annotations,
|
|
16
|
+
interaction: e.interaction,
|
|
17
|
+
padding: e.padding,
|
|
18
|
+
palette: e.palette,
|
|
19
|
+
ariaLabel: e.ariaLabel
|
|
20
|
+
});
|
|
21
|
+
function f({ options: d, height: f, width: p, className: m, style: h, handleRef: g, renderTooltip: _, overlay: v, ...y }) {
|
|
22
|
+
let b = i(null), x = i(null), S = i(y), C = i(_), [w, T] = a(null), [E, D] = a(null), O = r(() => typeof document > "u" ? null : document.createElement("div"), []), k = r(() => {
|
|
23
|
+
if (!_ || !O || d.tooltip === !1) return d;
|
|
24
|
+
let e = typeof d.tooltip == "object" ? d.tooltip : {};
|
|
25
|
+
return {
|
|
26
|
+
...d,
|
|
27
|
+
tooltip: {
|
|
28
|
+
...e,
|
|
29
|
+
render: (e) => C.current ? (s(() => T(e)), O) : null
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}, [
|
|
33
|
+
d,
|
|
34
|
+
_,
|
|
35
|
+
O
|
|
36
|
+
]), A = i(k);
|
|
37
|
+
return t(() => {
|
|
38
|
+
S.current = y, C.current = _;
|
|
39
|
+
}), t(() => {
|
|
40
|
+
let t = b.current;
|
|
41
|
+
if (!t) return;
|
|
42
|
+
let n = e(t, A.current);
|
|
43
|
+
x.current = n;
|
|
44
|
+
let r = [
|
|
45
|
+
n.on("hover", (e) => S.current.onHover?.(e)),
|
|
46
|
+
n.on("click", (e) => S.current.onPointClick?.(e)),
|
|
47
|
+
n.on("plotClick", (e) => S.current.onPlotClick?.(e)),
|
|
48
|
+
n.on("zoom", (e) => S.current.onZoom?.(e)),
|
|
49
|
+
n.on("renderer", (e) => S.current.onRendererChange?.(e)),
|
|
50
|
+
n.on("drag", (e) => S.current.onDrag?.(e)),
|
|
51
|
+
n.on("drop", (e) => S.current.onDrop?.(e)),
|
|
52
|
+
n.on("layout", (e) => D(e))
|
|
53
|
+
];
|
|
54
|
+
return () => {
|
|
55
|
+
r.forEach((e) => e()), n.destroy(), x.current = null;
|
|
56
|
+
};
|
|
57
|
+
}, []), t(() => {
|
|
58
|
+
A.current !== k && (A.current = k, x.current?.setOptions(k));
|
|
59
|
+
}, [k]), n(g, () => ({
|
|
60
|
+
resetZoom: () => x.current?.resetZoom(),
|
|
61
|
+
getView: () => x.current?.getView() ?? null,
|
|
62
|
+
setView: (e) => x.current?.setView(e),
|
|
63
|
+
getRenderer: () => x.current?.getRenderer() ?? null,
|
|
64
|
+
getInstance: () => x.current
|
|
65
|
+
}), []), /* @__PURE__ */ l("div", {
|
|
66
|
+
className: m,
|
|
67
|
+
style: {
|
|
68
|
+
position: "relative",
|
|
69
|
+
width: u(p, "100%"),
|
|
70
|
+
height: u(f, "320px"),
|
|
71
|
+
...h
|
|
72
|
+
},
|
|
73
|
+
children: [
|
|
74
|
+
/* @__PURE__ */ c("div", {
|
|
75
|
+
ref: b,
|
|
76
|
+
style: {
|
|
77
|
+
position: "absolute",
|
|
78
|
+
inset: 0
|
|
79
|
+
}
|
|
80
|
+
}),
|
|
81
|
+
v && E && /* @__PURE__ */ c("div", {
|
|
82
|
+
className: "minerva-chart-overlay",
|
|
83
|
+
style: {
|
|
84
|
+
position: "absolute",
|
|
85
|
+
left: E.x,
|
|
86
|
+
top: E.y,
|
|
87
|
+
width: E.width,
|
|
88
|
+
height: E.height,
|
|
89
|
+
pointerEvents: "none"
|
|
90
|
+
},
|
|
91
|
+
children: v(E)
|
|
92
|
+
}),
|
|
93
|
+
O && w && _ && o(_(w), O)
|
|
94
|
+
]
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
function p(e) {
|
|
98
|
+
let { height: t, width: n, className: r, style: i, ref: a, onHover: o, onPointClick: s, onPlotClick: l, onZoom: u, onRendererChange: p, renderTooltip: m } = e;
|
|
99
|
+
return /* @__PURE__ */ c(f, {
|
|
100
|
+
options: d(e),
|
|
101
|
+
height: t,
|
|
102
|
+
width: n,
|
|
103
|
+
className: r,
|
|
104
|
+
style: i,
|
|
105
|
+
handleRef: a,
|
|
106
|
+
onHover: o,
|
|
107
|
+
onPointClick: s,
|
|
108
|
+
onPlotClick: l,
|
|
109
|
+
onZoom: u,
|
|
110
|
+
onRendererChange: p,
|
|
111
|
+
renderTooltip: m
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
//#endregion
|
|
115
|
+
export { p as Chart, f as ChartBase, d as engineOptions };
|
|
116
|
+
|
|
117
|
+
//# sourceMappingURL=Chart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Chart.js","names":["size","value","fallback","engineOptions","props","ChartBase","handlers","containerRef","useRef","chartRef","handlersRef","tooltipRef","renderTooltip","tipEvent","setTipEvent","useState","plot","setPlot","tipHost","useMemo","resolved","options","base","flushSync","event","optionsRef","useEffect","container","chart","createChart","offs","v","r","rect","off","useImperativeHandle","handleRef","view","width","height","style","overlay","createPortal","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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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";const e=require("./Chart.cjs"),t=require("../engine/presets.cjs");let n=require("react"),r=require("react/jsx-runtime");var i=e=>({height:e.height,width:e.width,className:e.className,style:e.style,handleRef:e.ref,onHover:e.onHover,onPointClick:e.onPointClick,onPlotClick:e.onPlotClick,onZoom:e.onZoom,onRendererChange:e.onRendererChange,renderTooltip:e.renderTooltip});function a(a){let{series:o,area:s=!1}=a,c=(0,n.useMemo)(()=>t.lineSeries(o,s),[o,s]);return(0,r.jsx)(e.ChartBase,{options:e.engineOptions({...a,series:c}),...i(a)})}function o(a){let{series:o,stacked:s=!1}=a,c=(0,n.useMemo)(()=>t.barSeries(o,s),[o,s]);return(0,r.jsx)(e.ChartBase,{options:e.engineOptions({...a,series:c}),...i(a)})}function s(a){let{series:o}=a,s=(0,n.useMemo)(()=>t.scatterSeries(o),[o]);return(0,r.jsx)(e.ChartBase,{options:e.engineOptions({...a,series:s}),...i(a)})}var c=[`topLeft`,`topRight`,`bottomLeft`,`bottomRight`],l=(e,t,n)=>{let r=e.endsWith(`Left`),i=e.startsWith(`top`);return{position:`absolute`,left:r?0:n.x-t.x,top:i?0:n.y-t.y,width:r?n.x-t.x:t.x+t.width-n.x,height:i?n.y-t.y:t.y+t.height-n.y,pointerEvents:`none`}};function u(n){let{points:a,xDomain:o,yDomain:s,xSplit:u,ySplit:d,quadrants:f,xLabel:p,yLabel:m,axisLabels:h,showTicks:g,reverseX:_,showLabels:v,pointSize:y,name:b,draggable:x,onPointClick:S,onPointDrop:C,onQuadrantClick:w,renderTooltip:T,quadrantContent:E}=n,D={xDomain:o,yDomain:s,xSplit:u,ySplit:d,reverseX:_},O=t.quadrantChartOptions({points:a,xDomain:o,yDomain:s,xSplit:u,ySplit:d,quadrants:f,xLabel:p,yLabel:m,axisLabels:h,showTicks:g,reverseX:_,showLabels:v,pointSize:y,name:b,draggable:x??!!C},e.engineOptions({...n,series:[]})),k=E?e=>{let[t,n]=o??[0,10],[i,a]=s??[0,10],f=u??(t+n)/2,p=d??(i+a)/2,m=(f-t)/(n-t||1),h=(p-i)/(a-i||1),g={x:e.x+e.width*(_?1-m:m),y:e.y+e.height*(1-h)};return c.map(t=>E[t]?(0,r.jsx)(`div`,{className:`minerva-chart-quadrant minerva-chart-quadrant-${t}`,style:l(t,e,g),children:E[t]},t):null)}:void 0;return(0,r.jsx)(e.ChartBase,{options:O,...i({...n,onPointClick:void 0,renderTooltip:void 0}),overlay:k,onPointClick:S?e=>{let t=e.items[0]?.index;t!==void 0&&a[t]&&S(a[t],t)}:void 0,onPlotClick:w?e=>w(t.quadrantOf(D,e.x,e.y),e):void 0,onDrop:C?e=>{let n=e.item.index;a[n]&&C(a[n],n,{x:e.x,y:e.y,quadrant:t.quadrantOf(D,e.x,e.y)})}:void 0,renderTooltip:T?e=>{let t=e.items[0]?.index;return t!==void 0&&a[t]?T(a[t],t):null}:void 0})}exports.BarChart=o,exports.LineChart=a,exports.QuadrantChart=u,exports.ScatterChart=s;
|
|
2
|
+
//# sourceMappingURL=charts.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"charts.cjs","names":["useMemo","lineSeries","ChartBase","engineOptions","barSeries","scatterSeries","quadrantChartOptions","quadrantOf","require_Chart","require_presets","react","react_jsx_runtime","frameProps","props","LineChart","input","series","area","BarChart","stacked","ScatterChart","CORNERS","cornerStyle","left","corner","top","split","plot","QuadrantChart","geometry","options","draggable","onPointDrop","overlay","quadrantContent","x0","x1","xDomain","y0","y1","yDomain","xs","xSplit","ys","ySplit","fx","fy","reverseX","onPointClick","index","event","points","onQuadrantClick","at","renderTooltip"],"sources":["../../../../charts/src/react/charts.tsx"],"sourcesContent":["import { useMemo, type CSSProperties } from \"react\";\nimport {\n barSeries,\n lineSeries,\n quadrantChartOptions,\n quadrantOf,\n scatterSeries,\n type QuadrantCorner,\n} from \"../engine/presets\";\nimport type { ChartRect } from \"../engine/types\";\nimport { ChartBase, engineOptions } from \"./Chart\";\nimport type {\n BarChartProps,\n ChartCommonProps,\n LineChartProps,\n QuadrantChartProps,\n ScatterChartProps,\n} from \"./types\";\n\nconst frameProps = (props: ChartCommonProps) => ({\n height: props.height,\n width: props.width,\n className: props.className,\n style: props.style,\n handleRef: props.ref,\n onHover: props.onHover,\n onPointClick: props.onPointClick,\n onPlotClick: props.onPlotClick,\n onZoom: props.onZoom,\n onRendererChange: props.onRendererChange,\n renderTooltip: props.renderTooltip,\n});\n\n/** Line (or area) chart; handles millions of points on the GPU */\nexport function LineChart(props: LineChartProps) {\n const { series: input, area = false } = props;\n const series = useMemo(() => lineSeries(input, area), [input, area]);\n return (\n <ChartBase\n options={engineOptions({ ...props, series })}\n {...frameProps(props)}\n />\n );\n}\n\n/** Bar chart: grouped side by side, or stacked */\nexport function BarChart(props: BarChartProps) {\n const { series: input, stacked = false } = props;\n const series = useMemo(() => barSeries(input, stacked), [input, stacked]);\n return (\n <ChartBase\n options={engineOptions({ ...props, series })}\n {...frameProps(props)}\n />\n );\n}\n\n/** Scatter chart: zooms on both axes, hit testing through a spatial index */\nexport function ScatterChart(props: ScatterChartProps) {\n const { series: input } = props;\n const series = useMemo(() => scatterSeries(input), [input]);\n return (\n <ChartBase\n options={engineOptions({ ...props, series })}\n {...frameProps(props)}\n />\n );\n}\n\nconst CORNERS: QuadrantCorner[] = [\n \"topLeft\",\n \"topRight\",\n \"bottomLeft\",\n \"bottomRight\",\n];\n\nconst cornerStyle = (\n corner: QuadrantCorner,\n plot: ChartRect,\n split: { x: number; y: number },\n): CSSProperties => {\n const left = corner.endsWith(\"Left\");\n const top = corner.startsWith(\"top\");\n return {\n position: \"absolute\",\n left: left ? 0 : split.x - plot.x,\n top: top ? 0 : split.y - plot.y,\n width: left ? split.x - plot.x : plot.x + plot.width - split.x,\n height: top ? split.y - plot.y : plot.y + plot.height - split.y,\n pointerEvents: \"none\",\n };\n};\n\n/**\n * Four-quadrant matrix (priority matrix, Eisenhower, BCG, ...): tinted\n * quadrants with titles, dividers, and labelled dots placed without\n * overlapping labels. Dots can be dragged to another quadrant.\n */\nexport function QuadrantChart(props: QuadrantChartProps) {\n const {\n points,\n xDomain,\n yDomain,\n xSplit,\n ySplit,\n quadrants,\n xLabel,\n yLabel,\n axisLabels,\n showTicks,\n reverseX,\n showLabels,\n pointSize,\n name,\n draggable,\n onPointClick,\n onPointDrop,\n onQuadrantClick,\n renderTooltip,\n quadrantContent,\n } = props;\n const geometry = { xDomain, yDomain, xSplit, ySplit, reverseX };\n\n const options = quadrantChartOptions(\n {\n points,\n xDomain,\n yDomain,\n xSplit,\n ySplit,\n quadrants,\n xLabel,\n yLabel,\n axisLabels,\n showTicks,\n reverseX,\n showLabels,\n pointSize,\n name,\n draggable: draggable ?? !!onPointDrop,\n },\n engineOptions({ ...props, series: [] }),\n );\n\n const overlay = quadrantContent\n ? (plot: ChartRect) => {\n const [x0, x1] = xDomain ?? [0, 10];\n const [y0, y1] = yDomain ?? [0, 10];\n const xs = xSplit ?? (x0 + x1) / 2;\n const ys = ySplit ?? (y0 + y1) / 2;\n const fx = (xs - x0) / (x1 - x0 || 1);\n const fy = (ys - y0) / (y1 - y0 || 1);\n const split = {\n x: plot.x + plot.width * (reverseX ? 1 - fx : fx),\n y: plot.y + plot.height * (1 - fy),\n };\n return CORNERS.map((corner) =>\n quadrantContent[corner] ? (\n <div\n key={corner}\n className={`minerva-chart-quadrant minerva-chart-quadrant-${corner}`}\n style={cornerStyle(corner, plot, split)}\n >\n {quadrantContent[corner]}\n </div>\n ) : null,\n );\n }\n : undefined;\n\n return (\n <ChartBase\n options={options}\n {...frameProps({\n ...props,\n onPointClick: undefined,\n renderTooltip: undefined,\n })}\n overlay={overlay}\n onPointClick={\n onPointClick\n ? (event) => {\n const index = event.items[0]?.index;\n if (index !== undefined && points[index])\n onPointClick(points[index], index);\n }\n : undefined\n }\n onPlotClick={\n onQuadrantClick\n ? (at) => onQuadrantClick(quadrantOf(geometry, at.x, at.y), at)\n : undefined\n }\n onDrop={\n onPointDrop\n ? (event) => {\n const index = event.item.index;\n if (!points[index]) return;\n onPointDrop(points[index], index, {\n x: event.x,\n y: event.y,\n quadrant: quadrantOf(geometry, event.x, event.y),\n });\n }\n : undefined\n }\n renderTooltip={\n renderTooltip\n ? (event) => {\n const index = event.items[0]?.index;\n return index !== undefined && points[index]\n ? renderTooltip(points[index], index)\n : null;\n }\n : undefined\n }\n />\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BarChartProps, LineChartProps, QuadrantChartProps, ScatterChartProps } from './types.cjs';
|
|
2
|
+
/** Line (or area) chart; handles millions of points on the GPU */
|
|
3
|
+
export declare function LineChart(props: LineChartProps): import('react').JSX.Element;
|
|
4
|
+
/** Bar chart: grouped side by side, or stacked */
|
|
5
|
+
export declare function BarChart(props: BarChartProps): import('react').JSX.Element;
|
|
6
|
+
/** Scatter chart: zooms on both axes, hit testing through a spatial index */
|
|
7
|
+
export declare function ScatterChart(props: ScatterChartProps): import('react').JSX.Element;
|
|
8
|
+
/**
|
|
9
|
+
* Four-quadrant matrix (priority matrix, Eisenhower, BCG, ...): tinted
|
|
10
|
+
* quadrants with titles, dividers, and labelled dots placed without
|
|
11
|
+
* overlapping labels. Dots can be dragged to another quadrant.
|
|
12
|
+
*/
|
|
13
|
+
export declare function QuadrantChart(props: QuadrantChartProps): import('react').JSX.Element;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BarChartProps, LineChartProps, QuadrantChartProps, ScatterChartProps } from './types.js';
|
|
2
|
+
/** Line (or area) chart; handles millions of points on the GPU */
|
|
3
|
+
export declare function LineChart(props: LineChartProps): import('react').JSX.Element;
|
|
4
|
+
/** Bar chart: grouped side by side, or stacked */
|
|
5
|
+
export declare function BarChart(props: BarChartProps): import('react').JSX.Element;
|
|
6
|
+
/** Scatter chart: zooms on both axes, hit testing through a spatial index */
|
|
7
|
+
export declare function ScatterChart(props: ScatterChartProps): import('react').JSX.Element;
|
|
8
|
+
/**
|
|
9
|
+
* Four-quadrant matrix (priority matrix, Eisenhower, BCG, ...): tinted
|
|
10
|
+
* quadrants with titles, dividers, and labelled dots placed without
|
|
11
|
+
* overlapping labels. Dots can be dragged to another quadrant.
|
|
12
|
+
*/
|
|
13
|
+
export declare function QuadrantChart(props: QuadrantChartProps): import('react').JSX.Element;
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { ChartBase as e, engineOptions as t } from "./Chart.js";
|
|
3
|
+
import { barSeries as n, lineSeries as r, quadrantChartOptions as i, quadrantOf as a, scatterSeries as o } from "../engine/presets.js";
|
|
4
|
+
import { useMemo as s } from "react";
|
|
5
|
+
import { jsx as c } from "react/jsx-runtime";
|
|
6
|
+
//#region src/react/charts.tsx
|
|
7
|
+
var l = (e) => ({
|
|
8
|
+
height: e.height,
|
|
9
|
+
width: e.width,
|
|
10
|
+
className: e.className,
|
|
11
|
+
style: e.style,
|
|
12
|
+
handleRef: e.ref,
|
|
13
|
+
onHover: e.onHover,
|
|
14
|
+
onPointClick: e.onPointClick,
|
|
15
|
+
onPlotClick: e.onPlotClick,
|
|
16
|
+
onZoom: e.onZoom,
|
|
17
|
+
onRendererChange: e.onRendererChange,
|
|
18
|
+
renderTooltip: e.renderTooltip
|
|
19
|
+
});
|
|
20
|
+
function u(n) {
|
|
21
|
+
let { series: i, area: a = !1 } = n, o = s(() => r(i, a), [i, a]);
|
|
22
|
+
return /* @__PURE__ */ c(e, {
|
|
23
|
+
options: t({
|
|
24
|
+
...n,
|
|
25
|
+
series: o
|
|
26
|
+
}),
|
|
27
|
+
...l(n)
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
function d(r) {
|
|
31
|
+
let { series: i, stacked: a = !1 } = r, o = s(() => n(i, a), [i, a]);
|
|
32
|
+
return /* @__PURE__ */ c(e, {
|
|
33
|
+
options: t({
|
|
34
|
+
...r,
|
|
35
|
+
series: o
|
|
36
|
+
}),
|
|
37
|
+
...l(r)
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
function f(n) {
|
|
41
|
+
let { series: r } = n, i = s(() => o(r), [r]);
|
|
42
|
+
return /* @__PURE__ */ c(e, {
|
|
43
|
+
options: t({
|
|
44
|
+
...n,
|
|
45
|
+
series: i
|
|
46
|
+
}),
|
|
47
|
+
...l(n)
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
var p = [
|
|
51
|
+
"topLeft",
|
|
52
|
+
"topRight",
|
|
53
|
+
"bottomLeft",
|
|
54
|
+
"bottomRight"
|
|
55
|
+
], m = (e, t, n) => {
|
|
56
|
+
let r = e.endsWith("Left"), i = e.startsWith("top");
|
|
57
|
+
return {
|
|
58
|
+
position: "absolute",
|
|
59
|
+
left: r ? 0 : n.x - t.x,
|
|
60
|
+
top: i ? 0 : n.y - t.y,
|
|
61
|
+
width: r ? n.x - t.x : t.x + t.width - n.x,
|
|
62
|
+
height: i ? n.y - t.y : t.y + t.height - n.y,
|
|
63
|
+
pointerEvents: "none"
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
function h(n) {
|
|
67
|
+
let { points: r, xDomain: o, yDomain: s, xSplit: u, ySplit: d, quadrants: f, xLabel: h, yLabel: g, axisLabels: _, showTicks: v, reverseX: y, showLabels: b, pointSize: x, name: S, draggable: C, onPointClick: w, onPointDrop: T, onQuadrantClick: E, renderTooltip: D, quadrantContent: O } = n, k = {
|
|
68
|
+
xDomain: o,
|
|
69
|
+
yDomain: s,
|
|
70
|
+
xSplit: u,
|
|
71
|
+
ySplit: d,
|
|
72
|
+
reverseX: y
|
|
73
|
+
}, A = i({
|
|
74
|
+
points: r,
|
|
75
|
+
xDomain: o,
|
|
76
|
+
yDomain: s,
|
|
77
|
+
xSplit: u,
|
|
78
|
+
ySplit: d,
|
|
79
|
+
quadrants: f,
|
|
80
|
+
xLabel: h,
|
|
81
|
+
yLabel: g,
|
|
82
|
+
axisLabels: _,
|
|
83
|
+
showTicks: v,
|
|
84
|
+
reverseX: y,
|
|
85
|
+
showLabels: b,
|
|
86
|
+
pointSize: x,
|
|
87
|
+
name: S,
|
|
88
|
+
draggable: C ?? !!T
|
|
89
|
+
}, t({
|
|
90
|
+
...n,
|
|
91
|
+
series: []
|
|
92
|
+
})), j = O ? (e) => {
|
|
93
|
+
let [t, n] = o ?? [0, 10], [r, i] = s ?? [0, 10], a = u ?? (t + n) / 2, l = d ?? (r + i) / 2, f = (a - t) / (n - t || 1), h = (l - r) / (i - r || 1), g = {
|
|
94
|
+
x: e.x + e.width * (y ? 1 - f : f),
|
|
95
|
+
y: e.y + e.height * (1 - h)
|
|
96
|
+
};
|
|
97
|
+
return p.map((t) => O[t] ? /* @__PURE__ */ c("div", {
|
|
98
|
+
className: `minerva-chart-quadrant minerva-chart-quadrant-${t}`,
|
|
99
|
+
style: m(t, e, g),
|
|
100
|
+
children: O[t]
|
|
101
|
+
}, t) : null);
|
|
102
|
+
} : void 0;
|
|
103
|
+
return /* @__PURE__ */ c(e, {
|
|
104
|
+
options: A,
|
|
105
|
+
...l({
|
|
106
|
+
...n,
|
|
107
|
+
onPointClick: void 0,
|
|
108
|
+
renderTooltip: void 0
|
|
109
|
+
}),
|
|
110
|
+
overlay: j,
|
|
111
|
+
onPointClick: w ? (e) => {
|
|
112
|
+
let t = e.items[0]?.index;
|
|
113
|
+
t !== void 0 && r[t] && w(r[t], t);
|
|
114
|
+
} : void 0,
|
|
115
|
+
onPlotClick: E ? (e) => E(a(k, e.x, e.y), e) : void 0,
|
|
116
|
+
onDrop: T ? (e) => {
|
|
117
|
+
let t = e.item.index;
|
|
118
|
+
r[t] && T(r[t], t, {
|
|
119
|
+
x: e.x,
|
|
120
|
+
y: e.y,
|
|
121
|
+
quadrant: a(k, e.x, e.y)
|
|
122
|
+
});
|
|
123
|
+
} : void 0,
|
|
124
|
+
renderTooltip: D ? (e) => {
|
|
125
|
+
let t = e.items[0]?.index;
|
|
126
|
+
return t !== void 0 && r[t] ? D(r[t], t) : null;
|
|
127
|
+
} : void 0
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
//#endregion
|
|
131
|
+
export { d as BarChart, u as LineChart, h as QuadrantChart, f as ScatterChart };
|
|
132
|
+
|
|
133
|
+
//# sourceMappingURL=charts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"charts.js","names":["frameProps","props","LineChart","input","series","useMemo","lineSeries","area","ChartBase","engineOptions","BarChart","barSeries","stacked","ScatterChart","scatterSeries","CORNERS","cornerStyle","left","corner","top","split","plot","QuadrantChart","geometry","options","quadrantChartOptions","draggable","onPointDrop","overlay","quadrantContent","x0","x1","xDomain","y0","y1","yDomain","xs","xSplit","ys","ySplit","fx","fy","reverseX","onPointClick","index","event","points","onQuadrantClick","quadrantOf","at","renderTooltip"],"sources":["../../../../charts/src/react/charts.tsx"],"sourcesContent":["import { useMemo, type CSSProperties } from \"react\";\nimport {\n barSeries,\n lineSeries,\n quadrantChartOptions,\n quadrantOf,\n scatterSeries,\n type QuadrantCorner,\n} from \"../engine/presets\";\nimport type { ChartRect } from \"../engine/types\";\nimport { ChartBase, engineOptions } from \"./Chart\";\nimport type {\n BarChartProps,\n ChartCommonProps,\n LineChartProps,\n QuadrantChartProps,\n ScatterChartProps,\n} from \"./types\";\n\nconst frameProps = (props: ChartCommonProps) => ({\n height: props.height,\n width: props.width,\n className: props.className,\n style: props.style,\n handleRef: props.ref,\n onHover: props.onHover,\n onPointClick: props.onPointClick,\n onPlotClick: props.onPlotClick,\n onZoom: props.onZoom,\n onRendererChange: props.onRendererChange,\n renderTooltip: props.renderTooltip,\n});\n\n/** Line (or area) chart; handles millions of points on the GPU */\nexport function LineChart(props: LineChartProps) {\n const { series: input, area = false } = props;\n const series = useMemo(() => lineSeries(input, area), [input, area]);\n return (\n <ChartBase\n options={engineOptions({ ...props, series })}\n {...frameProps(props)}\n />\n );\n}\n\n/** Bar chart: grouped side by side, or stacked */\nexport function BarChart(props: BarChartProps) {\n const { series: input, stacked = false } = props;\n const series = useMemo(() => barSeries(input, stacked), [input, stacked]);\n return (\n <ChartBase\n options={engineOptions({ ...props, series })}\n {...frameProps(props)}\n />\n );\n}\n\n/** Scatter chart: zooms on both axes, hit testing through a spatial index */\nexport function ScatterChart(props: ScatterChartProps) {\n const { series: input } = props;\n const series = useMemo(() => scatterSeries(input), [input]);\n return (\n <ChartBase\n options={engineOptions({ ...props, series })}\n {...frameProps(props)}\n />\n );\n}\n\nconst CORNERS: QuadrantCorner[] = [\n \"topLeft\",\n \"topRight\",\n \"bottomLeft\",\n \"bottomRight\",\n];\n\nconst cornerStyle = (\n corner: QuadrantCorner,\n plot: ChartRect,\n split: { x: number; y: number },\n): CSSProperties => {\n const left = corner.endsWith(\"Left\");\n const top = corner.startsWith(\"top\");\n return {\n position: \"absolute\",\n left: left ? 0 : split.x - plot.x,\n top: top ? 0 : split.y - plot.y,\n width: left ? split.x - plot.x : plot.x + plot.width - split.x,\n height: top ? split.y - plot.y : plot.y + plot.height - split.y,\n pointerEvents: \"none\",\n };\n};\n\n/**\n * Four-quadrant matrix (priority matrix, Eisenhower, BCG, ...): tinted\n * quadrants with titles, dividers, and labelled dots placed without\n * overlapping labels. Dots can be dragged to another quadrant.\n */\nexport function QuadrantChart(props: QuadrantChartProps) {\n const {\n points,\n xDomain,\n yDomain,\n xSplit,\n ySplit,\n quadrants,\n xLabel,\n yLabel,\n axisLabels,\n showTicks,\n reverseX,\n showLabels,\n pointSize,\n name,\n draggable,\n onPointClick,\n onPointDrop,\n onQuadrantClick,\n renderTooltip,\n quadrantContent,\n } = props;\n const geometry = { xDomain, yDomain, xSplit, ySplit, reverseX };\n\n const options = quadrantChartOptions(\n {\n points,\n xDomain,\n yDomain,\n xSplit,\n ySplit,\n quadrants,\n xLabel,\n yLabel,\n axisLabels,\n showTicks,\n reverseX,\n showLabels,\n pointSize,\n name,\n draggable: draggable ?? !!onPointDrop,\n },\n engineOptions({ ...props, series: [] }),\n );\n\n const overlay = quadrantContent\n ? (plot: ChartRect) => {\n const [x0, x1] = xDomain ?? [0, 10];\n const [y0, y1] = yDomain ?? [0, 10];\n const xs = xSplit ?? (x0 + x1) / 2;\n const ys = ySplit ?? (y0 + y1) / 2;\n const fx = (xs - x0) / (x1 - x0 || 1);\n const fy = (ys - y0) / (y1 - y0 || 1);\n const split = {\n x: plot.x + plot.width * (reverseX ? 1 - fx : fx),\n y: plot.y + plot.height * (1 - fy),\n };\n return CORNERS.map((corner) =>\n quadrantContent[corner] ? (\n <div\n key={corner}\n className={`minerva-chart-quadrant minerva-chart-quadrant-${corner}`}\n style={cornerStyle(corner, plot, split)}\n >\n {quadrantContent[corner]}\n </div>\n ) : null,\n );\n }\n : undefined;\n\n return (\n <ChartBase\n options={options}\n {...frameProps({\n ...props,\n onPointClick: undefined,\n renderTooltip: undefined,\n })}\n overlay={overlay}\n onPointClick={\n onPointClick\n ? (event) => {\n const index = event.items[0]?.index;\n if (index !== undefined && points[index])\n onPointClick(points[index], index);\n }\n : undefined\n }\n onPlotClick={\n onQuadrantClick\n ? (at) => onQuadrantClick(quadrantOf(geometry, at.x, at.y), at)\n : undefined\n }\n onDrop={\n onPointDrop\n ? (event) => {\n const index = event.item.index;\n if (!points[index]) return;\n onPointDrop(points[index], index, {\n x: event.x,\n y: event.y,\n quadrant: quadrantOf(geometry, event.x, event.y),\n });\n }\n : undefined\n }\n renderTooltip={\n renderTooltip\n ? (event) => {\n const index = event.items[0]?.index;\n return index !== undefined && points[index]\n ? renderTooltip(points[index], index)\n : null;\n }\n : undefined\n }\n />\n );\n}\n"],"mappings":";;;;;;AAmBA,IAAMA,KAAc,OAA6B;CAC/C,QAAQC,EAAM;CACd,OAAOA,EAAM;CACb,WAAWA,EAAM;CACjB,OAAOA,EAAM;CACb,WAAWA,EAAM;CACjB,SAASA,EAAM;CACf,cAAcA,EAAM;CACpB,aAAaA,EAAM;CACnB,QAAQA,EAAM;CACd,kBAAkBA,EAAM;CACxB,eAAeA,EAAM;AACvB;AAGA,SAAgBC,EAAU,GAAuB;CAC/C,IAAM,EAAE,QAAQC,GAAO,UAAO,OAAUF,GAClCG,IAASC,QAAcC,EAAWH,GAAOI,CAAI,GAAG,CAACJ,GAAOI,CAAI,CAAC;CACnE,OACE,kBAACC,GAAD;EACE,SAASC,EAAc;GAAE,GAAGR;GAAO;EAAO,CAAC;EAC3C,GAAID,EAAWC,CAAK;CACrB,CAAA;AAEL;AAGA,SAAgBS,EAAS,GAAsB;CAC7C,IAAM,EAAE,QAAQP,GAAO,aAAU,OAAUF,GACrCG,IAASC,QAAcM,EAAUR,GAAOS,CAAO,GAAG,CAACT,GAAOS,CAAO,CAAC;CACxE,OACE,kBAACJ,GAAD;EACE,SAASC,EAAc;GAAE,GAAGR;GAAO;EAAO,CAAC;EAC3C,GAAID,EAAWC,CAAK;CACrB,CAAA;AAEL;AAGA,SAAgBY,EAAa,GAA0B;CACrD,IAAM,EAAE,QAAQV,MAAUF,GACpBG,IAASC,QAAcS,EAAcX,CAAK,GAAG,CAACA,CAAK,CAAC;CAC1D,OACE,kBAACK,GAAD;EACE,SAASC,EAAc;GAAE,GAAGR;GAAO;EAAO,CAAC;EAC3C,GAAID,EAAWC,CAAK;CACrB,CAAA;AAEL;AAEA,IAAMc,IAA4B;CAChC;CACA;CACA;CACA;AACF,GAEMC,KACJ,GACA,GACA,MACkB;CAClB,IAAMC,IAAOC,EAAO,SAAS,MAAM,GAC7BC,IAAMD,EAAO,WAAW,KAAK;CACnC,OAAO;EACL,UAAU;EACV,MAAMD,IAAO,IAAIG,EAAM,IAAIC,EAAK;EAChC,KAAKF,IAAM,IAAIC,EAAM,IAAIC,EAAK;EAC9B,OAAOJ,IAAOG,EAAM,IAAIC,EAAK,IAAIA,EAAK,IAAIA,EAAK,QAAQD,EAAM;EAC7D,QAAQD,IAAMC,EAAM,IAAIC,EAAK,IAAIA,EAAK,IAAIA,EAAK,SAASD,EAAM;EAC9D,eAAe;CACjB;AACF;AAOA,SAAgBE,EAAc,GAA2B;CACvD,IAAM,EACJ,WACA,YACA,YACA,WACA,WACA,cACA,WACA,WACA,eACA,cACA,aACA,eACA,cACA,SACA,cACA,iBACA,gBACA,oBACA,kBACA,uBACErB,GACEsB,IAAW;EAAE;EAAS;EAAS;EAAQ;EAAQ;CAAS,GAExDC,IAAUC,EACd;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WAAWC,KAAa,CAAC,CAACC;CAC5B,GACAlB,EAAc;EAAE,GAAGR;EAAO,QAAQ,CAAC;CAAE,CAAC,CACxC,GAEM2B,IAAUC,KACX,MAAoB;EACnB,IAAM,CAACC,GAAIC,KAAMC,KAAW,CAAC,GAAG,EAAE,GAC5B,CAACC,GAAIC,KAAMC,KAAW,CAAC,GAAG,EAAE,GAC5BC,IAAKC,MAAWP,IAAKC,KAAM,GAC3BO,IAAKC,MAAWN,IAAKC,KAAM,GAC3BM,KAAMJ,IAAKN,MAAOC,IAAKD,KAAM,IAC7BW,KAAMH,IAAKL,MAAOC,IAAKD,KAAM,IAC7Bb,IAAQ;GACZ,GAAGC,EAAK,IAAIA,EAAK,SAASqB,IAAW,IAAIF,IAAKA;GAC9C,GAAGnB,EAAK,IAAIA,EAAK,UAAU,IAAIoB;EACjC;EACA,OAAO1B,EAAQ,KAAK,MAClBc,EAAgBX,KACd,kBAAC,OAAD;GAEE,WAAW,iDAAiDA;GAC5D,OAAOF,EAAYE,GAAQG,GAAMD,CAAK;GAErC,UAAAS,EAAgBX;EACd,GALEA,CAKF,IACH,IACN;CACF,IACA,KAAA;CAEJ,OACE,kBAACV,GAAD;EACW;EACT,GAAIR,EAAW;GACb,GAAGC;GACH,cAAc,KAAA;GACd,eAAe,KAAA;EACjB,CAAC;EACQ;EACT,cACE0C,KACK,MAAU;GACT,IAAMC,IAAQC,EAAM,MAAM,EAAE,EAAE;GAC9B,AAAID,MAAU,KAAA,KAAaE,EAAOF,MAChCD,EAAaG,EAAOF,IAAQA,CAAK;EACrC,IACA,KAAA;EAEN,aACEG,KACK,MAAOA,EAAgBC,EAAWzB,GAAU0B,EAAG,GAAGA,EAAG,CAAC,GAAGA,CAAE,IAC5D,KAAA;EAEN,QACEtB,KACK,MAAU;GACT,IAAMiB,IAAQC,EAAM,KAAK;GACzB,AAAKC,EAAOF,MACZjB,EAAYmB,EAAOF,IAAQA,GAAO;IAChC,GAAGC,EAAM;IACT,GAAGA,EAAM;IACT,UAAUG,EAAWzB,GAAUsB,EAAM,GAAGA,EAAM,CAAC;GACjD,CAAC;EACH,IACA,KAAA;EAEN,eACEK,KACK,MAAU;GACT,IAAMN,IAAQC,EAAM,MAAM,EAAE,EAAE;GAC9B,OAAOD,MAAU,KAAA,KAAaE,EAAOF,KACjCM,EAAcJ,EAAOF,IAAQA,CAAK,IAClC;EACN,IACA,KAAA;CAEP,CAAA;AAEL"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { CSSProperties, ReactNode, Ref } from 'react';
|
|
2
|
+
import { ChartAnnotation, ChartAxisOptions, ChartHoverEvent, ChartInstance, ChartLegendOptions, ChartInteractionOptions, ChartPadding, ChartPlotClickEvent, ChartRendererKind, ChartRendererPreference, ChartSeries, ChartTooltipOptions, ChartView } from '../engine/types.cjs';
|
|
3
|
+
import { QuadrantConfig, QuadrantCorner, QuadrantPoint } from '../engine/presets.cjs';
|
|
4
|
+
export type { QuadrantAxisLabels, QuadrantConfig, QuadrantCorner, QuadrantPoint, QuadrantRegion, QuadrantRegions, } from '../engine/presets.cjs';
|
|
5
|
+
/** Imperative handle of the chart components (`ref`) */
|
|
6
|
+
export interface ChartHandle {
|
|
7
|
+
/** Shows the whole data range */
|
|
8
|
+
resetZoom(): void;
|
|
9
|
+
/** Visible range */
|
|
10
|
+
getView(): ChartView | null;
|
|
11
|
+
/** Sets the visible range */
|
|
12
|
+
setView(view: Partial<ChartView>): void;
|
|
13
|
+
/** Backend in use, `null` until ready */
|
|
14
|
+
getRenderer(): ChartRendererKind | null;
|
|
15
|
+
/** The underlying engine instance (minerva-design/charts/core) */
|
|
16
|
+
getInstance(): ChartInstance | null;
|
|
17
|
+
}
|
|
18
|
+
/** Props shared by every chart component */
|
|
19
|
+
export interface ChartCommonProps {
|
|
20
|
+
/**
|
|
21
|
+
* Height of the chart (the legend included); numbers are pixels
|
|
22
|
+
* @default 320
|
|
23
|
+
*/
|
|
24
|
+
height?: number | string;
|
|
25
|
+
/**
|
|
26
|
+
* Width of the chart; numbers are pixels
|
|
27
|
+
* @default "100%"
|
|
28
|
+
*/
|
|
29
|
+
width?: number | string;
|
|
30
|
+
/** X axis */
|
|
31
|
+
xAxis?: ChartAxisOptions;
|
|
32
|
+
/** Y axis */
|
|
33
|
+
yAxis?: ChartAxisOptions;
|
|
34
|
+
/**
|
|
35
|
+
* Backend of the data layer: `auto` tries WebGPU, then WebGL2, then Canvas2D
|
|
36
|
+
* @default "auto"
|
|
37
|
+
*/
|
|
38
|
+
renderer?: ChartRendererPreference;
|
|
39
|
+
/** Legend; shown by default when several series have a name */
|
|
40
|
+
legend?: boolean | ChartLegendOptions;
|
|
41
|
+
/** Tooltip; `false` disables it */
|
|
42
|
+
tooltip?: boolean | ChartTooltipOptions;
|
|
43
|
+
/** Vertical guide line following the pointer */
|
|
44
|
+
crosshair?: boolean;
|
|
45
|
+
/** Background areas and reference lines */
|
|
46
|
+
annotations?: readonly ChartAnnotation[];
|
|
47
|
+
/**
|
|
48
|
+
* Zoom (Ctrl / ⌘ + wheel, pinch), pan (drag), double-click reset and keyboard navigation; `false` makes the chart static
|
|
49
|
+
* @default true
|
|
50
|
+
*/
|
|
51
|
+
interaction?: boolean | ChartInteractionOptions;
|
|
52
|
+
/** Space around the plot area, in pixels */
|
|
53
|
+
padding?: ChartPadding;
|
|
54
|
+
/** Series colors (defaults to the `--chart-series-1..8` CSS variables, then the theme colors) */
|
|
55
|
+
palette?: readonly string[];
|
|
56
|
+
/** Accessible name of the chart */
|
|
57
|
+
ariaLabel?: string;
|
|
58
|
+
/** Called when the hovered (or keyboard-focused) points change */
|
|
59
|
+
onHover?: (event: ChartHoverEvent | null) => void;
|
|
60
|
+
/** Called when a point (or bar) is clicked */
|
|
61
|
+
onPointClick?: (event: ChartHoverEvent) => void;
|
|
62
|
+
/** Called when the plot area is clicked where there is no point */
|
|
63
|
+
onPlotClick?: (event: ChartPlotClickEvent) => void;
|
|
64
|
+
/** React content of the tooltip (replaces the default content) */
|
|
65
|
+
renderTooltip?: (event: ChartHoverEvent) => ReactNode;
|
|
66
|
+
/** Called when the user zooms or pans */
|
|
67
|
+
onZoom?: (view: ChartView) => void;
|
|
68
|
+
/** Called with the backend once it is ready (and when it falls back after a GPU loss) */
|
|
69
|
+
onRendererChange?: (renderer: ChartRendererKind) => void;
|
|
70
|
+
/** Additional class name of the root element */
|
|
71
|
+
className?: string;
|
|
72
|
+
/** Inline styles of the root element */
|
|
73
|
+
style?: CSSProperties;
|
|
74
|
+
/** Imperative handle */
|
|
75
|
+
ref?: Ref<ChartHandle>;
|
|
76
|
+
}
|
|
77
|
+
/** Props of Chart: any mix of line, area, bar and scatter series */
|
|
78
|
+
export interface ChartProps extends ChartCommonProps {
|
|
79
|
+
/** Data series; each sets its own `type` */
|
|
80
|
+
series: readonly ChartSeries[];
|
|
81
|
+
}
|
|
82
|
+
/** Props of LineChart */
|
|
83
|
+
export interface LineChartProps extends ChartCommonProps {
|
|
84
|
+
/** Series drawn as lines (or areas with `area`) unless they set a `type` */
|
|
85
|
+
series: readonly ChartSeries[];
|
|
86
|
+
/**
|
|
87
|
+
* Fills the area under the lines
|
|
88
|
+
* @default false
|
|
89
|
+
*/
|
|
90
|
+
area?: boolean;
|
|
91
|
+
}
|
|
92
|
+
/** Props of BarChart */
|
|
93
|
+
export interface BarChartProps extends ChartCommonProps {
|
|
94
|
+
/** Series drawn as bars unless they set a `type` (e.g. a `line` overlay) */
|
|
95
|
+
series: readonly ChartSeries[];
|
|
96
|
+
/**
|
|
97
|
+
* Stacks the bars of every series (otherwise they are grouped side by side)
|
|
98
|
+
* @default false
|
|
99
|
+
*/
|
|
100
|
+
stacked?: boolean;
|
|
101
|
+
}
|
|
102
|
+
/** Props of ScatterChart */
|
|
103
|
+
export interface ScatterChartProps extends ChartCommonProps {
|
|
104
|
+
/** Series drawn as dots unless they set a `type` */
|
|
105
|
+
series: readonly ChartSeries[];
|
|
106
|
+
}
|
|
107
|
+
/** Where a dragged QuadrantChart point was dropped */
|
|
108
|
+
export interface QuadrantDropTarget {
|
|
109
|
+
/** Data coordinates of the drop */
|
|
110
|
+
x: number;
|
|
111
|
+
y: number;
|
|
112
|
+
/** Quadrant of the drop, as seen on screen */
|
|
113
|
+
quadrant: QuadrantCorner;
|
|
114
|
+
}
|
|
115
|
+
/** Props of QuadrantChart */
|
|
116
|
+
export interface QuadrantChartProps extends Omit<ChartCommonProps, "onPointClick" | "onPlotClick" | "renderTooltip" | "xAxis" | "yAxis">, QuadrantConfig {
|
|
117
|
+
/** Called with the clicked point and its index */
|
|
118
|
+
onPointClick?: (point: QuadrantPoint, index: number) => void;
|
|
119
|
+
/** Called when the empty area of a quadrant is clicked */
|
|
120
|
+
onQuadrantClick?: (quadrant: QuadrantCorner, position: {
|
|
121
|
+
x: number;
|
|
122
|
+
y: number;
|
|
123
|
+
}) => void;
|
|
124
|
+
/**
|
|
125
|
+
* Called when a dragged point is released; the dots become draggable
|
|
126
|
+
* when it is set (the chart does not move them: update `points`)
|
|
127
|
+
*/
|
|
128
|
+
onPointDrop?: (point: QuadrantPoint, index: number, target: QuadrantDropTarget) => void;
|
|
129
|
+
/** React content of the tooltip of a point */
|
|
130
|
+
renderTooltip?: (point: QuadrantPoint, index: number) => ReactNode;
|
|
131
|
+
/**
|
|
132
|
+
* React content placed over each quadrant (e.g. an add button); the
|
|
133
|
+
* content receives pointer events, the rest of the quadrant does not
|
|
134
|
+
*/
|
|
135
|
+
quadrantContent?: Partial<Record<QuadrantCorner, ReactNode>>;
|
|
136
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { CSSProperties, ReactNode, Ref } from 'react';
|
|
2
|
+
import { ChartAnnotation, ChartAxisOptions, ChartHoverEvent, ChartInstance, ChartLegendOptions, ChartInteractionOptions, ChartPadding, ChartPlotClickEvent, ChartRendererKind, ChartRendererPreference, ChartSeries, ChartTooltipOptions, ChartView } from '../engine/types.js';
|
|
3
|
+
import { QuadrantConfig, QuadrantCorner, QuadrantPoint } from '../engine/presets.js';
|
|
4
|
+
export type { QuadrantAxisLabels, QuadrantConfig, QuadrantCorner, QuadrantPoint, QuadrantRegion, QuadrantRegions, } from '../engine/presets.js';
|
|
5
|
+
/** Imperative handle of the chart components (`ref`) */
|
|
6
|
+
export interface ChartHandle {
|
|
7
|
+
/** Shows the whole data range */
|
|
8
|
+
resetZoom(): void;
|
|
9
|
+
/** Visible range */
|
|
10
|
+
getView(): ChartView | null;
|
|
11
|
+
/** Sets the visible range */
|
|
12
|
+
setView(view: Partial<ChartView>): void;
|
|
13
|
+
/** Backend in use, `null` until ready */
|
|
14
|
+
getRenderer(): ChartRendererKind | null;
|
|
15
|
+
/** The underlying engine instance (minerva-design/charts/core) */
|
|
16
|
+
getInstance(): ChartInstance | null;
|
|
17
|
+
}
|
|
18
|
+
/** Props shared by every chart component */
|
|
19
|
+
export interface ChartCommonProps {
|
|
20
|
+
/**
|
|
21
|
+
* Height of the chart (the legend included); numbers are pixels
|
|
22
|
+
* @default 320
|
|
23
|
+
*/
|
|
24
|
+
height?: number | string;
|
|
25
|
+
/**
|
|
26
|
+
* Width of the chart; numbers are pixels
|
|
27
|
+
* @default "100%"
|
|
28
|
+
*/
|
|
29
|
+
width?: number | string;
|
|
30
|
+
/** X axis */
|
|
31
|
+
xAxis?: ChartAxisOptions;
|
|
32
|
+
/** Y axis */
|
|
33
|
+
yAxis?: ChartAxisOptions;
|
|
34
|
+
/**
|
|
35
|
+
* Backend of the data layer: `auto` tries WebGPU, then WebGL2, then Canvas2D
|
|
36
|
+
* @default "auto"
|
|
37
|
+
*/
|
|
38
|
+
renderer?: ChartRendererPreference;
|
|
39
|
+
/** Legend; shown by default when several series have a name */
|
|
40
|
+
legend?: boolean | ChartLegendOptions;
|
|
41
|
+
/** Tooltip; `false` disables it */
|
|
42
|
+
tooltip?: boolean | ChartTooltipOptions;
|
|
43
|
+
/** Vertical guide line following the pointer */
|
|
44
|
+
crosshair?: boolean;
|
|
45
|
+
/** Background areas and reference lines */
|
|
46
|
+
annotations?: readonly ChartAnnotation[];
|
|
47
|
+
/**
|
|
48
|
+
* Zoom (Ctrl / ⌘ + wheel, pinch), pan (drag), double-click reset and keyboard navigation; `false` makes the chart static
|
|
49
|
+
* @default true
|
|
50
|
+
*/
|
|
51
|
+
interaction?: boolean | ChartInteractionOptions;
|
|
52
|
+
/** Space around the plot area, in pixels */
|
|
53
|
+
padding?: ChartPadding;
|
|
54
|
+
/** Series colors (defaults to the `--chart-series-1..8` CSS variables, then the theme colors) */
|
|
55
|
+
palette?: readonly string[];
|
|
56
|
+
/** Accessible name of the chart */
|
|
57
|
+
ariaLabel?: string;
|
|
58
|
+
/** Called when the hovered (or keyboard-focused) points change */
|
|
59
|
+
onHover?: (event: ChartHoverEvent | null) => void;
|
|
60
|
+
/** Called when a point (or bar) is clicked */
|
|
61
|
+
onPointClick?: (event: ChartHoverEvent) => void;
|
|
62
|
+
/** Called when the plot area is clicked where there is no point */
|
|
63
|
+
onPlotClick?: (event: ChartPlotClickEvent) => void;
|
|
64
|
+
/** React content of the tooltip (replaces the default content) */
|
|
65
|
+
renderTooltip?: (event: ChartHoverEvent) => ReactNode;
|
|
66
|
+
/** Called when the user zooms or pans */
|
|
67
|
+
onZoom?: (view: ChartView) => void;
|
|
68
|
+
/** Called with the backend once it is ready (and when it falls back after a GPU loss) */
|
|
69
|
+
onRendererChange?: (renderer: ChartRendererKind) => void;
|
|
70
|
+
/** Additional class name of the root element */
|
|
71
|
+
className?: string;
|
|
72
|
+
/** Inline styles of the root element */
|
|
73
|
+
style?: CSSProperties;
|
|
74
|
+
/** Imperative handle */
|
|
75
|
+
ref?: Ref<ChartHandle>;
|
|
76
|
+
}
|
|
77
|
+
/** Props of Chart: any mix of line, area, bar and scatter series */
|
|
78
|
+
export interface ChartProps extends ChartCommonProps {
|
|
79
|
+
/** Data series; each sets its own `type` */
|
|
80
|
+
series: readonly ChartSeries[];
|
|
81
|
+
}
|
|
82
|
+
/** Props of LineChart */
|
|
83
|
+
export interface LineChartProps extends ChartCommonProps {
|
|
84
|
+
/** Series drawn as lines (or areas with `area`) unless they set a `type` */
|
|
85
|
+
series: readonly ChartSeries[];
|
|
86
|
+
/**
|
|
87
|
+
* Fills the area under the lines
|
|
88
|
+
* @default false
|
|
89
|
+
*/
|
|
90
|
+
area?: boolean;
|
|
91
|
+
}
|
|
92
|
+
/** Props of BarChart */
|
|
93
|
+
export interface BarChartProps extends ChartCommonProps {
|
|
94
|
+
/** Series drawn as bars unless they set a `type` (e.g. a `line` overlay) */
|
|
95
|
+
series: readonly ChartSeries[];
|
|
96
|
+
/**
|
|
97
|
+
* Stacks the bars of every series (otherwise they are grouped side by side)
|
|
98
|
+
* @default false
|
|
99
|
+
*/
|
|
100
|
+
stacked?: boolean;
|
|
101
|
+
}
|
|
102
|
+
/** Props of ScatterChart */
|
|
103
|
+
export interface ScatterChartProps extends ChartCommonProps {
|
|
104
|
+
/** Series drawn as dots unless they set a `type` */
|
|
105
|
+
series: readonly ChartSeries[];
|
|
106
|
+
}
|
|
107
|
+
/** Where a dragged QuadrantChart point was dropped */
|
|
108
|
+
export interface QuadrantDropTarget {
|
|
109
|
+
/** Data coordinates of the drop */
|
|
110
|
+
x: number;
|
|
111
|
+
y: number;
|
|
112
|
+
/** Quadrant of the drop, as seen on screen */
|
|
113
|
+
quadrant: QuadrantCorner;
|
|
114
|
+
}
|
|
115
|
+
/** Props of QuadrantChart */
|
|
116
|
+
export interface QuadrantChartProps extends Omit<ChartCommonProps, "onPointClick" | "onPlotClick" | "renderTooltip" | "xAxis" | "yAxis">, QuadrantConfig {
|
|
117
|
+
/** Called with the clicked point and its index */
|
|
118
|
+
onPointClick?: (point: QuadrantPoint, index: number) => void;
|
|
119
|
+
/** Called when the empty area of a quadrant is clicked */
|
|
120
|
+
onQuadrantClick?: (quadrant: QuadrantCorner, position: {
|
|
121
|
+
x: number;
|
|
122
|
+
y: number;
|
|
123
|
+
}) => void;
|
|
124
|
+
/**
|
|
125
|
+
* Called when a dragged point is released; the dots become draggable
|
|
126
|
+
* when it is set (the chart does not move them: update `points`)
|
|
127
|
+
*/
|
|
128
|
+
onPointDrop?: (point: QuadrantPoint, index: number, target: QuadrantDropTarget) => void;
|
|
129
|
+
/** React content of the tooltip of a point */
|
|
130
|
+
renderTooltip?: (point: QuadrantPoint, index: number) => ReactNode;
|
|
131
|
+
/**
|
|
132
|
+
* React content placed over each quadrant (e.g. an add button); the
|
|
133
|
+
* content receives pointer events, the rest of the quadrant does not
|
|
134
|
+
*/
|
|
135
|
+
quadrantContent?: Partial<Record<QuadrantCorner, ReactNode>>;
|
|
136
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./engine/color.cjs");require("./engine/format.cjs");const t=require("./engine/controller.cjs");require("./engine/canvas.cjs");const n=require("./engine/presets.cjs");exports.barSeries=n.barSeries,exports.createChartController=t.createChartController,exports.lineSeries=n.lineSeries,exports.quadrantChartOptions=n.quadrantChartOptions,exports.quadrantOf=n.quadrantOf,exports.scatterSeries=n.scatterSeries,exports.scenePrimitives=t.scenePrimitives,exports.toCss=e.toCss;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { toCss as e } from "./engine/color.js";
|
|
2
|
+
import "./engine/format.js";
|
|
3
|
+
import { createChartController as t, scenePrimitives as n } from "./engine/controller.js";
|
|
4
|
+
import "./engine/canvas.js";
|
|
5
|
+
import { barSeries as r, lineSeries as i, quadrantChartOptions as a, quadrantOf as o, scatterSeries as s } from "./engine/presets.js";
|
|
6
|
+
export { r as barSeries, t as createChartController, i as lineSeries, a as quadrantChartOptions, o as quadrantOf, s as scatterSeries, n as scenePrimitives, e as toCss };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("./scale.cjs"),t=require("./format.cjs"),n=require("./time.cjs");var r=(r,i,a)=>{let[o,s]=i[0]<=i[1]?i:[i[1],i[0]];if(r.type===`category`){let e=r.categories.length,t=Math.max(0,Math.ceil(o-1e-9)),n=Math.min(e-1,Math.floor(s+1e-9)),i=Math.max(0,n-t+1),c=Math.max(1,Math.ceil(i/Math.max(1,a))),l=[];for(let e=t-t%c;e<=n;e+=c)e>=t&&l.push(e);let u=e=>{let t=Math.round(e);return r.format?r.format(t):r.categories[t]??String(t)};return{values:l,labels:l.map(u),formatValue:u}}if(r.type===`time`){let e=n.timeTicks(o,s,a),t=e.unit===`day`||e.unit===`month`||e.unit===`year`?`day`:e.unit,i=r.format??(e=>n.formatTime(e,t));return{values:e.values,labels:e.values.map(r.format??e.format),formatValue:i}}let c=e.linearTicks(o,s,a),l=e.tickStep(o,s,a),u=r.format??t.tickFormatter(l,Math.max(Math.abs(o),Math.abs(s)));return{values:c,labels:c.map(u),formatValue:r.format??t.formatValue}};exports.axisTicks=r;
|
|
2
|
+
//# sourceMappingURL=axis.cjs.map
|