@react-aria/interactions 3.25.6 → 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 +186 -114
  29. package/dist/usePress.main.js.map +1 -1
  30. package/dist/usePress.mjs +188 -116
  31. package/dist/usePress.module.js +188 -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 +3 -3
  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 +183 -147
  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,15 +186,26 @@ 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)=>{
179
202
  if (isDisabled) return;
180
203
  onClick === null || onClick === void 0 ? void 0 : onClick(e);
181
- });
182
- let triggerSyntheticClick = (0, $bBqCQ$reactariautils.useEffectEvent)((e, target)=>{
204
+ }, [
205
+ isDisabled,
206
+ onClick
207
+ ]);
208
+ let triggerSyntheticClick = (0, $bBqCQ$react.useCallback)((e, target)=>{
183
209
  if (isDisabled) return;
184
210
  // Some third-party libraries pass in onClick instead of onPress.
185
211
  // Create a fake mouse event and trigger onClick as well.
@@ -191,7 +217,147 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
191
217
  (0, $625cf83917e112ad$exports.setEventTarget)(event, target);
192
218
  onClick((0, $625cf83917e112ad$exports.createSyntheticEvent)(event));
193
219
  }
194
- });
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
+ ]);
195
361
  let pressProps = (0, $bBqCQ$react.useMemo)(()=>{
196
362
  let state = ref.current;
197
363
  let pressProps = {
@@ -206,16 +372,9 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
206
372
  if (!state.isPressed && !e.repeat) {
207
373
  state.target = e.currentTarget;
208
374
  state.isPressed = true;
375
+ setIsElemKeyPressed(true);
209
376
  state.pointerType = 'keyboard';
210
377
  shouldStopPropagation = triggerPressStart(e, 'keyboard');
211
- // Focus may move before the key up event, so register the event on the document
212
- // instead of the same element where the key down event occurred. Make it capturing so that it will trigger
213
- // before stopPropagation from useKeyboard on a child element may happen and thus we can still call triggerPress for the parent element.
214
- let originalTarget = e.currentTarget;
215
- let pressUp = (e)=>{
216
- 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');
217
- };
218
- addGlobalListener((0, $bBqCQ$reactariautils.getOwnerDocument)(e.currentTarget), 'keyup', (0, $bBqCQ$reactariautils.chain)(pressUp, onKeyUp), true);
219
378
  }
220
379
  if (shouldStopPropagation) e.stopPropagation();
221
380
  // Keep track of the keydown events that occur while the Meta (e.g. Command) key is held.
@@ -255,37 +414,6 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
255
414
  }
256
415
  }
257
416
  };
258
- let onKeyUp = (e)=>{
259
- var _state_metaKeyEvents;
260
- if (state.isPressed && state.target && $0294ea432cd92340$var$isValidKeyboardEvent(e, state.target)) {
261
- var _state_metaKeyEvents1;
262
- if ($0294ea432cd92340$var$shouldPreventDefaultKeyboard((0, $bBqCQ$reactariautils.getEventTarget)(e), e.key)) e.preventDefault();
263
- let target = (0, $bBqCQ$reactariautils.getEventTarget)(e);
264
- let wasPressed = (0, $bBqCQ$reactariautils.nodeContains)(state.target, (0, $bBqCQ$reactariautils.getEventTarget)(e));
265
- triggerPressEnd($0294ea432cd92340$var$createEvent(state.target, e), 'keyboard', wasPressed);
266
- if (wasPressed) triggerSyntheticClick(e, state.target);
267
- removeAllGlobalListeners();
268
- // If a link was triggered with a key other than Enter, open the URL ourselves.
269
- // This means the link has a role override, and the default browser behavior
270
- // only applies when using the Enter key.
271
- if (e.key !== 'Enter' && $0294ea432cd92340$var$isHTMLAnchorLink(state.target) && (0, $bBqCQ$reactariautils.nodeContains)(state.target, target) && !e[$0294ea432cd92340$var$LINK_CLICKED]) {
272
- // Store a hidden property on the event so we only trigger link click once,
273
- // even if there are multiple usePress instances attached to the element.
274
- e[$0294ea432cd92340$var$LINK_CLICKED] = true;
275
- (0, $bBqCQ$reactariautils.openLink)(state.target, e, false);
276
- }
277
- state.isPressed = false;
278
- (_state_metaKeyEvents1 = state.metaKeyEvents) === null || _state_metaKeyEvents1 === void 0 ? void 0 : _state_metaKeyEvents1.delete(e.key);
279
- } else if (e.key === 'Meta' && ((_state_metaKeyEvents = state.metaKeyEvents) === null || _state_metaKeyEvents === void 0 ? void 0 : _state_metaKeyEvents.size)) {
280
- var _state_target;
281
- // If we recorded keydown events that occurred while the Meta key was pressed,
282
- // and those haven't received keyup events already, fire keyup events ourselves.
283
- // See comment above for more info about the macOS bug causing this.
284
- let events = state.metaKeyEvents;
285
- state.metaKeyEvents = undefined;
286
- for (let event of events.values())(_state_target = state.target) === null || _state_target === void 0 ? void 0 : _state_target.dispatchEvent(new KeyboardEvent('keyup', event));
287
- }
288
- };
289
417
  if (typeof PointerEvent !== 'undefined') {
290
418
  pressProps.onPointerDown = (e)=>{
291
419
  // Only handle left clicks, and ignore events that bubbled through portals.
@@ -302,6 +430,7 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
302
430
  let shouldStopPropagation = true;
303
431
  if (!state.isPressed) {
304
432
  state.isPressed = true;
433
+ setIsPointerPressed('pointer');
305
434
  state.isOverTarget = true;
306
435
  state.activePointerId = e.pointerId;
307
436
  state.target = e.currentTarget;
@@ -311,8 +440,6 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
311
440
  // This enables onPointerLeave and onPointerEnter to fire.
312
441
  let target = (0, $bBqCQ$reactariautils.getEventTarget)(e.nativeEvent);
313
442
  if ('releasePointerCapture' in target) target.releasePointerCapture(e.pointerId);
314
- addGlobalListener((0, $bBqCQ$reactariautils.getOwnerDocument)(e.currentTarget), 'pointerup', onPointerUp, false);
315
- addGlobalListener((0, $bBqCQ$reactariautils.getOwnerDocument)(e.currentTarget), 'pointercancel', onPointerCancel, false);
316
443
  }
317
444
  if (shouldStopPropagation) e.stopPropagation();
318
445
  };
@@ -345,41 +472,6 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
345
472
  cancelOnPointerExit(e);
346
473
  }
