@tamagui/select 2.0.0-rc.4 → 2.0.0-rc.40

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 (242) hide show
  1. package/dist/cjs/BubbleSelect.cjs +28 -23
  2. package/dist/cjs/BubbleSelect.native.js +12 -10
  3. package/dist/cjs/BubbleSelect.native.js.map +1 -1
  4. package/dist/cjs/Select.cjs +402 -376
  5. package/dist/cjs/Select.native.js +428 -414
  6. package/dist/cjs/Select.native.js.map +1 -1
  7. package/dist/cjs/SelectContent.cjs +73 -66
  8. package/dist/cjs/SelectContent.native.js +12 -10
  9. package/dist/cjs/SelectContent.native.js.map +1 -1
  10. package/dist/cjs/SelectImpl.cjs +239 -176
  11. package/dist/cjs/SelectImpl.native.js +21 -16
  12. package/dist/cjs/SelectImpl.native.js.map +1 -1
  13. package/dist/cjs/SelectItem.cjs +189 -137
  14. package/dist/cjs/SelectItem.native.js +211 -164
  15. package/dist/cjs/SelectItem.native.js.map +1 -1
  16. package/dist/cjs/SelectItemText.cjs +82 -68
  17. package/dist/cjs/SelectItemText.native.js +81 -69
  18. package/dist/cjs/SelectItemText.native.js.map +1 -1
  19. package/dist/cjs/SelectScrollButton.cjs +104 -83
  20. package/dist/cjs/SelectScrollButton.native.js +17 -15
  21. package/dist/cjs/SelectScrollButton.native.js.map +1 -1
  22. package/dist/cjs/SelectTrigger.cjs +81 -77
  23. package/dist/cjs/SelectTrigger.native.js +43 -40
  24. package/dist/cjs/SelectTrigger.native.js.map +1 -1
  25. package/dist/cjs/SelectViewport.cjs +141 -103
  26. package/dist/cjs/SelectViewport.native.js +39 -37
  27. package/dist/cjs/SelectViewport.native.js.map +1 -1
  28. package/dist/cjs/constants.cjs +19 -17
  29. package/dist/cjs/constants.native.js +19 -17
  30. package/dist/cjs/constants.native.js.map +1 -1
  31. package/dist/cjs/context.cjs +38 -27
  32. package/dist/cjs/context.native.js +46 -38
  33. package/dist/cjs/context.native.js.map +1 -1
  34. package/dist/cjs/index.cjs +7 -5
  35. package/dist/cjs/index.native.js +7 -5
  36. package/dist/cjs/index.native.js.map +1 -1
  37. package/dist/cjs/types.cjs +7 -5
  38. package/dist/cjs/types.native.js +7 -5
  39. package/dist/cjs/types.native.js.map +1 -1
  40. package/dist/cjs/useSelectBreakpointActive.cjs +13 -11
  41. package/dist/cjs/useSelectBreakpointActive.native.js +17 -15
  42. package/dist/cjs/useSelectBreakpointActive.native.js.map +1 -1
  43. package/dist/esm/BubbleSelect.mjs +16 -13
  44. package/dist/esm/BubbleSelect.mjs.map +1 -1
  45. package/dist/esm/Select.mjs +356 -331
  46. package/dist/esm/Select.mjs.map +1 -1
  47. package/dist/esm/Select.native.js +381 -369
  48. package/dist/esm/Select.native.js.map +1 -1
  49. package/dist/esm/SelectContent.mjs +55 -39
  50. package/dist/esm/SelectContent.mjs.map +1 -1
  51. package/dist/esm/SelectImpl.mjs +208 -147
  52. package/dist/esm/SelectImpl.mjs.map +1 -1
  53. package/dist/esm/SelectImpl.native.js +4 -1
  54. package/dist/esm/SelectImpl.native.js.map +1 -1
  55. package/dist/esm/SelectItem.mjs +157 -107
  56. package/dist/esm/SelectItem.mjs.map +1 -1
  57. package/dist/esm/SelectItem.native.js +180 -135
  58. package/dist/esm/SelectItem.native.js.map +1 -1
  59. package/dist/esm/SelectItemText.mjs +50 -38
  60. package/dist/esm/SelectItemText.mjs.map +1 -1
  61. package/dist/esm/SelectItemText.native.js +50 -40
  62. package/dist/esm/SelectItemText.native.js.map +1 -1
  63. package/dist/esm/SelectScrollButton.mjs +74 -55
  64. package/dist/esm/SelectScrollButton.mjs.map +1 -1
  65. package/dist/esm/SelectScrollButton.native.js +5 -5
  66. package/dist/esm/SelectScrollButton.native.js.map +1 -1
  67. package/dist/esm/SelectTrigger.mjs +51 -49
  68. package/dist/esm/SelectTrigger.mjs.map +1 -1
  69. package/dist/esm/SelectTrigger.native.js +13 -12
  70. package/dist/esm/SelectTrigger.native.js.map +1 -1
  71. package/dist/esm/SelectViewport.mjs +108 -83
  72. package/dist/esm/SelectViewport.mjs.map +1 -1
  73. package/dist/esm/SelectViewport.native.js +7 -7
  74. package/dist/esm/SelectViewport.native.js.map +1 -1
  75. package/dist/esm/constants.mjs +7 -7
  76. package/dist/esm/constants.mjs.map +1 -1
  77. package/dist/esm/constants.native.js +7 -7
  78. package/dist/esm/constants.native.js.map +1 -1
  79. package/dist/esm/context.mjs +22 -14
  80. package/dist/esm/context.mjs.map +1 -1
  81. package/dist/esm/context.native.js +30 -25
  82. package/dist/esm/context.native.js.map +1 -1
  83. package/dist/esm/index.js +2 -2
  84. package/dist/esm/index.js.map +1 -6
  85. package/dist/esm/useSelectBreakpointActive.mjs +1 -1
  86. package/dist/esm/useSelectBreakpointActive.mjs.map +1 -1
  87. package/dist/esm/useSelectBreakpointActive.native.js +1 -1
  88. package/dist/esm/useSelectBreakpointActive.native.js.map +1 -1
  89. package/dist/jsx/BubbleSelect.mjs +16 -13
  90. package/dist/jsx/BubbleSelect.mjs.map +1 -1
  91. package/dist/jsx/BubbleSelect.native.js +12 -10
  92. package/dist/jsx/BubbleSelect.native.js.map +1 -1
  93. package/dist/jsx/Select.mjs +356 -331
  94. package/dist/jsx/Select.mjs.map +1 -1
  95. package/dist/jsx/Select.native.js +428 -414
  96. package/dist/jsx/Select.native.js.map +1 -1
  97. package/dist/jsx/SelectContent.mjs +55 -39
  98. package/dist/jsx/SelectContent.mjs.map +1 -1
  99. package/dist/jsx/SelectContent.native.js +12 -10
  100. package/dist/jsx/SelectContent.native.js.map +1 -1
  101. package/dist/jsx/SelectImpl.mjs +208 -147
  102. package/dist/jsx/SelectImpl.mjs.map +1 -1
  103. package/dist/jsx/SelectImpl.native.js +21 -16
  104. package/dist/jsx/SelectImpl.native.js.map +1 -1
  105. package/dist/jsx/SelectItem.mjs +157 -107
  106. package/dist/jsx/SelectItem.mjs.map +1 -1
  107. package/dist/jsx/SelectItem.native.js +211 -164
  108. package/dist/jsx/SelectItem.native.js.map +1 -1
  109. package/dist/jsx/SelectItemText.mjs +50 -38
  110. package/dist/jsx/SelectItemText.mjs.map +1 -1
  111. package/dist/jsx/SelectItemText.native.js +81 -69
  112. package/dist/jsx/SelectItemText.native.js.map +1 -1
  113. package/dist/jsx/SelectScrollButton.mjs +74 -55
  114. package/dist/jsx/SelectScrollButton.mjs.map +1 -1
  115. package/dist/jsx/SelectScrollButton.native.js +17 -15
  116. package/dist/jsx/SelectScrollButton.native.js.map +1 -1
  117. package/dist/jsx/SelectTrigger.mjs +51 -49
  118. package/dist/jsx/SelectTrigger.mjs.map +1 -1
  119. package/dist/jsx/SelectTrigger.native.js +43 -40
  120. package/dist/jsx/SelectTrigger.native.js.map +1 -1
  121. package/dist/jsx/SelectViewport.mjs +108 -83
  122. package/dist/jsx/SelectViewport.mjs.map +1 -1
  123. package/dist/jsx/SelectViewport.native.js +39 -37
  124. package/dist/jsx/SelectViewport.native.js.map +1 -1
  125. package/dist/jsx/constants.mjs +7 -7
  126. package/dist/jsx/constants.mjs.map +1 -1
  127. package/dist/jsx/constants.native.js +19 -17
  128. package/dist/jsx/constants.native.js.map +1 -1
  129. package/dist/jsx/context.mjs +22 -14
  130. package/dist/jsx/context.mjs.map +1 -1
  131. package/dist/jsx/context.native.js +46 -38
  132. package/dist/jsx/context.native.js.map +1 -1
  133. package/dist/jsx/index.js +2 -2
  134. package/dist/jsx/index.js.map +1 -6
  135. package/dist/jsx/index.native.js +7 -5
  136. package/dist/jsx/types.native.js +7 -5
  137. package/dist/jsx/useSelectBreakpointActive.mjs +1 -1
  138. package/dist/jsx/useSelectBreakpointActive.mjs.map +1 -1
  139. package/dist/jsx/useSelectBreakpointActive.native.js +17 -15
  140. package/dist/jsx/useSelectBreakpointActive.native.js.map +1 -1
  141. package/package.json +31 -35
  142. package/src/Select.tsx +16 -1
  143. package/src/SelectContent.tsx +47 -36
  144. package/src/SelectImpl.tsx +51 -49
  145. package/src/SelectItem.tsx +17 -7
  146. package/src/SelectScrollButton.tsx +1 -1
  147. package/src/SelectTrigger.tsx +1 -1
  148. package/src/SelectViewport.tsx +42 -22
  149. package/src/context.tsx +4 -0
  150. package/src/types.tsx +44 -4
  151. package/types/Select.d.ts +2 -2
  152. package/types/Select.d.ts.map +1 -1
  153. package/types/SelectContent.d.ts +1 -1
  154. package/types/SelectContent.d.ts.map +1 -1
  155. package/types/SelectImpl.d.ts.map +1 -1
  156. package/types/SelectItem.d.ts.map +1 -1
  157. package/types/SelectTrigger.d.ts +1 -1
  158. package/types/SelectViewport.d.ts.map +1 -1
  159. package/types/context.d.ts +1 -0
  160. package/types/context.d.ts.map +1 -1
  161. package/types/types.d.ts +33 -3
  162. package/types/types.d.ts.map +1 -1
  163. package/dist/cjs/BubbleSelect.js +0 -34
  164. package/dist/cjs/BubbleSelect.js.map +0 -6
  165. package/dist/cjs/Select.js +0 -402
  166. package/dist/cjs/Select.js.map +0 -6
  167. package/dist/cjs/SelectContent.js +0 -57
  168. package/dist/cjs/SelectContent.js.map +0 -6
  169. package/dist/cjs/SelectImpl.js +0 -222
  170. package/dist/cjs/SelectImpl.js.map +0 -6
  171. package/dist/cjs/SelectItem.js +0 -166
  172. package/dist/cjs/SelectItem.js.map +0 -6
  173. package/dist/cjs/SelectItemText.js +0 -64
  174. package/dist/cjs/SelectItemText.js.map +0 -6
  175. package/dist/cjs/SelectScrollButton.js +0 -105
  176. package/dist/cjs/SelectScrollButton.js.map +0 -6
  177. package/dist/cjs/SelectTrigger.js +0 -81
  178. package/dist/cjs/SelectTrigger.js.map +0 -6
  179. package/dist/cjs/SelectViewport.js +0 -114
  180. package/dist/cjs/SelectViewport.js.map +0 -6
  181. package/dist/cjs/constants.js +0 -27
  182. package/dist/cjs/constants.js.map +0 -6
  183. package/dist/cjs/context.js +0 -33
  184. package/dist/cjs/context.js.map +0 -6
  185. package/dist/cjs/index.js +0 -16
  186. package/dist/cjs/index.js.map +0 -6
  187. package/dist/cjs/types.js +0 -14
  188. package/dist/cjs/types.js.map +0 -6
  189. package/dist/cjs/useSelectBreakpointActive.js +0 -25
  190. package/dist/cjs/useSelectBreakpointActive.js.map +0 -6
  191. package/dist/esm/BubbleSelect.js +0 -17
  192. package/dist/esm/BubbleSelect.js.map +0 -6
  193. package/dist/esm/Select.js +0 -412
  194. package/dist/esm/Select.js.map +0 -6
  195. package/dist/esm/SelectContent.js +0 -39
  196. package/dist/esm/SelectContent.js.map +0 -6
  197. package/dist/esm/SelectImpl.js +0 -223
  198. package/dist/esm/SelectImpl.js.map +0 -6
  199. package/dist/esm/SelectItem.js +0 -148
  200. package/dist/esm/SelectItem.js.map +0 -6
  201. package/dist/esm/SelectItemText.js +0 -46
  202. package/dist/esm/SelectItemText.js.map +0 -6
  203. package/dist/esm/SelectScrollButton.js +0 -87
  204. package/dist/esm/SelectScrollButton.js.map +0 -6
  205. package/dist/esm/SelectTrigger.js +0 -61
  206. package/dist/esm/SelectTrigger.js.map +0 -6
  207. package/dist/esm/SelectViewport.js +0 -112
  208. package/dist/esm/SelectViewport.js.map +0 -6
  209. package/dist/esm/constants.js +0 -11
  210. package/dist/esm/constants.js.map +0 -6
  211. package/dist/esm/context.js +0 -19
  212. package/dist/esm/context.js.map +0 -6
  213. package/dist/esm/types.js +0 -1
  214. package/dist/esm/types.js.map +0 -6
  215. package/dist/esm/useSelectBreakpointActive.js +0 -9
  216. package/dist/esm/useSelectBreakpointActive.js.map +0 -6
  217. package/dist/jsx/BubbleSelect.js +0 -17
  218. package/dist/jsx/BubbleSelect.js.map +0 -6
  219. package/dist/jsx/Select.js +0 -412
  220. package/dist/jsx/Select.js.map +0 -6
  221. package/dist/jsx/SelectContent.js +0 -39
  222. package/dist/jsx/SelectContent.js.map +0 -6
  223. package/dist/jsx/SelectImpl.js +0 -223
  224. package/dist/jsx/SelectImpl.js.map +0 -6
  225. package/dist/jsx/SelectItem.js +0 -148
  226. package/dist/jsx/SelectItem.js.map +0 -6
  227. package/dist/jsx/SelectItemText.js +0 -46
  228. package/dist/jsx/SelectItemText.js.map +0 -6
  229. package/dist/jsx/SelectScrollButton.js +0 -87
  230. package/dist/jsx/SelectScrollButton.js.map +0 -6
  231. package/dist/jsx/SelectTrigger.js +0 -61
  232. package/dist/jsx/SelectTrigger.js.map +0 -6
  233. package/dist/jsx/SelectViewport.js +0 -112
  234. package/dist/jsx/SelectViewport.js.map +0 -6
  235. package/dist/jsx/constants.js +0 -11
  236. package/dist/jsx/constants.js.map +0 -6
  237. package/dist/jsx/context.js +0 -19
  238. package/dist/jsx/context.js.map +0 -6
  239. package/dist/jsx/types.js +0 -1
  240. package/dist/jsx/types.js.map +0 -6
  241. package/dist/jsx/useSelectBreakpointActive.js +0 -9
  242. package/dist/jsx/useSelectBreakpointActive.js.map +0 -6
