import {useState} from 'react'; import TextField, {TextFieldProps} from '@mui/material/TextField'; import InputAdornment from '@mui/material/InputAdornment'; import ListItem from '@mui/material/ListItem'; import ListItemText from '@mui/material/ListItemText'; import PlaceOutlinedIcon from '@mui/icons-material/PlaceOutlined'; import Autocomplete from '@mui/material/Autocomplete'; import {debounce} from '@mui/material/utils'; import {SessionToken} from '@mapbox/search-js-core'; import {useTranslation} from 'react-i18next'; import useLocale from '../../hooks/useLocale'; import {MapboxSuggestion} from '../../pages/api/mapbox/searchbox/suggest'; import {GeocodedOption} from '../../pages/api/mapbox/searchbox/retrieve'; interface Props { place: string; latitude?: number; longitude?: number; onSelect: ({ latitude, longitude, place, }: { latitude?: number; longitude?: number; place: string; }) => void; label?: string; textFieldProps?: TextFieldProps; disabled?: boolean; } type Option = MapboxSuggestion | {name: String; previous?: Boolean}; const MAPBOX_CONFIGURED = process.env['MAPBOX_CONFIGURED'] || false; const PlaceInput = ({ latitude, longitude, place = '', onSelect, label, textFieldProps, disabled, }: Props) => { const {t} = useTranslation(); const {locale} = useLocale(); const [mapboxAvailable, setMapboxAvailable] = useState(MAPBOX_CONFIGURED); const [noCoordinates, setNoCoordinates] = useState(!latitude || !longitude); const previousOption = place ? {name: place, previous: true} : null; const sessionToken = new SessionToken(); const [options, setOptions] = useState([] as Array