@tamagui/select 2.7.7 → 3.0.0-beta.1091.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
@@ -7,82 +7,86 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
7
7
  var __getProtoOf = Object.getPrototypeOf;
8
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: true
13
- });
10
+ for (var name in all) __defProp(target, name, {
11
+ get: all[name],
12
+ enumerable: true
13
+ });
14
14
  };
15
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;
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
23
  };
24
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
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
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
32
27
  }) : target, mod));
33
- var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
34
- value: true
35
- }), mod);
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
36
29
  var SelectTrigger_exports = {};
37
30
  __export(SelectTrigger_exports, {
38
- SelectTrigger: () => SelectTrigger
31
+ SelectTrigger: () => SelectTrigger,
32
+ SelectTriggerFrame: () => SelectTriggerFrame
39
33
  });
40
34
  module.exports = __toCommonJS(SelectTrigger_exports);
41
35
  var import_jsx_runtime = require("react/jsx-runtime");
42
36
  var import_compose_refs = require("@tamagui/compose-refs");
43
- var import_list_item = require("@tamagui/list-item");
44
- var React = __toESM(require("react"), 1);
37
+ var import_constants = require("@tamagui/constants");
38
+ var import_core = require("@tamagui/core");
39
+ var import_helpers = require("@tamagui/helpers");
40
+ __toESM(require("react"), 1);
45
41
  var import_context = require("./context.native.js");
46
- var TRIGGER_NAME = "SelectTrigger";
47
- var SelectTrigger = /* @__PURE__ */React.forwardRef(function SelectTrigger2(props, forwardedRef) {
48
- var _context_floatingContext;
49
- var {
50
- scope,
51
- disabled = false,
52
- unstyled = false,
53
- ...triggerProps
54
- } = props;
55
- var context = (0, import_context.useSelectContext)(scope);
56
- var itemParentContext = (0, import_context.useSelectItemParentContext)(scope);
57
- var composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, (_context_floatingContext = context.floatingContext) === null || _context_floatingContext === void 0 ? void 0 : _context_floatingContext.refs.setReference);
58
- if (itemParentContext.shouldRenderWebNative) return null;
59
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_list_item.ListItem, {
60
- componentName: TRIGGER_NAME,
61
- unstyled,
62
- render: "button",
63
- type: "button",
64
- id: itemParentContext.id,
65
- ...(!unstyled && {
66
- focusVisibleStyle: {
67
- outlineStyle: "solid",
68
- outlineWidth: 2,
69
- outlineColor: "$outlineColor"
70
- },
71
- borderWidth: 1,
72
- size: itemParentContext.size
73
- }),
74
- role: "combobox",
75
- "aria-haspopup": "listbox",
76
- "aria-expanded": context.open,
77
- "aria-autocomplete": "none",
78
- dir: context.dir,
79
- disabled,
80
- "data-disabled": disabled ? "" : void 0,
81
- ...triggerProps,
82
- ref: composedRefs,
83
- onPress() {
84
- itemParentContext.setOpen(!context.open);
85
- }
86
- });
42
+ var SelectTriggerFrame = (0, import_core.styled)(import_core.View, {
43
+ displayName: "SelectTrigger",
44
+ alignItems: "center",
45
+ flexDirection: "row",
46
+ render: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { type: "button" })
87
47
  });
