UNPKG

@keybindy/react

Version:

Keybindy for React: Simple, scoped keyboard shortcuts that require little setup. designed to smoothly blend in with your React applications, allowing for robust keybinding functionality without the overhead.

73 lines (72 loc) • 2.37 kB
import ShortcutManager from '@keybindy/core'; import type { Keys, Shortcut, ShortcutHandler, ShortcutOptions } from '@keybindy/core'; /** * React hook to manage keyboard shortcuts using a shared instance of `ShortcutManager`. * Automatically cleans up shortcuts registered by the component on unmount. * * @param {Object} config - Configuration object. * @param {boolean} [config.logs=false] - Whether to enable debug logs in the console. * * @returns {Object} Object containing shortcut management methods. * * @example * const { * register, * setScope, * getCheatSheet, * } = useKeybindy({ logs: true }); * * useEffect(() => { * register(['ctrl', 's'], () => save(), { * scope: 'editor', * data: { description: 'Save document' } * }); * setScope('editor'); * }, []); */ export declare function useKeybindy({ logs, onShortcutFired, }?: { logs?: boolean; onShortcutFired?: (info: Shortcut) => void; }): { register: (keys: Keys[] | Keys[][], handler: ShortcutHandler, options?: ShortcutOptions) => void; unregister: (keys: Keys[], scope?: string) => void; enable: (keys: Keys[], scope?: string) => void; disable: (keys: Keys[], scope?: string) => void; toggle: (keys: Keys[], scope?: string) => void; setScope: (scope: string) => void; getCheatSheet: (scope?: string) => { keys: string[]; }[] | undefined; destroy: () => void; getScopeInfo: (scope?: string) => { shortcuts: { keys: string[]; id: string; enabled: boolean; data?: Record<string, string>; }[]; isActive?: boolean; } | Record<string, { shortcuts: { keys: string[]; id: string; enabled: boolean; data?: Record<string, string>; }[]; isActive?: boolean; }> | undefined; getActiveScope: () => string | undefined; popScope: () => void; pushScope: (scope: string) => void; resetScope: () => void; getScopes: () => string[] | undefined; isScopeActive: (scope: string) => boolean | undefined; onTyping: (callback: (payload: { key: string; event: KeyboardEvent; }) => void) => void; enableAll: (scope?: string) => void; clear: () => void; disableAll: (scope?: string) => void; manager: ShortcutManager; };