UNPKG

@ngx-kit/core

Version:

ngx-kit - core module

125 lines 7.95 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable } from '@angular/core'; import { KitPlatformService } from '../kit-platform/kit-platform.service'; import * as i0 from "@angular/core"; import * as i1 from "../kit-platform/kit-platform.service"; /** * Service for global events handling. * * ### Example * * Handle `esc` keydown globally: * * ```typescript * import { keyEscape, KitEventManagerService } from '\@ngx-kit/core'; * ... * constructor(private em: KitEventManagerService) { * } * ... * // subscribe * const escUnsub = this.em.listenGlobal('keydown', (event: KeyboardEvent) => { * if (event.keyCode === keyEscape) { * // do the job * } * }, true); * ... * // unsubscribe * escUnsub(); * ``` */ var KitEventManagerService = /** @class */ (function () { function KitEventManagerService(platform) { this.platform = platform; } /** * Listen event on the global root object. * * Reason: native Angular EventManager does not provide event listener with useCapture param. */ /** * Listen event on the global root object. * * Reason: native Angular EventManager does not provide event listener with useCapture param. * @param {?} eventName * @param {?} handler * @param {?=} useCapture * @return {?} */ KitEventManagerService.prototype.listenGlobal = /** * Listen event on the global root object. * * Reason: native Angular EventManager does not provide event listener with useCapture param. * @param {?} eventName * @param {?} handler * @param {?=} useCapture * @return {?} */ function (eventName, handler, useCapture) { if (this.platform.isBrowser()) { window.addEventListener(eventName, (/** @type {?} */ (handler)), useCapture); return (/** * @return {?} */ function () { return window.removeEventListener(eventName, (/** @type {?} */ (handler)), useCapture); }); } else { return (/** * @return {?} */ function () { }); } }; /** * Get array of objects visited by event. */ /** * Get array of objects visited by event. * @param {?} event * @return {?} */ KitEventManagerService.prototype.getEventPath = /** * Get array of objects visited by event. * @param {?} event * @return {?} */ function (event) { if (this.platform.isBrowser()) { /** @type {?} */ var path = []; /** @type {?} */ var node = event.target; while (node && node !== document.body) { path.push(node); node = node['parentNode']; } return path; } else { return []; } }; KitEventManagerService.decorators = [ { type: Injectable, args: [{ providedIn: 'root', },] } ]; /** @nocollapse */ KitEventManagerService.ctorParameters = function () { return [ { type: KitPlatformService } ]; }; /** @nocollapse */ KitEventManagerService.ngInjectableDef = i0.defineInjectable({ factory: function KitEventManagerService_Factory() { return new KitEventManagerService(i0.inject(i1.KitPlatformService)); }, token: KitEventManagerService, providedIn: "root" }); return KitEventManagerService; }()); export { KitEventManagerService }; if (false) { /** * @type {?} * @private */ KitEventManagerService.prototype.platform; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2l0LWV2ZW50LW1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3gta2l0L2NvcmUvIiwic291cmNlcyI6WyJzcmMva2l0LWV2ZW50LW1hbmFnZXIva2l0LWV2ZW50LW1hbmFnZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMEIxRTtJQUlFLGdDQUFvQixRQUE0QjtRQUE1QixhQUFRLEdBQVIsUUFBUSxDQUFvQjtJQUNoRCxDQUFDO0lBRUQ7Ozs7T0FJRzs7Ozs7Ozs7OztJQUNILDZDQUFZOzs7Ozs7Ozs7SUFBWixVQUFhLFNBQWlCLEVBQUUsT0FBaUIsRUFBRSxVQUFvQjtRQUNyRSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDN0IsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxtQkFBQSxPQUFPLEVBQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztZQUMvRDs7O1lBQU8sY0FBTSxPQUFBLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsbUJBQUEsT0FBTyxFQUFPLEVBQUUsVUFBVSxDQUFDLEVBQWpFLENBQWlFLEVBQUM7U0FDaEY7YUFBTTtZQUNMOzs7WUFBTztZQUNQLENBQUMsRUFBQztTQUNIO0lBQ0gsQ0FBQztJQUVEOztPQUVHOzs7Ozs7SUFDSCw2Q0FBWTs7Ozs7SUFBWixVQUFhLEtBQVk7UUFDdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxFQUFFOztnQkFDdkIsSUFBSSxHQUFHLEVBQUU7O2dCQUNYLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTTtZQUN2QixPQUFPLElBQUksSUFBSSxJQUFJLEtBQUssUUFBUSxDQUFDLElBQUksRUFBRTtnQkFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEIsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUMzQjtZQUNELE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFBTTtZQUNMLE9BQU8sRUFBRSxDQUFDO1NBQ1g7SUFDSCxDQUFDOztnQkFyQ0YsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7OztnQkE1QlEsa0JBQWtCOzs7aUNBRDNCO0NBaUVDLEFBdENELElBc0NDO1NBbkNZLHNCQUFzQjs7Ozs7O0lBQ3JCLDBDQUFvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgS2l0UGxhdGZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4va2l0LXBsYXRmb3JtL2tpdC1wbGF0Zm9ybS5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBTZXJ2aWNlIGZvciBnbG9iYWwgZXZlbnRzIGhhbmRsaW5nLlxyXG4gKlxyXG4gKiAjIyMgRXhhbXBsZVxyXG4gKlxyXG4gKiBIYW5kbGUgYGVzY2Aga2V5ZG93biBnbG9iYWxseTpcclxuICpcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBpbXBvcnQgeyBrZXlFc2NhcGUsIEtpdEV2ZW50TWFuYWdlclNlcnZpY2UgfSBmcm9tICdAbmd4LWtpdC9jb3JlJztcclxuICogLi4uXHJcbiAqIGNvbnN0cnVjdG9yKHByaXZhdGUgZW06IEtpdEV2ZW50TWFuYWdlclNlcnZpY2UpIHtcclxuICogfVxyXG4gKiAuLi5cclxuICogLy8gc3Vic2NyaWJlXHJcbiAqIGNvbnN0IGVzY1Vuc3ViID0gdGhpcy5lbS5saXN0ZW5HbG9iYWwoJ2tleWRvd24nLCAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcclxuICogICBpZiAoZXZlbnQua2V5Q29kZSA9PT0ga2V5RXNjYXBlKSB7XHJcbiAqICAgICAvLyBkbyB0aGUgam9iXHJcbiAqICAgfVxyXG4gKiB9LCB0cnVlKTtcclxuICogLi4uXHJcbiAqIC8vIHVuc3Vic2NyaWJlXHJcbiAqIGVzY1Vuc3ViKCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEtpdEV2ZW50TWFuYWdlclNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGxhdGZvcm06IEtpdFBsYXRmb3JtU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTGlzdGVuIGV2ZW50IG9uIHRoZSBnbG9iYWwgcm9vdCBvYmplY3QuXHJcbiAgICpcclxuICAgKiBSZWFzb246IG5hdGl2ZSBBbmd1bGFyIEV2ZW50TWFuYWdlciBkb2VzIG5vdCBwcm92aWRlIGV2ZW50IGxpc3RlbmVyIHdpdGggdXNlQ2FwdHVyZSBwYXJhbS5cclxuICAgKi9cclxuICBsaXN0ZW5HbG9iYWwoZXZlbnROYW1lOiBzdHJpbmcsIGhhbmRsZXI6IEZ1bmN0aW9uLCB1c2VDYXB0dXJlPzogYm9vbGVhbik6IEZ1bmN0aW9uIHtcclxuICAgIGlmICh0aGlzLnBsYXRmb3JtLmlzQnJvd3NlcigpKSB7XHJcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgaGFuZGxlciBhcyBhbnksIHVzZUNhcHR1cmUpO1xyXG4gICAgICByZXR1cm4gKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBoYW5kbGVyIGFzIGFueSwgdXNlQ2FwdHVyZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGFycmF5IG9mIG9iamVjdHMgdmlzaXRlZCBieSBldmVudC5cclxuICAgKi9cclxuICBnZXRFdmVudFBhdGgoZXZlbnQ6IEV2ZW50KTogRXZlbnRUYXJnZXRbXSB7XHJcbiAgICBpZiAodGhpcy5wbGF0Zm9ybS5pc0Jyb3dzZXIoKSkge1xyXG4gICAgICBjb25zdCBwYXRoID0gW107XHJcbiAgICAgIGxldCBub2RlID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgICB3aGlsZSAobm9kZSAmJiBub2RlICE9PSBkb2N1bWVudC5ib2R5KSB7XHJcbiAgICAgICAgcGF0aC5wdXNoKG5vZGUpO1xyXG4gICAgICAgIG5vZGUgPSBub2RlWydwYXJlbnROb2RlJ107XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHBhdGg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==