@react-aria/interactions 3.25.5 → 3.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/focusSafely.main.js +4 -4
  2. package/dist/focusSafely.main.js.map +1 -1
  3. package/dist/focusSafely.mjs +4 -4
  4. package/dist/focusSafely.module.js +4 -4
  5. package/dist/focusSafely.module.js.map +1 -1
  6. package/dist/import.mjs +2 -2
  7. package/dist/main.js +1 -0
  8. package/dist/main.js.map +1 -1
  9. package/dist/module.js +2 -2
  10. package/dist/module.js.map +1 -1
  11. package/dist/types.d.ts +3 -1
  12. package/dist/types.d.ts.map +1 -1
  13. package/dist/useFocusVisible.main.js +12 -2
  14. package/dist/useFocusVisible.main.js.map +1 -1
  15. package/dist/useFocusVisible.mjs +13 -4
  16. package/dist/useFocusVisible.module.js +13 -4
  17. package/dist/useFocusVisible.module.js.map +1 -1
  18. package/dist/useInteractOutside.main.js +1 -3
  19. package/dist/useInteractOutside.main.js.map +1 -1
  20. package/dist/useInteractOutside.mjs +1 -3
  21. package/dist/useInteractOutside.module.js +1 -3
  22. package/dist/useInteractOutside.module.js.map +1 -1
  23. package/dist/useMove.main.js +110 -74
  24. package/dist/useMove.main.js.map +1 -1
  25. package/dist/useMove.mjs +112 -76
  26. package/dist/useMove.module.js +112 -76
  27. package/dist/useMove.module.js.map +1 -1
  28. package/dist/usePress.main.js +188 -114
  29. package/dist/usePress.main.js.map +1 -1
  30. package/dist/usePress.mjs +190 -116
  31. package/dist/usePress.module.js +190 -116
  32. package/dist/usePress.module.js.map +1 -1
  33. package/dist/utils.main.js +2 -5
  34. package/dist/utils.main.js.map +1 -1
  35. package/dist/utils.mjs +3 -6
  36. package/dist/utils.module.js +3 -6
  37. package/dist/utils.module.js.map +1 -1
  38. package/package.json +4 -4
  39. package/src/focusSafely.ts +4 -4
  40. package/src/index.ts +1 -0
  41. package/src/useFocusVisible.ts +15 -3
  42. package/src/useInteractOutside.ts +1 -1
  43. package/src/useMove.ts +85 -57
  44. package/src/usePress.ts +192 -148
  45. package/src/utils.ts +3 -7
@@ -108,8 +108,8 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
108
108
  pointerType: null,
109
109
  disposables: []
110
110
  });
