@obitrain/charts 0.11.0 → 0.12.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/README.md +2 -2
- package/lib/commonjs/Charts/BottomAxis/AxisLine.js +1 -1
- package/lib/commonjs/Charts/BottomAxis/BottomAxis.js +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/Cursor.js +15 -7
- package/lib/commonjs/Charts/Cursor.js.map +1 -1
- package/lib/commonjs/Charts/Dot.js +1 -1
- package/lib/commonjs/Charts/Dots.js +3 -3
- package/lib/commonjs/Charts/Dots.js.map +1 -1
- package/lib/commonjs/Charts/Linechart/index.js +1 -1
- package/lib/commonjs/Charts/YAxis.js +38 -25
- package/lib/commonjs/Charts/YAxis.js.map +1 -1
- package/lib/commonjs/Charts/ZoomableLinechart/ScalablePath.js +5 -4
- 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 +23 -14
- package/lib/commonjs/Charts/gesture.js.map +1 -1
- package/lib/commonjs/Charts/graphUtils.js +66 -16
- package/lib/commonjs/Charts/graphUtils.js.map +1 -1
- package/lib/commonjs/Charts/index.js +6 -0
- package/lib/commonjs/Charts/index.js.map +1 -1
- package/lib/commonjs/Charts/maths.js +107 -16
- package/lib/commonjs/Charts/maths.js.map +1 -1
- package/lib/module/Charts/BottomAxis/AxisLine.js +1 -1
- package/lib/module/Charts/BottomAxis/AxisLine.js.map +1 -1
- package/lib/module/Charts/BottomAxis/BottomAxis.js +1 -1
- package/lib/module/Charts/BottomAxis/BottomAxis.js.map +1 -1
- package/lib/module/Charts/BottomAxis/Tick.js +3 -3
- package/lib/module/Charts/BottomAxis/Tick.js.map +1 -1
- package/lib/module/Charts/Cursor.js +16 -8
- package/lib/module/Charts/Cursor.js.map +1 -1
- package/lib/module/Charts/Dot.js +1 -1
- package/lib/module/Charts/Dot.js.map +1 -1
- package/lib/module/Charts/Dots.js +3 -3
- package/lib/module/Charts/Dots.js.map +1 -1
- package/lib/module/Charts/Linechart/index.js +1 -1
- package/lib/module/Charts/Linechart/index.js.map +1 -1
- package/lib/module/Charts/YAxis.js +39 -25
- package/lib/module/Charts/YAxis.js.map +1 -1
- package/lib/module/Charts/ZoomableLinechart/ScalablePath.js +5 -4
- 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 +23 -14
- package/lib/module/Charts/gesture.js.map +1 -1
- package/lib/module/Charts/graphUtils.js +68 -18
- package/lib/module/Charts/graphUtils.js.map +1 -1
- package/lib/module/Charts/index.js +1 -1
- package/lib/module/Charts/index.js.map +1 -1
- package/lib/module/Charts/maths.js +101 -14
- package/lib/module/Charts/maths.js.map +1 -1
- package/lib/typescript/commonjs/src/Charts/BottomAxis/AxisLine.d.ts +1 -1
- package/lib/typescript/commonjs/src/Charts/BottomAxis/AxisLine.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/Charts/BottomAxis/BottomAxis.d.ts +1 -1
- package/lib/typescript/commonjs/src/Charts/BottomAxis/BottomAxis.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/Charts/BottomAxis/Tick.d.ts +1 -1
- package/lib/typescript/commonjs/src/Charts/BottomAxis/Tick.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/Charts/Cursor.d.ts +2 -2
- package/lib/typescript/commonjs/src/Charts/Cursor.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/Charts/Dot.d.ts +1 -1
- package/lib/typescript/commonjs/src/Charts/Dot.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/Charts/Dots.d.ts +1 -1
- package/lib/typescript/commonjs/src/Charts/Dots.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/Charts/Linechart/index.d.ts +1 -1
- package/lib/typescript/commonjs/src/Charts/Linechart/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/Charts/YAxis.d.ts +3 -4
- package/lib/typescript/commonjs/src/Charts/YAxis.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/Charts/ZoomableLinechart/ScalablePath.d.ts +1 -1
- package/lib/typescript/commonjs/src/Charts/ZoomableLinechart/ScalablePath.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/Charts/ZoomableLinechart/index.d.ts +1 -1
- package/lib/typescript/commonjs/src/Charts/ZoomableLinechart/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/Charts/gesture.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/Charts/graphUtils.d.ts +1 -1
- package/lib/typescript/commonjs/src/Charts/graphUtils.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/Charts/index.d.ts +1 -1
- package/lib/typescript/commonjs/src/Charts/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/Charts/maths.d.ts +15 -1
- package/lib/typescript/commonjs/src/Charts/maths.d.ts.map +1 -1
- package/lib/typescript/module/src/Charts/BottomAxis/AxisLine.d.ts +1 -1
- package/lib/typescript/module/src/Charts/BottomAxis/AxisLine.d.ts.map +1 -1
- package/lib/typescript/module/src/Charts/BottomAxis/BottomAxis.d.ts +1 -1
- package/lib/typescript/module/src/Charts/BottomAxis/BottomAxis.d.ts.map +1 -1
- package/lib/typescript/module/src/Charts/BottomAxis/Tick.d.ts +1 -1
- package/lib/typescript/module/src/Charts/BottomAxis/Tick.d.ts.map +1 -1
- package/lib/typescript/module/src/Charts/Cursor.d.ts +2 -2
- package/lib/typescript/module/src/Charts/Cursor.d.ts.map +1 -1
- package/lib/typescript/module/src/Charts/Dot.d.ts +1 -1
- package/lib/typescript/module/src/Charts/Dot.d.ts.map +1 -1
- package/lib/typescript/module/src/Charts/Dots.d.ts +1 -1
- package/lib/typescript/module/src/Charts/Dots.d.ts.map +1 -1
- package/lib/typescript/module/src/Charts/Linechart/index.d.ts +1 -1
- package/lib/typescript/module/src/Charts/Linechart/index.d.ts.map +1 -1
- package/lib/typescript/module/src/Charts/YAxis.d.ts +3 -4
- package/lib/typescript/module/src/Charts/YAxis.d.ts.map +1 -1
- package/lib/typescript/module/src/Charts/ZoomableLinechart/ScalablePath.d.ts +1 -1
- package/lib/typescript/module/src/Charts/ZoomableLinechart/ScalablePath.d.ts.map +1 -1
- package/lib/typescript/module/src/Charts/ZoomableLinechart/index.d.ts +1 -1
- package/lib/typescript/module/src/Charts/ZoomableLinechart/index.d.ts.map +1 -1
- package/lib/typescript/module/src/Charts/gesture.d.ts.map +1 -1
- package/lib/typescript/module/src/Charts/graphUtils.d.ts +1 -1
- package/lib/typescript/module/src/Charts/graphUtils.d.ts.map +1 -1
- package/lib/typescript/module/src/Charts/index.d.ts +1 -1
- package/lib/typescript/module/src/Charts/index.d.ts.map +1 -1
- package/lib/typescript/module/src/Charts/maths.d.ts +15 -1
- package/lib/typescript/module/src/Charts/maths.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/Charts/BottomAxis/AxisLine.tsx +1 -1
- package/src/Charts/BottomAxis/BottomAxis.tsx +1 -1
- package/src/Charts/BottomAxis/Tick.tsx +7 -5
- package/src/Charts/Cursor.tsx +17 -9
- package/src/Charts/Dot.tsx +1 -1
- package/src/Charts/Dots.tsx +3 -3
- package/src/Charts/Linechart/index.tsx +1 -1
- package/src/Charts/YAxis.tsx +43 -36
- package/src/Charts/ZoomableLinechart/ScalablePath.tsx +7 -8
- package/src/Charts/ZoomableLinechart/index.tsx +1 -1
- package/src/Charts/gesture.ts +23 -20
- package/src/Charts/graphUtils.ts +75 -16
- package/src/Charts/index.tsx +1 -0
- package/src/Charts/maths.ts +107 -16
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ zoomable/pannable variant, a scalable bottom axis and a cursor, all driven from
|
|
|
9
9
|
|
|
10
10
|
```sh
|
|
11
11
|
yarn add @obitrain/charts
|
|
12
|
-
yarn add
|
|
12
|
+
yarn add react-native-skia react-native-reanimated react-native-worklets react-native-gesture-handler d3-scale d3-shape
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
`react-native-worklets` is only needed with Reanimated 4 (it is an optional peer dependency).
|
|
@@ -18,7 +18,7 @@ yarn add @shopify/react-native-skia react-native-reanimated react-native-worklet
|
|
|
18
18
|
|
|
19
19
|
| Peer dependency | Supported versions |
|
|
20
20
|
| ---------------------------- | ----------------------------------------------------- |
|
|
21
|
-
|
|
|
21
|
+
| `react-native-skia` | `>=3.0.4` (Android minSdk 26) |
|
|
22
22
|
| `react-native-reanimated` | 3.x or 4.x |
|
|
23
23
|
| `react-native-worklets` | `>=0.10.0` (optional, required with Reanimated 4) |
|
|
24
24
|
| `react-native-gesture-handler` | 2.x or 3.x |
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.AxisLine = void 0;
|
|
7
|
-
var _reactNativeSkia = require("
|
|
7
|
+
var _reactNativeSkia = require("react-native-skia");
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
9
|
var _reactNativeReanimated = require("react-native-reanimated");
|
|
10
10
|
var _gesture = require("../gesture.js");
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.BottomAxis = void 0;
|
|
7
|
-
var _reactNativeSkia = require("
|
|
7
|
+
var _reactNativeSkia = require("react-native-skia");
|
|
8
8
|
var _react = require("react");
|
|
9
9
|
var _AxisLine = require("./AxisLine.js");
|
|
10
10
|
var _Tick = require("./Tick.js");
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.Tick = void 0;
|
|
7
|
-
var _reactNativeSkia = require("
|
|
7
|
+
var _reactNativeSkia = require("react-native-skia");
|
|
8
8
|
var _react = require("react");
|
|
9
9
|
var _reactNativeReanimated = require("react-native-reanimated");
|
|
10
10
|
var _gesture = require("../gesture.js");
|
|
@@ -30,7 +30,7 @@ const TickComponent = function (props) {
|
|
|
30
30
|
const transform = (0, _reactNativeReanimated.useDerivedValue)(() => [{
|
|
31
31
|
translateX: (0, _gesture.getPositionWl)(initPosition, focalX.value, scale.value, offsetX.value)
|
|
32
32
|
}]);
|
|
33
|
-
const width = font.getGlyphWidths(font.getGlyphIDs(label)).reduce((a, b) => a + b, 0);
|
|
33
|
+
const width = (0, _react.useMemo)(() => font.getGlyphWidths(font.getGlyphIDs(label)).reduce((a, b) => a + b, 0), [font, label]);
|
|
34
34
|
const labelX = labelAlign === 'left' ? labelGap : -width / 2;
|
|
35
35
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSkia.Group, {
|
|
36
36
|
transform: transform,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeSkia","require","_react","_reactNativeReanimated","_gesture","_jsxRuntime","TickComponent","props","label","scale","focalX","offsetX","initPosition","font","color","labelColor","tickLength","strokeWidth","dash","showLabel","labelAlign","labelGap","offsetY","transform","useDerivedValue","translateX","getPositionWl","value","width","getGlyphWidths","getGlyphIDs","reduce","a","b","labelX","jsxs","Group","children","jsx","Line","p1","vec","p2","undefined","DashPathEffect","intervals","Text","text","x","y","Tick","exports","memo","displayName"],"sourceRoot":"../../../../src","sources":["Charts/BottomAxis/Tick.tsx"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AASA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAA2C,IAAAI,WAAA,GAAAJ,OAAA;AAwB3C,MAAMK,aAAa,GAAG,SAAAA,CAAUC,KAAgB,EAAE;EAChD,MAAM;IACJC,KAAK;IACLC,KAAK;IACLC,MAAM;IACNC,OAAO;IACPC,YAAY;IACZC,IAAI;IACJC,KAAK,GAAG,OAAO;IACfC,UAAU;IACVC,UAAU,GAAG,EAAE;IACfC,WAAW;IACXC,IAAI;IACJC,SAAS,GAAG,IAAI;IAChBC,UAAU,GAAG,QAAQ;IACrBC,QAAQ,GAAG;EACb,CAAC,GAAGd,KAAK;EACT,MAAMe,OAAO,GAAGf,KAAK,CAACe,OAAO,IAAI,CAAC;EAClC,MAAMC,SAAS,GAAG,IAAAC,sCAAe,EAAC,MAAM,CACtC;IACEC,UAAU,EAAE,IAAAC,sBAAa,EACvBd,YAAY,EACZF,MAAM,CAACiB,KAAK,EACZlB,KAAK,CAACkB,KAAK,EACXhB,OAAO,CAACgB,KACV;EACF,CAAC,CACF,CAAC;EACF,MAAMC,KAAK,
|
|
1
|
+
{"version":3,"names":["_reactNativeSkia","require","_react","_reactNativeReanimated","_gesture","_jsxRuntime","TickComponent","props","label","scale","focalX","offsetX","initPosition","font","color","labelColor","tickLength","strokeWidth","dash","showLabel","labelAlign","labelGap","offsetY","transform","useDerivedValue","translateX","getPositionWl","value","width","useMemo","getGlyphWidths","getGlyphIDs","reduce","a","b","labelX","jsxs","Group","children","jsx","Line","p1","vec","p2","undefined","DashPathEffect","intervals","Text","text","x","y","Tick","exports","memo","displayName"],"sourceRoot":"../../../../src","sources":["Charts/BottomAxis/Tick.tsx"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AASA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAA2C,IAAAI,WAAA,GAAAJ,OAAA;AAwB3C,MAAMK,aAAa,GAAG,SAAAA,CAAUC,KAAgB,EAAE;EAChD,MAAM;IACJC,KAAK;IACLC,KAAK;IACLC,MAAM;IACNC,OAAO;IACPC,YAAY;IACZC,IAAI;IACJC,KAAK,GAAG,OAAO;IACfC,UAAU;IACVC,UAAU,GAAG,EAAE;IACfC,WAAW;IACXC,IAAI;IACJC,SAAS,GAAG,IAAI;IAChBC,UAAU,GAAG,QAAQ;IACrBC,QAAQ,GAAG;EACb,CAAC,GAAGd,KAAK;EACT,MAAMe,OAAO,GAAGf,KAAK,CAACe,OAAO,IAAI,CAAC;EAClC,MAAMC,SAAS,GAAG,IAAAC,sCAAe,EAAC,MAAM,CACtC;IACEC,UAAU,EAAE,IAAAC,sBAAa,EACvBd,YAAY,EACZF,MAAM,CAACiB,KAAK,EACZlB,KAAK,CAACkB,KAAK,EACXhB,OAAO,CAACgB,KACV;EACF,CAAC,CACF,CAAC;EACF,MAAMC,KAAK,GAAG,IAAAC,cAAO,EACnB,MACEhB,IAAI,CAACiB,cAAc,CAACjB,IAAI,CAACkB,WAAW,CAACvB,KAAK,CAAC,CAAC,CAACwB,MAAM,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,GAAGC,CAAC,EAAE,CAAC,CAAC,EACzE,CAACrB,IAAI,EAAEL,KAAK,CACd,CAAC;EACD,MAAM2B,MAAM,GAAGf,UAAU,KAAK,MAAM,GAAGC,QAAQ,GAAG,CAACO,KAAK,GAAG,CAAC;EAE5D,oBACE,IAAAvB,WAAA,CAAA+B,IAAA,EAACpC,gBAAA,CAAAqC,KAAK;IAACd,SAAS,EAAEA,SAAU;IAAAe,QAAA,gBAC1B,IAAAjC,WAAA,CAAAkC,GAAA,EAACvC,gBAAA,CAAAwC,IAAI;MACH1B,KAAK,EAAEA,KAAM;MACbG,WAAW,EAAEA,WAAY;MACzBwB,EAAE,EAAE,IAAAC,oBAAG,EAAC,CAAC,EAAEpB,OAAO,CAAE;MACpBqB,EAAE,EAAE,IAAAD,oBAAG,EAAC,CAAC,EAAEpB,OAAO,GAAGN,UAAU,CAAE;MAAAsB,QAAA,EAEhCpB,IAAI,KAAK0B,SAAS,gBAAG,IAAAvC,WAAA,CAAAkC,GAAA,EAACvC,gBAAA,CAAA6C,cAAc;QAACC,SAAS,EAAE5B;MAAK,CAAE,CAAC,GAAG;IAAI,CAC5D,CAAC,EACNC,SAAS,gBACR,IAAAd,WAAA,CAAAkC,GAAA,EAACvC,gBAAA,CAAA+C,IAAI;MACHC,IAAI,EAAExC,KAAM;MACZM,KAAK,EAAEC,UAAU,IAAID,KAAM;MAC3BmC,CAAC,EAAEd,MAAO;MACVe,CAAC,EAAE5B,OAAO,GAAG,EAAG;MAChBT,IAAI,EAAEA;IAAK,CACZ,CAAC,GACA,IAAI;EAAA,CACH,CAAC;AAEZ,CAAC;;AAED;AACA;AACO,MAAMsC,IAAI,GAAAC,OAAA,CAAAD,IAAA,gBAAG,IAAAE,WAAI,EAAC/C,aAAa,CAAC;AACvC6C,IAAI,CAACG,WAAW,GAAG,MAAM","ignoreList":[]}
|
|
@@ -4,7 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.Cursor = void 0;
|
|
7
|
-
var _reactNativeSkia = require("
|
|
7
|
+
var _reactNativeSkia = require("react-native-skia");
|
|
8
|
+
var _react = require("react");
|
|
8
9
|
var _reactNativeReanimated = require("react-native-reanimated");
|
|
9
10
|
var _maths = require("./maths.js");
|
|
10
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
@@ -19,15 +20,22 @@ const Cursor = function ({
|
|
|
19
20
|
translateY,
|
|
20
21
|
size = CURSOR_SIZE
|
|
21
22
|
}) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
const conflictingProps = currentValue !== undefined && translateY !== undefined;
|
|
24
|
+
(0, _react.useEffect)(() => {
|
|
25
|
+
if (conflictingProps) console.warn('currentValue has no effect when translateY is set');
|
|
26
|
+
}, [conflictingProps]);
|
|
27
|
+
|
|
28
|
+
// Normalized once per path change, not on every cursor move
|
|
29
|
+
const beziers = (0, _reactNativeReanimated.useDerivedValue)(() => {
|
|
26
30
|
const _commands = commands?.value;
|
|
27
|
-
|
|
31
|
+
return _commands === undefined ? undefined : (0, _maths.commandsToBezier)(_commands);
|
|
32
|
+
});
|
|
33
|
+
const derivedTranslateY = (0, _reactNativeReanimated.useDerivedValue)(() => {
|
|
34
|
+
const _beziers = beziers.value;
|
|
35
|
+
if (_beziers === undefined) {
|
|
28
36
|
return 0;
|
|
29
37
|
}
|
|
30
|
-
const _value = (0, _maths.
|
|
38
|
+
const _value = (0, _maths.getYForXOnBeziers)(_beziers, positionX.value) ?? 0;
|
|
31
39
|
if (translateY === undefined && currentValue !== undefined) {
|
|
32
40
|
currentValue.value = _value;
|
|
33
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeSkia","require","_reactNativeReanimated","_maths","_jsxRuntime","CURSOR_SIZE","Cursor","commands","positionX","color","strokeColor","strokeWidth","currentValue","translateY","size","undefined","console","warn","
|
|
1
|
+
{"version":3,"names":["_reactNativeSkia","require","_react","_reactNativeReanimated","_maths","_jsxRuntime","CURSOR_SIZE","Cursor","commands","positionX","color","strokeColor","strokeWidth","currentValue","translateY","size","conflictingProps","undefined","useEffect","console","warn","beziers","useDerivedValue","_commands","value","commandsToBezier","derivedTranslateY","_beziers","_value","getYForXOnBeziers","_translateY","transform","translateX","jsxs","Fragment","children","jsx","Circle","cx","cy","r","style","exports"],"sourceRoot":"../../../src","sources":["Charts/Cursor.tsx"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAA8D,IAAAI,WAAA,GAAAJ,OAAA;AAE9D,MAAMK,WAAW,GAAG,EAAE;AActB,MAAMC,MAAuB,GAAG,SAAAA,CAAU;EACxCC,QAAQ;EACRC,SAAS;EACTC,KAAK;EACLC,WAAW;EACXC,WAAW,GAAG,CAAC;EACfC,YAAY;EACZC,UAAU;EACVC,IAAI,GAAGT;AACT,CAAC,EAAE;EACD,MAAMU,gBAAgB,GAAGH,YAAY,KAAKI,SAAS,IAAIH,UAAU,KAAKG,SAAS;EAC/E,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAIF,gBAAgB,EAClBG,OAAO,CAACC,IAAI,CAAC,mDAAmD,CAAC;EACrE,CAAC,EAAE,CAACJ,gBAAgB,CAAC,CAAC;;EAEtB;EACA,MAAMK,OAAO,GAAG,IAAAC,sCAAe,EAAC,MAAM;IACpC,MAAMC,SAAS,GAAGf,QAAQ,EAAEgB,KAAK;IACjC,OAAOD,SAAS,KAAKN,SAAS,GAAGA,SAAS,GAAG,IAAAQ,uBAAgB,EAACF,SAAS,CAAC;EAC1E,CAAC,CAAC;EAEF,MAAMG,iBAAiB,GAAG,IAAAJ,sCAAe,EAAC,MAAM;IAC9C,MAAMK,QAAQ,GAAGN,OAAO,CAACG,KAAK;IAC9B,IAAIG,QAAQ,KAAKV,SAAS,EAAE;MAC1B,OAAO,CAAC;IACV;IACA,MAAMW,MAAM,GAAG,IAAAC,wBAAiB,EAACF,QAAQ,EAAElB,SAAS,CAACe,KAAK,CAAC,IAAI,CAAC;IAChE,IAAIV,UAAU,KAAKG,SAAS,IAAIJ,YAAY,KAAKI,SAAS,EAAE;MAC1DJ,YAAY,CAACW,KAAK,GAAGI,MAAM;IAC7B;IACA,OAAOA,MAAM;EACf,CAAC,CAAC;EAEF,MAAME,WAAW,GAAGhB,UAAU,IAAIY,iBAAiB;EAEnD,MAAMK,SAAS,GAAG,IAAAT,sCAAe,EAAC,MAAM,CACtC;IAAEU,UAAU,EAAEvB,SAAS,CAACe;EAAM,CAAC,EAC/B;IAAEV,UAAU,EAAEgB,WAAW,CAACN,KAAK,IAAI;EAAE,CAAC,CACvC,CAAC;EACF,oBACE,IAAAnB,WAAA,CAAA4B,IAAA,EAAA5B,WAAA,CAAA6B,QAAA;IAAAC,QAAA,gBACE,IAAA9B,WAAA,CAAA+B,GAAA,EAACpC,gBAAA,CAAAqC,MAAM;MAACN,SAAS,EAAEA,SAAU;MAACO,EAAE,EAAE,CAAE;MAACC,EAAE,EAAE,CAAE;MAACC,CAAC,EAAEzB,IAAK;MAACL,KAAK,EAAEA;IAAM,CAAE,CAAC,EACpEC,WAAW,KAAKM,SAAS,gBACxB,IAAAZ,WAAA,CAAA+B,GAAA,EAACpC,gBAAA,CAAAqC,MAAM;MACLN,SAAS,EAAEA,SAAU;MACrBO,EAAE,EAAE,CAAE;MACNC,EAAE,EAAE,CAAE;MACNC,CAAC,EAAEzB,IAAK;MACRL,KAAK,EAAEC,WAAY;MACnB8B,KAAK,EAAC,QAAQ;MACd7B,WAAW,EAAEA;IAAY,CAC1B,CAAC,GACA,IAAI;EAAA,CACR,CAAC;AAEP,CAAC;AAAC8B,OAAA,CAAAnC,MAAA,GAAAA,MAAA","ignoreList":[]}
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.Dot = void 0;
|
|
7
|
-
var _reactNativeSkia = require("
|
|
7
|
+
var _reactNativeSkia = require("react-native-skia");
|
|
8
8
|
var _react = require("react");
|
|
9
9
|
var _reactNativeReanimated = require("react-native-reanimated");
|
|
10
10
|
var _gesture = require("./gesture.js");
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.Dots = void 0;
|
|
7
|
-
var _reactNativeSkia = require("
|
|
7
|
+
var _reactNativeSkia = require("react-native-skia");
|
|
8
8
|
var _reactNativeReanimated = require("react-native-reanimated");
|
|
9
9
|
var _gesture = require("./gesture.js");
|
|
10
10
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
@@ -28,7 +28,7 @@ const Dots = function (props) {
|
|
|
28
28
|
offsetX
|
|
29
29
|
} = props;
|
|
30
30
|
const path = (0, _reactNativeReanimated.useDerivedValue)(() => {
|
|
31
|
-
const p = _reactNativeSkia.Skia.
|
|
31
|
+
const p = _reactNativeSkia.Skia.PathBuilder.Make();
|
|
32
32
|
const margin = r + strokeWidth;
|
|
33
33
|
for (const dot of dots) {
|
|
34
34
|
if (dot.opacity.value < 0.5) continue;
|
|
@@ -55,7 +55,7 @@ const Dots = function (props) {
|
|
|
55
55
|
p.addCircle(x, y, r);
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
return p;
|
|
58
|
+
return p.build();
|
|
59
59
|
});
|
|
60
60
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
61
61
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Path, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeSkia","require","_reactNativeReanimated","_gesture","_jsxRuntime","Dots","props","dots","r","shape","color","fillColor","strokeWidth","width","scale","focalX","offsetX","path","useDerivedValue","p","Skia","
|
|
1
|
+
{"version":3,"names":["_reactNativeSkia","require","_reactNativeReanimated","_gesture","_jsxRuntime","Dots","props","dots","r","shape","color","fillColor","strokeWidth","width","scale","focalX","offsetX","path","useDerivedValue","p","Skia","PathBuilder","Make","margin","dot","opacity","value","x","undefined","getPositionWl","y","addPoly","addCircle","build","jsxs","Fragment","children","jsx","Path","style","strokeJoin","exports"],"sourceRoot":"../../../src","sources":["Charts/Dots.tsx"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAEA,IAAAC,sBAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAA0C,IAAAG,WAAA,GAAAH,OAAA;AAqB1C;AACA;AACA;AACA;AACA;AACA;AACA,MAAMI,IAAmB,GAAG,SAAAA,CAAUC,KAAK,EAAE;EAC3C,MAAM;IACJC,IAAI;IACJC,CAAC,GAAG,CAAC;IACLC,KAAK,GAAG,QAAQ;IAChBC,KAAK,GAAG,OAAO;IACfC,SAAS;IACTC,WAAW,GAAG,CAAC;IACfC,KAAK;IACLC,KAAK;IACLC,MAAM;IACNC;EACF,CAAC,GAAGV,KAAK;EAET,MAAMW,IAAI,GAAG,IAAAC,sCAAe,EAAC,MAAM;IACjC,MAAMC,CAAC,GAAGC,qBAAI,CAACC,WAAW,CAACC,IAAI,CAAC,CAAC;IACjC,MAAMC,MAAM,GAAGf,CAAC,GAAGI,WAAW;IAC9B,KAAK,MAAMY,GAAG,IAAIjB,IAAI,EAAE;MACtB,IAAIiB,GAAG,CAACC,OAAO,CAACC,KAAK,GAAG,GAAG,EAAE;MAC7B,MAAMC,CAAC,GACLb,KAAK,KAAKc,SAAS,IAAIb,MAAM,KAAKa,SAAS,IAAIZ,OAAO,KAAKY,SAAS,GAChEJ,GAAG,CAACG,CAAC,CAACD,KAAK,GACX,IAAAG,sBAAa,EACXL,GAAG,CAACG,CAAC,CAACD,KAAK,EACXX,MAAM,CAACW,KAAK,EACZZ,KAAK,CAACY,KAAK,EACXV,OAAO,CAACU,KACV,CAAC;MACP,IAAIb,KAAK,KAAKe,SAAS,KAAKD,CAAC,GAAG,CAACJ,MAAM,IAAII,CAAC,GAAGd,KAAK,GAAGU,MAAM,CAAC,EAAE;MAChE,MAAMO,CAAC,GAAGN,GAAG,CAACM,CAAC,CAACJ,KAAK;MACrB,IAAIjB,KAAK,KAAK,SAAS,EAAE;QACvB;QACA;QACAU,CAAC,CAACY,OAAO,CACP,CACE;UAAEJ,CAAC;UAAEG,CAAC,EAAEA,CAAC,GAAGtB;QAAE,CAAC,EACf;UAAEmB,CAAC,EAAEA,CAAC,GAAGnB,CAAC;UAAEsB;QAAE,CAAC,EACf;UAAEH,CAAC;UAAEG,CAAC,EAAEA,CAAC,GAAGtB;QAAE,CAAC,EACf;UAAEmB,CAAC,EAAEA,CAAC,GAAGnB,CAAC;UAAEsB;QAAE,CAAC,CAChB,EACD,IACF,CAAC;MACH,CAAC,MAAM;QACLX,CAAC,CAACa,SAAS,CAACL,CAAC,EAAEG,CAAC,EAAEtB,CAAC,CAAC;MACtB;IACF;IACA,OAAOW,CAAC,CAACc,KAAK,CAAC,CAAC;EAClB,CAAC,CAAC;EAEF,oBACE,IAAA7B,WAAA,CAAA8B,IAAA,EAAA9B,WAAA,CAAA+B,QAAA;IAAAC,QAAA,gBACE,IAAAhC,WAAA,CAAAiC,GAAA,EAACrC,gBAAA,CAAAsC,IAAI;MAACrB,IAAI,EAAEA,IAAK;MAACP,KAAK,EAAEC,SAAS,IAAID;IAAM,CAAE,CAAC,EAC9CC,SAAS,KAAKiB,SAAS,gBACtB,IAAAxB,WAAA,CAAAiC,GAAA,EAACrC,gBAAA,CAAAsC,IAAI;MACHrB,IAAI,EAAEA,IAAK;MACXsB,KAAK,EAAC,QAAQ;MACd7B,KAAK,EAAEA,KAAM;MACbE,WAAW,EAAEA,WAAY;MACzB4B,UAAU,EAAC;IAAO,CACnB,CAAC,GACA,IAAI;EAAA,CACR,CAAC;AAEP,CAAC;AAACC,OAAA,CAAApC,IAAA,GAAAA,IAAA","ignoreList":[]}
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.LineChart = void 0;
|
|
7
|
-
var _reactNativeSkia = require("
|
|
7
|
+
var _reactNativeSkia = require("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 }; }
|
|
@@ -4,7 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.getPaddedTicks = exports.YAxis = void 0;
|
|
7
|
-
var _reactNativeSkia = require("
|
|
7
|
+
var _reactNativeSkia = require("react-native-skia");
|
|
8
|
+
var _react = require("react");
|
|
8
9
|
var _reactNative = require("react-native");
|
|
9
10
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
10
11
|
const defaultFormatLabel = value => `${Math.round(value)}`;
|
|
@@ -31,34 +32,46 @@ const YAxis = function (props) {
|
|
|
31
32
|
showLabels = true,
|
|
32
33
|
formatLabel = defaultFormatLabel
|
|
33
34
|
} = props;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
|
|
36
|
+
// Measured once per input change: parents re-render while panning
|
|
37
|
+
const rows = (0, _react.useMemo)(() => {
|
|
38
|
+
// A flat range would divide by zero
|
|
39
|
+
const span = maxY - minY || 1;
|
|
40
|
+
const values = props.values ?? Array.from({
|
|
41
|
+
length: nbTicks
|
|
42
|
+
}, (_, i) => minY + (i + 1) * (maxY - minY) / nbTicks);
|
|
43
|
+
return values.map(value => {
|
|
40
44
|
const label = formatLabel(value);
|
|
41
45
|
const labelWidth = font.getGlyphWidths(font.getGlyphIDs(label)).reduce((a, b) => a + b, 0);
|
|
42
|
-
|
|
43
|
-
|
|
46
|
+
return {
|
|
47
|
+
label,
|
|
48
|
+
labelWidth,
|
|
44
49
|
transform: [{
|
|
45
|
-
translateY:
|
|
50
|
+
translateY: height - (value - minY) * height / span
|
|
46
51
|
}],
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
52
|
+
p1: (0, _reactNativeSkia.vec)(0, 0),
|
|
53
|
+
p2: (0, _reactNativeSkia.vec)(showLabels ? width - 10 - labelWidth : width, 0)
|
|
54
|
+
};
|
|
55
|
+
});
|
|
56
|
+
}, [props.values, nbTicks, minY, maxY, height, width, font, showLabels, formatLabel]);
|
|
57
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Group, {
|
|
58
|
+
children: rows.map((row, i) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSkia.Group, {
|
|
59
|
+
transform: row.transform,
|
|
60
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Line, {
|
|
61
|
+
p1: row.p1,
|
|
62
|
+
p2: row.p2,
|
|
63
|
+
color: color,
|
|
64
|
+
strokeWidth: strokeWidth
|
|
65
|
+
}), showLabels ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Text, {
|
|
66
|
+
text: row.label,
|
|
67
|
+
x: width - row.labelWidth,
|
|
68
|
+
y: font.getSize() / 2.5,
|
|
69
|
+
font: font,
|
|
70
|
+
color: labelColor ?? color
|
|
71
|
+
}) : null]
|
|
72
|
+
}, `YTick-${i}`))
|
|
61
73
|
});
|
|
62
74
|
};
|
|
63
|
-
exports.YAxis = YAxis;
|
|
75
|
+
const MemoYAxis = exports.YAxis = /*#__PURE__*/(0, _react.memo)(YAxis);
|
|
76
|
+
MemoYAxis.displayName = 'YAxis';
|
|
64
77
|
//# sourceMappingURL=YAxis.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeSkia","require","_reactNative","_jsxRuntime","defaultFormatLabel","value","Math","round","getPaddedTicks","maxValue","nbTicks","padding","step","max","ceil","Array","from","length","_","i","exports","YAxis","props","width","height","font","minY","maxY","color","labelColor","strokeWidth","StyleSheet","hairlineWidth","showLabels","formatLabel","
|
|
1
|
+
{"version":3,"names":["_reactNativeSkia","require","_react","_reactNative","_jsxRuntime","defaultFormatLabel","value","Math","round","getPaddedTicks","maxValue","nbTicks","padding","step","max","ceil","Array","from","length","_","i","exports","YAxis","props","width","height","font","minY","maxY","color","labelColor","strokeWidth","StyleSheet","hairlineWidth","showLabels","formatLabel","rows","useMemo","span","values","map","label","labelWidth","getGlyphWidths","getGlyphIDs","reduce","a","b","transform","translateY","p1","vec","p2","jsx","Group","children","row","jsxs","Line","Text","text","x","y","getSize","MemoYAxis","memo","displayName"],"sourceRoot":"../../../src","sources":["Charts/YAxis.tsx"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAQA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AAA0C,IAAAG,WAAA,GAAAH,OAAA;AAkB1C,MAAMI,kBAAkB,GAAIC,KAAa,IAAK,GAAGC,IAAI,CAACC,KAAK,CAACF,KAAK,CAAC,EAAE;;AAEpE;AACO,MAAMG,cAAc,GAAG,SAAAA,CAC5BC,QAAgB,EAChBC,OAAO,GAAG,CAAC,EACXC,OAAO,GAAG,IAAI,EACJ;EACV,MAAMC,IAAI,GAAGN,IAAI,CAACO,GAAG,CAAC,CAAC,EAAEP,IAAI,CAACQ,IAAI,CAAEL,QAAQ,GAAGE,OAAO,GAAID,OAAO,CAAC,CAAC;EACnE,OAAOK,KAAK,CAACC,IAAI,CAAC;IAAEC,MAAM,EAAEP,OAAO,GAAG;EAAE,CAAC,EAAE,CAACQ,CAAC,EAAEC,CAAC,KAAKA,CAAC,GAAGP,IAAI,CAAC;AAChE,CAAC;AAACQ,OAAA,CAAAZ,cAAA,GAAAA,cAAA;AAEF,MAAMa,KAAqB,GAAG,SAAAA,CAAUC,KAAK,EAAE;EAC7C,MAAM;IACJC,KAAK;IACLC,MAAM;IACNC,IAAI;IACJC,IAAI;IACJC,IAAI;IACJjB,OAAO,GAAG,CAAC;IACXkB,KAAK,GAAG,OAAO;IACfC,UAAU;IACVC,WAAW,GAAGC,uBAAU,CAACC,aAAa;IACtCC,UAAU,GAAG,IAAI;IACjBC,WAAW,GAAG9B;EAChB,CAAC,GAAGkB,KAAK;;EAET;EACA,MAAMa,IAAI,GAAG,IAAAC,cAAO,EAAC,MAAM;IACzB;IACA,MAAMC,IAAI,GAAGV,IAAI,GAAGD,IAAI,IAAI,CAAC;IAC7B,MAAMY,MAAM,GACVhB,KAAK,CAACgB,MAAM,IACZvB,KAAK,CAACC,IAAI,CACR;MAAEC,MAAM,EAAEP;IAAQ,CAAC,EACnB,CAACQ,CAAC,EAAEC,CAAC,KAAKO,IAAI,GAAI,CAACP,CAAC,GAAG,CAAC,KAAKQ,IAAI,GAAGD,IAAI,CAAC,GAAIhB,OAC/C,CAAC;IACH,OAAO4B,MAAM,CAACC,GAAG,CAAElC,KAAK,IAAK;MAC3B,MAAMmC,KAAK,GAAGN,WAAW,CAAC7B,KAAK,CAAC;MAChC,MAAMoC,UAAU,GAAGhB,IAAI,CACpBiB,cAAc,CAACjB,IAAI,CAACkB,WAAW,CAACH,KAAK,CAAC,CAAC,CACvCI,MAAM,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,GAAGC,CAAC,EAAE,CAAC,CAAC;MAC7B,OAAO;QACLN,KAAK;QACLC,UAAU;QACVM,SAAS,EAAE,CAAC;UAAEC,UAAU,EAAExB,MAAM,GAAI,CAACnB,KAAK,GAAGqB,IAAI,IAAIF,MAAM,GAAIa;QAAK,CAAC,CAAC;QACtEY,EAAE,EAAE,IAAAC,oBAAG,EAAC,CAAC,EAAE,CAAC,CAAC;QACbC,EAAE,EAAE,IAAAD,oBAAG,EAACjB,UAAU,GAAGV,KAAK,GAAG,EAAE,GAAGkB,UAAU,GAAGlB,KAAK,EAAE,CAAC;MACzD,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,EAAE,CAACD,KAAK,CAACgB,MAAM,EAAE5B,OAAO,EAAEgB,IAAI,EAAEC,IAAI,EAAEH,MAAM,EAAED,KAAK,EAAEE,IAAI,EAAEQ,UAAU,EAAEC,WAAW,CAAC,CAAC;EAErF,oBACE,IAAA/B,WAAA,CAAAiD,GAAA,EAACrD,gBAAA,CAAAsD,KAAK;IAAAC,QAAA,EACHnB,IAAI,CAACI,GAAG,CAAC,CAACgB,GAAG,EAAEpC,CAAC,kBACf,IAAAhB,WAAA,CAAAqD,IAAA,EAACzD,gBAAA,CAAAsD,KAAK;MAAoBN,SAAS,EAAEQ,GAAG,CAACR,SAAU;MAAAO,QAAA,gBACjD,IAAAnD,WAAA,CAAAiD,GAAA,EAACrD,gBAAA,CAAA0D,IAAI;QAACR,EAAE,EAAEM,GAAG,CAACN,EAAG;QAACE,EAAE,EAAEI,GAAG,CAACJ,EAAG;QAACvB,KAAK,EAAEA,KAAM;QAACE,WAAW,EAAEA;MAAY,CAAE,CAAC,EACvEG,UAAU,gBACT,IAAA9B,WAAA,CAAAiD,GAAA,EAACrD,gBAAA,CAAA2D,IAAI;QACHC,IAAI,EAAEJ,GAAG,CAACf,KAAM;QAChBoB,CAAC,EAAErC,KAAK,GAAGgC,GAAG,CAACd,UAAW;QAC1BoB,CAAC,EAAEpC,IAAI,CAACqC,OAAO,CAAC,CAAC,GAAG,GAAI;QACxBrC,IAAI,EAAEA,IAAK;QACXG,KAAK,EAAEC,UAAU,IAAID;MAAM,CAC5B,CAAC,GACA,IAAI;IAAA,GAVE,SAAST,CAAC,EAWf,CACR;EAAC,CACG,CAAC;AAEZ,CAAC;AAED,MAAM4C,SAAS,GAAA3C,OAAA,CAAAC,KAAA,gBAAG,IAAA2C,WAAI,EAAC3C,KAAK,CAAC;AAC7B0C,SAAS,CAACE,WAAW,GAAG,OAAO","ignoreList":[]}
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.ScalablePath = void 0;
|
|
7
|
-
var _reactNativeSkia = require("
|
|
7
|
+
var _reactNativeSkia = require("react-native-skia");
|
|
8
8
|
var _reactNativeReanimated = require("react-native-reanimated");
|
|
9
9
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
10
10
|
const ScalablePath = function (props) {
|
|
@@ -18,9 +18,10 @@ const ScalablePath = function (props) {
|
|
|
18
18
|
} = props;
|
|
19
19
|
const animatedPath = (0, _reactNativeReanimated.useDerivedValue)(() => {
|
|
20
20
|
// Affine equivalent of getPositionWl: x' = scale * x + focalX * (1 - scale) + offsetX
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
// Plain 3x3 matrix: a Skia.Matrix() would allocate a native object per frame
|
|
22
|
+
const s = scale.value;
|
|
23
|
+
const tx = focalX.value * (1 - s) + offsetX.value;
|
|
24
|
+
return _reactNativeSkia.Skia.PathBuilder.MakeFromPath(path.value).transform([s, 0, tx, 0, 1, 0, 0, 0, 1]).build();
|
|
24
25
|
});
|
|
25
26
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Path, {
|
|
26
27
|
style: "stroke",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeSkia","require","_reactNativeReanimated","_jsxRuntime","ScalablePath","props","path","scale","focalX","offsetX","pathProps","color","animatedPath","useDerivedValue","
|
|
1
|
+
{"version":3,"names":["_reactNativeSkia","require","_reactNativeReanimated","_jsxRuntime","ScalablePath","props","path","scale","focalX","offsetX","pathProps","color","animatedPath","useDerivedValue","s","value","tx","Skia","PathBuilder","MakeFromPath","transform","build","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;IACA,MAAMC,CAAC,GAAGP,KAAK,CAACQ,KAAK;IACrB,MAAMC,EAAE,GAAGR,MAAM,CAACO,KAAK,IAAI,CAAC,GAAGD,CAAC,CAAC,GAAGL,OAAO,CAACM,KAAK;IACjD,OAAOE,qBAAI,CAACC,WAAW,CAACC,YAAY,CAACb,IAAI,CAACS,KAAK,CAAC,CAC7CK,SAAS,CAAC,CAACN,CAAC,EAAE,CAAC,EAAEE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CACvCK,KAAK,CAAC,CAAC;EACZ,CAAC,CAAC;EAEF,oBACE,IAAAlB,WAAA,CAAAmB,GAAA,EAACtB,gBAAA,CAAAuB,IAAI;IACHC,KAAK,EAAC,QAAQ;IACdlB,IAAI,EAAEM,YAAa;IACnBa,WAAW,EAAE,CAAE;IACfC,UAAU,EAAC,OAAO;IAClBC,SAAS,EAAC,OAAO;IACjBhB,KAAK,EAAEA,KAAM;IAAA,GACTD;EAAS,CACd,CAAC;AAEN,CAAC;AAACkB,OAAA,CAAAxB,YAAA,GAAAA,YAAA","ignoreList":[]}
|
|
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "ScalablePath", {
|
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
12
|
exports.ZoomableLineChart = void 0;
|
|
13
|
-
var _reactNativeSkia = require("
|
|
13
|
+
var _reactNativeSkia = require("react-native-skia");
|
|
14
14
|
var _react = _interopRequireDefault(require("react"));
|
|
15
15
|
var _ScalablePath = require("./ScalablePath.js");
|
|
16
16
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.useUpdateAxis = exports.useScalableGesture = exports.useCursorGesture = exports.getPositionWl = exports.getOffsetBoundsWl = exports.getClosestPoint = void 0;
|
|
7
|
-
var _reactNativeSkia = require("
|
|
7
|
+
var _reactNativeSkia = require("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");
|
|
@@ -189,20 +189,29 @@ const useCursorGesture = function (props) {
|
|
|
189
189
|
if (!isContinuous && points === undefined) console.warn('Points must be defined for non-continuous mode');
|
|
190
190
|
const xPosition = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
191
191
|
const yPosition = (0, _reactNativeReanimated.useSharedValue)(height);
|
|
192
|
-
const setPosition = (x, y) => {
|
|
193
|
-
'worklet';
|
|
194
192
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
const
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
193
|
+
// Memoized: a new gesture instance on every render can reset an active pan
|
|
194
|
+
const {
|
|
195
|
+
panGesture,
|
|
196
|
+
tapGesture
|
|
197
|
+
} = (0, _react.useMemo)(() => {
|
|
198
|
+
const setPosition = (x, y) => {
|
|
199
|
+
'worklet';
|
|
200
|
+
|
|
201
|
+
yPosition.value = (0, _reactNativeSkia.clamp)(y, 0, height);
|
|
202
|
+
if (isContinuous || points === undefined) {
|
|
203
|
+
xPosition.value = (0, _reactNativeSkia.clamp)(x, 0, width);
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
const _closestDot = getClosestPoint((0, _reactNativeSkia.clamp)(x, 0, width), points.value);
|
|
207
|
+
if (closestDataPoint !== undefined) closestDataPoint.value = _closestDot;
|
|
208
|
+
xPosition.value = _closestDot.x;
|
|
209
|
+
};
|
|
210
|
+
return {
|
|
211
|
+
panGesture: _reactNativeGestureHandler.Gesture.Pan().onBegin(event => setPosition(event.x, event.y)).onUpdate(event => setPosition(event.x, event.y)),
|
|
212
|
+
tapGesture: _reactNativeGestureHandler.Gesture.Tap().onBegin(event => setPosition(event.x, event.y))
|
|
213
|
+
};
|
|
214
|
+
}, [width, height, isContinuous, points, closestDataPoint, xPosition, yPosition]);
|
|
206
215
|
|
|
207
216
|
// Re-snap the cursor when the data points change (e.g. switching graphs)
|
|
208
217
|
(0, _reactNativeReanimated.useAnimatedReaction)(() => points?.value, _points => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeSkia","require","_react","_reactNativeGestureHandler","_reactNativeReanimated","_reactNativeWorklets","getPositionWl","position","focalX","scale","offsetX","exports","getOffsetBoundsWl","width","startOffset","maxOffset","minOffset","useScalableGesture","props","startScale","useSharedValue","lastScale","lastFocalX","lastOffsetX","needsPivot","reset","useCallback","value","panGesture","useMemo","Gesture","Pan","maxPointers","onChange","event","clamp","changeX","onEnd","pinchGesture","Pinch","onStart","onUpdate","numberOfPointers","prevScale","newScale","Infinity","rebased","useUpdateAxis","scales","onScaleChange","currentIndex","onScaleChangeRef","useRef","current","dispatchScaleChange","index","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","
|
|
1
|
+
{"version":3,"names":["_reactNativeSkia","require","_react","_reactNativeGestureHandler","_reactNativeReanimated","_reactNativeWorklets","getPositionWl","position","focalX","scale","offsetX","exports","getOffsetBoundsWl","width","startOffset","maxOffset","minOffset","useScalableGesture","props","startScale","useSharedValue","lastScale","lastFocalX","lastOffsetX","needsPivot","reset","useCallback","value","panGesture","useMemo","Gesture","Pan","maxPointers","onChange","event","clamp","changeX","onEnd","pinchGesture","Pinch","onStart","onUpdate","numberOfPointers","prevScale","newScale","Infinity","rebased","useUpdateAxis","scales","onScaleChange","currentIndex","onScaleChangeRef","useRef","current","dispatchScaleChange","index","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","tapGesture","setPosition","y","_closestDot","onBegin","Tap","_points"],"sourceRoot":"../../../src","sources":["Charts/gesture.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,7 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.useDotsTransition = exports.scaleCommands = exports.defaultTranslateTransitionWl = exports.defaultOpacityTransitionWl = exports.buildGraph = void 0;
|
|
7
|
-
var _reactNativeSkia = require("
|
|
7
|
+
var _reactNativeSkia = require("react-native-skia");
|
|
8
|
+
var _react = require("react");
|
|
8
9
|
var _d3Scale = require("d3-scale");
|
|
9
10
|
var shape = _interopRequireWildcard(require("d3-shape"));
|
|
10
11
|
var _reactNativeReanimated = require("react-native-reanimated");
|
|
@@ -15,11 +16,23 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
15
16
|
|
|
16
17
|
const buildGraph = function (data, width, height, config) {
|
|
17
18
|
if (data.length === 0) throw new Error('buildGraph requires at least one data point');
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
|
|
20
|
+
// Loops rather than Math.min(...data): spreading a long series can exceed the engine's argument limit
|
|
21
|
+
let dataMinX = Infinity;
|
|
22
|
+
let dataMaxX = -Infinity;
|
|
23
|
+
let dataMinY = Infinity;
|
|
24
|
+
let dataMaxY = -Infinity;
|
|
25
|
+
for (const [x, y] of data) {
|
|
26
|
+
if (x < dataMinX) dataMinX = x;
|
|
27
|
+
if (x > dataMaxX) dataMaxX = x;
|
|
28
|
+
if (y < dataMinY) dataMinY = y;
|
|
29
|
+
if (y > dataMaxY) dataMaxY = y;
|
|
30
|
+
}
|
|
31
|
+
const minX = config?.minX ?? dataMinX;
|
|
32
|
+
const maxX = config?.maxX ?? dataMaxX;
|
|
20
33
|
const scaleX = (0, _d3Scale.scaleLinear)().domain([minX, maxX]).range([0, width]);
|
|
21
|
-
const minY = config?.minY ??
|
|
22
|
-
const maxY = config?.maxY ??
|
|
34
|
+
const minY = config?.minY ?? dataMinY;
|
|
35
|
+
const maxY = config?.maxY ?? dataMaxY;
|
|
23
36
|
const scaleY = (0, _d3Scale.scaleLinear)().domain([minY, maxY]).range([height, 0]);
|
|
24
37
|
const path = shape.line().x(([x]) => scaleX(x)).y(([, y]) => scaleY(y)).curve(config?.curve ?? shape.curveBasis)(data);
|
|
25
38
|
if (path === null) throw new Error('Failed to build the line path');
|
|
@@ -103,18 +116,33 @@ const useDotsTransition = function (props) {
|
|
|
103
116
|
opacityWl = defaultOpacityTransitionWl,
|
|
104
117
|
translateWl = defaultTranslateTransitionWl
|
|
105
118
|
} = props;
|
|
119
|
+
|
|
120
|
+
// Normalized once per path change, not per dot per frame
|
|
121
|
+
const commands = (0, _reactNativeReanimated.useSharedValue)([]);
|
|
122
|
+
const visibleCount = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
123
|
+
// Bumped when the data or the dots are replaced, so they get retargeted
|
|
124
|
+
// even if the graph index is unchanged
|
|
125
|
+
const generationRef = (0, _react.useRef)(0);
|
|
126
|
+
const generation = (0, _react.useMemo)(() => generationRef.current += 1,
|
|
127
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
128
|
+
[dataPoints, dots]);
|
|
129
|
+
|
|
130
|
+
// Retarget on graph or data change only: re-assigning x while it animates
|
|
131
|
+
// would restart the animation every frame
|
|
106
132
|
(0, _reactNativeReanimated.useAnimatedReaction)(() => ({
|
|
107
133
|
_currentGraph: currentGraph.value,
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
// even when the path is swapped instantly or tweens on another duration
|
|
111
|
-
_xs: dots.map(d => d.x.value)
|
|
134
|
+
_path: path.value,
|
|
135
|
+
_generation: generation
|
|
112
136
|
}), ({
|
|
113
137
|
_currentGraph,
|
|
114
|
-
|
|
115
|
-
|
|
138
|
+
_path,
|
|
139
|
+
_generation
|
|
140
|
+
}, previous) => {
|
|
141
|
+
commands.value = (0, _maths.commandsToBezier)(_path.toCmds());
|
|
142
|
+
if (previous !== null && previous._currentGraph === _currentGraph && previous._generation === _generation) return;
|
|
116
143
|
const newDataPoints = dataPoints[_currentGraph];
|
|
117
144
|
if (newDataPoints === undefined) throw new Error('Data points cannot be undefined');
|
|
145
|
+
visibleCount.value = newDataPoints.length;
|
|
118
146
|
dots.forEach((_dot, i) => {
|
|
119
147
|
const _newDot = newDataPoints[i];
|
|
120
148
|
if (!_newDot) {
|
|
@@ -122,16 +150,38 @@ const useDotsTransition = function (props) {
|
|
|
122
150
|
return;
|
|
123
151
|
}
|
|
124
152
|
_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
153
|
_dot.opacity.value = opacityWl(1);
|
|
130
154
|
});
|
|
131
155
|
},
|
|
132
156
|
// Explicit deps: without them the reaction re-registers and re-fires on
|
|
133
157
|
// every parent render, restarting every dot animation on the UI thread
|
|
134
|
-
[currentGraph, path, dataPoints, dots, opacityWl, translateWl]);
|
|
158
|
+
[currentGraph, path, dataPoints, dots, opacityWl, translateWl, generation]);
|
|
159
|
+
|
|
160
|
+
// Keep y glued to the curve while x animates or the path tweens
|
|
161
|
+
(0, _reactNativeReanimated.useAnimatedReaction)(() => ({
|
|
162
|
+
_cmds: commands.value,
|
|
163
|
+
_xs: dots.map(d => d.x.value)
|
|
164
|
+
}), ({
|
|
165
|
+
_cmds,
|
|
166
|
+
_xs
|
|
167
|
+
}) => {
|
|
168
|
+
const count = Math.min(visibleCount.value, dots.length);
|
|
169
|
+
// Dots are in x order, so one forward walk over the segments serves them all
|
|
170
|
+
let segment = 0;
|
|
171
|
+
for (let i = 0; i < count; i++) {
|
|
172
|
+
const x = _xs[i];
|
|
173
|
+
let index = (0, _maths.findBezierIndex)(_cmds, x, segment);
|
|
174
|
+
if (index === -1 && segment > 1) index = (0, _maths.findBezierIndex)(_cmds, x);
|
|
175
|
+
let newY;
|
|
176
|
+
if (index === -1) {
|
|
177
|
+
newY = (0, _maths.getYBeyondPathEnds)(_cmds, x);
|
|
178
|
+
} else {
|
|
179
|
+
segment = index;
|
|
180
|
+
newY = (0, _maths.getYOnBezier)(_cmds, index, x);
|
|
181
|
+
}
|
|
182
|
+
if (newY !== undefined) dots[i].y.value = newY;
|
|
183
|
+
}
|
|
184
|
+
}, [dots]);
|
|
135
185
|
};
|
|
136
186
|
exports.useDotsTransition = useDotsTransition;
|
|
137
187
|
//# sourceMappingURL=graphUtils.js.map
|