react-native-gesture-handler 2.1.2 → 2.3.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 (250) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +8 -3
  3. package/RNGestureHandler.podspec +27 -3
  4. package/android/build.gradle +82 -9
  5. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt +47 -12
  6. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt +50 -14
  7. package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt +7 -4
  8. package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.kt +8 -8
  9. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.kt +6 -4
  10. package/android/lib/src/main/java/com/swmansion/gesturehandler/ScaleGestureDetector.java +558 -0
  11. package/android/src/fabric/java/com/swmansion/gesturehandler/RNGestureHandlerComponentsRegistry.java +29 -0
  12. package/android/src/fabric/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +12 -0
  13. package/android/src/main/AndroidManifest.xml +1 -1
  14. package/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt +29 -0
  15. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +29 -10
  16. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +119 -55
  17. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt +9 -4
  18. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +1 -1
  19. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt +17 -2
  20. package/android/src/main/jni/Android.mk +53 -0
  21. package/android/src/main/jni/OnLoad.cpp +9 -0
  22. package/android/src/main/jni/RNGestureHandlerComponentsRegistry.cpp +71 -0
  23. package/android/src/main/jni/RNGestureHandlerComponentsRegistry.h +34 -0
  24. package/android/src/main/jni/cpp-adapter.cpp +41 -0
  25. package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java +47 -0
  26. package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java +22 -0
  27. package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerDelegate.java +25 -0
  28. package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerInterface.java +16 -0
  29. package/android/src/paper/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +13 -0
  30. package/ios/Handlers/RNFlingHandler.m +2 -0
  31. package/ios/Handlers/RNPanHandler.m +2 -0
  32. package/ios/Handlers/RNPinchHandler.m +2 -0
  33. package/ios/Handlers/RNRotationHandler.m +2 -0
  34. package/ios/RNGestureHandler.h +3 -8
  35. package/ios/RNGestureHandler.m +2 -10
  36. package/ios/RNGestureHandlerActionType.h +8 -0
  37. package/ios/RNGestureHandlerButtonComponentView.h +17 -0
  38. package/ios/RNGestureHandlerButtonComponentView.mm +48 -0
  39. package/ios/RNGestureHandlerButtonManager.h +5 -0
  40. package/ios/RNGestureHandlerButtonManager.m +30 -0
  41. package/ios/RNGestureHandlerManager.h +2 -4
  42. package/ios/{RNGestureHandlerManager.m → RNGestureHandlerManager.mm} +92 -20
  43. package/ios/{RNGestureHandlerModule.m → RNGestureHandlerModule.mm} +91 -36
  44. package/ios/RNGestureHandlerRegistry.h +1 -2
  45. package/ios/RNGestureHandlerRegistry.m +2 -11
  46. package/ios/RNGestureHandlerRootViewComponentView.mm +21 -0
  47. package/lib/commonjs/ActionType.js +15 -0
  48. package/lib/commonjs/ActionType.js.map +1 -0
  49. package/lib/commonjs/GestureHandlerRootView.android.js +6 -6
  50. package/lib/commonjs/GestureHandlerRootView.android.js.map +1 -1
  51. package/lib/commonjs/GestureHandlerRootView.js +2 -3
  52. package/lib/commonjs/GestureHandlerRootView.js.map +1 -1
  53. package/lib/commonjs/RNGestureHandlerModule.js +4 -2
  54. package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
  55. package/lib/commonjs/RNGestureHandlerModule.web.js +1 -1
  56. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
  57. package/lib/commonjs/components/DrawerLayout.js +2 -2
  58. package/lib/commonjs/components/DrawerLayout.js.map +1 -1
  59. package/lib/commonjs/components/GestureHandlerButton.js +5 -2
  60. package/lib/commonjs/components/GestureHandlerButton.js.map +1 -1
  61. package/lib/commonjs/components/Swipeable.js +22 -20
  62. package/lib/commonjs/components/Swipeable.js.map +1 -1
  63. package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js +21 -0
  64. package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -0
  65. package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js +21 -0
  66. package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -0
  67. package/lib/commonjs/getShadowNodeFromRef.js +24 -0
  68. package/lib/commonjs/getShadowNodeFromRef.js.map +1 -0
  69. package/lib/commonjs/getShadowNodeFromRef.web.js +15 -0
  70. package/lib/commonjs/getShadowNodeFromRef.web.js.map +1 -0
  71. package/lib/commonjs/handlers/FlingGestureHandler.js +4 -2
  72. package/lib/commonjs/handlers/FlingGestureHandler.js.map +1 -1
  73. package/lib/commonjs/handlers/ForceTouchGestureHandler.js +8 -4
  74. package/lib/commonjs/handlers/ForceTouchGestureHandler.js.map +1 -1
  75. package/lib/commonjs/handlers/LongPressGestureHandler.js +4 -2
  76. package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -1
  77. package/lib/commonjs/handlers/NativeViewGestureHandler.js +4 -2
  78. package/lib/commonjs/handlers/NativeViewGestureHandler.js.map +1 -1
  79. package/lib/commonjs/handlers/PanGestureHandler.js +4 -2
  80. package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -1
  81. package/lib/commonjs/handlers/PinchGestureHandler.js +4 -2
  82. package/lib/commonjs/handlers/PinchGestureHandler.js.map +1 -1
  83. package/lib/commonjs/handlers/RotationGestureHandler.js +4 -2
  84. package/lib/commonjs/handlers/RotationGestureHandler.js.map +1 -1
  85. package/lib/commonjs/handlers/TapGestureHandler.js +4 -2
  86. package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -1
  87. package/lib/commonjs/handlers/createHandler.js +72 -8
  88. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  89. package/lib/commonjs/handlers/createNativeWrapper.js +6 -2
  90. package/lib/commonjs/handlers/createNativeWrapper.js.map +1 -1
  91. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
  92. package/lib/commonjs/handlers/gestures/GestureDetector.js +84 -32
  93. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
  94. package/lib/commonjs/handlers/gestures/eventReceiver.js +25 -8
  95. package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
  96. package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -1
  97. package/lib/commonjs/handlers/gestures/gesture.js +16 -1
  98. package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
  99. package/lib/commonjs/handlers/gestures/gestureStateManager.js +7 -4
  100. package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -1
  101. package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -1
  102. package/lib/commonjs/handlers/gestures/pinchGesture.js.map +1 -1
  103. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +4 -1
  104. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -1
  105. package/lib/commonjs/handlers/handlersRegistry.js +42 -6
  106. package/lib/commonjs/handlers/handlersRegistry.js.map +1 -1
  107. package/lib/commonjs/index.js +14 -106
  108. package/lib/commonjs/index.js.map +1 -1
  109. package/lib/commonjs/init.js +10 -0
  110. package/lib/commonjs/init.js.map +1 -1
  111. package/lib/commonjs/jestUtils.js +375 -0
  112. package/lib/commonjs/jestUtils.js.map +1 -0
  113. package/lib/commonjs/utils.js +38 -0
  114. package/lib/commonjs/utils.js.map +1 -1
  115. package/lib/module/ActionType.js +7 -0
  116. package/lib/module/ActionType.js.map +1 -0
  117. package/lib/module/GestureHandlerRootView.android.js +5 -6
  118. package/lib/module/GestureHandlerRootView.android.js.map +1 -1
  119. package/lib/module/GestureHandlerRootView.js +2 -3
  120. package/lib/module/GestureHandlerRootView.js.map +1 -1
  121. package/lib/module/RNGestureHandlerModule.js +3 -2
  122. package/lib/module/RNGestureHandlerModule.js.map +1 -1
  123. package/lib/module/RNGestureHandlerModule.web.js +1 -1
  124. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  125. package/lib/module/components/DrawerLayout.js +2 -2
  126. package/lib/module/components/DrawerLayout.js.map +1 -1
  127. package/lib/module/components/GestureHandlerButton.js +4 -2
  128. package/lib/module/components/GestureHandlerButton.js.map +1 -1
  129. package/lib/module/components/Swipeable.js +22 -20
  130. package/lib/module/components/Swipeable.js.map +1 -1
  131. package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js +9 -0
  132. package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -0
  133. package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js +9 -0
  134. package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -0
  135. package/lib/module/getShadowNodeFromRef.js +17 -0
  136. package/lib/module/getShadowNodeFromRef.js.map +1 -0
  137. package/lib/module/getShadowNodeFromRef.web.js +8 -0
  138. package/lib/module/getShadowNodeFromRef.web.js.map +1 -0
  139. package/lib/module/handlers/FlingGestureHandler.js +2 -1
  140. package/lib/module/handlers/FlingGestureHandler.js.map +1 -1
  141. package/lib/module/handlers/ForceTouchGestureHandler.js +5 -3
  142. package/lib/module/handlers/ForceTouchGestureHandler.js.map +1 -1
  143. package/lib/module/handlers/LongPressGestureHandler.js +2 -1
  144. package/lib/module/handlers/LongPressGestureHandler.js.map +1 -1
  145. package/lib/module/handlers/NativeViewGestureHandler.js +2 -1
  146. package/lib/module/handlers/NativeViewGestureHandler.js.map +1 -1
  147. package/lib/module/handlers/PanGestureHandler.js +2 -1
  148. package/lib/module/handlers/PanGestureHandler.js.map +1 -1
  149. package/lib/module/handlers/PinchGestureHandler.js +2 -1
  150. package/lib/module/handlers/PinchGestureHandler.js.map +1 -1
  151. package/lib/module/handlers/RotationGestureHandler.js +2 -1
  152. package/lib/module/handlers/RotationGestureHandler.js.map +1 -1
  153. package/lib/module/handlers/TapGestureHandler.js +2 -1
  154. package/lib/module/handlers/TapGestureHandler.js.map +1 -1
  155. package/lib/module/handlers/createHandler.js +72 -9
  156. package/lib/module/handlers/createHandler.js.map +1 -1
  157. package/lib/module/handlers/createNativeWrapper.js +6 -2
  158. package/lib/module/handlers/createNativeWrapper.js.map +1 -1
  159. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
  160. package/lib/module/handlers/gestures/GestureDetector.js +79 -32
  161. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
  162. package/lib/module/handlers/gestures/eventReceiver.js +25 -7
  163. package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
  164. package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -1
  165. package/lib/module/handlers/gestures/gesture.js +16 -1
  166. package/lib/module/handlers/gestures/gesture.js.map +1 -1
  167. package/lib/module/handlers/gestures/gestureStateManager.js +6 -4
  168. package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -1
  169. package/lib/module/handlers/gestures/panGesture.js.map +1 -1
  170. package/lib/module/handlers/gestures/pinchGesture.js.map +1 -1
  171. package/lib/module/handlers/gestures/reanimatedWrapper.js +2 -1
  172. package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -1
  173. package/lib/module/handlers/handlersRegistry.js +34 -6
  174. package/lib/module/handlers/handlersRegistry.js.map +1 -1
  175. package/lib/module/index.js +1 -11
  176. package/lib/module/index.js.map +1 -1
  177. package/lib/module/init.js +6 -0
  178. package/lib/module/init.js.map +1 -1
  179. package/lib/module/jestUtils.js +350 -0
  180. package/lib/module/jestUtils.js.map +1 -0
  181. package/lib/module/utils.js +28 -0
  182. package/lib/module/utils.js.map +1 -1
  183. package/lib/typescript/ActionType.d.ts +7 -0
  184. package/lib/typescript/GestureHandlerRootView.android.d.ts +5 -2
  185. package/lib/typescript/GestureHandlerRootView.d.ts +1 -1
  186. package/lib/typescript/RNGestureHandlerModule.d.ts +3 -1
  187. package/lib/typescript/RNGestureHandlerModule.web.d.ts +2 -1
  188. package/lib/typescript/components/GestureHandlerButton.d.ts +2 -2
  189. package/lib/typescript/components/Swipeable.d.ts +12 -4
  190. package/lib/typescript/getShadowNodeFromRef.d.ts +1 -0
  191. package/lib/typescript/getShadowNodeFromRef.web.d.ts +1 -0
  192. package/lib/typescript/handlers/FlingGestureHandler.d.ts +1 -0
  193. package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +2 -1
  194. package/lib/typescript/handlers/LongPressGestureHandler.d.ts +3 -2
  195. package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +1 -0
  196. package/lib/typescript/handlers/PanGestureHandler.d.ts +3 -2
  197. package/lib/typescript/handlers/PinchGestureHandler.d.ts +1 -0
  198. package/lib/typescript/handlers/RotationGestureHandler.d.ts +1 -0
  199. package/lib/typescript/handlers/TapGestureHandler.d.ts +1 -0
  200. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +2 -4
  201. package/lib/typescript/handlers/gestures/GestureDetector.d.ts +4 -1
  202. package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +1 -2
  203. package/lib/typescript/handlers/gestures/gesture.d.ts +5 -0
  204. package/lib/typescript/handlers/gestures/panGesture.d.ts +1 -2
  205. package/lib/typescript/handlers/gestures/pinchGesture.d.ts +1 -2
  206. package/lib/typescript/handlers/handlersRegistry.d.ts +11 -3
  207. package/lib/typescript/index.d.ts +15 -11
  208. package/lib/typescript/jestUtils.d.ts +28 -0
  209. package/lib/typescript/utils.d.ts +6 -0
  210. package/lib/typescript/web/constants.d.ts +0 -1
  211. package/package.json +39 -16
  212. package/src/ActionType.ts +9 -0
  213. package/src/GestureHandlerRootView.android.tsx +14 -14
  214. package/src/GestureHandlerRootView.tsx +4 -4
  215. package/src/RNGestureHandlerModule.ts +11 -6
  216. package/src/RNGestureHandlerModule.web.ts +2 -1
  217. package/src/components/DrawerLayout.tsx +8 -2
  218. package/src/components/GestureHandlerButton.tsx +7 -4
  219. package/src/components/Swipeable.tsx +28 -22
  220. package/src/fabric/RNGestureHandlerButtonNativeComponent.js +27 -0
  221. package/src/fabric/RNGestureHandlerRootViewNativeComponent.js +19 -0
  222. package/src/getShadowNodeFromRef.ts +19 -0
  223. package/src/getShadowNodeFromRef.web.ts +7 -0
  224. package/src/handlers/FlingGestureHandler.ts +3 -1
  225. package/src/handlers/ForceTouchGestureHandler.ts +8 -2
  226. package/src/handlers/LongPressGestureHandler.ts +5 -3
  227. package/src/handlers/NativeViewGestureHandler.ts +3 -1
  228. package/src/handlers/PanGestureHandler.ts +5 -3
  229. package/src/handlers/PinchGestureHandler.ts +3 -1
  230. package/src/handlers/RotationGestureHandler.ts +3 -1
  231. package/src/handlers/TapGestureHandler.ts +3 -1
  232. package/src/handlers/createHandler.ts +80 -5
  233. package/src/handlers/createNativeWrapper.tsx +7 -1
  234. package/src/handlers/gestureHandlerCommon.ts +2 -5
  235. package/src/handlers/gestures/GestureDetector.tsx +110 -37
  236. package/src/handlers/gestures/eventReceiver.ts +23 -19
  237. package/src/handlers/gestures/forceTouchGesture.ts +1 -1
  238. package/src/handlers/gestures/gesture.ts +21 -1
  239. package/src/handlers/gestures/gestureStateManager.ts +9 -12
  240. package/src/handlers/gestures/panGesture.ts +1 -1
  241. package/src/handlers/gestures/pinchGesture.ts +1 -1
  242. package/src/handlers/gestures/reanimatedWrapper.ts +4 -1
  243. package/src/handlers/handlersRegistry.ts +44 -6
  244. package/src/index.ts +15 -11
  245. package/src/init.ts +6 -0
  246. package/src/jestUtils.ts +506 -0
  247. package/src/utils.ts +38 -0
  248. package/android/lib/src/main/java/com/swmansion/gesturehandler/BaseGestureHandlerInteractionController.kt +0 -18
  249. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistryImpl.kt +0 -21
  250. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerPackage.kt +0 -17
