@ly-js/ui
Version:
`@ly-js/ui` 是基于`vue3`常用库,会在`@ly-js/element`、`@ly-js/vant`中引入
59 lines (55 loc) • 1.26 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
function eventHub(all) {
all = all || /* @__PURE__ */ new Map();
return {
all,
on(type, handler) {
const handlers = all.get(type);
if (handlers) {
handlers.push(handler);
} else {
all.set(type, [handler]);
}
},
once(type, handler) {
const handlers = all.get(type);
const onceHandler = (evt) => {
this.off(type, onceHandler);
handler(evt);
};
if (handlers) {
handlers.push(onceHandler);
} else {
all.set(type, [onceHandler]);
}
},
off(type, handler) {
const handlers = all.get(type);
if (handlers) {
if (handler) {
handlers.splice(handlers.indexOf(handler) >>> 0, 1);
} else {
all.set(type, []);
}
}
},
emit(type, evt) {
let handlers = all.get(type);
if (handlers) {
;
handlers.slice().map((handler) => {
handler(evt);
});
}
handlers = all.get("*");
if (handlers) {
;
handlers.slice().map((handler) => {
handler(type, evt);
});
}
}
};
}
exports.eventHub = eventHub;