react-native-gesture-handler 2.8.0 → 2.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. package/RNGestureHandler.podspec +1 -1
  2. package/android/build.gradle +45 -43
  3. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +1 -0
  4. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +14 -2
  5. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +5 -1
  6. package/android/src/main/jni/CMakeLists.txt +10 -44
  7. package/android/src/main/jni/cpp-adapter.cpp +16 -13
  8. package/ios/Handlers/RNFlingHandler.m +39 -37
  9. package/ios/Handlers/RNForceTouchHandler.m +19 -17
  10. package/ios/Handlers/RNLongPressHandler.m +20 -22
  11. package/ios/Handlers/RNManualHandler.m +2 -3
  12. package/ios/Handlers/RNNativeViewHandler.mm +92 -88
  13. package/ios/Handlers/RNPanHandler.m +28 -32
  14. package/ios/Handlers/RNPinchHandler.m +9 -10
  15. package/ios/Handlers/RNRotationHandler.m +11 -14
  16. package/ios/Handlers/RNTapHandler.m +26 -26
  17. package/ios/RNGestureHandler.h +31 -24
  18. package/ios/RNGestureHandler.m +278 -273
  19. package/ios/RNGestureHandlerActionType.h +6 -4
  20. package/ios/RNGestureHandlerButton.m +11 -12
  21. package/ios/RNGestureHandlerButtonManager.m +6 -5
  22. package/ios/RNGestureHandlerDirection.h +4 -4
  23. package/ios/RNGestureHandlerEvents.h +3 -4
  24. package/ios/RNGestureHandlerEvents.m +114 -119
  25. package/ios/RNGestureHandlerManager.h +1 -2
  26. package/ios/RNGestureHandlerModule.h +1 -2
  27. package/ios/RNGestureHandlerModule.mm +126 -122
  28. package/ios/RNGestureHandlerPointerTracker.h +1 -1
  29. package/ios/RNGestureHandlerPointerTracker.m +40 -37
  30. package/ios/RNGestureHandlerRegistry.h +3 -1
  31. package/ios/RNGestureHandlerRegistry.m +24 -22
  32. package/ios/RNGestureHandlerState.h +6 -6
  33. package/ios/RNGestureHandlerStateManager.h +1 -1
  34. package/ios/RNManualActivationRecognizer.m +9 -9
  35. package/ios/RNRootViewGestureRecognizer.m +36 -39
  36. package/lib/commonjs/components/DrawerLayout.js.map +1 -1
  37. package/lib/commonjs/components/Swipeable.js.map +1 -1
  38. package/lib/commonjs/gestureHandlerRootHOC.js +2 -1
  39. package/lib/commonjs/gestureHandlerRootHOC.js.map +1 -1
  40. package/lib/commonjs/handlers/LongPressGestureHandler.js +3 -1
  41. package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -1
  42. package/lib/commonjs/handlers/TapGestureHandler.js +3 -1
  43. package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -1
  44. package/lib/commonjs/handlers/gestures/GestureDetector.js +70 -28
  45. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
  46. package/lib/commonjs/handlers/gestures/longPressGesture.js +1 -0
  47. package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -1
  48. package/lib/commonjs/handlers/gestures/tapGesture.js +1 -0
  49. package/lib/commonjs/handlers/gestures/tapGesture.js.map +1 -1
  50. package/lib/commonjs/web/handlers/LongPressGestureHandler.js +0 -1
  51. package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
  52. package/lib/commonjs/web/handlers/TapGestureHandler.js +0 -1
  53. package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
  54. package/lib/module/components/DrawerLayout.js.map +1 -1
  55. package/lib/module/components/Swipeable.js.map +1 -1
  56. package/lib/module/gestureHandlerRootHOC.js +2 -1
  57. package/lib/module/gestureHandlerRootHOC.js.map +1 -1
  58. package/lib/module/handlers/LongPressGestureHandler.js +3 -1
  59. package/lib/module/handlers/LongPressGestureHandler.js.map +1 -1
  60. package/lib/module/handlers/TapGestureHandler.js +3 -1
  61. package/lib/module/handlers/TapGestureHandler.js.map +1 -1
  62. package/lib/module/handlers/gestures/GestureDetector.js +72 -29
  63. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
  64. package/lib/module/handlers/gestures/longPressGesture.js +1 -0
  65. package/lib/module/handlers/gestures/longPressGesture.js.map +1 -1
  66. package/lib/module/handlers/gestures/tapGesture.js +1 -0
  67. package/lib/module/handlers/gestures/tapGesture.js.map +1 -1
  68. package/lib/module/web/handlers/LongPressGestureHandler.js +0 -1
  69. package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
  70. package/lib/module/web/handlers/TapGestureHandler.js +0 -1
  71. package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
  72. package/lib/typescript/components/DrawerLayout.d.ts +3 -1
  73. package/lib/typescript/components/Swipeable.d.ts +3 -2
  74. package/lib/typescript/fabric/RNGestureHandlerButtonNativeComponent.d.ts +1 -1
  75. package/lib/typescript/fabric/RNGestureHandlerRootViewNativeComponent.d.ts +1 -1
  76. package/lib/typescript/gestureHandlerRootHOC.d.ts +1 -1
  77. package/package.json +4 -5
  78. package/src/components/DrawerLayout.tsx +8 -4
  79. package/src/components/Swipeable.tsx +14 -9
  80. package/src/gestureHandlerRootHOC.tsx +4 -1
  81. package/src/handlers/LongPressGestureHandler.ts +3 -1
  82. package/src/handlers/TapGestureHandler.ts +3 -1
  83. package/src/handlers/gestures/GestureDetector.tsx +81 -28
  84. package/src/handlers/gestures/longPressGesture.ts +1 -0
  85. package/src/handlers/gestures/tapGesture.ts +1 -0
  86. package/src/web/handlers/LongPressGestureHandler.ts +0 -1
  87. package/src/web/handlers/TapGestureHandler.ts +0 -1
