UNPKG

@blox/material

Version:

Material Components for Angular

38 lines 5.58 kB
import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; const unlisteners = new Map(); export class MdcEventRegistry { constructor() { } listen(renderer, type, listener, ref, options) { this.listenElm(renderer, type, listener, ref.nativeElement, options); } listenElm(renderer, type, listener, el, options) { el.addEventListener(type, listener, options); const unlistener = function () { el.removeEventListener(type, listener, options); }; this.registerUnlisten(type, listener, unlistener); } registerUnlisten(type, listener, unlistener) { if (!unlisteners.has(type)) unlisteners.set(type, new WeakMap()); unlisteners.get(type).set(listener, unlistener); } unlisten(type, listener) { if (!unlisteners.has(type)) return; const unlistenerMap = unlisteners.get(type); if (!unlistenerMap.has(listener)) return; unlistenerMap.get(listener)(); unlistenerMap.delete(listener); } } MdcEventRegistry.ɵprov = i0.ɵɵdefineInjectable({ factory: function MdcEventRegistry_Factory() { return new MdcEventRegistry(); }, token: MdcEventRegistry, providedIn: "root" }); MdcEventRegistry.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; MdcEventRegistry.ctorParameters = () => []; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWRjLmV2ZW50LnJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL21kYy5ldmVudC5yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDOztBQUlsRSxNQUFNLFdBQVcsR0FBK0IsSUFBSSxHQUFHLEVBQXlCLENBQUM7QUFLakYsTUFBTSxPQUFPLGdCQUFnQjtJQUN6QixnQkFBZSxDQUFDO0lBRWhCLE1BQU0sQ0FBQyxRQUFtQixFQUFFLElBQVksRUFBRSxRQUFvRCxFQUFFLEdBQWUsRUFBRSxPQUFhO1FBQzFILElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsU0FBUyxDQUFDLFFBQW1CLEVBQUUsSUFBWSxFQUFFLFFBQW9ELEVBQUUsRUFBK0IsRUFBRSxPQUFhO1FBQzdJLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLE1BQU0sVUFBVSxHQUFHO1lBQ2YsRUFBRSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVPLGdCQUFnQixDQUFDLElBQVksRUFBRSxRQUFvRCxFQUFFLFVBQW9CO1FBQzdHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztZQUN0QixXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLE9BQU8sRUFBMkIsQ0FBQyxDQUFDO1FBQ2xFLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVksRUFBRSxRQUFvRDtRQUN2RSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDdEIsT0FBTztRQUNYLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQzdCLE9BQU87UUFDWCxhQUFjLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBRSxFQUFFLENBQUM7UUFDaEMsYUFBYyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQyxDQUFDOzs7O1lBaENKLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTcGVjaWZpY0V2ZW50TGlzdGVuZXIgfSBmcm9tICdAbWF0ZXJpYWwvYmFzZSc7XHJcblxyXG50eXBlIFVubGlzdGVuZXJNYXAgPSBXZWFrTWFwPEV2ZW50TGlzdGVuZXIgfCBTcGVjaWZpY0V2ZW50TGlzdGVuZXI8YW55PiwgRnVuY3Rpb24+O1xyXG5jb25zdCB1bmxpc3RlbmVyczogTWFwPHN0cmluZywgVW5saXN0ZW5lck1hcD4gPSBuZXcgTWFwPHN0cmluZywgVW5saXN0ZW5lck1hcD4oKTtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTWRjRXZlbnRSZWdpc3RyeSB7XHJcbiAgICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gICAgbGlzdGVuKHJlbmRlcmVyOiBSZW5kZXJlcjIsIHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IEV2ZW50TGlzdGVuZXIgfCBTcGVjaWZpY0V2ZW50TGlzdGVuZXI8YW55PiwgcmVmOiBFbGVtZW50UmVmLCBvcHRpb25zPzogYW55KSB7XHJcbiAgICAgICAgdGhpcy5saXN0ZW5FbG0ocmVuZGVyZXIsIHR5cGUsIGxpc3RlbmVyLCByZWYubmF0aXZlRWxlbWVudCwgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgbGlzdGVuRWxtKHJlbmRlcmVyOiBSZW5kZXJlcjIsIHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IEV2ZW50TGlzdGVuZXIgfCBTcGVjaWZpY0V2ZW50TGlzdGVuZXI8YW55PiwgZWw6IEVsZW1lbnQgfCBXaW5kb3cgfCBEb2N1bWVudCwgb3B0aW9ucz86IGFueSkge1xyXG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpO1xyXG4gICAgICAgIGNvbnN0IHVubGlzdGVuZXIgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLnJlZ2lzdGVyVW5saXN0ZW4odHlwZSwgbGlzdGVuZXIsIHVubGlzdGVuZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVnaXN0ZXJVbmxpc3Rlbih0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiBFdmVudExpc3RlbmVyIHwgU3BlY2lmaWNFdmVudExpc3RlbmVyPGFueT4sIHVubGlzdGVuZXI6IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgaWYgKCF1bmxpc3RlbmVycy5oYXModHlwZSkpXHJcbiAgICAgICAgICAgIHVubGlzdGVuZXJzLnNldCh0eXBlLCBuZXcgV2Vha01hcDxFdmVudExpc3RlbmVyLCBGdW5jdGlvbj4oKSk7XHJcbiAgICAgICAgdW5saXN0ZW5lcnMuZ2V0KHR5cGUpIS5zZXQobGlzdGVuZXIsIHVubGlzdGVuZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHVubGlzdGVuKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IEV2ZW50TGlzdGVuZXIgfCBTcGVjaWZpY0V2ZW50TGlzdGVuZXI8YW55Pikge1xyXG4gICAgICAgIGlmICghdW5saXN0ZW5lcnMuaGFzKHR5cGUpKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgY29uc3QgdW5saXN0ZW5lck1hcCA9IHVubGlzdGVuZXJzLmdldCh0eXBlKTtcclxuICAgICAgICBpZiAoIXVubGlzdGVuZXJNYXAhLmhhcyhsaXN0ZW5lcikpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB1bmxpc3RlbmVyTWFwIS5nZXQobGlzdGVuZXIpISgpO1xyXG4gICAgICAgIHVubGlzdGVuZXJNYXAhLmRlbGV0ZShsaXN0ZW5lcik7XHJcbiAgICB9XHJcbn1cclxuIl19