@tamagui/select 2.7.7 → 3.0.0-beta.643.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Select.cjs +409 -467
- package/dist/cjs/Select.native.cjs +495 -0
- package/dist/cjs/Select.native.js +445 -492
- package/dist/cjs/Select.native.js.map +1 -1
- package/dist/cjs/SelectContent.cjs +80 -79
- package/dist/cjs/SelectContent.native.cjs +30 -0
- package/dist/cjs/SelectContent.native.js +18 -22
- package/dist/cjs/SelectContent.native.js.map +1 -1
- package/dist/cjs/SelectImpl.cjs +299 -319
- package/dist/cjs/SelectImpl.native.cjs +30 -0
- package/dist/cjs/SelectImpl.native.js +17 -24
- package/dist/cjs/SelectImpl.native.js.map +1 -1
- package/dist/cjs/SelectItem.cjs +268 -205
- package/dist/cjs/SelectItem.native.cjs +317 -0
- package/dist/cjs/SelectItem.native.js +291 -211
- package/dist/cjs/SelectItem.native.js.map +1 -1
- package/dist/cjs/SelectItemText.cjs +49 -79
- package/dist/cjs/SelectItemText.native.cjs +74 -0
- package/dist/cjs/SelectItemText.native.js +50 -79
- package/dist/cjs/SelectItemText.native.js.map +1 -1
- package/dist/cjs/SelectScrollButton.cjs +111 -130
- package/dist/cjs/SelectScrollButton.native.cjs +38 -0
- package/dist/cjs/SelectScrollButton.native.js +25 -22
- package/dist/cjs/SelectScrollButton.native.js.map +1 -1
- package/dist/cjs/SelectTrigger.cjs +69 -84
- package/dist/cjs/SelectTrigger.native.cjs +91 -0
- package/dist/cjs/SelectTrigger.native.js +71 -66
- package/dist/cjs/SelectTrigger.native.js.map +1 -1
- package/dist/cjs/SelectViewport.cjs +119 -142
- package/dist/cjs/SelectViewport.native.cjs +73 -0
- package/dist/cjs/SelectViewport.native.js +54 -50
- package/dist/cjs/SelectViewport.native.js.map +1 -1
- package/dist/cjs/constants.cjs +21 -22
- package/dist/cjs/constants.native.cjs +41 -0
- package/dist/cjs/constants.native.js +21 -21
- package/dist/cjs/constants.native.js.map +1 -1
- package/dist/cjs/context.cjs +38 -48
- package/dist/cjs/context.native.cjs +58 -0
- package/dist/cjs/context.native.js +40 -49
- package/dist/cjs/context.native.js.map +1 -1
- package/dist/cjs/index.cjs +15 -11
- package/dist/cjs/index.native.cjs +27 -0
- package/dist/cjs/index.native.js +15 -10
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/selectionController.cjs +334 -0
- package/dist/cjs/selectionController.native.cjs +403 -0
- package/dist/cjs/selectionController.native.js +405 -0
- package/dist/cjs/selectionController.native.js.map +1 -0
- package/dist/cjs/types.cjs +10 -11
- package/dist/cjs/types.native.cjs +19 -0
- package/dist/cjs/types.native.js +10 -10
- package/dist/cjs/types.native.js.map +1 -1
- package/dist/esm/Select.mjs +382 -443
- package/dist/esm/Select.mjs.map +1 -1
- package/dist/esm/Select.native.js +418 -469
- package/dist/esm/Select.native.js.map +1 -1
- package/dist/esm/SelectContent.mjs +67 -61
- package/dist/esm/SelectContent.mjs.map +1 -1
- package/dist/esm/SelectContent.native.js +4 -5
- package/dist/esm/SelectContent.native.js.map +1 -1
- package/dist/esm/SelectImpl.mjs +284 -294
- package/dist/esm/SelectImpl.mjs.map +1 -1
- package/dist/esm/SelectImpl.native.js +5 -8
- package/dist/esm/SelectImpl.native.js.map +1 -1
- package/dist/esm/SelectItem.mjs +252 -182
- package/dist/esm/SelectItem.mjs.map +1 -1
- package/dist/esm/SelectItem.native.js +276 -190
- package/dist/esm/SelectItem.native.js.map +1 -1
- package/dist/esm/SelectItemText.mjs +33 -55
- package/dist/esm/SelectItemText.mjs.map +1 -1
- package/dist/esm/SelectItemText.native.js +34 -56
- package/dist/esm/SelectItemText.native.js.map +1 -1
- package/dist/esm/SelectScrollButton.mjs +95 -107
- package/dist/esm/SelectScrollButton.mjs.map +1 -1
- package/dist/esm/SelectScrollButton.native.js +11 -7
- package/dist/esm/SelectScrollButton.native.js.map +1 -1
- package/dist/esm/SelectTrigger.mjs +56 -58
- package/dist/esm/SelectTrigger.mjs.map +1 -1
- package/dist/esm/SelectTrigger.native.js +54 -44
- package/dist/esm/SelectTrigger.native.js.map +1 -1
- package/dist/esm/SelectViewport.mjs +104 -119
- package/dist/esm/SelectViewport.mjs.map +1 -1
- package/dist/esm/SelectViewport.native.js +44 -39
- package/dist/esm/SelectViewport.native.js.map +1 -1
- package/dist/esm/constants.mjs +1 -0
- package/dist/esm/constants.mjs.map +1 -1
- package/dist/esm/constants.native.js +1 -0
- package/dist/esm/constants.native.js.map +1 -1
- package/dist/esm/context.mjs +20 -28
- package/dist/esm/context.mjs.map +1 -1
- package/dist/esm/context.native.js +23 -31
- package/dist/esm/context.native.js.map +1 -1
- package/dist/esm/index.js +13 -3
- package/dist/esm/index.mjs +13 -3
- package/dist/esm/index.native.js +13 -3
- package/dist/esm/selectionController.mjs +305 -0
- package/dist/esm/selectionController.mjs.map +1 -0
- package/dist/esm/selectionController.native.js +372 -0
- package/dist/esm/selectionController.native.js.map +1 -0
- package/dist/esm/types.mjs +0 -2
- package/dist/esm/types.native.js +0 -2
- package/dist/jsx/Select.mjs +382 -443
- package/dist/jsx/Select.mjs.map +1 -1
- package/dist/jsx/Select.native.cjs +495 -0
- package/dist/jsx/Select.native.js +445 -492
- package/dist/jsx/Select.native.js.map +1 -1
- package/dist/jsx/SelectContent.mjs +67 -61
- package/dist/jsx/SelectContent.mjs.map +1 -1
- package/dist/jsx/SelectContent.native.cjs +30 -0
- package/dist/jsx/SelectContent.native.js +18 -22
- package/dist/jsx/SelectContent.native.js.map +1 -1
- package/dist/jsx/SelectImpl.mjs +284 -294
- package/dist/jsx/SelectImpl.mjs.map +1 -1
- package/dist/jsx/SelectImpl.native.cjs +30 -0
- package/dist/jsx/SelectImpl.native.js +17 -24
- package/dist/jsx/SelectImpl.native.js.map +1 -1
- package/dist/jsx/SelectItem.mjs +252 -182
- package/dist/jsx/SelectItem.mjs.map +1 -1
- package/dist/jsx/SelectItem.native.cjs +317 -0
- package/dist/jsx/SelectItem.native.js +291 -211
- package/dist/jsx/SelectItem.native.js.map +1 -1
- package/dist/jsx/SelectItemText.mjs +33 -55
- package/dist/jsx/SelectItemText.mjs.map +1 -1
- package/dist/jsx/SelectItemText.native.cjs +74 -0
- package/dist/jsx/SelectItemText.native.js +50 -79
- package/dist/jsx/SelectItemText.native.js.map +1 -1
- package/dist/jsx/SelectScrollButton.mjs +95 -107
- package/dist/jsx/SelectScrollButton.mjs.map +1 -1
- package/dist/jsx/SelectScrollButton.native.cjs +38 -0
- package/dist/jsx/SelectScrollButton.native.js +25 -22
- package/dist/jsx/SelectScrollButton.native.js.map +1 -1
- package/dist/jsx/SelectTrigger.mjs +56 -58
- package/dist/jsx/SelectTrigger.mjs.map +1 -1
- package/dist/jsx/SelectTrigger.native.cjs +91 -0
- package/dist/jsx/SelectTrigger.native.js +71 -66
- package/dist/jsx/SelectTrigger.native.js.map +1 -1
- package/dist/jsx/SelectViewport.mjs +104 -119
- package/dist/jsx/SelectViewport.mjs.map +1 -1
- package/dist/jsx/SelectViewport.native.cjs +73 -0
- package/dist/jsx/SelectViewport.native.js +54 -50
- package/dist/jsx/SelectViewport.native.js.map +1 -1
- package/dist/jsx/constants.mjs +1 -0
- package/dist/jsx/constants.mjs.map +1 -1
- package/dist/jsx/constants.native.cjs +41 -0
- package/dist/jsx/constants.native.js +21 -21
- package/dist/jsx/constants.native.js.map +1 -1
- package/dist/jsx/context.mjs +20 -28
- package/dist/jsx/context.mjs.map +1 -1
- package/dist/jsx/context.native.cjs +58 -0
- package/dist/jsx/context.native.js +40 -49
- package/dist/jsx/context.native.js.map +1 -1
- package/dist/jsx/index.js +13 -3
- package/dist/jsx/index.mjs +13 -3
- package/dist/jsx/index.native.cjs +27 -0
- package/dist/jsx/index.native.js +15 -10
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/selectionController.mjs +305 -0
- package/dist/jsx/selectionController.mjs.map +1 -0
- package/dist/jsx/selectionController.native.cjs +403 -0
- package/dist/jsx/selectionController.native.js +405 -0
- package/dist/jsx/selectionController.native.js.map +1 -0
- package/dist/jsx/types.mjs +0 -2
- package/dist/jsx/types.native.cjs +19 -0
- package/dist/jsx/types.native.js +10 -10
- package/dist/jsx/types.native.js.map +1 -1
- package/package.json +28 -28
- package/src/Select.tsx +457 -357
- package/src/SelectContent.tsx +46 -16
- package/src/SelectImpl.native.tsx +0 -8
- package/src/SelectImpl.tsx +87 -100
- package/src/SelectItem.tsx +282 -136
- package/src/SelectItemText.tsx +16 -33
- package/src/SelectScrollButton.native.tsx +13 -4
- package/src/SelectScrollButton.tsx +56 -41
- package/src/SelectTrigger.tsx +77 -53
- package/src/SelectViewport.native.tsx +42 -25
- package/src/SelectViewport.tsx +52 -51
- package/src/context.tsx +6 -2
- package/src/index.tsx +5 -2
- package/src/selectionController.ts +389 -0
- package/src/types.tsx +88 -45
- package/types/Select.d.ts +139 -201
- package/types/Select.d.ts.map +1 -1
- package/types/SelectContent.d.ts +1 -1
- package/types/SelectContent.d.ts.map +1 -1
- package/types/SelectContent.native.d.ts.map +1 -1
- package/types/SelectImpl.d.ts +2 -1
- package/types/SelectImpl.d.ts.map +1 -1
- package/types/SelectImpl.native.d.ts +1 -5
- package/types/SelectImpl.native.d.ts.map +1 -1
- package/types/SelectItem.d.ts +13 -16
- package/types/SelectItem.d.ts.map +1 -1
- package/types/SelectItemText.d.ts +9 -13
- package/types/SelectItemText.d.ts.map +1 -1
- package/types/SelectScrollButton.d.ts +15 -2
- package/types/SelectScrollButton.d.ts.map +1 -1
- package/types/SelectScrollButton.native.d.ts +16 -3
- package/types/SelectScrollButton.native.d.ts.map +1 -1
- package/types/SelectTrigger.d.ts +11 -23
- package/types/SelectTrigger.d.ts.map +1 -1
- package/types/SelectViewport.d.ts +11 -38
- package/types/SelectViewport.d.ts.map +1 -1
- package/types/SelectViewport.native.d.ts +15 -4
- package/types/SelectViewport.native.d.ts.map +1 -1
- package/types/context.d.ts +2 -0
- package/types/context.d.ts.map +1 -1
- package/types/index.d.ts +5 -2
- package/types/index.d.ts.map +1 -1
- package/types/selectionController.d.ts +88 -0
- package/types/selectionController.d.ts.map +1 -0
- package/types/types.d.ts +47 -37
- package/types/types.d.ts.map +1 -1
- package/dist/cjs/BubbleSelect.cjs +0 -50
- package/dist/cjs/BubbleSelect.native.js +0 -30
- package/dist/cjs/BubbleSelect.native.js.map +0 -1
- package/dist/cjs/useSelectBreakpointActive.cjs +0 -32
- package/dist/cjs/useSelectBreakpointActive.native.js +0 -35
- package/dist/cjs/useSelectBreakpointActive.native.js.map +0 -1
- package/dist/esm/BubbleSelect.mjs +0 -27
- package/dist/esm/BubbleSelect.mjs.map +0 -1
- package/dist/esm/BubbleSelect.native.js +0 -4
- package/dist/esm/BubbleSelect.native.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/index.mjs.map +0 -1
- package/dist/esm/index.native.js.map +0 -1
- package/dist/esm/types.mjs.map +0 -1
- package/dist/esm/types.native.js.map +0 -1
- package/dist/esm/useSelectBreakpointActive.mjs +0 -7
- package/dist/esm/useSelectBreakpointActive.mjs.map +0 -1
- package/dist/esm/useSelectBreakpointActive.native.js +0 -7
- package/dist/esm/useSelectBreakpointActive.native.js.map +0 -1
- package/dist/jsx/BubbleSelect.mjs +0 -27
- package/dist/jsx/BubbleSelect.mjs.map +0 -1
- package/dist/jsx/BubbleSelect.native.js +0 -30
- package/dist/jsx/BubbleSelect.native.js.map +0 -1
- package/dist/jsx/index.js.map +0 -1
- package/dist/jsx/index.mjs.map +0 -1
- package/dist/jsx/types.mjs.map +0 -1
- package/dist/jsx/useSelectBreakpointActive.mjs +0 -7
- package/dist/jsx/useSelectBreakpointActive.mjs.map +0 -1
- package/dist/jsx/useSelectBreakpointActive.native.js +0 -35
- package/dist/jsx/useSelectBreakpointActive.native.js.map +0 -1
- package/src/BubbleSelect.tsx +0 -50
- package/src/useSelectBreakpointActive.tsx +0 -7
- package/types/BubbleSelect.d.ts +0 -2
- package/types/BubbleSelect.d.ts.map +0 -1
- package/types/useSelectBreakpointActive.d.ts +0 -3
- package/types/useSelectBreakpointActive.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["autoUpdate","inner","offset","size","useClick","useFloatingRaw","useInnerOffset","useInteractions","useListNavigation","useRole","useTypeahead","useIsomorphicLayoutEffect","useEvent","useIsTouchDevice","React","flushSync","SCROLL_ARROW_THRESHOLD","SelectItemParentProvider","SelectProvider","useSelectContext","useSelectItemParentContext","jsx","SelectInlineImpl","props","scope","children","open","listContentRef","setActiveIndexFast","selectContext","selectItemParentContext","setActiveIndex","selectedIndex","activeIndexRef","setOpen","setSelectedIndex","scrollTop","setScrollTop","useState","touch","listItemsRef","useRef","overflowRef","upArrowRef","downArrowRef","allowSelectRef","allowMouseUpRef","selectTimeoutRef","state","isMouseOutside","isTyping","controlledScrolling","setControlledScrolling","fallback","setFallback","innerOffset","setInnerOffset","blockSelection","setBlockSelection","floatingStyle","useEffect","mouseUp","e","current","document","addEventListener","removeEventListener","x","y","strategy","refs","update","placement","computedPlacement","whileElementsMounted","middleware","apply","rects","reference","width","Object","assign","minWidth","floating","style","listRef","index","onFallbackChange","padding","minItemsVisible","referenceOverflowThreshold","crossAxis","floatingRef","showUpArrow","showDownArrow","scrollHeight","clientHeight","isScrollable","window","onMatch","dataRef","interactionContext","onOpenChange","val","domReference","elements","interactionsProps","event","keyboardHandlers","role","enabled","onChange","scrollRef","activeIndex","onNavigate","scrollItemIntoView","onTypingChange","interactions","useMemo","interactionsContext","getReferenceProps","ref","className","onKeyDown","key","code","preventDefault","getFloatingProps","props2","position","top","left","outline","scrollbarWidth","onPointerEnter","onPointerLeave","onPointerMove","onContextMenu","onScroll","currentTarget","setTimeout","clearTimeout","onPointerDown","target","contains","scrollActiveIntoView","scrollIntoView","block","activeIndexSubscribe","maxHeight","floatingContext","canScrollDown","canScrollUp"],"sources":["SelectImpl.mjs"],"sourcesContent":["import { autoUpdate, inner, offset, size, useClick, useFloatingRaw, useInnerOffset, useInteractions, useListNavigation, useRole, useTypeahead } from \"@tamagui/floating\";\nimport { useIsomorphicLayoutEffect } from \"@tamagui/constants\";\nimport { useEvent, useIsTouchDevice } from \"@tamagui/core\";\nimport * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { SCROLL_ARROW_THRESHOLD } from \"./constants\";\nimport { SelectItemParentProvider, SelectProvider, useSelectContext, useSelectItemParentContext } from \"./context\";\nimport { jsx } from \"react/jsx-runtime\";\n\nconst SelectInlineImpl = (props) => {\n\tconst { scope, children, open = false, listContentRef, setActiveIndexFast } = props;\n\tconst selectContext = useSelectContext(scope);\n\tconst selectItemParentContext = useSelectItemParentContext(scope);\n\tconst { setActiveIndex, selectedIndex, activeIndexRef } = selectContext;\n\tconst { setOpen, setSelectedIndex } = selectItemParentContext;\n\tconst [scrollTop, setScrollTop] = React.useState(0);\n\tconst touch = useIsTouchDevice();\n\tconst listItemsRef = React.useRef([]);\n\tconst overflowRef = React.useRef(null);\n\tconst upArrowRef = React.useRef(null);\n\tconst downArrowRef = React.useRef(null);\n\tconst allowSelectRef = React.useRef(false);\n\tconst allowMouseUpRef = React.useRef(true);\n\tconst selectTimeoutRef = React.useRef(null);\n\tconst state = React.useRef({\n\t\tisMouseOutside: false,\n\t\tisTyping: false\n\t});\n\tconst [controlledScrolling, setControlledScrolling] = React.useState(false);\n\tconst [fallback, setFallback] = React.useState(false);\n\tconst [innerOffset, setInnerOffset] = React.useState(0);\n\tconst [blockSelection, setBlockSelection] = React.useState(false);\n\tconst floatingStyle = React.useRef({});\n\tReact.useEffect(() => {\n\t\tif (open) setActiveIndexFast(selectedIndex ?? 0);\n\t\telse {\n\t\t\tsetScrollTop(0);\n\t\t\tsetFallback(false);\n\t\t\tsetActiveIndexFast(null);\n\t\t\tsetControlledScrolling(false);\n\t\t}\n\t}, [\n\t\topen,\n\t\tselectedIndex,\n\t\tsetActiveIndexFast\n\t]);\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (!open) return;\n\t\tconst mouseUp = (e) => {\n\t\t\tif (state.current.isMouseOutside) setOpen(false);\n\t\t};\n\t\tdocument.addEventListener(\"mouseup\", mouseUp);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener(\"mouseup\", mouseUp);\n\t\t};\n\t}, [open]);\n\tconst { x, y, strategy, refs, update, placement: computedPlacement } = useFloatingRaw({\n\t\topen,\n\t\tplacement: \"bottom-start\",\n\t\twhileElementsMounted: autoUpdate,\n\t\tmiddleware: [\n\t\t\tsize({ apply({ rects: { reference: { width } } }) {\n\t\t\t\tObject.assign(floatingStyle.current, { minWidth: width + 8 });\n\t\t\t\tif (refs.floating.current) Object.assign(refs.floating.current.style, floatingStyle.current);\n\t\t\t} }),\n\t\t\tinner({\n\t\t\t\tlistRef: listItemsRef,\n\t\t\t\toverflowRef,\n\t\t\t\tindex: selectedIndex,\n\t\t\t\toffset: innerOffset,\n\t\t\t\tonFallbackChange: setFallback,\n\t\t\t\tpadding: 10,\n\t\t\t\tminItemsVisible: touch ? 10 : 4,\n\t\t\t\treferenceOverflowThreshold: 20\n\t\t\t}),\n\t\t\toffset({ crossAxis: -5 })\n\t\t]\n\t});\n\tconst floatingRef = refs.floating;\n\tconst showUpArrow = open && scrollTop > SCROLL_ARROW_THRESHOLD;\n\tconst showDownArrow = open && floatingRef.current && scrollTop < floatingRef.current.scrollHeight - floatingRef.current.clientHeight - SCROLL_ARROW_THRESHOLD;\n\tconst isScrollable = showDownArrow || showUpArrow;\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (typeof window === \"undefined\") return;\n\t\twindow.addEventListener(\"resize\", update);\n\t\tif (open) update();\n\t\treturn () => window.removeEventListener(\"resize\", update);\n\t}, [update, open]);\n\tconst onMatch = useEvent((index) => {\n\t\treturn (open ? setActiveIndex : setSelectedIndex)(index);\n\t});\n\tconst dataRef = React.useRef({});\n\tdataRef.current.placement = computedPlacement;\n\tconst interactionContext = {\n\t\topen,\n\t\tonOpenChange: (val) => setOpen(val),\n\t\trefs: {\n\t\t\treference: refs.reference,\n\t\t\tfloating: refs.floating,\n\t\t\tdomReference: refs.reference\n\t\t},\n\t\telements: {\n\t\t\treference: refs.reference?.current || null,\n\t\t\tfloating: refs.floating?.current || null,\n\t\t\tdomReference: refs.reference?.current || null\n\t\t},\n\t\tdataRef\n\t};\n\tconst interactionsProps = [\n\t\tuseClick(interactionContext, {\n\t\t\tevent: \"mousedown\",\n\t\t\tkeyboardHandlers: false\n\t\t}),\n\t\tuseRole(interactionContext, { role: \"listbox\" }),\n\t\tuseInnerOffset(interactionContext, {\n\t\t\tenabled: !fallback && isScrollable,\n\t\t\tonChange: setInnerOffset,\n\t\t\toverflowRef,\n\t\t\tscrollRef: refs.floating\n\t\t}),\n\t\tuseListNavigation(interactionContext, {\n\t\t\tlistRef: listItemsRef,\n\t\t\tactiveIndex: selectContext.activeIndex ?? 0,\n\t\t\tselectedIndex,\n\t\t\tonNavigate: (index) => {\n\t\t\t\tif (index !== null) setActiveIndex(index);\n\t\t\t},\n\t\t\tscrollItemIntoView: false\n\t\t}),\n\t\tuseTypeahead(interactionContext, {\n\t\t\tlistRef: listContentRef,\n\t\t\tonMatch,\n\t\t\tselectedIndex,\n\t\t\tactiveIndex: selectContext.activeIndex,\n\t\t\tonTypingChange: (e) => {\n\t\t\t\tstate.current.isTyping = e;\n\t\t\t}\n\t\t})\n\t];\n\tconst interactions = useInteractions(React.useMemo(() => {\n\t\treturn interactionsProps;\n\t}, interactionsProps));\n\tconst interactionsContext = React.useMemo(() => {\n\t\treturn {\n\t\t\t...interactions,\n\t\t\tgetReferenceProps() {\n\t\t\t\treturn interactions.getReferenceProps({\n\t\t\t\t\tref: refs.reference,\n\t\t\t\t\tclassName: \"SelectTrigger\",\n\t\t\t\t\tonKeyDown(event) {\n\t\t\t\t\t\tif (event.key === \"Enter\" || event.code === \"Space\" || event.key === \" \" && !state.current.isTyping) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tsetOpen(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tgetFloatingProps(props2) {\n\t\t\t\treturn interactions.getFloatingProps({\n\t\t\t\t\tref: refs.floating,\n\t\t\t\t\tclassName: \"Select\",\n\t\t\t\t\t...props2,\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tposition: strategy,\n\t\t\t\t\t\ttop: y ?? \"\",\n\t\t\t\t\t\tleft: x ?? \"\",\n\t\t\t\t\t\toutline: 0,\n\t\t\t\t\t\tscrollbarWidth: \"none\",\n\t\t\t\t\t\t...floatingStyle.current,\n\t\t\t\t\t\t...props2?.style\n\t\t\t\t\t},\n\t\t\t\t\tonPointerEnter() {\n\t\t\t\t\t\tsetControlledScrolling(false);\n\t\t\t\t\t\tstate.current.isMouseOutside = false;\n\t\t\t\t\t},\n\t\t\t\t\tonPointerLeave() {\n\t\t\t\t\t\tstate.current.isMouseOutside = true;\n\t\t\t\t\t},\n\t\t\t\t\tonPointerMove() {\n\t\t\t\t\t\tstate.current.isMouseOutside = false;\n\t\t\t\t\t\tsetControlledScrolling(false);\n\t\t\t\t\t},\n\t\t\t\t\tonKeyDown() {\n\t\t\t\t\t\tsetControlledScrolling(true);\n\t\t\t\t\t},\n\t\t\t\t\tonContextMenu(e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t},\n\t\t\t\t\tonScroll(event) {\n\t\t\t\t\t\tflushSync(() => {\n\t\t\t\t\t\t\tsetScrollTop(event.currentTarget.scrollTop);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}, [\n\t\trefs.reference.current,\n\t\tx,\n\t\ty,\n\t\trefs.floating.current,\n\t\tinteractions\n\t]);\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (open) {\n\t\t\tallowMouseUpRef.current = false;\n\t\t\tselectTimeoutRef.current = setTimeout(() => {\n\t\t\t\tallowSelectRef.current = true;\n\t\t\t\tallowMouseUpRef.current = true;\n\t\t\t}, 300);\n\t\t\treturn () => {\n\t\t\t\tclearTimeout(selectTimeoutRef.current);\n\t\t\t};\n\t\t}\n\t\tallowSelectRef.current = false;\n\t\tallowMouseUpRef.current = true;\n\t\tsetInnerOffset(0);\n\t\tsetFallback(false);\n\t\tsetBlockSelection(false);\n\t}, [open]);\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (!open && state.current.isMouseOutside) state.current.isMouseOutside = false;\n\t}, [open]);\n\tuseIsomorphicLayoutEffect(() => {\n\t\tfunction onPointerDown(e) {\n\t\t\tconst target = e.target;\n\t\t\tif (!(refs.floating.current?.contains(target) || upArrowRef.current?.contains(target) || downArrowRef.current?.contains(target))) {\n\t\t\t\tsetOpen(false);\n\t\t\t\tsetControlledScrolling(false);\n\t\t\t}\n\t\t}\n\t\tif (open) {\n\t\t\tdocument.addEventListener(\"pointerdown\", onPointerDown);\n\t\t\treturn () => {\n\t\t\t\tdocument.removeEventListener(\"pointerdown\", onPointerDown);\n\t\t\t};\n\t\t}\n\t}, [\n\t\topen,\n\t\trefs,\n\t\tsetOpen\n\t]);\n\tReact.useEffect(() => {\n\t\tif (!open) return;\n\t\tconst scrollActiveIntoView = (index) => {\n\t\t\tif (controlledScrolling && index != null) listItemsRef.current[index]?.scrollIntoView({ block: \"nearest\" });\n\t\t\tsetScrollTop(refs.floating.current?.scrollTop ?? 0);\n\t\t};\n\t\tscrollActiveIntoView(activeIndexRef.current);\n\t\treturn selectItemParentContext.activeIndexSubscribe(scrollActiveIntoView);\n\t}, [\n\t\topen,\n\t\trefs,\n\t\tcontrolledScrolling,\n\t\tselectItemParentContext.activeIndexSubscribe\n\t]);\n\tReact.useEffect(() => {\n\t\tif (open && fallback) {\n\t\t\tif (selectedIndex != null) listItemsRef.current[selectedIndex]?.scrollIntoView({ block: \"nearest\" });\n\t\t}\n\t}, [\n\t\topen,\n\t\tfallback,\n\t\tselectedIndex\n\t]);\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (refs.floating.current && fallback) refs.floating.current.style.maxHeight = \"\";\n\t}, [refs, fallback]);\n\tconst floatingContext = React.useMemo(() => ({\n\t\trefs,\n\t\tdataRef\n\t}), [refs]);\n\treturn /* @__PURE__ */ jsx(SelectProvider, {\n\t\tscope,\n\t\t...selectContext,\n\t\tsetScrollTop,\n\t\tsetInnerOffset,\n\t\tfallback,\n\t\tfloatingContext,\n\t\tcanScrollDown: !!showDownArrow,\n\t\tcanScrollUp: !!showUpArrow,\n\t\tcontrolledScrolling,\n\t\tblockSelection,\n\t\tupArrowRef,\n\t\tdownArrowRef,\n\t\tupdate,\n\t\tchildren: /* @__PURE__ */ jsx(SelectItemParentProvider, {\n\t\t\tscope,\n\t\t\t...selectItemParentContext,\n\t\t\tallowMouseUpRef,\n\t\t\tallowSelectRef,\n\t\t\tdataRef,\n\t\t\tinteractions: interactionsContext,\n\t\t\tlistRef: listItemsRef,\n\t\t\tselectTimeoutRef,\n\t\t\tchildren\n\t\t})\n\t});\n};\n\nexport { SelectInlineImpl };"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"SelectImpl.js","names":[],"sources":["esm/SelectImpl.js"],"sourcesContent":["import { autoUpdate, inner, offset, size, useClick, useFloatingRaw, useInnerOffset, useInteractions, useListNavigation, useRole, useTypeahead } from \"@tamagui/floating\";\nimport { useIsomorphicLayoutEffect } from \"@tamagui/constants\";\nimport { createChangeEventDetails, useEvent, useIsTouchDevice } from \"@tamagui/core\";\nimport { composeEventHandlers } from \"@tamagui/helpers\";\nimport * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { SCROLL_ARROW_THRESHOLD } from \"./constants\";\nimport { SelectItemParentProvider, SelectProvider, useSelectContext, useSelectItemParentContext } from \"./context\";\nimport { jsx } from \"react/jsx-runtime\";\n\nconst SelectInlineImpl = (props) => {\n\tconst { scope, children, open = false, listContentRef } = props;\n\tconst selectContext = useSelectContext(scope);\n\tconst selectItemParentContext = useSelectItemParentContext(scope);\n\tconst { setActiveIndex, selectedIndex, activeIndexRef } = selectContext;\n\tconst { requestOpenChange, registry } = selectItemParentContext;\n\tconst [scrollTop, setScrollTop] = React.useState(0);\n\tconst touch = useIsTouchDevice();\n\tconst listItemsRef = selectItemParentContext.listRef;\n\tconst overflowRef = React.useRef(null);\n\tconst upArrowRef = React.useRef(null);\n\tconst downArrowRef = React.useRef(null);\n\tconst allowSelectRef = React.useRef(false);\n\tconst allowMouseUpRef = React.useRef(true);\n\tconst selectTimeoutRef = React.useRef(null);\n\tconst latestKeyboardEventRef = React.useRef(void 0);\n\tconst state = React.useRef({\n\t\tisMouseOutside: false,\n\t\tisTyping: false\n\t});\n\tconst [controlledScrolling, setControlledScrolling] = React.useState(false);\n\tconst [fallback, setFallback] = React.useState(false);\n\tconst [innerOffset, setInnerOffset] = React.useState(0);\n\tconst [blockSelection, setBlockSelection] = React.useState(false);\n\tconst floatingStyle = React.useRef({});\n\tReact.useEffect(() => {\n\t\tif (!open) {\n\t\t\tsetScrollTop(0);\n\t\t\tsetFallback(false);\n\t\t\tsetControlledScrolling(false);\n\t\t}\n\t}, [open]);\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (!open) return;\n\t\tconst mouseUp = (e) => {\n\t\t\tif (state.current.isMouseOutside) requestOpenChange(false, createChangeEventDetails(\"outside-press\", e));\n\t\t};\n\t\tdocument.addEventListener(\"mouseup\", mouseUp);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener(\"mouseup\", mouseUp);\n\t\t};\n\t}, [open]);\n\tconst { x, y, strategy, refs, update, placement: computedPlacement } = useFloatingRaw({\n\t\topen,\n\t\tplacement: \"bottom-start\",\n\t\twhileElementsMounted: autoUpdate,\n\t\tmiddleware: [\n\t\t\tsize({ apply({ rects: { reference: { width } } }) {\n\t\t\t\tObject.assign(floatingStyle.current, { minWidth: width + 8 });\n\t\t\t\tif (refs.floating.current) Object.assign(refs.floating.current.style, floatingStyle.current);\n\t\t\t} }),\n\t\t\tinner({\n\t\t\t\tlistRef: listItemsRef,\n\t\t\t\toverflowRef,\n\t\t\t\tindex: selectedIndex,\n\t\t\t\toffset: innerOffset,\n\t\t\t\tonFallbackChange: setFallback,\n\t\t\t\tpadding: 10,\n\t\t\t\tminItemsVisible: touch ? 10 : 4,\n\t\t\t\treferenceOverflowThreshold: 20\n\t\t\t}),\n\t\t\toffset({ crossAxis: -5 })\n\t\t]\n\t});\n\tconst floatingRef = refs.floating;\n\tconst showUpArrow = open && scrollTop > SCROLL_ARROW_THRESHOLD;\n\tconst showDownArrow = open && floatingRef.current && scrollTop < floatingRef.current.scrollHeight - floatingRef.current.clientHeight - SCROLL_ARROW_THRESHOLD;\n\tconst isScrollable = showDownArrow || showUpArrow;\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (typeof window === \"undefined\") return;\n\t\twindow.addEventListener(\"resize\", update);\n\t\tif (open) update();\n\t\treturn () => window.removeEventListener(\"resize\", update);\n\t}, [update, open]);\n\tconst onMatch = useEvent((index) => {\n\t\tif (!open) return;\n\t\tsetActiveIndex(index, {\n\t\t\treason: \"keyboard\",\n\t\t\tevent: latestKeyboardEventRef.current,\n\t\t\ttrigger: void 0,\n\t\t\tindex\n\t\t});\n\t});\n\tconst dataRef = React.useRef({});\n\tdataRef.current.placement = computedPlacement;\n\tconst interactionContext = {\n\t\topen,\n\t\tonOpenChange: (nextOpen, event, reason) => {\n\t\t\trequestOpenChange(nextOpen, createChangeEventDetails(reason === \"list-navigation\" ? \"keyboard\" : \"trigger-press\", event, refs.reference.current));\n\t\t},\n\t\trefs: {\n\t\t\treference: refs.reference,\n\t\t\tfloating: refs.floating,\n\t\t\tdomReference: refs.reference\n\t\t},\n\t\telements: {\n\t\t\treference: refs.reference?.current || null,\n\t\t\tfloating: refs.floating?.current || null,\n\t\t\tdomReference: refs.reference?.current || null\n\t\t},\n\t\tdataRef\n\t};\n\tconst interactionsProps = [\n\t\tuseClick(interactionContext, {\n\t\t\tevent: \"mousedown\",\n\t\t\tkeyboardHandlers: false\n\t\t}),\n\t\tuseRole(interactionContext, { role: \"listbox\" }),\n\t\tuseInnerOffset(interactionContext, {\n\t\t\tenabled: !fallback && isScrollable,\n\t\t\tonChange: setInnerOffset,\n\t\t\toverflowRef,\n\t\t\tscrollRef: refs.floating\n\t\t}),\n\t\tuseListNavigation(interactionContext, {\n\t\t\tlistRef: listItemsRef,\n\t\t\tactiveIndex: selectContext.activeIndex ?? 0,\n\t\t\tselectedIndex,\n\t\t\tonNavigate: (index) => {\n\t\t\t\tif (index !== null) setActiveIndex(index, {\n\t\t\t\t\treason: \"list-navigation\",\n\t\t\t\t\tevent: latestKeyboardEventRef.current,\n\t\t\t\t\ttrigger: void 0,\n\t\t\t\t\tindex\n\t\t\t\t});\n\t\t\t},\n\t\t\tdisabledIndices: registry.getDisabledIndices(),\n\t\t\tscrollItemIntoView: false\n\t\t}),\n\t\tuseTypeahead(interactionContext, {\n\t\t\tlistRef: listContentRef,\n\t\t\tonMatch,\n\t\t\tselectedIndex,\n\t\t\tactiveIndex: selectContext.activeIndex,\n\t\t\tonTypingChange: (e) => {\n\t\t\t\tstate.current.isTyping = e;\n\t\t\t}\n\t\t})\n\t];\n\tconst interactions = useInteractions(React.useMemo(() => {\n\t\treturn interactionsProps;\n\t}, interactionsProps));\n\tconst interactionsContext = React.useMemo(() => {\n\t\treturn {\n\t\t\t...interactions,\n\t\t\tgetReferenceProps(props2 = {}) {\n\t\t\t\treturn interactions.getReferenceProps({\n\t\t\t\t\t...props2,\n\t\t\t\t\tonKeyDown: composeEventHandlers(props2.onKeyDown, (event) => {\n\t\t\t\t\t\tlatestKeyboardEventRef.current = event.nativeEvent || event;\n\t\t\t\t\t\tif (event.key === \"Enter\" || event.code === \"Space\" || event.key === \" \" && !state.current.isTyping) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\trequestOpenChange(true, createChangeEventDetails(\"keyboard\", event.nativeEvent || event, refs.reference.current));\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t},\n\t\t\tgetFloatingProps(props2) {\n\t\t\t\treturn interactions.getFloatingProps({\n\t\t\t\t\tref: refs.floating,\n\t\t\t\t\tclassName: \"Select\",\n\t\t\t\t\t...props2,\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tposition: strategy,\n\t\t\t\t\t\ttop: y ?? \"\",\n\t\t\t\t\t\tleft: x ?? \"\",\n\t\t\t\t\t\toutline: 0,\n\t\t\t\t\t\tscrollbarWidth: \"none\",\n\t\t\t\t\t\t...floatingStyle.current,\n\t\t\t\t\t\t...props2?.style\n\t\t\t\t\t},\n\t\t\t\t\tonPointerEnter() {\n\t\t\t\t\t\tsetControlledScrolling(false);\n\t\t\t\t\t\tstate.current.isMouseOutside = false;\n\t\t\t\t\t},\n\t\t\t\t\tonPointerLeave() {\n\t\t\t\t\t\tstate.current.isMouseOutside = true;\n\t\t\t\t\t},\n\t\t\t\t\tonPointerMove() {\n\t\t\t\t\t\tstate.current.isMouseOutside = false;\n\t\t\t\t\t\tsetControlledScrolling(false);\n\t\t\t\t\t},\n\t\t\t\t\tonKeyDown(event) {\n\t\t\t\t\t\tlatestKeyboardEventRef.current = event.nativeEvent || event;\n\t\t\t\t\t\tsetControlledScrolling(true);\n\t\t\t\t\t},\n\t\t\t\t\tonContextMenu(e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t},\n\t\t\t\t\tonScroll(event) {\n\t\t\t\t\t\tflushSync(() => {\n\t\t\t\t\t\t\tsetScrollTop(event.currentTarget.scrollTop);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}, [\n\t\trefs.reference.current,\n\t\tx,\n\t\ty,\n\t\trefs.floating.current,\n\t\tinteractions\n\t]);\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (open) {\n\t\t\tallowMouseUpRef.current = false;\n\t\t\tselectTimeoutRef.current = setTimeout(() => {\n\t\t\t\tallowSelectRef.current = true;\n\t\t\t\tallowMouseUpRef.current = true;\n\t\t\t}, 300);\n\t\t\treturn () => {\n\t\t\t\tclearTimeout(selectTimeoutRef.current);\n\t\t\t};\n\t\t}\n\t\tallowSelectRef.current = false;\n\t\tallowMouseUpRef.current = true;\n\t\tsetInnerOffset(0);\n\t\tsetFallback(false);\n\t\tsetBlockSelection(false);\n\t}, [open]);\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (!open && state.current.isMouseOutside) state.current.isMouseOutside = false;\n\t}, [open]);\n\tReact.useEffect(() => {\n\t\tif (!open) return;\n\t\tconst scrollActiveIntoView = (index) => {\n\t\t\tif (controlledScrolling && index != null) listItemsRef.current[index]?.scrollIntoView({ block: \"nearest\" });\n\t\t\tsetScrollTop(refs.floating.current?.scrollTop ?? 0);\n\t\t};\n\t\tscrollActiveIntoView(activeIndexRef.current);\n\t\treturn selectItemParentContext.activeIndexSubscribe(scrollActiveIntoView);\n\t}, [\n\t\topen,\n\t\trefs,\n\t\tcontrolledScrolling,\n\t\tselectItemParentContext.activeIndexSubscribe\n\t]);\n\tReact.useEffect(() => {\n\t\tif (open && fallback) {\n\t\t\tif (selectedIndex != null) listItemsRef.current[selectedIndex]?.scrollIntoView({ block: \"nearest\" });\n\t\t}\n\t}, [\n\t\topen,\n\t\tfallback,\n\t\tselectedIndex\n\t]);\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (refs.floating.current && fallback) refs.floating.current.style.maxHeight = \"\";\n\t}, [refs, fallback]);\n\tconst floatingContext = React.useMemo(() => ({\n\t\trefs,\n\t\tdataRef\n\t}), [refs]);\n\treturn /* @__PURE__ */ jsx(SelectProvider, {\n\t\tscope,\n\t\t...selectContext,\n\t\tsetScrollTop,\n\t\tsetInnerOffset,\n\t\tfallback,\n\t\tfloatingContext,\n\t\tcanScrollDown: !!showDownArrow,\n\t\tcanScrollUp: !!showUpArrow,\n\t\tcontrolledScrolling,\n\t\tblockSelection,\n\t\tupArrowRef,\n\t\tdownArrowRef,\n\t\tupdate,\n\t\tchildren: /* @__PURE__ */ jsx(SelectItemParentProvider, {\n\t\t\tscope,\n\t\t\t...selectItemParentContext,\n\t\t\tallowMouseUpRef,\n\t\t\tallowSelectRef,\n\t\t\tdataRef,\n\t\t\tinteractions: interactionsContext,\n\t\t\tlistRef: listItemsRef,\n\t\t\tselectTimeoutRef,\n\t\t\tchildren\n\t\t})\n\t});\n};\n\nexport { SelectInlineImpl };"],"mappings":"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"}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
return /* @__PURE__ */_jsx(_Fragment, {
|
|
7
|
-
children: props.children
|
|
8
|
-
});
|
|
1
|
+
import { Fragment, jsx } from "react/jsx-runtime";
|
|
2
|
+
|
|
3
|
+
var SelectInlineImpl = function(props) {
|
|
4
|
+
return /* @__PURE__ */ jsx(Fragment, { children: props.children });
|
|
9
5
|
};
|
|
6
|
+
|
|
10
7
|
export { SelectInlineImpl };
|
|
11
8
|
//# sourceMappingURL=SelectImpl.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"SelectImpl.native.js","names":["_Fragment"],"sources":["esm/SelectImpl.native.js"],"sourcesContent":["import { jsx as _jsx, Fragment as _Fragment } from \"react/jsx-runtime\";\nvar SelectInlineImpl = function(props) {\n return /* @__PURE__ */ _jsx(_Fragment, {\n children: props.children\n });\n};\nexport {\n SelectInlineImpl\n};\n//# sourceMappingURL=SelectImpl.native.js.map\n"],"mappings":";;;AACA,IAAI,mBAAmB,SAAS,OAAO;CACrC,OAAuB,oBAAKA,UAAW,EACrC,UAAU,MAAM,SAClB,CAAC;AACH"}
|
package/dist/esm/SelectItem.mjs
CHANGED
|
@@ -1,189 +1,259 @@
|
|
|
1
1
|
import { useComposedRefs } from "@tamagui/compose-refs";
|
|
2
|
+
import { useAdaptIsActive } from "@tamagui/adapt";
|
|
2
3
|
import { isWeb, useIsomorphicLayoutEffect } from "@tamagui/constants";
|
|
3
|
-
import { createStyledContext } from "@tamagui/core";
|
|
4
|
-
import {
|
|
4
|
+
import { View, createChangeEventDetails, createStyledContext, createStyledHOC, styled } from "@tamagui/core";
|
|
5
|
+
import { composeEventHandlers } from "@tamagui/helpers";
|
|
5
6
|
import * as React from "react";
|
|
6
|
-
import { useSelectItemParentContext } from "./context.mjs";
|
|
7
|
+
import { useSelectContext, useSelectItemParentContext } from "./context.mjs";
|
|
8
|
+
import { getSelectOptionProps } from "./selectionController.mjs";
|
|
7
9
|
import { jsx } from "react/jsx-runtime";
|
|
10
|
+
|
|
8
11
|
const ITEM_NAME = "SelectItem";
|
|
9
|
-
const {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const {
|
|
15
|
-
scope,
|
|
16
|
-
value,
|
|
17
|
-
disabled = false,
|
|
18
|
-
textValue: textValueProp,
|
|
19
|
-
index,
|
|
20
|
-
...restProps
|
|
21
|
-
} = props;
|
|
22
|
-
const context = useSelectItemParentContext(scope);
|
|
23
|
-
const {
|
|
24
|
-
setSelectedIndex,
|
|
25
|
-
listRef,
|
|
26
|
-
setOpen,
|
|
27
|
-
onChange,
|
|
28
|
-
activeIndexSubscribe,
|
|
29
|
-
activeIndexRef,
|
|
30
|
-
valueSubscribe,
|
|
31
|
-
allowMouseUpRef,
|
|
32
|
-
allowSelectRef,
|
|
33
|
-
setValueAtIndex,
|
|
34
|
-
selectTimeoutRef,
|
|
35
|
-
dataRef,
|
|
36
|
-
interactions,
|
|
37
|
-
shouldRenderWebNative,
|
|
38
|
-
size,
|
|
39
|
-
onActiveChange,
|
|
40
|
-
initialValue,
|
|
41
|
-
setActiveIndexFast
|
|
42
|
-
} = context;
|
|
43
|
-
const [isSelected, setSelected] = React.useState(initialValue === value);
|
|
44
|
-
useIsomorphicLayoutEffect(() => {
|
|
45
|
-
if (initialValue === value) {
|
|
46
|
-
setSelectedIndex(index);
|
|
47
|
-
}
|
|
48
|
-
}, []);
|
|
49
|
-
React.useEffect(() => {
|
|
50
|
-
const handleActiveIndex = i => {
|
|
51
|
-
if (index === i) {
|
|
52
|
-
onActiveChange(value, index);
|
|
53
|
-
if (isWeb) {
|
|
54
|
-
requestAnimationFrame(() => {
|
|
55
|
-
listRef?.current[index]?.focus();
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
const currentActiveIndex = activeIndexRef?.current;
|
|
61
|
-
if (currentActiveIndex !== null && currentActiveIndex !== void 0) {
|
|
62
|
-
handleActiveIndex(currentActiveIndex);
|
|
63
|
-
}
|
|
64
|
-
return activeIndexSubscribe(handleActiveIndex);
|
|
65
|
-
}, [index]);
|
|
66
|
-
React.useEffect(() => {
|
|
67
|
-
return valueSubscribe(val => {
|
|
68
|
-
setSelected(val === value);
|
|
69
|
-
});
|
|
70
|
-
}, [value]);
|
|
71
|
-
const textId = React.useId();
|
|
72
|
-
const refCallback = React.useCallback(node => {
|
|
73
|
-
if (!isWeb) return;
|
|
74
|
-
if (node instanceof HTMLElement) {
|
|
75
|
-
if (listRef) {
|
|
76
|
-
listRef.current[index] = node;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}, [index, listRef]);
|
|
80
|
-
const composedRefs = useComposedRefs(forwardedRef, refCallback);
|
|
81
|
-
useIsomorphicLayoutEffect(() => {
|
|
82
|
-
setValueAtIndex(index, value);
|
|
83
|
-
}, [index, setValueAtIndex, value]);
|
|
84
|
-
function handleSelect() {
|
|
85
|
-
setSelectedIndex(index);
|
|
86
|
-
onChange(value);
|
|
87
|
-
setOpen(false);
|
|
88
|
-
}
|
|
89
|
-
const selectItemProps = React.useMemo(() => {
|
|
90
|
-
return interactions ? interactions.getItemProps({
|
|
91
|
-
onTouchMove() {
|
|
92
|
-
allowSelectRef.current = true;
|
|
93
|
-
allowMouseUpRef.current = false;
|
|
94
|
-
},
|
|
95
|
-
onTouchEnd() {
|
|
96
|
-
allowSelectRef.current = false;
|
|
97
|
-
allowMouseUpRef.current = true;
|
|
98
|
-
},
|
|
99
|
-
onKeyDown(event) {
|
|
100
|
-
if (event.key === "Enter" || event.key === " " && !dataRef?.current.typing) {
|
|
101
|
-
event.preventDefault();
|
|
102
|
-
handleSelect();
|
|
103
|
-
} else if (event.key === "ArrowDown" || event.key === "ArrowUp") {
|
|
104
|
-
event.preventDefault();
|
|
105
|
-
event.stopPropagation();
|
|
106
|
-
const itemCount = listRef?.current.length ?? 0;
|
|
107
|
-
if (itemCount === 0) return;
|
|
108
|
-
let nextIndex;
|
|
109
|
-
if (event.key === "ArrowDown") {
|
|
110
|
-
nextIndex = index + 1 >= itemCount ? 0 : index + 1;
|
|
111
|
-
} else {
|
|
112
|
-
nextIndex = index - 1 < 0 ? itemCount - 1 : index - 1;
|
|
113
|
-
}
|
|
114
|
-
setActiveIndexFast?.(nextIndex);
|
|
115
|
-
} else {
|
|
116
|
-
allowSelectRef.current = true;
|
|
117
|
-
}
|
|
118
|
-
},
|
|
119
|
-
onClick() {
|
|
120
|
-
if (allowSelectRef.current) {
|
|
121
|
-
handleSelect();
|
|
122
|
-
}
|
|
123
|
-
},
|
|
124
|
-
onMouseUp() {
|
|
125
|
-
if (!allowMouseUpRef.current) {
|
|
126
|
-
allowMouseUpRef.current = true;
|
|
127
|
-
allowSelectRef.current = true;
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
if (allowSelectRef.current) {
|
|
131
|
-
handleSelect();
|
|
132
|
-
}
|
|
133
|
-
clearTimeout(selectTimeoutRef.current);
|
|
134
|
-
selectTimeoutRef.current = setTimeout(() => {
|
|
135
|
-
allowSelectRef.current = true;
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
}) : {
|
|
139
|
-
onPress: handleSelect
|
|
140
|
-
};
|
|
141
|
-
}, [handleSelect, index, listRef, setActiveIndexFast]);
|
|
142
|
-
return /* @__PURE__ */jsx(SelectItemContextProvider, {
|
|
143
|
-
scope,
|
|
144
|
-
value,
|
|
145
|
-
textId: textId || "",
|
|
146
|
-
isSelected,
|
|
147
|
-
children: shouldRenderWebNative ? /* @__PURE__ */jsx("option", {
|
|
148
|
-
value,
|
|
149
|
-
children: props.children
|
|
150
|
-
}) : /* @__PURE__ */jsx(ListItem.Frame, {
|
|
151
|
-
render: "div",
|
|
152
|
-
componentName: ITEM_NAME,
|
|
153
|
-
ref: composedRefs,
|
|
154
|
-
role: "option",
|
|
155
|
-
"aria-labelledby": textId,
|
|
156
|
-
"aria-selected": isSelected,
|
|
157
|
-
"data-state": isSelected ? "active" : "inactive",
|
|
158
|
-
"aria-disabled": disabled || void 0,
|
|
159
|
-
"data-disabled": disabled ? "" : void 0,
|
|
160
|
-
tabIndex: disabled ? void 0 : -1,
|
|
161
|
-
...(!props.unstyled && {
|
|
162
|
-
cursor: "default",
|
|
163
|
-
size,
|
|
164
|
-
outlineOffset: -0.5,
|
|
165
|
-
zIndex: 100,
|
|
166
|
-
hoverStyle: {
|
|
167
|
-
backgroundColor: "$backgroundHover"
|
|
168
|
-
},
|
|
169
|
-
pressStyle: {
|
|
170
|
-
backgroundColor: "$backgroundPress"
|
|
171
|
-
},
|
|
172
|
-
focusStyle: {
|
|
173
|
-
backgroundColor: "$backgroundFocus"
|
|
174
|
-
},
|
|
175
|
-
focusVisibleStyle: {
|
|
176
|
-
outlineColor: "$outlineColor",
|
|
177
|
-
outlineWidth: 1,
|
|
178
|
-
outlineStyle: "solid"
|
|
179
|
-
}
|
|
180
|
-
}),
|
|
181
|
-
...restProps,
|
|
182
|
-
...selectItemProps
|
|
183
|
-
})
|
|
184
|
-
});
|
|
185
|
-
}, {
|
|
186
|
-
disableTheme: true
|
|
12
|
+
const { Provider: SelectItemContextProvider, useStyledContext: useSelectItemContext } = createStyledContext(null, ITEM_NAME);
|
|
13
|
+
const SelectItemFrame = styled(View, {
|
|
14
|
+
displayName: ITEM_NAME,
|
|
15
|
+
alignItems: "center",
|
|
16
|
+
flexDirection: "row"
|
|
187
17
|
});
|
|
188
|
-
|
|
18
|
+
const SelectItem = createStyledHOC(SelectItemFrame, function SelectItem2(props, forwardedRef) {
|
|
19
|
+
const { scope, value, disabled: disabledProp, "aria-disabled": ariaDisabled, textValue: textValueProp, ...restProps } = props;
|
|
20
|
+
const disabled = disabledProp ?? ariaDisabled === true;
|
|
21
|
+
const context = useSelectItemParentContext(scope);
|
|
22
|
+
const selectContext = useSelectContext(scope);
|
|
23
|
+
const isAdapted = useAdaptIsActive(selectContext.adaptScope);
|
|
24
|
+
const { listRef, registry, mode, selectedValues, selectValue, activeIndexSubscribe, activeIndexRef, allowMouseUpRef, allowSelectRef, selectTimeoutRef, interactions, shouldRenderWebNative, setActiveIndexFast, moveActive, search } = context;
|
|
25
|
+
const isSelected = selectedValues.includes(value);
|
|
26
|
+
const pendingMouseUpSelectionRef = React.useRef(false);
|
|
27
|
+
const itemNodeRef = React.useRef(null);
|
|
28
|
+
const [, rerenderRegistry] = React.useReducer((version) => version + 1, 0);
|
|
29
|
+
const registrationRef = React.useRef(null);
|
|
30
|
+
const initialRegistration = React.useRef({
|
|
31
|
+
value,
|
|
32
|
+
disabled,
|
|
33
|
+
textValue: textValueProp
|
|
34
|
+
});
|
|
35
|
+
useIsomorphicLayoutEffect(() => registry.subscribe(() => rerenderRegistry()), [registry]);
|
|
36
|
+
useIsomorphicLayoutEffect(() => {
|
|
37
|
+
const registration = registry.registerItem(initialRegistration.current);
|
|
38
|
+
registrationRef.current = registration;
|
|
39
|
+
const registeredNode = itemNodeRef.current;
|
|
40
|
+
registration.setNode(registeredNode);
|
|
41
|
+
const registeredIndex = registry.getItems().findIndex((item) => item.id === registration.id);
|
|
42
|
+
if (isWeb && listRef && registeredIndex >= 0 && registeredNode instanceof HTMLElement) {
|
|
43
|
+
listRef.current[registeredIndex] = registeredNode;
|
|
44
|
+
}
|
|
45
|
+
return () => {
|
|
46
|
+
const currentIndex = registry.getItems().findIndex((item) => item.id === registration.id);
|
|
47
|
+
if (listRef && currentIndex >= 0 && listRef.current[currentIndex] === registeredNode) {
|
|
48
|
+
listRef.current[currentIndex] = null;
|
|
49
|
+
}
|
|
50
|
+
registrationRef.current = null;
|
|
51
|
+
registration.unregister();
|
|
52
|
+
};
|
|
53
|
+
}, [registry]);
|
|
54
|
+
useIsomorphicLayoutEffect(() => {
|
|
55
|
+
registrationRef.current?.update({
|
|
56
|
+
value,
|
|
57
|
+
disabled,
|
|
58
|
+
textValue: textValueProp
|
|
59
|
+
});
|
|
60
|
+
}, [
|
|
61
|
+
disabled,
|
|
62
|
+
textValueProp,
|
|
63
|
+
value
|
|
64
|
+
]);
|
|
65
|
+
useIsomorphicLayoutEffect(() => {
|
|
66
|
+
registrationRef.current?.setNode(itemNodeRef.current);
|
|
67
|
+
});
|
|
68
|
+
const index = registry.getIndex(value);
|
|
69
|
+
React.useEffect(() => {
|
|
70
|
+
const handleActiveIndex = (i) => {
|
|
71
|
+
if (index === i) {
|
|
72
|
+
if (isWeb) {
|
|
73
|
+
requestAnimationFrame(() => {
|
|
74
|
+
listRef?.current[index]?.focus();
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
const currentActiveIndex = activeIndexRef?.current;
|
|
80
|
+
if (currentActiveIndex !== null && currentActiveIndex !== void 0) {
|
|
81
|
+
handleActiveIndex(currentActiveIndex);
|
|
82
|
+
}
|
|
83
|
+
return activeIndexSubscribe(handleActiveIndex);
|
|
84
|
+
}, [
|
|
85
|
+
activeIndexRef,
|
|
86
|
+
activeIndexSubscribe,
|
|
87
|
+
index,
|
|
88
|
+
listRef
|
|
89
|
+
]);
|
|
90
|
+
const textId = React.useId();
|
|
91
|
+
const refCallback = React.useCallback((node) => {
|
|
92
|
+
itemNodeRef.current = node;
|
|
93
|
+
registrationRef.current?.setNode(node);
|
|
94
|
+
if (!isWeb) return;
|
|
95
|
+
if (listRef && index >= 0) {
|
|
96
|
+
listRef.current[index] = node instanceof HTMLElement ? node : null;
|
|
97
|
+
}
|
|
98
|
+
}, [index, listRef]);
|
|
99
|
+
const composedRefs = useComposedRefs(forwardedRef, refCallback);
|
|
100
|
+
const handleSelect = React.useCallback((event, reason = "item-press") => {
|
|
101
|
+
if (disabled) return;
|
|
102
|
+
const nativeEvent = event?.nativeEvent || event;
|
|
103
|
+
selectValue(value, createChangeEventDetails(reason, nativeEvent, event?.currentTarget));
|
|
104
|
+
}, [
|
|
105
|
+
disabled,
|
|
106
|
+
selectValue,
|
|
107
|
+
value
|
|
108
|
+
]);
|
|
109
|
+
const handleKeyDown = React.useCallback((event) => {
|
|
110
|
+
if (disabled) return;
|
|
111
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
112
|
+
event.preventDefault();
|
|
113
|
+
handleSelect(event, "keyboard");
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
if (event.key === "ArrowDown" || event.key === "ArrowUp") {
|
|
117
|
+
event.preventDefault();
|
|
118
|
+
event.stopPropagation();
|
|
119
|
+
moveActive(event.key === "ArrowDown" ? 1 : -1, event.nativeEvent || event);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (!interactions && event.key?.length === 1 && !event.metaKey && !event.ctrlKey) {
|
|
123
|
+
search(event.key, event.nativeEvent || event);
|
|
124
|
+
}
|
|
125
|
+
if (allowSelectRef) {
|
|
126
|
+
allowSelectRef.current = true;
|
|
127
|
+
}
|
|
128
|
+
}, [
|
|
129
|
+
allowSelectRef,
|
|
130
|
+
disabled,
|
|
131
|
+
handleSelect,
|
|
132
|
+
interactions,
|
|
133
|
+
moveActive,
|
|
134
|
+
search
|
|
135
|
+
]);
|
|
136
|
+
const selectItemProps = React.useMemo(() => {
|
|
137
|
+
if (interactions) {
|
|
138
|
+
const { onTouchMove, onTouchEnd, onKeyDown, onClick, onMouseUp, onMouseMove, onPress, ...itemProps } = restProps;
|
|
139
|
+
const interactionProps = interactions.getItemProps({
|
|
140
|
+
...itemProps,
|
|
141
|
+
onTouchMove() {
|
|
142
|
+
allowSelectRef.current = true;
|
|
143
|
+
allowMouseUpRef.current = false;
|
|
144
|
+
},
|
|
145
|
+
onTouchEnd() {
|
|
146
|
+
allowSelectRef.current = false;
|
|
147
|
+
allowMouseUpRef.current = true;
|
|
148
|
+
},
|
|
149
|
+
onMouseMove(event) {
|
|
150
|
+
if (disabled || index < 0) return;
|
|
151
|
+
setActiveIndexFast?.(index, {
|
|
152
|
+
reason: "item-hover",
|
|
153
|
+
event: event.nativeEvent || event,
|
|
154
|
+
trigger: event.currentTarget,
|
|
155
|
+
index
|
|
156
|
+
});
|
|
157
|
+
},
|
|
158
|
+
onKeyDown: handleKeyDown,
|
|
159
|
+
onClick(event) {
|
|
160
|
+
if (disabled) return;
|
|
161
|
+
const shouldSelect = pendingMouseUpSelectionRef.current || allowSelectRef.current;
|
|
162
|
+
pendingMouseUpSelectionRef.current = false;
|
|
163
|
+
clearTimeout(selectTimeoutRef.current);
|
|
164
|
+
allowSelectRef.current = true;
|
|
165
|
+
if (shouldSelect) {
|
|
166
|
+
handleSelect(event);
|
|
167
|
+
}
|
|
168
|
+
},
|
|
169
|
+
onMouseUp(event) {
|
|
170
|
+
if (disabled) return;
|
|
171
|
+
if (!allowMouseUpRef.current) {
|
|
172
|
+
allowMouseUpRef.current = true;
|
|
173
|
+
allowSelectRef.current = true;
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
pendingMouseUpSelectionRef.current = allowSelectRef.current;
|
|
177
|
+
clearTimeout(selectTimeoutRef.current);
|
|
178
|
+
selectTimeoutRef.current = setTimeout(() => {
|
|
179
|
+
allowSelectRef.current = true;
|
|
180
|
+
if (pendingMouseUpSelectionRef.current) {
|
|
181
|
+
pendingMouseUpSelectionRef.current = false;
|
|
182
|
+
handleSelect(event);
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
return {
|
|
188
|
+
...interactionProps,
|
|
189
|
+
onTouchMove: composeEventHandlers(onTouchMove, interactionProps.onTouchMove),
|
|
190
|
+
onTouchEnd: composeEventHandlers(onTouchEnd, interactionProps.onTouchEnd),
|
|
191
|
+
onKeyDown: composeEventHandlers(onKeyDown, interactionProps.onKeyDown),
|
|
192
|
+
onClick(event) {
|
|
193
|
+
onClick?.(event);
|
|
194
|
+
if (event.defaultPrevented) {
|
|
195
|
+
pendingMouseUpSelectionRef.current = false;
|
|
196
|
+
clearTimeout(selectTimeoutRef.current);
|
|
197
|
+
allowSelectRef.current = true;
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
interactionProps.onClick?.(event);
|
|
201
|
+
},
|
|
202
|
+
onMouseUp: composeEventHandlers(onMouseUp, interactionProps.onMouseUp),
|
|
203
|
+
onMouseMove: composeEventHandlers(onMouseMove, interactionProps.onMouseMove),
|
|
204
|
+
onPress
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
return {
|
|
208
|
+
...restProps,
|
|
209
|
+
onKeyDown: composeEventHandlers(restProps.onKeyDown, handleKeyDown),
|
|
210
|
+
onMouseMove: composeEventHandlers(restProps.onMouseMove, (event) => {
|
|
211
|
+
if (disabled || index < 0) return;
|
|
212
|
+
setActiveIndexFast?.(index, {
|
|
213
|
+
reason: "item-hover",
|
|
214
|
+
event: event.nativeEvent || event,
|
|
215
|
+
trigger: event.currentTarget,
|
|
216
|
+
index
|
|
217
|
+
});
|
|
218
|
+
}),
|
|
219
|
+
onPress: composeEventHandlers(restProps.onPress, handleSelect)
|
|
220
|
+
};
|
|
221
|
+
}, [
|
|
222
|
+
allowMouseUpRef,
|
|
223
|
+
allowSelectRef,
|
|
224
|
+
disabled,
|
|
225
|
+
handleKeyDown,
|
|
226
|
+
handleSelect,
|
|
227
|
+
index,
|
|
228
|
+
interactions,
|
|
229
|
+
restProps,
|
|
230
|
+
selectTimeoutRef,
|
|
231
|
+
setActiveIndexFast
|
|
232
|
+
]);
|
|
233
|
+
const accessibilityProps = getSelectOptionProps(mode, isSelected, disabled, isWeb ? "web" : "native");
|
|
234
|
+
return /* @__PURE__ */ jsx(SelectItemContextProvider, {
|
|
235
|
+
scope,
|
|
236
|
+
value,
|
|
237
|
+
textId: textId || "",
|
|
238
|
+
textValue: textValueProp,
|
|
239
|
+
isSelected,
|
|
240
|
+
children: shouldRenderWebNative ? /* @__PURE__ */ jsx("option", {
|
|
241
|
+
value,
|
|
242
|
+
disabled,
|
|
243
|
+
children: props.children
|
|
244
|
+
}) : /* @__PURE__ */ jsx(SelectItemFrame, {
|
|
245
|
+
render: "div",
|
|
246
|
+
ref: composedRefs,
|
|
247
|
+
"aria-labelledby": textId,
|
|
248
|
+
"data-state": isSelected ? "active" : "inactive",
|
|
249
|
+
"data-disabled": disabled ? "" : void 0,
|
|
250
|
+
tabIndex: disabled ? void 0 : isWeb && isAdapted ? index === (selectContext.activeIndex ?? selectContext.selectedIndex) ? 0 : -1 : -1,
|
|
251
|
+
zIndex: 100,
|
|
252
|
+
...selectItemProps,
|
|
253
|
+
...accessibilityProps
|
|
254
|
+
})
|
|
255
|
+
});
|
|
256
|
+
}, { disableTheme: true });
|
|
257
|
+
|
|
258
|
+
export { SelectItem, SelectItemContextProvider, SelectItemFrame, useSelectItemContext };
|
|
189
259
|
//# sourceMappingURL=SelectItem.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useComposedRefs","isWeb","useIsomorphicLayoutEffect","createStyledContext","ListItem","React","useSelectItemParentContext","jsx","ITEM_NAME","Provider","SelectItemContextProvider","useStyledContext","useSelectItemContext","SelectItem","Frame","styleable","props","forwardedRef","scope","value","disabled","textValue","textValueProp","index","restProps","context","setSelectedIndex","listRef","setOpen","onChange","activeIndexSubscribe","activeIndexRef","valueSubscribe","allowMouseUpRef","allowSelectRef","setValueAtIndex","selectTimeoutRef","dataRef","interactions","shouldRenderWebNative","size","onActiveChange","initialValue","setActiveIndexFast","isSelected","setSelected","useState","useEffect","handleActiveIndex","i","requestAnimationFrame","current","focus","currentActiveIndex","val","textId","useId","refCallback","useCallback","node","HTMLElement","composedRefs","handleSelect","selectItemProps","useMemo","getItemProps","onTouchMove","onTouchEnd","onKeyDown","event","key","typing","preventDefault","stopPropagation","itemCount","length","nextIndex","onClick","onMouseUp","clearTimeout","setTimeout","onPress","children","render","componentName","ref","role","tabIndex","unstyled","cursor","outlineOffset","zIndex","hoverStyle","backgroundColor","pressStyle","focusStyle","focusVisibleStyle","outlineColor","outlineWidth","outlineStyle","disableTheme"],"sources":["../../src/SelectItem.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"SelectItem.js","names":[],"sources":["esm/SelectItem.js"],"sourcesContent":["import { useComposedRefs } from \"@tamagui/compose-refs\";\nimport { useAdaptIsActive } from \"@tamagui/adapt\";\nimport { isWeb, useIsomorphicLayoutEffect } from \"@tamagui/constants\";\nimport {\n createChangeEventDetails,\n createStyledHOC,\n createStyledContext,\n styled,\n View\n} from \"@tamagui/core\";\nimport { composeEventHandlers } from \"@tamagui/helpers\";\nimport * as React from \"react\";\nimport { useSelectContext, useSelectItemParentContext } from \"./context\";\nimport { getSelectOptionProps } from \"./selectionController\";\nimport { jsx } from \"react/jsx-runtime\";\nconst ITEM_NAME = \"SelectItem\";\nconst {\n Provider: SelectItemContextProvider,\n useStyledContext: useSelectItemContext\n} = createStyledContext(null, ITEM_NAME);\nconst SelectItemFrame = styled(View, {\n displayName: ITEM_NAME,\n alignItems: \"center\",\n flexDirection: \"row\"\n});\nconst SelectItem = createStyledHOC(\n SelectItemFrame,\n function SelectItem2(props, forwardedRef) {\n const {\n scope,\n value,\n disabled: disabledProp,\n \"aria-disabled\": ariaDisabled,\n textValue: textValueProp,\n ...restProps\n } = props;\n const disabled = disabledProp ?? ariaDisabled === true;\n const context = useSelectItemParentContext(scope);\n const selectContext = useSelectContext(scope);\n const isAdapted = useAdaptIsActive(selectContext.adaptScope);\n const {\n listRef,\n registry,\n mode,\n selectedValues,\n selectValue,\n activeIndexSubscribe,\n activeIndexRef,\n allowMouseUpRef,\n allowSelectRef,\n selectTimeoutRef,\n interactions,\n shouldRenderWebNative,\n setActiveIndexFast,\n moveActive,\n search\n } = context;\n const isSelected = selectedValues.includes(value);\n const pendingMouseUpSelectionRef = React.useRef(false);\n const itemNodeRef = React.useRef(null);\n const [, rerenderRegistry] = React.useReducer((version) => version + 1, 0);\n const registrationRef = React.useRef(\n null\n );\n const initialRegistration = React.useRef({\n value,\n disabled,\n textValue: textValueProp\n });\n useIsomorphicLayoutEffect(\n () => registry.subscribe(() => rerenderRegistry()),\n [registry]\n );\n useIsomorphicLayoutEffect(() => {\n const registration = registry.registerItem(initialRegistration.current);\n registrationRef.current = registration;\n const registeredNode = itemNodeRef.current;\n registration.setNode(registeredNode);\n const registeredIndex = registry.getItems().findIndex((item) => item.id === registration.id);\n if (isWeb && listRef && registeredIndex >= 0 && registeredNode instanceof HTMLElement) {\n listRef.current[registeredIndex] = registeredNode;\n }\n return () => {\n const currentIndex = registry.getItems().findIndex((item) => item.id === registration.id);\n if (listRef && currentIndex >= 0 && listRef.current[currentIndex] === registeredNode) {\n listRef.current[currentIndex] = null;\n }\n registrationRef.current = null;\n registration.unregister();\n };\n }, [registry]);\n useIsomorphicLayoutEffect(() => {\n registrationRef.current?.update({ value, disabled, textValue: textValueProp });\n }, [disabled, textValueProp, value]);\n useIsomorphicLayoutEffect(() => {\n registrationRef.current?.setNode(itemNodeRef.current);\n });\n const index = registry.getIndex(value);\n React.useEffect(() => {\n const handleActiveIndex = (i) => {\n if (index === i) {\n if (isWeb) {\n requestAnimationFrame(() => {\n listRef?.current[index]?.focus();\n });\n }\n }\n };\n const currentActiveIndex = activeIndexRef?.current;\n if (currentActiveIndex !== null && currentActiveIndex !== void 0) {\n handleActiveIndex(currentActiveIndex);\n }\n return activeIndexSubscribe(handleActiveIndex);\n }, [activeIndexRef, activeIndexSubscribe, index, listRef]);\n const textId = React.useId();\n const refCallback = React.useCallback(\n (node) => {\n itemNodeRef.current = node;\n registrationRef.current?.setNode(node);\n if (!isWeb) return;\n if (listRef && index >= 0) {\n listRef.current[index] = node instanceof HTMLElement ? node : null;\n }\n },\n [index, listRef]\n );\n const composedRefs = useComposedRefs(forwardedRef, refCallback);\n const handleSelect = React.useCallback(\n (event, reason = \"item-press\") => {\n if (disabled) return;\n const nativeEvent = event?.nativeEvent || event;\n selectValue(\n value,\n createChangeEventDetails(\n reason,\n nativeEvent,\n event?.currentTarget\n )\n );\n },\n [disabled, selectValue, value]\n );\n const handleKeyDown = React.useCallback(\n (event) => {\n if (disabled) return;\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n handleSelect(event, \"keyboard\");\n return;\n }\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n event.stopPropagation();\n moveActive(event.key === \"ArrowDown\" ? 1 : -1, event.nativeEvent || event);\n return;\n }\n if (!interactions && event.key?.length === 1 && !event.metaKey && !event.ctrlKey) {\n search(event.key, event.nativeEvent || event);\n }\n if (allowSelectRef) {\n allowSelectRef.current = true;\n }\n },\n [allowSelectRef, disabled, handleSelect, interactions, moveActive, search]\n );\n const selectItemProps = React.useMemo(() => {\n if (interactions) {\n const {\n onTouchMove,\n onTouchEnd,\n onKeyDown,\n onClick,\n onMouseUp,\n onMouseMove,\n onPress,\n ...itemProps\n } = restProps;\n const interactionProps = interactions.getItemProps({\n ...itemProps,\n onTouchMove() {\n allowSelectRef.current = true;\n allowMouseUpRef.current = false;\n },\n onTouchEnd() {\n allowSelectRef.current = false;\n allowMouseUpRef.current = true;\n },\n onMouseMove(event) {\n if (disabled || index < 0) return;\n setActiveIndexFast?.(index, {\n reason: \"item-hover\",\n event: event.nativeEvent || event,\n trigger: event.currentTarget,\n index\n });\n },\n onKeyDown: handleKeyDown,\n onClick(event) {\n if (disabled) return;\n const shouldSelect = pendingMouseUpSelectionRef.current || allowSelectRef.current;\n pendingMouseUpSelectionRef.current = false;\n clearTimeout(selectTimeoutRef.current);\n allowSelectRef.current = true;\n if (shouldSelect) {\n handleSelect(event);\n }\n },\n onMouseUp(event) {\n if (disabled) return;\n if (!allowMouseUpRef.current) {\n allowMouseUpRef.current = true;\n allowSelectRef.current = true;\n return;\n }\n pendingMouseUpSelectionRef.current = allowSelectRef.current;\n clearTimeout(selectTimeoutRef.current);\n selectTimeoutRef.current = setTimeout(() => {\n allowSelectRef.current = true;\n if (pendingMouseUpSelectionRef.current) {\n pendingMouseUpSelectionRef.current = false;\n handleSelect(event);\n }\n });\n }\n });\n return {\n ...interactionProps,\n onTouchMove: composeEventHandlers(\n onTouchMove,\n interactionProps.onTouchMove\n ),\n onTouchEnd: composeEventHandlers(\n onTouchEnd,\n interactionProps.onTouchEnd\n ),\n onKeyDown: composeEventHandlers(onKeyDown, interactionProps.onKeyDown),\n onClick(event) {\n onClick?.(event);\n if (event.defaultPrevented) {\n pendingMouseUpSelectionRef.current = false;\n clearTimeout(selectTimeoutRef.current);\n allowSelectRef.current = true;\n return;\n }\n interactionProps.onClick?.(event);\n },\n onMouseUp: composeEventHandlers(onMouseUp, interactionProps.onMouseUp),\n onMouseMove: composeEventHandlers(\n onMouseMove,\n interactionProps.onMouseMove\n ),\n onPress\n };\n }\n return {\n ...restProps,\n onKeyDown: composeEventHandlers(restProps.onKeyDown, handleKeyDown),\n onMouseMove: composeEventHandlers(restProps.onMouseMove, (event) => {\n if (disabled || index < 0) return;\n setActiveIndexFast?.(index, {\n reason: \"item-hover\",\n event: event.nativeEvent || event,\n trigger: event.currentTarget,\n index\n });\n }),\n onPress: composeEventHandlers(restProps.onPress, handleSelect)\n };\n }, [\n allowMouseUpRef,\n allowSelectRef,\n disabled,\n handleKeyDown,\n handleSelect,\n index,\n interactions,\n restProps,\n selectTimeoutRef,\n setActiveIndexFast\n ]);\n const accessibilityProps = getSelectOptionProps(\n mode,\n isSelected,\n disabled,\n isWeb ? \"web\" : \"native\"\n );\n return /* @__PURE__ */ jsx(\n SelectItemContextProvider,\n {\n scope,\n value,\n textId: textId || \"\",\n textValue: textValueProp,\n isSelected,\n children: shouldRenderWebNative ? /* @__PURE__ */ jsx(\"option\", { value, disabled, children: props.children }) : /* @__PURE__ */ jsx(\n SelectItemFrame,\n {\n render: \"div\",\n ref: composedRefs,\n \"aria-labelledby\": textId,\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-disabled\": disabled ? \"\" : void 0,\n tabIndex: disabled ? void 0 : isWeb && isAdapted ? index === (selectContext.activeIndex ?? selectContext.selectedIndex) ? 0 : -1 : -1,\n zIndex: 100,\n ...selectItemProps,\n ...accessibilityProps\n }\n )\n }\n );\n },\n {\n disableTheme: true\n }\n);\nexport {\n SelectItem,\n SelectItemContextProvider,\n SelectItemFrame,\n useSelectItemContext\n};\n//# sourceMappingURL=SelectItem.js.map\n"],"mappings":"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"}
|