18 lines
412 B
JavaScript
18 lines
412 B
JavaScript
const listeners = new Map();
|
|
|
|
export function on(event, fn) {
|
|
const arr = listeners.get(event) || [];
|
|
arr.push(fn);
|
|
listeners.set(event, arr);
|
|
return () => off(event, fn);
|
|
}
|
|
|
|
export function off(event, fn) {
|
|
const arr = listeners.get(event) || [];
|
|
listeners.set(event, arr.filter(x => x !== fn));
|
|
}
|
|
|
|
export function emit(event, payload) {
|
|
(listeners.get(event) || []).forEach(fn => fn(payload));
|
|
}
|