Чтение и готовность
| Метод | Результат | Значение |
|---|---|---|
| getHTML / getCSS / getText | string | Последние применённые содержимое/стили/текст |
| getJSON | DocumentNode | Независимый структурный снимок |
| getConfiguration | ResolvedConfiguration | Независимая копия текущих настроек |
| whenReady | Promise | Начальные Markdown/CSS; отклонение при ошибке |
| whenSourceReady | Promise | Ленивая загрузка и монтирование HTML/CSS-полей |
| getMode | visual / html / markdown | Фактический активный режим |
| isFullscreen | boolean | Полноэкранный вид |
| getSelection | SelectionInfo | from/to/text/revision текущего выделения |
| getPluginIds | string | Копия подключённых id |
Имена без аргументов вызываются как editor.getHTML() и аналогично.
Изменение документа
| Метод | Результат | История и ошибки |
|---|---|---|
| setContent(value, { format?, allowLossy?, css? }?) | Promise | Проверка HTML/JSON/Markdown; атомарное применение с css, одна история. HTML/JSON без CSS применяются до возврата Promise |
| setCSS(css) | Promise | Проверка всей таблицы, одна история, сохраняет выделение |
| setSelection(from, to?) | void | Позиции схемы, to по умолчанию from; выделение не меняет документ |
| replaceRange({ from, to, revision }, value, { format?, allowLossy? }?) | Promise | HTML/Markdown в диапазон одной историей; старая revision → StaleDocumentError |
| replaceText(edits, revision) | boolean | Атомарные обычные замены, sync, одна история; ошибка диапазонов RangeError, старая revision StaleDocumentError |
| transformText(callback) | boolean | Выделение/весь текст; callback(text, startsBlock) → string, одна история, marks/CSS сохраняются |
| execute(command) | boolean | Форматирование/undo/redo/табличные команды, false при неприменимости |
| insertTable(rows?, cols?, withHeaderRow?) | boolean | По умолчанию 3×3/true, целые размеры 1–20, иначе RangeError |
| insertImage(attributes) | boolean | ImageAttributes, одна история, проверка src/размеров |
| uploadImage(file, { signal?, alt? }?) | Promise | Callback + вставка в захваченный диапазон; AbortError/StaleDocumentError |
replaceText принимает массив {from,to,text}; без пересечений, каждый диапазон внутри одного текстового блока, без inline-атомов/переносов в замене. Текст <b> не импортируется как HTML. TransformText/replaceText в UI работают только visual; в исходнике false. Изменение CSS также увеличивает revision. Позиции ProseMirror не равны индексам getText.
Интерфейс и события
| Метод | Результат | Контракт |
|---|---|---|
| setMode(mode) | void | Может остаться в текущем режиме при ошибке; disabled-mode вызывает ошибку, не обходит проверку |
| setFullscreen(enabled) | void | Внутри окна браузера, без Fullscreen API; недоступная функция вызывает ошибку |
| focus() | void | Возвращает фокус и выделение в документ |
| on(name, listener) | unsubscribe | Подписка на событие |
| off(name, listener) | void | Удаление конкретного обработчика |
| usePlugin(plugin) | disposer | Установка API 1; проверка id/version/флага |
| removePlugin(id) | void | Очистка расширения |
| executePluginCommand(id, name) | boolean | Команда; неизвестная вызывает ошибку |
| destroy() | void | Идемпотентная очистка; AggregateError при ошибках cleanup после освобождения ресурсов |
Переподключение редактора
getSourceDraft(): SourceDraft | null возвращает активный HTML+CSS или Markdown-черновик, включая ошибочный исходник; в визуальном режиме — null. restoreSourceDraft(draft): Promise<void> восстанавливает его на свежем визуальном экземпляре после начальных CSS и ленивой загрузки исходника. Недоступный режим отклоняется. Действуют обычная проверка, автосохранение и подтверждение упрощения разметки.
Перед destroy() сохраните getJSON(), getCSS() и getSourceDraft(). Создайте новый экземпляр с нужным language, сохранёнными JSON/CSS и новыми экземплярами плагинов, затем дождитесь restoreSourceDraft(draft), если черновик не null. Смена языка на сайте использует этот сценарий. Сам текст документа не переводится. История undo, открытые диалоги и позиция курсора исходника не переносятся.
Команды execute
bold, italic, underline, strike, bulletList, orderedList, blockquote, codeBlock, paragraph, h1, h2, h3, undo, redo, insertTable, addRowAfter, addColumnAfter, deleteRow, deleteColumn, toggleHeaderRow, deleteTable. Импорт принимает H1–H6. Link/image/html/markdown/fullscreen — инструменты UI, не все они значения execute.
editor.execute('bold');
const range = editor.getSelection();
await editor.replaceRange(range, '<strong>Новый текст</strong>');
editor.execute('undo');