@tamagui/select 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 (248) hide show
  1. package/dist/cjs/Select.cjs +406 -467
  2. package/dist/cjs/Select.native.cjs +495 -0
  3. package/dist/cjs/Select.native.js +445 -492
  4. package/dist/cjs/Select.native.js.map +1 -1
  5. package/dist/cjs/SelectContent.cjs +79 -79
  6. package/dist/cjs/SelectContent.native.cjs +29 -0
  7. package/dist/cjs/SelectContent.native.js +17 -22
  8. package/dist/cjs/SelectContent.native.js.map +1 -1
  9. package/dist/cjs/SelectImpl.cjs +305 -320
  10. package/dist/cjs/SelectImpl.native.cjs +29 -0
  11. package/dist/cjs/SelectImpl.native.js +16 -24
  12. package/dist/cjs/SelectImpl.native.js.map +1 -1
  13. package/dist/cjs/SelectItem.cjs +256 -205
  14. package/dist/cjs/SelectItem.native.cjs +288 -0
  15. package/dist/cjs/SelectItem.native.js +264 -213
  16. package/dist/cjs/SelectItem.native.js.map +1 -1
  17. package/dist/cjs/SelectItemText.cjs +48 -79
  18. package/dist/cjs/SelectItemText.native.cjs +73 -0
  19. package/dist/cjs/SelectItemText.native.js +49 -79
  20. package/dist/cjs/SelectItemText.native.js.map +1 -1
  21. package/dist/cjs/SelectScrollButton.cjs +110 -130
  22. package/dist/cjs/SelectScrollButton.native.cjs +37 -0
  23. package/dist/cjs/SelectScrollButton.native.js +24 -22
  24. package/dist/cjs/SelectScrollButton.native.js.map +1 -1
  25. package/dist/cjs/SelectTrigger.cjs +68 -84
  26. package/dist/cjs/SelectTrigger.native.cjs +90 -0
  27. package/dist/cjs/SelectTrigger.native.js +70 -66
  28. package/dist/cjs/SelectTrigger.native.js.map +1 -1
  29. package/dist/cjs/SelectViewport.cjs +121 -142
  30. package/dist/cjs/SelectViewport.native.cjs +72 -0
  31. package/dist/cjs/SelectViewport.native.js +53 -50
  32. package/dist/cjs/SelectViewport.native.js.map +1 -1
  33. package/dist/cjs/constants.cjs +20 -22
  34. package/dist/cjs/constants.native.cjs +40 -0
  35. package/dist/cjs/constants.native.js +20 -21
  36. package/dist/cjs/constants.native.js.map +1 -1
  37. package/dist/cjs/context.cjs +37 -48
  38. package/dist/cjs/context.native.cjs +57 -0
  39. package/dist/cjs/context.native.js +39 -49
  40. package/dist/cjs/context.native.js.map +1 -1
  41. package/dist/cjs/index.cjs +14 -11
  42. package/dist/cjs/index.native.cjs +26 -0
  43. package/dist/cjs/index.native.js +14 -10
  44. package/dist/cjs/index.native.js.map +1 -1
  45. package/dist/cjs/selectionController.cjs +343 -0
  46. package/dist/cjs/selectionController.native.cjs +407 -0
  47. package/dist/cjs/selectionController.native.js +409 -0
  48. package/dist/cjs/selectionController.native.js.map +1 -0
  49. package/dist/cjs/types.cjs +9 -11
  50. package/dist/cjs/types.native.cjs +18 -0
  51. package/dist/cjs/types.native.js +9 -10
  52. package/dist/cjs/types.native.js.map +1 -1
  53. package/dist/esm/Select.mjs +381 -443
  54. package/dist/esm/Select.mjs.map +1 -1
  55. package/dist/esm/Select.native.js +420 -469
  56. package/dist/esm/Select.native.js.map +1 -1
  57. package/dist/esm/SelectContent.mjs +67 -61
  58. package/dist/esm/SelectContent.mjs.map +1 -1
  59. package/dist/esm/SelectContent.native.js +4 -5
  60. package/dist/esm/SelectContent.native.js.map +1 -1
  61. package/dist/esm/SelectImpl.mjs +291 -295
  62. package/dist/esm/SelectImpl.mjs.map +1 -1
  63. package/dist/esm/SelectImpl.native.js +5 -8
  64. package/dist/esm/SelectImpl.native.js.map +1 -1
  65. package/dist/esm/SelectItem.mjs +240 -181
  66. package/dist/esm/SelectItem.mjs.map +1 -1
  67. package/dist/esm/SelectItem.native.js +249 -191
  68. package/dist/esm/SelectItem.native.js.map +1 -1
  69. package/dist/esm/SelectItemText.mjs +33 -55
  70. package/dist/esm/SelectItemText.mjs.map +1 -1
  71. package/dist/esm/SelectItemText.native.js +34 -56
  72. package/dist/esm/SelectItemText.native.js.map +1 -1
  73. package/dist/esm/SelectScrollButton.mjs +95 -107
  74. package/dist/esm/SelectScrollButton.mjs.map +1 -1
  75. package/dist/esm/SelectScrollButton.native.js +11 -7
  76. package/dist/esm/SelectScrollButton.native.js.map +1 -1
  77. package/dist/esm/SelectTrigger.mjs +56 -58
  78. package/dist/esm/SelectTrigger.mjs.map +1 -1
  79. package/dist/esm/SelectTrigger.native.js +54 -44
  80. package/dist/esm/SelectTrigger.native.js.map +1 -1
  81. package/dist/esm/SelectViewport.mjs +107 -119
  82. package/dist/esm/SelectViewport.mjs.map +1 -1
  83. package/dist/esm/SelectViewport.native.js +44 -39
  84. package/dist/esm/SelectViewport.native.js.map +1 -1
  85. package/dist/esm/constants.mjs +1 -0
  86. package/dist/esm/constants.mjs.map +1 -1
  87. package/dist/esm/constants.native.js +1 -0
  88. package/dist/esm/constants.native.js.map +1 -1
  89. package/dist/esm/context.mjs +20 -28
  90. package/dist/esm/context.mjs.map +1 -1
  91. package/dist/esm/context.native.js +23 -31
  92. package/dist/esm/context.native.js.map +1 -1
  93. package/dist/esm/index.js +13 -3
  94. package/dist/esm/index.mjs +13 -3
  95. package/dist/esm/index.native.js +13 -3
  96. package/dist/esm/selectionController.mjs +315 -0
  97. package/dist/esm/selectionController.mjs.map +1 -0
  98. package/dist/esm/selectionController.native.js +377 -0
  99. package/dist/esm/selectionController.native.js.map +1 -0
  100. package/dist/esm/types.mjs +0 -2
  101. package/dist/esm/types.native.js +0 -2
  102. package/dist/jsx/Select.mjs +381 -443
  103. package/dist/jsx/Select.mjs.map +1 -1
  104. package/dist/jsx/Select.native.cjs +495 -0
  105. package/dist/jsx/Select.native.js +445 -492
  106. package/dist/jsx/Select.native.js.map +1 -1
  107. package/dist/jsx/SelectContent.mjs +67 -61
  108. package/dist/jsx/SelectContent.mjs.map +1 -1
  109. package/dist/jsx/SelectContent.native.cjs +29 -0
  110. package/dist/jsx/SelectContent.native.js +17 -22
  111. package/dist/jsx/SelectContent.native.js.map +1 -1
  112. package/dist/jsx/SelectImpl.mjs +291 -295
  113. package/dist/jsx/SelectImpl.mjs.map +1 -1
  114. package/dist/jsx/SelectImpl.native.cjs +29 -0
  115. package/dist/jsx/SelectImpl.native.js +16 -24
  116. package/dist/jsx/SelectImpl.native.js.map +1 -1
  117. package/dist/jsx/SelectItem.mjs +240 -181
  118. package/dist/jsx/SelectItem.mjs.map +1 -1
  119. package/dist/jsx/SelectItem.native.cjs +288 -0
  120. package/dist/jsx/SelectItem.native.js +264 -213
  121. package/dist/jsx/SelectItem.native.js.map +1 -1
  122. package/dist/jsx/SelectItemText.mjs +33 -55
  123. package/dist/jsx/SelectItemText.mjs.map +1 -1
  124. package/dist/jsx/SelectItemText.native.cjs +73 -0
  125. package/dist/jsx/SelectItemText.native.js +49 -79
  126. package/dist/jsx/SelectItemText.native.js.map +1 -1
  127. package/dist/jsx/SelectScrollButton.mjs +95 -107
  128. package/dist/jsx/SelectScrollButton.mjs.map +1 -1
  129. package/dist/jsx/SelectScrollButton.native.cjs +37 -0
  130. package/dist/jsx/SelectScrollButton.native.js +24 -22
  131. package/dist/jsx/SelectScrollButton.native.js.map +1 -1
  132. package/dist/jsx/SelectTrigger.mjs +56 -58
  133. package/dist/jsx/SelectTrigger.mjs.map +1 -1
  134. package/dist/jsx/SelectTrigger.native.cjs +90 -0
  135. package/dist/jsx/SelectTrigger.native.js +70 -66
  136. package/dist/jsx/SelectTrigger.native.js.map +1 -1
  137. package/dist/jsx/SelectViewport.mjs +107 -119
  138. package/dist/jsx/SelectViewport.mjs.map +1 -1
  139. package/dist/jsx/SelectViewport.native.cjs +72 -0
  140. package/dist/jsx/SelectViewport.native.js +53 -50
  141. package/dist/jsx/SelectViewport.native.js.map +1 -1
  142. package/dist/jsx/constants.mjs +1 -0
  143. package/dist/jsx/constants.mjs.map +1 -1
  144. package/dist/jsx/constants.native.cjs +40 -0
  145. package/dist/jsx/constants.native.js +20 -21
  146. package/dist/jsx/constants.native.js.map +1 -1
  147. package/dist/jsx/context.mjs +20 -28
  148. package/dist/jsx/context.mjs.map +1 -1
  149. package/dist/jsx/context.native.cjs +57 -0
  150. package/dist/jsx/context.native.js +39 -49
  151. package/dist/jsx/context.native.js.map +1 -1
  152. package/dist/jsx/index.js +13 -3
  153. package/dist/jsx/index.mjs +13 -3
  154. package/dist/jsx/index.native.cjs +26 -0
  155. package/dist/jsx/index.native.js +14 -10
  156. package/dist/jsx/index.native.js.map +1 -1
  157. package/dist/jsx/selectionController.mjs +315 -0
  158. package/dist/jsx/selectionController.mjs.map +1 -0
  159. package/dist/jsx/selectionController.native.cjs +407 -0
  160. package/dist/jsx/selectionController.native.js +409 -0
  161. package/dist/jsx/selectionController.native.js.map +1 -0
  162. package/dist/jsx/types.mjs +0 -2
  163. package/dist/jsx/types.native.cjs +18 -0
  164. package/dist/jsx/types.native.js +9 -10
  165. package/dist/jsx/types.native.js.map +1 -1
  166. package/package.json +31 -30
  167. package/src/Select.tsx +478 -378
  168. package/src/SelectContent.tsx +46 -16
  169. package/src/SelectImpl.native.tsx +0 -8
  170. package/src/SelectImpl.tsx +149 -160
  171. package/src/SelectItem.tsx +280 -159
  172. package/src/SelectItemText.tsx +16 -33
  173. package/src/SelectScrollButton.native.tsx +13 -4
  174. package/src/SelectScrollButton.tsx +57 -42
  175. package/src/SelectTrigger.tsx +77 -53
  176. package/src/SelectViewport.native.tsx +42 -25
  177. package/src/SelectViewport.tsx +60 -60
  178. package/src/context.tsx +6 -2
  179. package/src/index.tsx +5 -2
  180. package/src/selectionController.ts +404 -0
  181. package/src/types.tsx +105 -59
  182. package/types/Select.d.ts +139 -201
  183. package/types/Select.d.ts.map +1 -1
  184. package/types/SelectContent.d.ts +1 -1
  185. package/types/SelectContent.d.ts.map +1 -1
  186. package/types/SelectContent.native.d.ts.map +1 -1
  187. package/types/SelectImpl.d.ts +2 -1
  188. package/types/SelectImpl.d.ts.map +1 -1
  189. package/types/SelectImpl.native.d.ts +1 -5
  190. package/types/SelectImpl.native.d.ts.map +1 -1
  191. package/types/SelectItem.d.ts +13 -16
  192. package/types/SelectItem.d.ts.map +1 -1
  193. package/types/SelectItemText.d.ts +9 -13
  194. package/types/SelectItemText.d.ts.map +1 -1
  195. package/types/SelectScrollButton.d.ts +15 -2
  196. package/types/SelectScrollButton.d.ts.map +1 -1
  197. package/types/SelectScrollButton.native.d.ts +16 -3
  198. package/types/SelectScrollButton.native.d.ts.map +1 -1
  199. package/types/SelectTrigger.d.ts +11 -23
  200. package/types/SelectTrigger.d.ts.map +1 -1
  201. package/types/SelectViewport.d.ts +11 -38
  202. package/types/SelectViewport.d.ts.map +1 -1
  203. package/types/SelectViewport.native.d.ts +15 -4
  204. package/types/SelectViewport.native.d.ts.map +1 -1
  205. package/types/context.d.ts +2 -0
  206. package/types/context.d.ts.map +1 -1
  207. package/types/index.d.ts +5 -2
  208. package/types/index.d.ts.map +1 -1
  209. package/types/selectionController.d.ts +90 -0
  210. package/types/selectionController.d.ts.map +1 -0
  211. package/types/types.d.ts +66 -50
  212. package/types/types.d.ts.map +1 -1
  213. package/dist/cjs/BubbleSelect.cjs +0 -50
  214. package/dist/cjs/BubbleSelect.native.js +0 -30
  215. package/dist/cjs/BubbleSelect.native.js.map +0 -1
  216. package/dist/cjs/useSelectBreakpointActive.cjs +0 -32
  217. package/dist/cjs/useSelectBreakpointActive.native.js +0 -35
  218. package/dist/cjs/useSelectBreakpointActive.native.js.map +0 -1
  219. package/dist/esm/BubbleSelect.mjs +0 -27
  220. package/dist/esm/BubbleSelect.mjs.map +0 -1
  221. package/dist/esm/BubbleSelect.native.js +0 -4
  222. package/dist/esm/BubbleSelect.native.js.map +0 -1
  223. package/dist/esm/index.js.map +0 -1
  224. package/dist/esm/index.mjs.map +0 -1
  225. package/dist/esm/index.native.js.map +0 -1
  226. package/dist/esm/types.mjs.map +0 -1
  227. package/dist/esm/types.native.js.map +0 -1
  228. package/dist/esm/useSelectBreakpointActive.mjs +0 -7
  229. package/dist/esm/useSelectBreakpointActive.mjs.map +0 -1
  230. package/dist/esm/useSelectBreakpointActive.native.js +0 -7
  231. package/dist/esm/useSelectBreakpointActive.native.js.map +0 -1
  232. package/dist/jsx/BubbleSelect.mjs +0 -27
  233. package/dist/jsx/BubbleSelect.mjs.map +0 -1
  234. package/dist/jsx/BubbleSelect.native.js +0 -30
  235. package/dist/jsx/BubbleSelect.native.js.map +0 -1
  236. package/dist/jsx/index.js.map +0 -1
  237. package/dist/jsx/index.mjs.map +0 -1
  238. package/dist/jsx/types.mjs.map +0 -1
  239. package/dist/jsx/useSelectBreakpointActive.mjs +0 -7
  240. package/dist/jsx/useSelectBreakpointActive.mjs.map +0 -1
  241. package/dist/jsx/useSelectBreakpointActive.native.js +0 -35
  242. package/dist/jsx/useSelectBreakpointActive.native.js.map +0 -1
  243. package/src/BubbleSelect.tsx +0 -50
  244. package/src/useSelectBreakpointActive.tsx +0 -7
  245. package/types/BubbleSelect.d.ts +0 -2
  246. package/types/BubbleSelect.d.ts.map +0 -1
  247. package/types/useSelectBreakpointActive.d.ts +0 -3
  248. package/types/useSelectBreakpointActive.d.ts.map +0 -1
