UNPKG

epic-designer

Version:

基于vue3的设计器,可视化开发页面表单

2 lines (1 loc) 1.35 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("vue"),w=require("../logic/useEventBus.cjs"),c=new Map;function S(f="root"){const p=s=>{if(!c.has(s)){const t=new Map,o=new Map,r=10,l={clear(){t.clear(),o.clear()},emit(e,...n){o.has(e)||o.set(e,[]);const a=o.get(e);a.push({args:n,timestamp:Date.now()}),a.length>r&&a.shift(),t.has(e)&&t.get(e).forEach(g=>{try{g(...n)}catch(M){console.error(`事件 "${e}" 处理错误:`,M)}})},off(e,n){t.has(e)&&t.get(e).delete(n)},on(e,n){if(t.has(e)||t.set(e,new Set),t.get(e).add(n),o.has(e)&&o.get(e).length>0){const a=o.get(e)[o.get(e).length-1];try{n(...a.args)}catch(g){console.error(`缓存事件 "${e}" 处理错误:`,g)}}return()=>{this.off(e,n)}}};c.set(s,l)}return c.get(s)},i=p(f),u=p("root"),B=(s,...t)=>{i.emit(s,...t)},C=(s,...t)=>{u.emit(s,...t)},d=(s,t)=>{i.off(s,t)},L=(s,t)=>{u.off(s,t)},h=()=>{i.clear(),c.delete(f)},E={clear:h,emit:B,emitRoot:C,off:d,offRoot:L,on:(s,t)=>{const o=i.on(s,t);return m.onUnmounted(()=>{var r;o(),c.has(f)&&([...((r=i.listeners)==null?void 0:r.values())||[]].some(e=>e.size>0)||h())}),o},onRoot:(s,t)=>{const o=u.on(s,t);return m.onUnmounted(()=>{var r;o(),c.has("root")&&([...((r=u.listeners)==null?void 0:r.values())||[]].some(e=>e.size>0)||h())}),o}};return m.provide(w.EVENT_BUS_KEY,E),E}exports.createEventBus=S;