/** Maximum number of sessions returned by one sidebar search. */ export const SESSION_SEARCH_RESULT_LIMIT = 20 /** Maximum snippet length in Unicode code points. */ export const SESSION_SEARCH_SNIPPET_MAX_CODE_POINTS = 240 /** * Return the longest prefix containing at most `maximum` Unicode code points. * @param value - text to bound. * @param maximum - non-negative code-point limit. * @returns `value` unchanged when it fits, otherwise a code-point-safe prefix. */ export function truncateUnicodeCodePoints(value: string, maximum: number): string { let count = 0 let end = 0 for (const codePoint of value) { if (count === maximum) return value.slice(0, end) count++ end += codePoint.length } return value }