mirror of
https://github.com/captbaritone/webamp.git
synced 2026-01-23 18:25:30 +00:00
24 lines
655 B
TypeScript
24 lines
655 B
TypeScript
export default class Emitter {
|
|
_listeners: { [event: string]: Array<(...args: any[]) => void> };
|
|
|
|
constructor() {
|
|
this._listeners = {};
|
|
}
|
|
|
|
on(event: string, callback: (...args: any[]) => void) {
|
|
const eventListeners = this._listeners[event] || [];
|
|
eventListeners.push(callback);
|
|
this._listeners[event] = eventListeners;
|
|
const unsubscribe = () => {
|
|
this._listeners[event] = eventListeners.filter(cb => cb !== callback);
|
|
};
|
|
return unsubscribe;
|
|
}
|
|
|
|
trigger(event: string, ...args: any[]) {
|
|
const callbacks = this._listeners[event];
|
|
if (callbacks) {
|
|
callbacks.forEach(cb => cb(...args));
|
|
}
|
|
}
|
|
}
|