UNPKG

@ly-js/ui

Version:

`@ly-js/ui` 是基于`vue3`常用库,会在`@ly-js/element`、`@ly-js/vant`中引入

55 lines (53 loc) 1.17 kB
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); }); } } }; } export { eventHub };