fix(web): implement traceInsertEdits non-BMP string handling

This commit is contained in:
Joshua Horton 2025-09-29 10:31:30 -05:00
parent 2e16e397d7
commit c477221e93

View file

@ -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;
}