{"version":3,"sources":["PickerAndroid.android.js"],"names":["React","findNodeHandle","NativeSyntheticEvent","processColor","UIManager","AndroidDialogPickerNativeComponent","Commands","AndroidDialogPickerCommands","AndroidDropdownPickerNativeComponent","AndroidDropdownPickerCommands","MODE_DROPDOWN","PickerAndroid","props","ref","pickerRef","useRef","FABRIC_ENABLED","global","nativeFabricUIManager","nativeSelectedIndex","setNativeSelectedIndex","useState","value","useImperativeHandle","viewManagerConfig","getViewManagerConfig","mode","blur","current","dispatchViewManagerCommand","focus","useLayoutEffect","jsValue","Children","toArray","children","map","child","index","selectedValue","shouldUpdateNativePicker","setNativeSelected","selected","setNativeProps","items","useMemo","enabled","color","contentDescription","label","style","processedColor","String","fontSize","backgroundColor","onSelect","useCallback","nativeEvent","position","onValueChange","filter","item","Picker","rootProps","accessibilityLabel","onBlur","onFocus","prompt","dropdownIconColor","dropdownIconRippleColor","testID","numberOfLines","forwardRef"],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport * as React from 'react';\nimport {\n findNodeHandle,\n NativeSyntheticEvent,\n processColor,\n UIManager,\n} from 'react-native';\nimport AndroidDialogPickerNativeComponent, {\n Commands as AndroidDialogPickerCommands,\n} from './AndroidDialogPickerNativeComponent';\nimport AndroidDropdownPickerNativeComponent, {\n Commands as AndroidDropdownPickerCommands,\n} from './AndroidDropdownPickerNativeComponent';\n\nimport type {TextStyleProp} from 'StyleSheet';\n\nconst MODE_DROPDOWN = 'dropdown';\n\ntype PickerAndroidProps = $ReadOnly<{|\n children?: React.Node,\n style?: ?TextStyleProp,\n selectedValue?: ?(number | string),\n enabled?: ?boolean,\n mode?: ?('dialog' | 'dropdown'),\n onBlur?: (e: NativeSyntheticEvent) => mixed,\n onFocus?: (e: NativeSyntheticEvent) => mixed,\n onValueChange?: ?(itemValue: ?(string | number), itemIndex: number) => mixed,\n prompt?: ?string,\n testID?: string,\n dropdownIconColor?: string,\n numberOfLines?: ?number,\n|}>;\n\ntype PickerRef = React.ElementRef<\n | typeof AndroidDialogPickerNativeComponent\n | typeof AndroidDropdownPickerNativeComponent,\n>;\n\n/**\n * Not exposed as a public API - use instead.\n */\nfunction PickerAndroid(props: PickerAndroidProps, ref: PickerRef): React.Node {\n const pickerRef = React.useRef(null);\n const FABRIC_ENABLED = !!global?.nativeFabricUIManager;\n\n const [nativeSelectedIndex, setNativeSelectedIndex] = React.useState({\n value: null,\n });\n\n React.useImperativeHandle(ref, () => {\n const viewManagerConfig = UIManager.getViewManagerConfig(\n props.mode === MODE_DROPDOWN\n ? 'RNCAndroidDialogPicker'\n : 'RNCAndroidDropdownPicker',\n );\n return {\n blur: () => {\n if (!viewManagerConfig.Commands) {\n return;\n }\n if (FABRIC_ENABLED) {\n if (props.mode === MODE_DROPDOWN) {\n AndroidDropdownPickerCommands.blur(pickerRef.current);\n } else {\n AndroidDialogPickerCommands.blur(pickerRef.current);\n }\n } else {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(pickerRef.current),\n viewManagerConfig.Commands.blur,\n [],\n );\n }\n },\n focus: () => {\n if (!viewManagerConfig.Commands) {\n return;\n }\n if (FABRIC_ENABLED) {\n if (props.mode === MODE_DROPDOWN) {\n AndroidDropdownPickerCommands.focus(pickerRef.current);\n } else {\n AndroidDialogPickerCommands.focus(pickerRef.current);\n }\n } else {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(pickerRef.current),\n viewManagerConfig.Commands.focus,\n [],\n );\n }\n },\n };\n });\n\n React.useLayoutEffect(() => {\n let jsValue = 0;\n React.Children.toArray(props.children).map((child, index) => {\n if (child === null) {\n return null;\n }\n if (child.props.value === props.selectedValue) {\n jsValue = index;\n }\n });\n\n const shouldUpdateNativePicker =\n nativeSelectedIndex.value != null &&\n nativeSelectedIndex.value !== jsValue;\n\n // This is necessary in case native updates the switch and JS decides\n // that the update should be ignored and we should stick with the value\n // that we have in JS.\n if (shouldUpdateNativePicker && pickerRef.current) {\n if (FABRIC_ENABLED) {\n if (props.mode === MODE_DROPDOWN) {\n AndroidDropdownPickerCommands.setNativeSelected(\n pickerRef.current,\n selected,\n );\n } else {\n AndroidDialogPickerCommands.setNativeSelected(\n pickerRef.current,\n selected,\n );\n }\n } else {\n pickerRef.current.setNativeProps({\n selected,\n });\n }\n }\n }, [\n props.selectedValue,\n nativeSelectedIndex,\n props.children,\n FABRIC_ENABLED,\n props.mode,\n selected,\n ]);\n\n const [items, selected] = React.useMemo(() => {\n // eslint-disable-next-line no-shadow\n let selected = 0;\n // eslint-disable-next-line no-shadow\n const items = React.Children.toArray(props.children).map((child, index) => {\n if (child === null) {\n return null;\n }\n if (child.props.value === props.selectedValue) {\n selected = index;\n }\n\n const {enabled = true} = child.props;\n\n const {color, contentDescription, label, style = {}} = child.props;\n\n const processedColor = processColor(color);\n\n return {\n color: color == null ? null : processedColor,\n contentDescription,\n label: String(label),\n enabled,\n style: {\n ...style,\n // there seems to be a problem with codegen, where it would assign to an item\n // the last defined value of the font size if not set explicitly\n // 0 is handled on the native side as \"not set\"\n fontSize: style.fontSize ?? 0,\n color: style.color ? processColor(style.color) : null,\n backgroundColor: style.backgroundColor\n ? processColor(style.backgroundColor)\n : null,\n },\n };\n });\n return [items, selected];\n }, [props.children, props.selectedValue]);\n\n const onSelect = React.useCallback(\n ({nativeEvent}: PickerItemSelectSyntheticEvent) => {\n const {position} = nativeEvent;\n const onValueChange = props.onValueChange;\n\n if (onValueChange != null) {\n if (position >= 0) {\n const children = React.Children.toArray(props.children).filter(\n (item) => item != null,\n );\n const value = children[position].props.value;\n if (props.selectedValue !== value) {\n onValueChange(value, position);\n }\n } else {\n onValueChange(null, position);\n }\n }\n setNativeSelectedIndex({value: position});\n },\n [props.children, props.onValueChange, props.selectedValue],\n );\n\n const Picker =\n props.mode === MODE_DROPDOWN\n ? AndroidDropdownPickerNativeComponent\n : AndroidDialogPickerNativeComponent;\n\n const rootProps = {\n accessibilityLabel: props.accessibilityLabel,\n enabled: props.enabled,\n items,\n onBlur: props.onBlur,\n onFocus: props.onFocus,\n onSelect,\n prompt: props.prompt,\n selected,\n style: props.style,\n dropdownIconColor: processColor(props.dropdownIconColor),\n dropdownIconRippleColor: processColor(props.dropdownIconRippleColor),\n testID: props.testID,\n numberOfLines: props.numberOfLines,\n };\n\n return ;\n}\n\nexport default React.forwardRef(PickerAndroid);\n"]}