@react-aria/interactions 3.9.0 → 3.11.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.
- package/dist/main.js +63 -93
- package/dist/main.js.map +1 -1
- package/dist/module.js +44 -67
- package/dist/module.js.map +1 -1
- package/dist/types.d.ts +27 -26
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/DOMPropsContext.ts +6 -5
- package/src/DOMPropsResponder.tsx +1 -1
- package/src/PressResponder.tsx +2 -1
- package/src/Pressable.tsx +4 -3
- package/src/context.ts +2 -1
- package/src/index.ts +31 -12
- package/src/textSelection.ts +5 -5
- package/src/useDOMPropsResponder.ts +1 -1
- package/src/useFocus.ts +5 -5
- package/src/useFocusVisible.ts +3 -3
- package/src/useFocusWithin.ts +5 -4
- package/src/useHover.ts +7 -6
- package/src/useInteractOutside.ts +1 -1
- package/src/useKeyboard.ts +3 -4
- package/src/useLongPress.ts +5 -5
- package/src/useMove.ts +5 -5
- package/src/usePress.ts +81 -50
package/dist/module.js
CHANGED
|
@@ -1,16 +1,7 @@
|
|
|
1
1
|
import {mergeProps as $bx7SL$mergeProps, useSyncRef as $bx7SL$useSyncRef, useGlobalListeners as $bx7SL$useGlobalListeners, focusWithoutScrolling as $bx7SL$focusWithoutScrolling, isIOS as $bx7SL$isIOS, runAfterTransition as $bx7SL$runAfterTransition, useLayoutEffect as $bx7SL$useLayoutEffect, isMac as $bx7SL$isMac, useEvent as $bx7SL$useEvent, useDescription as $bx7SL$useDescription} from "@react-aria/utils";
|
|
2
2
|
import $bx7SL$react, {useRef as $bx7SL$useRef, useContext as $bx7SL$useContext, useState as $bx7SL$useState, useMemo as $bx7SL$useMemo, useEffect as $bx7SL$useEffect, useCallback as $bx7SL$useCallback} from "react";
|
|
3
3
|
|
|
4
|
-
function $parcel$export(e, n, v, s) {
|
|
5
|
-
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
|
|
6
|
-
}
|
|
7
|
-
var $3b117e43dc0ca95d$exports = {};
|
|
8
|
-
|
|
9
|
-
$parcel$export($3b117e43dc0ca95d$exports, "Pressable", () => $3b117e43dc0ca95d$export$27c701ed9e449e99);
|
|
10
|
-
|
|
11
|
-
var $f6c31cce2adf654f$exports = {};
|
|
12
4
|
|
|
13
|
-
$parcel$export($f6c31cce2adf654f$exports, "usePress", () => $f6c31cce2adf654f$export$45712eceda6fad21);
|
|
14
5
|
|
|
15
6
|
// Note that state only matters here for iOS. Non-iOS gets user-select: none applied to the target element
|
|
16
7
|
// rather than at the document level so we just need to apply/remove user-select: none for each pressed element individually
|
|
@@ -24,7 +15,7 @@ function $14c0b72509d70225$export$16a4697467175487(target) {
|
|
|
24
15
|
document.documentElement.style.webkitUserSelect = 'none';
|
|
25
16
|
}
|
|
26
17
|
$14c0b72509d70225$var$state = 'disabled';
|
|
27
|
-
} else if (target) {
|
|
18
|
+
} else if (target instanceof HTMLElement || target instanceof SVGElement) {
|
|
28
19
|
// If not iOS, store the target's original user-select and change to user-select: none
|
|
29
20
|
// Ignore state since it doesn't apply for non iOS
|
|
30
21
|
$14c0b72509d70225$var$modifiedElementMap.set(target, target.style.userSelect);
|
|
@@ -51,13 +42,15 @@ function $14c0b72509d70225$export$b0d6fa1ab32e3295(target) {
|
|
|
51
42
|
}
|
|
52
43
|
});
|
|
53
44
|
}, 300);
|
|
54
|
-
} else // If not iOS, restore the target's original user-select if any
|
|
45
|
+
} else if (target instanceof HTMLElement || target instanceof SVGElement) // If not iOS, restore the target's original user-select if any
|
|
55
46
|
// Ignore state since it doesn't apply for non iOS
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
47
|
+
{
|
|
48
|
+
if (target && $14c0b72509d70225$var$modifiedElementMap.has(target)) {
|
|
49
|
+
let targetOldUserSelect = $14c0b72509d70225$var$modifiedElementMap.get(target);
|
|
50
|
+
if (target.style.userSelect === 'none') target.style.userSelect = targetOldUserSelect;
|
|
51
|
+
if (target.getAttribute('style') === '') target.removeAttribute('style');
|
|
52
|
+
$14c0b72509d70225$var$modifiedElementMap.delete(target);
|
|
53
|
+
}
|
|
61
54
|
}
|
|
62
55
|
}
|
|
63
56
|
|
|
@@ -65,7 +58,6 @@ function $14c0b72509d70225$export$b0d6fa1ab32e3295(target) {
|
|
|
65
58
|
|
|
66
59
|
|
|
67
60
|
|
|
68
|
-
|
|
69
61
|
function $8a9cb279dc87e130$export$60278871457622de(event) {
|
|
70
62
|
// JAWS/NVDA with Firefox.
|
|
71
63
|
if (event.mozInputSource === 0 && event.isTrusted) return true;
|
|
@@ -169,6 +161,7 @@ const $ae1eeba8b9eafd08$export$5165eccb35aaadb5 = $bx7SL$react.createContext(nul
|
|
|
169
161
|
$ae1eeba8b9eafd08$export$5165eccb35aaadb5.displayName = 'PressResponderContext';
|
|
170
162
|
|
|
171
163
|
|
|
164
|
+
|
|
172
165
|
function $f6c31cce2adf654f$var$usePressResponderContext(props) {
|
|
173
166
|
// Consume context from <PressResponder> and merge with props.
|
|
174
167
|
let context = $bx7SL$useContext($ae1eeba8b9eafd08$export$5165eccb35aaadb5);
|
|
@@ -275,8 +268,8 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
|
|
|
275
268
|
};
|
|
276
269
|
let pressProps = {
|
|
277
270
|
onKeyDown (e) {
|
|
278
|
-
if ($f6c31cce2adf654f$var$isValidKeyboardEvent(e.nativeEvent) && e.currentTarget.contains(e.target)) {
|
|
279
|
-
if ($f6c31cce2adf654f$var$shouldPreventDefaultKeyboard(e.target)) e.preventDefault();
|
|
271
|
+
if ($f6c31cce2adf654f$var$isValidKeyboardEvent(e.nativeEvent, e.currentTarget) && e.currentTarget.contains(e.target)) {
|
|
272
|
+
if ($f6c31cce2adf654f$var$shouldPreventDefaultKeyboard(e.target, e.key)) e.preventDefault();
|
|
280
273
|
e.stopPropagation();
|
|
281
274
|
// If the event is repeating, it may have started on a different element
|
|
282
275
|
// after which focus moved to the current element. Ignore these events and
|
|
@@ -289,10 +282,13 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
|
|
|
289
282
|
// instead of the same element where the key down event occurred.
|
|
290
283
|
addGlobalListener(document, 'keyup', onKeyUp, false);
|
|
291
284
|
}
|
|
292
|
-
}
|
|
285
|
+
} else if (e.key === 'Enter' && $f6c31cce2adf654f$var$isHTMLAnchorLink(e.currentTarget)) // If the target is a link, we won't have handled this above because we want the default
|
|
286
|
+
// browser behavior to open the link when pressing Enter. But we still need to prevent
|
|
287
|
+
// default so that elements above do not also handle it (e.g. table row).
|
|
288
|
+
e.stopPropagation();
|
|
293
289
|
},
|
|
294
290
|
onKeyUp (e) {
|
|
295
|
-
if ($f6c31cce2adf654f$var$isValidKeyboardEvent(e.nativeEvent) && !e.repeat && e.currentTarget.contains(e.target)) triggerPressUp($f6c31cce2adf654f$var$createEvent(state.target, e), 'keyboard');
|
|
291
|
+
if ($f6c31cce2adf654f$var$isValidKeyboardEvent(e.nativeEvent, e.currentTarget) && !e.repeat && e.currentTarget.contains(e.target)) triggerPressUp($f6c31cce2adf654f$var$createEvent(state.target, e), 'keyboard');
|
|
296
292
|
},
|
|
297
293
|
onClick (e) {
|
|
298
294
|
if (e && !e.currentTarget.contains(e.target)) return;
|
|
@@ -314,8 +310,8 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
|
|
|
314
310
|
}
|
|
315
311
|
};
|
|
316
312
|
let onKeyUp = (e)=>{
|
|
317
|
-
if (state.isPressed && $f6c31cce2adf654f$var$isValidKeyboardEvent(e)) {
|
|
318
|
-
if ($f6c31cce2adf654f$var$shouldPreventDefaultKeyboard(e.target)) e.preventDefault();
|
|
313
|
+
if (state.isPressed && $f6c31cce2adf654f$var$isValidKeyboardEvent(e, state.target)) {
|
|
314
|
+
if ($f6c31cce2adf654f$var$shouldPreventDefaultKeyboard(e.target, e.key)) e.preventDefault();
|
|
319
315
|
e.stopPropagation();
|
|
320
316
|
state.isPressed = false;
|
|
321
317
|
let target = e.target;
|
|
@@ -323,7 +319,7 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
|
|
|
323
319
|
removeAllGlobalListeners();
|
|
324
320
|
// If the target is a link, trigger the click method to open the URL,
|
|
325
321
|
// but defer triggering pressEnd until onClick event handler.
|
|
326
|
-
if (state.target.contains(target) && $f6c31cce2adf654f$var$isHTMLAnchorLink(state.target) || state.target.getAttribute('role') === 'link') state.target.click();
|
|
322
|
+
if (state.target instanceof HTMLElement && state.target.contains(target) && ($f6c31cce2adf654f$var$isHTMLAnchorLink(state.target) || state.target.getAttribute('role') === 'link')) state.target.click();
|
|
327
323
|
}
|
|
328
324
|
};
|
|
329
325
|
if (typeof PointerEvent !== 'undefined') {
|
|
@@ -555,14 +551,13 @@ function $f6c31cce2adf654f$export$45712eceda6fad21(props) {
|
|
|
555
551
|
function $f6c31cce2adf654f$var$isHTMLAnchorLink(target) {
|
|
556
552
|
return target.tagName === 'A' && target.hasAttribute('href');
|
|
557
553
|
}
|
|
558
|
-
function $f6c31cce2adf654f$var$isValidKeyboardEvent(event) {
|
|
559
|
-
const { key: key , code: code
|
|
560
|
-
const element =
|
|
561
|
-
const { tagName: tagName , isContentEditable: isContentEditable } = element;
|
|
554
|
+
function $f6c31cce2adf654f$var$isValidKeyboardEvent(event, currentTarget) {
|
|
555
|
+
const { key: key , code: code } = event;
|
|
556
|
+
const element = currentTarget;
|
|
562
557
|
const role = element.getAttribute('role');
|
|
563
558
|
// Accessibility for keyboards. Space and Enter only.
|
|
564
559
|
// "Spacebar" is for IE 11
|
|
565
|
-
return (key === 'Enter' || key === ' ' || key === 'Spacebar' || code === 'Space') &&
|
|
560
|
+
return (key === 'Enter' || key === ' ' || key === 'Spacebar' || code === 'Space') && !(element instanceof HTMLInputElement && !$f6c31cce2adf654f$var$isValidInputKey(element, key) || element instanceof HTMLTextAreaElement || element.isContentEditable) && (!$f6c31cce2adf654f$var$isHTMLAnchorLink(element) || role === 'button' && key !== 'Enter') && // An element with role='link' should only trigger with Enter key
|
|
566
561
|
!(role === 'link' && key !== 'Enter');
|
|
567
562
|
}
|
|
568
563
|
function $f6c31cce2adf654f$var$getTouchFromEvent(event) {
|
|
@@ -611,10 +606,27 @@ function $f6c31cce2adf654f$var$isOverTarget(point, target) {
|
|
|
611
606
|
}
|
|
612
607
|
function $f6c31cce2adf654f$var$shouldPreventDefault(target) {
|
|
613
608
|
// We cannot prevent default if the target is a draggable element.
|
|
614
|
-
return !target.draggable;
|
|
609
|
+
return !(target instanceof HTMLElement) || !target.draggable;
|
|
610
|
+
}
|
|
611
|
+
function $f6c31cce2adf654f$var$shouldPreventDefaultKeyboard(target, key) {
|
|
612
|
+
if (target instanceof HTMLInputElement) return !$f6c31cce2adf654f$var$isValidInputKey(target, key);
|
|
613
|
+
if (target instanceof HTMLButtonElement) return target.type !== 'submit';
|
|
614
|
+
return true;
|
|
615
615
|
}
|
|
616
|
-
|
|
617
|
-
|
|
616
|
+
const $f6c31cce2adf654f$var$nonTextInputTypes = new Set([
|
|
617
|
+
'checkbox',
|
|
618
|
+
'radio',
|
|
619
|
+
'range',
|
|
620
|
+
'color',
|
|
621
|
+
'file',
|
|
622
|
+
'image',
|
|
623
|
+
'button',
|
|
624
|
+
'submit',
|
|
625
|
+
'reset'
|
|
626
|
+
]);
|
|
627
|
+
function $f6c31cce2adf654f$var$isValidInputKey(target, key) {
|
|
628
|
+
// Only space should toggle checkboxes and radios, not enter.
|
|
629
|
+
return target.type === 'checkbox' || target.type === 'radio' ? key === ' ' : $f6c31cce2adf654f$var$nonTextInputTypes.has(target.type);
|
|
618
630
|
}
|
|
619
631
|
function $f6c31cce2adf654f$var$isVirtualPointerEvent(event) {
|
|
620
632
|
// If the pointer size is zero, then we assume it's from a screen reader.
|
|
@@ -644,9 +656,6 @@ const $3b117e43dc0ca95d$export$27c701ed9e449e99 = /*#__PURE__*/ $bx7SL$react.for
|
|
|
644
656
|
});
|
|
645
657
|
|
|
646
658
|
|
|
647
|
-
var $f1ab8c75478c6f73$exports = {};
|
|
648
|
-
|
|
649
|
-
$parcel$export($f1ab8c75478c6f73$exports, "PressResponder", () => $f1ab8c75478c6f73$export$3351871ee4b288b8);
|
|
650
659
|
|
|
651
660
|
|
|
652
661
|
|
|
@@ -672,9 +681,6 @@ const $f1ab8c75478c6f73$export$3351871ee4b288b8 = /*#__PURE__*/ $bx7SL$react.for
|
|
|
672
681
|
});
|
|
673
682
|
|
|
674
683
|
|
|
675
|
-
var $a1ea59d68270f0dd$exports = {};
|
|
676
|
-
|
|
677
|
-
$parcel$export($a1ea59d68270f0dd$exports, "useFocus", () => $a1ea59d68270f0dd$export$f8168d8dd8fd66e6);
|
|
678
684
|
|
|
679
685
|
|
|
680
686
|
function $a1ea59d68270f0dd$export$f8168d8dd8fd66e6(props) {
|
|
@@ -710,14 +716,6 @@ function $a1ea59d68270f0dd$export$f8168d8dd8fd66e6(props) {
|
|
|
710
716
|
}
|
|
711
717
|
|
|
712
718
|
|
|
713
|
-
var $507fabe10e71c6fb$exports = {};
|
|
714
|
-
|
|
715
|
-
$parcel$export($507fabe10e71c6fb$exports, "isFocusVisible", () => $507fabe10e71c6fb$export$b9b3dfddab17db27);
|
|
716
|
-
$parcel$export($507fabe10e71c6fb$exports, "getInteractionModality", () => $507fabe10e71c6fb$export$630ff653c5ada6a9);
|
|
717
|
-
$parcel$export($507fabe10e71c6fb$exports, "setInteractionModality", () => $507fabe10e71c6fb$export$8397ddfc504fdb9a);
|
|
718
|
-
$parcel$export($507fabe10e71c6fb$exports, "useInteractionModality", () => $507fabe10e71c6fb$export$98e20ec92f614cfe);
|
|
719
|
-
$parcel$export($507fabe10e71c6fb$exports, "useFocusVisible", () => $507fabe10e71c6fb$export$ffd9e5021c1fb2d6);
|
|
720
|
-
$parcel$export($507fabe10e71c6fb$exports, "useFocusVisibleListener", () => $507fabe10e71c6fb$export$ec71b4b83ac08ec3);
|
|
721
719
|
|
|
722
720
|
|
|
723
721
|
|
|
@@ -875,9 +873,6 @@ function $507fabe10e71c6fb$export$ec71b4b83ac08ec3(fn, deps, opts) {
|
|
|
875
873
|
}
|
|
876
874
|
|
|
877
875
|
|
|
878
|
-
var $9ab94262bd0047c7$exports = {};
|
|
879
|
-
|
|
880
|
-
$parcel$export($9ab94262bd0047c7$exports, "useFocusWithin", () => $9ab94262bd0047c7$export$420e68273165f4ec);
|
|
881
876
|
|
|
882
877
|
|
|
883
878
|
function $9ab94262bd0047c7$export$420e68273165f4ec(props) {
|
|
@@ -927,9 +922,6 @@ function $9ab94262bd0047c7$export$420e68273165f4ec(props) {
|
|
|
927
922
|
}
|
|
928
923
|
|
|
929
924
|
|
|
930
|
-
var $6179b936705e76d3$exports = {};
|
|
931
|
-
|
|
932
|
-
$parcel$export($6179b936705e76d3$exports, "useHover", () => $6179b936705e76d3$export$ae780daf29e6d456);
|
|
933
925
|
|
|
934
926
|
// iOS fires onPointerEnter twice: once with pointerType="touch" and again with pointerType="mouse".
|
|
935
927
|
// We want to ignore these emulated events so they do not trigger hover behavior.
|
|
@@ -1049,9 +1041,6 @@ function $6179b936705e76d3$export$ae780daf29e6d456(props) {
|
|
|
1049
1041
|
}
|
|
1050
1042
|
|
|
1051
1043
|
|
|
1052
|
-
var $e0b6e0b68ec7f50f$exports = {};
|
|
1053
|
-
|
|
1054
|
-
$parcel$export($e0b6e0b68ec7f50f$exports, "useInteractOutside", () => $e0b6e0b68ec7f50f$export$872b660ac5a1ff98);
|
|
1055
1044
|
|
|
1056
1045
|
function $e0b6e0b68ec7f50f$export$872b660ac5a1ff98(props) {
|
|
1057
1046
|
let { ref: ref , onInteractOutside: onInteractOutside , isDisabled: isDisabled , onInteractOutsideStart: onInteractOutsideStart } = props;
|
|
@@ -1130,9 +1119,6 @@ function $e0b6e0b68ec7f50f$var$isValidEvent(event, ref) {
|
|
|
1130
1119
|
}
|
|
1131
1120
|
|
|
1132
1121
|
|
|
1133
|
-
var $46d819fcbaf35654$exports = {};
|
|
1134
|
-
|
|
1135
|
-
$parcel$export($46d819fcbaf35654$exports, "useKeyboard", () => $46d819fcbaf35654$export$8f71654801c2f7cd);
|
|
1136
1122
|
function $93925083ecbb358c$export$48d1ea6320830260(handler) {
|
|
1137
1123
|
if (!handler) return;
|
|
1138
1124
|
let shouldStopPropagation = true;
|
|
@@ -1169,9 +1155,6 @@ function $46d819fcbaf35654$export$8f71654801c2f7cd(props) {
|
|
|
1169
1155
|
}
|
|
1170
1156
|
|
|
1171
1157
|
|
|
1172
|
-
var $e8a7022cf87cba2a$exports = {};
|
|
1173
|
-
|
|
1174
|
-
$parcel$export($e8a7022cf87cba2a$exports, "useMove", () => $e8a7022cf87cba2a$export$36da96379f79f245);
|
|
1175
1158
|
|
|
1176
1159
|
|
|
1177
1160
|
|
|
@@ -1386,9 +1369,6 @@ function $e8a7022cf87cba2a$export$36da96379f79f245(props) {
|
|
|
1386
1369
|
|
|
1387
1370
|
|
|
1388
1371
|
|
|
1389
|
-
var $7d0a636d7a4dcefd$exports = {};
|
|
1390
|
-
|
|
1391
|
-
$parcel$export($7d0a636d7a4dcefd$exports, "useScrollWheel", () => $7d0a636d7a4dcefd$export$2123ff2b87c81ca);
|
|
1392
1372
|
|
|
1393
1373
|
|
|
1394
1374
|
function $7d0a636d7a4dcefd$export$2123ff2b87c81ca(props, ref) {
|
|
@@ -1410,9 +1390,6 @@ function $7d0a636d7a4dcefd$export$2123ff2b87c81ca(props, ref) {
|
|
|
1410
1390
|
}
|
|
1411
1391
|
|
|
1412
1392
|
|
|
1413
|
-
var $8a26561d2877236e$exports = {};
|
|
1414
|
-
|
|
1415
|
-
$parcel$export($8a26561d2877236e$exports, "useLongPress", () => $8a26561d2877236e$export$c24ed0104d07eab9);
|
|
1416
1393
|
|
|
1417
1394
|
|
|
1418
1395
|
|