import Fuse from "fuse.js"; import { Option } from "../select-legacy"; export const options: Option[] = [ { value: "abbeville", label: "Abbeville" }, { value: "agde", label: "Agde" }, { value: "agen", label: "Agen" }, { value: "aixenprovence", label: "Aix-en-Provence" }, { value: "ajaccio", label: "Ajaccio" }, { value: "albi", label: "Albi" }, { value: "alencon", label: "Alençon" }, { value: "amiens", label: "Amiens" }, { value: "angers", label: "Angers" }, { value: "angouleme", label: "Angoulême" }, { value: "annonay", label: "Annonay" }, { value: "antibes", label: "Antibes" }, { value: "arcachon", label: "Arcachon" }, { value: "arles", label: "Arles" }, { value: "arras", label: "Arras" }, { value: "asnieres-sur-seine", label: "Asnières-sur-Seine" }, { value: "aubagne", label: "Aubagne" }, { value: "aubervilliers", label: "Aubervilliers" }, { value: "aulnay-sous-bois", label: "Aulnay-sous-Bois" }, { value: "avignon", label: "Avignon" }, { value: "avranches", label: "Avranches" }, { value: "avoriaz", label: "Avoriaz" }, { value: "avray", label: "Avray" }, ]; interface Town { insee: number; code_postal: number; latitude: number; longitude: number; nom_commune: string; code_departement: number; nom_departement: string; code_region: number; nom_region: string; context: string; population: number; icon: string; } async function mockServerRequest(searchValue: string): Promise { await new Promise((resolve) => { setTimeout(resolve, Math.random() * 1000); }); const res = await fetch(`/town-74.json`); const towns = (await res.json()) as Town[]; const fuse = new Fuse(towns, { minMatchCharLength: 2, keys: ["nom_commune"], }); const results = fuse.search(searchValue); return results.map(({ item }) => ({ label: item.context, value: item.insee, })); } export const handleChangeSearchValue = async (searchValue: string): Promise => { const results = await mockServerRequest(searchValue); return results; };