347
474
  };
348
- let onPointerUp = (e)=>{
349
- if (e.pointerId === state.activePointerId && state.isPressed && e.button === 0 && state.target) {
350
- if ((0, $bBqCQ$reactariautils.nodeContains)(state.target, (0, $bBqCQ$reactariautils.getEventTarget)(e)) && state.pointerType != null) {
351
- // Wait for onClick to fire onPress. This avoids browser issues when the DOM
352
- // is mutated between onPointerUp and onClick, and is more compatible with third party libraries.
353
- // https://github.com/adobe/react-spectrum/issues/1513
354
- // https://issues.chromium.org/issues/40732224
355
- // However, iOS and Android do not focus or fire onClick after a long press.
356
- // We work around this by triggering a click ourselves after a timeout.
357
- // This timeout is canceled during the click event in case the real one fires first.
358
- // The timeout must be at least 32ms, because Safari on iOS delays the click event on
359
- // non-form elements without certain ARIA roles (for hover emulation).
360
- // https://github.com/WebKit/WebKit/blob/dccfae42bb29bd4bdef052e469f604a9387241c0/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm#L875-L892
361
- let clicked = false;
362
- let timeout = setTimeout(()=>{
363
- if (state.isPressed && state.target instanceof HTMLElement) {
364
- if (clicked) cancel(e);
365
- else {
366
- (0, $bBqCQ$reactariautils.focusWithoutScrolling)(state.target);
367
- state.target.click();
368
- }
369
- }
370
- }, 80);
371
- // Use a capturing listener to track if a click occurred.
372
- // If stopPropagation is called it may never reach our handler.
373
- addGlobalListener(e.currentTarget, 'click', ()=>clicked = true, true);
374
- state.disposables.push(()=>clearTimeout(timeout));
375
- } else cancel(e);
376
- // Ignore subsequent onPointerLeave event before onClick on touch devices.
377
- state.isOverTarget = false;
378
- }
379
- };
380
- let onPointerCancel = (e)=>{
381
- cancel(e);
382
- };
383
475
  pressProps.onDragStart = (e)=>{
384
476
  if (!(0, $bBqCQ$reactariautils.nodeContains)(e.currentTarget, (0, $bBqCQ$reactariautils.getEventTarget)(e.nativeEvent))) return;
385
477
  // Safari does not call onPointerCancel when a drag starts, whereas Chrome and Firefox do.
@@ -396,6 +488,7 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
396
488
  return;
397
489
  }
398
490
  state.isPressed = true;
491
+ setIsPointerPressed('mouse');
399
492
  state.isOverTarget = true;
400
493
  state.target = e.currentTarget;
401
494
  state.pointerType = (0, $bBqCQ$reactariautils.isVirtualClick)(e.nativeEvent) ? 'virtual' : 'mouse';
