@tamagui/select 1.0.0-beta.11

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.
@@ -0,0 +1,451 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
+ var __getProtoOf = Object.getPrototypeOf;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
+ var __spreadValues = (a, b) => {
13
+ for (var prop in b || (b = {}))
14
+ if (__hasOwnProp.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ if (__getOwnPropSymbols)
17
+ for (var prop of __getOwnPropSymbols(b)) {
18
+ if (__propIsEnum.call(b, prop))
19
+ __defNormalProp(a, prop, b[prop]);
20
+ }
21
+ return a;
22
+ };
23
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
24
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
25
+ var __objRest = (source, exclude) => {
26
+ var target = {};
27
+ for (var prop in source)
28
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
29
+ target[prop] = source[prop];
30
+ if (source != null && __getOwnPropSymbols)
31
+ for (var prop of __getOwnPropSymbols(source)) {
32
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
33
+ target[prop] = source[prop];
34
+ }
35
+ return target;
36
+ };
37
+ var __export = (target, all) => {
38
+ for (var name in all)
39
+ __defProp(target, name, { get: all[name], enumerable: true });
40
+ };
41
+ var __copyProps = (to, from, except, desc) => {
42
+ if (from && typeof from === "object" || typeof from === "function") {
43
+ for (let key of __getOwnPropNames(from))
44
+ if (!__hasOwnProp.call(to, key) && key !== except)
45
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
46
+ }
47
+ return to;
48
+ };
49
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
50
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
51
+ var Select_exports = {};
52
+ __export(Select_exports, {
53
+ Select: () => Select,
54
+ SelectContent: () => SelectContent,
55
+ SelectGroup: () => SelectGroup,
56
+ SelectIcon: () => SelectIcon,
57
+ SelectItem: () => SelectItem,
58
+ SelectItemIndicator: () => SelectItemIndicator,
59
+ SelectItemText: () => SelectItemText,
60
+ SelectLabel: () => SelectLabel,
61
+ SelectScrollDownButton: () => SelectScrollDownButton,
62
+ SelectScrollUpButton: () => SelectScrollUpButton,
63
+ SelectSeparator: () => SelectSeparator,
64
+ SelectTrigger: () => SelectTrigger,
65
+ SelectValue: () => SelectValue,
66
+ createSelectScope: () => createSelectScope
67
+ });
68
+ module.exports = __toCommonJS(Select_exports);
69
+ var import_react_dom_interactions = require("@floating-ui/react-dom-interactions");
70
+ var import_react_use_previous = require("@radix-ui/react-use-previous");
71
+ var import_compose_refs = require("@tamagui/compose-refs");
72
+ var import_core = require("@tamagui/core");
73
+ var import_core2 = require("@tamagui/core");
74
+ var import_create_context = require("@tamagui/create-context");
75
+ var import_separator = require("@tamagui/separator");
76
+ var import_stacks = require("@tamagui/stacks");
77
+ var import_use_controllable_state = require("@tamagui/use-controllable-state");
78
+ var React = __toESM(require("react"));
79
+ var ReactDOM = __toESM(require("react-dom"));
80
+ const OPEN_KEYS = [" ", "Enter", "ArrowUp", "ArrowDown"];
81
+ const SELECTION_KEYS = [" ", "Enter"];
82
+ const SELECT_NAME = "Select";
83
+ const WINDOW_PADDING = 8;
84
+ const SCROLL_ARROW_VELOCITY = 8;
85
+ const SCROLL_ARROW_THRESHOLD = 8;
86
+ const MIN_HEIGHT = 80;
87
+ const FALLBACK_THRESHOLD = 16;
88
+ const [createSelectContext, createSelectScope] = (0, import_create_context.createContextScope)(SELECT_NAME);
89
+ const [SelectProvider, useSelectContext] = createSelectContext(SELECT_NAME);
90
+ const Select = /* @__PURE__ */ __name((props) => {
91
+ const {
92
+ __scopeSelect,
93
+ children,
94
+ open: openProp,
95
+ defaultOpen,
96
+ onOpenChange,
97
+ value: valueProp,
98
+ defaultValue,
99
+ onValueChange,
100
+ dir: dir2,
101
+ name,
102
+ autoComplete
103
+ } = props;
104
+ const [open, setOpen] = (0, import_use_controllable_state.useControllableState)({
105
+ prop: openProp,
106
+ defaultProp: defaultOpen || false,
107
+ onChange: onOpenChange
108
+ });
109
+ const [value, setValue] = (0, import_use_controllable_state.useControllableState)({
110
+ prop: valueProp,
111
+ defaultProp: defaultValue || "",
112
+ onChange: onValueChange
113
+ });
114
+ const selectedIndexRef = React.useRef(null);
115
+ const activeIndexRef = React.useRef(null);
116
+ const prevActiveIndex = (0, import_react_use_previous.usePrevious)(activeIndex);
117
+ const [showArrows, setShowArrows] = React.useState(false);
118
+ const [scrollTop, setScrollTop] = React.useState(0);
119
+ const [activeIndex, setActiveIndex] = React.useState(null);
120
+ const [selectedIndex, setSelectedIndex] = React.useState(Math.max(0, listContentRef.current.indexOf(value)));
121
+ (0, import_core.useIsomorphicLayoutEffect)(() => {
122
+ selectedIndexRef.current = selectedIndex;
123
+ activeIndexRef.current = activeIndex;
124
+ });
125
+ useEffect(() => {
126
+ const frame = requestAnimationFrame(() => {
127
+ setShowArrows(open);
128
+ if (!open) {
129
+ setScrollTop(0);
130
+ setMiddlewareType("align");
131
+ setActiveIndex(null);
132
+ setControlledScrolling(false);
133
+ }
134
+ });
135
+ return () => cancelAnimationFrame(frame);
136
+ }, [open]);
137
+ const showUpArrow = showArrows && scrollTop > SCROLL_ARROW_THRESHOLD;
138
+ const showDownArrow = showArrows && floatingRef.current && scrollTop < floatingRef.current.scrollHeight - floatingRef.current.clientHeight - SCROLL_ARROW_THRESHOLD;
139
+ return /* @__PURE__ */ React.createElement(SelectProvider, {
140
+ scope: __scopeSelect,
141
+ open
142
+ }, children);
143
+ }, "Select");
144
+ Select.displayName = SELECT_NAME;
145
+ const TRIGGER_NAME = "SelectTrigger";
146
+ const SelectTrigger = React.forwardRef((props, forwardedRef) => {
147
+ const _a = props, {
148
+ __scopeSelect,
149
+ disabled = false,
150
+ "aria-labelledby": ariaLabelledby
151
+ } = _a, triggerProps = __objRest(_a, [
152
+ "__scopeSelect",
153
+ "disabled",
154
+ "aria-labelledby"
155
+ ]);
156
+ const context = useSelectContext(TRIGGER_NAME, __scopeSelect);
157
+ const composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, context.onTriggerChange);
158
+ const getItems = useCollection(__scopeSelect);
159
+ const handleOpen = /* @__PURE__ */ __name(() => {
160
+ if (!disabled) {
161
+ context.onOpenChange(true);
162
+ resetTypeahead();
163
+ }
164
+ }, "handleOpen");
165
+ return /* @__PURE__ */ React.createElement(Primitive.button, __spreadProps(__spreadValues({
166
+ type: "button",
167
+ role: "combobox",
168
+ "aria-controls": context.contentId,
169
+ "aria-expanded": context.open,
170
+ "aria-autocomplete": "none",
171
+ dir: context.dir,
172
+ disabled,
173
+ "data-disabled": disabled ? "" : void 0
174
+ }, triggerProps), {
175
+ ref: composedRefs,
176
+ onPointerDown: (0, import_core.composeEventHandlers)(triggerProps.onPointerDown, (event) => {
177
+ ;
178
+ event.target.releasePointerCapture(event.pointerId);
179
+ if (event.button === 0 && event.ctrlKey === false) {
180
+ handleOpen();
181
+ context.triggerPointerDownPosRef.current = {
182
+ x: Math.round(event.pageX),
183
+ y: Math.round(event.pageY)
184
+ };
185
+ event.preventDefault();
186
+ }
187
+ }),
188
+ onKeyDown: (0, import_core.composeEventHandlers)(triggerProps.onKeyDown, (event) => {
189
+ const isTypingAhead = searchRef.current !== "";
190
+ const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;
191
+ if (!isModifierKey && event.key.length === 1)
192
+ handleTypeaheadSearch(event.key);
193
+ if (isTypingAhead && event.key === " ")
194
+ return;
195
+ if (OPEN_KEYS.includes(event.key)) {
196
+ handleOpen();
197
+ event.preventDefault();
198
+ }
199
+ })
200
+ }));
201
+ });
202
+ SelectTrigger.displayName = TRIGGER_NAME;
203
+ const VALUE_NAME = "SelectValue";
204
+ const SelectValue = React.forwardRef((props, forwardedRef) => {
205
+ const _a = props, { __scopeSelect, className, style } = _a, valueProps = __objRest(_a, ["__scopeSelect", "className", "style"]);
206
+ return /* @__PURE__ */ React.createElement(import_stacks.XStack, __spreadProps(__spreadValues({}, valueProps), {
207
+ pointerEvents: "none"
208
+ }));
209
+ });
210
+ const ICON_NAME = "SelectIcon";
211
+ const SelectIcon = React.forwardRef((props, forwardedRef) => {
212
+ const _a = props, { __scopeSelect, children } = _a, iconProps = __objRest(_a, ["__scopeSelect", "children"]);
213
+ return /* @__PURE__ */ React.createElement(import_stacks.XStack, __spreadProps(__spreadValues({
214
+ "aria-hidden": true
215
+ }, iconProps), {
216
+ ref: forwardedRef
217
+ }), children || "\u25BC");
218
+ });
219
+ SelectIcon.displayName = ICON_NAME;
220
+ const CONTENT_NAME = "SelectContent";
221
+ const SelectContent = React.forwardRef((props, forwardedRef) => {
222
+ const context = useSelectContext(CONTENT_NAME, props.__scopeSelect);
223
+ return props.children;
224
+ });
225
+ const GROUP_NAME = "SelectGroup";
226
+ const [SelectGroupContextProvider, useSelectGroupContext] = createSelectContext(GROUP_NAME);
227
+ const SelectGroup = React.forwardRef((props, forwardedRef) => {
228
+ const _a = props, { __scopeSelect } = _a, groupProps = __objRest(_a, ["__scopeSelect"]);
229
+ const groupId = (0, import_core2.useId)();
230
+ return /* @__PURE__ */ React.createElement(SelectGroupContextProvider, {
231
+ scope: __scopeSelect,
232
+ id: groupId
233
+ }, /* @__PURE__ */ React.createElement(Primitive.div, __spreadProps(__spreadValues({
234
+ role: "group",
235
+ "aria-labelledby": groupId
236
+ }, groupProps), {
237
+ ref: forwardedRef
238
+ })));
239
+ });
240
+ SelectGroup.displayName = GROUP_NAME;
241
+ const LABEL_NAME = "SelectLabel";
242
+ const SelectLabel = React.forwardRef((props, forwardedRef) => {
243
+ const _a = props, { __scopeSelect } = _a, labelProps = __objRest(_a, ["__scopeSelect"]);
244
+ const groupContext = useSelectGroupContext(LABEL_NAME, __scopeSelect);
245
+ return /* @__PURE__ */ React.createElement(Primitive.div, __spreadProps(__spreadValues({
246
+ id: groupContext.id
247
+ }, labelProps), {
248
+ ref: forwardedRef
249
+ }));
250
+ });
251
+ SelectLabel.displayName = LABEL_NAME;
252
+ const ITEM_NAME = "SelectItem";
253
+ const [SelectItemContextProvider, useSelectItemContext] = createSelectContext(ITEM_NAME);
254
+ const SelectItem = React.forwardRef((props, forwardedRef) => {
255
+ const _a = props, { __scopeSelect, value, disabled = false, textValue: textValueProp } = _a, itemProps = __objRest(_a, ["__scopeSelect", "value", "disabled", "textValue"]);
256
+ const context = useSelectContext(ITEM_NAME, __scopeSelect);
257
+ const contentContext = useSelectContentContext(ITEM_NAME, __scopeSelect);
258
+ const isSelected = context.value === value;
259
+ const [textValue, setTextValue] = React.useState(textValueProp ?? "");
260
+ const [isFocused, setIsFocused] = React.useState(false);
261
+ const composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, isSelected ? contentContext.onSelectedItemChange : void 0);
262
+ const textId = (0, import_core2.useId)();
263
+ const handleSelect = /* @__PURE__ */ __name(() => {
264
+ if (!disabled) {
265
+ context.onValueChange(value);
266
+ context.onOpenChange(false);
267
+ }
268
+ }, "handleSelect");
269
+ return /* @__PURE__ */ React.createElement(SelectItemContextProvider, {
270
+ scope: __scopeSelect,
271
+ value,
272
+ textId,
273
+ isSelected,
274
+ onItemTextChange: React.useCallback((node) => {
275
+ setTextValue((prevTextValue) => prevTextValue || ((node == null ? void 0 : node.textContent) ?? "").trim());
276
+ }, [])
277
+ }, /* @__PURE__ */ React.createElement(Collection.ItemSlot, {
278
+ scope: __scopeSelect,
279
+ value,
280
+ disabled,
281
+ textValue
282
+ }, /* @__PURE__ */ React.createElement(Primitive.div, __spreadProps(__spreadValues({
283
+ role: "option",
284
+ "aria-labelledby": textId,
285
+ "aria-selected": isSelected && isFocused,
286
+ "data-state": isSelected ? "active" : "inactive",
287
+ "aria-disabled": disabled || void 0,
288
+ "data-disabled": disabled ? "" : void 0,
289
+ tabIndex: disabled ? void 0 : -1
290
+ }, itemProps), {
291
+ ref: composedRefs,
292
+ onFocus: (0, import_core.composeEventHandlers)(itemProps.onFocus, () => setIsFocused(true)),
293
+ onBlur: (0, import_core.composeEventHandlers)(itemProps.onBlur, () => setIsFocused(false)),
294
+ onPointerUp: (0, import_core.composeEventHandlers)(itemProps.onPointerUp, handleSelect),
295
+ onPointerMove: (0, import_core.composeEventHandlers)(itemProps.onPointerMove, (event) => {
296
+ if (disabled) {
297
+ contentContext.onItemLeave();
298
+ } else {
299
+ event.currentTarget.focus({ preventScroll: true });
300
+ }
301
+ }),
302
+ onPointerLeave: (0, import_core.composeEventHandlers)(itemProps.onPointerLeave, (event) => {
303
+ if (event.currentTarget === document.activeElement) {
304
+ contentContext.onItemLeave();
305
+ }
306
+ }),
307
+ onKeyDown: (0, import_core.composeEventHandlers)(itemProps.onKeyDown, (event) => {
308
+ const isTypingAhead = contentContext.searchRef.current !== "";
309
+ if (isTypingAhead && event.key === " ")
310
+ return;
311
+ if (SELECTION_KEYS.includes(event.key))
312
+ handleSelect();
313
+ if (event.key === " ")
314
+ event.preventDefault();
315
+ })
316
+ }))));
317
+ });
318
+ SelectItem.displayName = ITEM_NAME;
319
+ const ITEM_TEXT_NAME = "SelectItemText";
320
+ const SelectItemText = React.forwardRef((props, forwardedRef) => {
321
+ var _b;
322
+ const _a = props, { __scopeSelect, className, style } = _a, itemTextProps = __objRest(_a, ["__scopeSelect", "className", "style"]);
323
+ const context = useSelectContext(ITEM_TEXT_NAME, __scopeSelect);
324
+ const contentContext = useSelectContentContext(ITEM_TEXT_NAME, __scopeSelect);
325
+ const itemContext = useSelectItemContext(ITEM_TEXT_NAME, __scopeSelect);
326
+ const ref = React.useRef(null);
327
+ const composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, ref, itemContext.onItemTextChange, itemContext.isSelected ? contentContext.onSelectedItemTextChange : void 0);
328
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Primitive.span, __spreadProps(__spreadValues({
329
+ id: itemContext.textId
330
+ }, itemTextProps), {
331
+ ref: composedRefs
332
+ })), itemContext.isSelected && context.valueNode && !context.valueNodeHasChildren ? ReactDOM.createPortal(itemTextProps.children, context.valueNode) : null, context.bubbleSelect ? ReactDOM.createPortal(/* @__PURE__ */ React.createElement("option", {
333
+ value: itemContext.value
334
+ }, (_b = ref.current) == null ? void 0 : _b.textContent), context.bubbleSelect) : null);
335
+ });
336
+ SelectItemText.displayName = ITEM_TEXT_NAME;
337
+ const ITEM_INDICATOR_NAME = "SelectItemIndicator";
338
+ const SelectItemIndicator = React.forwardRef((props, forwardedRef) => {
339
+ const _a = props, { __scopeSelect } = _a, itemIndicatorProps = __objRest(_a, ["__scopeSelect"]);
340
+ const itemContext = useSelectItemContext(ITEM_INDICATOR_NAME, __scopeSelect);
341
+ return itemContext.isSelected ? /* @__PURE__ */ React.createElement(Primitive.span, __spreadProps(__spreadValues({
342
+ "aria-hidden": true
343
+ }, itemIndicatorProps), {
344
+ ref: forwardedRef
345
+ })) : null;
346
+ });
347
+ SelectItemIndicator.displayName = ITEM_INDICATOR_NAME;
348
+ const SCROLL_UP_BUTTON_NAME = "SelectScrollUpButton";
349
+ const SelectScrollUpButton = React.forwardRef((props, forwardedRef) => {
350
+ const contentContext = useSelectContentContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);
351
+ const [canScrollUp, setCanScrollUp] = React.useState(false);
352
+ const composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, contentContext.onScrollButtonChange);
353
+ return canScrollUp ? /* @__PURE__ */ React.createElement(SelectScrollButtonImpl, __spreadProps(__spreadValues({}, props), {
354
+ ref: composedRefs,
355
+ onAutoScroll: () => {
356
+ const { viewport, selectedItem } = contentContext;
357
+ if (viewport && selectedItem) {
358
+ viewport.scrollTop = viewport.scrollTop - selectedItem.offsetHeight;
359
+ }
360
+ }
361
+ })) : null;
362
+ });
363
+ SelectScrollUpButton.displayName = SCROLL_UP_BUTTON_NAME;
364
+ const SCROLL_DOWN_BUTTON_NAME = "SelectScrollDownButton";
365
+ const SelectScrollDownButton = React.forwardRef((props, forwardedRef) => {
366
+ const contentContext = useSelectContentContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);
367
+ const [canScrollDown, setCanScrollDown] = React.useState(false);
368
+ const composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, contentContext.onScrollButtonChange);
369
+ return canScrollDown ? /* @__PURE__ */ React.createElement(SelectScrollButtonImpl, __spreadProps(__spreadValues({}, props), {
370
+ ref: composedRefs,
371
+ onAutoScroll: () => {
372
+ const { viewport, selectedItem } = contentContext;
373
+ if (viewport && selectedItem) {
374
+ viewport.scrollTop = viewport.scrollTop + selectedItem.offsetHeight;
375
+ }
376
+ }
377
+ })) : null;
378
+ });
379
+ SelectScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;
380
+ const SelectScrollButtonImpl = React.forwardRef((props, forwardedRef) => {
381
+ const _a = props, { __scopeSelect, onAutoScroll } = _a, scrollIndicatorProps = __objRest(_a, ["__scopeSelect", "onAutoScroll"]);
382
+ const contentContext = useSelectContentContext("SelectScrollButton", __scopeSelect);
383
+ const autoScrollTimerRef = React.useRef(null);
384
+ const intervalRef = React.useRef();
385
+ const loopingRef = React.useRef(false);
386
+ const { x, y, reference, floating, strategy, update, refs } = (0, import_react_dom_interactions.useFloating)({
387
+ strategy: "fixed",
388
+ placement: dir === "up" ? "top" : "bottom",
389
+ middleware: [(0, import_react_dom_interactions.offset)(({ floating: floating2 }) => -floating2.height)]
390
+ });
391
+ return /* @__PURE__ */ React.createElement(Primitive.div, __spreadProps(__spreadValues({
392
+ "aria-hidden": true
393
+ }, scrollIndicatorProps), {
394
+ ref: forwardedRef,
395
+ style: __spreadValues({ flexShrink: 0 }, scrollIndicatorProps.style),
396
+ onPointerMove: (0, import_core.composeEventHandlers)(scrollIndicatorProps.onPointerMove, () => {
397
+ contentContext.onItemLeave();
398
+ if (autoScrollTimerRef.current === null) {
399
+ autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);
400
+ }
401
+ }),
402
+ onPointerLeave: (0, import_core.composeEventHandlers)(scrollIndicatorProps.onPointerLeave, () => {
403
+ clearAutoScrollTimer();
404
+ })
405
+ }));
406
+ });
407
+ const SEPARATOR_NAME = "SelectSeparator";
408
+ const SelectSeparator = import_separator.Separator;
409
+ SelectSeparator.displayName = SEPARATOR_NAME;
410
+ const BubbleSelect = React.forwardRef((props, forwardedRef) => {
411
+ const _a = props, { value } = _a, selectProps = __objRest(_a, ["value"]);
412
+ const ref = React.useRef(null);
413
+ const composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, ref);
414
+ const prevValue = (0, import_react_use_previous.usePrevious)(value);
415
+ React.useEffect(() => {
416
+ const select = ref.current;
417
+ const selectProto = window.HTMLSelectElement.prototype;
418
+ const descriptor = Object.getOwnPropertyDescriptor(selectProto, "value");
419
+ const setValue = descriptor.set;
420
+ if (prevValue !== value && setValue) {
421
+ const event = new Event("change", { bubbles: true });
422
+ setValue.call(select, value);
423
+ select.dispatchEvent(event);
424
+ }
425
+ }, [prevValue, value]);
426
+ return null;
427
+ return /* @__PURE__ */ React.createElement(VisuallyHidden, {
428
+ asChild: true
429
+ }, /* @__PURE__ */ React.createElement("select", __spreadProps(__spreadValues({}, selectProps), {
430
+ ref: composedRefs,
431
+ defaultValue: value
432
+ })));
433
+ });
434
+ // Annotate the CommonJS export names for ESM import in node:
435
+ 0 && (module.exports = {
436
+ Select,
437
+ SelectContent,
438
+ SelectGroup,
439
+ SelectIcon,
440
+ SelectItem,
441
+ SelectItemIndicator,
442
+ SelectItemText,
443
+ SelectLabel,
444
+ SelectScrollDownButton,
445
+ SelectScrollUpButton,
446
+ SelectSeparator,
447
+ SelectTrigger,
448
+ SelectValue,
449
+ createSelectScope
450
+ });
451
+ //# sourceMappingURL=Select.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/Select.tsx"],
4
+ "sourcesContent": ["import {\n ContextData,\n FloatingFocusManager,\n FloatingOverlay,\n FloatingPortal,\n autoUpdate,\n detectOverflow,\n flip,\n offset,\n size,\n useClick,\n useDismiss,\n useFloating,\n useInteractions,\n useListNavigation,\n useRole,\n useTypeahead,\n} from '@floating-ui/react-dom-interactions'\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref'\nimport { usePrevious } from '@radix-ui/react-use-previous'\nimport { useComposedRefs } from '@tamagui/compose-refs'\nimport { composeEventHandlers, useIsomorphicLayoutEffect } from '@tamagui/core'\n// import { useDirection } from '@tamagui/react-direction'\n// import { DismissableLayer } from '@tamagui/react-dismissable-layer'\n// import { FocusScope } from '@tamagui/react-focus-scope'\nimport { useId } from '@tamagui/core'\nimport { createContextScope } from '@tamagui/create-context'\nimport type { Scope } from '@tamagui/create-context'\nimport { clamp } from '@tamagui/helpers'\n// import { useLabelContext } from '@tamagui/react-label'\nimport { Portal } from '@tamagui/portal'\nimport { Separator } from '@tamagui/separator'\nimport { XStack, YStack, YStackProps } from '@tamagui/stacks'\n// import { Primitive } from '@tamagui/react-primitive'\n// import type * as Radix from '@tamagui/react-primitive'\nimport { useControllableState } from '@tamagui/use-controllable-state'\n// import { useLayoutEffect } from '@tamagui/react-use-layout-effect'\n// import { usePrevious } from '@tamagui/react-use-previous'\n// import { VisuallyHidden } from '@tamagui/core'\n// import { hideOthers } from 'aria-hidden'\nimport * as React from 'react'\nimport * as ReactDOM from 'react-dom'\nimport { View } from 'react-native'\n\n// import { RemoveScroll } from 'react-remove-scroll'\n\n// upsides:\n// could virtualize in the future\n// should be a decent amount faster\n// no having to set keys\n// no internal awkward traversal of children, impossible on native\n\n// downsides:\n// have to have a hook with a new type of pattern\n\n// alternate is just to require passing index={}\n\n// const select = useSelect()\n//\n// <Select items={[]}>\n// <SelectTrigger>\n// <SelectIcon />\n// <SelectValue />\n// </SelectTrigger>\n//\n// <SelectContent>\n// <SelectScrollUpButton />\n// <SelectScrollDownButton />\n//\n// can optionally include group\n// <SelectItemGroup>\n// <SelectItemGroupLabel />\n// </SelectItemGroup>\n//\n// <SelectItem>\n// <SelectItemText>\n// {select.text}\n// </SelectItemText>\n// <SelectItemIndicator />\n// </SelectItem>\n// </SelectItemGroup>\n//\n// </SelectContent>\n// </Select>\n\ntype GenericElement = HTMLElement | View\n\ntype Direction = 'ltr' | 'rtl'\n\nconst OPEN_KEYS = [' ', 'Enter', 'ArrowUp', 'ArrowDown']\nconst SELECTION_KEYS = [' ', 'Enter']\n\n/* -------------------------------------------------------------------------------------------------\n * Select\n * -----------------------------------------------------------------------------------------------*/\n\nconst SELECT_NAME = 'Select'\n\nconst WINDOW_PADDING = 8\nconst SCROLL_ARROW_VELOCITY = 8\nconst SCROLL_ARROW_THRESHOLD = 8\nconst MIN_HEIGHT = 80\nconst FALLBACK_THRESHOLD = 16\n\ninterface SelectContextValue {\n selectedIndex: number\n setSelectedIndex: (index: number) => void\n activeIndex: number | null\n setActiveIndex: (index: number | null) => void\n listRef: React.MutableRefObject<Array<HTMLLIElement | null>>\n open: boolean\n setOpen: (open: boolean) => void\n onChange: (value: string) => void\n dataRef: React.MutableRefObject<ContextData>\n getItemProps: (userProps?: React.HTMLProps<HTMLElement>) => any\n controlledScrolling: boolean\n canScrollUp: boolean\n canScrollDown: boolean\n}\n\n// type SelectContentContextValue = {\n// contentWrapper: HTMLDivElement | null\n// content: SelectContentElement | null\n// viewport: SelectViewportElement | null\n// onViewportChange(node: SelectViewportElement | null): void\n// selectedItem: SelectItemElement | null\n// onSelectedItemChange(node: SelectItemElement | null): void\n// selectedItemText: SelectItemTextElement | null\n// onSelectedItemTextChange(node: SelectItemTextElement | null): void\n// onScrollButtonChange(node: SelectScrollButtonImplElement | null): void\n// onItemLeave(): void\n// isPositioned: boolean\n// shouldExpandOnScrollRef: React.RefObject<boolean>\n// searchRef: React.RefObject<string>\n// }\n\n// const [SelectContentContextProvider, useSelectContentContext] =\n// createSelectContext<SelectContentContextValue>(CONTENT_NAME)\n\n// const SelectContext = React.createContext({} as SelectContextValue)\n\ntype ScopedProps<P> = P & { __scopeSelect?: Scope }\n\nconst [createSelectContext, createSelectScope] = createContextScope(SELECT_NAME)\nconst [SelectProvider, useSelectContext] = createSelectContext<SelectContextValue>(SELECT_NAME)\n\ninterface SelectProps {\n children?: React.ReactNode\n value?: string\n defaultValue?: string\n onValueChange?(value: string): void\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?(open: boolean): void\n dir?: Direction\n name?: string\n autoComplete?: string\n}\n\nconst Select: React.FC<SelectProps> = (props: ScopedProps<SelectProps>) => {\n const {\n __scopeSelect,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n value: valueProp,\n defaultValue,\n onValueChange,\n dir,\n name,\n autoComplete,\n } = props\n // const [trigger, setTrigger] = React.useState<SelectTriggerElement | null>(null)\n // const [valueNode, setValueNode] = React.useState<SelectValueElement | null>(null)\n // const [valueNodeHasChildren, setValueNodeHasChildren] = React.useState(false)\n // const direction = useDirection(dir)\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen || false,\n onChange: onOpenChange,\n })\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue || '',\n onChange: onValueChange,\n })\n\n // const listContentRef = useRef([\n // \"Select...\",\n // ...(Children.map(children, (child) =>\n // Children.map(\n // isValidElement(child) && child.props.children,\n // (child) => child.props.value\n // )\n // ) ?? [])\n // ]);\n\n const selectedIndexRef = React.useRef<number | null>(null)\n const activeIndexRef = React.useRef<number | null>(null)\n const prevActiveIndex = usePrevious<number | null>(activeIndex)\n\n const [showArrows, setShowArrows] = React.useState(false)\n const [scrollTop, setScrollTop] = React.useState(0)\n const [activeIndex, setActiveIndex] = React.useState<number | null>(null)\n const [selectedIndex, setSelectedIndex] = React.useState(\n Math.max(0, listContentRef.current.indexOf(value))\n )\n\n useIsomorphicLayoutEffect(() => {\n selectedIndexRef.current = selectedIndex\n activeIndexRef.current = activeIndex\n })\n\n // Wait for scroll position to settle before showing arrows to prevent\n // interference with pointer events.\n useEffect(() => {\n const frame = requestAnimationFrame(() => {\n setShowArrows(open)\n\n if (!open) {\n setScrollTop(0)\n setMiddlewareType('align')\n setActiveIndex(null)\n setControlledScrolling(false)\n }\n })\n return () => cancelAnimationFrame(frame)\n }, [open])\n\n const showUpArrow = showArrows && scrollTop > SCROLL_ARROW_THRESHOLD\n const showDownArrow =\n showArrows &&\n floatingRef.current &&\n scrollTop <\n floatingRef.current.scrollHeight - floatingRef.current.clientHeight - SCROLL_ARROW_THRESHOLD\n\n // We set this to true by default so that events bubble to forms without JS (SSR)\n // const isFormControl = trigger ? Boolean(trigger.closest('form')) : true\n // const [bubbleSelect, setBubbleSelect] = React.useState<HTMLSelectElement | null>(null)\n // const triggerPointerDownPosRef = React.useRef<{ x: number; y: number } | null>(null)\n\n return (\n <SelectProvider\n scope={__scopeSelect}\n // trigger={trigger}\n // onTriggerChange={setTrigger}\n // valueNode={valueNode}\n // onValueNodeChange={setValueNode}\n // valueNodeHasChildren={valueNodeHasChildren}\n // onValueNodeHasChildrenChange={setValueNodeHasChildren}\n // contentId={useId() || ''}\n // value={value}\n // onValueChange={setValue}\n open={open}\n // onOpenChange={setOpen}\n // TODO\n // dir={'rtl'} //direction}\n // bubbleSelect={bubbleSelect}\n // triggerPointerDownPosRef={triggerPointerDownPosRef}\n >\n {/* <Collection.Provider scope={__scopeSelect}>{children}</Collection.Provider> */}\n {children}\n {/* {isFormControl ? (\n <BubbleSelect\n ref={setBubbleSelect}\n aria-hidden\n tabIndex={-1}\n name={name}\n autoComplete={autoComplete}\n value={value}\n // enable form autofill\n onChange={(event) => setValue(event.target.value)}\n />\n ) : null} */}\n </SelectProvider>\n )\n}\n\nSelect.displayName = SELECT_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * SelectTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'SelectTrigger'\n\ntype SelectTriggerElement = GenericElement\ntype SelectTriggerProps = YStackProps\n\nconst SelectTrigger = React.forwardRef<SelectTriggerElement, SelectTriggerProps>(\n (props: ScopedProps<SelectTriggerProps>, forwardedRef) => {\n const {\n __scopeSelect,\n disabled = false,\n // @ts-ignore\n 'aria-labelledby': ariaLabelledby,\n ...triggerProps\n } = props\n const context = useSelectContext(TRIGGER_NAME, __scopeSelect)\n const composedRefs = useComposedRefs(forwardedRef, context.onTriggerChange)\n const getItems = useCollection(__scopeSelect)\n // const labelId = useLabelContext(context.trigger)\n // const labelledBy = ariaLabelledby || labelId\n\n // const [searchRef, handleTypeaheadSearch, resetTypeahead] = useTypeaheadSearch((search) => {\n // const enabledItems = getItems().filter((item) => !item.disabled)\n // const currentItem = enabledItems.find((item) => item.value === context.value)\n // const nextItem = findNextItem(enabledItems, search, currentItem)\n // if (nextItem !== undefined) {\n // context.onValueChange(nextItem.value)\n // }\n // })\n\n const handleOpen = () => {\n if (!disabled) {\n context.onOpenChange(true)\n // reset typeahead when we open\n resetTypeahead()\n }\n }\n\n return (\n <Primitive.button\n type=\"button\"\n role=\"combobox\"\n aria-controls={context.contentId}\n aria-expanded={context.open}\n aria-autocomplete=\"none\"\n // aria-labelledby={labelledBy}\n dir={context.dir}\n disabled={disabled}\n data-disabled={disabled ? '' : undefined}\n {...triggerProps}\n ref={composedRefs}\n onPointerDown={composeEventHandlers(triggerProps.onPointerDown, (event) => {\n // prevent implicit pointer capture\n // https://www.w3.org/TR/pointerevents3/#implicit-pointer-capture\n ;(event.target as HTMLElement).releasePointerCapture(event.pointerId)\n\n // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n // but not when the control key is pressed (avoiding MacOS right click)\n if (event.button === 0 && event.ctrlKey === false) {\n handleOpen()\n context.triggerPointerDownPosRef.current = {\n x: Math.round(event.pageX),\n y: Math.round(event.pageY),\n }\n // prevent trigger from stealing focus from the active item after opening.\n event.preventDefault()\n }\n })}\n onKeyDown={composeEventHandlers(triggerProps.onKeyDown, (event) => {\n const isTypingAhead = searchRef.current !== ''\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey\n if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key)\n if (isTypingAhead && event.key === ' ') return\n if (OPEN_KEYS.includes(event.key)) {\n handleOpen()\n event.preventDefault()\n }\n })}\n />\n )\n }\n)\n\nSelectTrigger.displayName = TRIGGER_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * SelectValue\n * -----------------------------------------------------------------------------------------------*/\n\nconst VALUE_NAME = 'SelectValue'\n\ntype SelectValueElement = GenericElement\ntype SelectValueProps = YStackProps\n\nconst SelectValue = React.forwardRef<SelectValueElement, SelectValueProps>(\n (props: ScopedProps<SelectValueProps>, forwardedRef) => {\n // We ignore `className` and `style` as this part shouldn't be styled.\n const { __scopeSelect, className, style, ...valueProps } = props\n // const context = useSelectContext(VALUE_NAME, __scopeSelect)\n // const { onValueNodeHasChildrenChange } = context\n // const hasChildren = props.children !== undefined\n // const composedRefs = useComposedRefs(forwardedRef, context.onValueNodeChange)\n\n // React.useEffect(() => {\n // onValueNodeHasChildrenChange(hasChildren)\n // }, [onValueNodeHasChildrenChange, hasChildren])\n\n return (\n <XStack\n {...valueProps}\n // ref={composedRefs}\n // we don't want events from the portalled `SelectValue` children to bubble\n // through the item they came from\n pointerEvents=\"none\"\n />\n )\n }\n)\n\n// SelectValue.displayName = VALUE_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * SelectIcon\n * -----------------------------------------------------------------------------------------------*/\n\nconst ICON_NAME = 'SelectIcon'\n\ntype SelectIconProps = YStackProps\ntype SelectIconElement = GenericElement\n\nconst SelectIcon = React.forwardRef<SelectIconElement, SelectIconProps>(\n (props: ScopedProps<SelectIconProps>, forwardedRef) => {\n const { __scopeSelect, children, ...iconProps } = props\n return (\n <XStack aria-hidden {...iconProps} ref={forwardedRef}>\n {children || '\u25BC'}\n </XStack>\n )\n }\n)\n\nSelectIcon.displayName = ICON_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * SelectContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'SelectContent'\n\ntype SelectContentElement = any\ntype SelectContentProps = any\n\nconst SelectContent = React.forwardRef<SelectContentElement, SelectContentProps>(\n (props: ScopedProps<SelectContentProps>, forwardedRef) => {\n const context = useSelectContext(CONTENT_NAME, props.__scopeSelect)\n return props.children\n }\n)\n\n/* -------------------------------------------------------------------------------------------------\n * SelectGroup\n * -----------------------------------------------------------------------------------------------*/\n\nconst GROUP_NAME = 'SelectGroup'\n\ntype SelectGroupContextValue = { id: string }\n\nconst [SelectGroupContextProvider, useSelectGroupContext] =\n createSelectContext<SelectGroupContextValue>(GROUP_NAME)\n\ntype SelectGroupElement = React.ElementRef<typeof Primitive.div>\ninterface SelectGroupProps extends PrimitiveDivProps {}\n\nconst SelectGroup = React.forwardRef<SelectGroupElement, SelectGroupProps>(\n (props: ScopedProps<SelectGroupProps>, forwardedRef) => {\n const { __scopeSelect, ...groupProps } = props\n const groupId = useId()\n return (\n <SelectGroupContextProvider scope={__scopeSelect} id={groupId}>\n <Primitive.div role=\"group\" aria-labelledby={groupId} {...groupProps} ref={forwardedRef} />\n </SelectGroupContextProvider>\n )\n }\n)\n\nSelectGroup.displayName = GROUP_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * SelectLabel\n * -----------------------------------------------------------------------------------------------*/\n\nconst LABEL_NAME = 'SelectLabel'\n\ntype SelectLabelElement = React.ElementRef<typeof Primitive.div>\ninterface SelectLabelProps extends PrimitiveDivProps {}\n\nconst SelectLabel = React.forwardRef<SelectLabelElement, SelectLabelProps>(\n (props: ScopedProps<SelectLabelProps>, forwardedRef) => {\n const { __scopeSelect, ...labelProps } = props\n const groupContext = useSelectGroupContext(LABEL_NAME, __scopeSelect)\n return <Primitive.div id={groupContext.id} {...labelProps} ref={forwardedRef} />\n }\n)\n\nSelectLabel.displayName = LABEL_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * SelectItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = 'SelectItem'\n\ntype SelectItemContextValue = {\n value: string\n textId: string\n isSelected: boolean\n onItemTextChange(node: SelectItemTextElement | null): void\n}\n\nconst [SelectItemContextProvider, useSelectItemContext] =\n createSelectContext<SelectItemContextValue>(ITEM_NAME)\n\ntype SelectItemElement = React.ElementRef<typeof Primitive.div>\ninterface SelectItemProps extends PrimitiveDivProps {\n value: string\n disabled?: boolean\n textValue?: string\n}\n\nconst SelectItem = React.forwardRef<SelectItemElement, SelectItemProps>(\n (props: ScopedProps<SelectItemProps>, forwardedRef) => {\n const { __scopeSelect, value, disabled = false, textValue: textValueProp, ...itemProps } = props\n const context = useSelectContext(ITEM_NAME, __scopeSelect)\n const contentContext = useSelectContentContext(ITEM_NAME, __scopeSelect)\n const isSelected = context.value === value\n const [textValue, setTextValue] = React.useState(textValueProp ?? '')\n const [isFocused, setIsFocused] = React.useState(false)\n const composedRefs = useComposedRefs(\n forwardedRef,\n isSelected ? contentContext.onSelectedItemChange : undefined\n )\n const textId = useId()\n\n const handleSelect = () => {\n if (!disabled) {\n context.onValueChange(value)\n context.onOpenChange(false)\n }\n }\n\n return (\n <SelectItemContextProvider\n scope={__scopeSelect}\n value={value}\n textId={textId}\n isSelected={isSelected}\n onItemTextChange={React.useCallback((node) => {\n setTextValue((prevTextValue) => prevTextValue || (node?.textContent ?? '').trim())\n }, [])}\n >\n <Collection.ItemSlot\n scope={__scopeSelect}\n value={value}\n disabled={disabled}\n textValue={textValue}\n >\n <Primitive.div\n role=\"option\"\n aria-labelledby={textId}\n // `isFocused` caveat fixes stuttering in VoiceOver\n aria-selected={isSelected && isFocused}\n data-state={isSelected ? 'active' : 'inactive'}\n aria-disabled={disabled || undefined}\n data-disabled={disabled ? '' : undefined}\n tabIndex={disabled ? undefined : -1}\n {...itemProps}\n ref={composedRefs}\n onFocus={composeEventHandlers(itemProps.onFocus, () => setIsFocused(true))}\n onBlur={composeEventHandlers(itemProps.onBlur, () => setIsFocused(false))}\n onPointerUp={composeEventHandlers(itemProps.onPointerUp, handleSelect)}\n onPointerMove={composeEventHandlers(itemProps.onPointerMove, (event) => {\n if (disabled) {\n contentContext.onItemLeave()\n } else {\n // even though safari doesn't support this option, it's acceptable\n // as it only means it might scroll a few pixels when using the pointer.\n event.currentTarget.focus({ preventScroll: true })\n }\n })}\n onPointerLeave={composeEventHandlers(itemProps.onPointerLeave, (event) => {\n if (event.currentTarget === document.activeElement) {\n contentContext.onItemLeave()\n }\n })}\n onKeyDown={composeEventHandlers(itemProps.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef.current !== ''\n if (isTypingAhead && event.key === ' ') return\n if (SELECTION_KEYS.includes(event.key)) handleSelect()\n // prevent page scroll if using the space key to select an item\n if (event.key === ' ') event.preventDefault()\n })}\n />\n </Collection.ItemSlot>\n </SelectItemContextProvider>\n )\n }\n)\n\nSelectItem.displayName = ITEM_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * SelectItemText\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_TEXT_NAME = 'SelectItemText'\n\ntype SelectItemTextElement = React.ElementRef<typeof Primitive.span>\ninterface SelectItemTextProps extends PrimitiveSpanProps {}\n\nconst SelectItemText = React.forwardRef<SelectItemTextElement, SelectItemTextProps>(\n (props: ScopedProps<SelectItemTextProps>, forwardedRef) => {\n // We ignore `className` and `style` as this part shouldn't be styled.\n const { __scopeSelect, className, style, ...itemTextProps } = props\n const context = useSelectContext(ITEM_TEXT_NAME, __scopeSelect)\n const contentContext = useSelectContentContext(ITEM_TEXT_NAME, __scopeSelect)\n const itemContext = useSelectItemContext(ITEM_TEXT_NAME, __scopeSelect)\n const ref = React.useRef<SelectItemTextElement | null>(null)\n const composedRefs = useComposedRefs(\n forwardedRef,\n ref,\n itemContext.onItemTextChange,\n itemContext.isSelected ? contentContext.onSelectedItemTextChange : undefined\n )\n\n return (\n <>\n <Primitive.span id={itemContext.textId} {...itemTextProps} ref={composedRefs} />\n\n {/* Portal the select item text into the trigger value node */}\n {itemContext.isSelected && context.valueNode && !context.valueNodeHasChildren\n ? ReactDOM.createPortal(itemTextProps.children, context.valueNode)\n : null}\n\n {/* Portal an option in the bubble select */}\n {context.bubbleSelect\n ? ReactDOM.createPortal(\n // we use `.textContent` because `option` only support `string` or `number`\n <option value={itemContext.value}>{ref.current?.textContent}</option>,\n context.bubbleSelect\n )\n : null}\n </>\n )\n }\n)\n\nSelectItemText.displayName = ITEM_TEXT_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * SelectItemIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_INDICATOR_NAME = 'SelectItemIndicator'\n\ntype SelectItemIndicatorElement = React.ElementRef<typeof Primitive.span>\ninterface SelectItemIndicatorProps extends PrimitiveSpanProps {}\n\nconst SelectItemIndicator = React.forwardRef<SelectItemIndicatorElement, SelectItemIndicatorProps>(\n (props: ScopedProps<SelectItemIndicatorProps>, forwardedRef) => {\n const { __scopeSelect, ...itemIndicatorProps } = props\n const itemContext = useSelectItemContext(ITEM_INDICATOR_NAME, __scopeSelect)\n return itemContext.isSelected ? (\n <Primitive.span aria-hidden {...itemIndicatorProps} ref={forwardedRef} />\n ) : null\n }\n)\n\nSelectItemIndicator.displayName = ITEM_INDICATOR_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * SelectScrollUpButton\n * -----------------------------------------------------------------------------------------------*/\n\nconst SCROLL_UP_BUTTON_NAME = 'SelectScrollUpButton'\n\ntype SelectScrollUpButtonElement = SelectScrollButtonImplElement\ninterface SelectScrollUpButtonProps extends Omit<SelectScrollButtonImplProps, 'onAutoScroll'> {}\n\nconst SelectScrollUpButton = React.forwardRef<\n SelectScrollUpButtonElement,\n SelectScrollUpButtonProps\n>((props: ScopedProps<SelectScrollUpButtonProps>, forwardedRef) => {\n const contentContext = useSelectContentContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect)\n const [canScrollUp, setCanScrollUp] = React.useState(false)\n const composedRefs = useComposedRefs(forwardedRef, contentContext.onScrollButtonChange)\n\n // useLayoutEffect(() => {\n // if (contentContext.viewport && contentContext.isPositioned) {\n // const viewport = contentContext.viewport\n // function handleScroll() {\n // const canScrollUp = viewport.scrollTop > 0\n // setCanScrollUp(canScrollUp)\n // }\n // handleScroll()\n // viewport.addEventListener('scroll', handleScroll)\n // return () => viewport.removeEventListener('scroll', handleScroll)\n // }\n // }, [contentContext.viewport, contentContext.isPositioned])\n\n return canScrollUp ? (\n <SelectScrollButtonImpl\n {...props}\n ref={composedRefs}\n onAutoScroll={() => {\n const { viewport, selectedItem } = contentContext\n if (viewport && selectedItem) {\n viewport.scrollTop = viewport.scrollTop - selectedItem.offsetHeight\n }\n }}\n />\n ) : null\n})\n\nSelectScrollUpButton.displayName = SCROLL_UP_BUTTON_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * SelectScrollDownButton\n * -----------------------------------------------------------------------------------------------*/\n\nconst SCROLL_DOWN_BUTTON_NAME = 'SelectScrollDownButton'\n\ntype SelectScrollDownButtonElement = SelectScrollButtonImplElement\ninterface SelectScrollDownButtonProps extends Omit<SelectScrollButtonImplProps, 'onAutoScroll'> {}\n\nconst SelectScrollDownButton = React.forwardRef<\n SelectScrollDownButtonElement,\n SelectScrollDownButtonProps\n>((props: ScopedProps<SelectScrollDownButtonProps>, forwardedRef) => {\n const contentContext = useSelectContentContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect)\n const [canScrollDown, setCanScrollDown] = React.useState(false)\n const composedRefs = useComposedRefs(forwardedRef, contentContext.onScrollButtonChange)\n\n // useLayoutEffect(() => {\n // if (contentContext.viewport && contentContext.isPositioned) {\n // const viewport = contentContext.viewport\n // function handleScroll() {\n // const maxScroll = viewport.scrollHeight - viewport.clientHeight\n // // we use Math.ceil here because if the UI is zoomed-in\n // // `scrollTop` is not always reported as an integer\n // const canScrollDown = Math.ceil(viewport.scrollTop) < maxScroll\n // setCanScrollDown(canScrollDown)\n // }\n // handleScroll()\n // viewport.addEventListener('scroll', handleScroll)\n // return () => viewport.removeEventListener('scroll', handleScroll)\n // }\n // }, [contentContext.viewport, contentContext.isPositioned])\n\n return canScrollDown ? (\n <SelectScrollButtonImpl\n {...props}\n ref={composedRefs}\n onAutoScroll={() => {\n const { viewport, selectedItem } = contentContext\n if (viewport && selectedItem) {\n viewport.scrollTop = viewport.scrollTop + selectedItem.offsetHeight\n }\n }}\n />\n ) : null\n})\n\nSelectScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME\n\ntype SelectScrollButtonImplElement = React.ElementRef<typeof Primitive.div>\ninterface SelectScrollButtonImplProps extends PrimitiveDivProps {\n onAutoScroll(): void\n}\n\nconst SelectScrollButtonImpl = React.forwardRef<\n SelectScrollButtonImplElement,\n SelectScrollButtonImplProps\n>((props: ScopedProps<SelectScrollButtonImplProps>, forwardedRef) => {\n const { __scopeSelect, onAutoScroll, ...scrollIndicatorProps } = props\n const contentContext = useSelectContentContext('SelectScrollButton', __scopeSelect)\n const autoScrollTimerRef = React.useRef<number | null>(null)\n\n const intervalRef = React.useRef<any>()\n const loopingRef = React.useRef(false)\n\n const { x, y, reference, floating, strategy, update, refs } = useFloating({\n strategy: 'fixed',\n placement: dir === 'up' ? 'top' : 'bottom',\n middleware: [offset(({ floating }) => -floating.height)],\n })\n\n return (\n <Primitive.div\n aria-hidden\n {...scrollIndicatorProps}\n ref={forwardedRef}\n style={{ flexShrink: 0, ...scrollIndicatorProps.style }}\n onPointerMove={composeEventHandlers(scrollIndicatorProps.onPointerMove, () => {\n contentContext.onItemLeave()\n if (autoScrollTimerRef.current === null) {\n autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50)\n }\n })}\n onPointerLeave={composeEventHandlers(scrollIndicatorProps.onPointerLeave, () => {\n clearAutoScrollTimer()\n })}\n />\n )\n})\n\n/* -------------------------------------------------------------------------------------------------\n * SelectSeparator\n * -----------------------------------------------------------------------------------------------*/\n\nconst SEPARATOR_NAME = 'SelectSeparator'\n\ntype SelectSeparatorElement = React.ElementRef<typeof Primitive.div>\ninterface SelectSeparatorProps extends PrimitiveDivProps {}\n\nconst SelectSeparator = Separator\n// React.forwardRef<SelectSeparatorElement, SelectSeparatorProps>(\n// (props: ScopedProps<SelectSeparatorProps>, forwardedRef) => {\n// const { __scopeSelect, ...separatorProps } = props\n// return <Primitive.div aria-hidden {...separatorProps} ref={forwardedRef} />\n// }\n// )\n\nSelectSeparator.displayName = SEPARATOR_NAME\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst BubbleSelect = React.forwardRef<HTMLSelectElement, React.ComponentPropsWithoutRef<'select'>>(\n (props, forwardedRef) => {\n const { value, ...selectProps } = props\n const ref = React.useRef<HTMLSelectElement>(null)\n const composedRefs = useComposedRefs(forwardedRef, ref)\n const prevValue = usePrevious(value)\n\n // Bubble value change to parents (e.g form change event)\n React.useEffect(() => {\n const select = ref.current!\n const selectProto = window.HTMLSelectElement.prototype\n const descriptor = Object.getOwnPropertyDescriptor(selectProto, 'value') as PropertyDescriptor\n const setValue = descriptor.set\n if (prevValue !== value && setValue) {\n const event = new Event('change', { bubbles: true })\n setValue.call(select, value)\n select.dispatchEvent(event)\n }\n }, [prevValue, value])\n\n /**\n * We purposefully use a `select` here to support form autofill as much\n * as possible.\n *\n * We purposefully do not add the `value` attribute here to allow the value\n * to be set programatically and bubble to any parent form `onChange` event.\n * Adding the `value` will cause React to consider the programatic\n * dispatch a duplicate and it will get swallowed.\n *\n * We use `VisuallyHidden` rather than `display: \"none\"` because Safari autofill\n * won't work otherwise.\n */\n // TODO\n return null\n return (\n <VisuallyHidden asChild>\n <select {...selectProps} ref={composedRefs} defaultValue={value} />\n </VisuallyHidden>\n )\n }\n)\n\n// const Root = Select\n// const Trigger = SelectTrigger\n// const Value = SelectValue\n// const Icon = SelectIcon\n// const Content = SelectContent\n// const Viewport = SelectViewport\n// const Group = SelectGroup\n// const Label = SelectLabel\n// const Item = SelectItem\n// const ItemText = SelectItemText\n// const ItemIndicator = SelectItemIndicator\n// const ScrollUpButton = SelectScrollUpButton\n// const ScrollDownButton = SelectScrollDownButton\n// const Separator = SelectSeparator\n\nexport {\n createSelectScope,\n //\n Select,\n SelectTrigger,\n SelectValue,\n SelectIcon,\n SelectContent,\n // SelectViewport,\n SelectGroup,\n SelectLabel,\n SelectItem,\n SelectItemText,\n SelectItemIndicator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n SelectSeparator,\n //\n // Root,\n // Trigger,\n // Value,\n // Icon,\n // Content,\n // Viewport,\n // Group,\n // Label,\n // Item,\n // ItemText,\n // ItemIndicator,\n // ScrollUpButton,\n // ScrollDownButton,\n // Separator,\n}\nexport type {\n SelectProps,\n SelectTriggerProps,\n SelectValueProps,\n SelectIconProps,\n SelectContentProps,\n SelectViewportProps,\n SelectGroupProps,\n SelectLabelProps,\n SelectItemProps,\n SelectItemTextProps,\n SelectItemIndicatorProps,\n SelectScrollUpButtonProps,\n SelectScrollDownButtonProps,\n SelectSeparatorProps,\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,18 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __copyProps = (to, from, except, desc) => {
6
+ if (from && typeof from === "object" || typeof from === "function") {
7
+ for (let key of __getOwnPropNames(from))
8
+ if (!__hasOwnProp.call(to, key) && key !== except)
9
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
+ }
11
+ return to;
12
+ };
13
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var src_exports = {};
16
+ module.exports = __toCommonJS(src_exports);
17
+ __reExport(src_exports, require("./Select"), module.exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/index.tsx"],
4
+ "sourcesContent": ["export * from './Select'\n"],
5
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA,wBAAc,qBAAd;",
6
+ "names": []
7
+ }