@spearwolf/shadow-objects 0.21.0 → 0.21.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/bundle.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  @file @spearwolf/shadow-objects - a reactive entity-component framework that feels at home in the shadows
3
3
  @author Wolfger Schramm <wolfger@spearwolf.de>
4
- @version 0.21.0+bundle.20250830
4
+ @version 0.21.1+bundle.20251108
5
5
 
6
6
  Copyright 2025 Wolfger Schramm
7
7
 
@@ -18,7 +18,7 @@ See the License for the specific language governing permissions and
18
18
  limitations under the License.
19
19
 
20
20
  */
21
- var rt="*",Je=1,Se=2,xe=4,W=Symbol.for("eventize"),Fs="[eventize]",Ft=s=>s===rt,Xe=s=>{switch(typeof s){case"string":case"symbol":return!0;default:return!1}},Ze=typeof console<"u",Ws=Ze?console[console.warn?"warn":"log"].bind(console,Fs):()=>{},zs=(s,t,e)=>(Object.defineProperty(s,t,{value:e,configurable:!0}),s),Us=0,ts=class{static publish(s){s.sort((t,e)=>t.order-e.order).forEach(t=>t.emit())}events=new Map;eventNames=new Set;add(s){Array.isArray(s)?s.forEach(t=>this.eventNames.add(t)):this.eventNames.add(s)}remove(s){Array.isArray(s)?s.forEach(t=>this.eventNames.delete(t)):this.eventNames.delete(s),this.clear(s)}clear(s){Array.isArray(s)?s.forEach(t=>this.events.delete(t)):this.events.delete(s)}retain(s,t){this.eventNames.has(s)&&this.events.set(s,{args:t,order:Us++})}isKnown(s){return this.eventNames.has(s)}emit(s,t,e=[]){if(Ft(s))this.eventNames.forEach(r=>this.emit(r,t,e));else if(this.events.has(s)){let{order:r,args:i}=this.events.get(s);e.push({order:r,emit:()=>t.apply(s,i)})}return e}},Ce=(s,t,e,r)=>{if(typeof t=="function"){let i=t.apply(s,e);i!=null&&r?.(i)}},Vs=(s,t,e,r)=>Ce(t,t.emit,[s].concat(e),r),Gs=s=>{switch(typeof s){case"function":return Je;case"string":case"symbol":return Se;case"object":return xe}},Bs=0,qs=()=>++Bs,es=class{id;eventName;isCatchEmAll;priority;listener;listenerObject;listenerType;callAfterApply;isRemoved;refCount;constructor(s,t,e,r=null){this.id=qs(),this.eventName=s,this.isCatchEmAll=Ft(s),this.listener=e,this.listenerObject=r,this.priority=t,this.listenerType=Gs(e),this.callAfterApply=void 0,this.isRemoved=!1,this.refCount=1}isEqual(s,t=null){if(s===this)return!0;let e=typeof s;return e==="number"&&s===this.id?!0:t===null&&(e==="string"||e==="symbol")?s===rt||s===this.eventName:this.listener===s&&this.listenerObject===t}apply(s,t,e){if(this.isRemoved)return;let{listener:r,listenerObject:i}=this;switch(this.listenerType){case Je:Ce(i,r,t,e),this.callAfterApply&&this.callAfterApply();break;case Se:Ce(i,i[r],t,e),this.callAfterApply&&this.callAfterApply();break;case xe:{let n=r[s];if(this.isCatchEmAll||this.eventName===s){if(typeof n=="function"){let o=n.apply(r,t);o!=null&&e?.(o)}else Vs(s,r,t,e);this.callAfterApply&&this.callAfterApply()}break}}}},Hs=(s,t)=>s.priority!==t.priority?t.priority-s.priority:s.id-t.id,Qe=s=>s?.slice(0),Ye=(s,t)=>{let e=s.indexOf(t);e>-1&&s.splice(e,1)},Qs=s=>s===xe||s===Se,Ee=(s,t,e)=>{let r=s.findIndex(i=>i.isEqual(t,e));r>-1&&(s[r].isRemoved=!0,s.splice(r,1))},It=(s,t,e)=>{let r=[];for(let i of s)(t==null&&i.listenerObject===e||i.eventName===t&&i.listener===e)&&r.push(i);for(let i of r)Ee(s,i,void 0)},we=s=>{s&&(s.forEach(t=>{t.isRemoved=!0}),s.length=0)},Ys=(s,t)=>s.listenerType===t.listenerType?s.priority===t.priority&&s.eventName===t.eventName&&s.listenerObject===t.listenerObject&&s.listener===t.listener:!1,Ks=(s,t)=>{if(Qs(s.listenerType))return t.find(e=>Ys(s,e))},Js=(s,t)=>{let e=Ks(s,t);return e?(e.refCount+=1,e):(t.push(s),t.sort(Hs),s)},Xs=class{namedListeners;catchEmAllListeners;getListenersForEventName=s=>{let t=this.namedListeners.get(s);return t||(t=[],this.namedListeners.set(s,t)),t};constructor(){this.namedListeners=new Map,this.catchEmAllListeners=[]}add(s){return Js(s,s.isCatchEmAll?this.catchEmAllListeners:this.getListenersForEventName(s.eventName))}remove(s,t,e=!1){t==null&&Array.isArray(s)?s.forEach(r=>this.remove(r,null,e)):s==null||t==null&&Ft(s)?this.removeAllListeners():t==null&&Xe(s)?we(this.namedListeners.get(s)):s instanceof es?s.isRemoved||(s.refCount-=1,s.refCount<1&&(s.isRemoved=!0,this.namedListeners.forEach(r=>Ye(r,s)),Ye(this.catchEmAllListeners,s))):e?Ft(s)&&typeof s=="object"?It(this.catchEmAllListeners,rt,s):this.namedListeners.forEach(r=>It(r,s,t)):(this.namedListeners.forEach(r=>{Ee(r,s,t),typeof s=="object"&&It(r,void 0,s)}),Ee(this.catchEmAllListeners,s,t),typeof s=="object"&&It(this.catchEmAllListeners,void 0,s))}removeAllListeners(){this.namedListeners.forEach(s=>we(s)),this.namedListeners.clear(),we(this.catchEmAllListeners)}forEach(s,t){let e=Qe(this.catchEmAllListeners),r=Qe(this.namedListeners.get(s));if(s===rt||!r||r.length===0)e.forEach(t);else if(e.length===0)r.forEach(t);else{let i=r.length,n=e.length,o=0,h=0;for(;o<i||h<n;){if(o<i){let a=r[o];if(h>=n||a.priority>=e[h].priority){t(a),++o;continue}}h<n&&(t(e[h]),++h)}}}getSubscriptionCount(){let s=this.catchEmAllListeners.length;for(let t of this.namedListeners.values())s+=t.length;return s}},it=s=>!!(s&&s[W]);function Ct(s){if(it(s))return s;let t=new Xs,e=new ts;return zs(s,W,{keeper:e,store:t}),s}var z={Max:Number.POSITIVE_INFINITY,AAA:1e9,BB:1e6,C:1e3,Default:0,Low:-1e4,Min:Number.NEGATIVE_INFINITY},Zs=(s,t,e,r,i,n,o)=>{let h=s.add(new es(e,r,i,n));return t.emit(e,h,o),h},tr=(s,t,e,r)=>{let i=e.length,n=typeof e[0],o,h,a,c;if(i>=2&&i<=3&&n==="number"?(o=rt,[h,a,c]=e):i>=3&&i<=4&&typeof e[1]=="number"?[o,h,a,c]=e:(h=z.Default,n==="string"||n==="symbol"||Array.isArray(e[0])?[o,a,c]=e:(o=rt,[a,c]=e)),!a&&Ze)throw Ws("called with insufficient arguments!",e),"subscribeTo() called with insufficient arguments!";let p=l=>u=>Zs(s,t,u,l,a,c,r);return Array.isArray(o)?o.map(l=>Array.isArray(l)?p(l[1])(l[0]):p(h)(l)):p(h)(o)},ss=(s,t,e)=>{let r=[],i=tr(s,t,e,r);return ts.publish(r),i},Ke=s=>t=>{t.callAfterApply=()=>{s?.()}},rs=(s,t)=>Object.assign(()=>E(s,t),Array.isArray(t)?{listeners:t}:{listener:t}),is=(s,t,e,r)=>{let{store:i,keeper:n}=s[W];Array.isArray(t)?t.forEach(o=>{i.forEach(o,h=>h.apply(o,e,r)),n.retain(o,e)}):t!==rt&&(i.forEach(t,o=>{o.apply(t,e,r)}),n.retain(t,e))},m=(s,...t)=>{let e=Ct(s),{store:r,keeper:i}=e[W];return rs(e,ss(r,i,t))},C=(s,...t)=>{let e=Ct(s),{store:r,keeper:i}=e[W],n=ss(r,i,t),o=rs(e,n),h=!1,a=()=>{h||(o(),h=!0)};return Array.isArray(n)?n.forEach(Ke(a)):Ke(a)(n),a},ft=(s,t)=>new Promise(e=>{C(s,t,e)}),E=(s,t,e)=>{if(!it(s))throw new Error("object is not eventized");let{store:r,keeper:i}=s[W],n=typeof t,o=e!=null&&(n==="string"||n==="symbol");r.remove(t,e,o),Array.isArray(t)?i.remove(t.filter(h=>typeof h=="string")):Xe(t)&&i.remove(t)},d=(s,t,...e)=>{if(!it(s))throw new Error("object is not eventized");is(s,t,e)},er=(s,t,...e)=>{if(!it(s))throw new Error("object is not eventized");let r=[];return is(s,t,e,i=>{r.push(i)}),r=r.map(i=>Array.isArray(i)?Promise.all(i):Promise.resolve(i)),r.length>0?Promise.all(r):Promise.resolve()},U=(s,t)=>{let e=Ct(s),{keeper:r}=e[W];r.add(t)},H=(s,t)=>{if(!it(s))throw new Error("object is not eventized");let{keeper:e}=s[W];e.clear(t)},S=(()=>{let s=(t={})=>Ct(t);return s.inject=(t={})=>(t=Ct(t),Object.assign(t,{on:(...e)=>m(t,...e),once:(...e)=>C(t,...e),onceAsync:e=>ft(t,e),off:(e,r)=>E(t,e,r),emit:(e,...r)=>d(t,e,...r),emitAsync:(e,...r)=>er(t,e,...r),retain:e=>U(t,e),retainClear:e=>H(t,e)}),t),s.is=it,s})();var ke=s=>it(s)?s[W]?.store?.getSubscriptionCount()??0:0;var R=Symbol.for("signal"),nt=Symbol.for("effect"),Ae=Symbol.for("destroySignal"),Oe=Symbol.for("createEffect"),ns=Symbol.for("destroyEffect"),dt="value",Te="mute",Pe="unmute",Q="destroy",ot=Symbol.for("recall");var at=S(),D=S(),V=S(),Wt=S();var ht=class{static current;delayedEffects=[];batch(t,e){let r=this.delayedEffects.length;for(let i=0;i<r;i++){let[n,o]=this.delayedEffects[i];if(!(n>e))if(n===e){o.add(t);return}else{this.delayedEffects.splice(i,0,[e,new Set([t])]);return}}this.delayedEffects.push([e,new Set([t])])}run(){let t=new Set,e=[m(V,(i,n)=>{n===ot&&t.add(i)}),m(Wt,i=>{t.add(i)})],r=this.delayedEffects.flatMap(([,i])=>Array.from(i));for(let i of r)t.has(i)||d(V,i,i,ot);e.forEach(i=>{i()})}},os=()=>ht.current;function O(s){let t=ht.current;t?t=void 0:t=ht.current=new ht;try{s()}finally{t&&(ht.current=void 0,t.run())}}var Re=0;function Me(s){Re++;try{s()}finally{Re--}}function zt(){return Re>0}var Ut=class{[nt];constructor(t){this[nt]=t,C(t,pt.Destroy,()=>{this[nt]=void 0})}run=()=>this[nt]?.run();destroy=()=>{this[nt]?.destroy(),this[nt]=void 0}};var Y=new Map,M=class s{#t=new Set;#e=new Set;#s=new Map;#i=new WeakMap;#r=new Map;#n=new Set;#o=new Set;#a;static get(t){if(t!=null)return t instanceof s?t:Y.get(t)}static findOrCreate(t){if(t==null)throw new Error("Cannot create a group with a null object");return new s(t)}static destroy(t){console.warn("SignalGroup.destroy(obj) is deprecated. Use SignalGroup.delete(obj) instead."),s.delete(t)}static delete(t){Y.get(t)?.clear()}static clear(){for(let t of Y.values())t.destroy();Y.clear()}constructor(t){if(t!=null&&t instanceof s)return t;if(t??=this,Y.has(t))return Y.get(t);Y.set(t,this),S(this)}attachGroup(t){if(t===this)throw new Error("Cannot attach a group to itself");return this.#t.add(t),t.#a&&t.#a!==this&&t.#a.#t.delete(t),t.#a=this,t}detachGroup(t){return t!==this&&this.#t.has(t)&&(this.#t.delete(t),t.#a=void 0),t}attachSignal(t){let e=v(t);if(e?.destroyed)throw new Error("Cannot attach a destroyed signal to a group");return e&&this.#e.add(e),t}attachSignalByName(t,e){if(e){this.attachSignal(e);let r=v(e);this.#s.set(t,r),this.#r.has(t)?this.#r.get(t).push(r):this.#r.set(t,[r]),this.#i.has(r)?this.#i.get(r).add(t):this.#i.set(r,new Set([t]))}else this.#s.delete(t);return e}hasSignal(t){return this.#s.has(t)||this.#a?.hasSignal(t)}signal(t){return this.#s.get(t)?.object??this.#a?.signal(t)}detachSignal(t){let e=v(t);if(e&&(this.#e.delete(e),this.#i.has(e))){let r=this.#i.get(e);for(let i of r)if(this.#r.has(i)){let n=this.#r.get(i);n.splice(n.indexOf(e),1),n.length===0?(this.#s.delete(i),this.#r.delete(i)):this.#s.get(i)===e&&this.#s.set(i,n.at(-1))}r.clear(),this.#i.delete(e)}return t}attachEffect(t){return this.#n.add(t),t}runEffects(){for(let t of this.#n)t.run();for(let t of this.#t)t.runEffects()}attachLink(t){if(t?.isDestroyed)throw new Error("Cannot attach a destroyed link to a group");return t&&this.#o.add(t),t}detachLink(t){return t&&this.#o.delete(t),t}destroy(){console.warn("SignalGroup#destroy is deprecated. Use SignalGroup#clear instead."),this.clear()}clear(){d(this,Q,this),E(this);for(let t of this.#t)t.destroy();for(let t of this.#n)t.destroy();for(let t of this.#e)x(t);for(let t of this.#o)t.destroy();this.#t.clear(),this.#e.clear(),this.#s.clear(),this.#r.clear(),this.#n.clear(),this.#o.clear(),this.#a?.detachGroup(this),Y.delete(this)}};var gt=class{#t;#e;constructor(t="id",e=1){this.#t=t,this.#e=e}make(){return Symbol(`${this.#t}${this.#e++}`)}};var Le=[],Vt=()=>Le.at(-1),as=(s,t)=>{Le.push(s);try{return t()}finally{Le.pop()}};var sr=s=>s!=null&&typeof s.then=="function",pt=class s{static idGen=new gt("ef");static Destroy="destroy";static count=0;id;callback;#t;#e=new Set;#s=new Set;#i=new Map;#r=new Set;parentEffect;childEffects=[];curChildEffectSlot=0;autorun=!0;shouldRun=!0;priority;#n;#o=!1;constructor(t,e){S(this),this.callback=t;let r;e?.attach!=null&&(r=M.findOrCreate(e.attach),r.attachEffect(this)),this.autorun=e?.autorun??!0,this.#n=e?.dependencies?e.dependencies.map(i=>{switch(typeof i){case"string":case"symbol":return r.signal(i);default:return i}}):void 0,this.id=s.idGen.make(),this.priority=e?.priority??0,m(V,this.id,ot,this),++s.count}hasStaticDeps(){return this.#n!=null&&this.#n.length>0}saveSignalsFromDeps(){for(let t of this.#n)this.whenSignalIsRead(v(t).id)}static createEffect(t,e,r){let i=Array.isArray(e)?e:void 0,n=i?r??{dependencies:i}:e;n&&i&&(n.dependencies=i);let o,h=Vt();return h!=null?(o=h.getCurrentChildEffect(),o==null&&(o=new s(t,n),h.attachChildEffect(o),d(V,Oe,o)),h.curChildEffectSlot++):(o=new s(t,n),d(V,Oe,o)),o.hasStaticDeps()?o.saveSignalsFromDeps():o.autorun&&o.run(),new Ut(o)}getCurrentChildEffect(){return this.childEffects[this.curChildEffectSlot]}attachChildEffect(t){this.childEffects.push(t),this.parentEffect=this}run=()=>{if(this.#o||!this.shouldRun)return;let t=os();t?t.batch(this.id,this.priority):(this.runCleanupCallback(),this.curChildEffectSlot=0,this.shouldRun=!1,d(Wt,this.id,this.id),this.hasStaticDeps()?this.#t=this.callback():(this.#s=new Set(this.#e),this.#t=as(this,this.callback),this.cleanupLostSignals(),this.#r.clear()))};[ot](){this.shouldRun=!0,this.autorun&&this.run()}whenSignalIsRead(t){this.#s.delete(t),this.#e.has(t)||(this.#e.add(t),this.#i.set(t,[m(at,t,this.priority,ot,this),C(D,t,Ae,this)]))}[Ae](t){!this.#r.has(t)&&this.#e.has(t)&&(this.#r.add(t),this.unsubscribeSignal(t),this.#r.size===this.#e.size&&this.destroy())}cleanupLostSignals(){for(let t of this.#s)this.unsubscribeSignal(t),this.#e.delete(t)}unsubscribeSignal(t){this.#i.has(t)&&(this.#i.get(t).forEach(e=>{e()}),this.#i.delete(t))}runCleanupCallback(){if(this.#t!=null){let t=this.#t;this.#t=void 0,sr(t)?Promise.resolve(t).then(e=>{typeof e=="function"&&e()}):t()}}destroy=()=>{this.#o||(d(this,s.Destroy,this),E(this),d(V,ns,this),this.runCleanupCallback(),E(at,this),E(V,this),E(D,this),this.#o=!0,this.#e.clear(),this.#s.clear(),this.#i.clear(),this.#r.clear(),this.childEffects.forEach(t=>{t.destroy()}),this.childEffects.length=0,--s.count)}};var w=(...s)=>pt.createEffect(...s);var Et=new WeakMap,rr=s=>{let t=Et.get(s);return t||(t={},Et.set(s,t)),t},T=(s,t)=>Et.get(s)?.signals?.get(t);var hs=(s,t,e)=>{let r=rr(s);r.signals??=new Map,r.signals.set(t,e)};function St(...s){for(let t of s)if(Et.has(t)){let e=Et.get(t);if(e.signals){for(let r of e.signals.values())x(r);e.signals.clear(),e.signals=void 0}}}function ls(s){let t=v(yt(s)?s:T(...s));t!=null&&!t.muted&&!t.destroyed&&Gt(t.id,t.value,{touch:!0})}function lt(s){return yt(s)?v(s)?.value:v(T(...s))?.value}var Bt=class{[R];constructor(t){this[R]=t}get get(){return this[R].reader}get set(){return this[R].writer}get value(){return lt(this.get)}set value(t){this.set(t)}onChange(t){let{destroy:e}=w(()=>t(this.value),[this.get]);return e}get muted(){return this[R].muted}set muted(t){this[R].muted=t}touch(){ls(this)}destroy(){x(this)}};var ir=new gt("si");function us(s){zt()||Vt()?.whenSignalIsRead(s)}function Gt(s,t,e){zt()||d(at,s,t,e)}var yt=s=>s!=null&&s[R]!=null,nr=s=>{let t=e=>(e?w(()=>(s.destroyed||us(s.id),e(s.value)),[t]):s.destroyed||(s.beforeRead?.(),us(s.id)),s.value);return Object.defineProperty(t,R,{value:s}),t},qt=class s{static instanceCount=0;id;lazy;get[R](){return this}compare;beforeRead;muted=!1;destroyed=!1;#t=void 0;get value(){return this.lazy&&(this.#t=this.valueFn(),this.valueFn=void 0,this.lazy=!1),this.#t}set value(t){this.#t=t}valueFn;reader;writer=(t,e)=>{let r=e?.lazy??!1,n=e?.compare??this.compare??((h,a)=>h===a);if((r!==this.lazy||r&&t!==this.valueFn||!r&&!n(t,this.#t))&&(r?(this.#t=void 0,this.valueFn=t,this.lazy=!0):(this.#t=t,this.valueFn=void 0,this.lazy=!1),!this.muted&&!this.destroyed)){Gt(this.id,this.#t);return}(e?.touch??!1)&&Gt(this.id,this.#t,{touch:!0})};object;constructor(t,e){this.id=ir.make(),++s.instanceCount,this.lazy=t,this.lazy?(this.value=void 0,this.valueFn=e):(this.value=e,this.valueFn=void 0),this.reader=nr(this),this.object=new Bt(this)}},v=s=>s?.[R];function f(s=void 0,t){let e;if(yt(s))e=v(s);else{let r=t?.lazy??!1;e=new qt(r,s),e.beforeRead=t?.beforeRead,e.compare=t?.compare}return t?.attach!=null&&M.findOrCreate(t.attach).attachSignal(e),e.object}var x=(...s)=>{for(let t of s){let e=v(t);e!=null&&!e.destroyed&&(e.destroyed=!0,e.beforeRead=void 0,--qt.instanceCount,d(D,e.id,e.id))}};function je(s,t){let e=f(),r=t?.attach!=null?M.findOrCreate(t.attach):void 0;r!=null&&(t?.name?r.attachSignalByName(t.name,e):r.attachSignal(e));let i=w(()=>e.set(s()),{autorun:!(t?.lazy??!1),priority:t?.priority??z.C,attach:r}),n=v(e);return n.beforeRead=i.run,C(D,n.id,i.destroy),e.get}var Ht=class{#t=!1;#e;source;lastValue;isDestroyed=!1;constructor(t){S(this),this.source=v(t),this.#e=m(at,this.source.id,(e,r)=>{!this.#t&&!this.isDestroyed&&(r?.touch===!0?this.touch():this.write())}),C(D,this.source.id,()=>this.destroy())}attach(t){let e=M.findOrCreate(t);return e.attachLink(this),C(this,Q,()=>{e.detachLink(this)}),e}nextValue(){return new Promise((t,e)=>{let r=[],i=()=>r.forEach(n=>{n()});r.push(C(this,dt,n=>{i(),t(n)}),C(this,Q,()=>{i(),e()}))})}async*asyncValues(t){let e=0;for(;!this.isDestroyed;)try{let r=await this.nextValue();if(t&&t(r,e++))break;U(this,dt),yield r}catch{break}H(this,dt)}destroy(){this.isDestroyed||(this.#e?.(),this.#e=void 0,d(this,Q,this),H(this,dt),E(this),this.lastValue=void 0,this.isDestroyed=!0,Object.freeze(this))}get isMuted(){return this.#t}mute(){return!this.isDestroyed&&!this.#t&&(this.#t=!0,d(this,Te,this)),this}unmute(){return!this.isDestroyed&&this.#t&&(this.#t=!1,d(this,Pe,this)),this}toggle(){return this.isDestroyed||(this.#t=!this.#t,d(this,this.#t?Te:Pe,this)),this.#t}updateValue(t){if(!this.#t&&!this.isDestroyed){let{value:e}=this.source;t(e),d(this,dt,e),this.lastValue=e}}},Qt=class extends Ht{target;constructor(t,e){super(t),this.target=v(e),C(D,this.target.id,()=>this.destroy()),this.touch()}touch(){return this.updateValue(t=>{this.target.writer(t,{touch:!0})}),this}write(){this.updateValue(t=>{this.target.writer(t)})}},Yt=class extends Ht{target;constructor(t,e){super(t),this.target=e,this.touch()}touch(){return this.updateValue(t=>{this.target(t)}),this}write(){this.updateValue(t=>{this.target(t)})}};var Kt=new Map;function _(s,t,e){let r=v(s),i;if(Kt.has(r)){i=Kt.get(r);let c=v(t)??t;if(i.has(c))return i.get(c)}else i=new Map,Kt.set(r,i);let n=v(t),o=n!=null?new Qt(s,n):new Yt(s,t),h=e?.attach;h&&o.attach(h);let a=n??t;return i.set(a,o),C(o,Q,()=>{i.delete(a),i.size===0&&Kt.delete(r)}),o}var Jt=class s{static fromProps(t,e){let r=new s,i=e?e.map(n=>[n,t[n]]):Object.entries(t);for(let[n,o]of i)r.#t.set(n,f(o));return r}#t=new Map;keys(){return this.#t.keys()}signals(){return this.#t.values()}entries(){return this.#t.entries()}clear(){for(let t of this.#t.values())t.destroy();this.#t.clear()}has(t){return this.#t.has(t)}get(t){if(!this.#t.has(t)){let e=f();return this.#t.set(t,e),e}return this.#t.get(t)}update(t){t.size&&O(()=>{for(let[e,r]of t.entries())this.get(e).set(r)})}updateFromProps(t,e){O(()=>{let r=e?e.map(i=>[i,t[i]]):Object.entries(t);for(let[i,n]of r)this.get(i).set(n)})}};var $;(function(s){s[s.StructuralChanges=1]="StructuralChanges",s[s.ContentUpdates=2]="ContentUpdates",s[s.Removal=3]="Removal"})($||($={}));var b;(function(s){s[s.CreateEntities=1]="CreateEntities",s[s.DestroyEntities=2]="DestroyEntities",s[s.SetParent=3]="SetParent",s[s.UpdateOrder=4]="UpdateOrder",s[s.ChangeProperties=5]="ChangeProperties",s[s.ChangeToken=6]="ChangeToken",s[s.SendEvents=7]="SendEvents"})(b||(b={}));var ut=Symbol.for("ShadowEntsGlobalNS"),G="#void",cs="contextLost",fs="configure",ds="changeTrail",ps="destroy",gs="loaded",ys="appliedChangeTrail",ms="importedModule",bs="destroyed",mt="messageToView",vs=16e3,ws=16e3,Cs=4e3,Es=1e3,_e="shadowObjects";function Ss(s,t){s.indexOf(t)===-1&&s.push(t)}function Ne(s,t){let e=s.indexOf(t);e!==-1&&s.splice(e,1),s.push(t)}function K(s,t){let e=s.indexOf(t);e!==-1&&s.splice(e,1)}var ct=s=>typeof s=="string"?s.trim()||ut:typeof s=="symbol"?s:ut;var xt="#root",kt=class{#t;get uuid(){return this.#t}#e=0;constructor(t){this.#t=t}#s=!0;#i=0;#r=0;hasChanges(){return this.#e>0}get isNew(){return this.#s}get isCreated(){return this.#i>0&&this.#i>this.#r}get isDestroyed(){return this.#r>0&&this.#r>=this.#i}#n=G;#o;#a=0;#h;#l;#u;create(t=G,e,r=0){this.#e++,this.#i++,this.#h=t,this.#l=e??xt,this.#u=r||void 0}destroy(){this.#r++,this.#e++}clear(){this.#e=0,this.#s=!1,this.#h=void 0,this.#l=void 0,this.#u=void 0,this.#f.clear(),this.#d.length=0,this.#g.length=0,this.#p.clear()}changeToken(t){t===this.#n?this.#h=void 0:(this.#h=t,this.#e++)}setParent(t){t===this.#o?this.#l=void 0:(this.#l=t??xt,this.#e++)}changeOrder(t){t===this.#a?this.#u=void 0:(this.#u=t,this.#e++)}#c=new Map;#f=new Map;#d=[];changeProperty(t,e,r){let i=this.#c.get(t);r==null&&e!==i||r!=null&&!r(e,i)?(this.#f.set(t,e),Ne(this.#d,t),this.#e++):(this.#f.delete(t),K(this.#d,t))}removeProperty(t){let e=this.#c.has(t);this.#f.has(t)?(this.#f.delete(t),e||K(this.#d,t)):e&&(Ne(this.#d,t),this.#e++)}#g=[];#p=new Set;createEvent(t,e,r){this.#g.push({type:t,data:e}),r?.forEach(i=>this.#p.add(i)),this.#e++}transferEventsTo(t){this.#g.length>0&&(t.#g.push(...this.#g),this.#g.length=0),this.#p.size>0&&(t.#p=new Set([...t.#p,...this.#p]),this.#p.clear())}buildChangeTrail(t,e){let{isNew:r,isCreated:i,isDestroyed:n}=this;if(!(r&&n))switch(e){case $.StructuralChanges:r?t.push(this.makeCreateEntityChange()):n||(this.#l!==void 0&&!(this.#l===xt&&this.#o===void 0)?t.push(this.makeSetParentChange()):this.#u!==void 0&&this.#u!==this.#a&&t.push(this.makeUpdateOrderChange()),this.#h!==void 0&&this.#h!==this.#n&&t.push(this.makeChangeToken()));break;case $.ContentUpdates:!r&&i&&this.#d.length>0&&t.push(this.makeChangePropertyChange()),this.#g.length>0&&t.push(this.makeEvents());break;case $.Removal:n&&t.push(this.makeDestroyEntityChange());break}}makeEvents(){let t={type:b.SendEvents,uuid:this.#t,events:this.#g.slice(0)};return this.#p.size>0&&(t.transferables=Array.from(this.#p)),t}makeCreateEntityChange(){let t={type:b.CreateEntities,uuid:this.#t,token:this.#h};if(this.#n=this.#h,this.#l!==void 0){let e=this.#l===xt?void 0:this.#l;this.#o=e,e!==void 0&&(t.parentUuid=e)}return this.#f.size>0&&(t.properties=Array.from(this.#f.entries()).filter(([,e])=>e!==void 0),t.properties.forEach(([e,r])=>this.#c.set(e,r))),this.#u!==void 0&&this.#u!==this.#a&&(t.order=this.#a=this.#u),t}makeDestroyEntityChange(){return{type:b.DestroyEntities,uuid:this.#t}}makeSetParentChange(){this.#o=this.#l===xt?void 0:this.#l;let t={type:b.SetParent,uuid:this.#t,parentUuid:this.#o};return this.#u!==void 0&&this.#u!==this.#a&&(t.order=this.#a=this.#u),t}makeUpdateOrderChange(){return this.#a=this.#u??0,{type:b.UpdateOrder,uuid:this.#t,order:this.#a}}makeChangeToken(){return this.#n=this.#h??G,{type:b.ChangeToken,uuid:this.#t,token:this.#n}}makeChangePropertyChange(){let t=this.#d.map(e=>{if(this.#f.has(e)){let r=this.#f.get(e);return this.#c.set(e,r),[e,r]}else return this.#c.delete(e),[e,void 0]});return{type:b.ChangeProperties,uuid:this.#t,properties:t}}};var xs=s=>{if(!(s===void 0||s.length===0))return s.filter(t=>t.length===1||t[1]!==void 0)},De=(s,t)=>{if(s===t||t===void 0)return s;if(s===void 0)return xs(t);for(let[e,r]of t){let i=s.find(([n])=>n===e);i===void 0?s.push([e,r]):i[1]=r}return xs(s)};var Xt=class{#t=new Map;get[Symbol.iterator](){return this.#t.entries.bind(this.#t)}clear(){this.#t.clear()}isEmpty(){return this.#t.size===0}hasComponentState(t){return this.#t.has(t)}getComponentState(t){return this.#t.get(t)}write(t){for(let e of t)if(e.type===b.CreateEntities)this.createEntity(e);else if(this.#t.has(e.uuid))switch(e.type){case b.DestroyEntities:this.destroyEntity(e);break;case b.SetParent:this.setParent(e);break;case b.UpdateOrder:this.updateOrder(e);break;case b.ChangeToken:this.changeToken(e);break;case b.ChangeProperties:this.changeProperties(e);break}}changeProperties({uuid:t,properties:e}){let r=this.getComponentState(t);r.properties=De(r.properties,e)}changeToken({uuid:t,token:e}){this.getComponentState(t).token=e||G}updateOrder({uuid:t,order:e}){this.getComponentState(t).order=e??0}setParent({uuid:t,parentUuid:e,order:r}){let i=this.getComponentState(t);i.parentUuid=e,i.order=r??0}destroyEntity({uuid:t}){this.#t.delete(t)}createEntity({uuid:t,token:e,parentUuid:r,order:i,properties:n}){this.#t.set(t,{token:e||G,parentUuid:r,order:i??0,properties:De(void 0,n)})}};var N=class s{static{this.ReRequestParentRoots="re-request-parent-roots"}static getContextsMap(){return globalThis.__shadowEntsContexts==null&&(globalThis.__shadowEntsContexts=new Map),globalThis.__shadowEntsContexts}static get(t){let e=ct(t),r=s.getContextsMap();return r.has(e)?r.get(e):new s(e)}#t=new Map;#e=[];#s=new Xt;constructor(t=ut){let e=ct(t),r=s.getContextsMap();if(r.has(e))return r.get(e);this.ns=e,r.set(e,this)}addComponent(t){let e;this.#t.has(t.uuid)?(e=this.#t.get(t.uuid),e.component=t,e.children=[]):(e={component:t,children:[],changes:new kt(t.uuid),propIsEqual:void 0},this.#t.set(t.uuid,e)),e.changes.create(t.token,t.parent?.uuid,t.order),t.parent?(this.addToChildren(t.parent,t),e.changes.setParent(t.parent.uuid)):this.#n(t,this.#e),this.#o=void 0}hasComponent(t){return this.#t.has(t.uuid)}hasComponents(){return this.#t.size>0}isRootComponent(t){return this.#e.includes(t.uuid)}destroyComponent(t){if(this.hasComponent(t)){let e=this.#t.get(t.uuid);e.children.slice(0).forEach(r=>this.#t.get(r)?.component.removeFromParent()),e.changes.destroy(),this.#o=void 0}}getChildren(t){return this.#t.get(t.uuid)?.children.map(e=>this.#t.get(e).component)??[]}removeFromParent(t,e){if(this.hasComponent(e)){let r=this.#t.get(t),i=this.#t.get(e.uuid),n=i.children.indexOf(t);n!==-1&&(i.children.splice(n,1),r.changes.setParent(void 0)),this.#n(r.component,this.#e),this.#o=void 0}}moveToRoot(t){let e=this.#t.get(t);e&&(e.changes?.setParent(void 0),this.#n(e.component,this.#e)),this.#o=void 0}changeToken(t,e){this.#t.get(t.uuid)?.changes.changeToken(e)}isChildOf(t,e){return this.hasComponent(e)?this.#t.get(e.uuid).children.includes(t.uuid):!1}addToChildren(t,e){let r=this.#t.get(t.uuid);if(r)this.#n(e,r.children),this.#t.get(e.uuid)?.changes.setParent(t.uuid),K(this.#e,e.uuid),this.#o=void 0;else throw new Error(`the view component ${t.uuid} cannot have a child added to it because the component do not exist!`)}removeSubTree(t){let e=this.#t.get(t);e&&(e.children.slice(0).forEach(r=>this.removeSubTree(r)),this.destroyComponent(e.component),this.#i(t))}setProperty(t,e,r,i){let n=this.#t.get(t.uuid);return n!=null?(i!=null?(n.propIsEqual??=new Map,n.propIsEqual.set(e,i)):n.propIsEqual?.has(e)&&n.propIsEqual.delete(e),n.changes.changeProperty(e,r,i)):!1}removeProperty(t,e){this.#t.get(t.uuid)?.changes.removeProperty(e)}changeOrder(t){if(t.parent){let e=this.#t.get(t.parent.uuid);K(e.children,t.uuid),this.#n(t,e.children)}else K(this.#e,t.uuid),this.#n(t,this.#e);this.#t.get(t.uuid)?.changes.changeOrder(t.order),this.#o=void 0}traverseLevelOrderBFS(){return this.#a().map(t=>t.component)}dispatchShadowObjectsEvent(t,e,r,i){this.#t.get(t.uuid)?.changes.createEvent(e,r,i)}broadcastEvent(t,e=void 0){for(let r of this.traverseLevelOrderBFS())r.dispatchEvent(t,e,!1)}dispatchMessage(t,e,r=void 0,i=!1){this.#t.get(t)?.component.dispatchEvent(e,r,i)}dispatchReRequestParentRoots(){for(let t of this.#e)this.dispatchMessage(t,s.ReRequestParentRoots)}buildChangeTrails(t=!0){let e=[];if(!this.hasComponents())return e;let r=this.#r();for(let i of r)i.buildChangeTrail(e,$.StructuralChanges);for(let i of r)i.buildChangeTrail(e,$.ContentUpdates);for(let i of r)i.buildChangeTrail(e,$.Removal),(i.isDestroyed||i.isNew&&!i.isCreated)&&this.#i(i.uuid),t&&i.clear();return this.#s.write(e),e}reCreateChanges(){if(!this.#s.isEmpty()){this.buildChangeTrails(!1);for(let[t,e]of this.#s){let r=this.#t.get(t);if(r){let i=new kt(t);if(i.create(e.token,e.parentUuid,e.order),e.properties)for(let[n,o]of e.properties)i.changeProperty(n,o,r.propIsEqual?.get(n));r.changes.transferEventsTo(i),r.changes.clear(),r.changes=i}}this.#s.clear(),this.broadcastEvent(cs)}}clear(){if(this.#o=void 0,this.#s.clear(),this.#e.slice(0).forEach(t=>this.removeSubTree(t)),this.#e.length!==0)throw new Error("component-context panic: #rootComponents is not empty!");if(this.#t.size!==0)throw new Error("component-context panic: #components is not empty!")}#i(t){this.#t.has(t)&&(this.#t.delete(t),K(this.#e,t),this.#o=void 0)}#r(){return this.#a().filter(t=>t.changes.hasChanges()).map(t=>t.changes)}#n(t,e){if(e.length===0){e.push(t.uuid);return}if(e.includes(t.uuid))return;let r=e.length,i=new Array(r);if(i[0]=this.#t.get(e[0]).component,t.order<i[0].order){e.unshift(t.uuid);return}if(r===1){e.push(t.uuid);return}let n=r-1;if(i[n]=this.#t.get(e[n]).component,t.order>=i[n].order){e.push(t.uuid);return}if(r===2){e.splice(1,0,t.uuid);return}for(let o=n-1;o>=1;o--)if(i[o]=this.#t.get(e[o]).component,t.order>=i[o].order){e.splice(o+1,0,t.uuid);return}}#o;#a(){if(this.#o)return this.#o;let t=new Map,e=(r,i)=>{let n=this.#t.get(r);if(n!=null){t.has(i)?t.get(i).push(n):t.set(i,[n]);for(let o of n.children)e(o,i+1)}};return this.#e.forEach(r=>e(r,0)),this.#o=Array.from(t.entries()).sort((r,i)=>r[0]-i[0]).map(([,r])=>r).flat(),this.#o}};function At(s,t,e,r,i,n){function o(wt){if(wt!==void 0&&typeof wt!="function")throw new TypeError("Function expected");return wt}for(var h=r.kind,a=h==="getter"?"get":h==="setter"?"set":"value",c=!t&&s?r.static?s:s.prototype:null,p=t||(c?Object.getOwnPropertyDescriptor(c,r.name):{}),l,u=!1,g=e.length-1;g>=0;g--){var y={};for(var P in r)y[P]=P==="access"?{}:r[P];for(var P in r.access)y.access[P]=r.access[P];y.addInitializer=function(wt){if(u)throw new TypeError("Cannot add initializers after decoration has completed");n.push(o(wt||null))};var st=(0,e[g])(h==="accessor"?{get:p.get,set:p.set}:p[a],y);if(h==="accessor"){if(st===void 0)continue;if(st===null||typeof st!="object")throw new TypeError("Object expected");(l=o(st.get))&&(p.get=l),(l=o(st.set))&&(p.set=l),(l=o(st.init))&&i.unshift(l)}else(l=o(st))&&(h==="field"?i.unshift(l):p[a]=l)}c&&Object.defineProperty(c,r.name,p),u=!0}function J(s,t,e){for(var r=arguments.length>2,i=0;i<t.length;i++)e=r?t[i].call(s,e):t[i].call(s);return r?e:void 0}function Ot(s){return function(t,e){let r=s?.name||e.name,i=!!(s?.readAsValue??!1);return{get(){let n=T(this,r);if(n)return i?n.value:n.get()},set(n){T(this,r)?.set(n)},init(n){let o=f(n,s);return hs(this,r,o),M.findOrCreate(this).attachSignalByName(r,o),o.value}}}}var j="ConsoleLogger",L=`${j}Storage`,or=!!(globalThis.location?.host?.startsWith("localhost")??!1),Pt="localStorage"in globalThis,Zt=Symbol.for(j),ks=!1,As=s=>{if(typeof s=="boolean")return s;switch(s.toLowerCase()){case"true":case"yes":case"on":return!0;default:return!1}},Ie=s=>[Pt?j:void 0,...Array.isArray(s)?s:[s]].filter(Boolean).join(".");function $e(s,t=void 0,e){let r=Ie(s),i=Pt?localStorage.getItem(r):globalThis[L]?.[r];return i!=null?t(i):e}function Tt(s,t){Pt?localStorage.setItem(Ie(s),t):(globalThis[L]==null&&(globalThis[L]={},console.debug(`${j}: Initialize`,{[L]:globalThis[L]})),globalThis[L][Ie(s)]=t)}var A=class s{static{this.sharedConfig={enable:or,debug:!1,info:!0,warn:!0,"styles.debug":"color: #111; background: #999; display: inline-block; padding: 0 0.25em; margin: 0; border-radius: 0.25em","styles.info":"color: #020; background: #8a8; display: inline-block; padding: 0 0.25em; margin: 0; border-radius: 0.25em","styles.warn":"color: #fa0; background: #a98; display: inline-block; padding: 0 0.25em; margin: 0; border-radius: 0.25em","styles.error":"color: #ff0; background: #a00; display: inline-block; padding: 0 0.25em; margin: 0; border-radius: 0.25em"}}static get isEnabled(){return s.sharedConfig.enable}static get isDebug(){return s.sharedConfig.enable&&s.sharedConfig.debug}static{this.sharedStyles={get debug(){return s.sharedConfig["styles.debug"]},set debug(t){s.sharedConfig["styles.debug"]=t},get info(){return s.sharedConfig["styles.info"]},set info(t){s.sharedConfig["styles.info"]=t},get warn(){return s.sharedConfig["styles.warn"]},set warn(t){s.sharedConfig["styles.warn"]=t},get error(){return s.sharedConfig["styles.error"]},set error(t){s.sharedConfig["styles.error"]=t}}}static loadConfig(){Pt?(["enable","debug","info","warn"].forEach(t=>{this.sharedConfig[t]=$e(t,As,this.sharedConfig[t])}),["debug","info","warn","error"].forEach(t=>{this.sharedStyles[t]=$e(["styles",t],void 0,this.sharedStyles[t])}),s.isDebug&&console.debug(`${j}: Load config from localStorage`,s.sharedConfig),globalThis[j]?.[Zt]||(globalThis[j]??={[Zt]:!0,get enable(){return s.sharedConfig.enable},set enable(t){s.sharedConfig.enable=t,Tt("enable",t?"true":"false")},get debug(){return s.sharedConfig.debug},set debug(t){s.sharedConfig.debug=t,Tt("debug",t?"true":"false")},get info(){return s.sharedConfig.info},set info(t){s.sharedConfig.info=t,Tt("info",t?"true":"false")},get warn(){return s.sharedConfig.warn},set warn(t){s.sharedConfig.warn=t,Tt("warn",t?"true":"false")}})):globalThis[L]?.[Zt]||(globalThis[L]={[Zt]:!0,...s.sharedConfig,...globalThis[L]},s.sharedConfig=globalThis[L],s.isDebug&&console.debug(`${j}: Load config from ${L}`,globalThis[L]))}constructor(t){this.enable=!0,this.namespace=(t||"").trim()||j,ks||(s.loadConfig(),ks=!0);let e=[this.namespace,"enable"];this.enable=$e(e,As,this.enable),Tt(e,Pt?this.enable?"true":"false":this.enable)}get isEnabled(){return this.enable&&s.sharedConfig.enable}get isDebug(){return this.isEnabled&&s.sharedConfig.debug}get isInfo(){return this.isEnabled&&s.sharedConfig.info}get isWarn(){return this.isEnabled&&s.sharedConfig.warn}debug(...t){this.#t("debug",s.sharedStyles.debug,t)}info(...t){this.#t("info",s.sharedStyles.info,t)}warn(...t){this.#t("warn",s.sharedStyles.warn,t)}error(...t){this.#t("error",s.sharedStyles.error,t)}#t(t,e,r){console[t](`%c${this.namespace}`,e,...r)}};var I=(()=>{var s;let t,e=[],r=[],i,n=[],o=[];return class B{static{let a=typeof Symbol=="function"&&Symbol.metadata?Object.create(null):void 0;t=[Ot()],i=[Ot()],At(this,null,t,{kind:"accessor",name:"viewReady",static:!1,private:!1,access:{has:c=>"viewReady"in c,get:c=>c.viewReady,set:(c,p)=>{c.viewReady=p}},metadata:a},e,r),At(this,null,i,{kind:"accessor",name:"proxyReady",static:!1,private:!1,access:{has:c=>"proxyReady"in c,get:c=>c.proxyReady,set:(c,p)=>{c.proxyReady=p}},metadata:a},n,o),a&&Object.defineProperty(this,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:a})}static{this.AfterSync="afterSync"}static{this.ContextLost="contextLost"}static{this.ContextCreated="contextCreated"}static get(a){if(a!=null)return globalThis.__shadowEnvs?.get(a)}#t;#e;#s;#i;#r;#n;#o;get viewReady(){return this.#o}set viewReady(a){this.#o=a}#a;get proxyReady(){return this.#a}set proxyReady(a){this.#a=a}#h;get isDestroyed(){return this.#h}constructor(){this.#s=!1,this.#i=!1,this.#r=!1,this.logger=new A("ShadowEnv"),this.ns$=f(),this.#o=J(this,e,!1),this.#a=(J(this,r),J(this,n,!1)),this.#h=(J(this,o),!1),this.ready=async()=>this.isReady?this:ft(this,B.ContextCreated),this.#l=()=>{this.#s&&this.#u()},U(this,B.ContextCreated),m(this,B.ContextLost,z.AAA,()=>{H(this,B.ContextCreated)}),w(()=>{if(this.viewReady&&this.proxyReady)return this.view.reCreateChanges(),d(this,B.ContextCreated,this),this.#i&&(this.#i=!1,this.#u()),()=>{d(this,B.ContextLost,this)}},[T(this,"viewReady"),T(this,"proxyReady")])}get view(){return this.#t}set view(a){a!==this.#t&&(this.#t&&this.#t.ns&&globalThis.__shadowEnvs&&globalThis.__shadowEnvs.delete(this.#t.ns),this.#t=a??void 0,this.#t&&this.#t.ns&&(globalThis.__shadowEnvs??=new Map,globalThis.__shadowEnvs.has(this.#t.ns)&&globalThis.__shadowEnvs.get(this.#t.ns)!==this&&this.logger.isWarn&&this.logger.warn("overwrite a namespace already in use",this.#t.ns,globalThis.__shadowEnvs.get(this.#t.ns)),globalThis.__shadowEnvs.set(this.#t.ns,this)),this.viewReady=!!a)}get envProxy(){return this.#e}set envProxy(a){if(a!==this.#e){let c=this.#e;this.#e=a??void 0,this.#e&&(this.#e.onMessageToView=this.#c.bind(this)),c&&c.destroy(),this.proxyReady=!1,a?.start().then(()=>{this.proxyReady=!0}).catch(p=>{this.logger.error("failed to start envProxy",p),this.proxyReady=!1})}}get isReady(){return!!(this.#t&&this.#e&&this.proxyReady&&!this.isDestroyed)}sync(){if(!this.isReady){this.#i=!0;return}this.#s||(this.#s=!0,queueMicrotask(this.#l))}syncWait(){return this.#r=!0,this.sync(),this.#n?this.#n:(this.#n=ft(this,B.AfterSync).then(a=>(this.#n=void 0,a)),this.#n)}destroy(){let a=this.#t?.ns;this.envProxy?.destroy(),this.envProxy=void 0,this.view=void 0,a&&globalThis.__shadowEnvs.has(a)&&globalThis.__shadowEnvs.get(a)===this&&globalThis.__shadowEnvs.delete(a),St(this),E(this),this.#h=!0,Object.freeze(this)}#l;async#u(){if(this.#s=!1,this.isReady){let a=this.view.buildChangeTrails();if(a.length>0)try{let c=this.#r;this.#r=!1,await this.envProxy.applyChangeTrail(a,c)}catch(c){this.logger.error("failed to apply change trail",c)}finally{d(this,B.AfterSync,a)}}}#c(a){this.logger.isDebug&&this.logger.debug("onMessageToView",a.type,a.data),this.view?.dispatchMessage(a.uuid,a.type,a.data,a.traverseChildren)}}})();var k=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"],ar=()=>{let s=Math.random()*4294967295|0,t=Math.random()*4294967295|0,e=Math.random()*4294967295|0,r=Math.random()*4294967295|0;return(k[s&255]+k[s>>8&255]+k[s>>16&255]+k[s>>24&255]+"-"+k[t&255]+k[t>>8&255]+"-"+k[t>>16&15|64]+k[t>>24&255]+"-"+k[e&63|128]+k[e>>8&255]+"-"+k[e>>16&255]+k[e>>24&255]+k[r&255]+k[r>>8&255]+k[r>>16&255]+k[r>>24&255]).toLowerCase()},Os=()=>globalThis?.crypto?.randomUUID?.()??ar();var Rt=class extends Error{constructor(t){super(t),this.name="ViewComponentError"}},te=class s{#t;#e;#s;#i;#r=0;get uuid(){return this.#t}get token(){return this.#e}set token(t){t??=G,t!==this.#e&&(this.#e=t,this.#s?.changeToken(this,t))}get parent(){return this.#i}set parent(t){if(t){if(t.#s!==this.#s)throw new Rt("cannot set parent from different context");t.addChild(this)}else this.removeFromParent()}get context(){return this.#s}set context(t){this.#s!=t&&(this.#s&&this.destroy(),this.#s=t,t&&t.addComponent(this))}get order(){return this.#r}set order(t){let e=this.#r;this.#r=t??0,e!==this.#r&&this.#s.changeOrder(this)}constructor(t,e){S(this),e instanceof s&&(e={parent:e}),this.#t=e?.uuid??Os(),this.#e=t,this.#r=e?.order??0,this.#i=e?.parent;let r=e?.context??N.get();if(this.#i&&this.#i.#s!==r)throw new Rt("cannot set parent from different context");this.context=r}isChildOf(t){return this.#i===t}removeFromParent(){this.#i?(this.#s?.removeFromParent(this.uuid,this.#i),this.#i=void 0):this.#s?.moveToRoot(this.uuid)}addChild(t){if(t.#s!==this.#s)throw new Rt("cannot add a child from another context");t.isChildOf(this)||(t.removeFromParent(),t.#i=this,this.#s.addToChildren(this,t))}setProperty(t,e,r){this.#s.setProperty(this,t,e,r)}removeProperty(t){this.#s.removeProperty(this,t)}dispatchShadowObjectsEvent(t,e,r){this.#s.dispatchShadowObjectsEvent(this,t,e,r)}dispatchEvent(t,e,r){if(d(this,t,e),r)for(let i of this.#s.getChildren(this))i.dispatchEvent(t,e,r)}destroy(){this.removeFromParent(),this.#s?.destroyComponent(this),this.#s=void 0}};var ee="shaeRequestEntParent",se="shaeReRequestEntParent",Ts="shae-worker",re="shae-ent",Ps="shae-prop",X="token",Z="ns",ie="local",Rs="no-autostart",ne="no-structured-clone",F="auto-sync",oe="src",ae="name",he="value",le="type",ue="no-trim";var Mt=new Set(["on","true","yes","local","1"]);var Ms=s=>ct(s.getAttribute(Z)),Lt=(s,t)=>{if(s.hasAttribute(t)){let e=s.getAttribute(t)?.trim()?.toLowerCase()||"1";return Mt.has(e)}return!1};var Ls=(s,t)=>{t.set(Ms(s))},Fe=new Set,We=!1,hr=s=>{Fe.add(s),We||(We=!0,queueMicrotask(()=>{We=!1;for(let t of Fe)I.get(t)?.sync();Fe.clear()}))},tt=class extends HTMLElement{static{this.observedAttributes=[Z]}get ns(){return this.ns$.value}set ns(t){typeof t=="symbol"?this.ns$.set(t):this.ns$.set(ct(t))}constructor(){super(),this.isShaeElement=!0,this.ns$=f(ut),this.ns$.onChange(t=>{typeof t=="string"&&t.length>0?this.getAttribute(Z)!==t&&this.setAttribute(Z,t):this.removeAttribute(Z)}),Ls(this,this.ns$)}attributeChangedCallback(t){t===Z&&Ls(this,this.ns$)}syncShadowObjects(){hr(this.ns)}};var ce=class extends tt{static{this.observedAttributes=[...tt.observedAttributes,X]}get componentContext(){return this.componentContext$.value}get viewComponent(){return this.viewComponent$.value}get uuid(){return this.viewComponent?.uuid}get token(){return this.token$.value}set token(t){this.token$.set(t)}#t;constructor(){super(),this.isShaeEntElement=!0,this.componentContext$=f(),this.viewComponent$=f(),this.token$=f(),this.#n=!0,this.#f=()=>{let t=this.findShadowRootHost();t!=null&&this.dispatchEvent(new CustomEvent(se,{bubbles:!0,composed:!0,detail:{requester:this,shadowRootHost:t}}))},this.#d=t=>{let e=t.detail?.requester;if(e===this||!e?.isShaeEntElement||e.ns!==this.ns)return;t.detail?.shadowRootHost&&this.#l()},this.#g=t=>{let e=t.detail?.requester;e!==this&&e?.isShaeEntElement&&e.ns===this.ns&&(t.stopPropagation(),e.#c(this))},this.ns$.onChange(t=>{this.componentContext$.set(N.get(t)),this.isConnected&&this.#l()}),this.#p(),this.token$.onChange(t=>{t==null?this.removeAttribute(X):this.getAttribute(X)!==t&&this.setAttribute(X,t)}),w(()=>{let t=this.viewComponent$.get();if(t){let e=m(t,N.ReRequestParentRoots,()=>this.#h()),r=t.context?.ns;return()=>{e(),t.destroy(),r&&r!==this.ns?I.get(r)?.sync():this.syncShadowObjects()}}}),this.token$.onChange(t=>{let e=this.viewComponent$.value;e&&(e.token=t,this.syncShadowObjects())})}#e;#s(){this.#e?.();let t=this.componentContext$.onChange(e=>{let r=this.token$.value,i=this.viewComponent$.value;i?i.context=e:e&&(i=new te(r,{context:e}),this.viewComponent$.set(i)),this.syncShadowObjects()});this.#e=()=>{t()}}#i(){this.#e?.(),this.#e=void 0}#r;#n;findShadowRootHost(){if(this.#n){this.#n=!1;let t=this;for(;t;){if(t.parentElement==null){let e=t.parentNode;e&&(this.#r=e.host);break}t=t.parentElement}}return this.#r}getParentNodeForObserver(){let t=this.parentNode;return t||(t.host??t)}connectedCallback(){this.#n=!0,this.addEventListener("slotchange",this.#f,{capture:!1,passive:!1}),this.addEventListener(ee,this.#g,{capture:!1,passive:!1}),this.#s(),Me(()=>this.#p()),this.componentContext==null&&this.componentContext$.set(N.get(this.ns)),this.#l(),this.componentContext?.dispatchReRequestParentRoots(),this.#o(),this.syncShadowObjects()}#o(){this.#a();let t=this.getParentNodeForObserver();t&&(this.#t=new MutationObserver((e,r)=>{for(let{target:i,removedNodes:n}of e)if(i===t){for(let o of n)if(o===this){this.#a(),this.onParentChanged(this.getParentNodeForObserver(),t);break}}}),this.#t.observe(t,{childList:!0,subtree:!1,attributes:!1}))}onParentChanged(t,e){this.#c(void 0),this.#l()}#a(){this.#t?.disconnect(),this.#t=void 0}attributeChangedCallback(t){super.attributeChangedCallback(t),t===X&&this.#p()}disconnectedCallback(){this.#n=!0,this.#a(),this.removeEventListener("slotchange",this.#f,{capture:!1}),this.removeEventListener(ee,this.#g,{capture:!1}),this.#c(void 0),this.componentContext$.set(void 0),this.syncShadowObjects(),this.#i()}#h(){this.isConnected&&(this.#c(void 0),this.#l())}#l(){this.dispatchEvent(new CustomEvent(ee,{bubbles:!0,composed:!0,detail:{requester:this}}))}#u;#c(t){if(this.entParentNode!==t)if(this.entParentNode&&this.entParentNode.removeEventListener(se,this.#d,{capture:!1}),this.entParentNode=t,this.entParentNode&&this.entParentNode.addEventListener(se,this.#d,{capture:!1,passive:!1}),this.#u?.(),this.#u=void 0,t){let e=w(()=>{let r=this.viewComponent$.get();if(r){let i=t.viewComponent$.get();r.parent=i&&i.context===r.context?i:void 0,r.parent==null&&queueMicrotask(()=>{this.#l()}),this.syncShadowObjects()}});this.#u=()=>e.destroy()}else{let e=this.viewComponent;e.parent&&(e.parent=void 0,this.syncShadowObjects())}}#f;#d;#g;#p(){if(this.hasAttribute(X)){let t=this.getAttribute(X)?.trim()||void 0;this.token$.set(t)}}};customElements.define(re,ce);var lr=s=>{let t=s.parentElement;for(;t;){if(t.isShaeEntElement)return t;t=t.parentElement}},ur=new Set(["string","text","number","bigint","float","int","integer","hex","hexadecimal","oct","octal","bin","binary","bool","boolean","[]","text[]","string[]","number[]","float[]","int[]","integer[]","hex[]","hexadecimal[]","oct[]","octal[]","bin[]","binary[]","bool[]","boolean[]","int8array","uint8array","uint8clampedarray","int16array","uint16array","int32array","uint32array","float32array","float64array","bigint64array","biguint64array","json"]),fe=class extends HTMLElement{static{this.observedAttributes=[ae,he,le,ue]}get name(){return this.name$.value}get value(){return this.valueOut$.value}set value(t){this.valueIn$.set(t)}get shouldTrim(){return this.shouldTrim$.value}get entNode(){return this.entNode$.value}set entNode(t){this.entNode$.set(t)}get viewComponent(){return this.viewComponent$.value}constructor(){super(),this.isShaeEntElement=!0,this.entNode$=f(),this.viewComponent$=f(),this.name$=f(),this.valueIn$=f(),this.valueOut$=f(),this.type$=f(),this.shouldTrim$=f(!0),this.logger=new A("ShaePropElement"),this.#t=()=>{this.entNode$.set(lr(this))},this.#e=()=>{queueMicrotask(()=>{this.isConnected||this.entNode$.set(void 0)})},this.#s=()=>{this.name$.set(this.getAttribute(ae)?.trim()??void 0)},this.#i=()=>{this.valueIn$.set(this.getAttribute(he))},this.#r=()=>{let t=this.getAttribute(le)?.trim().toLowerCase();t&&!ur.has(t)&&(this.logger.isWarn&&this.logger.warn(`[${this.name}] unknown type "${t}"`,{shaeProp:this}),t=void 0),this.type$.set(t)},this.#n=()=>{this.shouldTrim$.set(!Lt(this,ue))},this.entNode$.onChange(t=>{if(t){let e=_(t.viewComponent$,this.viewComponent$);return()=>{e.destroy()}}else this.viewComponent$.set(void 0)}),w(()=>{let t=this.viewComponent$.get();if(t){let e=this.name$.get();if(e){let r=this.valueOut$.get();this.logger.isDebug&&this.logger.debug(`[${this.name}] view-component set-property`,e,r,t.uuid,{viewComponent:t,shaeProp:this}),t.setProperty(e,r),this.isConnected&&this.entNode?.syncShadowObjects()}}}),w(()=>{let t=this.type$.get(),e=this.shouldTrim$.get(),r=this.valueIn$.get();if(e&&typeof r=="string"&&(r=r.trim()),r=r||void 0,r!=null&&typeof r=="string"&&t)switch(t){case"string":case"text":break;case"number":r=Number(r);break;case"bigint":r=BigInt(r);break;case"float":r=parseFloat(r);break;case"int":case"integer":r=parseInt(r,10);break;case"hex":case"hexadecimal":r=parseInt(r,16);break;case"oct":case"octal":r=parseInt(r,8);break;case"bin":case"binary":r=parseInt(r,2);break;case"bool":case"boolean":r=Mt.has(r.toLowerCase());break;case"[]":case"text[]":case"string[]":r=r.split(/\W+/);break;case"number[]":r=r.split(/\s+/).map(i=>Number(i));break;case"float[]":r=r.split(/\s+/).map(i=>parseFloat(i));break;case"int[]":case"integer[]":r=r.split(/\s+/).map(i=>parseInt(i));break;case"hex[]":case"hexadecimal[]":r=r.split(/\W+/).map(i=>parseInt(i,16));break;case"oct[]":case"octal[]":r=r.split(/\W+/).map(i=>parseInt(i,8));break;case"bin[]":case"binary[]":r=r.split(/\W+/).map(i=>parseInt(i,2));break;case"bool[]":case"boolean[]":r=r.split(/\W+/).map(i=>Mt.has(i.toLowerCase()));break;case"int8array":r=new Int8Array(r.split(/\W+/).map(i=>Number(i)));break;case"uint8array":r=new Uint8Array(r.split(/\W+/).map(i=>Number(i)));break;case"uint8clampedarray":r=new Uint8ClampedArray(r.split(/\W+/).map(i=>Number(i)));break;case"int16array":r=new Int16Array(r.split(/\W+/).map(i=>Number(i)));break;case"uint16array":r=new Uint16Array(r.split(/\W+/).map(i=>Number(i)));break;case"int32array":r=new Int32Array(r.split(/\W+/).map(i=>Number(i)));break;case"uint32array":r=new Uint32Array(r.split(/\W+/).map(i=>Number(i)));break;case"float32array":r=new Float32Array(r.split(/\s+/).map(i=>Number(i)));break;case"float64array":r=new Float64Array(r.split(/\s+/).map(i=>Number(i)));break;case"bigint64array":r=new BigInt64Array(r.split(/\W+/).map(i=>BigInt(i)));break;case"biguint64array":r=new BigUint64Array(r.split(/\W+/).map(i=>BigInt(i)));break;case"json":r=JSON.parse(r);break;default:this.logger.isWarn&&this.logger.warn(`[${this.name}] unknown type "${t}"`,{value:r,shaeProp:this})}this.valueOut$.set(r)}),O(()=>{this.#s(),this.#i(),this.#r(),this.#n()})}connectedCallback(){O(()=>{this.#t(),this.#s(),this.#i(),this.#r(),this.#n()})}attributeChangedCallback(t){switch(t){case ae:this.#s();break;case he:this.#i();break;case le:this.#r();break;case ue:this.#n();break}}disconnectedCallback(){this.#e()}#t;#e;#s;#i;#r;#n};customElements.whenDefined(re).then(()=>customElements.define(Ps,fe));var de,ze=null,bt=class{static{this.OnFrame=Symbol("onFrame")}#t=0;#e=0;constructor(){if(ze)return ze;S(this),ze=this}start(t){if(t!=null)return ke(this)===0&&this.#i(),m(this,de.OnFrame,t),this.#e++,()=>{this.stop(t)}}stop(t){E(this,de.OnFrame,t),ke(this)===0&&this.#r()}#s=t=>{d(this,de.OnFrame,t),this.#i()};#i(){this.#t=requestAnimationFrame(this.#s)}#r(){cancelAnimationFrame(this.#t),this.#t=0}};de=bt;var vt="value",jt=(()=>{let s,t=[],e=[];return class{static{let i=typeof Symbol=="function"&&Symbol.metadata?Object.create(null):void 0;s=[Ot({name:vt})],At(this,null,s,{kind:"accessor",name:"value",static:!1,private:!1,access:{has:n=>"value"in n,get:n=>n.value,set:(n,o)=>{n.value=o}},metadata:i},t,e),i&&Object.defineProperty(this,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})}static{this.Value=vt}#t;#e;#s;get value(){return this.#s}set value(i){this.#s=i}constructor(i){this.#t=[],this.#s=J(this,t,void 0),this.value$=J(this,e),U(this,vt),this.value$=T(this,vt),this.value$.onChange(n=>d(this,vt,n)),i&&this.add(...i)}add(...i){return this.#t.push(...i),this.#r(),this.#i(i)}unshift(...i){return this.#t.unshift(...i),this.#r(),this.#i(i)}remove(...i){this.#i(i)()}clear(){this.#t.length=0,this.#r()}dispose(){this.clear(),this.#e?.destroy(),this.#e=void 0,H(this,vt),E(this),this.value$.destroy(),St(this)}#i(i){return()=>{for(let n of i){let o=this.#t.indexOf(n);o!==-1&&this.#t.splice(o,1)}this.#r()}}#r(){this.#e?.destroy(),this.#t.length===0?(this.#e=void 0,this.value=void 0):(this.#e=w(()=>{let i;for(let n of this.#t){let o=lt(n);if(o!=null){i=o;break}}this.value=i},this.#t),this.#e.run())}}})();var Ue="onCreate",et="onDestroy",js="onParentChanged",_s="onViewEvent";var Ve=new Map,Ge=!1,cr=(s,t)=>{Ve.set(s,t),Ge||(Ge=!0,queueMicrotask(()=>{Ge=!1;let e=Array.from(Ve.entries());Ve.clear();for(let[r,i]of e)r.set(i)}))},pe=class{#t;#e;#s=new Jt;#i=new Map;#r=new Map;#n;#o;#a=new Set;#h=[];#l=0;get kernel(){return this.#t}get uuid(){return this.#e}get order(){return this.#l}set order(t){this.#l!==t&&(this.#l=t,this.#n&&this.parent.resortChildren())}get parentUuid(){return this.#n||void 0}set parentUuid(t){this.#n!==t&&(this.removeFromParent(),this.#n=t||void 0,this.#o=t?this.#t.getEntity(t):void 0,this.#o&&this.#o.addChild(this))}get parent(){return!this.#o&&this.#n&&(this.#o=this.#t.getEntity(this.#n)),this.#o}set parent(t){this.parentUuid=t?.uuid}get hasParent(){return!!this.#n}get children(){return this.#h}constructor(t,e){this.#t=t,this.#e=e,C(this,et,z.Min,this)}traverse(t){t(this);for(let e of this.#h)e.traverse(t)}onDestroy(){this.#s.clear(),E(this);for(let t of this.#r.values())t.cleanup(),t.signal.destroy();this.#r.clear();for(let t of this.#i.values())t.context.set(void 0),t.unsubscribePathValue(),t.unsubscribeFromParent?.(),t.valuePath.dispose(),t.inherited.destroy(),t.provide.destroy(),t.context.destroy();this.#n=void 0,this.#o=void 0,this.#a.clear(),this.#h.length=0}addChild(t){if(this.#h.length===0){this.#a.add(t.uuid),this.#h.push(t);return}if(this.#a.has(t.uuid))throw new Error(`child with uuid: ${t.uuid} already exists! parentUuid: ${this.uuid}`);this.#a.add(t.uuid),this.#h.push(t),this.resortChildren();for(let[,e]of t.#i)t.#d(e)}resortChildren(){this.#h.sort((t,e)=>t.order-e.order)}removeChild(t){this.#a.has(t.uuid)&&(this.#a.delete(t.uuid),this.#h.splice(this.#h.indexOf(t),1))}removeFromParent(){if(this.#o){this.#o.removeChild(this),this.#o=void 0,this.#n=void 0;for(let[,t]of this.#i)t.unsubscribeFromParent&&(t.unsubscribeFromParent(),t.unsubscribeFromParent=void 0)}}reSubscribeToParentContexts(){for(let[,t]of this.#i)this.#d(t)}dispatchMessageToView(t,e,r,i=!1){this.#t.dispatchMessageToView({uuid:this.#e,type:t,data:e,transferables:r,traverseChildren:i})}dispatchViewEvents(t){for(let{type:e,data:r}of t)d(this,_s,e,r)}dispatchViewEvent(t,e){this.dispatchViewEvents([{type:t,data:e}])}#u(t){return this.#s.get(t)}getPropertyReader(t){return this.#u(t).get}getPropertyWriter(t){return this.#u(t).set}setProperties(t){this.clearTruthyPropsCache(),O(()=>{for(let[e,r]of t)this.setProperty(e,r)})}setProperty(t,e){this.getPropertyWriter(t)(e)}getProperty(t){return lt(this.getPropertyReader(t))}propKeys(){return Array.from(this.#s.keys())}propEntries(){return Array.from(this.#s.entries()).map(([t,e])=>[t,e.value])}#c;clearTruthyPropsCache(){this.#c=void 0}truthyProps(){if(this.#c)return this.#c.size?this.#c:void 0;let t=new Set;for(let[e,r]of this.#s.entries())if(typeof e=="string"){let i=r.value;i!=null&&i!==!1&&i!==""&&t.add(e)}return this.#c=t,t.size?t:void 0}hasContext(t){return this.#i.has(t)}useContext(t){return this.#f(t).context.get}useParentContext(t){return this.#f(t).inherited.get}provideContext(t){return this.#f(t).provide}provideGlobalContext(t){if(this.#r.has(t))return this.#r.get(t).signal;let e=this.#t.findOrCreateRootContext(t),r=f(),i=e.add(r);return this.#r.set(t,{cleanup:i,signal:r}),r}#f(t){if(this.#i.has(t))return this.#i.get(t);let e=f(),r=f(),i=f(),n=new jt([r,e]),o=m(n,jt.Value,a=>{cr(i,a)}),h={name:t,inherited:e,provide:r,context:i,valuePath:n,unsubscribePathValue:o};return this.#i.set(t,h),this.#d(h),h}#d(t){if(t.unsubscribeFromParent?.(),t.unsubscribeFromParent=void 0,this.parent){let e=this.parent.#f(t.name),r=_(e.context,t.inherited);t.unsubscribeFromParent=r.destroy.bind(r)}else{let e=this.#t.findOrCreateRootContext(t.name),r=_(e.value$,t.inherited);t.unsubscribeFromParent=r.destroy.bind(r)}}};var Ns=s=>{let t=s.split("@").map(e=>e.trim());if(t.length===2&&t[1])return t[0]?{key:`${t[0]}@${t[1]}`,prop:t[1],token:t[0]}:{key:t[1],prop:t[1]}},ge=(s,t)=>{for(let e of t)s.add(e)},fr=(s,t)=>{if(s!=null)for(let e of s.constructors)t.add(e)},_t=class{static get(t){return t??dr}#t=new Map;#e=new Map;#s=new Map;define(t,e){this.#t.has(t)?Ss(this.#t.get(t).constructors,e):this.#t.set(t,{token:t,constructors:[e]})}appendRoute(t,e){let r=Ns(t);r?this.#s.has(r.key)?ge(this.#s.get(r.key).routes,e):this.#s.set(r.key,{routes:new Set(e),token:r.token}):this.#e.has(t)?ge(this.#e.get(t),e):this.#e.set(t,new Set(e))}clearRoute(t){let e=Ns(t);e?this.#s.delete(e.key):this.#e.delete(t)}findTokensByRoute(t,e){let r=new Set([t]),i=this.#e.has(t)?[...this.#e.get(t)]:[];for(;i.length;){let n=i.shift();r.has(n)||(r.add(n),this.#e.has(n)&&i.push(...Array.from(this.#e.get(n)).filter(o=>!r.has(o))))}if(e){for(let o of e)this.#s.has(o)&&ge(r,this.#s.get(o).routes);let n;do{n=r.size;for(let o of new Set(r))for(let h of e){let a=`${o}@${h}`;this.#s.has(a)&&ge(r,this.#s.get(a).routes)}}while(n!==r.size)}return r}findConstructors(t,e){let r=this.findTokensByRoute(t,e),i=new Set;for(let n of r)fr(this.#t.get(n),i);return i.size>0?Array.from(i):void 0}hasToken(t){return this.#t.has(t)}hasRoute(t){return this.#e.has(t)}clear(){this.#t.clear(),this.#e.clear()}},dr=new _t;var q;(function(s){s[s.CreateAndDestroy=0]="CreateAndDestroy",s[s.JustCreate=1]="JustCreate",s[s.DestroyOnly=2]="DestroyOnly"})(q||(q={}));var Ds=s=>s.displayName||s.name,ye=class{#t;#e;#s;#i;#r;#n;constructor(t){this.logger=new A("Kernel"),this.#t=new Map,this.#e=new Set,this.#r=!0,this.#n=new Map,S(this),this.registry=_t.get(t)}getEntity(t){let e=this.#t.get(t)?.entity;if(!e)throw new Error(`entity with uuid "${t}" not found!`);return e}hasEntity(t){return this.#t.has(t)}traverseLevelOrderBFS(t=!1){if(this.#r){let e=new Map,r=(i,n)=>{let o=this.getEntity(i);e.has(n)?e.get(n).push(o):e.set(n,[o]);for(let h of o.children)r(h.uuid,n+1)};this.#e.forEach(i=>r(i,0)),this.#s=Array.from(e.entries()).sort((i,n)=>i[0]-n[0]).map(([,i])=>i).flat(),this.#i=this.#s.slice().reverse(),this.#r=!1}return t?this.#i:this.#s}getEntityGraph(){return Array.from(this.#e).map(t=>this.getEntityGraphNode(t))}getEntityGraphNode(t){if(!this.#t.has(t))return;let{token:e,entity:r}=this.#t.get(t);return{token:e,entity:r,props:Object.fromEntries(r.propEntries()),children:r.children.map(i=>this.getEntityGraphNode(i.uuid))}}upgradeEntities(){let t=new Map;for(let e of this.traverseLevelOrderBFS(!0))t.set(e.uuid,this.updateShadowObjects(e.uuid,q.DestroyOnly));for(let e of this.traverseLevelOrderBFS(!1))this.updateShadowObjects(e.uuid,q.JustCreate,t.get(e.uuid));t.clear()}run(t){this.logger.isDebug&&this.logger.debug("sync",t),O(()=>{for(let e of t.changeTrail)this.parse(e)})}parse(t){switch(t.type){case b.CreateEntities:this.createEntity(t.uuid,t.token,t.parentUuid,t.order,t.properties),this.#r=!0;break;case b.DestroyEntities:this.destroyEntity(t.uuid),this.#r=!0;break;case b.SetParent:this.setParent(t.uuid,t.parentUuid,t.order),this.#r=!0;break;case b.UpdateOrder:this.updateOrder(t.uuid,t.order),this.#r=!0;break;case b.ChangeProperties:this.changeProperties(t.uuid,t.properties);break;case b.ChangeToken:this.changeToken(t.uuid,t.token);break;case b.SendEvents:this.dispatchEventsToEntity(t.uuid,t.events);break}}createEntity(t,e,r,i=0,n){let o=new pe(this,t);o.order=i;let h={token:e,entity:o,usedConstructors:new Map};this.#t.set(t,h),r&&(o.parentUuid=r),o.hasParent||this.#e.add(t),n&&o.setProperties(n),this.createShadowObjects(t)}destroyEntity(t){if(!this.#t.has(t))return;let{entity:e,usedConstructors:r}=this.#t.get(t);e.removeFromParent(),d(e,et,this),r.clear(),this.#t.delete(e.uuid),this.#e.delete(e.uuid)}setParent(t,e,r=0){let i=this.getEntity(t);i.parentUuid===e&&i.order===r||(i.removeFromParent(),i.order=r,i.parentUuid=e,i.hasParent?this.#e.delete(t):this.#e.add(t),i.reSubscribeToParentContexts(),queueMicrotask(()=>{this.logger.isDebug&&this.logger.debug("entity.onParentChanged",{uuid:t,parentUuid:e,order:r,entity:i}),d(i,js,i)}))}updateOrder(t,e){this.getEntity(t).order=e}dispatchEventsToEntity(t,e){this.getEntity(t)?.dispatchViewEvents(e)}changeProperties(t,e){this.getEntity(t).setProperties(e),this.updateShadowObjects(t)}changeToken(t,e){if(!this.#t.has(t))return;let r=this.#t.get(t);r.token!==e&&(r.token=e,this.updateShadowObjects(t))}dispatchMessageToView(t){queueMicrotask(()=>{d(this,mt,t)})}updateShadowObjects(t,e=q.CreateAndDestroy,r){let i=this.#t.get(t);r??=new Set(this.registry.findConstructors(i.token,i.entity.truthyProps()));let n=e===q.CreateAndDestroy||e===q.DestroyOnly,o=e===q.CreateAndDestroy||e===q.JustCreate;if(n){for(let[h,a]of i.usedConstructors)if(!r.has(h)){i.usedConstructors.delete(h);for(let c of a)this.destroyShadowObject(c,i.entity)}}if(o)for(let h of r)i.usedConstructors.has(h)||this.constructShadowObject(h,i);return r}constructShadowObject(t,e){let r=new Set,i=new Set,n=new Map,o=new Map,h=new Map,a=new Map,c=new Map,p=S(new t({entity:e.entity,provideContext(l,u,g){let y=h.get(l);if(y==null){y=f(u,g?{compare:g}:void 0);let P=_(y,e.entity.provideContext(l));i.add(P.destroy.bind(P)),h.set(l,y)}return y},provideGlobalContext(l,u,g){let y=a.get(l);if(y==null){y=f(u,g?{compare:g}:void 0);let P=_(y,e.entity.provideGlobalContext(l));i.add(P.destroy.bind(P)),a.set(l,y)}return y},useContext(l,u){let g=n.get(l);if(g===void 0){g=f(void 0,u?{compare:u}:void 0).get,n.set(l,g);let y=_(e.entity.useContext(l),g);i.add(y.destroy.bind(y))}return g},useParentContext(l,u){let g=o.get(l);if(g===void 0){g=f(void 0,u?{compare:u}:void 0).get,o.set(l,g);let y=_(e.entity.useParentContext(l),g);i.add(y.destroy.bind(y))}return g},useProperty(l,u){let g=c.get(l);if(g===void 0){g=f(void 0,u?{compare:u}:void 0).get,c.set(l,g);let y=_(e.entity.getPropertyReader(l),g);i.add(y.destroy.bind(y))}return g},createEffect(...l){let u=w(...l);return i.add(u.destroy),u},createSignal(...l){let u=f(...l);return i.add(()=>{x(u)}),u},createMemo(...l){let u=je(...l);return i.add(()=>{x(u)}),u},on(...l){let u=m(...l);return i.add(u),u},once(...l){let u=C(...l);return i.add(u),u},onDestroy(l){r.add(l)}}));return this.logger.isInfo&&this.logger.info("create shadow-object",Ds(t),{shadowObject:p,entity:e.entity}),C(e.entity,et,z.Low,()=>{this.logger.isInfo&&this.logger.info("destroy shadow-object",Ds(t),{shadowObject:p,entity:e.entity});for(let u of r)u();for(let u of i)u();for(let u of n.values())x(u);for(let u of o.values())x(u);for(let u of c.values())x(u);for(let u of h.values())x(u);for(let u of a.values())x(u);r.clear(),i.clear(),n.clear(),o.clear(),c.clear(),h.clear(),a.clear();let l=e.usedConstructors.get(t);l&&(l.delete(p),l.size===0&&e.usedConstructors.delete(t))}),e.usedConstructors.has(t)?e.usedConstructors.get(t).add(p):e.usedConstructors.set(t,new Set([p])),this.attachShadowObject(p,e.entity),p}createShadowObjects(t){let e=this.#t.get(t);this.registry.findConstructors(e.token,e.entity.truthyProps())?.forEach(r=>{this.constructShadowObject(r,e)})}findShadowObjects(t){if(!this.#t.has(t))return[];let{usedConstructors:e}=this.#t.get(t);return Array.from(new Set(Array.from(e.values()).map(r=>Array.from(r)).flat()))}attachShadowObject(t,e){m(e,t),typeof t[Ue]=="function"&&t[Ue](e)}destroyShadowObject(t,e){typeof t[et]=="function"&&t[et](e),d(t,et,e),E(e,t)}findOrCreateRootContext(t){let e=this.#n.get(t);return e||(e=new jt,this.#n.set(t,e)),e}destroy(){for(let t of this.#n.values())t.dispose();this.#n.clear();for(let t of this.traverseLevelOrderBFS().reverse())this.destroyEntity(t.uuid)}};async function Be(s,t,e,r=!0){if(e.has(t)){console.warn("importModule: skipping already imported module",t);return}else e.add(t);t.extends&&await Promise.all(t.extends.map(n=>Be(s,n,e,!1)));let{registry:i}=s;if(t.define)for(let[n,o]of Object.entries(t.define))i.define(n,o);if(t.routes)for(let[n,o]of Object.entries(t.routes))i.appendRoute(n,o);await(t.initialize?.({define:(n,o)=>i.define(n,o),kernel:s,registry:i})??Promise.resolve()),r&&s.upgradeEntities()}var me=s=>(typeof s=="string"&&(s=new URL(s,globalThis.location.href)),s.toString());function $s(s){return s.map(t=>{if(t.transferables&&t.transferables.length>0){let{transferables:e,...r}=t;return structuredClone(r,{transfer:e})}else return structuredClone(t)})}var be=class{#t;get registry(){return this.kernel.registry}constructor(t){this.#t=new Set,this.isLocalEnv=!0,this.disableStructuredClone=!1,this.kernel=new ye(t),m(this.kernel,mt,e=>{if(this.onMessageToView!=null){let{type:r,uuid:i,traverseChildren:n}=e,o=structuredClone(e.data,{transfer:e.transferables});this.onMessageToView({type:r,uuid:i,data:o,traverseChildren:n})}})}start(){return Promise.resolve()}applyChangeTrail(t,e){let r={changeTrail:this.disableStructuredClone?t:$s(t)},i;try{this.kernel.run(r),i=Promise.resolve()}catch(n){i=Promise.reject(n)}return i}async importScript(t){let e=await import(me(t));e[_e]&&await this.importModule(e[_e])}async importModule(t){return Be(this.kernel,t,this.#t)}destroy(){this.kernel.destroy(),this.registry.clear(),this.#t.clear()}};function qe(s){let t=new Blob([s],{type:"text/javascript"}),e=URL.createObjectURL(t),r=new Worker(e);return URL.revokeObjectURL(e),r}function He(){return qe('var Fs=Object.defineProperty;var se=Object.getOwnPropertySymbols;var Ve=Object.prototype.hasOwnProperty,$e=Object.prototype.propertyIsEnumerable;var Vs=(e,t)=>(t=Symbol[e])?t:Symbol.for("Symbol."+e),Ie=e=>{throw TypeError(e)};var ge=(e,t,s)=>t in e?Fs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,ye=(e,t)=>{for(var s in t||(t={}))Ve.call(t,s)&&ge(e,s,t[s]);if(se)for(var s of se(t))$e.call(t,s)&&ge(e,s,t[s]);return e};var Ge=(e,t)=>{var s={};for(var i in e)Ve.call(e,i)&&t.indexOf(i)<0&&(s[i]=e[i]);if(e!=null&&se)for(var i of se(e))t.indexOf(i)<0&&$e.call(e,i)&&(s[i]=e[i]);return s};var u=(e,t,s)=>ge(e,typeof t!="symbol"?t+"":t,s),pe=(e,t,s)=>t.has(e)||Ie("Cannot "+s);var r=(e,t,s)=>(pe(e,t,"read from private field"),s?s.call(e):t.get(e)),c=(e,t,s)=>t.has(e)?Ie("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,s),f=(e,t,s,i)=>(pe(e,t,"write to private field"),i?i.call(e,s):t.set(e,s),s),m=(e,t,s)=>(pe(e,t,"access private method"),s);var Ue=(e,t,s,i)=>({set _(a){f(e,t,a,s)},get _(){return r(e,t,i)}});var ve=function(e,t){this[0]=e,this[1]=t},Be=(e,t,s)=>{var i=(n,l,y,b)=>{try{var d=s[n](l),h=(l=d.value)instanceof ve,g=d.done;Promise.resolve(h?l[0]:l).then(p=>h?i(n==="return"?n:"next",l[1]?{done:p.done,value:p.value}:p,y,b):y({value:p,done:g})).catch(p=>i("throw",p,y,b))}catch(p){b(p)}},a=n=>o[n]=l=>new Promise((y,b)=>i(n,l,y,b)),o={};return s=s.apply(e,t),o[Vs("asyncIterator")]=()=>o,a("next"),a("throw"),a("return"),o};var We;(function(e){e[e.StructuralChanges=1]="StructuralChanges",e[e.ContentUpdates=2]="ContentUpdates",e[e.Removal=3]="Removal"})(We||(We={}));var X;(function(e){e[e.CreateEntities=1]="CreateEntities",e[e.DestroyEntities=2]="DestroyEntities",e[e.SetParent=3]="SetParent",e[e.UpdateOrder=4]="UpdateOrder",e[e.ChangeProperties=5]="ChangeProperties",e[e.ChangeToken=6]="ChangeToken",e[e.SendEvents=7]="SendEvents"})(X||(X={}));var Ui=Symbol.for("ShadowEntsGlobalNS"),$s="configure",Is="changeTrail",Gs="destroy",Us="loaded",qe="appliedChangeTrail",be="importedModule",Bs="destroyed",Ae="messageToView",me="shadowObjects",N="ConsoleLogger",D=`${N}Storage`,ns,os,hs,Ws=!!((hs=(os=(ns=globalThis.location)==null?void 0:ns.host)==null?void 0:os.startsWith("localhost"))!=null&&hs),Jt="localStorage"in globalThis,ie=Symbol.for(N),Je=!1,Ke=e=>{if(typeof e=="boolean")return e;switch(e.toLowerCase()){case"true":case"yes":case"on":return!0;default:return!1}},Oe=e=>[Jt?N:void 0,...Array.isArray(e)?e:[e]].filter(Boolean).join(".");function we(e,t=void 0,s){var o;let i=Oe(e),a=Jt?localStorage.getItem(i):(o=globalThis[D])==null?void 0:o[i];return a!=null?t(a):s}function Vt(e,t){Jt?localStorage.setItem(Oe(e),t):(globalThis[D]==null&&(globalThis[D]={},console.debug(`${N}: Initialize`,{[D]:globalThis[D]})),globalThis[D][Oe(e)]=t)}var vt,It,v,qs=(v=class{constructor(t){c(this,vt);this.enable=!0,this.namespace=(t||"").trim()||N,Je||(v.loadConfig(),Je=!0);let s=[this.namespace,"enable"];this.enable=we(s,Ke,this.enable),Vt(s,Jt?this.enable?"true":"false":this.enable)}static get isEnabled(){return v.sharedConfig.enable}static get isDebug(){return v.sharedConfig.enable&&v.sharedConfig.debug}static loadConfig(){var t,s,i;Jt?(["enable","debug","info","warn"].forEach(a=>{this.sharedConfig[a]=we(a,Ke,this.sharedConfig[a])}),["debug","info","warn","error"].forEach(a=>{this.sharedStyles[a]=we(["styles",a],void 0,this.sharedStyles[a])}),v.isDebug&&console.debug(`${N}: Load config from localStorage`,v.sharedConfig),(t=globalThis[N])!=null&&t[ie]||((s=globalThis[N])!=null||(globalThis[N]={[ie]:!0,get enable(){return v.sharedConfig.enable},set enable(a){v.sharedConfig.enable=a,Vt("enable",a?"true":"false")},get debug(){return v.sharedConfig.debug},set debug(a){v.sharedConfig.debug=a,Vt("debug",a?"true":"false")},get info(){return v.sharedConfig.info},set info(a){v.sharedConfig.info=a,Vt("info",a?"true":"false")},get warn(){return v.sharedConfig.warn},set warn(a){v.sharedConfig.warn=a,Vt("warn",a?"true":"false")}}))):(i=globalThis[D])!=null&&i[ie]||(globalThis[D]=ye(ye({[ie]:!0},v.sharedConfig),globalThis[D]),v.sharedConfig=globalThis[D],v.isDebug&&console.debug(`${N}: Load config from ${D}`,globalThis[D]))}get isEnabled(){return this.enable&&v.sharedConfig.enable}get isDebug(){return this.isEnabled&&v.sharedConfig.debug}get isInfo(){return this.isEnabled&&v.sharedConfig.info}get isWarn(){return this.isEnabled&&v.sharedConfig.warn}debug(...t){m(this,vt,It).call(this,"debug",v.sharedStyles.debug,t)}info(...t){m(this,vt,It).call(this,"info",v.sharedStyles.info,t)}warn(...t){m(this,vt,It).call(this,"warn",v.sharedStyles.warn,t)}error(...t){m(this,vt,It).call(this,"error",v.sharedStyles.error,t)}},vt=new WeakSet,It=function(t,s,i){console[t](`%c${this.namespace}`,s,...i)},v.sharedConfig={enable:Ws,debug:!1,info:!0,warn:!0,"styles.debug":"color: #111; background: #999; display: inline-block; padding: 0 0.25em; margin: 0; border-radius: 0.25em","styles.info":"color: #020; background: #8a8; display: inline-block; padding: 0 0.25em; margin: 0; border-radius: 0.25em","styles.warn":"color: #fa0; background: #a98; display: inline-block; padding: 0 0.25em; margin: 0; border-radius: 0.25em","styles.error":"color: #ff0; background: #a00; display: inline-block; padding: 0 0.25em; margin: 0; border-radius: 0.25em"},v.sharedStyles={get debug(){return v.sharedConfig["styles.debug"]},set debug(t){v.sharedConfig["styles.debug"]=t},get info(){return v.sharedConfig["styles.info"]},set info(t){v.sharedConfig["styles.info"]=t},get warn(){return v.sharedConfig["styles.warn"]},set warn(t){v.sharedConfig["styles.warn"]=t},get error(){return v.sharedConfig["styles.error"]},set error(t){v.sharedConfig["styles.error"]=t}},v),kt="*",vs=1,xe=2,Re=4,ft=Symbol.for("eventize"),Js="[eventize]",le=e=>e===kt,bs=e=>{switch(typeof e){case"string":case"symbol":return!0;default:return!1}},ms=typeof console<"u",Ks=ms?console[console.warn?"warn":"log"].bind(console,Js):()=>{},Ys=(e,t,s)=>(Object.defineProperty(e,t,{value:s,configurable:!0}),e),Hs=0,ws=class{constructor(){u(this,"events",new Map);u(this,"eventNames",new Set)}static publish(e){e.sort((t,s)=>t.order-s.order).forEach(t=>t.emit())}add(e){Array.isArray(e)?e.forEach(t=>this.eventNames.add(t)):this.eventNames.add(e)}remove(e){Array.isArray(e)?e.forEach(t=>this.eventNames.delete(t)):this.eventNames.delete(e),this.clear(e)}clear(e){Array.isArray(e)?e.forEach(t=>this.events.delete(t)):this.events.delete(e)}retain(e,t){this.eventNames.has(e)&&this.events.set(e,{args:t,order:Hs++})}isKnown(e){return this.eventNames.has(e)}emit(e,t,s=[]){if(le(e))this.eventNames.forEach(i=>this.emit(i,t,s));else if(this.events.has(e)){let{order:i,args:a}=this.events.get(e);s.push({order:i,emit:()=>t.apply(e,a)})}return s}},Pe=(e,t,s,i)=>{if(typeof t=="function"){let a=t.apply(e,s);a!=null&&(i==null||i(a))}},Qs=(e,t,s,i)=>Pe(t,t.emit,[e].concat(s),i),Xs=e=>{switch(typeof e){case"function":return vs;case"string":case"symbol":return xe;case"object":return Re}},Zs=0,_s=()=>++Zs,Cs=class{constructor(e,t,s,i=null){u(this,"id");u(this,"eventName");u(this,"isCatchEmAll");u(this,"priority");u(this,"listener");u(this,"listenerObject");u(this,"listenerType");u(this,"callAfterApply");u(this,"isRemoved");u(this,"refCount");this.id=_s(),this.eventName=e,this.isCatchEmAll=le(e),this.listener=s,this.listenerObject=i,this.priority=t,this.listenerType=Xs(s),this.callAfterApply=void 0,this.isRemoved=!1,this.refCount=1}isEqual(e,t=null){if(e===this)return!0;let s=typeof e;return s==="number"&&e===this.id?!0:t===null&&(s==="string"||s==="symbol")?e===kt||e===this.eventName:this.listener===e&&this.listenerObject===t}apply(e,t,s){if(this.isRemoved)return;let{listener:i,listenerObject:a}=this;switch(this.listenerType){case vs:Pe(a,i,t,s),this.callAfterApply&&this.callAfterApply();break;case xe:Pe(a,a[i],t,s),this.callAfterApply&&this.callAfterApply();break;case Re:{let o=i[e];if(this.isCatchEmAll||this.eventName===e){if(typeof o=="function"){let n=o.apply(i,t);n!=null&&(s==null||s(n))}else Qs(e,i,t,s);this.callAfterApply&&this.callAfterApply()}break}}}},ti=(e,t)=>e.priority!==t.priority?t.priority-e.priority:e.id-t.id,Ye=e=>e==null?void 0:e.slice(0),He=(e,t)=>{let s=e.indexOf(t);s>-1&&e.splice(s,1)},ei=e=>e===Re||e===xe,Me=(e,t,s)=>{let i=e.findIndex(a=>a.isEqual(t,s));i>-1&&(e[i].isRemoved=!0,e.splice(i,1))},re=(e,t,s)=>{let i=[];for(let a of e)(t==null&&a.listenerObject===s||a.eventName===t&&a.listener===s)&&i.push(a);for(let a of i)Me(e,a,void 0)},Ce=e=>{e&&(e.forEach(t=>{t.isRemoved=!0}),e.length=0)},si=(e,t)=>e.listenerType===t.listenerType?e.priority===t.priority&&e.eventName===t.eventName&&e.listenerObject===t.listenerObject&&e.listener===t.listener:!1,ii=(e,t)=>{if(ei(e.listenerType))return t.find(s=>si(e,s))},ri=(e,t)=>{let s=ii(e,t);return s?(s.refCount+=1,s):(t.push(e),t.sort(ti),e)},ai=class{constructor(){u(this,"namedListeners");u(this,"catchEmAllListeners");u(this,"getListenersForEventName",e=>{let t=this.namedListeners.get(e);return t||(t=[],this.namedListeners.set(e,t)),t});this.namedListeners=new Map,this.catchEmAllListeners=[]}add(e){return ri(e,e.isCatchEmAll?this.catchEmAllListeners:this.getListenersForEventName(e.eventName))}remove(e,t,s=!1){t==null&&Array.isArray(e)?e.forEach(i=>this.remove(i,null,s)):e==null||t==null&&le(e)?this.removeAllListeners():t==null&&bs(e)?Ce(this.namedListeners.get(e)):e instanceof Cs?e.isRemoved||(e.refCount-=1,e.refCount<1&&(e.isRemoved=!0,this.namedListeners.forEach(i=>He(i,e)),He(this.catchEmAllListeners,e))):s?le(e)&&typeof e=="object"?re(this.catchEmAllListeners,kt,e):this.namedListeners.forEach(i=>re(i,e,t)):(this.namedListeners.forEach(i=>{Me(i,e,t),typeof e=="object"&&re(i,void 0,e)}),Me(this.catchEmAllListeners,e,t),typeof e=="object"&&re(this.catchEmAllListeners,void 0,e))}removeAllListeners(){this.namedListeners.forEach(e=>Ce(e)),this.namedListeners.clear(),Ce(this.catchEmAllListeners)}forEach(e,t){let s=Ye(this.catchEmAllListeners),i=Ye(this.namedListeners.get(e));if(e===kt||!i||i.length===0)s.forEach(t);else if(s.length===0)i.forEach(t);else{let a=i.length,o=s.length,n=0,l=0;for(;n<a||l<o;){if(n<a){let y=i[n];if(l>=o||y.priority>=s[l].priority){t(y),++n;continue}}l<o&&(t(s[l]),++l)}}}getSubscriptionCount(){let e=this.catchEmAllListeners.length;for(let t of this.namedListeners.values())e+=t.length;return e}},zt=e=>!!(e&&e[ft]);function Kt(e){if(zt(e))return e;let t=new ai,s=new ws;return Ys(e,ft,{keeper:s,store:t}),e}var fe={Max:Number.POSITIVE_INFINITY,AAA:1e9,BB:1e6,C:1e3,Default:0,Low:-1e4,Min:Number.NEGATIVE_INFINITY},ni=(e,t,s,i,a,o,n)=>{let l=e.add(new Cs(s,i,a,o));return t.emit(s,l,n),l},oi=(e,t,s,i)=>{let a=s.length,o=typeof s[0],n,l,y,b;if(a>=2&&a<=3&&o==="number"?(n=kt,[l,y,b]=s):a>=3&&a<=4&&typeof s[1]=="number"?[n,l,y,b]=s:(l=fe.Default,o==="string"||o==="symbol"||Array.isArray(s[0])?[n,y,b]=s:(n=kt,[y,b]=s)),!y&&ms)throw Ks("called with insufficient arguments!",s),"subscribeTo() called with insufficient arguments!";let d=h=>g=>ni(e,t,g,h,y,b,i);return Array.isArray(n)?n.map(h=>Array.isArray(h)?d(h[1])(h[0]):d(l)(h)):d(l)(n)},Es=(e,t,s)=>{let i=[],a=oi(e,t,s,i);return ws.publish(i),a},Qe=e=>t=>{t.callAfterApply=()=>{e==null||e()}},Ss=(e,t)=>Object.assign(()=>z(e,t),Array.isArray(t)?{listeners:t}:{listener:t}),ks=(e,t,s,i)=>{let{store:a,keeper:o}=e[ft];Array.isArray(t)?t.forEach(n=>{a.forEach(n,l=>l.apply(n,s,i)),o.retain(n,s)}):t!==kt&&(a.forEach(t,n=>{n.apply(t,s,i)}),o.retain(t,s))},Q=(e,...t)=>{let s=Kt(e),{store:i,keeper:a}=s[ft];return Ss(s,Es(i,a,t))},O=(e,...t)=>{let s=Kt(e),{store:i,keeper:a}=s[ft],o=Es(i,a,t),n=Ss(s,o),l=!1,y=()=>{l||(n(),l=!0)};return Array.isArray(o)?o.forEach(Qe(y)):Qe(y)(o),y},hi=(e,t)=>new Promise(s=>{O(e,t,s)}),z=(e,t,s)=>{if(!zt(e))throw new Error("object is not eventized");let{store:i,keeper:a}=e[ft],o=typeof t,n=s!=null&&(o==="string"||o==="symbol");i.remove(t,s,n),Array.isArray(t)?a.remove(t.filter(l=>typeof l=="string")):bs(t)&&a.remove(t)},w=(e,t,...s)=>{if(!zt(e))throw new Error("object is not eventized");ks(e,t,s)},li=(e,t,...s)=>{if(!zt(e))throw new Error("object is not eventized");let i=[];return ks(e,t,s,a=>{i.push(a)}),i=i.map(a=>Array.isArray(a)?Promise.all(a):Promise.resolve(a)),i.length>0?Promise.all(i):Promise.resolve()},Ne=(e,t)=>{let s=Kt(e),{keeper:i}=s[ft];i.add(t)},de=(e,t)=>{if(!zt(e))throw new Error("object is not eventized");let{keeper:s}=e[ft];s.clear(t)},it=(()=>{let e=(t={})=>Kt(t);return e.inject=(t={})=>(t=Kt(t),Object.assign(t,{on:(...s)=>Q(t,...s),once:(...s)=>O(t,...s),onceAsync:s=>hi(t,s),off:(s,i)=>z(t,s,i),emit:(s,...i)=>w(t,s,...i),emitAsync:(s,...i)=>li(t,s,...i),retain:s=>Ne(t,s),retainClear:s=>de(t,s)}),t),e.is=zt,e})(),H=Symbol.for("signal"),Ot=Symbol.for("effect"),Xe=Symbol.for("destroySignal"),Ze=Symbol.for("createEffect"),di=Symbol.for("destroyEffect"),$t="value",_e="mute",ts="unmute",Wt="destroy",qt=Symbol.for("recall"),ue=it(),Nt=it(),yt=it(),As=it(),ke,Gt=(ke=class{constructor(){u(this,"delayedEffects",[])}batch(e,t){let s=this.delayedEffects.length;for(let i=0;i<s;i++){let[a,o]=this.delayedEffects[i];if(!(a>t))if(a===t){o.add(e);return}else{this.delayedEffects.splice(i,0,[t,new Set([e])]);return}}this.delayedEffects.push([t,new Set([e])])}run(){let e=new Set,t=[Q(yt,(i,a)=>{a===qt&&e.add(i)}),Q(As,i=>{e.add(i)})],s=this.delayedEffects.flatMap(([,i])=>Array.from(i));for(let i of s)e.has(i)||w(yt,i,i,qt);t.forEach(i=>{i()})}},u(ke,"current"),ke),ui=()=>Gt.current;function ce(e){let t=Gt.current;t?t=void 0:t=Gt.current=new Gt;try{e()}finally{t&&(Gt.current=void 0,t.run())}}var ci=0;function Os(){return ci>0}var ls,fi=(ls=Ot,class{constructor(e){u(this,ls);u(this,"run",()=>{var e;return(e=this[Ot])==null?void 0:e.run()});u(this,"destroy",()=>{var e;(e=this[Ot])==null||e.destroy(),this[Ot]=void 0});this[Ot]=e,O(e,js.Destroy,()=>{this[Ot]=void 0})}}),rt=new Map,B,bt,F,_,W,mt,wt,V,st,te=(st=class{constructor(t){c(this,B,new Set);c(this,bt,new Set);c(this,F,new Map);c(this,_,new WeakMap);c(this,W,new Map);c(this,mt,new Set);c(this,wt,new Set);c(this,V);if(t!=null&&t instanceof st)return t;if(t!=null||(t=this),rt.has(t))return rt.get(t);rt.set(t,this),it(this)}static get(t){if(t!=null)return t instanceof st?t:rt.get(t)}static findOrCreate(t){if(t==null)throw new Error("Cannot create a group with a null object");return new st(t)}static destroy(t){console.warn("SignalGroup.destroy(obj) is deprecated. Use SignalGroup.delete(obj) instead."),st.delete(t)}static delete(t){var s;(s=rt.get(t))==null||s.clear()}static clear(){for(let t of rt.values())t.destroy();rt.clear()}attachGroup(t){if(t===this)throw new Error("Cannot attach a group to itself");return r(this,B).add(t),r(t,V)&&r(t,V)!==this&&r(r(t,V),B).delete(t),f(t,V,this),t}detachGroup(t){return t!==this&&r(this,B).has(t)&&(r(this,B).delete(t),f(t,V,void 0)),t}attachSignal(t){let s=E(t);if(s!=null&&s.destroyed)throw new Error("Cannot attach a destroyed signal to a group");return s&&r(this,bt).add(s),t}attachSignalByName(t,s){if(s){this.attachSignal(s);let i=E(s);r(this,F).set(t,i),r(this,W).has(t)?r(this,W).get(t).push(i):r(this,W).set(t,[i]),r(this,_).has(i)?r(this,_).get(i).add(t):r(this,_).set(i,new Set([t]))}else r(this,F).delete(t);return s}hasSignal(t){var s;return r(this,F).has(t)||((s=r(this,V))==null?void 0:s.hasSignal(t))}signal(t){var s,i,a;return(a=(s=r(this,F).get(t))==null?void 0:s.object)!=null?a:(i=r(this,V))==null?void 0:i.signal(t)}detachSignal(t){let s=E(t);if(s&&(r(this,bt).delete(s),r(this,_).has(s))){let i=r(this,_).get(s);for(let a of i)if(r(this,W).has(a)){let o=r(this,W).get(a);o.splice(o.indexOf(s),1),o.length===0?(r(this,F).delete(a),r(this,W).delete(a)):r(this,F).get(a)===s&&r(this,F).set(a,o.at(-1))}i.clear(),r(this,_).delete(s)}return t}attachEffect(t){return r(this,mt).add(t),t}runEffects(){for(let t of r(this,mt))t.run();for(let t of r(this,B))t.runEffects()}attachLink(t){if(t!=null&&t.isDestroyed)throw new Error("Cannot attach a destroyed link to a group");return t&&r(this,wt).add(t),t}detachLink(t){return t&&r(this,wt).delete(t),t}destroy(){console.warn("SignalGroup#destroy is deprecated. Use SignalGroup#clear instead."),this.clear()}clear(){var t;w(this,Wt,this),z(this);for(let s of r(this,B))s.destroy();for(let s of r(this,mt))s.destroy();for(let s of r(this,bt))U(s);for(let s of r(this,wt))s.destroy();r(this,B).clear(),r(this,bt).clear(),r(this,F).clear(),r(this,W).clear(),r(this,mt).clear(),r(this,wt).clear(),(t=r(this,V))==null||t.detachGroup(this),rt.delete(this)}},B=new WeakMap,bt=new WeakMap,F=new WeakMap,_=new WeakMap,W=new WeakMap,mt=new WeakMap,wt=new WeakMap,V=new WeakMap,st),Qt,Xt,ds,Ps=(ds=class{constructor(e="id",t=1){c(this,Qt);c(this,Xt);f(this,Qt,e),f(this,Xt,t)}make(){return Symbol(`${r(this,Qt)}${Ue(this,Xt)._++}`)}},Qt=new WeakMap,Xt=new WeakMap,ds),je=[],Ms=()=>je.at(-1),gi=(e,t)=>{je.push(e);try{return t()}finally{je.pop()}},yi=e=>e!=null&&typeof e.then=="function",A,at,q,Ct,nt,ot,Et,jt,js=(A=class{constructor(t,s){u(this,"id");u(this,"callback");c(this,at);c(this,q,new Set);c(this,Ct,new Set);c(this,nt,new Map);c(this,ot,new Set);u(this,"parentEffect");u(this,"childEffects",[]);u(this,"curChildEffectSlot",0);u(this,"autorun",!0);u(this,"shouldRun",!0);u(this,"priority");c(this,Et);c(this,jt,!1);u(this,"run",()=>{if(r(this,jt)||!this.shouldRun)return;let t=ui();t?t.batch(this.id,this.priority):(this.runCleanupCallback(),this.curChildEffectSlot=0,this.shouldRun=!1,w(As,this.id,this.id),this.hasStaticDeps()?f(this,at,this.callback()):(f(this,Ct,new Set(r(this,q))),f(this,at,gi(this,this.callback)),this.cleanupLostSignals(),r(this,ot).clear()))});u(this,"destroy",()=>{r(this,jt)||(w(this,A.Destroy,this),z(this),w(yt,di,this),this.runCleanupCallback(),z(ue,this),z(yt,this),z(Nt,this),f(this,jt,!0),r(this,q).clear(),r(this,Ct).clear(),r(this,nt).clear(),r(this,ot).clear(),this.childEffects.forEach(t=>{t.destroy()}),this.childEffects.length=0,--A.count)});var a,o;it(this),this.callback=t;let i;(s==null?void 0:s.attach)!=null&&(i=te.findOrCreate(s.attach),i.attachEffect(this)),this.autorun=(a=s==null?void 0:s.autorun)!=null?a:!0,f(this,Et,s!=null&&s.dependencies?s.dependencies.map(n=>{switch(typeof n){case"string":case"symbol":return i.signal(n);default:return n}}):void 0),this.id=A.idGen.make(),this.priority=(o=s==null?void 0:s.priority)!=null?o:0,Q(yt,this.id,qt,this),++A.count}hasStaticDeps(){return r(this,Et)!=null&&r(this,Et).length>0}saveSignalsFromDeps(){for(let t of r(this,Et))this.whenSignalIsRead(E(t).id)}static createEffect(t,s,i){let a=Array.isArray(s)?s:void 0,o=a?i!=null?i:{dependencies:a}:s;o&&a&&(o.dependencies=a);let n,l=Ms();return l!=null?(n=l.getCurrentChildEffect(),n==null&&(n=new A(t,o),l.attachChildEffect(n),w(yt,Ze,n)),l.curChildEffectSlot++):(n=new A(t,o),w(yt,Ze,n)),n.hasStaticDeps()?n.saveSignalsFromDeps():n.autorun&&n.run(),new fi(n)}getCurrentChildEffect(){return this.childEffects[this.curChildEffectSlot]}attachChildEffect(t){this.childEffects.push(t),this.parentEffect=this}[qt](){this.shouldRun=!0,this.autorun&&this.run()}whenSignalIsRead(t){r(this,Ct).delete(t),r(this,q).has(t)||(r(this,q).add(t),r(this,nt).set(t,[Q(ue,t,this.priority,qt,this),O(Nt,t,Xe,this)]))}[Xe](t){!r(this,ot).has(t)&&r(this,q).has(t)&&(r(this,ot).add(t),this.unsubscribeSignal(t),r(this,ot).size===r(this,q).size&&this.destroy())}cleanupLostSignals(){for(let t of r(this,Ct))this.unsubscribeSignal(t),r(this,q).delete(t)}unsubscribeSignal(t){r(this,nt).has(t)&&(r(this,nt).get(t).forEach(s=>{s()}),r(this,nt).delete(t))}runCleanupCallback(){if(r(this,at)!=null){let t=r(this,at);f(this,at,void 0),yi(t)?Promise.resolve(t).then(s=>{typeof s=="function"&&s()}):t()}}},at=new WeakMap,q=new WeakMap,Ct=new WeakMap,nt=new WeakMap,ot=new WeakMap,Et=new WeakMap,jt=new WeakMap,u(A,"idGen",new Ps("ef")),u(A,"Destroy","destroy"),u(A,"count",0),A),ee=(...e)=>js.createEffect(...e),Yt=new WeakMap,pi=e=>{let t=Yt.get(e);return t||(t={},Yt.set(e,t)),t},Ht=(e,t)=>{var s,i;return(i=(s=Yt.get(e))==null?void 0:s.signals)==null?void 0:i.get(t)},vi=(e,t,s)=>{var a;let i=pi(e);(a=i.signals)!=null||(i.signals=new Map),i.signals.set(t,s)};function bi(...e){for(let t of e)if(Yt.has(t)){let s=Yt.get(t);if(s.signals){for(let i of s.signals.values())U(i);s.signals.clear(),s.signals=void 0}}}function mi(e){let t=E(Fe(e)?e:Ht(...e));t!=null&&!t.muted&&!t.destroyed&&Te(t.id,t.value,{touch:!0})}function ze(e){var t,s;return Fe(e)?(t=E(e))==null?void 0:t.value:(s=E(Ht(...e)))==null?void 0:s.value}var us,wi=(us=H,class{constructor(e){u(this,us);this[H]=e}get get(){return this[H].reader}get set(){return this[H].writer}get value(){return ze(this.get)}set value(e){this.set(e)}onChange(e){let{destroy:t}=ee(()=>e(this.value),[this.get]);return t}get muted(){return this[H].muted}set muted(e){this[H].muted=e}touch(){mi(this)}destroy(){U(this)}}),Ci=new Ps("si");function es(e){var t;Os()||((t=Ms())==null||t.whenSignalIsRead(e))}function Te(e,t,s){Os()||w(ue,e,t,s)}var Fe=e=>e!=null&&e[H]!=null,Ei=e=>{let t=s=>{var i;return s?ee(()=>(e.destroyed||es(e.id),s(e.value)),[t]):e.destroyed||((i=e.beforeRead)==null||i.call(e),es(e.id)),e.value};return Object.defineProperty(t,H,{value:e}),t},St,$,Ts=(St=class{constructor(t,s){u(this,"id");u(this,"lazy");u(this,"compare");u(this,"beforeRead");u(this,"muted",!1);u(this,"destroyed",!1);c(this,$);u(this,"valueFn");u(this,"reader");u(this,"writer",(t,s)=>{var o,n,l,y;let i=(o=s==null?void 0:s.lazy)!=null?o:!1,a=(l=(n=s==null?void 0:s.compare)!=null?n:this.compare)!=null?l:((b,d)=>b===d);if((i!==this.lazy||i&&t!==this.valueFn||!i&&!a(t,r(this,$)))&&(i?(f(this,$,void 0),this.valueFn=t,this.lazy=!0):(f(this,$,t),this.valueFn=void 0,this.lazy=!1),!this.muted&&!this.destroyed)){Te(this.id,r(this,$));return}(y=s==null?void 0:s.touch)!=null&&y&&Te(this.id,r(this,$),{touch:!0})});u(this,"object");this.id=Ci.make(),++St.instanceCount,this.lazy=t,this.lazy?(this.value=void 0,this.valueFn=s):(this.value=s,this.valueFn=void 0),this.reader=Ei(this),this.object=new wi(this)}get[H](){return this}get value(){return this.lazy&&(f(this,$,this.valueFn()),this.valueFn=void 0,this.lazy=!1),r(this,$)}set value(t){f(this,$,t)}},$=new WeakMap,u(St,"instanceCount",0),St),E=e=>e==null?void 0:e[H];function k(e=void 0,t){var i;let s;if(Fe(e))s=E(e);else{let a=(i=t==null?void 0:t.lazy)!=null?i:!1;s=new Ts(a,e),s.beforeRead=t==null?void 0:t.beforeRead,s.compare=t==null?void 0:t.compare}return(t==null?void 0:t.attach)!=null&&te.findOrCreate(t.attach).attachSignal(s),s.object}var U=(...e)=>{for(let t of e){let s=E(t);s!=null&&!s.destroyed&&(s.destroyed=!0,s.beforeRead=void 0,--Ts.instanceCount,w(Nt,s.id,s.id))}};function Si(e,t){var n,l;let s=k(),i=(t==null?void 0:t.attach)!=null?te.findOrCreate(t.attach):void 0;i!=null&&(t!=null&&t.name?i.attachSignalByName(t.name,s):i.attachSignal(s));let a=ee(()=>s.set(e()),{autorun:!((n=t==null?void 0:t.lazy)!=null&&n),priority:(l=t==null?void 0:t.priority)!=null?l:fe.C,attach:i}),o=E(s);return o.beforeRead=a.run,O(Nt,o.id,a.destroy),s.get}var S,Tt,cs,Ls=(cs=class{constructor(e){c(this,S,!1);c(this,Tt);u(this,"source");u(this,"lastValue");u(this,"isDestroyed",!1);it(this),this.source=E(e),f(this,Tt,Q(ue,this.source.id,(t,s)=>{!r(this,S)&&!this.isDestroyed&&((s==null?void 0:s.touch)===!0?this.touch():this.write())})),O(Nt,this.source.id,()=>this.destroy())}attach(e){let t=te.findOrCreate(e);return t.attachLink(this),O(this,Wt,()=>{t.detachLink(this)}),t}nextValue(){return new Promise((e,t)=>{let s=[],i=()=>s.forEach(a=>{a()});s.push(O(this,$t,a=>{i(),e(a)}),O(this,Wt,()=>{i(),t()}))})}asyncValues(e){return Be(this,null,function*(){let t=0;for(;!this.isDestroyed;)try{let s=yield new ve(this.nextValue());if(e&&e(s,t++))break;Ne(this,$t),yield s}catch(s){break}de(this,$t)})}destroy(){var e;this.isDestroyed||((e=r(this,Tt))==null||e.call(this),f(this,Tt,void 0),w(this,Wt,this),de(this,$t),z(this),this.lastValue=void 0,this.isDestroyed=!0,Object.freeze(this))}get isMuted(){return r(this,S)}mute(){return!this.isDestroyed&&!r(this,S)&&(f(this,S,!0),w(this,_e,this)),this}unmute(){return!this.isDestroyed&&r(this,S)&&(f(this,S,!1),w(this,ts,this)),this}toggle(){return this.isDestroyed||(f(this,S,!r(this,S)),w(this,r(this,S)?_e:ts,this)),r(this,S)}updateValue(e){if(!r(this,S)&&!this.isDestroyed){let{value:t}=this.source;e(t),w(this,$t,t),this.lastValue=t}}},S=new WeakMap,Tt=new WeakMap,cs),ki=class extends Ls{constructor(t,s){super(t);u(this,"target");this.target=E(s),O(Nt,this.target.id,()=>this.destroy()),this.touch()}touch(){return this.updateValue(t=>{this.target.writer(t,{touch:!0})}),this}write(){this.updateValue(t=>{this.target.writer(t)})}},Ai=class extends Ls{constructor(t,s){super(t);u(this,"target");this.target=s,this.touch()}touch(){return this.updateValue(t=>{this.target(t)}),this}write(){this.updateValue(t=>{this.target(t)})}},ae=new Map;function pt(e,t,s){var b;let i=E(e),a;if(ae.has(i)){a=ae.get(i);let d=(b=E(t))!=null?b:t;if(a.has(d))return a.get(d)}else a=new Map,ae.set(i,a);let o=E(t),n=o!=null?new ki(e,o):new Ai(e,t),l=s==null?void 0:s.attach;l&&n.attach(l);let y=o!=null?o:t;return a.set(y,n),O(n,Wt,()=>{a.delete(y),a.size===0&&ae.delete(i)}),n}var j,Lt,Oi=(Lt=class{constructor(){c(this,j,new Map)}static fromProps(t,s){let i=new Lt,a=s?s.map(o=>[o,t[o]]):Object.entries(t);for(let[o,n]of a)r(i,j).set(o,k(n));return i}keys(){return r(this,j).keys()}signals(){return r(this,j).values()}entries(){return r(this,j).entries()}clear(){for(let t of r(this,j).values())t.destroy();r(this,j).clear()}has(t){return r(this,j).has(t)}get(t){if(!r(this,j).has(t)){let s=k();return r(this,j).set(t,s),s}return r(this,j).get(t)}update(t){t.size&&ce(()=>{for(let[s,i]of t.entries())this.get(s).set(i)})}updateFromProps(t,s){ce(()=>{let i=s?s.map(a=>[a,t[a]]):Object.entries(t);for(let[a,o]of i)this.get(a).set(o)})}},j=new WeakMap,Lt);function Pi(e,t,s,i,a,o){function n(Ft){if(Ft!==void 0&&typeof Ft!="function")throw new TypeError("Function expected");return Ft}for(var l=i.kind,y=l==="getter"?"get":l==="setter"?"set":"value",b=!t&&e?i.static?e:e.prototype:null,d=t||(b?Object.getOwnPropertyDescriptor(b,i.name):{}),h,g=!1,p=s.length-1;p>=0;p--){var M={};for(var At in i)M[At]=At==="access"?{}:i[At];for(var At in i.access)M.access[At]=i.access[At];M.addInitializer=function(Ft){if(g)throw new TypeError("Cannot add initializers after decoration has completed");o.push(n(Ft||null))};var gt=(0,s[p])(l==="accessor"?{get:d.get,set:d.set}:d[y],M);if(l==="accessor"){if(gt===void 0)continue;if(gt===null||typeof gt!="object")throw new TypeError("Object expected");(h=n(gt.get))&&(d.get=h),(h=n(gt.set))&&(d.set=h),(h=n(gt.init))&&a.unshift(h)}else(h=n(gt))&&(l==="field"?a.unshift(h):d[y]=h)}b&&Object.defineProperty(b,i.name,d),g=!0}function ss(e,t,s){for(var i=arguments.length>2,a=0;a<t.length;a++)s=i?t[a].call(e,s):t[a].call(e);return i?s:void 0}function Mi(e){return function(t,s){var o;let i=(e==null?void 0:e.name)||s.name,a=!!((o=e==null?void 0:e.readAsValue)!=null&&o);return{get(){let n=Ht(this,i);if(n)return a?n.value:n.get()},set(n){var l;(l=Ht(this,i))==null||l.set(n)},init(n){let l=k(n,e);return vi(this,i,l),te.findOrCreate(this).attachSignalByName(i,l),l.value}}}}var Pt="value",Le=(()=>{var i,a,o,n,oe,Ut,b;let e,t=[],s=[];return b=class{constructor(h){c(this,n);c(this,i);c(this,a);c(this,o);f(this,i,[]),f(this,o,ss(this,t,void 0)),this.value$=ss(this,s),Ne(this,Pt),this.value$=Ht(this,Pt),this.value$.onChange(g=>w(this,Pt,g)),h&&this.add(...h)}get value(){return r(this,o)}set value(h){f(this,o,h)}add(...h){return r(this,i).push(...h),m(this,n,Ut).call(this),m(this,n,oe).call(this,h)}unshift(...h){return r(this,i).unshift(...h),m(this,n,Ut).call(this),m(this,n,oe).call(this,h)}remove(...h){m(this,n,oe).call(this,h)()}clear(){r(this,i).length=0,m(this,n,Ut).call(this)}dispose(){var h;this.clear(),(h=r(this,a))==null||h.destroy(),f(this,a,void 0),de(this,Pt),z(this),this.value$.destroy(),bi(this)}},i=new WeakMap,a=new WeakMap,o=new WeakMap,n=new WeakSet,oe=function(h){return()=>{for(let g of h){let p=r(this,i).indexOf(g);p!==-1&&r(this,i).splice(p,1)}m(this,n,Ut).call(this)}},Ut=function(){var h;(h=r(this,a))==null||h.destroy(),r(this,i).length===0?(f(this,a,void 0),this.value=void 0):(f(this,a,ee(()=>{let g;for(let p of r(this,i)){let M=ze(p);if(M!=null){g=M;break}}this.value=g},r(this,i))),r(this,a).run())},(()=>{let h=typeof Symbol=="function"&&Symbol.metadata?Object.create(null):void 0;e=[Mi({name:Pt})],Pi(b,null,e,{kind:"accessor",name:"value",static:!1,private:!1,access:{has:g=>"value"in g,get:g=>g.value,set:(g,p)=>{g.value=p}},metadata:h},t,s),h&&Object.defineProperty(b,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:h})})(),b.Value=Pt,b})(),is="onCreate",Mt="onDestroy",ji="onParentChanged",Ti="onViewEvent",Ee=new Map,Se=!1,Li=(e,t)=>{Ee.set(e,t),Se||(Se=!0,queueMicrotask(()=>{Se=!1;let s=Array.from(Ee.entries());Ee.clear();for(let[i,a]of s)i.set(a)}))},J,Dt,ht,I,lt,x,T,tt,R,xt,P,De,dt,Bt,he,fs,Di=(fs=class{constructor(e,t){c(this,P);c(this,J);c(this,Dt);c(this,ht,new Oi);c(this,I,new Map);c(this,lt,new Map);c(this,x);c(this,T);c(this,tt,new Set);c(this,R,[]);c(this,xt,0);c(this,dt);f(this,J,e),f(this,Dt,t),O(this,Mt,fe.Min,this)}get kernel(){return r(this,J)}get uuid(){return r(this,Dt)}get order(){return r(this,xt)}set order(e){r(this,xt)!==e&&(f(this,xt,e),r(this,x)&&this.parent.resortChildren())}get parentUuid(){return r(this,x)||void 0}set parentUuid(e){r(this,x)!==e&&(this.removeFromParent(),f(this,x,e||void 0),f(this,T,e?r(this,J).getEntity(e):void 0),r(this,T)&&r(this,T).addChild(this))}get parent(){return!r(this,T)&&r(this,x)&&f(this,T,r(this,J).getEntity(r(this,x))),r(this,T)}set parent(e){this.parentUuid=e==null?void 0:e.uuid}get hasParent(){return!!r(this,x)}get children(){return r(this,R)}traverse(e){e(this);for(let t of r(this,R))t.traverse(e)}onDestroy(){var e;r(this,ht).clear(),z(this);for(let t of r(this,lt).values())t.cleanup(),t.signal.destroy();r(this,lt).clear();for(let t of r(this,I).values())t.context.set(void 0),t.unsubscribePathValue(),(e=t.unsubscribeFromParent)==null||e.call(t),t.valuePath.dispose(),t.inherited.destroy(),t.provide.destroy(),t.context.destroy();f(this,x,void 0),f(this,T,void 0),r(this,tt).clear(),r(this,R).length=0}addChild(e){var t;if(r(this,R).length===0){r(this,tt).add(e.uuid),r(this,R).push(e);return}if(r(this,tt).has(e.uuid))throw new Error(`child with uuid: ${e.uuid} already exists! parentUuid: ${this.uuid}`);r(this,tt).add(e.uuid),r(this,R).push(e),this.resortChildren();for(let[,s]of r(e,I))m(t=e,P,he).call(t,s)}resortChildren(){r(this,R).sort((e,t)=>e.order-t.order)}removeChild(e){r(this,tt).has(e.uuid)&&(r(this,tt).delete(e.uuid),r(this,R).splice(r(this,R).indexOf(e),1))}removeFromParent(){if(r(this,T)){r(this,T).removeChild(this),f(this,T,void 0),f(this,x,void 0);for(let[,e]of r(this,I))e.unsubscribeFromParent&&(e.unsubscribeFromParent(),e.unsubscribeFromParent=void 0)}}reSubscribeToParentContexts(){for(let[,e]of r(this,I))m(this,P,he).call(this,e)}dispatchMessageToView(e,t,s,i=!1){r(this,J).dispatchMessageToView({uuid:r(this,Dt),type:e,data:t,transferables:s,traverseChildren:i})}dispatchViewEvents(e){for(let{type:t,data:s}of e)w(this,Ti,t,s)}dispatchViewEvent(e,t){this.dispatchViewEvents([{type:e,data:t}])}getPropertyReader(e){return m(this,P,De).call(this,e).get}getPropertyWriter(e){return m(this,P,De).call(this,e).set}setProperties(e){this.clearTruthyPropsCache(),ce(()=>{for(let[t,s]of e)this.setProperty(t,s)})}setProperty(e,t){this.getPropertyWriter(e)(t)}getProperty(e){return ze(this.getPropertyReader(e))}propKeys(){return Array.from(r(this,ht).keys())}propEntries(){return Array.from(r(this,ht).entries()).map(([e,t])=>[e,t.value])}clearTruthyPropsCache(){f(this,dt,void 0)}truthyProps(){if(r(this,dt))return r(this,dt).size?r(this,dt):void 0;let e=new Set;for(let[t,s]of r(this,ht).entries())if(typeof t=="string"){let i=s.value;i!=null&&i!==!1&&i!==""&&e.add(t)}return f(this,dt,e),e.size?e:void 0}hasContext(e){return r(this,I).has(e)}useContext(e){return m(this,P,Bt).call(this,e).context.get}useParentContext(e){return m(this,P,Bt).call(this,e).inherited.get}provideContext(e){return m(this,P,Bt).call(this,e).provide}provideGlobalContext(e){if(r(this,lt).has(e))return r(this,lt).get(e).signal;let t=r(this,J).findOrCreateRootContext(e),s=k(),i=t.add(s);return r(this,lt).set(e,{cleanup:i,signal:s}),s}},J=new WeakMap,Dt=new WeakMap,ht=new WeakMap,I=new WeakMap,lt=new WeakMap,x=new WeakMap,T=new WeakMap,tt=new WeakMap,R=new WeakMap,xt=new WeakMap,P=new WeakSet,De=function(e){return r(this,ht).get(e)},dt=new WeakMap,Bt=function(e){if(r(this,I).has(e))return r(this,I).get(e);let t=k(),s=k(),i=k(),a=new Le([s,t]),o=Q(a,Le.Value,l=>{Li(i,l)}),n={name:e,inherited:t,provide:s,context:i,valuePath:a,unsubscribePathValue:o};return r(this,I).set(e,n),m(this,P,he).call(this,n),n},he=function(e){var t,s;if((t=e.unsubscribeFromParent)==null||t.call(e),e.unsubscribeFromParent=void 0,this.parent){let i=m(s=this.parent,P,Bt).call(s,e.name),a=pt(i.context,e.inherited);e.unsubscribeFromParent=a.destroy.bind(a)}else{let i=r(this,J).findOrCreateRootContext(e.name),a=pt(i.value$,e.inherited);e.unsubscribeFromParent=a.destroy.bind(a)}},fs);function xi(e,t){e.indexOf(t)===-1&&e.push(t)}var rs=e=>{let t=e.split("@").map(s=>s.trim());if(t.length===2&&t[1])return t[0]?{key:`${t[0]}@${t[1]}`,prop:t[1],token:t[0]}:{key:t[1],prop:t[1]}},ne=(e,t)=>{for(let s of t)e.add(s)},Ri=(e,t)=>{if(e!=null)for(let s of e.constructors)t.add(s)},et,L,G,gs,Ds=(gs=class{constructor(){c(this,et,new Map);c(this,L,new Map);c(this,G,new Map)}static get(e){return e!=null?e:Ni}define(e,t){r(this,et).has(e)?xi(r(this,et).get(e).constructors,t):r(this,et).set(e,{token:e,constructors:[t]})}appendRoute(e,t){let s=rs(e);s?r(this,G).has(s.key)?ne(r(this,G).get(s.key).routes,t):r(this,G).set(s.key,{routes:new Set(t),token:s.token}):r(this,L).has(e)?ne(r(this,L).get(e),t):r(this,L).set(e,new Set(t))}clearRoute(e){let t=rs(e);t?r(this,G).delete(t.key):r(this,L).delete(e)}findTokensByRoute(e,t){let s=new Set([e]),i=r(this,L).has(e)?[...r(this,L).get(e)]:[];for(;i.length;){let a=i.shift();s.has(a)||(s.add(a),r(this,L).has(a)&&i.push(...Array.from(r(this,L).get(a)).filter(o=>!s.has(o))))}if(t){for(let o of t)r(this,G).has(o)&&ne(s,r(this,G).get(o).routes);let a;do{a=s.size;for(let o of new Set(s))for(let n of t){let l=`${o}@${n}`;r(this,G).has(l)&&ne(s,r(this,G).get(l).routes)}}while(a!==s.size)}return s}findConstructors(e,t){let s=this.findTokensByRoute(e,t),i=new Set;for(let a of s)Ri(r(this,et).get(a),i);return i.size>0?Array.from(i):void 0}hasToken(e){return r(this,et).has(e)}hasRoute(e){return r(this,L).has(e)}clear(){r(this,et).clear(),r(this,L).clear()}},et=new WeakMap,L=new WeakMap,G=new WeakMap,gs),Ni=new Ds,Z;(function(e){e[e.CreateAndDestroy=0]="CreateAndDestroy",e[e.JustCreate=1]="JustCreate",e[e.DestroyOnly=2]="DestroyOnly"})(Z||(Z={}));var as=e=>e.displayName||e.name,C,K,Rt,Zt,Y,ut,ys,zi=(ys=class{constructor(e){c(this,C);c(this,K);c(this,Rt);c(this,Zt);c(this,Y);c(this,ut);this.logger=new qs("Kernel"),f(this,C,new Map),f(this,K,new Set),f(this,Y,!0),f(this,ut,new Map),it(this),this.registry=Ds.get(e)}getEntity(e){var s;let t=(s=r(this,C).get(e))==null?void 0:s.entity;if(!t)throw new Error(`entity with uuid "${e}" not found!`);return t}hasEntity(e){return r(this,C).has(e)}traverseLevelOrderBFS(e=!1){if(r(this,Y)){let t=new Map,s=(i,a)=>{let o=this.getEntity(i);t.has(a)?t.get(a).push(o):t.set(a,[o]);for(let n of o.children)s(n.uuid,a+1)};r(this,K).forEach(i=>s(i,0)),f(this,Rt,Array.from(t.entries()).sort((i,a)=>i[0]-a[0]).map(([,i])=>i).flat()),f(this,Zt,r(this,Rt).slice().reverse()),f(this,Y,!1)}return e?r(this,Zt):r(this,Rt)}getEntityGraph(){return Array.from(r(this,K)).map(e=>this.getEntityGraphNode(e))}getEntityGraphNode(e){if(!r(this,C).has(e))return;let{token:t,entity:s}=r(this,C).get(e);return{token:t,entity:s,props:Object.fromEntries(s.propEntries()),children:s.children.map(i=>this.getEntityGraphNode(i.uuid))}}upgradeEntities(){let e=new Map;for(let t of this.traverseLevelOrderBFS(!0))e.set(t.uuid,this.updateShadowObjects(t.uuid,Z.DestroyOnly));for(let t of this.traverseLevelOrderBFS(!1))this.updateShadowObjects(t.uuid,Z.JustCreate,e.get(t.uuid));e.clear()}run(e){this.logger.isDebug&&this.logger.debug("sync",e),ce(()=>{for(let t of e.changeTrail)this.parse(t)})}parse(e){switch(e.type){case X.CreateEntities:this.createEntity(e.uuid,e.token,e.parentUuid,e.order,e.properties),f(this,Y,!0);break;case X.DestroyEntities:this.destroyEntity(e.uuid),f(this,Y,!0);break;case X.SetParent:this.setParent(e.uuid,e.parentUuid,e.order),f(this,Y,!0);break;case X.UpdateOrder:this.updateOrder(e.uuid,e.order),f(this,Y,!0);break;case X.ChangeProperties:this.changeProperties(e.uuid,e.properties);break;case X.ChangeToken:this.changeToken(e.uuid,e.token);break;case X.SendEvents:this.dispatchEventsToEntity(e.uuid,e.events);break}}createEntity(e,t,s,i=0,a){let o=new Di(this,e);o.order=i;let n={token:t,entity:o,usedConstructors:new Map};r(this,C).set(e,n),s&&(o.parentUuid=s),o.hasParent||r(this,K).add(e),a&&o.setProperties(a),this.createShadowObjects(e)}destroyEntity(e){if(!r(this,C).has(e))return;let{entity:t,usedConstructors:s}=r(this,C).get(e);t.removeFromParent(),w(t,Mt,this),s.clear(),r(this,C).delete(t.uuid),r(this,K).delete(t.uuid)}setParent(e,t,s=0){let i=this.getEntity(e);i.parentUuid===t&&i.order===s||(i.removeFromParent(),i.order=s,i.parentUuid=t,i.hasParent?r(this,K).delete(e):r(this,K).add(e),i.reSubscribeToParentContexts(),queueMicrotask(()=>{this.logger.isDebug&&this.logger.debug("entity.onParentChanged",{uuid:e,parentUuid:t,order:s,entity:i}),w(i,ji,i)}))}updateOrder(e,t){this.getEntity(e).order=t}dispatchEventsToEntity(e,t){var s;(s=this.getEntity(e))==null||s.dispatchViewEvents(t)}changeProperties(e,t){this.getEntity(e).setProperties(t),this.updateShadowObjects(e)}changeToken(e,t){if(!r(this,C).has(e))return;let s=r(this,C).get(e);s.token!==t&&(s.token=t,this.updateShadowObjects(e))}dispatchMessageToView(e){queueMicrotask(()=>{w(this,Ae,e)})}updateShadowObjects(e,t=Z.CreateAndDestroy,s){let i=r(this,C).get(e);s!=null||(s=new Set(this.registry.findConstructors(i.token,i.entity.truthyProps())));let a=t===Z.CreateAndDestroy||t===Z.DestroyOnly,o=t===Z.CreateAndDestroy||t===Z.JustCreate;if(a){for(let[n,l]of i.usedConstructors)if(!s.has(n)){i.usedConstructors.delete(n);for(let y of l)this.destroyShadowObject(y,i.entity)}}if(o)for(let n of s)i.usedConstructors.has(n)||this.constructShadowObject(n,i);return s}constructShadowObject(e,t){let s=new Set,i=new Set,a=new Map,o=new Map,n=new Map,l=new Map,y=new Map,b=it(new e({entity:t.entity,provideContext(d,h,g){let p=n.get(d);if(p==null){p=k(h,g?{compare:g}:void 0);let M=pt(p,t.entity.provideContext(d));i.add(M.destroy.bind(M)),n.set(d,p)}return p},provideGlobalContext(d,h,g){let p=l.get(d);if(p==null){p=k(h,g?{compare:g}:void 0);let M=pt(p,t.entity.provideGlobalContext(d));i.add(M.destroy.bind(M)),l.set(d,p)}return p},useContext(d,h){let g=a.get(d);if(g===void 0){g=k(void 0,h?{compare:h}:void 0).get,a.set(d,g);let p=pt(t.entity.useContext(d),g);i.add(p.destroy.bind(p))}return g},useParentContext(d,h){let g=o.get(d);if(g===void 0){g=k(void 0,h?{compare:h}:void 0).get,o.set(d,g);let p=pt(t.entity.useParentContext(d),g);i.add(p.destroy.bind(p))}return g},useProperty(d,h){let g=y.get(d);if(g===void 0){g=k(void 0,h?{compare:h}:void 0).get,y.set(d,g);let p=pt(t.entity.getPropertyReader(d),g);i.add(p.destroy.bind(p))}return g},createEffect(...d){let h=ee(...d);return i.add(h.destroy),h},createSignal(...d){let h=k(...d);return i.add(()=>{U(h)}),h},createMemo(...d){let h=Si(...d);return i.add(()=>{U(h)}),h},on(...d){let h=Q(...d);return i.add(h),h},once(...d){let h=O(...d);return i.add(h),h},onDestroy(d){s.add(d)}}));return this.logger.isInfo&&this.logger.info("create shadow-object",as(e),{shadowObject:b,entity:t.entity}),O(t.entity,Mt,fe.Low,()=>{this.logger.isInfo&&this.logger.info("destroy shadow-object",as(e),{shadowObject:b,entity:t.entity});for(let h of s)h();for(let h of i)h();for(let h of a.values())U(h);for(let h of o.values())U(h);for(let h of y.values())U(h);for(let h of n.values())U(h);for(let h of l.values())U(h);s.clear(),i.clear(),a.clear(),o.clear(),y.clear(),n.clear(),l.clear();let d=t.usedConstructors.get(e);d&&(d.delete(b),d.size===0&&t.usedConstructors.delete(e))}),t.usedConstructors.has(e)?t.usedConstructors.get(e).add(b):t.usedConstructors.set(e,new Set([b])),this.attachShadowObject(b,t.entity),b}createShadowObjects(e){var s;let t=r(this,C).get(e);(s=this.registry.findConstructors(t.token,t.entity.truthyProps()))==null||s.forEach(i=>{this.constructShadowObject(i,t)})}findShadowObjects(e){if(!r(this,C).has(e))return[];let{usedConstructors:t}=r(this,C).get(e);return Array.from(new Set(Array.from(t.values()).map(s=>Array.from(s)).flat()))}attachShadowObject(e,t){Q(t,e),typeof e[is]=="function"&&e[is](t)}destroyShadowObject(e,t){typeof e[Mt]=="function"&&e[Mt](t),w(e,Mt,t),z(t,e)}findOrCreateRootContext(e){let t=r(this,ut).get(e);return t||(t=new Le,r(this,ut).set(e,t)),t}destroy(){for(let e of r(this,ut).values())e.dispose();r(this,ut).clear();for(let e of this.traverseLevelOrderBFS().reverse())this.destroyEntity(e.uuid)}},C=new WeakMap,K=new WeakMap,Rt=new WeakMap,Zt=new WeakMap,Y=new WeakMap,ut=new WeakMap,ys);async function xs(e,t,s,i=!0){var o,n;if(s.has(t)){console.warn("importModule: skipping already imported module",t);return}else s.add(t);t.extends&&await Promise.all(t.extends.map(l=>xs(e,l,s,!1)));let{registry:a}=e;if(t.define)for(let[l,y]of Object.entries(t.define))a.define(l,y);if(t.routes)for(let[l,y]of Object.entries(t.routes))a.appendRoute(l,y);await((n=(o=t.initialize)==null?void 0:o.call(t,{define:(l,y)=>a.define(l,y),kernel:e,registry:a}))!=null?n:Promise.resolve()),i&&e.upgradeEntities()}var Fi=e=>(typeof e=="string"&&(e=new URL(e,globalThis.location.href)),e.toString()),_t,ct,Rs,Ns,zs,ps,Vi=(ps=class{constructor(e){c(this,ct);c(this,_t,new Set);var t,s;this.kernel=(t=e==null?void 0:e.kernel)!=null?t:new zi,this.postMessage=(s=e==null?void 0:e.postMessage)!=null?s:self.postMessage.bind(self),Q(this.kernel,Ae,"onMessageToView",this)}route(e){var t;switch(e.data.type){case $s:m(this,ct,Rs).call(this,e.data);break;case Is:m(this,ct,Ns).call(this,e.data);break;case Gs:m(this,ct,zs).call(this,e.data);break;default:console.warn("[MessageRouter] unknown message",(t=e.data.type)!=null?t:e.data)}}onMessageToView(e){let i=e,{transferables:t}=i,s=Ge(i,["transferables"]);this.postMessage({type:Ae,data:s},{transfer:t})}},_t=new WeakMap,ct=new WeakSet,Rs=async function(e){try{let t=await import(Fi(e.importModule));t[me]?(await xs(this.kernel,t[me],r(this,_t)),this.postMessage({type:be,url:e.importModule})):this.postMessage({type:be,url:e.importModule,error:`module has no "${me}" export`})}catch(t){console.error("[MessageRouter] failed to import module",t),this.postMessage({type:be,url:e.importModule,error:`${t}`})}},Ns=function(e){try{this.kernel.run(e)}catch(t){console.error("[MessageRouter] failed to apply change trail",t),this.postMessage({type:qe,serial:e.serial,error:t.toString()})}e.serial&&this.postMessage({type:qe,serial:e.serial})},zs=function(e){console.debug("[MessageRouter] on destroy",e),z(this.kernel,this),r(this,_t).clear(),this.postMessage({type:Bs})},ps),$i=class{constructor(){this.onmessage=e=>{var t;e.data.type===N?globalThis[D]=e.data.config:((t=this.router)!=null||(this.router=new Vi),this.router.route(e))}}start(){self.addEventListener("message",this.onmessage),self.postMessage({type:Us})}};console.debug("@spearwolf/shadow-objects/WorkerRuntime: hello!");var Ii=new $i;Ii.start();\n/*! Bundled license information:\n\n@spearwolf/eventize/lib/index.mjs:\n (*!\n =============================================================================\n @spearwolf/eventize 4.0.2+build.20250807\n \u2014 https://github.com/spearwolf/eventize.git\n =============================================================================\n \n Copyright 2015-2025 Wolfger Schramm\n \n Licensed under the Apache License, Version 2.0 (the "License");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an "AS IS" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n *)\n*/\n')}var Is=()=>new He;var Nt=(s,t,e=1e3,r)=>new Promise((i,n)=>{let o,h,a=()=>{clearTimeout(o),s.removeEventListener("message",h)};e!==0&&e!==1/0&&(o=setTimeout(()=>{a(),n(new Error(`Timeout waiting for message of type: ${t}`))},e)),h=c=>{if(c.data.type===t)try{(!r||r(c.data))&&(a(),i())}catch(p){a(),n(p.toString())}},s.addEventListener("message",h)});var pr=s=>{let t;if(s!=null&&Array.isArray(s))for(let e of s)e.transferables&&(t?t=[...t,...e.transferables]:t=e.transferables,delete e.transferables);return t},ve=class s{static{this.WorkerLoaded="workerLoaded"}#t;#e;#s;get isDestroyed(){return this.#e}get workerLoaded(){return ft(this,s.WorkerLoaded)}constructor(){this.#e=!1,this.#s=0,this.logger=new A("RemoteWorkerEnv"),U(this,s.WorkerLoaded)}async start(){if(this.#t)return this.logger.isWarn&&this.logger.warn("already started"),this.workerLoaded.then(()=>{if(this.isDestroyed)throw"worker was destroyed"});let t=this.#t=Is();this.configureConsoleLogger(t);try{if(await Nt(t,gs,vs),this.isDestroyed)throw"worker was destroyed";t.addEventListener("message",this.onMessageFromWorker.bind(this)),queueMicrotask(()=>{d(this,s.WorkerLoaded,this)})}catch(e){throw this.logger.error("failed to start",e),this.#t=void 0,e}}applyChangeTrail(t,e){let r=pr(t),i={type:ds,changeTrail:t},n=++this.#s;return e&&(i.serial=n),this.#t.postMessage(i,r),e?Nt(this.#t,ys,Cs,o=>{if(o.error)throw o.error;return o.serial===n}):Promise.resolve()}importScript(t){return t=me(t),this.#t.postMessage({type:fs,importModule:t}),Nt(this.#t,ms,ws,e=>{if(e.error)throw e.error;return e.url===t})}destroy(){if(!this.#t)return;let t=this.#t;this.#t=void 0,this.#e=!0,t.postMessage({type:ps}),Nt(t,bs,Es).finally(()=>{t.terminate()})}onMessageFromWorker(t){t.data?.type===mt?this.onMessageToView?.(t.data.data):this.logger.isDebug&&this.logger.debug("message from worker",t)}configureConsoleLogger(t){let e=`${j}.RemoteWorkerEnv.workerConfig`,r=JSON.parse(localStorage.getItem(e)??"{}");this.logger.isInfo&&this.logger.info("load console-logger worker config",{localStorageKey:e,workerConfig:r}),t.postMessage({type:j,config:{...A.sharedConfig,enable:this.logger.isEnabled,...r,...A.isEnabled?{}:{enable:!1}}})}};var Dt,$t=class extends tt{static{this.observedAttributes=[...tt.observedAttributes,ie,oe,ne]}static{this.DefaultAutoSync="frame"}#t;#e;#s;#i;#r;constructor(){super(),this.isShaeWorkerElement=!0,this.shadowEnv=new I,this.logger=new A("ShaeWorkerElement"),this.autostart=!0,this.isConnected$=f(!1),this.autoSync$=f(Dt.DefaultAutoSync),this.src$=f(""),this.#t=!1,this.#e=!1,this.ns$.onChange(t=>{this.shadowEnv.view=N.get(t)}),m(this.shadowEnv,I.ContextCreated,()=>{this.#r?.run(),this.dispatchEvent(new CustomEvent(I.ContextCreated.toLowerCase(),{bubbles:!1,detail:{shadowEnv:this.shadowEnv}}))}),m(this.shadowEnv,I.ContextLost,()=>{this.dispatchEvent(new CustomEvent(I.ContextLost.toLowerCase(),{bubbles:!1,detail:{shadowEnv:this.shadowEnv}}))}),this.autoSync$.onChange(t=>{let e=this.hasAttribute(F),r=e?this.getAttribute(F):void 0;t===Dt.DefaultAutoSync?e&&r!==t&&this.setAttribute(F,t):r!==t&&this.setAttribute(F,t)}),this.#a(),this.#n()}#n(){this.#r=w(()=>{let t=this.src$.get();t&&this.importScript(t)},{autorun:!1})}get shouldAutostart(){return this.autostart&&!Lt(this,Rs)}get autoSync(){return this.autoSync$.value}set autoSync(t){typeof t!="string"&&(t=t?Dt.DefaultAutoSync:"no"),this.autoSync$.set(`${t}`.trim().toLowerCase())}get frameLoop(){return this.#s??=new bt,this.#s}[bt.OnFrame](){this.syncShadowObjects()}async importScript(t){if(!t)throw new Error("src is blank");let e=await this.shadowEnv.ready();return this.logger.isInfo&&this.logger.info("shadowEnv importScript:",t,{shadowEnv:e}),await e.envProxy.importScript(t),this}connectedCallback(){O(()=>{this.hasAttribute(F)&&this.autoSync$.set(this.getAttribute(F)),this.isConnected$.set(!0)}),this.shouldAutostart&&this.start()}disconnectedCallback(){this.isConnected$.set(!1),this.#o()}attributeChangedCallback(t){if(super.attributeChangedCallback(t),t===ie&&this.shadowEnv.envProxy!=null)throw new Error('Changing the "local" attribute after the shadowEnv has been created is not supported.');if(t===ne&&this.#h(),t===F&&(this.autoSync=this.hasAttribute(F)?this.getAttribute(F):!0),t===oe){let e=(this.getAttribute(oe)||"").trim();this.src$.set(e),this.shadowEnv.isReady&&this.#r?.run()}}start(){if(!this.#e){if(this.#t=!1,this.shadowEnv.view??=N.get(this.ns),this.shadowEnv.envProxy==null){let t=Lt(this,ie)?new be:new ve;this.shadowEnv.envProxy=t,this.#h()}this.#e=!0}return this.shadowEnv.ready()}destroy(){this.#i?.destroy(),this.#r?.destroy(),x(this.isConnected$,this.autoSync$,this.src$),this.shadowEnv.envProxy=void 0,this.shadowEnv.destroy()}#o(){this.#t||(this.#t=!0,queueMicrotask(()=>{this.#t&&this.destroy()}))}#a(){this.#i=w(()=>{if(this.isConnected$.get()){let t=(this.autoSync$.get()||Dt.DefaultAutoSync).trim().toLowerCase(),e;if(["true","yes","on","frame","auto-sync"].includes(t))return this.logger.isDebug&&this.logger.debug("auto-sync",t,this),this.frameLoop.start(this),()=>{this.frameLoop.stop(this)};if(t.toLowerCase().endsWith("fps")){let r=parseInt(t,10);r>0?e=Math.floor(1e3/r):this.logger.isWarn&&this.logger.warn(`invalid auto-sync value: ${t}`)}else e=parseInt(t,10),isNaN(e)&&(e=void 0,["false","no","off"].includes(t)||this.logger.error(`invalid auto-sync value: ${t}`));if(e!==void 0&&e>0){this.logger.isDebug&&this.logger.debug("auto-sync interval (ms)",e,this);let r=setInterval(()=>{this.syncShadowObjects()},e);return()=>{clearInterval(r)}}else this.logger.isDebug&&this.logger.debug("auto-sync off",this)}},[this.autoSync$,this.isConnected$])}#h(){let t=this.shadowEnv.envProxy;t?.isLocalEnv&&(t.disableStructuredClone=this.hasAttribute(ne))}};Dt=$t;customElements.define(Ts,$t);globalThis.SHADOW_ENTS_BUNDLE_LOADED=!0;
21
+ var st="*",Je=1,Ee=2,Se=4,W=Symbol.for("eventize"),Fs="[eventize]",Ft=s=>s===st,Xe=s=>{switch(typeof s){case"string":case"symbol":return!0;default:return!1}},Ze=typeof console<"u",Ws=Ze?console[console.warn?"warn":"log"].bind(console,Fs):()=>{},zs=(s,t,e)=>(Object.defineProperty(s,t,{value:e,configurable:!0}),s),Us=0,ts=class{static publish(s){s.sort((t,e)=>t.order-e.order).forEach(t=>t.emit())}events=new Map;eventNames=new Set;add(s){Array.isArray(s)?s.forEach(t=>this.eventNames.add(t)):this.eventNames.add(s)}remove(s){Array.isArray(s)?s.forEach(t=>this.eventNames.delete(t)):this.eventNames.delete(s),this.clear(s)}clear(s){Array.isArray(s)?s.forEach(t=>this.events.delete(t)):this.events.delete(s)}retain(s,t){this.eventNames.has(s)&&this.events.set(s,{args:t,order:Us++})}isKnown(s){return this.eventNames.has(s)}emit(s,t,e=[]){if(Ft(s))this.eventNames.forEach(r=>this.emit(r,t,e));else if(this.events.has(s)){let{order:r,args:i}=this.events.get(s);e.push({order:r,emit:()=>t.apply(s,i)})}return e}},we=(s,t,e,r)=>{if(typeof t=="function"){let i=t.apply(s,e);i!=null&&r?.(i)}},Vs=(s,t,e,r)=>we(t,t.emit,[s].concat(e),r),Gs=s=>{switch(typeof s){case"function":return Je;case"string":case"symbol":return Ee;case"object":return Se}},Bs=0,qs=()=>++Bs,es=class{id;eventName;isCatchEmAll;priority;listener;listenerObject;listenerType;callAfterApply;isRemoved;refCount;constructor(s,t,e,r=null){this.id=qs(),this.eventName=s,this.isCatchEmAll=Ft(s),this.listener=e,this.listenerObject=r,this.priority=t,this.listenerType=Gs(e),this.callAfterApply=void 0,this.isRemoved=!1,this.refCount=1}isEqual(s,t=null){if(s===this)return!0;let e=typeof s;return e==="number"&&s===this.id?!0:t===null&&(e==="string"||e==="symbol")?s===st||s===this.eventName:this.listener===s&&this.listenerObject===t}apply(s,t,e){if(this.isRemoved)return;let{listener:r,listenerObject:i}=this;switch(this.listenerType){case Je:we(i,r,t,e),this.callAfterApply&&this.callAfterApply();break;case Ee:we(i,i[r],t,e),this.callAfterApply&&this.callAfterApply();break;case Se:{let n=r[s];if(this.isCatchEmAll||this.eventName===s){if(typeof n=="function"){let o=n.apply(r,t);o!=null&&e?.(o)}else Vs(s,r,t,e);this.callAfterApply&&this.callAfterApply()}break}}}},Hs=(s,t)=>s.priority!==t.priority?t.priority-s.priority:s.id-t.id,Qe=s=>s?.slice(0),Ye=(s,t)=>{let e=s.indexOf(t);e>-1&&s.splice(e,1)},Qs=s=>s===Se||s===Ee,Ce=(s,t,e)=>{let r=s.findIndex(i=>i.isEqual(t,e));r>-1&&(s[r].isRemoved=!0,s.splice(r,1))},It=(s,t,e)=>{let r=[];for(let i of s)(t==null&&i.listenerObject===e||i.eventName===t&&i.listener===e)&&r.push(i);for(let i of r)Ce(s,i,void 0)},ve=s=>{s&&(s.forEach(t=>{t.isRemoved=!0}),s.length=0)},Ys=(s,t)=>s.listenerType===t.listenerType?s.priority===t.priority&&s.eventName===t.eventName&&s.listenerObject===t.listenerObject&&s.listener===t.listener:!1,Ks=(s,t)=>{if(Qs(s.listenerType))return t.find(e=>Ys(s,e))},Js=(s,t)=>{let e=Ks(s,t);return e?(e.refCount+=1,e):(t.push(s),t.sort(Hs),s)},Xs=class{namedListeners;catchEmAllListeners;getListenersForEventName=s=>{let t=this.namedListeners.get(s);return t||(t=[],this.namedListeners.set(s,t)),t};constructor(){this.namedListeners=new Map,this.catchEmAllListeners=[]}add(s){return Js(s,s.isCatchEmAll?this.catchEmAllListeners:this.getListenersForEventName(s.eventName))}remove(s,t,e=!1){t==null&&Array.isArray(s)?s.forEach(r=>this.remove(r,null,e)):s==null||t==null&&Ft(s)?this.removeAllListeners():t==null&&Xe(s)?ve(this.namedListeners.get(s)):s instanceof es?s.isRemoved||(s.refCount-=1,s.refCount<1&&(s.isRemoved=!0,this.namedListeners.forEach(r=>Ye(r,s)),Ye(this.catchEmAllListeners,s))):e?Ft(s)&&typeof s=="object"?It(this.catchEmAllListeners,st,s):this.namedListeners.forEach(r=>It(r,s,t)):(this.namedListeners.forEach(r=>{Ce(r,s,t),typeof s=="object"&&It(r,void 0,s)}),Ce(this.catchEmAllListeners,s,t),typeof s=="object"&&It(this.catchEmAllListeners,void 0,s))}removeAllListeners(){this.namedListeners.forEach(s=>ve(s)),this.namedListeners.clear(),ve(this.catchEmAllListeners)}forEach(s,t){let e=Qe(this.catchEmAllListeners),r=Qe(this.namedListeners.get(s));if(s===st||!r||r.length===0)e.forEach(t);else if(e.length===0)r.forEach(t);else{let i=r.length,n=e.length,o=0,h=0;for(;o<i||h<n;){if(o<i){let a=r[o];if(h>=n||a.priority>=e[h].priority){t(a),++o;continue}}h<n&&(t(e[h]),++h)}}}getSubscriptionCount(){let s=this.catchEmAllListeners.length;for(let t of this.namedListeners.values())s+=t.length;return s}},rt=s=>!!(s&&s[W]);function wt(s){if(rt(s))return s;let t=new Xs,e=new ts;return zs(s,W,{keeper:e,store:t}),s}var z={Max:Number.POSITIVE_INFINITY,AAA:1e9,BB:1e6,C:1e3,Default:0,Low:-1e4,Min:Number.NEGATIVE_INFINITY},Zs=(s,t,e,r,i,n,o)=>{let h=s.add(new es(e,r,i,n));return t.emit(e,h,o),h},tr=(s,t,e,r)=>{let i=e.length,n=typeof e[0],o,h,a,c;if(i>=2&&i<=3&&n==="number"?(o=st,[h,a,c]=e):i>=3&&i<=4&&typeof e[1]=="number"?[o,h,a,c]=e:(h=z.Default,n==="string"||n==="symbol"||Array.isArray(e[0])?[o,a,c]=e:(o=st,[a,c]=e)),!a&&Ze)throw Ws("called with insufficient arguments!",e),"subscribeTo() called with insufficient arguments!";let p=l=>u=>Zs(s,t,u,l,a,c,r);return Array.isArray(o)?o.map(l=>Array.isArray(l)?p(l[1])(l[0]):p(h)(l)):p(h)(o)},ss=(s,t,e)=>{let r=[],i=tr(s,t,e,r);return ts.publish(r),i},Ke=s=>t=>{t.callAfterApply=()=>{s?.()}},rs=(s,t)=>Object.assign(()=>E(s,t),Array.isArray(t)?{listeners:t}:{listener:t}),is=(s,t,e,r)=>{let{store:i,keeper:n}=s[W];Array.isArray(t)?t.forEach(o=>{i.forEach(o,h=>h.apply(o,e,r)),n.retain(o,e)}):t!==st&&(i.forEach(t,o=>{o.apply(t,e,r)}),n.retain(t,e))},m=(s,...t)=>{let e=wt(s),{store:r,keeper:i}=e[W];return rs(e,ss(r,i,t))},C=(s,...t)=>{let e=wt(s),{store:r,keeper:i}=e[W],n=ss(r,i,t),o=rs(e,n),h=!1,a=()=>{h||(o(),h=!0)};return Array.isArray(n)?n.forEach(Ke(a)):Ke(a)(n),a},ct=(s,t)=>new Promise(e=>{C(s,t,e)}),E=(s,t,e)=>{if(!rt(s))throw new Error("object is not eventized");let{store:r,keeper:i}=s[W],n=typeof t,o=e!=null&&(n==="string"||n==="symbol");r.remove(t,e,o),Array.isArray(t)?i.remove(t.filter(h=>typeof h=="string")):Xe(t)&&i.remove(t)},d=(s,t,...e)=>{if(!rt(s))throw new Error("object is not eventized");is(s,t,e)},er=(s,t,...e)=>{if(!rt(s))throw new Error("object is not eventized");let r=[];return is(s,t,e,i=>{r.push(i)}),r=r.map(i=>Array.isArray(i)?Promise.all(i):Promise.resolve(i)),r.length>0?Promise.all(r):Promise.resolve()},U=(s,t)=>{let e=wt(s),{keeper:r}=e[W];r.add(t)},H=(s,t)=>{if(!rt(s))throw new Error("object is not eventized");let{keeper:e}=s[W];e.clear(t)},S=(()=>{let s=(t={})=>wt(t);return s.inject=(t={})=>(t=wt(t),Object.assign(t,{on:(...e)=>m(t,...e),once:(...e)=>C(t,...e),onceAsync:e=>ct(t,e),off:(e,r)=>E(t,e,r),emit:(e,...r)=>d(t,e,...r),emitAsync:(e,...r)=>er(t,e,...r),retain:e=>U(t,e),retainClear:e=>H(t,e)}),t),s.is=rt,s})();var xe=s=>rt(s)?s[W]?.store?.getSubscriptionCount()??0:0;var R=Symbol.for("signal"),it=Symbol.for("effect"),ke=Symbol.for("destroySignal"),Ae=Symbol.for("createEffect"),ns=Symbol.for("destroyEffect"),ft="value",Oe="mute",Te="unmute",Q="destroy",nt=Symbol.for("recall");var ot=S(),D=S(),V=S(),Wt=S();var at=class{static current;delayedEffects=[];batch(t,e){let r=this.delayedEffects.length;for(let i=0;i<r;i++){let[n,o]=this.delayedEffects[i];if(!(n>e))if(n===e){o.add(t);return}else{this.delayedEffects.splice(i,0,[e,new Set([t])]);return}}this.delayedEffects.push([e,new Set([t])])}run(){let t=new Set,e=[m(V,(i,n)=>{n===nt&&t.add(i)}),m(Wt,i=>{t.add(i)})],r=this.delayedEffects.flatMap(([,i])=>Array.from(i));for(let i of r)t.has(i)||d(V,i,i,nt);e.forEach(i=>{i()})}},os=()=>at.current;function O(s){let t=at.current;t?t=void 0:t=at.current=new at;try{s()}finally{t&&(at.current=void 0,t.run())}}var Pe=0;function Re(s){Pe++;try{s()}finally{Pe--}}function zt(){return Pe>0}var Ut=class{[it];constructor(t){this[it]=t,C(t,dt.Destroy,()=>{this[it]=void 0})}run=()=>this[it]?.run();destroy=()=>{this[it]?.destroy(),this[it]=void 0}};var Y=new Map,M=class s{#t=new Set;#e=new Set;#s=new Map;#i=new WeakMap;#r=new Map;#n=new Set;#o=new Set;#a;static get(t){if(t!=null)return t instanceof s?t:Y.get(t)}static findOrCreate(t){if(t==null)throw new Error("Cannot create a group with a null object");return new s(t)}static destroy(t){console.warn("SignalGroup.destroy(obj) is deprecated. Use SignalGroup.delete(obj) instead."),s.delete(t)}static delete(t){Y.get(t)?.clear()}static clear(){for(let t of Y.values())t.destroy();Y.clear()}constructor(t){if(t!=null&&t instanceof s)return t;if(t??=this,Y.has(t))return Y.get(t);Y.set(t,this),S(this)}attachGroup(t){if(t===this)throw new Error("Cannot attach a group to itself");return this.#t.add(t),t.#a&&t.#a!==this&&t.#a.#t.delete(t),t.#a=this,t}detachGroup(t){return t!==this&&this.#t.has(t)&&(this.#t.delete(t),t.#a=void 0),t}attachSignal(t){let e=v(t);if(e?.destroyed)throw new Error("Cannot attach a destroyed signal to a group");return e&&this.#e.add(e),t}attachSignalByName(t,e){if(e){this.attachSignal(e);let r=v(e);this.#s.set(t,r),this.#r.has(t)?this.#r.get(t).push(r):this.#r.set(t,[r]),this.#i.has(r)?this.#i.get(r).add(t):this.#i.set(r,new Set([t]))}else this.#s.delete(t);return e}hasSignal(t){return this.#s.has(t)||this.#a?.hasSignal(t)}signal(t){return this.#s.get(t)?.object??this.#a?.signal(t)}detachSignal(t){let e=v(t);if(e&&(this.#e.delete(e),this.#i.has(e))){let r=this.#i.get(e);for(let i of r)if(this.#r.has(i)){let n=this.#r.get(i);n.splice(n.indexOf(e),1),n.length===0?(this.#s.delete(i),this.#r.delete(i)):this.#s.get(i)===e&&this.#s.set(i,n.at(-1))}r.clear(),this.#i.delete(e)}return t}attachEffect(t){return this.#n.add(t),t}runEffects(){for(let t of this.#n)t.run();for(let t of this.#t)t.runEffects()}attachLink(t){if(t?.isDestroyed)throw new Error("Cannot attach a destroyed link to a group");return t&&this.#o.add(t),t}detachLink(t){return t&&this.#o.delete(t),t}destroy(){console.warn("SignalGroup#destroy is deprecated. Use SignalGroup#clear instead."),this.clear()}clear(){d(this,Q,this),E(this);for(let t of this.#t)t.destroy();for(let t of this.#n)t.destroy();for(let t of this.#e)x(t);for(let t of this.#o)t.destroy();this.#t.clear(),this.#e.clear(),this.#s.clear(),this.#r.clear(),this.#n.clear(),this.#o.clear(),this.#a?.detachGroup(this),Y.delete(this)}};var pt=class{#t;#e;constructor(t="id",e=1){this.#t=t,this.#e=e}make(){return Symbol(`${this.#t}${this.#e++}`)}};var Me=[],Vt=()=>Me.at(-1),as=(s,t)=>{Me.push(s);try{return t()}finally{Me.pop()}};var sr=s=>s!=null&&typeof s.then=="function",dt=class s{static idGen=new pt("ef");static Destroy="destroy";static count=0;id;callback;#t;#e=new Set;#s=new Set;#i=new Map;#r=new Set;parentEffect;childEffects=[];curChildEffectSlot=0;autorun=!0;shouldRun=!0;priority;#n;#o=!1;constructor(t,e){S(this),this.callback=t;let r;e?.attach!=null&&(r=M.findOrCreate(e.attach),r.attachEffect(this)),this.autorun=e?.autorun??!0,this.#n=e?.dependencies?e.dependencies.map(i=>{switch(typeof i){case"string":case"symbol":return r.signal(i);default:return i}}):void 0,this.id=s.idGen.make(),this.priority=e?.priority??0,m(V,this.id,nt,this),++s.count}hasStaticDeps(){return this.#n!=null&&this.#n.length>0}saveSignalsFromDeps(){for(let t of this.#n)this.whenSignalIsRead(v(t).id)}static createEffect(t,e,r){let i=Array.isArray(e)?e:void 0,n=i?r??{dependencies:i}:e;n&&i&&(n.dependencies=i);let o,h=Vt();return h!=null?(o=h.getCurrentChildEffect(),o==null&&(o=new s(t,n),h.attachChildEffect(o),d(V,Ae,o)),h.curChildEffectSlot++):(o=new s(t,n),d(V,Ae,o)),o.hasStaticDeps()?o.saveSignalsFromDeps():o.autorun&&o.run(),new Ut(o)}getCurrentChildEffect(){return this.childEffects[this.curChildEffectSlot]}attachChildEffect(t){this.childEffects.push(t),this.parentEffect=this}run=()=>{if(this.#o||!this.shouldRun)return;let t=os();t?t.batch(this.id,this.priority):(this.runCleanupCallback(),this.curChildEffectSlot=0,this.shouldRun=!1,d(Wt,this.id,this.id),this.hasStaticDeps()?this.#t=this.callback():(this.#s=new Set(this.#e),this.#t=as(this,this.callback),this.cleanupLostSignals(),this.#r.clear()))};[nt](){this.shouldRun=!0,this.autorun&&this.run()}whenSignalIsRead(t){this.#s.delete(t),this.#e.has(t)||(this.#e.add(t),this.#i.set(t,[m(ot,t,this.priority,nt,this),C(D,t,ke,this)]))}[ke](t){!this.#r.has(t)&&this.#e.has(t)&&(this.#r.add(t),this.unsubscribeSignal(t),this.#r.size===this.#e.size&&this.destroy())}cleanupLostSignals(){for(let t of this.#s)this.unsubscribeSignal(t),this.#e.delete(t)}unsubscribeSignal(t){this.#i.has(t)&&(this.#i.get(t).forEach(e=>{e()}),this.#i.delete(t))}runCleanupCallback(){if(this.#t!=null){let t=this.#t;this.#t=void 0,sr(t)?Promise.resolve(t).then(e=>{typeof e=="function"&&e()}):t()}}destroy=()=>{this.#o||(d(this,s.Destroy,this),E(this),d(V,ns,this),this.runCleanupCallback(),E(ot,this),E(V,this),E(D,this),this.#o=!0,this.#e.clear(),this.#s.clear(),this.#i.clear(),this.#r.clear(),this.childEffects.forEach(t=>{t.destroy()}),this.childEffects.length=0,--s.count)}};var w=(...s)=>dt.createEffect(...s);var Ct=new WeakMap,rr=s=>{let t=Ct.get(s);return t||(t={},Ct.set(s,t)),t},T=(s,t)=>Ct.get(s)?.signals?.get(t);var hs=(s,t,e)=>{let r=rr(s);r.signals??=new Map,r.signals.set(t,e)};function Et(...s){for(let t of s)if(Ct.has(t)){let e=Ct.get(t);if(e.signals){for(let r of e.signals.values())x(r);e.signals.clear(),e.signals=void 0}}}function ls(s){let t=v(gt(s)?s:T(...s));t!=null&&!t.muted&&!t.destroyed&&Gt(t.id,t.value,{touch:!0})}function ht(s){return gt(s)?v(s)?.value:v(T(...s))?.value}var Bt=class{[R];constructor(t){this[R]=t}get get(){return this[R].reader}get set(){return this[R].writer}get value(){return ht(this.get)}set value(t){this.set(t)}onChange(t){let{destroy:e}=w(()=>t(this.value),[this.get]);return e}get muted(){return this[R].muted}set muted(t){this[R].muted=t}touch(){ls(this)}destroy(){x(this)}};var ir=new pt("si");function us(s){zt()||Vt()?.whenSignalIsRead(s)}function Gt(s,t,e){zt()||d(ot,s,t,e)}var gt=s=>s!=null&&s[R]!=null,nr=s=>{let t=e=>(e?w(()=>(s.destroyed||us(s.id),e(s.value)),[t]):s.destroyed||(s.beforeRead?.(),us(s.id)),s.value);return Object.defineProperty(t,R,{value:s}),t},qt=class s{static instanceCount=0;id;lazy;get[R](){return this}compare;beforeRead;muted=!1;destroyed=!1;#t=void 0;get value(){return this.lazy&&(this.#t=this.valueFn(),this.valueFn=void 0,this.lazy=!1),this.#t}set value(t){this.#t=t}valueFn;reader;writer=(t,e)=>{let r=e?.lazy??!1,n=e?.compare??this.compare??((h,a)=>h===a);if((r!==this.lazy||r&&t!==this.valueFn||!r&&!n(t,this.#t))&&(r?(this.#t=void 0,this.valueFn=t,this.lazy=!0):(this.#t=t,this.valueFn=void 0,this.lazy=!1),!this.muted&&!this.destroyed)){Gt(this.id,this.#t);return}(e?.touch??!1)&&Gt(this.id,this.#t,{touch:!0})};object;constructor(t,e){this.id=ir.make(),++s.instanceCount,this.lazy=t,this.lazy?(this.value=void 0,this.valueFn=e):(this.value=e,this.valueFn=void 0),this.reader=nr(this),this.object=new Bt(this)}},v=s=>s?.[R];function f(s=void 0,t){let e;if(gt(s))e=v(s);else{let r=t?.lazy??!1;e=new qt(r,s),e.beforeRead=t?.beforeRead,e.compare=t?.compare}return t?.attach!=null&&M.findOrCreate(t.attach).attachSignal(e),e.object}var x=(...s)=>{for(let t of s){let e=v(t);e!=null&&!e.destroyed&&(e.destroyed=!0,e.beforeRead=void 0,--qt.instanceCount,d(D,e.id,e.id))}};function Le(s,t){let e=f(),r=t?.attach!=null?M.findOrCreate(t.attach):void 0;r!=null&&(t?.name?r.attachSignalByName(t.name,e):r.attachSignal(e));let i=w(()=>e.set(s()),{autorun:!(t?.lazy??!1),priority:t?.priority??z.C,attach:r}),n=v(e);return n.beforeRead=i.run,C(D,n.id,i.destroy),e.get}var Ht=class{#t=!1;#e;source;lastValue;isDestroyed=!1;constructor(t){S(this),this.source=v(t),this.#e=m(ot,this.source.id,(e,r)=>{!this.#t&&!this.isDestroyed&&(r?.touch===!0?this.touch():this.write())}),C(D,this.source.id,()=>this.destroy())}attach(t){let e=M.findOrCreate(t);return e.attachLink(this),C(this,Q,()=>{e.detachLink(this)}),e}nextValue(){return new Promise((t,e)=>{let r=[],i=()=>r.forEach(n=>{n()});r.push(C(this,ft,n=>{i(),t(n)}),C(this,Q,()=>{i(),e()}))})}async*asyncValues(t){let e=0;for(;!this.isDestroyed;)try{let r=await this.nextValue();if(t&&t(r,e++))break;U(this,ft),yield r}catch{break}H(this,ft)}destroy(){this.isDestroyed||(this.#e?.(),this.#e=void 0,d(this,Q,this),H(this,ft),E(this),this.lastValue=void 0,this.isDestroyed=!0,Object.freeze(this))}get isMuted(){return this.#t}mute(){return!this.isDestroyed&&!this.#t&&(this.#t=!0,d(this,Oe,this)),this}unmute(){return!this.isDestroyed&&this.#t&&(this.#t=!1,d(this,Te,this)),this}toggle(){return this.isDestroyed||(this.#t=!this.#t,d(this,this.#t?Oe:Te,this)),this.#t}updateValue(t){if(!this.#t&&!this.isDestroyed){let{value:e}=this.source;t(e),d(this,ft,e),this.lastValue=e}}},Qt=class extends Ht{target;constructor(t,e){super(t),this.target=v(e),C(D,this.target.id,()=>this.destroy()),this.touch()}touch(){return this.updateValue(t=>{this.target.writer(t,{touch:!0})}),this}write(){this.updateValue(t=>{this.target.writer(t)})}},Yt=class extends Ht{target;constructor(t,e){super(t),this.target=e,this.touch()}touch(){return this.updateValue(t=>{this.target(t)}),this}write(){this.updateValue(t=>{this.target(t)})}};var Kt=new Map;function _(s,t,e){let r=v(s),i;if(Kt.has(r)){i=Kt.get(r);let c=v(t)??t;if(i.has(c))return i.get(c)}else i=new Map,Kt.set(r,i);let n=v(t),o=n!=null?new Qt(s,n):new Yt(s,t),h=e?.attach;h&&o.attach(h);let a=n??t;return i.set(a,o),C(o,Q,()=>{i.delete(a),i.size===0&&Kt.delete(r)}),o}var Jt=class s{static fromProps(t,e){let r=new s,i=e?e.map(n=>[n,t[n]]):Object.entries(t);for(let[n,o]of i)r.#t.set(n,f(o));return r}#t=new Map;keys(){return this.#t.keys()}signals(){return this.#t.values()}entries(){return this.#t.entries()}clear(){for(let t of this.#t.values())t.destroy();this.#t.clear()}has(t){return this.#t.has(t)}get(t){if(!this.#t.has(t)){let e=f();return this.#t.set(t,e),e}return this.#t.get(t)}update(t){t.size&&O(()=>{for(let[e,r]of t.entries())this.get(e).set(r)})}updateFromProps(t,e){O(()=>{let r=e?e.map(i=>[i,t[i]]):Object.entries(t);for(let[i,n]of r)this.get(i).set(n)})}};var $;(function(s){s[s.StructuralChanges=1]="StructuralChanges",s[s.ContentUpdates=2]="ContentUpdates",s[s.Removal=3]="Removal"})($||($={}));var b;(function(s){s[s.CreateEntities=1]="CreateEntities",s[s.DestroyEntities=2]="DestroyEntities",s[s.SetParent=3]="SetParent",s[s.UpdateOrder=4]="UpdateOrder",s[s.ChangeProperties=5]="ChangeProperties",s[s.ChangeToken=6]="ChangeToken",s[s.SendEvents=7]="SendEvents"})(b||(b={}));var lt=Symbol.for("ShadowEntsGlobalNS"),G="#void",cs="contextLost",fs="configure",ds="changeTrail",ps="destroy",gs="loaded",ys="appliedChangeTrail",ms="importedModule",bs="destroyed",yt="messageToView",vs=6e4,ws=6e4,Cs=5e3,Es=5e3,je="shadowObjects";function Ss(s,t){s.indexOf(t)===-1&&s.push(t)}function _e(s,t){let e=s.indexOf(t);e!==-1&&s.splice(e,1),s.push(t)}function K(s,t){let e=s.indexOf(t);e!==-1&&s.splice(e,1)}var ut=s=>typeof s=="string"?s.trim()||lt:typeof s=="symbol"?s:lt;var St="#root",xt=class{#t;get uuid(){return this.#t}#e=0;constructor(t){this.#t=t}#s=!0;#i=0;#r=0;hasChanges(){return this.#e>0}get isNew(){return this.#s}get isCreated(){return this.#i>0&&this.#i>this.#r}get isDestroyed(){return this.#r>0&&this.#r>=this.#i}#n=G;#o;#a=0;#h;#l;#u;create(t=G,e,r=0){this.#e++,this.#i++,this.#h=t,this.#l=e??St,this.#u=r||void 0}destroy(){this.#r++,this.#e++}clear(){this.#e=0,this.#s=!1,this.#h=void 0,this.#l=void 0,this.#u=void 0,this.#f.clear(),this.#d.length=0,this.#g.length=0,this.#p.clear()}changeToken(t){t===this.#n?this.#h=void 0:(this.#h=t,this.#e++)}setParent(t){t===this.#o?this.#l=void 0:(this.#l=t??St,this.#e++)}changeOrder(t){t===this.#a?this.#u=void 0:(this.#u=t,this.#e++)}#c=new Map;#f=new Map;#d=[];changeProperty(t,e,r){let i=this.#c.get(t);r==null&&e!==i||r!=null&&!r(e,i)?(this.#f.set(t,e),_e(this.#d,t),this.#e++):(this.#f.delete(t),K(this.#d,t))}removeProperty(t){let e=this.#c.has(t);this.#f.has(t)?(this.#f.delete(t),e||K(this.#d,t)):e&&(_e(this.#d,t),this.#e++)}#g=[];#p=new Set;createEvent(t,e,r){this.#g.push({type:t,data:e}),r?.forEach(i=>this.#p.add(i)),this.#e++}transferEventsTo(t){this.#g.length>0&&(t.#g.push(...this.#g),this.#g.length=0),this.#p.size>0&&(t.#p=new Set([...t.#p,...this.#p]),this.#p.clear())}buildChangeTrail(t,e){let{isNew:r,isCreated:i,isDestroyed:n}=this;if(!(r&&n))switch(e){case $.StructuralChanges:r?t.push(this.makeCreateEntityChange()):n||(this.#l!==void 0&&!(this.#l===St&&this.#o===void 0)?t.push(this.makeSetParentChange()):this.#u!==void 0&&this.#u!==this.#a&&t.push(this.makeUpdateOrderChange()),this.#h!==void 0&&this.#h!==this.#n&&t.push(this.makeChangeToken()));break;case $.ContentUpdates:!r&&i&&this.#d.length>0&&t.push(this.makeChangePropertyChange()),this.#g.length>0&&t.push(this.makeEvents());break;case $.Removal:n&&t.push(this.makeDestroyEntityChange());break}}makeEvents(){let t={type:b.SendEvents,uuid:this.#t,events:this.#g.slice(0)};return this.#p.size>0&&(t.transferables=Array.from(this.#p)),t}makeCreateEntityChange(){let t={type:b.CreateEntities,uuid:this.#t,token:this.#h};if(this.#n=this.#h,this.#l!==void 0){let e=this.#l===St?void 0:this.#l;this.#o=e,e!==void 0&&(t.parentUuid=e)}return this.#f.size>0&&(t.properties=Array.from(this.#f.entries()).filter(([,e])=>e!==void 0),t.properties.forEach(([e,r])=>this.#c.set(e,r))),this.#u!==void 0&&this.#u!==this.#a&&(t.order=this.#a=this.#u),t}makeDestroyEntityChange(){return{type:b.DestroyEntities,uuid:this.#t}}makeSetParentChange(){this.#o=this.#l===St?void 0:this.#l;let t={type:b.SetParent,uuid:this.#t,parentUuid:this.#o};return this.#u!==void 0&&this.#u!==this.#a&&(t.order=this.#a=this.#u),t}makeUpdateOrderChange(){return this.#a=this.#u??0,{type:b.UpdateOrder,uuid:this.#t,order:this.#a}}makeChangeToken(){return this.#n=this.#h??G,{type:b.ChangeToken,uuid:this.#t,token:this.#n}}makeChangePropertyChange(){let t=this.#d.map(e=>{if(this.#f.has(e)){let r=this.#f.get(e);return this.#c.set(e,r),[e,r]}else return this.#c.delete(e),[e,void 0]});return{type:b.ChangeProperties,uuid:this.#t,properties:t}}};var xs=s=>{if(!(s===void 0||s.length===0))return s.filter(t=>t.length===1||t[1]!==void 0)},Ne=(s,t)=>{if(s===t||t===void 0)return s;if(s===void 0)return xs(t);for(let[e,r]of t){let i=s.find(([n])=>n===e);i===void 0?s.push([e,r]):i[1]=r}return xs(s)};var Xt=class{#t=new Map;get[Symbol.iterator](){return this.#t.entries.bind(this.#t)}clear(){this.#t.clear()}isEmpty(){return this.#t.size===0}hasComponentState(t){return this.#t.has(t)}getComponentState(t){return this.#t.get(t)}write(t){for(let e of t)if(e.type===b.CreateEntities)this.createEntity(e);else if(this.#t.has(e.uuid))switch(e.type){case b.DestroyEntities:this.destroyEntity(e);break;case b.SetParent:this.setParent(e);break;case b.UpdateOrder:this.updateOrder(e);break;case b.ChangeToken:this.changeToken(e);break;case b.ChangeProperties:this.changeProperties(e);break}}changeProperties({uuid:t,properties:e}){let r=this.getComponentState(t);r.properties=Ne(r.properties,e)}changeToken({uuid:t,token:e}){this.getComponentState(t).token=e||G}updateOrder({uuid:t,order:e}){this.getComponentState(t).order=e??0}setParent({uuid:t,parentUuid:e,order:r}){let i=this.getComponentState(t);i.parentUuid=e,i.order=r??0}destroyEntity({uuid:t}){this.#t.delete(t)}createEntity({uuid:t,token:e,parentUuid:r,order:i,properties:n}){this.#t.set(t,{token:e||G,parentUuid:r,order:i??0,properties:Ne(void 0,n)})}};var N=class s{static{this.ReRequestParentRoots="re-request-parent-roots"}static getContextsMap(){return globalThis.__shadowEntsContexts==null&&(globalThis.__shadowEntsContexts=new Map),globalThis.__shadowEntsContexts}static get(t){let e=ut(t),r=s.getContextsMap();return r.has(e)?r.get(e):new s(e)}#t=new Map;#e=[];#s=new Xt;constructor(t=lt){let e=ut(t),r=s.getContextsMap();if(r.has(e))return r.get(e);this.ns=e,r.set(e,this)}addComponent(t){let e;this.#t.has(t.uuid)?(e=this.#t.get(t.uuid),e.component=t,e.children=[]):(e={component:t,children:[],changes:new xt(t.uuid),propIsEqual:void 0},this.#t.set(t.uuid,e)),e.changes.create(t.token,t.parent?.uuid,t.order),t.parent?(this.addToChildren(t.parent,t),e.changes.setParent(t.parent.uuid)):this.#n(t,this.#e),this.#o=void 0}hasComponent(t){return this.#t.has(t.uuid)}hasComponents(){return this.#t.size>0}isRootComponent(t){return this.#e.includes(t.uuid)}destroyComponent(t){if(this.hasComponent(t)){let e=this.#t.get(t.uuid);e.children.slice(0).forEach(r=>this.#t.get(r)?.component.removeFromParent()),e.changes.destroy(),this.#o=void 0}}getChildren(t){return this.#t.get(t.uuid)?.children.map(e=>this.#t.get(e).component)??[]}removeFromParent(t,e){if(this.hasComponent(e)){let r=this.#t.get(t),i=this.#t.get(e.uuid),n=i.children.indexOf(t);n!==-1&&(i.children.splice(n,1),r.changes.setParent(void 0)),this.#n(r.component,this.#e),this.#o=void 0}}moveToRoot(t){let e=this.#t.get(t);e&&(e.changes?.setParent(void 0),this.#n(e.component,this.#e)),this.#o=void 0}changeToken(t,e){this.#t.get(t.uuid)?.changes.changeToken(e)}isChildOf(t,e){return this.hasComponent(e)?this.#t.get(e.uuid).children.includes(t.uuid):!1}addToChildren(t,e){let r=this.#t.get(t.uuid);if(r)this.#n(e,r.children),this.#t.get(e.uuid)?.changes.setParent(t.uuid),K(this.#e,e.uuid),this.#o=void 0;else throw new Error(`the view component ${t.uuid} cannot have a child added to it because the component do not exist!`)}removeSubTree(t){let e=this.#t.get(t);e&&(e.children.slice(0).forEach(r=>this.removeSubTree(r)),this.destroyComponent(e.component),this.#i(t))}setProperty(t,e,r,i){let n=this.#t.get(t.uuid);return n!=null?(i!=null?(n.propIsEqual??=new Map,n.propIsEqual.set(e,i)):n.propIsEqual?.has(e)&&n.propIsEqual.delete(e),n.changes.changeProperty(e,r,i)):!1}removeProperty(t,e){this.#t.get(t.uuid)?.changes.removeProperty(e)}changeOrder(t){if(t.parent){let e=this.#t.get(t.parent.uuid);K(e.children,t.uuid),this.#n(t,e.children)}else K(this.#e,t.uuid),this.#n(t,this.#e);this.#t.get(t.uuid)?.changes.changeOrder(t.order),this.#o=void 0}traverseLevelOrderBFS(){return this.#a().map(t=>t.component)}dispatchShadowObjectsEvent(t,e,r,i){this.#t.get(t.uuid)?.changes.createEvent(e,r,i)}broadcastEvent(t,e=void 0){for(let r of this.traverseLevelOrderBFS())r.dispatchEvent(t,e,!1)}dispatchMessage(t,e,r=void 0,i=!1){this.#t.get(t)?.component.dispatchEvent(e,r,i)}dispatchReRequestParentRoots(){for(let t of this.#e)this.dispatchMessage(t,s.ReRequestParentRoots)}buildChangeTrails(t=!0){let e=[];if(!this.hasComponents())return e;let r=this.#r();for(let i of r)i.buildChangeTrail(e,$.StructuralChanges);for(let i of r)i.buildChangeTrail(e,$.ContentUpdates);for(let i of r)i.buildChangeTrail(e,$.Removal),(i.isDestroyed||i.isNew&&!i.isCreated)&&this.#i(i.uuid),t&&i.clear();return this.#s.write(e),e}reCreateChanges(){if(!this.#s.isEmpty()){this.buildChangeTrails(!1);for(let[t,e]of this.#s){let r=this.#t.get(t);if(r){let i=new xt(t);if(i.create(e.token,e.parentUuid,e.order),e.properties)for(let[n,o]of e.properties)i.changeProperty(n,o,r.propIsEqual?.get(n));r.changes.transferEventsTo(i),r.changes.clear(),r.changes=i}}this.#s.clear(),this.broadcastEvent(cs)}}clear(){if(this.#o=void 0,this.#s.clear(),this.#e.slice(0).forEach(t=>this.removeSubTree(t)),this.#e.length!==0)throw new Error("component-context panic: #rootComponents is not empty!");if(this.#t.size!==0)throw new Error("component-context panic: #components is not empty!")}#i(t){this.#t.has(t)&&(this.#t.delete(t),K(this.#e,t),this.#o=void 0)}#r(){return this.#a().filter(t=>t.changes.hasChanges()).map(t=>t.changes)}#n(t,e){if(e.length===0){e.push(t.uuid);return}if(e.includes(t.uuid))return;let r=e.length,i=new Array(r);if(i[0]=this.#t.get(e[0]).component,t.order<i[0].order){e.unshift(t.uuid);return}if(r===1){e.push(t.uuid);return}let n=r-1;if(i[n]=this.#t.get(e[n]).component,t.order>=i[n].order){e.push(t.uuid);return}if(r===2){e.splice(1,0,t.uuid);return}for(let o=n-1;o>=1;o--)if(i[o]=this.#t.get(e[o]).component,t.order>=i[o].order){e.splice(o+1,0,t.uuid);return}}#o;#a(){if(this.#o)return this.#o;let t=new Map,e=(r,i)=>{let n=this.#t.get(r);if(n!=null){t.has(i)?t.get(i).push(n):t.set(i,[n]);for(let o of n.children)e(o,i+1)}};return this.#e.forEach(r=>e(r,0)),this.#o=Array.from(t.entries()).sort((r,i)=>r[0]-i[0]).map(([,r])=>r).flat(),this.#o}};function kt(s,t,e,r,i,n){function o(vt){if(vt!==void 0&&typeof vt!="function")throw new TypeError("Function expected");return vt}for(var h=r.kind,a=h==="getter"?"get":h==="setter"?"set":"value",c=!t&&s?r.static?s:s.prototype:null,p=t||(c?Object.getOwnPropertyDescriptor(c,r.name):{}),l,u=!1,g=e.length-1;g>=0;g--){var y={};for(var P in r)y[P]=P==="access"?{}:r[P];for(var P in r.access)y.access[P]=r.access[P];y.addInitializer=function(vt){if(u)throw new TypeError("Cannot add initializers after decoration has completed");n.push(o(vt||null))};var et=(0,e[g])(h==="accessor"?{get:p.get,set:p.set}:p[a],y);if(h==="accessor"){if(et===void 0)continue;if(et===null||typeof et!="object")throw new TypeError("Object expected");(l=o(et.get))&&(p.get=l),(l=o(et.set))&&(p.set=l),(l=o(et.init))&&i.unshift(l)}else(l=o(et))&&(h==="field"?i.unshift(l):p[a]=l)}c&&Object.defineProperty(c,r.name,p),u=!0}function J(s,t,e){for(var r=arguments.length>2,i=0;i<t.length;i++)e=r?t[i].call(s,e):t[i].call(s);return r?e:void 0}function At(s){return function(t,e){let r=s?.name||e.name,i=!!(s?.readAsValue??!1);return{get(){let n=T(this,r);if(n)return i?n.value:n.get()},set(n){T(this,r)?.set(n)},init(n){let o=f(n,s);return hs(this,r,o),M.findOrCreate(this).attachSignalByName(r,o),o.value}}}}var j="ConsoleLogger",L=`${j}Storage`,or=!!(globalThis.location?.host?.startsWith("localhost")??!1),Tt="localStorage"in globalThis,Zt=Symbol.for(j),ks=!1,As=s=>{if(typeof s=="boolean")return s;switch(s.toLowerCase()){case"true":case"yes":case"on":return!0;default:return!1}},$e=s=>[Tt?j:void 0,...Array.isArray(s)?s:[s]].filter(Boolean).join(".");function De(s,t=void 0,e){let r=$e(s),i=Tt?localStorage.getItem(r):globalThis[L]?.[r];return i!=null?t(i):e}function Ot(s,t){Tt?localStorage.setItem($e(s),t):(globalThis[L]==null&&(globalThis[L]={},console.debug(`${j}: Initialize`,{[L]:globalThis[L]})),globalThis[L][$e(s)]=t)}var A=class s{static{this.sharedConfig={enable:or,debug:!1,info:!0,warn:!0,"styles.debug":"color: #111; background: #999; display: inline-block; padding: 0 0.25em; margin: 0; border-radius: 0.25em","styles.info":"color: #020; background: #8a8; display: inline-block; padding: 0 0.25em; margin: 0; border-radius: 0.25em","styles.warn":"color: #fa0; background: #a98; display: inline-block; padding: 0 0.25em; margin: 0; border-radius: 0.25em","styles.error":"color: #ff0; background: #a00; display: inline-block; padding: 0 0.25em; margin: 0; border-radius: 0.25em"}}static get isEnabled(){return s.sharedConfig.enable}static get isDebug(){return s.sharedConfig.enable&&s.sharedConfig.debug}static{this.sharedStyles={get debug(){return s.sharedConfig["styles.debug"]},set debug(t){s.sharedConfig["styles.debug"]=t},get info(){return s.sharedConfig["styles.info"]},set info(t){s.sharedConfig["styles.info"]=t},get warn(){return s.sharedConfig["styles.warn"]},set warn(t){s.sharedConfig["styles.warn"]=t},get error(){return s.sharedConfig["styles.error"]},set error(t){s.sharedConfig["styles.error"]=t}}}static loadConfig(){Tt?(["enable","debug","info","warn"].forEach(t=>{this.sharedConfig[t]=De(t,As,this.sharedConfig[t])}),["debug","info","warn","error"].forEach(t=>{this.sharedStyles[t]=De(["styles",t],void 0,this.sharedStyles[t])}),s.isDebug&&console.debug(`${j}: Load config from localStorage`,s.sharedConfig),globalThis[j]?.[Zt]||(globalThis[j]??={[Zt]:!0,get enable(){return s.sharedConfig.enable},set enable(t){s.sharedConfig.enable=t,Ot("enable",t?"true":"false")},get debug(){return s.sharedConfig.debug},set debug(t){s.sharedConfig.debug=t,Ot("debug",t?"true":"false")},get info(){return s.sharedConfig.info},set info(t){s.sharedConfig.info=t,Ot("info",t?"true":"false")},get warn(){return s.sharedConfig.warn},set warn(t){s.sharedConfig.warn=t,Ot("warn",t?"true":"false")}})):globalThis[L]?.[Zt]||(globalThis[L]={[Zt]:!0,...s.sharedConfig,...globalThis[L]},s.sharedConfig=globalThis[L],s.isDebug&&console.debug(`${j}: Load config from ${L}`,globalThis[L]))}constructor(t){this.enable=!0,this.namespace=(t||"").trim()||j,ks||(s.loadConfig(),ks=!0);let e=[this.namespace,"enable"];this.enable=De(e,As,this.enable),Ot(e,Tt?this.enable?"true":"false":this.enable)}get isEnabled(){return this.enable&&s.sharedConfig.enable}get isDebug(){return this.isEnabled&&s.sharedConfig.debug}get isInfo(){return this.isEnabled&&s.sharedConfig.info}get isWarn(){return this.isEnabled&&s.sharedConfig.warn}debug(...t){this.#t("debug",s.sharedStyles.debug,t)}info(...t){this.#t("info",s.sharedStyles.info,t)}warn(...t){this.#t("warn",s.sharedStyles.warn,t)}error(...t){this.#t("error",s.sharedStyles.error,t)}#t(t,e,r){console[t](`%c${this.namespace}`,e,...r)}};var I=(()=>{var s;let t,e=[],r=[],i,n=[],o=[];return class B{static{let a=typeof Symbol=="function"&&Symbol.metadata?Object.create(null):void 0;t=[At()],i=[At()],kt(this,null,t,{kind:"accessor",name:"viewReady",static:!1,private:!1,access:{has:c=>"viewReady"in c,get:c=>c.viewReady,set:(c,p)=>{c.viewReady=p}},metadata:a},e,r),kt(this,null,i,{kind:"accessor",name:"proxyReady",static:!1,private:!1,access:{has:c=>"proxyReady"in c,get:c=>c.proxyReady,set:(c,p)=>{c.proxyReady=p}},metadata:a},n,o),a&&Object.defineProperty(this,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:a})}static{this.AfterSync="afterSync"}static{this.ContextLost="contextLost"}static{this.ContextCreated="contextCreated"}static get(a){if(a!=null)return globalThis.__shadowEnvs?.get(a)}#t;#e;#s;#i;#r;#n;#o;get viewReady(){return this.#o}set viewReady(a){this.#o=a}#a;get proxyReady(){return this.#a}set proxyReady(a){this.#a=a}#h;get isDestroyed(){return this.#h}constructor(){this.#s=!1,this.#i=!1,this.#r=!1,this.logger=new A("ShadowEnv"),this.ns$=f(),this.#o=J(this,e,!1),this.#a=(J(this,r),J(this,n,!1)),this.#h=(J(this,o),!1),this.ready=async()=>this.isReady?this:ct(this,B.ContextCreated),this.#l=()=>{this.#s&&this.#u()},U(this,B.ContextCreated),m(this,B.ContextLost,z.AAA,()=>{H(this,B.ContextCreated)}),w(()=>{if(this.viewReady&&this.proxyReady)return this.view.reCreateChanges(),d(this,B.ContextCreated,this),this.#i&&(this.#i=!1,this.#u()),()=>{d(this,B.ContextLost,this)}},[T(this,"viewReady"),T(this,"proxyReady")])}get view(){return this.#t}set view(a){a!==this.#t&&(this.#t&&this.#t.ns&&globalThis.__shadowEnvs&&globalThis.__shadowEnvs.delete(this.#t.ns),this.#t=a??void 0,this.#t&&this.#t.ns&&(globalThis.__shadowEnvs??=new Map,globalThis.__shadowEnvs.has(this.#t.ns)&&globalThis.__shadowEnvs.get(this.#t.ns)!==this&&this.logger.isWarn&&this.logger.warn("overwrite a namespace already in use",this.#t.ns,globalThis.__shadowEnvs.get(this.#t.ns)),globalThis.__shadowEnvs.set(this.#t.ns,this)),this.viewReady=!!a)}get envProxy(){return this.#e}set envProxy(a){if(a!==this.#e){let c=this.#e;this.#e=a??void 0,this.#e&&(this.#e.onMessageToView=this.#c.bind(this)),c&&c.destroy(),this.proxyReady=!1,a?.start().then(()=>{this.proxyReady=!0}).catch(p=>{this.logger.error("failed to start envProxy",p),this.proxyReady=!1})}}get isReady(){return!!(this.#t&&this.#e&&this.proxyReady&&!this.isDestroyed)}sync(){if(!this.isReady){this.#i=!0;return}this.#s||(this.#s=!0,queueMicrotask(this.#l))}syncWait(){return this.#r=!0,this.sync(),this.#n?this.#n:(this.#n=ct(this,B.AfterSync).then(a=>(this.#n=void 0,a)),this.#n)}destroy(){let a=this.#t?.ns;this.envProxy?.destroy(),this.envProxy=void 0,this.view=void 0,a&&globalThis.__shadowEnvs.has(a)&&globalThis.__shadowEnvs.get(a)===this&&globalThis.__shadowEnvs.delete(a),Et(this),E(this),this.#h=!0,Object.freeze(this)}#l;async#u(){if(this.#s=!1,this.isReady){let a=this.view.buildChangeTrails();if(a.length>0)try{let c=this.#r;this.#r=!1,await this.envProxy.applyChangeTrail(a,c)}catch(c){this.logger.error("failed to apply change trail",c)}finally{d(this,B.AfterSync,a)}}}#c(a){this.logger.isDebug&&this.logger.debug("onMessageToView",a.type,a.data),this.view?.dispatchMessage(a.uuid,a.type,a.data,a.traverseChildren)}}})();var k=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"],ar=()=>{let s=Math.random()*4294967295|0,t=Math.random()*4294967295|0,e=Math.random()*4294967295|0,r=Math.random()*4294967295|0;return(k[s&255]+k[s>>8&255]+k[s>>16&255]+k[s>>24&255]+"-"+k[t&255]+k[t>>8&255]+"-"+k[t>>16&15|64]+k[t>>24&255]+"-"+k[e&63|128]+k[e>>8&255]+"-"+k[e>>16&255]+k[e>>24&255]+k[r&255]+k[r>>8&255]+k[r>>16&255]+k[r>>24&255]).toLowerCase()},Os=()=>globalThis?.crypto?.randomUUID?.()??ar();var Pt=class extends Error{constructor(t){super(t),this.name="ViewComponentError"}},te=class s{#t;#e;#s;#i;#r=0;get uuid(){return this.#t}get token(){return this.#e}set token(t){t??=G,t!==this.#e&&(this.#e=t,this.#s?.changeToken(this,t))}get parent(){return this.#i}set parent(t){if(t){if(t.#s!==this.#s)throw new Pt("cannot set parent from different context");t.addChild(this)}else this.removeFromParent()}get context(){return this.#s}set context(t){this.#s!=t&&(this.#s&&this.destroy(),this.#s=t,t&&t.addComponent(this))}get order(){return this.#r}set order(t){let e=this.#r;this.#r=t??0,e!==this.#r&&this.#s.changeOrder(this)}constructor(t,e){S(this),e instanceof s&&(e={parent:e}),this.#t=e?.uuid??Os(),this.#e=t,this.#r=e?.order??0,this.#i=e?.parent;let r=e?.context??N.get();if(this.#i&&this.#i.#s!==r)throw new Pt("cannot set parent from different context");this.context=r}isChildOf(t){return this.#i===t}removeFromParent(){this.#i?(this.#s?.removeFromParent(this.uuid,this.#i),this.#i=void 0):this.#s?.moveToRoot(this.uuid)}addChild(t){if(t.#s!==this.#s)throw new Pt("cannot add a child from another context");t.isChildOf(this)||(t.removeFromParent(),t.#i=this,this.#s.addToChildren(this,t))}setProperty(t,e,r){this.#s.setProperty(this,t,e,r)}removeProperty(t){this.#s.removeProperty(this,t)}dispatchShadowObjectsEvent(t,e,r){this.#s.dispatchShadowObjectsEvent(this,t,e,r)}dispatchEvent(t,e,r){if(d(this,t,e),r)for(let i of this.#s.getChildren(this))i.dispatchEvent(t,e,r)}destroy(){this.removeFromParent(),this.#s?.destroyComponent(this),this.#s=void 0}};var ee="shaeRequestEntParent",se="shaeReRequestEntParent",Ts="shae-worker",re="shae-ent",Ps="shae-prop",X="token";var ie="local",Rs="no-autostart",ne="no-structured-clone",F="auto-sync";var oe="name",ae="value",he="type",le="no-trim";var Rt=new Set(["on","true","yes","local","1"]);var Ms=s=>ut(s.getAttribute("ns")),Lt=(s,t)=>{if(s.hasAttribute(t)){let e=s.getAttribute(t)?.trim()?.toLowerCase()||"1";return Rt.has(e)}return!1};var Ls=(s,t)=>{t.set(Ms(s))},Ie=new Set,Fe=!1,hr=s=>{Ie.add(s),Fe||(Fe=!0,queueMicrotask(()=>{Fe=!1;for(let t of Ie)I.get(t)?.sync();Ie.clear()}))},Z=class extends HTMLElement{static{this.observedAttributes=["ns"]}get ns(){return this.ns$.value}set ns(t){typeof t=="symbol"?this.ns$.set(t):this.ns$.set(ut(t))}constructor(){super(),this.isShaeElement=!0,this.ns$=f(lt),this.ns$.onChange(t=>{typeof t=="string"&&t.length>0?this.getAttribute("ns")!==t&&this.setAttribute("ns",t):this.removeAttribute("ns")}),Ls(this,this.ns$)}attributeChangedCallback(t){t==="ns"&&Ls(this,this.ns$)}syncShadowObjects(){hr(this.ns)}};var ue=class extends Z{static{this.observedAttributes=[...Z.observedAttributes,X]}get componentContext(){return this.componentContext$.value}get viewComponent(){return this.viewComponent$.value}get uuid(){return this.viewComponent?.uuid}get token(){return this.token$.value}set token(t){this.token$.set(t)}#t;constructor(){super(),this.isShaeEntElement=!0,this.componentContext$=f(),this.viewComponent$=f(),this.token$=f(),this.#n=!0,this.#f=()=>{let t=this.findShadowRootHost();t!=null&&this.dispatchEvent(new CustomEvent(se,{bubbles:!0,composed:!0,detail:{requester:this,shadowRootHost:t}}))},this.#d=t=>{let e=t.detail?.requester;if(e===this||!e?.isShaeEntElement||e.ns!==this.ns)return;t.detail?.shadowRootHost&&this.#l()},this.#g=t=>{let e=t.detail?.requester;e!==this&&e?.isShaeEntElement&&e.ns===this.ns&&(t.stopPropagation(),e.#c(this))},this.ns$.onChange(t=>{this.componentContext$.set(N.get(t)),this.isConnected&&this.#l()}),this.#p(),this.token$.onChange(t=>{t==null?this.removeAttribute(X):this.getAttribute(X)!==t&&this.setAttribute(X,t)}),w(()=>{let t=this.viewComponent$.get();if(t){let e=m(t,N.ReRequestParentRoots,()=>this.#h()),r=t.context?.ns;return()=>{e(),t.destroy(),r&&r!==this.ns?I.get(r)?.sync():this.syncShadowObjects()}}}),this.token$.onChange(t=>{let e=this.viewComponent$.value;e&&(e.token=t,this.syncShadowObjects())})}#e;#s(){this.#e?.();let t=this.componentContext$.onChange(e=>{let r=this.token$.value,i=this.viewComponent$.value;i?i.context=e:e&&(i=new te(r,{context:e}),this.viewComponent$.set(i)),this.syncShadowObjects()});this.#e=()=>{t()}}#i(){this.#e?.(),this.#e=void 0}#r;#n;findShadowRootHost(){if(this.#n){this.#n=!1;let t=this;for(;t;){if(t.parentElement==null){let e=t.parentNode;e&&(this.#r=e.host);break}t=t.parentElement}}return this.#r}getParentNodeForObserver(){let t=this.parentNode;return t||(t.host??t)}connectedCallback(){this.#n=!0,this.addEventListener("slotchange",this.#f,{capture:!1,passive:!1}),this.addEventListener(ee,this.#g,{capture:!1,passive:!1}),this.#s(),Re(()=>this.#p()),this.componentContext==null&&this.componentContext$.set(N.get(this.ns)),this.#l(),this.componentContext?.dispatchReRequestParentRoots(),this.#o(),this.syncShadowObjects()}#o(){this.#a();let t=this.getParentNodeForObserver();t&&(this.#t=new MutationObserver((e,r)=>{for(let{target:i,removedNodes:n}of e)if(i===t){for(let o of n)if(o===this){this.#a(),this.onParentChanged(this.getParentNodeForObserver(),t);break}}}),this.#t.observe(t,{childList:!0,subtree:!1,attributes:!1}))}onParentChanged(t,e){this.#c(void 0),this.#l()}#a(){this.#t?.disconnect(),this.#t=void 0}attributeChangedCallback(t){super.attributeChangedCallback(t),t===X&&this.#p()}disconnectedCallback(){this.#n=!0,this.#a(),this.removeEventListener("slotchange",this.#f,{capture:!1}),this.removeEventListener(ee,this.#g,{capture:!1}),this.#c(void 0),this.componentContext$.set(void 0),this.syncShadowObjects(),this.#i()}#h(){this.isConnected&&(this.#c(void 0),this.#l())}#l(){this.dispatchEvent(new CustomEvent(ee,{bubbles:!0,composed:!0,detail:{requester:this}}))}#u;#c(t){if(this.entParentNode!==t)if(this.entParentNode&&this.entParentNode.removeEventListener(se,this.#d,{capture:!1}),this.entParentNode=t,this.entParentNode&&this.entParentNode.addEventListener(se,this.#d,{capture:!1,passive:!1}),this.#u?.(),this.#u=void 0,t){let e=w(()=>{let r=this.viewComponent$.get();if(r){let i=t.viewComponent$.get();r.parent=i&&i.context===r.context?i:void 0,r.parent==null&&queueMicrotask(()=>{this.#l()}),this.syncShadowObjects()}});this.#u=()=>e.destroy()}else{let e=this.viewComponent;e.parent&&(e.parent=void 0,this.syncShadowObjects())}}#f;#d;#g;#p(){if(this.hasAttribute(X)){let t=this.getAttribute(X)?.trim()||void 0;this.token$.set(t)}}};customElements.define(re,ue);var lr=s=>{let t=s.parentElement;for(;t;){if(t.isShaeEntElement)return t;t=t.parentElement}},ur=new Set(["string","text","number","bigint","float","int","integer","hex","hexadecimal","oct","octal","bin","binary","bool","boolean","[]","text[]","string[]","number[]","float[]","int[]","integer[]","hex[]","hexadecimal[]","oct[]","octal[]","bin[]","binary[]","bool[]","boolean[]","int8array","uint8array","uint8clampedarray","int16array","uint16array","int32array","uint32array","float32array","float64array","bigint64array","biguint64array","json"]),ce=class extends HTMLElement{static{this.observedAttributes=[oe,ae,he,le]}get name(){return this.name$.value}get value(){return this.valueOut$.value}set value(t){this.valueIn$.set(t)}get shouldTrim(){return this.shouldTrim$.value}get entNode(){return this.entNode$.value}set entNode(t){this.entNode$.set(t)}get viewComponent(){return this.viewComponent$.value}constructor(){super(),this.isShaeEntElement=!0,this.entNode$=f(),this.viewComponent$=f(),this.name$=f(),this.valueIn$=f(),this.valueOut$=f(),this.type$=f(),this.shouldTrim$=f(!0),this.logger=new A("ShaePropElement"),this.#t=()=>{this.entNode$.set(lr(this))},this.#e=()=>{queueMicrotask(()=>{this.isConnected||this.entNode$.set(void 0)})},this.#s=()=>{this.name$.set(this.getAttribute(oe)?.trim()??void 0)},this.#i=()=>{this.valueIn$.set(this.getAttribute(ae))},this.#r=()=>{let t=this.getAttribute(he)?.trim().toLowerCase();t&&!ur.has(t)&&(this.logger.isWarn&&this.logger.warn(`[${this.name}] unknown type "${t}"`,{shaeProp:this}),t=void 0),this.type$.set(t)},this.#n=()=>{this.shouldTrim$.set(!Lt(this,le))},this.entNode$.onChange(t=>{if(t){let e=_(t.viewComponent$,this.viewComponent$);return()=>{e.destroy()}}else this.viewComponent$.set(void 0)}),w(()=>{let t=this.viewComponent$.get();if(t){let e=this.name$.get();if(e){let r=this.valueOut$.get();this.logger.isDebug&&this.logger.debug(`[${this.name}] view-component set-property`,e,r,t.uuid,{viewComponent:t,shaeProp:this}),t.setProperty(e,r),this.isConnected&&this.entNode?.syncShadowObjects()}}}),w(()=>{let t=this.type$.get(),e=this.shouldTrim$.get(),r=this.valueIn$.get();if(e&&typeof r=="string"&&(r=r.trim()),r=r||void 0,r!=null&&typeof r=="string"&&t)switch(t){case"string":case"text":break;case"number":r=Number(r);break;case"bigint":r=BigInt(r);break;case"float":r=parseFloat(r);break;case"int":case"integer":r=parseInt(r,10);break;case"hex":case"hexadecimal":r=parseInt(r,16);break;case"oct":case"octal":r=parseInt(r,8);break;case"bin":case"binary":r=parseInt(r,2);break;case"bool":case"boolean":r=Rt.has(r.toLowerCase());break;case"[]":case"text[]":case"string[]":r=r.split(/\W+/);break;case"number[]":r=r.split(/\s+/).map(i=>Number(i));break;case"float[]":r=r.split(/\s+/).map(i=>parseFloat(i));break;case"int[]":case"integer[]":r=r.split(/\s+/).map(i=>parseInt(i));break;case"hex[]":case"hexadecimal[]":r=r.split(/\W+/).map(i=>parseInt(i,16));break;case"oct[]":case"octal[]":r=r.split(/\W+/).map(i=>parseInt(i,8));break;case"bin[]":case"binary[]":r=r.split(/\W+/).map(i=>parseInt(i,2));break;case"bool[]":case"boolean[]":r=r.split(/\W+/).map(i=>Rt.has(i.toLowerCase()));break;case"int8array":r=new Int8Array(r.split(/\W+/).map(i=>Number(i)));break;case"uint8array":r=new Uint8Array(r.split(/\W+/).map(i=>Number(i)));break;case"uint8clampedarray":r=new Uint8ClampedArray(r.split(/\W+/).map(i=>Number(i)));break;case"int16array":r=new Int16Array(r.split(/\W+/).map(i=>Number(i)));break;case"uint16array":r=new Uint16Array(r.split(/\W+/).map(i=>Number(i)));break;case"int32array":r=new Int32Array(r.split(/\W+/).map(i=>Number(i)));break;case"uint32array":r=new Uint32Array(r.split(/\W+/).map(i=>Number(i)));break;case"float32array":r=new Float32Array(r.split(/\s+/).map(i=>Number(i)));break;case"float64array":r=new Float64Array(r.split(/\s+/).map(i=>Number(i)));break;case"bigint64array":r=new BigInt64Array(r.split(/\W+/).map(i=>BigInt(i)));break;case"biguint64array":r=new BigUint64Array(r.split(/\W+/).map(i=>BigInt(i)));break;case"json":r=JSON.parse(r);break;default:this.logger.isWarn&&this.logger.warn(`[${this.name}] unknown type "${t}"`,{value:r,shaeProp:this})}this.valueOut$.set(r)}),O(()=>{this.#s(),this.#i(),this.#r(),this.#n()})}connectedCallback(){O(()=>{this.#t(),this.#s(),this.#i(),this.#r(),this.#n()})}attributeChangedCallback(t){switch(t){case oe:this.#s();break;case ae:this.#i();break;case he:this.#r();break;case le:this.#n();break}}disconnectedCallback(){this.#e()}#t;#e;#s;#i;#r;#n};customElements.whenDefined(re).then(()=>customElements.define(Ps,ce));var fe,We=null,mt=class{static{this.OnFrame=Symbol("onFrame")}#t=0;#e=0;constructor(){if(We)return We;S(this),We=this}start(t){if(t!=null)return xe(this)===0&&this.#i(),m(this,fe.OnFrame,t),this.#e++,()=>{this.stop(t)}}stop(t){E(this,fe.OnFrame,t),xe(this)===0&&this.#r()}#s=t=>{d(this,fe.OnFrame,t),this.#i()};#i(){this.#t=requestAnimationFrame(this.#s)}#r(){cancelAnimationFrame(this.#t),this.#t=0}};fe=mt;var bt="value",jt=(()=>{let s,t=[],e=[];return class{static{let i=typeof Symbol=="function"&&Symbol.metadata?Object.create(null):void 0;s=[At({name:bt})],kt(this,null,s,{kind:"accessor",name:"value",static:!1,private:!1,access:{has:n=>"value"in n,get:n=>n.value,set:(n,o)=>{n.value=o}},metadata:i},t,e),i&&Object.defineProperty(this,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})}static{this.Value=bt}#t;#e;#s;get value(){return this.#s}set value(i){this.#s=i}constructor(i){this.#t=[],this.#s=J(this,t,void 0),this.value$=J(this,e),U(this,bt),this.value$=T(this,bt),this.value$.onChange(n=>d(this,bt,n)),i&&this.add(...i)}add(...i){return this.#t.push(...i),this.#r(),this.#i(i)}unshift(...i){return this.#t.unshift(...i),this.#r(),this.#i(i)}remove(...i){this.#i(i)()}clear(){this.#t.length=0,this.#r()}dispose(){this.clear(),this.#e?.destroy(),this.#e=void 0,H(this,bt),E(this),this.value$.destroy(),Et(this)}#i(i){return()=>{for(let n of i){let o=this.#t.indexOf(n);o!==-1&&this.#t.splice(o,1)}this.#r()}}#r(){this.#e?.destroy(),this.#t.length===0?(this.#e=void 0,this.value=void 0):(this.#e=w(()=>{let i;for(let n of this.#t){let o=ht(n);if(o!=null){i=o;break}}this.value=i},this.#t),this.#e.run())}}})();var ze="onCreate",tt="onDestroy",js="onParentChanged",_s="onViewEvent";var Ue=new Map,Ve=!1,cr=(s,t)=>{Ue.set(s,t),Ve||(Ve=!0,queueMicrotask(()=>{Ve=!1;let e=Array.from(Ue.entries());Ue.clear();for(let[r,i]of e)r.set(i)}))},de=class{#t;#e;#s=new Jt;#i=new Map;#r=new Map;#n;#o;#a=new Set;#h=[];#l=0;get kernel(){return this.#t}get uuid(){return this.#e}get order(){return this.#l}set order(t){this.#l!==t&&(this.#l=t,this.#n&&this.parent.resortChildren())}get parentUuid(){return this.#n||void 0}set parentUuid(t){this.#n!==t&&(this.removeFromParent(),this.#n=t||void 0,this.#o=t?this.#t.getEntity(t):void 0,this.#o&&this.#o.addChild(this))}get parent(){return!this.#o&&this.#n&&(this.#o=this.#t.getEntity(this.#n)),this.#o}set parent(t){this.parentUuid=t?.uuid}get hasParent(){return!!this.#n}get children(){return this.#h}constructor(t,e){this.#t=t,this.#e=e,C(this,tt,z.Min,this)}traverse(t){t(this);for(let e of this.#h)e.traverse(t)}onDestroy(){this.#s.clear(),E(this);for(let t of this.#r.values())t.cleanup(),t.signal.destroy();this.#r.clear();for(let t of this.#i.values())t.context.set(void 0),t.unsubscribePathValue(),t.unsubscribeFromParent?.(),t.valuePath.dispose(),t.inherited.destroy(),t.provide.destroy(),t.context.destroy();this.#n=void 0,this.#o=void 0,this.#a.clear(),this.#h.length=0}addChild(t){if(this.#h.length===0){this.#a.add(t.uuid),this.#h.push(t);return}if(this.#a.has(t.uuid))throw new Error(`child with uuid: ${t.uuid} already exists! parentUuid: ${this.uuid}`);this.#a.add(t.uuid),this.#h.push(t),this.resortChildren();for(let[,e]of t.#i)t.#d(e)}resortChildren(){this.#h.sort((t,e)=>t.order-e.order)}removeChild(t){this.#a.has(t.uuid)&&(this.#a.delete(t.uuid),this.#h.splice(this.#h.indexOf(t),1))}removeFromParent(){if(this.#o){this.#o.removeChild(this),this.#o=void 0,this.#n=void 0;for(let[,t]of this.#i)t.unsubscribeFromParent&&(t.unsubscribeFromParent(),t.unsubscribeFromParent=void 0)}}reSubscribeToParentContexts(){for(let[,t]of this.#i)this.#d(t)}dispatchMessageToView(t,e,r,i=!1){this.#t.dispatchMessageToView({uuid:this.#e,type:t,data:e,transferables:r,traverseChildren:i})}dispatchViewEvents(t){for(let{type:e,data:r}of t)d(this,_s,e,r)}dispatchViewEvent(t,e){this.dispatchViewEvents([{type:t,data:e}])}#u(t){return this.#s.get(t)}getPropertyReader(t){return this.#u(t).get}getPropertyWriter(t){return this.#u(t).set}setProperties(t){this.clearTruthyPropsCache(),O(()=>{for(let[e,r]of t)this.setProperty(e,r)})}setProperty(t,e){this.getPropertyWriter(t)(e)}getProperty(t){return ht(this.getPropertyReader(t))}propKeys(){return Array.from(this.#s.keys())}propEntries(){return Array.from(this.#s.entries()).map(([t,e])=>[t,e.value])}#c;clearTruthyPropsCache(){this.#c=void 0}truthyProps(){if(this.#c)return this.#c.size?this.#c:void 0;let t=new Set;for(let[e,r]of this.#s.entries())if(typeof e=="string"){let i=r.value;i!=null&&i!==!1&&i!==""&&t.add(e)}return this.#c=t,t.size?t:void 0}hasContext(t){return this.#i.has(t)}useContext(t){return this.#f(t).context.get}useParentContext(t){return this.#f(t).inherited.get}provideContext(t){return this.#f(t).provide}provideGlobalContext(t){if(this.#r.has(t))return this.#r.get(t).signal;let e=this.#t.findOrCreateRootContext(t),r=f(),i=e.add(r);return this.#r.set(t,{cleanup:i,signal:r}),r}#f(t){if(this.#i.has(t))return this.#i.get(t);let e=f(),r=f(),i=f(),n=new jt([r,e]),o=m(n,jt.Value,a=>{cr(i,a)}),h={name:t,inherited:e,provide:r,context:i,valuePath:n,unsubscribePathValue:o};return this.#i.set(t,h),this.#d(h),h}#d(t){if(t.unsubscribeFromParent?.(),t.unsubscribeFromParent=void 0,this.parent){let e=this.parent.#f(t.name),r=_(e.context,t.inherited);t.unsubscribeFromParent=r.destroy.bind(r)}else{let e=this.#t.findOrCreateRootContext(t.name),r=_(e.value$,t.inherited);t.unsubscribeFromParent=r.destroy.bind(r)}}};var Ns=s=>{let t=s.split("@").map(e=>e.trim());if(t.length===2&&t[1])return t[0]?{key:`${t[0]}@${t[1]}`,prop:t[1],token:t[0]}:{key:t[1],prop:t[1]}},pe=(s,t)=>{for(let e of t)s.add(e)},fr=(s,t)=>{if(s!=null)for(let e of s.constructors)t.add(e)},_t=class{static get(t){return t??dr}#t=new Map;#e=new Map;#s=new Map;define(t,e){this.#t.has(t)?Ss(this.#t.get(t).constructors,e):this.#t.set(t,{token:t,constructors:[e]})}appendRoute(t,e){let r=Ns(t);r?this.#s.has(r.key)?pe(this.#s.get(r.key).routes,e):this.#s.set(r.key,{routes:new Set(e),token:r.token}):this.#e.has(t)?pe(this.#e.get(t),e):this.#e.set(t,new Set(e))}clearRoute(t){let e=Ns(t);e?this.#s.delete(e.key):this.#e.delete(t)}findTokensByRoute(t,e){let r=new Set([t]),i=this.#e.has(t)?[...this.#e.get(t)]:[];for(;i.length;){let n=i.shift();r.has(n)||(r.add(n),this.#e.has(n)&&i.push(...Array.from(this.#e.get(n)).filter(o=>!r.has(o))))}if(e){for(let o of e)this.#s.has(o)&&pe(r,this.#s.get(o).routes);let n;do{n=r.size;for(let o of new Set(r))for(let h of e){let a=`${o}@${h}`;this.#s.has(a)&&pe(r,this.#s.get(a).routes)}}while(n!==r.size)}return r}findConstructors(t,e){let r=this.findTokensByRoute(t,e),i=new Set;for(let n of r)fr(this.#t.get(n),i);return i.size>0?Array.from(i):void 0}hasToken(t){return this.#t.has(t)}hasRoute(t){return this.#e.has(t)}clear(){this.#t.clear(),this.#e.clear()}},dr=new _t;var q;(function(s){s[s.CreateAndDestroy=0]="CreateAndDestroy",s[s.JustCreate=1]="JustCreate",s[s.DestroyOnly=2]="DestroyOnly"})(q||(q={}));var Ds=s=>s.displayName||s.name,ge=class{#t;#e;#s;#i;#r;#n;constructor(t){this.logger=new A("Kernel"),this.#t=new Map,this.#e=new Set,this.#r=!0,this.#n=new Map,S(this),this.registry=_t.get(t)}getEntity(t){let e=this.#t.get(t)?.entity;if(!e)throw new Error(`entity with uuid "${t}" not found!`);return e}hasEntity(t){return this.#t.has(t)}traverseLevelOrderBFS(t=!1){if(this.#r){let e=new Map,r=(i,n)=>{let o=this.getEntity(i);e.has(n)?e.get(n).push(o):e.set(n,[o]);for(let h of o.children)r(h.uuid,n+1)};this.#e.forEach(i=>r(i,0)),this.#s=Array.from(e.entries()).sort((i,n)=>i[0]-n[0]).map(([,i])=>i).flat(),this.#i=this.#s.slice().reverse(),this.#r=!1}return t?this.#i:this.#s}getEntityGraph(){return Array.from(this.#e).map(t=>this.getEntityGraphNode(t))}getEntityGraphNode(t){if(!this.#t.has(t))return;let{token:e,entity:r}=this.#t.get(t);return{token:e,entity:r,props:Object.fromEntries(r.propEntries()),children:r.children.map(i=>this.getEntityGraphNode(i.uuid))}}upgradeEntities(){let t=new Map;for(let e of this.traverseLevelOrderBFS(!0))t.set(e.uuid,this.updateShadowObjects(e.uuid,q.DestroyOnly));for(let e of this.traverseLevelOrderBFS(!1))this.updateShadowObjects(e.uuid,q.JustCreate,t.get(e.uuid));t.clear()}run(t){this.logger.isDebug&&this.logger.debug("sync",t),O(()=>{for(let e of t.changeTrail)this.parse(e)})}parse(t){switch(t.type){case b.CreateEntities:this.createEntity(t.uuid,t.token,t.parentUuid,t.order,t.properties),this.#r=!0;break;case b.DestroyEntities:this.destroyEntity(t.uuid),this.#r=!0;break;case b.SetParent:this.setParent(t.uuid,t.parentUuid,t.order),this.#r=!0;break;case b.UpdateOrder:this.updateOrder(t.uuid,t.order),this.#r=!0;break;case b.ChangeProperties:this.changeProperties(t.uuid,t.properties);break;case b.ChangeToken:this.changeToken(t.uuid,t.token);break;case b.SendEvents:this.dispatchEventsToEntity(t.uuid,t.events);break}}createEntity(t,e,r,i=0,n){let o=new de(this,t);o.order=i;let h={token:e,entity:o,usedConstructors:new Map};this.#t.set(t,h),r&&(o.parentUuid=r),o.hasParent||this.#e.add(t),n&&o.setProperties(n),this.createShadowObjects(t)}destroyEntity(t){if(!this.#t.has(t))return;let{entity:e,usedConstructors:r}=this.#t.get(t);e.removeFromParent(),d(e,tt,this),r.clear(),this.#t.delete(e.uuid),this.#e.delete(e.uuid)}setParent(t,e,r=0){let i=this.getEntity(t);i.parentUuid===e&&i.order===r||(i.removeFromParent(),i.order=r,i.parentUuid=e,i.hasParent?this.#e.delete(t):this.#e.add(t),i.reSubscribeToParentContexts(),queueMicrotask(()=>{this.logger.isDebug&&this.logger.debug("entity.onParentChanged",{uuid:t,parentUuid:e,order:r,entity:i}),d(i,js,i)}))}updateOrder(t,e){this.getEntity(t).order=e}dispatchEventsToEntity(t,e){this.getEntity(t)?.dispatchViewEvents(e)}changeProperties(t,e){this.getEntity(t).setProperties(e),this.updateShadowObjects(t)}changeToken(t,e){if(!this.#t.has(t))return;let r=this.#t.get(t);r.token!==e&&(r.token=e,this.updateShadowObjects(t))}dispatchMessageToView(t){queueMicrotask(()=>{d(this,yt,t)})}updateShadowObjects(t,e=q.CreateAndDestroy,r){let i=this.#t.get(t);r??=new Set(this.registry.findConstructors(i.token,i.entity.truthyProps()));let n=e===q.CreateAndDestroy||e===q.DestroyOnly,o=e===q.CreateAndDestroy||e===q.JustCreate;if(n){for(let[h,a]of i.usedConstructors)if(!r.has(h)){i.usedConstructors.delete(h);for(let c of a)this.destroyShadowObject(c,i.entity)}}if(o)for(let h of r)i.usedConstructors.has(h)||this.constructShadowObject(h,i);return r}constructShadowObject(t,e){let r=new Set,i=new Set,n=new Map,o=new Map,h=new Map,a=new Map,c=new Map,p=S(new t({entity:e.entity,provideContext(l,u,g){let y=h.get(l);if(y==null){y=f(u,g?{compare:g}:void 0);let P=_(y,e.entity.provideContext(l));i.add(P.destroy.bind(P)),h.set(l,y)}return y},provideGlobalContext(l,u,g){let y=a.get(l);if(y==null){y=f(u,g?{compare:g}:void 0);let P=_(y,e.entity.provideGlobalContext(l));i.add(P.destroy.bind(P)),a.set(l,y)}return y},useContext(l,u){let g=n.get(l);if(g===void 0){g=f(void 0,u?{compare:u}:void 0).get,n.set(l,g);let y=_(e.entity.useContext(l),g);i.add(y.destroy.bind(y))}return g},useParentContext(l,u){let g=o.get(l);if(g===void 0){g=f(void 0,u?{compare:u}:void 0).get,o.set(l,g);let y=_(e.entity.useParentContext(l),g);i.add(y.destroy.bind(y))}return g},useProperty(l,u){let g=c.get(l);if(g===void 0){g=f(void 0,u?{compare:u}:void 0).get,c.set(l,g);let y=_(e.entity.getPropertyReader(l),g);i.add(y.destroy.bind(y))}return g},createEffect(...l){let u=w(...l);return i.add(u.destroy),u},createSignal(...l){let u=f(...l);return i.add(()=>{x(u)}),u},createMemo(...l){let u=Le(...l);return i.add(()=>{x(u)}),u},on(...l){let u=m(...l);return i.add(u),u},once(...l){let u=C(...l);return i.add(u),u},onDestroy(l){r.add(l)}}));return this.logger.isInfo&&this.logger.info("create shadow-object",Ds(t),{shadowObject:p,entity:e.entity}),C(e.entity,tt,z.Low,()=>{this.logger.isInfo&&this.logger.info("destroy shadow-object",Ds(t),{shadowObject:p,entity:e.entity});for(let u of r)u();for(let u of i)u();for(let u of n.values())x(u);for(let u of o.values())x(u);for(let u of c.values())x(u);for(let u of h.values())x(u);for(let u of a.values())x(u);r.clear(),i.clear(),n.clear(),o.clear(),c.clear(),h.clear(),a.clear();let l=e.usedConstructors.get(t);l&&(l.delete(p),l.size===0&&e.usedConstructors.delete(t))}),e.usedConstructors.has(t)?e.usedConstructors.get(t).add(p):e.usedConstructors.set(t,new Set([p])),this.attachShadowObject(p,e.entity),p}createShadowObjects(t){let e=this.#t.get(t);this.registry.findConstructors(e.token,e.entity.truthyProps())?.forEach(r=>{this.constructShadowObject(r,e)})}findShadowObjects(t){if(!this.#t.has(t))return[];let{usedConstructors:e}=this.#t.get(t);return Array.from(new Set(Array.from(e.values()).map(r=>Array.from(r)).flat()))}attachShadowObject(t,e){m(e,t),typeof t[ze]=="function"&&t[ze](e)}destroyShadowObject(t,e){typeof t[tt]=="function"&&t[tt](e),d(t,tt,e),E(e,t)}findOrCreateRootContext(t){let e=this.#n.get(t);return e||(e=new jt,this.#n.set(t,e)),e}destroy(){for(let t of this.#n.values())t.dispose();this.#n.clear();for(let t of this.traverseLevelOrderBFS().reverse())this.destroyEntity(t.uuid)}};async function Ge(s,t,e,r=!0){if(e.has(t)){console.warn("importModule: skipping already imported module",t);return}else e.add(t);t.extends&&await Promise.all(t.extends.map(n=>Ge(s,n,e,!1)));let{registry:i}=s;if(t.define)for(let[n,o]of Object.entries(t.define))i.define(n,o);if(t.routes)for(let[n,o]of Object.entries(t.routes))i.appendRoute(n,o);await(t.initialize?.({define:(n,o)=>i.define(n,o),kernel:s,registry:i})??Promise.resolve()),r&&s.upgradeEntities()}var ye=s=>(typeof s=="string"&&(s=new URL(s,globalThis.location.href)),s.toString());function $s(s){return s.map(t=>{if(t.transferables&&t.transferables.length>0){let{transferables:e,...r}=t;return structuredClone(r,{transfer:e})}else return structuredClone(t)})}var me=class{#t;get registry(){return this.kernel.registry}constructor(t){this.#t=new Set,this.isLocalEnv=!0,this.disableStructuredClone=!1,this.kernel=new ge(t),m(this.kernel,yt,e=>{if(this.onMessageToView!=null){let{type:r,uuid:i,traverseChildren:n}=e,o=structuredClone(e.data,{transfer:e.transferables});this.onMessageToView({type:r,uuid:i,data:o,traverseChildren:n})}})}start(){return Promise.resolve()}applyChangeTrail(t,e){let r={changeTrail:this.disableStructuredClone?t:$s(t)},i;try{this.kernel.run(r),i=Promise.resolve()}catch(n){i=Promise.reject(n)}return i}async importScript(t){let e=await import(ye(t));e[je]&&await this.importModule(e[je])}async importModule(t){return Ge(this.kernel,t,this.#t)}destroy(){this.kernel.destroy(),this.registry.clear(),this.#t.clear()}};function Be(s){let t=new Blob([s],{type:"text/javascript"}),e=URL.createObjectURL(t),r=new Worker(e);return URL.revokeObjectURL(e),r}function qe(){return Be('var Fs=Object.defineProperty;var se=Object.getOwnPropertySymbols;var Ve=Object.prototype.hasOwnProperty,$e=Object.prototype.propertyIsEnumerable;var Vs=(e,t)=>(t=Symbol[e])?t:Symbol.for("Symbol."+e),Ie=e=>{throw TypeError(e)};var ge=(e,t,s)=>t in e?Fs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,ye=(e,t)=>{for(var s in t||(t={}))Ve.call(t,s)&&ge(e,s,t[s]);if(se)for(var s of se(t))$e.call(t,s)&&ge(e,s,t[s]);return e};var Ge=(e,t)=>{var s={};for(var i in e)Ve.call(e,i)&&t.indexOf(i)<0&&(s[i]=e[i]);if(e!=null&&se)for(var i of se(e))t.indexOf(i)<0&&$e.call(e,i)&&(s[i]=e[i]);return s};var u=(e,t,s)=>ge(e,typeof t!="symbol"?t+"":t,s),pe=(e,t,s)=>t.has(e)||Ie("Cannot "+s);var r=(e,t,s)=>(pe(e,t,"read from private field"),s?s.call(e):t.get(e)),c=(e,t,s)=>t.has(e)?Ie("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,s),f=(e,t,s,i)=>(pe(e,t,"write to private field"),i?i.call(e,s):t.set(e,s),s),m=(e,t,s)=>(pe(e,t,"access private method"),s);var Ue=(e,t,s,i)=>({set _(a){f(e,t,a,s)},get _(){return r(e,t,i)}});var ve=function(e,t){this[0]=e,this[1]=t},Be=(e,t,s)=>{var i=(n,l,y,b)=>{try{var d=s[n](l),h=(l=d.value)instanceof ve,g=d.done;Promise.resolve(h?l[0]:l).then(p=>h?i(n==="return"?n:"next",l[1]?{done:p.done,value:p.value}:p,y,b):y({value:p,done:g})).catch(p=>i("throw",p,y,b))}catch(p){b(p)}},a=n=>o[n]=l=>new Promise((y,b)=>i(n,l,y,b)),o={};return s=s.apply(e,t),o[Vs("asyncIterator")]=()=>o,a("next"),a("throw"),a("return"),o};var We;(function(e){e[e.StructuralChanges=1]="StructuralChanges",e[e.ContentUpdates=2]="ContentUpdates",e[e.Removal=3]="Removal"})(We||(We={}));var X;(function(e){e[e.CreateEntities=1]="CreateEntities",e[e.DestroyEntities=2]="DestroyEntities",e[e.SetParent=3]="SetParent",e[e.UpdateOrder=4]="UpdateOrder",e[e.ChangeProperties=5]="ChangeProperties",e[e.ChangeToken=6]="ChangeToken",e[e.SendEvents=7]="SendEvents"})(X||(X={}));var Ui=Symbol.for("ShadowEntsGlobalNS"),$s="configure",Is="changeTrail",Gs="destroy",Us="loaded",qe="appliedChangeTrail",be="importedModule",Bs="destroyed",Ae="messageToView",me="shadowObjects",N="ConsoleLogger",D=`${N}Storage`,ns,os,hs,Ws=!!((hs=(os=(ns=globalThis.location)==null?void 0:ns.host)==null?void 0:os.startsWith("localhost"))!=null&&hs),Jt="localStorage"in globalThis,ie=Symbol.for(N),Je=!1,Ke=e=>{if(typeof e=="boolean")return e;switch(e.toLowerCase()){case"true":case"yes":case"on":return!0;default:return!1}},Oe=e=>[Jt?N:void 0,...Array.isArray(e)?e:[e]].filter(Boolean).join(".");function we(e,t=void 0,s){var o;let i=Oe(e),a=Jt?localStorage.getItem(i):(o=globalThis[D])==null?void 0:o[i];return a!=null?t(a):s}function Vt(e,t){Jt?localStorage.setItem(Oe(e),t):(globalThis[D]==null&&(globalThis[D]={},console.debug(`${N}: Initialize`,{[D]:globalThis[D]})),globalThis[D][Oe(e)]=t)}var vt,It,v,qs=(v=class{constructor(t){c(this,vt);this.enable=!0,this.namespace=(t||"").trim()||N,Je||(v.loadConfig(),Je=!0);let s=[this.namespace,"enable"];this.enable=we(s,Ke,this.enable),Vt(s,Jt?this.enable?"true":"false":this.enable)}static get isEnabled(){return v.sharedConfig.enable}static get isDebug(){return v.sharedConfig.enable&&v.sharedConfig.debug}static loadConfig(){var t,s,i;Jt?(["enable","debug","info","warn"].forEach(a=>{this.sharedConfig[a]=we(a,Ke,this.sharedConfig[a])}),["debug","info","warn","error"].forEach(a=>{this.sharedStyles[a]=we(["styles",a],void 0,this.sharedStyles[a])}),v.isDebug&&console.debug(`${N}: Load config from localStorage`,v.sharedConfig),(t=globalThis[N])!=null&&t[ie]||((s=globalThis[N])!=null||(globalThis[N]={[ie]:!0,get enable(){return v.sharedConfig.enable},set enable(a){v.sharedConfig.enable=a,Vt("enable",a?"true":"false")},get debug(){return v.sharedConfig.debug},set debug(a){v.sharedConfig.debug=a,Vt("debug",a?"true":"false")},get info(){return v.sharedConfig.info},set info(a){v.sharedConfig.info=a,Vt("info",a?"true":"false")},get warn(){return v.sharedConfig.warn},set warn(a){v.sharedConfig.warn=a,Vt("warn",a?"true":"false")}}))):(i=globalThis[D])!=null&&i[ie]||(globalThis[D]=ye(ye({[ie]:!0},v.sharedConfig),globalThis[D]),v.sharedConfig=globalThis[D],v.isDebug&&console.debug(`${N}: Load config from ${D}`,globalThis[D]))}get isEnabled(){return this.enable&&v.sharedConfig.enable}get isDebug(){return this.isEnabled&&v.sharedConfig.debug}get isInfo(){return this.isEnabled&&v.sharedConfig.info}get isWarn(){return this.isEnabled&&v.sharedConfig.warn}debug(...t){m(this,vt,It).call(this,"debug",v.sharedStyles.debug,t)}info(...t){m(this,vt,It).call(this,"info",v.sharedStyles.info,t)}warn(...t){m(this,vt,It).call(this,"warn",v.sharedStyles.warn,t)}error(...t){m(this,vt,It).call(this,"error",v.sharedStyles.error,t)}},vt=new WeakSet,It=function(t,s,i){console[t](`%c${this.namespace}`,s,...i)},v.sharedConfig={enable:Ws,debug:!1,info:!0,warn:!0,"styles.debug":"color: #111; background: #999; display: inline-block; padding: 0 0.25em; margin: 0; border-radius: 0.25em","styles.info":"color: #020; background: #8a8; display: inline-block; padding: 0 0.25em; margin: 0; border-radius: 0.25em","styles.warn":"color: #fa0; background: #a98; display: inline-block; padding: 0 0.25em; margin: 0; border-radius: 0.25em","styles.error":"color: #ff0; background: #a00; display: inline-block; padding: 0 0.25em; margin: 0; border-radius: 0.25em"},v.sharedStyles={get debug(){return v.sharedConfig["styles.debug"]},set debug(t){v.sharedConfig["styles.debug"]=t},get info(){return v.sharedConfig["styles.info"]},set info(t){v.sharedConfig["styles.info"]=t},get warn(){return v.sharedConfig["styles.warn"]},set warn(t){v.sharedConfig["styles.warn"]=t},get error(){return v.sharedConfig["styles.error"]},set error(t){v.sharedConfig["styles.error"]=t}},v),kt="*",vs=1,xe=2,Re=4,ft=Symbol.for("eventize"),Js="[eventize]",le=e=>e===kt,bs=e=>{switch(typeof e){case"string":case"symbol":return!0;default:return!1}},ms=typeof console<"u",Ks=ms?console[console.warn?"warn":"log"].bind(console,Js):()=>{},Ys=(e,t,s)=>(Object.defineProperty(e,t,{value:s,configurable:!0}),e),Hs=0,ws=class{constructor(){u(this,"events",new Map);u(this,"eventNames",new Set)}static publish(e){e.sort((t,s)=>t.order-s.order).forEach(t=>t.emit())}add(e){Array.isArray(e)?e.forEach(t=>this.eventNames.add(t)):this.eventNames.add(e)}remove(e){Array.isArray(e)?e.forEach(t=>this.eventNames.delete(t)):this.eventNames.delete(e),this.clear(e)}clear(e){Array.isArray(e)?e.forEach(t=>this.events.delete(t)):this.events.delete(e)}retain(e,t){this.eventNames.has(e)&&this.events.set(e,{args:t,order:Hs++})}isKnown(e){return this.eventNames.has(e)}emit(e,t,s=[]){if(le(e))this.eventNames.forEach(i=>this.emit(i,t,s));else if(this.events.has(e)){let{order:i,args:a}=this.events.get(e);s.push({order:i,emit:()=>t.apply(e,a)})}return s}},Pe=(e,t,s,i)=>{if(typeof t=="function"){let a=t.apply(e,s);a!=null&&(i==null||i(a))}},Qs=(e,t,s,i)=>Pe(t,t.emit,[e].concat(s),i),Xs=e=>{switch(typeof e){case"function":return vs;case"string":case"symbol":return xe;case"object":return Re}},Zs=0,_s=()=>++Zs,Cs=class{constructor(e,t,s,i=null){u(this,"id");u(this,"eventName");u(this,"isCatchEmAll");u(this,"priority");u(this,"listener");u(this,"listenerObject");u(this,"listenerType");u(this,"callAfterApply");u(this,"isRemoved");u(this,"refCount");this.id=_s(),this.eventName=e,this.isCatchEmAll=le(e),this.listener=s,this.listenerObject=i,this.priority=t,this.listenerType=Xs(s),this.callAfterApply=void 0,this.isRemoved=!1,this.refCount=1}isEqual(e,t=null){if(e===this)return!0;let s=typeof e;return s==="number"&&e===this.id?!0:t===null&&(s==="string"||s==="symbol")?e===kt||e===this.eventName:this.listener===e&&this.listenerObject===t}apply(e,t,s){if(this.isRemoved)return;let{listener:i,listenerObject:a}=this;switch(this.listenerType){case vs:Pe(a,i,t,s),this.callAfterApply&&this.callAfterApply();break;case xe:Pe(a,a[i],t,s),this.callAfterApply&&this.callAfterApply();break;case Re:{let o=i[e];if(this.isCatchEmAll||this.eventName===e){if(typeof o=="function"){let n=o.apply(i,t);n!=null&&(s==null||s(n))}else Qs(e,i,t,s);this.callAfterApply&&this.callAfterApply()}break}}}},ti=(e,t)=>e.priority!==t.priority?t.priority-e.priority:e.id-t.id,Ye=e=>e==null?void 0:e.slice(0),He=(e,t)=>{let s=e.indexOf(t);s>-1&&e.splice(s,1)},ei=e=>e===Re||e===xe,Me=(e,t,s)=>{let i=e.findIndex(a=>a.isEqual(t,s));i>-1&&(e[i].isRemoved=!0,e.splice(i,1))},re=(e,t,s)=>{let i=[];for(let a of e)(t==null&&a.listenerObject===s||a.eventName===t&&a.listener===s)&&i.push(a);for(let a of i)Me(e,a,void 0)},Ce=e=>{e&&(e.forEach(t=>{t.isRemoved=!0}),e.length=0)},si=(e,t)=>e.listenerType===t.listenerType?e.priority===t.priority&&e.eventName===t.eventName&&e.listenerObject===t.listenerObject&&e.listener===t.listener:!1,ii=(e,t)=>{if(ei(e.listenerType))return t.find(s=>si(e,s))},ri=(e,t)=>{let s=ii(e,t);return s?(s.refCount+=1,s):(t.push(e),t.sort(ti),e)},ai=class{constructor(){u(this,"namedListeners");u(this,"catchEmAllListeners");u(this,"getListenersForEventName",e=>{let t=this.namedListeners.get(e);return t||(t=[],this.namedListeners.set(e,t)),t});this.namedListeners=new Map,this.catchEmAllListeners=[]}add(e){return ri(e,e.isCatchEmAll?this.catchEmAllListeners:this.getListenersForEventName(e.eventName))}remove(e,t,s=!1){t==null&&Array.isArray(e)?e.forEach(i=>this.remove(i,null,s)):e==null||t==null&&le(e)?this.removeAllListeners():t==null&&bs(e)?Ce(this.namedListeners.get(e)):e instanceof Cs?e.isRemoved||(e.refCount-=1,e.refCount<1&&(e.isRemoved=!0,this.namedListeners.forEach(i=>He(i,e)),He(this.catchEmAllListeners,e))):s?le(e)&&typeof e=="object"?re(this.catchEmAllListeners,kt,e):this.namedListeners.forEach(i=>re(i,e,t)):(this.namedListeners.forEach(i=>{Me(i,e,t),typeof e=="object"&&re(i,void 0,e)}),Me(this.catchEmAllListeners,e,t),typeof e=="object"&&re(this.catchEmAllListeners,void 0,e))}removeAllListeners(){this.namedListeners.forEach(e=>Ce(e)),this.namedListeners.clear(),Ce(this.catchEmAllListeners)}forEach(e,t){let s=Ye(this.catchEmAllListeners),i=Ye(this.namedListeners.get(e));if(e===kt||!i||i.length===0)s.forEach(t);else if(s.length===0)i.forEach(t);else{let a=i.length,o=s.length,n=0,l=0;for(;n<a||l<o;){if(n<a){let y=i[n];if(l>=o||y.priority>=s[l].priority){t(y),++n;continue}}l<o&&(t(s[l]),++l)}}}getSubscriptionCount(){let e=this.catchEmAllListeners.length;for(let t of this.namedListeners.values())e+=t.length;return e}},zt=e=>!!(e&&e[ft]);function Kt(e){if(zt(e))return e;let t=new ai,s=new ws;return Ys(e,ft,{keeper:s,store:t}),e}var fe={Max:Number.POSITIVE_INFINITY,AAA:1e9,BB:1e6,C:1e3,Default:0,Low:-1e4,Min:Number.NEGATIVE_INFINITY},ni=(e,t,s,i,a,o,n)=>{let l=e.add(new Cs(s,i,a,o));return t.emit(s,l,n),l},oi=(e,t,s,i)=>{let a=s.length,o=typeof s[0],n,l,y,b;if(a>=2&&a<=3&&o==="number"?(n=kt,[l,y,b]=s):a>=3&&a<=4&&typeof s[1]=="number"?[n,l,y,b]=s:(l=fe.Default,o==="string"||o==="symbol"||Array.isArray(s[0])?[n,y,b]=s:(n=kt,[y,b]=s)),!y&&ms)throw Ks("called with insufficient arguments!",s),"subscribeTo() called with insufficient arguments!";let d=h=>g=>ni(e,t,g,h,y,b,i);return Array.isArray(n)?n.map(h=>Array.isArray(h)?d(h[1])(h[0]):d(l)(h)):d(l)(n)},Es=(e,t,s)=>{let i=[],a=oi(e,t,s,i);return ws.publish(i),a},Qe=e=>t=>{t.callAfterApply=()=>{e==null||e()}},Ss=(e,t)=>Object.assign(()=>z(e,t),Array.isArray(t)?{listeners:t}:{listener:t}),ks=(e,t,s,i)=>{let{store:a,keeper:o}=e[ft];Array.isArray(t)?t.forEach(n=>{a.forEach(n,l=>l.apply(n,s,i)),o.retain(n,s)}):t!==kt&&(a.forEach(t,n=>{n.apply(t,s,i)}),o.retain(t,s))},Q=(e,...t)=>{let s=Kt(e),{store:i,keeper:a}=s[ft];return Ss(s,Es(i,a,t))},O=(e,...t)=>{let s=Kt(e),{store:i,keeper:a}=s[ft],o=Es(i,a,t),n=Ss(s,o),l=!1,y=()=>{l||(n(),l=!0)};return Array.isArray(o)?o.forEach(Qe(y)):Qe(y)(o),y},hi=(e,t)=>new Promise(s=>{O(e,t,s)}),z=(e,t,s)=>{if(!zt(e))throw new Error("object is not eventized");let{store:i,keeper:a}=e[ft],o=typeof t,n=s!=null&&(o==="string"||o==="symbol");i.remove(t,s,n),Array.isArray(t)?a.remove(t.filter(l=>typeof l=="string")):bs(t)&&a.remove(t)},w=(e,t,...s)=>{if(!zt(e))throw new Error("object is not eventized");ks(e,t,s)},li=(e,t,...s)=>{if(!zt(e))throw new Error("object is not eventized");let i=[];return ks(e,t,s,a=>{i.push(a)}),i=i.map(a=>Array.isArray(a)?Promise.all(a):Promise.resolve(a)),i.length>0?Promise.all(i):Promise.resolve()},Ne=(e,t)=>{let s=Kt(e),{keeper:i}=s[ft];i.add(t)},de=(e,t)=>{if(!zt(e))throw new Error("object is not eventized");let{keeper:s}=e[ft];s.clear(t)},it=(()=>{let e=(t={})=>Kt(t);return e.inject=(t={})=>(t=Kt(t),Object.assign(t,{on:(...s)=>Q(t,...s),once:(...s)=>O(t,...s),onceAsync:s=>hi(t,s),off:(s,i)=>z(t,s,i),emit:(s,...i)=>w(t,s,...i),emitAsync:(s,...i)=>li(t,s,...i),retain:s=>Ne(t,s),retainClear:s=>de(t,s)}),t),e.is=zt,e})(),H=Symbol.for("signal"),Ot=Symbol.for("effect"),Xe=Symbol.for("destroySignal"),Ze=Symbol.for("createEffect"),di=Symbol.for("destroyEffect"),$t="value",_e="mute",ts="unmute",Wt="destroy",qt=Symbol.for("recall"),ue=it(),Nt=it(),yt=it(),As=it(),ke,Gt=(ke=class{constructor(){u(this,"delayedEffects",[])}batch(e,t){let s=this.delayedEffects.length;for(let i=0;i<s;i++){let[a,o]=this.delayedEffects[i];if(!(a>t))if(a===t){o.add(e);return}else{this.delayedEffects.splice(i,0,[t,new Set([e])]);return}}this.delayedEffects.push([t,new Set([e])])}run(){let e=new Set,t=[Q(yt,(i,a)=>{a===qt&&e.add(i)}),Q(As,i=>{e.add(i)})],s=this.delayedEffects.flatMap(([,i])=>Array.from(i));for(let i of s)e.has(i)||w(yt,i,i,qt);t.forEach(i=>{i()})}},u(ke,"current"),ke),ui=()=>Gt.current;function ce(e){let t=Gt.current;t?t=void 0:t=Gt.current=new Gt;try{e()}finally{t&&(Gt.current=void 0,t.run())}}var ci=0;function Os(){return ci>0}var ls,fi=(ls=Ot,class{constructor(e){u(this,ls);u(this,"run",()=>{var e;return(e=this[Ot])==null?void 0:e.run()});u(this,"destroy",()=>{var e;(e=this[Ot])==null||e.destroy(),this[Ot]=void 0});this[Ot]=e,O(e,js.Destroy,()=>{this[Ot]=void 0})}}),rt=new Map,B,bt,F,_,W,mt,wt,V,st,te=(st=class{constructor(t){c(this,B,new Set);c(this,bt,new Set);c(this,F,new Map);c(this,_,new WeakMap);c(this,W,new Map);c(this,mt,new Set);c(this,wt,new Set);c(this,V);if(t!=null&&t instanceof st)return t;if(t!=null||(t=this),rt.has(t))return rt.get(t);rt.set(t,this),it(this)}static get(t){if(t!=null)return t instanceof st?t:rt.get(t)}static findOrCreate(t){if(t==null)throw new Error("Cannot create a group with a null object");return new st(t)}static destroy(t){console.warn("SignalGroup.destroy(obj) is deprecated. Use SignalGroup.delete(obj) instead."),st.delete(t)}static delete(t){var s;(s=rt.get(t))==null||s.clear()}static clear(){for(let t of rt.values())t.destroy();rt.clear()}attachGroup(t){if(t===this)throw new Error("Cannot attach a group to itself");return r(this,B).add(t),r(t,V)&&r(t,V)!==this&&r(r(t,V),B).delete(t),f(t,V,this),t}detachGroup(t){return t!==this&&r(this,B).has(t)&&(r(this,B).delete(t),f(t,V,void 0)),t}attachSignal(t){let s=E(t);if(s!=null&&s.destroyed)throw new Error("Cannot attach a destroyed signal to a group");return s&&r(this,bt).add(s),t}attachSignalByName(t,s){if(s){this.attachSignal(s);let i=E(s);r(this,F).set(t,i),r(this,W).has(t)?r(this,W).get(t).push(i):r(this,W).set(t,[i]),r(this,_).has(i)?r(this,_).get(i).add(t):r(this,_).set(i,new Set([t]))}else r(this,F).delete(t);return s}hasSignal(t){var s;return r(this,F).has(t)||((s=r(this,V))==null?void 0:s.hasSignal(t))}signal(t){var s,i,a;return(a=(s=r(this,F).get(t))==null?void 0:s.object)!=null?a:(i=r(this,V))==null?void 0:i.signal(t)}detachSignal(t){let s=E(t);if(s&&(r(this,bt).delete(s),r(this,_).has(s))){let i=r(this,_).get(s);for(let a of i)if(r(this,W).has(a)){let o=r(this,W).get(a);o.splice(o.indexOf(s),1),o.length===0?(r(this,F).delete(a),r(this,W).delete(a)):r(this,F).get(a)===s&&r(this,F).set(a,o.at(-1))}i.clear(),r(this,_).delete(s)}return t}attachEffect(t){return r(this,mt).add(t),t}runEffects(){for(let t of r(this,mt))t.run();for(let t of r(this,B))t.runEffects()}attachLink(t){if(t!=null&&t.isDestroyed)throw new Error("Cannot attach a destroyed link to a group");return t&&r(this,wt).add(t),t}detachLink(t){return t&&r(this,wt).delete(t),t}destroy(){console.warn("SignalGroup#destroy is deprecated. Use SignalGroup#clear instead."),this.clear()}clear(){var t;w(this,Wt,this),z(this);for(let s of r(this,B))s.destroy();for(let s of r(this,mt))s.destroy();for(let s of r(this,bt))U(s);for(let s of r(this,wt))s.destroy();r(this,B).clear(),r(this,bt).clear(),r(this,F).clear(),r(this,W).clear(),r(this,mt).clear(),r(this,wt).clear(),(t=r(this,V))==null||t.detachGroup(this),rt.delete(this)}},B=new WeakMap,bt=new WeakMap,F=new WeakMap,_=new WeakMap,W=new WeakMap,mt=new WeakMap,wt=new WeakMap,V=new WeakMap,st),Qt,Xt,ds,Ps=(ds=class{constructor(e="id",t=1){c(this,Qt);c(this,Xt);f(this,Qt,e),f(this,Xt,t)}make(){return Symbol(`${r(this,Qt)}${Ue(this,Xt)._++}`)}},Qt=new WeakMap,Xt=new WeakMap,ds),je=[],Ms=()=>je.at(-1),gi=(e,t)=>{je.push(e);try{return t()}finally{je.pop()}},yi=e=>e!=null&&typeof e.then=="function",A,at,q,Ct,nt,ot,Et,jt,js=(A=class{constructor(t,s){u(this,"id");u(this,"callback");c(this,at);c(this,q,new Set);c(this,Ct,new Set);c(this,nt,new Map);c(this,ot,new Set);u(this,"parentEffect");u(this,"childEffects",[]);u(this,"curChildEffectSlot",0);u(this,"autorun",!0);u(this,"shouldRun",!0);u(this,"priority");c(this,Et);c(this,jt,!1);u(this,"run",()=>{if(r(this,jt)||!this.shouldRun)return;let t=ui();t?t.batch(this.id,this.priority):(this.runCleanupCallback(),this.curChildEffectSlot=0,this.shouldRun=!1,w(As,this.id,this.id),this.hasStaticDeps()?f(this,at,this.callback()):(f(this,Ct,new Set(r(this,q))),f(this,at,gi(this,this.callback)),this.cleanupLostSignals(),r(this,ot).clear()))});u(this,"destroy",()=>{r(this,jt)||(w(this,A.Destroy,this),z(this),w(yt,di,this),this.runCleanupCallback(),z(ue,this),z(yt,this),z(Nt,this),f(this,jt,!0),r(this,q).clear(),r(this,Ct).clear(),r(this,nt).clear(),r(this,ot).clear(),this.childEffects.forEach(t=>{t.destroy()}),this.childEffects.length=0,--A.count)});var a,o;it(this),this.callback=t;let i;(s==null?void 0:s.attach)!=null&&(i=te.findOrCreate(s.attach),i.attachEffect(this)),this.autorun=(a=s==null?void 0:s.autorun)!=null?a:!0,f(this,Et,s!=null&&s.dependencies?s.dependencies.map(n=>{switch(typeof n){case"string":case"symbol":return i.signal(n);default:return n}}):void 0),this.id=A.idGen.make(),this.priority=(o=s==null?void 0:s.priority)!=null?o:0,Q(yt,this.id,qt,this),++A.count}hasStaticDeps(){return r(this,Et)!=null&&r(this,Et).length>0}saveSignalsFromDeps(){for(let t of r(this,Et))this.whenSignalIsRead(E(t).id)}static createEffect(t,s,i){let a=Array.isArray(s)?s:void 0,o=a?i!=null?i:{dependencies:a}:s;o&&a&&(o.dependencies=a);let n,l=Ms();return l!=null?(n=l.getCurrentChildEffect(),n==null&&(n=new A(t,o),l.attachChildEffect(n),w(yt,Ze,n)),l.curChildEffectSlot++):(n=new A(t,o),w(yt,Ze,n)),n.hasStaticDeps()?n.saveSignalsFromDeps():n.autorun&&n.run(),new fi(n)}getCurrentChildEffect(){return this.childEffects[this.curChildEffectSlot]}attachChildEffect(t){this.childEffects.push(t),this.parentEffect=this}[qt](){this.shouldRun=!0,this.autorun&&this.run()}whenSignalIsRead(t){r(this,Ct).delete(t),r(this,q).has(t)||(r(this,q).add(t),r(this,nt).set(t,[Q(ue,t,this.priority,qt,this),O(Nt,t,Xe,this)]))}[Xe](t){!r(this,ot).has(t)&&r(this,q).has(t)&&(r(this,ot).add(t),this.unsubscribeSignal(t),r(this,ot).size===r(this,q).size&&this.destroy())}cleanupLostSignals(){for(let t of r(this,Ct))this.unsubscribeSignal(t),r(this,q).delete(t)}unsubscribeSignal(t){r(this,nt).has(t)&&(r(this,nt).get(t).forEach(s=>{s()}),r(this,nt).delete(t))}runCleanupCallback(){if(r(this,at)!=null){let t=r(this,at);f(this,at,void 0),yi(t)?Promise.resolve(t).then(s=>{typeof s=="function"&&s()}):t()}}},at=new WeakMap,q=new WeakMap,Ct=new WeakMap,nt=new WeakMap,ot=new WeakMap,Et=new WeakMap,jt=new WeakMap,u(A,"idGen",new Ps("ef")),u(A,"Destroy","destroy"),u(A,"count",0),A),ee=(...e)=>js.createEffect(...e),Yt=new WeakMap,pi=e=>{let t=Yt.get(e);return t||(t={},Yt.set(e,t)),t},Ht=(e,t)=>{var s,i;return(i=(s=Yt.get(e))==null?void 0:s.signals)==null?void 0:i.get(t)},vi=(e,t,s)=>{var a;let i=pi(e);(a=i.signals)!=null||(i.signals=new Map),i.signals.set(t,s)};function bi(...e){for(let t of e)if(Yt.has(t)){let s=Yt.get(t);if(s.signals){for(let i of s.signals.values())U(i);s.signals.clear(),s.signals=void 0}}}function mi(e){let t=E(Fe(e)?e:Ht(...e));t!=null&&!t.muted&&!t.destroyed&&Te(t.id,t.value,{touch:!0})}function ze(e){var t,s;return Fe(e)?(t=E(e))==null?void 0:t.value:(s=E(Ht(...e)))==null?void 0:s.value}var us,wi=(us=H,class{constructor(e){u(this,us);this[H]=e}get get(){return this[H].reader}get set(){return this[H].writer}get value(){return ze(this.get)}set value(e){this.set(e)}onChange(e){let{destroy:t}=ee(()=>e(this.value),[this.get]);return t}get muted(){return this[H].muted}set muted(e){this[H].muted=e}touch(){mi(this)}destroy(){U(this)}}),Ci=new Ps("si");function es(e){var t;Os()||((t=Ms())==null||t.whenSignalIsRead(e))}function Te(e,t,s){Os()||w(ue,e,t,s)}var Fe=e=>e!=null&&e[H]!=null,Ei=e=>{let t=s=>{var i;return s?ee(()=>(e.destroyed||es(e.id),s(e.value)),[t]):e.destroyed||((i=e.beforeRead)==null||i.call(e),es(e.id)),e.value};return Object.defineProperty(t,H,{value:e}),t},St,$,Ts=(St=class{constructor(t,s){u(this,"id");u(this,"lazy");u(this,"compare");u(this,"beforeRead");u(this,"muted",!1);u(this,"destroyed",!1);c(this,$);u(this,"valueFn");u(this,"reader");u(this,"writer",(t,s)=>{var o,n,l,y;let i=(o=s==null?void 0:s.lazy)!=null?o:!1,a=(l=(n=s==null?void 0:s.compare)!=null?n:this.compare)!=null?l:((b,d)=>b===d);if((i!==this.lazy||i&&t!==this.valueFn||!i&&!a(t,r(this,$)))&&(i?(f(this,$,void 0),this.valueFn=t,this.lazy=!0):(f(this,$,t),this.valueFn=void 0,this.lazy=!1),!this.muted&&!this.destroyed)){Te(this.id,r(this,$));return}(y=s==null?void 0:s.touch)!=null&&y&&Te(this.id,r(this,$),{touch:!0})});u(this,"object");this.id=Ci.make(),++St.instanceCount,this.lazy=t,this.lazy?(this.value=void 0,this.valueFn=s):(this.value=s,this.valueFn=void 0),this.reader=Ei(this),this.object=new wi(this)}get[H](){return this}get value(){return this.lazy&&(f(this,$,this.valueFn()),this.valueFn=void 0,this.lazy=!1),r(this,$)}set value(t){f(this,$,t)}},$=new WeakMap,u(St,"instanceCount",0),St),E=e=>e==null?void 0:e[H];function k(e=void 0,t){var i;let s;if(Fe(e))s=E(e);else{let a=(i=t==null?void 0:t.lazy)!=null?i:!1;s=new Ts(a,e),s.beforeRead=t==null?void 0:t.beforeRead,s.compare=t==null?void 0:t.compare}return(t==null?void 0:t.attach)!=null&&te.findOrCreate(t.attach).attachSignal(s),s.object}var U=(...e)=>{for(let t of e){let s=E(t);s!=null&&!s.destroyed&&(s.destroyed=!0,s.beforeRead=void 0,--Ts.instanceCount,w(Nt,s.id,s.id))}};function Si(e,t){var n,l;let s=k(),i=(t==null?void 0:t.attach)!=null?te.findOrCreate(t.attach):void 0;i!=null&&(t!=null&&t.name?i.attachSignalByName(t.name,s):i.attachSignal(s));let a=ee(()=>s.set(e()),{autorun:!((n=t==null?void 0:t.lazy)!=null&&n),priority:(l=t==null?void 0:t.priority)!=null?l:fe.C,attach:i}),o=E(s);return o.beforeRead=a.run,O(Nt,o.id,a.destroy),s.get}var S,Tt,cs,Ls=(cs=class{constructor(e){c(this,S,!1);c(this,Tt);u(this,"source");u(this,"lastValue");u(this,"isDestroyed",!1);it(this),this.source=E(e),f(this,Tt,Q(ue,this.source.id,(t,s)=>{!r(this,S)&&!this.isDestroyed&&((s==null?void 0:s.touch)===!0?this.touch():this.write())})),O(Nt,this.source.id,()=>this.destroy())}attach(e){let t=te.findOrCreate(e);return t.attachLink(this),O(this,Wt,()=>{t.detachLink(this)}),t}nextValue(){return new Promise((e,t)=>{let s=[],i=()=>s.forEach(a=>{a()});s.push(O(this,$t,a=>{i(),e(a)}),O(this,Wt,()=>{i(),t()}))})}asyncValues(e){return Be(this,null,function*(){let t=0;for(;!this.isDestroyed;)try{let s=yield new ve(this.nextValue());if(e&&e(s,t++))break;Ne(this,$t),yield s}catch(s){break}de(this,$t)})}destroy(){var e;this.isDestroyed||((e=r(this,Tt))==null||e.call(this),f(this,Tt,void 0),w(this,Wt,this),de(this,$t),z(this),this.lastValue=void 0,this.isDestroyed=!0,Object.freeze(this))}get isMuted(){return r(this,S)}mute(){return!this.isDestroyed&&!r(this,S)&&(f(this,S,!0),w(this,_e,this)),this}unmute(){return!this.isDestroyed&&r(this,S)&&(f(this,S,!1),w(this,ts,this)),this}toggle(){return this.isDestroyed||(f(this,S,!r(this,S)),w(this,r(this,S)?_e:ts,this)),r(this,S)}updateValue(e){if(!r(this,S)&&!this.isDestroyed){let{value:t}=this.source;e(t),w(this,$t,t),this.lastValue=t}}},S=new WeakMap,Tt=new WeakMap,cs),ki=class extends Ls{constructor(t,s){super(t);u(this,"target");this.target=E(s),O(Nt,this.target.id,()=>this.destroy()),this.touch()}touch(){return this.updateValue(t=>{this.target.writer(t,{touch:!0})}),this}write(){this.updateValue(t=>{this.target.writer(t)})}},Ai=class extends Ls{constructor(t,s){super(t);u(this,"target");this.target=s,this.touch()}touch(){return this.updateValue(t=>{this.target(t)}),this}write(){this.updateValue(t=>{this.target(t)})}},ae=new Map;function pt(e,t,s){var b;let i=E(e),a;if(ae.has(i)){a=ae.get(i);let d=(b=E(t))!=null?b:t;if(a.has(d))return a.get(d)}else a=new Map,ae.set(i,a);let o=E(t),n=o!=null?new ki(e,o):new Ai(e,t),l=s==null?void 0:s.attach;l&&n.attach(l);let y=o!=null?o:t;return a.set(y,n),O(n,Wt,()=>{a.delete(y),a.size===0&&ae.delete(i)}),n}var j,Lt,Oi=(Lt=class{constructor(){c(this,j,new Map)}static fromProps(t,s){let i=new Lt,a=s?s.map(o=>[o,t[o]]):Object.entries(t);for(let[o,n]of a)r(i,j).set(o,k(n));return i}keys(){return r(this,j).keys()}signals(){return r(this,j).values()}entries(){return r(this,j).entries()}clear(){for(let t of r(this,j).values())t.destroy();r(this,j).clear()}has(t){return r(this,j).has(t)}get(t){if(!r(this,j).has(t)){let s=k();return r(this,j).set(t,s),s}return r(this,j).get(t)}update(t){t.size&&ce(()=>{for(let[s,i]of t.entries())this.get(s).set(i)})}updateFromProps(t,s){ce(()=>{let i=s?s.map(a=>[a,t[a]]):Object.entries(t);for(let[a,o]of i)this.get(a).set(o)})}},j=new WeakMap,Lt);function Pi(e,t,s,i,a,o){function n(Ft){if(Ft!==void 0&&typeof Ft!="function")throw new TypeError("Function expected");return Ft}for(var l=i.kind,y=l==="getter"?"get":l==="setter"?"set":"value",b=!t&&e?i.static?e:e.prototype:null,d=t||(b?Object.getOwnPropertyDescriptor(b,i.name):{}),h,g=!1,p=s.length-1;p>=0;p--){var M={};for(var At in i)M[At]=At==="access"?{}:i[At];for(var At in i.access)M.access[At]=i.access[At];M.addInitializer=function(Ft){if(g)throw new TypeError("Cannot add initializers after decoration has completed");o.push(n(Ft||null))};var gt=(0,s[p])(l==="accessor"?{get:d.get,set:d.set}:d[y],M);if(l==="accessor"){if(gt===void 0)continue;if(gt===null||typeof gt!="object")throw new TypeError("Object expected");(h=n(gt.get))&&(d.get=h),(h=n(gt.set))&&(d.set=h),(h=n(gt.init))&&a.unshift(h)}else(h=n(gt))&&(l==="field"?a.unshift(h):d[y]=h)}b&&Object.defineProperty(b,i.name,d),g=!0}function ss(e,t,s){for(var i=arguments.length>2,a=0;a<t.length;a++)s=i?t[a].call(e,s):t[a].call(e);return i?s:void 0}function Mi(e){return function(t,s){var o;let i=(e==null?void 0:e.name)||s.name,a=!!((o=e==null?void 0:e.readAsValue)!=null&&o);return{get(){let n=Ht(this,i);if(n)return a?n.value:n.get()},set(n){var l;(l=Ht(this,i))==null||l.set(n)},init(n){let l=k(n,e);return vi(this,i,l),te.findOrCreate(this).attachSignalByName(i,l),l.value}}}}var Pt="value",Le=(()=>{var i,a,o,n,oe,Ut,b;let e,t=[],s=[];return b=class{constructor(h){c(this,n);c(this,i);c(this,a);c(this,o);f(this,i,[]),f(this,o,ss(this,t,void 0)),this.value$=ss(this,s),Ne(this,Pt),this.value$=Ht(this,Pt),this.value$.onChange(g=>w(this,Pt,g)),h&&this.add(...h)}get value(){return r(this,o)}set value(h){f(this,o,h)}add(...h){return r(this,i).push(...h),m(this,n,Ut).call(this),m(this,n,oe).call(this,h)}unshift(...h){return r(this,i).unshift(...h),m(this,n,Ut).call(this),m(this,n,oe).call(this,h)}remove(...h){m(this,n,oe).call(this,h)()}clear(){r(this,i).length=0,m(this,n,Ut).call(this)}dispose(){var h;this.clear(),(h=r(this,a))==null||h.destroy(),f(this,a,void 0),de(this,Pt),z(this),this.value$.destroy(),bi(this)}},i=new WeakMap,a=new WeakMap,o=new WeakMap,n=new WeakSet,oe=function(h){return()=>{for(let g of h){let p=r(this,i).indexOf(g);p!==-1&&r(this,i).splice(p,1)}m(this,n,Ut).call(this)}},Ut=function(){var h;(h=r(this,a))==null||h.destroy(),r(this,i).length===0?(f(this,a,void 0),this.value=void 0):(f(this,a,ee(()=>{let g;for(let p of r(this,i)){let M=ze(p);if(M!=null){g=M;break}}this.value=g},r(this,i))),r(this,a).run())},(()=>{let h=typeof Symbol=="function"&&Symbol.metadata?Object.create(null):void 0;e=[Mi({name:Pt})],Pi(b,null,e,{kind:"accessor",name:"value",static:!1,private:!1,access:{has:g=>"value"in g,get:g=>g.value,set:(g,p)=>{g.value=p}},metadata:h},t,s),h&&Object.defineProperty(b,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:h})})(),b.Value=Pt,b})(),is="onCreate",Mt="onDestroy",ji="onParentChanged",Ti="onViewEvent",Ee=new Map,Se=!1,Li=(e,t)=>{Ee.set(e,t),Se||(Se=!0,queueMicrotask(()=>{Se=!1;let s=Array.from(Ee.entries());Ee.clear();for(let[i,a]of s)i.set(a)}))},J,Dt,ht,I,lt,x,T,tt,R,xt,P,De,dt,Bt,he,fs,Di=(fs=class{constructor(e,t){c(this,P);c(this,J);c(this,Dt);c(this,ht,new Oi);c(this,I,new Map);c(this,lt,new Map);c(this,x);c(this,T);c(this,tt,new Set);c(this,R,[]);c(this,xt,0);c(this,dt);f(this,J,e),f(this,Dt,t),O(this,Mt,fe.Min,this)}get kernel(){return r(this,J)}get uuid(){return r(this,Dt)}get order(){return r(this,xt)}set order(e){r(this,xt)!==e&&(f(this,xt,e),r(this,x)&&this.parent.resortChildren())}get parentUuid(){return r(this,x)||void 0}set parentUuid(e){r(this,x)!==e&&(this.removeFromParent(),f(this,x,e||void 0),f(this,T,e?r(this,J).getEntity(e):void 0),r(this,T)&&r(this,T).addChild(this))}get parent(){return!r(this,T)&&r(this,x)&&f(this,T,r(this,J).getEntity(r(this,x))),r(this,T)}set parent(e){this.parentUuid=e==null?void 0:e.uuid}get hasParent(){return!!r(this,x)}get children(){return r(this,R)}traverse(e){e(this);for(let t of r(this,R))t.traverse(e)}onDestroy(){var e;r(this,ht).clear(),z(this);for(let t of r(this,lt).values())t.cleanup(),t.signal.destroy();r(this,lt).clear();for(let t of r(this,I).values())t.context.set(void 0),t.unsubscribePathValue(),(e=t.unsubscribeFromParent)==null||e.call(t),t.valuePath.dispose(),t.inherited.destroy(),t.provide.destroy(),t.context.destroy();f(this,x,void 0),f(this,T,void 0),r(this,tt).clear(),r(this,R).length=0}addChild(e){var t;if(r(this,R).length===0){r(this,tt).add(e.uuid),r(this,R).push(e);return}if(r(this,tt).has(e.uuid))throw new Error(`child with uuid: ${e.uuid} already exists! parentUuid: ${this.uuid}`);r(this,tt).add(e.uuid),r(this,R).push(e),this.resortChildren();for(let[,s]of r(e,I))m(t=e,P,he).call(t,s)}resortChildren(){r(this,R).sort((e,t)=>e.order-t.order)}removeChild(e){r(this,tt).has(e.uuid)&&(r(this,tt).delete(e.uuid),r(this,R).splice(r(this,R).indexOf(e),1))}removeFromParent(){if(r(this,T)){r(this,T).removeChild(this),f(this,T,void 0),f(this,x,void 0);for(let[,e]of r(this,I))e.unsubscribeFromParent&&(e.unsubscribeFromParent(),e.unsubscribeFromParent=void 0)}}reSubscribeToParentContexts(){for(let[,e]of r(this,I))m(this,P,he).call(this,e)}dispatchMessageToView(e,t,s,i=!1){r(this,J).dispatchMessageToView({uuid:r(this,Dt),type:e,data:t,transferables:s,traverseChildren:i})}dispatchViewEvents(e){for(let{type:t,data:s}of e)w(this,Ti,t,s)}dispatchViewEvent(e,t){this.dispatchViewEvents([{type:e,data:t}])}getPropertyReader(e){return m(this,P,De).call(this,e).get}getPropertyWriter(e){return m(this,P,De).call(this,e).set}setProperties(e){this.clearTruthyPropsCache(),ce(()=>{for(let[t,s]of e)this.setProperty(t,s)})}setProperty(e,t){this.getPropertyWriter(e)(t)}getProperty(e){return ze(this.getPropertyReader(e))}propKeys(){return Array.from(r(this,ht).keys())}propEntries(){return Array.from(r(this,ht).entries()).map(([e,t])=>[e,t.value])}clearTruthyPropsCache(){f(this,dt,void 0)}truthyProps(){if(r(this,dt))return r(this,dt).size?r(this,dt):void 0;let e=new Set;for(let[t,s]of r(this,ht).entries())if(typeof t=="string"){let i=s.value;i!=null&&i!==!1&&i!==""&&e.add(t)}return f(this,dt,e),e.size?e:void 0}hasContext(e){return r(this,I).has(e)}useContext(e){return m(this,P,Bt).call(this,e).context.get}useParentContext(e){return m(this,P,Bt).call(this,e).inherited.get}provideContext(e){return m(this,P,Bt).call(this,e).provide}provideGlobalContext(e){if(r(this,lt).has(e))return r(this,lt).get(e).signal;let t=r(this,J).findOrCreateRootContext(e),s=k(),i=t.add(s);return r(this,lt).set(e,{cleanup:i,signal:s}),s}},J=new WeakMap,Dt=new WeakMap,ht=new WeakMap,I=new WeakMap,lt=new WeakMap,x=new WeakMap,T=new WeakMap,tt=new WeakMap,R=new WeakMap,xt=new WeakMap,P=new WeakSet,De=function(e){return r(this,ht).get(e)},dt=new WeakMap,Bt=function(e){if(r(this,I).has(e))return r(this,I).get(e);let t=k(),s=k(),i=k(),a=new Le([s,t]),o=Q(a,Le.Value,l=>{Li(i,l)}),n={name:e,inherited:t,provide:s,context:i,valuePath:a,unsubscribePathValue:o};return r(this,I).set(e,n),m(this,P,he).call(this,n),n},he=function(e){var t,s;if((t=e.unsubscribeFromParent)==null||t.call(e),e.unsubscribeFromParent=void 0,this.parent){let i=m(s=this.parent,P,Bt).call(s,e.name),a=pt(i.context,e.inherited);e.unsubscribeFromParent=a.destroy.bind(a)}else{let i=r(this,J).findOrCreateRootContext(e.name),a=pt(i.value$,e.inherited);e.unsubscribeFromParent=a.destroy.bind(a)}},fs);function xi(e,t){e.indexOf(t)===-1&&e.push(t)}var rs=e=>{let t=e.split("@").map(s=>s.trim());if(t.length===2&&t[1])return t[0]?{key:`${t[0]}@${t[1]}`,prop:t[1],token:t[0]}:{key:t[1],prop:t[1]}},ne=(e,t)=>{for(let s of t)e.add(s)},Ri=(e,t)=>{if(e!=null)for(let s of e.constructors)t.add(s)},et,L,G,gs,Ds=(gs=class{constructor(){c(this,et,new Map);c(this,L,new Map);c(this,G,new Map)}static get(e){return e!=null?e:Ni}define(e,t){r(this,et).has(e)?xi(r(this,et).get(e).constructors,t):r(this,et).set(e,{token:e,constructors:[t]})}appendRoute(e,t){let s=rs(e);s?r(this,G).has(s.key)?ne(r(this,G).get(s.key).routes,t):r(this,G).set(s.key,{routes:new Set(t),token:s.token}):r(this,L).has(e)?ne(r(this,L).get(e),t):r(this,L).set(e,new Set(t))}clearRoute(e){let t=rs(e);t?r(this,G).delete(t.key):r(this,L).delete(e)}findTokensByRoute(e,t){let s=new Set([e]),i=r(this,L).has(e)?[...r(this,L).get(e)]:[];for(;i.length;){let a=i.shift();s.has(a)||(s.add(a),r(this,L).has(a)&&i.push(...Array.from(r(this,L).get(a)).filter(o=>!s.has(o))))}if(t){for(let o of t)r(this,G).has(o)&&ne(s,r(this,G).get(o).routes);let a;do{a=s.size;for(let o of new Set(s))for(let n of t){let l=`${o}@${n}`;r(this,G).has(l)&&ne(s,r(this,G).get(l).routes)}}while(a!==s.size)}return s}findConstructors(e,t){let s=this.findTokensByRoute(e,t),i=new Set;for(let a of s)Ri(r(this,et).get(a),i);return i.size>0?Array.from(i):void 0}hasToken(e){return r(this,et).has(e)}hasRoute(e){return r(this,L).has(e)}clear(){r(this,et).clear(),r(this,L).clear()}},et=new WeakMap,L=new WeakMap,G=new WeakMap,gs),Ni=new Ds,Z;(function(e){e[e.CreateAndDestroy=0]="CreateAndDestroy",e[e.JustCreate=1]="JustCreate",e[e.DestroyOnly=2]="DestroyOnly"})(Z||(Z={}));var as=e=>e.displayName||e.name,C,K,Rt,Zt,Y,ut,ys,zi=(ys=class{constructor(e){c(this,C);c(this,K);c(this,Rt);c(this,Zt);c(this,Y);c(this,ut);this.logger=new qs("Kernel"),f(this,C,new Map),f(this,K,new Set),f(this,Y,!0),f(this,ut,new Map),it(this),this.registry=Ds.get(e)}getEntity(e){var s;let t=(s=r(this,C).get(e))==null?void 0:s.entity;if(!t)throw new Error(`entity with uuid "${e}" not found!`);return t}hasEntity(e){return r(this,C).has(e)}traverseLevelOrderBFS(e=!1){if(r(this,Y)){let t=new Map,s=(i,a)=>{let o=this.getEntity(i);t.has(a)?t.get(a).push(o):t.set(a,[o]);for(let n of o.children)s(n.uuid,a+1)};r(this,K).forEach(i=>s(i,0)),f(this,Rt,Array.from(t.entries()).sort((i,a)=>i[0]-a[0]).map(([,i])=>i).flat()),f(this,Zt,r(this,Rt).slice().reverse()),f(this,Y,!1)}return e?r(this,Zt):r(this,Rt)}getEntityGraph(){return Array.from(r(this,K)).map(e=>this.getEntityGraphNode(e))}getEntityGraphNode(e){if(!r(this,C).has(e))return;let{token:t,entity:s}=r(this,C).get(e);return{token:t,entity:s,props:Object.fromEntries(s.propEntries()),children:s.children.map(i=>this.getEntityGraphNode(i.uuid))}}upgradeEntities(){let e=new Map;for(let t of this.traverseLevelOrderBFS(!0))e.set(t.uuid,this.updateShadowObjects(t.uuid,Z.DestroyOnly));for(let t of this.traverseLevelOrderBFS(!1))this.updateShadowObjects(t.uuid,Z.JustCreate,e.get(t.uuid));e.clear()}run(e){this.logger.isDebug&&this.logger.debug("sync",e),ce(()=>{for(let t of e.changeTrail)this.parse(t)})}parse(e){switch(e.type){case X.CreateEntities:this.createEntity(e.uuid,e.token,e.parentUuid,e.order,e.properties),f(this,Y,!0);break;case X.DestroyEntities:this.destroyEntity(e.uuid),f(this,Y,!0);break;case X.SetParent:this.setParent(e.uuid,e.parentUuid,e.order),f(this,Y,!0);break;case X.UpdateOrder:this.updateOrder(e.uuid,e.order),f(this,Y,!0);break;case X.ChangeProperties:this.changeProperties(e.uuid,e.properties);break;case X.ChangeToken:this.changeToken(e.uuid,e.token);break;case X.SendEvents:this.dispatchEventsToEntity(e.uuid,e.events);break}}createEntity(e,t,s,i=0,a){let o=new Di(this,e);o.order=i;let n={token:t,entity:o,usedConstructors:new Map};r(this,C).set(e,n),s&&(o.parentUuid=s),o.hasParent||r(this,K).add(e),a&&o.setProperties(a),this.createShadowObjects(e)}destroyEntity(e){if(!r(this,C).has(e))return;let{entity:t,usedConstructors:s}=r(this,C).get(e);t.removeFromParent(),w(t,Mt,this),s.clear(),r(this,C).delete(t.uuid),r(this,K).delete(t.uuid)}setParent(e,t,s=0){let i=this.getEntity(e);i.parentUuid===t&&i.order===s||(i.removeFromParent(),i.order=s,i.parentUuid=t,i.hasParent?r(this,K).delete(e):r(this,K).add(e),i.reSubscribeToParentContexts(),queueMicrotask(()=>{this.logger.isDebug&&this.logger.debug("entity.onParentChanged",{uuid:e,parentUuid:t,order:s,entity:i}),w(i,ji,i)}))}updateOrder(e,t){this.getEntity(e).order=t}dispatchEventsToEntity(e,t){var s;(s=this.getEntity(e))==null||s.dispatchViewEvents(t)}changeProperties(e,t){this.getEntity(e).setProperties(t),this.updateShadowObjects(e)}changeToken(e,t){if(!r(this,C).has(e))return;let s=r(this,C).get(e);s.token!==t&&(s.token=t,this.updateShadowObjects(e))}dispatchMessageToView(e){queueMicrotask(()=>{w(this,Ae,e)})}updateShadowObjects(e,t=Z.CreateAndDestroy,s){let i=r(this,C).get(e);s!=null||(s=new Set(this.registry.findConstructors(i.token,i.entity.truthyProps())));let a=t===Z.CreateAndDestroy||t===Z.DestroyOnly,o=t===Z.CreateAndDestroy||t===Z.JustCreate;if(a){for(let[n,l]of i.usedConstructors)if(!s.has(n)){i.usedConstructors.delete(n);for(let y of l)this.destroyShadowObject(y,i.entity)}}if(o)for(let n of s)i.usedConstructors.has(n)||this.constructShadowObject(n,i);return s}constructShadowObject(e,t){let s=new Set,i=new Set,a=new Map,o=new Map,n=new Map,l=new Map,y=new Map,b=it(new e({entity:t.entity,provideContext(d,h,g){let p=n.get(d);if(p==null){p=k(h,g?{compare:g}:void 0);let M=pt(p,t.entity.provideContext(d));i.add(M.destroy.bind(M)),n.set(d,p)}return p},provideGlobalContext(d,h,g){let p=l.get(d);if(p==null){p=k(h,g?{compare:g}:void 0);let M=pt(p,t.entity.provideGlobalContext(d));i.add(M.destroy.bind(M)),l.set(d,p)}return p},useContext(d,h){let g=a.get(d);if(g===void 0){g=k(void 0,h?{compare:h}:void 0).get,a.set(d,g);let p=pt(t.entity.useContext(d),g);i.add(p.destroy.bind(p))}return g},useParentContext(d,h){let g=o.get(d);if(g===void 0){g=k(void 0,h?{compare:h}:void 0).get,o.set(d,g);let p=pt(t.entity.useParentContext(d),g);i.add(p.destroy.bind(p))}return g},useProperty(d,h){let g=y.get(d);if(g===void 0){g=k(void 0,h?{compare:h}:void 0).get,y.set(d,g);let p=pt(t.entity.getPropertyReader(d),g);i.add(p.destroy.bind(p))}return g},createEffect(...d){let h=ee(...d);return i.add(h.destroy),h},createSignal(...d){let h=k(...d);return i.add(()=>{U(h)}),h},createMemo(...d){let h=Si(...d);return i.add(()=>{U(h)}),h},on(...d){let h=Q(...d);return i.add(h),h},once(...d){let h=O(...d);return i.add(h),h},onDestroy(d){s.add(d)}}));return this.logger.isInfo&&this.logger.info("create shadow-object",as(e),{shadowObject:b,entity:t.entity}),O(t.entity,Mt,fe.Low,()=>{this.logger.isInfo&&this.logger.info("destroy shadow-object",as(e),{shadowObject:b,entity:t.entity});for(let h of s)h();for(let h of i)h();for(let h of a.values())U(h);for(let h of o.values())U(h);for(let h of y.values())U(h);for(let h of n.values())U(h);for(let h of l.values())U(h);s.clear(),i.clear(),a.clear(),o.clear(),y.clear(),n.clear(),l.clear();let d=t.usedConstructors.get(e);d&&(d.delete(b),d.size===0&&t.usedConstructors.delete(e))}),t.usedConstructors.has(e)?t.usedConstructors.get(e).add(b):t.usedConstructors.set(e,new Set([b])),this.attachShadowObject(b,t.entity),b}createShadowObjects(e){var s;let t=r(this,C).get(e);(s=this.registry.findConstructors(t.token,t.entity.truthyProps()))==null||s.forEach(i=>{this.constructShadowObject(i,t)})}findShadowObjects(e){if(!r(this,C).has(e))return[];let{usedConstructors:t}=r(this,C).get(e);return Array.from(new Set(Array.from(t.values()).map(s=>Array.from(s)).flat()))}attachShadowObject(e,t){Q(t,e),typeof e[is]=="function"&&e[is](t)}destroyShadowObject(e,t){typeof e[Mt]=="function"&&e[Mt](t),w(e,Mt,t),z(t,e)}findOrCreateRootContext(e){let t=r(this,ut).get(e);return t||(t=new Le,r(this,ut).set(e,t)),t}destroy(){for(let e of r(this,ut).values())e.dispose();r(this,ut).clear();for(let e of this.traverseLevelOrderBFS().reverse())this.destroyEntity(e.uuid)}},C=new WeakMap,K=new WeakMap,Rt=new WeakMap,Zt=new WeakMap,Y=new WeakMap,ut=new WeakMap,ys);async function xs(e,t,s,i=!0){var o,n;if(s.has(t)){console.warn("importModule: skipping already imported module",t);return}else s.add(t);t.extends&&await Promise.all(t.extends.map(l=>xs(e,l,s,!1)));let{registry:a}=e;if(t.define)for(let[l,y]of Object.entries(t.define))a.define(l,y);if(t.routes)for(let[l,y]of Object.entries(t.routes))a.appendRoute(l,y);await((n=(o=t.initialize)==null?void 0:o.call(t,{define:(l,y)=>a.define(l,y),kernel:e,registry:a}))!=null?n:Promise.resolve()),i&&e.upgradeEntities()}var Fi=e=>(typeof e=="string"&&(e=new URL(e,globalThis.location.href)),e.toString()),_t,ct,Rs,Ns,zs,ps,Vi=(ps=class{constructor(e){c(this,ct);c(this,_t,new Set);var t,s;this.kernel=(t=e==null?void 0:e.kernel)!=null?t:new zi,this.postMessage=(s=e==null?void 0:e.postMessage)!=null?s:self.postMessage.bind(self),Q(this.kernel,Ae,"onMessageToView",this)}route(e){var t;switch(e.data.type){case $s:m(this,ct,Rs).call(this,e.data);break;case Is:m(this,ct,Ns).call(this,e.data);break;case Gs:m(this,ct,zs).call(this,e.data);break;default:console.warn("[MessageRouter] unknown message",(t=e.data.type)!=null?t:e.data)}}onMessageToView(e){let i=e,{transferables:t}=i,s=Ge(i,["transferables"]);this.postMessage({type:Ae,data:s},{transfer:t})}},_t=new WeakMap,ct=new WeakSet,Rs=async function(e){try{let t=await import(Fi(e.importModule));t[me]?(await xs(this.kernel,t[me],r(this,_t)),this.postMessage({type:be,url:e.importModule})):this.postMessage({type:be,url:e.importModule,error:`module has no "${me}" export`})}catch(t){console.error("[MessageRouter] failed to import module",t),this.postMessage({type:be,url:e.importModule,error:`${t}`})}},Ns=function(e){try{this.kernel.run(e)}catch(t){console.error("[MessageRouter] failed to apply change trail",t),this.postMessage({type:qe,serial:e.serial,error:t.toString()})}e.serial&&this.postMessage({type:qe,serial:e.serial})},zs=function(e){console.debug("[MessageRouter] on destroy",e),z(this.kernel,this),r(this,_t).clear(),this.postMessage({type:Bs})},ps),$i=class{constructor(){this.onmessage=e=>{var t;e.data.type===N?globalThis[D]=e.data.config:((t=this.router)!=null||(this.router=new Vi),this.router.route(e))}}start(){self.addEventListener("message",this.onmessage),self.postMessage({type:Us})}};console.debug("@spearwolf/shadow-objects/WorkerRuntime: hello!");var Ii=new $i;Ii.start();\n/*! Bundled license information:\n\n@spearwolf/eventize/lib/index.mjs:\n (*!\n =============================================================================\n @spearwolf/eventize 4.0.2+build.20250807\n \u2014 https://github.com/spearwolf/eventize.git\n =============================================================================\n \n Copyright 2015-2025 Wolfger Schramm\n \n Licensed under the Apache License, Version 2.0 (the "License");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an "AS IS" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n *)\n*/\n')}var Is=()=>new qe;var Nt=(s,t,e=1e3,r)=>new Promise((i,n)=>{let o,h,a=()=>{clearTimeout(o),s.removeEventListener("message",h)};e!==0&&e!==1/0&&(o=setTimeout(()=>{a(),n(new Error(`Timeout waiting for message of type: ${t}`))},e)),h=c=>{if(c.data.type===t)try{(!r||r(c.data))&&(a(),i())}catch(p){a(),n(p.toString())}},s.addEventListener("message",h)});var pr=s=>{let t;if(s!=null&&Array.isArray(s))for(let e of s)e.transferables&&(t?t=[...t,...e.transferables]:t=e.transferables,delete e.transferables);return t},be=class s{static{this.WorkerLoaded="workerLoaded"}#t;#e;#s;get isDestroyed(){return this.#e}get workerLoaded(){return ct(this,s.WorkerLoaded)}constructor(){this.#e=!1,this.#s=0,this.logger=new A("RemoteWorkerEnv"),U(this,s.WorkerLoaded)}async start(){if(this.#t)return this.logger.isWarn&&this.logger.warn("already started"),this.workerLoaded.then(()=>{if(this.isDestroyed)throw"worker was destroyed"});let t=this.#t=Is();this.configureConsoleLogger(t);try{if(await Nt(t,gs,vs),this.isDestroyed)throw"worker was destroyed";t.addEventListener("message",this.onMessageFromWorker.bind(this)),queueMicrotask(()=>{d(this,s.WorkerLoaded,this)})}catch(e){throw this.logger.error("failed to start",e),this.#t=void 0,e}}applyChangeTrail(t,e){let r=pr(t),i={type:ds,changeTrail:t},n=++this.#s;return e&&(i.serial=n),this.#t.postMessage(i,r),e?Nt(this.#t,ys,Cs,o=>{if(o.error)throw o.error;return o.serial===n}):Promise.resolve()}importScript(t){return t=ye(t),this.#t.postMessage({type:fs,importModule:t}),Nt(this.#t,ms,ws,e=>{if(e.error)throw e.error;return e.url===t})}destroy(){if(!this.#t)return;let t=this.#t;this.#t=void 0,this.#e=!0,t.postMessage({type:ps}),Nt(t,bs,Es).finally(()=>{t.terminate()})}onMessageFromWorker(t){t.data?.type===yt?this.onMessageToView?.(t.data.data):this.logger.isDebug&&this.logger.debug("message from worker",t)}configureConsoleLogger(t){let e=`${j}.RemoteWorkerEnv.workerConfig`,r=JSON.parse(localStorage.getItem(e)??"{}");this.logger.isInfo&&this.logger.info("load console-logger worker config",{localStorageKey:e,workerConfig:r}),t.postMessage({type:j,config:{...A.sharedConfig,enable:this.logger.isEnabled,...r,...A.isEnabled?{}:{enable:!1}}})}};var Dt,$t=class extends Z{static{this.observedAttributes=[...Z.observedAttributes,ie,"src",ne]}static{this.DefaultAutoSync="frame"}#t;#e;#s;#i;#r;constructor(){super(),this.isShaeWorkerElement=!0,this.shadowEnv=new I,this.logger=new A("ShaeWorkerElement"),this.autostart=!0,this.isConnected$=f(!1),this.autoSync$=f(Dt.DefaultAutoSync),this.src$=f(""),this.#t=!1,this.#e=!1,this.ns$.onChange(t=>{this.shadowEnv.view=N.get(t)}),m(this.shadowEnv,I.ContextCreated,()=>{this.#r?.run(),this.dispatchEvent(new CustomEvent(I.ContextCreated.toLowerCase(),{bubbles:!1,detail:{shadowEnv:this.shadowEnv}}))}),m(this.shadowEnv,I.ContextLost,()=>{this.dispatchEvent(new CustomEvent(I.ContextLost.toLowerCase(),{bubbles:!1,detail:{shadowEnv:this.shadowEnv}}))}),this.autoSync$.onChange(t=>{let e=this.hasAttribute(F),r=e?this.getAttribute(F):void 0;t===Dt.DefaultAutoSync?e&&r!==t&&this.setAttribute(F,t):r!==t&&this.setAttribute(F,t)}),this.#a(),this.#n()}#n(){this.#r=w(()=>{let t=this.src$.get();t&&this.importScript(t)},{autorun:!1})}get shouldAutostart(){return this.autostart&&!Lt(this,Rs)}get autoSync(){return this.autoSync$.value}set autoSync(t){typeof t!="string"&&(t=t?Dt.DefaultAutoSync:"no"),this.autoSync$.set(`${t}`.trim().toLowerCase())}get frameLoop(){return this.#s??=new mt,this.#s}[mt.OnFrame](){this.syncShadowObjects()}async importScript(t){if(!t)throw new Error("src is blank");let e=await this.shadowEnv.ready();return this.logger.isInfo&&this.logger.info("shadowEnv importScript:",t,{shadowEnv:e}),await e.envProxy.importScript(t),this}connectedCallback(){O(()=>{this.hasAttribute(F)&&this.autoSync$.set(this.getAttribute(F)),this.isConnected$.set(!0)}),this.shouldAutostart&&this.start()}disconnectedCallback(){this.isConnected$.set(!1),this.#o()}attributeChangedCallback(t){if(super.attributeChangedCallback(t),t===ie&&this.shadowEnv.envProxy!=null)throw new Error('Changing the "local" attribute after the shadowEnv has been created is not supported.');if(t===ne&&this.#h(),t===F&&(this.autoSync=this.hasAttribute(F)?this.getAttribute(F):!0),t==="src"){let e=(this.getAttribute("src")||"").trim();this.src$.set(e),this.shadowEnv.isReady&&this.#r?.run()}}start(){if(!this.#e){if(this.#t=!1,this.shadowEnv.view??=N.get(this.ns),this.shadowEnv.envProxy==null){let t=Lt(this,ie)?new me:new be;this.shadowEnv.envProxy=t,this.#h()}this.#e=!0}return this.shadowEnv.ready()}destroy(){this.#i?.destroy(),this.#r?.destroy(),x(this.isConnected$,this.autoSync$,this.src$),this.shadowEnv.envProxy=void 0,this.shadowEnv.destroy()}#o(){this.#t||(this.#t=!0,queueMicrotask(()=>{this.#t&&this.destroy()}))}#a(){this.#i=w(()=>{if(this.isConnected$.get()){let t=(this.autoSync$.get()||Dt.DefaultAutoSync).trim().toLowerCase(),e;if(["true","yes","on","frame","auto-sync"].includes(t))return this.logger.isDebug&&this.logger.debug("auto-sync",t,this),this.frameLoop.start(this),()=>{this.frameLoop.stop(this)};if(t.toLowerCase().endsWith("fps")){let r=parseInt(t,10);r>0?e=Math.floor(1e3/r):this.logger.isWarn&&this.logger.warn(`invalid auto-sync value: ${t}`)}else e=parseInt(t,10),isNaN(e)&&(e=void 0,["false","no","off"].includes(t)||this.logger.error(`invalid auto-sync value: ${t}`));if(e!==void 0&&e>0){this.logger.isDebug&&this.logger.debug("auto-sync interval (ms)",e,this);let r=setInterval(()=>{this.syncShadowObjects()},e);return()=>{clearInterval(r)}}else this.logger.isDebug&&this.logger.debug("auto-sync off",this)}},[this.autoSync$,this.isConnected$])}#h(){let t=this.shadowEnv.envProxy;t?.isLocalEnv&&(t.disableStructuredClone=this.hasAttribute(ne))}};Dt=$t;customElements.define(Ts,$t);globalThis.SHADOW_ENTS_BUNDLE_LOADED=!0;
22
22
  /*! Bundled license information:
23
23
 
24
24
  @spearwolf/eventize/lib/index.mjs:
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@spearwolf/shadow-objects",
3
3
  "description": "a reactive entity-component framework that feels at home in the shadows",
4
- "version": "0.21.0",
4
+ "version": "0.21.1",
5
5
  "author": {
6
6
  "name": "Wolfger Schramm",
7
7
  "email": "wolfger@spearwolf.de",
@@ -31,9 +31,9 @@ export declare const Destroyed = "destroyed";
31
31
  * The `messageToView` event is fired when the kernel receives a message from an entity (to its view component counterpart)
32
32
  */
33
33
  export declare const MessageToView = "messageToView";
34
- export declare const WorkerLoadTimeout = 16000;
35
- export declare const WorkerConfigureTimeout = 16000;
36
- export declare const WorkerChangeTrailTimeout = 4000;
37
- export declare const WorkerDestroyTimeout = 1000;
34
+ export declare const WorkerLoadTimeout = 60000;
35
+ export declare const WorkerConfigureTimeout = 60000;
36
+ export declare const WorkerChangeTrailTimeout = 5000;
37
+ export declare const WorkerDestroyTimeout = 5000;
38
38
  export declare const ShadowObjectsExport = "shadowObjects";
39
39
  //# sourceMappingURL=constants.d.ts.map
package/src/constants.js CHANGED
@@ -32,9 +32,9 @@ export const Destroyed = 'destroyed';
32
32
  * The `messageToView` event is fired when the kernel receives a message from an entity (to its view component counterpart)
33
33
  */
34
34
  export const MessageToView = 'messageToView';
35
- export const WorkerLoadTimeout = 16000;
36
- export const WorkerConfigureTimeout = 16000;
37
- export const WorkerChangeTrailTimeout = 4000;
38
- export const WorkerDestroyTimeout = 1000;
35
+ export const WorkerLoadTimeout = 60000;
36
+ export const WorkerConfigureTimeout = 60000;
37
+ export const WorkerChangeTrailTimeout = 5000;
38
+ export const WorkerDestroyTimeout = 5000;
39
39
  export const ShadowObjectsExport = 'shadowObjects';
40
40
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"root":["../src/bundle.ts","../src/constants.ts","../src/create-worker.bundle.ts","../src/create-worker.ts","../src/elements.ts","../src/index.ts","../src/shadow-objects.ts","../src/shadow-objects.worker.js","../src/shae-ent.ts","../src/shae-prop.ts","../src/shae-worker.ts","../src/types.ts","../src/elements/ShaeElement.ts","../src/elements/ShaeEntElement.ts","../src/elements/ShaePropElement.ts","../src/elements/ShaeWorkerElement.ts","../src/elements/constants.ts","../src/elements/events.ts","../src/in-the-dark/Entity.ts","../src/in-the-dark/Kernel.ts","../src/in-the-dark/Registry.ts","../src/in-the-dark/ShadowObject.ts","../src/in-the-dark/SignalsPath.ts","../src/in-the-dark/events.ts","../src/in-the-dark/importModule.ts","../src/utils/ConsoleLogger.ts","../src/utils/FrameLoop.ts","../src/utils/array-utils.ts","../src/utils/attr-utils.ts","../src/utils/constants.ts","../src/utils/generateUUID.ts","../src/utils/props-utils.ts","../src/utils/toNamespace.ts","../src/utils/toUrlString.ts","../src/utils/waitForMessageOfType.ts","../src/view/ComponentChanges.ts","../src/view/ComponentContext.ts","../src/view/ComponentMemory.ts","../src/view/IShadowObjectEnvProxy.ts","../src/view/LocalShadowObjectEnv.ts","../src/view/RemoteWorkerEnv.ts","../src/view/ShadowEnv.ts","../src/view/ViewComponent.ts","../src/view/cloneChangeTrail.ts","../src/worker/MessageRouter.ts","../src/worker/WorkerRuntime.ts"],"version":"5.8.2"}
1
+ {"root":["../src/bundle.ts","../src/constants.ts","../src/create-worker.bundle.ts","../src/create-worker.ts","../src/elements.ts","../src/index.ts","../src/shadow-objects.ts","../src/shadow-objects.worker.js","../src/shae-ent.ts","../src/shae-prop.ts","../src/shae-worker.ts","../src/types.ts","../src/elements/ShaeElement.ts","../src/elements/ShaeEntElement.ts","../src/elements/ShaePropElement.ts","../src/elements/ShaeWorkerElement.ts","../src/elements/constants.ts","../src/elements/events.ts","../src/in-the-dark/Entity.ts","../src/in-the-dark/Kernel.ts","../src/in-the-dark/Registry.ts","../src/in-the-dark/ShadowObject.ts","../src/in-the-dark/SignalsPath.ts","../src/in-the-dark/events.ts","../src/in-the-dark/importModule.ts","../src/utils/ConsoleLogger.ts","../src/utils/FrameLoop.ts","../src/utils/array-utils.ts","../src/utils/attr-utils.ts","../src/utils/constants.ts","../src/utils/generateUUID.ts","../src/utils/props-utils.ts","../src/utils/toNamespace.ts","../src/utils/toUrlString.ts","../src/utils/waitForMessageOfType.ts","../src/view/ComponentChanges.ts","../src/view/ComponentContext.ts","../src/view/ComponentMemory.ts","../src/view/IShadowObjectEnvProxy.ts","../src/view/LocalShadowObjectEnv.ts","../src/view/RemoteWorkerEnv.ts","../src/view/ShadowEnv.ts","../src/view/ViewComponent.ts","../src/view/cloneChangeTrail.ts","../src/worker/MessageRouter.ts","../src/worker/WorkerRuntime.ts"],"version":"5.9.3"}