@daysnap/utils
Version:
39 lines (37 loc) • 747 B
JavaScript
// src/eventBus.ts
var events = {};
function off(eventName, callback) {
if (events[eventName]) {
events[eventName] = events[eventName].filter((item) => item !== callback);
if (!events[eventName].length) {
delete events[eventName];
}
}
}
function on(eventName, callback) {
;
(events[eventName] || (events[eventName] = [])).push(callback);
return () => off(eventName, callback);
}
function emit(eventName, ...args) {
const callbacks = events[eventName];
if (callbacks) {
callbacks.forEach((callback) => callback(...args));
}
}
function clear(eventName) {
if (eventName) {
delete events[eventName];
} else {
events = {};
}
}
var eventBus = {
on,
off,
emit,
clear
};
export {
eventBus
};