UNPKG

ngx-hotkey

Version:

An easy way to use Hotkeys in Angular.

188 lines (180 loc) 6.87 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core')) : typeof define === 'function' && define.amd ? define('ngx-hotkey', ['exports', '@angular/core'], factory) : (factory((global['ngx-hotkey'] = {}),global.ng.core)); }(this, (function (exports,i0) { 'use strict'; /** * @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: i0.Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ NgxHotkeyService.ctorParameters = function () { return []; }; /** @nocollapse */ NgxHotkeyService.ngInjectableDef = i0.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 */ exports.NgxHotkeyService = NgxHotkeyService; Object.defineProperty(exports, '__esModule', { value: true }); }))); //# sourceMappingURL=ngx-hotkey.umd.js.map