react-native-wagmi-charts 2.7.0 → 2.7.2
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/lib/commonjs/charts/candle/Context.js +2 -9
- package/lib/commonjs/charts/candle/Context.js.map +1 -1
- package/lib/commonjs/charts/candle/Crosshair.js +32 -26
- package/lib/commonjs/charts/candle/Crosshair.js.map +1 -1
- package/lib/commonjs/charts/line/Context.js +1 -1
- package/lib/commonjs/charts/line/Context.js.map +1 -1
- package/lib/commonjs/charts/line/Cursor.js +49 -33
- package/lib/commonjs/charts/line/Cursor.js.map +1 -1
- package/lib/module/charts/candle/Context.js +2 -9
- package/lib/module/charts/candle/Context.js.map +1 -1
- package/lib/module/charts/candle/Crosshair.js +34 -28
- package/lib/module/charts/candle/Crosshair.js.map +1 -1
- package/lib/module/charts/line/Context.js +1 -1
- package/lib/module/charts/line/Context.js.map +1 -1
- package/lib/module/charts/line/Cursor.js +52 -36
- package/lib/module/charts/line/Cursor.js.map +1 -1
- package/lib/typescript/src/charts/candle/Context.d.ts.map +1 -1
- package/lib/typescript/src/charts/candle/Crosshair.d.ts +2 -3
- package/lib/typescript/src/charts/candle/Crosshair.d.ts.map +1 -1
- package/lib/typescript/src/charts/line/Cursor.d.ts +5 -3
- package/lib/typescript/src/charts/line/Cursor.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/charts/candle/Context.tsx +1 -8
- package/src/charts/candle/Crosshair.tsx +37 -29
- package/src/charts/line/Context.tsx +1 -1
- package/src/charts/line/Cursor.tsx +66 -43
|
@@ -32,16 +32,10 @@ function CandlestickChartProvider({
|
|
|
32
32
|
}) {
|
|
33
33
|
const [width, setWidth] = React.useState(0);
|
|
34
34
|
const [height, setHeight] = React.useState(0);
|
|
35
|
-
const [step, setStep] = React.useState(0);
|
|
36
35
|
const currentX = (0, _reactNativeReanimated.useSharedValue)(-1);
|
|
37
36
|
const currentY = (0, _reactNativeReanimated.useSharedValue)(-1);
|
|
38
37
|
const domain = React.useMemo(() => valueRangeY ?? (0, _utils.getDomain)(data), [data, valueRangeY]);
|
|
39
|
-
React.
|
|
40
|
-
if (data.length) {
|
|
41
|
-
const newStep = width / data.length;
|
|
42
|
-
setStep(newStep);
|
|
43
|
-
}
|
|
44
|
-
}, [data.length, width]);
|
|
38
|
+
const step = React.useMemo(() => width / data.length, [data.length, width]);
|
|
45
39
|
const contextValue = React.useMemo(() => ({
|
|
46
40
|
currentX,
|
|
47
41
|
currentY,
|
|
@@ -51,8 +45,7 @@ function CandlestickChartProvider({
|
|
|
51
45
|
domain,
|
|
52
46
|
step,
|
|
53
47
|
setWidth,
|
|
54
|
-
setHeight
|
|
55
|
-
setStep
|
|
48
|
+
setHeight
|
|
56
49
|
}), [currentX, currentY, data, domain, height, step, width]);
|
|
57
50
|
return /*#__PURE__*/React.createElement(CandlestickChartContext.Provider, {
|
|
58
51
|
value: contextValue
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","_interopRequireWildcard","require","_reactNativeReanimated","_utils","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","CandlestickChartContext","exports","createContext","currentX","value","currentY","data","height","width","domain","step","setWidth","undefined","setHeight","CandlestickChartProvider","children","valueRangeY","useState","
|
|
1
|
+
{"version":3,"names":["React","_interopRequireWildcard","require","_reactNativeReanimated","_utils","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","CandlestickChartContext","exports","createContext","currentX","value","currentY","data","height","width","domain","step","setWidth","undefined","setHeight","CandlestickChartProvider","children","valueRangeY","useState","useSharedValue","useMemo","getDomain","length","contextValue","createElement","Provider"],"sourceRoot":"../../../../src","sources":["charts/candle/Context.tsx"],"mappings":";;;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAD,OAAA;AAGA,IAAAE,MAAA,GAAAF,OAAA;AAAoC,SAAAG,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAL,wBAAAK,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAE7B,MAAMW,uBAAuB,GAAAC,OAAA,CAAAD,uBAAA,gBAAGzB,KAAK,CAAC2B,aAAa,CAAW;EACnEC,QAAQ,EAAE;IAAEC,KAAK,EAAE,CAAC;EAAE,CAAwB;EAC9CC,QAAQ,EAAE;IAAED,KAAK,EAAE,CAAC;EAAE,CAAwB;EAC9CE,IAAI,EAAE,EAAE;EACRC,MAAM,EAAE,CAAC;EACTC,KAAK,EAAE,CAAC;EACRC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;EACdC,IAAI,EAAE,CAAC;EACPC,QAAQ,EAAEA,CAAA,KAAMC,SAAS;EACzBC,SAAS,EAAEA,CAAA,KAAMD;AACnB,CAAC,CAAC;AAUK,SAASE,wBAAwBA,CAAC;EACvCC,QAAQ;EACRT,IAAI,GAAG,EAAE;EACTU;AAC6B,CAAC,EAAE;EAChC,MAAM,CAACR,KAAK,EAAEG,QAAQ,CAAC,GAAGpC,KAAK,CAAC0C,QAAQ,CAAC,CAAC,CAAC;EAC3C,MAAM,CAACV,MAAM,EAAEM,SAAS,CAAC,GAAGtC,KAAK,CAAC0C,QAAQ,CAAC,CAAC,CAAC;EAC7C,MAAMd,QAAQ,GAAG,IAAAe,qCAAc,EAAC,CAAC,CAAC,CAAC;EACnC,MAAMb,QAAQ,GAAG,IAAAa,qCAAc,EAAC,CAAC,CAAC,CAAC;EACnC,MAAMT,MAAM,GAAGlC,KAAK,CAAC4C,OAAO,CAAC,MAAMH,WAAW,IAAI,IAAAI,gBAAS,EAACd,IAAI,CAAC,EAAE,CAACA,IAAI,EAAEU,WAAW,CAAC,CAAC;EAEvF,MAAMN,IAAI,GAAGnC,KAAK,CAAC4C,OAAO,CAAC,MAAMX,KAAK,GAAGF,IAAI,CAACe,MAAM,EAAE,CAACf,IAAI,CAACe,MAAM,EAAEb,KAAK,CAAC,CAAC;EAE3E,MAAMc,YAAY,GAAG/C,KAAK,CAAC4C,OAAO,CAChC,OAAO;IACLhB,QAAQ;IACRE,QAAQ;IACRC,IAAI;IACJE,KAAK;IACLD,MAAM;IACNE,MAAM;IACNC,IAAI;IACJC,QAAQ;IACRE;EACF,CAAC,CAAC,EACF,CAACV,QAAQ,EAAEE,QAAQ,EAAEC,IAAI,EAAEG,MAAM,EAAEF,MAAM,EAAEG,IAAI,EAAEF,KAAK,CACxD,CAAC;EAED,oBACEjC,KAAA,CAAAgD,aAAA,CAACvB,uBAAuB,CAACwB,QAAQ;IAACpB,KAAK,EAAEkB;EAAa,GACnDP,QAC+B,CAAC;AAEvC","ignoreList":[]}
|
|
@@ -22,8 +22,7 @@ function CandlestickChartCrosshair({
|
|
|
22
22
|
children,
|
|
23
23
|
horizontalCrosshairProps = {},
|
|
24
24
|
verticalCrosshairProps = {},
|
|
25
|
-
lineProps = {}
|
|
26
|
-
...props
|
|
25
|
+
lineProps = {}
|
|
27
26
|
}) {
|
|
28
27
|
const {
|
|
29
28
|
width,
|
|
@@ -36,26 +35,35 @@ function CandlestickChartCrosshair({
|
|
|
36
35
|
} = (0, _useCandlestickChart.useCandlestickChart)();
|
|
37
36
|
const tooltipPosition = (0, _reactNativeReanimated.useSharedValue)('left');
|
|
38
37
|
const opacity = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
} else {
|
|
48
|
-
tooltipPosition.value = 'left';
|
|
49
|
-
}
|
|
50
|
-
opacity.value = 1;
|
|
51
|
-
currentY.value = (0, _reactNativeRedash.clamp)(y, 0, height);
|
|
52
|
-
currentX.value = boundedX - boundedX % step + step / 2;
|
|
53
|
-
},
|
|
54
|
-
onEnd: () => {
|
|
55
|
-
opacity.value = 0;
|
|
56
|
-
currentY.value = -1;
|
|
57
|
-
currentX.value = -1;
|
|
38
|
+
const updatePosition = (x, y) => {
|
|
39
|
+
'worklet';
|
|
40
|
+
|
|
41
|
+
const boundedX = x <= width - 1 ? x : width - 1;
|
|
42
|
+
if (boundedX < 100) {
|
|
43
|
+
tooltipPosition.value = 'right';
|
|
44
|
+
} else {
|
|
45
|
+
tooltipPosition.value = 'left';
|
|
58
46
|
}
|
|
47
|
+
currentY.value = (0, _reactNativeRedash.clamp)(y, 0, height);
|
|
48
|
+
currentX.value = boundedX - boundedX % step + step / 2;
|
|
49
|
+
};
|
|
50
|
+
const longPressGesture = _reactNativeGestureHandler.Gesture.LongPress().minDuration(0).maxDistance(999999).onStart(event => {
|
|
51
|
+
'worklet';
|
|
52
|
+
|
|
53
|
+
opacity.value = 1;
|
|
54
|
+
updatePosition(event.x, event.y);
|
|
55
|
+
}).onTouchesMove(event => {
|
|
56
|
+
'worklet';
|
|
57
|
+
|
|
58
|
+
if (opacity.value === 1 && event.allTouches.length > 0) {
|
|
59
|
+
updatePosition(event.allTouches[0].x, event.allTouches[0].y);
|
|
60
|
+
}
|
|
61
|
+
}).onEnd(() => {
|
|
62
|
+
'worklet';
|
|
63
|
+
|
|
64
|
+
opacity.value = 0;
|
|
65
|
+
currentY.value = -1;
|
|
66
|
+
currentX.value = -1;
|
|
59
67
|
});
|
|
60
68
|
const horizontal = (0, _reactNativeReanimated.useAnimatedStyle)(() => ({
|
|
61
69
|
opacity: opacity.value,
|
|
@@ -74,11 +82,9 @@ function CandlestickChartCrosshair({
|
|
|
74
82
|
(0, _reactNativeReanimated.runOnJS)(onCurrentXChange)(data);
|
|
75
83
|
}
|
|
76
84
|
}, [currentX]);
|
|
77
|
-
return /*#__PURE__*/React.createElement(_reactNativeGestureHandler.
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
onGestureEvent: onGestureEvent
|
|
81
|
-
}, props), /*#__PURE__*/React.createElement(_reactNativeReanimated.default.View, {
|
|
85
|
+
return /*#__PURE__*/React.createElement(_reactNativeGestureHandler.GestureDetector, {
|
|
86
|
+
gesture: longPressGesture
|
|
87
|
+
}, /*#__PURE__*/React.createElement(_reactNativeReanimated.default.View, {
|
|
82
88
|
style: _reactNative.StyleSheet.absoluteFill
|
|
83
89
|
}, /*#__PURE__*/React.createElement(_reactNativeReanimated.default.View, _extends({
|
|
84
90
|
style: [_reactNative.StyleSheet.absoluteFill, horizontal]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","_interopRequireWildcard","require","_reactNative","_reactNativeGestureHandler","_reactNativeReanimated","_reactNativeRedash","_Chart","_Line","_useCandlestickChart","_CrosshairTooltip","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","target","arguments","length","source","key","prototype","apply","CandlestickChartCrosshair","color","onCurrentXChange","children","horizontalCrosshairProps","verticalCrosshairProps","lineProps","
|
|
1
|
+
{"version":3,"names":["React","_interopRequireWildcard","require","_reactNative","_reactNativeGestureHandler","_reactNativeReanimated","_reactNativeRedash","_Chart","_Line","_useCandlestickChart","_CrosshairTooltip","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","target","arguments","length","source","key","prototype","apply","CandlestickChartCrosshair","color","onCurrentXChange","children","horizontalCrosshairProps","verticalCrosshairProps","lineProps","width","height","useContext","CandlestickChartDimensionsContext","currentX","currentY","step","useCandlestickChart","tooltipPosition","useSharedValue","opacity","updatePosition","x","y","boundedX","value","clamp","longPressGesture","Gesture","LongPress","minDuration","maxDistance","onStart","event","onTouchesMove","allTouches","onEnd","horizontal","useAnimatedStyle","transform","translateY","vertical","translateX","useAnimatedReaction","data","prevData","runOnJS","createElement","GestureDetector","gesture","View","style","StyleSheet","absoluteFill","CandlestickChartLine","CandlestickChartCrosshairTooltipContext","Provider","position"],"sourceRoot":"../../../../src","sources":["charts/candle/Crosshair.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -61,7 +61,7 @@ function LineChartProvider({
|
|
|
61
61
|
};
|
|
62
62
|
}, [currentIndex, currentX, data, domain, isActive, yRange?.max, yRange?.min, xLength, xDomain]);
|
|
63
63
|
(0, _reactNativeReanimated.useAnimatedReaction)(() => currentIndex.value, (x, prevX) => {
|
|
64
|
-
if (x !==
|
|
64
|
+
if (x !== prevX && onCurrentIndexChange) {
|
|
65
65
|
(0, _reactNativeReanimated.runOnJS)(onCurrentIndexChange)(x);
|
|
66
66
|
}
|
|
67
67
|
}, [currentIndex]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","_interopRequireWildcard","require","_reactNativeReanimated","_Data","_utils","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","LineChartContext","exports","createContext","currentX","value","currentIndex","domain","isActive","yDomain","min","max","xDomain","undefined","xLength","LineChartProvider","displayName","children","data","yRange","onCurrentIndexChange","useSharedValue","useMemo","getDomain","Array","isArray","values","contextValue","lineChartDataPropToArray","map","domainRows","Math","length","useAnimatedReaction","x","prevX","runOnJS","createElement","LineChartDataProvider","Provider"],"sourceRoot":"../../../../src","sources":["charts/line/Context.tsx"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["React","_interopRequireWildcard","require","_reactNativeReanimated","_Data","_utils","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","LineChartContext","exports","createContext","currentX","value","currentIndex","domain","isActive","yDomain","min","max","xDomain","undefined","xLength","LineChartProvider","displayName","children","data","yRange","onCurrentIndexChange","useSharedValue","useMemo","getDomain","Array","isArray","values","contextValue","lineChartDataPropToArray","map","domainRows","Math","length","useAnimatedReaction","x","prevX","runOnJS","createElement","LineChartDataProvider","Provider"],"sourceRoot":"../../../../src","sources":["charts/line/Context.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -16,7 +16,6 @@ var _d3Scale = require("d3-scale");
|
|
|
16
16
|
var _useLineChart = require("./useLineChart");
|
|
17
17
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
18
18
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
19
|
-
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
20
19
|
const CursorContext = exports.CursorContext = /*#__PURE__*/React.createContext({
|
|
21
20
|
type: ''
|
|
22
21
|
});
|
|
@@ -26,7 +25,9 @@ function LineChartCursor({
|
|
|
26
25
|
snapToPoint,
|
|
27
26
|
type,
|
|
28
27
|
at,
|
|
29
|
-
|
|
28
|
+
shouldCancelWhenOutside = false,
|
|
29
|
+
onActivated,
|
|
30
|
+
onEnded
|
|
30
31
|
}) {
|
|
31
32
|
const {
|
|
32
33
|
pathWidth: width,
|
|
@@ -74,45 +75,60 @@ function LineChartCursor({
|
|
|
74
75
|
isActive.value = true;
|
|
75
76
|
}
|
|
76
77
|
}, [at, scaleX]);
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
x
|
|
80
|
-
}) => {
|
|
81
|
-
if (parsedPath) {
|
|
82
|
-
const xPosition = Math.max(0, x <= width ? x : width);
|
|
83
|
-
isActive.value = true;
|
|
78
|
+
const updatePosition = xPosition => {
|
|
79
|
+
'worklet';
|
|
84
80
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
81
|
+
if (parsedPath) {
|
|
82
|
+
// on Web, we could drag the cursor to be negative, breaking it
|
|
83
|
+
// so we clamp the index at 0 to fix it
|
|
84
|
+
// https://github.com/coinjar/react-native-wagmi-charts/issues/24
|
|
85
|
+
const minIndex = 0;
|
|
86
|
+
const boundedIndex = Math.max(minIndex, Math.round(xPosition / width / (1 / (data ? data.length - 1 : 1))));
|
|
87
|
+
if (snapToPoint) {
|
|
88
|
+
// We have to run this on the JS thread unfortunately as the scaleLinear functions won't work on UI thread
|
|
89
|
+
(0, _reactNativeReanimated.runOnJS)(linearScalePositionAndIndex)({
|
|
90
|
+
xPosition
|
|
91
|
+
});
|
|
92
|
+
} else if (!snapToPoint) {
|
|
93
|
+
currentX.value = xPosition;
|
|
94
|
+
currentIndex.value = boundedIndex;
|
|
99
95
|
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
const longPressGesture = _reactNativeGestureHandler.Gesture.LongPress().minDuration(0).maxDistance(999999).shouldCancelWhenOutside(shouldCancelWhenOutside).onStart(event => {
|
|
99
|
+
'worklet';
|
|
100
|
+
|
|
101
|
+
if (parsedPath) {
|
|
102
|
+
const xPosition = Math.max(0, event.x <= width ? event.x : width);
|
|
103
|
+
isActive.value = true;
|
|
104
|
+
updatePosition(xPosition);
|
|
105
|
+
if (onActivated) {
|
|
106
|
+
(0, _reactNativeReanimated.runOnJS)(onActivated)();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}).onTouchesMove(event => {
|
|
110
|
+
'worklet';
|
|
111
|
+
|
|
112
|
+
if (parsedPath && isActive.value && event.allTouches.length > 0) {
|
|
113
|
+
const xPosition = Math.max(0, event.allTouches[0].x <= width ? event.allTouches[0].x : width);
|
|
114
|
+
updatePosition(xPosition);
|
|
115
|
+
}
|
|
116
|
+
}).onEnd(() => {
|
|
117
|
+
'worklet';
|
|
118
|
+
|
|
119
|
+
isActive.value = false;
|
|
120
|
+
currentIndex.value = -1;
|
|
121
|
+
if (onEnded) {
|
|
122
|
+
(0, _reactNativeReanimated.runOnJS)(onEnded)();
|
|
104
123
|
}
|
|
105
124
|
});
|
|
106
125
|
return /*#__PURE__*/React.createElement(CursorContext.Provider, {
|
|
107
126
|
value: {
|
|
108
127
|
type
|
|
109
128
|
}
|
|
110
|
-
}, /*#__PURE__*/React.createElement(_reactNativeGestureHandler.
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
onGestureEvent: onGestureEvent,
|
|
114
|
-
shouldCancelWhenOutside: false
|
|
115
|
-
}, props), /*#__PURE__*/React.createElement(_reactNativeReanimated.default.View, {
|
|
129
|
+
}, /*#__PURE__*/React.createElement(_reactNativeGestureHandler.GestureDetector, {
|
|
130
|
+
gesture: longPressGesture
|
|
131
|
+
}, /*#__PURE__*/React.createElement(_reactNativeReanimated.default.View, {
|
|
116
132
|
style: _reactNative.StyleSheet.absoluteFill
|
|
117
133
|
}, children)));
|
|
118
134
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","React","_reactNativeReanimated","_reactNativeGestureHandler","_Chart","_reactNative","_d3Array","_d3Scale","_useLineChart","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","React","_reactNativeReanimated","_reactNativeGestureHandler","_Chart","_reactNative","_d3Array","_d3Scale","_useLineChart","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","CursorContext","exports","createContext","type","LineChartCursor","displayName","children","snapToPoint","at","shouldCancelWhenOutside","onActivated","onEnded","pathWidth","width","parsedPath","useContext","LineChartDimensionsContext","currentX","currentIndex","isActive","data","xDomain","useLineChart","xValues","useMemo","map","timestamp","scaleX","domainArray","length","scaleLinear","domain","range","linearScalePositionAndIndex","xPosition","xRelative","invert","closestIndex","bisectCenter","pathDataDelta","Math","abs","curves","closestPathCurve","max","min","newXPosition","to","move","x","value","useEffect","undefined","runOnJS","updatePosition","minIndex","boundedIndex","round","longPressGesture","Gesture","LongPress","minDuration","maxDistance","onStart","event","onTouchesMove","allTouches","onEnd","createElement","Provider","GestureDetector","gesture","View","style","StyleSheet","absoluteFill"],"sourceRoot":"../../../../src","sources":["charts/line/Cursor.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -23,16 +23,10 @@ export function CandlestickChartProvider({
|
|
|
23
23
|
}) {
|
|
24
24
|
const [width, setWidth] = React.useState(0);
|
|
25
25
|
const [height, setHeight] = React.useState(0);
|
|
26
|
-
const [step, setStep] = React.useState(0);
|
|
27
26
|
const currentX = useSharedValue(-1);
|
|
28
27
|
const currentY = useSharedValue(-1);
|
|
29
28
|
const domain = React.useMemo(() => valueRangeY ?? getDomain(data), [data, valueRangeY]);
|
|
30
|
-
React.
|
|
31
|
-
if (data.length) {
|
|
32
|
-
const newStep = width / data.length;
|
|
33
|
-
setStep(newStep);
|
|
34
|
-
}
|
|
35
|
-
}, [data.length, width]);
|
|
29
|
+
const step = React.useMemo(() => width / data.length, [data.length, width]);
|
|
36
30
|
const contextValue = React.useMemo(() => ({
|
|
37
31
|
currentX,
|
|
38
32
|
currentY,
|
|
@@ -42,8 +36,7 @@ export function CandlestickChartProvider({
|
|
|
42
36
|
domain,
|
|
43
37
|
step,
|
|
44
38
|
setWidth,
|
|
45
|
-
setHeight
|
|
46
|
-
setStep
|
|
39
|
+
setHeight
|
|
47
40
|
}), [currentX, currentY, data, domain, height, step, width]);
|
|
48
41
|
return /*#__PURE__*/React.createElement(CandlestickChartContext.Provider, {
|
|
49
42
|
value: contextValue
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useSharedValue","getDomain","CandlestickChartContext","createContext","currentX","value","currentY","data","height","width","domain","step","setWidth","undefined","setHeight","CandlestickChartProvider","children","valueRangeY","useState","
|
|
1
|
+
{"version":3,"names":["React","useSharedValue","getDomain","CandlestickChartContext","createContext","currentX","value","currentY","data","height","width","domain","step","setWidth","undefined","setHeight","CandlestickChartProvider","children","valueRangeY","useState","useMemo","length","contextValue","createElement","Provider"],"sourceRoot":"../../../../src","sources":["charts/candle/Context.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAAsBC,cAAc,QAAQ,yBAAyB;AAGrE,SAASC,SAAS,QAAQ,SAAS;AAEnC,OAAO,MAAMC,uBAAuB,gBAAGH,KAAK,CAACI,aAAa,CAAW;EACnEC,QAAQ,EAAE;IAAEC,KAAK,EAAE,CAAC;EAAE,CAAwB;EAC9CC,QAAQ,EAAE;IAAED,KAAK,EAAE,CAAC;EAAE,CAAwB;EAC9CE,IAAI,EAAE,EAAE;EACRC,MAAM,EAAE,CAAC;EACTC,KAAK,EAAE,CAAC;EACRC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;EACdC,IAAI,EAAE,CAAC;EACPC,QAAQ,EAAEA,CAAA,KAAMC,SAAS;EACzBC,SAAS,EAAEA,CAAA,KAAMD;AACnB,CAAC,CAAC;AAUF,OAAO,SAASE,wBAAwBA,CAAC;EACvCC,QAAQ;EACRT,IAAI,GAAG,EAAE;EACTU;AAC6B,CAAC,EAAE;EAChC,MAAM,CAACR,KAAK,EAAEG,QAAQ,CAAC,GAAGb,KAAK,CAACmB,QAAQ,CAAC,CAAC,CAAC;EAC3C,MAAM,CAACV,MAAM,EAAEM,SAAS,CAAC,GAAGf,KAAK,CAACmB,QAAQ,CAAC,CAAC,CAAC;EAC7C,MAAMd,QAAQ,GAAGJ,cAAc,CAAC,CAAC,CAAC,CAAC;EACnC,MAAMM,QAAQ,GAAGN,cAAc,CAAC,CAAC,CAAC,CAAC;EACnC,MAAMU,MAAM,GAAGX,KAAK,CAACoB,OAAO,CAAC,MAAMF,WAAW,IAAIhB,SAAS,CAACM,IAAI,CAAC,EAAE,CAACA,IAAI,EAAEU,WAAW,CAAC,CAAC;EAEvF,MAAMN,IAAI,GAAGZ,KAAK,CAACoB,OAAO,CAAC,MAAMV,KAAK,GAAGF,IAAI,CAACa,MAAM,EAAE,CAACb,IAAI,CAACa,MAAM,EAAEX,KAAK,CAAC,CAAC;EAE3E,MAAMY,YAAY,GAAGtB,KAAK,CAACoB,OAAO,CAChC,OAAO;IACLf,QAAQ;IACRE,QAAQ;IACRC,IAAI;IACJE,KAAK;IACLD,MAAM;IACNE,MAAM;IACNC,IAAI;IACJC,QAAQ;IACRE;EACF,CAAC,CAAC,EACF,CAACV,QAAQ,EAAEE,QAAQ,EAAEC,IAAI,EAAEG,MAAM,EAAEF,MAAM,EAAEG,IAAI,EAAEF,KAAK,CACxD,CAAC;EAED,oBACEV,KAAA,CAAAuB,aAAA,CAACpB,uBAAuB,CAACqB,QAAQ;IAAClB,KAAK,EAAEgB;EAAa,GACnDL,QAC+B,CAAC;AAEvC","ignoreList":[]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { StyleSheet } from 'react-native';
|
|
4
|
-
import {
|
|
5
|
-
import Animated, {
|
|
4
|
+
import { Gesture, GestureDetector } from 'react-native-gesture-handler';
|
|
5
|
+
import Animated, { useSharedValue, useAnimatedStyle, useAnimatedReaction, runOnJS } from 'react-native-reanimated';
|
|
6
6
|
import { clamp } from 'react-native-redash';
|
|
7
7
|
import { CandlestickChartDimensionsContext } from './Chart';
|
|
8
8
|
import { CandlestickChartLine } from './Line';
|
|
@@ -14,8 +14,7 @@ export function CandlestickChartCrosshair({
|
|
|
14
14
|
children,
|
|
15
15
|
horizontalCrosshairProps = {},
|
|
16
16
|
verticalCrosshairProps = {},
|
|
17
|
-
lineProps = {}
|
|
18
|
-
...props
|
|
17
|
+
lineProps = {}
|
|
19
18
|
}) {
|
|
20
19
|
const {
|
|
21
20
|
width,
|
|
@@ -28,26 +27,35 @@ export function CandlestickChartCrosshair({
|
|
|
28
27
|
} = useCandlestickChart();
|
|
29
28
|
const tooltipPosition = useSharedValue('left');
|
|
30
29
|
const opacity = useSharedValue(0);
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
} else {
|
|
40
|
-
tooltipPosition.value = 'left';
|
|
41
|
-
}
|
|
42
|
-
opacity.value = 1;
|
|
43
|
-
currentY.value = clamp(y, 0, height);
|
|
44
|
-
currentX.value = boundedX - boundedX % step + step / 2;
|
|
45
|
-
},
|
|
46
|
-
onEnd: () => {
|
|
47
|
-
opacity.value = 0;
|
|
48
|
-
currentY.value = -1;
|
|
49
|
-
currentX.value = -1;
|
|
30
|
+
const updatePosition = (x, y) => {
|
|
31
|
+
'worklet';
|
|
32
|
+
|
|
33
|
+
const boundedX = x <= width - 1 ? x : width - 1;
|
|
34
|
+
if (boundedX < 100) {
|
|
35
|
+
tooltipPosition.value = 'right';
|
|
36
|
+
} else {
|
|
37
|
+
tooltipPosition.value = 'left';
|
|
50
38
|
}
|
|
39
|
+
currentY.value = clamp(y, 0, height);
|
|
40
|
+
currentX.value = boundedX - boundedX % step + step / 2;
|
|
41
|
+
};
|
|
42
|
+
const longPressGesture = Gesture.LongPress().minDuration(0).maxDistance(999999).onStart(event => {
|
|
43
|
+
'worklet';
|
|
44
|
+
|
|
45
|
+
opacity.value = 1;
|
|
46
|
+
updatePosition(event.x, event.y);
|
|
47
|
+
}).onTouchesMove(event => {
|
|
48
|
+
'worklet';
|
|
49
|
+
|
|
50
|
+
if (opacity.value === 1 && event.allTouches.length > 0) {
|
|
51
|
+
updatePosition(event.allTouches[0].x, event.allTouches[0].y);
|
|
52
|
+
}
|
|
53
|
+
}).onEnd(() => {
|
|
54
|
+
'worklet';
|
|
55
|
+
|
|
56
|
+
opacity.value = 0;
|
|
57
|
+
currentY.value = -1;
|
|
58
|
+
currentX.value = -1;
|
|
51
59
|
});
|
|
52
60
|
const horizontal = useAnimatedStyle(() => ({
|
|
53
61
|
opacity: opacity.value,
|
|
@@ -66,11 +74,9 @@ export function CandlestickChartCrosshair({
|
|
|
66
74
|
runOnJS(onCurrentXChange)(data);
|
|
67
75
|
}
|
|
68
76
|
}, [currentX]);
|
|
69
|
-
return /*#__PURE__*/React.createElement(
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
onGestureEvent: onGestureEvent
|
|
73
|
-
}, props), /*#__PURE__*/React.createElement(Animated.View, {
|
|
77
|
+
return /*#__PURE__*/React.createElement(GestureDetector, {
|
|
78
|
+
gesture: longPressGesture
|
|
79
|
+
}, /*#__PURE__*/React.createElement(Animated.View, {
|
|
74
80
|
style: StyleSheet.absoluteFill
|
|
75
81
|
}, /*#__PURE__*/React.createElement(Animated.View, _extends({
|
|
76
82
|
style: [StyleSheet.absoluteFill, horizontal]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","StyleSheet","
|
|
1
|
+
{"version":3,"names":["React","StyleSheet","Gesture","GestureDetector","Animated","useSharedValue","useAnimatedStyle","useAnimatedReaction","runOnJS","clamp","CandlestickChartDimensionsContext","CandlestickChartLine","useCandlestickChart","CandlestickChartCrosshairTooltipContext","CandlestickChartCrosshair","color","onCurrentXChange","children","horizontalCrosshairProps","verticalCrosshairProps","lineProps","width","height","useContext","currentX","currentY","step","tooltipPosition","opacity","updatePosition","x","y","boundedX","value","longPressGesture","LongPress","minDuration","maxDistance","onStart","event","onTouchesMove","allTouches","length","onEnd","horizontal","transform","translateY","vertical","translateX","data","prevData","createElement","gesture","View","style","absoluteFill","_extends","Provider","position"],"sourceRoot":"../../../../src","sources":["charts/candle/Crosshair.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -52,7 +52,7 @@ export function LineChartProvider({
|
|
|
52
52
|
};
|
|
53
53
|
}, [currentIndex, currentX, data, domain, isActive, yRange?.max, yRange?.min, xLength, xDomain]);
|
|
54
54
|
useAnimatedReaction(() => currentIndex.value, (x, prevX) => {
|
|
55
|
-
if (x !==
|
|
55
|
+
if (x !== prevX && onCurrentIndexChange) {
|
|
56
56
|
runOnJS(onCurrentIndexChange)(x);
|
|
57
57
|
}
|
|
58
58
|
}, [currentIndex]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","runOnJS","useAnimatedReaction","useSharedValue","LineChartDataProvider","getDomain","lineChartDataPropToArray","LineChartContext","createContext","currentX","value","currentIndex","domain","isActive","yDomain","min","max","xDomain","undefined","xLength","LineChartProvider","displayName","children","data","yRange","onCurrentIndexChange","useMemo","Array","isArray","Object","values","contextValue","map","domainRows","Math","length","x","prevX","createElement","Provider"],"sourceRoot":"../../../../src","sources":["charts/line/Context.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SACEC,OAAO,EACPC,mBAAmB,EACnBC,cAAc,QACT,yBAAyB;AAEhC,SAASC,qBAAqB,QAAQ,QAAQ;AAG9C,SAASC,SAAS,EAAEC,wBAAwB,QAAQ,SAAS;AAE7D,OAAO,MAAMC,gBAAgB,gBAAGP,KAAK,CAACQ,aAAa,CAAoB;EACrEC,QAAQ,EAAE;IAAEC,KAAK,EAAE,CAAC;EAAE,CAAkC;EACxDC,YAAY,EAAE;IAAED,KAAK,EAAE,CAAC;EAAE,CAAsC;EAChEE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;EACdC,QAAQ,EAAE;IAAEH,KAAK,EAAE;EAAM,CAAkC;EAC3DI,OAAO,EAAE;IACPC,GAAG,EAAE,CAAC;IACNC,GAAG,EAAE;EACP,CAAC;EACDC,OAAO,EAAEC,SAAS;EAClBC,OAAO,EAAE;AACX,CAAC,CAAC;AAWFC,iBAAiB,CAACC,WAAW,GAAG,mBAAmB;AAEnD,OAAO,SAASD,iBAAiBA,CAAC;EAChCE,QAAQ;EACRC,IAAI,GAAG,EAAE;EACTC,MAAM;EACNC,oBAAoB;EACpBN,OAAO;EACPF;AACsB,CAAC,EAAE;EACzB,MAAMR,QAAQ,GAAGN,cAAc,CAAC,CAAC,CAAC,CAAC;EACnC,MAAMQ,YAAY,GAAGR,cAAc,CAAC,CAAC,CAAC,CAAC;EACvC,MAAMU,QAAQ,GAAGV,cAAc,CAAC,KAAK,CAAC;EAEtC,MAAMS,MAAM,GAAGZ,KAAK,CAAC0B,OAAO,CAC1B,MAAMrB,SAAS,CACbsB,KAAK,CAACC,OAAO,CAACL,IAAI,CAAC,GAAGA,IAAI,GAAGM,MAAM,CAACC,MAAM,CAACP,IAAI,CAAC,CAAC,CAAC,CACpD,CAAC,EACD,CAACA,IAAI,CACP,CAAC;EAED,MAAMQ,YAAY,GAAG/B,KAAK,CAAC0B,OAAO,CAAoB,MAAM;IAC1D,MAAMI,MAAM,GAAGxB,wBAAwB,CAACiB,IAAI,CAAC,CAACS,GAAG,CAAC,CAAC;MAAEtB;IAAM,CAAC,KAAKA,KAAK,CAAC;IACvE,MAAMuB,UAAU,GACdN,KAAK,CAACC,OAAO,CAACL,IAAI,CAAC,GAAGA,IAAI,GAAGM,MAAM,CAACC,MAAM,CAACP,IAAI,CAAC,CAAC,CAAC,CAAmB;IAEvE,OAAO;MACLd,QAAQ;MACRE,YAAY;MACZE,QAAQ;MACRD,MAAM;MACNE,OAAO,EAAE;QACPC,GAAG,EAAES,MAAM,EAAET,GAAG,IAAImB,IAAI,CAACnB,GAAG,CAAC,GAAGe,MAAM,CAAC;QACvCd,GAAG,EAAEQ,MAAM,EAAER,GAAG,IAAIkB,IAAI,CAAClB,GAAG,CAAC,GAAGc,MAAM;MACxC,CAAC;MACDb,OAAO;MACPE,OAAO,EAAEA,OAAO,IAAIc,UAAU,CAACE;IACjC,CAAC;EACH,CAAC,EAAE,CACDxB,YAAY,EACZF,QAAQ,EACRc,IAAI,EACJX,MAAM,EACNC,QAAQ,EACRW,MAAM,EAAER,GAAG,EACXQ,MAAM,EAAET,GAAG,EACXI,OAAO,EACPF,OAAO,CACR,CAAC;EAEFf,mBAAmB,CACjB,MAAMS,YAAY,CAACD,KAAK,EACxB,CAAC0B,CAAC,EAAEC,KAAK,KAAK;IACZ,IAAID,CAAC,
|
|
1
|
+
{"version":3,"names":["React","runOnJS","useAnimatedReaction","useSharedValue","LineChartDataProvider","getDomain","lineChartDataPropToArray","LineChartContext","createContext","currentX","value","currentIndex","domain","isActive","yDomain","min","max","xDomain","undefined","xLength","LineChartProvider","displayName","children","data","yRange","onCurrentIndexChange","useMemo","Array","isArray","Object","values","contextValue","map","domainRows","Math","length","x","prevX","createElement","Provider"],"sourceRoot":"../../../../src","sources":["charts/line/Context.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
1
|
import * as React from 'react';
|
|
3
|
-
import Animated, { runOnJS
|
|
4
|
-
import {
|
|
2
|
+
import Animated, { runOnJS } from 'react-native-reanimated';
|
|
3
|
+
import { Gesture, GestureDetector } from 'react-native-gesture-handler';
|
|
5
4
|
import { LineChartDimensionsContext } from './Chart';
|
|
6
5
|
import { StyleSheet } from 'react-native';
|
|
7
6
|
import { bisectCenter } from 'd3-array';
|
|
8
7
|
import { scaleLinear } from 'd3-scale';
|
|
9
8
|
import { useLineChart } from './useLineChart';
|
|
10
|
-
import { useEffect } from
|
|
9
|
+
import { useEffect } from 'react';
|
|
11
10
|
export const CursorContext = /*#__PURE__*/React.createContext({
|
|
12
11
|
type: ''
|
|
13
12
|
});
|
|
@@ -17,7 +16,9 @@ export function LineChartCursor({
|
|
|
17
16
|
snapToPoint,
|
|
18
17
|
type,
|
|
19
18
|
at,
|
|
20
|
-
|
|
19
|
+
shouldCancelWhenOutside = false,
|
|
20
|
+
onActivated,
|
|
21
|
+
onEnded
|
|
21
22
|
}) {
|
|
22
23
|
const {
|
|
23
24
|
pathWidth: width,
|
|
@@ -65,45 +66,60 @@ export function LineChartCursor({
|
|
|
65
66
|
isActive.value = true;
|
|
66
67
|
}
|
|
67
68
|
}, [at, scaleX]);
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
x
|
|
71
|
-
}) => {
|
|
72
|
-
if (parsedPath) {
|
|
73
|
-
const xPosition = Math.max(0, x <= width ? x : width);
|
|
74
|
-
isActive.value = true;
|
|
69
|
+
const updatePosition = xPosition => {
|
|
70
|
+
'worklet';
|
|
75
71
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
72
|
+
if (parsedPath) {
|
|
73
|
+
// on Web, we could drag the cursor to be negative, breaking it
|
|
74
|
+
// so we clamp the index at 0 to fix it
|
|
75
|
+
// https://github.com/coinjar/react-native-wagmi-charts/issues/24
|
|
76
|
+
const minIndex = 0;
|
|
77
|
+
const boundedIndex = Math.max(minIndex, Math.round(xPosition / width / (1 / (data ? data.length - 1 : 1))));
|
|
78
|
+
if (snapToPoint) {
|
|
79
|
+
// We have to run this on the JS thread unfortunately as the scaleLinear functions won't work on UI thread
|
|
80
|
+
runOnJS(linearScalePositionAndIndex)({
|
|
81
|
+
xPosition
|
|
82
|
+
});
|
|
83
|
+
} else if (!snapToPoint) {
|
|
84
|
+
currentX.value = xPosition;
|
|
85
|
+
currentIndex.value = boundedIndex;
|
|
90
86
|
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
const longPressGesture = Gesture.LongPress().minDuration(0).maxDistance(999999).shouldCancelWhenOutside(shouldCancelWhenOutside).onStart(event => {
|
|
90
|
+
'worklet';
|
|
91
|
+
|
|
92
|
+
if (parsedPath) {
|
|
93
|
+
const xPosition = Math.max(0, event.x <= width ? event.x : width);
|
|
94
|
+
isActive.value = true;
|
|
95
|
+
updatePosition(xPosition);
|
|
96
|
+
if (onActivated) {
|
|
97
|
+
runOnJS(onActivated)();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}).onTouchesMove(event => {
|
|
101
|
+
'worklet';
|
|
102
|
+
|
|
103
|
+
if (parsedPath && isActive.value && event.allTouches.length > 0) {
|
|
104
|
+
const xPosition = Math.max(0, event.allTouches[0].x <= width ? event.allTouches[0].x : width);
|
|
105
|
+
updatePosition(xPosition);
|
|
106
|
+
}
|
|
107
|
+
}).onEnd(() => {
|
|
108
|
+
'worklet';
|
|
109
|
+
|
|
110
|
+
isActive.value = false;
|
|
111
|
+
currentIndex.value = -1;
|
|
112
|
+
if (onEnded) {
|
|
113
|
+
runOnJS(onEnded)();
|
|
95
114
|
}
|
|
96
115
|
});
|
|
97
116
|
return /*#__PURE__*/React.createElement(CursorContext.Provider, {
|
|
98
117
|
value: {
|
|
99
118
|
type
|
|
100
119
|
}
|
|
101
|
-
}, /*#__PURE__*/React.createElement(
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
onGestureEvent: onGestureEvent,
|
|
105
|
-
shouldCancelWhenOutside: false
|
|
106
|
-
}, props), /*#__PURE__*/React.createElement(Animated.View, {
|
|
120
|
+
}, /*#__PURE__*/React.createElement(GestureDetector, {
|
|
121
|
+
gesture: longPressGesture
|
|
122
|
+
}, /*#__PURE__*/React.createElement(Animated.View, {
|
|
107
123
|
style: StyleSheet.absoluteFill
|
|
108
124
|
}, children)));
|
|
109
125
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Animated","runOnJS","
|
|
1
|
+
{"version":3,"names":["React","Animated","runOnJS","Gesture","GestureDetector","LineChartDimensionsContext","StyleSheet","bisectCenter","scaleLinear","useLineChart","useEffect","CursorContext","createContext","type","LineChartCursor","displayName","children","snapToPoint","at","shouldCancelWhenOutside","onActivated","onEnded","pathWidth","width","parsedPath","useContext","currentX","currentIndex","isActive","data","xDomain","xValues","useMemo","map","timestamp","i","scaleX","domainArray","length","domain","range","linearScalePositionAndIndex","xPosition","xRelative","invert","closestIndex","pathDataDelta","Math","abs","curves","closestPathCurve","max","min","newXPosition","to","move","x","value","undefined","updatePosition","minIndex","boundedIndex","round","longPressGesture","LongPress","minDuration","maxDistance","onStart","event","onTouchesMove","allTouches","onEnd","createElement","Provider","gesture","View","style","absoluteFill"],"sourceRoot":"../../../../src","sources":["charts/line/Cursor.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Context.d.ts","sourceRoot":"","sources":["../../../../../src/charts/candle/Context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGxD,eAAO,MAAM,uBAAuB,yBAUlC,CAAC;AAEH,KAAK,6BAA6B,GAAG;IACnC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,EACvC,QAAQ,EACR,IAAS,EACT,WAAW,GACZ,EAAE,6BAA6B,
|
|
1
|
+
{"version":3,"file":"Context.d.ts","sourceRoot":"","sources":["../../../../../src/charts/candle/Context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGxD,eAAO,MAAM,uBAAuB,yBAUlC,CAAC;AAEH,KAAK,6BAA6B,GAAG;IACnC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,EACvC,QAAQ,EACR,IAAS,EACT,WAAW,GACZ,EAAE,6BAA6B,qBA6B/B"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { ViewProps } from 'react-native';
|
|
3
|
-
import { LongPressGestureHandlerProps } from 'react-native-gesture-handler';
|
|
4
3
|
import Animated from 'react-native-reanimated';
|
|
5
4
|
import { CandlestickChartLineProps } from './Line';
|
|
6
|
-
type CandlestickChartCrosshairProps =
|
|
5
|
+
type CandlestickChartCrosshairProps = {
|
|
7
6
|
color?: string;
|
|
8
7
|
children?: React.ReactNode;
|
|
9
8
|
onCurrentXChange?: (value: number) => unknown;
|
|
@@ -11,6 +10,6 @@ type CandlestickChartCrosshairProps = LongPressGestureHandlerProps & {
|
|
|
11
10
|
verticalCrosshairProps?: Animated.AnimateProps<ViewProps>;
|
|
12
11
|
lineProps?: Partial<CandlestickChartLineProps>;
|
|
13
12
|
};
|
|
14
|
-
export declare function CandlestickChartCrosshair({ color, onCurrentXChange, children, horizontalCrosshairProps, verticalCrosshairProps, lineProps,
|
|
13
|
+
export declare function CandlestickChartCrosshair({ color, onCurrentXChange, children, horizontalCrosshairProps, verticalCrosshairProps, lineProps, }: CandlestickChartCrosshairProps): React.JSX.Element;
|
|
15
14
|
export {};
|
|
16
15
|
//# sourceMappingURL=Crosshair.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Crosshair.d.ts","sourceRoot":"","sources":["../../../../../src/charts/candle/Crosshair.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAc,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Crosshair.d.ts","sourceRoot":"","sources":["../../../../../src/charts/candle/Crosshair.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAc,SAAS,EAAE,MAAM,cAAc,CAAC;AAOrD,OAAO,QAKN,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAwB,yBAAyB,EAAE,MAAM,QAAQ,CAAC;AAIzE,KAAK,8BAA8B,GAAG;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,wBAAwB,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC5D,sBAAsB,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC;CAChD,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,EACxC,KAAK,EACL,gBAAgB,EAChB,QAAQ,EACR,wBAA6B,EAC7B,sBAA2B,EAC3B,SAAc,GACf,EAAE,8BAA8B,qBA0FhC"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
|
|
3
|
-
export type LineChartCursorProps = LongPressGestureHandlerProps & {
|
|
2
|
+
export type LineChartCursorProps = {
|
|
4
3
|
children: React.ReactNode;
|
|
5
4
|
type: 'line' | 'crosshair';
|
|
6
5
|
snapToPoint?: boolean;
|
|
7
6
|
at?: number;
|
|
7
|
+
shouldCancelWhenOutside?: boolean;
|
|
8
|
+
onActivated?: () => void;
|
|
9
|
+
onEnded?: () => void;
|
|
8
10
|
};
|
|
9
11
|
export declare const CursorContext: React.Context<{
|
|
10
12
|
type: string;
|
|
11
13
|
}>;
|
|
12
|
-
export declare function LineChartCursor({ children, snapToPoint, type, at,
|
|
14
|
+
export declare function LineChartCursor({ children, snapToPoint, type, at, shouldCancelWhenOutside, onActivated, onEnded, }: LineChartCursorProps): React.JSX.Element;
|
|
13
15
|
export declare namespace LineChartCursor {
|
|
14
16
|
var displayName: string;
|
|
15
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cursor.d.ts","sourceRoot":"","sources":["../../../../../src/charts/line/Cursor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Cursor.d.ts","sourceRoot":"","sources":["../../../../../src/charts/line/Cursor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiB/B,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAE3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,aAAa;;EAAoC,CAAC;AAI/D,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,WAAW,EACX,IAAI,EACJ,EAAE,EACF,uBAA+B,EAC/B,WAAW,EACX,OAAO,GACR,EAAE,oBAAoB,qBAuHtB;yBA/He,eAAe"}
|
package/package.json
CHANGED
|
@@ -31,17 +31,11 @@ export function CandlestickChartProvider({
|
|
|
31
31
|
}: CandlestickChartProviderProps) {
|
|
32
32
|
const [width, setWidth] = React.useState(0);
|
|
33
33
|
const [height, setHeight] = React.useState(0);
|
|
34
|
-
const [step, setStep] = React.useState(0);
|
|
35
34
|
const currentX = useSharedValue(-1);
|
|
36
35
|
const currentY = useSharedValue(-1);
|
|
37
36
|
const domain = React.useMemo(() => valueRangeY ?? getDomain(data), [data, valueRangeY]);
|
|
38
37
|
|
|
39
|
-
React.
|
|
40
|
-
if (data.length) {
|
|
41
|
-
const newStep = width / data.length;
|
|
42
|
-
setStep(newStep);
|
|
43
|
-
}
|
|
44
|
-
}, [data.length, width]);
|
|
38
|
+
const step = React.useMemo(() => width / data.length, [data.length, width])
|
|
45
39
|
|
|
46
40
|
const contextValue = React.useMemo(
|
|
47
41
|
() => ({
|
|
@@ -54,7 +48,6 @@ export function CandlestickChartProvider({
|
|
|
54
48
|
step,
|
|
55
49
|
setWidth,
|
|
56
50
|
setHeight,
|
|
57
|
-
setStep,
|
|
58
51
|
}),
|
|
59
52
|
[currentX, currentY, data, domain, height, step, width]
|
|
60
53
|
);
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { StyleSheet, ViewProps } from 'react-native';
|
|
3
3
|
import {
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
Gesture,
|
|
5
|
+
GestureDetector,
|
|
6
|
+
GestureStateChangeEvent,
|
|
6
7
|
LongPressGestureHandlerEventPayload,
|
|
7
|
-
LongPressGestureHandlerProps,
|
|
8
8
|
} from 'react-native-gesture-handler';
|
|
9
9
|
import Animated, {
|
|
10
|
-
useAnimatedGestureHandler,
|
|
11
10
|
useSharedValue,
|
|
12
11
|
useAnimatedStyle,
|
|
13
12
|
useAnimatedReaction,
|
|
@@ -20,7 +19,7 @@ import { CandlestickChartLine, CandlestickChartLineProps } from './Line';
|
|
|
20
19
|
import { useCandlestickChart } from './useCandlestickChart';
|
|
21
20
|
import { CandlestickChartCrosshairTooltipContext } from './CrosshairTooltip';
|
|
22
21
|
|
|
23
|
-
type CandlestickChartCrosshairProps =
|
|
22
|
+
type CandlestickChartCrosshairProps = {
|
|
24
23
|
color?: string;
|
|
25
24
|
children?: React.ReactNode;
|
|
26
25
|
onCurrentXChange?: (value: number) => unknown;
|
|
@@ -36,7 +35,6 @@ export function CandlestickChartCrosshair({
|
|
|
36
35
|
horizontalCrosshairProps = {},
|
|
37
36
|
verticalCrosshairProps = {},
|
|
38
37
|
lineProps = {},
|
|
39
|
-
...props
|
|
40
38
|
}: CandlestickChartCrosshairProps) {
|
|
41
39
|
const { width, height } = React.useContext(CandlestickChartDimensionsContext);
|
|
42
40
|
const { currentX, currentY, step } = useCandlestickChart();
|
|
@@ -44,26 +42,41 @@ export function CandlestickChartCrosshair({
|
|
|
44
42
|
const tooltipPosition = useSharedValue<'left' | 'right'>('left');
|
|
45
43
|
|
|
46
44
|
const opacity = useSharedValue(0);
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
45
|
+
|
|
46
|
+
const updatePosition = (x: number, y: number) => {
|
|
47
|
+
'worklet';
|
|
48
|
+
const boundedX = x <= width - 1 ? x : width - 1;
|
|
49
|
+
if (boundedX < 100) {
|
|
50
|
+
tooltipPosition.value = 'right';
|
|
51
|
+
} else {
|
|
52
|
+
tooltipPosition.value = 'left';
|
|
53
|
+
}
|
|
54
|
+
currentY.value = clamp(y, 0, height);
|
|
55
|
+
currentX.value = boundedX - (boundedX % step) + step / 2;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
const longPressGesture = Gesture.LongPress()
|
|
59
|
+
.minDuration(0)
|
|
60
|
+
.maxDistance(999999)
|
|
61
|
+
.onStart(
|
|
62
|
+
(event: GestureStateChangeEvent<LongPressGestureHandlerEventPayload>) => {
|
|
63
|
+
'worklet';
|
|
64
|
+
opacity.value = 1;
|
|
65
|
+
updatePosition(event.x, event.y);
|
|
56
66
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
67
|
+
)
|
|
68
|
+
.onTouchesMove((event) => {
|
|
69
|
+
'worklet';
|
|
70
|
+
if (opacity.value === 1 && event.allTouches.length > 0) {
|
|
71
|
+
updatePosition(event.allTouches[0]!.x, event.allTouches[0]!.y);
|
|
72
|
+
}
|
|
73
|
+
})
|
|
74
|
+
.onEnd(() => {
|
|
75
|
+
'worklet';
|
|
62
76
|
opacity.value = 0;
|
|
63
77
|
currentY.value = -1;
|
|
64
78
|
currentX.value = -1;
|
|
65
|
-
}
|
|
66
|
-
});
|
|
79
|
+
});
|
|
67
80
|
const horizontal = useAnimatedStyle(
|
|
68
81
|
() => ({
|
|
69
82
|
opacity: opacity.value,
|
|
@@ -90,12 +103,7 @@ export function CandlestickChartCrosshair({
|
|
|
90
103
|
);
|
|
91
104
|
|
|
92
105
|
return (
|
|
93
|
-
<
|
|
94
|
-
minDurationMs={0}
|
|
95
|
-
maxDist={999999}
|
|
96
|
-
onGestureEvent={onGestureEvent}
|
|
97
|
-
{...props}
|
|
98
|
-
>
|
|
106
|
+
<GestureDetector gesture={longPressGesture}>
|
|
99
107
|
<Animated.View style={StyleSheet.absoluteFill}>
|
|
100
108
|
<Animated.View
|
|
101
109
|
style={[StyleSheet.absoluteFill, horizontal]}
|
|
@@ -115,6 +123,6 @@ export function CandlestickChartCrosshair({
|
|
|
115
123
|
<CandlestickChartLine color={color} x={0} y={height} {...lineProps} />
|
|
116
124
|
</Animated.View>
|
|
117
125
|
</Animated.View>
|
|
118
|
-
</
|
|
126
|
+
</GestureDetector>
|
|
119
127
|
);
|
|
120
128
|
}
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
|
|
3
|
-
import Animated, {
|
|
4
|
-
runOnJS,
|
|
5
|
-
useAnimatedGestureHandler,
|
|
6
|
-
} from 'react-native-reanimated';
|
|
3
|
+
import Animated, { runOnJS } from 'react-native-reanimated';
|
|
7
4
|
import {
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
Gesture,
|
|
6
|
+
GestureDetector,
|
|
7
|
+
GestureStateChangeEvent,
|
|
10
8
|
LongPressGestureHandlerEventPayload,
|
|
11
|
-
LongPressGestureHandlerProps,
|
|
12
9
|
} from 'react-native-gesture-handler';
|
|
13
10
|
|
|
14
11
|
import { LineChartDimensionsContext } from './Chart';
|
|
@@ -16,14 +13,17 @@ import { StyleSheet } from 'react-native';
|
|
|
16
13
|
import { bisectCenter } from 'd3-array';
|
|
17
14
|
import { scaleLinear } from 'd3-scale';
|
|
18
15
|
import { useLineChart } from './useLineChart';
|
|
19
|
-
import { useEffect } from
|
|
16
|
+
import { useEffect } from 'react';
|
|
20
17
|
|
|
21
|
-
export type LineChartCursorProps =
|
|
18
|
+
export type LineChartCursorProps = {
|
|
22
19
|
children: React.ReactNode;
|
|
23
20
|
type: 'line' | 'crosshair';
|
|
24
21
|
// Does not work on web due to how the Cursor operates on web
|
|
25
22
|
snapToPoint?: boolean;
|
|
26
23
|
at?: number;
|
|
24
|
+
shouldCancelWhenOutside?: boolean;
|
|
25
|
+
onActivated?: () => void;
|
|
26
|
+
onEnded?: () => void;
|
|
27
27
|
};
|
|
28
28
|
|
|
29
29
|
export const CursorContext = React.createContext({ type: '' });
|
|
@@ -35,7 +35,9 @@ export function LineChartCursor({
|
|
|
35
35
|
snapToPoint,
|
|
36
36
|
type,
|
|
37
37
|
at,
|
|
38
|
-
|
|
38
|
+
shouldCancelWhenOutside = false,
|
|
39
|
+
onActivated,
|
|
40
|
+
onEnded,
|
|
39
41
|
}: LineChartCursorProps) {
|
|
40
42
|
const { pathWidth: width, parsedPath } = React.useContext(
|
|
41
43
|
LineChartDimensionsContext
|
|
@@ -89,49 +91,70 @@ export function LineChartCursor({
|
|
|
89
91
|
}
|
|
90
92
|
}, [at, scaleX]);
|
|
91
93
|
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
94
|
+
const updatePosition = (xPosition: number) => {
|
|
95
|
+
'worklet';
|
|
96
|
+
if (parsedPath) {
|
|
97
|
+
// on Web, we could drag the cursor to be negative, breaking it
|
|
98
|
+
// so we clamp the index at 0 to fix it
|
|
99
|
+
// https://github.com/coinjar/react-native-wagmi-charts/issues/24
|
|
100
|
+
const minIndex = 0;
|
|
101
|
+
const boundedIndex = Math.max(
|
|
102
|
+
minIndex,
|
|
103
|
+
Math.round(xPosition / width / (1 / (data ? data.length - 1 : 1)))
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
if (snapToPoint) {
|
|
107
|
+
// We have to run this on the JS thread unfortunately as the scaleLinear functions won't work on UI thread
|
|
108
|
+
runOnJS(linearScalePositionAndIndex)({ xPosition });
|
|
109
|
+
} else if (!snapToPoint) {
|
|
110
|
+
currentX.value = xPosition;
|
|
111
|
+
currentIndex.value = boundedIndex;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
const longPressGesture = Gesture.LongPress()
|
|
117
|
+
.minDuration(0)
|
|
118
|
+
.maxDistance(999999)
|
|
119
|
+
.shouldCancelWhenOutside(shouldCancelWhenOutside)
|
|
120
|
+
.onStart(
|
|
121
|
+
(event: GestureStateChangeEvent<LongPressGestureHandlerEventPayload>) => {
|
|
122
|
+
'worklet';
|
|
123
|
+
if (parsedPath) {
|
|
124
|
+
const xPosition = Math.max(0, event.x <= width ? event.x : width);
|
|
125
|
+
isActive.value = true;
|
|
126
|
+
updatePosition(xPosition);
|
|
127
|
+
|
|
128
|
+
if (onActivated) {
|
|
129
|
+
runOnJS(onActivated)();
|
|
130
|
+
}
|
|
113
131
|
}
|
|
114
132
|
}
|
|
115
|
-
|
|
116
|
-
|
|
133
|
+
)
|
|
134
|
+
.onTouchesMove((event) => {
|
|
135
|
+
'worklet';
|
|
136
|
+
if (parsedPath && isActive.value && event.allTouches.length > 0) {
|
|
137
|
+
const xPosition = Math.max(0, event.allTouches[0]!.x <= width ? event.allTouches[0]!.x : width);
|
|
138
|
+
updatePosition(xPosition);
|
|
139
|
+
}
|
|
140
|
+
})
|
|
141
|
+
.onEnd(() => {
|
|
142
|
+
'worklet';
|
|
117
143
|
isActive.value = false;
|
|
118
144
|
currentIndex.value = -1;
|
|
119
|
-
|
|
120
|
-
|
|
145
|
+
|
|
146
|
+
if (onEnded) {
|
|
147
|
+
runOnJS(onEnded)();
|
|
148
|
+
}
|
|
149
|
+
});
|
|
121
150
|
|
|
122
151
|
return (
|
|
123
152
|
<CursorContext.Provider value={{ type }}>
|
|
124
|
-
<
|
|
125
|
-
minDurationMs={0}
|
|
126
|
-
maxDist={999999}
|
|
127
|
-
onGestureEvent={onGestureEvent}
|
|
128
|
-
shouldCancelWhenOutside={false}
|
|
129
|
-
{...props}
|
|
130
|
-
>
|
|
153
|
+
<GestureDetector gesture={longPressGesture}>
|
|
131
154
|
<Animated.View style={StyleSheet.absoluteFill}>
|
|
132
155
|
{children}
|
|
133
156
|
</Animated.View>
|
|
134
|
-
</
|
|
157
|
+
</GestureDetector>
|
|
135
158
|
</CursorContext.Provider>
|
|
136
159
|
);
|
|
137
160
|
}
|