@cloudcome/utils-vue
Version:
cloudcome utils for vue
37 lines (36 loc) • 908 B
JavaScript
import { Emitter } from "@cloudcome/utils-core/emitter";
import { onMounted, onUnmounted, onBeforeMount, onBeforeUnmount } from "vue";
function createEventHook(options = {}) {
const emitter = options.emitter || new Emitter();
const on = (event, listener) => {
emitter.on(event, listener);
};
const off = (event, listener) => {
emitter.off(event, listener);
};
const emit = (event, ...payloads) => {
emitter.emit(event, ...payloads);
};
const useEvent = (event, fn) => {
if (options.stage === "mounted") {
onMounted(() => {
on(event, fn);
});
onUnmounted(() => {
off(event, fn);
});
} else {
onBeforeMount(() => {
on(event, fn);
});
onBeforeUnmount(() => {
off(event, fn);
});
}
};
return { on, off, emit, useEvent };
}
export {
createEventHook
};
//# sourceMappingURL=event.mjs.map