48
+ var SelectTrigger = (0, import_core.createStyledHOC)(SelectTriggerFrame, function SelectTrigger2(props, forwardedRef) {
49
+ var _context_floatingContext;
50
+ var { scope, disabled = false, ...triggerProps } = props;
51
+ var context = (0, import_context.useSelectContext)(scope);
52
+ var itemParentContext = (0, import_context.useSelectItemParentContext)(scope);
53
+ var composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, (_context_floatingContext = context.floatingContext) === null || _context_floatingContext === void 0 ? void 0 : _context_floatingContext.refs.setReference);
54
+ if (itemParentContext.shouldRenderWebNative) return null;
55
+ var toggleOpen = function(event) {
56
+ var reason = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "trigger-press";
57
+ if (!disabled) itemParentContext.requestOpenChange(!context.open, (0, import_core.createChangeEventDetails)(reason, (event === null || event === void 0 ? void 0 : event.nativeEvent) || event, event === null || event === void 0 ? void 0 : event.currentTarget));
58
+ };
59
+ var interactionProps = {
60
+ ...triggerProps,
61
+ ...import_constants.isWeb ? { onMouseDown: (0, import_helpers.composeEventHandlers)(triggerProps.onMouseDown, function(event) {
62
+ event.preventDefault();
63
+ toggleOpen(event);
64
+ }) } : { onPress: (0, import_helpers.composeEventHandlers)(triggerProps.onPress, toggleOpen) },
65
+ onKeyDown: (0, import_helpers.composeEventHandlers)(triggerProps.onKeyDown, function(event) {
66
+ if (event.key === "Enter" || event.key === " ") {
67
+ event.preventDefault();
68
+ toggleOpen(event, "keyboard");
69
+ }
70
+ })
71
+ };
72
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectTriggerFrame, {
73
+ type: "button",
74
+ id: itemParentContext.id,
75
+ role: "combobox",
76
+ "aria-haspopup": "listbox",
77
+ "aria-expanded": context.open,
78
+ "aria-autocomplete": "none",
79
+ accessibilityRole: import_constants.isWeb ? void 0 : "button",
80
+ accessibilityState: import_constants.isWeb ? void 0 : {
81
+ expanded: context.open,
82
+ disabled
83
+ },
84
+ dir: context.dir,
85
+ disabled,
86
+ "data-disabled": disabled ? "" : void 0,
87
+ ...interactionProps,
88
+ ref: composedRefs
89
+ });
90
+ });
91
+
88
92
  //# sourceMappingURL=SelectTrigger.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["isNodeMode","mod","__esModule","__defProp","target","value","enumerable","__toCommonJS","__copyProps","SelectTrigger_exports","__export","SelectTrigger","module","exports","import_jsx_runtime","require","import_compose_refs","import_list_item","React","__toESM","import_context","TRIGGER_NAME","forwardRef","SelectTrigger2","props","forwardedRef","_context_floatingContext","scope","disabled","unstyled","triggerProps","context","useSelectContext","itemParentContext","useSelectItemParentContext","composedRefs","useComposedRefs","floatingContext","refs","setReference","shouldRenderWebNative","jsx","ListItem","componentName","render","type","id","focusVisibleStyle","outlineStyle","outlineWidth","outlineColor","borderWidth","size","role","open","dir","ref","onPress","setOpen"],"sources":["../../src/SelectTrigger.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAAA,UAAA,KAAAC,GAAA,KAAAA,GAAA,CAAAC,UAAA,GAAAC,SAAA,CAAAC,MAAA;EAAAC,KAAA,EAAAJ,GAAA;EAAAK,UAAA;AAAA,KAAAF,MAAA,EAAAH,GAAA;AAGA,IAAAM,YAAA,GAAAN,GAAyB,IAAAO,WAAA,CAAAL,SAAA;EAAAE,KAAA;AAAA,IAAAJ,GAAA;AACzB,IAAAQ,qBAAuB;AAEvBC,QAAA,CAAAD,qBAA6D;EAAAE,aAAA,EAAAA,CAAA,KAAAA;AAAA;AAiCvDC,MAAA,CAAAC,OAAA,GAAAN,YAAA,CAAAE,qBAAA;AA3BN,IAAAK,kBAAqB,GAAAC,OAAA;AAIrB,IAAAC,mBAAM,GACJD,OAAO,wBAA0B;AAI5B,IAAAE,gBAAM,GAAgBF,OAAM;AAAA,IACjCG,KAAA,GAASC,OAAA,CAAAJ,OAAc,QAA2B;AAChD,IAAAK,cAAQ,GAAOL,OAAA,sBAAkB;AAEjC,IAAAM,YAAM,kBAAU;AAChB,IAAAV,aAAM,kBAAoBO,KAAA,CAAAI,UAAA,UAAAC,eAA2BC,KAAK,EAAAC,YAAA;EAC1D,IAAAC,wBAAqB;EAAA;IACnBC,KAAA;IAAAC,QAAA;IAAAC,QAAA;IAAA,GAAAC;EAAA,IAAAN,KAAA;EAAA,IAAAO,OACA,GAAQ,IAAAX,cAAiB,CAAAY,gBAAK,EAAAL,KAAA;EAAA,IAChCM,iBAAA,OAAAb,cAAA,CAAAc,0BAAA,EAAAP,KAAA;EAIA,IAAAQ,YAAI,OAAAnB,mBAAkB,CAAAoB,eAAuB,EAAAX,YAAA,GAAAC,wBAAA,GAAAK,OAAA,CAAAM,eAAA,cAAAX,wBAAA,uBAAAA,wBAAA,CAAAY,IAAA,CAAAC,YAAA;EAC3C,IAAAN,iBAAO,CAAAO,qBAAA;EAAA,OACT,mBAAA1B,kBAAA,CAAA2B,GAAA,EAAAxB,gBAAA,CAAAyB,QAAA;IAEAC,aACE,EAAAtB,YAAA;IAAAQ,QAAC;IAAAe,MAAA;IAAAC,IAAA,EACC;IAAeC,EAAA,EAAAb,iBACf,CAAAa,EAAA;IAAA,KAAAjB,QACA,IAAO;MAAAkB,iBACF;QAAAC,YACD;QAAkBC,YAChB;QAAYC,YAChB;MAAmB;MACHC,WACd;MAAcC,IAAA,EAAAnB,iBACA,CAAAmB;IAAA;IAChBC,IAAA,YACA;IAAa,eACP;IAAkB,eAC1B,EAAAtB,OAAA,CAAAuB,IAAA;IAAA,mBACK;IAAAC,GAAA,EAAAxB,OACL,CAAAwB,GAAA;IAAc3B,QACd;IAAuB,eACvB,EAAAA,QAAA,GAAkB;IAAA,GAAAE,YACb;IAAQ0B,GAAA,EAAArB,YACb;IAAAsB,OACAA,CAAA;MAA+BxB,iBAC3B,CAAAyB,OAAA,EAAA3B,OAAA,CAAAuB,IAAA;IAAA;EACC;AAED","ignoreList":[]}
