@tamagui/select 1.125.6 → 1.125.7

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