Общий API
Набор Facade API в Univer зависит от типа текущего юнита и зарегистрированных плагинов. На этой странице описаны общие API приложения Univer Docs.
Импорт
import { FUniver } from '@univerjs/core/facade'const univerAPI = FUniver.newAPI(univer)Команды
Большинство операций Univer регистрируются в системе команд. Единый путь выполнения поддерживает отмену, повтор действий и совместную работу.
Подробнее об устройстве системы читайте в разделе Система команд Univer.
Прослушивание команд
Используйте Event.BeforeCommandExecute для логики перед выполнением команды и Event.CommandExecuted — после её завершения.
const beforeDisposable = univerAPI.addEvent(univerAPI.Event.BeforeCommandExecute, ({ id, params }) => { console.log('Перед командой:', id, params)})const afterDisposable = univerAPI.addEvent(univerAPI.Event.CommandExecuted, ({ id, params }) => { console.log('Команда выполнена:', id, params)})Чтобы отменить команду, установите event.cancel в true в обработчике BeforeCommandExecute.
const disposable = univerAPI.addEvent(univerAPI.Event.BeforeCommandExecute, (event) => { if (event.id === 'doc.command.set-name') { event.cancel = true }})Обработчики возвращают IDisposable. Освобождайте их, когда они больше не нужны.
beforeDisposable.dispose()afterDisposable.dispose()disposable.dispose()Выполнение команд
Если известны идентификатор команды и её параметры, выполните её через FUniver.executeCommand. Например, следующая команда Docs переименовывает активный документ.
const document = univerAPI.getActiveDocument()if (document) { await univerAPI.executeCommand('doc.command.set-name', { unitId: document.getId(), name: 'Заметки проекта', })}API событий
События в univerAPI.Event предоставляются ядром Univer и плагинами, зарегистрированными в приложении. Ядро предоставляет события команд и жизненного цикла документов, а плагины Docs могут расширять этот набор. Перед использованием события убедитесь, что предоставляющий его плагин зарегистрирован.
Имена событий и типы параметров текущей версии приведены в справочнике Facade Events.
Подпишитесь через addEvent и освободите возвращённый объект, чтобы отменить подписку.
const disposable = univerAPI.addEvent(univerAPI.Event.CommandExecuted, ({ id }) => { if (id === 'doc.command.set-name') { console.log('Имя документа изменено') }})// Удалите обработчик, когда он больше не нуженdisposable.dispose()Отмена и повтор действий
await univerAPI.undo()await univerAPI.redo()Системный буфер обмена
После регистрации плагина интерфейса Docs методы copy и paste работают с текущим выделением и позицией курсора в документе.
await univerAPI.copy()await univerAPI.paste()Копирование и вставка используют нативный Clipboard API браузера. Они могут не сработать, если страница не в фокусе, вызов инициирован не действием пользователя или нет разрешения на доступ к буферу обмена. Подробнее см. в документации MDN.
UI
О расширении меню, панели инструментов и других областей интерфейса читайте в разделе Компоненты интерфейса Docs.
WebSocket
В режиме предустановок доступен univerAPI.createSocket(url). В режиме плагинов установите @univerjs/network, зарегистрируйте UniverNetworkPlugin и импортируйте его Facade-расширение.
import { UniverNetworkPlugin } from '@univerjs/network'import '@univerjs/network/facade'univer.registerPlugin(UniverNetworkPlugin)После этого можно подписываться на события сокета, отправлять сообщения и закрывать соединение.
const socket = univerAPI.createSocket('wss://example.com/docs')socket.open$.subscribe(() => socket.send('hello'))socket.message$.subscribe((message) => console.log('Сообщение WebSocket:', message.data))socket.error$.subscribe((error) => console.error('Ошибка WebSocket:', error))socket.close()API перечислений
Общие перечисления доступны через univerAPI.Enum.
console.log(univerAPI.Enum.UniverInstanceType.UNIVER_DOC)console.log(univerAPI.Enum.LifecycleStages.Rendered)API вспомогательных методов
Общие вспомогательные методы доступны через univerAPI.Util.
console.log(univerAPI.Util.tools.isString('Univer Docs')) // trueНасколько полезно это руководство?