Минимальное расширение
import { PLUGIN_API_VERSION } from '@vitext-ru/editor';
const remove = editor.usePlugin({
id: 'my-format', version: '1.0.0', apiVersion: PLUGIN_API_VERSION,
setup(api) {
api.registerCommand('bold', () => api.execute('bold'));
api.on('change', event => console.log(event.revision));
return () => { /* освободите собственные таймеры */ };
}
});
editor.executePluginCommand('my-format', 'bold');
remove();
Id/команда: буквы/цифры/точка/дефис/подчёркивание, первая буква. Setup синхронный; версия метаданных — непустая строка. Signal отменяется при remove/destroy. Cleanup не должен вызывать отозванный фасад.
Вклады в интерфейс
registerStatusItem(text, severity?) возвращает updater; severity normal/warning. registerToolbarMenu принимает label/caption/items с уже зарегистрированными командами. registerDialog принимает поля text/checkbox, actions и callbacks; handle предоставляет open/close/message. RegisterSpellcheck(language) возвращает setter boolean. Хост освобождает UI автоматически.
Произвольный DOM, расширение схемы и async setup не входят в этот контракт. Изменяйте документ через публичные операции, сохраняя историю и revision. При ошибке установки хост очищает созданные ресурсы. Обзор.