@spearwolf/shadow-objects 0.16.0 → 0.18.0

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.
Files changed (61) hide show
  1. package/bundle.js +2 -2
  2. package/package.json +1 -1
  3. package/src/{entities → in-the-dark}/Entity.d.ts +3 -0
  4. package/src/in-the-dark/Entity.d.ts.map +1 -0
  5. package/src/{entities → in-the-dark}/Entity.js +47 -10
  6. package/src/in-the-dark/Entity.js.map +1 -0
  7. package/src/{entities → in-the-dark}/Kernel.d.ts +2 -0
  8. package/src/in-the-dark/Kernel.d.ts.map +1 -0
  9. package/src/{entities → in-the-dark}/Kernel.js +45 -12
  10. package/src/in-the-dark/Kernel.js.map +1 -0
  11. package/src/{entities → in-the-dark}/Registry.d.ts +2 -2
  12. package/src/in-the-dark/Registry.d.ts.map +1 -0
  13. package/src/in-the-dark/Registry.js +122 -0
  14. package/src/in-the-dark/Registry.js.map +1 -0
  15. package/src/in-the-dark/ShadowObject.d.ts.map +1 -0
  16. package/src/in-the-dark/ShadowObject.js.map +1 -0
  17. package/src/in-the-dark/SignalsPath.d.ts +14 -0
  18. package/src/in-the-dark/SignalsPath.d.ts.map +1 -0
  19. package/src/{entities → in-the-dark}/SignalsPath.js +43 -24
  20. package/src/in-the-dark/SignalsPath.js.map +1 -0
  21. package/src/in-the-dark/events.d.ts.map +1 -0
  22. package/src/in-the-dark/events.js.map +1 -0
  23. package/src/in-the-dark/importModule.d.ts.map +1 -0
  24. package/src/in-the-dark/importModule.js.map +1 -0
  25. package/src/shadow-objects.d.ts +4 -4
  26. package/src/shadow-objects.d.ts.map +1 -1
  27. package/src/shadow-objects.js +4 -4
  28. package/src/shadow-objects.js.map +1 -1
  29. package/src/types.d.ts +2 -1
  30. package/src/types.d.ts.map +1 -1
  31. package/src/view/LocalShadowObjectEnv.d.ts +2 -2
  32. package/src/view/LocalShadowObjectEnv.d.ts.map +1 -1
  33. package/src/view/LocalShadowObjectEnv.js +2 -2
  34. package/src/view/LocalShadowObjectEnv.js.map +1 -1
  35. package/src/worker/MessageRouter.d.ts +1 -1
  36. package/src/worker/MessageRouter.d.ts.map +1 -1
  37. package/src/worker/MessageRouter.js +2 -2
  38. package/src/worker/MessageRouter.js.map +1 -1
  39. package/tsconfig.lib.tsbuildinfo +1 -1
  40. package/src/entities/Entity.d.ts.map +0 -1
  41. package/src/entities/Entity.js.map +0 -1
  42. package/src/entities/Kernel.d.ts.map +0 -1
  43. package/src/entities/Kernel.js.map +0 -1
  44. package/src/entities/Registry.d.ts.map +0 -1
  45. package/src/entities/Registry.js +0 -72
  46. package/src/entities/Registry.js.map +0 -1
  47. package/src/entities/ShadowObject.d.ts.map +0 -1
  48. package/src/entities/ShadowObject.js.map +0 -1
  49. package/src/entities/SignalsPath.d.ts +0 -13
  50. package/src/entities/SignalsPath.d.ts.map +0 -1
  51. package/src/entities/SignalsPath.js.map +0 -1
  52. package/src/entities/events.d.ts.map +0 -1
  53. package/src/entities/events.js.map +0 -1
  54. package/src/entities/importModule.d.ts.map +0 -1
  55. package/src/entities/importModule.js.map +0 -1
  56. /package/src/{entities → in-the-dark}/ShadowObject.d.ts +0 -0
  57. /package/src/{entities → in-the-dark}/ShadowObject.js +0 -0
  58. /package/src/{entities → in-the-dark}/events.d.ts +0 -0
  59. /package/src/{entities → in-the-dark}/events.js +0 -0
  60. /package/src/{entities → in-the-dark}/importModule.d.ts +0 -0
  61. /package/src/{entities → in-the-dark}/importModule.js +0 -0
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.16.0+bundle.20250326
4
+ @version 0.18.0+bundle.20250401
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 ee="*",Qt=1,vt=2,wt=4,D=Symbol.for("eventize"),Ns="[eventize]",$e=s=>s===ee,Yt=s=>{switch(typeof s){case"string":case"symbol":return!0;default:return!1}},Kt=typeof console<"u",Ds=Kt?console[console.warn?"warn":"log"].bind(console,Ns):()=>{},$s=(s,e,t)=>(Object.defineProperty(s,e,{value:t,configurable:!0}),s),Is=0,Jt=class{static publish(s){s.sort((e,t)=>e.order-t.order).forEach(e=>e.emit())}events=new Map;eventNames=new Set;add(s){Array.isArray(s)?s.forEach(e=>this.eventNames.add(e)):this.eventNames.add(s)}remove(s){Array.isArray(s)?s.forEach(e=>this.eventNames.delete(e)):this.eventNames.delete(s),this.clear(s)}clear(s){Array.isArray(s)?s.forEach(e=>this.events.delete(e)):this.events.delete(s)}retain(s,e){this.eventNames.has(s)&&this.events.set(s,{args:e,order:Is++})}isKnown(s){return this.eventNames.has(s)}emit(s,e,t=[]){if($e(s))this.eventNames.forEach(r=>this.emit(r,e,t));else if(this.events.has(s)){let{order:r,args:i}=this.events.get(s);t.push({order:r,emit:()=>e.apply(s,i)})}return t}},mt=(s,e,t,r)=>{if(typeof e=="function"){let i=e.apply(s,t);i!=null&&r?.(i)}},Ws=(s,e,t,r)=>mt(e,e.emit,[s].concat(t),r),Fs=s=>{switch(typeof s){case"function":return Qt;case"string":case"symbol":return vt;case"object":return wt}},Us=0,Vs=()=>++Us,Xt=class{id;eventName;isCatchEmAll;priority;listener;listenerObject;listenerType;callAfterApply;isRemoved;refCount;constructor(s,e,t,r=null){this.id=Vs(),this.eventName=s,this.isCatchEmAll=$e(s),this.listener=t,this.listenerObject=r,this.priority=e,this.listenerType=Fs(t),this.callAfterApply=void 0,this.isRemoved=!1,this.refCount=1}isEqual(s,e=null){if(s===this)return!0;let t=typeof s;return t==="number"&&s===this.id?!0:e===null&&(t==="string"||t==="symbol")?s===ee||s===this.eventName:this.listener===s&&this.listenerObject===e}apply(s,e,t){if(this.isRemoved)return;let{listener:r,listenerObject:i}=this;switch(this.listenerType){case Qt:mt(i,r,e,t),this.callAfterApply&&this.callAfterApply();break;case vt:mt(i,i[r],e,t),this.callAfterApply&&this.callAfterApply();break;case wt:{let n=r[s];if(this.isCatchEmAll||this.eventName===s){if(typeof n=="function"){let o=n.apply(r,e);o!=null&&t?.(o)}else Ws(s,r,e,t);this.callAfterApply&&this.callAfterApply()}break}}}},zs=(s,e)=>s.priority!==e.priority?e.priority-s.priority:s.id-e.id,Gt=s=>s?.slice(0),qt=(s,e)=>{let t=s.indexOf(e);t>-1&&s.splice(t,1)},Bs=s=>s===wt||s===vt,bt=(s,e,t)=>{let r=s.findIndex(i=>i.isEqual(e,t));r>-1&&(s[r].isRemoved=!0,s.splice(r,1))},De=(s,e,t)=>{let r=[];for(let i of s)(e==null&&i.listenerObject===t||i.eventName===e&&i.listener===t)&&r.push(i);for(let i of r)bt(s,i,void 0)},yt=s=>{s&&(s.forEach(e=>{e.isRemoved=!0}),s.length=0)},Gs=(s,e)=>s.listenerType===e.listenerType?s.priority===e.priority&&s.eventName===e.eventName&&s.listenerObject===e.listenerObject&&s.listener===e.listener:!1,qs=(s,e)=>{if(Bs(s.listenerType))return e.find(t=>Gs(s,t))},Hs=(s,e)=>{let t=qs(s,e);return t?(t.refCount+=1,t):(e.push(s),e.sort(zs),s)},Qs=class{namedListeners;catchEmAllListeners;getListenersForEventName=s=>{let e=this.namedListeners.get(s);return e||(e=[],this.namedListeners.set(s,e)),e};constructor(){this.namedListeners=new Map,this.catchEmAllListeners=[]}add(s){return Hs(s,s.isCatchEmAll?this.catchEmAllListeners:this.getListenersForEventName(s.eventName))}remove(s,e,t=!1){e==null&&Array.isArray(s)?s.forEach(r=>this.remove(r,null,t)):s==null||e==null&&$e(s)?this.removeAllListeners():e==null&&Yt(s)?yt(this.namedListeners.get(s)):s instanceof Xt?s.isRemoved||(s.refCount-=1,s.refCount<1&&(s.isRemoved=!0,this.namedListeners.forEach(r=>qt(r,s)),qt(this.catchEmAllListeners,s))):t?$e(s)?De(this.catchEmAllListeners,ee,s):this.namedListeners.forEach(r=>De(r,s,e)):(this.namedListeners.forEach(r=>{bt(r,s,e),De(r,void 0,s)}),bt(this.catchEmAllListeners,s,e),De(this.catchEmAllListeners,void 0,s))}removeAllListeners(){this.namedListeners.forEach(s=>yt(s)),this.namedListeners.clear(),yt(this.catchEmAllListeners)}forEach(s,e){let t=Gt(this.catchEmAllListeners),r=Gt(this.namedListeners.get(s));if(s===ee||!r||r.length===0)t.forEach(e);else if(t.length===0)r.forEach(e);else{let i=r.length,n=t.length,o=0,l=0;for(;o<i||l<n;){if(o<i){let a=r[o];if(l>=n||a.priority>=t[l].priority){e(a),++o;continue}}l<n&&(e(t[l]),++l)}}}getSubscriptionCount(){let s=this.catchEmAllListeners.length;for(let e of this.namedListeners.values())s+=e.length;return s}},te=s=>!!(s&&s[D]);function ve(s){if(te(s))return s;let e=new Qs,t=new Jt;return $s(s,D,{keeper:t,store:e}),s}var se={Max:Number.POSITIVE_INFINITY,AAA:1e9,BB:1e6,C:1e3,Default:0,Low:-1e4,Min:Number.NEGATIVE_INFINITY},Ys=(s,e,t,r,i,n,o)=>{let l=s.add(new Xt(t,r,i,n));return e.emit(t,l,o),l},Ks=(s,e,t,r)=>{let i=t.length,n=typeof t[0],o,l,a,h;if(i>=2&&i<=3&&n==="number"?(o=ee,[l,a,h]=t):i>=3&&i<=4&&typeof t[1]=="number"?[o,l,a,h]=t:(l=se.Default,n==="string"||n==="symbol"||Array.isArray(t[0])?[o,a,h]=t:(o=ee,[a,h]=t)),!a&&Kt)throw Ds("called with insufficient arguments!",t),"subscribeTo() called with insufficient arguments!";let u=d=>E=>Ys(s,e,E,d,a,h,r);return Array.isArray(o)?o.map(d=>Array.isArray(d)?u(d[1])(d[0]):u(l)(d)):u(l)(o)},Zt=(s,e,t)=>{let r=[],i=Ks(s,e,t,r);return Jt.publish(r),i},Ht=s=>e=>{e.callAfterApply=()=>{s?.()}},es=(s,e)=>Object.assign(()=>y(s,e),Array.isArray(e)?{listeners:e}:{listener:e}),ts=(s,e,t,r)=>{let{store:i,keeper:n}=s[D];Array.isArray(e)?e.forEach(o=>{i.forEach(o,l=>l.apply(o,t,r)),n.retain(o,t)}):e!==ee&&(i.forEach(e,o=>{o.apply(e,t,r)}),n.retain(e,t))},g=(s,...e)=>{let t=ve(s),{store:r,keeper:i}=t[D];return es(t,Zt(r,i,e))},v=(s,...e)=>{let t=ve(s),{store:r,keeper:i}=t[D],n=Zt(r,i,e),o=es(t,n),l=!1,a=()=>{l||(o(),l=!0)};return Array.isArray(n)?n.forEach(Ht(a)):Ht(a)(n),a},ue=(s,e)=>new Promise(t=>{v(s,e,t)}),y=(s,e,t)=>{if(!te(s))throw new Error("object is not eventized");let{store:r,keeper:i}=s[D],n=typeof e,o=t!=null&&(n==="string"||n==="symbol");r.remove(e,t,o),Array.isArray(e)?i.remove(e.filter(l=>typeof l=="string")):Yt(e)&&i.remove(e)},c=(s,e,...t)=>{if(!te(s))throw new Error("object is not eventized");ts(s,e,t)},Js=(s,e,...t)=>{if(!te(s))throw new Error("object is not eventized");let r=[];return ts(s,e,t,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()},$=(s,e)=>{let t=ve(s),{keeper:r}=t[D];r.add(e)},U=(s,e)=>{if(!te(s))throw new Error("object is not eventized");let{keeper:t}=s[D];t.clear(e)},w=(()=>{let s=(e={})=>ve(e);return s.inject=(e={})=>(e=ve(e),Object.assign(e,{on:(...t)=>g(e,...t),once:(...t)=>v(e,...t),onceAsync:t=>ue(e,t),off:(t,r)=>y(e,t,r),emit:(t,...r)=>c(e,t,...r),emitAsync:(t,...r)=>Js(e,t,...r),retain:t=>$(e,t),retainClear:t=>U(e,t)}),e),s.is=te,s})();var Et=s=>te(s)?s[D]?.store?.getSubscriptionCount()??0:0;var V=w(),L=w(),z=w();var re=class{static current;#e=new Set;batch(e){this.#e.add(e)}run(){c(z,Array.from(this.#e))}},ss=()=>re.current;function k(s){let e=re.current;e?e=void 0:e=re.current=new re;try{s()}finally{e&&(re.current=void 0,e.run())}}var Ct=0;function St(s){Ct++;try{s()}finally{Ct--}}function Ie(){return Ct>0}var T=Symbol.for("signal"),ie=Symbol.for("effect"),xt=Symbol.for("destroySignal"),kt=Symbol.for("createEffect"),rs=Symbol.for("destroyEffect"),ce="value",At="mute",Tt="unmute",B="destroy";var G=new Map,O=class s{#e=new Set;#t=new Set;#s=new Map;#i=new WeakMap;#r=new Map;#n=new Set;#a=new Set;#o;static get(e){if(e!=null)return e instanceof s?e:G.get(e)}static findOrCreate(e){if(e==null)throw new Error("Cannot create a group with a null object");return new s(e)}static destroy(e){console.warn("SignalGroup.destroy(obj) is deprecated. Use SignalGroup.delete(obj) instead."),s.delete(e)}static delete(e){G.get(e)?.clear()}static clear(){for(let e of G.values())e.destroy();G.clear()}constructor(e){if(e!=null&&e instanceof s)return e;if(e??=this,G.has(e))return G.get(e);G.set(e,this),w(this)}attachGroup(e){if(e===this)throw new Error("Cannot attach a group to itself");return this.#e.add(e),e.#o&&e.#o!==this&&e.#o.#e.delete(e),e.#o=this,e}detachGroup(e){return e!==this&&this.#e.has(e)&&(this.#e.delete(e),e.#o=void 0),e}attachSignal(e){let t=m(e);if(t?.destroyed)throw new Error("Cannot attach a destroyed signal to a group");return t&&this.#t.add(t),e}attachSignalByName(e,t){if(t){this.attachSignal(t);let r=m(t);this.#s.set(e,r),this.#r.has(e)?this.#r.get(e).push(r):this.#r.set(e,[r]),this.#i.has(r)?this.#i.get(r).add(e):this.#i.set(r,new Set([e]))}else this.#s.delete(e);return t}hasSignal(e){return this.#s.has(e)||this.#o?.hasSignal(e)}signal(e){return this.#s.get(e)?.object??this.#o?.signal(e)}detachSignal(e){let t=m(e);if(t&&(this.#t.delete(t),this.#i.has(t))){let r=this.#i.get(t);for(let i of r)if(this.#r.has(i)){let n=this.#r.get(i);n.splice(n.indexOf(t),1),n.length===0?(this.#s.delete(i),this.#r.delete(i)):this.#s.get(i)===t&&this.#s.set(i,n.at(-1))}r.clear(),this.#i.delete(t)}return e}attachEffect(e){return this.#n.add(e),e}runEffects(){for(let e of this.#n)e.run();for(let e of this.#e)e.runEffects()}attachLink(e){if(e?.isDestroyed)throw new Error("Cannot attach a destroyed link to a group");return e&&this.#a.add(e),e}detachLink(e){return e&&this.#a.delete(e),e}destroy(){console.warn("SignalGroup#destroy is deprecated. Use SignalGroup#clear instead."),this.clear()}clear(){c(this,B,this),y(this);for(let e of this.#e)e.destroy();for(let e of this.#n)e.destroy();for(let e of this.#t)S(e);for(let e of this.#a)e.destroy();this.#e.clear(),this.#t.clear(),this.#s.clear(),this.#r.clear(),this.#n.clear(),this.#a.clear(),this.#o?.detachGroup(this),G.delete(this)}};var We=class{[ie];constructor(e){this[ie]=e,v(e,fe.Destroy,()=>{this[ie]=void 0})}run=()=>this[ie]?.run();destroy=()=>{this[ie]?.destroy(),this[ie]=void 0}};var de=class{#e;#t;constructor(e="id",t=1){this.#e=e,this.#t=t}make(){return Symbol(`${this.#e}${this.#t++}`)}};var Ot=[],Fe=()=>Ot.at(-1),is=(s,e)=>{Ot.push(s);try{return e()}finally{Ot.pop()}};var Xs=s=>s!=null&&typeof s.then=="function",fe=class s{static idGen=new de("ef");static Destroy="destroy";static count=0;id;callback;#e;#t=new Set;#s=new Set;parentEffect;childEffects=[];curChildEffectSlot=0;autorun=!0;shouldRun=!0;#i;#r=!1;constructor(e,t){w(this),this.callback=e;let r;t?.attach!=null&&(r=O.findOrCreate(t.attach),r.attachEffect(this)),this.autorun=t?.autorun??!0,this.#i=t?.dependencies?t.dependencies.map(i=>{switch(typeof i){case"string":case"symbol":return r.signal(i);default:return i}}):void 0,this.id=s.idGen.make(),g(z,this.id,"recall",this),++s.count}hasStaticDeps(){return this.#i!=null&&this.#i.length>0}saveSignalsFromDeps(){for(let e of this.#i)this.whenSignalIsRead(m(e).id)}static createEffect(e,t,r){let i=Array.isArray(t)?t:void 0,n=i?r??{dependencies:i}:t;n&&i&&(n.dependencies=i);let o,l=Fe();return l!=null?(o=l.getCurrentChildEffect(),o==null&&(o=new s(e,n),l.attachChildEffect(o),c(z,kt,o)),l.curChildEffectSlot++):(o=new s(e,n),c(z,kt,o)),o.hasStaticDeps()?o.saveSignalsFromDeps():o.autorun&&o.run(),new We(o)}getCurrentChildEffect(){return this.childEffects[this.curChildEffectSlot]}attachChildEffect(e){this.childEffects.push(e),this.parentEffect=this}run=()=>{if(this.#r||!this.shouldRun)return;let e=ss();e?e.batch(this.id):(this.runCleanupCallback(),this.curChildEffectSlot=0,this.shouldRun=!1,this.hasStaticDeps()?this.#e=this.callback():this.#e=is(this,this.callback))};recall(){this.shouldRun=!0,this.autorun&&this.run()}whenSignalIsRead(e){this.#t.has(e)||(this.#t.add(e),g(V,e,"recall",this),v(L,e,xt,this))}[xt](e){!this.#s.has(e)&&this.#t.has(e)&&(this.#s.add(e),y(V,e,this),this.#s.size===this.#t.size&&this.destroy())}runCleanupCallback(){if(this.#e!=null){let e=this.#e;this.#e=void 0,Xs(e)?Promise.resolve(e).then(t=>{typeof t=="function"&&t()}):e()}}destroy=()=>{this.#r||(c(this,s.Destroy,this),y(this),c(z,rs,this),this.runCleanupCallback(),y(V,this),y(z,this),y(L,this),this.#r=!0,this.#t.clear(),this.#s.clear(),this.childEffects.forEach(e=>{e.destroy()}),this.childEffects.length=0,--s.count)}};var b=(...s)=>fe.createEffect(...s);var we=new WeakMap,Zs=s=>{let e=we.get(s);return e||(e={},we.set(s,e)),e},A=(s,e)=>we.get(s)?.signals?.get(e);var ns=(s,e,t)=>{let r=Zs(s);r.signals??=new Map,r.signals.set(e,t)};function Ee(...s){for(let e of s)if(we.has(e)){let t=we.get(e);if(t.signals){for(let r of t.signals.values())S(r);t.signals.clear(),t.signals=void 0}}}function os(s){let e=m(pe(s)?s:A(...s));e!=null&&!e.muted&&!e.destroyed&&Ue(e.id,e.value,{touch:!0})}function ne(s){return pe(s)?m(s)?.value:m(A(...s))?.value}var Ve=class{[T];constructor(e){this[T]=e}get get(){return this[T].reader}get set(){return this[T].writer}get value(){return ne(this.get)}set value(e){this.set(e)}onChange(e){let{destroy:t}=b(()=>e(this.value),[this.get]);return t}get muted(){return this[T].muted}set muted(e){this[T].muted=e}touch(){os(this)}destroy(){S(this)}};var er=new de("si");function as(s){Ie()||Fe()?.whenSignalIsRead(s)}function Ue(s,e,t){Ie()||c(V,s,e,t)}var pe=s=>s!=null&&s[T]!=null,tr=s=>{let e=t=>(t?b(()=>(s.destroyed||as(s.id),t(s.value)),[e]):s.destroyed||(s.beforeRead?.(),as(s.id)),s.value);return Object.defineProperty(e,T,{value:s}),e},ze=class s{static instanceCount=0;id;lazy;get[T](){return this}compare;beforeRead;muted=!1;destroyed=!1;#e=void 0;get value(){return this.lazy&&(this.#e=this.valueFn(),this.valueFn=void 0,this.lazy=!1),this.#e}set value(e){this.#e=e}valueFn;reader;writer=(e,t)=>{let r=t?.lazy??!1,n=t?.compare??this.compare??((l,a)=>l===a);if((r!==this.lazy||r&&e!==this.valueFn||!r&&!n(e,this.#e))&&(r?(this.#e=void 0,this.valueFn=e,this.lazy=!0):(this.#e=e,this.valueFn=void 0,this.lazy=!1),!this.muted&&!this.destroyed)){Ue(this.id,this.#e);return}(t?.touch??!1)&&Ue(this.id,this.#e,{touch:!0})};object;constructor(e,t){this.id=er.make(),++s.instanceCount,this.lazy=e,this.lazy?(this.value=void 0,this.valueFn=t):(this.value=t,this.valueFn=void 0),this.reader=tr(this),this.object=new Ve(this)}},m=s=>s?.[T];function f(s=void 0,e){let t;if(pe(s))t=m(s);else{let r=e?.lazy??!1;t=new ze(r,s),t.beforeRead=e?.beforeRead,t.compare=e?.compare}return e?.attach!=null&&O.findOrCreate(e.attach).attachSignal(t),t.object}var S=(...s)=>{for(let e of s){let t=m(e);t!=null&&!t.destroyed&&(t.destroyed=!0,t.beforeRead=void 0,--ze.instanceCount,c(L,t.id,t.id))}};function Pt(s,e){let t=f(),r=e?.attach!=null?O.findOrCreate(e.attach):void 0;r!=null&&(e?.name?r.attachSignalByName(e.name,t):r.attachSignal(t));let i=b(()=>t.set(s()),{autorun:!1,attach:r}),n=m(t);return n.beforeRead=i.run,v(L,n.id,i.destroy),t.get}var Be=class{#e=!1;#t;source;lastValue;isDestroyed=!1;constructor(e){w(this),this.source=m(e),this.#t=g(V,this.source.id,(t,r)=>{!this.#e&&!this.isDestroyed&&(r?.touch===!0?this.touch():this.write())}),v(L,this.source.id,()=>this.destroy())}attach(e){let t=O.findOrCreate(e);return t.attachLink(this),v(this,B,()=>{t.detachLink(this)}),t}nextValue(){return new Promise((e,t)=>{let r=[],i=()=>r.forEach(n=>{n()});r.push(v(this,ce,n=>{i(),e(n)}),v(this,B,()=>{i(),t()}))})}async*asyncValues(e){let t=0;for(;!this.isDestroyed;)try{let r=await this.nextValue();if(e&&e(r,t++))break;$(this,ce),yield r}catch{break}U(this,ce)}destroy(){this.isDestroyed||(this.#t?.(),this.#t=void 0,c(this,B,this),U(this,ce),y(this),this.lastValue=void 0,this.isDestroyed=!0,Object.freeze(this))}get isMuted(){return this.#e}mute(){return!this.isDestroyed&&!this.#e&&(this.#e=!0,c(this,At,this)),this}unmute(){return!this.isDestroyed&&this.#e&&(this.#e=!1,c(this,Tt,this)),this}toggle(){return this.isDestroyed||(this.#e=!this.#e,c(this,this.#e?At:Tt,this)),this.#e}updateValue(e){if(!this.#e&&!this.isDestroyed){let{value:t}=this.source;e(t),c(this,ce,t),this.lastValue=t}}},Ge=class extends Be{target;constructor(e,t){super(e),this.target=m(t),v(L,this.target.id,()=>this.destroy()),this.touch()}touch(){return this.updateValue(e=>{this.target.writer(e,{touch:!0})}),this}write(){this.updateValue(e=>{this.target.writer(e)})}},qe=class extends Be{target;constructor(e,t){super(e),this.target=t,this.touch()}touch(){return this.updateValue(e=>{this.target(e)}),this}write(){this.updateValue(e=>{this.target(e)})}};var He=new Map;function q(s,e,t){let r=m(s),i;if(He.has(r)){i=He.get(r);let h=m(e)??e;if(i.has(h))return i.get(h)}else i=new Map,He.set(r,i);let n=m(e),o=n!=null?new Ge(s,n):new qe(s,e),l=t?.attach;l&&o.attach(l);let a=n??e;return i.set(a,o),v(o,B,()=>{i.delete(a),i.size===0&&He.delete(r)}),o}var Qe=class s{static fromProps(e,t){let r=new s,i=t?t.map(n=>[n,e[n]]):Object.entries(e);for(let[n,o]of i)r.#e.set(n,f(o));return r}#e=new Map;keys(){return this.#e.keys()}signals(){return this.#e.values()}entries(){return this.#e.entries()}clear(){for(let e of this.#e.values())e.destroy();this.#e.clear()}has(e){return this.#e.has(e)}get(e){if(!this.#e.has(e)){let t=f();return this.#e.set(e,t),t}return this.#e.get(e)}update(e){e.size&&k(()=>{for(let[t,r]of e.entries())this.get(t).set(r)})}updateFromProps(e,t){k(()=>{let r=t?t.map(i=>[i,e[i]]):Object.entries(e);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 p;(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"})(p||(p={}));var oe=Symbol.for("ShadowEntsGlobalNS"),I="#void",hs="contextLost",ls="configure",us="changeTrail",cs="destroy",fs="loaded",ds="appliedChangeTrail",ps="importedModule",gs="destroyed",ge="messageToView",ys=16e3,ms=16e3,bs=4e3,vs=1e3,Rt="shadowObjects";function ws(s,e){s.indexOf(e)===-1&&s.push(e)}function Mt(s,e){let t=s.indexOf(e);t!==-1&&s.splice(t,1),s.push(e)}function H(s,e){let t=s.indexOf(e);t!==-1&&s.splice(t,1)}var ae=s=>typeof s=="string"?s.trim()||oe:typeof s=="symbol"?s:oe;var Ce="#root",Se=class{#e;get uuid(){return this.#e}#t=0;constructor(e){this.#e=e}#s=!0;#i=0;#r=0;hasChanges(){return this.#t>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=I;#a;#o=0;#u;#h;#l;create(e=I,t,r=0){this.#t++,this.#i++,this.#u=e,this.#h=t??Ce,this.#l=r||void 0}destroy(){this.#r++,this.#t++}clear(){this.#t=0,this.#s=!1,this.#u=void 0,this.#h=void 0,this.#l=void 0,this.#f.clear(),this.#g.length=0,this.#p.length=0,this.#d.clear()}changeToken(e){e===this.#n?this.#u=void 0:(this.#u=e,this.#t++)}setParent(e){e===this.#a?this.#h=void 0:(this.#h=e??Ce,this.#t++)}changeOrder(e){e===this.#o?this.#l=void 0:(this.#l=e,this.#t++)}#c=new Map;#f=new Map;#g=[];changeProperty(e,t,r){let i=this.#c.get(e);r==null&&t!==i||r!=null&&!r(t,i)?(this.#f.set(e,t),Mt(this.#g,e),this.#t++):(this.#f.delete(e),H(this.#g,e))}removeProperty(e){let t=this.#c.has(e);this.#f.has(e)?(this.#f.delete(e),t||H(this.#g,e)):t&&(Mt(this.#g,e),this.#t++)}#p=[];#d=new Set;createEvent(e,t,r){this.#p.push({type:e,data:t}),r?.forEach(i=>this.#d.add(i)),this.#t++}transferEventsTo(e){this.#p.length>0&&(e.#p.push(...this.#p),this.#p.length=0),this.#d.size>0&&(e.#d=new Set([...e.#d,...this.#d]),this.#d.clear())}buildChangeTrail(e,t){let{isNew:r,isCreated:i,isDestroyed:n}=this;if(!(r&&n))switch(t){case _.StructuralChanges:r?e.push(this.makeCreateEntityChange()):n||(this.#h!==void 0&&!(this.#h===Ce&&this.#a===void 0)?e.push(this.makeSetParentChange()):this.#l!==void 0&&this.#l!==this.#o&&e.push(this.makeUpdateOrderChange()),this.#u!==void 0&&this.#u!==this.#n&&e.push(this.makeChangeToken()));break;case _.ContentUpdates:!r&&i&&this.#g.length>0&&e.push(this.makeChangePropertyChange()),this.#p.length>0&&e.push(this.makeEvents());break;case _.Removal:n&&e.push(this.makeDestroyEntityChange());break}}makeEvents(){let e={type:p.SendEvents,uuid:this.#e,events:this.#p.slice(0)};return this.#d.size>0&&(e.transferables=Array.from(this.#d)),e}makeCreateEntityChange(){let e={type:p.CreateEntities,uuid:this.#e,token:this.#u};if(this.#n=this.#u,this.#h!==void 0){let t=this.#h===Ce?void 0:this.#h;this.#a=t,t!==void 0&&(e.parentUuid=t)}return this.#f.size>0&&(e.properties=Array.from(this.#f.entries()).filter(([,t])=>t!==void 0),e.properties.forEach(([t,r])=>this.#c.set(t,r))),this.#l!==void 0&&this.#l!==this.#o&&(e.order=this.#o=this.#l),e}makeDestroyEntityChange(){return{type:p.DestroyEntities,uuid:this.#e}}makeSetParentChange(){this.#a=this.#h===Ce?void 0:this.#h;let e={type:p.SetParent,uuid:this.#e,parentUuid:this.#a};return this.#l!==void 0&&this.#l!==this.#o&&(e.order=this.#o=this.#l),e}makeUpdateOrderChange(){return this.#o=this.#l??0,{type:p.UpdateOrder,uuid:this.#e,order:this.#o}}makeChangeToken(){return this.#n=this.#u??I,{type:p.ChangeToken,uuid:this.#e,token:this.#n}}makeChangePropertyChange(){let e=this.#g.map(t=>{if(this.#f.has(t)){let r=this.#f.get(t);return this.#c.set(t,r),[t,r]}else return this.#c.delete(t),[t,void 0]});return{type:p.ChangeProperties,uuid:this.#e,properties:e}}};var Es=s=>{if(!(s===void 0||s.length===0))return s.filter(e=>e.length===1||e[1]!==void 0)},Lt=(s,e)=>{if(s===e||e===void 0)return s;if(s===void 0)return Es(e);for(let[t,r]of e){let i=s.find(([n])=>n===t);i===void 0?s.push([t,r]):i[1]=r}return Es(s)};var Ye=class{#e=new Map;get[Symbol.iterator](){return this.#e.entries.bind(this.#e)}clear(){this.#e.clear()}isEmpty(){return this.#e.size===0}hasComponentState(e){return this.#e.has(e)}getComponentState(e){return this.#e.get(e)}write(e){for(let t of e)if(t.type===p.CreateEntities)this.createEntity(t);else if(this.#e.has(t.uuid))switch(t.type){case p.DestroyEntities:this.destroyEntity(t);break;case p.SetParent:this.setParent(t);break;case p.UpdateOrder:this.updateOrder(t);break;case p.ChangeToken:this.changeToken(t);break;case p.ChangeProperties:this.changeProperties(t);break}}changeProperties({uuid:e,properties:t}){let r=this.getComponentState(e);r.properties=Lt(r.properties,t)}changeToken({uuid:e,token:t}){this.getComponentState(e).token=t||I}updateOrder({uuid:e,order:t}){this.getComponentState(e).order=t??0}setParent({uuid:e,parentUuid:t,order:r}){let i=this.getComponentState(e);i.parentUuid=t,i.order=r??0}destroyEntity({uuid:e}){this.#e.delete(e)}createEntity({uuid:e,token:t,parentUuid:r,order:i,properties:n}){this.#e.set(e,{token:t||I,parentUuid:r,order:i??0,properties:Lt(void 0,n)})}};var M=class s{static{this.ReRequestParentRoots="re-request-parent-roots"}static getContextsMap(){return globalThis.__shadowEntsContexts==null&&(globalThis.__shadowEntsContexts=new Map),globalThis.__shadowEntsContexts}static get(e){let t=ae(e),r=s.getContextsMap();return r.has(t)?r.get(t):new s(t)}#e=new Map;#t=[];#s=new Ye;constructor(e=oe){let t=ae(e),r=s.getContextsMap();if(r.has(t))return r.get(t);this.ns=t,r.set(t,this)}addComponent(e){let t;this.#e.has(e.uuid)?(t=this.#e.get(e.uuid),t.component=e,t.children=[]):(t={component:e,children:[],changes:new Se(e.uuid),propIsEqual:void 0},this.#e.set(e.uuid,t)),t.changes.create(e.token,e.parent?.uuid,e.order),e.parent?(this.addToChildren(e.parent,e),t.changes.setParent(e.parent.uuid)):this.#n(e,this.#t),this.#a=void 0}hasComponent(e){return this.#e.has(e.uuid)}hasComponents(){return this.#e.size>0}isRootComponent(e){return this.#t.includes(e.uuid)}destroyComponent(e){if(this.hasComponent(e)){let t=this.#e.get(e.uuid);t.children.slice(0).forEach(r=>this.#e.get(r)?.component.removeFromParent()),t.changes.destroy(),this.#a=void 0}}getChildren(e){return this.#e.get(e.uuid)?.children.map(t=>this.#e.get(t).component)??[]}removeFromParent(e,t){if(this.hasComponent(t)){let r=this.#e.get(e),i=this.#e.get(t.uuid),n=i.children.indexOf(e);n!==-1&&(i.children.splice(n,1),r.changes.setParent(void 0)),this.#n(r.component,this.#t),this.#a=void 0}}moveToRoot(e){let t=this.#e.get(e);t&&(t.changes?.setParent(void 0),this.#n(t.component,this.#t)),this.#a=void 0}changeToken(e,t){this.#e.get(e.uuid)?.changes.changeToken(t)}isChildOf(e,t){return this.hasComponent(t)?this.#e.get(t.uuid).children.includes(e.uuid):!1}addToChildren(e,t){let r=this.#e.get(e.uuid);if(r)this.#n(t,r.children),this.#e.get(t.uuid)?.changes.setParent(e.uuid),H(this.#t,t.uuid),this.#a=void 0;else throw new Error(`the view component ${e.uuid} cannot have a child added to it because the component do not exist!`)}removeSubTree(e){let t=this.#e.get(e);t&&(t.children.slice(0).forEach(r=>this.removeSubTree(r)),this.destroyComponent(t.component),this.#i(e))}setProperty(e,t,r,i){let n=this.#e.get(e.uuid);return n!=null?(i!=null?(n.propIsEqual??=new Map,n.propIsEqual.set(t,i)):n.propIsEqual?.has(t)&&n.propIsEqual.delete(t),n.changes.changeProperty(t,r,i)):!1}removeProperty(e,t){this.#e.get(e.uuid)?.changes.removeProperty(t)}changeOrder(e){if(e.parent){let t=this.#e.get(e.parent.uuid);H(t.children,e.uuid),this.#n(e,t.children)}else H(this.#t,e.uuid),this.#n(e,this.#t);this.#e.get(e.uuid)?.changes.changeOrder(e.order),this.#a=void 0}traverseLevelOrderBFS(){return this.#o().map(e=>e.component)}dispatchShadowObjectsEvent(e,t,r,i){this.#e.get(e.uuid)?.changes.createEvent(t,r,i)}broadcastEvent(e,t=void 0){for(let r of this.traverseLevelOrderBFS())r.dispatchEvent(e,t,!1)}dispatchMessage(e,t,r=void 0,i=!1){this.#e.get(e)?.component.dispatchEvent(t,r,i)}dispatchReRequestParentRoots(){for(let e of this.#t)this.dispatchMessage(e,s.ReRequestParentRoots)}buildChangeTrails(e=!0){let t=[];if(!this.hasComponents())return t;let r=this.#r();for(let i of r)i.buildChangeTrail(t,_.StructuralChanges);for(let i of r)i.buildChangeTrail(t,_.ContentUpdates);for(let i of r)i.buildChangeTrail(t,_.Removal),(i.isDestroyed||i.isNew&&!i.isCreated)&&this.#i(i.uuid),e&&i.clear();return this.#s.write(t),t}reCreateChanges(){if(!this.#s.isEmpty()){this.buildChangeTrails(!1);for(let[e,t]of this.#s){let r=this.#e.get(e);if(r){let i=new Se(e);if(i.create(t.token,t.parentUuid,t.order),t.properties)for(let[n,o]of t.properties)i.changeProperty(n,o,r.propIsEqual?.get(n));r.changes.transferEventsTo(i),r.changes.clear(),r.changes=i}}this.#s.clear(),this.broadcastEvent(hs)}}clear(){if(this.#a=void 0,this.#s.clear(),this.#t.slice(0).forEach(e=>this.removeSubTree(e)),this.#t.length!==0)throw new Error("component-context panic: #rootComponents is not empty!");if(this.#e.size!==0)throw new Error("component-context panic: #components is not empty!")}#i(e){this.#e.has(e)&&(this.#e.delete(e),H(this.#t,e),this.#a=void 0)}#r(){return this.#o().filter(e=>e.changes.hasChanges()).map(e=>e.changes)}#n(e,t){if(t.length===0){t.push(e.uuid);return}if(t.includes(e.uuid))return;let r=t.length,i=new Array(r);if(i[0]=this.#e.get(t[0]).component,e.order<i[0].order){t.unshift(e.uuid);return}if(r===1){t.push(e.uuid);return}let n=r-1;if(i[n]=this.#e.get(t[n]).component,e.order>=i[n].order){t.push(e.uuid);return}if(r===2){t.splice(1,0,e.uuid);return}for(let o=n-1;o>=1;o--)if(i[o]=this.#e.get(t[o]).component,e.order>=i[o].order){t.splice(o+1,0,e.uuid);return}}#a;#o(){if(this.#a)return this.#a;let e=new Map,t=(r,i)=>{let n=this.#e.get(r);if(n!=null){e.has(i)?e.get(i).push(n):e.set(i,[n]);for(let o of n.children)t(o,i+1)}};return this.#t.forEach(r=>t(r,0)),this.#a=Array.from(e.entries()).sort((r,i)=>r[0]-i[0]).map(([,r])=>r).flat(),this.#a}};function xe(s,e,t,r,i,n){function o(be){if(be!==void 0&&typeof be!="function")throw new TypeError("Function expected");return be}for(var l=r.kind,a=l==="getter"?"get":l==="setter"?"set":"value",h=!e&&s?r.static?s:s.prototype:null,u=e||(h?Object.getOwnPropertyDescriptor(h,r.name):{}),d,E=!1,he=t.length-1;he>=0;he--){var Ne={};for(var le in r)Ne[le]=le==="access"?{}:r[le];for(var le in r.access)Ne.access[le]=r.access[le];Ne.addInitializer=function(be){if(E)throw new TypeError("Cannot add initializers after decoration has completed");n.push(o(be||null))};var Z=(0,t[he])(l==="accessor"?{get:u.get,set:u.set}:u[a],Ne);if(l==="accessor"){if(Z===void 0)continue;if(Z===null||typeof Z!="object")throw new TypeError("Object expected");(d=o(Z.get))&&(u.get=d),(d=o(Z.set))&&(u.set=d),(d=o(Z.init))&&i.unshift(d)}else(d=o(Z))&&(l==="field"?i.unshift(d):u[a]=d)}h&&Object.defineProperty(h,r.name,u),E=!0}function Q(s,e,t){for(var r=arguments.length>2,i=0;i<e.length;i++)t=r?e[i].call(s,t):e[i].call(s);return r?t:void 0}function ke(s){return function(e,t){let r=s?.name||t.name,i=!!(s?.readAsValue??!1);return{get(){let n=A(this,r);if(n)return i?n.value:n.get()},set(n){A(this,r)?.set(n)},init(n){let o=f(n,s);return ns(this,r,o),O.findOrCreate(this).attachSignalByName(r,o),o.value}}}}var R="ConsoleLogger",P=`${R}Storage`,sr=!!(globalThis.location?.host?.startsWith("localhost")??!1),Te="localStorage"in globalThis,Ke=Symbol.for(R),Cs=!1,Ss=s=>{if(typeof s=="boolean")return s;switch(s.toLowerCase()){case"true":case"yes":case"on":return!0;default:return!1}},jt=s=>[Te?R:void 0,...Array.isArray(s)?s:[s]].filter(Boolean).join(".");function _t(s,e=void 0,t){let r=jt(s),i=Te?localStorage.getItem(r):globalThis[P]?.[r];return i!=null?e(i):t}function Ae(s,e){Te?localStorage.setItem(jt(s),e):(globalThis[P]==null&&(globalThis[P]={},console.debug(`${R}: Initialize`,{[P]:globalThis[P]})),globalThis[P][jt(s)]=e)}var x=class s{static{this.sharedConfig={enable:sr,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(e){s.sharedConfig["styles.debug"]=e},get info(){return s.sharedConfig["styles.info"]},set info(e){s.sharedConfig["styles.info"]=e},get warn(){return s.sharedConfig["styles.warn"]},set warn(e){s.sharedConfig["styles.warn"]=e},get error(){return s.sharedConfig["styles.error"]},set error(e){s.sharedConfig["styles.error"]=e}}}static loadConfig(){Te?(["enable","debug","info","warn"].forEach(e=>{this.sharedConfig[e]=_t(e,Ss,this.sharedConfig[e])}),["debug","info","warn","error"].forEach(e=>{this.sharedStyles[e]=_t(["styles",e],void 0,this.sharedStyles[e])}),s.isDebug&&console.debug(`${R}: Load config from localStorage`,s.sharedConfig),globalThis[R]?.[Ke]||(globalThis[R]??={[Ke]:!0,get enable(){return s.sharedConfig.enable},set enable(e){s.sharedConfig.enable=e,Ae("enable",e?"true":"false")},get debug(){return s.sharedConfig.debug},set debug(e){s.sharedConfig.debug=e,Ae("debug",e?"true":"false")},get info(){return s.sharedConfig.info},set info(e){s.sharedConfig.info=e,Ae("info",e?"true":"false")},get warn(){return s.sharedConfig.warn},set warn(e){s.sharedConfig.warn=e,Ae("warn",e?"true":"false")}})):globalThis[P]?.[Ke]||(globalThis[P]={[Ke]:!0,...s.sharedConfig,...globalThis[P]},s.sharedConfig=globalThis[P],s.isDebug&&console.debug(`${R}: Load config from ${P}`,globalThis[P]))}constructor(e){this.enable=!0,this.namespace=(e||"").trim()||R,Cs||(s.loadConfig(),Cs=!0);let t=[this.namespace,"enable"];this.enable=_t(t,Ss,this.enable),Ae(t,Te?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(...e){this.#e("debug",s.sharedStyles.debug,e)}info(...e){this.#e("info",s.sharedStyles.info,e)}warn(...e){this.#e("warn",s.sharedStyles.warn,e)}error(...e){this.#e("error",s.sharedStyles.error,e)}#e(e,t,r){console[e](`%c${this.namespace}`,t,...r)}};var j=(()=>{var s;let e,t=[],r=[],i,n=[],o=[];return class W{static{let a=typeof Symbol=="function"&&Symbol.metadata?Object.create(null):void 0;e=[ke()],i=[ke()],xe(this,null,e,{kind:"accessor",name:"viewReady",static:!1,private:!1,access:{has:h=>"viewReady"in h,get:h=>h.viewReady,set:(h,u)=>{h.viewReady=u}},metadata:a},t,r),xe(this,null,i,{kind:"accessor",name:"proxyReady",static:!1,private:!1,access:{has:h=>"proxyReady"in h,get:h=>h.proxyReady,set:(h,u)=>{h.proxyReady=u}},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)}#e;#t;#s;#i;#r;#n;#a;get viewReady(){return this.#a}set viewReady(a){this.#a=a}#o;get proxyReady(){return this.#o}set proxyReady(a){this.#o=a}#u;get isDestroyed(){return this.#u}constructor(){this.#s=!1,this.#i=!1,this.#r=!1,this.logger=new x("ShadowEnv"),this.ns$=f(),this.#a=Q(this,t,!1),this.#o=(Q(this,r),Q(this,n,!1)),this.#u=(Q(this,o),!1),this.ready=async()=>this.isReady?this:ue(this,W.ContextCreated),this.#h=()=>{this.#s&&this.#l()},$(this,W.ContextCreated),g(this,W.ContextLost,se.AAA,()=>{U(this,W.ContextCreated)}),b(()=>{if(this.viewReady&&this.proxyReady)return this.view.reCreateChanges(),c(this,W.ContextCreated,this),this.#i&&(this.#i=!1,this.#l()),()=>{c(this,W.ContextLost,this)}},[A(this,"viewReady"),A(this,"proxyReady")])}get view(){return this.#e}set view(a){a!==this.#e&&(this.#e&&this.#e.ns&&globalThis.__shadowEnvs&&globalThis.__shadowEnvs.delete(this.#e.ns),this.#e=a??void 0,this.#e&&this.#e.ns&&(globalThis.__shadowEnvs??=new Map,globalThis.__shadowEnvs.has(this.#e.ns)&&globalThis.__shadowEnvs.get(this.#e.ns)!==this&&this.logger.isWarn&&this.logger.warn("overwrite a namespace already in use",this.#e.ns,globalThis.__shadowEnvs.get(this.#e.ns)),globalThis.__shadowEnvs.set(this.#e.ns,this)),this.viewReady=!!a)}get envProxy(){return this.#t}set envProxy(a){if(a!==this.#t){let h=this.#t;this.#t=a??void 0,this.#t&&(this.#t.onMessageToView=this.#c.bind(this)),h&&h.destroy(),this.proxyReady=!1,a?.start().then(()=>{this.proxyReady=!0}).catch(u=>{this.logger.error("failed to start envProxy",u),this.proxyReady=!1})}}get isReady(){return!!(this.#e&&this.#t&&this.proxyReady&&!this.isDestroyed)}sync(){if(!this.isReady){this.#i=!0;return}this.#s||(this.#s=!0,queueMicrotask(this.#h))}syncWait(){return this.#r=!0,this.sync(),this.#n?this.#n:(this.#n=ue(this,W.AfterSync).then(a=>(this.#n=void 0,a)),this.#n)}destroy(){let a=this.#e?.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),Ee(this),y(this),this.#u=!0,Object.freeze(this)}#h;async#l(){if(this.#s=!1,this.isReady){let a=this.view.buildChangeTrails();if(a.length>0)try{let h=this.#r;this.#r=!1,await this.envProxy.applyChangeTrail(a,h)}catch(h){this.logger.error("failed to apply change trail",h)}finally{c(this,W.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 C=["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"],rr=()=>{let s=Math.random()*4294967295|0,e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,r=Math.random()*4294967295|0;return(C[s&255]+C[s>>8&255]+C[s>>16&255]+C[s>>24&255]+"-"+C[e&255]+C[e>>8&255]+"-"+C[e>>16&15|64]+C[e>>24&255]+"-"+C[t&63|128]+C[t>>8&255]+"-"+C[t>>16&255]+C[t>>24&255]+C[r&255]+C[r>>8&255]+C[r>>16&255]+C[r>>24&255]).toLowerCase()},xs=()=>globalThis?.crypto?.randomUUID?.()??rr();var Oe=class extends Error{constructor(e){super(e),this.name="ViewComponentError"}},Je=class s{#e;#t;#s;#i;#r=0;get uuid(){return this.#e}get token(){return this.#t}set token(e){e??=I,e!==this.#t&&(this.#t=e,this.#s?.changeToken(this,e))}get parent(){return this.#i}set parent(e){if(e){if(e.#s!==this.#s)throw new Oe("cannot set parent from different context");e.addChild(this)}else this.removeFromParent()}get context(){return this.#s}set context(e){this.#s!=e&&(this.#s&&this.destroy(),this.#s=e,e&&e.addComponent(this))}get order(){return this.#r}set order(e){let t=this.#r;this.#r=e??0,t!==this.#r&&this.#s.changeOrder(this)}constructor(e,t){w(this),t instanceof s&&(t={parent:t}),this.#e=t?.uuid??xs(),this.#t=e,this.#r=t?.order??0,this.#i=t?.parent;let r=t?.context??M.get();if(this.#i&&this.#i.#s!==r)throw new Oe("cannot set parent from different context");this.context=r}isChildOf(e){return this.#i===e}removeFromParent(){this.#i?(this.#s?.removeFromParent(this.uuid,this.#i),this.#i=void 0):this.#s?.moveToRoot(this.uuid)}addChild(e){if(e.#s!==this.#s)throw new Oe("cannot add a child from another context");e.isChildOf(this)||(e.removeFromParent(),e.#i=this,this.#s.addToChildren(this,e))}setProperty(e,t,r){this.#s.setProperty(this,e,t,r)}removeProperty(e){this.#s.removeProperty(this,e)}dispatchShadowObjectsEvent(e,t,r){this.#s.dispatchShadowObjectsEvent(this,e,t,r)}dispatchEvent(e,t,r){if(c(this,e,t),r)for(let i of this.#s.getChildren(this))i.dispatchEvent(e,t,r)}destroy(){this.removeFromParent(),this.#s?.destroyComponent(this),this.#s=void 0}};var Xe="shaeRequestEntParent",Ze="shaeReRequestEntParent",ks="shae-worker",et="shae-ent",As="shae-prop",Y="token",K="ns",tt="local",Ts="no-autostart",st="no-structured-clone",N="auto-sync",rt="src",it="name",nt="value",ot="type",at="no-trim";var Pe=new Set(["on","true","yes","local","1"]);var Os=s=>ae(s.getAttribute(K)),Re=(s,e)=>{if(s.hasAttribute(e)){let t=s.getAttribute(e)?.trim()?.toLowerCase()||"1";return Pe.has(t)}return!1};var Ps=(s,e)=>{e.set(Os(s))},Nt=new Set,Dt=!1,ir=s=>{Nt.add(s),Dt||(Dt=!0,queueMicrotask(()=>{Dt=!1;for(let e of Nt)j.get(e)?.sync();Nt.clear()}))},J=class extends HTMLElement{static{this.observedAttributes=[K]}get ns(){return this.ns$.value}set ns(e){typeof e=="symbol"?this.ns$.set(e):this.ns$.set(ae(e))}constructor(){super(),this.isShaeElement=!0,this.ns$=f(oe),this.ns$.onChange(e=>{typeof e=="string"&&e.length>0?this.getAttribute(K)!==e&&this.setAttribute(K,e):this.removeAttribute(K)}),Ps(this,this.ns$)}attributeChangedCallback(e){e===K&&Ps(this,this.ns$)}syncShadowObjects(){ir(this.ns)}};var ht=class extends J{static{this.observedAttributes=[...J.observedAttributes,Y]}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(e){this.token$.set(e)}#e;constructor(){super(),this.isShaeEntElement=!0,this.componentContext$=f(),this.viewComponent$=f(),this.token$=f(),this.#n=!0,this.#f=()=>{let e=this.findShadowRootHost();e!=null&&this.dispatchEvent(new CustomEvent(Ze,{bubbles:!0,composed:!0,detail:{requester:this,shadowRootHost:e}}))},this.#g=e=>{let t=e.detail?.requester;if(t===this||!t?.isShaeEntElement||t.ns!==this.ns)return;e.detail?.shadowRootHost&&this.#h()},this.#p=e=>{let t=e.detail?.requester;t!==this&&t?.isShaeEntElement&&t.ns===this.ns&&(e.stopPropagation(),t.#c(this))},this.ns$.onChange(e=>{this.componentContext$.set(M.get(e)),this.isConnected&&this.#h()}),this.#d(),this.token$.onChange(e=>{e==null?this.removeAttribute(Y):this.getAttribute(Y)!==e&&this.setAttribute(Y,e)}),b(()=>{let e=this.viewComponent$.get();if(e){let t=g(e,M.ReRequestParentRoots,()=>this.#u()),r=e.context?.ns;return()=>{t(),e.destroy(),r&&r!==this.ns?j.get(r)?.sync():this.syncShadowObjects()}}}),this.token$.onChange(e=>{let t=this.viewComponent$.value;t&&(t.token=e,this.syncShadowObjects())})}#t;#s(){this.#t?.();let e=this.componentContext$.onChange(t=>{let r=this.token$.value,i=this.viewComponent$.value;i?i.context=t:t&&(i=new Je(r,{context:t}),this.viewComponent$.set(i)),this.syncShadowObjects()});this.#t=()=>{e()}}#i(){this.#t?.(),this.#t=void 0}#r;#n;findShadowRootHost(){if(this.#n){this.#n=!1;let e=this;for(;e;){if(e.parentElement==null){let t=e.parentNode;t&&(this.#r=t.host);break}e=e.parentElement}}return this.#r}getParentNodeForObserver(){let e=this.parentNode;return e||(e.host??e)}connectedCallback(){this.#n=!0,this.addEventListener("slotchange",this.#f,{capture:!1,passive:!1}),this.addEventListener(Xe,this.#p,{capture:!1,passive:!1}),this.#s(),St(()=>this.#d()),this.componentContext==null&&this.componentContext$.set(M.get(this.ns)),this.#h(),this.componentContext?.dispatchReRequestParentRoots(),this.#a(),this.syncShadowObjects()}#a(){this.#o();let e=this.getParentNodeForObserver();e&&(this.#e=new MutationObserver((t,r)=>{for(let{target:i,removedNodes:n}of t)if(i===e){for(let o of n)if(o===this){this.#o(),this.onParentChanged(this.getParentNodeForObserver(),e);break}}}),this.#e.observe(e,{childList:!0,subtree:!1,attributes:!1}))}onParentChanged(e,t){this.#c(void 0),this.#h()}#o(){this.#e?.disconnect(),this.#e=void 0}attributeChangedCallback(e){super.attributeChangedCallback(e),e===Y&&this.#d()}disconnectedCallback(){this.#n=!0,this.#o(),this.removeEventListener("slotchange",this.#f,{capture:!1}),this.removeEventListener(Xe,this.#p,{capture:!1}),this.#c(void 0),this.componentContext$.set(void 0),this.syncShadowObjects(),this.#i()}#u(){this.isConnected&&(this.#c(void 0),this.#h())}#h(){this.dispatchEvent(new CustomEvent(Xe,{bubbles:!0,composed:!0,detail:{requester:this}}))}#l;#c(e){if(this.entParentNode!==e)if(this.entParentNode&&this.entParentNode.removeEventListener(Ze,this.#g,{capture:!1}),this.entParentNode=e,this.entParentNode&&this.entParentNode.addEventListener(Ze,this.#g,{capture:!1,passive:!1}),this.#l?.(),this.#l=void 0,e){let t=b(()=>{let r=this.viewComponent$.get();if(r){let i=e.viewComponent$.get();r.parent=i&&i.context===r.context?i:void 0,r.parent==null&&queueMicrotask(()=>{this.#h()}),this.syncShadowObjects()}});this.#l=()=>t.destroy()}else{let t=this.viewComponent;t.parent&&(t.parent=void 0,this.syncShadowObjects())}}#f;#g;#p;#d(){if(this.hasAttribute(Y)){let e=this.getAttribute(Y)?.trim()||void 0;this.token$.set(e)}}};customElements.define(et,ht);var nr=s=>{let e=s.parentElement;for(;e;){if(e.isShaeEntElement)return e;e=e.parentElement}},or=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"]),lt=class extends HTMLElement{static{this.observedAttributes=[it,nt,ot,at]}get name(){return this.name$.value}get value(){return this.valueOut$.value}set value(e){this.valueIn$.set(e)}get shouldTrim(){return this.shouldTrim$.value}get entNode(){return this.entNode$.value}set entNode(e){this.entNode$.set(e)}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 x("ShaePropElement"),this.#e=()=>{this.entNode$.set(nr(this))},this.#t=()=>{queueMicrotask(()=>{this.isConnected||this.entNode$.set(void 0)})},this.#s=()=>{this.name$.set(this.getAttribute(it)?.trim()??void 0)},this.#i=()=>{this.valueIn$.set(this.getAttribute(nt))},this.#r=()=>{let e=this.getAttribute(ot)?.trim().toLowerCase();e&&!or.has(e)&&(this.logger.isWarn&&this.logger.warn(`[${this.name}] unknown type "${e}"`,{shaeProp:this}),e=void 0),this.type$.set(e)},this.#n=()=>{this.shouldTrim$.set(!Re(this,at))},this.entNode$.onChange(e=>{if(e){let t=q(e.viewComponent$,this.viewComponent$);return()=>{t.destroy()}}else this.viewComponent$.set(void 0)}),b(()=>{let e=this.viewComponent$.get();if(e){let t=this.name$.get();if(t){let r=this.valueOut$.get();this.logger.isDebug&&this.logger.debug(`[${this.name}] view-component set-property`,t,r,e.uuid,{viewComponent:e,shaeProp:this}),e.setProperty(t,r),this.isConnected&&this.entNode?.syncShadowObjects()}}}),b(()=>{let e=this.type$.get(),t=this.shouldTrim$.get(),r=this.valueIn$.get();if(t&&typeof r=="string"&&(r=r.trim()),r=r||void 0,r!=null&&typeof r=="string"&&e)switch(e){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=Pe.has(r.toLowerCase());break;case"[]":case"text[]":case"string[]":r=r.split(/\W+/);break;case"number[]":r=r.split(/\W+/).map(i=>Number(i));break;case"float[]":r=r.split(/\W+/).map(i=>parseFloat(i));break;case"int[]":case"integer[]":r=r.split(/\W+/).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=>Pe.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(/\W+/).map(i=>Number(i)));break;case"float64array":r=new Float64Array(r.split(/\W+/).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 "${e}"`,{value:r,shaeProp:this})}this.valueOut$.set(r)}),k(()=>{this.#s(),this.#i(),this.#r(),this.#n()})}connectedCallback(){k(()=>{this.#e(),this.#s(),this.#i(),this.#r(),this.#n()})}attributeChangedCallback(e){switch(e){case it:this.#s();break;case nt:this.#i();break;case ot:this.#r();break;case at:this.#n();break}}disconnectedCallback(){this.#t()}#e;#t;#s;#i;#r;#n};customElements.whenDefined(et).then(()=>customElements.define(As,lt));var ut,$t=null,ye=class{static{this.OnFrame=Symbol("onFrame")}#e=0;#t=0;constructor(){if($t)return $t;w(this),$t=this}start(e){if(e!=null)return Et(this)===0&&this.#i(),g(this,ut.OnFrame,e),this.#t++,()=>{this.stop(e)}}stop(e){y(this,ut.OnFrame,e),Et(this)===0&&this.#r()}#s=e=>{c(this,ut.OnFrame,e),this.#i()};#i(){this.#e=requestAnimationFrame(this.#s)}#r(){cancelAnimationFrame(this.#e),this.#e=0}};ut=ye;var me="value",It=(()=>{let s,e=[],t=[];return class{static{let i=typeof Symbol=="function"&&Symbol.metadata?Object.create(null):void 0;s=[ke({name:me})],xe(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},e,t),i&&Object.defineProperty(this,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})}static{this.Value=me}#e;#t;#s;get value(){return this.#s}set value(i){this.#s=i}constructor(i){this.#e=[],this.#s=Q(this,e,void 0),this.value$=Q(this,t),$(this,me),this.value$=A(this,me),this.value$.onChange(n=>c(this,me,n)),i&&this.add(...i)}add(...i){for(let n of i)this.#e.push(n);this.#r()}pop(){this.#e.pop(),this.#r()}clear(){this.#e.length=0,this.#i()}dispose(){this.clear(),U(this,me),y(this),Ee(this),this.value$.destroy()}#i(){this.#t?.destroy(),this.#t=void 0}#r(){this.#i(),this.#t=b(()=>{for(let i of this.#e){let n=ne(i);if(n!=null){this.value=n;return}}this.value=void 0},this.#e),this.#t.run()}}})();var Wt="onCreate",X="onDestroy",Rs="onParentChanged",Ms="onViewEvent";var Ft=new Map,Ut=!1,ar=(s,e)=>{Ft.set(s,e),Ut||(Ut=!0,queueMicrotask(()=>{Ut=!1;let t=Array.from(Ft.entries());Ft.clear();for(let[r,i]of t)r.set(i)}))},ct=class{#e;#t;#s=new Qe;#i=new Map;#r;#n;#a=new Set;#o=[];#u=0;get kernel(){return this.#e}get uuid(){return this.#t}get order(){return this.#u}set order(e){this.#u!==e&&(this.#u=e,this.#r&&this.parent.resortChildren())}get parentUuid(){return this.#r||void 0}set parentUuid(e){this.#r!==e&&(this.removeFromParent(),this.#r=e||void 0,this.#n=e?this.#e.getEntity(e):void 0,this.#n&&this.#n.addChild(this))}get parent(){return!this.#n&&this.#r&&(this.#n=this.#e.getEntity(this.#r)),this.#n}set parent(e){this.parentUuid=e?.uuid}get hasParent(){return!!this.#r}get children(){return this.#o}constructor(e,t){this.#e=e,this.#t=t,v(this,X,se.Min,this)}traverse(e){e(this);for(let t of this.#o)t.traverse(e)}onDestroy(){this.#s.clear(),y(this);for(let e of this.#i.values())e.context.set(void 0),e.unsubscribePathValue(),e.unsubscribeParent?.(),e.valuePath.dispose(),e.inherited.destroy(),e.provide.destroy(),e.context.destroy();this.#r=void 0,this.#n=void 0,this.#a.clear(),this.#o.length=0}addChild(e){if(this.#o.length===0){this.#a.add(e.uuid),this.#o.push(e);return}if(this.#a.has(e.uuid))throw new Error(`child with uuid: ${e.uuid} already exists! parentUuid: ${this.uuid}`);this.#a.add(e.uuid),this.#o.push(e),this.resortChildren();for(let[,t]of e.#i)e.#c(t)}resortChildren(){this.#o.sort((e,t)=>e.order-t.order)}removeChild(e){this.#a.has(e.uuid)&&(this.#a.delete(e.uuid),this.#o.splice(this.#o.indexOf(e),1))}removeFromParent(){if(this.#n){this.#n.removeChild(this),this.#n=void 0,this.#r=void 0;for(let[,e]of this.#i)e.unsubscribeParent&&(e.unsubscribeParent(),e.unsubscribeParent=void 0)}}reSubscribeToParentContexts(){for(let[,e]of this.#i)this.#c(e)}dispatchMessageToView(e,t,r,i=!1){this.#e.dispatchMessageToView({uuid:this.#t,type:e,data:t,transferables:r,traverseChildren:i})}dispatchViewEvents(e){for(let{type:t,data:r}of e)c(this,Ms,t,r)}dispatchViewEvent(e,t){this.dispatchViewEvents([{type:e,data:t}])}#h(e){return this.#s.get(e)}getPropertyReader(e){return this.#h(e).get}getPropertyWriter(e){return this.#h(e).set}setProperties(e){k(()=>{for(let[t,r]of e)this.setProperty(t,r)})}setProperty(e,t){this.getPropertyWriter(e)(t)}getProperty(e){return ne(this.getPropertyReader(e))}propKeys(){return Array.from(this.#s.keys())}propEntries(){return Array.from(this.#s.entries()).map(([e,t])=>[e,t.value])}hasContext(e){return this.#i.has(e)}useContext(e){return this.#l(e).context.get}provideContext(e){return this.#l(e).provide}#l(e){if(this.#i.has(e))return this.#i.get(e);let t=f(),r=f(),i=f(),n=new It([r,t]),o=g(n,It.Value,a=>{ar(i,a)}),l={name:e,inherited:t,provide:r,context:i,valuePath:n,unsubscribePathValue:o};return this.#i.set(e,l),this.#c(l),l}#c(e){if(e.unsubscribeParent?.(),e.unsubscribeParent=void 0,this.parent){let t=this.parent.#l(e.name),r=q(t.context,e.inherited);e.unsubscribeParent=()=>{r.destroy()}}else e.inherited.set(void 0)}};var Me=class{static get(e){return e??hr}#e=new Map;#t=new Map;define(e,t){this.#e.has(e)?ws(this.#e.get(e).constructors,t):this.#e.set(e,{token:e,constructors:[t]})}appendRoute(e,t){if(this.#t.has(e)){let r=this.#t.get(e);for(let i of t)r.add(i)}else this.#t.set(e,new Set(t))}clearRoute(e){this.#t.delete(e)}findTokensByRoute(e){let t=new Set([e]),r=this.#t.has(e)?[...this.#t.get(e)]:[];for(;r.length;){let i=r.shift();t.has(i)||(t.add(i),this.#t.has(i)&&r.push(...Array.from(this.#t.get(i)).filter(n=>!t.has(n))))}return Array.from(t)}findConstructors(e){let t=this.findTokensByRoute(e),r=new Set;for(let i of t){let n=this.#e.get(i);if(n)for(let o of n.constructors)r.add(o)}return r.size>0?Array.from(r):void 0}hasToken(e){return this.#e.has(e)}hasRoute(e){return this.#t.has(e)}clear(){this.#e.clear(),this.#t.clear()}},hr=new Me;var F;(function(s){s[s.CreateAndDestroy=0]="CreateAndDestroy",s[s.JustCreate=1]="JustCreate",s[s.DestroyOnly=2]="DestroyOnly"})(F||(F={}));var Ls=s=>s.displayName||s.name,ft=class{#e;#t;#s;#i;#r;constructor(e){this.logger=new x("Kernel"),this.#e=new Map,this.#t=new Set,this.#r=!0,w(this),this.registry=Me.get(e)}getEntity(e){let t=this.#e.get(e)?.entity;if(!t)throw new Error(`entity with uuid "${e}" not found!`);return t}hasEntity(e){return this.#e.has(e)}traverseLevelOrderBFS(e=!1){if(this.#r){let t=new Map,r=(i,n)=>{let o=this.getEntity(i);t.has(n)?t.get(n).push(o):t.set(n,[o]);for(let l of o.children)r(l.uuid,n+1)};this.#t.forEach(i=>r(i,0)),this.#s=Array.from(t.entries()).sort((i,n)=>i[0]-n[0]).map(([,i])=>i).flat(),this.#i=this.#s.slice().reverse(),this.#r=!1}return e?this.#i:this.#s}getEntityGraph(){return Array.from(this.#t).map(e=>this.getEntityGraphNode(e))}getEntityGraphNode(e){if(!this.#e.has(e))return;let{token:t,entity:r}=this.#e.get(e);return{token:t,entity:r,props:Object.fromEntries(r.propEntries()),children:r.children.map(i=>this.getEntityGraphNode(i.uuid))}}upgradeEntities(){for(let e of this.traverseLevelOrderBFS(!0))this.updateShadowObjects(e.uuid,F.DestroyOnly);for(let e of this.traverseLevelOrderBFS(!1))this.updateShadowObjects(e.uuid,F.JustCreate)}run(e){this.logger.isDebug&&this.logger.debug("sync",e),k(()=>{for(let t of e.changeTrail)this.parse(t)})}parse(e){switch(e.type){case p.CreateEntities:this.createEntity(e.uuid,e.token,e.parentUuid,e.order,e.properties),this.#r=!0;break;case p.DestroyEntities:this.destroyEntity(e.uuid),this.#r=!0;break;case p.SetParent:this.setParent(e.uuid,e.parentUuid,e.order),this.#r=!0;break;case p.UpdateOrder:this.updateOrder(e.uuid,e.order),this.#r=!0;break;case p.ChangeProperties:this.changeProperties(e.uuid,e.properties);break;case p.ChangeToken:this.changeToken(e.uuid,e.token);break;case p.SendEvents:this.dispatchEventsToEntity(e.uuid,e.events);break}}createEntity(e,t,r,i=0,n){let o=new ct(this,e);o.order=i;let l={token:t,entity:o,usedConstructors:new Map};this.#e.set(e,l),r&&(o.parentUuid=r),o.hasParent||this.#t.add(e),n&&o.setProperties(n),this.createShadowObjects(e)}destroyEntity(e){if(!this.#e.has(e))return;let{entity:t,usedConstructors:r}=this.#e.get(e);t.removeFromParent(),c(t,X,this),r.clear(),this.#e.delete(t.uuid),this.#t.delete(t.uuid)}setParent(e,t,r=0){let i=this.getEntity(e);i.parentUuid===t&&i.order===r||(i.removeFromParent(),i.order=r,i.parentUuid=t,i.hasParent?this.#t.delete(e):this.#t.add(e),i.reSubscribeToParentContexts(),queueMicrotask(()=>{this.logger.isDebug&&this.logger.debug("entity.onParentChanged",{uuid:e,parentUuid:t,order:r,entity:i}),c(i,Rs,i)}))}updateOrder(e,t){this.getEntity(e).order=t}dispatchEventsToEntity(e,t){this.getEntity(e)?.dispatchViewEvents(t)}changeProperties(e,t){this.getEntity(e).setProperties(t)}changeToken(e,t){if(!this.#e.has(e))return;let r=this.#e.get(e);r.token!==t&&(r.token=t,this.updateShadowObjects(e))}dispatchMessageToView(e){queueMicrotask(()=>{c(this,ge,e)})}updateShadowObjects(e,t=F.CreateAndDestroy){let r=this.#e.get(e),i=new Set(this.registry.findConstructors(r.token)),n=t===F.CreateAndDestroy||t===F.DestroyOnly,o=t===F.CreateAndDestroy||t===F.JustCreate;if(n){for(let[l,a]of r.usedConstructors)if(!i.has(l)){r.usedConstructors.delete(l);for(let h of a)this.destroyShadowObject(h,r.entity)}}if(o)for(let l of i)r.usedConstructors.has(l)||this.constructShadowObject(l,r)}constructShadowObject(e,t){let r=new Set,i=new Set,n=new Map,o=new Map,l=new Map,a=w(new e({entity:t.entity,provideContext(h,u,d){let E=o.get(h);if(E===void 0){E=f(u,d?{compare:d}:void 0),o.set(h,E);let he=q(E,t.entity.provideContext(h));i.add(he.destroy.bind(he))}return E},useContext(h,u){let d=n.get(h);if(d===void 0){d=f(void 0,u?{compare:u}:void 0).get,n.set(h,d);let E=q(t.entity.useContext(h),d);i.add(E.destroy.bind(E))}return d},useProperty(h,u){let d=l.get(h);if(d===void 0){d=f(void 0,u?{compare:u}:void 0).get,l.set(h,d);let E=q(t.entity.getPropertyReader(h),d);i.add(E.destroy.bind(E))}return d},createEffect(...h){let u=b(...h);return i.add(u.destroy),u},createSignal(...h){let u=f(...h);return i.add(()=>{S(u)}),u},createMemo(...h){let u=Pt(...h);return i.add(()=>{S(u)}),u},on(...h){let u=g(...h);return i.add(u),u},once(...h){let u=v(...h);return i.add(u),u},onDestroy(h){r.add(h)}}));return this.logger.isInfo&&this.logger.info("create shadow-object",Ls(e),{shadowObject:a,entity:t.entity}),v(t.entity,X,se.Low,()=>{this.logger.isInfo&&this.logger.info("destroy shadow-object",Ls(e),{shadowObject:a,entity:t.entity});for(let u of r)u();for(let u of i)u();for(let u of n.values())S(u);for(let u of l.values())S(u);for(let u of o.values())S(u);r.clear(),i.clear(),n.clear(),l.clear(),o.clear();let h=t.usedConstructors.get(e);h&&(h.delete(a),h.size===0&&t.usedConstructors.delete(e))}),t.usedConstructors.has(e)?t.usedConstructors.get(e).add(a):t.usedConstructors.set(e,new Set([a])),this.attachShadowObject(a,t.entity),a}createShadowObjects(e){let t=this.#e.get(e);this.registry.findConstructors(t.token)?.forEach(r=>{this.constructShadowObject(r,t)})}findShadowObjects(e){if(!this.#e.has(e))return[];let{usedConstructors:t}=this.#e.get(e);return Array.from(new Set(Array.from(t.values()).map(r=>Array.from(r)).flat()))}attachShadowObject(e,t){g(t,e),typeof e[Wt]=="function"&&e[Wt](t)}destroyShadowObject(e,t){typeof e[X]=="function"&&e[X](t),c(e,X,t),y(t,e)}destroy(){for(let e of this.traverseLevelOrderBFS().reverse())this.destroyEntity(e.uuid)}};async function Vt(s,e,t,r=!0){if(t.has(e)){console.warn("importModule: skipping already imported module",e);return}else t.add(e);e.extends&&await Promise.all(e.extends.map(n=>Vt(s,n,t,!1)));let{registry:i}=s;if(e.define)for(let[n,o]of Object.entries(e.define))i.define(n,o);if(e.routes)for(let[n,o]of Object.entries(e.routes))i.appendRoute(n,o);await(e.initialize?.({define:(n,o)=>i.define(n,o),kernel:s,registry:i})??Promise.resolve()),r&&s.upgradeEntities()}var dt=s=>(typeof s=="string"&&(s=new URL(s,globalThis.location.href)),s.toString());function _s(s){return s.map(e=>{if(e.transferables&&e.transferables.length>0){let{transferables:t,...r}=e;return structuredClone(r,{transfer:t})}else return structuredClone(e)})}var pt=class{#e;get registry(){return this.kernel.registry}constructor(e){this.#e=new Set,this.isLocalEnv=!0,this.disableStructuredClone=!1,this.kernel=new ft(e),g(this.kernel,ge,t=>{if(this.onMessageToView!=null){let{type:r,uuid:i,traverseChildren:n}=t,o=structuredClone(t.data,{transfer:t.transferables});this.onMessageToView({type:r,uuid:i,data:o,traverseChildren:n})}})}start(){return Promise.resolve()}applyChangeTrail(e,t){let r={changeTrail:this.disableStructuredClone?e:_s(e)},i;try{this.kernel.run(r),i=Promise.resolve()}catch(n){i=Promise.reject(n)}return i}async importScript(e){let t=await import(dt(e));t[Rt]&&await this.importModule(t[Rt])}async importModule(e){return Vt(this.kernel,e,this.#e)}destroy(){this.kernel.destroy(),this.registry.clear(),this.#e.clear()}};function zt(s){let e=new Blob([s],{type:"text/javascript"}),t=URL.createObjectURL(e),r=new Worker(t);return URL.revokeObjectURL(t),r}function Bt(){return zt('var js=Object.defineProperty;var Ye=Object.getOwnPropertySymbols;var Tt=Object.prototype.hasOwnProperty,Dt=Object.prototype.propertyIsEnumerable;var Ms=(e,t)=>(t=Symbol[e])?t:Symbol.for("Symbol."+e),Lt=e=>{throw TypeError(e)};var it=(e,t,s)=>t in e?js(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,at=(e,t)=>{for(var s in t||(t={}))Tt.call(t,s)&&it(e,s,t[s]);if(Ye)for(var s of Ye(t))Dt.call(t,s)&&it(e,s,t[s]);return e};var Rt=(e,t)=>{var s={};for(var r in e)Tt.call(e,r)&&t.indexOf(r)<0&&(s[r]=e[r]);if(e!=null&&Ye)for(var r of Ye(e))t.indexOf(r)<0&&Dt.call(e,r)&&(s[r]=e[r]);return s};var u=(e,t,s)=>it(e,typeof t!="symbol"?t+"":t,s),nt=(e,t,s)=>t.has(e)||Lt("Cannot "+s);var i=(e,t,s)=>(nt(e,t,"read from private field"),s?s.call(e):t.get(e)),f=(e,t,s)=>t.has(e)?Lt("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,s),g=(e,t,s,r)=>(nt(e,t,"write to private field"),r?r.call(e,s):t.set(e,s),s),b=(e,t,s)=>(nt(e,t,"access private method"),s);var Nt=(e,t,s,r)=>({set _(a){g(e,t,a,s)},get _(){return i(e,t,r)}});var ot=function(e,t){this[0]=e,this[1]=t},xt=(e,t,s)=>{var r=(n,h,l,d)=>{try{var p=s[n](h),c=(h=p.value)instanceof ot,v=p.done;Promise.resolve(c?h[0]:h).then(E=>c?r(n==="return"?n:"next",h[1]?{done:E.done,value:E.value}:E,l,d):l({value:E,done:v})).catch(E=>r("throw",E,l,d))}catch(E){d(E)}},a=n=>o[n]=h=>new Promise((l,d)=>r(n,h,l,d)),o={};return s=s.apply(e,t),o[Ms("asyncIterator")]=()=>o,a("next"),a("throw"),a("return"),o};var Vt;(function(e){e[e.StructuralChanges=1]="StructuralChanges",e[e.ContentUpdates=2]="ContentUpdates",e[e.Removal=3]="Removal"})(Vt||(Vt={}));var q;(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"})(q||(q={}));var Lr=Symbol.for("ShadowEntsGlobalNS"),Ts="configure",Ds="changeTrail",Ls="destroy",Rs="loaded",Ft="appliedChangeTrail",ht="importedModule",Ns="destroyed",yt="messageToView",lt="shadowObjects",N="ConsoleLogger",M=`${N}Storage`,Xt,_t,es,xs=!!((es=(_t=(Xt=globalThis.location)==null?void 0:Xt.host)==null?void 0:_t.startsWith("localhost"))!=null&&es),Ve="localStorage"in globalThis,He=Symbol.for(N),zt=!1,It=e=>{if(typeof e=="boolean")return e;switch(e.toLowerCase()){case"true":case"yes":case"on":return!0;default:return!1}},pt=e=>[Ve?N:void 0,...Array.isArray(e)?e:[e]].filter(Boolean).join(".");function dt(e,t=void 0,s){var o;let r=pt(e),a=Ve?localStorage.getItem(r):(o=globalThis[M])==null?void 0:o[r];return a!=null?t(a):s}function Te(e,t){Ve?localStorage.setItem(pt(e),t):(globalThis[M]==null&&(globalThis[M]={},console.debug(`${N}: Initialize`,{[M]:globalThis[M]})),globalThis[M][pt(e)]=t)}var oe,Le,y,Vs=(y=class{constructor(t){f(this,oe);this.enable=!0,this.namespace=(t||"").trim()||N,zt||(y.loadConfig(),zt=!0);let s=[this.namespace,"enable"];this.enable=dt(s,It,this.enable),Te(s,Ve?this.enable?"true":"false":this.enable)}static get isEnabled(){return y.sharedConfig.enable}static get isDebug(){return y.sharedConfig.enable&&y.sharedConfig.debug}static loadConfig(){var t,s,r;Ve?(["enable","debug","info","warn"].forEach(a=>{this.sharedConfig[a]=dt(a,It,this.sharedConfig[a])}),["debug","info","warn","error"].forEach(a=>{this.sharedStyles[a]=dt(["styles",a],void 0,this.sharedStyles[a])}),y.isDebug&&console.debug(`${N}: Load config from localStorage`,y.sharedConfig),(t=globalThis[N])!=null&&t[He]||((s=globalThis[N])!=null||(globalThis[N]={[He]:!0,get enable(){return y.sharedConfig.enable},set enable(a){y.sharedConfig.enable=a,Te("enable",a?"true":"false")},get debug(){return y.sharedConfig.debug},set debug(a){y.sharedConfig.debug=a,Te("debug",a?"true":"false")},get info(){return y.sharedConfig.info},set info(a){y.sharedConfig.info=a,Te("info",a?"true":"false")},get warn(){return y.sharedConfig.warn},set warn(a){y.sharedConfig.warn=a,Te("warn",a?"true":"false")}}))):(r=globalThis[M])!=null&&r[He]||(globalThis[M]=at(at({[He]:!0},y.sharedConfig),globalThis[M]),y.sharedConfig=globalThis[M],y.isDebug&&console.debug(`${N}: Load config from ${M}`,globalThis[M]))}get isEnabled(){return this.enable&&y.sharedConfig.enable}get isDebug(){return this.isEnabled&&y.sharedConfig.debug}get isInfo(){return this.isEnabled&&y.sharedConfig.info}get isWarn(){return this.isEnabled&&y.sharedConfig.warn}debug(...t){b(this,oe,Le).call(this,"debug",y.sharedStyles.debug,t)}info(...t){b(this,oe,Le).call(this,"info",y.sharedStyles.info,t)}warn(...t){b(this,oe,Le).call(this,"warn",y.sharedStyles.warn,t)}error(...t){b(this,oe,Le).call(this,"error",y.sharedStyles.error,t)}},oe=new WeakSet,Le=function(t,s,r){console[t](`%c${this.namespace}`,s,...r)},y.sharedConfig={enable:xs,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"},y.sharedStyles={get debug(){return y.sharedConfig["styles.debug"]},set debug(t){y.sharedConfig["styles.debug"]=t},get info(){return y.sharedConfig["styles.info"]},set info(t){y.sharedConfig["styles.info"]=t},get warn(){return y.sharedConfig["styles.warn"]},set warn(t){y.sharedConfig["styles.warn"]=t},get error(){return y.sharedConfig["styles.error"]},set error(t){y.sharedConfig["styles.error"]=t}},y),ye="*",ls=1,At=2,kt=4,ae=Symbol.for("eventize"),Fs="[eventize]",tt=e=>e===ye,ds=e=>{switch(typeof e){case"string":case"symbol":return!0;default:return!1}},us=typeof console<"u",zs=us?console[console.warn?"warn":"log"].bind(console,Fs):()=>{},Is=(e,t,s)=>(Object.defineProperty(e,t,{value:s,configurable:!0}),e),Us=0,cs=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:Us++})}isKnown(e){return this.eventNames.has(e)}emit(e,t,s=[]){if(tt(e))this.eventNames.forEach(r=>this.emit(r,t,s));else if(this.events.has(e)){let{order:r,args:a}=this.events.get(e);s.push({order:r,emit:()=>t.apply(e,a)})}return s}},vt=(e,t,s,r)=>{if(typeof t=="function"){let a=t.apply(e,s);a!=null&&(r==null||r(a))}},Gs=(e,t,s,r)=>vt(t,t.emit,[e].concat(s),r),$s=e=>{switch(typeof e){case"function":return ls;case"string":case"symbol":return At;case"object":return kt}},Bs=0,Ws=()=>++Bs,fs=class{constructor(e,t,s,r=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=Ws(),this.eventName=e,this.isCatchEmAll=tt(e),this.listener=s,this.listenerObject=r,this.priority=t,this.listenerType=$s(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===ye||e===this.eventName:this.listener===e&&this.listenerObject===t}apply(e,t,s){if(this.isRemoved)return;let{listener:r,listenerObject:a}=this;switch(this.listenerType){case ls:vt(a,r,t,s),this.callAfterApply&&this.callAfterApply();break;case At:vt(a,a[r],t,s),this.callAfterApply&&this.callAfterApply();break;case kt:{let o=r[e];if(this.isCatchEmAll||this.eventName===e){if(typeof o=="function"){let n=o.apply(r,t);n!=null&&(s==null||s(n))}else Gs(e,r,t,s);this.callAfterApply&&this.callAfterApply()}break}}}},qs=(e,t)=>e.priority!==t.priority?t.priority-e.priority:e.id-t.id,Ut=e=>e==null?void 0:e.slice(0),Gt=(e,t)=>{let s=e.indexOf(t);s>-1&&e.splice(s,1)},Js=e=>e===kt||e===At,bt=(e,t,s)=>{let r=e.findIndex(a=>a.isEqual(t,s));r>-1&&(e[r].isRemoved=!0,e.splice(r,1))},Qe=(e,t,s)=>{let r=[];for(let a of e)(t==null&&a.listenerObject===s||a.eventName===t&&a.listener===s)&&r.push(a);for(let a of r)bt(e,a,void 0)},ut=e=>{e&&(e.forEach(t=>{t.isRemoved=!0}),e.length=0)},Ks=(e,t)=>e.listenerType===t.listenerType?e.priority===t.priority&&e.eventName===t.eventName&&e.listenerObject===t.listenerObject&&e.listener===t.listener:!1,Ys=(e,t)=>{if(Js(e.listenerType))return t.find(s=>Ks(e,s))},Hs=(e,t)=>{let s=Ys(e,t);return s?(s.refCount+=1,s):(t.push(e),t.sort(qs),e)},Qs=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 Hs(e,e.isCatchEmAll?this.catchEmAllListeners:this.getListenersForEventName(e.eventName))}remove(e,t,s=!1){t==null&&Array.isArray(e)?e.forEach(r=>this.remove(r,null,s)):e==null||t==null&&tt(e)?this.removeAllListeners():t==null&&ds(e)?ut(this.namedListeners.get(e)):e instanceof fs?e.isRemoved||(e.refCount-=1,e.refCount<1&&(e.isRemoved=!0,this.namedListeners.forEach(r=>Gt(r,e)),Gt(this.catchEmAllListeners,e))):s?tt(e)?Qe(this.catchEmAllListeners,ye,e):this.namedListeners.forEach(r=>Qe(r,e,t)):(this.namedListeners.forEach(r=>{bt(r,e,t),Qe(r,void 0,e)}),bt(this.catchEmAllListeners,e,t),Qe(this.catchEmAllListeners,void 0,e))}removeAllListeners(){this.namedListeners.forEach(e=>ut(e)),this.namedListeners.clear(),ut(this.catchEmAllListeners)}forEach(e,t){let s=Ut(this.catchEmAllListeners),r=Ut(this.namedListeners.get(e));if(e===ye||!r||r.length===0)s.forEach(t);else if(s.length===0)r.forEach(t);else{let a=r.length,o=s.length,n=0,h=0;for(;n<a||h<o;){if(n<a){let l=r[n];if(h>=o||l.priority>=s[h].priority){t(l),++n;continue}}h<o&&(t(s[h]),++h)}}}getSubscriptionCount(){let e=this.catchEmAllListeners.length;for(let t of this.namedListeners.values())e+=t.length;return e}},je=e=>!!(e&&e[ae]);function Fe(e){if(je(e))return e;let t=new Qs,s=new cs;return Is(e,ae,{keeper:s,store:t}),e}var Ot={Max:Number.POSITIVE_INFINITY,AAA:1e9,BB:1e6,C:1e3,Default:0,Low:-1e4,Min:Number.NEGATIVE_INFINITY},Zs=(e,t,s,r,a,o,n)=>{let h=e.add(new fs(s,r,a,o));return t.emit(s,h,n),h},Xs=(e,t,s,r)=>{let a=s.length,o=typeof s[0],n,h,l,d;if(a>=2&&a<=3&&o==="number"?(n=ye,[h,l,d]=s):a>=3&&a<=4&&typeof s[1]=="number"?[n,h,l,d]=s:(h=Ot.Default,o==="string"||o==="symbol"||Array.isArray(s[0])?[n,l,d]=s:(n=ye,[l,d]=s)),!l&&us)throw zs("called with insufficient arguments!",s),"subscribeTo() called with insufficient arguments!";let p=c=>v=>Zs(e,t,v,c,l,d,r);return Array.isArray(n)?n.map(c=>Array.isArray(c)?p(c[1])(c[0]):p(h)(c)):p(h)(n)},gs=(e,t,s)=>{let r=[],a=Xs(e,t,s,r);return cs.publish(r),a},$t=e=>t=>{t.callAfterApply=()=>{e==null||e()}},ys=(e,t)=>Object.assign(()=>T(e,t),Array.isArray(t)?{listeners:t}:{listener:t}),ps=(e,t,s,r)=>{let{store:a,keeper:o}=e[ae];Array.isArray(t)?t.forEach(n=>{a.forEach(n,h=>h.apply(n,s,r)),o.retain(n,s)}):t!==ye&&(a.forEach(t,n=>{n.apply(t,s,r)}),o.retain(t,s))},se=(e,...t)=>{let s=Fe(e),{store:r,keeper:a}=s[ae];return ys(s,gs(r,a,t))},k=(e,...t)=>{let s=Fe(e),{store:r,keeper:a}=s[ae],o=gs(r,a,t),n=ys(s,o),h=!1,l=()=>{h||(n(),h=!0)};return Array.isArray(o)?o.forEach($t(l)):$t(l)(o),l},_s=(e,t)=>new Promise(s=>{k(e,t,s)}),T=(e,t,s)=>{if(!je(e))throw new Error("object is not eventized");let{store:r,keeper:a}=e[ae],o=typeof t,n=s!=null&&(o==="string"||o==="symbol");r.remove(t,s,n),Array.isArray(t)?a.remove(t.filter(h=>typeof h=="string")):ds(t)&&a.remove(t)},m=(e,t,...s)=>{if(!je(e))throw new Error("object is not eventized");ps(e,t,s)},er=(e,t,...s)=>{if(!je(e))throw new Error("object is not eventized");let r=[];return ps(e,t,s,a=>{r.push(a)}),r=r.map(a=>Array.isArray(a)?Promise.all(a):Promise.resolve(a)),r.length>0?Promise.all(r):Promise.resolve()},Pt=(e,t)=>{let s=Fe(e),{keeper:r}=s[ae];r.add(t)},st=(e,t)=>{if(!je(e))throw new Error("object is not eventized");let{keeper:s}=e[ae];s.clear(t)},re=(()=>{let e=(t={})=>Fe(t);return e.inject=(t={})=>(t=Fe(t),Object.assign(t,{on:(...s)=>se(t,...s),once:(...s)=>k(t,...s),onceAsync:s=>_s(t,s),off:(s,r)=>T(t,s,r),emit:(s,...r)=>m(t,s,...r),emitAsync:(s,...r)=>er(t,s,...r),retain:s=>Pt(t,s),retainClear:s=>st(t,s)}),t),e.is=je,e})(),Ne=re(),Pe=re(),me=re(),gt,Ue,Re=(gt=class{constructor(){f(this,Ue,new Set)}batch(e){i(this,Ue).add(e)}run(){m(me,Array.from(i(this,Ue)))}},Ue=new WeakMap,u(gt,"current"),gt),tr=()=>Re.current;function rt(e){let t=Re.current;t?t=void 0:t=Re.current=new Re;try{e()}finally{t&&(Re.current=void 0,t.run())}}var sr=0;function vs(){return sr>0}var W=Symbol.for("signal"),ve=Symbol.for("effect"),Bt=Symbol.for("destroySignal"),Wt=Symbol.for("createEffect"),rr=Symbol.for("destroyEffect"),De="value",qt="mute",Jt="unmute",xe="destroy",Z=new Map,U,he,x,K,G,le,de,V,Q,qe=(Q=class{constructor(t){f(this,U,new Set);f(this,he,new Set);f(this,x,new Map);f(this,K,new WeakMap);f(this,G,new Map);f(this,le,new Set);f(this,de,new Set);f(this,V);if(t!=null&&t instanceof Q)return t;if(t!=null||(t=this),Z.has(t))return Z.get(t);Z.set(t,this),re(this)}static get(t){if(t!=null)return t instanceof Q?t:Z.get(t)}static findOrCreate(t){if(t==null)throw new Error("Cannot create a group with a null object");return new Q(t)}static destroy(t){console.warn("SignalGroup.destroy(obj) is deprecated. Use SignalGroup.delete(obj) instead."),Q.delete(t)}static delete(t){var s;(s=Z.get(t))==null||s.clear()}static clear(){for(let t of Z.values())t.destroy();Z.clear()}attachGroup(t){if(t===this)throw new Error("Cannot attach a group to itself");return i(this,U).add(t),i(t,V)&&i(t,V)!==this&&i(i(t,V),U).delete(t),g(t,V,this),t}detachGroup(t){return t!==this&&i(this,U).has(t)&&(i(this,U).delete(t),g(t,V,void 0)),t}attachSignal(t){let s=C(t);if(s!=null&&s.destroyed)throw new Error("Cannot attach a destroyed signal to a group");return s&&i(this,he).add(s),t}attachSignalByName(t,s){if(s){this.attachSignal(s);let r=C(s);i(this,x).set(t,r),i(this,G).has(t)?i(this,G).get(t).push(r):i(this,G).set(t,[r]),i(this,K).has(r)?i(this,K).get(r).add(t):i(this,K).set(r,new Set([t]))}else i(this,x).delete(t);return s}hasSignal(t){var s;return i(this,x).has(t)||((s=i(this,V))==null?void 0:s.hasSignal(t))}signal(t){var s,r,a;return(a=(s=i(this,x).get(t))==null?void 0:s.object)!=null?a:(r=i(this,V))==null?void 0:r.signal(t)}detachSignal(t){let s=C(t);if(s&&(i(this,he).delete(s),i(this,K).has(s))){let r=i(this,K).get(s);for(let a of r)if(i(this,G).has(a)){let o=i(this,G).get(a);o.splice(o.indexOf(s),1),o.length===0?(i(this,x).delete(a),i(this,G).delete(a)):i(this,x).get(a)===s&&i(this,x).set(a,o.at(-1))}r.clear(),i(this,K).delete(s)}return t}attachEffect(t){return i(this,le).add(t),t}runEffects(){for(let t of i(this,le))t.run();for(let t of i(this,U))t.runEffects()}attachLink(t){if(t!=null&&t.isDestroyed)throw new Error("Cannot attach a destroyed link to a group");return t&&i(this,de).add(t),t}detachLink(t){return t&&i(this,de).delete(t),t}destroy(){console.warn("SignalGroup#destroy is deprecated. Use SignalGroup#clear instead."),this.clear()}clear(){var t;m(this,xe,this),T(this);for(let s of i(this,U))s.destroy();for(let s of i(this,le))s.destroy();for(let s of i(this,he))X(s);for(let s of i(this,de))s.destroy();i(this,U).clear(),i(this,he).clear(),i(this,x).clear(),i(this,G).clear(),i(this,le).clear(),i(this,de).clear(),(t=i(this,V))==null||t.detachGroup(this),Z.delete(this)}},U=new WeakMap,he=new WeakMap,x=new WeakMap,K=new WeakMap,G=new WeakMap,le=new WeakMap,de=new WeakMap,V=new WeakMap,Q),ts,ir=(ts=ve,class{constructor(e){u(this,ts);u(this,"run",()=>{var e;return(e=this[ve])==null?void 0:e.run()});u(this,"destroy",()=>{var e;(e=this[ve])==null||e.destroy(),this[ve]=void 0});this[ve]=e,k(e,ws.Destroy,()=>{this[ve]=void 0})}}),Ge,$e,ss,bs=(ss=class{constructor(e="id",t=1){f(this,Ge);f(this,$e);g(this,Ge,e),g(this,$e,t)}make(){return Symbol(`${i(this,Ge)}${Nt(this,$e)._++}`)}},Ge=new WeakMap,$e=new WeakMap,ss),mt=[],ms=()=>mt.at(-1),ar=(e,t)=>{mt.push(e);try{return t()}finally{mt.pop()}},nr=e=>e!=null&&typeof e.then=="function",A,_,ee,ue,ce,Ce,ws=(A=class{constructor(t,s){u(this,"id");u(this,"callback");f(this,_);f(this,ee,new Set);f(this,ue,new Set);u(this,"parentEffect");u(this,"childEffects",[]);u(this,"curChildEffectSlot",0);u(this,"autorun",!0);u(this,"shouldRun",!0);f(this,ce);f(this,Ce,!1);u(this,"run",()=>{if(i(this,Ce)||!this.shouldRun)return;let t=tr();t?t.batch(this.id):(this.runCleanupCallback(),this.curChildEffectSlot=0,this.shouldRun=!1,this.hasStaticDeps()?g(this,_,this.callback()):g(this,_,ar(this,this.callback)))});u(this,"destroy",()=>{i(this,Ce)||(m(this,A.Destroy,this),T(this),m(me,rr,this),this.runCleanupCallback(),T(Ne,this),T(me,this),T(Pe,this),g(this,Ce,!0),i(this,ee).clear(),i(this,ue).clear(),this.childEffects.forEach(t=>{t.destroy()}),this.childEffects.length=0,--A.count)});var a;re(this),this.callback=t;let r;(s==null?void 0:s.attach)!=null&&(r=qe.findOrCreate(s.attach),r.attachEffect(this)),this.autorun=(a=s==null?void 0:s.autorun)!=null?a:!0,g(this,ce,s!=null&&s.dependencies?s.dependencies.map(o=>{switch(typeof o){case"string":case"symbol":return r.signal(o);default:return o}}):void 0),this.id=A.idGen.make(),se(me,this.id,"recall",this),++A.count}hasStaticDeps(){return i(this,ce)!=null&&i(this,ce).length>0}saveSignalsFromDeps(){for(let t of i(this,ce))this.whenSignalIsRead(C(t).id)}static createEffect(t,s,r){let a=Array.isArray(s)?s:void 0,o=a?r!=null?r:{dependencies:a}:s;o&&a&&(o.dependencies=a);let n,h=ms();return h!=null?(n=h.getCurrentChildEffect(),n==null&&(n=new A(t,o),h.attachChildEffect(n),m(me,Wt,n)),h.curChildEffectSlot++):(n=new A(t,o),m(me,Wt,n)),n.hasStaticDeps()?n.saveSignalsFromDeps():n.autorun&&n.run(),new ir(n)}getCurrentChildEffect(){return this.childEffects[this.curChildEffectSlot]}attachChildEffect(t){this.childEffects.push(t),this.parentEffect=this}recall(){this.shouldRun=!0,this.autorun&&this.run()}whenSignalIsRead(t){i(this,ee).has(t)||(i(this,ee).add(t),se(Ne,t,"recall",this),k(Pe,t,Bt,this))}[Bt](t){!i(this,ue).has(t)&&i(this,ee).has(t)&&(i(this,ue).add(t),T(Ne,t,this),i(this,ue).size===i(this,ee).size&&this.destroy())}runCleanupCallback(){if(i(this,_)!=null){let t=i(this,_);g(this,_,void 0),nr(t)?Promise.resolve(t).then(s=>{typeof s=="function"&&s()}):t()}}},_=new WeakMap,ee=new WeakMap,ue=new WeakMap,ce=new WeakMap,Ce=new WeakMap,u(A,"idGen",new bs("ef")),u(A,"Destroy","destroy"),u(A,"count",0),A),Je=(...e)=>ws.createEffect(...e),ze=new WeakMap,or=e=>{let t=ze.get(e);return t||(t={},ze.set(e,t)),t},Ie=(e,t)=>{var s,r;return(r=(s=ze.get(e))==null?void 0:s.signals)==null?void 0:r.get(t)},hr=(e,t,s)=>{var a;let r=or(e);(a=r.signals)!=null||(r.signals=new Map),r.signals.set(t,s)};function lr(...e){for(let t of e)if(ze.has(t)){let s=ze.get(t);if(s.signals){for(let r of s.signals.values())X(r);s.signals.clear(),s.signals=void 0}}}function dr(e){let t=C(Mt(e)?e:Ie(...e));t!=null&&!t.muted&&!t.destroyed&&wt(t.id,t.value,{touch:!0})}function jt(e){var t,s;return Mt(e)?(t=C(e))==null?void 0:t.value:(s=C(Ie(...e)))==null?void 0:s.value}var rs,ur=(rs=W,class{constructor(e){u(this,rs);this[W]=e}get get(){return this[W].reader}get set(){return this[W].writer}get value(){return jt(this.get)}set value(e){this.set(e)}onChange(e){let{destroy:t}=Je(()=>e(this.value),[this.get]);return t}get muted(){return this[W].muted}set muted(e){this[W].muted=e}touch(){dr(this)}destroy(){X(this)}}),cr=new bs("si");function Kt(e){var t;vs()||((t=ms())==null||t.whenSignalIsRead(e))}function wt(e,t,s){vs()||m(Ne,e,t,s)}var Mt=e=>e!=null&&e[W]!=null,fr=e=>{let t=s=>{var r;return s?Je(()=>(e.destroyed||Kt(e.id),s(e.value)),[t]):e.destroyed||((r=e.beforeRead)==null||r.call(e),Kt(e.id)),e.value};return Object.defineProperty(t,W,{value:e}),t},fe,F,Cs=(fe=class{constructor(t,s){u(this,"id");u(this,"lazy");u(this,"compare");u(this,"beforeRead");u(this,"muted",!1);u(this,"destroyed",!1);f(this,F);u(this,"valueFn");u(this,"reader");u(this,"writer",(t,s)=>{var o,n,h,l;let r=(o=s==null?void 0:s.lazy)!=null?o:!1,a=(h=(n=s==null?void 0:s.compare)!=null?n:this.compare)!=null?h:(d,p)=>d===p;if((r!==this.lazy||r&&t!==this.valueFn||!r&&!a(t,i(this,F)))&&(r?(g(this,F,void 0),this.valueFn=t,this.lazy=!0):(g(this,F,t),this.valueFn=void 0,this.lazy=!1),!this.muted&&!this.destroyed)){wt(this.id,i(this,F));return}(l=s==null?void 0:s.touch)!=null&&l&&wt(this.id,i(this,F),{touch:!0})});u(this,"object");this.id=cr.make(),++fe.instanceCount,this.lazy=t,this.lazy?(this.value=void 0,this.valueFn=s):(this.value=s,this.valueFn=void 0),this.reader=fr(this),this.object=new ur(this)}get[W](){return this}get value(){return this.lazy&&(g(this,F,this.valueFn()),this.valueFn=void 0,this.lazy=!1),i(this,F)}set value(t){g(this,F,t)}},F=new WeakMap,u(fe,"instanceCount",0),fe),C=e=>e==null?void 0:e[W];function I(e=void 0,t){var r;let s;if(Mt(e))s=C(e);else{let a=(r=t==null?void 0:t.lazy)!=null?r:!1;s=new Cs(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&&qe.findOrCreate(t.attach).attachSignal(s),s.object}var X=(...e)=>{for(let t of e){let s=C(t);s!=null&&!s.destroyed&&(s.destroyed=!0,s.beforeRead=void 0,--Cs.instanceCount,m(Pe,s.id,s.id))}};function gr(e,t){let s=I(),r=(t==null?void 0:t.attach)!=null?qe.findOrCreate(t.attach):void 0;r!=null&&(t!=null&&t.name?r.attachSignalByName(t.name,s):r.attachSignal(s));let a=Je(()=>s.set(e()),{autorun:!1,attach:r}),o=C(s);return o.beforeRead=a.run,k(Pe,o.id,a.destroy),s.get}var S,Ee,is,Es=(is=class{constructor(e){f(this,S,!1);f(this,Ee);u(this,"source");u(this,"lastValue");u(this,"isDestroyed",!1);re(this),this.source=C(e),g(this,Ee,se(Ne,this.source.id,(t,s)=>{!i(this,S)&&!this.isDestroyed&&((s==null?void 0:s.touch)===!0?this.touch():this.write())})),k(Pe,this.source.id,()=>this.destroy())}attach(e){let t=qe.findOrCreate(e);return t.attachLink(this),k(this,xe,()=>{t.detachLink(this)}),t}nextValue(){return new Promise((e,t)=>{let s=[],r=()=>s.forEach(a=>{a()});s.push(k(this,De,a=>{r(),e(a)}),k(this,xe,()=>{r(),t()}))})}asyncValues(e){return xt(this,null,function*(){let t=0;for(;!this.isDestroyed;)try{let s=yield new ot(this.nextValue());if(e&&e(s,t++))break;Pt(this,De),yield s}catch(s){break}st(this,De)})}destroy(){var e;this.isDestroyed||((e=i(this,Ee))==null||e.call(this),g(this,Ee,void 0),m(this,xe,this),st(this,De),T(this),this.lastValue=void 0,this.isDestroyed=!0,Object.freeze(this))}get isMuted(){return i(this,S)}mute(){return!this.isDestroyed&&!i(this,S)&&(g(this,S,!0),m(this,qt,this)),this}unmute(){return!this.isDestroyed&&i(this,S)&&(g(this,S,!1),m(this,Jt,this)),this}toggle(){return this.isDestroyed||(g(this,S,!i(this,S)),m(this,i(this,S)?qt:Jt,this)),i(this,S)}updateValue(e){if(!i(this,S)&&!this.isDestroyed){let{value:t}=this.source;e(t),m(this,De,t),this.lastValue=t}}},S=new WeakMap,Ee=new WeakMap,is),yr=class extends Es{constructor(t,s){super(t);u(this,"target");this.target=C(s),k(Pe,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)})}},pr=class extends Es{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)})}},Ze=new Map;function Xe(e,t,s){var d;let r=C(e),a;if(Ze.has(r)){a=Ze.get(r);let p=(d=C(t))!=null?d:t;if(a.has(p))return a.get(p)}else a=new Map,Ze.set(r,a);let o=C(t),n=o!=null?new yr(e,o):new pr(e,t),h=s==null?void 0:s.attach;h&&n.attach(h);let l=o!=null?o:t;return a.set(l,n),k(n,xe,()=>{a.delete(l),a.size===0&&Ze.delete(r)}),n}var O,Se,vr=(Se=class{constructor(){f(this,O,new Map)}static fromProps(t,s){let r=new Se,a=s?s.map(o=>[o,t[o]]):Object.entries(t);for(let[o,n]of a)i(r,O).set(o,I(n));return r}keys(){return i(this,O).keys()}signals(){return i(this,O).values()}entries(){return i(this,O).entries()}clear(){for(let t of i(this,O).values())t.destroy();i(this,O).clear()}has(t){return i(this,O).has(t)}get(t){if(!i(this,O).has(t)){let s=I();return i(this,O).set(t,s),s}return i(this,O).get(t)}update(t){t.size&&rt(()=>{for(let[s,r]of t.entries())this.get(s).set(r)})}updateFromProps(t,s){rt(()=>{let r=s?s.map(a=>[a,t[a]]):Object.entries(t);for(let[a,o]of r)this.get(a).set(o)})}},O=new WeakMap,Se);function br(e,t,s,r,a,o){function n(Me){if(Me!==void 0&&typeof Me!="function")throw new TypeError("Function expected");return Me}for(var h=r.kind,l=h==="getter"?"get":h==="setter"?"set":"value",d=!t&&e?r.static?e:e.prototype:null,p=t||(d?Object.getOwnPropertyDescriptor(d,r.name):{}),c,v=!1,E=s.length-1;E>=0;E--){var Ke={};for(var pe in r)Ke[pe]=pe==="access"?{}:r[pe];for(var pe in r.access)Ke.access[pe]=r.access[pe];Ke.addInitializer=function(Me){if(v)throw new TypeError("Cannot add initializers after decoration has completed");o.push(n(Me||null))};var ne=(0,s[E])(h==="accessor"?{get:p.get,set:p.set}:p[l],Ke);if(h==="accessor"){if(ne===void 0)continue;if(ne===null||typeof ne!="object")throw new TypeError("Object expected");(c=n(ne.get))&&(p.get=c),(c=n(ne.set))&&(p.set=c),(c=n(ne.init))&&a.unshift(c)}else(c=n(ne))&&(h==="field"?a.unshift(c):p[l]=c)}d&&Object.defineProperty(d,r.name,p),v=!0}function Yt(e,t,s){for(var r=arguments.length>2,a=0;a<t.length;a++)s=r?t[a].call(e,s):t[a].call(e);return r?s:void 0}function mr(e){return function(t,s){var o;let r=(e==null?void 0:e.name)||s.name,a=!!((o=e==null?void 0:e.readAsValue)!=null&&o);return{get(){let n=Ie(this,r);if(n)return a?n.value:n.get()},set(n){var h;(h=Ie(this,r))==null||h.set(n)},init(n){let h=I(n,e);return hr(this,r,h),qe.findOrCreate(this).attachSignalByName(r,h),h.value}}}}var be="value",Ht=(()=>{var r,a,o,n,Ct,Et,d;let e,t=[],s=[];return d=class{constructor(c){f(this,n);f(this,r);f(this,a);f(this,o);g(this,r,[]),g(this,o,Yt(this,t,void 0)),this.value$=Yt(this,s),Pt(this,be),this.value$=Ie(this,be),this.value$.onChange(v=>m(this,be,v)),c&&this.add(...c)}get value(){return i(this,o)}set value(c){g(this,o,c)}add(...c){for(let v of c)i(this,r).push(v);b(this,n,Et).call(this)}pop(){i(this,r).pop(),b(this,n,Et).call(this)}clear(){i(this,r).length=0,b(this,n,Ct).call(this)}dispose(){this.clear(),st(this,be),T(this),lr(this),this.value$.destroy()}},r=new WeakMap,a=new WeakMap,o=new WeakMap,n=new WeakSet,Ct=function(){var c;(c=i(this,a))==null||c.destroy(),g(this,a,void 0)},Et=function(){b(this,n,Ct).call(this),g(this,a,Je(()=>{for(let c of i(this,r)){let v=jt(c);if(v!=null){this.value=v;return}}this.value=void 0},i(this,r))),i(this,a).run()},(()=>{let c=typeof Symbol=="function"&&Symbol.metadata?Object.create(null):void 0;e=[mr({name:be})],br(d,null,e,{kind:"accessor",name:"value",static:!1,private:!1,access:{has:v=>"value"in v,get:v=>v.value,set:(v,E)=>{v.value=E}},metadata:c},t,s),c&&Object.defineProperty(d,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:c})})(),d.Value=be,d})(),Qt="onCreate",we="onDestroy",wr="onParentChanged",Cr="onViewEvent",ct=new Map,ft=!1,Er=(e,t)=>{ct.set(e,t),ft||(ft=!0,queueMicrotask(()=>{ft=!1;let s=Array.from(ct.entries());ct.clear();for(let[r,a]of s)r.set(a)}))},te,Ae,ge,z,L,P,Y,R,ke,D,St,_e,et,as,Sr=(as=class{constructor(e,t){f(this,D);f(this,te);f(this,Ae);f(this,ge,new vr);f(this,z,new Map);f(this,L);f(this,P);f(this,Y,new Set);f(this,R,[]);f(this,ke,0);g(this,te,e),g(this,Ae,t),k(this,we,Ot.Min,this)}get kernel(){return i(this,te)}get uuid(){return i(this,Ae)}get order(){return i(this,ke)}set order(e){i(this,ke)!==e&&(g(this,ke,e),i(this,L)&&this.parent.resortChildren())}get parentUuid(){return i(this,L)||void 0}set parentUuid(e){i(this,L)!==e&&(this.removeFromParent(),g(this,L,e||void 0),g(this,P,e?i(this,te).getEntity(e):void 0),i(this,P)&&i(this,P).addChild(this))}get parent(){return!i(this,P)&&i(this,L)&&g(this,P,i(this,te).getEntity(i(this,L))),i(this,P)}set parent(e){this.parentUuid=e==null?void 0:e.uuid}get hasParent(){return!!i(this,L)}get children(){return i(this,R)}traverse(e){e(this);for(let t of i(this,R))t.traverse(e)}onDestroy(){var e;i(this,ge).clear(),T(this);for(let t of i(this,z).values())t.context.set(void 0),t.unsubscribePathValue(),(e=t.unsubscribeParent)==null||e.call(t),t.valuePath.dispose(),t.inherited.destroy(),t.provide.destroy(),t.context.destroy();g(this,L,void 0),g(this,P,void 0),i(this,Y).clear(),i(this,R).length=0}addChild(e){var t;if(i(this,R).length===0){i(this,Y).add(e.uuid),i(this,R).push(e);return}if(i(this,Y).has(e.uuid))throw new Error(`child with uuid: ${e.uuid} already exists! parentUuid: ${this.uuid}`);i(this,Y).add(e.uuid),i(this,R).push(e),this.resortChildren();for(let[,s]of i(e,z))b(t=e,D,et).call(t,s)}resortChildren(){i(this,R).sort((e,t)=>e.order-t.order)}removeChild(e){i(this,Y).has(e.uuid)&&(i(this,Y).delete(e.uuid),i(this,R).splice(i(this,R).indexOf(e),1))}removeFromParent(){if(i(this,P)){i(this,P).removeChild(this),g(this,P,void 0),g(this,L,void 0);for(let[,e]of i(this,z))e.unsubscribeParent&&(e.unsubscribeParent(),e.unsubscribeParent=void 0)}}reSubscribeToParentContexts(){for(let[,e]of i(this,z))b(this,D,et).call(this,e)}dispatchMessageToView(e,t,s,r=!1){i(this,te).dispatchMessageToView({uuid:i(this,Ae),type:e,data:t,transferables:s,traverseChildren:r})}dispatchViewEvents(e){for(let{type:t,data:s}of e)m(this,Cr,t,s)}dispatchViewEvent(e,t){this.dispatchViewEvents([{type:e,data:t}])}getPropertyReader(e){return b(this,D,St).call(this,e).get}getPropertyWriter(e){return b(this,D,St).call(this,e).set}setProperties(e){rt(()=>{for(let[t,s]of e)this.setProperty(t,s)})}setProperty(e,t){this.getPropertyWriter(e)(t)}getProperty(e){return jt(this.getPropertyReader(e))}propKeys(){return Array.from(i(this,ge).keys())}propEntries(){return Array.from(i(this,ge).entries()).map(([e,t])=>[e,t.value])}hasContext(e){return i(this,z).has(e)}useContext(e){return b(this,D,_e).call(this,e).context.get}provideContext(e){return b(this,D,_e).call(this,e).provide}},te=new WeakMap,Ae=new WeakMap,ge=new WeakMap,z=new WeakMap,L=new WeakMap,P=new WeakMap,Y=new WeakMap,R=new WeakMap,ke=new WeakMap,D=new WeakSet,St=function(e){return i(this,ge).get(e)},_e=function(e){if(i(this,z).has(e))return i(this,z).get(e);let t=I(),s=I(),r=I(),a=new Ht([s,t]),o=se(a,Ht.Value,h=>{Er(r,h)}),n={name:e,inherited:t,provide:s,context:r,valuePath:a,unsubscribePathValue:o};return i(this,z).set(e,n),b(this,D,et).call(this,n),n},et=function(e){var t,s;if((t=e.unsubscribeParent)==null||t.call(e),e.unsubscribeParent=void 0,this.parent){let r=b(s=this.parent,D,_e).call(s,e.name),a=Xe(r.context,e.inherited);e.unsubscribeParent=()=>{a.destroy()}}else e.inherited.set(void 0)},as);function Ar(e,t){e.indexOf(t)===-1&&e.push(t)}var H,j,ns,Ss=(ns=class{constructor(){f(this,H,new Map);f(this,j,new Map)}static get(e){return e!=null?e:kr}define(e,t){i(this,H).has(e)?Ar(i(this,H).get(e).constructors,t):i(this,H).set(e,{token:e,constructors:[t]})}appendRoute(e,t){if(i(this,j).has(e)){let s=i(this,j).get(e);for(let r of t)s.add(r)}else i(this,j).set(e,new Set(t))}clearRoute(e){i(this,j).delete(e)}findTokensByRoute(e){let t=new Set([e]),s=i(this,j).has(e)?[...i(this,j).get(e)]:[];for(;s.length;){let r=s.shift();t.has(r)||(t.add(r),i(this,j).has(r)&&s.push(...Array.from(i(this,j).get(r)).filter(a=>!t.has(a))))}return Array.from(t)}findConstructors(e){let t=this.findTokensByRoute(e),s=new Set;for(let r of t){let a=i(this,H).get(r);if(a)for(let o of a.constructors)s.add(o)}return s.size>0?Array.from(s):void 0}hasToken(e){return i(this,H).has(e)}hasRoute(e){return i(this,j).has(e)}clear(){i(this,H).clear(),i(this,j).clear()}},H=new WeakMap,j=new WeakMap,ns),kr=new Ss,J;(function(e){e[e.CreateAndDestroy=0]="CreateAndDestroy",e[e.JustCreate=1]="JustCreate",e[e.DestroyOnly=2]="DestroyOnly"})(J||(J={}));var Zt=e=>e.displayName||e.name,w,$,Oe,Be,B,os,Or=(os=class{constructor(e){f(this,w);f(this,$);f(this,Oe);f(this,Be);f(this,B);this.logger=new Vs("Kernel"),g(this,w,new Map),g(this,$,new Set),g(this,B,!0),re(this),this.registry=Ss.get(e)}getEntity(e){var s;let t=(s=i(this,w).get(e))==null?void 0:s.entity;if(!t)throw new Error(`entity with uuid "${e}" not found!`);return t}hasEntity(e){return i(this,w).has(e)}traverseLevelOrderBFS(e=!1){if(i(this,B)){let t=new Map,s=(r,a)=>{let o=this.getEntity(r);t.has(a)?t.get(a).push(o):t.set(a,[o]);for(let n of o.children)s(n.uuid,a+1)};i(this,$).forEach(r=>s(r,0)),g(this,Oe,Array.from(t.entries()).sort((r,a)=>r[0]-a[0]).map(([,r])=>r).flat()),g(this,Be,i(this,Oe).slice().reverse()),g(this,B,!1)}return e?i(this,Be):i(this,Oe)}getEntityGraph(){return Array.from(i(this,$)).map(e=>this.getEntityGraphNode(e))}getEntityGraphNode(e){if(!i(this,w).has(e))return;let{token:t,entity:s}=i(this,w).get(e);return{token:t,entity:s,props:Object.fromEntries(s.propEntries()),children:s.children.map(r=>this.getEntityGraphNode(r.uuid))}}upgradeEntities(){for(let e of this.traverseLevelOrderBFS(!0))this.updateShadowObjects(e.uuid,J.DestroyOnly);for(let e of this.traverseLevelOrderBFS(!1))this.updateShadowObjects(e.uuid,J.JustCreate)}run(e){this.logger.isDebug&&this.logger.debug("sync",e),rt(()=>{for(let t of e.changeTrail)this.parse(t)})}parse(e){switch(e.type){case q.CreateEntities:this.createEntity(e.uuid,e.token,e.parentUuid,e.order,e.properties),g(this,B,!0);break;case q.DestroyEntities:this.destroyEntity(e.uuid),g(this,B,!0);break;case q.SetParent:this.setParent(e.uuid,e.parentUuid,e.order),g(this,B,!0);break;case q.UpdateOrder:this.updateOrder(e.uuid,e.order),g(this,B,!0);break;case q.ChangeProperties:this.changeProperties(e.uuid,e.properties);break;case q.ChangeToken:this.changeToken(e.uuid,e.token);break;case q.SendEvents:this.dispatchEventsToEntity(e.uuid,e.events);break}}createEntity(e,t,s,r=0,a){let o=new Sr(this,e);o.order=r;let n={token:t,entity:o,usedConstructors:new Map};i(this,w).set(e,n),s&&(o.parentUuid=s),o.hasParent||i(this,$).add(e),a&&o.setProperties(a),this.createShadowObjects(e)}destroyEntity(e){if(!i(this,w).has(e))return;let{entity:t,usedConstructors:s}=i(this,w).get(e);t.removeFromParent(),m(t,we,this),s.clear(),i(this,w).delete(t.uuid),i(this,$).delete(t.uuid)}setParent(e,t,s=0){let r=this.getEntity(e);r.parentUuid===t&&r.order===s||(r.removeFromParent(),r.order=s,r.parentUuid=t,r.hasParent?i(this,$).delete(e):i(this,$).add(e),r.reSubscribeToParentContexts(),queueMicrotask(()=>{this.logger.isDebug&&this.logger.debug("entity.onParentChanged",{uuid:e,parentUuid:t,order:s,entity:r}),m(r,wr,r)}))}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)}changeToken(e,t){if(!i(this,w).has(e))return;let s=i(this,w).get(e);s.token!==t&&(s.token=t,this.updateShadowObjects(e))}dispatchMessageToView(e){queueMicrotask(()=>{m(this,yt,e)})}updateShadowObjects(e,t=J.CreateAndDestroy){let s=i(this,w).get(e),r=new Set(this.registry.findConstructors(s.token)),a=t===J.CreateAndDestroy||t===J.DestroyOnly,o=t===J.CreateAndDestroy||t===J.JustCreate;if(a){for(let[n,h]of s.usedConstructors)if(!r.has(n)){s.usedConstructors.delete(n);for(let l of h)this.destroyShadowObject(l,s.entity)}}if(o)for(let n of r)s.usedConstructors.has(n)||this.constructShadowObject(n,s)}constructShadowObject(e,t){let s=new Set,r=new Set,a=new Map,o=new Map,n=new Map,h=re(new e({entity:t.entity,provideContext(l,d,p){let c=o.get(l);if(c===void 0){c=I(d,p?{compare:p}:void 0),o.set(l,c);let v=Xe(c,t.entity.provideContext(l));r.add(v.destroy.bind(v))}return c},useContext(l,d){let p=a.get(l);if(p===void 0){p=I(void 0,d?{compare:d}:void 0).get,a.set(l,p);let c=Xe(t.entity.useContext(l),p);r.add(c.destroy.bind(c))}return p},useProperty(l,d){let p=n.get(l);if(p===void 0){p=I(void 0,d?{compare:d}:void 0).get,n.set(l,p);let c=Xe(t.entity.getPropertyReader(l),p);r.add(c.destroy.bind(c))}return p},createEffect(...l){let d=Je(...l);return r.add(d.destroy),d},createSignal(...l){let d=I(...l);return r.add(()=>{X(d)}),d},createMemo(...l){let d=gr(...l);return r.add(()=>{X(d)}),d},on(...l){let d=se(...l);return r.add(d),d},once(...l){let d=k(...l);return r.add(d),d},onDestroy(l){s.add(l)}}));return this.logger.isInfo&&this.logger.info("create shadow-object",Zt(e),{shadowObject:h,entity:t.entity}),k(t.entity,we,Ot.Low,()=>{this.logger.isInfo&&this.logger.info("destroy shadow-object",Zt(e),{shadowObject:h,entity:t.entity});for(let d of s)d();for(let d of r)d();for(let d of a.values())X(d);for(let d of n.values())X(d);for(let d of o.values())X(d);s.clear(),r.clear(),a.clear(),n.clear(),o.clear();let l=t.usedConstructors.get(e);l&&(l.delete(h),l.size===0&&t.usedConstructors.delete(e))}),t.usedConstructors.has(e)?t.usedConstructors.get(e).add(h):t.usedConstructors.set(e,new Set([h])),this.attachShadowObject(h,t.entity),h}createShadowObjects(e){var s;let t=i(this,w).get(e);(s=this.registry.findConstructors(t.token))==null||s.forEach(r=>{this.constructShadowObject(r,t)})}findShadowObjects(e){if(!i(this,w).has(e))return[];let{usedConstructors:t}=i(this,w).get(e);return Array.from(new Set(Array.from(t.values()).map(s=>Array.from(s)).flat()))}attachShadowObject(e,t){se(t,e),typeof e[Qt]=="function"&&e[Qt](t)}destroyShadowObject(e,t){typeof e[we]=="function"&&e[we](t),m(e,we,t),T(t,e)}destroy(){for(let e of this.traverseLevelOrderBFS().reverse())this.destroyEntity(e.uuid)}},w=new WeakMap,$=new WeakMap,Oe=new WeakMap,Be=new WeakMap,B=new WeakMap,os);async function As(e,t,s,r=!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(h=>As(e,h,s,!1)));let{registry:a}=e;if(t.define)for(let[h,l]of Object.entries(t.define))a.define(h,l);if(t.routes)for(let[h,l]of Object.entries(t.routes))a.appendRoute(h,l);await((n=(o=t.initialize)==null?void 0:o.call(t,{define:(h,l)=>a.define(h,l),kernel:e,registry:a}))!=null?n:Promise.resolve()),r&&e.upgradeEntities()}var Pr=e=>(typeof e=="string"&&(e=new URL(e,globalThis.location.href)),e.toString()),We,ie,ks,Os,Ps,hs,jr=(hs=class{constructor(e){f(this,ie);f(this,We,new Set);var t,s;this.kernel=(t=e==null?void 0:e.kernel)!=null?t:new Or,this.postMessage=(s=e==null?void 0:e.postMessage)!=null?s:self.postMessage.bind(self),se(this.kernel,yt,"onMessageToView",this)}route(e){var t;switch(e.data.type){case Ts:b(this,ie,ks).call(this,e.data);break;case Ds:b(this,ie,Os).call(this,e.data);break;case Ls:b(this,ie,Ps).call(this,e.data);break;default:console.warn("[MessageRouter] unknown message",(t=e.data.type)!=null?t:e.data)}}onMessageToView(e){let r=e,{transferables:t}=r,s=Rt(r,["transferables"]);this.postMessage({type:yt,data:s},{transfer:t})}},We=new WeakMap,ie=new WeakSet,ks=async function(e){try{let t=await import(Pr(e.importModule));t[lt]?(await As(this.kernel,t[lt],i(this,We)),this.postMessage({type:ht,url:e.importModule})):this.postMessage({type:ht,url:e.importModule,error:`module has no "${lt}" export`})}catch(t){console.error("[MessageRouter] failed to import module",t),this.postMessage({type:ht,url:e.importModule,error:`${t}`})}},Os=function(e){try{this.kernel.run(e)}catch(t){console.error("[MessageRouter] failed to apply change trail",t),this.postMessage({type:Ft,serial:e.serial,error:t.toString()})}e.serial&&this.postMessage({type:Ft,serial:e.serial})},Ps=function(e){console.debug("[MessageRouter] on destroy",e),T(this.kernel,this),i(this,We).clear(),this.postMessage({type:Ns})},hs),Mr=class{constructor(){this.onmessage=e=>{var t;e.data.type===N?globalThis[M]=e.data.config:((t=this.router)!=null||(this.router=new jr),this.router.route(e))}}start(){self.addEventListener("message",this.onmessage),self.postMessage({type:Rs})}};console.debug("@spearwolf/shadow-objects/WorkerRuntime: hello!");var Tr=new Mr;Tr.start();\n/*! Bundled license information:\n\n@spearwolf/eventize/lib/index.mjs:\n (*!\n =============================================================================\n @spearwolf/eventize 4.0.1+build.20240804\n \u2014 https://github.com/spearwolf/eventize.git\n =============================================================================\n \n Copyright 2015-2024 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 js=()=>new Bt;var Le=(s,e,t=1e3,r)=>new Promise((i,n)=>{let o,l,a=()=>{clearTimeout(o),s.removeEventListener("message",l)};t!==0&&t!==1/0&&(o=setTimeout(()=>{a(),n(new Error(`Timeout waiting for message of type: ${e}`))},t)),l=h=>{if(h.data.type===e)try{(!r||r(h.data))&&(a(),i())}catch(u){a(),n(u.toString())}},s.addEventListener("message",l)});var lr=s=>{let e;if(s!=null&&Array.isArray(s))for(let t of s)t.transferables&&(e?e=[...e,...t.transferables]:e=t.transferables,delete t.transferables);return e},gt=class s{static{this.WorkerLoaded="workerLoaded"}#e;#t;#s;get isDestroyed(){return this.#t}get workerLoaded(){return ue(this,s.WorkerLoaded)}constructor(){this.#t=!1,this.#s=0,this.logger=new x("RemoteWorkerEnv"),$(this,s.WorkerLoaded)}async start(){if(this.#e)return this.logger.isWarn&&this.logger.warn("already started"),this.workerLoaded.then(()=>{if(this.isDestroyed)throw"worker was destroyed"});let e=this.#e=js();this.configureConsoleLogger(e);try{if(await Le(e,fs,ys),this.isDestroyed)throw"worker was destroyed";e.addEventListener("message",this.onMessageFromWorker.bind(this)),queueMicrotask(()=>{c(this,s.WorkerLoaded,this)})}catch(t){throw this.logger.error("failed to start",t),this.#e=void 0,t}}applyChangeTrail(e,t){let r=lr(e),i={type:us,changeTrail:e},n=++this.#s;return t&&(i.serial=n),this.#e.postMessage(i,r),t?Le(this.#e,ds,bs,o=>{if(o.error)throw o.error;return o.serial===n}):Promise.resolve()}importScript(e){return e=dt(e),this.#e.postMessage({type:ls,importModule:e}),Le(this.#e,ps,ms,t=>{if(t.error)throw t.error;return t.url===e})}destroy(){if(!this.#e)return;let e=this.#e;this.#e=void 0,this.#t=!0,e.postMessage({type:cs}),Le(e,gs,vs).finally(()=>{e.terminate()})}onMessageFromWorker(e){e.data?.type===ge?this.onMessageToView?.(e.data.data):this.logger.isDebug&&this.logger.debug("message from worker",e)}configureConsoleLogger(e){let t=`${R}.RemoteWorkerEnv.workerConfig`,r=JSON.parse(localStorage.getItem(t)??"{}");this.logger.isInfo&&this.logger.info("load console-logger worker config",{localStorageKey:t,workerConfig:r}),e.postMessage({type:R,config:{...x.sharedConfig,enable:this.logger.isEnabled,...r,...x.isEnabled?{}:{enable:!1}}})}};var _e,je=class extends J{static{this.observedAttributes=[...J.observedAttributes,tt,rt,st]}static{this.DefaultAutoSync="frame"}#e;#t;#s;#i;#r;constructor(){super(),this.isShaeWorkerElement=!0,this.shadowEnv=new j,this.logger=new x("ShaeWorkerElement"),this.autostart=!0,this.isConnected$=f(!1),this.autoSync$=f(_e.DefaultAutoSync),this.src$=f(""),this.#e=!1,this.#t=!1,this.ns$.onChange(e=>{this.shadowEnv.view=M.get(e)}),g(this.shadowEnv,j.ContextCreated,()=>{this.#r?.run(),this.dispatchEvent(new CustomEvent(j.ContextCreated.toLowerCase(),{bubbles:!1,detail:{shadowEnv:this.shadowEnv}}))}),g(this.shadowEnv,j.ContextLost,()=>{this.dispatchEvent(new CustomEvent(j.ContextLost.toLowerCase(),{bubbles:!1,detail:{shadowEnv:this.shadowEnv}}))}),this.autoSync$.onChange(e=>{let t=this.hasAttribute(N),r=t?this.getAttribute(N):void 0;e===_e.DefaultAutoSync?t&&r!==e&&this.setAttribute(N,e):r!==e&&this.setAttribute(N,e)}),this.#o(),this.#n()}#n(){this.#r=b(()=>{let e=this.src$.get();e&&this.importScript(e)},{autorun:!1})}get shouldAutostart(){return this.autostart&&!Re(this,Ts)}get autoSync(){return this.autoSync$.value}set autoSync(e){typeof e!="string"&&(e=e?_e.DefaultAutoSync:"no"),this.autoSync$.set(`${e}`.trim().toLowerCase())}get frameLoop(){return this.#s??=new ye,this.#s}[ye.OnFrame](){this.syncShadowObjects()}async importScript(e){if(!e)throw new Error("src is blank");let t=await this.shadowEnv.ready();return this.logger.isInfo&&this.logger.info("shadowEnv importScript:",e,{shadowEnv:t}),await t.envProxy.importScript(e),this}connectedCallback(){k(()=>{this.hasAttribute(N)&&this.autoSync$.set(this.getAttribute(N)),this.isConnected$.set(!0)}),this.shouldAutostart&&this.start()}disconnectedCallback(){this.isConnected$.set(!1),this.#a()}attributeChangedCallback(e){if(super.attributeChangedCallback(e),e===tt&&this.shadowEnv.envProxy!=null)throw new Error('Changing the "local" attribute after the shadowEnv has been created is not supported.');if(e===st&&this.#u(),e===N&&(this.autoSync=this.hasAttribute(N)?this.getAttribute(N):!0),e===rt){let t=(this.getAttribute(rt)||"").trim();this.src$.set(t),this.shadowEnv.isReady&&this.#r?.run()}}start(){if(!this.#t){if(this.#e=!1,this.shadowEnv.view??=M.get(this.ns),this.shadowEnv.envProxy==null){let e=Re(this,tt)?new pt:new gt;this.shadowEnv.envProxy=e,this.#u()}this.#t=!0}return this.shadowEnv.ready()}destroy(){this.#i?.destroy(),this.#r?.destroy(),S(this.isConnected$,this.autoSync$,this.src$),this.shadowEnv.envProxy=void 0,this.shadowEnv.destroy()}#a(){this.#e||(this.#e=!0,queueMicrotask(()=>{this.#e&&this.destroy()}))}#o(){this.#i=b(()=>{if(this.isConnected$.get()){let e=(this.autoSync$.get()||_e.DefaultAutoSync).trim().toLowerCase(),t;if(["true","yes","on","frame","auto-sync"].includes(e))return this.logger.isDebug&&this.logger.debug("auto-sync",e,this),this.frameLoop.start(this),()=>{this.frameLoop.stop(this)};if(e.toLowerCase().endsWith("fps")){let r=parseInt(e,10);r>0?t=Math.floor(1e3/r):this.logger.isWarn&&this.logger.warn(`invalid auto-sync value: ${e}`)}else t=parseInt(e,10),isNaN(t)&&(t=void 0,["false","no","off"].includes(e)||this.logger.error(`invalid auto-sync value: ${e}`));if(t!==void 0&&t>0){this.logger.isDebug&&this.logger.debug("auto-sync interval (ms)",t,this);let r=setInterval(()=>{this.syncShadowObjects()},t);return()=>{clearInterval(r)}}else this.logger.isDebug&&this.logger.debug("auto-sync off",this)}},[this.autoSync$,this.isConnected$])}#u(){let e=this.shadowEnv.envProxy;e?.isLocalEnv&&(e.disableStructuredClone=this.hasAttribute(st))}};_e=je;customElements.define(ks,je);globalThis.SHADOW_ENTS_BUNDLE_LOADED=!0;
21
+ var st="*",Ye=1,Ce=2,Ee=4,F=Symbol.for("eventize"),$s="[eventize]",It=s=>s===st,Ke=s=>{switch(typeof s){case"string":case"symbol":return!0;default:return!1}},Je=typeof console<"u",Is=Je?console[console.warn?"warn":"log"].bind(console,$s):()=>{},Fs=(s,t,e)=>(Object.defineProperty(s,t,{value:e,configurable:!0}),s),Ws=0,Ze=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:Ws++})}isKnown(s){return this.eventNames.has(s)}emit(s,t,e=[]){if(It(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}},ve=(s,t,e,r)=>{if(typeof t=="function"){let i=t.apply(s,e);i!=null&&r?.(i)}},zs=(s,t,e,r)=>ve(t,t.emit,[s].concat(e),r),Us=s=>{switch(typeof s){case"function":return Ye;case"string":case"symbol":return Ce;case"object":return Ee}},Vs=0,Gs=()=>++Vs,Xe=class{id;eventName;isCatchEmAll;priority;listener;listenerObject;listenerType;callAfterApply;isRemoved;refCount;constructor(s,t,e,r=null){this.id=Gs(),this.eventName=s,this.isCatchEmAll=It(s),this.listener=e,this.listenerObject=r,this.priority=t,this.listenerType=Us(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 Ye:ve(i,r,t,e),this.callAfterApply&&this.callAfterApply();break;case Ce:ve(i,i[r],t,e),this.callAfterApply&&this.callAfterApply();break;case Ee:{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 zs(s,r,t,e);this.callAfterApply&&this.callAfterApply()}break}}}},Bs=(s,t)=>s.priority!==t.priority?t.priority-s.priority:s.id-t.id,qe=s=>s?.slice(0),He=(s,t)=>{let e=s.indexOf(t);e>-1&&s.splice(e,1)},qs=s=>s===Ee||s===Ce,we=(s,t,e)=>{let r=s.findIndex(i=>i.isEqual(t,e));r>-1&&(s[r].isRemoved=!0,s.splice(r,1))},$t=(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)we(s,i,void 0)},be=s=>{s&&(s.forEach(t=>{t.isRemoved=!0}),s.length=0)},Hs=(s,t)=>s.listenerType===t.listenerType?s.priority===t.priority&&s.eventName===t.eventName&&s.listenerObject===t.listenerObject&&s.listener===t.listener:!1,Qs=(s,t)=>{if(qs(s.listenerType))return t.find(e=>Hs(s,e))},Ys=(s,t)=>{let e=Qs(s,t);return e?(e.refCount+=1,e):(t.push(s),t.sort(Bs),s)},Ks=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 Ys(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&&It(s)?this.removeAllListeners():t==null&&Ke(s)?be(this.namedListeners.get(s)):s instanceof Xe?s.isRemoved||(s.refCount-=1,s.refCount<1&&(s.isRemoved=!0,this.namedListeners.forEach(r=>He(r,s)),He(this.catchEmAllListeners,s))):e?It(s)?$t(this.catchEmAllListeners,st,s):this.namedListeners.forEach(r=>$t(r,s,t)):(this.namedListeners.forEach(r=>{we(r,s,t),$t(r,void 0,s)}),we(this.catchEmAllListeners,s,t),$t(this.catchEmAllListeners,void 0,s))}removeAllListeners(){this.namedListeners.forEach(s=>be(s)),this.namedListeners.clear(),be(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[F]);function wt(s){if(rt(s))return s;let t=new Ks,e=new Ze;return Fs(s,F,{keeper:e,store:t}),s}var it={Max:Number.POSITIVE_INFINITY,AAA:1e9,BB:1e6,C:1e3,Default:0,Low:-1e4,Min:Number.NEGATIVE_INFINITY},Js=(s,t,e,r,i,n,o)=>{let h=s.add(new Xe(e,r,i,n));return t.emit(e,h,o),h},Zs=(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=it.Default,n==="string"||n==="symbol"||Array.isArray(e[0])?[o,a,c]=e:(o=st,[a,c]=e)),!a&&Je)throw Is("called with insufficient arguments!",e),"subscribeTo() called with insufficient arguments!";let u=l=>g=>Js(s,t,g,l,a,c,r);return Array.isArray(o)?o.map(l=>Array.isArray(l)?u(l[1])(l[0]):u(h)(l)):u(h)(o)},ts=(s,t,e)=>{let r=[],i=Zs(s,t,e,r);return Ze.publish(r),i},Qe=s=>t=>{t.callAfterApply=()=>{s?.()}},es=(s,t)=>Object.assign(()=>m(s,t),Array.isArray(t)?{listeners:t}:{listener:t}),ss=(s,t,e,r)=>{let{store:i,keeper:n}=s[F];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))},y=(s,...t)=>{let e=wt(s),{store:r,keeper:i}=e[F];return es(e,ts(r,i,t))},C=(s,...t)=>{let e=wt(s),{store:r,keeper:i}=e[F],n=ts(r,i,t),o=es(e,n),h=!1,a=()=>{h||(o(),h=!0)};return Array.isArray(n)?n.forEach(Qe(a)):Qe(a)(n),a},ct=(s,t)=>new Promise(e=>{C(s,t,e)}),m=(s,t,e)=>{if(!rt(s))throw new Error("object is not eventized");let{store:r,keeper:i}=s[F],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")):Ke(t)&&i.remove(t)},d=(s,t,...e)=>{if(!rt(s))throw new Error("object is not eventized");ss(s,t,e)},Xs=(s,t,...e)=>{if(!rt(s))throw new Error("object is not eventized");let r=[];return ss(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()},W=(s,t)=>{let e=wt(s),{keeper:r}=e[F];r.add(t)},G=(s,t)=>{if(!rt(s))throw new Error("object is not eventized");let{keeper:e}=s[F];e.clear(t)},E=(()=>{let s=(t={})=>wt(t);return s.inject=(t={})=>(t=wt(t),Object.assign(t,{on:(...e)=>y(t,...e),once:(...e)=>C(t,...e),onceAsync:e=>ct(t,e),off:(e,r)=>m(t,e,r),emit:(e,...r)=>d(t,e,...r),emitAsync:(e,...r)=>Xs(t,e,...r),retain:e=>W(t,e),retainClear:e=>G(t,e)}),t),s.is=rt,s})();var Se=s=>rt(s)?s[F]?.store?.getSubscriptionCount()??0:0;var B=E(),j=E(),q=E();var nt=class{static current;#t=new Set;batch(t){this.#t.add(t)}run(){d(q,Array.from(this.#t))}},rs=()=>nt.current;function A(s){let t=nt.current;t?t=void 0:t=nt.current=new nt;try{s()}finally{t&&(nt.current=void 0,t.run())}}var xe=0;function ke(s){xe++;try{s()}finally{xe--}}function Ft(){return xe>0}var T=Symbol.for("signal"),ot=Symbol.for("effect"),Ae=Symbol.for("destroySignal"),Oe=Symbol.for("createEffect"),is=Symbol.for("destroyEffect"),ft="value",Te="mute",Pe="unmute",H="destroy";var Q=new Map,P=class s{#t=new Set;#e=new Set;#s=new Map;#r=new WeakMap;#i=new Map;#n=new Set;#o=new Set;#a;static get(t){if(t!=null)return t instanceof s?t:Q.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){Q.get(t)?.clear()}static clear(){for(let t of Q.values())t.destroy();Q.clear()}constructor(t){if(t!=null&&t instanceof s)return t;if(t??=this,Q.has(t))return Q.get(t);Q.set(t,this),E(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=b(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=b(e);this.#s.set(t,r),this.#i.has(t)?this.#i.get(t).push(r):this.#i.set(t,[r]),this.#r.has(r)?this.#r.get(r).add(t):this.#r.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=b(t);if(e&&(this.#e.delete(e),this.#r.has(e))){let r=this.#r.get(e);for(let i of r)if(this.#i.has(i)){let n=this.#i.get(i);n.splice(n.indexOf(e),1),n.length===0?(this.#s.delete(i),this.#i.delete(i)):this.#s.get(i)===e&&this.#s.set(i,n.at(-1))}r.clear(),this.#r.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,H,this),m(this);for(let t of this.#t)t.destroy();for(let t of this.#n)t.destroy();for(let t of this.#e)S(t);for(let t of this.#o)t.destroy();this.#t.clear(),this.#e.clear(),this.#s.clear(),this.#i.clear(),this.#n.clear(),this.#o.clear(),this.#a?.detachGroup(this),Q.delete(this)}};var Wt=class{[ot];constructor(t){this[ot]=t,C(t,dt.Destroy,()=>{this[ot]=void 0})}run=()=>this[ot]?.run();destroy=()=>{this[ot]?.destroy(),this[ot]=void 0}};var pt=class{#t;#e;constructor(t="id",e=1){this.#t=t,this.#e=e}make(){return Symbol(`${this.#t}${this.#e++}`)}};var Re=[],zt=()=>Re.at(-1),ns=(s,t)=>{Re.push(s);try{return t()}finally{Re.pop()}};var tr=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;parentEffect;childEffects=[];curChildEffectSlot=0;autorun=!0;shouldRun=!0;#r;#i=!1;constructor(t,e){E(this),this.callback=t;let r;e?.attach!=null&&(r=P.findOrCreate(e.attach),r.attachEffect(this)),this.autorun=e?.autorun??!0,this.#r=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(),y(q,this.id,"recall",this),++s.count}hasStaticDeps(){return this.#r!=null&&this.#r.length>0}saveSignalsFromDeps(){for(let t of this.#r)this.whenSignalIsRead(b(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=zt();return h!=null?(o=h.getCurrentChildEffect(),o==null&&(o=new s(t,n),h.attachChildEffect(o),d(q,Oe,o)),h.curChildEffectSlot++):(o=new s(t,n),d(q,Oe,o)),o.hasStaticDeps()?o.saveSignalsFromDeps():o.autorun&&o.run(),new Wt(o)}getCurrentChildEffect(){return this.childEffects[this.curChildEffectSlot]}attachChildEffect(t){this.childEffects.push(t),this.parentEffect=this}run=()=>{if(this.#i||!this.shouldRun)return;let t=rs();t?t.batch(this.id):(this.runCleanupCallback(),this.curChildEffectSlot=0,this.shouldRun=!1,this.hasStaticDeps()?this.#t=this.callback():this.#t=ns(this,this.callback))};recall(){this.shouldRun=!0,this.autorun&&this.run()}whenSignalIsRead(t){this.#e.has(t)||(this.#e.add(t),y(B,t,"recall",this),C(j,t,Ae,this))}[Ae](t){!this.#s.has(t)&&this.#e.has(t)&&(this.#s.add(t),m(B,t,this),this.#s.size===this.#e.size&&this.destroy())}runCleanupCallback(){if(this.#t!=null){let t=this.#t;this.#t=void 0,tr(t)?Promise.resolve(t).then(e=>{typeof e=="function"&&e()}):t()}}destroy=()=>{this.#i||(d(this,s.Destroy,this),m(this),d(q,is,this),this.runCleanupCallback(),m(B,this),m(q,this),m(j,this),this.#i=!0,this.#e.clear(),this.#s.clear(),this.childEffects.forEach(t=>{t.destroy()}),this.childEffects.length=0,--s.count)}};var v=(...s)=>dt.createEffect(...s);var Ct=new WeakMap,er=s=>{let t=Ct.get(s);return t||(t={},Ct.set(s,t)),t},O=(s,t)=>Ct.get(s)?.signals?.get(t);var os=(s,t,e)=>{let r=er(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())S(r);e.signals.clear(),e.signals=void 0}}}function as(s){let t=b(gt(s)?s:O(...s));t!=null&&!t.muted&&!t.destroyed&&Ut(t.id,t.value,{touch:!0})}function at(s){return gt(s)?b(s)?.value:b(O(...s))?.value}var Vt=class{[T];constructor(t){this[T]=t}get get(){return this[T].reader}get set(){return this[T].writer}get value(){return at(this.get)}set value(t){this.set(t)}onChange(t){let{destroy:e}=v(()=>t(this.value),[this.get]);return e}get muted(){return this[T].muted}set muted(t){this[T].muted=t}touch(){as(this)}destroy(){S(this)}};var sr=new pt("si");function hs(s){Ft()||zt()?.whenSignalIsRead(s)}function Ut(s,t,e){Ft()||d(B,s,t,e)}var gt=s=>s!=null&&s[T]!=null,rr=s=>{let t=e=>(e?v(()=>(s.destroyed||hs(s.id),e(s.value)),[t]):s.destroyed||(s.beforeRead?.(),hs(s.id)),s.value);return Object.defineProperty(t,T,{value:s}),t},Gt=class s{static instanceCount=0;id;lazy;get[T](){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)){Ut(this.id,this.#t);return}(e?.touch??!1)&&Ut(this.id,this.#t,{touch:!0})};object;constructor(t,e){this.id=sr.make(),++s.instanceCount,this.lazy=t,this.lazy?(this.value=void 0,this.valueFn=e):(this.value=e,this.valueFn=void 0),this.reader=rr(this),this.object=new Vt(this)}},b=s=>s?.[T];function f(s=void 0,t){let e;if(gt(s))e=b(s);else{let r=t?.lazy??!1;e=new Gt(r,s),e.beforeRead=t?.beforeRead,e.compare=t?.compare}return t?.attach!=null&&P.findOrCreate(t.attach).attachSignal(e),e.object}var S=(...s)=>{for(let t of s){let e=b(t);e!=null&&!e.destroyed&&(e.destroyed=!0,e.beforeRead=void 0,--Gt.instanceCount,d(j,e.id,e.id))}};function Me(s,t){let e=f(),r=t?.attach!=null?P.findOrCreate(t.attach):void 0;r!=null&&(t?.name?r.attachSignalByName(t.name,e):r.attachSignal(e));let i=v(()=>e.set(s()),{autorun:!1,attach:r}),n=b(e);return n.beforeRead=i.run,C(j,n.id,i.destroy),e.get}var Bt=class{#t=!1;#e;source;lastValue;isDestroyed=!1;constructor(t){E(this),this.source=b(t),this.#e=y(B,this.source.id,(e,r)=>{!this.#t&&!this.isDestroyed&&(r?.touch===!0?this.touch():this.write())}),C(j,this.source.id,()=>this.destroy())}attach(t){let e=P.findOrCreate(t);return e.attachLink(this),C(this,H,()=>{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,H,()=>{i(),e()}))})}async*asyncValues(t){let e=0;for(;!this.isDestroyed;)try{let r=await this.nextValue();if(t&&t(r,e++))break;W(this,ft),yield r}catch{break}G(this,ft)}destroy(){this.isDestroyed||(this.#e?.(),this.#e=void 0,d(this,H,this),G(this,ft),m(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,ft,e),this.lastValue=e}}},qt=class extends Bt{target;constructor(t,e){super(t),this.target=b(e),C(j,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)})}},Ht=class extends Bt{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 Qt=new Map;function N(s,t,e){let r=b(s),i;if(Qt.has(r)){i=Qt.get(r);let c=b(t)??t;if(i.has(c))return i.get(c)}else i=new Map,Qt.set(r,i);let n=b(t),o=n!=null?new qt(s,n):new Ht(s,t),h=e?.attach;h&&o.attach(h);let a=n??t;return i.set(a,o),C(o,H,()=>{i.delete(a),i.size===0&&Qt.delete(r)}),o}var Yt=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&&A(()=>{for(let[e,r]of t.entries())this.get(e).set(r)})}updateFromProps(t,e){A(()=>{let r=e?e.map(i=>[i,t[i]]):Object.entries(t);for(let[i,n]of r)this.get(i).set(n)})}};var D;(function(s){s[s.StructuralChanges=1]="StructuralChanges",s[s.ContentUpdates=2]="ContentUpdates",s[s.Removal=3]="Removal"})(D||(D={}));var p;(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"})(p||(p={}));var ht=Symbol.for("ShadowEntsGlobalNS"),z="#void",ls="contextLost",us="configure",cs="changeTrail",fs="destroy",ds="loaded",ps="appliedChangeTrail",gs="importedModule",ys="destroyed",yt="messageToView",ms=16e3,bs=16e3,vs=4e3,ws=1e3,Le="shadowObjects";function Cs(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 Y(s,t){let e=s.indexOf(t);e!==-1&&s.splice(e,1)}var lt=s=>typeof s=="string"?s.trim()||ht:typeof s=="symbol"?s:ht;var St="#root",xt=class{#t;get uuid(){return this.#t}#e=0;constructor(t){this.#t=t}#s=!0;#r=0;#i=0;hasChanges(){return this.#e>0}get isNew(){return this.#s}get isCreated(){return this.#r>0&&this.#r>this.#i}get isDestroyed(){return this.#i>0&&this.#i>=this.#r}#n=z;#o;#a=0;#h;#l;#u;create(t=z,e,r=0){this.#e++,this.#r++,this.#h=t,this.#l=e??St,this.#u=r||void 0}destroy(){this.#i++,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),Y(this.#d,t))}removeProperty(t){let e=this.#c.has(t);this.#f.has(t)?(this.#f.delete(t),e||Y(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 D.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 D.ContentUpdates:!r&&i&&this.#d.length>0&&t.push(this.makeChangePropertyChange()),this.#g.length>0&&t.push(this.makeEvents());break;case D.Removal:n&&t.push(this.makeDestroyEntityChange());break}}makeEvents(){let t={type:p.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:p.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:p.DestroyEntities,uuid:this.#t}}makeSetParentChange(){this.#o=this.#l===St?void 0:this.#l;let t={type:p.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:p.UpdateOrder,uuid:this.#t,order:this.#a}}makeChangeToken(){return this.#n=this.#h??z,{type:p.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:p.ChangeProperties,uuid:this.#t,properties:t}}};var Es=s=>{if(!(s===void 0||s.length===0))return s.filter(t=>t.length===1||t[1]!==void 0)},je=(s,t)=>{if(s===t||t===void 0)return s;if(s===void 0)return Es(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 Es(s)};var Kt=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===p.CreateEntities)this.createEntity(e);else if(this.#t.has(e.uuid))switch(e.type){case p.DestroyEntities:this.destroyEntity(e);break;case p.SetParent:this.setParent(e);break;case p.UpdateOrder:this.updateOrder(e);break;case p.ChangeToken:this.changeToken(e);break;case p.ChangeProperties:this.changeProperties(e);break}}changeProperties({uuid:t,properties:e}){let r=this.getComponentState(t);r.properties=je(r.properties,e)}changeToken({uuid:t,token:e}){this.getComponentState(t).token=e||z}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||z,parentUuid:r,order:i??0,properties:je(void 0,n)})}};var L=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=lt(t),r=s.getContextsMap();return r.has(e)?r.get(e):new s(e)}#t=new Map;#e=[];#s=new Kt;constructor(t=ht){let e=lt(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),Y(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.#r(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);Y(e.children,t.uuid),this.#n(t,e.children)}else Y(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.#i();for(let i of r)i.buildChangeTrail(e,D.StructuralChanges);for(let i of r)i.buildChangeTrail(e,D.ContentUpdates);for(let i of r)i.buildChangeTrail(e,D.Removal),(i.isDestroyed||i.isNew&&!i.isCreated)&&this.#r(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(ls)}}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!")}#r(t){this.#t.has(t)&&(this.#t.delete(t),Y(this.#e,t),this.#o=void 0)}#i(){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,u=t||(c?Object.getOwnPropertyDescriptor(c,r.name):{}),l,g=!1,w=e.length-1;w>=0;w--){var _={};for(var ut in r)_[ut]=ut==="access"?{}:r[ut];for(var ut in r.access)_.access[ut]=r.access[ut];_.addInitializer=function(vt){if(g)throw new TypeError("Cannot add initializers after decoration has completed");n.push(o(vt||null))};var et=(0,e[w])(h==="accessor"?{get:u.get,set:u.set}:u[a],_);if(h==="accessor"){if(et===void 0)continue;if(et===null||typeof et!="object")throw new TypeError("Object expected");(l=o(et.get))&&(u.get=l),(l=o(et.set))&&(u.set=l),(l=o(et.init))&&i.unshift(l)}else(l=o(et))&&(h==="field"?i.unshift(l):u[a]=l)}c&&Object.defineProperty(c,r.name,u),g=!0}function K(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=O(this,r);if(n)return i?n.value:n.get()},set(n){O(this,r)?.set(n)},init(n){let o=f(n,s);return os(this,r,o),P.findOrCreate(this).attachSignalByName(r,o),o.value}}}}var M="ConsoleLogger",R=`${M}Storage`,ir=!!(globalThis.location?.host?.startsWith("localhost")??!1),Tt="localStorage"in globalThis,Jt=Symbol.for(M),Ss=!1,xs=s=>{if(typeof s=="boolean")return s;switch(s.toLowerCase()){case"true":case"yes":case"on":return!0;default:return!1}},De=s=>[Tt?M:void 0,...Array.isArray(s)?s:[s]].filter(Boolean).join(".");function Ne(s,t=void 0,e){let r=De(s),i=Tt?localStorage.getItem(r):globalThis[R]?.[r];return i!=null?t(i):e}function Ot(s,t){Tt?localStorage.setItem(De(s),t):(globalThis[R]==null&&(globalThis[R]={},console.debug(`${M}: Initialize`,{[R]:globalThis[R]})),globalThis[R][De(s)]=t)}var k=class s{static{this.sharedConfig={enable:ir,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]=Ne(t,xs,this.sharedConfig[t])}),["debug","info","warn","error"].forEach(t=>{this.sharedStyles[t]=Ne(["styles",t],void 0,this.sharedStyles[t])}),s.isDebug&&console.debug(`${M}: Load config from localStorage`,s.sharedConfig),globalThis[M]?.[Jt]||(globalThis[M]??={[Jt]:!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[R]?.[Jt]||(globalThis[R]={[Jt]:!0,...s.sharedConfig,...globalThis[R]},s.sharedConfig=globalThis[R],s.isDebug&&console.debug(`${M}: Load config from ${R}`,globalThis[R]))}constructor(t){this.enable=!0,this.namespace=(t||"").trim()||M,Ss||(s.loadConfig(),Ss=!0);let e=[this.namespace,"enable"];this.enable=Ne(e,xs,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 $=(()=>{var s;let t,e=[],r=[],i,n=[],o=[];return class U{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,u)=>{c.viewReady=u}},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,u)=>{c.proxyReady=u}},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;#r;#i;#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.#r=!1,this.#i=!1,this.logger=new k("ShadowEnv"),this.ns$=f(),this.#o=K(this,e,!1),this.#a=(K(this,r),K(this,n,!1)),this.#h=(K(this,o),!1),this.ready=async()=>this.isReady?this:ct(this,U.ContextCreated),this.#l=()=>{this.#s&&this.#u()},W(this,U.ContextCreated),y(this,U.ContextLost,it.AAA,()=>{G(this,U.ContextCreated)}),v(()=>{if(this.viewReady&&this.proxyReady)return this.view.reCreateChanges(),d(this,U.ContextCreated,this),this.#r&&(this.#r=!1,this.#u()),()=>{d(this,U.ContextLost,this)}},[O(this,"viewReady"),O(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(u=>{this.logger.error("failed to start envProxy",u),this.proxyReady=!1})}}get isReady(){return!!(this.#t&&this.#e&&this.proxyReady&&!this.isDestroyed)}sync(){if(!this.isReady){this.#r=!0;return}this.#s||(this.#s=!0,queueMicrotask(this.#l))}syncWait(){return this.#i=!0,this.sync(),this.#n?this.#n:(this.#n=ct(this,U.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),m(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.#i;this.#i=!1,await this.envProxy.applyChangeTrail(a,c)}catch(c){this.logger.error("failed to apply change trail",c)}finally{d(this,U.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 x=["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"],nr=()=>{let s=Math.random()*4294967295|0,t=Math.random()*4294967295|0,e=Math.random()*4294967295|0,r=Math.random()*4294967295|0;return(x[s&255]+x[s>>8&255]+x[s>>16&255]+x[s>>24&255]+"-"+x[t&255]+x[t>>8&255]+"-"+x[t>>16&15|64]+x[t>>24&255]+"-"+x[e&63|128]+x[e>>8&255]+"-"+x[e>>16&255]+x[e>>24&255]+x[r&255]+x[r>>8&255]+x[r>>16&255]+x[r>>24&255]).toLowerCase()},ks=()=>globalThis?.crypto?.randomUUID?.()??nr();var Pt=class extends Error{constructor(t){super(t),this.name="ViewComponentError"}},Zt=class s{#t;#e;#s;#r;#i=0;get uuid(){return this.#t}get token(){return this.#e}set token(t){t??=z,t!==this.#e&&(this.#e=t,this.#s?.changeToken(this,t))}get parent(){return this.#r}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.#i}set order(t){let e=this.#i;this.#i=t??0,e!==this.#i&&this.#s.changeOrder(this)}constructor(t,e){E(this),e instanceof s&&(e={parent:e}),this.#t=e?.uuid??ks(),this.#e=t,this.#i=e?.order??0,this.#r=e?.parent;let r=e?.context??L.get();if(this.#r&&this.#r.#s!==r)throw new Pt("cannot set parent from different context");this.context=r}isChildOf(t){return this.#r===t}removeFromParent(){this.#r?(this.#s?.removeFromParent(this.uuid,this.#r),this.#r=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.#r=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 Xt="shaeRequestEntParent",te="shaeReRequestEntParent",As="shae-worker",ee="shae-ent",Os="shae-prop",J="token",Z="ns",se="local",Ts="no-autostart",re="no-structured-clone",I="auto-sync",ie="src",ne="name",oe="value",ae="type",he="no-trim";var Rt=new Set(["on","true","yes","local","1"]);var Ps=s=>lt(s.getAttribute(Z)),Mt=(s,t)=>{if(s.hasAttribute(t)){let e=s.getAttribute(t)?.trim()?.toLowerCase()||"1";return Rt.has(e)}return!1};var Rs=(s,t)=>{t.set(Ps(s))},$e=new Set,Ie=!1,or=s=>{$e.add(s),Ie||(Ie=!0,queueMicrotask(()=>{Ie=!1;for(let t of $e)$.get(t)?.sync();$e.clear()}))},X=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(lt(t))}constructor(){super(),this.isShaeElement=!0,this.ns$=f(ht),this.ns$.onChange(t=>{typeof t=="string"&&t.length>0?this.getAttribute(Z)!==t&&this.setAttribute(Z,t):this.removeAttribute(Z)}),Rs(this,this.ns$)}attributeChangedCallback(t){t===Z&&Rs(this,this.ns$)}syncShadowObjects(){or(this.ns)}};var le=class extends X{static{this.observedAttributes=[...X.observedAttributes,J]}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(te,{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(L.get(t)),this.isConnected&&this.#l()}),this.#p(),this.token$.onChange(t=>{t==null?this.removeAttribute(J):this.getAttribute(J)!==t&&this.setAttribute(J,t)}),v(()=>{let t=this.viewComponent$.get();if(t){let e=y(t,L.ReRequestParentRoots,()=>this.#h()),r=t.context?.ns;return()=>{e(),t.destroy(),r&&r!==this.ns?$.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 Zt(r,{context:e}),this.viewComponent$.set(i)),this.syncShadowObjects()});this.#e=()=>{t()}}#r(){this.#e?.(),this.#e=void 0}#i;#n;findShadowRootHost(){if(this.#n){this.#n=!1;let t=this;for(;t;){if(t.parentElement==null){let e=t.parentNode;e&&(this.#i=e.host);break}t=t.parentElement}}return this.#i}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(Xt,this.#g,{capture:!1,passive:!1}),this.#s(),ke(()=>this.#p()),this.componentContext==null&&this.componentContext$.set(L.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===J&&this.#p()}disconnectedCallback(){this.#n=!0,this.#a(),this.removeEventListener("slotchange",this.#f,{capture:!1}),this.removeEventListener(Xt,this.#g,{capture:!1}),this.#c(void 0),this.componentContext$.set(void 0),this.syncShadowObjects(),this.#r()}#h(){this.isConnected&&(this.#c(void 0),this.#l())}#l(){this.dispatchEvent(new CustomEvent(Xt,{bubbles:!0,composed:!0,detail:{requester:this}}))}#u;#c(t){if(this.entParentNode!==t)if(this.entParentNode&&this.entParentNode.removeEventListener(te,this.#d,{capture:!1}),this.entParentNode=t,this.entParentNode&&this.entParentNode.addEventListener(te,this.#d,{capture:!1,passive:!1}),this.#u?.(),this.#u=void 0,t){let e=v(()=>{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(J)){let t=this.getAttribute(J)?.trim()||void 0;this.token$.set(t)}}};customElements.define(ee,le);var ar=s=>{let t=s.parentElement;for(;t;){if(t.isShaeEntElement)return t;t=t.parentElement}},hr=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"]),ue=class extends HTMLElement{static{this.observedAttributes=[ne,oe,ae,he]}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 k("ShaePropElement"),this.#t=()=>{this.entNode$.set(ar(this))},this.#e=()=>{queueMicrotask(()=>{this.isConnected||this.entNode$.set(void 0)})},this.#s=()=>{this.name$.set(this.getAttribute(ne)?.trim()??void 0)},this.#r=()=>{this.valueIn$.set(this.getAttribute(oe))},this.#i=()=>{let t=this.getAttribute(ae)?.trim().toLowerCase();t&&!hr.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(!Mt(this,he))},this.entNode$.onChange(t=>{if(t){let e=N(t.viewComponent$,this.viewComponent$);return()=>{e.destroy()}}else this.viewComponent$.set(void 0)}),v(()=>{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()}}}),v(()=>{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(/\W+/).map(i=>Number(i));break;case"float[]":r=r.split(/\W+/).map(i=>parseFloat(i));break;case"int[]":case"integer[]":r=r.split(/\W+/).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(/\W+/).map(i=>Number(i)));break;case"float64array":r=new Float64Array(r.split(/\W+/).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)}),A(()=>{this.#s(),this.#r(),this.#i(),this.#n()})}connectedCallback(){A(()=>{this.#t(),this.#s(),this.#r(),this.#i(),this.#n()})}attributeChangedCallback(t){switch(t){case ne:this.#s();break;case oe:this.#r();break;case ae:this.#i();break;case he:this.#n();break}}disconnectedCallback(){this.#e()}#t;#e;#s;#r;#i;#n};customElements.whenDefined(ee).then(()=>customElements.define(Os,ue));var ce,Fe=null,mt=class{static{this.OnFrame=Symbol("onFrame")}#t=0;#e=0;constructor(){if(Fe)return Fe;E(this),Fe=this}start(t){if(t!=null)return Se(this)===0&&this.#r(),y(this,ce.OnFrame,t),this.#e++,()=>{this.stop(t)}}stop(t){m(this,ce.OnFrame,t),Se(this)===0&&this.#i()}#s=t=>{d(this,ce.OnFrame,t),this.#r()};#r(){this.#t=requestAnimationFrame(this.#s)}#i(){cancelAnimationFrame(this.#t),this.#t=0}};ce=mt;var bt="value",Lt=(()=>{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=K(this,t,void 0),this.value$=K(this,e),W(this,bt),this.value$=O(this,bt),this.value$.onChange(n=>d(this,bt,n)),i&&this.add(...i)}add(...i){return this.#t.push(...i),this.#i(),this.#r(i)}unshift(...i){return this.#t.unshift(...i),this.#i(),this.#r(i)}remove(...i){this.#r(i)()}clear(){this.#t.length=0,this.#i()}dispose(){this.clear(),this.#e?.destroy(),this.#e=void 0,G(this,bt),m(this),this.value$.destroy(),Et(this)}#r(i){return()=>{for(let n of i){let o=this.#t.indexOf(n);o!==-1&&this.#t.splice(o,1)}this.#i()}}#i(){this.#e?.destroy(),this.#t.length===0?(this.#e=void 0,this.value=void 0):(this.#e=v(()=>{let i;for(let n of this.#t){let o=at(n);if(o!=null){i=o;break}}this.value=i},this.#t),this.#e.run())}}})();var We="onCreate",tt="onDestroy",Ms="onParentChanged",Ls="onViewEvent";var ze=new Map,Ue=!1,lr=(s,t)=>{ze.set(s,t),Ue||(Ue=!0,queueMicrotask(()=>{Ue=!1;let e=Array.from(ze.entries());ze.clear();for(let[r,i]of e)r.set(i)}))},fe=class{#t;#e;#s=new Yt;#r=new Map;#i=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,it.Min,this)}traverse(t){t(this);for(let e of this.#h)e.traverse(t)}onDestroy(){this.#s.clear(),m(this);for(let t of this.#i.values())t.cleanup(),t.signal.destroy();this.#i.clear();for(let t of this.#r.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.#r)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.#r)t.unsubscribeFromParent&&(t.unsubscribeFromParent(),t.unsubscribeFromParent=void 0)}}reSubscribeToParentContexts(){for(let[,t]of this.#r)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,Ls,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(),A(()=>{for(let[e,r]of t)this.setProperty(e,r)})}setProperty(t,e){this.getPropertyWriter(t)(e)}getProperty(t){return at(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.#r.has(t)}useContext(t){return this.#f(t).context.get}provideContext(t){return this.#f(t).provide}provideGlobalContext(t){if(this.#i.has(t))return this.#i.get(t).signal;let e=this.#t.findOrCreateRootContext(t),r=f(),i=e.add(r);return this.#i.set(t,{cleanup:i,signal:r}),r}#f(t){if(this.#r.has(t))return this.#r.get(t);let e=f(),r=f(),i=f(),n=new Lt([r,e]),o=y(n,Lt.Value,a=>{lr(i,a)}),h={name:t,inherited:e,provide:r,context:i,valuePath:n,unsubscribePathValue:o};return this.#r.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=N(e.context,t.inherited);t.unsubscribeFromParent=r.destroy.bind(r)}else{let e=this.#t.findOrCreateRootContext(t.name),r=N(e.value$,t.inherited);t.unsubscribeFromParent=r.destroy.bind(r)}}};var _s=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]}},de=(s,t)=>{for(let e of t)s.add(e)},ur=(s,t)=>{if(s!=null)for(let e of s.constructors)t.add(e)},_t=class{static get(t){return t??cr}#t=new Map;#e=new Map;#s=new Map;define(t,e){this.#t.has(t)?Cs(this.#t.get(t).constructors,e):this.#t.set(t,{token:t,constructors:[e]})}appendRoute(t,e){let r=_s(t);r?this.#s.has(r.key)?de(this.#s.get(r.key).routes,e):this.#s.set(r.key,{routes:new Set(e),token:r.token}):this.#e.has(t)?de(this.#e.get(t),e):this.#e.set(t,new Set(e))}clearRoute(t){let e=_s(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)&&de(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)&&de(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)ur(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()}},cr=new _t;var V;(function(s){s[s.CreateAndDestroy=0]="CreateAndDestroy",s[s.JustCreate=1]="JustCreate",s[s.DestroyOnly=2]="DestroyOnly"})(V||(V={}));var js=s=>s.displayName||s.name,pe=class{#t;#e;#s;#r;#i;#n;constructor(t){this.logger=new k("Kernel"),this.#t=new Map,this.#e=new Set,this.#i=!0,this.#n=new Map,E(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.#i){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.#r=this.#s.slice().reverse(),this.#i=!1}return t?this.#r: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,V.DestroyOnly));for(let e of this.traverseLevelOrderBFS(!1))this.updateShadowObjects(e.uuid,V.JustCreate,t.get(e.uuid));t.clear()}run(t){this.logger.isDebug&&this.logger.debug("sync",t),A(()=>{for(let e of t.changeTrail)this.parse(e)})}parse(t){switch(t.type){case p.CreateEntities:this.createEntity(t.uuid,t.token,t.parentUuid,t.order,t.properties),this.#i=!0;break;case p.DestroyEntities:this.destroyEntity(t.uuid),this.#i=!0;break;case p.SetParent:this.setParent(t.uuid,t.parentUuid,t.order),this.#i=!0;break;case p.UpdateOrder:this.updateOrder(t.uuid,t.order),this.#i=!0;break;case p.ChangeProperties:this.changeProperties(t.uuid,t.properties);break;case p.ChangeToken:this.changeToken(t.uuid,t.token);break;case p.SendEvents:this.dispatchEventsToEntity(t.uuid,t.events);break}}createEntity(t,e,r,i=0,n){let o=new fe(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,Ms,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=V.CreateAndDestroy,r){let i=this.#t.get(t);r??=new Set(this.registry.findConstructors(i.token,i.entity.truthyProps()));let n=e===V.CreateAndDestroy||e===V.DestroyOnly,o=e===V.CreateAndDestroy||e===V.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=E(new t({entity:e.entity,provideContext(u,l,g){let w=o.get(u);if(w==null){w=f(l,g?{compare:g}:void 0);let _=N(w,e.entity.provideContext(u));i.add(_.destroy.bind(_)),o.set(u,w)}return w},provideGlobalContext(u,l,g){let w=h.get(u);if(w==null){w=f(l,g?{compare:g}:void 0);let _=N(w,e.entity.provideGlobalContext(u));i.add(_.destroy.bind(_)),h.set(u,w)}return w},useContext(u,l){let g=n.get(u);if(g===void 0){g=f(void 0,l?{compare:l}:void 0).get,n.set(u,g);let w=N(e.entity.useContext(u),g);i.add(w.destroy.bind(w))}return g},useProperty(u,l){let g=a.get(u);if(g===void 0){g=f(void 0,l?{compare:l}:void 0).get,a.set(u,g);let w=N(e.entity.getPropertyReader(u),g);i.add(w.destroy.bind(w))}return g},createEffect(...u){let l=v(...u);return i.add(l.destroy),l},createSignal(...u){let l=f(...u);return i.add(()=>{S(l)}),l},createMemo(...u){let l=Me(...u);return i.add(()=>{S(l)}),l},on(...u){let l=y(...u);return i.add(l),l},once(...u){let l=C(...u);return i.add(l),l},onDestroy(u){r.add(u)}}));return this.logger.isInfo&&this.logger.info("create shadow-object",js(t),{shadowObject:c,entity:e.entity}),C(e.entity,tt,it.Low,()=>{this.logger.isInfo&&this.logger.info("destroy shadow-object",js(t),{shadowObject:c,entity:e.entity});for(let l of r)l();for(let l of i)l();for(let l of n.values())S(l);for(let l of a.values())S(l);for(let l of o.values())S(l);for(let l of h.values())S(l);r.clear(),i.clear(),n.clear(),a.clear(),o.clear(),h.clear();let u=e.usedConstructors.get(t);u&&(u.delete(c),u.size===0&&e.usedConstructors.delete(t))}),e.usedConstructors.has(t)?e.usedConstructors.get(t).add(c):e.usedConstructors.set(t,new Set([c])),this.attachShadowObject(c,e.entity),c}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){y(e,t),typeof t[We]=="function"&&t[We](e)}destroyShadowObject(t,e){typeof t[tt]=="function"&&t[tt](e),d(t,tt,e),m(e,t)}findOrCreateRootContext(t){let e=this.#n.get(t);return e||(e=new Lt,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 Ve(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=>Ve(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 ge=s=>(typeof s=="string"&&(s=new URL(s,globalThis.location.href)),s.toString());function Ns(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 ye=class{#t;get registry(){return this.kernel.registry}constructor(t){this.#t=new Set,this.isLocalEnv=!0,this.disableStructuredClone=!1,this.kernel=new pe(t),y(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:Ns(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(ge(t));e[Le]&&await this.importModule(e[Le])}async importModule(t){return Ve(this.kernel,t,this.#t)}destroy(){this.kernel.destroy(),this.registry.clear(),this.#t.clear()}};function Ge(s){let t=new Blob([s],{type:"text/javascript"}),e=URL.createObjectURL(t),r=new Worker(e);return URL.revokeObjectURL(e),r}function Be(){return Ge('var xs=Object.defineProperty;var te=Object.getOwnPropertySymbols;var Fe=Object.prototype.hasOwnProperty,ze=Object.prototype.propertyIsEnumerable;var Ns=(t,e)=>(e=Symbol[t])?e:Symbol.for("Symbol."+t),Ve=t=>{throw TypeError(t)};var de=(t,e,s)=>e in t?xs(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,ce=(t,e)=>{for(var s in e||(e={}))Fe.call(e,s)&&de(t,s,e[s]);if(te)for(var s of te(e))ze.call(e,s)&&de(t,s,e[s]);return t};var $e=(t,e)=>{var s={};for(var i in t)Fe.call(t,i)&&e.indexOf(i)<0&&(s[i]=t[i]);if(t!=null&&te)for(var i of te(t))e.indexOf(i)<0&&ze.call(t,i)&&(s[i]=t[i]);return s};var c=(t,e,s)=>de(t,typeof e!="symbol"?e+"":e,s),fe=(t,e,s)=>e.has(t)||Ve("Cannot "+s);var r=(t,e,s)=>(fe(t,e,"read from private field"),s?s.call(t):e.get(t)),f=(t,e,s)=>e.has(t)?Ve("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,s),g=(t,e,s,i)=>(fe(t,e,"write to private field"),i?i.call(t,s):e.set(t,s),s),m=(t,e,s)=>(fe(t,e,"access private method"),s);var Ie=(t,e,s,i)=>({set _(a){g(t,e,a,s)},get _(){return r(t,e,i)}});var ge=function(t,e){this[0]=t,this[1]=e},Ge=(t,e,s)=>{var i=(n,h,p,l)=>{try{var d=s[n](h),u=(h=d.value)instanceof ge,v=d.done;Promise.resolve(u?h[0]:h).then(b=>u?i(n==="return"?n:"next",h[1]?{done:b.done,value:b.value}:b,p,l):p({value:b,done:v})).catch(b=>i("throw",b,p,l))}catch(b){l(b)}},a=n=>o[n]=h=>new Promise((p,l)=>i(n,h,p,l)),o={};return s=s.apply(t,e),o[Ns("asyncIterator")]=()=>o,a("next"),a("throw"),a("return"),o};var Ue;(function(t){t[t.StructuralChanges=1]="StructuralChanges",t[t.ContentUpdates=2]="ContentUpdates",t[t.Removal=3]="Removal"})(Ue||(Ue={}));var K;(function(t){t[t.CreateEntities=1]="CreateEntities",t[t.DestroyEntities=2]="DestroyEntities",t[t.SetParent=3]="SetParent",t[t.UpdateOrder=4]="UpdateOrder",t[t.ChangeProperties=5]="ChangeProperties",t[t.ChangeToken=6]="ChangeToken",t[t.SendEvents=7]="SendEvents"})(K||(K={}));var $i=Symbol.for("ShadowEntsGlobalNS"),Fs="configure",zs="changeTrail",Vs="destroy",$s="loaded",Be="appliedChangeTrail",pe="importedModule",Is="destroyed",Ee="messageToView",ye="shadowObjects",N="ConsoleLogger",j=`${N}Storage`,rs,as,ns,Gs=!!((ns=(as=(rs=globalThis.location)==null?void 0:rs.host)==null?void 0:as.startsWith("localhost"))!=null&&ns),Bt="localStorage"in globalThis,ee=Symbol.for(N),We=!1,qe=t=>{if(typeof t=="boolean")return t;switch(t.toLowerCase()){case"true":case"yes":case"on":return!0;default:return!1}},Se=t=>[Bt?N:void 0,...Array.isArray(t)?t:[t]].filter(Boolean).join(".");function ve(t,e=void 0,s){var o;let i=Se(t),a=Bt?localStorage.getItem(i):(o=globalThis[j])==null?void 0:o[i];return a!=null?e(a):s}function Ft(t,e){Bt?localStorage.setItem(Se(t),e):(globalThis[j]==null&&(globalThis[j]={},console.debug(`${N}: Initialize`,{[j]:globalThis[j]})),globalThis[j][Se(t)]=e)}var ft,Vt,y,Us=(y=class{constructor(e){f(this,ft);this.enable=!0,this.namespace=(e||"").trim()||N,We||(y.loadConfig(),We=!0);let s=[this.namespace,"enable"];this.enable=ve(s,qe,this.enable),Ft(s,Bt?this.enable?"true":"false":this.enable)}static get isEnabled(){return y.sharedConfig.enable}static get isDebug(){return y.sharedConfig.enable&&y.sharedConfig.debug}static loadConfig(){var e,s,i;Bt?(["enable","debug","info","warn"].forEach(a=>{this.sharedConfig[a]=ve(a,qe,this.sharedConfig[a])}),["debug","info","warn","error"].forEach(a=>{this.sharedStyles[a]=ve(["styles",a],void 0,this.sharedStyles[a])}),y.isDebug&&console.debug(`${N}: Load config from localStorage`,y.sharedConfig),(e=globalThis[N])!=null&&e[ee]||((s=globalThis[N])!=null||(globalThis[N]={[ee]:!0,get enable(){return y.sharedConfig.enable},set enable(a){y.sharedConfig.enable=a,Ft("enable",a?"true":"false")},get debug(){return y.sharedConfig.debug},set debug(a){y.sharedConfig.debug=a,Ft("debug",a?"true":"false")},get info(){return y.sharedConfig.info},set info(a){y.sharedConfig.info=a,Ft("info",a?"true":"false")},get warn(){return y.sharedConfig.warn},set warn(a){y.sharedConfig.warn=a,Ft("warn",a?"true":"false")}}))):(i=globalThis[j])!=null&&i[ee]||(globalThis[j]=ce(ce({[ee]:!0},y.sharedConfig),globalThis[j]),y.sharedConfig=globalThis[j],y.isDebug&&console.debug(`${N}: Load config from ${j}`,globalThis[j]))}get isEnabled(){return this.enable&&y.sharedConfig.enable}get isDebug(){return this.isEnabled&&y.sharedConfig.debug}get isInfo(){return this.isEnabled&&y.sharedConfig.info}get isWarn(){return this.isEnabled&&y.sharedConfig.warn}debug(...e){m(this,ft,Vt).call(this,"debug",y.sharedStyles.debug,e)}info(...e){m(this,ft,Vt).call(this,"info",y.sharedStyles.info,e)}warn(...e){m(this,ft,Vt).call(this,"warn",y.sharedStyles.warn,e)}error(...e){m(this,ft,Vt).call(this,"error",y.sharedStyles.error,e)}},ft=new WeakSet,Vt=function(e,s,i){console[e](`%c${this.namespace}`,s,...i)},y.sharedConfig={enable:Gs,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"},y.sharedStyles={get debug(){return y.sharedConfig["styles.debug"]},set debug(e){y.sharedConfig["styles.debug"]=e},get info(){return y.sharedConfig["styles.info"]},set info(e){y.sharedConfig["styles.info"]=e},get warn(){return y.sharedConfig["styles.warn"]},set warn(e){y.sharedConfig["styles.warn"]=e},get error(){return y.sharedConfig["styles.error"]},set error(e){y.sharedConfig["styles.error"]=e}},y),wt="*",ps=1,Te=2,De=4,ut=Symbol.for("eventize"),Bs="[eventize]",he=t=>t===wt,ys=t=>{switch(typeof t){case"string":case"symbol":return!0;default:return!1}},vs=typeof console<"u",Ws=vs?console[console.warn?"warn":"log"].bind(console,Bs):()=>{},qs=(t,e,s)=>(Object.defineProperty(t,e,{value:s,configurable:!0}),t),Js=0,bs=class{constructor(){c(this,"events",new Map);c(this,"eventNames",new Set)}static publish(t){t.sort((e,s)=>e.order-s.order).forEach(e=>e.emit())}add(t){Array.isArray(t)?t.forEach(e=>this.eventNames.add(e)):this.eventNames.add(t)}remove(t){Array.isArray(t)?t.forEach(e=>this.eventNames.delete(e)):this.eventNames.delete(t),this.clear(t)}clear(t){Array.isArray(t)?t.forEach(e=>this.events.delete(e)):this.events.delete(t)}retain(t,e){this.eventNames.has(t)&&this.events.set(t,{args:e,order:Js++})}isKnown(t){return this.eventNames.has(t)}emit(t,e,s=[]){if(he(t))this.eventNames.forEach(i=>this.emit(i,e,s));else if(this.events.has(t)){let{order:i,args:a}=this.events.get(t);s.push({order:i,emit:()=>e.apply(t,a)})}return s}},ke=(t,e,s,i)=>{if(typeof e=="function"){let a=e.apply(t,s);a!=null&&(i==null||i(a))}},Ks=(t,e,s,i)=>ke(e,e.emit,[t].concat(s),i),Ys=t=>{switch(typeof t){case"function":return ps;case"string":case"symbol":return Te;case"object":return De}},Hs=0,Xs=()=>++Hs,ms=class{constructor(t,e,s,i=null){c(this,"id");c(this,"eventName");c(this,"isCatchEmAll");c(this,"priority");c(this,"listener");c(this,"listenerObject");c(this,"listenerType");c(this,"callAfterApply");c(this,"isRemoved");c(this,"refCount");this.id=Xs(),this.eventName=t,this.isCatchEmAll=he(t),this.listener=s,this.listenerObject=i,this.priority=e,this.listenerType=Ys(s),this.callAfterApply=void 0,this.isRemoved=!1,this.refCount=1}isEqual(t,e=null){if(t===this)return!0;let s=typeof t;return s==="number"&&t===this.id?!0:e===null&&(s==="string"||s==="symbol")?t===wt||t===this.eventName:this.listener===t&&this.listenerObject===e}apply(t,e,s){if(this.isRemoved)return;let{listener:i,listenerObject:a}=this;switch(this.listenerType){case ps:ke(a,i,e,s),this.callAfterApply&&this.callAfterApply();break;case Te:ke(a,a[i],e,s),this.callAfterApply&&this.callAfterApply();break;case De:{let o=i[t];if(this.isCatchEmAll||this.eventName===t){if(typeof o=="function"){let n=o.apply(i,e);n!=null&&(s==null||s(n))}else Ks(t,i,e,s);this.callAfterApply&&this.callAfterApply()}break}}}},Qs=(t,e)=>t.priority!==e.priority?e.priority-t.priority:t.id-e.id,Je=t=>t==null?void 0:t.slice(0),Ke=(t,e)=>{let s=t.indexOf(e);s>-1&&t.splice(s,1)},Zs=t=>t===De||t===Te,Ae=(t,e,s)=>{let i=t.findIndex(a=>a.isEqual(e,s));i>-1&&(t[i].isRemoved=!0,t.splice(i,1))},se=(t,e,s)=>{let i=[];for(let a of t)(e==null&&a.listenerObject===s||a.eventName===e&&a.listener===s)&&i.push(a);for(let a of i)Ae(t,a,void 0)},be=t=>{t&&(t.forEach(e=>{e.isRemoved=!0}),t.length=0)},_s=(t,e)=>t.listenerType===e.listenerType?t.priority===e.priority&&t.eventName===e.eventName&&t.listenerObject===e.listenerObject&&t.listener===e.listener:!1,ti=(t,e)=>{if(Zs(t.listenerType))return e.find(s=>_s(t,s))},ei=(t,e)=>{let s=ti(t,e);return s?(s.refCount+=1,s):(e.push(t),e.sort(Qs),t)},si=class{constructor(){c(this,"namedListeners");c(this,"catchEmAllListeners");c(this,"getListenersForEventName",t=>{let e=this.namedListeners.get(t);return e||(e=[],this.namedListeners.set(t,e)),e});this.namedListeners=new Map,this.catchEmAllListeners=[]}add(t){return ei(t,t.isCatchEmAll?this.catchEmAllListeners:this.getListenersForEventName(t.eventName))}remove(t,e,s=!1){e==null&&Array.isArray(t)?t.forEach(i=>this.remove(i,null,s)):t==null||e==null&&he(t)?this.removeAllListeners():e==null&&ys(t)?be(this.namedListeners.get(t)):t instanceof ms?t.isRemoved||(t.refCount-=1,t.refCount<1&&(t.isRemoved=!0,this.namedListeners.forEach(i=>Ke(i,t)),Ke(this.catchEmAllListeners,t))):s?he(t)?se(this.catchEmAllListeners,wt,t):this.namedListeners.forEach(i=>se(i,t,e)):(this.namedListeners.forEach(i=>{Ae(i,t,e),se(i,void 0,t)}),Ae(this.catchEmAllListeners,t,e),se(this.catchEmAllListeners,void 0,t))}removeAllListeners(){this.namedListeners.forEach(t=>be(t)),this.namedListeners.clear(),be(this.catchEmAllListeners)}forEach(t,e){let s=Je(this.catchEmAllListeners),i=Je(this.namedListeners.get(t));if(t===wt||!i||i.length===0)s.forEach(e);else if(s.length===0)i.forEach(e);else{let a=i.length,o=s.length,n=0,h=0;for(;n<a||h<o;){if(n<a){let p=i[n];if(h>=o||p.priority>=s[h].priority){e(p),++n;continue}}h<o&&(e(s[h]),++h)}}}getSubscriptionCount(){let t=this.catchEmAllListeners.length;for(let e of this.namedListeners.values())t+=e.length;return t}},xt=t=>!!(t&&t[ut]);function Wt(t){if(xt(t))return t;let e=new si,s=new bs;return qs(t,ut,{keeper:s,store:e}),t}var Le={Max:Number.POSITIVE_INFINITY,AAA:1e9,BB:1e6,C:1e3,Default:0,Low:-1e4,Min:Number.NEGATIVE_INFINITY},ii=(t,e,s,i,a,o,n)=>{let h=t.add(new ms(s,i,a,o));return e.emit(s,h,n),h},ri=(t,e,s,i)=>{let a=s.length,o=typeof s[0],n,h,p,l;if(a>=2&&a<=3&&o==="number"?(n=wt,[h,p,l]=s):a>=3&&a<=4&&typeof s[1]=="number"?[n,h,p,l]=s:(h=Le.Default,o==="string"||o==="symbol"||Array.isArray(s[0])?[n,p,l]=s:(n=wt,[p,l]=s)),!p&&vs)throw Ws("called with insufficient arguments!",s),"subscribeTo() called with insufficient arguments!";let d=u=>v=>ii(t,e,v,u,p,l,i);return Array.isArray(n)?n.map(u=>Array.isArray(u)?d(u[1])(u[0]):d(h)(u)):d(h)(n)},ws=(t,e,s)=>{let i=[],a=ri(t,e,s,i);return bs.publish(i),a},Ye=t=>e=>{e.callAfterApply=()=>{t==null||t()}},Cs=(t,e)=>Object.assign(()=>T(t,e),Array.isArray(e)?{listeners:e}:{listener:e}),Es=(t,e,s,i)=>{let{store:a,keeper:o}=t[ut];Array.isArray(e)?e.forEach(n=>{a.forEach(n,h=>h.apply(n,s,i)),o.retain(n,s)}):e!==wt&&(a.forEach(e,n=>{n.apply(e,s,i)}),o.retain(e,s))},ot=(t,...e)=>{let s=Wt(t),{store:i,keeper:a}=s[ut];return Cs(s,ws(i,a,e))},A=(t,...e)=>{let s=Wt(t),{store:i,keeper:a}=s[ut],o=ws(i,a,e),n=Cs(s,o),h=!1,p=()=>{h||(n(),h=!0)};return Array.isArray(o)?o.forEach(Ye(p)):Ye(p)(o),p},ai=(t,e)=>new Promise(s=>{A(t,e,s)}),T=(t,e,s)=>{if(!xt(t))throw new Error("object is not eventized");let{store:i,keeper:a}=t[ut],o=typeof e,n=s!=null&&(o==="string"||o==="symbol");i.remove(e,s,n),Array.isArray(e)?a.remove(e.filter(h=>typeof h=="string")):ys(e)&&a.remove(e)},w=(t,e,...s)=>{if(!xt(t))throw new Error("object is not eventized");Es(t,e,s)},ni=(t,e,...s)=>{if(!xt(t))throw new Error("object is not eventized");let i=[];return Es(t,e,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()},Re=(t,e)=>{let s=Wt(t),{keeper:i}=s[ut];i.add(e)},le=(t,e)=>{if(!xt(t))throw new Error("object is not eventized");let{keeper:s}=t[ut];s.clear(e)},ht=(()=>{let t=(e={})=>Wt(e);return t.inject=(e={})=>(e=Wt(e),Object.assign(e,{on:(...s)=>ot(e,...s),once:(...s)=>A(e,...s),onceAsync:s=>ai(e,s),off:(s,i)=>T(e,s,i),emit:(s,...i)=>w(e,s,...i),emitAsync:(s,...i)=>ni(e,s,...i),retain:s=>Re(e,s),retainClear:s=>le(e,s)}),e),t.is=xt,t})(),Gt=ht(),Rt=ht(),kt=ht(),Ce,Kt,$t=(Ce=class{constructor(){f(this,Kt,new Set)}batch(t){r(this,Kt).add(t)}run(){w(kt,Array.from(r(this,Kt)))}},Kt=new WeakMap,c(Ce,"current"),Ce),oi=()=>$t.current;function ue(t){let e=$t.current;e?e=void 0:e=$t.current=new $t;try{t()}finally{e&&($t.current=void 0,e.run())}}var hi=0;function Ss(){return hi>0}var J=Symbol.for("signal"),Et=Symbol.for("effect"),He=Symbol.for("destroySignal"),Xe=Symbol.for("createEffect"),li=Symbol.for("destroyEffect"),zt="value",Qe="mute",Ze="unmute",Ut="destroy",tt=new Map,G,gt,F,X,U,pt,yt,z,_,Zt=(_=class{constructor(e){f(this,G,new Set);f(this,gt,new Set);f(this,F,new Map);f(this,X,new WeakMap);f(this,U,new Map);f(this,pt,new Set);f(this,yt,new Set);f(this,z);if(e!=null&&e instanceof _)return e;if(e!=null||(e=this),tt.has(e))return tt.get(e);tt.set(e,this),ht(this)}static get(e){if(e!=null)return e instanceof _?e:tt.get(e)}static findOrCreate(e){if(e==null)throw new Error("Cannot create a group with a null object");return new _(e)}static destroy(e){console.warn("SignalGroup.destroy(obj) is deprecated. Use SignalGroup.delete(obj) instead."),_.delete(e)}static delete(e){var s;(s=tt.get(e))==null||s.clear()}static clear(){for(let e of tt.values())e.destroy();tt.clear()}attachGroup(e){if(e===this)throw new Error("Cannot attach a group to itself");return r(this,G).add(e),r(e,z)&&r(e,z)!==this&&r(r(e,z),G).delete(e),g(e,z,this),e}detachGroup(e){return e!==this&&r(this,G).has(e)&&(r(this,G).delete(e),g(e,z,void 0)),e}attachSignal(e){let s=E(e);if(s!=null&&s.destroyed)throw new Error("Cannot attach a destroyed signal to a group");return s&&r(this,gt).add(s),e}attachSignalByName(e,s){if(s){this.attachSignal(s);let i=E(s);r(this,F).set(e,i),r(this,U).has(e)?r(this,U).get(e).push(i):r(this,U).set(e,[i]),r(this,X).has(i)?r(this,X).get(i).add(e):r(this,X).set(i,new Set([e]))}else r(this,F).delete(e);return s}hasSignal(e){var s;return r(this,F).has(e)||((s=r(this,z))==null?void 0:s.hasSignal(e))}signal(e){var s,i,a;return(a=(s=r(this,F).get(e))==null?void 0:s.object)!=null?a:(i=r(this,z))==null?void 0:i.signal(e)}detachSignal(e){let s=E(e);if(s&&(r(this,gt).delete(s),r(this,X).has(s))){let i=r(this,X).get(s);for(let a of i)if(r(this,U).has(a)){let o=r(this,U).get(a);o.splice(o.indexOf(s),1),o.length===0?(r(this,F).delete(a),r(this,U).delete(a)):r(this,F).get(a)===s&&r(this,F).set(a,o.at(-1))}i.clear(),r(this,X).delete(s)}return e}attachEffect(e){return r(this,pt).add(e),e}runEffects(){for(let e of r(this,pt))e.run();for(let e of r(this,G))e.runEffects()}attachLink(e){if(e!=null&&e.isDestroyed)throw new Error("Cannot attach a destroyed link to a group");return e&&r(this,yt).add(e),e}detachLink(e){return e&&r(this,yt).delete(e),e}destroy(){console.warn("SignalGroup#destroy is deprecated. Use SignalGroup#clear instead."),this.clear()}clear(){var e;w(this,Ut,this),T(this);for(let s of r(this,G))s.destroy();for(let s of r(this,pt))s.destroy();for(let s of r(this,gt))H(s);for(let s of r(this,yt))s.destroy();r(this,G).clear(),r(this,gt).clear(),r(this,F).clear(),r(this,U).clear(),r(this,pt).clear(),r(this,yt).clear(),(e=r(this,z))==null||e.detachGroup(this),tt.delete(this)}},G=new WeakMap,gt=new WeakMap,F=new WeakMap,X=new WeakMap,U=new WeakMap,pt=new WeakMap,yt=new WeakMap,z=new WeakMap,_),os,ui=(os=Et,class{constructor(t){c(this,os);c(this,"run",()=>{var t;return(t=this[Et])==null?void 0:t.run()});c(this,"destroy",()=>{var t;(t=this[Et])==null||t.destroy(),this[Et]=void 0});this[Et]=t,A(t,Os.Destroy,()=>{this[Et]=void 0})}}),Yt,Ht,hs,ks=(hs=class{constructor(t="id",e=1){f(this,Yt);f(this,Ht);g(this,Yt,t),g(this,Ht,e)}make(){return Symbol(`${r(this,Yt)}${Ie(this,Ht)._++}`)}},Yt=new WeakMap,Ht=new WeakMap,hs),Oe=[],As=()=>Oe.at(-1),di=(t,e)=>{Oe.push(t);try{return e()}finally{Oe.pop()}},ci=t=>t!=null&&typeof t.then=="function",k,et,st,vt,bt,Pt,Os=(k=class{constructor(e,s){c(this,"id");c(this,"callback");f(this,et);f(this,st,new Set);f(this,vt,new Set);c(this,"parentEffect");c(this,"childEffects",[]);c(this,"curChildEffectSlot",0);c(this,"autorun",!0);c(this,"shouldRun",!0);f(this,bt);f(this,Pt,!1);c(this,"run",()=>{if(r(this,Pt)||!this.shouldRun)return;let e=oi();e?e.batch(this.id):(this.runCleanupCallback(),this.curChildEffectSlot=0,this.shouldRun=!1,this.hasStaticDeps()?g(this,et,this.callback()):g(this,et,di(this,this.callback)))});c(this,"destroy",()=>{r(this,Pt)||(w(this,k.Destroy,this),T(this),w(kt,li,this),this.runCleanupCallback(),T(Gt,this),T(kt,this),T(Rt,this),g(this,Pt,!0),r(this,st).clear(),r(this,vt).clear(),this.childEffects.forEach(e=>{e.destroy()}),this.childEffects.length=0,--k.count)});var a;ht(this),this.callback=e;let i;(s==null?void 0:s.attach)!=null&&(i=Zt.findOrCreate(s.attach),i.attachEffect(this)),this.autorun=(a=s==null?void 0:s.autorun)!=null?a:!0,g(this,bt,s!=null&&s.dependencies?s.dependencies.map(o=>{switch(typeof o){case"string":case"symbol":return i.signal(o);default:return o}}):void 0),this.id=k.idGen.make(),ot(kt,this.id,"recall",this),++k.count}hasStaticDeps(){return r(this,bt)!=null&&r(this,bt).length>0}saveSignalsFromDeps(){for(let e of r(this,bt))this.whenSignalIsRead(E(e).id)}static createEffect(e,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,h=As();return h!=null?(n=h.getCurrentChildEffect(),n==null&&(n=new k(e,o),h.attachChildEffect(n),w(kt,Xe,n)),h.curChildEffectSlot++):(n=new k(e,o),w(kt,Xe,n)),n.hasStaticDeps()?n.saveSignalsFromDeps():n.autorun&&n.run(),new ui(n)}getCurrentChildEffect(){return this.childEffects[this.curChildEffectSlot]}attachChildEffect(e){this.childEffects.push(e),this.parentEffect=this}recall(){this.shouldRun=!0,this.autorun&&this.run()}whenSignalIsRead(e){r(this,st).has(e)||(r(this,st).add(e),ot(Gt,e,"recall",this),A(Rt,e,He,this))}[He](e){!r(this,vt).has(e)&&r(this,st).has(e)&&(r(this,vt).add(e),T(Gt,e,this),r(this,vt).size===r(this,st).size&&this.destroy())}runCleanupCallback(){if(r(this,et)!=null){let e=r(this,et);g(this,et,void 0),ci(e)?Promise.resolve(e).then(s=>{typeof s=="function"&&s()}):e()}}},et=new WeakMap,st=new WeakMap,vt=new WeakMap,bt=new WeakMap,Pt=new WeakMap,c(k,"idGen",new ks("ef")),c(k,"Destroy","destroy"),c(k,"count",0),k),_t=(...t)=>Os.createEffect(...t),qt=new WeakMap,fi=t=>{let e=qt.get(t);return e||(e={},qt.set(t,e)),e},Jt=(t,e)=>{var s,i;return(i=(s=qt.get(t))==null?void 0:s.signals)==null?void 0:i.get(e)},gi=(t,e,s)=>{var a;let i=fi(t);(a=i.signals)!=null||(i.signals=new Map),i.signals.set(e,s)};function pi(...t){for(let e of t)if(qt.has(e)){let s=qt.get(e);if(s.signals){for(let i of s.signals.values())H(i);s.signals.clear(),s.signals=void 0}}}function yi(t){let e=E(Ne(t)?t:Jt(...t));e!=null&&!e.muted&&!e.destroyed&&Pe(e.id,e.value,{touch:!0})}function xe(t){var e,s;return Ne(t)?(e=E(t))==null?void 0:e.value:(s=E(Jt(...t)))==null?void 0:s.value}var ls,vi=(ls=J,class{constructor(t){c(this,ls);this[J]=t}get get(){return this[J].reader}get set(){return this[J].writer}get value(){return xe(this.get)}set value(t){this.set(t)}onChange(t){let{destroy:e}=_t(()=>t(this.value),[this.get]);return e}get muted(){return this[J].muted}set muted(t){this[J].muted=t}touch(){yi(this)}destroy(){H(this)}}),bi=new ks("si");function _e(t){var e;Ss()||((e=As())==null||e.whenSignalIsRead(t))}function Pe(t,e,s){Ss()||w(Gt,t,e,s)}var Ne=t=>t!=null&&t[J]!=null,mi=t=>{let e=s=>{var i;return s?_t(()=>(t.destroyed||_e(t.id),s(t.value)),[e]):t.destroyed||((i=t.beforeRead)==null||i.call(t),_e(t.id)),t.value};return Object.defineProperty(e,J,{value:t}),e},mt,V,Ps=(mt=class{constructor(e,s){c(this,"id");c(this,"lazy");c(this,"compare");c(this,"beforeRead");c(this,"muted",!1);c(this,"destroyed",!1);f(this,V);c(this,"valueFn");c(this,"reader");c(this,"writer",(e,s)=>{var o,n,h,p;let i=(o=s==null?void 0:s.lazy)!=null?o:!1,a=(h=(n=s==null?void 0:s.compare)!=null?n:this.compare)!=null?h:(l,d)=>l===d;if((i!==this.lazy||i&&e!==this.valueFn||!i&&!a(e,r(this,V)))&&(i?(g(this,V,void 0),this.valueFn=e,this.lazy=!0):(g(this,V,e),this.valueFn=void 0,this.lazy=!1),!this.muted&&!this.destroyed)){Pe(this.id,r(this,V));return}(p=s==null?void 0:s.touch)!=null&&p&&Pe(this.id,r(this,V),{touch:!0})});c(this,"object");this.id=bi.make(),++mt.instanceCount,this.lazy=e,this.lazy?(this.value=void 0,this.valueFn=s):(this.value=s,this.valueFn=void 0),this.reader=mi(this),this.object=new vi(this)}get[J](){return this}get value(){return this.lazy&&(g(this,V,this.valueFn()),this.valueFn=void 0,this.lazy=!1),r(this,V)}set value(e){g(this,V,e)}},V=new WeakMap,c(mt,"instanceCount",0),mt),E=t=>t==null?void 0:t[J];function D(t=void 0,e){var i;let s;if(Ne(t))s=E(t);else{let a=(i=e==null?void 0:e.lazy)!=null?i:!1;s=new Ps(a,t),s.beforeRead=e==null?void 0:e.beforeRead,s.compare=e==null?void 0:e.compare}return(e==null?void 0:e.attach)!=null&&Zt.findOrCreate(e.attach).attachSignal(s),s.object}var H=(...t)=>{for(let e of t){let s=E(e);s!=null&&!s.destroyed&&(s.destroyed=!0,s.beforeRead=void 0,--Ps.instanceCount,w(Rt,s.id,s.id))}};function wi(t,e){let s=D(),i=(e==null?void 0:e.attach)!=null?Zt.findOrCreate(e.attach):void 0;i!=null&&(e!=null&&e.name?i.attachSignalByName(e.name,s):i.attachSignal(s));let a=_t(()=>s.set(t()),{autorun:!1,attach:i}),o=E(s);return o.beforeRead=a.run,A(Rt,o.id,a.destroy),s.get}var S,Mt,us,Ms=(us=class{constructor(t){f(this,S,!1);f(this,Mt);c(this,"source");c(this,"lastValue");c(this,"isDestroyed",!1);ht(this),this.source=E(t),g(this,Mt,ot(Gt,this.source.id,(e,s)=>{!r(this,S)&&!this.isDestroyed&&((s==null?void 0:s.touch)===!0?this.touch():this.write())})),A(Rt,this.source.id,()=>this.destroy())}attach(t){let e=Zt.findOrCreate(t);return e.attachLink(this),A(this,Ut,()=>{e.detachLink(this)}),e}nextValue(){return new Promise((t,e)=>{let s=[],i=()=>s.forEach(a=>{a()});s.push(A(this,zt,a=>{i(),t(a)}),A(this,Ut,()=>{i(),e()}))})}asyncValues(t){return Ge(this,null,function*(){let e=0;for(;!this.isDestroyed;)try{let s=yield new ge(this.nextValue());if(t&&t(s,e++))break;Re(this,zt),yield s}catch(s){break}le(this,zt)})}destroy(){var t;this.isDestroyed||((t=r(this,Mt))==null||t.call(this),g(this,Mt,void 0),w(this,Ut,this),le(this,zt),T(this),this.lastValue=void 0,this.isDestroyed=!0,Object.freeze(this))}get isMuted(){return r(this,S)}mute(){return!this.isDestroyed&&!r(this,S)&&(g(this,S,!0),w(this,Qe,this)),this}unmute(){return!this.isDestroyed&&r(this,S)&&(g(this,S,!1),w(this,Ze,this)),this}toggle(){return this.isDestroyed||(g(this,S,!r(this,S)),w(this,r(this,S)?Qe:Ze,this)),r(this,S)}updateValue(t){if(!r(this,S)&&!this.isDestroyed){let{value:e}=this.source;t(e),w(this,zt,e),this.lastValue=e}}},S=new WeakMap,Mt=new WeakMap,us),Ci=class extends Ms{constructor(e,s){super(e);c(this,"target");this.target=E(s),A(Rt,this.target.id,()=>this.destroy()),this.touch()}touch(){return this.updateValue(e=>{this.target.writer(e,{touch:!0})}),this}write(){this.updateValue(e=>{this.target.writer(e)})}},Ei=class extends Ms{constructor(e,s){super(e);c(this,"target");this.target=s,this.touch()}touch(){return this.updateValue(e=>{this.target(e)}),this}write(){this.updateValue(e=>{this.target(e)})}},ie=new Map;function Ot(t,e,s){var l;let i=E(t),a;if(ie.has(i)){a=ie.get(i);let d=(l=E(e))!=null?l:e;if(a.has(d))return a.get(d)}else a=new Map,ie.set(i,a);let o=E(e),n=o!=null?new Ci(t,o):new Ei(t,e),h=s==null?void 0:s.attach;h&&n.attach(h);let p=o!=null?o:e;return a.set(p,n),A(n,Ut,()=>{a.delete(p),a.size===0&&ie.delete(i)}),n}var O,jt,Si=(jt=class{constructor(){f(this,O,new Map)}static fromProps(e,s){let i=new jt,a=s?s.map(o=>[o,e[o]]):Object.entries(e);for(let[o,n]of a)r(i,O).set(o,D(n));return i}keys(){return r(this,O).keys()}signals(){return r(this,O).values()}entries(){return r(this,O).entries()}clear(){for(let e of r(this,O).values())e.destroy();r(this,O).clear()}has(e){return r(this,O).has(e)}get(e){if(!r(this,O).has(e)){let s=D();return r(this,O).set(e,s),s}return r(this,O).get(e)}update(e){e.size&&ue(()=>{for(let[s,i]of e.entries())this.get(s).set(i)})}updateFromProps(e,s){ue(()=>{let i=s?s.map(a=>[a,e[a]]):Object.entries(e);for(let[a,o]of i)this.get(a).set(o)})}},O=new WeakMap,jt);function ki(t,e,s,i,a,o){function n(Nt){if(Nt!==void 0&&typeof Nt!="function")throw new TypeError("Function expected");return Nt}for(var h=i.kind,p=h==="getter"?"get":h==="setter"?"set":"value",l=!e&&t?i.static?t:t.prototype:null,d=e||(l?Object.getOwnPropertyDescriptor(l,i.name):{}),u,v=!1,b=s.length-1;b>=0;b--){var dt={};for(var Ct in i)dt[Ct]=Ct==="access"?{}:i[Ct];for(var Ct in i.access)dt.access[Ct]=i.access[Ct];dt.addInitializer=function(Nt){if(v)throw new TypeError("Cannot add initializers after decoration has completed");o.push(n(Nt||null))};var ct=(0,s[b])(h==="accessor"?{get:d.get,set:d.set}:d[p],dt);if(h==="accessor"){if(ct===void 0)continue;if(ct===null||typeof ct!="object")throw new TypeError("Object expected");(u=n(ct.get))&&(d.get=u),(u=n(ct.set))&&(d.set=u),(u=n(ct.init))&&a.unshift(u)}else(u=n(ct))&&(h==="field"?a.unshift(u):d[p]=u)}l&&Object.defineProperty(l,i.name,d),v=!0}function ts(t,e,s){for(var i=arguments.length>2,a=0;a<e.length;a++)s=i?e[a].call(t,s):e[a].call(t);return i?s:void 0}function Ai(t){return function(e,s){var o;let i=(t==null?void 0:t.name)||s.name,a=!!((o=t==null?void 0:t.readAsValue)!=null&&o);return{get(){let n=Jt(this,i);if(n)return a?n.value:n.get()},set(n){var h;(h=Jt(this,i))==null||h.set(n)},init(n){let h=D(n,t);return gi(this,i,h),Zt.findOrCreate(this).attachSignalByName(i,h),h.value}}}}var St="value",Me=(()=>{var i,a,o,n,ae,It,l;let t,e=[],s=[];return l=class{constructor(u){f(this,n);f(this,i);f(this,a);f(this,o);g(this,i,[]),g(this,o,ts(this,e,void 0)),this.value$=ts(this,s),Re(this,St),this.value$=Jt(this,St),this.value$.onChange(v=>w(this,St,v)),u&&this.add(...u)}get value(){return r(this,o)}set value(u){g(this,o,u)}add(...u){return r(this,i).push(...u),m(this,n,It).call(this),m(this,n,ae).call(this,u)}unshift(...u){return r(this,i).unshift(...u),m(this,n,It).call(this),m(this,n,ae).call(this,u)}remove(...u){m(this,n,ae).call(this,u)()}clear(){r(this,i).length=0,m(this,n,It).call(this)}dispose(){var u;this.clear(),(u=r(this,a))==null||u.destroy(),g(this,a,void 0),le(this,St),T(this),this.value$.destroy(),pi(this)}},i=new WeakMap,a=new WeakMap,o=new WeakMap,n=new WeakSet,ae=function(u){return()=>{for(let v of u){let b=r(this,i).indexOf(v);b!==-1&&r(this,i).splice(b,1)}m(this,n,It).call(this)}},It=function(){var u;(u=r(this,a))==null||u.destroy(),r(this,i).length===0?(g(this,a,void 0),this.value=void 0):(g(this,a,_t(()=>{let v;for(let b of r(this,i)){let dt=xe(b);if(dt!=null){v=dt;break}}this.value=v},r(this,i))),r(this,a).run())},(()=>{let u=typeof Symbol=="function"&&Symbol.metadata?Object.create(null):void 0;t=[Ai({name:St})],ki(l,null,t,{kind:"accessor",name:"value",static:!1,private:!1,access:{has:v=>"value"in v,get:v=>v.value,set:(v,b)=>{v.value=b}},metadata:u},e,s),u&&Object.defineProperty(l,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:u})})(),l.Value=St,l})(),es="onCreate",At="onDestroy",Oi="onParentChanged",Pi="onViewEvent",me=new Map,we=!1,Mi=(t,e)=>{me.set(t,e),we||(we=!0,queueMicrotask(()=>{we=!1;let s=Array.from(me.entries());me.clear();for(let[i,a]of s)i.set(a)}))},B,Tt,it,$,rt,R,P,Q,x,Dt,L,je,at,ne,oe,ds,ji=(ds=class{constructor(t,e){f(this,L);f(this,B);f(this,Tt);f(this,it,new Si);f(this,$,new Map);f(this,rt,new Map);f(this,R);f(this,P);f(this,Q,new Set);f(this,x,[]);f(this,Dt,0);f(this,at);g(this,B,t),g(this,Tt,e),A(this,At,Le.Min,this)}get kernel(){return r(this,B)}get uuid(){return r(this,Tt)}get order(){return r(this,Dt)}set order(t){r(this,Dt)!==t&&(g(this,Dt,t),r(this,R)&&this.parent.resortChildren())}get parentUuid(){return r(this,R)||void 0}set parentUuid(t){r(this,R)!==t&&(this.removeFromParent(),g(this,R,t||void 0),g(this,P,t?r(this,B).getEntity(t):void 0),r(this,P)&&r(this,P).addChild(this))}get parent(){return!r(this,P)&&r(this,R)&&g(this,P,r(this,B).getEntity(r(this,R))),r(this,P)}set parent(t){this.parentUuid=t==null?void 0:t.uuid}get hasParent(){return!!r(this,R)}get children(){return r(this,x)}traverse(t){t(this);for(let e of r(this,x))e.traverse(t)}onDestroy(){var t;r(this,it).clear(),T(this);for(let e of r(this,rt).values())e.cleanup(),e.signal.destroy();r(this,rt).clear();for(let e of r(this,$).values())e.context.set(void 0),e.unsubscribePathValue(),(t=e.unsubscribeFromParent)==null||t.call(e),e.valuePath.dispose(),e.inherited.destroy(),e.provide.destroy(),e.context.destroy();g(this,R,void 0),g(this,P,void 0),r(this,Q).clear(),r(this,x).length=0}addChild(t){var e;if(r(this,x).length===0){r(this,Q).add(t.uuid),r(this,x).push(t);return}if(r(this,Q).has(t.uuid))throw new Error(`child with uuid: ${t.uuid} already exists! parentUuid: ${this.uuid}`);r(this,Q).add(t.uuid),r(this,x).push(t),this.resortChildren();for(let[,s]of r(t,$))m(e=t,L,oe).call(e,s)}resortChildren(){r(this,x).sort((t,e)=>t.order-e.order)}removeChild(t){r(this,Q).has(t.uuid)&&(r(this,Q).delete(t.uuid),r(this,x).splice(r(this,x).indexOf(t),1))}removeFromParent(){if(r(this,P)){r(this,P).removeChild(this),g(this,P,void 0),g(this,R,void 0);for(let[,t]of r(this,$))t.unsubscribeFromParent&&(t.unsubscribeFromParent(),t.unsubscribeFromParent=void 0)}}reSubscribeToParentContexts(){for(let[,t]of r(this,$))m(this,L,oe).call(this,t)}dispatchMessageToView(t,e,s,i=!1){r(this,B).dispatchMessageToView({uuid:r(this,Tt),type:t,data:e,transferables:s,traverseChildren:i})}dispatchViewEvents(t){for(let{type:e,data:s}of t)w(this,Pi,e,s)}dispatchViewEvent(t,e){this.dispatchViewEvents([{type:t,data:e}])}getPropertyReader(t){return m(this,L,je).call(this,t).get}getPropertyWriter(t){return m(this,L,je).call(this,t).set}setProperties(t){this.clearTruthyPropsCache(),ue(()=>{for(let[e,s]of t)this.setProperty(e,s)})}setProperty(t,e){this.getPropertyWriter(t)(e)}getProperty(t){return xe(this.getPropertyReader(t))}propKeys(){return Array.from(r(this,it).keys())}propEntries(){return Array.from(r(this,it).entries()).map(([t,e])=>[t,e.value])}clearTruthyPropsCache(){g(this,at,void 0)}truthyProps(){if(r(this,at))return r(this,at).size?r(this,at):void 0;let t=new Set;for(let[e,s]of r(this,it).entries())if(typeof e=="string"){let i=s.value;i!=null&&i!==!1&&i!==""&&t.add(e)}return g(this,at,t),t.size?t:void 0}hasContext(t){return r(this,$).has(t)}useContext(t){return m(this,L,ne).call(this,t).context.get}provideContext(t){return m(this,L,ne).call(this,t).provide}provideGlobalContext(t){if(r(this,rt).has(t))return r(this,rt).get(t).signal;let e=r(this,B).findOrCreateRootContext(t),s=D(),i=e.add(s);return r(this,rt).set(t,{cleanup:i,signal:s}),s}},B=new WeakMap,Tt=new WeakMap,it=new WeakMap,$=new WeakMap,rt=new WeakMap,R=new WeakMap,P=new WeakMap,Q=new WeakMap,x=new WeakMap,Dt=new WeakMap,L=new WeakSet,je=function(t){return r(this,it).get(t)},at=new WeakMap,ne=function(t){if(r(this,$).has(t))return r(this,$).get(t);let e=D(),s=D(),i=D(),a=new Me([s,e]),o=ot(a,Me.Value,h=>{Mi(i,h)}),n={name:t,inherited:e,provide:s,context:i,valuePath:a,unsubscribePathValue:o};return r(this,$).set(t,n),m(this,L,oe).call(this,n),n},oe=function(t){var e,s;if((e=t.unsubscribeFromParent)==null||e.call(t),t.unsubscribeFromParent=void 0,this.parent){let i=m(s=this.parent,L,ne).call(s,t.name),a=Ot(i.context,t.inherited);t.unsubscribeFromParent=a.destroy.bind(a)}else{let i=r(this,B).findOrCreateRootContext(t.name),a=Ot(i.value$,t.inherited);t.unsubscribeFromParent=a.destroy.bind(a)}},ds);function Ti(t,e){t.indexOf(e)===-1&&t.push(e)}var ss=t=>{let e=t.split("@").map(s=>s.trim());if(e.length===2&&e[1])return e[0]?{key:`${e[0]}@${e[1]}`,prop:e[1],token:e[0]}:{key:e[1],prop:e[1]}},re=(t,e)=>{for(let s of e)t.add(s)},Di=(t,e)=>{if(t!=null)for(let s of t.constructors)e.add(s)},Z,M,I,cs,js=(cs=class{constructor(){f(this,Z,new Map);f(this,M,new Map);f(this,I,new Map)}static get(t){return t!=null?t:Li}define(t,e){r(this,Z).has(t)?Ti(r(this,Z).get(t).constructors,e):r(this,Z).set(t,{token:t,constructors:[e]})}appendRoute(t,e){let s=ss(t);s?r(this,I).has(s.key)?re(r(this,I).get(s.key).routes,e):r(this,I).set(s.key,{routes:new Set(e),token:s.token}):r(this,M).has(t)?re(r(this,M).get(t),e):r(this,M).set(t,new Set(e))}clearRoute(t){let e=ss(t);e?r(this,I).delete(e.key):r(this,M).delete(t)}findTokensByRoute(t,e){let s=new Set([t]),i=r(this,M).has(t)?[...r(this,M).get(t)]:[];for(;i.length;){let a=i.shift();s.has(a)||(s.add(a),r(this,M).has(a)&&i.push(...Array.from(r(this,M).get(a)).filter(o=>!s.has(o))))}if(e){for(let o of e)r(this,I).has(o)&&re(s,r(this,I).get(o).routes);let a;do{a=s.size;for(let o of new Set(s))for(let n of e){let h=`${o}@${n}`;r(this,I).has(h)&&re(s,r(this,I).get(h).routes)}}while(a!==s.size)}return s}findConstructors(t,e){let s=this.findTokensByRoute(t,e),i=new Set;for(let a of s)Di(r(this,Z).get(a),i);return i.size>0?Array.from(i):void 0}hasToken(t){return r(this,Z).has(t)}hasRoute(t){return r(this,M).has(t)}clear(){r(this,Z).clear(),r(this,M).clear()}},Z=new WeakMap,M=new WeakMap,I=new WeakMap,cs),Li=new js,Y;(function(t){t[t.CreateAndDestroy=0]="CreateAndDestroy",t[t.JustCreate=1]="JustCreate",t[t.DestroyOnly=2]="DestroyOnly"})(Y||(Y={}));var is=t=>t.displayName||t.name,C,W,Lt,Xt,q,nt,fs,Ri=(fs=class{constructor(t){f(this,C);f(this,W);f(this,Lt);f(this,Xt);f(this,q);f(this,nt);this.logger=new Us("Kernel"),g(this,C,new Map),g(this,W,new Set),g(this,q,!0),g(this,nt,new Map),ht(this),this.registry=js.get(t)}getEntity(t){var s;let e=(s=r(this,C).get(t))==null?void 0:s.entity;if(!e)throw new Error(`entity with uuid "${t}" not found!`);return e}hasEntity(t){return r(this,C).has(t)}traverseLevelOrderBFS(t=!1){if(r(this,q)){let e=new Map,s=(i,a)=>{let o=this.getEntity(i);e.has(a)?e.get(a).push(o):e.set(a,[o]);for(let n of o.children)s(n.uuid,a+1)};r(this,W).forEach(i=>s(i,0)),g(this,Lt,Array.from(e.entries()).sort((i,a)=>i[0]-a[0]).map(([,i])=>i).flat()),g(this,Xt,r(this,Lt).slice().reverse()),g(this,q,!1)}return t?r(this,Xt):r(this,Lt)}getEntityGraph(){return Array.from(r(this,W)).map(t=>this.getEntityGraphNode(t))}getEntityGraphNode(t){if(!r(this,C).has(t))return;let{token:e,entity:s}=r(this,C).get(t);return{token:e,entity:s,props:Object.fromEntries(s.propEntries()),children:s.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,Y.DestroyOnly));for(let e of this.traverseLevelOrderBFS(!1))this.updateShadowObjects(e.uuid,Y.JustCreate,t.get(e.uuid));t.clear()}run(t){this.logger.isDebug&&this.logger.debug("sync",t),ue(()=>{for(let e of t.changeTrail)this.parse(e)})}parse(t){switch(t.type){case K.CreateEntities:this.createEntity(t.uuid,t.token,t.parentUuid,t.order,t.properties),g(this,q,!0);break;case K.DestroyEntities:this.destroyEntity(t.uuid),g(this,q,!0);break;case K.SetParent:this.setParent(t.uuid,t.parentUuid,t.order),g(this,q,!0);break;case K.UpdateOrder:this.updateOrder(t.uuid,t.order),g(this,q,!0);break;case K.ChangeProperties:this.changeProperties(t.uuid,t.properties);break;case K.ChangeToken:this.changeToken(t.uuid,t.token);break;case K.SendEvents:this.dispatchEventsToEntity(t.uuid,t.events);break}}createEntity(t,e,s,i=0,a){let o=new ji(this,t);o.order=i;let n={token:e,entity:o,usedConstructors:new Map};r(this,C).set(t,n),s&&(o.parentUuid=s),o.hasParent||r(this,W).add(t),a&&o.setProperties(a),this.createShadowObjects(t)}destroyEntity(t){if(!r(this,C).has(t))return;let{entity:e,usedConstructors:s}=r(this,C).get(t);e.removeFromParent(),w(e,At,this),s.clear(),r(this,C).delete(e.uuid),r(this,W).delete(e.uuid)}setParent(t,e,s=0){let i=this.getEntity(t);i.parentUuid===e&&i.order===s||(i.removeFromParent(),i.order=s,i.parentUuid=e,i.hasParent?r(this,W).delete(t):r(this,W).add(t),i.reSubscribeToParentContexts(),queueMicrotask(()=>{this.logger.isDebug&&this.logger.debug("entity.onParentChanged",{uuid:t,parentUuid:e,order:s,entity:i}),w(i,Oi,i)}))}updateOrder(t,e){this.getEntity(t).order=e}dispatchEventsToEntity(t,e){var s;(s=this.getEntity(t))==null||s.dispatchViewEvents(e)}changeProperties(t,e){this.getEntity(t).setProperties(e),this.updateShadowObjects(t)}changeToken(t,e){if(!r(this,C).has(t))return;let s=r(this,C).get(t);s.token!==e&&(s.token=e,this.updateShadowObjects(t))}dispatchMessageToView(t){queueMicrotask(()=>{w(this,Ee,t)})}updateShadowObjects(t,e=Y.CreateAndDestroy,s){let i=r(this,C).get(t);s!=null||(s=new Set(this.registry.findConstructors(i.token,i.entity.truthyProps())));let a=e===Y.CreateAndDestroy||e===Y.DestroyOnly,o=e===Y.CreateAndDestroy||e===Y.JustCreate;if(a){for(let[n,h]of i.usedConstructors)if(!s.has(n)){i.usedConstructors.delete(n);for(let p of h)this.destroyShadowObject(p,i.entity)}}if(o)for(let n of s)i.usedConstructors.has(n)||this.constructShadowObject(n,i);return s}constructShadowObject(t,e){let s=new Set,i=new Set,a=new Map,o=new Map,n=new Map,h=new Map,p=ht(new t({entity:e.entity,provideContext(l,d,u){let v=o.get(l);if(v==null){v=D(d,u?{compare:u}:void 0);let b=Ot(v,e.entity.provideContext(l));i.add(b.destroy.bind(b)),o.set(l,v)}return v},provideGlobalContext(l,d,u){let v=n.get(l);if(v==null){v=D(d,u?{compare:u}:void 0);let b=Ot(v,e.entity.provideGlobalContext(l));i.add(b.destroy.bind(b)),n.set(l,v)}return v},useContext(l,d){let u=a.get(l);if(u===void 0){u=D(void 0,d?{compare:d}:void 0).get,a.set(l,u);let v=Ot(e.entity.useContext(l),u);i.add(v.destroy.bind(v))}return u},useProperty(l,d){let u=h.get(l);if(u===void 0){u=D(void 0,d?{compare:d}:void 0).get,h.set(l,u);let v=Ot(e.entity.getPropertyReader(l),u);i.add(v.destroy.bind(v))}return u},createEffect(...l){let d=_t(...l);return i.add(d.destroy),d},createSignal(...l){let d=D(...l);return i.add(()=>{H(d)}),d},createMemo(...l){let d=wi(...l);return i.add(()=>{H(d)}),d},on(...l){let d=ot(...l);return i.add(d),d},once(...l){let d=A(...l);return i.add(d),d},onDestroy(l){s.add(l)}}));return this.logger.isInfo&&this.logger.info("create shadow-object",is(t),{shadowObject:p,entity:e.entity}),A(e.entity,At,Le.Low,()=>{this.logger.isInfo&&this.logger.info("destroy shadow-object",is(t),{shadowObject:p,entity:e.entity});for(let d of s)d();for(let d of i)d();for(let d of a.values())H(d);for(let d of h.values())H(d);for(let d of o.values())H(d);for(let d of n.values())H(d);s.clear(),i.clear(),a.clear(),h.clear(),o.clear(),n.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){var s;let e=r(this,C).get(t);(s=this.registry.findConstructors(e.token,e.entity.truthyProps()))==null||s.forEach(i=>{this.constructShadowObject(i,e)})}findShadowObjects(t){if(!r(this,C).has(t))return[];let{usedConstructors:e}=r(this,C).get(t);return Array.from(new Set(Array.from(e.values()).map(s=>Array.from(s)).flat()))}attachShadowObject(t,e){ot(e,t),typeof t[es]=="function"&&t[es](e)}destroyShadowObject(t,e){typeof t[At]=="function"&&t[At](e),w(t,At,e),T(e,t)}findOrCreateRootContext(t){let e=r(this,nt).get(t);return e||(e=new Me,r(this,nt).set(t,e)),e}destroy(){for(let t of r(this,nt).values())t.dispose();r(this,nt).clear();for(let t of this.traverseLevelOrderBFS().reverse())this.destroyEntity(t.uuid)}},C=new WeakMap,W=new WeakMap,Lt=new WeakMap,Xt=new WeakMap,q=new WeakMap,nt=new WeakMap,fs);async function Ts(t,e,s,i=!0){var o,n;if(s.has(e)){console.warn("importModule: skipping already imported module",e);return}else s.add(e);e.extends&&await Promise.all(e.extends.map(h=>Ts(t,h,s,!1)));let{registry:a}=t;if(e.define)for(let[h,p]of Object.entries(e.define))a.define(h,p);if(e.routes)for(let[h,p]of Object.entries(e.routes))a.appendRoute(h,p);await((n=(o=e.initialize)==null?void 0:o.call(e,{define:(h,p)=>a.define(h,p),kernel:t,registry:a}))!=null?n:Promise.resolve()),i&&t.upgradeEntities()}var xi=t=>(typeof t=="string"&&(t=new URL(t,globalThis.location.href)),t.toString()),Qt,lt,Ds,Ls,Rs,gs,Ni=(gs=class{constructor(t){f(this,lt);f(this,Qt,new Set);var e,s;this.kernel=(e=t==null?void 0:t.kernel)!=null?e:new Ri,this.postMessage=(s=t==null?void 0:t.postMessage)!=null?s:self.postMessage.bind(self),ot(this.kernel,Ee,"onMessageToView",this)}route(t){var e;switch(t.data.type){case Fs:m(this,lt,Ds).call(this,t.data);break;case zs:m(this,lt,Ls).call(this,t.data);break;case Vs:m(this,lt,Rs).call(this,t.data);break;default:console.warn("[MessageRouter] unknown message",(e=t.data.type)!=null?e:t.data)}}onMessageToView(t){let i=t,{transferables:e}=i,s=$e(i,["transferables"]);this.postMessage({type:Ee,data:s},{transfer:e})}},Qt=new WeakMap,lt=new WeakSet,Ds=async function(t){try{let e=await import(xi(t.importModule));e[ye]?(await Ts(this.kernel,e[ye],r(this,Qt)),this.postMessage({type:pe,url:t.importModule})):this.postMessage({type:pe,url:t.importModule,error:`module has no "${ye}" export`})}catch(e){console.error("[MessageRouter] failed to import module",e),this.postMessage({type:pe,url:t.importModule,error:`${e}`})}},Ls=function(t){try{this.kernel.run(t)}catch(e){console.error("[MessageRouter] failed to apply change trail",e),this.postMessage({type:Be,serial:t.serial,error:e.toString()})}t.serial&&this.postMessage({type:Be,serial:t.serial})},Rs=function(t){console.debug("[MessageRouter] on destroy",t),T(this.kernel,this),r(this,Qt).clear(),this.postMessage({type:Is})},gs),Fi=class{constructor(){this.onmessage=t=>{var e;t.data.type===N?globalThis[j]=t.data.config:((e=this.router)!=null||(this.router=new Ni),this.router.route(t))}}start(){self.addEventListener("message",this.onmessage),self.postMessage({type:$s})}};console.debug("@spearwolf/shadow-objects/WorkerRuntime: hello!");var zi=new Fi;zi.start();\n/*! Bundled license information:\n\n@spearwolf/eventize/lib/index.mjs:\n (*!\n =============================================================================\n @spearwolf/eventize 4.0.1+build.20240804\n \u2014 https://github.com/spearwolf/eventize.git\n =============================================================================\n \n Copyright 2015-2024 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 Ds=()=>new Be;var jt=(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(u){a(),n(u.toString())}},s.addEventListener("message",h)});var fr=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},me=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 k("RemoteWorkerEnv"),W(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=Ds();this.configureConsoleLogger(t);try{if(await jt(t,ds,ms),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=fr(t),i={type:cs,changeTrail:t},n=++this.#s;return e&&(i.serial=n),this.#t.postMessage(i,r),e?jt(this.#t,ps,vs,o=>{if(o.error)throw o.error;return o.serial===n}):Promise.resolve()}importScript(t){return t=ge(t),this.#t.postMessage({type:us,importModule:t}),jt(this.#t,gs,bs,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:fs}),jt(t,ys,ws).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=`${M}.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:M,config:{...k.sharedConfig,enable:this.logger.isEnabled,...r,...k.isEnabled?{}:{enable:!1}}})}};var Nt,Dt=class extends X{static{this.observedAttributes=[...X.observedAttributes,se,ie,re]}static{this.DefaultAutoSync="frame"}#t;#e;#s;#r;#i;constructor(){super(),this.isShaeWorkerElement=!0,this.shadowEnv=new $,this.logger=new k("ShaeWorkerElement"),this.autostart=!0,this.isConnected$=f(!1),this.autoSync$=f(Nt.DefaultAutoSync),this.src$=f(""),this.#t=!1,this.#e=!1,this.ns$.onChange(t=>{this.shadowEnv.view=L.get(t)}),y(this.shadowEnv,$.ContextCreated,()=>{this.#i?.run(),this.dispatchEvent(new CustomEvent($.ContextCreated.toLowerCase(),{bubbles:!1,detail:{shadowEnv:this.shadowEnv}}))}),y(this.shadowEnv,$.ContextLost,()=>{this.dispatchEvent(new CustomEvent($.ContextLost.toLowerCase(),{bubbles:!1,detail:{shadowEnv:this.shadowEnv}}))}),this.autoSync$.onChange(t=>{let e=this.hasAttribute(I),r=e?this.getAttribute(I):void 0;t===Nt.DefaultAutoSync?e&&r!==t&&this.setAttribute(I,t):r!==t&&this.setAttribute(I,t)}),this.#a(),this.#n()}#n(){this.#i=v(()=>{let t=this.src$.get();t&&this.importScript(t)},{autorun:!1})}get shouldAutostart(){return this.autostart&&!Mt(this,Ts)}get autoSync(){return this.autoSync$.value}set autoSync(t){typeof t!="string"&&(t=t?Nt.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(){A(()=>{this.hasAttribute(I)&&this.autoSync$.set(this.getAttribute(I)),this.isConnected$.set(!0)}),this.shouldAutostart&&this.start()}disconnectedCallback(){this.isConnected$.set(!1),this.#o()}attributeChangedCallback(t){if(super.attributeChangedCallback(t),t===se&&this.shadowEnv.envProxy!=null)throw new Error('Changing the "local" attribute after the shadowEnv has been created is not supported.');if(t===re&&this.#h(),t===I&&(this.autoSync=this.hasAttribute(I)?this.getAttribute(I):!0),t===ie){let e=(this.getAttribute(ie)||"").trim();this.src$.set(e),this.shadowEnv.isReady&&this.#i?.run()}}start(){if(!this.#e){if(this.#t=!1,this.shadowEnv.view??=L.get(this.ns),this.shadowEnv.envProxy==null){let t=Mt(this,se)?new ye:new me;this.shadowEnv.envProxy=t,this.#h()}this.#e=!0}return this.shadowEnv.ready()}destroy(){this.#r?.destroy(),this.#i?.destroy(),S(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.#r=v(()=>{if(this.isConnected$.get()){let t=(this.autoSync$.get()||Nt.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(re))}};Nt=Dt;customElements.define(As,Dt);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.16.0",
4
+ "version": "0.18.0",
5
5
  "author": {
6
6
  "name": "Wolfger Schramm",
7
7
  "email": "wolfger@spearwolf.de",