react-native-gesture-handler 2.28.0 → 2.29.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 (81) hide show
  1. package/README.md +1 -0
  2. package/android/build.gradle +2 -2
  3. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +8 -13
  4. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +2 -2
  5. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +2 -2
  6. package/apple/Handlers/RNFlingHandler.m +7 -1
  7. package/apple/Handlers/RNLongPressHandler.m +6 -4
  8. package/apple/Handlers/RNPanHandler.m +4 -1
  9. package/apple/Handlers/RNTapHandler.m +2 -1
  10. package/lib/commonjs/components/Pressable/Pressable.js +12 -4
  11. package/lib/commonjs/components/Pressable/Pressable.js.map +1 -1
  12. package/lib/commonjs/components/Pressable/stateDefinitions.js +1 -0
  13. package/lib/commonjs/components/Pressable/stateDefinitions.js.map +1 -1
  14. package/lib/commonjs/components/ReanimatedSwipeable/ReanimatedSwipeable.js +9 -9
  15. package/lib/commonjs/components/ReanimatedSwipeable/ReanimatedSwipeable.js.map +1 -1
  16. package/lib/commonjs/handlers/NativeViewGestureHandler.js +32 -0
  17. package/lib/commonjs/handlers/NativeViewGestureHandler.js.map +1 -0
  18. package/lib/commonjs/handlers/gestures/GestureDetector/useAnimatedGesture.js +1 -1
  19. package/lib/commonjs/handlers/gestures/GestureDetector/useAnimatedGesture.js.map +1 -1
  20. package/lib/commonjs/handlers/gestures/flingGesture.js +1 -1
  21. package/lib/commonjs/handlers/gestures/gestureStateManager.js +1 -0
  22. package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -1
  23. package/lib/commonjs/handlers/gestures/gestureStateManager.web.js +1 -0
  24. package/lib/commonjs/handlers/gestures/gestureStateManager.web.js.map +1 -1
  25. package/lib/commonjs/handlers/gestures/nativeGesture.js +34 -0
  26. package/lib/commonjs/handlers/gestures/nativeGesture.js.map +1 -0
  27. package/lib/commonjs/specs/NativeRNGestureHandlerModule.js +9 -0
  28. package/lib/commonjs/specs/NativeRNGestureHandlerModule.js.map +1 -0
  29. package/lib/commonjs/web/handlers/{NativeViewGestureHandler.ts → NativeViewGestureHandler.js} +53 -87
  30. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -0
  31. package/lib/commonjs/web_hammer/NativeViewGestureHandler.js +57 -0
  32. package/lib/commonjs/web_hammer/NativeViewGestureHandler.js.map +1 -0
  33. package/lib/module/components/Pressable/Pressable.js +12 -4
  34. package/lib/module/components/Pressable/Pressable.js.map +1 -1
  35. package/lib/module/components/Pressable/stateDefinitions.js +1 -0
  36. package/lib/module/components/Pressable/stateDefinitions.js.map +1 -1
  37. package/lib/module/components/ReanimatedSwipeable/ReanimatedSwipeable.js +1 -1
  38. package/lib/module/components/ReanimatedSwipeable/ReanimatedSwipeable.js.map +1 -1
  39. package/lib/module/handlers/NativeViewGestureHandler.js +27 -0
  40. package/lib/module/handlers/NativeViewGestureHandler.js.map +1 -0
  41. package/lib/module/handlers/gestures/GestureDetector/useAnimatedGesture.js +1 -1
  42. package/lib/module/handlers/gestures/GestureDetector/useAnimatedGesture.js.map +1 -1
  43. package/lib/module/handlers/gestures/flingGesture.js +1 -1
  44. package/lib/module/handlers/gestures/gestureStateManager.js +1 -0
  45. package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -1
  46. package/lib/module/handlers/gestures/gestureStateManager.web.js +1 -0
  47. package/lib/module/handlers/gestures/gestureStateManager.web.js.map +1 -1
  48. package/lib/module/handlers/gestures/nativeGesture.js +29 -0
  49. package/lib/module/handlers/gestures/nativeGesture.js.map +1 -0
  50. package/lib/module/specs/NativeRNGestureHandlerModule.js +5 -0
  51. package/lib/module/specs/NativeRNGestureHandlerModule.js.map +1 -0
  52. package/lib/module/web/handlers/{NativeViewGestureHandler.ts → NativeViewGestureHandler.js} +36 -76
  53. package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -0
  54. package/lib/module/web_hammer/NativeViewGestureHandler.js +51 -0
  55. package/lib/module/web_hammer/NativeViewGestureHandler.js.map +1 -0
  56. package/lib/typescript/components/Pressable/Pressable.d.ts.map +1 -1
  57. package/lib/typescript/components/Pressable/stateDefinitions.d.ts +2 -1
  58. package/lib/typescript/components/Pressable/stateDefinitions.d.ts.map +1 -1
  59. package/lib/typescript/components/ReanimatedSwipeable/ReanimatedSwipeable.d.ts +1 -1
  60. package/lib/typescript/components/ReanimatedSwipeable/ReanimatedSwipeable.d.ts.map +1 -1
  61. package/lib/typescript/handlers/gestures/GestureDetector/useAnimatedGesture.d.ts.map +1 -1
  62. package/lib/typescript/handlers/gestures/flingGesture.d.ts +1 -1
  63. package/lib/typescript/handlers/gestures/gestureStateManager.d.ts +2 -0
  64. package/lib/typescript/handlers/gestures/gestureStateManager.d.ts.map +1 -1
  65. package/lib/typescript/handlers/gestures/gestureStateManager.web.d.ts.map +1 -1
  66. package/package.json +7 -7
  67. package/src/components/Pressable/Pressable.tsx +12 -4
  68. package/src/components/Pressable/stateDefinitions.ts +1 -0
  69. package/src/components/ReanimatedSwipeable/ReanimatedSwipeable.tsx +5 -1
  70. package/src/handlers/gestures/GestureDetector/useAnimatedGesture.ts +4 -1
  71. package/src/handlers/gestures/flingGesture.ts +1 -1
  72. package/src/handlers/gestures/gestureStateManager.ts +4 -0
  73. package/src/handlers/gestures/gestureStateManager.web.ts +2 -0
  74. package/lib/commonjs/handlers/NativeViewGestureHandler.ts +0 -59
  75. package/lib/commonjs/handlers/gestures/nativeGesture.ts +0 -33
  76. package/lib/commonjs/specs/NativeRNGestureHandlerModule.ts +0 -26
  77. package/lib/commonjs/web_hammer/NativeViewGestureHandler.ts +0 -47
  78. package/lib/module/handlers/NativeViewGestureHandler.ts +0 -59
  79. package/lib/module/handlers/gestures/nativeGesture.ts +0 -33
  80. package/lib/module/specs/NativeRNGestureHandlerModule.ts +0 -26
  81. package/lib/module/web_hammer/NativeViewGestureHandler.ts +0 -47
