@tamagui/floating 2.0.0-rc.3 → 2.0.0-rc.31

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 (190) hide show
  1. package/dist/cjs/Floating.native.js +4 -0
  2. package/dist/cjs/Floating.native.js.map +1 -1
  3. package/dist/cjs/index.cjs +33 -2
  4. package/dist/cjs/index.native.js +33 -2
  5. package/dist/cjs/index.native.js.map +1 -1
  6. package/dist/cjs/interactions/PopupTriggerMap.cjs +40 -0
  7. package/dist/cjs/interactions/PopupTriggerMap.native.js +73 -0
  8. package/dist/cjs/interactions/PopupTriggerMap.native.js.map +1 -0
  9. package/dist/cjs/interactions/createFloatingEvents.cjs +41 -0
  10. package/dist/cjs/interactions/createFloatingEvents.native.js +47 -0
  11. package/dist/cjs/interactions/createFloatingEvents.native.js.map +1 -0
  12. package/dist/cjs/interactions/safePolygon.cjs +191 -0
  13. package/dist/cjs/interactions/safePolygon.native.js +205 -0
  14. package/dist/cjs/interactions/safePolygon.native.js.map +1 -0
  15. package/dist/cjs/interactions/types.cjs +16 -0
  16. package/dist/cjs/interactions/types.native.js +19 -0
  17. package/dist/cjs/interactions/types.native.js.map +1 -0
  18. package/dist/cjs/interactions/useClick.cjs +82 -0
  19. package/dist/cjs/interactions/useClick.native.js +90 -0
  20. package/dist/cjs/interactions/useClick.native.js.map +1 -0
  21. package/dist/cjs/interactions/useDelayGroup.cjs +96 -0
  22. package/dist/cjs/interactions/useDelayGroup.native.js +109 -0
  23. package/dist/cjs/interactions/useDelayGroup.native.js.map +1 -0
  24. package/dist/cjs/interactions/useFocus.cjs +101 -0
  25. package/dist/cjs/interactions/useFocus.native.js +113 -0
  26. package/dist/cjs/interactions/useFocus.native.js.map +1 -0
  27. package/dist/cjs/interactions/useHover.cjs +224 -0
  28. package/dist/cjs/interactions/useHover.native.js +248 -0
  29. package/dist/cjs/interactions/useHover.native.js.map +1 -0
  30. package/dist/cjs/interactions/useInnerOffset.cjs +104 -0
  31. package/dist/cjs/interactions/useInnerOffset.native.js +118 -0
  32. package/dist/cjs/interactions/useInnerOffset.native.js.map +1 -0
  33. package/dist/cjs/interactions/useInteractions.cjs +76 -0
  34. package/dist/cjs/interactions/useInteractions.native.js +164 -0
  35. package/dist/cjs/interactions/useInteractions.native.js.map +1 -0
  36. package/dist/cjs/interactions/useListNavigation.cjs +253 -0
  37. package/dist/cjs/interactions/useListNavigation.native.js +297 -0
  38. package/dist/cjs/interactions/useListNavigation.native.js.map +1 -0
  39. package/dist/cjs/interactions/useRole.cjs +112 -0
  40. package/dist/cjs/interactions/useRole.native.js +128 -0
  41. package/dist/cjs/interactions/useRole.native.js.map +1 -0
  42. package/dist/cjs/interactions/useTypeahead.cjs +93 -0
  43. package/dist/cjs/interactions/useTypeahead.native.js +114 -0
  44. package/dist/cjs/interactions/useTypeahead.native.js.map +1 -0
  45. package/dist/cjs/interactions/utils.cjs +178 -0
  46. package/dist/cjs/interactions/utils.native.js +188 -0
  47. package/dist/cjs/interactions/utils.native.js.map +1 -0
  48. package/dist/cjs/middleware/inner.cjs +106 -0
  49. package/dist/cjs/middleware/inner.native.js +120 -0
  50. package/dist/cjs/middleware/inner.native.js.map +1 -0
  51. package/dist/cjs/useFloating.cjs +21 -17
  52. package/dist/cjs/useFloating.native.js +2 -0
  53. package/dist/cjs/useFloating.native.js.map +1 -1
  54. package/dist/esm/Floating.native.js +4 -1
  55. package/dist/esm/Floating.native.js.map +1 -1
  56. package/dist/esm/index.js +17 -34
  57. package/dist/esm/index.js.map +1 -6
  58. package/dist/esm/index.mjs +16 -2
  59. package/dist/esm/index.mjs.map +1 -1
  60. package/dist/esm/index.native.js +16 -2
  61. package/dist/esm/index.native.js.map +1 -1
  62. package/dist/esm/interactions/PopupTriggerMap.mjs +17 -0
  63. package/dist/esm/interactions/PopupTriggerMap.mjs.map +1 -0
  64. package/dist/esm/interactions/PopupTriggerMap.native.js +47 -0
  65. package/dist/esm/interactions/PopupTriggerMap.native.js.map +1 -0
  66. package/dist/esm/interactions/createFloatingEvents.mjs +18 -0
  67. package/dist/esm/interactions/createFloatingEvents.mjs.map +1 -0
  68. package/dist/esm/interactions/createFloatingEvents.native.js +21 -0
  69. package/dist/esm/interactions/createFloatingEvents.native.js.map +1 -0
  70. package/dist/esm/interactions/safePolygon.mjs +168 -0
  71. package/dist/esm/interactions/safePolygon.mjs.map +1 -0
  72. package/dist/esm/interactions/safePolygon.native.js +179 -0
  73. package/dist/esm/interactions/safePolygon.native.js.map +1 -0
  74. package/dist/esm/interactions/types.mjs +2 -0
  75. package/dist/esm/interactions/types.mjs.map +1 -0
  76. package/dist/esm/interactions/types.native.js +2 -0
  77. package/dist/esm/interactions/types.native.js.map +1 -0
  78. package/dist/esm/interactions/useClick.mjs +59 -0
  79. package/dist/esm/interactions/useClick.mjs.map +1 -0
  80. package/dist/esm/interactions/useClick.native.js +64 -0
  81. package/dist/esm/interactions/useClick.native.js.map +1 -0
  82. package/dist/esm/interactions/useDelayGroup.mjs +60 -0
  83. package/dist/esm/interactions/useDelayGroup.mjs.map +1 -0
  84. package/dist/esm/interactions/useDelayGroup.native.js +70 -0
  85. package/dist/esm/interactions/useDelayGroup.native.js.map +1 -0
  86. package/dist/esm/interactions/useFocus.mjs +78 -0
  87. package/dist/esm/interactions/useFocus.mjs.map +1 -0
  88. package/dist/esm/interactions/useFocus.native.js +87 -0
  89. package/dist/esm/interactions/useFocus.native.js.map +1 -0
  90. package/dist/esm/interactions/useHover.mjs +189 -0
  91. package/dist/esm/interactions/useHover.mjs.map +1 -0
  92. package/dist/esm/interactions/useHover.native.js +210 -0
  93. package/dist/esm/interactions/useHover.native.js.map +1 -0
  94. package/dist/esm/interactions/useInnerOffset.mjs +70 -0
  95. package/dist/esm/interactions/useInnerOffset.mjs.map +1 -0
  96. package/dist/esm/interactions/useInnerOffset.native.js +81 -0
  97. package/dist/esm/interactions/useInnerOffset.native.js.map +1 -0
  98. package/dist/esm/interactions/useInteractions.mjs +53 -0
  99. package/dist/esm/interactions/useInteractions.mjs.map +1 -0
  100. package/dist/esm/interactions/useInteractions.native.js +138 -0
  101. package/dist/esm/interactions/useInteractions.native.js.map +1 -0
  102. package/dist/esm/interactions/useListNavigation.mjs +230 -0
  103. package/dist/esm/interactions/useListNavigation.mjs.map +1 -0
  104. package/dist/esm/interactions/useListNavigation.native.js +271 -0
  105. package/dist/esm/interactions/useListNavigation.native.js.map +1 -0
  106. package/dist/esm/interactions/useRole.mjs +78 -0
  107. package/dist/esm/interactions/useRole.mjs.map +1 -0
  108. package/dist/esm/interactions/useRole.native.js +91 -0
  109. package/dist/esm/interactions/useRole.native.js.map +1 -0
  110. package/dist/esm/interactions/useTypeahead.mjs +70 -0
  111. package/dist/esm/interactions/useTypeahead.mjs.map +1 -0
  112. package/dist/esm/interactions/useTypeahead.native.js +88 -0
  113. package/dist/esm/interactions/useTypeahead.native.js.map +1 -0
  114. package/dist/esm/interactions/utils.mjs +134 -0
  115. package/dist/esm/interactions/utils.mjs.map +1 -0
  116. package/dist/esm/interactions/utils.native.js +141 -0
  117. package/dist/esm/interactions/utils.native.js.map +1 -0
  118. package/dist/esm/middleware/inner.mjs +72 -0
  119. package/dist/esm/middleware/inner.mjs.map +1 -0
  120. package/dist/esm/middleware/inner.native.js +83 -0
  121. package/dist/esm/middleware/inner.native.js.map +1 -0
  122. package/dist/esm/useFloating.mjs +21 -17
  123. package/dist/esm/useFloating.mjs.map +1 -1
  124. package/dist/esm/useFloating.native.js +2 -0
  125. package/dist/esm/useFloating.native.js.map +1 -1
  126. package/package.json +8 -10
  127. package/src/Floating.native.tsx +1 -0
  128. package/src/index.ts +49 -0
  129. package/src/interactions/PopupTriggerMap.ts +30 -0
  130. package/src/interactions/createFloatingEvents.ts +34 -0
  131. package/src/interactions/safePolygon.ts +500 -0
  132. package/src/interactions/types.ts +165 -0
  133. package/src/interactions/useClick.ts +148 -0
  134. package/src/interactions/useDelayGroup.ts +114 -0
  135. package/src/interactions/useFocus.ts +164 -0
  136. package/src/interactions/useHover.ts +453 -0
  137. package/src/interactions/useInnerOffset.ts +116 -0
  138. package/src/interactions/useInteractions.ts +101 -0
  139. package/src/interactions/useListNavigation.ts +578 -0
  140. package/src/interactions/useRole.ts +103 -0
  141. package/src/interactions/useTypeahead.ts +173 -0
  142. package/src/interactions/utils.ts +234 -0
  143. package/src/middleware/inner.ts +142 -0
  144. package/src/useFloating.tsx +13 -1
  145. package/types/Floating.native.d.ts +1 -0
  146. package/types/Floating.native.d.ts.map +1 -1
  147. package/types/index.d.ts +17 -2
  148. package/types/index.d.ts.map +1 -1
  149. package/types/interactions/PopupTriggerMap.d.ts +8 -0
  150. package/types/interactions/PopupTriggerMap.d.ts.map +1 -0
  151. package/types/interactions/createFloatingEvents.d.ts +7 -0
  152. package/types/interactions/createFloatingEvents.d.ts.map +1 -0
  153. package/types/interactions/safePolygon.d.ts +4 -0
  154. package/types/interactions/safePolygon.d.ts.map +1 -0
  155. package/types/interactions/types.d.ts +123 -0
  156. package/types/interactions/types.d.ts.map +1 -0
  157. package/types/interactions/useClick.d.ts +3 -0
  158. package/types/interactions/useClick.d.ts.map +1 -0
  159. package/types/interactions/useDelayGroup.d.ts +23 -0
  160. package/types/interactions/useDelayGroup.d.ts.map +1 -0
  161. package/types/interactions/useFocus.d.ts +3 -0
  162. package/types/interactions/useFocus.d.ts.map +1 -0
  163. package/types/interactions/useHover.d.ts +6 -0
  164. package/types/interactions/useHover.d.ts.map +1 -0
  165. package/types/interactions/useInnerOffset.d.ts +3 -0
  166. package/types/interactions/useInnerOffset.d.ts.map +1 -0
  167. package/types/interactions/useInteractions.d.ts +8 -0
  168. package/types/interactions/useInteractions.d.ts.map +1 -0
  169. package/types/interactions/useListNavigation.d.ts +3 -0
  170. package/types/interactions/useListNavigation.d.ts.map +1 -0
  171. package/types/interactions/useRole.d.ts +3 -0
  172. package/types/interactions/useRole.d.ts.map +1 -0
  173. package/types/interactions/useTypeahead.d.ts +3 -0
  174. package/types/interactions/useTypeahead.d.ts.map +1 -0
  175. package/types/interactions/utils.d.ts +46 -0
  176. package/types/interactions/utils.d.ts.map +1 -0
  177. package/types/middleware/inner.d.ts +14 -0
  178. package/types/middleware/inner.d.ts.map +1 -0
  179. package/types/useFloating.d.ts +7 -1
  180. package/types/useFloating.d.ts.map +1 -1
  181. package/dist/cjs/Floating.js +0 -15
  182. package/dist/cjs/Floating.js.map +0 -6
  183. package/dist/cjs/index.js +0 -34
  184. package/dist/cjs/index.js.map +0 -6
  185. package/dist/cjs/useFloating.js +0 -46
  186. package/dist/cjs/useFloating.js.map +0 -6
  187. package/dist/esm/Floating.js +0 -2
  188. package/dist/esm/Floating.js.map +0 -6
  189. package/dist/esm/useFloating.js +0 -23
  190. package/dist/esm/useFloating.js.map +0 -6