@@ -12,8 +12,8 @@
12
12
 
13
13
  #import <React/RCTConvert.h>
14
14
 
15
- // RNBetterTapGestureRecognizer extends UIGestureRecognizer instead of UITapGestureRecognizer
16
- // because the latter does not allow for parameters like maxDelay, maxDuration, minPointers,
15
+ // RNBetterTapGestureRecognizer extends UIGestureRecognizer instead of UITapGestureRecognizer
16
+ // because the latter does not allow for parameters like maxDelay, maxDuration, minPointers,
17
17
  // maxDelta to be configured. Using our custom implementation of tap recognizer we are able
18
18
  // to support these.
19
19
 
@@ -27,7 +27,7 @@
27
27
  @property (nonatomic) CGFloat maxDeltaY;
28
28
  @property (nonatomic) NSInteger minPointers;
29
29
 
30
- - (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler;
30
+ - (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler;
31
31
 
32
32
  @end
33
33
 
@@ -43,7 +43,7 @@ static const NSInteger defaultMinPointers = 1;
43
43
  static const CGFloat defaultMaxDelay = 0.2;
44
44
  static const NSTimeInterval defaultMaxDuration = 0.5;
45
45
 
46
- - (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler
46
+ - (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler
47
47
  {
48
48
  if ((self = [super initWithTarget:gestureHandler action:@selector(handleGesture:)])) {
49
49
  _gestureHandler = gestureHandler;
@@ -73,7 +73,7 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
73
73
  {
74
74
  [super touchesBegan:touches withEvent:event];
75
75
  [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event];
76
-
76
+
77
77
  if (_tapsSoFar == 0) {
78
78
  // this recognizer sends UNDETERMINED -> BEGAN state change event before gestureRecognizerShouldBegin
79
79
  // is called (it resets the gesture handler), making it send whatever the last known state as oldState
@@ -100,28 +100,29 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
100
100
  {
101
101
  [super touchesMoved:touches withEvent:event];
102
102
  [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
103
-
103
+
104
104
  NSInteger numberOfTouches = [touches count];
105
105
  if (numberOfTouches > _maxNumberOfTouches) {
106
106
  _maxNumberOfTouches = numberOfTouches;
107
107
  }
108
-
108
+
109
109
  if (self.state != UIGestureRecognizerStatePossible) {
110
110
  return;
111
111
  }
112
-
112
+
113
113
  if ([self shouldFailUnderCustomCriteria]) {
114
114
  self.state = UIGestureRecognizerStateFailed;
115
115
  [self triggerAction];
116
116
  [self reset];
117
117
  return;
118
118
  }
119
-
119
+
120
120
  self.state = UIGestureRecognizerStatePossible;
121
121
  [self triggerAction];
122
122
  }
123
123
 
124
- - (CGPoint)translationInView {
124
+ - (CGPoint)translationInView
125
+ {
125
126
  CGPoint currentPosition = [self locationInView:self.view.window];
126
127
  return CGPointMake(currentPosition.x - _initPosition.x, currentPosition.y - _initPosition.y);
127
128
  }
@@ -133,7 +134,7 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
133
134
  return YES;
134
135
  }
135
136
  }
136
-
137
+
137
138
  CGPoint trans = [self translationInView];
138
139
  if (TEST_MAX_IF_NOT_NAN(fabs(trans.x), _maxDeltaX)) {
139
140
  return YES;
@@ -151,7 +152,7 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
151
152
  {
152
153
  [super touchesEnded:touches withEvent:event];
153
154
  [_gestureHandler.pointerTracker touchesEnded:touches withEvent:event];
154
-
155
+
155
156
  if (_numberOfTaps == _tapsSoFar && _maxNumberOfTouches >= _minPointers) {
156
157
  self.state = UIGestureRecognizerStateEnded;
157
158
  [self reset];
@@ -164,7 +165,7 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
164
165
  {
165
166
  [super touchesCancelled:touches withEvent:event];
166
167
  [_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event];
167
-
168
+
168
169
  self.state = UIGestureRecognizerStateCancelled;
169
170
  [self reset];
170
171
  }
@@ -186,7 +187,7 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
186
187
  @end
187
188
 
188
189
  @implementation RNTapGestureHandler {
189
- RNGestureHandlerEventExtraData * _lastData;
190
+ RNGestureHandlerEventExtraData *_lastData;
190
191
  }
191
192
 
192
193
  - (instancetype)initWithTag:(NSNumber *)tag
@@ -201,7 +202,7 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
201
202
  {
202
203
  [super resetConfig];
203
204
  RNBetterTapGestureRecognizer *recognizer = (RNBetterTapGestureRecognizer *)_recognizer;
204
-
205
+
205
206
  recognizer.numberOfTaps = defaultNumberOfTaps;
206
207
  recognizer.minPointers = defaultMinPointers;
207
208
  recognizer.maxDeltaX = NAN;
@@ -215,22 +216,22 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
215
216
  {
216
217
  [super configure:config];
217
218
  RNBetterTapGestureRecognizer *recognizer = (RNBetterTapGestureRecognizer *)_recognizer;
218
-
219
+
219
220
  APPLY_INT_PROP(numberOfTaps);
220
221
  APPLY_INT_PROP(minPointers);
221
222
  APPLY_FLOAT_PROP(maxDeltaX);
222
223
  APPLY_FLOAT_PROP(maxDeltaY);
223
-
224
+
224
225
  id prop = config[@"maxDelayMs"];
225
226
  if (prop != nil) {
226
227
  recognizer.maxDelay = [RCTConvert CGFloat:prop] / 1000.0;
227
228
  }
228
-
229
+
229
230
  prop = config[@"maxDurationMs"];
230
231
  if (prop != nil) {
231
232
  recognizer.maxDuration = [RCTConvert CGFloat:prop] / 1000.0;
232
233
  }
233
-
234
+
234
235
  prop = config[@"maxDist"];
235
236
  if (prop != nil) {
236
237
  CGFloat dist = [RCTConvert CGFloat:prop];
@@ -240,12 +241,12 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
240
241
 
241
242
  - (RNGestureHandlerEventExtraData *)eventExtraData:(UIGestureRecognizer *)recognizer
242
243
  {
243
- if (recognizer.state == UIGestureRecognizerStateEnded) {
244
- return _lastData;
245
- }
246
-
247
- _lastData = [super eventExtraData:recognizer];
244
+ if (recognizer.state == UIGestureRecognizerStateEnded) {
248
245
  return _lastData;
246
+ }
247
+
248
+ _lastData = [super eventExtraData:recognizer];
249
+ return _lastData;
249
250
  }
250
251
 
251
252
  - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
@@ -257,9 +258,8 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
257
258
  RNGestureHandlerState savedState = _lastState;
258
259
  BOOL shouldBegin = [super gestureRecognizerShouldBegin:gestureRecognizer];
259
260
  _lastState = savedState;
260
-
261
+
261
262
  return shouldBegin;
262
263
  }
263
264
 
264
265
  @end
265
-
@@ -1,28 +1,39 @@
1
1
  #import "RNGestureHandlerActionType.h"
2
- #import "RNGestureHandlerState.h"
3
2
  #import "RNGestureHandlerDirection.h"
4
3
  #import "RNGestureHandlerEvents.h"
5
4
  #import "RNGestureHandlerPointerTracker.h"
5
+ #import "RNGestureHandlerState.h"
6
6
 
7
7
  #import <Foundation/Foundation.h>
8
- #import <UIKit/UIKit.h>
9
8
  #import <React/RCTConvert.h>
9
+ #import <UIKit/UIKit.h>
10
10
 
11
11
  #define VEC_LEN_SQ(pt) (pt.x * pt.x + pt.y * pt.y)
12
12
  #define TEST_MIN_IF_NOT_NAN(value, limit) \
13
- (!isnan(limit) && ((limit < 0 && value <= limit) || (limit >= 0 && value >= limit)))
14
-
15
- #define TEST_MAX_IF_NOT_NAN(value, max) \
16
- (!isnan(max) && ((max < 0 && value < max) || (max >= 0 && value > max)))
17
-
18
- #define APPLY_PROP(recognizer, config, type, prop, propName) do { \
19
- id value = config[propName]; \
20
- if (value != nil) { recognizer.prop = [RCTConvert type:value]; }\
21
- } while(0)
22
-
23
- #define APPLY_FLOAT_PROP(prop) do { APPLY_PROP(recognizer, config, CGFloat, prop, @#prop); } while(0)
24
- #define APPLY_INT_PROP(prop) do { APPLY_PROP(recognizer, config, NSInteger, prop, @#prop); } while(0)
25
- #define APPLY_NAMED_INT_PROP(prop, propName) do { APPLY_PROP(recognizer, config, NSInteger, prop, propName); } while(0)
13
+ (!isnan(limit) && ((limit < 0 && value <= limit) || (limit >= 0 && value >= limit)))
14
+
15
+ #define TEST_MAX_IF_NOT_NAN(value, max) (!isnan(max) && ((max < 0 && value < max) || (max >= 0 && value > max)))
16
+
17
+ #define APPLY_PROP(recognizer, config, type, prop, propName) \
18
+ do { \
19
+ id value = config[propName]; \
20
+ if (value != nil) { \
21
+ recognizer.prop = [RCTConvert type:value]; \
22
+ } \
23
+ } while (0)
24
+
25
+ #define APPLY_FLOAT_PROP(prop) \
26
+ do { \
27
+ APPLY_PROP(recognizer, config, CGFloat, prop, @ #prop); \
28
+ } while (0)
29
+ #define APPLY_INT_PROP(prop) \
30
+ do { \
31
+ APPLY_PROP(recognizer, config, NSInteger, prop, @ #prop); \
32
+ } while (0)
33
+ #define APPLY_NAMED_INT_PROP(prop, propName) \
34
+ do { \
35
+ APPLY_PROP(recognizer, config, NSInteger, prop, propName); \
36
+ } while (0)
26
37
 
27
38
  @protocol RNGestureHandlerEventEmitter
28
39
 
@@ -30,7 +41,6 @@ if (value != nil) { recognizer.prop = [RCTConvert type:value]; }\
30
41
 
31
42
  @end
32
43
 
33
-
34
44
  @protocol RNRootViewGestureRecognizerDelegate <UIGestureRecognizerDelegate>
35
45
 
36
46
  - (void)gestureRecognizer:(nullable UIGestureRecognizer *)gestureRecognizer
@@ -38,12 +48,11 @@ if (value != nil) { recognizer.prop = [RCTConvert type:value]; }\
38
48
 
39
49
  @end
40
50
 
41
-
42
51
  @interface RNGestureHandler : NSObject <UIGestureRecognizerDelegate> {
43
-
44
- @protected UIGestureRecognizer *_recognizer;
45
- @protected RNGestureHandlerState _lastState;
46
-
52
+ @protected
53
+ UIGestureRecognizer *_recognizer;
54
+ @protected
55
+ RNGestureHandlerState _lastState;
47
56
  }
48
57
 
49
58
  + (nullable RNGestureHandler *)findGestureHandlerByRecognizer:(nonnull UIGestureRecognizer *)recognizer;
@@ -76,8 +85,6 @@ if (value != nil) { recognizer.prop = [RCTConvert type:value]; }\
76
85
  forViewWithTag:(nonnull NSNumber *)reactTag
77
86
  withExtraData:(nonnull RNGestureHandlerEventExtraData *)extraData;
78
87
  - (void)sendEvent:(nonnull RNGestureHandlerStateChange *)event;
79
- - (void)sendTouchEventInState:(RNGestureHandlerState)state
80
- forViewWithTag:(nonnull NSNumber *)reactTag;
88
+ - (void)sendTouchEventInState:(RNGestureHandlerState)state forViewWithTag:(nonnull NSNumber *)reactTag;
81
89
 
82
90
  @end
83
-