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

Interface: SpreadsheetDocumentApi

API для работы с электронными таблицами в редакторе.

Специализированный интерфейс для работы с табличными документами (Excel, Calc). Наследует общий функционал от DocumentApi и предоставляет методы специфично для таблиц.

Позволяет управлять листами, ячейками, работать с формулами, данными и элементами дизайна таблицы.

Remarks

Иерархия интерфейсов:

DocumentApi (базовый интерфейс)
├── TextDocumentApi (текстовые документы)
├── SpreadsheetDocumentApi (таблицы) ← текущий интерфейс
├── PresentationDocumentApi (презентации)
└── PdfDocumentApi (PDF-просмотр)

Наследуемый функционал от DocumentApi:

Example

Определение типа документа и работа с таблицей

const docApi = editorApi.document;

if (docApi.type === 'spreadsheet') {
// TypeScript типизирует docApi как SpreadsheetDocumentApi
// Теперь доступны методы таблиц
...
}

Автоматическая типизация в switch

switch (editorApi.document.type) {
case 'spreadsheet':
// TypeScript автоматически сужает тип до SpreadsheetDocumentApi
...
break;
}

See

  • DocumentApi — базовый интерфейс с общим функционалом
  • TextDocumentApi — для работы с текстовыми документами
  • PresentationDocumentApi — для работы с презентациями

Extends

Methods

blur()

blur(): void

Срабатывает событие потери фокуса (blur) для документа.

Используется для завершения редактирования и применения изменений, когда нужно переместить фокус на другой элемент управления.

Returns

void

void

Remarks

Когда использовать:

  • После завершения редактирования для применения последних изменений
  • Когда нужно закончить редактирование и переместить фокус на кнопку/панель
  • Для скрытия курсора редактирования
  • Для срабатывания событий blur в надстройках, слушающих фокус

Обратите внимание:

  • blur() не сохраняет документ, только применяет форматирование
  • Редактор не потеряет свои данные, фокус вернётся на кнопку/элемент UI

Example

// После редактирования в документе переместить фокус
await editorApi.document.insertContent('Новый текст');
editorApi.document.blur();

// Теперь фокус на кнопке "Сохранить"
document.querySelector('button.save')?.focus();
// Завершить редактирование при клике на кнопку "Готово"
const readyButton: Button = {
id: 'doneBtn',
title: 'Готово',
onClick: () => {
editorApi.document.blur();
console.log('Редактирование завершено');
}
};

See

SelectionApi — для работы с выделением перед blur()

Inherited from

DocumentApi.blur


focus()

focus(): void

Срабатывает событие возобновления перехвата фокуса (focus) для документа.

Используется для возврата к редактированию, когда нужно вернуться к редактированию документа

Returns

void

void

Remarks

Когда использовать:

  • Для возврата к редактированию документа
  • Для срабатывания событий focus в надстройках, слушающих фокус

Example

// После редактирования в документе переместить фокус
await editorApi.document.insertContent('Новый текст');
editorApi.document.blur();

// Теперь фокус на кнопке "Сохранить"
document.querySelector('button.save')?.focus();

// Надо вернуться к редактированию
editorApi.document.focus();

See

SelectionApi — для работы с выделением после вызова focus()

Inherited from

DocumentApi.focus


insertContent()

insertContent(content, contentType?): Promise<void>

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

Если в документе есть выделение, оно будет заменено новым содержимым.

Parameters

content

string

Строка с содержимым для вставки

contentType?

ContentType

Формат содержимого (по умолчанию plain/text)

Returns

Promise<void>

Promise, резолвится после успешной вставки

Remarks

Поддерживаемые форматы:

ФорматОписаниеИспользование
plain/textОбычный текст без форматированияВставка простого текста
htmlHTML-разметка (вставляется в <div/>)Вставка с форматированием

Ограничения:

  • HTML должен быть валидным
  • Некоторые элементы могут не поддерживаться в режиме view
  • Стили могут быть переопределены правилами редактора

Example

Вставка простого текста

await editorApi.document.insertContent('Привет, мир!');

Вставка текста с форматированием (HTML)

await editorApi.document.insertContent(
`<p><b>Важно:</b> <em>Это форматированный текст</em></p>`,
'html'
);

Вставка сложного содержимого со стилями

