react-native-gesture-handler 2.12.0 → 2.13.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 (195) hide show
  1. package/RNGestureHandler.podspec +0 -15
  2. package/android/build.gradle +5 -76
  3. package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt +16 -1
  4. package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +43 -18
  5. package/android/src/main/java/com/swmansion/gesturehandler/core/HoverGestureHandler.kt +120 -0
  6. package/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt +7 -0
  7. package/android/src/main/java/com/swmansion/gesturehandler/react/Extensions.kt +5 -0
  8. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +43 -16
  9. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +21 -0
  10. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +9 -1
  11. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +10 -0
  12. package/ios/Handlers/RNHoverHandler.h +12 -0
  13. package/ios/Handlers/RNHoverHandler.m +152 -0
  14. package/ios/RNGestureHandlerButtonComponentView.mm +2 -0
  15. package/ios/RNGestureHandlerEvents.h +1 -0
  16. package/ios/RNGestureHandlerEvents.m +10 -0
  17. package/ios/RNGestureHandlerManager.mm +2 -0
  18. package/ios/RNManualActivationRecognizer.m +2 -1
  19. package/ios/RNRootViewGestureRecognizer.m +7 -2
  20. package/lib/commonjs/RNGestureHandlerModule.macos.js +3 -1
  21. package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
  22. package/lib/commonjs/RNGestureHandlerModule.web.js +7 -2
  23. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
  24. package/lib/commonjs/RNGestureHandlerModule.windows.js +3 -1
  25. package/lib/commonjs/RNGestureHandlerModule.windows.js.map +1 -1
  26. package/lib/commonjs/components/DrawerLayout.js +1 -0
  27. package/lib/commonjs/components/DrawerLayout.js.map +1 -1
  28. package/lib/commonjs/components/touchables/GenericTouchable.js +1 -2
  29. package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
  30. package/lib/commonjs/components/touchables/TouchableHighlight.js.map +1 -1
  31. package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
  32. package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
  33. package/lib/commonjs/components/touchables/TouchableWithoutFeedback.js.map +1 -1
  34. package/lib/commonjs/components/touchables/index.js.map +1 -1
  35. package/lib/commonjs/handlers/createHandler.js +4 -4
  36. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  37. package/lib/commonjs/handlers/gestureHandlerCommon.js +1 -1
  38. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
  39. package/lib/commonjs/handlers/gestures/GestureDetector.js +4 -2
  40. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
  41. package/lib/commonjs/handlers/gestures/gesture.js +5 -0
  42. package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
  43. package/lib/commonjs/handlers/gestures/gestureObjects.js +5 -0
  44. package/lib/commonjs/handlers/gestures/gestureObjects.js.map +1 -1
  45. package/lib/commonjs/handlers/gestures/hoverGesture.js +74 -0
  46. package/lib/commonjs/handlers/gestures/hoverGesture.js.map +1 -0
  47. package/lib/commonjs/index.js +8 -0
  48. package/lib/commonjs/index.js.map +1 -1
  49. package/lib/commonjs/web/handlers/FlingGestureHandler.js +0 -10
  50. package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
  51. package/lib/commonjs/web/handlers/GestureHandler.js +61 -88
  52. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  53. package/lib/commonjs/web/handlers/HoverGestureHandler.js +62 -0
  54. package/lib/commonjs/web/handlers/HoverGestureHandler.js.map +1 -0
  55. package/lib/commonjs/web/handlers/LongPressGestureHandler.js +6 -7
  56. package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
  57. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +12 -4
  58. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
  59. package/lib/commonjs/web/handlers/PanGestureHandler.js +2 -7
  60. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
  61. package/lib/commonjs/web/handlers/TapGestureHandler.js +0 -10
  62. package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
  63. package/lib/commonjs/web/interfaces.js +1 -1
  64. package/lib/commonjs/web/interfaces.js.map +1 -1
  65. package/lib/commonjs/web/tools/EventManager.js +18 -4
  66. package/lib/commonjs/web/tools/EventManager.js.map +1 -1
  67. package/lib/commonjs/web/tools/GestureHandlerDelegate.js +6 -0
  68. package/lib/commonjs/web/tools/GestureHandlerDelegate.js.map +1 -0
  69. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +5 -7
  70. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  71. package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js +118 -0
  72. package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js.map +1 -0
  73. package/lib/commonjs/web/tools/PointerEventManager.js +38 -5
  74. package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
  75. package/lib/commonjs/web/tools/TouchEventManager.js +2 -2
  76. package/lib/commonjs/web/tools/TouchEventManager.js.map +1 -1
  77. package/lib/module/RNGestureHandlerModule.macos.js +2 -1
  78. package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
  79. package/lib/module/RNGestureHandlerModule.web.js +6 -3
  80. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  81. package/lib/module/RNGestureHandlerModule.windows.js +2 -1
  82. package/lib/module/RNGestureHandlerModule.windows.js.map +1 -1
  83. package/lib/module/components/DrawerLayout.js +1 -0
  84. package/lib/module/components/DrawerLayout.js.map +1 -1
  85. package/lib/module/components/touchables/GenericTouchable.js +1 -2
  86. package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
  87. package/lib/module/components/touchables/TouchableHighlight.js.map +1 -1
  88. package/lib/module/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
  89. package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
  90. package/lib/module/components/touchables/TouchableWithoutFeedback.js.map +1 -1
  91. package/lib/module/components/touchables/index.js.map +1 -1
  92. package/lib/module/handlers/createHandler.js +4 -4
  93. package/lib/module/handlers/createHandler.js.map +1 -1
  94. package/lib/module/handlers/gestureHandlerCommon.js +1 -1
  95. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
  96. package/lib/module/handlers/gestures/GestureDetector.js +3 -2
  97. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
  98. package/lib/module/handlers/gestures/gesture.js +5 -0
  99. package/lib/module/handlers/gestures/gesture.js.map +1 -1
  100. package/lib/module/handlers/gestures/gestureObjects.js +4 -0
  101. package/lib/module/handlers/gestures/gestureObjects.js.map +1 -1
  102. package/lib/module/handlers/gestures/hoverGesture.js +62 -0
  103. package/lib/module/handlers/gestures/hoverGesture.js.map +1 -0
  104. package/lib/module/index.js +1 -0
  105. package/lib/module/index.js.map +1 -1
  106. package/lib/module/web/handlers/FlingGestureHandler.js +0 -10
  107. package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
  108. package/lib/module/web/handlers/GestureHandler.js +61 -84
  109. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  110. package/lib/module/web/handlers/HoverGestureHandler.js +47 -0
  111. package/lib/module/web/handlers/HoverGestureHandler.js.map +1 -0
  112. package/lib/module/web/handlers/LongPressGestureHandler.js +5 -7
  113. package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
  114. package/lib/module/web/handlers/NativeViewGestureHandler.js +11 -4
  115. package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
  116. package/lib/module/web/handlers/PanGestureHandler.js +2 -7
  117. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
  118. package/lib/module/web/handlers/TapGestureHandler.js +0 -10
  119. package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
  120. package/lib/module/web/interfaces.js +1 -1
  121. package/lib/module/web/interfaces.js.map +1 -1
  122. package/lib/module/web/tools/EventManager.js +18 -4
  123. package/lib/module/web/tools/EventManager.js.map +1 -1
  124. package/lib/module/web/tools/GestureHandlerDelegate.js +2 -0
  125. package/lib/module/web/tools/GestureHandlerDelegate.js.map +1 -0
  126. package/lib/module/web/tools/GestureHandlerOrchestrator.js +5 -6
  127. package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  128. package/lib/module/web/tools/GestureHandlerWebDelegate.js +102 -0
  129. package/lib/module/web/tools/GestureHandlerWebDelegate.js.map +1 -0
  130. package/lib/module/web/tools/PointerEventManager.js +39 -6
  131. package/lib/module/web/tools/PointerEventManager.js.map +1 -1
  132. package/lib/module/web/tools/TouchEventManager.js +2 -2
  133. package/lib/module/web/tools/TouchEventManager.js.map +1 -1
  134. package/lib/typescript/RNGestureHandlerModule.macos.d.ts +1 -1
  135. package/lib/typescript/RNGestureHandlerModule.web.d.ts +3 -1
  136. package/lib/typescript/RNGestureHandlerModule.windows.d.ts +1 -1
  137. package/lib/typescript/components/DrawerLayout.d.ts +7 -1
  138. package/lib/typescript/components/touchables/GenericTouchable.d.ts +3 -2
  139. package/lib/typescript/components/touchables/TouchableHighlight.d.ts +4 -3
  140. package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +3 -2
  141. package/lib/typescript/components/touchables/TouchableOpacity.d.ts +4 -5
  142. package/lib/typescript/components/touchables/TouchableWithoutFeedback.d.ts +1 -0
  143. package/lib/typescript/components/touchables/index.d.ts +3 -0
  144. package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +1 -1
  145. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +3 -1
  146. package/lib/typescript/handlers/gestures/gesture.d.ts +2 -1
  147. package/lib/typescript/handlers/gestures/gestureObjects.d.ts +2 -0
  148. package/lib/typescript/handlers/gestures/hoverGesture.d.ts +32 -0
  149. package/lib/typescript/index.d.ts +4 -0
  150. package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +0 -6
  151. package/lib/typescript/web/handlers/GestureHandler.d.ts +12 -17
  152. package/lib/typescript/web/handlers/HoverGestureHandler.d.ts +10 -0
  153. package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +0 -4
  154. package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +1 -1
  155. package/lib/typescript/web/handlers/PanGestureHandler.d.ts +0 -4
  156. package/lib/typescript/web/handlers/TapGestureHandler.d.ts +0 -6
  157. package/lib/typescript/web/interfaces.d.ts +4 -3
  158. package/lib/typescript/web/tools/EventManager.d.ts +9 -5
  159. package/lib/typescript/web/tools/GestureHandlerDelegate.d.ts +22 -0
  160. package/lib/typescript/web/tools/GestureHandlerWebDelegate.d.ts +21 -0
  161. package/lib/typescript/web/tools/NodeManager.d.ts +2 -2
  162. package/lib/typescript/web/tools/PointerEventManager.d.ts +1 -1
  163. package/lib/typescript/web/tools/TouchEventManager.d.ts +1 -1
  164. package/package.json +2 -2
  165. package/src/RNGestureHandlerModule.macos.ts +5 -1
  166. package/src/RNGestureHandlerModule.web.ts +7 -1
  167. package/src/RNGestureHandlerModule.windows.ts +5 -1
  168. package/src/components/DrawerLayout.tsx +9 -0
  169. package/src/components/touchables/GenericTouchable.tsx +4 -4
  170. package/src/components/touchables/TouchableHighlight.tsx +6 -3
  171. package/src/components/touchables/TouchableNativeFeedback.android.tsx +5 -4
  172. package/src/components/touchables/TouchableOpacity.tsx +6 -7
  173. package/src/components/touchables/TouchableWithoutFeedback.tsx +3 -1
  174. package/src/components/touchables/index.ts +3 -0
  175. package/src/handlers/createHandler.tsx +5 -3
  176. package/src/handlers/gestureHandlerCommon.ts +39 -0
  177. package/src/handlers/gestures/GestureDetector.tsx +3 -1
  178. package/src/handlers/gestures/gesture.ts +6 -0
  179. package/src/handlers/gestures/gestureObjects.ts +5 -0
  180. package/src/handlers/gestures/hoverGesture.ts +83 -0
  181. package/src/index.ts +8 -0
  182. package/src/web/handlers/FlingGestureHandler.ts +0 -11
  183. package/src/web/handlers/GestureHandler.ts +68 -88
  184. package/src/web/handlers/HoverGestureHandler.ts +43 -0
  185. package/src/web/handlers/LongPressGestureHandler.ts +5 -7
  186. package/src/web/handlers/NativeViewGestureHandler.ts +11 -4
  187. package/src/web/handlers/PanGestureHandler.ts +1 -6
  188. package/src/web/handlers/TapGestureHandler.ts +0 -11
  189. package/src/web/interfaces.ts +4 -2
  190. package/src/web/tools/EventManager.ts +15 -7
  191. package/src/web/tools/GestureHandlerDelegate.ts +23 -0
  192. package/src/web/tools/GestureHandlerOrchestrator.ts +7 -6
  193. package/src/web/tools/GestureHandlerWebDelegate.ts +115 -0
  194. package/src/web/tools/PointerEventManager.ts +46 -16
  195. package/src/web/tools/TouchEventManager.ts +3 -3
