react-native-gesture-handler 2.7.0 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/android/build.gradle +10 -5
  2. package/android/noreanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt +3 -3
  3. package/android/reanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt +7 -7
  4. package/android/src/fabric/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +2 -2
  5. package/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt +3 -3
  6. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/FlingGestureHandler.kt +12 -9
  7. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandler.kt +39 -31
  8. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandlerInteractionController.kt +1 -1
  9. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandlerOrchestrator.kt +28 -19
  10. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandlerRegistry.kt +1 -1
  11. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureUtils.kt +1 -1
  12. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/LongPressGestureHandler.kt +1 -1
  13. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/ManualGestureHandler.kt +1 -1
  14. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/NativeViewGestureHandler.kt +5 -5
  15. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/OnTouchEventListener.kt +1 -1
  16. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/PanGestureHandler.kt +7 -5
  17. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/PinchGestureHandler.kt +11 -4
  18. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/PointerEventsConfig.kt +1 -1
  19. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/RotationGestureDetector.kt +1 -1
  20. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/RotationGestureHandler.kt +7 -2
  21. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/ScaleGestureDetector.java +1 -1
  22. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/TapGestureHandler.kt +3 -3
  23. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/ViewConfigurationHelper.kt +1 -1
  24. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/react}/Extensions.kt +3 -3
  25. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +7 -6
  26. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt +1 -5
  27. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +6 -6
  28. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt +1 -1
  29. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +3 -3
  30. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +35 -14
  31. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt +2 -2
  32. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +8 -6
  33. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +0 -2
  34. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt +4 -2
  35. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +7 -7
  36. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +5 -5
  37. package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt +2 -2
  38. package/android/src/paper/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +5 -5
  39. package/ios/Handlers/RNManualHandler.m +24 -8
  40. package/ios/RNGestureHandlerButtonComponentView.mm +7 -8
  41. package/ios/RNGestureHandlerManager.mm +176 -178
  42. package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
  43. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
  44. package/lib/commonjs/RNGestureHandlerModule.windows.js +156 -0
  45. package/lib/commonjs/RNGestureHandlerModule.windows.js.map +1 -0
  46. package/lib/commonjs/components/DrawerLayout.js +1 -0
  47. package/lib/commonjs/components/DrawerLayout.js.map +1 -1
  48. package/lib/commonjs/components/Swipeable.js.map +1 -1
  49. package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
  50. package/lib/commonjs/getShadowNodeFromRef.js +2 -2
  51. package/lib/commonjs/getShadowNodeFromRef.js.map +1 -1
  52. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  53. package/lib/commonjs/handlers/gestureHandlerCommon.js +5 -2
  54. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
  55. package/lib/commonjs/handlers/gestureHandlerTypesCompat.js +4 -0
  56. package/lib/commonjs/handlers/gestures/GestureDetector.js +26 -12
  57. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
  58. package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
  59. package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
  60. package/lib/commonjs/handlers/gestures/gestureComposition.js +15 -4
  61. package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -1
  62. package/lib/commonjs/jestUtils/jestUtils.js.map +1 -1
  63. package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
  64. package/lib/commonjs/web/handlers/FlingGestureHandler.js +18 -15
  65. package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
  66. package/lib/commonjs/web/handlers/GestureHandler.js +36 -7
  67. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  68. package/lib/commonjs/web/handlers/LongPressGestureHandler.js +2 -1
  69. package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
  70. package/lib/commonjs/web/handlers/ManualGestureHandler.js +15 -0
  71. package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -1
  72. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +0 -5
  73. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
  74. package/lib/commonjs/web/handlers/PanGestureHandler.js +0 -5
  75. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
  76. package/lib/commonjs/web/handlers/PinchGestureHandler.js +0 -1
  77. package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
  78. package/lib/commonjs/web/handlers/RotationGestureHandler.js +0 -1
  79. package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
  80. package/lib/commonjs/web/handlers/TapGestureHandler.js +0 -1
  81. package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
  82. package/lib/commonjs/web/interfaces.js.map +1 -1
  83. package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
  84. package/lib/commonjs/web_hammer/GestureHandler.js.map +1 -1
  85. package/lib/commonjs/web_hammer/NodeManager.js +4 -1
  86. package/lib/commonjs/web_hammer/NodeManager.js.map +1 -1
  87. package/lib/commonjs/web_hammer/PanGestureHandler.js +25 -6
  88. package/lib/commonjs/web_hammer/PanGestureHandler.js.map +1 -1
  89. package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
  90. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  91. package/lib/module/RNGestureHandlerModule.windows.js +117 -0
  92. package/lib/module/RNGestureHandlerModule.windows.js.map +1 -0
  93. package/lib/module/components/DrawerLayout.js +1 -0
  94. package/lib/module/components/DrawerLayout.js.map +1 -1
  95. package/lib/module/components/Swipeable.js.map +1 -1
  96. package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
  97. package/lib/module/getShadowNodeFromRef.js +2 -2
  98. package/lib/module/getShadowNodeFromRef.js.map +1 -1
  99. package/lib/module/handlers/createHandler.js.map +1 -1
  100. package/lib/module/handlers/gestureHandlerCommon.js +5 -2
  101. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
  102. package/lib/module/handlers/gestureHandlerTypesCompat.js +1 -1
  103. package/lib/module/handlers/gestures/GestureDetector.js +26 -12
  104. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
  105. package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
  106. package/lib/module/handlers/gestures/gesture.js.map +1 -1
  107. package/lib/module/handlers/gestures/gestureComposition.js +15 -4
  108. package/lib/module/handlers/gestures/gestureComposition.js.map +1 -1
  109. package/lib/module/jestUtils/jestUtils.js.map +1 -1
  110. package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
  111. package/lib/module/web/handlers/FlingGestureHandler.js +18 -15
  112. package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
  113. package/lib/module/web/handlers/GestureHandler.js +36 -6
  114. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  115. package/lib/module/web/handlers/LongPressGestureHandler.js +2 -1
  116. package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
  117. package/lib/module/web/handlers/ManualGestureHandler.js +15 -0
  118. package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -1
  119. package/lib/module/web/handlers/NativeViewGestureHandler.js +0 -5
  120. package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
  121. package/lib/module/web/handlers/PanGestureHandler.js +0 -5
  122. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
  123. package/lib/module/web/handlers/PinchGestureHandler.js +0 -1
  124. package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
  125. package/lib/module/web/handlers/RotationGestureHandler.js +0 -1
  126. package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
  127. package/lib/module/web/handlers/TapGestureHandler.js +0 -1
  128. package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
  129. package/lib/module/web/interfaces.js.map +1 -1
  130. package/lib/module/web/tools/InteractionManager.js.map +1 -1
  131. package/lib/module/web_hammer/GestureHandler.js.map +1 -1
  132. package/lib/module/web_hammer/NodeManager.js +4 -1
  133. package/lib/module/web_hammer/NodeManager.js.map +1 -1
  134. package/lib/module/web_hammer/PanGestureHandler.js +25 -6
  135. package/lib/module/web_hammer/PanGestureHandler.js.map +1 -1
  136. package/lib/typescript/RNGestureHandlerModule.macos.d.ts +1 -1
  137. package/lib/typescript/RNGestureHandlerModule.web.d.ts +1 -1
  138. package/lib/typescript/RNGestureHandlerModule.windows.d.ts +48 -0
  139. package/lib/typescript/components/DrawerLayout.d.ts +7 -0
  140. package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +1 -1
  141. package/lib/typescript/handlers/PanGestureHandler.d.ts +1 -1
  142. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +3 -1
  143. package/lib/typescript/handlers/gestures/GestureDetector.d.ts +3 -1
  144. package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +1 -0
  145. package/lib/typescript/web/handlers/GestureHandler.d.ts +1 -0
  146. package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +3 -1
  147. package/lib/typescript/web/interfaces.d.ts +3 -1
  148. package/lib/typescript/web/tools/NodeManager.d.ts +2 -2
  149. package/package.json +14 -10
  150. package/src/RNGestureHandlerModule.macos.ts +2 -2
  151. package/src/RNGestureHandlerModule.web.ts +2 -2
  152. package/src/RNGestureHandlerModule.windows.ts +140 -0
  153. package/src/components/DrawerLayout.tsx +14 -8
  154. package/src/components/Swipeable.tsx +2 -4
  155. package/src/components/touchables/TouchableOpacity.tsx +1 -1
  156. package/src/getShadowNodeFromRef.ts +3 -3
  157. package/src/handlers/createHandler.tsx +13 -15
  158. package/src/handlers/gestureHandlerCommon.ts +9 -4
  159. package/src/handlers/gestureHandlerTypesCompat.ts +34 -17
  160. package/src/handlers/gestures/GestureDetector.tsx +46 -19
  161. package/src/handlers/gestures/eventReceiver.ts +2 -1
  162. package/src/handlers/gestures/gesture.ts +8 -12
  163. package/src/handlers/gestures/gestureComposition.ts +19 -6
  164. package/src/jestUtils/jestUtils.ts +3 -4
  165. package/src/web/detectors/RotationGestureDetector.ts +2 -1
  166. package/src/web/handlers/FlingGestureHandler.ts +28 -20
  167. package/src/web/handlers/GestureHandler.ts +42 -17
  168. package/src/web/handlers/LongPressGestureHandler.ts +2 -2
  169. package/src/web/handlers/ManualGestureHandler.ts +10 -1
  170. package/src/web/handlers/NativeViewGestureHandler.ts +0 -5
  171. package/src/web/handlers/PanGestureHandler.ts +0 -6
  172. package/src/web/handlers/PinchGestureHandler.ts +0 -2
  173. package/src/web/handlers/RotationGestureHandler.ts +2 -5
  174. package/src/web/handlers/TapGestureHandler.ts +0 -2
  175. package/src/web/interfaces.ts +3 -0
  176. package/src/web/tools/InteractionManager.ts +2 -3
  177. package/src/web_hammer/GestureHandler.ts +6 -8
  178. package/src/web_hammer/NodeManager.ts +3 -1
  179. package/src/web_hammer/PanGestureHandler.ts +12 -6
  180. package/android/lib/build.gradle +0 -28
  181. package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcuserdata/jakubpiasecki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  182. package/ios/RNGestureHandler.xcodeproj/xcuserdata/jakubpiasecki.xcuserdatad/xcschemes/xcschememanagement.plist +0 -19