111
- let { addGlobalListener: addGlobalListener, removeAllGlobalListeners: removeAllGlobalListeners } = (0, $bBqCQ$reactariautils.useGlobalListeners)();
112
- let triggerPressStart = (0, $bBqCQ$reactariautils.useEffectEvent)((originalEvent, pointerType)=>{
111
+ let { addGlobalListener: addGlobalListener, removeAllGlobalListeners: removeAllGlobalListeners, removeGlobalListener: removeGlobalListener } = (0, $bBqCQ$reactariautils.useGlobalListeners)();
112
+ let triggerPressStart = (0, $bBqCQ$react.useCallback)((originalEvent, pointerType)=>{
113
113
  let state = ref.current;
114
114
  if (isDisabled || state.didFirePressStart) return false;
115
115
  let shouldStopPropagation = true;
@@ -124,8 +124,12 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
124
124
  state.didFirePressStart = true;
125
125
  setPressed(true);
126
126
  return shouldStopPropagation;
127
- });
128
- let triggerPressEnd = (0, $bBqCQ$reactariautils.useEffectEvent)((originalEvent, pointerType, wasPressed = true)=>{
127
+ }, [
128
+ isDisabled,
129
+ onPressStart,
130
+ onPressChange
131
+ ]);
132
+ let triggerPressEnd = (0, $bBqCQ$react.useCallback)((originalEvent, pointerType, wasPressed = true)=>{
129
133
  let state = ref.current;
130
134
  if (!state.didFirePressStart) return false;
131
135
  state.didFirePressStart = false;
@@ -145,8 +149,14 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
145
149
  }
146
150
  state.isTriggeringEvent = false;
147
151
  return shouldStopPropagation;
148
- });
149
- let triggerPressUp = (0, $bBqCQ$reactariautils.useEffectEvent)((originalEvent, pointerType)=>{
152
+ }, [
153
+ isDisabled,
154
+ onPressEnd,
155
+ onPressChange,
156
+ onPress
157
+ ]);
158
+ let triggerPressEndEvent = (0, $bBqCQ$reactariautils.useEffectEvent)(triggerPressEnd);
159
+ let triggerPressUp = (0, $bBqCQ$react.useCallback)((originalEvent, pointerType)=>{
150
160
  let state = ref.current;
151
161
  if (isDisabled) return false;
152
162
  if (onPressUp) {
@@ -157,12 +167,17 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
157
167
  return event.shouldStopPropagation;
158
168
  }
159
169
  return true;
160
- });
161
- let cancel = (0, $bBqCQ$reactariautils.useEffectEvent)((e)=>{
170
+ }, [
171
+ isDisabled,
172
+ onPressUp
173
+ ]);
174
+ let triggerPressUpEvent = (0, $bBqCQ$reactariautils.useEffectEvent)(triggerPressUp);
175
+ let cancel = (0, $bBqCQ$react.useCallback)((e)=>{
162
176
  let state = ref.current;
163
177
  if (state.isPressed && state.target) {
164
178
  if (state.didFirePressStart && state.pointerType != null) triggerPressEnd($0294ea432cd92340$var$createEvent(state.target, e), state.pointerType, false);
165
179
  state.isPressed = false;
180
+ setIsPointerPressed(null);
166
181
  state.isOverTarget = false;
167
182
  state.activePointerId = null;
168
183
  state.pointerType = null;
@@ -171,14 +186,27 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
171
186
  for (let dispose of state.disposables)dispose();
172
187
  state.disposables = [];
173
188
  }
174
- });
175
- let cancelOnPointerExit = (0, $bBqCQ$reactariautils.useEffectEvent)((e)=>{
189
+ }, [
190
+ allowTextSelectionOnPress,
191
+ removeAllGlobalListeners,
192
+ triggerPressEnd
193
+ ]);
194
+ let cancelEvent = (0, $bBqCQ$reactariautils.useEffectEvent)(cancel);
195
+ let cancelOnPointerExit = (0, $bBqCQ$react.useCallback)((e)=>{
176
196
  if (shouldCancelOnPointerExit) cancel(e);
177
- });
178
- let triggerClick = (0, $bBqCQ$reactariautils.useEffectEvent)((e)=>{
197
+ }, [
198
+ shouldCancelOnPointerExit,
199
+ cancel
200
+ ]);
201
+ let triggerClick = (0, $bBqCQ$react.useCallback)((e)=>{
202
+ if (isDisabled) return;
179
203
  onClick === null || onClick === void 0 ? void 0 : onClick(e);
180
- });
181
- let triggerSyntheticClick = (0, $bBqCQ$reactariautils.useEffectEvent)((e, target)=>{
204
+ }, [
205
+ isDisabled,
206
+ onClick
207
+ ]);
208
+ let triggerSyntheticClick = (0, $bBqCQ$react.useCallback)((e, target)=>{
209
+ if (isDisabled) return;
182
210
  // Some third-party libraries pass in onClick instead of onPress.
183
211
  // Create a fake mouse event and trigger onClick as well.
184
212
  // This matches the browser's native activation behavior for certain elements (e.g. button).
@@ -189,7 +217,147 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
189
217
  (0, $625cf83917e112ad$exports.setEventTarget)(event, target);
190
218
  onClick((0, $625cf83917e112ad$exports.createSyntheticEvent)(event));
191
219
  }
192
- });
220
+ }, [
221
+ isDisabled,
222
+ onClick
223
+ ]);
224
+ let triggerSyntheticClickEvent = (0, $bBqCQ$reactariautils.useEffectEvent)(triggerSyntheticClick);
225
+ let [isElemKeyPressed, setIsElemKeyPressed] = (0, $bBqCQ$react.useState)(false);
226
+ (0, $bBqCQ$reactariautils.useLayoutEffect)(()=>{
227
+ let state = ref.current;
228
+ if (isElemKeyPressed) {
229
+ let onKeyUp = (e)=>{
230
+ var _state_metaKeyEvents;
231
+ if (state.isPressed && state.target && $0294ea432cd92340$var$isValidKeyboardEvent(e, state.target)) {
232
+ var _state_metaKeyEvents1;
233
+ if ($0294ea432cd92340$var$shouldPreventDefaultKeyboard((0, $bBqCQ$reactariautils.getEventTarget)(e), e.key)) e.preventDefault();
234
+ let target = (0, $bBqCQ$reactariautils.getEventTarget)(e);
235
+ let wasPressed = (0, $bBqCQ$reactariautils.nodeContains)(state.target, (0, $bBqCQ$reactariautils.getEventTarget)(e));
236
+ triggerPressEndEvent($0294ea432cd92340$var$createEvent(state.target, e), 'keyboard', wasPressed);
237
+ if (wasPressed) triggerSyntheticClickEvent(e, state.target);
238
+ removeAllGlobalListeners();
239
+ // If a link was triggered with a key other than Enter, open the URL ourselves.
240
+ // This means the link has a role override, and the default browser behavior
241
+ // only applies when using the Enter key.
242
+ if (e.key !== 'Enter' && $0294ea432cd92340$var$isHTMLAnchorLink(state.target) && (0, $bBqCQ$reactariautils.nodeContains)(state.target, target) && !e[$0294ea432cd92340$var$LINK_CLICKED]) {
243
+ // Store a hidden property on the event so we only trigger link click once,
244
+ // even if there are multiple usePress instances attached to the element.
245
+ e[$0294ea432cd92340$var$LINK_CLICKED] = true;
246
+ (0, $bBqCQ$reactariautils.openLink)(state.target, e, false);
247
+ }
248
+ state.isPressed = false;
249
+ setIsElemKeyPressed(false);
250
+ (_state_metaKeyEvents1 = state.metaKeyEvents) === null || _state_metaKeyEvents1 === void 0 ? void 0 : _state_metaKeyEvents1.delete(e.key);
251
+ } else if (e.key === 'Meta' && ((_state_metaKeyEvents = state.metaKeyEvents) === null || _state_metaKeyEvents === void 0 ? void 0 : _state_metaKeyEvents.size)) {
252
+ var _state_target;
253
+ // If we recorded keydown events that occurred while the Meta key was pressed,
254
+ // and those haven't received keyup events already, fire keyup events ourselves.
255
+ // See comment above for more info about the macOS bug causing this.
256
+ let events = state.metaKeyEvents;
257
+ state.metaKeyEvents = undefined;
258
+ for (let event of events.values())(_state_target = state.target) === null || _state_target === void 0 ? void 0 : _state_target.dispatchEvent(new KeyboardEvent('keyup', event));
259
+ }
260
+ };
261
+ // Focus may move before the key up event, so register the event on the document
262
+ // instead of the same element where the key down event occurred. Make it capturing so that it will trigger
263
+ // before stopPropagation from useKeyboard on a child element may happen and thus we can still call triggerPress for the parent element.
264
+ let originalTarget = state.target;
265
+ let pressUp = (e)=>{
266
+ if (originalTarget && $0294ea432cd92340$var$isValidKeyboardEvent(e, originalTarget) && !e.repeat && (0, $bBqCQ$reactariautils.nodeContains)(originalTarget, (0, $bBqCQ$reactariautils.getEventTarget)(e)) && state.target) triggerPressUpEvent($0294ea432cd92340$var$createEvent(state.target, e), 'keyboard');
267
+ };
268
+ let listener = (0, $bBqCQ$reactariautils.chain)(pressUp, onKeyUp);
269
+ addGlobalListener((0, $bBqCQ$reactariautils.getOwnerDocument)(state.target), 'keyup', listener, true);
270
+ return ()=>{
271
+ removeGlobalListener((0, $bBqCQ$reactariautils.getOwnerDocument)(state.target), 'keyup', listener, true);
272
+ };
273
+ }
274
+ }, [
275
+ isElemKeyPressed,
276
+ addGlobalListener,
277
+ removeAllGlobalListeners,
278
+ removeGlobalListener
279
+ ]);
280
+ let [isPointerPressed, setIsPointerPressed] = (0, $bBqCQ$react.useState)(null);
281
+ (0, $bBqCQ$reactariautils.useLayoutEffect)(()=>{
282
+ let state = ref.current;
283
+ if (isPointerPressed === 'pointer') {
284
+ let onPointerUp = (e)=>{
285
+ if (e.pointerId === state.activePointerId && state.isPressed && e.button === 0 && state.target) {
286
+ if ((0, $bBqCQ$reactariautils.nodeContains)(state.target, (0, $bBqCQ$reactariautils.getEventTarget)(e)) && state.pointerType != null) {
287
+ // Wait for onClick to fire onPress. This avoids browser issues when the DOM
288
+ // is mutated between onPointerUp and onClick, and is more compatible with third party libraries.
289
+ // https://github.com/adobe/react-spectrum/issues/1513
290
+ // https://issues.chromium.org/issues/40732224
291
+ // However, iOS and Android do not focus or fire onClick after a long press.
292
+ // We work around this by triggering a click ourselves after a timeout.
293
+ // This timeout is canceled during the click event in case the real one fires first.
294
+ // The timeout must be at least 32ms, because Safari on iOS delays the click event on
295
+ // non-form elements without certain ARIA roles (for hover emulation).
296
+ // https://github.com/WebKit/WebKit/blob/dccfae42bb29bd4bdef052e469f604a9387241c0/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm#L875-L892
297
+ let clicked = false;
298
+ let timeout = setTimeout(()=>{
299
+ if (state.isPressed && state.target instanceof HTMLElement) {
300
+ if (clicked) cancelEvent(e);
301
+ else {
302
+ (0, $bBqCQ$reactariautils.focusWithoutScrolling)(state.target);
303
+ state.target.click();
304
+ }
305
+ }
306
+ }, 80);
307
+ // Use a capturing listener to track if a click occurred.
308
+ // If stopPropagation is called it may never reach our handler.
309
+ addGlobalListener(e.currentTarget, 'click', ()=>clicked = true, true);
310
+ state.disposables.push(()=>clearTimeout(timeout));
311
+ } else cancelEvent(e);
312
+ // Ignore subsequent onPointerLeave event before onClick on touch devices.
313
+ state.isOverTarget = false;
314
+ }
315
+ };
316
+ let onPointerCancel = (e)=>{
317
+ cancelEvent(e);
318
+ };
319
+ addGlobalListener((0, $bBqCQ$reactariautils.getOwnerDocument)(state.target), 'pointerup', onPointerUp, false);
320
+ addGlobalListener((0, $bBqCQ$reactariautils.getOwnerDocument)(state.target), 'pointercancel', onPointerCancel, false);
321
+ return ()=>{
322
+ removeGlobalListener((0, $bBqCQ$reactariautils.getOwnerDocument)(state.target), 'pointerup', onPointerUp, false);
323
+ removeGlobalListener((0, $bBqCQ$reactariautils.getOwnerDocument)(state.target), 'pointercancel', onPointerCancel, false);
324
+ };
325
+ } else if (isPointerPressed === 'mouse' && process.env.NODE_ENV === 'test') {
326
+ let onMouseUp = (e)=>{
327
+ // Only handle left clicks
328
+ if (e.button !== 0) return;
329
+ if (state.ignoreEmulatedMouseEvents) {
330
+ state.ignoreEmulatedMouseEvents = false;
331
+ return;
332
+ }
333
+ if (state.target && state.target.contains(e.target) && state.pointerType != null) ;
334
+ else cancelEvent(e);
335
+ state.isOverTarget = false;
336
+ };
337
+ addGlobalListener((0, $bBqCQ$reactariautils.getOwnerDocument)(state.target), 'mouseup', onMouseUp, false);
338
+ return ()=>{
339
+ removeGlobalListener((0, $bBqCQ$reactariautils.getOwnerDocument)(state.target), 'mouseup', onMouseUp, false);
340
+ };
341
+ } else if (isPointerPressed === 'touch' && process.env.NODE_ENV === 'test') {
342
+ let onScroll = (e)=>{
343
+ if (state.isPressed && (0, $bBqCQ$reactariautils.nodeContains)((0, $bBqCQ$reactariautils.getEventTarget)(e), state.target)) cancelEvent({
344
+ currentTarget: state.target,
345
+ shiftKey: false,
346
+ ctrlKey: false,
347
+ metaKey: false,
348
+ altKey: false
349
+ });
350
+ };
351
+ addGlobalListener((0, $bBqCQ$reactariautils.getOwnerWindow)(state.target), 'scroll', onScroll, true);
352
+ return ()=>{
353
+ removeGlobalListener((0, $bBqCQ$reactariautils.getOwnerWindow)(state.target), 'scroll', onScroll, true);
354
+ };
355
+ }
356
+ }, [
357
+ isPointerPressed,
358
+ addGlobalListener,
359
+ removeGlobalListener
360
+ ]);
193
361
  let pressProps = (0, $bBqCQ$react.useMemo)(()=>{
194
362
  let state = ref.current;
195
363
  let pressProps = {
@@ -204,16 +372,9 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
204
372
  if (!state.isPressed && !e.repeat) {
205
373
  state.target = e.currentTarget;
206
374
  state.isPressed = true;
375
+ setIsElemKeyPressed(true);
207
376
  state.pointerType = 'keyboard';
208
377
  shouldStopPropagation = triggerPressStart(e, 'keyboard');
209
- // Focus may move before the key up event, so register the event on the document
210
- // instead of the same element where the key down event occurred. Make it capturing so that it will trigger
211
- // before stopPropagation from useKeyboard on a child element may happen and thus we can still call triggerPress for the parent element.
212
- let originalTarget = e.currentTarget;
213
- let pressUp = (e)=>{
214
- if ($0294ea432cd92340$var$isValidKeyboardEvent(e, originalTarget) && !e.repeat && (0, $bBqCQ$reactariautils.nodeContains)(originalTarget, (0, $bBqCQ$reactariautils.getEventTarget)(e)) && state.target) triggerPressUp($0294ea432cd92340$var$createEvent(state.target, e), 'keyboard');
215
- };
216
- addGlobalListener((0, $bBqCQ$reactariautils.getOwnerDocument)(e.currentTarget), 'keyup', (0, $bBqCQ$reactariautils.chain)(pressUp, onKeyUp), true);
217
378
  }
218
379
  if (shouldStopPropagation) e.stopPropagation();
219
380
  // Keep track of the keydown events that occur while the Meta (e.g. Command) key is held.
@@ -253,37 +414,6 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
253
414
  }
254
415
  }
255
416
  };
