@tamagui/floating 2.7.7 → 3.0.0-beta.1093.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 (155) hide show
  1. package/dist/cjs/Floating.cjs +9 -11
  2. package/dist/cjs/Floating.native.cjs +36 -0
  3. package/dist/cjs/Floating.native.js +19 -20
  4. package/dist/cjs/Floating.native.js.map +1 -1
  5. package/dist/cjs/index.cjs +44 -46
  6. package/dist/cjs/index.native.cjs +73 -0
  7. package/dist/cjs/index.native.js +44 -45
  8. package/dist/cjs/index.native.js.map +1 -1
  9. package/dist/cjs/interactions/PopupTriggerMap.cjs +35 -39
  10. package/dist/cjs/interactions/PopupTriggerMap.native.cjs +95 -0
  11. package/dist/cjs/interactions/PopupTriggerMap.native.js +75 -75
  12. package/dist/cjs/interactions/PopupTriggerMap.native.js.map +1 -1
  13. package/dist/cjs/interactions/createFloatingEvents.cjs +35 -39
  14. package/dist/cjs/interactions/createFloatingEvents.native.cjs +51 -0
  15. package/dist/cjs/interactions/createFloatingEvents.native.js +38 -41
  16. package/dist/cjs/interactions/createFloatingEvents.native.js.map +1 -1
  17. package/dist/cjs/interactions/safePolygon.cjs +262 -252
  18. package/dist/cjs/interactions/safePolygon.native.cjs +293 -0
  19. package/dist/cjs/interactions/safePolygon.native.js +270 -259
  20. package/dist/cjs/interactions/safePolygon.native.js.map +1 -1
  21. package/dist/cjs/interactions/types.cjs +9 -11
  22. package/dist/cjs/interactions/types.native.cjs +18 -0
  23. package/dist/cjs/interactions/types.native.js +9 -10
  24. package/dist/cjs/interactions/types.native.js.map +1 -1
  25. package/dist/cjs/interactions/useClick.cjs +95 -105
  26. package/dist/cjs/interactions/useClick.native.cjs +121 -0
  27. package/dist/cjs/interactions/useClick.native.js +100 -109
  28. package/dist/cjs/interactions/useClick.native.js.map +1 -1
  29. package/dist/cjs/interactions/useDelayGroup.cjs +85 -91
  30. package/dist/cjs/interactions/useDelayGroup.native.cjs +118 -0
  31. package/dist/cjs/interactions/useDelayGroup.native.js +91 -96
  32. package/dist/cjs/interactions/useDelayGroup.native.js.map +1 -1
  33. package/dist/cjs/interactions/useFocus.cjs +107 -115
  34. package/dist/cjs/interactions/useFocus.native.cjs +130 -0
  35. package/dist/cjs/interactions/useFocus.native.js +113 -120
  36. package/dist/cjs/interactions/useFocus.native.js.map +1 -1
  37. package/dist/cjs/interactions/useHover.cjs +320 -335
  38. package/dist/cjs/interactions/useHover.native.cjs +356 -0
  39. package/dist/cjs/interactions/useHover.native.js +332 -347
  40. package/dist/cjs/interactions/useHover.native.js.map +1 -1
  41. package/dist/cjs/interactions/useInnerOffset.cjs +102 -111
  42. package/dist/cjs/interactions/useInnerOffset.native.cjs +131 -0
  43. package/dist/cjs/interactions/useInnerOffset.native.js +112 -120
  44. package/dist/cjs/interactions/useInnerOffset.native.js.map +1 -1
  45. package/dist/cjs/interactions/useInteractions.cjs +76 -92
  46. package/dist/cjs/interactions/useInteractions.native.cjs +199 -0
  47. package/dist/cjs/interactions/useInteractions.native.js +185 -200
  48. package/dist/cjs/interactions/useInteractions.native.js.map +1 -1
  49. package/dist/cjs/interactions/useListNavigation.cjs +404 -390
  50. package/dist/cjs/interactions/useListNavigation.native.cjs +446 -0
  51. package/dist/cjs/interactions/useListNavigation.native.js +416 -401
  52. package/dist/cjs/interactions/useListNavigation.native.js.map +1 -1
  53. package/dist/cjs/interactions/useRole.cjs +91 -106
  54. package/dist/cjs/interactions/useRole.native.cjs +120 -0
  55. package/dist/cjs/interactions/useRole.native.js +102 -116
  56. package/dist/cjs/interactions/useRole.native.js.map +1 -1
  57. package/dist/cjs/interactions/useTypeahead.cjs +114 -129
  58. package/dist/cjs/interactions/useTypeahead.native.cjs +143 -0
  59. package/dist/cjs/interactions/useTypeahead.native.js +127 -141
  60. package/dist/cjs/interactions/useTypeahead.native.js.map +1 -1
  61. package/dist/cjs/interactions/utils.cjs +125 -143
  62. package/dist/cjs/interactions/utils.native.cjs +201 -0
  63. package/dist/cjs/interactions/utils.native.js +132 -156
  64. package/dist/cjs/interactions/utils.native.js.map +1 -1
  65. package/dist/cjs/middleware/inner.cjs +73 -101
  66. package/dist/cjs/middleware/inner.native.cjs +101 -0
  67. package/dist/cjs/middleware/inner.native.js +82 -109
  68. package/dist/cjs/middleware/inner.native.js.map +1 -1
  69. package/dist/cjs/useFloating.cjs +33 -46
  70. package/dist/cjs/useFloating.native.cjs +55 -0
  71. package/dist/cjs/useFloating.native.js +36 -48
  72. package/dist/cjs/useFloating.native.js.map +1 -1
  73. package/dist/esm/Floating.mjs +1 -2
  74. package/dist/esm/Floating.native.js +6 -4
  75. package/dist/esm/Floating.native.js.map +1 -1
  76. package/dist/esm/index.js +4 -5
  77. package/dist/esm/index.mjs +4 -5
  78. package/dist/esm/index.native.js +4 -5
  79. package/dist/esm/interactions/PopupTriggerMap.mjs +23 -22
  80. package/dist/esm/interactions/PopupTriggerMap.mjs.map +1 -1
  81. package/dist/esm/interactions/PopupTriggerMap.native.js +62 -58
  82. package/dist/esm/interactions/PopupTriggerMap.native.js.map +1 -1
  83. package/dist/esm/interactions/createFloatingEvents.mjs +22 -21
  84. package/dist/esm/interactions/createFloatingEvents.mjs.map +1 -1
  85. package/dist/esm/interactions/createFloatingEvents.native.js +25 -24
  86. package/dist/esm/interactions/createFloatingEvents.native.js.map +1 -1
  87. package/dist/esm/interactions/safePolygon.mjs +250 -234
  88. package/dist/esm/interactions/safePolygon.mjs.map +1 -1
  89. package/dist/esm/interactions/safePolygon.native.js +258 -242
  90. package/dist/esm/interactions/safePolygon.native.js.map +1 -1
  91. package/dist/esm/interactions/types.mjs +0 -2
  92. package/dist/esm/interactions/types.native.js +0 -2
  93. package/dist/esm/interactions/useClick.mjs +83 -87
  94. package/dist/esm/interactions/useClick.mjs.map +1 -1
  95. package/dist/esm/interactions/useClick.native.js +88 -92
  96. package/dist/esm/interactions/useClick.native.js.map +1 -1
  97. package/dist/esm/interactions/useDelayGroup.mjs +68 -65
  98. package/dist/esm/interactions/useDelayGroup.mjs.map +1 -1
  99. package/dist/esm/interactions/useDelayGroup.native.js +74 -71
  100. package/dist/esm/interactions/useDelayGroup.native.js.map +1 -1
  101. package/dist/esm/interactions/useFocus.mjs +95 -97
  102. package/dist/esm/interactions/useFocus.mjs.map +1 -1
  103. package/dist/esm/interactions/useFocus.native.js +101 -103
  104. package/dist/esm/interactions/useFocus.native.js.map +1 -1
  105. package/dist/esm/interactions/useHover.mjs +304 -310
  106. package/dist/esm/interactions/useHover.mjs.map +1 -1
  107. package/dist/esm/interactions/useHover.native.js +316 -323
  108. package/dist/esm/interactions/useHover.native.js.map +1 -1
  109. package/dist/esm/interactions/useInnerOffset.mjs +87 -85
  110. package/dist/esm/interactions/useInnerOffset.mjs.map +1 -1
  111. package/dist/esm/interactions/useInnerOffset.native.js +97 -95
  112. package/dist/esm/interactions/useInnerOffset.native.js.map +1 -1
  113. package/dist/esm/interactions/useInteractions.mjs +65 -75
  114. package/dist/esm/interactions/useInteractions.mjs.map +1 -1
  115. package/dist/esm/interactions/useInteractions.native.js +172 -182
  116. package/dist/esm/interactions/useInteractions.native.js.map +1 -1
  117. package/dist/esm/interactions/useListNavigation.mjs +393 -373
  118. package/dist/esm/interactions/useListNavigation.mjs.map +1 -1
  119. package/dist/esm/interactions/useListNavigation.native.js +405 -385
  120. package/dist/esm/interactions/useListNavigation.native.js.map +1 -1
  121. package/dist/esm/interactions/useRole.mjs +76 -80
  122. package/dist/esm/interactions/useRole.mjs.map +1 -1
  123. package/dist/esm/interactions/useRole.native.js +87 -91
  124. package/dist/esm/interactions/useRole.native.js.map +1 -1
  125. package/dist/esm/interactions/useTypeahead.mjs +102 -111
  126. package/dist/esm/interactions/useTypeahead.mjs.map +1 -1
  127. package/dist/esm/interactions/useTypeahead.native.js +115 -124
  128. package/dist/esm/interactions/useTypeahead.native.js.map +1 -1
  129. package/dist/esm/interactions/utils.mjs +91 -106
  130. package/dist/esm/interactions/utils.mjs.map +1 -1
  131. package/dist/esm/interactions/utils.native.js +98 -120
  132. package/dist/esm/interactions/utils.native.js.map +1 -1
  133. package/dist/esm/middleware/inner.mjs +58 -75
  134. package/dist/esm/middleware/inner.mjs.map +1 -1
  135. package/dist/esm/middleware/inner.native.js +67 -84
  136. package/dist/esm/middleware/inner.native.js.map +1 -1
  137. package/dist/esm/useFloating.mjs +17 -21
  138. package/dist/esm/useFloating.mjs.map +1 -1
  139. package/dist/esm/useFloating.native.js +19 -23
  140. package/dist/esm/useFloating.native.js.map +1 -1
  141. package/package.json +8 -6
  142. package/src/interactions/useInteractions.ts +61 -59
  143. package/src/interactions/useListNavigation.ts +7 -2
  144. package/types/interactions/PopupTriggerMap.d.ts.map +1 -1
  145. package/types/interactions/useInteractions.d.ts +3 -3
  146. package/types/interactions/useInteractions.d.ts.map +1 -1
  147. package/types/interactions/useListNavigation.d.ts.map +1 -1
  148. package/types/middleware/inner.d.ts.map +1 -1
  149. package/types/useFloating.d.ts.map +1 -1
  150. package/dist/esm/Floating.mjs.map +0 -1
  151. package/dist/esm/index.js.map +0 -1
  152. package/dist/esm/index.mjs.map +0 -1
  153. package/dist/esm/index.native.js.map +0 -1
  154. package/dist/esm/interactions/types.mjs.map +0 -1
  155. package/dist/esm/interactions/types.native.js.map +0 -1