@@ -1,3 +1,6 @@
1
+ export type { TouchableHighlightProps } from './TouchableHighlight';
2
+ export type { TouchableOpacityProps } from './TouchableOpacity';
3
+ export type { TouchableWithoutFeedbackProps } from './TouchableWithoutFeedback';
1
4
  export { default as TouchableNativeFeedback } from './TouchableNativeFeedback';
2
5
  export { default as TouchableWithoutFeedback } from './TouchableWithoutFeedback';
3
6
  export { default as TouchableOpacity } from './TouchableOpacity';
@@ -22,7 +22,7 @@ export declare type NativeViewGestureHandlerPayload = {
22
22
  */
23
23
  pointerInside: boolean;
24
24
  };
25
- export declare const nativeViewProps: readonly ["id", "enabled", "shouldCancelWhenOutside", "hitSlop", "cancelsTouchesInView", "userSelect", "waitFor", "simultaneousHandlers", "onBegan", "onFailed", "onCancelled", "onActivated", "onEnded", "onGestureEvent", "onHandlerStateChange", "shouldActivateOnStart", "disallowInterruption"];
25
+ export declare const nativeViewProps: readonly ["id", "enabled", "shouldCancelWhenOutside", "hitSlop", "cancelsTouchesInView", "userSelect", "activeCursor", "waitFor", "simultaneousHandlers", "onBegan", "onFailed", "onCancelled", "onActivated", "onEnded", "onGestureEvent", "onHandlerStateChange", "shouldActivateOnStart", "disallowInterruption"];
26
26
  export declare const nativeViewHandlerName = "NativeViewGestureHandler";