@@ -24,5 +24,6 @@ export declare type RotationGestureHandlerEventPayload = {
24
24
  };
25
25
  export interface RotationGestureHandlerProps extends BaseGestureHandlerProps<RotationGestureHandlerEventPayload> {
26
26
  }
27
+ export declare const rotationHandlerName = "RotationGestureHandler";
27
28
  export declare type RotationGestureHandler = typeof RotationGestureHandler;
28
29
  export declare const RotationGestureHandler: import("react").ComponentType<RotationGestureHandlerProps & import("react").RefAttributes<any>>;
@@ -52,5 +52,6 @@ export interface TapGestureConfig {
52
52
  }
53
53
  export interface TapGestureHandlerProps extends BaseGestureHandlerProps<TapGestureHandlerEventPayload>, TapGestureConfig {
54
54
  }
55
+ export declare const tapHandlerName = "TapGestureHandler";
55
56
  export declare type TapGestureHandler = typeof TapGestureHandler;
56
57
  export declare const TapGestureHandler: import("react").ComponentType<TapGestureHandlerProps & import("react").RefAttributes<any>>;
@@ -9,10 +9,7 @@ export interface GestureEventPayload {
9
9
  numberOfPointers: number;
10
10
  state: ValueOf<typeof State>;
11
11
  }
