@paperbits/common
Version:
Paperbits common components.
41 lines (33 loc) • 1.32 kB
text/typescript
import "../extensions";
import { EventManager } from "./eventManager";
interface EventListener {
eventName: string;
eventHandler: (...args) => void;
}
export class DefaultEventManager implements EventManager {
private readonly eventListeners: EventListener[];
constructor() {
this.eventListeners = [];
}
public addEventListener(eventName: string, eventHandler: (...args) => void): void {
const exists = this.eventListeners.some(listener =>
listener.eventName === eventName &&
listener.eventHandler === eventHandler);
if (!exists) {
this.eventListeners.push({ eventName: eventName, eventHandler: eventHandler });
}
}
public removeEventListener(eventName: string, eventHandler: (...args) => void): void {
const listener = this.eventListeners.find(listener =>
listener.eventName === eventName &&
listener.eventHandler === eventHandler);
if (listener) {
this.eventListeners.remove(listener);
}
}
public dispatchEvent(eventName: string, args?: unknown): void {
this.eventListeners
.filter(listener => listener.eventName === eventName)
.forEach(x => x.eventHandler(args));
}
}