import React, { useCallback, useEffect, useMemo, useState } from "react"; import { FlatList, Text, TextInput } from "react-native"; import type { CountryItem, PhoneCountrySelectorSheetProps } from "../../types"; import { filterCountries } from "../../utils/phoneCountry"; import { CountryRow } from "./CountryRow"; import { styles } from "./CountryPickerBottomSheet.styles"; import AnimatedBottomSheet from "./AnimatedBottomSheet"; const CountryPickerBottomSheet = ({ visible, selectedCountryCode, onClose, onSelectCountry, }: PhoneCountrySelectorSheetProps) => { const [searchText, setSearchText] = useState(""); useEffect(() => { if (!visible) { setSearchText(""); } }, [visible]); const filteredCountries = useMemo( () => filterCountries(searchText), [searchText], ); const handleSelect = useCallback( (country: CountryItem) => { onSelectCountry(country); setSearchText(""); }, [onSelectCountry], ); const renderItem = useCallback( ({ item }: { item: CountryItem }) => ( ), [handleSelect, selectedCountryCode], ); return ( Select Country item.code} keyboardShouldPersistTaps="handled" initialNumToRender={20} style={styles.list} renderItem={renderItem} /> ); }; export default CountryPickerBottomSheet;