12
- export interface HandlerStateChangeEventPayload {
13
- handlerTag: number;
14
- numberOfPointers: number;
15
- state: ValueOf<typeof State>;
12
+ export interface HandlerStateChangeEventPayload extends GestureEventPayload {
16
13
  oldState: ValueOf<typeof State>;
17
14
  }
18
15
  export declare type HitSlop = number | Partial<Record<'left' | 'right' | 'top' | 'bottom' | 'vertical' | 'horizontal', number>> | Record<'width' | 'left', number> | Record<'width' | 'right', number> | Record<'height' | 'top', number> | Record<'height' | 'bottom', number>;
@@ -48,6 +45,7 @@ export declare type BaseGestureHandlerProps<ExtraEventPayloadT extends Record<st
48
45
  id?: string;
49
46
  waitFor?: React.Ref<unknown> | React.Ref<unknown>[];
50
47
  simultaneousHandlers?: React.Ref<unknown> | React.Ref<unknown>[];
48
+ testID?: string;
51
49
  onBegan?: (event: HandlerStateChangeEvent) => void;
52
50
  onFailed?: (event: HandlerStateChangeEvent) => void;
53
51
  onCancelled?: (event: HandlerStateChangeEvent) => void;
@@ -2,12 +2,15 @@ import React from 'react';
2
2
  import { GestureType, HandlerCallbacks } from './gesture';
3
3
  import { SharedValue } from './reanimatedWrapper';
4
4
  import { ComposedGesture } from './gestureComposition';
5
+ declare global {
6
+ function isFormsStackingContext(node: unknown): boolean | null;
7
+ }
5
8
  export declare type GestureConfigReference = {
6
9
  config: GestureType[];
7
10
  animatedEventHandler: unknown;
8
11
  animatedHandlers: SharedValue<HandlerCallbacks<Record<string, unknown>>[] | null> | null;
9
12
  firstExecution: boolean;
10
- useAnimated: boolean;
13
+ useReanimatedHook: boolean;
11
14
  };
12
15
  interface GestureDetectorProps {
13
16
  gesture?: ComposedGesture | GestureType;
@@ -1,7 +1,7 @@
1
1
  import { BaseGestureConfig, ContinousBaseGesture } from './gesture';
2
2
  import { ForceTouchGestureConfig, ForceTouchGestureHandlerEventPayload } from '../ForceTouchGestureHandler';
3
3
  import { GestureUpdateEvent } from '../gestureHandlerCommon';
4
- declare type ForceTouchGestureChangeEventPayload = {
4
+ export declare type ForceTouchGestureChangeEventPayload = {
5
5
  forceChange: number;
6
6
  };
7
7
  export declare class ForceTouchGesture extends ContinousBaseGesture<ForceTouchGestureHandlerEventPayload, ForceTouchGestureChangeEventPayload> {
@@ -13,4 +13,3 @@ export declare class ForceTouchGesture extends ContinousBaseGesture<ForceTouchGe
13
13
  onChange(callback: (event: GestureUpdateEvent<GestureUpdateEvent<ForceTouchGestureHandlerEventPayload & ForceTouchGestureChangeEventPayload>>) => void): this;
14
14
  }
15
15
  export declare type ForceTouchGestureType = InstanceType<typeof ForceTouchGesture>;
16
- export {};
@@ -16,6 +16,8 @@ export interface BaseGestureConfig extends CommonGestureConfig, Record<string, u
16
16
  simultaneousWith?: GestureRef[];
17
17
  needsPointerData?: boolean;
18
18
  manualActivation?: boolean;
19
+ runOnJS?: boolean;
20
+ testId?: string;
19
21
  }
20
22
  declare type TouchEventHandlerType = (event: GestureTouchEvent, stateManager: GestureStateManagerType) => void;
21
23
  export declare type HandlerCallbacks<EventPayloadT extends Record<string, unknown>> = {
@@ -83,11 +85,14 @@ export declare abstract class BaseGesture<EventPayloadT extends Record<string, u
83
85
  enabled(enabled: boolean): this;
84
86
  shouldCancelWhenOutside(value: boolean): this;
85
87
  hitSlop(hitSlop: HitSlop): this;
88
+ runOnJS(runOnJS: boolean): this;
86
89
  simultaneousWithExternalGesture(...gestures: Exclude<GestureRef, number>[]): this;
87
90
  requireExternalGestureToFail(...gestures: Exclude<GestureRef, number>[]): this;
91
+ withTestId(id: string): this;
88
92
  initialize(): void;
89
93
  toGestureArray(): GestureType[];
90
94
  prepare(): void;
95
+ get shouldUseReanimated(): boolean;
91
96
  }
92
97
  export declare abstract class ContinousBaseGesture<EventPayloadT extends Record<string, unknown>, EventChangePayloadT extends Record<string, unknown>> extends BaseGesture<EventPayloadT> {
93
98
  onUpdate(callback: (event: GestureUpdateEvent<EventPayloadT>) => void): this;
@@ -1,7 +1,7 @@
1
1
  import { BaseGestureConfig, ContinousBaseGesture } from './gesture';
2
2
  import { GestureUpdateEvent } from '../gestureHandlerCommon';
3
3
  import { PanGestureConfig, PanGestureHandlerEventPayload } from '../PanGestureHandler';
4
- declare type PanGestureChangeEventPayload = {
4
+ export declare type PanGestureChangeEventPayload = {
5
5
  changeX: number;
6
6
  changeY: number;
7
7
  };
@@ -23,4 +23,3 @@ export declare class PanGesture extends ContinousBaseGesture<PanGestureHandlerEv
23
23
  onChange(callback: (event: GestureUpdateEvent<PanGestureHandlerEventPayload & PanGestureChangeEventPayload>) => void): this;
24
24
  }
25
25
  export declare type PanGestureType = InstanceType<typeof PanGesture>;
26
- export {};
@@ -1,7 +1,7 @@
1
1
  import { ContinousBaseGesture } from './gesture';
2
2
  import { PinchGestureHandlerEventPayload } from '../PinchGestureHandler';
3
3
  import { GestureUpdateEvent } from '../gestureHandlerCommon';
4
- declare type PinchGestureChangeEventPayload = {
4
+ export declare type PinchGestureChangeEventPayload = {
5
5
  scaleChange: number;
6
6
  };
7
7
  export declare class PinchGesture extends ContinousBaseGesture<PinchGestureHandlerEventPayload, PinchGestureChangeEventPayload> {
@@ -9,4 +9,3 @@ export declare class PinchGesture extends ContinousBaseGesture<PinchGestureHandl
9
9
  onChange(callback: (event: GestureUpdateEvent<PinchGestureHandlerEventPayload & PinchGestureChangeEventPayload>) => void): this;
10
10
  }
11
11
  export declare type PinchGestureType = InstanceType<typeof PinchGesture>;
12
- export {};
@@ -1,6 +1,14 @@
1
1
  import { GestureType } from './gestures/gesture';
2
+ import { GestureEvent, HandlerStateChangeEvent } from './gestureHandlerCommon';
2
3
  export declare const handlerIDToTag: Record<string, number>;
3
4
  export declare function getNextHandlerTag(): number;
4
- export declare function registerHandler(handlerTag: number, handler: GestureType): void;
5
- export declare function unregisterHandler(handlerTag: number): void;
6
- export declare function findHandler(handlerTag: number): import("./gestures/gesture").BaseGesture<Record<string, unknown>> | import("./gestures/gesture").BaseGesture<Record<string, never>> | import("./gestures/gesture").BaseGesture<import("./TapGestureHandler").TapGestureHandlerEventPayload> | import("./gestures/gesture").BaseGesture<import("./PanGestureHandler").PanGestureHandlerEventPayload> | import("./gestures/gesture").BaseGesture<import("./LongPressGestureHandler").LongPressGestureHandlerEventPayload> | import("./gestures/gesture").BaseGesture<import("./RotationGestureHandler").RotationGestureHandlerEventPayload> | import("./gestures/gesture").BaseGesture<import("./PinchGestureHandler").PinchGestureHandlerEventPayload> | import("./gestures/gesture").BaseGesture<import("./FlingGestureHandler").FlingGestureHandlerEventPayload> | import("./gestures/gesture").BaseGesture<import("./ForceTouchGestureHandler").ForceTouchGestureHandlerEventPayload> | import("./gestures/gesture").BaseGesture<import("./NativeViewGestureHandler").NativeViewGestureHandlerPayload> | undefined;
5
+ export declare function registerHandler(handlerTag: number, handler: GestureType, testID?: string): void;
6
+ export declare function registerOldGestureHandler(handlerTag: number, handler: GestureHandlerCallbacks): void;
7
+ export declare function unregisterHandler(handlerTag: number, testID?: string): void;
8
+ export declare function findHandler(handlerTag: number): GestureType | undefined;
9
+ export declare function findOldGestureHandler(handlerTag: number): GestureHandlerCallbacks | undefined;
10
+ export declare function findHandlerByTestID(testID: string): import("./gestures/gesture").BaseGesture<Record<string, unknown>> | import("./gestures/gesture").BaseGesture<Record<string, never>> | import("./gestures/gesture").BaseGesture<import("./TapGestureHandler").TapGestureHandlerEventPayload> | import("./gestures/gesture").BaseGesture<import("./PanGestureHandler").PanGestureHandlerEventPayload> | import("./gestures/gesture").BaseGesture<import("./LongPressGestureHandler").LongPressGestureHandlerEventPayload> | import("./gestures/gesture").BaseGesture<import("./RotationGestureHandler").RotationGestureHandlerEventPayload> | import("./gestures/gesture").BaseGesture<import("./PinchGestureHandler").PinchGestureHandlerEventPayload> | import("./gestures/gesture").BaseGesture<import("./ForceTouchGestureHandler").ForceTouchGestureHandlerEventPayload> | import("./gestures/gesture").BaseGesture<import("./NativeViewGestureHandler").NativeViewGestureHandlerPayload> | null;
11
+ export interface GestureHandlerCallbacks {
12
+ onGestureEvent: (event: GestureEvent<any>) => void;
13
+ onGestureStateChange: (event: HandlerStateChangeEvent<any>) => void;
14
+ }
@@ -1,14 +1,18 @@
1
1
  export { Directions } from './Directions';
2
2
  export { State } from './State';
3
+ export { getByGestureTestId, fireGestureHandler } from './jestUtils';
3
4
  export { default as gestureHandlerRootHOC } from './gestureHandlerRootHOC';
4
5
  export { default as GestureHandlerRootView } from './GestureHandlerRootView';
5
6
  export type { GestureEvent, HandlerStateChangeEvent, GestureEventPayload, HandlerStateChangeEventPayload, GestureTouchEvent, TouchData, GestureUpdateEvent, GestureStateChangeEvent, } from './handlers/gestureHandlerCommon';
6
7
  export type { GestureType } from './handlers/gestures/gesture';
7
8
  export type { TapGestureHandlerEventPayload, TapGestureHandlerProps, } from './handlers/TapGestureHandler';
8
9
  export type { ForceTouchGestureHandlerEventPayload, ForceTouchGestureHandlerProps, } from './handlers/ForceTouchGestureHandler';
10
+ export type { ForceTouchGestureChangeEventPayload } from './handlers/gestures/forceTouchGesture';
9
11
  export type { LongPressGestureHandlerEventPayload, LongPressGestureHandlerProps, } from './handlers/LongPressGestureHandler';
10
12
  export type { PanGestureHandlerEventPayload, PanGestureHandlerProps, } from './handlers/PanGestureHandler';
13
+ export type { PanGestureChangeEventPayload } from './handlers/gestures/panGesture';
11
14
  export type { PinchGestureHandlerEventPayload, PinchGestureHandlerProps, } from './handlers/PinchGestureHandler';
15
+ export type { PinchGestureChangeEventPayload } from './handlers/gestures/pinchGesture';
12
16
  export type { RotationGestureHandlerEventPayload, RotationGestureHandlerProps, } from './handlers/RotationGestureHandler';
13
17
  export type { FlingGestureHandlerEventPayload, FlingGestureHandlerProps, } from './handlers/FlingGestureHandler';
14
18
  export { TapGestureHandler } from './handlers/TapGestureHandler';
@@ -22,17 +26,17 @@ export { default as createNativeWrapper } from './handlers/createNativeWrapper';
22
26
  export type { NativeViewGestureHandlerPayload, NativeViewGestureHandlerProps, } from './handlers/NativeViewGestureHandler';
23
27
  export { GestureDetector } from './handlers/gestures/GestureDetector';
24
28
  export { GestureObjects as Gesture } from './handlers/gestures/gestureObjects';
25
- export { TapGestureType as TapGesture } from './handlers/gestures/tapGesture';
26
- export { PanGestureType as PanGesture } from './handlers/gestures/panGesture';
27
- export { FlingGestureType as FlingGesture } from './handlers/gestures/flingGesture';
28
- export { LongPressGestureType as LongPressGesture } from './handlers/gestures/longPressGesture';
29
- export { PinchGestureType as PinchGesture } from './handlers/gestures/pinchGesture';
30
- export { RotationGestureType as RotationGesture } from './handlers/gestures/rotationGesture';
31
- export { ForceTouchGestureType as ForceTouchGesture } from './handlers/gestures/forceTouchGesture';
32
- export { NativeGestureType as NativeGesture } from './handlers/gestures/nativeGesture';
33
- export { ManualGestureType as ManualGesture } from './handlers/gestures/manualGesture';
34
- export { ComposedGestureType as ComposedGesture, RaceGestureType as RaceGesture, SimultaneousGestureType as SimultaneousGesture, ExclusiveGestureType as ExclusiveGesture, } from './handlers/gestures/gestureComposition';
35
- export { GestureStateManagerType as GestureStateManager } from './handlers/gestures/gestureStateManager';
29
+ export type { TapGestureType as TapGesture } from './handlers/gestures/tapGesture';
30
+ export type { PanGestureType as PanGesture } from './handlers/gestures/panGesture';
31
+ export type { FlingGestureType as FlingGesture } from './handlers/gestures/flingGesture';
32
+ export type { LongPressGestureType as LongPressGesture } from './handlers/gestures/longPressGesture';
33
+ export type { PinchGestureType as PinchGesture } from './handlers/gestures/pinchGesture';
34
+ export type { RotationGestureType as RotationGesture } from './handlers/gestures/rotationGesture';
35
+ export type { ForceTouchGestureType as ForceTouchGesture } from './handlers/gestures/forceTouchGesture';
36
+ export type { NativeGestureType as NativeGesture } from './handlers/gestures/nativeGesture';
37
+ export type { ManualGestureType as ManualGesture } from './handlers/gestures/manualGesture';
38
+ export type { ComposedGestureType as ComposedGesture, RaceGestureType as RaceGesture, SimultaneousGestureType as SimultaneousGesture, ExclusiveGestureType as ExclusiveGesture, } from './handlers/gestures/gestureComposition';
39
+ export type { GestureStateManagerType as GestureStateManager } from './handlers/gestures/gestureStateManager';
36
40
  export { NativeViewGestureHandler } from './handlers/NativeViewGestureHandler';
37
41
  export type { RawButtonProps, BaseButtonProps, RectButtonProps, BorderlessButtonProps, } from './components/GestureButtons';
38
42
  export { RawButton, BaseButton, RectButton, BorderlessButton, } from './components/GestureButtons';
@@ -0,0 +1,28 @@
1
+ import { ReactTestInstance } from 'react-test-renderer';
2
+ import { FlingGestureHandler } from './handlers/FlingGestureHandler';
3
+ import { ForceTouchGestureHandler, ForceTouchGestureHandlerEventPayload } from './handlers/ForceTouchGestureHandler';
4
+ import { BaseGestureHandlerProps, GestureEvent, HandlerStateChangeEvent } from './handlers/gestureHandlerCommon';
5
+ import { FlingGesture } from './handlers/gestures/flingGesture';
6
+ import { ForceTouchGesture } from './handlers/gestures/forceTouchGesture';
7
+ import { BaseGesture, GestureType } from './handlers/gestures/gesture';
8
+ import { LongPressGesture } from './handlers/gestures/longPressGesture';
9
+ import { NativeGesture } from './handlers/gestures/nativeGesture';
10
+ import { PanGesture } from './handlers/gestures/panGesture';
11
+ import { PinchGesture } from './handlers/gestures/pinchGesture';
12
+ import { RotationGesture } from './handlers/gestures/rotationGesture';
13
+ import { TapGesture } from './handlers/gestures/tapGesture';
14
+ import { LongPressGestureHandler, LongPressGestureHandlerEventPayload } from './handlers/LongPressGestureHandler';
15
+ import { NativeViewGestureHandler, NativeViewGestureHandlerPayload } from './handlers/NativeViewGestureHandler';
16
+ import { PanGestureHandler, PanGestureHandlerEventPayload } from './handlers/PanGestureHandler';
17
+ import { PinchGestureHandler, PinchGestureHandlerEventPayload } from './handlers/PinchGestureHandler';
18
+ import { RotationGestureHandler, RotationGestureHandlerEventPayload } from './handlers/RotationGestureHandler';
19
+ import { TapGestureHandler, TapGestureHandlerEventPayload } from './handlers/TapGestureHandler';
20
+ declare type GestureHandlerTestEvent<TEventPayload extends Record<string, unknown> = Record<string, unknown>> = (GestureEvent<TEventPayload> | HandlerStateChangeEvent<TEventPayload>)['nativeEvent'];
21
+ declare type AllGestures = TapGesture | PanGesture | LongPressGesture | RotationGesture | PinchGesture | FlingGesture | ForceTouchGesture | NativeGesture;
22
+ declare type AllHandlers = TapGestureHandler | PanGestureHandler | LongPressGestureHandler | RotationGestureHandler | PinchGestureHandler | FlingGestureHandler | ForceTouchGestureHandler | NativeViewGestureHandler;
23
+ declare type ClassComponentConstructor<P> = new (props: P) => React.Component<P, any, any>;
24
+ declare type ExtractPayloadFromProps<T> = T extends BaseGestureHandlerProps<infer TPayload> ? TPayload : never;
25
+ declare type ExtractConfig<T> = T extends BaseGesture<infer TGesturePayload> ? TGesturePayload : T extends ClassComponentConstructor<infer THandlerProps> ? ExtractPayloadFromProps<THandlerProps> : Record<string, unknown>;
26
+ export declare function fireGestureHandler<THandler extends AllGestures | AllHandlers>(componentOrGesture: ReactTestInstance | GestureType, eventList?: Partial<GestureHandlerTestEvent<ExtractConfig<THandler>>>[]): void;
27
+ export declare function getByGestureTestId(testID: string): BaseGesture<Record<string, unknown>> | BaseGesture<Record<string, never>> | BaseGesture<TapGestureHandlerEventPayload> | BaseGesture<PanGestureHandlerEventPayload> | BaseGesture<LongPressGestureHandlerEventPayload> | BaseGesture<RotationGestureHandlerEventPayload> | BaseGesture<PinchGestureHandlerEventPayload> | BaseGesture<ForceTouchGestureHandlerEventPayload> | BaseGesture<NativeViewGestureHandlerPayload>;
28
+ export {};
@@ -1 +1,7 @@
1
1
  export declare function toArray<T>(object: T | T[]): T[];
2
+ export declare type withPrevAndCurrentMapFn<T, Transformed> = (previous: Transformed | null, current: T) => Transformed;
3
+ export declare function withPrevAndCurrent<T, Transformed>(array: T[], mapFn: withPrevAndCurrentMapFn<T, Transformed>): Transformed[];
4
+ export declare function hasProperty(object: object, key: string): boolean;
5
+ export declare function isJestEnv(): boolean;
6
+ export declare function tagMessage(msg: string): string;
7
+ export declare function isFabric(): boolean;
@@ -1,4 +1,3 @@
1
- import Hammer from '@egjs/hammerjs';
2
1
  export declare const CONTENT_TOUCHES_DELAY = 240;
3
2
  export declare const CONTENT_TOUCHES_QUICK_TAP_END_DELAY = 50;
4
3
  export declare const MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD = 0.1;
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "react-native-gesture-handler",
3
- "version": "2.1.2",
3
+ "version": "2.3.0",
4
4
  "description": "Experimental implementation of a new declarative API for gesture handling in react-native",
5
5
  "scripts": {
6
6
  "prepare": "bob build",
7
7
  "test": "jest",
8
- "build": "yarn tsc",
8
+ "build": "yarn tsc -p tsconfig.build.json",
9
9
  "precommit": "lint-staged",
10
10
  "release": "npm login && release-it",
11
11
  "ts-check": "yarn tsc --noEmit",
@@ -25,6 +25,9 @@
25
25
  "android/gradle.properties",
26
26
  "android/src/main/AndroidManifest.xml",
27
27
  "android/src/main/java/",
28
+ "android/src/main/jni/",
29
+ "android/src/fabric/java",
30
+ "android/src/paper/java",
28
31
  "android/lib/build.gradle",
29
32
  "android/lib/src/main/java/",
30
33
  "android/common/src/main/java/",
@@ -57,7 +60,7 @@
57
60
  "prop-types": "^15.7.2"
58
61
  },
59
62
  "jest": {
60
- "preset": "jest-react-native",
63
+ "preset": "react-native",
61
64
  "modulePathIgnorePatterns": [
62
65
  "<rootDir>/lib/"
63
66
  ]
@@ -68,36 +71,41 @@
68
71
  "@babel/preset-env": "^7.12.11",
69
72
  "@babel/preset-typescript": "^7.12.7",
70
73
  "@babel/runtime": "^7.12.5",
74
+ "@testing-library/jest-native": "^4.0.4",
75
+ "@testing-library/react-native": "^9.0.0",
71
76
  "@types/hammerjs": "^2.0.38",
72
77
  "@types/hoist-non-react-statics": "^3.3.1",
73
- "@types/jest": "^26.0.19",
78
+ "@types/jest": "^27.0.3",
74
79
  "@types/react": "^17.0.0",
75
80
  "@types/react-native": "^0.64.2",
76
81
  "@types/react-test-renderer": "^17.0.0",
77
- "@typescript-eslint/eslint-plugin": "^4.10.0",
78
- "@typescript-eslint/parser": "^4.10.0",
82
+ "@typescript-eslint/eslint-plugin": "^4.33.0",
83
+ "@typescript-eslint/parser": "^4.33.0",
79
84
  "babel-jest": "^26.6.3",
80
85
  "eslint": "^7.15.0",
81
86
  "eslint-config-satya164": "^3.1.8",
82
87
  "eslint-import-resolver-babel-module": "^5.2.0",
83
88
  "eslint-plugin-import": "^2.22.1",
89
+ "eslint-plugin-jest": "^26.0.0",
84
90
  "expo": "^35.0.1",
85
- "flow-bin": "^0.98.0",
86
91
  "husky": "^0.14.3",
87
- "jest": "^24.7.1",
88
- "jest-react-native": "16.0.0",
89
- "lint-staged": "^10.2.11",
92
+ "jest": "^26.6.3",
93
+ "lint-staged": "^12.3.2",
90
94
  "metro-react-native-babel-preset": "^0.64.0",
91
95
  "prettier": "^2.2.1",
92
96
  "react": "^16.8.6",
93
97
  "react-dom": "^16.12.0",
94
98
  "react-native": "^0.64.0",
95
99
  "react-native-builder-bob": "^0.17.1",
96
- "react-native-reanimated": "^2.0.0",
100
+ "react-native-reanimated": "^2.3.1",
97
101
  "react-native-web": "^0.11.7",
98
- "react-test-renderer": "16.8.6",
102
+ "react-test-renderer": "17.0.2",
99
103
  "release-it": "^13.6.5",
100
- "typescript": "^4.1.2"
104
+ "typescript": "^4.5.5"
105
+ },
106
+ "peerDependencies": {
107
+ "react": "*",
108
+ "react-native": "*"
101
109
  },
102
110
  "lint-staged": {
103
111
  "*.{ts,tsx}": [
@@ -117,11 +125,26 @@
117
125
  "targets": [
118
126
  "commonjs",
119
127
  "module",
120
- "typescript"
128
+ [
129
+ "typescript",
130
+ {
131
+ "project": "tsconfig.build.json"
132
+ }
133
+ ]
121
134
  ]
122
135
  },
123
136
  "eslintIgnore": [
124
137
  "node_modules/",
125
- "lib/"
126
- ]
138
+ "lib/",
139
+ "src/fabric/*NativeComponent.js"
140
+ ],
141
+ "codegenConfig": {
142
+ "libraries": [
143
+ {
144
+ "name": "rngesturehandler",
145
+ "type": "components",
146
+ "jsSrcsDir": "./src/fabric"
147
+ }
148
+ ]
149
+ }
127
150
  }
@@ -0,0 +1,9 @@
1
+ export const ActionType = {
2
+ REANIMATED_WORKLET: 1,
3
+ NATIVE_ANIMATED_EVENT: 2,
4
+ JS_FUNCTION_OLD_API: 3,
5
+ JS_FUNCTION_NEW_API: 4,
6
+ } as const;
7
+
8
+ // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value
9
+ export type ActionType = typeof ActionType[keyof typeof ActionType];
@@ -1,18 +1,18 @@
1
+ /* eslint-disable @typescript-eslint/no-var-requires */
1
2
  import * as React from 'react';
2
- import { requireNativeComponent } from 'react-native';
3
- import { GestureHandlerRootViewProps } from './GestureHandlerRootView';
3
+ import { PropsWithChildren } from 'react';
4
+ import { requireNativeComponent, ViewProps } from 'react-native';
5
+ import { isFabric } from './utils';
4
6
 
5
- const GestureHandlerRootViewNative = requireNativeComponent(
6
- 'GestureHandlerRootView'
7
- );
7
+ const GestureHandlerRootViewNativeComponent = isFabric()
8
+ ? require('./fabric/RNGestureHandlerRootViewNativeComponent').default
9
+ : requireNativeComponent('RNGestureHandlerRootView');
8
10
 
9
- export default function GestureHandlerRootView({
10
- children,
11
- ...rest
12
- }: GestureHandlerRootViewProps) {
13
- return (
14
- <GestureHandlerRootViewNative {...rest}>
15
- {children}
16
- </GestureHandlerRootViewNative>
17
- );
11
+ export interface GestureHandlerRootViewProps
12
+ extends PropsWithChildren<ViewProps> {}
13
+
14
+ export default function GestureHandlerRootView(
15
+ props: GestureHandlerRootViewProps
16
+ ) {
17
+ return <GestureHandlerRootViewNativeComponent {...props} />;
18
18
  }
@@ -5,8 +5,8 @@ import { View, ViewProps } from 'react-native';
5
5
  export interface GestureHandlerRootViewProps
6
6
  extends PropsWithChildren<ViewProps> {}
7
7
 
8
- export default function GestureHandlerRootView({
9
- ...rest
10
- }: GestureHandlerRootViewProps) {
11
- return <View {...rest} />;
8
+ export default function GestureHandlerRootView(
9
+ props: GestureHandlerRootViewProps
10
+ ) {
11
+ return <View {...props} />;
12
12
  }
@@ -1,14 +1,18 @@
1
1
  import { NativeModules } from 'react-native';
2
+ import { ActionType } from './ActionType';
3
+ import { tagMessage } from './utils';
2
4
  const { RNGestureHandlerModule } = NativeModules;
3
5
 
4
6
  if (RNGestureHandlerModule == null) {
5
7
  console.error(
6
- `react-native-gesture-handler module was not found. Make sure you're running your app on the native platform and your code is linked properly (cd ios && pod install && cd ..).
8
+ tagMessage(
9
+ `react-native-gesture-handler module was not found. Make sure you're running your app on the native platform and your code is linked properly (cd ios && pod install && cd ..).
7
10
 
8
- For installation instructions, please refer to https://docs.swmansion.com/react-native-gesture-handler/docs/#installation`
9
- .split('\n')
10
- .map((line) => line.trim())
11
- .join('\n')
11
+ For installation instructions, please refer to https://docs.swmansion.com/react-native-gesture-handler/docs/#installation`
12
+ .split('\n')
13
+ .map((line) => line.trim())
14
+ .join('\n')
15
+ )
12
16
  );
13
17
  }
14
18
 
@@ -23,13 +27,14 @@ export type RNGestureHandlerModuleProps = {
23
27
  attachGestureHandler: (
24
28
  handlerTag: number,
25
29
  newView: number,
26
- usingDeviceEvents: boolean
30
+ actionType: ActionType
27
31
  ) => void;
28
32
  updateGestureHandler: (
29
33
  handlerTag: number,
30
34
  newConfig: Readonly<Record<string, unknown>>
31
35
  ) => void;
32
36
  dropGestureHandler: (handlerTag: number) => void;
37
+ install: () => void;
33
38
  };
34
39
 
35
40
  export default RNGestureHandlerModule as RNGestureHandlerModuleProps;
@@ -1,3 +1,4 @@
1
+ import { ActionType } from './ActionType';
1
2
  import { Direction } from './web/constants';
2
3
  import FlingGestureHandler from './web/FlingGestureHandler';
3
4
  import LongPressGestureHandler from './web/LongPressGestureHandler';
@@ -44,7 +45,7 @@ export default {
44
45
  attachGestureHandler(
45
46
  handlerTag: number,
46
47
  newView: number,
47
- _usingDeviceEvents: boolean,
48
+ _actionType: ActionType,
48
49
  propsRef: React.RefObject<unknown>
49
50
  ) {
50
51
  NodeManager.getHandler(handlerTag).setView(newView, propsRef);
@@ -490,7 +490,8 @@ export default class DrawerLayout extends Component<
490
490
  // TODO: decide if it should be null or undefined is the proper value
491
491
  undefined,
492
492
  this.props.drawerWidth!,
493
- options.velocity ? options.velocity : 0
493
+ options.velocity ? options.velocity : 0,
494
+ options.speed
494
495
  );
495
496
 
496
497
  // We need to force the update, otherwise the overlay is not rerendered and
@@ -500,7 +501,12 @@ export default class DrawerLayout extends Component<
500
501
 
501
502
  closeDrawer = (options: DrawerMovementOption = {}) => {
502
503
  // TODO: decide if it should be null or undefined is the proper value
503
- this.animateDrawer(undefined, 0, options.velocity ? options.velocity : 0);
504
+ this.animateDrawer(
505
+ undefined,
506
+ 0,
507
+ options.velocity ? options.velocity : 0,
508
+ options.speed
509
+ );
504
510
 
505
511
  // We need to force the update, otherwise the overlay is not rerendered and
506
512
  // it would be still clickable
@@ -1,7 +1,10 @@
1
+ /* eslint-disable @typescript-eslint/no-var-requires */
1
2
  import { HostComponent, requireNativeComponent } from 'react-native';
2
3
  import { RawButtonProps } from './GestureButtons';
3
- const RNGestureHandlerButton: HostComponent<RawButtonProps> = requireNativeComponent(
4
- 'RNGestureHandlerButton'
5
- );
4
+ import { isFabric } from '../utils';
6
5
 
7
- export default RNGestureHandlerButton;
6
+ const RNGestureHandlerButtonNativeComponent = isFabric()
7
+ ? require('../fabric/RNGestureHandlerButtonNativeComponent').default
8
+ : requireNativeComponent('RNGestureHandlerButton');
9
+
10
+ export default RNGestureHandlerButtonNativeComponent as HostComponent<RawButtonProps>;
@@ -90,11 +90,15 @@ export interface SwipeableProps
90
90
  overshootFriction?: number;
91
91
 
92
92
  /**
93
+ * @deprecated Use `direction` argument of onSwipeableOpen()
94
+ *
93
95
  * Called when left action panel gets open.
94
96
  */
95
97
  onSwipeableLeftOpen?: () => void;
96
98
 
97
99
  /**
100
+ * @deprecated Use `direction` argument of onSwipeableOpen()
101
+ *
98
102
  * Called when right action panel gets open.
99
103
  */
100
104
  onSwipeableRightOpen?: () => void;
@@ -102,19 +106,23 @@ export interface SwipeableProps
102
106
  /**
103
107
  * Called when action panel gets open (either right or left).
104
108
  */
105
- onSwipeableOpen?: () => void;
109
+ onSwipeableOpen?: (direction: 'left' | 'right') => void;
106
110
 
107
111
  /**
108
112
  * Called when action panel is closed.
109
113
  */
110
- onSwipeableClose?: () => void;
114
+ onSwipeableClose?: (direction: 'left' | 'right') => void;
111
115
 
112
116
  /**
117
+ * @deprecated Use `direction` argument of onSwipeableWillOpen()
118
+ *
113
119
  * Called when left action panel starts animating on open.
114
120
  */
115
121
  onSwipeableLeftWillOpen?: () => void;
116
122
 
117
123
  /**
124
+ * @deprecated Use `direction` argument of onSwipeableWillOpen()
125
+ *
118
126
  * Called when right action panel starts animating on open.
119
127
  */
120
128
  onSwipeableRightWillOpen?: () => void;
@@ -122,12 +130,12 @@ export interface SwipeableProps
122
130
  /**
123
131
  * Called when action panel starts animating on open (either right or left).
124
132
  */
125
- onSwipeableWillOpen?: () => void;
133
+ onSwipeableWillOpen?: (direction: 'left' | 'right') => void;
126
134
 
127
135
  /**
128
136
  * Called when action panel starts animating on close.
129
137
  */
130
- onSwipeableWillClose?: () => void;
138
+ onSwipeableWillClose?: (direction: 'left' | 'right') => void;
131
139
 
132
140
  /**
133
141
  *
@@ -369,29 +377,27 @@ export default class Swipeable extends Component<
369
377
  ...this.props.animationOptions,
370
378
  }).start(({ finished }) => {
371
379
  if (finished) {
372
- if (toValue > 0 && this.props.onSwipeableLeftOpen) {
373
- this.props.onSwipeableLeftOpen();
374
- } else if (toValue < 0 && this.props.onSwipeableRightOpen) {
375
- this.props.onSwipeableRightOpen();
376
- }
377
-
378
- if (toValue === 0) {
379
- this.props.onSwipeableClose?.();
380
+ if (toValue > 0) {
381
+ this.props.onSwipeableLeftOpen?.();
382
+ this.props.onSwipeableOpen?.('left');
383
+ } else if (toValue < 0) {
384
+ this.props.onSwipeableRightOpen?.();
385
+ this.props.onSwipeableOpen?.('right');
380
386
  } else {
381
- this.props.onSwipeableOpen?.();
387
+ const closingDirection = fromValue > 0 ? 'left' : 'right';
388
+ this.props.onSwipeableClose?.(closingDirection);
382
389
  }
383
390
  }
384
391
  });
385
- if (toValue > 0 && this.props.onSwipeableLeftWillOpen) {
386
- this.props.onSwipeableLeftWillOpen();
387
- } else if (toValue < 0 && this.props.onSwipeableRightWillOpen) {
388
- this.props.onSwipeableRightWillOpen();
389
- }
390
-
391
- if (toValue === 0) {
392
- this.props.onSwipeableWillClose?.();
392
+ if (toValue > 0) {
393
+ this.props.onSwipeableLeftWillOpen?.();
394
+ this.props.onSwipeableWillOpen?.('left');
395
+ } else if (toValue < 0) {
396
+ this.props.onSwipeableRightWillOpen?.();
397
+ this.props.onSwipeableWillOpen?.('right');
393
398
  } else {
394
- this.props.onSwipeableWillOpen?.();
399
+ const closingDirection = fromValue > 0 ? 'left' : 'right';
400
+ this.props.onSwipeableWillClose?.(closingDirection);
395
401
  }
396
402
  };
397
403