diff --git a/frontend/src/ts/elements/caret.ts b/frontend/src/ts/elements/caret.ts index 8d54c3f3d4dc..2b0786fe1964 100644 --- a/frontend/src/ts/elements/caret.ts +++ b/frontend/src/ts/elements/caret.ts @@ -395,14 +395,21 @@ export class Caret { isDirectionReversed: boolean; }): { left: number; top: number; width: number } { const letters = options.word?.qsa("letter"); - let letter; - if (!letters?.length || !(letter = letters[options.letterIndex])) { - // maybe we should return null here instead of throwing + + if (letters.length === 0) { throw new Error( "Caret getTargetPositionAndWidth: no letters found in word", ); } + let letter = letters[options.letterIndex] ?? letters[letters.length - 1]; + + if (!letter) { + throw new Error( + `Caret getTargetPositionAndWidth: letter not found for index ${options.letterIndex}`, + ); + } + if (caretDebug) { if (this.id === "paceCaret") { for (const l of document.querySelectorAll(".word letter")) {