@tamagui/select 2.7.7 → 3.0.0-beta.1093.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 +406 -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 +79 -79
- package/dist/cjs/SelectContent.native.cjs +29 -0
- package/dist/cjs/SelectContent.native.js +17 -22
- package/dist/cjs/SelectContent.native.js.map +1 -1
- package/dist/cjs/SelectImpl.cjs +305 -320
- package/dist/cjs/SelectImpl.native.cjs +29 -0
- package/dist/cjs/SelectImpl.native.js +16 -24
- package/dist/cjs/SelectImpl.native.js.map +1 -1
- package/dist/cjs/SelectItem.cjs +256 -205
- package/dist/cjs/SelectItem.native.cjs +288 -0
- package/dist/cjs/SelectItem.native.js +264 -213
- package/dist/cjs/SelectItem.native.js.map +1 -1
- package/dist/cjs/SelectItemText.cjs +48 -79
- package/dist/cjs/SelectItemText.native.cjs +73 -0
- package/dist/cjs/SelectItemText.native.js +49 -79
- package/dist/cjs/SelectItemText.native.js.map +1 -1
- package/dist/cjs/SelectScrollButton.cjs +110 -130
- package/dist/cjs/SelectScrollButton.native.cjs +37 -0
- package/dist/cjs/SelectScrollButton.native.js +24 -22
- package/dist/cjs/SelectScrollButton.native.js.map +1 -1
- package/dist/cjs/SelectTrigger.cjs +68 -84
- package/dist/cjs/SelectTrigger.native.cjs +90 -0
- package/dist/cjs/SelectTrigger.native.js +70 -66
- package/dist/cjs/SelectTrigger.native.js.map +1 -1
- package/dist/cjs/SelectViewport.cjs +121 -142
- package/dist/cjs/SelectViewport.native.cjs +72 -0
- package/dist/cjs/SelectViewport.native.js +53 -50
- package/dist/cjs/SelectViewport.native.js.map +1 -1
- package/dist/cjs/constants.cjs +20 -22
- package/dist/cjs/constants.native.cjs +40 -0
- package/dist/cjs/constants.native.js +20 -21
- package/dist/cjs/constants.native.js.map +1 -1
- package/dist/cjs/context.cjs +37 -48
- package/dist/cjs/context.native.cjs +57 -0
- package/dist/cjs/context.native.js +39 -49
- package/dist/cjs/context.native.js.map +1 -1
- package/dist/cjs/index.cjs +14 -11
- package/dist/cjs/index.native.cjs +26 -0
- package/dist/cjs/index.native.js +14 -10
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/selectionController.cjs +343 -0
- package/dist/cjs/selectionController.native.cjs +407 -0
- package/dist/cjs/selectionController.native.js +409 -0
- package/dist/cjs/selectionController.native.js.map +1 -0
- package/dist/cjs/types.cjs +9 -11
- package/dist/cjs/types.native.cjs +18 -0
- package/dist/cjs/types.native.js +9 -10
- package/dist/cjs/types.native.js.map +1 -1
- package/dist/esm/Select.mjs +381 -443
- package/dist/esm/Select.mjs.map +1 -1
- package/dist/esm/Select.native.js +420 -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 +291 -295
- 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 +240 -181
- package/dist/esm/SelectItem.mjs.map +1 -1
- package/dist/esm/SelectItem.native.js +249 -191
- 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 +107 -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 +315 -0
- package/dist/esm/selectionController.mjs.map +1 -0
- package/dist/esm/selectionController.native.js +377 -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 +381 -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 +29 -0
- package/dist/jsx/SelectContent.native.js +17 -22
- package/dist/jsx/SelectContent.native.js.map +1 -1
- package/dist/jsx/SelectImpl.mjs +291 -295
- package/dist/jsx/SelectImpl.mjs.map +1 -1
- package/dist/jsx/SelectImpl.native.cjs +29 -0
- package/dist/jsx/SelectImpl.native.js +16 -24
- package/dist/jsx/SelectImpl.native.js.map +1 -1
- package/dist/jsx/SelectItem.mjs +240 -181
- package/dist/jsx/SelectItem.mjs.map +1 -1
- package/dist/jsx/SelectItem.native.cjs +288 -0
- package/dist/jsx/SelectItem.native.js +264 -213
- 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 +73 -0
- package/dist/jsx/SelectItemText.native.js +49 -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 +37 -0
- package/dist/jsx/SelectScrollButton.native.js +24 -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 +90 -0
- package/dist/jsx/SelectTrigger.native.js +70 -66
- package/dist/jsx/SelectTrigger.native.js.map +1 -1
- package/dist/jsx/SelectViewport.mjs +107 -119
- package/dist/jsx/SelectViewport.mjs.map +1 -1
- package/dist/jsx/SelectViewport.native.cjs +72 -0
- package/dist/jsx/SelectViewport.native.js +53 -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 +40 -0
- package/dist/jsx/constants.native.js +20 -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 +57 -0
- package/dist/jsx/context.native.js +39 -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 +26 -0
- package/dist/jsx/index.native.js +14 -10
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/selectionController.mjs +315 -0
- package/dist/jsx/selectionController.mjs.map +1 -0
- package/dist/jsx/selectionController.native.cjs +407 -0
- package/dist/jsx/selectionController.native.js +409 -0
- package/dist/jsx/selectionController.native.js.map +1 -0
- package/dist/jsx/types.mjs +0 -2
- package/dist/jsx/types.native.cjs +18 -0
- package/dist/jsx/types.native.js +9 -10
- package/dist/jsx/types.native.js.map +1 -1
- package/package.json +31 -30
- package/src/Select.tsx +478 -378
- package/src/SelectContent.tsx +46 -16
- package/src/SelectImpl.native.tsx +0 -8
- package/src/SelectImpl.tsx +149 -160
- package/src/SelectItem.tsx +280 -159
- package/src/SelectItemText.tsx +16 -33
- package/src/SelectScrollButton.native.tsx +13 -4
- package/src/SelectScrollButton.tsx +57 -42
- package/src/SelectTrigger.tsx +77 -53
- package/src/SelectViewport.native.tsx +42 -25
- package/src/SelectViewport.tsx +60 -60
- package/src/context.tsx +6 -2
- package/src/index.tsx +5 -2
- package/src/selectionController.ts +404 -0
- package/src/types.tsx +105 -59
- 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 +90 -0
- package/types/selectionController.d.ts.map +1 -0
- package/types/types.d.ts +66 -50
- 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":["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":["jsx/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 { 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 isAdapted = useAdaptIsActive(context.adaptScope);\n const {\n registry,\n mode,\n selectedValues,\n selectValue,\n activeIndexSubscribe,\n activeIndexRef,\n allowMouseUpRef,\n allowSelectRef,\n selectTimeoutRef,\n getItemProps,\n shouldRenderWebNative,\n setActiveIndex,\n lastPointerRef,\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 registrationRef = React.useRef(\n null\n );\n const initialRegistration = React.useRef({\n value,\n disabled,\n textValue: textValueProp\n });\n useIsomorphicLayoutEffect(() => {\n const registration = registry.registerItem(initialRegistration.current);\n registrationRef.current = registration;\n registration.setNode(itemNodeRef.current);\n return () => {\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 [isActive, setIsActive] = React.useState(false);\n const isActiveRef = React.useRef(false);\n React.useEffect(() => {\n const handleActiveIndex = (i) => {\n const next = i != null && registry.getIndex(value) === i;\n if (next !== isActiveRef.current) {\n isActiveRef.current = next;\n setIsActive(next);\n }\n if (next && isWeb) {\n requestAnimationFrame(() => {\n itemNodeRef.current?.focus?.();\n });\n }\n };\n handleActiveIndex(activeIndexRef?.current ?? null);\n return activeIndexSubscribe(handleActiveIndex);\n }, [activeIndexRef, activeIndexSubscribe, registry, value]);\n const textId = React.useId();\n const refCallback = React.useCallback((node) => {\n itemNodeRef.current = node;\n registrationRef.current?.setNode(node);\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 handleMouseMove = React.useCallback(\n (event) => {\n if (disabled) return;\n const index = registry.getIndex(value);\n if (index < 0) return;\n const last = lastPointerRef.current;\n if (event.clientX === last.x && event.clientY === last.y) return;\n last.x = event.clientX;\n last.y = event.clientY;\n setActiveIndex(index, {\n reason: \"item-hover\",\n event: event.nativeEvent || event,\n trigger: event.currentTarget,\n index\n });\n },\n [disabled, lastPointerRef, registry, setActiveIndex, 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 (!getItemProps && 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, getItemProps, moveActive, search]\n );\n const selectItemProps = React.useMemo(() => {\n if (getItemProps) {\n const {\n onTouchMove,\n onTouchEnd,\n onKeyDown,\n onClick,\n onMouseUp,\n onMouseMove,\n onPress,\n ...itemProps\n } = restProps;\n const interactionProps = 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: handleMouseMove,\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, handleMouseMove),\n onPress: composeEventHandlers(restProps.onPress, handleSelect)\n };\n }, [\n allowMouseUpRef,\n allowSelectRef,\n disabled,\n handleKeyDown,\n handleMouseMove,\n handleSelect,\n getItemProps,\n restProps,\n selectTimeoutRef\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 && (isActive || activeIndexRef?.current == null && isSelected) ? 0 : -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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"}
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all) __defProp(target, name, {
|
|
11
|
+
get: all[name],
|
|
12
|
+
enumerable: true
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
var __copyProps = (to, from, except, desc) => {
|
|
16
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
17
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
18
|
+
get: () => from[key],
|
|
19
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return to;
|
|
23
|
+
};
|
|
24
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
25
|
+
value: mod,
|
|
26
|
+
enumerable: true
|
|
27
|
+
}) : target, mod));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var SelectItem_exports = {};
|
|
30
|
+
__export(SelectItem_exports, {
|
|
31
|
+
SelectItem: () => SelectItem,
|
|
32
|
+
SelectItemContextProvider: () => SelectItemContextProvider,
|
|
33
|
+
SelectItemFrame: () => SelectItemFrame,
|
|
34
|
+
useSelectItemContext: () => useSelectItemContext
|
|
35
|
+
});
|
|
36
|
+
module.exports = __toCommonJS(SelectItem_exports);
|
|
37
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
38
|
+
var import_compose_refs = require("@tamagui/compose-refs");
|
|
39
|
+
var import_adapt = require("@tamagui/adapt");
|
|
40
|
+
var import_constants = require("@tamagui/constants");
|
|
41
|
+
var import_core = require("@tamagui/core");
|
|
42
|
+
var import_helpers = require("@tamagui/helpers");
|
|
43
|
+
var React = __toESM(require("react"), 1);
|
|
44
|
+
var import_context = require("./context.native.js");
|
|
45
|
+
var import_selectionController = require("./selectionController.native.js");
|
|
46
|
+
var ITEM_NAME = "SelectItem";
|
|
47
|
+
var { Provider: SelectItemContextProvider, useStyledContext: useSelectItemContext } = (0, import_core.createStyledContext)(null, ITEM_NAME);
|
|
48
|
+
var SelectItemFrame = (0, import_core.styled)(import_core.View, {
|
|
49
|
+
displayName: ITEM_NAME,
|
|
50
|
+
alignItems: "center",
|
|
51
|
+
flexDirection: "row"
|
|
52
|
+
});
|
|
53
|
+
var SelectItem = (0, import_core.createStyledHOC)(SelectItemFrame, function SelectItem2(props, forwardedRef) {
|
|
54
|
+
var { scope, value, disabled: disabledProp, "aria-disabled": ariaDisabled, textValue: textValueProp, ...restProps } = props;
|
|
55
|
+
var disabled = disabledProp !== null && disabledProp !== void 0 ? disabledProp : ariaDisabled === true;
|
|
56
|
+
var context = (0, import_context.useSelectItemParentContext)(scope);
|
|
57
|
+
var isAdapted = (0, import_adapt.useAdaptIsActive)(context.adaptScope);
|
|
58
|
+
var { registry, mode, selectedValues, selectValue, activeIndexSubscribe, activeIndexRef, allowMouseUpRef, allowSelectRef, selectTimeoutRef, getItemProps, shouldRenderWebNative, setActiveIndex, lastPointerRef, moveActive, search } = context;
|
|
59
|
+
var isSelected = selectedValues.includes(value);
|
|
60
|
+
var pendingMouseUpSelectionRef = React.useRef(false);
|
|
61
|
+
var itemNodeRef = React.useRef(null);
|
|
62
|
+
var registrationRef = React.useRef(null);
|
|
63
|
+
var initialRegistration = React.useRef({
|
|
64
|
+
value,
|
|
65
|
+
disabled,
|
|
66
|
+
textValue: textValueProp
|
|
67
|
+
});
|
|
68
|
+
(0, import_constants.useIsomorphicLayoutEffect)(function() {
|
|
69
|
+
var registration = registry.registerItem(initialRegistration.current);
|
|
70
|
+
registrationRef.current = registration;
|
|
71
|
+
registration.setNode(itemNodeRef.current);
|
|
72
|
+
return function() {
|
|
73
|
+
registrationRef.current = null;
|
|
74
|
+
registration.unregister();
|
|
75
|
+
};
|
|
76
|
+
}, [registry]);
|
|
77
|
+
(0, import_constants.useIsomorphicLayoutEffect)(function() {
|
|
78
|
+
var _registrationRef_current;
|
|
79
|
+
(_registrationRef_current = registrationRef.current) === null || _registrationRef_current === void 0 ? void 0 : _registrationRef_current.update({
|
|
80
|
+
value,
|
|
81
|
+
disabled,
|
|
82
|
+
textValue: textValueProp
|
|
83
|
+
});
|
|
84
|
+
}, [
|
|
85
|
+
disabled,
|
|
86
|
+
textValueProp,
|
|
87
|
+
value
|
|
88
|
+
]);
|
|
89
|
+
(0, import_constants.useIsomorphicLayoutEffect)(function() {
|
|
90
|
+
var _registrationRef_current;
|
|
91
|
+
(_registrationRef_current = registrationRef.current) === null || _registrationRef_current === void 0 ? void 0 : _registrationRef_current.setNode(itemNodeRef.current);
|
|
92
|
+
});
|
|
93
|
+
var [isActive, setIsActive] = React.useState(false);
|
|
94
|
+
var isActiveRef = React.useRef(false);
|
|
95
|
+
React.useEffect(function() {
|
|
96
|
+
var handleActiveIndex = function(i) {
|
|
97
|
+
var next = i != null && registry.getIndex(value) === i;
|
|
98
|
+
if (next !== isActiveRef.current) {
|
|
99
|
+
isActiveRef.current = next;
|
|
100
|
+
setIsActive(next);
|
|
101
|
+
}
|
|
102
|
+
if (next && import_constants.isWeb) {
|
|
103
|
+
requestAnimationFrame(function() {
|
|
104
|
+
var _itemNodeRef_current_focus, _itemNodeRef_current;
|
|
105
|
+
(_itemNodeRef_current = itemNodeRef.current) === null || _itemNodeRef_current === void 0 ? void 0 : (_itemNodeRef_current_focus = _itemNodeRef_current.focus) === null || _itemNodeRef_current_focus === void 0 ? void 0 : _itemNodeRef_current_focus.call(_itemNodeRef_current);
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
var _activeIndexRef_current;
|
|
110
|
+
handleActiveIndex((_activeIndexRef_current = activeIndexRef === null || activeIndexRef === void 0 ? void 0 : activeIndexRef.current) !== null && _activeIndexRef_current !== void 0 ? _activeIndexRef_current : null);
|
|
111
|
+
return activeIndexSubscribe(handleActiveIndex);
|
|
112
|
+
}, [
|
|
113
|
+
activeIndexRef,
|
|
114
|
+
activeIndexSubscribe,
|
|
115
|
+
registry,
|
|
116
|
+
value
|
|
117
|
+
]);
|
|
118
|
+
var textId = React.useId();
|
|
119
|
+
var refCallback = React.useCallback(function(node) {
|
|
120
|
+
var _registrationRef_current;
|
|
121
|
+
itemNodeRef.current = node;
|
|
122
|
+
(_registrationRef_current = registrationRef.current) === null || _registrationRef_current === void 0 ? void 0 : _registrationRef_current.setNode(node);
|
|
123
|
+
}, []);
|
|
124
|
+
var composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, refCallback);
|
|
125
|
+
var handleSelect = React.useCallback(function(event) {
|
|
126
|
+
var reason = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "item-press";
|
|
127
|
+
if (disabled) return;
|
|
128
|
+
var nativeEvent = (event === null || event === void 0 ? void 0 : event.nativeEvent) || event;
|
|
129
|
+
selectValue(value, (0, import_core.createChangeEventDetails)(reason, nativeEvent, event === null || event === void 0 ? void 0 : event.currentTarget));
|
|
130
|
+
}, [
|
|
131
|
+
disabled,
|
|
132
|
+
selectValue,
|
|
133
|
+
value
|
|
134
|
+
]);
|
|
135
|
+
var handleMouseMove = React.useCallback(function(event) {
|
|
136
|
+
if (disabled) return;
|
|
137
|
+
var index = registry.getIndex(value);
|
|
138
|
+
if (index < 0) return;
|
|
139
|
+
var last = lastPointerRef.current;
|
|
140
|
+
if (event.clientX === last.x && event.clientY === last.y) return;
|
|
141
|
+
last.x = event.clientX;
|
|
142
|
+
last.y = event.clientY;
|
|
143
|
+
setActiveIndex(index, {
|
|
144
|
+
reason: "item-hover",
|
|
145
|
+
event: event.nativeEvent || event,
|
|
146
|
+
trigger: event.currentTarget,
|
|
147
|
+
index
|
|
148
|
+
});
|
|
149
|
+
}, [
|
|
150
|
+
disabled,
|
|
151
|
+
lastPointerRef,
|
|
152
|
+
registry,
|
|
153
|
+
setActiveIndex,
|
|
154
|
+
value
|
|
155
|
+
]);
|
|
156
|
+
var handleKeyDown = React.useCallback(function(event) {
|
|
157
|
+
var _event_key;
|
|
158
|
+
if (disabled) return;
|
|
159
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
160
|
+
event.preventDefault();
|
|
161
|
+
handleSelect(event, "keyboard");
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
if (event.key === "ArrowDown" || event.key === "ArrowUp") {
|
|
165
|
+
event.preventDefault();
|
|
166
|
+
event.stopPropagation();
|
|
167
|
+
moveActive(event.key === "ArrowDown" ? 1 : -1, event.nativeEvent || event);
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
if (!getItemProps && ((_event_key = event.key) === null || _event_key === void 0 ? void 0 : _event_key.length) === 1 && !event.metaKey && !event.ctrlKey) {
|
|
171
|
+
search(event.key, event.nativeEvent || event);
|
|
172
|
+
}
|
|
173
|
+
if (allowSelectRef) {
|
|
174
|
+
allowSelectRef.current = true;
|
|
175
|
+
}
|
|
176
|
+
}, [
|
|
177
|
+
allowSelectRef,
|
|
178
|
+
disabled,
|
|
179
|
+
handleSelect,
|
|
180
|
+
getItemProps,
|
|
181
|
+
moveActive,
|
|
182
|
+
search
|
|
183
|
+
]);
|
|
184
|
+
var selectItemProps = React.useMemo(function() {
|
|
185
|
+
if (getItemProps) {
|
|
186
|
+
var { onTouchMove, onTouchEnd, onKeyDown, onClick, onMouseUp, onMouseMove, onPress, ...itemProps } = restProps;
|
|
187
|
+
var interactionProps = getItemProps({
|
|
188
|
+
...itemProps,
|
|
189
|
+
onTouchMove() {
|
|
190
|
+
allowSelectRef.current = true;
|
|
191
|
+
allowMouseUpRef.current = false;
|
|
192
|
+
},
|
|
193
|
+
onTouchEnd() {
|
|
194
|
+
allowSelectRef.current = false;
|
|
195
|
+
allowMouseUpRef.current = true;
|
|
196
|
+
},
|
|
197
|
+
onMouseMove: handleMouseMove,
|
|
198
|
+
onKeyDown: handleKeyDown,
|
|
199
|
+
onClick(event) {
|
|
200
|
+
if (disabled) return;
|
|
201
|
+
var shouldSelect = pendingMouseUpSelectionRef.current || allowSelectRef.current;
|
|
202
|
+
pendingMouseUpSelectionRef.current = false;
|
|
203
|
+
clearTimeout(selectTimeoutRef.current);
|
|
204
|
+
allowSelectRef.current = true;
|
|
205
|
+
if (shouldSelect) {
|
|
206
|
+
handleSelect(event);
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
onMouseUp(event) {
|
|
210
|
+
if (disabled) return;
|
|
211
|
+
if (!allowMouseUpRef.current) {
|
|
212
|
+
allowMouseUpRef.current = true;
|
|
213
|
+
allowSelectRef.current = true;
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
pendingMouseUpSelectionRef.current = allowSelectRef.current;
|
|
217
|
+
clearTimeout(selectTimeoutRef.current);
|
|
218
|
+
selectTimeoutRef.current = setTimeout(function() {
|
|
219
|
+
allowSelectRef.current = true;
|
|
220
|
+
if (pendingMouseUpSelectionRef.current) {
|
|
221
|
+
pendingMouseUpSelectionRef.current = false;
|
|
222
|
+
handleSelect(event);
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
return {
|
|
228
|
+
...interactionProps,
|
|
229
|
+
onTouchMove: (0, import_helpers.composeEventHandlers)(onTouchMove, interactionProps.onTouchMove),
|
|
230
|
+
onTouchEnd: (0, import_helpers.composeEventHandlers)(onTouchEnd, interactionProps.onTouchEnd),
|
|
231
|
+
onKeyDown: (0, import_helpers.composeEventHandlers)(onKeyDown, interactionProps.onKeyDown),
|
|
232
|
+
onClick(event) {
|
|
233
|
+
var _interactionProps_onClick;
|
|
234
|
+
onClick === null || onClick === void 0 ? void 0 : onClick(event);
|
|
235
|
+
if (event.defaultPrevented) {
|
|
236
|
+
pendingMouseUpSelectionRef.current = false;
|
|
237
|
+
clearTimeout(selectTimeoutRef.current);
|
|
238
|
+
allowSelectRef.current = true;
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
(_interactionProps_onClick = interactionProps.onClick) === null || _interactionProps_onClick === void 0 ? void 0 : _interactionProps_onClick.call(interactionProps, event);
|
|
242
|
+
},
|
|
243
|
+
onMouseUp: (0, import_helpers.composeEventHandlers)(onMouseUp, interactionProps.onMouseUp),
|
|
244
|
+
onMouseMove: (0, import_helpers.composeEventHandlers)(onMouseMove, interactionProps.onMouseMove),
|
|
245
|
+
onPress
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
return {
|
|
249
|
+
...restProps,
|
|
250
|
+
onKeyDown: (0, import_helpers.composeEventHandlers)(restProps.onKeyDown, handleKeyDown),
|
|
251
|
+
onMouseMove: (0, import_helpers.composeEventHandlers)(restProps.onMouseMove, handleMouseMove),
|
|
252
|
+
onPress: (0, import_helpers.composeEventHandlers)(restProps.onPress, handleSelect)
|
|
253
|
+
};
|
|
254
|
+
}, [
|
|
255
|
+
allowMouseUpRef,
|
|
256
|
+
allowSelectRef,
|
|
257
|
+
disabled,
|
|
258
|
+
handleKeyDown,
|
|
259
|
+
handleMouseMove,
|
|
260
|
+
handleSelect,
|
|
261
|
+
getItemProps,
|
|
262
|
+
restProps,
|
|
263
|
+
selectTimeoutRef
|
|
264
|
+
]);
|
|
265
|
+
var accessibilityProps = (0, import_selectionController.getSelectOptionProps)(mode, isSelected, disabled, import_constants.isWeb ? "web" : "native");
|
|
266
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectItemContextProvider, {
|
|
267
|
+
scope,
|
|
268
|
+
value,
|
|
269
|
+
textId: textId || "",
|
|
270
|
+
textValue: textValueProp,
|
|
271
|
+
isSelected,
|
|
272
|
+
children: shouldRenderWebNative ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", {
|
|
273
|
+
value,
|
|
274
|
+
disabled,
|
|
275
|
+
children: props.children
|
|
276
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectItemFrame, {
|
|
277
|
+
render: "div",
|
|
278
|
+
ref: composedRefs,
|
|
279
|
+
"aria-labelledby": textId,
|
|
280
|
+
"data-state": isSelected ? "active" : "inactive",
|
|
281
|
+
"data-disabled": disabled ? "" : void 0,
|
|
282
|
+
tabIndex: disabled ? void 0 : import_constants.isWeb && isAdapted && (isActive || (activeIndexRef === null || activeIndexRef === void 0 ? void 0 : activeIndexRef.current) == null && isSelected) ? 0 : -1,
|
|
283
|
+
zIndex: 100,
|
|
284
|
+
...selectItemProps,
|
|
285
|
+
...accessibilityProps
|
|
286
|
+
})
|
|
287
|
+
});
|
|
288
|
+
}, { disableTheme: true });
|