# Общий API

- Human documentation: [https://docs.univer.ai/ru-RU/guides/slides/features/core/general-api](https://docs.univer.ai/ru-RU/guides/slides/features/core/general-api)

- Agent Markdown: [https://docs.univer.ai/ru-RU/guides/slides/features/core/general-api.md](https://docs.univer.ai/ru-RU/guides/slides/features/core/general-api.md)

- Requested language: `ru-RU`

- Content language: `ru-RU`

- Documentation version: `1.2.0`

- Source: [slides/features/core/general-api.ru-RU.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/slides/features/core/general-api.ru-RU.mdx)

---

Корневой Facade API объединяет общий рантайм Univer с плагинами Slides, зарегистрированными в приложении. На этой странице описаны команды, события, история и жизненный цикл Unit без предположения, что читатель знаком с другим типом документов Univer. Объекты презентации описаны в разделе [API Univer Slides](https://docs.univer.ai/ru-RU/guides/slides/features/core/slides-api.md).

## Создание объекта API

Создайте обёртку `FUniver` после регистрации экземпляра Univer и необходимых плагинов:

```ts
import { FUniver } from '@univerjs/core/facade'

const univerAPI = FUniver.newAPI(univer)
```

Импортированные до этого вызова Facade-модули добавляют методы Slides в тот же объект.

## Команды

`executeCommand()` асинхронно выполняет зарегистрированную команду. Используйте `syncExecuteCommand()` только для команд, которые явно поддерживают синхронное выполнение. Для обычных операций Slides предпочтительны методы Facade.

## События

```ts
const commandLog = univerAPI.addEvent(
  univerAPI.Event.CommandExecuted,
  ({ id }) => console.log('Executed:', id)
)

// Удалите слушатель, когда он больше не нужен.
commandLog.dispose()
```

Событие `BeforeCommandExecute` позволяет проверить или отменить команду. `LifeCycleChanged` сообщает о достижении редактором этапов `Rendered`, `Steady` и других.

## Отмена и повтор

Отмена и повтор действуют на текущий Unit Univer в фокусе и возвращают Promise:

```ts
await univerAPI.undo()
await univerAPI.redo()
```

Изменения Slides Facade проходят через командный конвейер, поэтому поддерживаемые операции входят в ту же историю.

## Системный буфер обмена

После регистрации `UniverSlidesUIPlugin`, когда фокус находится на холсте Slides, `copy()` копирует выделение, а `paste()` вставляет содержимое буфера обмена через команды UI Slides.

```ts
import '@univerjs/ui/facade'

await univerAPI.copy()
await univerAPI.paste()
```

Контекстное меню холста поддерживает обычную вставку, вставку как текста и как изображения. Текстовый режим создаёт редактируемое текстовое поле. Режим изображения использует файлы изображений или изображения из HTML буфера обмена; он не превращает произвольное содержимое в картинку.

При редактировании текста в фигуре или таблице доступны **Сохранить исходное форматирование**, **Использовать форматирование назначения**, **Сохранить только текст**, а также меню форматирования после вставки.

Требуются фокус в браузерном редакторе и разрешения буфера обмена; в Node.js без UI эти операции недоступны. Если чтение буфера заблокировано, используйте системное сочетание клавиш для вставки.

## UI

Facade UI умеет показывать сообщения, открывать диалоги и боковые панели, регистрировать компоненты и управлять встроенными областями:

```ts
univerAPI
  .showMessage({ content: 'Presentation saved', type: 'success' })
  .setUIVisible(univerAPI.Enum.BuiltInUIPart.TOOLBAR, true)
```

Эти методы требуют `UniverUIPlugin`, а элементы редактирования Slides — также `UniverSlidesUIPlugin`.

## WebSocket

WebSocket — необязательная возможность Network Facade:

```ts
import { UniverNetworkPlugin } from '@univerjs/network'

import '@univerjs/network/facade'

univer.registerPlugin(UniverNetworkPlugin)

const socket = univerAPI.createSocket('wss://example.com/slides')
socket.open$.subscribe(() => socket.send('ready'))
```

Протокол, аутентификация, переподключение и конфликты остаются ответственностью приложения.

## Перечисления

`univerAPI.Enum` содержит общие перечисления и перечисления Slides:

```ts
const lifecycle = univerAPI.Enum.LifecycleStages.Steady
const transition = univerAPI.Enum.SlideTransitionTypeEnum.Fade
const elementType = univerAPI.Enum.SlidePageElementTypeEnum.Shape
```

## Утилиты

`univerAPI.Util` предоставляет общие средства форматирования чисел, операций с прямоугольниками и другие инструменты:

```ts
const payload = univerAPI.Util.tools.deepClone({
  slideId: 'slide-1',
  selectedElementIds: ['element-1'],
})
```
