@tamagui/select 1.111.7 → 1.111.9

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 (57) hide show
  1. package/dist/esm/BubbleSelect.native.js +1 -1
  2. package/dist/esm/BubbleSelect.native.js.map +1 -6
  3. package/dist/esm/Select.native.js +345 -278
  4. package/dist/esm/Select.native.js.map +1 -6
  5. package/dist/esm/SelectContent.native.js +5 -5
  6. package/dist/esm/SelectContent.native.js.map +1 -6
  7. package/dist/esm/SelectImpl.native.js +3 -5
  8. package/dist/esm/SelectImpl.native.js.map +1 -6
  9. package/dist/esm/SelectItem.native.js +124 -105
  10. package/dist/esm/SelectItem.native.js.map +1 -6
  11. package/dist/esm/SelectItemText.native.js +46 -40
  12. package/dist/esm/SelectItemText.native.js.map +1 -6
  13. package/dist/esm/SelectScrollButton.native.js +7 -9
  14. package/dist/esm/SelectScrollButton.native.js.map +1 -6
  15. package/dist/esm/SelectTrigger.native.js +48 -39
  16. package/dist/esm/SelectTrigger.native.js.map +1 -6
  17. package/dist/esm/SelectViewport.native.js +16 -11
  18. package/dist/esm/SelectViewport.native.js.map +1 -6
  19. package/dist/esm/constants.native.js +9 -11
  20. package/dist/esm/constants.native.js.map +1 -6
  21. package/dist/esm/context.native.js +24 -25
  22. package/dist/esm/context.native.js.map +1 -6
  23. package/dist/esm/index.native.js +3 -3
  24. package/dist/esm/index.native.js.map +1 -6
  25. package/dist/esm/types.native.js +2 -1
  26. package/dist/esm/types.native.js.map +1 -6
  27. package/dist/esm/useSelectBreakpointActive.native.js +10 -12
  28. package/dist/esm/useSelectBreakpointActive.native.js.map +1 -6
  29. package/package.json +24 -24
  30. package/dist/esm/BubbleSelect.native.mjs +0 -4
  31. package/dist/esm/BubbleSelect.native.mjs.map +0 -1
  32. package/dist/esm/Select.native.mjs +0 -397
  33. package/dist/esm/Select.native.mjs.map +0 -1
  34. package/dist/esm/SelectContent.native.mjs +0 -8
  35. package/dist/esm/SelectContent.native.mjs.map +0 -1
  36. package/dist/esm/SelectImpl.native.mjs +0 -8
  37. package/dist/esm/SelectImpl.native.mjs.map +0 -1
  38. package/dist/esm/SelectItem.native.mjs +0 -132
  39. package/dist/esm/SelectItem.native.mjs.map +0 -1
  40. package/dist/esm/SelectItemText.native.mjs +0 -55
  41. package/dist/esm/SelectItemText.native.mjs.map +0 -1
  42. package/dist/esm/SelectScrollButton.native.mjs +0 -8
  43. package/dist/esm/SelectScrollButton.native.mjs.map +0 -1
  44. package/dist/esm/SelectTrigger.native.mjs +0 -54
  45. package/dist/esm/SelectTrigger.native.mjs.map +0 -1
  46. package/dist/esm/SelectViewport.native.mjs +0 -35
  47. package/dist/esm/SelectViewport.native.mjs.map +0 -1
  48. package/dist/esm/constants.native.mjs +0 -9
  49. package/dist/esm/constants.native.mjs.map +0 -1
  50. package/dist/esm/context.native.mjs +0 -27
  51. package/dist/esm/context.native.mjs.map +0 -1
  52. package/dist/esm/index.native.mjs +0 -3
  53. package/dist/esm/index.native.mjs.map +0 -1
  54. package/dist/esm/types.native.mjs +0 -2
  55. package/dist/esm/types.native.mjs.map +0 -1
  56. package/dist/esm/useSelectBreakpointActive.native.mjs +0 -11
  57. package/dist/esm/useSelectBreakpointActive.native.mjs.map +0 -1
@@ -15,316 +15,383 @@ import { Paragraph, SizableText } from "@tamagui/text";
15
15
  import { useControllableState } from "@tamagui/use-controllable-state";
16
16
  import * as React from "react";
17
17
  import { useDebounce } from "@tamagui/use-debounce";