256
- let onKeyUp = (e)=>{
257
- var _state_metaKeyEvents;
258
- if (state.isPressed && state.target && $0294ea432cd92340$var$isValidKeyboardEvent(e, state.target)) {
259
- var _state_metaKeyEvents1;
260
- if ($0294ea432cd92340$var$shouldPreventDefaultKeyboard((0, $bBqCQ$reactariautils.getEventTarget)(e), e.key)) e.preventDefault();
261
- let target = (0, $bBqCQ$reactariautils.getEventTarget)(e);
262
- let wasPressed = (0, $bBqCQ$reactariautils.nodeContains)(state.target, (0, $bBqCQ$reactariautils.getEventTarget)(e));
263
- triggerPressEnd($0294ea432cd92340$var$createEvent(state.target, e), 'keyboard', wasPressed);
264
- if (wasPressed) triggerSyntheticClick(e, state.target);
265
- removeAllGlobalListeners();
266
- // If a link was triggered with a key other than Enter, open the URL ourselves.
267
- // This means the link has a role override, and the default browser behavior
268
- // only applies when using the Enter key.
269
- if (e.key !== 'Enter' && $0294ea432cd92340$var$isHTMLAnchorLink(state.target) && (0, $bBqCQ$reactariautils.nodeContains)(state.target, target) && !e[$0294ea432cd92340$var$LINK_CLICKED]) {
270
- // Store a hidden property on the event so we only trigger link click once,
271
- // even if there are multiple usePress instances attached to the element.
272
- e[$0294ea432cd92340$var$LINK_CLICKED] = true;
273
- (0, $bBqCQ$reactariautils.openLink)(state.target, e, false);
274
- }
275
- state.isPressed = false;
276
- (_state_metaKeyEvents1 = state.metaKeyEvents) === null || _state_metaKeyEvents1 === void 0 ? void 0 : _state_metaKeyEvents1.delete(e.key);
277
- } else if (e.key === 'Meta' && ((_state_metaKeyEvents = state.metaKeyEvents) === null || _state_metaKeyEvents === void 0 ? void 0 : _state_metaKeyEvents.size)) {
278
- var _state_target;
279
- // If we recorded keydown events that occurred while the Meta key was pressed,
280
- // and those haven't received keyup events already, fire keyup events ourselves.
281
- // See comment above for more info about the macOS bug causing this.
282
- let events = state.metaKeyEvents;
283
- state.metaKeyEvents = undefined;
284
- for (let event of events.values())(_state_target = state.target) === null || _state_target === void 0 ? void 0 : _state_target.dispatchEvent(new KeyboardEvent('keyup', event));
285
- }
286
- };
287
417
  if (typeof PointerEvent !== 'undefined') {
288
418
  pressProps.onPointerDown = (e)=>{
289
419
  // Only handle left clicks, and ignore events that bubbled through portals.
@@ -300,6 +430,7 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
300
430
  let shouldStopPropagation = true;
301
431
  if (!state.isPressed) {
302
432
  state.isPressed = true;
433
+ setIsPointerPressed('pointer');
303
434
  state.isOverTarget = true;
304
435
  state.activePointerId = e.pointerId;
305
436
  state.target = e.currentTarget;
@@ -309,8 +440,6 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
309
440
  // This enables onPointerLeave and onPointerEnter to fire.
310
441
  let target = (0, $bBqCQ$reactariautils.getEventTarget)(e.nativeEvent);
311
442
  if ('releasePointerCapture' in target) target.releasePointerCapture(e.pointerId);
312
- addGlobalListener((0, $bBqCQ$reactariautils.getOwnerDocument)(e.currentTarget), 'pointerup', onPointerUp, false);
313
- addGlobalListener((0, $bBqCQ$reactariautils.getOwnerDocument)(e.currentTarget), 'pointercancel', onPointerCancel, false);
314
443
  }
315
444
  if (shouldStopPropagation) e.stopPropagation();
316
445
  };
@@ -343,41 +472,6 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
343
472
  cancelOnPointerExit(e);
344
473
  }
