react-native-gesture-handler 2.21.2 → 2.22.0-rc.1

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/README.md +1 -3
  2. package/android/build.gradle +10 -0
  3. package/android/paper/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java +3 -2
  4. package/android/paper/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerDelegate.java +3 -2
  5. package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt +16 -0
  6. package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +1 -1
  7. package/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt +45 -8
  8. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +18 -0
  9. package/apple/Handlers/RNFlingHandler.m +0 -1
  10. package/apple/Handlers/RNForceTouchHandler.m +0 -1
  11. package/apple/Handlers/RNLongPressHandler.m +0 -1
  12. package/apple/Handlers/RNManualHandler.m +0 -1
  13. package/apple/Handlers/RNPanHandler.m +0 -3
  14. package/apple/Handlers/RNPinchHandler.m +0 -1
  15. package/apple/Handlers/RNRotationHandler.m +0 -1
  16. package/apple/Handlers/RNTapHandler.m +0 -1
  17. package/apple/RNGestureHandlerButton.h +1 -0
  18. package/apple/RNGestureHandlerButton.mm +51 -0
  19. package/apple/RNGestureHandlerManager.mm +6 -1
  20. package/apple/RNManualActivationRecognizer.m +1 -0
  21. package/lib/commonjs/ActionType.js.map +1 -1
  22. package/lib/commonjs/Directions.js.map +1 -1
  23. package/lib/commonjs/EnableNewWebImplementation.js +14 -1
  24. package/lib/commonjs/EnableNewWebImplementation.js.map +1 -1
  25. package/lib/commonjs/State.js.map +1 -1
  26. package/lib/commonjs/TouchEventType.js.map +1 -1
  27. package/lib/commonjs/components/Pressable/Pressable.js +1 -1
  28. package/lib/commonjs/components/Pressable/Pressable.js.map +1 -1
  29. package/lib/commonjs/components/ReanimatedSwipeable.js.map +1 -1
  30. package/lib/commonjs/components/Swipeable.js.map +1 -1
  31. package/lib/commonjs/components/Text.js +61 -0
  32. package/lib/commonjs/components/Text.js.map +1 -0
  33. package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
  34. package/lib/commonjs/getShadowNodeFromRef.js +10 -2
  35. package/lib/commonjs/getShadowNodeFromRef.js.map +1 -1
  36. package/lib/commonjs/ghQueueMicrotask.js.map +1 -1
  37. package/lib/commonjs/handlers/createHandler.js +12 -0
  38. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  39. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
  40. package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js +4 -0
  41. package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -1
  42. package/lib/commonjs/handlers/gestures/GestureDetector/dropHandlers.js +4 -0
  43. package/lib/commonjs/handlers/gestures/GestureDetector/dropHandlers.js.map +1 -1
  44. package/lib/commonjs/handlers/gestures/GestureDetector/index.js +3 -0
  45. package/lib/commonjs/handlers/gestures/GestureDetector/index.js.map +1 -1
  46. package/lib/commonjs/handlers/gestures/GestureDetector/useMountReactions.js +48 -0
  47. package/lib/commonjs/handlers/gestures/GestureDetector/useMountReactions.js.map +1 -0
  48. package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
  49. package/lib/commonjs/handlers/utils.js +1 -0
  50. package/lib/commonjs/handlers/utils.js.map +1 -1
  51. package/lib/commonjs/index.js +8 -0
  52. package/lib/commonjs/index.js.map +1 -1
  53. package/lib/commonjs/jestUtils/jestUtils.js.map +1 -1
  54. package/lib/commonjs/mountRegistry.js +49 -0
  55. package/lib/commonjs/mountRegistry.js.map +1 -0
  56. package/lib/commonjs/web/detectors/ScaleGestureDetector.js.map +1 -1
  57. package/lib/commonjs/web/handlers/FlingGestureHandler.js +0 -4
  58. package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
  59. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  60. package/lib/commonjs/web/handlers/HoverGestureHandler.js +0 -14
  61. package/lib/commonjs/web/handlers/HoverGestureHandler.js.map +1 -1
  62. package/lib/commonjs/web/handlers/ManualGestureHandler.js +0 -14
  63. package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -1
  64. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +3 -5
  65. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
  66. package/lib/commonjs/web/handlers/PanGestureHandler.js +0 -4
  67. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
  68. package/lib/commonjs/web/handlers/PinchGestureHandler.js +0 -10
  69. package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
  70. package/lib/commonjs/web/handlers/RotationGestureHandler.js +0 -14
  71. package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
  72. package/lib/commonjs/web/handlers/TapGestureHandler.js +0 -4
  73. package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
  74. package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js.map +1 -1
  75. package/lib/commonjs/web_hammer/GestureHandler.js.map +1 -1
  76. package/lib/commonjs/web_hammer/PressGestureHandler.js.map +1 -1
  77. package/lib/module/ActionType.js.map +1 -1
  78. package/lib/module/Directions.js.map +1 -1
  79. package/lib/module/EnableNewWebImplementation.js +14 -1
  80. package/lib/module/EnableNewWebImplementation.js.map +1 -1
  81. package/lib/module/State.js.map +1 -1
  82. package/lib/module/TouchEventType.js.map +1 -1
  83. package/lib/module/components/Pressable/Pressable.js +1 -1
  84. package/lib/module/components/Pressable/Pressable.js.map +1 -1
  85. package/lib/module/components/ReanimatedSwipeable.js.map +1 -1
  86. package/lib/module/components/Swipeable.js.map +1 -1
  87. package/lib/module/components/Text.js +44 -0
  88. package/lib/module/components/Text.js.map +1 -0
  89. package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
  90. package/lib/module/getShadowNodeFromRef.js +10 -2
  91. package/lib/module/getShadowNodeFromRef.js.map +1 -1
  92. package/lib/module/ghQueueMicrotask.js.map +1 -1
  93. package/lib/module/handlers/createHandler.js +11 -0
  94. package/lib/module/handlers/createHandler.js.map +1 -1
  95. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
  96. package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js +3 -0
  97. package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -1
  98. package/lib/module/handlers/gestures/GestureDetector/dropHandlers.js +2 -0
  99. package/lib/module/handlers/gestures/GestureDetector/dropHandlers.js.map +1 -1
  100. package/lib/module/handlers/gestures/GestureDetector/index.js +2 -0
  101. package/lib/module/handlers/gestures/GestureDetector/index.js.map +1 -1
  102. package/lib/module/handlers/gestures/GestureDetector/useMountReactions.js +39 -0
  103. package/lib/module/handlers/gestures/GestureDetector/useMountReactions.js.map +1 -0
  104. package/lib/module/handlers/gestures/gesture.js.map +1 -1
  105. package/lib/module/handlers/utils.js +1 -3
  106. package/lib/module/handlers/utils.js.map +1 -1
  107. package/lib/module/index.js +1 -0
  108. package/lib/module/index.js.map +1 -1
  109. package/lib/module/jestUtils/jestUtils.js.map +1 -1
  110. package/lib/module/mountRegistry.js +40 -0
  111. package/lib/module/mountRegistry.js.map +1 -0
  112. package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -1
  113. package/lib/module/web/handlers/FlingGestureHandler.js +0 -4
  114. package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
  115. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  116. package/lib/module/web/handlers/HoverGestureHandler.js +0 -14
  117. package/lib/module/web/handlers/HoverGestureHandler.js.map +1 -1
  118. package/lib/module/web/handlers/ManualGestureHandler.js +0 -14
  119. package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -1
  120. package/lib/module/web/handlers/NativeViewGestureHandler.js +3 -5
  121. package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
  122. package/lib/module/web/handlers/PanGestureHandler.js +0 -4
  123. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
  124. package/lib/module/web/handlers/PinchGestureHandler.js +0 -10
  125. package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
  126. package/lib/module/web/handlers/RotationGestureHandler.js +0 -14
  127. package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
  128. package/lib/module/web/handlers/TapGestureHandler.js +0 -4
  129. package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
  130. package/lib/module/web/tools/GestureHandlerWebDelegate.js.map +1 -1
  131. package/lib/module/web_hammer/GestureHandler.js.map +1 -1
  132. package/lib/module/web_hammer/PressGestureHandler.js.map +1 -1
  133. package/lib/typescript/ActionType.d.ts +1 -1
  134. package/lib/typescript/Directions.d.ts +2 -2
  135. package/lib/typescript/EnableNewWebImplementation.d.ts +6 -0
  136. package/lib/typescript/State.d.ts +1 -1
  137. package/lib/typescript/TouchEventType.d.ts +1 -1
  138. package/lib/typescript/components/GestureButtonsProps.d.ts +2 -2
  139. package/lib/typescript/components/Text.d.ts +4 -0
  140. package/lib/typescript/components/touchables/GenericTouchable.d.ts +1 -1
  141. package/lib/typescript/handlers/GestureHandlerEventPayload.d.ts +2 -2
  142. package/lib/typescript/handlers/gestures/GestureDetector/useMountReactions.d.ts +2 -0
  143. package/lib/typescript/handlers/gestures/gesture.d.ts +1 -1
  144. package/lib/typescript/handlers/utils.d.ts +1 -0
  145. package/lib/typescript/index.d.ts +1 -0
  146. package/lib/typescript/mocks.d.ts +3 -3
  147. package/lib/typescript/mountRegistry.d.ts +17 -0
  148. package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +0 -2
  149. package/lib/typescript/web/handlers/HoverGestureHandler.d.ts +1 -4
  150. package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +1 -4
  151. package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +0 -1
  152. package/lib/typescript/web/handlers/PanGestureHandler.d.ts +0 -2
  153. package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +1 -2
  154. package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +1 -3
  155. package/lib/typescript/web/handlers/TapGestureHandler.d.ts +0 -2
  156. package/package.json +16 -17
  157. package/src/ActionType.ts +1 -1
  158. package/src/Directions.ts +2 -2
  159. package/src/EnableNewWebImplementation.ts +18 -0
  160. package/src/State.ts +1 -1
  161. package/src/TouchEventType.ts +2 -1
  162. package/src/components/GestureButtonsProps.ts +4 -2
  163. package/src/components/Pressable/Pressable.tsx +3 -3
  164. package/src/components/ReanimatedSwipeable.tsx +8 -8
  165. package/src/components/Swipeable.tsx +4 -4
  166. package/src/components/Text.tsx +60 -0
  167. package/src/components/touchables/GenericTouchable.tsx +1 -1
  168. package/src/getShadowNodeFromRef.ts +8 -2
  169. package/src/ghQueueMicrotask.ts +2 -2
  170. package/src/handlers/GestureHandlerEventPayload.ts +2 -2
  171. package/src/handlers/createHandler.tsx +14 -1
  172. package/src/handlers/gestureHandlerCommon.ts +3 -3
  173. package/src/handlers/gestures/GestureDetector/attachHandlers.ts +3 -0
  174. package/src/handlers/gestures/GestureDetector/dropHandlers.ts +3 -0
  175. package/src/handlers/gestures/GestureDetector/index.tsx +3 -0
  176. package/src/handlers/gestures/GestureDetector/useMountReactions.ts +51 -0
  177. package/src/handlers/gestures/gesture.ts +3 -3
  178. package/src/handlers/utils.ts +2 -1
  179. package/src/index.ts +1 -0
  180. package/src/jestUtils/jestUtils.ts +10 -12
  181. package/src/mountRegistry.ts +51 -0
  182. package/src/web/detectors/ScaleGestureDetector.ts +1 -1
  183. package/src/web/handlers/FlingGestureHandler.ts +0 -4
  184. package/src/web/handlers/GestureHandler.ts +1 -3
  185. package/src/web/handlers/HoverGestureHandler.ts +1 -9
  186. package/src/web/handlers/ManualGestureHandler.ts +1 -9
  187. package/src/web/handlers/NativeViewGestureHandler.ts +5 -5
  188. package/src/web/handlers/PanGestureHandler.ts +0 -4
  189. package/src/web/handlers/PinchGestureHandler.ts +1 -5
  190. package/src/web/handlers/RotationGestureHandler.ts +1 -9
  191. package/src/web/handlers/TapGestureHandler.ts +0 -4
  192. package/src/web/tools/GestureHandlerWebDelegate.ts +4 -4
  193. package/src/web_hammer/GestureHandler.ts +1 -1
  194. package/src/web_hammer/PressGestureHandler.ts +7 -4
  195. package/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt +0 -86
