ag-grid-angular
Version:
AG Grid Angular Component
60 lines • 8.89 kB
JavaScript
export class AngularFrameworkEventListenerService {
constructor(frameworkOverrides) {
this.frameworkOverrides = frameworkOverrides;
// Map from user listener to wrapped listener so we can remove listener provided by user
this.wrappedListeners = new Map();
this.wrappedGlobalListeners = new Map();
}
wrap(eventType, userListener) {
const { frameworkOverrides, wrappedListeners } = this;
let listener = userListener;
if (frameworkOverrides.shouldWrapOutgoing) {
listener = (event) => {
frameworkOverrides.wrapOutgoing(() => userListener(event));
};
let eventListeners = wrappedListeners.get(eventType);
if (!eventListeners) {
eventListeners = new Map();
wrappedListeners.set(eventType, eventListeners);
}
eventListeners.set(userListener, listener);
}
return listener;
}
wrapGlobal(userListener) {
const { frameworkOverrides, wrappedGlobalListeners } = this;
let listener = userListener;
if (frameworkOverrides.shouldWrapOutgoing) {
listener = (eventType, event) => {
frameworkOverrides.wrapOutgoing(() => userListener(eventType, event));
};
wrappedGlobalListeners.set(userListener, listener);
}
return listener;
}
unwrap(eventType, userListener) {
const { wrappedListeners } = this;
const eventListeners = wrappedListeners.get(eventType);
if (eventListeners) {
const wrapped = eventListeners.get(userListener);
if (wrapped) {
eventListeners.delete(userListener);
if (eventListeners.size === 0) {
wrappedListeners.delete(eventType);
}
return wrapped;
}
}
return userListener;
}
unwrapGlobal(userListener) {
const { wrappedGlobalListeners } = this;
const wrapped = wrappedGlobalListeners.get(userListener);
if (wrapped) {
wrappedGlobalListeners.delete(userListener);
return wrapped;
}
return userListener;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhckZyYW1ld29ya0V2ZW50TGlzdGVuZXJTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYWctZ3JpZC1hbmd1bGFyL3NyYy9saWIvYW5ndWxhckZyYW1ld29ya0V2ZW50TGlzdGVuZXJTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sT0FBTyxvQ0FBb0M7SUFRN0MsWUFBb0Isa0JBQTZDO1FBQTdDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBMkI7UUFKakUsd0ZBQXdGO1FBQ2hGLHFCQUFnQixHQUE4RCxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3hGLDJCQUFzQixHQUFvRCxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRXhCLENBQUM7SUFFOUQsSUFBSSxDQUFDLFNBQTBCLEVBQUUsWUFBNEI7UUFDaEUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3RELElBQUksUUFBUSxHQUFRLFlBQVksQ0FBQztRQUVqQyxJQUFJLGtCQUFrQixDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDeEMsUUFBUSxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUU7Z0JBQ3RCLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMvRCxDQUFDLENBQUM7WUFFRixJQUFJLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNsQixjQUFjLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDM0IsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUNwRCxDQUFDO1lBQ0QsY0FBYyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFFTSxVQUFVLENBQUMsWUFBa0M7UUFDaEQsTUFBTSxFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQzVELElBQUksUUFBUSxHQUFRLFlBQVksQ0FBQztRQUVqQyxJQUFJLGtCQUFrQixDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDeEMsUUFBUSxHQUFHLENBQUMsU0FBYyxFQUFFLEtBQVUsRUFBRSxFQUFFO2dCQUN0QyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzFFLENBQUMsQ0FBQztZQUNGLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFFTSxNQUFNLENBQUMsU0FBMEIsRUFBRSxZQUE0QjtRQUNsRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDbEMsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZELElBQUksY0FBYyxFQUFFLENBQUM7WUFDakIsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNqRCxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNWLGNBQWMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ3BDLElBQUksY0FBYyxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDNUIsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN2QyxDQUFDO2dCQUNELE9BQU8sT0FBTyxDQUFDO1lBQ25CLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztJQUNNLFlBQVksQ0FBQyxZQUFrQztRQUNsRCxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDeEMsTUFBTSxPQUFPLEdBQUcsc0JBQXNCLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3pELElBQUksT0FBTyxFQUFFLENBQUM7WUFDVixzQkFBc0IsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDNUMsT0FBTyxPQUFPLENBQUM7UUFDbkIsQ0FBQztRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQW5ndWxhckZyYW1ld29ya092ZXJyaWRlcyB9IGZyb20gJy4vYW5ndWxhckZyYW1ld29ya092ZXJyaWRlcyc7XG5cbnR5cGUgRXZlbnRUeXBlVG9XcmFwID0gc3RyaW5nO1xuXG5leHBvcnQgY2xhc3MgQW5ndWxhckZyYW1ld29ya0V2ZW50TGlzdGVuZXJTZXJ2aWNlPFxuICAgIFRFdmVudExpc3RlbmVyIGV4dGVuZHMgKGU6IGFueSkgPT4gdm9pZCxcbiAgICBUR2xvYmFsRXZlbnRMaXN0ZW5lciBleHRlbmRzIChuYW1lOiBzdHJpbmcsIGU6IGFueSkgPT4gdm9pZCxcbj4ge1xuICAgIC8vIE1hcCBmcm9tIHVzZXIgbGlzdGVuZXIgdG8gd3JhcHBlZCBsaXN0ZW5lciBzbyB3ZSBjYW4gcmVtb3ZlIGxpc3RlbmVyIHByb3ZpZGVkIGJ5IHVzZXJcbiAgICBwcml2YXRlIHdyYXBwZWRMaXN0ZW5lcnM6IE1hcDxFdmVudFR5cGVUb1dyYXAsIE1hcDxURXZlbnRMaXN0ZW5lciwgVEV2ZW50TGlzdGVuZXI+PiA9IG5ldyBNYXAoKTtcbiAgICBwcml2YXRlIHdyYXBwZWRHbG9iYWxMaXN0ZW5lcnM6IE1hcDxUR2xvYmFsRXZlbnRMaXN0ZW5lciwgVEdsb2JhbEV2ZW50TGlzdGVuZXI+ID0gbmV3IE1hcCgpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBmcmFtZXdvcmtPdmVycmlkZXM6IEFuZ3VsYXJGcmFtZXdvcmtPdmVycmlkZXMpIHt9XG5cbiAgICBwdWJsaWMgd3JhcChldmVudFR5cGU6IEV2ZW50VHlwZVRvV3JhcCwgdXNlckxpc3RlbmVyOiBURXZlbnRMaXN0ZW5lcik6IFRFdmVudExpc3RlbmVyIHtcbiAgICAgICAgY29uc3QgeyBmcmFtZXdvcmtPdmVycmlkZXMsIHdyYXBwZWRMaXN0ZW5lcnMgfSA9IHRoaXM7XG4gICAgICAgIGxldCBsaXN0ZW5lcjogYW55ID0gdXNlckxpc3RlbmVyO1xuXG4gICAgICAgIGlmIChmcmFtZXdvcmtPdmVycmlkZXMuc2hvdWxkV3JhcE91dGdvaW5nKSB7XG4gICAgICAgICAgICBsaXN0ZW5lciA9IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgZnJhbWV3b3JrT3ZlcnJpZGVzLndyYXBPdXRnb2luZygoKSA9PiB1c2VyTGlzdGVuZXIoZXZlbnQpKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGxldCBldmVudExpc3RlbmVycyA9IHdyYXBwZWRMaXN0ZW5lcnMuZ2V0KGV2ZW50VHlwZSk7XG4gICAgICAgICAgICBpZiAoIWV2ZW50TGlzdGVuZXJzKSB7XG4gICAgICAgICAgICAgICAgZXZlbnRMaXN0ZW5lcnMgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICAgICAgd3JhcHBlZExpc3RlbmVycy5zZXQoZXZlbnRUeXBlLCBldmVudExpc3RlbmVycyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBldmVudExpc3RlbmVycy5zZXQodXNlckxpc3RlbmVyLCBsaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxpc3RlbmVyO1xuICAgIH1cblxuICAgIHB1YmxpYyB3cmFwR2xvYmFsKHVzZXJMaXN0ZW5lcjogVEdsb2JhbEV2ZW50TGlzdGVuZXIpOiBUR2xvYmFsRXZlbnRMaXN0ZW5lciB7XG4gICAgICAgIGNvbnN0IHsgZnJhbWV3b3JrT3ZlcnJpZGVzLCB3cmFwcGVkR2xvYmFsTGlzdGVuZXJzIH0gPSB0aGlzO1xuICAgICAgICBsZXQgbGlzdGVuZXI6IGFueSA9IHVzZXJMaXN0ZW5lcjtcblxuICAgICAgICBpZiAoZnJhbWV3b3JrT3ZlcnJpZGVzLnNob3VsZFdyYXBPdXRnb2luZykge1xuICAgICAgICAgICAgbGlzdGVuZXIgPSAoZXZlbnRUeXBlOiBhbnksIGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBmcmFtZXdvcmtPdmVycmlkZXMud3JhcE91dGdvaW5nKCgpID0+IHVzZXJMaXN0ZW5lcihldmVudFR5cGUsIGV2ZW50KSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgd3JhcHBlZEdsb2JhbExpc3RlbmVycy5zZXQodXNlckxpc3RlbmVyLCBsaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxpc3RlbmVyO1xuICAgIH1cblxuICAgIHB1YmxpYyB1bndyYXAoZXZlbnRUeXBlOiBFdmVudFR5cGVUb1dyYXAsIHVzZXJMaXN0ZW5lcjogVEV2ZW50TGlzdGVuZXIpOiBURXZlbnRMaXN0ZW5lciB7XG4gICAgICAgIGNvbnN0IHsgd3JhcHBlZExpc3RlbmVycyB9ID0gdGhpcztcbiAgICAgICAgY29uc3QgZXZlbnRMaXN0ZW5lcnMgPSB3cmFwcGVkTGlzdGVuZXJzLmdldChldmVudFR5cGUpO1xuICAgICAgICBpZiAoZXZlbnRMaXN0ZW5lcnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHdyYXBwZWQgPSBldmVudExpc3RlbmVycy5nZXQodXNlckxpc3RlbmVyKTtcbiAgICAgICAgICAgIGlmICh3cmFwcGVkKSB7XG4gICAgICAgICAgICAgICAgZXZlbnRMaXN0ZW5lcnMuZGVsZXRlKHVzZXJMaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50TGlzdGVuZXJzLnNpemUgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgd3JhcHBlZExpc3RlbmVycy5kZWxldGUoZXZlbnRUeXBlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVzZXJMaXN0ZW5lcjtcbiAgICB9XG4gICAgcHVibGljIHVud3JhcEdsb2JhbCh1c2VyTGlzdGVuZXI6IFRHbG9iYWxFdmVudExpc3RlbmVyKTogVEdsb2JhbEV2ZW50TGlzdGVuZXIge1xuICAgICAgICBjb25zdCB7IHdyYXBwZWRHbG9iYWxMaXN0ZW5lcnMgfSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHdyYXBwZWQgPSB3cmFwcGVkR2xvYmFsTGlzdGVuZXJzLmdldCh1c2VyTGlzdGVuZXIpO1xuICAgICAgICBpZiAod3JhcHBlZCkge1xuICAgICAgICAgICAgd3JhcHBlZEdsb2JhbExpc3RlbmVycy5kZWxldGUodXNlckxpc3RlbmVyKTtcbiAgICAgICAgICAgIHJldHVybiB3cmFwcGVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1c2VyTGlzdGVuZXI7XG4gICAgfVxufVxuIl19