345
474
  };
346
- let onPointerUp = (e)=>{
347
- if (e.pointerId === state.activePointerId && state.isPressed && e.button === 0 && state.target) {
348
- if ((0, $bBqCQ$reactariautils.nodeContains)(state.target, (0, $bBqCQ$reactariautils.getEventTarget)(e)) && state.pointerType != null) {
349
- // Wait for onClick to fire onPress. This avoids browser issues when the DOM
350
- // is mutated between onPointerUp and onClick, and is more compatible with third party libraries.
351
- // https://github.com/adobe/react-spectrum/issues/1513
352
- // https://issues.chromium.org/issues/40732224
353
- // However, iOS and Android do not focus or fire onClick after a long press.
354
- // We work around this by triggering a click ourselves after a timeout.
355
- // This timeout is canceled during the click event in case the real one fires first.
356
- // The timeout must be at least 32ms, because Safari on iOS delays the click event on
357
- // non-form elements without certain ARIA roles (for hover emulation).
358
- // https://github.com/WebKit/WebKit/blob/dccfae42bb29bd4bdef052e469f604a9387241c0/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm#L875-L892
359
- let clicked = false;
360
- let timeout = setTimeout(()=>{
361
- if (state.isPressed && state.target instanceof HTMLElement) {
362
- if (clicked) cancel(e);
363
- else {
364
- (0, $bBqCQ$reactariautils.focusWithoutScrolling)(state.target);
365
- state.target.click();
366
- }
367
- }
368
- }, 80);
369
- // Use a capturing listener to track if a click occurred.
370
- // If stopPropagation is called it may never reach our handler.
371
- addGlobalListener(e.currentTarget, 'click', ()=>clicked = true, true);
372
- state.disposables.push(()=>clearTimeout(timeout));
373
- } else cancel(e);
374
- // Ignore subsequent onPointerLeave event before onClick on touch devices.
375
- state.isOverTarget = false;
376
- }
377
- };
378
- let onPointerCancel = (e)=>{
379
- cancel(e);
380
- };
381
475
  pressProps.onDragStart = (e)=>{
382
476
  if (!(0, $bBqCQ$reactariautils.nodeContains)(e.currentTarget, (0, $bBqCQ$reactariautils.getEventTarget)(e.nativeEvent))) return;
383
477
  // Safari does not call onPointerCancel when a drag starts, whereas Chrome and Firefox do.
@@ -394,6 +488,7 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
394
488
  return;
395
489
  }
