import {useCallback} from 'react' import {View} from 'react-native' import {Sift, type UseSiftReturn} from '@bsky.app/sift' import {atoms as a, useTheme} from '#/alf' import {type AutocompleteItem} from '#/components/Autocomplete/types' import {useOnKeyboard} from '#/components/hooks/useOnKeyboard' import {Portal} from '#/components/Portal' import {IS_WEB} from '#/env' import {AutocompleteItemEmoji} from './AutocompleteItemEmoji' import {AutocompleteItemProfile} from './AutocompleteItemProfile' import {AutocompleteItemSearch} from './AutocompleteItemSearch' function renderItem( item: Parameters>[0]['render']>[0], ) { switch (item.item.type) { case 'profile': return case 'emoji': return case 'search': return default: return } } export function Autocomplete({ inverted, sift, data, render = renderItem, onSelect, onDismiss, }: { inverted?: boolean sift: UseSiftReturn data: AutocompleteItem[] render?: Parameters>[0]['render'] onSelect: (item: AutocompleteItem) => void onDismiss: () => void }) { const t = useTheme() const updatePosition = useCallback(() => { sift.updatePosition() }, [sift]) useOnKeyboard('keyboardDidShow', updatePosition) useOnKeyboard('keyboardDidHide', updatePosition) return ( ) }