UNPKG

@mantine/core

Version:

React components library focused on usability, accessibility and developer experience

27 lines (26 loc) 1.12 kB
"use client"; //#region packages/@mantine/core/src/components/Highlight/highlighter/highlighter.ts function escapeRegex(value) { return value.replace(/[-[\]{}()*+?.,\\^$|#]/g, "\\$&"); } function highlighter(value, _highlight, options = {}) { if (_highlight == null) return [{ chunk: value, highlighted: false }]; const highlight = Array.isArray(_highlight) ? _highlight.map(escapeRegex) : escapeRegex(_highlight); if (!(Array.isArray(highlight) ? highlight.filter((part) => part.trim().length > 0).length > 0 : highlight.trim() !== "")) return [{ chunk: value, highlighted: false }]; const matcher = typeof highlight === "string" ? highlight.trim() : highlight.filter((part) => part.trim().length !== 0).map((part) => part.trim()).sort((a, b) => b.length - a.length).join("|"); const pattern = options.wholeWord ? `\\b(${matcher})\\b` : `(${matcher})`; const re = new RegExp(pattern, "gi"); return value.split(re).map((part, index) => ({ chunk: part, highlighted: index % 2 === 1 })).filter(({ chunk }) => chunk); } //#endregion export { highlighter }; //# sourceMappingURL=highlighter.mjs.map