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
@@ -19,9 +19,9 @@
19
19
  uint64_t previousTime;
20
20
  }
21
21
 
22
- - (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler;
22
+ - (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler;
23
23
  - (void)handleGesture:(UIGestureRecognizer *)recognizer;
24
- - (NSUInteger) getDuration;
24
+ - (NSUInteger)getDuration;
25
25
 
26
26
  @end
27
27
 
@@ -30,7 +30,7 @@
30
30
  CGPoint _initPosition;
31
31
  }
32
32
 
33
- - (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler
33
+ - (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler
34
34
  {
35
35
  if ((self = [super initWithTarget:self action:@selector(handleGesture:)])) {
36
36
  _gestureHandler = gestureHandler;
@@ -70,10 +70,11 @@
70
70
  {
71
71
  [super touchesMoved:touches withEvent:event];
72
72
  [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
73
-
73
+
74
74
  CGPoint trans = [self translationInView];
75
- if ((_gestureHandler.shouldCancelWhenOutside && ![_gestureHandler containsPointInView])
76
- || (TEST_MAX_IF_NOT_NAN(fabs(trans.y * trans.y + trans.x + trans.x), self.allowableMovement * self.allowableMovement))) {
75
+ if ((_gestureHandler.shouldCancelWhenOutside && ![_gestureHandler containsPointInView]) ||
76
+ (TEST_MAX_IF_NOT_NAN(
77
+ fabs(trans.y * trans.y + trans.x + trans.x), self.allowableMovement * self.allowableMovement))) {
77
78
  self.enabled = NO;
78
79
  self.enabled = YES;
79
80
  }
@@ -96,26 +97,25 @@
96
97
  if (self.state == UIGestureRecognizerStateFailed) {
97
98
  [self triggerAction];
98
99
  }
99
-
100
+
100
101
  [_gestureHandler.pointerTracker reset];
101
-
102
+
102
103
  [super reset];
103
104
  }
104
105
 
105
106
  - (NSUInteger)getDuration
106
107
  {
107
108
  static mach_timebase_info_data_t sTimebaseInfo;
108
-
109
+
109
110
  if (sTimebaseInfo.denom == 0) {
110
111
  mach_timebase_info(&sTimebaseInfo);
111
112
  }
112
-
113
+
113
114
  return (NSUInteger)(((previousTime - startTime) * sTimebaseInfo.numer / (sTimebaseInfo.denom * 1000000)));
114
115
  }
115
116
 
116
117
  @end
117
118
 
118
-
119
119
  @implementation RNLongPressGestureHandler
120
120
 
121
121
  - (instancetype)initWithTag:(NSNumber *)tag
@@ -130,7 +130,7 @@
130
130
  {
131
131
  [super resetConfig];
132
132
  UILongPressGestureRecognizer *recognizer = (UILongPressGestureRecognizer *)_recognizer;
133
-
133
+
134
134
  recognizer.minimumPressDuration = 0.5;
135
135
  recognizer.allowableMovement = 10;
136
136
  }
@@ -139,12 +139,12 @@
139
139
  {
140
140
  [super configure:config];
141
141
  UILongPressGestureRecognizer *recognizer = (UILongPressGestureRecognizer *)_recognizer;
142
-
142
+
143
143
  id prop = config[@"minDurationMs"];
144
144
  if (prop != nil) {
145
145
  recognizer.minimumPressDuration = [RCTConvert CGFloat:prop] / 1000.0;
146
146
  }
147
-
147
+
148
148
  prop = config[@"maxDist"];
149
149
  if (prop != nil) {
150
150
  recognizer.allowableMovement = [RCTConvert CGFloat:prop];
@@ -165,21 +165,19 @@
165
165
 
166
166
  - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
167
167
  {
168
- //same as TapGH, this needs to be unified when all handlers are updated
168
+ // same as TapGH, this needs to be unified when all handlers are updated
169
169
  RNGestureHandlerState savedState = _lastState;
170
170
  BOOL shouldBegin = [super gestureRecognizerShouldBegin:gestureRecognizer];
171
171
  _lastState = savedState;
172
-
172
+
173
173
  return shouldBegin;
174
174
  }
175
175
 
176
176
  - (RNGestureHandlerEventExtraData *)eventExtraData:(UIGestureRecognizer *)recognizer
177
177
  {
178
- return [RNGestureHandlerEventExtraData
179
- forPosition:[recognizer locationInView:recognizer.view]
180
- withAbsolutePosition:[recognizer locationInView:recognizer.view.window]
181
- withNumberOfTouches:recognizer.numberOfTouches
182
- withDuration:[(RNBetterLongPressGestureRecognizer*)recognizer getDuration]];
178
+ return [RNGestureHandlerEventExtraData forPosition:[recognizer locationInView:recognizer.view]
179
+ withAbsolutePosition:[recognizer locationInView:recognizer.view.window]
180
+ withNumberOfTouches:recognizer.numberOfTouches
181
+ withDuration:[(RNBetterLongPressGestureRecognizer *)recognizer getDuration]];
183
182
  }
184
183
  @end
185
-
@@ -37,9 +37,8 @@
37
37
  [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
38
38
 
39
39
  if ([self shouldFail]) {
40
- self.state = (self.state == UIGestureRecognizerStatePossible)
41
- ? UIGestureRecognizerStateFailed
42
- : UIGestureRecognizerStateCancelled;
40
+ self.state = (self.state == UIGestureRecognizerStatePossible) ? UIGestureRecognizerStateFailed
41
+ : UIGestureRecognizerStateCancelled;
43
42
 
44
43
  [self reset];
45
44
  }
@@ -27,37 +27,37 @@
27
27
 
28
28
  - (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler
29
29
  {
30
- if ((self = [super initWithTarget:gestureHandler action:@selector(handleGesture:)])) {
31
- _gestureHandler = gestureHandler;
32
- }
33
- return self;
30
+ if ((self = [super initWithTarget:gestureHandler action:@selector(handleGesture:)])) {
31
+ _gestureHandler = gestureHandler;
32
+ }
33
+ return self;
34
34
  }
35
35
 
36
36
  - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
37
37
  {
38
- [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event];
38
+ [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event];
39
39
  }
40
40
 
41
41
  - (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
42
42
  {
43
- [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
43
+ [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
44
44
  }
45
45
 
46
46
  - (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
47
47
  {
48
- [_gestureHandler.pointerTracker touchesEnded:touches withEvent:event];
49
- self.state = UIGestureRecognizerStateFailed;
50
- [self reset];
48
+ [_gestureHandler.pointerTracker touchesEnded:touches withEvent:event];
49
+ self.state = UIGestureRecognizerStateFailed;
50
+ [self reset];
51
51
  }
52
52
 
53
53
  - (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
54
54
  {
55
- [_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event];
56
- self.state = UIGestureRecognizerStateCancelled;
57
- [self reset];
55
+ [_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event];
56
+ self.state = UIGestureRecognizerStateCancelled;
57
+ [self reset];
58
58
  }
59
59
 
60
- -(void)reset
60
+ - (void)reset
61
61
  {
62
62
  [_gestureHandler.pointerTracker reset];
63
63
  [super reset];
@@ -68,122 +68,126 @@
68
68
  #pragma mark RNNativeViewgestureHandler
69
69
 
70
70
  @implementation RNNativeViewGestureHandler {
71
- BOOL _shouldActivateOnStart;
72
- BOOL _disallowInterruption;
71
+ BOOL _shouldActivateOnStart;
72
+ BOOL _disallowInterruption;
73
73
  }
74
74
 
75
75
  - (instancetype)initWithTag:(NSNumber *)tag
76
76
  {
77
- if ((self = [super initWithTag:tag])) {
78
- _recognizer = [[RNDummyGestureRecognizer alloc] initWithGestureHandler:self];
79
- }
80
- return self;
77
+ if ((self = [super initWithTag:tag])) {
78
+ _recognizer = [[RNDummyGestureRecognizer alloc] initWithGestureHandler:self];
79
+ }
80
+ return self;
81
81
  }
82
82
 
83
83
  - (void)configure:(NSDictionary *)config
84
84
  {
85
- [super configure:config];
86
- _shouldActivateOnStart = [RCTConvert BOOL:config[@"shouldActivateOnStart"]];
87
- _disallowInterruption = [RCTConvert BOOL:config[@"disallowInterruption"]];
85
+ [super configure:config];
86
+ _shouldActivateOnStart = [RCTConvert BOOL:config[@"shouldActivateOnStart"]];
87
+ _disallowInterruption = [RCTConvert BOOL:config[@"disallowInterruption"]];
88
88
  }
89
89
 
90
90
  - (void)bindToView:(UIView *)view
91
91
  {
92
- // For UIControl based views (UIButton, UISwitch) we provide special handling that would allow
93
- // for properties like `disallowInterruption` to work.
94
- if ([view isKindOfClass:[UIControl class]]) {
95
- UIControl *control = (UIControl *)view;
96
- [control addTarget:self action:@selector(handleTouchDown:forEvent:) forControlEvents:UIControlEventTouchDown];
97
- [control addTarget:self action:@selector(handleTouchUpOutside:forEvent:) forControlEvents:UIControlEventTouchUpOutside];
98
- [control addTarget:self action:@selector(handleTouchUpInside:forEvent:) forControlEvents:UIControlEventTouchUpInside];
99
- [control addTarget:self action:@selector(handleDragExit:forEvent:) forControlEvents:UIControlEventTouchDragExit];
100
- [control addTarget:self action:@selector(handleDragEnter:forEvent:) forControlEvents:UIControlEventTouchDragEnter];
101
- [control addTarget:self action:@selector(handleTouchCancel:forEvent:) forControlEvents:UIControlEventTouchCancel];
102
- } else {
103
- [super bindToView:view];
104
- }
105
-
106
- // We can restore default scrollview behaviour to delay touches to scrollview's children
107
- // because gesture handler system can handle cancellation of scroll recognizer when JS responder
108
- // is set
92
+ // For UIControl based views (UIButton, UISwitch) we provide special handling that would allow
93
+ // for properties like `disallowInterruption` to work.
94
+ if ([view isKindOfClass:[UIControl class]]) {
95
+ UIControl *control = (UIControl *)view;
96
+ [control addTarget:self action:@selector(handleTouchDown:forEvent:) forControlEvents:UIControlEventTouchDown];
97
+ [control addTarget:self
98
+ action:@selector(handleTouchUpOutside:forEvent:)
99
+ forControlEvents:UIControlEventTouchUpOutside];
100
+ [control addTarget:self
101
+ action:@selector(handleTouchUpInside:forEvent:)
102
+ forControlEvents:UIControlEventTouchUpInside];
103
+ [control addTarget:self action:@selector(handleDragExit:forEvent:) forControlEvents:UIControlEventTouchDragExit];
104
+ [control addTarget:self action:@selector(handleDragEnter:forEvent:) forControlEvents:UIControlEventTouchDragEnter];
105
+ [control addTarget:self action:@selector(handleTouchCancel:forEvent:) forControlEvents:UIControlEventTouchCancel];
106
+ } else {
107
+ [super bindToView:view];
108
+ }
109
+
110
+ // We can restore default scrollview behaviour to delay touches to scrollview's children
111
+ // because gesture handler system can handle cancellation of scroll recognizer when JS responder
112
+ // is set
109
113
  #ifdef RN_FABRIC_ENABLED
110
- if ([view isKindOfClass:[RCTScrollViewComponentView class]]) {
111
- UIScrollView *scrollView = ((RCTScrollViewComponentView *)view).scrollView;
112
- scrollView.delaysContentTouches = YES;
113
- }
114
+ if ([view isKindOfClass:[RCTScrollViewComponentView class]]) {
115
+ UIScrollView *scrollView = ((RCTScrollViewComponentView *)view).scrollView;
116
+ scrollView.delaysContentTouches = YES;
117
+ }
114
118
  #else
115
- if ([view isKindOfClass:[RCTScrollView class]]) {
116
- // This part of the code is coupled with RN implementation of ScrollView native wrapper and
117
- // we expect for RCTScrollView component to contain a subclass of UIScrollview as the only
118
- // subview
119
- UIScrollView *scrollView = [view.subviews objectAtIndex:0];
120
- scrollView.delaysContentTouches = YES;
121
- }
119
+ if ([view isKindOfClass:[RCTScrollView class]]) {
120
+ // This part of the code is coupled with RN implementation of ScrollView native wrapper and
121
+ // we expect for RCTScrollView component to contain a subclass of UIScrollview as the only
122
+ // subview
123
+ UIScrollView *scrollView = [view.subviews objectAtIndex:0];
124
+ scrollView.delaysContentTouches = YES;
125
+ }
122
126
  #endif // RN_FABRIC_ENABLED
123
127
  }
124
128
 
125
129
  - (void)handleTouchDown:(UIView *)sender forEvent:(UIEvent *)event
126
130
  {
127
- [self reset];
128
-
129
- if (_disallowInterruption) {
130
- // When `disallowInterruption` is set we cancel all gesture handlers when this UIControl
131
- // gets DOWN event
132
- for (UITouch *touch in [event allTouches]) {
133
- for (UIGestureRecognizer *recogn in [touch gestureRecognizers]) {
134
- recogn.enabled = NO;
135
- recogn.enabled = YES;
136
- }
137
- }
131
+ [self reset];
132
+
133
+ if (_disallowInterruption) {
134
+ // When `disallowInterruption` is set we cancel all gesture handlers when this UIControl
135
+ // gets DOWN event
136
+ for (UITouch *touch in [event allTouches]) {
137
+ for (UIGestureRecognizer *recogn in [touch gestureRecognizers]) {
138
+ recogn.enabled = NO;
139
+ recogn.enabled = YES;
140
+ }
138
141
  }
142
+ }
139
143
 
140
- [self sendEventsInState:RNGestureHandlerStateActive
141
- forViewWithTag:sender.reactTag
142
- withExtraData:[RNGestureHandlerEventExtraData forPointerInside:YES]];
144
+ [self sendEventsInState:RNGestureHandlerStateActive
145
+ forViewWithTag:sender.reactTag
146
+ withExtraData:[RNGestureHandlerEventExtraData forPointerInside:YES]];
143
147
  }
144
148
 
145
149
  - (void)handleTouchUpOutside:(UIView *)sender forEvent:(UIEvent *)event
146
150
  {
147
- [self sendEventsInState:RNGestureHandlerStateEnd
148
- forViewWithTag:sender.reactTag
149
- withExtraData:[RNGestureHandlerEventExtraData forPointerInside:NO]];
151
+ [self sendEventsInState:RNGestureHandlerStateEnd
152
+ forViewWithTag:sender.reactTag
153
+ withExtraData:[RNGestureHandlerEventExtraData forPointerInside:NO]];
150
154
  }
151
155
 
152
156
  - (void)handleTouchUpInside:(UIView *)sender forEvent:(UIEvent *)event
153
157
  {
154
- [self sendEventsInState:RNGestureHandlerStateEnd
155
- forViewWithTag:sender.reactTag
156
- withExtraData:[RNGestureHandlerEventExtraData forPointerInside:YES]];
158
+ [self sendEventsInState:RNGestureHandlerStateEnd
159
+ forViewWithTag:sender.reactTag
160
+ withExtraData:[RNGestureHandlerEventExtraData forPointerInside:YES]];
157
161
  }
158
162
 
159
163
  - (void)handleDragExit:(UIView *)sender forEvent:(UIEvent *)event
160
164
  {
161
- // Pointer is moved outside of the view bounds, we cancel button when `shouldCancelWhenOutside` is set
162
- if (self.shouldCancelWhenOutside) {
163
- UIControl *control = (UIControl *)sender;
164
- [control cancelTrackingWithEvent:event];
165
- [self sendEventsInState:RNGestureHandlerStateEnd
166
- forViewWithTag:sender.reactTag
167
- withExtraData:[RNGestureHandlerEventExtraData forPointerInside:NO]];
168
- } else {
169
- [self sendEventsInState:RNGestureHandlerStateActive
170
- forViewWithTag:sender.reactTag
171
- withExtraData:[RNGestureHandlerEventExtraData forPointerInside:NO]];
172
- }
165
+ // Pointer is moved outside of the view bounds, we cancel button when `shouldCancelWhenOutside` is set
166
+ if (self.shouldCancelWhenOutside) {
167
+ UIControl *control = (UIControl *)sender;
168
+ [control cancelTrackingWithEvent:event];
169
+ [self sendEventsInState:RNGestureHandlerStateEnd
170
+ forViewWithTag:sender.reactTag
171
+ withExtraData:[RNGestureHandlerEventExtraData forPointerInside:NO]];
172
+ } else {
173
+ [self sendEventsInState:RNGestureHandlerStateActive
174
+ forViewWithTag:sender.reactTag
175
+ withExtraData:[RNGestureHandlerEventExtraData forPointerInside:NO]];
176
+ }
173
177
  }
174
178
 
175
179
  - (void)handleDragEnter:(UIView *)sender forEvent:(UIEvent *)event
176
180
  {
177
- [self sendEventsInState:RNGestureHandlerStateActive
178
- forViewWithTag:sender.reactTag
179
- withExtraData:[RNGestureHandlerEventExtraData forPointerInside:YES]];
181
+ [self sendEventsInState:RNGestureHandlerStateActive
182
+ forViewWithTag:sender.reactTag
183
+ withExtraData:[RNGestureHandlerEventExtraData forPointerInside:YES]];
180
184
  }
181
185
 
182
186
  - (void)handleTouchCancel:(UIView *)sender forEvent:(UIEvent *)event
183
187
  {
184
- [self sendEventsInState:RNGestureHandlerStateCancelled
185
- forViewWithTag:sender.reactTag
186
- withExtraData:[RNGestureHandlerEventExtraData forPointerInside:NO]];
188
+ [self sendEventsInState:RNGestureHandlerStateCancelled
189
+ forViewWithTag:sender.reactTag
190
+ withExtraData:[RNGestureHandlerEventExtraData forPointerInside:NO]];
187
191
  }
188
192
 
189
193
  @end
@@ -26,19 +26,17 @@
26
26
  @property (nonatomic) CGFloat failOffsetYEnd;
27
27
  @property (nonatomic) CGFloat activateAfterLongPress;
28
28
 
29
-
30
- - (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler;
29
+ - (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler;
31
30
 
32
31
  @end
33
32
 
34
-
35
33
  @implementation RNBetterPanGestureRecognizer {
36
34
  __weak RNGestureHandler *_gestureHandler;
37
35
  NSUInteger _realMinimumNumberOfTouches;
38
36
  BOOL _hasCustomActivationCriteria;
39
37
  }
40
38
 
41
- - (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler
39
+ - (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler
42
40
  {
43
41
  if ((self = [super initWithTarget:gestureHandler action:@selector(handleGesture:)])) {
44
42
  _gestureHandler = gestureHandler;
@@ -96,9 +94,9 @@
96
94
  }
97
95
  #endif
98
96
  [super touchesBegan:touches withEvent:event];
99
- [self triggerAction];
100
97
  [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event];
101
-
98
+ [self triggerAction];
99
+
102
100
  if (!isnan(_activateAfterLongPress)) {
103
101
  [self performSelector:@selector(activateAfterLongPress) withObject:nil afterDelay:_activateAfterLongPress];
104
102
  }
@@ -108,7 +106,7 @@
108
106
  {
109
107
  [super touchesMoved:touches withEvent:event];
110
108
  [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
111
-
109
+
112
110
  if (self.state == UIGestureRecognizerStatePossible && [self shouldFailUnderCustomCriteria]) {
113
111
  self.state = UIGestureRecognizerStateFailed;
114
112
  return;
@@ -119,14 +117,14 @@
119
117
  // then UIGestureRecognizer's sate machine will only transition to
120
118
  // UIGestureRecognizerStateCancelled even if you set the state to
121
119
  // UIGestureRecognizerStateFailed here. Making the behavior explicit.
122
- self.state = (self.state == UIGestureRecognizerStatePossible)
123
- ? UIGestureRecognizerStateFailed
124
- : UIGestureRecognizerStateCancelled;
120
+ self.state = (self.state == UIGestureRecognizerStatePossible) ? UIGestureRecognizerStateFailed
121
+ : UIGestureRecognizerStateCancelled;
125
122
  [self reset];
126
123
  return;
127
124
  }
128
125
  }
129
- if (_hasCustomActivationCriteria && self.state == UIGestureRecognizerStatePossible && [self shouldActivateUnderCustomCriteria]) {
126
+ if (_hasCustomActivationCriteria && self.state == UIGestureRecognizerStatePossible &&
127
+ [self shouldActivateUnderCustomCriteria]) {
130
128
  #if !TARGET_OS_TV
131
129
  super.minimumNumberOfTouches = _realMinimumNumberOfTouches;
132
130
  if ([self numberOfTouches] >= _realMinimumNumberOfTouches) {
@@ -160,10 +158,9 @@
160
158
 
161
159
  - (void)updateHasCustomActivationCriteria
162
160
  {
163
- _hasCustomActivationCriteria = !isnan(_minDistSq)
164
- || !isnan(_minVelocityX) || !isnan(_minVelocityY) || !isnan(_minVelocitySq)
165
- || !isnan(_activeOffsetXStart) || !isnan(_activeOffsetXEnd)
166
- || !isnan(_activeOffsetYStart) || !isnan(_activeOffsetYEnd);
161
+ _hasCustomActivationCriteria = !isnan(_minDistSq) || !isnan(_minVelocityX) || !isnan(_minVelocityY) ||
162
+ !isnan(_minVelocitySq) || !isnan(_activeOffsetXStart) || !isnan(_activeOffsetXEnd) ||
163
+ !isnan(_activeOffsetYStart) || !isnan(_activeOffsetYEnd);
167
164
  }
168
165
 
169
166
  - (BOOL)shouldFailUnderCustomCriteria
@@ -174,7 +171,7 @@
174
171
  [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(activateAfterLongPress) object:nil];
175
172
  return YES;
176
173
  }
177
-
174
+
178
175
  if (!isnan(_failOffsetXStart) && trans.x < _failOffsetXStart) {
179
176
  return YES;
180
177
  }
@@ -205,11 +202,11 @@
205
202
  if (!isnan(_activeOffsetYEnd) && trans.y > _activeOffsetYEnd) {
206
203
  return YES;
207
204
  }
208
-
205
+
209
206
  if (TEST_MIN_IF_NOT_NAN(VEC_LEN_SQ(trans), _minDistSq)) {
210
207
  return YES;
211
208
  }
212
-
209
+
213
210
  CGPoint velocity = [self velocityInView:self.view];
214
211
  if (TEST_MIN_IF_NOT_NAN(velocity.x, _minVelocityX)) {
215
212
  return YES;
@@ -220,7 +217,7 @@
220
217
  if (TEST_MIN_IF_NOT_NAN(VEC_LEN_SQ(velocity), _minVelocitySq)) {
221
218
  return YES;
222
219
  }
223
-
220
+
224
221
  return NO;
225
222
  }
226
223
 
@@ -269,7 +266,7 @@
269
266
  {
270
267
  [super configure:config];
271
268
  RNBetterPanGestureRecognizer *recognizer = (RNBetterPanGestureRecognizer *)_recognizer;
272
-
269
+
273
270
  APPLY_FLOAT_PROP(minVelocityX);
274
271
  APPLY_FLOAT_PROP(minVelocityY);
275
272
  APPLY_FLOAT_PROP(activeOffsetXStart);
@@ -284,7 +281,7 @@
284
281
  #if !TARGET_OS_TV && __IPHONE_OS_VERSION_MAX_ALLOWED >= 130400
285
282
  if (@available(iOS 13.4, *)) {
286
283
  bool enableTrackpadTwoFingerGesture = [RCTConvert BOOL:config[@"enableTrackpadTwoFingerGesture"]];
287
- if(enableTrackpadTwoFingerGesture){
284
+ if (enableTrackpadTwoFingerGesture) {
288
285
  recognizer.allowedScrollTypesMask = UIScrollTypeMaskAll;
289
286
  }
290
287
  }
@@ -292,19 +289,19 @@
292
289
  APPLY_NAMED_INT_PROP(minimumNumberOfTouches, @"minPointers");
293
290
  APPLY_NAMED_INT_PROP(maximumNumberOfTouches, @"maxPointers");
294
291
  #endif
295
-
292
+
296
293
  id prop = config[@"minDist"];
297
294
  if (prop != nil) {
298
295
  CGFloat dist = [RCTConvert CGFloat:prop];
299
296
  recognizer.minDistSq = dist * dist;
300
297
  }
301
-
298
+
302
299
  prop = config[@"minVelocity"];
303
300
  if (prop != nil) {
304
301
  CGFloat velocity = [RCTConvert CGFloat:prop];
305
302
  recognizer.minVelocitySq = velocity * velocity;
306
303
  }
307
-
304
+
308
305
  prop = config[@"activateAfterLongPress"];
309
306
  if (prop != nil) {
310
307
  recognizer.activateAfterLongPress = [RCTConvert CGFloat:prop] / 1000.0;
@@ -313,23 +310,22 @@
313
310
  [recognizer updateHasCustomActivationCriteria];
314
311
  }
315
312
 
316
- - (BOOL) gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
313
+ - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
317
314
  {
318
315
  RNGestureHandlerState savedState = _lastState;
319
316
  BOOL shouldBegin = [super gestureRecognizerShouldBegin:gestureRecognizer];
320
317
  _lastState = savedState;
321
-
318
+
322
319
  return shouldBegin;
323
320
  }
324
321
 
325
322
  - (RNGestureHandlerEventExtraData *)eventExtraData:(UIPanGestureRecognizer *)recognizer
326
323
  {
327
- return [RNGestureHandlerEventExtraData
328
- forPan:[recognizer locationInView:recognizer.view]
329
- withAbsolutePosition:[recognizer locationInView:recognizer.view.window]
330
- withTranslation:[recognizer translationInView:recognizer.view.window]
331
- withVelocity:[recognizer velocityInView:recognizer.view.window]
332
- withNumberOfTouches:recognizer.numberOfTouches];
324
+ return [RNGestureHandlerEventExtraData forPan:[recognizer locationInView:recognizer.view]
325
+ withAbsolutePosition:[recognizer locationInView:recognizer.view.window]
326
+ withTranslation:[recognizer translationInView:recognizer.view.window]
327
+ withVelocity:[recognizer velocityInView:recognizer.view.window]
328
+ withNumberOfTouches:recognizer.numberOfTouches];
333
329
  }
334
330
 
335
331
  @end
@@ -13,7 +13,7 @@
13
13
  #if !TARGET_OS_TV
14
14
  @interface RNBetterPinchRecognizer : UIPinchGestureRecognizer
15
15
 
16
- - (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler;
16
+ - (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler;
17
17
 
18
18
  @end
19
19
 
@@ -74,22 +74,21 @@
74
74
 
75
75
  - (instancetype)initWithTag:(NSNumber *)tag
76
76
  {
77
- if ((self = [super initWithTag:tag])) {
77
+ if ((self = [super initWithTag:tag])) {
78
78
  #if !TARGET_OS_TV
79
- _recognizer = [[RNBetterPinchRecognizer alloc] initWithGestureHandler:self];
79
+ _recognizer = [[RNBetterPinchRecognizer alloc] initWithGestureHandler:self];
80
80
  #endif
81
- }
82
- return self;
81
+ }
82
+ return self;
83
83
  }
84
84
 
85
85
  #if !TARGET_OS_TV
86
86
  - (RNGestureHandlerEventExtraData *)eventExtraData:(UIPinchGestureRecognizer *)recognizer
87
87
  {
88
- return [RNGestureHandlerEventExtraData
89
- forPinch:recognizer.scale
90
- withFocalPoint:[recognizer locationInView:recognizer.view]
91
- withVelocity:recognizer.velocity
92
- withNumberOfTouches:recognizer.numberOfTouches];
88
+ return [RNGestureHandlerEventExtraData forPinch:recognizer.scale
89
+ withFocalPoint:[recognizer locationInView:recognizer.view]
90
+ withVelocity:recognizer.velocity
91
+ withNumberOfTouches:recognizer.numberOfTouches];
93
92
  }
94
93
  #endif
95
94
 
@@ -11,7 +11,7 @@
11
11
  #if !TARGET_OS_TV
12
12
  @interface RNBetterRotationRecognizer : UIRotationGestureRecognizer
13
13
 
14
- - (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler;
14
+ - (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler;
15
15
 
16
16
  @end
17
17
 
@@ -35,7 +35,6 @@
35
35
  [_gestureHandler handleGesture:recognizer];
36
36
  }
37
37
 
38
-
39
38
  - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
40
39
  {
41
40
  [super touchesBegan:touches withEvent:event];
@@ -73,24 +72,22 @@
73
72
 
74
73
  - (instancetype)initWithTag:(NSNumber *)tag
75
74
  {
76
- if ((self = [super initWithTag:tag])) {
77
- #if !TARGET_OS_TV
78
- _recognizer = [[RNBetterRotationRecognizer alloc] initWithGestureHandler:self];
79
- #endif
80
- }
81
- return self;
75
+ if ((self = [super initWithTag:tag])) {
76
+ #if !TARGET_OS_TV
77
+ _recognizer = [[RNBetterRotationRecognizer alloc] initWithGestureHandler:self];
78
+ #endif
79
+ }
80
+ return self;
82
81
  }
83
82
 
84
83
  #if !TARGET_OS_TV
85
84
  - (RNGestureHandlerEventExtraData *)eventExtraData:(UIRotationGestureRecognizer *)recognizer
86
85
  {
87
- return [RNGestureHandlerEventExtraData
88
- forRotation:recognizer.rotation
89
- withAnchorPoint:[recognizer locationInView:recognizer.view]
90
- withVelocity:recognizer.velocity
91
- withNumberOfTouches:recognizer.numberOfTouches];
86
+ return [RNGestureHandlerEventExtraData forRotation:recognizer.rotation
87
+ withAnchorPoint:[recognizer locationInView:recognizer.view]
88
+ withVelocity:recognizer.velocity
89
+ withNumberOfTouches:recognizer.numberOfTouches];
92
90
  }
93
91
  #endif
94
92
 
95
93
  @end
96
-