18
- import { SELECT_NAME } from "./constants";
19
- import { SelectItemParentProvider, SelectProvider, createSelectContext, useSelectContext, useSelectItemParentContext } from "./context";
20
- import { SelectContent } from "./SelectContent";
21
- import { SelectInlineImpl } from "./SelectImpl";
22
- import { SelectItem, useSelectItemContext } from "./SelectItem";
23
- import { ITEM_TEXT_NAME, SelectItemText } from "./SelectItemText";
24
- import { SelectScrollDownButton, SelectScrollUpButton } from "./SelectScrollButton";
25
- import { SelectTrigger } from "./SelectTrigger";
26
- import { SelectViewport } from "./SelectViewport";
27
- import { useSelectBreakpointActive, useShowSelectSheet } from "./useSelectBreakpointActive";
28
- var VALUE_NAME = "SelectValue", SelectValueFrame = styled(SizableText, {
29
- name: VALUE_NAME,
30
- userSelect: "none"
31
- }), SelectValue = SelectValueFrame.styleable(function(param, forwardedRef) {
32
- var { __scopeSelect, children: childrenProp, placeholder, ...props } = param, context = useSelectContext(VALUE_NAME, __scopeSelect), itemParentContext = useSelectItemParentContext(VALUE_NAME, __scopeSelect), composedRefs = useComposedRefs(forwardedRef, context.onValueNodeChange), children = childrenProp ?? context.selectedItem, isEmptyValue = context.value == null || context.value === "", selectValueChildren = isEmptyValue ? placeholder ?? children : children;
33
- return /* @__PURE__ */ _jsx(SelectValueFrame, {
34
- ...!props.unstyled && {
35
- size: itemParentContext.size,
36
- ellipse: !0,
37
- // we don't want events from the portalled `SelectValue` children to bubble
38
- // through the item they came from
39
- pointerEvents: "none"
40
- },
41
- ref: composedRefs,
42
- ...props,
43
- children: unwrapSelectItem(selectValueChildren)
18
+ import { SELECT_NAME } from "./constants.native.js";
19
+ import { SelectItemParentProvider, SelectProvider, createSelectContext, useSelectContext, useSelectItemParentContext } from "./context.native.js";
20
+ import { SelectContent } from "./SelectContent.native.js";
21
+ import { SelectInlineImpl } from "./SelectImpl.native.js";
22
+ import { SelectItem, useSelectItemContext } from "./SelectItem.native.js";
23
+ import { ITEM_TEXT_NAME, SelectItemText } from "./SelectItemText.native.js";
24
+ import { SelectScrollDownButton, SelectScrollUpButton } from "./SelectScrollButton.native.js";
25
+ import { SelectTrigger } from "./SelectTrigger.native.js";
26
+ import { SelectViewport } from "./SelectViewport.native.js";
27
+ import { useSelectBreakpointActive, useShowSelectSheet } from "./useSelectBreakpointActive.native.js";
28
+ var VALUE_NAME = "SelectValue",
29
+ SelectValueFrame = styled(SizableText, {
30
+ name: VALUE_NAME,
31
+ userSelect: "none"
32
+ }),
33
+ SelectValue = SelectValueFrame.styleable(function (param, forwardedRef) {
34
+ var {
35
+ __scopeSelect,
36
+ children: childrenProp,
37
+ placeholder,
38
+ ...props
39
+ } = param,
40
+ context = useSelectContext(VALUE_NAME, __scopeSelect),
41
+ itemParentContext = useSelectItemParentContext(VALUE_NAME, __scopeSelect),
42
+ composedRefs = useComposedRefs(forwardedRef, context.onValueNodeChange),
43
+ children = childrenProp ?? context.selectedItem,
44
+ isEmptyValue = context.value == null || context.value === "",
45
+ selectValueChildren = isEmptyValue ? placeholder ?? children : children;
46
+ return /* @__PURE__ */_jsx(SelectValueFrame, {
47
+ ...(!props.unstyled && {
48
+ size: itemParentContext.size,
49
+ ellipse: !0,
50
+ // we don't want events from the portalled `SelectValue` children to bubble
51
+ // through the item they came from
52
+ pointerEvents: "none"
53
+ }),
54
+ ref: composedRefs,
55
+ ...props,
56
+ children: unwrapSelectItem(selectValueChildren)
57
+ });
44
58
  });
45
- });
46
59
  function unwrapSelectItem(selectValueChildren) {
47
- return React.Children.map(selectValueChildren, function(child) {
60
+ return React.Children.map(selectValueChildren, function (child) {
48
61
  if (child) {
49
62
  var _child_type_staticConfig, _child_type, _child_props;
50
- 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) === ITEM_TEXT_NAME)
51
- return child.props.children;
52
- if (!((_child_props = child.props) === null || _child_props === void 0) && _child_props.children)
53
- return unwrapSelectItem(child.props.children);
63
+ 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) === ITEM_TEXT_NAME) return child.props.children;
64
+ if (!((_child_props = child.props) === null || _child_props === void 0) && _child_props.children) return unwrapSelectItem(child.props.children);
54
65
  }
55
66
  return child;
56
67
  });
57
68
  }
