From 134265496b6a873e2f7e9c00a942a33323aed69f Mon Sep 17 00:00:00 2001 From: Alvaro <110414366+alvaro-signal@users.noreply.github.com> Date: Fri, 9 Sep 2022 12:15:28 -0600 Subject: [PATCH] Fixed positioning of emoji popper - avoids range error --- ts/quill/emoji/completion.tsx | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/ts/quill/emoji/completion.tsx b/ts/quill/emoji/completion.tsx index c3cf4b751..4b1a8cc0c 100644 --- a/ts/quill/emoji/completion.tsx +++ b/ts/quill/emoji/completion.tsx @@ -281,21 +281,21 @@ export class EmojiCompletion { range.collapse(true); // if we can, position the popper at the beginning of the emoji text (:word) - const endContainerTextContent = range.endContainer.textContent; - const startOfEmojiText = endContainerTextContent?.lastIndexOf(':'); + const textBeforeCursor = range.endContainer.textContent?.slice( + 0, + range.startOffset + ); + const startOfEmojiText = textBeforeCursor?.lastIndexOf(':'); + if ( - endContainerTextContent && + textBeforeCursor && isNumber(startOfEmojiText) && startOfEmojiText !== -1 ) { - range.setStart( - range.endContainer, - range.endOffset - - (endContainerTextContent.length - startOfEmojiText) - ); + range.setStart(range.endContainer, startOfEmojiText); } else { log.warn( - `Could not find the beginning of the emoji word to be completed. startOfEmojiText=${startOfEmojiText}, endContainerTextContent.length=${endContainerTextContent?.length}, range.offsets=${range.startOffset}-${range.endOffset}` + `Could not find the beginning of the emoji word to be completed. startOfEmojiText=${startOfEmojiText}, textBeforeCursor.length=${textBeforeCursor?.length}, range.offsets=${range.startOffset}-${range.endOffset}` ); } return range.getClientRects()[0];