@@ -0,0 +1,288 @@
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
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all) __defProp(target, name, {
11
+ get: all[name],
12
+ enumerable: true
13
+ });
14
+ };
15
+ var __copyProps = (to, from, except, desc) => {
16
+ if (from && typeof from === "object" || typeof from === "function") {
17
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
18
+ get: () => from[key],
19
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
20
+ });
21
+ }
22
+ return to;
23
+ };
24
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
25
+ value: mod,
26
+ enumerable: true
27
+ }) : target, mod));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var SelectItem_exports = {};
30
+ __export(SelectItem_exports, {
31
+ SelectItem: () => SelectItem,
32
+ SelectItemContextProvider: () => SelectItemContextProvider,
33
+ SelectItemFrame: () => SelectItemFrame,
34
+ useSelectItemContext: () => useSelectItemContext
35
+ });
36
+ module.exports = __toCommonJS(SelectItem_exports);
37
+ var import_jsx_runtime = require("react/jsx-runtime");
38
+ var import_compose_refs = require("@tamagui/compose-refs");
39
+ var import_adapt = require("@tamagui/adapt");
40
+ var import_constants = require("@tamagui/constants");
41
+ var import_core = require("@tamagui/core");
42
+ var import_helpers = require("@tamagui/helpers");
43
+ var React = __toESM(require("react"), 1);
44
+ var import_context = require("./context.native.js");
45
+ var import_selectionController = require("./selectionController.native.js");
46
+ var ITEM_NAME = "SelectItem";
47
+ var { Provider: SelectItemContextProvider, useStyledContext: useSelectItemContext } = (0, import_core.createStyledContext)(null, ITEM_NAME);
48
+ var SelectItemFrame = (0, import_core.styled)(import_core.View, {
49
+ displayName: ITEM_NAME,
50
+ alignItems: "center",
51
+ flexDirection: "row"
52
+ });
53
+ var SelectItem = (0, import_core.createStyledHOC)(SelectItemFrame, function SelectItem2(props, forwardedRef) {
54
+ var { scope, value, disabled: disabledProp, "aria-disabled": ariaDisabled, textValue: textValueProp, ...restProps } = props;
55
+ var disabled = disabledProp !== null && disabledProp !== void 0 ? disabledProp : ariaDisabled === true;
56
+ var context = (0, import_context.useSelectItemParentContext)(scope);
57
+ var isAdapted = (0, import_adapt.useAdaptIsActive)(context.adaptScope);
58
+ var { registry, mode, selectedValues, selectValue, activeIndexSubscribe, activeIndexRef, allowMouseUpRef, allowSelectRef, selectTimeoutRef, getItemProps, shouldRenderWebNative, setActiveIndex, lastPointerRef, moveActive, search } = context;
59
+ var isSelected = selectedValues.includes(value);
60
+ var pendingMouseUpSelectionRef = React.useRef(false);
61
+ var itemNodeRef = React.useRef(null);
62
+ var registrationRef = React.useRef(null);
63
+ var initialRegistration = React.useRef({
64
+ value,
65
+ disabled,
66
+ textValue: textValueProp
67
+ });
68
+ (0, import_constants.useIsomorphicLayoutEffect)(function() {
69
+ var registration = registry.registerItem(initialRegistration.current);
70
+ registrationRef.current = registration;
71
+ registration.setNode(itemNodeRef.current);
72
+ return function() {
73
+ registrationRef.current = null;
74
+ registration.unregister();
75
+ };
76
+ }, [registry]);
77
+ (0, import_constants.useIsomorphicLayoutEffect)(function() {
78
+ var _registrationRef_current;
79
+ (_registrationRef_current = registrationRef.current) === null || _registrationRef_current === void 0 ? void 0 : _registrationRef_current.update({
80
+ value,
81
+ disabled,
82
+ textValue: textValueProp
83
+ });
84
+ }, [
85
+ disabled,
86
+ textValueProp,
87
+ value
88
+ ]);
89
+ (0, import_constants.useIsomorphicLayoutEffect)(function() {
90
+ var _registrationRef_current;
91
+ (_registrationRef_current = registrationRef.current) === null || _registrationRef_current === void 0 ? void 0 : _registrationRef_current.setNode(itemNodeRef.current);
92
+ });
93
+ var [isActive, setIsActive] = React.useState(false);
94
+ var isActiveRef = React.useRef(false);
95
+ React.useEffect(function() {
96
+ var handleActiveIndex = function(i) {
97
+ var next = i != null && registry.getIndex(value) === i;
98
+ if (next !== isActiveRef.current) {
99
+ isActiveRef.current = next;
100
+ setIsActive(next);
101
+ }
102
+ if (next && import_constants.isWeb) {
103
+ requestAnimationFrame(function() {
104
+ var _itemNodeRef_current_focus, _itemNodeRef_current;
105
+ (_itemNodeRef_current = itemNodeRef.current) === null || _itemNodeRef_current === void 0 ? void 0 : (_itemNodeRef_current_focus = _itemNodeRef_current.focus) === null || _itemNodeRef_current_focus === void 0 ? void 0 : _itemNodeRef_current_focus.call(_itemNodeRef_current);
106
+ });
107
+ }
108
+ };
109
+ var _activeIndexRef_current;
110
+ handleActiveIndex((_activeIndexRef_current = activeIndexRef === null || activeIndexRef === void 0 ? void 0 : activeIndexRef.current) !== null && _activeIndexRef_current !== void 0 ? _activeIndexRef_current : null);
111
+ return activeIndexSubscribe(handleActiveIndex);
112
+ }, [
113
+ activeIndexRef,
114
+ activeIndexSubscribe,
115
+ registry,
116
+ value
117
+ ]);
118
+ var textId = React.useId();
119
+ var refCallback = React.useCallback(function(node) {
120
+ var _registrationRef_current;
121
+ itemNodeRef.current = node;
122
+ (_registrationRef_current = registrationRef.current) === null || _registrationRef_current === void 0 ? void 0 : _registrationRef_current.setNode(node);
123
+ }, []);
124
+ var composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, refCallback);
125
+ var handleSelect = React.useCallback(function(event) {
126
+ var reason = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "item-press";
127
+ if (disabled) return;
128
+ var nativeEvent = (event === null || event === void 0 ? void 0 : event.nativeEvent) || event;
129
+ selectValue(value, (0, import_core.createChangeEventDetails)(reason, nativeEvent, event === null || event === void 0 ? void 0 : event.currentTarget));
130
+ }, [
131
+ disabled,
132
+ selectValue,
133
+ value
134
+ ]);
135
+ var handleMouseMove = React.useCallback(function(event) {
136
+ if (disabled) return;
137
+ var index = registry.getIndex(value);
138
+ if (index < 0) return;
139
+ var last = lastPointerRef.current;
140
+ if (event.clientX === last.x && event.clientY === last.y) return;
141
+ last.x = event.clientX;
142
+ last.y = event.clientY;
143
+ setActiveIndex(index, {
144
+ reason: "item-hover",
145
+ event: event.nativeEvent || event,
146
+ trigger: event.currentTarget,
147
+ index
148
+ });
149
+ }, [
150
+ disabled,
151
+ lastPointerRef,
152
+ registry,
153
+ setActiveIndex,
154
+ value
155
+ ]);
156
+ var handleKeyDown = React.useCallback(function(event) {
157
+ var _event_key;
158
+ if (disabled) return;
159
+ if (event.key === "Enter" || event.key === " ") {
160
+ event.preventDefault();
161
+ handleSelect(event, "keyboard");
162
+ return;
163
+ }
164
+ if (event.key === "ArrowDown" || event.key === "ArrowUp") {
165
+ event.preventDefault();
166
+ event.stopPropagation();
167
+ moveActive(event.key === "ArrowDown" ? 1 : -1, event.nativeEvent || event);
168
+ return;
169
+ }
170
+ if (!getItemProps && ((_event_key = event.key) === null || _event_key === void 0 ? void 0 : _event_key.length) === 1 && !event.metaKey && !event.ctrlKey) {
171
+ search(event.key, event.nativeEvent || event);
172
+ }
173
+ if (allowSelectRef) {
174
+ allowSelectRef.current = true;
175
+ }
176
+ }, [
177
+ allowSelectRef,
178
+ disabled,
179
+ handleSelect,
180
+ getItemProps,
181
+ moveActive,
182
+ search
183
+ ]);
184
+ var selectItemProps = React.useMemo(function() {
185
+ if (getItemProps) {
186
+ var { onTouchMove, onTouchEnd, onKeyDown, onClick, onMouseUp, onMouseMove, onPress, ...itemProps } = restProps;
187
+ var interactionProps = getItemProps({
188
+ ...itemProps,
189
+ onTouchMove() {
190
+ allowSelectRef.current = true;
191
+ allowMouseUpRef.current = false;
192
+ },
193
+ onTouchEnd() {
194
+ allowSelectRef.current = false;
195
+ allowMouseUpRef.current = true;
196
+ },
197
+ onMouseMove: handleMouseMove,
198
+ onKeyDown: handleKeyDown,
199
+ onClick(event) {
200
+ if (disabled) return;
201
+ var shouldSelect = pendingMouseUpSelectionRef.current || allowSelectRef.current;
202
+ pendingMouseUpSelectionRef.current = false;
203
+ clearTimeout(selectTimeoutRef.current);
204
+ allowSelectRef.current = true;
205
+ if (shouldSelect) {
206
+ handleSelect(event);
207
+ }
208
+ },
209
+ onMouseUp(event) {
210
+ if (disabled) return;
211
+ if (!allowMouseUpRef.current) {
212
+ allowMouseUpRef.current = true;
213
+ allowSelectRef.current = true;
214
+ return;
215
+ }
216
+ pendingMouseUpSelectionRef.current = allowSelectRef.current;
217
+ clearTimeout(selectTimeoutRef.current);
218
+ selectTimeoutRef.current = setTimeout(function() {
219
+ allowSelectRef.current = true;
220
+ if (pendingMouseUpSelectionRef.current) {
221
+ pendingMouseUpSelectionRef.current = false;
222
+ handleSelect(event);
223
+ }
224
+ });
225
+ }
226
+ });
227
+ return {
228
+ ...interactionProps,
229
+ onTouchMove: (0, import_helpers.composeEventHandlers)(onTouchMove, interactionProps.onTouchMove),
230
+ onTouchEnd: (0, import_helpers.composeEventHandlers)(onTouchEnd, interactionProps.onTouchEnd),
231
+ onKeyDown: (0, import_helpers.composeEventHandlers)(onKeyDown, interactionProps.onKeyDown),
232
+ onClick(event) {
233
+ var _interactionProps_onClick;
234
+ onClick === null || onClick === void 0 ? void 0 : onClick(event);
235
+ if (event.defaultPrevented) {
236
+ pendingMouseUpSelectionRef.current = false;
237
+ clearTimeout(selectTimeoutRef.current);
238
+ allowSelectRef.current = true;
239
+ return;
240
+ }
241
+ (_interactionProps_onClick = interactionProps.onClick) === null || _interactionProps_onClick === void 0 ? void 0 : _interactionProps_onClick.call(interactionProps, event);
242
+ },
243
+ onMouseUp: (0, import_helpers.composeEventHandlers)(onMouseUp, interactionProps.onMouseUp),
244
+ onMouseMove: (0, import_helpers.composeEventHandlers)(onMouseMove, interactionProps.onMouseMove),
245
+ onPress
246
+ };
247
+ }
248
+ return {
249
+ ...restProps,
250
+ onKeyDown: (0, import_helpers.composeEventHandlers)(restProps.onKeyDown, handleKeyDown),
251
+ onMouseMove: (0, import_helpers.composeEventHandlers)(restProps.onMouseMove, handleMouseMove),
252
+ onPress: (0, import_helpers.composeEventHandlers)(restProps.onPress, handleSelect)
253
+ };
254
+ }, [
255
+ allowMouseUpRef,
256
+ allowSelectRef,
257
+ disabled,
258
+ handleKeyDown,
259
+ handleMouseMove,
260
+ handleSelect,
261
+ getItemProps,
262
+ restProps,
263
+ selectTimeoutRef
264
+ ]);
265
+ var accessibilityProps = (0, import_selectionController.getSelectOptionProps)(mode, isSelected, disabled, import_constants.isWeb ? "web" : "native");
266
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectItemContextProvider, {
267
+ scope,
268
+ value,
269
+ textId: textId || "",
270
+ textValue: textValueProp,
271
+ isSelected,
272
+ children: shouldRenderWebNative ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", {
273
+ value,
274
+ disabled,
275
+ children: props.children
276
+ }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectItemFrame, {
277
+ render: "div",
278
+ ref: composedRefs,
279
+ "aria-labelledby": textId,
280
+ "data-state": isSelected ? "active" : "inactive",
281
+ "data-disabled": disabled ? "" : void 0,
282
+ tabIndex: disabled ? void 0 : import_constants.isWeb && isAdapted && (isActive || (activeIndexRef === null || activeIndexRef === void 0 ? void 0 : activeIndexRef.current) == null && isSelected) ? 0 : -1,
283
+ zIndex: 100,
284
+ ...selectItemProps,
285
+ ...accessibilityProps
286
+ })
287
+ });
288
+ }, { disableTheme: true });