UNPKG

@taiga-ui/event-plugins

Version:

This is a library for optimizing performance sensitive events and declarative preventDefault and stopPropagation

32 lines 4.7 kB
/// <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==