@obitrain/charts 0.10.0 → 0.10.3
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/README.md +79 -0
- package/lib/commonjs/Charts/BottomAxis/AxisLine.js +5 -5
- package/lib/commonjs/Charts/BottomAxis/AxisLine.js.map +1 -1
- package/lib/commonjs/Charts/BottomAxis/BottomAxis.js +3 -3
- package/lib/commonjs/Charts/BottomAxis/BottomAxis.js.map +1 -1
- package/lib/commonjs/Charts/BottomAxis/Tick.js +2 -2
- package/lib/commonjs/Charts/BottomAxis/Tick.js.map +1 -1
- package/lib/commonjs/Charts/BottomAxis/index.js +3 -3
- package/lib/commonjs/Charts/Cursor.js +5 -6
- package/lib/commonjs/Charts/Cursor.js.map +1 -1
- package/lib/commonjs/Charts/Linechart/index.js +2 -0
- package/lib/commonjs/Charts/Linechart/index.js.map +1 -1
- package/lib/commonjs/Charts/ZoomableLinechart/ScalablePath.js +4 -11
- package/lib/commonjs/Charts/ZoomableLinechart/ScalablePath.js.map +1 -1
- package/lib/commonjs/Charts/ZoomableLinechart/index.js +1 -1
- package/lib/commonjs/Charts/gesture.js +28 -34
- package/lib/commonjs/Charts/gesture.js.map +1 -1
- package/lib/commonjs/Charts/graphUtils.js +25 -22
- package/lib/commonjs/Charts/graphUtils.js.map +1 -1
- package/lib/commonjs/Charts/index.js +13 -13
- package/lib/commonjs/Charts/index.js.map +1 -1
- package/lib/commonjs/Charts/maths.js.map +1 -1
- package/lib/commonjs/dateUtils.js +11 -15
- package/lib/commonjs/dateUtils.js.map +1 -1
- package/lib/commonjs/index.js +6 -6
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/textUtils.js +1 -1
- package/lib/commonjs/textUtils.js.map +1 -1
- package/lib/module/Charts/BottomAxis/AxisLine.js +5 -5
- package/lib/module/Charts/BottomAxis/AxisLine.js.map +1 -1
- package/lib/module/Charts/BottomAxis/BottomAxis.js +3 -3
- package/lib/module/Charts/BottomAxis/BottomAxis.js.map +1 -1
- package/lib/module/Charts/BottomAxis/Tick.js +2 -2
- package/lib/module/Charts/BottomAxis/Tick.js.map +1 -1
- package/lib/module/Charts/BottomAxis/index.js +3 -3
- package/lib/module/Charts/BottomAxis/index.js.map +1 -1
- package/lib/module/Charts/Cursor.js +5 -6
- package/lib/module/Charts/Cursor.js.map +1 -1
- package/lib/module/Charts/Linechart/index.js +2 -0
- package/lib/module/Charts/Linechart/index.js.map +1 -1
- package/lib/module/Charts/ZoomableLinechart/ScalablePath.js +4 -11
- package/lib/module/Charts/ZoomableLinechart/ScalablePath.js.map +1 -1
- package/lib/module/Charts/ZoomableLinechart/index.js +1 -1
- package/lib/module/Charts/ZoomableLinechart/index.js.map +1 -1
- package/lib/module/Charts/gesture.js +29 -35
- package/lib/module/Charts/gesture.js.map +1 -1
- package/lib/module/Charts/graphUtils.js +26 -22
- package/lib/module/Charts/graphUtils.js.map +1 -1
- package/lib/module/Charts/index.js +7 -7
- package/lib/module/Charts/index.js.map +1 -1
- package/lib/module/Charts/maths.js.map +1 -1
- package/lib/module/dateUtils.js +10 -14
- package/lib/module/dateUtils.js.map +1 -1
- package/lib/module/index.js +3 -3
- package/lib/module/index.js.map +1 -1
- package/lib/module/package.json +1 -0
- package/lib/module/textUtils.js +1 -1
- package/lib/module/textUtils.js.map +1 -1
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/src/Charts/BottomAxis/AxisLine.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/Charts/BottomAxis/BottomAxis.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/Charts/BottomAxis/Tick.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/Charts/BottomAxis/index.d.ts.map +1 -0
- package/lib/typescript/{src → commonjs/src}/Charts/Cursor.d.ts +1 -1
- package/lib/typescript/commonjs/src/Charts/Cursor.d.ts.map +1 -0
- package/lib/typescript/{src → commonjs/src}/Charts/Linechart/index.d.ts +10 -4
- package/lib/typescript/commonjs/src/Charts/Linechart/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/Charts/ZoomableLinechart/ScalablePath.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/Charts/ZoomableLinechart/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/Charts/gesture.d.ts.map +1 -0
- package/lib/typescript/{src → commonjs/src}/Charts/graphUtils.d.ts +5 -3
- package/lib/typescript/commonjs/src/Charts/graphUtils.d.ts.map +1 -0
- package/lib/typescript/{src → commonjs/src}/Charts/index.d.ts +4 -3
- package/lib/typescript/commonjs/src/Charts/index.d.ts.map +1 -0
- package/lib/typescript/{src → commonjs/src}/Charts/maths.d.ts +1 -2
- package/lib/typescript/commonjs/src/Charts/maths.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/Charts/types.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/dateUtils.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/textUtils.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/src/Charts/BottomAxis/AxisLine.d.ts +15 -0
- package/lib/typescript/module/src/Charts/BottomAxis/AxisLine.d.ts.map +1 -0
- package/lib/typescript/module/src/Charts/BottomAxis/BottomAxis.d.ts +17 -0
- package/lib/typescript/module/src/Charts/BottomAxis/BottomAxis.d.ts.map +1 -0
- package/lib/typescript/module/src/Charts/BottomAxis/Tick.d.ts +14 -0
- package/lib/typescript/module/src/Charts/BottomAxis/Tick.d.ts.map +1 -0
- package/lib/typescript/module/src/Charts/BottomAxis/index.d.ts +4 -0
- package/lib/typescript/module/src/Charts/BottomAxis/index.d.ts.map +1 -0
- package/lib/typescript/module/src/Charts/Cursor.d.ts +14 -0
- package/lib/typescript/module/src/Charts/Cursor.d.ts.map +1 -0
- package/lib/typescript/module/src/Charts/Linechart/index.d.ts +31 -0
- package/lib/typescript/module/src/Charts/Linechart/index.d.ts.map +1 -0
- package/lib/typescript/module/src/Charts/ZoomableLinechart/ScalablePath.d.ts +14 -0
- package/lib/typescript/module/src/Charts/ZoomableLinechart/ScalablePath.d.ts.map +1 -0
- package/lib/typescript/module/src/Charts/ZoomableLinechart/index.d.ts +23 -0
- package/lib/typescript/module/src/Charts/ZoomableLinechart/index.d.ts.map +1 -0
- package/lib/typescript/module/src/Charts/gesture.d.ts +54 -0
- package/lib/typescript/module/src/Charts/gesture.d.ts.map +1 -0
- package/lib/typescript/module/src/Charts/graphUtils.d.ts +45 -0
- package/lib/typescript/module/src/Charts/graphUtils.d.ts.map +1 -0
- package/lib/typescript/module/src/Charts/index.d.ts +15 -0
- package/lib/typescript/module/src/Charts/index.d.ts.map +1 -0
- package/lib/typescript/module/src/Charts/maths.d.ts +18 -0
- package/lib/typescript/module/src/Charts/maths.d.ts.map +1 -0
- package/lib/typescript/module/src/Charts/types.d.ts +14 -0
- package/lib/typescript/module/src/Charts/types.d.ts.map +1 -0
- package/lib/typescript/module/src/dateUtils.d.ts +37 -0
- package/lib/typescript/module/src/dateUtils.d.ts.map +1 -0
- package/lib/typescript/module/src/index.d.ts +5 -0
- package/lib/typescript/module/src/index.d.ts.map +1 -0
- package/lib/typescript/module/src/textUtils.d.ts +3 -0
- package/lib/typescript/module/src/textUtils.d.ts.map +1 -0
- package/package.json +74 -86
- package/src/Charts/BottomAxis/AxisLine.tsx +4 -4
- package/src/Charts/BottomAxis/BottomAxis.tsx +1 -1
- package/src/Charts/BottomAxis/Tick.tsx +10 -13
- package/src/Charts/Cursor.tsx +15 -16
- package/src/Charts/Linechart/index.tsx +8 -4
- package/src/Charts/ZoomableLinechart/ScalablePath.tsx +9 -17
- package/src/Charts/gesture.ts +40 -39
- package/src/Charts/graphUtils.ts +32 -27
- package/src/Charts/index.tsx +22 -3
- package/src/Charts/maths.ts +5 -3
- package/src/dateUtils.ts +9 -16
- package/src/textUtils.ts +1 -1
- package/lib/typescript/src/Charts/BottomAxis/AxisLine.d.ts.map +0 -1
- package/lib/typescript/src/Charts/BottomAxis/BottomAxis.d.ts.map +0 -1
- package/lib/typescript/src/Charts/BottomAxis/Tick.d.ts.map +0 -1
- package/lib/typescript/src/Charts/BottomAxis/index.d.ts.map +0 -1
- package/lib/typescript/src/Charts/Cursor.d.ts.map +0 -1
- package/lib/typescript/src/Charts/Linechart/index.d.ts.map +0 -1
- package/lib/typescript/src/Charts/ZoomableLinechart/ScalablePath.d.ts.map +0 -1
- package/lib/typescript/src/Charts/ZoomableLinechart/index.d.ts.map +0 -1
- package/lib/typescript/src/Charts/gesture.d.ts.map +0 -1
- package/lib/typescript/src/Charts/graphUtils.d.ts.map +0 -1
- package/lib/typescript/src/Charts/index.d.ts.map +0 -1
- package/lib/typescript/src/Charts/maths.d.ts.map +0 -1
- package/lib/typescript/src/Charts/types.d.ts.map +0 -1
- package/lib/typescript/src/dateUtils.d.ts.map +0 -1
- package/lib/typescript/src/index.d.ts.map +0 -1
- package/lib/typescript/src/textUtils.d.ts.map +0 -1
- /package/lib/typescript/{src → commonjs/src}/Charts/BottomAxis/AxisLine.d.ts +0 -0
- /package/lib/typescript/{src → commonjs/src}/Charts/BottomAxis/BottomAxis.d.ts +0 -0
- /package/lib/typescript/{src → commonjs/src}/Charts/BottomAxis/Tick.d.ts +0 -0
- /package/lib/typescript/{src → commonjs/src}/Charts/BottomAxis/index.d.ts +0 -0
- /package/lib/typescript/{src → commonjs/src}/Charts/ZoomableLinechart/ScalablePath.d.ts +0 -0
- /package/lib/typescript/{src → commonjs/src}/Charts/ZoomableLinechart/index.d.ts +0 -0
- /package/lib/typescript/{src → commonjs/src}/Charts/gesture.d.ts +0 -0
- /package/lib/typescript/{src → commonjs/src}/Charts/types.d.ts +0 -0
- /package/lib/typescript/{src → commonjs/src}/dateUtils.d.ts +0 -0
- /package/lib/typescript/{src → commonjs/src}/index.d.ts +0 -0
- /package/lib/typescript/{src → commonjs/src}/textUtils.d.ts +0 -0
package/README.md
CHANGED
|
@@ -30,6 +30,75 @@ yarn add @shopify/react-native-skia react-native-reanimated react-native-worklet
|
|
|
30
30
|
The exact ranges live in the `peerDependencies` of `package.json`. Development and tests run on
|
|
31
31
|
Expo SDK 57 / React Native 0.86 / Node `>= 20.19.4`.
|
|
32
32
|
|
|
33
|
+
## Usage
|
|
34
|
+
|
|
35
|
+
### Static line chart
|
|
36
|
+
|
|
37
|
+
`buildGraph` converts raw `[x, y][]` data into a `GraphData` (Skia path, data points, d3 scales).
|
|
38
|
+
`LineChart` renders one (`path`) or several (`paths`) paths on a Skia canvas:
|
|
39
|
+
|
|
40
|
+
```tsx
|
|
41
|
+
import { buildGraph, LineChart } from '@obitrain/charts';
|
|
42
|
+
|
|
43
|
+
const WIDTH = 300;
|
|
44
|
+
const HEIGHT = 140;
|
|
45
|
+
|
|
46
|
+
const data: [number, number][] = [
|
|
47
|
+
[0, 10],
|
|
48
|
+
[1, 25],
|
|
49
|
+
[2, 18],
|
|
50
|
+
[3, 40],
|
|
51
|
+
];
|
|
52
|
+
|
|
53
|
+
const graph = buildGraph(data, WIDTH, HEIGHT);
|
|
54
|
+
|
|
55
|
+
export function MyChart() {
|
|
56
|
+
return (
|
|
57
|
+
<LineChart
|
|
58
|
+
path={graph.skiaPath}
|
|
59
|
+
width={WIDTH}
|
|
60
|
+
height={HEIGHT}
|
|
61
|
+
color="dodgerblue"
|
|
62
|
+
/>
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Zoomable line chart
|
|
68
|
+
|
|
69
|
+
`useScalableGesture` provides the `scale`, `focalX` and `offsetX` shared values plus the pinch/pan
|
|
70
|
+
gestures to wire into a `GestureDetector`:
|
|
71
|
+
|
|
72
|
+
```tsx
|
|
73
|
+
import {
|
|
74
|
+
buildGraph,
|
|
75
|
+
useScalableGesture,
|
|
76
|
+
ZoomableLineChart,
|
|
77
|
+
} from '@obitrain/charts';
|
|
78
|
+
import { Gesture, GestureDetector } from 'react-native-gesture-handler';
|
|
79
|
+
import { useSharedValue } from 'react-native-reanimated';
|
|
80
|
+
|
|
81
|
+
export function MyZoomableChart() {
|
|
82
|
+
const graph = buildGraph(data, WIDTH, HEIGHT);
|
|
83
|
+
const path = useSharedValue(graph.skiaPath);
|
|
84
|
+
|
|
85
|
+
const { scale, focalX, offsetX, pinchGesture, panGesture } =
|
|
86
|
+
useScalableGesture({ width: WIDTH });
|
|
87
|
+
|
|
88
|
+
const gesture = Gesture.Simultaneous(pinchGesture, panGesture);
|
|
89
|
+
|
|
90
|
+
return (
|
|
91
|
+
<GestureDetector gesture={gesture}>
|
|
92
|
+
<ZoomableLineChart
|
|
93
|
+
width={WIDTH}
|
|
94
|
+
height={HEIGHT}
|
|
95
|
+
{...{ path, scale, focalX, offsetX }}
|
|
96
|
+
/>
|
|
97
|
+
</GestureDetector>
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
33
102
|
## What's inside
|
|
34
103
|
|
|
35
104
|
**Components** — `BottomAxis`, `AxisLine`, `Tick`, `Cursor`, `LineChart`, `ZoomableLineChart`,
|
|
@@ -116,6 +185,16 @@ yarn gifs --device "iPhone 17 Pro"
|
|
|
116
185
|
Requires Xcode with an iOS simulator, `ffmpeg` and `jq`. The script boots the simulator, freezes the
|
|
117
186
|
status bar, drives each screen through its deep link and writes `static/<slug>.gif`.
|
|
118
187
|
|
|
188
|
+
## Releasing
|
|
189
|
+
|
|
190
|
+
Releases are automated from conventional commits. Every push to `main` updates a "Release" pull
|
|
191
|
+
request (release-please) with the next version and changelog; merging it tags the release, creates the
|
|
192
|
+
GitHub release and publishes `@obitrain/charts` to npm from CI via trusted publishing, so no npm token
|
|
193
|
+
or one-time password is involved.
|
|
194
|
+
|
|
195
|
+
One-time setup on npmjs.com, under the package's *Settings → Trusted publishing*: add a GitHub Actions
|
|
196
|
+
publisher for `Obitrain/obi-chart` with workflow `release.yml`.
|
|
197
|
+
|
|
119
198
|
## Contributing
|
|
120
199
|
|
|
121
200
|
See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.
|
|
@@ -7,7 +7,7 @@ exports.AxisLine = void 0;
|
|
|
7
7
|
var _reactNativeSkia = require("@shopify/react-native-skia");
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
9
|
var _reactNativeReanimated = require("react-native-reanimated");
|
|
10
|
-
var _gesture = require("../gesture");
|
|
10
|
+
var _gesture = require("../gesture.js");
|
|
11
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
12
|
const AxisLine = function (props) {
|
|
13
13
|
const {
|
|
@@ -22,11 +22,11 @@ const AxisLine = function (props) {
|
|
|
22
22
|
const p1 = (0, _reactNativeReanimated.useDerivedValue)(() => {
|
|
23
23
|
const p1X = (0, _gesture.getPositionWl)(0, focalX.value, scale.value, offsetX.value);
|
|
24
24
|
return (0, _reactNativeSkia.vec)(p1X, offsetY);
|
|
25
|
-
}
|
|
25
|
+
});
|
|
26
26
|
const p2 = (0, _reactNativeReanimated.useDerivedValue)(() => {
|
|
27
|
-
const
|
|
28
|
-
return (0, _reactNativeSkia.vec)(
|
|
29
|
-
}
|
|
27
|
+
const p2X = (0, _gesture.getPositionWl)(width, focalX.value, scale.value, offsetX.value);
|
|
28
|
+
return (0, _reactNativeSkia.vec)(p2X, offsetY);
|
|
29
|
+
});
|
|
30
30
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Line, {
|
|
31
31
|
p1,
|
|
32
32
|
p2,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeSkia","require","_reactNative","_reactNativeReanimated","_gesture","_jsxRuntime","AxisLine","props","width","focalX","scale","offsetX","offsetY","strokeWidth","StyleSheet","hairlineWidth","color","p1","useDerivedValue","p1X","getPositionWl","value","vec","p2","jsx","Line","exports"],"sourceRoot":"../../../../src","sources":["Charts/BottomAxis/AxisLine.tsx"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAA2C,IAAAI,WAAA,GAAAJ,OAAA;AAY3C,MAAMK,QAA2B,GAAG,SAAAA,CAAUC,KAAK,EAAE;EACnD,MAAM;IACJC,KAAK;IACLC,MAAM;IACNC,KAAK;IACLC,OAAO;IACPC,OAAO,GAAG,CAAC;IACXC,WAAW,GAAGC,uBAAU,CAACC,aAAa;IACtCC,KAAK,GAAG;EACV,CAAC,GAAGT,KAAK;EACT,MAAMU,EAAE,GAAG,IAAAC,sCAAe,EAAC,MAAM;IAC/B,MAAMC,GAAG,GAAG,IAAAC,sBAAa,EAAC,CAAC,EAAEX,MAAM,CAACY,KAAK,EAAEX,KAAK,CAACW,KAAK,EAAEV,OAAO,CAACU,KAAK,CAAC;IACtE,OAAO,IAAAC,oBAAG,EAACH,GAAG,EAAEP,OAAO,CAAC;EAC1B,CAAC,
|
|
1
|
+
{"version":3,"names":["_reactNativeSkia","require","_reactNative","_reactNativeReanimated","_gesture","_jsxRuntime","AxisLine","props","width","focalX","scale","offsetX","offsetY","strokeWidth","StyleSheet","hairlineWidth","color","p1","useDerivedValue","p1X","getPositionWl","value","vec","p2","p2X","jsx","Line","exports"],"sourceRoot":"../../../../src","sources":["Charts/BottomAxis/AxisLine.tsx"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAA2C,IAAAI,WAAA,GAAAJ,OAAA;AAY3C,MAAMK,QAA2B,GAAG,SAAAA,CAAUC,KAAK,EAAE;EACnD,MAAM;IACJC,KAAK;IACLC,MAAM;IACNC,KAAK;IACLC,OAAO;IACPC,OAAO,GAAG,CAAC;IACXC,WAAW,GAAGC,uBAAU,CAACC,aAAa;IACtCC,KAAK,GAAG;EACV,CAAC,GAAGT,KAAK;EACT,MAAMU,EAAE,GAAG,IAAAC,sCAAe,EAAC,MAAM;IAC/B,MAAMC,GAAG,GAAG,IAAAC,sBAAa,EAAC,CAAC,EAAEX,MAAM,CAACY,KAAK,EAAEX,KAAK,CAACW,KAAK,EAAEV,OAAO,CAACU,KAAK,CAAC;IACtE,OAAO,IAAAC,oBAAG,EAACH,GAAG,EAAEP,OAAO,CAAC;EAC1B,CAAC,CAAC;EAEF,MAAMW,EAAE,GAAG,IAAAL,sCAAe,EAAC,MAAM;IAC/B,MAAMM,GAAG,GAAG,IAAAJ,sBAAa,EAACZ,KAAK,EAAEC,MAAM,CAACY,KAAK,EAAEX,KAAK,CAACW,KAAK,EAAEV,OAAO,CAACU,KAAK,CAAC;IAC1E,OAAO,IAAAC,oBAAG,EAACE,GAAG,EAAEZ,OAAO,CAAC;EAC1B,CAAC,CAAC;EAEF,oBAAO,IAAAP,WAAA,CAAAoB,GAAA,EAACzB,gBAAA,CAAA0B,IAAI;IAAOT,EAAE;IAAEM,EAAE;IAAEP,KAAK;IAAEH;EAAW,CAAK,CAAC;AACrD,CAAC;AAACc,OAAA,CAAArB,QAAA,GAAAA,QAAA","ignoreList":[]}
|
|
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.BottomAxis = void 0;
|
|
7
7
|
var _reactNativeSkia = require("@shopify/react-native-skia");
|
|
8
|
-
var _AxisLine = require("./AxisLine");
|
|
9
|
-
var _Tick = require("./Tick");
|
|
8
|
+
var _AxisLine = require("./AxisLine.js");
|
|
9
|
+
var _Tick = require("./Tick.js");
|
|
10
10
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
11
|
// ChartUtilsScreen.tsx
|
|
12
12
|
|
|
@@ -21,7 +21,7 @@ const BottomAxis = function (props) {
|
|
|
21
21
|
font
|
|
22
22
|
} = props;
|
|
23
23
|
const offsetY = props.offsetY ?? 0;
|
|
24
|
-
const tickInterval = width / (labels.length - 1);
|
|
24
|
+
const tickInterval = labels.length > 1 ? width / (labels.length - 1) : 0;
|
|
25
25
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSkia.Canvas, {
|
|
26
26
|
style: style,
|
|
27
27
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_AxisLine.AxisLine, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeSkia","require","_AxisLine","_Tick","_jsxRuntime","BottomAxis","props","labels","scale","focalX","offsetX","style","width","font","offsetY","tickInterval","length","jsxs","Canvas","children","jsx","AxisLine","map","_label","i","Tick","label","initPosition","exports"],"sourceRoot":"../../../../src","sources":["Charts/BottomAxis/BottomAxis.tsx"],"mappings":";;;;;;AACA,IAAAA,gBAAA,GAAAC,OAAA;AAIA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAA8B,IAAAG,WAAA,GAAAH,OAAA;AAN9B;;AAoBA,MAAMI,UAA+B,GAAG,SAAAA,CAAUC,KAAK,EAAE;EACvD,MAAM;IAAEC,MAAM;IAAEC,KAAK;IAAEC,MAAM;IAAEC,OAAO;IAAEC,KAAK;IAAEC,KAAK;IAAEC;EAAK,CAAC,GAAGP,KAAK;EACpE,MAAMQ,OAAO,GAAGR,KAAK,CAACQ,OAAO,IAAI,CAAC;EAClC,MAAMC,YAAY,
|
|
1
|
+
{"version":3,"names":["_reactNativeSkia","require","_AxisLine","_Tick","_jsxRuntime","BottomAxis","props","labels","scale","focalX","offsetX","style","width","font","offsetY","tickInterval","length","jsxs","Canvas","children","jsx","AxisLine","map","_label","i","Tick","label","initPosition","exports"],"sourceRoot":"../../../../src","sources":["Charts/BottomAxis/BottomAxis.tsx"],"mappings":";;;;;;AACA,IAAAA,gBAAA,GAAAC,OAAA;AAIA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAA8B,IAAAG,WAAA,GAAAH,OAAA;AAN9B;;AAoBA,MAAMI,UAA+B,GAAG,SAAAA,CAAUC,KAAK,EAAE;EACvD,MAAM;IAAEC,MAAM;IAAEC,KAAK;IAAEC,MAAM;IAAEC,OAAO;IAAEC,KAAK;IAAEC,KAAK;IAAEC;EAAK,CAAC,GAAGP,KAAK;EACpE,MAAMQ,OAAO,GAAGR,KAAK,CAACQ,OAAO,IAAI,CAAC;EAClC,MAAMC,YAAY,GAAGR,MAAM,CAACS,MAAM,GAAG,CAAC,GAAGJ,KAAK,IAAIL,MAAM,CAACS,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC;EAExE,oBACE,IAAAZ,WAAA,CAAAa,IAAA,EAACjB,gBAAA,CAAAkB,MAAM;IAACP,KAAK,EAAEA,KAAM;IAAAQ,QAAA,gBACnB,IAAAf,WAAA,CAAAgB,GAAA,EAAClB,SAAA,CAAAmB,QAAQ;MAAOT,KAAK;MAAEE,OAAO;MAAEL,MAAM;MAAED,KAAK;MAAEE;IAAO,CAAK,CAAC,EAC3DH,MAAM,CAACe,GAAG,CAAC,CAACC,MAAM,EAAEC,CAAC,kBACpB,IAAApB,WAAA,CAAAgB,GAAA,EAACjB,KAAA,CAAAsB,IAAI;MAEHC,KAAK,EAAEH,MAAO;MACdI,YAAY,EAAEZ,YAAY,GAAGS,CAAE;MACzBd,OAAO;MAAEI,OAAO;MAAEL,MAAM;MAAED,KAAK;MAAEK;IAAI,GAHtCW,CAIN,CACF,CAAC;EAAA,CACI,CAAC;AAEb,CAAC;AAACI,OAAA,CAAAvB,UAAA,GAAAA,UAAA","ignoreList":[]}
|
|
@@ -7,7 +7,7 @@ exports.Tick = void 0;
|
|
|
7
7
|
var _reactNativeSkia = require("@shopify/react-native-skia");
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
var _reactNativeReanimated = require("react-native-reanimated");
|
|
10
|
-
var _gesture = require("../gesture");
|
|
10
|
+
var _gesture = require("../gesture.js");
|
|
11
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
13
|
const Tick = props => {
|
|
@@ -22,7 +22,7 @@ const Tick = props => {
|
|
|
22
22
|
const offsetY = props.offsetY ?? 0;
|
|
23
23
|
const transform = (0, _reactNativeReanimated.useDerivedValue)(() => [{
|
|
24
24
|
translateX: (0, _gesture.getPositionWl)(initPosition, focalX.value, scale.value, offsetX.value)
|
|
25
|
-
}]
|
|
25
|
+
}]);
|
|
26
26
|
const width = font.getGlyphWidths(font.getGlyphIDs(label)).reduce((a, b) => a + b, 0);
|
|
27
27
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSkia.Group, {
|
|
28
28
|
transform: transform,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeSkia","require","_react","_interopRequireDefault","_reactNativeReanimated","_gesture","_jsxRuntime","e","__esModule","default","Tick","props","label","scale","focalX","offsetX","initPosition","font","offsetY","transform","useDerivedValue","translateX","getPositionWl","value","width","getGlyphWidths","getGlyphIDs","reduce","a","b","jsxs","Group","children","jsx","Line","color","p1","vec","p2","Text","text","x","y","exports"],"sourceRoot":"../../../../src","sources":["Charts/BottomAxis/Tick.tsx"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAOA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,sBAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AAA2C,IAAAK,WAAA,GAAAL,OAAA;AAAA,SAAAE,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAYpC,MAAMG,IAAyB,GAAIC,KAAK,IAAK;EAClD,MAAM;IAAEC,KAAK;IAAEC,KAAK;IAAEC,MAAM;IAAEC,OAAO;IAAEC,YAAY;IAAEC;EAAK,CAAC,GAAGN,KAAK;EACnE,MAAMO,OAAO,GAAGP,KAAK,CAACO,OAAO,IAAI,CAAC;EAClC,MAAMC,SAAS,GAAG,IAAAC,sCAAe,
|
|
1
|
+
{"version":3,"names":["_reactNativeSkia","require","_react","_interopRequireDefault","_reactNativeReanimated","_gesture","_jsxRuntime","e","__esModule","default","Tick","props","label","scale","focalX","offsetX","initPosition","font","offsetY","transform","useDerivedValue","translateX","getPositionWl","value","width","getGlyphWidths","getGlyphIDs","reduce","a","b","jsxs","Group","children","jsx","Line","color","p1","vec","p2","Text","text","x","y","exports"],"sourceRoot":"../../../../src","sources":["Charts/BottomAxis/Tick.tsx"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAOA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,sBAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AAA2C,IAAAK,WAAA,GAAAL,OAAA;AAAA,SAAAE,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAYpC,MAAMG,IAAyB,GAAIC,KAAK,IAAK;EAClD,MAAM;IAAEC,KAAK;IAAEC,KAAK;IAAEC,MAAM;IAAEC,OAAO;IAAEC,YAAY;IAAEC;EAAK,CAAC,GAAGN,KAAK;EACnE,MAAMO,OAAO,GAAGP,KAAK,CAACO,OAAO,IAAI,CAAC;EAClC,MAAMC,SAAS,GAAG,IAAAC,sCAAe,EAAC,MAAM,CACtC;IACEC,UAAU,EAAE,IAAAC,sBAAa,EACvBN,YAAY,EACZF,MAAM,CAACS,KAAK,EACZV,KAAK,CAACU,KAAK,EACXR,OAAO,CAACQ,KACV;EACF,CAAC,CACF,CAAC;EACF,MAAMC,KAAK,GAAGP,IAAI,CACfQ,cAAc,CAACR,IAAI,CAACS,WAAW,CAACd,KAAK,CAAC,CAAC,CACvCe,MAAM,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,GAAGC,CAAC,EAAE,CAAC,CAAC;EAE7B,oBACE,IAAAvB,WAAA,CAAAwB,IAAA,EAAC9B,gBAAA,CAAA+B,KAAK;IAACZ,SAAS,EAAEA,SAAU;IAAAa,QAAA,gBAC1B,IAAA1B,WAAA,CAAA2B,GAAA,EAACjC,gBAAA,CAAAkC,IAAI;MAACC,KAAK,EAAC,OAAO;MAACC,EAAE,EAAE,IAAAC,oBAAG,EAAC,CAAC,EAAEnB,OAAO,CAAE;MAACoB,EAAE,EAAE,IAAAD,oBAAG,EAAC,CAAC,EAAEnB,OAAO,GAAG,EAAE;IAAE,CAAE,CAAC,eACrE,IAAAZ,WAAA,CAAA2B,GAAA,EAACjC,gBAAA,CAAAuC,IAAI;MACHC,IAAI,EAAE5B,KAAM;MACZuB,KAAK,EAAC,OAAO;MACbM,CAAC,EAAE,CAACjB,KAAK,GAAG,CAAE;MACdkB,CAAC,EAAExB,OAAO,GAAG,EAAG;MAChBD,IAAI,EAAEA;IAAK,CACZ,CAAC;EAAA,CACG,CAAC;AAEZ,CAAC;AAAC0B,OAAA,CAAAjC,IAAA,GAAAA,IAAA","ignoreList":[]}
|
|
@@ -21,7 +21,7 @@ Object.defineProperty(exports, "Tick", {
|
|
|
21
21
|
return _Tick.Tick;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
|
-
var _AxisLine = require("./AxisLine");
|
|
25
|
-
var _BottomAxis = require("./BottomAxis");
|
|
26
|
-
var _Tick = require("./Tick");
|
|
24
|
+
var _AxisLine = require("./AxisLine.js");
|
|
25
|
+
var _BottomAxis = require("./BottomAxis.js");
|
|
26
|
+
var _Tick = require("./Tick.js");
|
|
27
27
|
//# sourceMappingURL=index.js.map
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.Cursor = void 0;
|
|
7
7
|
var _reactNativeSkia = require("@shopify/react-native-skia");
|
|
8
8
|
var _reactNativeReanimated = require("react-native-reanimated");
|
|
9
|
-
var _maths = require("./maths");
|
|
9
|
+
var _maths = require("./maths.js");
|
|
10
10
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
11
|
const CURSOR_SIZE = 10;
|
|
12
12
|
const Cursor = function ({
|
|
@@ -18,21 +18,20 @@ const Cursor = function ({
|
|
|
18
18
|
size = CURSOR_SIZE
|
|
19
19
|
}) {
|
|
20
20
|
if (currentValue !== undefined && translateY !== undefined) {
|
|
21
|
-
console.warn('
|
|
21
|
+
console.warn('currentValue has no effect when translateY is set');
|
|
22
22
|
}
|
|
23
|
-
const
|
|
24
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
25
|
-
(0, _reactNativeReanimated.useDerivedValue)(() => {
|
|
23
|
+
const derivedTranslateY = (0, _reactNativeReanimated.useDerivedValue)(() => {
|
|
26
24
|
const _commands = commands?.value;
|
|
27
25
|
if (_commands === undefined) {
|
|
28
26
|
return 0;
|
|
29
27
|
}
|
|
30
28
|
const _value = (0, _maths.getYForX)(_commands, positionX.value) ?? 0;
|
|
31
|
-
if (currentValue !== undefined) {
|
|
29
|
+
if (translateY === undefined && currentValue !== undefined) {
|
|
32
30
|
currentValue.value = _value;
|
|
33
31
|
}
|
|
34
32
|
return _value;
|
|
35
33
|
});
|
|
34
|
+
const _translateY = translateY ?? derivedTranslateY;
|
|
36
35
|
const transform = (0, _reactNativeReanimated.useDerivedValue)(() => [{
|
|
37
36
|
translateX: positionX.value
|
|
38
37
|
}, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeSkia","require","_reactNativeReanimated","_maths","_jsxRuntime","CURSOR_SIZE","Cursor","commands","positionX","color","currentValue","translateY","size","undefined","console","warn","
|
|
1
|
+
{"version":3,"names":["_reactNativeSkia","require","_reactNativeReanimated","_maths","_jsxRuntime","CURSOR_SIZE","Cursor","commands","positionX","color","currentValue","translateY","size","undefined","console","warn","derivedTranslateY","useDerivedValue","_commands","value","_value","getYForX","_translateY","transform","translateX","jsx","Circle","cx","cy","r","exports"],"sourceRoot":"../../../src","sources":["Charts/Cursor.tsx"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAEA,IAAAC,sBAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAAmC,IAAAG,WAAA,GAAAH,OAAA;AAEnC,MAAMI,WAAW,GAAG,EAAE;AAWtB,MAAMC,MAAuB,GAAG,SAAAA,CAAU;EACxCC,QAAQ;EACRC,SAAS;EACTC,KAAK;EACLC,YAAY;EACZC,UAAU;EACVC,IAAI,GAAGP;AACT,CAAC,EAAE;EACD,IAAIK,YAAY,KAAKG,SAAS,IAAIF,UAAU,KAAKE,SAAS,EAAE;IAC1DC,OAAO,CAACC,IAAI,CAAC,mDAAmD,CAAC;EACnE;EAEA,MAAMC,iBAAiB,GAAG,IAAAC,sCAAe,EAAC,MAAM;IAC9C,MAAMC,SAAS,GAAGX,QAAQ,EAAEY,KAAK;IACjC,IAAID,SAAS,KAAKL,SAAS,EAAE;MAC3B,OAAO,CAAC;IACV;IACA,MAAMO,MAAM,GAAG,IAAAC,eAAQ,EAACH,SAAS,EAAEV,SAAS,CAACW,KAAK,CAAC,IAAI,CAAC;IACxD,IAAIR,UAAU,KAAKE,SAAS,IAAIH,YAAY,KAAKG,SAAS,EAAE;MAC1DH,YAAY,CAACS,KAAK,GAAGC,MAAM;IAC7B;IACA,OAAOA,MAAM;EACf,CAAC,CAAC;EAEF,MAAME,WAAW,GAAGX,UAAU,IAAIK,iBAAiB;EAEnD,MAAMO,SAAS,GAAG,IAAAN,sCAAe,EAAC,MAAM,CACtC;IAAEO,UAAU,EAAEhB,SAAS,CAACW;EAAM,CAAC,EAC/B;IAAER,UAAU,EAAEW,WAAW,CAACH,KAAK,IAAI;EAAE,CAAC,CACvC,CAAC;EACF,oBAAO,IAAAf,WAAA,CAAAqB,GAAA,EAACzB,gBAAA,CAAA0B,MAAM;IAACH,SAAS,EAAEA,SAAU;IAACI,EAAE,EAAE,CAAE;IAACC,EAAE,EAAE,CAAE;IAACC,CAAC,EAAEjB,IAAK;IAACH,KAAK,EAAEA;EAAM,CAAE,CAAC;AAC9E,CAAC;AAACqB,OAAA,CAAAxB,MAAA,GAAAA,MAAA","ignoreList":[]}
|
|
@@ -8,6 +8,8 @@ var _reactNativeSkia = require("@shopify/react-native-skia");
|
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
10
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
// Require at least one of `path` / `paths` at compile time
|
|
12
|
+
|
|
11
13
|
const LineChart = function (props) {
|
|
12
14
|
const {
|
|
13
15
|
width,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeSkia","require","_react","_interopRequireDefault","_jsxRuntime","e","__esModule","default","LineChart","props","width","height","style","path","children","color","paths","background","offsetX","offsetY","_paths","undefined","length","console","warn","jsx","Canvas","jsxs","Group","transform","translateY","translateX","map","_path","i","Path","strokeWidth","strokeJoin","strokeCap","id","exports"],"sourceRoot":"../../../../src","sources":["Charts/Linechart/index.tsx"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA0B,IAAAG,WAAA,GAAAH,OAAA;AAAA,SAAAE,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;
|
|
1
|
+
{"version":3,"names":["_reactNativeSkia","require","_react","_interopRequireDefault","_jsxRuntime","e","__esModule","default","LineChart","props","width","height","style","path","children","color","paths","background","offsetX","offsetY","_paths","undefined","length","console","warn","jsx","Canvas","jsxs","Group","transform","translateY","translateX","map","_path","i","Path","strokeWidth","strokeJoin","strokeCap","id","exports"],"sourceRoot":"../../../../src","sources":["Charts/Linechart/index.tsx"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA0B,IAAAG,WAAA,GAAAH,OAAA;AAAA,SAAAE,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAoB1B;;AAOA,MAAMG,SAA6B,GAAG,SAAAA,CAAUC,KAAK,EAAE;EACrD,MAAM;IACJC,KAAK;IACLC,MAAM;IACNC,KAAK;IACLC,IAAI;IACJC,QAAQ;IACRC,KAAK;IACLC,KAAK;IACLC,UAAU;IACVC,OAAO,GAAG,CAAC;IACXC,OAAO,GAAG;EACZ,CAAC,GAAGV,KAAK;EAET,MAAMW,MAAkB,GACtBJ,KAAK,KAAKK,SAAS,GACfL,KAAK,GACLH,IAAI,KAAKQ,SAAS,GAClB,CAAC;IAAER,IAAI,EAAEA,IAAI;IAAEE,KAAK,EAAEA,KAAK,IAAI;EAAM,CAAC,CAAC,GACvC,EAAE;EACR,IAAIK,MAAM,CAACE,MAAM,KAAK,CAAC,EAAE;IACvBC,OAAO,CAACC,IAAI,CAAC,0CAA0C,CAAC;IACxD,OAAO,IAAI;IACX;EACF;EACA,oBACE,IAAApB,WAAA,CAAAqB,GAAA,EAACzB,gBAAA,CAAA0B,MAAM;IACLd,KAAK,EAAE,CACL;MACEF,KAAK;MACLC;IACF,CAAC,EACDC,KAAK,CACL;IAAAE,QAAA,eAEF,IAAAV,WAAA,CAAAuB,IAAA,EAAC3B,gBAAA,CAAA4B,KAAK;MAACC,SAAS,EAAE,CAAC;QAAEC,UAAU,EAAEX;MAAQ,CAAC,EAAE;QAAEY,UAAU,EAAEb;MAAQ,CAAC,CAAE;MAAAJ,QAAA,GAClEG,UAAU,EACVG,MAAM,CAACY,GAAG,CAAC,CAACC,KAAK,EAAEC,CAAC,kBACnB,IAAA9B,WAAA,CAAAqB,GAAA,EAACzB,gBAAA,CAAAmC,IAAI;QAEHvB,KAAK,EAAC,QAAQ;QAAA,GACVqB,KAAK;QACTG,WAAW,EAAE,CAAE;QACfC,UAAU,EAAC,OAAO;QAClBC,SAAS,EAAC;MAAO,GALZ,GAAGL,KAAK,CAACM,EAAE,IAAIL,CAAC,EAMtB,CACF,CAAC,EACDpB,QAAQ;IAAA,CACJ;EAAC,CACF,CAAC;AAEb,CAAC;AAAC0B,OAAA,CAAAhC,SAAA,GAAAA,SAAA","ignoreList":[]}
|
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.ScalablePath = void 0;
|
|
7
7
|
var _reactNativeSkia = require("@shopify/react-native-skia");
|
|
8
8
|
var _reactNativeReanimated = require("react-native-reanimated");
|
|
9
|
-
var _graphUtils = require("../graphUtils");
|
|
10
9
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
10
|
const ScalablePath = function (props) {
|
|
12
11
|
const {
|
|
@@ -18,17 +17,11 @@ const ScalablePath = function (props) {
|
|
|
18
17
|
color = 'red'
|
|
19
18
|
} = props;
|
|
20
19
|
const animatedPath = (0, _reactNativeReanimated.useDerivedValue)(() => {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
} catch (e) {
|
|
25
|
-
console.error('Got error while scaling path: ', typeof e);
|
|
26
|
-
_cmds = [];
|
|
27
|
-
}
|
|
28
|
-
const _path = _reactNativeSkia.Skia.Path.MakeFromCmds(_cmds);
|
|
29
|
-
if (!_path) throw new Error('Path is null');
|
|
20
|
+
// Affine equivalent of getPositionWl: x' = scale * x + focalX * (1 - scale) + offsetX
|
|
21
|
+
const _path = path.value.copy();
|
|
22
|
+
_path.transform(_reactNativeSkia.Skia.Matrix().translate(focalX.value * (1 - scale.value) + offsetX.value, 0).scale(scale.value, 1));
|
|
30
23
|
return _path;
|
|
31
|
-
}
|
|
24
|
+
});
|
|
32
25
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Path, {
|
|
33
26
|
style: "stroke",
|
|
34
27
|
path: animatedPath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeSkia","require","_reactNativeReanimated","
|
|
1
|
+
{"version":3,"names":["_reactNativeSkia","require","_reactNativeReanimated","_jsxRuntime","ScalablePath","props","path","scale","focalX","offsetX","pathProps","color","animatedPath","useDerivedValue","_path","value","copy","transform","Skia","Matrix","translate","jsx","Path","style","strokeWidth","strokeJoin","strokeCap","exports"],"sourceRoot":"../../../../src","sources":["Charts/ZoomableLinechart/ScalablePath.tsx"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAEA,IAAAC,sBAAA,GAAAD,OAAA;AAA4E,IAAAE,WAAA,GAAAF,OAAA;AAW5E,MAAMG,YAAmC,GAAG,SAAAA,CAAUC,KAAK,EAAE;EAC3D,MAAM;IAAEC,IAAI;IAAEC,KAAK;IAAEC,MAAM;IAAEC,OAAO;IAAEC,SAAS;IAAEC,KAAK,GAAG;EAAM,CAAC,GAAGN,KAAK;EAExE,MAAMO,YAAY,GAAG,IAAAC,sCAAe,EAAC,MAAM;IACzC;IACA,MAAMC,KAAK,GAAGR,IAAI,CAACS,KAAK,CAACC,IAAI,CAAC,CAAC;IAC/BF,KAAK,CAACG,SAAS,CACbC,qBAAI,CAACC,MAAM,CAAC,CAAC,CACVC,SAAS,CAACZ,MAAM,CAACO,KAAK,IAAI,CAAC,GAAGR,KAAK,CAACQ,KAAK,CAAC,GAAGN,OAAO,CAACM,KAAK,EAAE,CAAC,CAAC,CAC9DR,KAAK,CAACA,KAAK,CAACQ,KAAK,EAAE,CAAC,CACzB,CAAC;IACD,OAAOD,KAAK;EACd,CAAC,CAAC;EAEF,oBACE,IAAAX,WAAA,CAAAkB,GAAA,EAACrB,gBAAA,CAAAsB,IAAI;IACHC,KAAK,EAAC,QAAQ;IACdjB,IAAI,EAAEM,YAAa;IACnBY,WAAW,EAAE,CAAE;IACfC,UAAU,EAAC,OAAO;IAClBC,SAAS,EAAC,OAAO;IACjBf,KAAK,EAAEA,KAAM;IAAA,GACTD;EAAS,CACd,CAAC;AAEN,CAAC;AAACiB,OAAA,CAAAvB,YAAA,GAAAA,YAAA","ignoreList":[]}
|
|
@@ -12,7 +12,7 @@ Object.defineProperty(exports, "ScalablePath", {
|
|
|
12
12
|
exports.ZoomableLineChart = void 0;
|
|
13
13
|
var _reactNativeSkia = require("@shopify/react-native-skia");
|
|
14
14
|
var _react = _interopRequireDefault(require("react"));
|
|
15
|
-
var _ScalablePath = require("./ScalablePath");
|
|
15
|
+
var _ScalablePath = require("./ScalablePath.js");
|
|
16
16
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
17
17
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
18
18
|
const ZoomableLineChart = function (props) {
|
|
@@ -8,6 +8,7 @@ var _reactNativeSkia = require("@shopify/react-native-skia");
|
|
|
8
8
|
var _react = require("react");
|
|
9
9
|
var _reactNativeGestureHandler = require("react-native-gesture-handler");
|
|
10
10
|
var _reactNativeReanimated = require("react-native-reanimated");
|
|
11
|
+
var _reactNativeWorklets = require("react-native-worklets");
|
|
11
12
|
/**
|
|
12
13
|
* Get the position of a point on the axis,
|
|
13
14
|
* given the current focal, scale and offset
|
|
@@ -44,13 +45,6 @@ const useScalableGesture = props => {
|
|
|
44
45
|
offsetX.value = startOffset;
|
|
45
46
|
lastOffsetX.value = startOffset;
|
|
46
47
|
}, [focalX, lastFocalX, lastOffsetX, lastScale, offsetX, scale, startOffset, startScale]);
|
|
47
|
-
const animateFocalPoint = newFocalX => {
|
|
48
|
-
'worklet';
|
|
49
|
-
|
|
50
|
-
focalX.value = (0, _reactNativeReanimated.withTiming)(newFocalX, {
|
|
51
|
-
duration: 300
|
|
52
|
-
}); // Smooth transition with duration
|
|
53
|
-
};
|
|
54
48
|
const panGesture = _reactNativeGestureHandler.Gesture.Pan().onUpdate(event => {
|
|
55
49
|
const newOffsetX = lastOffsetX.value + event.translationX;
|
|
56
50
|
offsetX.value = newOffsetX;
|
|
@@ -61,27 +55,26 @@ const useScalableGesture = props => {
|
|
|
61
55
|
const rightBound = getPositionWl(width, focalX.value, scale.value, offsetX.value);
|
|
62
56
|
let newOffset;
|
|
63
57
|
if (leftBound > startOffset) {
|
|
64
|
-
// console.log(`Left Boundary reached`);
|
|
65
58
|
newOffset = offsetX.value - leftBound + startOffset;
|
|
66
|
-
} else if (rightBound < width) {
|
|
67
|
-
// console.log(`Right Boundary reached`);
|
|
59
|
+
} else if (rightBound < width + startOffset) {
|
|
68
60
|
newOffset = offsetX.value + width - rightBound + startOffset;
|
|
69
61
|
} else {
|
|
70
62
|
newOffset = offsetX.value;
|
|
71
63
|
}
|
|
72
|
-
if (newOffset === undefined) throw new Error('newOffset is undefined');
|
|
73
64
|
offsetX.value = (0, _reactNativeReanimated.withTiming)(newOffset, {
|
|
74
65
|
duration: 300
|
|
75
66
|
});
|
|
76
67
|
lastOffsetX.value = newOffset;
|
|
77
68
|
});
|
|
78
69
|
const pinchGesture = _reactNativeGestureHandler.Gesture.Pinch().onUpdate(event => {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
70
|
+
// Rebase offsetX so moving the focal point doesn't shift the content
|
|
71
|
+
offsetX.value += (focalX.value - event.focalX) * (1 - scale.value);
|
|
72
|
+
focalX.value = event.focalX;
|
|
73
|
+
scale.value = (0, _reactNativeSkia.clamp)(lastScale.value * event.scale, 1, Infinity);
|
|
82
74
|
}).onEnd(() => {
|
|
83
75
|
lastScale.value = scale.value;
|
|
84
76
|
lastFocalX.value = focalX.value;
|
|
77
|
+
lastOffsetX.value = offsetX.value;
|
|
85
78
|
});
|
|
86
79
|
return {
|
|
87
80
|
scale,
|
|
@@ -107,11 +100,11 @@ const useUpdateAxis = function (props) {
|
|
|
107
100
|
if (_curScale === undefined || _prevScale === undefined) throw new Error('Got undefined scale');
|
|
108
101
|
if (currentScale >= _prevScale && currentScale < _curScale && currentIndex.value !== i) {
|
|
109
102
|
currentIndex.value = i;
|
|
110
|
-
if (onScaleChange !== undefined) (0,
|
|
103
|
+
if (onScaleChange !== undefined) (0, _reactNativeWorklets.scheduleOnRN)(onScaleChange, i);
|
|
111
104
|
break;
|
|
112
105
|
}
|
|
113
106
|
}
|
|
114
|
-
}
|
|
107
|
+
});
|
|
115
108
|
return {
|
|
116
109
|
currentIndex
|
|
117
110
|
};
|
|
@@ -150,30 +143,31 @@ const useCursorGesture = function (props) {
|
|
|
150
143
|
closestDataPoint,
|
|
151
144
|
isContinuous = true
|
|
152
145
|
} = props;
|
|
146
|
+
if (!isContinuous && points === undefined) console.warn('Points must be defined for non-continuous mode');
|
|
153
147
|
const xPosition = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
154
|
-
const yPosition = (0, _reactNativeReanimated.useSharedValue)(height);
|
|
148
|
+
const yPosition = (0, _reactNativeReanimated.useSharedValue)(height);
|
|
149
|
+
const setPosition = (x, y) => {
|
|
150
|
+
'worklet';
|
|
155
151
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
}).onUpdate(event => {
|
|
160
|
-
xPosition.value = (0, _reactNativeSkia.clamp)(event.x, 0, width);
|
|
161
|
-
yPosition.value = (0, _reactNativeSkia.clamp)(event.y, 0, height);
|
|
162
|
-
});
|
|
163
|
-
const tapGesture = _reactNativeGestureHandler.Gesture.Tap().onBegin(event => {
|
|
164
|
-
xPosition.value = (0, _reactNativeSkia.clamp)(event.x, 0, width);
|
|
165
|
-
yPosition.value = (0, _reactNativeSkia.clamp)(event.y, 0, height);
|
|
166
|
-
});
|
|
167
|
-
(0, _reactNativeReanimated.useDerivedValue)(() => {
|
|
168
|
-
if (isContinuous) return;
|
|
169
|
-
if (points === undefined) {
|
|
170
|
-
console.warn('Points must be defined for non-continuous mode');
|
|
152
|
+
yPosition.value = (0, _reactNativeSkia.clamp)(y, 0, height);
|
|
153
|
+
if (isContinuous || points === undefined) {
|
|
154
|
+
xPosition.value = (0, _reactNativeSkia.clamp)(x, 0, width);
|
|
171
155
|
return;
|
|
172
156
|
}
|
|
173
|
-
const _closestDot = getClosestPoint(
|
|
157
|
+
const _closestDot = getClosestPoint((0, _reactNativeSkia.clamp)(x, 0, width), points.value);
|
|
158
|
+
if (closestDataPoint !== undefined) closestDataPoint.value = _closestDot;
|
|
159
|
+
xPosition.value = _closestDot.x;
|
|
160
|
+
};
|
|
161
|
+
const panGesture = _reactNativeGestureHandler.Gesture.Pan().onBegin(event => setPosition(event.x, event.y)).onUpdate(event => setPosition(event.x, event.y));
|
|
162
|
+
const tapGesture = _reactNativeGestureHandler.Gesture.Tap().onBegin(event => setPosition(event.x, event.y));
|
|
163
|
+
|
|
164
|
+
// Re-snap the cursor when the data points change (e.g. switching graphs)
|
|
165
|
+
(0, _reactNativeReanimated.useAnimatedReaction)(() => points?.value, _points => {
|
|
166
|
+
if (isContinuous || _points === undefined || _points.length === 0) return;
|
|
167
|
+
const _closestDot = getClosestPoint(xPosition.value, _points);
|
|
174
168
|
if (closestDataPoint !== undefined) closestDataPoint.value = _closestDot;
|
|
175
169
|
xPosition.value = _closestDot.x;
|
|
176
|
-
}
|
|
170
|
+
});
|
|
177
171
|
return {
|
|
178
172
|
panGesture,
|
|
179
173
|
tapGesture,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeSkia","require","_react","_reactNativeGestureHandler","_reactNativeReanimated","getPositionWl","position","focalX","scale","offsetX","exports","useScalableGesture","props","width","startOffset","startScale","useSharedValue","lastScale","lastFocalX","lastOffsetX","reset","useCallback","value","
|
|
1
|
+
{"version":3,"names":["_reactNativeSkia","require","_react","_reactNativeGestureHandler","_reactNativeReanimated","_reactNativeWorklets","getPositionWl","position","focalX","scale","offsetX","exports","useScalableGesture","props","width","startOffset","startScale","useSharedValue","lastScale","lastFocalX","lastOffsetX","reset","useCallback","value","panGesture","Gesture","Pan","onUpdate","event","newOffsetX","translationX","onEnd","leftBound","rightBound","newOffset","withTiming","duration","pinchGesture","Pinch","clamp","Infinity","useUpdateAxis","scales","onScaleChange","currentIndex","useAnimatedReaction","currentScale","_","i","length","_prevScale","_curScale","undefined","Error","scheduleOnRN","getClosestPoint","x","dataPoints","closestPoint","minDistance","Math","abs","point","distance","useCursorGesture","height","points","closestDataPoint","isContinuous","console","warn","xPosition","yPosition","setPosition","y","_closestDot","onBegin","tapGesture","Tap","_points"],"sourceRoot":"../../../src","sources":["Charts/gesture.ts"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,0BAAA,GAAAF,OAAA;AACA,IAAAG,sBAAA,GAAAH,OAAA;AAMA,IAAAI,oBAAA,GAAAJ,OAAA;AAGA;AACA;AACA;AACA;AACO,MAAMK,aAAa,GAAG,SAAAA,CAC3BC,QAAgB,EAChBC,MAAc,EACdC,KAAa,EACbC,OAAe,EACf;EACA,SAAS;;EACT,OAAO,CAACH,QAAQ,GAAGC,MAAM,IAAIC,KAAK,GAAGD,MAAM,GAAGE,OAAO;AACvD,CAAC;AAACC,OAAA,CAAAL,aAAA,GAAAA,aAAA;AAiBF;AACA;AACA;AACO,MAAMM,kBAAkB,GAAIC,KAAuB,IAAsB;EAC9E,MAAM;IAAEC;EAAM,CAAC,GAAGD,KAAK;EACvB,MAAME,WAAW,GAAGF,KAAK,CAACE,WAAW,IAAI,CAAC;EAC1C,MAAMC,UAAU,GAAGH,KAAK,CAACG,UAAU,IAAI,CAAC;EACxC;EACA,MAAMP,KAAK,GAAG,IAAAQ,qCAAc,EAACD,UAAU,CAAC;EACxC,MAAME,SAAS,GAAG,IAAAD,qCAAc,EAACD,UAAU,CAAC;EAC5C,MAAMR,MAAM,GAAG,IAAAS,qCAAc,EAAC,CAAC,CAAC;EAChC,MAAME,UAAU,GAAG,IAAAF,qCAAc,EAAC,CAAC,CAAC;;EAEpC;EACA,MAAMP,OAAO,GAAG,IAAAO,qCAAc,EAACF,WAAW,CAAC;EAC3C,MAAMK,WAAW,GAAG,IAAAH,qCAAc,EAACF,WAAW,CAAC;EAE/C,MAAMM,KAAK,GAAG,IAAAC,kBAAW,EAAC,MAAM;IAC9Bb,KAAK,CAACc,KAAK,GAAGP,UAAU;IACxBE,SAAS,CAACK,KAAK,GAAGP,UAAU;IAC5BR,MAAM,CAACe,KAAK,GAAG,CAAC;IAChBJ,UAAU,CAACI,KAAK,GAAG,CAAC;IACpBb,OAAO,CAACa,KAAK,GAAGR,WAAW;IAC3BK,WAAW,CAACG,KAAK,GAAGR,WAAW;EACjC,CAAC,EAAE,CACDP,MAAM,EACNW,UAAU,EACVC,WAAW,EACXF,SAAS,EACTR,OAAO,EACPD,KAAK,EACLM,WAAW,EACXC,UAAU,CACX,CAAC;EAEF,MAAMQ,UAAU,GAAGC,kCAAO,CAACC,GAAG,CAAC,CAAC,CAC7BC,QAAQ,CAAEC,KAAK,IAAK;IACnB,MAAMC,UAAU,GAAGT,WAAW,CAACG,KAAK,GAAGK,KAAK,CAACE,YAAY;IACzDpB,OAAO,CAACa,KAAK,GAAGM,UAAU;EAC5B,CAAC,CAAC,CACDE,KAAK,CAAC,MAAM;IACXb,SAAS,CAACK,KAAK,GAAGd,KAAK,CAACc,KAAK;IAC7BJ,UAAU,CAACI,KAAK,GAAGf,MAAM,CAACe,KAAK;IAE/B,MAAMS,SAAS,GAAG1B,aAAa,CAC7B,CAAC,EACDE,MAAM,CAACe,KAAK,EACZd,KAAK,CAACc,KAAK,EACXb,OAAO,CAACa,KACV,CAAC;IACD,MAAMU,UAAU,GAAG3B,aAAa,CAC9BQ,KAAK,EACLN,MAAM,CAACe,KAAK,EACZd,KAAK,CAACc,KAAK,EACXb,OAAO,CAACa,KACV,CAAC;IAED,IAAIW,SAAS;IAEb,IAAIF,SAAS,GAAGjB,WAAW,EAAE;MAC3BmB,SAAS,GAAGxB,OAAO,CAACa,KAAK,GAAGS,SAAS,GAAGjB,WAAW;IACrD,CAAC,MAAM,IAAIkB,UAAU,GAAGnB,KAAK,GAAGC,WAAW,EAAE;MAC3CmB,SAAS,GAAGxB,OAAO,CAACa,KAAK,GAAGT,KAAK,GAAGmB,UAAU,GAAGlB,WAAW;IAC9D,CAAC,MAAM;MACLmB,SAAS,GAAGxB,OAAO,CAACa,KAAK;IAC3B;IAEAb,OAAO,CAACa,KAAK,GAAG,IAAAY,iCAAU,EAACD,SAAS,EAAE;MAAEE,QAAQ,EAAE;IAAI,CAAC,CAAC;IACxDhB,WAAW,CAACG,KAAK,GAAGW,SAAS;EAC/B,CAAC,CAAC;EAEJ,MAAMG,YAAY,GAAGZ,kCAAO,CAACa,KAAK,CAAC,CAAC,CACjCX,QAAQ,CAAEC,KAAK,IAAK;IACnB;IACAlB,OAAO,CAACa,KAAK,IAAI,CAACf,MAAM,CAACe,KAAK,GAAGK,KAAK,CAACpB,MAAM,KAAK,CAAC,GAAGC,KAAK,CAACc,KAAK,CAAC;IAClEf,MAAM,CAACe,KAAK,GAAGK,KAAK,CAACpB,MAAM;IAC3BC,KAAK,CAACc,KAAK,GAAG,IAAAgB,sBAAK,EAACrB,SAAS,CAACK,KAAK,GAAGK,KAAK,CAACnB,KAAK,EAAE,CAAC,EAAE+B,QAAQ,CAAC;EACjE,CAAC,CAAC,CACDT,KAAK,CAAC,MAAM;IACXb,SAAS,CAACK,KAAK,GAAGd,KAAK,CAACc,KAAK;IAC7BJ,UAAU,CAACI,KAAK,GAAGf,MAAM,CAACe,KAAK;IAC/BH,WAAW,CAACG,KAAK,GAAGb,OAAO,CAACa,KAAK;EACnC,CAAC,CAAC;EAEJ,OAAO;IACLd,KAAK;IACLD,MAAM;IACN6B,YAAY;IACZb,UAAU;IACVd,OAAO;IACPW;EACF,CAAC;AACH,CAAC;AAACV,OAAA,CAAAC,kBAAA,GAAAA,kBAAA;AAQK,MAAM6B,aAAa,GAAG,SAAAA,CAAU5B,KAAsB,EAAE;EAC7D,MAAM;IAAEJ,KAAK;IAAEiC,MAAM;IAAEC;EAAc,CAAC,GAAG9B,KAAK;EAC9C,MAAM+B,YAAY,GAAG,IAAA3B,qCAAc,EAAC,CAAC,CAAC;EAEtC,IAAA4B,0CAAmB,EACjB,MAAMpC,KAAK,CAACc,KAAK,EACjB,CAACuB,YAAY,EAAEC,CAAC,KAAK;IACnB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGN,MAAM,CAACO,MAAM,EAAED,CAAC,EAAE,EAAE;MACtC,MAAME,UAAU,GAAGR,MAAM,CAACM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;MACrC,MAAMG,SAAS,GAAGT,MAAM,CAACM,CAAC,CAAC;MAC3B,IAAIG,SAAS,KAAKC,SAAS,IAAIF,UAAU,KAAKE,SAAS,EACrD,MAAM,IAAIC,KAAK,CAAC,qBAAqB,CAAC;MAExC,IACEP,YAAY,IAAII,UAAU,IAC1BJ,YAAY,GAAGK,SAAS,IACxBP,YAAY,CAACrB,KAAK,KAAKyB,CAAC,EACxB;QACAJ,YAAY,CAACrB,KAAK,GAAGyB,CAAC;QACtB,IAAIL,aAAa,KAAKS,SAAS,EAAE,IAAAE,iCAAY,EAACX,aAAa,EAAEK,CAAC,CAAC;QAC/D;MACF;IACF;EACF,CACF,CAAC;EAED,OAAO;IAAEJ;EAAa,CAAC;AACzB,CAAC;AAACjC,OAAA,CAAA8B,aAAA,GAAAA,aAAA;AAUF;AACA;AACA;AACO,MAAMc,eAAe,GAAG,SAAAA,CAC7BC,CAAS,EACTC,UAAuB,EACZ;EACX,SAAS;;EACT,IAAIC,YAAY,GAAGD,UAAU,CAAC,CAAC,CAAC;EAChC,IAAIC,YAAY,KAAKN,SAAS,EAC5B,MAAM,IAAIC,KAAK,CAAC,kCAAkC,CAAC;EAErD,IAAIM,WAAW,GAAGC,IAAI,CAACC,GAAG,CAACL,CAAC,GAAGE,YAAY,CAACF,CAAC,CAAC;EAC9C,KAAK,IAAIR,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGS,UAAU,CAACR,MAAM,EAAED,CAAC,EAAE,EAAE;IAC1C,MAAMc,KAAK,GAAGL,UAAU,CAACT,CAAC,CAAC;IAC3B,IAAIc,KAAK,KAAKV,SAAS,EAAE,MAAM,IAAIC,KAAK,CAAC,2BAA2B,CAAC;IACrE,MAAMU,QAAQ,GAAGH,IAAI,CAACC,GAAG,CAACL,CAAC,GAAGM,KAAK,CAACN,CAAC,CAAC;IACtC,IAAIO,QAAQ,GAAGJ,WAAW,EAAE;MAC1BA,WAAW,GAAGI,QAAQ;MACtBL,YAAY,GAAGI,KAAK;IACtB;EACF;EACA,OAAOJ,YAAY;AACrB,CAAC;;AAED;AACA;AACA;AAFA/C,OAAA,CAAA4C,eAAA,GAAAA,eAAA;AAGO,MAAMS,gBAAgB,GAAG,SAAAA,CAAUnD,KAA4B,EAAE;EACtE,MAAM;IACJC,KAAK;IACLmD,MAAM;IACNC,MAAM;IACNC,gBAAgB;IAChBC,YAAY,GAAG;EACjB,CAAC,GAAGvD,KAAK;EAET,IAAI,CAACuD,YAAY,IAAIF,MAAM,KAAKd,SAAS,EACvCiB,OAAO,CAACC,IAAI,CAAC,gDAAgD,CAAC;EAEhE,MAAMC,SAAS,GAAG,IAAAtD,qCAAc,EAAC,CAAC,CAAC;EACnC,MAAMuD,SAAS,GAAG,IAAAvD,qCAAc,EAACgD,MAAM,CAAC;EAExC,MAAMQ,WAAW,GAAGA,CAACjB,CAAS,EAAEkB,CAAS,KAAK;IAC5C,SAAS;;IACTF,SAAS,CAACjD,KAAK,GAAG,IAAAgB,sBAAK,EAACmC,CAAC,EAAE,CAAC,EAAET,MAAM,CAAC;IACrC,IAAIG,YAAY,IAAIF,MAAM,KAAKd,SAAS,EAAE;MACxCmB,SAAS,CAAChD,KAAK,GAAG,IAAAgB,sBAAK,EAACiB,CAAC,EAAE,CAAC,EAAE1C,KAAK,CAAC;MACpC;IACF;IACA,MAAM6D,WAAW,GAAGpB,eAAe,CAAC,IAAAhB,sBAAK,EAACiB,CAAC,EAAE,CAAC,EAAE1C,KAAK,CAAC,EAAEoD,MAAM,CAAC3C,KAAK,CAAC;IACrE,IAAI4C,gBAAgB,KAAKf,SAAS,EAAEe,gBAAgB,CAAC5C,KAAK,GAAGoD,WAAW;IACxEJ,SAAS,CAAChD,KAAK,GAAGoD,WAAW,CAACnB,CAAC;EACjC,CAAC;EAED,MAAMhC,UAAU,GAAGC,kCAAO,CAACC,GAAG,CAAC,CAAC,CAC7BkD,OAAO,CAAEhD,KAAK,IAAK6C,WAAW,CAAC7C,KAAK,CAAC4B,CAAC,EAAE5B,KAAK,CAAC8C,CAAC,CAAC,CAAC,CACjD/C,QAAQ,CAAEC,KAAK,IAAK6C,WAAW,CAAC7C,KAAK,CAAC4B,CAAC,EAAE5B,KAAK,CAAC8C,CAAC,CAAC,CAAC;EAErD,MAAMG,UAAU,GAAGpD,kCAAO,CAACqD,GAAG,CAAC,CAAC,CAACF,OAAO,CAAEhD,KAAK,IAC7C6C,WAAW,CAAC7C,KAAK,CAAC4B,CAAC,EAAE5B,KAAK,CAAC8C,CAAC,CAC9B,CAAC;;EAED;EACA,IAAA7B,0CAAmB,EACjB,MAAMqB,MAAM,EAAE3C,KAAK,EAClBwD,OAAO,IAAK;IACX,IAAIX,YAAY,IAAIW,OAAO,KAAK3B,SAAS,IAAI2B,OAAO,CAAC9B,MAAM,KAAK,CAAC,EAC/D;IACF,MAAM0B,WAAW,GAAGpB,eAAe,CAACgB,SAAS,CAAChD,KAAK,EAAEwD,OAAO,CAAC;IAC7D,IAAIZ,gBAAgB,KAAKf,SAAS,EAAEe,gBAAgB,CAAC5C,KAAK,GAAGoD,WAAW;IACxEJ,SAAS,CAAChD,KAAK,GAAGoD,WAAW,CAACnB,CAAC;EACjC,CACF,CAAC;EAED,OAAO;IAAEhC,UAAU;IAAEqD,UAAU;IAAEN,SAAS;IAAEC;EAAU,CAAC;AACzD,CAAC;AAAC7D,OAAA,CAAAqD,gBAAA,GAAAA,gBAAA","ignoreList":[]}
|
|
@@ -8,27 +8,30 @@ var _reactNativeSkia = require("@shopify/react-native-skia");
|
|
|
8
8
|
var _d3Scale = require("d3-scale");
|
|
9
9
|
var shape = _interopRequireWildcard(require("d3-shape"));
|
|
10
10
|
var _reactNativeReanimated = require("react-native-reanimated");
|
|
11
|
-
var _gesture = require("./gesture");
|
|
12
|
-
var _maths = require("./maths");
|
|
11
|
+
var _gesture = require("./gesture.js");
|
|
12
|
+
var _maths = require("./maths.js");
|
|
13
13
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
14
|
+
/** @deprecated Use {@link BuildGraphConfig} instead */
|
|
15
|
+
|
|
14
16
|
const buildGraph = function (data, width, height, config) {
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
+
if (data.length === 0) throw new Error('buildGraph requires at least one data point');
|
|
18
|
+
const minX = config?.minX ?? Math.min(...data.map(d => d[0]));
|
|
19
|
+
const maxX = config?.maxX ?? Math.max(...data.map(d => d[0]));
|
|
17
20
|
const scaleX = (0, _d3Scale.scaleLinear)().domain([minX, maxX]).range([0, width]);
|
|
18
|
-
const minY = config?.minY ?? Math.min(...data.map(
|
|
19
|
-
const maxY = config?.maxY ?? Math.max(...data.map(
|
|
21
|
+
const minY = config?.minY ?? Math.min(...data.map(d => d[1]));
|
|
22
|
+
const maxY = config?.maxY ?? Math.max(...data.map(d => d[1]));
|
|
20
23
|
const scaleY = (0, _d3Scale.scaleLinear)().domain([minY, maxY]).range([height, 0]);
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
const dataPoints =
|
|
24
|
+
const path = shape.line().x(([x]) => scaleX(x)).y(([, y]) => scaleY(y)).curve(config?.curve ?? shape.curveBasis)(data);
|
|
25
|
+
if (path === null) throw new Error('Failed to build the line path');
|
|
26
|
+
const dataPoints = data.map(([x, y]) => ({
|
|
24
27
|
x: scaleX(x),
|
|
25
28
|
y: scaleY(y),
|
|
26
29
|
value: y
|
|
27
30
|
}));
|
|
28
31
|
const skiaPath = _reactNativeSkia.Skia.Path.MakeFromSVGString(path);
|
|
29
|
-
if (skiaPath == null) throw new Error('
|
|
32
|
+
if (skiaPath == null) throw new Error('Failed to parse the SVG path');
|
|
30
33
|
return {
|
|
31
|
-
data
|
|
34
|
+
data,
|
|
32
35
|
minY,
|
|
33
36
|
maxY,
|
|
34
37
|
path,
|
|
@@ -71,7 +74,6 @@ const scaleCommands = function (commands, scaleX, focalX, offsetX, scaleY) {
|
|
|
71
74
|
(0, _gesture.getPositionWl)(command[5], focalX.value, scaleX.value, offsetX.value), command[6] * _scaleY];
|
|
72
75
|
}
|
|
73
76
|
if (commandType === _reactNativeSkia.PathVerb.Close) return command;
|
|
74
|
-
if (commandType === _reactNativeSkia.PathVerb.Move) return command;
|
|
75
77
|
throw new Error(`Unsupported command type ${commandType}`);
|
|
76
78
|
});
|
|
77
79
|
};
|
|
@@ -103,27 +105,28 @@ const useDotsTransition = function (props) {
|
|
|
103
105
|
} = props;
|
|
104
106
|
(0, _reactNativeReanimated.useAnimatedReaction)(() => ({
|
|
105
107
|
_currentGraph: currentGraph.value,
|
|
106
|
-
_currentCommands: path.value.toCmds()
|
|
108
|
+
_currentCommands: path.value.toCmds(),
|
|
109
|
+
// Track the animating x values so y stays glued to the curve
|
|
110
|
+
// even when the path is swapped instantly or tweens on another duration
|
|
111
|
+
_xs: dots.map(d => d.x.value)
|
|
107
112
|
}), ({
|
|
108
113
|
_currentGraph,
|
|
109
114
|
_currentCommands
|
|
110
115
|
}) => {
|
|
111
116
|
const newDataPoints = dataPoints[_currentGraph];
|
|
112
117
|
if (newDataPoints === undefined) throw new Error('Data points cannot be undefined');
|
|
113
|
-
dots.
|
|
118
|
+
dots.forEach((_dot, i) => {
|
|
114
119
|
const _newDot = newDataPoints[i];
|
|
115
120
|
if (!_newDot) {
|
|
116
121
|
_dot.opacity.value = opacityWl(0);
|
|
117
122
|
return;
|
|
118
|
-
} else {
|
|
119
|
-
_dot.x.value = translateWl(_newDot.x);
|
|
120
|
-
const newY = (0, _maths.getYForX)(_currentCommands, _dot.x.value);
|
|
121
|
-
if (newY !== undefined) {
|
|
122
|
-
_dot.y.value = newY;
|
|
123
|
-
}
|
|
124
|
-
// _dot.y.value = withTiming(newDots[i]!.y, { duration: 1000 });
|
|
125
|
-
_dot.opacity.value = opacityWl(1);
|
|
126
123
|
}
|
|
124
|
+
_dot.x.value = translateWl(_newDot.x);
|
|
125
|
+
const newY = (0, _maths.getYForX)(_currentCommands, _dot.x.value);
|
|
126
|
+
if (newY !== undefined) {
|
|
127
|
+
_dot.y.value = newY;
|
|
128
|
+
}
|
|
129
|
+
_dot.opacity.value = opacityWl(1);
|
|
127
130
|
});
|
|
128
131
|
});
|
|
129
132
|
};
|