@mundoit-lib/plugin-vue-event
Version:
Vue 3 plugin to handle global events between components, inspired by vue-events. This plugin provides a simple and efficient event bus system, allowing to emit, listen and unregister events in an intuitive way. Compatible with Vue 2 and Vue 3.
34 lines (31 loc) • 779 B
JavaScript
import mitt from 'mitt';
// src/eventBus.ts
var eventBus = mitt();
var useEventBus = () => {
return {
emit(event, ...args) {
eventBus.emit(event, args);
},
on(event, callback) {
const listener = (args) => callback(...args);
eventBus.on(event, listener);
return listener;
},
fire(event, ...args) {
eventBus.emit(event, args);
},
off(event, listener) {
eventBus.off(event, listener);
},
once(event, callback) {
const listener = (args) => callback(...args);
const wrappedListener = (args) => {
listener(args);
eventBus.off(event, wrappedListener);
};
eventBus.on(event, wrappedListener);
return wrappedListener;
}
};
};
export { eventBus, useEventBus };