@react-aria/interactions 3.26.0 → 3.27.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/PressResponder.main.js +2 -3
  2. package/dist/PressResponder.main.js.map +1 -1
  3. package/dist/PressResponder.mjs +3 -4
  4. package/dist/PressResponder.module.js +3 -4
  5. package/dist/PressResponder.module.js.map +1 -1
  6. package/dist/focusSafely.main.js +1 -0
  7. package/dist/focusSafely.main.js.map +1 -1
  8. package/dist/focusSafely.mjs +1 -0
  9. package/dist/focusSafely.module.js +1 -0
  10. package/dist/focusSafely.module.js.map +1 -1
  11. package/dist/main.js.map +1 -1
  12. package/dist/module.js.map +1 -1
  13. package/dist/types.d.ts +2 -1
  14. package/dist/types.d.ts.map +1 -1
  15. package/dist/useFocus.main.js +4 -3
  16. package/dist/useFocus.main.js.map +1 -1
  17. package/dist/useFocus.mjs +5 -4
  18. package/dist/useFocus.module.js +5 -4
  19. package/dist/useFocus.module.js.map +1 -1
  20. package/dist/useFocusVisible.main.js +16 -13
  21. package/dist/useFocusVisible.main.js.map +1 -1
  22. package/dist/useFocusVisible.mjs +18 -15
  23. package/dist/useFocusVisible.module.js +18 -15
  24. package/dist/useFocusVisible.module.js.map +1 -1
  25. package/dist/useFocusWithin.main.js +9 -7
  26. package/dist/useFocusWithin.main.js.map +1 -1
  27. package/dist/useFocusWithin.mjs +10 -8
  28. package/dist/useFocusWithin.module.js +10 -8
  29. package/dist/useFocusWithin.module.js.map +1 -1
  30. package/dist/useHover.main.js +5 -5
  31. package/dist/useHover.main.js.map +1 -1
  32. package/dist/useHover.mjs +6 -6
  33. package/dist/useHover.module.js +6 -6
  34. package/dist/useHover.module.js.map +1 -1
  35. package/dist/useInteractOutside.main.js +5 -4
  36. package/dist/useInteractOutside.main.js.map +1 -1
  37. package/dist/useInteractOutside.mjs +6 -5
  38. package/dist/useInteractOutside.module.js +6 -5
  39. package/dist/useInteractOutside.module.js.map +1 -1
  40. package/dist/usePress.main.js +31 -23
  41. package/dist/usePress.main.js.map +1 -1
  42. package/dist/usePress.mjs +31 -23
  43. package/dist/usePress.module.js +31 -23
  44. package/dist/usePress.module.js.map +1 -1
  45. package/dist/utils.main.js +8 -7
  46. package/dist/utils.main.js.map +1 -1
  47. package/dist/utils.mjs +9 -8
  48. package/dist/utils.module.js +9 -8
  49. package/dist/utils.module.js.map +1 -1
  50. package/package.json +4 -4
  51. package/src/PressResponder.tsx +3 -4
  52. package/src/focusSafely.ts +4 -0
  53. package/src/index.ts +1 -1
  54. package/src/useFocus.ts +4 -3
  55. package/src/useFocusVisible.ts +18 -12
  56. package/src/useFocusWithin.ts +9 -7
  57. package/src/useHover.ts +6 -6
  58. package/src/useInteractOutside.ts +6 -5
  59. package/src/usePress.ts +46 -32
  60. package/src/utils.ts +12 -11
package/dist/usePress.mjs CHANGED
@@ -35,7 +35,9 @@ function $f6c31cce2adf654f$var$usePressResponderContext(props) {
35
35
  // Consume context from <PressResponder> and merge with props.
36
36
  let context = (0, $7mdmh$useContext)((0, $ae1eeba8b9eafd08$export$5165eccb35aaadb5));
37
37
  if (context) {
38
- let { register: register, ...contextProps } = context;
38
+ // Prevent mergeProps from merging ref.
39
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
40
+ let { register: register, ref: ref, ...contextProps } = context;
39
41
  props = (0, $7mdmh$mergeProps)(contextProps, props);
40
42
  register();
41
43
  }
@@ -83,6 +85,7 @@ class $f6c31cce2adf654f$var$PressEvent {
83
85
  this.altKey = originalEvent.altKey;
84
86
  this.x = x;
85
87
  this.y = y;
88
+ this.key = originalEvent.key;
86
89
  }
87
90
  }
