1 | var $f7e14e656343df57$exports = require("./textSelection.main.js");
|
2 | var $01d3f539e91688c8$exports = require("./context.main.js");
|
3 | var $bBqCQ$swchelperscjs_class_private_field_getcjs = require("@swc/helpers/cjs/_class_private_field_get.cjs");
|
4 | var $bBqCQ$swchelperscjs_class_private_field_initcjs = require("@swc/helpers/cjs/_class_private_field_init.cjs");
|
5 | var $bBqCQ$swchelperscjs_class_private_field_setcjs = require("@swc/helpers/cjs/_class_private_field_set.cjs");
|
6 | var $bBqCQ$reactariautils = require("@react-aria/utils");
|
7 | var $bBqCQ$react = require("react");
|
8 |
|
9 |
|
10 | function $parcel$export(e, n, v, s) {
|
11 | Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
|
12 | }
|
13 |
|
14 | $parcel$export(module.exports, "usePress", () => $0294ea432cd92340$export$45712eceda6fad21);
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 | function $0294ea432cd92340$var$usePressResponderContext(props) {
|
37 |
|
38 | let context = (0, $bBqCQ$react.useContext)((0, $01d3f539e91688c8$exports.PressResponderContext));
|
39 | if (context) {
|
40 | let { register: register, ...contextProps } = context;
|
41 | props = (0, $bBqCQ$reactariautils.mergeProps)(contextProps, props);
|
42 | register();
|
43 | }
|
44 | (0, $bBqCQ$reactariautils.useSyncRef)(context, props.ref);
|
45 | return props;
|
46 | }
|
47 | var $0294ea432cd92340$var$_shouldStopPropagation = new WeakMap();
|
48 | class $0294ea432cd92340$var$PressEvent {
|
49 | continuePropagation() {
|
50 | (0, $bBqCQ$swchelperscjs_class_private_field_setcjs._)(this, $0294ea432cd92340$var$_shouldStopPropagation, false);
|
51 | }
|
52 | get shouldStopPropagation() {
|
53 | return (0, $bBqCQ$swchelperscjs_class_private_field_getcjs._)(this, $0294ea432cd92340$var$_shouldStopPropagation);
|
54 | }
|
55 | constructor(type, pointerType, originalEvent, state){
|
56 | (0, $bBqCQ$swchelperscjs_class_private_field_initcjs._)(this, $0294ea432cd92340$var$_shouldStopPropagation, {
|
57 | writable: true,
|
58 | value: void 0
|
59 | });
|
60 | (0, $bBqCQ$swchelperscjs_class_private_field_setcjs._)(this, $0294ea432cd92340$var$_shouldStopPropagation, true);
|
61 | var _state_target;
|
62 | let currentTarget = (_state_target = state === null || state === void 0 ? void 0 : state.target) !== null && _state_target !== void 0 ? _state_target : originalEvent.currentTarget;
|
63 | const rect = currentTarget === null || currentTarget === void 0 ? void 0 : currentTarget.getBoundingClientRect();
|
64 | let x, y = 0;
|
65 | let clientX, clientY = null;
|
66 | if (originalEvent.clientX != null && originalEvent.clientY != null) {
|
67 | clientX = originalEvent.clientX;
|
68 | clientY = originalEvent.clientY;
|
69 | }
|
70 | if (rect) {
|
71 | if (clientX != null && clientY != null) {
|
72 | x = clientX - rect.left;
|
73 | y = clientY - rect.top;
|
74 | } else {
|
75 | x = rect.width / 2;
|
76 | y = rect.height / 2;
|
77 | }
|
78 | }
|
79 | this.type = type;
|
80 | this.pointerType = pointerType;
|
81 | this.target = originalEvent.currentTarget;
|
82 | this.shiftKey = originalEvent.shiftKey;
|
83 | this.metaKey = originalEvent.metaKey;
|
84 | this.ctrlKey = originalEvent.ctrlKey;
|
85 | this.altKey = originalEvent.altKey;
|
86 | this.x = x;
|
87 | this.y = y;
|
88 | }
|
89 | }
|
90 | const $0294ea432cd92340$var$LINK_CLICKED = Symbol('linkClicked');
|
91 | function $0294ea432cd92340$export$45712eceda6fad21(props) {
|
92 | let { onPress: onPress, onPressChange: onPressChange, onPressStart: onPressStart, onPressEnd: onPressEnd, onPressUp: onPressUp, isDisabled: isDisabled, isPressed: isPressedProp, preventFocusOnPress: preventFocusOnPress, shouldCancelOnPointerExit: shouldCancelOnPointerExit, allowTextSelectionOnPress: allowTextSelectionOnPress,
|
93 | ref: _, ...domProps } = $0294ea432cd92340$var$usePressResponderContext(props);
|
94 | let [isPressed, setPressed] = (0, $bBqCQ$react.useState)(false);
|
95 | let ref = (0, $bBqCQ$react.useRef)({
|
96 | isPressed: false,
|
97 | ignoreEmulatedMouseEvents: false,
|
98 | ignoreClickAfterPress: false,
|
99 | didFirePressStart: false,
|
100 | isTriggeringEvent: false,
|
101 | activePointerId: null,
|
102 | target: null,
|
103 | isOverTarget: false,
|
104 | pointerType: null
|
105 | });
|
106 | let { addGlobalListener: addGlobalListener, removeAllGlobalListeners: removeAllGlobalListeners } = (0, $bBqCQ$reactariautils.useGlobalListeners)();
|
107 | let triggerPressStart = (0, $bBqCQ$reactariautils.useEffectEvent)((originalEvent, pointerType)=>{
|
108 | let state = ref.current;
|
109 | if (isDisabled || state.didFirePressStart) return false;
|
110 | let shouldStopPropagation = true;
|
111 | state.isTriggeringEvent = true;
|
112 | if (onPressStart) {
|
113 | let event = new $0294ea432cd92340$var$PressEvent('pressstart', pointerType, originalEvent);
|
114 | onPressStart(event);
|
115 | shouldStopPropagation = event.shouldStopPropagation;
|
116 | }
|
117 | if (onPressChange) onPressChange(true);
|
118 | state.isTriggeringEvent = false;
|
119 | state.didFirePressStart = true;
|
120 | setPressed(true);
|
121 | return shouldStopPropagation;
|
122 | });
|
123 | let triggerPressEnd = (0, $bBqCQ$reactariautils.useEffectEvent)((originalEvent, pointerType, wasPressed = true)=>{
|
124 | let state = ref.current;
|
125 | if (!state.didFirePressStart) return false;
|
126 | state.ignoreClickAfterPress = true;
|
127 | state.didFirePressStart = false;
|
128 | state.isTriggeringEvent = true;
|
129 | let shouldStopPropagation = true;
|
130 | if (onPressEnd) {
|
131 | let event = new $0294ea432cd92340$var$PressEvent('pressend', pointerType, originalEvent);
|
132 | onPressEnd(event);
|
133 | shouldStopPropagation = event.shouldStopPropagation;
|
134 | }
|
135 | if (onPressChange) onPressChange(false);
|
136 | setPressed(false);
|
137 | if (onPress && wasPressed && !isDisabled) {
|
138 | let event = new $0294ea432cd92340$var$PressEvent('press', pointerType, originalEvent);
|
139 | onPress(event);
|
140 | shouldStopPropagation && (shouldStopPropagation = event.shouldStopPropagation);
|
141 | }
|
142 | state.isTriggeringEvent = false;
|
143 | return shouldStopPropagation;
|
144 | });
|
145 | let triggerPressUp = (0, $bBqCQ$reactariautils.useEffectEvent)((originalEvent, pointerType)=>{
|
146 | let state = ref.current;
|
147 | if (isDisabled) return false;
|
148 | if (onPressUp) {
|
149 | state.isTriggeringEvent = true;
|
150 | let event = new $0294ea432cd92340$var$PressEvent('pressup', pointerType, originalEvent);
|
151 | onPressUp(event);
|
152 | state.isTriggeringEvent = false;
|
153 | return event.shouldStopPropagation;
|
154 | }
|
155 | return true;
|
156 | });
|
157 | let cancel = (0, $bBqCQ$reactariautils.useEffectEvent)((e)=>{
|
158 | let state = ref.current;
|
159 | if (state.isPressed && state.target) {
|
160 | if (state.isOverTarget && state.pointerType != null) triggerPressEnd($0294ea432cd92340$var$createEvent(state.target, e), state.pointerType, false);
|
161 | state.isPressed = false;
|
162 | state.isOverTarget = false;
|
163 | state.activePointerId = null;
|
164 | state.pointerType = null;
|
165 | removeAllGlobalListeners();
|
166 | if (!allowTextSelectionOnPress) (0, $f7e14e656343df57$exports.restoreTextSelection)(state.target);
|
167 | }
|
168 | });
|
169 | let cancelOnPointerExit = (0, $bBqCQ$reactariautils.useEffectEvent)((e)=>{
|
170 | if (shouldCancelOnPointerExit) cancel(e);
|
171 | });
|
172 | let pressProps = (0, $bBqCQ$react.useMemo)(()=>{
|
173 | let state = ref.current;
|
174 | let pressProps = {
|
175 | onKeyDown (e) {
|
176 | if ($0294ea432cd92340$var$isValidKeyboardEvent(e.nativeEvent, e.currentTarget) && e.currentTarget.contains(e.target)) {
|
177 | var _state_metaKeyEvents;
|
178 | if ($0294ea432cd92340$var$shouldPreventDefaultKeyboard(e.target, e.key)) e.preventDefault();
|
179 |
|
180 |
|
181 |
|
182 | let shouldStopPropagation = true;
|
183 | if (!state.isPressed && !e.repeat) {
|
184 | state.target = e.currentTarget;
|
185 | state.isPressed = true;
|
186 | shouldStopPropagation = triggerPressStart(e, 'keyboard');
|
187 |
|
188 |
|
189 |
|
190 | let originalTarget = e.currentTarget;
|
191 | let pressUp = (e)=>{
|
192 | if ($0294ea432cd92340$var$isValidKeyboardEvent(e, originalTarget) && !e.repeat && originalTarget.contains(e.target) && state.target) triggerPressUp($0294ea432cd92340$var$createEvent(state.target, e), 'keyboard');
|
193 | };
|
194 | addGlobalListener((0, $bBqCQ$reactariautils.getOwnerDocument)(e.currentTarget), 'keyup', (0, $bBqCQ$reactariautils.chain)(pressUp, onKeyUp), true);
|
195 | }
|
196 | if (shouldStopPropagation) e.stopPropagation();
|
197 |
|
198 |
|
199 |
|
200 |
|
201 |
|
202 |
|
203 |
|
204 | if (e.metaKey && (0, $bBqCQ$reactariautils.isMac)()) (_state_metaKeyEvents = state.metaKeyEvents) === null || _state_metaKeyEvents === void 0 ? void 0 : _state_metaKeyEvents.set(e.key, e.nativeEvent);
|
205 | } else if (e.key === 'Meta') state.metaKeyEvents = new Map();
|
206 | },
|
207 | onClick (e) {
|
208 | if (e && !e.currentTarget.contains(e.target)) return;
|
209 | if (e && e.button === 0 && !state.isTriggeringEvent && !(0, $bBqCQ$reactariautils.openLink).isOpening) {
|
210 | let shouldStopPropagation = true;
|
211 | if (isDisabled) e.preventDefault();
|
212 |
|
213 |
|
214 | if (!state.ignoreClickAfterPress && !state.ignoreEmulatedMouseEvents && !state.isPressed && (state.pointerType === 'virtual' || (0, $bBqCQ$reactariautils.isVirtualClick)(e.nativeEvent))) {
|
215 |
|
216 | if (!isDisabled && !preventFocusOnPress) (0, $bBqCQ$reactariautils.focusWithoutScrolling)(e.currentTarget);
|
217 | let stopPressStart = triggerPressStart(e, 'virtual');
|
218 | let stopPressUp = triggerPressUp(e, 'virtual');
|
219 | let stopPressEnd = triggerPressEnd(e, 'virtual');
|
220 | shouldStopPropagation = stopPressStart && stopPressUp && stopPressEnd;
|
221 | }
|
222 | state.ignoreEmulatedMouseEvents = false;
|
223 | state.ignoreClickAfterPress = false;
|
224 | if (shouldStopPropagation) e.stopPropagation();
|
225 | }
|
226 | }
|
227 | };
|
228 | let onKeyUp = (e)=>{
|
229 | var _state_metaKeyEvents;
|
230 | if (state.isPressed && state.target && $0294ea432cd92340$var$isValidKeyboardEvent(e, state.target)) {
|
231 | var _state_metaKeyEvents1;
|
232 | if ($0294ea432cd92340$var$shouldPreventDefaultKeyboard(e.target, e.key)) e.preventDefault();
|
233 | let target = e.target;
|
234 | triggerPressEnd($0294ea432cd92340$var$createEvent(state.target, e), 'keyboard', state.target.contains(target));
|
235 | removeAllGlobalListeners();
|
236 |
|
237 |
|
238 |
|
239 | if (e.key !== 'Enter' && $0294ea432cd92340$var$isHTMLAnchorLink(state.target) && state.target.contains(target) && !e[$0294ea432cd92340$var$LINK_CLICKED]) {
|
240 |
|
241 |
|
242 | e[$0294ea432cd92340$var$LINK_CLICKED] = true;
|
243 | (0, $bBqCQ$reactariautils.openLink)(state.target, e, false);
|
244 | }
|
245 | state.isPressed = false;
|
246 | (_state_metaKeyEvents1 = state.metaKeyEvents) === null || _state_metaKeyEvents1 === void 0 ? void 0 : _state_metaKeyEvents1.delete(e.key);
|
247 | } else if (e.key === 'Meta' && ((_state_metaKeyEvents = state.metaKeyEvents) === null || _state_metaKeyEvents === void 0 ? void 0 : _state_metaKeyEvents.size)) {
|
248 | var _state_target;
|
249 |
|
250 |
|
251 |
|
252 | let events = state.metaKeyEvents;
|
253 | state.metaKeyEvents = undefined;
|
254 | for (let event of events.values())(_state_target = state.target) === null || _state_target === void 0 ? void 0 : _state_target.dispatchEvent(new KeyboardEvent('keyup', event));
|
255 | }
|
256 | };
|
257 | if (typeof PointerEvent !== 'undefined') {
|
258 | pressProps.onPointerDown = (e)=>{
|
259 |
|
260 | if (e.button !== 0 || !e.currentTarget.contains(e.target)) return;
|
261 |
|
262 |
|
263 |
|
264 |
|
265 | if ((0, $bBqCQ$reactariautils.isVirtualPointerEvent)(e.nativeEvent)) {
|
266 | state.pointerType = 'virtual';
|
267 | return;
|
268 | }
|
269 |
|
270 |
|
271 | if ($0294ea432cd92340$var$shouldPreventDefaultDown(e.currentTarget)) e.preventDefault();
|
272 | state.pointerType = e.pointerType;
|
273 | let shouldStopPropagation = true;
|
274 | if (!state.isPressed) {
|
275 | state.isPressed = true;
|
276 | state.isOverTarget = true;
|
277 | state.activePointerId = e.pointerId;
|
278 | state.target = e.currentTarget;
|
279 | if (!isDisabled && !preventFocusOnPress) (0, $bBqCQ$reactariautils.focusWithoutScrolling)(e.currentTarget);
|
280 | if (!allowTextSelectionOnPress) (0, $f7e14e656343df57$exports.disableTextSelection)(state.target);
|
281 | shouldStopPropagation = triggerPressStart(e, state.pointerType);
|
282 | addGlobalListener((0, $bBqCQ$reactariautils.getOwnerDocument)(e.currentTarget), 'pointermove', onPointerMove, false);
|
283 | addGlobalListener((0, $bBqCQ$reactariautils.getOwnerDocument)(e.currentTarget), 'pointerup', onPointerUp, false);
|
284 | addGlobalListener((0, $bBqCQ$reactariautils.getOwnerDocument)(e.currentTarget), 'pointercancel', onPointerCancel, false);
|
285 | }
|
286 | if (shouldStopPropagation) e.stopPropagation();
|
287 | };
|
288 | pressProps.onMouseDown = (e)=>{
|
289 | if (!e.currentTarget.contains(e.target)) return;
|
290 | if (e.button === 0) {
|
291 |
|
292 |
|
293 |
|
294 | if ($0294ea432cd92340$var$shouldPreventDefaultDown(e.currentTarget)) e.preventDefault();
|
295 | e.stopPropagation();
|
296 | }
|
297 | };
|
298 | pressProps.onPointerUp = (e)=>{
|
299 |
|
300 | if (!e.currentTarget.contains(e.target) || state.pointerType === 'virtual') return;
|
301 |
|
302 |
|
303 |
|
304 | if (e.button === 0 && $0294ea432cd92340$var$isOverTarget(e, e.currentTarget)) triggerPressUp(e, state.pointerType || e.pointerType);
|
305 | };
|
306 |
|
307 |
|
308 |
|
309 | let onPointerMove = (e)=>{
|
310 | if (e.pointerId !== state.activePointerId) return;
|
311 | if (state.target && $0294ea432cd92340$var$isOverTarget(e, state.target)) {
|
312 | if (!state.isOverTarget && state.pointerType != null) {
|
313 | state.isOverTarget = true;
|
314 | triggerPressStart($0294ea432cd92340$var$createEvent(state.target, e), state.pointerType);
|
315 | }
|
316 | } else if (state.target && state.isOverTarget && state.pointerType != null) {
|
317 | state.isOverTarget = false;
|
318 | triggerPressEnd($0294ea432cd92340$var$createEvent(state.target, e), state.pointerType, false);
|
319 | cancelOnPointerExit(e);
|
320 | }
|
321 | };
|
322 | let onPointerUp = (e)=>{
|
323 | if (e.pointerId === state.activePointerId && state.isPressed && e.button === 0 && state.target) {
|
324 | if ($0294ea432cd92340$var$isOverTarget(e, state.target) && state.pointerType != null) triggerPressEnd($0294ea432cd92340$var$createEvent(state.target, e), state.pointerType);
|
325 | else if (state.isOverTarget && state.pointerType != null) triggerPressEnd($0294ea432cd92340$var$createEvent(state.target, e), state.pointerType, false);
|
326 | state.isPressed = false;
|
327 | state.isOverTarget = false;
|
328 | state.activePointerId = null;
|
329 | state.pointerType = null;
|
330 | removeAllGlobalListeners();
|
331 | if (!allowTextSelectionOnPress) (0, $f7e14e656343df57$exports.restoreTextSelection)(state.target);
|
332 |
|
333 |
|
334 | if ('ontouchend' in state.target && e.pointerType !== 'mouse') addGlobalListener(state.target, 'touchend', onTouchEnd, {
|
335 | once: true
|
336 | });
|
337 | }
|
338 | };
|
339 |
|
340 |
|
341 |
|
342 |
|
343 |
|
344 |
|
345 | let onTouchEnd = (e)=>{
|
346 |
|
347 | if ($0294ea432cd92340$var$shouldPreventDefaultUp(e.target)) e.preventDefault();
|
348 | };
|
349 | let onPointerCancel = (e)=>{
|
350 | cancel(e);
|
351 | };
|
352 | pressProps.onDragStart = (e)=>{
|
353 | if (!e.currentTarget.contains(e.target)) return;
|
354 |
|
355 | cancel(e);
|
356 | };
|
357 | } else {
|
358 | pressProps.onMouseDown = (e)=>{
|
359 |
|
360 | if (e.button !== 0 || !e.currentTarget.contains(e.target)) return;
|
361 |
|
362 |
|
363 | if ($0294ea432cd92340$var$shouldPreventDefaultDown(e.currentTarget)) e.preventDefault();
|
364 | if (state.ignoreEmulatedMouseEvents) {
|
365 | e.stopPropagation();
|
366 | return;
|
367 | }
|
368 | state.isPressed = true;
|
369 | state.isOverTarget = true;
|
370 | state.target = e.currentTarget;
|
371 | state.pointerType = (0, $bBqCQ$reactariautils.isVirtualClick)(e.nativeEvent) ? 'virtual' : 'mouse';
|
372 | if (!isDisabled && !preventFocusOnPress) (0, $bBqCQ$reactariautils.focusWithoutScrolling)(e.currentTarget);
|
373 | let shouldStopPropagation = triggerPressStart(e, state.pointerType);
|
374 | if (shouldStopPropagation) e.stopPropagation();
|
375 | addGlobalListener((0, $bBqCQ$reactariautils.getOwnerDocument)(e.currentTarget), 'mouseup', onMouseUp, false);
|
376 | };
|
377 | pressProps.onMouseEnter = (e)=>{
|
378 | if (!e.currentTarget.contains(e.target)) return;
|
379 | let shouldStopPropagation = true;
|
380 | if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {
|
381 | state.isOverTarget = true;
|
382 | shouldStopPropagation = triggerPressStart(e, state.pointerType);
|
383 | }
|
384 | if (shouldStopPropagation) e.stopPropagation();
|
385 | };
|
386 | pressProps.onMouseLeave = (e)=>{
|
387 | if (!e.currentTarget.contains(e.target)) return;
|
388 | let shouldStopPropagation = true;
|
389 | if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {
|
390 | state.isOverTarget = false;
|
391 | shouldStopPropagation = triggerPressEnd(e, state.pointerType, false);
|
392 | cancelOnPointerExit(e);
|
393 | }
|
394 | if (shouldStopPropagation) e.stopPropagation();
|
395 | };
|
396 | pressProps.onMouseUp = (e)=>{
|
397 | if (!e.currentTarget.contains(e.target)) return;
|
398 | if (!state.ignoreEmulatedMouseEvents && e.button === 0) triggerPressUp(e, state.pointerType || 'mouse');
|
399 | };
|
400 | let onMouseUp = (e)=>{
|
401 |
|
402 | if (e.button !== 0) return;
|
403 | state.isPressed = false;
|
404 | removeAllGlobalListeners();
|
405 | if (state.ignoreEmulatedMouseEvents) {
|
406 | state.ignoreEmulatedMouseEvents = false;
|
407 | return;
|
408 | }
|
409 | if (state.target && $0294ea432cd92340$var$isOverTarget(e, state.target) && state.pointerType != null) triggerPressEnd($0294ea432cd92340$var$createEvent(state.target, e), state.pointerType);
|
410 | else if (state.target && state.isOverTarget && state.pointerType != null) triggerPressEnd($0294ea432cd92340$var$createEvent(state.target, e), state.pointerType, false);
|
411 | state.isOverTarget = false;
|
412 | };
|
413 | pressProps.onTouchStart = (e)=>{
|
414 | if (!e.currentTarget.contains(e.target)) return;
|
415 | let touch = $0294ea432cd92340$var$getTouchFromEvent(e.nativeEvent);
|
416 | if (!touch) return;
|
417 | state.activePointerId = touch.identifier;
|
418 | state.ignoreEmulatedMouseEvents = true;
|
419 | state.isOverTarget = true;
|
420 | state.isPressed = true;
|
421 | state.target = e.currentTarget;
|
422 | state.pointerType = 'touch';
|
423 |
|
424 |
|
425 | if (!isDisabled && !preventFocusOnPress) (0, $bBqCQ$reactariautils.focusWithoutScrolling)(e.currentTarget);
|
426 | if (!allowTextSelectionOnPress) (0, $f7e14e656343df57$exports.disableTextSelection)(state.target);
|
427 | let shouldStopPropagation = triggerPressStart($0294ea432cd92340$var$createTouchEvent(state.target, e), state.pointerType);
|
428 | if (shouldStopPropagation) e.stopPropagation();
|
429 | addGlobalListener((0, $bBqCQ$reactariautils.getOwnerWindow)(e.currentTarget), 'scroll', onScroll, true);
|
430 | };
|
431 | pressProps.onTouchMove = (e)=>{
|
432 | if (!e.currentTarget.contains(e.target)) return;
|
433 | if (!state.isPressed) {
|
434 | e.stopPropagation();
|
435 | return;
|
436 | }
|
437 | let touch = $0294ea432cd92340$var$getTouchById(e.nativeEvent, state.activePointerId);
|
438 | let shouldStopPropagation = true;
|
439 | if (touch && $0294ea432cd92340$var$isOverTarget(touch, e.currentTarget)) {
|
440 | if (!state.isOverTarget && state.pointerType != null) {
|
441 | state.isOverTarget = true;
|
442 | shouldStopPropagation = triggerPressStart($0294ea432cd92340$var$createTouchEvent(state.target, e), state.pointerType);
|
443 | }
|
444 | } else if (state.isOverTarget && state.pointerType != null) {
|
445 | state.isOverTarget = false;
|
446 | shouldStopPropagation = triggerPressEnd($0294ea432cd92340$var$createTouchEvent(state.target, e), state.pointerType, false);
|
447 | cancelOnPointerExit($0294ea432cd92340$var$createTouchEvent(state.target, e));
|
448 | }
|
449 | if (shouldStopPropagation) e.stopPropagation();
|
450 | };
|
451 | pressProps.onTouchEnd = (e)=>{
|
452 | if (!e.currentTarget.contains(e.target)) return;
|
453 | if (!state.isPressed) {
|
454 | e.stopPropagation();
|
455 | return;
|
456 | }
|
457 | let touch = $0294ea432cd92340$var$getTouchById(e.nativeEvent, state.activePointerId);
|
458 | let shouldStopPropagation = true;
|
459 | if (touch && $0294ea432cd92340$var$isOverTarget(touch, e.currentTarget) && state.pointerType != null) {
|
460 | triggerPressUp($0294ea432cd92340$var$createTouchEvent(state.target, e), state.pointerType);
|
461 | shouldStopPropagation = triggerPressEnd($0294ea432cd92340$var$createTouchEvent(state.target, e), state.pointerType);
|
462 | } else if (state.isOverTarget && state.pointerType != null) shouldStopPropagation = triggerPressEnd($0294ea432cd92340$var$createTouchEvent(state.target, e), state.pointerType, false);
|
463 | if (shouldStopPropagation) e.stopPropagation();
|
464 | state.isPressed = false;
|
465 | state.activePointerId = null;
|
466 | state.isOverTarget = false;
|
467 | state.ignoreEmulatedMouseEvents = true;
|
468 | if (state.target && !allowTextSelectionOnPress) (0, $f7e14e656343df57$exports.restoreTextSelection)(state.target);
|
469 | removeAllGlobalListeners();
|
470 | };
|
471 | pressProps.onTouchCancel = (e)=>{
|
472 | if (!e.currentTarget.contains(e.target)) return;
|
473 | e.stopPropagation();
|
474 | if (state.isPressed) cancel($0294ea432cd92340$var$createTouchEvent(state.target, e));
|
475 | };
|
476 | let onScroll = (e)=>{
|
477 | if (state.isPressed && e.target.contains(state.target)) cancel({
|
478 | currentTarget: state.target,
|
479 | shiftKey: false,
|
480 | ctrlKey: false,
|
481 | metaKey: false,
|
482 | altKey: false
|
483 | });
|
484 | };
|
485 | pressProps.onDragStart = (e)=>{
|
486 | if (!e.currentTarget.contains(e.target)) return;
|
487 | cancel(e);
|
488 | };
|
489 | }
|
490 | return pressProps;
|
491 | }, [
|
492 | addGlobalListener,
|
493 | isDisabled,
|
494 | preventFocusOnPress,
|
495 | removeAllGlobalListeners,
|
496 | allowTextSelectionOnPress,
|
497 | cancel,
|
498 | cancelOnPointerExit,
|
499 | triggerPressEnd,
|
500 | triggerPressStart,
|
501 | triggerPressUp
|
502 | ]);
|
503 |
|
504 |
|
505 | (0, $bBqCQ$react.useEffect)(()=>{
|
506 | return ()=>{
|
507 | var _ref_current_target;
|
508 | if (!allowTextSelectionOnPress)
|
509 | (0, $f7e14e656343df57$exports.restoreTextSelection)((_ref_current_target = ref.current.target) !== null && _ref_current_target !== void 0 ? _ref_current_target : undefined);
|
510 | };
|
511 | }, [
|
512 | allowTextSelectionOnPress
|
513 | ]);
|
514 | return {
|
515 | isPressed: isPressedProp || isPressed,
|
516 | pressProps: (0, $bBqCQ$reactariautils.mergeProps)(domProps, pressProps)
|
517 | };
|
518 | }
|
519 | function $0294ea432cd92340$var$isHTMLAnchorLink(target) {
|
520 | return target.tagName === 'A' && target.hasAttribute('href');
|
521 | }
|
522 | function $0294ea432cd92340$var$isValidKeyboardEvent(event, currentTarget) {
|
523 | const { key: key, code: code } = event;
|
524 | const element = currentTarget;
|
525 | const role = element.getAttribute('role');
|
526 |
|
527 |
|
528 | return (key === 'Enter' || key === ' ' || key === 'Spacebar' || code === 'Space') && !(element instanceof (0, $bBqCQ$reactariautils.getOwnerWindow)(element).HTMLInputElement && !$0294ea432cd92340$var$isValidInputKey(element, key) || element instanceof (0, $bBqCQ$reactariautils.getOwnerWindow)(element).HTMLTextAreaElement || element.isContentEditable) &&
|
529 | !((role === 'link' || !role && $0294ea432cd92340$var$isHTMLAnchorLink(element)) && key !== 'Enter');
|
530 | }
|
531 | function $0294ea432cd92340$var$getTouchFromEvent(event) {
|
532 | const { targetTouches: targetTouches } = event;
|
533 | if (targetTouches.length > 0) return targetTouches[0];
|
534 | return null;
|
535 | }
|
536 | function $0294ea432cd92340$var$getTouchById(event, pointerId) {
|
537 | const changedTouches = event.changedTouches;
|
538 | for(let i = 0; i < changedTouches.length; i++){
|
539 | const touch = changedTouches[i];
|
540 | if (touch.identifier === pointerId) return touch;
|
541 | }
|
542 | return null;
|
543 | }
|
544 | function $0294ea432cd92340$var$createTouchEvent(target, e) {
|
545 | let clientX = 0;
|
546 | let clientY = 0;
|
547 | if (e.targetTouches && e.targetTouches.length === 1) {
|
548 | clientX = e.targetTouches[0].clientX;
|
549 | clientY = e.targetTouches[0].clientY;
|
550 | }
|
551 | return {
|
552 | currentTarget: target,
|
553 | shiftKey: e.shiftKey,
|
554 | ctrlKey: e.ctrlKey,
|
555 | metaKey: e.metaKey,
|
556 | altKey: e.altKey,
|
557 | clientX: clientX,
|
558 | clientY: clientY
|
559 | };
|
560 | }
|
561 | function $0294ea432cd92340$var$createEvent(target, e) {
|
562 | let clientX = e.clientX;
|
563 | let clientY = e.clientY;
|
564 | return {
|
565 | currentTarget: target,
|
566 | shiftKey: e.shiftKey,
|
567 | ctrlKey: e.ctrlKey,
|
568 | metaKey: e.metaKey,
|
569 | altKey: e.altKey,
|
570 | clientX: clientX,
|
571 | clientY: clientY
|
572 | };
|
573 | }
|
574 | function $0294ea432cd92340$var$getPointClientRect(point) {
|
575 | let offsetX = 0;
|
576 | let offsetY = 0;
|
577 | if (point.width !== undefined) offsetX = point.width / 2;
|
578 | else if (point.radiusX !== undefined) offsetX = point.radiusX;
|
579 | if (point.height !== undefined) offsetY = point.height / 2;
|
580 | else if (point.radiusY !== undefined) offsetY = point.radiusY;
|
581 | return {
|
582 | top: point.clientY - offsetY,
|
583 | right: point.clientX + offsetX,
|
584 | bottom: point.clientY + offsetY,
|
585 | left: point.clientX - offsetX
|
586 | };
|
587 | }
|
588 | function $0294ea432cd92340$var$areRectanglesOverlapping(a, b) {
|
589 |
|
590 | if (a.left > b.right || b.left > a.right) return false;
|
591 |
|
592 | if (a.top > b.bottom || b.top > a.bottom) return false;
|
593 | return true;
|
594 | }
|
595 | function $0294ea432cd92340$var$isOverTarget(point, target) {
|
596 | let rect = target.getBoundingClientRect();
|
597 | let pointRect = $0294ea432cd92340$var$getPointClientRect(point);
|
598 | return $0294ea432cd92340$var$areRectanglesOverlapping(rect, pointRect);
|
599 | }
|
600 | function $0294ea432cd92340$var$shouldPreventDefaultDown(target) {
|
601 |
|
602 | return !(target instanceof HTMLElement) || !target.hasAttribute('draggable');
|
603 | }
|
604 | function $0294ea432cd92340$var$shouldPreventDefaultUp(target) {
|
605 | if (target instanceof HTMLInputElement) return false;
|
606 | if (target instanceof HTMLButtonElement) return target.type !== 'submit' && target.type !== 'reset';
|
607 | if ($0294ea432cd92340$var$isHTMLAnchorLink(target)) return false;
|
608 | return true;
|
609 | }
|
610 | function $0294ea432cd92340$var$shouldPreventDefaultKeyboard(target, key) {
|
611 | if (target instanceof HTMLInputElement) return !$0294ea432cd92340$var$isValidInputKey(target, key);
|
612 | return $0294ea432cd92340$var$shouldPreventDefaultUp(target);
|
613 | }
|
614 | const $0294ea432cd92340$var$nonTextInputTypes = new Set([
|
615 | 'checkbox',
|
616 | 'radio',
|
617 | 'range',
|
618 | 'color',
|
619 | 'file',
|
620 | 'image',
|
621 | 'button',
|
622 | 'submit',
|
623 | 'reset'
|
624 | ]);
|
625 | function $0294ea432cd92340$var$isValidInputKey(target, key) {
|
626 |
|
627 | return target.type === 'checkbox' || target.type === 'radio' ? key === ' ' : $0294ea432cd92340$var$nonTextInputTypes.has(target.type);
|
628 | }
|
629 |
|
630 |
|
631 |
|