places-autocomplete-hook
Version:
A React hook for Google Places Autocomplete API
75 lines (72 loc) • 2.07 kB
text/typescript
interface PlacePrediction {
place: string;
placeId: string;
text: {
text: string;
matches: Array<{
endOffset: number;
}>;
};
structuredFormat: {
mainText: {
text: string;
matches: Array<{
endOffset: number;
}>;
};
secondaryText: {
text: string;
};
};
types: string[];
}
interface AddressComponent {
longText: string;
shortText: string;
types: string[];
}
interface PlaceDetails {
placeId: string;
formattedAddress: string;
addressComponents: AddressComponent[];
location: {
latitude: number;
longitude: number;
};
streetNumber?: string;
streetName?: string;
city?: string;
state?: string;
country?: string;
postalCode?: string;
}
interface UsePlacesAutocompleteOptions {
apiKey: string;
debounceMs?: number;
language?: string;
types?: string[];
sessionToken?: string;
location?: {
lat: number;
lng: number;
radius?: number;
};
/** Callback that is called when a place is selected, providing the place ID */
setSelectedPlace?: (placeId: string) => void;
}
interface UsePlacesAutocompleteResult {
value: string;
suggestions: {
status: 'OK' | 'ZERO_RESULTS' | 'ERROR' | 'LOADING';
data: PlacePrediction[];
};
setValue: (value: string, shouldFetchData?: boolean) => void;
clearSuggestions: () => void;
search: (input: string) => Promise<void>;
loading: boolean;
error: Error | null;
getPlaceDetails: (placeId: string) => Promise<PlaceDetails>;
handlePlaceSelect: (placeId: string) => Promise<void>;
}
declare function usePlacesAutocomplete({ apiKey, debounceMs, language, types, sessionToken, location, setSelectedPlace, }: UsePlacesAutocompleteOptions): UsePlacesAutocompleteResult;
export { type PlaceDetails, type PlacePrediction, type UsePlacesAutocompleteOptions, type UsePlacesAutocompleteResult, usePlacesAutocomplete };