88
91
  const $f6c31cce2adf654f$var$LINK_CLICKED = Symbol('linkClicked');
@@ -226,7 +229,7 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
226
229
  var _state_metaKeyEvents1;
227
230
  if ($f6c31cce2adf654f$var$shouldPreventDefaultKeyboard((0, $7mdmh$getEventTarget)(e), e.key)) e.preventDefault();
228
231
  let target = (0, $7mdmh$getEventTarget)(e);
229
- let wasPressed = (0, $7mdmh$nodeContains)(state.target, (0, $7mdmh$getEventTarget)(e));
232
+ let wasPressed = (0, $7mdmh$nodeContains)(state.target, target);
230
233
  triggerPressEndEvent($f6c31cce2adf654f$var$createEvent(state.target, e), 'keyboard', wasPressed);
231
234
  if (wasPressed) triggerSyntheticClickEvent(e, state.target);
232
235
  removeAllGlobalListeners();
@@ -300,7 +303,7 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
300
303
  }, 80);
301
304
  // Use a capturing listener to track if a click occurred.
302
305
  // If stopPropagation is called it may never reach our handler.
303
- addGlobalListener(e.currentTarget, 'click', ()=>clicked = true, true);
306
+ if (e.currentTarget) addGlobalListener(e.currentTarget, 'click', ()=>clicked = true, true);
304
307
  state.disposables.push(()=>clearTimeout(timeout));
305
308
  } else cancelEvent(e);
306
309
  // Ignore subsequent onPointerLeave event before onClick on touch devices.
@@ -324,7 +327,7 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
324
327
  state.ignoreEmulatedMouseEvents = false;
325
328
  return;
326
329
  }
327
- if (state.target && state.target.contains(e.target) && state.pointerType != null) ;
330
+ if (state.target && (0, $7mdmh$nodeContains)(state.target, e.target) && state.pointerType != null) ;
328
331
  else cancelEvent(e);
329
332
  state.isOverTarget = false;
330
333
  };
@@ -356,9 +359,9 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
356
359
  let state = ref.current;
