@mantine/core
Version:
React components library focused on usability, accessibility and developer experience
24 lines (21 loc) • 1.03 kB
JavaScript
'use client';
;
function escapeRegex(value) {
return value.replace(/[-[\]{}()*+?.,\\^$|#]/g, "\\$&");
}
function highlighter(value, _highlight) {
if (_highlight == null) {
return [{ chunk: value, highlighted: false }];
}
const highlight = Array.isArray(_highlight) ? _highlight.map(escapeRegex) : escapeRegex(_highlight);
const shouldHighlight = Array.isArray(highlight) ? highlight.filter((part) => part.trim().length > 0).length > 0 : highlight.trim() !== "";
if (!shouldHighlight) {
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 re = new RegExp(`(${matcher})`, "gi");
const chunks = value.split(re).map((part) => ({ chunk: part, highlighted: re.test(part) })).filter(({ chunk }) => chunk);
return chunks;
}
exports.highlighter = highlighter;
//# sourceMappingURL=highlighter.cjs.map