UNPKG

ng-keyboard-shortcuts

Version:

Dead Simple Keyboard Shortcuts Management for Angular 2+

40 lines 5.14 kB
import { Injectable, NgZone } from "@angular/core"; import { KeyboardShortcutsService } from './ng-keyboard-shortcuts.service'; import * as i0 from "@angular/core"; import * as i1 from "./ng-keyboard-shortcuts.service"; export class KeyboardShortcutsPlugin { constructor(ngZone, keyboard) { this.ngZone = ngZone; this.keyboard = keyboard; } supports(eventName) { return eventName.split('.').includes('shortcut'); } addEventListener(element, eventName, originalHandler) { const shortcut = eventName .split('.'); const preventDefault = shortcut.includes("prevent"); if (shortcut.length === 0) { throw new Error("please provide a shortcut"); } const [, key, description, label] = shortcut; const id = this.keyboard.add({ key, command(event) { originalHandler(event); }, description, preventDefault, label }); return () => { this.keyboard.remove(id); }; } } KeyboardShortcutsPlugin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: KeyboardShortcutsPlugin, deps: [{ token: i0.NgZone }, { token: i1.KeyboardShortcutsService }], target: i0.ɵɵFactoryTarget.Injectable }); KeyboardShortcutsPlugin.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: KeyboardShortcutsPlugin }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: KeyboardShortcutsPlugin, decorators: [{ type: Injectable }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.KeyboardShortcutsService }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmcta2V5Ym9hcmQtc2hvcnRjdXRzLnBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmcta2V5Ym9hcmQtc2hvcnRjdXRzL3NyYy9saWIvbmcta2V5Ym9hcmQtc2hvcnRjdXRzLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQzs7O0FBS3pFLE1BQU0sT0FBTyx1QkFBdUI7SUFHaEMsWUFBb0IsTUFBYyxFQUFVLFFBQWtDO1FBQTFELFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUEwQjtJQUM5RSxDQUFDO0lBRUQsUUFBUSxDQUFDLFNBQWlCO1FBQ3RCLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDcEQsQ0FBQztJQUVELGdCQUFnQixDQUNaLE9BQU8sRUFDUCxTQUFTLEVBQ1QsZUFBZTtRQUVmLE1BQU0sUUFBUSxHQUFHLFNBQVM7YUFDckIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBRWYsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFHO1lBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztTQUNoRDtRQUNELE1BQU0sQ0FBQyxFQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQzVDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1lBQ3pCLEdBQUc7WUFDSCxPQUFPLENBQUMsS0FBMEI7Z0JBQzlCLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUMxQixDQUFDO1lBQ0QsV0FBVztZQUNYLGNBQWM7WUFDZCxLQUFLO1NBQ1IsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxHQUFHLEVBQUU7WUFDUixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUM7SUFDTixDQUFDOztvSEFuQ1EsdUJBQXVCO3dIQUF2Qix1QkFBdUI7MkZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgTmdab25lfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtFVkVOVF9NQU5BR0VSX1BMVUdJTlMsIEV2ZW50TWFuYWdlcn0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcbmltcG9ydCB7S2V5Ym9hcmRTaG9ydGN1dHNTZXJ2aWNlfSBmcm9tICcuL25nLWtleWJvYXJkLXNob3J0Y3V0cy5zZXJ2aWNlJztcbmltcG9ydCB7U2hvcnRjdXRFdmVudE91dHB1dH0gZnJvbSAnLi9uZy1rZXlib2FyZC1zaG9ydGN1dHMuaW50ZXJmYWNlcyc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEtleWJvYXJkU2hvcnRjdXRzUGx1Z2luIHtcbiAgICBtYW5hZ2VyOiBFdmVudE1hbmFnZXI7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5nWm9uZTogTmdab25lLCBwcml2YXRlIGtleWJvYXJkOiBLZXlib2FyZFNob3J0Y3V0c1NlcnZpY2UpIHtcbiAgICB9XG5cbiAgICBzdXBwb3J0cyhldmVudE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZXZlbnROYW1lLnNwbGl0KCcuJykuaW5jbHVkZXMoJ3Nob3J0Y3V0JylcbiAgICB9XG5cbiAgICBhZGRFdmVudExpc3RlbmVyKFxuICAgICAgICBlbGVtZW50LFxuICAgICAgICBldmVudE5hbWUsXG4gICAgICAgIG9yaWdpbmFsSGFuZGxlclxuICAgICk6IEZ1bmN0aW9uIHtcbiAgICAgICAgY29uc3Qgc2hvcnRjdXQgPSBldmVudE5hbWVcbiAgICAgICAgICAgIC5zcGxpdCgnLicpXG5cbiAgICAgICAgY29uc3QgcHJldmVudERlZmF1bHQgPSBzaG9ydGN1dC5pbmNsdWRlcyhcInByZXZlbnRcIik7XG4gICAgICAgIGlmIChzaG9ydGN1dC5sZW5ndGggPT09IDApICB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJwbGVhc2UgcHJvdmlkZSBhIHNob3J0Y3V0XCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFssa2V5LCBkZXNjcmlwdGlvbiwgbGFiZWxdID0gc2hvcnRjdXQ7XG4gICAgICAgIGNvbnN0IGlkID0gdGhpcy5rZXlib2FyZC5hZGQoe1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgY29tbWFuZChldmVudDogU2hvcnRjdXRFdmVudE91dHB1dCk6IGFueSB7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxIYW5kbGVyKGV2ZW50KVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgcHJldmVudERlZmF1bHQsXG4gICAgICAgICAgICBsYWJlbFxuICAgICAgICB9KVxuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5rZXlib2FyZC5yZW1vdmUoaWQpO1xuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==