357
360
  let pressProps = {
358
361
  onKeyDown (e) {
359
- if ($f6c31cce2adf654f$var$isValidKeyboardEvent(e.nativeEvent, e.currentTarget) && (0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) {
362
+ if ($f6c31cce2adf654f$var$isValidKeyboardEvent(e.nativeEvent, e.currentTarget) && (0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) {
360
363
  var _state_metaKeyEvents;
361
- if ($f6c31cce2adf654f$var$shouldPreventDefaultKeyboard((0, $7mdmh$getEventTarget)(e.nativeEvent), e.key)) e.preventDefault();
364
+ if ($f6c31cce2adf654f$var$shouldPreventDefaultKeyboard((0, $7mdmh$getEventTarget)(e), e.key)) e.preventDefault();
362
365
  // If the event is repeating, it may have started on a different element
363
366
  // after which focus moved to the current element. Ignore these events and
364
367
  // only handle the first key down event.
@@ -382,7 +385,7 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
382
385
  } else if (e.key === 'Meta') state.metaKeyEvents = new Map();
383
386
  },
384
387
  onClick (e) {
385
- if (e && !(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
388
+ if (e && !(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
386
389
  if (e && e.button === 0 && !state.isTriggeringEvent && !(0, $7mdmh$openLink).isOpening) {
387
390
  let shouldStopPropagation = true;
388
391
  if (isDisabled) e.preventDefault();
@@ -411,7 +414,7 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
411
414
  if (typeof PointerEvent !== 'undefined') {
412
415
  pressProps.onPointerDown = (e)=>{
413
416
  // Only handle left clicks, and ignore events that bubbled through portals.
414
- if (e.button !== 0 || !(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
417
+ if (e.button !== 0 || !(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
415
418
  // iOS safari fires pointer events from VoiceOver with incorrect coordinates/target.
416
419
  // Ignore and let the onClick handler take care of it instead.
417
420
  // https://bugs.webkit.org/show_bug.cgi?id=222627
@@ -432,13 +435,17 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
432
435
  shouldStopPropagation = triggerPressStart(e, state.pointerType);
433
436
  // Release pointer capture so that touch interactions can leave the original target.
434
437
  // This enables onPointerLeave and onPointerEnter to fire.
435
- let target = (0, $7mdmh$getEventTarget)(e.nativeEvent);
436
- if ('releasePointerCapture' in target) target.releasePointerCapture(e.pointerId);
438
+ let target = (0, $7mdmh$getEventTarget)(e);
439
+ if ('releasePointerCapture' in target) {
440
+ if ('hasPointerCapture' in target) {
441
+ if (target.hasPointerCapture(e.pointerId)) target.releasePointerCapture(e.pointerId);
442
+ } else target.releasePointerCapture(e.pointerId);
443
+ }
437
444
  }
438
445
  if (shouldStopPropagation) e.stopPropagation();
439
446
  };
440
447
  pressProps.onMouseDown = (e)=>{
441
- if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
448
+ if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
442
449
  if (e.button === 0) {
443
450
  if (preventFocusOnPress) {
444
451
  let dispose = (0, $8a9cb279dc87e130$export$cabe61c495ee3649)(e.target);
@@ -449,7 +456,7 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
449
456
  };
450
457
  pressProps.onPointerUp = (e)=>{
451
458
  // iOS fires pointerup with zero width and height, so check the pointerType recorded during pointerdown.
452
- if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent)) || state.pointerType === 'virtual') return;
459
+ if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e)) || state.pointerType === 'virtual') return;
453
460
  // Only handle left clicks. If isPressed is true, delay until onClick.
454
461
  if (e.button === 0 && !state.isPressed) triggerPressUp(e, state.pointerType || e.pointerType);
455
462
  };
@@ -467,7 +474,7 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
467
474
  }
468
475
  };
469
476
  pressProps.onDragStart = (e)=>{
470
- if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
477
+ if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
471
478
  // Safari does not call onPointerCancel when a drag starts, whereas Chrome and Firefox do.
472
479
  cancel(e);
473
480
  };
@@ -476,7 +483,7 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
476
483
  // All browsers now support pointer events, but JSDOM still does not.
477
484
  pressProps.onMouseDown = (e)=>{
478
485
  // Only handle left clicks
479
- if (e.button !== 0 || !(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
486
+ if (e.button !== 0 || !(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
480
487
  if (state.ignoreEmulatedMouseEvents) {
481
488
  e.stopPropagation();
482
489
  return;
@@ -495,7 +502,7 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
495
502
  }
496
503
  };
497
504
  pressProps.onMouseEnter = (e)=>{
498
- if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
505
+ if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
499
506
  let shouldStopPropagation = true;
500
507
  if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {
501
508
  state.isOverTarget = true;
@@ -504,7 +511,7 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
504
511
  if (shouldStopPropagation) e.stopPropagation();
505
512
  };
506
513
  pressProps.onMouseLeave = (e)=>{
507
- if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
514
+ if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
508
515
  let shouldStopPropagation = true;
509
516
  if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {
510
517
  state.isOverTarget = false;
@@ -514,11 +521,11 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
514
521
  if (shouldStopPropagation) e.stopPropagation();
515
522
  };
516
523
  pressProps.onMouseUp = (e)=>{
517
- if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
524
+ if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
518
525
  if (!state.ignoreEmulatedMouseEvents && e.button === 0 && !state.isPressed) triggerPressUp(e, state.pointerType || 'mouse');
519
526
  };
520
527
  pressProps.onTouchStart = (e)=>{
521
- if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
528
+ if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
522
529
  let touch = $f6c31cce2adf654f$var$getTouchFromEvent(e.nativeEvent);
523
530
  if (!touch) return;
524
531
  state.activePointerId = touch.identifier;
@@ -533,7 +540,7 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
533
540
  if (shouldStopPropagation) e.stopPropagation();
534
541
  };
535
542
  pressProps.onTouchMove = (e)=>{
536
- if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
543
+ if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
537
544
  if (!state.isPressed) {
538
545
  e.stopPropagation();
539
546
  return;
@@ -553,7 +560,7 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
553
560
  if (shouldStopPropagation) e.stopPropagation();
554
561
  };
555
562
  pressProps.onTouchEnd = (e)=>{
556
- if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
563
+ if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
557
564
  if (!state.isPressed) {
558
565
  e.stopPropagation();
559
566
  return;
@@ -575,12 +582,12 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
575
582
  removeAllGlobalListeners();
576
583
  };
577
584
  pressProps.onTouchCancel = (e)=>{
578
- if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
585
+ if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
579
586
  e.stopPropagation();
580
587
  if (state.isPressed) cancel($f6c31cce2adf654f$var$createTouchEvent(state.target, e));
581
588
  };
582
589
  pressProps.onDragStart = (e)=>{
583
- if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
590
+ if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
584
591
  cancel(e);
585
592
  };
586
593
  }
@@ -690,7 +697,8 @@ function $f6c31cce2adf654f$var$createEvent(target, e) {
690
697
  metaKey: e.metaKey,
691
698
  altKey: e.altKey,
692
699
  clientX: clientX,
693
- clientY: clientY
700
+ clientY: clientY,
701
+ key: e.key
694
702
  };
695
703
  }
696
704
  function $f6c31cce2adf654f$var$getPointClientRect(point) {
@@ -35,7 +35,9 @@ function $f6c31cce2adf654f$var$usePressResponderContext(props) {
35
35
  // Consume context from <PressResponder> and merge with props.
36
36
  let context = (0, $7mdmh$useContext)((0, $ae1eeba8b9eafd08$export$5165eccb35aaadb5));
37
37
  if (context) {
38
- let { register: register, ...contextProps } = context;
38
+ // Prevent mergeProps from merging ref.
39
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
40
+ let { register: register, ref: ref, ...contextProps } = context;
39
41
  props = (0, $7mdmh$mergeProps)(contextProps, props);
40
42
  register();
41
43
  }
@@ -83,6 +85,7 @@ class $f6c31cce2adf654f$var$PressEvent {
83
85
  this.altKey = originalEvent.altKey;
84
86
  this.x = x;
85
87
  this.y = y;
88
+ this.key = originalEvent.key;
86
89
  }
87
90
  }
88
91
  const $f6c31cce2adf654f$var$LINK_CLICKED = Symbol('linkClicked');
@@ -226,7 +229,7 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
226
229
  var _state_metaKeyEvents1;
227
230
  if ($f6c31cce2adf654f$var$shouldPreventDefaultKeyboard((0, $7mdmh$getEventTarget)(e), e.key)) e.preventDefault();
228
231
  let target = (0, $7mdmh$getEventTarget)(e);
229
- let wasPressed = (0, $7mdmh$nodeContains)(state.target, (0, $7mdmh$getEventTarget)(e));
232
+ let wasPressed = (0, $7mdmh$nodeContains)(state.target, target);
230
233
  triggerPressEndEvent($f6c31cce2adf654f$var$createEvent(state.target, e), 'keyboard', wasPressed);
231
234
  if (wasPressed) triggerSyntheticClickEvent(e, state.target);
232
235
  removeAllGlobalListeners();
@@ -300,7 +303,7 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
300
303
  }, 80);
301
304
  // Use a capturing listener to track if a click occurred.
302
305
  // If stopPropagation is called it may never reach our handler.
303
- addGlobalListener(e.currentTarget, 'click', ()=>clicked = true, true);
306
+ if (e.currentTarget) addGlobalListener(e.currentTarget, 'click', ()=>clicked = true, true);
304
307
  state.disposables.push(()=>clearTimeout(timeout));
305
308
  } else cancelEvent(e);
306
309
  // Ignore subsequent onPointerLeave event before onClick on touch devices.
@@ -324,7 +327,7 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
324
327
  state.ignoreEmulatedMouseEvents = false;
325
328
  return;
326
329
  }
327
- if (state.target && state.target.contains(e.target) && state.pointerType != null) ;
330
+ if (state.target && (0, $7mdmh$nodeContains)(state.target, e.target) && state.pointerType != null) ;
328
331
  else cancelEvent(e);
329
332
  state.isOverTarget = false;
330
333
  };
@@ -356,9 +359,9 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
356
359
  let state = ref.current;
357
360
  let pressProps = {
358
361
  onKeyDown (e) {
359
- if ($f6c31cce2adf654f$var$isValidKeyboardEvent(e.nativeEvent, e.currentTarget) && (0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) {
362
+ if ($f6c31cce2adf654f$var$isValidKeyboardEvent(e.nativeEvent, e.currentTarget) && (0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) {
360
363
  var _state_metaKeyEvents;
361
- if ($f6c31cce2adf654f$var$shouldPreventDefaultKeyboard((0, $7mdmh$getEventTarget)(e.nativeEvent), e.key)) e.preventDefault();
364
+ if ($f6c31cce2adf654f$var$shouldPreventDefaultKeyboard((0, $7mdmh$getEventTarget)(e), e.key)) e.preventDefault();
362
365
  // If the event is repeating, it may have started on a different element
363
366
  // after which focus moved to the current element. Ignore these events and
364
367
  // only handle the first key down event.
@@ -382,7 +385,7 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
382
385
  } else if (e.key === 'Meta') state.metaKeyEvents = new Map();
383
386
  },
384
387
  onClick (e) {
385
- if (e && !(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
388
+ if (e && !(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
386
389
  if (e && e.button === 0 && !state.isTriggeringEvent && !(0, $7mdmh$openLink).isOpening) {
387
390
  let shouldStopPropagation = true;
388
391
  if (isDisabled) e.preventDefault();
@@ -411,7 +414,7 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
411
414
  if (typeof PointerEvent !== 'undefined') {
412
415
  pressProps.onPointerDown = (e)=>{
413
416
  // Only handle left clicks, and ignore events that bubbled through portals.
414
- if (e.button !== 0 || !(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
417
+ if (e.button !== 0 || !(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
415
418
  // iOS safari fires pointer events from VoiceOver with incorrect coordinates/target.
416
419
  // Ignore and let the onClick handler take care of it instead.
417
420
  // https://bugs.webkit.org/show_bug.cgi?id=222627
@@ -432,13 +435,17 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
432
435
  shouldStopPropagation = triggerPressStart(e, state.pointerType);
433
436
  // Release pointer capture so that touch interactions can leave the original target.
434
437
  // This enables onPointerLeave and onPointerEnter to fire.
435
- let target = (0, $7mdmh$getEventTarget)(e.nativeEvent);
436
- if ('releasePointerCapture' in target) target.releasePointerCapture(e.pointerId);
438
+ let target = (0, $7mdmh$getEventTarget)(e);
439
+ if ('releasePointerCapture' in target) {
440
+ if ('hasPointerCapture' in target) {
441
+ if (target.hasPointerCapture(e.pointerId)) target.releasePointerCapture(e.pointerId);
442
+ } else target.releasePointerCapture(e.pointerId);
443
+ }
437
444
  }
438
445
  if (shouldStopPropagation) e.stopPropagation();
439
446
  };
440
447
  pressProps.onMouseDown = (e)=>{
441
- if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
448
+ if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
442
449
  if (e.button === 0) {
443
450
  if (preventFocusOnPress) {
444
451
  let dispose = (0, $8a9cb279dc87e130$export$cabe61c495ee3649)(e.target);
@@ -449,7 +456,7 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
449
456
  };
450
457
  pressProps.onPointerUp = (e)=>{
451
458
  // iOS fires pointerup with zero width and height, so check the pointerType recorded during pointerdown.
452
- if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent)) || state.pointerType === 'virtual') return;
459
+ if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e)) || state.pointerType === 'virtual') return;
453
460
  // Only handle left clicks. If isPressed is true, delay until onClick.
454
461
  if (e.button === 0 && !state.isPressed) triggerPressUp(e, state.pointerType || e.pointerType);
455
462
  };
@@ -467,7 +474,7 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
467
474
  }
468
475
  };
469
476
  pressProps.onDragStart = (e)=>{
470
- if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
477
+ if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
471
478
  // Safari does not call onPointerCancel when a drag starts, whereas Chrome and Firefox do.
472
479
  cancel(e);
473
480
  };
@@ -476,7 +483,7 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
476
483
  // All browsers now support pointer events, but JSDOM still does not.
477
484
  pressProps.onMouseDown = (e)=>{
478
485
  // Only handle left clicks
479
- if (e.button !== 0 || !(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
486
+ if (e.button !== 0 || !(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
480
487
  if (state.ignoreEmulatedMouseEvents) {
481
488
  e.stopPropagation();
482
489
  return;
@@ -495,7 +502,7 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
495
502
  }
496
503
  };
497
504
  pressProps.onMouseEnter = (e)=>{
498
- if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
505
+ if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
499
506
  let shouldStopPropagation = true;
500
507
  if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {
501
508
  state.isOverTarget = true;
@@ -504,7 +511,7 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
504
511
  if (shouldStopPropagation) e.stopPropagation();
505
512
  };
506
513
  pressProps.onMouseLeave = (e)=>{
507
- if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
514
+ if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
508
515
  let shouldStopPropagation = true;
509
516
  if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {
510
517
  state.isOverTarget = false;
@@ -514,11 +521,11 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
514
521
  if (shouldStopPropagation) e.stopPropagation();
515
522
  };
516
523
  pressProps.onMouseUp = (e)=>{
517
- if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
524
+ if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
518
525
  if (!state.ignoreEmulatedMouseEvents && e.button === 0 && !state.isPressed) triggerPressUp(e, state.pointerType || 'mouse');
519
526
  };
520
527
  pressProps.onTouchStart = (e)=>{
521
- if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
528
+ if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
522
529
  let touch = $f6c31cce2adf654f$var$getTouchFromEvent(e.nativeEvent);
523
530
  if (!touch) return;
524
531
  state.activePointerId = touch.identifier;
@@ -533,7 +540,7 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
533
540
  if (shouldStopPropagation) e.stopPropagation();
534
541
  };
535
542
  pressProps.onTouchMove = (e)=>{
536
- if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
543
+ if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
537
544
  if (!state.isPressed) {
538
545
  e.stopPropagation();
539
546
  return;
@@ -553,7 +560,7 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
553
560
  if (shouldStopPropagation) e.stopPropagation();
554
561
  };
555
562
  pressProps.onTouchEnd = (e)=>{
556
- if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
563
+ if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
557
564
  if (!state.isPressed) {
558
565
  e.stopPropagation();
559
566
  return;
@@ -575,12 +582,12 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
575
582
  removeAllGlobalListeners();
576
583
  };
577
584
  pressProps.onTouchCancel = (e)=>{
578
- if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
585
+ if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
579
586
  e.stopPropagation();
580
587
  if (state.isPressed) cancel($f6c31cce2adf654f$var$createTouchEvent(state.target, e));
581
588
  };
582
589
  pressProps.onDragStart = (e)=>{
583
- if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e.nativeEvent))) return;
590
+ if (!(0, $7mdmh$nodeContains)(e.currentTarget, (0, $7mdmh$getEventTarget)(e))) return;
584
591
  cancel(e);
585
592
  };
586
593
  }
@@ -690,7 +697,8 @@ function $f6c31cce2adf654f$var$createEvent(target, e) {
690
697
  metaKey: e.metaKey,
691
698
  altKey: e.altKey,
692
699
  clientX: clientX,
693
- clientY: clientY
700
+ clientY: clientY,
701
+ key: e.key
694
702
  };
695
703
  }
696
704
  function $f6c31cce2adf654f$var$getPointClientRect(point) {