import type { Disposable } from '../common/disposable'; import type { IGraphCommandService } from '../command/interface'; import type { IModelService } from '../model-service/interface'; import { Syringe } from 'mana-syringe'; export declare const IKeyBindingService: unique symbol; export interface IKeyBindingService { registerKeybinding: (keybindings: IKeyBinding[]) => Disposable; } /** 实现这个扩展点来注册更多的keybinding */ export declare const IKeyBindingContribution: Syringe.DefinedToken; /** 扩展keybinding */ export interface IKeyBindingContribution { /** * 注册keybinding * @param registry KeyBindingRegistry. */ registerKeybinding: (registry: IKeyBindingService) => Disposable; } /** keybinding item的 cmdOptions 字段 */ export interface ICmdExecutor { (item: IKeyBinding, modelService: IModelService, cmd: IGraphCommandService, e: KeyboardEvent): Promise; } export interface IKeyBinding { /** keybinding的唯一标识 */ id: string; /** * Unique command identifier of the command to be triggered by this keybinding. */ command?: string; /** * 快捷键 * https://craig.is/killing/mice * https://x6.antv.vision/zh/docs/api/graph/keyboard#bindkey */ keybinding: string | string[]; /** * 执行command时的参数 */ callback: ICmdExecutor; } export interface IKeybindingRegistry { registerKeybinding: (configs: IKeyBinding[]) => Disposable; } export interface IRegisterKeybindingFunction { (registry: IKeybindingRegistry): Disposable; } export interface IKeyBindingOptionProvider { getOption: () => Promise<{ registerKeybindingFunc: IRegisterKeybindingFunction; }>; } export declare const IKeyBindingOptionProvider: unique symbol;