@tamagui/select 1.0.1-beta.46 → 1.0.1-beta.49
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.
- package/dist/cjs/Select.js +28 -52
- package/dist/cjs/Select.js.map +2 -2
- package/dist/esm/Select.js +42 -68
- package/dist/esm/Select.js.map +2 -2
- package/dist/jsx/Select.js +28 -69
- package/package.json +10 -10
- package/types/Select.d.ts +209 -111
- package/types/Select.d.ts.map +1 -1
package/dist/cjs/Select.js
CHANGED
|
@@ -60,11 +60,11 @@ __export(Select_exports, {
|
|
|
60
60
|
module.exports = __toCommonJS(Select_exports);
|
|
61
61
|
var import_react_dom_interactions = require("@floating-ui/react-dom-interactions");
|
|
62
62
|
var import_react_use_previous = require("@radix-ui/react-use-previous");
|
|
63
|
-
var import_button = require("@tamagui/button");
|
|
64
63
|
var import_compose_refs = require("@tamagui/compose-refs");
|
|
65
64
|
var import_core = require("@tamagui/core");
|
|
66
65
|
var import_core2 = require("@tamagui/core");
|
|
67
66
|
var import_create_context = require("@tamagui/create-context");
|
|
67
|
+
var import_list_item = require("@tamagui/list-item");
|
|
68
68
|
var import_separator = require("@tamagui/separator");
|
|
69
69
|
var import_stacks = require("@tamagui/stacks");
|
|
70
70
|
var import_text = require("@tamagui/text");
|
|
@@ -109,7 +109,14 @@ const SelectTrigger = React.forwardRef((props, forwardedRef) => {
|
|
|
109
109
|
"aria-labelledby"
|
|
110
110
|
]);
|
|
111
111
|
const context = useSelectContext(TRIGGER_NAME, __scopeSelect);
|
|
112
|
-
return /* @__PURE__ */ React.createElement(
|
|
112
|
+
return /* @__PURE__ */ React.createElement(import_list_item.ListItem, __spreadValues(__spreadProps(__spreadValues({
|
|
113
|
+
backgrounded: true,
|
|
114
|
+
radiused: true,
|
|
115
|
+
hoverable: true,
|
|
116
|
+
pressable: true,
|
|
117
|
+
focusable: true,
|
|
118
|
+
tabIndex: -1,
|
|
119
|
+
borderWidth: 1,
|
|
113
120
|
componentName: TRIGGER_NAME,
|
|
114
121
|
"aria-expanded": context.open,
|
|
115
122
|
"aria-autocomplete": "none",
|
|
@@ -157,6 +164,8 @@ const SelectViewportFrame = (0, import_core.styled)(import_stacks.ThemeableStack
|
|
|
157
164
|
name: VIEWPORT_NAME,
|
|
158
165
|
backgroundColor: "$background",
|
|
159
166
|
elevate: true,
|
|
167
|
+
overflow: "hidden",
|
|
168
|
+
userSelect: "none",
|
|
160
169
|
variants: {
|
|
161
170
|
size: {
|
|
162
171
|
"...size": (val, { tokens }) => {
|
|
@@ -192,26 +201,6 @@ const SelectViewport = React.forwardRef((props, forwardedRef) => {
|
|
|
192
201
|
SelectViewport.displayName = VIEWPORT_NAME;
|
|
193
202
|
const ITEM_NAME = "SelectItem";
|
|
194
203
|
const [SelectItemContextProvider, useSelectItemContext] = createSelectContext(ITEM_NAME);
|
|
195
|
-
const SelectItemFrame = (0, import_core.styled)(import_stacks.YStack, {
|
|
196
|
-
name: ITEM_NAME,
|
|
197
|
-
tag: "li",
|
|
198
|
-
role: "option",
|
|
199
|
-
width: "100%",
|
|
200
|
-
hoverStyle: {
|
|
201
|
-
backgroundColor: "$backgroundHover"
|
|
202
|
-
},
|
|
203
|
-
focusStyle: {
|
|
204
|
-
backgroundColor: "$backgroundFocus"
|
|
205
|
-
},
|
|
206
|
-
variants: {
|
|
207
|
-
size: {
|
|
208
|
-
"...size": getSelectItemSize
|
|
209
|
-
}
|
|
210
|
-
},
|
|
211
|
-
defaultVariants: {
|
|
212
|
-
size: "$4"
|
|
213
|
-
}
|
|
214
|
-
});
|
|
215
204
|
const SelectItem = React.forwardRef((props, forwardedRef) => {
|
|
216
205
|
const _a = props, {
|
|
217
206
|
__scopeSelect,
|
|
@@ -240,18 +229,20 @@ const SelectItem = React.forwardRef((props, forwardedRef) => {
|
|
|
240
229
|
onChange,
|
|
241
230
|
activeIndex,
|
|
242
231
|
setActiveIndex,
|
|
232
|
+
setValueAtIndex,
|
|
243
233
|
dataRef
|
|
244
234
|
} = context;
|
|
245
235
|
const composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, (node) => {
|
|
246
|
-
console.log("node", node);
|
|
247
236
|
if (node instanceof HTMLElement) {
|
|
248
237
|
listRef.current[index] = node;
|
|
249
238
|
}
|
|
250
239
|
});
|
|
240
|
+
React.useEffect(() => {
|
|
241
|
+
setValueAtIndex(index, value);
|
|
242
|
+
}, [index]);
|
|
251
243
|
const timeoutRef = React.useRef();
|
|
252
244
|
const [allowMouseUp, setAllowMouseUp] = React.useState(false);
|
|
253
245
|
function handleSelect() {
|
|
254
|
-
console.log("handling select!");
|
|
255
246
|
setSelectedIndex(index);
|
|
256
247
|
onChange(value);
|
|
257
248
|
setOpen(false);
|
|
@@ -272,7 +263,6 @@ const SelectItem = React.forwardRef((props, forwardedRef) => {
|
|
|
272
263
|
}
|
|
273
264
|
}, [open, index, setActiveIndex, selectedIndex]);
|
|
274
265
|
function handleKeyDown(event) {
|
|
275
|
-
console.log("item key down");
|
|
276
266
|
if (event.key === "Enter" || event.key === " " && !dataRef.current.typing) {
|
|
277
267
|
event.preventDefault();
|
|
278
268
|
handleSelect();
|
|
@@ -291,7 +281,12 @@ const SelectItem = React.forwardRef((props, forwardedRef) => {
|
|
|
291
281
|
isSelected,
|
|
292
282
|
onItemTextChange: React.useCallback((node) => {
|
|
293
283
|
}, [])
|
|
294
|
-
}, /* @__PURE__ */ React.createElement(
|
|
284
|
+
}, /* @__PURE__ */ React.createElement(import_list_item.ListItem, __spreadValues(__spreadValues({
|
|
285
|
+
backgrounded: true,
|
|
286
|
+
hoverable: true,
|
|
287
|
+
pressable: true,
|
|
288
|
+
focusable: true,
|
|
289
|
+
componentName: ITEM_NAME,
|
|
295
290
|
ref: composedRefs,
|
|
296
291
|
"aria-labelledby": textId,
|
|
297
292
|
"aria-selected": isSelected && isFocused,
|
|
@@ -355,26 +350,12 @@ const SelectGroup = React.forwardRef((props, forwardedRef) => {
|
|
|
355
350
|
});
|
|
356
351
|
SelectGroup.displayName = GROUP_NAME;
|
|
357
352
|
const LABEL_NAME = "SelectLabel";
|
|
358
|
-
const SelectLabelFrame = (0, import_core.styled)(SelectItemTextFrame, {
|
|
359
|
-
name: LABEL_NAME,
|
|
360
|
-
variants: {
|
|
361
|
-
size: {
|
|
362
|
-
"...size": (val, extras) => {
|
|
363
|
-
const size2 = getSelectItemSize(val, extras);
|
|
364
|
-
return __spreadProps(__spreadValues({}, size2), {
|
|
365
|
-
paddingTop: size2.paddingVertical * 4
|
|
366
|
-
});
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
},
|
|
370
|
-
defaultVariants: {
|
|
371
|
-
size: "$4"
|
|
372
|
-
}
|
|
373
|
-
});
|
|
374
353
|
const SelectLabel = React.forwardRef((props, forwardedRef) => {
|
|
375
354
|
const _a = props, { __scopeSelect } = _a, labelProps = __objRest(_a, ["__scopeSelect"]);
|
|
376
355
|
const groupContext = useSelectGroupContext(LABEL_NAME, __scopeSelect);
|
|
377
|
-
return /* @__PURE__ */ React.createElement(
|
|
356
|
+
return /* @__PURE__ */ React.createElement(import_list_item.ListItem, __spreadProps(__spreadValues({
|
|
357
|
+
componentName: LABEL_NAME,
|
|
358
|
+
fontWeight: "800",
|
|
378
359
|
id: groupContext.id
|
|
379
360
|
}, labelProps), {
|
|
380
361
|
ref: forwardedRef
|
|
@@ -500,10 +481,7 @@ const Select = (0, import_core.withStaticProperties)((props) => {
|
|
|
500
481
|
const [showArrows, setShowArrows] = React.useState(false);
|
|
501
482
|
const [scrollTop, setScrollTop] = React.useState(0);
|
|
502
483
|
const listItemsRef = React.useRef([]);
|
|
503
|
-
const listContentRef = React.useRef([
|
|
504
|
-
"Select...",
|
|
505
|
-
...React.Children.map(children, (child) => React.Children.map(React.isValidElement(child) && child.props.children, (child2) => child2.props.value)) ?? []
|
|
506
|
-
]);
|
|
484
|
+
const listContentRef = React.useRef([]);
|
|
507
485
|
const [selectedIndex, setSelectedIndex] = React.useState(Math.max(0, listContentRef.current.indexOf(value)));
|
|
508
486
|
const [controlledScrolling, setControlledScrolling] = React.useState(false);
|
|
509
487
|
const [middlewareType, setMiddlewareType] = React.useState("align");
|
|
@@ -609,10 +587,6 @@ const Select = (0, import_core.withStaticProperties)((props) => {
|
|
|
609
587
|
const forceUpdate = React.useReducer(() => ({}), {})[1];
|
|
610
588
|
const showUpArrow = showArrows && scrollTop > SCROLL_ARROW_THRESHOLD;
|
|
611
589
|
const showDownArrow = showArrows && floatingRef.current && scrollTop < floatingRef.current.scrollHeight - floatingRef.current.clientHeight - SCROLL_ARROW_THRESHOLD;
|
|
612
|
-
console.log("Select", {
|
|
613
|
-
activeIndex,
|
|
614
|
-
selectedIndex
|
|
615
|
-
});
|
|
616
590
|
const interactions = (0, import_react_dom_interactions.useInteractions)([
|
|
617
591
|
(0, import_react_dom_interactions.useClick)(context, { pointerDown: true }),
|
|
618
592
|
(0, import_react_dom_interactions.useRole)(context, { role: "listbox" }),
|
|
@@ -778,7 +752,6 @@ const Select = (0, import_core.withStaticProperties)((props) => {
|
|
|
778
752
|
middlewareData
|
|
779
753
|
]);
|
|
780
754
|
React.useLayoutEffect(() => {
|
|
781
|
-
console.log("focusin", selectedIndex, listItemsRef.current[selectedIndex], listItemsRef.current);
|
|
782
755
|
if (open && selectedIndex != null) {
|
|
783
756
|
requestAnimationFrame(() => {
|
|
784
757
|
var _a;
|
|
@@ -809,6 +782,9 @@ const Select = (0, import_core.withStaticProperties)((props) => {
|
|
|
809
782
|
onValueNodeChange: setValueNode,
|
|
810
783
|
valueNodeHasChildren,
|
|
811
784
|
onValueNodeHasChildrenChange: setValueNodeHasChildren,
|
|
785
|
+
setValueAtIndex: (index, value2) => {
|
|
786
|
+
listContentRef.current[index] = value2;
|
|
787
|
+
},
|
|
812
788
|
interactions: __spreadProps(__spreadValues({}, interactions), {
|
|
813
789
|
getReferenceProps() {
|
|
814
790
|
return interactions.getReferenceProps({
|
package/dist/cjs/Select.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/Select.tsx"],
|
|
4
|
-
"sourcesContent": ["import {\n ContextData,\n FloatingContext,\n FloatingFocusManager,\n FloatingOverlay,\n FloatingPortal,\n ReferenceType,\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 { Button, ButtonProps } from '@tamagui/button'\nimport { useComposedRefs } from '@tamagui/compose-refs'\nimport {\n GetProps,\n SizeTokens,\n Text,\n VariantSpreadExtras,\n VariantSpreadFunction,\n composeEventHandlers,\n getVariableValue,\n styled,\n useIsomorphicLayoutEffect,\n withStaticProperties,\n} 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 { ThemeableStack, XStack, YStack, YStackProps } from '@tamagui/stacks'\nimport { Paragraph } from '@tamagui/text'\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\ntype TamaguiElement = HTMLElement | View\n\n// Cross browser fixes for pinch-zooming/backdrop-filter \uD83D\uDE44\nconst userAgent = (typeof navigator !== 'undefined' && navigator.userAgent) || ''\nconst isFirefox = userAgent.toLowerCase().includes('firefox')\nif (isFirefox) {\n document.body.classList.add('firefox')\n}\nfunction getVisualOffsetTop() {\n return !/^((?!chrome|android).)*safari/i.test(userAgent) ? visualViewport.offsetTop : 0\n}\n\nconst getSelectItemSize = (val: SizeTokens, { tokens }: VariantSpreadExtras<any>) => {\n const padding = getVariableValue(tokens.size[val])\n return {\n paddingHorizontal: padding / 2,\n paddingVertical: padding / 4,\n }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * SelectContext\n * -----------------------------------------------------------------------------------------------*/\n\nconst SELECT_NAME = 'Select'\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 value: any\n selectedIndex: number\n setSelectedIndex: (index: number) => void\n activeIndex: number | null\n setActiveIndex: (index: number | null) => void\n listRef: React.MutableRefObject<Array<HTMLElement | null>>\n floatingRef: React.MutableRefObject<HTMLElement | null>\n open: boolean\n setOpen: (open: boolean) => void\n onChange: (value: string) => void\n dataRef: React.MutableRefObject<ContextData>\n controlledScrolling: boolean\n valueNode: Element | null\n onValueNodeChange(node: HTMLElement): void\n valueNodeHasChildren: boolean\n onValueNodeHasChildrenChange(hasChildren: boolean): void\n canScrollUp: boolean\n canScrollDown: boolean\n floatingContext: FloatingContext<ReferenceType>\n increaseHeight: (floating: HTMLElement, amount?: any) => number | undefined\n forceUpdate: React.DispatchWithoutAction\n interactions: {\n getReferenceProps: (userProps?: React.HTMLProps<Element> | undefined) => any\n getFloatingProps: (userProps?: React.HTMLProps<HTMLElement> | undefined) => any\n getItemProps: (userProps?: React.HTMLProps<HTMLElement> | undefined) => any\n }\n}\n\ntype ScopedProps<P> = P & { __scopeSelect?: Scope }\n\nconst [createSelectContext, createSelectScope] = createContextScope(SELECT_NAME)\nconst [SelectProvider, useSelectContext] = createSelectContext<SelectContextValue>(SELECT_NAME)\n\n// const [SelectContentContextProvider, useSelectContentContext] =\n// createSelectContext<SelectContentContextValue>(CONTENT_NAME);\n\ntype GenericElement = HTMLElement | View\n\ntype Direction = 'ltr' | 'rtl'\n\nconst OPEN_KEYS = [' ', 'Enter', 'ArrowUp', 'ArrowDown']\nconst SELECTION_KEYS = [' ', 'Enter']\n\n/* -------------------------------------------------------------------------------------------------\n * SelectTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'SelectTrigger'\n\nexport type SelectTriggerProps = ButtonProps\n\nexport const SelectTrigger = React.forwardRef<GenericElement, 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 return (\n <Button\n componentName={TRIGGER_NAME}\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={forwardedRef}\n {...context.interactions.getReferenceProps()}\n />\n )\n }\n)\n\nSelectTrigger.displayName = TRIGGER_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * SelectValue\n * -----------------------------------------------------------------------------------------------*/\n\nconst VALUE_NAME = 'SelectValue'\n\nconst SelectValueFrame = styled(Paragraph, {\n name: VALUE_NAME,\n})\n\ntype SelectValueProps = GetProps<typeof SelectValueFrame> & {\n placeholder?: React.ReactNode\n}\n\nconst SelectValue = SelectValueFrame.extractable(\n React.forwardRef<TamaguiElement, SelectValueProps>(\n ({ __scopeSelect, children, placeholder }: ScopedProps<SelectValueProps>, forwardedRef) => {\n // We ignore `className` and `style` as this part shouldn't be styled.\n const context = useSelectContext(VALUE_NAME, __scopeSelect)\n const { onValueNodeHasChildrenChange } = context\n const hasChildren = children !== undefined\n const composedRefs = useComposedRefs(forwardedRef, context.onValueNodeChange)\n\n React.useLayoutEffect(() => {\n onValueNodeHasChildrenChange(hasChildren)\n }, [onValueNodeHasChildrenChange, hasChildren])\n\n return (\n <SelectValueFrame\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 {context.value === undefined && placeholder !== undefined ? placeholder : children}\n </SelectValueFrame>\n )\n }\n )\n)\n\nSelectValue.displayName = VALUE_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * SelectIcon\n * -----------------------------------------------------------------------------------------------*/\n\nexport const SelectIcon = styled(XStack, {\n name: 'SelectIcon',\n // @ts-ignore\n 'aria-hidden': true,\n children: <Paragraph>\u25BC</Paragraph>,\n})\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 ({ children, __scopeSelect }: ScopedProps<SelectContentProps>, forwardedRef) => {\n const context = useSelectContext(CONTENT_NAME, __scopeSelect)\n return (\n <FloatingPortal>\n {context.open ? (\n <FloatingOverlay lockScroll>{children}</FloatingOverlay>\n ) : (\n <div style={{ display: 'none' }}>{children}</div>\n )}\n </FloatingPortal>\n )\n }\n)\n\n/* -------------------------------------------------------------------------------------------------\n * SelectViewport\n * -----------------------------------------------------------------------------------------------*/\n\nconst VIEWPORT_NAME = 'SelectViewport'\n\nexport const SelectViewportFrame = styled(ThemeableStack, {\n name: VIEWPORT_NAME,\n backgroundColor: '$background',\n elevate: true,\n\n variants: {\n size: {\n '...size': (val, { tokens }) => {\n return {\n borderRadius: tokens.size[val] ?? val,\n }\n },\n },\n },\n\n defaultVariants: {\n size: '$2',\n },\n})\n\nexport type SelectViewportProps = GetProps<typeof SelectViewportFrame>\n\nconst SelectViewport = React.forwardRef<TamaguiElement, SelectViewportProps>(\n (props: ScopedProps<SelectViewportProps>, forwardedRef) => {\n const { __scopeSelect, children, ...viewportProps } = props\n const context = useSelectContext(VIEWPORT_NAME, __scopeSelect)\n const composedRefs = useComposedRefs(\n forwardedRef\n // contentContext.onViewportChange\n )\n const prevScrollTopRef = React.useRef(0)\n return (\n <>\n {/* Hide scrollbars cross-browser and enable momentum scroll for touch devices */}\n <style\n dangerouslySetInnerHTML={{\n __html: `[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`,\n }}\n />\n <FloatingFocusManager context={context.floatingContext} preventTabbing>\n <div {...context.interactions.getFloatingProps()}>\n <SelectViewportFrame\n data-radix-select-viewport=\"\"\n // @ts-ignore\n role=\"presentation\"\n {...viewportProps}\n ref={composedRefs}\n >\n {children}\n </SelectViewportFrame>\n </div>\n </FloatingFocusManager>\n </>\n )\n }\n)\n\nSelectViewport.displayName = VIEWPORT_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: TamaguiElement | null): void\n}\n\nconst [SelectItemContextProvider, useSelectItemContext] =\n createSelectContext<SelectItemContextValue>(ITEM_NAME)\n\ninterface SelectItemProps extends YStackProps {\n value: string\n index: number\n disabled?: boolean\n textValue?: string\n}\n\nconst SelectItemFrame = styled(YStack, {\n name: ITEM_NAME,\n tag: 'li',\n // @ts-ignore\n role: 'option',\n width: '100%',\n\n hoverStyle: {\n backgroundColor: '$backgroundHover',\n },\n\n focusStyle: {\n backgroundColor: '$backgroundFocus',\n },\n\n variants: {\n size: {\n '...size': getSelectItemSize,\n },\n },\n\n defaultVariants: {\n size: '$4',\n },\n})\n\nconst SelectItem = React.forwardRef<TamaguiElement, SelectItemProps>(\n (props: ScopedProps<SelectItemProps>, forwardedRef) => {\n const {\n __scopeSelect,\n value,\n disabled = false,\n textValue: textValueProp,\n index,\n ...itemProps\n } = props\n const context = useSelectContext(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 textId = useId()\n\n const {\n selectedIndex,\n setSelectedIndex,\n listRef,\n open,\n setOpen,\n onChange,\n activeIndex,\n setActiveIndex,\n dataRef,\n } = context\n\n const composedRefs = useComposedRefs(\n forwardedRef,\n (node) => {\n console.log('node', node)\n if (node instanceof HTMLElement) {\n listRef.current[index] = node\n }\n }\n // isSelected ? context.onSelectedItemChange : undefined\n )\n\n const timeoutRef = React.useRef<any>()\n const [allowMouseUp, setAllowMouseUp] = React.useState(false)\n\n function handleSelect() {\n console.log('handling select!')\n setSelectedIndex(index)\n onChange(value)\n setOpen(false)\n }\n\n React.useEffect(() => {\n clearTimeout(timeoutRef.current)\n if (open) {\n if (selectedIndex !== index) {\n setAllowMouseUp(true)\n } else {\n timeoutRef.current = setTimeout(() => {\n setAllowMouseUp(true)\n }, 300)\n }\n } else {\n setAllowMouseUp(false)\n }\n }, [open, index, setActiveIndex, selectedIndex])\n\n function handleKeyDown(event: React.KeyboardEvent) {\n console.log('item key down')\n if (event.key === 'Enter' || (event.key === ' ' && !dataRef.current.typing)) {\n event.preventDefault()\n handleSelect()\n }\n }\n\n const selectItemProps = context.interactions.getItemProps({\n onClick: allowMouseUp ? handleSelect : undefined,\n onMouseUp: allowMouseUp ? handleSelect : undefined,\n onKeyDown: handleKeyDown,\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 <SelectItemFrame\n ref={composedRefs}\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 {...selectItemProps}\n />\n </SelectItemContextProvider>\n )\n }\n)\n\nSelectItem.displayName = ITEM_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * SelectItemText\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_TEXT_NAME = 'SelectItemText'\n\nconst SelectItemTextFrame = styled(Paragraph, {\n name: ITEM_TEXT_NAME,\n cursor: 'default',\n})\n\ntype SelectItemTextProps = GetProps<typeof SelectItemTextFrame>\n\nconst SelectItemText = React.forwardRef<TamaguiElement, 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 itemContext = useSelectItemContext(ITEM_TEXT_NAME, __scopeSelect)\n const ref = React.useRef<TamaguiElement | 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 <SelectItemTextFrame 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\nconst SelectItemIndicatorFrame = styled(XStack, {\n name: ITEM_TEXT_NAME,\n})\n\ntype SelectItemIndicatorProps = GetProps<typeof SelectItemIndicatorFrame>\n\nconst SelectItemIndicator = React.forwardRef<TamaguiElement, SelectItemIndicatorProps>(\n (props: ScopedProps<SelectItemIndicatorProps>, forwardedRef) => {\n const { __scopeSelect, ...itemIndicatorProps } = props\n const itemContext = useSelectItemContext(ITEM_INDICATOR_NAME, __scopeSelect)\n return itemContext.isSelected ? (\n <SelectItemIndicatorFrame aria-hidden {...itemIndicatorProps} ref={forwardedRef} />\n ) : null\n }\n)\n\nSelectItemIndicator.displayName = ITEM_INDICATOR_NAME\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\nconst SelectGroupFrame = styled(YStack, {\n name: GROUP_NAME,\n width: '100%',\n})\n\ntype SelectGroupProps = GetProps<typeof SelectGroupFrame>\n\nconst SelectGroup = React.forwardRef<TamaguiElement, SelectGroupProps>(\n (props: ScopedProps<SelectGroupProps>, forwardedRef) => {\n const { __scopeSelect, ...groupProps } = props\n const groupId = useId()\n return (\n <SelectGroupContextProvider scope={__scopeSelect} id={groupId || ''}>\n <SelectGroupFrame\n // @ts-ignore\n role=\"group\"\n aria-labelledby={groupId}\n {...groupProps}\n ref={forwardedRef}\n />\n </SelectGroupContextProvider>\n )\n }\n)\n\nSelectGroup.displayName = GROUP_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * SelectLabel\n * -----------------------------------------------------------------------------------------------*/\n\nconst LABEL_NAME = 'SelectLabel'\n\nconst SelectLabelFrame = styled(SelectItemTextFrame, {\n name: LABEL_NAME,\n\n variants: {\n size: {\n '...size': (val: SizeTokens, extras) => {\n const size = getSelectItemSize(val, extras)\n return {\n ...size,\n paddingTop: size.paddingVertical * 4,\n }\n },\n },\n },\n\n defaultVariants: {\n size: '$4',\n },\n})\n\nexport type SelectLabelProps = GetProps<typeof SelectLabelFrame>\n\nconst SelectLabel = React.forwardRef<TamaguiElement, SelectLabelProps>(\n (props: ScopedProps<SelectLabelProps>, forwardedRef) => {\n const { __scopeSelect, ...labelProps } = props\n const groupContext = useSelectGroupContext(LABEL_NAME, __scopeSelect)\n return <SelectLabelFrame id={groupContext.id} {...labelProps} ref={forwardedRef} />\n }\n)\n\nSelectLabel.displayName = LABEL_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * SelectScrollUpButton\n * -----------------------------------------------------------------------------------------------*/\n\nconst SCROLL_UP_BUTTON_NAME = 'SelectScrollUpButton'\n\ninterface SelectScrollButtonProps\n extends Omit<SelectScrollButtonImplProps, 'dir' | 'componentName'> {}\n\nconst SelectScrollUpButton = React.forwardRef<TamaguiElement, SelectScrollButtonProps>(\n (props: ScopedProps<SelectScrollButtonProps>, forwardedRef) => {\n return (\n <SelectScrollButtonImpl\n componentName={SCROLL_UP_BUTTON_NAME}\n {...props}\n dir=\"up\"\n ref={forwardedRef}\n />\n )\n }\n)\n\nSelectScrollUpButton.displayName = SCROLL_UP_BUTTON_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * SelectScrollDownButton\n * -----------------------------------------------------------------------------------------------*/\n\nconst SCROLL_DOWN_BUTTON_NAME = 'SelectScrollDownButton'\n\nconst SelectScrollDownButton = React.forwardRef<TamaguiElement, SelectScrollButtonProps>(\n (props: ScopedProps<SelectScrollButtonProps>, forwardedRef) => {\n return (\n <SelectScrollButtonImpl\n componentName={SCROLL_DOWN_BUTTON_NAME}\n {...props}\n dir=\"down\"\n ref={forwardedRef}\n />\n )\n }\n)\n\nSelectScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME\n\ntype SelectScrollButtonImplElement = TamaguiElement\ninterface SelectScrollButtonImplProps extends YStackProps {\n dir: 'up' | 'down'\n componentName: string\n}\n\nconst SelectScrollButtonImpl = React.forwardRef<\n SelectScrollButtonImplElement,\n SelectScrollButtonImplProps\n>((props: ScopedProps<SelectScrollButtonImplProps>, forwardedRef) => {\n const { __scopeSelect, dir, componentName, ...scrollIndicatorProps } = props\n const { floatingRef, increaseHeight, forceUpdate, ...context } = useSelectContext(\n componentName,\n __scopeSelect\n )\n const intervalRef = React.useRef<any>()\n const loopingRef = React.useRef(false)\n const isVisible = context[dir === 'down' ? 'canScrollDown' : 'canScrollUp']\n\n const { x, y, reference, floating, strategy, update, refs } = useFloating({\n strategy: 'fixed',\n placement: dir === 'up' ? 'top' : 'bottom',\n middleware: [offset(({ rects }) => -rects.floating.height)],\n })\n\n const composedRefs = useComposedRefs(forwardedRef, floating)\n\n React.useLayoutEffect(() => {\n reference(floatingRef.current)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [reference, floatingRef.current])\n\n React.useEffect(() => {\n if (!refs.reference.current || !refs.floating.current || !isVisible) {\n return\n }\n\n const cleanup = autoUpdate(refs.reference.current, refs.floating.current, update, {\n animationFrame: true,\n })\n\n return () => {\n clearInterval(intervalRef.current)\n loopingRef.current = false\n cleanup()\n }\n }, [isVisible, update, refs.floating, refs.reference])\n\n if (!isVisible) {\n return null\n }\n\n const handleScrollArrowChange = () => {\n const floating = floatingRef.current\n const isUp = dir === 'up'\n if (floating) {\n const value = isUp ? -SCROLL_ARROW_VELOCITY : SCROLL_ARROW_VELOCITY\n const multi =\n (isUp && floating.scrollTop <= SCROLL_ARROW_THRESHOLD * 2) ||\n (!isUp &&\n floating.scrollTop >=\n floating.scrollHeight - floating.clientHeight - SCROLL_ARROW_THRESHOLD * 2)\n ? 2\n : 1\n floating.scrollTop += multi * (isUp ? -SCROLL_ARROW_VELOCITY : SCROLL_ARROW_VELOCITY)\n\n increaseHeight(floating, multi === 2 ? value * 2 : value)\n // Ensure derived data (scroll arrows) is fresh\n forceUpdate()\n }\n }\n\n return (\n <YStack\n ref={composedRefs}\n componentName={componentName}\n aria-hidden\n {...scrollIndicatorProps}\n // @ts-expect-error\n position={strategy}\n left={x || 0}\n top={y || 0}\n width={`calc(${(floatingRef.current?.offsetWidth ?? 0) - 2}px)`}\n background={`linear-gradient(to ${\n dir === 'up' ? 'bottom' : 'top'\n }, #29282b 50%, rgba(53, 54, 55, 0.01))`}\n onPointerMove={() => {\n if (!loopingRef.current) {\n intervalRef.current = setInterval(handleScrollArrowChange, 1000 / 60)\n loopingRef.current = true\n }\n }}\n onPointerLeave={() => {\n loopingRef.current = false\n clearInterval(intervalRef.current)\n }}\n />\n )\n})\n\n/* -------------------------------------------------------------------------------------------------\n * SelectSeparator\n * -----------------------------------------------------------------------------------------------*/\n\nexport const SelectSeparator = styled(Separator, {\n name: 'SelectSeparator',\n})\n\n/* -------------------------------------------------------------------------------------------------\n * Select\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface 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\nexport const Select = withStaticProperties(\n (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\n // const [trigger, setTrigger] = React.useState<SelectTriggerElement | null>(null)\n\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen || false,\n onChange: onOpenChange,\n })\n\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue || '',\n onChange: onValueChange,\n })\n\n const [activeIndex, setActiveIndex] = React.useState<number | null>(null)\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 listItemsRef = React.useRef<Array<HTMLElement | null>>([])\n const listContentRef = React.useRef([\n 'Select...',\n ...(React.Children.map(children, (child) =>\n React.Children.map(\n React.isValidElement(child) && child.props.children,\n (child) => child.props.value\n )\n ) ?? []),\n ])\n\n const [selectedIndex, setSelectedIndex] = React.useState(\n Math.max(0, listContentRef.current.indexOf(value))\n )\n const [controlledScrolling, setControlledScrolling] = React.useState(false)\n const [middlewareType, setMiddlewareType] = React.useState<'align' | 'fallback'>('align')\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 React.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 () => {\n cancelAnimationFrame(frame)\n }\n }, [open])\n\n function getFloatingPadding(floating: HTMLElement | null) {\n if (!floating) {\n return 0\n }\n return Number(getComputedStyle(floating).paddingLeft?.replace('px', ''))\n }\n\n const { x, y, reference, floating, strategy, context, refs, middlewareData, update } =\n useFloating({\n open,\n onOpenChange: setOpen,\n placement: 'bottom',\n middleware:\n middlewareType === 'align'\n ? [\n offset(({ rects }) => {\n const index = activeIndexRef.current ?? selectedIndexRef.current\n\n if (index == null) {\n return 0\n }\n\n const item = listItemsRef.current[index]\n\n if (item == null) {\n return 0\n }\n\n const offsetTop = item.offsetTop\n const itemHeight = item.offsetHeight\n const height = rects.reference.height\n\n return -offsetTop - height - (itemHeight - height) / 2\n }),\n // Custom `size` that can handle the opposite direction of the\n // placement\n {\n name: 'size',\n async fn(args) {\n const {\n elements: { floating },\n rects: { reference },\n middlewareData,\n } = args\n\n const overflow = await detectOverflow(args, {\n padding: WINDOW_PADDING,\n })\n\n const top = Math.max(0, overflow.top)\n const bottom = Math.max(0, overflow.bottom)\n const nextY = args.y + top\n\n if (middlewareData.size?.skip) {\n return {\n y: nextY,\n data: {\n y: middlewareData.size.y,\n },\n }\n }\n\n Object.assign(floating.style, {\n maxHeight: `${floating.scrollHeight - Math.abs(top + bottom)}px`,\n minWidth: `${reference.width + getFloatingPadding(floating) * 2}px`,\n })\n\n return {\n y: nextY,\n data: {\n y: top,\n skip: true,\n },\n reset: {\n rects: true,\n },\n }\n },\n },\n ]\n : [\n offset(5),\n flip(),\n size({\n apply({ rects, availableHeight, elements }) {\n Object.assign(elements.floating.style, {\n width: `${rects.reference.width}px`,\n maxHeight: `${availableHeight}px`,\n })\n },\n padding: WINDOW_PADDING,\n }),\n ],\n })\n\n const floatingRef = refs.floating\n const forceUpdate = React.useReducer(() => ({}), {})[1]\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 console.log('Select', {\n activeIndex,\n selectedIndex,\n })\n\n const interactions = useInteractions([\n useClick(context, { pointerDown: true }),\n useRole(context, { role: 'listbox' }),\n useDismiss(context),\n useListNavigation(context, {\n listRef: listItemsRef,\n activeIndex,\n selectedIndex,\n onNavigate: setActiveIndex,\n }),\n useTypeahead(context, {\n listRef: listContentRef,\n onMatch: open ? setActiveIndex : setSelectedIndex,\n selectedIndex,\n activeIndex,\n }),\n ])\n\n const increaseHeight = React.useCallback(\n (floating: HTMLElement, amount = 0) => {\n if (middlewareType === 'fallback') {\n return\n }\n\n const currentMaxHeight = Number(floating.style.maxHeight.replace('px', ''))\n const currentTop = Number(floating.style.top.replace('px', ''))\n const rect = floating.getBoundingClientRect()\n const rectTop = rect.top\n const rectBottom = rect.bottom\n const visualMaxHeight = visualViewport.height - WINDOW_PADDING * 2\n\n if (\n amount < 0 &&\n selectedIndexRef.current != null &&\n Math.round(rectBottom) <\n Math.round(visualViewport.height + getVisualOffsetTop() - WINDOW_PADDING)\n ) {\n floating.style.maxHeight = `${Math.min(visualMaxHeight, currentMaxHeight - amount)}px`\n }\n\n if (\n amount > 0 &&\n Math.round(rectTop) > Math.round(WINDOW_PADDING - getVisualOffsetTop()) &&\n floating.scrollHeight > floating.offsetHeight\n ) {\n const nextTop = Math.max(WINDOW_PADDING + getVisualOffsetTop(), currentTop - amount)\n\n const nextMaxHeight = Math.min(visualMaxHeight, currentMaxHeight + amount)\n\n Object.assign(floating.style, {\n maxHeight: `${nextMaxHeight}px`,\n top: `${nextTop}px`,\n })\n\n if (nextTop - WINDOW_PADDING > getVisualOffsetTop()) {\n floating.scrollTop -= nextMaxHeight - currentMaxHeight + getFloatingPadding(floating)\n }\n\n return currentTop - nextTop\n }\n },\n [middlewareType]\n )\n\n const touchPageYRef = React.useRef<number | null>(null)\n\n const handleWheel = React.useCallback(\n (event: WheelEvent | TouchEvent) => {\n const pinching = event.ctrlKey\n\n const currentTarget = event.currentTarget as HTMLElement\n\n function isWheelEvent(event: any): event is WheelEvent {\n return typeof event.deltaY === 'number'\n }\n\n function isTouchEvent(event: any): event is TouchEvent {\n return event.touches != null\n }\n\n if (\n Math.abs(\n (currentTarget?.offsetHeight ?? 0) - (visualViewport.height - WINDOW_PADDING * 2)\n ) > 1 &&\n !pinching\n ) {\n event.preventDefault()\n } else if (isWheelEvent(event) && isFirefox) {\n // Firefox needs this to propagate scrolling\n // during momentum scrolling phase if the\n // height reached its maximum (at boundaries)\n currentTarget.scrollTop += event.deltaY\n }\n\n if (!pinching) {\n let delta = 5\n\n if (isTouchEvent(event)) {\n const currentPageY = touchPageYRef.current\n const pageY = event.touches[0]?.pageY\n\n if (pageY != null) {\n touchPageYRef.current = pageY\n\n if (currentPageY != null) {\n delta = currentPageY - pageY\n }\n }\n }\n\n increaseHeight(currentTarget, isWheelEvent(event) ? event.deltaY : delta)\n setScrollTop(currentTarget.scrollTop)\n // Ensure derived data (scroll arrows) is fresh\n forceUpdate()\n }\n },\n [increaseHeight, forceUpdate]\n )\n\n // Handle `onWheel` event in an effect to remove the `passive` option so we\n // can .preventDefault() it\n React.useEffect(() => {\n function onTouchEnd() {\n touchPageYRef.current = null\n }\n\n const floating = floatingRef.current\n if (open && floating && middlewareType === 'align') {\n floating.addEventListener('wheel', handleWheel)\n floating.addEventListener('touchmove', handleWheel)\n floating.addEventListener('touchend', onTouchEnd, { passive: true })\n return () => {\n floating.removeEventListener('wheel', handleWheel)\n floating.removeEventListener('touchmove', handleWheel)\n floating.removeEventListener('touchend', onTouchEnd)\n }\n }\n }, [open, floatingRef, handleWheel, middlewareType])\n\n // Ensure the menu remains attached to the reference element when resizing.\n React.useEffect(() => {\n window.addEventListener('resize', update)\n return () => {\n window.removeEventListener('resize', update)\n }\n }, [update])\n\n // Scroll the active or selected item into view when in `controlledScrolling`\n // mode (i.e. arrow key nav).\n React.useLayoutEffect(() => {\n const floating = floatingRef.current\n\n if (open && controlledScrolling && floating) {\n const item =\n activeIndex != null\n ? listItemsRef.current[activeIndex]\n : selectedIndex != null\n ? listItemsRef.current[selectedIndex]\n : null\n\n if (item && prevActiveIndex != null) {\n const itemHeight = listItemsRef.current[prevActiveIndex]?.offsetHeight ?? 0\n\n const floatingHeight = floating.offsetHeight\n const top = item.offsetTop\n const bottom = top + itemHeight\n\n if (top < floating.scrollTop + 20) {\n const diff = floating.scrollTop - top + 20\n floating.scrollTop -= diff\n\n if (activeIndex != selectedIndex && activeIndex != null) {\n increaseHeight(floating, -diff)\n }\n } else if (bottom > floatingHeight + floating.scrollTop - 20) {\n const diff = bottom - floatingHeight - floating.scrollTop + 20\n\n floating.scrollTop += diff\n\n if (activeIndex != selectedIndex && activeIndex != null) {\n floating.scrollTop -= increaseHeight(floating, diff) ?? 0\n }\n }\n }\n }\n }, [\n open,\n controlledScrolling,\n prevActiveIndex,\n activeIndex,\n selectedIndex,\n floatingRef,\n increaseHeight,\n ])\n\n // Sync the height and the scrollTop values and device whether to use fallback\n // positioning.\n React.useLayoutEffect(() => {\n const floating = refs.floating.current\n const reference = refs.reference.current\n\n if (open && floating && reference && floating.offsetHeight < floating.scrollHeight) {\n const referenceRect = reference.getBoundingClientRect()\n\n if (middlewareType === 'fallback') {\n const item = listItemsRef.current[selectedIndex]\n if (item) {\n floating.scrollTop = item.offsetTop - floating.clientHeight + referenceRect.height\n }\n return\n }\n\n floating.scrollTop = middlewareData.size?.y\n\n const closeToBottom =\n visualViewport.height + getVisualOffsetTop() - referenceRect.bottom < FALLBACK_THRESHOLD\n const closeToTop = referenceRect.top < FALLBACK_THRESHOLD\n\n if (floating.offsetHeight < MIN_HEIGHT || closeToTop || closeToBottom) {\n setMiddlewareType('fallback')\n }\n }\n }, [\n open,\n increaseHeight,\n selectedIndex,\n middlewareType,\n refs.floating,\n refs.reference,\n // Always re-run this effect when the position has been computed so the\n // .scrollTop change works with fresh sizing.\n middlewareData,\n ])\n\n React.useLayoutEffect(() => {\n console.log(\n 'focusin',\n selectedIndex,\n listItemsRef.current[selectedIndex],\n listItemsRef.current\n )\n if (open && selectedIndex != null) {\n requestAnimationFrame(() => {\n listItemsRef.current[selectedIndex]?.focus({ preventScroll: true })\n })\n }\n }, [listItemsRef, selectedIndex, open])\n\n // Wait for scroll position to settle before showing arrows to prevent\n // interference with pointer events.\n React.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 // 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 const [valueNode, setValueNode] = React.useState<HTMLElement | null>(null)\n const [valueNodeHasChildren, setValueNodeHasChildren] = React.useState(false)\n\n return (\n <SelectProvider\n scope={__scopeSelect}\n increaseHeight={increaseHeight}\n forceUpdate={forceUpdate}\n floatingRef={floatingRef}\n valueNode={valueNode}\n onValueNodeChange={setValueNode}\n valueNodeHasChildren={valueNodeHasChildren}\n onValueNodeHasChildrenChange={setValueNodeHasChildren}\n interactions={{\n ...interactions,\n getReferenceProps() {\n return interactions.getReferenceProps({\n ref: reference,\n className: 'SelectTrigger',\n onKeyDown(event) {\n if (\n event.key === 'Enter' ||\n (event.key === ' ' && !context.dataRef.current.typing)\n ) {\n event.preventDefault()\n setOpen(true)\n }\n },\n })\n },\n getFloatingProps() {\n return interactions.getFloatingProps({\n ref: floating,\n className: 'Select',\n style: {\n position: strategy,\n top: y ?? '',\n left: x ?? '',\n },\n onPointerEnter() {\n setControlledScrolling(false)\n },\n onPointerMove() {\n setControlledScrolling(false)\n },\n onKeyDown() {\n setControlledScrolling(true)\n },\n onScroll(event) {\n setScrollTop(event.currentTarget.scrollTop)\n },\n })\n },\n }}\n floatingContext={context}\n activeIndex={activeIndex}\n canScrollDown={!!showDownArrow}\n canScrollUp={!!showUpArrow}\n controlledScrolling\n dataRef={context.dataRef}\n listRef={listItemsRef}\n onChange={setValue}\n selectedIndex={0}\n setActiveIndex={setActiveIndex}\n setOpen={setOpen}\n setSelectedIndex={setSelectedIndex}\n value={value}\n // trigger={trigger}\n // onTriggerChange={setTrigger}\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 {\n Content: SelectContent,\n Group: SelectGroup,\n Icon: SelectIcon,\n Item: SelectItem,\n ItemIndicator: SelectItemIndicator,\n ItemText: SelectItemText,\n Label: SelectLabel,\n ScrollDownButton: SelectScrollDownButton,\n ScrollUpButton: SelectScrollUpButton,\n Trigger: SelectTrigger,\n Value: SelectValue,\n Viewport: SelectViewport,\n }\n)\n\n// @ts-ignore\nSelect.displayName = SELECT_NAME\n\nexport { createSelectScope }\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import {\n ContextData,\n FloatingContext,\n FloatingFocusManager,\n FloatingOverlay,\n FloatingPortal,\n ReferenceType,\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 {\n GetProps,\n SizeTokens,\n Text,\n VariantSpreadExtras,\n VariantSpreadFunction,\n composeEventHandlers,\n getVariableValue,\n styled,\n useIsomorphicLayoutEffect,\n withStaticProperties,\n} 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'\nimport { ListItem, ListItemProps } from '@tamagui/list-item'\n// import { useLabelContext } from '@tamagui/react-label'\nimport { Portal } from '@tamagui/portal'\nimport { Separator } from '@tamagui/separator'\nimport { ThemeableStack, XStack, YStack, YStackProps } from '@tamagui/stacks'\nimport { Paragraph } from '@tamagui/text'\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\ntype TamaguiElement = HTMLElement | View\n\n// Cross browser fixes for pinch-zooming/backdrop-filter \uD83D\uDE44\nconst userAgent = (typeof navigator !== 'undefined' && navigator.userAgent) || ''\nconst isFirefox = userAgent.toLowerCase().includes('firefox')\nif (isFirefox) {\n document.body.classList.add('firefox')\n}\nfunction getVisualOffsetTop() {\n return !/^((?!chrome|android).)*safari/i.test(userAgent) ? visualViewport.offsetTop : 0\n}\n\nconst getSelectItemSize = (val: SizeTokens, { tokens }: VariantSpreadExtras<any>) => {\n const padding = getVariableValue(tokens.size[val])\n return {\n paddingHorizontal: padding / 2,\n paddingVertical: padding / 4,\n }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * SelectContext\n * -----------------------------------------------------------------------------------------------*/\n\nconst SELECT_NAME = 'Select'\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 value: any\n selectedIndex: number\n setSelectedIndex: (index: number) => void\n activeIndex: number | null\n setActiveIndex: (index: number | null) => void\n setValueAtIndex: (index: number, value: string) => void\n listRef: React.MutableRefObject<Array<HTMLElement | null>>\n floatingRef: React.MutableRefObject<HTMLElement | null>\n open: boolean\n setOpen: (open: boolean) => void\n onChange: (value: string) => void\n dataRef: React.MutableRefObject<ContextData>\n controlledScrolling: boolean\n valueNode: Element | null\n onValueNodeChange(node: HTMLElement): void\n valueNodeHasChildren: boolean\n onValueNodeHasChildrenChange(hasChildren: boolean): void\n canScrollUp: boolean\n canScrollDown: boolean\n floatingContext: FloatingContext<ReferenceType>\n increaseHeight: (floating: HTMLElement, amount?: any) => number | undefined\n forceUpdate: React.DispatchWithoutAction\n interactions: {\n getReferenceProps: (userProps?: React.HTMLProps<Element> | undefined) => any\n getFloatingProps: (userProps?: React.HTMLProps<HTMLElement> | undefined) => any\n getItemProps: (userProps?: React.HTMLProps<HTMLElement> | undefined) => any\n }\n}\n\ntype ScopedProps<P> = P & { __scopeSelect?: Scope }\n\nconst [createSelectContext, createSelectScope] = createContextScope(SELECT_NAME)\nconst [SelectProvider, useSelectContext] = createSelectContext<SelectContextValue>(SELECT_NAME)\n\n// const [SelectContentContextProvider, useSelectContentContext] =\n// createSelectContext<SelectContentContextValue>(CONTENT_NAME);\n\ntype GenericElement = HTMLElement | View\n\ntype Direction = 'ltr' | 'rtl'\n\nconst OPEN_KEYS = [' ', 'Enter', 'ArrowUp', 'ArrowDown']\nconst SELECTION_KEYS = [' ', 'Enter']\n\n/* -------------------------------------------------------------------------------------------------\n * SelectTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'SelectTrigger'\n\nexport type SelectTriggerProps = ListItemProps\n\nexport const SelectTrigger = React.forwardRef<GenericElement, 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 return (\n <ListItem\n backgrounded\n radiused\n hoverable\n pressable\n focusable\n tabIndex={-1}\n borderWidth={1}\n componentName={TRIGGER_NAME}\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={forwardedRef}\n {...context.interactions.getReferenceProps()}\n />\n )\n }\n)\n\nSelectTrigger.displayName = TRIGGER_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * SelectValue\n * -----------------------------------------------------------------------------------------------*/\n\nconst VALUE_NAME = 'SelectValue'\n\nconst SelectValueFrame = styled(Paragraph, {\n name: VALUE_NAME,\n})\n\ntype SelectValueProps = GetProps<typeof SelectValueFrame> & {\n placeholder?: React.ReactNode\n}\n\nconst SelectValue = SelectValueFrame.extractable(\n React.forwardRef<TamaguiElement, SelectValueProps>(\n ({ __scopeSelect, children, placeholder }: ScopedProps<SelectValueProps>, forwardedRef) => {\n // We ignore `className` and `style` as this part shouldn't be styled.\n const context = useSelectContext(VALUE_NAME, __scopeSelect)\n const { onValueNodeHasChildrenChange } = context\n const hasChildren = children !== undefined\n const composedRefs = useComposedRefs(forwardedRef, context.onValueNodeChange)\n\n React.useLayoutEffect(() => {\n onValueNodeHasChildrenChange(hasChildren)\n }, [onValueNodeHasChildrenChange, hasChildren])\n\n return (\n <SelectValueFrame\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 {context.value === undefined && placeholder !== undefined ? placeholder : children}\n </SelectValueFrame>\n )\n }\n )\n)\n\nSelectValue.displayName = VALUE_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * SelectIcon\n * -----------------------------------------------------------------------------------------------*/\n\nexport const SelectIcon = styled(XStack, {\n name: 'SelectIcon',\n // @ts-ignore\n 'aria-hidden': true,\n children: <Paragraph>\u25BC</Paragraph>,\n})\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 ({ children, __scopeSelect }: ScopedProps<SelectContentProps>, forwardedRef) => {\n const context = useSelectContext(CONTENT_NAME, __scopeSelect)\n return (\n <FloatingPortal>\n {context.open ? (\n <FloatingOverlay lockScroll>{children}</FloatingOverlay>\n ) : (\n <div style={{ display: 'none' }}>{children}</div>\n )}\n </FloatingPortal>\n )\n }\n)\n\n/* -------------------------------------------------------------------------------------------------\n * SelectViewport\n * -----------------------------------------------------------------------------------------------*/\n\nconst VIEWPORT_NAME = 'SelectViewport'\n\nexport const SelectViewportFrame = styled(ThemeableStack, {\n name: VIEWPORT_NAME,\n backgroundColor: '$background',\n elevate: true,\n overflow: 'hidden',\n \n // works on web just not typed\n // @ts-ignore\n userSelect: 'none',\n\n variants: {\n size: {\n '...size': (val, { tokens }) => {\n return {\n borderRadius: tokens.size[val] ?? val,\n }\n },\n },\n },\n\n defaultVariants: {\n size: '$2',\n },\n})\n\nexport type SelectViewportProps = GetProps<typeof SelectViewportFrame>\n\nconst SelectViewport = React.forwardRef<TamaguiElement, SelectViewportProps>(\n (props: ScopedProps<SelectViewportProps>, forwardedRef) => {\n const { __scopeSelect, children, ...viewportProps } = props\n const context = useSelectContext(VIEWPORT_NAME, __scopeSelect)\n const composedRefs = useComposedRefs(\n forwardedRef\n // contentContext.onViewportChange\n )\n const prevScrollTopRef = React.useRef(0)\n return (\n <>\n {/* Hide scrollbars cross-browser and enable momentum scroll for touch devices */}\n <style\n dangerouslySetInnerHTML={{\n __html: `[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`,\n }}\n />\n <FloatingFocusManager context={context.floatingContext} preventTabbing>\n <div {...context.interactions.getFloatingProps()}>\n <SelectViewportFrame\n data-radix-select-viewport=\"\"\n // @ts-ignore\n role=\"presentation\"\n {...viewportProps}\n ref={composedRefs}\n >\n {children}\n </SelectViewportFrame>\n </div>\n </FloatingFocusManager>\n </>\n )\n }\n)\n\nSelectViewport.displayName = VIEWPORT_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: TamaguiElement | null): void\n}\n\nconst [SelectItemContextProvider, useSelectItemContext] =\n createSelectContext<SelectItemContextValue>(ITEM_NAME)\n\ninterface SelectItemProps extends YStackProps {\n value: string\n index: number\n disabled?: boolean\n textValue?: string\n}\n\n// const SelectItemFrame = styled(YStack, {\n// name: ITEM_NAME,\n// tag: 'li',\n// // @ts-ignore\n// role: 'option',\n// width: '100%',\n\n// hoverStyle: {\n// backgroundColor: '$backgroundHover',\n// },\n\n// focusStyle: {\n// backgroundColor: '$backgroundFocus',\n// },\n\n// variants: {\n// size: {\n// '...size': getSelectItemSize,\n// },\n// },\n\n// defaultVariants: {\n// size: '$4',\n// },\n// })\n\nconst SelectItem = React.forwardRef<TamaguiElement, SelectItemProps>(\n (props: ScopedProps<SelectItemProps>, forwardedRef) => {\n const {\n __scopeSelect,\n value,\n disabled = false,\n textValue: textValueProp,\n index,\n ...itemProps\n } = props\n const context = useSelectContext(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 textId = useId()\n\n const {\n selectedIndex,\n setSelectedIndex,\n listRef,\n open,\n setOpen,\n onChange,\n activeIndex,\n setActiveIndex,\n setValueAtIndex,\n dataRef,\n } = context\n\n const composedRefs = useComposedRefs(\n forwardedRef,\n (node) => {\n if (node instanceof HTMLElement) {\n listRef.current[index] = node\n }\n }\n // isSelected ? context.onSelectedItemChange : undefined\n )\n\n React.useEffect(() => {\n setValueAtIndex(index, value)\n }, [index])\n\n const timeoutRef = React.useRef<any>()\n const [allowMouseUp, setAllowMouseUp] = React.useState(false)\n\n function handleSelect() {\n setSelectedIndex(index)\n onChange(value)\n setOpen(false)\n }\n\n React.useEffect(() => {\n clearTimeout(timeoutRef.current)\n if (open) {\n if (selectedIndex !== index) {\n setAllowMouseUp(true)\n } else {\n timeoutRef.current = setTimeout(() => {\n setAllowMouseUp(true)\n }, 300)\n }\n } else {\n setAllowMouseUp(false)\n }\n }, [open, index, setActiveIndex, selectedIndex])\n\n function handleKeyDown(event: React.KeyboardEvent) {\n if (event.key === 'Enter' || (event.key === ' ' && !dataRef.current.typing)) {\n event.preventDefault()\n handleSelect()\n }\n }\n\n const selectItemProps = context.interactions.getItemProps({\n onClick: allowMouseUp ? handleSelect : undefined,\n onMouseUp: allowMouseUp ? handleSelect : undefined,\n onKeyDown: handleKeyDown,\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 <ListItem\n backgrounded\n hoverable\n pressable\n focusable\n componentName={ITEM_NAME}\n ref={composedRefs}\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 {...selectItemProps}\n />\n </SelectItemContextProvider>\n )\n }\n)\n\nSelectItem.displayName = ITEM_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * SelectItemText\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_TEXT_NAME = 'SelectItemText'\n\nconst SelectItemTextFrame = styled(Paragraph, {\n name: ITEM_TEXT_NAME,\n cursor: 'default',\n})\n\ntype SelectItemTextProps = GetProps<typeof SelectItemTextFrame>\n\nconst SelectItemText = React.forwardRef<TamaguiElement, 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 itemContext = useSelectItemContext(ITEM_TEXT_NAME, __scopeSelect)\n const ref = React.useRef<TamaguiElement | 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 <SelectItemTextFrame 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\nconst SelectItemIndicatorFrame = styled(XStack, {\n name: ITEM_TEXT_NAME,\n})\n\ntype SelectItemIndicatorProps = GetProps<typeof SelectItemIndicatorFrame>\n\nconst SelectItemIndicator = React.forwardRef<TamaguiElement, SelectItemIndicatorProps>(\n (props: ScopedProps<SelectItemIndicatorProps>, forwardedRef) => {\n const { __scopeSelect, ...itemIndicatorProps } = props\n const itemContext = useSelectItemContext(ITEM_INDICATOR_NAME, __scopeSelect)\n return itemContext.isSelected ? (\n <SelectItemIndicatorFrame aria-hidden {...itemIndicatorProps} ref={forwardedRef} />\n ) : null\n }\n)\n\nSelectItemIndicator.displayName = ITEM_INDICATOR_NAME\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\nconst SelectGroupFrame = styled(YStack, {\n name: GROUP_NAME,\n width: '100%',\n})\n\ntype SelectGroupProps = GetProps<typeof SelectGroupFrame>\n\nconst SelectGroup = React.forwardRef<TamaguiElement, SelectGroupProps>(\n (props: ScopedProps<SelectGroupProps>, forwardedRef) => {\n const { __scopeSelect, ...groupProps } = props\n const groupId = useId()\n return (\n <SelectGroupContextProvider scope={__scopeSelect} id={groupId || ''}>\n <SelectGroupFrame\n // @ts-ignore\n role=\"group\"\n aria-labelledby={groupId}\n {...groupProps}\n ref={forwardedRef}\n />\n </SelectGroupContextProvider>\n )\n }\n)\n\nSelectGroup.displayName = GROUP_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * SelectLabel\n * -----------------------------------------------------------------------------------------------*/\n\nconst LABEL_NAME = 'SelectLabel'\n\nexport type SelectLabelProps = ListItemProps\n\nconst SelectLabel = React.forwardRef<TamaguiElement, SelectLabelProps>(\n (props: ScopedProps<SelectLabelProps>, forwardedRef) => {\n const { __scopeSelect, ...labelProps } = props\n const groupContext = useSelectGroupContext(LABEL_NAME, __scopeSelect)\n return (\n <ListItem\n componentName={LABEL_NAME}\n fontWeight=\"800\"\n id={groupContext.id}\n {...labelProps}\n // @ts-expect-error\n ref={forwardedRef}\n />\n )\n }\n)\n\nSelectLabel.displayName = LABEL_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * SelectScrollUpButton\n * -----------------------------------------------------------------------------------------------*/\n\nconst SCROLL_UP_BUTTON_NAME = 'SelectScrollUpButton'\n\ninterface SelectScrollButtonProps\n extends Omit<SelectScrollButtonImplProps, 'dir' | 'componentName'> {}\n\nconst SelectScrollUpButton = React.forwardRef<TamaguiElement, SelectScrollButtonProps>(\n (props: ScopedProps<SelectScrollButtonProps>, forwardedRef) => {\n return (\n <SelectScrollButtonImpl\n componentName={SCROLL_UP_BUTTON_NAME}\n {...props}\n dir=\"up\"\n ref={forwardedRef}\n />\n )\n }\n)\n\nSelectScrollUpButton.displayName = SCROLL_UP_BUTTON_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * SelectScrollDownButton\n * -----------------------------------------------------------------------------------------------*/\n\nconst SCROLL_DOWN_BUTTON_NAME = 'SelectScrollDownButton'\n\nconst SelectScrollDownButton = React.forwardRef<TamaguiElement, SelectScrollButtonProps>(\n (props: ScopedProps<SelectScrollButtonProps>, forwardedRef) => {\n return (\n <SelectScrollButtonImpl\n componentName={SCROLL_DOWN_BUTTON_NAME}\n {...props}\n dir=\"down\"\n ref={forwardedRef}\n />\n )\n }\n)\n\nSelectScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME\n\ntype SelectScrollButtonImplElement = TamaguiElement\ninterface SelectScrollButtonImplProps extends YStackProps {\n dir: 'up' | 'down'\n componentName: string\n}\n\nconst SelectScrollButtonImpl = React.forwardRef<\n SelectScrollButtonImplElement,\n SelectScrollButtonImplProps\n>((props: ScopedProps<SelectScrollButtonImplProps>, forwardedRef) => {\n const { __scopeSelect, dir, componentName, ...scrollIndicatorProps } = props\n const { floatingRef, increaseHeight, forceUpdate, ...context } = useSelectContext(\n componentName,\n __scopeSelect\n )\n const intervalRef = React.useRef<any>()\n const loopingRef = React.useRef(false)\n const isVisible = context[dir === 'down' ? 'canScrollDown' : 'canScrollUp']\n\n const { x, y, reference, floating, strategy, update, refs } = useFloating({\n strategy: 'fixed',\n placement: dir === 'up' ? 'top' : 'bottom',\n middleware: [offset(({ rects }) => -rects.floating.height)],\n })\n\n const composedRefs = useComposedRefs(forwardedRef, floating)\n\n React.useLayoutEffect(() => {\n reference(floatingRef.current)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [reference, floatingRef.current])\n\n React.useEffect(() => {\n if (!refs.reference.current || !refs.floating.current || !isVisible) {\n return\n }\n\n const cleanup = autoUpdate(refs.reference.current, refs.floating.current, update, {\n animationFrame: true,\n })\n\n return () => {\n clearInterval(intervalRef.current)\n loopingRef.current = false\n cleanup()\n }\n }, [isVisible, update, refs.floating, refs.reference])\n\n if (!isVisible) {\n return null\n }\n\n const handleScrollArrowChange = () => {\n const floating = floatingRef.current\n const isUp = dir === 'up'\n if (floating) {\n const value = isUp ? -SCROLL_ARROW_VELOCITY : SCROLL_ARROW_VELOCITY\n const multi =\n (isUp && floating.scrollTop <= SCROLL_ARROW_THRESHOLD * 2) ||\n (!isUp &&\n floating.scrollTop >=\n floating.scrollHeight - floating.clientHeight - SCROLL_ARROW_THRESHOLD * 2)\n ? 2\n : 1\n floating.scrollTop += multi * (isUp ? -SCROLL_ARROW_VELOCITY : SCROLL_ARROW_VELOCITY)\n\n increaseHeight(floating, multi === 2 ? value * 2 : value)\n // Ensure derived data (scroll arrows) is fresh\n forceUpdate()\n }\n }\n\n return (\n <YStack\n ref={composedRefs}\n componentName={componentName}\n aria-hidden\n {...scrollIndicatorProps}\n // @ts-expect-error\n position={strategy}\n left={x || 0}\n top={y || 0}\n width={`calc(${(floatingRef.current?.offsetWidth ?? 0) - 2}px)`}\n background={`linear-gradient(to ${\n dir === 'up' ? 'bottom' : 'top'\n }, #29282b 50%, rgba(53, 54, 55, 0.01))`}\n onPointerMove={() => {\n if (!loopingRef.current) {\n intervalRef.current = setInterval(handleScrollArrowChange, 1000 / 60)\n loopingRef.current = true\n }\n }}\n onPointerLeave={() => {\n loopingRef.current = false\n clearInterval(intervalRef.current)\n }}\n />\n )\n})\n\n/* -------------------------------------------------------------------------------------------------\n * SelectSeparator\n * -----------------------------------------------------------------------------------------------*/\n\nexport const SelectSeparator = styled(Separator, {\n name: 'SelectSeparator',\n})\n\n/* -------------------------------------------------------------------------------------------------\n * Select\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface 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\nexport const Select = withStaticProperties(\n (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\n // const [trigger, setTrigger] = React.useState<SelectTriggerElement | null>(null)\n\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen || false,\n onChange: onOpenChange,\n })\n\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue || '',\n onChange: onValueChange,\n })\n\n const [activeIndex, setActiveIndex] = React.useState<number | null>(null)\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 listItemsRef = React.useRef<Array<HTMLElement | null>>([])\n const listContentRef = React.useRef<string[]>([])\n\n const [selectedIndex, setSelectedIndex] = React.useState(\n Math.max(0, listContentRef.current.indexOf(value))\n )\n const [controlledScrolling, setControlledScrolling] = React.useState(false)\n const [middlewareType, setMiddlewareType] = React.useState<'align' | 'fallback'>('align')\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 React.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 () => {\n cancelAnimationFrame(frame)\n }\n }, [open])\n\n function getFloatingPadding(floating: HTMLElement | null) {\n if (!floating) {\n return 0\n }\n return Number(getComputedStyle(floating).paddingLeft?.replace('px', ''))\n }\n\n const { x, y, reference, floating, strategy, context, refs, middlewareData, update } =\n useFloating({\n open,\n onOpenChange: setOpen,\n placement: 'bottom',\n middleware:\n middlewareType === 'align'\n ? [\n offset(({ rects }) => {\n const index = activeIndexRef.current ?? selectedIndexRef.current\n\n if (index == null) {\n return 0\n }\n\n const item = listItemsRef.current[index]\n\n if (item == null) {\n return 0\n }\n\n const offsetTop = item.offsetTop\n const itemHeight = item.offsetHeight\n const height = rects.reference.height\n\n return -offsetTop - height - (itemHeight - height) / 2\n }),\n // Custom `size` that can handle the opposite direction of the\n // placement\n {\n name: 'size',\n async fn(args) {\n const {\n elements: { floating },\n rects: { reference },\n middlewareData,\n } = args\n\n const overflow = await detectOverflow(args, {\n padding: WINDOW_PADDING,\n })\n\n const top = Math.max(0, overflow.top)\n const bottom = Math.max(0, overflow.bottom)\n const nextY = args.y + top\n\n if (middlewareData.size?.skip) {\n return {\n y: nextY,\n data: {\n y: middlewareData.size.y,\n },\n }\n }\n\n Object.assign(floating.style, {\n maxHeight: `${floating.scrollHeight - Math.abs(top + bottom)}px`,\n minWidth: `${reference.width + getFloatingPadding(floating) * 2}px`,\n })\n\n return {\n y: nextY,\n data: {\n y: top,\n skip: true,\n },\n reset: {\n rects: true,\n },\n }\n },\n },\n ]\n : [\n offset(5),\n flip(),\n size({\n apply({ rects, availableHeight, elements }) {\n Object.assign(elements.floating.style, {\n width: `${rects.reference.width}px`,\n maxHeight: `${availableHeight}px`,\n })\n },\n padding: WINDOW_PADDING,\n }),\n ],\n })\n\n const floatingRef = refs.floating\n const forceUpdate = React.useReducer(() => ({}), {})[1]\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 const interactions = useInteractions([\n useClick(context, { pointerDown: true }),\n useRole(context, { role: 'listbox' }),\n useDismiss(context),\n useListNavigation(context, {\n listRef: listItemsRef,\n activeIndex,\n selectedIndex,\n onNavigate: setActiveIndex,\n }),\n useTypeahead(context, {\n listRef: listContentRef,\n onMatch: open ? setActiveIndex : setSelectedIndex,\n selectedIndex,\n activeIndex,\n }),\n ])\n\n const increaseHeight = React.useCallback(\n (floating: HTMLElement, amount = 0) => {\n if (middlewareType === 'fallback') {\n return\n }\n\n const currentMaxHeight = Number(floating.style.maxHeight.replace('px', ''))\n const currentTop = Number(floating.style.top.replace('px', ''))\n const rect = floating.getBoundingClientRect()\n const rectTop = rect.top\n const rectBottom = rect.bottom\n const visualMaxHeight = visualViewport.height - WINDOW_PADDING * 2\n\n if (\n amount < 0 &&\n selectedIndexRef.current != null &&\n Math.round(rectBottom) <\n Math.round(visualViewport.height + getVisualOffsetTop() - WINDOW_PADDING)\n ) {\n floating.style.maxHeight = `${Math.min(visualMaxHeight, currentMaxHeight - amount)}px`\n }\n\n if (\n amount > 0 &&\n Math.round(rectTop) > Math.round(WINDOW_PADDING - getVisualOffsetTop()) &&\n floating.scrollHeight > floating.offsetHeight\n ) {\n const nextTop = Math.max(WINDOW_PADDING + getVisualOffsetTop(), currentTop - amount)\n\n const nextMaxHeight = Math.min(visualMaxHeight, currentMaxHeight + amount)\n\n Object.assign(floating.style, {\n maxHeight: `${nextMaxHeight}px`,\n top: `${nextTop}px`,\n })\n\n if (nextTop - WINDOW_PADDING > getVisualOffsetTop()) {\n floating.scrollTop -= nextMaxHeight - currentMaxHeight + getFloatingPadding(floating)\n }\n\n return currentTop - nextTop\n }\n },\n [middlewareType]\n )\n\n const touchPageYRef = React.useRef<number | null>(null)\n\n const handleWheel = React.useCallback(\n (event: WheelEvent | TouchEvent) => {\n const pinching = event.ctrlKey\n\n const currentTarget = event.currentTarget as HTMLElement\n\n function isWheelEvent(event: any): event is WheelEvent {\n return typeof event.deltaY === 'number'\n }\n\n function isTouchEvent(event: any): event is TouchEvent {\n return event.touches != null\n }\n\n if (\n Math.abs(\n (currentTarget?.offsetHeight ?? 0) - (visualViewport.height - WINDOW_PADDING * 2)\n ) > 1 &&\n !pinching\n ) {\n event.preventDefault()\n } else if (isWheelEvent(event) && isFirefox) {\n // Firefox needs this to propagate scrolling\n // during momentum scrolling phase if the\n // height reached its maximum (at boundaries)\n currentTarget.scrollTop += event.deltaY\n }\n\n if (!pinching) {\n let delta = 5\n\n if (isTouchEvent(event)) {\n const currentPageY = touchPageYRef.current\n const pageY = event.touches[0]?.pageY\n\n if (pageY != null) {\n touchPageYRef.current = pageY\n\n if (currentPageY != null) {\n delta = currentPageY - pageY\n }\n }\n }\n\n increaseHeight(currentTarget, isWheelEvent(event) ? event.deltaY : delta)\n setScrollTop(currentTarget.scrollTop)\n // Ensure derived data (scroll arrows) is fresh\n forceUpdate()\n }\n },\n [increaseHeight, forceUpdate]\n )\n\n // Handle `onWheel` event in an effect to remove the `passive` option so we\n // can .preventDefault() it\n React.useEffect(() => {\n function onTouchEnd() {\n touchPageYRef.current = null\n }\n\n const floating = floatingRef.current\n if (open && floating && middlewareType === 'align') {\n floating.addEventListener('wheel', handleWheel)\n floating.addEventListener('touchmove', handleWheel)\n floating.addEventListener('touchend', onTouchEnd, { passive: true })\n return () => {\n floating.removeEventListener('wheel', handleWheel)\n floating.removeEventListener('touchmove', handleWheel)\n floating.removeEventListener('touchend', onTouchEnd)\n }\n }\n }, [open, floatingRef, handleWheel, middlewareType])\n\n // Ensure the menu remains attached to the reference element when resizing.\n React.useEffect(() => {\n window.addEventListener('resize', update)\n return () => {\n window.removeEventListener('resize', update)\n }\n }, [update])\n\n // Scroll the active or selected item into view when in `controlledScrolling`\n // mode (i.e. arrow key nav).\n React.useLayoutEffect(() => {\n const floating = floatingRef.current\n\n if (open && controlledScrolling && floating) {\n const item =\n activeIndex != null\n ? listItemsRef.current[activeIndex]\n : selectedIndex != null\n ? listItemsRef.current[selectedIndex]\n : null\n\n if (item && prevActiveIndex != null) {\n const itemHeight = listItemsRef.current[prevActiveIndex]?.offsetHeight ?? 0\n\n const floatingHeight = floating.offsetHeight\n const top = item.offsetTop\n const bottom = top + itemHeight\n\n if (top < floating.scrollTop + 20) {\n const diff = floating.scrollTop - top + 20\n floating.scrollTop -= diff\n\n if (activeIndex != selectedIndex && activeIndex != null) {\n increaseHeight(floating, -diff)\n }\n } else if (bottom > floatingHeight + floating.scrollTop - 20) {\n const diff = bottom - floatingHeight - floating.scrollTop + 20\n\n floating.scrollTop += diff\n\n if (activeIndex != selectedIndex && activeIndex != null) {\n floating.scrollTop -= increaseHeight(floating, diff) ?? 0\n }\n }\n }\n }\n }, [\n open,\n controlledScrolling,\n prevActiveIndex,\n activeIndex,\n selectedIndex,\n floatingRef,\n increaseHeight,\n ])\n\n // Sync the height and the scrollTop values and device whether to use fallback\n // positioning.\n React.useLayoutEffect(() => {\n const floating = refs.floating.current\n const reference = refs.reference.current\n\n if (open && floating && reference && floating.offsetHeight < floating.scrollHeight) {\n const referenceRect = reference.getBoundingClientRect()\n\n if (middlewareType === 'fallback') {\n const item = listItemsRef.current[selectedIndex]\n if (item) {\n floating.scrollTop = item.offsetTop - floating.clientHeight + referenceRect.height\n }\n return\n }\n\n floating.scrollTop = middlewareData.size?.y\n\n const closeToBottom =\n visualViewport.height + getVisualOffsetTop() - referenceRect.bottom < FALLBACK_THRESHOLD\n const closeToTop = referenceRect.top < FALLBACK_THRESHOLD\n\n if (floating.offsetHeight < MIN_HEIGHT || closeToTop || closeToBottom) {\n setMiddlewareType('fallback')\n }\n }\n }, [\n open,\n increaseHeight,\n selectedIndex,\n middlewareType,\n refs.floating,\n refs.reference,\n // Always re-run this effect when the position has been computed so the\n // .scrollTop change works with fresh sizing.\n middlewareData,\n ])\n\n React.useLayoutEffect(() => {\n if (open && selectedIndex != null) {\n requestAnimationFrame(() => {\n listItemsRef.current[selectedIndex]?.focus({ preventScroll: true })\n })\n }\n }, [listItemsRef, selectedIndex, open])\n\n // Wait for scroll position to settle before showing arrows to prevent\n // interference with pointer events.\n React.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 // 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 const [valueNode, setValueNode] = React.useState<HTMLElement | null>(null)\n const [valueNodeHasChildren, setValueNodeHasChildren] = React.useState(false)\n\n return (\n <SelectProvider\n scope={__scopeSelect}\n increaseHeight={increaseHeight}\n forceUpdate={forceUpdate}\n floatingRef={floatingRef}\n valueNode={valueNode}\n onValueNodeChange={setValueNode}\n valueNodeHasChildren={valueNodeHasChildren}\n onValueNodeHasChildrenChange={setValueNodeHasChildren}\n setValueAtIndex={(index, value) => {\n listContentRef.current[index] = value\n }}\n interactions={{\n ...interactions,\n getReferenceProps() {\n return interactions.getReferenceProps({\n ref: reference,\n className: 'SelectTrigger',\n onKeyDown(event) {\n if (\n event.key === 'Enter' ||\n (event.key === ' ' && !context.dataRef.current.typing)\n ) {\n event.preventDefault()\n setOpen(true)\n }\n },\n })\n },\n getFloatingProps() {\n return interactions.getFloatingProps({\n ref: floating,\n className: 'Select',\n style: {\n position: strategy,\n top: y ?? '',\n left: x ?? '',\n },\n onPointerEnter() {\n setControlledScrolling(false)\n },\n onPointerMove() {\n setControlledScrolling(false)\n },\n onKeyDown() {\n setControlledScrolling(true)\n },\n onScroll(event) {\n setScrollTop(event.currentTarget.scrollTop)\n },\n })\n },\n }}\n floatingContext={context}\n activeIndex={activeIndex}\n canScrollDown={!!showDownArrow}\n canScrollUp={!!showUpArrow}\n controlledScrolling\n dataRef={context.dataRef}\n listRef={listItemsRef}\n onChange={setValue}\n selectedIndex={0}\n setActiveIndex={setActiveIndex}\n setOpen={setOpen}\n setSelectedIndex={setSelectedIndex}\n value={value}\n // trigger={trigger}\n // onTriggerChange={setTrigger}\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 {\n Content: SelectContent,\n Group: SelectGroup,\n Icon: SelectIcon,\n Item: SelectItem,\n ItemIndicator: SelectItemIndicator,\n ItemText: SelectItemText,\n Label: SelectLabel,\n ScrollDownButton: SelectScrollDownButton,\n ScrollUpButton: SelectScrollUpButton,\n Trigger: SelectTrigger,\n Value: SelectValue,\n Viewport: SelectViewport,\n }\n)\n\n// @ts-ignore\nSelect.displayName = SELECT_NAME\n\nexport { createSelectScope }\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|