396
490
  state.isPressed = true;
491
+ setIsPointerPressed('mouse');
397
492
  state.isOverTarget = true;
398
493
  state.target = e.currentTarget;
399
494
  state.pointerType = (0, $bBqCQ$reactariautils.isVirtualClick)(e.nativeEvent) ? 'virtual' : 'mouse';
@@ -404,7 +499,6 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
404
499
  let dispose = (0, $625cf83917e112ad$exports.preventFocus)(e.target);
405
500
  if (dispose) state.disposables.push(dispose);
406
501
  }
407
- addGlobalListener((0, $bBqCQ$reactariautils.getOwnerDocument)(e.currentTarget), 'mouseup', onMouseUp, false);
408
502
  };
409
503
  pressProps.onMouseEnter = (e)=>{
410
504
  if (!(0, $bBqCQ$reactariautils.nodeContains)(e.currentTarget, (0, $bBqCQ$reactariautils.getEventTarget)(e.nativeEvent))) return;
@@ -429,17 +523,6 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
429
523
  if (!(0, $bBqCQ$reactariautils.nodeContains)(e.currentTarget, (0, $bBqCQ$reactariautils.getEventTarget)(e.nativeEvent))) return;
430
524
  if (!state.ignoreEmulatedMouseEvents && e.button === 0 && !state.isPressed) triggerPressUp(e, state.pointerType || 'mouse');
431
525
  };