1
+ {"version":3,"file":"SelectTrigger.native.js","names":[],"sources":["cjs/SelectTrigger.native.js"],"sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n\tfor (var name in all) __defProp(target, name, {\n\t\tget: all[name],\n\t\tenumerable: true\n\t});\n};\nvar __copyProps = (to, from, except, desc) => {\n\tif (from && typeof from === \"object\" || typeof from === \"function\") {\n\t\tfor (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {\n\t\t\tget: () => from[key],\n\t\t\tenumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n\t\t});\n\t}\n\treturn to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n\t// If the importer is in node compatibility mode or this is not an ESM\n\t// file that has been converted to a CommonJS file using a Babel-\n\t// compatible transform (i.e. \"__esModule\" has not been set), then set\n\t// \"default\" to the CommonJS \"module.exports\" for node compatibility.\n\tisNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", {\n\t\tvalue: mod,\n\t\tenumerable: true\n\t}) : target,\n\tmod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar SelectTrigger_exports = {};\n__export(SelectTrigger_exports, {\n\tSelectTrigger: () => SelectTrigger,\n\tSelectTriggerFrame: () => SelectTriggerFrame\n});\nmodule.exports = __toCommonJS(SelectTrigger_exports);\nvar import_jsx_runtime = require(\"react/jsx-runtime\");\nvar import_compose_refs = require(\"@tamagui/compose-refs\");\nvar import_constants = require(\"@tamagui/constants\");\nvar import_core = require(\"@tamagui/core\");\nvar import_helpers = require(\"@tamagui/helpers\");\n__toESM(require(\"react\"), 1);\nvar import_context = require(\"./context\");\nvar SelectTriggerFrame = (0, import_core.styled)(import_core.View, {\n\tdisplayName: \"SelectTrigger\",\n\talignItems: \"center\",\n\tflexDirection: \"row\",\n\trender: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"button\", { type: \"button\" })\n});\nvar SelectTrigger = (0, import_core.createStyledHOC)(SelectTriggerFrame, function SelectTrigger2(props, forwardedRef) {\n\tvar _context_floatingContext;\n\tvar { scope, disabled = false, ...triggerProps } = props;\n\tvar context = (0, import_context.useSelectContext)(scope);\n\tvar itemParentContext = (0, import_context.useSelectItemParentContext)(scope);\n\tvar composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, (_context_floatingContext = context.floatingContext) === null || _context_floatingContext === void 0 ? void 0 : _context_floatingContext.refs.setReference);\n\tif (itemParentContext.shouldRenderWebNative) return null;\n\tvar toggleOpen = function(event) {\n\t\tvar reason = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : \"trigger-press\";\n\t\tif (!disabled) itemParentContext.requestOpenChange(!context.open, (0, import_core.createChangeEventDetails)(reason, (event === null || event === void 0 ? void 0 : event.nativeEvent) || event, event === null || event === void 0 ? void 0 : event.currentTarget));\n\t};\n\tvar interactionProps = {\n\t\t...triggerProps,\n\t\t...import_constants.isWeb ? { onMouseDown: (0, import_helpers.composeEventHandlers)(triggerProps.onMouseDown, function(event) {\n\t\t\tevent.preventDefault();\n\t\t\ttoggleOpen(event);\n\t\t}) } : { onPress: (0, import_helpers.composeEventHandlers)(triggerProps.onPress, toggleOpen) },\n\t\tonKeyDown: (0, import_helpers.composeEventHandlers)(triggerProps.onKeyDown, function(event) {\n\t\t\tif (event.key === \"Enter\" || event.key === \" \") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\ttoggleOpen(event, \"keyboard\");\n\t\t\t}\n\t\t})\n\t};\n\treturn /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectTriggerFrame, {\n\t\ttype: \"button\",\n\t\tid: itemParentContext.id,\n\t\trole: \"combobox\",\n\t\t\"aria-haspopup\": \"listbox\",\n\t\t\"aria-expanded\": context.open,\n\t\t\"aria-autocomplete\": \"none\",\n\t\taccessibilityRole: import_constants.isWeb ? void 0 : \"button\",\n\t\taccessibilityState: import_constants.isWeb ? void 0 : {\n\t\t\texpanded: context.open,\n\t\t\tdisabled\n\t\t},\n\t\tdir: context.dir,\n\t\tdisabled,\n\t\t\"data-disabled\": disabled ? \"\" : void 0,\n\t\t...interactionProps,\n\t\tref: composedRefs\n\t});\n});\n//# sourceMappingURL=SelectTrigger.js.map\n"],"mappings":"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"}
@@ -5,36 +5,29 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __getProtoOf = Object.getPrototypeOf;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
7
  var __export = (target, all) => {
8
- for (var name in all) __defProp(target, name, {
9
- get: all[name],
10
- enumerable: true
11
- });
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
12
  };
