@tamagui/react-native-use-pressable 2.7.7 → 3.0.0-beta.643.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.cjs +370 -383
- package/dist/cjs/PressResponder.native.cjs +487 -0
- package/dist/cjs/PressResponder.native.js +445 -445
- package/dist/cjs/PressResponder.native.js.map +1 -1
- package/dist/cjs/index.cjs +33 -41
- package/dist/cjs/index.native.cjs +51 -0
- package/dist/cjs/index.native.js +33 -40
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/esm/PressResponder.mjs +356 -365
- package/dist/esm/PressResponder.mjs.map +1 -1
- package/dist/esm/PressResponder.native.js +431 -428
- package/dist/esm/PressResponder.native.js.map +1 -1
- package/dist/esm/index.js +17 -15
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +17 -15
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +17 -15
- package/dist/esm/index.native.js.map +1 -1
- package/package.json +2 -2
- package/types/PressResponder.d.ts.map +1 -1
|
@@ -1,29 +1,26 @@
|
|
|
1
|
+
|
|
1
2
|
var __defProp = Object.defineProperty;
|
|
2
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
6
|
var __export = (target, all) => {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
for (var name in all) __defProp(target, name, {
|
|
8
|
+
get: all[name],
|
|
9
|
+
enumerable: true
|
|
10
|
+
});
|
|
10
11
|
};
|
|
11
12
|
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
15
|
+
get: () => from[key],
|
|
16
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
return to;
|
|
19
20
|
};
|
|
20
|
-
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
21
|
-
value: true
|
|
22
|
-
}), mod);
|
|
21
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
23
22
|
var PressResponder_exports = {};
|
|
24
|
-
__export(PressResponder_exports, {
|
|
25
|
-
PressResponder: () => PressResponder
|
|
26
|
-
});
|
|
23
|
+
__export(PressResponder_exports, { PressResponder: () => PressResponder });
|
|
27
24
|
module.exports = __toCommonJS(PressResponder_exports);
|
|
28
25
|
const DELAY = "DELAY";
|
|
29
26
|
const ERROR = "ERROR";
|
|
@@ -36,376 +33,366 @@ const RESPONDER_GRANT = "RESPONDER_GRANT";
|
|
|
36
33
|
const RESPONDER_RELEASE = "RESPONDER_RELEASE";
|
|
37
34
|
const RESPONDER_TERMINATED = "RESPONDER_TERMINATED";
|
|
38
35
|
const Transitions = Object.freeze({
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
36
|
+
NOT_RESPONDER: {
|
|
37
|
+
DELAY: ERROR,
|
|
38
|
+
RESPONDER_GRANT: RESPONDER_INACTIVE_PRESS_START,
|
|
39
|
+
RESPONDER_RELEASE: ERROR,
|
|
40
|
+
RESPONDER_TERMINATED: ERROR,
|
|
41
|
+
LONG_PRESS_DETECTED: ERROR
|
|
42
|
+
},
|
|
43
|
+
RESPONDER_INACTIVE_PRESS_START: {
|
|
44
|
+
DELAY: RESPONDER_ACTIVE_PRESS_START,
|
|
45
|
+
RESPONDER_GRANT: ERROR,
|
|
46
|
+
RESPONDER_RELEASE: NOT_RESPONDER,
|
|
47
|
+
RESPONDER_TERMINATED: NOT_RESPONDER,
|
|
48
|
+
LONG_PRESS_DETECTED: ERROR
|
|
49
|
+
},
|
|
50
|
+
RESPONDER_ACTIVE_PRESS_START: {
|
|
51
|
+
DELAY: ERROR,
|
|
52
|
+
RESPONDER_GRANT: ERROR,
|
|
53
|
+
RESPONDER_RELEASE: NOT_RESPONDER,
|
|
54
|
+
RESPONDER_TERMINATED: NOT_RESPONDER,
|
|
55
|
+
LONG_PRESS_DETECTED: RESPONDER_ACTIVE_LONG_PRESS_START
|
|
56
|
+
},
|
|
57
|
+
RESPONDER_ACTIVE_LONG_PRESS_START: {
|
|
58
|
+
DELAY: ERROR,
|
|
59
|
+
RESPONDER_GRANT: ERROR,
|
|
60
|
+
RESPONDER_RELEASE: NOT_RESPONDER,
|
|
61
|
+
RESPONDER_TERMINATED: NOT_RESPONDER,
|
|
62
|
+
LONG_PRESS_DETECTED: RESPONDER_ACTIVE_LONG_PRESS_START
|
|
63
|
+
},
|
|
64
|
+
ERROR: {
|
|
65
|
+
DELAY: NOT_RESPONDER,
|
|
66
|
+
RESPONDER_GRANT: RESPONDER_INACTIVE_PRESS_START,
|
|
67
|
+
RESPONDER_RELEASE: NOT_RESPONDER,
|
|
68
|
+
RESPONDER_TERMINATED: NOT_RESPONDER,
|
|
69
|
+
LONG_PRESS_DETECTED: NOT_RESPONDER
|
|
70
|
+
}
|
|
74
71
|
});
|
|
75
|
-
const isActiveSignal = signal => signal === RESPONDER_ACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_LONG_PRESS_START;
|
|
76
|
-
const isButtonRole = element => element.getAttribute("role") === "button";
|
|
77
|
-
const isPressStartSignal = signal => signal === RESPONDER_INACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_LONG_PRESS_START;
|
|
78
|
-
const isTerminalSignal = signal => signal === RESPONDER_TERMINATED || signal === RESPONDER_RELEASE;
|
|
79
|
-
const isValidKeyPress = event => {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
72
|
+
const isActiveSignal = (signal) => signal === RESPONDER_ACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_LONG_PRESS_START;
|
|
73
|
+
const isButtonRole = (element) => element.getAttribute("role") === "button";
|
|
74
|
+
const isPressStartSignal = (signal) => signal === RESPONDER_INACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_LONG_PRESS_START;
|
|
75
|
+
const isTerminalSignal = (signal) => signal === RESPONDER_TERMINATED || signal === RESPONDER_RELEASE;
|
|
76
|
+
const isValidKeyPress = (event) => {
|
|
77
|
+
const key = event.key;
|
|
78
|
+
const target = event.target;
|
|
79
|
+
const role = target.getAttribute("role");
|
|
80
|
+
const isSpacebar = key === " " || key === "Spacebar";
|
|
81
|
+
return key === "Enter" || isSpacebar && role === "button";
|
|
85
82
|
};
|
|
86
83
|
const DEFAULT_LONG_PRESS_DELAY_MS = 450;
|
|
87
84
|
const DEFAULT_PRESS_DELAY_MS = 50;
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
this._pressDelayTimeout = null;
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
_cancelPressOutDelayTimeout() {
|
|
385
|
-
if (this._pressOutDelayTimeout != null) {
|
|
386
|
-
clearTimeout(this._pressOutDelayTimeout);
|
|
387
|
-
this._pressOutDelayTimeout = null;
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
}
|
|
85
|
+
var PressResponder = class {
|
|
86
|
+
_touchActivatePosition = null;
|
|
87
|
+
_pressDelayTimeout = 0;
|
|
88
|
+
_selectionTerminated = false;
|
|
89
|
+
_isPointerTouch = false;
|
|
90
|
+
_longPressDelayTimeout = 0;
|
|
91
|
+
_longPressDispatched = false;
|
|
92
|
+
_pressOutDelayTimeout = 0;
|
|
93
|
+
_touchState = NOT_RESPONDER;
|
|
94
|
+
_config = null;
|
|
95
|
+
_eventHandlers = null;
|
|
96
|
+
constructor(config) {
|
|
97
|
+
this.configure(config);
|
|
98
|
+
}
|
|
99
|
+
configure(config) {
|
|
100
|
+
this._config = config;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Resets any pending timers. This should be called on unmount.
|
|
104
|
+
*/
|
|
105
|
+
reset() {
|
|
106
|
+
this._cancelLongPressDelayTimeout();
|
|
107
|
+
this._cancelPressDelayTimeout();
|
|
108
|
+
this._cancelPressOutDelayTimeout();
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Returns a set of props to spread into the interactive element.
|
|
112
|
+
*/
|
|
113
|
+
getEventHandlers() {
|
|
114
|
+
if (this._eventHandlers == null) {
|
|
115
|
+
this._eventHandlers = this._createEventHandlers();
|
|
116
|
+
}
|
|
117
|
+
return this._eventHandlers;
|
|
118
|
+
}
|
|
119
|
+
_createEventHandlers() {
|
|
120
|
+
const start = (event, shouldDelay) => {
|
|
121
|
+
event.persist();
|
|
122
|
+
this._cancelPressOutDelayTimeout();
|
|
123
|
+
this._longPressDispatched = false;
|
|
124
|
+
this._selectionTerminated = false;
|
|
125
|
+
this._touchState = NOT_RESPONDER;
|
|
126
|
+
this._isPointerTouch = event.nativeEvent.type === "touchstart";
|
|
127
|
+
this._receiveSignal(RESPONDER_GRANT, event);
|
|
128
|
+
const delayPressStart = normalizeDelay(this._config.delayPressStart, 0, DEFAULT_PRESS_DELAY_MS);
|
|
129
|
+
if (shouldDelay !== false && delayPressStart > 0) {
|
|
130
|
+
this._pressDelayTimeout = setTimeout(() => {
|
|
131
|
+
this._receiveSignal(DELAY, event);
|
|
132
|
+
}, delayPressStart);
|
|
133
|
+
} else {
|
|
134
|
+
this._receiveSignal(DELAY, event);
|
|
135
|
+
}
|
|
136
|
+
const delayLongPress = normalizeDelay(this._config.delayLongPress, 10, DEFAULT_LONG_PRESS_DELAY_MS);
|
|
137
|
+
this._longPressDelayTimeout = setTimeout(() => {
|
|
138
|
+
this._handleLongPress(event);
|
|
139
|
+
}, delayLongPress + delayPressStart);
|
|
140
|
+
};
|
|
141
|
+
const end = (event) => {
|
|
142
|
+
this._receiveSignal(RESPONDER_RELEASE, event);
|
|
143
|
+
};
|
|
144
|
+
const keyupHandler = (event) => {
|
|
145
|
+
const onPress = this._config.onPress;
|
|
146
|
+
const target = event.target;
|
|
147
|
+
if (this._touchState !== NOT_RESPONDER && isValidKeyPress(event)) {
|
|
148
|
+
end(event);
|
|
149
|
+
document.removeEventListener("keyup", keyupHandler);
|
|
150
|
+
const role = target.getAttribute("role");
|
|
151
|
+
const elementType = target.tagName.toLowerCase();
|
|
152
|
+
const isNativeInteractiveElement = role === "link" || elementType === "a" || elementType === "button" || elementType === "input" || elementType === "select" || elementType === "textarea";
|
|
153
|
+
if (onPress != null && !isNativeInteractiveElement) {
|
|
154
|
+
onPress(event);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
return {
|
|
159
|
+
onStartShouldSetResponder: (event) => {
|
|
160
|
+
const disabled = this._config.disabled;
|
|
161
|
+
if (disabled && isButtonRole(event.currentTarget)) {
|
|
162
|
+
event.stopPropagation();
|
|
163
|
+
}
|
|
164
|
+
if (disabled == null) {
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
return !disabled;
|
|
168
|
+
},
|
|
169
|
+
onKeyDown: (event) => {
|
|
170
|
+
const disabled = this._config.disabled;
|
|
171
|
+
const key = event.key;
|
|
172
|
+
const target = event.target;
|
|
173
|
+
if (!disabled && isValidKeyPress(event)) {
|
|
174
|
+
if (this._touchState === NOT_RESPONDER) {
|
|
175
|
+
start(event, false);
|
|
176
|
+
document.addEventListener("keyup", keyupHandler);
|
|
177
|
+
}
|
|
178
|
+
const role = target.getAttribute("role");
|
|
179
|
+
const isSpacebarKey = key === " " || key === "Spacebar";
|
|
180
|
+
const _isButtonRole = role === "button" || role === "menuitem";
|
|
181
|
+
if (isSpacebarKey && _isButtonRole) {
|
|
182
|
+
event.preventDefault();
|
|
183
|
+
}
|
|
184
|
+
event.stopPropagation();
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
onResponderGrant: (event) => start(event),
|
|
188
|
+
onResponderMove: (event) => {
|
|
189
|
+
if (this._config.onPressMove != null) {
|
|
190
|
+
this._config.onPressMove(event);
|
|
191
|
+
}
|
|
192
|
+
const touch = getTouchFromResponderEvent(event);
|
|
193
|
+
if (this._touchActivatePosition != null) {
|
|
194
|
+
const deltaX = this._touchActivatePosition.pageX - touch.pageX;
|
|
195
|
+
const deltaY = this._touchActivatePosition.pageY - touch.pageY;
|
|
196
|
+
if (Math.hypot(deltaX, deltaY) > 10) {
|
|
197
|
+
this._cancelLongPressDelayTimeout();
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
onResponderRelease: (event) => end(event),
|
|
202
|
+
onResponderTerminate: (event) => {
|
|
203
|
+
if (event.nativeEvent.type === "selectionchange") {
|
|
204
|
+
this._selectionTerminated = true;
|
|
205
|
+
}
|
|
206
|
+
this._receiveSignal(RESPONDER_TERMINATED, event);
|
|
207
|
+
},
|
|
208
|
+
onResponderTerminationRequest: (event) => {
|
|
209
|
+
const _this$_config = this._config;
|
|
210
|
+
const cancelable = _this$_config.cancelable;
|
|
211
|
+
const disabled = _this$_config.disabled;
|
|
212
|
+
const onLongPress = _this$_config.onLongPress;
|
|
213
|
+
if (!disabled && onLongPress != null && this._isPointerTouch && event.nativeEvent.type === "contextmenu") {
|
|
214
|
+
return false;
|
|
215
|
+
}
|
|
216
|
+
if (cancelable == null) {
|
|
217
|
+
return true;
|
|
218
|
+
}
|
|
219
|
+
return cancelable;
|
|
220
|
+
},
|
|
221
|
+
onClick: (event) => {
|
|
222
|
+
const _this$_config2 = this._config;
|
|
223
|
+
const disabled = _this$_config2.disabled;
|
|
224
|
+
const onPress = _this$_config2.onPress;
|
|
225
|
+
if (!disabled) {
|
|
226
|
+
event.stopPropagation();
|
|
227
|
+
if (this._longPressDispatched || this._selectionTerminated) {
|
|
228
|
+
event.preventDefault();
|
|
229
|
+
} else if (onPress != null && event.altKey === false) {
|
|
230
|
+
onPress(event);
|
|
231
|
+
}
|
|
232
|
+
} else {
|
|
233
|
+
if (isButtonRole(event.currentTarget)) {
|
|
234
|
+
event.stopPropagation();
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
},
|
|
238
|
+
onContextMenu: (event) => {
|
|
239
|
+
const _this$_config3 = this._config;
|
|
240
|
+
const disabled = _this$_config3.disabled;
|
|
241
|
+
const onLongPress = _this$_config3.onLongPress;
|
|
242
|
+
if (!disabled) {
|
|
243
|
+
if (onLongPress != null && this._isPointerTouch && !event.defaultPrevented) {
|
|
244
|
+
event.preventDefault();
|
|
245
|
+
event.stopPropagation();
|
|
246
|
+
}
|
|
247
|
+
} else {
|
|
248
|
+
if (isButtonRole(event.currentTarget)) {
|
|
249
|
+
event.stopPropagation();
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Receives a state machine signal, performs side effects of the transition
|
|
257
|
+
* and stores the new state. Validates the transition as well.
|
|
258
|
+
*/
|
|
259
|
+
_receiveSignal(signal, event) {
|
|
260
|
+
const prevState = this._touchState;
|
|
261
|
+
let nextState = null;
|
|
262
|
+
if (Transitions[prevState] != null) {
|
|
263
|
+
nextState = Transitions[prevState][signal];
|
|
264
|
+
}
|
|
265
|
+
if (this._touchState === NOT_RESPONDER && signal === RESPONDER_RELEASE) {
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
if (nextState == null || nextState === ERROR) {
|
|
269
|
+
console.error(`PressResponder: Invalid signal ${signal} for state ${prevState} on responder`);
|
|
270
|
+
} else if (prevState !== nextState) {
|
|
271
|
+
this._performTransitionSideEffects(prevState, nextState, signal, event);
|
|
272
|
+
this._touchState = nextState;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Performs a transition between touchable states and identify any activations
|
|
277
|
+
* or deactivations (and callback invocations).
|
|
278
|
+
*/
|
|
279
|
+
_performTransitionSideEffects(prevState, nextState, signal, event) {
|
|
280
|
+
if (isTerminalSignal(signal)) {
|
|
281
|
+
setTimeout(() => {
|
|
282
|
+
this._isPointerTouch = false;
|
|
283
|
+
}, 0);
|
|
284
|
+
this._touchActivatePosition = null;
|
|
285
|
+
this._cancelLongPressDelayTimeout();
|
|
286
|
+
}
|
|
287
|
+
if (isPressStartSignal(prevState) && signal === LONG_PRESS_DETECTED) {
|
|
288
|
+
const onLongPress = this._config.onLongPress;
|
|
289
|
+
if (onLongPress != null && event.nativeEvent.key == null) {
|
|
290
|
+
onLongPress(event);
|
|
291
|
+
this._longPressDispatched = true;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
const isPrevActive = isActiveSignal(prevState);
|
|
295
|
+
const isNextActive = isActiveSignal(nextState);
|
|
296
|
+
if (!isPrevActive && isNextActive) {
|
|
297
|
+
this._activate(event);
|
|
298
|
+
} else if (isPrevActive && !isNextActive) {
|
|
299
|
+
this._deactivate(event);
|
|
300
|
+
}
|
|
301
|
+
if (isPressStartSignal(prevState) && signal === RESPONDER_RELEASE) {
|
|
302
|
+
const _this$_config4 = this._config;
|
|
303
|
+
const _onLongPress = _this$_config4.onLongPress;
|
|
304
|
+
const onPress = _this$_config4.onPress;
|
|
305
|
+
if (onPress != null) {
|
|
306
|
+
const isPressCanceledByLongPress = _onLongPress != null && prevState === RESPONDER_ACTIVE_LONG_PRESS_START;
|
|
307
|
+
if (!isPressCanceledByLongPress) {
|
|
308
|
+
if (!(isNextActive || isPrevActive)) {
|
|
309
|
+
this._activate(event);
|
|
310
|
+
this._deactivate(event);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
this._cancelPressDelayTimeout();
|
|
316
|
+
}
|
|
317
|
+
_activate(event) {
|
|
318
|
+
const _this$_config5 = this._config;
|
|
319
|
+
const onPressChange = _this$_config5.onPressChange;
|
|
320
|
+
const onPressStart = _this$_config5.onPressStart;
|
|
321
|
+
const touch = getTouchFromResponderEvent(event);
|
|
322
|
+
this._touchActivatePosition = {
|
|
323
|
+
pageX: touch.pageX,
|
|
324
|
+
pageY: touch.pageY
|
|
325
|
+
};
|
|
326
|
+
if (onPressStart != null) {
|
|
327
|
+
onPressStart(event);
|
|
328
|
+
}
|
|
329
|
+
if (onPressChange != null) {
|
|
330
|
+
onPressChange(true);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
_deactivate(event) {
|
|
334
|
+
const _this$_config6 = this._config;
|
|
335
|
+
const onPressChange = _this$_config6.onPressChange;
|
|
336
|
+
const onPressEnd = _this$_config6.onPressEnd;
|
|
337
|
+
function end() {
|
|
338
|
+
if (onPressEnd != null) {
|
|
339
|
+
onPressEnd(event);
|
|
340
|
+
}
|
|
341
|
+
if (onPressChange != null) {
|
|
342
|
+
onPressChange(false);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
const delayPressEnd = normalizeDelay(this._config.delayPressEnd);
|
|
346
|
+
if (delayPressEnd > 0) {
|
|
347
|
+
this._pressOutDelayTimeout = setTimeout(() => {
|
|
348
|
+
end();
|
|
349
|
+
}, delayPressEnd);
|
|
350
|
+
} else {
|
|
351
|
+
end();
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
_handleLongPress(event) {
|
|
355
|
+
if (this._touchState === RESPONDER_ACTIVE_PRESS_START || this._touchState === RESPONDER_ACTIVE_LONG_PRESS_START) {
|
|
356
|
+
this._receiveSignal(LONG_PRESS_DETECTED, event);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
_cancelLongPressDelayTimeout() {
|
|
360
|
+
if (this._longPressDelayTimeout != null) {
|
|
361
|
+
clearTimeout(this._longPressDelayTimeout);
|
|
362
|
+
this._longPressDelayTimeout = null;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
_cancelPressDelayTimeout() {
|
|
366
|
+
if (this._pressDelayTimeout != null) {
|
|
367
|
+
clearTimeout(this._pressDelayTimeout);
|
|
368
|
+
this._pressDelayTimeout = null;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
_cancelPressOutDelayTimeout() {
|
|
372
|
+
if (this._pressOutDelayTimeout != null) {
|
|
373
|
+
clearTimeout(this._pressOutDelayTimeout);
|
|
374
|
+
this._pressOutDelayTimeout = null;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
};
|
|
391
378
|
function normalizeDelay(delay, min, fallback) {
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
379
|
+
if (min === void 0) {
|
|
380
|
+
min = 0;
|
|
381
|
+
}
|
|
382
|
+
if (fallback === void 0) {
|
|
383
|
+
fallback = 0;
|
|
384
|
+
}
|
|
385
|
+
return Math.max(min, delay !== null && delay !== void 0 ? delay : fallback);
|
|
399
386
|
}
|
|
400
387
|
function getTouchFromResponderEvent(event) {
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
}
|
|
388
|
+
const _event$nativeEvent = event.nativeEvent;
|
|
389
|
+
const changedTouches = _event$nativeEvent.changedTouches;
|
|
390
|
+
const touches = _event$nativeEvent.touches;
|
|
391
|
+
if (touches != null && touches.length > 0) {
|
|
392
|
+
return touches[0];
|
|
393
|
+
}
|
|
394
|
+
if (changedTouches != null && changedTouches.length > 0) {
|
|
395
|
+
return changedTouches[0];
|
|
396
|
+
}
|
|
397
|
+
return event.nativeEvent;
|
|
398
|
+
}
|