@blox/material
Version:
Material Components for Angular
38 lines • 5.58 kB
JavaScript
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