diff --git a/src/components/inputField.ts b/src/components/inputField.ts
index 00a8c933..b822170e 100644
--- a/src/components/inputField.ts
+++ b/src/components/inputField.ts
@@ -1,4 +1,4 @@
-import { getRichValue, isInputEmpty } from "../helpers/dom";
+import { getRichValue } from "../helpers/dom";
import { checkRTL } from "../helpers/string";
import RichTextProcessor from "../lib/richtextprocessor";
@@ -18,6 +18,9 @@ let init = () => {
let entities = RichTextProcessor.parseEntities(text);
//console.log('messageInput paste', text, entities);
entities = entities.filter(e => e._ == 'messageEntityEmoji' || e._ == 'messageEntityLinebreak');
+ if(RichTextProcessor.emojiSupported) { // * fix safari emoji
+ entities = entities.filter(e => e._ != 'messageEntityEmoji');
+ }
//text = RichTextProcessor.wrapEmojiText(text);
text = RichTextProcessor.wrapRichText(text, {entities, noLinks: true});
@@ -63,15 +66,18 @@ const InputField = (options: {
const input = div.firstElementChild as HTMLElement;
const observer = new MutationObserver((mutationsList, observer) => {
- const isEmpty = isInputEmpty(input);
+ //const isEmpty = isInputEmpty(input);
//console.log('input', isEmpty);
+ //const char = [...getRichValue(input)][0];
const char = input.innerText[0];
let direction = 'ltr';
if(char && checkRTL(char)) {
direction = 'rtl';
}
+ //console.log('RTL', direction, char);
+
input.style.direction = direction;
if(processInput) {
diff --git a/src/helpers/string.ts b/src/helpers/string.ts
index 3287ac16..47e5f512 100644
--- a/src/helpers/string.ts
+++ b/src/helpers/string.ts
@@ -84,3 +84,5 @@ export const checkRTL = (s: string) => {
return rtlDirCheck.test(s);
};
+
+//(window as any).checkRTL = checkRTL;
diff --git a/src/lib/richtextprocessor.ts b/src/lib/richtextprocessor.ts
index 948be8b2..61a8ef07 100644
--- a/src/lib/richtextprocessor.ts
+++ b/src/lib/richtextprocessor.ts
@@ -519,8 +519,8 @@ namespace RichTextProcessor {
break;
case 'messageEntityEmoji':
- html.push(emojiSupported ? // ! contenteditable="false" нужен для поля ввода, иначе там будет меняться шрифт в Safari
- `${encodeEntities(entityText)}` :
+ html.push(emojiSupported ? // ! contenteditable="false" нужен для поля ввода, иначе там будет меняться шрифт в Safari, или же рендерить смайлик напрямую, без контейнера
+ `${encodeEntities(entityText)}` :
`
`);
break;
@@ -723,8 +723,13 @@ namespace RichTextProcessor {
export function wrapDraftText(text: string, options: Partial<{
entities: MessageEntity[]
}> = {}) {
+ let entities = options.entities.slice();
+ if(emojiSupported) { // * fix safari emoji
+ entities = entities.filter(e => e._ != 'messageEntityEmoji');
+ }
+
return wrapRichText(text, {
- ...options,
+ entities,
noLinks: true,
noEmphasis: true,
passEntities: {