From 27b913fce483787ac950dbd2f47f0bd45b609e27 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Tue, 17 Feb 2026 13:58:23 +0400 Subject: [PATCH] Add callbacks types to keymaps --- packages/core/src/editor/types.ts | 5 +++-- packages/core/src/keymaps/index.ts | 3 +-- packages/core/src/keymaps/types.ts | 15 +++++++++++++++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/packages/core/src/editor/types.ts b/packages/core/src/editor/types.ts index 012cf8402..e04306099 100644 --- a/packages/core/src/editor/types.ts +++ b/packages/core/src/editor/types.ts @@ -7,7 +7,7 @@ import { DataSourceEvent, DataSourcesEventCallback } from '../data_sources/types import { DeviceEvent, DevicesEventCallback } from '../device_manager/types'; import { ComponentEvent } from '../dom_components'; import { I18nEvent, I18nEventCallback } from '../i18n/types'; -import { KeymapEvent } from '../keymaps'; +import { KeymapEvent, KeymapsEventCallback } from '../keymaps/types'; import { ModalEvent } from '../modal_dialog'; import { RichTextEditorEvent } from '../rich_text_editor'; import { SelectorEvent } from '../selector_manager'; @@ -47,7 +47,8 @@ export interface EditorEventCallbacks CommandsEventCallback, DataSourcesEventCallback, DevicesEventCallback, - I18nEventCallback + I18nEventCallback, + KeymapsEventCallback { [key: string]: any[]; } diff --git a/packages/core/src/keymaps/index.ts b/packages/core/src/keymaps/index.ts index 7f35f444a..deb4470ea 100644 --- a/packages/core/src/keymaps/index.ts +++ b/packages/core/src/keymaps/index.ts @@ -41,8 +41,7 @@ import keymaster from '../utils/keymaster'; import { hasWin } from '../utils/mixins'; import defConfig, { Keymap, KeymapOptions, KeymapsConfig } from './config'; import { KeymapsEvents } from './types'; - -export type KeymapEvent = `${KeymapsEvents}`; +export type { KeymapEvent } from './types'; hasWin() && keymaster.init(window); diff --git a/packages/core/src/keymaps/types.ts b/packages/core/src/keymaps/types.ts index 72abec354..0a74fcdb3 100644 --- a/packages/core/src/keymaps/types.ts +++ b/packages/core/src/keymaps/types.ts @@ -1,3 +1,5 @@ +import { Keymap } from './config'; + /**{START_EVENTS}*/ export enum KeymapsEvents { /** @@ -24,5 +26,18 @@ export enum KeymapsEvents { } /**{END_EVENTS}*/ +export type KeymapEvent = + | `${KeymapsEvents.add}` + | `${KeymapsEvents.remove}` + | `${KeymapsEvents.emit}` + | `${KeymapsEvents.emitId}${string}`; + +export interface KeymapsEventCallback { + [KeymapsEvents.add]: [Keymap]; + [KeymapsEvents.remove]: [Keymap]; + [KeymapsEvents.emit]: [Keymap['id'], string, Event]; + [key: `${KeymapsEvents.emitId}${string}`]: [Keymap['id'], string, Event]; +} + // need this to avoid the TS documentation generator to break export default KeymapsEvents;