@@ -68,7 +68,7 @@ export default {
68
68
  NodeManager.createGestureHandler(handlerTag, new GestureClass());
69
69
  InteractionManager.getInstance().configureInteractions(
70
70
  NodeManager.getHandler(handlerTag),
71
- (config as unknown) as Config
71
+ config as unknown as Config
72
72
  );
73
73
  } else {
74
74
  if (!(handlerName in HammerGestures)) {
@@ -84,7 +84,7 @@ export default {
84
84
  HammerNodeManager.createGestureHandler(handlerTag, new GestureClass());
85
85
  }
86
86
 
87
- this.updateGestureHandler(handlerTag, (config as unknown) as Config);
87
+ this.updateGestureHandler(handlerTag, config as unknown as Config);
88
88
  },
89
89
  attachGestureHandler(
90
90
  handlerTag: number,
@@ -70,7 +70,7 @@ export default {
70
70
  NodeManager.createGestureHandler(handlerTag, new GestureClass());
71
71
  InteractionManager.getInstance().configureInteractions(
72
72
  NodeManager.getHandler(handlerTag),
73
- (config as unknown) as Config
73
+ config as unknown as Config
74
74
  );
75
75
  } else {
76
76
  if (!(handlerName in HammerGestures)) {
@@ -86,7 +86,7 @@ export default {
86
86
  HammerNodeManager.createGestureHandler(handlerTag, new GestureClass());
87
87
  }
88
88
 
89
- this.updateGestureHandler(handlerTag, (config as unknown) as Config);
89
+ this.updateGestureHandler(handlerTag, config as unknown as Config);
90
90
  },
91
91
  attachGestureHandler(
92
92
  handlerTag: number,
@@ -0,0 +1,140 @@
1
+ import React from 'react';
2
+
3
+ import { ActionType } from './ActionType';
4
+ import { isExperimentalWebImplementationEnabled } from './EnableExperimentalWebImplementation';
5
+
6
+ //GestureHandlers
7
+ import InteractionManager from './web/tools/InteractionManager';
8
+ import NodeManager from './web/tools/NodeManager';
9
+ import PanGestureHandler from './web/handlers/PanGestureHandler';
10
+ import TapGestureHandler from './web/handlers/TapGestureHandler';
11
+ import LongPressGestureHandler from './web/handlers/LongPressGestureHandler';
12
+ import PinchGestureHandler from './web/handlers/PinchGestureHandler';
13
+ import RotationGestureHandler from './web/handlers/RotationGestureHandler';
14
+ import FlingGestureHandler from './web/handlers/FlingGestureHandler';
15
+ import NativeViewGestureHandler from './web/handlers/NativeViewGestureHandler';
16
+ import ManualGestureHandler from './web/handlers/ManualGestureHandler';
17
+
18
+ //Hammer Handlers
19
+ import * as HammerNodeManager from './web_hammer/NodeManager';
20
+ import HammerNativeViewGestureHandler from './web_hammer/NativeViewGestureHandler';
21
+ import HammerPanGestureHandler from './web_hammer/PanGestureHandler';
22
+ import HammerTapGestureHandler from './web_hammer/TapGestureHandler';
23
+ import HammerLongPressGestureHandler from './web_hammer/LongPressGestureHandler';
24
+ import HammerPinchGestureHandler from './web_hammer/PinchGestureHandler';
25
+ import HammerRotationGestureHandler from './web_hammer/RotationGestureHandler';
26
+ import HammerFlingGestureHandler from './web_hammer/FlingGestureHandler';
27
+ import { Config } from './web/interfaces';
28
+
29
+ export const Gestures = {
30
+ NativeViewGestureHandler,
31
+ PanGestureHandler,
32
+ TapGestureHandler,
33
+ LongPressGestureHandler,
34
+ PinchGestureHandler,
35
+ RotationGestureHandler,
36
+ FlingGestureHandler,
37
+ ManualGestureHandler,
38
+ };
39
+
40
+ export const HammerGestures = {
41
+ NativeViewGestureHandler: HammerNativeViewGestureHandler,
42
+ PanGestureHandler: HammerPanGestureHandler,
43
+ TapGestureHandler: HammerTapGestureHandler,
44
+ LongPressGestureHandler: HammerLongPressGestureHandler,
45
+ PinchGestureHandler: HammerPinchGestureHandler,
46
+ RotationGestureHandler: HammerRotationGestureHandler,
47
+ FlingGestureHandler: HammerFlingGestureHandler,
48
+ };
49
+
50
+ export default {
51
+ handleSetJSResponder(_tag: number, _blockNativeResponder: boolean) {
52
+ // NO-OP
53
+ },
54
+ handleClearJSResponder() {
55
+ // NO-OP
56
+ },
57
+ createGestureHandler<T>(
58
+ handlerName: keyof typeof Gestures,
59
+ handlerTag: number,
60
+ config: T
61
+ ) {
62
+ if (isExperimentalWebImplementationEnabled()) {
63
+ if (!(handlerName in Gestures)) {
64
+ throw new Error(
65
+ `react-native-gesture-handler: ${handlerName} is not supported on web.`
66
+ );
67
+ }
68
+
69
+ const GestureClass = Gestures[handlerName];
70
+ NodeManager.createGestureHandler(handlerTag, new GestureClass());
71
+ InteractionManager.getInstance().configureInteractions(
72
+ NodeManager.getHandler(handlerTag),
73
+ config as unknown as Config
74
+ );
75
+ } else {
76
+ if (!(handlerName in HammerGestures)) {
77
+ throw new Error(
78
+ `react-native-gesture-handler: ${handlerName} is not supported on web.`
79
+ );
80
+ }
81
+
82
+ // @ts-ignore If it doesn't exist, the error is thrown
83
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
84
+ const GestureClass = HammerGestures[handlerName];
85
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call
86
+ HammerNodeManager.createGestureHandler(handlerTag, new GestureClass());
87
+ }
88
+
89
+ this.updateGestureHandler(handlerTag, config as unknown as Config);
90
+ },
91
+ attachGestureHandler(
92
+ handlerTag: number,
93
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
94
+ newView: any,
95
+ _actionType: ActionType,
96
+ propsRef: React.RefObject<unknown>
97
+ ) {
98
+ if (
99
+ !(newView instanceof HTMLElement || newView instanceof React.Component)
100
+ ) {
101
+ return;
102
+ }
103
+
104
+ if (isExperimentalWebImplementationEnabled()) {
105
+ //@ts-ignore Types should be HTMLElement or React.Component
106
+ NodeManager.getHandler(handlerTag).init(newView, propsRef);
107
+ } else {
108
+ //@ts-ignore Types should be HTMLElement or React.Component
109
+ HammerNodeManager.getHandler(handlerTag).setView(newView, propsRef);
110
+ }
111
+ },
112
+ updateGestureHandler(handlerTag: number, newConfig: Config) {
113
+ if (isExperimentalWebImplementationEnabled()) {
114
+ NodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);
115
+
116
+ InteractionManager.getInstance().configureInteractions(
117
+ NodeManager.getHandler(handlerTag),
118
+ newConfig
119
+ );
120
+ } else {
121
+ HammerNodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);
122
+ }
123
+ },
124
+ getGestureHandlerNode(handlerTag: number) {
125
+ if (isExperimentalWebImplementationEnabled()) {
126
+ return NodeManager.getHandler(handlerTag);
127
+ } else {
128
+ return HammerNodeManager.getHandler(handlerTag);
129
+ }
130
+ },
131
+ dropGestureHandler(handlerTag: number) {
132
+ if (isExperimentalWebImplementationEnabled()) {
133
+ NodeManager.dropGestureHandler(handlerTag);
134
+ } else {
135
+ HammerNodeManager.dropGestureHandler(handlerTag);
136
+ }
137
+ },
138
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
139
+ flushOperations() {},
140
+ };
@@ -26,6 +26,7 @@ import {
26
26
  import {
27
27
  GestureEvent,
28
28
  HandlerStateChangeEvent,
29
+ UserSelect,
29
30
  } from '../handlers/gestureHandlerCommon';
30
31
  import {
31
32
  PanGestureHandler,
@@ -153,6 +154,13 @@ export interface DrawerLayoutProps {
153
154
  children?:
154
155
  | React.ReactNode
155
156
  | ((openValue?: Animated.AnimatedInterpolation) => React.ReactNode);
157
+
158
+ /**
159
+ * @default 'none'
160
+ * Defines which userSelect property should be used.
161
+ * Values: 'none'|'text'|'auto'
162
+ */
163
+ userSelect?: UserSelect;
156
164
  }
157
165
 
158
166
  export type DrawerLayoutState = {
@@ -650,18 +658,15 @@ export default class DrawerLayout extends Component<
650
658
  private setPanGestureRef = (ref: PanGestureHandler) => {
651
659
  // TODO(TS): make sure it is OK taken from
652
660
  // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31065#issuecomment-596081842
653
- (this
654
- .panGestureHandler as React.MutableRefObject<PanGestureHandler>).current = ref;
661
+ (
662
+ this.panGestureHandler as React.MutableRefObject<PanGestureHandler>
663
+ ).current = ref;
655
664
  this.props.onGestureRef?.(ref);
656
665
  };
657
666
 
658
667
  render() {
659
- const {
660
- drawerPosition,
661
- drawerLockMode,
662
- edgeWidth,
663
- minSwipeDistance,
664
- } = this.props;
668
+ const { drawerPosition, drawerLockMode, edgeWidth, minSwipeDistance } =
669
+ this.props;
665
670
 
666
671
  const fromLeft = drawerPosition === 'left';
667
672
 
@@ -681,6 +686,7 @@ export default class DrawerLayout extends Component<
681
686
  return (
682
687
  <PanGestureHandler
683
688
  // @ts-ignore could be fixed in handler types
689
+ userSelect={this.props.userSelect}
684
690
  ref={this.setPanGestureRef}
685
691
  hitSlop={hitSlop}
686
692
  activeOffsetX={gestureOrientation * minSwipeDistance!}
@@ -257,10 +257,8 @@ export default class Swipeable extends Component<
257
257
  const { rightOffset = rowWidth } = state;
258
258
  const rightWidth = Math.max(0, rowWidth - rightOffset);
259
259
 
260
- const {
261
- overshootLeft = leftWidth > 0,
262
- overshootRight = rightWidth > 0,
263
- } = props;
260
+ const { overshootLeft = leftWidth > 0, overshootRight = rightWidth > 0 } =
261
+ props;
264
262
 
265
263
  const transX = Animated.add(
266
264
  rowTranslation,
@@ -63,7 +63,7 @@ export default class TouchableOpacity extends Component<
63
63
  style={[
64
64
  style,
65
65
  {
66
- opacity: (this.opacity as unknown) as number, // TODO: fix this
66
+ opacity: this.opacity as unknown as number, // TODO: fix this
67
67
  },
68
68
  ]}
69
69
  onStateChange={this.onStateChange}>
@@ -8,9 +8,9 @@ export function getShadowNodeFromRef(ref: any) {
8
8
  // load findHostInstance_DEPRECATED lazily because it may not be available before render
9
9
  if (findHostInstance_DEPRECATED === undefined) {
10
10
  try {
11
- // eslint-disable-next-line @typescript-eslint/no-var-requires
12
- findHostInstance_DEPRECATED = require('react-native/Libraries/Renderer/shims/ReactFabric')
13
- .findHostInstance_DEPRECATED;
11
+ findHostInstance_DEPRECATED =
12
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
13
+ require('react-native/Libraries/Renderer/shims/ReactFabric').findHostInstance_DEPRECATED;
14
14
  } catch (e) {
15
15
  findHostInstance_DEPRECATED = (_ref: any) => null;
16
16
  }
@@ -132,15 +132,14 @@ const stateToPropMappings = {
132
132
  [State.END]: 'onEnded',
133
133
  } as const;
134
134
 
135
- type CreateHandlerArgs<
136
- HandlerPropsT extends Record<string, unknown>
137
- > = Readonly<{
138
- name: string;
139
- allowedProps: Readonly<Extract<keyof HandlerPropsT, string>[]>;
140
- config: Readonly<Record<string, unknown>>;
141
- transformProps?: (props: HandlerPropsT) => HandlerPropsT;
142
- customNativeProps?: Readonly<string[]>;
143
- }>;
135
+ type CreateHandlerArgs<HandlerPropsT extends Record<string, unknown>> =
136
+ Readonly<{
137
+ name: string;
138
+ allowedProps: Readonly<Extract<keyof HandlerPropsT, string>[]>;
139
+ config: Readonly<Record<string, unknown>>;
140
+ transformProps?: (props: HandlerPropsT) => HandlerPropsT;
141
+ customNativeProps?: Readonly<string[]>;
142
+ }>;
144
143
 
145
144
  // TODO(TS) fix event types
146
145
  type InternalEventHandlers = {
@@ -313,7 +312,9 @@ export default function createHandler<
313
312
 
314
313
  if (Platform.OS === 'web') {
315
314
  // typecast due to dynamic resolution, attachGestureHandler should have web version signature in this branch
316
- (RNGestureHandlerModule.attachGestureHandler as typeof RNGestureHandlerModuleWeb.attachGestureHandler)(
315
+ (
316
+ RNGestureHandlerModule.attachGestureHandler as typeof RNGestureHandlerModuleWeb.attachGestureHandler
317
+ )(
317
318
  this.handlerTag,
318
319
  newViewTag,
319
320
  ActionType.JS_FUNCTION_OLD_API, // ignored on web
@@ -403,11 +404,8 @@ export default function createHandler<
403
404
  onGestureEvent?: BaseGestureHandlerProps<U>['onGestureEvent'];
404
405
  onGestureHandlerEvent?: InternalEventHandlers['onGestureHandlerEvent'];
405
406
  };
406
- const {
407
- onGestureEvent,
408
- onGestureHandlerEvent,
409
- }: OnGestureEventHandlers = this.props;
410
-
407
+ const { onGestureEvent, onGestureHandlerEvent }: OnGestureEventHandlers =
408
+ this.props;
411
409
  if (onGestureEvent && typeof onGestureEvent !== 'function') {
412
410
  // If it's not a method it should be an native Animated.event
413
411
  // object. We set it directly as the handler for the view
@@ -18,6 +18,7 @@ const commonProps = [
18
18
  'shouldCancelWhenOutside',
19
19
  'hitSlop',
20
20
  'cancelsTouchesInView',
21
+ 'userSelect',
21
22
  ] as const;
22
23
 
23
24
  const componentInteractionProps = ['waitFor', 'simultaneousHandlers'] as const;
@@ -62,6 +63,8 @@ export type HitSlop =
62
63
  | Record<'height' | 'top', number>
63
64
  | Record<'height' | 'bottom', number>;
64
65
 
66
+ export type UserSelect = 'none' | 'auto' | 'text';
67
+
65
68
  //TODO(TS) events in handlers
66
69
 
67
70
  export interface GestureEvent<ExtraEventPayloadT = Record<string, unknown>> {
@@ -90,9 +93,8 @@ export type GestureTouchEvent = {
90
93
  changedTouches: TouchData[];
91
94
  };
92
95
 
93
- export type GestureUpdateEvent<
94
- GestureEventPayloadT = Record<string, unknown>
95
- > = GestureEventPayload & GestureEventPayloadT;
96
+ export type GestureUpdateEvent<GestureEventPayloadT = Record<string, unknown>> =
97
+ GestureEventPayload & GestureEventPayloadT;
96
98
 
97
99
  export type GestureStateChangeEvent<
98
100
  GestureStateChangeEventPayloadT = Record<string, unknown>
@@ -102,6 +104,7 @@ export type CommonGestureConfig = {
102
104
  enabled?: boolean;
103
105
  shouldCancelWhenOutside?: boolean;
104
106
  hitSlop?: HitSlop;
107
+ userSelect?: UserSelect;
105
108
  };
106
109
 
107
110
  // Events payloads are types instead of interfaces due to TS limitation.
@@ -182,7 +185,9 @@ function transformIntoHandlerTags(handlerIDs: any) {
182
185
  export function findNodeHandle(
183
186
  node: null | number | React.Component<any, any> | React.ComponentClass<any>
184
187
  ): null | number | React.Component<any, any> | React.ComponentClass<any> {
185
- if (Platform.OS === 'web') return node;
188
+ if (Platform.OS === 'web') {
189
+ return node;
190
+ }
186
191
  return findNodeHandleRN(node);
187
192
  }
188
193
 
@@ -45,33 +45,50 @@ import {
45
45
 
46
46
  // events
47
47
  export type GestureHandlerGestureEventNativeEvent = GestureEventPayload;
48
- export type GestureHandlerStateChangeNativeEvent = HandlerStateChangeEventPayload;
48
+ export type GestureHandlerStateChangeNativeEvent =
49
+ HandlerStateChangeEventPayload;
49
50
  export type GestureHandlerGestureEvent = GestureEvent;
50
51
  export type GestureHandlerStateChangeEvent = HandlerStateChangeEvent;
51
52
  // gesture handlers events
52
- export type NativeViewGestureHandlerGestureEvent = GestureEvent<NativeViewGestureHandlerPayload>;
53
- export type NativeViewGestureHandlerStateChangeEvent = HandlerStateChangeEvent<NativeViewGestureHandlerPayload>;
53
+ export type NativeViewGestureHandlerGestureEvent =
54
+ GestureEvent<NativeViewGestureHandlerPayload>;
55
+ export type NativeViewGestureHandlerStateChangeEvent =
56
+ HandlerStateChangeEvent<NativeViewGestureHandlerPayload>;
54
57
 
55
- export type TapGestureHandlerGestureEvent = GestureEvent<TapGestureHandlerEventPayload>;
56
- export type TapGestureHandlerStateChangeEvent = HandlerStateChangeEvent<TapGestureHandlerEventPayload>;
58
+ export type TapGestureHandlerGestureEvent =
59
+ GestureEvent<TapGestureHandlerEventPayload>;
60
+ export type TapGestureHandlerStateChangeEvent =
61
+ HandlerStateChangeEvent<TapGestureHandlerEventPayload>;
57
62
 
58
- export type ForceTouchGestureHandlerGestureEvent = GestureEvent<ForceTouchGestureHandlerEventPayload>;
59
- export type ForceTouchGestureHandlerStateChangeEvent = HandlerStateChangeEvent<ForceTouchGestureHandlerEventPayload>;
63
+ export type ForceTouchGestureHandlerGestureEvent =
64
+ GestureEvent<ForceTouchGestureHandlerEventPayload>;
65
+ export type ForceTouchGestureHandlerStateChangeEvent =
66
+ HandlerStateChangeEvent<ForceTouchGestureHandlerEventPayload>;
60
67
 
61
- export type LongPressGestureHandlerGestureEvent = GestureEvent<LongPressGestureHandlerEventPayload>;
62
- export type LongPressGestureHandlerStateChangeEvent = HandlerStateChangeEvent<LongPressGestureHandlerEventPayload>;
68
+ export type LongPressGestureHandlerGestureEvent =
69
+ GestureEvent<LongPressGestureHandlerEventPayload>;
70
+ export type LongPressGestureHandlerStateChangeEvent =
71
+ HandlerStateChangeEvent<LongPressGestureHandlerEventPayload>;
63
72
 
64
- export type PanGestureHandlerGestureEvent = GestureEvent<PanGestureHandlerEventPayload>;
65
- export type PanGestureHandlerStateChangeEvent = HandlerStateChangeEvent<PanGestureHandlerEventPayload>;
73
+ export type PanGestureHandlerGestureEvent =
74
+ GestureEvent<PanGestureHandlerEventPayload>;
75
+ export type PanGestureHandlerStateChangeEvent =
76
+ HandlerStateChangeEvent<PanGestureHandlerEventPayload>;
66
77
 
67
- export type PinchGestureHandlerGestureEvent = GestureEvent<PinchGestureHandlerEventPayload>;
68
- export type PinchGestureHandlerStateChangeEvent = HandlerStateChangeEvent<PinchGestureHandlerEventPayload>;
78
+ export type PinchGestureHandlerGestureEvent =
79
+ GestureEvent<PinchGestureHandlerEventPayload>;
80
+ export type PinchGestureHandlerStateChangeEvent =
81
+ HandlerStateChangeEvent<PinchGestureHandlerEventPayload>;
69
82
 
70
- export type RotationGestureHandlerGestureEvent = GestureEvent<RotationGestureHandlerEventPayload>;
71
- export type RotationGestureHandlerStateChangeEvent = HandlerStateChangeEvent<RotationGestureHandlerEventPayload>;
83
+ export type RotationGestureHandlerGestureEvent =
84
+ GestureEvent<RotationGestureHandlerEventPayload>;
85
+ export type RotationGestureHandlerStateChangeEvent =
86
+ HandlerStateChangeEvent<RotationGestureHandlerEventPayload>;
72
87
 
73
- export type FlingGestureHandlerGestureEvent = GestureEvent<FlingGestureHandlerEventPayload>;
74
- export type FlingGestureHandlerStateChangeEvent = HandlerStateChangeEvent<FlingGestureHandlerEventPayload>;
88
+ export type FlingGestureHandlerGestureEvent =
89
+ GestureEvent<FlingGestureHandlerEventPayload>;
90
+ export type FlingGestureHandlerStateChangeEvent =
91
+ HandlerStateChangeEvent<FlingGestureHandlerEventPayload>;
75
92
 
76
93
  // handlers properties
77
94
  export type NativeViewGestureHandlerProperties = NativeViewGestureHandlerProps;
@@ -1,4 +1,4 @@
1
- import React, { useEffect, useRef } from 'react';
1
+ import React, { useEffect, useRef, RefObject } from 'react';
2
2
  import {
3
3
  GestureType,
4
4
  HandlerCallbacks,
@@ -18,6 +18,7 @@ import {
18
18
  GestureStateChangeEvent,
19
19
  HandlerStateChangeEvent,
20
20
  scheduleFlushOperations,
21
+ UserSelect,
21
22
  } from '../gestureHandlerCommon';
22
23
  import {
23
24
  GestureStateManager,
@@ -125,7 +126,7 @@ interface WebEventHandler {
125
126
 
126
127
  interface AttachHandlersConfig {
127
128
  preparedGesture: GestureConfigReference;
128
- gestureConfig: ComposedGesture | GestureType | undefined;
129
+ gestureConfig: ComposedGesture | GestureType;
129
130
  gesture: GestureType[];
130
131
  viewTag: number;
131
132
  webEventHandlersRef: React.RefObject<WebEventHandler>;
@@ -139,7 +140,7 @@ function attachHandlers({
139
140
  webEventHandlersRef,
140
141
  }: AttachHandlersConfig) {
141
142
  if (!preparedGesture.firstExecution) {
142
- gestureConfig?.initialize();
143
+ gestureConfig.initialize();
143
144
  } else {
144
145
  preparedGesture.firstExecution = false;
145
146
  }
@@ -147,7 +148,7 @@ function attachHandlers({
147
148
  // use setImmediate to extract handlerTags, because all refs should be initialized
148
149
  // when it's ran
149
150
  setImmediate(() => {
150
- gestureConfig?.prepare();
151
+ gestureConfig.prepare();
151
152
  });
152
153
 
153
154
  for (const handler of gesture) {
@@ -197,7 +198,9 @@ function attachHandlers({
197
198
  : ActionType.JS_FUNCTION_NEW_API;
198
199
 
199
200
  if (Platform.OS === 'web') {
200
- (RNGestureHandlerModule.attachGestureHandler as typeof RNGestureHandlerModuleWeb.attachGestureHandler)(
201
+ (
202
+ RNGestureHandlerModule.attachGestureHandler as typeof RNGestureHandlerModuleWeb.attachGestureHandler
203
+ )(
201
204
  gesture.handlerTag,
202
205
  viewTag,
203
206
  ActionType.JS_FUNCTION_OLD_API, // ignored on web
@@ -215,9 +218,9 @@ function attachHandlers({
215
218
  if (preparedGesture.animatedHandlers) {
216
219
  const isAnimatedGesture = (g: GestureType) => g.shouldUseReanimated;
217
220
 
218
- preparedGesture.animatedHandlers.value = (gesture
221
+ preparedGesture.animatedHandlers.value = gesture
219
222
  .filter(isAnimatedGesture)
220
- .map((g) => g.handlers) as unknown) as HandlerCallbacks<
223
+ .map((g) => g.handlers) as unknown as HandlerCallbacks<
221
224
  Record<string, unknown>
222
225
  >[];
223
226
  }
@@ -225,10 +228,11 @@ function attachHandlers({
225
228
 
226
229
  function updateHandlers(
227
230
  preparedGesture: GestureConfigReference,
228
- gestureConfig: ComposedGesture | GestureType | undefined,
229
- gesture: GestureType[]
231
+ gestureConfig: ComposedGesture | GestureType,
232
+ gesture: GestureType[],
233
+ mountedRef: RefObject<boolean>
230
234
  ) {
231
- gestureConfig?.prepare();
235
+ gestureConfig.prepare();
232
236
 
233
237
  for (let i = 0; i < gesture.length; i++) {
234
238
  const handler = preparedGesture.config[i];
@@ -246,6 +250,9 @@ function updateHandlers(
246
250
  // and handlerTags in BaseGesture references should be updated in the loop above (we need to wait
247
251
  // in case of external relations)
248
252
  setImmediate(() => {
253
+ if (!mountedRef.current) {
254
+ return;
255
+ }
249
256
  for (let i = 0; i < gesture.length; i++) {
250
257
  const handler = preparedGesture.config[i];
251
258
 
@@ -274,9 +281,9 @@ function updateHandlers(
274
281
  if (preparedGesture.animatedHandlers) {
275
282
  const previousHandlersValue =
276
283
  preparedGesture.animatedHandlers.value ?? [];
277
- const newHandlersValue = (preparedGesture.config
284
+ const newHandlersValue = preparedGesture.config
278
285
  .filter((g) => g.shouldUseReanimated) // ignore gestures that shouldn't run on UI
279
- .map((g) => g.handlers) as unknown) as HandlerCallbacks<
286
+ .map((g) => g.handlers) as unknown as HandlerCallbacks<
280
287
  Record<string, unknown>
281
288
  >[];
282
289
 
@@ -546,9 +553,11 @@ function validateDetectorChildren(ref: any) {
546
553
  ref._reactInternals.elementType
547
554
  : // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
548
555
  ref._reactInternalFiber.elementType;
549
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
550
- let instance = RNRenderer.findHostInstance_DEPRECATED(ref)
551
- ._internalFiberInstanceHandleDEV;
556
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
557
+ let instance =
558
+ RNRenderer.findHostInstance_DEPRECATED(
559
+ ref
560
+ )._internalFiberInstanceHandleDEV;
552
561
 
553
562
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
554
563
  while (instance && instance.elementType !== wrapType) {
@@ -565,16 +574,32 @@ function validateDetectorChildren(ref: any) {
565
574
  }
566
575
  }
567
576
 
577
+ const applyUserSelectProp = (
578
+ userSelect: UserSelect,
579
+ gesture: ComposedGesture | GestureType
580
+ ): void => {
581
+ for (const g of gesture.toGestureArray()) {
582
+ g.config.userSelect = userSelect;
583
+ }
584
+ };
585
+
568
586
  interface GestureDetectorProps {
569
- gesture?: ComposedGesture | GestureType;
587
+ gesture: ComposedGesture | GestureType;
588
+ userSelect?: UserSelect;
570
589
  children?: React.ReactNode;
571
590
  }
572
591
  export const GestureDetector = (props: GestureDetectorProps) => {
573
592
  const gestureConfig = props.gesture;
574
- const gesture = gestureConfig?.toGestureArray?.() ?? [];
593
+
594
+ if (props.userSelect) {
595
+ applyUserSelectProp(props.userSelect, gestureConfig);
596
+ }
597
+
598
+ const gesture = gestureConfig.toGestureArray();
575
599
  const useReanimatedHook = gesture.some((g) => g.shouldUseReanimated);
576
600
  const viewRef = useRef(null);
577
601
  const firstRenderRef = useRef(true);
602
+ const mountedRef = useRef(false);
578
603
  const webEventHandlersRef = useRef<WebEventHandler>({
579
604
  onGestureHandlerEvent: (e: HandlerStateChangeEvent<unknown>) => {
580
605
  onGestureHandlerEvent(e.nativeEvent);
@@ -608,7 +633,7 @@ export const GestureDetector = (props: GestureDetectorProps) => {
608
633
  preparedGesture.firstExecution || needsToReattach(preparedGesture, gesture);
609
634
 
610
635
  if (preparedGesture.firstExecution) {
611
- gestureConfig?.initialize?.();
636
+ gestureConfig.initialize();
612
637
  }
613
638
 
614
639
  if (useReanimatedHook) {
@@ -619,6 +644,7 @@ export const GestureDetector = (props: GestureDetectorProps) => {
619
644
 
620
645
  useEffect(() => {
621
646
  firstRenderRef.current = true;
647
+ mountedRef.current = true;
622
648
  const viewTag = findNodeHandle(viewRef.current) as number;
623
649
 
624
650
  validateDetectorChildren(viewRef.current);
@@ -631,6 +657,7 @@ export const GestureDetector = (props: GestureDetectorProps) => {
631
657
  });
632
658
 
633
659
  return () => {
660
+ mountedRef.current = false;
634
661
  dropHandlers(preparedGesture);
635
662
  };
636
663
  }, []);
@@ -650,7 +677,7 @@ export const GestureDetector = (props: GestureDetectorProps) => {
650
677
  webEventHandlersRef,
651
678
  });
652
679
  } else {
653
- updateHandlers(preparedGesture, gestureConfig, gesture);
680
+ updateHandlers(preparedGesture, gestureConfig, gesture, mountedRef);
654
681
  }
655
682
  } else {
656
683
  firstRenderRef.current = false;
@@ -14,7 +14,8 @@ import {
14
14
  } from './gestureStateManager';
15
15
 
16
16
  let gestureHandlerEventSubscription: EmitterSubscription | null = null;
17
- let gestureHandlerStateChangeEventSubscription: EmitterSubscription | null = null;
17
+ let gestureHandlerStateChangeEventSubscription: EmitterSubscription | null =
18
+ null;
18
19
 
19
20
  const gestureStateManagers: Map<number, GestureStateManagerType> = new Map<
20
21
  number,
@@ -202,9 +202,8 @@ export abstract class BaseGesture<
202
202
  onTouchesDown(callback: TouchEventHandlerType) {
203
203
  this.config.needsPointerData = true;
204
204
  this.handlers.onTouchesDown = callback;
205
- this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_DOWN] = this.isWorklet(
206
- callback
207
- );
205
+ this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_DOWN] =
206
+ this.isWorklet(callback);
208
207
 
209
208
  return this;
210
209
  }
@@ -212,9 +211,8 @@ export abstract class BaseGesture<
212
211
  onTouchesMove(callback: TouchEventHandlerType) {
213
212
  this.config.needsPointerData = true;
214
213
  this.handlers.onTouchesMove = callback;
215
- this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_MOVE] = this.isWorklet(
216
- callback
217
- );
214
+ this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_MOVE] =
215
+ this.isWorklet(callback);
218
216
 
219
217
  return this;
220
218
  }
@@ -222,9 +220,8 @@ export abstract class BaseGesture<
222
220
  onTouchesUp(callback: TouchEventHandlerType) {
223
221
  this.config.needsPointerData = true;
224
222
  this.handlers.onTouchesUp = callback;
225
- this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_UP] = this.isWorklet(
226
- callback
227
- );
223
+ this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_UP] =
224
+ this.isWorklet(callback);
228
225
 
229
226
  return this;
230
227
  }
@@ -232,9 +229,8 @@ export abstract class BaseGesture<
232
229
  onTouchesCancelled(callback: TouchEventHandlerType) {
233
230
  this.config.needsPointerData = true;
234
231
  this.handlers.onTouchesCancelled = callback;
235
- this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_CANCELLED] = this.isWorklet(
236
- callback
237
- );
232
+ this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_CANCELLED] =
233
+ this.isWorklet(callback);
238
234
 
239
235
  return this;
240
236
  }