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,287 @@
|
|
|
1
|
+
import { useTheme as e } from "../../theme/MinervaProvider.js";
|
|
2
|
+
import { part as t } from "../../internal/parts.js";
|
|
3
|
+
import { createChartController as n } from "../../charts/src/engine/controller.js";
|
|
4
|
+
import "../../charts/src/canvas.js";
|
|
5
|
+
import { measureChartText as r } from "./measure.js";
|
|
6
|
+
import { drawHover as i, drawStatic as a, tooltipCard as o } from "./scene.js";
|
|
7
|
+
import { chartThemeInput as s } from "./theme.js";
|
|
8
|
+
import { useEffect as c, useImperativeHandle as l, useLayoutEffect as u, useMemo as d, useRef as f, useState as p, useSyncExternalStore as m } from "react";
|
|
9
|
+
import { StyleSheet as h, View as g } from "react-native";
|
|
10
|
+
import { jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
11
|
+
//#region src/components/Chart/ChartBase.tsx
|
|
12
|
+
var y = (e) => ({
|
|
13
|
+
series: e.series,
|
|
14
|
+
xAxis: e.xAxis,
|
|
15
|
+
yAxis: e.yAxis,
|
|
16
|
+
legend: e.legend,
|
|
17
|
+
tooltip: e.tooltip,
|
|
18
|
+
crosshair: e.crosshair,
|
|
19
|
+
annotations: e.annotations,
|
|
20
|
+
interaction: e.interaction,
|
|
21
|
+
padding: e.padding,
|
|
22
|
+
palette: e.palette,
|
|
23
|
+
ariaLabel: e.ariaLabel
|
|
24
|
+
}), b = {}, x = (e, t) => {
|
|
25
|
+
let n = Number(e.identifier);
|
|
26
|
+
return Number.isFinite(n) ? n : t;
|
|
27
|
+
}, S = (e) => {
|
|
28
|
+
if (typeof requestAnimationFrame == "function") {
|
|
29
|
+
let t = requestAnimationFrame(e);
|
|
30
|
+
return { cancel: () => cancelAnimationFrame(t) };
|
|
31
|
+
}
|
|
32
|
+
let t = setTimeout(e, 16);
|
|
33
|
+
return { cancel: () => clearTimeout(t) };
|
|
34
|
+
};
|
|
35
|
+
function C(e, t, i) {
|
|
36
|
+
let o = 0, s = null, c = /* @__PURE__ */ new Set(), l = null, u = {
|
|
37
|
+
x: 0,
|
|
38
|
+
y: 0
|
|
39
|
+
}, d = /* @__PURE__ */ new Map(), f = (e) => typeof e.interaction == "object" && !!e.interaction.dragPoints, p = f(e), m = !1, h = () => {
|
|
40
|
+
o++, c.forEach((e) => e());
|
|
41
|
+
}, g = () => {
|
|
42
|
+
s?.cancel(), s = null;
|
|
43
|
+
}, _ = n({
|
|
44
|
+
options: e,
|
|
45
|
+
theme: t,
|
|
46
|
+
measureText: r,
|
|
47
|
+
onInvalidate: () => {
|
|
48
|
+
!s && c.size && (s = S(() => {
|
|
49
|
+
s = null, h();
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
i && _.setSize(i[0], i[1]);
|
|
54
|
+
let v = (e) => ({
|
|
55
|
+
x: e.pageX - u.x,
|
|
56
|
+
y: e.pageY - u.y
|
|
57
|
+
}), y = (e) => {
|
|
58
|
+
let t = e.nativeEvent;
|
|
59
|
+
(t.touches?.length ? t.touches : [t]).forEach((e, t) => {
|
|
60
|
+
let n = x(e, t), r = v(e), i = d.get(n);
|
|
61
|
+
i ? (i.x !== r.x || i.y !== r.y) && (d.set(n, r), _.pointerMove(r.x, r.y, {
|
|
62
|
+
id: n,
|
|
63
|
+
touch: !0
|
|
64
|
+
})) : (d.set(n, r), _.pointerDown(r.x, r.y, {
|
|
65
|
+
id: n,
|
|
66
|
+
touch: !0
|
|
67
|
+
}));
|
|
68
|
+
}), d.size === 1 && (b.anchor = [...d.values()][0]);
|
|
69
|
+
}, b = {
|
|
70
|
+
controller: _,
|
|
71
|
+
setOptions(e) {
|
|
72
|
+
p = f(e), _.setOptions(e);
|
|
73
|
+
},
|
|
74
|
+
subscribe(e) {
|
|
75
|
+
return c.add(e), () => {
|
|
76
|
+
c.delete(e), c.size || g();
|
|
77
|
+
};
|
|
78
|
+
},
|
|
79
|
+
version: () => o,
|
|
80
|
+
commit() {
|
|
81
|
+
g(), h();
|
|
82
|
+
},
|
|
83
|
+
layers(e, t) {
|
|
84
|
+
let { plot: n } = e.layout, { view: r } = e, i = [
|
|
85
|
+
e.model,
|
|
86
|
+
e.annotations,
|
|
87
|
+
e.theme,
|
|
88
|
+
e.width,
|
|
89
|
+
e.height,
|
|
90
|
+
r.x[0],
|
|
91
|
+
r.x[1],
|
|
92
|
+
r.y[0],
|
|
93
|
+
r.y[1],
|
|
94
|
+
n.x,
|
|
95
|
+
n.y,
|
|
96
|
+
n.width,
|
|
97
|
+
n.height,
|
|
98
|
+
t
|
|
99
|
+
];
|
|
100
|
+
return (!l || l.key.some((e, t) => e !== i[t])) && (l = {
|
|
101
|
+
key: i,
|
|
102
|
+
node: a(e, t)
|
|
103
|
+
}), l.node;
|
|
104
|
+
},
|
|
105
|
+
anchor: null,
|
|
106
|
+
touchStart(e) {
|
|
107
|
+
let t = e.nativeEvent;
|
|
108
|
+
!d.size && t.locationX !== void 0 && (u = {
|
|
109
|
+
x: t.pageX - t.locationX,
|
|
110
|
+
y: t.pageY - (t.locationY ?? 0)
|
|
111
|
+
}), y(e), b.commit();
|
|
112
|
+
let n = _.getPlotRect(), r = d.values().next().value;
|
|
113
|
+
return m = p && !!n && !!r && r.x >= n.x && r.x <= n.x + n.width && r.y >= n.y && r.y <= n.y + n.height, b.holdsGesture();
|
|
114
|
+
},
|
|
115
|
+
touchAdd(e) {
|
|
116
|
+
y(e), b.commit();
|
|
117
|
+
},
|
|
118
|
+
touchMove: y,
|
|
119
|
+
touchEnd(e) {
|
|
120
|
+
let t = e.nativeEvent, n = new Set((t.touches ?? []).map((e, t) => x(e, t))), r = t.changedTouches?.length ? t.changedTouches : [t];
|
|
121
|
+
for (let [e, t] of [...d]) {
|
|
122
|
+
if (n.has(e)) continue;
|
|
123
|
+
let i = r.find((t, n) => x(t, n) === e), a = i ? v(i) : t;
|
|
124
|
+
d.delete(e), d.size === 0 && (b.anchor = a), _.pointerUp(a.x, a.y, {
|
|
125
|
+
id: e,
|
|
126
|
+
touch: !0
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
b.commit();
|
|
130
|
+
},
|
|
131
|
+
touchCancel() {
|
|
132
|
+
for (let e of d.keys()) _.pointerCancel({ id: e });
|
|
133
|
+
d.clear(), b.commit();
|
|
134
|
+
},
|
|
135
|
+
holdsGesture() {
|
|
136
|
+
if (d.size > 1 || m && d.size > 0) return !0;
|
|
137
|
+
let e = _.getScene();
|
|
138
|
+
if (!e) return !1;
|
|
139
|
+
if (e.dragging) return !0;
|
|
140
|
+
let { base: t } = e.model, n = _.getView();
|
|
141
|
+
return n.x[0] !== t.x[0] || n.x[1] !== t.x[1] || n.y[0] !== t.y[0] || n.y[1] !== t.y[1];
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
return b;
|
|
145
|
+
}
|
|
146
|
+
function w({ scene: e, anchor: n, children: r }) {
|
|
147
|
+
let [i, a] = p(null), { width: s, height: c } = e, l = n.x + 14, u = n.y;
|
|
148
|
+
return i && (l + i.width > s - 4 && (l = n.x - 14 - i.width), l = Math.max(4, Math.min(l, s - i.width - 4)), u = Math.max(4, Math.min(n.y - i.height / 2, c - i.height - 4))), /* @__PURE__ */ _(g, {
|
|
149
|
+
pointerEvents: "none",
|
|
150
|
+
...t("chart", "tooltip", { custom: !0 }),
|
|
151
|
+
onLayout: (e) => {
|
|
152
|
+
let { width: t, height: n } = e.nativeEvent.layout;
|
|
153
|
+
a((e) => e && e.width === t && e.height === n ? e : {
|
|
154
|
+
width: t,
|
|
155
|
+
height: n
|
|
156
|
+
});
|
|
157
|
+
},
|
|
158
|
+
style: [o(e), {
|
|
159
|
+
left: 0,
|
|
160
|
+
top: 0,
|
|
161
|
+
maxWidth: Math.max(0, s - 8),
|
|
162
|
+
padding: 8,
|
|
163
|
+
opacity: +!!i,
|
|
164
|
+
transform: [{ translateX: l }, { translateY: u }]
|
|
165
|
+
}],
|
|
166
|
+
children: r
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
function T({ options: n, height: r = 320, width: a = "100%", style: o, testID: y, handleRef: x, renderTooltip: S, overlay: T, ...E }) {
|
|
170
|
+
let { tokens: D, fonts: O } = e(), k = O.sans, A = d(() => s(D), [D]), j = !!S && n.tooltip !== !1, M = d(() => {
|
|
171
|
+
if (!j) return n;
|
|
172
|
+
let e = typeof n.tooltip == "object" ? n.tooltip : {};
|
|
173
|
+
return {
|
|
174
|
+
...n,
|
|
175
|
+
tooltip: {
|
|
176
|
+
...e,
|
|
177
|
+
render: () => b
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
}, [n, j]), [N] = p(() => C(M, A, typeof a == "number" && typeof r == "number" ? [a, r] : null)), { controller: P } = N;
|
|
181
|
+
m(N.subscribe, N.version, N.version);
|
|
182
|
+
let F = f({
|
|
183
|
+
options: M,
|
|
184
|
+
theme: A
|
|
185
|
+
});
|
|
186
|
+
u(() => {
|
|
187
|
+
let e = F.current;
|
|
188
|
+
(e.theme !== A || e.options !== M) && (e.theme !== A && P.setTheme(A), e.options !== M && N.setOptions(M), F.current = {
|
|
189
|
+
options: M,
|
|
190
|
+
theme: A
|
|
191
|
+
}, N.commit());
|
|
192
|
+
}, [
|
|
193
|
+
P,
|
|
194
|
+
N,
|
|
195
|
+
M,
|
|
196
|
+
A
|
|
197
|
+
]), u(() => {
|
|
198
|
+
if (typeof a != "number" || typeof r != "number") return;
|
|
199
|
+
let e = P.getScene();
|
|
200
|
+
e && e.width === a && e.height === r || (P.setSize(a, r), N.commit());
|
|
201
|
+
}, [
|
|
202
|
+
P,
|
|
203
|
+
N,
|
|
204
|
+
a,
|
|
205
|
+
r
|
|
206
|
+
]);
|
|
207
|
+
let I = f(E);
|
|
208
|
+
u(() => {
|
|
209
|
+
I.current = E;
|
|
210
|
+
}), c(() => {
|
|
211
|
+
let e = I, t = [
|
|
212
|
+
P.on("hover", (t) => e.current.onHover?.(t)),
|
|
213
|
+
P.on("click", (t) => e.current.onPointClick?.(t)),
|
|
214
|
+
P.on("plotClick", (t) => e.current.onPlotClick?.(t)),
|
|
215
|
+
P.on("zoom", (t) => e.current.onZoom?.(t)),
|
|
216
|
+
P.on("drag", (t) => e.current.onDrag?.(t)),
|
|
217
|
+
P.on("drop", (t) => e.current.onDrop?.(t))
|
|
218
|
+
];
|
|
219
|
+
return () => t.forEach((e) => e());
|
|
220
|
+
}, [P]), l(x, () => ({
|
|
221
|
+
resetZoom: () => P.resetZoom(),
|
|
222
|
+
getView: () => P.getView(),
|
|
223
|
+
setView: (e) => P.setView(e),
|
|
224
|
+
getPlotRect: () => P.getPlotRect(),
|
|
225
|
+
getController: () => P
|
|
226
|
+
}), [P]);
|
|
227
|
+
let L = (e) => {
|
|
228
|
+
let { width: t, height: n } = e.nativeEvent.layout, r = P.getScene();
|
|
229
|
+
r && r.width === t && r.height === n || (P.setSize(t, n), N.commit());
|
|
230
|
+
}, R = P.getScene(), z = null, B = R?.hover?.tooltip ? R.hover.event : null;
|
|
231
|
+
if (R && B && j && S) {
|
|
232
|
+
let e = S(B), t = N.anchor ?? R.hover?.marks[0] ?? null;
|
|
233
|
+
e != null && e !== !1 && t && (z = /* @__PURE__ */ _(w, {
|
|
234
|
+
scene: R,
|
|
235
|
+
anchor: t,
|
|
236
|
+
children: e
|
|
237
|
+
}));
|
|
238
|
+
}
|
|
239
|
+
return /* @__PURE__ */ v(g, {
|
|
240
|
+
testID: y,
|
|
241
|
+
onLayout: L,
|
|
242
|
+
style: [{
|
|
243
|
+
width: a,
|
|
244
|
+
height: r
|
|
245
|
+
}, o],
|
|
246
|
+
...t("chart", "root"),
|
|
247
|
+
children: [
|
|
248
|
+
/* @__PURE__ */ _(g, {
|
|
249
|
+
style: h.absoluteFill,
|
|
250
|
+
accessible: !0,
|
|
251
|
+
accessibilityRole: "image",
|
|
252
|
+
accessibilityLabel: n.ariaLabel,
|
|
253
|
+
onStartShouldSetResponder: () => !0,
|
|
254
|
+
onResponderTerminationRequest: () => !N.holdsGesture(),
|
|
255
|
+
onResponderGrant: N.touchStart,
|
|
256
|
+
onResponderStart: N.touchAdd,
|
|
257
|
+
onResponderMove: N.touchMove,
|
|
258
|
+
onResponderEnd: N.touchEnd,
|
|
259
|
+
onResponderRelease: N.touchEnd,
|
|
260
|
+
onResponderTerminate: N.touchCancel,
|
|
261
|
+
...t("chart", "surface"),
|
|
262
|
+
children: /* @__PURE__ */ v(g, {
|
|
263
|
+
pointerEvents: "none",
|
|
264
|
+
style: h.absoluteFill,
|
|
265
|
+
children: [R ? N.layers(R, k) : null, R ? i(R, k, j) : null]
|
|
266
|
+
})
|
|
267
|
+
}),
|
|
268
|
+
T && R ? /* @__PURE__ */ _(g, {
|
|
269
|
+
pointerEvents: "box-none",
|
|
270
|
+
style: {
|
|
271
|
+
position: "absolute",
|
|
272
|
+
left: R.layout.plot.x,
|
|
273
|
+
top: R.layout.plot.y,
|
|
274
|
+
width: R.layout.plot.width,
|
|
275
|
+
height: R.layout.plot.height
|
|
276
|
+
},
|
|
277
|
+
...t("chart", "overlay"),
|
|
278
|
+
children: T(R.layout.plot)
|
|
279
|
+
}) : null,
|
|
280
|
+
z
|
|
281
|
+
]
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
//#endregion
|
|
285
|
+
export { T as ChartBase, y as engineOptions };
|
|
286
|
+
|
|
287
|
+
//# sourceMappingURL=ChartBase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartBase.js","names":["engineOptions","props","CUSTOM_TOOLTIP","idOf","id","t","index","requestFrame","callback","createChartStore","version","frame","listeners","cache","origin","touches","dragsPoints","o","draggable","options","claimed","notify","listener","cancelFrame","controller","createChartController","measureChartText","size","local","sync","n","event","i","p","previous","store","next","scene","key","view","plot","family","value","drawStatic","active","changed","last","touch","base","CustomTooltip","setSize","useState","left","anchor","top","width","height","View","part","w","h","tooltipCard","ChartBase","handlers","useTheme","fonts","theme","useMemo","chartThemeInput","tokens","customTooltip","renderTooltip","resolved","applied","useRef","useLayoutEffect","current","handlersRef","useEffect","offs","e","v","off","useImperativeHandle","handleRef","onLayout","tooltip","content","style","StyleSheet","drawHover","overlay"],"sources":["../../../../../native/src/components/Chart/ChartBase.tsx"],"sourcesContent":["// The chart host of React Native: owns a platform-free chart controller\n// (@minerva/charts/canvas: options, model, zoom, gestures, scene in pixels)\n// and draws its scene with views (./scene). Touches go through the\n// responder system; the drawing is `pointerEvents=\"none\"`, so every touch\n// lands on the surface and positions come from page coordinates.\n\nimport {\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n type ReactNode,\n type Ref,\n} from \"react\";\nimport {\n StyleSheet,\n View,\n type DimensionValue,\n type GestureResponderEvent,\n type LayoutChangeEvent,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport {\n createChartController,\n type ChartController,\n type ChartDragEvent,\n type ChartHoverEvent,\n type ChartOptions,\n type ChartPlotClickEvent,\n type ChartRect,\n type ChartScene,\n type ChartThemeInput,\n type ChartTooltipOptions,\n type ChartView,\n} from \"@minerva/charts/canvas\";\nimport { useTheme } from \"../../theme/MinervaProvider\";\nimport { part } from \"../../internal/parts\";\nimport { measureChartText } from \"./measure\";\nimport { drawHover, drawStatic, tooltipCard } from \"./scene\";\nimport { chartThemeInput } from \"./theme\";\nimport type { ChartCommonProps, ChartHandle } 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 onDrag?: (event: ChartDragEvent) => void;\n onDrop?: (event: ChartDragEvent) => void;\n}\n\n/** Engine options of the common props */\nexport const engineOptions = (\n props: Pick<\n ChartCommonProps,\n | \"xAxis\"\n | \"yAxis\"\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 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\ntype TooltipResult = Exclude<\n ReturnType<NonNullable<ChartTooltipOptions[\"render\"]>>,\n string | null\n>;\n/** Non-string result of `tooltip.render`: the engine lays a tooltip out without drawing text */\nconst CUSTOM_TOOLTIP = {} as unknown as TooltipResult;\n\ninterface TouchPoint {\n identifier?: number | string;\n pageX: number;\n pageY: number;\n locationX?: number;\n locationY?: number;\n}\n\nconst idOf = (t: TouchPoint, index: number) => {\n const id = Number(t.identifier);\n return Number.isFinite(id) ? id : index;\n};\n\ntype Frame = { cancel: () => void };\n\nconst requestFrame = (callback: () => void): Frame => {\n if (typeof requestAnimationFrame === \"function\") {\n const id = requestAnimationFrame(callback);\n return { cancel: () => cancelAnimationFrame(id) };\n }\n const id = setTimeout(callback, 16);\n return { cancel: () => clearTimeout(id) };\n};\n\n/**\n * External store of a chart: the controller, a version bumped when its\n * scene must be drawn again (coalesced per frame), the touches being\n * tracked and the cache of the static layers.\n */\ninterface ChartStore {\n controller: ChartController;\n /** Options of the controller (`setOptions` of the controller) */\n setOptions: (options: ChartOptions) => void;\n subscribe: (listener: () => void) => () => void;\n version: () => number;\n /** Draws again now */\n commit: () => void;\n /** Static layers of a scene (cached while model / view / size are the same) */\n layers: (scene: ChartScene, family: string | undefined) => ReactNode;\n /** Last single-finger position (anchor of a custom tooltip) */\n anchor: { x: number; y: number } | null;\n /**\n * First finger (responder grant); returns whether the chart owns the\n * gesture, which keeps native scroll views from taking it (Android)\n */\n touchStart: (event: GestureResponderEvent) => boolean;\n /** Another finger touches the chart */\n touchAdd: (event: GestureResponderEvent) => void;\n /** Moves (drawn on the next frame) */\n touchMove: (event: GestureResponderEvent) => void;\n touchEnd: (event: GestureResponderEvent) => void;\n touchCancel: () => void;\n /** Whether the chart keeps the touches (pinch, point drag, pan when zoomed) */\n holdsGesture: () => boolean;\n}\n\nfunction createChartStore(\n options: ChartOptions,\n theme: ChartThemeInput,\n size: [number, number] | null,\n): ChartStore {\n let version = 0;\n let frame: Frame | null = null;\n const listeners = new Set<() => void>();\n let cache: { key: unknown[]; node: ReactNode } | null = null;\n let origin = { x: 0, y: 0 };\n const touches = new Map<number, { x: number; y: number }>();\n const dragsPoints = (o: ChartOptions) =>\n typeof o.interaction === \"object\" && !!o.interaction.dragPoints;\n let draggable = dragsPoints(options);\n /** The current touch sequence started on the plot of a draggable chart */\n let claimed = false;\n\n const notify = () => {\n version++;\n listeners.forEach((listener) => listener());\n };\n const cancelFrame = () => {\n frame?.cancel();\n frame = null;\n };\n const schedule = () => {\n if (frame || !listeners.size) return;\n frame = requestFrame(() => {\n frame = null;\n notify();\n });\n };\n\n const controller = createChartController({\n options,\n theme,\n measureText: measureChartText,\n onInvalidate: schedule,\n });\n if (size) controller.setSize(size[0], size[1]);\n\n const local = (t: TouchPoint) => ({\n x: t.pageX - origin.x,\n y: t.pageY - origin.y,\n });\n\n /** Feeds the controller the fingers that appeared or moved */\n const sync = (event: GestureResponderEvent) => {\n const n = event.nativeEvent;\n const list: readonly TouchPoint[] = n.touches?.length\n ? n.touches\n : [n as unknown as TouchPoint];\n list.forEach((t, i) => {\n const id = idOf(t, i);\n const p = local(t);\n const previous = touches.get(id);\n if (!previous) {\n touches.set(id, p);\n controller.pointerDown(p.x, p.y, { id, touch: true });\n } else if (previous.x !== p.x || previous.y !== p.y) {\n touches.set(id, p);\n controller.pointerMove(p.x, p.y, { id, touch: true });\n }\n });\n if (touches.size === 1) store.anchor = [...touches.values()][0];\n };\n\n const store: ChartStore = {\n controller,\n setOptions(next) {\n draggable = dragsPoints(next);\n controller.setOptions(next);\n },\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n if (!listeners.size) cancelFrame();\n };\n },\n version: () => version,\n commit() {\n cancelFrame();\n notify();\n },\n layers(scene, family) {\n const { plot } = scene.layout;\n const { view } = scene;\n const key = [\n scene.model,\n scene.annotations,\n scene.theme,\n scene.width,\n scene.height,\n view.x[0],\n view.x[1],\n view.y[0],\n view.y[1],\n plot.x,\n plot.y,\n plot.width,\n plot.height,\n family,\n ];\n if (!cache || cache.key.some((value, i) => value !== key[i]))\n cache = { key, node: drawStatic(scene, family) };\n return cache.node;\n },\n anchor: null,\n touchStart(event) {\n const n = event.nativeEvent as unknown as TouchPoint;\n // the drawing ignores touches: `location` is relative to the surface\n if (!touches.size && n.locationX !== undefined)\n origin = { x: n.pageX - n.locationX, y: n.pageY - (n.locationY ?? 0) };\n sync(event);\n store.commit();\n // draggable points: the drag only starts after the touch slop, too\n // late to keep a scroll view from stealing the touch: claim it now\n const plot = controller.getPlotRect();\n const p = touches.values().next().value;\n claimed =\n draggable &&\n !!plot &&\n !!p &&\n p.x >= plot.x &&\n p.x <= plot.x + plot.width &&\n p.y >= plot.y &&\n p.y <= plot.y + plot.height;\n return store.holdsGesture();\n },\n touchAdd(event) {\n sync(event);\n store.commit();\n },\n touchMove: sync,\n touchEnd(event) {\n const n = event.nativeEvent;\n const active = new Set(\n (n.touches ?? []).map((t, i) => idOf(t as TouchPoint, i)),\n );\n const changed: readonly TouchPoint[] = n.changedTouches?.length\n ? n.changedTouches\n : [n as unknown as TouchPoint];\n for (const [id, last] of [...touches]) {\n if (active.has(id)) continue;\n const touch = changed.find((t, i) => idOf(t, i) === id);\n const p = touch ? local(touch) : last;\n touches.delete(id);\n if (touches.size === 0) store.anchor = p;\n controller.pointerUp(p.x, p.y, { id, touch: true });\n }\n store.commit();\n },\n touchCancel() {\n for (const id of touches.keys()) controller.pointerCancel({ id });\n touches.clear();\n store.commit();\n },\n holdsGesture() {\n if (touches.size > 1 || (claimed && touches.size > 0)) return true;\n const scene = controller.getScene();\n if (!scene) return false;\n if (scene.dragging) return true;\n const { base } = scene.model;\n const view = controller.getView();\n return (\n view.x[0] !== base.x[0] ||\n view.x[1] !== base.x[1] ||\n view.y[0] !== base.y[0] ||\n view.y[1] !== base.y[1]\n );\n },\n };\n return store;\n}\n\n/** A `renderTooltip` node, placed next to the finger once measured */\nfunction CustomTooltip({\n scene,\n anchor,\n children,\n}: {\n scene: ChartScene;\n anchor: { x: number; y: number };\n children: ReactNode;\n}) {\n const [size, setSize] = useState<{ width: number; height: number } | null>(\n null,\n );\n const { width, height } = scene;\n let left = anchor.x + 14;\n let top = anchor.y;\n if (size) {\n if (left + size.width > width - 4) left = anchor.x - 14 - size.width;\n left = Math.max(4, Math.min(left, width - size.width - 4));\n top = Math.max(\n 4,\n Math.min(anchor.y - size.height / 2, height - size.height - 4),\n );\n }\n return (\n <View\n pointerEvents=\"none\"\n {...part(\"chart\", \"tooltip\", { custom: true })}\n onLayout={(e: LayoutChangeEvent) => {\n const { width: w, height: h } = e.nativeEvent.layout;\n setSize((previous) =>\n previous && previous.width === w && previous.height === h\n ? previous\n : { width: w, height: h },\n );\n }}\n style={[\n tooltipCard(scene),\n {\n // laid out at the origin (full width available), moved by a transform\n left: 0,\n top: 0,\n maxWidth: Math.max(0, width - 8),\n padding: 8,\n opacity: size ? 1 : 0,\n transform: [{ translateX: left }, { translateY: top }],\n },\n ]}\n >\n {children}\n </View>\n );\n}\n\ninterface ChartBaseProps extends Handlers {\n options: ChartOptions;\n height?: DimensionValue;\n width?: DimensionValue;\n style?: StyleProp<ViewStyle>;\n testID?: string;\n handleRef?: Ref<ChartHandle>;\n /** React content of the tooltip (replaces the engine's content) */\n renderTooltip?: (event: ChartHoverEvent) => ReactNode;\n /** React content placed over the plot area, given the plot rectangle */\n overlay?: (plot: ChartRect) => ReactNode;\n}\n\n/** Sizes the chart, forwards options / theme / touches to the controller and draws its scene */\nexport function ChartBase({\n options,\n height = 320,\n width = \"100%\",\n style,\n testID,\n handleRef,\n renderTooltip,\n overlay,\n ...handlers\n}: ChartBaseProps) {\n const { tokens, fonts } = useTheme();\n const family = fonts.sans;\n const theme = useMemo(() => chartThemeInput(tokens), [tokens]);\n const customTooltip = !!renderTooltip && options.tooltip !== false;\n const resolved = useMemo((): ChartOptions => {\n if (!customTooltip) return options;\n const base = typeof options.tooltip === \"object\" ? options.tooltip : {};\n return { ...options, tooltip: { ...base, render: () => CUSTOM_TOOLTIP } };\n }, [options, customTooltip]);\n\n const [store] = useState(() =>\n createChartStore(\n resolved,\n theme,\n typeof width === \"number\" && typeof height === \"number\"\n ? [width, height]\n : null,\n ),\n );\n const { controller } = store;\n useSyncExternalStore(store.subscribe, store.version, store.version);\n\n const applied = useRef({ options: resolved, theme });\n useLayoutEffect(() => {\n const current = applied.current;\n if (current.theme === theme && current.options === resolved) return;\n if (current.theme !== theme) controller.setTheme(theme);\n if (current.options !== resolved) store.setOptions(resolved);\n applied.current = { options: resolved, theme };\n store.commit();\n }, [controller, store, resolved, theme]);\n\n useLayoutEffect(() => {\n if (typeof width !== \"number\" || typeof height !== \"number\") return;\n const scene = controller.getScene();\n if (scene && scene.width === width && scene.height === height) return;\n controller.setSize(width, height);\n store.commit();\n }, [controller, store, width, height]);\n\n const handlersRef = useRef<Handlers>(handlers);\n useLayoutEffect(() => {\n handlersRef.current = handlers;\n });\n useEffect(() => {\n const h = handlersRef;\n const offs = [\n controller.on(\"hover\", (e) => h.current.onHover?.(e)),\n controller.on(\"click\", (e) => h.current.onPointClick?.(e)),\n controller.on(\"plotClick\", (e) => h.current.onPlotClick?.(e)),\n controller.on(\"zoom\", (v) => h.current.onZoom?.(v)),\n controller.on(\"drag\", (e) => h.current.onDrag?.(e)),\n controller.on(\"drop\", (e) => h.current.onDrop?.(e)),\n ];\n return () => offs.forEach((off) => off());\n }, [controller]);\n\n useImperativeHandle(\n handleRef,\n () => ({\n resetZoom: () => controller.resetZoom(),\n getView: () => controller.getView(),\n setView: (view) => controller.setView(view),\n getPlotRect: () => controller.getPlotRect(),\n getController: () => controller,\n }),\n [controller],\n );\n\n const onLayout = (e: LayoutChangeEvent) => {\n const { width: w, height: h } = e.nativeEvent.layout;\n const scene = controller.getScene();\n if (scene && scene.width === w && scene.height === h) return;\n controller.setSize(w, h);\n store.commit();\n };\n\n const scene = controller.getScene();\n let tooltip: ReactNode = null;\n const event = scene?.hover?.tooltip ? scene.hover.event : null;\n if (scene && event && customTooltip && renderTooltip) {\n const content = renderTooltip(event);\n const anchor = store.anchor ?? scene.hover?.marks[0] ?? null;\n if (\n content !== null &&\n content !== undefined &&\n content !== false &&\n anchor\n )\n tooltip = (\n <CustomTooltip scene={scene} anchor={anchor}>\n {content}\n </CustomTooltip>\n );\n }\n\n return (\n <View\n testID={testID}\n onLayout={onLayout}\n style={[{ width, height }, style]}\n {...part(\"chart\", \"root\")}\n >\n <View\n style={StyleSheet.absoluteFill}\n accessible\n accessibilityRole=\"image\"\n accessibilityLabel={options.ariaLabel}\n onStartShouldSetResponder={() => true}\n onResponderTerminationRequest={() => !store.holdsGesture()}\n onResponderGrant={store.touchStart}\n onResponderStart={store.touchAdd}\n onResponderMove={store.touchMove}\n onResponderEnd={store.touchEnd}\n onResponderRelease={store.touchEnd}\n onResponderTerminate={store.touchCancel}\n {...part(\"chart\", \"surface\")}\n >\n <View pointerEvents=\"none\" style={StyleSheet.absoluteFill}>\n {scene ? store.layers(scene, family) : null}\n {scene ? drawHover(scene, family, customTooltip) : null}\n </View>\n </View>\n {overlay && scene ? (\n <View\n pointerEvents=\"box-none\"\n style={{\n position: \"absolute\",\n left: scene.layout.plot.x,\n top: scene.layout.plot.y,\n width: scene.layout.plot.width,\n height: scene.layout.plot.height,\n }}\n {...part(\"chart\", \"overlay\")}\n >\n {overlay(scene.layout.plot)}\n </View>\n ) : null}\n {tooltip}\n </View>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("../../internal/parts.cjs"),t=require("../../charts/src/engine/presets.cjs");require("../../charts/src/canvas.cjs");const n=require("./ChartBase.cjs");let r=require("react"),i=require("react-native"),a=require("react/jsx-runtime");function o(e,t){let{xAxis:i,yAxis:a,legend:o,tooltip:s,crosshair:c,annotations:l,interaction:u,padding:d,palette:f,ariaLabel:p}=e;return(0,r.useMemo)(()=>n.engineOptions({series:t,xAxis:i,yAxis:a,legend:o,tooltip:s,crosshair:c,annotations:l,interaction:u,padding:d,palette:f,ariaLabel:p}),[t,i,a,o,s,c,l,u,d,f,p])}var s=e=>({height:e.height,width:e.width,style:e.style,testID:e.testID,handleRef:e.ref,onHover:e.onHover,onPointClick:e.onPointClick,onPlotClick:e.onPlotClick,onZoom:e.onZoom,renderTooltip:e.renderTooltip});function c(e){let t=o(e,e.series);return(0,a.jsx)(n.ChartBase,{options:t,...s(e)})}function l(e){let{series:i,area:c=!1}=e,l=o(e,(0,r.useMemo)(()=>t.lineSeries(i,c),[i,c]));return(0,a.jsx)(n.ChartBase,{options:l,...s(e)})}function u(e){let{series:i,stacked:c=!1}=e,l=o(e,(0,r.useMemo)(()=>t.barSeries(i,c),[i,c]));return(0,a.jsx)(n.ChartBase,{options:l,...s(e)})}function d(e){let{series:i}=e,c=o(e,(0,r.useMemo)(()=>t.scatterSeries(i),[i]));return(0,a.jsx)(n.ChartBase,{options:c,...s(e)})}var f=[`topLeft`,`topRight`,`bottomLeft`,`bottomRight`],p=[];function m(c){let{points:l,xDomain:u,yDomain:d,xSplit:m,ySplit:h,quadrants:g,xLabel:_,yLabel:v,axisLabels:y,showTicks:b,reverseX:x,showLabels:S,pointSize:C,name:w,draggable:T,onPointClick:E,onPointDrop:D,onQuadrantClick:O,renderTooltip:k,quadrantContent:A}=c,j=o(c,p),M=T??!!D,N=(0,r.useMemo)(()=>t.quadrantChartOptions({points:l,xDomain:u,yDomain:d,xSplit:m,ySplit:h,quadrants:g,xLabel:_,yLabel:v,axisLabels:y,showTicks:b,reverseX:x,showLabels:S,pointSize:C,name:w,draggable:M},j),[l,u,d,m,h,g,_,v,y,b,x,S,C,w,M,j]),P={xDomain:u,yDomain:d,xSplit:m,ySplit:h,reverseX:x},F=A?t=>{let[n,r]=u??[0,10],[o,s]=d??[0,10],c=m??(n+r)/2,l=h??(o+s)/2,p=(c-n)/(r-n||1),g=(l-o)/(s-o||1),_=t.width*(x?1-p:p),v=t.height*(1-g);return f.map(n=>{let r=A[n];if(r==null||r===!1)return null;let o=n.endsWith(`Left`),s=n.startsWith(`top`);return(0,a.jsx)(i.View,{pointerEvents:`box-none`,style:{position:`absolute`,left:o?0:_,top:s?0:v,width:o?_:t.width-_,height:s?v:t.height-v},...e.part(`chart`,`quadrant`,{corner:n}),children:r},n)})}:void 0;return(0,a.jsx)(n.ChartBase,{options:N,...s({...c,onPointClick:void 0,renderTooltip:void 0}),overlay:F,onPointClick:E?e=>{let t=e.items[0]?.index;t!==void 0&&l[t]&&E(l[t],t)}:void 0,onPlotClick:O?e=>O(t.quadrantOf(P,e.x,e.y),e):void 0,onDrop:D?e=>{let n=e.item.index;l[n]&&D(l[n],n,{x:e.x,y:e.y,quadrant:t.quadrantOf(P,e.x,e.y)})}:void 0,renderTooltip:k?e=>{let t=e.items[0]?.index;return t!==void 0&&l[t]?k(l[t],t):null}:void 0})}exports.BarChart=u,exports.Chart=c,exports.LineChart=l,exports.QuadrantChart=m,exports.ScatterChart=d;
|
|
2
|
+
//# sourceMappingURL=charts.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"charts.cjs","names":["useMemo","engineOptions","ChartBase","lineSeries","barSeries","scatterSeries","quadrantChartOptions","View","part","quadrantOf","require_parts","require_presets","require_ChartBase","react","react_native","react_jsx_runtime","useEngineOptions","props","series","xAxis","yAxis","legend","tooltip","crosshair","annotations","interaction","padding","palette","ariaLabel","frameProps","Chart","options","LineChart","input","area","BarChart","stacked","ScatterChart","CORNERS","NO_SERIES","QuadrantChart","base","dragPoints","draggable","onPointDrop","points","xDomain","yDomain","xSplit","ySplit","quadrants","xLabel","yLabel","axisLabels","showTicks","reverseX","showLabels","pointSize","name","geometry","overlay","quadrantContent","x0","x1","y0","y1","xs","ys","fx","fy","sx","plot","sy","content","corner","left","top","onPointClick","index","event","onQuadrantClick","at","renderTooltip"],"sources":["../../../../../native/src/components/Chart/charts.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { View } from \"react-native\";\nimport {\n barSeries,\n lineSeries,\n quadrantChartOptions,\n quadrantOf,\n scatterSeries,\n type ChartHoverEvent,\n type ChartOptions,\n type ChartRect,\n type ChartSeries,\n type QuadrantCorner,\n} from \"@minerva/charts/canvas\";\nimport { part } from \"../../internal/parts\";\nimport { ChartBase, engineOptions } from \"./ChartBase\";\nimport type {\n BarChartProps,\n ChartCommonProps,\n ChartProps,\n LineChartProps,\n QuadrantChartProps,\n ScatterChartProps,\n} from \"./types\";\n\n/** Engine options of the common props, kept while the props are the same */\nfunction useEngineOptions(\n props: Omit<\n ChartCommonProps,\n \"onPointClick\" | \"onPlotClick\" | \"renderTooltip\"\n >,\n series: readonly ChartSeries[],\n): ChartOptions {\n const {\n xAxis,\n yAxis,\n legend,\n tooltip,\n crosshair,\n annotations,\n interaction,\n padding,\n palette,\n ariaLabel,\n } = props;\n return useMemo(\n () =>\n engineOptions({\n series,\n xAxis,\n yAxis,\n legend,\n tooltip,\n crosshair,\n annotations,\n interaction,\n padding,\n palette,\n ariaLabel,\n }),\n [\n series,\n xAxis,\n yAxis,\n legend,\n tooltip,\n crosshair,\n annotations,\n interaction,\n padding,\n palette,\n ariaLabel,\n ],\n );\n}\n\nconst frameProps = (props: ChartCommonProps) => ({\n height: props.height,\n width: props.width,\n style: props.style,\n testID: props.testID,\n handleRef: props.ref,\n onHover: props.onHover,\n onPointClick: props.onPointClick,\n onPlotClick: props.onPlotClick,\n onZoom: props.onZoom,\n renderTooltip: props.renderTooltip,\n});\n\n/**\n * Chart mixing line, area, bar and scatter series, drawn with views:\n * tap for the tooltip, pinch to zoom, drag to pan, double tap to reset.\n * Themed by the closest `MinervaProvider` (light / dark).\n */\nexport function Chart(props: ChartProps) {\n const options = useEngineOptions(props, props.series);\n return <ChartBase options={options} {...frameProps(props)} />;\n}\n\n/** Line (or area) chart; large series are decimated to the pixel columns */\nexport function LineChart(props: LineChartProps) {\n const { series: input, area = false } = props;\n const series = useMemo(() => lineSeries(input, area), [input, area]);\n const options = useEngineOptions(props, series);\n return <ChartBase options={options} {...frameProps(props)} />;\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 const options = useEngineOptions(props, series);\n return <ChartBase options={options} {...frameProps(props)} />;\n}\n\n/** Scatter chart: zooms on both axes; large point sets are merged per cell */\nexport function ScatterChart(props: ScatterChartProps) {\n const { series: input } = props;\n const series = useMemo(() => scatterSeries(input), [input]);\n const options = useEngineOptions(props, series);\n return <ChartBase options={options} {...frameProps(props)} />;\n}\n\nconst CORNERS: QuadrantCorner[] = [\n \"topLeft\",\n \"topRight\",\n \"bottomLeft\",\n \"bottomRight\",\n];\n\nconst NO_SERIES: readonly ChartSeries[] = [];\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 base = useEngineOptions(props, NO_SERIES);\n const dragPoints = draggable ?? !!onPointDrop;\n const options = useMemo(\n () =>\n 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: dragPoints,\n },\n base,\n ),\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 dragPoints,\n base,\n ],\n );\n const geometry = { xDomain, yDomain, xSplit, ySplit, reverseX };\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 // split point relative to the plot area\n const sx = plot.width * (reverseX ? 1 - fx : fx);\n const sy = plot.height * (1 - fy);\n return CORNERS.map((corner) => {\n const content = quadrantContent[corner];\n if (content === undefined || content === null || content === false)\n return null;\n const left = corner.endsWith(\"Left\");\n const top = corner.startsWith(\"top\");\n return (\n <View\n key={corner}\n pointerEvents=\"box-none\"\n style={{\n position: \"absolute\",\n left: left ? 0 : sx,\n top: top ? 0 : sy,\n width: left ? sx : plot.width - sx,\n height: top ? sy : plot.height - sy,\n }}\n {...part(\"chart\", \"quadrant\", { corner })}\n >\n {content}\n </View>\n );\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: ChartHoverEvent) => {\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,19 @@
|
|
|
1
|
+
import { BarChartProps, ChartProps, LineChartProps, QuadrantChartProps, ScatterChartProps } from './types.cjs';
|
|
2
|
+
/**
|
|
3
|
+
* Chart mixing line, area, bar and scatter series, drawn with views:
|
|
4
|
+
* tap for the tooltip, pinch to zoom, drag to pan, double tap to reset.
|
|
5
|
+
* Themed by the closest `MinervaProvider` (light / dark).
|
|
6
|
+
*/
|
|
7
|
+
export declare function Chart(props: ChartProps): import('react').JSX.Element;
|
|
8
|
+
/** Line (or area) chart; large series are decimated to the pixel columns */
|
|
9
|
+
export declare function LineChart(props: LineChartProps): import('react').JSX.Element;
|
|
10
|
+
/** Bar chart: grouped side by side, or stacked */
|
|
11
|
+
export declare function BarChart(props: BarChartProps): import('react').JSX.Element;
|
|
12
|
+
/** Scatter chart: zooms on both axes; large point sets are merged per cell */
|
|
13
|
+
export declare function ScatterChart(props: ScatterChartProps): import('react').JSX.Element;
|
|
14
|
+
/**
|
|
15
|
+
* Four-quadrant matrix (priority matrix, Eisenhower, BCG, ...): tinted
|
|
16
|
+
* quadrants with titles, dividers, and labelled dots placed without
|
|
17
|
+
* overlapping labels. Dots can be dragged to another quadrant.
|
|
18
|
+
*/
|
|
19
|
+
export declare function QuadrantChart(props: QuadrantChartProps): import('react').JSX.Element;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { BarChartProps, ChartProps, LineChartProps, QuadrantChartProps, ScatterChartProps } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Chart mixing line, area, bar and scatter series, drawn with views:
|
|
4
|
+
* tap for the tooltip, pinch to zoom, drag to pan, double tap to reset.
|
|
5
|
+
* Themed by the closest `MinervaProvider` (light / dark).
|
|
6
|
+
*/
|
|
7
|
+
export declare function Chart(props: ChartProps): import('react').JSX.Element;
|
|
8
|
+
/** Line (or area) chart; large series are decimated to the pixel columns */
|
|
9
|
+
export declare function LineChart(props: LineChartProps): import('react').JSX.Element;
|
|
10
|
+
/** Bar chart: grouped side by side, or stacked */
|
|
11
|
+
export declare function BarChart(props: BarChartProps): import('react').JSX.Element;
|
|
12
|
+
/** Scatter chart: zooms on both axes; large point sets are merged per cell */
|
|
13
|
+
export declare function ScatterChart(props: ScatterChartProps): import('react').JSX.Element;
|
|
14
|
+
/**
|
|
15
|
+
* Four-quadrant matrix (priority matrix, Eisenhower, BCG, ...): tinted
|
|
16
|
+
* quadrants with titles, dividers, and labelled dots placed without
|
|
17
|
+
* overlapping labels. Dots can be dragged to another quadrant.
|
|
18
|
+
*/
|
|
19
|
+
export declare function QuadrantChart(props: QuadrantChartProps): import('react').JSX.Element;
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { part as e } from "../../internal/parts.js";
|
|
2
|
+
import { barSeries as t, lineSeries as n, quadrantChartOptions as r, quadrantOf as i, scatterSeries as a } from "../../charts/src/engine/presets.js";
|
|
3
|
+
import "../../charts/src/canvas.js";
|
|
4
|
+
import { ChartBase as o, engineOptions as s } from "./ChartBase.js";
|
|
5
|
+
import { useMemo as c } from "react";
|
|
6
|
+
import { View as l } from "react-native";
|
|
7
|
+
import { jsx as u } from "react/jsx-runtime";
|
|
8
|
+
//#region src/components/Chart/charts.tsx
|
|
9
|
+
function d(e, t) {
|
|
10
|
+
let { xAxis: n, yAxis: r, legend: i, tooltip: a, crosshair: o, annotations: l, interaction: u, padding: d, palette: f, ariaLabel: p } = e;
|
|
11
|
+
return c(() => s({
|
|
12
|
+
series: t,
|
|
13
|
+
xAxis: n,
|
|
14
|
+
yAxis: r,
|
|
15
|
+
legend: i,
|
|
16
|
+
tooltip: a,
|
|
17
|
+
crosshair: o,
|
|
18
|
+
annotations: l,
|
|
19
|
+
interaction: u,
|
|
20
|
+
padding: d,
|
|
21
|
+
palette: f,
|
|
22
|
+
ariaLabel: p
|
|
23
|
+
}), [
|
|
24
|
+
t,
|
|
25
|
+
n,
|
|
26
|
+
r,
|
|
27
|
+
i,
|
|
28
|
+
a,
|
|
29
|
+
o,
|
|
30
|
+
l,
|
|
31
|
+
u,
|
|
32
|
+
d,
|
|
33
|
+
f,
|
|
34
|
+
p
|
|
35
|
+
]);
|
|
36
|
+
}
|
|
37
|
+
var f = (e) => ({
|
|
38
|
+
height: e.height,
|
|
39
|
+
width: e.width,
|
|
40
|
+
style: e.style,
|
|
41
|
+
testID: e.testID,
|
|
42
|
+
handleRef: e.ref,
|
|
43
|
+
onHover: e.onHover,
|
|
44
|
+
onPointClick: e.onPointClick,
|
|
45
|
+
onPlotClick: e.onPlotClick,
|
|
46
|
+
onZoom: e.onZoom,
|
|
47
|
+
renderTooltip: e.renderTooltip
|
|
48
|
+
});
|
|
49
|
+
function p(e) {
|
|
50
|
+
let t = d(e, e.series);
|
|
51
|
+
return /* @__PURE__ */ u(o, {
|
|
52
|
+
options: t,
|
|
53
|
+
...f(e)
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
function m(e) {
|
|
57
|
+
let { series: t, area: r = !1 } = e, i = d(e, c(() => n(t, r), [t, r]));
|
|
58
|
+
return /* @__PURE__ */ u(o, {
|
|
59
|
+
options: i,
|
|
60
|
+
...f(e)
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
function h(e) {
|
|
64
|
+
let { series: n, stacked: r = !1 } = e, i = d(e, c(() => t(n, r), [n, r]));
|
|
65
|
+
return /* @__PURE__ */ u(o, {
|
|
66
|
+
options: i,
|
|
67
|
+
...f(e)
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
function g(e) {
|
|
71
|
+
let { series: t } = e, n = d(e, c(() => a(t), [t]));
|
|
72
|
+
return /* @__PURE__ */ u(o, {
|
|
73
|
+
options: n,
|
|
74
|
+
...f(e)
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
var _ = [
|
|
78
|
+
"topLeft",
|
|
79
|
+
"topRight",
|
|
80
|
+
"bottomLeft",
|
|
81
|
+
"bottomRight"
|
|
82
|
+
], v = [];
|
|
83
|
+
function y(t) {
|
|
84
|
+
let { points: n, xDomain: a, yDomain: s, xSplit: p, ySplit: m, quadrants: h, xLabel: g, yLabel: y, axisLabels: b, showTicks: x, reverseX: S, showLabels: C, pointSize: w, name: T, draggable: E, onPointClick: D, onPointDrop: O, onQuadrantClick: k, renderTooltip: A, quadrantContent: j } = t, M = d(t, v), N = E ?? !!O, P = c(() => r({
|
|
85
|
+
points: n,
|
|
86
|
+
xDomain: a,
|
|
87
|
+
yDomain: s,
|
|
88
|
+
xSplit: p,
|
|
89
|
+
ySplit: m,
|
|
90
|
+
quadrants: h,
|
|
91
|
+
xLabel: g,
|
|
92
|
+
yLabel: y,
|
|
93
|
+
axisLabels: b,
|
|
94
|
+
showTicks: x,
|
|
95
|
+
reverseX: S,
|
|
96
|
+
showLabels: C,
|
|
97
|
+
pointSize: w,
|
|
98
|
+
name: T,
|
|
99
|
+
draggable: N
|
|
100
|
+
}, M), [
|
|
101
|
+
n,
|
|
102
|
+
a,
|
|
103
|
+
s,
|
|
104
|
+
p,
|
|
105
|
+
m,
|
|
106
|
+
h,
|
|
107
|
+
g,
|
|
108
|
+
y,
|
|
109
|
+
b,
|
|
110
|
+
x,
|
|
111
|
+
S,
|
|
112
|
+
C,
|
|
113
|
+
w,
|
|
114
|
+
T,
|
|
115
|
+
N,
|
|
116
|
+
M
|
|
117
|
+
]), F = {
|
|
118
|
+
xDomain: a,
|
|
119
|
+
yDomain: s,
|
|
120
|
+
xSplit: p,
|
|
121
|
+
ySplit: m,
|
|
122
|
+
reverseX: S
|
|
123
|
+
}, I = j ? (t) => {
|
|
124
|
+
let [n, r] = a ?? [0, 10], [i, o] = s ?? [0, 10], c = p ?? (n + r) / 2, d = m ?? (i + o) / 2, f = (c - n) / (r - n || 1), h = (d - i) / (o - i || 1), g = t.width * (S ? 1 - f : f), v = t.height * (1 - h);
|
|
125
|
+
return _.map((n) => {
|
|
126
|
+
let r = j[n];
|
|
127
|
+
if (r == null || r === !1) return null;
|
|
128
|
+
let i = n.endsWith("Left"), a = n.startsWith("top");
|
|
129
|
+
return /* @__PURE__ */ u(l, {
|
|
130
|
+
pointerEvents: "box-none",
|
|
131
|
+
style: {
|
|
132
|
+
position: "absolute",
|
|
133
|
+
left: i ? 0 : g,
|
|
134
|
+
top: a ? 0 : v,
|
|
135
|
+
width: i ? g : t.width - g,
|
|
136
|
+
height: a ? v : t.height - v
|
|
137
|
+
},
|
|
138
|
+
...e("chart", "quadrant", { corner: n }),
|
|
139
|
+
children: r
|
|
140
|
+
}, n);
|
|
141
|
+
});
|
|
142
|
+
} : void 0;
|
|
143
|
+
return /* @__PURE__ */ u(o, {
|
|
144
|
+
options: P,
|
|
145
|
+
...f({
|
|
146
|
+
...t,
|
|
147
|
+
onPointClick: void 0,
|
|
148
|
+
renderTooltip: void 0
|
|
149
|
+
}),
|
|
150
|
+
overlay: I,
|
|
151
|
+
onPointClick: D ? (e) => {
|
|
152
|
+
let t = e.items[0]?.index;
|
|
153
|
+
t !== void 0 && n[t] && D(n[t], t);
|
|
154
|
+
} : void 0,
|
|
155
|
+
onPlotClick: k ? (e) => k(i(F, e.x, e.y), e) : void 0,
|
|
156
|
+
onDrop: O ? (e) => {
|
|
157
|
+
let t = e.item.index;
|
|
158
|
+
n[t] && O(n[t], t, {
|
|
159
|
+
x: e.x,
|
|
160
|
+
y: e.y,
|
|
161
|
+
quadrant: i(F, e.x, e.y)
|
|
162
|
+
});
|
|
163
|
+
} : void 0,
|
|
164
|
+
renderTooltip: A ? (e) => {
|
|
165
|
+
let t = e.items[0]?.index;
|
|
166
|
+
return t !== void 0 && n[t] ? A(n[t], t) : null;
|
|
167
|
+
} : void 0
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
//#endregion
|
|
171
|
+
export { h as BarChart, p as Chart, m as LineChart, y as QuadrantChart, g as ScatterChart };
|
|
172
|
+
|
|
173
|
+
//# sourceMappingURL=charts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"charts.js","names":["useEngineOptions","props","useMemo","engineOptions","series","xAxis","yAxis","legend","tooltip","crosshair","annotations","interaction","padding","palette","ariaLabel","frameProps","Chart","options","ChartBase","LineChart","input","lineSeries","area","BarChart","barSeries","stacked","ScatterChart","scatterSeries","CORNERS","NO_SERIES","QuadrantChart","base","dragPoints","draggable","onPointDrop","quadrantChartOptions","points","xDomain","yDomain","xSplit","ySplit","quadrants","xLabel","yLabel","axisLabels","showTicks","reverseX","showLabels","pointSize","name","geometry","overlay","quadrantContent","x0","x1","y0","y1","xs","ys","fx","fy","sx","plot","sy","content","corner","left","top","View","part","onPointClick","index","event","onQuadrantClick","quadrantOf","at","renderTooltip"],"sources":["../../../../../native/src/components/Chart/charts.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { View } from \"react-native\";\nimport {\n barSeries,\n lineSeries,\n quadrantChartOptions,\n quadrantOf,\n scatterSeries,\n type ChartHoverEvent,\n type ChartOptions,\n type ChartRect,\n type ChartSeries,\n type QuadrantCorner,\n} from \"@minerva/charts/canvas\";\nimport { part } from \"../../internal/parts\";\nimport { ChartBase, engineOptions } from \"./ChartBase\";\nimport type {\n BarChartProps,\n ChartCommonProps,\n ChartProps,\n LineChartProps,\n QuadrantChartProps,\n ScatterChartProps,\n} from \"./types\";\n\n/** Engine options of the common props, kept while the props are the same */\nfunction useEngineOptions(\n props: Omit<\n ChartCommonProps,\n \"onPointClick\" | \"onPlotClick\" | \"renderTooltip\"\n >,\n series: readonly ChartSeries[],\n): ChartOptions {\n const {\n xAxis,\n yAxis,\n legend,\n tooltip,\n crosshair,\n annotations,\n interaction,\n padding,\n palette,\n ariaLabel,\n } = props;\n return useMemo(\n () =>\n engineOptions({\n series,\n xAxis,\n yAxis,\n legend,\n tooltip,\n crosshair,\n annotations,\n interaction,\n padding,\n palette,\n ariaLabel,\n }),\n [\n series,\n xAxis,\n yAxis,\n legend,\n tooltip,\n crosshair,\n annotations,\n interaction,\n padding,\n palette,\n ariaLabel,\n ],\n );\n}\n\nconst frameProps = (props: ChartCommonProps) => ({\n height: props.height,\n width: props.width,\n style: props.style,\n testID: props.testID,\n handleRef: props.ref,\n onHover: props.onHover,\n onPointClick: props.onPointClick,\n onPlotClick: props.onPlotClick,\n onZoom: props.onZoom,\n renderTooltip: props.renderTooltip,\n});\n\n/**\n * Chart mixing line, area, bar and scatter series, drawn with views:\n * tap for the tooltip, pinch to zoom, drag to pan, double tap to reset.\n * Themed by the closest `MinervaProvider` (light / dark).\n */\nexport function Chart(props: ChartProps) {\n const options = useEngineOptions(props, props.series);\n return <ChartBase options={options} {...frameProps(props)} />;\n}\n\n/** Line (or area) chart; large series are decimated to the pixel columns */\nexport function LineChart(props: LineChartProps) {\n const { series: input, area = false } = props;\n const series = useMemo(() => lineSeries(input, area), [input, area]);\n const options = useEngineOptions(props, series);\n return <ChartBase options={options} {...frameProps(props)} />;\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 const options = useEngineOptions(props, series);\n return <ChartBase options={options} {...frameProps(props)} />;\n}\n\n/** Scatter chart: zooms on both axes; large point sets are merged per cell */\nexport function ScatterChart(props: ScatterChartProps) {\n const { series: input } = props;\n const series = useMemo(() => scatterSeries(input), [input]);\n const options = useEngineOptions(props, series);\n return <ChartBase options={options} {...frameProps(props)} />;\n}\n\nconst CORNERS: QuadrantCorner[] = [\n \"topLeft\",\n \"topRight\",\n \"bottomLeft\",\n \"bottomRight\",\n];\n\nconst NO_SERIES: readonly ChartSeries[] = [];\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 base = useEngineOptions(props, NO_SERIES);\n const dragPoints = draggable ?? !!onPointDrop;\n const options = useMemo(\n () =>\n 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: dragPoints,\n },\n base,\n ),\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 dragPoints,\n base,\n ],\n );\n const geometry = { xDomain, yDomain, xSplit, ySplit, reverseX };\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 // split point relative to the plot area\n const sx = plot.width * (reverseX ? 1 - fx : fx);\n const sy = plot.height * (1 - fy);\n return CORNERS.map((corner) => {\n const content = quadrantContent[corner];\n if (content === undefined || content === null || content === false)\n return null;\n const left = corner.endsWith(\"Left\");\n const top = corner.startsWith(\"top\");\n return (\n <View\n key={corner}\n pointerEvents=\"box-none\"\n style={{\n position: \"absolute\",\n left: left ? 0 : sx,\n top: top ? 0 : sy,\n width: left ? sx : plot.width - sx,\n height: top ? sy : plot.height - sy,\n }}\n {...part(\"chart\", \"quadrant\", { corner })}\n >\n {content}\n </View>\n );\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: ChartHoverEvent) => {\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 @@
|
|
|
1
|
+
const e=require("./charts.cjs");exports.BarChart=e.BarChart,exports.Chart=e.Chart,exports.LineChart=e.LineChart,exports.QuadrantChart=e.QuadrantChart,exports.ScatterChart=e.ScatterChart;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=/^\s*(?:(\d{3}|bold|normal)\s+)?([\d.]+)px/,t=e=>e>=4352&&e<=4447||e>=11904&&e<=42191||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65072&&e<=65103||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=126976,n=new Set(" il.,:;'|!Ijtfr()[]`"),r=new Set(`MWmw@%`),i=e=>t(e.codePointAt(0)??0)?1:n.has(e)?.3:r.has(e)?.82:e>=`0`&&e<=`9`?.56:e>=`A`&&e<=`Z`?.66:.55;function a(t,n){let r=e.exec(n),a=r?.[1],o=a===`bold`?700:a&&a!==`normal`?+a:400,s=r?Number(r[2]):11,c=0;for(let e of t)c+=i(e);return c*s*(o>=600?1.07:o>=500?1.03:1)}exports.measureChartText=a;
|
|
2
|
+
//# sourceMappingURL=measure.cjs.map
|