@@ -23,7 +23,7 @@ export class FlingGesture extends BaseGesture<FlingGestureHandlerEventPayload> {
23
23
  /**
24
24
  * Expressed allowed direction of movement.
25
25
  * Expected values are exported as constants in the Directions object.
26
- * Arguments can be combined using `|` operator. Default value is set to `MouseButton.LEFT`.
26
+ * Arguments can be combined using `|` operator. Default value is set to `Directions.RIGHT`.
27
27
  * @param direction
28
28
  * @see https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/fling-gesture/#directionvalue-directions
29
29
  */
@@ -7,6 +7,8 @@ export interface GestureStateManagerType {
7
7
  activate: () => void;
8
8
  fail: () => void;
9
9
  end: () => void;
10
+ /** @internal */
11
+ handlerTag: number;
10
12
  }
11
13
 
12
14
  const warningMessage = tagMessage(
@@ -21,6 +23,8 @@ const setGestureState = Reanimated?.setGestureState;
21
23
  function create(handlerTag: number): GestureStateManagerType {
22
24
  'worklet';
23
25
  return {
26
+ handlerTag,
27
+
24
28
  begin: () => {
25
29
  'worklet';
26
30
  if (REANIMATED_AVAILABLE) {
@@ -4,6 +4,8 @@ import { GestureStateManagerType } from './gestureStateManager';
4
4
  export const GestureStateManager = {
5
5
  create(handlerTag: number): GestureStateManagerType {
6
6
  return {
7
+ handlerTag,
8
+
7
9
  begin: () => {
8
10
  NodeManager.getHandler(handlerTag).begin();
9
11
  },
@@ -1,59 +0,0 @@
1
- import type { NativeViewGestureHandlerPayload } from './GestureHandlerEventPayload';
2
- import createHandler from './createHandler';
3
- import {
4
- BaseGestureHandlerProps,
5
- baseGestureHandlerProps,
6
- } from './gestureHandlerCommon';
7
-
8
- export const nativeViewGestureHandlerProps = [
9
- 'shouldActivateOnStart',
10
- 'disallowInterruption',
11
- ] as const;
12
-
13
- export interface NativeViewGestureConfig {
14
- /**
15
- * Android only.
16
- *
17
- * Determines whether the handler should check for an existing touch event on
18
- * instantiation.
19
- */
20
- shouldActivateOnStart?: boolean;
21
-
22
- /**
23
- * When `true`, cancels all other gesture handlers when this
24
- * `NativeViewGestureHandler` receives an `ACTIVE` state event.
25
- */
26
- disallowInterruption?: boolean;
27
- }
28
-
29
- /**
30
- * @deprecated NativeViewGestureHandler will be removed in the future version of Gesture Handler. Use `Gesture.Native()` instead.
31
- */
32
- export interface NativeViewGestureHandlerProps
33
- extends BaseGestureHandlerProps<NativeViewGestureHandlerPayload>,
34
- NativeViewGestureConfig {}
35
-
36
- export const nativeViewProps = [
37
- ...baseGestureHandlerProps,
38
- ...nativeViewGestureHandlerProps,
39
- ] as const;
40
-
41
- export const nativeViewHandlerName = 'NativeViewGestureHandler';
42
-
43
- /**
44
- * @deprecated NativeViewGestureHandler will be removed in the future version of Gesture Handler. Use `Gesture.Native()` instead.
45
- */
46
- export type NativeViewGestureHandler = typeof NativeViewGestureHandler;
47
-
48
- /**
49
- * @deprecated NativeViewGestureHandler will be removed in the future version of Gesture Handler. Use `Gesture.Native()` instead.
50
- */
51
- // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file
52
- export const NativeViewGestureHandler = createHandler<
53
- NativeViewGestureHandlerProps,
54
- NativeViewGestureHandlerPayload
55
- >({
56
- name: nativeViewHandlerName,
57
- allowedProps: nativeViewProps,
58
- config: {},
59
- });
@@ -1,33 +0,0 @@
1
- import { BaseGestureConfig, BaseGesture } from './gesture';
2
- import { NativeViewGestureConfig } from '../NativeViewGestureHandler';
3
- import type { NativeViewGestureHandlerPayload } from '../GestureHandlerEventPayload';
4
-
5
- export class NativeGesture extends BaseGesture<NativeViewGestureHandlerPayload> {
6
- public config: BaseGestureConfig & NativeViewGestureConfig = {};
7
-
8
- constructor() {
9
- super();
10
-
11
- this.handlerName = 'NativeViewGestureHandler';
12
- }
13
-
14
- /**
15
- * When true, underlying handler will activate unconditionally when in `BEGAN` or `UNDETERMINED` state.
16
- * @param value
17
- */
18
- shouldActivateOnStart(value: boolean) {
19
- this.config.shouldActivateOnStart = value;
20
- return this;
21
- }
22
-
23
- /**
24
- * When true, cancels all other gesture handlers when this `NativeViewGestureHandler` receives an `ACTIVE` state event.
25
- * @param value
26
- */
27
- disallowInterruption(value: boolean) {
28
- this.config.disallowInterruption = value;
29
- return this;
30
- }
31
- }
32
-
33
- export type NativeGestureType = InstanceType<typeof NativeGesture>;
@@ -1,26 +0,0 @@
1
- import { TurboModuleRegistry, TurboModule } from 'react-native';
2
- import { Double } from 'react-native/Libraries/Types/CodegenTypes';
3
-
4
- export interface Spec extends TurboModule {
5
- handleSetJSResponder: (tag: Double, blockNativeResponder: boolean) => void;
6
- handleClearJSResponder: () => void;
7
- createGestureHandler: (
8
- handlerName: string,
9
- handlerTag: Double,
10
- // Record<> is not supported by codegen
11
- // eslint-disable-next-line @typescript-eslint/ban-types
12
- config: Object
13
- ) => void;
14
- attachGestureHandler: (
15
- handlerTag: Double,
16
- newView: Double,
17
- actionType: Double
18
- ) => void;
19
- // eslint-disable-next-line @typescript-eslint/ban-types
20
- updateGestureHandler: (handlerTag: Double, newConfig: Object) => void;
21
- dropGestureHandler: (handlerTag: Double) => void;
22
- install: () => boolean;
23
- flushOperations: () => void;
24
- }
25
-
26
- export default TurboModuleRegistry.getEnforcing<Spec>('RNGestureHandlerModule');
@@ -1,47 +0,0 @@
1
- import DiscreteGestureHandler from './DiscreteGestureHandler';
2
- import { HammerInputExt } from './GestureHandler';
3
- import * as NodeManager from './NodeManager';
4
- import PressGestureHandler from './PressGestureHandler';
5
- import { TEST_MIN_IF_NOT_NAN, VEC_LEN_SQ } from './utils';
6
-
7
- class NativeViewGestureHandler extends PressGestureHandler {
8
- get isNative() {
9
- return true;
10
- }
11
-
12
- onRawEvent(ev: HammerInputExt) {
13
- super.onRawEvent(ev);
14
- if (!ev.isFinal) {
15
- // if (this.ref instanceof ScrollView) {
16
- if (TEST_MIN_IF_NOT_NAN(VEC_LEN_SQ({ x: ev.deltaX, y: ev.deltaY }), 10)) {
17
- // @ts-ignore FIXME(TS) config type
18
- if (this.config.disallowInterruption) {
19
- const gestures = Object.values(NodeManager.getNodes()).filter(
20
- (gesture) => {
21
- const { handlerTag, view, isGestureRunning } = gesture;
22
- return (
23
- // Check if this gesture isn't self
24
- handlerTag !== this.handlerTag &&
25
- // Ensure the gesture needs to be cancelled
26
- isGestureRunning &&
27
- // ScrollView can cancel discrete gestures like taps and presses
28
- gesture instanceof DiscreteGestureHandler &&
29
- // Ensure a view exists and is a child of the current view
30
- view &&
31
- // @ts-ignore FIXME(TS) view type
32
- this.view.contains(view)
33
- );
34
- }
35
- );
36
- // Cancel all of the gestures that passed the filter
37
- for (const gesture of gestures) {
38
- // TODO: Bacon: Send some cached event.
39
- gesture.forceInvalidate(ev);
40
- }
41
- }
42
- }
43
- }
44
- }
45
- }
46
-
47
- export default NativeViewGestureHandler;
@@ -1,59 +0,0 @@
1
- import type { NativeViewGestureHandlerPayload } from './GestureHandlerEventPayload';
2
- import createHandler from './createHandler';
3
- import {
4
- BaseGestureHandlerProps,
5
- baseGestureHandlerProps,
6
- } from './gestureHandlerCommon';
7
-
8
- export const nativeViewGestureHandlerProps = [
9
- 'shouldActivateOnStart',
10
- 'disallowInterruption',
11
- ] as const;
12
-
13
- export interface NativeViewGestureConfig {
14
- /**
15
- * Android only.
16
- *
17
- * Determines whether the handler should check for an existing touch event on
18
- * instantiation.
19
- */
20
- shouldActivateOnStart?: boolean;
21
-
22
- /**
23
- * When `true`, cancels all other gesture handlers when this
24
- * `NativeViewGestureHandler` receives an `ACTIVE` state event.
25
- */
26
- disallowInterruption?: boolean;
27
- }
28
-
29
- /**
30
- * @deprecated NativeViewGestureHandler will be removed in the future version of Gesture Handler. Use `Gesture.Native()` instead.
31
- */
32
- export interface NativeViewGestureHandlerProps
33
- extends BaseGestureHandlerProps<NativeViewGestureHandlerPayload>,
34
- NativeViewGestureConfig {}
35
-
36
- export const nativeViewProps = [
37
- ...baseGestureHandlerProps,
38
- ...nativeViewGestureHandlerProps,
39
- ] as const;
40
-
41
- export const nativeViewHandlerName = 'NativeViewGestureHandler';
42
-
43
- /**
44
- * @deprecated NativeViewGestureHandler will be removed in the future version of Gesture Handler. Use `Gesture.Native()` instead.
45
- */
46
- export type NativeViewGestureHandler = typeof NativeViewGestureHandler;
47
-
48
- /**
49
- * @deprecated NativeViewGestureHandler will be removed in the future version of Gesture Handler. Use `Gesture.Native()` instead.
50
- */
51
- // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file
52
- export const NativeViewGestureHandler = createHandler<
53
- NativeViewGestureHandlerProps,
54
- NativeViewGestureHandlerPayload
55
- >({
56
- name: nativeViewHandlerName,
57
- allowedProps: nativeViewProps,
58
- config: {},
59
- });
@@ -1,33 +0,0 @@
1
- import { BaseGestureConfig, BaseGesture } from './gesture';
2
- import { NativeViewGestureConfig } from '../NativeViewGestureHandler';
3
- import type { NativeViewGestureHandlerPayload } from '../GestureHandlerEventPayload';
4
-
5
- export class NativeGesture extends BaseGesture<NativeViewGestureHandlerPayload> {
6
- public config: BaseGestureConfig & NativeViewGestureConfig = {};
7
-
8
- constructor() {
9
- super();
10
-
11
- this.handlerName = 'NativeViewGestureHandler';
12
- }
13
-
14
- /**
15
- * When true, underlying handler will activate unconditionally when in `BEGAN` or `UNDETERMINED` state.
16
- * @param value
17
- */
18
- shouldActivateOnStart(value: boolean) {
19
- this.config.shouldActivateOnStart = value;
20
- return this;
21
- }
22
-
23
- /**
24
- * When true, cancels all other gesture handlers when this `NativeViewGestureHandler` receives an `ACTIVE` state event.
25
- * @param value
26
- */
27
- disallowInterruption(value: boolean) {
28
- this.config.disallowInterruption = value;
29
- return this;
30
- }
31
- }
32
-
33
- export type NativeGestureType = InstanceType<typeof NativeGesture>;
@@ -1,26 +0,0 @@
1
- import { TurboModuleRegistry, TurboModule } from 'react-native';
2
- import { Double } from 'react-native/Libraries/Types/CodegenTypes';
3
-
4
- export interface Spec extends TurboModule {
5
- handleSetJSResponder: (tag: Double, blockNativeResponder: boolean) => void;
6
- handleClearJSResponder: () => void;
7
- createGestureHandler: (
8
- handlerName: string,
9
- handlerTag: Double,
10
- // Record<> is not supported by codegen
11
- // eslint-disable-next-line @typescript-eslint/ban-types
12
- config: Object
13
- ) => void;
14
- attachGestureHandler: (
15
- handlerTag: Double,
16
- newView: Double,
17
- actionType: Double
18
- ) => void;
19
- // eslint-disable-next-line @typescript-eslint/ban-types
20
- updateGestureHandler: (handlerTag: Double, newConfig: Object) => void;
21
- dropGestureHandler: (handlerTag: Double) => void;
22
- install: () => boolean;
23
- flushOperations: () => void;
24
- }
25
-
26
- export default TurboModuleRegistry.getEnforcing<Spec>('RNGestureHandlerModule');
@@ -1,47 +0,0 @@
1
- import DiscreteGestureHandler from './DiscreteGestureHandler';
2
- import { HammerInputExt } from './GestureHandler';
3
- import * as NodeManager from './NodeManager';
4
- import PressGestureHandler from './PressGestureHandler';
5
- import { TEST_MIN_IF_NOT_NAN, VEC_LEN_SQ } from './utils';
6
-
7
- class NativeViewGestureHandler extends PressGestureHandler {
8
- get isNative() {
9
- return true;
10
- }
11
-
12
- onRawEvent(ev: HammerInputExt) {
13
- super.onRawEvent(ev);
14
- if (!ev.isFinal) {
15
- // if (this.ref instanceof ScrollView) {
16
- if (TEST_MIN_IF_NOT_NAN(VEC_LEN_SQ({ x: ev.deltaX, y: ev.deltaY }), 10)) {
17
- // @ts-ignore FIXME(TS) config type
18
- if (this.config.disallowInterruption) {
19
- const gestures = Object.values(NodeManager.getNodes()).filter(
20
- (gesture) => {
21
- const { handlerTag, view, isGestureRunning } = gesture;
22
- return (
23
- // Check if this gesture isn't self
24
- handlerTag !== this.handlerTag &&
25
- // Ensure the gesture needs to be cancelled
26
- isGestureRunning &&
27
- // ScrollView can cancel discrete gestures like taps and presses
28
- gesture instanceof DiscreteGestureHandler &&
29
- // Ensure a view exists and is a child of the current view
30
- view &&
31
- // @ts-ignore FIXME(TS) view type
32
- this.view.contains(view)
33
- );
34
- }
35
- );
36
- // Cancel all of the gestures that passed the filter
37
- for (const gesture of gestures) {
38
- // TODO: Bacon: Send some cached event.
39
- gesture.forceInvalidate(ev);
40
- }
41
- }
42
- }
43
- }
44
- }
45
- }
46
-
47
- export default NativeViewGestureHandler;