Trix - это WYSIWYG-редактор для написания сообщений, комментариев, статей и списков - простых документов, из которых состоит большинство веб-приложений. Он имеет сложную модель документа, поддерживает встроенные вложения и выводит краткий и последовательный HTML.

Большинство редакторов WYSIWYG представляют собой оболочки для API-интерфейсов contenteditable и execCommand HTML, разработанные Microsoft для поддержки редактирования веб-страниц в режиме реального времени в Internet Explorer 5.5 и, в конечном итоге, реконструированы и скопированы другими браузерами.

Поскольку эти API никогда не были полностью специфицированы или задокументированы, а редакторы WYSIWYG HTML огромны по объему, каждая реализация браузера имеет свой собственный набор ошибок и причуд, и разработчикам JavaScript остается разрешать несоответствия.

Trix обходит эти несоответствия, рассматривая contenteditable как устройство ввода-вывода: когда ввод попадает в редактор, Trix преобразует этот ввод в операцию редактирования своей внутренней модели документа, а затем повторно отображает этот документ обратно в редактор. Это дает Trix полный контроль над тем, что происходит после каждого нажатия клавиши, и вообще избавляет от необходимости использовать execCommand.

Ресурсы

https://trix-editor.org/

https://github.com/basecamp/trix