13
13
  var __copyProps = (to, from, except, desc) => {
14
- if (from && typeof from === "object" || typeof from === "function") {
15
- for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
- get: () => from[key],
17
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
- });
19
- }
20
- return to;
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
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: true
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
23
+ value: mod,
24
+ enumerable: true
30
25
  }) : target, mod));
31
- var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
32
- value: true
33
- }), mod);
26
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
34
27
  var SelectViewport_exports = {};
35
28
  __export(SelectViewport_exports, {
36
- SelectViewport: () => SelectViewport,
37
- SelectViewportFrame: () => SelectViewportFrame
29
+ SelectViewport: () => SelectViewport,
30
+ SelectViewportFrame: () => SelectViewportFrame
38
31
  });
39
32
  module.exports = __toCommonJS(SelectViewport_exports);
40
33
  var import_adapt = require("@tamagui/adapt");
@@ -48,133 +41,119 @@ var import_start_transition = require("@tamagui/start-transition");
48
41
  var React = __toESM(require("react"), 1);
49
42
  var import_constants2 = require("./constants.cjs");
50
43
  var import_context = require("./context.cjs");
44
+ var import_selectionController = require("./selectionController.cjs");
51
45
  var import_jsx_runtime = require("react/jsx-runtime");
52
- const SelectViewportFrame = (0, import_core.styled)(import_stacks.ThemeableStack, {
53
- name: import_constants2.VIEWPORT_NAME,
54
- variants: {
55
- unstyled: {
56
- false: {
57
- size: "$2",
58
- backgroundColor: "$background",
59
- elevate: true,
60
- bordered: true,
61
- userSelect: "none",
62
- outlineWidth: 0
63
- }
64
- },
65
- size: {
66
- "...size": (val, {
67
- tokens
68
- }) => {
69
- return {
70
- borderRadius: tokens.radius[val] ?? val
71
- };
72
- }
73
- }
74
- },
75
- defaultVariants: {
76
- unstyled: process.env.TAMAGUI_HEADLESS === "1"
77
- }
46
+ const SelectViewportFrame = (0, import_core.styled)(import_core.View, {
47
+ displayName: import_constants2.VIEWPORT_NAME,
48
+ position: "relative"
78
49
  });
79
50
  const needsRepropagation = (0, import_portal.needsPortalRepropagation)();
80
- const SelectViewport = SelectViewportFrame.styleable(function SelectViewport2(props, forwardedRef) {
81
- const {
82
- scope,
83
- children,
84
- disableScroll,
85
- ...viewportProps
86
- } = props;
87
- const context = (0, import_context.useSelectContext)(scope);
88
- const itemContext = (0, import_context.useSelectItemParentContext)(scope);
89
- const isAdapted = (0, import_adapt.useAdaptIsActive)(context.adaptScope);
90
- const [lazyMounted, setLazyMounted] = React.useState(context.lazyMount ? false : true);
91
- React.useEffect(() => {
92
- if (!context.lazyMount) return;
93
- if (!context.open) return;
94
- if (lazyMounted) return;
95
- (0, import_start_transition.startTransition)(() => {
96
- setLazyMounted(true);
97
- });
98
- }, [context.lazyMount, context.open, lazyMounted]);
99
- const composedRefs = (0, import_compose_refs.useComposedRefs)(
100
- // @ts-ignore TODO react 19 type needs fix
101
- forwardedRef, context.floatingContext?.refs.setFloating);
102
- (0, import_constants.useIsomorphicLayoutEffect)(() => {
103
- if (context.update) {
104
- context.update();
105
- }
106
- }, [isAdapted]);
107
- (0, import_constants.useIsomorphicLayoutEffect)(() => {
108
- if (context.lazyMount && lazyMounted && context.open && context.update) {
109
- context.update();
110
- }
111
- }, [lazyMounted]);
112
- if (itemContext.shouldRenderWebNative) {
113
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_stacks.YStack, {
114
- position: "relative",
115
- children
116
- });
117
- }
118
- if (isAdapted || !import_constants.isWeb) {
119
- let content = children;
120
- if (needsRepropagation) {
121
- content = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_context.ForwardSelectContext, {
122
- itemContext,
123
- context,
124
- children: content
125
- });
126
- }
127
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_adapt.AdaptPortalContents, {
128
- scope: context.adaptScope,
129
- children: content
130
- });
131
- }
132
- if (!itemContext.interactions) {
133
- if (process.env.NODE_ENV === "development") {
134
- console.warn(`No interactions provided to Select, potentially missing Adapt`);
135
- }
136
- return null;
137
- }
138
- const {
139
- style,
140
- // remove this, it was set to "Select" always
141
- className,
142
- ...floatingProps
143
- } = itemContext.interactions.getFloatingProps();
144
- return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
145
- children: [!disableScroll && !props.unstyled && /* @__PURE__ */(0, import_jsx_runtime.jsx)("style", {
146
- dangerouslySetInnerHTML: {
147
- __html: selectViewportCSS
148
- }
149
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_animate_presence.AnimatePresence, {
150
- children: context.open ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(SelectViewportFrame, {
151
- size: itemContext.size,
152
- role: "presentation",
153
- ...viewportProps,
154
- ...style,
155
- ...floatingProps,
156
- ...(!props.unstyled && {
157
- overflowY: disableScroll ? void 0 : style.overflow ?? "auto"
158
- }),
159
- ref: composedRefs,
160
- children: lazyMounted ? children : null
161
- }, "select-viewport") : null
162
- }), !context.open && !(context.lazyMount && context.renderValue) && lazyMounted && /* @__PURE__ */(0, import_jsx_runtime.jsx)("div", {
163
- style: {
164
- display: "none"
165
- },
166
- children
167
- })]
168
- });
51
+ const SelectViewport = (0, import_core.createStyledHOC)(SelectViewportFrame, function SelectViewport2(props, forwardedRef) {
52
+ const { scope, children, disableScroll, ...viewportProps } = props;
53
+ const context = (0, import_context.useSelectContext)(scope);
54
+ const itemContext = (0, import_context.useSelectItemParentContext)(scope);
55
+ const isAdapted = (0, import_adapt.useAdaptIsActive)(context.adaptScope);
56
+ const viewportRef = React.useRef(null);
57
+ const registeredItemCount = itemContext.registry.getItems().length;
58
+ const [lazyMounted, setLazyMounted] = React.useState(context.lazyMount ? false : true);
59
+ React.useEffect(() => {
60
+ if (!context.lazyMount) return;
61
+ if (!context.open) return;
62
+ if (lazyMounted) return;
63
+ (0, import_start_transition.startTransition)(() => {
64
+ setLazyMounted(true);
65
+ });
66
+ }, [
67
+ context.lazyMount,
68
+ context.open,
69
+ lazyMounted
70
+ ]);
71
+ React.useEffect(() => {
72
+ if (!import_constants.isWeb || !isAdapted || !context.open) return;
73
+ const frame = requestAnimationFrame(() => {
74
+ const index = context.activeIndexRef.current ?? itemContext.registry.firstEnabledIndex();
75
+ const activeItem = viewportRef.current?.querySelector("[role=\"option\"][tabindex=\"0\"]") ?? (index >= 0 ? itemContext.listRef?.current[index] : null);
76
+ activeItem?.focus();
77
+ });
78
+ return () => cancelAnimationFrame(frame);
79
+ }, [
80
+ context.open,
81
+ isAdapted,
82
+ registeredItemCount
83
+ ]);
84
+ const composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, viewportRef, context.floatingContext?.refs.setFloating);
85
+ (0, import_constants.useIsomorphicLayoutEffect)(() => {
86
+ if (context.update) {
87
+ context.update();
88
+ }
89
+ }, [isAdapted]);
90
+ React.useEffect(() => {
91
+ if (context.lazyMount && lazyMounted && context.open && context.update) {
92
+ const frame = requestAnimationFrame(context.update);
93
+ return () => cancelAnimationFrame(frame);
94
+ }
95
+ }, [lazyMounted, registeredItemCount]);
96
+ if (itemContext.shouldRenderWebNative) {
97
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stacks.YStack, {
98
+ position: "relative",
99
+ children
100
+ });
101
+ }
102
+ if (isAdapted || !import_constants.isWeb) {
103
+ let content = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectViewportFrame, {
104
+ ...viewportProps,
105
+ ...import_constants.isWeb ? (0, import_selectionController.getSelectListboxProps)(itemContext.mode) : {},
106
+ "data-select-viewport": "",
107
+ ref: composedRefs,
108
+ children: lazyMounted ? children : null
109
+ });
110
+ if (needsRepropagation) {
111
+ content = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_context.ForwardSelectContext, {
112
+ itemContext,
113
+ context,
114
+ children: content
115
+ });
116
+ }
117
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_adapt.AdaptPortalContents, {
118
+ scope: context.adaptScope,
119
+ children: content
120
+ });
121
+ }
122
+ if (!context.interactions) {
123
+ return null;
124
+ }
125
+ const floatingProps = context.interactions.getFloatingProps();
126
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
127
+ !disableScroll && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("style", { dangerouslySetInnerHTML: { __html: selectViewportCSS } }),
128
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_animate_presence.AnimatePresence, {
129
+ presenceAffectsLayout: false,
130
+ children: context.open ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectViewportFrame, {
131
+ "data-select-viewport": "",
132
+ ...import_constants.isWeb && { "data-state": context.open ? "open" : "closed" },
133
+ ...viewportProps,
134
+ ...context.floatingPosition,
135
+ outlineWidth: 0,
136
+ ...floatingProps,
137
+ ...(0, import_selectionController.getSelectListboxProps)(itemContext.mode),
138
+ overflowY: disableScroll ? void 0 : "auto",
139
+ ref: composedRefs,
140
+ children: lazyMounted ? children : null
141
+ }, "select-viewport") : null
142
+ }),
143
+ !context.open && !(context.lazyMount && context.renderValue) && lazyMounted && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
144
+ style: { display: "none" },
145
+ children
146
+ })
147
+ ] });
169
148
  });
