Use normalize-diacritics

This commit is contained in:
shamoon
2026-06-16 09:09:43 -07:00
parent 97eb062a6d
commit 93ac1203f3
+4 -36
View File
@@ -1,42 +1,10 @@
const EXTRA_DIACRITIC_REPLACEMENTS: Record<string, string> = {
'\u00c6': 'AE',
'\u00e6': 'ae',
'\u00d0': 'D',
'\u00f0': 'd',
'\u00d8': 'O',
'\u00f8': 'o',
'\u00de': 'Th',
'\u00fe': 'th',
'\u0110': 'D',
'\u0111': 'd',
'\u0131': 'i',
'\u0141': 'L',
'\u0142': 'l',
'\u0152': 'OE',
'\u0153': 'oe',
'\u00df': 'ss',
}
// ng-select has a similar private helper stripSpecialChars, but we can't use it
const EXTRA_DIACRITICS_PATTERN = new RegExp(
`[${Object.keys(EXTRA_DIACRITIC_REPLACEMENTS).join('')}]`,
'g'
)
function normalizeSearchText(value: unknown): string {
return String(value ?? '')
.normalize('NFD')
.replace(/[\u0300-\u036f]/g, '')
.replace(
EXTRA_DIACRITICS_PATTERN,
(char) => EXTRA_DIACRITIC_REPLACEMENTS[char] ?? char
)
.toLocaleLowerCase()
}
import { normalizeSync } from 'normalize-diacritics'
export function matchesSearchText(
value: unknown,
searchText: unknown
): boolean {
return normalizeSearchText(value).includes(normalizeSearchText(searchText))
return normalizeSync(String(value))
.toLocaleLowerCase()
.includes(normalizeSync(String(searchText)).toLocaleLowerCase())
}