diff --git a/src/text-expander-element.ts b/src/text-expander-element.ts index 1801eee..2269cf4 100644 --- a/src/text-expander-element.ts +++ b/src/text-expander-element.ts @@ -103,7 +103,9 @@ class TextExpander { } private positionMenu(menu: HTMLElement, position: number) { - const caretRect = new InputRange(this.input, position).getBoundingClientRect() + // Clamp position to valid range to avoid IndexSizeError when input text changes + const clampedPosition = Math.min(position, this.input.value.length) + const caretRect = new InputRange(this.input, clampedPosition).getBoundingClientRect() const targetPosition = {left: caretRect.left, top: caretRect.top + caretRect.height} const currentPosition = menu.getBoundingClientRect()