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,189 @@
|
|
|
1
|
+
import { linearTicks as e, tickStep as t } from "./scale.js";
|
|
2
|
+
//#region ../charts/src/engine/time.ts
|
|
3
|
+
var n = 1e3, r = 60 * n, i = 60 * r, a = 24 * i, o = 30 * a, s = 365 * a, c = [
|
|
4
|
+
{
|
|
5
|
+
unit: "second",
|
|
6
|
+
step: 1,
|
|
7
|
+
ms: n
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
unit: "second",
|
|
11
|
+
step: 5,
|
|
12
|
+
ms: 5 * n
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
unit: "second",
|
|
16
|
+
step: 15,
|
|
17
|
+
ms: 15 * n
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
unit: "second",
|
|
21
|
+
step: 30,
|
|
22
|
+
ms: 30 * n
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
unit: "minute",
|
|
26
|
+
step: 1,
|
|
27
|
+
ms: r
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
unit: "minute",
|
|
31
|
+
step: 5,
|
|
32
|
+
ms: 5 * r
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
unit: "minute",
|
|
36
|
+
step: 15,
|
|
37
|
+
ms: 15 * r
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
unit: "minute",
|
|
41
|
+
step: 30,
|
|
42
|
+
ms: 30 * r
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
unit: "hour",
|
|
46
|
+
step: 1,
|
|
47
|
+
ms: i
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
unit: "hour",
|
|
51
|
+
step: 3,
|
|
52
|
+
ms: 3 * i
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
unit: "hour",
|
|
56
|
+
step: 6,
|
|
57
|
+
ms: 6 * i
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
unit: "hour",
|
|
61
|
+
step: 12,
|
|
62
|
+
ms: 12 * i
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
unit: "day",
|
|
66
|
+
step: 1,
|
|
67
|
+
ms: a
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
unit: "day",
|
|
71
|
+
step: 2,
|
|
72
|
+
ms: 2 * a
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
unit: "day",
|
|
76
|
+
step: 7,
|
|
77
|
+
ms: 7 * a
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
unit: "month",
|
|
81
|
+
step: 1,
|
|
82
|
+
ms: o
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
unit: "month",
|
|
86
|
+
step: 3,
|
|
87
|
+
ms: 3 * o
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
unit: "month",
|
|
91
|
+
step: 6,
|
|
92
|
+
ms: 6 * o
|
|
93
|
+
}
|
|
94
|
+
], l = (e, t = 2) => String(e).padStart(t, "0"), u = (e, r) => {
|
|
95
|
+
let i = e / Math.max(1, r);
|
|
96
|
+
if (i < n * .75) return {
|
|
97
|
+
unit: "millisecond",
|
|
98
|
+
step: t(0, e, r),
|
|
99
|
+
ms: 1
|
|
100
|
+
};
|
|
101
|
+
for (let e of c) if (e.ms >= i * .75) return e;
|
|
102
|
+
let a = Math.max(1, t(0, e / s, r));
|
|
103
|
+
return {
|
|
104
|
+
unit: "year",
|
|
105
|
+
step: Math.round(a),
|
|
106
|
+
ms: Math.round(a) * s
|
|
107
|
+
};
|
|
108
|
+
}, d = (e, { unit: t, step: n }) => {
|
|
109
|
+
let r = new Date(e);
|
|
110
|
+
switch (t) {
|
|
111
|
+
case "second":
|
|
112
|
+
r.setMilliseconds(0), r.setSeconds(r.getSeconds() - r.getSeconds() % n);
|
|
113
|
+
break;
|
|
114
|
+
case "minute":
|
|
115
|
+
r.setSeconds(0, 0), r.setMinutes(r.getMinutes() - r.getMinutes() % n);
|
|
116
|
+
break;
|
|
117
|
+
case "hour":
|
|
118
|
+
r.setMinutes(0, 0, 0), r.setHours(r.getHours() - r.getHours() % n);
|
|
119
|
+
break;
|
|
120
|
+
case "day":
|
|
121
|
+
r.setHours(0, 0, 0, 0), n === 7 && r.setDate(r.getDate() - (r.getDay() + 6) % 7);
|
|
122
|
+
break;
|
|
123
|
+
case "month":
|
|
124
|
+
r.setHours(0, 0, 0, 0), r.setDate(1), r.setMonth(r.getMonth() - r.getMonth() % n);
|
|
125
|
+
break;
|
|
126
|
+
case "year": r.setHours(0, 0, 0, 0), r.setMonth(0, 1), r.setFullYear(r.getFullYear() - r.getFullYear() % n);
|
|
127
|
+
}
|
|
128
|
+
return r;
|
|
129
|
+
}, f = (e, { unit: t, step: n }) => {
|
|
130
|
+
switch (t) {
|
|
131
|
+
case "second":
|
|
132
|
+
e.setSeconds(e.getSeconds() + n);
|
|
133
|
+
break;
|
|
134
|
+
case "minute":
|
|
135
|
+
e.setMinutes(e.getMinutes() + n);
|
|
136
|
+
break;
|
|
137
|
+
case "hour":
|
|
138
|
+
e.setHours(e.getHours() + n);
|
|
139
|
+
break;
|
|
140
|
+
case "day":
|
|
141
|
+
e.setDate(e.getDate() + n);
|
|
142
|
+
break;
|
|
143
|
+
case "month":
|
|
144
|
+
e.setMonth(e.getMonth() + n);
|
|
145
|
+
break;
|
|
146
|
+
case "year": e.setFullYear(e.getFullYear() + n);
|
|
147
|
+
}
|
|
148
|
+
}, p = (t, n, r) => {
|
|
149
|
+
t > n && ([t, n] = [n, t]);
|
|
150
|
+
let i = u(n - t, r);
|
|
151
|
+
if (i.unit === "millisecond") return {
|
|
152
|
+
values: e(t, n, r),
|
|
153
|
+
unit: "millisecond",
|
|
154
|
+
format: (e) => _(e, "millisecond")
|
|
155
|
+
};
|
|
156
|
+
let a = [], o = d(t, i);
|
|
157
|
+
for (; o.getTime() < t;) f(o, i);
|
|
158
|
+
for (; o.getTime() <= n && a.length < 500;) a.push(o.getTime()), f(o, i);
|
|
159
|
+
let { unit: s } = i;
|
|
160
|
+
return {
|
|
161
|
+
values: a,
|
|
162
|
+
unit: s,
|
|
163
|
+
format: (e) => g(e, s)
|
|
164
|
+
};
|
|
165
|
+
}, m = (e) => `${e.getFullYear()}-${l(e.getMonth() + 1)}-${l(e.getDate())}`, h = (e) => `${l(e.getHours())}:${l(e.getMinutes())}`, g = (e, t) => {
|
|
166
|
+
let n = new Date(e), r = n.getHours() === 0 && n.getMinutes() === 0 && n.getSeconds() === 0;
|
|
167
|
+
switch (t) {
|
|
168
|
+
case "second": return `${h(n)}:${l(n.getSeconds())}`;
|
|
169
|
+
case "minute":
|
|
170
|
+
case "hour": return r ? `${l(n.getMonth() + 1)}-${l(n.getDate())}` : h(n);
|
|
171
|
+
case "day": return n.getMonth() === 0 && n.getDate() === 1 ? String(n.getFullYear()) : `${l(n.getMonth() + 1)}-${l(n.getDate())}`;
|
|
172
|
+
case "month": return n.getMonth() === 0 ? String(n.getFullYear()) : `${n.getFullYear()}-${l(n.getMonth() + 1)}`;
|
|
173
|
+
default: return String(n.getFullYear());
|
|
174
|
+
}
|
|
175
|
+
}, _ = (e, t = "minute") => {
|
|
176
|
+
let n = new Date(e);
|
|
177
|
+
if (Number.isNaN(n.getTime())) return "–";
|
|
178
|
+
switch (t) {
|
|
179
|
+
case "millisecond": return `${m(n)} ${h(n)}:${l(n.getSeconds())}.${l(n.getMilliseconds(), 3)}`;
|
|
180
|
+
case "second": return `${m(n)} ${h(n)}:${l(n.getSeconds())}`;
|
|
181
|
+
case "minute":
|
|
182
|
+
case "hour": return `${m(n)} ${h(n)}`;
|
|
183
|
+
default: return m(n);
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
//#endregion
|
|
187
|
+
export { _ as formatTime, p as timeTicks };
|
|
188
|
+
|
|
189
|
+
//# sourceMappingURL=time.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.js","names":["SECOND","MINUTE","HOUR","DAY","MONTH","YEAR","INTERVALS","pad","n","width","chooseInterval","target","span","count","tickStep","interval","years","floorTo","d","t","unit","step","advance","timeTicks","min","max","linearTicks","formatTime","v","values","formatTick","ymd","hm","value","midnight"],"sources":["../../../../../../charts/src/engine/time.ts"],"sourcesContent":["// Ticks and labels of time axes (timestamps in ms, local time).\n\nimport { linearTicks, tickStep } from \"./scale\";\n\nconst SECOND = 1000;\nconst MINUTE = 60 * SECOND;\nconst HOUR = 60 * MINUTE;\nconst DAY = 24 * HOUR;\nconst MONTH = 30 * DAY;\nconst YEAR = 365 * DAY;\n\nexport type TimeUnit =\n \"millisecond\" | \"second\" | \"minute\" | \"hour\" | \"day\" | \"month\" | \"year\";\n\ninterface Interval {\n unit: TimeUnit;\n step: number;\n /** Approximate duration (ms) */\n ms: number;\n}\n\nconst INTERVALS: Interval[] = [\n { unit: \"second\", step: 1, ms: SECOND },\n { unit: \"second\", step: 5, ms: 5 * SECOND },\n { unit: \"second\", step: 15, ms: 15 * SECOND },\n { unit: \"second\", step: 30, ms: 30 * SECOND },\n { unit: \"minute\", step: 1, ms: MINUTE },\n { unit: \"minute\", step: 5, ms: 5 * MINUTE },\n { unit: \"minute\", step: 15, ms: 15 * MINUTE },\n { unit: \"minute\", step: 30, ms: 30 * MINUTE },\n { unit: \"hour\", step: 1, ms: HOUR },\n { unit: \"hour\", step: 3, ms: 3 * HOUR },\n { unit: \"hour\", step: 6, ms: 6 * HOUR },\n { unit: \"hour\", step: 12, ms: 12 * HOUR },\n { unit: \"day\", step: 1, ms: DAY },\n { unit: \"day\", step: 2, ms: 2 * DAY },\n { unit: \"day\", step: 7, ms: 7 * DAY },\n { unit: \"month\", step: 1, ms: MONTH },\n { unit: \"month\", step: 3, ms: 3 * MONTH },\n { unit: \"month\", step: 6, ms: 6 * MONTH },\n];\n\nconst pad = (n: number, width = 2) => String(n).padStart(width, \"0\");\n\nconst chooseInterval = (span: number, count: number): Interval => {\n const target = span / Math.max(1, count);\n if (target < SECOND * 0.75) {\n return { unit: \"millisecond\", step: tickStep(0, span, count), ms: 1 };\n }\n for (const interval of INTERVALS) {\n if (interval.ms >= target * 0.75) return interval;\n }\n const years = Math.max(1, tickStep(0, span / YEAR, count));\n return {\n unit: \"year\",\n step: Math.round(years),\n ms: Math.round(years) * YEAR,\n };\n};\n\n/** Start of the tick sequence: `t` floored to the unit, aligned on the step */\nconst floorTo = (t: number, { unit, step }: Interval): Date => {\n const d = new Date(t);\n switch (unit) {\n case \"second\":\n d.setMilliseconds(0);\n d.setSeconds(d.getSeconds() - (d.getSeconds() % step));\n break;\n case \"minute\":\n d.setSeconds(0, 0);\n d.setMinutes(d.getMinutes() - (d.getMinutes() % step));\n break;\n case \"hour\":\n d.setMinutes(0, 0, 0);\n d.setHours(d.getHours() - (d.getHours() % step));\n break;\n case \"day\":\n d.setHours(0, 0, 0, 0);\n // weeks start on Monday\n if (step === 7) d.setDate(d.getDate() - ((d.getDay() + 6) % 7));\n break;\n case \"month\":\n d.setHours(0, 0, 0, 0);\n d.setDate(1);\n d.setMonth(d.getMonth() - (d.getMonth() % step));\n break;\n case \"year\":\n d.setHours(0, 0, 0, 0);\n d.setMonth(0, 1);\n d.setFullYear(d.getFullYear() - (d.getFullYear() % step));\n break;\n default:\n break;\n }\n return d;\n};\n\nconst advance = (d: Date, { unit, step }: Interval) => {\n switch (unit) {\n case \"second\":\n d.setSeconds(d.getSeconds() + step);\n break;\n case \"minute\":\n d.setMinutes(d.getMinutes() + step);\n break;\n case \"hour\":\n d.setHours(d.getHours() + step);\n break;\n case \"day\":\n d.setDate(d.getDate() + step);\n break;\n case \"month\":\n d.setMonth(d.getMonth() + step);\n break;\n case \"year\":\n d.setFullYear(d.getFullYear() + step);\n break;\n default:\n break;\n }\n};\n\nexport interface TimeTicks {\n values: number[];\n unit: TimeUnit;\n format: (value: number) => string;\n}\n\n/** Calendar-aligned ticks between two timestamps */\nexport const timeTicks = (\n min: number,\n max: number,\n count: number,\n): TimeTicks => {\n if (min > max) [min, max] = [max, min];\n const interval = chooseInterval(max - min, count);\n if (interval.unit === \"millisecond\") {\n return {\n values: linearTicks(min, max, count),\n unit: \"millisecond\",\n format: (v) => formatTime(v, \"millisecond\"),\n };\n }\n const values: number[] = [];\n const d = floorTo(min, interval);\n while (d.getTime() < min) advance(d, interval);\n while (d.getTime() <= max && values.length < 500) {\n values.push(d.getTime());\n advance(d, interval);\n }\n const { unit } = interval;\n return { values, unit, format: (v) => formatTick(v, unit) };\n};\n\nconst ymd = (d: Date) =>\n `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;\nconst hm = (d: Date) => `${pad(d.getHours())}:${pad(d.getMinutes())}`;\n\n/** Short tick label; day boundaries show the date, year boundaries the year */\nconst formatTick = (value: number, unit: TimeUnit): string => {\n const d = new Date(value);\n const midnight =\n d.getHours() === 0 && d.getMinutes() === 0 && d.getSeconds() === 0;\n switch (unit) {\n case \"second\":\n return `${hm(d)}:${pad(d.getSeconds())}`;\n case \"minute\":\n case \"hour\":\n return midnight ? `${pad(d.getMonth() + 1)}-${pad(d.getDate())}` : hm(d);\n case \"day\":\n return d.getMonth() === 0 && d.getDate() === 1\n ? String(d.getFullYear())\n : `${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;\n case \"month\":\n return d.getMonth() === 0\n ? String(d.getFullYear())\n : `${d.getFullYear()}-${pad(d.getMonth() + 1)}`;\n default:\n return String(d.getFullYear());\n }\n};\n\n/** Full label (tooltips): precision follows the unit of the ticks */\nexport const formatTime = (\n value: number,\n unit: TimeUnit = \"minute\",\n): string => {\n const d = new Date(value);\n if (Number.isNaN(d.getTime())) return \"–\";\n switch (unit) {\n case \"millisecond\":\n return `${ymd(d)} ${hm(d)}:${pad(d.getSeconds())}.${pad(d.getMilliseconds(), 3)}`;\n case \"second\":\n return `${ymd(d)} ${hm(d)}:${pad(d.getSeconds())}`;\n case \"minute\":\n case \"hour\":\n return `${ymd(d)} ${hm(d)}`;\n default:\n return ymd(d);\n }\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=(e,t,n)=>{let r=t[1]-t[0],i=Math.min(Math.max(e[1]-e[0],n),r),a=(e[0]+e[1])/2-i/2,o=a+i;return a<t[0]&&(a=t[0],o=a+i),o>t[1]&&(o=t[1],a=o-i),[a,o]},t=(e,t,n)=>[t-(t-e[0])*n,t+(e[1]-t)*n],n=(e,t)=>[e[0]+t,e[1]+t],r=(e,t,n=1e-9)=>{let r=Math.max(Math.abs(t[1]-t[0]),1e-300);return Math.abs(e[0]-t[0])<=r*n&&Math.abs(e[1]-t[1])<=r*n};exports.clampRange=e,exports.panRange=n,exports.sameRange=r,exports.zoomRange=t;
|
|
2
|
+
//# sourceMappingURL=viewport.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewport.cjs","names":["clampRange","maxSpan","bounds","span","range","minSpan","b","zoomRange","anchor","factor","panRange","delta","sameRange","a","epsilon"],"sources":["../../../../../../charts/src/engine/viewport.ts"],"sourcesContent":["// Zoom / pan math on [min, max] ranges.\n\nexport type Range = [number, number];\n\n/**\n * Keeps a range inside `bounds` with a span between `minSpan` and the\n * span of the bounds (shifts it back instead of shrinking it).\n */\nexport const clampRange = (\n range: Range,\n bounds: Range,\n minSpan: number,\n): Range => {\n const maxSpan = bounds[1] - bounds[0];\n const span = Math.min(Math.max(range[1] - range[0], minSpan), maxSpan);\n const center = (range[0] + range[1]) / 2;\n let a = center - span / 2;\n let b = a + span;\n if (a < bounds[0]) {\n a = bounds[0];\n b = a + span;\n }\n if (b > bounds[1]) {\n b = bounds[1];\n a = b - span;\n }\n return [a, b];\n};\n\n/** Scales a range around `anchor` (factor < 1 zooms in) */\nexport const zoomRange = (\n range: Range,\n anchor: number,\n factor: number,\n): Range => [\n anchor - (anchor - range[0]) * factor,\n anchor + (range[1] - anchor) * factor,\n];\n\nexport const panRange = (range: Range, delta: number): Range => [\n range[0] + delta,\n range[1] + delta,\n];\n\nexport const sameRange = (a: Range, b: Range, epsilon = 1e-9): boolean => {\n const span = Math.max(Math.abs(b[1] - b[0]), 1e-300);\n return (\n Math.abs(a[0] - b[0]) <= span * epsilon &&\n Math.abs(a[1] - b[1]) <= span * epsilon\n );\n};\n\n/** Wheel delta -> zoom factor (trackpad pinches arrive as ctrl + small deltas) */\nexport const wheelFactor = (\n deltaY: number,\n deltaMode: number,\n pinch: boolean,\n): number => {\n const pixels =\n deltaMode === 1 ? deltaY * 16 : deltaMode === 2 ? deltaY * 400 : deltaY;\n const speed = pinch ? 0.01 : 0.0025;\n return Math.exp(Math.max(-1, Math.min(1, pixels * speed)));\n};\n"],"mappings":"AAQA,IAAaA,GACX,EACA,EACA,IACU,CACV,IAAMC,EAAUC,EAAO,GAAKA,EAAO,GAC7BC,EAAO,KAAK,IAAI,KAAK,IAAIC,EAAM,GAAKA,EAAM,GAAIC,CAAO,EAAGJ,CAAO,EAEjE,GADYG,EAAM,GAAKA,EAAM,IAAM,EACtBD,EAAO,EACpBG,EAAI,EAAIH,EASZ,OARI,EAAID,EAAO,KACb,EAAIA,EAAO,GACX,EAAI,EAAIC,GAENG,EAAIJ,EAAO,KACb,EAAIA,EAAO,GACX,EAAII,EAAIH,GAEH,CAAC,EAAGG,CAAC,CACd,EAGaC,GACX,EACA,EACA,IACU,CACVC,GAAUA,EAASJ,EAAM,IAAMK,EAC/BD,GAAUJ,EAAM,GAAKI,GAAUC,CACjC,EAEaC,GAAY,EAAc,IAAyB,CAC9DN,EAAM,GAAKO,EACXP,EAAM,GAAKO,CACb,EAEaC,GAAa,EAAU,EAAU,EAAU,OAAkB,CACxE,IAAMT,EAAO,KAAK,IAAI,KAAK,IAAIG,EAAE,GAAKA,EAAE,EAAE,EAAG,MAAM,EACnD,OACE,KAAK,IAAIO,EAAE,GAAKP,EAAE,EAAE,GAAKH,EAAOW,GAChC,KAAK,IAAID,EAAE,GAAKP,EAAE,EAAE,GAAKH,EAAOW,CAEpC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
//#region ../charts/src/engine/viewport.ts
|
|
2
|
+
var e = (e, t, n) => {
|
|
3
|
+
let r = t[1] - t[0], i = Math.min(Math.max(e[1] - e[0], n), r), a = (e[0] + e[1]) / 2 - i / 2, o = a + i;
|
|
4
|
+
return a < t[0] && (a = t[0], o = a + i), o > t[1] && (o = t[1], a = o - i), [a, o];
|
|
5
|
+
}, t = (e, t, n) => [t - (t - e[0]) * n, t + (e[1] - t) * n], n = (e, t) => [e[0] + t, e[1] + t], r = (e, t, n = 1e-9) => {
|
|
6
|
+
let r = Math.max(Math.abs(t[1] - t[0]), 1e-300);
|
|
7
|
+
return Math.abs(e[0] - t[0]) <= r * n && Math.abs(e[1] - t[1]) <= r * n;
|
|
8
|
+
};
|
|
9
|
+
//#endregion
|
|
10
|
+
export { e as clampRange, n as panRange, r as sameRange, t as zoomRange };
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=viewport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewport.js","names":["clampRange","maxSpan","bounds","span","range","minSpan","b","zoomRange","anchor","factor","panRange","delta","sameRange","a","epsilon"],"sources":["../../../../../../charts/src/engine/viewport.ts"],"sourcesContent":["// Zoom / pan math on [min, max] ranges.\n\nexport type Range = [number, number];\n\n/**\n * Keeps a range inside `bounds` with a span between `minSpan` and the\n * span of the bounds (shifts it back instead of shrinking it).\n */\nexport const clampRange = (\n range: Range,\n bounds: Range,\n minSpan: number,\n): Range => {\n const maxSpan = bounds[1] - bounds[0];\n const span = Math.min(Math.max(range[1] - range[0], minSpan), maxSpan);\n const center = (range[0] + range[1]) / 2;\n let a = center - span / 2;\n let b = a + span;\n if (a < bounds[0]) {\n a = bounds[0];\n b = a + span;\n }\n if (b > bounds[1]) {\n b = bounds[1];\n a = b - span;\n }\n return [a, b];\n};\n\n/** Scales a range around `anchor` (factor < 1 zooms in) */\nexport const zoomRange = (\n range: Range,\n anchor: number,\n factor: number,\n): Range => [\n anchor - (anchor - range[0]) * factor,\n anchor + (range[1] - anchor) * factor,\n];\n\nexport const panRange = (range: Range, delta: number): Range => [\n range[0] + delta,\n range[1] + delta,\n];\n\nexport const sameRange = (a: Range, b: Range, epsilon = 1e-9): boolean => {\n const span = Math.max(Math.abs(b[1] - b[0]), 1e-300);\n return (\n Math.abs(a[0] - b[0]) <= span * epsilon &&\n Math.abs(a[1] - b[1]) <= span * epsilon\n );\n};\n\n/** Wheel delta -> zoom factor (trackpad pinches arrive as ctrl + small deltas) */\nexport const wheelFactor = (\n deltaY: number,\n deltaMode: number,\n pinch: boolean,\n): number => {\n const pixels =\n deltaMode === 1 ? deltaY * 16 : deltaMode === 2 ? deltaY * 400 : deltaY;\n const speed = pinch ? 0.01 : 0.0025;\n return Math.exp(Math.max(-1, Math.min(1, pixels * speed)));\n};\n"],"mappings":";AAQA,IAAaA,KACX,GACA,GACA,MACU;CACV,IAAMC,IAAUC,EAAO,KAAKA,EAAO,IAC7BC,IAAO,KAAK,IAAI,KAAK,IAAIC,EAAM,KAAKA,EAAM,IAAIC,CAAO,GAAGJ,CAAO,GAEjE,KADYG,EAAM,KAAKA,EAAM,MAAM,IACtBD,IAAO,GACpBG,IAAI,IAAIH;CASZ,OARI,IAAID,EAAO,OACb,IAAIA,EAAO,IACX,IAAI,IAAIC,IAENG,IAAIJ,EAAO,OACb,IAAIA,EAAO,IACX,IAAII,IAAIH,IAEH,CAAC,GAAGG,CAAC;AACd,GAGaC,KACX,GACA,GACA,MACU,CACVC,KAAUA,IAASJ,EAAM,MAAMK,GAC/BD,KAAUJ,EAAM,KAAKI,KAAUC,CACjC,GAEaC,KAAY,GAAc,MAAyB,CAC9DN,EAAM,KAAKO,GACXP,EAAM,KAAKO,CACb,GAEaC,KAAa,GAAU,GAAU,IAAU,SAAkB;CACxE,IAAMT,IAAO,KAAK,IAAI,KAAK,IAAIG,EAAE,KAAKA,EAAE,EAAE,GAAG,MAAM;CACnD,OACE,KAAK,IAAIO,EAAE,KAAKP,EAAE,EAAE,KAAKH,IAAOW,KAChC,KAAK,IAAID,EAAE,KAAKP,EAAE,EAAE,KAAKH,IAAOW;AAEpC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("../../theme/MinervaProvider.cjs"),t=require("../../internal/parts.cjs"),n=require("../../charts/src/engine/controller.cjs");require("../../charts/src/canvas.cjs");const r=require("./measure.cjs"),i=require("./scene.cjs"),a=require("./theme.cjs");let o=require("react"),s=require("react-native"),c=require("react/jsx-runtime");var l=e=>({series:e.series,xAxis:e.xAxis,yAxis:e.yAxis,legend:e.legend,tooltip:e.tooltip,crosshair:e.crosshair,annotations:e.annotations,interaction:e.interaction,padding:e.padding,palette:e.palette,ariaLabel:e.ariaLabel}),u={},d=(e,t)=>{let n=Number(e.identifier);return Number.isFinite(n)?n:t},f=e=>{if(typeof requestAnimationFrame==`function`){let t=requestAnimationFrame(e);return{cancel:()=>cancelAnimationFrame(t)}}let t=setTimeout(e,16);return{cancel:()=>clearTimeout(t)}};function p(e,t,a){let o=0,s=null,c=new Set,l=null,u={x:0,y:0},p=new Map,m=e=>typeof e.interaction==`object`&&!!e.interaction.dragPoints,h=m(e),g=!1,_=()=>{o++,c.forEach(e=>e())},v=()=>{s?.cancel(),s=null},y=n.createChartController({options:e,theme:t,measureText:r.measureChartText,onInvalidate:()=>{!s&&c.size&&(s=f(()=>{s=null,_()}))}});a&&y.setSize(a[0],a[1]);let b=e=>({x:e.pageX-u.x,y:e.pageY-u.y}),x=e=>{let t=e.nativeEvent;(t.touches?.length?t.touches:[t]).forEach((e,t)=>{let n=d(e,t),r=b(e),i=p.get(n);i?(i.x!==r.x||i.y!==r.y)&&(p.set(n,r),y.pointerMove(r.x,r.y,{id:n,touch:!0})):(p.set(n,r),y.pointerDown(r.x,r.y,{id:n,touch:!0}))}),p.size===1&&(S.anchor=[...p.values()][0])},S={controller:y,setOptions(e){h=m(e),y.setOptions(e)},subscribe(e){return c.add(e),()=>{c.delete(e),c.size||v()}},version:()=>o,commit(){v(),_()},layers(e,t){let{plot:n}=e.layout,{view:r}=e,a=[e.model,e.annotations,e.theme,e.width,e.height,r.x[0],r.x[1],r.y[0],r.y[1],n.x,n.y,n.width,n.height,t];return(!l||l.key.some((e,t)=>e!==a[t]))&&(l={key:a,node:i.drawStatic(e,t)}),l.node},anchor:null,touchStart(e){let t=e.nativeEvent;!p.size&&t.locationX!==void 0&&(u={x:t.pageX-t.locationX,y:t.pageY-(t.locationY??0)}),x(e),S.commit();let n=y.getPlotRect(),r=p.values().next().value;return g=h&&!!n&&!!r&&r.x>=n.x&&r.x<=n.x+n.width&&r.y>=n.y&&r.y<=n.y+n.height,S.holdsGesture()},touchAdd(e){x(e),S.commit()},touchMove:x,touchEnd(e){let t=e.nativeEvent,n=new Set((t.touches??[]).map((e,t)=>d(e,t))),r=t.changedTouches?.length?t.changedTouches:[t];for(let[e,t]of[...p]){if(n.has(e))continue;let i=r.find((t,n)=>d(t,n)===e),a=i?b(i):t;p.delete(e),p.size===0&&(S.anchor=a),y.pointerUp(a.x,a.y,{id:e,touch:!0})}S.commit()},touchCancel(){for(let e of p.keys())y.pointerCancel({id:e});p.clear(),S.commit()},holdsGesture(){if(p.size>1||g&&p.size>0)return!0;let e=y.getScene();if(!e)return!1;if(e.dragging)return!0;let{base:t}=e.model,n=y.getView();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]}};return S}function m({scene:e,anchor:n,children:r}){let[a,l]=(0,o.useState)(null),{width:u,height:d}=e,f=n.x+14,p=n.y;return a&&(f+a.width>u-4&&(f=n.x-14-a.width),f=Math.max(4,Math.min(f,u-a.width-4)),p=Math.max(4,Math.min(n.y-a.height/2,d-a.height-4))),(0,c.jsx)(s.View,{pointerEvents:`none`,...t.part(`chart`,`tooltip`,{custom:!0}),onLayout:e=>{let{width:t,height:n}=e.nativeEvent.layout;l(e=>e&&e.width===t&&e.height===n?e:{width:t,height:n})},style:[i.tooltipCard(e),{left:0,top:0,maxWidth:Math.max(0,u-8),padding:8,opacity:+!!a,transform:[{translateX:f},{translateY:p}]}],children:r})}function h({options:n,height:r=320,width:l=`100%`,style:d,testID:f,handleRef:h,renderTooltip:g,overlay:_,...v}){let{tokens:y,fonts:b}=e.useTheme(),x=b.sans,S=(0,o.useMemo)(()=>a.chartThemeInput(y),[y]),C=!!g&&n.tooltip!==!1,w=(0,o.useMemo)(()=>{if(!C)return n;let e=typeof n.tooltip==`object`?n.tooltip:{};return{...n,tooltip:{...e,render:()=>u}}},[n,C]),[T]=(0,o.useState)(()=>p(w,S,typeof l==`number`&&typeof r==`number`?[l,r]:null)),{controller:E}=T;(0,o.useSyncExternalStore)(T.subscribe,T.version,T.version);let D=(0,o.useRef)({options:w,theme:S});(0,o.useLayoutEffect)(()=>{let e=D.current;(e.theme!==S||e.options!==w)&&(e.theme!==S&&E.setTheme(S),e.options!==w&&T.setOptions(w),D.current={options:w,theme:S},T.commit())},[E,T,w,S]),(0,o.useLayoutEffect)(()=>{if(typeof l!=`number`||typeof r!=`number`)return;let e=E.getScene();e&&e.width===l&&e.height===r||(E.setSize(l,r),T.commit())},[E,T,l,r]);let O=(0,o.useRef)(v);(0,o.useLayoutEffect)(()=>{O.current=v}),(0,o.useEffect)(()=>{let e=O,t=[E.on(`hover`,t=>e.current.onHover?.(t)),E.on(`click`,t=>e.current.onPointClick?.(t)),E.on(`plotClick`,t=>e.current.onPlotClick?.(t)),E.on(`zoom`,t=>e.current.onZoom?.(t)),E.on(`drag`,t=>e.current.onDrag?.(t)),E.on(`drop`,t=>e.current.onDrop?.(t))];return()=>t.forEach(e=>e())},[E]),(0,o.useImperativeHandle)(h,()=>({resetZoom:()=>E.resetZoom(),getView:()=>E.getView(),setView:e=>E.setView(e),getPlotRect:()=>E.getPlotRect(),getController:()=>E}),[E]);let k=e=>{let{width:t,height:n}=e.nativeEvent.layout,r=E.getScene();r&&r.width===t&&r.height===n||(E.setSize(t,n),T.commit())},A=E.getScene(),j=null,M=A?.hover?.tooltip?A.hover.event:null;if(A&&M&&C&&g){let e=g(M),t=T.anchor??A.hover?.marks[0]??null;e!=null&&e!==!1&&t&&(j=(0,c.jsx)(m,{scene:A,anchor:t,children:e}))}return(0,c.jsxs)(s.View,{testID:f,onLayout:k,style:[{width:l,height:r},d],...t.part(`chart`,`root`),children:[(0,c.jsx)(s.View,{style:s.StyleSheet.absoluteFill,accessible:!0,accessibilityRole:`image`,accessibilityLabel:n.ariaLabel,onStartShouldSetResponder:()=>!0,onResponderTerminationRequest:()=>!T.holdsGesture(),onResponderGrant:T.touchStart,onResponderStart:T.touchAdd,onResponderMove:T.touchMove,onResponderEnd:T.touchEnd,onResponderRelease:T.touchEnd,onResponderTerminate:T.touchCancel,...t.part(`chart`,`surface`),children:(0,c.jsxs)(s.View,{pointerEvents:`none`,style:s.StyleSheet.absoluteFill,children:[A?T.layers(A,x):null,A?i.drawHover(A,x,C):null]})}),_&&A?(0,c.jsx)(s.View,{pointerEvents:`box-none`,style:{position:`absolute`,left:A.layout.plot.x,top:A.layout.plot.y,width:A.layout.plot.width,height:A.layout.plot.height},...t.part(`chart`,`overlay`),children:_(A.layout.plot)}):null,j]})}exports.ChartBase=h,exports.engineOptions=l;
|
|
2
|
+
//# sourceMappingURL=ChartBase.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartBase.cjs","names":["createChartController","measureChartText","drawStatic","useState","View","part","tooltipCard","useTheme","useMemo","chartThemeInput","useRef","StyleSheet","drawHover","require_MinervaProvider","require_parts","require_controller","require_measure","require_scene","require_theme","react","react_native","react_jsx_runtime","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","size","local","sync","n","event","i","p","previous","store","next","scene","key","view","plot","family","value","active","changed","last","touch","base","CustomTooltip","setSize","left","anchor","top","width","height","w","h","ChartBase","handlers","fonts","theme","tokens","customTooltip","renderTooltip","resolved","applied","current","handlersRef","offs","e","v","off","handleRef","onLayout","tooltip","content","style","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,29 @@
|
|
|
1
|
+
import { ReactNode, Ref } from 'react';
|
|
2
|
+
import { DimensionValue, StyleProp, ViewStyle } from 'react-native';
|
|
3
|
+
import { ChartDragEvent, ChartHoverEvent, ChartOptions, ChartPlotClickEvent, ChartRect, ChartView } from '../../../charts/canvas.cjs';
|
|
4
|
+
import { ChartCommonProps, ChartHandle } from './types.cjs';
|
|
5
|
+
interface Handlers {
|
|
6
|
+
onHover?: (event: ChartHoverEvent | null) => void;
|
|
7
|
+
onPointClick?: (event: ChartHoverEvent) => void;
|
|
8
|
+
onPlotClick?: (event: ChartPlotClickEvent) => void;
|
|
9
|
+
onZoom?: (view: ChartView) => void;
|
|
10
|
+
onDrag?: (event: ChartDragEvent) => void;
|
|
11
|
+
onDrop?: (event: ChartDragEvent) => void;
|
|
12
|
+
}
|
|
13
|
+
/** Engine options of the common props */
|
|
14
|
+
export declare const engineOptions: (props: Pick<ChartCommonProps, "xAxis" | "yAxis" | "legend" | "tooltip" | "crosshair" | "annotations" | "interaction" | "padding" | "palette" | "ariaLabel"> & Pick<ChartOptions, "series">) => ChartOptions;
|
|
15
|
+
interface ChartBaseProps extends Handlers {
|
|
16
|
+
options: ChartOptions;
|
|
17
|
+
height?: DimensionValue;
|
|
18
|
+
width?: DimensionValue;
|
|
19
|
+
style?: StyleProp<ViewStyle>;
|
|
20
|
+
testID?: string;
|
|
21
|
+
handleRef?: Ref<ChartHandle>;
|
|
22
|
+
/** React content of the tooltip (replaces the engine's content) */
|
|
23
|
+
renderTooltip?: (event: ChartHoverEvent) => ReactNode;
|
|
24
|
+
/** React content placed over the plot area, given the plot rectangle */
|
|
25
|
+
overlay?: (plot: ChartRect) => ReactNode;
|
|
26
|
+
}
|
|
27
|
+
/** Sizes the chart, forwards options / theme / touches to the controller and draws its scene */
|
|
28
|
+
export declare function ChartBase({ options, height, width, style, testID, handleRef, renderTooltip, overlay, ...handlers }: ChartBaseProps): import('react').JSX.Element;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ReactNode, Ref } from 'react';
|
|
2
|
+
import { DimensionValue, StyleProp, ViewStyle } from 'react-native';
|
|
3
|
+
import { ChartDragEvent, ChartHoverEvent, ChartOptions, ChartPlotClickEvent, ChartRect, ChartView } from '../../../charts/canvas.js';
|
|
4
|
+
import { ChartCommonProps, ChartHandle } from './types.js';
|
|
5
|
+
interface Handlers {
|
|
6
|
+
onHover?: (event: ChartHoverEvent | null) => void;
|
|
7
|
+
onPointClick?: (event: ChartHoverEvent) => void;
|
|
8
|
+
onPlotClick?: (event: ChartPlotClickEvent) => void;
|
|
9
|
+
onZoom?: (view: ChartView) => void;
|
|
10
|
+
onDrag?: (event: ChartDragEvent) => void;
|
|
11
|
+
onDrop?: (event: ChartDragEvent) => void;
|
|
12
|
+
}
|
|
13
|
+
/** Engine options of the common props */
|
|
14
|
+
export declare const engineOptions: (props: Pick<ChartCommonProps, "xAxis" | "yAxis" | "legend" | "tooltip" | "crosshair" | "annotations" | "interaction" | "padding" | "palette" | "ariaLabel"> & Pick<ChartOptions, "series">) => ChartOptions;
|
|
15
|
+
interface ChartBaseProps extends Handlers {
|
|
16
|
+
options: ChartOptions;
|
|
17
|
+
height?: DimensionValue;
|
|
18
|
+
width?: DimensionValue;
|
|
19
|
+
style?: StyleProp<ViewStyle>;
|
|
20
|
+
testID?: string;
|
|
21
|
+
handleRef?: Ref<ChartHandle>;
|
|
22
|
+
/** React content of the tooltip (replaces the engine's content) */
|
|
23
|
+
renderTooltip?: (event: ChartHoverEvent) => ReactNode;
|
|
24
|
+
/** React content placed over the plot area, given the plot rectangle */
|
|
25
|
+
overlay?: (plot: ChartRect) => ReactNode;
|
|
26
|
+
}
|
|
27
|
+
/** Sizes the chart, forwards options / theme / touches to the controller and draws its scene */
|
|
28
|
+
export declare function ChartBase({ options, height, width, style, testID, handleRef, renderTooltip, overlay, ...handlers }: ChartBaseProps): import('react').JSX.Element;
|
|
29
|
+
export {};
|