UNPKG

@mantine/core

Version:

React components library focused on usability, accessibility and developer experience

24 lines (21 loc) 1.03 kB
'use client'; 'use strict'; 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