@obitrain/charts 0.10.4 → 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 +6 -4
- package/lib/commonjs/Charts/BottomAxis/AxisLine.js +1 -1
- package/lib/commonjs/Charts/BottomAxis/BottomAxis.js +54 -14
- package/lib/commonjs/Charts/BottomAxis/BottomAxis.js.map +1 -1
- package/lib/commonjs/Charts/BottomAxis/Tick.js +29 -13
- package/lib/commonjs/Charts/BottomAxis/Tick.js.map +1 -1
- package/lib/commonjs/Charts/BottomAxis/index.js.map +1 -1
- package/lib/commonjs/Charts/Cursor.js +33 -13
- package/lib/commonjs/Charts/Cursor.js.map +1 -1
- package/lib/commonjs/Charts/Dot.js +51 -0
- package/lib/commonjs/Charts/Dot.js.map +1 -0
- package/lib/commonjs/Charts/Dots.js +74 -0
- package/lib/commonjs/Charts/Dots.js.map +1 -0
- package/lib/commonjs/Charts/Linechart/index.js +1 -1
- package/lib/commonjs/Charts/YAxis.js +77 -0
- package/lib/commonjs/Charts/YAxis.js.map +1 -0
- 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 +90 -38
- package/lib/commonjs/Charts/gesture.js.map +1 -1
- package/lib/commonjs/Charts/graphUtils.js +69 -16
- package/lib/commonjs/Charts/graphUtils.js.map +1 -1
- package/lib/commonjs/Charts/index.js +39 -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 +56 -15
- package/lib/module/Charts/BottomAxis/BottomAxis.js.map +1 -1
- package/lib/module/Charts/BottomAxis/Tick.js +29 -11
- package/lib/module/Charts/BottomAxis/Tick.js.map +1 -1
- package/lib/module/Charts/BottomAxis/index.js.map +1 -1
- package/lib/module/Charts/Cursor.js +35 -15
- package/lib/module/Charts/Cursor.js.map +1 -1
- package/lib/module/Charts/Dot.js +47 -0
- package/lib/module/Charts/Dot.js.map +1 -0
- package/lib/module/Charts/Dots.js +70 -0
- package/lib/module/Charts/Dots.js.map +1 -0
- 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 +73 -0
- package/lib/module/Charts/YAxis.js.map +1 -0
- 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 +90 -39
- package/lib/module/Charts/gesture.js.map +1 -1
- package/lib/module/Charts/graphUtils.js +71 -18
- package/lib/module/Charts/graphUtils.js.map +1 -1
- package/lib/module/Charts/index.js +5 -2
- 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 +26 -3
- package/lib/typescript/commonjs/src/Charts/BottomAxis/BottomAxis.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/Charts/BottomAxis/Tick.d.ts +16 -3
- package/lib/typescript/commonjs/src/Charts/BottomAxis/Tick.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/Charts/BottomAxis/index.d.ts +1 -1
- package/lib/typescript/commonjs/src/Charts/BottomAxis/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/Charts/Cursor.d.ts +5 -2
- package/lib/typescript/commonjs/src/Charts/Cursor.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/Charts/Dot.d.ts +22 -0
- package/lib/typescript/commonjs/src/Charts/Dot.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/Charts/Dots.d.ts +28 -0
- package/lib/typescript/commonjs/src/Charts/Dots.d.ts.map +1 -0
- 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 +21 -0
- package/lib/typescript/commonjs/src/Charts/YAxis.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/Charts/ZoomableLinechart/ScalablePath.d.ts +2 -2
- 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 +6 -0
- 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 +9 -3
- 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 +26 -3
- package/lib/typescript/module/src/Charts/BottomAxis/BottomAxis.d.ts.map +1 -1
- package/lib/typescript/module/src/Charts/BottomAxis/Tick.d.ts +16 -3
- package/lib/typescript/module/src/Charts/BottomAxis/Tick.d.ts.map +1 -1
- package/lib/typescript/module/src/Charts/BottomAxis/index.d.ts +1 -1
- package/lib/typescript/module/src/Charts/BottomAxis/index.d.ts.map +1 -1
- package/lib/typescript/module/src/Charts/Cursor.d.ts +5 -2
- package/lib/typescript/module/src/Charts/Cursor.d.ts.map +1 -1
- package/lib/typescript/module/src/Charts/Dot.d.ts +22 -0
- package/lib/typescript/module/src/Charts/Dot.d.ts.map +1 -0
- package/lib/typescript/module/src/Charts/Dots.d.ts +28 -0
- package/lib/typescript/module/src/Charts/Dots.d.ts.map +1 -0
- 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 +21 -0
- package/lib/typescript/module/src/Charts/YAxis.d.ts.map +1 -0
- package/lib/typescript/module/src/Charts/ZoomableLinechart/ScalablePath.d.ts +2 -2
- 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 +6 -0
- 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 +9 -3
- 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 +100 -19
- package/src/Charts/BottomAxis/Tick.tsx +61 -15
- package/src/Charts/BottomAxis/index.tsx +5 -1
- package/src/Charts/Cursor.tsx +38 -10
- package/src/Charts/Dot.tsx +64 -0
- package/src/Charts/Dots.tsx +96 -0
- package/src/Charts/Linechart/index.tsx +1 -1
- package/src/Charts/YAxis.tsx +103 -0
- package/src/Charts/ZoomableLinechart/ScalablePath.tsx +8 -9
- package/src/Charts/ZoomableLinechart/index.tsx +1 -1
- package/src/Charts/gesture.ts +132 -71
- package/src/Charts/graphUtils.ts +78 -16
- package/src/Charts/index.tsx +9 -0
- package/src/Charts/maths.ts +107 -16
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Path","Skia","useDerivedValue","getPositionWl","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","Dots","props","dots","r","shape","color","fillColor","strokeWidth","width","scale","focalX","offsetX","path","p","PathBuilder","Make","margin","dot","opacity","value","x","undefined","y","addPoly","addCircle","build","children","style","strokeJoin"],"sourceRoot":"../../../src","sources":["Charts/Dots.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,IAAI,QAAoB,mBAAmB;AAE1D,SAASC,eAAe,QAA0B,yBAAyB;AAC3E,SAASC,aAAa,QAAQ,cAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAqB1C;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,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,GAAGpB,eAAe,CAAC,MAAM;IACjC,MAAMqB,CAAC,GAAGtB,IAAI,CAACuB,WAAW,CAACC,IAAI,CAAC,CAAC;IACjC,MAAMC,MAAM,GAAGb,CAAC,GAAGI,WAAW;IAC9B,KAAK,MAAMU,GAAG,IAAIf,IAAI,EAAE;MACtB,IAAIe,GAAG,CAACC,OAAO,CAACC,KAAK,GAAG,GAAG,EAAE;MAC7B,MAAMC,CAAC,GACLX,KAAK,KAAKY,SAAS,IAAIX,MAAM,KAAKW,SAAS,IAAIV,OAAO,KAAKU,SAAS,GAChEJ,GAAG,CAACG,CAAC,CAACD,KAAK,GACX1B,aAAa,CACXwB,GAAG,CAACG,CAAC,CAACD,KAAK,EACXT,MAAM,CAACS,KAAK,EACZV,KAAK,CAACU,KAAK,EACXR,OAAO,CAACQ,KACV,CAAC;MACP,IAAIX,KAAK,KAAKa,SAAS,KAAKD,CAAC,GAAG,CAACJ,MAAM,IAAII,CAAC,GAAGZ,KAAK,GAAGQ,MAAM,CAAC,EAAE;MAChE,MAAMM,CAAC,GAAGL,GAAG,CAACK,CAAC,CAACH,KAAK;MACrB,IAAIf,KAAK,KAAK,SAAS,EAAE;QACvB;QACA;QACAS,CAAC,CAACU,OAAO,CACP,CACE;UAAEH,CAAC;UAAEE,CAAC,EAAEA,CAAC,GAAGnB;QAAE,CAAC,EACf;UAAEiB,CAAC,EAAEA,CAAC,GAAGjB,CAAC;UAAEmB;QAAE,CAAC,EACf;UAAEF,CAAC;UAAEE,CAAC,EAAEA,CAAC,GAAGnB;QAAE,CAAC,EACf;UAAEiB,CAAC,EAAEA,CAAC,GAAGjB,CAAC;UAAEmB;QAAE,CAAC,CAChB,EACD,IACF,CAAC;MACH,CAAC,MAAM;QACLT,CAAC,CAACW,SAAS,CAACJ,CAAC,EAAEE,CAAC,EAAEnB,CAAC,CAAC;MACtB;IACF;IACA,OAAOU,CAAC,CAACY,KAAK,CAAC,CAAC;EAClB,CAAC,CAAC;EAEF,oBACE1B,KAAA,CAAAF,SAAA;IAAA6B,QAAA,gBACE/B,IAAA,CAACL,IAAI;MAACsB,IAAI,EAAEA,IAAK;MAACP,KAAK,EAAEC,SAAS,IAAID;IAAM,CAAE,CAAC,EAC9CC,SAAS,KAAKe,SAAS,gBACtB1B,IAAA,CAACL,IAAI;MACHsB,IAAI,EAAEA,IAAK;MACXe,KAAK,EAAC,QAAQ;MACdtB,KAAK,EAAEA,KAAM;MACbE,WAAW,EAAEA,WAAY;MACzBqB,UAAU,EAAC;IAAO,CACnB,CAAC,GACA,IAAI;EAAA,CACR,CAAC;AAEP,CAAC;AAED,SAAS5B,IAAI","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Canvas","Group","Path","React","jsx","_jsx","jsxs","_jsxs","LineChart","props","width","height","style","path","children","color","paths","background","offsetX","offsetY","_paths","undefined","length","console","warn","transform","translateY","translateX","map","_path","i","strokeWidth","strokeJoin","strokeCap","id"],"sourceRoot":"../../../../src","sources":["Charts/Linechart/index.tsx"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,KAAK,EAAEC,IAAI,QAAqB,
|
|
1
|
+
{"version":3,"names":["Canvas","Group","Path","React","jsx","_jsx","jsxs","_jsxs","LineChart","props","width","height","style","path","children","color","paths","background","offsetX","offsetY","_paths","undefined","length","console","warn","transform","translateY","translateX","map","_path","i","strokeWidth","strokeJoin","strokeCap","id"],"sourceRoot":"../../../../src","sources":["Charts/Linechart/index.tsx"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,KAAK,EAAEC,IAAI,QAAqB,mBAAmB;AAEpE,OAAOC,KAAK,MAAM,OAAO;;AAoBzB;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAOA,MAAMC,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,oBACEnB,IAAA,CAACL,MAAM;IACLY,KAAK,EAAE,CACL;MACEF,KAAK;MACLC;IACF,CAAC,EACDC,KAAK,CACL;IAAAE,QAAA,eAEFP,KAAA,CAACN,KAAK;MAACwB,SAAS,EAAE,CAAC;QAAEC,UAAU,EAAEP;MAAQ,CAAC,EAAE;QAAEQ,UAAU,EAAET;MAAQ,CAAC,CAAE;MAAAJ,QAAA,GAClEG,UAAU,EACVG,MAAM,CAACQ,GAAG,CAAC,CAACC,KAAK,EAAEC,CAAC,kBACnBzB,IAAA,CAACH,IAAI;QAEHU,KAAK,EAAC,QAAQ;QAAA,GACViB,KAAK;QACTE,WAAW,EAAE,CAAE;QACfC,UAAU,EAAC,OAAO;QAClBC,SAAS,EAAC;MAAO,GALZ,GAAGJ,KAAK,CAACK,EAAE,IAAIJ,CAAC,EAMtB,CACF,CAAC,EACDhB,QAAQ;IAAA,CACJ;EAAC,CACF,CAAC;AAEb,CAAC;AAED,SAASN,SAAS","ignoreList":[]}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { Group, Line, Text, vec } from 'react-native-skia';
|
|
4
|
+
import { memo, useMemo } from 'react';
|
|
5
|
+
import { StyleSheet } from 'react-native';
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
const defaultFormatLabel = value => `${Math.round(value)}`;
|
|
8
|
+
|
|
9
|
+
/** Evenly spaced integer ticks from 0 to a padded maximum, e.g. 0, 26, 52, 78, 104. */
|
|
10
|
+
export const getPaddedTicks = function (maxValue, nbTicks = 4, padding = 1.15) {
|
|
11
|
+
const step = Math.max(1, Math.ceil(maxValue * padding / nbTicks));
|
|
12
|
+
return Array.from({
|
|
13
|
+
length: nbTicks + 1
|
|
14
|
+
}, (_, i) => i * step);
|
|
15
|
+
};
|
|
16
|
+
const YAxis = function (props) {
|
|
17
|
+
const {
|
|
18
|
+
width,
|
|
19
|
+
height,
|
|
20
|
+
font,
|
|
21
|
+
minY,
|
|
22
|
+
maxY,
|
|
23
|
+
nbTicks = 4,
|
|
24
|
+
color = 'black',
|
|
25
|
+
labelColor,
|
|
26
|
+
strokeWidth = StyleSheet.hairlineWidth,
|
|
27
|
+
showLabels = true,
|
|
28
|
+
formatLabel = defaultFormatLabel
|
|
29
|
+
} = props;
|
|
30
|
+
|
|
31
|
+
// Measured once per input change: parents re-render while panning
|
|
32
|
+
const rows = useMemo(() => {
|
|
33
|
+
// A flat range would divide by zero
|
|
34
|
+
const span = maxY - minY || 1;
|
|
35
|
+
const values = props.values ?? Array.from({
|
|
36
|
+
length: nbTicks
|
|
37
|
+
}, (_, i) => minY + (i + 1) * (maxY - minY) / nbTicks);
|
|
38
|
+
return values.map(value => {
|
|
39
|
+
const label = formatLabel(value);
|
|
40
|
+
const labelWidth = font.getGlyphWidths(font.getGlyphIDs(label)).reduce((a, b) => a + b, 0);
|
|
41
|
+
return {
|
|
42
|
+
label,
|
|
43
|
+
labelWidth,
|
|
44
|
+
transform: [{
|
|
45
|
+
translateY: height - (value - minY) * height / span
|
|
46
|
+
}],
|
|
47
|
+
p1: vec(0, 0),
|
|
48
|
+
p2: vec(showLabels ? width - 10 - labelWidth : width, 0)
|
|
49
|
+
};
|
|
50
|
+
});
|
|
51
|
+
}, [props.values, nbTicks, minY, maxY, height, width, font, showLabels, formatLabel]);
|
|
52
|
+
return /*#__PURE__*/_jsx(Group, {
|
|
53
|
+
children: rows.map((row, i) => /*#__PURE__*/_jsxs(Group, {
|
|
54
|
+
transform: row.transform,
|
|
55
|
+
children: [/*#__PURE__*/_jsx(Line, {
|
|
56
|
+
p1: row.p1,
|
|
57
|
+
p2: row.p2,
|
|
58
|
+
color: color,
|
|
59
|
+
strokeWidth: strokeWidth
|
|
60
|
+
}), showLabels ? /*#__PURE__*/_jsx(Text, {
|
|
61
|
+
text: row.label,
|
|
62
|
+
x: width - row.labelWidth,
|
|
63
|
+
y: font.getSize() / 2.5,
|
|
64
|
+
font: font,
|
|
65
|
+
color: labelColor ?? color
|
|
66
|
+
}) : null]
|
|
67
|
+
}, `YTick-${i}`))
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
const MemoYAxis = /*#__PURE__*/memo(YAxis);
|
|
71
|
+
MemoYAxis.displayName = 'YAxis';
|
|
72
|
+
export { MemoYAxis as YAxis };
|
|
73
|
+
//# sourceMappingURL=YAxis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Group","Line","Text","vec","memo","useMemo","StyleSheet","jsx","_jsx","jsxs","_jsxs","defaultFormatLabel","value","Math","round","getPaddedTicks","maxValue","nbTicks","padding","step","max","ceil","Array","from","length","_","i","YAxis","props","width","height","font","minY","maxY","color","labelColor","strokeWidth","hairlineWidth","showLabels","formatLabel","rows","span","values","map","label","labelWidth","getGlyphWidths","getGlyphIDs","reduce","a","b","transform","translateY","p1","p2","children","row","text","x","y","getSize","MemoYAxis","displayName"],"sourceRoot":"../../../src","sources":["Charts/YAxis.tsx"],"mappings":";;AAAA,SACEA,KAAK,EACLC,IAAI,EACJC,IAAI,EACJC,GAAG,QAGE,mBAAmB;AAC1B,SAASC,IAAI,EAAEC,OAAO,QAAiB,OAAO;AAC9C,SAASC,UAAU,QAAQ,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAkB1C,MAAMC,kBAAkB,GAAIC,KAAa,IAAK,GAAGC,IAAI,CAACC,KAAK,CAACF,KAAK,CAAC,EAAE;;AAEpE;AACA,OAAO,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;AAED,MAAMQ,KAAqB,GAAG,SAAAA,CAAUC,KAAK,EAAE;EAC7C,MAAM;IACJC,KAAK;IACLC,MAAM;IACNC,IAAI;IACJC,IAAI;IACJC,IAAI;IACJhB,OAAO,GAAG,CAAC;IACXiB,KAAK,GAAG,OAAO;IACfC,UAAU;IACVC,WAAW,GAAG9B,UAAU,CAAC+B,aAAa;IACtCC,UAAU,GAAG,IAAI;IACjBC,WAAW,GAAG5B;EAChB,CAAC,GAAGiB,KAAK;;EAET;EACA,MAAMY,IAAI,GAAGnC,OAAO,CAAC,MAAM;IACzB;IACA,MAAMoC,IAAI,GAAGR,IAAI,GAAGD,IAAI,IAAI,CAAC;IAC7B,MAAMU,MAAM,GACVd,KAAK,CAACc,MAAM,IACZpB,KAAK,CAACC,IAAI,CACR;MAAEC,MAAM,EAAEP;IAAQ,CAAC,EACnB,CAACQ,CAAC,EAAEC,CAAC,KAAKM,IAAI,GAAI,CAACN,CAAC,GAAG,CAAC,KAAKO,IAAI,GAAGD,IAAI,CAAC,GAAIf,OAC/C,CAAC;IACH,OAAOyB,MAAM,CAACC,GAAG,CAAE/B,KAAK,IAAK;MAC3B,MAAMgC,KAAK,GAAGL,WAAW,CAAC3B,KAAK,CAAC;MAChC,MAAMiC,UAAU,GAAGd,IAAI,CACpBe,cAAc,CAACf,IAAI,CAACgB,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,EAAEtB,MAAM,GAAI,CAAClB,KAAK,GAAGoB,IAAI,IAAIF,MAAM,GAAIW;QAAK,CAAC,CAAC;QACtEY,EAAE,EAAElD,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACbmD,EAAE,EAAEnD,GAAG,CAACmC,UAAU,GAAGT,KAAK,GAAG,EAAE,GAAGgB,UAAU,GAAGhB,KAAK,EAAE,CAAC;MACzD,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,EAAE,CAACD,KAAK,CAACc,MAAM,EAAEzB,OAAO,EAAEe,IAAI,EAAEC,IAAI,EAAEH,MAAM,EAAED,KAAK,EAAEE,IAAI,EAAEO,UAAU,EAAEC,WAAW,CAAC,CAAC;EAErF,oBACE/B,IAAA,CAACR,KAAK;IAAAuD,QAAA,EACHf,IAAI,CAACG,GAAG,CAAC,CAACa,GAAG,EAAE9B,CAAC,kBACfhB,KAAA,CAACV,KAAK;MAAoBmD,SAAS,EAAEK,GAAG,CAACL,SAAU;MAAAI,QAAA,gBACjD/C,IAAA,CAACP,IAAI;QAACoD,EAAE,EAAEG,GAAG,CAACH,EAAG;QAACC,EAAE,EAAEE,GAAG,CAACF,EAAG;QAACpB,KAAK,EAAEA,KAAM;QAACE,WAAW,EAAEA;MAAY,CAAE,CAAC,EACvEE,UAAU,gBACT9B,IAAA,CAACN,IAAI;QACHuD,IAAI,EAAED,GAAG,CAACZ,KAAM;QAChBc,CAAC,EAAE7B,KAAK,GAAG2B,GAAG,CAACX,UAAW;QAC1Bc,CAAC,EAAE5B,IAAI,CAAC6B,OAAO,CAAC,CAAC,GAAG,GAAI;QACxB7B,IAAI,EAAEA,IAAK;QACXG,KAAK,EAAEC,UAAU,IAAID;MAAM,CAC5B,CAAC,GACA,IAAI;IAAA,GAVE,SAASR,CAAC,EAWf,CACR;EAAC,CACG,CAAC;AAEZ,CAAC;AAED,MAAMmC,SAAS,gBAAGzD,IAAI,CAACuB,KAAK,CAAC;AAC7BkC,SAAS,CAACC,WAAW,GAAG,OAAO;AAE/B,SAASD,SAAS,IAAIlC,KAAK","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { Path, Skia } from '
|
|
3
|
+
import { Path, Skia } from 'react-native-skia';
|
|
4
4
|
import { useDerivedValue } from 'react-native-reanimated';
|
|
5
5
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
6
|
const ScalablePath = function (props) {
|
|
@@ -14,9 +14,10 @@ const ScalablePath = function (props) {
|
|
|
14
14
|
} = props;
|
|
15
15
|
const animatedPath = useDerivedValue(() => {
|
|
16
16
|
// Affine equivalent of getPositionWl: x' = scale * x + focalX * (1 - scale) + offsetX
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
// Plain 3x3 matrix: a Skia.Matrix() would allocate a native object per frame
|
|
18
|
+
const s = scale.value;
|
|
19
|
+
const tx = focalX.value * (1 - s) + offsetX.value;
|
|
20
|
+
return Skia.PathBuilder.MakeFromPath(path.value).transform([s, 0, tx, 0, 1, 0, 0, 0, 1]).build();
|
|
20
21
|
});
|
|
21
22
|
return /*#__PURE__*/_jsx(Path, {
|
|
22
23
|
style: "stroke",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Path","Skia","useDerivedValue","jsx","_jsx","ScalablePath","props","path","scale","focalX","offsetX","pathProps","color","animatedPath","
|
|
1
|
+
{"version":3,"names":["Path","Skia","useDerivedValue","jsx","_jsx","ScalablePath","props","path","scale","focalX","offsetX","pathProps","color","animatedPath","s","value","tx","PathBuilder","MakeFromPath","transform","build","style","strokeWidth","strokeJoin","strokeCap"],"sourceRoot":"../../../../src","sources":["Charts/ZoomableLinechart/ScalablePath.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,IAAI,QAAqB,mBAAmB;AAE3D,SAASC,eAAe,QAA0B,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAW5E,MAAMC,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,GAAGX,eAAe,CAAC,MAAM;IACzC;IACA;IACA,MAAMY,CAAC,GAAGN,KAAK,CAACO,KAAK;IACrB,MAAMC,EAAE,GAAGP,MAAM,CAACM,KAAK,IAAI,CAAC,GAAGD,CAAC,CAAC,GAAGJ,OAAO,CAACK,KAAK;IACjD,OAAOd,IAAI,CAACgB,WAAW,CAACC,YAAY,CAACX,IAAI,CAACQ,KAAK,CAAC,CAC7CI,SAAS,CAAC,CAACL,CAAC,EAAE,CAAC,EAAEE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CACvCI,KAAK,CAAC,CAAC;EACZ,CAAC,CAAC;EAEF,oBACEhB,IAAA,CAACJ,IAAI;IACHqB,KAAK,EAAC,QAAQ;IACdd,IAAI,EAAEM,YAAa;IACnBS,WAAW,EAAE,CAAE;IACfC,UAAU,EAAC,OAAO;IAClBC,SAAS,EAAC,OAAO;IACjBZ,KAAK,EAAEA,KAAM;IAAA,GACTD;EAAS,CACd,CAAC;AAEN,CAAC;AAED,SAASN,YAAY","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { Canvas, Group } from '
|
|
3
|
+
import { Canvas, Group } from 'react-native-skia';
|
|
4
4
|
import React from 'react';
|
|
5
5
|
import { ScalablePath } from "./ScalablePath.js";
|
|
6
6
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Canvas","Group","React","ScalablePath","jsx","_jsx","jsxs","_jsxs","ZoomableLineChart","props","width","height","style","children","offsetY","rest","transform","translateY"],"sourceRoot":"../../../../src","sources":["Charts/ZoomableLinechart/index.tsx"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,KAAK,QAAqB,
|
|
1
|
+
{"version":3,"names":["Canvas","Group","React","ScalablePath","jsx","_jsx","jsxs","_jsxs","ZoomableLineChart","props","width","height","style","children","offsetY","rest","transform","translateY"],"sourceRoot":"../../../../src","sources":["Charts/ZoomableLinechart/index.tsx"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,KAAK,QAAqB,mBAAmB;AAE9D,OAAOC,KAAK,MAAM,OAAO;AAIzB,SAASC,YAAY,QAAgC,mBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEtE,SAASJ,YAAY;AAiBrB,MAAMK,iBAA6C,GAAG,SAAAA,CAAUC,KAAK,EAAE;EACrE,MAAM;IAAEC,KAAK;IAAEC,MAAM;IAAEC,KAAK;IAAEC,QAAQ;IAAEC,OAAO,GAAG,CAAC;IAAE,GAAGC;EAAK,CAAC,GAAGN,KAAK;EAEtE,oBACEJ,IAAA,CAACL,MAAM;IACLY,KAAK,EAAE,CACL;MACEF,KAAK;MACLC;IACF,CAAC,EACDC,KAAK,CACL;IAAAC,QAAA,eAEFN,KAAA,CAACN,KAAK;MAACe,SAAS,EAAE,CAAC;QAAEC,UAAU,EAAEH;MAAQ,CAAC,CAAE;MAAAD,QAAA,gBAC1CR,IAAA,CAACF,YAAY;QAAA,GAAKY;MAAI,CAAG,CAAC,EACzBF,QAAQ;IAAA,CACJ;EAAC,CACF,CAAC;AAEb,CAAC;AAED,SAASL,iBAAiB","ignoreList":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { clamp } from '
|
|
4
|
-
import { useCallback } from 'react';
|
|
3
|
+
import { clamp } from 'react-native-skia';
|
|
4
|
+
import { useCallback, useMemo, useRef } from 'react';
|
|
5
5
|
import { Gesture } from 'react-native-gesture-handler';
|
|
6
|
-
import { useAnimatedReaction, useSharedValue
|
|
6
|
+
import { useAnimatedReaction, useSharedValue } from 'react-native-reanimated';
|
|
7
7
|
import { scheduleOnRN } from 'react-native-worklets';
|
|
8
8
|
/**
|
|
9
9
|
* Get the position of a point on the axis,
|
|
@@ -14,6 +14,19 @@ export const getPositionWl = function (position, focalX, scale, offsetX) {
|
|
|
14
14
|
|
|
15
15
|
return (position - focalX) * scale + focalX + offsetX;
|
|
16
16
|
};
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Offset range keeping the content edges pinned to the viewport:
|
|
20
|
+
* leftBound (position 0) <= startOffset and rightBound (position width)
|
|
21
|
+
* >= width + startOffset. Collapses to [startOffset, startOffset] at scale 1.
|
|
22
|
+
*/
|
|
23
|
+
export const getOffsetBoundsWl = function (width, startOffset, focalX, scale) {
|
|
24
|
+
'worklet';
|
|
25
|
+
|
|
26
|
+
const maxOffset = startOffset + focalX * (scale - 1);
|
|
27
|
+
const minOffset = startOffset + (1 - scale) * (width - focalX);
|
|
28
|
+
return [minOffset, maxOffset];
|
|
29
|
+
};
|
|
17
30
|
/**
|
|
18
31
|
* Return utilities for zooming and panning the axis
|
|
19
32
|
*/
|
|
@@ -32,6 +45,8 @@ export const useScalableGesture = props => {
|
|
|
32
45
|
// For panning
|
|
33
46
|
const offsetX = useSharedValue(startOffset);
|
|
34
47
|
const lastOffsetX = useSharedValue(startOffset);
|
|
48
|
+
// Pinch pivot bookkeeping (see pinchGesture)
|
|
49
|
+
const needsPivot = useSharedValue(true);
|
|
35
50
|
const reset = useCallback(() => {
|
|
36
51
|
scale.value = startScale;
|
|
37
52
|
lastScale.value = startScale;
|
|
@@ -40,37 +55,56 @@ export const useScalableGesture = props => {
|
|
|
40
55
|
offsetX.value = startOffset;
|
|
41
56
|
lastOffsetX.value = startOffset;
|
|
42
57
|
}, [focalX, lastFocalX, lastOffsetX, lastScale, offsetX, scale, startOffset, startScale]);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
58
|
+
|
|
59
|
+
// Memoized: handing a new gesture instance to GestureDetector mid-gesture
|
|
60
|
+
// resets the active pan and makes the chart jump
|
|
61
|
+
const panGesture = useMemo(() => Gesture.Pan()
|
|
62
|
+
// Single-finger only: two fingers belong to the pinch, whose focal
|
|
63
|
+
// rebase would otherwise fight the pan over offsetX
|
|
64
|
+
.maxPointers(1)
|
|
65
|
+
// Incremental deltas (changeX) with a live clamp keep the content
|
|
66
|
+
// edges pinned: no overscroll, no snap-back to interrupt
|
|
67
|
+
.onChange(event => {
|
|
68
|
+
const [minOffset, maxOffset] = getOffsetBoundsWl(width, startOffset, focalX.value, scale.value);
|
|
69
|
+
offsetX.value = clamp(offsetX.value + event.changeX, minOffset, maxOffset);
|
|
46
70
|
}).onEnd(() => {
|
|
47
71
|
lastScale.value = scale.value;
|
|
48
72
|
lastFocalX.value = focalX.value;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
73
|
+
lastOffsetX.value = offsetX.value;
|
|
74
|
+
}), [focalX, lastFocalX, lastOffsetX, lastScale, offsetX, scale, startOffset, width]);
|
|
75
|
+
const pinchGesture = useMemo(() => Gesture.Pinch().onStart(() => {
|
|
76
|
+
needsPivot.value = true;
|
|
77
|
+
}).onUpdate(event => {
|
|
78
|
+
// The pinch can keep firing in the single-finger tail of the
|
|
79
|
+
// gesture, tracking the remaining finger as its focal: ignore it
|
|
80
|
+
// (numberOfPointers is missing on web — let those through)
|
|
81
|
+
if ((event.numberOfPointers ?? 2) < 2) {
|
|
82
|
+
needsPivot.value = true;
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const prevScale = scale.value;
|
|
86
|
+
const newScale = clamp(lastScale.value * event.scale, 1, Infinity);
|
|
87
|
+
if (needsPivot.value) {
|
|
88
|
+
// New pivot: rebase offsetX so re-anchoring under the fingers
|
|
89
|
+
// doesn't shift the content
|
|
90
|
+
const rebased = offsetX.value + (focalX.value - event.focalX) * (1 - prevScale);
|
|
91
|
+
offsetX.value = rebased * newScale / prevScale;
|
|
92
|
+
needsPivot.value = false;
|
|
56
93
|
} else {
|
|
57
|
-
|
|
94
|
+
// Keep the content glued to both fingers: the offset follows the
|
|
95
|
+
// focal translation and rescales with the zoom
|
|
96
|
+
offsetX.value = (event.focalX - focalX.value + offsetX.value / prevScale) * newScale;
|
|
58
97
|
}
|
|
59
|
-
offsetX.value = withTiming(newOffset, {
|
|
60
|
-
duration: 300
|
|
61
|
-
});
|
|
62
|
-
lastOffsetX.value = newOffset;
|
|
63
|
-
});
|
|
64
|
-
const pinchGesture = Gesture.Pinch().onUpdate(event => {
|
|
65
|
-
// Rebase offsetX so moving the focal point doesn't shift the content
|
|
66
|
-
offsetX.value += (focalX.value - event.focalX) * (1 - scale.value);
|
|
67
98
|
focalX.value = event.focalX;
|
|
68
|
-
scale.value =
|
|
99
|
+
scale.value = newScale;
|
|
100
|
+
// Zooming moves the bounds: keep the content edges pinned
|
|
101
|
+
const [minOffset, maxOffset] = getOffsetBoundsWl(width, startOffset, focalX.value, scale.value);
|
|
102
|
+
offsetX.value = clamp(offsetX.value, minOffset, maxOffset);
|
|
69
103
|
}).onEnd(() => {
|
|
70
104
|
lastScale.value = scale.value;
|
|
71
105
|
lastFocalX.value = focalX.value;
|
|
72
106
|
lastOffsetX.value = offsetX.value;
|
|
73
|
-
});
|
|
107
|
+
}), [focalX, lastFocalX, lastOffsetX, lastScale, needsPivot, offsetX, scale, startOffset, width]);
|
|
74
108
|
return {
|
|
75
109
|
scale,
|
|
76
110
|
focalX,
|
|
@@ -87,6 +121,14 @@ export const useUpdateAxis = function (props) {
|
|
|
87
121
|
onScaleChange
|
|
88
122
|
} = props;
|
|
89
123
|
const currentIndex = useSharedValue(0);
|
|
124
|
+
|
|
125
|
+
// Stable dispatcher so an inline onScaleChange doesn't re-register the
|
|
126
|
+
// reaction (and disturb the UI thread) on every render
|
|
127
|
+
const onScaleChangeRef = useRef(onScaleChange);
|
|
128
|
+
onScaleChangeRef.current = onScaleChange;
|
|
129
|
+
const dispatchScaleChange = useCallback(index => {
|
|
130
|
+
onScaleChangeRef.current?.(index);
|
|
131
|
+
}, []);
|
|
90
132
|
useAnimatedReaction(() => scale.value, (currentScale, _) => {
|
|
91
133
|
for (let i = 0; i < scales.length; i++) {
|
|
92
134
|
const _prevScale = scales[i - 1] ?? 0;
|
|
@@ -94,11 +136,11 @@ export const useUpdateAxis = function (props) {
|
|
|
94
136
|
if (_curScale === undefined || _prevScale === undefined) throw new Error('Got undefined scale');
|
|
95
137
|
if (currentScale >= _prevScale && currentScale < _curScale && currentIndex.value !== i) {
|
|
96
138
|
currentIndex.value = i;
|
|
97
|
-
|
|
139
|
+
scheduleOnRN(dispatchScaleChange, i);
|
|
98
140
|
break;
|
|
99
141
|
}
|
|
100
142
|
}
|
|
101
|
-
});
|
|
143
|
+
}, [scales, dispatchScaleChange]);
|
|
102
144
|
return {
|
|
103
145
|
currentIndex
|
|
104
146
|
};
|
|
@@ -138,20 +180,29 @@ export const useCursorGesture = function (props) {
|
|
|
138
180
|
if (!isContinuous && points === undefined) console.warn('Points must be defined for non-continuous mode');
|
|
139
181
|
const xPosition = useSharedValue(0);
|
|
140
182
|
const yPosition = useSharedValue(height);
|
|
141
|
-
const setPosition = (x, y) => {
|
|
142
|
-
'worklet';
|
|
143
183
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
const
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
184
|
+
// Memoized: a new gesture instance on every render can reset an active pan
|
|
185
|
+
const {
|
|
186
|
+
panGesture,
|
|
187
|
+
tapGesture
|
|
188
|
+
} = useMemo(() => {
|
|
189
|
+
const setPosition = (x, y) => {
|
|
190
|
+
'worklet';
|
|
191
|
+
|
|
192
|
+
yPosition.value = clamp(y, 0, height);
|
|
193
|
+
if (isContinuous || points === undefined) {
|
|
194
|
+
xPosition.value = clamp(x, 0, width);
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
const _closestDot = getClosestPoint(clamp(x, 0, width), points.value);
|
|
198
|
+
if (closestDataPoint !== undefined) closestDataPoint.value = _closestDot;
|
|
199
|
+
xPosition.value = _closestDot.x;
|
|
200
|
+
};
|
|
201
|
+
return {
|
|
202
|
+
panGesture: Gesture.Pan().onBegin(event => setPosition(event.x, event.y)).onUpdate(event => setPosition(event.x, event.y)),
|
|
203
|
+
tapGesture: Gesture.Tap().onBegin(event => setPosition(event.x, event.y))
|
|
204
|
+
};
|
|
205
|
+
}, [width, height, isContinuous, points, closestDataPoint, xPosition, yPosition]);
|
|
155
206
|
|
|
156
207
|
// Re-snap the cursor when the data points change (e.g. switching graphs)
|
|
157
208
|
useAnimatedReaction(() => points?.value, _points => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["clamp","useCallback","Gesture","useAnimatedReaction","useSharedValue","
|
|
1
|
+
{"version":3,"names":["clamp","useCallback","useMemo","useRef","Gesture","useAnimatedReaction","useSharedValue","scheduleOnRN","getPositionWl","position","focalX","scale","offsetX","getOffsetBoundsWl","width","startOffset","maxOffset","minOffset","useScalableGesture","props","startScale","lastScale","lastFocalX","lastOffsetX","needsPivot","reset","value","panGesture","Pan","maxPointers","onChange","event","changeX","onEnd","pinchGesture","Pinch","onStart","onUpdate","numberOfPointers","prevScale","newScale","Infinity","rebased","useUpdateAxis","scales","onScaleChange","currentIndex","onScaleChangeRef","current","dispatchScaleChange","index","currentScale","_","i","length","_prevScale","_curScale","undefined","Error","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":[]}
|
|
@@ -1,21 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { PathVerb, Skia } from '
|
|
3
|
+
import { PathVerb, Skia } from 'react-native-skia';
|
|
4
|
+
import { useMemo, useRef } from 'react';
|
|
4
5
|
import { scaleLinear } from 'd3-scale';
|
|
5
6
|
import * as shape from 'd3-shape';
|
|
6
|
-
import { useAnimatedReaction, withTiming } from 'react-native-reanimated';
|
|
7
|
+
import { useAnimatedReaction, useSharedValue, withTiming } from 'react-native-reanimated';
|
|
7
8
|
import { getPositionWl } from "./gesture.js";
|
|
8
|
-
import {
|
|
9
|
+
import { commandsToBezier, findBezierIndex, getYBeyondPathEnds, getYOnBezier } from "./maths.js";
|
|
9
10
|
|
|
10
11
|
/** @deprecated Use {@link BuildGraphConfig} instead */
|
|
11
12
|
|
|
12
13
|
export const buildGraph = function (data, width, height, config) {
|
|
13
14
|
if (data.length === 0) throw new Error('buildGraph requires at least one data point');
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
|
|
16
|
+
// Loops rather than Math.min(...data): spreading a long series can exceed the engine's argument limit
|
|
17
|
+
let dataMinX = Infinity;
|
|
18
|
+
let dataMaxX = -Infinity;
|
|
19
|
+
let dataMinY = Infinity;
|
|
20
|
+
let dataMaxY = -Infinity;
|
|
21
|
+
for (const [x, y] of data) {
|
|
22
|
+
if (x < dataMinX) dataMinX = x;
|
|
23
|
+
if (x > dataMaxX) dataMaxX = x;
|
|
24
|
+
if (y < dataMinY) dataMinY = y;
|
|
25
|
+
if (y > dataMaxY) dataMaxY = y;
|
|
26
|
+
}
|
|
27
|
+
const minX = config?.minX ?? dataMinX;
|
|
28
|
+
const maxX = config?.maxX ?? dataMaxX;
|
|
16
29
|
const scaleX = scaleLinear().domain([minX, maxX]).range([0, width]);
|
|
17
|
-
const minY = config?.minY ??
|
|
18
|
-
const maxY = config?.maxY ??
|
|
30
|
+
const minY = config?.minY ?? dataMinY;
|
|
31
|
+
const maxY = config?.maxY ?? dataMaxY;
|
|
19
32
|
const scaleY = scaleLinear().domain([minY, maxY]).range([height, 0]);
|
|
20
33
|
const path = shape.line().x(([x]) => scaleX(x)).y(([, y]) => scaleY(y)).curve(config?.curve ?? shape.curveBasis)(data);
|
|
21
34
|
if (path === null) throw new Error('Failed to build the line path');
|
|
@@ -95,18 +108,33 @@ export const useDotsTransition = function (props) {
|
|
|
95
108
|
opacityWl = defaultOpacityTransitionWl,
|
|
96
109
|
translateWl = defaultTranslateTransitionWl
|
|
97
110
|
} = props;
|
|
111
|
+
|
|
112
|
+
// Normalized once per path change, not per dot per frame
|
|
113
|
+
const commands = useSharedValue([]);
|
|
114
|
+
const visibleCount = useSharedValue(0);
|
|
115
|
+
// Bumped when the data or the dots are replaced, so they get retargeted
|
|
116
|
+
// even if the graph index is unchanged
|
|
117
|
+
const generationRef = useRef(0);
|
|
118
|
+
const generation = useMemo(() => generationRef.current += 1,
|
|
119
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
120
|
+
[dataPoints, dots]);
|
|
121
|
+
|
|
122
|
+
// Retarget on graph or data change only: re-assigning x while it animates
|
|
123
|
+
// would restart the animation every frame
|
|
98
124
|
useAnimatedReaction(() => ({
|
|
99
125
|
_currentGraph: currentGraph.value,
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
// even when the path is swapped instantly or tweens on another duration
|
|
103
|
-
_xs: dots.map(d => d.x.value)
|
|
126
|
+
_path: path.value,
|
|
127
|
+
_generation: generation
|
|
104
128
|
}), ({
|
|
105
129
|
_currentGraph,
|
|
106
|
-
|
|
107
|
-
|
|
130
|
+
_path,
|
|
131
|
+
_generation
|
|
132
|
+
}, previous) => {
|
|
133
|
+
commands.value = commandsToBezier(_path.toCmds());
|
|
134
|
+
if (previous !== null && previous._currentGraph === _currentGraph && previous._generation === _generation) return;
|
|
108
135
|
const newDataPoints = dataPoints[_currentGraph];
|
|
109
136
|
if (newDataPoints === undefined) throw new Error('Data points cannot be undefined');
|
|
137
|
+
visibleCount.value = newDataPoints.length;
|
|
110
138
|
dots.forEach((_dot, i) => {
|
|
111
139
|
const _newDot = newDataPoints[i];
|
|
112
140
|
if (!_newDot) {
|
|
@@ -114,12 +142,37 @@ export const useDotsTransition = function (props) {
|
|
|
114
142
|
return;
|
|
115
143
|
}
|
|
116
144
|
_dot.x.value = translateWl(_newDot.x);
|
|
117
|
-
const newY = getYForX(_currentCommands, _dot.x.value);
|
|
118
|
-
if (newY !== undefined) {
|
|
119
|
-
_dot.y.value = newY;
|
|
120
|
-
}
|
|
121
145
|
_dot.opacity.value = opacityWl(1);
|
|
122
146
|
});
|
|
123
|
-
}
|
|
147
|
+
},
|
|
148
|
+
// Explicit deps: without them the reaction re-registers and re-fires on
|
|
149
|
+
// every parent render, restarting every dot animation on the UI thread
|
|
150
|
+
[currentGraph, path, dataPoints, dots, opacityWl, translateWl, generation]);
|
|
151
|
+
|
|
152
|
+
// Keep y glued to the curve while x animates or the path tweens
|
|
153
|
+
useAnimatedReaction(() => ({
|
|
154
|
+
_cmds: commands.value,
|
|
155
|
+
_xs: dots.map(d => d.x.value)
|
|
156
|
+
}), ({
|
|
157
|
+
_cmds,
|
|
158
|
+
_xs
|
|
159
|
+
}) => {
|
|
160
|
+
const count = Math.min(visibleCount.value, dots.length);
|
|
161
|
+
// Dots are in x order, so one forward walk over the segments serves them all
|
|
162
|
+
let segment = 0;
|
|
163
|
+
for (let i = 0; i < count; i++) {
|
|
164
|
+
const x = _xs[i];
|
|
165
|
+
let index = findBezierIndex(_cmds, x, segment);
|
|
166
|
+
if (index === -1 && segment > 1) index = findBezierIndex(_cmds, x);
|
|
167
|
+
let newY;
|
|
168
|
+
if (index === -1) {
|
|
169
|
+
newY = getYBeyondPathEnds(_cmds, x);
|
|
170
|
+
} else {
|
|
171
|
+
segment = index;
|
|
172
|
+
newY = getYOnBezier(_cmds, index, x);
|
|
173
|
+
}
|
|
174
|
+
if (newY !== undefined) dots[i].y.value = newY;
|
|
175
|
+
}
|
|
176
|
+
}, [dots]);
|
|
124
177
|
};
|
|
125
178
|
//# sourceMappingURL=graphUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["PathVerb","Skia","scaleLinear","shape","useAnimatedReaction","withTiming","getPositionWl","
|
|
1
|
+
{"version":3,"names":["PathVerb","Skia","useMemo","useRef","scaleLinear","shape","useAnimatedReaction","useSharedValue","withTiming","getPositionWl","commandsToBezier","findBezierIndex","getYBeyondPathEnds","getYOnBezier","buildGraph","data","width","height","config","length","Error","dataMinX","Infinity","dataMaxX","dataMinY","dataMaxY","x","y","minX","maxX","scaleX","domain","range","minY","maxY","scaleY","path","line","curve","curveBasis","dataPoints","map","value","skiaPath","Path","MakeFromSVGString","scaleCommands","commands","focalX","offsetX","_scaleY","command","commandType","undefined","Line","Move","Quad","Cubic","Close","defaultOpacityTransitionWl","opacity","duration","defaultTranslateTransitionWl","position","useDotsTransition","props","currentGraph","dots","opacityWl","translateWl","visibleCount","generationRef","generation","current","_currentGraph","_path","_generation","previous","toCmds","newDataPoints","forEach","_dot","i","_newDot","_cmds","_xs","d","count","Math","min","segment","index","newY"],"sourceRoot":"../../../src","sources":["Charts/graphUtils.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,9 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
export { AxisLine, BottomAxis, Tick } from "./BottomAxis/index.js";
|
|
4
4
|
export { Cursor } from "./Cursor.js";
|
|
5
|
+
export { Dot } from "./Dot.js";
|
|
6
|
+
export { Dots } from "./Dots.js";
|
|
7
|
+
export { YAxis, getPaddedTicks } from "./YAxis.js";
|
|
5
8
|
export { LineChart } from "./Linechart/index.js";
|
|
6
9
|
export { ScalablePath, ZoomableLineChart } from "./ZoomableLinechart/index.js";
|
|
7
|
-
export { getClosestPoint, getPositionWl, useCursorGesture, useScalableGesture, useUpdateAxis } from "./gesture.js";
|
|
10
|
+
export { getClosestPoint, getOffsetBoundsWl, getPositionWl, useCursorGesture, useScalableGesture, useUpdateAxis } from "./gesture.js";
|
|
8
11
|
export { buildGraph, defaultOpacityTransitionWl, defaultTranslateTransitionWl, scaleCommands, useDotsTransition } from "./graphUtils.js";
|
|
9
|
-
export { commandsToBezier, cubicBezierYForX, getYForX, magnitude, normalize, selectCurve } from "./maths.js";
|
|
12
|
+
export { commandsToBezier, cubicBezierYForX, getYForX, getYForXOnBeziers, magnitude, normalize, selectCurve } from "./maths.js";
|
|
10
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AxisLine","BottomAxis","Tick","Cursor","LineChart","ScalablePath","ZoomableLineChart","getClosestPoint","getPositionWl","useCursorGesture","useScalableGesture","useUpdateAxis","buildGraph","defaultOpacityTransitionWl","defaultTranslateTransitionWl","scaleCommands","useDotsTransition","commandsToBezier","cubicBezierYForX","getYForX","magnitude","normalize","selectCurve"],"sourceRoot":"../../../src","sources":["Charts/index.tsx"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,UAAU,EAAEC,IAAI,QAAQ,uBAAc;
|
|
1
|
+
{"version":3,"names":["AxisLine","BottomAxis","Tick","Cursor","Dot","Dots","YAxis","getPaddedTicks","LineChart","ScalablePath","ZoomableLineChart","getClosestPoint","getOffsetBoundsWl","getPositionWl","useCursorGesture","useScalableGesture","useUpdateAxis","buildGraph","defaultOpacityTransitionWl","defaultTranslateTransitionWl","scaleCommands","useDotsTransition","commandsToBezier","cubicBezierYForX","getYForX","getYForXOnBeziers","magnitude","normalize","selectCurve"],"sourceRoot":"../../../src","sources":["Charts/index.tsx"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,UAAU,EAAEC,IAAI,QAAQ,uBAAc;AAOzD,SAASC,MAAM,QAAQ,aAAU;AAEjC,SAASC,GAAG,QAAQ,UAAO;AAE3B,SAASC,IAAI,QAAQ,WAAQ;AAE7B,SAASC,KAAK,EAAEC,cAAc,QAAQ,YAAS;AAE/C,SAASC,SAAS,QAAQ,sBAAa;AAEvC,SAASC,YAAY,EAAEC,iBAAiB,QAAQ,8BAAqB;AAKrE,SACEC,eAAe,EACfC,iBAAiB,EACjBC,aAAa,EACbC,gBAAgB,EAChBC,kBAAkB,EAClBC,aAAa,QACR,cAAW;AAOlB,SACEC,UAAU,EACVC,0BAA0B,EAC1BC,4BAA4B,EAC5BC,aAAa,EACbC,iBAAiB,QACZ,iBAAc;AAQrB,SACEC,gBAAgB,EAChBC,gBAAgB,EAChBC,QAAQ,EACRC,iBAAiB,EACjBC,SAAS,EACTC,SAAS,EACTC,WAAW,QACN,YAAS","ignoreList":[]}
|