{"version":3,"sources":["PickerAndroid.android.js"],"names":["MODE_DROPDOWN","PickerAndroid","props","ref","pickerRef","React","useRef","FABRIC_ENABLED","global","nativeFabricUIManager","nativeSelectedIndex","setNativeSelectedIndex","useState","value","useImperativeHandle","viewManagerConfig","UIManager","getViewManagerConfig","mode","blur","Commands","AndroidDropdownPickerCommands","current","AndroidDialogPickerCommands","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","AndroidDropdownPickerNativeComponent","AndroidDialogPickerNativeComponent","rootProps","accessibilityLabel","onBlur","onFocus","prompt","dropdownIconColor","dropdownIconRippleColor","testID","numberOfLines","forwardRef"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;AAEA;;AACA;;AAMA;;AAGA;;;;;;;;AAMA,MAAMA,aAAa,GAAG,UAAtB;;AAsBA;AACA;AACA;AACA,SAASC,aAAT,CAAuBC,KAAvB,EAAkDC,GAAlD,EAA8E;AAAA;;AAC5E,QAAMC,SAAS,GAAGC,KAAK,CAACC,MAAN,CAAa,IAAb,CAAlB;AACA,QAAMC,cAAc,GAAG,CAAC,aAACC,MAAD,oCAAC,QAAQC,qBAAT,CAAxB;AAEA,QAAM,CAACC,mBAAD,EAAsBC,sBAAtB,IAAgDN,KAAK,CAACO,QAAN,CAAe;AACnEC,IAAAA,KAAK,EAAE;AAD4D,GAAf,CAAtD;AAIAR,EAAAA,KAAK,CAACS,mBAAN,CAA0BX,GAA1B,EAA+B,MAAM;AACnC,UAAMY,iBAAiB,GAAGC,uBAAUC,oBAAV,CACxBf,KAAK,CAACgB,IAAN,KAAelB,aAAf,GACI,wBADJ,GAEI,0BAHoB,CAA1B;;AAKA,WAAO;AACLmB,MAAAA,IAAI,EAAE,MAAM;AACV,YAAI,CAACJ,iBAAiB,CAACK,QAAvB,EAAiC;AAC/B;AACD;;AACD,YAAIb,cAAJ,EAAoB;AAClB,cAAIL,KAAK,CAACgB,IAAN,KAAelB,aAAnB,EAAkC;AAChCqB,2DAA8BF,IAA9B,CAAmCf,SAAS,CAACkB,OAA7C;AACD,WAFD,MAEO;AACLC,yDAA4BJ,IAA5B,CAAiCf,SAAS,CAACkB,OAA3C;AACD;AACF,SAND,MAMO;AACLN,iCAAUQ,0BAAV,CACE,iCAAepB,SAAS,CAACkB,OAAzB,CADF,EAEEP,iBAAiB,CAACK,QAAlB,CAA2BD,IAF7B,EAGE,EAHF;AAKD;AACF,OAlBI;AAmBLM,MAAAA,KAAK,EAAE,MAAM;AACX,YAAI,CAACV,iBAAiB,CAACK,QAAvB,EAAiC;AAC/B;AACD;;AACD,YAAIb,cAAJ,EAAoB;AAClB,cAAIL,KAAK,CAACgB,IAAN,KAAelB,aAAnB,EAAkC;AAChCqB,2DAA8BI,KAA9B,CAAoCrB,SAAS,CAACkB,OAA9C;AACD,WAFD,MAEO;AACLC,yDAA4BE,KAA5B,CAAkCrB,SAAS,CAACkB,OAA5C;AACD;AACF,SAND,MAMO;AACLN,iCAAUQ,0BAAV,CACE,iCAAepB,SAAS,CAACkB,OAAzB,CADF,EAEEP,iBAAiB,CAACK,QAAlB,CAA2BK,KAF7B,EAGE,EAHF;AAKD;AACF;AApCI,KAAP;AAsCD,GA5CD;AA8CApB,EAAAA,KAAK,CAACqB,eAAN,CAAsB,MAAM;AAC1B,QAAIC,OAAO,GAAG,CAAd;AACAtB,IAAAA,KAAK,CAACuB,QAAN,CAAeC,OAAf,CAAuB3B,KAAK,CAAC4B,QAA7B,EAAuCC,GAAvC,CAA2C,CAACC,KAAD,EAAQC,KAAR,KAAkB;AAC3D,UAAID,KAAK,KAAK,IAAd,EAAoB;AAClB,eAAO,IAAP;AACD;;AACD,UAAIA,KAAK,CAAC9B,KAAN,CAAYW,KAAZ,KAAsBX,KAAK,CAACgC,aAAhC,EAA+C;AAC7CP,QAAAA,OAAO,GAAGM,KAAV;AACD;AACF,KAPD;AASA,UAAME,wBAAwB,GAC5BzB,mBAAmB,CAACG,KAApB,IAA6B,IAA7B,IACAH,mBAAmB,CAACG,KAApB,KAA8Bc,OAFhC,CAX0B,CAe1B;AACA;AACA;;AACA,QAAIQ,wBAAwB,IAAI/B,SAAS,CAACkB,OAA1C,EAAmD;AACjD,UAAIf,cAAJ,EAAoB;AAClB,YAAIL,KAAK,CAACgB,IAAN,KAAelB,aAAnB,EAAkC;AAChCqB,yDAA8Be,iBAA9B,CACEhC,SAAS,CAACkB,OADZ,EAEEe,QAFF;AAID,SALD,MAKO;AACLd,uDAA4Ba,iBAA5B,CACEhC,SAAS,CAACkB,OADZ,EAEEe,QAFF;AAID;AACF,OAZD,MAYO;AACLjC,QAAAA,SAAS,CAACkB,OAAV,CAAkBgB,cAAlB,CAAiC;AAC/BD,UAAAA;AAD+B,SAAjC;AAGD;AACF;AACF,GArCD,EAqCG,CACDnC,KAAK,CAACgC,aADL,EAEDxB,mBAFC,EAGDR,KAAK,CAAC4B,QAHL,EAIDvB,cAJC,EAKDL,KAAK,CAACgB,IALL,EAMDmB,QANC,CArCH;AA8CA,QAAM,CAACE,KAAD,EAAQF,QAAR,IAAoBhC,KAAK,CAACmC,OAAN,CAAc,MAAM;AAC5C;AACA,QAAIH,QAAQ,GAAG,CAAf,CAF4C,CAG5C;;AACA,UAAME,KAAK,GAAGlC,KAAK,CAACuB,QAAN,CAAeC,OAAf,CAAuB3B,KAAK,CAAC4B,QAA7B,EAAuCC,GAAvC,CAA2C,CAACC,KAAD,EAAQC,KAAR,KAAkB;AAAA;;AACzE,UAAID,KAAK,KAAK,IAAd,EAAoB;AAClB,eAAO,IAAP;AACD;;AACD,UAAIA,KAAK,CAAC9B,KAAN,CAAYW,KAAZ,KAAsBX,KAAK,CAACgC,aAAhC,EAA+C;AAC7CG,QAAAA,QAAQ,GAAGJ,KAAX;AACD;;AAED,YAAM;AAACQ,QAAAA,OAAO,GAAG;AAAX,UAAmBT,KAAK,CAAC9B,KAA/B;AAEA,YAAM;AAACwC,QAAAA,KAAD;AAAQC,QAAAA,kBAAR;AAA4BC,QAAAA,KAA5B;AAAmCC,QAAAA,KAAK,GAAG;AAA3C,UAAiDb,KAAK,CAAC9B,KAA7D;AAEA,YAAM4C,cAAc,GAAG,+BAAaJ,KAAb,CAAvB;AAEA,aAAO;AACLA,QAAAA,KAAK,EAAEA,KAAK,IAAI,IAAT,GAAgB,IAAhB,GAAuBI,cADzB;AAELH,QAAAA,kBAFK;AAGLC,QAAAA,KAAK,EAAEG,MAAM,CAACH,KAAD,CAHR;AAILH,QAAAA,OAJK;AAKLI,QAAAA,KAAK,EAAE,EACL,GAAGA,KADE;AAEL;AACA;AACA;AACAG,UAAAA,QAAQ,qBAAEH,KAAK,CAACG,QAAR,6DAAoB,CALvB;AAMLN,UAAAA,KAAK,EAAEG,KAAK,CAACH,KAAN,GAAc,+BAAaG,KAAK,CAACH,KAAnB,CAAd,GAA0C,IAN5C;AAOLO,UAAAA,eAAe,EAAEJ,KAAK,CAACI,eAAN,GACb,+BAAaJ,KAAK,CAACI,eAAnB,CADa,GAEb;AATC;AALF,OAAP;AAiBD,KA/Ba,CAAd;AAgCA,WAAO,CAACV,KAAD,EAAQF,QAAR,CAAP;AACD,GArCyB,EAqCvB,CAACnC,KAAK,CAAC4B,QAAP,EAAiB5B,KAAK,CAACgC,aAAvB,CArCuB,CAA1B;AAuCA,QAAMgB,QAAQ,GAAG7C,KAAK,CAAC8C,WAAN,CACf,CAAC;AAACC,IAAAA;AAAD,GAAD,KAAmD;AACjD,UAAM;AAACC,MAAAA;AAAD,QAAaD,WAAnB;AACA,UAAME,aAAa,GAAGpD,KAAK,CAACoD,aAA5B;;AAEA,QAAIA,aAAa,IAAI,IAArB,EAA2B;AACzB,UAAID,QAAQ,IAAI,CAAhB,EAAmB;AACjB,cAAMvB,QAAQ,GAAGzB,KAAK,CAACuB,QAAN,CAAeC,OAAf,CAAuB3B,KAAK,CAAC4B,QAA7B,EAAuCyB,MAAvC,CACdC,IAAD,IAAUA,IAAI,IAAI,IADH,CAAjB;AAGA,cAAM3C,KAAK,GAAGiB,QAAQ,CAACuB,QAAD,CAAR,CAAmBnD,KAAnB,CAAyBW,KAAvC;;AACA,YAAIX,KAAK,CAACgC,aAAN,KAAwBrB,KAA5B,EAAmC;AACjCyC,UAAAA,aAAa,CAACzC,KAAD,EAAQwC,QAAR,CAAb;AACD;AACF,OARD,MAQO;AACLC,QAAAA,aAAa,CAAC,IAAD,EAAOD,QAAP,CAAb;AACD;AACF;;AACD1C,IAAAA,sBAAsB,CAAC;AAACE,MAAAA,KAAK,EAAEwC;AAAR,KAAD,CAAtB;AACD,GAnBc,EAoBf,CAACnD,KAAK,CAAC4B,QAAP,EAAiB5B,KAAK,CAACoD,aAAvB,EAAsCpD,KAAK,CAACgC,aAA5C,CApBe,CAAjB;AAuBA,QAAMuB,MAAM,GACVvD,KAAK,CAACgB,IAAN,KAAelB,aAAf,GACI0D,6CADJ,GAEIC,2CAHN;AAKA,QAAMC,SAAS,GAAG;AAChBC,IAAAA,kBAAkB,EAAE3D,KAAK,CAAC2D,kBADV;AAEhBpB,IAAAA,OAAO,EAAEvC,KAAK,CAACuC,OAFC;AAGhBF,IAAAA,KAHgB;AAIhBuB,IAAAA,MAAM,EAAE5D,KAAK,CAAC4D,MAJE;AAKhBC,IAAAA,OAAO,EAAE7D,KAAK,CAAC6D,OALC;AAMhBb,IAAAA,QANgB;AAOhBc,IAAAA,MAAM,EAAE9D,KAAK,CAAC8D,MAPE;AAQhB3B,IAAAA,QARgB;AAShBQ,IAAAA,KAAK,EAAE3C,KAAK,CAAC2C,KATG;AAUhBoB,IAAAA,iBAAiB,EAAE,+BAAa/D,KAAK,CAAC+D,iBAAnB,CAVH;AAWhBC,IAAAA,uBAAuB,EAAE,+BAAahE,KAAK,CAACgE,uBAAnB,CAXT;AAYhBC,IAAAA,MAAM,EAAEjE,KAAK,CAACiE,MAZE;AAahBC,IAAAA,aAAa,EAAElE,KAAK,CAACkE;AAbL,GAAlB;AAgBA,sBAAO,oBAAC,MAAD;AAAQ,IAAA,GAAG,EAAEhE;AAAb,KAA4BwD,SAA5B,EAAP;AACD;;4BAEcvD,KAAK,CAACgE,UAAN,CAAqCpE,aAArC,C","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"]}