UNPKG

@nguyenshort/vue3-mitt

Version:
29 lines (28 loc) 738 B
import { inject } from "vue"; function mitt(n) { return { all: n = n || /* @__PURE__ */ new Map(), on: function(t, e) { var i = n.get(t); i ? i.push(e) : n.set(t, [e]); }, off: function(t, e) { var i = n.get(t); i && (e ? i.splice(i.indexOf(e) >>> 0, 1) : n.set(t, [])); }, emit: function(t, e) { var i = n.get(t); i && i.slice().map(function(n2) { n2(e); }), (i = n.get("*")) && i.slice().map(function(n2) { n2(t, e); }); } }; } const emitter = mitt(); const plugin = { install(app) { app.provide("$emitter", emitter); app.config.globalProperties.$emitter = emitter; } }; const useEmitter = () => { return inject("$emitter"); }; export { plugin as default, useEmitter };