58
69
  var SelectIcon = styled(XStack, {
59
- name: "SelectIcon",
60
- // @ts-ignore
61
- "aria-hidden": !0,
62
- children: /* @__PURE__ */ _jsx(Paragraph, {
63
- children: "\u25BC"
64
- })
65
- }), ITEM_INDICATOR_NAME = "SelectItemIndicator", SelectItemIndicatorFrame = styled(XStack, {
66
- name: ITEM_TEXT_NAME
67
- }), SelectItemIndicator = /* @__PURE__ */ React.forwardRef(function(props, forwardedRef) {
68
- var { __scopeSelect, ...itemIndicatorProps } = props, context = useSelectItemParentContext(ITEM_INDICATOR_NAME, __scopeSelect), itemContext = useSelectItemContext(ITEM_INDICATOR_NAME, __scopeSelect);
69
- return context.shouldRenderWebNative ? null : itemContext.isSelected ? /* @__PURE__ */ _jsx(SelectItemIndicatorFrame, {
70
+ name: "SelectIcon",
71
+ // @ts-ignore
70
72
  "aria-hidden": !0,
71
- ...itemIndicatorProps,
72
- ref: forwardedRef
73
- }) : null;
74
- });
73
+ children: /* @__PURE__ */_jsx(Paragraph, {
74
+ children: "\u25BC"
75
+ })
76
+ }),
77
+ ITEM_INDICATOR_NAME = "SelectItemIndicator",
78
+ SelectItemIndicatorFrame = styled(XStack, {
79
+ name: ITEM_TEXT_NAME
80
+ }),
81
+ SelectItemIndicator = /* @__PURE__ */React.forwardRef(function (props, forwardedRef) {
82
+ var {
83
+ __scopeSelect,
84
+ ...itemIndicatorProps
85
+ } = props,
86
+ context = useSelectItemParentContext(ITEM_INDICATOR_NAME, __scopeSelect),
87
+ itemContext = useSelectItemContext(ITEM_INDICATOR_NAME, __scopeSelect);
88
+ return context.shouldRenderWebNative ? null : itemContext.isSelected ? /* @__PURE__ */_jsx(SelectItemIndicatorFrame, {
89
+ "aria-hidden": !0,
90
+ ...itemIndicatorProps,
91
+ ref: forwardedRef
92
+ }) : null;
93
+ });
75
94
  SelectItemIndicator.displayName = ITEM_INDICATOR_NAME;