@@ -1,162 +1,147 @@
1
1
  function getDocument(node) {
2
- return node?.ownerDocument || document;
2
+ return node?.ownerDocument || document;
3
3
  }
4
4
  function contains(parent, child) {
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;
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
- return node instanceof ShadowRoot;
18
+ return node instanceof ShadowRoot;
19
19
  }
20
20
  function getTarget(event) {
21
- if ("composedPath" in event) {
22
- return event.composedPath()[0];
23
- }
24
- return event.target;
21
+ if ("composedPath" in event) {
22
+ return event.composedPath()[0];
23
+ }
24
+ return event.target;
25
25
  }
26
26
  function activeElement(doc) {
27
- let el = doc.activeElement;
28
- while (el?.shadowRoot?.activeElement != null) {
29
- el = el.shadowRoot.activeElement;
30
- }
31
- return el;
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
- return value instanceof HTMLElement;
34
+ return value instanceof HTMLElement;
35
35
  }
36
36
  function isElement(value) {
37
- return value instanceof Element;
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
- return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);
41
+ return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);
42
42
  }
43
43
  function isTypeableCombobox(element) {
44
- if (!element) return false;
45
- return element.getAttribute("role") === "combobox" && isTypeableElement(element);
44
+ if (!element) return false;
45
+ return element.getAttribute("role") === "combobox" && isTypeableElement(element);
46
46
  }
