react-native-wagmi-charts 2.7.1 → 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.
@@ -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 onGestureEvent = (0, _reactNativeReanimated.useAnimatedGestureHandler)({
40
- onActive: ({
41
- x,
42
- y
43
- }) => {
44
- const boundedX = x <= width - 1 ? x : width - 1;
45
- if (boundedX < 100) {
46
- tooltipPosition.value = 'right';
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.LongPressGestureHandler, _extends({
78
- minDurationMs: 0,
79
- maxDist: 999999,
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","props","width","height","useContext","CandlestickChartDimensionsContext","currentX","currentY","step","useCandlestickChart","tooltipPosition","useSharedValue","opacity","onGestureEvent","useAnimatedGestureHandler","onActive","x","y","boundedX","value","clamp","onEnd","horizontal","useAnimatedStyle","transform","translateY","vertical","translateX","useAnimatedReaction","data","prevData","runOnJS","createElement","LongPressGestureHandler","minDurationMs","maxDist","View","style","StyleSheet","absoluteFill","CandlestickChartLine","CandlestickChartCrosshairTooltipContext","Provider","position"],"sourceRoot":"../../../../src","sources":["charts/candle/Crosshair.tsx"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,0BAAA,GAAAF,OAAA;AAMA,IAAAG,sBAAA,GAAAJ,uBAAA,CAAAC,OAAA;AAOA,IAAAI,kBAAA,GAAAJ,OAAA;AAEA,IAAAK,MAAA,GAAAL,OAAA;AACA,IAAAM,KAAA,GAAAN,OAAA;AACA,IAAAO,oBAAA,GAAAP,OAAA;AACA,IAAAQ,iBAAA,GAAAR,OAAA;AAA6E,SAAAS,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,SAAAX,wBAAAW,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;AAAA,SAAAW,SAAA,IAAAA,QAAA,GAAAR,MAAA,CAAAS,MAAA,GAAAT,MAAA,CAAAS,MAAA,CAAAC,IAAA,eAAAC,MAAA,aAAAL,CAAA,MAAAA,CAAA,GAAAM,SAAA,CAAAC,MAAA,EAAAP,CAAA,UAAAQ,MAAA,GAAAF,SAAA,CAAAN,CAAA,YAAAS,GAAA,IAAAD,MAAA,QAAAd,MAAA,CAAAgB,SAAA,CAAAZ,cAAA,CAAAC,IAAA,CAAAS,MAAA,EAAAC,GAAA,KAAAJ,MAAA,CAAAI,GAAA,IAAAD,MAAA,CAAAC,GAAA,gBAAAJ,MAAA,YAAAH,QAAA,CAAAS,KAAA,OAAAL,SAAA;AA+BtE,SAASM,yBAAyBA,CAAC;EACxCC,KAAK;EACLC,gBAAgB;EAChBC,QAAQ;EACRC,wBAAwB,GAAG,CAAC,CAAC;EAC7BC,sBAAsB,GAAG,CAAC,CAAC;EAC3BC,SAAS,GAAG,CAAC,CAAC;EACd,GAAGC;AAC2B,CAAC,EAAE;EACjC,MAAM;IAAEC,KAAK;IAAEC;EAAO,CAAC,GAAGlD,KAAK,CAACmD,UAAU,CAACC,wCAAiC,CAAC;EAC7E,MAAM;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC;EAAK,CAAC,GAAG,IAAAC,wCAAmB,EAAC,CAAC;EAE1D,MAAMC,eAAe,GAAG,IAAAC,qCAAc,EAAmB,MAAM,CAAC;EAEhE,MAAMC,OAAO,GAAG,IAAAD,qCAAc,EAAC,CAAC,CAAC;EACjC,MAAME,cAAc,GAAG,IAAAC,gDAAyB,EAE9C;IACAC,QAAQ,EAAEA,CAAC;MAAEC,CAAC;MAAEC;IAAE,CAAC,KAAK;MACtB,MAAMC,QAAQ,GAAGF,CAAC,IAAId,KAAK,GAAG,CAAC,GAAGc,CAAC,GAAGd,KAAK,GAAG,CAAC;MAC/C,IAAIgB,QAAQ,GAAG,GAAG,EAAE;QAClBR,eAAe,CAACS,KAAK,GAAG,OAAO;MACjC,CAAC,MAAM;QACLT,eAAe,CAACS,KAAK,GAAG,MAAM;MAChC;MACAP,OAAO,CAACO,KAAK,GAAG,CAAC;MACjBZ,QAAQ,CAACY,KAAK,GAAG,IAAAC,wBAAK,EAACH,CAAC,EAAE,CAAC,EAAEd,MAAM,CAAC;MACpCG,QAAQ,CAACa,KAAK,GAAGD,QAAQ,GAAIA,QAAQ,GAAGV,IAAK,GAAGA,IAAI,GAAG,CAAC;IAC1D,CAAC;IACDa,KAAK,EAAEA,CAAA,KAAM;MACXT,OAAO,CAACO,KAAK,GAAG,CAAC;MACjBZ,QAAQ,CAACY,KAAK,GAAG,CAAC,CAAC;MACnBb,QAAQ,CAACa,KAAK,GAAG,CAAC,CAAC;IACrB;EACF,CAAC,CAAC;EACF,MAAMG,UAAU,GAAG,IAAAC,uCAAgB,EACjC,OAAO;IACLX,OAAO,EAAEA,OAAO,CAACO,KAAK;IACtBK,SAAS,EAAE,CAAC;MAAEC,UAAU,EAAElB,QAAQ,CAACY;IAAM,CAAC;EAC5C,CAAC,CAAC,EACF,CAACP,OAAO,EAAEL,QAAQ,CACpB,CAAC;EACD,MAAMmB,QAAQ,GAAG,IAAAH,uCAAgB,EAC/B,OAAO;IACLX,OAAO,EAAEA,OAAO,CAACO,KAAK;IACtBK,SAAS,EAAE,CAAC;MAAEG,UAAU,EAAErB,QAAQ,CAACa;IAAM,CAAC;EAC5C,CAAC,CAAC,EACF,CAACP,OAAO,EAAEN,QAAQ,CACpB,CAAC;EAED,IAAAsB,0CAAmB,EACjB,MAAMtB,QAAQ,CAACa,KAAK,EACpB,CAACU,IAAI,EAAEC,QAAQ,KAAK;IAClB,IAAID,IAAI,KAAK,CAAC,CAAC,IAAIA,IAAI,KAAKC,QAAQ,IAAIlC,gBAAgB,EAAE;MACxD,IAAAmC,8BAAO,EAACnC,gBAAgB,CAAC,CAACiC,IAAI,CAAC;IACjC;EACF,CAAC,EACD,CAACvB,QAAQ,CACX,CAAC;EAED,oBACErD,KAAA,CAAA+E,aAAA,CAAC3E,0BAAA,CAAA4E,uBAAuB,EAAAjD,QAAA;IACtBkD,aAAa,EAAE,CAAE;IACjBC,OAAO,EAAE,MAAO;IAChBtB,cAAc,EAAEA;EAAe,GAC3BZ,KAAK,gBAEThD,KAAA,CAAA+E,aAAA,CAAC1E,sBAAA,CAAAY,OAAQ,CAACkE,IAAI;IAACC,KAAK,EAAEC,uBAAU,CAACC;EAAa,gBAC5CtF,KAAA,CAAA+E,aAAA,CAAC1E,sBAAA,CAAAY,OAAQ,CAACkE,IAAI,EAAApD,QAAA;IACZqD,KAAK,EAAE,CAACC,uBAAU,CAACC,YAAY,EAAEjB,UAAU;EAAE,GACzCxB,wBAAwB,gBAE5B7C,KAAA,CAAA+E,aAAA,CAACvE,KAAA,CAAA+E,oBAAoB,EAAAxD,QAAA;IAACW,KAAK,EAAEA,KAAM;IAACqB,CAAC,EAAEd,KAAM;IAACe,CAAC,EAAE;EAAE,GAAKjB,SAAS,CAAG,CAAC,eACrE/C,KAAA,CAAA+E,aAAA,CAACrE,iBAAA,CAAA8E,uCAAuC,CAACC,QAAQ;IAC/CvB,KAAK,EAAE;MAAEwB,QAAQ,EAAEjC;IAAgB;EAAE,GAEpCb,QAC+C,CACrC,CAAC,eAChB5C,KAAA,CAAA+E,aAAA,CAAC1E,sBAAA,CAAAY,OAAQ,CAACkE,IAAI,EAAApD,QAAA;IACZqD,KAAK,EAAE,CAACC,uBAAU,CAACC,YAAY,EAAEb,QAAQ;EAAE,GACvC3B,sBAAsB,gBAE1B9C,KAAA,CAAA+E,aAAA,CAACvE,KAAA,CAAA+E,oBAAoB,EAAAxD,QAAA;IAACW,KAAK,EAAEA,KAAM;IAACqB,CAAC,EAAE,CAAE;IAACC,CAAC,EAAEd;EAAO,GAAKH,SAAS,CAAG,CACxD,CACF,CACQ,CAAC;AAE9B","ignoreList":[]}
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":[]}
@@ -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
- ...props
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 onGestureEvent = (0, _reactNativeReanimated.useAnimatedGestureHandler)({
78
- onActive: ({
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
- // on Web, we could drag the cursor to be negative, breaking it
86
- // so we clamp the index at 0 to fix it
87
- // https://github.com/coinjar/react-native-wagmi-charts/issues/24
88
- const minIndex = 0;
89
- const boundedIndex = Math.max(minIndex, Math.round(xPosition / width / (1 / (data ? data.length - 1 : 1))));
90
- if (snapToPoint) {
91
- // We have to run this on the JS thread unfortunately as the scaleLinear functions won't work on UI thread
92
- (0, _reactNativeReanimated.runOnJS)(linearScalePositionAndIndex)({
93
- xPosition
94
- });
95
- } else if (!snapToPoint) {
96
- currentX.value = xPosition;
97
- currentIndex.value = boundedIndex;
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
- onEnd: () => {
102
- isActive.value = false;
103
- currentIndex.value = -1;
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.LongPressGestureHandler, _extends({
111
- minDurationMs: 0,
112
- maxDist: 999999,
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","_extends","assign","bind","target","arguments","length","source","key","prototype","apply","CursorContext","exports","createContext","type","LineChartCursor","displayName","children","snapToPoint","at","props","pathWidth","width","parsedPath","useContext","LineChartDimensionsContext","currentX","currentIndex","isActive","data","xDomain","useLineChart","xValues","useMemo","map","timestamp","scaleX","domainArray","scaleLinear","domain","range","linearScalePositionAndIndex","xPosition","xRelative","invert","closestIndex","bisectCenter","pathDataDelta","Math","abs","curves","closestPathCurve","max","min","newXPosition","to","move","x","value","useEffect","undefined","runOnJS","onGestureEvent","useAnimatedGestureHandler","onActive","minIndex","boundedIndex","round","onEnd","createElement","Provider","LongPressGestureHandler","minDurationMs","maxDist","shouldCancelWhenOutside","View","style","StyleSheet","absoluteFill"],"sourceRoot":"../../../../src","sources":["charts/line/Cursor.tsx"],"mappings":"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","ignoreList":[]}
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":[]}
@@ -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 { LongPressGestureHandler } from 'react-native-gesture-handler';
5
- import Animated, { useAnimatedGestureHandler, useSharedValue, useAnimatedStyle, useAnimatedReaction, runOnJS } from 'react-native-reanimated';
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 onGestureEvent = useAnimatedGestureHandler({
32
- onActive: ({
33
- x,
34
- y
35
- }) => {
36
- const boundedX = x <= width - 1 ? x : width - 1;
37
- if (boundedX < 100) {
38
- tooltipPosition.value = 'right';
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(LongPressGestureHandler, _extends({
70
- minDurationMs: 0,
71
- maxDist: 999999,
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","LongPressGestureHandler","Animated","useAnimatedGestureHandler","useSharedValue","useAnimatedStyle","useAnimatedReaction","runOnJS","clamp","CandlestickChartDimensionsContext","CandlestickChartLine","useCandlestickChart","CandlestickChartCrosshairTooltipContext","CandlestickChartCrosshair","color","onCurrentXChange","children","horizontalCrosshairProps","verticalCrosshairProps","lineProps","props","width","height","useContext","currentX","currentY","step","tooltipPosition","opacity","onGestureEvent","onActive","x","y","boundedX","value","onEnd","horizontal","transform","translateY","vertical","translateX","data","prevData","createElement","_extends","minDurationMs","maxDist","View","style","absoluteFill","Provider","position"],"sourceRoot":"../../../../src","sources":["charts/candle/Crosshair.tsx"],"mappings":"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","ignoreList":[]}
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":[]}
@@ -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, useAnimatedGestureHandler } from 'react-native-reanimated';
4
- import { LongPressGestureHandler } from 'react-native-gesture-handler';
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 "react";
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
- ...props
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 onGestureEvent = useAnimatedGestureHandler({
69
- onActive: ({
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
- // on Web, we could drag the cursor to be negative, breaking it
77
- // so we clamp the index at 0 to fix it
78
- // https://github.com/coinjar/react-native-wagmi-charts/issues/24
79
- const minIndex = 0;
80
- const boundedIndex = Math.max(minIndex, Math.round(xPosition / width / (1 / (data ? data.length - 1 : 1))));
81
- if (snapToPoint) {
82
- // We have to run this on the JS thread unfortunately as the scaleLinear functions won't work on UI thread
83
- runOnJS(linearScalePositionAndIndex)({
84
- xPosition
85
- });
86
- } else if (!snapToPoint) {
87
- currentX.value = xPosition;
88
- currentIndex.value = boundedIndex;
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
- onEnd: () => {
93
- isActive.value = false;
94
- currentIndex.value = -1;
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(LongPressGestureHandler, _extends({
102
- minDurationMs: 0,
103
- maxDist: 999999,
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","useAnimatedGestureHandler","LongPressGestureHandler","LineChartDimensionsContext","StyleSheet","bisectCenter","scaleLinear","useLineChart","useEffect","CursorContext","createContext","type","LineChartCursor","displayName","children","snapToPoint","at","props","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","onGestureEvent","onActive","minIndex","boundedIndex","round","onEnd","createElement","Provider","_extends","minDurationMs","maxDist","shouldCancelWhenOutside","View","style","absoluteFill"],"sourceRoot":"../../../../src","sources":["charts/line/Cursor.tsx"],"mappings":"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","ignoreList":[]}
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,27 +1,8 @@
1
1
  import * as React from 'react';
2
2
  import { ViewProps } from 'react-native';
3
- import { LongPressGestureHandler, LongPressGestureHandlerProps } from 'react-native-gesture-handler';
4
3
  import Animated from 'react-native-reanimated';
5
4
  import { CandlestickChartLineProps } from './Line';
6
- type MinDurationOverride = LongPressGestureHandlerProps['minDurationMs'];
7
- type MaxDistOverride = LongPressGestureHandlerProps['maxDist'];
8
- type LongPressGestureHandlerOverride = Omit<LongPressGestureHandler, 'minDuration' | 'maxDist'> & {
9
- /**
10
- * Minimum time, expressed in milliseconds, that a finger must remain
11
- * pressed on the corresponding view.
12
- * @default 0
13
- */
14
- minDuration?: MinDurationOverride;
15
- /**
16
- * Maximum distance, expressed in points, that defines how far the finger is
17
- * allowed to travel during a long press gesture. If the finger travels
18
- * further than the defined distance and the handler hasn't yet activated,
19
- * it will fail to recognize the gesture.
20
- * @default 999999
21
- */
22
- maxDist?: MaxDistOverride;
23
- };
24
- type CandlestickChartCrosshairProps = LongPressGestureHandlerOverride & {
5
+ type CandlestickChartCrosshairProps = {
25
6
  color?: string;
26
7
  children?: React.ReactNode;
27
8
  onCurrentXChange?: (value: number) => unknown;
@@ -29,6 +10,6 @@ type CandlestickChartCrosshairProps = LongPressGestureHandlerOverride & {
29
10
  verticalCrosshairProps?: Animated.AnimateProps<ViewProps>;
30
11
  lineProps?: Partial<CandlestickChartLineProps>;
31
12
  };
32
- export declare function CandlestickChartCrosshair({ color, onCurrentXChange, children, horizontalCrosshairProps, verticalCrosshairProps, lineProps, ...props }: CandlestickChartCrosshairProps): React.JSX.Element;
13
+ export declare function CandlestickChartCrosshair({ color, onCurrentXChange, children, horizontalCrosshairProps, verticalCrosshairProps, lineProps, }: CandlestickChartCrosshairProps): React.JSX.Element;
33
14
  export {};
34
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;AACrD,OAAO,EAEL,uBAAuB,EAEvB,4BAA4B,EAC7B,MAAM,8BAA8B,CAAC;AACtC,OAAO,QAMN,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAwB,yBAAyB,EAAE,MAAM,QAAQ,CAAC;AAIzE,KAAK,mBAAmB,GAAG,4BAA4B,CAAC,eAAe,CAAC,CAAC;AACzE,KAAK,eAAe,GAAG,4BAA4B,CAAC,SAAS,CAAC,CAAC;AAE/D,KAAK,+BAA+B,GAAG,IAAI,CAAC,uBAAuB,EAAE,aAAa,GAAG,SAAS,CAAC,GAAG;IAChG;;;;OAIG;IACH,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B,CAAC;AAEF,KAAK,8BAA8B,GAAG,+BAA+B,GAAG;IACtE,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,EACd,GAAG,KAAK,EACT,EAAE,8BAA8B,qBAgFhC"}
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
- import { LongPressGestureHandlerProps } from 'react-native-gesture-handler';
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, ...props }: LineChartCursorProps): React.JSX.Element;
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;AAM/B,OAAO,EAIL,4BAA4B,EAC7B,MAAM,8BAA8B,CAAC;AAStC,MAAM,MAAM,oBAAoB,GAAG,4BAA4B,GAAG;IAChE,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;CACb,CAAC;AAEF,eAAO,MAAM,aAAa;;EAAoC,CAAC;AAI/D,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,WAAW,EACX,IAAI,EACJ,EAAE,EACF,GAAG,KAAK,EACT,EAAE,oBAAoB,qBAkGtB;yBAxGe,eAAe"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-wagmi-charts",
3
- "version": "2.7.1",
3
+ "version": "2.7.2",
4
4
  "description": "A sweet candlestick chart for React Native",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -1,13 +1,12 @@
1
1
  import * as React from 'react';
2
2
  import { StyleSheet, ViewProps } from 'react-native';
3
3
  import {
4
- GestureEvent,
5
- LongPressGestureHandler,
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,27 +19,7 @@ import { CandlestickChartLine, CandlestickChartLineProps } from './Line';
20
19
  import { useCandlestickChart } from './useCandlestickChart';
21
20
  import { CandlestickChartCrosshairTooltipContext } from './CrosshairTooltip';
22
21
 
23
- type MinDurationOverride = LongPressGestureHandlerProps['minDurationMs'];
24
- type MaxDistOverride = LongPressGestureHandlerProps['maxDist'];
25
-
26
- type LongPressGestureHandlerOverride = Omit<LongPressGestureHandler, 'minDuration' | 'maxDist'> & {
27
- /**
28
- * Minimum time, expressed in milliseconds, that a finger must remain
29
- * pressed on the corresponding view.
30
- * @default 0
31
- */
32
- minDuration?: MinDurationOverride;
33
- /**
34
- * Maximum distance, expressed in points, that defines how far the finger is
35
- * allowed to travel during a long press gesture. If the finger travels
36
- * further than the defined distance and the handler hasn't yet activated,
37
- * it will fail to recognize the gesture.
38
- * @default 999999
39
- */
40
- maxDist?: MaxDistOverride;
41
- };
42
-
43
- type CandlestickChartCrosshairProps = LongPressGestureHandlerOverride & {
22
+ type CandlestickChartCrosshairProps = {
44
23
  color?: string;
45
24
  children?: React.ReactNode;
46
25
  onCurrentXChange?: (value: number) => unknown;
@@ -56,7 +35,6 @@ export function CandlestickChartCrosshair({
56
35
  horizontalCrosshairProps = {},
57
36
  verticalCrosshairProps = {},
58
37
  lineProps = {},
59
- ...props
60
38
  }: CandlestickChartCrosshairProps) {
61
39
  const { width, height } = React.useContext(CandlestickChartDimensionsContext);
62
40
  const { currentX, currentY, step } = useCandlestickChart();
@@ -64,26 +42,41 @@ export function CandlestickChartCrosshair({
64
42
  const tooltipPosition = useSharedValue<'left' | 'right'>('left');
65
43
 
66
44
  const opacity = useSharedValue(0);
67
- const onGestureEvent = useAnimatedGestureHandler<
68
- GestureEvent<LongPressGestureHandlerEventPayload>
69
- >({
70
- onActive: ({ x, y }) => {
71
- const boundedX = x <= width - 1 ? x : width - 1;
72
- if (boundedX < 100) {
73
- tooltipPosition.value = 'right';
74
- } else {
75
- tooltipPosition.value = 'left';
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);
76
66
  }
77
- opacity.value = 1;
78
- currentY.value = clamp(y, 0, height);
79
- currentX.value = boundedX - (boundedX % step) + step / 2;
80
- },
81
- onEnd: () => {
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';
82
76
  opacity.value = 0;
83
77
  currentY.value = -1;
84
78
  currentX.value = -1;
85
- },
86
- });
79
+ });
87
80
  const horizontal = useAnimatedStyle(
88
81
  () => ({
89
82
  opacity: opacity.value,
@@ -110,12 +103,7 @@ export function CandlestickChartCrosshair({
110
103
  );
111
104
 
112
105
  return (
113
- <LongPressGestureHandler
114
- minDurationMs={0}
115
- maxDist={999999}
116
- onGestureEvent={onGestureEvent}
117
- {...props}
118
- >
106
+ <GestureDetector gesture={longPressGesture}>
119
107
  <Animated.View style={StyleSheet.absoluteFill}>
120
108
  <Animated.View
121
109
  style={[StyleSheet.absoluteFill, horizontal]}
@@ -135,6 +123,6 @@ export function CandlestickChartCrosshair({
135
123
  <CandlestickChartLine color={color} x={0} y={height} {...lineProps} />
136
124
  </Animated.View>
137
125
  </Animated.View>
138
- </LongPressGestureHandler>
126
+ </GestureDetector>
139
127
  );
140
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
- GestureEvent,
9
- LongPressGestureHandler,
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 "react";
16
+ import { useEffect } from 'react';
20
17
 
21
- export type LineChartCursorProps = LongPressGestureHandlerProps & {
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
- ...props
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 onGestureEvent = useAnimatedGestureHandler<GestureEvent<LongPressGestureHandlerEventPayload>>({
93
- onActive: ({ x }) => {
94
- if (parsedPath) {
95
- const xPosition = Math.max(0, x <= width ? x : width);
96
- isActive.value = true;
97
-
98
- // on Web, we could drag the cursor to be negative, breaking it
99
- // so we clamp the index at 0 to fix it
100
- // https://github.com/coinjar/react-native-wagmi-charts/issues/24
101
- const minIndex = 0;
102
- const boundedIndex = Math.max(
103
- minIndex,
104
- Math.round(xPosition / width / (1 / (data ? data.length - 1 : 1)))
105
- );
106
-
107
- if (snapToPoint) {
108
- // We have to run this on the JS thread unfortunately as the scaleLinear functions won't work on UI thread
109
- runOnJS(linearScalePositionAndIndex)({ xPosition });
110
- } else if (!snapToPoint) {
111
- currentX.value = xPosition;
112
- currentIndex.value = boundedIndex;
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
- onEnd: () => {
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
- <LongPressGestureHandler
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
- </LongPressGestureHandler>
157
+ </GestureDetector>
135
158
  </CursorContext.Provider>
136
159
  );
137
160
  }