76
- var GROUP_NAME = "SelectGroup", [SelectGroupContextProvider, useSelectGroupContext] = createSelectContext(GROUP_NAME), SelectGroupFrame = styled(YStack, {
77
- name: GROUP_NAME,
78
- width: "100%"
79
- }), NativeSelectTextFrame = styled(SizableText, {
80
- tag: "select",
81
- backgroundColor: "$background",
82
- borderColor: "$borderColor",
83
- hoverStyle: {
84
- backgroundColor: "$backgroundHover"
85
- }
86
- }), NativeSelectFrame = styled(ThemeableStack, {
87
- name: "NativeSelect",
88
- bordered: !0,
89
- userSelect: "none",
90
- outlineWidth: 0,
91
- paddingRight: 10,
92
- variants: {
93
- size: {
94
- "...size": function(val, extras) {
95
- var { tokens } = extras, paddingHorizontal = getVariableValue(tokens.space[val]), _tokens_radius_val;
96
- return {
97
- borderRadius: (_tokens_radius_val = tokens.radius[val]) !== null && _tokens_radius_val !== void 0 ? _tokens_radius_val : val,
98
- minHeight: tokens.size[val],
99
- paddingRight: paddingHorizontal + 20,
100
- paddingLeft: paddingHorizontal,
101
- paddingVertical: getSpace(val, {
102
- shift: -3
103
- })
104
- };
95
+ var GROUP_NAME = "SelectGroup",
96
+ [SelectGroupContextProvider, useSelectGroupContext] = createSelectContext(GROUP_NAME),
97
+ SelectGroupFrame = styled(YStack, {
98
+ name: GROUP_NAME,
99
+ width: "100%"
100
+ }),
101
+ NativeSelectTextFrame = styled(SizableText, {
102
+ tag: "select",
103
+ backgroundColor: "$background",
104
+ borderColor: "$borderColor",
105
+ hoverStyle: {
106
+ backgroundColor: "$backgroundHover"
107
+ }
108
+ }),
109
+ NativeSelectFrame = styled(ThemeableStack, {
110
+ name: "NativeSelect",
111
+ bordered: !0,
112
+ userSelect: "none",
113
+ outlineWidth: 0,
114
+ paddingRight: 10,
115
+ variants: {
116
+ size: {
117
+ "...size": function (val, extras) {
118
+ var {
119
+ tokens
120
+ } = extras,
121
+ paddingHorizontal = getVariableValue(tokens.space[val]),
122
+ _tokens_radius_val;
123
+ return {
124
+ borderRadius: (_tokens_radius_val = tokens.radius[val]) !== null && _tokens_radius_val !== void 0 ? _tokens_radius_val : val,
125
+ minHeight: tokens.size[val],
126
+ paddingRight: paddingHorizontal + 20,
127
+ paddingLeft: paddingHorizontal,
128
+ paddingVertical: getSpace(val, {
129
+ shift: -3
130
+ })
131
+ };
132
+ }
105
133
  }
134
+ },
135
+ defaultVariants: {
136
+ size: "$2"
106
137
  }
107
- },
108
- defaultVariants: {
109
- size: "$2"
110
- }
111
- }), SelectGroup = /* @__PURE__ */ React.forwardRef(function(props, forwardedRef) {
112
- var { __scopeSelect, ...groupProps } = props, groupId = React.useId(), context = useSelectContext(GROUP_NAME, __scopeSelect), itemParentContext = useSelectItemParentContext(GROUP_NAME, __scopeSelect), _itemParentContext_size, size = (_itemParentContext_size = itemParentContext.size) !== null && _itemParentContext_size !== void 0 ? _itemParentContext_size : "$true", nativeSelectRef = React.useRef(null), content = function() {
113
- return itemParentContext.shouldRenderWebNative ? /* @__PURE__ */ _jsx(NativeSelectFrame, {
114
- asChild: !0,
115
- size,
116
- // @ts-expect-error until we support typing based on tag
117
- value: context.value,
118
- id: itemParentContext.id,
119
- children: /* @__PURE__ */ _jsx(NativeSelectTextFrame, {
120
- // @ts-ignore it's ok since tag="select"
121
- onChange: function(event) {
122
- itemParentContext.onChange(event.currentTarget.value);
123
- },
124
- size,
125
- ref: nativeSelectRef,
126
- style: {
127
- color: "var(--color)",
138
+ }),
139
+ SelectGroup = /* @__PURE__ */React.forwardRef(function (props, forwardedRef) {
140
+ var {
141
+ __scopeSelect,
142
+ ...groupProps
143
+ } = props,
144
+ groupId = React.useId(),
145
+ context = useSelectContext(GROUP_NAME, __scopeSelect),
146
+ itemParentContext = useSelectItemParentContext(GROUP_NAME, __scopeSelect),
147
+ _itemParentContext_size,
148
+ size = (_itemParentContext_size = itemParentContext.size) !== null && _itemParentContext_size !== void 0 ? _itemParentContext_size : "$true",
149
+ nativeSelectRef = React.useRef(null),
150
+ content = function () {
151
+ return itemParentContext.shouldRenderWebNative ? /* @__PURE__ */_jsx(NativeSelectFrame, {
152
+ asChild: !0,
153
+ size,
154
+ // @ts-expect-error until we support typing based on tag
155
+ value: context.value,
156
+ id: itemParentContext.id,
157
+ children: /* @__PURE__ */_jsx(NativeSelectTextFrame, {
158
+ // @ts-ignore it's ok since tag="select"
159
+ onChange: function (event) {
160
+ itemParentContext.onChange(event.currentTarget.value);
161
+ },
162
+ size,
163
+ ref: nativeSelectRef,
164
+ style: {
165
+ color: "var(--color)",
166
+ // @ts-ignore
167
+ appearance: "none"
168
+ },
169
+ children: props.children
170
+ })
171
+ }) : /* @__PURE__ */_jsx(SelectGroupFrame, {
128
172
  // @ts-ignore
129
- appearance: "none"
130
- },
131
- children: props.children
132
- })
133
- }) : /* @__PURE__ */ _jsx(SelectGroupFrame, {
134
- // @ts-ignore
135
- role: "group",
136
- "aria-labelledby": groupId,
137
- ...groupProps,
138
- ref: forwardedRef
173
+ role: "group",
174
+ "aria-labelledby": groupId,
175
+ ...groupProps,
176
+ ref: forwardedRef
177
+ });
178
+ }();
179
+ return /* @__PURE__ */_jsx(SelectGroupContextProvider, {
180
+ scope: __scopeSelect,
181
+ id: groupId || "",
182
+ children: content
139
183
  });
140
- }();
141
- return /* @__PURE__ */ _jsx(SelectGroupContextProvider, {
142
- scope: __scopeSelect,
143
- id: groupId || "",
144
- children: content
145
184
  });
146
- });
147
185
  SelectGroup.displayName = GROUP_NAME;
148
- var LABEL_NAME = "SelectLabel", SelectLabel = /* @__PURE__ */ React.forwardRef(function(props, forwardedRef) {
149
- var { __scopeSelect, ...labelProps } = props, context = useSelectItemParentContext(LABEL_NAME, __scopeSelect), groupContext = useSelectGroupContext(LABEL_NAME, __scopeSelect);
150
- return context.shouldRenderWebNative ? null : /* @__PURE__ */ _jsx(ListItem, {
151
- tag: "div",
152
- componentName: LABEL_NAME,
153
- fontWeight: "800",
154
- id: groupContext.id,
155
- size: context.size,
156
- ...labelProps,
157
- ref: forwardedRef
186
+ var LABEL_NAME = "SelectLabel",
187
+ SelectLabel = /* @__PURE__ */React.forwardRef(function (props, forwardedRef) {
188
+ var {
189
+ __scopeSelect,
190
+ ...labelProps
191
+ } = props,
192
+ context = useSelectItemParentContext(LABEL_NAME, __scopeSelect),
193
+ groupContext = useSelectGroupContext(LABEL_NAME, __scopeSelect);
194
+ return context.shouldRenderWebNative ? null : /* @__PURE__ */_jsx(ListItem, {
195
+ tag: "div",
196
+ componentName: LABEL_NAME,
197
+ fontWeight: "800",
198
+ id: groupContext.id,
199
+ size: context.size,
200
+ ...labelProps,
201
+ ref: forwardedRef
202
+ });
158
203
  });
159
- });
160
204
  SelectLabel.displayName = LABEL_NAME;
161
205
  var SelectSeparator = styled(Separator, {
162
- name: "SelectSeparator"
163
- }), SelectSheetController = function(props) {
164
- var context = useSelectContext("SelectSheetController", props.__scopeSelect), showSheet = useShowSelectSheet(context), breakpointActive = useSelectBreakpointActive(context.sheetBreakpoint), getShowSheet = useGet(showSheet);
165
- return /* @__PURE__ */ _jsx(SheetController, {
166
- onOpenChange: function(val) {
167
- getShowSheet() && props.onOpenChange(val);
168
- },
169
- open: context.open,
170
- hidden: breakpointActive === !1,
171
- children: props.children
172
- });
173
- }, SelectSheetImpl = function(props) {
174
- return /* @__PURE__ */ _jsx(_Fragment, {
175
- children: props.children
176
- });
177
- }, Select = withStaticProperties(function(props) {
178
- var { __scopeSelect, native, children, open: openProp, defaultOpen, onOpenChange, value: valueProp, defaultValue, onValueChange, disablePreventBodyScroll, size: sizeProp = "$true", onActiveChange, dir, id } = props, internalId = React.useId(), _Object_keys_, scopeKey = __scopeSelect && (_Object_keys_ = Object.keys(__scopeSelect)[0]) !== null && _Object_keys_ !== void 0 ? _Object_keys_ : internalId, { when, AdaptProvider } = useAdaptParent({
179
- Contents: React.useCallback(function() {
180
- return /* @__PURE__ */ _jsx(PortalHost, {
181
- name: `${scopeKey}SheetContents`
206
+ name: "SelectSeparator"
207
+ }),
208
+ SelectSheetController = function (props) {
209
+ var context = useSelectContext("SelectSheetController", props.__scopeSelect),
210
+ showSheet = useShowSelectSheet(context),
211
+ breakpointActive = useSelectBreakpointActive(context.sheetBreakpoint),
212
+ getShowSheet = useGet(showSheet);
213
+ return /* @__PURE__ */_jsx(SheetController, {
214
+ onOpenChange: function (val) {
215
+ getShowSheet() && props.onOpenChange(val);
216
+ },
217
+ open: context.open,
218
+ hidden: breakpointActive === !1,
219
+ children: props.children
220
+ });
221
+ },
222
+ SelectSheetImpl = function (props) {
223
+ return /* @__PURE__ */_jsx(_Fragment, {
224
+ children: props.children
225
+ });
226
+ },
227
+ Select = withStaticProperties(function (props) {
228
+ var {
229
+ __scopeSelect,
230
+ native,
231
+ children,
232
+ open: openProp,
233
+ defaultOpen,
234
+ onOpenChange,
235
+ value: valueProp,
236
+ defaultValue,
237
+ onValueChange,
238
+ disablePreventBodyScroll,
239
+ size: sizeProp = "$true",
240
+ onActiveChange,
241
+ dir,
242
+ id
243
+ } = props,
244
+ internalId = React.useId(),
245
+ _Object_keys_,
246
+ scopeKey = __scopeSelect && (_Object_keys_ = Object.keys(__scopeSelect)[0]) !== null && _Object_keys_ !== void 0 ? _Object_keys_ : internalId,
247
+ {
248
+ when,
249
+ AdaptProvider
250
+ } = useAdaptParent({
251
+ Contents: React.useCallback(function () {
252
+ return /* @__PURE__ */_jsx(PortalHost, {
253
+ name: `${scopeKey}SheetContents`
254
+ });
255
+ }, [scopeKey])
256
+ }),
257
+ sheetBreakpoint = when,
258
+ isSheet = useSelectBreakpointActive(sheetBreakpoint),
259
+ SelectImpl = isSheet || !isWeb ? SelectSheetImpl : SelectInlineImpl,
260
+ forceUpdate = React.useReducer(function () {
261
+ return {};
262
+ }, {})[1],
263
+ [selectedItem, setSelectedItem] = React.useState(null),
264
+ [open, setOpen] = useControllableState({
265
+ prop: openProp,
266
+ defaultProp: defaultOpen || !1,
267
+ onChange: onOpenChange
268
+ }),
269
+ [value, setValue] = useControllableState({
270
+ prop: valueProp,
271
+ defaultProp: defaultValue || "",
272
+ onChange: onValueChange,
273
+ transition: !0
182
274
  });
183
- }, [
184
- scopeKey
185
- ])
186
- }), sheetBreakpoint = when, isSheet = useSelectBreakpointActive(sheetBreakpoint), SelectImpl = isSheet || !isWeb ? SelectSheetImpl : SelectInlineImpl, forceUpdate = React.useReducer(function() {
187
- return {};
188
- }, {})[1], [selectedItem, setSelectedItem] = React.useState(null), [open, setOpen] = useControllableState({
189
- prop: openProp,
190
- defaultProp: defaultOpen || !1,
191
- onChange: onOpenChange
192
- }), [value, setValue] = useControllableState({
193
- prop: valueProp,
194
- defaultProp: defaultValue || "",
195
- onChange: onValueChange,
196
- transition: !0
197
- });
198
- React.useEffect(function() {
199
- open && emitValue(value);
200
- }, [
201
- open
202
- ]), React.useEffect(function() {
203
- emitValue(value);
204
- }, [
205
- value
206
- ]), React.useEffect(function() {
207
- if (props.id)
208
- return registerFocusable(props.id, {
209
- focusAndSelect: function() {
210
- setOpen?.(function(value2) {
275
+ React.useEffect(function () {
276
+ open && emitValue(value);
277
+ }, [open]), React.useEffect(function () {
278
+ emitValue(value);
279
+ }, [value]), React.useEffect(function () {
280
+ if (props.id) return registerFocusable(props.id, {
281
+ focusAndSelect: function () {
282
+ setOpen?.(function (value2) {
211
283
  return !value2;
212
284
  });
213
285
  },
214
- focus: function() {
215
- }
286
+ focus: function () {}
216
287
  });
217
- }, [
218
- props.id
219
- ]);
220
- var [activeIndex, setActiveIndex] = React.useState(0), [emitValue, valueSubscribe] = useEmitter(), [emitActiveIndex, activeIndexSubscribe] = useEmitter(), selectedIndexRef = React.useRef(null), activeIndexRef = React.useRef(null), listContentRef = React.useRef([]), [selectedIndex, setSelectedIndex] = React.useState(0), [valueNode, setValueNode] = React.useState(null);
221
- useIsomorphicLayoutEffect(function() {
222
- selectedIndexRef.current = selectedIndex, activeIndexRef.current = activeIndex;
223
- });
224
- var shouldRenderWebNative = isWeb && (native === !0 || native === "web" || Array.isArray(native) && native.includes("web")), setActiveIndexDebounced = useDebounce(function(index) {
225
- setActiveIndex(function(prev) {
226
- return prev !== index ? (typeof index == "number" && emitActiveIndex(index), index) : prev;
288
+ }, [props.id]);
289
+ var [activeIndex, setActiveIndex] = React.useState(0),
290
+ [emitValue, valueSubscribe] = useEmitter(),
291
+ [emitActiveIndex, activeIndexSubscribe] = useEmitter(),
292
+ selectedIndexRef = React.useRef(null),
293
+ activeIndexRef = React.useRef(null),
294
+ listContentRef = React.useRef([]),
295
+ [selectedIndex, setSelectedIndex] = React.useState(0),
296
+ [valueNode, setValueNode] = React.useState(null);
297
+ useIsomorphicLayoutEffect(function () {
298
+ selectedIndexRef.current = selectedIndex, activeIndexRef.current = activeIndex;
227
299
  });
228
- }, 1, {}, []);
229
- return /* @__PURE__ */ _jsx(AdaptProvider, {
230
- children: /* @__PURE__ */ _jsx(SelectItemParentProvider, {
231
- scope: __scopeSelect,
232
- initialValue: React.useMemo(function() {
233
- return value;
234
- }, [
235
- open
236
- ]),
237
- size: sizeProp,
238
- activeIndexSubscribe,
239
- valueSubscribe,
240
- setOpen,
241
- id,
242
- onChange: React.useCallback(function(val) {
243
- setValue(val), emitValue(val);
244
- }, []),
245
- onActiveChange: useEvent(function() {
246
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)
247
- args[_key] = arguments[_key];
248
- onActiveChange?.(...args);
249
- }),
250
- setSelectedIndex,
251
- setValueAtIndex: React.useCallback(function(index, value2) {
252
- listContentRef.current[index] = value2;
253
- }, []),
254
- shouldRenderWebNative,
255
- children: /* @__PURE__ */ _jsx(SelectProvider, {
300
+ var shouldRenderWebNative = isWeb && (native === !0 || native === "web" || Array.isArray(native) && native.includes("web")),
301
+ setActiveIndexDebounced = useDebounce(function (index) {
302
+ setActiveIndex(function (prev) {
303
+ return prev !== index ? (typeof index == "number" && emitActiveIndex(index), index) : prev;
304
+ });
305
+ }, 1, {}, []);
306
+ return /* @__PURE__ */_jsx(AdaptProvider, {
307
+ children: /* @__PURE__ */_jsx(SelectItemParentProvider, {
256
308
  scope: __scopeSelect,
257
- disablePreventBodyScroll,
258
- dir,
259
- blockSelection: !1,
260
- fallback: !1,
261
- selectedItem,
262
- setSelectedItem,
263
- forceUpdate,
264
- valueNode,
265
- onValueNodeChange: setValueNode,
266
- scopeKey,
267
- sheetBreakpoint,
268
- activeIndex,
269
- selectedIndex,
270
- setActiveIndex: setActiveIndexDebounced,
271
- value,
272
- open,
273
- native,
274
- children: /* @__PURE__ */ _jsx(SelectSheetController, {
275
- onOpenChange: setOpen,
276
- __scopeSelect,
277
- children: shouldRenderWebNative ? children : /* @__PURE__ */ _jsx(SelectImpl, {
278
- activeIndexRef,
279
- listContentRef,
280
- selectedIndexRef,
281
- ...props,
282
- open,
283
- value,
284
- children
309
+ initialValue: React.useMemo(function () {
310
+ return value;
311
+ }, [open]),
312
+ size: sizeProp,
313
+ activeIndexSubscribe,
314
+ valueSubscribe,
315
+ setOpen,
316
+ id,
317
+ onChange: React.useCallback(function (val) {
318
+ setValue(val), emitValue(val);
319
+ }, []),
320
+ onActiveChange: useEvent(function () {
321
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];
322
+ onActiveChange?.(...args);
323
+ }),
324
+ setSelectedIndex,
325
+ setValueAtIndex: React.useCallback(function (index, value2) {
326
+ listContentRef.current[index] = value2;
327
+ }, []),
328
+ shouldRenderWebNative,
329
+ children: /* @__PURE__ */_jsx(SelectProvider, {
330
+ scope: __scopeSelect,
331
+ disablePreventBodyScroll,
332
+ dir,
333
+ blockSelection: !1,
334
+ fallback: !1,
335
+ selectedItem,
336
+ setSelectedItem,
337
+ forceUpdate,
338
+ valueNode,
339
+ onValueNodeChange: setValueNode,
340
+ scopeKey,
341
+ sheetBreakpoint,
342
+ activeIndex,
343
+ selectedIndex,
344
+ setActiveIndex: setActiveIndexDebounced,
345
+ value,
346
+ open,
347
+ native,
348
+ children: /* @__PURE__ */_jsx(SelectSheetController, {
349
+ onOpenChange: setOpen,
350
+ __scopeSelect,
351
+ children: shouldRenderWebNative ? children : /* @__PURE__ */_jsx(SelectImpl, {
352
+ activeIndexRef,
353
+ listContentRef,
354
+ selectedIndexRef,
355
+ ...props,
356
+ open,
357
+ value,
358
+ children
359
+ })
285
360
  })
286
361
  })
287
362
  })
288
- })
363
+ });
364
+ }, {
365
+ Adapt,
366
+ Content: SelectContent,
367
+ Group: SelectGroup,
368
+ Icon: SelectIcon,
369
+ Item: SelectItem,
370
+ ItemIndicator: SelectItemIndicator,
371
+ ItemText: SelectItemText,
372
+ Label: SelectLabel,
373
+ ScrollDownButton: SelectScrollDownButton,
374
+ ScrollUpButton: SelectScrollUpButton,
375
+ Trigger: SelectTrigger,
376
+ Value: SelectValue,
377
+ Viewport: SelectViewport,
378
+ Sheet: Sheet.Controlled
289
379
  });
290
- }, {
291
- Adapt,
292
- Content: SelectContent,
293
- Group: SelectGroup,
294
- Icon: SelectIcon,
295
- Item: SelectItem,
296
- ItemIndicator: SelectItemIndicator,
297
- ItemText: SelectItemText,
298
- Label: SelectLabel,
299
- ScrollDownButton: SelectScrollDownButton,
300
- ScrollUpButton: SelectScrollUpButton,
301
- Trigger: SelectTrigger,
302
- Value: SelectValue,
303
- Viewport: SelectViewport,
304
- Sheet: Sheet.Controlled
305
- });
306
380
  function useEmitter() {
307
381
  var listeners = React.useRef();
308
- listeners.current || (listeners.current = /* @__PURE__ */ new Set());
309
- var emit = function(value) {
310
- listeners.current.forEach(function(l) {
311
- return l(value);
312
- });
313
- }, subscribe = React.useCallback(function(listener) {
314
- return listeners.current.add(listener), function() {
315
- listeners.current.delete(listener);
316
- };
317
- }, []);
318
- return [
319
- emit,
320
- subscribe
321
- ];
382
+ listeners.current || (listeners.current = /* @__PURE__ */new Set());
383
+ var emit = function (value) {
384
+ listeners.current.forEach(function (l) {
385
+ return l(value);
386
+ });
387
+ },
388
+ subscribe = React.useCallback(function (listener) {
389
+ return listeners.current.add(listener), function () {
390
+ listeners.current.delete(listener);
391
+ };
392
+ }, []);
393
+ return [emit, subscribe];
322
394
  }
323
395
  Select.displayName = SELECT_NAME;
324
- export {
325
- Select,
326
- SelectGroupFrame,
327
- SelectIcon,
328
- SelectSeparator
329
- };
330
- //# sourceMappingURL=Select.js.map
396
+ export { Select, SelectGroupFrame, SelectIcon, SelectSeparator };
397
+ //# sourceMappingURL=Select.native.js.map