@@ -406,7 +499,6 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
406
499
  let dispose = (0, $625cf83917e112ad$exports.preventFocus)(e.target);
407
500
  if (dispose) state.disposables.push(dispose);
408
501
  }
409
- addGlobalListener((0, $bBqCQ$reactariautils.getOwnerDocument)(e.currentTarget), 'mouseup', onMouseUp, false);
410
502
  };
411
503
  pressProps.onMouseEnter = (e)=>{
412
504
  if (!(0, $bBqCQ$reactariautils.nodeContains)(e.currentTarget, (0, $bBqCQ$reactariautils.getEventTarget)(e.nativeEvent))) return;
@@ -431,17 +523,6 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
431
523
  if (!(0, $bBqCQ$reactariautils.nodeContains)(e.currentTarget, (0, $bBqCQ$reactariautils.getEventTarget)(e.nativeEvent))) return;
432
524
  if (!state.ignoreEmulatedMouseEvents && e.button === 0 && !state.isPressed) triggerPressUp(e, state.pointerType || 'mouse');
433
525
  };
434
- let onMouseUp = (e)=>{
435
- // Only handle left clicks
436
- if (e.button !== 0) return;
437
- if (state.ignoreEmulatedMouseEvents) {
438
- state.ignoreEmulatedMouseEvents = false;
439
- return;
440
- }
441
- if (state.target && state.target.contains(e.target) && state.pointerType != null) ;
442
- else cancel(e);
443
- state.isOverTarget = false;
444
- };
445
526
  pressProps.onTouchStart = (e)=>{
446
527
  if (!(0, $bBqCQ$reactariautils.nodeContains)(e.currentTarget, (0, $bBqCQ$reactariautils.getEventTarget)(e.nativeEvent))) return;
447
528
  let touch = $0294ea432cd92340$var$getTouchFromEvent(e.nativeEvent);
@@ -450,12 +531,12 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
450
531
  state.ignoreEmulatedMouseEvents = true;
451
532
  state.isOverTarget = true;
452
533
  state.isPressed = true;
534
+ setIsPointerPressed('touch');
453
535
  state.target = e.currentTarget;
454
536
  state.pointerType = 'touch';
455
537
  if (!allowTextSelectionOnPress) (0, $f7e14e656343df57$exports.disableTextSelection)(state.target);
456
538
  let shouldStopPropagation = triggerPressStart($0294ea432cd92340$var$createTouchEvent(state.target, e), state.pointerType);
457
539
  if (shouldStopPropagation) e.stopPropagation();
458
- addGlobalListener((0, $bBqCQ$reactariautils.getOwnerWindow)(e.currentTarget), 'scroll', onScroll, true);
459
540
  };
460
541
  pressProps.onTouchMove = (e)=>{
461
542
  if (!(0, $bBqCQ$reactariautils.nodeContains)(e.currentTarget, (0, $bBqCQ$reactariautils.getEventTarget)(e.nativeEvent))) return;
@@ -492,6 +573,7 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
492
573
  } else if (state.isOverTarget && state.pointerType != null) shouldStopPropagation = triggerPressEnd($0294ea432cd92340$var$createTouchEvent(state.target, e), state.pointerType, false);
493
574
  if (shouldStopPropagation) e.stopPropagation();
494
575
  state.isPressed = false;
576
+ setIsPointerPressed(null);
495
577
  state.activePointerId = null;
496
578
  state.isOverTarget = false;
497
579
  state.ignoreEmulatedMouseEvents = true;
@@ -503,15 +585,6 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
503
585
  e.stopPropagation();
504
586
  if (state.isPressed) cancel($0294ea432cd92340$var$createTouchEvent(state.target, e));
505
587
  };
506
- let onScroll = (e)=>{
507
- if (state.isPressed && (0, $bBqCQ$reactariautils.nodeContains)((0, $bBqCQ$reactariautils.getEventTarget)(e), state.target)) cancel({
508
- currentTarget: state.target,
509
- shiftKey: false,
510
- ctrlKey: false,
511
- metaKey: false,
512
- altKey: false
513
- });
514
- };
515
588
  pressProps.onDragStart = (e)=>{
516
589
  if (!(0, $bBqCQ$reactariautils.nodeContains)(e.currentTarget, (0, $bBqCQ$reactariautils.getEventTarget)(e.nativeEvent))) return;
517
590
  cancel(e);
@@ -519,7 +592,6 @@ function $0294ea432cd92340$export$45712eceda6fad21(props) {
519
592
  }
520
593
  return pressProps;
521
594
  }, [
522
- addGlobalListener,
523
595
  isDisabled,
524
596
  preventFocusOnPress,
525
597
  removeAllGlobalListeners,