Пока остановился на таких вариантах.
#1.
Если в конфиге TinyMCE убрать рутовый блок:
forced_root_block: '',
То приведенный в вопросе код срабатывает.
Однако. если в исходный код отправитель поставит любой тег, типа
<p>/<p>
то сообщениие уйдет, но это решается другими ограничениями для правки текста, например. доступом или удалением плагина/кнопки в тулбаре.
Нашел
здесь.
#2.
EnGold в комментарии подсказал использовать
innerHTML
для сравнения вводимого текста.
Я попробовал что-то типа этого:
const text = editor.getContent().replace(/\s+/g,' ').trim();
const html = text.innerHTML;
if(text === '' || !text || html === '<div></div>') {
return false;
}
Это работает. но там много нюансов над которыми стоит подумать.
В принципе - рабочий вариант также.
#3.
Тут предлагают паттерн и в комменте его улучшение, который тоже можно попробовать.