23 lines
741 B
TypeScript
23 lines
741 B
TypeScript
/** 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
|
|
}
|