Interface: EditorApi
Центральный интерфейс для взаимодействия с редактором документов.
EditorApi предоставляет полный доступ ко всем функциям редактора: управление UI, работа с документом, подписка на события и создание обработчиков. Используется в надстройкахх и хост-приложениях.
Remarks
Структура EditorApi:
- EditorApi.ui — управление пользовательским интерфейсом
- EditorApi.document — работа с содержимым документа (тип зависит от документа)
- EditorApi.events — подписка на события редактора
- EditorApi.createCallback — создание обработчиков для событий
Типичные сценарии:
- Добавление кастомных UI-компонентов через ui
- Чтение и изменение документа через document (с типизацией по типу документа)
- Реагирование на события через events
- Создание действий пользователя через createCallback
Example
Базовое использование в надстройке
export default {
onInit: (editorApi: EditorApi) => {
// 1. Добавить UI-элемент
editorApi.ui.ribbon.addTab({
id: 'myPlugin',
title: 'Надстройка'
});
// 2. Подписаться на события
editorApi.events.subscribe('documentChange', (payload) => {
console.log('Документ изменён');
});
// 3. Работать с документом (в зависимости от типа)
if (editorApi.document.type === 'text') {
//функции документа
}
}
}
Определение типа документа на runtime
const docApi = editorApi.document;
if (docApi.type === 'text') {
// TypeScript понимает, что docApi: TextDocumentApi
//функции документа
} else if (docApi.type === 'spreadsheet') {
// TypeScript понимает, что docApi: SpreadsheetDocumentApi
//функции таблиц
}
Создание обработчиков для действий
const myActions = {
copy: editorApi.createCallback(async () => {
const content = await editorApi.document.clipboard.copy();
console.log('Скопировано:', content);
}),
paste: editorApi.createCallback(async () => {
await editorApi.document.clipboard.paste();
})
};
See
- EditorUiApi — для управления интерфейсом (лента, меню, панели)
- TextDocumentApi — для работы с текстовыми документами
- SpreadsheetDocumentApi — для работы с таблицами
- PresentationDocumentApi — для работы с презентациями
- EditorEventsApi — для подписки на события
Methods
createCallback()
createCallback<
Payload>(callback):Callback<Payload>
Создаёт обработчик события (callback) для использования в UI-компонентах.
Используется для регистрации действий, которые должны быть выполнены при клике на кнопку, выборе пункта меню или другом взаимодействии пользователя.
Type Parameters
Payload
Payload = void
Parameters
callback
(arg) => void
Функция-обработчик, получающая payload события
Returns
Callback<Payload>
Объект Callback для использования в UI или регистрации действий
Remarks
Когда использовать:
- Для регистрации действий в UI-элементах (кнопки, пункты меню)
- Для связи UI и бизнес-логики
- Для создания переиспользуемых обработчиков
Generic параметр:
Payload = void— тип данных, которые обработчик получает при вызове- Оставьте
void, если не нужны параметры - Укажите тип для типизированных параметров
Example
Обработчики без параметров
const saveCallback = editorApi.createCallback(() => {
console.log('Пользователь нажал "Сохранить"');
// Выполнить сохранение
});
editorApi.ui.ribbon.addButton({
id: 'saveBtn',
title: 'Сохранить',
onClick: saveCallback
});
Обработчики с параметрами
interface ExportPayload {
format: 'pdf' | 'docx' | 'html';
}
const exportCallback = editorApi.createCallback<ExportPayload>((payload) => {
console.log('Экспорт в формат:', payload.format);
// Выполнить экспорт
});
editorApi.ui.contextMenu.addItem({
id: 'exportPdf',
title: 'Экспортировать в PDF',
onClick: exportCallback,
payload: { format: 'pdf' }
});
See
- Callback — описание интерфейса Callback
- EditorUiApi — как использовать callback в UI-элементах
Properties
document
document:
TextDocumentApi|SpreadsheetDocumentApi|PresentationDocumentApi
API работы с содержимым и структурой открытого документа.
Конкретный интерфейс зависит от типа документа (текст, таблица, презентация).
Используйте свойство type для определения типа на runtime.
Remarks
Поддерживаемые типы документов:
text— текстовые документы (Word .docx) → TextDocumentApispreadsheet— таблицы (Excel .xlsx) → SpreadsheetDocumentApipresentation— презентации (PowerPoint .pptx) → PresentationDocumentApi
Общие операции:
- Получение содержимого документа
- Вставка текста, таблиц, объектов
- Работа с выделением
- Работа с буфером обмена
See
- TextDocumentApi — методы для текстовых документов
- SpreadsheetDocumentApi — методы для таблиц
- PresentationDocumentApi — методы для презентаций
Example
Определение типа документа и работа
const docApi = editorApi.document;
switch (docApi.type) {
case 'text':
//функции документа
break;
case 'spreadsheet':
//функции таблиц
break;
case 'presentation':
//функции презентаций
break;
}
events
events:
EditorEventsApi
API подписки на события редактора и реагирования на них.
Позволяет отслеживать изменения документа, выделения, состояния редактора и реализовывать динамическую логику в ответ на эти события.
Remarks
Основные события:
documentChange— документ был изменёнselectionChange— выделение пользователя изменилосьviewportChange— область просмотра измениласьerror— произошла ошибка в редакторе
See
- EditorEventsApi — полный список методов и событий
- DocumentChangeEventPayload — данные события документа
- SelectionChangeEventPayload — данные события выделения
Example
// Подписаться на изменение документа
const unsubscribe = editorApi.events.subscribe('documentChange', (payload) => {
console.log('Документ изменён:', payload.changeInfo);
});
// Отписаться
unsubscribe();
// Подписаться на ошибки
editorApi.events.subscribe('error', (payload) => {
console.error('Ошибка редактора:', payload.error);
});
ui
ui:
EditorUiApi
API управления пользовательским интерфейсом редактора.
Позволяет регистрировать и управлять кастомными UI-компонентами: лента инструментов, контекстное меню, боковые панели, модальные окна, уведомления.
See
- EditorUiApi — подробное описание всех методов управления UI
- RibbonApi — для работы с лентой инструментов
- ContextMenuApi — для работы с контекстным меню
- SidebarApi — для работы с боковыми панелями
Example
// Добавить вкладку в ленту
editorApi.ui.ribbon.addTab({
id: 'myTab',
title: 'Мои функции'
});
// Добавить пункт в контекстное меню
editorApi.ui.contextMenu.addItems([{
id: 'myAction',
title: 'Выполнить действие'
}]);
// Показать уведомление
editorApi.ui.toasts.showToast({ id, content: 'Операция выполнена' });