432
- let onMouseUp = (e)=>{
433
- // Only handle left clicks
434
- if (e.button !== 0) return;
435
- if (state.ignoreEmulatedMouseEvents) {
436
- state.ignoreEmulatedMouseEvents = false;
437
- return;
438
- }
439
- if (state.target && state.target.contains(e.target) && state.pointerType != null) ;
440
- else cancel(e);
441
- state.isOverTarget = false;
442
- };
443
526
  pressProps.onTouchStart = (e)=>{
444
527
  if (!(0, $bBqCQ$reactariautils.nodeContains)(e.currentTarget, (0, $bBqCQ$reactariautils.getEventTarget)(e.nativeEvent))) return;
445
528
  let touch = $0294ea432cd92340$var$getTouchFromEvent(e.nativeEvent);
@@ -448,12 +531,12 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
448
531
  state.ignoreEmulatedMouseEvents = true;
449
532
  state.isOverTarget = true;
450
533
  state.isPressed = true;
534
+ setIsPointerPressed('touch');
451
535
  state.target = e.currentTarget;
452
536
  state.pointerType = 'touch';
453
537
  if (!allowTextSelectionOnPress) (0, $f7e14e656343df57$exports.disableTextSelection)(state.target);
454
538
  let shouldStopPropagation = triggerPressStart($0294ea432cd92340$var$createTouchEvent(state.target, e), state.pointerType);
455
539
  if (shouldStopPropagation) e.stopPropagation();
456
- addGlobalListener((0, $bBqCQ$reactariautils.getOwnerWindow)(e.currentTarget), 'scroll', onScroll, true);
457
540
  };
