mirror of
https://github.com/TheRealOwenRees/echecsfrance.git
synced 2026-07-23 04:26:57 +00:00
+4
-4
@@ -3,6 +3,7 @@ import { atom } from "jotai";
|
|||||||
import { LatLngBounds } from "leaflet";
|
import { LatLngBounds } from "leaflet";
|
||||||
|
|
||||||
import atomWithDebounce from "@/utils/atomWithDebounce";
|
import atomWithDebounce from "@/utils/atomWithDebounce";
|
||||||
|
import { normalizedContains } from "@/utils/string";
|
||||||
|
|
||||||
export const tournamentsAtom = atom<Tournament[]>([]);
|
export const tournamentsAtom = atom<Tournament[]>([]);
|
||||||
export const mapBoundsAtom = atom<LatLngBounds | null>(null);
|
export const mapBoundsAtom = atom<LatLngBounds | null>(null);
|
||||||
@@ -52,10 +53,9 @@ export const filteredTournamentsListAtom = atom((get) => {
|
|||||||
: tournaments;
|
: tournaments;
|
||||||
|
|
||||||
// When searching, we search all the tournament, regardless of the map display
|
// When searching, we search all the tournament, regardless of the map display
|
||||||
if (searchString !== "")
|
if (searchString !== "") {
|
||||||
return filteredByNorm.filter((t) =>
|
return filteredByNorm.filter((t) => normalizedContains(t.town, searchString) || normalizedContains(t.tournament, searchString));
|
||||||
t.town.includes(searchString.toUpperCase()),
|
}
|
||||||
);
|
|
||||||
|
|
||||||
// If we not syncing to the map, return all tournaments
|
// If we not syncing to the map, return all tournaments
|
||||||
if (mapBounds === null || !syncVisible) return filteredByNorm;
|
if (mapBounds === null || !syncVisible) return filteredByNorm;
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
export const removeDiacritics = (str: string) => {
|
||||||
|
// We normalize to the composed Unicode form, then we can remove the accents
|
||||||
|
return str.normalize("NFD").replace(/[\u0300-\u036f]/g, "");
|
||||||
|
};
|
||||||
|
|
||||||
|
export const normalizedContains = (haystack: string, needle: string) => {
|
||||||
|
const regExp = new RegExp(removeDiacritics(needle), "gi");
|
||||||
|
return regExp.test(removeDiacritics(haystack));
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user