@taiga-ui/event-plugins
Version:
This is a library for optimizing performance sensitive events and declarative preventDefault and stopPropagation
32 lines • 4.7 kB
JavaScript
/// <reference types="@taiga-ui/tsconfig/ng-dev-mode" />
/// <reference types="@taiga-ui/tsconfig/ng-dev-mode" />
import { DOCUMENT } from '@angular/common';
import { inject, Injectable, InjectionToken } from '@angular/core';
import { AbstractEventPlugin } from './abstract.plugin';
import * as i0 from "@angular/core";
export const GLOBAL_HANDLER = new InjectionToken(ngDevMode ? '[GLOBAL_HANDLER]: Global event target handler' : '', {
factory: () => {
const document = inject(DOCUMENT);
return (name) => name === 'body'
? document.body
: document.defaultView[name] ||
document.createElement('div');
},
});
class GlobalEventPlugin extends AbstractEventPlugin {
constructor() {
super(...arguments);
this.handler = inject(GLOBAL_HANDLER);
this.modifier = '>';
}
addEventListener(_, event, handler) {
return this.manager.addEventListener(this.handler(event.split('>')[0]), event.split('>')?.[1] ?? '', handler);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GlobalEventPlugin, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GlobalEventPlugin }); }
}
export { GlobalEventPlugin };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GlobalEventPlugin, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLnBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWV2ZW50LXBsdWdpbnMvc3JjL3BsdWdpbnMvZ2xvYmFsLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3REFBd0Q7QUFBeEQsd0RBQXdEO0FBQ3hELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFakUsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7O0FBRXRELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FDNUMsU0FBUyxDQUFDLENBQUMsQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUNoRTtJQUNJLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDVixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFbEMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQ1osSUFBSSxLQUFLLE1BQU07WUFDWCxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDZixDQUFDLENBQUUsUUFBUSxDQUFDLFdBQW1CLENBQUMsSUFBSSxDQUFDO2dCQUNuQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7Q0FDSixDQUNKLENBQUM7QUFFRixNQUNhLGlCQUFrQixTQUFRLG1CQUFtQjtJQUQxRDs7UUFFcUIsWUFBTyxHQUFhLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN6QyxhQUFRLEdBQUcsR0FBRyxDQUFDO0tBU3JDO0lBUFUsZ0JBQWdCLENBQUMsQ0FBYyxFQUFFLEtBQWEsRUFBRSxPQUFpQjtRQUNwRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNqQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUMzQixPQUFPLENBQ1YsQ0FBQztJQUNOLENBQUM7K0dBVlEsaUJBQWlCO21IQUFqQixpQkFBaUI7O1NBQWpCLGlCQUFpQjs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJAdGFpZ2EtdWkvdHNjb25maWcvbmctZGV2LW1vZGVcIiAvPlxuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7aW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7QWJzdHJhY3RFdmVudFBsdWdpbn0gZnJvbSAnLi9hYnN0cmFjdC5wbHVnaW4nO1xuXG5leHBvcnQgY29uc3QgR0xPQkFMX0hBTkRMRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48KG5hbWU6IHN0cmluZykgPT4gRXZlbnRUYXJnZXQ+KFxuICAgIG5nRGV2TW9kZSA/ICdbR0xPQkFMX0hBTkRMRVJdOiBHbG9iYWwgZXZlbnQgdGFyZ2V0IGhhbmRsZXInIDogJycsXG4gICAge1xuICAgICAgICBmYWN0b3J5OiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cbiAgICAgICAgICAgIHJldHVybiAobmFtZSkgPT5cbiAgICAgICAgICAgICAgICBuYW1lID09PSAnYm9keSdcbiAgICAgICAgICAgICAgICAgICAgPyBkb2N1bWVudC5ib2R5XG4gICAgICAgICAgICAgICAgICAgIDogKGRvY3VtZW50LmRlZmF1bHRWaWV3IGFzIGFueSlbbmFtZV0gfHxcbiAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgfSxcbiAgICB9LFxuKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEdsb2JhbEV2ZW50UGx1Z2luIGV4dGVuZHMgQWJzdHJhY3RFdmVudFBsdWdpbiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBoYW5kbGVyOiBGdW5jdGlvbiA9IGluamVjdChHTE9CQUxfSEFORExFUik7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vZGlmaWVyID0gJz4nO1xuXG4gICAgcHVibGljIGFkZEV2ZW50TGlzdGVuZXIoXzogSFRNTEVsZW1lbnQsIGV2ZW50OiBzdHJpbmcsIGhhbmRsZXI6IEZ1bmN0aW9uKTogRnVuY3Rpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICB0aGlzLmhhbmRsZXIoZXZlbnQuc3BsaXQoJz4nKVswXSksXG4gICAgICAgICAgICBldmVudC5zcGxpdCgnPicpPy5bMV0gPz8gJycsXG4gICAgICAgICAgICBoYW5kbGVyLFxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==