react-native-gesture-handler 3.2.0-nightly-20260811-cc704f09a → 3.2.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 (98) hide show
  1. package/android/build.gradle +21 -6
  2. package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt +30 -66
  3. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +4 -2
  4. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerDetectorView.kt +1 -2
  5. package/apple/RNGestureHandler.mm +31 -23
  6. package/apple/RNGestureHandlerButtonComponentView.mm +10 -6
  7. package/lib/module/components/GestureHandlerButton.web.js +3 -2
  8. package/lib/module/components/GestureHandlerButton.web.js.map +1 -1
  9. package/lib/module/components/ReanimatedDrawerLayout.js +3 -0
  10. package/lib/module/components/ReanimatedDrawerLayout.js.map +1 -1
  11. package/lib/module/components/touchables/TouchableOpacity.js +1 -0
  12. package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
  13. package/lib/module/handlers/hitSlop.js +101 -0
  14. package/lib/module/handlers/hitSlop.js.map +1 -0
  15. package/lib/module/handlers/utils.js +3 -7
  16. package/lib/module/handlers/utils.js.map +1 -1
  17. package/lib/module/specs/RNGestureHandlerDetectorNativeComponent.ts +1 -1
  18. package/lib/module/specs/RNGestureHandlerRootViewNativeComponent.ts +1 -1
  19. package/lib/module/v3/components/Pressable.js +23 -312
  20. package/lib/module/v3/components/Pressable.js.map +1 -1
  21. package/lib/module/v3/components/PressableWithTouchable.js +259 -0
  22. package/lib/module/v3/components/PressableWithTouchable.js.map +1 -0
  23. package/lib/module/v3/components/StatefulPressable.js +338 -0
  24. package/lib/module/v3/components/StatefulPressable.js.map +1 -0
  25. package/lib/module/v3/components/pointerStyle.js +6 -0
  26. package/lib/module/v3/components/pointerStyle.js.map +1 -0
  27. package/lib/module/v3/components/pointerStyle.web.js +9 -0
  28. package/lib/module/v3/components/pointerStyle.web.js.map +1 -0
  29. package/lib/module/v3/hooks/utils/configUtils.js +3 -1
  30. package/lib/module/v3/hooks/utils/configUtils.js.map +1 -1
  31. package/lib/module/v3/hooks/utils/reanimatedUtils.js +14 -3
  32. package/lib/module/v3/hooks/utils/reanimatedUtils.js.map +1 -1
  33. package/lib/module/web/handlers/GestureHandler.js +21 -44
  34. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  35. package/lib/module/web/interfaces.js.map +1 -1
  36. package/lib/typescript/components/GestureComponents.web.d.ts +12 -4
  37. package/lib/typescript/components/GestureComponents.web.d.ts.map +1 -1
  38. package/lib/typescript/components/GestureHandlerButton.web.d.ts.map +1 -1
  39. package/lib/typescript/components/ReanimatedDrawerLayout.d.ts.map +1 -1
  40. package/lib/typescript/components/touchables/TouchableHighlight.d.ts +1 -1
  41. package/lib/typescript/components/touchables/TouchableHighlight.d.ts.map +1 -1
  42. package/lib/typescript/components/touchables/TouchableOpacity.d.ts.map +1 -1
  43. package/lib/typescript/handlers/hitSlop.d.ts +51 -0
  44. package/lib/typescript/handlers/hitSlop.d.ts.map +1 -0
  45. package/lib/typescript/handlers/utils.d.ts.map +1 -1
  46. package/lib/typescript/mocks/hostDetector.d.ts +5 -2
  47. package/lib/typescript/mocks/hostDetector.d.ts.map +1 -1
  48. package/lib/typescript/specs/RNGestureHandlerDetectorNativeComponent.d.ts +1 -1
  49. package/lib/typescript/specs/RNGestureHandlerDetectorNativeComponent.d.ts.map +1 -1
  50. package/lib/typescript/specs/RNGestureHandlerRootViewNativeComponent.d.ts +1 -1
  51. package/lib/typescript/specs/RNGestureHandlerRootViewNativeComponent.d.ts.map +1 -1
  52. package/lib/typescript/v3/components/GestureComponents.web.d.ts +16 -8
  53. package/lib/typescript/v3/components/GestureComponents.web.d.ts.map +1 -1
  54. package/lib/typescript/v3/components/Pressable.d.ts +13 -0
  55. package/lib/typescript/v3/components/Pressable.d.ts.map +1 -1
  56. package/lib/typescript/v3/components/PressableWithTouchable.d.ts +5 -0
  57. package/lib/typescript/v3/components/PressableWithTouchable.d.ts.map +1 -0
  58. package/lib/typescript/v3/components/StatefulPressable.d.ts +5 -0
  59. package/lib/typescript/v3/components/StatefulPressable.d.ts.map +1 -0
  60. package/lib/typescript/v3/components/pointerStyle.d.ts +3 -0
  61. package/lib/typescript/v3/components/pointerStyle.d.ts.map +1 -0
  62. package/lib/typescript/v3/components/pointerStyle.web.d.ts +3 -0
  63. package/lib/typescript/v3/components/pointerStyle.web.d.ts.map +1 -0
  64. package/lib/typescript/v3/detectors/ReanimatedNativeDetector.d.ts +3 -1
  65. package/lib/typescript/v3/detectors/ReanimatedNativeDetector.d.ts.map +1 -1
  66. package/lib/typescript/v3/detectors/ReanimatedNativeDetector.web.d.ts +3 -1
  67. package/lib/typescript/v3/detectors/ReanimatedNativeDetector.web.d.ts.map +1 -1
  68. package/lib/typescript/v3/detectors/common.d.ts +2 -2
  69. package/lib/typescript/v3/detectors/common.d.ts.map +1 -1
  70. package/lib/typescript/v3/hooks/utils/configUtils.d.ts.map +1 -1
  71. package/lib/typescript/v3/hooks/utils/reanimatedUtils.d.ts.map +1 -1
  72. package/lib/typescript/v3/types/ConfigTypes.d.ts +2 -1
  73. package/lib/typescript/v3/types/ConfigTypes.d.ts.map +1 -1
  74. package/lib/typescript/v3/types/EventTypes.d.ts +3 -2
  75. package/lib/typescript/v3/types/EventTypes.d.ts.map +1 -1
  76. package/lib/typescript/web/handlers/GestureHandler.d.ts +0 -1
  77. package/lib/typescript/web/handlers/GestureHandler.d.ts.map +1 -1
  78. package/lib/typescript/web/interfaces.d.ts +3 -12
  79. package/lib/typescript/web/interfaces.d.ts.map +1 -1
  80. package/package.json +6 -6
  81. package/src/components/GestureHandlerButton.web.tsx +3 -2
  82. package/src/components/ReanimatedDrawerLayout.tsx +3 -0
  83. package/src/components/touchables/TouchableOpacity.tsx +1 -0
  84. package/src/handlers/hitSlop.ts +146 -0
  85. package/src/handlers/utils.ts +4 -2
  86. package/src/specs/RNGestureHandlerDetectorNativeComponent.ts +1 -1
  87. package/src/specs/RNGestureHandlerRootViewNativeComponent.ts +1 -1
  88. package/src/v3/components/Pressable.tsx +28 -448
  89. package/src/v3/components/PressableWithTouchable.tsx +326 -0
  90. package/src/v3/components/StatefulPressable.tsx +476 -0
  91. package/src/v3/components/pointerStyle.ts +5 -0
  92. package/src/v3/components/pointerStyle.web.ts +6 -0
  93. package/src/v3/hooks/utils/configUtils.ts +7 -1
  94. package/src/v3/hooks/utils/reanimatedUtils.ts +17 -8
  95. package/src/v3/types/ConfigTypes.ts +2 -1
  96. package/src/v3/types/EventTypes.ts +7 -3
  97. package/src/web/handlers/GestureHandler.ts +26 -77
  98. package/src/web/interfaces.ts +3 -13
