diff options
Diffstat (limited to 'src/lib/strings/helpers.ts')
-rw-r--r-- | src/lib/strings/helpers.ts | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/lib/strings/helpers.ts b/src/lib/strings/helpers.ts index b4ce64fa5..acd55da2d 100644 --- a/src/lib/strings/helpers.ts +++ b/src/lib/strings/helpers.ts @@ -1,3 +1,6 @@ +import {useCallback, useMemo} from 'react' +import Graphemer from 'graphemer' + export function enforceLen( str: string, len: number, @@ -23,6 +26,21 @@ export function enforceLen( return str } +export function useEnforceMaxGraphemeCount() { + const splitter = useMemo(() => new Graphemer(), []) + + return useCallback( + (text: string, maxCount: number) => { + if (splitter.countGraphemes(text) > maxCount) { + return splitter.splitGraphemes(text).slice(0, maxCount).join('') + } else { + return text + } + }, + [splitter], + ) +} + // https://stackoverflow.com/a/52171480 export function toHashCode(str: string, seed = 0): number { let h1 = 0xdeadbeef ^ seed, |