@@ -4,33 +4,35 @@ var __create = Object.create;
4
4
  var __defProp = Object.defineProperty;
5
5
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
6
  var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __getProtoOf = Object.getPrototypeOf,
8
- __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
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, {
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, {
17
18
  get: () => from[key],
18
19
  enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
19
20
  });
20
- return to;
21
- };
21
+ }
22
+ return to;
23
+ };
22
24
  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);
25
+ // If the importer is in node compatibility mode or this is not an ESM
26
+ // file that has been converted to a CommonJS file using a Babel-
27
+ // compatible transform (i.e. "__esModule" has not been set), then set
28
+ // "default" to the CommonJS "module.exports" for node compatibility.
29
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
30
+ value: mod,
31
+ enumerable: true
32
+ }) : target, mod));
33
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
34
+ value: true
35
+ }), mod);
34
36
  var Select_exports = {};
35
37
  __export(Select_exports, {
36
38
  Select: () => Select,
@@ -39,433 +41,437 @@ __export(Select_exports, {
39
41
  SelectSeparator: () => SelectSeparator
40
42
  });
41
43
  module.exports = __toCommonJS(Select_exports);
42
- var import_jsx_runtime = require("react/jsx-runtime"),
43
- import_adapt = require("@tamagui/adapt"),
44
- import_compose_refs = require("@tamagui/compose-refs"),
45
- import_constants = require("@tamagui/constants"),
46
- import_core = require("@tamagui/core"),
47
- import_focus_scope = require("@tamagui/focus-scope"),
48
- import_focusable = require("@tamagui/focusable"),
49
- import_get_token = require("@tamagui/get-token"),
50
- import_helpers = require("@tamagui/helpers"),
51
- import_separator = require("@tamagui/separator"),
52
- import_controller = require("@tamagui/sheet/controller"),
53
- import_stacks = require("@tamagui/stacks"),
54
- import_text = require("@tamagui/text"),
55
- import_use_controllable_state = require("@tamagui/use-controllable-state"),
56
- React = __toESM(require("react"), 1),
57
- import_context = require("./context.native.js"),
58
- import_SelectContent = require("./SelectContent.native.js"),
59
- import_SelectImpl = require("./SelectImpl.native.js"),
60
- import_SelectItem = require("./SelectItem.native.js"),
61
- import_SelectItemText = require("./SelectItemText.native.js"),
62
- import_SelectScrollButton = require("./SelectScrollButton.native.js"),
63
- import_SelectTrigger = require("./SelectTrigger.native.js"),
64
- import_SelectViewport = require("./SelectViewport.native.js"),
65
- import_useSelectBreakpointActive = require("./useSelectBreakpointActive.native.js"),
66
- VALUE_NAME = "SelectValue",
67
- SelectValueFrame = (0, import_core.styled)(import_text.SizableText, {
68
- name: VALUE_NAME,
69
- userSelect: "none"
70
- }),
71
- SelectValue = SelectValueFrame.styleable(function (param, forwardedRef) {
72
- var {
73
- scope,
74
- children: childrenProp,
75
- placeholder,
76
- ...props
77
- } = param,
78
- _context_renderValue,
79
- context = (0, import_context.useSelectContext)(scope),
80
- itemParentContext = (0, import_context.useSelectItemParentContext)(scope),
81
- composedRefs = (0, import_compose_refs.useComposedRefs)(
82
- // @ts-ignore TODO react 19 type needs fix
83
- forwardedRef, context.onValueNodeChange),
84
- isEmptyValue = context.value == null || context.value === "",
85
- renderedValue = (_context_renderValue = context.renderValue) === null || _context_renderValue === void 0 ? void 0 : _context_renderValue.call(context, context.value),
86
- _ref,
87
- _ref1,
88
- children = (_ref1 = (_ref = childrenProp ?? renderedValue) !== null && _ref !== void 0 ? _ref : itemParentContext.selectedItem) !== null && _ref1 !== void 0 ? _ref1 : context.value,
89
- selectValueChildren = isEmptyValue ? placeholder ?? children : children;
90
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(SelectValueFrame, {
91
- ...(!props.unstyled && {
92
- size: itemParentContext.size,
93
- ellipsis: !0,
94
- // we don't want events from the portalled `SelectValue` children to bubble
95
- // through the item they came from
96
- pointerEvents: "none"
97
- }),
98
- ref: composedRefs,
99
- ...props,
100
- children: unwrapSelectItem(selectValueChildren)
101
- });
44
+ var import_jsx_runtime = require("react/jsx-runtime");
45
+ var import_adapt = require("@tamagui/adapt");
46
+ var import_compose_refs = require("@tamagui/compose-refs");
47
+ var import_constants = require("@tamagui/constants");
48
+ var import_core = require("@tamagui/core");
49
+ var import_focus_scope = require("@tamagui/focus-scope");
50
+ var import_focusable = require("@tamagui/focusable");
51
+ var import_get_token = require("@tamagui/get-token");
52
+ var import_helpers = require("@tamagui/helpers");
53
+ var import_separator = require("@tamagui/separator");
54
+ var import_controller = require("@tamagui/sheet/controller");
55
+ var import_stacks = require("@tamagui/stacks");
56
+ var import_text = require("@tamagui/text");
57
+ var import_use_controllable_state = require("@tamagui/use-controllable-state");
58
+ var React = __toESM(require("react"), 1);
59
+ var import_context = require("./context.native.js");
60
+ var import_SelectContent = require("./SelectContent.native.js");
61
+ var import_SelectImpl = require("./SelectImpl.native.js");
62
+ var import_SelectItem = require("./SelectItem.native.js");
63
+ var import_SelectItemText = require("./SelectItemText.native.js");
64
+ var import_SelectScrollButton = require("./SelectScrollButton.native.js");
65
+ var import_SelectTrigger = require("./SelectTrigger.native.js");
66
+ var import_SelectViewport = require("./SelectViewport.native.js");
67
+ var import_useSelectBreakpointActive = require("./useSelectBreakpointActive.native.js");
68
+ var SelectValueFrame = (0, import_core.styled)(import_text.SizableText, {
69
+ name: "SelectValue",
70
+ userSelect: "none"
71
+ });
72
+ var SelectValue = SelectValueFrame.styleable(function SelectValue2(param, forwardedRef) {
73
+ var {
74
+ scope,
75
+ children: childrenProp,
76
+ placeholder,
77
+ ...props
78
+ } = param;
79
+ var _context_renderValue;
80
+ var context = (0, import_context.useSelectContext)(scope);
81
+ var itemParentContext = (0, import_context.useSelectItemParentContext)(scope);
82
+ var composedRefs = (0, import_compose_refs.useComposedRefs)(
83
+ // @ts-ignore TODO react 19 type needs fix
84
+ forwardedRef, context.onValueNodeChange);
85
+ var isEmptyValue = context.value == null || context.value === "";
86
+ var renderedValue = (_context_renderValue = context.renderValue) === null || _context_renderValue === void 0 ? void 0 : _context_renderValue.call(context, context.value);
87
+ var _ref, _ref1;
88
+ var children = (_ref1 = (_ref = childrenProp !== null && childrenProp !== void 0 ? childrenProp : renderedValue) !== null && _ref !== void 0 ? _ref : itemParentContext.selectedItem) !== null && _ref1 !== void 0 ? _ref1 : context.value;
89
+ var selectValueChildren = isEmptyValue ? placeholder !== null && placeholder !== void 0 ? placeholder : children : children;
90
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(SelectValueFrame, {
91
+ ...(!props.unstyled && {
92
+ size: itemParentContext.size,
93
+ ellipsis: true,
94
+ pointerEvents: "none"
95
+ }),
96
+ ref: composedRefs,
97
+ ...props,
98
+ children: unwrapSelectItem(selectValueChildren)
102
99
  });
100
+ });
103
101
  function unwrapSelectItem(selectValueChildren) {
104
102
  return React.Children.map(selectValueChildren, function (child) {
105
103
  if (child) {
106
104
  var _child_type_staticConfig, _child_type, _child_props;
107
- if (((_child_type = child.type) === null || _child_type === void 0 || (_child_type_staticConfig = _child_type.staticConfig) === null || _child_type_staticConfig === void 0 ? void 0 : _child_type_staticConfig.componentName) === import_SelectItemText.ITEM_TEXT_NAME) return child.props.children;
108
- if (!((_child_props = child.props) === null || _child_props === void 0) && _child_props.children) return unwrapSelectItem(child.props.children);
105
+ if (((_child_type = child.type) === null || _child_type === void 0 ? void 0 : (_child_type_staticConfig = _child_type.staticConfig) === null || _child_type_staticConfig === void 0 ? void 0 : _child_type_staticConfig.componentName) === import_SelectItemText.ITEM_TEXT_NAME) return child.props.children;
106
+ if ((_child_props = child.props) === null || _child_props === void 0 ? void 0 : _child_props.children) return unwrapSelectItem(child.props.children);
109
107
  }
110
108
  return child;
111
109
  });
112
110
  }
113
111
  var SelectIcon = (0, import_core.styled)(import_stacks.XStack, {
114
- name: "SelectIcon",
115
- // @ts-ignore
116
- "aria-hidden": !0,
117
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_text.Paragraph, {
118
- children: "\u25BC"
119
- })
120
- }),
121
- SelectItemIndicatorFrame = (0, import_core.styled)(import_stacks.XStack, {
122
- name: "SelectItemIndicator"
123
- }),
124
- SelectItemIndicator = /* @__PURE__ */React.forwardRef(function (props, forwardedRef) {
125
- var {
126
- scope,
127
- ...itemIndicatorProps
128
- } = props,
129
- context = (0, import_context.useSelectItemParentContext)(scope),
130
- itemContext = (0, import_SelectItem.useSelectItemContext)(scope);
131
- return context.shouldRenderWebNative ? null : itemContext.isSelected ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(SelectItemIndicatorFrame, {
132
- "aria-hidden": !0,
133
- ...itemIndicatorProps,
134
- ref: forwardedRef
135
- }) : null;
136
- }),
137
- SelectIndicatorFrame = (0, import_core.styled)(import_stacks.YStack, {
138
- name: "SelectIndicator",
139
- variants: {
140
- unstyled: {
141
- false: {
142
- position: "absolute",
143
- top: 0,
144
- left: 0,
145
- pointerEvents: "none",
146
- zIndex: 10,
147
- backgroundColor: "$background",
148
- borderRadius: 0
149
- }
112
+ name: "SelectIcon",
113
+ "aria-hidden": true,
114
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_text.Paragraph, {
115
+ children: "▼"
116
+ })
117
+ });
118
+ var SelectItemIndicatorFrame = (0, import_core.styled)(import_stacks.XStack, {
119
+ name: "SelectItemIndicator"
120
+ });
121
+ var SelectItemIndicator = /* @__PURE__ */React.forwardRef(function SelectItemIndicator2(props, forwardedRef) {
122
+ var {
123
+ scope,
124
+ ...itemIndicatorProps
125
+ } = props;
126
+ var context = (0, import_context.useSelectItemParentContext)(scope);
127
+ var itemContext = (0, import_SelectItem.useSelectItemContext)(scope);
128
+ if (context.shouldRenderWebNative) return null;
129
+ return itemContext.isSelected ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(SelectItemIndicatorFrame, {
130
+ "aria-hidden": true,
131
+ ...itemIndicatorProps,
132
+ ref: forwardedRef
133
+ }) : null;
134
+ });
135
+ var SelectIndicatorFrame = (0, import_core.styled)(import_stacks.YStack, {
136
+ name: "SelectIndicator",
137
+ variants: {
138
+ unstyled: {
139
+ false: {
140
+ position: "absolute",
141
+ top: 0,
142
+ left: 0,
143
+ pointerEvents: "none",
144
+ zIndex: 10,
145
+ backgroundColor: "$background",
146
+ borderRadius: 0
150
147
  }
151
- },
152
- defaultVariants: {
153
- unstyled: process.env.TAMAGUI_HEADLESS === "1"
154
148
  }
155
- }),
156
- SelectIndicator = SelectIndicatorFrame.styleable(function (param, forwardedRef) {
157
- var {
158
- scope,
159
- ...props
160
- } = param,
161
- itemContext = (0, import_context.useSelectItemParentContext)(scope),
162
- context = (0, import_context.useSelectContext)(scope),
163
- [layout, setLayout] = React.useState(null),
164
- rafRef = React.useRef(0);
165
- return React.useLayoutEffect(function () {
166
- var update = function (index) {
167
- typeof index == "number" && (cancelAnimationFrame(rafRef.current), rafRef.current = requestAnimationFrame(function () {
168
- var _itemContext_listRef_current,
169
- _itemContext_listRef,
170
- node = (_itemContext_listRef = itemContext.listRef) === null || _itemContext_listRef === void 0 || (_itemContext_listRef_current = _itemContext_listRef.current) === null || _itemContext_listRef_current === void 0 ? void 0 : _itemContext_listRef_current[index];
171
- node && setLayout({
172
- width: Math.round(node.offsetWidth),
173
- height: Math.round(node.offsetHeight),
174
- x: Math.round(node.offsetLeft),
175
- y: Math.round(node.offsetTop)
176
- });
177
- }));
178
- };
179
- return context.open && context.activeIndexRef.current !== null && update(context.activeIndexRef.current), itemContext.activeIndexSubscribe(update);
180
- }, [context.open, itemContext.listRef]), layout ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(SelectIndicatorFrame, {
181
- ref: forwardedRef,
182
- ...props,
183
- width: layout.width,
184
- height: layout.height,
185
- x: layout.x,
186
- y: layout.y
187
- }) : null;
188
- }),
189
- GROUP_NAME = "SelectGroup",
190
- {
191
- Provider: SelectGroupContextProvider,
192
- useStyledContext: useSelectGroupContext
193
- } = (0, import_core.createStyledContext)({
194
- id: ""
195
- }, "SelectGroup"),
196
- SelectGroupFrame = (0, import_core.styled)(import_stacks.YStack, {
197
- name: GROUP_NAME,
198
- width: "100%"
199
- }),
200
- NativeSelectTextFrame = (0, import_core.styled)(import_text.SizableText, {
201
- render: "select",
202
- backgroundColor: "$background",
203
- borderColor: "$borderColor",
204
- hoverStyle: {
205
- backgroundColor: "$backgroundHover"
206
- }
207
- }),
208
- NativeSelectFrame = (0, import_core.styled)(import_stacks.YStack, {
209
- name: "NativeSelect",
210
- variants: {
211
- size: {
212
- "...size": function (val, extras) {
213
- var {
214
- tokens
215
- } = extras,
216
- paddingHorizontal = (0, import_core.getVariableValue)(tokens.space[val]),
217
- _tokens_radius_val;
218
- return {
219
- borderRadius: (_tokens_radius_val = tokens.radius[val]) !== null && _tokens_radius_val !== void 0 ? _tokens_radius_val : val,
220
- minHeight: tokens.size[val],
221
- paddingRight: paddingHorizontal + 20,
222
- paddingLeft: paddingHorizontal,
223
- paddingVertical: (0, import_get_token.getSpace)(val, {
224
- shift: -3
225
- })
226
- };
227
- }
228
- },
229
- unstyled: {
230
- false: {
231
- borderWidth: 1,
232
- borderColor: "$borderColor",
233
- userSelect: "none",
234
- outlineWidth: 0,
235
- paddingRight: 10
236
- }
149
+ },
150
+ defaultVariants: {
151
+ unstyled: process.env.TAMAGUI_HEADLESS === "1"
152
+ }
153
+ });
154
+ var SelectIndicator = SelectIndicatorFrame.styleable(function SelectIndicator2(param, forwardedRef) {
155
+ var {
156
+ scope,
157
+ ...props
158
+ } = param;
159
+ var itemContext = (0, import_context.useSelectItemParentContext)(scope);
160
+ var context = (0, import_context.useSelectContext)(scope);
161
+ var [layout, setLayout] = React.useState(null);
162
+ var rafRef = React.useRef(0);
163
+ React.useLayoutEffect(function () {
164
+ var update = function (index) {
165
+ if (typeof index !== "number") return;
166
+ cancelAnimationFrame(rafRef.current);
167
+ rafRef.current = requestAnimationFrame(function () {
168
+ var _itemContext_listRef_current, _itemContext_listRef;
169
+ var node = (_itemContext_listRef = itemContext.listRef) === null || _itemContext_listRef === void 0 ? void 0 : (_itemContext_listRef_current = _itemContext_listRef.current) === null || _itemContext_listRef_current === void 0 ? void 0 : _itemContext_listRef_current[index];
170
+ if (node) setLayout({
171
+ width: Math.round(node.offsetWidth),
172
+ height: Math.round(node.offsetHeight),
173
+ x: Math.round(node.offsetLeft),
174
+ y: Math.round(node.offsetTop)
175
+ });
176
+ });
177
+ };
178
+ if (context.open && context.activeIndexRef.current !== null) update(context.activeIndexRef.current);
179
+ return itemContext.activeIndexSubscribe(update);
180
+ }, [context.open, itemContext.listRef]);
181
+ if (!layout) return null;
182
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(SelectIndicatorFrame, {
183
+ ref: forwardedRef,
184
+ ...props,
185
+ width: layout.width,
186
+ height: layout.height,
187
+ x: layout.x,
188
+ y: layout.y
189
+ });
190
+ });
191
+ var GROUP_NAME = "SelectGroup";
192
+ var {
193
+ Provider: SelectGroupContextProvider,
194
+ useStyledContext: useSelectGroupContext
195
+ } = (0, import_core.createStyledContext)({
196
+ id: ""
197
+ }, "SelectGroup");
198
+ var SelectGroupFrame = (0, import_core.styled)(import_stacks.YStack, {
199
+ name: GROUP_NAME,
200
+ width: "100%"
201
+ });
202
+ var NativeSelectTextFrame = (0, import_core.styled)(import_text.SizableText, {
203
+ render: "select",
204
+ backgroundColor: "$background",
205
+ borderColor: "$borderColor",
206
+ hoverStyle: {
207
+ backgroundColor: "$backgroundHover"
208
+ }
209
+ });
210
+ var NativeSelectFrame = (0, import_core.styled)(import_stacks.YStack, {
211
+ name: "NativeSelect",
212
+ variants: {
213
+ size: {
214
+ "...size": function (val, extras) {
215
+ var {
216
+ tokens
217
+ } = extras;
218
+ var paddingHorizontal = (0, import_core.getVariableValue)(tokens.space[val]);
219
+ var _tokens_radius_val;
220
+ return {
221
+ borderRadius: (_tokens_radius_val = tokens.radius[val]) !== null && _tokens_radius_val !== void 0 ? _tokens_radius_val : val,
222
+ minHeight: tokens.size[val],
223
+ paddingRight: paddingHorizontal + 20,
224
+ paddingLeft: paddingHorizontal,
225
+ paddingVertical: (0, import_get_token.getSpace)(val, {
226
+ shift: -3
227
+ })
228
+ };
237
229
  }
238
230
  },
239
- defaultVariants: {
240
- size: "$2",
241
- unstyled: process.env.TAMAGUI_HEADLESS === "1"
231
+ unstyled: {
232
+ false: {
233
+ borderWidth: 1,
234
+ borderColor: "$borderColor",
235
+ userSelect: "none",
236
+ outlineWidth: 0,
237
+ paddingRight: 10
238
+ }
242
239
  }
243
- }),
244
- SelectGroup = /* @__PURE__ */React.forwardRef(function (props, forwardedRef) {
245
- var {
246
- scope,
247
- ...groupProps
248
- } = props,
249
- groupId = React.useId(),
250
- context = (0, import_context.useSelectContext)(scope),
251
- itemParentContext = (0, import_context.useSelectItemParentContext)(scope),
252
- _itemParentContext_size,
253
- size = (_itemParentContext_size = itemParentContext.size) !== null && _itemParentContext_size !== void 0 ? _itemParentContext_size : "$true",
254
- nativeSelectRef = React.useRef(null),
255
- content = function () {
256
- return itemParentContext.shouldRenderWebNative ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(NativeSelectFrame, {
257
- asChild: !0,
258
- size,
259
- // @ts-expect-error until we support typing based on tag
260
- value: context.value,
261
- id: itemParentContext.id,
262
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(NativeSelectTextFrame, {
263
- // @ts-ignore it's ok since render="select"
264
- onChange: function (event) {
265
- itemParentContext.onChange(event.currentTarget.value);
266
- },
267
- size,
268
- ref: nativeSelectRef,
269
- style: {
270
- color: "var(--color)",
271
- // @ts-ignore
272
- appearance: "none"
273
- },
274
- children: props.children
275
- })
276
- }) : /* @__PURE__ */(0, import_jsx_runtime.jsx)(SelectGroupFrame, {
277
- // @ts-ignore
278
- role: "group",
279
- "aria-labelledby": groupId,
280
- ...groupProps,
281
- ref: forwardedRef
282
- });
283
- }();
284
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(SelectGroupContextProvider, {
285
- scope,
286
- id: groupId || "",
287
- children: content
240
+ },
241
+ defaultVariants: {
242
+ size: "$2",
243
+ unstyled: process.env.TAMAGUI_HEADLESS === "1" ? true : false
244
+ }
245
+ });
246
+ var SelectGroup = /* @__PURE__ */React.forwardRef(function (props, forwardedRef) {
247
+ var {
248
+ scope,
249
+ ...groupProps
250
+ } = props;
251
+ var groupId = React.useId();
252
+ var context = (0, import_context.useSelectContext)(scope);
253
+ var itemParentContext = (0, import_context.useSelectItemParentContext)(scope);
254
+ var _itemParentContext_size;
255
+ var size = (_itemParentContext_size = itemParentContext.size) !== null && _itemParentContext_size !== void 0 ? _itemParentContext_size : "$true";
256
+ var nativeSelectRef = React.useRef(null);
257
+ var content = function () {
258
+ if (itemParentContext.shouldRenderWebNative) return /* @__PURE__ */(0, import_jsx_runtime.jsx)(NativeSelectFrame, {
259
+ asChild: true,
260
+ size,
261
+ value: context.value,
262
+ id: itemParentContext.id,
263
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(NativeSelectTextFrame, {
264
+ onChange: function (event) {
265
+ itemParentContext.onChange(event.currentTarget.value);
266
+ },
267
+ size,
268
+ ref: nativeSelectRef,
269
+ style: {
270
+ color: "var(--color)",
271
+ appearance: "none"
272
+ },
273
+ children: props.children
274
+ })
275
+ });
276
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(SelectGroupFrame, {
277
+ role: "group",
278
+ "aria-labelledby": groupId,
279
+ ...groupProps,
280
+ ref: forwardedRef
288
281
  });
282
+ }();
283
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(SelectGroupContextProvider, {
284
+ scope,
285
+ id: groupId || "",
286
+ children: content
289
287
  });
288
+ });
290
289
  SelectGroup.displayName = GROUP_NAME;
291
- var LABEL_NAME = "SelectLabel",
292
- SelectLabelFrame = (0, import_core.styled)(import_text.SizableText, {
293
- name: LABEL_NAME,
294
- variants: {
295
- unstyled: {
296
- false: {
297
- size: "$true",
298
- ellipsis: !0,
299
- maxWidth: "100%",
300
- cursor: "default"
301
- }
302
- },
303
- size: {
304
- "...size": function (val, param) {
305
- var {
306
- tokens
307
- } = param;
308
- return {
309
- paddingHorizontal: tokens.space[val],
310
- paddingVertical: (0, import_get_token.getSpace)(tokens.space[val], {
311
- shift: -4
312
- })
313
- };
314
- }
290
+ var SelectLabelFrame = (0, import_core.styled)(import_text.SizableText, {
291
+ name: "SelectLabel",
292
+ variants: {
293
+ unstyled: {
294
+ false: {
295
+ size: "$true",
296
+ ellipsis: true,
297
+ maxWidth: "100%",
298
+ cursor: "default"
315
299
  }
316
300
  },
317
- defaultVariants: {
318
- unstyled: process.env.TAMAGUI_HEADLESS === "1"
301
+ size: {
302
+ "...size": function (val, param) {
303
+ var {
304
+ tokens
305
+ } = param;
306
+ return {
307
+ paddingHorizontal: tokens.space[val],
308
+ paddingVertical: (0, import_get_token.getSpace)(tokens.space[val], {
309
+ shift: -4
310
+ })
311
+ };
312
+ }
319
313
  }
320
- }),
321
- SelectLabel = SelectLabelFrame.styleable(function (props, forwardedRef) {
322
- var {
323
- scope,
324
- ...labelProps
325
- } = props,
326
- context = (0, import_context.useSelectItemParentContext)(scope),
327
- groupContext = useSelectGroupContext(scope);
328
- return context.shouldRenderWebNative ? null : /* @__PURE__ */(0, import_jsx_runtime.jsx)(SelectLabelFrame, {
329
- render: "div",
330
- id: groupContext.id,
331
- size: context.size,
332
- ...labelProps,
333
- ref: forwardedRef
334
- });
335
- }),
336
- SelectSeparator = (0, import_core.styled)(import_separator.Separator, {
337
- name: "SelectSeparator"
338
- }),
339
- SelectSheetController = function (props) {
340
- var context = (0, import_context.useSelectContext)(props.scope),
341
- showSheet = (0, import_useSelectBreakpointActive.useShowSelectSheet)(context),
342
- isAdapted = (0, import_adapt.useAdaptIsActive)(context.adaptScope),
343
- getShowSheet = (0, import_core.useGet)(showSheet);
344
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_controller.SheetController, {
345
- onOpenChange: function (val) {
346
- getShowSheet() && props.onOpenChange(val);
347
- },
348
- open: context.open,
349
- hidden: !isAdapted,
350
- children: props.children
351
- });
352
314
  },
353
- SelectSheetImpl = function (props) {
354
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
355
- children: props.children
356
- });
357
- },
358
- Select = (0, import_helpers.withStaticProperties)(function (props) {
359
- var adaptScope = `AdaptSelect${props.scope || ""}`;
360
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_adapt.AdaptParent, {
361
- scope: adaptScope,
362
- portal: !0,
363
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(SelectInner, {
364
- scope: props.scope,
365
- adaptScope,
366
- ...props
367
- })
368
- });
369
- }, {
370
- Adapt: import_adapt.Adapt,
371
- Content: import_SelectContent.SelectContent,
372
- Group: SelectGroup,
373
- Icon: SelectIcon,
374
- Item: import_SelectItem.SelectItem,
375
- ItemIndicator: SelectItemIndicator,
376
- ItemText: import_SelectItemText.SelectItemText,
377
- Label: SelectLabel,
378
- ScrollDownButton: import_SelectScrollButton.SelectScrollDownButton,
379
- ScrollUpButton: import_SelectScrollButton.SelectScrollUpButton,
380
- Trigger: import_SelectTrigger.SelectTrigger,
381
- Value: SelectValue,
382
- Viewport: import_SelectViewport.SelectViewport,
383
- Indicator: SelectIndicator,
384
- FocusScope: import_focus_scope.FocusScopeController
315
+ defaultVariants: {
316
+ unstyled: process.env.TAMAGUI_HEADLESS === "1"
317
+ }
318
+ });
319
+ var SelectLabel = SelectLabelFrame.styleable(function (props, forwardedRef) {
320
+ var {
321
+ scope,
322
+ ...labelProps
323
+ } = props;
324
+ var context = (0, import_context.useSelectItemParentContext)(scope);
325
+ var groupContext = useSelectGroupContext(scope);
326
+ if (context.shouldRenderWebNative) return null;
327
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(SelectLabelFrame, {
328
+ render: "div",
329
+ id: groupContext.id,
330
+ size: context.size,
331
+ ...labelProps,
332
+ ref: forwardedRef
333
+ });
334
+ });
335
+ var SelectSeparator = (0, import_core.styled)(import_separator.Separator, {
336
+ name: "SelectSeparator"
337
+ });
338
+ var SelectSheetController = function (props) {
339
+ var context = (0, import_context.useSelectContext)(props.scope);
340
+ var showSheet = (0, import_useSelectBreakpointActive.useShowSelectSheet)(context);
341
+ var isAdapted = (0, import_adapt.useAdaptIsActive)(context.adaptScope);
342
+ var getShowSheet = (0, import_core.useGet)(showSheet);
343
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_controller.SheetController, {
344
+ onOpenChange: function (val) {
345
+ if (getShowSheet()) props.onOpenChange(val);
346
+ },
347
+ open: context.open,
348
+ hidden: !isAdapted,
349
+ children: props.children
385
350
  });
351
+ };
352
+ var SelectSheetImpl = function (props) {
353
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
354
+ children: props.children
355
+ });
356
+ };
357
+ var Select = (0, import_helpers.withStaticProperties)(function Select2(props) {
358
+ var adaptScope = `AdaptSelect${props.scope || ""}`;
359
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_adapt.AdaptParent, {
360
+ scope: adaptScope,
361
+ portal: true,
362
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(SelectInner, {
363
+ scope: props.scope,
364
+ adaptScope,
365
+ ...props
366
+ })
367
+ });
368
+ }, {
369
+ Adapt: import_adapt.Adapt,
370
+ Content: import_SelectContent.SelectContent,
371
+ Group: SelectGroup,
372
+ Icon: SelectIcon,
373
+ Item: import_SelectItem.SelectItem,
374
+ ItemIndicator: SelectItemIndicator,
375
+ ItemText: import_SelectItemText.SelectItemText,
376
+ Label: SelectLabel,
377
+ ScrollDownButton: import_SelectScrollButton.SelectScrollDownButton,
378
+ ScrollUpButton: import_SelectScrollButton.SelectScrollUpButton,
379
+ Trigger: import_SelectTrigger.SelectTrigger,
380
+ Value: SelectValue,
381
+ Viewport: import_SelectViewport.SelectViewport,
382
+ Indicator: SelectIndicator,
383
+ FocusScope: import_focus_scope.FocusScopeController
384
+ });
386
385
  function useEmitter() {
387
- var listenersRef = React.useRef(/* @__PURE__ */new Set()),
388
- emit = React.useCallback(function (value) {
389
- listenersRef.current.forEach(function (l) {
390
- return l(value);
391
- });
392
- }, []),
393
- subscribe = React.useCallback(function (listener) {
394
- return listenersRef.current.add(listener), function () {
395
- listenersRef.current.delete(listener);
396
- };
397
- }, []);
398
- return [emit, subscribe];
386
+ var listenersRef = React.useRef(/* @__PURE__ */new Set());
387
+ return [React.useCallback(function (value) {
388
+ listenersRef.current.forEach(function (l) {
389
+ return l(value);
390
+ });
391
+ }, []), React.useCallback(function (listener) {
392
+ listenersRef.current.add(listener);
393
+ return function () {
394
+ listenersRef.current.delete(listener);
395
+ };
396
+ }, [])];
399
397
  }
400
398
  function SelectInner(props) {
401
399
  var {
402
- scope = "",
403
- adaptScope,
404
- native,
405
- children,
406
- open: openProp,
407
- defaultOpen,
408
- onOpenChange,
409
- value: valueProp,
410
- defaultValue,
411
- onValueChange,
412
- disablePreventBodyScroll,
413
- size: sizeProp = "$true",
414
- onActiveChange,
415
- dir,
416
- id,
417
- renderValue
418
- } = props,
419
- isAdapted = (0, import_adapt.useAdaptIsActive)(adaptScope),
420
- SelectImpl = isAdapted || !import_constants.isWeb ? SelectSheetImpl : import_SelectImpl.SelectInlineImpl,
421
- forceUpdate = React.useReducer(function () {
422
- return {};
423
- }, {})[1],
424
- [selectedItem, setSelectedItem] = React.useState(null),
425
- [open, setOpen] = (0, import_use_controllable_state.useControllableState)({
426
- prop: openProp,
427
- defaultProp: defaultOpen || !1,
428
- onChange: onOpenChange
429
- }),
430
- [value, setValue] = (0, import_use_controllable_state.useControllableState)({
431
- prop: valueProp,
432
- defaultProp: defaultValue || "",
433
- onChange: onValueChange,
434
- transition: !0
435
- });
400
+ scope = "",
401
+ adaptScope,
402
+ native,
403
+ children,
404
+ open: openProp,
405
+ defaultOpen,
406
+ onOpenChange,
407
+ value: valueProp,
408
+ defaultValue,
409
+ onValueChange,
410
+ disablePreventBodyScroll,
411
+ size: sizeProp = "$true",
412
+ onActiveChange,
413
+ dir,
414
+ id,
415
+ renderValue,
416
+ lazyMount,
417
+ zIndex
418
+ } = props;
419
+ var SelectImpl = (0, import_adapt.useAdaptIsActive)(adaptScope) || !import_constants.isWeb ? SelectSheetImpl : import_SelectImpl.SelectInlineImpl;
420
+ var forceUpdate = React.useReducer(function () {
421
+ return {};
422
+ }, {})[1];
423
+ var [selectedItem, setSelectedItem] = React.useState(null);
424
+ var [open, setOpen] = (0, import_use_controllable_state.useControllableState)({
425
+ prop: openProp,
426
+ defaultProp: defaultOpen || false,
427
+ onChange: onOpenChange
428
+ });
429
+ var [value, setValue] = (0, import_use_controllable_state.useControllableState)({
430
+ prop: valueProp,
431
+ defaultProp: defaultValue || "",
432
+ onChange: onValueChange,
433
+ transition: true
434
+ });
435
+ React.useEffect(function () {
436
+ if (open) emitValue(value);
437
+ }, [open]);
436
438
  React.useEffect(function () {
437
- open && emitValue(value);
438
- }, [open]), React.useEffect(function () {
439
439
  emitValue(value);
440
- }, [value]), React.useEffect(function () {
441
- if (props.id) return (0, import_focusable.registerFocusable)(props.id, {
440
+ }, [value]);
441
+ React.useEffect(function () {
442
+ if (!props.id) return;
443
+ return (0, import_focusable.registerFocusable)(props.id, {
442
444
  focusAndSelect: function () {
443
- setOpen?.(function (value2) {
445
+ setOpen === null || setOpen === void 0 || setOpen(function (value2) {
444
446
  return !value2;
445
447
  });
446
448
  },
447
449
  focus: function () {}
448
450
  });
449
451
  }, [props.id]);
450
- var activeIndexRef = React.useRef(null),
451
- [activeIndex, setActiveIndexState] = React.useState(null),
452
- [emitValue, valueSubscribe] = useEmitter(),
453
- [emitActiveIndex, activeIndexSubscribe] = useEmitter(),
454
- selectedIndexRef = React.useRef(null),
455
- listContentRef = React.useRef([]),
456
- [selectedIndex, setSelectedIndex] = React.useState(0),
457
- [valueNode, setValueNode] = React.useState(null);
452
+ var activeIndexRef = React.useRef(null);
453
+ var [activeIndex, setActiveIndexState] = React.useState(null);
454
+ var [emitValue, valueSubscribe] = useEmitter();
455
+ var [emitActiveIndex, activeIndexSubscribe] = useEmitter();
456
+ var selectedIndexRef = React.useRef(null);
457
+ var listContentRef = React.useRef([]);
458
+ var [selectedIndex, setSelectedIndex] = React.useState(0);
459
+ var [valueNode, setValueNode] = React.useState(null);
458
460
  (0, import_constants.useIsomorphicLayoutEffect)(function () {
459
461
  selectedIndexRef.current = selectedIndex;
460
462
  });
461
- var shouldRenderWebNative = import_constants.isWeb && (native === !0 || native === "web" || Array.isArray(native) && native.includes("web")),
462
- setActiveIndexFast = React.useCallback(function (index) {
463
- activeIndexRef.current !== index && (activeIndexRef.current = index, typeof index == "number" && emitActiveIndex(index));
464
- }, [emitActiveIndex]),
465
- setActiveIndex = React.useCallback(function (index) {
466
- setActiveIndexFast(index), setActiveIndexState(index);
467
- }, [setActiveIndexFast]);
468
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_context.SelectItemParentProvider, {
463
+ var shouldRenderWebNative = import_constants.isWeb && (native === true || native === "web" || Array.isArray(native) && native.includes("web"));
464
+ var setActiveIndexFast = React.useCallback(function (index) {
465
+ if (activeIndexRef.current !== index) {
466
+ activeIndexRef.current = index;
467
+ if (typeof index === "number") emitActiveIndex(index);
468
+ }
469
+ }, [emitActiveIndex]);
470
+ var setActiveIndex = React.useCallback(function (index) {
471
+ setActiveIndexFast(index);
472
+ setActiveIndexState(index);
473
+ }, [setActiveIndexFast]);
474
+ var content = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_context.SelectItemParentProvider, {
469
475
  scopeName: scope,
470
476
  scope,
471
477
  adaptScope,
@@ -474,14 +480,16 @@ function SelectInner(props) {
474
480
  }, [open]),
475
481
  size: sizeProp,
476
482
  activeIndexSubscribe,
483
+ activeIndexRef,
477
484
  valueSubscribe,
478
485
  setOpen,
479
486
  id,
480
487
  onChange: React.useCallback(function (val) {
481
- setValue(val), emitValue(val);
488
+ setValue(val);
489
+ emitValue(val);
482
490
  }, []),
483
491
  onActiveChange: (0, import_core.useEvent)(function (value2, index) {
484
- onActiveChange?.(value2, index);
492
+ onActiveChange === null || onActiveChange === void 0 || onActiveChange(value2, index);
485
493
  }),
486
494
  setSelectedIndex,
487
495
  setValueAtIndex: React.useCallback(function (index, value2) {
@@ -497,8 +505,8 @@ function SelectInner(props) {
497
505
  adaptScope,
498
506
  disablePreventBodyScroll,
499
507
  dir,
500
- blockSelection: !1,
501
- fallback: !1,
508
+ blockSelection: false,
509
+ fallback: false,
502
510
  forceUpdate,
503
511
  valueNode,
504
512
  onValueNodeChange: setValueNode,
@@ -510,6 +518,7 @@ function SelectInner(props) {
510
518
  open,
511
519
  native,
512
520
  renderValue,
521
+ lazyMount,
513
522
  children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(SelectSheetController, {
514
523
  onOpenChange: setOpen,
515
524
  scope,
@@ -526,5 +535,10 @@ function SelectInner(props) {
526
535
  })
527
536
  })
528
537
  });
538
+ if (zIndex !== void 0) return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_context.SelectZIndexContext.Provider, {
539
+ value: zIndex,
540
+ children: content
541
+ });
542
+ return content;
529
543
  }
530
544
  //# sourceMappingURL=Select.native.js.map