@ngx-kit/core
Version:
ngx-kit - core module
125 lines • 7.95 kB
JavaScript
/**
* @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==