@@ -0,0 +1,297 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: !0
11
+ });
12
+ },
13
+ __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
15
+ get: () => from[key],
16
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
17
+ });
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: !0
22
+ }), mod);
23
+ var useListNavigation_exports = {};
24
+ __export(useListNavigation_exports, {
25
+ useListNavigation: () => useListNavigation
26
+ });
27
+ module.exports = __toCommonJS(useListNavigation_exports);
28
+ var import_react = require("react"),
29
+ import_use_event = require("@tamagui/use-event"),
30
+ import_utils = require("./utils.native.js"),
31
+ ARROW_UP = "ArrowUp",
32
+ ARROW_DOWN = "ArrowDown",
33
+ ARROW_LEFT = "ArrowLeft",
34
+ ARROW_RIGHT = "ArrowRight";
35
+ function doSwitch(orientation, vertical, horizontal) {
36
+ switch (orientation) {
37
+ case "vertical":
38
+ return vertical;
39
+ case "horizontal":
40
+ return horizontal;
41
+ default:
42
+ return vertical || horizontal;
43
+ }
44
+ }
45
+ function isMainOrientationKey(key, orientation) {
46
+ var vertical = key === ARROW_UP || key === ARROW_DOWN,
47
+ horizontal = key === ARROW_LEFT || key === ARROW_RIGHT;
48
+ return doSwitch(orientation, vertical, horizontal);
49
+ }
50
+ function isMainOrientationToEndKey(key, orientation, rtl) {
51
+ var vertical = key === ARROW_DOWN,
52
+ horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;
53
+ return doSwitch(orientation, vertical, horizontal) || key === "Enter" || key === " " || key === "";
54
+ }
55
+ function isCrossOrientationOpenKey(key, orientation, rtl) {
56
+ var vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT,
57
+ horizontal = key === ARROW_DOWN;
58
+ return doSwitch(orientation, vertical, horizontal);
59
+ }
60
+ function isCrossOrientationCloseKey(key, orientation, rtl) {
61
+ var vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT,
62
+ horizontal = key === ARROW_UP;
63
+ return doSwitch(orientation, vertical, horizontal);
64
+ }
65
+ function useListNavigation(context, props) {
66
+ var {
67
+ open,
68
+ onOpenChange,
69
+ elements
70
+ } = context,
71
+ {
72
+ listRef,
73
+ activeIndex,
74
+ onNavigate: unstable_onNavigate = function () {},
75
+ enabled = !0,
76
+ selectedIndex = null,
77
+ allowEscape = !1,
78
+ loop = !1,
79
+ nested = !1,
80
+ rtl = !1,
81
+ virtual = !1,
82
+ focusItemOnOpen = "auto",
83
+ focusItemOnHover = !0,
84
+ openOnArrowKeyDown = !0,
85
+ disabledIndices = void 0,
86
+ orientation = "vertical",
87
+ scrollItemIntoView = !0
88
+ } = props,
89
+ typeableComboboxReference = (0, import_utils.isTypeableCombobox)(elements.domReference),
90
+ focusItemOnOpenRef = (0, import_react.useRef)(focusItemOnOpen),
91
+ indexRef = (0, import_react.useRef)(selectedIndex ?? -1),
92
+ keyRef = (0, import_react.useRef)(null),
93
+ isPointerModalityRef = (0, import_react.useRef)(!0),
94
+ previousMountedRef = (0, import_react.useRef)(!!elements.floating),
95
+ previousOpenRef = (0, import_react.useRef)(open),
96
+ forceSyncFocusRef = (0, import_react.useRef)(!1),
97
+ forceScrollIntoViewRef = (0, import_react.useRef)(!1),
98
+ disabledIndicesRef = (0, import_react.useRef)(disabledIndices);
99
+ disabledIndicesRef.current = disabledIndices;
100
+ var latestOpenRef = (0, import_react.useRef)(open);
101
+ latestOpenRef.current = open;
102
+ var scrollItemIntoViewRef = (0, import_react.useRef)(scrollItemIntoView);
103
+ scrollItemIntoViewRef.current = scrollItemIntoView;
104
+ var selectedIndexRef = (0, import_react.useRef)(selectedIndex);
105
+ selectedIndexRef.current = selectedIndex;
106
+ var stableOnNavigate = (0, import_use_event.useEvent)(unstable_onNavigate),
107
+ [activeId, setActiveId] = (0, import_react.useState)(),
108
+ onNavigate = (0, import_use_event.useEvent)(function () {
109
+ stableOnNavigate(indexRef.current === -1 ? null : indexRef.current);
110
+ }),
111
+ previousOnNavigateRef = (0, import_react.useRef)(onNavigate),
112
+ focusItem = (0, import_use_event.useEvent)(function () {
113
+ function runFocus(item2) {
114
+ virtual ? setActiveId(item2.id) : (0, import_utils.enqueueFocus)(item2, {
115
+ sync: forceSyncFocusRef.current,
116
+ preventScroll: !0
117
+ });
118
+ }
119
+ var initialItem = listRef.current[indexRef.current],
120
+ forceScrollIntoView = forceScrollIntoViewRef.current;
121
+ initialItem && runFocus(initialItem);
122
+ var scheduler = forceSyncFocusRef.current ? function (v) {
123
+ return v();
124
+ } : requestAnimationFrame;
125
+ scheduler(function () {
126
+ var waitedItem = listRef.current[indexRef.current] || initialItem;
127
+ if (waitedItem) {
128
+ initialItem || runFocus(waitedItem);
129
+ var scrollIntoViewOptions = scrollItemIntoViewRef.current,
130
+ shouldScrollIntoView = scrollIntoViewOptions && waitedItem && (forceScrollIntoView || !isPointerModalityRef.current);
131
+ if (shouldScrollIntoView) {
132
+ var _waitedItem_scrollIntoView;
133
+ (_waitedItem_scrollIntoView = waitedItem.scrollIntoView) === null || _waitedItem_scrollIntoView === void 0 || _waitedItem_scrollIntoView.call(waitedItem, typeof scrollIntoViewOptions == "boolean" ? {
134
+ block: "nearest",
135
+ inline: "nearest"
136
+ } : scrollIntoViewOptions);
137
+ }
138
+ }
139
+ });
140
+ });
141
+ (0, import_react.useLayoutEffect)(function () {
142
+ enabled && (open && elements.floating ? focusItemOnOpenRef.current && selectedIndex != null && (forceScrollIntoViewRef.current = !0, indexRef.current = selectedIndex, onNavigate()) : previousMountedRef.current && (indexRef.current = -1, previousOnNavigateRef.current()));
143
+ }, [enabled, open, elements.floating, selectedIndex, onNavigate]), (0, import_react.useLayoutEffect)(function () {
144
+ if (enabled && open && elements.floating) if (activeIndex == null) {
145
+ if (forceSyncFocusRef.current = !1, selectedIndexRef.current != null) return;
146
+ if (previousMountedRef.current && (indexRef.current = -1, focusItem()), (!previousOpenRef.current || !previousMountedRef.current) && focusItemOnOpenRef.current && (keyRef.current != null || focusItemOnOpenRef.current === !0 && keyRef.current == null)) {
147
+ var runs = 0,
148
+ waitForListPopulated = function () {
149
+ if (listRef.current[0] == null) {
150
+ if (runs < 2) {
151
+ var scheduler = runs ? requestAnimationFrame : queueMicrotask;
152
+ scheduler(waitForListPopulated);
153
+ }
154
+ runs++;
155
+ } else indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, orientation, rtl) || nested ? (0, import_utils.getMinListIndex)(listRef, disabledIndicesRef.current) : (0, import_utils.getMaxListIndex)(listRef, disabledIndicesRef.current), keyRef.current = null, onNavigate();
156
+ };
157
+ waitForListPopulated();
158
+ }
159
+ } else (0, import_utils.isIndexOutOfListBounds)(listRef, activeIndex) || (indexRef.current = activeIndex, focusItem(), forceScrollIntoViewRef.current = !1);
160
+ }, [enabled, open, elements.floating, activeIndex, selectedIndexRef, nested, listRef, orientation, rtl, onNavigate, focusItem, disabledIndicesRef]), (0, import_react.useLayoutEffect)(function () {
161
+ previousOnNavigateRef.current = onNavigate, previousOpenRef.current = open, previousMountedRef.current = !!elements.floating;
162
+ }), (0, import_react.useLayoutEffect)(function () {
163
+ open || (keyRef.current = null, focusItemOnOpenRef.current = focusItemOnOpen);
164
+ }, [open, focusItemOnOpen]);
165
+ var hasActiveIndex = activeIndex != null,
166
+ commonOnKeyDown = (0, import_use_event.useEvent)(function (event) {
167
+ if (isPointerModalityRef.current = !1, forceSyncFocusRef.current = !0, event.which !== 229 && !(!latestOpenRef.current && event.currentTarget === elements.floating)) {
168
+ if (nested && isCrossOrientationCloseKey(event.key, orientation, rtl)) {
169
+ (0, import_utils.stopEvent)(event), onOpenChange(!1, event.nativeEvent, "list-navigation"), (0, import_utils.isHTMLElement)(elements.domReference) && elements.domReference.focus();
170
+ return;
171
+ }
172
+ var currentIndex = indexRef.current,
173
+ minIndex = (0, import_utils.getMinListIndex)(listRef, disabledIndices),
174
+ maxIndex = (0, import_utils.getMaxListIndex)(listRef, disabledIndices);
175
+ if (typeableComboboxReference || (event.key === "Home" && ((0, import_utils.stopEvent)(event), indexRef.current = minIndex, onNavigate()), event.key === "End" && ((0, import_utils.stopEvent)(event), indexRef.current = maxIndex, onNavigate())), isMainOrientationKey(event.key, orientation)) {
176
+ if ((0, import_utils.stopEvent)(event), open && !virtual && (0, import_utils.activeElement)(event.currentTarget.ownerDocument) === event.currentTarget) {
177
+ indexRef.current = isMainOrientationToEndKey(event.key, orientation, rtl) ? minIndex : maxIndex, onNavigate();
178
+ return;
179
+ }
180
+ isMainOrientationToEndKey(event.key, orientation, rtl) ? loop ? indexRef.current = currentIndex >= maxIndex ? allowEscape && currentIndex !== listRef.current.length ? -1 : minIndex : (0, import_utils.findNonDisabledListIndex)(listRef, {
181
+ startingIndex: currentIndex,
182
+ disabledIndices
183
+ }) : indexRef.current = Math.min(maxIndex, (0, import_utils.findNonDisabledListIndex)(listRef, {
184
+ startingIndex: currentIndex,
185
+ disabledIndices
186
+ })) : loop ? indexRef.current = currentIndex <= minIndex ? allowEscape && currentIndex !== -1 ? listRef.current.length : maxIndex : (0, import_utils.findNonDisabledListIndex)(listRef, {
187
+ startingIndex: currentIndex,
188
+ decrement: !0,
189
+ disabledIndices
190
+ }) : indexRef.current = Math.max(minIndex, (0, import_utils.findNonDisabledListIndex)(listRef, {
191
+ startingIndex: currentIndex,
192
+ decrement: !0,
193
+ disabledIndices
194
+ })), (0, import_utils.isIndexOutOfListBounds)(listRef, indexRef.current) && (indexRef.current = -1), onNavigate();
195
+ }
196
+ }
197
+ }),
198
+ ariaActiveDescendantProp = (0, import_react.useMemo)(function () {
199
+ return virtual && open && hasActiveIndex && {
200
+ "aria-activedescendant": activeId
201
+ };
202
+ }, [virtual, open, hasActiveIndex, activeId]),
203
+ floating = (0, import_react.useMemo)(function () {
204
+ return {
205
+ "aria-orientation": orientation === "both" ? void 0 : orientation,
206
+ ...(typeableComboboxReference ? {} : ariaActiveDescendantProp),
207
+ onKeyDown: commonOnKeyDown,
208
+ onPointerMove() {
209
+ isPointerModalityRef.current = !0;
210
+ }
211
+ };
212
+ }, [ariaActiveDescendantProp, commonOnKeyDown, orientation, typeableComboboxReference]),
213
+ reference = (0, import_react.useMemo)(function () {
214
+ function checkVirtualMouse(event) {
215
+ focusItemOnOpen === "auto" && (0, import_utils.isVirtualClick)(event.nativeEvent) && (focusItemOnOpenRef.current = !0);
216
+ }
217
+ function checkVirtualPointer(event) {
218
+ focusItemOnOpenRef.current = focusItemOnOpen, focusItemOnOpen === "auto" && (0, import_utils.isVirtualPointerEvent)(event.nativeEvent) && (focusItemOnOpenRef.current = !0);
219
+ }
220
+ return {
221
+ ...ariaActiveDescendantProp,
222
+ onKeyDown(event) {
223
+ isPointerModalityRef.current = !1;
224
+ var isArrowKey = event.key.startsWith("Arrow"),
225
+ isCrossOpenKey = isCrossOrientationOpenKey(event.key, orientation, rtl),
226
+ isMainKey = isMainOrientationKey(event.key, orientation),
227
+ isNavigationKey = (nested ? isCrossOpenKey : isMainKey) || event.key === "Enter" || event.key.trim() === "";
228
+ if (virtual && open) return commonOnKeyDown(event);
229
+ if (!(!open && !openOnArrowKeyDown && isArrowKey)) {
230
+ if (isNavigationKey && (keyRef.current = event.key), nested) {
231
+ isCrossOpenKey && ((0, import_utils.stopEvent)(event), open ? (indexRef.current = (0, import_utils.getMinListIndex)(listRef, disabledIndicesRef.current), onNavigate()) : onOpenChange(!0, event.nativeEvent, "list-navigation"));
232
+ return;
233
+ }
234
+ isMainKey && (selectedIndex != null && (indexRef.current = selectedIndex), (0, import_utils.stopEvent)(event), !open && openOnArrowKeyDown ? onOpenChange(!0, event.nativeEvent, "list-navigation") : commonOnKeyDown(event), open && onNavigate());
235
+ }
236
+ },
237
+ onFocus() {
238
+ open && !virtual && (indexRef.current = -1, onNavigate());
239
+ },
240
+ onPointerDown: checkVirtualPointer,
241
+ onPointerEnter: checkVirtualPointer,
242
+ onMouseDown: checkVirtualMouse,
243
+ onClick: checkVirtualMouse
244
+ };
245
+ }, [ariaActiveDescendantProp, commonOnKeyDown, disabledIndicesRef, focusItemOnOpen, listRef, nested, onNavigate, onOpenChange, open, openOnArrowKeyDown, orientation, rtl, selectedIndex, virtual]),
246
+ item = (0, import_react.useMemo)(function () {
247
+ function syncCurrentTarget(currentTarget) {
248
+ if (latestOpenRef.current) {
249
+ var index = listRef.current.indexOf(currentTarget);
250
+ index !== -1 && indexRef.current !== index && (indexRef.current = index, onNavigate());
251
+ }
252
+ }
253
+ var itemProps = {
254
+ onFocus(param) {
255
+ var {
256
+ currentTarget
257
+ } = param;
258
+ forceSyncFocusRef.current = !0, syncCurrentTarget(currentTarget);
259
+ },
260
+ onClick: function (param) {
261
+ var {
262
+ currentTarget
263
+ } = param;
264
+ return currentTarget.focus({
265
+ preventScroll: !0
266
+ });
267
+ },
268
+ // safari
269
+ onMouseMove(param) {
270
+ var {
271
+ currentTarget
272
+ } = param;
273
+ forceSyncFocusRef.current = !0, forceScrollIntoViewRef.current = !1, focusItemOnHover && syncCurrentTarget(currentTarget);
274
+ },
275
+ onPointerLeave(param) {
276
+ var {
277
+ pointerType
278
+ } = param;
279
+ if (!(!isPointerModalityRef.current || pointerType === "touch") && (forceSyncFocusRef.current = !0, !!focusItemOnHover && (indexRef.current = -1, onNavigate(), !virtual))) {
280
+ var _elements_floating;
281
+ (_elements_floating = elements.floating) === null || _elements_floating === void 0 || _elements_floating.focus({
282
+ preventScroll: !0
283
+ });
284
+ }
285
+ }
286
+ };
287
+ return itemProps;
288
+ }, [latestOpenRef, focusItemOnHover, listRef, onNavigate, virtual, elements.floating]);
289
+ return (0, import_react.useMemo)(function () {
290
+ return enabled ? {
291
+ reference,
292
+ floating,
293
+ item
294
+ } : {};
295
+ }, [enabled, reference, floating, item]);
296
+ }
297
+ //# sourceMappingURL=useListNavigation.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","useListNavigation_exports","__export","useListNavigation","module","exports","import_react","require","import_use_event","import_utils","ARROW_UP","ARROW_DOWN","ARROW_LEFT","ARROW_RIGHT","doSwitch","orientation","vertical","horizontal","isMainOrientationKey","key","isMainOrientationToEndKey","rtl","isCrossOrientationOpenKey","isCrossOrientationCloseKey","context","props","open","onOpenChange","elements","listRef","activeIndex","onNavigate","unstable_onNavigate","enabled","selectedIndex","allowEscape","loop","nested","virtual","focusItemOnOpen","focusItemOnHover","openOnArrowKeyDown","disabledIndices","scrollItemIntoView","typeableComboboxReference","isTypeableCombobox","domReference","focusItemOnOpenRef","useRef","indexRef","keyRef","isPointerModalityRef","previousMountedRef","floating","previousOpenRef","forceSyncFocusRef","forceScrollIntoViewRef","disabledIndicesRef","current","latestOpenRef","scrollItemIntoViewRef","selectedIndexRef","stableOnNavigate","useEvent","activeId","setActiveId","useState","previousOnNavigateRef","focusItem","runFocus","item2","id","enqueueFocus","sync","preventScroll","initialItem","forceScrollIntoView","scheduler","v","requestAnimationFrame","waitedItem","scrollIntoViewOptions","shouldScrollIntoView","_waitedItem_scrollIntoView","scrollIntoView","call","block","inline","useLayoutEffect","runs","waitForListPopulated","queueMicrotask","getMinListIndex","getMaxListIndex","isIndexOutOfListBounds","hasActiveIndex","commonOnKeyDown","event","which","currentTarget","stopEvent","nativeEvent","isHTMLElement","focus","currentIndex","minIndex","maxIndex","activeElement","ownerDocument","length","findNonDisabledListIndex","startingIndex","Math","min","decrement","max","ariaActiveDescendantProp","useMemo","onKeyDown","onPointerMove","reference","checkVirtualMouse","isVirtualClick","checkVirtualPointer","isVirtualPointerEvent","isArrowKey","startsWith","isCrossOpenKey","isMainKey","isNavigationKey","trim","onFocus","onPointerDown","onPointerEnter","onMouseDown","onClick","item","syncCurrentTarget","index","indexOf"],"sources":["../../../src/interactions/useListNavigation.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,112 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf,
6
+ __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: !0
11
+ });
12
+ },
13
+ __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
15
+ get: () => from[key],
16
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
17
+ });
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
26
+ value: mod,
27
+ enumerable: !0
28
+ }) : target, mod)),
29
+ __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
30
+ value: !0
31
+ }), mod);
32
+ var useRole_exports = {};
33
+ __export(useRole_exports, {
34
+ useRole: () => useRole
35
+ });
36
+ module.exports = __toCommonJS(useRole_exports);
37
+ var React = __toESM(require("react"), 1);
38
+ const componentRoleToAriaRoleMap = /* @__PURE__ */new Map([["select", "listbox"], ["combobox", "listbox"], ["label", !1]]);
39
+ let idCounter = 0;
40
+ function useRole(context, props = {}) {
41
+ const {
42
+ open,
43
+ elements
44
+ } = context,
45
+ {
46
+ enabled = !0,
47
+ role = "dialog"
48
+ } = props,
49
+ defaultReferenceId = React.useId(),
50
+ referenceId = elements.domReference?.id || defaultReferenceId,
51
+ defaultFloatingId = React.useMemo(() => `floating-${idCounter++}`, []),
52
+ floatingId = React.useMemo(() => elements.floating?.id || defaultFloatingId, [elements.floating, defaultFloatingId]),
53
+ ariaRole = componentRoleToAriaRoleMap.get(role) ?? role,
54
+ reference = React.useMemo(() => ariaRole === "tooltip" || role === "label" ? {
55
+ [`aria-${role === "label" ? "labelledby" : "describedby"}`]: open ? floatingId : void 0
56
+ } : {
57
+ "aria-expanded": open ? "true" : "false",
58
+ "aria-haspopup": ariaRole === "alertdialog" ? "dialog" : ariaRole,
59
+ "aria-controls": open ? floatingId : void 0,
60
+ ...(ariaRole === "listbox" && {
61
+ role: "combobox"
62
+ }),
63
+ ...(ariaRole === "menu" && {
64
+ id: referenceId
65
+ }),
66
+ ...(role === "select" && {
67
+ "aria-autocomplete": "none"
68
+ }),
69
+ ...(role === "combobox" && {
70
+ "aria-autocomplete": "list"
71
+ })
72
+ }, [ariaRole, floatingId, open, referenceId, role]),
73
+ floating = React.useMemo(() => {
74
+ const floatingProps = {
75
+ id: floatingId,
76
+ ...(ariaRole && {
77
+ role: ariaRole
78
+ })
79
+ };
80
+ return ariaRole === "tooltip" || role === "label" ? floatingProps : {
81
+ ...floatingProps,
82
+ ...(ariaRole === "menu" && {
83
+ "aria-labelledby": referenceId
84
+ })
85
+ };
86
+ }, [ariaRole, floatingId, referenceId, role]),
87
+ item = React.useCallback(({
88
+ active,
89
+ selected
90
+ }) => {
91
+ const commonProps = {
92
+ role: "option",
93
+ ...(active && {
94
+ id: `${floatingId}-fui-option`
95
+ })
96
+ };
97
+ switch (role) {
98
+ case "select":
99
+ case "combobox":
100
+ return {
101
+ ...commonProps,
102
+ "aria-selected": selected
103
+ };
104
+ }
105
+ return {};
106
+ }, [floatingId, role]);
107
+ return React.useMemo(() => enabled ? {
108
+ reference,
109
+ floating,
110
+ item
111
+ } : {}, [enabled, reference, floating, item]);
112
+ }
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf,
8
+ __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all) __defProp(target, name, {
11
+ get: all[name],
12
+ enumerable: !0
13
+ });
14
+ },
15
+ __copyProps = (to, from, except, desc) => {
16
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
17
+ get: () => from[key],
18
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
19
+ });
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
+ // If the importer is in node compatibility mode or this is not an ESM
24
+ // file that has been converted to a CommonJS file using a Babel-
25
+ // compatible transform (i.e. "__esModule" has not been set), then set
26
+ // "default" to the CommonJS "module.exports" for node compatibility.
27
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
28
+ value: mod,
29
+ enumerable: !0
30
+ }) : target, mod)),
31
+ __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
32
+ value: !0
33
+ }), mod);
34
+ var useRole_exports = {};
35
+ __export(useRole_exports, {
36
+ useRole: () => useRole
37
+ });
38
+ module.exports = __toCommonJS(useRole_exports);
39
+ var React = __toESM(require("react"), 1),
40
+ componentRoleToAriaRoleMap = /* @__PURE__ */new Map([["select", "listbox"], ["combobox", "listbox"], ["label", !1]]),
41
+ idCounter = 0;
42
+ function useRole(context) {
43
+ var props = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {},
44
+ _elements_domReference,
45
+ {
46
+ open,
47
+ elements
48
+ } = context,
49
+ {
50
+ enabled = !0,
51
+ role = "dialog"
52
+ } = props,
53
+ defaultReferenceId = React.useId(),
54
+ referenceId = ((_elements_domReference = elements.domReference) === null || _elements_domReference === void 0 ? void 0 : _elements_domReference.id) || defaultReferenceId,
55
+ defaultFloatingId = React.useMemo(function () {
56
+ return `floating-${idCounter++}`;
57
+ }, []),
58
+ floatingId = React.useMemo(function () {
59
+ var _elements_floating;
60
+ return ((_elements_floating = elements.floating) === null || _elements_floating === void 0 ? void 0 : _elements_floating.id) || defaultFloatingId;
61
+ }, [elements.floating, defaultFloatingId]),
62
+ _componentRoleToAriaRoleMap_get,
63
+ ariaRole = (_componentRoleToAriaRoleMap_get = componentRoleToAriaRoleMap.get(role)) !== null && _componentRoleToAriaRoleMap_get !== void 0 ? _componentRoleToAriaRoleMap_get : role,
64
+ reference = React.useMemo(function () {
65
+ return ariaRole === "tooltip" || role === "label" ? {
66
+ [`aria-${role === "label" ? "labelledby" : "describedby"}`]: open ? floatingId : void 0
67
+ } : {
68
+ "aria-expanded": open ? "true" : "false",
69
+ "aria-haspopup": ariaRole === "alertdialog" ? "dialog" : ariaRole,
70
+ "aria-controls": open ? floatingId : void 0,
71
+ ...(ariaRole === "listbox" && {
72
+ role: "combobox"
73
+ }),
74
+ ...(ariaRole === "menu" && {
75
+ id: referenceId
76
+ }),
77
+ ...(role === "select" && {
78
+ "aria-autocomplete": "none"
79
+ }),
80
+ ...(role === "combobox" && {
81
+ "aria-autocomplete": "list"
82
+ })
83
+ };
84
+ }, [ariaRole, floatingId, open, referenceId, role]),
85
+ floating = React.useMemo(function () {
86
+ var floatingProps = {
87
+ id: floatingId,
88
+ ...(ariaRole && {
89
+ role: ariaRole
90
+ })
91
+ };
92
+ return ariaRole === "tooltip" || role === "label" ? floatingProps : {
93
+ ...floatingProps,
94
+ ...(ariaRole === "menu" && {
95
+ "aria-labelledby": referenceId
96
+ })
97
+ };
98
+ }, [ariaRole, floatingId, referenceId, role]),
99
+ item = React.useCallback(function (param) {
100
+ var {
101
+ active,
102
+ selected
103
+ } = param,
104
+ commonProps = {
105
+ role: "option",
106
+ ...(active && {
107
+ id: `${floatingId}-fui-option`
108
+ })
109
+ };
110
+ switch (role) {
111
+ case "select":
112
+ case "combobox":
113
+ return {
114
+ ...commonProps,
115
+ "aria-selected": selected
116
+ };
117
+ }
118
+ return {};
119
+ }, [floatingId, role]);
120
+ return React.useMemo(function () {
121
+ return enabled ? {
122
+ reference,
123
+ floating,
124
+ item
125
+ } : {};
126
+ }, [enabled, reference, floating, item]);
127
+ }
128
+ //# sourceMappingURL=useRole.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","useRole_exports","__export","useRole","module","exports","React","__toESM","require","componentRoleToAriaRoleMap","Map","idCounter","context","props","arguments","length","_elements_domReference","open","elements","enabled","role","defaultReferenceId","useId","referenceId","domReference","id","defaultFloatingId","useMemo","floatingId","_elements_floating","floating","_componentRoleToAriaRoleMap_get","ariaRole","get","reference","floatingProps"],"sources":["../../../src/interactions/useRole.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAA;EAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;IAAAC,KAAA;EAAA,IAAAH,GAAA;AAAA,IAAAI,eAAA;AAAAC,QAAA,CAAAD,eAAA;EAAAE,OAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAuB,GAAAT,YAAA,CAAAK,eAAA;AAMvB,IAAAK,KAAM,GAAAC,OAAA,CAAAC,OAAA,QAA6B;EAAAC,0BAAsC,sBAAAC,GAAA,EACvE,CACC,UACA,SAAS,CACX,EAED,CAGO,UAAS,EAId,SAAQ,CAOiB,EACQ,CAEjC,OAEM,EAaA,CAAC,EAGH,CAGK;EACLC,SAAA;AAAiC,SACjCR,QAAAS,OAAiB;EAAwC,IACzDC,KAAA,GAAAC,SAAiB,CAAAC,MAAO,QAAAD,SAAa,iBAAAA,SAAA;IAAAE,sBAAA;IAAA;MAAAC,IAAA;MAAAC;IAAA,IAAAN,OAAA;IAAA;MAAAO,OAAA;MAAAC,IAAA;IAAA,IAAAP,KAAA;IAAAQ,kBAAA,GAAAf,KAAA,CAAAgB,KAAA;IAAAC,WAAA,KAAAP,sBAAA,GAAAE,QAAA,CAAAM,YAAA,cAAAR,sBAAA,uBAAAA,sBAAA,CAAAS,EAAA,KAAAJ,kBAAA;IAAAK,iBAAA,GAAApB,KAAA,CAAAqB,OAAA;MACrC,OAAI,YAAahB,SAAA,EAAa,EAAE;IAAiB,GACjD,EAAI;IAAAiB,UAAa,GAAAtB,KAAA,CAAAqB,OAAgB,aAAY;MAC7C,IAAIE,kBAAS;MACb,OAAI,EAAAA,kBAAuB,GAAEX,QAAA,CAAAY,QAAA,MAAqB,IAAO,IAAAD,kBAAA,uBAAAA,kBAAA,CAAAJ,EAAA,KAAAC,iBAAA;IAC3D,GACC,CAGDR,QAAM,CAAAY,QAAA,EAAgBJ,iBAChB;IACJK,+BAAwB;IAASC,QAAA,IAAAD,+BAAA,GAAAtB,0BAAA,CAAAwB,GAAA,CAAAb,IAAA,eAAAW,+BAAA,cAAAA,+BAAA,GAAAX,IAAA;IAAAc,SAAA,GAAA5B,KAAA,CAAAqB,OAAA;MACnC,OAAAK,QAAA,kBAAAZ,IAAA;QAEA,SAAIA,IAAA,KAAa,sBAAsB,gBAC9B,KAAAH,IAAA,GAGFW,UAAA;MAAA,IACL;QACA,eAAI,EAAaX,IAAA,SAAY;QAC/B,iBAAAe,QAAA,gCAAAA,QAAA;QACE,eAAU,EAAAf,IAAA,GAAYW,UAAA,GAAa,KAAK,CAEtC;QACH,IAAEI,QAAQ,cAAyD;UAClEZ,IAAM;QAAc;QACZ,IACNY,QAAI,KAAU,MAAM,IAAG;UACzBP,EAAA,EAAAF;QAEA;QAAc,IACZH,IAAK;UACL,mBAAK;QACH;QAAO,IAAAA,IACL,KAAG;UAAA,mBACH,EAAiB;QAAA;MACnB;IAGJ,IACFY,QAAA,EACAJ,UAAC,EACHX,IAAA,EAEAM,WAAa,EACXH,IAAA,CAAkD,CAClD;IAACU,QAAS,GAAAxB,KAAA,CAAAqB,OAAW,aAAc;MACrC,IAAAQ,aAAA;QACFV,EAAA,EAAAG,UAAA","ignoreList":[]}
@@ -0,0 +1,93 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: !0
9
+ });
10
+ },
11
+ __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
13
+ get: () => from[key],
14
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
+ });
16
+ return to;
17
+ };
18
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
19
+ value: !0
20
+ }), mod);
21
+ var useTypeahead_exports = {};
22
+ __export(useTypeahead_exports, {
23
+ useTypeahead: () => useTypeahead
24
+ });
25
+ module.exports = __toCommonJS(useTypeahead_exports);
26
+ var import_react = require("react"),
27
+ import_use_event = require("@tamagui/use-event"),
28
+ import_utils = require("./utils.cjs");
29
+ function useTypeahead(context, props) {
30
+ const {
31
+ open,
32
+ dataRef
33
+ } = context,
34
+ {
35
+ listRef,
36
+ activeIndex,
37
+ onMatch: unstable_onMatch,
38
+ onTypingChange: unstable_onTypingChange,
39
+ enabled = !0,
40
+ findMatch = null,
41
+ resetMs = 750,
42
+ ignoreKeys = [],
43
+ selectedIndex = null
44
+ } = props,
45
+ timeoutIdRef = (0, import_react.useRef)(-1),
46
+ stringRef = (0, import_react.useRef)(""),
47
+ prevIndexRef = (0, import_react.useRef)(selectedIndex ?? activeIndex ?? -1),
48
+ matchIndexRef = (0, import_react.useRef)(null),
49
+ onMatch = (0, import_use_event.useEvent)(unstable_onMatch || (() => {})),
50
+ onTypingChange = (0, import_use_event.useEvent)(unstable_onTypingChange || (() => {})),
51
+ findMatchRef = (0, import_react.useRef)(findMatch);
52
+ findMatchRef.current = findMatch;
53
+ const ignoreKeysRef = (0, import_react.useRef)(ignoreKeys);
54
+ ignoreKeysRef.current = ignoreKeys, (0, import_react.useLayoutEffect)(() => {
55
+ open && ((0, import_utils.clearTimeoutIfSet)(timeoutIdRef), matchIndexRef.current = null, stringRef.current = "");
56
+ }, [open]), (0, import_react.useLayoutEffect)(() => {
57
+ open && stringRef.current === "" && (prevIndexRef.current = selectedIndex ?? activeIndex ?? -1);
58
+ }, [open, selectedIndex, activeIndex]);
59
+ const setTypingChange = value => {
60
+ value ? dataRef.current.typing || (dataRef.current.typing = value, onTypingChange(value)) : dataRef.current.typing && (dataRef.current.typing = value, onTypingChange(value));
61
+ },
62
+ onKeyDown = event => {
63
+ function getMatchingIndex(list, orderedList, string) {
64
+ const str = findMatchRef.current ? findMatchRef.current(orderedList, string) : orderedList.find(text => text?.toLocaleLowerCase().indexOf(string.toLocaleLowerCase()) === 0);
65
+ return str ? list.indexOf(str) : -1;
66
+ }
67
+ const listContent = listRef.current;
68
+ if (stringRef.current.length > 0 && stringRef.current[0] !== " " && (getMatchingIndex(listContent, listContent, stringRef.current) === -1 ? setTypingChange(!1) : event.key === " " && (0, import_utils.stopEvent)(event)), listContent == null || ignoreKeysRef.current.includes(event.key) ||
69
+ // character key
70
+ event.key.length !== 1 ||
71
+ // modifier key
72
+ event.ctrlKey || event.metaKey || event.altKey) return;
73
+ open && event.key !== " " && ((0, import_utils.stopEvent)(event), setTypingChange(!0)), listContent.every(text => text ? text[0]?.toLocaleLowerCase() !== text[1]?.toLocaleLowerCase() : !0) && stringRef.current === event.key && (stringRef.current = "", prevIndexRef.current = matchIndexRef.current), stringRef.current += event.key, (0, import_utils.clearTimeoutIfSet)(timeoutIdRef), timeoutIdRef.current = window.setTimeout(() => {
74
+ stringRef.current = "", prevIndexRef.current = matchIndexRef.current, setTypingChange(!1);
75
+ }, resetMs);
76
+ const prevIndex = prevIndexRef.current,
77
+ index = getMatchingIndex(listContent, [...listContent.slice((prevIndex || 0) + 1), ...listContent.slice(0, (prevIndex || 0) + 1)], stringRef.current);
78
+ index !== -1 ? (onMatch(index), matchIndexRef.current = index) : event.key !== " " && (stringRef.current = "", setTypingChange(!1));
79
+ },
80
+ reference = (0, import_react.useMemo)(() => ({
81
+ onKeyDown
82
+ }), [open, enabled]),
83
+ floating = (0, import_react.useMemo)(() => ({
84
+ onKeyDown,
85
+ onKeyUp(event) {
86
+ event.key === " " && setTypingChange(!1);
87
+ }
88
+ }), [open, enabled]);
89
+ return (0, import_react.useMemo)(() => enabled ? {
90
+ reference,
91
+ floating
92
+ } : {}, [enabled, reference, floating]);
93
+ }