mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
* vendor mousetrap * fix js lint errors * name to .ts - start refactoring to typescript * refactor Mousetrap to valid typescript rename local functions/variables update types of CallbackInfo Specify MouseCallback and cleanup types * Use vendored mousetrap * use vendored mousetrap * add globalBind, and remove dependency on external mousetrap * Update public/app/core/services/keybindingSrv.ts Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com> --------- Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
39 lines
793 B
TypeScript
39 lines
793 B
TypeScript
import { mousetrap } from './mousetrap';
|
|
|
|
export interface KeyBindingItem {
|
|
/** Key or key pattern like mod+o */
|
|
key: string;
|
|
/** Defaults to keydown */
|
|
type?: string;
|
|
/** The handler callback */
|
|
onTrigger: () => void;
|
|
}
|
|
|
|
/**
|
|
* Small util to make it easier to add and unbind Mousetrap keybindings
|
|
*/
|
|
export class KeybindingSet {
|
|
private _binds: KeyBindingItem[] = [];
|
|
|
|
addBinding(item: KeyBindingItem) {
|
|
mousetrap.bind(
|
|
item.key,
|
|
(evt) => {
|
|
evt.preventDefault();
|
|
evt.stopPropagation();
|
|
evt.returnValue = false;
|
|
item.onTrigger();
|
|
},
|
|
'keydown'
|
|
);
|
|
this._binds.push(item);
|
|
}
|
|
|
|
removeAll() {
|
|
this._binds.forEach((item) => {
|
|
mousetrap.unbind(item.key, item.type);
|
|
});
|
|
this._binds = [];
|
|
}
|
|
}
|