API générale
L’API Facade disponible dans Univer dépend du type d’unité actif et des plugins enregistrés. Cette page présente les API communes à une application Univer Bases.
Importation
import { FUniver } from '@univerjs/core/facade'import '@univerjs-pro/bases/facade'import '@univerjs/ui/facade'const univerAPI = FUniver.newAPI(univer)Commandes
La plupart des opérations Univer sont enregistrées dans le système de commandes. Ce chemin d’exécution unifié permet notamment l’annulation, le rétablissement et la collaboration.
Pour plus de détails sur la conception, consultez le système de commandes Univer.
Écoute des commandes
Utilisez Event.BeforeCommandExecute pour exécuter une logique avant une commande et Event.CommandExecuted pour l’exécuter une fois la commande terminée.
const beforeDisposable = univerAPI.addEvent(univerAPI.Event.BeforeCommandExecute, ({ id, params }) => { console.log('Avant la commande :', id, params)})const afterDisposable = univerAPI.addEvent(univerAPI.Event.CommandExecuted, ({ id, params }) => { console.log('Commande exécutée :', id, params)})Pour empêcher l’exécution d’une commande, définissez event.cancel sur true dans un écouteur BeforeCommandExecute.
const disposable = univerAPI.addEvent(univerAPI.Event.BeforeCommandExecute, (event) => { if (event.id === 'base.command.set-base-name') { event.cancel = true }})Les écouteurs renvoient un objet IDisposable. Supprimez-les lorsqu’ils ne sont plus nécessaires.
beforeDisposable.dispose()afterDisposable.dispose()disposable.dispose()Exécution de commandes
Si vous connaissez l’identifiant et les paramètres d’une commande, exécutez-la avec FUniver.executeCommand. Par exemple, cette commande Bases renomme le Base actif :
const base = univerAPI.getActiveBase()if (base) { await univerAPI.executeCommand('base.command.set-base-name', { unitId: base.getId(), name: 'Notes du projet', })}API des événements
Les événements exposés par univerAPI.Event proviennent du noyau Univer et des plugins enregistrés dans l’application. Le noyau fournit les événements partagés de commande et d’unité ; les plugins Bases ajoutent des événements pour les tables, champs, enregistrements, vues et autres modifications de Base. Avant d’utiliser un événement, vérifiez qu’il appartient à un plugin enregistré.
Consultez la référence des événements Facade pour connaître les noms et les types de paramètres disponibles dans la version actuelle.
Utilisez addEvent pour vous abonner, puis supprimez l’objet renvoyé pour vous désabonner :
const disposable = univerAPI.addEvent(univerAPI.Event.CommandExecuted, ({ id }) => { if (id === 'base.command.set-base-name') { console.log('Le nom du Base a changé') }})// Supprimez l’écouteur lorsqu’il n’est plus nécessairedisposable.dispose()Annulation et rétablissement
await univerAPI.undo()await univerAPI.redo()Presse-papiers système
Après l’enregistrement du plugin d’interface Bases, copy et paste agissent sur la sélection et la position du curseur actuelles dans le Base.
await univerAPI.copy()await univerAPI.paste()Le copier-coller repose sur l’API native du presse-papiers du navigateur. Il peut échouer si la page n’a pas le focus, si l’appel ne provient pas d’une action de l’utilisateur ou si l’autorisation d’accès au presse-papiers est indisponible. Consultez la documentation MDN.
Interface utilisateur
Consultez Composants de l’interface Bases pour étendre les menus, la barre d’outils et les autres zones de l’interface Bases.
WebSocket
Pour utiliser les API WebSocket, installez @univerjs/network, enregistrez UniverNetworkPlugin, puis importez son extension Facade.
import { UniverNetworkPlugin } from '@univerjs/network'import '@univerjs/network/facade'univer.registerPlugin(UniverNetworkPlugin)Vous pouvez ensuite vous abonner aux événements du socket, envoyer des messages et fermer la connexion :
const socket = univerAPI.createSocket('wss://example.com/bases')socket.open$.subscribe(() => { socket.send('hello')})socket.message$.subscribe((message) => { console.log('Message WebSocket :', message.data)})socket.error$.subscribe((error) => { console.error('Erreur WebSocket :', error)})socket.close()API des énumérations
Facade expose des énumérations communes par l’intermédiaire de univerAPI.Enum :
console.log(univerAPI.Enum.UniverInstanceType.UNIVER_BASE)console.log(univerAPI.Enum.BaseFieldType.Text)API des méthodes utilitaires
Facade expose les utilitaires partagés par l’intermédiaire de univerAPI.Util :
console.log(univerAPI.Util.tools.isString('Univer Bases')) // trueQue pensez-vous de ce guide ?