@tamagui/floating 2.7.7 → 3.0.0-beta.643.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.
- package/dist/cjs/Floating.cjs +10 -11
- package/dist/cjs/Floating.native.cjs +37 -0
- package/dist/cjs/Floating.native.js +20 -20
- package/dist/cjs/Floating.native.js.map +1 -1
- package/dist/cjs/index.cjs +45 -46
- package/dist/cjs/index.native.cjs +74 -0
- package/dist/cjs/index.native.js +45 -45
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/interactions/PopupTriggerMap.cjs +36 -39
- package/dist/cjs/interactions/PopupTriggerMap.native.cjs +96 -0
- package/dist/cjs/interactions/PopupTriggerMap.native.js +76 -75
- package/dist/cjs/interactions/PopupTriggerMap.native.js.map +1 -1
- package/dist/cjs/interactions/createFloatingEvents.cjs +36 -39
- package/dist/cjs/interactions/createFloatingEvents.native.cjs +52 -0
- package/dist/cjs/interactions/createFloatingEvents.native.js +39 -41
- package/dist/cjs/interactions/createFloatingEvents.native.js.map +1 -1
- package/dist/cjs/interactions/safePolygon.cjs +263 -252
- package/dist/cjs/interactions/safePolygon.native.cjs +294 -0
- package/dist/cjs/interactions/safePolygon.native.js +271 -259
- package/dist/cjs/interactions/safePolygon.native.js.map +1 -1
- package/dist/cjs/interactions/types.cjs +10 -11
- package/dist/cjs/interactions/types.native.cjs +19 -0
- package/dist/cjs/interactions/types.native.js +10 -10
- package/dist/cjs/interactions/types.native.js.map +1 -1
- package/dist/cjs/interactions/useClick.cjs +96 -105
- package/dist/cjs/interactions/useClick.native.cjs +122 -0
- package/dist/cjs/interactions/useClick.native.js +101 -109
- package/dist/cjs/interactions/useClick.native.js.map +1 -1
- package/dist/cjs/interactions/useDelayGroup.cjs +86 -91
- package/dist/cjs/interactions/useDelayGroup.native.cjs +119 -0
- package/dist/cjs/interactions/useDelayGroup.native.js +92 -96
- package/dist/cjs/interactions/useDelayGroup.native.js.map +1 -1
- package/dist/cjs/interactions/useFocus.cjs +108 -115
- package/dist/cjs/interactions/useFocus.native.cjs +131 -0
- package/dist/cjs/interactions/useFocus.native.js +114 -120
- package/dist/cjs/interactions/useFocus.native.js.map +1 -1
- package/dist/cjs/interactions/useHover.cjs +321 -335
- package/dist/cjs/interactions/useHover.native.cjs +357 -0
- package/dist/cjs/interactions/useHover.native.js +333 -347
- package/dist/cjs/interactions/useHover.native.js.map +1 -1
- package/dist/cjs/interactions/useInnerOffset.cjs +103 -111
- package/dist/cjs/interactions/useInnerOffset.native.cjs +132 -0
- package/dist/cjs/interactions/useInnerOffset.native.js +113 -120
- package/dist/cjs/interactions/useInnerOffset.native.js.map +1 -1
- package/dist/cjs/interactions/useInteractions.cjs +85 -90
- package/dist/cjs/interactions/useInteractions.native.cjs +199 -0
- package/dist/cjs/interactions/useInteractions.native.js +180 -195
- package/dist/cjs/interactions/useInteractions.native.js.map +1 -1
- package/dist/cjs/interactions/useListNavigation.cjs +404 -390
- package/dist/cjs/interactions/useListNavigation.native.cjs +446 -0
- package/dist/cjs/interactions/useListNavigation.native.js +416 -401
- package/dist/cjs/interactions/useListNavigation.native.js.map +1 -1
- package/dist/cjs/interactions/useRole.cjs +92 -106
- package/dist/cjs/interactions/useRole.native.cjs +121 -0
- package/dist/cjs/interactions/useRole.native.js +103 -116
- package/dist/cjs/interactions/useRole.native.js.map +1 -1
- package/dist/cjs/interactions/useTypeahead.cjs +115 -129
- package/dist/cjs/interactions/useTypeahead.native.cjs +144 -0
- package/dist/cjs/interactions/useTypeahead.native.js +128 -141
- package/dist/cjs/interactions/useTypeahead.native.js.map +1 -1
- package/dist/cjs/interactions/utils.cjs +126 -143
- package/dist/cjs/interactions/utils.native.cjs +209 -0
- package/dist/cjs/interactions/utils.native.js +138 -154
- package/dist/cjs/interactions/utils.native.js.map +1 -1
- package/dist/cjs/middleware/inner.cjs +74 -101
- package/dist/cjs/middleware/inner.native.cjs +102 -0
- package/dist/cjs/middleware/inner.native.js +83 -109
- package/dist/cjs/middleware/inner.native.js.map +1 -1
- package/dist/cjs/useFloating.cjs +34 -46
- package/dist/cjs/useFloating.native.cjs +56 -0
- package/dist/cjs/useFloating.native.js +37 -48
- package/dist/cjs/useFloating.native.js.map +1 -1
- package/dist/esm/Floating.mjs +1 -2
- package/dist/esm/Floating.native.js +6 -4
- package/dist/esm/Floating.native.js.map +1 -1
- package/dist/esm/index.js +4 -5
- package/dist/esm/index.mjs +4 -5
- package/dist/esm/index.native.js +4 -5
- package/dist/esm/interactions/PopupTriggerMap.mjs +23 -22
- package/dist/esm/interactions/PopupTriggerMap.mjs.map +1 -1
- package/dist/esm/interactions/PopupTriggerMap.native.js +62 -58
- package/dist/esm/interactions/PopupTriggerMap.native.js.map +1 -1
- package/dist/esm/interactions/createFloatingEvents.mjs +22 -21
- package/dist/esm/interactions/createFloatingEvents.mjs.map +1 -1
- package/dist/esm/interactions/createFloatingEvents.native.js +25 -24
- package/dist/esm/interactions/createFloatingEvents.native.js.map +1 -1
- package/dist/esm/interactions/safePolygon.mjs +250 -234
- package/dist/esm/interactions/safePolygon.mjs.map +1 -1
- package/dist/esm/interactions/safePolygon.native.js +258 -242
- package/dist/esm/interactions/safePolygon.native.js.map +1 -1
- package/dist/esm/interactions/types.mjs +0 -2
- package/dist/esm/interactions/types.native.js +0 -2
- package/dist/esm/interactions/useClick.mjs +83 -87
- package/dist/esm/interactions/useClick.mjs.map +1 -1
- package/dist/esm/interactions/useClick.native.js +88 -92
- package/dist/esm/interactions/useClick.native.js.map +1 -1
- package/dist/esm/interactions/useDelayGroup.mjs +68 -65
- package/dist/esm/interactions/useDelayGroup.mjs.map +1 -1
- package/dist/esm/interactions/useDelayGroup.native.js +74 -71
- package/dist/esm/interactions/useDelayGroup.native.js.map +1 -1
- package/dist/esm/interactions/useFocus.mjs +95 -97
- package/dist/esm/interactions/useFocus.mjs.map +1 -1
- package/dist/esm/interactions/useFocus.native.js +101 -103
- package/dist/esm/interactions/useFocus.native.js.map +1 -1
- package/dist/esm/interactions/useHover.mjs +304 -310
- package/dist/esm/interactions/useHover.mjs.map +1 -1
- package/dist/esm/interactions/useHover.native.js +316 -323
- package/dist/esm/interactions/useHover.native.js.map +1 -1
- package/dist/esm/interactions/useInnerOffset.mjs +87 -85
- package/dist/esm/interactions/useInnerOffset.mjs.map +1 -1
- package/dist/esm/interactions/useInnerOffset.native.js +97 -95
- package/dist/esm/interactions/useInnerOffset.native.js.map +1 -1
- package/dist/esm/interactions/useInteractions.mjs +71 -72
- package/dist/esm/interactions/useInteractions.mjs.map +1 -1
- package/dist/esm/interactions/useInteractions.native.js +166 -178
- package/dist/esm/interactions/useInteractions.native.js.map +1 -1
- package/dist/esm/interactions/useListNavigation.mjs +392 -373
- package/dist/esm/interactions/useListNavigation.mjs.map +1 -1
- package/dist/esm/interactions/useListNavigation.native.js +404 -385
- package/dist/esm/interactions/useListNavigation.native.js.map +1 -1
- package/dist/esm/interactions/useRole.mjs +76 -80
- package/dist/esm/interactions/useRole.mjs.map +1 -1
- package/dist/esm/interactions/useRole.native.js +87 -91
- package/dist/esm/interactions/useRole.native.js.map +1 -1
- package/dist/esm/interactions/useTypeahead.mjs +102 -111
- package/dist/esm/interactions/useTypeahead.mjs.map +1 -1
- package/dist/esm/interactions/useTypeahead.native.js +115 -124
- package/dist/esm/interactions/useTypeahead.native.js.map +1 -1
- package/dist/esm/interactions/utils.mjs +91 -106
- package/dist/esm/interactions/utils.mjs.map +1 -1
- package/dist/esm/interactions/utils.native.js +103 -118
- package/dist/esm/interactions/utils.native.js.map +1 -1
- package/dist/esm/middleware/inner.mjs +58 -75
- package/dist/esm/middleware/inner.mjs.map +1 -1
- package/dist/esm/middleware/inner.native.js +67 -84
- package/dist/esm/middleware/inner.native.js.map +1 -1
- package/dist/esm/useFloating.mjs +17 -21
- package/dist/esm/useFloating.mjs.map +1 -1
- package/dist/esm/useFloating.native.js +19 -23
- package/dist/esm/useFloating.native.js.map +1 -1
- package/package.json +6 -5
- package/types/interactions/PopupTriggerMap.d.ts.map +1 -1
- package/types/interactions/useInteractions.d.ts.map +1 -1
- package/types/middleware/inner.d.ts.map +1 -1
- package/types/useFloating.d.ts.map +1 -1
- package/dist/esm/Floating.mjs.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/index.mjs.map +0 -1
- package/dist/esm/index.native.js.map +0 -1
- package/dist/esm/interactions/types.mjs.map +0 -1
- package/dist/esm/interactions/types.native.js.map +0 -1
|
@@ -1,162 +1,147 @@
|
|
|
1
1
|
function getDocument(node) {
|
|
2
|
-
|
|
2
|
+
return node?.ownerDocument || document;
|
|
3
3
|
}
|
|
4
4
|
function contains(parent, child) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
5
|
+
if (!parent || !child) return false;
|
|
6
|
+
const rootNode = child.getRootNode?.();
|
|
7
|
+
if (parent.contains(child)) return true;
|
|
8
|
+
if (rootNode && isShadowRoot(rootNode)) {
|
|
9
|
+
let next = child;
|
|
10
|
+
while (next) {
|
|
11
|
+
if (parent === next) return true;
|
|
12
|
+
next = next.parentNode || next.host;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return false;
|
|
16
16
|
}
|
|
17
17
|
function isShadowRoot(node) {
|
|
18
|
-
|
|
18
|
+
return node instanceof ShadowRoot;
|
|
19
19
|
}
|
|
20
20
|
function getTarget(event) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
if ("composedPath" in event) {
|
|
22
|
+
return event.composedPath()[0];
|
|
23
|
+
}
|
|
24
|
+
return event.target;
|
|
25
25
|
}
|
|
26
26
|
function activeElement(doc) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
let el = doc.activeElement;
|
|
28
|
+
while (el?.shadowRoot?.activeElement != null) {
|
|
29
|
+
el = el.shadowRoot.activeElement;
|
|
30
|
+
}
|
|
31
|
+
return el;
|
|
32
32
|
}
|
|
33
33
|
function isHTMLElement(value) {
|
|
34
|
-
|
|
34
|
+
return value instanceof HTMLElement;
|
|
35
35
|
}
|
|
36
36
|
function isElement(value) {
|
|
37
|
-
|
|
37
|
+
return value instanceof Element;
|
|
38
38
|
}
|
|
39
39
|
const TYPEABLE_SELECTOR = "input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])";
|
|
40
40
|
function isTypeableElement(element) {
|
|
41
|
-
|
|
41
|
+
return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);
|
|
42
42
|
}
|
|
43
43
|
function isTypeableCombobox(element) {
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
if (!element) return false;
|
|
45
|
+
return element.getAttribute("role") === "combobox" && isTypeableElement(element);
|
|
46
46
|
}
|
|
47
47
|
function getPlatform() {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
const uaData = navigator.userAgentData;
|
|
49
|
+
if (uaData?.platform) return uaData.platform;
|
|
50
|
+
return navigator.platform;
|
|
51
51
|
}
|
|
52
52
|
function getUserAgent() {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}) => `${brand}/${version}`).join(" ");
|
|
59
|
-
}
|
|
60
|
-
return navigator.userAgent;
|
|
53
|
+
const uaData = navigator.userAgentData;
|
|
54
|
+
if (uaData && Array.isArray(uaData.brands)) {
|
|
55
|
+
return uaData.brands.map(({ brand, version }) => `${brand}/${version}`).join(" ");
|
|
56
|
+
}
|
|
57
|
+
return navigator.userAgent;
|
|
61
58
|
}
|
|
62
59
|
function isSafari() {
|
|
63
|
-
|
|
60
|
+
return /apple/i.test(navigator.vendor);
|
|
64
61
|
}
|
|
65
62
|
function isMac() {
|
|
66
|
-
|
|
63
|
+
return getPlatform().toLowerCase().startsWith("mac") && !navigator.maxTouchPoints;
|
|
67
64
|
}
|
|
68
65
|
function isJSDOM() {
|
|
69
|
-
|
|
66
|
+
return getUserAgent().includes("jsdom/");
|
|
70
67
|
}
|
|
71
68
|
function matchesFocusVisible(element) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
69
|
+
if (!element || isJSDOM()) return true;
|
|
70
|
+
try {
|
|
71
|
+
return element.matches(":focus-visible");
|
|
72
|
+
} catch {
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
78
75
|
}
|
|
79
76
|
function isMouseLikePointerType(pointerType, strict) {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
77
|
+
const values = ["mouse", "pen"];
|
|
78
|
+
if (!strict) {
|
|
79
|
+
values.push("", void 0);
|
|
80
|
+
}
|
|
81
|
+
return values.includes(pointerType);
|
|
85
82
|
}
|
|
86
83
|
function clearTimeoutIfSet(timeoutRef) {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
84
|
+
if (timeoutRef.current !== -1) {
|
|
85
|
+
clearTimeout(timeoutRef.current);
|
|
86
|
+
timeoutRef.current = -1;
|
|
87
|
+
}
|
|
91
88
|
}
|
|
92
89
|
function stopEvent(event) {
|
|
93
|
-
|
|
94
|
-
|
|
90
|
+
event.preventDefault();
|
|
91
|
+
event.stopPropagation();
|
|
95
92
|
}
|
|
96
93
|
function isVirtualClick(event) {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
94
|
+
if (event.mozInputSource === 0 && event.isTrusted) return true;
|
|
95
|
+
if (isAndroid() && event.pointerType) {
|
|
96
|
+
return event.type === "click" && event.buttons === 1;
|
|
97
|
+
}
|
|
98
|
+
return event.detail === 0 && !event.pointerType;
|
|
102
99
|
}
|
|
103
100
|
function isVirtualPointerEvent(event) {
|
|
104
|
-
|
|
105
|
-
|
|
101
|
+
if (isJSDOM()) return false;
|
|
102
|
+
return !isAndroid() && event.width === 0 && event.height === 0 || isAndroid() && event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === "mouse" || event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === "touch";
|
|
106
103
|
}
|
|
107
104
|
function isAndroid() {
|
|
108
|
-
|
|
109
|
-
|
|
105
|
+
const re = /android/i;
|
|
106
|
+
return re.test(getPlatform()) || re.test(getUserAgent());
|
|
110
107
|
}
|
|
111
108
|
let rafId = 0;
|
|
112
109
|
function enqueueFocus(el, options = {}) {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
});
|
|
122
|
-
if (sync) {
|
|
123
|
-
exec();
|
|
124
|
-
} else {
|
|
125
|
-
rafId = requestAnimationFrame(exec);
|
|
126
|
-
}
|
|
110
|
+
const { preventScroll = false, cancelPrevious = true, sync = false } = options;
|
|
111
|
+
cancelPrevious && cancelAnimationFrame(rafId);
|
|
112
|
+
const exec = () => el?.focus({ preventScroll });
|
|
113
|
+
if (sync) {
|
|
114
|
+
exec();
|
|
115
|
+
} else {
|
|
116
|
+
rafId = requestAnimationFrame(exec);
|
|
117
|
+
}
|
|
127
118
|
}
|
|
128
119
|
function isListIndexDisabled(listRef, index, disabledIndices) {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
}
|
|
134
|
-
function findNonDisabledListIndex(listRef, {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
let index = startingIndex;
|
|
141
|
-
do {
|
|
142
|
-
index += decrement ? -amount : amount;
|
|
143
|
-
} while (index >= 0 && index <= listRef.current.length - 1 && isListIndexDisabled(listRef, index, disabledIndices));
|
|
144
|
-
return index;
|
|
120
|
+
if (typeof disabledIndices === "function") return disabledIndices(index);
|
|
121
|
+
if (disabledIndices) return disabledIndices.includes(index);
|
|
122
|
+
const element = listRef.current[index];
|
|
123
|
+
return element == null || element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true";
|
|
124
|
+
}
|
|
125
|
+
function findNonDisabledListIndex(listRef, { startingIndex = -1, decrement = false, disabledIndices, amount = 1 } = {}) {
|
|
126
|
+
let index = startingIndex;
|
|
127
|
+
do {
|
|
128
|
+
index += decrement ? -amount : amount;
|
|
129
|
+
} while (index >= 0 && index <= listRef.current.length - 1 && isListIndexDisabled(listRef, index, disabledIndices));
|
|
130
|
+
return index;
|
|
145
131
|
}
|
|
146
132
|
function getMinListIndex(listRef, disabledIndices) {
|
|
147
|
-
|
|
148
|
-
disabledIndices
|
|
149
|
-
});
|
|
133
|
+
return findNonDisabledListIndex(listRef, { disabledIndices });
|
|
150
134
|
}
|
|
151
135
|
function getMaxListIndex(listRef, disabledIndices) {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
136
|
+
return findNonDisabledListIndex(listRef, {
|
|
137
|
+
decrement: true,
|
|
138
|
+
startingIndex: listRef.current.length,
|
|
139
|
+
disabledIndices
|
|
140
|
+
});
|
|
157
141
|
}
|
|
158
142
|
function isIndexOutOfListBounds(listRef, index) {
|
|
159
|
-
|
|
143
|
+
return index < 0 || index >= listRef.current.length;
|
|
160
144
|
}
|
|
145
|
+
|
|
161
146
|
export { activeElement, clearTimeoutIfSet, contains, enqueueFocus, findNonDisabledListIndex, getDocument, getMaxListIndex, getMinListIndex, getTarget, isElement, isHTMLElement, isIndexOutOfListBounds, isListIndexDisabled, isMac, isMouseLikePointerType, isSafari, isTypeableCombobox, isTypeableElement, isVirtualClick, isVirtualPointerEvent, matchesFocusVisible, stopEvent };
|
|
162
147
|
//# sourceMappingURL=utils.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"utils.js","names":[],"sources":["esm/interactions/utils.js"],"sourcesContent":["function getDocument(node) {\n return node?.ownerDocument || document;\n}\nfunction contains(parent, child) {\n if (!parent || !child) return false;\n const rootNode = child.getRootNode?.();\n if (parent.contains(child)) return true;\n if (rootNode && isShadowRoot(rootNode)) {\n let next = child;\n while (next) {\n if (parent === next) return true;\n next = next.parentNode || next.host;\n }\n }\n return false;\n}\nfunction isShadowRoot(node) {\n return node instanceof ShadowRoot;\n}\nfunction getTarget(event) {\n if (\"composedPath\" in event) {\n return event.composedPath()[0];\n }\n return event.target;\n}\nfunction activeElement(doc) {\n let el = doc.activeElement;\n while (el?.shadowRoot?.activeElement != null) {\n el = el.shadowRoot.activeElement;\n }\n return el;\n}\nfunction isHTMLElement(value) {\n return value instanceof HTMLElement;\n}\nfunction isElement(value) {\n return value instanceof Element;\n}\nconst TYPEABLE_SELECTOR = \"input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])\";\nfunction isTypeableElement(element) {\n return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);\n}\nfunction isTypeableCombobox(element) {\n if (!element) return false;\n return element.getAttribute(\"role\") === \"combobox\" && isTypeableElement(element);\n}\nfunction getPlatform() {\n const uaData = navigator.userAgentData;\n if (uaData?.platform) return uaData.platform;\n return navigator.platform;\n}\nfunction getUserAgent() {\n const uaData = navigator.userAgentData;\n if (uaData && Array.isArray(uaData.brands)) {\n return uaData.brands.map(({ brand, version }) => `${brand}/${version}`).join(\" \");\n }\n return navigator.userAgent;\n}\nfunction isSafari() {\n return /apple/i.test(navigator.vendor);\n}\nfunction isMac() {\n return getPlatform().toLowerCase().startsWith(\"mac\") && !navigator.maxTouchPoints;\n}\nfunction isJSDOM() {\n return getUserAgent().includes(\"jsdom/\");\n}\nfunction matchesFocusVisible(element) {\n if (!element || isJSDOM()) return true;\n try {\n return element.matches(\":focus-visible\");\n } catch {\n return true;\n }\n}\nfunction isMouseLikePointerType(pointerType, strict) {\n const values = [\"mouse\", \"pen\"];\n if (!strict) {\n values.push(\"\", void 0);\n }\n return values.includes(pointerType);\n}\nfunction clearTimeoutIfSet(timeoutRef) {\n if (timeoutRef.current !== -1) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = -1;\n }\n}\nfunction stopEvent(event) {\n event.preventDefault();\n event.stopPropagation();\n}\nfunction isVirtualClick(event) {\n if (event.mozInputSource === 0 && event.isTrusted) return true;\n if (isAndroid() && event.pointerType) {\n return event.type === \"click\" && event.buttons === 1;\n }\n return event.detail === 0 && !event.pointerType;\n}\nfunction isVirtualPointerEvent(event) {\n if (isJSDOM()) return false;\n return !isAndroid() && event.width === 0 && event.height === 0 || isAndroid() && event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === \"mouse\" || event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === \"touch\";\n}\nfunction isAndroid() {\n const re = /android/i;\n return re.test(getPlatform()) || re.test(getUserAgent());\n}\nlet rafId = 0;\nfunction enqueueFocus(el, options = {}) {\n const { preventScroll = false, cancelPrevious = true, sync = false } = options;\n cancelPrevious && cancelAnimationFrame(rafId);\n const exec = () => el?.focus({ preventScroll });\n if (sync) {\n exec();\n } else {\n rafId = requestAnimationFrame(exec);\n }\n}\nfunction isListIndexDisabled(listRef, index, disabledIndices) {\n if (typeof disabledIndices === \"function\") return disabledIndices(index);\n if (disabledIndices) return disabledIndices.includes(index);\n const element = listRef.current[index];\n return element == null || element.hasAttribute(\"disabled\") || element.getAttribute(\"aria-disabled\") === \"true\";\n}\nfunction findNonDisabledListIndex(listRef, {\n startingIndex = -1,\n decrement = false,\n disabledIndices,\n amount = 1\n} = {}) {\n let index = startingIndex;\n do {\n index += decrement ? -amount : amount;\n } while (index >= 0 && index <= listRef.current.length - 1 && isListIndexDisabled(listRef, index, disabledIndices));\n return index;\n}\nfunction getMinListIndex(listRef, disabledIndices) {\n return findNonDisabledListIndex(listRef, { disabledIndices });\n}\nfunction getMaxListIndex(listRef, disabledIndices) {\n return findNonDisabledListIndex(listRef, {\n decrement: true,\n startingIndex: listRef.current.length,\n disabledIndices\n });\n}\nfunction isIndexOutOfListBounds(listRef, index) {\n return index < 0 || index >= listRef.current.length;\n}\nexport {\n activeElement,\n clearTimeoutIfSet,\n contains,\n enqueueFocus,\n findNonDisabledListIndex,\n getDocument,\n getMaxListIndex,\n getMinListIndex,\n getTarget,\n isElement,\n isHTMLElement,\n isIndexOutOfListBounds,\n isListIndexDisabled,\n isMac,\n isMouseLikePointerType,\n isSafari,\n isTypeableCombobox,\n isTypeableElement,\n isVirtualClick,\n isVirtualPointerEvent,\n matchesFocusVisible,\n stopEvent\n};\n//# sourceMappingURL=utils.js.map\n"],"mappings":"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"}
|
|
@@ -1,178 +1,163 @@
|
|
|
1
1
|
function _instanceof(left, right) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
3
|
+
return !!right[Symbol.hasInstance](left);
|
|
4
|
+
} else {
|
|
5
|
+
return left instanceof right;
|
|
6
|
+
}
|
|
7
7
|
}
|
|
8
8
|
function getDocument(node) {
|
|
9
|
-
|
|
9
|
+
return (node === null || node === void 0 ? void 0 : node.ownerDocument) || document;
|
|
10
10
|
}
|
|
11
11
|
function contains(parent, child) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
12
|
+
var _child_getRootNode;
|
|
13
|
+
if (!parent || !child) return false;
|
|
14
|
+
var rootNode = (_child_getRootNode = child.getRootNode) === null || _child_getRootNode === void 0 ? void 0 : _child_getRootNode.call(child);
|
|
15
|
+
if (parent.contains(child)) return true;
|
|
16
|
+
if (rootNode && isShadowRoot(rootNode)) {
|
|
17
|
+
var next = child;
|
|
18
|
+
while (next) {
|
|
19
|
+
if (parent === next) return true;
|
|
20
|
+
next = next.parentNode || next.host;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return false;
|
|
24
24
|
}
|
|
25
25
|
function isShadowRoot(node) {
|
|
26
|
-
|
|
26
|
+
return _instanceof(node, ShadowRoot);
|
|
27
27
|
}
|
|
28
28
|
function getTarget(event) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
if ("composedPath" in event) {
|
|
30
|
+
return event.composedPath()[0];
|
|
31
|
+
}
|
|
32
|
+
return event.target;
|
|
33
33
|
}
|
|
34
34
|
function activeElement(doc) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
var _el_shadowRoot;
|
|
36
|
+
var el = doc.activeElement;
|
|
37
|
+
while ((el === null || el === void 0 ? void 0 : (_el_shadowRoot = el.shadowRoot) === null || _el_shadowRoot === void 0 ? void 0 : _el_shadowRoot.activeElement) != null) {
|
|
38
|
+
el = el.shadowRoot.activeElement;
|
|
39
|
+
}
|
|
40
|
+
return el;
|
|
41
41
|
}
|
|
42
42
|
function isHTMLElement(value) {
|
|
43
|
-
|
|
43
|
+
return _instanceof(value, HTMLElement);
|
|
44
44
|
}
|
|
45
45
|
function isElement(value) {
|
|
46
|
-
|
|
46
|
+
return _instanceof(value, Element);
|
|
47
47
|
}
|
|
48
48
|
var TYPEABLE_SELECTOR = "input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])";
|
|
49
49
|
function isTypeableElement(element) {
|
|
50
|
-
|
|
50
|
+
return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);
|
|
51
51
|
}
|
|
52
52
|
function isTypeableCombobox(element) {
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
if (!element) return false;
|
|
54
|
+
return element.getAttribute("role") === "combobox" && isTypeableElement(element);
|
|
55
55
|
}
|
|
56
56
|
function getPlatform() {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
var uaData = navigator.userAgentData;
|
|
58
|
+
if (uaData === null || uaData === void 0 ? void 0 : uaData.platform) return uaData.platform;
|
|
59
|
+
return navigator.platform;
|
|
60
60
|
}
|
|
61
61
|
function getUserAgent() {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}).join(" ");
|
|
71
|
-
}
|
|
72
|
-
return navigator.userAgent;
|
|
62
|
+
var uaData = navigator.userAgentData;
|
|
63
|
+
if (uaData && Array.isArray(uaData.brands)) {
|
|
64
|
+
return uaData.brands.map(function(param) {
|
|
65
|
+
var { brand, version } = param;
|
|
66
|
+
return `${brand}/${version}`;
|
|
67
|
+
}).join(" ");
|
|
68
|
+
}
|
|
69
|
+
return navigator.userAgent;
|
|
73
70
|
}
|
|
74
71
|
function isSafari() {
|
|
75
|
-
|
|
72
|
+
return /apple/i.test(navigator.vendor);
|
|
76
73
|
}
|
|
77
74
|
function isMac() {
|
|
78
|
-
|
|
75
|
+
return getPlatform().toLowerCase().startsWith("mac") && !navigator.maxTouchPoints;
|
|
79
76
|
}
|
|
80
77
|
function isJSDOM() {
|
|
81
|
-
|
|
78
|
+
return getUserAgent().includes("jsdom/");
|
|
82
79
|
}
|
|
83
80
|
function matchesFocusVisible(element) {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
81
|
+
if (!element || isJSDOM()) return true;
|
|
82
|
+
try {
|
|
83
|
+
return element.matches(":focus-visible");
|
|
84
|
+
} catch (e) {
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
90
87
|
}
|
|
91
88
|
function isMouseLikePointerType(pointerType, strict) {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
89
|
+
var values = ["mouse", "pen"];
|
|
90
|
+
if (!strict) {
|
|
91
|
+
values.push("", void 0);
|
|
92
|
+
}
|
|
93
|
+
return values.includes(pointerType);
|
|
97
94
|
}
|
|
98
95
|
function clearTimeoutIfSet(timeoutRef) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
96
|
+
if (timeoutRef.current !== -1) {
|
|
97
|
+
clearTimeout(timeoutRef.current);
|
|
98
|
+
timeoutRef.current = -1;
|
|
99
|
+
}
|
|
103
100
|
}
|
|
104
101
|
function stopEvent(event) {
|
|
105
|
-
|
|
106
|
-
|
|
102
|
+
event.preventDefault();
|
|
103
|
+
event.stopPropagation();
|
|
107
104
|
}
|
|
108
105
|
function isVirtualClick(event) {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
106
|
+
if (event.mozInputSource === 0 && event.isTrusted) return true;
|
|
107
|
+
if (isAndroid() && event.pointerType) {
|
|
108
|
+
return event.type === "click" && event.buttons === 1;
|
|
109
|
+
}
|
|
110
|
+
return event.detail === 0 && !event.pointerType;
|
|
114
111
|
}
|
|
115
112
|
function isVirtualPointerEvent(event) {
|
|
116
|
-
|
|
117
|
-
|
|
113
|
+
if (isJSDOM()) return false;
|
|
114
|
+
return !isAndroid() && event.width === 0 && event.height === 0 || isAndroid() && event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === "mouse" || event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === "touch";
|
|
118
115
|
}
|
|
119
116
|
function isAndroid() {
|
|
120
|
-
|
|
121
|
-
|
|
117
|
+
var re = /android/i;
|
|
118
|
+
return re.test(getPlatform()) || re.test(getUserAgent());
|
|
122
119
|
}
|
|
123
120
|
var rafId = 0;
|
|
124
121
|
function enqueueFocus(el) {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
};
|
|
137
|
-
if (sync) {
|
|
138
|
-
exec();
|
|
139
|
-
} else {
|
|
140
|
-
rafId = requestAnimationFrame(exec);
|
|
141
|
-
}
|
|
122
|
+
var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
|
123
|
+
var { preventScroll = false, cancelPrevious = true, sync = false } = options;
|
|
124
|
+
cancelPrevious && cancelAnimationFrame(rafId);
|
|
125
|
+
var exec = function() {
|
|
126
|
+
return el === null || el === void 0 ? void 0 : el.focus({ preventScroll });
|
|
127
|
+
};
|
|
128
|
+
if (sync) {
|
|
129
|
+
exec();
|
|
130
|
+
} else {
|
|
131
|
+
rafId = requestAnimationFrame(exec);
|
|
132
|
+
}
|
|
142
133
|
}
|
|
143
134
|
function isListIndexDisabled(listRef, index, disabledIndices) {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
135
|
+
if (typeof disabledIndices === "function") return disabledIndices(index);
|
|
136
|
+
if (disabledIndices) return disabledIndices.includes(index);
|
|
137
|
+
var element = listRef.current[index];
|
|
138
|
+
return element == null || element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true";
|
|
148
139
|
}
|
|
149
140
|
function findNonDisabledListIndex(listRef) {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
var index = startingIndex;
|
|
157
|
-
do {
|
|
158
|
-
index += decrement ? -amount : amount;
|
|
159
|
-
} while (index >= 0 && index <= listRef.current.length - 1 && isListIndexDisabled(listRef, index, disabledIndices));
|
|
160
|
-
return index;
|
|
141
|
+
var { startingIndex = -1, decrement = false, disabledIndices, amount = 1 } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
|
142
|
+
var index = startingIndex;
|
|
143
|
+
do {
|
|
144
|
+
index += decrement ? -amount : amount;
|
|
145
|
+
} while (index >= 0 && index <= listRef.current.length - 1 && isListIndexDisabled(listRef, index, disabledIndices));
|
|
146
|
+
return index;
|
|
161
147
|
}
|
|
162
148
|
function getMinListIndex(listRef, disabledIndices) {
|
|
163
|
-
|
|
164
|
-
disabledIndices
|
|
165
|
-
});
|
|
149
|
+
return findNonDisabledListIndex(listRef, { disabledIndices });
|
|
166
150
|
}
|
|
167
151
|
function getMaxListIndex(listRef, disabledIndices) {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
152
|
+
return findNonDisabledListIndex(listRef, {
|
|
153
|
+
decrement: true,
|
|
154
|
+
startingIndex: listRef.current.length,
|
|
155
|
+
disabledIndices
|
|
156
|
+
});
|
|
173
157
|
}
|
|
174
158
|
function isIndexOutOfListBounds(listRef, index) {
|
|
175
|
-
|
|
159
|
+
return index < 0 || index >= listRef.current.length;
|
|
176
160
|
}
|
|
161
|
+
|
|
177
162
|
export { activeElement, clearTimeoutIfSet, contains, enqueueFocus, findNonDisabledListIndex, getDocument, getMaxListIndex, getMinListIndex, getTarget, isElement, isHTMLElement, isIndexOutOfListBounds, isListIndexDisabled, isMac, isMouseLikePointerType, isSafari, isTypeableCombobox, isTypeableElement, isVirtualClick, isVirtualPointerEvent, matchesFocusVisible, stopEvent };
|
|
178
163
|
//# sourceMappingURL=utils.native.js.map
|