# API general

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

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

- Requested language: `es-ES`

- Content language: `es-ES`

- Documentation version: `1.2.0`

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

---

La Facade API raíz combina el entorno común de Univer con los plugins de Slides registrados por esta aplicación. Esta página presenta comandos, eventos, historial y ciclo de vida de unidades sin asumir experiencia con otro tipo de documento de Univer. Para los objetos de presentación, continúe con [API de Univer Slides](https://docs.univer.ai/es-ES/guides/slides/features/core/slides-api.md).

## Crear el objeto API

Cree un contenedor `FUniver` después de registrar la instancia de Univer y los plugins necesarios:

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

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

Las entradas Facade importadas antes de esta llamada amplían el mismo objeto con métodos de Slides.

## Comandos

`executeCommand()` ejecuta de forma asíncrona un comando registrado. Use `syncExecuteCommand()` solo cuando el comando admita explícitamente ejecución síncrona. Para las operaciones habituales de Slides, prefiera los métodos Facade.

## Eventos

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

// Elimine el listener cuando ya no sea necesario.
commandLog.dispose()
```

Use `BeforeCommandExecute` para inspeccionar o cancelar un comando. `LifeCycleChanged` informa cuando el editor alcanza etapas como `Rendered` y `Steady`.

## Deshacer y rehacer

Deshacer y rehacer actúan sobre la unidad de Univer que tiene el foco y devuelven promesas:

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

Las mutaciones de Slides Facade usan la canalización de comandos, por lo que los cambios compatibles participan en el mismo historial.

## Portapapeles del sistema

Con `UniverSlidesUIPlugin` registrado y el foco en el lienzo de Slides, `copy()` copia la selección actual y `paste()` inserta el contenido del portapapeles mediante los comandos UI de Slides.

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

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

El menú contextual del lienzo ofrece pegado normal, como texto y como imagen. El modo texto crea un cuadro de texto editable. El modo imagen usa archivos de imagen o recursos de imagen del HTML del portapapeles; no convierte cualquier contenido en una imagen.

Al editar texto de formas o tablas, el editor ofrece **Mantener formato de origen**, **Adaptar al formato de destino** y **Mantener solo texto**, además del menú de formato después de pegar.

Estas operaciones requieren foco en el editor del navegador y permisos del portapapeles; no están disponibles en un entorno Node.js solo de modelo. Si se bloquea la lectura, use el atajo de pegado del sistema.

## UI

La Facade UI puede mostrar mensajes, abrir diálogos o barras laterales, registrar componentes y controlar zonas integradas:

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

Estos métodos requieren `UniverUIPlugin`; los controles de edición de Slides también requieren `UniverSlidesUIPlugin`.

## WebSocket

WebSocket es una capacidad opcional de 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'))
```

El protocolo, la autenticación, la reconexión y los conflictos siguen siendo responsabilidad de la aplicación anfitriona.

## Enumeraciones

`univerAPI.Enum` reúne las enumeraciones comunes y las añadidas por Slides:

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

## Utilidades

`univerAPI.Util` expone ayudas compartidas como el formato numérico, las operaciones con rectángulos y las herramientas comunes:

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