47
47
  function getPlatform() {
48
- const uaData = navigator.userAgentData;
49
- if (uaData?.platform) return uaData.platform;
50
- return navigator.platform;
48
+ const uaData = navigator.userAgentData;
49
+ if (uaData?.platform) return uaData.platform;
50
+ return navigator.platform;
51
51
  }
52
52
  function getUserAgent() {
53
- const uaData = navigator.userAgentData;
54
- if (uaData && Array.isArray(uaData.brands)) {
55
- return uaData.brands.map(({
56
- brand,
57
- version
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
- return /apple/i.test(navigator.vendor);
60
+ return /apple/i.test(navigator.vendor);
64
61
  }
65
62
  function isMac() {
66
- return getPlatform().toLowerCase().startsWith("mac") && !navigator.maxTouchPoints;
63
+ return getPlatform().toLowerCase().startsWith("mac") && !navigator.maxTouchPoints;
67
64
  }
68
65
  function isJSDOM() {
69
- return getUserAgent().includes("jsdom/");
66
+ return getUserAgent().includes("jsdom/");
70
67
  }
71
68
  function matchesFocusVisible(element) {
72
- if (!element || isJSDOM()) return true;
73
- try {
74
- return element.matches(":focus-visible");
75
- } catch {
76
- return true;
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
- const values = ["mouse", "pen"];
81
- if (!strict) {
82
- values.push("", void 0);
83
- }
84
- return values.includes(pointerType);
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
- if (timeoutRef.current !== -1) {
88
- clearTimeout(timeoutRef.current);
89
- timeoutRef.current = -1;
90
- }
84
+ if (timeoutRef.current !== -1) {
85
+ clearTimeout(timeoutRef.current);
86
+ timeoutRef.current = -1;
87
+ }
91
88
  }
92
89
  function stopEvent(event) {
93
- event.preventDefault();
94
- event.stopPropagation();
90
+ event.preventDefault();
91
+ event.stopPropagation();
95
92
  }
96
93
  function isVirtualClick(event) {
97
- if (event.mozInputSource === 0 && event.isTrusted) return true;
98
- if (isAndroid() && event.pointerType) {
99
- return event.type === "click" && event.buttons === 1;
100
- }
101
- return event.detail === 0 && !event.pointerType;
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
- if (isJSDOM()) return false;
105
- 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";
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
- const re = /android/i;
109
- return re.test(getPlatform()) || re.test(getUserAgent());
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
- const {
114
- preventScroll = false,
115
- cancelPrevious = true,
116
- sync = false
117
- } = options;
118
- cancelPrevious && cancelAnimationFrame(rafId);
119
- const exec = () => el?.focus({
120
- preventScroll
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
- if (typeof disabledIndices === "function") return disabledIndices(index);
130
- if (disabledIndices) return disabledIndices.includes(index);
131
- const element = listRef.current[index];
132
- return element == null || element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true";
133
- }
134
- function findNonDisabledListIndex(listRef, {
135
- startingIndex = -1,
136
- decrement = false,
137
- disabledIndices,
138
- amount = 1
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
- return findNonDisabledListIndex(listRef, {
148
- disabledIndices
149
- });
133
+ return findNonDisabledListIndex(listRef, { disabledIndices });
150
134
  }
151
135
  function getMaxListIndex(listRef, disabledIndices) {
152
- return findNonDisabledListIndex(listRef, {
153
- decrement: true,
154
- startingIndex: listRef.current.length,
155
- disabledIndices
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
- return index < 0 || index >= listRef.current.length;
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,"names":["getDocument","node","ownerDocument","document","contains","parent","child","rootNode","getRootNode","isShadowRoot","next","parentNode","host","ShadowRoot","getTarget","event","composedPath","target","activeElement","doc","el","shadowRoot","isHTMLElement","value","HTMLElement","isElement","Element","TYPEABLE_SELECTOR","isTypeableElement","element","matches","isTypeableCombobox","getAttribute","getPlatform","uaData","navigator","userAgentData","platform","getUserAgent","Array","isArray","brands","map","brand","version","join","userAgent","isSafari","test","vendor","isMac","toLowerCase","startsWith","maxTouchPoints","isJSDOM","includes","matchesFocusVisible","isMouseLikePointerType","pointerType","strict","values","push","clearTimeoutIfSet","timeoutRef","current","clearTimeout","stopEvent","preventDefault","stopPropagation","isVirtualClick","mozInputSource","isTrusted","isAndroid","type","buttons","detail","isVirtualPointerEvent","width","height","pressure","re","rafId","enqueueFocus","options","preventScroll","cancelPrevious","sync","cancelAnimationFrame","exec","focus","requestAnimationFrame","isListIndexDisabled","listRef","index","disabledIndices","hasAttribute","findNonDisabledListIndex","startingIndex","decrement","amount","length","getMinListIndex","getMaxListIndex","isIndexOutOfListBounds"],"sources":["../../../src/interactions/utils.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
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":";AAAA,SAAS,YAAY,MAAM;CACzB,OAAO,MAAM,iBAAiB;AAChC;AACA,SAAS,SAAS,QAAQ,OAAO;CAC/B,IAAI,CAAC,UAAU,CAAC,OAAO,OAAO;CAC9B,MAAM,WAAW,MAAM,cAAc;CACrC,IAAI,OAAO,SAAS,KAAK,GAAG,OAAO;CACnC,IAAI,YAAY,aAAa,QAAQ,GAAG;EACtC,IAAI,OAAO;EACX,OAAO,MAAM;GACX,IAAI,WAAW,MAAM,OAAO;GAC5B,OAAO,KAAK,cAAc,KAAK;EACjC;CACF;CACA,OAAO;AACT;AACA,SAAS,aAAa,MAAM;CAC1B,OAAO,gBAAgB;AACzB;AACA,SAAS,UAAU,OAAO;CACxB,IAAI,kBAAkB,OAAO;EAC3B,OAAO,MAAM,aAAa,CAAC,CAAC;CAC9B;CACA,OAAO,MAAM;AACf;AACA,SAAS,cAAc,KAAK;CAC1B,IAAI,KAAK,IAAI;CACb,OAAO,IAAI,YAAY,iBAAiB,MAAM;EAC5C,KAAK,GAAG,WAAW;CACrB;CACA,OAAO;AACT;AACA,SAAS,cAAc,OAAO;CAC5B,OAAO,iBAAiB;AAC1B;AACA,SAAS,UAAU,OAAO;CACxB,OAAO,iBAAiB;AAC1B;AACA,MAAM,oBAAoB;AAC1B,SAAS,kBAAkB,SAAS;CAClC,OAAO,cAAc,OAAO,KAAK,QAAQ,QAAQ,iBAAiB;AACpE;AACA,SAAS,mBAAmB,SAAS;CACnC,IAAI,CAAC,SAAS,OAAO;CACrB,OAAO,QAAQ,aAAa,MAAM,MAAM,cAAc,kBAAkB,OAAO;AACjF;AACA,SAAS,cAAc;CACrB,MAAM,SAAS,UAAU;CACzB,IAAI,QAAQ,UAAU,OAAO,OAAO;CACpC,OAAO,UAAU;AACnB;AACA,SAAS,eAAe;CACtB,MAAM,SAAS,UAAU;CACzB,IAAI,UAAU,MAAM,QAAQ,OAAO,MAAM,GAAG;EAC1C,OAAO,OAAO,OAAO,KAAK,EAAE,OAAO,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC,KAAK,GAAG;CAClF;CACA,OAAO,UAAU;AACnB;AACA,SAAS,WAAW;CAClB,OAAO,SAAS,KAAK,UAAU,MAAM;AACvC;AACA,SAAS,QAAQ;CACf,OAAO,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,WAAW,KAAK,KAAK,CAAC,UAAU;AACrE;AACA,SAAS,UAAU;CACjB,OAAO,aAAa,CAAC,CAAC,SAAS,QAAQ;AACzC;AACA,SAAS,oBAAoB,SAAS;CACpC,IAAI,CAAC,WAAW,QAAQ,GAAG,OAAO;CAClC,IAAI;EACF,OAAO,QAAQ,QAAQ,gBAAgB;CACzC,QAAQ;EACN,OAAO;CACT;AACF;AACA,SAAS,uBAAuB,aAAa,QAAQ;CACnD,MAAM,SAAS,CAAC,SAAS,KAAK;CAC9B,IAAI,CAAC,QAAQ;EACX,OAAO,KAAK,IAAI,KAAK,CAAC;CACxB;CACA,OAAO,OAAO,SAAS,WAAW;AACpC;AACA,SAAS,kBAAkB,YAAY;CACrC,IAAI,WAAW,YAAY,CAAC,GAAG;EAC7B,aAAa,WAAW,OAAO;EAC/B,WAAW,UAAU,CAAC;CACxB;AACF;AACA,SAAS,UAAU,OAAO;CACxB,MAAM,eAAe;CACrB,MAAM,gBAAgB;AACxB;AACA,SAAS,eAAe,OAAO;CAC7B,IAAI,MAAM,mBAAmB,KAAK,MAAM,WAAW,OAAO;CAC1D,IAAI,UAAU,KAAK,MAAM,aAAa;EACpC,OAAO,MAAM,SAAS,WAAW,MAAM,YAAY;CACrD;CACA,OAAO,MAAM,WAAW,KAAK,CAAC,MAAM;AACtC;AACA,SAAS,sBAAsB,OAAO;CACpC,IAAI,QAAQ,GAAG,OAAO;CACtB,OAAO,CAAC,UAAU,KAAK,MAAM,UAAU,KAAK,MAAM,WAAW,KAAK,UAAU,KAAK,MAAM,UAAU,KAAK,MAAM,WAAW,KAAK,MAAM,aAAa,KAAK,MAAM,WAAW,KAAK,MAAM,gBAAgB,WAAW,MAAM,QAAQ,KAAK,MAAM,SAAS,KAAK,MAAM,aAAa,KAAK,MAAM,WAAW,KAAK,MAAM,gBAAgB;AACxT;AACA,SAAS,YAAY;CACnB,MAAM,KAAK;CACX,OAAO,GAAG,KAAK,YAAY,CAAC,KAAK,GAAG,KAAK,aAAa,CAAC;AACzD;AACA,IAAI,QAAQ;AACZ,SAAS,aAAa,IAAI,UAAU,CAAC,GAAG;CACtC,MAAM,EAAE,gBAAgB,OAAO,iBAAiB,MAAM,OAAO,UAAU;CACvE,kBAAkB,qBAAqB,KAAK;CAC5C,MAAM,aAAa,IAAI,MAAM,EAAE,cAAc,CAAC;CAC9C,IAAI,MAAM;EACR,KAAK;CACP,OAAO;EACL,QAAQ,sBAAsB,IAAI;CACpC;AACF;AACA,SAAS,oBAAoB,SAAS,OAAO,iBAAiB;CAC5D,IAAI,OAAO,oBAAoB,YAAY,OAAO,gBAAgB,KAAK;CACvE,IAAI,iBAAiB,OAAO,gBAAgB,SAAS,KAAK;CAC1D,MAAM,UAAU,QAAQ,QAAQ;CAChC,OAAO,WAAW,QAAQ,QAAQ,aAAa,UAAU,KAAK,QAAQ,aAAa,eAAe,MAAM;AAC1G;AACA,SAAS,yBAAyB,SAAS,EACzC,gBAAgB,CAAC,GACjB,YAAY,OACZ,iBACA,SAAS,MACP,CAAC,GAAG;CACN,IAAI,QAAQ;CACZ,GAAG;EACD,SAAS,YAAY,CAAC,SAAS;CACjC,SAAS,SAAS,KAAK,SAAS,QAAQ,QAAQ,SAAS,KAAK,oBAAoB,SAAS,OAAO,eAAe;CACjH,OAAO;AACT;AACA,SAAS,gBAAgB,SAAS,iBAAiB;CACjD,OAAO,yBAAyB,SAAS,EAAE,gBAAgB,CAAC;AAC9D;AACA,SAAS,gBAAgB,SAAS,iBAAiB;CACjD,OAAO,yBAAyB,SAAS;EACvC,WAAW;EACX,eAAe,QAAQ,QAAQ;EAC/B;CACF,CAAC;AACH;AACA,SAAS,uBAAuB,SAAS,OAAO;CAC9C,OAAO,QAAQ,KAAK,SAAS,QAAQ,QAAQ;AAC/C"}
@@ -1,178 +1,156 @@
1
- function _instanceof(left, right) {
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
- }
8
1
  function getDocument(node) {
9
- return (node === null || node === void 0 ? void 0 : node.ownerDocument) || document;
2
+ return (node === null || node === void 0 ? void 0 : node.ownerDocument) || document;
10
3
  }
11
4
  function contains(parent, child) {
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;
5
+ var _child_getRootNode;
6
+ if (!parent || !child) return false;
7
+ var rootNode = (_child_getRootNode = child.getRootNode) === null || _child_getRootNode === void 0 ? void 0 : _child_getRootNode.call(child);
8
+ if (parent.contains(child)) return true;
9
+ if (rootNode && isShadowRoot(rootNode)) {
10
+ var next = child;
11
+ while (next) {
12
+ if (parent === next) return true;
13
+ next = next.parentNode || next.host;
14
+ }
15
+ }
16
+ return false;
24
17
  }
25
18
  function isShadowRoot(node) {
26
- return _instanceof(node, ShadowRoot);
19
+ return node instanceof ShadowRoot;
27
20
  }
28
21
  function getTarget(event) {
29
- if ("composedPath" in event) {
30
- return event.composedPath()[0];
31
- }
32
- return event.target;
22
+ if ("composedPath" in event) {
23
+ return event.composedPath()[0];
24
+ }
25
+ return event.target;
33
26
  }
34
27
  function activeElement(doc) {
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;
28
+ var _el_shadowRoot;
29
+ var el = doc.activeElement;
30
+ while ((el === null || el === void 0 ? void 0 : (_el_shadowRoot = el.shadowRoot) === null || _el_shadowRoot === void 0 ? void 0 : _el_shadowRoot.activeElement) != null) {
31
+ el = el.shadowRoot.activeElement;
32
+ }
33
+ return el;
41
34
  }
42
35
  function isHTMLElement(value) {
43
- return _instanceof(value, HTMLElement);
36
+ return value instanceof HTMLElement;
44
37
  }
45
38
  function isElement(value) {
46
- return _instanceof(value, Element);
39
+ return value instanceof Element;
47
40
  }
48
41
  var TYPEABLE_SELECTOR = "input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])";
49
42
  function isTypeableElement(element) {
50
- return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);
43
+ return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);
51
44
  }
52
45
  function isTypeableCombobox(element) {
53
- if (!element) return false;
54
- return element.getAttribute("role") === "combobox" && isTypeableElement(element);
46
+ if (!element) return false;
47
+ return element.getAttribute("role") === "combobox" && isTypeableElement(element);
55
48
  }
56
49
  function getPlatform() {
57
- var uaData = navigator.userAgentData;
58
- if (uaData === null || uaData === void 0 ? void 0 : uaData.platform) return uaData.platform;
59
- return navigator.platform;
50
+ var uaData = navigator.userAgentData;
51
+ if (uaData === null || uaData === void 0 ? void 0 : uaData.platform) return uaData.platform;
52
+ return navigator.platform;
60
53
  }
61
54
  function getUserAgent() {
62
- var uaData = navigator.userAgentData;
63
- if (uaData && Array.isArray(uaData.brands)) {
64
- return uaData.brands.map(function (param) {
65
- var {
66
- brand,
67
- version
68
- } = param;
69
- return `${brand}/${version}`;
70
- }).join(" ");
71
- }
72
- return navigator.userAgent;
55
+ var uaData = navigator.userAgentData;
56
+ if (uaData && Array.isArray(uaData.brands)) {
57
+ return uaData.brands.map(function(param) {
58
+ var { brand, version } = param;
59
+ return `${brand}/${version}`;
60
+ }).join(" ");
61
+ }
62
+ return navigator.userAgent;
73
63
  }
74
64
  function isSafari() {
75
- return /apple/i.test(navigator.vendor);
65
+ return /apple/i.test(navigator.vendor);
76
66
  }
77
67
  function isMac() {
78
- return getPlatform().toLowerCase().startsWith("mac") && !navigator.maxTouchPoints;
68
+ return getPlatform().toLowerCase().startsWith("mac") && !navigator.maxTouchPoints;
79
69
  }
80
70
  function isJSDOM() {
81
- return getUserAgent().includes("jsdom/");
71
+ return getUserAgent().includes("jsdom/");
82
72
  }
83
73
  function matchesFocusVisible(element) {
84
- if (!element || isJSDOM()) return true;
85
- try {
86
- return element.matches(":focus-visible");
87
- } catch (e) {
88
- return true;
89
- }
74
+ if (!element || isJSDOM()) return true;
75
+ try {
76
+ return element.matches(":focus-visible");
77
+ } catch (e) {
78
+ return true;
79
+ }
90
80
  }
91
81
  function isMouseLikePointerType(pointerType, strict) {
92
- var values = ["mouse", "pen"];
93
- if (!strict) {
94
- values.push("", void 0);
95
- }
96
- return values.includes(pointerType);
82
+ var values = ["mouse", "pen"];
83
+ if (!strict) {
84
+ values.push("", void 0);
85
+ }
86
+ return values.includes(pointerType);
97
87
  }
98
88
  function clearTimeoutIfSet(timeoutRef) {
99
- if (timeoutRef.current !== -1) {
100
- clearTimeout(timeoutRef.current);
101
- timeoutRef.current = -1;
102
- }
89
+ if (timeoutRef.current !== -1) {
90
+ clearTimeout(timeoutRef.current);
91
+ timeoutRef.current = -1;
92
+ }
103
93
  }
104
94
  function stopEvent(event) {
105
- event.preventDefault();
106
- event.stopPropagation();
95
+ event.preventDefault();
96
+ event.stopPropagation();
107
97
  }
108
98
  function isVirtualClick(event) {
109
- if (event.mozInputSource === 0 && event.isTrusted) return true;
110
- if (isAndroid() && event.pointerType) {
111
- return event.type === "click" && event.buttons === 1;
112
- }
113
- return event.detail === 0 && !event.pointerType;
99
+ if (event.mozInputSource === 0 && event.isTrusted) return true;
100
+ if (isAndroid() && event.pointerType) {
101
+ return event.type === "click" && event.buttons === 1;
102
+ }
103
+ return event.detail === 0 && !event.pointerType;
114
104
  }
115
105
  function isVirtualPointerEvent(event) {
116
- if (isJSDOM()) return false;
117
- 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
+ if (isJSDOM()) return false;
107
+ 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
108
  }
119
109
  function isAndroid() {
120
- var re = /android/i;
121
- return re.test(getPlatform()) || re.test(getUserAgent());
110
+ var re = /android/i;
111
+ return re.test(getPlatform()) || re.test(getUserAgent());
122
112
  }
123
113
  var rafId = 0;
124
114
  function enqueueFocus(el) {
125
- var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
126
- var {
127
- preventScroll = false,
128
- cancelPrevious = true,
129
- sync = false
130
- } = options;
131
- cancelPrevious && cancelAnimationFrame(rafId);
132
- var exec = function () {
133
- return el === null || el === void 0 ? void 0 : el.focus({
134
- preventScroll
135
- });
136
- };
137
- if (sync) {
138
- exec();
139
- } else {
140
- rafId = requestAnimationFrame(exec);
141
- }
115
+ var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
116
+ var { preventScroll = false, cancelPrevious = true, sync = false } = options;
117
+ cancelPrevious && cancelAnimationFrame(rafId);
118
+ var exec = function() {
119
+ return el === null || el === void 0 ? void 0 : el.focus({ preventScroll });
120
+ };
121
+ if (sync) {
122
+ exec();
123
+ } else {
124
+ rafId = requestAnimationFrame(exec);
125
+ }
142
126
  }
143
127
  function isListIndexDisabled(listRef, index, disabledIndices) {
144
- if (typeof disabledIndices === "function") return disabledIndices(index);
145
- if (disabledIndices) return disabledIndices.includes(index);
146
- var element = listRef.current[index];
147
- return element == null || element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true";
128
+ if (typeof disabledIndices === "function") return disabledIndices(index);
129
+ if (disabledIndices) return disabledIndices.includes(index);
130
+ var element = listRef.current[index];
131
+ return element == null || element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true";
148
132
  }
149
133
  function findNonDisabledListIndex(listRef) {
150
- var {
151
- startingIndex = -1,
152
- decrement = false,
153
- disabledIndices,
154
- amount = 1
155
- } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
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;
134
+ var { startingIndex = -1, decrement = false, disabledIndices, amount = 1 } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
135
+ var index = startingIndex;
136
+ do {
137
+ index += decrement ? -amount : amount;
138
+ } while (index >= 0 && index <= listRef.current.length - 1 && isListIndexDisabled(listRef, index, disabledIndices));
139
+ return index;
161
140
  }
162
141
  function getMinListIndex(listRef, disabledIndices) {
163
- return findNonDisabledListIndex(listRef, {
164
- disabledIndices
165
- });
142
+ return findNonDisabledListIndex(listRef, { disabledIndices });
166
143
  }
167
144
  function getMaxListIndex(listRef, disabledIndices) {
168
- return findNonDisabledListIndex(listRef, {
169
- decrement: true,
170
- startingIndex: listRef.current.length,
171
- disabledIndices
172
- });
145
+ return findNonDisabledListIndex(listRef, {
146
+ decrement: true,
147
+ startingIndex: listRef.current.length,
148
+ disabledIndices
149
+ });
173
150
  }
174
151
  function isIndexOutOfListBounds(listRef, index) {
175
- return index < 0 || index >= listRef.current.length;
152
+ return index < 0 || index >= listRef.current.length;
176
153
  }
154
+
177
155
  export { activeElement, clearTimeoutIfSet, contains, enqueueFocus, findNonDisabledListIndex, getDocument, getMaxListIndex, getMinListIndex, getTarget, isElement, isHTMLElement, isIndexOutOfListBounds, isListIndexDisabled, isMac, isMouseLikePointerType, isSafari, isTypeableCombobox, isTypeableElement, isVirtualClick, isVirtualPointerEvent, matchesFocusVisible, stopEvent };
178
156
  //# sourceMappingURL=utils.native.js.map