From c477221e93796691cbd04437943c40672abc85cc Mon Sep 17 00:00:00 2001 From: Joshua Horton Date: Mon, 29 Sep 2025 10:31:30 -0500 Subject: [PATCH] fix(web): implement traceInsertEdits non-BMP string handling --- .../src/main/correction/context-tokenization.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/web/src/engine/predictive-text/worker-thread/src/main/correction/context-tokenization.ts b/web/src/engine/predictive-text/worker-thread/src/main/correction/context-tokenization.ts index 706b6d246a..2db1782fa8 100644 --- a/web/src/engine/predictive-text/worker-thread/src/main/correction/context-tokenization.ts +++ b/web/src/engine/predictive-text/worker-thread/src/main/correction/context-tokenization.ts @@ -706,19 +706,23 @@ export function traceInsertEdits(tokens: string[], transform: Transform): { firstInsertPostIndex: number } { let insert = transform.insert; + let insertLen = KMWString.length(insert); const stackedInserts: string[] = []; let firstInsertPostIndex: number; if(insert.length > 0) { for(let index = tokens.length - 1; index >= 0; index--) { + const tokenLen = KMWString.length(tokens[index]); + const currentToken = tokens[index]; - if(KMWString.length(currentToken) >= KMWString.length(insert)) { + if(tokenLen >= insertLen) { stackedInserts.push(insert); firstInsertPostIndex = index; break; } - insert = insert.substring(0, insert.length - currentToken.length); + insert = KMWString.substring(insert, 0, insertLen - tokenLen); + insertLen -= tokenLen; stackedInserts.push(currentToken); firstInsertPostIndex = index; }