UNPKG

ngx-hotkey

Version:

An easy way to use Hotkeys in Angular.

181 lines (175 loc) 5.66 kB
import { Injectable, defineInjectable } from '@angular/core'; /** * @fileoverview added by tsickle * Generated from: lib/hotkey.model.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var Hotkey = /** @class */ (function () { function Hotkey(shortcut, callback) { this.shortcut = shortcut; this.callback = callback; this.altKey = false; this.ctrlKey = false; this.metaKey = false; this.shiftKey = false; this.aliases = { 'ctrl': 'control' }; /** @type {?} */ var shortcutFormatted = shortcut.replace(/ /g, '').toLowerCase(); /** @type {?} */ var shortcutSplit = shortcutFormatted.split('+'); for (var i = 0; i < shortcutSplit.length; i++) { /** @type {?} */ var item = shortcutSplit[i]; item = this.aliases[item] || item; if (i === shortcutSplit.length - 1) { this.key = item; continue; } switch (item) { case 'shift': this.shiftKey = true; break; case 'control': this.ctrlKey = true; break; case 'alt': this.altKey = true; break; case 'meta': this.metaKey = true; break; default: console.error("They shortcut '" + shortcut + "' is not valid!"); } } } return Hotkey; }()); /** * @fileoverview added by tsickle * Generated from: lib/ngx-hotkey.service.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var NgxHotkeyService = /** @class */ (function () { function NgxHotkeyService() { this.hotkeys = []; document.addEventListener('keydown', this.checkKeyDown.bind(this), false); document.addEventListener('keyup', this.onKeyUp.bind(this), false); } /** * @param {?} shortcut * @param {?} callback * @return {?} */ NgxHotkeyService.prototype.add = /** * @param {?} shortcut * @param {?} callback * @return {?} */ function (shortcut, callback) { this.hotkeys.push(new Hotkey(shortcut, callback)); }; /** * @param {?} shortcut * @return {?} */ NgxHotkeyService.prototype.remove = /** * @param {?} shortcut * @return {?} */ function (shortcut) { this.hotkeys = this.hotkeys.filter((/** * @param {?} x * @return {?} */ function (x) { return x.shortcut !== shortcut; })); }; /** * @private * @param {?} event * @return {?} */ NgxHotkeyService.prototype.checkKeyDown = /** * @private * @param {?} event * @return {?} */ function (event) { for (var i = 0; i < this.hotkeys.length; i++) { /** @type {?} */ var hotkey = this.hotkeys[i]; if (this.checkHotKey(event, hotkey) && !this.isTheSameLastHotkeyFired(hotkey)) { this.lastHotkeyFired = hotkey; return hotkey.callback(event); } } return false; }; /** * @private * @return {?} */ NgxHotkeyService.prototype.onKeyUp = /** * @private * @return {?} */ function () { this.lastHotkeyFired = null; return false; }; /** * @private * @param {?} event * @param {?} hotkey * @return {?} */ NgxHotkeyService.prototype.checkHotKey = /** * @private * @param {?} event * @param {?} hotkey * @return {?} */ function (event, hotkey) { return event.altKey === hotkey.altKey && event.ctrlKey === hotkey.ctrlKey && event.metaKey === hotkey.metaKey && event.shiftKey === hotkey.shiftKey && event.key.toLowerCase() === hotkey.key; }; /** * @private * @param {?} hotkey * @return {?} */ NgxHotkeyService.prototype.isTheSameLastHotkeyFired = /** * @private * @param {?} hotkey * @return {?} */ function (hotkey) { return hotkey === this.lastHotkeyFired; }; NgxHotkeyService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ NgxHotkeyService.ctorParameters = function () { return []; }; /** @nocollapse */ NgxHotkeyService.ngInjectableDef = defineInjectable({ factory: function NgxHotkeyService_Factory() { return new NgxHotkeyService(); }, token: NgxHotkeyService, providedIn: "root" }); return NgxHotkeyService; }()); /** * @fileoverview added by tsickle * Generated from: public-api.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * Generated from: ngx-hotkey.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ export { NgxHotkeyService }; //# sourceMappingURL=ngx-hotkey.js.map