await editorApi.document.insertContent(
`<div style="background-color: #f0f0f0; padding: 10px; border-radius: 4px;">
<h3 style="color: #234567; margin-top: 0;">Заголовок</h3>
<p>Содержимое с форматированием</p>
</div>`,
'html'
);

See

ContentType — описание всех поддерживаемых форматов

Inherited from

DocumentApi.insertContent


insertImage()

insertImage(file): void

Вставляет изображение в текущую позицию курсора.

Parameters

file

File

Объект File с изображением (png, jpg, gif, svg, и т.д.)

Returns

void

Remarks

Поддерживаемые форматы:

  • PNG (image/png)
  • JPEG (image/jpeg)
  • BMP (image/bmp)
  • GIF (image/gif)
  • SVG (image/svg+xml)

Ограничения:

  • Максимальный размер файла зависит от конфигурации редактора
  • Изображение автоматически масштабируется до размера страницы/ячейки
  • Некоторые форматы могут быть перекодированы

Example

Вставка изображения из File Input

const fileInput = document.querySelector('input[type="file"]');
fileInput.addEventListener('change', (event) => {
const file = event.target.files?.;
if (file?.type.startsWith('image/')) {
editorApi.document.insertImage(file);
}
});

Вставка изображения из Blob (например, скриншот, загруженное изображение)

async function insertImageFromUrl(imageUrl: string) {
const response = await fetch(imageUrl);
const blob = await response.blob();

const filename = imageUrl.split('/').pop() || 'image.png';
const file = new File([blob], filename, { type: blob.type });

editorApi.document.insertImage(file);
}

See

ClipboardApi — если нужно получить изображение из буфера обмена

Inherited from

DocumentApi.insertImage

Properties

clipboard

clipboard: ClipboardApi

API для работы с буфером обмена (копирование, вставка, вырезание).

Позволяет взаимодействовать с системным буфером обмена, получать содержимое, проверять доступность операций.

Remarks

Типичные операции:

  • Копировать: clipboard.copy()
  • Вырезать: clipboard.cut()
  • Вставить: clipboard.paste()

Ограничения:

  • Требует разрешения на доступ к буферу обмена (может быть заблокировано браузером)
  • Может требовать пользовательского разрешения в некоторых браузерах

See

  • ClipboardApi — полное описание методов работы с буфером обмена
  • IframeSandboxConfig — как настроить разрешения iframe

Example

// Скопировать содержимое в буфер обмена
await editorApi.document.clipboard.copy();

// Вставить содержимое из буфера обмена
await editorApi.document.clipboard.paste();

// Вырезать выделение в буфер обмена
await editorApi.document.clipboard.cut();

Inherited from

DocumentApi.clipboard


selection

selection: SelectionApi

API для работы с выделением текста или элементов в документе.

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

Remarks

Типичные операции:

  • Получить текущее выделение: selection.getSelectionAsText()

See

SelectionApi — полное описание методов работы с выделением

Example

// Получить текущее выделение
const selection = await editorApi.document.selection.getSelectionAsText();
console.log('Выделено:', selection);

Inherited from

DocumentApi.selection


type

type: spreadsheet

Тип документа: электронная таблица.

Используется для runtime проверки типа документа.

Remarks

Это свойство переопределяет базовый type из DocumentApi и явно указывает, что это табличный документ.

Значение:

  • Всегда равно 'spreadsheet'
  • Используется для типизации в TypeScript (type guards)
  • Позволяет разными методами работать с разными типами документов

Поддерживаемые форматы таблиц:

  • .xlsx (Excel)
  • .ods (LibreOffice Calc)
  • .csv (при импорте)

Example

if (editorApi.document.type === 'spreadsheet') {
// Здесь editorApi.document гарантированно SpreadsheetDocumentApi
...
}

zoom

zoom: ZoomApi

API управления масштабированием (zoom) документа.

Позволяет устанавливать, получать и контролировать уровень масштаба документа. Может использоваться для оптимизации просмотра под разные размеры экрана.

Remarks

Типичные операции:

  • Получить текущий масштаб: zoom.getZoomLevel()
  • Установить масштаб: zoom.setZoomLevel(150) (процент)

See

ZoomApi — полное описание методов управления масштабом

Example

// Получить текущий масштаб
const zoom = await editorApi.document.zoom.getZoomLevel();
console.log('Масштаб:', zoom + '%');

// Установить масштаб 150%
await editorApi.document.zoom.setZoomLevel(150);

Inherited from

DocumentApi.zoom