@@ -0,0 +1,259 @@
1
+ "use strict";
2
+
3
+ import React, { useEffect, useRef, useState } from 'react';
4
+ import { addInsets, isTouchWithinInset, numberAsInset } from '../../components/Pressable/utils';
5
+ import { PressabilityDebugView } from '../../handlers/PressabilityDebugView';
6
+ import { pointerStyle } from './pointerStyle';
7
+ import { Touchable } from './Touchable/Touchable';
8
+
9
+ // RN's Pressable default. Touchable's own default is 600ms
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
+ const DEFAULT_LONG_PRESS_DURATION = 500;
12
+ function normalizeInset(value) {
13
+ return typeof value === 'number' ? numberAsInset(value) : value ?? numberAsInset(0);
14
+ }
15
+ function buttonToInner(event) {
16
+ return {
17
+ identifier: 0,
18
+ locationX: event.x,
19
+ locationY: event.y,
20
+ pageX: event.absoluteX,
21
+ pageY: event.absoluteY,
22
+ target: 0,
23
+ timestamp: Date.now(),
24
+ touches: [],
25
+ changedTouches: [],
26
+ force: undefined
27
+ };
28
+ }
29
+ function buttonToPressableEvent(event) {
30
+ const inner = buttonToInner(event);
31
+ return {
32
+ nativeEvent: {
33
+ ...inner,
34
+ touches: [inner],
35
+ changedTouches: [inner]
36
+ }
37
+ };
38
+ }
39
+ const PressableWithTouchable = props => {
40
+ const {
41
+ testOnly_pressed,
42
+ hitSlop,
43
+ pressRetentionOffset,
44
+ delayHoverIn,
45
+ delayHoverOut,
46
+ delayLongPress,
47
+ unstable_pressDelay,
48
+ onHoverIn,
49
+ onHoverOut,
50
+ onPress,
51
+ onPressIn,
52
+ onPressOut,
53
+ onLongPress,
54
+ onLayout,
55
+ style,
56
+ children,
57
+ android_disableSound,
58
+ android_ripple,
59
+ disabled,
60
+ accessible,
61
+ ref,
62
+ ...rest
63
+ } = props;
64
+
65
+ // Drop props Touchable doesn't take: `cancelable`/`dimensionsAfterResize` are
66
+ // unsupported; the relation props are handled by the wrapper.
67
+ //
68
+ /* eslint-disable @typescript-eslint/no-unused-vars */
69
+ const {
70
+ cancelable,
71
+ dimensionsAfterResize,
72
+ simultaneousWith,
73
+ requireToFail,
74
+ block,
75
+ ...remainingProps
76
+ } = rest;
77
+ /* eslint-enable @typescript-eslint/no-unused-vars */
78
+
79
+ const [pressed, setPressed] = useState(false);
80
+ const timers = useRef({
81
+ press: null,
82
+ hoverIn: null,
83
+ hoverOut: null
84
+ });
85
+ const dimensions = useRef({
86
+ width: 0,
87
+ height: 0
88
+ });
89
+
90
+ // Whether the in-progress press activated within hitSlop (see handlePressIn).
91
+ const isActive = useRef(false);
92
+ useEffect(() => () => {
93
+ const pending = timers.current;
94
+ if (pending.press) {
95
+ clearTimeout(pending.press);
96
+ }
97
+ if (pending.hoverIn) {
98
+ clearTimeout(pending.hoverIn);
99
+ }
100
+ if (pending.hoverOut) {
101
+ clearTimeout(pending.hoverOut);
102
+ }
103
+ }, []);
104
+
105
+ // RN's ripple config allows `null` on every field; Touchable's excludes it.
106
+ // Normalize `null` → `undefined` so the types line up.
107
+ const androidRipple = android_ripple ? {
108
+ color: android_ripple.color ?? undefined,
109
+ borderless: android_ripple.borderless ?? undefined,
110
+ radius: android_ripple.radius ?? undefined,
111
+ foreground: android_ripple.foreground ?? undefined
112
+ } : undefined;
113
+
114
+ // Activation is gated to `normalizedHitSlop` (see handlePressIn); the native
115
+ // button gets the wider `appliedHitSlop` so an active press is retained out
116
+ // to hitSlop + pressRetentionOffset before it cancels.
117
+ const normalizedHitSlop = normalizeInset(hitSlop);
118
+ const appliedHitSlop = addInsets(normalizedHitSlop, normalizeInset(pressRetentionOffset));
119
+
120
+ // Long press is measured from onPressIn, which `unstable_pressDelay` defers,
121
+ // so fold it in to match RN / StatefulPressable.
122
+ const resolvedDelayLongPress = (delayLongPress ?? DEFAULT_LONG_PRESS_DURATION) + (unstable_pressDelay ?? 0);
123
+ const handleLayout = event => {
124
+ onLayout?.(event);
125
+ dimensions.current = event.nativeEvent.layout;
126
+ };
127
+ const firePressIn = event => {
128
+ setPressed(true);
129
+ onPressIn?.(buttonToPressableEvent(event));
130
+ };
131
+ const handlePressIn = event => {
132
+ // A down in the retention-only zone is held by the button but isn't a press.
133
+ isActive.current = isTouchWithinInset(dimensions.current, normalizedHitSlop, buttonToInner(event));
134
+ if (!isActive.current) {
135
+ return;
136
+ }
137
+ if (unstable_pressDelay) {
138
+ // Drop a still-pending timer so a re-entrant press can't double-fire.
139
+ if (timers.current.press) {
140
+ clearTimeout(timers.current.press);
141
+ }
142
+ timers.current.press = setTimeout(() => {
143
+ timers.current.press = null;
144
+ firePressIn(event);
145
+ }, unstable_pressDelay);
146
+ return;
147
+ }
148
+ firePressIn(event);
149
+ };
150
+ const handlePressOut = event => {
151
+ // Not cleared here: onPress fires after onPressOut and must stay suppressed
152
+ // too; isActive resets on the next press-in.
153
+ if (!isActive.current) {
154
+ return;
155
+ }
156
+
157
+ // If the touch is released before `unstable_pressDelay` elapses, RN still
158
+ // emits the deferred `onPressIn` before `onPressOut` — flush it now.
159
+ if (timers.current.press) {
160
+ clearTimeout(timers.current.press);
161
+ timers.current.press = null;
162
+ firePressIn(event);
163
+ }
164
+ setPressed(false);
165
+ onPressOut?.(buttonToPressableEvent(event));
166
+ };
167
+ const handlePress = onPress ? event => {
168
+ if (isActive.current) {
169
+ onPress(buttonToPressableEvent(event));
170
+ }
171
+ } : undefined;
172
+ const handleLongPress = onLongPress ? event => {
173
+ if (!isActive.current) {
174
+ return;
175
+ }
176
+ // Flush the deferred onPressIn so it can't arrive after onLongPress
177
+ // (e.g. delayLongPress={0} makes the two timers coincide).
178
+ if (timers.current.press) {
179
+ clearTimeout(timers.current.press);
180
+ timers.current.press = null;
181
+ firePressIn(event);
182
+ }
183
+ onLongPress(buttonToPressableEvent(event));
184
+ } : undefined;
185
+
186
+ // Wire each handler whenever the opposite side can leave a pending timer, so a
187
+ // delayed hover callback is cancelled once the pointer leaves/re-enters.
188
+ const needsHoverIn = onHoverIn != null || onHoverOut != null && !!delayHoverOut;
189
+ const needsHoverOut = onHoverOut != null || onHoverIn != null && !!delayHoverIn;
190
+ const handleHoverIn = needsHoverIn ? event => {
191
+ if (timers.current.hoverOut) {
192
+ clearTimeout(timers.current.hoverOut);
193
+ timers.current.hoverOut = null;
194
+ }
195
+ if (!onHoverIn) {
196
+ return;
197
+ }
198
+ if (delayHoverIn) {
199
+ timers.current.hoverIn = setTimeout(() => {
200
+ timers.current.hoverIn = null;
201
+ onHoverIn(buttonToPressableEvent(event));
202
+ }, delayHoverIn);
203
+ return;
204
+ }
205
+ onHoverIn(buttonToPressableEvent(event));
206
+ } : undefined;
207
+ const handleHoverOut = needsHoverOut ? event => {
208
+ if (timers.current.hoverIn) {
209
+ clearTimeout(timers.current.hoverIn);
210
+ timers.current.hoverIn = null;
211
+ }
212
+ if (!onHoverOut) {
213
+ return;
214
+ }
215
+ if (delayHoverOut) {
216
+ timers.current.hoverOut = setTimeout(() => {
217
+ timers.current.hoverOut = null;
218
+ onHoverOut(buttonToPressableEvent(event));
219
+ }, delayHoverOut);
220
+ return;
221
+ }
222
+ onHoverOut(buttonToPressableEvent(event));
223
+ } : undefined;
224
+
225
+ // `testOnly_pressed` forces the pressed state for snapshots/tests. Derive the
226
+ // displayed value from it each render, keeping the interactive `pressed` state
227
+ // independent (seeded to false) so clearing the prop doesn't leave it stuck.
228
+ const displayPressed = testOnly_pressed ?? pressed;
229
+ const resolvedStyle = typeof style === 'function' ? style({
230
+ pressed: displayPressed
231
+ }) : style;
232
+ const resolvedChildren = typeof children === 'function' ? children({
233
+ pressed: displayPressed
234
+ }) : children;
235
+ return /*#__PURE__*/_jsxs(Touchable, {
236
+ ...remainingProps,
237
+ ref: ref,
238
+ accessible: accessible !== false,
239
+ disabled: disabled === true,
240
+ hitSlop: appliedHitSlop,
241
+ onLayout: handleLayout,
242
+ androidRipple: androidRipple,
243
+ touchSoundDisabled: android_disableSound ?? undefined,
244
+ delayLongPress: resolvedDelayLongPress,
245
+ style: [pointerStyle, resolvedStyle],
246
+ onPressIn: handlePressIn,
247
+ onPressOut: handlePressOut,
248
+ onPress: handlePress,
249
+ onLongPress: handleLongPress,
250
+ onHoverIn: handleHoverIn,
251
+ onHoverOut: handleHoverOut,
252
+ children: [resolvedChildren, __DEV__ ? /*#__PURE__*/_jsx(PressabilityDebugView, {
253
+ color: "red",
254
+ hitSlop: normalizedHitSlop
255
+ }) : null]
256
+ });
257
+ };
258
+ export default PressableWithTouchable;
259
+ //# sourceMappingURL=PressableWithTouchable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","useRef","useState","addInsets","isTouchWithinInset","numberAsInset","PressabilityDebugView","pointerStyle","Touchable","jsx","_jsx","jsxs","_jsxs","DEFAULT_LONG_PRESS_DURATION","normalizeInset","value","buttonToInner","event","identifier","locationX","x","locationY","y","pageX","absoluteX","pageY","absoluteY","target","timestamp","Date","now","touches","changedTouches","force","undefined","buttonToPressableEvent","inner","nativeEvent","PressableWithTouchable","props","testOnly_pressed","hitSlop","pressRetentionOffset","delayHoverIn","delayHoverOut","delayLongPress","unstable_pressDelay","onHoverIn","onHoverOut","onPress","onPressIn","onPressOut","onLongPress","onLayout","style","children","android_disableSound","android_ripple","disabled","accessible","ref","rest","cancelable","dimensionsAfterResize","simultaneousWith","requireToFail","block","remainingProps","pressed","setPressed","timers","press","hoverIn","hoverOut","dimensions","width","height","isActive","pending","current","clearTimeout","androidRipple","color","borderless","radius","foreground","normalizedHitSlop","appliedHitSlop","resolvedDelayLongPress","handleLayout","layout","firePressIn","handlePressIn","setTimeout","handlePressOut","handlePress","handleLongPress","needsHoverIn","needsHoverOut","handleHoverIn","handleHoverOut","displayPressed","resolvedStyle","resolvedChildren","touchSoundDisabled","__DEV__"],"sourceRoot":"../../../../src","sources":["v3/components/PressableWithTouchable.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,338 @@
1
+ "use strict";
2
+
3
+ import React, { use, useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
+ import { Platform } from 'react-native';
5
+ import { getStatesConfig, StateMachineEvent } from '../../components/Pressable/stateDefinitions';
6
+ import { PressableStateMachine } from '../../components/Pressable/StateMachine';
7
+ import { addInsets, gestureToPressableEvent, gestureTouchToPressableEvent, isTouchWithinInset, numberAsInset, viewCenterToPressableEvent } from '../../components/Pressable/utils';
8
+ import { getTVProps } from '../../components/utils';
9
+ import { PressabilityDebugView } from '../../handlers/PressabilityDebugView';
10
+ import { useIsScreenReaderEnabled } from '../../useIsScreenReaderEnabled';
11
+ import { INT32_MAX, isTestEnv } from '../../utils';
12
+ import { GestureDetector } from '../detectors';
13
+ import { useHoverGesture, useLongPressGesture, useNativeGesture, useSimultaneousGestures } from '../hooks';
14
+ import { isKeyboardDismissingTap, JSResponderContext } from '../scrollViewInterop';
15
+ import { PureNativeButton } from './GestureButtons';
16
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
17
+ const DEFAULT_LONG_PRESS_DURATION = 500;
18
+ const IS_TEST_ENV = isTestEnv();
19
+ const StatefulPressable = props => {
20
+ const {
21
+ testOnly_pressed,
22
+ hitSlop,
23
+ pressRetentionOffset,
24
+ delayHoverIn,
25
+ delayHoverOut,
26
+ delayLongPress,
27
+ unstable_pressDelay,
28
+ onHoverIn,
29
+ onHoverOut,
30
+ onPress,
31
+ onPressIn,
32
+ onPressOut,
33
+ onLongPress,
34
+ onLayout,
35
+ style,
36
+ children,
37
+ android_disableSound,
38
+ android_ripple,
39
+ disabled,
40
+ accessible,
41
+ simultaneousWith,
42
+ requireToFail,
43
+ block,
44
+ ref,
45
+ ...remainingProps
46
+ } = props;
47
+ const [pressedState, setPressedState] = useState(false);
48
+ const longPressTimeoutRef = useRef(null);
49
+ const pressDelayTimeoutRef = useRef(null);
50
+ const isOnPressAllowed = useRef(true);
51
+ const jsResponderContext = use(JSResponderContext);
52
+ const isCurrentlyPressed = useRef(false);
53
+ const dimensions = useRef({
54
+ width: 0,
55
+ height: 0
56
+ });
57
+
58
+ // When the touch that begins a press is the one dismissing the keyboard
59
+ // (keyboardShouldPersistTaps="never"), the press is swallowed to match RN's
60
+ // touchables.
61
+ const dropKeyboardTapRef = useRef(null);
62
+ const normalizedHitSlop = useMemo(() => typeof hitSlop === 'number' ? numberAsInset(hitSlop) : hitSlop ?? numberAsInset(0), [hitSlop]);
63
+ const normalizedPressRetentionOffset = useMemo(() => typeof pressRetentionOffset === 'number' ? numberAsInset(pressRetentionOffset) : pressRetentionOffset ?? {}, [pressRetentionOffset]);
64
+ const appliedHitSlop = addInsets(normalizedHitSlop, normalizedPressRetentionOffset);
65
+ const cancelLongPress = useCallback(() => {
66
+ if (longPressTimeoutRef.current) {
67
+ clearTimeout(longPressTimeoutRef.current);
68
+ longPressTimeoutRef.current = null;
69
+ isOnPressAllowed.current = true;
70
+ }
71
+ }, []);
72
+ const cancelDelayedPress = useCallback(() => {
73
+ if (pressDelayTimeoutRef.current) {
74
+ clearTimeout(pressDelayTimeoutRef.current);
75
+ pressDelayTimeoutRef.current = null;
76
+ }
77
+ }, []);
78
+ const startLongPress = useCallback(event => {
79
+ if (onLongPress) {
80
+ cancelLongPress();
81
+ longPressTimeoutRef.current = setTimeout(() => {
82
+ isOnPressAllowed.current = false;
83
+ onLongPress(event);
84
+ }, delayLongPress ?? DEFAULT_LONG_PRESS_DURATION);
85
+ }
86
+ }, [onLongPress, cancelLongPress, delayLongPress]);
87
+ const innerHandlePressIn = useCallback(event => {
88
+ onPressIn?.(event);
89
+ startLongPress(event);
90
+ setPressedState(true);
91
+ if (pressDelayTimeoutRef.current) {
92
+ clearTimeout(pressDelayTimeoutRef.current);
93
+ pressDelayTimeoutRef.current = null;
94
+ }
95
+ }, [onPressIn, startLongPress]);
96
+ const handleFinalize = useCallback(() => {
97
+ isCurrentlyPressed.current = false;
98
+ dropKeyboardTapRef.current = null;
99
+ cancelLongPress();
100
+ cancelDelayedPress();
101
+ setPressedState(false);
102
+ }, [cancelDelayedPress, cancelLongPress]);
103
+ const captureKeyboardDismiss = useCallback(() => {
104
+ dropKeyboardTapRef.current ??= isKeyboardDismissingTap(jsResponderContext);
105
+ }, [jsResponderContext]);
106
+ const handlePressIn = useCallback((event, skipBoundsCheck = false) => {
107
+ if (!skipBoundsCheck && !isTouchWithinInset(dimensions.current, normalizedHitSlop, event.nativeEvent.changedTouches.at(-1))) {
108
+ // Ignoring pressIn within pressRetentionOffset
109
+ return;
110
+ }
111
+ isCurrentlyPressed.current = true;
112
+ if (unstable_pressDelay) {
113
+ pressDelayTimeoutRef.current = setTimeout(() => {
114
+ innerHandlePressIn(event);
115
+ }, unstable_pressDelay);
116
+ } else {
117
+ innerHandlePressIn(event);
118
+ }
119
+ }, [innerHandlePressIn, normalizedHitSlop, unstable_pressDelay]);
120
+ const handlePressOut = useCallback((event, success = true) => {
121
+ if (!isCurrentlyPressed.current) {
122
+ // Some prop configurations may lead to handlePressOut being called multiple times.
123
+ return;
124
+ }
125
+ isCurrentlyPressed.current = false;
126
+ if (pressDelayTimeoutRef.current) {
127
+ innerHandlePressIn(event);
128
+ }
129
+ onPressOut?.(event);
130
+ if (isOnPressAllowed.current && success) {
131
+ onPress?.(event);
132
+ }
133
+ handleFinalize();
134
+ }, [handleFinalize, innerHandlePressIn, onPress, onPressOut]);
135
+ const stateMachine = useMemo(() => new PressableStateMachine(), []);
136
+ const isScreenReaderEnabled = useIsScreenReaderEnabled();
137
+ useEffect(() => {
138
+ const configuration = getStatesConfig(handlePressIn, handlePressOut, isScreenReaderEnabled);
139
+ stateMachine.setStates(configuration);
140
+ }, [handlePressIn, handlePressOut, stateMachine, isScreenReaderEnabled]);
141
+ const hoverInTimeout = useRef(null);
142
+ const hoverOutTimeout = useRef(null);
143
+ useEffect(() => () => {
144
+ if (longPressTimeoutRef.current) {
145
+ clearTimeout(longPressTimeoutRef.current);
146
+ }
147
+ if (pressDelayTimeoutRef.current) {
148
+ clearTimeout(pressDelayTimeoutRef.current);
149
+ }
150
+ if (hoverInTimeout.current) {
151
+ clearTimeout(hoverInTimeout.current);
152
+ }
153
+ if (hoverOutTimeout.current) {
154
+ clearTimeout(hoverOutTimeout.current);
155
+ }
156
+ }, []);
157
+ const hoverGesture = useHoverGesture({
158
+ manualActivation: true,
159
+ // Prevents Hover blocking Native gesture on web
160
+ cancelsTouchesInView: false,
161
+ onBegin: event => {
162
+ if (hoverOutTimeout.current) {
163
+ clearTimeout(hoverOutTimeout.current);
164
+ }
165
+ if (delayHoverIn) {
166
+ hoverInTimeout.current = setTimeout(() => onHoverIn?.(gestureToPressableEvent(event)), delayHoverIn);
167
+ return;
168
+ }
169
+ onHoverIn?.(gestureToPressableEvent(event));
170
+ },
171
+ onFinalize: event => {
172
+ if (hoverInTimeout.current) {
173
+ clearTimeout(hoverInTimeout.current);
174
+ }
175
+ if (delayHoverOut) {
176
+ hoverOutTimeout.current = setTimeout(() => onHoverOut?.(gestureToPressableEvent(event)), delayHoverOut);
177
+ return;
178
+ }
179
+ onHoverOut?.(gestureToPressableEvent(event));
180
+ },
181
+ enabled: disabled !== true,
182
+ disableReanimated: true,
183
+ simultaneousWith,
184
+ block,
185
+ requireToFail,
186
+ hitSlop: appliedHitSlop
187
+ });
188
+ const pressAndTouchGesture = useLongPressGesture({
189
+ minDuration: Platform.OS === 'web' ? 0 : INT32_MAX,
190
+ // Long press handles finalize on web, thus it must activate right away
191
+ maxDistance: INT32_MAX,
192
+ // Stops long press from cancelling on touch move
193
+ cancelsTouchesInView: false,
194
+ onTouchesDown: event => {
195
+ captureKeyboardDismiss();
196
+ if (dropKeyboardTapRef.current) {
197
+ return;
198
+ }
199
+ const pressableEvent = gestureTouchToPressableEvent(event);
200
+ stateMachine.handleEvent(StateMachineEvent.LONG_PRESS_TOUCHES_DOWN, pressableEvent);
201
+ },
202
+ onTouchesUp: () => {
203
+ if (Platform.OS === 'android' && !isScreenReaderEnabled) {
204
+ // Prevents potential soft-locks
205
+ stateMachine.reset();
206
+ handleFinalize();
207
+ }
208
+ },
209
+ onTouchesCancel: event => {
210
+ const pressableEvent = gestureTouchToPressableEvent(event);
211
+ stateMachine.reset();
212
+ handlePressOut(pressableEvent, false);
213
+ },
214
+ onFinalize: event => {
215
+ if (Platform.OS !== 'web') {
216
+ return;
217
+ }
218
+ stateMachine.handleEvent(event.canceled ? StateMachineEvent.CANCEL : StateMachineEvent.FINALIZE);
219
+ handleFinalize();
220
+ },
221
+ enabled: disabled !== true,
222
+ disableReanimated: true,
223
+ simultaneousWith: simultaneousWith,
224
+ block: block,
225
+ requireToFail: requireToFail,
226
+ hitSlop: appliedHitSlop
227
+ });
228
+
229
+ // RNButton is placed inside ButtonGesture to enable Android's ripple and to capture non-propagating events
230
+ const buttonGesture = useNativeGesture({
231
+ onTouchesCancel: event => {
232
+ if (Platform.OS !== 'macos' && Platform.OS !== 'web') {
233
+ // On MacOS cancel occurs in middle of gesture
234
+ // On Web cancel occurs on mouse move, which is unwanted
235
+ const pressableEvent = gestureTouchToPressableEvent(event);
236
+ stateMachine.reset();
237
+ handlePressOut(pressableEvent, false);
238
+ }
239
+ },
240
+ onBegin: () => {
241
+ captureKeyboardDismiss();
242
+ if (dropKeyboardTapRef.current) {
243
+ return;
244
+ }
245
+ if (Platform.isTV) {
246
+ // tvOS drives this native gesture from the focus-engine Select press.
247
+ // The press state machine is touch-based and never
248
+ // receives LONG_PRESS_TOUCHES_DOWN here, so bypass it and drive the press handlers directly.
249
+ // A focus-driven press has no coordinates, so skip the hit-slop bounds check entirely.
250
+ handlePressIn(viewCenterToPressableEvent(dimensions.current), true);
251
+ return;
252
+ }
253
+ if (Platform.OS === 'android' && isScreenReaderEnabled) {
254
+ stateMachine.handleEvent(StateMachineEvent.NATIVE_BEGIN, viewCenterToPressableEvent(dimensions.current));
255
+ return;
256
+ }
257
+ stateMachine.handleEvent(StateMachineEvent.NATIVE_BEGIN);
258
+ },
259
+ onActivate: () => {
260
+ if (!Platform.isTV && Platform.OS !== 'android') {
261
+ stateMachine.handleEvent(StateMachineEvent.NATIVE_START);
262
+ }
263
+ },
264
+ onFinalize: event => {
265
+ // On Web we use LongPress.onFinalize instead of Native.onFinalize,
266
+ // as Native cancels on mouse move, and LongPress does not.
267
+ if (Platform.OS === 'web') {
268
+ return;
269
+ }
270
+ if (Platform.isTV) {
271
+ handlePressOut(viewCenterToPressableEvent(dimensions.current), !event.canceled);
272
+ handleFinalize();
273
+ return;
274
+ }
275
+ stateMachine.handleEvent(event.canceled ? StateMachineEvent.CANCEL : StateMachineEvent.FINALIZE);
276
+ handleFinalize();
277
+ },
278
+ enabled: disabled !== true,
279
+ disableReanimated: true,
280
+ simultaneousWith,
281
+ block,
282
+ requireToFail,
283
+ hitSlop: appliedHitSlop,
284
+ shouldActivateOnStart: Platform.OS === 'web'
285
+ });
286
+ const gesture = useSimultaneousGestures(buttonGesture, pressAndTouchGesture, hoverGesture);
287
+
288
+ // `cursor: 'pointer'` on `RNButton` crashes iOS
289
+ const pointerStyle = Platform.OS === 'web' ? {
290
+ cursor: 'pointer'
291
+ } : {};
292
+
293
+ // `testOnly_pressed` forces the pressed state for snapshots/tests. Derive the
294
+ // displayed value from it each render, keeping the interactive `pressedState`
295
+ // independent (seeded to false) so clearing the prop doesn't leave it stuck.
296
+ const displayPressed = testOnly_pressed ?? pressedState;
297
+ const styleProp = typeof style === 'function' ? style({
298
+ pressed: displayPressed
299
+ }) : style;
300
+ const childrenProp = typeof children === 'function' ? children({
301
+ pressed: displayPressed
302
+ }) : children;
303
+ const rippleColor = useMemo(() => {
304
+ const defaultRippleColor = android_ripple ? undefined : 'transparent';
305
+ return android_ripple?.color ?? defaultRippleColor;
306
+ }, [android_ripple]);
307
+ const setDimensions = useCallback(event => {
308
+ onLayout?.(event);
309
+ dimensions.current = event.nativeEvent.layout;
310
+ }, [onLayout]);
311
+ const tvProps = getTVProps(remainingProps);
312
+ return /*#__PURE__*/_jsx(GestureDetector, {
313
+ gesture: gesture,
314
+ children: /*#__PURE__*/_jsxs(PureNativeButton, {
315
+ ...remainingProps,
316
+ ref: ref,
317
+ ...tvProps,
318
+ onLayout: setDimensions,
319
+ accessible: accessible !== false,
320
+ hitSlop: appliedHitSlop,
321
+ enabled: disabled !== true,
322
+ touchSoundDisabled: android_disableSound ?? undefined,
323
+ rippleColor: rippleColor,
324
+ rippleRadius: android_ripple?.radius ?? undefined,
325
+ style: [pointerStyle, styleProp],
326
+ testOnly_onPress: IS_TEST_ENV ? onPress : undefined,
327
+ testOnly_onPressIn: IS_TEST_ENV ? onPressIn : undefined,
328
+ testOnly_onPressOut: IS_TEST_ENV ? onPressOut : undefined,
329
+ testOnly_onLongPress: IS_TEST_ENV ? onLongPress : undefined,
330
+ children: [childrenProp, __DEV__ ? /*#__PURE__*/_jsx(PressabilityDebugView, {
331
+ color: "red",
332
+ hitSlop: normalizedHitSlop
333
+ }) : null]
334
+ })
335
+ });
336
+ };
337
+ export default StatefulPressable;
338
+ //# sourceMappingURL=StatefulPressable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","use","useCallback","useEffect","useMemo","useRef","useState","Platform","getStatesConfig","StateMachineEvent","PressableStateMachine","addInsets","gestureToPressableEvent","gestureTouchToPressableEvent","isTouchWithinInset","numberAsInset","viewCenterToPressableEvent","getTVProps","PressabilityDebugView","useIsScreenReaderEnabled","INT32_MAX","isTestEnv","GestureDetector","useHoverGesture","useLongPressGesture","useNativeGesture","useSimultaneousGestures","isKeyboardDismissingTap","JSResponderContext","PureNativeButton","jsx","_jsx","jsxs","_jsxs","DEFAULT_LONG_PRESS_DURATION","IS_TEST_ENV","StatefulPressable","props","testOnly_pressed","hitSlop","pressRetentionOffset","delayHoverIn","delayHoverOut","delayLongPress","unstable_pressDelay","onHoverIn","onHoverOut","onPress","onPressIn","onPressOut","onLongPress","onLayout","style","children","android_disableSound","android_ripple","disabled","accessible","simultaneousWith","requireToFail","block","ref","remainingProps","pressedState","setPressedState","longPressTimeoutRef","pressDelayTimeoutRef","isOnPressAllowed","jsResponderContext","isCurrentlyPressed","dimensions","width","height","dropKeyboardTapRef","normalizedHitSlop","normalizedPressRetentionOffset","appliedHitSlop","cancelLongPress","current","clearTimeout","cancelDelayedPress","startLongPress","event","setTimeout","innerHandlePressIn","handleFinalize","captureKeyboardDismiss","handlePressIn","skipBoundsCheck","nativeEvent","changedTouches","at","handlePressOut","success","stateMachine","isScreenReaderEnabled","configuration","setStates","hoverInTimeout","hoverOutTimeout","hoverGesture","manualActivation","cancelsTouchesInView","onBegin","onFinalize","enabled","disableReanimated","pressAndTouchGesture","minDuration","OS","maxDistance","onTouchesDown","pressableEvent","handleEvent","LONG_PRESS_TOUCHES_DOWN","onTouchesUp","reset","onTouchesCancel","canceled","CANCEL","FINALIZE","buttonGesture","isTV","NATIVE_BEGIN","onActivate","NATIVE_START","shouldActivateOnStart","gesture","pointerStyle","cursor","displayPressed","styleProp","pressed","childrenProp","rippleColor","defaultRippleColor","undefined","color","setDimensions","layout","tvProps","touchSoundDisabled","rippleRadius","radius","testOnly_onPress","testOnly_onPressIn","testOnly_onPressOut","testOnly_onLongPress","__DEV__"],"sourceRoot":"../../../../src","sources":["v3/components/StatefulPressable.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ // A pointer cursor only applies on the web (see the `.web` counterpart); other
4
+ // platforms contribute nothing.
5
+ export const pointerStyle = {};
6
+ //# sourceMappingURL=pointerStyle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["pointerStyle"],"sourceRoot":"../../../../src","sources":["v3/components/pointerStyle.ts"],"mappings":";;AAEA;AACA;AACA,OAAO,MAAMA,YAAuB,GAAG,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ // react-native-web sets `cursor: 'pointer'` on its interactive components
4
+ // (Pressable, TouchableOpacity, …) but not on `View`, which the native button
5
+ // renders — so the Touchable-based Pressable adds it here to match RN Pressable.
6
+ export const pointerStyle = {
7
+ cursor: 'pointer'
8
+ };
9
+ //# sourceMappingURL=pointerStyle.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["pointerStyle","cursor"],"sourceRoot":"../../../../src","sources":["v3/components/pointerStyle.web.ts"],"mappings":";;AAEA;AACA;AACA;AACA,OAAO,MAAMA,YAAuB,GAAG;EAAEC,MAAM,EAAE;AAAU,CAAC","ignoreList":[]}