27
27
  export declare type NativeViewGestureHandler = typeof NativeViewGestureHandler;
28
28
  export declare const NativeViewGestureHandler: import("react").ComponentType<NativeViewGestureHandlerProps & import("react").RefAttributes<any>>;
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import { State } from '../State';
3
3
  import { TouchEventType } from '../TouchEventType';
4
4
  import { ValueOf } from '../typeUtils';
5
- export declare const baseGestureHandlerProps: readonly ["id", "enabled", "shouldCancelWhenOutside", "hitSlop", "cancelsTouchesInView", "userSelect", "waitFor", "simultaneousHandlers", "onBegan", "onFailed", "onCancelled", "onActivated", "onEnded", "onGestureEvent", "onHandlerStateChange"];
5
+ export declare const baseGestureHandlerProps: readonly ["id", "enabled", "shouldCancelWhenOutside", "hitSlop", "cancelsTouchesInView", "userSelect", "activeCursor", "waitFor", "simultaneousHandlers", "onBegan", "onFailed", "onCancelled", "onActivated", "onEnded", "onGestureEvent", "onHandlerStateChange"];
6
6
  export declare const baseGestureHandlerWithMonitorProps: string[];
7
7
  export interface GestureEventPayload {
8
8
  handlerTag: number;
@@ -14,6 +14,7 @@ export interface HandlerStateChangeEventPayload extends GestureEventPayload {
14
14
  }
15
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>;
16
16
  export declare type UserSelect = 'none' | 'auto' | 'text';
17
+ export declare type ActiveCursor = 'auto' | 'default' | 'none' | 'context-menu' | 'help' | 'pointer' | 'progress' | 'wait' | 'cell' | 'crosshair' | 'text' | 'vertical-text' | 'alias' | 'copy' | 'move' | 'no-drop' | 'not-allowed' | 'grab' | 'grabbing' | 'e-resize' | 'n-resize' | 'ne-resize' | 'nw-resize' | 's-resize' | 'se-resize' | 'sw-resize' | 'w-resize' | 'ew-resize' | 'ns-resize' | 'nesw-resize' | 'nwse-resize' | 'col-resize' | 'row-resize' | 'all-scroll' | 'zoom-in' | 'zoom-out';
17
18
  export interface GestureEvent<ExtraEventPayloadT = Record<string, unknown>> {
18
19
  nativeEvent: Readonly<GestureEventPayload & ExtraEventPayloadT>;
19
20
  }
@@ -42,6 +43,7 @@ export declare type CommonGestureConfig = {
42
43
  shouldCancelWhenOutside?: boolean;
43
44
  hitSlop?: HitSlop;
44
45
  userSelect?: UserSelect;
46
+ activeCursor?: ActiveCursor;
45
47
  };
46
48
  export declare type BaseGestureHandlerProps<ExtraEventPayloadT extends Record<string, unknown> = Record<string, unknown>> = CommonGestureConfig & {
47
49
  id?: string;
@@ -1,6 +1,6 @@
1
1
  import { FlingGestureHandlerEventPayload } from '../FlingGestureHandler';
2
2
  import { ForceTouchGestureHandlerEventPayload } from '../ForceTouchGestureHandler';
3
- import { HitSlop, CommonGestureConfig, GestureTouchEvent, GestureStateChangeEvent, GestureUpdateEvent } from '../gestureHandlerCommon';
3
+ import { HitSlop, CommonGestureConfig, GestureTouchEvent, GestureStateChangeEvent, GestureUpdateEvent, ActiveCursor } from '../gestureHandlerCommon';
4
4
  import { GestureStateManagerType } from './gestureStateManager';
5
5
  import { LongPressGestureHandlerEventPayload } from '../LongPressGestureHandler';
6
6
  import { PanGestureHandlerEventPayload } from '../PanGestureHandler';
@@ -89,6 +89,7 @@ export declare abstract class BaseGesture<EventPayloadT extends Record<string, u
89
89
  enabled(enabled: boolean): this;
90
90
  shouldCancelWhenOutside(value: boolean): this;
91
91
  hitSlop(hitSlop: HitSlop): this;
92
+ activeCursor(activeCursor: ActiveCursor): this;
92
93
  runOnJS(runOnJS: boolean): this;
93
94
  simultaneousWithExternalGesture(...gestures: Exclude<GestureRef, number>[]): this;
94
95
  requireExternalGestureToFail(...gestures: Exclude<GestureRef, number>[]): this;
@@ -9,6 +9,7 @@ import { RotationGesture } from './rotationGesture';
9
9
  import { TapGesture } from './tapGesture';
10
10
  import { NativeGesture } from './nativeGesture';
11
11
  import { ManualGesture } from './manualGesture';
12
+ import { HoverGesture } from './hoverGesture';
12
13
  export declare const GestureObjects: {
13
14
  Tap: () => TapGesture;
14
15
  Pan: () => PanGesture;
@@ -19,6 +20,7 @@ export declare const GestureObjects: {
19
20
  ForceTouch: () => ForceTouchGesture;
20
21
  Native: () => NativeGesture;
21
22
  Manual: () => ManualGesture;
23
+ Hover: () => HoverGesture;
22
24
  /**
23
25
  * Builds a composed gesture consisting of gestures provided as parameters.
24
26
  * The first one that becomes active cancels the rest of gestures.
@@ -0,0 +1,32 @@
1
+ import { BaseGestureConfig, ContinousBaseGesture } from './gesture';
2
+ import { GestureUpdateEvent } from '../gestureHandlerCommon';
3
+ export declare type HoverGestureHandlerEventPayload = {
4
+ x: number;
5
+ y: number;
6
+ absoluteX: number;
7
+ absoluteY: number;
8
+ };
9
+ export declare type HoverGestureChangeEventPayload = {
10
+ changeX: number;
11
+ changeY: number;
12
+ };
13
+ export declare enum HoverEffect {
14
+ NONE = 0,
15
+ LIFT = 1,
16
+ HIGHLIGHT = 2
17
+ }
18
+ export interface HoverGestureConfig {
19
+ hoverEffect?: HoverEffect;
20
+ }
21
+ export declare const hoverGestureHandlerProps: readonly ["hoverEffect"];
22
+ export declare class HoverGesture extends ContinousBaseGesture<HoverGestureHandlerEventPayload, HoverGestureChangeEventPayload> {
23
+ config: BaseGestureConfig & HoverGestureConfig;
24
+ constructor();
25
+ /**
26
+ * Sets the visual hover effect.
27
+ * iOS only
28
+ */
29
+ effect(effect: HoverEffect): this;
30
+ onChange(callback: (event: GestureUpdateEvent<HoverGestureHandlerEventPayload & HoverGestureChangeEventPayload>) => void): this;
31
+ }
32
+ export declare type HoverGestureType = InstanceType<typeof HoverGesture>;
@@ -34,14 +34,18 @@ export type { RotationGestureType as RotationGesture } from './handlers/gestures
34
34
  export type { ForceTouchGestureType as ForceTouchGesture } from './handlers/gestures/forceTouchGesture';
35
35
  export type { NativeGestureType as NativeGesture } from './handlers/gestures/nativeGesture';
36
36
  export type { ManualGestureType as ManualGesture } from './handlers/gestures/manualGesture';
37
+ export type { HoverGestureType as HoverGesture } from './handlers/gestures/hoverGesture';
37
38
  export type { ComposedGestureType as ComposedGesture, RaceGestureType as RaceGesture, SimultaneousGestureType as SimultaneousGesture, ExclusiveGestureType as ExclusiveGesture, } from './handlers/gestures/gestureComposition';
38
39
  export type { GestureStateManagerType as GestureStateManager } from './handlers/gestures/gestureStateManager';
39
40
  export { NativeViewGestureHandler } from './handlers/NativeViewGestureHandler';
40
41
  export type { RawButtonProps, BaseButtonProps, RectButtonProps, BorderlessButtonProps, } from './components/GestureButtons';
41
42
  export { RawButton, BaseButton, RectButton, BorderlessButton, PureNativeButton, } from './components/GestureButtons';
43
+ export type { TouchableHighlightProps, TouchableOpacityProps, TouchableWithoutFeedbackProps, } from './components/touchables';
42
44
  export { TouchableHighlight, TouchableNativeFeedback, TouchableOpacity, TouchableWithoutFeedback, } from './components/touchables';
43
45
  export { ScrollView, Switch, TextInput, DrawerLayoutAndroid, FlatList, RefreshControl, } from './components/GestureComponents';
46
+ export { HoverEffect } from './handlers/gestures/hoverGesture';
44
47
  export type { GestureHandlerGestureEvent, GestureHandlerStateChangeEvent, GestureHandlerGestureEventNativeEvent, GestureHandlerStateChangeNativeEvent, NativeViewGestureHandlerGestureEvent, NativeViewGestureHandlerStateChangeEvent, TapGestureHandlerGestureEvent, TapGestureHandlerStateChangeEvent, ForceTouchGestureHandlerGestureEvent, ForceTouchGestureHandlerStateChangeEvent, LongPressGestureHandlerGestureEvent, LongPressGestureHandlerStateChangeEvent, PanGestureHandlerGestureEvent, PanGestureHandlerStateChangeEvent, PinchGestureHandlerGestureEvent, PinchGestureHandlerStateChangeEvent, RotationGestureHandlerGestureEvent, RotationGestureHandlerStateChangeEvent, FlingGestureHandlerGestureEvent, FlingGestureHandlerStateChangeEvent, NativeViewGestureHandlerProperties, TapGestureHandlerProperties, LongPressGestureHandlerProperties, PanGestureHandlerProperties, PinchGestureHandlerProperties, RotationGestureHandlerProperties, FlingGestureHandlerProperties, ForceTouchGestureHandlerProperties, RawButtonProperties, BaseButtonProperties, RectButtonProperties, BorderlessButtonProperties, } from './handlers/gestureHandlerTypesCompat';
48
+ export type { SwipeableProps } from './components/Swipeable';
45
49
  export { default as Swipeable } from './components/Swipeable';
46
50
  export type { DrawerLayoutProps, DrawerPosition, DrawerState, DrawerType, DrawerLockMode, DrawerKeyboardDismissMode, } from './components/DrawerLayout';
47
51
  export { default as DrawerLayout } from './components/DrawerLayout';
@@ -12,12 +12,6 @@ export default class FlingGestureHandler extends GestureHandler {
12
12
  private keyPointer;
13
13
  init(ref: number, propsRef: React.RefObject<unknown>): void;
14
14
  updateGestureConfig({ enabled, ...props }: Config): void;
15
- protected transformNativeEvent(): {
16
- x: number;
17
- y: number;
18
- absoluteX: number;
19
- absoluteY: number;
20
- };
21
15
  private startFling;
22
16
  private tryEndFling;
23
17
  private endFling;
@@ -2,28 +2,27 @@ import { State } from '../../State';
2
2
  import { Config, AdaptedEvent, PointerType } from '../interfaces';
3
3
  import EventManager from '../tools/EventManager';
4
4
  import PointerTracker from '../tools/PointerTracker';
5
+ import { GestureHandlerDelegate } from '../tools/GestureHandlerDelegate';
5
6
  export default abstract class GestureHandler {
6
7
  private lastSentState;
7
8
  protected currentState: State;
8
9
  protected shouldCancellWhenOutside: boolean;
9
10
  protected hasCustomActivationCriteria: boolean;
10
11
  protected enabled: boolean;
11
- private ref;
12
+ private viewRef;
12
13
  private propsRef;
13
14
  private handlerTag;
14
15
  protected config: Config;
15
- protected view: HTMLElement;
16
- protected eventManagers: EventManager[];
17
16
  protected tracker: PointerTracker;
18
17
  protected activationIndex: number;
19
18
  protected awaiting: boolean;
20
19
  protected active: boolean;
21
20
  protected shouldResetProgress: boolean;
22
21
  protected pointerType: PointerType;
23
- constructor();
24
- protected init(ref: number, propsRef: React.RefObject<unknown>): void;
25
- private setView;
26
- private addEventManager;
22
+ protected delegate: GestureHandlerDelegate<unknown>;
23
+ constructor(delegate: GestureHandlerDelegate<unknown>);
24
+ protected init(viewRef: number, propsRef: React.RefObject<unknown>): void;
25
+ attachEventManager(manager: EventManager<unknown>): void;
27
26
  protected onCancel(): void;
28
27
  protected onReset(): void;
29
28
  protected resetProgress(): void;
@@ -58,32 +57,28 @@ export default abstract class GestureHandler {
58
57
  protected onPointerUp(event: AdaptedEvent): void;
59
58
  protected onPointerRemove(event: AdaptedEvent): void;
60
59
  protected onPointerMove(event: AdaptedEvent): void;
61
- protected onPointerOut(event: AdaptedEvent): void;
60
+ protected onPointerLeave(event: AdaptedEvent): void;
62
61
  protected onPointerEnter(event: AdaptedEvent): void;
63
62
  protected onPointerCancel(event: AdaptedEvent): void;
64
63
  protected onPointerOutOfBounds(event: AdaptedEvent): void;
64
+ protected onPointerMoveOver(_event: AdaptedEvent): void;
65
+ protected onPointerMoveOut(_event: AdaptedEvent): void;
65
66
  private tryToSendMoveEvent;
66
67
  sendTouchEvent(event: AdaptedEvent): void;
67
68
  sendEvent: (newState: State, oldState: State) => void;
68
69
  private transformEventData;
69
70
  private transformTouchEvent;
70
71
  private cancelTouches;
71
- protected transformNativeEvent(): {};
72
+ protected transformNativeEvent(): Record<string, unknown>;
72
73
  updateGestureConfig({ enabled, ...props }: Config): void;
73
74
  protected checkCustomActivationCriteria(criterias: string[]): void;
74
75
  private validateHitSlops;
75
76
  private checkHitSlop;
76
- isPointerInBounds({ x, y }: {
77
- x: number;
78
- y: number;
79
- }): boolean;
80
77
  protected resetConfig(): void;
81
78
  getTag(): number;
82
79
  setTag(tag: number): void;
83
- protected getConfig(): Config;
84
- getShouldEnableGestureOnSetup(): boolean;
85
- getView(): HTMLElement;
86
- getEventManagers(): EventManager[];
80
+ getConfig(): Config;
81
+ getDelegate(): GestureHandlerDelegate<unknown>;
87
82
  getTracker(): PointerTracker;
88
83
  getTrackedPointersID(): number[];
89
84
  getState(): State;
@@ -0,0 +1,10 @@
1
+ import { AdaptedEvent, Config } from '../interfaces';
2
+ import GestureHandler from './GestureHandler';
3
+ export default class HoverGestureHandler extends GestureHandler {
4
+ init(ref: number, propsRef: React.RefObject<unknown>): void;
5
+ updateGestureConfig({ enabled, ...props }: Config): void;
6
+ protected onPointerMoveOver(event: AdaptedEvent): void;
7
+ protected onPointerMoveOut(event: AdaptedEvent): void;
8
+ protected onPointerMove(event: AdaptedEvent): void;
9
+ protected onPointerCancel(event: AdaptedEvent): void;
10
+ }
@@ -12,10 +12,6 @@ export default class LongPressGestureHandler extends GestureHandler {
12
12
  private activationTimeout;
13
13
  init(ref: number, propsRef: React.RefObject<unknown>): void;
14
14
  protected transformNativeEvent(): {
15
- x: number;
16
- y: number;
17
- absoluteX: number;
18
- absoluteY: number;
19
15
  duration: number;
20
16
  };
21
17
  updateGestureConfig({ enabled, ...props }: Config): void;
@@ -14,7 +14,7 @@ export default class NativeViewGestureHandler extends GestureHandler {
14
14
  protected onPointerAdd(event: AdaptedEvent): void;
15
15
  private newPointerAction;
16
16
  protected onPointerMove(event: AdaptedEvent): void;
17
- protected onPointerOut(): void;
17
+ protected onPointerLeave(): void;
18
18
  protected onPointerUp(event: AdaptedEvent): void;
19
19
  protected onPointerRemove(event: AdaptedEvent): void;
20
20
  private onUp;
@@ -32,12 +32,8 @@ export default class PanGestureHandler extends GestureHandler {
32
32
  protected transformNativeEvent(): {
33
33
  translationX: number;
34
34
  translationY: number;
35
- absoluteX: number;
36
- absoluteY: number;
37
35
  velocityX: number;
38
36
  velocityY: number;
39
- x: number;
40
- y: number;
41
37
  };
42
38
  private getTranslationX;
43
39
  private getTranslationY;
@@ -21,12 +21,6 @@ export default class TapGestureHandler extends GestureHandler {
21
21
  init(ref: number, propsRef: React.RefObject<unknown>): void;
22
22
  updateGestureConfig({ enabled, ...props }: Config): void;
23
23
  protected resetConfig(): void;
24
- protected transformNativeEvent(): {
25
- x: number;
26
- y: number;
27
- absoluteX: number;
28
- absoluteY: number;
29
- };
30
24
  private clearTimeouts;
31
25
  private startTap;
32
26
  private endTap;
@@ -1,4 +1,4 @@
1
- import { UserSelect } from '../handlers/gestureHandlerCommon';
1
+ import { UserSelect, ActiveCursor } from '../handlers/gestureHandlerCommon';
2
2
  import { Directions } from '../Directions';
3
3
  import { State } from '../State';
4
4
  export interface HitSlop {
@@ -14,7 +14,7 @@ export interface HitSlop {
14
14
  export interface Handler {
15
15
  handlerTag: number;
16
16
  }
17
- declare type ConfigArgs = number | boolean | HitSlop | UserSelect | Directions | Handler[] | null | undefined;
17
+ declare type ConfigArgs = number | boolean | HitSlop | UserSelect | ActiveCursor | Directions | Handler[] | null | undefined;
18
18
  export interface Config extends Record<string, ConfigArgs> {
19
19
  enabled?: boolean;
20
20
  simultaneousHandlers?: Handler[] | null;
@@ -22,6 +22,7 @@ export interface Config extends Record<string, ConfigArgs> {
22
22
  hitSlop?: HitSlop;
23
23
  shouldCancelWhenOutside?: boolean;
24
24
  userSelect?: UserSelect;
25
+ activeCursor?: ActiveCursor;
25
26
  activateAfterLongPress?: number;
26
27
  failOffsetXStart?: number;
27
28
  failOffsetYStart?: number;
@@ -120,7 +121,7 @@ export declare enum EventTypes {
120
121
  ADDITIONAL_POINTER_UP = 3,
121
122
  MOVE = 4,
122
123
  ENTER = 5,
123
- OUT = 6,
124
+ LEAVE = 6,
124
125
  CANCEL = 7
125
126
  }
126
127
  export declare enum TouchEventType {
@@ -1,9 +1,9 @@
1
1
  import { AdaptedEvent, EventTypes, TouchEventType } from '../interfaces';
2
- export default abstract class EventManager {
3
- protected readonly view: HTMLElement;
2
+ export default abstract class EventManager<T> {
3
+ protected readonly view: T;
4
4
  protected pointersInBounds: number[];
5
5
  protected activePointersCounter: number;
6
- constructor(view: HTMLElement);
6
+ constructor(view: T);
7
7
  abstract setListeners(): void;
8
8
  protected abstract mapEvent(event: Event, eventType: EventTypes, index?: number, touchEventType?: TouchEventType): AdaptedEvent;
9
9
  protected onPointerDown(_event: AdaptedEvent): void;
@@ -11,19 +11,23 @@ export default abstract class EventManager {
11
11
  protected onPointerUp(_event: AdaptedEvent): void;
12
12
  protected onPointerRemove(_event: AdaptedEvent): void;
13
13
  protected onPointerMove(_event: AdaptedEvent): void;
14
- protected onPointerOut(_event: AdaptedEvent): void;
14
+ protected onPointerLeave(_event: AdaptedEvent): void;
15
15
  protected onPointerEnter(_event: AdaptedEvent): void;
16
16
  protected onPointerCancel(_event: AdaptedEvent): void;
17
17
  protected onPointerOutOfBounds(_event: AdaptedEvent): void;
18
+ protected onPointerMoveOver(_event: AdaptedEvent): void;
19
+ protected onPointerMoveOut(_event: AdaptedEvent): void;
18
20
  setOnPointerDown(callback: (event: AdaptedEvent) => void): void;
19
21
  setOnPointerAdd(callback: (event: AdaptedEvent) => void): void;
20
22
  setOnPointerUp(callback: (event: AdaptedEvent) => void): void;
21
23
  setOnPointerRemove(callback: (event: AdaptedEvent) => void): void;
22
24
  setOnPointerMove(callback: (event: AdaptedEvent) => void): void;
23
- setOnPointerOut(callback: (event: AdaptedEvent) => void): void;
25
+ setOnPointerLeave(callback: (event: AdaptedEvent) => void): void;
24
26
  setOnPointerEnter(callback: (event: AdaptedEvent) => void): void;
25
27
  setOnPointerCancel(callback: (event: AdaptedEvent) => void): void;
26
28
  setOnPointerOutOfBounds(callback: (event: AdaptedEvent) => void): void;
29
+ setOnPointerMoveOver(callback: (event: AdaptedEvent) => void): void;
30
+ setOnPointerMoveOut(callback: (event: AdaptedEvent) => void): void;
27
31
  protected markAsInBounds(pointerId: number): void;
28
32
  protected markAsOutOfBounds(pointerId: number): void;
29
33
  resetManager(): void;
@@ -0,0 +1,22 @@
1
+ import type GestureHandler from '../handlers/GestureHandler';
2
+ export interface MeasureResult {
3
+ pageX: number;
4
+ pageY: number;
5
+ width: number;
6
+ height: number;
7
+ }
8
+ export interface GestureHandlerDelegate<T> {
9
+ getView(): T;
10
+ init(viewRef: number, handler: GestureHandler): void;
11
+ isPointerInBounds({ x, y }: {
12
+ x: number;
13
+ y: number;
14
+ }): boolean;
15
+ measureView(): MeasureResult;
16
+ reset(): void;
17
+ onBegin(): void;
18
+ onActivate(): void;
19
+ onEnd(): void;
20
+ onCancel(): void;
21
+ onFail(): void;
22
+ }
@@ -0,0 +1,21 @@
1
+ import type GestureHandler from '../handlers/GestureHandler';
2
+ import { GestureHandlerDelegate, MeasureResult } from './GestureHandlerDelegate';
3
+ export declare class GestureHandlerWebDelegate implements GestureHandlerDelegate<HTMLElement> {
4
+ private view;
5
+ private gestureHandler;
6
+ private eventManagers;
7
+ getView(): HTMLElement;
8
+ init(viewRef: number, handler: GestureHandler): void;
9
+ isPointerInBounds({ x, y }: {
10
+ x: number;
11
+ y: number;
12
+ }): boolean;
13
+ measureView(): MeasureResult;
14
+ reset(): void;
15
+ tryResetCursor(): void;
16
+ onBegin(): void;
17
+ onActivate(): void;
18
+ onEnd(): void;
19
+ onCancel(): void;
20
+ onFail(): void;
21
+ }
@@ -2,10 +2,10 @@ import { ValueOf } from '../../typeUtils';
2
2
  import { Gestures } from '../../RNGestureHandlerModule.web';
3
3
  export default abstract class NodeManager {
4
4
  private static gestures;
5
- static getHandler(tag: number): import("../handlers/NativeViewGestureHandler").default | import("../handlers/PanGestureHandler").default | import("../handlers/TapGestureHandler").default | import("../handlers/LongPressGestureHandler").default | import("../handlers/PinchGestureHandler").default | import("../handlers/RotationGestureHandler").default | import("../handlers/FlingGestureHandler").default | import("../handlers/ManualGestureHandler").default;
5
+ static getHandler(tag: number): import("../handlers/NativeViewGestureHandler").default | import("../handlers/PanGestureHandler").default | import("../handlers/TapGestureHandler").default | import("../handlers/LongPressGestureHandler").default | import("../handlers/PinchGestureHandler").default | import("../handlers/RotationGestureHandler").default | import("../handlers/FlingGestureHandler").default | import("../handlers/ManualGestureHandler").default | import("../handlers/HoverGestureHandler").default;
6
6
  static createGestureHandler(handlerTag: number, handler: InstanceType<ValueOf<typeof Gestures>>): void;
7
7
  static dropGestureHandler(handlerTag: number): void;
8
8
  static getNodes(): {
9
- [x: number]: import("../handlers/NativeViewGestureHandler").default | import("../handlers/PanGestureHandler").default | import("../handlers/TapGestureHandler").default | import("../handlers/LongPressGestureHandler").default | import("../handlers/PinchGestureHandler").default | import("../handlers/RotationGestureHandler").default | import("../handlers/FlingGestureHandler").default | import("../handlers/ManualGestureHandler").default;
9
+ [x: number]: import("../handlers/NativeViewGestureHandler").default | import("../handlers/PanGestureHandler").default | import("../handlers/TapGestureHandler").default | import("../handlers/LongPressGestureHandler").default | import("../handlers/PinchGestureHandler").default | import("../handlers/RotationGestureHandler").default | import("../handlers/FlingGestureHandler").default | import("../handlers/ManualGestureHandler").default | import("../handlers/HoverGestureHandler").default;
10
10
  };
11
11
  }
@@ -1,6 +1,6 @@
1
1
  import { AdaptedEvent, EventTypes } from '../interfaces';
2
2
  import EventManager from './EventManager';
3
- export default class PointerEventManager extends EventManager {
3
+ export default class PointerEventManager extends EventManager<HTMLElement> {
4
4
  private trackedPointers;
5
5
  setListeners(): void;
6
6
  protected mapEvent(event: PointerEvent, eventType: EventTypes): AdaptedEvent;
@@ -1,6 +1,6 @@
1
1
  import { AdaptedEvent, EventTypes, TouchEventType } from '../interfaces';
2
2
  import EventManager from './EventManager';
3
- export default class TouchEventManager extends EventManager {
3
+ export default class TouchEventManager extends EventManager<HTMLElement> {
4
4
  setListeners(): void;
5
5
  protected mapEvent(event: TouchEvent, eventType: EventTypes, index: number, touchEventType: TouchEventType): AdaptedEvent;
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-gesture-handler",
3
- "version": "2.12.0",
3
+ "version": "2.13.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 && husky install",
@@ -88,7 +88,7 @@
88
88
  "@typescript-eslint/parser": "^4.33.0",
89
89
  "babel-jest": "^26.6.3",
90
90
  "clang-format": "^1.8.0",
91
- "eslint": "^7.15.0",
91
+ "eslint": "^7.32.0",
92
92
  "eslint-config-satya164": "^3.1.8",
93
93
  "eslint-import-resolver-babel-module": "^5.2.0",
94
94
  "eslint-plugin-import": "^2.22.1",
@@ -23,6 +23,7 @@ import HammerPinchGestureHandler from './web_hammer/PinchGestureHandler';
23
23
  import HammerRotationGestureHandler from './web_hammer/RotationGestureHandler';
24
24
  import HammerFlingGestureHandler from './web_hammer/FlingGestureHandler';
25
25
  import { Config } from './web/interfaces';
26
+ import { GestureHandlerWebDelegate } from './web/tools/GestureHandlerWebDelegate';
26
27
 
27
28
  export const Gestures = {
28
29
  NativeViewGestureHandler,
@@ -65,7 +66,10 @@ export default {
65
66
  }
66
67
 
67
68
  const GestureClass = Gestures[handlerName];
68
- NodeManager.createGestureHandler(handlerTag, new GestureClass());
69
+ NodeManager.createGestureHandler(
70
+ handlerTag,
71
+ new GestureClass(new GestureHandlerWebDelegate())
72
+ );
69
73
  InteractionManager.getInstance().configureInteractions(
70
74
  NodeManager.getHandler(handlerTag),
71
75
  config as unknown as Config
@@ -14,6 +14,7 @@ import RotationGestureHandler from './web/handlers/RotationGestureHandler';
14
14
  import FlingGestureHandler from './web/handlers/FlingGestureHandler';
15
15
  import NativeViewGestureHandler from './web/handlers/NativeViewGestureHandler';
16
16
  import ManualGestureHandler from './web/handlers/ManualGestureHandler';
17
+ import HoverGestureHandler from './web/handlers/HoverGestureHandler';
17
18
 
18
19
  //Hammer Handlers
19
20
  import * as HammerNodeManager from './web_hammer/NodeManager';
@@ -25,6 +26,7 @@ import HammerPinchGestureHandler from './web_hammer/PinchGestureHandler';
25
26
  import HammerRotationGestureHandler from './web_hammer/RotationGestureHandler';
26
27
  import HammerFlingGestureHandler from './web_hammer/FlingGestureHandler';
27
28
  import { Config } from './web/interfaces';
29
+ import { GestureHandlerWebDelegate } from './web/tools/GestureHandlerWebDelegate';
28
30
 
29
31
  export const Gestures = {
30
32
  NativeViewGestureHandler,
@@ -35,6 +37,7 @@ export const Gestures = {
35
37
  RotationGestureHandler,
36
38
  FlingGestureHandler,
37
39
  ManualGestureHandler,
40
+ HoverGestureHandler,
38
41
  };
39
42
 
40
43
  export const HammerGestures = {
@@ -67,7 +70,10 @@ export default {
67
70
  }
68
71
 
69
72
  const GestureClass = Gestures[handlerName];
70
- NodeManager.createGestureHandler(handlerTag, new GestureClass());
73
+ NodeManager.createGestureHandler(
74
+ handlerTag,
75
+ new GestureClass(new GestureHandlerWebDelegate())
76
+ );
71
77
  InteractionManager.getInstance().configureInteractions(
72
78
  NodeManager.getHandler(handlerTag),
73
79
  config as unknown as Config
@@ -25,6 +25,7 @@ import HammerPinchGestureHandler from './web_hammer/PinchGestureHandler';
25
25
  import HammerRotationGestureHandler from './web_hammer/RotationGestureHandler';
26
26
  import HammerFlingGestureHandler from './web_hammer/FlingGestureHandler';
27
27
  import { Config } from './web/interfaces';
28
+ import { GestureHandlerWebDelegate } from './web/tools/GestureHandlerWebDelegate';
28
29
 
29
30
  export const Gestures = {
30
31
  NativeViewGestureHandler,
@@ -67,7 +68,10 @@ export default {
67
68
  }
68
69
 
69
70
  const GestureClass = Gestures[handlerName];
70
- NodeManager.createGestureHandler(handlerTag, new GestureClass());
71
+ NodeManager.createGestureHandler(
72
+ handlerTag,
73
+ new GestureClass(new GestureHandlerWebDelegate())
74
+ );
71
75
  InteractionManager.getInstance().configureInteractions(
72
76
  NodeManager.getHandler(handlerTag),
73
77
  config as unknown as Config
@@ -27,6 +27,7 @@ import {
27
27
  GestureEvent,
28
28
  HandlerStateChangeEvent,
29
29
  UserSelect,
30
+ ActiveCursor,
30
31
  } from '../handlers/gestureHandlerCommon';
31
32
  import {
32
33
  PanGestureHandler,
@@ -165,6 +166,13 @@ export interface DrawerLayoutProps {
165
166
  * Values: 'none'|'text'|'auto'
166
167
  */
167
168
  userSelect?: UserSelect;
169
+
170
+ /**
171
+ * @default 'auto'
172
+ * Defines which cursor property should be used when gesture activates.
173
+ * Values: see CSS cursor values
174
+ */
175
+ activeCursor?: ActiveCursor;
168
176
  }
169
177
 
170
178
  export type DrawerLayoutState = {
@@ -691,6 +699,7 @@ export default class DrawerLayout extends Component<
691
699
  <PanGestureHandler
692
700
  // @ts-ignore could be fixed in handler types
693
701
  userSelect={this.props.userSelect}
702
+ activeCursor={this.props.activeCursor}
694
703
  ref={this.setPanGestureRef}
695
704
  hitSlop={hitSlop}
696
705
  activeOffsetX={gestureOrientation * minSwipeDistance!}
@@ -6,6 +6,7 @@ import {
6
6
  StyleProp,
7
7
  ViewStyle,
8
8
  TouchableWithoutFeedbackProps,
9
+ Insets,
9
10
  } from 'react-native';
10
11
 
11
12
  import { State } from '../../State';
@@ -33,7 +34,8 @@ export const TOUCHABLE_STATE = {
33
34
 
34
35
  type TouchableState = typeof TOUCHABLE_STATE[keyof typeof TOUCHABLE_STATE];
35
36
 
36
- export interface GenericTouchableProps extends TouchableWithoutFeedbackProps {
37
+ export interface GenericTouchableProps
38
+ extends Omit<TouchableWithoutFeedbackProps, 'hitSlop'> {
37
39
  // Decided to drop not used fields from RN's implementation.
38
40
  // e.g. onBlur and onFocus as well as deprecated props. - TODO: this comment may be unuseful in this moment
39
41
 
@@ -48,6 +50,7 @@ export interface GenericTouchableProps extends TouchableWithoutFeedbackProps {
48
50
  disallowInterruption?: boolean;
49
51
 
50
52
  containerStyle?: StyleProp<ViewStyle>;
53
+ hitSlop?: Insets | number;
51
54
  }
52
55
 
53
56
  interface InternalProps {
@@ -272,9 +275,6 @@ export default class GenericTouchable extends Component<
272
275
  onAccessibilityAction: this.props.onAccessibilityAction,
273
276
  nativeID: this.props.nativeID,
274
277
  onLayout: this.props.onLayout,
275
- hitSlop: hitSlop as
276
- | Animated.WithAnimatedObject<typeof hitSlop>
277
- | undefined,
278
278
  };
279
279
 
280
280
  return (
@@ -7,7 +7,7 @@ import GenericTouchable, {
7
7
  import {
8
8
  StyleSheet,
9
9
  View,
10
- TouchableHighlightProps,
10
+ TouchableHighlightProps as RNTouchableHighlightProps,
11
11
  ColorValue,
12
12
  ViewProps,
13
13
  } from 'react-native';
@@ -21,11 +21,14 @@ interface State {
21
21
  };
22
22
  }
23
23
 
24
+ export type TouchableHighlightProps = RNTouchableHighlightProps &
25
+ GenericTouchableProps;
26
+
24
27
  /**
25
28
  * TouchableHighlight follows RN's implementation
26
29
  */
27
30
  export default class TouchableHighlight extends Component<
28
- TouchableHighlightProps & GenericTouchableProps,
31
+ TouchableHighlightProps,
29
32
  State
30
33
  > {
31
34
  static defaultProps = {
@@ -35,7 +38,7 @@ export default class TouchableHighlight extends Component<
35
38
  underlayColor: 'black',
36
39
  };
37
40
 
38
- constructor(props: TouchableHighlightProps & GenericTouchableProps) {
41
+ constructor(props: TouchableHighlightProps) {
39
42
  super(props);
40
43
  this.state = {
41
44
  extraChildStyle: null,