API general
La API Facade disponible en Univer depende del tipo de unidad actual y de los complementos registrados. Esta página presenta las API comunes de una aplicación Univer Docs.
Importación
import { FUniver } from '@univerjs/core/facade'const univerAPI = FUniver.newAPI(univer)Comandos
La mayoría de las operaciones de Univer se registran en el sistema de comandos. Esta ruta de ejecución unificada permite funciones como deshacer, rehacer y la colaboración.
Para conocer el diseño con más detalle, consulte el sistema de comandos de Univer.
Escuchar comandos
Use Event.BeforeCommandExecute para ejecutar lógica antes de un comando y Event.CommandExecuted para ejecutarla cuando termine.
const beforeDisposable = univerAPI.addEvent(univerAPI.Event.BeforeCommandExecute, ({ id, params }) => { console.log('Antes del comando:', id, params)})const afterDisposable = univerAPI.addEvent(univerAPI.Event.CommandExecuted, ({ id, params }) => { console.log('Comando ejecutado:', id, params)})Para impedir que se ejecute un comando, establezca event.cancel en true desde un listener de BeforeCommandExecute.
const disposable = univerAPI.addEvent(univerAPI.Event.BeforeCommandExecute, (event) => { if (event.id === 'doc.command.set-name') { event.cancel = true }})Los listeners devuelven un objeto IDisposable. Destrúyalos cuando ya no sean necesarios.
beforeDisposable.dispose()afterDisposable.dispose()disposable.dispose()Ejecutar comandos
Si conoce el ID de un comando y sus parámetros, ejecútelo con FUniver.executeCommand. Por ejemplo, este comando de Docs cambia el nombre del documento activo:
const document = univerAPI.getActiveDocument()if (document) { await univerAPI.executeCommand('doc.command.set-name', { unitId: document.getId(), name: 'Notas del proyecto', })}API de eventos
Los eventos expuestos a través de univerAPI.Event proceden del núcleo de Univer y de los complementos registrados en la aplicación. El núcleo aporta eventos de comandos y del ciclo de vida de los documentos; los complementos de Docs pueden ampliar esa superficie. Antes de usar un evento, compruebe que pertenece a un complemento registrado.
Consulte la referencia de eventos de Facade para ver los nombres y tipos de parámetros disponibles en la versión actual.
Use addEvent para suscribirse y destruya el objeto devuelto para cancelar la suscripción:
const disposable = univerAPI.addEvent(univerAPI.Event.CommandExecuted, ({ id }) => { if (id === 'doc.command.set-name') { console.log('El nombre del documento ha cambiado') }})// Elimine el listener cuando ya no sea necesariodisposable.dispose()Deshacer y rehacer
await univerAPI.undo()await univerAPI.redo()Portapapeles del sistema
Después de registrar el complemento de interfaz de Docs, copy y paste actúan sobre la selección y la posición del cursor actuales del documento.
await univerAPI.copy()await univerAPI.paste()Copiar y pegar dependen de la API nativa del portapapeles del navegador. Pueden fallar si la página no tiene el foco, si la llamada no se inicia mediante una acción del usuario o si no hay permiso para acceder al portapapeles. Consulte la documentación de MDN.
UI
Consulte Componentes de la interfaz de Docs para ampliar los menús, la barra de herramientas y otras zonas de la interfaz de Docs.
WebSocket
Las instalaciones con presets exponen univerAPI.createSocket(url). En modo complemento, instale @univerjs/network, registre UniverNetworkPlugin e importe primero su extensión Facade.
import { UniverNetworkPlugin } from '@univerjs/network'import '@univerjs/network/facade'univer.registerPlugin(UniverNetworkPlugin)Después puede suscribirse a los eventos del socket, enviar mensajes y cerrar la conexión:
const socket = univerAPI.createSocket('wss://example.com/docs')socket.open$.subscribe(() => { socket.send('hello')})socket.message$.subscribe((message) => { console.log('Mensaje WebSocket:', message.data)})socket.error$.subscribe((error) => { console.error('Error de WebSocket:', error)})socket.close()API de enumeración
Facade expone enumeraciones comunes mediante univerAPI.Enum:
console.log(univerAPI.Enum.UniverInstanceType.UNIVER_DOC)console.log(univerAPI.Enum.LifecycleStages.Rendered)API de métodos de utilidad
Facade expone utilidades compartidas mediante univerAPI.Util:
console.log(univerAPI.Util.tools.isString('Univer Docs')) // true¿Cómo es esta guía?