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,419 @@
|
|
|
1
|
+
import { part as e } from "../../internal/parts.js";
|
|
2
|
+
import { toCss as t } from "../../charts/src/engine/color.js";
|
|
3
|
+
import { scenePrimitives as n } from "../../charts/src/engine/controller.js";
|
|
4
|
+
import "../../charts/src/canvas.js";
|
|
5
|
+
import { measureChartText as r } from "./measure.js";
|
|
6
|
+
import { StyleSheet as i, Text as a, View as o } from "react-native";
|
|
7
|
+
import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
8
|
+
//#region src/components/Chart/scene.tsx
|
|
9
|
+
var u = {
|
|
10
|
+
linePoints: 1200,
|
|
11
|
+
dotsPerSeries: 800,
|
|
12
|
+
dots: 2e3,
|
|
13
|
+
barsPerSeries: 600,
|
|
14
|
+
bars: 1500,
|
|
15
|
+
areaColumns: 200,
|
|
16
|
+
dashes: 200
|
|
17
|
+
}, d = "chart", f = (e) => Math.ceil(e * 1.35), p = (e, t) => Math.ceil(r(e, `${t.weight ?? 400} ${t.size}px sans-serif`) * 1.4 + t.size * 2);
|
|
18
|
+
function m(e, t, n, r, i, o, s, l, u) {
|
|
19
|
+
let d = f(s.size), m = (d - s.size) / 2, h = p(t, s), g = o === "top" ? r - m : o === "bottom" ? r - d + m : r - d / 2, _ = i === "left" ? {
|
|
20
|
+
left: n,
|
|
21
|
+
width: h
|
|
22
|
+
} : i === "right" ? {
|
|
23
|
+
right: l - n,
|
|
24
|
+
width: h
|
|
25
|
+
} : {
|
|
26
|
+
left: n - h / 2,
|
|
27
|
+
width: h
|
|
28
|
+
};
|
|
29
|
+
return /* @__PURE__ */ c(a, {
|
|
30
|
+
numberOfLines: 1,
|
|
31
|
+
style: [{
|
|
32
|
+
position: "absolute",
|
|
33
|
+
top: g,
|
|
34
|
+
..._,
|
|
35
|
+
textAlign: i,
|
|
36
|
+
fontSize: s.size,
|
|
37
|
+
lineHeight: d,
|
|
38
|
+
color: s.color,
|
|
39
|
+
fontWeight: String(s.weight ?? 400),
|
|
40
|
+
includeFontPadding: !1,
|
|
41
|
+
...s.family ? { fontFamily: s.family } : null,
|
|
42
|
+
...s.halo ? {
|
|
43
|
+
textShadowColor: s.halo,
|
|
44
|
+
textShadowRadius: 3,
|
|
45
|
+
textShadowOffset: {
|
|
46
|
+
width: 0,
|
|
47
|
+
height: 0
|
|
48
|
+
}
|
|
49
|
+
} : null
|
|
50
|
+
}, u],
|
|
51
|
+
children: t
|
|
52
|
+
}, e);
|
|
53
|
+
}
|
|
54
|
+
var h = (e, t, n, r, i, a, s) => /* @__PURE__ */ c(o, { style: [{
|
|
55
|
+
position: "absolute",
|
|
56
|
+
left: t,
|
|
57
|
+
top: n,
|
|
58
|
+
width: r,
|
|
59
|
+
height: i,
|
|
60
|
+
backgroundColor: a
|
|
61
|
+
}, s] }, e), g = (e, t, n, r, i, a) => h(e, t - r / 2, n - r / 2, r, r, i, {
|
|
62
|
+
borderRadius: r / 2,
|
|
63
|
+
...a
|
|
64
|
+
}), _ = (e, t, n, r, i, a, o) => {
|
|
65
|
+
let s = r - t, c = i - n, l = Math.hypot(s, c) + a;
|
|
66
|
+
return h(e, (t + r) / 2 - l / 2, (n + i) / 2 - a / 2, l, a, o, {
|
|
67
|
+
borderRadius: a / 2,
|
|
68
|
+
transform: [{ rotate: `${Math.atan2(c, s)}rad` }]
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
function v(e, t, n = u.dashes) {
|
|
72
|
+
let r = t.filter((e) => Number.isFinite(e) && e >= 0);
|
|
73
|
+
r.length % 2 && (r = [...r, ...r]);
|
|
74
|
+
let i = r.reduce((e, t) => e + t, 0);
|
|
75
|
+
if (!r.length || i <= 0) return [[0, e]];
|
|
76
|
+
let a = e / i * (r.length / 2), o = a > n ? a / n : 1, s = [], c = 0;
|
|
77
|
+
for (let t = 0; c < e; t = (t + 1) % r.length) {
|
|
78
|
+
let n = r[t] * o;
|
|
79
|
+
t % 2 == 0 && n > 0 && s.push([c, Math.min(n, e - c)]), c += Math.max(n, .5);
|
|
80
|
+
}
|
|
81
|
+
return s;
|
|
82
|
+
}
|
|
83
|
+
var y = (e, t, n, r, i, a, o, s) => v(i, s).map(([i, s], c) => t === "y" ? h(`${e}-${c}`, r + i, n, s, a, o) : h(`${e}-${c}`, n, r + i, a, s, o)), b = (e, t = 1) => Math.round(e) + .5 - t / 2;
|
|
84
|
+
function x(e, t) {
|
|
85
|
+
let n = e.length / 2, r = n > t ? Math.ceil(n / t) : 1, i = [];
|
|
86
|
+
for (let t = 0; t < n; t += r) {
|
|
87
|
+
let n = e[t * 2], r = e[t * 2 + 1], a = i.length;
|
|
88
|
+
a && Math.hypot(n - i[a - 2], r - i[a - 1]) < 1.5 || i.push(n, r);
|
|
89
|
+
}
|
|
90
|
+
let a = e[n * 2 - 2], o = e[n * 2 - 1], s = i.length;
|
|
91
|
+
return n > 1 && (i[s - 2] !== a || i[s - 1] !== o) && i.push(a, o), i;
|
|
92
|
+
}
|
|
93
|
+
function S(e, t, n, r, i, a) {
|
|
94
|
+
let o = t.length / 2;
|
|
95
|
+
if (o < 2) return [];
|
|
96
|
+
let s = t[0] <= t[o * 2 - 2], c = (e) => t[(s ? e : o - 1 - e) * 2], l = (e) => t[(s ? e : o - 1 - e) * 2 + 1], d = Math.max(a.x, c(0)), f = Math.min(a.x + a.width, c(o - 1));
|
|
97
|
+
if (f <= d) return [];
|
|
98
|
+
let p = Math.max(2, a.width / u.areaColumns), m = [], g = 0;
|
|
99
|
+
for (let t = Math.floor(d), s = 0; t < f; s++) {
|
|
100
|
+
let u = Math.min(Math.ceil(f), Math.round(t + p)), d = (t + u) / 2;
|
|
101
|
+
for (; g < o - 2 && c(g + 1) < d;) g++;
|
|
102
|
+
let _ = c(g), v = c(g + 1), y = v === _ ? 0 : Math.max(0, Math.min(1, (d - _) / (v - _))), b = l(g) + (l(g + 1) - l(g)) * y;
|
|
103
|
+
if (Number.isFinite(b)) {
|
|
104
|
+
let o = Math.min(b, n);
|
|
105
|
+
m.push(h(`${e}-${s}`, t - a.x, o - a.y, u - t, Math.abs(n - b), r, { opacity: i }));
|
|
106
|
+
}
|
|
107
|
+
t = u;
|
|
108
|
+
}
|
|
109
|
+
return m;
|
|
110
|
+
}
|
|
111
|
+
function C(e) {
|
|
112
|
+
let { plot: t } = e.layout, n = e.model.series.filter((e) => !e.hidden), r = n.filter((e) => e.type === "line" || e.type === "area").length, i = n.filter((e) => e.type === "scatter").length, a = Math.max(150, u.linePoints / Math.max(1, r)), o = Math.max(100, Math.min(u.dotsPerSeries, u.dots / Math.max(1, i)));
|
|
113
|
+
return {
|
|
114
|
+
perLine: a,
|
|
115
|
+
options: {
|
|
116
|
+
columnWidth: Math.max(3, t.width * 4 / a),
|
|
117
|
+
maxDots: o,
|
|
118
|
+
maxBars: u.barsPerSeries,
|
|
119
|
+
dotCell: Math.max(4, Math.sqrt(t.width * t.height / o) * 1.15 + 1)
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
function w(e) {
|
|
124
|
+
let { plot: t } = e.layout, { perLine: r, options: i } = C(e), a = n(e, i), o = t.x, s = t.y, c = [], l = u.dots, d = u.bars;
|
|
125
|
+
return a.forEach((e, n) => {
|
|
126
|
+
let i = `${e.kind}${e.seriesIndex}-${n}`;
|
|
127
|
+
if (e.kind === "area") {
|
|
128
|
+
e.segments.forEach((n, r) => c.push(...S(`${i}-${r}`, n, e.baseline, e.color, e.opacity, t)));
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
if (e.kind === "line") {
|
|
132
|
+
let t = 0;
|
|
133
|
+
for (let n of e.segments) t += n.length / 2;
|
|
134
|
+
e.segments.forEach((n, a) => {
|
|
135
|
+
let l = x(n, Math.max(2, Math.round(r * n.length / 2 / Math.max(1, t))));
|
|
136
|
+
if (l.length === 2) {
|
|
137
|
+
c.push(g(`${i}-${a}`, l[0] - o, l[1] - s, e.width * 1.5, e.color));
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
for (let t = 0; t + 3 < l.length; t += 2) c.push(_(`${i}-${a}-${t}`, l[t] - o, l[t + 1] - s, l[t + 2] - o, l[t + 3] - s, e.width, e.color));
|
|
141
|
+
});
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
if (e.kind === "bars") {
|
|
145
|
+
let t = e.rects.length / 4, n = t > d ? Math.ceil(t / Math.max(1, d)) : 1;
|
|
146
|
+
for (let r = 0; r < t; r += n) {
|
|
147
|
+
let [t, n, a, l] = e.rects.slice(r * 4, r * 4 + 4);
|
|
148
|
+
c.push(h(`${i}-${r}`, t - o, n - s, Math.max(a, .5), l, e.color));
|
|
149
|
+
}
|
|
150
|
+
d = Math.max(0, d - Math.ceil(t / n));
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
let a = e.dots.length / 3, u = a > l ? Math.ceil(a / Math.max(1, l)) : 1;
|
|
154
|
+
for (let t = 0; t < a; t += u) c.push(g(`${i}-${t}`, e.dots[t * 3] - o, e.dots[t * 3 + 1] - s, e.dots[t * 3 + 2], e.colors[t], { opacity: e.opacity }));
|
|
155
|
+
l = Math.max(0, l - Math.ceil(a / u));
|
|
156
|
+
}), c;
|
|
157
|
+
}
|
|
158
|
+
var T = (e, t) => {
|
|
159
|
+
let { plot: n } = t, r = e.x0 === void 0 ? -Infinity : t.xToPx(e.x0), i = e.x1 === void 0 ? Infinity : t.xToPx(e.x1), a = e.y0 === void 0 ? Infinity : t.yToPx(e.y0), o = e.y1 === void 0 ? -Infinity : t.yToPx(e.y1), s = Math.max(n.x, Math.min(r, i)), c = Math.min(n.x + n.width, Math.max(r, i)), l = Math.max(n.y, Math.min(a, o)), u = Math.min(n.y + n.height, Math.max(a, o));
|
|
160
|
+
return {
|
|
161
|
+
x: s,
|
|
162
|
+
y: l,
|
|
163
|
+
width: c - s,
|
|
164
|
+
height: u - l
|
|
165
|
+
};
|
|
166
|
+
}, E = (e, t, n, r) => {
|
|
167
|
+
let { plot: i } = t, a = e.x === void 0 ? i.x + i.width / 2 : t.xToPx(e.x), o = e.y === void 0 ? i.y + i.height / 2 : t.yToPx(e.y), s = a - n / 2, c = o - r / 2;
|
|
168
|
+
return e.anchor === "top" ? c = o + 6 : e.anchor === "bottom" ? c = o - 6 - r : e.anchor === "left" ? s = a + 6 : e.anchor === "right" && (s = a - 6 - n), s = Math.max(i.x + 6, Math.min(s, i.x + i.width - 6 - n)), c = Math.max(i.y + 2, Math.min(c, i.y + i.height - 2 - r)), {
|
|
169
|
+
x: s,
|
|
170
|
+
y: c,
|
|
171
|
+
width: n,
|
|
172
|
+
height: r
|
|
173
|
+
};
|
|
174
|
+
}, D = (e, n) => t(e, n);
|
|
175
|
+
function O(t, n) {
|
|
176
|
+
let { width: i, theme: a, model: s, layout: c, annotations: u } = t, { plot: f, scales: p, xTicks: _, yTicks: v } = c, y = a.fontSize, x = [];
|
|
177
|
+
u.forEach((e, t) => {
|
|
178
|
+
if (e.type !== "rect") return;
|
|
179
|
+
let n = T(e, p);
|
|
180
|
+
n.width <= 0 || n.height <= 0 || x.push(h(`area-${t}`, n.x, n.y, n.width, n.height, D(e.color, e.opacity)));
|
|
181
|
+
});
|
|
182
|
+
let S = D(a.grid);
|
|
183
|
+
s.y.grid && v.values.forEach((e, t) => {
|
|
184
|
+
let n = p.yToPx(e);
|
|
185
|
+
n < f.y - 1 || n > f.y + f.height + 1 || x.push(h(`ygrid-${t}`, f.x, b(n), f.width, 1, S));
|
|
186
|
+
}), s.x.grid && _.values.forEach((e, t) => {
|
|
187
|
+
let n = p.xToPx(e);
|
|
188
|
+
n < f.x - 1 || n > f.x + f.width + 1 || x.push(h(`xgrid-${t}`, b(n), f.y, 1, f.height, S));
|
|
189
|
+
});
|
|
190
|
+
let C = Math.ceil(y * 1.4), w = {
|
|
191
|
+
size: y,
|
|
192
|
+
color: D(a.textMuted),
|
|
193
|
+
family: n
|
|
194
|
+
}, E = {
|
|
195
|
+
size: y + 1,
|
|
196
|
+
weight: 500,
|
|
197
|
+
color: D(a.text, .8),
|
|
198
|
+
family: n
|
|
199
|
+
}, O = f.y + f.height;
|
|
200
|
+
if (s.x.visible) {
|
|
201
|
+
x.push(h("xaxis", f.x, b(O), f.width, 1, D(a.axis)));
|
|
202
|
+
let e = -Infinity;
|
|
203
|
+
_.values.map((e, t) => ({
|
|
204
|
+
px: p.xToPx(e),
|
|
205
|
+
text: _.labels[t] ?? ""
|
|
206
|
+
})).sort((e, t) => e.px - t.px).forEach(({ px: t, text: n }, a) => {
|
|
207
|
+
if (!n || t < f.x - .5 || t > f.x + f.width + .5) return;
|
|
208
|
+
let o = r(n, `400 ${y}px sans-serif`), s = Math.max(0, Math.min(i - o, t - o / 2));
|
|
209
|
+
s < e + 6 || (e = s + o, x.push(m(`xtick-${a}`, n, s + o / 2, O + 7, "center", "top", w, i)));
|
|
210
|
+
}), s.x.title && x.push(m("xtitle", s.x.title, f.x + f.width / 2, O + C + 10, "center", "top", E, i));
|
|
211
|
+
}
|
|
212
|
+
if (s.y.visible && (v.values.forEach((e, t) => {
|
|
213
|
+
let n = p.yToPx(e), r = v.labels[t];
|
|
214
|
+
!r || n < f.y - .5 || n > f.y + f.height + .5 || x.push(m(`ytick-${t}`, r, f.x - 8, n, "right", "middle", w, i));
|
|
215
|
+
}), s.y.title && x.push(m("ytitle", s.y.title, C / 2 + 4, f.y + f.height / 2, "center", "middle", E, i, { transform: [{ rotate: "-90deg" }] }))), t.legend) for (let r of t.legend.entries) {
|
|
216
|
+
let t = r.box.height / 2, i = r.shape === "dot" ? g("swatch", 5, t, 8, r.color) : r.shape === "line" ? h("swatch", 0, t - 1, 10, 2, r.color) : h("swatch", 1, t - 4, 8, 8, r.color);
|
|
217
|
+
x.push(/* @__PURE__ */ l(o, {
|
|
218
|
+
style: {
|
|
219
|
+
position: "absolute",
|
|
220
|
+
left: r.box.x,
|
|
221
|
+
top: r.box.y,
|
|
222
|
+
width: r.box.width,
|
|
223
|
+
height: r.box.height,
|
|
224
|
+
opacity: r.hidden ? .45 : 1
|
|
225
|
+
},
|
|
226
|
+
...e(d, "legend-item", { hidden: r.hidden }),
|
|
227
|
+
children: [i, m("name", r.name, 14, t, "left", "middle", {
|
|
228
|
+
size: 12,
|
|
229
|
+
color: D(a.textMuted),
|
|
230
|
+
family: n
|
|
231
|
+
}, r.box.width, r.hidden ? { textDecorationLine: "line-through" } : void 0)]
|
|
232
|
+
}, `legend-${r.id}`));
|
|
233
|
+
}
|
|
234
|
+
return x;
|
|
235
|
+
}
|
|
236
|
+
function k(e, t) {
|
|
237
|
+
let { theme: n, annotations: i, layout: a } = e, { plot: o, scales: s } = a, c = n.fontSize, l = o.x, u = o.y, d = o.width, f = D(n.background, .9), p = c + 4, h = [];
|
|
238
|
+
i.forEach((e, n) => {
|
|
239
|
+
if (e.type !== "line") return;
|
|
240
|
+
let r = D(e.color);
|
|
241
|
+
if (e.axis === "y") {
|
|
242
|
+
let i = s.yToPx(e.value);
|
|
243
|
+
h.push(...y(`line-${n}`, "y", b(i, e.width) - u, 0, o.width, e.width, r, e.dash)), e.label && h.push(m(`line-label-${n}`, e.label, o.width - 6, i - 3 - u, "right", "bottom", {
|
|
244
|
+
size: c,
|
|
245
|
+
weight: 500,
|
|
246
|
+
color: r,
|
|
247
|
+
halo: f,
|
|
248
|
+
family: t
|
|
249
|
+
}, d));
|
|
250
|
+
} else {
|
|
251
|
+
let i = s.xToPx(e.value);
|
|
252
|
+
h.push(...y(`line-${n}`, "x", b(i, e.width) - l, 0, o.height, e.width, r, e.dash)), e.label && h.push(m(`line-label-${n}`, e.label, i + 5 - l, 5, "left", "top", {
|
|
253
|
+
size: c,
|
|
254
|
+
weight: 500,
|
|
255
|
+
color: r,
|
|
256
|
+
halo: f,
|
|
257
|
+
family: t
|
|
258
|
+
}, d));
|
|
259
|
+
}
|
|
260
|
+
}), i.forEach((e, n) => {
|
|
261
|
+
if (e.type !== "rect" || !e.label) return;
|
|
262
|
+
let r = T(e, s);
|
|
263
|
+
if (r.width <= 0 || r.height <= 0) return;
|
|
264
|
+
let i = e.labelPosition, a = i.endsWith("left") ? "left" : i.endsWith("right") ? "right" : "center", o = a === "left" ? r.x + 10 : a === "right" ? r.x + r.width - 10 : r.x + r.width / 2, f = i.startsWith("top") ? r.y + 10 : i.startsWith("bottom") ? r.y + r.height - 10 - p : r.y + (r.height - p) / 2;
|
|
265
|
+
h.push(m(`area-label-${n}`, e.label, o - l, f - u, a, "top", {
|
|
266
|
+
size: c + 1,
|
|
267
|
+
weight: 600,
|
|
268
|
+
color: D(e.labelColor),
|
|
269
|
+
family: t
|
|
270
|
+
}, d));
|
|
271
|
+
}), i.forEach((e, n) => {
|
|
272
|
+
if (e.type !== "text" || !e.text) return;
|
|
273
|
+
let i = r(e.text, `${e.weight} ${c}px sans-serif`), a = E(e, s, i, p);
|
|
274
|
+
h.push(m(`text-${n}`, e.text, a.x - l, a.y + a.height / 2 - u, "left", "middle", {
|
|
275
|
+
size: c,
|
|
276
|
+
weight: e.weight,
|
|
277
|
+
color: D(e.color),
|
|
278
|
+
halo: f,
|
|
279
|
+
family: t
|
|
280
|
+
}, d));
|
|
281
|
+
});
|
|
282
|
+
let g = D(n.text, .85);
|
|
283
|
+
return e.pointLabels.forEach(({ label: e, box: n }, r) => {
|
|
284
|
+
h.push(m(`point-label-${r}`, e.text, n.x - l, n.y + n.height / 2 - u, "left", "middle", {
|
|
285
|
+
size: c,
|
|
286
|
+
color: g,
|
|
287
|
+
halo: f,
|
|
288
|
+
family: t
|
|
289
|
+
}, d));
|
|
290
|
+
}), h;
|
|
291
|
+
}
|
|
292
|
+
var A = (e) => ({
|
|
293
|
+
position: "absolute",
|
|
294
|
+
left: e.x,
|
|
295
|
+
top: e.y,
|
|
296
|
+
width: e.width,
|
|
297
|
+
height: e.height,
|
|
298
|
+
overflow: "hidden"
|
|
299
|
+
});
|
|
300
|
+
function j(t, n) {
|
|
301
|
+
let { plot: r } = t.layout;
|
|
302
|
+
return /* @__PURE__ */ l(s, { children: [
|
|
303
|
+
O(t, n),
|
|
304
|
+
/* @__PURE__ */ c(o, {
|
|
305
|
+
style: A(r),
|
|
306
|
+
...e(d, "data"),
|
|
307
|
+
children: w(t)
|
|
308
|
+
}, "data"),
|
|
309
|
+
/* @__PURE__ */ c(o, {
|
|
310
|
+
style: A(r),
|
|
311
|
+
...e(d, "labels"),
|
|
312
|
+
children: k(t, n)
|
|
313
|
+
}, "labels")
|
|
314
|
+
] });
|
|
315
|
+
}
|
|
316
|
+
function M(t, n, r) {
|
|
317
|
+
let { theme: s, layout: u, hover: f, dragging: p } = t, { plot: m } = u, _ = D(s.background), v = [];
|
|
318
|
+
f && f.crosshairX !== null && v.push(/* @__PURE__ */ c(o, {
|
|
319
|
+
style: i.absoluteFill,
|
|
320
|
+
...e(d, "crosshair"),
|
|
321
|
+
children: y("dash", "x", Math.round(f.crosshairX), m.y, m.height, 1, D(s.textMuted, .55), [3, 3])
|
|
322
|
+
}, "crosshair")), f?.marks.forEach((e, t) => {
|
|
323
|
+
v.push(e.kind === "bar" ? h(`mark-${t}`, e.x - 2, e.y - 2, e.width + 4, e.height + 2, D(s.text, .08)) : g(`mark-${t}`, e.x, e.y, e.size + 2, e.color, {
|
|
324
|
+
borderWidth: 2,
|
|
325
|
+
borderColor: _
|
|
326
|
+
}));
|
|
327
|
+
}), p && v.push(/* @__PURE__ */ c(o, {
|
|
328
|
+
...e(d, "drag"),
|
|
329
|
+
style: i.absoluteFill,
|
|
330
|
+
children: g("ghost", p.x, p.y, p.size + 2, p.color, {
|
|
331
|
+
opacity: .85,
|
|
332
|
+
borderWidth: 2,
|
|
333
|
+
borderColor: _
|
|
334
|
+
})
|
|
335
|
+
}, "drag"));
|
|
336
|
+
let b = f?.tooltip;
|
|
337
|
+
if (b && !r) {
|
|
338
|
+
let { box: r, lineHeight: i, padding: u, content: f } = b, p = D(s.text), m = D(s.textMuted), h = (e, t) => ({
|
|
339
|
+
fontSize: 12,
|
|
340
|
+
lineHeight: i,
|
|
341
|
+
color: t,
|
|
342
|
+
fontWeight: String(e),
|
|
343
|
+
includeFontPadding: !1,
|
|
344
|
+
...n ? { fontFamily: n } : null
|
|
345
|
+
}), g = (e) => /* @__PURE__ */ c(o, { style: {
|
|
346
|
+
width: 8,
|
|
347
|
+
height: 8,
|
|
348
|
+
borderRadius: 4,
|
|
349
|
+
marginRight: 6,
|
|
350
|
+
backgroundColor: e
|
|
351
|
+
} }), _ = {
|
|
352
|
+
height: i,
|
|
353
|
+
flexDirection: "row",
|
|
354
|
+
alignItems: "center"
|
|
355
|
+
};
|
|
356
|
+
v.push(/* @__PURE__ */ c(o, {
|
|
357
|
+
...e(d, "tooltip"),
|
|
358
|
+
style: [N(t), {
|
|
359
|
+
left: r.x,
|
|
360
|
+
top: r.y,
|
|
361
|
+
width: r.width,
|
|
362
|
+
height: r.height,
|
|
363
|
+
paddingHorizontal: u + 1,
|
|
364
|
+
paddingVertical: u - 1
|
|
365
|
+
}],
|
|
366
|
+
children: b.text ? b.text.map((e, t) => /* @__PURE__ */ c(a, {
|
|
367
|
+
numberOfLines: 1,
|
|
368
|
+
style: h(400, p),
|
|
369
|
+
children: e
|
|
370
|
+
}, t)) : [/* @__PURE__ */ l(o, {
|
|
371
|
+
style: _,
|
|
372
|
+
children: [f.titleColor ? g(f.titleColor) : null, /* @__PURE__ */ c(a, {
|
|
373
|
+
numberOfLines: 1,
|
|
374
|
+
style: [h(600, p), { flexShrink: 1 }],
|
|
375
|
+
children: f.title
|
|
376
|
+
})]
|
|
377
|
+
}, "title"), ...f.rows.map((e, t) => /* @__PURE__ */ l(o, {
|
|
378
|
+
style: _,
|
|
379
|
+
children: [
|
|
380
|
+
e.color ? g(e.color) : null,
|
|
381
|
+
/* @__PURE__ */ c(a, {
|
|
382
|
+
numberOfLines: 1,
|
|
383
|
+
style: [h(400, m), { flexShrink: 1 }],
|
|
384
|
+
children: e.name
|
|
385
|
+
}),
|
|
386
|
+
/* @__PURE__ */ c(a, {
|
|
387
|
+
numberOfLines: 1,
|
|
388
|
+
style: [h(600, p), {
|
|
389
|
+
flexGrow: 1,
|
|
390
|
+
marginLeft: 16,
|
|
391
|
+
textAlign: "right"
|
|
392
|
+
}],
|
|
393
|
+
children: e.value
|
|
394
|
+
})
|
|
395
|
+
]
|
|
396
|
+
}, t))]
|
|
397
|
+
}, "tooltip"));
|
|
398
|
+
}
|
|
399
|
+
return v;
|
|
400
|
+
}
|
|
401
|
+
var N = (e) => ({
|
|
402
|
+
position: "absolute",
|
|
403
|
+
backgroundColor: D(e.theme.background),
|
|
404
|
+
borderColor: D(e.theme.axis),
|
|
405
|
+
borderWidth: 1,
|
|
406
|
+
borderRadius: 8,
|
|
407
|
+
shadowColor: "#0f172a",
|
|
408
|
+
shadowOpacity: .18,
|
|
409
|
+
shadowRadius: 8,
|
|
410
|
+
shadowOffset: {
|
|
411
|
+
width: 0,
|
|
412
|
+
height: 6
|
|
413
|
+
},
|
|
414
|
+
elevation: 6
|
|
415
|
+
});
|
|
416
|
+
//#endregion
|
|
417
|
+
export { u as SHAPE_BUDGET, v as dashRuns, M as drawHover, j as drawStatic, C as primitiveLimits, N as tooltipCard };
|
|
418
|
+
|
|
419
|
+
//# sourceMappingURL=scene.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene.js","names":["_Fragment","SHAPE_BUDGET","C","lineHeightOf","size","slack","measureChartText","text","o","label","lh","pad","w","top","valign","y","horizontal","align","x","frameWidth","Text","extra","key","box","View","color","dot","cx","d","cy","segment","dx","x2","x1","dy","y2","y1","length","width","dashRuns","pattern","dash","v","period","a","b","runs","scale","max","out","at","i","step","dashedLine","start","run","axis","from","crisp","thin","stride","k","lx","ly","areaStrips","n","forward","xs","ys","plot","to","column","j","left","c","right","mid","x0","t","baseline","primitiveLimits","scene","visible","s","lines","scatters","perLine","maxDots","drawData","primitives","scenePrimitives","options","ox","oy","dotsLeft","barsLeft","p","total","pts","r","count","h","rectOf","xa","xb","ya","yb","bottom","textBox","px","py","height","css","toCss","alpha","drawBackground","layout","fs","theme","scales","grid","model","yTicks","xTicks","line","tick","title","lastRight","e","swatch","part","drawForeground","fw","halo","labelHeight","annotations","pos","tx","ty","pointColor","l","clip","drawStatic","Fragment","family","drawHover","background","hover","StyleSheet","m","dragging","tip","customTooltip","muted","font","weight","row","lineHeight","tooltipCard","padding","content"],"sources":["../../../../../native/src/components/Chart/scene.tsx"],"sourcesContent":["// Draws a chart scene (`ChartController.getScene()`) with plain views: no\n// canvas, SVG or native drawing module. The engine already resolves every\n// position in pixels; this file only turns them into absolutely positioned\n// <View> / <Text> elements, keeping the number of views bounded by the size\n// of the chart (lines decimated per column, dots merged per cell, bars\n// merged per pixel column), whatever the size of the data.\n\nimport type { ReactElement, ReactNode } from \"react\";\nimport {\n StyleSheet,\n Text,\n View,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport {\n scenePrimitives,\n toCss,\n type ChartPrimitive,\n type ChartRect,\n type ChartScene,\n} from \"@minerva/charts/canvas\";\nimport { part } from \"../../internal/parts\";\nimport { measureChartText } from \"./measure\";\n\ntype Rgba = ChartScene[\"theme\"][\"text\"];\ntype Annotation = ChartScene[\"annotations\"][number];\ntype RectAnnotation = Extract<Annotation, { type: \"rect\" }>;\ntype TextAnnotation = Extract<Annotation, { type: \"text\" }>;\ntype Scales = ChartScene[\"layout\"][\"scales\"];\n\n/** Upper bounds of the views drawn for the data of a chart */\nexport const SHAPE_BUDGET = {\n /** Points of all the lines (one view per segment) */\n linePoints: 1200,\n /** Dots of one scatter series before they are merged per cell */\n dotsPerSeries: 800,\n /** Dots of all the series */\n dots: 2000,\n /** Bars of one series before neighbors are merged per pixel column */\n barsPerSeries: 600,\n /** Bars of all the series */\n bars: 1500,\n /** Vertical strips filling one area */\n areaColumns: 200,\n /** Dashes of one dashed line */\n dashes: 200,\n} as const;\n\nconst C = \"chart\";\n\n// ------------------------------------------------------------------ text\n\ninterface TextOptions {\n size: number;\n color: string;\n weight?: number;\n family?: string;\n /** Halo color: keeps the text readable over the data */\n halo?: string;\n}\n\ntype Align = \"left\" | \"center\" | \"right\";\ntype VAlign = \"top\" | \"middle\" | \"bottom\";\n\nconst lineHeightOf = (size: number) => Math.ceil(size * 1.35);\n\n/** Box wide enough for the estimated width (the real one may differ) */\nconst slack = (text: string, o: TextOptions) =>\n Math.ceil(\n measureChartText(text, `${o.weight ?? 400} ${o.size}px sans-serif`) * 1.4 +\n o.size * 2,\n );\n\n/**\n * A one-line text anchored at (x, y) of a container `frameWidth` wide:\n * `left` starts there, `right` ends there, `center` is centered on it;\n * `top` / `bottom` place the em box like the canvas text baselines\n */\nfunction label(\n key: string,\n text: string,\n x: number,\n y: number,\n align: Align,\n valign: VAlign,\n o: TextOptions,\n frameWidth: number,\n extra?: TextStyle,\n): ReactElement {\n const lh = lineHeightOf(o.size);\n const pad = (lh - o.size) / 2;\n const w = slack(text, o);\n const top =\n valign === \"top\"\n ? y - pad\n : valign === \"bottom\"\n ? y - lh + pad\n : y - lh / 2;\n const horizontal: TextStyle =\n align === \"left\"\n ? { left: x, width: w }\n : align === \"right\"\n ? { right: frameWidth - x, width: w }\n : { left: x - w / 2, width: w };\n return (\n <Text\n key={key}\n numberOfLines={1}\n style={[\n {\n position: \"absolute\",\n top,\n ...horizontal,\n textAlign: align,\n fontSize: o.size,\n lineHeight: lh,\n color: o.color,\n fontWeight: String(o.weight ?? 400) as TextStyle[\"fontWeight\"],\n includeFontPadding: false,\n ...(o.family ? { fontFamily: o.family } : null),\n ...(o.halo\n ? {\n textShadowColor: o.halo,\n textShadowRadius: 3,\n textShadowOffset: { width: 0, height: 0 },\n }\n : null),\n },\n extra,\n ]}\n >\n {text}\n </Text>\n );\n}\n\n// ---------------------------------------------------------------- shapes\n\nconst box = (\n key: string,\n x: number,\n y: number,\n width: number,\n height: number,\n color: string,\n extra?: ViewStyle,\n): ReactElement => (\n <View\n key={key}\n style={[\n {\n position: \"absolute\",\n left: x,\n top: y,\n width,\n height,\n backgroundColor: color,\n },\n extra,\n ]}\n />\n);\n\nconst dot = (\n key: string,\n cx: number,\n cy: number,\n d: number,\n color: string,\n extra?: ViewStyle,\n) =>\n box(key, cx - d / 2, cy - d / 2, d, d, color, {\n borderRadius: d / 2,\n ...extra,\n });\n\n/** A straight stroke: one view, rotated around its center */\nconst segment = (\n key: string,\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n width: number,\n color: string,\n) => {\n const dx = x2 - x1;\n const dy = y2 - y1;\n const length = Math.hypot(dx, dy) + width;\n return box(\n key,\n (x1 + x2) / 2 - length / 2,\n (y1 + y2) / 2 - width / 2,\n length,\n width,\n color,\n {\n borderRadius: width / 2,\n transform: [{ rotate: `${Math.atan2(dy, dx)}rad` }],\n },\n );\n};\n\n/** Dash runs `[start, length]` along a line (canvas `setLineDash` pattern) */\nexport function dashRuns(\n length: number,\n dash: readonly number[],\n max: number = SHAPE_BUDGET.dashes,\n): [number, number][] {\n let pattern = dash.filter((v) => Number.isFinite(v) && v >= 0);\n // odd patterns repeat twice, like the canvas\n if (pattern.length % 2) pattern = [...pattern, ...pattern];\n const period = pattern.reduce((a, b) => a + b, 0);\n if (!pattern.length || period <= 0) return [[0, length]];\n const runs = (length / period) * (pattern.length / 2);\n const scale = runs > max ? runs / max : 1;\n const out: [number, number][] = [];\n let at = 0;\n for (let i = 0; at < length; i = (i + 1) % pattern.length) {\n const step = pattern[i] * scale;\n if (i % 2 === 0 && step > 0) out.push([at, Math.min(step, length - at)]);\n at += Math.max(step, 0.5);\n }\n return out;\n}\n\nconst dashedLine = (\n key: string,\n axis: \"x\" | \"y\",\n at: number,\n from: number,\n length: number,\n width: number,\n color: string,\n dash: readonly number[],\n) =>\n dashRuns(length, dash).map(([start, run], i) =>\n axis === \"y\"\n ? box(`${key}-${i}`, from + start, at, run, width, color)\n : box(`${key}-${i}`, at, from + start, width, run, color),\n );\n\nconst crisp = (v: number, width = 1) => Math.round(v) + 0.5 - width / 2;\n\n// ------------------------------------------------------------------ data\n\n/** Thins a run of interleaved points to `max` points and drops sub-pixel steps */\nfunction thin(run: readonly number[], max: number): number[] {\n const n = run.length / 2;\n const stride = n > max ? Math.ceil(n / max) : 1;\n const out: number[] = [];\n for (let i = 0; i < n; i += stride) {\n const x = run[i * 2];\n const y = run[i * 2 + 1];\n const k = out.length;\n if (k && Math.hypot(x - out[k - 2], y - out[k - 1]) < 1.5) continue;\n out.push(x, y);\n }\n const lx = run[n * 2 - 2];\n const ly = run[n * 2 - 1];\n const k = out.length;\n if (n > 1 && (out[k - 2] !== lx || out[k - 1] !== ly)) out.push(lx, ly);\n return out;\n}\n\n/** Vertical strips between the line and the baseline, one per column */\nfunction areaStrips(\n key: string,\n run: readonly number[],\n baseline: number,\n color: string,\n opacity: number,\n plot: ChartRect,\n): ReactElement[] {\n const n = run.length / 2;\n if (n < 2) return [];\n // left to right (reversed axes list their points right to left)\n const forward = run[0] <= run[n * 2 - 2];\n const xs = (i: number) => run[(forward ? i : n - 1 - i) * 2];\n const ys = (i: number) => run[(forward ? i : n - 1 - i) * 2 + 1];\n const from = Math.max(plot.x, xs(0));\n const to = Math.min(plot.x + plot.width, xs(n - 1));\n if (to <= from) return [];\n const column = Math.max(2, plot.width / SHAPE_BUDGET.areaColumns);\n const out: ReactElement[] = [];\n let j = 0;\n for (let left = Math.floor(from), c = 0; left < to; c++) {\n const right = Math.min(Math.ceil(to), Math.round(left + column));\n const mid = (left + right) / 2;\n while (j < n - 2 && xs(j + 1) < mid) j++;\n const x0 = xs(j);\n const x1 = xs(j + 1);\n const t = x1 === x0 ? 0 : Math.max(0, Math.min(1, (mid - x0) / (x1 - x0)));\n const y = ys(j) + (ys(j + 1) - ys(j)) * t;\n if (Number.isFinite(y)) {\n const top = Math.min(y, baseline);\n out.push(\n box(\n `${key}-${c}`,\n left - plot.x,\n top - plot.y,\n right - left,\n Math.abs(baseline - y),\n color,\n {\n opacity,\n },\n ),\n );\n }\n left = right;\n }\n return out;\n}\n\n/** Limits of `scenePrimitives` for the views budget */\nexport function primitiveLimits(scene: ChartScene) {\n const { plot } = scene.layout;\n const visible = scene.model.series.filter((s) => !s.hidden);\n const lines = visible.filter(\n (s) => s.type === \"line\" || s.type === \"area\",\n ).length;\n const scatters = visible.filter((s) => s.type === \"scatter\").length;\n const perLine = Math.max(150, SHAPE_BUDGET.linePoints / Math.max(1, lines));\n const maxDots = Math.max(\n 100,\n Math.min(\n SHAPE_BUDGET.dotsPerSeries,\n SHAPE_BUDGET.dots / Math.max(1, scatters),\n ),\n );\n return {\n perLine,\n options: {\n // decimation keeps up to 4 points per column\n columnWidth: Math.max(3, (plot.width * 4) / perLine),\n maxDots,\n maxBars: SHAPE_BUDGET.barsPerSeries,\n dotCell: Math.max(\n 4,\n Math.sqrt((plot.width * plot.height) / maxDots) * 1.15 + 1,\n ),\n },\n };\n}\n\nfunction drawData(scene: ChartScene): ReactElement[] {\n const { plot } = scene.layout;\n const { perLine, options } = primitiveLimits(scene);\n const primitives: ChartPrimitive[] = scenePrimitives(scene, options);\n const ox = plot.x;\n const oy = plot.y;\n const out: ReactElement[] = [];\n let dotsLeft: number = SHAPE_BUDGET.dots;\n let barsLeft: number = SHAPE_BUDGET.bars;\n primitives.forEach((p, k) => {\n const key = `${p.kind}${p.seriesIndex}-${k}`;\n if (p.kind === \"area\") {\n p.segments.forEach((run, r) =>\n out.push(\n ...areaStrips(\n `${key}-${r}`,\n run,\n p.baseline,\n p.color,\n p.opacity,\n plot,\n ),\n ),\n );\n return;\n }\n if (p.kind === \"line\") {\n let total = 0;\n for (const run of p.segments) total += run.length / 2;\n p.segments.forEach((run, r) => {\n const pts = thin(\n run,\n Math.max(\n 2,\n Math.round((perLine * run.length) / 2 / Math.max(1, total)),\n ),\n );\n if (pts.length === 2) {\n out.push(\n dot(\n `${key}-${r}`,\n pts[0] - ox,\n pts[1] - oy,\n p.width * 1.5,\n p.color,\n ),\n );\n return;\n }\n for (let i = 0; i + 3 < pts.length; i += 2) {\n out.push(\n segment(\n `${key}-${r}-${i}`,\n pts[i] - ox,\n pts[i + 1] - oy,\n pts[i + 2] - ox,\n pts[i + 3] - oy,\n p.width,\n p.color,\n ),\n );\n }\n });\n return;\n }\n if (p.kind === \"bars\") {\n const count = p.rects.length / 4;\n const stride =\n count > barsLeft ? Math.ceil(count / Math.max(1, barsLeft)) : 1;\n for (let i = 0; i < count; i += stride) {\n const [x, y, w, h] = p.rects.slice(i * 4, i * 4 + 4);\n out.push(\n box(`${key}-${i}`, x - ox, y - oy, Math.max(w, 0.5), h, p.color),\n );\n }\n barsLeft = Math.max(0, barsLeft - Math.ceil(count / stride));\n return;\n }\n const count = p.dots.length / 3;\n const stride =\n count > dotsLeft ? Math.ceil(count / Math.max(1, dotsLeft)) : 1;\n for (let i = 0; i < count; i += stride) {\n out.push(\n dot(\n `${key}-${i}`,\n p.dots[i * 3] - ox,\n p.dots[i * 3 + 1] - oy,\n p.dots[i * 3 + 2],\n p.colors[i],\n {\n opacity: p.opacity,\n },\n ),\n );\n }\n dotsLeft = Math.max(0, dotsLeft - Math.ceil(count / stride));\n });\n return out;\n}\n\n// ------------------------------------------------------------ background\n\nconst rectOf = (a: RectAnnotation, s: Scales): ChartRect => {\n const { plot } = s;\n const xa = a.x0 === undefined ? -Infinity : s.xToPx(a.x0);\n const xb = a.x1 === undefined ? Infinity : s.xToPx(a.x1);\n const ya = a.y0 === undefined ? Infinity : s.yToPx(a.y0);\n const yb = a.y1 === undefined ? -Infinity : s.yToPx(a.y1);\n const left = Math.max(plot.x, Math.min(xa, xb));\n const right = Math.min(plot.x + plot.width, Math.max(xa, xb));\n const top = Math.max(plot.y, Math.min(ya, yb));\n const bottom = Math.min(plot.y + plot.height, Math.max(ya, yb));\n return { x: left, y: top, width: right - left, height: bottom - top };\n};\n\n/** Box of a text annotation, kept inside the plot (engine `textBox`) */\nconst textBox = (\n a: TextAnnotation,\n s: Scales,\n width: number,\n height: number,\n): ChartRect => {\n const { plot } = s;\n const px = a.x === undefined ? plot.x + plot.width / 2 : s.xToPx(a.x);\n const py = a.y === undefined ? plot.y + plot.height / 2 : s.yToPx(a.y);\n const gap = 6;\n let x = px - width / 2;\n let y = py - height / 2;\n if (a.anchor === \"top\") y = py + gap;\n else if (a.anchor === \"bottom\") y = py - gap - height;\n else if (a.anchor === \"left\") x = px + gap;\n else if (a.anchor === \"right\") x = px - gap - width;\n x = Math.max(plot.x + gap, Math.min(x, plot.x + plot.width - gap - width));\n y = Math.max(plot.y + 2, Math.min(y, plot.y + plot.height - 2 - height));\n return { x, y, width, height };\n};\n\nconst css = (c: Rgba, alpha?: number) => toCss(c, alpha);\n\nfunction drawBackground(scene: ChartScene, family?: string): ReactElement[] {\n const { width, theme, model, layout, annotations } = scene;\n const { plot, scales, xTicks, yTicks } = layout;\n const fs = theme.fontSize;\n const out: ReactElement[] = [];\n\n annotations.forEach((a, i) => {\n if (a.type !== \"rect\") return;\n const r = rectOf(a, scales);\n if (r.width <= 0 || r.height <= 0) return;\n out.push(\n box(`area-${i}`, r.x, r.y, r.width, r.height, css(a.color, a.opacity)),\n );\n });\n\n const grid = css(theme.grid);\n if (model.y.grid) {\n yTicks.values.forEach((v, i) => {\n const py = scales.yToPx(v);\n if (py < plot.y - 1 || py > plot.y + plot.height + 1) return;\n out.push(box(`ygrid-${i}`, plot.x, crisp(py), plot.width, 1, grid));\n });\n }\n if (model.x.grid) {\n xTicks.values.forEach((v, i) => {\n const px = scales.xToPx(v);\n if (px < plot.x - 1 || px > plot.x + plot.width + 1) return;\n out.push(box(`xgrid-${i}`, crisp(px), plot.y, 1, plot.height, grid));\n });\n }\n\n const line = Math.ceil(fs * 1.4);\n const tick: TextOptions = { size: fs, color: css(theme.textMuted), family };\n const title: TextOptions = {\n size: fs + 1,\n weight: 500,\n color: css(theme.text, 0.8),\n family,\n };\n const bottom = plot.y + plot.height;\n\n if (model.x.visible) {\n out.push(\n box(\"xaxis\", plot.x, crisp(bottom), plot.width, 1, css(theme.axis)),\n );\n let lastRight = -Infinity;\n xTicks.values\n .map((v, i) => ({ px: scales.xToPx(v), text: xTicks.labels[i] ?? \"\" }))\n .sort((a, b) => a.px - b.px)\n .forEach(({ px, text }, i) => {\n if (!text || px < plot.x - 0.5 || px > plot.x + plot.width + 0.5)\n return;\n const w = measureChartText(text, `400 ${fs}px sans-serif`);\n const left = Math.max(0, Math.min(width - w, px - w / 2));\n if (left < lastRight + 6) return;\n lastRight = left + w;\n out.push(\n label(\n `xtick-${i}`,\n text,\n left + w / 2,\n bottom + 7,\n \"center\",\n \"top\",\n tick,\n width,\n ),\n );\n });\n if (model.x.title)\n out.push(\n label(\n \"xtitle\",\n model.x.title,\n plot.x + plot.width / 2,\n bottom + line + 10,\n \"center\",\n \"top\",\n title,\n width,\n ),\n );\n }\n\n if (model.y.visible) {\n yTicks.values.forEach((v, i) => {\n const py = scales.yToPx(v);\n const text = yTicks.labels[i];\n if (!text || py < plot.y - 0.5 || py > plot.y + plot.height + 0.5) return;\n out.push(\n label(\n `ytick-${i}`,\n text,\n plot.x - 8,\n py,\n \"right\",\n \"middle\",\n tick,\n width,\n ),\n );\n });\n if (model.y.title)\n out.push(\n label(\n \"ytitle\",\n model.y.title,\n line / 2 + 4,\n plot.y + plot.height / 2,\n \"center\",\n \"middle\",\n title,\n width,\n {\n transform: [{ rotate: \"-90deg\" }],\n },\n ),\n );\n }\n\n if (scene.legend) {\n for (const e of scene.legend.entries) {\n // coordinates relative to the entry box\n const cy = e.box.height / 2;\n const swatch =\n e.shape === \"dot\"\n ? dot(\"swatch\", 5, cy, 8, e.color)\n : e.shape === \"line\"\n ? box(\"swatch\", 0, cy - 1, 10, 2, e.color)\n : box(\"swatch\", 1, cy - 4, 8, 8, e.color);\n out.push(\n <View\n key={`legend-${e.id}`}\n style={{\n position: \"absolute\",\n left: e.box.x,\n top: e.box.y,\n width: e.box.width,\n height: e.box.height,\n opacity: e.hidden ? 0.45 : 1,\n }}\n {...part(C, \"legend-item\", { hidden: e.hidden })}\n >\n {swatch}\n {label(\n \"name\",\n e.name,\n 14,\n cy,\n \"left\",\n \"middle\",\n { size: 12, color: css(theme.textMuted), family },\n e.box.width,\n e.hidden ? { textDecorationLine: \"line-through\" } : undefined,\n )}\n </View>,\n );\n }\n }\n return out;\n}\n\n// ------------------------------------------------------------ foreground\n\nfunction drawForeground(scene: ChartScene, family?: string): ReactElement[] {\n const { theme, annotations, layout } = scene;\n const { plot, scales } = layout;\n const fs = theme.fontSize;\n const ox = plot.x;\n const oy = plot.y;\n const fw = plot.width;\n const halo = css(theme.background, 0.9);\n const labelHeight = fs + 4;\n const out: ReactElement[] = [];\n\n annotations.forEach((a, i) => {\n if (a.type !== \"line\") return;\n const color = css(a.color);\n if (a.axis === \"y\") {\n const py = scales.yToPx(a.value);\n out.push(\n ...dashedLine(\n `line-${i}`,\n \"y\",\n crisp(py, a.width) - oy,\n 0,\n plot.width,\n a.width,\n color,\n a.dash,\n ),\n );\n if (a.label)\n out.push(\n label(\n `line-label-${i}`,\n a.label,\n plot.width - 6,\n py - 3 - oy,\n \"right\",\n \"bottom\",\n { size: fs, weight: 500, color, halo, family },\n fw,\n ),\n );\n } else {\n const px = scales.xToPx(a.value);\n out.push(\n ...dashedLine(\n `line-${i}`,\n \"x\",\n crisp(px, a.width) - ox,\n 0,\n plot.height,\n a.width,\n color,\n a.dash,\n ),\n );\n if (a.label)\n out.push(\n label(\n `line-label-${i}`,\n a.label,\n px + 5 - ox,\n 5,\n \"left\",\n \"top\",\n { size: fs, weight: 500, color, halo, family },\n fw,\n ),\n );\n }\n });\n\n annotations.forEach((a, i) => {\n if (a.type !== \"rect\" || !a.label) return;\n const r = rectOf(a, scales);\n if (r.width <= 0 || r.height <= 0) return;\n const pad = 10;\n const pos = a.labelPosition;\n const align: Align = pos.endsWith(\"left\")\n ? \"left\"\n : pos.endsWith(\"right\")\n ? \"right\"\n : \"center\";\n const tx =\n align === \"left\"\n ? r.x + pad\n : align === \"right\"\n ? r.x + r.width - pad\n : r.x + r.width / 2;\n const ty = pos.startsWith(\"top\")\n ? r.y + pad\n : pos.startsWith(\"bottom\")\n ? r.y + r.height - pad - labelHeight\n : r.y + (r.height - labelHeight) / 2;\n out.push(\n label(\n `area-label-${i}`,\n a.label,\n tx - ox,\n ty - oy,\n align,\n \"top\",\n { size: fs + 1, weight: 600, color: css(a.labelColor), family },\n fw,\n ),\n );\n });\n\n annotations.forEach((a, i) => {\n if (a.type !== \"text\" || !a.text) return;\n const w = measureChartText(a.text, `${a.weight} ${fs}px sans-serif`);\n const b = textBox(a, scales, w, labelHeight);\n out.push(\n label(\n `text-${i}`,\n a.text,\n b.x - ox,\n b.y + b.height / 2 - oy,\n \"left\",\n \"middle\",\n { size: fs, weight: a.weight, color: css(a.color), halo, family },\n fw,\n ),\n );\n });\n\n const pointColor = css(theme.text, 0.85);\n scene.pointLabels.forEach(({ label: l, box: b }, i) => {\n out.push(\n label(\n `point-label-${i}`,\n l.text,\n b.x - ox,\n b.y + b.height / 2 - oy,\n \"left\",\n \"middle\",\n { size: fs, color: pointColor, halo, family },\n fw,\n ),\n );\n });\n return out;\n}\n\nconst clip = (plot: ChartRect): ViewStyle => ({\n position: \"absolute\",\n left: plot.x,\n top: plot.y,\n width: plot.width,\n height: plot.height,\n overflow: \"hidden\",\n});\n\n/**\n * Everything but the hover state: axes, grid, legend, annotations, data and\n * labels (cached by the caller while the model, view and size are the same)\n */\nexport function drawStatic(scene: ChartScene, family?: string): ReactNode {\n const { plot } = scene.layout;\n return (\n <>\n {drawBackground(scene, family)}\n <View key=\"data\" style={clip(plot)} {...part(C, \"data\")}>\n {drawData(scene)}\n </View>\n <View key=\"labels\" style={clip(plot)} {...part(C, \"labels\")}>\n {drawForeground(scene, family)}\n </View>\n </>\n );\n}\n\n/** Crosshair, highlighted points, dragged point and the default tooltip */\nexport function drawHover(\n scene: ChartScene,\n family: string | undefined,\n customTooltip: boolean,\n): ReactNode {\n const { theme, layout, hover, dragging } = scene;\n const { plot } = layout;\n const background = css(theme.background);\n const out: ReactElement[] = [];\n if (hover && hover.crosshairX !== null) {\n out.push(\n <View\n key=\"crosshair\"\n style={StyleSheet.absoluteFill}\n {...part(C, \"crosshair\")}\n >\n {dashedLine(\n \"dash\",\n \"x\",\n Math.round(hover.crosshairX),\n plot.y,\n plot.height,\n 1,\n css(theme.textMuted, 0.55),\n [3, 3],\n )}\n </View>,\n );\n }\n hover?.marks.forEach((m, i) => {\n out.push(\n m.kind === \"bar\"\n ? box(\n `mark-${i}`,\n m.x - 2,\n m.y - 2,\n m.width + 4,\n m.height + 2,\n css(theme.text, 0.08),\n )\n : dot(`mark-${i}`, m.x, m.y, m.size + 2, m.color, {\n borderWidth: 2,\n borderColor: background,\n }),\n );\n });\n if (dragging) {\n out.push(\n <View key=\"drag\" {...part(C, \"drag\")} style={StyleSheet.absoluteFill}>\n {dot(\n \"ghost\",\n dragging.x,\n dragging.y,\n dragging.size + 2,\n dragging.color,\n {\n opacity: 0.85,\n borderWidth: 2,\n borderColor: background,\n },\n )}\n </View>,\n );\n }\n const tip = hover?.tooltip;\n if (tip && !customTooltip) {\n const { box: b, lineHeight, padding, content } = tip;\n const text = css(theme.text);\n const muted = css(theme.textMuted);\n const font = (weight: number, color: string): TextStyle => ({\n fontSize: 12,\n lineHeight,\n color,\n fontWeight: String(weight) as TextStyle[\"fontWeight\"],\n includeFontPadding: false,\n ...(family ? { fontFamily: family } : null),\n });\n const swatch = (color: string) => (\n <View\n style={{\n width: 8,\n height: 8,\n borderRadius: 4,\n marginRight: 6,\n backgroundColor: color,\n }}\n />\n );\n const row: ViewStyle = {\n height: lineHeight,\n flexDirection: \"row\",\n alignItems: \"center\",\n };\n out.push(\n <View\n key=\"tooltip\"\n {...part(C, \"tooltip\")}\n style={[\n tooltipCard(scene),\n {\n left: b.x,\n top: b.y,\n width: b.width,\n height: b.height,\n paddingHorizontal: padding + 1,\n paddingVertical: padding - 1,\n },\n ]}\n >\n {tip.text\n ? tip.text.map((t, i) => (\n <Text key={i} numberOfLines={1} style={font(400, text)}>\n {t}\n </Text>\n ))\n : [\n <View key=\"title\" style={row}>\n {content.titleColor ? swatch(content.titleColor) : null}\n <Text\n numberOfLines={1}\n style={[font(600, text), { flexShrink: 1 }]}\n >\n {content.title}\n </Text>\n </View>,\n ...content.rows.map((r, i) => (\n <View key={i} style={row}>\n {r.color ? swatch(r.color) : null}\n <Text\n numberOfLines={1}\n style={[font(400, muted), { flexShrink: 1 }]}\n >\n {r.name}\n </Text>\n <Text\n numberOfLines={1}\n style={[\n font(600, text),\n { flexGrow: 1, marginLeft: 16, textAlign: \"right\" },\n ]}\n >\n {r.value}\n </Text>\n </View>\n )),\n ]}\n </View>,\n );\n }\n return out;\n}\n\n/** Look of the tooltips (default and `renderTooltip` content) */\nexport const tooltipCard = (scene: ChartScene): ViewStyle => ({\n position: \"absolute\",\n backgroundColor: css(scene.theme.background),\n borderColor: css(scene.theme.axis),\n borderWidth: 1,\n borderRadius: 8,\n shadowColor: \"#0f172a\",\n shadowOpacity: 0.18,\n shadowRadius: 8,\n shadowOffset: { width: 0, height: 6 },\n elevation: 6,\n});\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.cjs","names":["chartThemeInput","variables","name","value","tokens"],"sources":["../../../../../native/src/components/Chart/theme.ts"],"sourcesContent":["import type { ChartThemeInput } from \"@minerva/charts/canvas\";\nimport type { ResolvedTokens } from \"@minerva/core\";\n\n/**\n * Theme of the chart engine from the resolved design tokens of the closest\n * `MinervaProvider`: every token becomes the CSS variable the web charts\n * read (`--surface-color`, `--text-color`, `--primary-color`,\n * `--chart-series-1`...), so light / dark modes, palettes and overrides\n * apply, and `var(--x)` colors of the options resolve.\n */\nexport function chartThemeInput(tokens: ResolvedTokens): ChartThemeInput {\n const variables: Record<string, string> = {};\n for (const [name, value] of Object.entries(tokens.css))\n variables[`--${name}`] = value;\n return { variables };\n}\n"],"mappings":"AAUA,SAAgBA,EAAgB,EAAyC,CACvE,IAAMC,EAAoC,CAAC,EAC3C,IAAK,GAAM,CAACC,EAAMC,KAAU,OAAO,QAAQC,EAAO,GAAG,EACnD,EAAU,KAAKF,KAAUC,EAC3B,MAAO,CAAE,WAAU,CACrB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ChartThemeInput } from '../../../charts/canvas.cjs';
|
|
2
|
+
import { ResolvedTokens } from '../../../core/index.cjs';
|
|
3
|
+
/**
|
|
4
|
+
* Theme of the chart engine from the resolved design tokens of the closest
|
|
5
|
+
* `MinervaProvider`: every token becomes the CSS variable the web charts
|
|
6
|
+
* read (`--surface-color`, `--text-color`, `--primary-color`,
|
|
7
|
+
* `--chart-series-1`...), so light / dark modes, palettes and overrides
|
|
8
|
+
* apply, and `var(--x)` colors of the options resolve.
|
|
9
|
+
*/
|
|
10
|
+
export declare function chartThemeInput(tokens: ResolvedTokens): ChartThemeInput;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ChartThemeInput } from '../../../charts/canvas.js';
|
|
2
|
+
import { ResolvedTokens } from '../../../core/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Theme of the chart engine from the resolved design tokens of the closest
|
|
5
|
+
* `MinervaProvider`: every token becomes the CSS variable the web charts
|
|
6
|
+
* read (`--surface-color`, `--text-color`, `--primary-color`,
|
|
7
|
+
* `--chart-series-1`...), so light / dark modes, palettes and overrides
|
|
8
|
+
* apply, and `var(--x)` colors of the options resolve.
|
|
9
|
+
*/
|
|
10
|
+
export declare function chartThemeInput(tokens: ResolvedTokens): ChartThemeInput;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.js","names":["chartThemeInput","variables","name","value","tokens"],"sources":["../../../../../native/src/components/Chart/theme.ts"],"sourcesContent":["import type { ChartThemeInput } from \"@minerva/charts/canvas\";\nimport type { ResolvedTokens } from \"@minerva/core\";\n\n/**\n * Theme of the chart engine from the resolved design tokens of the closest\n * `MinervaProvider`: every token becomes the CSS variable the web charts\n * read (`--surface-color`, `--text-color`, `--primary-color`,\n * `--chart-series-1`...), so light / dark modes, palettes and overrides\n * apply, and `var(--x)` colors of the options resolve.\n */\nexport function chartThemeInput(tokens: ResolvedTokens): ChartThemeInput {\n const variables: Record<string, string> = {};\n for (const [name, value] of Object.entries(tokens.css))\n variables[`--${name}`] = value;\n return { variables };\n}\n"],"mappings":";AAUA,SAAgBA,EAAgB,GAAyC;CACvE,IAAMC,IAAoC,CAAC;CAC3C,KAAK,IAAM,CAACC,GAAMC,MAAU,OAAO,QAAQC,EAAO,GAAG,GACnD,EAAU,KAAKF,OAAUC;CAC3B,OAAO,EAAE,aAAU;AACrB"}
|