@tamagui/react-native-use-pressable 1.61.3 → 1.62.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.
- package/dist/cjs/PressResponder.js +69 -253
- package/dist/cjs/PressResponder.js.map +1 -1
- package/dist/cjs/PressResponder.native.js +235 -0
- package/dist/cjs/PressResponder.native.js.map +6 -0
- package/dist/cjs/index.js +13 -27
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.native.js +44 -0
- package/dist/cjs/index.native.js.map +6 -0
- package/dist/esm/PressResponder.js +64 -244
- package/dist/esm/PressResponder.js.map +1 -1
- package/dist/esm/index.js +5 -12
- package/dist/esm/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
const DELAY = "DELAY"
|
|
2
|
-
const ERROR = "ERROR";
|
|
3
|
-
const LONG_PRESS_DETECTED = "LONG_PRESS_DETECTED";
|
|
4
|
-
const NOT_RESPONDER = "NOT_RESPONDER";
|
|
5
|
-
const RESPONDER_ACTIVE_LONG_PRESS_START = "RESPONDER_ACTIVE_LONG_PRESS_START";
|
|
6
|
-
const RESPONDER_ACTIVE_PRESS_START = "RESPONDER_ACTIVE_PRESS_START";
|
|
7
|
-
const RESPONDER_INACTIVE_PRESS_START = "RESPONDER_INACTIVE_PRESS_START";
|
|
8
|
-
const RESPONDER_GRANT = "RESPONDER_GRANT";
|
|
9
|
-
const RESPONDER_RELEASE = "RESPONDER_RELEASE";
|
|
10
|
-
const RESPONDER_TERMINATED = "RESPONDER_TERMINATED";
|
|
11
|
-
const Transitions = Object.freeze({
|
|
1
|
+
const DELAY = "DELAY", ERROR = "ERROR", LONG_PRESS_DETECTED = "LONG_PRESS_DETECTED", NOT_RESPONDER = "NOT_RESPONDER", RESPONDER_ACTIVE_LONG_PRESS_START = "RESPONDER_ACTIVE_LONG_PRESS_START", RESPONDER_ACTIVE_PRESS_START = "RESPONDER_ACTIVE_PRESS_START", RESPONDER_INACTIVE_PRESS_START = "RESPONDER_INACTIVE_PRESS_START", RESPONDER_GRANT = "RESPONDER_GRANT", RESPONDER_RELEASE = "RESPONDER_RELEASE", RESPONDER_TERMINATED = "RESPONDER_TERMINATED", Transitions = Object.freeze({
|
|
12
2
|
NOT_RESPONDER: {
|
|
13
3
|
DELAY: ERROR,
|
|
14
4
|
RESPONDER_GRANT: RESPONDER_INACTIVE_PRESS_START,
|
|
@@ -44,32 +34,22 @@ const Transitions = Object.freeze({
|
|
|
44
34
|
RESPONDER_TERMINATED: NOT_RESPONDER,
|
|
45
35
|
LONG_PRESS_DETECTED: NOT_RESPONDER
|
|
46
36
|
}
|
|
47
|
-
})
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const isTerminalSignal = (signal) => signal === RESPONDER_TERMINATED || signal === RESPONDER_RELEASE;
|
|
52
|
-
const isValidKeyPress = (event) => {
|
|
53
|
-
const key = event.key;
|
|
54
|
-
const target = event.target;
|
|
55
|
-
const role = target.getAttribute("role");
|
|
56
|
-
const isSpacebar = key === " " || key === "Spacebar";
|
|
57
|
-
return key === "Enter" || isSpacebar && role === "button";
|
|
58
|
-
};
|
|
59
|
-
const DEFAULT_LONG_PRESS_DELAY_MS = 450;
|
|
60
|
-
const DEFAULT_PRESS_DELAY_MS = 50;
|
|
37
|
+
}), isActiveSignal = (signal) => signal === RESPONDER_ACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_LONG_PRESS_START, isButtonRole = (element) => element.getAttribute("role") === "button", isPressStartSignal = (signal) => signal === RESPONDER_INACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_LONG_PRESS_START, isTerminalSignal = (signal) => signal === RESPONDER_TERMINATED || signal === RESPONDER_RELEASE, isValidKeyPress = (event) => {
|
|
38
|
+
const key = event.key, role = event.target.getAttribute("role");
|
|
39
|
+
return key === "Enter" || (key === " " || key === "Spacebar") && role === "button";
|
|
40
|
+
}, DEFAULT_LONG_PRESS_DELAY_MS = 450, DEFAULT_PRESS_DELAY_MS = 50;
|
|
61
41
|
class PressResponder {
|
|
42
|
+
_touchActivatePosition = null;
|
|
43
|
+
_pressDelayTimeout = 0;
|
|
44
|
+
_selectionTerminated = !1;
|
|
45
|
+
_isPointerTouch = !1;
|
|
46
|
+
_longPressDelayTimeout = 0;
|
|
47
|
+
_longPressDispatched = !1;
|
|
48
|
+
_pressOutDelayTimeout = 0;
|
|
49
|
+
_touchState = NOT_RESPONDER;
|
|
50
|
+
_config = null;
|
|
51
|
+
_eventHandlers = null;
|
|
62
52
|
constructor(config) {
|
|
63
|
-
this._touchActivatePosition = null;
|
|
64
|
-
this._pressDelayTimeout = 0;
|
|
65
|
-
this._selectionTerminated = false;
|
|
66
|
-
this._isPointerTouch = false;
|
|
67
|
-
this._longPressDelayTimeout = 0;
|
|
68
|
-
this._longPressDispatched = false;
|
|
69
|
-
this._pressOutDelayTimeout = 0;
|
|
70
|
-
this._touchState = NOT_RESPONDER;
|
|
71
|
-
this._config = null;
|
|
72
|
-
this._eventHandlers = null;
|
|
73
53
|
this.configure(config);
|
|
74
54
|
}
|
|
75
55
|
configure(config) {
|
|
@@ -79,40 +59,25 @@ class PressResponder {
|
|
|
79
59
|
* Resets any pending timers. This should be called on unmount.
|
|
80
60
|
*/
|
|
81
61
|
reset() {
|
|
82
|
-
this._cancelLongPressDelayTimeout();
|
|
83
|
-
this._cancelPressDelayTimeout();
|
|
84
|
-
this._cancelPressOutDelayTimeout();
|
|
62
|
+
this._cancelLongPressDelayTimeout(), this._cancelPressDelayTimeout(), this._cancelPressOutDelayTimeout();
|
|
85
63
|
}
|
|
86
64
|
/**
|
|
87
65
|
* Returns a set of props to spread into the interactive element.
|
|
88
66
|
*/
|
|
89
67
|
getEventHandlers() {
|
|
90
|
-
|
|
91
|
-
this._eventHandlers = this._createEventHandlers();
|
|
92
|
-
}
|
|
93
|
-
return this._eventHandlers;
|
|
68
|
+
return this._eventHandlers == null && (this._eventHandlers = this._createEventHandlers()), this._eventHandlers;
|
|
94
69
|
}
|
|
95
70
|
_createEventHandlers() {
|
|
96
71
|
const start = (event, shouldDelay) => {
|
|
97
|
-
event.persist();
|
|
98
|
-
this._cancelPressOutDelayTimeout();
|
|
99
|
-
this._longPressDispatched = false;
|
|
100
|
-
this._selectionTerminated = false;
|
|
101
|
-
this._touchState = NOT_RESPONDER;
|
|
102
|
-
this._isPointerTouch = event.nativeEvent.type === "touchstart";
|
|
103
|
-
this._receiveSignal(RESPONDER_GRANT, event);
|
|
72
|
+
event.persist(), this._cancelPressOutDelayTimeout(), this._longPressDispatched = !1, this._selectionTerminated = !1, this._touchState = NOT_RESPONDER, this._isPointerTouch = event.nativeEvent.type === "touchstart", this._receiveSignal(RESPONDER_GRANT, event);
|
|
104
73
|
const delayPressStart = normalizeDelay(
|
|
105
74
|
this._config.delayPressStart,
|
|
106
75
|
0,
|
|
107
76
|
DEFAULT_PRESS_DELAY_MS
|
|
108
77
|
);
|
|
109
|
-
|
|
110
|
-
this._pressDelayTimeout = setTimeout(() => {
|
|
111
|
-
this._receiveSignal(DELAY, event);
|
|
112
|
-
}, delayPressStart);
|
|
113
|
-
} else {
|
|
78
|
+
shouldDelay !== !1 && delayPressStart > 0 ? this._pressDelayTimeout = setTimeout(() => {
|
|
114
79
|
this._receiveSignal(DELAY, event);
|
|
115
|
-
}
|
|
80
|
+
}, delayPressStart) : this._receiveSignal(DELAY, event);
|
|
116
81
|
const delayLongPress = normalizeDelay(
|
|
117
82
|
this._config.delayLongPress,
|
|
118
83
|
10,
|
|
@@ -121,86 +86,45 @@ class PressResponder {
|
|
|
121
86
|
this._longPressDelayTimeout = setTimeout(() => {
|
|
122
87
|
this._handleLongPress(event);
|
|
123
88
|
}, delayLongPress + delayPressStart);
|
|
124
|
-
}
|
|
125
|
-
const end = (event) => {
|
|
89
|
+
}, end = (event) => {
|
|
126
90
|
this._receiveSignal(RESPONDER_RELEASE, event);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
const onPress = this._config.onPress;
|
|
130
|
-
const target = event.target;
|
|
91
|
+
}, keyupHandler = (event) => {
|
|
92
|
+
const onPress = this._config.onPress, target = event.target;
|
|
131
93
|
if (this._touchState !== NOT_RESPONDER && isValidKeyPress(event)) {
|
|
132
|
-
end(event);
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
const elementType = target.tagName.toLowerCase();
|
|
136
|
-
const isNativeInteractiveElement = role === "link" || elementType === "a" || elementType === "button" || elementType === "input" || elementType === "select" || elementType === "textarea";
|
|
137
|
-
if (onPress != null && !isNativeInteractiveElement) {
|
|
138
|
-
onPress(event);
|
|
139
|
-
}
|
|
94
|
+
end(event), document.removeEventListener("keyup", keyupHandler);
|
|
95
|
+
const role = target.getAttribute("role"), elementType = target.tagName.toLowerCase(), isNativeInteractiveElement = role === "link" || elementType === "a" || elementType === "button" || elementType === "input" || elementType === "select" || elementType === "textarea";
|
|
96
|
+
onPress != null && !isNativeInteractiveElement && onPress(event);
|
|
140
97
|
}
|
|
141
98
|
};
|
|
142
99
|
return {
|
|
143
100
|
onStartShouldSetResponder: (event) => {
|
|
144
101
|
const disabled = this._config.disabled;
|
|
145
|
-
|
|
146
|
-
event.stopPropagation();
|
|
147
|
-
}
|
|
148
|
-
if (disabled == null) {
|
|
149
|
-
return true;
|
|
150
|
-
}
|
|
151
|
-
return !disabled;
|
|
102
|
+
return disabled && isButtonRole(event.currentTarget) && event.stopPropagation(), disabled == null ? !0 : !disabled;
|
|
152
103
|
},
|
|
153
104
|
onKeyDown: (event) => {
|
|
154
|
-
const disabled = this._config.disabled;
|
|
155
|
-
const key = event.key;
|
|
156
|
-
const target = event.target;
|
|
105
|
+
const disabled = this._config.disabled, key = event.key, target = event.target;
|
|
157
106
|
if (!disabled && isValidKeyPress(event)) {
|
|
158
|
-
|
|
159
|
-
start(event, false);
|
|
160
|
-
document.addEventListener("keyup", keyupHandler);
|
|
161
|
-
}
|
|
107
|
+
this._touchState === NOT_RESPONDER && (start(event, !1), document.addEventListener("keyup", keyupHandler));
|
|
162
108
|
const role = target.getAttribute("role");
|
|
163
|
-
|
|
164
|
-
const _isButtonRole = role === "button" || role === "menuitem";
|
|
165
|
-
if (isSpacebarKey && _isButtonRole) {
|
|
166
|
-
event.preventDefault();
|
|
167
|
-
}
|
|
168
|
-
event.stopPropagation();
|
|
109
|
+
(key === " " || key === "Spacebar") && (role === "button" || role === "menuitem") && event.preventDefault(), event.stopPropagation();
|
|
169
110
|
}
|
|
170
111
|
},
|
|
171
112
|
onResponderGrant: (event) => start(event),
|
|
172
113
|
onResponderMove: (event) => {
|
|
173
|
-
|
|
174
|
-
this._config.onPressMove(event);
|
|
175
|
-
}
|
|
114
|
+
this._config.onPressMove != null && this._config.onPressMove(event);
|
|
176
115
|
const touch = getTouchFromResponderEvent(event);
|
|
177
116
|
if (this._touchActivatePosition != null) {
|
|
178
|
-
const deltaX = this._touchActivatePosition.pageX - touch.pageX;
|
|
179
|
-
|
|
180
|
-
if (Math.hypot(deltaX, deltaY) > 10) {
|
|
181
|
-
this._cancelLongPressDelayTimeout();
|
|
182
|
-
}
|
|
117
|
+
const deltaX = this._touchActivatePosition.pageX - touch.pageX, deltaY = this._touchActivatePosition.pageY - touch.pageY;
|
|
118
|
+
Math.hypot(deltaX, deltaY) > 10 && this._cancelLongPressDelayTimeout();
|
|
183
119
|
}
|
|
184
120
|
},
|
|
185
121
|
onResponderRelease: (event) => end(event),
|
|
186
122
|
onResponderTerminate: (event) => {
|
|
187
|
-
|
|
188
|
-
this._selectionTerminated = true;
|
|
189
|
-
}
|
|
190
|
-
this._receiveSignal(RESPONDER_TERMINATED, event);
|
|
123
|
+
event.nativeEvent.type === "selectionchange" && (this._selectionTerminated = !0), this._receiveSignal(RESPONDER_TERMINATED, event);
|
|
191
124
|
},
|
|
192
125
|
onResponderTerminationRequest: (event) => {
|
|
193
|
-
const _this$_config = this._config;
|
|
194
|
-
|
|
195
|
-
const disabled = _this$_config.disabled;
|
|
196
|
-
const onLongPress = _this$_config.onLongPress;
|
|
197
|
-
if (!disabled && onLongPress != null && this._isPointerTouch && event.nativeEvent.type === "contextmenu") {
|
|
198
|
-
return false;
|
|
199
|
-
}
|
|
200
|
-
if (cancelable == null) {
|
|
201
|
-
return true;
|
|
202
|
-
}
|
|
203
|
-
return cancelable;
|
|
126
|
+
const _this$_config = this._config, cancelable = _this$_config.cancelable, disabled = _this$_config.disabled, onLongPress = _this$_config.onLongPress;
|
|
127
|
+
return !disabled && onLongPress != null && this._isPointerTouch && event.nativeEvent.type === "contextmenu" ? !1 : cancelable ?? !0;
|
|
204
128
|
},
|
|
205
129
|
// NOTE: this diverges from react-native in 3 significant ways:
|
|
206
130
|
// * The `onPress` callback is not connected to the responder system (the native
|
|
@@ -211,38 +135,14 @@ class PressResponder {
|
|
|
211
135
|
// `click` target that is using the PressResponder.
|
|
212
136
|
// * The event's `nativeEvent` is a `MouseEvent` not a `TouchEvent`.
|
|
213
137
|
onClick: (event) => {
|
|
214
|
-
const _this$_config2 = this._config;
|
|
215
|
-
|
|
216
|
-
const onPress = _this$_config2.onPress;
|
|
217
|
-
if (!disabled) {
|
|
218
|
-
event.stopPropagation();
|
|
219
|
-
if (this._longPressDispatched || this._selectionTerminated) {
|
|
220
|
-
event.preventDefault();
|
|
221
|
-
} else if (onPress != null && event.altKey === false) {
|
|
222
|
-
onPress(event);
|
|
223
|
-
}
|
|
224
|
-
} else {
|
|
225
|
-
if (isButtonRole(event.currentTarget)) {
|
|
226
|
-
event.stopPropagation();
|
|
227
|
-
}
|
|
228
|
-
}
|
|
138
|
+
const _this$_config2 = this._config, disabled = _this$_config2.disabled, onPress = _this$_config2.onPress;
|
|
139
|
+
disabled ? isButtonRole(event.currentTarget) && event.stopPropagation() : (event.stopPropagation(), this._longPressDispatched || this._selectionTerminated ? event.preventDefault() : onPress != null && event.altKey === !1 && onPress(event));
|
|
229
140
|
},
|
|
230
141
|
// If `onLongPress` is provided and a touch pointer is being used, prevent the
|
|
231
142
|
// default context menu from opening.
|
|
232
143
|
onContextMenu: (event) => {
|
|
233
|
-
const _this$_config3 = this._config;
|
|
234
|
-
|
|
235
|
-
const onLongPress = _this$_config3.onLongPress;
|
|
236
|
-
if (!disabled) {
|
|
237
|
-
if (onLongPress != null && this._isPointerTouch && !event.defaultPrevented) {
|
|
238
|
-
event.preventDefault();
|
|
239
|
-
event.stopPropagation();
|
|
240
|
-
}
|
|
241
|
-
} else {
|
|
242
|
-
if (isButtonRole(event.currentTarget)) {
|
|
243
|
-
event.stopPropagation();
|
|
244
|
-
}
|
|
245
|
-
}
|
|
144
|
+
const _this$_config3 = this._config, disabled = _this$_config3.disabled, onLongPress = _this$_config3.onLongPress;
|
|
145
|
+
disabled ? isButtonRole(event.currentTarget) && event.stopPropagation() : onLongPress != null && this._isPointerTouch && !event.defaultPrevented && (event.preventDefault(), event.stopPropagation());
|
|
246
146
|
}
|
|
247
147
|
};
|
|
248
148
|
}
|
|
@@ -253,144 +153,64 @@ class PressResponder {
|
|
|
253
153
|
_receiveSignal(signal, event) {
|
|
254
154
|
const prevState = this._touchState;
|
|
255
155
|
let nextState = null;
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
if (this._touchState === NOT_RESPONDER && signal === RESPONDER_RELEASE) {
|
|
260
|
-
return;
|
|
261
|
-
}
|
|
262
|
-
if (nextState == null || nextState === ERROR) {
|
|
263
|
-
console.error(
|
|
264
|
-
`PressResponder: Invalid signal ${signal} for state ${prevState} on responder`
|
|
265
|
-
);
|
|
266
|
-
} else if (prevState !== nextState) {
|
|
267
|
-
this._performTransitionSideEffects(prevState, nextState, signal, event);
|
|
268
|
-
this._touchState = nextState;
|
|
269
|
-
}
|
|
156
|
+
Transitions[prevState] != null && (nextState = Transitions[prevState][signal]), !(this._touchState === NOT_RESPONDER && signal === RESPONDER_RELEASE) && (nextState == null || nextState === ERROR ? console.error(
|
|
157
|
+
`PressResponder: Invalid signal ${signal} for state ${prevState} on responder`
|
|
158
|
+
) : prevState !== nextState && (this._performTransitionSideEffects(prevState, nextState, signal, event), this._touchState = nextState));
|
|
270
159
|
}
|
|
271
160
|
/**
|
|
272
161
|
* Performs a transition between touchable states and identify any activations
|
|
273
162
|
* or deactivations (and callback invocations).
|
|
274
163
|
*/
|
|
275
164
|
_performTransitionSideEffects(prevState, nextState, signal, event) {
|
|
276
|
-
if (isTerminalSignal(signal)) {
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
}, 0);
|
|
280
|
-
this._touchActivatePosition = null;
|
|
281
|
-
this._cancelLongPressDelayTimeout();
|
|
282
|
-
}
|
|
283
|
-
if (isPressStartSignal(prevState) && signal === LONG_PRESS_DETECTED) {
|
|
165
|
+
if (isTerminalSignal(signal) && (setTimeout(() => {
|
|
166
|
+
this._isPointerTouch = !1;
|
|
167
|
+
}, 0), this._touchActivatePosition = null, this._cancelLongPressDelayTimeout()), isPressStartSignal(prevState) && signal === LONG_PRESS_DETECTED) {
|
|
284
168
|
const onLongPress = this._config.onLongPress;
|
|
285
|
-
|
|
286
|
-
onLongPress(event);
|
|
287
|
-
this._longPressDispatched = true;
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
const isPrevActive = isActiveSignal(prevState);
|
|
291
|
-
const isNextActive = isActiveSignal(nextState);
|
|
292
|
-
if (!isPrevActive && isNextActive) {
|
|
293
|
-
this._activate(event);
|
|
294
|
-
} else if (isPrevActive && !isNextActive) {
|
|
295
|
-
this._deactivate(event);
|
|
169
|
+
onLongPress != null && event.nativeEvent.key == null && (onLongPress(event), this._longPressDispatched = !0);
|
|
296
170
|
}
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
const _onLongPress = _this$_config4.onLongPress;
|
|
300
|
-
|
|
301
|
-
if (onPress != null) {
|
|
302
|
-
const isPressCanceledByLongPress = _onLongPress != null && prevState === RESPONDER_ACTIVE_LONG_PRESS_START;
|
|
303
|
-
if (!isPressCanceledByLongPress) {
|
|
304
|
-
if (!(isNextActive || isPrevActive)) {
|
|
305
|
-
this._activate(event);
|
|
306
|
-
this._deactivate(event);
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
}
|
|
171
|
+
const isPrevActive = isActiveSignal(prevState), isNextActive = isActiveSignal(nextState);
|
|
172
|
+
if (!isPrevActive && isNextActive ? this._activate(event) : isPrevActive && !isNextActive && this._deactivate(event), isPressStartSignal(prevState) && signal === RESPONDER_RELEASE) {
|
|
173
|
+
const _this$_config4 = this._config, _onLongPress = _this$_config4.onLongPress;
|
|
174
|
+
_this$_config4.onPress != null && (_onLongPress != null && prevState === RESPONDER_ACTIVE_LONG_PRESS_START || isNextActive || isPrevActive || (this._activate(event), this._deactivate(event)));
|
|
310
175
|
}
|
|
311
176
|
this._cancelPressDelayTimeout();
|
|
312
177
|
}
|
|
313
178
|
_activate(event) {
|
|
314
|
-
const _this$_config5 = this._config;
|
|
315
|
-
const onPressChange = _this$_config5.onPressChange;
|
|
316
|
-
const onPressStart = _this$_config5.onPressStart;
|
|
317
|
-
const touch = getTouchFromResponderEvent(event);
|
|
179
|
+
const _this$_config5 = this._config, onPressChange = _this$_config5.onPressChange, onPressStart = _this$_config5.onPressStart, touch = getTouchFromResponderEvent(event);
|
|
318
180
|
this._touchActivatePosition = {
|
|
319
181
|
pageX: touch.pageX,
|
|
320
182
|
pageY: touch.pageY
|
|
321
|
-
};
|
|
322
|
-
if (onPressStart != null) {
|
|
323
|
-
onPressStart(event);
|
|
324
|
-
}
|
|
325
|
-
if (onPressChange != null) {
|
|
326
|
-
onPressChange(true);
|
|
327
|
-
}
|
|
183
|
+
}, onPressStart?.(event), onPressChange?.(!0);
|
|
328
184
|
}
|
|
329
185
|
_deactivate(event) {
|
|
330
|
-
const _this$_config6 = this._config;
|
|
331
|
-
const onPressChange = _this$_config6.onPressChange;
|
|
332
|
-
const onPressEnd = _this$_config6.onPressEnd;
|
|
186
|
+
const _this$_config6 = this._config, onPressChange = _this$_config6.onPressChange, onPressEnd = _this$_config6.onPressEnd;
|
|
333
187
|
function end() {
|
|
334
|
-
|
|
335
|
-
onPressEnd(event);
|
|
336
|
-
}
|
|
337
|
-
if (onPressChange != null) {
|
|
338
|
-
onPressChange(false);
|
|
339
|
-
}
|
|
188
|
+
onPressEnd?.(event), onPressChange?.(!1);
|
|
340
189
|
}
|
|
341
190
|
const delayPressEnd = normalizeDelay(this._config.delayPressEnd);
|
|
342
|
-
|
|
343
|
-
this._pressOutDelayTimeout = setTimeout(() => {
|
|
344
|
-
end();
|
|
345
|
-
}, delayPressEnd);
|
|
346
|
-
} else {
|
|
191
|
+
delayPressEnd > 0 ? this._pressOutDelayTimeout = setTimeout(() => {
|
|
347
192
|
end();
|
|
348
|
-
}
|
|
193
|
+
}, delayPressEnd) : end();
|
|
349
194
|
}
|
|
350
195
|
_handleLongPress(event) {
|
|
351
|
-
|
|
352
|
-
this._receiveSignal(LONG_PRESS_DETECTED, event);
|
|
353
|
-
}
|
|
196
|
+
(this._touchState === RESPONDER_ACTIVE_PRESS_START || this._touchState === RESPONDER_ACTIVE_LONG_PRESS_START) && this._receiveSignal(LONG_PRESS_DETECTED, event);
|
|
354
197
|
}
|
|
355
198
|
_cancelLongPressDelayTimeout() {
|
|
356
|
-
|
|
357
|
-
clearTimeout(this._longPressDelayTimeout);
|
|
358
|
-
this._longPressDelayTimeout = null;
|
|
359
|
-
}
|
|
199
|
+
this._longPressDelayTimeout != null && (clearTimeout(this._longPressDelayTimeout), this._longPressDelayTimeout = null);
|
|
360
200
|
}
|
|
361
201
|
_cancelPressDelayTimeout() {
|
|
362
|
-
|
|
363
|
-
clearTimeout(this._pressDelayTimeout);
|
|
364
|
-
this._pressDelayTimeout = null;
|
|
365
|
-
}
|
|
202
|
+
this._pressDelayTimeout != null && (clearTimeout(this._pressDelayTimeout), this._pressDelayTimeout = null);
|
|
366
203
|
}
|
|
367
204
|
_cancelPressOutDelayTimeout() {
|
|
368
|
-
|
|
369
|
-
clearTimeout(this._pressOutDelayTimeout);
|
|
370
|
-
this._pressOutDelayTimeout = null;
|
|
371
|
-
}
|
|
205
|
+
this._pressOutDelayTimeout != null && (clearTimeout(this._pressOutDelayTimeout), this._pressOutDelayTimeout = null);
|
|
372
206
|
}
|
|
373
207
|
}
|
|
374
208
|
function normalizeDelay(delay, min, fallback) {
|
|
375
|
-
|
|
376
|
-
min = 0;
|
|
377
|
-
}
|
|
378
|
-
if (fallback === void 0) {
|
|
379
|
-
fallback = 0;
|
|
380
|
-
}
|
|
381
|
-
return Math.max(min, delay !== null && delay !== void 0 ? delay : fallback);
|
|
209
|
+
return min === void 0 && (min = 0), fallback === void 0 && (fallback = 0), Math.max(min, delay ?? fallback);
|
|
382
210
|
}
|
|
383
211
|
function getTouchFromResponderEvent(event) {
|
|
384
|
-
const _event$nativeEvent = event.nativeEvent;
|
|
385
|
-
|
|
386
|
-
const touches = _event$nativeEvent.touches;
|
|
387
|
-
if (touches != null && touches.length > 0) {
|
|
388
|
-
return touches[0];
|
|
389
|
-
}
|
|
390
|
-
if (changedTouches != null && changedTouches.length > 0) {
|
|
391
|
-
return changedTouches[0];
|
|
392
|
-
}
|
|
393
|
-
return event.nativeEvent;
|
|
212
|
+
const _event$nativeEvent = event.nativeEvent, changedTouches = _event$nativeEvent.changedTouches, touches = _event$nativeEvent.touches;
|
|
213
|
+
return touches != null && touches.length > 0 ? touches[0] : changedTouches != null && changedTouches.length > 0 ? changedTouches[0] : event.nativeEvent;
|
|
394
214
|
}
|
|
395
215
|
export {
|
|
396
216
|
PressResponder as default
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/PressResponder.ts"],
|
|
4
|
-
"mappings": "AAUA,MAAM,QAAQ
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/esm/index.js
CHANGED
|
@@ -2,20 +2,13 @@ import { useDebugValue, useEffect, useRef } from "react";
|
|
|
2
2
|
import PressResponder from "./PressResponder";
|
|
3
3
|
function usePressEvents(_, config) {
|
|
4
4
|
const pressResponderRef = useRef(null);
|
|
5
|
-
|
|
6
|
-
pressResponderRef.current = new PressResponder(config);
|
|
7
|
-
}
|
|
5
|
+
pressResponderRef.current == null && (pressResponderRef.current = new PressResponder(config));
|
|
8
6
|
const pressResponder = pressResponderRef.current;
|
|
9
|
-
useEffect(() => {
|
|
7
|
+
return useEffect(() => {
|
|
10
8
|
pressResponder.configure(config);
|
|
11
|
-
}, [config, pressResponder])
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
pressResponder.reset();
|
|
15
|
-
};
|
|
16
|
-
}, [pressResponder]);
|
|
17
|
-
useDebugValue(config);
|
|
18
|
-
return pressResponder.getEventHandlers();
|
|
9
|
+
}, [config, pressResponder]), useEffect(() => () => {
|
|
10
|
+
pressResponder.reset();
|
|
11
|
+
}, [pressResponder]), useDebugValue(config), pressResponder.getEventHandlers();
|
|
19
12
|
}
|
|
20
13
|
export {
|
|
21
14
|
usePressEvents
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.ts"],
|
|
4
|
-
"mappings": "AAUA,SAAS,eAAe,WAAW,cAAc;AAEjD,OAAO,oBAAoB;AAKpB,SAAS,eAAe,GAAG,QAAc;AAC9C,QAAM,oBAAoB,OAAY,IAAI;AAE1C,
|
|
4
|
+
"mappings": "AAUA,SAAS,eAAe,WAAW,cAAc;AAEjD,OAAO,oBAAoB;AAKpB,SAAS,eAAe,GAAG,QAAc;AAC9C,QAAM,oBAAoB,OAAY,IAAI;AAE1C,EAAI,kBAAkB,WAAW,SAC/B,kBAAkB,UAAU,IAAI,eAAe,MAAM;AAGvD,QAAM,iBAAiB,kBAAkB;AAEzC,mBAAU,MAAM;AACd,mBAAe,UAAU,MAAM;AAAA,EACjC,GAAG,CAAC,QAAQ,cAAc,CAAC,GAG3B,UAAU,MACD,MAAM;AACX,mBAAe,MAAM;AAAA,EACvB,GACC,CAAC,cAAc,CAAC,GACnB,cAAc,MAAM,GACb,eAAe,iBAAiB;AACzC;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/react-native-use-pressable",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.62.1",
|
|
4
4
|
"types": "./types/index.d.ts",
|
|
5
5
|
"main": "dist/cjs",
|
|
6
6
|
"module": "dist/esm",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"react": "*"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@tamagui/build": "1.
|
|
32
|
+
"@tamagui/build": "1.62.1",
|
|
33
33
|
"react": "^18.2.0"
|
|
34
34
|
},
|
|
35
35
|
"publishConfig": {
|