Сформирован значительный выпуск проекта ProseMirror 1.0, в рамках которого развивается тулкит для создания кастомизированных визуальных редакторов для интеграции на сайты и в web-приложения. Ветку 1.x планируется поддерживать длительное время с сохранением обратной совместимости. Исходные тексты проекта написаны на JavaScript и поставляются под лицензией MIT.

ProseMirror интересен тем, что для пользователя предоставляет удобные средства редактирования, но для разработчиков позволяет получить созданные в процессе редактирования данные в произвольном структурированном и семантически целостном представлении, занимая нишу между классическими WYSIWYG-редакторами и системами на базе Markdown. При этом ProseMirror является скорее низкоуровневым инструментарием для создания сложных и специфичных интерфейсов редактирования, для добавления простых типовых форм рекомендуется вместо использования ProseMirror напрямую задействовать одну из надстроек.

Тулкит представляет собой библиотеку для построения web-редакторов, разбитую на ряд модулей и поддерживающую расширение функциональности через плагины. Например, через подключения плагинов можно добавить в редактор меню и систему отслеживания изменений, а через расширение схемы документа реализовать нумерованные списки. Модульная структура позволяет загружать и использовать только модули, необходимые для работы желаемой функциональности, а также заменять различные части системы на свои реализации.

ProseMirror предоставляет разработчику полный контроль над документом и вносимыми в него изменениями, позволяя жестко определить форму и структуру получаемого на выходе документа, адаптировав их для нужд конкретного приложения. Например, для научных статей в схеме можно определить разделы, сноски и ссылки. В отличие от таких систем, как TinyMCE, документ не формируется в виде блоба или кода на HTML, а представляет собой структуру данных, содержащую только элементы, определённые в заданной разработчиком схеме, в которой описывается не то как должен выглядеть документ, а то какое содержимое допустимо и как оно структурировано.

Имеется возможность инспектирования каждого изменения и прикрепления к определённым типам изменений своих обработчиков. Изменения обрабатываются не через обновление состояния документа, а в форме транзакций, на основании применения которых к изначальному документу можно определить его состояние в текущий момент редактирования. Предоставляются встроенные средства для организации совместного редактирования документа несколькими участниками.

Источник: http://www.opennet.ru/opennews/art.shtml?num=47388