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