Перейти к основному содержимому
Версия: Next

Enumeration: EventId

Перечисление типов событий редактора.

Определяет все события, на которые надстройки могут подписываться для получения уведомлений о различных изменениях в состоянии редактора и документа.

Remarks

Четыре основных типа событий:

  • EditorError — внутренние ошибки редактора
  • DocumentChange — изменения содержимого документа
  • SelectionChange — изменения выделения и курсора
  • ViewportChange — изменения видимой области

Использование:

editorApi.events.subscribe(EventId.DocumentChange, (payload) => {
console.log('Документ изменился:', payload);
});

Enumeration Members

DocumentChange

DocumentChange: "documentChange"

Возникает при любом изменении содержания документа.

Remarks

Включает:

  • Локальные изменения текущего пользователя (печать, удаление, форматирование)
  • Удалённые изменения от других пользователей (в коллаборативных документах)
  • Любые структурные изменения документа

Когда срабатывает:

  • После каждого нажатия клавиши (печати)
  • При удалении текста
  • При вставке/вставке из буфера обмена
  • При изменении форматирования
  • При изменениях от других пользователей

Частота:

  • Может срабатывать часто (на каждое нажатие клавиши в реальном времени)
  • Рекомендуется использовать debounce/throttle для тяжёлых операций

Payload: DocumentChangeEventPayload

Default

'documentChange'

Example

let changeTimeout: NodeJS.Timeout;

editorApi.events.subscribe('documentChange', (payload) => {
clearTimeout(changeTimeout);
changeTimeout = setTimeout(() => {
console.log('Документ изменился, обработка...');
saveDocument();
}, 1000);
});

EditorError

EditorError: "editorError"

Генерируется при возникновении внутренней ошибки в редакторе.

Remarks

Когда срабатывает:

  • Критические ошибки в логике редактора
  • Проблемы при обработке команд
  • Ошибки синхронизации в коллаборативных документах
  • Проблемы с загрузкой/сохранением

Что делать:

  • Логировать ошибки для анализа
  • Информировать пользователя о проблемах
  • Предпринять восстановительные действия

Payload: ErrorEventPayload

Default

'editorError'

SelectionChange

SelectionChange: "selectionChange"

Возникает при каждом изменении состояния выделения текста или перемещения курсора.

Remarks

Что отслеживает:

  • Перемещение курсора (кликом или клавишами)
  • Выделение текста (мышью или Shift+стрелками)
  • Отмена/повторение (Undo/Redo)
  • Изменения от других пользователей (коллаборативные документы)

Когда срабатывает:

  • При клике в документ (новая позиция курсора)
  • При перемещении курсора стрелками
  • При выделении текста мышью
  • При выделении текста клавиатурой (Shift+стрелки)
  • При Undo/Redo операциях
  • При изменениях от других пользователей

Использование:

  • Подсвечивание синтаксиса на основе позиции курсора
  • Обновление инструментов в зависимости от выделения
  • Показ информации о текущей позиции
  • Проверка контекста для валидации

Payload: SelectionChangeEventPayload

Default

'selectionChange'

Example

editorApi.events.subscribe('selectionChange', (payload) => {
const { selection } = payload;
const hasSelection = selection.start !== selection.end;

// Активировать кнопку "Копировать" только если что-то выбрано
editorApi.ui.updateUiNodes([
{
id: 'plugin:button:copy',
disabled: !hasSelection,
}
]);
});

ViewportChange

ViewportChange: "viewportChange"

Сигнализирует о смене видимой части документа.

Remarks

Что отслеживает:

  • Прокрутку документа пользователем (мышь, скролл, клавиши)
  • Изменение масштаба (zoom in/out)
  • Автоматическую прокрутку к курсору
  • Изменение размера окна редактора

Когда срабатывает:

  • При скролле мышью или колесом
  • При нажатии Page Up/Page Down
  • При изменении масштаба
  • При изменении размера окна
  • При навигации к определённой позиции

Использование:

  • Отслеживание видимых элементов (для ленивой загрузки)
  • Обновление миниатюры навигации
  • Контроль видимости панелей/меню
  • Отслеживание просмотра пользователем
  • Синхронизация представлений в разных панелях

Payload: ViewportChangeEventPayload

Default

'viewportChange'

Example

editorApi.events.subscribe('viewportChange', (payload) => {
const { viewport } = payload;
console.log(`Видимая область: от ${viewport.top} до ${viewport.bottom}`);
console.log(`Масштаб: ${viewport.zoom}%`);

// Загрузить только видимые элементы
loadVisibleContent(viewport);
});