Fixed positioning of emoji popper - avoids range error

This commit is contained in:
Alvaro 2022-09-09 12:15:28 -06:00 committed by GitHub
parent 692c5679f8
commit 134265496b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -281,21 +281,21 @@ export class EmojiCompletion {
range.collapse(true); range.collapse(true);
// if we can, position the popper at the beginning of the emoji text (:word) // if we can, position the popper at the beginning of the emoji text (:word)
const endContainerTextContent = range.endContainer.textContent; const textBeforeCursor = range.endContainer.textContent?.slice(
const startOfEmojiText = endContainerTextContent?.lastIndexOf(':'); 0,
range.startOffset
);
const startOfEmojiText = textBeforeCursor?.lastIndexOf(':');
if ( if (
endContainerTextContent && textBeforeCursor &&
isNumber(startOfEmojiText) && isNumber(startOfEmojiText) &&
startOfEmojiText !== -1 startOfEmojiText !== -1
) { ) {
range.setStart( range.setStart(range.endContainer, startOfEmojiText);
range.endContainer,
range.endOffset -
(endContainerTextContent.length - startOfEmojiText)
);
} else { } else {
log.warn( 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]; return range.getClientRects()[0];