458
541
  pressProps.onTouchMove = (e)=>{
459
542
  if (!(0, $bBqCQ$reactariautils.nodeContains)(e.currentTarget, (0, $bBqCQ$reactariautils.getEventTarget)(e.nativeEvent))) return;
@@ -490,6 +573,7 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
490
573
  } else if (state.isOverTarget && state.pointerType != null) shouldStopPropagation = triggerPressEnd($0294ea432cd92340$var$createTouchEvent(state.target, e), state.pointerType, false);
491
574
  if (shouldStopPropagation) e.stopPropagation();
492
575
  state.isPressed = false;
576
+ setIsPointerPressed(null);
493
577
  state.activePointerId = null;
494
578
  state.isOverTarget = false;
495
579
  state.ignoreEmulatedMouseEvents = true;
@@ -501,15 +585,6 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
501
585
  e.stopPropagation();
502
586
  if (state.isPressed) cancel($0294ea432cd92340$var$createTouchEvent(state.target, e));
503
587
  };
504
- let onScroll = (e)=>{
505
- if (state.isPressed && (0, $bBqCQ$reactariautils.nodeContains)((0, $bBqCQ$reactariautils.getEventTarget)(e), state.target)) cancel({
506
- currentTarget: state.target,
507
- shiftKey: false,
508
- ctrlKey: false,
509
- metaKey: false,
510
- altKey: false
511
- });
512
- };
513
588
  pressProps.onDragStart = (e)=>{
514
589
  if (!(0, $bBqCQ$reactariautils.nodeContains)(e.currentTarget, (0, $bBqCQ$reactariautils.getEventTarget)(e.nativeEvent))) return;
515
590
  cancel(e);
@@ -517,7 +592,6 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
517
592
  }
518
593
  return pressProps;
519
594
  }, [
520
- addGlobalListener,
521
595
  isDisabled,
522
596
  preventFocusOnPress,
523
597
  removeAllGlobalListeners,