@@ -23,6 +23,7 @@ import { useWebEventHandlers } from './utils';
23
23
  import { Wrap, AnimatedWrap } from './Wrap';
24
24
  import { useDetectorUpdater } from './useDetectorUpdater';
25
25
  import { useViewRefHandler } from './useViewRefHandler';
26
+ import { useMountReactions } from './useMountReactions';
26
27
 
27
28
  function propagateDetectorConfig(
28
29
  props: GestureDetectorProps,
@@ -174,6 +175,8 @@ export const GestureDetector = (props: GestureDetectorProps) => {
174
175
  }
175
176
  }, [props]);
176
177
 
178
+ useMountReactions(updateAttachedGestures, preparedGesture);
179
+
177
180
  if (shouldUseReanimated) {
178
181
  return (
179
182
  <AnimatedWrap
@@ -0,0 +1,51 @@
1
+ import { transformIntoHandlerTags } from '../../utils';
2
+ import { MountRegistry } from '../../../mountRegistry';
3
+ import { AttachedGestureState } from './types';
4
+ import { useEffect } from 'react';
5
+ import { GestureRef } from '../gesture';
6
+
7
+ function shouldUpdateDetector(
8
+ relation: GestureRef[] | undefined,
9
+ gesture: { handlerTag: number }
10
+ ) {
11
+ if (relation === undefined) {
12
+ return false;
13
+ }
14
+
15
+ for (const tag of transformIntoHandlerTags(relation)) {
16
+ if (tag === gesture.handlerTag) {
17
+ return true;
18
+ }
19
+ }
20
+
21
+ return false;
22
+ }
23
+
24
+ export function useMountReactions(
25
+ updateDetector: () => void,
26
+ state: AttachedGestureState
27
+ ) {
28
+ useEffect(() => {
29
+ return MountRegistry.addMountListener((gesture) => {
30
+ // At this point the ref in the gesture config should be updated, so we can check if one of the gestures
31
+ // set in a relation with the gesture got mounted. If so, we need to update the detector to propagate
32
+ // the changes to the native side.
33
+ for (const attachedGesture of state.attachedGestures) {
34
+ const blocksHandlers = attachedGesture.config.blocksHandlers;
35
+ const requireToFail = attachedGesture.config.requireToFail;
36
+ const simultaneousWith = attachedGesture.config.simultaneousWith;
37
+
38
+ if (
39
+ shouldUpdateDetector(blocksHandlers, gesture) ||
40
+ shouldUpdateDetector(requireToFail, gesture) ||
41
+ shouldUpdateDetector(simultaneousWith, gesture)
42
+ ) {
43
+ updateDetector();
44
+
45
+ // We can safely return here, if any other gestures should be updated, they will be by the above call
46
+ return;
47
+ }
48
+ }
49
+ });
50
+ }, [updateDetector, state]);
51
+ }
@@ -101,7 +101,7 @@ export const CALLBACK_TYPE = {
101
101
 
102
102
  // Allow using CALLBACK_TYPE as object and type
103
103
  // eslint-disable-next-line @typescript-eslint/no-redeclare
104
- export type CALLBACK_TYPE = typeof CALLBACK_TYPE[keyof typeof CALLBACK_TYPE];
104
+ export type CALLBACK_TYPE = (typeof CALLBACK_TYPE)[keyof typeof CALLBACK_TYPE];
105
105
 
106
106
  export abstract class Gesture {
107
107
  /**
@@ -125,7 +125,7 @@ export abstract class Gesture {
125
125
 
126
126
  let nextGestureId = 0;
127
127
  export abstract class BaseGesture<
128
- EventPayloadT extends Record<string, unknown>
128
+ EventPayloadT extends Record<string, unknown>,
129
129
  > extends Gesture {
130
130
  private gestureId = -1;
131
131
  public handlerTag = -1;
@@ -433,7 +433,7 @@ export abstract class BaseGesture<
433
433
 
434
434
  export abstract class ContinousBaseGesture<
435
435
  EventPayloadT extends Record<string, unknown>,
436
- EventChangePayloadT extends Record<string, unknown>
436
+ EventChangePayloadT extends Record<string, unknown>,
437
437
  > extends BaseGesture<EventPayloadT> {
438
438
  /**
439
439
  * Set the callback that is being called every time the gesture receives an update while it's active.
@@ -36,7 +36,8 @@ export function filterConfig(
36
36
  }
37
37
  return filteredConfig;
38
38
  }
39
- function transformIntoHandlerTags(handlerIDs: any) {
39
+
40
+ export function transformIntoHandlerTags(handlerIDs: any) {
40
41
  handlerIDs = toArray(handlerIDs);
41
42
 
42
43
  if (Platform.OS === 'web') {
package/src/index.ts CHANGED
@@ -102,6 +102,7 @@ export {
102
102
  FlatList,
103
103
  RefreshControl,
104
104
  } from './components/GestureComponents';
105
+ export { Text } from './components/Text';
105
106
  export { HoverEffect } from './handlers/gestures/hoverGesture';
106
107
  export type {
107
108
  // Events
@@ -78,7 +78,7 @@ try {
78
78
  }
79
79
 
80
80
  type GestureHandlerTestEvent<
81
- TEventPayload extends Record<string, unknown> = Record<string, unknown>
81
+ TEventPayload extends Record<string, unknown> = Record<string, unknown>,
82
82
  > = (
83
83
  | GestureEvent<TEventPayload>
84
84
  | HandlerStateChangeEvent<TEventPayload>
@@ -454,17 +454,15 @@ type AllHandlers =
454
454
  // prettier-ignore
455
455
  type ClassComponentConstructor<P> = new (props: P) => React.Component<P, any, any>;
456
456
 
457
- type ExtractPayloadFromProps<T> = T extends BaseGestureHandlerProps<
458
- infer TPayload
459
- >
460
- ? TPayload
461
- : never;
462
-
463
- type ExtractConfig<T> = T extends BaseGesture<infer TGesturePayload>
464
- ? TGesturePayload
465
- : T extends ClassComponentConstructor<infer THandlerProps>
466
- ? ExtractPayloadFromProps<THandlerProps>
467
- : Record<string, unknown>;
457
+ type ExtractPayloadFromProps<T> =
458
+ T extends BaseGestureHandlerProps<infer TPayload> ? TPayload : never;
459
+
460
+ type ExtractConfig<T> =
461
+ T extends BaseGesture<infer TGesturePayload>
462
+ ? TGesturePayload
463
+ : T extends ClassComponentConstructor<infer THandlerProps>
464
+ ? ExtractPayloadFromProps<THandlerProps>
465
+ : Record<string, unknown>;
468
466
 
469
467
  export function fireGestureHandler<THandler extends AllGestures | AllHandlers>(
470
468
  componentOrGesture: ReactTestInstance | GestureType,
@@ -0,0 +1,51 @@
1
+ import { GestureType } from './handlers/gestures/gesture';
2
+
3
+ interface ReactComponentWithHandlerTag extends React.Component {
4
+ handlerTag: number;
5
+ }
6
+
7
+ export type GestureMountListener = (
8
+ gesture: GestureType | ReactComponentWithHandlerTag
9
+ ) => void;
10
+
11
+ // eslint-disable-next-line @typescript-eslint/no-extraneous-class
12
+ export class MountRegistry {
13
+ private static mountListeners = new Set<GestureMountListener>();
14
+ private static unmountListeners = new Set<GestureMountListener>();
15
+
16
+ static addMountListener(listener: GestureMountListener): () => void {
17
+ this.mountListeners.add(listener);
18
+
19
+ return () => {
20
+ this.mountListeners.delete(listener);
21
+ };
22
+ }
23
+
24
+ static addUnmountListener(listener: GestureMountListener): () => void {
25
+ this.unmountListeners.add(listener);
26
+
27
+ return () => {
28
+ this.unmountListeners.delete(listener);
29
+ };
30
+ }
31
+
32
+ static gestureHandlerWillMount(handler: React.Component) {
33
+ this.mountListeners.forEach((listener) =>
34
+ listener(handler as ReactComponentWithHandlerTag)
35
+ );
36
+ }
37
+
38
+ static gestureHandlerWillUnmount(handler: React.Component) {
39
+ this.unmountListeners.forEach((listener) =>
40
+ listener(handler as ReactComponentWithHandlerTag)
41
+ );
42
+ }
43
+
44
+ static gestureWillMount(gesture: GestureType) {
45
+ this.mountListeners.forEach((listener) => listener(gesture));
46
+ }
47
+
48
+ static gestureWillUnmount(gesture: GestureType) {
49
+ this.unmountListeners.forEach((listener) => listener(gesture));
50
+ }
51
+ }
@@ -29,7 +29,7 @@ export default class ScaleGestureDetector implements ScaleGestureListener {
29
29
  private spanSlop: number;
30
30
  private minSpan: number;
31
31
 
32
- public constructor(callbacks: ScaleGestureListener) {
32
+ constructor(callbacks: ScaleGestureListener) {
33
33
  this.onScaleBegin = callbacks.onScaleBegin;
34
34
  this.onScale = callbacks.onScale;
35
35
  this.onScaleEnd = callbacks.onScaleEnd;
@@ -26,10 +26,6 @@ export default class FlingGestureHandler extends GestureHandler {
26
26
  private maxNumberOfPointersSimultaneously = 0;
27
27
  private keyPointer = NaN;
28
28
 
29
- public init(ref: number, propsRef: React.RefObject<unknown>): void {
30
- super.init(ref, propsRef);
31
- }
32
-
33
29
  public updateGestureConfig({ enabled = true, ...props }: Config): void {
34
30
  super.updateGestureConfig({ enabled: enabled, ...props });
35
31
 
@@ -43,9 +43,7 @@ export default abstract class GestureHandler implements IGestureHandler {
43
43
 
44
44
  protected delegate: GestureHandlerDelegate<unknown, IGestureHandler>;
45
45
 
46
- public constructor(
47
- delegate: GestureHandlerDelegate<unknown, IGestureHandler>
48
- ) {
46
+ constructor(delegate: GestureHandlerDelegate<unknown, IGestureHandler>) {
49
47
  this.delegate = delegate;
50
48
  }
51
49
 
@@ -1,15 +1,11 @@
1
1
  import { State } from '../../State';
2
- import { AdaptedEvent, Config, StylusData } from '../interfaces';
2
+ import { AdaptedEvent, StylusData } from '../interfaces';
3
3
  import GestureHandlerOrchestrator from '../tools/GestureHandlerOrchestrator';
4
4
  import GestureHandler from './GestureHandler';
5
5
 
6
6
  export default class HoverGestureHandler extends GestureHandler {
7
7
  private stylusData: StylusData | undefined;
8
8
 
9
- public init(ref: number, propsRef: React.RefObject<unknown>) {
10
- super.init(ref, propsRef);
11
- }
12
-
13
9
  protected transformNativeEvent(): Record<string, unknown> {
14
10
  return {
15
11
  ...super.transformNativeEvent(),
@@ -17,10 +13,6 @@ export default class HoverGestureHandler extends GestureHandler {
17
13
  };
18
14
  }
19
15
 
20
- public updateGestureConfig({ enabled = true, ...props }: Config): void {
21
- super.updateGestureConfig({ enabled: enabled, ...props });
22
- }
23
-
24
16
  protected onPointerMoveOver(event: AdaptedEvent): void {
25
17
  GestureHandlerOrchestrator.getInstance().recordHandlerIfNotPresent(this);
26
18
 
@@ -1,15 +1,7 @@
1
- import { AdaptedEvent, Config } from '../interfaces';
1
+ import { AdaptedEvent } from '../interfaces';
2
2
  import GestureHandler from './GestureHandler';
3
3
 
4
4
  export default class ManualGestureHandler extends GestureHandler {
5
- public init(ref: number, propsRef: React.RefObject<unknown>) {
6
- super.init(ref, propsRef);
7
- }
8
-
9
- public updateGestureConfig({ enabled = true, ...props }: Config): void {
10
- super.updateGestureConfig({ enabled: enabled, ...props });
11
- }
12
-
13
5
  protected onPointerDown(event: AdaptedEvent): void {
14
6
  this.tracker.addToTracker(event);
15
7
  super.onPointerDown(event);
@@ -55,10 +55,6 @@ export default class NativeViewGestureHandler extends GestureHandler {
55
55
  view.style['WebkitTouchCallout'] = 'auto';
56
56
  }
57
57
 
58
- protected resetConfig(): void {
59
- super.resetConfig();
60
- }
61
-
62
58
  protected onPointerDown(event: AdaptedEvent): void {
63
59
  this.tracker.addToTracker(event);
64
60
  super.onPointerDown(event);
@@ -83,7 +79,11 @@ export default class NativeViewGestureHandler extends GestureHandler {
83
79
  }
84
80
 
85
81
  this.begin();
86
- if (this.buttonRole) {
82
+
83
+ const view = this.delegate.getView() as HTMLElement;
84
+ const isRNGHText = view.hasAttribute('rnghtext');
85
+
86
+ if (this.buttonRole || isRNGHText) {
87
87
  this.activate();
88
88
  }
89
89
  }
@@ -61,10 +61,6 @@ export default class PanGestureHandler extends GestureHandler {
61
61
  private endWheelTimeout = 0;
62
62
  private wheelDevice = WheelDevice.UNDETERMINED;
63
63
 
64
- public init(ref: number, propsRef: React.RefObject<unknown>): void {
65
- super.init(ref, propsRef);
66
- }
67
-
68
64
  public updateGestureConfig({ enabled = true, ...props }: Config): void {
69
65
  this.resetConfig();
70
66
 
@@ -1,6 +1,6 @@
1
1
  import { State } from '../../State';
2
2
  import { DEFAULT_TOUCH_SLOP } from '../constants';
3
- import { AdaptedEvent, Config } from '../interfaces';
3
+ import { AdaptedEvent } from '../interfaces';
4
4
 
5
5
  import GestureHandler from './GestureHandler';
6
6
  import ScaleGestureDetector, {
@@ -55,10 +55,6 @@ export default class PinchGestureHandler extends GestureHandler {
55
55
  this.setShouldCancelWhenOutside(false);
56
56
  }
57
57
 
58
- public updateGestureConfig({ enabled = true, ...props }: Config): void {
59
- super.updateGestureConfig({ enabled: enabled, ...props });
60
- }
61
-
62
58
  protected transformNativeEvent() {
63
59
  return {
64
60
  focalX: this.scaleGestureDetector.getFocusX(),
@@ -1,5 +1,5 @@
1
1
  import { State } from '../../State';
2
- import { AdaptedEvent, Config } from '../interfaces';
2
+ import { AdaptedEvent } from '../interfaces';
3
3
 
4
4
  import GestureHandler from './GestureHandler';
5
5
  import RotationGestureDetector, {
@@ -50,10 +50,6 @@ export default class RotationGestureHandler extends GestureHandler {
50
50
  this.setShouldCancelWhenOutside(false);
51
51
  }
52
52
 
53
- public updateGestureConfig({ enabled = true, ...props }: Config): void {
54
- super.updateGestureConfig({ enabled: enabled, ...props });
55
- }
56
-
57
53
  protected transformNativeEvent() {
58
54
  return {
59
55
  rotation: this.rotation ? this.rotation : 0,
@@ -158,10 +154,6 @@ export default class RotationGestureHandler extends GestureHandler {
158
154
  this.begin();
159
155
  }
160
156
 
161
- public activate(_force?: boolean): void {
162
- super.activate();
163
- }
164
-
165
157
  protected onReset(): void {
166
158
  if (this.currentState === State.ACTIVE) {
167
159
  return;
@@ -31,10 +31,6 @@ export default class TapGestureHandler extends GestureHandler {
31
31
 
32
32
  private tapsSoFar = 0;
33
33
 
34
- public init(ref: number, propsRef: React.RefObject<unknown>): void {
35
- super.init(ref, propsRef);
36
- }
37
-
38
34
  public updateGestureConfig({ enabled = true, ...props }: Config): void {
39
35
  super.updateGestureConfig({ enabled: enabled, ...props });
40
36
 
@@ -135,11 +135,11 @@ export class GestureHandlerWebDelegate
135
135
  const { userSelect } = this.gestureHandler.getConfig();
136
136
 
137
137
  this.view.style['userSelect'] = isHandlerEnabled
138
- ? userSelect ?? 'none'
138
+ ? (userSelect ?? 'none')
139
139
  : this.defaultViewStyles.userSelect;
140
140
 
141
141
  this.view.style['webkitUserSelect'] = isHandlerEnabled
142
- ? userSelect ?? 'none'
142
+ ? (userSelect ?? 'none')
143
143
  : this.defaultViewStyles.userSelect;
144
144
  }
145
145
 
@@ -147,12 +147,12 @@ export class GestureHandlerWebDelegate
147
147
  const { touchAction } = this.gestureHandler.getConfig();
148
148
 
149
149
  this.view.style['touchAction'] = isHandlerEnabled
150
- ? touchAction ?? 'none'
150
+ ? (touchAction ?? 'none')
151
151
  : this.defaultViewStyles.touchAction;
152
152
 
153
153
  // @ts-ignore This one disables default events on Safari
154
154
  this.view.style['WebkitTouchCallout'] = isHandlerEnabled
155
- ? touchAction ?? 'none'
155
+ ? (touchAction ?? 'none')
156
156
  : this.defaultViewStyles.touchAction;
157
157
  }
158
158
 
@@ -538,7 +538,7 @@ abstract class GestureHandler {
538
538
  'activeOffsetYStart',
539
539
  'activeOffsetYEnd',
540
540
  ] as const;
541
- configProps.forEach((prop: typeof configProps[number]) => {
541
+ configProps.forEach((prop: (typeof configProps)[number]) => {
542
542
  if (typeof props[prop] === 'undefined') {
543
543
  props[prop] = Number.NaN;
544
544
  }
@@ -87,10 +87,13 @@ class PressGestureHandler extends DiscreteGestureHandler {
87
87
  this.isGestureRunning = true;
88
88
  clearTimeout(this.visualFeedbackTimer);
89
89
  this.initialEvent = ev;
90
- this.visualFeedbackTimer = fireAfterInterval(() => {
91
- this.sendGestureStartedEvent(this.initialEvent as HammerInputExt);
92
- this.initialEvent = null;
93
- }, this.shouldDelayTouchForEvent(ev) && CONTENT_TOUCHES_DELAY);
90
+ this.visualFeedbackTimer = fireAfterInterval(
91
+ () => {
92
+ this.sendGestureStartedEvent(this.initialEvent as HammerInputExt);
93
+ this.initialEvent = null;
94
+ },
95
+ this.shouldDelayTouchForEvent(ev) && CONTENT_TOUCHES_DELAY
96
+ );
94
97
  }
95
98
 
96
99
  sendGestureStartedEvent(ev: HammerInputExt) {
@@ -1,86 +0,0 @@
1
- package com.swmansion.gesturehandler
2
-
3
- import com.facebook.react.TurboReactPackage
4
- import com.facebook.react.ViewManagerOnDemandReactPackage
5
- import com.facebook.react.bridge.ModuleSpec
6
- import com.facebook.react.bridge.NativeModule
7
- import com.facebook.react.bridge.ReactApplicationContext
8
- import com.facebook.react.module.annotations.ReactModule
9
- import com.facebook.react.module.annotations.ReactModuleList
10
- import com.facebook.react.module.model.ReactModuleInfo
11
- import com.facebook.react.module.model.ReactModuleInfoProvider
12
- import com.facebook.react.uimanager.ViewManager
13
- import com.swmansion.gesturehandler.react.RNGestureHandlerButtonViewManager
14
- import com.swmansion.gesturehandler.react.RNGestureHandlerModule
15
- import com.swmansion.gesturehandler.react.RNGestureHandlerRootViewManager
16
-
17
- @ReactModuleList(
18
- nativeModules = [
19
- RNGestureHandlerModule::class
20
- ]
21
- )
22
- class RNGestureHandlerPackage : TurboReactPackage(), ViewManagerOnDemandReactPackage {
23
- private val viewManagers: Map<String, ModuleSpec> by lazy {
24
- mapOf(
25
- RNGestureHandlerRootViewManager.REACT_CLASS to ModuleSpec.viewManagerSpec {
26
- RNGestureHandlerRootViewManager()
27
- },
28
- RNGestureHandlerButtonViewManager.REACT_CLASS to ModuleSpec.viewManagerSpec {
29
- RNGestureHandlerButtonViewManager()
30
- }
31
- )
32
- }
33
-
34
- override fun createViewManagers(reactContext: ReactApplicationContext) =
35
- listOf<ViewManager<*, *>>(
36
- RNGestureHandlerRootViewManager(),
37
- RNGestureHandlerButtonViewManager()
38
- )
39
-
40
- override fun getViewManagerNames(reactContext: ReactApplicationContext?) =
41
- viewManagers.keys.toList()
42
-
43
- override fun getViewManagers(reactContext: ReactApplicationContext?): MutableList<ModuleSpec> =
44
- viewManagers.values.toMutableList()
45
-
46
- override fun createViewManager(
47
- reactContext: ReactApplicationContext?,
48
- viewManagerName: String?
49
- ) = viewManagers[viewManagerName]?.provider?.get() as? ViewManager<*, *>
50
-
51
- override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
52
- return if (name == RNGestureHandlerModule.NAME) {
53
- RNGestureHandlerModule(reactContext)
54
- } else {
55
- null
56
- }
57
- }
58
-
59
- override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
60
- try {
61
- val reactModuleInfoProviderClass =
62
- Class.forName("com.swmansion.gesturehandler.RNGestureHandlerPackage$\$ReactModuleInfoProvider")
63
- return reactModuleInfoProviderClass.getDeclaredConstructor().newInstance() as ReactModuleInfoProvider
64
- } catch (e: ClassNotFoundException) {
65
- return ReactModuleInfoProvider {
66
- val reactModule: ReactModule = RNGestureHandlerModule::class.java.getAnnotation(ReactModule::class.java)!!
67
-
68
- mutableMapOf(
69
- RNGestureHandlerModule.NAME to ReactModuleInfo(
70
- reactModule.name,
71
- RNGestureHandlerModule::class.java.name,
72
- reactModule.canOverrideExistingModule,
73
- reactModule.needsEagerInit,
74
- true, // Has constants is hardcoded to return true, so replacing it with `true` changes nothing.
75
- reactModule.isCxxModule,
76
- true
77
- )
78
- )
79
- }
80
- } catch (e: InstantiationException) {
81
- throw RuntimeException("No ReactModuleInfoProvider for RNGestureHandlerPackage$\$ReactModuleInfoProvider", e)
82
- } catch (e: IllegalAccessException) {
83
- throw RuntimeException("No ReactModuleInfoProvider for RNGestureHandlerPackage$\$ReactModuleInfoProvider", e)
84
- }
85
- }
86
- }