fastevent 2.5.0 → 2.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/executors/index.js +1 -1
- package/dist/executors/index.js.map +1 -1
- package/dist/executors/index.mjs +1 -1
- package/dist/executors/index.mjs.map +1 -1
- package/dist/index.d.mts +81 -54
- package/dist/index.d.ts +81 -54
- package/dist/index.global.js +1 -1
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/pipes/index.d.mts +4 -4
- package/dist/pipes/index.d.ts +4 -4
- package/dist/pipes/index.js +1 -1
- package/dist/pipes/index.js.map +1 -1
- package/dist/pipes/index.mjs +1 -1
- package/dist/pipes/index.mjs.map +1 -1
- package/dist/viewer/index.js +104 -104
- package/dist/viewer/index.js.map +1 -1
- package/dist/viewer/index.mjs +393 -1089
- package/dist/viewer/index.mjs.map +1 -1
- package/package.json +1 -1
- package/readme.md +66 -65
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["C","o","h","j","m","N","T","L","R","_","b","z","d","w","$","S","x","l","P","A","k","V","Z","D","I","M","H","t","e","s","o","n","r","i","S","c","i","e","h","r","o","n","a","c","l","p","d","u","f","b","y","t","s","t","i","s","o","n","r","t","e","r","o","t","e","t","r","t"],"sources":["../../native/dist/index.mjs","../../../node_modules/.bun/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/css-tag.js","../../../node_modules/.bun/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/reactive-element.js","../../../node_modules/.bun/lit-html@3.3.2/node_modules/lit-html/lit-html.js","../../../node_modules/.bun/lit-element@4.2.2/node_modules/lit-element/lit-element.js","../../../node_modules/.bun/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/decorators/custom-element.js","../../../node_modules/.bun/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/decorators/property.js","../../../node_modules/.bun/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/decorators/state.js","../src/styles/icons.ts","../src/eventViewer/styles.ts","../src/listenerViewer/styles.ts","../src/listenerViewer/listenerCardStyles.ts","../src/utils/removeItem.ts","../src/utils/renderTag.ts","../src/utils/renderButton.ts","../src/utils/renderIcon.ts","../src/utils/renderRetainMessage.ts","../src/utils/languages.ts","../src/utils/t.ts","../src/listenerViewer/listenerCard.ts","../src/listenerViewer/index.ts","../src/eventViewer/eventLog.ts","../src/eventViewer/index.ts"],"sourcesContent":["var C=Object.defineProperty;var re=(r,e,t)=>e in r?C(r,e,{enumerable:true,configurable:true,writable:true,value:t}):r[e]=t;var o=(r,e)=>C(r,\"name\",{value:e,configurable:true});var h=(r,e,t)=>re(r,typeof e!=\"symbol\"?e+\"\":e,t);var ne=Symbol.for(\"__FastEvent__\"),oe=Symbol.for(\"__FastEventScope__\"),j=class j extends Error{constructor(e){super(e);}};o(j,\"FastEventError\");var m=j,O=class O extends m{};o(O,\"TimeoutError\");var N=O,T=class T extends m{};o(T,\"UnboundError\");var L=T,R=class R extends m{};o(R,\"AbortError\");var _=R,F=class F extends m{};o(F,\"CancelError\");var b=F,z=class z extends m{};o(z,\"QueueOverflowError\");var B=z;var d=(function(r){return r[r.Transformed=1]=\"Transformed\",r})({});function w(r,e,t,s){let i,n={},f={};return typeof r[0]==\"object\"?(Object.assign(f,r[0]),n=typeof r[1]==\"boolean\"?{retain:r[1]}:r[1]||{},i=r[0].meta):(f.type=r[0],f.payload=r[1],n=typeof r[2]==\"boolean\"?{retain:r[2]}:r[2]||{}),i=Object.assign({},e,t,n.meta,i),Object.keys(i).length===0?(i=void 0,delete f.meta):f.meta=i,n.executor===void 0&&(n.executor=s),[f,n]}o(w,\"parseEmitArgs\");function $(r){return r?typeof r==\"object\"&&\"__FastEventScope__\"in r:false}o($,\"isFastEventScope\");function S(r,e,t){let s=r[0],i=$(r[1])?r[1]:void 0,n=(i?r[2]:r[1])||{};return n.meta=Object.assign({},e,n?.meta),n.context=n.context!==void 0?n.context:t,[s,i,n]}o(S,\"parseScopeArgs\");function x(r,e){return Object.defineProperty(r,\"name\",{value:e||\"anonymous\",configurable:true}),r}o(x,\"renameFn\");function l(r){return r&&typeof r==\"function\"}o(l,\"isFunction\");var P=class P{constructor(e){h(this,\"__FastEventScope__\",true);h(this,\"__events__\");h(this,\"__meta__\");h(this,\"__context__\");h(this,\"_options\",{});h(this,\"prefix\",\"\");h(this,\"emitter\");this._options=Object.assign({},this._initOptions(e));}get context(){return this.options.context||this}get options(){return this._options}get listeners(){return this.emitter.getListeners(this.prefix)}bind(e,t,s){this.emitter=e,this._options=Object.assign(this._options,{scope:t},s),t.length>0&&!t.endsWith(e.options.delimiter)&&(this.prefix=t+e.options.delimiter);}_initOptions(e){return e}_getScopeListener(e){let t=this.prefix;if(t.length===0)return e;if(!e)throw new Error;let s=this;return x(function(n,f){let a=f.rawEventType||n.type;if(a.startsWith(t)){let c=((f.flags||0)&d.Transformed)>0?n:Object.assign({},n,{type:a.substring(t.length)});return e.call(s.context,c,f)}},e.name)}_getScopeType(e){return e===void 0?void 0:this.prefix+e}_fixScopeType(e){return e.startsWith(this.prefix)?e.substring(this.prefix.length):e}on(){if(!this.emitter)throw new L;let e=[...arguments];return e[0]=this._getScopeType(e[0]),e[1]=this._getScopeListener(e[1]),this.emitter.on(...e)}once(){return this.on(arguments[0],arguments[1],Object.assign({},arguments[2],{count:1}))}onAny(){return this.on(\"**\",...arguments)}off(){let e=arguments;typeof e[0]==\"string\"&&(e[0]=this._getScopeType(e[0])),this.emitter.off(...e);}offAll(){this.emitter.offAll(this.prefix.substring(0,this.prefix.length-1));}clear(){this.emitter.clear(this.prefix.substring(0,this.prefix.length-1));}emit(){let[e,t]=w(arguments,this.emitter.options.meta,this.options.meta,this.options.executor);return this._transformMessage(e,t),e.type=this._getScopeType(e.type),this.emitter.emit(e,t)}_transformMessage(e,t){l(this._options.transform)&&(t.rawEventType=this._getScopeType(e.type),t.flags=(t.flags||0)|d.Transformed,e.payload=this._options.transform.call(this,e));}async emitAsync(){return (await Promise.allSettled(this.emit.apply(this,arguments))).map(t=>t.status===\"fulfilled\"?t.value:t.reason)}async waitFor(){let e=arguments[0],t=arguments[1],s=await this.emitter.waitFor(this._getScopeType(e),t);return Object.assign({},s,{type:this._fixScopeType(s.type)})}scope(){let[e,t,s]=S(arguments,this.options.meta,this.options.context),i;return t?i=t:i=new P,i.bind(this.emitter,this.prefix+e,s),i}};o(P,\"FastEventScope\");var A=P;function k(r,e){let t=r.length,s=e.length;if(t!==s&&(s===0||e[s-1]!==\"**\"))return false;if(s>0&&e[s-1]===\"**\"){for(let i=0;i<s-1;i++)if(e[i]!==\"*\"&&e[i]!==r[i])return false;return true}for(let i=0;i<t;i++)if(e[i]!==\"*\"&&e[i]!==r[i])return false;return true}o(k,\"isPathMatched\");function V(r,e){let t=[];for(let s=r.length-1;s>=0;s--)e(r[s])&&(t.push(s),r.splice(s,1));return t.reverse()}o(V,\"removeItem\");function Fe(r){return r?typeof r==\"object\"&&\"type\"in r:false}o(Fe,\"isFastEventMessage\");function Ie(r){return r&&typeof r==\"string\"}o(Ie,\"isString\");var q=Symbol.for(\"__expandable__\");function He(r){return r[q]=true,r}o(He,\"expandable\");function G(r){return r&&r[q]}o(G,\"isExpandable\");function J(r){return r&&typeof r==\"object\"&&\"off\"in r&&\"listener\"in r}o(J,\"isSubsctiber\");function Ve(r){return typeof r==\"function\"&&(r.toString().startsWith(\"class \")||r.prototype?.constructor===r)}o(Ve,\"isClass\");function Je(r){return r?typeof r==\"object\"&&\"__FastEvent__\"in r:false}o(Je,\"isFastEvent\");function K(r){if(r===null||typeof r!=\"object\")return false;let e=r;return typeof e[Symbol.asyncIterator]==\"function\"||typeof e[\"@@asyncIterator\"]==\"function\"}o(K,\"isAsyncIterable\");var X=o(()=>(r,e,t,s)=>r.map((i,n)=>s.call(r[n],i,e,t,true)),\"parallel\");function Y(r){for(let e=0;e<r.length;e++){let t=r[e];Array.isArray(t)&&G(t)&&(r.splice(e,1,...t),e+=t.length-1);}return r}o(Y,\"expandEmitResults\");function Z(r,e){return r.catch(t=>(e&&e(t),Promise.resolve(t)))}o(Z,\"tryReturnError\");var D=class D{constructor(e,t,s={}){h(this,\"eventEmitter\");h(this,\"eventName\");h(this,\"buffer\",[]);h(this,\"resolvers\",[]);h(this,\"errorResolvers\",[]);h(this,\"isStopped\",false);h(this,\"error\",null);h(this,\"options\");h(this,\"currentSize\");h(this,\"hasNewMessage\",false);h(this,\"_listener\");h(this,\"_ready\",false);h(this,\"_listenOptions\");h(this,\"_cleanups\",[]);this.eventEmitter=e,this.eventName=t;let i=20,n=100;this.options={size:s.size??i,maxExpandSize:s.maxExpandSize??n,expandOverflow:s.expandOverflow??\"slide\",overflow:s.overflow??\"slide\",lifetime:s.lifetime??0,onPush:s.onPush,onPop:s.onPop,onDrop:s.onDrop,onError:s.onError??(()=>true),signal:s.signal},this.currentSize=this.options.size,this._listener=this.onMessage.bind(this);}get listener(){return this._listener}get ready(){return this._ready}create(e){if(!this._ready){this._listenOptions=e;try{let t=this.eventEmitter.on(this.eventName,this._listener,e);if(this._cleanups.push(()=>t.off()),this.options.signal&&!this.options.signal.aborted){let s=o(()=>{this.off(!0);},\"offFn\");this.options.signal.addEventListener(\"abort\",s),this._cleanups.push(()=>{this.options.signal.removeEventListener(\"abort\",s);});}}finally{this._ready=true;}}}push(e){this.options.onPush?this.options.onPush(e,this.buffer):this.buffer.push(this.options.lifetime>0?[e,Date.now()]:[e,0]);}handleOverflow(e){switch(this.buffer.length>=this.options.maxExpandSize&&this.options.overflow===\"expand\"?this.options.expandOverflow:this.options.overflow){case \"drop\":return this.options.onDrop&&this.options.onDrop(e),false;case \"expand\":return this.currentSize=Math.min(this.currentSize+this.options.size,this.options.maxExpandSize),this.push(e),true;case \"slide\":let s=this.buffer.shift();return this.options.onDrop&&s&&this.options.onDrop(s[0]),this.push(e),true;case \"throw\":throw this.options.onDrop&&this.options.onDrop(e),new Error(`EventIterator queue overflow: buffer size (${this.currentSize}) exceeded`);default:return false}}onMessage(e,t){if(this.isStopped)return;let s=e;if(this.resolvers.length>0){this.resolvers.shift()({value:s,done:false});return}this.hasNewMessage=true,this.buffer.length<this.currentSize?this.push(s):this.handleOverflow(s);}off(e){this._ready&&(this.isStopped||(this.isStopped=true,this._cleanups.forEach(t=>t()),this._cleanups=[],this.buffer=[],this._ready=false,e?(this.errorResolvers.forEach(t=>{t(new _);}),this.errorResolvers=[]):(this.resolvers.forEach(t=>{t({value:void 0,done:true});}),this.resolvers=[]),this._ready=false));}async next(){if(this.error)return Promise.reject(this.error);if(this.isStopped&&this.buffer.length===0)return {value:void 0,done:true};if(this.buffer.length>0){let e,t;if(this.options.onPop){let s=this.options.onPop(this.buffer,this.hasNewMessage);s?[e,t]=s:[e,t]=this.buffer.shift()||[void 0,0];}else [e,t]=this.buffer.shift()||[void 0,0];if(this.hasNewMessage=false,e!==void 0)return this.options.lifetime>0&&Date.now()-t>this.options.lifetime?(this.options.onDrop&&this.options.onDrop(e),this.next()):{value:e,done:false}}return new Promise((e,t)=>{this.resolvers.push(e),this.errorResolvers.push(t);})}[Symbol.asyncIterator](){return this}async done(){return this.off(),{value:void 0,done:true}}async throw(e){return this.error=e,this.off(),Promise.reject(e)}async return(){return this.off(),{value:void 0,done:true}}[Symbol.dispose](){this.off();}on(){this.create(this._listenOptions),this.isStopped=false;}};o(D,\"FastEventIterator\");var I=D;function U(r,e,t={}){return new I(r,e,t)}o(U,\"createAsyncEventIterator\");function Q(r,e){return Array.isArray(e)&&e.forEach(t=>{r=x(t(r),r.name);}),r}o(Q,\"wrapPipeListener\");function M(r){return r!==null&&(typeof r==\"object\"||typeof r==\"function\")?new WeakRef(r):r}o(M,\"getWeakRef\");function W(r){return r.map(e=>e.status===\"fulfilled\"?e.value:e.reason)}o(W,\"getPromiseResults\");function ee(r){if(r==null)return false;let e=typeof r;return e!==\"object\"&&e!==\"function\"?false:typeof r.then==\"function\"}o(ee,\"isPromise\");async function te(r){try{return r instanceof Promise?await r:r}catch(e){return e instanceof Error?e:new Error(String(e))}}o(te,\"resolveValue\");var H=class H{constructor(e){h(this,\"__FastEvent__\",true);h(this,\"listeners\",{__listeners:[]});h(this,\"_options\");h(this,\"_delimiter\",\"/\");h(this,\"_context\");h(this,\"_hooks\");h(this,\"retainedMessages\",new Map);h(this,\"listenerCount\",0);h(this,\"types\",null);this._options=Object.assign({debug:false,id:Math.random().toString(36).substring(2),delimiter:\"/\",context:null,ignoreErrors:true,meta:void 0,expandEmitResults:true,executor:X()},this._initOptions(e)),this._delimiter=this._options.delimiter,this._context=this._options.context;}get options(){return this._options}get context(){return this.options.context||this}get meta(){return this.options.meta}get id(){return this._options.id}get title(){return this._options.title||this.id||\"FastEvent\"}get hooks(){return this._hooks||(this._hooks={AddBeforeListener:[],AddAfterListener:[],RemoveListener:[],ClearListeners:[],ListenerError:[],BeforeExecuteListener:[],AfterExecuteListener:[]}),this._hooks}_execAfterExecuteListener(e,t){Promise.allSettled(t[1]).then(s=>{t[1]=W(s),e.apply(this,t);});}_executeHooks(e,t,s=false){if(setTimeout(()=>{if(!this._hooks)return;let i=this.hooks[e];Array.isArray(i)&&i.length>0&&Promise.allSettled(i.map(n=>{if(e===\"AfterExecuteListener\")this._execAfterExecuteListener(n,t);else return n.apply(this,t)}));}),!s){let i=this.options[`on${e}`];if(l(i))if(e===\"AfterExecuteListener\")this._execAfterExecuteListener(i,t);else return i.apply(this,t)}}_initOptions(e){return e}_addListener(e,t,s){let{count:i,prepend:n}=s,f=0;return [this._forEachNodes(e,u=>{let c=[t,i,0,s.tag,s.flags];n?(u.__listeners.splice(0,0,c),f=0):(u.__listeners.push(c),f=u.__listeners.length-1),this.listenerCount++;}),f]}_forEachNodes(e,t){if(e.length===0)return;let s=this.listeners;for(let i=0;i<e.length;i++){let n=e[i];if(n in s||(s[n]={__listeners:[]}),i===e.length-1){let f=s[n];return t(f,s),f}else s=s[n];}}_removeListener(e,t,s){s&&V(e.__listeners,i=>{i=Array.isArray(i)?i[0]:i;let n=i===s;return n&&(this.listenerCount--,this._executeHooks(\"RemoveListener\",[t.join(this._delimiter),s,e])),n});}on(){let e=arguments[0],t=null,s,i=!l(arguments[1]);i?s=arguments[1]||{}:(t=arguments[1],s=arguments[2]||{});let n=Object.assign({count:0,flags:0,prepend:false},s);if(e.length===0)throw new Error(\"event type cannot be empty\");if(i||t===null){let v=Object.assign({overflow:\"expand\",size:10,maxExpandSize:100},n.iterable),y=U(this,e,v);y.create(n);let p=this._executeHooks(\"AddBeforeListener\",[e,y.listener,n]);if(p===false)throw new b;return K(p)?p:y}let f=this._executeHooks(\"AddBeforeListener\",[e,t,n]);if(f===false)throw new b;if(J(f))return f;let a=e.split(this._delimiter);if(n.pipes&&n.pipes.length>0&&(t=Q(t,n.pipes)),l(n.filter)||l(n.off)){let v=t,y=o(()=>u&&this._removeListener(u,a,t),\"off\");t=x(function(p,E){if(l(n.off)&&n.off.call(this,p,E)){y();return}if(l(n.filter)){if(n.filter.call(this,p,E))return v.call(this,p,E)}else return v.call(this,p,E)},t.name);}let[u,c]=this._addListener(a,t,n),g=o(()=>u&&this._removeListener(u,a,t),\"off\");return this._executeHooks(\"AddAfterListener\",[e,u]),this._emitRetainMessage(e,u,c),{off:g,listener:t,[Symbol.dispose](){g();}}}once(){return l(arguments[1])?this.on(arguments[0],arguments[1],Object.assign({},arguments[2],{count:1})):this.on(arguments[0],Object.assign({},arguments[2],{count:1}))}onAny(){return this.on(\"**\",...arguments)}off(){let e=arguments,t=l(e[0])?void 0:e[0],s=l(e[0])?e[0]:e[1],i=t?t.split(this._delimiter):[],n=t?t.includes(\"*\"):false;if(t&&!n)this._traverseToPath(this.listeners,i,f=>{s?this._removeListener(f,i,s):t&&(f.__listeners=[]);});else {let f=n?[]:i;this._traverseListeners(this.listeners,f,(a,u)=>{(s!==void 0||n&&k(a,i))&&(s?this._removeListener(u,i,s):u.__listeners=[]);});}}offAll(e){if(e){let t=e.split(this._delimiter),s=0;this._traverseListeners(this.listeners,t,(i,n)=>{s+=n.__listeners.length;try{n.__listeners.forEach(f=>{this._executeHooks(\"RemoveListener\",[i.join(this.options.delimiter),f[0],n]);});}finally{n.__listeners=[];}}),this.listenerCount-=s,this._removeRetainedEvents(e);}else try{let t=0;this._traverseListeners(this.listeners,[],(s,i)=>{t+=i.__listeners.length;}),this.listenerCount-=t,this.retainedMessages.clear(),this.listeners={__listeners:[]};}finally{this._executeHooks(\"ClearListeners\",[]);}}_removeRetainedEvents(e){e||this.retainedMessages.clear(),e?.endsWith(this._delimiter)&&(e+=this._delimiter),this.retainedMessages.delete(e);for(let t of this.retainedMessages.keys())t.startsWith(e)&&this.retainedMessages.delete(t);}clear(e){this.offAll(e),this._removeRetainedEvents(e);}_emitRetainMessage(e,t,s){let i=[];if(e.includes(\"*\")){let n=e.split(this._delimiter);this.retainedMessages.forEach((f,a)=>{let u=a.split(this._delimiter);k(u,n)&&i.push(f);});}else this.retainedMessages.has(e)&&i.push(this.retainedMessages.get(e));t&&i.forEach(n=>{this._executeListeners([t],n,{},f=>f[0]===t.__listeners[s][0]);});}_traverseToPath(e,t,s,i=0,n){if(i>=t.length){s(e);return}let f=t[i];if(n===true){this._traverseToPath(e,t,s,i+1,true);return}\"*\"in e&&this._traverseToPath(e[\"*\"],t,s,i+1),\"**\"in e&&this._traverseToPath(e[\"**\"],t,s,i+1,true),f in e&&this._traverseToPath(e[f],t,s,i+1);}_traverseListeners(e,t,s){let i=e;t&&t.length>0&&this._traverseToPath(e,t,f=>{i=f;});let n=o((f,a,u)=>{a(u,f);for(let[c,g]of Object.entries(f))c.startsWith(\"__\")||g&&n(g,a,[...u,c]);},\"traverseNodes\");n(i,s,[]);}_onListenerError(e,t,s,i){if(i instanceof Error&&(i._emitter=`${e.name||\"anonymous\"}:${t.type}`),this._executeHooks(\"ListenerError\",[i,e,t,s]),this._options.ignoreErrors)return i;throw i}_executeListener(e,t,s,i=false){let n=e[0];try{if(this.options.debug&&(e.length=5),s&&s.abortSignal&&s.abortSignal.aborted)return this._onListenerError(n,t,s,new _(e[0].name));let f=((s?.flags||0)&d.Transformed)>0,a=n.call(this.context,f?t.payload:t,s);return i&&a&&a instanceof Promise&&(a=Z(a,u=>this._onListenerError(n,t,s,u))),this.options.debug&&(Promise.resolve(a),ee(a)?te(a).then(u=>{e[5]=M(u);}):e[5]=M(a)),a}catch(f){let a=this._onListenerError(n,t,s,f);return a instanceof Error&&(e[5]=M(a)),a}}_getListenerExecutor(e){if(!e)return;let t=e.executor||this._options.executor;if(l(t))return t}_executeListeners(e,t,s,i){if(!e||e.length===0)return [];let n=[];for(let a of e){let u=0;for(let c of a.__listeners)(!i||i(c,a))&&n.push([c,u++,a.__listeners]);}this._decListenerExecCount(n);let f=this._getListenerExecutor(s);if(f){let a=f(n.map(u=>u[0]),t,s,this._executeListener.bind(this));return Array.isArray(a)?a:[a]}else return n.map(a=>this._executeListener(a[0],t,s,true))}_decListenerExecCount(e){for(let t=e.length-1;t>=0;t--){let s=e[t][0];s[2]++,s[1]>0&&s[1]<=s[2]&&e[t][2].splice(t,1);}}getListeners(e){let t=[],s=e.split(this._delimiter);this._traverseToPath(this.listeners,s,n=>{t.push(n);});let i=[];return t.map(n=>{i.push(...n.__listeners);}),i}clearRetainMessages(e){e?this.retainedMessages.delete(e):this.retainedMessages.clear();}emit(){let[e,t]=w(arguments,this.options.meta);l(t.parseArgs)&&t.parseArgs(e,t);let s=e.type.split(this._delimiter);t.retain&&this.retainedMessages.set(e.type,e);let i=[],n=[];this._traverseToPath(this.listeners,s,a=>{n.push(a);});let f=this._executeHooks(\"BeforeExecuteListener\",[e,t]);if(Array.isArray(f))return f;if(f===false)throw new _(e.type);if(l(this._options.transform)){let a=this._options.transform.call(this,e);a!==e&&(e.payload=a,t.rawEventType=e.type,t.flags=(t.flags||0)|d.Transformed);}return i.push(...this._executeListeners(n,e,t)),this._options.expandEmitResults&&Y(i),this._executeHooks(\"AfterExecuteListener\",[e,i,n]),i}async emitAsync(){let e=await Promise.allSettled(this.emit.apply(this,arguments));return W(e)}waitFor(){let e=arguments[0],t=arguments[1];return new Promise((s,i)=>{let n,f,a=o(u=>{clearTimeout(n),f?.off(),s(u);},\"listener\");t&&t>0&&(n=setTimeout(()=>{f?.off(),i(new Error(\"wait for event<\"+e+\"> is timeout\"));},t)),f=this.on(e,a);})}scope(){let[e,t,s]=S(arguments,this.options.meta,this.options.context),i;return t?i=t:i=new A,i.bind(this,e,s),i}};o(H,\"FastEvent\");var se=H;export{_ as AbortError,b as CancelError,se as FastEvent,m as FastEventError,I as FastEventIterator,d as FastEventListenerFlags,A as FastEventScope,B as QueueOverflowError,N as TimeoutError,L as UnboundError,oe as __FastEventScope__,ne as __FastEvent__,q as __expandable__,U as createAsyncEventIterator,He as expandable,K as isAsyncIterable,Ve as isClass,G as isExpandable,Je as isFastEvent,Fe as isFastEventMessage,$ as isFastEventScope,l as isFunction,k as isPathMatched,Ie as isString,J as isSubsctiber};//# sourceMappingURL=index.mjs.map\n//# sourceMappingURL=index.mjs.map","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1],t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map(t=>t instanceof CSSStyleSheet?t:t.styleSheet);else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,css,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:h,getOwnPropertyNames:r,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),b={attribute:!0,type:String,converter:u,reflect:!1,useDefault:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class y extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=b){if(s.state&&(s.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((s=Object.create(s)).wrapped=!0),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),h=this.getPropertyDescriptor(t,i,s);void 0!==h&&e(this.prototype,t,h)}}static getPropertyDescriptor(t,s,i){const{get:e,set:r}=h(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get:e,set(s){const h=e?.call(this);r?.call(this,s),this.requestUpdate(t,h,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??b}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...r(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(t=>this.enableUpdating=t),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(t=>t(this))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(t=>t.hostConnected?.())}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach(t=>t.hostDisconnected?.())}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$ET(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const h=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==h?this.removeAttribute(e):this.setAttribute(e,h),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),h=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e;const r=h.fromAttribute(s,t.type);this[e]=r??this._$Ej?.get(e)??r,this._$Em=null}}requestUpdate(t,s,i,e=!1,h){if(void 0!==t){const r=this.constructor;if(!1===e&&(h=this[t]),i??=r.getPropertyOptions(t),!((i.hasChanged??f)(h,s)||i.useDefault&&i.reflect&&h===this._$Ej?.get(t)&&!this.hasAttribute(r._$Eu(t,i))))return;this.C(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(t,s,{useDefault:i,reflect:e,wrapped:h},r){i&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,r??s??this[t]),!0!==h||void 0!==r)||(this._$AL.has(t)||(this.hasUpdated||i||(s=void 0),this._$AL.set(t,s)),!0===e&&this._$Em!==t&&(this._$Eq??=new Set).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t){const{wrapped:t}=i,e=this[s];!0!==t||this._$AL.has(s)||void 0===e||this.C(s,void 0,i,e)}}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach(t=>t.hostUpdate?.()),this.update(s)):this._$EM()}catch(s){throw t=!1,this._$EM(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach(t=>t.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&=this._$Eq.forEach(t=>this._$ET(t,this[t])),this._$EM()}updated(t){}firstUpdated(t){}}y.elementStyles=[],y.shadowRootOptions={mode:\"open\"},y[d(\"elementProperties\")]=new Map,y[d(\"finalized\")]=new Map,p?.({ReactiveElement:y}),(a.reactiveElementVersions??=[]).push(\"2.1.2\");export{y as ReactiveElement,s as adoptStyles,u as defaultConverter,t as getCompatibleStyle,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t=>t,s=t.trustedTypes,e=s?s.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,h=\"$lit$\",o=`lit$${Math.random().toFixed(9).slice(2)}$`,n=\"?\"+o,r=`<${n}>`,l=document,c=()=>l.createComment(\"\"),a=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,u=Array.isArray,d=t=>u(t)||\"function\"==typeof t?.[Symbol.iterator],f=\"[ \\t\\n\\f\\r]\",v=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,_=/-->/g,m=/>/g,p=RegExp(`>|${f}(?:([^\\\\s\"'>=/]+)(${f}*=${f}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),g=/'/g,$=/\"/g,y=/^(?:script|style|textarea|title)$/i,x=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),b=x(1),w=x(2),T=x(3),E=Symbol.for(\"lit-noChange\"),A=Symbol.for(\"lit-nothing\"),C=new WeakMap,P=l.createTreeWalker(l,129);function V(t,i){if(!u(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==e?e.createHTML(i):i}const N=(t,i)=>{const s=t.length-1,e=[];let n,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=v;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,f=0;for(;f<s.length&&(c.lastIndex=f,u=c.exec(s),null!==u);)f=c.lastIndex,c===v?\"!--\"===u[1]?c=_:void 0!==u[1]?c=m:void 0!==u[2]?(y.test(u[2])&&(n=RegExp(\"</\"+u[2],\"g\")),c=p):void 0!==u[3]&&(c=p):c===p?\">\"===u[0]?(c=n??v,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?p:'\"'===u[3]?$:g):c===$||c===g?c=p:c===_||c===m?c=v:(c=p,n=void 0);const x=c===p&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===v?s+r:d>=0?(e.push(a),s.slice(0,d)+h+s.slice(d)+o+x):s+o+(-2===d?i:x)}return[V(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),e]};class S{constructor({strings:t,_$litType$:i},e){let r;this.parts=[];let l=0,a=0;const u=t.length-1,d=this.parts,[f,v]=N(t,i);if(this.el=S.createElement(f,e),P.currentNode=this.el.content,2===i||3===i){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=P.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(h)){const i=v[a++],s=r.getAttribute(t).split(o),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:l,name:e[2],strings:s,ctor:\".\"===e[1]?I:\"?\"===e[1]?L:\"@\"===e[1]?z:H}),r.removeAttribute(t)}else t.startsWith(o)&&(d.push({type:6,index:l}),r.removeAttribute(t));if(y.test(r.tagName)){const t=r.textContent.split(o),i=t.length-1;if(i>0){r.textContent=s?s.emptyScript:\"\";for(let s=0;s<i;s++)r.append(t[s],c()),P.nextNode(),d.push({type:2,index:++l});r.append(t[i],c())}}}else if(8===r.nodeType)if(r.data===n)d.push({type:2,index:l});else{let t=-1;for(;-1!==(t=r.data.indexOf(o,t+1));)d.push({type:7,index:l}),t+=o.length-1}l++}}static createElement(t,i){const s=l.createElement(\"template\");return s.innerHTML=t,s}}function M(t,i,s=t,e){if(i===E)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=a(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=M(t,h._$AS(t,i.values),h,e)),i}class R{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??l).importNode(i,!0);P.currentNode=e;let h=P.nextNode(),o=0,n=0,r=s[0];for(;void 0!==r;){if(o===r.index){let i;2===r.type?i=new k(h,h.nextSibling,this,t):1===r.type?i=new r.ctor(h,r.name,r.strings,this,t):6===r.type&&(i=new Z(h,this,t)),this._$AV.push(i),r=s[++n]}o!==r?.index&&(h=P.nextNode(),o++)}return P.currentNode=l,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class k{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=A,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=M(this,t,i),a(t)?t===A||null==t||\"\"===t?(this._$AH!==A&&this._$AR(),this._$AH=A):t!==this._$AH&&t!==E&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):d(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==A&&a(this._$AH)?this._$AA.nextSibling.data=t:this.T(l.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=S.createElement(V(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new R(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=C.get(t.strings);return void 0===i&&C.set(t.strings,i=new S(t)),i}k(t){u(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new k(this.O(c()),this.O(c()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,s){for(this._$AP?.(!1,!0,s);t!==this._$AB;){const s=i(t).nextSibling;i(t).remove(),t=s}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class H{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=A,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=A}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=M(this,t,i,0),o=!a(t)||t!==this._$AH&&t!==E,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=M(this,e[s+n],i,n),r===E&&(r=this._$AH[n]),o||=!a(r)||r!==this._$AH[n],r===A?t=A:t!==A&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===A?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class I extends H{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===A?void 0:t}}class L extends H{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==A)}}class z extends H{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=M(this,t,i,0)??A)===E)return;const s=this._$AH,e=t===A&&s!==A||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==A&&(s===A||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class Z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){M(this,t)}}const j={M:h,P:o,A:n,C:1,L:N,R,D:d,V:M,I:k,H,N:L,U:z,B:I,F:Z},B=t.litHtmlPolyfillSupport;B?.(S,k),(t.litHtmlVersions??=[]).push(\"3.3.2\");const D=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new k(i.insertBefore(c(),t),t,void 0,s??{})}return h._$AI(t),h};export{j as _$LH,b as html,T as mathml,E as noChange,A as nothing,D as render,w as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as r}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=globalThis;class i extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const r=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(r,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return r}}i._$litElement$=!0,i[\"finalized\"]=!0,s.litElementHydrateSupport?.({LitElement:i});const o=s.litElementPolyfillSupport;o?.({LitElement:i});const n={_$AK:(t,e,r)=>{t._$AK(e,r)},_$AL:t=>t._$AL};(s.litElementVersions??=[]).push(\"4.2.2\");export{i as LitElement,n as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer(()=>{customElements.define(t,e)}):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","import{notEqual as t,defaultConverter as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:e,reflect:!1,hasChanged:t},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),\"setter\"===n&&((t=Object.create(t)).wrapped=!0),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t,!0,r)},init(e){return void 0!==e&&this.C(o,void 0,t,e),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t,!0,r)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","import { css } from \"lit\";\n// --icon-size: 16px;\n// display: inline-block;\n// background-color: currentColor;\n// mask-size: cover;\n// -webkit-mask-size: cover;\n// vertical-align: text-bottom;\n// position: relative;\n// width: var(--icon-size);\n// height: var(--icon-size);\n\nexport const icons = css`\n :host,\n :root {\n --icon-size: 16px;\n --icon-tags: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z\"/><circle cx=\"7.5\" cy=\"7.5\" r=\".5\"/></svg>');\n --icon-yes: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20 6 9 17l-5-5\" /></svg>');\n --icon-file: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\"><path fill=\"currentColor\" d=\"m213.66 82.34l-56-56A8 8 0 0 0 152 24H56a16 16 0 0 0-16 16v176a16 16 0 0 0 16 16h144a16 16 0 0 0 16-16V88a8 8 0 0 0-2.34-5.66M160 51.31L188.69 80H160ZM200 216H56V40h88v48a8 8 0 0 0 8 8h48z\"/></svg>');\n --icon-loading: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\" width=\"32\" height=\"32\" fill=\"currentColor\"><path opacity=\".25\" d=\"M16 0 A16 16 0 0 0 16 32 A16 16 0 0 0 16 0 M16 4 A12 12 0 0 1 16 28 A12 12 0 0 1 16 4\" /><path d=\"M16 0 A16 16 0 0 1 32 16 L28 16 A12 12 0 0 0 16 4z\"><animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 16 16\" to=\"360 16 16\" dur=\"0.8s\" repeatCount=\"indefinite\" /></path></svg>');\n --icon-arrow: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m9 18 6-6-6-6\" /></svg>');\n --icon-error: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\" /><path d=\"m15 9-6 6\" /><path d=\"m9 9 6 6\" /></svg>');\n --icon-success: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21.801 10A10 10 0 1 1 17 3.335\" /><path d=\"m9 11 3 3L22 4\" /></svg>');\n --icon-refresh: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" /><path d=\"M3 3v5h5\" /></svg>');\n --icon-clear: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\" /><path d=\"M3 6h18\" /><path d=\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\" /></svg>');\n --icon-copy: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" ><rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\" /><path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\" /></svg>');\n --icon-listeners: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" ><path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/><path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/><path d=\"M10 12.5 8 15l2 2.5\"/><path d=\"m14 12.5 2 2.5-2 2.5\"/></svg>');\n --icon-listener: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" ><rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\"/><path d=\"M9 17c2 0 2.8-1 2.8-2.8V10c0-2 1-3.3 3.2-3\"/><path d=\"M9 11.2h5.7\"/></svg>');\n --icon-count: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/><path d=\"M16 8.9V7H8l4 5-4 5h8v-1.9\"/></svg>');\n --icon-flags: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 22V4a1 1 0 0 1 .4-.8A6 6 0 0 1 8 2c3 0 5 2 7.333 2q2 0 3.067-.8A1 1 0 0 1 20 4v10a1 1 0 0 1-.4.8A6 6 0 0 1 16 16c-3 0-5-2-8-2a6 6 0 0 0-4 1.528\"/></svg>');\n --icon-transform: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m16 14 4 4-4 4\"/><path d=\"M20 10a8 8 0 1 0-8 8h8\"/></svg>');\n --icon-dark: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\"/></svg>');\n --icon-delete: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M18 6 6 18\"/><path d=\"m6 6 12 12\"/></svg>');\n --icon-inspect: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"2\" x2=\"5\" y1=\"12\" y2=\"12\"/><line x1=\"19\" x2=\"22\" y1=\"12\" y2=\"12\"/><line x1=\"12\" x2=\"12\" y1=\"2\" y2=\"5\"/><line x1=\"12\" x2=\"12\" y1=\"19\" y2=\"22\"/><circle cx=\"12\" cy=\"12\" r=\"7\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/></svg>');\n }\n .icon {\n display: inline-block;\n background-color: currentColor !important;\n mask-size: cover;\n -webkit-mask-size: cover;\n vertical-align: text-bottom;\n position: relative;\n stroke-width: 1;\n width: var(--icon-size);\n height: var(--icon-size);\n box-sizing: border-box;\n }\n\n /** 图标 */\n .icon.close {\n mask-image: var(--icon-close);\n }\n .icon.tags {\n mask-image: var(--icon-tags);\n }\n\n .icon.yes {\n mask-image: var(--icon-yes);\n }\n\n .icon.file {\n mask-image: var(--icon-file);\n }\n\n .icon.loading {\n mask-image: var(--icon-loading);\n }\n\n .icon.arrow {\n mask-image: var(--icon-arrow);\n }\n\n .icon.error {\n mask-image: var(--icon-error);\n }\n\n .icon.refresh {\n mask-image: var(--icon-refresh);\n }\n\n .icon.clear {\n mask-image: var(--icon-clear);\n }\n\n .icon.copy {\n mask-image: var(--icon-copy);\n }\n .icon.listeners {\n mask-image: var(--icon-listeners);\n }\n .icon.listener {\n mask-image: var(--icon-listener);\n }\n .icon.count {\n mask-image: var(--icon-count);\n }\n .icon.flags {\n mask-image: var(--icon-flags);\n }\n .icon.transform {\n mask-image: var(--icon-transform);\n }\n .icon.dark {\n mask-image: var(--icon-dark);\n }\n .icon.delete {\n mask-image: var(--icon-delete);\n }\n .icon.inspect {\n mask-image: var(--icon-inspect);\n }\n`;\n","import { css } from \"lit\";\nimport { icons } from \"../styles/icons\";\n\nexport const styles = css`\n ${icons}\n :host {\n display: flex;\n flex-direction: column;\n font-family:\n -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial,\n sans-serif;\n font-size: 14px;\n line-height: 1.5;\n color: var(--fe-color-text, #333);\n background: var(--fe-color-bg, #fff);\n border: 1px solid var(--fe-color-border, #e8e8e8);\n border-radius: 6px;\n overflow: hidden;\n }\n\n :host([dark]) {\n --fe-color-text: rgba(255, 255, 255, 0.85);\n --fe-color-bg: #1f1f1f;\n --fe-color-border: #303030;\n --fe-color-header-bg: #141414;\n --fe-color-hover: rgba(255, 255, 255, 0.08);\n --fe-color-text-secondary: rgba(255, 255, 255, 0.45);\n --fe-color-input-bg: rgba(255, 255, 255, 0.08);\n --fe-color-tag-bg: rgba(255, 255, 255, 0.08);\n --fe-color-tag-text: rgba(255, 255, 255, 0.85);\n --fe-color-listener-bg: rgba(255, 255, 255, 0.04);\n --fe-color-listener-border: rgba(255, 255, 255, 0.12);\n --fe-color-listener-hover: rgba(255, 255, 255, 0.08);\n }\n\n .header {\n display: flex;\n align-items: center;\n padding: 1em;\n background: var(--fe-color-header-bg, #fafafa);\n border-bottom: 1px solid var(--fe-color-border, #e8e8e8);\n gap: 8px;\n }\n\n .header-title {\n flex: 1;\n font-size: 16px;\n font-weight: 600;\n color: var(--fe-color-text, #333);\n }\n\n .toolbar {\n display: flex;\n align-items: center;\n padding: 0.75em 1em;\n border-bottom: 1px solid var(--fe-color-border, #e8e8e8);\n gap: 12px;\n }\n\n .filter-input {\n width: 20%;\n min-width: 150px;\n padding: 0.4em 0.8em;\n border: 1px solid var(--fe-color-border, #d9d9d9);\n border-radius: 6px;\n background: var(--fe-color-input-bg, #fff);\n color: var(--fe-color-text, #333);\n font-size: 13px;\n transition: all 0.3s;\n }\n\n .filter-input:focus {\n outline: none;\n border-color: #1890ff;\n box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);\n }\n\n .filter-input::placeholder {\n color: var(--fe-color-text-secondary, #bfbfbf);\n }\n\n .toolbar-spacer {\n flex: 1;\n color: var(--fe-color-text-secondary, #999);\n font-size: 12px;\n }\n\n .btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 0.4em 0.8em;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--fe-color-text, #555);\n font-size: 13px;\n cursor: pointer;\n transition: all 0.3s;\n user-select: none;\n }\n\n .btn:hover {\n color: #1890ff;\n background: rgba(24, 144, 255, 0.06);\n }\n\n .btn-pressed {\n color: #1890ff;\n background: rgba(24, 144, 255, 0.1);\n }\n\n .btn-icon {\n padding: 0.2em;\n width: 24px;\n height: 24px;\n }\n\n .btn-pressed {\n color: #1890ff;\n background: rgba(24, 144, 255, 0.1);\n }\n\n .logs {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 0;\n }\n\n .log-item {\n display: flex;\n align-items: flex-start;\n padding: 0.5em;\n border-radius: 4px;\n transition: background 0.2s;\n border-bottom: 1px solid var(--fe-color-border, #fafafa);\n }\n\n .log-item:hover {\n background: var(--fe-color-hover, #fcfcfc);\n }\n\n .log-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 0;\n }\n\n .log-header {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n padding: 0;\n }\n\n .log-header .icon {\n --icon-size: 16px;\n color: #818181;\n flex-shrink: 0;\n }\n\n .log-type {\n flex: 1;\n font-weight: 500;\n color: var(--fe-color-text, #333);\n font-family: \"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace;\n }\n\n .log-time {\n font-size: 12px;\n color: var(--fe-color-text-secondary, #999);\n }\n\n .tag {\n display: inline-flex;\n align-items: center;\n padding: 0.1em 0.4em;\n border-radius: 5px;\n font-size: 11px;\n white-space: nowrap;\n background: var(--fe-color-tag-bg, #f0f0f0);\n color: var(--fe-color-tag-text, #666);\n }\n\n .tag-blue {\n background: #e6f7ff;\n color: #1890ff;\n border: 1px solid #91d5ff;\n }\n\n .tag-green {\n background: #f6ffed;\n color: #52c41a;\n border: 1px solid #b7eb8f;\n }\n\n .tag-orange {\n background: #fff7e6;\n color: #fa8c16;\n border: 1px solid #ffd591;\n }\n\n .tag-red {\n background: #fff1f0;\n color: #ff4d4f;\n border: 1px solid #ffa39e;\n }\n\n .tag-purple {\n background: #f9f0ff;\n color: #722ed1;\n border: 1px solid #d3adf7;\n }\n\n .tag-gray {\n background: #f5f5f5;\n color: #8c8c8c;\n border: 1px solid #d9d9d9;\n }\n\n /* 暗黑模式下的 tag 颜色样式 */\n :host([dark]) .tag-blue {\n background: rgba(24, 144, 255, 0.15);\n color: #40a9ff;\n border: 1px solid rgba(24, 144, 255, 0.3);\n }\n\n :host([dark]) .tag-green {\n background: rgba(82, 196, 26, 0.15);\n color: #73d13d;\n border: 1px solid rgba(82, 196, 26, 0.3);\n }\n\n :host([dark]) .tag-orange {\n background: rgba(250, 140, 22, 0.15);\n color: #ffa940;\n border: 1px solid rgba(250, 140, 22, 0.3);\n }\n\n :host([dark]) .tag-red {\n background: rgba(255, 77, 79, 0.15);\n color: #ff7875;\n border: 1px solid rgba(255, 77, 79, 0.3);\n }\n\n :host([dark]) .tag-purple {\n background: rgba(114, 46, 209, 0.15);\n color: #b37feb;\n border: 1px solid rgba(114, 46, 209, 0.3);\n }\n\n :host([dark]) .tag-gray {\n background: rgba(140, 140, 140, 0.15);\n color: #bfbfbf;\n border: 1px solid rgba(140, 140, 140, 0.3);\n }\n\n .log-payload {\n font-size: 12px;\n color: var(--fe-color-text-secondary, #999);\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n line-height: 1.4;\n padding: 0em 20px;\n padding-top: 0px;\n }\n\n .log-listeners {\n padding: 0em 20px;\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n }\n\n .log-listeners-visible {\n display: flex;\n }\n\n .log-listeners-hidden {\n display: none;\n }\n\n .listener {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 0.25em 0.5em;\n border-radius: 8px;\n font-size: 12px;\n background: rgba(0, 0, 0, 0.03);\n border: 1px solid rgba(0, 0, 0, 0.06);\n transition: all 0.2s;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);\n cursor: pointer;\n }\n\n .listener:hover {\n background: rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);\n }\n\n /* 暗黑模式下的 listener 样式 */\n :host([dark]) .listener {\n background: var(--fe-color-listener-bg, rgba(255, 255, 255, 0.04));\n border: 1px solid var(--fe-color-listener-border, rgba(255, 255, 255, 0.12));\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\n }\n\n :host([dark]) .listener:hover {\n background: var(--fe-color-listener-hover, rgba(255, 255, 255, 0.08));\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);\n }\n\n .listener-status {\n width: 14px;\n height: 14px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n\n .listener-status .icon {\n --icon-size: 12px;\n }\n\n .listener-status.running .icon {\n color: #1890ff;\n }\n\n .listener-status.yes .icon {\n color: #52c41a;\n }\n\n .listener-status.error .icon {\n color: #ff4d4f;\n }\n\n .listener-name {\n font-weight: 500;\n color: var(--fe-color-text, #333);\n font-family: \"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace;\n font-size: 11px;\n }\n\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 2em;\n color: var(--fe-color-text-secondary, #999);\n text-align: center;\n }\n\n .empty-state .icon {\n --icon-size: 48px;\n opacity: 0.3;\n }\n\n /* Emitter 下拉容器 */\n .emitter-dropdown-container {\n position: relative;\n flex-shrink: 0;\n }\n\n /* Emitter 下拉占位符 */\n .emitter-dropdown-spacer {\n flex: 1;\n }\n\n /* 下拉触发按钮 */\n .emitter-dropdown-trigger {\n display: flex;\n align-items: center;\n gap: 6px;\n width: 100%;\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n transition: all 0.3s;\n }\n\n .emitter-dropdown-trigger:hover .header-title {\n color: #1890ff;\n }\n\n /* 下拉箭头 */\n .dropdown-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n border-left: 4px solid transparent;\n border-right: 4px solid transparent;\n border-top: 5px solid var(--fe-color-text, #333);\n transition: transform 0.3s;\n opacity: 0.6;\n }\n\n .dropdown-arrow.open {\n transform: rotate(180deg);\n }\n\n /* 暗黑模式下的下拉箭头 */\n :host([dark]) .dropdown-arrow {\n border-top-color: rgba(255, 255, 255, 0.85);\n }\n\n /* 下拉菜单容器 */\n .emitter-dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n margin-top: 4px;\n min-width: 180px;\n background: #ffffff;\n border: 1px solid #e8e8e8;\n border-radius: 6px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n z-index: 1000;\n overflow: hidden;\n animation: dropdownFadeIn 0.2s ease-out;\n }\n\n @keyframes dropdownFadeIn {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n /* 菜单项 */\n .emitter-menu-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 16px;\n cursor: pointer;\n transition: background 0.2s;\n font-size: 14px;\n color: #333;\n text-align: left;\n }\n\n .emitter-menu-item:hover {\n background: #f5f5f5;\n }\n\n .emitter-menu-item.active {\n background: #e6f7ff;\n color: #1890ff;\n font-weight: 500;\n }\n\n /* 菜单项图标占位区域 */\n .menu-item-icon {\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n .menu-item-icon .icon {\n --icon-size: 14px;\n color: #52c41a;\n }\n\n /* 菜单项标签 */\n .menu-item-label {\n flex: 1;\n text-align: left;\n }\n\n /* 通用下拉菜单样式(供 renderMenu 使用) */\n .dropdown-menu {\n padding: 4px 0;\n min-width: 150px;\n background: var(--fe-color-bg, #fff);\n border: 1px solid var(--fe-color-border, #e8e8e8);\n border-radius: 6px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n }\n\n .dropdown-menu-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n cursor: pointer;\n transition: background 0.2s;\n font-size: 14px;\n color: var(--fe-color-text, #333);\n }\n\n .dropdown-menu-item:hover {\n background: var(--fe-color-hover, #f5f5f5);\n }\n\n .dropdown-menu-item.active {\n background: #e6f7ff;\n color: #1890ff;\n }\n\n :host([dark]) .emitter-dropdown-menu {\n background: #2a2a2a;\n border-color: #404040;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);\n }\n\n :host([dark]) .emitter-menu-item {\n color: rgba(255, 255, 255, 0.85);\n }\n\n :host([dark]) .emitter-menu-item:hover {\n background: rgba(255, 255, 255, 0.06);\n }\n\n :host([dark]) .emitter-menu-item.active {\n background: rgba(24, 144, 255, 0.15);\n color: #40a9ff;\n }\n\n :host([dark]) .dropdown-menu {\n background: var(--fe-color-bg, #2a2a2a);\n border-color: var(--fe-color-border, #404040);\n }\n\n :host([dark]) .dropdown-menu-item.active {\n background: rgba(24, 144, 255, 0.15);\n color: #40a9ff;\n }\n`;\n","// packages/viewer/src/listenerViewer/styles.ts\nimport { css } from \"lit\";\nimport { icons } from \"../styles/icons\";\n\nexport const styles = css`\n ${icons}\n :host {\n display: flex;\n flex-direction: column;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n font-size: 14px;\n line-height: 1.5;\n color: var(--fe-color-text, #333);\n background: var(--fe-color-bg, #fff);\n overflow: hidden;\n position: relative;\n }\n\n :host([dark]) {\n --fe-color-text: rgba(255, 255, 255, 0.85);\n --fe-color-bg: #1f1f1f;\n --fe-color-border: #303030;\n --fe-color-header-bg: #141414;\n --fe-color-hover: rgba(255, 255, 255, 0.08);\n --fe-color-text-secondary: rgba(255, 255, 255, 0.45);\n --fe-color-bg-secondary: rgba(255, 255, 255, 0.05);\n --fe-color-tag-bg: rgba(255, 255, 255, 0.08);\n --fe-color-tag-text: rgba(255, 255, 255, 0.85);\n --fe-left-width: 33.33%;\n }\n\n :host {\n --fe-left-width: 30%;\n }\n\n .toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0.75em 1em;\n border-bottom: 1px solid var(--fe-color-border, #e8e8e8);\n background: var(--fe-color-header-bg, #fff);\n }\n\n .toolbar-title {\n font-size: 14px;\n /* font-weight: 600;\n color: var(--fe-color-text, #333); */\n }\n\n .main-container {\n display: flex;\n flex: 1;\n overflow: hidden;\n position: relative;\n }\n\n .tree-panel {\n flex: 0 0 var(--fe-left-width, 33.33%);\n overflow-y: auto;\n overflow-x: hidden;\n border-right: 1px solid var(--fe-color-border, #e8e8e8);\n padding: 8px;\n }\n\n .tree-panel::-webkit-scrollbar {\n width: 2px;\n }\n .tree-panel::-webkit-scrollbar-thumb {\n background: transparent;\n }\n .tree-panel:hover::-webkit-scrollbar-thumb {\n background: rgba(0, 0, 0, 0.2);\n }\n\n .listeners-panel {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 8px;\n padding-left: 0px;\n }\n\n .listeners-panel::-webkit-scrollbar {\n width: 2px;\n }\n .listeners-panel::-webkit-scrollbar-thumb {\n background: transparent;\n }\n .listeners-panel:hover::-webkit-scrollbar-thumb {\n background: rgba(0, 0, 0, 0.2);\n }\n\n .resizer {\n width: 8px;\n cursor: col-resize;\n background: transparent;\n position: relative;\n z-index: 10;\n flex-shrink: 0;\n user-select: none;\n }\n\n .resizer::after {\n content: \"\";\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n width: 4px;\n height: 40px;\n background: var(--fe-color-border, #e8e8e8);\n border-radius: 2px;\n opacity: 0;\n transition:\n opacity 0.2s,\n height 0.2s;\n }\n\n .resizer:hover::after {\n opacity: 1;\n background: #1890ff;\n }\n\n .resizer.dragging::after {\n opacity: 1;\n background: #1890ff;\n height: 60px;\n }\n\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 3em;\n padding-left: 0;\n color: var(--fe-color-text-secondary, #999);\n text-align: center;\n }\n\n .btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 0.4em 0.8em;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--fe-color-text, #333);\n font-size: 13px;\n cursor: pointer;\n transition: all 0.3s;\n user-select: none;\n }\n\n .btn:hover {\n color: #1890ff;\n background: rgba(24, 144, 255, 0.06);\n }\n\n .btn-icon {\n padding: 0.2em;\n width: 24px;\n height: 24px;\n }\n\n .tag {\n display: inline-flex;\n align-items: center;\n padding: 0.1em 0.4em;\n border-radius: 5px;\n font-size: 11px;\n white-space: nowrap;\n background: var(--fe-color-tag-bg, #f0f0f0);\n color: var(--fe-color-tag-text, #666);\n }\n\n .tree-node {\n display: flex;\n align-items: center;\n padding: 4px 8px;\n cursor: pointer;\n border-radius: 4px;\n transition: background 0.2s;\n user-select: none;\n }\n\n .tree-node:hover {\n background: var(--fe-color-hover, #fafafa);\n }\n\n .tree-node.selected {\n background: rgba(24, 144, 255, 0.1);\n }\n\n .tree-node-toggle {\n width: 16px;\n height: 16px;\n margin-right: 4px;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.2s;\n }\n\n .tree-node-toggle.expanded {\n transform: rotate(90deg);\n }\n\n .tree-node-toggle.hidden {\n visibility: hidden;\n }\n\n .tree-node-content {\n display: flex;\n align-items: center;\n gap: 6px;\n flex: 1;\n }\n\n .tree-node-label {\n font-family: \"SFMono-Regular\", Consolas, monospace;\n font-size: 13px;\n flex-grow: 1;\n }\n\n .tree-node-badge {\n background: var(--fe-color-tag-bg, #f0f0f0);\n color: var(--fe-color-tag-text, #666);\n padding: 2px 6px;\n border-radius: 8px;\n font-size: 11px;\n }\n\n .tree-children {\n padding-left: 16px;\n }\n\n .tag {\n display: inline-flex;\n align-items: center;\n padding: 0.1em 0.4em;\n border-radius: 5px;\n font-size: 11px;\n white-space: nowrap;\n background: var(--fe-color-tag-bg, #f0f0f0);\n color: var(--fe-color-tag-text, #666);\n }\n\n /* 保留消息卡片样式 */\n .retained-message-card {\n margin-bottom: 12px;\n border-radius: 6px;\n border: 1px solid #ffa39e;\n background: #fff1f0;\n overflow: hidden;\n transition: all 0.2s;\n }\n\n .retained-message-card:hover {\n box-shadow: 0 2px 8px rgba(255, 77, 79, 0.15);\n }\n\n .retained-message-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 12px;\n background: rgba(255, 77, 79, 0.1);\n border-bottom: 1px solid #ffa39e;\n }\n\n .retained-message-title {\n flex: 1;\n font-size: 13px;\n font-weight: 500;\n color: #ff4d4f;\n }\n\n .retained-message-actions {\n display: flex;\n gap: 4px;\n }\n\n .retained-message-content {\n padding: 4px;\n }\n\n .retained-message-text {\n margin: 0;\n padding: 8px;\n background: rgba(255, 255, 255, 0.6);\n border-radius: 4px;\n font-family: \"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace;\n font-size: 12px;\n line-height: 1.5;\n color: #262626;\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-all;\n }\n\n /* 暗黑模式下的保留消息卡片 */\n .retained-message-card.dark,\n :host([dark]) .retained-message-card {\n border: 1px solid rgba(255, 77, 79, 0.4);\n background: rgba(255, 77, 79, 0.08);\n }\n\n .retained-message-card.dark:hover,\n :host([dark]) .retained-message-card:hover {\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);\n }\n\n .retained-message-card.dark .retained-message-header,\n :host([dark]) .retained-message-header {\n background: rgba(255, 77, 79, 0.15);\n border-bottom: 1px solid rgba(255, 77, 79, 0.3);\n }\n\n .retained-message-card.dark .retained-message-title,\n :host([dark]) .retained-message-title {\n color: #ff7875;\n }\n\n .retained-message-card.dark .retained-message-text,\n :host([dark]) .retained-message-text {\n background: rgba(0, 0, 0, 0.2);\n color: rgba(255, 255, 255, 0.85);\n }\n\n @media (max-width: 568px) {\n .main-container {\n flex-direction: column;\n }\n\n .tree-panel {\n flex: 0 0 40%;\n border-right: none;\n border-bottom: 1px solid var(--fe-color-border, #e8e8e8);\n }\n\n .resizer {\n display: none;\n }\n }\n`;\n","// packages/viewer/src/listenerViewer/listenerCardStyles.ts\nimport { css } from \"lit\";\n\nexport const styles = css`\n :host {\n display: block;\n }\n\n :host([dark]) {\n --fe-color-card-bg: rgba(255, 255, 255, 0.04);\n --fe-color-card-border: rgba(255, 255, 255, 0.12);\n --fe-color-card-hover: rgba(255, 255, 255, 0.08);\n }\n\n .listener-card {\n display: table;\n width: 100%;\n padding: 0px;\n margin-bottom: 8px;\n border-radius: 6px;\n border: 1px solid var(--fe-color-border, #e8e8e8);\n transition: all 0.2s;\n box-sizing: border-box;\n background-color: #f9f9f9;\n }\n\n .listener-card:hover {\n /* border-color: #1890ff; */\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n }\n\n :host([dark]) .listener-card {\n background-color: var(--fe-color-card-bg, rgba(255, 255, 255, 0.04));\n border: 1px solid var(--fe-color-card-border, rgba(255, 255, 255, 0.12));\n }\n\n :host([dark]) .listener-card:hover {\n background-color: var(--fe-color-card-hover, rgba(255, 255, 255, 0.08));\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);\n }\n\n .listener-row {\n display: table-row;\n border-bottom: 1px solid var(--fe-color-border, #e8e8e8);\n }\n\n .listener-row:last-child {\n border-bottom: none;\n }\n\n .listener-cell {\n display: table-cell;\n padding: 4px 8px;\n vertical-align: middle;\n border-right: 1px solid var(--fe-color-border, #e8e8e8);\n }\n\n .listener-cell:first-child {\n width: 80px;\n min-width: 80px;\n }\n\n .listener-cell:last-child {\n border-right: none;\n }\n\n .listener-label {\n color: var(--fe-color-text-secondary, #999);\n font-size: 12px;\n font-weight: 500;\n }\n\n .listener-value {\n color: var(--fe-color-text, #333);\n font-size: 13px;\n }\n\n .listener-function {\n font-family: \"SFMono-Regular\", Consolas, monospace;\n color: #1890ff;\n cursor: pointer;\n text-decoration: underline;\n }\n\n .listener-function:hover {\n color: #40a9ff;\n }\n\n :host([dark]) .listener-function {\n color: #40a9ff;\n }\n\n :host([dark]) .listener-function:hover {\n color: #69c0ff;\n }\n\n .tag {\n display: inline-flex;\n align-items: center;\n padding: 0.1em 0.4em;\n border-radius: 5px;\n font-size: 11px;\n white-space: nowrap;\n background: var(--fe-color-tag-bg, #f0f0f0);\n color: var(--fe-color-tag-text, #666);\n }\n\n .empty-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1em;\n color: var(--fe-color-text-secondary, #999);\n text-align: center;\n }\n`;\n","export function removeItem(arr: any[], value: any) {\n for (let i = arr.length - 1; i >= 0; i--) {\n if (arr[i] === value) {\n arr.splice(i, 1);\n }\n }\n}\n","import { html } from \"lit\";\n\nexport interface TagColors {\n bg: string;\n color: string;\n border?: string;\n}\n\n// 默认颜色方案\nconst defaultColors: TagColors = {\n bg: \"#f0f0f0\",\n color: \"#666\",\n border: \"#d9d9d9\",\n};\n\n// 预定义颜色方案(亮色模式)\nconst colorSchemes: Record<string, TagColors> = {\n blue: { bg: \"#e6f7ff\", color: \"#1890ff\", border: \"#91d5ff\" },\n green: { bg: \"#f6ffed\", color: \"#52c41a\", border: \"#b7eb8f\" },\n orange: { bg: \"#fff7e6\", color: \"#fa8c16\", border: \"#ffd591\" },\n red: { bg: \"#fff1f0\", color: \"#ff4d4f\", border: \"#ffa39e\" },\n purple: { bg: \"#f9f0ff\", color: \"#722ed1\", border: \"#d3adf7\" },\n gray: { bg: \"#f5f5f5\", color: \"#8c8c8c\", border: \"#d9d9d9\" },\n};\n\n// 预定义颜色方案(暗黑模式)\nconst darkColorSchemes: Record<string, TagColors> = {\n blue: { bg: \"rgba(24, 144, 255, 0.15)\", color: \"#40a9ff\", border: \"rgba(24, 144, 255, 0.3)\" },\n green: { bg: \"rgba(82, 196, 26, 0.15)\", color: \"#73d13d\", border: \"rgba(82, 196, 26, 0.3)\" },\n orange: { bg: \"rgba(250, 140, 22, 0.15)\", color: \"#ffa940\", border: \"rgba(250, 140, 22, 0.3)\" },\n red: { bg: \"rgba(255, 77, 79, 0.15)\", color: \"#ff7875\", border: \"rgba(255, 77, 79, 0.3)\" },\n purple: { bg: \"rgba(114, 46, 209, 0.15)\", color: \"#b37feb\", border: \"rgba(114, 46, 209, 0.3)\" },\n gray: { bg: \"rgba(140, 140, 140, 0.15)\", color: \"#bfbfbf\", border: \"rgba(140, 140, 140, 0.3)\" },\n};\n\n/**\n * 根据文本生成颜色\n */\nfunction getTagColor(text: string): string {\n const colors = [\"blue\", \"green\", \"orange\", \"red\", \"purple\"];\n let hash = 0;\n for (let i = 0; i < text.length; i++) {\n hash = text.charCodeAt(i) + ((hash << 5) - hash);\n }\n return colors[Math.abs(hash) % colors.length];\n}\n\nexport type TagOptions = {\n tooltip?: string;\n onClick?: () => void;\n className?: string;\n styles: string;\n dark?: boolean;\n};\n\n/**\n * 渲染标签组件\n * @param text - 标签文本\n * @param color - 颜色名称 (blue, green, orange, red, purple, gray)\n * @param tooltip - 提示文本\n * @param className - 额外的CSS类名\n * @param dark - 是否使用暗黑模式\n * @returns TemplateResult\n */\nexport function renderTag(\n text: string,\n color?: keyof typeof colorSchemes,\n tooltip?: string,\n className?: string,\n dark?: boolean,\n): ReturnType<typeof html>;\n\n/**\n * 渲染标签组件(选项模式)\n * @param text - 标签文本\n * @param options - 标签选项\n * @returns TemplateResult\n */\nexport function renderTag(\n text: string,\n options?: TagOptions,\n): ReturnType<typeof html>;\n\nexport function renderTag(\n text: string,\n colorOrOptions?: keyof typeof colorSchemes | TagOptions,\n tooltip?: string,\n className?: string,\n dark?: boolean,\n) {\n // 判断是选项模式还是颜色模式\n const isOptionsMode =\n typeof colorOrOptions === \"object\" && colorOrOptions !== null && \"styles\" in colorOrOptions;\n\n if (isOptionsMode) {\n // 选项模式\n const options = colorOrOptions as TagOptions;\n const isDark = options.dark ?? dark ?? false;\n const classes = [\"tag\", isDark ? \"dark\" : \"\", options.className].filter(Boolean).join(\" \");\n\n return html`<span\n class=\"${classes}\"\n title=\"${options.tooltip || text}\"\n style=\"${options.styles}\"\n @click=\"${options.onClick}\"\n >\n ${text}\n </span>`;\n } else {\n // 颜色模式\n const color = colorOrOptions as keyof typeof colorSchemes | undefined;\n const colorKey = color || getTagColor(text);\n const isDark = dark ?? false;\n const schemes = isDark ? darkColorSchemes : colorSchemes;\n const colors = schemes[colorKey] || defaultColors;\n\n const classes = [\"tag\", className].filter(Boolean).join(\" \");\n\n return html`<span\n class=\"${classes}\"\n title=\"${tooltip || text}\"\n style=\"display: inline-flex; align-items: center; padding: 0.1em 0.4em; border-radius: 5px; font-size: 11px; white-space: nowrap; background: ${colors.bg}; color: ${colors.color}; ${\n colors.border ? `border: 1px solid ${colors.border};` : \"\"\n }\"\n >\n ${text}\n </span>`;\n }\n}\n","import { html } from \"lit\";\n\nexport interface ButtonOptions {\n icon?: string;\n pressed?: boolean;\n className?: string;\n title?: string;\n}\n\n/**\n * 渲染按钮组件\n * @param content - 按钮内容\n * @param onClick - 点击事件处理函数\n * @param options - 按钮选项\n * @returns TemplateResult\n */\nexport function renderButton(\n content: unknown,\n onClick: () => void,\n options: ButtonOptions = {},\n) {\n const { icon, pressed, className = \"\", title } = options;\n const classes = [\"btn\", className];\n if (pressed) classes.push(\"btn-pressed\");\n if (icon) classes.push(\"btn-icon\");\n\n return html`<button\n class=\"${classes.join(\" \")}\"\n title=\"${title || \"\"}\"\n @click=\"${onClick}\"\n style=\"display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 0.4em 0.8em; border: none; border-radius: 4px; background: transparent; cursor: pointer; transition: all 0.3s; user-select: none; ${\n icon ? \"padding: 0.2em; width: 24px; height: 24px;\" : \"\"\n }\"\n >\n ${icon ? html`<span class=\"icon ${icon}\"></span>` : \"\"}\n ${content}\n </button>`;\n}\n","import { html } from \"lit\";\n\n/**\n * 渲染图标组件\n * @param name - 图标名称(CSS类名)\n * @param tooltip - 提示文本\n * @returns TemplateResult\n */\nexport function renderIcon(name: string, tooltip?: string) {\n if (tooltip) {\n return html`<span class=\"icon ${name}\" title=\"${tooltip}\"></span>`;\n } else {\n return html`<span class=\"icon ${name}\"></span>`;\n }\n}\n","import { html } from \"lit\";\nimport { renderButton } from \"./index\";\n\nexport interface RetainMessageOptions {\n message: any;\n pathKey: string;\n dark?: boolean;\n onDelete?: (pathKey: string) => void;\n onPrint?: (message: any) => void;\n onCopy?: (message: any) => void;\n}\n\n/**\n * 渲染保留消息卡片\n * @param options - 保留消息选项\n * @returns TemplateResult\n */\nexport function renderRetainMessage(options: RetainMessageOptions) {\n const { message, pathKey, dark = false, onDelete, onPrint, onCopy } = options;\n\n const messageStr = JSON.stringify(message, null, 2);\n const hasMore = messageStr.split(\"\\n\").length > 15;\n const displayStr = hasMore\n ? messageStr.split(\"\\n\").slice(0, 5).join(\"\\n\") + \"\\n...\"\n : messageStr;\n\n return html`\n <div class=\"retained-message-card${dark ? \" dark\" : \"\"}\">\n <div class=\"retained-message-header\">\n <span class=\"retained-message-title\">保留消息</span>\n <div class=\"retained-message-actions\">\n ${renderButton(\"\", () => onDelete?.(pathKey), {\n icon: \"delete\",\n className: \"btn-icon\",\n title: \"删除保留消息\",\n })}\n ${renderButton(\"\", () => onPrint?.(message), {\n icon: \"listeners\",\n className: \"btn-icon\",\n title: \"打印到控制台\",\n })}\n ${renderButton(\"\", () => onCopy?.(message), {\n icon: \"copy\",\n className: \"btn-icon\",\n title: \"复制消息内容\",\n })}\n </div>\n </div>\n <div class=\"retained-message-content\">\n <pre class=\"retained-message-text\">${displayStr}</pre>\n </div>\n </div>\n `;\n}\n","export const languages = {\n cn: {\n // eventViewer\n \"eventViewer.filterPlaceholder\": \"事件类型过滤\",\n \"eventViewer.normalMode\": \"正常模式\",\n \"eventViewer.darkMode\": \"暗黑模式\",\n \"eventViewer.showEvent\": \"显示事件\",\n \"eventViewer.showListeners\": \"显示注册的监听器\",\n \"eventViewer.totalLogs\": \"共{0}条\",\n \"eventViewer.hideListenerDetails\": \"隐藏监听器详情\",\n \"eventViewer.showListenerDetails\": \"显示监听器详情\",\n \"eventViewer.clear\": \"清空\",\n \"eventViewer.extendedFlags\": \"扩展标识\",\n \"eventViewer.transformed\": \"经过转换\",\n \"eventViewer.serialNumber\": \"序号\",\n \"eventViewer.totalListeners\": \"共{0}个监听器\",\n \"eventViewer.retainLastEvent\": \"保留最后一次事件数据\",\n \"eventViewer.rawEventType\": \"原始事件类型: {0}\",\n \"eventViewer.executionTime\": \"执行耗时\",\n \"eventViewer.copyMessage\": \"复制事件消息\",\n \"eventViewer.triggerTime\": \"触发时间\",\n \"eventViewer.eventType\": \"事件类型\",\n \"eventViewer.listenerTag\": \"监听器标签: {0}\",\n \"eventViewer.executionCount\": \"执行次数计数(当前/总数)\",\n \"eventViewer.listenerFlags\": \"监听器标识flags\",\n \"eventViewer.executing\": \"执行中...\",\n \"eventViewer.error\": \"错误: {0}\",\n \"eventViewer.noEventLogs\": \"暂无事件日志\",\n \"eventViewer.listener\": \"监听器: {0}\",\n \"eventViewer.executionResult\": \"执行结果:\",\n \"eventViewer.switchEmitter\": \"切换 Emitter\",\n \"eventViewer.inspect\": \"注册实例到控制台:{}\",\n // listenerViewer\n \"listenerViewer.registeredListeners\": \"已注册监听器\",\n \"listenerViewer.refresh\": \"刷新\",\n \"listenerViewer.noRegisteredListeners\": \"暂无注册的监听器\",\n \"listenerViewer.nodeHasNoListeners\": \"该节点暂无监听器\",\n \"listenerViewer.listener\": \"监听器: {0}\",\n \"listenerViewer.executionCount\": \"执行次数: {0}/{1}\",\n \"listenerViewer.tag\": \"标签: {0}\",\n \"listenerViewer.flags\": \"标识: {0}\",\n \"listenerViewer.retainedMessage\": \"保留消息\",\n // listenerCard\n \"listenerCard.invalidData\": \"监听器数据无效\",\n \"listenerCard.listenerFunction\": \"监听函数\",\n \"listenerCard.executionCount\": \"执行次数\",\n \"listenerCard.tag\": \"标签\",\n \"listenerCard.flags\": \"标识\",\n \"listenerCard.returnValue\": \"返回值\",\n \"listenerCard.clickToConsole\": \"点击在控制台输出监听器信息\",\n \"listenerCard.clickToConsoleResult\": \"单击显示在控制台\",\n \"listenerCard.anonymous\": \"anonymous\",\n },\n en: {\n // eventViewer\n \"eventViewer.filterPlaceholder\": \"Filter by event type\",\n \"eventViewer.normalMode\": \"Normal mode\",\n \"eventViewer.darkMode\": \"Dark mode\",\n \"eventViewer.showEvent\": \"Show events\",\n \"eventViewer.showListeners\": \"Show registered listeners\",\n \"eventViewer.totalLogs\": \"Total {0}\",\n \"eventViewer.hideListenerDetails\": \"Hide listener details\",\n \"eventViewer.showListenerDetails\": \"Show listener details\",\n \"eventViewer.clear\": \"Clear\",\n \"eventViewer.extendedFlags\": \"Extended flags\",\n \"eventViewer.transformed\": \"Transformed\",\n \"eventViewer.serialNumber\": \"Serial number\",\n \"eventViewer.totalListeners\": \"{0} listeners\",\n \"eventViewer.retainLastEvent\": \"Retain last event data\",\n \"eventViewer.rawEventType\": \"Raw event type: {0}\",\n \"eventViewer.executionTime\": \"Execution time\",\n \"eventViewer.copyMessage\": \"Copy event message\",\n \"eventViewer.triggerTime\": \"Trigger time\",\n \"eventViewer.eventType\": \"Event type\",\n \"eventViewer.listenerTag\": \"Listener tag: {0}\",\n \"eventViewer.executionCount\": \"Execution count (current/total)\",\n \"eventViewer.listenerFlags\": \"Listener flags\",\n \"eventViewer.executing\": \"Executing...\",\n \"eventViewer.error\": \"Error: {0}\",\n \"eventViewer.noEventLogs\": \"No event logs\",\n \"eventViewer.listener\": \"Listener: {0}\",\n \"eventViewer.executionResult\": \"Execution result:\",\n \"eventViewer.switchEmitter\": \"Switch Emitter\",\n \"eventViewer.inspect\": \"Inject to console: {}\",\n // listenerViewer\n \"listenerViewer.registeredListeners\": \"Registered Listeners\",\n \"listenerViewer.refresh\": \"Refresh\",\n \"listenerViewer.noRegisteredListeners\": \"No registered listeners\",\n \"listenerViewer.nodeHasNoListeners\": \"This node has no listeners\",\n \"listenerViewer.listener\": \"Listener: {0}\",\n \"listenerViewer.executionCount\": \"Execution count: {0}/{1}\",\n \"listenerViewer.tag\": \"Tag: {0}\",\n \"listenerViewer.flags\": \"Flags: {0}\",\n \"listenerViewer.retainedMessage\": \"Retained Message\",\n // listenerCard\n \"listenerCard.invalidData\": \"Invalid listener data\",\n \"listenerCard.listenerFunction\": \"Listener function\",\n \"listenerCard.executionCount\": \"Execution count\",\n \"listenerCard.tag\": \"Tag\",\n \"listenerCard.flags\": \"Flags\",\n \"listenerCard.returnValue\": \"Return value\",\n \"listenerCard.clickToConsole\": \"Click to output listener info to console\",\n \"listenerCard.clickToConsoleResult\": \"Click to show in console\",\n \"listenerCard.anonymous\": \"anonymous\",\n },\n};\n","import { languages } from \"./languages\";\n\nlet language: string = \"cn\";\n\nexport function setLanguage(lang: string = language) {\n if (lang in languages) language = lang;\n}\n\n/**\n * 翻译内容\n *\n * @param key\n */\nexport function t(key: string, ...args: any[]) {\n const words = (languages as any)[language] || languages.cn;\n const word = key in words ? words[key] : key;\n // 定义正则匹配 {任意内容} 格式的占位符(非贪婪匹配)\n const placeholderRegex = /\\{[^}]*\\}/g;\n let argIndex = 0;\n\n return word.replace(placeholderRegex, () => {\n // 如果有剩余参数,使用参数替换;否则保留原占位符\n if (argIndex < args.length) {\n return String(args[argIndex++]);\n }\n // 无参数时返回原占位符(保持 {xxx} 格式)\n return placeholderRegex.exec(word)?.[0] || \"\";\n });\n}\n","// packages/viewer/src/listenerViewer/listenerCard.ts\nimport { LitElement, html } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { styles } from \"./listenerCardStyles\";\nimport type { FastEventListenerMeta } from \"fastevent\";\nimport type { ItemOf } from \"../types\";\nimport { removeItem, renderTag } from \"../utils\";\nimport { t, setLanguage } from \"../utils/t\";\nimport {\n isPathMatched,\n type FastEvent,\n type FastEventHooks,\n type FastEventListenerNode,\n type TypedFastEventMessage,\n} from \"fastevent\";\n\n/**\n * fastevent-listener-card 组件 - 显示单个监听器的详细信息\n */\n@customElement(\"fastevent-listener-card\")\nexport class FastEventListenerCard extends LitElement {\n static styles = styles;\n\n @property({ attribute: false })\n emitter?: FastEvent<any, any, any>;\n\n @property({ attribute: false })\n listener?: FastEventListenerMeta;\n @property({ type: Boolean, reflect: true })\n dark = false;\n @property({ type: String })\n type?: string;\n\n @property({ type: String, reflect: true })\n lang = \"cn\";\n\n connectedCallback(): void {\n super.connectedCallback();\n this._addListenerHook();\n setLanguage(this.lang);\n }\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this._removeListenerHook();\n }\n\n override willUpdate(changedProperties: Map<PropertyKey, unknown>): void {\n super.willUpdate(changedProperties);\n if (changedProperties.has(\"lang\")) {\n setLanguage(this.lang);\n }\n }\n\n private _onAfterExecuteListener: ItemOf<FastEventHooks[\"AfterExecuteListener\"]> = (\n message: TypedFastEventMessage,\n _returns: any[],\n _listeners: FastEventListenerNode[],\n ) => {\n //\n if (isPathMatched(message.type.split(\"/\"), this.type!.split(\"/\"))) {\n this.requestUpdate();\n }\n };\n\n private _addListenerHook() {\n if (this.emitter) {\n this.emitter.hooks.AfterExecuteListener.push(this._onAfterExecuteListener!);\n }\n }\n private _removeListenerHook() {\n if (this.emitter) {\n removeItem(this.emitter.hooks.AfterExecuteListener, this._onAfterExecuteListener!);\n }\n }\n\n private _formatListenerCount(listener: FastEventListenerMeta): string {\n const [, total, executed] = listener;\n return total === 0 ? `${executed}/∞` : `${executed}/${total}`;\n }\n\n getFunctionPosition(fn: Function) {\n // 将函数转换为字符串并尝试定位\n const fnStr = fn.toString();\n\n // 使用 Error.stack 来获取当前位置\n const stack = new Error().stack;\n\n // 输出函数字符串和堆栈\n console.group(\"函数定位\");\n console.log(\"函数代码:\", fnStr.substring(0, 200));\n console.log(\"当前调用栈:\", stack);\n console.groupEnd();\n\n // 在 DevTools 中,直接打印函数对象会显示可点击的链接\n console.log(fn);\n }\n private _printListenerToConsole(listener: FastEventListenerMeta): void {\n const [fn] = listener;\n if (typeof fn !== \"function\") {\n console.warn(t(\"listenerCard.invalidData\"));\n console.log(\"元数据:\", {\n executed: `${listener[2]}/${listener[1]}`,\n tag: listener[3],\n flags: listener[4],\n });\n return;\n }\n console.group(`FastEvent Listener`);\n console.log(t(\"listenerViewer.listener\", fn.name || t(\"listenerCard.anonymous\")));\n console.log(fn);\n console.log(t(\"listenerViewer.executionCount\", listener[2], listener[1]));\n console.log(t(\"listenerViewer.tag\", listener[3]));\n if (listener[4] !== undefined) {\n console.log(t(\"listenerViewer.flags\", listener[4]));\n }\n console.groupEnd();\n }\n private _printListenerResultToConsole(listener: FastEventListenerMeta): void {\n if (listener.length === 6) {\n console.group(`FastEvent Listener returns`);\n const result = listener[5] instanceof WeakRef ? listener[5].deref() : listener[5];\n console.log(result);\n console.groupEnd();\n }\n }\n\n private _renderReturns(listener: FastEventListenerMeta) {\n if (listener.length === 6 && listener[5]) {\n const result = listener[5] instanceof WeakRef ? listener[5].deref() : listener[5];\n return html`\n <div class=\"listener-row\">\n <div class=\"listener-cell listener-label\">${t(\"listenerCard.returnValue\")}</div>\n <div class=\"listener-cell listener-value\" title=\"${t(\"listenerCard.clickToConsoleResult\")}\" style=\"cursor:pointer\"\n @click=\"${() => this._printListenerResultToConsole(this.listener!)}\"\n>${result instanceof Error ? result.stack : JSON.stringify(result)}</div>\n </div>\n `;\n }\n }\n override render() {\n if (!this.listener) {\n return html`\n <div class=\"empty-state\">${t(\"listenerCard.invalidData\")}</div>\n `;\n }\n\n const [fn, , , tag, flags] = this.listener;\n const functionName = fn.name || t(\"listenerCard.anonymous\");\n\n return html`\n <div class=\"listener-card\">\n <div class=\"listener-row\">\n <div class=\"listener-cell listener-label\">${t(\"listenerCard.listenerFunction\")}</div>\n <div class=\"listener-cell\">\n <span\n class=\"listener-function\"\n @click=\"${() => this._printListenerToConsole(this.listener!)}\"\n title=\"${t(\"listenerCard.clickToConsole\")}\"\n >\n ${functionName}\n </span>\n </div>\n </div>\n <div class=\"listener-row\">\n <div class=\"listener-cell listener-label\">${t(\"listenerCard.executionCount\")}</div>\n <div class=\"listener-cell listener-value\">${this._formatListenerCount(this.listener)}</div>\n </div>\n ${\n tag\n ? html`\n <div class=\"listener-row\">\n <div class=\"listener-cell listener-label\">${t(\"listenerCard.tag\")}</div>\n <div class=\"listener-cell\">${renderTag(tag)}</div>\n </div>\n `\n : \"\"\n }\n ${\n flags !== undefined\n ? html`\n <div class=\"listener-row\">\n <div class=\"listener-cell listener-label\">${t(\"listenerCard.flags\")}</div>\n <div class=\"listener-cell listener-value\">${flags}</div>\n </div>\n `\n : \"\"\n }\n ${this._renderReturns(this.listener)}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"fastevent-listener-card\": FastEventListenerCard;\n }\n}\n","// oxlint-disable typescript/unbound-method\n// packages/viewer/src/listenerViewer/index.ts\nimport { LitElement, html } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { styles } from \"./styles\";\nimport type {\n AddAfterListenerHook,\n ClearListenersHook,\n FastEvent,\n FastEventListenerNode,\n RemoveListenerHook,\n} from \"fastevent\";\nimport type { FastEventListenerMeta } from \"fastevent\";\nimport \"./listenerCard\";\nimport { removeItem, renderTag, renderRetainMessage } from \"../utils\";\nimport { t, setLanguage } from \"../utils/t\";\n\n/**\n * FastEventListeners 组件 - 显示 FastEvent 实例的监听器树\n */\n@customElement(\"fastevent-listeners\")\nexport class FastEventListeners extends LitElement {\n static styles = styles;\n\n @property({ type: Object })\n emitter?: FastEvent;\n\n @property({ type: Boolean, reflect: true })\n dark = false;\n\n @state()\n private _selectedPath: string[] = [];\n\n @state()\n private _listeners: FastEventListenerMeta[] = [];\n\n @state()\n private _expandedNodes = new Set<string>();\n\n @property({ type: String, reflect: true })\n lang = \"cn\";\n\n private _leftWidth = \"30%\";\n private _isResizing = false;\n private _resizeStartX = 0;\n private _resizeStartWidth = 0;\n\n /**\n * 根据路径从 emitter.listeners 中查找节点\n */\n private _getListenerNode(path: string[]): FastEventListenerNode | null {\n if (!this.emitter?.listeners || path.length === 0) return null;\n\n let currentNode: any = this.emitter.listeners;\n\n for (const key of path) {\n if (currentNode[key]) {\n currentNode = currentNode[key];\n } else {\n return null;\n }\n }\n\n return currentNode as FastEventListenerNode;\n }\n\n /**\n * 查找第一个有监听器的节点路径\n */\n private _findFirstNodeWithListeners(): string[] | null {\n if (!this.emitter?.listeners) return null;\n\n const find = (node: any, path: string[]): string[] | null => {\n // 检查当前节点是否有监听器\n if (node.__listeners && node.__listeners.length > 0) {\n return path;\n }\n\n // 递归查找子节点\n for (const key in node) {\n if (key === \"__listeners\") continue;\n const found = find(node[key], [...path, key]);\n if (found) return found;\n }\n\n return null;\n };\n\n return find(this.emitter.listeners, []);\n }\n\n /**\n * 初始化展开状态\n */\n private _initializeExpandedNodes(): void {\n if (!this.emitter?.listeners) return;\n\n this._expandedNodes = new Set();\n\n const collectPaths = (node: any, path: string[]) => {\n this._expandedNodes.add(path.join(\"/\"));\n\n for (const key in node) {\n if (key === \"__listeners\") continue;\n collectPaths(node[key], [...path, key]);\n }\n };\n\n collectPaths(this.emitter.listeners, []);\n }\n\n /**\n * 刷新所有数据\n */\n private _refreshData(): void {\n // 如果是首次加载数据,初始化展开状态和选中状态\n if (this.emitter && this._expandedNodes.size === 0) {\n this._initializeExpandedNodes();\n\n const firstPath = this._findFirstNodeWithListeners();\n if (firstPath) {\n this._selectedPath = firstPath;\n const node = this._getListenerNode(firstPath);\n this._listeners = node?.__listeners || [];\n }\n } else {\n // 如果当前选中的路径仍有监听器,更新监听器列表\n if (this._selectedPath.length > 0) {\n const node = this._getListenerNode(this._selectedPath);\n this._listeners = node?.__listeners || [];\n }\n }\n }\n\n /**\n * 处理节点选择\n */\n private _handleNodeSelect(event: Event): void {\n const target = event.currentTarget as HTMLElement;\n const pathStr = target.dataset.path;\n\n if (!pathStr) return;\n\n const path = pathStr.split(\"/\");\n this._selectedPath = path;\n\n const node = this._getListenerNode(path);\n this._listeners = node?.__listeners || [];\n\n this.requestUpdate();\n }\n _onAddAfterListener: AddAfterListenerHook = (_type, _node) => {\n // 触发重新渲染以更新监听器数量显示\n this.requestUpdate();\n };\n _onRemoveListener: RemoveListenerHook = (_type, _listener, _node) => {\n // 触发重新渲染以更新监听器数量显示\n this.requestUpdate();\n };\n _onClearListeners: ClearListenersHook = () => {\n this._handleRefresh();\n };\n private _setupHooks() {\n if (this.emitter) {\n this.emitter.hooks.AddAfterListener.push(this._onAddAfterListener);\n this.emitter.hooks.RemoveListener.push(this._onRemoveListener);\n this.emitter.hooks.ClearListeners.push(this._onClearListeners);\n }\n }\n private _clearHooks() {\n if (this.emitter) {\n removeItem(this.emitter.hooks.AddAfterListener, this._onAddAfterListener);\n removeItem(this.emitter.hooks.RemoveListener, this._onRemoveListener);\n removeItem(this.emitter.hooks.ClearListeners, this._onClearListeners);\n }\n }\n /**\n * 处理节点展开/收起\n */\n private _handleNodeToggle(event: Event): void {\n const target = (event.currentTarget as HTMLElement).closest(\"[data-path]\") as HTMLElement;\n const pathStr = target?.dataset.path;\n\n if (!pathStr) return;\n\n const pathKey = pathStr;\n\n if (this._expandedNodes.has(pathKey)) {\n this._expandedNodes.delete(pathKey);\n } else {\n this._expandedNodes.add(pathKey);\n }\n\n this.requestUpdate();\n }\n\n /**\n * 手动刷新\n */\n private _handleRefresh(): void {\n this._refreshData();\n this.requestUpdate();\n }\n\n private _handleResizeStart(event: MouseEvent): void {\n this._isResizing = true;\n this._resizeStartX = event.clientX;\n this._resizeStartWidth =\n (this.shadowRoot?.querySelector(\".tree-panel\") as HTMLElement)?.offsetWidth || 0;\n\n document.addEventListener(\"mousemove\", this._handleResizeMove);\n document.addEventListener(\"mouseup\", this._handleResizeEnd);\n\n const resizer = this.shadowRoot?.querySelector(\".resizer\") as HTMLElement;\n resizer?.classList.add(\"dragging\");\n }\n\n private _handleResizeMove = (event: MouseEvent): void => {\n if (!this._isResizing) return;\n\n const offsetX = event.clientX - this._resizeStartX;\n const containerWidth =\n (this.shadowRoot?.querySelector(\".main-container\") as HTMLElement)?.offsetWidth || 0;\n const newWidthPercent = ((this._resizeStartWidth + offsetX) / containerWidth) * 100;\n const clampedWidth = Math.max(20, Math.min(80, newWidthPercent));\n\n this._leftWidth = `${clampedWidth}%`;\n this.style.setProperty(\"--fe-left-width\", this._leftWidth);\n };\n\n private _handleResizeEnd = (): void => {\n this._isResizing = false;\n document.removeEventListener(\"mousemove\", this._handleResizeMove);\n document.removeEventListener(\"mouseup\", this._handleResizeEnd);\n\n const resizer = this.shadowRoot?.querySelector(\".resizer\") as HTMLElement;\n resizer?.classList.remove(\"dragging\");\n };\n\n private _handleKeyDown(event: KeyboardEvent): void {\n const target = event.currentTarget as HTMLElement;\n const pathStr = target.dataset.path;\n\n if (!pathStr) return;\n\n const pathKey = pathStr;\n\n switch (event.key) {\n case \"Enter\":\n case \" \":\n event.preventDefault();\n this._handleNodeSelect(event);\n break;\n case \"ArrowRight\":\n event.preventDefault();\n if (!this._expandedNodes.has(pathKey)) {\n this._handleNodeToggle(event);\n }\n break;\n case \"ArrowLeft\":\n event.preventDefault();\n if (this._expandedNodes.has(pathKey)) {\n this._handleNodeToggle(event);\n }\n break;\n }\n }\n\n /**\n * 判断节点是否为空\n */\n private _isEmptyNode(node: any): boolean {\n const keys = Object.keys(node);\n return keys.length === 1 && node.__listeners && node.__listeners.length === 0;\n }\n\n /**\n * 渲染树节点\n */\n private renderTreeNode(\n node: FastEventListenerNode,\n path: string[],\n depth: number,\n ): ReturnType<typeof html> {\n const pathKey = path.join(\"/\");\n const isExpanded = this._expandedNodes.has(pathKey);\n const isSelected = JSON.stringify(this._selectedPath) === JSON.stringify(path);\n\n // 获取子节点(排除 __listeners)\n const childKeys = Object.keys(node).filter((key) => key !== \"__listeners\");\n const hasChildren = childKeys.length > 0;\n\n // 获取监听器数量\n const listenerCount = node.__listeners?.length || 0;\n\n return html`\n <div>\n <div\n class=\"tree-node ${isSelected ? \"selected\" : \"\"}\"\n style=\"padding-left: ${depth * 8 + 8}px\"\n role=\"treeitem\"\n data-path=\"${pathKey}\"\n aria-expanded=\"${hasChildren ? isExpanded : false}\"\n aria-selected=\"${isSelected}\"\n tabindex=\"${isSelected ? \"0\" : \"-1\"}\"\n @keydown=\"${this._handleKeyDown}\"\n >\n <span\n class=\"tree-node-toggle ${isExpanded ? \"expanded\" : \"\"} ${hasChildren ? \"\" : \"hidden\"}\"\n data-path=\"${pathKey}\"\n @click=\"${this._handleNodeToggle}\"\n >\n <span class=\"icon arrow\"></span>\n </span>\n <span class=\"tree-node-content\" data-path=\"${pathKey}\" @click=\"${this._handleNodeSelect}\">\n <span class=\"icon listeners\"></span>\n <span class=\"tree-node-label\">${path[path.length - 1]}</span>\n ${\n this.emitter?.retainedMessages.has(pathKey)\n ? renderTag(\"retain\", \"red\", t(\"listenerViewer.retainedMessage\"))\n : \"\"\n }\n ${\n listenerCount > 0\n ? html`\n <span class=\"tree-node-badge\">${listenerCount}</span>\n `\n : \"\"\n }\n </span>\n </div>\n ${\n hasChildren && isExpanded\n ? html`\n <div class=\"tree-children\">\n ${childKeys.map((key) => {\n const childPath = [...path, key];\n return this.renderTreeNode(\n node[key] as FastEventListenerNode,\n childPath,\n depth + 1,\n );\n })}\n </div>\n `\n : \"\"\n }\n </div>\n `;\n }\n\n /**\n * 渲染树\n */\n private renderTree(): ReturnType<typeof html> {\n const listeners = this.emitter?.listeners;\n if (!listeners || this._isEmptyNode(listeners)) {\n return html`\n <div class=\"empty-state\">\n <span class=\"icon listeners\"></span>\n <p>${t(\"listenerViewer.noRegisteredListeners\")}</p>\n </div>\n `;\n }\n\n return html`\n <div>\n ${Object.keys(listeners)\n .filter((key) => key !== \"__listeners\")\n .map((key) => {\n return this.renderTreeNode(\n listeners[key] as FastEventListenerNode,\n [key],\n 0,\n );\n })}\n </div>\n `;\n }\n\n private renderListener(listener: FastEventListenerMeta, type: string): ReturnType<typeof html> {\n return html`<fastevent-listener-card .listener=\"${listener}\" .emitter=\"${this.emitter!}\" .type=\"${type}\" .dark=\"${this.dark}\" .lang=\"${this.lang}\"></fastevent-listener-card>`;\n }\n\n private renderListeners(): ReturnType<typeof html> {\n const pathKey = this._selectedPath.join(\"/\");\n const message = this.emitter?.retainedMessages.get(pathKey);\n\n return html`\n <div>\n ${\n message\n ? renderRetainMessage({\n message,\n pathKey,\n dark: this.dark,\n onDelete: (key) => {\n this.emitter?.retainedMessages.delete(key);\n this.requestUpdate();\n },\n onPrint: (msg) => {\n console.group(t(\"listenerViewer.retainedMessage\"));\n console.log(msg);\n console.groupEnd();\n },\n onCopy: (msg) => {\n const jsonStr = JSON.stringify(msg, null, 2);\n navigator.clipboard.writeText(jsonStr);\n },\n })\n : \"\"\n }\n ${\n this._listeners.length === 0\n ? html`\n <div class=\"empty-state\">\n <span class=\"icon listeners\" style=\"--icon-size: 3em\"></span>\n <p>${t(\"listenerViewer.nodeHasNoListeners\")}</p>\n </div>\n `\n : html`\n <div class=\"listeners-list\">\n ${this._listeners.map((listener) => this.renderListener(listener, pathKey))}\n </div>\n `\n }\n </div>\n `;\n }\n\n override willUpdate(changedProperties: Map<PropertyKey, unknown>): void {\n super.willUpdate(changedProperties);\n\n // 当 emitter 变化时,加载数据\n if (changedProperties.has(\"emitter\")) {\n if (this.emitter) {\n this._refreshData();\n } else {\n // 清空数据\n this._listeners = [];\n this._selectedPath = [];\n this._expandedNodes = new Set();\n }\n }\n if (changedProperties.has(\"lang\")) {\n setLanguage(this.lang);\n }\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n // 组件连接时加载初始数据\n if (this.emitter) {\n this._refreshData();\n this._setupHooks();\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n\n // 清理 resize 事件监听\n if (this._isResizing) {\n document.removeEventListener(\"mousemove\", this._handleResizeMove);\n document.removeEventListener(\"mouseup\", this._handleResizeEnd);\n }\n this._clearHooks();\n }\n\n override render() {\n return html`\n <div class=\"toolbar\">\n <span class=\"toolbar-title\">${t(\"listenerViewer.registeredListeners\")}</span>\n <button class=\"btn btn-icon\" title=\"${t(\"listenerViewer.refresh\")}\" @click=\"${this._handleRefresh}\">\n <span class=\"icon refresh\"></span>\n </button>\n </div>\n <div class=\"main-container\">\n <div class=\"tree-panel\" role=\"tree\">\n ${this.renderTree()}\n </div>\n <div class=\"resizer\" @mousedown=\"${this._handleResizeStart}\"></div>\n <div class=\"listeners-panel\">\n ${this.renderListeners()}\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"fastevent-listeners\": FastEventListeners;\n }\n}\n","import { LitElement, html } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport type { EventLog } from \"./types\";\nimport type { ItemOf } from \"../types\";\nimport { renderTag, renderButton, renderIcon } from \"../utils\";\nimport { t } from \"../utils/t\";\n\n/**\n * 事件日志组件,用于显示单条事件日志\n */\n@customElement(\"fastevent-event-log\")\nexport class FastEventEventLog extends LitElement {\n // 不使用 shadow DOM 以便样式能够继承\n createRenderRoot() {\n return this;\n }\n\n @property({ type: Object })\n log!: EventLog;\n\n @property({ type: Boolean })\n dark = false;\n\n @property({ type: Boolean })\n showListeners = false;\n\n @property({ type: Number, attribute: false })\n updateVersion?: number;\n\n @property({ attribute: false })\n onPrintListener?: (listener: ItemOf<EventLog[\"listeners\"]>) => void;\n\n /**\n * 单个日志项的本地监听器显示状态\n * 用于点击监听器数量标签时切换显示\n */\n @state()\n private _localShowListeners = false;\n\n /**\n * 切换监听器列表的显示状态\n */\n private _toggleListeners() {\n this._localShowListeners = !this._localShowListeners;\n }\n\n /**\n * 格式化时间戳\n */\n private _formatTime(timestamp: number): string {\n const date = new Date(timestamp);\n const hours = date.getHours().toString().padStart(2, \"0\");\n const minutes = date.getMinutes().toString().padStart(2, \"0\");\n const seconds = date.getSeconds().toString().padStart(2, \"0\");\n const ms = date.getMilliseconds().toString().padStart(3, \"0\");\n return `${hours}:${minutes}:${seconds}.${ms}`;\n }\n\n /**\n * 渲染日志标志\n */\n private _renderLogFlags(args: any) {\n if (args && (args.flags || 0) > 0) {\n const flags = args.flags || 0;\n if (flags > 1) {\n return renderTag(\n `${args.flags}`,\n \"orange\",\n t(\"eventViewer.extendedFlags\"),\n undefined,\n this.dark,\n );\n }\n return html`${(flags | 1) == 0 ? \"\" : renderTag(`T`, \"orange\", t(\"eventViewer.transformed\"), undefined, this.dark)}`;\n }\n }\n\n /**\n * 格式化监听器执行结果\n */\n private _formatResult(result: any): string {\n if (result === undefined) return t(\"eventViewer.executing\");\n if (result === null) return \"null\";\n\n // 处理 Error 对象\n if (result instanceof Error) {\n return t(\"eventViewer.error\", result.message);\n }\n\n // 处理对象和数组\n if (typeof result === \"object\") {\n try {\n const str = JSON.stringify(result);\n if (str.length > 100) {\n return str.substring(0, 100) + \"...\";\n }\n return str;\n } catch {\n return result.toString();\n }\n }\n\n // 处理其他类型\n return String(result);\n }\n\n /**\n * 渲染单个监听器\n */\n private _renderListener(listener: ItemOf<EventLog[\"listeners\"]>) {\n const statusClass = listener.status === \"ok\" ? \"yes\" : listener.status;\n const resultText = this._formatResult(listener.result);\n return html`\n <div class=\"listener\">\n ${renderIcon(\"listener\", t(\"eventViewer.listener\"))}\n <span class=\"listener-name\" title=\"${t(\"eventViewer.listener\")}\" @click=\"${() => this.onPrintListener?.(listener)}\">${listener.name}</span>\n ${listener.tag ? renderTag(listener.tag, undefined, t(\"eventViewer.listenerTag\", listener.tag), undefined, this.dark) : \"\"}\n ${renderTag(listener.count, undefined, t(\"eventViewer.executionCount\"), undefined, this.dark)}\n ${listener.flags !== undefined ? renderTag(`${listener.flags}`, \"orange\", t(\"eventViewer.listenerFlags\"), undefined, this.dark) : \"\"}\n <span class=\"listener-status ${statusClass}\" title=\"${resultText}\">\n ${renderIcon(listener.status === \"running\" ? \"loading\" : listener.status === \"ok\" ? \"yes\" : listener.status)}\n </span>\n </div>\n `;\n }\n\n /**\n * 渲染监听器列表\n */\n private _renderListeners(listeners: EventLog[\"listeners\"]) {\n return html`${listeners.map((listener) => this._renderListener(listener))}`;\n }\n\n render() {\n const message = this.log.message.deref();\n const args = this.log.args.deref();\n if (!message) return html``;\n\n const payload = JSON.stringify(message.payload ?? \"\");\n const timeStr = this._formatTime(this.log.triggerTime);\n\n return html`\n <div class=\"log-item\">\n <div class=\"log-content\">\n <div class=\"log-header\">\n ${this.log.done ? \"✨\" : renderIcon(\"loading\")}\n <span class=\"log-type\" title=\"${t(\"eventViewer.eventType\")}\">${message.type}</span>\n <span class=\"log-time\" title=\"${t(\"eventViewer.triggerTime\")}\">${timeStr}</span>\n ${renderTag(`#${this.log.id}`, \"gray\", t(\"eventViewer.serialNumber\"), undefined, this.dark)}\n ${\n !this.showListeners\n ? html`<span\n class=\"tag-clickable\"\n style=\"cursor: pointer;\"\n @click=\"${() => this._toggleListeners()}\">${renderTag(`ƒ(${this.log.listeners.length})`, \"purple\", t(\"eventViewer.totalListeners\", this.log.listeners.length), undefined, this.dark)}</span>`\n : \"\"\n }\n ${args?.retain ? renderTag(\"retain\", \"red\", t(\"eventViewer.retainLastEvent\"), undefined, this.dark) : \"\"}\n ${this._renderLogFlags(args!)}\n ${args?.rawEventType && args?.rawEventType !== message.type ? renderTag(args.rawEventType, \"blue\", t(\"eventViewer.rawEventType\", args.rawEventType), undefined, this.dark) : \"\"}\n ${this.log.duration[1] > 0 ? renderTag(`${Number((this.log.duration[1] - this.log.duration[0]).toFixed(3))}ms`, \"green\", t(\"eventViewer.executionTime\"), undefined, this.dark) : \"\"}\n ${renderButton(\n \"\",\n () => {\n const jsonStr = JSON.stringify(message, null, 2);\n navigator.clipboard.writeText(jsonStr);\n },\n {\n icon: \"copy\",\n className: \"btn-icon\",\n title: t(\"eventViewer.copyMessage\"),\n },\n )}\n </div>\n ${payload ? html`<div class=\"log-payload\">${payload}</div>` : \"\"}\n ${\n this.log.listeners.length > 0\n ? html`\n <div class=\"log-listeners ${this.showListeners || this._localShowListeners ? \"log-listeners-visible\" : \"log-listeners-hidden\"}\">\n ${this._renderListeners(this.log.listeners)}\n </div>\n `\n : \"\"\n }\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"fastevent-event-log\": FastEventEventLog;\n }\n}\n","// oxlint-disable typescript/unbound-method\nimport {\n FastEvent,\n type FastEventListenerArgs,\n type FastEventListenerMeta,\n type FastEventListenerNode,\n type FastEventMessage,\n type FastEventSubscriber,\n type FastEventListenerFlags,\n} from \"fastevent\";\nimport { LitElement, html } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport type { ItemOf } from \"../types\";\nimport { styles } from \"./styles\";\nimport type { EventLog } from \"./types\";\nimport \"../listenerViewer/index.js\";\nimport \"./eventLog.js\";\nimport { removeItem } from \"../utils/removeItem\";\nimport { renderButton, renderIcon } from \"../utils\";\nimport { t, setLanguage } from \"../utils/t\";\n\n@customElement(\"fastevent-viewer\")\nexport class FastEventViewer extends LitElement {\n static styles = styles;\n\n @state()\n private _emitters: FastEvent[] = [];\n\n @state()\n private _currentEmitterIndex = 0;\n\n @state()\n private _isDropdownOpen = false;\n\n private _emitterLogs = new Map<number, EventLog[]>();\n private _emitterLogIndexes = new Map<number, number[]>();\n\n @property({ type: Object })\n get emitter(): FastEvent | FastEvent[] | undefined {\n return this._emitters.length === 1 ? this._emitters[0] : this._emitters;\n }\n\n set emitter(value: FastEvent | FastEvent[] | undefined) {\n const newValue = Array.isArray(value) ? value : value ? [value] : [];\n const oldValue = this._emitters;\n\n this._emitters = newValue;\n\n if (this._currentEmitterIndex >= this._emitters.length) {\n this._currentEmitterIndex = 0;\n }\n\n // 只在 emitter 实际变化时才重新附加\n if (oldValue.length !== newValue.length || oldValue.some((e, i) => e !== newValue[i])) {\n this._reattach();\n }\n\n this.requestUpdate(\"emitter\", oldValue.length === 1 ? oldValue[0] : oldValue);\n }\n\n @property({ type: Boolean, reflect: true })\n dark = false;\n\n @property({ type: Boolean, reflect: true })\n enable = true;\n\n /**\n * 允许显示的日志最大数量,超过此数量时自动删除旧的\n */\n @property({ type: Number })\n maxSize: number = 500;\n\n @property({ type: String })\n title: string = \"\";\n\n @property({ type: String, reflect: true })\n lang = \"cn\";\n\n /**\n * 是否在日志中显示监听器详情\n */\n @property({ type: Boolean })\n showListeners = true;\n\n @state()\n private _filterText = \"\";\n\n @state()\n private _showListeners = false;\n\n @state()\n private _isShowListeners = false;\n\n subscriber?: FastEventSubscriber;\n messages: FastEventMessage[] = [];\n logs: EventLog[] = [];\n // 用于渲染的logs数组的索引\n private _logIndexs: number[] = [];\n\n connectedCallback(): void {\n super.connectedCallback();\n setLanguage(this.lang);\n this._attach();\n document.addEventListener(\"click\", this._handleDocumentClick);\n }\n\n disconnectedCallback(): void {\n this._detach();\n document.removeEventListener(\"click\", this._handleDocumentClick);\n }\n\n willUpdate(changedProperties: Map<string, any>): void {\n // 移除了 emitter 的 _reattach() 调用,因为 setter 已经处理了\n if (changedProperties.has(\"_filterText\")) {\n this._updateFilteredLogs();\n }\n if (changedProperties.has(\"showListenersInLog\")) {\n this._isShowListeners = this.showListeners;\n }\n if (changedProperties.has(\"lang\")) {\n setLanguage(this.lang);\n }\n }\n\n private _getCurrentEmitter(): FastEvent | undefined {\n return this._emitters[this._currentEmitterIndex];\n }\n\n private _switchEmitter(index: number) {\n if (index === this._currentEmitterIndex) return;\n\n // 保存当前 emitter 的日志\n this._emitterLogs.set(this._currentEmitterIndex, [...this.logs]);\n this._emitterLogIndexes.set(this._currentEmitterIndex, [...this._logIndexs]);\n\n // 切换到新 emitter\n this._currentEmitterIndex = index;\n\n // 恢复新 emitter 的日志\n this.logs = this._emitterLogs.get(index) || [];\n this._logIndexs = this._emitterLogIndexes.get(index) || [];\n\n // 重新附加钩子\n this._reattach();\n\n // 关闭下拉菜单\n this._isDropdownOpen = false;\n\n this.requestUpdate();\n }\n\n private _handleDocumentClick = (e: MouseEvent) => {\n const target = e.target as HTMLElement;\n const dropdown = this.renderRoot?.querySelector(\".emitter-dropdown-container\");\n if (dropdown && !dropdown.contains(target)) {\n this._isDropdownOpen = false;\n this.requestUpdate();\n }\n };\n\n private _reattach() {\n this._detach();\n this.clear();\n this._attach();\n }\n\n private _updateFilteredLogs() {\n const filter = this._filterText.toLowerCase().trim();\n if (!filter) {\n // 倒序:最新的在前\n this._logIndexs = this.logs.map((_, i) => i).reverse();\n return;\n }\n\n this._logIndexs = this.logs\n .map((log, i) => ({ log, index: i }))\n .filter(({ log }) => {\n const message = log.message.deref();\n if (!message) return false;\n return message.type.toLowerCase().includes(filter);\n })\n .map(({ index }) => index)\n .reverse(); // 倒序:最新的在前\n }\n\n _onBeforeExecuteListener = (message: FastEventMessage, args: FastEventListenerArgs) => {\n const currentEmitter = this._getCurrentEmitter();\n if (!currentEmitter || !this.enable) return;\n\n const listeners = (currentEmitter.getListeners(message.type) || []).map((meta) => {\n return this._getListenerMeta(meta, \"running\");\n });\n const log = {\n message: new WeakRef(message),\n done: false,\n args: new WeakRef(args),\n triggerTime: Date.now(),\n duration: [performance.now(), 0],\n listeners,\n updateVersion: 0,\n } as EventLog;\n log.id = this.logs.length + 1;\n // 重点:用于跟踪\n (message as any).__index = log.id - 1;\n this.logs.push(log as any);\n // 倒序:将新日志索引添加到开头\n this._logIndexs.unshift(this.logs.length - 1);\n\n // 限制日志数量\n if (this.maxSize > 0 && this.logs.length > this.maxSize) {\n this.logs.shift();\n this._updateFilteredLogs();\n }\n\n this.requestUpdate();\n };\n\n _getListenerMeta(meta: FastEventListenerMeta, status?: any): ItemOf<EventLog[\"listeners\"]> {\n if (status === undefined) {\n if (meta.length === 6) {\n let returns: any;\n const m = meta[5];\n if (m instanceof WeakRef) {\n returns = m.deref();\n } else {\n returns = m;\n }\n if (returns instanceof Error) {\n status = \"error\";\n } else {\n status = \"ok\";\n }\n } else {\n status = \"ok\";\n }\n }\n return {\n status: status,\n fn: new WeakRef(meta[0]),\n name: meta[0].name || \"anonymous\",\n count: `${meta[2]}/${meta[1] === 0 ? \"∞\" : meta[1]}`,\n tag: meta[3],\n flags: meta[4] as FastEventListenerFlags | undefined,\n result: meta[5],\n };\n }\n\n _onAfterExecuteListener = (\n message: FastEventMessage,\n returns: any[],\n _listeners: FastEventListenerNode[],\n ) => {\n if (!this.enable) return;\n\n const index = (message as any).__index;\n if (typeof index === \"number\") {\n const log = this.logs[index];\n if (log) {\n log.done = true;\n log.duration[1] = performance.now();\n }\n const newListeners = _listeners.reduce<EventLog[\"listeners\"]>((result, current) => {\n current.__listeners.forEach((meta) => {\n result.push(this._getListenerMeta(meta));\n });\n return result;\n }, []);\n\n // 找到对应的 log 并更新 listeners\n const logIndex = index; //this.logs.findIndex((l) => l.id === index);\n if (logIndex !== -1) {\n this.logs[logIndex].listeners = newListeners;\n this.logs[logIndex].updateVersion++; // 递增版本号以触发组件重新渲染\n returns.map((r, i) => {\n const listener = this.logs[logIndex].listeners[i];\n if (listener) {\n try {\n listener.result = structuredClone(r);\n } catch {\n listener.result = r;\n }\n if (r instanceof Error) {\n listener.status = \"error\";\n } else {\n listener.status = \"ok\";\n }\n }\n });\n }\n delete (message as any).__index;\n }\n\n this.requestUpdate();\n };\n\n private _attach() {\n const currentEmitter = this._getCurrentEmitter();\n if (currentEmitter) {\n const options = currentEmitter.options;\n currentEmitter.hooks.BeforeExecuteListener.push(this._onBeforeExecuteListener);\n currentEmitter.hooks.AfterExecuteListener.push(this._onAfterExecuteListener);\n options.debug = true;\n }\n }\n\n private _detach() {\n const currentEmitter = this._getCurrentEmitter();\n if (currentEmitter) {\n removeItem(currentEmitter.hooks.BeforeExecuteListener, this._onBeforeExecuteListener);\n removeItem(currentEmitter.hooks.AfterExecuteListener, this._onAfterExecuteListener);\n const options = currentEmitter.options;\n options.debug = false;\n }\n }\n\n clear() {\n this.logs = [];\n this._logIndexs = [];\n this.messages = [];\n this.requestUpdate();\n }\n\n /**\n * 在控制台显示监听器函数\n * @param listener\n */\n private _printListenerInfo(listener: ItemOf<EventLog[\"listeners\"]>) {\n const fn = listener.fn.deref();\n if (typeof fn === \"function\") {\n console.group(\"FastEvent Listener\");\n console.log(t(\"eventViewer.listener\", fn.name || \"anonymous\"));\n console.log(fn);\n console.log(t(\"eventViewer.executionResult\"), listener.result);\n console.groupEnd();\n }\n }\n\n renderFilter() {\n return html`<input\n type=\"text\"\n class=\"filter-input\"\n placeholder=\"${t(\"eventViewer.filterPlaceholder\")}\"\n .value=\"${this._filterText}\"\n @input=\"${(e: InputEvent) => {\n this._filterText = (e.target as HTMLInputElement).value;\n }}\"\n />`;\n }\n\n private _renderEmitterMenu() {\n return html`\n <div class=\"emitter-dropdown-menu\">\n ${this._emitters.map((emitter, index) => {\n const isActive = index === this._currentEmitterIndex;\n const menuTitle =\n this.title.length > 0\n ? this.title\n : emitter?.title || `Emitter ${index + 1}`;\n return html`\n <div\n class=\"emitter-menu-item ${isActive ? \"active\" : \"\"}\"\n @click=\"${() => this._switchEmitter(index)}\"\n >\n <span class=\"menu-item-icon\">${isActive ? renderIcon(\"yes\") : \"\"}</span>\n <span class=\"menu-item-label\">${menuTitle}</span>\n </div>\n `;\n })}\n </div>\n `;\n }\n private _getEmitterVarName() {\n return `$emitter`;\n }\n private _injectEmitterToConsole() {\n const varname = this._getEmitterVarName();\n const emitter = this._getCurrentEmitter();\n if (emitter) {\n (window as any)[varname] = emitter;\n console.log(\"FastEvent instance: \", `${varname}=`, emitter);\n }\n }\n renderHeader() {\n const hasMultipleEmitters = this._emitters.length > 1;\n const currentEmitter = this._getCurrentEmitter();\n const displayTitle = this.title.length > 0 ? this.title : currentEmitter?.title || \"\";\n\n return html`\n <div class=\"header\">\n ${\n hasMultipleEmitters\n ? html`\n <div class=\"emitter-dropdown-container\">\n <button\n class=\"emitter-dropdown-trigger\"\n @click=\"${(e: Event) => {\n this._isDropdownOpen = !this._isDropdownOpen;\n e.stopPropagation();\n this.requestUpdate();\n }}\"\n title=\"${t(\"eventViewer.switchEmitter\")}\"\n >\n <span class=\"header-title\">${displayTitle} \n </span>\n <span class=\"dropdown-arrow ${this._isDropdownOpen ? \"open\" : \"\"}\"></span>\n </button>\n ${this._isDropdownOpen ? this._renderEmitterMenu() : \"\"}\n </div>\n <span class=\"emitter-dropdown-spacer\"></span>\n `\n : html`<span class=\"header-title\">${displayTitle}</span>`\n }\n ${renderButton(\"\", () => this._injectEmitterToConsole(), {\n icon: \"inspect\",\n className: \"btn-icon\",\n title: t(\"eventViewer.inspect\", this._getEmitterVarName()),\n })}\n ${renderButton(\n \"\",\n () => {\n this.dark = !this.dark;\n },\n {\n icon: \"dark\",\n className: \"btn-icon\" + (this._showListeners ? \" btn-pressed\" : \"\"),\n title: this.dark ? t(\"eventViewer.normalMode\") : t(\"eventViewer.darkMode\"),\n },\n )}\n ${renderButton(\n \"\",\n () => {\n this._showListeners = !this._showListeners;\n },\n {\n icon: \"listeners\",\n className: \"btn-icon\" + (this._showListeners ? \" btn-pressed\" : \"\"),\n title: this._showListeners\n ? t(\"eventViewer.showEvent\")\n : t(\"eventViewer.showListeners\"),\n },\n )}\n </div>\n `;\n }\n\n renderToolbar() {\n return html`\n <div class=\"toolbar\">\n ${this.renderFilter()}\n <span class=\"toolbar-spacer\">${t(\"eventViewer.totalLogs\", this._logIndexs.length)}</span>\n ${renderButton(\n \"\",\n () => {\n this._isShowListeners = !this._isShowListeners;\n this.requestUpdate();\n },\n {\n icon: \"listener\",\n className: \"btn-icon\" + (this._isShowListeners ? \" btn-pressed\" : \"\"),\n title: this._isShowListeners\n ? t(\"eventViewer.hideListenerDetails\")\n : t(\"eventViewer.showListenerDetails\"),\n },\n )}\n <button class=\"btn btn-icon\" title=\"${t(\"eventViewer.clear\")}\" @click=\"${() => this.clear()}\">\n <span class=\"icon clear\"></span>\n </button>\n </div>\n `;\n }\n\n renderLogs() {\n if (this._logIndexs.length === 0) {\n return html`\n <div class=\"empty-state\">\n ${renderIcon(\"file\")}\n <p>${t(\"eventViewer.noEventLogs\")}</p>\n </div>\n `;\n }\n\n return html`\n <div class=\"logs\">\n ${this._logIndexs.map((index) => {\n const log = this.logs[index];\n return html`\n <fastevent-event-log\n .log=\"${log}\"\n .dark=\"${this.dark}\"\n .showListeners=\"${this._isShowListeners}\"\n .updateVersion=\"${log.updateVersion}\"\n .onPrintListener=\"${this._printListenerInfo}\">\n </fastevent-event-log>\n `;\n })}\n </div>\n `;\n }\n\n render() {\n return html`\n ${this.renderHeader()}\n ${\n this._showListeners\n ? html`<fastevent-listeners\n .emitter=\"${this._getCurrentEmitter()}\"\n .dark=\"${this.dark}\"\n .lang=\"${this.lang}\"\n style=\"flex-grow:1\">\n </fastevent-listeners>`\n : html`${this.renderToolbar()}${this.renderLogs()}`\n }\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"fastevent-viewer\": FastEventViewer;\n }\n}\n"],"x_google_ignoreList":[1,2,3,4,5,6,7],"mappings":"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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAO,KAAS;AAAA,MAChB,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCFO,KAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["V","B","l","E","x","y","d","w","L","k","P","t","e","s","o","n","r","i","S","c","i","e","h","r","o","n","a","c","l","p","d","u","f","b","y","t","s","t","i","s","o","n","r","t","e","r","o","t","e","t","r","t"],"sources":["../../native/dist/index.mjs","../../../node_modules/.bun/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/css-tag.js","../../../node_modules/.bun/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/reactive-element.js","../../../node_modules/.bun/lit-html@3.3.2/node_modules/lit-html/lit-html.js","../../../node_modules/.bun/lit-element@4.2.2/node_modules/lit-element/lit-element.js","../../../node_modules/.bun/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/decorators/custom-element.js","../../../node_modules/.bun/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/decorators/property.js","../../../node_modules/.bun/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/decorators/state.js","../src/styles/icons.ts","../src/eventViewer/styles.ts","../src/listenerViewer/styles.ts","../src/listenerViewer/listenerCardStyles.ts","../src/utils/removeItem.ts","../src/utils/renderTag.ts","../src/utils/renderButton.ts","../src/utils/renderIcon.ts","../src/utils/renderRetainMessage.ts","../src/utils/languages.ts","../src/utils/t.ts","../src/listenerViewer/listenerCard.ts","../src/listenerViewer/index.ts","../src/eventViewer/eventLog.ts","../src/eventViewer/index.ts"],"sourcesContent":["var V=Object.defineProperty;var B=(n,e,t)=>e in n?V(n,e,{enumerable:true,configurable:true,writable:true,value:t}):n[e]=t;var l=(n,e,t)=>B(n,typeof e!=\"symbol\"?e+\"\":e,t);var Q=Symbol.for(\"__FastEvent__\"),J=Symbol.for(\"__FastEventScope__\"),E=class extends Error{constructor(e){super(e);}},O=class extends E{},x=class extends E{},y=class extends E{},d=class extends E{},w=class extends E{};var q=(e=>(e[e.Transformed=1]=\"Transformed\",e))(q||{});function T(n,e,t,s){let r,a={},i={};return typeof n[0]==\"object\"?(Object.assign(i,n[0]),a=typeof n[1]==\"boolean\"?{retain:n[1]}:n[1]||{},r=n[0].meta):(i.type=n[0],i.payload=n[1],a=typeof n[2]==\"boolean\"?{retain:n[2]}:n[2]||{}),r=Object.assign({},e,t,a.meta,r),Object.keys(r).length===0?(r=void 0,delete i.meta):i.meta=r,a.executor===void 0&&(a.executor=s),[i,a]}function I(n){return n?typeof n==\"object\"&&\"__FastEventScope__\"in n:false}function b(n,e,t){let s=n[0],r=I(n[1])?n[1]:void 0,a=(r?n[2]:n[1])||{};return a.meta=Object.assign({},e,a?.meta),a.context=a.context!==void 0?a.context:t,[s,r,a]}function u(n,e){return Object.defineProperty(n,\"name\",{value:e||\"anonymous\",configurable:true}),n}function c(n){return n&&typeof n==\"function\"}var M=class n{constructor(e){l(this,\"__FastEventScope__\",true);l(this,\"__events__\");l(this,\"__meta__\");l(this,\"__context__\");l(this,\"_options\",{});l(this,\"prefix\",\"\");l(this,\"emitter\");this._options=Object.assign({},this._initOptions(e));}get context(){return this.options.context||this}get options(){return this._options}get listeners(){return this.emitter.getListeners(this.prefix)}bind(e,t,s){this.emitter=e,this._options=Object.assign(this._options,{scope:t},s),t.length>0&&!t.endsWith(e.options.delimiter)&&(this.prefix=t+e.options.delimiter);}_initOptions(e){return e}_getScopeListener(e){let t=this.prefix;if(t.length===0)return e;if(!e)throw new Error;let s=this;return u(function(a,i){let o=i.rawEventType||a.type;if(o.startsWith(t)){let v=((i.flags||0)&1)>0?a:Object.assign({},a,{type:o.substring(t.length)});return e.call(s.context,v,i)}},e.name)}_getScopeType(e){return e===void 0?void 0:this.prefix+e}_fixScopeType(e){return e.startsWith(this.prefix)?e.substring(this.prefix.length):e}on(){if(!this.emitter)throw new x;let e=[...arguments];return e[0]=this._getScopeType(e[0]),e[1]=this._getScopeListener(e[1]),this.emitter.on(...e)}once(){return this.on(arguments[0],arguments[1],Object.assign({},arguments[2],{count:1}))}onAny(){return this.on(\"**\",...arguments)}off(){let e=arguments;typeof e[0]==\"string\"&&(e[0]=this._getScopeType(e[0])),this.emitter.off(...e);}offAll(){this.emitter.offAll(this.prefix.substring(0,this.prefix.length-1));}clear(){this.emitter.clear(this.prefix.substring(0,this.prefix.length-1));}emit(){let[e,t]=T(arguments,this.emitter.options.meta,this.options.meta,this.options.executor);return this._transformMessage(e,t),e.type=this._getScopeType(e.type),this.emitter.emit(e,t)}_transformMessage(e,t){c(this._options.transform)&&(t.rawEventType=this._getScopeType(e.type),t.flags=(t.flags||0)|1,e.payload=this._options.transform.call(this,e));}async emitAsync(){return (await Promise.allSettled(this.emit.apply(this,arguments))).map(t=>t.status===\"fulfilled\"?t.value:t.reason)}async waitFor(){let e=arguments[0],t=arguments[1],s=await this.emitter.waitFor(this._getScopeType(e),t);return Object.assign({},s,{type:this._fixScopeType(s.type)})}scope(){let[e,t,s]=b(arguments,this.options.meta,this.options.context),r;return t?r=t:r=new n,r.bind(this.emitter,this.prefix+e,s),r}};function L(n,e){let t=n.length,s=e.length;if(t!==s&&(s===0||e[s-1]!==\"**\"))return false;if(s>0&&e[s-1]===\"**\"){for(let r=0;r<s-1;r++)if(e[r]!==\"*\"&&e[r]!==n[r])return false;return true}for(let r=0;r<t;r++)if(e[r]!==\"*\"&&e[r]!==n[r])return false;return true}function C(n,e){let t=[];for(let s=n.length-1;s>=0;s--)e(n[s])&&(t.push(s),n.splice(s,1));return t.reverse()}function ye(n){return n?typeof n==\"object\"&&\"type\"in n:false}function ue(n){return n&&typeof n==\"string\"}var k=Symbol.for(\"__expandable__\");function he(n){return n[k]=true,n}function D(n){return n&&n[k]}function G(n){return n&&typeof n==\"object\"&&\"off\"in n&&\"listener\"in n}function xe(n){return typeof n==\"function\"&&(n.toString().startsWith(\"class \")||n.prototype?.constructor===n)}function be(n){return n?typeof n==\"object\"&&\"__FastEvent__\"in n:false}function A(n){if(n===null||typeof n!=\"object\")return false;let e=n;return typeof e[Symbol.asyncIterator]==\"function\"||typeof e[\"@@asyncIterator\"]==\"function\"}var j=()=>(n,e,t,s)=>n.map((r,a)=>s.call(n[a],r,e,t,true));function N(n){for(let e=0;e<n.length;e++){let t=n[e];Array.isArray(t)&&D(t)&&(n.splice(e,1,...t),e+=t.length-1);}return n}function W(n,e){return n.catch(t=>(e&&e(t),Promise.resolve(t)))}var P=class{constructor(e,t,s={}){this.eventEmitter=e;this.eventName=t;l(this,\"resolvers\",[]);l(this,\"errorResolvers\",[]);l(this,\"isStopped\",false);l(this,\"options\");l(this,\"currentSize\");l(this,\"hasNewMessage\",false);l(this,\"_listener\");l(this,\"_ready\",false);l(this,\"_listenOptions\");l(this,\"_cleanups\",[]);l(this,\"error\",null);l(this,\"buffer\",[]);this.options={size:s.size??20,maxExpandSize:s.maxExpandSize??100,expandOverflow:s.expandOverflow??\"slide\",overflow:s.overflow??\"slide\",lifetime:s.lifetime??0,onPush:s.onPush,onPop:s.onPop,onDrop:s.onDrop,onError:s.onError??(()=>true),signal:s.signal},this.currentSize=this.options.size,this._listener=this.onMessage.bind(this);}get listener(){return this._listener}get ready(){return this._ready}create(e){if(!this._ready){this._listenOptions=e;try{let t=this.eventEmitter.on(this.eventName,this._listener,e);if(this._cleanups.push(()=>t.off()),this.options.signal&&!this.options.signal.aborted){let s=()=>{this.off(!0);};this.options.signal.addEventListener(\"abort\",s),this._cleanups.push(()=>{this.options.signal.removeEventListener(\"abort\",s);});}}finally{this._ready=true;}}}push(e){this.options.onPush?this.options.onPush(e,this.buffer):this.buffer.push(this.options.lifetime>0?[e,Date.now()]:[e,0]);}handleOverflow(e){switch(this.buffer.length>=this.options.maxExpandSize&&this.options.overflow===\"expand\"?this.options.expandOverflow:this.options.overflow){case \"drop\":return this.options.onDrop&&this.options.onDrop(e),false;case \"expand\":return this.currentSize=Math.min(this.currentSize+this.options.size,this.options.maxExpandSize),this.push(e),true;case \"slide\":let s=this.buffer.shift();return this.options.onDrop&&s&&this.options.onDrop(s[0]),this.push(e),true;case \"throw\":throw this.options.onDrop&&this.options.onDrop(e),new Error(`EventIterator queue overflow: buffer size (${this.currentSize}) exceeded`);default:return false}}onMessage(e,t){if(this.isStopped)return;let s=e;if(this.resolvers.length>0){this.resolvers.shift()({value:s,done:false});return}this.hasNewMessage=true,this.buffer.length<this.currentSize?this.push(s):this.handleOverflow(s);}off(e){this._ready&&(this.isStopped||(this.isStopped=true,this._cleanups.forEach(t=>t()),this._cleanups=[],this.buffer=[],this._ready=false,e?(this.errorResolvers.forEach(t=>{t(new y);}),this.errorResolvers=[]):(this.resolvers.forEach(t=>{t({value:void 0,done:true});}),this.resolvers=[]),this._ready=false));}async next(){if(this.error)return Promise.reject(this.error);if(this.isStopped&&this.buffer.length===0)return {value:void 0,done:true};if(this.buffer.length>0){let e,t;if(this.options.onPop){let s=this.options.onPop(this.buffer,this.hasNewMessage);s?[e,t]=s:[e,t]=this.buffer.shift()||[void 0,0];}else [e,t]=this.buffer.shift()||[void 0,0];if(this.hasNewMessage=false,e!==void 0)return this.options.lifetime>0&&Date.now()-t>this.options.lifetime?(this.options.onDrop&&this.options.onDrop(e),this.next()):{value:e,done:false}}return new Promise((e,t)=>{this.resolvers.push(e),this.errorResolvers.push(t);})}[Symbol.asyncIterator](){return this}async done(){return this.off(),{value:void 0,done:true}}async throw(e){return this.error=e,this.off(),Promise.reject(e)}async return(){return this.off(),{value:void 0,done:true}}[Symbol.dispose](){this.off();}on(){this.create(this._listenOptions),this.isStopped=false;}};function R(n,e,t={}){return new P(n,e,t)}function U(n,e){return Array.isArray(e)&&e.forEach(t=>{n=u(t(n),n.name);}),n}function _(n){return n!==null&&(typeof n==\"object\"||typeof n==\"function\")?new WeakRef(n):n}function S(n){return n.map(e=>e.status===\"fulfilled\"?e.value:e.reason)}function z(n){if(n==null)return false;let e=typeof n;return e!==\"object\"&&e!==\"function\"?false:typeof n.then==\"function\"}async function K(n){try{return n instanceof Promise?await n:n}catch(e){return e instanceof Error?e:new Error(String(e))}}var H=class{constructor(e){l(this,\"__FastEvent__\",true);l(this,\"listeners\",{__listeners:[]});l(this,\"_options\");l(this,\"_delimiter\",\"/\");l(this,\"_context\");l(this,\"_hooks\");l(this,\"retainedMessages\",new Map);l(this,\"listenerCount\",0);l(this,\"types\",null);this._options=Object.assign({debug:false,id:Math.random().toString(36).substring(2),delimiter:\"/\",context:null,ignoreErrors:true,meta:void 0,expandEmitResults:true,executor:j()},this._initOptions(e)),this._delimiter=this._options.delimiter,this._context=this._options.context;}get options(){return this._options}get context(){return this.options.context||this}get meta(){return this.options.meta}get id(){return this._options.id}get title(){return this._options.title||this.id||\"FastEvent\"}get hooks(){return this._hooks||(this._hooks={AddBeforeListener:[],AddAfterListener:[],RemoveListener:[],ClearListeners:[],ListenerError:[],BeforeExecuteListener:[],AfterExecuteListener:[]}),this._hooks}_execAfterExecuteListener(e,t){Promise.allSettled(t[1]).then(s=>{t[1]=S(s),e.apply(this,t);});}_executeHooks(e,t,s=false){if(setTimeout(()=>{if(!this._hooks)return;let r=this.hooks[e];Array.isArray(r)&&r.length>0&&Promise.allSettled(r.map(a=>{if(e===\"AfterExecuteListener\")this._execAfterExecuteListener(a,t);else return a.apply(this,t)}));}),!s){let r=this.options[`on${e}`];if(c(r))if(e===\"AfterExecuteListener\")this._execAfterExecuteListener(r,t);else return r.apply(this,t)}}_initOptions(e){return e}_addListener(e,t,s){let{count:r,prepend:a}=s,i=0;return [this._forEachNodes(e,p=>{let v=[t,r,0,s.tag,s.flags];a?(p.__listeners.splice(0,0,v),i=0):(p.__listeners.push(v),i=p.__listeners.length-1),this.listenerCount++;}),i]}_forEachNodes(e,t){if(e.length===0)return;let s=this.listeners;for(let r=0;r<e.length;r++){let a=e[r];if(a in s||(s[a]={__listeners:[]}),r===e.length-1){let i=s[a];return t(i,s),i}else s=s[a];}}_removeListener(e,t,s){s&&C(e.__listeners,r=>{r=Array.isArray(r)?r[0]:r;let a=r===s;return a&&(this.listenerCount--,this._executeHooks(\"RemoveListener\",[t.join(this._delimiter),s,e])),a});}_createAyncIteratorListener(e,t){let s=Object.assign({overflow:\"expand\",size:10,maxExpandSize:100},t.iterable),r=R(this,e,s);r.create(t);let a=this._executeHooks(\"AddBeforeListener\",[e,r.listener,t]);if(a===false)throw new d;return A(a)?a:r}on(){let e=arguments[0];if(e.length===0)throw new Error(\"event cannot be empty\");let t=null,s,r=!c(arguments[1]);r?s=arguments[1]||{}:(t=arguments[1],s=arguments[2]||{});let a=Object.assign({count:0,flags:0,prepend:false},s);if(r||t===null)return this._createAyncIteratorListener(e,a);let i=this._executeHooks(\"AddBeforeListener\",[e,t,a]);if(i===false)throw new d;if(G(i))return i;let o=e.split(this._delimiter);if(a.pipes&&a.pipes.length>0&&(t=U(t,a.pipes)),c(a.filter)||c(a.off)){let g=t,h=()=>p&&this._removeListener(p,o,t);t=u(function(f,F){if(c(a.off)&&a.off.call(this,f,F)){h();return}if(c(a.filter)){if(a.filter.call(this,f,F))return g.call(this,f,F)}else return g.call(this,f,F)},t.name);}let[p,v]=this._addListener(o,t,a),m=()=>p&&this._removeListener(p,o,t);return this._executeHooks(\"AddAfterListener\",[e,p]),this._emitRetainMessage(e,p,v),{off:m,listener:t,[Symbol.dispose](){m();}}}once(){return c(arguments[1])?this.on(arguments[0],arguments[1],Object.assign({},arguments[2],{count:1})):this.on(arguments[0],Object.assign({},arguments[2],{count:1}))}onAny(){return this.on(\"**\",...arguments)}off(){let e=arguments,t=c(e[0])?void 0:e[0],s=c(e[0])?e[0]:e[1],r=t?t.split(this._delimiter):[],a=t?t.includes(\"*\"):false;if(t&&!a)this._traverseToPath(this.listeners,r,i=>{s?this._removeListener(i,r,s):t&&(i.__listeners=[]);});else {let i=a?[]:r;this._traverseListeners(this.listeners,i,(o,p)=>{(s!==void 0||a&&L(o,r))&&(s?this._removeListener(p,r,s):p.__listeners=[]);});}}offAll(e){if(e){let t=e.split(this._delimiter),s=0;this._traverseListeners(this.listeners,t,(r,a)=>{s+=a.__listeners.length;try{a.__listeners.forEach(i=>{this._executeHooks(\"RemoveListener\",[r.join(this.options.delimiter),i[0],a]);});}finally{a.__listeners=[];}}),this.listenerCount-=s,this._removeRetainedEvents(e);}else try{let t=0;this._traverseListeners(this.listeners,[],(s,r)=>{t+=r.__listeners.length;}),this.listenerCount-=t,this.retainedMessages.clear(),this.listeners={__listeners:[]};}finally{this._executeHooks(\"ClearListeners\",[]);}}_removeRetainedEvents(e){e||this.retainedMessages.clear(),e?.endsWith(this._delimiter)&&(e+=this._delimiter),this.retainedMessages.delete(e);for(let t of this.retainedMessages.keys())t.startsWith(e)&&this.retainedMessages.delete(t);}clear(e){this.offAll(e),this._removeRetainedEvents(e);}_emitRetainMessage(e,t,s){let r=[];if(e.includes(\"*\")){let a=e.split(this._delimiter);this.retainedMessages.forEach((i,o)=>{let p=o.split(this._delimiter);L(p,a)&&r.push(i);});}else this.retainedMessages.has(e)&&r.push(this.retainedMessages.get(e));t&&r.forEach(a=>{this._executeListeners([t],a,{},i=>i[0]===t.__listeners[s][0]);});}_traverseToPath(e,t,s,r=0,a){if(r>=t.length){s(e);return}let i=t[r];if(a===true){this._traverseToPath(e,t,s,r+1,true);return}\"*\"in e&&this._traverseToPath(e[\"*\"],t,s,r+1),\"**\"in e&&this._traverseToPath(e[\"**\"],t,s,r+1,true),i in e&&this._traverseToPath(e[i],t,s,r+1);}_traverseListeners(e,t,s){let r=e;t&&t.length>0&&this._traverseToPath(e,t,i=>{r=i;});let a=(i,o,p)=>{o(p,i);for(let[v,m]of Object.entries(i))v.startsWith(\"__\")||m&&a(m,o,[...p,v]);};a(r,s,[]);}_onListenerError(e,t,s,r){if(r instanceof Error&&(r._emitter=`${e.name||\"anonymous\"}:${t.type}`),this._executeHooks(\"ListenerError\",[r,e,t,s]),this._options.ignoreErrors)return r;throw r}_executeListener(e,t,s,r=false){let a=e[0];try{if(this.options.debug&&(e.length=5),s&&s.abortSignal&&s.abortSignal.aborted)return this._onListenerError(a,t,s,new y(e[0].name));let i=((s?.flags||0)&1)>0,o=a.call(this.context,i?t.payload:t,s);return r&&o&&o instanceof Promise&&(o=W(o,p=>this._onListenerError(a,t,s,p))),this.options.debug&&(Promise.resolve(o),z(o)?K(o).then(p=>{e[5]=_(p);}):e[5]=_(o)),o}catch(i){let o=this._onListenerError(a,t,s,i);return o instanceof Error&&(e[5]=_(o)),o}}_getListenerExecutor(e){if(!e)return;let t=e.executor||this._options.executor;if(c(t))return t}_executeListeners(e,t,s,r){if(!e||e.length===0)return [];let a=[];for(let o of e){let p=0;for(let v of o.__listeners)(!r||r(v,o))&&a.push([v,p++,o.__listeners]);}this._decListenerExecCount(a);let i=this._getListenerExecutor(s);if(i){let o=i(a.map(p=>p[0]),t,s,this._executeListener.bind(this));return Array.isArray(o)?o:[o]}else return a.map(o=>this._executeListener(o[0],t,s,true))}_decListenerExecCount(e){for(let t=e.length-1;t>=0;t--){let s=e[t][0];s[2]++,s[1]>0&&s[1]<=s[2]&&e[t][2].splice(t,1);}}getListeners(e){let t=[],s=e.split(this._delimiter);this._traverseToPath(this.listeners,s,a=>{t.push(a);});let r=[];return t.map(a=>{r.push(...a.__listeners);}),r}clearRetainMessages(e){e?this.retainedMessages.delete(e):this.retainedMessages.clear();}emit(){let[e,t]=T(arguments,this.options.meta);c(t.parseArgs)&&t.parseArgs(e,t);let s=e.type.split(this._delimiter);t.retain&&this.retainedMessages.set(e.type,e);let r=[],a=[];this._traverseToPath(this.listeners,s,o=>{a.push(o);});let i=this._executeHooks(\"BeforeExecuteListener\",[e,t]);if(Array.isArray(i))return i;if(i===false)throw new y(e.type);if(c(this._options.transform)){let o=this._options.transform.call(this,e);o!==e&&(e.payload=o,t.rawEventType=e.type,t.flags=(t.flags||0)|1);}return r.push(...this._executeListeners(a,e,t)),this._options.expandEmitResults&&N(r),this._executeHooks(\"AfterExecuteListener\",[e,r,a]),r}async emitAsync(){let e=await Promise.allSettled(this.emit.apply(this,arguments));return S(e)}waitFor(){let e=arguments[0],t=arguments[1];return new Promise((s,r)=>{let a,i,o=p=>{clearTimeout(a),i?.off(),s(p);};t&&t>0&&(a=setTimeout(()=>{i?.off(),r(new Error(\"wait for event<\"+e+\"> is timeout\"));},t)),i=this.on(e,o);})}scope(){let[e,t,s]=b(arguments,this.options.meta,this.options.context),r;return t?r=t:r=new M,r.bind(this,e,s),r}};export{y as AbortError,d as CancelError,H as FastEvent,E as FastEventError,P as FastEventIterator,q as FastEventListenerFlags,M as FastEventScope,w as QueueOverflowError,O as TimeoutError,x as UnboundError,J as __FastEventScope__,Q as __FastEvent__,k as __expandable__,R as createAsyncEventIterator,he as expandable,A as isAsyncIterable,xe as isClass,D as isExpandable,be as isFastEvent,ye as isFastEventMessage,I as isFastEventScope,c as isFunction,L as isPathMatched,ue as isString,G as isSubsctiber};//# sourceMappingURL=index.mjs.map\n//# sourceMappingURL=index.mjs.map","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1],t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map(t=>t instanceof CSSStyleSheet?t:t.styleSheet);else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,css,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:h,getOwnPropertyNames:r,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),b={attribute:!0,type:String,converter:u,reflect:!1,useDefault:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class y extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=b){if(s.state&&(s.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((s=Object.create(s)).wrapped=!0),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),h=this.getPropertyDescriptor(t,i,s);void 0!==h&&e(this.prototype,t,h)}}static getPropertyDescriptor(t,s,i){const{get:e,set:r}=h(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get:e,set(s){const h=e?.call(this);r?.call(this,s),this.requestUpdate(t,h,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??b}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...r(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(t=>this.enableUpdating=t),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(t=>t(this))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(t=>t.hostConnected?.())}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach(t=>t.hostDisconnected?.())}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$ET(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const h=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==h?this.removeAttribute(e):this.setAttribute(e,h),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),h=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e;const r=h.fromAttribute(s,t.type);this[e]=r??this._$Ej?.get(e)??r,this._$Em=null}}requestUpdate(t,s,i,e=!1,h){if(void 0!==t){const r=this.constructor;if(!1===e&&(h=this[t]),i??=r.getPropertyOptions(t),!((i.hasChanged??f)(h,s)||i.useDefault&&i.reflect&&h===this._$Ej?.get(t)&&!this.hasAttribute(r._$Eu(t,i))))return;this.C(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(t,s,{useDefault:i,reflect:e,wrapped:h},r){i&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,r??s??this[t]),!0!==h||void 0!==r)||(this._$AL.has(t)||(this.hasUpdated||i||(s=void 0),this._$AL.set(t,s)),!0===e&&this._$Em!==t&&(this._$Eq??=new Set).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t){const{wrapped:t}=i,e=this[s];!0!==t||this._$AL.has(s)||void 0===e||this.C(s,void 0,i,e)}}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach(t=>t.hostUpdate?.()),this.update(s)):this._$EM()}catch(s){throw t=!1,this._$EM(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach(t=>t.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&=this._$Eq.forEach(t=>this._$ET(t,this[t])),this._$EM()}updated(t){}firstUpdated(t){}}y.elementStyles=[],y.shadowRootOptions={mode:\"open\"},y[d(\"elementProperties\")]=new Map,y[d(\"finalized\")]=new Map,p?.({ReactiveElement:y}),(a.reactiveElementVersions??=[]).push(\"2.1.2\");export{y as ReactiveElement,s as adoptStyles,u as defaultConverter,t as getCompatibleStyle,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t=>t,s=t.trustedTypes,e=s?s.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,h=\"$lit$\",o=`lit$${Math.random().toFixed(9).slice(2)}$`,n=\"?\"+o,r=`<${n}>`,l=document,c=()=>l.createComment(\"\"),a=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,u=Array.isArray,d=t=>u(t)||\"function\"==typeof t?.[Symbol.iterator],f=\"[ \\t\\n\\f\\r]\",v=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,_=/-->/g,m=/>/g,p=RegExp(`>|${f}(?:([^\\\\s\"'>=/]+)(${f}*=${f}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),g=/'/g,$=/\"/g,y=/^(?:script|style|textarea|title)$/i,x=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),b=x(1),w=x(2),T=x(3),E=Symbol.for(\"lit-noChange\"),A=Symbol.for(\"lit-nothing\"),C=new WeakMap,P=l.createTreeWalker(l,129);function V(t,i){if(!u(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==e?e.createHTML(i):i}const N=(t,i)=>{const s=t.length-1,e=[];let n,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=v;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,f=0;for(;f<s.length&&(c.lastIndex=f,u=c.exec(s),null!==u);)f=c.lastIndex,c===v?\"!--\"===u[1]?c=_:void 0!==u[1]?c=m:void 0!==u[2]?(y.test(u[2])&&(n=RegExp(\"</\"+u[2],\"g\")),c=p):void 0!==u[3]&&(c=p):c===p?\">\"===u[0]?(c=n??v,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?p:'\"'===u[3]?$:g):c===$||c===g?c=p:c===_||c===m?c=v:(c=p,n=void 0);const x=c===p&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===v?s+r:d>=0?(e.push(a),s.slice(0,d)+h+s.slice(d)+o+x):s+o+(-2===d?i:x)}return[V(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),e]};class S{constructor({strings:t,_$litType$:i},e){let r;this.parts=[];let l=0,a=0;const u=t.length-1,d=this.parts,[f,v]=N(t,i);if(this.el=S.createElement(f,e),P.currentNode=this.el.content,2===i||3===i){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=P.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(h)){const i=v[a++],s=r.getAttribute(t).split(o),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:l,name:e[2],strings:s,ctor:\".\"===e[1]?I:\"?\"===e[1]?L:\"@\"===e[1]?z:H}),r.removeAttribute(t)}else t.startsWith(o)&&(d.push({type:6,index:l}),r.removeAttribute(t));if(y.test(r.tagName)){const t=r.textContent.split(o),i=t.length-1;if(i>0){r.textContent=s?s.emptyScript:\"\";for(let s=0;s<i;s++)r.append(t[s],c()),P.nextNode(),d.push({type:2,index:++l});r.append(t[i],c())}}}else if(8===r.nodeType)if(r.data===n)d.push({type:2,index:l});else{let t=-1;for(;-1!==(t=r.data.indexOf(o,t+1));)d.push({type:7,index:l}),t+=o.length-1}l++}}static createElement(t,i){const s=l.createElement(\"template\");return s.innerHTML=t,s}}function M(t,i,s=t,e){if(i===E)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=a(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=M(t,h._$AS(t,i.values),h,e)),i}class R{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??l).importNode(i,!0);P.currentNode=e;let h=P.nextNode(),o=0,n=0,r=s[0];for(;void 0!==r;){if(o===r.index){let i;2===r.type?i=new k(h,h.nextSibling,this,t):1===r.type?i=new r.ctor(h,r.name,r.strings,this,t):6===r.type&&(i=new Z(h,this,t)),this._$AV.push(i),r=s[++n]}o!==r?.index&&(h=P.nextNode(),o++)}return P.currentNode=l,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class k{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=A,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=M(this,t,i),a(t)?t===A||null==t||\"\"===t?(this._$AH!==A&&this._$AR(),this._$AH=A):t!==this._$AH&&t!==E&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):d(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==A&&a(this._$AH)?this._$AA.nextSibling.data=t:this.T(l.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=S.createElement(V(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new R(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=C.get(t.strings);return void 0===i&&C.set(t.strings,i=new S(t)),i}k(t){u(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new k(this.O(c()),this.O(c()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,s){for(this._$AP?.(!1,!0,s);t!==this._$AB;){const s=i(t).nextSibling;i(t).remove(),t=s}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class H{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=A,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=A}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=M(this,t,i,0),o=!a(t)||t!==this._$AH&&t!==E,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=M(this,e[s+n],i,n),r===E&&(r=this._$AH[n]),o||=!a(r)||r!==this._$AH[n],r===A?t=A:t!==A&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===A?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class I extends H{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===A?void 0:t}}class L extends H{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==A)}}class z extends H{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=M(this,t,i,0)??A)===E)return;const s=this._$AH,e=t===A&&s!==A||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==A&&(s===A||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class Z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){M(this,t)}}const j={M:h,P:o,A:n,C:1,L:N,R,D:d,V:M,I:k,H,N:L,U:z,B:I,F:Z},B=t.litHtmlPolyfillSupport;B?.(S,k),(t.litHtmlVersions??=[]).push(\"3.3.2\");const D=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new k(i.insertBefore(c(),t),t,void 0,s??{})}return h._$AI(t),h};export{j as _$LH,b as html,T as mathml,E as noChange,A as nothing,D as render,w as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as r}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=globalThis;class i extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const r=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(r,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return r}}i._$litElement$=!0,i[\"finalized\"]=!0,s.litElementHydrateSupport?.({LitElement:i});const o=s.litElementPolyfillSupport;o?.({LitElement:i});const n={_$AK:(t,e,r)=>{t._$AK(e,r)},_$AL:t=>t._$AL};(s.litElementVersions??=[]).push(\"4.2.2\");export{i as LitElement,n as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer(()=>{customElements.define(t,e)}):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","import{notEqual as t,defaultConverter as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:e,reflect:!1,hasChanged:t},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),\"setter\"===n&&((t=Object.create(t)).wrapped=!0),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t,!0,r)},init(e){return void 0!==e&&this.C(o,void 0,t,e),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t,!0,r)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","import { css } from \"lit\";\n// --icon-size: 16px;\n// display: inline-block;\n// background-color: currentColor;\n// mask-size: cover;\n// -webkit-mask-size: cover;\n// vertical-align: text-bottom;\n// position: relative;\n// width: var(--icon-size);\n// height: var(--icon-size);\n\nexport const icons = css`\n :host,\n :root {\n --icon-size: 16px;\n --icon-tags: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z\"/><circle cx=\"7.5\" cy=\"7.5\" r=\".5\"/></svg>');\n --icon-yes: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20 6 9 17l-5-5\" /></svg>');\n --icon-file: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\"><path fill=\"currentColor\" d=\"m213.66 82.34l-56-56A8 8 0 0 0 152 24H56a16 16 0 0 0-16 16v176a16 16 0 0 0 16 16h144a16 16 0 0 0 16-16V88a8 8 0 0 0-2.34-5.66M160 51.31L188.69 80H160ZM200 216H56V40h88v48a8 8 0 0 0 8 8h48z\"/></svg>');\n --icon-loading: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\" width=\"32\" height=\"32\" fill=\"currentColor\"><path opacity=\".25\" d=\"M16 0 A16 16 0 0 0 16 32 A16 16 0 0 0 16 0 M16 4 A12 12 0 0 1 16 28 A12 12 0 0 1 16 4\" /><path d=\"M16 0 A16 16 0 0 1 32 16 L28 16 A12 12 0 0 0 16 4z\"><animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 16 16\" to=\"360 16 16\" dur=\"0.8s\" repeatCount=\"indefinite\" /></path></svg>');\n --icon-arrow: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m9 18 6-6-6-6\" /></svg>');\n --icon-error: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\" /><path d=\"m15 9-6 6\" /><path d=\"m9 9 6 6\" /></svg>');\n --icon-success: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21.801 10A10 10 0 1 1 17 3.335\" /><path d=\"m9 11 3 3L22 4\" /></svg>');\n --icon-refresh: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" /><path d=\"M3 3v5h5\" /></svg>');\n --icon-clear: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\" /><path d=\"M3 6h18\" /><path d=\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\" /></svg>');\n --icon-copy: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" ><rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\" /><path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\" /></svg>');\n --icon-listeners: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" ><path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/><path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/><path d=\"M10 12.5 8 15l2 2.5\"/><path d=\"m14 12.5 2 2.5-2 2.5\"/></svg>');\n --icon-listener: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" ><rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\"/><path d=\"M9 17c2 0 2.8-1 2.8-2.8V10c0-2 1-3.3 3.2-3\"/><path d=\"M9 11.2h5.7\"/></svg>');\n --icon-count: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/><path d=\"M16 8.9V7H8l4 5-4 5h8v-1.9\"/></svg>');\n --icon-flags: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 22V4a1 1 0 0 1 .4-.8A6 6 0 0 1 8 2c3 0 5 2 7.333 2q2 0 3.067-.8A1 1 0 0 1 20 4v10a1 1 0 0 1-.4.8A6 6 0 0 1 16 16c-3 0-5-2-8-2a6 6 0 0 0-4 1.528\"/></svg>');\n --icon-transform: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m16 14 4 4-4 4\"/><path d=\"M20 10a8 8 0 1 0-8 8h8\"/></svg>');\n --icon-dark: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\"/></svg>');\n --icon-delete: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M18 6 6 18\"/><path d=\"m6 6 12 12\"/></svg>');\n --icon-inspect: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"2\" x2=\"5\" y1=\"12\" y2=\"12\"/><line x1=\"19\" x2=\"22\" y1=\"12\" y2=\"12\"/><line x1=\"12\" x2=\"12\" y1=\"2\" y2=\"5\"/><line x1=\"12\" x2=\"12\" y1=\"19\" y2=\"22\"/><circle cx=\"12\" cy=\"12\" r=\"7\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/></svg>');\n }\n .icon {\n display: inline-block;\n background-color: currentColor !important;\n mask-size: cover;\n -webkit-mask-size: cover;\n vertical-align: text-bottom;\n position: relative;\n stroke-width: 1;\n width: var(--icon-size);\n height: var(--icon-size);\n box-sizing: border-box;\n }\n\n /** 图标 */\n .icon.close {\n mask-image: var(--icon-close);\n }\n .icon.tags {\n mask-image: var(--icon-tags);\n }\n\n .icon.yes {\n mask-image: var(--icon-yes);\n }\n\n .icon.file {\n mask-image: var(--icon-file);\n }\n\n .icon.loading {\n mask-image: var(--icon-loading);\n }\n\n .icon.arrow {\n mask-image: var(--icon-arrow);\n }\n\n .icon.error {\n mask-image: var(--icon-error);\n }\n\n .icon.refresh {\n mask-image: var(--icon-refresh);\n }\n\n .icon.clear {\n mask-image: var(--icon-clear);\n }\n\n .icon.copy {\n mask-image: var(--icon-copy);\n }\n .icon.listeners {\n mask-image: var(--icon-listeners);\n }\n .icon.listener {\n mask-image: var(--icon-listener);\n }\n .icon.count {\n mask-image: var(--icon-count);\n }\n .icon.flags {\n mask-image: var(--icon-flags);\n }\n .icon.transform {\n mask-image: var(--icon-transform);\n }\n .icon.dark {\n mask-image: var(--icon-dark);\n }\n .icon.delete {\n mask-image: var(--icon-delete);\n }\n .icon.inspect {\n mask-image: var(--icon-inspect);\n }\n`;\n","import { css } from \"lit\";\nimport { icons } from \"../styles/icons\";\n\nexport const styles = css`\n ${icons}\n :host {\n display: flex;\n flex-direction: column;\n font-family:\n -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial,\n sans-serif;\n font-size: 14px;\n line-height: 1.5;\n color: var(--fe-color-text, #333);\n background: var(--fe-color-bg, #fff);\n border: 1px solid var(--fe-color-border, #e8e8e8);\n border-radius: 6px;\n overflow: hidden;\n }\n\n :host([dark]) {\n --fe-color-text: rgba(255, 255, 255, 0.85);\n --fe-color-bg: #1f1f1f;\n --fe-color-border: #303030;\n --fe-color-header-bg: #141414;\n --fe-color-hover: rgba(255, 255, 255, 0.08);\n --fe-color-text-secondary: rgba(255, 255, 255, 0.45);\n --fe-color-input-bg: rgba(255, 255, 255, 0.08);\n --fe-color-tag-bg: rgba(255, 255, 255, 0.08);\n --fe-color-tag-text: rgba(255, 255, 255, 0.85);\n --fe-color-listener-bg: rgba(255, 255, 255, 0.04);\n --fe-color-listener-border: rgba(255, 255, 255, 0.12);\n --fe-color-listener-hover: rgba(255, 255, 255, 0.08);\n }\n\n .header {\n display: flex;\n align-items: center;\n padding: 1em;\n background: var(--fe-color-header-bg, #fafafa);\n border-bottom: 1px solid var(--fe-color-border, #e8e8e8);\n gap: 8px;\n }\n\n .header-title {\n flex: 1;\n font-size: 16px;\n font-weight: 600;\n color: var(--fe-color-text, #333);\n }\n\n .toolbar {\n display: flex;\n align-items: center;\n padding: 0.75em 1em;\n border-bottom: 1px solid var(--fe-color-border, #e8e8e8);\n gap: 12px;\n }\n\n .filter-input {\n width: 20%;\n min-width: 150px;\n padding: 0.4em 0.8em;\n border: 1px solid var(--fe-color-border, #d9d9d9);\n border-radius: 6px;\n background: var(--fe-color-input-bg, #fff);\n color: var(--fe-color-text, #333);\n font-size: 13px;\n transition: all 0.3s;\n }\n\n .filter-input:focus {\n outline: none;\n border-color: #1890ff;\n box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);\n }\n\n .filter-input::placeholder {\n color: var(--fe-color-text-secondary, #bfbfbf);\n }\n\n .toolbar-spacer {\n flex: 1;\n color: var(--fe-color-text-secondary, #999);\n font-size: 12px;\n }\n\n .btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 0.4em 0.8em;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--fe-color-text, #555);\n font-size: 13px;\n cursor: pointer;\n transition: all 0.3s;\n user-select: none;\n }\n\n .btn:hover {\n color: #1890ff;\n background: rgba(24, 144, 255, 0.06);\n }\n\n .btn-pressed {\n color: #1890ff;\n background: rgba(24, 144, 255, 0.1);\n }\n\n .btn-icon {\n padding: 0.2em;\n width: 24px;\n height: 24px;\n }\n\n .btn-pressed {\n color: #1890ff;\n background: rgba(24, 144, 255, 0.1);\n }\n\n .logs {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 0;\n }\n\n .log-item {\n display: flex;\n align-items: flex-start;\n padding: 0.5em;\n border-radius: 4px;\n transition: background 0.2s;\n border-bottom: 1px solid var(--fe-color-border, #fafafa);\n }\n\n .log-item:hover {\n background: var(--fe-color-hover, #fcfcfc);\n }\n\n .log-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 0;\n }\n\n .log-header {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n padding: 0;\n }\n\n .log-header .icon {\n --icon-size: 16px;\n color: #818181;\n flex-shrink: 0;\n }\n\n .log-type {\n flex: 1;\n font-weight: 500;\n color: var(--fe-color-text, #333);\n font-family: \"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace;\n }\n\n .log-time {\n font-size: 12px;\n color: var(--fe-color-text-secondary, #999);\n }\n\n .tag {\n display: inline-flex;\n align-items: center;\n padding: 0.1em 0.4em;\n border-radius: 5px;\n font-size: 11px;\n white-space: nowrap;\n background: var(--fe-color-tag-bg, #f0f0f0);\n color: var(--fe-color-tag-text, #666);\n }\n\n .tag-blue {\n background: #e6f7ff;\n color: #1890ff;\n border: 1px solid #91d5ff;\n }\n\n .tag-green {\n background: #f6ffed;\n color: #52c41a;\n border: 1px solid #b7eb8f;\n }\n\n .tag-orange {\n background: #fff7e6;\n color: #fa8c16;\n border: 1px solid #ffd591;\n }\n\n .tag-red {\n background: #fff1f0;\n color: #ff4d4f;\n border: 1px solid #ffa39e;\n }\n\n .tag-purple {\n background: #f9f0ff;\n color: #722ed1;\n border: 1px solid #d3adf7;\n }\n\n .tag-gray {\n background: #f5f5f5;\n color: #8c8c8c;\n border: 1px solid #d9d9d9;\n }\n\n /* 暗黑模式下的 tag 颜色样式 */\n :host([dark]) .tag-blue {\n background: rgba(24, 144, 255, 0.15);\n color: #40a9ff;\n border: 1px solid rgba(24, 144, 255, 0.3);\n }\n\n :host([dark]) .tag-green {\n background: rgba(82, 196, 26, 0.15);\n color: #73d13d;\n border: 1px solid rgba(82, 196, 26, 0.3);\n }\n\n :host([dark]) .tag-orange {\n background: rgba(250, 140, 22, 0.15);\n color: #ffa940;\n border: 1px solid rgba(250, 140, 22, 0.3);\n }\n\n :host([dark]) .tag-red {\n background: rgba(255, 77, 79, 0.15);\n color: #ff7875;\n border: 1px solid rgba(255, 77, 79, 0.3);\n }\n\n :host([dark]) .tag-purple {\n background: rgba(114, 46, 209, 0.15);\n color: #b37feb;\n border: 1px solid rgba(114, 46, 209, 0.3);\n }\n\n :host([dark]) .tag-gray {\n background: rgba(140, 140, 140, 0.15);\n color: #bfbfbf;\n border: 1px solid rgba(140, 140, 140, 0.3);\n }\n\n .log-payload {\n font-size: 12px;\n color: var(--fe-color-text-secondary, #999);\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n line-height: 1.4;\n padding: 0em 20px;\n padding-top: 0px;\n }\n\n .log-listeners {\n padding: 0em 20px;\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n }\n\n .log-listeners-visible {\n display: flex;\n }\n\n .log-listeners-hidden {\n display: none;\n }\n\n .listener {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 0.25em 0.5em;\n border-radius: 8px;\n font-size: 12px;\n background: rgba(0, 0, 0, 0.03);\n border: 1px solid rgba(0, 0, 0, 0.06);\n transition: all 0.2s;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);\n cursor: pointer;\n }\n\n .listener:hover {\n background: rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);\n }\n\n /* 暗黑模式下的 listener 样式 */\n :host([dark]) .listener {\n background: var(--fe-color-listener-bg, rgba(255, 255, 255, 0.04));\n border: 1px solid var(--fe-color-listener-border, rgba(255, 255, 255, 0.12));\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\n }\n\n :host([dark]) .listener:hover {\n background: var(--fe-color-listener-hover, rgba(255, 255, 255, 0.08));\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);\n }\n\n .listener-status {\n width: 14px;\n height: 14px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n\n .listener-status .icon {\n --icon-size: 12px;\n }\n\n .listener-status.running .icon {\n color: #1890ff;\n }\n\n .listener-status.yes .icon {\n color: #52c41a;\n }\n\n .listener-status.error .icon {\n color: #ff4d4f;\n }\n\n .listener-name {\n font-weight: 500;\n color: var(--fe-color-text, #333);\n font-family: \"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace;\n font-size: 11px;\n }\n\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 2em;\n color: var(--fe-color-text-secondary, #999);\n text-align: center;\n }\n\n .empty-state .icon {\n --icon-size: 48px;\n opacity: 0.3;\n }\n\n /* Emitter 下拉容器 */\n .emitter-dropdown-container {\n position: relative;\n flex-shrink: 0;\n }\n\n /* Emitter 下拉占位符 */\n .emitter-dropdown-spacer {\n flex: 1;\n }\n\n /* 下拉触发按钮 */\n .emitter-dropdown-trigger {\n display: flex;\n align-items: center;\n gap: 6px;\n width: 100%;\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n transition: all 0.3s;\n }\n\n .emitter-dropdown-trigger:hover .header-title {\n color: #1890ff;\n }\n\n /* 下拉箭头 */\n .dropdown-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n border-left: 4px solid transparent;\n border-right: 4px solid transparent;\n border-top: 5px solid var(--fe-color-text, #333);\n transition: transform 0.3s;\n opacity: 0.6;\n }\n\n .dropdown-arrow.open {\n transform: rotate(180deg);\n }\n\n /* 暗黑模式下的下拉箭头 */\n :host([dark]) .dropdown-arrow {\n border-top-color: rgba(255, 255, 255, 0.85);\n }\n\n /* 下拉菜单容器 */\n .emitter-dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n margin-top: 4px;\n min-width: 180px;\n background: #ffffff;\n border: 1px solid #e8e8e8;\n border-radius: 6px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n z-index: 1000;\n overflow: hidden;\n animation: dropdownFadeIn 0.2s ease-out;\n }\n\n @keyframes dropdownFadeIn {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n /* 菜单项 */\n .emitter-menu-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 16px;\n cursor: pointer;\n transition: background 0.2s;\n font-size: 14px;\n color: #333;\n text-align: left;\n }\n\n .emitter-menu-item:hover {\n background: #f5f5f5;\n }\n\n .emitter-menu-item.active {\n background: #e6f7ff;\n color: #1890ff;\n font-weight: 500;\n }\n\n /* 菜单项图标占位区域 */\n .menu-item-icon {\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n .menu-item-icon .icon {\n --icon-size: 14px;\n color: #52c41a;\n }\n\n /* 菜单项标签 */\n .menu-item-label {\n flex: 1;\n text-align: left;\n }\n\n /* 通用下拉菜单样式(供 renderMenu 使用) */\n .dropdown-menu {\n padding: 4px 0;\n min-width: 150px;\n background: var(--fe-color-bg, #fff);\n border: 1px solid var(--fe-color-border, #e8e8e8);\n border-radius: 6px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n }\n\n .dropdown-menu-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n cursor: pointer;\n transition: background 0.2s;\n font-size: 14px;\n color: var(--fe-color-text, #333);\n }\n\n .dropdown-menu-item:hover {\n background: var(--fe-color-hover, #f5f5f5);\n }\n\n .dropdown-menu-item.active {\n background: #e6f7ff;\n color: #1890ff;\n }\n\n :host([dark]) .emitter-dropdown-menu {\n background: #2a2a2a;\n border-color: #404040;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);\n }\n\n :host([dark]) .emitter-menu-item {\n color: rgba(255, 255, 255, 0.85);\n }\n\n :host([dark]) .emitter-menu-item:hover {\n background: rgba(255, 255, 255, 0.06);\n }\n\n :host([dark]) .emitter-menu-item.active {\n background: rgba(24, 144, 255, 0.15);\n color: #40a9ff;\n }\n\n :host([dark]) .dropdown-menu {\n background: var(--fe-color-bg, #2a2a2a);\n border-color: var(--fe-color-border, #404040);\n }\n\n :host([dark]) .dropdown-menu-item.active {\n background: rgba(24, 144, 255, 0.15);\n color: #40a9ff;\n }\n`;\n","// packages/viewer/src/listenerViewer/styles.ts\nimport { css } from \"lit\";\nimport { icons } from \"../styles/icons\";\n\nexport const styles = css`\n ${icons}\n :host {\n display: flex;\n flex-direction: column;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n font-size: 14px;\n line-height: 1.5;\n color: var(--fe-color-text, #333);\n background: var(--fe-color-bg, #fff);\n overflow: hidden;\n position: relative;\n }\n\n :host([dark]) {\n --fe-color-text: rgba(255, 255, 255, 0.85);\n --fe-color-bg: #1f1f1f;\n --fe-color-border: #303030;\n --fe-color-header-bg: #141414;\n --fe-color-hover: rgba(255, 255, 255, 0.08);\n --fe-color-text-secondary: rgba(255, 255, 255, 0.45);\n --fe-color-bg-secondary: rgba(255, 255, 255, 0.05);\n --fe-color-tag-bg: rgba(255, 255, 255, 0.08);\n --fe-color-tag-text: rgba(255, 255, 255, 0.85);\n --fe-left-width: 33.33%;\n }\n\n :host {\n --fe-left-width: 30%;\n }\n\n .toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0.75em 1em;\n border-bottom: 1px solid var(--fe-color-border, #e8e8e8);\n background: var(--fe-color-header-bg, #fff);\n }\n\n .toolbar-title {\n font-size: 14px;\n /* font-weight: 600;\n color: var(--fe-color-text, #333); */\n }\n\n .main-container {\n display: flex;\n flex: 1;\n overflow: hidden;\n position: relative;\n }\n\n .tree-panel {\n flex: 0 0 var(--fe-left-width, 33.33%);\n overflow-y: auto;\n overflow-x: hidden;\n border-right: 1px solid var(--fe-color-border, #e8e8e8);\n padding: 8px;\n }\n\n .tree-panel::-webkit-scrollbar {\n width: 2px;\n }\n .tree-panel::-webkit-scrollbar-thumb {\n background: transparent;\n }\n .tree-panel:hover::-webkit-scrollbar-thumb {\n background: rgba(0, 0, 0, 0.2);\n }\n\n .listeners-panel {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 8px;\n padding-left: 0px;\n }\n\n .listeners-panel::-webkit-scrollbar {\n width: 2px;\n }\n .listeners-panel::-webkit-scrollbar-thumb {\n background: transparent;\n }\n .listeners-panel:hover::-webkit-scrollbar-thumb {\n background: rgba(0, 0, 0, 0.2);\n }\n\n .resizer {\n width: 8px;\n cursor: col-resize;\n background: transparent;\n position: relative;\n z-index: 10;\n flex-shrink: 0;\n user-select: none;\n }\n\n .resizer::after {\n content: \"\";\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n width: 4px;\n height: 40px;\n background: var(--fe-color-border, #e8e8e8);\n border-radius: 2px;\n opacity: 0;\n transition:\n opacity 0.2s,\n height 0.2s;\n }\n\n .resizer:hover::after {\n opacity: 1;\n background: #1890ff;\n }\n\n .resizer.dragging::after {\n opacity: 1;\n background: #1890ff;\n height: 60px;\n }\n\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 3em;\n padding-left: 0;\n color: var(--fe-color-text-secondary, #999);\n text-align: center;\n }\n\n .btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 0.4em 0.8em;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--fe-color-text, #333);\n font-size: 13px;\n cursor: pointer;\n transition: all 0.3s;\n user-select: none;\n }\n\n .btn:hover {\n color: #1890ff;\n background: rgba(24, 144, 255, 0.06);\n }\n\n .btn-icon {\n padding: 0.2em;\n width: 24px;\n height: 24px;\n }\n\n .tag {\n display: inline-flex;\n align-items: center;\n padding: 0.1em 0.4em;\n border-radius: 5px;\n font-size: 11px;\n white-space: nowrap;\n background: var(--fe-color-tag-bg, #f0f0f0);\n color: var(--fe-color-tag-text, #666);\n }\n\n .tree-node {\n display: flex;\n align-items: center;\n padding: 4px 8px;\n cursor: pointer;\n border-radius: 4px;\n transition: background 0.2s;\n user-select: none;\n }\n\n .tree-node:hover {\n background: var(--fe-color-hover, #fafafa);\n }\n\n .tree-node.selected {\n background: rgba(24, 144, 255, 0.1);\n }\n\n .tree-node-toggle {\n width: 16px;\n height: 16px;\n margin-right: 4px;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.2s;\n }\n\n .tree-node-toggle.expanded {\n transform: rotate(90deg);\n }\n\n .tree-node-toggle.hidden {\n visibility: hidden;\n }\n\n .tree-node-content {\n display: flex;\n align-items: center;\n gap: 6px;\n flex: 1;\n }\n\n .tree-node-label {\n font-family: \"SFMono-Regular\", Consolas, monospace;\n font-size: 13px;\n flex-grow: 1;\n }\n\n .tree-node-badge {\n background: var(--fe-color-tag-bg, #f0f0f0);\n color: var(--fe-color-tag-text, #666);\n padding: 2px 6px;\n border-radius: 8px;\n font-size: 11px;\n }\n\n .tree-children {\n padding-left: 16px;\n }\n\n .tag {\n display: inline-flex;\n align-items: center;\n padding: 0.1em 0.4em;\n border-radius: 5px;\n font-size: 11px;\n white-space: nowrap;\n background: var(--fe-color-tag-bg, #f0f0f0);\n color: var(--fe-color-tag-text, #666);\n }\n\n /* 保留消息卡片样式 */\n .retained-message-card {\n margin-bottom: 12px;\n border-radius: 6px;\n border: 1px solid #ffa39e;\n background: #fff1f0;\n overflow: hidden;\n transition: all 0.2s;\n }\n\n .retained-message-card:hover {\n box-shadow: 0 2px 8px rgba(255, 77, 79, 0.15);\n }\n\n .retained-message-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 12px;\n background: rgba(255, 77, 79, 0.1);\n border-bottom: 1px solid #ffa39e;\n }\n\n .retained-message-title {\n flex: 1;\n font-size: 13px;\n font-weight: 500;\n color: #ff4d4f;\n }\n\n .retained-message-actions {\n display: flex;\n gap: 4px;\n }\n\n .retained-message-content {\n padding: 4px;\n }\n\n .retained-message-text {\n margin: 0;\n padding: 8px;\n background: rgba(255, 255, 255, 0.6);\n border-radius: 4px;\n font-family: \"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace;\n font-size: 12px;\n line-height: 1.5;\n color: #262626;\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-all;\n }\n\n /* 暗黑模式下的保留消息卡片 */\n .retained-message-card.dark,\n :host([dark]) .retained-message-card {\n border: 1px solid rgba(255, 77, 79, 0.4);\n background: rgba(255, 77, 79, 0.08);\n }\n\n .retained-message-card.dark:hover,\n :host([dark]) .retained-message-card:hover {\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);\n }\n\n .retained-message-card.dark .retained-message-header,\n :host([dark]) .retained-message-header {\n background: rgba(255, 77, 79, 0.15);\n border-bottom: 1px solid rgba(255, 77, 79, 0.3);\n }\n\n .retained-message-card.dark .retained-message-title,\n :host([dark]) .retained-message-title {\n color: #ff7875;\n }\n\n .retained-message-card.dark .retained-message-text,\n :host([dark]) .retained-message-text {\n background: rgba(0, 0, 0, 0.2);\n color: rgba(255, 255, 255, 0.85);\n }\n\n @media (max-width: 568px) {\n .main-container {\n flex-direction: column;\n }\n\n .tree-panel {\n flex: 0 0 40%;\n border-right: none;\n border-bottom: 1px solid var(--fe-color-border, #e8e8e8);\n }\n\n .resizer {\n display: none;\n }\n }\n`;\n","// packages/viewer/src/listenerViewer/listenerCardStyles.ts\nimport { css } from \"lit\";\n\nexport const styles = css`\n :host {\n display: block;\n }\n\n :host([dark]) {\n --fe-color-card-bg: rgba(255, 255, 255, 0.04);\n --fe-color-card-border: rgba(255, 255, 255, 0.12);\n --fe-color-card-hover: rgba(255, 255, 255, 0.08);\n }\n\n .listener-card {\n display: table;\n width: 100%;\n padding: 0px;\n margin-bottom: 8px;\n border-radius: 6px;\n border: 1px solid var(--fe-color-border, #e8e8e8);\n transition: all 0.2s;\n box-sizing: border-box;\n background-color: #f9f9f9;\n }\n\n .listener-card:hover {\n /* border-color: #1890ff; */\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n }\n\n :host([dark]) .listener-card {\n background-color: var(--fe-color-card-bg, rgba(255, 255, 255, 0.04));\n border: 1px solid var(--fe-color-card-border, rgba(255, 255, 255, 0.12));\n }\n\n :host([dark]) .listener-card:hover {\n background-color: var(--fe-color-card-hover, rgba(255, 255, 255, 0.08));\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);\n }\n\n .listener-row {\n display: table-row;\n border-bottom: 1px solid var(--fe-color-border, #e8e8e8);\n }\n\n .listener-row:last-child {\n border-bottom: none;\n }\n\n .listener-cell {\n display: table-cell;\n padding: 4px 8px;\n vertical-align: middle;\n border-right: 1px solid var(--fe-color-border, #e8e8e8);\n }\n\n .listener-cell:first-child {\n width: 80px;\n min-width: 80px;\n }\n\n .listener-cell:last-child {\n border-right: none;\n }\n\n .listener-label {\n color: var(--fe-color-text-secondary, #999);\n font-size: 12px;\n font-weight: 500;\n }\n\n .listener-value {\n color: var(--fe-color-text, #333);\n font-size: 13px;\n }\n\n .listener-function {\n font-family: \"SFMono-Regular\", Consolas, monospace;\n color: #1890ff;\n cursor: pointer;\n text-decoration: underline;\n }\n\n .listener-function:hover {\n color: #40a9ff;\n }\n\n :host([dark]) .listener-function {\n color: #40a9ff;\n }\n\n :host([dark]) .listener-function:hover {\n color: #69c0ff;\n }\n\n .tag {\n display: inline-flex;\n align-items: center;\n padding: 0.1em 0.4em;\n border-radius: 5px;\n font-size: 11px;\n white-space: nowrap;\n background: var(--fe-color-tag-bg, #f0f0f0);\n color: var(--fe-color-tag-text, #666);\n }\n\n .empty-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1em;\n color: var(--fe-color-text-secondary, #999);\n text-align: center;\n }\n`;\n","export function removeItem(arr: any[], value: any) {\n for (let i = arr.length - 1; i >= 0; i--) {\n if (arr[i] === value) {\n arr.splice(i, 1);\n }\n }\n}\n","import { html } from \"lit\";\n\nexport interface TagColors {\n bg: string;\n color: string;\n border?: string;\n}\n\n// 默认颜色方案\nconst defaultColors: TagColors = {\n bg: \"#f0f0f0\",\n color: \"#666\",\n border: \"#d9d9d9\",\n};\n\n// 预定义颜色方案(亮色模式)\nconst colorSchemes: Record<string, TagColors> = {\n blue: { bg: \"#e6f7ff\", color: \"#1890ff\", border: \"#91d5ff\" },\n green: { bg: \"#f6ffed\", color: \"#52c41a\", border: \"#b7eb8f\" },\n orange: { bg: \"#fff7e6\", color: \"#fa8c16\", border: \"#ffd591\" },\n red: { bg: \"#fff1f0\", color: \"#ff4d4f\", border: \"#ffa39e\" },\n purple: { bg: \"#f9f0ff\", color: \"#722ed1\", border: \"#d3adf7\" },\n gray: { bg: \"#f5f5f5\", color: \"#8c8c8c\", border: \"#d9d9d9\" },\n};\n\n// 预定义颜色方案(暗黑模式)\nconst darkColorSchemes: Record<string, TagColors> = {\n blue: { bg: \"rgba(24, 144, 255, 0.15)\", color: \"#40a9ff\", border: \"rgba(24, 144, 255, 0.3)\" },\n green: { bg: \"rgba(82, 196, 26, 0.15)\", color: \"#73d13d\", border: \"rgba(82, 196, 26, 0.3)\" },\n orange: { bg: \"rgba(250, 140, 22, 0.15)\", color: \"#ffa940\", border: \"rgba(250, 140, 22, 0.3)\" },\n red: { bg: \"rgba(255, 77, 79, 0.15)\", color: \"#ff7875\", border: \"rgba(255, 77, 79, 0.3)\" },\n purple: { bg: \"rgba(114, 46, 209, 0.15)\", color: \"#b37feb\", border: \"rgba(114, 46, 209, 0.3)\" },\n gray: { bg: \"rgba(140, 140, 140, 0.15)\", color: \"#bfbfbf\", border: \"rgba(140, 140, 140, 0.3)\" },\n};\n\n/**\n * 根据文本生成颜色\n */\nfunction getTagColor(text: string): string {\n const colors = [\"blue\", \"green\", \"orange\", \"red\", \"purple\"];\n let hash = 0;\n for (let i = 0; i < text.length; i++) {\n hash = text.charCodeAt(i) + ((hash << 5) - hash);\n }\n return colors[Math.abs(hash) % colors.length];\n}\n\nexport type TagOptions = {\n tooltip?: string;\n onClick?: () => void;\n className?: string;\n styles: string;\n dark?: boolean;\n};\n\n/**\n * 渲染标签组件\n * @param text - 标签文本\n * @param color - 颜色名称 (blue, green, orange, red, purple, gray)\n * @param tooltip - 提示文本\n * @param className - 额外的CSS类名\n * @param dark - 是否使用暗黑模式\n * @returns TemplateResult\n */\nexport function renderTag(\n text: string,\n color?: keyof typeof colorSchemes,\n tooltip?: string,\n className?: string,\n dark?: boolean,\n): ReturnType<typeof html>;\n\n/**\n * 渲染标签组件(选项模式)\n * @param text - 标签文本\n * @param options - 标签选项\n * @returns TemplateResult\n */\nexport function renderTag(\n text: string,\n options?: TagOptions,\n): ReturnType<typeof html>;\n\nexport function renderTag(\n text: string,\n colorOrOptions?: keyof typeof colorSchemes | TagOptions,\n tooltip?: string,\n className?: string,\n dark?: boolean,\n) {\n // 判断是选项模式还是颜色模式\n const isOptionsMode =\n typeof colorOrOptions === \"object\" && colorOrOptions !== null && \"styles\" in colorOrOptions;\n\n if (isOptionsMode) {\n // 选项模式\n const options = colorOrOptions as TagOptions;\n const isDark = options.dark ?? dark ?? false;\n const classes = [\"tag\", isDark ? \"dark\" : \"\", options.className].filter(Boolean).join(\" \");\n\n return html`<span\n class=\"${classes}\"\n title=\"${options.tooltip || text}\"\n style=\"${options.styles}\"\n @click=\"${options.onClick}\"\n >\n ${text}\n </span>`;\n } else {\n // 颜色模式\n const color = colorOrOptions as keyof typeof colorSchemes | undefined;\n const colorKey = color || getTagColor(text);\n const isDark = dark ?? false;\n const schemes = isDark ? darkColorSchemes : colorSchemes;\n const colors = schemes[colorKey] || defaultColors;\n\n const classes = [\"tag\", className].filter(Boolean).join(\" \");\n\n return html`<span\n class=\"${classes}\"\n title=\"${tooltip || text}\"\n style=\"display: inline-flex; align-items: center; padding: 0.1em 0.4em; border-radius: 5px; font-size: 11px; white-space: nowrap; background: ${colors.bg}; color: ${colors.color}; ${\n colors.border ? `border: 1px solid ${colors.border};` : \"\"\n }\"\n >\n ${text}\n </span>`;\n }\n}\n","import { html } from \"lit\";\n\nexport interface ButtonOptions {\n icon?: string;\n pressed?: boolean;\n className?: string;\n title?: string;\n}\n\n/**\n * 渲染按钮组件\n * @param content - 按钮内容\n * @param onClick - 点击事件处理函数\n * @param options - 按钮选项\n * @returns TemplateResult\n */\nexport function renderButton(\n content: unknown,\n onClick: () => void,\n options: ButtonOptions = {},\n) {\n const { icon, pressed, className = \"\", title } = options;\n const classes = [\"btn\", className];\n if (pressed) classes.push(\"btn-pressed\");\n if (icon) classes.push(\"btn-icon\");\n\n return html`<button\n class=\"${classes.join(\" \")}\"\n title=\"${title || \"\"}\"\n @click=\"${onClick}\"\n style=\"display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 0.4em 0.8em; border: none; border-radius: 4px; background: transparent; cursor: pointer; transition: all 0.3s; user-select: none; ${\n icon ? \"padding: 0.2em; width: 24px; height: 24px;\" : \"\"\n }\"\n >\n ${icon ? html`<span class=\"icon ${icon}\"></span>` : \"\"}\n ${content}\n </button>`;\n}\n","import { html } from \"lit\";\n\n/**\n * 渲染图标组件\n * @param name - 图标名称(CSS类名)\n * @param tooltip - 提示文本\n * @returns TemplateResult\n */\nexport function renderIcon(name: string, tooltip?: string) {\n if (tooltip) {\n return html`<span class=\"icon ${name}\" title=\"${tooltip}\"></span>`;\n } else {\n return html`<span class=\"icon ${name}\"></span>`;\n }\n}\n","import { html } from \"lit\";\nimport { renderButton } from \"./index\";\n\nexport interface RetainMessageOptions {\n message: any;\n pathKey: string;\n dark?: boolean;\n onDelete?: (pathKey: string) => void;\n onPrint?: (message: any) => void;\n onCopy?: (message: any) => void;\n}\n\n/**\n * 渲染保留消息卡片\n * @param options - 保留消息选项\n * @returns TemplateResult\n */\nexport function renderRetainMessage(options: RetainMessageOptions) {\n const { message, pathKey, dark = false, onDelete, onPrint, onCopy } = options;\n\n const messageStr = JSON.stringify(message, null, 2);\n const hasMore = messageStr.split(\"\\n\").length > 15;\n const displayStr = hasMore\n ? messageStr.split(\"\\n\").slice(0, 5).join(\"\\n\") + \"\\n...\"\n : messageStr;\n\n return html`\n <div class=\"retained-message-card${dark ? \" dark\" : \"\"}\">\n <div class=\"retained-message-header\">\n <span class=\"retained-message-title\">保留消息</span>\n <div class=\"retained-message-actions\">\n ${renderButton(\"\", () => onDelete?.(pathKey), {\n icon: \"delete\",\n className: \"btn-icon\",\n title: \"删除保留消息\",\n })}\n ${renderButton(\"\", () => onPrint?.(message), {\n icon: \"listeners\",\n className: \"btn-icon\",\n title: \"打印到控制台\",\n })}\n ${renderButton(\"\", () => onCopy?.(message), {\n icon: \"copy\",\n className: \"btn-icon\",\n title: \"复制消息内容\",\n })}\n </div>\n </div>\n <div class=\"retained-message-content\">\n <pre class=\"retained-message-text\">${displayStr}</pre>\n </div>\n </div>\n `;\n}\n","export const languages = {\n cn: {\n // eventViewer\n \"eventViewer.filterPlaceholder\": \"事件类型过滤\",\n \"eventViewer.normalMode\": \"正常模式\",\n \"eventViewer.darkMode\": \"暗黑模式\",\n \"eventViewer.showEvent\": \"显示事件\",\n \"eventViewer.showListeners\": \"显示注册的监听器\",\n \"eventViewer.totalLogs\": \"共{0}条\",\n \"eventViewer.hideListenerDetails\": \"隐藏监听器详情\",\n \"eventViewer.showListenerDetails\": \"显示监听器详情\",\n \"eventViewer.clear\": \"清空\",\n \"eventViewer.extendedFlags\": \"扩展标识\",\n \"eventViewer.transformed\": \"经过转换\",\n \"eventViewer.serialNumber\": \"序号\",\n \"eventViewer.totalListeners\": \"共{0}个监听器\",\n \"eventViewer.retainLastEvent\": \"保留最后一次事件数据\",\n \"eventViewer.rawEventType\": \"原始事件类型: {0}\",\n \"eventViewer.executionTime\": \"执行耗时\",\n \"eventViewer.copyMessage\": \"复制事件消息\",\n \"eventViewer.triggerTime\": \"触发时间\",\n \"eventViewer.eventType\": \"事件类型\",\n \"eventViewer.listenerTag\": \"监听器标签: {0}\",\n \"eventViewer.executionCount\": \"执行次数计数(当前/总数)\",\n \"eventViewer.listenerFlags\": \"监听器标识flags\",\n \"eventViewer.executing\": \"执行中...\",\n \"eventViewer.error\": \"错误: {0}\",\n \"eventViewer.noEventLogs\": \"暂无事件日志\",\n \"eventViewer.listener\": \"监听器: {0}\",\n \"eventViewer.executionResult\": \"执行结果:\",\n \"eventViewer.switchEmitter\": \"切换 Emitter\",\n \"eventViewer.inspect\": \"注册实例到控制台:{}\",\n // listenerViewer\n \"listenerViewer.registeredListeners\": \"已注册监听器\",\n \"listenerViewer.refresh\": \"刷新\",\n \"listenerViewer.noRegisteredListeners\": \"暂无注册的监听器\",\n \"listenerViewer.nodeHasNoListeners\": \"该节点暂无监听器\",\n \"listenerViewer.listener\": \"监听器: {0}\",\n \"listenerViewer.executionCount\": \"执行次数: {0}/{1}\",\n \"listenerViewer.tag\": \"标签: {0}\",\n \"listenerViewer.flags\": \"标识: {0}\",\n \"listenerViewer.retainedMessage\": \"保留消息\",\n // listenerCard\n \"listenerCard.invalidData\": \"监听器数据无效\",\n \"listenerCard.listenerFunction\": \"监听函数\",\n \"listenerCard.executionCount\": \"执行次数\",\n \"listenerCard.tag\": \"标签\",\n \"listenerCard.flags\": \"标识\",\n \"listenerCard.returnValue\": \"返回值\",\n \"listenerCard.clickToConsole\": \"点击在控制台输出监听器信息\",\n \"listenerCard.clickToConsoleResult\": \"单击显示在控制台\",\n \"listenerCard.anonymous\": \"anonymous\",\n },\n en: {\n // eventViewer\n \"eventViewer.filterPlaceholder\": \"Filter by event type\",\n \"eventViewer.normalMode\": \"Normal mode\",\n \"eventViewer.darkMode\": \"Dark mode\",\n \"eventViewer.showEvent\": \"Show events\",\n \"eventViewer.showListeners\": \"Show registered listeners\",\n \"eventViewer.totalLogs\": \"Total {0}\",\n \"eventViewer.hideListenerDetails\": \"Hide listener details\",\n \"eventViewer.showListenerDetails\": \"Show listener details\",\n \"eventViewer.clear\": \"Clear\",\n \"eventViewer.extendedFlags\": \"Extended flags\",\n \"eventViewer.transformed\": \"Transformed\",\n \"eventViewer.serialNumber\": \"Serial number\",\n \"eventViewer.totalListeners\": \"{0} listeners\",\n \"eventViewer.retainLastEvent\": \"Retain last event data\",\n \"eventViewer.rawEventType\": \"Raw event type: {0}\",\n \"eventViewer.executionTime\": \"Execution time\",\n \"eventViewer.copyMessage\": \"Copy event message\",\n \"eventViewer.triggerTime\": \"Trigger time\",\n \"eventViewer.eventType\": \"Event type\",\n \"eventViewer.listenerTag\": \"Listener tag: {0}\",\n \"eventViewer.executionCount\": \"Execution count (current/total)\",\n \"eventViewer.listenerFlags\": \"Listener flags\",\n \"eventViewer.executing\": \"Executing...\",\n \"eventViewer.error\": \"Error: {0}\",\n \"eventViewer.noEventLogs\": \"No event logs\",\n \"eventViewer.listener\": \"Listener: {0}\",\n \"eventViewer.executionResult\": \"Execution result:\",\n \"eventViewer.switchEmitter\": \"Switch Emitter\",\n \"eventViewer.inspect\": \"Inject to console: {}\",\n // listenerViewer\n \"listenerViewer.registeredListeners\": \"Registered Listeners\",\n \"listenerViewer.refresh\": \"Refresh\",\n \"listenerViewer.noRegisteredListeners\": \"No registered listeners\",\n \"listenerViewer.nodeHasNoListeners\": \"This node has no listeners\",\n \"listenerViewer.listener\": \"Listener: {0}\",\n \"listenerViewer.executionCount\": \"Execution count: {0}/{1}\",\n \"listenerViewer.tag\": \"Tag: {0}\",\n \"listenerViewer.flags\": \"Flags: {0}\",\n \"listenerViewer.retainedMessage\": \"Retained Message\",\n // listenerCard\n \"listenerCard.invalidData\": \"Invalid listener data\",\n \"listenerCard.listenerFunction\": \"Listener function\",\n \"listenerCard.executionCount\": \"Execution count\",\n \"listenerCard.tag\": \"Tag\",\n \"listenerCard.flags\": \"Flags\",\n \"listenerCard.returnValue\": \"Return value\",\n \"listenerCard.clickToConsole\": \"Click to output listener info to console\",\n \"listenerCard.clickToConsoleResult\": \"Click to show in console\",\n \"listenerCard.anonymous\": \"anonymous\",\n },\n};\n","import { languages } from \"./languages\";\n\nlet language: string = \"cn\";\n\nexport function setLanguage(lang: string = language) {\n if (lang in languages) language = lang;\n}\n\n/**\n * 翻译内容\n *\n * @param key\n */\nexport function t(key: string, ...args: any[]) {\n const words = (languages as any)[language] || languages.cn;\n const word = key in words ? words[key] : key;\n // 定义正则匹配 {任意内容} 格式的占位符(非贪婪匹配)\n const placeholderRegex = /\\{[^}]*\\}/g;\n let argIndex = 0;\n\n return word.replace(placeholderRegex, () => {\n // 如果有剩余参数,使用参数替换;否则保留原占位符\n if (argIndex < args.length) {\n return String(args[argIndex++]);\n }\n // 无参数时返回原占位符(保持 {xxx} 格式)\n return placeholderRegex.exec(word)?.[0] || \"\";\n });\n}\n","// packages/viewer/src/listenerViewer/listenerCard.ts\nimport { LitElement, html } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { styles } from \"./listenerCardStyles\";\nimport type { FastEventListenerMeta } from \"fastevent\";\nimport type { ItemOf } from \"../types\";\nimport { removeItem, renderTag } from \"../utils\";\nimport { t, setLanguage } from \"../utils/t\";\nimport {\n isPathMatched,\n type FastEvent,\n type FastEventHooks,\n type FastEventListenerNode,\n type TypedFastEventMessage,\n} from \"fastevent\";\n\n/**\n * fastevent-listener-card 组件 - 显示单个监听器的详细信息\n */\n@customElement(\"fastevent-listener-card\")\nexport class FastEventListenerCard extends LitElement {\n static styles = styles;\n\n @property({ attribute: false })\n emitter?: FastEvent<any, any, any>;\n\n @property({ attribute: false })\n listener?: FastEventListenerMeta;\n @property({ type: Boolean, reflect: true })\n dark = false;\n @property({ type: String })\n type?: string;\n\n @property({ type: String, reflect: true })\n lang = \"cn\";\n\n connectedCallback(): void {\n super.connectedCallback();\n this._addListenerHook();\n setLanguage(this.lang);\n }\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this._removeListenerHook();\n }\n\n override willUpdate(changedProperties: Map<PropertyKey, unknown>): void {\n super.willUpdate(changedProperties);\n if (changedProperties.has(\"lang\")) {\n setLanguage(this.lang);\n }\n }\n\n private _onAfterExecuteListener: ItemOf<FastEventHooks[\"AfterExecuteListener\"]> = (\n message: TypedFastEventMessage,\n _returns: any[],\n _listeners: FastEventListenerNode[],\n ) => {\n //\n if (isPathMatched(message.type.split(\"/\"), this.type!.split(\"/\"))) {\n this.requestUpdate();\n }\n };\n\n private _addListenerHook() {\n if (this.emitter) {\n this.emitter.hooks.AfterExecuteListener.push(this._onAfterExecuteListener!);\n }\n }\n private _removeListenerHook() {\n if (this.emitter) {\n removeItem(this.emitter.hooks.AfterExecuteListener, this._onAfterExecuteListener!);\n }\n }\n\n private _formatListenerCount(listener: FastEventListenerMeta): string {\n const [, total, executed] = listener;\n return total === 0 ? `${executed}/∞` : `${executed}/${total}`;\n }\n\n getFunctionPosition(fn: Function) {\n // 将函数转换为字符串并尝试定位\n const fnStr = fn.toString();\n\n // 使用 Error.stack 来获取当前位置\n const stack = new Error().stack;\n\n // 输出函数字符串和堆栈\n console.group(\"函数定位\");\n console.log(\"函数代码:\", fnStr.substring(0, 200));\n console.log(\"当前调用栈:\", stack);\n console.groupEnd();\n\n // 在 DevTools 中,直接打印函数对象会显示可点击的链接\n console.log(fn);\n }\n private _printListenerToConsole(listener: FastEventListenerMeta): void {\n const [fn] = listener;\n if (typeof fn !== \"function\") {\n console.warn(t(\"listenerCard.invalidData\"));\n console.log(\"元数据:\", {\n executed: `${listener[2]}/${listener[1]}`,\n tag: listener[3],\n flags: listener[4],\n });\n return;\n }\n console.group(`FastEvent Listener`);\n console.log(t(\"listenerViewer.listener\", fn.name || t(\"listenerCard.anonymous\")));\n console.log(fn);\n console.log(t(\"listenerViewer.executionCount\", listener[2], listener[1]));\n console.log(t(\"listenerViewer.tag\", listener[3]));\n if (listener[4] !== undefined) {\n console.log(t(\"listenerViewer.flags\", listener[4]));\n }\n console.groupEnd();\n }\n private _printListenerResultToConsole(listener: FastEventListenerMeta): void {\n if (listener.length === 6) {\n console.group(`FastEvent Listener returns`);\n const result = listener[5] instanceof WeakRef ? listener[5].deref() : listener[5];\n console.log(result);\n console.groupEnd();\n }\n }\n\n private _renderReturns(listener: FastEventListenerMeta) {\n if (listener.length === 6 && listener[5]) {\n const result = listener[5] instanceof WeakRef ? listener[5].deref() : listener[5];\n return html`\n <div class=\"listener-row\">\n <div class=\"listener-cell listener-label\">${t(\"listenerCard.returnValue\")}</div>\n <div class=\"listener-cell listener-value\" title=\"${t(\"listenerCard.clickToConsoleResult\")}\" style=\"cursor:pointer\"\n @click=\"${() => this._printListenerResultToConsole(this.listener!)}\"\n>${result instanceof Error ? result.stack : JSON.stringify(result)}</div>\n </div>\n `;\n }\n }\n override render() {\n if (!this.listener) {\n return html`\n <div class=\"empty-state\">${t(\"listenerCard.invalidData\")}</div>\n `;\n }\n\n const [fn, , , tag, flags] = this.listener;\n const functionName = fn.name || t(\"listenerCard.anonymous\");\n\n return html`\n <div class=\"listener-card\">\n <div class=\"listener-row\">\n <div class=\"listener-cell listener-label\">${t(\"listenerCard.listenerFunction\")}</div>\n <div class=\"listener-cell\">\n <span\n class=\"listener-function\"\n @click=\"${() => this._printListenerToConsole(this.listener!)}\"\n title=\"${t(\"listenerCard.clickToConsole\")}\"\n >\n ${functionName}\n </span>\n </div>\n </div>\n <div class=\"listener-row\">\n <div class=\"listener-cell listener-label\">${t(\"listenerCard.executionCount\")}</div>\n <div class=\"listener-cell listener-value\">${this._formatListenerCount(this.listener)}</div>\n </div>\n ${\n tag\n ? html`\n <div class=\"listener-row\">\n <div class=\"listener-cell listener-label\">${t(\"listenerCard.tag\")}</div>\n <div class=\"listener-cell\">${renderTag(tag)}</div>\n </div>\n `\n : \"\"\n }\n ${\n flags !== undefined\n ? html`\n <div class=\"listener-row\">\n <div class=\"listener-cell listener-label\">${t(\"listenerCard.flags\")}</div>\n <div class=\"listener-cell listener-value\">${flags}</div>\n </div>\n `\n : \"\"\n }\n ${this._renderReturns(this.listener)}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"fastevent-listener-card\": FastEventListenerCard;\n }\n}\n","// oxlint-disable typescript/unbound-method\n// packages/viewer/src/listenerViewer/index.ts\nimport { LitElement, html } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { styles } from \"./styles\";\nimport type {\n AddAfterListenerHook,\n ClearListenersHook,\n FastEvent,\n FastEventListenerNode,\n RemoveListenerHook,\n} from \"fastevent\";\nimport type { FastEventListenerMeta } from \"fastevent\";\nimport \"./listenerCard\";\nimport { removeItem, renderTag, renderRetainMessage } from \"../utils\";\nimport { t, setLanguage } from \"../utils/t\";\n\n/**\n * FastEventListeners 组件 - 显示 FastEvent 实例的监听器树\n */\n@customElement(\"fastevent-listeners\")\nexport class FastEventListeners extends LitElement {\n static styles = styles;\n\n @property({ type: Object })\n emitter?: FastEvent;\n\n @property({ type: Boolean, reflect: true })\n dark = false;\n\n @state()\n private _selectedPath: string[] = [];\n\n @state()\n private _listeners: FastEventListenerMeta[] = [];\n\n @state()\n private _expandedNodes = new Set<string>();\n\n @property({ type: String, reflect: true })\n lang = \"cn\";\n\n private _leftWidth = \"30%\";\n private _isResizing = false;\n private _resizeStartX = 0;\n private _resizeStartWidth = 0;\n\n /**\n * 根据路径从 emitter.listeners 中查找节点\n */\n private _getListenerNode(path: string[]): FastEventListenerNode | null {\n if (!this.emitter?.listeners || path.length === 0) return null;\n\n let currentNode: any = this.emitter.listeners;\n\n for (const key of path) {\n if (currentNode[key]) {\n currentNode = currentNode[key];\n } else {\n return null;\n }\n }\n\n return currentNode as FastEventListenerNode;\n }\n\n /**\n * 查找第一个有监听器的节点路径\n */\n private _findFirstNodeWithListeners(): string[] | null {\n if (!this.emitter?.listeners) return null;\n\n const find = (node: any, path: string[]): string[] | null => {\n // 检查当前节点是否有监听器\n if (node.__listeners && node.__listeners.length > 0) {\n return path;\n }\n\n // 递归查找子节点\n for (const key in node) {\n if (key === \"__listeners\") continue;\n const found = find(node[key], [...path, key]);\n if (found) return found;\n }\n\n return null;\n };\n\n return find(this.emitter.listeners, []);\n }\n\n /**\n * 初始化展开状态\n */\n private _initializeExpandedNodes(): void {\n if (!this.emitter?.listeners) return;\n\n this._expandedNodes = new Set();\n\n const collectPaths = (node: any, path: string[]) => {\n this._expandedNodes.add(path.join(\"/\"));\n\n for (const key in node) {\n if (key === \"__listeners\") continue;\n collectPaths(node[key], [...path, key]);\n }\n };\n\n collectPaths(this.emitter.listeners, []);\n }\n\n /**\n * 刷新所有数据\n */\n private _refreshData(): void {\n // 如果是首次加载数据,初始化展开状态和选中状态\n if (this.emitter && this._expandedNodes.size === 0) {\n this._initializeExpandedNodes();\n\n const firstPath = this._findFirstNodeWithListeners();\n if (firstPath) {\n this._selectedPath = firstPath;\n const node = this._getListenerNode(firstPath);\n this._listeners = node?.__listeners || [];\n }\n } else {\n // 如果当前选中的路径仍有监听器,更新监听器列表\n if (this._selectedPath.length > 0) {\n const node = this._getListenerNode(this._selectedPath);\n this._listeners = node?.__listeners || [];\n }\n }\n }\n\n /**\n * 处理节点选择\n */\n private _handleNodeSelect(event: Event): void {\n const target = event.currentTarget as HTMLElement;\n const pathStr = target.dataset.path;\n\n if (!pathStr) return;\n\n const path = pathStr.split(\"/\");\n this._selectedPath = path;\n\n const node = this._getListenerNode(path);\n this._listeners = node?.__listeners || [];\n\n this.requestUpdate();\n }\n _onAddAfterListener: AddAfterListenerHook = (_type, _node) => {\n // 触发重新渲染以更新监听器数量显示\n this.requestUpdate();\n };\n _onRemoveListener: RemoveListenerHook = (_type, _listener, _node) => {\n // 触发重新渲染以更新监听器数量显示\n this.requestUpdate();\n };\n _onClearListeners: ClearListenersHook = () => {\n this._handleRefresh();\n };\n private _setupHooks() {\n if (this.emitter) {\n this.emitter.hooks.AddAfterListener.push(this._onAddAfterListener);\n this.emitter.hooks.RemoveListener.push(this._onRemoveListener);\n this.emitter.hooks.ClearListeners.push(this._onClearListeners);\n }\n }\n private _clearHooks() {\n if (this.emitter) {\n removeItem(this.emitter.hooks.AddAfterListener, this._onAddAfterListener);\n removeItem(this.emitter.hooks.RemoveListener, this._onRemoveListener);\n removeItem(this.emitter.hooks.ClearListeners, this._onClearListeners);\n }\n }\n /**\n * 处理节点展开/收起\n */\n private _handleNodeToggle(event: Event): void {\n const target = (event.currentTarget as HTMLElement).closest(\"[data-path]\") as HTMLElement;\n const pathStr = target?.dataset.path;\n\n if (!pathStr) return;\n\n const pathKey = pathStr;\n\n if (this._expandedNodes.has(pathKey)) {\n this._expandedNodes.delete(pathKey);\n } else {\n this._expandedNodes.add(pathKey);\n }\n\n this.requestUpdate();\n }\n\n /**\n * 手动刷新\n */\n private _handleRefresh(): void {\n this._refreshData();\n this.requestUpdate();\n }\n\n private _handleResizeStart(event: MouseEvent): void {\n this._isResizing = true;\n this._resizeStartX = event.clientX;\n this._resizeStartWidth =\n (this.shadowRoot?.querySelector(\".tree-panel\") as HTMLElement)?.offsetWidth || 0;\n\n document.addEventListener(\"mousemove\", this._handleResizeMove);\n document.addEventListener(\"mouseup\", this._handleResizeEnd);\n\n const resizer = this.shadowRoot?.querySelector(\".resizer\") as HTMLElement;\n resizer?.classList.add(\"dragging\");\n }\n\n private _handleResizeMove = (event: MouseEvent): void => {\n if (!this._isResizing) return;\n\n const offsetX = event.clientX - this._resizeStartX;\n const containerWidth =\n (this.shadowRoot?.querySelector(\".main-container\") as HTMLElement)?.offsetWidth || 0;\n const newWidthPercent = ((this._resizeStartWidth + offsetX) / containerWidth) * 100;\n const clampedWidth = Math.max(20, Math.min(80, newWidthPercent));\n\n this._leftWidth = `${clampedWidth}%`;\n this.style.setProperty(\"--fe-left-width\", this._leftWidth);\n };\n\n private _handleResizeEnd = (): void => {\n this._isResizing = false;\n document.removeEventListener(\"mousemove\", this._handleResizeMove);\n document.removeEventListener(\"mouseup\", this._handleResizeEnd);\n\n const resizer = this.shadowRoot?.querySelector(\".resizer\") as HTMLElement;\n resizer?.classList.remove(\"dragging\");\n };\n\n private _handleKeyDown(event: KeyboardEvent): void {\n const target = event.currentTarget as HTMLElement;\n const pathStr = target.dataset.path;\n\n if (!pathStr) return;\n\n const pathKey = pathStr;\n\n switch (event.key) {\n case \"Enter\":\n case \" \":\n event.preventDefault();\n this._handleNodeSelect(event);\n break;\n case \"ArrowRight\":\n event.preventDefault();\n if (!this._expandedNodes.has(pathKey)) {\n this._handleNodeToggle(event);\n }\n break;\n case \"ArrowLeft\":\n event.preventDefault();\n if (this._expandedNodes.has(pathKey)) {\n this._handleNodeToggle(event);\n }\n break;\n }\n }\n\n /**\n * 判断节点是否为空\n */\n private _isEmptyNode(node: any): boolean {\n const keys = Object.keys(node);\n return keys.length === 1 && node.__listeners && node.__listeners.length === 0;\n }\n\n /**\n * 渲染树节点\n */\n private renderTreeNode(\n node: FastEventListenerNode,\n path: string[],\n depth: number,\n ): ReturnType<typeof html> {\n const pathKey = path.join(\"/\");\n const isExpanded = this._expandedNodes.has(pathKey);\n const isSelected = JSON.stringify(this._selectedPath) === JSON.stringify(path);\n\n // 获取子节点(排除 __listeners)\n const childKeys = Object.keys(node).filter((key) => key !== \"__listeners\");\n const hasChildren = childKeys.length > 0;\n\n // 获取监听器数量\n const listenerCount = node.__listeners?.length || 0;\n\n return html`\n <div>\n <div\n class=\"tree-node ${isSelected ? \"selected\" : \"\"}\"\n style=\"padding-left: ${depth * 8 + 8}px\"\n role=\"treeitem\"\n data-path=\"${pathKey}\"\n aria-expanded=\"${hasChildren ? isExpanded : false}\"\n aria-selected=\"${isSelected}\"\n tabindex=\"${isSelected ? \"0\" : \"-1\"}\"\n @keydown=\"${this._handleKeyDown}\"\n >\n <span\n class=\"tree-node-toggle ${isExpanded ? \"expanded\" : \"\"} ${hasChildren ? \"\" : \"hidden\"}\"\n data-path=\"${pathKey}\"\n @click=\"${this._handleNodeToggle}\"\n >\n <span class=\"icon arrow\"></span>\n </span>\n <span class=\"tree-node-content\" data-path=\"${pathKey}\" @click=\"${this._handleNodeSelect}\">\n <span class=\"icon listeners\"></span>\n <span class=\"tree-node-label\">${path[path.length - 1]}</span>\n ${\n this.emitter?.retainedMessages.has(pathKey)\n ? renderTag(\"retain\", \"red\", t(\"listenerViewer.retainedMessage\"))\n : \"\"\n }\n ${\n listenerCount > 0\n ? html`\n <span class=\"tree-node-badge\">${listenerCount}</span>\n `\n : \"\"\n }\n </span>\n </div>\n ${\n hasChildren && isExpanded\n ? html`\n <div class=\"tree-children\">\n ${childKeys.map((key) => {\n const childPath = [...path, key];\n return this.renderTreeNode(\n node[key] as FastEventListenerNode,\n childPath,\n depth + 1,\n );\n })}\n </div>\n `\n : \"\"\n }\n </div>\n `;\n }\n\n /**\n * 渲染树\n */\n private renderTree(): ReturnType<typeof html> {\n const listeners = this.emitter?.listeners;\n if (!listeners || this._isEmptyNode(listeners)) {\n return html`\n <div class=\"empty-state\">\n <span class=\"icon listeners\"></span>\n <p>${t(\"listenerViewer.noRegisteredListeners\")}</p>\n </div>\n `;\n }\n\n return html`\n <div>\n ${Object.keys(listeners)\n .filter((key) => key !== \"__listeners\")\n .map((key) => {\n return this.renderTreeNode(\n listeners[key] as FastEventListenerNode,\n [key],\n 0,\n );\n })}\n </div>\n `;\n }\n\n private renderListener(listener: FastEventListenerMeta, type: string): ReturnType<typeof html> {\n return html`<fastevent-listener-card .listener=\"${listener}\" .emitter=\"${this.emitter!}\" .type=\"${type}\" .dark=\"${this.dark}\" .lang=\"${this.lang}\"></fastevent-listener-card>`;\n }\n\n private renderListeners(): ReturnType<typeof html> {\n const pathKey = this._selectedPath.join(\"/\");\n const message = this.emitter?.retainedMessages.get(pathKey);\n\n return html`\n <div>\n ${\n message\n ? renderRetainMessage({\n message,\n pathKey,\n dark: this.dark,\n onDelete: (key) => {\n this.emitter?.retainedMessages.delete(key);\n this.requestUpdate();\n },\n onPrint: (msg) => {\n console.group(t(\"listenerViewer.retainedMessage\"));\n console.log(msg);\n console.groupEnd();\n },\n onCopy: (msg) => {\n const jsonStr = JSON.stringify(msg, null, 2);\n navigator.clipboard.writeText(jsonStr);\n },\n })\n : \"\"\n }\n ${\n this._listeners.length === 0\n ? html`\n <div class=\"empty-state\">\n <span class=\"icon listeners\" style=\"--icon-size: 3em\"></span>\n <p>${t(\"listenerViewer.nodeHasNoListeners\")}</p>\n </div>\n `\n : html`\n <div class=\"listeners-list\">\n ${this._listeners.map((listener) => this.renderListener(listener, pathKey))}\n </div>\n `\n }\n </div>\n `;\n }\n\n override willUpdate(changedProperties: Map<PropertyKey, unknown>): void {\n super.willUpdate(changedProperties);\n\n // 当 emitter 变化时,加载数据\n if (changedProperties.has(\"emitter\")) {\n if (this.emitter) {\n this._refreshData();\n } else {\n // 清空数据\n this._listeners = [];\n this._selectedPath = [];\n this._expandedNodes = new Set();\n }\n }\n if (changedProperties.has(\"lang\")) {\n setLanguage(this.lang);\n }\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n // 组件连接时加载初始数据\n if (this.emitter) {\n this._refreshData();\n this._setupHooks();\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n\n // 清理 resize 事件监听\n if (this._isResizing) {\n document.removeEventListener(\"mousemove\", this._handleResizeMove);\n document.removeEventListener(\"mouseup\", this._handleResizeEnd);\n }\n this._clearHooks();\n }\n\n override render() {\n return html`\n <div class=\"toolbar\">\n <span class=\"toolbar-title\">${t(\"listenerViewer.registeredListeners\")}</span>\n <button class=\"btn btn-icon\" title=\"${t(\"listenerViewer.refresh\")}\" @click=\"${this._handleRefresh}\">\n <span class=\"icon refresh\"></span>\n </button>\n </div>\n <div class=\"main-container\">\n <div class=\"tree-panel\" role=\"tree\">\n ${this.renderTree()}\n </div>\n <div class=\"resizer\" @mousedown=\"${this._handleResizeStart}\"></div>\n <div class=\"listeners-panel\">\n ${this.renderListeners()}\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"fastevent-listeners\": FastEventListeners;\n }\n}\n","import { LitElement, html } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport type { EventLog } from \"./types\";\nimport type { ItemOf } from \"../types\";\nimport { renderTag, renderButton, renderIcon } from \"../utils\";\nimport { t } from \"../utils/t\";\n\n/**\n * 事件日志组件,用于显示单条事件日志\n */\n@customElement(\"fastevent-event-log\")\nexport class FastEventEventLog extends LitElement {\n // 不使用 shadow DOM 以便样式能够继承\n createRenderRoot() {\n return this;\n }\n\n @property({ type: Object })\n log!: EventLog;\n\n @property({ type: Boolean })\n dark = false;\n\n @property({ type: Boolean })\n showListeners = false;\n\n @property({ type: Number, attribute: false })\n updateVersion?: number;\n\n @property({ attribute: false })\n onPrintListener?: (listener: ItemOf<EventLog[\"listeners\"]>) => void;\n\n /**\n * 单个日志项的本地监听器显示状态\n * 用于点击监听器数量标签时切换显示\n */\n @state()\n private _localShowListeners = false;\n\n /**\n * 切换监听器列表的显示状态\n */\n private _toggleListeners() {\n this._localShowListeners = !this._localShowListeners;\n }\n\n /**\n * 格式化时间戳\n */\n private _formatTime(timestamp: number): string {\n const date = new Date(timestamp);\n const hours = date.getHours().toString().padStart(2, \"0\");\n const minutes = date.getMinutes().toString().padStart(2, \"0\");\n const seconds = date.getSeconds().toString().padStart(2, \"0\");\n const ms = date.getMilliseconds().toString().padStart(3, \"0\");\n return `${hours}:${minutes}:${seconds}.${ms}`;\n }\n\n /**\n * 渲染日志标志\n */\n private _renderLogFlags(args: any) {\n if (args && (args.flags || 0) > 0) {\n const flags = args.flags || 0;\n if (flags > 1) {\n return renderTag(\n `${args.flags}`,\n \"orange\",\n t(\"eventViewer.extendedFlags\"),\n undefined,\n this.dark,\n );\n }\n return html`${(flags | 1) == 0 ? \"\" : renderTag(`T`, \"orange\", t(\"eventViewer.transformed\"), undefined, this.dark)}`;\n }\n }\n\n /**\n * 格式化监听器执行结果\n */\n private _formatResult(result: any): string {\n if (result === undefined) return t(\"eventViewer.executing\");\n if (result === null) return \"null\";\n\n // 处理 Error 对象\n if (result instanceof Error) {\n return t(\"eventViewer.error\", result.message);\n }\n\n // 处理对象和数组\n if (typeof result === \"object\") {\n try {\n const str = JSON.stringify(result);\n if (str.length > 100) {\n return str.substring(0, 100) + \"...\";\n }\n return str;\n } catch {\n return result.toString();\n }\n }\n\n // 处理其他类型\n return String(result);\n }\n\n /**\n * 渲染单个监听器\n */\n private _renderListener(listener: ItemOf<EventLog[\"listeners\"]>) {\n const statusClass = listener.status === \"ok\" ? \"yes\" : listener.status;\n const resultText = this._formatResult(listener.result);\n return html`\n <div class=\"listener\">\n ${renderIcon(\"listener\", t(\"eventViewer.listener\"))}\n <span class=\"listener-name\" title=\"${t(\"eventViewer.listener\")}\" @click=\"${() => this.onPrintListener?.(listener)}\">${listener.name}</span>\n ${listener.tag ? renderTag(listener.tag, undefined, t(\"eventViewer.listenerTag\", listener.tag), undefined, this.dark) : \"\"}\n ${renderTag(listener.count, undefined, t(\"eventViewer.executionCount\"), undefined, this.dark)}\n ${listener.flags !== undefined ? renderTag(`${listener.flags}`, \"orange\", t(\"eventViewer.listenerFlags\"), undefined, this.dark) : \"\"}\n <span class=\"listener-status ${statusClass}\" title=\"${resultText}\">\n ${renderIcon(listener.status === \"running\" ? \"loading\" : listener.status === \"ok\" ? \"yes\" : listener.status)}\n </span>\n </div>\n `;\n }\n\n /**\n * 渲染监听器列表\n */\n private _renderListeners(listeners: EventLog[\"listeners\"]) {\n return html`${listeners.map((listener) => this._renderListener(listener))}`;\n }\n\n render() {\n const message = this.log.message.deref();\n const args = this.log.args.deref();\n if (!message) return html``;\n\n const payload = JSON.stringify(message.payload ?? \"\");\n const timeStr = this._formatTime(this.log.triggerTime);\n\n return html`\n <div class=\"log-item\">\n <div class=\"log-content\">\n <div class=\"log-header\">\n ${this.log.done ? \"✨\" : renderIcon(\"loading\")}\n <span class=\"log-type\" title=\"${t(\"eventViewer.eventType\")}\">${message.type}</span>\n <span class=\"log-time\" title=\"${t(\"eventViewer.triggerTime\")}\">${timeStr}</span>\n ${renderTag(`#${this.log.id}`, \"gray\", t(\"eventViewer.serialNumber\"), undefined, this.dark)}\n ${\n !this.showListeners\n ? html`<span\n class=\"tag-clickable\"\n style=\"cursor: pointer;\"\n @click=\"${() => this._toggleListeners()}\">${renderTag(`ƒ(${this.log.listeners.length})`, \"purple\", t(\"eventViewer.totalListeners\", this.log.listeners.length), undefined, this.dark)}</span>`\n : \"\"\n }\n ${args?.retain ? renderTag(\"retain\", \"red\", t(\"eventViewer.retainLastEvent\"), undefined, this.dark) : \"\"}\n ${this._renderLogFlags(args!)}\n ${args?.rawEventType && args?.rawEventType !== message.type ? renderTag(args.rawEventType, \"blue\", t(\"eventViewer.rawEventType\", args.rawEventType), undefined, this.dark) : \"\"}\n ${this.log.duration[1] > 0 ? renderTag(`${Number((this.log.duration[1] - this.log.duration[0]).toFixed(3))}ms`, \"green\", t(\"eventViewer.executionTime\"), undefined, this.dark) : \"\"}\n ${renderButton(\n \"\",\n () => {\n const jsonStr = JSON.stringify(message, null, 2);\n navigator.clipboard.writeText(jsonStr);\n },\n {\n icon: \"copy\",\n className: \"btn-icon\",\n title: t(\"eventViewer.copyMessage\"),\n },\n )}\n </div>\n ${payload ? html`<div class=\"log-payload\">${payload}</div>` : \"\"}\n ${\n this.log.listeners.length > 0\n ? html`\n <div class=\"log-listeners ${this.showListeners || this._localShowListeners ? \"log-listeners-visible\" : \"log-listeners-hidden\"}\">\n ${this._renderListeners(this.log.listeners)}\n </div>\n `\n : \"\"\n }\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"fastevent-event-log\": FastEventEventLog;\n }\n}\n","// oxlint-disable typescript/unbound-method\nimport {\n FastEvent,\n type FastEventListenerArgs,\n type FastEventListenerMeta,\n type FastEventListenerNode,\n type FastEventMessage,\n type FastEventSubscriber,\n type FastEventListenerFlags,\n} from \"fastevent\";\nimport { LitElement, html } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport type { ItemOf } from \"../types\";\nimport { styles } from \"./styles\";\nimport type { EventLog } from \"./types\";\nimport \"../listenerViewer/index.js\";\nimport \"./eventLog.js\";\nimport { removeItem } from \"../utils/removeItem\";\nimport { renderButton, renderIcon } from \"../utils\";\nimport { t, setLanguage } from \"../utils/t\";\n\n@customElement(\"fastevent-viewer\")\nexport class FastEventViewer extends LitElement {\n static styles = styles;\n\n @state()\n private _emitters: FastEvent[] = [];\n\n @state()\n private _currentEmitterIndex = 0;\n\n @state()\n private _isDropdownOpen = false;\n\n private _emitterLogs = new Map<number, EventLog[]>();\n private _emitterLogIndexes = new Map<number, number[]>();\n\n @property({ type: Object })\n get emitter(): FastEvent | FastEvent[] | undefined {\n return this._emitters.length === 1 ? this._emitters[0] : this._emitters;\n }\n\n set emitter(value: FastEvent | FastEvent[] | undefined) {\n const newValue = Array.isArray(value) ? value : value ? [value] : [];\n const oldValue = this._emitters;\n\n this._emitters = newValue;\n\n if (this._currentEmitterIndex >= this._emitters.length) {\n this._currentEmitterIndex = 0;\n }\n\n // 只在 emitter 实际变化时才重新附加\n if (oldValue.length !== newValue.length || oldValue.some((e, i) => e !== newValue[i])) {\n this._reattach();\n }\n\n this.requestUpdate(\"emitter\", oldValue.length === 1 ? oldValue[0] : oldValue);\n }\n\n @property({ type: Boolean, reflect: true })\n dark = false;\n\n @property({ type: Boolean, reflect: true })\n enable = true;\n\n /**\n * 允许显示的日志最大数量,超过此数量时自动删除旧的\n */\n @property({ type: Number })\n maxSize: number = 500;\n\n @property({ type: String })\n title: string = \"\";\n\n @property({ type: String, reflect: true })\n lang = \"cn\";\n\n /**\n * 是否在日志中显示监听器详情\n */\n @property({ type: Boolean })\n showListeners = true;\n\n @state()\n private _filterText = \"\";\n\n @state()\n private _showListeners = false;\n\n @state()\n private _isShowListeners = false;\n\n subscriber?: FastEventSubscriber;\n messages: FastEventMessage[] = [];\n logs: EventLog[] = [];\n // 用于渲染的logs数组的索引\n private _logIndexs: number[] = [];\n\n connectedCallback(): void {\n super.connectedCallback();\n setLanguage(this.lang);\n this._attach();\n document.addEventListener(\"click\", this._handleDocumentClick);\n }\n\n disconnectedCallback(): void {\n this._detach();\n document.removeEventListener(\"click\", this._handleDocumentClick);\n }\n\n willUpdate(changedProperties: Map<string, any>): void {\n // 移除了 emitter 的 _reattach() 调用,因为 setter 已经处理了\n if (changedProperties.has(\"_filterText\")) {\n this._updateFilteredLogs();\n }\n if (changedProperties.has(\"showListenersInLog\")) {\n this._isShowListeners = this.showListeners;\n }\n if (changedProperties.has(\"lang\")) {\n setLanguage(this.lang);\n }\n }\n\n private _getCurrentEmitter(): FastEvent | undefined {\n return this._emitters[this._currentEmitterIndex];\n }\n\n private _switchEmitter(index: number) {\n if (index === this._currentEmitterIndex) return;\n\n // 保存当前 emitter 的日志\n this._emitterLogs.set(this._currentEmitterIndex, [...this.logs]);\n this._emitterLogIndexes.set(this._currentEmitterIndex, [...this._logIndexs]);\n\n // 切换到新 emitter\n this._currentEmitterIndex = index;\n\n // 恢复新 emitter 的日志\n this.logs = this._emitterLogs.get(index) || [];\n this._logIndexs = this._emitterLogIndexes.get(index) || [];\n\n // 重新附加钩子\n this._reattach();\n\n // 关闭下拉菜单\n this._isDropdownOpen = false;\n\n this.requestUpdate();\n }\n\n private _handleDocumentClick = (e: MouseEvent) => {\n const target = e.target as HTMLElement;\n const dropdown = this.renderRoot?.querySelector(\".emitter-dropdown-container\");\n if (dropdown && !dropdown.contains(target)) {\n this._isDropdownOpen = false;\n this.requestUpdate();\n }\n };\n\n private _reattach() {\n this._detach();\n this.clear();\n this._attach();\n }\n\n private _updateFilteredLogs() {\n const filter = this._filterText.toLowerCase().trim();\n if (!filter) {\n // 倒序:最新的在前\n this._logIndexs = this.logs.map((_, i) => i).reverse();\n return;\n }\n\n this._logIndexs = this.logs\n .map((log, i) => ({ log, index: i }))\n .filter(({ log }) => {\n const message = log.message.deref();\n if (!message) return false;\n return message.type.toLowerCase().includes(filter);\n })\n .map(({ index }) => index)\n .reverse(); // 倒序:最新的在前\n }\n\n _onBeforeExecuteListener = (message: FastEventMessage, args: FastEventListenerArgs) => {\n const currentEmitter = this._getCurrentEmitter();\n if (!currentEmitter || !this.enable) return;\n\n const listeners = (currentEmitter.getListeners(message.type) || []).map((meta) => {\n return this._getListenerMeta(meta, \"running\");\n });\n const log = {\n message: new WeakRef(message),\n done: false,\n args: new WeakRef(args),\n triggerTime: Date.now(),\n duration: [performance.now(), 0],\n listeners,\n updateVersion: 0,\n } as EventLog;\n log.id = this.logs.length + 1;\n // 重点:用于跟踪\n (message as any).__index = log.id - 1;\n this.logs.push(log as any);\n // 倒序:将新日志索引添加到开头\n this._logIndexs.unshift(this.logs.length - 1);\n\n // 限制日志数量\n if (this.maxSize > 0 && this.logs.length > this.maxSize) {\n this.logs.shift();\n this._updateFilteredLogs();\n }\n\n this.requestUpdate();\n };\n\n _getListenerMeta(meta: FastEventListenerMeta, status?: any): ItemOf<EventLog[\"listeners\"]> {\n if (status === undefined) {\n if (meta.length === 6) {\n let returns: any;\n const m = meta[5];\n if (m instanceof WeakRef) {\n returns = m.deref();\n } else {\n returns = m;\n }\n if (returns instanceof Error) {\n status = \"error\";\n } else {\n status = \"ok\";\n }\n } else {\n status = \"ok\";\n }\n }\n return {\n status: status,\n fn: new WeakRef(meta[0]),\n name: meta[0].name || \"anonymous\",\n count: `${meta[2]}/${meta[1] === 0 ? \"∞\" : meta[1]}`,\n tag: meta[3],\n flags: meta[4] as FastEventListenerFlags | undefined,\n result: meta[5],\n };\n }\n\n _onAfterExecuteListener = (\n message: FastEventMessage,\n returns: any[],\n _listeners: FastEventListenerNode[],\n ) => {\n if (!this.enable) return;\n\n const index = (message as any).__index;\n if (typeof index === \"number\") {\n const log = this.logs[index];\n if (log) {\n log.done = true;\n log.duration[1] = performance.now();\n }\n const newListeners = _listeners.reduce<EventLog[\"listeners\"]>((result, current) => {\n current.__listeners.forEach((meta) => {\n result.push(this._getListenerMeta(meta));\n });\n return result;\n }, []);\n\n // 找到对应的 log 并更新 listeners\n const logIndex = index; //this.logs.findIndex((l) => l.id === index);\n if (logIndex !== -1) {\n this.logs[logIndex].listeners = newListeners;\n this.logs[logIndex].updateVersion++; // 递增版本号以触发组件重新渲染\n returns.map((r, i) => {\n const listener = this.logs[logIndex].listeners[i];\n if (listener) {\n try {\n listener.result = structuredClone(r);\n } catch {\n listener.result = r;\n }\n if (r instanceof Error) {\n listener.status = \"error\";\n } else {\n listener.status = \"ok\";\n }\n }\n });\n }\n delete (message as any).__index;\n }\n\n this.requestUpdate();\n };\n\n private _attach() {\n const currentEmitter = this._getCurrentEmitter();\n if (currentEmitter) {\n const options = currentEmitter.options;\n currentEmitter.hooks.BeforeExecuteListener.push(this._onBeforeExecuteListener);\n currentEmitter.hooks.AfterExecuteListener.push(this._onAfterExecuteListener);\n options.debug = true;\n }\n }\n\n private _detach() {\n const currentEmitter = this._getCurrentEmitter();\n if (currentEmitter) {\n removeItem(currentEmitter.hooks.BeforeExecuteListener, this._onBeforeExecuteListener);\n removeItem(currentEmitter.hooks.AfterExecuteListener, this._onAfterExecuteListener);\n const options = currentEmitter.options;\n options.debug = false;\n }\n }\n\n clear() {\n this.logs = [];\n this._logIndexs = [];\n this.messages = [];\n this.requestUpdate();\n }\n\n /**\n * 在控制台显示监听器函数\n * @param listener\n */\n private _printListenerInfo(listener: ItemOf<EventLog[\"listeners\"]>) {\n const fn = listener.fn.deref();\n if (typeof fn === \"function\") {\n console.group(\"FastEvent Listener\");\n console.log(t(\"eventViewer.listener\", fn.name || \"anonymous\"));\n console.log(fn);\n console.log(t(\"eventViewer.executionResult\"), listener.result);\n console.groupEnd();\n }\n }\n\n renderFilter() {\n return html`<input\n type=\"text\"\n class=\"filter-input\"\n placeholder=\"${t(\"eventViewer.filterPlaceholder\")}\"\n .value=\"${this._filterText}\"\n @input=\"${(e: InputEvent) => {\n this._filterText = (e.target as HTMLInputElement).value;\n }}\"\n />`;\n }\n\n private _renderEmitterMenu() {\n return html`\n <div class=\"emitter-dropdown-menu\">\n ${this._emitters.map((emitter, index) => {\n const isActive = index === this._currentEmitterIndex;\n const menuTitle =\n this.title.length > 0\n ? this.title\n : emitter?.title || `Emitter ${index + 1}`;\n return html`\n <div\n class=\"emitter-menu-item ${isActive ? \"active\" : \"\"}\"\n @click=\"${() => this._switchEmitter(index)}\"\n >\n <span class=\"menu-item-icon\">${isActive ? renderIcon(\"yes\") : \"\"}</span>\n <span class=\"menu-item-label\">${menuTitle}</span>\n </div>\n `;\n })}\n </div>\n `;\n }\n private _getEmitterVarName() {\n return `$emitter`;\n }\n private _injectEmitterToConsole() {\n const varname = this._getEmitterVarName();\n const emitter = this._getCurrentEmitter();\n if (emitter) {\n (window as any)[varname] = emitter;\n console.log(\"FastEvent instance: \", `${varname}=`, emitter);\n }\n }\n renderHeader() {\n const hasMultipleEmitters = this._emitters.length > 1;\n const currentEmitter = this._getCurrentEmitter();\n const displayTitle = this.title.length > 0 ? this.title : currentEmitter?.title || \"\";\n\n return html`\n <div class=\"header\">\n ${\n hasMultipleEmitters\n ? html`\n <div class=\"emitter-dropdown-container\">\n <button\n class=\"emitter-dropdown-trigger\"\n @click=\"${(e: Event) => {\n this._isDropdownOpen = !this._isDropdownOpen;\n e.stopPropagation();\n this.requestUpdate();\n }}\"\n title=\"${t(\"eventViewer.switchEmitter\")}\"\n >\n <span class=\"header-title\">${displayTitle} \n </span>\n <span class=\"dropdown-arrow ${this._isDropdownOpen ? \"open\" : \"\"}\"></span>\n </button>\n ${this._isDropdownOpen ? this._renderEmitterMenu() : \"\"}\n </div>\n <span class=\"emitter-dropdown-spacer\"></span>\n `\n : html`<span class=\"header-title\">${displayTitle}</span>`\n }\n ${renderButton(\"\", () => this._injectEmitterToConsole(), {\n icon: \"inspect\",\n className: \"btn-icon\",\n title: t(\"eventViewer.inspect\", this._getEmitterVarName()),\n })}\n ${renderButton(\n \"\",\n () => {\n this.dark = !this.dark;\n },\n {\n icon: \"dark\",\n className: \"btn-icon\" + (this._showListeners ? \" btn-pressed\" : \"\"),\n title: this.dark ? t(\"eventViewer.normalMode\") : t(\"eventViewer.darkMode\"),\n },\n )}\n ${renderButton(\n \"\",\n () => {\n this._showListeners = !this._showListeners;\n },\n {\n icon: \"listeners\",\n className: \"btn-icon\" + (this._showListeners ? \" btn-pressed\" : \"\"),\n title: this._showListeners\n ? t(\"eventViewer.showEvent\")\n : t(\"eventViewer.showListeners\"),\n },\n )}\n </div>\n `;\n }\n\n renderToolbar() {\n return html`\n <div class=\"toolbar\">\n ${this.renderFilter()}\n <span class=\"toolbar-spacer\">${t(\"eventViewer.totalLogs\", this._logIndexs.length)}</span>\n ${renderButton(\n \"\",\n () => {\n this._isShowListeners = !this._isShowListeners;\n this.requestUpdate();\n },\n {\n icon: \"listener\",\n className: \"btn-icon\" + (this._isShowListeners ? \" btn-pressed\" : \"\"),\n title: this._isShowListeners\n ? t(\"eventViewer.hideListenerDetails\")\n : t(\"eventViewer.showListenerDetails\"),\n },\n )}\n <button class=\"btn btn-icon\" title=\"${t(\"eventViewer.clear\")}\" @click=\"${() => this.clear()}\">\n <span class=\"icon clear\"></span>\n </button>\n </div>\n `;\n }\n\n renderLogs() {\n if (this._logIndexs.length === 0) {\n return html`\n <div class=\"empty-state\">\n ${renderIcon(\"file\")}\n <p>${t(\"eventViewer.noEventLogs\")}</p>\n </div>\n `;\n }\n\n return html`\n <div class=\"logs\">\n ${this._logIndexs.map((index) => {\n const log = this.logs[index];\n return html`\n <fastevent-event-log\n .log=\"${log}\"\n .dark=\"${this.dark}\"\n .showListeners=\"${this._isShowListeners}\"\n .updateVersion=\"${log.updateVersion}\"\n .onPrintListener=\"${this._printListenerInfo}\">\n </fastevent-event-log>\n `;\n })}\n </div>\n `;\n }\n\n render() {\n return html`\n ${this.renderHeader()}\n ${\n this._showListeners\n ? html`<fastevent-listeners\n .emitter=\"${this._getCurrentEmitter()}\"\n .dark=\"${this.dark}\"\n .lang=\"${this.lang}\"\n style=\"flex-grow:1\">\n </fastevent-listeners>`\n : html`${this.renderToolbar()}${this.renderLogs()}`\n }\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"fastevent-viewer\": FastEventViewer;\n }\n}\n"],"x_google_ignoreList":[1,2,3,4,5,6,7],"mappings":"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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCRR,KAAS;AAAA,MAChB,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAO,KAAS;AAAA,MAChB,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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"}
|