Условия подключения
Плагины доступны в pro при features.plugins=true. Передача plugins или usePlugin с выключенной возможностью вызывает ошибку. Это доверенный JavaScript приложения: фасад не является sandbox.
import { ViText, createWordCountPlugin, createTypographyPlugin, createTextCasePlugin } from '@vitext-ru/editor';
const editor = new ViText('#editor', {
preset: 'pro', plugins: [createWordCountPlugin(), createTypographyPlugin()]
});
const remove = editor.usePlugin(createTextCasePlugin());
editor.executePluginCommand('text-case', 'upper');
remove();
IIFE экспортирует те же фабрики как ViText.create….
Контракт
Плагин имеет id, version, apiVersion: 1 и синхронный setup(context). Setup возвращает cleanup или ничего. Async setup не поддерживается; асинхронную работу запускайте из команды с context.signal. Повторный id/команда и несовместимый apiVersion отклоняются.
Контекст предоставляет методы документа, события, registerCommand, registerStatusItem, registerToolbarMenu, registerDialog и registerSpellcheck. DOM оболочки, destroy и приватное ядро не передаются. После remove фасад отзывается, signal отменяется, подписки/команды/UI автоматически удаляются. Cleanup освобождает собственные таймеры и ресурсы.
Готовые расширения
Счётчик слов, индикатор изменений, регистр, типограф, поиск/замена, браузерная орфография и лимит знаков описаны на отдельных страницах. Команды изменения работают в visual; source-режим отключает меню. Удаление расширения не удаляет содержимое документа.