summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/components/shared/text-buffer.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/cli/src/ui/components/shared/text-buffer.ts')
-rw-r--r--packages/cli/src/ui/components/shared/text-buffer.ts23
1 files changed, 1 insertions, 22 deletions
diff --git a/packages/cli/src/ui/components/shared/text-buffer.ts b/packages/cli/src/ui/components/shared/text-buffer.ts
index 6b025dd5..93364ebe 100644
--- a/packages/cli/src/ui/components/shared/text-buffer.ts
+++ b/packages/cli/src/ui/components/shared/text-buffer.ts
@@ -12,6 +12,7 @@ import pathMod from 'path';
import { useState, useCallback, useEffect, useMemo } from 'react';
import stringWidth from 'string-width';
import { unescapePath } from '@gemini-cli/core';
+import { toCodePoints, cpLen, cpSlice } from '../../utils/textUtils.js';
export type Direction =
| 'left'
@@ -69,28 +70,6 @@ function clamp(v: number, min: number, max: number): number {
return v < min ? min : v > max ? max : v;
}
-/*
- * -------------------------------------------------------------------------
- * Unicode‑aware helpers (work at the code‑point level rather than UTF‑16
- * code units so that surrogate‑pair emoji count as one "column".)
- * ---------------------------------------------------------------------- */
-
-export function toCodePoints(str: string): string[] {
- // [...str] or Array.from both iterate by UTF‑32 code point, handling
- // surrogate pairs correctly.
- return Array.from(str);
-}
-
-export function cpLen(str: string): number {
- return toCodePoints(str).length;
-}
-
-export function cpSlice(str: string, start: number, end?: number): string {
- // Slice by code‑point indices and re‑join.
- const arr = toCodePoints(str).slice(start, end);
- return arr.join('');
-}
-
/* -------------------------------------------------------------------------
* Debug helper – enable verbose logging by setting env var TEXTBUFFER_DEBUG=1
* ---------------------------------------------------------------------- */