ag-grid-angular
Version:
AG Grid Angular Component
60 lines • 8.8 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhckZyYW1ld29ya0V2ZW50TGlzdGVuZXJTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYWctZ3JpZC1hbmd1bGFyL3NyYy9saWIvYW5ndWxhckZyYW1ld29ya0V2ZW50TGlzdGVuZXJTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sT0FBTyxvQ0FBb0M7SUFRN0MsWUFBb0Isa0JBQTZDO1FBQTdDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBMkI7UUFKakUsd0ZBQXdGO1FBQ2hGLHFCQUFnQixHQUE4RCxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3hGLDJCQUFzQixHQUFvRCxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRXhCLENBQUM7SUFFOUQsSUFBSSxDQUFDLFNBQTBCLEVBQUUsWUFBNEI7UUFDaEUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3RELElBQUksUUFBUSxHQUFRLFlBQVksQ0FBQztRQUVqQyxJQUFJLGtCQUFrQixDQUFDLGtCQUFrQixFQUFFO1lBQ3ZDLFFBQVEsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUN0QixrQkFBa0IsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDL0QsQ0FBQyxDQUFDO1lBRUYsSUFBSSxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ2pCLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUMzQixnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO2FBQ25EO1lBQ0QsY0FBYyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDOUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRU0sVUFBVSxDQUFDLFlBQWtDO1FBQ2hELE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxHQUFHLElBQUksQ0FBQztRQUM1RCxJQUFJLFFBQVEsR0FBUSxZQUFZLENBQUM7UUFFakMsSUFBSSxrQkFBa0IsQ0FBQyxrQkFBa0IsRUFBRTtZQUN2QyxRQUFRLEdBQUcsQ0FBQyxTQUFjLEVBQUUsS0FBVSxFQUFFLEVBQUU7Z0JBQ3RDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDMUUsQ0FBQyxDQUFDO1lBQ0Ysc0JBQXNCLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztTQUN0RDtRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFFTSxNQUFNLENBQUMsU0FBMEIsRUFBRSxZQUE0QjtRQUNsRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDbEMsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZELElBQUksY0FBYyxFQUFFO1lBQ2hCLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDakQsSUFBSSxPQUFPLEVBQUU7Z0JBQ1QsY0FBYyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDcEMsSUFBSSxjQUFjLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtvQkFDM0IsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUN0QztnQkFDRCxPQUFPLE9BQU8sQ0FBQzthQUNsQjtTQUNKO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztJQUNNLFlBQVksQ0FBQyxZQUFrQztRQUNsRCxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDeEMsTUFBTSxPQUFPLEdBQUcsc0JBQXNCLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3pELElBQUksT0FBTyxFQUFFO1lBQ1Qsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzVDLE9BQU8sT0FBTyxDQUFDO1NBQ2xCO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBbmd1bGFyRnJhbWV3b3JrT3ZlcnJpZGVzIH0gZnJvbSAnLi9hbmd1bGFyRnJhbWV3b3JrT3ZlcnJpZGVzJztcblxudHlwZSBFdmVudFR5cGVUb1dyYXAgPSBzdHJpbmc7XG5cbmV4cG9ydCBjbGFzcyBBbmd1bGFyRnJhbWV3b3JrRXZlbnRMaXN0ZW5lclNlcnZpY2U8XG4gICAgVEV2ZW50TGlzdGVuZXIgZXh0ZW5kcyAoZTogYW55KSA9PiB2b2lkLFxuICAgIFRHbG9iYWxFdmVudExpc3RlbmVyIGV4dGVuZHMgKG5hbWU6IHN0cmluZywgZTogYW55KSA9PiB2b2lkLFxuPiB7XG4gICAgLy8gTWFwIGZyb20gdXNlciBsaXN0ZW5lciB0byB3cmFwcGVkIGxpc3RlbmVyIHNvIHdlIGNhbiByZW1vdmUgbGlzdGVuZXIgcHJvdmlkZWQgYnkgdXNlclxuICAgIHByaXZhdGUgd3JhcHBlZExpc3RlbmVyczogTWFwPEV2ZW50VHlwZVRvV3JhcCwgTWFwPFRFdmVudExpc3RlbmVyLCBURXZlbnRMaXN0ZW5lcj4+ID0gbmV3IE1hcCgpO1xuICAgIHByaXZhdGUgd3JhcHBlZEdsb2JhbExpc3RlbmVyczogTWFwPFRHbG9iYWxFdmVudExpc3RlbmVyLCBUR2xvYmFsRXZlbnRMaXN0ZW5lcj4gPSBuZXcgTWFwKCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZyYW1ld29ya092ZXJyaWRlczogQW5ndWxhckZyYW1ld29ya092ZXJyaWRlcykge31cblxuICAgIHB1YmxpYyB3cmFwKGV2ZW50VHlwZTogRXZlbnRUeXBlVG9XcmFwLCB1c2VyTGlzdGVuZXI6IFRFdmVudExpc3RlbmVyKTogVEV2ZW50TGlzdGVuZXIge1xuICAgICAgICBjb25zdCB7IGZyYW1ld29ya092ZXJyaWRlcywgd3JhcHBlZExpc3RlbmVycyB9ID0gdGhpcztcbiAgICAgICAgbGV0IGxpc3RlbmVyOiBhbnkgPSB1c2VyTGlzdGVuZXI7XG5cbiAgICAgICAgaWYgKGZyYW1ld29ya092ZXJyaWRlcy5zaG91bGRXcmFwT3V0Z29pbmcpIHtcbiAgICAgICAgICAgIGxpc3RlbmVyID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBmcmFtZXdvcmtPdmVycmlkZXMud3JhcE91dGdvaW5nKCgpID0+IHVzZXJMaXN0ZW5lcihldmVudCkpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgbGV0IGV2ZW50TGlzdGVuZXJzID0gd3JhcHBlZExpc3RlbmVycy5nZXQoZXZlbnRUeXBlKTtcbiAgICAgICAgICAgIGlmICghZXZlbnRMaXN0ZW5lcnMpIHtcbiAgICAgICAgICAgICAgICBldmVudExpc3RlbmVycyA9IG5ldyBNYXAoKTtcbiAgICAgICAgICAgICAgICB3cmFwcGVkTGlzdGVuZXJzLnNldChldmVudFR5cGUsIGV2ZW50TGlzdGVuZXJzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV2ZW50TGlzdGVuZXJzLnNldCh1c2VyTGlzdGVuZXIsIGxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGlzdGVuZXI7XG4gICAgfVxuXG4gICAgcHVibGljIHdyYXBHbG9iYWwodXNlckxpc3RlbmVyOiBUR2xvYmFsRXZlbnRMaXN0ZW5lcik6IFRHbG9iYWxFdmVudExpc3RlbmVyIHtcbiAgICAgICAgY29uc3QgeyBmcmFtZXdvcmtPdmVycmlkZXMsIHdyYXBwZWRHbG9iYWxMaXN0ZW5lcnMgfSA9IHRoaXM7XG4gICAgICAgIGxldCBsaXN0ZW5lcjogYW55ID0gdXNlckxpc3RlbmVyO1xuXG4gICAgICAgIGlmIChmcmFtZXdvcmtPdmVycmlkZXMuc2hvdWxkV3JhcE91dGdvaW5nKSB7XG4gICAgICAgICAgICBsaXN0ZW5lciA9IChldmVudFR5cGU6IGFueSwgZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGZyYW1ld29ya092ZXJyaWRlcy53cmFwT3V0Z29pbmcoKCkgPT4gdXNlckxpc3RlbmVyKGV2ZW50VHlwZSwgZXZlbnQpKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB3cmFwcGVkR2xvYmFsTGlzdGVuZXJzLnNldCh1c2VyTGlzdGVuZXIsIGxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGlzdGVuZXI7XG4gICAgfVxuXG4gICAgcHVibGljIHVud3JhcChldmVudFR5cGU6IEV2ZW50VHlwZVRvV3JhcCwgdXNlckxpc3RlbmVyOiBURXZlbnRMaXN0ZW5lcik6IFRFdmVudExpc3RlbmVyIHtcbiAgICAgICAgY29uc3QgeyB3cmFwcGVkTGlzdGVuZXJzIH0gPSB0aGlzO1xuICAgICAgICBjb25zdCBldmVudExpc3RlbmVycyA9IHdyYXBwZWRMaXN0ZW5lcnMuZ2V0KGV2ZW50VHlwZSk7XG4gICAgICAgIGlmIChldmVudExpc3RlbmVycykge1xuICAgICAgICAgICAgY29uc3Qgd3JhcHBlZCA9IGV2ZW50TGlzdGVuZXJzLmdldCh1c2VyTGlzdGVuZXIpO1xuICAgICAgICAgICAgaWYgKHdyYXBwZWQpIHtcbiAgICAgICAgICAgICAgICBldmVudExpc3RlbmVycy5kZWxldGUodXNlckxpc3RlbmVyKTtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnRMaXN0ZW5lcnMuc2l6ZSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB3cmFwcGVkTGlzdGVuZXJzLmRlbGV0ZShldmVudFR5cGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdXNlckxpc3RlbmVyO1xuICAgIH1cbiAgICBwdWJsaWMgdW53cmFwR2xvYmFsKHVzZXJMaXN0ZW5lcjogVEdsb2JhbEV2ZW50TGlzdGVuZXIpOiBUR2xvYmFsRXZlbnRMaXN0ZW5lciB7XG4gICAgICAgIGNvbnN0IHsgd3JhcHBlZEdsb2JhbExpc3RlbmVycyB9ID0gdGhpcztcbiAgICAgICAgY29uc3Qgd3JhcHBlZCA9IHdyYXBwZWRHbG9iYWxMaXN0ZW5lcnMuZ2V0KHVzZXJMaXN0ZW5lcik7XG4gICAgICAgIGlmICh3cmFwcGVkKSB7XG4gICAgICAgICAgICB3cmFwcGVkR2xvYmFsTGlzdGVuZXJzLmRlbGV0ZSh1c2VyTGlzdGVuZXIpO1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVzZXJMaXN0ZW5lcjtcbiAgICB9XG59XG4iXX0=