170
149
  const selectViewportCSS = `
171
- .is_SelectViewport {
150
+ [data-select-viewport] {
172
151
  scrollbar-width: none;
173
152
  -webkit-overflow-scrolling: touch;
174
153
  overscroll-behavior: contain;
175
154
  }
176
155
 
177
- .is_SelectViewport::-webkit-scrollbar{
156
+ [data-select-viewport]::-webkit-scrollbar{
178
157
  display:none
179
158
  }
180
- `;
159
+ `;
@@ -0,0 +1,72 @@
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: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
23
+ var SelectViewport_native_exports = {};
24
+ __export(SelectViewport_native_exports, {
25
+ SelectViewport: () => SelectViewport,
26
+ SelectViewportFrame: () => SelectViewportFrame
27
+ });
28
+ module.exports = __toCommonJS(SelectViewport_native_exports);
29
+ var import_jsx_runtime = require("react/jsx-runtime");
30
+ var import_adapt = require("@tamagui/adapt");
31
+ var import_core = require("@tamagui/core");
32
+ var import_constants = require("./constants.native.js");
33
+ var import_context = require("./context.native.js");
34
+ var SelectViewportFrame = (0, import_core.styled)(import_core.View, {
35
+ displayName: import_constants.VIEWPORT_NAME,
36
+ position: "relative"
37
+ });
38
+ var SelectViewport = (0, import_core.createStyledHOC)(SelectViewportFrame, function SelectViewport2(props, forwardedRef) {
39
+ var { scope, children, disableScroll: _disableScroll, ...viewportProps } = props;
40
+ var context = (0, import_context.useSelectContext)(scope);
41
+ var itemParentContext = (0, import_context.useSelectItemParentContext)(scope);
42
+ var themeName = (0, import_core.useThemeName)();
43
+ var adaptContext = (0, import_adapt.useAdaptContext)(context.adaptScope);
44
+ var isAdapted = (0, import_adapt.useAdaptIsActive)(context.adaptScope);
45
+ var contents = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_core.Theme, {
46
+ name: themeName,
47
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_context.ForwardSelectContext, {
48
+ itemContext: itemParentContext,
49
+ context,
50
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_adapt.ProvideAdaptContext, {
51
+ ...adaptContext,
52
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectViewportFrame, {
53
+ ...viewportProps,
54
+ ref: forwardedRef,
55
+ children
56
+ })
57
+ })
58
+ })
59
+ });
60
+ if (!context.open) {
61
+ if (context.lazyMount && context.renderValue) return null;
62
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectViewportFrame, {
63
+ display: "none",
64
+ children: contents
65
+ });
66
+ }
67
+ return isAdapted ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_adapt.AdaptPortalContents, {
68
+ scope: context.adaptScope,
69
+ children: contents
70
+ }) : contents;
71
+ });
72
+ SelectViewport.displayName = import_constants.VIEWPORT_NAME;