@spearwolf/shadow-objects 0.33.0 → 0.34.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.
- package/CHANGELOG.md +320 -61
- package/README.md +57 -13
- package/bundle.js +5 -54
- package/package.json +7 -3
- package/src/ChangeTrailRefusedError.d.ts +27 -0
- package/src/ChangeTrailRefusedError.d.ts.map +1 -0
- package/src/ChangeTrailRefusedError.js +12 -0
- package/src/ChangeTrailRefusedError.js.map +7 -0
- package/src/EntityUuidInUseError.d.ts +19 -0
- package/src/EntityUuidInUseError.d.ts.map +1 -0
- package/src/EntityUuidInUseError.js +11 -0
- package/src/EntityUuidInUseError.js.map +7 -0
- package/src/WorkerTimeoutError.d.ts +25 -0
- package/src/WorkerTimeoutError.d.ts.map +1 -0
- package/src/WorkerTimeoutError.js +12 -0
- package/src/WorkerTimeoutError.js.map +7 -0
- package/src/bundle.d.ts +1 -1
- package/src/bundle.d.ts.map +1 -1
- package/src/bundle.js +1 -1
- package/src/bundle.js.map +2 -2
- package/src/constants.d.ts +9 -2
- package/src/constants.d.ts.map +1 -1
- package/src/constants.js +1 -1
- package/src/constants.js.map +2 -2
- package/src/create-worker.bundle.d.ts +1 -1
- package/src/create-worker.bundle.d.ts.map +1 -1
- package/src/create-worker.bundle.js.map +1 -1
- package/src/create-worker.d.ts +1 -1
- package/src/create-worker.d.ts.map +1 -1
- package/src/create-worker.js.map +1 -1
- package/src/elements/ShaeElement.d.ts +70 -2
- package/src/elements/ShaeElement.d.ts.map +1 -1
- package/src/elements/ShaeElement.js +129 -25
- package/src/elements/ShaeElement.js.map +3 -3
- package/src/elements/ShaeEntElement.d.ts +39 -1
- package/src/elements/ShaeEntElement.d.ts.map +1 -1
- package/src/elements/ShaeEntElement.js +397 -167
- package/src/elements/ShaeEntElement.js.map +2 -2
- package/src/elements/ShaeLifecycleElement.d.ts +71 -0
- package/src/elements/ShaeLifecycleElement.d.ts.map +1 -0
- package/src/elements/ShaeLifecycleElement.js +83 -0
- package/src/elements/ShaeLifecycleElement.js.map +7 -0
- package/src/elements/ShaePropElement.d.ts +52 -2
- package/src/elements/ShaePropElement.d.ts.map +1 -1
- package/src/elements/ShaePropElement.js +240 -219
- package/src/elements/ShaePropElement.js.map +2 -2
- package/src/elements/ShaeWorkerElement.d.ts +49 -5
- package/src/elements/ShaeWorkerElement.d.ts.map +1 -1
- package/src/elements/ShaeWorkerElement.js +204 -73
- package/src/elements/ShaeWorkerElement.js.map +2 -2
- package/src/elements/constants.d.ts +6 -0
- package/src/elements/constants.d.ts.map +1 -1
- package/src/elements/constants.js +12 -0
- package/src/elements/constants.js.map +2 -2
- package/src/elements/deferredTeardown.d.ts +24 -0
- package/src/elements/deferredTeardown.d.ts.map +1 -0
- package/src/elements/deferredTeardown.js +30 -0
- package/src/elements/deferredTeardown.js.map +7 -0
- package/src/elements/displayContentsRule.d.ts +25 -0
- package/src/elements/displayContentsRule.d.ts.map +1 -0
- package/src/elements/displayContentsRule.js +37 -0
- package/src/elements/displayContentsRule.js.map +7 -0
- package/src/elements/events.d.ts +10 -7
- package/src/elements/events.d.ts.map +1 -1
- package/src/elements/forwardCustomEvents.d.ts +19 -0
- package/src/elements/forwardCustomEvents.d.ts.map +1 -0
- package/src/elements/forwardCustomEvents.js +47 -0
- package/src/elements/forwardCustomEvents.js.map +7 -0
- package/src/elements/hostedSlots.d.ts +36 -0
- package/src/elements/hostedSlots.d.ts.map +1 -0
- package/src/elements/hostedSlots.js +118 -0
- package/src/elements/hostedSlots.js.map +7 -0
- package/src/elements/parentRemoval.d.ts +18 -0
- package/src/elements/parentRemoval.d.ts.map +1 -0
- package/src/elements/parentRemoval.js +60 -0
- package/src/elements/parentRemoval.js.map +7 -0
- package/src/elements/propValueConverters.d.ts +3 -0
- package/src/elements/propValueConverters.d.ts.map +1 -0
- package/src/elements/propValueConverters.js +54 -0
- package/src/elements/propValueConverters.js.map +7 -0
- package/src/elements/requestEntAncestor.d.ts +32 -0
- package/src/elements/requestEntAncestor.d.ts.map +1 -0
- package/src/elements/requestEntAncestor.js +16 -0
- package/src/elements/requestEntAncestor.js.map +7 -0
- package/src/elements.js.map +1 -1
- package/src/in-the-dark/Entity.d.ts +113 -3
- package/src/in-the-dark/Entity.d.ts.map +1 -1
- package/src/in-the-dark/Entity.js +292 -63
- package/src/in-the-dark/Entity.js.map +3 -3
- package/src/in-the-dark/Kernel.d.ts +76 -17
- package/src/in-the-dark/Kernel.d.ts.map +1 -1
- package/src/in-the-dark/Kernel.js +410 -378
- package/src/in-the-dark/Kernel.js.map +3 -3
- package/src/in-the-dark/Registry.d.ts.map +1 -1
- package/src/in-the-dark/Registry.js +83 -14
- package/src/in-the-dark/Registry.js.map +2 -2
- package/src/in-the-dark/ShadowObject.d.ts.map +1 -1
- package/src/in-the-dark/ShadowObject.js +1 -0
- package/src/in-the-dark/ShadowObject.js.map +2 -2
- package/src/in-the-dark/ShadowObjectCreationScope.d.ts +126 -0
- package/src/in-the-dark/ShadowObjectCreationScope.d.ts.map +1 -0
- package/src/in-the-dark/ShadowObjectCreationScope.js +596 -0
- package/src/in-the-dark/ShadowObjectCreationScope.js.map +7 -0
- package/src/in-the-dark/SignalsPath.d.ts.map +1 -1
- package/src/in-the-dark/SignalsPath.js +2 -2
- package/src/in-the-dark/SignalsPath.js.map +2 -2
- package/src/in-the-dark/events.js.map +1 -1
- package/src/in-the-dark/importModule.d.ts +7 -0
- package/src/in-the-dark/importModule.d.ts.map +1 -1
- package/src/in-the-dark/importModule.js +5 -2
- package/src/in-the-dark/importModule.js.map +2 -2
- package/src/index.d.ts +7 -1
- package/src/index.d.ts.map +1 -1
- package/src/index.js +5 -1
- package/src/index.js.map +2 -2
- package/src/shadow-objects.d.ts +2 -0
- package/src/shadow-objects.d.ts.map +1 -1
- package/src/shadow-objects.js +2 -0
- package/src/shadow-objects.js.map +2 -2
- package/src/shadow-objects.worker.js +0 -1
- package/src/shadow-objects.worker.js.map +2 -2
- package/src/shae-ent.js.map +1 -1
- package/src/shae-prop.js +2 -2
- package/src/shae-prop.js.map +2 -2
- package/src/shae-worker.js.map +1 -1
- package/src/types.d.ts +35 -4
- package/src/types.d.ts.map +1 -1
- package/src/utils/ConsoleLogger.d.ts +45 -10
- package/src/utils/ConsoleLogger.d.ts.map +1 -1
- package/src/utils/ConsoleLogger.js +51 -26
- package/src/utils/ConsoleLogger.js.map +2 -2
- package/src/utils/FrameLoop.d.ts +42 -3
- package/src/utils/FrameLoop.d.ts.map +1 -1
- package/src/utils/FrameLoop.js +71 -10
- package/src/utils/FrameLoop.js.map +2 -2
- package/src/utils/MicrotaskCollector.d.ts +45 -0
- package/src/utils/MicrotaskCollector.d.ts.map +1 -0
- package/src/utils/MicrotaskCollector.js +33 -0
- package/src/utils/MicrotaskCollector.js.map +7 -0
- package/src/utils/MicrotaskGate.d.ts +17 -0
- package/src/utils/MicrotaskGate.d.ts.map +1 -0
- package/src/utils/MicrotaskGate.js +20 -0
- package/src/utils/MicrotaskGate.js.map +7 -0
- package/src/utils/array-utils.js.map +1 -1
- package/src/utils/attr-utils.d.ts +6 -0
- package/src/utils/attr-utils.d.ts.map +1 -1
- package/src/utils/attr-utils.js +3 -1
- package/src/utils/attr-utils.js.map +2 -2
- package/src/utils/constants.js.map +1 -1
- package/src/utils/generateUUID.d.ts +11 -0
- package/src/utils/generateUUID.d.ts.map +1 -1
- package/src/utils/generateUUID.js +31 -266
- package/src/utils/generateUUID.js.map +2 -2
- package/src/utils/props-utils.d.ts +3 -2
- package/src/utils/props-utils.d.ts.map +1 -1
- package/src/utils/props-utils.js +13 -24
- package/src/utils/props-utils.js.map +2 -2
- package/src/utils/runGuarded.d.ts +27 -0
- package/src/utils/runGuarded.d.ts.map +1 -0
- package/src/utils/runGuarded.js +11 -0
- package/src/utils/runGuarded.js.map +7 -0
- package/src/utils/toMaybe.d.ts.map +1 -1
- package/src/utils/toMaybe.js.map +1 -1
- package/src/utils/toNamespace.d.ts.map +1 -1
- package/src/utils/toNamespace.js.map +1 -1
- package/src/utils/toUrlString.d.ts +12 -0
- package/src/utils/toUrlString.d.ts.map +1 -1
- package/src/utils/toUrlString.js.map +2 -2
- package/src/utils/waitForMessageOfType.d.ts +12 -1
- package/src/utils/waitForMessageOfType.d.ts.map +1 -1
- package/src/utils/waitForMessageOfType.js +16 -1
- package/src/utils/waitForMessageOfType.js.map +2 -2
- package/src/view/ComponentChanges.d.ts +88 -1
- package/src/view/ComponentChanges.d.ts.map +1 -1
- package/src/view/ComponentChanges.js +243 -73
- package/src/view/ComponentChanges.js.map +2 -2
- package/src/view/ComponentContext.d.ts +206 -16
- package/src/view/ComponentContext.d.ts.map +1 -1
- package/src/view/ComponentContext.js +548 -91
- package/src/view/ComponentContext.js.map +2 -2
- package/src/view/ComponentMemory.d.ts +3 -3
- package/src/view/ComponentMemory.d.ts.map +1 -1
- package/src/view/ComponentMemory.js.map +1 -1
- package/src/view/IShadowObjectEnvProxy.d.ts +29 -3
- package/src/view/IShadowObjectEnvProxy.d.ts.map +1 -1
- package/src/view/LocalShadowObjectEnv.d.ts +1 -1
- package/src/view/LocalShadowObjectEnv.d.ts.map +1 -1
- package/src/view/LocalShadowObjectEnv.js +8 -6
- package/src/view/LocalShadowObjectEnv.js.map +2 -2
- package/src/view/RemoteWorkerEnv.d.ts +89 -5
- package/src/view/RemoteWorkerEnv.d.ts.map +1 -1
- package/src/view/RemoteWorkerEnv.js +195 -77
- package/src/view/RemoteWorkerEnv.js.map +2 -2
- package/src/view/ShadowEnv.d.ts +49 -2
- package/src/view/ShadowEnv.d.ts.map +1 -1
- package/src/view/ShadowEnv.js +223 -60
- package/src/view/ShadowEnv.js.map +2 -2
- package/src/view/ViewComponent.d.ts +78 -14
- package/src/view/ViewComponent.d.ts.map +1 -1
- package/src/view/ViewComponent.js +90 -14
- package/src/view/ViewComponent.js.map +2 -2
- package/src/view/cloneChangeTrail.js.map +2 -2
- package/src/worker/MessageRouter.d.ts +14 -0
- package/src/worker/MessageRouter.d.ts.map +1 -1
- package/src/worker/MessageRouter.js +75 -15
- package/src/worker/MessageRouter.js.map +2 -2
- package/src/worker/WorkerRuntime.d.ts +22 -1
- package/src/worker/WorkerRuntime.d.ts.map +1 -1
- package/src/worker/WorkerRuntime.js +60 -8
- package/src/worker/WorkerRuntime.js.map +2 -2
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.
|
|
4
|
+
@version 0.34.0+bundle.20260902
|
|
5
5
|
|
|
6
6
|
Copyright 2026 Wolfger Schramm
|
|
7
7
|
|
|
@@ -18,62 +18,13 @@ See the License for the specific language governing permissions and
|
|
|
18
18
|
limitations under the License.
|
|
19
19
|
|
|
20
20
|
*/
|
|
21
|
-
var pt="shaeRequestEntParent",gt="shaeReRequestEntParent",Us="shae-worker",yt="shae-ent",Vs="shae-prop",ce="token",q="forward-custom-events";var vt="local",Bs="no-autostart",mt="no-structured-clone",H="auto-sync";var bt="name",wt="value",Et="type",Ct="no-trim";var Ce="*",Ys=1,ss=2,is=4,Q=Symbol.for("eventize"),or="[eventize]",rs=s=>s===Ce,Js=s=>{switch(typeof s){case"string":case"symbol":return!0;default:return!1}},Xs=typeof console<"u",ar=Xs?console[console.warn?"warn":"log"].bind(console,or):()=>{},hr=(s,e,t)=>(Object.defineProperty(s,e,{value:t,configurable:!0}),s),lr=0,ns=class{static publish(s){s.sort((e,t)=>e.order-t.order).forEach(e=>e.replay())}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:lr++})}isKnown(s){return this.eventNames.has(s)}replayTo(s,e,t=[]){if(rs(s))this.eventNames.forEach(i=>this.replayTo(i,e,t));else if(this.events.has(s)){let{order:i,args:r}=this.events.get(s);t.push({order:i,replay:()=>e.apply(s,r)})}return t}},es=(s,e,t,i)=>{if(typeof e=="function"){let r=e.apply(s,t);r!=null&&i?.(r)}},cr=(s,e,t,i)=>es(e,e.emit,[s].concat(t),i),ur=s=>{switch(typeof s){case"function":return Ys;case"string":case"symbol":return ss;case"object":return is}},dr=0,fr=()=>++dr,Zs=class{id;eventName;isCatchEmAll;priority;listener;listenerObject;listenerType;callAfterApply;isRemoved;refCount;constructor(s,e,t,i=null){this.id=fr(),this.eventName=s,this.isCatchEmAll=rs(s),this.listener=t,this.listenerObject=i,this.priority=e,this.listenerType=ur(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===Ce||s===this.eventName:this.listener===s&&this.listenerObject===e}apply(s,e,t){if(this.isRemoved)return;let{listener:i,listenerObject:r}=this;switch(this.listenerType){case Ys:es(r,i,e,t),this.callAfterApply&&this.callAfterApply();break;case ss:es(r,r[i],e,t),this.callAfterApply&&this.callAfterApply();break;case is:{let n=i[s];if(this.isCatchEmAll||this.eventName===s){if(typeof n=="function"){let o=n.apply(i,e);o!=null&&t?.(o)}else cr(s,i,e,t);this.callAfterApply&&this.callAfterApply()}break}}}},pr=(s,e)=>s.priority!==e.priority?e.priority-s.priority:s.id-e.id,gr=(s,e)=>{let t=0,i=s.length;for(;t<i;){let r=t+i>>>1;pr(e,s[r])<0?i=r:t=r+1}return t},Gs=s=>s?.slice(0),qs=(s,e)=>{let t=s.indexOf(e);t>-1&&s.splice(t,1)},yr=s=>s===is||s===ss,ts=(s,e,t)=>{let i=s.findIndex(r=>r.isEqual(e,t));i>-1&&(s[i].isRemoved=!0,s.splice(i,1))},Xt=(s,e,t)=>{let i=[];for(let r of s)(e==null&&r.listenerObject===t||r.eventName===e&&r.listener===t)&&i.push(r);for(let r of i)ts(s,r,void 0)},Zt=s=>{s&&(s.forEach(e=>{e.isRemoved=!0}),s.length=0)},vr=(s,e)=>s.listenerType===e.listenerType?s.priority===e.priority&&s.eventName===e.eventName&&s.listenerObject===e.listenerObject&&s.listener===e.listener:!1,mr=(s,e)=>{if(yr(s.listenerType))return e.find(t=>vr(s,t))},br=(s,e)=>{let t=mr(s,e);return t?(t.refCount+=1,t):(e.splice(gr(e,s),0,s),s)},wr=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 br(s,s.isCatchEmAll?this.catchEmAllListeners:this.getListenersForEventName(s.eventName))}remove(s,e,t=!1){if(e==null&&Array.isArray(s)){s.forEach(i=>this.remove(i,null,t));return}if(s==null||e==null&&rs(s)){this.removeAllListeners();return}if(e==null&&Js(s)){this.removeByEventName(s);return}if(s instanceof Zs){this.removeByEventListener(s);return}if(t){this.removeByEventNameAndListenerObject(s,e);return}this.removeByListener(s,e)}removeByEventName(s){Zt(this.namedListeners.get(s)),this.namedListeners.delete(s)}removeByEventListener(s){s.isRemoved||(s.refCount-=1,!(s.refCount>=1)&&(s.isRemoved=!0,this.namedListeners.forEach((e,t)=>{qs(e,s),e.length===0&&this.namedListeners.delete(t)}),qs(this.catchEmAllListeners,s)))}removeByEventNameAndListenerObject(s,e){this.namedListeners.forEach((t,i)=>{Xt(t,s,e),t.length===0&&this.namedListeners.delete(i)})}removeByListener(s,e){let t=typeof s=="object";this.namedListeners.forEach((i,r)=>{ts(i,s,e),t&&Xt(i,void 0,s),i.length===0&&this.namedListeners.delete(r)}),ts(this.catchEmAllListeners,s,e),t&&Xt(this.catchEmAllListeners,void 0,s)}removeAllListeners(){this.namedListeners.forEach(s=>Zt(s)),this.namedListeners.clear(),Zt(this.catchEmAllListeners)}forEach(s,e){let t=Gs(this.catchEmAllListeners),i=Gs(this.namedListeners.get(s));if(s===Ce||!i||i.length===0)t.forEach(e);else if(t.length===0)i.forEach(e);else{let r=i.length,n=t.length,o=0,a=0;for(;o<r||a<n;){if(o<r){let f=i[o];if(a>=n||f.priority>=t[a].priority){e(f),++o;continue}}a<n&&(e(t[a]),++a)}}}getSubscriptionCount(){let s=this.catchEmAllListeners.length;for(let e of this.namedListeners.values())s+=e.length;return s}},ue=s=>!!(s&&s[Q]);function qe(s){if(ue(s))return s;let e=new wr,t=new ns;return hr(s,Q,{keeper:t,store:e}),s}var K={Max:Number.POSITIVE_INFINITY,Critical:1e9,High:1e6,Normal:0,Low:-1e4,Min:Number.NEGATIVE_INFINITY,AAA:1e9,BB:1e6,C:1e3,Default:0},Er=(s,e,t,i,r,n,o)=>{let a=s.add(new Zs(t,i,r,n));return e.replayTo(t,a,o),a},ei=(s,e,t,i)=>{let r=t.length,n=typeof t[0],o,a,f,m;if(r>=2&&r<=3&&n==="number"?(o=Ce,[a,f,m]=t):r>=3&&r<=4&&typeof t[1]=="number"?[o,a,f,m]=t:(a=K.Default,n==="string"||n==="symbol"||Array.isArray(t[0])?[o,f,m]=t:(o=Ce,[f,m]=t)),!f)throw Xs&&ar("called with insufficient arguments!",t),new Error("subscribeTo() called with insufficient arguments");let P=c=>D=>Er(s,e,D,c,f,m,i);return Array.isArray(o)?o.map(c=>Array.isArray(c)?P(c[1])(c[0]):P(a)(c)):P(a)(o)},Cr=(s,e,t)=>{let i=[],r=ei(s,e,t,i);return ns.publish(i),r},Sr=(s,e,t)=>{let i=[];return{listeners:ei(s,e,t,i),publishRetained:()=>ns.publish(i)}},Hs=s=>e=>{e.callAfterApply=()=>{s?.()}},ti=(s,e)=>Object.assign(()=>A(s,e),Array.isArray(e)?{listeners:e}:{listener:e}),Qs=(s,e,t,i)=>{if(e===Ce)throw new Error("emit() must be called with a concrete event name \u2014 '*' is reserved for subscribing to all events and cannot be emitted");let{store:r,keeper:n}=s[Q];r.forEach(e,o=>o.apply(e,t,i)),n.retain(e,t)},si=(s,e,t,i)=>{Array.isArray(e)?e.forEach(r=>Qs(s,r,t,i)):Qs(s,e,t,i)},Ks=(s,e,t,i)=>{if(e===Ce)throw new Error("emit() must be called with a concrete event name \u2014 '*' is reserved for subscribing to all events and cannot be emitted");let r=s,n=r[e];if(typeof n=="function"){let a=n.apply(s,t);a!=null&&i?.(a);return}let o=r.emit;if(typeof o=="function"){let a=o.apply(s,[e,...t]);a!=null&&i?.(a)}},ii=(s,e,t,i)=>{Array.isArray(e)?e.forEach(r=>Ks(s,r,t,i)):Ks(s,e,t,i)},ri=s=>s!=null&&typeof s=="object";function b(s,...e){let t=qe(s),{store:i,keeper:r}=t[Q];return ti(t,Cr(i,r,e))}function C(s,...e){let t=qe(s),{store:i,keeper:r}=t[Q],{listeners:n,publishRetained:o}=Sr(i,r,e),a=ti(t,n),f=!1,m=()=>{f||(a(),f=!0)};return Array.isArray(n)?n.forEach(Hs(m)):Hs(m)(n),o(),m}function St(s,e){return new Promise(t=>{C(s,e,t)})}function A(s,e,t){if(!ue(s))return;let{store:i,keeper:r}=s[Q],n=typeof e,o=t!=null&&(n==="string"||n==="symbol");i.remove(e,t,o),Array.isArray(e)?r.remove(e.filter(a=>typeof a=="string")):Js(e)&&r.remove(e)}function g(s,e,...t){ue(s)?si(s,e,t):ri(s)&&ii(s,e,t)}function kr(s,e,...t){let i=[],r=n=>{i.push(n)};return ue(s)?si(s,e,t,r):ri(s)&&ii(s,e,t,r),i=i.map(n=>Array.isArray(n)?Promise.all(n):Promise.resolve(n)),i.length>0?Promise.all(i):Promise.resolve()}function Y(s,e){let t=qe(s),{keeper:i}=t[Q];i.add(e)}function de(s,e){if(!ue(s))throw new Error("object is not eventized");let{keeper:t}=s[Q];t.clear(e)}function Ar(s,e){if(!ue(s))throw new Error("object is not eventized");let{keeper:t}=s[Q];t.remove(e)}var Pr=b,Tr=C,xr=A,Or=g,Rr=kr,Mr=St,Lr=Y,Dr=de,Nr=Ar,T=(()=>{let s=(e={})=>qe(e);return s.inject=(e={})=>(e=qe(e),Object.assign(e,{on:(...t)=>Pr(e,...t),once:(...t)=>Tr(e,...t),onceAsync:t=>Mr(e,t),off:(t,i)=>xr(e,t,i),emit:(t,...i)=>Or(e,t,...i),emitAsync:(t,...i)=>Rr(e,t,...i),retain:t=>Lr(e,t),retainClear:t=>Dr(e,t),unretain:t=>Nr(e,t)}),e),s.is=ue,s})();var os=s=>ue(s)?s[Q]?.store?.getSubscriptionCount()??0:0;var J=Symbol.for("signal"),De=Symbol.for("effect"),ni=Symbol.for("destroySignal"),oi=Symbol.for("createEffect"),_r=Symbol.for("destroyEffect"),_e="value",us="mute",ds="unmute",pe="destroy",Wr="off",Qe=Symbol.for("recall"),Ke=T(),fe=T(),Se=T(),ci=T(),ke=class{static current;delayedEffects=[];batch(e,t){let i=this.delayedEffects.length;for(let r=0;r<i;r++){let[n,o]=this.delayedEffects[r];if(!(n>t)){if(n===t){o.add(e);return}this.delayedEffects.splice(r,0,[t,new Set([e])]);return}}this.delayedEffects.push([t,new Set([e])])}flush(){this.run(),this.delayedEffects.length=0}run(){let e=new Set,t=[];try{t.push(b(Se,(i,r)=>{r===Qe&&e.add(i)}),b(ci,i=>{e.add(i)}));for(let[,i]of this.delayedEffects)for(let r of i)e.has(r)||g(Se,r,r,Qe)}finally{for(let i of t)i()}}},ui=()=>ke.current;function W(s){let e=ke.current;e?e=void 0:e=ke.current=new ke;try{s()}finally{e&&(ke.current=void 0,e.run())}}var as=0;function xt(s){as++;try{s()}finally{as--}}function fs(){return as>0}var kt=class{[De];constructor(e){this[De]=e,C(e,pe,()=>{this[De]=void 0})}run=()=>this[De]?.run();destroy=()=>{this[De]?.destroy(),this[De]=void 0}},hs=[],di=()=>hs.at(-1),$r=(s,e)=>{hs.push(s);try{return e()}finally{hs.pop()}};var Ne=new WeakMap,He=new Set,ai=new FinalizationRegistry(s=>{He.has(s)&&s.clear()});var re=class s{#e=new Set;#t=new Set;#s=new Map;#i=new WeakMap;#r=new Map;#n=new Set;#a=new Set;#o;#h;static get(e){if(e!=null)return e instanceof s?e:Ne.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){Ne.get(e)?.clear()}static clear(){for(let e of[...He])e.clear();He.clear()}constructor(e){if(e!=null&&e instanceof s)return e;if(e??=this,Ne.has(e))return Ne.get(e);this.#h=new WeakRef(e),Ne.set(e,this),He.add(this),e!==this&&ai.register(e,this,this),T(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=R(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 i=R(t);this.#s.set(e,i);let r=this.#r.get(e);r?r.add(i):this.#r.set(e,new Set([i])),this.#i.has(i)?this.#i.get(i).add(e):this.#i.set(i,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=R(e);if(t&&(this.#t.delete(t),this.#i.has(t))){let i=this.#i.get(t);for(let r of i){let n=this.#r.get(r);if(n){if(n.delete(t),n.size===0)this.#s.delete(r),this.#r.delete(r);else if(this.#s.get(r)===t){let o;for(let a of n)o=a;this.#s.set(r,o)}}}i.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()}off(){for(let e of this.#e)e.off();for(let e of this.#n)e.destroy();this.#n.clear();for(let e of this.#a)e.destroy();this.#a.clear();for(let e of this.#t)e.destroyed||g(fe,e.id,e.id,{detach:!0});g(this,Wr,this)}clear(){g(this,pe,this),A(this);for(let e of this.#e)e.clear();for(let e of this.#n)e.destroy();for(let e of this.#t)M(e);for(let e of this.#a)e.destroy();if(this.#e.clear(),this.#t.clear(),this.#s.clear(),this.#r.clear(),this.#n.clear(),this.#a.clear(),this.#o?.detachGroup(this),this.#h){let e=this.#h.deref();e!==void 0&&Ne.delete(e),this.#h=void 0}He.delete(this),ai.unregister(this)}},At=class{#e;#t;constructor(e="id",t=1){this.#e=e,this.#t=t}make(){return Symbol(`${this.#e}${this.#t++}`)}},Fr=s=>s!=null&&typeof s.then=="function",ls=class s{static idGen=new At("ef");static count=0;static maxDepth=256;id;callback;#e;#t=new Set;#s=new Set;#i=new Map;#r=new Set;childEffects=[];curChildEffectSlot=0;autorun=!0;shouldRun=!0;priority;#n;#a=!1;#o=0;constructor(e,t){T(this),this.callback=e;let i;t?.attach!=null&&(i=re.findOrCreate(t.attach),i.attachEffect(this)),this.autorun=t?.autorun??!0,this.#n=t?.dependencies?t.dependencies.map(r=>{switch(typeof r){case"string":case"symbol":return i.signal(r);default:return r}}):void 0,this.id=s.idGen.make(),this.priority=t?.priority??0,b(Se,this.id,Qe,this),++s.count}hasStaticDeps(){return this.#n!=null&&this.#n.length>0}saveSignalsFromDeps(){for(let e of this.#n)this.whenSignalIsRead(R(e).id)}static createEffect(e,t,i){let r=Array.isArray(t)?t:void 0,n=r?i??{dependencies:r}:t;n&&r&&(n.dependencies=r);let o,a=di();return a!=null?(o=a.getCurrentChildEffect(),o==null&&(o=new s(e,n),a.attachChildEffect(o),g(Se,oi,o)),a.curChildEffectSlot++):(o=new s(e,n),g(Se,oi,o)),o.hasStaticDeps()?o.saveSignalsFromDeps():o.autorun&&o.run(),new kt(o)}getCurrentChildEffect(){return this.childEffects[this.curChildEffectSlot]}attachChildEffect(e){this.childEffects.push(e)}run=()=>{if(this.#a||!this.shouldRun)return;let e=ui();if(e){e.batch(this.id,this.priority);return}if(this.#o>=s.maxDepth)throw new Error(`[signalize] Effect ${this.id.toString()} exceeded maxDepth=${s.maxDepth}: an effect callback recursively re-triggered itself (likely by writing a signal it depends on). Break the cycle, or raise EffectImpl.maxDepth if the recursion is intentional.`);this.#o++;try{if(this.runCleanupCallback(),this.destroyChildEffects(),this.curChildEffectSlot=0,this.shouldRun=!1,g(ci,this.id,this.id),this.hasStaticDeps())this.#e=this.callback();else{this.#s.clear();for(let t of this.#t)this.#s.add(t);this.#e=$r(this,this.callback),this.cleanupLostSignals(),this.#r.clear()}}finally{this.#o--}};[Qe](){this.shouldRun=!0,this.autorun&&this.run()}whenSignalIsRead(e){this.#s.delete(e),this.#t.has(e)||(this.#t.add(e),this.#i.set(e,[b(Ke,e,this.priority,Qe,this),C(fe,e,ni,this)]))}[ni](e,t){if(this.#t.has(e)){if(t?.detach){this.unsubscribeSignal(e),this.#t.delete(e),this.#r.delete(e),this.#s.delete(e),this.#t.size===0&&this.destroy();return}this.#r.has(e)||(this.#r.add(e),this.unsubscribeSignal(e),this.#r.size===this.#t.size&&this.destroy())}}cleanupLostSignals(){for(let e of this.#s)this.unsubscribeSignal(e),this.#t.delete(e)}destroyChildEffects(){for(let e of this.childEffects)e.destroy();this.childEffects.length=0}unsubscribeSignal(e){this.#i.has(e)&&(this.#i.get(e).forEach(t=>{t()}),this.#i.delete(e))}runCleanupCallback(){if(this.#e!=null){let e=this.#e;this.#e=void 0,Fr(e)?Promise.resolve(e).then(t=>{typeof t=="function"&&t()}):e()}}destroy=()=>{this.#a||(g(this,pe,this),A(this),g(Se,_r,this),this.runCleanupCallback(),this.destroyChildEffects(),A(Ke,this),A(Se,this),A(fe,this),this.#a=!0,this.#t.clear(),this.#s.clear(),this.#i.clear(),this.#r.clear(),--s.count)}},S=ls.createEffect;var Ye=new WeakMap,jr=s=>{let e=Ye.get(s);return e||(e={},Ye.set(s,e)),e},G=(s,e)=>Ye.get(s)?.signals?.get(e);var fi=(s,e,t)=>{let i=jr(s);i.signals??=new Map,i.signals.set(e,t)};function Je(...s){for(let e of s)if(Ye.has(e)){let t=Ye.get(e);if(t.signals){for(let i of t.signals.values())M(i);t.signals.clear(),t.signals=void 0}}}function pi(s){let e=R(Ae(s)?s:G(...s));e!=null&&!e.muted&&!e.destroyed&&cs(e.id,e.value,{touch:!0})}function We(s){return Ae(s)?R(s)?.value:R(G(...s))?.value}var Pt=class{[J];constructor(e){this[J]=e}get get(){return this[J].reader}get set(){return this[J].writer}get value(){return We(this.get)}set value(e){this.set(e)}onChange(e){let{destroy:t}=S(()=>e(this.value),[this.get]);return t}get muted(){return this[J].muted}set muted(e){this[J].muted=e}touch(){pi(this)}destroy(){M(this)}},zr=new At("si"),hi=!1;function Ir(){hi||(hi=!0,console.warn("signalReader(callback) is deprecated and will be removed in a future release. Use Signal.onChange(callback) instead \u2014 it returns an unsubscribe function for proper cleanup."))}function li(s){fs()||di()?.whenSignalIsRead(s)}function cs(s,e,t){fs()||g(Ke,s,e,t)}var Ae=s=>s!=null&&s[J]!=null,Ur=s=>{let e=t=>(s.destroyed||s.beforeRead?.(),t?(Ir(),S(()=>(s.destroyed||li(s.id),t(s.value)),[e])):s.destroyed||li(s.id),s.value);return Object.defineProperty(e,J,{value:s}),e},Tt=class s{static instanceCount=0;id;lazy;get[J](){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 i=t?.lazy??!1,n=t?.compare??this.compare??((a,f)=>a===f);if((i!==this.lazy||i&&e!==this.valueFn||!i&&!n(e,this.#e))&&(i?(this.#e=void 0,this.valueFn=e,this.lazy=!0):(this.#e=e,this.valueFn=void 0,this.lazy=!1),!this.muted&&!this.destroyed)){cs(this.id,this.#e);return}(t?.touch??!1)&&!this.muted&&!this.destroyed&&cs(this.id,this.#e,{touch:!0})};object;constructor(e,t){this.id=zr.make(),++s.instanceCount,this.lazy=e,this.lazy?(this.value=void 0,this.valueFn=t):(this.value=t,this.valueFn=void 0),this.reader=Ur(this),this.object=new Pt(this)}},R=s=>s?.[J];function y(s=void 0,e){let t;if(Ae(s))t=R(s);else{let i=e?.lazy??!1;t=new Tt(i,s),t.beforeRead=e?.beforeRead,t.compare=e?.compare}return e?.attach!=null&&re.findOrCreate(e.attach).attachSignal(t),t.object}var M=(...s)=>{for(let e of s){let t=R(e);t!=null&&!t.destroyed&&(t.destroyed=!0,t.beforeRead=void 0,--Tt.instanceCount,g(fe,t.id,t.id))}};function Ot(s,e){let t=y(),i=e?.attach!=null?re.findOrCreate(e.attach):void 0;i!=null&&(e?.name?i.attachSignalByName(e.name,t):i.attachSignal(t));let r=S(()=>{W(()=>{t.set(s())})},{autorun:!(e?.lazy??!1),priority:e?.priority??K.C,attach:i}),n=R(t);return n.beforeRead=r.run,C(fe,n.id,r.destroy),t.get}var Mt=class{#e=!1;#t;source;lastValue;isDestroyed=!1;constructor(e){T(this),this.source=R(e),this.#t=b(Ke,this.source.id,(t,i)=>{!this.#e&&!this.isDestroyed&&(i?.touch===!0?this.touch():this.write())}),C(fe,this.source.id,()=>this.destroy())}attach(e){let t=re.findOrCreate(e);return t.attachLink(this),C(this,pe,()=>{t.detachLink(this)}),t}nextValue(){return new Promise((e,t)=>{let i=[],r=()=>i.forEach(n=>{n()});i.push(C(this,_e,n=>{r(),e(n)}),C(this,pe,()=>{r(),t()}))})}async*asyncValues(e){Y(this,_e);try{let t=0;for(;!this.isDestroyed;)try{let i=await this.nextValue();if(e?.(i,t++))break;yield i}catch{break}}finally{de(this,_e)}}destroy(){this.isDestroyed||(this.#t?.(),this.#t=void 0,g(this,pe,this),de(this,_e),A(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,g(this,us,this)),this}unmute(){return!this.isDestroyed&&this.#e&&(this.#e=!1,g(this,ds,this)),this}toggleMute(){return this.isDestroyed||(this.#e=!this.#e,g(this,this.#e?us:ds,this)),this.#e}updateValue(e){if(!this.#e&&!this.isDestroyed){let{value:t}=this.source;e(t),g(this,_e,t),this.lastValue=t}}},ps=class extends Mt{target;constructor(e,t){super(e),this.target=R(t),C(fe,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)})}},gs=class extends Mt{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)})}},Rt=new Map;function $(s,e,t){let i=R(s),r=R(e),n=r??e,o;if(Rt.has(i)){if(o=Rt.get(i),o.has(n))return o.get(n)}else o=new Map,Rt.set(i,o);let a=r!=null?new ps(s,r):new gs(s,e),f=t?.attach;return f&&a.attach(f),o.set(n,a),C(a,pe,()=>{o.delete(n),o.size===0&&Rt.delete(i)}),a}var Lt=class s{static fromProps(e,t){let i=new s,r=t?t.map(n=>[n,e[n]]):Object.entries(e);for(let[n,o]of r)i.#e.set(n,y(o));return i}#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=y();return this.#e.set(e,t),t}return this.#e.get(e)}update(e){e.size&&W(()=>{for(let[t,i]of e.entries())this.get(t).set(i)})}updateFromProps(e,t){W(()=>{let i=t?t.map(r=>[r,e[r]]):Object.entries(e);for(let[r,n]of i)this.get(r).set(n)})}};var ne=(s=>(s[s.StructuralChanges=1]="StructuralChanges",s[s.ContentUpdates=2]="ContentUpdates",s[s.Removal=3]="Removal",s))(ne||{}),E=(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",s))(E||{}),Pe=Symbol.for("ShadowEntsGlobalNS"),F="#void",gi="contextLost",yi="configure",vi="changeTrail",mi="destroy",bi="loaded",wi="appliedChangeTrail",Ei="importedModule",Ci="destroyed",$e="messageToView",Si=6e4,ki=6e4,Ai=5e3,Pi=5e3,ys="shadowObjects";function Ti(s,e){s.indexOf(e)===-1&&s.push(e)}function vs(s,e){let t=s.indexOf(e);t!==-1&&s.splice(t,1),s.push(e)}function oe(s,e){let t=s.indexOf(e);t!==-1&&s.splice(t,1)}var Te=s=>typeof s=="string"?s.trim()||Pe:typeof s=="symbol"?s:Pe;var Xe="#root",Ze=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=F;#a;#o=0;#h=!1;#l;#u;#c;create(e=F,t,i=0,r=!1){this.#t++,this.#i++,this.#l=e,this.#u=t??Xe,this.#c=i||void 0,this.#h=r}destroy(){this.#r++,this.#t++}clear(){this.#t=0,this.#s=!1,this.#l=void 0,this.#u=void 0,this.#c=void 0,this.#p.clear(),this.#g.length=0,this.#d.length=0,this.#f.clear()}changeToken(e){e??=F,e===this.#n?this.#l=this.#s?e:void 0:(this.#l=e,this.#t++)}setParent(e){e===this.#a?this.#u=void 0:(this.#u=e??Xe,this.#t++)}changeOrder(e){e===this.#o?this.#c=void 0:(this.#c=e,this.#t++)}#y=new Map;#p=new Map;#g=[];changeProperty(e,t,i){let r=this.#y.get(e),n=i==null&&t!==r||i!=null&&!i(t,r);return n?(this.#p.set(e,t),vs(this.#g,e),this.#t++):(this.#p.delete(e),oe(this.#g,e)),n}removeProperty(e){let t=this.#y.has(e);this.#p.has(e)?(this.#p.delete(e),t||oe(this.#g,e)):t&&(vs(this.#g,e),this.#t++)}#d=[];#f=new Set;createEvent(e,t,i){this.#d.push({type:e,data:t});for(let r of i??[])this.#f.add(r);this.#t++}transferEventsTo(e){this.#d.length>0&&(e.#d.push(...this.#d),this.#d.length=0),this.#f.size>0&&(e.#f=new Set([...e.#f,...this.#f]),this.#f.clear())}buildChangeTrail(e,t){let{isNew:i,isCreated:r,isDestroyed:n}=this;if(!(i&&n))switch(t){case ne.StructuralChanges:i?e.push(this.makeCreateEntityChange()):n||(this.#u!==void 0&&!(this.#u===Xe&&this.#a===void 0)?e.push(this.makeSetParentChange()):this.#c!==void 0&&this.#c!==this.#o&&e.push(this.makeUpdateOrderChange()),this.#l!==void 0&&this.#l!==this.#n&&e.push(this.makeChangeToken()));break;case ne.ContentUpdates:!i&&r&&this.#g.length>0&&e.push(this.makeChangePropertyChange()),this.#d.length>0&&e.push(this.makeEvents());break;case ne.Removal:n&&e.push(this.makeDestroyEntityChange());break}}makeEvents(){let e={type:E.SendEvents,uuid:this.#e,events:this.#d.slice(0)};return this.#f.size>0&&(e.transferables=Array.from(this.#f)),e}makeCreateEntityChange(){let e=this.#l??this.#n,t={type:E.CreateEntities,uuid:this.#e,token:e};if(this.#n=e,this.#u!==void 0){let i=this.#u===Xe?void 0:this.#u;this.#a=i,i!==void 0&&(t.parentUuid=i)}if(this.#p.size>0){t.properties=Array.from(this.#p.entries()).filter(([,i])=>i!==void 0);for(let[i,r]of t.properties)this.#y.set(i,r)}return this.#c!==void 0&&this.#c!==this.#o&&(t.order=this.#o=this.#c),this.#h&&(t.autoDestructionOnParentRemoval=!0),t}makeDestroyEntityChange(){return{type:E.DestroyEntities,uuid:this.#e}}makeSetParentChange(){this.#a=this.#u===Xe?void 0:this.#u;let e={type:E.SetParent,uuid:this.#e,parentUuid:this.#a};return this.#c!==void 0&&this.#c!==this.#o&&(e.order=this.#o=this.#c),e}makeUpdateOrderChange(){return this.#o=this.#c??0,{type:E.UpdateOrder,uuid:this.#e,order:this.#o}}makeChangeToken(){return this.#n=this.#l??F,{type:E.ChangeToken,uuid:this.#e,token:this.#n}}makeChangePropertyChange(){let e=this.#g.map(t=>{if(this.#p.has(t)){let i=this.#p.get(t);return i===void 0?this.#y.delete(t):this.#y.set(t,i),[t,i]}else return this.#y.delete(t),[t,void 0]});return{type:E.ChangeProperties,uuid:this.#e,properties:e}}};var xi=s=>{if(!(s===void 0||s.length===0))return s.filter(e=>e.length===1||e[1]!==void 0)},ms=(s,e)=>{if(s===e||e===void 0)return s;if(s===void 0)return xi(e);for(let[t,i]of e){let r=s.find(([n])=>n===t);r===void 0?s.push([t,i]):r[1]=i}return xi(s)};var Dt=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===E.CreateEntities)this.createEntity(t);else if(this.#e.has(t.uuid))switch(t.type){case E.DestroyEntities:this.destroyEntity(t);break;case E.SetParent:this.setParent(t);break;case E.UpdateOrder:this.updateOrder(t);break;case E.ChangeToken:this.changeToken(t);break;case E.ChangeProperties:this.changeProperties(t);break}}changeProperties({uuid:e,properties:t}){let i=this.getComponentState(e);i.properties=ms(i.properties,t)}changeToken({uuid:e,token:t}){this.getComponentState(e).token=t||F}updateOrder({uuid:e,order:t}){this.getComponentState(e).order=t??0}setParent({uuid:e,parentUuid:t,order:i}){let r=this.getComponentState(e);r.parentUuid=t,i!==void 0&&(r.order=i)}destroyEntity({uuid:e}){this.#e.delete(e)}createEntity({uuid:e,token:t,parentUuid:i,order:r,properties:n,autoDestructionOnParentRemoval:o}){this.#e.set(e,{token:t||F,parentUuid:i,order:r??0,properties:ms(void 0,n),...o?{autoDestructionOnParentRemoval:!0}:{}})}};var et=class extends Error{constructor(e="the component context has been disposed"){super(e),this.name="ComponentContextDisposedError"}},I=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=Te(e),i=s.getContextsMap();return i.has(t)?i.get(t):new s(t)}#e=new Map;#t=[];#s=!1;#i=new Dt;constructor(e=Pe){let t=Te(e),i=s.getContextsMap();if(i.has(t))return i.get(t);this.ns=t,i.set(t,this)}get isDisposed(){return this.#s}addComponent(e){if(this.#s)throw new et(`the view component ${e.uuid} cannot join the component context because it has been disposed`);let t=this.#e.get(e.uuid);if(t){if(t.component!==e)for(let i of t.children.slice(0))this.#e.get(i)?.component.removeFromParent();t.component=e,t.children=[]}else t={component:e,children:[],changes:new Ze(e.uuid),propIsEqual:void 0},this.#e.set(e.uuid,t);t.changes.create(e.token,e.parent?.uuid,e.order,e.autoDestructionOnParentRemoval),e.parent?(this.addToChildren(e.parent,e),t.changes.setParent(e.parent.uuid)):this.#o(e,this.#t),this.#h=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);for(let i of t.children.slice(0))this.#e.get(i)?.component.removeFromParent();t.changes.destroy(),this.#h=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 i=this.#e.get(e);if(i===void 0)return;let r=this.#e.get(t.uuid),n=r.children.indexOf(e);n!==-1&&(r.children.splice(n,1),i.changes.setParent(void 0)),this.#o(i.component,this.#t),this.#h=void 0}}moveToRoot(e){let t=this.#e.get(e);t&&(t.changes?.setParent(void 0),this.#o(t.component,this.#t)),this.#h=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 i=this.#e.get(e.uuid);if(i)this.#o(t,i.children),this.#e.get(t.uuid)?.changes.setParent(e.uuid),oe(this.#t,t.uuid),this.#h=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){this.#r(e,new Set)}#r(e,t){if(t.has(e))return;t.add(e);let i=this.#e.get(e);if(i){for(let r of i.children.slice(0))this.#r(r,t);this.destroyComponent(i.component),this.#n(e)}}setProperty(e,t,i,r){let n=this.#e.get(e.uuid);return n!=null?(r!=null?(n.propIsEqual??=new Map,n.propIsEqual.set(t,r)):n.propIsEqual?.has(t)&&n.propIsEqual.delete(t),n.changes.changeProperty(t,i,r)):!1}removeProperty(e,t){this.#e.get(e.uuid)?.changes.removeProperty(t)}changeOrder(e){let t=this.#e.get(e.uuid);if(t===void 0)return;let i=e.parent?this.#e.get(e.parent.uuid):void 0;i!==void 0?(oe(i.children,e.uuid),this.#o(e,i.children)):e.parent==null&&(oe(this.#t,e.uuid),this.#o(e,this.#t)),t.changes.changeOrder(e.order),this.#h=void 0}traverseLevelOrderBFS(){return this.#l().map(e=>e.component)}dispatchShadowObjectsEvent(e,t,i,r){this.#e.get(e.uuid)?.changes.createEvent(t,i,r)}broadcastEvent(e,t=void 0){for(let i of this.traverseLevelOrderBFS())i.dispatchEvent(e,t,!1)}dispatchMessage(e,t,i=void 0,r=!1){this.#e.get(e)?.component.dispatchEvent(t,i,r)}dispatchReRequestParentRoots(){for(let e of this.#t)this.dispatchMessage(e,s.ReRequestParentRoots)}buildChangeTrails(e=!0){let t=[];if(!this.hasComponents())return t;let i=this.#a();for(let r of i)r.buildChangeTrail(t,ne.StructuralChanges);for(let r of i)r.buildChangeTrail(t,ne.ContentUpdates);for(let r of i)r.buildChangeTrail(t,ne.Removal),(r.isDestroyed||r.isNew&&!r.isCreated)&&this.#n(r.uuid),e&&r.clear();return this.#i.write(t),t}reCreateChanges(){if(!this.#i.isEmpty()){this.buildChangeTrails(!1);for(let[e,t]of this.#i){let i=this.#e.get(e);if(i){let r=new Ze(e);if(r.create(t.token,t.parentUuid,t.order,t.autoDestructionOnParentRemoval),t.properties)for(let[n,o]of t.properties)r.changeProperty(n,o,i.propIsEqual?.get(n));i.changes.transferEventsTo(r),i.changes.clear(),i.changes=r}}this.#i.clear(),this.broadcastEvent(gi)}}clear(){this.#h=void 0,this.#i.clear();for(let e of this.#t.slice(0))this.removeSubTree(e);if(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!")}dispose(){if(this.#s)return;for(let{component:t}of Array.from(this.#e.values()))t.destroy();this.clear(),this.#s=!0;let e=s.getContextsMap();this.ns!=null&&e.get(this.ns)===this&&e.delete(this.ns)}#n(e){let t=this.#e.get(e);if(t===void 0)return;let i=t.component.parent?.uuid;if(i!==void 0){let r=this.#e.get(i);r!==void 0&&oe(r.children,e)}this.#e.delete(e),oe(this.#t,e),this.#h=void 0}#a(){return this.#l().filter(e=>e.changes.hasChanges()).map(e=>e.changes)}#o(e,t){if(t.includes(e.uuid))return;let{order:i}=e;for(let r=0;r<t.length;r++){let n=this.#e.get(t[r])?.component;if(n!==void 0&&i<n.order){t.splice(r,0,e.uuid);return}}t.push(e.uuid)}#h;#l(){if(this.#h)return this.#h;let e=new Map,t=(i,r)=>{let n=this.#e.get(i);if(n==null)return;let o=e.get(r);o?o.push(n):e.set(r,[n]);for(let a of n.children)t(a,r+1)};for(let i of this.#t)t(i,0);return this.#h=Array.from(e.entries()).sort((i,r)=>i[0]-r[0]).flatMap(([,i])=>i),this.#h}};function tt(s){return function(e,t){let i=s?.name||t.name,r=!!(s?.readAsValue??!1);return{get(){let n=G(this,i);if(n)return r?n.value:n.get()},set(n){G(this,i)?.set(n)},init(n){let o=y(n,s);return fi(this,i,o),re.findOrCreate(this).attachSignalByName(i,o),o.value}}}}var V="ConsoleLogger",U=`${V}Storage`,Vr=!!(globalThis.location?.host?.startsWith("localhost")??!1),it="localStorage"in globalThis,Nt=Symbol.for(V),Oi=!1,Ri=s=>{if(typeof s=="boolean")return s;switch(s.toLowerCase()){case"true":case"yes":case"on":return!0;default:return!1}},ws=s=>[it?V:void 0,...Array.isArray(s)?s:[s]].filter(Boolean).join(".");function bs(s,e,t){let i=ws(s),r=it?localStorage.getItem(i):globalThis[U]?.[i];return r==null?t:e?e(r):r}function st(s,e){it?localStorage.setItem(ws(s),e):(globalThis[U]==null&&(globalThis[U]={},console.debug(`${V}: Initialize`,{[U]:globalThis[U]})),globalThis[U][ws(s)]=e)}var N=class s{constructor(e){this.enable=!0,this.namespace=(e||"").trim()||V,Oi||(s.loadConfig(),Oi=!0);let t=[this.namespace,"enable"];this.enable=bs(t,Ri,this.enable),st(t,it?this.enable?"true":"false":this.enable)}static{this.sharedConfig={enable:Vr,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(){it?(["enable","debug","info","warn"].forEach(e=>{this.sharedConfig[e]=bs(e,Ri,this.sharedConfig[e])}),["debug","info","warn","error"].forEach(e=>{this.sharedStyles[e]=bs(["styles",e],void 0,this.sharedStyles[e])}),s.isDebug&&console.debug(`${V}: Load config from localStorage`,s.sharedConfig),globalThis[V]?.[Nt]||(globalThis[V]??={[Nt]:!0,get enable(){return s.sharedConfig.enable},set enable(e){s.sharedConfig.enable=e,st("enable",e?"true":"false")},get debug(){return s.sharedConfig.debug},set debug(e){s.sharedConfig.debug=e,st("debug",e?"true":"false")},get info(){return s.sharedConfig.info},set info(e){s.sharedConfig.info=e,st("info",e?"true":"false")},get warn(){return s.sharedConfig.warn},set warn(e){s.sharedConfig.warn=e,st("warn",e?"true":"false")}})):globalThis[U]?.[Nt]||(globalThis[U]={[Nt]:!0,...s.sharedConfig,...globalThis[U]},s.sharedConfig=globalThis[U],s.isDebug&&console.debug(`${V}: Load config from ${U}`,globalThis[U]))}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,i){console[e](`%c${this.namespace}`,t,...i)}};var Br=Object.create,ks=Object.defineProperty,Gr=Object.getOwnPropertyDescriptor,Li=(s,e)=>(e=Symbol[s])?e:Symbol.for("Symbol."+s),ze=s=>{throw TypeError(s)},qr=(s,e,t)=>e in s?ks(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,Mi=(s,e)=>ks(s,"name",{value:e,configurable:!0}),Hr=s=>[,,,Br(s?.[Li("metadata")]??null)],Di=["class","method","getter","setter","accessor","field","value","get","set"],rt=s=>s!==void 0&&typeof s!="function"?ze("Function expected"):s,Qr=(s,e,t,i,r)=>({kind:Di[s],name:e,metadata:i,addInitializer:n=>t._?ze("Already initialized"):r.push(rt(n||null))}),Ni=(s,e)=>qr(e,Li("metadata"),s[3]),_t=(s,e,t,i)=>{for(var r=0,n=s[e>>1],o=n&&n.length;r<o;r++)e&1?n[r].call(t):i=n[r].call(t,i);return i},_i=(s,e,t,i,r,n)=>{var o,a,f,m,P,c=e&7,D=!!(e&8),w=!!(e&16),O=c>3?s.length+1:c?D?1:2:0,le=Di[c+5],u=c>3&&(s[O-1]=[]),l=s[O]||(s[O]=[]),h=c&&(!w&&!D&&(r=r.prototype),c<5&&(c>3||!w)&&Gr(c<4?r:{get[t](){return v(this,n)},set[t](d){return k(this,n,d)}},t));c?w&&c<4&&Mi(n,(c>2?"set ":c>1?"get ":"")+t):Mi(r,t);for(var p=i.length-1;p>=0;p--)m=Qr(c,t,f={},s[3],l),c&&(m.static=D,m.private=w,P=m.access={has:w?d=>Kr(r,d):d=>t in d},c^3&&(P.get=w?d=>(c^1?v:xe)(d,r,c^4?n:h.get):d=>d[t]),c>2&&(P.set=w?(d,_)=>k(d,r,_,c^4?n:h.set):(d,_)=>d[t]=_)),a=(0,i[p])(c?c<4?w?n:h[le]:c>4?void 0:{get:h.get,set:h.set}:r,m),f._=1,c^4||a===void 0?rt(a)&&(c>4?u.unshift(a):c?w?n=a:h[le]=a:r=a):typeof a!="object"||a===null?ze("Object expected"):(rt(o=a.get)&&(h.get=o),rt(o=a.set)&&(h.set=o),rt(o=a.init)&&u.unshift(o));return c||Ni(s,r),h&&ks(r,t,h),w?c^4?n:h:r},As=(s,e,t)=>e.has(s)||ze("Cannot "+t),Kr=(s,e)=>Object(e)!==e?ze('Cannot use the "in" operator on this value'):s.has(e),v=(s,e,t)=>(As(s,e,"read from private field"),t?t.call(s):e.get(s)),j=(s,e,t)=>e.has(s)?ze("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(s):e.set(s,t),k=(s,e,t,i)=>(As(s,e,"write to private field"),i?i.call(s,t):e.set(s,t),t),xe=(s,e,t)=>(As(s,e,"access private method"),t),Wi,$i,L,X,Oe,Re,je,ae,ve,Ps,Ts,Z,Fe,Wt,ge,Es,Cs,Ss,Fi,ji,me=class extends Error{constructor(e="the shadow environment has been destroyed"){super(e),this.name="ShadowEnvDestroyedError"}};$i=[tt()],Wi=[tt()];var ee=class ye{constructor(){j(this,ge),j(this,L),j(this,X),j(this,Oe,!1),j(this,Re,!1),j(this,je,!1),j(this,ae),this.logger=new N("ShadowEnv"),this.ns$=y(),j(this,Ps,_t(ve,8,this,!1)),_t(ve,11,this),j(this,Ts,_t(ve,12,this,!1)),_t(ve,15,this),j(this,Z,!1),j(this,Fe),j(this,Wt),this.ready=async()=>{if(v(this,Z))throw new me;return this.isReady?this:Promise.race([St(this,ye.ContextCreated),xe(this,ge,Es).call(this)])},j(this,Cs,()=>{v(this,Oe)&&xe(this,ge,Ss).call(this)});let e=this;Y(e,ye.ContextCreated),b(e,ye.ContextLost,K.AAA,()=>{de(e,ye.ContextCreated)}),S(()=>{if(this.viewReady&&this.proxyReady)return this.view.reCreateChanges(),g(e,ye.ContextCreated,e),v(this,Re)&&(k(this,Re,!1),xe(this,ge,Ss).call(this)),()=>{g(e,ye.ContextLost,e)}},[G(this,"viewReady"),G(this,"proxyReady")])}static get(e){if(e!=null)return globalThis.__shadowEnvs?.get(e)}get isDestroyed(){return v(this,Z)}get view(){return v(this,L)}set view(e){e!==v(this,L)&&(v(this,L)?.ns&&globalThis.__shadowEnvs&&globalThis.__shadowEnvs.delete(v(this,L).ns),k(this,L,e??void 0),v(this,L)?.ns&&(globalThis.__shadowEnvs??=new Map,globalThis.__shadowEnvs.has(v(this,L).ns)&&globalThis.__shadowEnvs.get(v(this,L).ns)!==this&&this.logger.isWarn&&this.logger.warn("overwrite a namespace already in use",v(this,L).ns,globalThis.__shadowEnvs.get(v(this,L).ns)),globalThis.__shadowEnvs.set(v(this,L).ns,this)),this.viewReady=!!e)}get envProxy(){return v(this,X)}set envProxy(e){if(e!==v(this,X)){let t=v(this,X);k(this,X,e??void 0),v(this,X)&&(v(this,X).onMessageToView=xe(this,ge,Fi).bind(this),v(this,X).onProxyFailed=xe(this,ge,ji).bind(this)),t&&t.destroy(),this.proxyReady=!1,e?.start().then(()=>{this.proxyReady=!0}).catch(i=>{this.logger.error("failed to start envProxy",i),this.proxyReady=!1})}}get isReady(){return!!(v(this,L)&&v(this,X)&&this.proxyReady&&!this.isDestroyed)}sync(){if(!v(this,Z)){if(!this.isReady){k(this,Re,!0);return}v(this,Oe)||(k(this,Oe,!0),queueMicrotask(v(this,Cs)))}}syncWait(){return v(this,Z)?Promise.reject(new me):(k(this,je,!0),this.sync(),v(this,ae)?v(this,ae):(k(this,ae,Promise.race([St(this,ye.AfterSync),xe(this,ge,Es).call(this)]).then(e=>(k(this,ae,void 0),e),e=>{throw k(this,ae,void 0),e})),v(this,ae)))}destroy(){var e;if(v(this,Z))return;k(this,Z,!0),k(this,Oe,!1),k(this,Re,!1),k(this,je,!1);let t=v(this,L)?.ns;this.envProxy=void 0,this.view=void 0;let i=globalThis.__shadowEnvs;t&&i?.get(t)===this&&i.delete(t),(e=v(this,Wt))==null||e.call(this,new me),k(this,ae,void 0),Je(this),A(this),Object.freeze(this)}};ve=Hr(null);L=new WeakMap;X=new WeakMap;Oe=new WeakMap;Re=new WeakMap;je=new WeakMap;ae=new WeakMap;Ps=new WeakMap;Ts=new WeakMap;Z=new WeakMap;Fe=new WeakMap;Wt=new WeakMap;ge=new WeakSet;Es=function(){return v(this,Fe)==null&&(k(this,Fe,new Promise((s,e)=>{k(this,Wt,e)})),v(this,Fe).catch(()=>{})),v(this,Fe)};Cs=new WeakMap;Ss=async function(){if(k(this,Oe,!1),v(this,Z))return;if(!this.isReady){k(this,Re,!0);return}let s=this.view.buildChangeTrails(),e=v(this,je);k(this,je,!1);try{s.length>0&&await this.envProxy.applyChangeTrail(s,e)}catch(t){this.logger.error("failed to apply change trail",t)}finally{g(this,ee.AfterSync,s)}};Fi=function(s){this.logger.isDebug&&this.logger.debug("onMessageToView",s.type,s.data),this.view?.dispatchMessage(s.uuid,s.type,s.data,s.traverseChildren)};ji=function(s){if(!v(this,Z)){this.logger.error("the environment proxy failed",s);try{g(this,ee.ProxyFailed,s,this)}finally{this.proxyReady=!1}}};_i(ve,4,"viewReady",$i,ee,Ps);_i(ve,4,"proxyReady",Wi,ee,Ts);Ni(ve,ee);ee.AfterSync="afterSync";ee.ContextLost="contextLost";ee.ContextCreated="contextCreated";ee.ProxyFailed="proxyFailed";var B=ee;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"],Yr=()=>{let s=Math.random()*4294967295|0,e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,i=Math.random()*4294967295|0;return(x[s&255]+x[s>>8&255]+x[s>>16&255]+x[s>>24&255]+"-"+x[e&255]+x[e>>8&255]+"-"+x[e>>16&15|64]+x[e>>24&255]+"-"+x[t&63|128]+x[t>>8&255]+"-"+x[t>>16&255]+x[t>>24&255]+x[i&255]+x[i>>8&255]+x[i>>16&255]+x[i>>24&255]).toLowerCase()},zi=()=>globalThis?.crypto?.randomUUID?.()??Yr();var Ie=class extends Error{constructor(e){super(e),this.name="ViewComponentError"}};function Ii(s,e){if(s.context==null)throw new Ie("cannot add a child to a destroyed view component");if(s.context!==e)throw new Ie("cannot add a child from another context")}var $t=class s{#e;#t;#s;#i;#r=0;#n;get uuid(){return this.#e}get token(){return this.#t}set token(e){e??=F,e!==this.#t&&(this.#t=e,this.#s?.changeToken(this,e))}get parent(){return this.#i}set parent(e){e?e.addChild(this):this.removeFromParent()}get context(){return this.#s}set context(e){let t=e??void 0;if(this.#s!==t){if(t?.isDisposed)throw new et(`the view component ${this.#e} cannot join the component context because it has been disposed`);this.#s&&this.destroy(),this.#s=t;try{t?.addComponent(this)}catch(i){throw this.#s=void 0,i}}}get isDestroyed(){return this.#s==null}get order(){return this.#r}set order(e){let t=this.#r;this.#r=e??0,t!==this.#r&&this.#s?.changeOrder(this)}get autoDestructionOnParentRemoval(){return this.#n}constructor(e,t){T(this),t instanceof s&&(t={parent:t}),this.#e=t?.uuid??zi(),this.#t=e??F,this.#r=t?.order??0,this.#i=t?.parent,this.#n=t?.autoDestructionOnParentRemoval??!1;let i=t?.context??I.get();this.#i&&Ii(this.#i,i),this.context=i}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==null)throw new Ie("cannot add a destroyed view component as a child");Ii(this,e.#s);for(let t=this;t!=null;t=t.#i)if(t===e)throw new Ie("cannot add the component itself or one of its ancestors as a child: this would create a cycle");e.isChildOf(this)||(e.removeFromParent(),e.#i=this,this.#s.addToChildren(this,e))}setProperty(e,t,i){return this.#s?.setProperty(this,e,t,i)??!1}removeProperty(e){this.#s?.removeProperty(this,e)}dispatchShadowObjectsEvent(e,t,i){this.#s?.dispatchShadowObjectsEvent(this,e,t,i)}dispatchEvent(e,t,i){if(g(this,e,t),i)for(let r of this.#s?.getChildren(this)??[])r.dispatchEvent(e,t,i)}destroy(){this.removeFromParent(),this.#s?.destroyComponent(this),this.#s=void 0}};var nt=new Set(["on","true","yes","local","1"]);var Ui=s=>Te(s.getAttribute("ns")??void 0),at=(s,e)=>{if(s.hasAttribute(e)){let t=s.getAttribute(e)?.trim()?.toLowerCase()||"1";return nt.has(t)}return!1};var Vi=(s,e)=>{e.set(Ui(s))},xs=new Set,Os=!1,Jr=s=>{xs.add(s),Os||(Os=!0,queueMicrotask(()=>{Os=!1;for(let e of xs)B.get(e)?.sync();xs.clear()}))},be=class extends HTMLElement{constructor(){super(),this.isShaeElement=!0,this.ns$=y(Pe),this.ns$.onChange(e=>{typeof e=="string"&&e.length>0?this.getAttribute("ns")!==e&&this.setAttribute("ns",e):this.removeAttribute("ns")}),Vi(this,this.ns$)}static{this.observedAttributes=["ns"]}get ns(){return this.ns$.value}set ns(e){typeof e=="symbol"?this.ns$.set(e):this.ns$.set(Te(e))}attributeChangedCallback(e){e==="ns"&&Vi(this,this.ns$)}syncShadowObjects(){Jr(this.ns)}};var Ft=class extends be{constructor(){super(),this.isShaeEntElement=!0,this.componentContext$=y(),this.viewComponent$=y(),this.token$=y(),this.forwardCustomEvents$=y(!1),this.#n=!0,this.#y=()=>{let e=this.findShadowRootHost();e!=null&&this.dispatchEvent(new CustomEvent(gt,{bubbles:!0,composed:!0,detail:{requester:this,shadowRootHost:e}}))},this.#p=e=>{let t=e.detail?.requester;if(t===this||!t?.isShaeEntElement||t.ns!==this.ns)return;e.detail?.shadowRootHost&&this.#l()},this.#g=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(I.get(e)),this.isConnected&&this.#l()}),this.#d(),this.token$.onChange(e=>{e==null?this.removeAttribute(ce):this.getAttribute(ce)!==e&&this.setAttribute(ce,e)}),this.#f(),this.forwardCustomEvents$.onChange(e=>{if(!e)this.removeAttribute(q);else if(e===!0)this.hasAttribute(q)||this.setAttribute(q,"");else{let t=Array.from(e).join(",");this.getAttribute(q)!==t&&this.setAttribute(q,t)}}),S(()=>{let e=this.viewComponent$.get();if(e){let t=b(e,I.ReRequestParentRoots,()=>this.#h()),i=e.context?.ns;return()=>{t(),e.destroy(),i&&i!==this.ns?B.get(i)?.sync():this.syncShadowObjects()}}}),S(()=>{let e=this.viewComponent$.get();if(!e)return;let t=Object.hasOwn(e,"dispatchEvent")?Object.getPrototypeOf(e).dispatchEvent:e.dispatchEvent,i=this.forwardCustomEvents$.get();if(!i)return;let r=i instanceof Set?i:void 0,n=(o,a,f)=>{t.call(e,o,a,f),o!==I.ReRequestParentRoots&&(r&&!r.has(o)||this.dispatchEvent(new CustomEvent(o,{bubbles:!0,composed:!0,detail:a})))};return Object.defineProperty(e,"dispatchEvent",{value:n,writable:!0,configurable:!0}),()=>{Object.hasOwn(e,"dispatchEvent")&&e.dispatchEvent===n&&delete e.dispatchEvent}}),this.token$.onChange(e=>{let t=this.viewComponent$.value;t&&(t.token=e,this.syncShadowObjects())}),this.style.display="contents"}static{this.observedAttributes=[...be.observedAttributes,ce,q]}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;#t;#s(){this.#t?.();let e=this.componentContext$.onChange(t=>{let i=this.token$.value,r=this.viewComponent$.value;r?r.context=t:t&&(r=new $t(i??F,{context:t}),this.viewComponent$.set(r)),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(){return this.parentNode??this.getRootNode()?.host??void 0}connectedCallback(){this.#n=!0,this.addEventListener("slotchange",this.#y,{capture:!1,passive:!1}),this.addEventListener(pt,this.#g,{capture:!1,passive:!1}),this.#s(),xt(()=>this.#d()),xt(()=>this.#f()),this.componentContext==null&&this.componentContext$.set(I.get(this.ns)),this.#l(),this.componentContext?.dispatchReRequestParentRoots(),this.#a(),this.syncShadowObjects()}#a(){this.#o();let e=this.getParentNodeForObserver();e&&(this.#e=new MutationObserver((t,i)=>{for(let{target:r,removedNodes:n}of t)if(r===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.#l()}#o(){this.#e?.disconnect(),this.#e=void 0}attributeChangedCallback(e){super.attributeChangedCallback(e),e===ce?this.#d():e===q&&this.#f()}disconnectedCallback(){this.#n=!0,this.#o(),this.removeEventListener("slotchange",this.#y,{capture:!1}),this.removeEventListener(pt,this.#g,{capture:!1}),this.#c(void 0),this.componentContext$.set(void 0),this.syncShadowObjects(),this.#i()}#h(){this.isConnected&&(this.#c(void 0),this.#l())}#l(){this.dispatchEvent(new CustomEvent(pt,{bubbles:!0,composed:!0,detail:{requester:this}}))}#u;#c(e){if(this.entParentNode!==e)if(this.entParentNode&&this.entParentNode.removeEventListener(gt,this.#p,{capture:!1}),this.entParentNode=e,this.entParentNode&&this.entParentNode.addEventListener(gt,this.#p,{capture:!1,passive:!1}),this.#u?.(),this.#u=void 0,e){let t=S(()=>{let i=this.viewComponent$.get();if(i){let r=e.viewComponent$.get();i.parent=r&&r.context===i.context?r:void 0,i.parent==null&&queueMicrotask(()=>{this.#l()}),this.syncShadowObjects()}});this.#u=()=>t.destroy()}else{let t=this.viewComponent;t?.parent&&(t.parent=void 0,this.syncShadowObjects())}}#y;#p;#g;#d(){if(this.hasAttribute(ce)){let e=this.getAttribute(ce)?.trim()||void 0;this.token$.set(e)}}#f(){if(this.hasAttribute(q)){let e=this.getAttribute(q);!e||e.trim().length===0?this.forwardCustomEvents$.set(!0):this.forwardCustomEvents$.set(new Set(e.split(",").map(t=>t.trim()).filter(t=>t.length>0)))}else this.forwardCustomEvents$.set(!1)}};customElements.define(yt,Ft);var Xr=s=>{let e=s.parentElement;for(;e;){if(e.isShaeEntElement)return e;e=e.parentElement}},Zr=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"]),jt=class extends HTMLElement{constructor(){super(),this.isShaePropElement=!0,this.entNode$=y(),this.viewComponent$=y(),this.name$=y(),this.valueIn$=y(),this.valueOut$=y(),this.type$=y(),this.shouldTrim$=y(!0),this.logger=new N("ShaePropElement"),this.#e=()=>{this.entNode$.set(Xr(this))},this.#t=()=>{queueMicrotask(()=>{this.isConnected||this.entNode$.set(void 0)})},this.#s=()=>{this.name$.set(this.getAttribute(bt)?.trim()??void 0)},this.#i=()=>{this.valueIn$.set(this.getAttribute(wt))},this.#r=()=>{let e=this.getAttribute(Et)?.trim().toLowerCase();e&&!Zr.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(!at(this,Ct))},this.entNode$.onChange(e=>{if(e){let t=$(e.viewComponent$,this.viewComponent$);return()=>{t.destroy()}}else this.viewComponent$.set(void 0)}),S(()=>{let e=this.viewComponent$.get();if(e){let t=this.name$.get();if(t){let i=this.valueOut$.get();this.logger.isDebug&&this.logger.debug(`[${this.name}] view-component set-property`,t,i,e.uuid,{viewComponent:e,shaeProp:this}),e.setProperty(t,i),this.isConnected&&this.entNode?.syncShadowObjects()}}}),S(()=>{let e=this.type$.get(),t=this.shouldTrim$.get(),i=this.valueIn$.get();if(t&&typeof i=="string"&&(i=i.trim()),i=i||void 0,i!=null&&typeof i=="string"&&e)switch(e){case"string":case"text":break;case"number":i=Number(i);break;case"bigint":i=BigInt(i);break;case"float":i=parseFloat(i);break;case"int":case"integer":i=parseInt(i,10);break;case"hex":case"hexadecimal":i=parseInt(i,16);break;case"oct":case"octal":i=parseInt(i,8);break;case"bin":case"binary":i=parseInt(i,2);break;case"bool":case"boolean":i=nt.has(i.toLowerCase());break;case"[]":case"text[]":case"string[]":i=i.split(/\W+/);break;case"number[]":i=i.split(/\s+/).map(r=>Number(r));break;case"float[]":i=i.split(/\s+/).map(r=>parseFloat(r));break;case"int[]":case"integer[]":i=i.split(/\s+/).map(r=>parseInt(r,10));break;case"hex[]":case"hexadecimal[]":i=i.split(/\W+/).map(r=>parseInt(r,16));break;case"oct[]":case"octal[]":i=i.split(/\W+/).map(r=>parseInt(r,8));break;case"bin[]":case"binary[]":i=i.split(/\W+/).map(r=>parseInt(r,2));break;case"bool[]":case"boolean[]":i=i.split(/\W+/).map(r=>nt.has(r.toLowerCase()));break;case"int8array":i=new Int8Array(i.split(/\W+/).map(r=>Number(r)));break;case"uint8array":i=new Uint8Array(i.split(/\W+/).map(r=>Number(r)));break;case"uint8clampedarray":i=new Uint8ClampedArray(i.split(/\W+/).map(r=>Number(r)));break;case"int16array":i=new Int16Array(i.split(/\W+/).map(r=>Number(r)));break;case"uint16array":i=new Uint16Array(i.split(/\W+/).map(r=>Number(r)));break;case"int32array":i=new Int32Array(i.split(/\W+/).map(r=>Number(r)));break;case"uint32array":i=new Uint32Array(i.split(/\W+/).map(r=>Number(r)));break;case"float32array":i=new Float32Array(i.split(/\s+/).map(r=>Number(r)));break;case"float64array":i=new Float64Array(i.split(/\s+/).map(r=>Number(r)));break;case"bigint64array":i=new BigInt64Array(i.split(/\W+/).map(r=>BigInt(r)));break;case"biguint64array":i=new BigUint64Array(i.split(/\W+/).map(r=>BigInt(r)));break;case"json":i=JSON.parse(i);break;default:this.logger.isWarn&&this.logger.warn(`[${this.name}] unknown type "${e}"`,{value:i,shaeProp:this})}this.valueOut$.set(i)}),W(()=>{this.#s(),this.#i(),this.#r(),this.#n()}),this.style.display="contents"}static{this.observedAttributes=[bt,wt,Et,Ct]}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}connectedCallback(){W(()=>{this.#e(),this.#s(),this.#i(),this.#r(),this.#n()})}attributeChangedCallback(e){switch(e){case bt:this.#s();break;case wt:this.#i();break;case Et:this.#r();break;case Ct:this.#n();break}}disconnectedCallback(){this.#t()}#e;#t;#s;#i;#r;#n};customElements.whenDefined(yt).then(()=>customElements.define(Vs,jt));var Rs=null,ht=class s{static{this.OnFrame=Symbol("onFrame")}#e=0;constructor(){if(Rs)return Rs;T(this),Rs=this}start(e){if(e!=null)return os(this)===0&&this.#s(),b(this,s.OnFrame,e),()=>{this.stop(e)}}stop(e){A(this,s.OnFrame,e),os(this)===0&&this.#i()}#t=e=>{g(this,s.OnFrame,e),this.#s()};#s(){this.#e=requestAnimationFrame(this.#t)}#i(){cancelAnimationFrame(this.#e),this.#e=0}};async function Ms(s,e,t,i=!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=>Ms(s,n,t,!1)));let{registry:r}=s;if(e.define)for(let[n,o]of Object.entries(e.define))r.define(n,o);if(e.routes)for(let[n,o]of Object.entries(e.routes))r.appendRoute(n,o);await(e.initialize?.({define:(n,o)=>r.define(n,o),kernel:s,registry:r})??Promise.resolve()),i&&s.upgradeEntities()}var zt=s=>s??void 0;var Ls=Symbol("onCreate"),te=Symbol("onDestroy"),Bi=Symbol("onParentChanged"),It=Symbol("onViewEvent");var en=Object.create,Ds=Object.defineProperty,tn=Object.getOwnPropertyDescriptor,Hi=(s,e)=>(e=Symbol[s])?e:Symbol.for("Symbol."+s),Ve=s=>{throw TypeError(s)},sn=(s,e,t)=>e in s?Ds(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,Gi=(s,e)=>Ds(s,"name",{value:e,configurable:!0}),rn=s=>[,,,en(s?.[Hi("metadata")]??null)],Qi=["class","method","getter","setter","accessor","field","value","get","set"],lt=s=>s!==void 0&&typeof s!="function"?Ve("Function expected"):s,nn=(s,e,t,i,r)=>({kind:Qi[s],name:e,metadata:i,addInitializer:n=>t._?Ve("Already initialized"):r.push(lt(n||null))}),Ki=(s,e)=>sn(e,Hi("metadata"),s[3]),qi=(s,e,t,i)=>{for(var r=0,n=s[e>>1],o=n&&n.length;r<o;r++)e&1?n[r].call(t):i=n[r].call(t,i);return i},on=(s,e,t,i,r,n)=>{var o,a,f,m,P,c=e&7,D=!!(e&8),w=!!(e&16),O=c>3?s.length+1:c?D?1:2:0,le=Qi[c+5],u=c>3&&(s[O-1]=[]),l=s[O]||(s[O]=[]),h=c&&(!w&&!D&&(r=r.prototype),c<5&&(c>3||!w)&&tn(c<4?r:{get[t](){return z(this,n)},set[t](d){return ut(this,n,d)}},t));c?w&&c<4&&Gi(n,(c>2?"set ":c>1?"get ":"")+t):Gi(r,t);for(var p=i.length-1;p>=0;p--)m=nn(c,t,f={},s[3],l),c&&(m.static=D,m.private=w,P=m.access={has:w?d=>an(r,d):d=>t in d},c^3&&(P.get=w?d=>(c^1?z:we)(d,r,c^4?n:h.get):d=>d[t]),c>2&&(P.set=w?(d,_)=>ut(d,r,_,c^4?n:h.set):(d,_)=>d[t]=_)),a=(0,i[p])(c?c<4?w?n:h[le]:c>4?void 0:{get:h.get,set:h.set}:r,m),f._=1,c^4||a===void 0?lt(a)&&(c>4?u.unshift(a):c?w?n=a:h[le]=a:r=a):typeof a!="object"||a===null?Ve("Object expected"):(lt(o=a.get)&&(h.get=o),lt(o=a.set)&&(h.set=o),lt(o=a.init)&&u.unshift(o));return c||Ki(s,r),h&&Ds(r,t,h),w?c^4?n:h:r},Ns=(s,e,t)=>e.has(s)||Ve("Cannot "+t),an=(s,e)=>Object(e)!==e?Ve('Cannot use the "in" operator on this value'):s.has(e),z=(s,e,t)=>(Ns(s,e,"read from private field"),t?t.call(s):e.get(s)),Ut=(s,e,t)=>e.has(s)?Ve("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(s):e.set(s,t),ut=(s,e,t,i)=>(Ns(s,e,"write to private field"),i?i.call(s,t):e.set(s,t),t),we=(s,e,t)=>(Ns(s,e,"access private method"),t),Yi,se,Ee,dt,_s,he,Vt,ct,Ue="value";Yi=[tt({name:Ue})];var ie=class{constructor(e){Ut(this,he),Ut(this,se,[]),Ut(this,Ee),Ut(this,_s,qi(dt,8,this)),qi(dt,11,this),this.value$=void 0,Y(this,Ue),this.value$=G(this,Ue),this.value$.onChange(t=>g(this,Ue,t)),e&&this.add(...e)}add(...e){return z(this,se).push(...e),we(this,he,ct).call(this),we(this,he,Vt).call(this,e)}unshift(...e){return z(this,se).unshift(...e),we(this,he,ct).call(this),we(this,he,Vt).call(this,e)}remove(...e){we(this,he,Vt).call(this,e)()}clear(){z(this,se).length=0,we(this,he,ct).call(this)}dispose(){this.clear(),z(this,Ee)?.destroy(),ut(this,Ee,void 0),de(this,Ue),A(this),this.value$.destroy(),Je(this)}};dt=rn(null);se=new WeakMap;Ee=new WeakMap;_s=new WeakMap;he=new WeakSet;Vt=function(s){return()=>{for(let e of s){let t=z(this,se).indexOf(e);t!==-1&&z(this,se).splice(t,1)}we(this,he,ct).call(this)}};ct=function(){z(this,Ee)?.destroy(),z(this,se).length===0?(ut(this,Ee,void 0),this.value=void 0):(ut(this,Ee,S(()=>{let s;for(let e of z(this,se)){let t=We(e);if(t!=null){s=t;break}}this.value=s},z(this,se))),z(this,Ee).run())};on(dt,4,"value",Yi,ie,_s);Ki(dt,ie);ie.Value=Ue;var Ws=new Map,$s=!1,hn=(s,e)=>{Ws.set(s,e),$s||($s=!0,queueMicrotask(()=>{$s=!1;let t=Array.from(Ws.entries());Ws.clear();for(let[i,r]of t)i.set(r)}))},Bt=class{#e;#t;#s=new Lt;#i=new Map;#r=new Map;#n;#a;#o=new Set;#h=[];#l=0;get kernel(){return this.#e}get uuid(){return this.#t}get order(){return this.#l}set order(e){this.#l!==e&&(this.#l=e,this.#n&&this.parent.resortChildren())}get parentUuid(){return this.#n||void 0}set parentUuid(e){if(this.#n!==e){let t=e?this.#e.getEntity(e):void 0;this.removeFromParent(),this.#n=e||void 0,this.#a=t,this.#a&&this.#a.addChild(this),this.#p()}}get parent(){return!this.#a&&this.#n&&(this.#a=this.#e.getEntity(this.#n)),this.#a}set parent(e){this.parentUuid=e?.uuid}get hasParent(){return!!this.#n}get children(){return this.#h}constructor(e,t){this.#e=e,this.#t=t,C(this,te,K.Min,this)}traverse(e){e(this);for(let t of this.#h)t.traverse(e)}[te](){this.#s.clear(),A(this),this.#c?.();for(let e of this.#r.values())e.cleanup(),e.signal.destroy();this.#r.clear();for(let e of this.#i.values())e.context.set(void 0),e.unsubscribePathValue(),e.unsubscribeFromParent?.(),e.valuePath.dispose(),e.inherited.destroy(),e.provide.destroy(),e.context.destroy();this.#n=void 0,this.#a=void 0,this.#o.clear(),this.#h.length=0}addChild(e){if(this.#h.length===0){this.#o.add(e.uuid),this.#h.push(e);return}if(this.#o.has(e.uuid))throw new Error(`child with uuid: ${e.uuid} already exists! parentUuid: ${this.uuid}`);this.#o.add(e.uuid),this.#h.push(e),this.resortChildren();for(let[,t]of e.#i)e.#v(t)}resortChildren(){this.#h.sort((e,t)=>e.order-t.order)}removeChild(e){this.#o.has(e.uuid)&&(this.#o.delete(e.uuid),this.#h.splice(this.#h.indexOf(e),1))}removeFromParent(){if(this.#a){this.#a.removeChild(this),this.#a=void 0,this.#n=void 0;for(let[,e]of this.#i)e.unsubscribeFromParent&&(e.unsubscribeFromParent(),e.unsubscribeFromParent=void 0);this.#y()}}#u=!1;#c;get autoDestructionOnParentRemoval(){return this.#u}set autoDestructionOnParentRemoval(e){this.#u!==e&&(this.#u=e,this.#p())}#y(){this.#c&&(this.#c(),this.#c=void 0)}#p(){this.#y(),this.#u&&this.#a&&(this.#c=C(this.#a,te,K.Max,()=>{this.#c=void 0,this.#e.destroyEntity(this.#t)}))}reSubscribeToParentContexts(){for(let[,e]of this.#i)this.#v(e)}dispatchMessageToView(e,t,i,r=!1){this.#e.dispatchMessageToView({uuid:this.#t,type:e,data:t,transferables:i,traverseChildren:r})}dispatchViewEvents(e){for(let{type:t,data:i}of e)g(this,It,t,i)}dispatchViewEvent(e,t){this.dispatchViewEvents([{type:e,data:t}])}#g(e){return this.#s.get(e)}getPropertyReader(e){return this.#g(e).get}getPropertyWriter(e){return this.#g(e).set}setProperties(e){this.clearTruthyPropsCache(),W(()=>{for(let[t,i]of e)this.setProperty(t,i)})}setProperty(e,t){this.getPropertyWriter(e)(t)}getProperty(e){return We(this.getPropertyReader(e))}propKeys(){return Array.from(this.#s.keys())}propEntries(){return Array.from(this.#s.entries()).map(([e,t])=>[e,t.value])}#d;clearTruthyPropsCache(){this.#d=void 0}truthyProps(){if(this.#d)return this.#d.size?this.#d:void 0;let e=new Set;for(let[t,i]of this.#s.entries())if(typeof t=="string"){let r=i.value;r!=null&&r!==!1&&r!==""&&e.add(t)}return this.#d=e,e.size?e:void 0}hasContext(e){return this.#i.has(e)}useContext(e){return this.#f(e).context.get}useParentContext(e){return this.#f(e).inherited.get}provideContext(e){return this.#f(e).provide}provideGlobalContext(e){if(this.#r.has(e))return this.#r.get(e).signal;let t=this.#e.findOrCreateRootContext(e),i=y(),r=t.add(i);return this.#r.set(e,{cleanup:r,signal:i}),i}#f(e){if(this.#i.has(e))return this.#i.get(e);let t=y(),i=y(),r=y(),n=new ie([i,t]),o=b(n,ie.Value,f=>{hn(r,f)}),a={name:e,inherited:t,provide:i,context:r,valuePath:n,unsubscribePathValue:o};return this.#i.set(e,a),this.#v(a),a}#v(e){if(e.unsubscribeFromParent?.(),e.unsubscribeFromParent=void 0,this.parent){let t=this.parent.#f(e.name),i=$(t.context,e.inherited);e.unsubscribeFromParent=i.destroy.bind(i)}else{let t=this.#e.findOrCreateRootContext(e.name),i=$(t.value$,e.inherited);e.unsubscribeFromParent=i.destroy.bind(i)}}};var Ji=s=>{let e=s.split("@").map(t=>t.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]}},Gt=(s,e)=>{for(let t of e)s.add(t)},ln=(s,e)=>{if(s!=null)for(let t of s.constructors)e.add(t)},Me=class{static get(e){return e??cn}#e=new Map;#t=new Map;#s=new Map;define(e,t){let i=this.#e.get(e);i?Ti(i.constructors,t):this.#e.set(e,{token:e,constructors:[t]})}appendRoute(e,t){let i=Ji(e);if(i){let r=this.#s.get(i.key);r?Gt(r.routes,t):this.#s.set(i.key,{routes:new Set(t),token:i.token})}else{let r=this.#t.get(e);r?Gt(r,t):this.#t.set(e,new Set(t))}}clearRoute(e){let t=Ji(e);t?this.#s.delete(t.key):this.#t.delete(e)}findTokensByRoute(e,t){let i=new Set([e]),r=Array.from(this.#t.get(e)??[]);for(let n=r.shift();n!==void 0;n=r.shift()){if(i.has(n))continue;i.add(n);let o=this.#t.get(n);o&&r.push(...Array.from(o).filter(a=>!i.has(a)))}if(t){for(let o of t){let a=this.#s.get(o);a&&Gt(i,a.routes)}let n;do{n=i.size;for(let o of new Set(i))for(let a of t){let f=this.#s.get(`${o}@${a}`);f&&Gt(i,f.routes)}}while(n!==i.size)}return i}findConstructors(e,t){let i=this.findTokensByRoute(e,t),r=new Set;for(let n of i)ln(this.#e.get(n),r);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(),this.#s.clear()}},cn=new Me;var Xi=s=>s.displayName||s.name,Zi=!1,er=!1,tr=!1,sr=!1,ir=!1,qt=class{constructor(e){this.logger=new N("Kernel"),this.#e=new Map,this.#t=new Set,this.#s=[],this.#i=[],this.#r=!0,this.#n=new Map,T(this),this.registry=Me.get(e)}#e;#t;#s;#i;#r;#n;getEntity(e){return this.#a(e).entity}#a(e){let t=this.#e.get(e);if(t===void 0)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,i=(r,n)=>{let o=this.getEntity(r),a=t.get(n);a?a.push(o):t.set(n,[o]);for(let f of o.children)i(f.uuid,n+1)};this.#t.forEach(r=>{i(r,0)}),this.#s=Array.from(t.entries()).sort((r,n)=>r[0]-n[0]).flatMap(([,r])=>r),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)).filter(e=>e!==void 0)}getEntityGraphNode(e){let t=this.#e.get(e);if(t===void 0)return;let{token:i,entity:r}=t;return{token:i,entity:r,props:Object.fromEntries(r.propEntries()),children:r.children.map(n=>this.getEntityGraphNode(n.uuid)).filter(n=>n!==void 0)}}upgradeEntities(){let e=new Map;for(let t of this.traverseLevelOrderBFS(!0))this.hasEntity(t.uuid)&&e.set(t.uuid,this.updateShadowObjects(t.uuid,2));for(let t of this.traverseLevelOrderBFS(!1))this.hasEntity(t.uuid)&&this.updateShadowObjects(t.uuid,1,e.get(t.uuid));e.clear()}run(e){this.logger.isDebug&&this.logger.debug("sync",e),W(()=>{for(let t of e.changeTrail)this.parse(t)})}parse(e){switch(e.type){case E.CreateEntities:this.createEntity(e.uuid,e.token,e.parentUuid,e.order,e.properties,e.autoDestructionOnParentRemoval),this.#r=!0;break;case E.DestroyEntities:this.destroyEntity(e.uuid),this.#r=!0;break;case E.SetParent:this.setParent(e.uuid,e.parentUuid,e.order),this.#r=!0;break;case E.UpdateOrder:this.updateOrder(e.uuid,e.order),this.#r=!0;break;case E.ChangeProperties:this.changeProperties(e.uuid,e.properties);break;case E.ChangeToken:this.changeToken(e.uuid,e.token);break;case E.SendEvents:this.dispatchEventsToEntity(e.uuid,e.events);break}}createEntity(e,t,i,r=0,n,o=!1){let a=new Bt(this,e);a.order=r;let f={token:t,entity:a,usedConstructors:new Map};this.#e.set(e,f),i&&(a.parentUuid=i),a.autoDestructionOnParentRemoval=o,a.hasParent||this.#t.add(e),n&&a.setProperties(n),this.createShadowObjects(f)}destroyEntity(e){let t=this.#e.get(e);if(t===void 0)return;let{entity:i,usedConstructors:r}=t,n=[...i.children];for(let o of n)o.autoDestructionOnParentRemoval?this.destroyEntity(o.uuid):(o.removeFromParent(),this.#t.add(o.uuid));i.removeFromParent(),g(i,te,i),r.clear(),this.#e.delete(i.uuid),this.#t.delete(i.uuid),this.#r=!0}setParent(e,t,i){let r=this.getEntity(e),n=i??r.order;if(!(r.parentUuid===t&&r.order===n)){if(t&&!this.#e.has(t))throw new Error(`entity with uuid "${t}" not found!`);r.removeFromParent(),r.order=n,r.parentUuid=t,r.hasParent?this.#t.delete(e):this.#t.add(e),r.reSubscribeToParentContexts(),queueMicrotask(()=>{this.logger.isDebug&&this.logger.debug("entity.onParentChanged",{uuid:e,parentUuid:t,order:n,entity:r}),g(r,Bi,r)})}}updateOrder(e,t){this.getEntity(e).order=t}dispatchEventsToEntity(e,t){this.getEntity(e)?.dispatchViewEvents(t)}changeProperties(e,t){this.getEntity(e).setProperties(t),this.updateShadowObjects(e)}changeToken(e,t){let i=this.#e.get(e);i!==void 0&&i.token!==t&&(i.token=t,this.updateShadowObjects(e))}dispatchMessageToView(e){queueMicrotask(()=>{g(this,$e,e)})}updateShadowObjects(e,t=0,i){let r=this.#a(e);i??=new Set(this.registry.findConstructors(r.token,r.entity.truthyProps()));let n=t===0||t===2,o=t===0||t===1;if(n){for(let[a,f]of r.usedConstructors)if(!i.has(a)){r.usedConstructors.delete(a);for(let m of f)this.destroyShadowObject(m,r.entity)}}if(o)for(let a of i)r.usedConstructors.has(a)||this.constructShadowObject(a,r);return i}constructShadowObject(e,t){let i=new Set,r=new Set,n=new Map,o=new Map,a=new Map,f=new Map,m=new Map,P=new Map,c=new Map,D=new Map,w=(u,l)=>{!ir&&l!=null&&typeof l=="function"&&(console.warn('[shadow-objects] Deprecation Warning: The "isEqual" option of "useProperty()" is now passed as {compare} argument. Please update your code accordingly.'),ir=!0);let h=typeof l=="function"?{compare:l}:l,p=c.get(u);if(p===void 0){p=y(void 0,h).get,c.set(u,p),D.set(u,h?.compare);let d=$(t.entity.getPropertyReader(u),p);r.add(d.destroy.bind(d))}else h?.compare!=null&&D.get(u)!==h.compare&&console.warn(`[shadow-objects] useProperty("${u}"): the cached signal already exists with a different (or no) {compare} function \u2014 the new options are ignored. Pass options only on the first call per property.`);return p},O=T(new e({entity:t.entity,provideContext(u,l,h){!Zi&&h!=null&&typeof h=="function"&&(console.warn('[shadow-objects] Deprecation Warning: The "isEqual" option of "provideContext()" is now passed as {compare} argument. Please update your code accordingly.'),Zi=!0);let p=typeof h=="function"?{compare:h}:h,d=m.get(u);if(d==null){let _=Ae(l),Jt=_?void 0:zt(l);if(d=y(Jt,p?.compare?{compare:p.compare}:void 0),_){let Ge=$(l,d);r.add(Ge.destroy.bind(Ge))}let Be=$(d,t.entity.provideContext(u));r.add(Be.destroy.bind(Be)),m.set(u,d)}return d!=null&&(p?.clearOnDestroy??!0)&&r.add(()=>{d.set(void 0)}),d},provideGlobalContext(u,l,h){!er&&h!=null&&typeof h=="function"&&(console.warn('[shadow-objects] Deprecation Warning: The "isEqual" option of "provideGlobalContext()" is now passed as {compare} argument. Please update your code accordingly.'),er=!0);let p=typeof h=="function"?{compare:h}:h,d=P.get(u);if(d==null){let _=Ae(l),Jt=_?void 0:zt(l);if(d=y(Jt,p?.compare?{compare:p.compare}:void 0),_){let Ge=$(l,d);r.add(Ge.destroy.bind(Ge))}let Be=$(d,t.entity.provideGlobalContext(u));r.add(Be.destroy.bind(Be)),P.set(u,d)}return d!=null&&(p?.clearOnDestroy??!0)&&r.add(()=>{d.set(void 0)}),d},useContext(u,l){!tr&&l!=null&&typeof l=="function"&&(console.warn('[shadow-objects] Deprecation Warning: The "isEqual" option of "useContext()" is now passed as {compare} argument. Please update your code accordingly.'),tr=!0);let h=typeof l=="function"?{compare:l}:l,p=n.get(u);if(p===void 0){p=y(void 0,h).get,n.set(u,p),o.set(u,h?.compare);let d=$(t.entity.useContext(u),p);r.add(d.destroy.bind(d))}else h?.compare!=null&&o.get(u)!==h.compare&&console.warn(`[shadow-objects] useContext("${String(u)}"): the cached signal already exists with a different (or no) {compare} function \u2014 the new options are ignored. Pass options only on the first call per context.`);return p},useParentContext(u,l){!sr&&l!=null&&typeof l=="function"&&(console.warn('[shadow-objects] Deprecation Warning: The "isEqual" option of "useParentContext()" is now passed as {compare} argument. Please update your code accordingly.'),sr=!0);let h=typeof l=="function"?{compare:l}:l,p=a.get(u);if(p===void 0){p=y(void 0,h).get,a.set(u,p),f.set(u,h?.compare);let d=$(t.entity.useParentContext(u),p);r.add(d.destroy.bind(d))}else h?.compare!=null&&f.get(u)!==h.compare&&console.warn(`[shadow-objects] useParentContext("${String(u)}"): the cached signal already exists with a different (or no) {compare} function \u2014 the new options are ignored. Pass options only on the first call per parent context.`);return p},dispatchMessageToView(u,l,h,p=!1){t.entity.dispatchMessageToView(u,l,h,p)},useProperty:w,useProperties(u){let l={};for(let h in u)Object.hasOwn(u,h)&&(l[h]=w(u[h]));return l},createResource(u,l){let h=y(),p=S(()=>{let d=zt(u());return h.set(d),d!==void 0&&l?()=>{l(d),h.set(void 0)}:()=>{h.set(void 0)}});return r.add(()=>{p.destroy(),h.set(void 0),M(h)}),h},createEffect(...u){let l=S(...u);return r.add(l.destroy),l},createSignal(...u){let l=y(...u);return r.add(()=>{M(l)}),l},createMemo(...u){let l=Ot(...u);return r.add(()=>{M(l)}),l},on(...u){let[l]=u;if(typeof l=="string"||typeof l=="symbol"||Array.isArray(l)){let p=b(t.entity,...u);return r.add(p),p}let h=b(...u);return r.add(h),Object.assign(()=>{r.delete(h),h()},h)},once(...u){let[l]=u;if(typeof l=="string"||typeof l=="symbol"||Array.isArray(l)){let p=C(t.entity,...u);return r.add(p),p}let h=C(...u);return r.add(h),Object.assign(()=>{r.delete(h),h()},h)},emit(...u){let[l]=u;typeof l=="string"||typeof l=="symbol"||Array.isArray(l)?g(t.entity,...u):g(...u)},onViewEvent(u){let l=b(t.entity,It,(h,p)=>{u(h,p)});r.add(l)},onDestroy(u){i.add(u)}}));this.logger.isInfo&&this.logger.info("create shadow-object",Xi(e),{shadowObject:O,entity:t.entity}),C(t.entity,te,K.Low,()=>{this.logger.isInfo&&this.logger.info("destroy shadow-object",Xi(e),{shadowObject:O,entity:t.entity});for(let l of i)l();for(let l of r)l();for(let l of n.values())M(l);for(let l of a.values())M(l);for(let l of c.values())M(l);for(let l of m.values())M(l);for(let l of P.values())M(l);i.clear(),r.clear(),n.clear(),a.clear(),c.clear(),m.clear(),P.clear();let u=t.usedConstructors.get(e);u&&(u.delete(O),u.size===0&&t.usedConstructors.delete(e))});let le=t.usedConstructors.get(e);return le?le.add(O):t.usedConstructors.set(e,new Set([O])),this.attachShadowObject(O,t.entity),O}createShadowObjects(e){this.registry.findConstructors(e.token,e.entity.truthyProps())?.forEach(t=>{this.constructShadowObject(t,e)})}findShadowObjects(e){let t=this.#e.get(e);if(t===void 0)return[];let{usedConstructors:i}=t;return Array.from(new Set(Array.from(i.values()).flatMap(r=>Array.from(r))))}attachShadowObject(e,t){b(t,e),typeof e[Ls]=="function"&&e[Ls](t)}destroyShadowObject(e,t){typeof e[te]=="function"&&e[te](t),g(e,te,t),A(t,e)}findOrCreateRootContext(e){let t=this.#n.get(e);return t||(t=new ie,this.#n.set(e,t)),t}destroy(){for(let e of this.#n.values())e.dispose();this.#n.clear();for(let e of this.traverseLevelOrderBFS().reverse())this.destroyEntity(e.uuid)}};var Ht=s=>(typeof s=="string"&&(s=new URL(s,globalThis.location.href)),s.toString());function rr(s){return s.map(e=>{if(e.transferables&&e.transferables.length>0){let{transferables:t,...i}=e;return structuredClone(i,{transfer:t})}else return structuredClone(e)})}var Qt=class{constructor(e){this.#e=new Set,this.isLocalEnv=!0,this.disableStructuredClone=!1,this.kernel=new qt(e),this.#t=this.kernel.registry===Me.get(),b(this.kernel,$e,t=>{let i=this.onMessageToView;if(i==null)return;let{type:r,uuid:n,traverseChildren:o}=t,a=structuredClone(t.data,{transfer:t.transferables});i.call(this,{type:r,uuid:n,data:a,traverseChildren:o})})}#e;#t;get registry(){return this.kernel.registry}start(){return Promise.resolve()}applyChangeTrail(e,t){let i={changeTrail:this.disableStructuredClone?e:rr(e)},r;try{this.kernel.run(i),r=Promise.resolve()}catch(n){r=Promise.reject(n)}return r}async importScript(e){let t=await import(Ht(e));t[ys]&&await this.importModule(t[ys])}async importModule(e){return Ms(this.kernel,e,this.#e)}destroy(){this.kernel.destroy(),this.#t||this.registry.clear(),this.#e.clear()}};function Fs(s){let e=new Blob([s],{type:"text/javascript"}),t=URL.createObjectURL(e),i=new Worker(t);return URL.revokeObjectURL(t),i}function js(){return Fs(`var Qi=Object.defineProperty;var Rt=Object.getOwnPropertySymbols;var Ns=Object.prototype.hasOwnProperty,Us=Object.prototype.propertyIsEnumerable;var qi=(s,e)=>(e=Symbol[s])?e:Symbol.for("Symbol."+s),_s=s=>{throw TypeError(s)};var is=(s,e,t)=>e in s?Qi(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,rs=(s,e)=>{for(var t in e||(e={}))Ns.call(e,t)&&is(s,t,e[t]);if(Rt)for(var t of Rt(e))Us.call(e,t)&&is(s,t,e[t]);return s};var js=(s,e)=>{var t={};for(var i in s)Ns.call(s,i)&&e.indexOf(i)<0&&(t[i]=s[i]);if(s!=null&&Rt)for(var i of Rt(s))e.indexOf(i)<0&&Us.call(s,i)&&(t[i]=s[i]);return t};var y=(s,e,t)=>is(s,typeof e!="symbol"?e+"":e,t),ns=(s,e,t)=>e.has(s)||_s("Cannot "+t);var n=(s,e,t)=>(ns(s,e,"read from private field"),t?t.call(s):e.get(s)),f=(s,e,t)=>e.has(s)?_s("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(s):e.set(s,t),g=(s,e,t,i)=>(ns(s,e,"write to private field"),i?i.call(s,t):e.set(s,t),t),S=(s,e,t)=>(ns(s,e,"access private method"),t);var Tt=(s,e,t,i)=>({set _(r){g(s,e,r,t)},get _(){return n(s,e,i)}});var os=function(s,e){this[0]=s,this[1]=e},Vs=(s,e,t)=>{var i=(c,d,w,k)=>{try{var v=t[c](d),B=(d=v.value)instanceof os,M=v.done;Promise.resolve(B?d[0]:d).then(C=>B?i(c==="return"?c:"next",d[1]?{done:C.done,value:C.value}:C,w,k):w({value:C,done:M})).catch(C=>i("throw",C,w,k))}catch(C){k(C)}},r=(c,d,w,k)=>a[c]=v=>(d=new Promise((B,M,C)=>(C=()=>i(c,v,B,M),o?o.then(C):C())),k=()=>o===w&&(o=0),o=w=d.then(k,k),d),o,a={};return t=t.apply(s,e),a[qi("asyncIterator")]=()=>a,r("next"),r("throw"),r("return"),a};var ae=(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",s))(ae||{});var Ws="configure",Is="changeTrail",Qs="destroy",qs="loaded",as="appliedChangeTrail",Dt="importedModule",Ks="destroyed",ut="messageToView";var zt="shadowObjects";var F="ConsoleLogger",D=\`\${F}Storage\`,Ys,Xs,Zs,Ki=!!((Zs=(Xs=(Ys=globalThis.location)==null?void 0:Ys.host)==null?void 0:Xs.startsWith("localhost"))!=null&&Zs),gt="localStorage"in globalThis,Bt=Symbol.for(F),Hs=!1,Js=s=>{if(typeof s=="boolean")return s;switch(s.toLowerCase()){case"true":case"yes":case"on":return!0;default:return!1}},ls=s=>[gt?F:void 0,...Array.isArray(s)?s:[s]].filter(Boolean).join(".");function cs(s,e,t){var o;let i=ls(s),r=gt?localStorage.getItem(i):(o=globalThis[D])==null?void 0:o[i];return r==null?t:e?e(r):r}function ft(s,e){gt?localStorage.setItem(ls(s),e):(globalThis[D]==null&&(globalThis[D]={},console.debug(\`\${F}: Initialize\`,{[D]:globalThis[D]})),globalThis[D][ls(s)]=e)}var $e,dt,b=class b{constructor(e){f(this,$e);this.enable=!0,this.namespace=(e||"").trim()||F,Hs||(b.loadConfig(),Hs=!0);let t=[this.namespace,"enable"];this.enable=cs(t,Js,this.enable),ft(t,gt?this.enable?"true":"false":this.enable)}static get isEnabled(){return b.sharedConfig.enable}static get isDebug(){return b.sharedConfig.enable&&b.sharedConfig.debug}static loadConfig(){var e,t,i;gt?(["enable","debug","info","warn"].forEach(r=>{this.sharedConfig[r]=cs(r,Js,this.sharedConfig[r])}),["debug","info","warn","error"].forEach(r=>{this.sharedStyles[r]=cs(["styles",r],void 0,this.sharedStyles[r])}),b.isDebug&&console.debug(\`\${F}: Load config from localStorage\`,b.sharedConfig),(e=globalThis[F])!=null&&e[Bt]||(t=globalThis[F])!=null||(globalThis[F]={[Bt]:!0,get enable(){return b.sharedConfig.enable},set enable(r){b.sharedConfig.enable=r,ft("enable",r?"true":"false")},get debug(){return b.sharedConfig.debug},set debug(r){b.sharedConfig.debug=r,ft("debug",r?"true":"false")},get info(){return b.sharedConfig.info},set info(r){b.sharedConfig.info=r,ft("info",r?"true":"false")},get warn(){return b.sharedConfig.warn},set warn(r){b.sharedConfig.warn=r,ft("warn",r?"true":"false")}})):(i=globalThis[D])!=null&&i[Bt]||(globalThis[D]=rs(rs({[Bt]:!0},b.sharedConfig),globalThis[D]),b.sharedConfig=globalThis[D],b.isDebug&&console.debug(\`\${F}: Load config from \${D}\`,globalThis[D]))}get isEnabled(){return this.enable&&b.sharedConfig.enable}get isDebug(){return this.isEnabled&&b.sharedConfig.debug}get isInfo(){return this.isEnabled&&b.sharedConfig.info}get isWarn(){return this.isEnabled&&b.sharedConfig.warn}debug(...e){S(this,$e,dt).call(this,"debug",b.sharedStyles.debug,e)}info(...e){S(this,$e,dt).call(this,"info",b.sharedStyles.info,e)}warn(...e){S(this,$e,dt).call(this,"warn",b.sharedStyles.warn,e)}error(...e){S(this,$e,dt).call(this,"error",b.sharedStyles.error,e)}};$e=new WeakSet,dt=function(e,t,i){console[e](\`%c\${this.namespace}\`,t,...i)},b.sharedConfig={enable:Ki,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"},b.sharedStyles={get debug(){return b.sharedConfig["styles.debug"]},set debug(e){b.sharedConfig["styles.debug"]=e},get info(){return b.sharedConfig["styles.info"]},set info(e){b.sharedConfig["styles.info"]=e},get warn(){return b.sharedConfig["styles.warn"]},set warn(e){b.sharedConfig["styles.warn"]=e},get error(){return b.sharedConfig["styles.error"]},set error(e){b.sharedConfig["styles.error"]=e}};var Ft=b;var Ne="*",ni=1,gs=2,ys=4,ce=Symbol.for("eventize"),Hi="[eventize]",ps=s=>s===Ne,oi=s=>{switch(typeof s){case"string":case"symbol":return!0;default:return!1}},ai=typeof console!="undefined",Ji=ai?console[console.warn?"warn":"log"].bind(console,Hi):()=>{},Yi=(s,e,t)=>(Object.defineProperty(s,e,{value:t,configurable:!0}),s),Xi=0,vs=class{constructor(){y(this,"events",new Map);y(this,"eventNames",new Set)}static publish(s){s.sort((e,t)=>e.order-t.order).forEach(e=>e.replay())}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:Xi++})}isKnown(s){return this.eventNames.has(s)}replayTo(s,e,t=[]){if(ps(s))this.eventNames.forEach(i=>this.replayTo(i,e,t));else if(this.events.has(s)){let{order:i,args:r}=this.events.get(s);t.push({order:i,replay:()=>e.apply(s,r)})}return t}},fs=(s,e,t,i)=>{if(typeof e=="function"){let r=e.apply(s,t);r!=null&&(i==null||i(r))}},Zi=(s,e,t,i)=>fs(e,e.emit,[s].concat(t),i),er=s=>{switch(typeof s){case"function":return ni;case"string":case"symbol":return gs;case"object":return ys}},tr=0,sr=()=>++tr,ci=class{constructor(s,e,t,i=null){y(this,"id");y(this,"eventName");y(this,"isCatchEmAll");y(this,"priority");y(this,"listener");y(this,"listenerObject");y(this,"listenerType");y(this,"callAfterApply");y(this,"isRemoved");y(this,"refCount");this.id=sr(),this.eventName=s,this.isCatchEmAll=ps(s),this.listener=t,this.listenerObject=i,this.priority=e,this.listenerType=er(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===Ne||s===this.eventName:this.listener===s&&this.listenerObject===e}apply(s,e,t){if(this.isRemoved)return;let{listener:i,listenerObject:r}=this;switch(this.listenerType){case ni:fs(r,i,e,t),this.callAfterApply&&this.callAfterApply();break;case gs:fs(r,r[i],e,t),this.callAfterApply&&this.callAfterApply();break;case ys:{let o=i[s];if(this.isCatchEmAll||this.eventName===s){if(typeof o=="function"){let a=o.apply(i,e);a!=null&&(t==null||t(a))}else Zi(s,i,e,t);this.callAfterApply&&this.callAfterApply()}break}}}},ir=(s,e)=>s.priority!==e.priority?e.priority-s.priority:s.id-e.id,rr=(s,e)=>{let t=0,i=s.length;for(;t<i;){let r=t+i>>>1;ir(e,s[r])<0?i=r:t=r+1}return t},ei=s=>s==null?void 0:s.slice(0),ti=(s,e)=>{let t=s.indexOf(e);t>-1&&s.splice(t,1)},nr=s=>s===ys||s===gs,ds=(s,e,t)=>{let i=s.findIndex(r=>r.isEqual(e,t));i>-1&&(s[i].isRemoved=!0,s.splice(i,1))},hs=(s,e,t)=>{let i=[];for(let r of s)(e==null&&r.listenerObject===t||r.eventName===e&&r.listener===t)&&i.push(r);for(let r of i)ds(s,r,void 0)},us=s=>{s&&(s.forEach(e=>{e.isRemoved=!0}),s.length=0)},or=(s,e)=>s.listenerType===e.listenerType?s.priority===e.priority&&s.eventName===e.eventName&&s.listenerObject===e.listenerObject&&s.listener===e.listener:!1,ar=(s,e)=>{if(nr(s.listenerType))return e.find(t=>or(s,t))},cr=(s,e)=>{let t=ar(s,e);return t?(t.refCount+=1,t):(e.splice(rr(e,s),0,s),s)},lr=class{constructor(){y(this,"namedListeners");y(this,"catchEmAllListeners");y(this,"getListenersForEventName",s=>{let e=this.namedListeners.get(s);return e||(e=[],this.namedListeners.set(s,e)),e});this.namedListeners=new Map,this.catchEmAllListeners=[]}add(s){return cr(s,s.isCatchEmAll?this.catchEmAllListeners:this.getListenersForEventName(s.eventName))}remove(s,e,t=!1){if(e==null&&Array.isArray(s)){s.forEach(i=>this.remove(i,null,t));return}if(s==null||e==null&&ps(s)){this.removeAllListeners();return}if(e==null&&oi(s)){this.removeByEventName(s);return}if(s instanceof ci){this.removeByEventListener(s);return}if(t){this.removeByEventNameAndListenerObject(s,e);return}this.removeByListener(s,e)}removeByEventName(s){us(this.namedListeners.get(s)),this.namedListeners.delete(s)}removeByEventListener(s){s.isRemoved||(s.refCount-=1,!(s.refCount>=1)&&(s.isRemoved=!0,this.namedListeners.forEach((e,t)=>{ti(e,s),e.length===0&&this.namedListeners.delete(t)}),ti(this.catchEmAllListeners,s)))}removeByEventNameAndListenerObject(s,e){this.namedListeners.forEach((t,i)=>{hs(t,s,e),t.length===0&&this.namedListeners.delete(i)})}removeByListener(s,e){let t=typeof s=="object";this.namedListeners.forEach((i,r)=>{ds(i,s,e),t&&hs(i,void 0,s),i.length===0&&this.namedListeners.delete(r)}),ds(this.catchEmAllListeners,s,e),t&&hs(this.catchEmAllListeners,void 0,s)}removeAllListeners(){this.namedListeners.forEach(s=>us(s)),this.namedListeners.clear(),us(this.catchEmAllListeners)}forEach(s,e){let t=ei(this.catchEmAllListeners),i=ei(this.namedListeners.get(s));if(s===Ne||!i||i.length===0)t.forEach(e);else if(t.length===0)i.forEach(e);else{let r=i.length,o=t.length,a=0,c=0;for(;a<r||c<o;){if(a<r){let d=i[a];if(c>=o||d.priority>=t[c].priority){e(d),++a;continue}}c<o&&(e(t[c]),++c)}}}getSubscriptionCount(){let s=this.catchEmAllListeners.length;for(let e of this.namedListeners.values())s+=e.length;return s}},Ue=s=>!!(s&&s[ce]);function yt(s){if(Ue(s))return s;let e=new lr,t=new vs;return Yi(s,ce,{keeper:t,store:e}),s}var we={Max:Number.POSITIVE_INFINITY,Critical:1e9,High:1e6,Normal:0,Low:-1e4,Min:Number.NEGATIVE_INFINITY,AAA:1e9,BB:1e6,C:1e3,Default:0},hr=(s,e,t,i,r,o,a)=>{let c=s.add(new ci(t,i,r,o));return e.replayTo(t,c,a),c},li=(s,e,t,i)=>{let r=t.length,o=typeof t[0],a,c,d,w;if(r>=2&&r<=3&&o==="number"?(a=Ne,[c,d,w]=t):r>=3&&r<=4&&typeof t[1]=="number"?[a,c,d,w]=t:(c=we.Default,o==="string"||o==="symbol"||Array.isArray(t[0])?[a,d,w]=t:(a=Ne,[d,w]=t)),!d)throw ai&&Ji("called with insufficient arguments!",t),new Error("subscribeTo() called with insufficient arguments");let k=v=>B=>hr(s,e,B,v,d,w,i);return Array.isArray(a)?a.map(v=>Array.isArray(v)?k(v[1])(v[0]):k(c)(v)):k(c)(a)},ur=(s,e,t)=>{let i=[],r=li(s,e,t,i);return vs.publish(i),r},fr=(s,e,t)=>{let i=[];return{listeners:li(s,e,t,i),publishRetained:()=>vs.publish(i)}},si=s=>e=>{e.callAfterApply=()=>{s==null||s()}},hi=(s,e)=>Object.assign(()=>x(s,e),Array.isArray(e)?{listeners:e}:{listener:e}),ii=(s,e,t,i)=>{if(e===Ne)throw new Error("emit() must be called with a concrete event name \\u2014 '*' is reserved for subscribing to all events and cannot be emitted");let{store:r,keeper:o}=s[ce];r.forEach(e,a=>a.apply(e,t,i)),o.retain(e,t)},ui=(s,e,t,i)=>{Array.isArray(e)?e.forEach(r=>ii(s,r,t,i)):ii(s,e,t,i)},ri=(s,e,t,i)=>{if(e===Ne)throw new Error("emit() must be called with a concrete event name \\u2014 '*' is reserved for subscribing to all events and cannot be emitted");let r=s,o=r[e];if(typeof o=="function"){let c=o.apply(s,t);c!=null&&(i==null||i(c));return}let a=r.emit;if(typeof a=="function"){let c=a.apply(s,[e,...t]);c!=null&&(i==null||i(c))}},fi=(s,e,t,i)=>{Array.isArray(e)?e.forEach(r=>ri(s,r,t,i)):ri(s,e,t,i)},di=s=>s!=null&&typeof s=="object";function L(s,...e){let t=yt(s),{store:i,keeper:r}=t[ce];return hi(t,ur(i,r,e))}function A(s,...e){let t=yt(s),{store:i,keeper:r}=t[ce],{listeners:o,publishRetained:a}=fr(i,r,e),c=hi(t,o),d=!1,w=()=>{d||(c(),d=!0)};return Array.isArray(o)?o.forEach(si(w)):si(w)(o),a(),w}function dr(s,e){return new Promise(t=>{A(s,e,t)})}function x(s,e,t){if(!Ue(s))return;let{store:i,keeper:r}=s[ce],o=typeof e,a=t!=null&&(o==="string"||o==="symbol");i.remove(e,t,a),Array.isArray(e)?r.remove(e.filter(c=>typeof c=="string")):oi(e)&&r.remove(e)}function E(s,e,...t){Ue(s)?ui(s,e,t):di(s)&&fi(s,e,t)}function gr(s,e,...t){let i=[],r=o=>{i.push(o)};return Ue(s)?ui(s,e,t,r):di(s)&&fi(s,e,t,r),i=i.map(o=>Array.isArray(o)?Promise.all(o):Promise.resolve(o)),i.length>0?Promise.all(i):Promise.resolve()}function pt(s,e){let t=yt(s),{keeper:i}=t[ce];i.add(e)}function Ke(s,e){if(!Ue(s))throw new Error("object is not eventized");let{keeper:t}=s[ce];t.clear(e)}function yr(s,e){if(!Ue(s))throw new Error("object is not eventized");let{keeper:t}=s[ce];t.remove(e)}var pr=L,vr=A,mr=x,br=E,wr=gr,Er=dr,Sr=pt,Cr=Ke,kr=yr,_=(()=>{let s=(e={})=>yt(e);return s.inject=(e={})=>(e=yt(e),Object.assign(e,{on:(...t)=>pr(e,...t),once:(...t)=>vr(e,...t),onceAsync:t=>Er(e,t),off:(t,i)=>mr(e,t,i),emit:(t,...i)=>br(e,t,...i),emitAsync:(t,...i)=>wr(e,t,...i),retain:t=>Sr(e,t),retainClear:t=>Cr(e,t),unretain:t=>kr(e,t)}),e),s.is=Ue,s})();async function ms(s,e,t,i=!0){var o,a;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(c=>ms(s,c,t,!1)));let{registry:r}=s;if(e.define)for(let[c,d]of Object.entries(e.define))r.define(c,d);if(e.routes)for(let[c,d]of Object.entries(e.routes))r.appendRoute(c,d);await((a=(o=e.initialize)==null?void 0:o.call(e,{define:(c,d)=>r.define(c,d),kernel:s,registry:r}))!=null?a:Promise.resolve()),i&&s.upgradeEntities()}var te=Symbol.for("signal"),He=Symbol.for("effect"),gi=Symbol.for("destroySignal"),yi=Symbol.for("createEffect"),Ar=Symbol.for("destroyEffect"),et="value",Ss="mute",Cs="unmute",Oe="destroy",Pr="off",mt=Symbol.for("recall"),bt=_(),Pe=_(),_e=_(),Ei=_(),Ae=class{constructor(){y(this,"delayedEffects",[])}batch(e,t){let i=this.delayedEffects.length;for(let r=0;r<i;r++){let[o,a]=this.delayedEffects[r];if(!(o>t)){if(o===t){a.add(e);return}this.delayedEffects.splice(r,0,[t,new Set([e])]);return}}this.delayedEffects.push([t,new Set([e])])}flush(){this.run(),this.delayedEffects.length=0}run(){let e=new Set,t=[];try{t.push(L(_e,(i,r)=>{r===mt&&e.add(i)}),L(Ei,i=>{e.add(i)}));for(let[,i]of this.delayedEffects)for(let r of i)e.has(r)||E(_e,r,r,mt)}finally{for(let i of t)i()}}};y(Ae,"current");var Si=()=>Ae.current;function xe(s){let e=Ae.current;e?e=void 0:e=Ae.current=new Ae;try{s()}finally{e&&(Ae.current=void 0,e.run())}}var Or=0;function ks(){return Or>0}var bi;bi=He;var Gt=class{constructor(e){y(this,bi);y(this,"run",()=>{var e;return(e=this[He])==null?void 0:e.run()});y(this,"destroy",()=>{var e;(e=this[He])==null||e.destroy(),this[He]=void 0});this[He]=e,A(e,Oe,()=>{this[He]=void 0})}},bs=[],Ci=()=>bs.at(-1),xr=(s,e)=>{bs.push(s);try{return e()}finally{bs.pop()}};var Je=new WeakMap,vt=new Set,pi=new FinalizationRegistry(s=>{vt.has(s)&&s.clear()});var Q,Ee,q,le,Se,he,ue,K,je,Ye=class Ye{constructor(e){f(this,Q,new Set);f(this,Ee,new Set);f(this,q,new Map);f(this,le,new WeakMap);f(this,Se,new Map);f(this,he,new Set);f(this,ue,new Set);f(this,K);f(this,je);if(e!=null&&e instanceof Ye)return e;if(e!=null||(e=this),Je.has(e))return Je.get(e);g(this,je,new WeakRef(e)),Je.set(e,this),vt.add(this),e!==this&&pi.register(e,this,this),_(this)}static get(e){if(e!=null)return e instanceof Ye?e:Je.get(e)}static findOrCreate(e){if(e==null)throw new Error("Cannot create a group with a null object");return new Ye(e)}static destroy(e){console.warn("SignalGroup.destroy(obj) is deprecated. Use SignalGroup.delete(obj) instead."),Ye.delete(e)}static delete(e){var t;(t=Je.get(e))==null||t.clear()}static clear(){for(let e of[...vt])e.clear();vt.clear()}attachGroup(e){if(e===this)throw new Error("Cannot attach a group to itself");return n(this,Q).add(e),n(e,K)&&n(e,K)!==this&&n(n(e,K),Q).delete(e),g(e,K,this),e}detachGroup(e){return e!==this&&n(this,Q).has(e)&&(n(this,Q).delete(e),g(e,K,void 0)),e}attachSignal(e){let t=R(e);if(t!=null&&t.destroyed)throw new Error("Cannot attach a destroyed signal to a group");return t&&n(this,Ee).add(t),e}attachSignalByName(e,t){if(t){this.attachSignal(t);let i=R(t);n(this,q).set(e,i);let r=n(this,Se).get(e);r?r.add(i):n(this,Se).set(e,new Set([i])),n(this,le).has(i)?n(this,le).get(i).add(e):n(this,le).set(i,new Set([e]))}else n(this,q).delete(e);return t}hasSignal(e){var t;return n(this,q).has(e)||!!((t=n(this,K))!=null&&t.hasSignal(e))}signal(e){var t,i,r;return(r=(t=n(this,q).get(e))==null?void 0:t.object)!=null?r:(i=n(this,K))==null?void 0:i.signal(e)}detachSignal(e){let t=R(e);if(t&&(n(this,Ee).delete(t),n(this,le).has(t))){let i=n(this,le).get(t);for(let r of i){let o=n(this,Se).get(r);if(o){if(o.delete(t),o.size===0)n(this,q).delete(r),n(this,Se).delete(r);else if(n(this,q).get(r)===t){let a;for(let c of o)a=c;n(this,q).set(r,a)}}}i.clear(),n(this,le).delete(t)}return e}attachEffect(e){return n(this,he).add(e),e}runEffects(){for(let e of n(this,he))e.run();for(let e of n(this,Q))e.runEffects()}attachLink(e){if(e!=null&&e.isDestroyed)throw new Error("Cannot attach a destroyed link to a group");return e&&n(this,ue).add(e),e}detachLink(e){return e&&n(this,ue).delete(e),e}destroy(){console.warn("SignalGroup#destroy is deprecated. Use SignalGroup#clear instead."),this.clear()}off(){for(let e of n(this,Q))e.off();for(let e of n(this,he))e.destroy();n(this,he).clear();for(let e of n(this,ue))e.destroy();n(this,ue).clear();for(let e of n(this,Ee))e.destroyed||E(Pe,e.id,e.id,{detach:!0});E(this,Pr,this)}clear(){var e;E(this,Oe,this),x(this);for(let t of n(this,Q))t.clear();for(let t of n(this,he))t.destroy();for(let t of n(this,Ee))G(t);for(let t of n(this,ue))t.destroy();if(n(this,Q).clear(),n(this,Ee).clear(),n(this,q).clear(),n(this,Se).clear(),n(this,he).clear(),n(this,ue).clear(),(e=n(this,K))==null||e.detachGroup(this),n(this,je)){let t=n(this,je).deref();t!==void 0&&Je.delete(t),g(this,je,void 0)}vt.delete(this),pi.unregister(this)}};Q=new WeakMap,Ee=new WeakMap,q=new WeakMap,le=new WeakMap,Se=new WeakMap,he=new WeakMap,ue=new WeakMap,K=new WeakMap,je=new WeakMap;var ge=Ye,Et,St,$t=class{constructor(e="id",t=1){f(this,Et);f(this,St);g(this,Et,e),g(this,St,t)}make(){return Symbol(\`\${n(this,Et)}\${Tt(this,St)._++}\`)}};Et=new WeakMap,St=new WeakMap;var Mr=s=>s!=null&&typeof s.then=="function",Ce,V,fe,ke,de,Ve,Xe,Ze,j=class j{constructor(e,t){y(this,"id");y(this,"callback");f(this,Ce);f(this,V,new Set);f(this,fe,new Set);f(this,ke,new Map);f(this,de,new Set);y(this,"childEffects",[]);y(this,"curChildEffectSlot",0);y(this,"autorun",!0);y(this,"shouldRun",!0);y(this,"priority");f(this,Ve);f(this,Xe,!1);f(this,Ze,0);y(this,"run",()=>{if(n(this,Xe)||!this.shouldRun)return;let e=Si();if(e){e.batch(this.id,this.priority);return}if(n(this,Ze)>=j.maxDepth)throw new Error(\`[signalize] Effect \${this.id.toString()} exceeded maxDepth=\${j.maxDepth}: an effect callback recursively re-triggered itself (likely by writing a signal it depends on). Break the cycle, or raise EffectImpl.maxDepth if the recursion is intentional.\`);Tt(this,Ze)._++;try{if(this.runCleanupCallback(),this.destroyChildEffects(),this.curChildEffectSlot=0,this.shouldRun=!1,E(Ei,this.id,this.id),this.hasStaticDeps())g(this,Ce,this.callback());else{n(this,fe).clear();for(let t of n(this,V))n(this,fe).add(t);g(this,Ce,xr(this,this.callback)),this.cleanupLostSignals(),n(this,de).clear()}}finally{Tt(this,Ze)._--}});y(this,"destroy",()=>{n(this,Xe)||(E(this,Oe,this),x(this),E(_e,Ar,this),this.runCleanupCallback(),this.destroyChildEffects(),x(bt,this),x(_e,this),x(Pe,this),g(this,Xe,!0),n(this,V).clear(),n(this,fe).clear(),n(this,ke).clear(),n(this,de).clear(),--j.count)});var r,o;_(this),this.callback=e;let i;(t==null?void 0:t.attach)!=null&&(i=ge.findOrCreate(t.attach),i.attachEffect(this)),this.autorun=(r=t==null?void 0:t.autorun)!=null?r:!0,g(this,Ve,t!=null&&t.dependencies?t.dependencies.map(a=>{switch(typeof a){case"string":case"symbol":return i.signal(a);default:return a}}):void 0),this.id=j.idGen.make(),this.priority=(o=t==null?void 0:t.priority)!=null?o:0,L(_e,this.id,mt,this),++j.count}hasStaticDeps(){return n(this,Ve)!=null&&n(this,Ve).length>0}saveSignalsFromDeps(){for(let e of n(this,Ve))this.whenSignalIsRead(R(e).id)}static createEffect(e,t,i){let r=Array.isArray(t)?t:void 0,o=r?i!=null?i:{dependencies:r}:t;o&&r&&(o.dependencies=r);let a,c=Ci();return c!=null?(a=c.getCurrentChildEffect(),a==null&&(a=new j(e,o),c.attachChildEffect(a),E(_e,yi,a)),c.curChildEffectSlot++):(a=new j(e,o),E(_e,yi,a)),a.hasStaticDeps()?a.saveSignalsFromDeps():a.autorun&&a.run(),new Gt(a)}getCurrentChildEffect(){return this.childEffects[this.curChildEffectSlot]}attachChildEffect(e){this.childEffects.push(e)}[mt](){this.shouldRun=!0,this.autorun&&this.run()}whenSignalIsRead(e){n(this,fe).delete(e),n(this,V).has(e)||(n(this,V).add(e),n(this,ke).set(e,[L(bt,e,this.priority,mt,this),A(Pe,e,gi,this)]))}[gi](e,t){if(n(this,V).has(e)){if(t!=null&&t.detach){this.unsubscribeSignal(e),n(this,V).delete(e),n(this,de).delete(e),n(this,fe).delete(e),n(this,V).size===0&&this.destroy();return}n(this,de).has(e)||(n(this,de).add(e),this.unsubscribeSignal(e),n(this,de).size===n(this,V).size&&this.destroy())}}cleanupLostSignals(){for(let e of n(this,fe))this.unsubscribeSignal(e),n(this,V).delete(e)}destroyChildEffects(){for(let e of this.childEffects)e.destroy();this.childEffects.length=0}unsubscribeSignal(e){n(this,ke).has(e)&&(n(this,ke).get(e).forEach(t=>{t()}),n(this,ke).delete(e))}runCleanupCallback(){if(n(this,Ce)!=null){let e=n(this,Ce);g(this,Ce,void 0),Mr(e)?Promise.resolve(e).then(t=>{typeof t=="function"&&t()}):e()}}};Ce=new WeakMap,V=new WeakMap,fe=new WeakMap,ke=new WeakMap,de=new WeakMap,Ve=new WeakMap,Xe=new WeakMap,Ze=new WeakMap,y(j,"idGen",new $t("ef")),y(j,"count",0),y(j,"maxDepth",256);var ws=j,ye=ws.createEffect;var wt=new WeakMap,Lr=s=>{let e=wt.get(s);return e||(e={},wt.set(s,e)),e},Me=(s,e)=>{var t,i;return(i=(t=wt.get(s))==null?void 0:t.signals)==null?void 0:i.get(e)};var ki=(s,e,t)=>{var r;let i=Lr(s);(r=i.signals)!=null||(i.signals=new Map),i.signals.set(e,t)};function As(...s){for(let e of s)if(wt.has(e)){let t=wt.get(e);if(t.signals){for(let i of t.signals.values())G(i);t.signals.clear(),t.signals=void 0}}}function Ai(s){let e=R(We(s)?s:Me(...s));e!=null&&!e.muted&&!e.destroyed&&Es(e.id,e.value,{touch:!0})}function tt(s){var e,t;return We(s)?(e=R(s))==null?void 0:e.value:(t=R(Me(...s)))==null?void 0:t.value}var wi;wi=te;var Nt=class{constructor(e){y(this,wi);this[te]=e}get get(){return this[te].reader}get set(){return this[te].writer}get value(){return tt(this.get)}set value(e){this.set(e)}onChange(e){let{destroy:t}=ye(()=>e(this.value),[this.get]);return t}get muted(){return this[te].muted}set muted(e){this[te].muted=e}touch(){Ai(this)}destroy(){G(this)}},Rr=new $t("si"),vi=!1;function Tr(){vi||(vi=!0,console.warn("signalReader(callback) is deprecated and will be removed in a future release. Use Signal.onChange(callback) instead \\u2014 it returns an unsubscribe function for proper cleanup."))}function mi(s){var e;ks()||(e=Ci())==null||e.whenSignalIsRead(s)}function Es(s,e,t){ks()||E(bt,s,e,t)}var We=s=>s!=null&&s[te]!=null,Dr=s=>{let e=t=>{var i;return s.destroyed||(i=s.beforeRead)==null||i.call(s),t?(Tr(),ye(()=>(s.destroyed||mi(s.id),t(s.value)),[e])):s.destroyed||mi(s.id),s.value};return Object.defineProperty(e,te,{value:s}),e},H,_t=class _t{constructor(e,t){y(this,"id");y(this,"lazy");y(this,"compare");y(this,"beforeRead");y(this,"muted",!1);y(this,"destroyed",!1);f(this,H);y(this,"valueFn");y(this,"reader");y(this,"writer",(e,t)=>{var c,d,w;let i=(c=t==null?void 0:t.lazy)!=null?c:!1,r=(d=t==null?void 0:t.compare)!=null?d:this.compare,o=r!=null?r:((k,v)=>k===v);if((i!==this.lazy||i&&e!==this.valueFn||!i&&!o(e,n(this,H)))&&(i?(g(this,H,void 0),this.valueFn=e,this.lazy=!0):(g(this,H,e),this.valueFn=void 0,this.lazy=!1),!this.muted&&!this.destroyed)){Es(this.id,n(this,H));return}(w=t==null?void 0:t.touch)!=null&&w&&!this.muted&&!this.destroyed&&Es(this.id,n(this,H),{touch:!0})});y(this,"object");this.id=Rr.make(),++_t.instanceCount,this.lazy=e,this.lazy?(this.value=void 0,this.valueFn=t):(this.value=t,this.valueFn=void 0),this.reader=Dr(this),this.object=new Nt(this)}get[te](){return this}get value(){return this.lazy&&(g(this,H,this.valueFn()),this.valueFn=void 0,this.lazy=!1),n(this,H)}set value(e){g(this,H,e)}};H=new WeakMap,y(_t,"instanceCount",0);var Ut=_t,R=s=>s==null?void 0:s[te];function O(s=void 0,e){var i;let t;if(We(s))t=R(s);else{let r=(i=e==null?void 0:e.lazy)!=null?i:!1;t=new Ut(r,s),t.beforeRead=e==null?void 0:e.beforeRead,t.compare=e==null?void 0:e.compare}return(e==null?void 0:e.attach)!=null&&ge.findOrCreate(e.attach).attachSignal(t),t.object}var G=(...s)=>{for(let e of s){let t=R(e);t!=null&&!t.destroyed&&(t.destroyed=!0,t.beforeRead=void 0,--Ut.instanceCount,E(Pe,t.id,t.id))}};function jt(s,e){var a,c;let t=O(),i=(e==null?void 0:e.attach)!=null?ge.findOrCreate(e.attach):void 0;i!=null&&(e!=null&&e.name?i.attachSignalByName(e.name,t):i.attachSignal(t));let r=ye(()=>{xe(()=>{t.set(s())})},{autorun:!((a=e==null?void 0:e.lazy)!=null&&a),priority:(c=e==null?void 0:e.priority)!=null?c:we.C,attach:i}),o=R(t);return o.beforeRead=r.run,A(Pe,o.id,r.destroy),t.get}var z,st,Wt=class{constructor(e){f(this,z,!1);f(this,st);y(this,"source");y(this,"lastValue");y(this,"isDestroyed",!1);_(this),this.source=R(e),g(this,st,L(bt,this.source.id,(t,i)=>{!n(this,z)&&!this.isDestroyed&&((i==null?void 0:i.touch)===!0?this.touch():this.write())})),A(Pe,this.source.id,()=>this.destroy())}attach(e){let t=ge.findOrCreate(e);return t.attachLink(this),A(this,Oe,()=>{t.detachLink(this)}),t}nextValue(){return new Promise((e,t)=>{let i=[],r=()=>i.forEach(o=>{o()});i.push(A(this,et,o=>{r(),e(o)}),A(this,Oe,()=>{r(),t()}))})}asyncValues(e){return Vs(this,null,function*(){pt(this,et);try{let t=0;for(;!this.isDestroyed;)try{let i=yield new os(this.nextValue());if(e!=null&&e(i,t++))break;yield i}catch(i){break}}finally{Ke(this,et)}})}destroy(){var e;this.isDestroyed||((e=n(this,st))==null||e.call(this),g(this,st,void 0),E(this,Oe,this),Ke(this,et),x(this),this.lastValue=void 0,this.isDestroyed=!0,Object.freeze(this))}get isMuted(){return n(this,z)}mute(){return!this.isDestroyed&&!n(this,z)&&(g(this,z,!0),E(this,Ss,this)),this}unmute(){return!this.isDestroyed&&n(this,z)&&(g(this,z,!1),E(this,Cs,this)),this}toggleMute(){return this.isDestroyed||(g(this,z,!n(this,z)),E(this,n(this,z)?Ss:Cs,this)),n(this,z)}updateValue(e){if(!n(this,z)&&!this.isDestroyed){let{value:t}=this.source;e(t),E(this,et,t),this.lastValue=t}}};z=new WeakMap,st=new WeakMap;var Ps=class extends Wt{constructor(t,i){super(t);y(this,"target");this.target=R(i),A(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)})}},Os=class extends Wt{constructor(t,i){super(t);y(this,"target");this.target=i,this.touch()}touch(){return this.updateValue(t=>{this.target(t)}),this}write(){this.updateValue(t=>{this.target(t)})}},Vt=new Map;function J(s,e,t){let i=R(s),r=R(e),o=r!=null?r:e,a;if(Vt.has(i)){if(a=Vt.get(i),a.has(o))return a.get(o)}else a=new Map,Vt.set(i,a);let c=r!=null?new Ps(s,r):new Os(s,e),d=t==null?void 0:t.attach;return d&&c.attach(d),a.set(o,c),A(c,Oe,()=>{a.delete(o),a.size===0&&Vt.delete(i)}),c}var $,xs=class xs{constructor(){f(this,$,new Map)}static fromProps(e,t){let i=new xs,r=t?t.map(o=>[o,e[o]]):Object.entries(e);for(let[o,a]of r)n(i,$).set(o,O(a));return i}keys(){return n(this,$).keys()}signals(){return n(this,$).values()}entries(){return n(this,$).entries()}clear(){for(let e of n(this,$).values())e.destroy();n(this,$).clear()}has(e){return n(this,$).has(e)}get(e){if(!n(this,$).has(e)){let t=O();return n(this,$).set(e,t),t}return n(this,$).get(e)}update(e){e.size&&xe(()=>{for(let[t,i]of e.entries())this.get(t).set(i)})}updateFromProps(e,t){xe(()=>{let i=t?t.map(r=>[r,e[r]]):Object.entries(e);for(let[r,o]of i)this.get(r).set(o)})}};$=new WeakMap;var It=xs;var Qt=s=>s!=null?s:void 0;var Ms=Symbol("onCreate"),se=Symbol("onDestroy"),Pi=Symbol("onParentChanged"),qt=Symbol("onViewEvent");function Oi(s){return function(e,t){var o;let i=(s==null?void 0:s.name)||t.name,r=!!((o=s==null?void 0:s.readAsValue)!=null&&o);return{get(){let a=Me(this,i);if(a)return r?a.value:a.get()},set(a){var c;(c=Me(this,i))==null||c.set(a)},init(a){let c=O(a,s);return ki(this,i,c),ge.findOrCreate(this).attachSignalByName(i,c),c.value}}}}var zr=Object.create,Ls=Object.defineProperty,Br=Object.getOwnPropertyDescriptor,Li=(s,e)=>(e=Symbol[s])?e:Symbol.for("Symbol."+s),rt=s=>{throw TypeError(s)},Fr=(s,e,t)=>e in s?Ls(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,xi=(s,e)=>Ls(s,"name",{value:e,configurable:!0}),Gr=s=>{var e;return[,,,zr((e=s==null?void 0:s[Li("metadata")])!=null?e:null)]},Ri=["class","method","getter","setter","accessor","field","value","get","set"],Ct=s=>s!==void 0&&typeof s!="function"?rt("Function expected"):s,$r=(s,e,t,i,r)=>({kind:Ri[s],name:e,metadata:i,addInitializer:o=>t._?rt("Already initialized"):r.push(Ct(o||null))}),Ti=(s,e)=>Fr(e,Li("metadata"),s[3]),Mi=(s,e,t,i)=>{for(var r=0,o=s[e>>1],a=o&&o.length;r<a;r++)e&1?o[r].call(t):i=o[r].call(t,i);return i},Nr=(s,e,t,i,r,o)=>{var a,c,d,w,k,v=e&7,B=!!(e&8),M=!!(e&16),C=v>3?s.length+1:v?B?1:2:0,at=Ri[v+5],u=v>3&&(s[C-1]=[]),h=s[C]||(s[C]=[]),l=v&&(!M&&!B&&(r=r.prototype),v<5&&(v>3||!M)&&Br(v<4?r:{get[t](){return N(this,o)},set[t](m){return At(this,o,m)}},t));v?M&&v<4&&xi(o,(v>2?"set ":v>1?"get ":"")+t):xi(r,t);for(var p=i.length-1;p>=0;p--)w=$r(v,t,d={},s[3],h),v&&(w.static=B,w.private=M,k=w.access={has:M?m=>Ur(r,m):m=>t in m},v^3&&(k.get=M?m=>(v^1?N:Le)(m,r,v^4?o:l.get):m=>m[t]),v>2&&(k.set=M?(m,oe)=>At(m,r,oe,v^4?o:l.set):(m,oe)=>m[t]=oe)),c=(0,i[p])(v?v<4?M?o:l[at]:v>4?void 0:{get:l.get,set:l.set}:r,w),d._=1,v^4||c===void 0?Ct(c)&&(v>4?u.unshift(c):v?M?o=c:l[at]=c:r=c):typeof c!="object"||c===null?rt("Object expected"):(Ct(a=c.get)&&(l.get=a),Ct(a=c.set)&&(l.set=a),Ct(a=c.init)&&u.unshift(a));return v||Ti(s,r),l&&Ls(r,t,l),M?v^4?o:l:r},Rs=(s,e,t)=>e.has(s)||rt("Cannot "+t),Ur=(s,e)=>Object(e)!==e?rt('Cannot use the "in" operator on this value'):s.has(e),N=(s,e,t)=>(Rs(s,e,"read from private field"),t?t.call(s):e.get(s)),Kt=(s,e,t)=>e.has(s)?rt("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(s):e.set(s,t),At=(s,e,t,i)=>(Rs(s,e,"write to private field"),i?i.call(s,t):e.set(s,t),t),Le=(s,e,t)=>(Rs(s,e,"access private method"),t),Di,ie,Re,Pt,Ts,pe,Ht,kt,it="value";Di=[Oi({name:it})];var re=class{constructor(e){Kt(this,pe),Kt(this,ie,[]),Kt(this,Re),Kt(this,Ts,Mi(Pt,8,this)),Mi(Pt,11,this),this.value$=void 0,pt(this,it),this.value$=Me(this,it),this.value$.onChange(t=>E(this,it,t)),e&&this.add(...e)}add(...e){return N(this,ie).push(...e),Le(this,pe,kt).call(this),Le(this,pe,Ht).call(this,e)}unshift(...e){return N(this,ie).unshift(...e),Le(this,pe,kt).call(this),Le(this,pe,Ht).call(this,e)}remove(...e){Le(this,pe,Ht).call(this,e)()}clear(){N(this,ie).length=0,Le(this,pe,kt).call(this)}dispose(){var e;this.clear(),(e=N(this,Re))==null||e.destroy(),At(this,Re,void 0),Ke(this,it),x(this),this.value$.destroy(),As(this)}};Pt=Gr(null);ie=new WeakMap;Re=new WeakMap;Ts=new WeakMap;pe=new WeakSet;Ht=function(s){return()=>{for(let e of s){let t=N(this,ie).indexOf(e);t!==-1&&N(this,ie).splice(t,1)}Le(this,pe,kt).call(this)}};kt=function(){var s;(s=N(this,Re))==null||s.destroy(),N(this,ie).length===0?(At(this,Re,void 0),this.value=void 0):(At(this,Re,ye(()=>{let e;for(let t of N(this,ie)){let i=tt(t);if(i!=null){e=i;break}}this.value=e},N(this,ie))),N(this,Re).run())};Nr(Pt,4,"value",Di,re,Ts);Ti(Pt,re);re.Value=it;var Ds=new Map,zs=!1,_r=(s,e)=>{Ds.set(s,e),zs||(zs=!0,queueMicrotask(()=>{zs=!1;let t=Array.from(Ds.entries());Ds.clear();for(let[i,r]of t)i.set(r)}))},Y,Ie,Te,X,De,W,T,ve,I,nt,Qe,me,P,Bs,Fs,Gs,ze,Ot,Jt,Yt=class{constructor(e,t){f(this,P);f(this,Y);f(this,Ie);f(this,Te,new It);f(this,X,new Map);f(this,De,new Map);f(this,W);f(this,T);f(this,ve,new Set);f(this,I,[]);f(this,nt,0);f(this,Qe,!1);f(this,me);f(this,ze);g(this,Y,e),g(this,Ie,t),A(this,se,we.Min,this)}get kernel(){return n(this,Y)}get uuid(){return n(this,Ie)}get order(){return n(this,nt)}set order(e){n(this,nt)!==e&&(g(this,nt,e),n(this,W)&&this.parent.resortChildren())}get parentUuid(){return n(this,W)||void 0}set parentUuid(e){if(n(this,W)!==e){let t=e?n(this,Y).getEntity(e):void 0;this.removeFromParent(),g(this,W,e||void 0),g(this,T,t),n(this,T)&&n(this,T).addChild(this),S(this,P,Fs).call(this)}}get parent(){return!n(this,T)&&n(this,W)&&g(this,T,n(this,Y).getEntity(n(this,W))),n(this,T)}set parent(e){this.parentUuid=e==null?void 0:e.uuid}get hasParent(){return!!n(this,W)}get children(){return n(this,I)}traverse(e){e(this);for(let t of n(this,I))t.traverse(e)}[se](){var e,t;n(this,Te).clear(),x(this),(e=n(this,me))==null||e.call(this);for(let i of n(this,De).values())i.cleanup(),i.signal.destroy();n(this,De).clear();for(let i of n(this,X).values())i.context.set(void 0),i.unsubscribePathValue(),(t=i.unsubscribeFromParent)==null||t.call(i),i.valuePath.dispose(),i.inherited.destroy(),i.provide.destroy(),i.context.destroy();g(this,W,void 0),g(this,T,void 0),n(this,ve).clear(),n(this,I).length=0}addChild(e){var t;if(n(this,I).length===0){n(this,ve).add(e.uuid),n(this,I).push(e);return}if(n(this,ve).has(e.uuid))throw new Error(\`child with uuid: \${e.uuid} already exists! parentUuid: \${this.uuid}\`);n(this,ve).add(e.uuid),n(this,I).push(e),this.resortChildren();for(let[,i]of n(e,X))S(t=e,P,Jt).call(t,i)}resortChildren(){n(this,I).sort((e,t)=>e.order-t.order)}removeChild(e){n(this,ve).has(e.uuid)&&(n(this,ve).delete(e.uuid),n(this,I).splice(n(this,I).indexOf(e),1))}removeFromParent(){if(n(this,T)){n(this,T).removeChild(this),g(this,T,void 0),g(this,W,void 0);for(let[,e]of n(this,X))e.unsubscribeFromParent&&(e.unsubscribeFromParent(),e.unsubscribeFromParent=void 0);S(this,P,Bs).call(this)}}get autoDestructionOnParentRemoval(){return n(this,Qe)}set autoDestructionOnParentRemoval(e){n(this,Qe)!==e&&(g(this,Qe,e),S(this,P,Fs).call(this))}reSubscribeToParentContexts(){for(let[,e]of n(this,X))S(this,P,Jt).call(this,e)}dispatchMessageToView(e,t,i,r=!1){n(this,Y).dispatchMessageToView({uuid:n(this,Ie),type:e,data:t,transferables:i,traverseChildren:r})}dispatchViewEvents(e){for(let{type:t,data:i}of e)E(this,qt,t,i)}dispatchViewEvent(e,t){this.dispatchViewEvents([{type:e,data:t}])}getPropertyReader(e){return S(this,P,Gs).call(this,e).get}getPropertyWriter(e){return S(this,P,Gs).call(this,e).set}setProperties(e){this.clearTruthyPropsCache(),xe(()=>{for(let[t,i]of e)this.setProperty(t,i)})}setProperty(e,t){this.getPropertyWriter(e)(t)}getProperty(e){return tt(this.getPropertyReader(e))}propKeys(){return Array.from(n(this,Te).keys())}propEntries(){return Array.from(n(this,Te).entries()).map(([e,t])=>[e,t.value])}clearTruthyPropsCache(){g(this,ze,void 0)}truthyProps(){if(n(this,ze))return n(this,ze).size?n(this,ze):void 0;let e=new Set;for(let[t,i]of n(this,Te).entries())if(typeof t=="string"){let r=i.value;r!=null&&r!==!1&&r!==""&&e.add(t)}return g(this,ze,e),e.size?e:void 0}hasContext(e){return n(this,X).has(e)}useContext(e){return S(this,P,Ot).call(this,e).context.get}useParentContext(e){return S(this,P,Ot).call(this,e).inherited.get}provideContext(e){return S(this,P,Ot).call(this,e).provide}provideGlobalContext(e){if(n(this,De).has(e))return n(this,De).get(e).signal;let t=n(this,Y).findOrCreateRootContext(e),i=O(),r=t.add(i);return n(this,De).set(e,{cleanup:r,signal:i}),i}};Y=new WeakMap,Ie=new WeakMap,Te=new WeakMap,X=new WeakMap,De=new WeakMap,W=new WeakMap,T=new WeakMap,ve=new WeakMap,I=new WeakMap,nt=new WeakMap,Qe=new WeakMap,me=new WeakMap,P=new WeakSet,Bs=function(){n(this,me)&&(n(this,me).call(this),g(this,me,void 0))},Fs=function(){S(this,P,Bs).call(this),n(this,Qe)&&n(this,T)&&g(this,me,A(n(this,T),se,we.Max,()=>{g(this,me,void 0),n(this,Y).destroyEntity(n(this,Ie))}))},Gs=function(e){return n(this,Te).get(e)},ze=new WeakMap,Ot=function(e){if(n(this,X).has(e))return n(this,X).get(e);let t=O(),i=O(),r=O(),o=new re([i,t]),a=L(o,re.Value,d=>{_r(r,d)}),c={name:e,inherited:t,provide:i,context:r,valuePath:o,unsubscribePathValue:a};return n(this,X).set(e,c),S(this,P,Jt).call(this,c),c},Jt=function(e){var t,i;if((t=e.unsubscribeFromParent)==null||t.call(e),e.unsubscribeFromParent=void 0,this.parent){let r=S(i=this.parent,P,Ot).call(i,e.name),o=J(r.context,e.inherited);e.unsubscribeFromParent=o.destroy.bind(o)}else{let r=n(this,Y).findOrCreateRootContext(e.name),o=J(r.value$,e.inherited);e.unsubscribeFromParent=o.destroy.bind(o)}};function zi(s,e){s.indexOf(e)===-1&&s.push(e)}var Bi=s=>{let e=s.split("@").map(t=>t.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]}},Xt=(s,e)=>{for(let t of e)s.add(t)},jr=(s,e)=>{if(s!=null)for(let t of s.constructors)e.add(t)},Be,ne,be,xt=class{constructor(){f(this,Be,new Map);f(this,ne,new Map);f(this,be,new Map)}static get(e){return e!=null?e:Vr}define(e,t){let i=n(this,Be).get(e);i?zi(i.constructors,t):n(this,Be).set(e,{token:e,constructors:[t]})}appendRoute(e,t){let i=Bi(e);if(i){let r=n(this,be).get(i.key);r?Xt(r.routes,t):n(this,be).set(i.key,{routes:new Set(t),token:i.token})}else{let r=n(this,ne).get(e);r?Xt(r,t):n(this,ne).set(e,new Set(t))}}clearRoute(e){let t=Bi(e);t?n(this,be).delete(t.key):n(this,ne).delete(e)}findTokensByRoute(e,t){var o;let i=new Set([e]),r=Array.from((o=n(this,ne).get(e))!=null?o:[]);for(let a=r.shift();a!==void 0;a=r.shift()){if(i.has(a))continue;i.add(a);let c=n(this,ne).get(a);c&&r.push(...Array.from(c).filter(d=>!i.has(d)))}if(t){for(let c of t){let d=n(this,be).get(c);d&&Xt(i,d.routes)}let a;do{a=i.size;for(let c of new Set(i))for(let d of t){let w=n(this,be).get(\`\${c}@\${d}\`);w&&Xt(i,w.routes)}}while(a!==i.size)}return i}findConstructors(e,t){let i=this.findTokensByRoute(e,t),r=new Set;for(let o of i)jr(n(this,Be).get(o),r);return r.size>0?Array.from(r):void 0}hasToken(e){return n(this,Be).has(e)}hasRoute(e){return n(this,ne).has(e)}clear(){n(this,Be).clear(),n(this,ne).clear(),n(this,be).clear()}};Be=new WeakMap,ne=new WeakMap,be=new WeakMap;var Vr=new xt;var Fi=s=>s.displayName||s.name,Gi=!1,$i=!1,Ni=!1,Ui=!1,_i=!1,U,Z,qe,ot,ee,Fe,Mt,$s,Zt=class{constructor(e){f(this,Mt);f(this,U);f(this,Z);f(this,qe);f(this,ot);f(this,ee);f(this,Fe);this.logger=new Ft("Kernel"),g(this,U,new Map),g(this,Z,new Set),g(this,qe,[]),g(this,ot,[]),g(this,ee,!0),g(this,Fe,new Map),_(this),this.registry=xt.get(e)}getEntity(e){return S(this,Mt,$s).call(this,e).entity}hasEntity(e){return n(this,U).has(e)}traverseLevelOrderBFS(e=!1){if(n(this,ee)){let t=new Map,i=(r,o)=>{let a=this.getEntity(r),c=t.get(o);c?c.push(a):t.set(o,[a]);for(let d of a.children)i(d.uuid,o+1)};n(this,Z).forEach(r=>{i(r,0)}),g(this,qe,Array.from(t.entries()).sort((r,o)=>r[0]-o[0]).flatMap(([,r])=>r)),g(this,ot,n(this,qe).slice().reverse()),g(this,ee,!1)}return e?n(this,ot):n(this,qe)}getEntityGraph(){return Array.from(n(this,Z)).map(e=>this.getEntityGraphNode(e)).filter(e=>e!==void 0)}getEntityGraphNode(e){let t=n(this,U).get(e);if(t===void 0)return;let{token:i,entity:r}=t;return{token:i,entity:r,props:Object.fromEntries(r.propEntries()),children:r.children.map(o=>this.getEntityGraphNode(o.uuid)).filter(o=>o!==void 0)}}upgradeEntities(){let e=new Map;for(let t of this.traverseLevelOrderBFS(!0))this.hasEntity(t.uuid)&&e.set(t.uuid,this.updateShadowObjects(t.uuid,2));for(let t of this.traverseLevelOrderBFS(!1))this.hasEntity(t.uuid)&&this.updateShadowObjects(t.uuid,1,e.get(t.uuid));e.clear()}run(e){this.logger.isDebug&&this.logger.debug("sync",e),xe(()=>{for(let t of e.changeTrail)this.parse(t)})}parse(e){switch(e.type){case ae.CreateEntities:this.createEntity(e.uuid,e.token,e.parentUuid,e.order,e.properties,e.autoDestructionOnParentRemoval),g(this,ee,!0);break;case ae.DestroyEntities:this.destroyEntity(e.uuid),g(this,ee,!0);break;case ae.SetParent:this.setParent(e.uuid,e.parentUuid,e.order),g(this,ee,!0);break;case ae.UpdateOrder:this.updateOrder(e.uuid,e.order),g(this,ee,!0);break;case ae.ChangeProperties:this.changeProperties(e.uuid,e.properties);break;case ae.ChangeToken:this.changeToken(e.uuid,e.token);break;case ae.SendEvents:this.dispatchEventsToEntity(e.uuid,e.events);break}}createEntity(e,t,i,r=0,o,a=!1){let c=new Yt(this,e);c.order=r;let d={token:t,entity:c,usedConstructors:new Map};n(this,U).set(e,d),i&&(c.parentUuid=i),c.autoDestructionOnParentRemoval=a,c.hasParent||n(this,Z).add(e),o&&c.setProperties(o),this.createShadowObjects(d)}destroyEntity(e){let t=n(this,U).get(e);if(t===void 0)return;let{entity:i,usedConstructors:r}=t,o=[...i.children];for(let a of o)a.autoDestructionOnParentRemoval?this.destroyEntity(a.uuid):(a.removeFromParent(),n(this,Z).add(a.uuid));i.removeFromParent(),E(i,se,i),r.clear(),n(this,U).delete(i.uuid),n(this,Z).delete(i.uuid),g(this,ee,!0)}setParent(e,t,i){let r=this.getEntity(e),o=i!=null?i:r.order;if(!(r.parentUuid===t&&r.order===o)){if(t&&!n(this,U).has(t))throw new Error(\`entity with uuid "\${t}" not found!\`);r.removeFromParent(),r.order=o,r.parentUuid=t,r.hasParent?n(this,Z).delete(e):n(this,Z).add(e),r.reSubscribeToParentContexts(),queueMicrotask(()=>{this.logger.isDebug&&this.logger.debug("entity.onParentChanged",{uuid:e,parentUuid:t,order:o,entity:r}),E(r,Pi,r)})}}updateOrder(e,t){this.getEntity(e).order=t}dispatchEventsToEntity(e,t){var i;(i=this.getEntity(e))==null||i.dispatchViewEvents(t)}changeProperties(e,t){this.getEntity(e).setProperties(t),this.updateShadowObjects(e)}changeToken(e,t){let i=n(this,U).get(e);i!==void 0&&i.token!==t&&(i.token=t,this.updateShadowObjects(e))}dispatchMessageToView(e){queueMicrotask(()=>{E(this,ut,e)})}updateShadowObjects(e,t=0,i){let r=S(this,Mt,$s).call(this,e);i!=null||(i=new Set(this.registry.findConstructors(r.token,r.entity.truthyProps())));let o=t===0||t===2,a=t===0||t===1;if(o){for(let[c,d]of r.usedConstructors)if(!i.has(c)){r.usedConstructors.delete(c);for(let w of d)this.destroyShadowObject(w,r.entity)}}if(a)for(let c of i)r.usedConstructors.has(c)||this.constructShadowObject(c,r);return i}constructShadowObject(e,t){let i=new Set,r=new Set,o=new Map,a=new Map,c=new Map,d=new Map,w=new Map,k=new Map,v=new Map,B=new Map,M=(u,h)=>{!_i&&h!=null&&typeof h=="function"&&(console.warn('[shadow-objects] Deprecation Warning: The "isEqual" option of "useProperty()" is now passed as {compare} argument. Please update your code accordingly.'),_i=!0);let l=typeof h=="function"?{compare:h}:h,p=v.get(u);if(p===void 0){p=O(void 0,l).get,v.set(u,p),B.set(u,l==null?void 0:l.compare);let m=J(t.entity.getPropertyReader(u),p);r.add(m.destroy.bind(m))}else(l==null?void 0:l.compare)!=null&&B.get(u)!==l.compare&&console.warn(\`[shadow-objects] useProperty("\${u}"): the cached signal already exists with a different (or no) {compare} function \\u2014 the new options are ignored. Pass options only on the first call per property.\`);return p},C=_(new e({entity:t.entity,provideContext(u,h,l){var oe;!Gi&&l!=null&&typeof l=="function"&&(console.warn('[shadow-objects] Deprecation Warning: The "isEqual" option of "provideContext()" is now passed as {compare} argument. Please update your code accordingly.'),Gi=!0);let p=typeof l=="function"?{compare:l}:l,m=w.get(u);if(m==null){let ct=We(h),ss=ct?void 0:Qt(h);if(m=O(ss,p!=null&&p.compare?{compare:p.compare}:void 0),ct){let ht=J(h,m);r.add(ht.destroy.bind(ht))}let lt=J(m,t.entity.provideContext(u));r.add(lt.destroy.bind(lt)),w.set(u,m)}return m!=null&&((oe=p==null?void 0:p.clearOnDestroy)==null||oe)&&r.add(()=>{m.set(void 0)}),m},provideGlobalContext(u,h,l){var oe;!$i&&l!=null&&typeof l=="function"&&(console.warn('[shadow-objects] Deprecation Warning: The "isEqual" option of "provideGlobalContext()" is now passed as {compare} argument. Please update your code accordingly.'),$i=!0);let p=typeof l=="function"?{compare:l}:l,m=k.get(u);if(m==null){let ct=We(h),ss=ct?void 0:Qt(h);if(m=O(ss,p!=null&&p.compare?{compare:p.compare}:void 0),ct){let ht=J(h,m);r.add(ht.destroy.bind(ht))}let lt=J(m,t.entity.provideGlobalContext(u));r.add(lt.destroy.bind(lt)),k.set(u,m)}return m!=null&&((oe=p==null?void 0:p.clearOnDestroy)==null||oe)&&r.add(()=>{m.set(void 0)}),m},useContext(u,h){!Ni&&h!=null&&typeof h=="function"&&(console.warn('[shadow-objects] Deprecation Warning: The "isEqual" option of "useContext()" is now passed as {compare} argument. Please update your code accordingly.'),Ni=!0);let l=typeof h=="function"?{compare:h}:h,p=o.get(u);if(p===void 0){p=O(void 0,l).get,o.set(u,p),a.set(u,l==null?void 0:l.compare);let m=J(t.entity.useContext(u),p);r.add(m.destroy.bind(m))}else(l==null?void 0:l.compare)!=null&&a.get(u)!==l.compare&&console.warn(\`[shadow-objects] useContext("\${String(u)}"): the cached signal already exists with a different (or no) {compare} function \\u2014 the new options are ignored. Pass options only on the first call per context.\`);return p},useParentContext(u,h){!Ui&&h!=null&&typeof h=="function"&&(console.warn('[shadow-objects] Deprecation Warning: The "isEqual" option of "useParentContext()" is now passed as {compare} argument. Please update your code accordingly.'),Ui=!0);let l=typeof h=="function"?{compare:h}:h,p=c.get(u);if(p===void 0){p=O(void 0,l).get,c.set(u,p),d.set(u,l==null?void 0:l.compare);let m=J(t.entity.useParentContext(u),p);r.add(m.destroy.bind(m))}else(l==null?void 0:l.compare)!=null&&d.get(u)!==l.compare&&console.warn(\`[shadow-objects] useParentContext("\${String(u)}"): the cached signal already exists with a different (or no) {compare} function \\u2014 the new options are ignored. Pass options only on the first call per parent context.\`);return p},dispatchMessageToView(u,h,l,p=!1){t.entity.dispatchMessageToView(u,h,l,p)},useProperty:M,useProperties(u){let h={};for(let l in u)Object.hasOwn(u,l)&&(h[l]=M(u[l]));return h},createResource(u,h){let l=O(),p=ye(()=>{let m=Qt(u());return l.set(m),m!==void 0&&h?()=>{h(m),l.set(void 0)}:()=>{l.set(void 0)}});return r.add(()=>{p.destroy(),l.set(void 0),G(l)}),l},createEffect(...u){let h=ye(...u);return r.add(h.destroy),h},createSignal(...u){let h=O(...u);return r.add(()=>{G(h)}),h},createMemo(...u){let h=jt(...u);return r.add(()=>{G(h)}),h},on(...u){let[h]=u;if(typeof h=="string"||typeof h=="symbol"||Array.isArray(h)){let p=L(t.entity,...u);return r.add(p),p}let l=L(...u);return r.add(l),Object.assign(()=>{r.delete(l),l()},l)},once(...u){let[h]=u;if(typeof h=="string"||typeof h=="symbol"||Array.isArray(h)){let p=A(t.entity,...u);return r.add(p),p}let l=A(...u);return r.add(l),Object.assign(()=>{r.delete(l),l()},l)},emit(...u){let[h]=u;typeof h=="string"||typeof h=="symbol"||Array.isArray(h)?E(t.entity,...u):E(...u)},onViewEvent(u){let h=L(t.entity,qt,(l,p)=>{u(l,p)});r.add(h)},onDestroy(u){i.add(u)}}));this.logger.isInfo&&this.logger.info("create shadow-object",Fi(e),{shadowObject:C,entity:t.entity}),A(t.entity,se,we.Low,()=>{this.logger.isInfo&&this.logger.info("destroy shadow-object",Fi(e),{shadowObject:C,entity:t.entity});for(let h of i)h();for(let h of r)h();for(let h of o.values())G(h);for(let h of c.values())G(h);for(let h of v.values())G(h);for(let h of w.values())G(h);for(let h of k.values())G(h);i.clear(),r.clear(),o.clear(),c.clear(),v.clear(),w.clear(),k.clear();let u=t.usedConstructors.get(e);u&&(u.delete(C),u.size===0&&t.usedConstructors.delete(e))});let at=t.usedConstructors.get(e);return at?at.add(C):t.usedConstructors.set(e,new Set([C])),this.attachShadowObject(C,t.entity),C}createShadowObjects(e){var t;(t=this.registry.findConstructors(e.token,e.entity.truthyProps()))==null||t.forEach(i=>{this.constructShadowObject(i,e)})}findShadowObjects(e){let t=n(this,U).get(e);if(t===void 0)return[];let{usedConstructors:i}=t;return Array.from(new Set(Array.from(i.values()).flatMap(r=>Array.from(r))))}attachShadowObject(e,t){L(t,e),typeof e[Ms]=="function"&&e[Ms](t)}destroyShadowObject(e,t){typeof e[se]=="function"&&e[se](t),E(e,se,t),x(t,e)}findOrCreateRootContext(e){let t=n(this,Fe).get(e);return t||(t=new re,n(this,Fe).set(e,t)),t}destroy(){for(let e of n(this,Fe).values())e.dispose();n(this,Fe).clear();for(let e of this.traverseLevelOrderBFS().reverse())this.destroyEntity(e.uuid)}};U=new WeakMap,Z=new WeakMap,qe=new WeakMap,ot=new WeakMap,ee=new WeakMap,Fe=new WeakMap,Mt=new WeakSet,$s=function(e){let t=n(this,U).get(e);if(t===void 0)throw new Error(\`entity with uuid "\${e}" not found!\`);return t};var ji=s=>(typeof s=="string"&&(s=new URL(s,globalThis.location.href)),s.toString());var Lt,Ge,Vi,Wi,Ii,es=class{constructor(e){f(this,Ge);f(this,Lt,new Set);var t,i;this.kernel=(t=e==null?void 0:e.kernel)!=null?t:new Zt,this.postMessage=(i=e==null?void 0:e.postMessage)!=null?i:self.postMessage.bind(self),L(this.kernel,ut,"onMessageToView",this)}route(e){var t;switch(e.data.type){case Ws:S(this,Ge,Vi).call(this,e.data);break;case Is:S(this,Ge,Wi).call(this,e.data);break;case Qs:S(this,Ge,Ii).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,i=js(r,["transferables"]);this.postMessage({type:ut,data:i},{transfer:t})}};Lt=new WeakMap,Ge=new WeakSet,Vi=async function(e){let t=e.importModule;try{if(!t)throw new Error('missing "importModule" url');let i=await import(ji(t));i[zt]?(await ms(this.kernel,i[zt],n(this,Lt)),this.postMessage({type:Dt,url:t})):this.postMessage({type:Dt,url:t,error:\`module has no "\${zt}" export\`})}catch(i){console.error("[MessageRouter] failed to import module",i),this.postMessage({type:Dt,url:t,error:\`\${i}\`})}},Wi=function(e){try{this.kernel.run(e)}catch(t){console.error("[MessageRouter] failed to apply change trail",t),this.postMessage({type:as,serial:e.serial,error:\`\${t}\`})}e.serial&&this.postMessage({type:as,serial:e.serial})},Ii=function(e){console.debug("[MessageRouter] on destroy",e),x(this.kernel,this),n(this,Lt).clear(),this.postMessage({type:Ks})};var ts=class{constructor(){this.onmessage=e=>{var t;e.data.type===F?globalThis[D]=e.data.config:((t=this.router)!=null||(this.router=new es),this.router.route(e))}}start(){self.addEventListener("message",this.onmessage),self.postMessage({type:qs})}};console.debug("@spearwolf/shadow-objects/WorkerRuntime: hello!");var Wr=new ts;Wr.start();
|
|
21
|
+
var Rt="shaeRequestEntParent",hs="shaeReRequestEntParent",Pt="shaeReRequestEntHost",xi="shae-worker",Oi="shae-ent",Mi="shae-prop",de="token",J="forward-custom-events",Li="auto-destruct";var ke="local",zi="no-autostart",cs="no-structured-clone",re="auto-sync";var Di="load-timeout",Wi="configure-timeout",$i="change-trail-timeout",Ni="destroy-timeout",us="name",ds="value",fs="type",gs="no-trim";var V="*",Ho=1,fr=2,gr=4,pr=Symbol.for("eventize"),yr=6,Yo="[eventize]",Ae=s=>s===V,vr=s=>{let e=s==="emitted"?"emit":"retain";throw new Error(`${e}() must be called with a concrete event name \u2014 '*' is reserved for subscribing to all events and cannot be ${s}`)},Te=s=>{switch(typeof s){case"string":case"symbol":return!0;default:return!1}},mr=s=>s!=null&&(typeof s=="object"||typeof s=="function"),Ko=s=>Array.isArray(s),Qo=Object.prototype,Jo=(()=>{let s={},e=Function.prototype;for(let t of Reflect.ownKeys(Function.prototype))try{s[t]=e[t]}catch{}return s})(),Xo=(s,e)=>{if(e==="constructor"||e==="__proto__")return;let t=s[e];if(t!==void 0&&t!==Qo[e])return t===Jo[e]?void 0:t},Zo=(s,e)=>{let t=new Array(e.length+1);t[0]=s;for(let r=0;r<e.length;++r)t[r+1]=e[r];return t},ea=s=>s,vs=(s,e,t,r)=>{if(typeof e=="function"){let i=e.apply(s,t);return i!=null&&r?.(i),!0}return!1},ta=(s,e,t,r)=>{let i=s.emit;return typeof i=="function"&&vs(s,i,Zo(e,t),r)},ms=(s,e,t,r)=>vs(s,Xo(s,e),t,r)||ta(s,e,t,r),sa=typeof console<"u",fe=sa?console[typeof console.warn=="function"?"warn":"log"].bind(console,Yo):()=>{},ra=(s,e,t)=>(Object.defineProperty(s,e,{value:t,configurable:!1}),s),ia=0,na=(s,e)=>s.order-e.order,rt=s=>()=>{throw new Error(`EventKeeper: ${s} is the shared empty stand-in \u2014 replace it, never mutate it`)},xt=Object.freeze(Object.defineProperties(new Map,{set:{value:rt("events")},delete:{value:rt("events")},clear:{value:rt("events")}})),ps=Object.freeze(Object.defineProperties(new Set,{add:{value:rt("eventNames")},delete:{value:rt("eventNames")},clear:{value:rt("eventNames")}})),oa=s=>{if(s.length!==0){s.sort(na);for(let e of s)try{e.replay()}catch(t){fe("a retained replay threw; the batch continues. event:",e.eventName,t)}}},aa=s=>e=>{typeof e?.then=="function"&&e.then(void 0,t=>{fe("a retained replay rejected; the batch continues. event:",s,t)})},la=class{events=xt;eventNames=ps;mutableEvents(){return this.events===xt&&(this.events=new Map),this.events}mutableEventNames(){return this.eventNames===ps&&(this.eventNames=new Set),this.eventNames}get retainedCount(){return this.events.size}retainedNames(){return Array.from(this.eventNames)}add(s){if(Array.isArray(s)){if(s.length===0)return;let e=this.mutableEventNames();s.forEach(t=>e.add(t))}else this.mutableEventNames().add(s)}remove(s){if(this.eventNames.size!==0){let e=this.eventNames;Array.isArray(s)?s.forEach(t=>e.delete(t)):e.delete(s),this.eventNames.size===0&&(this.eventNames=ps)}this.clear(s)}clear(s){if(this.events.size===0)return;let e=this.events;Array.isArray(s)?s.forEach(t=>e.delete(t)):e.delete(s),this.events.size===0&&(this.events=xt)}removeAll(){this.eventNames=ps,this.events=xt}clearAll(){this.events=xt}retain(s,e){this.eventNames.size!==0&&this.eventNames.has(s)&&this.mutableEvents().set(s,{args:e,order:ia++})}hasRetainedFor(s){return this.events.size!==0&&(Ae(s)||this.events.has(s))}replayTo(s,e,t=[]){if(Ae(s))this.events.forEach((r,i)=>{Ae(i)||this.replayTo(i,e,t)});else{let r=this.events.get(s);r!=null&&t.push({order:r.order,eventName:s,replay:()=>{let i=this.events.get(s);i!==void 0&&e.apply(s,i.args,aa(s))}})}return t}},ha=s=>s!=null,ca=s=>s!=null&&typeof s=="object",Mt=s=>{switch(typeof s){case"function":return Ho;case"string":case"symbol":return fr;case"object":return s===null?void 0:gr;default:return}},ua=0,da=()=>++ua,Hi=0,fa=()=>({settled:!1,members:[],sequence:Hi++,onSettled:void 0}),ga=class{id;eventName;isCatchEmAll;priority;listener;listenerObject;listenerType;callAfterApply;isRemoved;refCount;onceObligations;constructor(s,e,t,r=null){this.id=da(),this.eventName=s,this.isCatchEmAll=Ae(s),this.listener=t,this.listenerObject=r,this.priority=e,this.listenerType=Mt(t),this.callAfterApply=void 0,this.isRemoved=!1,this.refCount=0,this.onceObligations=void 0}isEqual(s,e){return this.listener===s&&this.listenerObject===e}detach(){if(this.isRemoved=!0,this.listener=null,this.listenerObject=null,this.callAfterApply=void 0,this.onceObligations!==void 0){for(let s of this.onceObligations){let e=s.members.indexOf(this);e>=0&&s.members.splice(e,1)}this.onceObligations=void 0}}apply(s,e=[],t){if(this.isRemoved)return;let{listener:r,listenerObject:i}=this,n=Hi;if(typeof r=="function"){vs(i,r,e,t),this.callAfterApply&&this.callAfterApply(n);return}if(Te(r)){ha(i)&&vs(i,i[r],e,t)&&this.callAfterApply&&this.callAfterApply(n);return}ca(r)&&(this.isCatchEmAll||this.eventName===s)&&ms(r,s,e,t)&&this.callAfterApply&&this.callAfterApply(n)}},Ue=Symbol("eventize.EventStore.dedupIndex"),Yi=s=>s===gr||s===fr,pa=(s,e,t,r,i,n)=>s===n.listenerType?e===n.priority&&t===n.eventName&&i===n.listenerObject&&r===n.listener:!1,Ki=(s,e,t)=>s===gr?e:t,ya=s=>s!=null&&typeof s!="string"&&typeof s!="symbol",Qi=(s,e,t)=>{let r=e.listener,i=e.listenerObject,n=Yi(e.listenerType),o=n?Ki(e.listenerType,r,i):void 0;n&&t(s,o,e),ya(r)&&!(n&&o===r)&&t(s,r,e),mr(i)&&i!==r&&!(n&&o===i)&&t(s,i,e)},va=(s,e,t)=>{let r=s.get(e);r===void 0?s.set(e,[t]):r.push(t)},ma=(s,e,t)=>{let r=s.get(e);if(r===void 0)return;let i=r.indexOf(t);i<0||(r.splice(i,1),r.length===0&&s.delete(e))},wa=(s,e)=>{Qi(s[Ue]??=new Map,e,va)},_i=(s,e)=>{let t=s[Ue];t!==void 0&&Qi(t,e,ma)},ba=(s,e,t,r,i,n)=>{if(!Yi(s))return;let o=n[Ue];if(o===void 0)return;let a=o.get(Ki(s,r,i));if(a!==void 0){for(let l of a)if(pa(s,e,t,r,i,l))return l}},X=Symbol("eventize.EventStore.heldBy"),Ot=s=>{let e=s===void 0?[]:s.slice(0);return e[X]=0,e[Ue]=s===void 0?void 0:s[Ue],e},ys=s=>()=>{throw new Error(`EventStore: ${s} is the shared empty stand-in \u2014 replace it, never mutate it`)},Fi=Object.freeze(Object.defineProperties(new Map,{set:{value:ys("namedListeners")},delete:{value:ys("namedListeners")},clear:{value:ys("namedListeners")}})),Lt=Ot();for(let s of["push","pop","shift","unshift","splice","sort","reverse","fill","copyWithin"])Object.defineProperty(Lt,s,{value:ys(`the catch-em-all bucket (${s}())`)});Object.freeze(Lt);var ur=s=>{s.forEach(e=>e.detach()),s[Ue]=void 0},Ea=(s,e)=>s.priority!==e.priority?e.priority-s.priority:s.id-e.id,Ca=(s,e)=>{let t=0,r=s.length;for(;t<r;){let i=t+r>>>1,n=s[i];if(n===void 0)throw new Error("EventStore: findInsertIndex encountered a hole");Ea(e,n)<0?r=i:t=i+1}return t},ji=(s,e,t,r,i)=>{let n=s.length;for(let o=0;o<n;o++){let a=s[o];a!==void 0&&e(a,t,r,i)}},Sa=(s,e,t,r,i,n)=>{let o=s.length,a=e.length,l=0,h=0;for(;l<o||h<a;){let u=l<o?s[l]:void 0,c=h<a?e[h]:void 0;if(u!==void 0&&(c===void 0||u.priority>=c.priority)){t(u,r,i,n),++l;continue}if(c!==void 0)t(c,r,i,n),++h;else throw new Error("EventStore: forEach encountered a hole")}},ka=Object.freeze([]),Aa=class{namedBuckets=Fi;catchEmAllBucket=Lt;get namedListeners(){return this.namedBuckets}get catchEmAllListeners(){return this.mutableCatchEmAllBucket()}mutableNamedBuckets(){return this.namedBuckets===Fi&&(this.namedBuckets=new Map),this.namedBuckets}mutableCatchEmAllBucket(){return this.catchEmAllBucket===Lt&&(this.catchEmAllBucket=Ot()),this.catchEmAllBucket}getListenersForEventName(s){let e=this.namedBuckets.get(s);return e||(e=Ot(),this.mutableNamedBuckets().set(s,e)),e}peekListeners(s){return Ae(s)?this.catchEmAllBucket:this.namedBuckets.get(s)??ka}bucketForMutation(s,e){if(e[X]===0)return e;let t=Ot(e);return e===this.catchEmAllBucket?this.catchEmAllBucket=t:this.namedBuckets.set(s,t),t}spliceOut(s,e,t){let r=e.indexOf(t);if(r<0)return e;let i=this.bucketForMutation(s,e);return i.splice(r,1),_i(i,t),i}detachByAssociation(s,e,t){let r=e;for(let i=e.length-1;i>=0;i--){let n=e[i];n!==void 0&&n.eventName===s&&(n.listener===t||n.listenerObject===t)&&(r===e&&(r=this.bucketForMutation(s,e)),r.splice(i,1),_i(r,n),n.detach())}return r}detachByIdentity(s,e,t,r,i){let n=e[Ue];if(n===void 0)return e;let o=n.get(t);if(o===void 0)return e;let a=r==null,l=e;for(let h of o.slice())((a?h.listener===t:h.isEqual(t,r))||a&&i&&h.listenerObject===t)&&(l=this.spliceOut(s,l,h),h.detach());return l}lastAddCreatedListener=!1;add(s,e,t,r=null,i=null){let n=Ae(s)?this.mutableCatchEmAllBucket():this.getListenersForEventName(s),o=Mt(t),a=ba(o,e,s,t,r,n),l=a??new ga(s,e,t,r);if(i===null?l.refCount+=1:l.onceObligations?.includes(i)||((l.onceObligations??=[]).push(i),i.members.push(l)),this.lastAddCreatedListener=!1,a)return a;let h=this.bucketForMutation(s,n);return h.splice(Ca(h,l),0,l),wa(h,l),this.lastAddCreatedListener=!0,l}remove(s,e,t=!1){if(e==null&&Array.isArray(s)){s.forEach(r=>this.remove(r,null,t));return}if(s==null||e==null&&Ae(s)){this.removeAllListeners();return}if(e==null&&Te(s)){this.removeByEventName(s);return}if(t&&Te(s)){this.removeByEventNameAndListenerObject(s,e);return}this.removeByListener(s,e)}removeByEventName(s){let e=this.namedBuckets.get(s);e!==void 0&&(ur(e),e[X]===0&&(e.length=0),this.namedBuckets.delete(s))}release(s){s.isRemoved||(s.refCount-=1,!(s.refCount>0||s.onceObligations!==void 0)&&this.dropListener(s))}releaseObligation(s){s.settled||this.dischargeObligation(s)}settleOneShots(s,e){let t=s.onceObligations;if(t!==void 0)for(let r of t.slice())r.sequence<e&&!r.settled&&this.dischargeObligation(r)}dischargeObligation(s){s.settled=!0;let e=s.onSettled;s.onSettled=void 0,e?.();let t=s.members.slice();s.members.length=0;for(let r of t){let i=r.onceObligations;if(i!==void 0){let n=i.indexOf(s);n>=0&&i.splice(n,1),i.length===0&&(r.onceObligations=void 0,r.callAfterApply=void 0)}!r.isRemoved&&r.refCount===0&&r.onceObligations===void 0&&this.dropListener(r)}}dropListener(s){if(s.isCatchEmAll)this.spliceOut(s.eventName,this.catchEmAllBucket,s);else{let e=this.namedBuckets.get(s.eventName);e&&this.spliceOut(s.eventName,e,s).length===0&&this.namedBuckets.delete(s.eventName)}s.detach()}removeByEventNameAndListenerObject(s,e){if(Ae(s)){this.detachByAssociation(s,this.catchEmAllBucket,e);return}let t=this.namedBuckets.get(s);if(!t)return;this.detachByAssociation(s,t,e).length===0&&this.namedBuckets.delete(s)}removeByListener(s,e){let t=typeof s=="object"||typeof s=="function";this.namedBuckets.forEach((r,i)=>{this.detachByIdentity(i,r,s,e,t).length===0&&this.namedBuckets.delete(i)}),this.detachByIdentity(V,this.catchEmAllBucket,s,e,t)}removeAllListeners(){this.namedBuckets.size!==0&&(this.namedBuckets.forEach(e=>{ur(e),e[X]===0&&(e.length=0)}),this.namedBuckets.clear());let s=this.catchEmAllBucket;s!==Lt&&(ur(s),s[X]!==0?this.catchEmAllBucket=Ot():s.length=0)}forEach(s,e,t,r,i){let n=this.catchEmAllBucket,o=n.length>0?n:void 0,a=s===V?void 0:this.namedBuckets.get(s),l=a!==void 0&&a.length>0?a:void 0;if(l===void 0){if(o===void 0)return;o[X]+=1;try{ji(o,e,t,r,i)}finally{o[X]-=1}return}l[X]+=1,o!==void 0&&(o[X]+=1);try{o===void 0?ji(l,e,t,r,i):Sa(l,o,e,t,r,i)}finally{l[X]-=1,o!==void 0&&(o[X]-=1)}}getSubscriptionCount(){let s=this.catchEmAllBucket.length;for(let e of this.namedBuckets.values())s+=e.length;return s}getSubscribedEventNames(){let s=Array.from(this.namedBuckets.keys());return this.catchEmAllBucket.length>0&&s.push(V),s}},Ta=s=>s[pr],Ra=s=>{throw new TypeError(`two incompatible copies of @spearwolf/eventize are active on this object (marker protocol ${String(s)}, expected ${yr}) \u2014 dedupe @spearwolf/eventize in your dependency tree so a single copy is loaded`)},Pa=s=>s?.protocol===yr,ie=s=>{let e=Ta(s);return Pa(e)?e:Ra(e?.protocol)},Z=s=>!!(s&&s[pr]);function zt(s){if(Z(s))return ie(s),s;if(!mr(s)){let r=s;throw new TypeError(`eventize() cannot attach to ${r===null?"null":`a value of type '${typeof r}'`} \u2014 eventize needs an object or a function to attach to`)}if(!Object.isExtensible(s))throw new TypeError("eventize() cannot attach to a non-extensible object \u2014 eventize before freezing, or eventize a wrapper");let e=new Aa,t=new la;return ra(s,pr,{protocol:yr,keeper:t,store:e}),s}var Ji=(s,e,t,r)=>{s.apply(e,t,r)},xa=(s,e)=>{fe("a listener threw; the dispatch continues. event:",s,e)},N=null,Xi=(s,e)=>{N!==null?N.push(e):xa(s,e)},dr=s=>s.length===1?s[0]:new AggregateError(s,"emitStrict: one or more listeners failed"),ws=(s,e,t,r)=>{try{s.apply(e,t,r)}catch(i){Xi(e,i)}},Bi=(s,e,t,r,i,n)=>{e===V&&vr("emitted");let o=n??ie(s);return o.store.forEach(e,r,e,t,i),o.keeper.retain(e,t),o},it=(s,e,t,r,i)=>{if(Array.isArray(e)){let n;for(let o=0;o<e.length;o++)o in e&&(n=Bi(s,e[o],t,r,i,n))}else Bi(s,e,t,r,i)},bs=(s,e,t,r)=>{try{ms(s,e,t,r)}catch(i){Xi(e,i)}},Ii=(s,e,t,r,i)=>{e===V&&vr("emitted"),r(ea(s),e,t,i)},nt=(s,e,t,r,i)=>{if(Array.isArray(e))for(let n=0;n<e.length;n++)n in e&&Ii(s,e[n],t,r,i);else Ii(s,e,t,r,i)},ot=mr;function b(s,e,...t){Z(s)?it(s,e,t,Ji):ot(s)&&nt(s,e,t,ms)}function ne(s,e,...t){let r=N;N=null;try{Z(s)?it(s,e,t,ws):ot(s)&&nt(s,e,t,bs)}finally{N=r}}function W(s,e,...t){let r=N,i=[];N=i;try{Z(s)?it(s,e,t,ws):ot(s)&&nt(s,e,t,bs)}catch(n){i.push(n)}finally{N=r}if(i.length>0)throw dr(i)}var Ui=()=>{},Zi=s=>{for(let e of s)if(Array.isArray(e))for(let t of e)Promise.resolve(t).catch(Ui);else Promise.resolve(e).catch(Ui)};function Oa(s,e,...t){let r=[],i=n=>{r.push(n)};try{Z(s)?it(s,e,t,Ji,i):ot(s)&&nt(s,e,t,ms,i)}catch(n){throw Zi(r),n}return r.length>0?Promise.all(r.map(n=>Array.isArray(n)?Promise.all(n):Promise.resolve(n))):Promise.resolve(void 0)}function Ma(s,e,...t){let r=[],i=o=>{r.push(o)},n=N;N=null;try{Z(s)?it(s,e,t,ws,i):ot(s)&&nt(s,e,t,bs,i)}catch(o){throw Zi(r),o}finally{N=n}return r.length>0?Promise.all(r.map(o=>Array.isArray(o)?Promise.all(o):Promise.resolve(o))):Promise.resolve(void 0)}var La=(s,e,t)=>{let r=[];for(let[i,n]of e.entries()){if(n.status==="rejected"){t.push(n.reason);continue}if(!Array.isArray(s[i])){r.push(n.value);continue}let o=[];for(let a of n.value)a.status==="rejected"?t.push(a.reason):o.push(a.value);r.push(o)}return r};function za(s,e,...t){let r=[],i=a=>{r.push(a)},n=N,o=[];N=o;try{Z(s)?it(s,e,t,ws,i):ot(s)&&nt(s,e,t,bs,i)}catch(a){o.push(a)}finally{N=n}return r.length===0?o.length>0?Promise.reject(dr(o)):Promise.resolve(void 0):Promise.allSettled(r.map(a=>Array.isArray(a)?Promise.allSettled(a):Promise.resolve(a))).then(a=>{let l=La(r,a,o);if(o.length>0)throw dr(o);return l})}var B={Max:Number.POSITIVE_INFINITY,Critical:1e9,High:1e6,Medium:1e3,Normal:0,Low:-1e4,Min:Number.NEGATIVE_INFINITY,AAA:1e9,BB:1e6,C:1e3,Default:0},Da=(s,e,t,r,i,n,o,a)=>{let l=s.add(t,r,i,n,a),h=s.lastAddCreatedListener;if(a!==null&&l.callAfterApply===void 0&&(l.callAfterApply=u=>s.settleOneShots(l,u)),e.hasRetainedFor(t)&&(h||a!==null)){let u=a===null?l:{apply:(c,P,g)=>{a.settled||l.apply(c,P,g)}};o.events=e.replayTo(t,u,o.events)}return l},Vi=(s,e)=>{if(typeof s!="number"||Number.isNaN(s))throw fe("called with a NaN priority!",e),new Error("subscribeTo() called with a NaN priority",{cause:"invalid-priority"})},Gi=(s,e)=>{if(!Te(s))throw fe("called with a value that cannot be an event name!",e),new Error("subscribeTo() called with insufficient arguments",{cause:"invalid-name"})},Wa=(s,e,t,r,i)=>{let n=t.length,o=typeof t[0],a,l,h,u;if(n>=2&&n<=3&&o==="number"?(a=V,[l,h,u]=t):n>=3&&n<=4&&typeof t[1]=="number"?[a,l,h,u]=t:(l=B.Normal,o==="string"||o==="symbol"||Array.isArray(t[0])?[a,h,u]=t:(a=V,[h,u]=t)),!h||Mt(h)===void 0){let P=h==null?"missing-listener":Mt(h)===void 0?"not-dispatchable":"empty-method-name";throw fe(P==="missing-listener"?"called with insufficient arguments!":P==="not-dispatchable"?"called with a value that cannot be a listener!":"called with an empty method name!",t),new Error("subscribeTo() called with insufficient arguments",{cause:P})}if(Mt(h)===fr&&u==null)throw fe("called with a method name but no listener object!",t),new Error("subscribeTo() called with insufficient arguments",{cause:"missing-listener-object"});Array.isArray(a)||Gi(a,t),Vi(l,t);let c=(P,g)=>Da(s,e,g,P,h,u,r,i);if(Array.isArray(a)){if(a.length===0)throw fe("called with an empty array of event names!",t),new Error("subscribeTo() called with insufficient arguments",{cause:"empty-names"});for(let g=0;g<a.length;g++)if(!(g in a))throw fe("called with a sparse array of event names!",t),new Error("subscribeTo() called with insufficient arguments",{cause:"sparse-names"});return a.map(g=>{let Q=Array.isArray(g)?[g[0],g[1]??l]:[g,l];return Gi(Q[0],t),Vi(Q[1],t),Q}).map(g=>c(g[1],g[0]))}return c(l,a)},en=(s,e,t,r=null)=>{let i={},n=Wa(s,e,t,i,r);return i.events!==void 0&&oa(i.events),n},$a=(s,e)=>{let t={host:s,listeners:e};return()=>{let r=t;if(r===null)return;t=null;let{store:i}=ie(r.host);Array.isArray(r.listeners)?r.listeners.forEach(n=>i.release(n)):i.release(r.listeners)}},Na=(s,e)=>{let t={host:s,obligation:e};return e.settled?t=null:e.onSettled=()=>{t=null},()=>{let r=t;if(r===null)return;t=null;let{store:i}=ie(r.host);i.releaseObligation(r.obligation)}},_a=s=>Array.isArray(s)?s.some(e=>e==null||e===V):s===V,p=(s,...e)=>{let t=zt(s),{store:r,keeper:i}=ie(t);return $a(t,en(r,i,e))},A=(s,...e)=>{let t=zt(s),{store:r,keeper:i}=ie(t),n=fa();return en(r,i,e,n),Na(t,n)},qi=s=>s.reason??new DOMException("This operation was aborted","AbortError");function wr(s,e,t){let r=t?.signal,i,n,o=new Promise((u,c)=>{i=u,n=c});if(r!=null&&typeof r.addEventListener!="function")throw new TypeError("options.signal must be an AbortSignal (or omitted)");if(r?.aborted)return n(qi(r)),o;let a,l=!1,h=A(s,e,(...u)=>{l=!0,r!=null&&a!=null&&r.removeEventListener("abort",a),i(u[0])});return r!=null&&!l&&(a=()=>{h(),n(qi(r))},r.addEventListener("abort",a,{once:!0})),o}function E(s,e,t){if(!Z(s))return;let{store:r,keeper:i}=ie(s),n=typeof e,o=t!=null&&(n==="string"||n==="symbol");r.remove(e,t,o);let a=t==null&&Array.isArray(e)?e.flat(1/0):e;if(e==null||t==null&&_a(a)){i.removeAll();return}t==null&&Ko(a)?i.remove(a.filter(Te)):Te(e)&&i.remove(e)}var tn=s=>Array.isArray(s)?s.some(e=>e===V):s===V,sn=(s,e)=>{if(!Array.isArray(e)){if(!Te(e))throw new Error(`${s}() called with a value that cannot be an event name`,{cause:"invalid-name"});return}if(e.length===0)throw new Error(`${s}() called with an empty array of event names`,{cause:"empty-names"});for(let t=0;t<e.length;t++)if(!(t in e))throw new Error(`${s}() called with a sparse array of event names`,{cause:"sparse-names"});for(let t of e)if(!Te(t))throw new Error(`${s}() called with a value that cannot be an event name`,{cause:"invalid-name"})},rn=(s,e,t,r,i)=>{if(!Z(e))throw new TypeError(`${s}() cannot operate on a non-eventized object \u2014 eventize(obj) first, or guard the call with isEventized(obj)`);let{keeper:n}=ie(e);if(tn(t)){r(n);return}sn(s,t),i(n,t)};function oe(s,e){tn(e)&&vr("retained"),sn("retain",e);let t=zt(s),{keeper:r}=ie(t);r.add(e)}function Dt(s,e){rn("retainClear",s,e,t=>t.clearAll(),(t,r)=>t.clear(r))}function br(s,e){rn("unretain",s,e,t=>t.removeAll(),(t,r)=>t.remove(r))}var Fa=p,ja=A,Ba=E,Ia=b,Ua=Oa,Va=ne,Ga=Ma,qa=W,Ha=za,Ya=wr,Ka=oe,Qa=Dt,Ja=br,Xa={on(...s){return Fa(this,...s)},once(...s){return ja(this,...s)},onceAsync(s,e){return Ya(this,s,e)},off(s,e){Ba(this,s,e)},emit(s,...e){Ia(this,s,...e)},emitAsync(s,...e){return Ua(this,s,...e)},emitSafe(s,...e){Va(this,s,...e)},emitSafeAsync(s,...e){return Ga(this,s,...e)},emitStrict(s,...e){qa(this,s,...e)},emitStrictAsync(s,...e){return Ha(this,s,...e)},retain(s){Ka(this,s)},retainClear(s){Qa(this,s)},unretain(s){Ja(this,s)}},nn=Object.entries(Xa),M=(()=>{let s=(e={})=>zt(e);return s.inject=(e={})=>{e=zt(e);for(let[t,r]of nn)Object.defineProperty(e,t,{value:r.bind(e),writable:!0,enumerable:!1,configurable:!0});return e},s.is=Z,s})(),Za=class{constructor(){M(this)}};for(let[s,e]of nn)Object.defineProperty(Za.prototype,s,{value:e,writable:!0,enumerable:!1,configurable:!0});var on=s=>Z(s)?ie(s).store.getSubscriptionCount():0;var ee=Symbol.for("@spearwolf/signalize/signal"),G=Symbol.for("@spearwolf/signalize/effect"),Dr=Symbol.for("@spearwolf/signalize/destroySignal"),dn=Symbol.for("@spearwolf/signalize/createEffect"),fn=Symbol.for("@spearwolf/signalize/destroyEffect"),gn=Symbol.for("@spearwolf/signalize/effectError"),el=Symbol.for("@spearwolf/signalize/signalizeError"),Pe=Symbol.for("@spearwolf/signalize/queueUnsubscribes"),Nt=Symbol.for("@spearwolf/signalize/autoMapResources"),tl=Symbol.for("@spearwolf/signalize/instances"),_t="value",Wr="mute",$r="unmute",ae="destroy",sl="off",ct=Symbol.for("@spearwolf/signalize/recall"),Ft=M(),le=M(),ye=M(),Nr=M(),rl=(s,e)=>{try{let t=globalThis[tl]??=[];if(t.push({url:s,report:e}),t.length>1){let r={level:"error",source:"multiple-instances",message:`[signalize] ${t.length} copies of @spearwolf/signalize are loaded in this process; they share no signals, effects, groups or links. Loaded from: ${t.map(({url:i})=>i).join(", ")}`};try{t[0].report(r)}catch{e(r)}}return t.length}catch{return 0}},il=0;var nl=({level:s,message:e,error:t})=>{let r=s==="warn"?console.warn:console.error;t===void 0?r(e):r(e,t)},te=s=>{if(il>0)try{b(ye,el,s);return}catch(e){console.error(`[signalize] an onSignalizeError handler threw while reporting a ${s.source} diagnostic:`,e)}nl(s)};rl(import.meta.url,te);var an=new Set,Tr=(s,e)=>{an.has(s)||(an.add(s),te({level:"warn",source:"deprecation",message:e}))},Rr,pn=s=>{Rr=s},yn=()=>{if(Rr===void 0)throw new Error('[signalize] effect subsystem not registered \u2014 Signal.onChange() and signalReader(callback) need it. Import "@spearwolf/signalize" through its entry point, so that effects.js is evaluated.');return Rr},jt=s=>s!=null&&typeof s.then=="function",As=(s,e,t,r)=>{if(jt(s))throw new TypeError(`[signalize] ${e}: ${t} must be synchronous, but it returned a thenable. ${r}`)},lt=0,ol="beQuiet() closes its frame the moment an async action returns its pending promise at the first `await` \u2014 every read after that point is tracked again and every write loud again, and the promise handed back would resolve outside the frame that appeared to produce it. Do the awaiting outside of beQuiet(), and pass a synchronous action.";function _r(s){lt++;try{let e=s();return As(e,"beQuiet","action",ol),e}finally{lt--}}function Ts(){return lt>0}function vn(){return lt}function mn(){lt=0}function wn(s){lt=s}var L=(s,e)=>{if(s.length!==0)throw s.length===1?s[0]:new AggregateError(s,`[signalize] ${s.length} errors while ${e}`)},y=(s,e)=>{try{e()}catch(t){s.push(t)}},Fr=0,Ge,Rs=()=>{Fr++;let s=Ge;return Ge=void 0,s},Ps=(s,e)=>{let t=Ge;Ge=s,Fr--,t!==void 0&&L(t,e)},ut=s=>Fr===0?!1:(Ge===void 0&&(Ge=[]),Ge.push(s),!0),qe=[],xs=()=>qe.at(-1),jr=(s,e)=>{qe.push(s);try{return e()}finally{qe.pop()}},bn=()=>qe.slice(),En=()=>{qe.length=0},Cn=s=>{qe.length=0,qe.push(...s)},Br=0,Sn=new FinalizationRegistry(()=>{--Br}),al=s=>{++Br,Sn.register(s,void 0,s)};function ln(s){Ts()||xs()?.whenSignalIsRead(s)}function Pr(s,e,t){if(!Ts()){let r=Rs();try{b(Ft,s,e,t)}catch(i){ut(i)}finally{Ps(r,"notifying the effects of a signal write")}}}var Re=s=>s!=null&&s[ee]!=null,$=s=>s?.[ee],x=(...s)=>{for(let e of s){let t=$(e);if(t!=null&&!t.destroyed){t.destroyed=!0,t.beforeRead=void 0,Sn.unregister(t),--Br;let r=Rs();try{b(le,t.id,t.id)}catch(i){ut(i)}finally{Ps(r,"notifying the subscribers of a destroyed signal")}}}};var ht=new WeakMap,ll=s=>{let e=ht.get(s);return e||(e={},ht.set(s,e)),e},xe=(s,e)=>ht.get(s)?.signals?.get(e),Ir=(s,e)=>ht.get(s)?.signals?.get(e);var kn=(s,e,t)=>{let r=ll(s);r.signals??=new Map,r.signals.set(e,t)};function Bt(...s){let e=[];for(let t of s)if(ht.has(t)){let r=ht.get(t);if(r.signals){for(let i of r.signals.values())y(e,()=>x(i));r.signals.clear(),r.signals=void 0}}L(e,"destroying the signals of an object")}function An(s){if(!Re(s)&&!Array.isArray(s))throw new TypeError("[signalize] touch: source must be a signal or an [object, propertyName] tuple");let e=$(Re(s)?s:xe(...s));e!=null&&!e.muted&&!e.destroyed&&Pr(e.id,e.value,{touch:!0})}function dt(s){if(!Re(s)&&!Array.isArray(s))throw new TypeError("[signalize] value: source must be a signal or an [object, propertyName] tuple");return Re(s)?$(s)?.value:$(xe(...s))?.value}var ks=class{[ee];constructor(e){this[ee]=e}get get(){return this[ee].reader}get set(){return this[ee].writer}get value(){return dt(this.get)}set value(e){this.set(e)}onChange(e){let{destroy:t}=yn()(()=>e(this.get()),[this.get]);return t}get muted(){return this[ee].muted}set muted(e){this[ee].muted=e}get destroyed(){return this[ee].destroyed}touch(){An(this)}destroy(){x(this)}},Ve=new WeakMap,at=new Set,ge=Symbol.for("@spearwolf/signalize/groupResources"),hn=new FinalizationRegistry(s=>{for(let e of s.unsubs)try{e()}catch(t){te({level:"error",source:"group-finalizer",message:"[signalize] releasing the destroy-queue subscriptions of a collected SignalGroup failed:",error:t})}s.unsubs.clear(),s.selfRef!=null&&at.delete(s.selfRef)}),hl=s=>{let e=s[ge].selfRef;if(!(e==null||!at.has(e)))try{s.clear()}catch(t){te({level:"error",source:"group-finalizer",message:"[signalize] a SignalGroup teardown threw in the FinalizationRegistry callback, where no caller can catch it:",error:t})}},cn=new FinalizationRegistry(s=>{let e=s.deref();e!==void 0&&hl(e)});var cl=Symbol.for("@spearwolf/signalize/setParentGroup"),Er=1,Cr=2,Sr=4,kr=8,Ar=16,un="[signalize] Cannot attach a group to one of its own descendants: this would create a cycle in the group graph",Os="[signalize] internal error: a shared empty stand-in collection was written to",xr=class extends Set{add(){throw new Error(Os)}},Or=class extends Map{set(){throw new Error(Os)}},Mr=class extends WeakMap{set(){throw new Error(Os)}},Lr=class extends WeakSet{add(){throw new Error(Os)}},Wt=new xr,Ss=new Or,Tn=new Mr,Rn=new Lr,Es=s=>s===Wt?new Set:s,Cs=s=>s===Ss?new Map:s,ul=s=>s===Tn?new WeakMap:s,dl=s=>s===Rn?new WeakSet:s,pe=class s{#e=Wt;#t=new Set;#s=Ss;#r=Tn;#i=Ss;#n=Wt;#o=new Set;#a=Ss;[ge]={unsubs:Wt};#u=Wt;#c=Rn;#l;#h=0;#v;static get(e){if(e!=null)return e instanceof s?e:Ve.get(e)}static findOrCreate(e){if(e==null)throw new Error("[signalize] Cannot create a group with a null object");return e instanceof s?e:Ve.get(e)??new s(e)}static destroy(e){Tr("SignalGroup.destroy","[signalize] SignalGroup.destroy(obj) is deprecated. Use SignalGroup.delete(obj) instead."),s.delete(e)}static delete(e){if(e instanceof s){e.clear();return}Ve.get(e)?.clear()}static clear(){let e=[];for(let t of[...at]){let r=t.deref();if(r===void 0){at.delete(t);continue}y(e,()=>r.clear())}L(e,"clearing all signal groups")}constructor(e){if(e!=null&&e instanceof s)return e;if(e??=this,Ve.has(e))return Ve.get(e);this.#v=new WeakRef(e),Ve.set(e,this);let t=new WeakRef(this);this[ge].selfRef=t,at.add(t),hn.register(this,this[ge],this),e!==this&&cn.register(e,t,this),M(this)}attachGroup(e){if(e===this)throw new Error("[signalize] Cannot attach a group to itself");let t=this,r=this.#l;for(;r!=null;){if(r===e)throw new Error(un);if(r=r.#l,r==null)break;if(r===e)throw new Error(un);if(r=r.#l,t=t.#l,r!=null&&r===t)throw new Error("[signalize] Cannot attach a group: the parent chain of this group is already cyclic")}return(this.#e=Es(this.#e)).add(e),e.#l&&e.#l!==this&&e.#l.#e.delete(e),e.#l=this,e}detachGroup(e){return e!==this&&this.#e.has(e)&&(this.#e.delete(e),e.#l=void 0),e}[cl](e){this.#l=e}attachSignal(e){let t=this.#d(e);return t&&(this.#n=Es(this.#n)).add(t),e}#d(e){let t=$(e);if(t?.destroyed)throw new Error("[signalize] Cannot attach a destroyed signal to a group");if(t&&(this.#t.add(t),!this.#a.has(t))){let r=this[ge].selfRef,i=new WeakRef(t),n=p(le,t.id,(a,l)=>{if(l?.detach)return;let h=i.deref(),u=r.deref();h!==void 0&&u!==void 0&&u.#p(h)});(this.#a=Cs(this.#a)).set(t,n);let o=this[ge];(o.unsubs=Es(o.unsubs)).add(n)}return t}#f(e){let t=this.#a.get(e);if(t)try{t()}finally{this.#a.delete(e),this[ge].unsubs.delete(t)}}#g(e,t){let r=this.#i.get(e);r&&(r.delete(t),r.size===0&&this.#i.delete(e));let i=this.#r.get(t);i&&(i.delete(e),i.size===0&&(this.#r.delete(t),this.#n.has(t)||(this.#f(t),this.#t.delete(t),x(t))))}#y(e,t){this.#n.has(t)||this.#g(e,t)}attachSignalByName(e,t){if(t){let r=this.#d(t),i=this.#s.get(e);i!=null&&i!==r&&this.#y(e,i),(this.#s=Cs(this.#s)).set(e,r);let n=this.#i.get(e);n?n.add(r):(this.#i=Cs(this.#i)).set(e,new Set([r])),this.#r.has(r)?this.#r.get(r).add(e):(this.#r=ul(this.#r)).set(r,new Set([e]))}else{let r=this.#i.get(e);if(r)for(let i of[...r])this.#g(e,i);this.#s.delete(e)}return t}hasSignal(e){if(this.#h&Er)return!1;this.#h|=Er;try{return this.#s.has(e)||!!this.#l?.hasSignal(e)}finally{this.#h&=~Er}}signal(e){if(!(this.#h&Cr)){this.#h|=Cr;try{return this.#s.get(e)?.object??this.#l?.signal(e)}finally{this.#h&=~Cr}}}detachSignal(e){let t=$(e);return t&&this.#p(t),e}#p(e){let t=[];if(y(t,()=>this.#f(e)),this.#t.delete(e),this.#n.delete(e),this.#r.has(e)){let r=this.#r.get(e);for(let i of r){let n=this.#i.get(i);if(n){if(n.delete(e),n.size===0)this.#s.delete(i),this.#i.delete(i);else if(this.#s.get(i)===e){let o;for(let a of n)o=a;(this.#s=Cs(this.#s)).set(i,o)}}}r.clear(),this.#r.delete(e)}L(t,"detaching a signal from a signal group")}attachEffect(e){let t=e!=null&&G in e?e[G]:e;if(t==null||t.destroyed)throw new Error("[signalize] Cannot attach a destroyed effect to a group");return this.#o.has(t)||(this.#o.add(t),A(t,ae,B.Max,()=>{this.#o.delete(t)})),e}runEffects(){if(!(this.#h&Sr)){this.#h|=Sr;try{for(let e of this.#o)e.run();for(let e of this.#e)e.runEffects()}finally{this.#h&=~Sr}}}attachLink(e){if(e?.isDestroyed)throw new Error("[signalize] Cannot attach a destroyed link to a group");return e&&((this.#u=Es(this.#u)).add(e),this.#c.has(e)||((this.#c=dl(this.#c)).add(e),A(e,ae,B.Max,()=>{this.#u.delete(e)}))),e}detachLink(e){return e&&this.#u.delete(e),e}get memberCounts(){return{signals:this.#t.size,namedSignals:this.#s.size,signalsByName:this.#i.size,effects:this.#o.size,links:this.#u.size,groups:this.#e.size}}destroy(){Tr("SignalGroup#destroy","[signalize] SignalGroup#destroy is deprecated. Use SignalGroup#clear instead."),this.clear()}off(){if(!(this.#h&kr)){this.#h|=kr;try{let e=[];for(let t of[...this.#e])y(e,()=>t.off());for(let t of[...this.#o])y(e,()=>t.destroy());this.#o.clear();for(let t of[...this.#u])y(e,()=>t.destroy());this.#u.clear();for(let t of[...this.#t])t.destroyed||y(e,()=>b(le,t.id,t.id,{detach:!0}));y(e,()=>b(this,sl,this)),L(e,"switching off a signal group")}finally{this.#h&=~kr}}}clear(){if(!(this.#h&Ar)){this.#h|=Ar;try{let e=[];y(e,()=>b(this,ae,this)),y(e,()=>E(this));for(let t of[...this.#e])y(e,()=>t.clear());for(let t of[...this.#o])y(e,()=>t.destroy());for(let t of[...this.#t])y(e,()=>x(t));for(let t of[...this.#u])y(e,()=>t.destroy());for(let t of[...this.#a.values()])y(e,()=>t());if(this.#a.clear(),this.#e.clear(),this.#t.clear(),this.#s.clear(),this.#i.clear(),this.#n.clear(),this.#o.clear(),this.#u.clear(),this.#l?.detachGroup(this),this.#v){let t=this.#v.deref();t!==void 0&&Ve.delete(t),this.#v=void 0}at.delete(this[ge].selfRef),this[ge].unsubs.clear(),cn.unregister(this),hn.unregister(this),L(e,"clearing a signal group")}finally{this.#h&=~Ar}}}},$t=class{#e;#t;constructor(e="id",t=1){this.#e=e,this.#t=t}make(){return Symbol(`${this.#e}${this.#t++}`)}},fl=new $t("si"),gl=["lazy","compare","beforeRead"],pl=(s,e)=>s===e;function yl(){Tr("signalReader(callback)","[signalize] signalReader(callback) is deprecated and will be removed in a future release. Use Signal.onChange(callback) instead \u2014 it returns an unsubscribe function for proper cleanup.")}var vl=s=>{let e=t=>(s.destroyed||s.beforeRead?.(),t?(yl(),yn()(()=>(s.destroyed||ln(s.id),t(s.value)),[e])):s.destroyed||ln(s.id),s.value);return Object.defineProperty(e,ee,{value:s}),e},zr=class{id;lazy;get[ee](){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??pl;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)){Pr(this.id,this.#e);return}(t?.touch??!1)&&!this.muted&&!this.destroyed&&Pr(this.id,this.#e,{touch:!0})};object;constructor(e,t){this.id=fl.make(),al(this),this.lazy=e,this.lazy?(this.value=void 0,this.valueFn=t):(this.value=t,this.valueFn=void 0),this.reader=vl(this),this.object=new ks(this)}};function f(s=void 0,e){let t;if(Re(s)){t=$(s);let r=gl.filter(i=>e?.[i]!=null);r.length>0&&te({level:"warn",source:"ignored-option",message:`[signalize] createSignal(existingSignal, {${r.join(", ")}}) is a passthrough: it returns the signal that was passed in, so nothing in those braces is applied. Only {attach} works on this path. Configure the signal where it is created, or drop the options.`})}else{let r=e?.lazy??!1;t=new zr(r,s),t.beforeRead=e?.beforeRead,t.compare=e?.compare}return e?.attach!=null&&pe.findOrCreate(e.attach).attachSignal(t),t.object}var Vr=0,ml=()=>Vr>0,ve=class{static current;delayedEffects=[];batch(e,t){let r=this.delayedEffects.length;for(let i=0;i<r;i++){let[n,o]=this.delayedEffects[i];if(!(n>t)){if(n===t){o.add(e);return}this.delayedEffects.splice(i,0,[t,new Set([e])]);return}}this.delayedEffects.push([t,new Set([e])])}unbatch(e,t){let r=this.delayedEffects.length;for(let i=0;i<r;i++){let[n,o]=this.delayedEffects[i];if(n===t){o.delete(e);return}}}flush(){try{this.run()}finally{this.delayedEffects.length=0}}run(){if(this.delayedEffects.length===0)return;let e=new Set,t=[];Vr++;let r=Rs();try{t.push(p(ye,(i,n)=>{n===ct&&e.add(i)}),p(Nr,i=>{e.add(i)}));for(let[,i]of this.delayedEffects)for(let n of i)if(!e.has(n))try{b(ye,n,n,ct)}catch(o){ut(o)}}finally{try{for(let i of t)i()}finally{try{Ps(r,"flushing a batch of signal writes")}finally{Vr--}}}}},On=()=>ve.current,wl=()=>{ve.current=void 0},bl=s=>{ve.current=s},El="batch() only sees writes made on the current call stack \u2014 an async callback stops being batched at its first `await`, so every write after that runs unbatched without any error. Move the async work outside of batch(), or split it into several synchronous batch() calls.";function q(s){let e=ve.current;e?e=void 0:e=ve.current=new ve;let t;try{let r=s();As(r,"batch","callback",El)}catch(r){t=[r]}finally{if(e){ve.current=void 0;try{e.run()}catch(r){t===void 0?t=[r]:t.push(r)}}}t!==void 0&&L(t,"running a batch")}var Cl=()=>{},Gr=class{[G];constructor(e){this[G]=e,A(e,ae,()=>{this[G]=void 0})}run=()=>this[G]?.run();runImmediately=()=>this[G]?.runImmediately();get destroyed(){let e=this[G];return e==null||e.destroyed}destroy=()=>{this[G]?.destroy(),this[G]=void 0};onDestroy(e){let t=this[G];return t==null||t.destroyed?(e(),Cl):A(t,ae,e)}},Sl=0,kl=()=>Sl>0;var He,It=(s,e,t)=>{if(kl()){let r={error:e,effect:s,effectId:s.id,phase:t};try{b(ye,gn,r);return}catch(i){console.error(`[signalize] an onEffectError handler threw while reporting an error of effect ${s.id.toString()}:`,i)}}te({level:"error",source:"effect",message:`[signalize] unhandled rejection in the ${t} of effect ${s.id.toString()}:`,error:e})},qr=class{active;#e;#t=!1;constructor(e,t){this.active=e,this.#e=t}complete(){this.#t=!0}mayCommit(e){return this.active&&(this.#t||e>this.#e)}},Ms=class{static idGen=new $t("ef");static count=0;static maxDepth=256;id;callback;#e;#t=new Set;#s=new Set;#r=new Map;#i=0;#n=new Set;#o=[];autorun=!0;shouldRun=!0;#a=!1;priority;#u;#c=!1;get destroyed(){return this.#c}#l=0;#h=!1;#v=0;#d=!1;constructor(e,t){M(this),this.callback=e;let r=t?.attach!=null?pe.findOrCreate(t.attach):void 0;this.autorun=t?.autorun??!0,this.#u=t?.dependencies?t.dependencies.map(i=>{switch(typeof i){case"string":case"symbol":{if(r==null)throw new Error(`[signalize] createEffect: cannot resolve dependency "${String(i)}" \u2014 no SignalGroup is attached (missing "attach" option)`);let n=r.signal(i);if(n==null)throw new Error(`[signalize] createEffect: cannot resolve dependency "${String(i)}" \u2014 no signal with that name is registered in the attached SignalGroup`);return n}default:return i}}):void 0,this.id=He.idGen.make(),this.priority=t?.priority??0,p(ye,this.id,ct,this),r?.attachEffect(this),++He.count}hasStaticDeps(){return this.#u!=null&&this.#u.length>0}saveSignalsFromDeps(){for(let e of this.#u){let t=$(e);t.destroyed||this.whenSignalIsRead(t.id)}}static createEffect(e,t,r){let i=Array.isArray(t)?t:void 0,n=i?{...r,dependencies:i}:t,o=new He(e,n);try{xs()?.attachChildEffect(o),b(ye,dn,o),o.hasStaticDeps()?o.destroyed||o.saveSignalsFromDeps():o.autorun&&o.run()}catch(a){let l=[a];n?.attach==null&&y(l,()=>o.destroy()),L(l,"creating an effect")}return new Gr(o)}attachChildEffect(e){this.#o.push(e)}run(){this.#f(!1)}runImmediately(){this.#f(!0)}#f(e){if(this.#c||!this.shouldRun)return;let t=On();if(t){if(!e){this.autorun||(this.#a=!0),t.batch(this.id,this.priority);return}t.unbatch(this.id,this.priority)}if(this.#a=!1,this.#l>=He.maxDepth)throw new Error(`[signalize] Effect ${this.id.toString()} exceeded maxDepth=${He.maxDepth}: an effect callback recursively re-triggered itself (likely by writing a signal it depends on). Break the cycle, or raise the cap with setMaxEffectDepth(n) if the recursion is intentional.`);this.#l++;try{this.runCleanupCallback(),this.destroyChildEffects(),this.shouldRun=!1,ml()&&b(Nr,this.id,this.id);let r=++this.#v;this.hasStaticDeps()?this.runStaticCallback(r):this.runDynamicCallback(r)}finally{if(this.#l--,this.#l===0&&this.#h&&(this.#h=!1,!this.#c&&this.hasNoLiveSignals()))try{this.destroy()}catch(r){It(this,r,"cleanup")}}}runStaticCallback(e){this.saveSignalsFromDeps(),this.storeCleanupCallback(this.runWithoutAutoTracking(),e)}runDynamicCallback(e){let t=new qr(!Ts(),this.#i);if(t.active){this.#s.clear();for(let r of this.#t)this.#s.add(r)}try{this.storeCleanupCallback(jr(this,this.callback),e),t.complete()}finally{t.mayCommit(this.#i)&&(this.cleanupLostSignals(),this.#n.clear())}}runWithoutAutoTracking(){let e=this.#d;this.#d=!0;try{return jr(this,this.callback)}finally{this.#d=e}}[ct](){if(this.shouldRun=!0,!(!this.autorun&&!this.#a))try{this.run()}catch(e){if(!ut(e))throw e}}whenSignalIsRead(e){this.#c||this.#d||(this.#i++,this.#s.delete(e),this.#t.has(e)||(this.#t.add(e),this.#r.set(e,[p(Ft,e,this.priority,ct,this),A(le,e,Dr,this)])))}[Dr](e,t){try{this.onSignalDestroyed(e,t)}catch(r){if(t?.detach||!ut(r))throw r}}onSignalDestroyed(e,t){if(this.#t.has(e)){if(t?.detach){this.unsubscribeSignal(e),this.#t.delete(e),this.#n.delete(e),this.#s.delete(e),this.hasNoLiveSignals()&&this.destroyWhenUntriggerable();return}this.#n.has(e)||(this.#n.add(e),this.unsubscribeSignal(e),this.hasNoLiveSignals()&&this.destroyWhenUntriggerable())}}destroyWhenUntriggerable(){if(this.#l>0){this.#h=!0;return}this.destroy()}hasNoLiveSignals(){return this.#r.size===0}cleanupLostSignals(){if(this.#s.size===0)return;let e=[];for(let t of this.#s)y(e,()=>this.unsubscribeSignal(t)),this.#t.delete(t);L(e,"unsubscribing an effect from a signal")}destroyChildEffects(){if(this.#o.length===0)return;let e=[];this.collectDestroyChildEffects(e),L(e,"destroying an effect")}collectDestroyChildEffects(e){for(let t of this.#o)y(e,()=>t.destroy());this.#o.length=0}unsubscribeSignal(e){if(this.#r.has(e)){let t=[];try{this.#r.get(e).forEach(r=>{y(t,()=>r())})}finally{this.#r.delete(e)}L(t,"unsubscribing an effect from a signal")}}storeCleanupCallback(e,t){if(!jt(e)){typeof e=="function"&&this.acceptCleanupCallback(e,t);return}Promise.resolve(e).then(r=>{typeof r=="function"&&this.acceptCleanupCallback(r,t)},r=>{It(this,r,"callback")})}acceptCleanupCallback(e,t){if(this.#c||t!==this.#v){this.runOrphanedCleanupCallback(e);return}let r=this.#e;this.#e=e,r!=null&&this.runOrphanedCleanupCallback(r)}runCleanupCallback(){let e=this.#e;if(e==null)return;this.#e=void 0;let t=e();jt(t)&&Promise.resolve(t).catch(r=>{It(this,r,"cleanup")})}runOrphanedCleanupCallback(e){try{let t=e();jt(t)&&Promise.resolve(t).catch(r=>{It(this,r,"cleanup")})}catch(t){It(this,t,"cleanup")}}destroy(){if(this.#c)return;this.#c=!0,E(Ft,this),E(ye,this),E(le,this);let e=[];y(e,()=>b(this,ae,this)),y(e,()=>E(this)),y(e,()=>b(ye,fn,this)),y(e,()=>this.runCleanupCallback());try{this.collectDestroyChildEffects(e)}finally{this.#t.clear(),this.#s.clear(),this.#r.clear(),this.#n.clear(),--He.count}L(e,"destroying an effect")}};He=Ms;var T=(...s)=>Ms.createEffect(...s);pn(T);function Mn(s,e){let t=xs(),r=f();try{let i=e?.name||void 0,n=e?.attach!=null?pe.findOrCreate(e.attach):void 0;n!=null?i!=null?n.attachSignalByName(i,r):n.attachSignal(r):i!=null&&te({level:"warn",source:"ignored-option",message:`[signalize] createMemo({name: ${String(i)}}) without {attach} is ignored: a name only exists within a SignalGroup. Pass {attach} as well, or drop the name.`});let o=e?.batchWrites??!1,a=T(()=>{o?q(()=>{r.set(s())}):r.set(s())},{autorun:!(e?.lazy??!1),priority:e?.priority??B.C,attach:n}),l=$(r);l.beforeRead=a.runImmediately;let h=A(le,l.id,a.destroy);return a.onDestroy(()=>{h(),t!=null&&x(r)}),r.get}catch(i){let n=[i];e?.attach==null&&y(n,()=>x(r)),L(n,"creating a memo")}}var Al="hibernate() restores the saved batch, quiet counter and effect stack the moment an async callback returns its pending promise at the first `await`, so everything past that `await` runs outside the hibernation it was written inside. Do the awaiting outside of hibernate(), and pass a synchronous callback.";function H(s){let e=On(),t=vn(),r=bn();wl(),mn(),En();let i=[],n;try{e&&y(i,()=>e.flush()),y(i,()=>{n=s(),As(n,"hibernate","callback",Al)})}finally{bl(e),wn(t),Cn(r)}return L(i,"hibernating"),n}var Ln="[signalize] SignalLink destroyed before the next value arrived",Hr=class{#e;#t;#s;#r=[];#i=!1;constructor(e,t,r){this.#e=e,this.#t=t,this.#s=r}get hasSettled(){return this.#i}add(e){this.#r.push(e)}releaseAll(){this.#s!=null&&(this.#s.cancel=void 0),this.#r.forEach(e=>{e()})}settleWithValue(e){this.#i=!0,this.releaseAll(),this.#e(e)}settleWithDestroy(){this.releaseAll(),this.#t(new Error(Ln))}settleWithAbort(e){this.releaseAll(),this.#t(e)}settleWithCancel(){this.releaseAll(),this.#t(new Error("[signalize] SignalLink read cancelled by the iterator"))}},Ls=class{#e=!1;[Pe]=[];#t=0;#s=0;#r=0;source;lastValue;isDestroyed=!1;constructor(e){M(this),this.source=$(e);let t=new WeakRef(this);this[Pe].push(p(Ft,this.source.id,(r,i)=>{let n=t.deref();n!=null&&!n.#e&&!n.isDestroyed&&(i?.touch===!0?n.touch():n.write())})),this[Pe].push(A(le,this.source.id,()=>t.deref()?.destroy()))}releaseOnDestroy(e){this[Pe].push(e)}attach(e){let t=pe.findOrCreate(e);return t.attachLink(this),t}nextValue(e){return this.#i(null,e)}#i(e,t,r){let{signal:i}=t??{};return new Promise((n,o)=>{if(i?.aborted){o(i.reason);return}if(this.isDestroyed){o(new Error(Ln));return}let a=new Hr(n,o,r);if(r!=null&&(r.cancel=()=>a.settleWithCancel()),a.add(A(this,ae,()=>a.settleWithDestroy())),i!=null){let h=()=>a.settleWithAbort(i.reason);i.addEventListener("abort",h,{once:!0}),a.add(()=>i.removeEventListener("abort",h))}let l=p(this,_t,h=>{this.#n(e)&&a.settleWithValue(h)});a.hasSettled?l():a.add(l)})}#n(e){return e==null?!0:e.generation===this.#r?!1:(e.generation=this.#r,!0)}asyncValues(e,t){let r={},i=this.#o(r,e,t),n=i.return.bind(i);i.return=(a=>(r.cancel?.(),n(a)));let o=i.throw.bind(i);return i.throw=(a=>(r.cancel?.(),o(a))),i}async*#o(e,t,r){oe(this,_t),this.#t+=1;let i={generation:0};try{let n=0;for(;!this.isDestroyed;)try{let o=await this.#i(i,r,e);if(t?.(o,n++))break;yield o}catch(o){if(r?.signal?.aborted&&o===r.signal.reason)throw o;break}}finally{this.#t-=1,this.#t===0&&br(this,_t)}}destroy(){if(this.isDestroyed)return;this.isDestroyed=!0;let e=[];for(let t of this[Pe])y(e,t);this[Pe].length=0,y(e,()=>b(this,ae,this)),y(e,()=>E(this)),this.lastValue=void 0,Object.freeze(this),L(e,"tearing down a SignalLink")}get isMuted(){return this.#e}mute(){return!this.isDestroyed&&!this.#e&&(this.#e=!0,b(this,Wr,this)),this}unmute(){return!this.isDestroyed&&this.#e&&(this.#e=!1,b(this,$r,this)),this}toggleMute(){return this.isDestroyed||(this.#e=!this.#e,b(this,this.#e?Wr:$r,this)),this.#e}updateValue(e){if(!this.#e&&!this.isDestroyed){let t=++this.#s,{value:r}=this.source;if(e(r),this.isDestroyed||this.#s!==t)return;this.#r=t,b(this,_t,r),this.lastValue=r}}},Yr=class extends Ls{target;constructor(e,t){super(e),this.target=$(t);let r=new WeakRef(this);this.releaseOnDestroy(A(le,this.target.id,()=>r.deref()?.destroy())),this.touch()}touch(){return this.updateValue(e=>{this.target.writer(e,{touch:!0})}),this}write(){this.updateValue(e=>{this.target.writer(e)})}},Kr=class extends Ls{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)})}},Ur=new WeakMap,Ut=0,Pn=new FinalizationRegistry(s=>{for(let e of s)try{e()}catch(t){te({level:"error",source:"link-finalizer",message:"[signalize] link: releasing the queue subscriptions of a collected link failed",error:t})}s.length=0,Ut>0&&(Ut-=1)}),Tl=1e3,xn=new WeakSet;function me(s,e,t){let r=$(s);if(r==null)throw new TypeError("[signalize] link: source must be a signal");let i=$(e),n=i??e,o=Ur.get(r);if(o==null)o=new Map,Ur.set(r,o);else if(o.has(n)){let h=o.get(n),u=t?.attach;return u&&h.attach(u),h}let a=i!=null?new Yr(s,i):new Kr(s,e),l=t?.attach;return l&&a.attach(l),o.set(n,a),Ut+=1,Pn.register(a,a[Pe],a),o.size>=Tl&&!xn.has(r)&&(xn.add(r),te({level:"warn",source:"link-count",message:`[signalize] link(): ${o.size} links on a single source signal. A link is held until destroy(), unlink(), a cleared {attach} group, or the destruction of source/target \u2014 garbage collection alone does not reclaim one on a live source. If this is a hot path creating fresh callbacks, tear the old links down; getLinksCount(source) is the number to watch.`})),A(a,ae,B.Max,()=>{o.delete(n),o.size===0&&Ur.delete(r),Pn.unregister(a),Ut>0&&(Ut-=1)}),a}var Rl=new FinalizationRegistry(s=>{for(let e of s.unsubs)try{e()}catch(t){te({level:"error",source:"automap-finalizer",message:"[signalize] releasing the destroy-queue subscriptions of a collected SignalAutoMap failed:",error:t})}s.unsubs.clear()}),zs=class s{static fromProps(e,t){let r=new s,i=t?[...new Set(t)].map(n=>[n,e[n]]):Object.entries(e);for(let[n,o]of i)r.#r(n,o);return r}[Nt]={unsubs:new Set};#e=new Map;#t=new Map;#s=new WeakRef(this);constructor(){Rl.register(this,this[Nt],this)}#r(e,t){let r=f(t);this.#e.set(e,r);let i=this.#s,n=p(le,$(r).id,(o,a)=>{if(a?.detach)return;let l=i.deref();l!==void 0&&l.#i(e)});return this.#t.set(e,n),this[Nt].unsubs.add(n),r}#i(e){let t=this.#t.get(e);try{t()}finally{this.#t.delete(e),this[Nt].unsubs.delete(t),this.#e.delete(e)}}keys(){return this.#e.keys()}signals(){return this.#e.values()}entries(){return this.#e.entries()}clear(){let e=[...this.#e.values()],t=[];for(let r of[...this.#e.keys()])y(t,()=>this.#i(r));for(let r of e)y(t,()=>r.destroy());L(t,"clearing a signal auto map")}delete(e){let t=this.#e.get(e);return t===void 0?!1:(this.#i(e),t.destroy(),!0)}has(e){return this.#e.has(e)}get(e){return this.#e.has(e)?this.#e.get(e):this.#r(e)}update(e){e.size&&q(()=>{for(let[t,r]of e.entries())this.get(t).set(r)})}updateFromProps(e,t){let r=t?t.map(i=>[i,e[i]]):Object.entries(e);r.length!==0&&q(()=>{for(let[i,n]of r)this.get(i).set(n)})}};var we=(s=>(s[s.StructuralChanges=1]="StructuralChanges",s[s.ContentUpdates=2]="ContentUpdates",s[s.Removal=3]="Removal",s))(we||{}),v=(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",s))(v||{}),Ye=Symbol.for("ShadowObjectsGlobalNS"),_="#void",zn="contextLost",Dn="configure",Wn="changeTrail",$n="destroy",Nn="loaded",_n="appliedChangeTrail",Fn="importedModule",jn="destroyed",ft="messageToView",Bn=6e4,In=6e4,Un=5e3,Vn=5e3,Vt="shadowObjects";var Gt=new Set(["on","true","yes","local","1"]);var Ke=s=>typeof s=="string"?s.trim()||Ye:typeof s=="symbol"?s:Ye;var Gn=s=>Ke(s.getAttribute("ns")??void 0),Oe=(s,e)=>{if(s.hasAttribute(e)){let t=s.getAttribute(e)?.trim()?.toLowerCase()||"1";return Gt.has(t)}return!1},qn=(s,e)=>s.hasAttribute(e)?Number(s.getAttribute(e)):void 0;var be="ConsoleLogger",Pl=`${be}Storage`,xl=new Set(["localhost","127.0.0.1","::1","[::1]"]),Ol=xl.has(globalThis.location?.hostname??""),qt=(()=>{try{let s=globalThis.localStorage;if(typeof s?.getItem!="function"||typeof s.setItem!="function"||typeof s.removeItem!="function")return;let e=`${be}.probe`;try{s.setItem(e,e)}finally{s.removeItem(e)}return s}catch{return}})(),Kn=qt!=null,Ds=Symbol.for(be),Me=globalThis,Hn=!1,Yn=s=>{if(typeof s=="boolean")return s;switch(s.toLowerCase()){case"true":case"yes":case"on":return!0;default:return!1}},Qr=s=>[Kn?be:void 0,...Array.isArray(s)?s:[s]].filter(Boolean).join(".");function $s(s,e,t){let r=Qr(s),i=qt?qt.getItem(r):Me.ConsoleLoggerStorage?.[r];return i==null?t:e?e(i):i}function Ws(s,e){qt&&qt.setItem(Qr(s),e)}var Qn=s=>Qr(s),Jn=(s,e)=>$s(s,void 0,e);var C=class s{constructor(e){this.enable=!0,this.namespace=(e||"").trim()||be,Hn||(s.loadConfig(),Hn=!0);let t=[this.namespace,"enable"];this.enable=$s(t,Yn,this.enable)}static{this.sharedConfig={enable:Ol,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(){Kn?(["enable","debug","info","warn"].forEach(e=>{this.sharedConfig[e]=$s(e,Yn,this.sharedConfig[e])}),["debug","info","warn","error"].forEach(e=>{this.sharedStyles[e]=$s(["styles",e],void 0,this.sharedStyles[e])}),s.isDebug&&console.debug(`${be}: Load config from localStorage`,s.sharedConfig),Me.ConsoleLogger?.[Ds]||(Me.ConsoleLogger??={[Ds]:!0,get enable(){return s.sharedConfig.enable},set enable(e){s.sharedConfig.enable=e,Ws("enable",e?"true":"false")},get debug(){return s.sharedConfig.debug},set debug(e){s.sharedConfig.debug=e,Ws("debug",e?"true":"false")},get info(){return s.sharedConfig.info},set info(e){s.sharedConfig.info=e,Ws("info",e?"true":"false")},get warn(){return s.sharedConfig.warn},set warn(e){s.sharedConfig.warn=e,Ws("warn",e?"true":"false")}})):Me.ConsoleLoggerStorage?.[Ds]||(Me.ConsoleLoggerStorage={[Ds]:!0,...s.sharedConfig,...Me.ConsoleLoggerStorage},s.sharedConfig=Me.ConsoleLoggerStorage,s.isDebug&&console.debug(`${be}: Load config from ${Pl}`,Me.ConsoleLoggerStorage))}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.isDebug&&this.#e("debug",s.sharedStyles.debug,e)}info(...e){this.isInfo&&this.#e("info",s.sharedStyles.info,e)}warn(...e){this.isWarn&&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 pt=class{#e=!1;#t;constructor(e){this.#t=e}schedule(){this.#e||(this.#e=!0,queueMicrotask(()=>{this.#e=!1,this.#t()}))}};var Le=class{#e=new Map;#t=!1;#s;constructor(e){this.#s=e}add(...[e,t]){this.#e.set(e,t),!this.#t&&(this.#t=!0,queueMicrotask(()=>this.flush()))}flush(){if(this.#t=!1,this.#e.size===0)return;let e=this.#e;this.#e=new Map,this.#s(e)}};function S(s,e,t,...r){try{e()}catch(i){s.error(t,...r,i)}}function Xn(s,e){s.indexOf(e)===-1&&s.push(e)}function Jr(s,e){let t=s.indexOf(e);t!==-1&&s.splice(t,1),s.push(e)}function Ht(s,e){let t=s.indexOf(e);t!==-1&&s.splice(t,1)}var Qe="#root",Ee=Symbol("shadow-objects/property-without-value"),Yt=class{#e;get uuid(){return this.#e}constructor(e){this.#e=e}#t=!0;#s=0;#r=0;hasChanges(){return this.#t&&this.isCreated||this.isDestroyed||this.#u!==void 0&&this.#u!==this.#i||this.#h()||this.#l!==void 0&&this.#l!==this.#o||this.#f.length>0||this.#y.length>0}get isNew(){return this.#t}get isCreated(){return this.#s>0&&this.#s>this.#r}get isDestroyed(){return this.#r>0&&this.#r>=this.#s}#i=_;#n;#o=0;#a=!1;#u;#c;#l;create(e=_,t,r=0,i=!1){this.#s++,this.#u=e,this.#c=t??Qe,this.#l=r||void 0,this.#a=i}destroy(){this.#r++}#h(){return this.#c===void 0?!1:(this.#c===Qe?void 0:this.#c)!==this.#n}clear(){this.#u=void 0,this.#c=void 0,this.#l=void 0,this.#d.clear(),this.#f.length=0,this.#g=void 0,this.#y.length=0,this.#p.clear()}changeToken(e){e??=_,!(e===this.#i&&this.#u===void 0&&!this.#t)&&(this.#u=e)}setParent(e){let t=e??Qe;t===(this.#n??Qe)&&this.#c===void 0||(this.#c=t)}changeOrder(e){e===this.#o&&this.#l===void 0||(this.#l=e)}#v=new Map;#d=new Map;#f=[];#g;changeProperty(e,t,r){let i=(u,c)=>u===Ee||c===Ee||r==null?u===c:r(u,c),n=this.#f.includes(e),o=this.#g?.has(e)??!1,a;n?a=this.#d.get(e):o?a=this.#g.get(e):a=this.#v.get(e);let l=!i(t,a);return!o&&(n?i(t,this.#v.get(e)):!l)?(this.#d.delete(e),Ht(this.#f,e)):(this.#d.set(e,t),Jr(this.#f,e)),l}setPropertyWithoutValue(e){return this.changeProperty(e,Ee)}removeProperty(e){let t=this.#f.includes(e);if(this.#d.delete(e),!this.#v.has(e)&&!this.#g?.has(e)){Ht(this.#f,e);return}t||Jr(this.#f,e)}getProperties(){let e=new Map(this.#v);for(let t of this.#f){let r=this.#d.get(t);r===void 0?e.delete(t):e.set(t,r)}return e}#y=[];#p=new Set;createEvent(e,t,r){this.#y.push({type:e,data:t});for(let i of r??[])this.#p.add(i)}transferEventsTo(e){this.#y.length>0&&(e.#y.push(...this.#y),this.#y.length=0),this.#p.size>0&&(e.#p=new Set([...e.#p,...this.#p]),this.#p.clear())}buildChangeTrail(e,t){let{isNew:r,isCreated:i,isDestroyed:n}=this;if(!(r&&n))switch(t){case we.StructuralChanges:r?e.push(this.makeCreateEntityChange()):n||(this.#h()?e.push(this.makeSetParentChange()):this.#l!==void 0&&this.#l!==this.#o&&e.push(this.makeUpdateOrderChange()),this.#u!==void 0&&this.#u!==this.#i&&e.push(this.makeChangeToken()));break;case we.ContentUpdates:!r&&i&&this.#f.length>0&&e.push(this.makeChangePropertyChange()),this.#y.length>0&&e.push(this.makeEvents());break;case we.Removal:n&&e.push(this.makeDestroyEntityChange());break}}makeEvents(){let e={type:v.SendEvents,uuid:this.#e,events:this.#y.slice(0)};return this.#p.size>0&&(e.transferables=Array.from(this.#p)),e}makeCreateEntityChange(){let e=this.#u??this.#i,t={type:v.CreateEntities,uuid:this.#e,token:e};if(this.#c!==void 0&&this.#c!==Qe&&(t.parentUuid=this.#c),this.#d.size>0){let r=[];for(let[i,n]of this.#d)n===Ee?r.push([i]):n!==void 0&&r.push([i,n]);this.#m(r),r.length>0&&(t.properties=r)}return this.#l!==void 0&&this.#l!==this.#o&&(t.order=this.#l),this.#a&&(t.autoDestructionOnParentRemoval=!0),t}makeDestroyEntityChange(){return{type:v.DestroyEntities,uuid:this.#e}}makeSetParentChange(){let e={type:v.SetParent,uuid:this.#e,parentUuid:this.#c===Qe?void 0:this.#c};return this.#l!==void 0&&this.#l!==this.#o&&(e.order=this.#l),e}makeUpdateOrderChange(){return{type:v.UpdateOrder,uuid:this.#e,order:this.#l??0}}makeChangeToken(){return{type:v.ChangeToken,uuid:this.#e,token:this.#u??_}}makeChangePropertyChange(){let e=this.#f.map(t=>{let r=this.#d.get(t);return r===Ee?[t]:[t,r]});return this.#m(e),{type:v.ChangeProperties,uuid:this.#e,properties:e}}#m(e){this.#g=new Map(e.map(t=>[t[0],t.length===1?Ee:t[1]]))}commitChange(e){switch(e.type){case v.CreateEntities:this.#w(e.token),this.#S(e.parentUuid),this.#C(e.order??this.#o),this.#k(e.properties);for(let t of this.#f.slice(0))this.#d.get(t)===void 0&&!this.#v.has(t)&&(this.#d.delete(t),Ht(this.#f,t));this.#g=void 0,this.#t=!1;break;case v.SetParent:this.#S(e.parentUuid),this.#C(e.order??this.#o);break;case v.UpdateOrder:this.#C(e.order);break;case v.ChangeToken:this.#w(e.token);break;case v.ChangeProperties:this.#k(e.properties),this.#g=void 0;break;case v.SendEvents:this.#y.splice(0,e.events.length);for(let t of e.transferables??[])this.#p.delete(t);break;case v.DestroyEntities:this.#i=_,this.#n=void 0,this.#o=0,this.#v.clear(),this.#g=void 0,this.#t=!0;break}}#w(e){this.#i=e,this.#u===e&&(this.#u=void 0)}#S(e){this.#n=e,(this.#c===Qe?void 0:this.#c)===e&&(this.#c=void 0)}#C(e){this.#o=e,this.#l===e&&(this.#l=void 0)}#k(e){for(let t of e??[]){let r=t[0],i=t.length===1?Ee:t[1];i===void 0?this.#v.delete(r):this.#v.set(r,i),this.#d.get(r)===i&&(this.#d.delete(r),Ht(this.#f,r))}}};var Zn=s=>{if(s===void 0)return;let e=s.filter(t=>t.length===1||t[1]!==void 0);return e.length===0?void 0:e},Xr=(s,e)=>{if(s===e||e===void 0)return s;if(s===void 0)return Zn(e)?.map(t=>t.length===1?[t[0]]:[t[0],t[1]]);for(let t of e){let r=t[0],i=t.length===1?[r]:[r,t[1]],n=s.findIndex(([o])=>o===r);n===-1?s.push(i):s[n]=i}return Zn(s)};var Ns=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===v.CreateEntities)this.createEntity(t);else if(this.#e.has(t.uuid))switch(t.type){case v.DestroyEntities:this.destroyEntity(t);break;case v.SetParent:this.setParent(t);break;case v.UpdateOrder:this.updateOrder(t);break;case v.ChangeToken:this.changeToken(t);break;case v.ChangeProperties:this.changeProperties(t);break}}changeProperties({uuid:e,properties:t}){let r=this.getComponentState(e);r.properties=Xr(r.properties,t)}changeToken({uuid:e,token:t}){this.getComponentState(e).token=t||_}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,r!==void 0&&(i.order=r)}destroyEntity({uuid:e}){this.#e.delete(e)}createEntity({uuid:e,token:t,parentUuid:r,order:i,properties:n,autoDestructionOnParentRemoval:o}){this.#e.set(e,{token:t||_,parentUuid:r,order:i??0,properties:Xr(void 0,n),...o?{autoDestructionOnParentRemoval:!0}:{}})}};var _s=class{#e=[];#t=new Set;get uuids(){return this.#e}get size(){return this.#e.length}has(e){return this.#t.has(e)}push(e){this.#e.push(e),this.#t.add(e)}insertAt(e,t){this.#e.splice(e,0,t),this.#t.add(t)}delete(e){if(!this.#t.delete(e))return!1;let t=this.#e.indexOf(e);return t!==-1&&this.#e.splice(t,1),!0}clear(){this.#e.length=0,this.#t.clear()}},Kt=class extends Error{constructor(e="the component context has been disposed"){super(e),this.name="ComponentContextDisposedError"}},Zr=class extends Error{constructor(e){super(`the view component cannot join the component context because the uuid ${e} is already held by another component`),this.name="ComponentUuidInUseError",this.uuid=e}},R=class s{static{this.ReRequestParentRoots="re-request-parent-roots"}static{this.ReRequestParent="re-request-parent"}static{this.ReRequestEntHost="re-request-ent-host"}static getContextsMap(){return globalThis.__shadowObjectsContexts==null&&(globalThis.__shadowObjectsContexts=new Map),globalThis.__shadowObjectsContexts}static get(e){let t=Ke(e),r=s.getContextsMap();return r.has(t)?r.get(t):new s(t)}#e=new Map;#t=new _s;#s=!1;#r=new Set;#i(e){let t=this.#e.get(e.uuid);return t!==void 0&&t.component===e?t:void 0}#n=new Ns;#o=new C("ComponentContext");#a;#u(e){return e.filter(t=>t.isDestroyed||t.isNew&&!t.isCreated)}#c(e,t){for(let r of e)t?.has(r)||r.isCreated||this.#g(r.uuid,r)}#l(){let e=this.#a;e!=null&&(this.#a=void 0,this.#c(e.retiring))}constructor(e=Ye){let t=Ke(e),r=s.getContextsMap();if(r.has(t))return r.get(t);this.ns=t,r.set(t,this)}get isDisposed(){return this.#s}addComponent(e){if(this.#s)throw new Kt(`the view component ${e.uuid} cannot join the component context because it has been disposed`);let t=this.#e.get(e.uuid);if(t){if(t.component!==e){if(this.#r.has(t.component))throw new Zr(e.uuid);for(let r of[...t.children.uuids])this.#e.get(r)?.component.removeFromParent()}t.component=e,t.children.clear()}else t={component:e,children:new _s,changes:new Yt(e.uuid),propIsEqual:void 0},this.#e.set(e.uuid,t);t.changes.create(e.token,e.parent?.uuid,e.order,e.autoDestructionOnParentRemoval),e.parent?(this.addToChildren(e.parent,e),t.changes.setParent(e.parent.uuid)):this.#p(e,this.#t),this.#r.add(e),this.#m=void 0}hasComponent(e){return this.#r.has(e)}hasComponents(){return this.#e.size>0}isRootComponent(e){return this.#i(e)!==void 0&&this.#t.has(e.uuid)}destroyComponent(e){this.#r.delete(e);let t=this.#i(e);if(t!==void 0&&!t.changes.isDestroyed){for(let r of[...t.children.uuids])this.#e.get(r)?.component.removeFromParent();t.changes.destroy(),this.#m=void 0}e.context===this&&e.destroy()}getChildren(e){let t=this.#i(e)?.children;if(t===void 0)return[];let r=[];for(let i of t.uuids){let n=this.#e.get(i);n!==void 0&&r.push(n.component)}return r}removeFromParent(e,t){let r=this.#i(t);if(r===void 0)return;let i=this.#i(e);i!==void 0&&r.children.delete(e.uuid)&&(i.changes.setParent(void 0),this.#p(i.component,this.#t),this.#m=void 0)}moveToRoot(e){let t=this.#i(e);if(t===void 0)return;(e.parent?this.#i(e.parent):void 0)?.children.delete(e.uuid),t.changes.setParent(void 0),this.#p(t.component,this.#t),this.#m=void 0}changeToken(e,t){this.#i(e)?.changes.changeToken(t)}isChildOf(e,t){let r=this.#i(t);return r!==void 0&&this.#i(e)!==void 0&&r.children.has(e.uuid)}addToChildren(e,t){let r=this.#i(e);if(r){let i=this.#i(t);if(i===void 0)return;this.#p(t,r.children),i.changes.setParent(e.uuid),this.#t.delete(t.uuid),this.#m=void 0}else throw new Error(`the view component ${e.uuid} cannot have a child added to it because this context does not hold it`)}removeSubTree(e){this.#h(e,new Set)}#h(e,t){if(t.has(e))return;t.add(e);let r=this.#e.get(e);if(r){for(let i of[...r.children.uuids])this.#h(i,t);this.#g(e),this.destroyComponent(r.component)}}setProperty(e,t,r,i){let n=this.#i(e);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}setPropertyWithoutValue(e,t){let r=this.#i(e);return r!=null?(r.propIsEqual?.delete(t),r.changes.setPropertyWithoutValue(t)):!1}removeProperty(e,t){this.#i(e)?.changes.removeProperty(t)}transferPropertiesTo(e,t){let r=this.#i(e);if(r!==void 0)for(let[i,n]of r.changes.getProperties()){n===Ee?t.setPropertyWithoutValue(e,i):t.setProperty(e,i,n);let o=r.propIsEqual?.get(i);o!=null&&t.#v(e,i,o)}}#v(e,t,r){let i=this.#i(e);i!==void 0&&(i.propIsEqual??=new Map,i.propIsEqual.set(t,r))}changeOrder(e){let t=this.#i(e);if(t===void 0)return;let r=e.parent?this.#i(e.parent):void 0;r!==void 0?(r.children.delete(e.uuid),this.#p(e,r.children)):e.parent==null&&(this.#t.delete(e.uuid),this.#p(e,this.#t)),t.changes.changeOrder(e.order),this.#m=void 0}traverseLevelOrderBFS(){return this.#w().map(e=>e.component)}dispatchShadowObjectsEvent(e,t,r,i){this.#i(e)?.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.uuids])this.dispatchMessage(e,s.ReRequestParentRoots)}dispatchReRequestParentChildren(e){for(let t of this.getChildren(e))this.dispatchMessage(t.uuid,s.ReRequestParentRoots)}dispatchReRequestParentSiblings(e,t=void 0){let r=e.parent;if(r==null){this.dispatchReRequestParentRoots();return}for(let i of this.getChildren(r))i!==e&&this.dispatchMessage(i.uuid,s.ReRequestParent,t)}#d=new Le(e=>this.#f(e));collectPeerReRequest(e,t=void 0){this.#d.add(e,t)}#f(e){let t=new Map;for(let[r,i]of e){if(!this.#r.has(r))continue;let n=r.parent??null,o=t.get(n);o===void 0?t.set(n,{data:i}):o.data=void 0}for(let[r,i]of t)S(this.#o,()=>{if(r==null)this.dispatchReRequestParentRoots();else for(let n of this.getChildren(r))this.dispatchMessage(n.uuid,s.ReRequestParent,i.data)},"a peer re-request round could not be delivered:",r?.uuid??"roots")}buildChangeTrails(e=!0){this.#d.flush(),this.#a!=null&&(this.#o.debug("committing an open change trail because a second one is being built",this.#a.entries),this.commitChangeTrail(this.#a.entries.length));let t=[],r=[],i=this.hasComponents()?this.#y():[],n=(o,a)=>{let l=t.length;o.buildChangeTrail(t,a);for(let h=l;h<t.length;h++)r[h]=o};for(let o of i)n(o,we.StructuralChanges);for(let o of i)n(o,we.ContentUpdates);for(let o of i)n(o,we.Removal);return this.#a={entries:t,owners:r,retiring:this.#u(i)},e&&this.commitChangeTrail(t.length),t}commitChangeTrail(e,t){let r=this.#a;if(r==null||t!=null&&t!==r.entries)return;let{entries:i,owners:n,retiring:o}=r,a=Math.min(Math.max(e,0),i.length);this.#a=void 0;let l=new Set(n.slice(a));for(let h=0;h<a;h++)n[h].commitChange(i[h]);this.#n.write(a===i.length?i:i.slice(0,a)),this.#c(o,l)}hasComponentState(e){return this.#n.hasComponentState(e)}getComponentState(e){let t=this.#n.getComponentState(e);if(t!==void 0)return{...t,properties:t.properties?.map(r=>r.length===1?[r[0]]:[r[0],r[1]])}}reCreateChanges(){if(this.#n.isEmpty())return;let e=this.buildChangeTrails(!1);this.#n.write(e),this.#l();for(let[t,r]of this.#n){let i=this.#e.get(t);if(i){let n=new Yt(t);if(n.create(r.token,r.parentUuid,r.order,r.autoDestructionOnParentRemoval),r.properties)for(let o of r.properties){let a=o[0];o.length===1?n.setPropertyWithoutValue(a):n.changeProperty(a,o[1],i.propIsEqual?.get(a))}i.changes.transferEventsTo(n),i.changes.clear(),i.changes=n}}this.#n.clear(),this.broadcastEvent(zn)}clear(){this.#m=void 0,this.#n.clear(),this.#a=void 0;for(let e of Array.from(this.#r))e.destroy();this.#r.clear();for(let e of[...this.#t.uuids])this.removeSubTree(e);if(this.#t.size!==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!")}dispose(){if(this.#s)return;this.clear(),this.#s=!0;let e=s.getContextsMap();this.ns!=null&&e.get(this.ns)===this&&e.delete(this.ns)}#g(e,t){let r=this.#e.get(e);if(r===void 0||t!==void 0&&r.changes!==t)return;let i=r.component.parent?.uuid;if(i!==void 0){let n=this.#e.get(i);n!==void 0&&n.children.delete(e)}this.#e.delete(e),this.#t.delete(e),this.#m=void 0}#y(){return this.#w().filter(e=>e.changes.hasChanges()).map(e=>e.changes)}#p(e,t){if(t.has(e.uuid))return;let{order:r}=e,i=t.size>0?this.#e.get(t.uuids[t.size-1])?.component:void 0;if(i!==void 0&&r>=i.order){t.push(e.uuid);return}for(let n=0;n<t.size;n++){let o=this.#e.get(t.uuids[n])?.component;if(o!==void 0&&r<o.order){t.insertAt(n,e.uuid);return}}t.push(e.uuid)}#m;#w(){if(this.#m)return this.#m;let e=new Map,t=new Set,r=(i,n)=>{if(t.has(i))return;t.add(i);let o=this.#e.get(i);if(o==null)return;let a=e.get(n);a?a.push(o):e.set(n,[o]);for(let l of o.children.uuids)r(l,n+1)};for(let i of this.#t.uuids)r(i,0);return this.#m=Array.from(e.entries()).sort((i,n)=>i[0]-n[0]).flatMap(([,i])=>i),this.#m}};var so=16,eo=s=>{s[6]=s[6]&15|64,s[8]=s[8]&63|128;let e=Array.from(s,t=>t.toString(16).padStart(2,"0")).join("");return`${e.slice(0,8)}-${e.slice(8,12)}-${e.slice(12,16)}-${e.slice(16,20)}-${e.slice(20)}`},to=!1,Ml=()=>{to||(to=!0,new C("generateUUID").error("no Web Crypto API in this realm: entity uuids come from Math.random() and are not unguessable"));let s=new Uint8Array(so);for(let e=0;e<s.length;e++)s[e]=Math.random()*256|0;return s},ro=()=>{let s=globalThis.crypto;return typeof s?.randomUUID=="function"?s.randomUUID():typeof s?.getRandomValues=="function"?eo(s.getRandomValues(new Uint8Array(so))):eo(Ml())};var Je=class extends Error{constructor(e){super(e),this.name="ViewComponentError"}};function io(s,e){if(s.context==null)throw new Je("cannot add a child to a destroyed view component");if(s.context!==e)throw new Je("cannot add a child from another context");if(!e.hasComponent(s))throw new Je("cannot add a child to a view component its context does not hold")}var Qt=class s{static{this.Destroyed="view-component-destroyed"}#e;#t;#s;#r;#i=0;#n;get uuid(){return this.#e}get token(){return this.#t}set token(e){e??=_,e!==this.#t&&(this.#t=e,this.#s?.changeToken(this,e))}get parent(){return this.#r}set parent(e){e?e.addChild(this):this.removeFromParent()}get context(){return this.#s}set context(e){let t=e??void 0;if(this.#s===t)return;if(t?.isDisposed)throw new Kt(`the view component ${this.#e} cannot join the component context because it has been disposed`);let r=this.#s;this.#s&&this.#o(),this.#s=t;try{t?.addComponent(this)}catch(i){throw this.#s=void 0,i}t!=null&&r!=null&&r.transferPropertiesTo(this,t)}get isDestroyed(){return this.#s==null}get order(){return this.#i}set order(e){let t=this.#i;this.#i=e??0,t!==this.#i&&this.#s?.changeOrder(this)}get autoDestructionOnParentRemoval(){return this.#n}constructor(e,t){M(this),t instanceof s&&(t={parent:t}),this.#e=t?.uuid??ro(),this.#t=e??_,this.#i=t?.order??0,this.#r=t?.parent,this.#n=t?.autoDestructionOnParentRemoval??!1;let r=t?.context??R.get();this.#r&&io(this.#r,r),this.context=r}isChildOf(e){return this.#r===e}removeFromParent(){this.#r?(this.#s?.removeFromParent(this,this.#r),this.#r=void 0):this.#s?.moveToRoot(this)}addChild(e){if(e.#s==null)throw new Je("cannot add a destroyed view component as a child");io(this,e.#s);for(let t=this;t!=null;t=t.#r)if(t===e)throw new Je("cannot add the component itself or one of its ancestors as a child: this would create a cycle");e.isChildOf(this)||(e.removeFromParent(),e.#r=this,this.#s.addToChildren(this,e))}setProperty(e,t,r){return this.#s?.setProperty(this,e,t,r)??!1}setPropertyWithoutValue(e){return this.#s?.setPropertyWithoutValue(this,e)??!1}removeProperty(e){this.#s?.removeProperty(this,e)}dispatchShadowObjectsEvent(e,t,r){this.#s?.dispatchShadowObjectsEvent(this,e,t,r)}dispatchEvent(e,t,r){if(ne(this,e,t),r)for(let i of this.#s?.getChildren(this)??[])i.dispatchEvent(e,t,r)}#o(){this.removeFromParent();let e=this.#s;this.#s=void 0,e?.destroyComponent(this)}destroy(){this.#o(),Object.hasOwn(this,"dispatchEvent")&&delete this.dispatchEvent,ne(this,s.Destroyed),E(this)}};var ei=s=>s instanceof Set&&s.size===0,no=(s,e)=>{if(s===e)return!0;if(s instanceof Set&&e instanceof Set){if(s.size!==e.size)return!1;for(let t of s)if(!e.has(t))return!1;return!0}return!1},oo=(s,e,t)=>{if(!t||ei(t))return;let r=Object.hasOwn(s,"dispatchEvent")?Object.getPrototypeOf(s).dispatchEvent:s.dispatchEvent,i=t instanceof Set?t:void 0,n=(o,a,l)=>{r.call(s,o,a,l),!(o===R.ReRequestParentRoots||o===R.ReRequestParent||o===R.ReRequestEntHost)&&(i&&!i.has(o)||e.dispatchEvent(new CustomEvent(o,{bubbles:!0,composed:!0,detail:a})))};return Object.defineProperty(s,"dispatchEvent",{value:n,writable:!0,configurable:!0}),()=>{Object.hasOwn(s,"dispatchEvent")&&s.dispatchEvent===n&&delete s.dispatchEvent}};var Jt=new WeakMap,ao=new WeakSet,lo=s=>{if(!ao.has(s)){ao.add(s);for(let e of R.getContextsMap().values())e.broadcastEvent(R.ReRequestParent),e.broadcastEvent(R.ReRequestEntHost)}},Fs=class{#e;#t=new Set;constructor(e){this.#e=e}#s(e){for(let t=e.parentElement;t!=null;t=t.parentElement){if(t===this.#e)return!0;if(t.isShaeEntElement)return!1}return!1}#r(e){for(let t of this.#t){let r=t.deref();if(r===void 0)this.#t.delete(t);else if(r===e)return}this.#t.add(new WeakRef(e)),e.addEventListener("slotchange",this.#n,{capture:!1,passive:!1})}#i(e){e.removeEventListener("slotchange",this.#n,{capture:!1});for(let t of this.#t){let r=t.deref();(r===void 0||r===e)&&this.#t.delete(t)}}#n=e=>{let t=e.currentTarget;this.#s(t)||(this.#i(t),Jt.get(t)?.deref()===this.#e&&Jt.set(t,null),lo(e))};collect(){if(this.#e.findShadowRootHost()!=null)for(let e of this.#e.querySelectorAll("slot"))e.assignedNodes().length!==0&&this.#s(e)&&(Jt.set(e,new WeakRef(this.#e)),this.#r(e))}takeUp(e){let t=e.target;if(this.#s(t)){let r=Jt.get(t);Jt.set(t,new WeakRef(this.#e)),this.#r(t),r!==void 0&&r?.deref()!==this.#e&&lo(e)}}releaseAll(){for(let e of this.#t)e.deref()?.removeEventListener("slotchange",this.#n,{capture:!1});this.#t.clear()}};var Xe=new WeakMap,ho=(s,e)=>{let t=[];for(let{removedNodes:r}of e)for(let i of r){let n=s.watchers.get(i);n!=null&&(s.watchers.delete(i),t.push(n))}for(let r of t)try{r()}catch(i){console.error("a removal watcher failed:",i)}},Ll=s=>{let e=new Map,t={observer:new MutationObserver((r,i)=>{ho(t,r),e.size===0&&(i.disconnect(),Xe.get(s)===t&&Xe.delete(s))}),watchers:e};return t.observer.observe(s,{childList:!0,subtree:!1,attributes:!1}),t},co=(s,e,t)=>{let r=Xe.get(s);r!=null&&(ho(r,r.observer.takeRecords()),r=Xe.get(s)),r==null&&(r=Ll(s),Xe.set(s,r)),r.watchers.set(e,t)},ti=(s,e)=>{let t=Xe.get(s);t!=null&&t.watchers.delete(e)&&t.watchers.size===0&&(t.observer.disconnect(),Xe.delete(s))};var js=(s,e)=>{s.dispatchEvent(new CustomEvent(Rt,{bubbles:!0,composed:!0,detail:{...e,requester:s}}))};function Xt(s){return function(e,t){let r=s?.name||t.name,i=!!(s?.readAsValue??!1);return{get(){let n=Ir(this,r);if(n)return i?n.value:n.get()},set(n){Ir(this,r)?.set(n)},init(n){let o=f(n,s);return kn(this,r,o),pe.findOrCreate(this).attachSignalByName(r,o),o.value}}}}var ze=class extends Error{constructor(e,t,r){super(`the kernel applied ${e} of ${t} change trail entries`,r),this.name="ChangeTrailRefusedError",this.appliedCount=e,this.entryCount=t}};var zl=Object.create,li=Object.defineProperty,Dl=Object.getOwnPropertyDescriptor,fo=(s,e)=>(e=Symbol[s])?e:Symbol.for("Symbol."+s),bt=s=>{throw TypeError(s)},Wl=(s,e,t)=>e in s?li(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,uo=(s,e)=>li(s,"name",{value:e,configurable:!0}),$l=s=>[,,,zl(s?.[fo("metadata")]??null)],go=["class","method","getter","setter","accessor","field","value","get","set"],Zt=s=>s!==void 0&&typeof s!="function"?bt("Function expected"):s,Nl=(s,e,t,r,i)=>({kind:go[s],name:e,metadata:r,addInitializer:n=>t._?bt("Already initialized"):i.push(Zt(n||null))}),po=(s,e)=>Wl(e,fo("metadata"),s[3]),Bs=(s,e,t,r)=>{for(var i=0,n=s[e>>1],o=n&&n.length;i<o;i++)e&1?n[i].call(t):r=n[i].call(t,r);return r},yo=(s,e,t,r,i,n)=>{var o,a,l,h,u,c=e&7,P=!!(e&8),g=!!(e&16),Q=c>3?s.length+1:c?P?1:2:0,At=go[c+5],Tt=c>3&&(s[Q-1]=[]),cr=s[Q]||(s[Q]=[]),w=c&&(!g&&!P&&(i=i.prototype),c<5&&(c>3||!g)&&Dl(c<4?i:{get[t](){return d(this,n)},set[t](m){return k(this,n,m)}},t));c?g&&c<4&&uo(n,(c>2?"set ":c>1?"get ":"")+t):uo(i,t);for(var Be=r.length-1;Be>=0;Be--)h=Nl(c,t,l={},s[3],cr),c&&(h.static=P,h.private=g,u=h.access={has:g?m=>_l(i,m):m=>t in m},c^3&&(u.get=g?m=>(c^1?d:z)(m,i,c^4?n:w.get):m=>m[t]),c>2&&(u.set=g?(m,Ie)=>k(m,i,Ie,c^4?n:w.set):(m,Ie)=>m[t]=Ie)),a=(0,r[Be])(c?c<4?g?n:w[At]:c>4?void 0:{get:w.get,set:w.set}:i,h),l._=1,c^4||a===void 0?Zt(a)&&(c>4?Tt.unshift(a):c?g?n=a:w[At]=a:i=a):typeof a!="object"||a===null?bt("Object expected"):(Zt(o=a.get)&&(w.get=o),Zt(o=a.set)&&(w.set=o),Zt(o=a.init)&&Tt.unshift(o));return c||po(s,i),w&&li(i,t,w),g?c^4?n:w:i},hi=(s,e,t)=>e.has(s)||bt("Cannot "+t),_l=(s,e)=>Object(e)!==e?bt('Cannot use the "in" operator on this value'):s.has(e),d=(s,e,t)=>(hi(s,e,"read from private field"),t?t.call(s):e.get(s)),D=(s,e,t)=>e.has(s)?bt("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(s):e.set(s,t),k=(s,e,t,r)=>(hi(s,e,"write to private field"),r?r.call(s,t):e.set(s,t),t),z=(s,e,t)=>(hi(s,e,"access private method"),t),vo=(s,e,t,r)=>({set _(i){k(s,e,i,t)},get _(){return d(s,e,r)}}),mo,wo,F,he,Ze,et,mt,De,si,We,ci,ui,I,wt,O,ri,bo,yt,vt,Is,di,Eo,ii,fi,ni,oi,ai,Co,So,$e=class extends Error{constructor(e="the shadow environment has been destroyed"){super(e),this.name="ShadowEnvDestroyedError"}};wo=[Xt()],mo=[Xt()];var j=class es{constructor(){D(this,O),D(this,F),D(this,he),D(this,Ze,!1),D(this,et,!1),D(this,mt,!1),D(this,De),D(this,si,new C("ShadowEnv")),this.ns$=f(),D(this,ci,Bs(We,8,this,!1)),Bs(We,11,this),D(this,ui,Bs(We,12,this,!1)),Bs(We,15,this),D(this,I,!1),D(this,wt),D(this,yt,0),D(this,vt),D(this,Is),this.ready=async()=>{if(d(this,I))throw new $e;return this.isReady?this:Promise.race([wr(this,es.ContextCreated),z(this,O,di).call(this)])},D(this,ii,()=>{d(this,Ze)&&z(this,O,fi).call(this)});let e=this;oe(e,es.ContextCreated),p(e,es.ContextLost,B.Critical,()=>{Dt(e,es.ContextCreated)})}static get(e){if(e!=null)return globalThis.__shadowEnvs?.get(e)}get logger(){return d(this,si)}get isDestroyed(){return d(this,I)}get view(){return d(this,F)}set view(e){e!==d(this,F)&&(e&&z(this,O,ri).call(this),z(this,O,bo).call(this,d(this,F)?.ns),k(this,F,e??void 0),d(this,F)?.ns&&(globalThis.__shadowEnvs??=new Map,globalThis.__shadowEnvs.has(d(this,F).ns)&&globalThis.__shadowEnvs.get(d(this,F).ns)!==this&&this.logger.warn("overwrite a namespace already in use",d(this,F).ns,globalThis.__shadowEnvs.get(d(this,F).ns)),globalThis.__shadowEnvs.set(d(this,F).ns,this)),this.ns$.set(d(this,F)?.ns),this.viewReady=!!e)}get envProxy(){return d(this,he)}set envProxy(e){if(e!==d(this,he)){e&&z(this,O,ri).call(this);let t=d(this,he);k(this,he,e??void 0);let r=++vo(this,yt)._;d(this,he)&&(d(this,he).onMessageToView=z(this,O,Co).bind(this),d(this,he).onProxyFailed=z(this,O,So).bind(this)),t&&(t.destroy(),t.onProxyFailed=void 0,queueMicrotask(()=>{t.onMessageToView=void 0})),this.proxyReady=!1,e?.start().then(()=>{r===d(this,yt)&&(this.proxyReady=!0)}).catch(i=>{r===d(this,yt)&&(this.logger.error("failed to start envProxy",i),this.proxyReady=!1)})}}get isReady(){return!!(d(this,F)&&d(this,he)&&this.proxyReady&&!this.isDestroyed)}sync(){if(!d(this,I)){if(!this.isReady){k(this,et,!0);return}d(this,Ze)||(k(this,Ze,!0),queueMicrotask(d(this,ii)))}}syncWait(){return d(this,I)?Promise.reject(new $e):(k(this,mt,!0),this.sync(),d(this,De)??k(this,De,z(this,O,Eo).call(this)),d(this,De).promise)}destroy(){var e;d(this,I)||(k(this,I,!0),k(this,Ze,!1),k(this,et,!1),k(this,mt,!1),this.envProxy=void 0,this.view=void 0,(e=d(this,Is))==null||e.call(this,new $e),k(this,De,void 0),d(this,wt)?.destroy(),k(this,wt,void 0),Bt(this),E(this),Object.freeze(this))}};We=$l(null);F=new WeakMap;he=new WeakMap;Ze=new WeakMap;et=new WeakMap;mt=new WeakMap;De=new WeakMap;si=new WeakMap;ci=new WeakMap;ui=new WeakMap;I=new WeakMap;wt=new WeakMap;O=new WeakSet;ri=function(){if(d(this,I)||d(this,wt)!=null)return;let s=this;H(()=>{k(this,wt,T(()=>{if(this.viewReady&&this.proxyReady)return this.view.reCreateChanges(),z(this,O,oi).call(this,j.ContextCreated,s),d(this,et)&&(k(this,et,!1),z(this,O,fi).call(this)),()=>{z(this,O,oi).call(this,j.ContextLost,s)}},[xe(this,"viewReady"),xe(this,"proxyReady")]))})};bo=function(s){if(!s)return;let e=globalThis.__shadowEnvs;e?.get(s)===this&&e.delete(s)};yt=new WeakMap;vt=new WeakMap;Is=new WeakMap;di=function(){return d(this,vt)==null&&(k(this,vt,new Promise((s,e)=>{k(this,Is,e)})),d(this,vt).catch(()=>{})),d(this,vt)};Eo=function(){let s,e,t=new Promise((r,i)=>{s=r,e=i});return{promise:Promise.race([t,z(this,O,di).call(this)]),resolve:s,reject:e}};ii=new WeakMap;fi=async function(){if(k(this,Ze,!1),d(this,I))return;if(!this.isReady){k(this,et,!0);return}let s=this.view.buildChangeTrails(!1),e=d(this,De);k(this,De,void 0);let t=d(this,mt);k(this,mt,!1);try{s.length>0&&await this.envProxy.applyChangeTrail(s,t)}catch(r){if(d(this,I))return;this.logger.error("failed to apply change trail",r),z(this,O,ni).call(this,s,r),z(this,O,ai).call(this,s,e,{reason:r});return}d(this,I)||(z(this,O,ni).call(this,s),z(this,O,ai).call(this,s,e))};ni=function(s,e){let t=e instanceof ze?e.appliedCount:s.length;this.view?.commitChangeTrail(t,s)};oi=function(s,e){try{W(e,s,e)}catch(t){this.logger.error(`a ${s} listener threw`,t)}};ai=function(s,e,t){try{t?(e?.reject(t.reason),W(this,j.SyncFailed,t.reason,s,this)):(e?.resolve(s),W(this,j.AfterSync,s))}catch(r){this.logger.error("a sync cycle listener threw",r)}};Co=function(s){this.logger.debug("onMessageToView",s.type,s.data),this.view?.dispatchMessage(s.uuid,s.type,s.data,s.traverseChildren)};So=function(s){if(!d(this,I)){this.logger.error("the environment proxy failed",s),++vo(this,yt)._;try{W(this,j.ProxyFailed,s,this)}finally{this.proxyReady=!1}}};yo(We,4,"viewReady",wo,j,ci);yo(We,4,"proxyReady",mo,j,ui);po(We,j);j.AfterSync="afterSync";j.SyncFailed="syncFailed";j.ContextLost="contextLost";j.ContextCreated="contextCreated";j.ProxyFailed="proxyFailed";var Y=j;var Us=class{#e;#t=!1;#s=!1;constructor(e){this.#e=e}schedule(){this.#t=!0,!this.#s&&(this.#s=!0,queueMicrotask(()=>{this.#s=!1,this.#t&&(this.#t=!1,this.#e())}))}cancel(){this.#t=!1}};var ko=new WeakMap,Ao=s=>`${Array.from(s,e=>CSS.escape(e)).join(",")}{display:contents}`,Fl=s=>s.nodeType===9,jl=s=>s.nodeType===11&&s.host!=null,Vs=(s,e)=>{let t,r,i;if(Fl(s))t=s.head??s.documentElement??s,r=s,i=s;else if(jl(s))t=s,r=s.ownerDocument,i=s;else return;let n=ko.get(i);if(n?.style.isConnected){if(n.tags.has(e))return;n.tags.add(e),n.style.textContent=Ao(n.tags);return}let o=n?.tags??new Set;o.add(e);let a=r.createElement("style");a.textContent=Ao(o),t.prepend(a),ko.set(i,{tags:o,style:a})};var Et=class extends HTMLElement{#e=!1;#t=!1;#s=new Us(()=>this.destroy());get isDestroyed(){return this.#e}connectedCallback(){H(()=>{this.#s.cancel(),this.#e=!1,this.#t||(this.#t=!0,this.restore()),Vs(this.getRootNode(),this.localName)})}disconnectedCallback(){this.#s.schedule()}destroy(){this.#e||(this.#e=!0,this.#t=!1,this.teardown())}restore(){}teardown(){}};var To=(s,e)=>{e.set(Gn(s))},Bl=new C("ShaeElement"),Il=new Le(s=>{for(let e of s.keys())S(Bl,()=>Y.get(e)?.sync(),"a namespace could not be synced:",e)}),Ro=s=>{Il.add(s)},Ne=class extends Et{constructor(){super(),this.isShaeElement=!0,this.ns$=f(Ye),this.#e=!1,To(this,this.ns$)}static{this.observedAttributes=["ns"]}get ns(){return this.ns$.value}set ns(e){typeof e=="symbol"?this.ns$.set(e):this.ns$.set(Ke(e))}#e;#t;#s;#r(){this.#s=this.ns$.onChange(e=>this.#i(e))}#i(e){this.reflectAttribute("ns",()=>{typeof e=="string"&&e.length>0?this.getAttribute("ns")!==e&&this.setAttribute("ns",e):this.removeAttribute("ns")})}restore(){super.restore(),this.#r(),this.#i(this.ns$.value)}reflectAttribute(e,t){this.#e?t():(this.#t??=new Map,this.#t.set(e,t))}connectedCallback(){H(()=>{super.connectedCallback(),this.#e=!0;let e=this.#t;if(this.#t=void 0,e)for(let t of e.values())t()})}teardown(){this.#s?.(),this.#s=void 0,super.teardown()}attributeChangedCallback(e){e==="ns"&&To(this,this.ns$)}syncShadowObjects(){Ro(this.ns)}syncShadowObjectsOf(e){Ro(e)}};var Po=s=>s.assignedSlot??s.parentNode??s.host??void 0,Ul=(s,e)=>{for(let t=Po(s);t!=null;t=Po(t))if(t===e)return!0;return!1},Vl=s=>{for(let e=s.getRootNode();e?.host!=null;e=e.host.getRootNode())if(e.mode==="closed")return!0;return!1},Gs=class extends Ne{constructor(){super(),this.isShaeEntElement=!0,this.componentContext$=f(),this.viewComponent$=f(),this.token$=f(),this.forwardCustomEvents$=f(!1),this.#e=new C("ShaeEntElement"),this.#t=this.isConnected,this.#r=f(0),this.#i=new pt(()=>{this.#r.set(this.#r.value+1)}),this.#y=e=>{let t=this.token$.value,r=this.viewComponent$.value;try{r?r.context=e:e&&(r=new Qt(t??_,{context:e,autoDestructionOnParentRemoval:Oe(this,Li)}),this.viewComponent$.set(r))}catch(i){this.logger.error("applying the component context of this entity failed:",{ns:this.ns,uuid:r?.uuid},i)}this.syncShadowObjects()},this.#C=!0,this.#M=new Fs(this),this.#z=e=>{this.#T(),this.#M.takeUp(e);let t=this.findShadowRootHost();t!=null&&this.dispatchEvent(new CustomEvent(hs,{bubbles:!0,composed:!0,detail:{requester:this,shadowRootHost:t}}))},this.#D=e=>{let t=e.detail?.requester;if(t===this||!t?.isShaeEntElement||t.ns!==this.ns)return;e.detail?.shadowRootHost&&this.#P()},this.#W=e=>{let t=e.detail;t?.requester==null||t.requester===this||typeof t.answer=="function"&&(t.ns!==void 0&&t.ns!==this.ns||(e.stopPropagation(),t.answer(this)))},this.#$(),this.#_()}static{this.observedAttributes=[...Ne.observedAttributes,de,J]}#e;get logger(){return this.#e}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)}#t;#s;#r;#i;#n;#o;#a;#u;#c;#l;#h(){this.#n=this.ns$.onChange(e=>{let t=this.componentContext,r=t?.ns,i=this.viewComponent;t!=null&&i!=null&&t.dispatchReRequestParentChildren(i),this.#x(void 0),this.componentContext$.set(R.get(e)),this.isConnected&&(this.#P(),this.#E()),r!=null&&r!==e&&this.syncShadowObjectsOf(r)}),this.#o=this.token$.onChange(e=>this.#v(e)),this.#a=this.forwardCustomEvents$.onChange(e=>this.#d(e)),this.#u=T(()=>{let e=this.viewComponent$.get();if(this.#r.get(),!e)return;let t=[p(e,R.ReRequestParentRoots,()=>this.#O()),p(e,R.ReRequestParent,r=>this.#R(r?.newAncestor)),p(e,R.ReRequestEntHost,()=>this.#T()),p(e,Qt.Destroyed,()=>this.#i.schedule())];return()=>{for(let r of t)r()}}),this.#c=T(()=>{let e=this.viewComponent$.get();if(this.#r.get(),!!e)return oo(e,this,this.forwardCustomEvents$.get())}),this.#l=this.token$.onChange(e=>this.#f(e))}#v(e){this.reflectAttribute(de,()=>{e==null?this.removeAttribute(de):this.getAttribute(de)!==e&&this.setAttribute(de,e)})}#d(e){this.reflectAttribute(J,()=>{if(!e||ei(e))this.removeAttribute(J);else if(e===!0)this.getAttribute(J)!==""&&this.setAttribute(J,"");else{let t=Array.from(e).join(",");this.getAttribute(J)!==t&&this.setAttribute(J,t)}})}#f(e){let t=this.viewComponent$.value;t==null||t.token===e||(t.token=e,this.syncShadowObjects())}restore(){super.restore(),this.#h(),this.#v(this.token$.value),this.#d(this.forwardCustomEvents$.value),this.#f(this.token$.value)}#g;#y;#p(){this.#g?.();let e=this.componentContext$.onChange(this.#y);this.#g=()=>{e()}}#m(){this.#g?.(),this.#g=void 0}#w(){return this.getRootNode()?.host}#S;#C;findShadowRootHost(){return this.#C&&(this.#C=!1,this.#S=this.#w()),this.#S}getParentNodeForObserver(){return this.parentNode??this.#w()??void 0}connectedCallback(){H(()=>{super.connectedCallback(),this.#C=!0,this.addEventListener("slotchange",this.#z,{capture:!1,passive:!1}),this.addEventListener(Rt,this.#W,{capture:!1,passive:!1}),this.#p(),_r(()=>this.#$());let e=this.#N();no(e,this.forwardCustomEvents$.value)||this.forwardCustomEvents$.set(e),this.componentContext==null?this.componentContext$.set(R.get(this.ns)):this.#y(this.componentContext),this.#P(),this.#t&&(this.#E(),this.#T()),this.#M.collect(),this.#k(),this.syncShadowObjects()})}#k(){this.#b();let e=this.getParentNodeForObserver();if(e){co(e,this,()=>{this.#s=void 0;let r=this.getParentNodeForObserver();if(r===e){this.#k();return}this.onParentChanged(r,e)});let t=this.getParentNodeForObserver();if(t===e)this.#s=e;else if(ti(e,this),this.#s==null&&this.isConnected)try{this.onParentChanged(t,e)}catch(r){console.error("a removal watcher failed:",r)}}}#b(){this.#s!=null&&(ti(this.#s,this),this.#s=void 0)}onParentChanged(e,t){this.#x(void 0),this.#P(),this.#k()}attributeChangedCallback(e){super.attributeChangedCallback(e),e===de?this.#$():e===J&&this.#_()}disconnectedCallback(){this.#C=!0,this.#b(),this.#M.releaseAll(),this.#A(),this.#T(),this.#x(void 0);let e=this.viewComponent;e!=null&&this.componentContext?.dispatchReRequestParentChildren(e),this.componentContext$.set(void 0),this.syncShadowObjects(),this.#m(),super.disconnectedCallback()}teardown(){if(this.#n?.(),this.#n=void 0,this.#o?.(),this.#o=void 0,this.#a?.(),this.#a=void 0,this.#u?.destroy(),this.#u=void 0,this.#c?.destroy(),this.#c=void 0,this.#l?.(),this.#l=void 0,this.#m(),this.#b(),this.#M.releaseAll(),this.#x(void 0),this.isConnected){this.#A(),this.#T();let e=this.viewComponent;e!=null&&this.componentContext?.dispatchReRequestParentChildren(e)}super.teardown()}#A(){this.removeEventListener("slotchange",this.#z,{capture:!1}),this.removeEventListener(Rt,this.#W,{capture:!1})}#O(){this.isConnected&&(this.#x(void 0),this.#P())}#R(e){this.isConnected&&(e?.isConnected&&!Ul(this,e)||this.#P())}#E(){let e=this.viewComponent;if(e==null)return;let t=Vl(this)?void 0:this;this.componentContext?.collectPeerReRequest(e,{newAncestor:t})}#T(){this.dispatchEvent(new CustomEvent(Pt,{bubbles:!0,composed:!0,detail:{requester:this}}))}#P(){let e;js(this,{ns:this.ns,answer:t=>e=t}),this.#x(e)}#L;#x(e){if(this.entParentNode!==e)if(this.entParentNode&&this.entParentNode.removeEventListener(hs,this.#D,{capture:!1}),this.entParentNode=e,this.entParentNode&&this.entParentNode.addEventListener(hs,this.#D,{capture:!1,passive:!1}),this.#L?.(),this.#L=void 0,e){let t=T(()=>{let r=this.viewComponent$.get();if(r){let i=e.viewComponent$.get(),n=r.context;r.parent=n!=null&&i?.context===n?i:void 0,r.parent==null&&queueMicrotask(()=>{this.#P()}),this.syncShadowObjects()}});this.#L=()=>t.destroy()}else{let t=this.viewComponent;t?.parent&&(t.parent=void 0,this.syncShadowObjects())}}#M;#z;#D;#W;#$(){if(this.hasAttribute(de)){let e=this.getAttribute(de)?.trim()||void 0;this.token$.set(e)}else this.token$.set(void 0)}#N(){if(!this.hasAttribute(J))return!1;let e=this.getAttribute(J);if(!e||e.trim().length===0)return!0;let t=new Set(e.split(",").map(r=>r.trim()).filter(r=>r.length>0));return t.size>0?t:!1}#_(){this.forwardCustomEvents$.set(this.#N())}};customElements.define(Oi,Gs);var se=s=>s.split(/\W+/),ts=s=>s.split(/\s+/),yi=(s,e)=>{if(Number.isNaN(s))throw new TypeError(`not a number: "${e}"`);return s},pi=s=>e=>yi(s(e),e),Hs=(s,e)=>t=>e(t).map(r=>yi(s(r),r)),qs=s=>pi(e=>parseInt(e,s)),gi=s=>Hs(e=>parseInt(e,s),se),Ce=(s,e)=>t=>new s(e(t).map(r=>yi(Number(r),r))),xo=s=>e=>new s(se(e).map(t=>BigInt(t))),Gl=s=>Gt.has(s.toLowerCase()),ql=[[["string","text"],s=>s],[["number"],pi(Number)],[["bigint"],s=>BigInt(s)],[["float"],pi(parseFloat)],[["int","integer"],qs(10)],[["hex","hexadecimal"],qs(16)],[["oct","octal"],qs(8)],[["bin","binary"],qs(2)],[["bool","boolean"],Gl],[["[]","text[]","string[]"],se],[["number[]"],Hs(Number,ts)],[["float[]"],Hs(parseFloat,ts)],[["int[]","integer[]"],Hs(s=>parseInt(s,10),ts)],[["hex[]","hexadecimal[]"],gi(16)],[["oct[]","octal[]"],gi(8)],[["bin[]","binary[]"],gi(2)],[["bool[]","boolean[]"],s=>se(s).map(e=>Gt.has(e.toLowerCase()))],[["int8array"],Ce(Int8Array,se)],[["uint8array"],Ce(Uint8Array,se)],[["uint8clampedarray"],Ce(Uint8ClampedArray,se)],[["int16array"],Ce(Int16Array,se)],[["uint16array"],Ce(Uint16Array,se)],[["int32array"],Ce(Int32Array,se)],[["uint32array"],Ce(Uint32Array,se)],[["float32array"],Ce(Float32Array,ts)],[["float64array"],Ce(Float64Array,ts)],[["bigint64array"],xo(BigInt64Array)],[["biguint64array"],xo(BigUint64Array)],[["json"],s=>JSON.parse(s)]],vi=new Map(ql.flatMap(([s,e])=>s.map(t=>[t,e])));var Ys=new WeakMap,Hl=(s,e)=>{let t=Ys.get(s);t==null&&(t=new Map,Ys.set(s,t)),t.set(e,(t.get(e)??0)+1)},Yl=(s,e)=>{let t=Ys.get(s);if(t==null)return!0;let r=(t.get(e)??1)-1;return r>0?(t.set(e,r),!1):(t.delete(e),t.size===0&&Ys.delete(s),!0)},Ks=class extends Et{constructor(){super(),this.isShaePropElement=!0,this.entNode$=f(),this.viewComponent$=f(),this.name$=f(),this.valueIn$=f(),this.valueOut$=f(),this.type$=f(),this.shouldTrim$=f(!0),this.#e=new C("ShaePropElement"),this.#n=!1,this.#a=new pt(()=>{this.isConnected&&!this.isDestroyed&&this.#c()}),this.#c=()=>{let e;js(this,{answer:t=>e=t}),this.entNode$.set(e),e==null&&this.isConnected&&!this.#n&&(this.#n=!0,this.logger.warn(`[${this.name}] no entity above this element, the property is set nowhere`,{shaeProp:this})),this.#h()},this.#l=()=>{this.#a.schedule()},this.#h=()=>{let e=this.entNode$.value??this.ownerDocument;e!==this.#o&&(this.#v(),e.addEventListener(Pt,this.#l),this.#o=e)},this.#v=()=>{this.#o?.removeEventListener(Pt,this.#l),this.#o=void 0},this.#d=()=>{queueMicrotask(()=>{this.isConnected||this.entNode$.set(void 0)})},this.#f=()=>{this.name$.set(this.getAttribute(us)?.trim()??void 0)},this.#g=()=>{let e=this.getAttribute(ds);this.valueIn$.set(e===null||e===""?void 0:e)},this.#y=()=>{let e=this.getAttribute(fs)?.trim().toLowerCase();e&&!vi.has(e)&&(this.logger.warn(`[${this.name}] unknown type "${e}"`,{shaeProp:this}),e=void 0),this.type$.set(e)},this.#p=()=>{this.shouldTrim$.set(!Oe(this,gs))},q(()=>{this.#f(),this.#g(),this.#y(),this.#p()})}static{this.observedAttributes=[us,ds,fs,gs]}#e;get logger(){return this.#e}#t;#s;#r;#i;#n;#o;#a;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}#u(){this.#t=this.entNode$.onChange(e=>{if(e){let t=me(e.viewComponent$,this.viewComponent$);return()=>{t.destroy()}}else this.viewComponent$.set(void 0)}),this.#s=T(()=>{let e=this.viewComponent$.get(),t=this.name$.get();if(e==null||!t)return;let r=this.entNode$.value;return Hl(e,t),()=>{Yl(e,t)&&(e.removeProperty(t),r?.syncShadowObjects())}}),this.#r=T(()=>{let e=this.viewComponent$.get();if(e){let t=this.name$.get();if(t){let r=this.valueOut$.get();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()}}}),this.#i=T(()=>{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,typeof r=="string"&&e){let i=vi.get(e);if(i!=null)try{r=i(r)}catch(n){this.logger.error(`[${this.name}] could not convert the value into the type "${e}"`,{value:r,error:n,shaeProp:this}),r=void 0}}this.valueOut$.set(r)})}restore(){super.restore(),this.#u()}connectedCallback(){H(()=>{super.connectedCallback(),q(()=>{this.#c(),this.#f(),this.#g(),this.#y(),this.#p()})})}attributeChangedCallback(e){switch(e){case us:this.#f();break;case ds:this.#g();break;case fs:this.#y();break;case gs:this.#p();break}}disconnectedCallback(){this.#v(),this.#d(),super.disconnectedCallback()}teardown(){this.#v(),this.#t?.(),this.#t=void 0,this.#s?.destroy(),this.#s=void 0,this.#r?.destroy(),this.#r=void 0,this.#i?.destroy(),this.#i=void 0,super.teardown()}#c;#l;#h;#v;#d;#f;#g;#y;#p};customElements.define(Mi,Ks);var Oo=null,ss=class s{static{this.OnFrame=Symbol("onFrame")}static get(){return Oo??=new s,Oo}static#e=.75;#t=0;#s=0;#r=0;#i=void 0;constructor(e=0){M(this),this.maxFps=e}get maxFps(){return this.#s}set maxFps(e){this.#s=Number.isFinite(e)&&e>0?e:0}get subscriptionCount(){return on(this)}start(e){if(e!=null)return p(this,s.OnFrame,e),this.#a(),()=>{this.stop(e)}}stop(e){e!=null&&(E(this,s.OnFrame,e),this.subscriptionCount===0&&(this.#u(),this.#i=void 0,this.#r=0))}#n=e=>{if(this.#t=0,this.#o(e)){let t=this.#i??e;this.#i=e,this.#r+=1;let r={now:e/1e3,lastNow:t/1e3,frameNo:this.#r,deltaTime:(e-t)/1e3};ne(this,s.OnFrame,r)}this.subscriptionCount>0&&this.#a()};#o(e){return this.#s===0||this.#i===void 0?!0:e-this.#i>=s.#e*(1e3/this.#s)}#a(){this.#t===0&&(this.#t=requestAnimationFrame(this.#n))}#u(){this.#t!==0&&(cancelAnimationFrame(this.#t),this.#t=0)}};var Mo=`module has no "${Vt}" export`;async function mi(s,e,t,r=!0){if(t.has(e)){s.logger.warn("importModule: skipping already imported module",e);return}else t.add(e);e.extends&&await Promise.all(e.extends.map(n=>mi(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 Qs=class extends Error{constructor(e){super(`the kernel cannot create an entity because the uuid ${e} is already held by another entity`),this.name="EntityUuidInUseError",this.uuid=e}};var Js=Symbol("onCreate"),K=Symbol("onDestroy"),wi=Symbol("onParentChanged"),Ct=Symbol("onViewEvent");var Kl=Object.create,bi=Object.defineProperty,Ql=Object.getOwnPropertyDescriptor,Do=(s,e)=>(e=Symbol[s])?e:Symbol.for("Symbol."+s),kt=s=>{throw TypeError(s)},Jl=(s,e,t)=>e in s?bi(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,Lo=(s,e)=>bi(s,"name",{value:e,configurable:!0}),Xl=s=>[,,,Kl(s?.[Do("metadata")]??null)],Wo=["class","method","getter","setter","accessor","field","value","get","set"],rs=s=>s!==void 0&&typeof s!="function"?kt("Function expected"):s,Zl=(s,e,t,r,i)=>({kind:Wo[s],name:e,metadata:r,addInitializer:n=>t._?kt("Already initialized"):i.push(rs(n||null))}),$o=(s,e)=>Jl(e,Do("metadata"),s[3]),zo=(s,e,t,r)=>{for(var i=0,n=s[e>>1],o=n&&n.length;i<o;i++)e&1?n[i].call(t):r=n[i].call(t,r);return r},eh=(s,e,t,r,i,n)=>{var o,a,l,h,u,c=e&7,P=!!(e&8),g=!!(e&16),Q=c>3?s.length+1:c?P?1:2:0,At=Wo[c+5],Tt=c>3&&(s[Q-1]=[]),cr=s[Q]||(s[Q]=[]),w=c&&(!g&&!P&&(i=i.prototype),c<5&&(c>3||!g)&&Ql(c<4?i:{get[t](){return U(this,n)},set[t](m){return ns(this,n,m)}},t));c?g&&c<4&&Lo(n,(c>2?"set ":c>1?"get ":"")+t):Lo(i,t);for(var Be=r.length-1;Be>=0;Be--)h=Zl(c,t,l={},s[3],cr),c&&(h.static=P,h.private=g,u=h.access={has:g?m=>th(i,m):m=>t in m},c^3&&(u.get=g?m=>(c^1?U:_e)(m,i,c^4?n:w.get):m=>m[t]),c>2&&(u.set=g?(m,Ie)=>ns(m,i,Ie,c^4?n:w.set):(m,Ie)=>m[t]=Ie)),a=(0,r[Be])(c?c<4?g?n:w[At]:c>4?void 0:{get:w.get,set:w.set}:i,h),l._=1,c^4||a===void 0?rs(a)&&(c>4?Tt.unshift(a):c?g?n=a:w[At]=a:i=a):typeof a!="object"||a===null?kt("Object expected"):(rs(o=a.get)&&(w.get=o),rs(o=a.set)&&(w.set=o),rs(o=a.init)&&Tt.unshift(o));return c||$o(s,i),w&&bi(i,t,w),g?c^4?n:w:i},Ei=(s,e,t)=>e.has(s)||kt("Cannot "+t),th=(s,e)=>Object(e)!==e?kt('Cannot use the "in" operator on this value'):s.has(e),U=(s,e,t)=>(Ei(s,e,"read from private field"),t?t.call(s):e.get(s)),Xs=(s,e,t)=>e.has(s)?kt("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(s):e.set(s,t),ns=(s,e,t,r)=>(Ei(s,e,"write to private field"),r?r.call(s,t):e.set(s,t),t),_e=(s,e,t)=>(Ei(s,e,"access private method"),t),No,ce,Fe,os,Ci,Se,Zs,is,St="value";No=[Xt({name:St})];var ue=class{constructor(e){Xs(this,Se),Xs(this,ce,[]),Xs(this,Fe),Xs(this,Ci,zo(os,8,this)),zo(os,11,this),this.value$=void 0,oe(this,St),this.value$=xe(this,St),this.value$.onChange(t=>ne(this,St,t)),e&&this.add(...e)}add(...e){return U(this,ce).push(...e),_e(this,Se,is).call(this),_e(this,Se,Zs).call(this,e)}unshift(...e){return U(this,ce).unshift(...e),_e(this,Se,is).call(this),_e(this,Se,Zs).call(this,e)}remove(...e){_e(this,Se,Zs).call(this,e)()}clear(){U(this,ce).length=0,_e(this,Se,is).call(this)}dispose(){this.clear(),U(this,Fe)?.destroy(),ns(this,Fe,void 0),Dt(this,St),E(this),this.value$.destroy(),Bt(this)}};os=Xl(null);ce=new WeakMap;Fe=new WeakMap;Ci=new WeakMap;Se=new WeakSet;Zs=function(s){return()=>{for(let e of s){let t=U(this,ce).indexOf(e);t!==-1&&U(this,ce).splice(t,1)}_e(this,Se,is).call(this)}};is=function(){U(this,Fe)?.destroy(),U(this,ce).length===0?(ns(this,Fe,void 0),this.value=void 0):(ns(this,Fe,T(()=>{let s;for(let e of U(this,ce)){let t=dt(e);if(t!=null){s=t;break}}this.value=s},U(this,ce))),U(this,Fe).run())};eh(os,4,"value",No,ue,Ci);$o(os,ue);ue.Value=St;var _o=new WeakMap,sh=s=>{let e=_o.get(s);return e==null&&(e=new Le(t=>{for(let[r,i]of t)S(s.logger,()=>r.set(i.value),`an effect of a context value failed (${String(i.name)}):`,i.uuid)}),_o.set(s,e)),e},rh=(s,e,t,r,i)=>{sh(s).add(e,{value:t,name:r,uuid:i})},er=class s{#e;#t;#s=new zs;#r=new Map;#i=new Map;#n;#o=new Set;#a=[];#u=0;#c=!1;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.#n&&this.#n.resortChildren(),this.#e.noteEntityTreeChange(this.#t))}get parentUuid(){return this.#n?.uuid}set parentUuid(e){if(this.#n?.uuid!==e){let t=e?this.#e.getEntity(e):void 0;t!=null&&this.assertAttachableTo(t),this.#d(t==null),this.#n=t,this.#n&&this.#n.addChild(this),this.#p(),this.#e.noteEntityTreeChange(this.#t)}}get parent(){return this.#n}set parent(e){this.parentUuid=e?.uuid}get hasParent(){return!!this.#n}get children(){return this.#a}constructor(e,t){this.#e=e,this.#t=t}traverse(e){this.#l(e,new Set)}#l(e,t){if(!t.has(this)){t.add(this),e(this);for(let r of this.#a)r.#l(e,t)}}[K](){if(!this.#c){this.#c=!0,this.#h("properties",()=>this.#s.clear()),this.#h("listeners",()=>E(this)),this.#h("auto-destruction subscription",()=>this.#g?.());for(let e of this.#i.values())this.#h("global context cleanup",()=>e.cleanup()),this.#h("global context signal",()=>e.signal.destroy());for(let e of this.#r.values())this.#h("context value reset",()=>e.context.set(void 0)),this.#h("context value subscription",()=>e.unsubscribePathValue()),this.#h("context parent subscription",()=>e.unsubscribeFromParent?.()),this.#h("context value path",()=>e.valuePath.dispose()),this.#h("inherited context signal",()=>e.inherited.destroy()),this.#h("provided context signal",()=>e.provide.destroy()),this.#h("context signal",()=>e.context.destroy());this.#i.clear(),this.#r.clear(),this.#n=void 0,this.#o.clear(),this.#a.length=0}}#h(e,t){S(this.#e.logger,t,`entity teardown step failed (${e}):`,this.#t)}assertAttachableTo(e){for(let t=e;t!=null;t=t.parent)if(t===this)throw new Error(`entity "${e.uuid}" cannot become the parent of "${this.uuid}": it is the entity itself or one of its descendants`)}addChild(e){if(this.#o.has(e.uuid))throw new Error(`child with uuid: ${e.uuid} already exists! parentUuid: ${this.uuid}`);this.#o.add(e.uuid),this.#v(e);for(let[,t]of e.#r)e.#A(t)}#v(e){let t=this.#a.length;for(;t>0&&e.order<this.#a[t-1].order;)t--;this.#a.splice(t,0,e)}resortChildren(){this.#a.sort((e,t)=>e.order-t.order)}removeChild(e){let t=this.#a.indexOf(e);t!==-1&&(this.#o.delete(e.uuid),this.#a.splice(t,1))}removeFromParent(e=!0){this.#d(e)}#d(e){if(this.#n){if(this.#n.removeChild(this),this.#n=void 0,e)for(let[,t]of this.#r)this.#A(t);this.#y(),this.#e.noteEntityTreeChange(this.#t)}}#f=!1;#g;get autoDestructionOnParentRemoval(){return this.#f}set autoDestructionOnParentRemoval(e){this.#f!==e&&(this.#f=e,this.#p())}#y(){this.#g&&(this.#g(),this.#g=void 0)}#p(){this.#y(),this.#f&&this.#n&&(this.#g=A(this.#n,K,B.Max,()=>{this.#g=void 0,this.#e.destroyEntity(this.#t)}))}reSubscribeToParentContexts(){for(let[,e]of this.#r)this.#A(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)S(this.#e.logger,()=>W(this,Ct,t,r),"entity view event delivery failed:",t,this.#t)}dispatchViewEvent(e,t){this.dispatchViewEvents([{type:e,data:t}])}#m(e){return this.#s.get(e)}getPropertyReader(e){return this.#m(e).get}getPropertyWriter(e){let t=this.#m(e);return(r,i)=>{this.clearTruthyPropsCache(),t.set(r,i)}}setProperties(e){q(()=>{for(let[t,r]of e)this.setProperty(t,r)})}setProperty(e,t){this.getPropertyWriter(e)(t)}getProperty(e){return dt(this.getPropertyReader(e))}propKeys(){return Array.from(this.#s.keys())}propEntries(){return Array.from(this.#s.entries()).map(([e,t])=>[e,t.value])}#w;clearTruthyPropsCache(){this.#w=void 0}truthyProps(){if(this.#w)return this.#w.size?this.#w:void 0;let e=new Set;for(let[t,r]of this.#s.entries())if(typeof t=="string"){let i=r.value;i!=null&&i!==!1&&i!==""&&e.add(t)}return this.#w=e,e.size?e:void 0}hasContext(e){return this.#r.has(e)}useContext(e){return this.#b(e).context.get}useParentContext(e){return this.#b(e).inherited.get}provideContext(e){return this.#b(e).provide}provideGlobalContext(e){return this.#k(e).signal}attachContextProvider(e,t){let r=this.#b(e);return s.#S(t,r.provide,r.providerFeeds)}attachGlobalContextProvider(e,t){let r=this.#k(e);return s.#S(t,r.signal,r.providerFeeds)}static#S(e,t,r){let i=me(e,t);return r.add(i),()=>{r.delete(i)&&(i.destroy(),s.#C(r))}}static#C(e){let t;for(let r of e)!r.isDestroyed&&r.source.value!=null&&(t=r);t?.touch()}#k(e){if(this.#i.has(e))return this.#i.get(e);let t=this.#e.findOrCreateRootContext(e),r=f(),n={cleanup:t.add(r),signal:r,providerFeeds:new Set};return this.#i.set(e,n),n}#b(e){if(this.#r.has(e))return this.#r.get(e);let t=f(),r=f(),i=f(),n=new ue([r,t]),o=p(n,ue.Value,l=>{rh(this.#e,i,l,e,this.#t)}),a={name:e,inherited:t,provide:r,context:i,valuePath:n,providerFeeds:new Set,unsubscribePathValue:o};return this.#r.set(e,a),this.#A(a),a}#A(e){if(e.unsubscribeFromParent?.(),e.unsubscribeFromParent=void 0,this.parent){let t=this.parent.#b(e.name),r=me(t.context,e.inherited);e.unsubscribeFromParent=r.destroy.bind(r)}else{let t=this.#e.findOrCreateRootContext(e.name),r=me(t.value$,e.inherited);e.unsubscribeFromParent=r.destroy.bind(r)}}};var Fo=s=>{let e=s.split("@").map(t=>t.trim());if(e.length===2&&e[1])return e[0]?{key:`${e[0]}@${e[1]}`,prop:e[1]}:{key:e[1],prop:e[1]}},tr=(s,e)=>{for(let t of e)s.add(t)},ih=(s,e)=>{if(s!=null)for(let t of s)e.add(t)},tt=class{static get(e){return e??nh}#e=new Map;#t=new Map;#s=new Map;#r=new Set;#i=new Map;define(e,t){let r=this.#e.get(e);r?Xn(r,t):this.#e.set(e,[t]),this.#n()}appendRoute(e,t){let r=Fo(e);if(r){this.#r.add(r.prop);let i=this.#s.get(r.key);i?tr(i,t):this.#s.set(r.key,new Set(t))}else{let i=this.#t.get(e);i?tr(i,t):this.#t.set(e,new Set(t))}this.#n()}clearRoute(e){let t=Fo(e);t?this.#s.delete(t.key):this.#t.delete(e),this.#n()}#n(){this.#i.clear()}#o(e){if(e===void 0||this.#r.size===0)return"";let t="";for(let r of e)this.#r.has(r)&&(t+=`${r.length}:${r}`);return t}#a(e,t){let r=this.#o(t),i=this.#i.get(e),n=i?.get(r);if(n!==void 0)return n;let o=new Set([e]),a=Array.from(this.#t.get(e)??[]);for(let l=a.shift();l!==void 0;l=a.shift()){if(o.has(l))continue;o.add(l);let h=this.#t.get(l);h&&a.push(...Array.from(h).filter(u=>!o.has(u)))}if(t){for(let h of t){let u=this.#s.get(h);u&&tr(o,u)}let l;do{l=o.size;for(let h of new Set(o))for(let u of t){let c=this.#s.get(`${h}@${u}`);c&&tr(o,c)}}while(l!==o.size)}return i===void 0&&(i=new Map,this.#i.set(e,i)),i.set(r,o),o}findTokensByRoute(e,t){return new Set(this.#a(e,t))}findConstructors(e,t){let r=this.#a(e,t),i=new Set;for(let n of r)ih(this.#e.get(n),i);return i.size>0?Array.from(i):void 0}hasToken(e){return this.#e.has(e)}hasRoute(e){return this.#t.has(e)}clear(){this.#e.clear(),this.#t.clear(),this.#s.clear(),this.#r.clear(),this.#n()}},nh=new tt;var Si=s=>s??void 0;var je=()=>{let s=f(void 0);return x(s),s},oh=()=>{let s=T(()=>{},{autorun:!1});return s.destroy(),s},jo=()=>{},sr=class{#e;#t;#s;#r;#i=new Set;#n=new Set;#o=new Set;#a=new Map;#u=new Map;#c=new Map;#l=new Map;#h=new Map;#v=new Map;#d=new Set;#f=new Map;#g=new Map;#y;#p;#m;#w;#S=!1;#C=!1;#k;get displayName(){return this.#s}get debugHandles(){return{shadowObject:this.#y,releaseScope:this.#p,forgetShadowObject:this.#m,unsubscribeFromEntityDestroy:this.#w}}get debugCleanupCounts(){return{primary:this.#i.size,secondary:this.#n.size,contextFeeds:this.#o.size}}constructor(e,t,r,i){this.#e=e,this.#t=t,this.#s=r,this.#r=i}createAPI(){return{entity:this.#e,provideContext:this.provideContext.bind(this),provideGlobalContext:this.provideGlobalContext.bind(this),useContext:this.useContext.bind(this),useParentContext:this.useParentContext.bind(this),dispatchMessageToView:this.dispatchMessageToView.bind(this),useProperty:this.useProperty.bind(this),useProperties:this.useProperties.bind(this),createResource:this.createResource.bind(this),createEffect:this.createEffect.bind(this),createSignal:this.createSignal.bind(this),createMemo:this.createMemo.bind(this),on:this.on.bind(this),once:this.once.bind(this),emit:this.emit.bind(this),onViewEvent:this.onViewEvent.bind(this),onDestroy:this.onDestroy.bind(this)}}bindTo(e,t,r){if(this.#S)throw new Error(`the creation scope of "${this.#s}" has torn down and cannot be bound`);if(this.#y!==void 0)throw new Error(`the creation scope of "${this.#s}" is already bound to a shadow-object`);this.#y=e,this.#p=t,this.#m=r,this.#t.info("create shadow-object",this.#s,{shadowObject:e,entity:this.#e}),this.#w=A(this.#e,K,B.Low,()=>{this.tearDown()})}tearDown(){if(this.#S)return;this.#S=!0,this.#b("scope release",()=>this.#p?.()),this.#b("entity destroy subscription",()=>this.#w?.()),this.#y!==void 0&&this.#t.info("destroy shadow-object",this.#s,{shadowObject:this.#y,entity:this.#e});let e=new Set,t=(i,n)=>{let o=!1;for(let a of i)e.has(a)||(e.add(a),o=!0,this.#b(n,a));return o},r=!0;for(;r;){let i=t(this.#i,"onDestroy callback"),n=t(this.#n,"creation-api cleanup");r=i||n}for(let i of this.#o)this.#b("context feed release",i);for(let i of this.#a.values())this.#b("context reader",()=>x(i));for(let i of this.#c.values())this.#b("parent context reader",()=>x(i));for(let i of this.#f.values())this.#b("property reader",()=>x(i));for(let i of this.#h.values())this.#b("context provider",()=>x(i));for(let i of this.#v.values())this.#b("global context provider",()=>x(i));this.#i.clear(),this.#n.clear(),this.#o.clear(),this.#a.clear(),this.#u.clear(),this.#c.clear(),this.#l.clear(),this.#f.clear(),this.#g.clear(),this.#h.clear(),this.#v.clear(),this.#d.clear(),this.#b("forget shadow-object",()=>this.#m?.()),this.#y=void 0,this.#p=void 0,this.#m=void 0,this.#w=void 0,this.#C=!0}#b(e,t){S(this.#t,t,`shadow-object teardown failed (${e}):`,this.#s)}#A(e){return this.#n.add(e),Object.assign(()=>{this.#n.delete(e),e()},e)}#O(e,t,r,i,n,o,a){let l=t.get(e);if(l===void 0){l=f(void 0,n).get,t.set(e,l),r.set(e,n?.compare);let h=me(i(),l);this.#n.add(h.destroy.bind(h))}else n?.compare!=null&&r.get(e)!==n.compare&&this.#t.error(`[shadow-objects] ${o}("${String(e)}"): the cached signal already exists with a different (or no) {compare} function \u2014 the new options are ignored. Pass options only on the first call per ${a}.`);return l}#R(e,t){typeof e!="function"||this.#r.has(t)||(this.#t.error(`[shadow-objects] Deprecation Warning: The "isEqual" option of "${t}()" is now passed as {compare} argument. Please update your code accordingly.`),this.#r.add(t))}#E(e){return this.#C?(this.#k?.has(e)||((this.#k??=new Set).add(e),this.#t.error(`[shadow-objects] ${e}(): the creation scope of "${this.#s}" has torn down \u2014 the call does nothing. Something is still holding the creation API past the end of its shadow-object.`)),!0):!1}useProperty(e,t){if(this.#E("useProperty"))return je().get;this.#R(t,"useProperty");let r=typeof t=="function"?{compare:t}:t;return this.#O(e,this.#f,this.#g,()=>this.#e.getPropertyReader(e),r,"useProperty","property")}useProperties(e){let t={};for(let r in e)Object.hasOwn(e,r)&&(t[r]=this.useProperty(e[r]));return t}#T(e,t,r,i,n){let o=t.get(e);if(o==null){let a=Re(i),l=a?void 0:Si(i);if(o=f(l,n?.compare?{compare:n.compare}:void 0),a){let h=me(i,o);this.#n.add(h.destroy.bind(h))}this.#o.add(r(o)),t.set(e,o)}return(n?.clearOnDestroy??!0)&&!this.#d.has(o)&&(this.#d.add(o),this.#n.add(()=>{o.set(void 0)})),o}provideContext(e,t,r){if(this.#E("provideContext"))return je();this.#R(r,"provideContext");let i=typeof r=="function"?{compare:r}:r;return this.#T(e,this.#h,n=>this.#e.attachContextProvider(e,n),t,i)}provideGlobalContext(e,t,r){if(this.#E("provideGlobalContext"))return je();this.#R(r,"provideGlobalContext");let i=typeof r=="function"?{compare:r}:r;return this.#T(e,this.#v,n=>this.#e.attachGlobalContextProvider(e,n),t,i)}useContext(e,t){if(this.#E("useContext"))return je().get;this.#R(t,"useContext");let r=typeof t=="function"?{compare:t}:t;return this.#O(e,this.#a,this.#u,()=>this.#e.useContext(e),r,"useContext","context")}useParentContext(e,t){if(this.#E("useParentContext"))return je().get;this.#R(t,"useParentContext");let r=typeof t=="function"?{compare:t}:t;return this.#O(e,this.#c,this.#l,()=>this.#e.useParentContext(e),r,"useParentContext","parent context")}createSignal(...e){if(this.#E("createSignal"))return je();let t=f(...e);return this.#n.add(()=>{x(t)}),t}createEffect(...e){if(this.#E("createEffect"))return oh();let t=T(...e);return this.#n.add(t.destroy),t}createMemo(...e){if(this.#E("createMemo"))return je().get;let t=Mn(...e);return this.#n.add(()=>{x(t)}),t}createResource(e,t){if(this.#E("createResource"))return je();let r=f(),i=T(()=>{let n=Si(e());return r.set(n),n!==void 0&&t?()=>{t(n),r.set(void 0)}:()=>{r.set(void 0)}});return this.#n.add(()=>{try{i.destroy()}finally{r.set(void 0),x(r)}}),r}on(...e){if(this.#E("on"))return jo;let[t]=e,r=typeof t=="string"||typeof t=="symbol"||Array.isArray(t)?p(this.#e,...e):p(...e);return this.#A(r)}once(...e){if(this.#E("once"))return jo;let[t]=e,r=typeof t=="string"||typeof t=="symbol"||Array.isArray(t)?A(this.#e,...e):A(...e);return this.#A(r)}emit(...e){if(this.#E("emit"))return;let[t]=e;typeof t=="string"||typeof t=="symbol"||Array.isArray(t)?b(this.#e,...e):b(...e)}onViewEvent(e){if(this.#E("onViewEvent"))return;let t=p(this.#e,Ct,(r,i)=>{e(r,i)});this.#n.add(t)}onDestroy(e){this.#E("onDestroy")||this.#i.add(e)}dispatchMessageToView(e,t,r,i=!1){this.#E("dispatchMessageToView")||this.#e.dispatchMessageToView(e,t,r,i)}};var Bo=s=>s.displayName||s.name,ah=[["onCreate",Js],["onDestroy",K],["onParentChanged",wi],["onViewEvent",Ct]],rr=class{#e=new C("Kernel");get logger(){return this.#e}#t=new Map;#s=new Set;#r=[];#i=[];#n=!0;#o=new Map;#a=new WeakMap;#u=new Set;constructor(e){M(this),this.registry=tt.get(e)}getEntity(e){return this.#c(e).entity}findEntity(e){return this.#t.get(e)?.entity}#c(e){let t=this.#t.get(e);if(t===void 0)throw new Error(`entity with uuid "${e}" not found!`);return t}hasEntity(e){return this.#t.has(e)}get debugEntityCounts(){return{entities:this.#t.size,rootEntities:this.#s.size,traversal:this.#r.length,traversalReversed:this.#i.length}}traverseLevelOrderBFS(e=!1){if(this.#n){let t=new Map,r=new Set,i=(n,o)=>{if(r.has(n))return;r.add(n);let a=this.findEntity(n);if(a===void 0)return;let l=t.get(o);l?l.push(a):t.set(o,[a]);for(let h of a.children)i(h.uuid,o+1)};this.#s.forEach(n=>{i(n,0)}),this.#r=Array.from(t.entries()).sort((n,o)=>n[0]-o[0]).flatMap(([,n])=>n),this.#i=this.#r.slice().reverse(),this.#n=!1}return e?this.#i.slice():this.#r.slice()}getEntityGraph(){let e=new Set;return Array.from(this.#s).map(t=>this.#l(t,e)).filter(t=>t!==void 0)}#l(e,t,r){let i=this.#t.get(e);if(i===void 0){r?.push({uuid:e,reason:"not-in-kernel"});return}if(t.has(e)){r?.push({uuid:e,reason:"already-in-graph"});return}t.add(e);let{token:n,entity:o}=i,a=[],l=o.children.map(h=>this.#l(h.uuid,t,a)).filter(h=>h!==void 0);return{token:n,entity:o,props:Object.fromEntries(o.propEntries()),children:l,...a.length>0?{omittedChildren:a}:{}}}upgradeEntities(){let e=new Map;for(let t of this.traverseLevelOrderBFS(!0))this.hasEntity(t.uuid)&&e.set(t.uuid,this.#d(t.uuid,2));for(let t of this.traverseLevelOrderBFS(!1))this.hasEntity(t.uuid)&&this.#d(t.uuid,1,e.get(t.uuid));e.clear()}run(e){this.logger.debug("sync",e);let t=0;try{q(()=>{for(let r of e.changeTrail)this.#h(r),t++})}catch(r){throw new ze(t,e.changeTrail.length,{cause:r})}}#h(e){switch(e.type){case v.CreateEntities:this.createEntity(e.uuid,e.token,e.parentUuid,e.order,e.properties,e.autoDestructionOnParentRemoval);break;case v.DestroyEntities:this.destroyEntity(e.uuid);break;case v.SetParent:this.setParent(e.uuid,e.parentUuid,e.order);break;case v.UpdateOrder:this.updateOrder(e.uuid,e.order);break;case v.ChangeProperties:this.changeProperties(e.uuid,e.properties);break;case v.ChangeToken:this.changeToken(e.uuid,e.token);break;case v.SendEvents:this.dispatchEventsToEntity(e.uuid,e.events);break}}createEntity(e,t,r,i=0,n,o=!1){if(this.#t.has(e))throw new Qs(e);let a=new er(this,e);a.order=i;let l={token:t,entity:a,usedConstructors:new Map};this.#t.set(e,l),this.noteEntityTreeChange(e);try{r&&(a.parentUuid=r),a.autoDestructionOnParentRemoval=o,n&&a.setProperties(n),this.#y(l)}catch(h){throw this.#v(e),h}}#v(e){S(this.logger,()=>this.destroyEntity(e),"rollback of a failed entity creation could not destroy the entity:",e)}destroyEntity(e){let t=this.#t.get(e);if(t===void 0)return;let{entity:r,usedConstructors:i}=t;try{let n=[...r.children];for(let a of n)S(this.logger,()=>{a.autoDestructionOnParentRemoval?this.destroyEntity(a.uuid):a.removeFromParent()},"child of a destroyed entity could not be handed on:",a.uuid);S(this.logger,()=>r.removeFromParent(),"entity could not be detached from its parent:",r.uuid);let o=this.findShadowObjects(r.uuid);for(let a of o)E(r,a),this.#m(a,r);S(this.logger,()=>W(r,K,r),"entity onDestroy notification failed:",r.uuid);for(let a of o)S(this.logger,()=>this.#a.get(a)?.tearDown(),"creation scope teardown of a destroyed entity failed:",r.uuid);S(this.logger,()=>r[K](),"entity release failed:",r.uuid)}finally{i.clear(),this.#t.delete(r.uuid),this.#s.delete(r.uuid),this.#n=!0}}setParent(e,t,r){let i=this.getEntity(e),n=r??i.order;if(!(i.parentUuid===t&&i.order===n)){if(t&&!this.#t.has(t))throw new Error(`entity with uuid "${t}" not found!`);t&&i.assertAttachableTo(this.getEntity(t)),i.removeFromParent(t==null),i.order=n,i.parentUuid=t,this.logger.debug("entity.onParentChanged",{uuid:e,parentUuid:t,order:n,entity:i}),S(this.logger,()=>W(i,wi,i),"entity onParentChanged notification failed:",e)}}updateOrder(e,t){this.getEntity(e).order=t}noteEntityTreeChange(e){this.#n=!0;let t=this.#t.get(e);t!==void 0&&(t.entity.hasParent?this.#s.delete(e):this.#s.add(e))}dispatchEventsToEntity(e,t){this.findEntity(e)?.dispatchViewEvents(t)}changeProperties(e,t){this.getEntity(e).setProperties(t),this.#d(e)}changeToken(e,t){let r=this.#t.get(e);if(r===void 0||r.token===t)return;let i=r.token;r.token=t,this.#d(e,0,void 0,i)}dispatchMessageToView(e){queueMicrotask(()=>{ne(this,ft,e)})}#d(e,t=0,r,i){let n=this.#c(e);r??=new Set(this.registry.findConstructors(n.token,n.entity.truthyProps()));let o=t===0||t===2,a=t===0||t===1,l=[],h=[];if(o){for(let[u,c]of n.usedConstructors)if(!r.has(u)){n.usedConstructors.delete(u),l.push({construct:u,count:c.size});for(let P of c)this.#w(P,n.entity)}}if(a){for(let u of r)if(!n.usedConstructors.has(u))try{h.push(this.#g(u,n))}catch(c){throw this.#f(n,h,l,i),c}}return r}#f(e,t,r,i){if(this.#t.get(e.entity.uuid)===e){i!==void 0&&(e.token=i);for(let n=t.length-1;n>=0;n--)S(this.logger,()=>this.#w(t[n],e.entity),"rollback of a failed shadow-object update could not remove a new shadow-object:",e.entity.uuid);for(let{construct:n,count:o}of r)for(let a=0;a<o;a++)S(this.logger,()=>this.#g(n,e),"rollback of a failed shadow-object update could not restore a shadow-object:",Bo(n),e.entity.uuid)}}#g(e,t){let r=new sr(t.entity,this.logger,Bo(e),this.#u),i;try{i=M(new e(r.createAPI()))}catch(o){throw r.tearDown(),o}this.#a.set(i,r),r.bindTo(i,()=>{this.#a.delete(i)},()=>{let o=t.usedConstructors.get(e);o&&(o.delete(i),o.size===0&&t.usedConstructors.delete(e))});let n=t.usedConstructors.get(e);n?n.add(i):t.usedConstructors.set(e,new Set([i]));try{this.#p(i,t.entity)}catch(o){throw this.#w(i,t.entity),o}return i}#y(e){this.registry.findConstructors(e.token,e.entity.truthyProps())?.forEach(t=>{this.#g(t,e)})}findShadowObjects(e){let t=this.#t.get(e);if(t===void 0)return[];let{usedConstructors:r}=t;return Array.from(new Set(Array.from(r.values()).flatMap(i=>Array.from(i))))}#p(e,t){for(let[r,i]of ah)if(typeof e[r]=="function"&&typeof e[i]!="function"){let n=this.#a.get(e)?.displayName;this.logger.error(`the "${r}" lifecycle hook is a plain method and is never called; use the [${r}] symbol from "@spearwolf/shadow-objects/shadow-objects.js":`,n)}p(t,e),typeof e[Js]=="function"&&e[Js](t)}#m(e,t){let r=this.#a.get(e)?.displayName;typeof e[K]=="function"&&S(this.logger,()=>e[K](t),"shadow-object onDestroy hook failed:",r),S(this.logger,()=>W(e,K,t),"shadow-object onDestroy notification failed:",r)}#w(e,t){this.#m(e,t),this.#a.get(e)?.tearDown(),E(t,e)}findOrCreateRootContext(e){let t=this.#o.get(e);return t||(t=new ue,this.#o.set(e,t)),t}destroy(){for(let e of this.traverseLevelOrderBFS(!0))S(this.logger,()=>this.destroyEntity(e.uuid),"entity teardown during kernel destroy failed:",e.uuid);this.#t.clear(),this.#s.clear(),this.#r.length=0,this.#i.length=0,this.#n=!0;for(let e of this.#o.values())e.dispose();this.#o.clear(),queueMicrotask(()=>{E(this)})}};var ir=s=>(typeof s=="string"&&(s=new URL(s,globalThis.location.href)),s.toString());function Io(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 nr=class{constructor(e){this.#e=new Set,this.isLocalEnv=!0,this.disableStructuredClone=!1,this.kernel=new rr(e),this.#t=this.kernel.registry===tt.get(),p(this.kernel,ft,t=>{let r=this.onMessageToView;if(r==null)return;let{type:i,uuid:n,traverseChildren:o}=t,a=structuredClone(t.data,{transfer:t.transferables??[]});r.call(this,{type:i,uuid:n,data:a,traverseChildren:o})})}#e;#t;get registry(){return this.kernel.registry}start(){return Promise.resolve()}applyChangeTrail(e,t){let r={changeTrail:this.disableStructuredClone?e:Io(e)},i;try{this.kernel.run(r),i=Promise.resolve()}catch(n){i=Promise.reject(n)}return t?i.then(()=>{}):i}async importScript(e){let t=await import(ir(e));if(!t[Vt])throw new Error(Mo);await this.importModule(t[Vt])}async importModule(e){return mi(this.kernel,e,this.#e)}destroy(){this.kernel.destroy(),this.#t||this.registry.clear(),this.#e.clear()}};function ki(s){let e=new Blob([s],{type:"text/javascript"}),t=URL.createObjectURL(e),r=new Worker(t);return URL.revokeObjectURL(t),r}function Ai(){return ki('var va=Object.defineProperty,ba=Object.defineProperties;var ma=Object.getOwnPropertyDescriptors;var wr=Object.getOwnPropertySymbols;var Mn=Object.prototype.hasOwnProperty,Tn=Object.prototype.propertyIsEnumerable;var wa=(s,e)=>(e=Symbol[s])?e:Symbol.for("Symbol."+s),Ln=s=>{throw TypeError(s)};var ci=(s,e,t)=>e in s?va(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,ue=(s,e)=>{for(var t in e||(e={}))Mn.call(e,t)&&ci(s,t,e[t]);if(wr)for(var t of wr(e))Tn.call(e,t)&&ci(s,t,e[t]);return s},Dn=(s,e)=>ba(s,ma(e));var Bn=(s,e)=>{var t={};for(var r in s)Mn.call(s,r)&&e.indexOf(r)<0&&(t[r]=s[r]);if(s!=null&&wr)for(var r of wr(s))e.indexOf(r)<0&&Tn.call(s,r)&&(t[r]=s[r]);return t};var p=(s,e,t)=>ci(s,typeof e!="symbol"?e+"":e,t),hi=(s,e,t)=>e.has(s)||Ln("Cannot "+t);var i=(s,e,t)=>(hi(s,e,"read from private field"),t?t.call(s):e.get(s)),u=(s,e,t)=>e.has(s)?Ln("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(s):e.set(s,t),f=(s,e,t,r)=>(hi(s,e,"write to private field"),r?r.call(s,t):e.set(s,t),t),c=(s,e,t)=>(hi(s,e,"access private method"),t);var Je=(s,e,t,r)=>({set _(n){f(s,e,n,t)},get _(){return i(s,e,r)}});var ui=function(s,e){this[0]=s,this[1]=e},Fn=(s,e,t)=>{var r=(l,h,d,y)=>{try{var g=t[l](h),C=(h=g.value)instanceof ui,E=g.done;Promise.resolve(C?h[0]:h).then(O=>C?r(l==="return"?l:"next",h[1]?{done:O.done,value:O.value}:O,d,y):d({value:O,done:E})).catch(O=>r("throw",O,d,y))}catch(O){y(O)}},n=(l,h,d,y)=>a[l]=g=>(h=new Promise((C,E,O)=>(O=()=>r(l,g,C,E),o?o.then(O):O())),y=()=>o===d&&(o=0),o=d=h.then(y,y),h),o,a={};return t=t.apply(s,e),a[wa("asyncIterator")]=()=>a,n("next"),n("throw"),n("return"),a};var Te=(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",s))(Te||{});var $n="configure",_n="changeTrail",Er="destroy",Gn="loaded",fi="appliedChangeTrail",Sr="importedModule",In="destroyed",xs="messageToView";var zs="shadowObjects";var Le="ConsoleLogger",Ea=`${Le}Storage`,Sa=new Set(["localhost","127.0.0.1","::1","[::1]"]),Wn,Un,Ca=Sa.has((Un=(Wn=globalThis.location)==null?void 0:Wn.hostname)!=null?Un:""),Ms=(()=>{try{let s=globalThis.localStorage;if(typeof(s==null?void 0:s.getItem)!="function"||typeof s.setItem!="function"||typeof s.removeItem!="function")return;let e=`${Le}.probe`;try{s.setItem(e,e)}finally{s.removeItem(e)}return s}catch(s){return}})(),Vn=Ms!=null,Ps=Symbol.for(Le),ee=globalThis,jn=!1,Nn=s=>{if(typeof s=="boolean")return s;switch(s.toLowerCase()){case"true":case"yes":case"on":return!0;default:return!1}},Hn=s=>[Vn?Le:void 0,...Array.isArray(s)?s:[s]].filter(Boolean).join(".");function di(s,e,t){var o;let r=Hn(s),n=Ms?Ms.getItem(r):(o=ee.ConsoleLoggerStorage)==null?void 0:o[r];return n==null?t:e?e(n):n}function Cr(s,e){Ms&&Ms.setItem(Hn(s),e)}function Qn(s){let e=ee.ConsoleLoggerStorage;if(e!=null&&e===De.sharedConfig){Object.assign(e,s,{[Ps]:!0});return}ee.ConsoleLoggerStorage=s}var bt,Rs,m=class m{constructor(e){u(this,bt);this.enable=!0,this.namespace=(e||"").trim()||Le,jn||(m.loadConfig(),jn=!0);let t=[this.namespace,"enable"];this.enable=di(t,Nn,this.enable)}static get isEnabled(){return m.sharedConfig.enable}static get isDebug(){return m.sharedConfig.enable&&m.sharedConfig.debug}static loadConfig(){var e,t,r;Vn?(["enable","debug","info","warn"].forEach(n=>{this.sharedConfig[n]=di(n,Nn,this.sharedConfig[n])}),["debug","info","warn","error"].forEach(n=>{this.sharedStyles[n]=di(["styles",n],void 0,this.sharedStyles[n])}),m.isDebug&&console.debug(`${Le}: Load config from localStorage`,m.sharedConfig),(e=ee.ConsoleLogger)!=null&&e[Ps]||(t=ee.ConsoleLogger)!=null||(ee.ConsoleLogger={[Ps]:!0,get enable(){return m.sharedConfig.enable},set enable(n){m.sharedConfig.enable=n,Cr("enable",n?"true":"false")},get debug(){return m.sharedConfig.debug},set debug(n){m.sharedConfig.debug=n,Cr("debug",n?"true":"false")},get info(){return m.sharedConfig.info},set info(n){m.sharedConfig.info=n,Cr("info",n?"true":"false")},get warn(){return m.sharedConfig.warn},set warn(n){m.sharedConfig.warn=n,Cr("warn",n?"true":"false")}})):(r=ee.ConsoleLoggerStorage)!=null&&r[Ps]||(ee.ConsoleLoggerStorage=ue(ue({[Ps]:!0},m.sharedConfig),ee.ConsoleLoggerStorage),m.sharedConfig=ee.ConsoleLoggerStorage,m.isDebug&&console.debug(`${Le}: Load config from ${Ea}`,ee.ConsoleLoggerStorage))}get isEnabled(){return this.enable&&m.sharedConfig.enable}get isDebug(){return this.isEnabled&&m.sharedConfig.debug}get isInfo(){return this.isEnabled&&m.sharedConfig.info}get isWarn(){return this.isEnabled&&m.sharedConfig.warn}debug(...e){this.isDebug&&c(this,bt,Rs).call(this,"debug",m.sharedStyles.debug,e)}info(...e){this.isInfo&&c(this,bt,Rs).call(this,"info",m.sharedStyles.info,e)}warn(...e){this.isWarn&&c(this,bt,Rs).call(this,"warn",m.sharedStyles.warn,e)}error(...e){c(this,bt,Rs).call(this,"error",m.sharedStyles.error,e)}};bt=new WeakSet,Rs=function(e,t,r){console[e](`%c${this.namespace}`,t,...r)},m.sharedConfig={enable:Ca,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"},m.sharedStyles={get debug(){return m.sharedConfig["styles.debug"]},set debug(e){m.sharedConfig["styles.debug"]=e},get info(){return m.sharedConfig["styles.info"]},set info(e){m.sharedConfig["styles.info"]=e},get warn(){return m.sharedConfig["styles.warn"]},set warn(e){m.sharedConfig["styles.warn"]=e},get error(){return m.sharedConfig["styles.error"]},set error(e){m.sharedConfig["styles.error"]=e}};var De=m;var te="*",ka=1,pi=2,vi=4,bi=Symbol.for("eventize"),mi=6,Aa="[eventize]",Xe=s=>s===te,wi=s=>{let e=s==="emitted"?"emit":"retain";throw new Error(`${e}() must be called with a concrete event name \\u2014 \'*\' is reserved for subscribing to all events and cannot be ${s}`)},Ze=s=>{switch(typeof s){case"string":case"symbol":return!0;default:return!1}},Ei=s=>s!=null&&(typeof s=="object"||typeof s=="function"),Oa=s=>Array.isArray(s),xa=Object.prototype,za=(()=>{let s={},e=Function.prototype;for(let t of Reflect.ownKeys(Function.prototype))try{s[t]=e[t]}catch(r){}return s})(),Pa=(s,e)=>{if(e==="constructor"||e==="__proto__")return;let t=s[e];if(t!==void 0&&t!==xa[e])return t===za[e]?void 0:t},Ra=(s,e)=>{let t=new Array(e.length+1);t[0]=s;for(let r=0;r<e.length;++r)t[r+1]=e[r];return t},Ma=s=>s,Or=(s,e,t,r)=>{if(typeof e=="function"){let n=e.apply(s,t);return n!=null&&(r==null||r(n)),!0}return!1},Ta=(s,e,t,r)=>{let n=s.emit;return typeof n=="function"&&Or(s,n,Ra(e,t),r)},xr=(s,e,t,r)=>Or(s,Pa(s,e),t,r)||Ta(s,e,t,r),La=typeof console!="undefined",Be=La?console[typeof console.warn=="function"?"warn":"log"].bind(console,Aa):()=>{},Da=(s,e,t)=>(Object.defineProperty(s,e,{value:t,configurable:!1}),s),Ba=0,Fa=(s,e)=>s.order-e.order,Vt=s=>()=>{throw new Error(`EventKeeper: ${s} is the shared empty stand-in \\u2014 replace it, never mutate it`)},Ts=Object.freeze(Object.defineProperties(new Map,{set:{value:Vt("events")},delete:{value:Vt("events")},clear:{value:Vt("events")}})),kr=Object.freeze(Object.defineProperties(new Set,{add:{value:Vt("eventNames")},delete:{value:Vt("eventNames")},clear:{value:Vt("eventNames")}})),$a=s=>{if(s.length!==0){s.sort(Fa);for(let e of s)try{e.replay()}catch(t){Be("a retained replay threw; the batch continues. event:",e.eventName,t)}}},_a=s=>e=>{typeof(e==null?void 0:e.then)=="function"&&e.then(void 0,t=>{Be("a retained replay rejected; the batch continues. event:",s,t)})},Ga=class{constructor(){p(this,"events",Ts);p(this,"eventNames",kr)}mutableEvents(){return this.events===Ts&&(this.events=new Map),this.events}mutableEventNames(){return this.eventNames===kr&&(this.eventNames=new Set),this.eventNames}get retainedCount(){return this.events.size}retainedNames(){return Array.from(this.eventNames)}add(s){if(Array.isArray(s)){if(s.length===0)return;let e=this.mutableEventNames();s.forEach(t=>e.add(t))}else this.mutableEventNames().add(s)}remove(s){if(this.eventNames.size!==0){let e=this.eventNames;Array.isArray(s)?s.forEach(t=>e.delete(t)):e.delete(s),this.eventNames.size===0&&(this.eventNames=kr)}this.clear(s)}clear(s){if(this.events.size===0)return;let e=this.events;Array.isArray(s)?s.forEach(t=>e.delete(t)):e.delete(s),this.events.size===0&&(this.events=Ts)}removeAll(){this.eventNames=kr,this.events=Ts}clearAll(){this.events=Ts}retain(s,e){this.eventNames.size!==0&&this.eventNames.has(s)&&this.mutableEvents().set(s,{args:e,order:Ba++})}hasRetainedFor(s){return this.events.size!==0&&(Xe(s)||this.events.has(s))}replayTo(s,e,t=[]){if(Xe(s))this.events.forEach((r,n)=>{Xe(n)||this.replayTo(n,e,t)});else{let r=this.events.get(s);r!=null&&t.push({order:r.order,eventName:s,replay:()=>{let n=this.events.get(s);n!==void 0&&e.apply(s,n.args,_a(s))}})}return t}},Ia=s=>s!=null,ja=s=>s!=null&&typeof s=="object",Ds=s=>{switch(typeof s){case"function":return ka;case"string":case"symbol":return pi;case"object":return s===null?void 0:vi;default:return}},Na=0,Wa=()=>++Na,ro=0,Ua=()=>({settled:!1,members:[],sequence:ro++,onSettled:void 0}),Va=class{constructor(s,e,t,r=null){p(this,"id");p(this,"eventName");p(this,"isCatchEmAll");p(this,"priority");p(this,"listener");p(this,"listenerObject");p(this,"listenerType");p(this,"callAfterApply");p(this,"isRemoved");p(this,"refCount");p(this,"onceObligations");this.id=Wa(),this.eventName=s,this.isCatchEmAll=Xe(s),this.listener=t,this.listenerObject=r,this.priority=e,this.listenerType=Ds(t),this.callAfterApply=void 0,this.isRemoved=!1,this.refCount=0,this.onceObligations=void 0}isEqual(s,e){return this.listener===s&&this.listenerObject===e}detach(){if(this.isRemoved=!0,this.listener=null,this.listenerObject=null,this.callAfterApply=void 0,this.onceObligations!==void 0){for(let s of this.onceObligations){let e=s.members.indexOf(this);e>=0&&s.members.splice(e,1)}this.onceObligations=void 0}}apply(s,e=[],t){if(this.isRemoved)return;let{listener:r,listenerObject:n}=this,o=ro;if(typeof r=="function"){Or(n,r,e,t),this.callAfterApply&&this.callAfterApply(o);return}if(Ze(r)){Ia(n)&&Or(n,n[r],e,t)&&this.callAfterApply&&this.callAfterApply(o);return}ja(r)&&(this.isCatchEmAll||this.eventName===s)&&xr(r,s,e,t)&&this.callAfterApply&&this.callAfterApply(o)}},Fe=Symbol("eventize.EventStore.dedupIndex"),io=s=>s===vi||s===pi,Ha=(s,e,t,r,n,o)=>s===o.listenerType?e===o.priority&&t===o.eventName&&n===o.listenerObject&&r===o.listener:!1,no=(s,e,t)=>s===vi?e:t,Qa=s=>s!=null&&typeof s!="string"&&typeof s!="symbol",oo=(s,e,t)=>{let r=e.listener,n=e.listenerObject,o=io(e.listenerType),a=o?no(e.listenerType,r,n):void 0;o&&t(s,a,e),Qa(r)&&!(o&&a===r)&&t(s,r,e),Ei(n)&&n!==r&&!(o&&a===n)&&t(s,n,e)},Ya=(s,e,t)=>{let r=s.get(e);r===void 0?s.set(e,[t]):r.push(t)},qa=(s,e,t)=>{let r=s.get(e);if(r===void 0)return;let n=r.indexOf(t);n<0||(r.splice(n,1),r.length===0&&s.delete(e))},Ka=(s,e)=>{var t;oo((t=s[Fe])!=null?t:s[Fe]=new Map,e,Ya)},Yn=(s,e)=>{let t=s[Fe];t!==void 0&&oo(t,e,qa)},Ja=(s,e,t,r,n,o)=>{if(!io(s))return;let a=o[Fe];if(a===void 0)return;let l=a.get(no(s,r,n));if(l!==void 0){for(let h of l)if(Ha(s,e,t,r,n,h))return h}},fe=Symbol("eventize.EventStore.heldBy"),Ls=s=>{let e=s===void 0?[]:s.slice(0);return e[fe]=0,e[Fe]=s===void 0?void 0:s[Fe],e},Ar=s=>()=>{throw new Error(`EventStore: ${s} is the shared empty stand-in \\u2014 replace it, never mutate it`)},qn=Object.freeze(Object.defineProperties(new Map,{set:{value:Ar("namedListeners")},delete:{value:Ar("namedListeners")},clear:{value:Ar("namedListeners")}})),Bs=Ls();for(let s of["push","pop","shift","unshift","splice","sort","reverse","fill","copyWithin"])Object.defineProperty(Bs,s,{value:Ar(`the catch-em-all bucket (${s}())`)});Object.freeze(Bs);var gi=s=>{s.forEach(e=>e.detach()),s[Fe]=void 0},Xa=(s,e)=>s.priority!==e.priority?e.priority-s.priority:s.id-e.id,Za=(s,e)=>{let t=0,r=s.length;for(;t<r;){let n=t+r>>>1,o=s[n];if(o===void 0)throw new Error("EventStore: findInsertIndex encountered a hole");Xa(e,o)<0?r=n:t=n+1}return t},Kn=(s,e,t,r,n)=>{let o=s.length;for(let a=0;a<o;a++){let l=s[a];l!==void 0&&e(l,t,r,n)}},el=(s,e,t,r,n,o)=>{let a=s.length,l=e.length,h=0,d=0;for(;h<a||d<l;){let y=h<a?s[h]:void 0,g=d<l?e[d]:void 0;if(y!==void 0&&(g===void 0||y.priority>=g.priority)){t(y,r,n,o),++h;continue}if(g!==void 0)t(g,r,n,o),++d;else throw new Error("EventStore: forEach encountered a hole")}},tl=Object.freeze([]),sl=class{constructor(){p(this,"namedBuckets",qn);p(this,"catchEmAllBucket",Bs);p(this,"lastAddCreatedListener",!1)}get namedListeners(){return this.namedBuckets}get catchEmAllListeners(){return this.mutableCatchEmAllBucket()}mutableNamedBuckets(){return this.namedBuckets===qn&&(this.namedBuckets=new Map),this.namedBuckets}mutableCatchEmAllBucket(){return this.catchEmAllBucket===Bs&&(this.catchEmAllBucket=Ls()),this.catchEmAllBucket}getListenersForEventName(s){let e=this.namedBuckets.get(s);return e||(e=Ls(),this.mutableNamedBuckets().set(s,e)),e}peekListeners(s){var e;return Xe(s)?this.catchEmAllBucket:(e=this.namedBuckets.get(s))!=null?e:tl}bucketForMutation(s,e){if(e[fe]===0)return e;let t=Ls(e);return e===this.catchEmAllBucket?this.catchEmAllBucket=t:this.namedBuckets.set(s,t),t}spliceOut(s,e,t){let r=e.indexOf(t);if(r<0)return e;let n=this.bucketForMutation(s,e);return n.splice(r,1),Yn(n,t),n}detachByAssociation(s,e,t){let r=e;for(let n=e.length-1;n>=0;n--){let o=e[n];o!==void 0&&o.eventName===s&&(o.listener===t||o.listenerObject===t)&&(r===e&&(r=this.bucketForMutation(s,e)),r.splice(n,1),Yn(r,o),o.detach())}return r}detachByIdentity(s,e,t,r,n){let o=e[Fe];if(o===void 0)return e;let a=o.get(t);if(a===void 0)return e;let l=r==null,h=e;for(let d of a.slice())((l?d.listener===t:d.isEqual(t,r))||l&&n&&d.listenerObject===t)&&(h=this.spliceOut(s,h,d),d.detach());return h}add(s,e,t,r=null,n=null){var y,g;let o=Xe(s)?this.mutableCatchEmAllBucket():this.getListenersForEventName(s),a=Ds(t),l=Ja(a,e,s,t,r,o),h=l!=null?l:new Va(s,e,t,r);if(n===null?h.refCount+=1:(y=h.onceObligations)!=null&&y.includes(n)||(((g=h.onceObligations)!=null?g:h.onceObligations=[]).push(n),n.members.push(h)),this.lastAddCreatedListener=!1,l)return l;let d=this.bucketForMutation(s,o);return d.splice(Za(d,h),0,h),Ka(d,h),this.lastAddCreatedListener=!0,h}remove(s,e,t=!1){if(e==null&&Array.isArray(s)){s.forEach(r=>this.remove(r,null,t));return}if(s==null||e==null&&Xe(s)){this.removeAllListeners();return}if(e==null&&Ze(s)){this.removeByEventName(s);return}if(t&&Ze(s)){this.removeByEventNameAndListenerObject(s,e);return}this.removeByListener(s,e)}removeByEventName(s){let e=this.namedBuckets.get(s);e!==void 0&&(gi(e),e[fe]===0&&(e.length=0),this.namedBuckets.delete(s))}release(s){s.isRemoved||(s.refCount-=1,!(s.refCount>0||s.onceObligations!==void 0)&&this.dropListener(s))}releaseObligation(s){s.settled||this.dischargeObligation(s)}settleOneShots(s,e){let t=s.onceObligations;if(t!==void 0)for(let r of t.slice())r.sequence<e&&!r.settled&&this.dischargeObligation(r)}dischargeObligation(s){s.settled=!0;let e=s.onSettled;s.onSettled=void 0,e==null||e();let t=s.members.slice();s.members.length=0;for(let r of t){let n=r.onceObligations;if(n!==void 0){let o=n.indexOf(s);o>=0&&n.splice(o,1),n.length===0&&(r.onceObligations=void 0,r.callAfterApply=void 0)}!r.isRemoved&&r.refCount===0&&r.onceObligations===void 0&&this.dropListener(r)}}dropListener(s){if(s.isCatchEmAll)this.spliceOut(s.eventName,this.catchEmAllBucket,s);else{let e=this.namedBuckets.get(s.eventName);e&&this.spliceOut(s.eventName,e,s).length===0&&this.namedBuckets.delete(s.eventName)}s.detach()}removeByEventNameAndListenerObject(s,e){if(Xe(s)){this.detachByAssociation(s,this.catchEmAllBucket,e);return}let t=this.namedBuckets.get(s);if(!t)return;this.detachByAssociation(s,t,e).length===0&&this.namedBuckets.delete(s)}removeByListener(s,e){let t=typeof s=="object"||typeof s=="function";this.namedBuckets.forEach((r,n)=>{this.detachByIdentity(n,r,s,e,t).length===0&&this.namedBuckets.delete(n)}),this.detachByIdentity(te,this.catchEmAllBucket,s,e,t)}removeAllListeners(){this.namedBuckets.size!==0&&(this.namedBuckets.forEach(e=>{gi(e),e[fe]===0&&(e.length=0)}),this.namedBuckets.clear());let s=this.catchEmAllBucket;s!==Bs&&(gi(s),s[fe]!==0?this.catchEmAllBucket=Ls():s.length=0)}forEach(s,e,t,r,n){let o=this.catchEmAllBucket,a=o.length>0?o:void 0,l=s===te?void 0:this.namedBuckets.get(s),h=l!==void 0&&l.length>0?l:void 0;if(h===void 0){if(a===void 0)return;a[fe]+=1;try{Kn(a,e,t,r,n)}finally{a[fe]-=1}return}h[fe]+=1,a!==void 0&&(a[fe]+=1);try{a===void 0?Kn(h,e,t,r,n):el(h,a,e,t,r,n)}finally{h[fe]-=1,a!==void 0&&(a[fe]-=1)}}getSubscriptionCount(){let s=this.catchEmAllBucket.length;for(let e of this.namedBuckets.values())s+=e.length;return s}getSubscribedEventNames(){let s=Array.from(this.namedBuckets.keys());return this.catchEmAllBucket.length>0&&s.push(te),s}},rl=s=>s[bi],il=s=>{throw new TypeError(`two incompatible copies of @spearwolf/eventize are active on this object (marker protocol ${String(s)}, expected ${mi}) \\u2014 dedupe @spearwolf/eventize in your dependency tree so a single copy is loaded`)},nl=s=>(s==null?void 0:s.protocol)===mi,$e=s=>{let e=rl(s);return nl(e)?e:il(e==null?void 0:e.protocol)},me=s=>!!(s&&s[bi]);function Fs(s){if(me(s))return $e(s),s;if(!Ei(s)){let r=s;throw new TypeError(`eventize() cannot attach to ${r===null?"null":`a value of type \'${typeof r}\'`} \\u2014 eventize needs an object or a function to attach to`)}if(!Object.isExtensible(s))throw new TypeError("eventize() cannot attach to a non-extensible object \\u2014 eventize before freezing, or eventize a wrapper");let e=new sl,t=new Ga;return Da(s,bi,{protocol:mi,keeper:t,store:e}),s}var ao=(s,e,t,r)=>{s.apply(e,t,r)},ol=(s,e)=>{Be("a listener threw; the dispatch continues. event:",s,e)},U=null,lo=(s,e)=>{U!==null?U.push(e):ol(s,e)},yi=s=>s.length===1?s[0]:new AggregateError(s,"emitStrict: one or more listeners failed"),zr=(s,e,t,r)=>{try{s.apply(e,t,r)}catch(n){lo(e,n)}},Jn=(s,e,t,r,n,o)=>{e===te&&wi("emitted");let a=o!=null?o:$e(s);return a.store.forEach(e,r,e,t,n),a.keeper.retain(e,t),a},Ht=(s,e,t,r,n)=>{if(Array.isArray(e)){let o;for(let a=0;a<e.length;a++)a in e&&(o=Jn(s,e[a],t,r,n,o))}else Jn(s,e,t,r,n)},Pr=(s,e,t,r)=>{try{xr(s,e,t,r)}catch(n){lo(e,n)}},Xn=(s,e,t,r,n)=>{e===te&&wi("emitted"),r(Ma(s),e,t,n)},Qt=(s,e,t,r,n)=>{if(Array.isArray(e))for(let o=0;o<e.length;o++)o in e&&Xn(s,e[o],t,r,n);else Xn(s,e,t,r,n)},Yt=Ei;function k(s,e,...t){me(s)?Ht(s,e,t,ao):Yt(s)&&Qt(s,e,t,xr)}function $s(s,e,...t){let r=U;U=null;try{me(s)?Ht(s,e,t,zr):Yt(s)&&Qt(s,e,t,Pr)}finally{U=r}}function mt(s,e,...t){let r=U,n=[];U=n;try{me(s)?Ht(s,e,t,zr):Yt(s)&&Qt(s,e,t,Pr)}catch(o){n.push(o)}finally{U=r}if(n.length>0)throw yi(n)}var Zn=()=>{},co=s=>{for(let e of s)if(Array.isArray(e))for(let t of e)Promise.resolve(t).catch(Zn);else Promise.resolve(e).catch(Zn)};function al(s,e,...t){let r=[],n=o=>{r.push(o)};try{me(s)?Ht(s,e,t,ao,n):Yt(s)&&Qt(s,e,t,xr,n)}catch(o){throw co(r),o}return r.length>0?Promise.all(r.map(o=>Array.isArray(o)?Promise.all(o):Promise.resolve(o))):Promise.resolve(void 0)}function ll(s,e,...t){let r=[],n=a=>{r.push(a)},o=U;U=null;try{me(s)?Ht(s,e,t,zr,n):Yt(s)&&Qt(s,e,t,Pr,n)}catch(a){throw co(r),a}finally{U=o}return r.length>0?Promise.all(r.map(a=>Array.isArray(a)?Promise.all(a):Promise.resolve(a))):Promise.resolve(void 0)}var cl=(s,e,t)=>{let r=[];for(let[n,o]of e.entries()){if(o.status==="rejected"){t.push(o.reason);continue}if(!Array.isArray(s[n])){r.push(o.value);continue}let a=[];for(let l of o.value)l.status==="rejected"?t.push(l.reason):a.push(l.value);r.push(a)}return r};function hl(s,e,...t){let r=[],n=l=>{r.push(l)},o=U,a=[];U=a;try{me(s)?Ht(s,e,t,zr,n):Yt(s)&&Qt(s,e,t,Pr,n)}catch(l){a.push(l)}finally{U=o}return r.length===0?a.length>0?Promise.reject(yi(a)):Promise.resolve(void 0):Promise.allSettled(r.map(l=>Array.isArray(l)?Promise.allSettled(l):Promise.resolve(l))).then(l=>{let h=cl(r,l,a);if(a.length>0)throw yi(a);return h})}var de={Max:Number.POSITIVE_INFINITY,Critical:1e9,High:1e6,Medium:1e3,Normal:0,Low:-1e4,Min:Number.NEGATIVE_INFINITY,AAA:1e9,BB:1e6,C:1e3,Default:0},ul=(s,e,t,r,n,o,a,l)=>{let h=s.add(t,r,n,o,l),d=s.lastAddCreatedListener;if(l!==null&&h.callAfterApply===void 0&&(h.callAfterApply=y=>s.settleOneShots(h,y)),e.hasRetainedFor(t)&&(d||l!==null)){let y=l===null?h:{apply:(g,C,E)=>{l.settled||h.apply(g,C,E)}};a.events=e.replayTo(t,y,a.events)}return h},eo=(s,e)=>{if(typeof s!="number"||Number.isNaN(s))throw Be("called with a NaN priority!",e),new Error("subscribeTo() called with a NaN priority",{cause:"invalid-priority"})},to=(s,e)=>{if(!Ze(s))throw Be("called with a value that cannot be an event name!",e),new Error("subscribeTo() called with insufficient arguments",{cause:"invalid-name"})},fl=(s,e,t,r,n)=>{let o=t.length,a=typeof t[0],l,h,d,y;if(o>=2&&o<=3&&a==="number"?(l=te,[h,d,y]=t):o>=3&&o<=4&&typeof t[1]=="number"?[l,h,d,y]=t:(h=de.Normal,a==="string"||a==="symbol"||Array.isArray(t[0])?[l,d,y]=t:(l=te,[d,y]=t)),!d||Ds(d)===void 0){let C=d==null?"missing-listener":Ds(d)===void 0?"not-dispatchable":"empty-method-name";throw Be(C==="missing-listener"?"called with insufficient arguments!":C==="not-dispatchable"?"called with a value that cannot be a listener!":"called with an empty method name!",t),new Error("subscribeTo() called with insufficient arguments",{cause:C})}if(Ds(d)===pi&&y==null)throw Be("called with a method name but no listener object!",t),new Error("subscribeTo() called with insufficient arguments",{cause:"missing-listener-object"});Array.isArray(l)||to(l,t),eo(h,t);let g=(C,E)=>ul(s,e,E,C,d,y,r,n);if(Array.isArray(l)){if(l.length===0)throw Be("called with an empty array of event names!",t),new Error("subscribeTo() called with insufficient arguments",{cause:"empty-names"});for(let E=0;E<l.length;E++)if(!(E in l))throw Be("called with a sparse array of event names!",t),new Error("subscribeTo() called with insufficient arguments",{cause:"sparse-names"});return l.map(E=>{var Os;let O=Array.isArray(E)?[E[0],(Os=E[1])!=null?Os:h]:[E,h];return to(O[0],t),eo(O[1],t),O}).map(E=>g(E[1],E[0]))}return g(h,l)},ho=(s,e,t,r=null)=>{let n={},o=fl(s,e,t,n,r);return n.events!==void 0&&$a(n.events),o},dl=(s,e)=>{let t={host:s,listeners:e};return()=>{let r=t;if(r===null)return;t=null;let{store:n}=$e(r.host);Array.isArray(r.listeners)?r.listeners.forEach(o=>n.release(o)):n.release(r.listeners)}},gl=(s,e)=>{let t={host:s,obligation:e};return e.settled?t=null:e.onSettled=()=>{t=null},()=>{let r=t;if(r===null)return;t=null;let{store:n}=$e(r.host);n.releaseObligation(r.obligation)}},yl=s=>Array.isArray(s)?s.some(e=>e==null||e===te):s===te,A=(s,...e)=>{let t=Fs(s),{store:r,keeper:n}=$e(t);return dl(t,ho(r,n,e))},x=(s,...e)=>{let t=Fs(s),{store:r,keeper:n}=$e(t),o=Ua();return ho(r,n,e,o),gl(t,o)},so=s=>{var e;return(e=s.reason)!=null?e:new DOMException("This operation was aborted","AbortError")};function pl(s,e,t){let r=t==null?void 0:t.signal,n,o,a=new Promise((y,g)=>{n=y,o=g});if(r!=null&&typeof r.addEventListener!="function")throw new TypeError("options.signal must be an AbortSignal (or omitted)");if(r!=null&&r.aborted)return o(so(r)),a;let l,h=!1,d=x(s,e,(...y)=>{h=!0,r!=null&&l!=null&&r.removeEventListener("abort",l),n(y[0])});return r!=null&&!h&&(l=()=>{d(),o(so(r))},r.addEventListener("abort",l,{once:!0})),a}function z(s,e,t){if(!me(s))return;let{store:r,keeper:n}=$e(s),o=typeof e,a=t!=null&&(o==="string"||o==="symbol");r.remove(e,t,a);let l=t==null&&Array.isArray(e)?e.flat(1/0):e;if(e==null||t==null&&yl(l)){n.removeAll();return}t==null&&Oa(l)?n.remove(l.filter(Ze)):Ze(e)&&n.remove(e)}var uo=s=>Array.isArray(s)?s.some(e=>e===te):s===te,fo=(s,e)=>{if(!Array.isArray(e)){if(!Ze(e))throw new Error(`${s}() called with a value that cannot be an event name`,{cause:"invalid-name"});return}if(e.length===0)throw new Error(`${s}() called with an empty array of event names`,{cause:"empty-names"});for(let t=0;t<e.length;t++)if(!(t in e))throw new Error(`${s}() called with a sparse array of event names`,{cause:"sparse-names"});for(let t of e)if(!Ze(t))throw new Error(`${s}() called with a value that cannot be an event name`,{cause:"invalid-name"})},go=(s,e,t,r,n)=>{if(!me(e))throw new TypeError(`${s}() cannot operate on a non-eventized object \\u2014 eventize(obj) first, or guard the call with isEventized(obj)`);let{keeper:o}=$e(e);if(uo(t)){r(o);return}fo(s,t),n(o,t)};function _s(s,e){uo(e)&&wi("retained"),fo("retain",e);let t=Fs(s),{keeper:r}=$e(t);r.add(e)}function Si(s,e){go("retainClear",s,e,t=>t.clearAll(),(t,r)=>t.clear(r))}function Ci(s,e){go("unretain",s,e,t=>t.removeAll(),(t,r)=>t.remove(r))}var vl=A,bl=x,ml=z,wl=k,El=al,Sl=$s,Cl=ll,kl=mt,Al=hl,Ol=pl,xl=_s,zl=Si,Pl=Ci,Rl={on(...s){return vl(this,...s)},once(...s){return bl(this,...s)},onceAsync(s,e){return Ol(this,s,e)},off(s,e){ml(this,s,e)},emit(s,...e){wl(this,s,...e)},emitAsync(s,...e){return El(this,s,...e)},emitSafe(s,...e){Sl(this,s,...e)},emitSafeAsync(s,...e){return Cl(this,s,...e)},emitStrict(s,...e){kl(this,s,...e)},emitStrictAsync(s,...e){return Al(this,s,...e)},retain(s){xl(this,s)},retainClear(s){zl(this,s)},unretain(s){Pl(this,s)}},yo=Object.entries(Rl),Y=(()=>{let s=(e={})=>Fs(e);return s.inject=(e={})=>{e=Fs(e);for(let[t,r]of yo)Object.defineProperty(e,t,{value:r.bind(e),writable:!0,enumerable:!1,configurable:!0});return e},s.is=me,s})(),Ml=class{constructor(){Y(this)}};for(let[s,e]of yo)Object.defineProperty(Ml.prototype,s,{value:e,writable:!0,enumerable:!1,configurable:!0});var qt=class extends Error{constructor(e,t,r){super(`the kernel applied ${e} of ${t} change trail entries`,r),this.name="ChangeTrailRefusedError",this.appliedCount=e,this.entryCount=t}};var po=`module has no "${zs}" export`;async function ki(s,e,t,r=!0){var o,a;if(t.has(e)){s.logger.warn("importModule: skipping already imported module",e);return}else t.add(e);e.extends&&await Promise.all(e.extends.map(l=>ki(s,l,t,!1)));let{registry:n}=s;if(e.define)for(let[l,h]of Object.entries(e.define))n.define(l,h);if(e.routes)for(let[l,h]of Object.entries(e.routes))n.appendRoute(l,h);await((a=(o=e.initialize)==null?void 0:o.call(e,{define:(l,h)=>n.define(l,h),kernel:s,registry:n}))!=null?a:Promise.resolve()),r&&s.upgradeEntities()}var ql={};var ye=Symbol.for("@spearwolf/signalize/signal"),ne=Symbol.for("@spearwolf/signalize/effect"),Ui=Symbol.for("@spearwolf/signalize/destroySignal"),ko=Symbol.for("@spearwolf/signalize/createEffect"),Ao=Symbol.for("@spearwolf/signalize/destroyEffect"),Oo=Symbol.for("@spearwolf/signalize/effectError"),Tl=Symbol.for("@spearwolf/signalize/signalizeError"),st=Symbol.for("@spearwolf/signalize/queueUnsubscribes"),Ws=Symbol.for("@spearwolf/signalize/autoMapResources"),Ai=Symbol.for("@spearwolf/signalize/instances"),Us="value",Vi="mute",Hi="unmute",Se="destroy",Ll="off",Zt=Symbol.for("@spearwolf/signalize/recall"),Vs=Y(),Ce=Y(),je=Y(),Qi=Y(),Dl=(s,e)=>{var t;try{let r=(t=globalThis[Ai])!=null?t:globalThis[Ai]=[];if(r.push({url:s,report:e}),r.length>1){let n={level:"error",source:"multiple-instances",message:`[signalize] ${r.length} copies of @spearwolf/signalize are loaded in this process; they share no signals, effects, groups or links. Loaded from: ${r.map(({url:o})=>o).join(", ")}`};try{r[0].report(n)}catch(o){e(n)}}return r.length}catch(r){return 0}},Bl=0;var Fl=({level:s,message:e,error:t})=>{let r=s==="warn"?console.warn:console.error;t===void 0?r(e):r(e,t)},pe=s=>{if(Bl>0)try{k(je,Tl,s);return}catch(e){console.error(`[signalize] an onSignalizeError handler threw while reporting a ${s.source} diagnostic:`,e)}Fl(s)};Dl(ql.url,pe);var vo=new Set,Mi=(s,e)=>{vo.has(s)||(vo.add(s),pe({level:"warn",source:"deprecation",message:e}))},Ti,xo=s=>{Ti=s},zo=()=>{if(Ti===void 0)throw new Error(\'[signalize] effect subsystem not registered \\u2014 Signal.onChange() and signalReader(callback) need it. Import "@spearwolf/signalize" through its entry point, so that effects.js is evaluated.\');return Ti},Hs=s=>s!=null&&typeof s.then=="function",Po=(s,e,t,r)=>{if(Hs(s))throw new TypeError(`[signalize] ${e}: ${t} must be synchronous, but it returned a thenable. ${r}`)},$l=0;function Dr(){return $l>0}var F=(s,e)=>{if(s.length!==0)throw s.length===1?s[0]:new AggregateError(s,`[signalize] ${s.length} errors while ${e}`)},S=(s,e)=>{try{e()}catch(t){s.push(t)}},Yi=0,St,Br=()=>{Yi++;let s=St;return St=void 0,s},Fr=(s,e)=>{let t=St;St=s,Yi--,t!==void 0&&F(t,e)},es=s=>Yi===0?!1:(St===void 0&&(St=[]),St.push(s),!0),Li=[],$r=()=>Li.at(-1),qi=(s,e)=>{Li.push(s);try{return e()}finally{Li.pop()}};var Ki=0,Ro=new FinalizationRegistry(()=>{--Ki}),_l=s=>{++Ki,Ro.register(s,void 0,s)};function bo(s){var e;Dr()||(e=$r())==null||e.whenSignalIsRead(s)}function Di(s,e,t){if(!Dr()){let r=Br();try{k(Vs,s,e,t)}catch(n){es(n)}finally{Fr(r,"notifying the effects of a signal write")}}}var tt=s=>s!=null&&s[ye]!=null,W=s=>s==null?void 0:s[ye],D=(...s)=>{for(let e of s){let t=W(e);if(t!=null&&!t.destroyed){t.destroyed=!0,t.beforeRead=void 0,Ro.unregister(t),--Ki;let r=Br();try{k(Ce,t.id,t.id)}catch(n){es(n)}finally{Fr(r,"notifying the subscribers of a destroyed signal")}}}};var Xt=new WeakMap,Gl=s=>{let e=Xt.get(s);return e||(e={},Xt.set(s,e)),e},Qs=(s,e)=>{var t,r;return(r=(t=Xt.get(s))==null?void 0:t.signals)==null?void 0:r.get(e)},Ji=(s,e)=>{var t,r;return(r=(t=Xt.get(s))==null?void 0:t.signals)==null?void 0:r.get(e)};var Mo=(s,e,t)=>{var n;let r=Gl(s);(n=r.signals)!=null||(r.signals=new Map),r.signals.set(e,t)};function Xi(...s){let e=[];for(let t of s)if(Xt.has(t)){let r=Xt.get(t);if(r.signals){for(let n of r.signals.values())S(e,()=>D(n));r.signals.clear(),r.signals=void 0}}F(e,"destroying the signals of an object")}function To(s){if(!tt(s)&&!Array.isArray(s))throw new TypeError("[signalize] touch: source must be a signal or an [object, propertyName] tuple");let e=W(tt(s)?s:Qs(...s));e!=null&&!e.muted&&!e.destroyed&&Di(e.id,e.value,{touch:!0})}function ts(s){var e,t;if(!tt(s)&&!Array.isArray(s))throw new TypeError("[signalize] value: source must be a signal or an [object, propertyName] tuple");return tt(s)?(e=W(s))==null?void 0:e.value:(t=W(Qs(...s)))==null?void 0:t.value}var So;So=ye;var Lr=class{constructor(e){p(this,So);this[ye]=e}get get(){return this[ye].reader}get set(){return this[ye].writer}get value(){return ts(this.get)}set value(e){this.set(e)}onChange(e){let{destroy:t}=zo()(()=>e(this.get()),[this.get]);return t}get muted(){return this[ye].muted}set muted(e){this[ye].muted=e}get destroyed(){return this[ye].destroyed}touch(){To(this)}destroy(){D(this)}},wt=new WeakMap,Kt=new Set,_e=Symbol.for("@spearwolf/signalize/groupResources"),mo=new FinalizationRegistry(s=>{for(let e of s.unsubs)try{e()}catch(t){pe({level:"error",source:"group-finalizer",message:"[signalize] releasing the destroy-queue subscriptions of a collected SignalGroup failed:",error:t})}s.unsubs.clear(),s.selfRef!=null&&Kt.delete(s.selfRef)}),Il=s=>{let e=s[_e].selfRef;if(!(e==null||!Kt.has(e)))try{s.clear()}catch(t){pe({level:"error",source:"group-finalizer",message:"[signalize] a SignalGroup teardown threw in the FinalizationRegistry callback, where no caller can catch it:",error:t})}},wo=new FinalizationRegistry(s=>{let e=s.deref();e!==void 0&&Il(e)});var jl=Symbol.for("@spearwolf/signalize/setParentGroup"),Oi=1,xi=2,zi=4,Pi=8,Ri=16,Eo="[signalize] Cannot attach a group to one of its own descendants: this would create a cycle in the group graph",_r="[signalize] internal error: a shared empty stand-in collection was written to",Bi=class extends Set{add(){throw new Error(_r)}},Fi=class extends Map{set(){throw new Error(_r)}},$i=class extends WeakMap{set(){throw new Error(_r)}},_i=class extends WeakSet{add(){throw new Error(_r)}},Gs=new Bi,Tr=new Fi,Lo=new $i,Do=new _i,Rr=s=>s===Gs?new Set:s,Mr=s=>s===Tr?new Map:s,Nl=s=>s===Lo?new WeakMap:s,Wl=s=>s===Do?new WeakSet:s,Co,q,we,N,se,K,Ge,re,Ee,ie,Jt,B,R,Et,$,Gi,Ii,ji,Bo,Ni,et=class et{constructor(e){u(this,$);u(this,q,Gs);u(this,we,new Set);u(this,N,Tr);u(this,se,Lo);u(this,K,Tr);u(this,Ge,Gs);u(this,re,new Set);u(this,Ee,Tr);p(this,Co,{unsubs:Gs});u(this,ie,Gs);u(this,Jt,Do);u(this,B);u(this,R,0);u(this,Et);if(e!=null&&e instanceof et)return e;if(e!=null||(e=this),wt.has(e))return wt.get(e);f(this,Et,new WeakRef(e)),wt.set(e,this);let t=new WeakRef(this);this[_e].selfRef=t,Kt.add(t),mo.register(this,this[_e],this),e!==this&&wo.register(e,t,this),Y(this)}static get(e){if(e!=null)return e instanceof et?e:wt.get(e)}static findOrCreate(e){var t;if(e==null)throw new Error("[signalize] Cannot create a group with a null object");return e instanceof et?e:(t=wt.get(e))!=null?t:new et(e)}static destroy(e){Mi("SignalGroup.destroy","[signalize] SignalGroup.destroy(obj) is deprecated. Use SignalGroup.delete(obj) instead."),et.delete(e)}static delete(e){var t;if(e instanceof et){e.clear();return}(t=wt.get(e))==null||t.clear()}static clear(){let e=[];for(let t of[...Kt]){let r=t.deref();if(r===void 0){Kt.delete(t);continue}S(e,()=>r.clear())}F(e,"clearing all signal groups")}attachGroup(e){if(e===this)throw new Error("[signalize] Cannot attach a group to itself");let t=this,r=i(this,B);for(;r!=null;){if(r===e)throw new Error(Eo);if(r=i(r,B),r==null)break;if(r===e)throw new Error(Eo);if(r=i(r,B),t=i(t,B),r!=null&&r===t)throw new Error("[signalize] Cannot attach a group: the parent chain of this group is already cyclic")}return f(this,q,Rr(i(this,q))).add(e),i(e,B)&&i(e,B)!==this&&i(i(e,B),q).delete(e),f(e,B,this),e}detachGroup(e){return e!==this&&i(this,q).has(e)&&(i(this,q).delete(e),f(e,B,void 0)),e}[(Co=_e,jl)](e){f(this,B,e)}attachSignal(e){let t=c(this,$,Gi).call(this,e);return t&&f(this,Ge,Rr(i(this,Ge))).add(t),e}attachSignalByName(e,t){if(t){let r=c(this,$,Gi).call(this,t),n=i(this,N).get(e);n!=null&&n!==r&&c(this,$,Bo).call(this,e,n),f(this,N,Mr(i(this,N))).set(e,r);let o=i(this,K).get(e);o?o.add(r):f(this,K,Mr(i(this,K))).set(e,new Set([r])),i(this,se).has(r)?i(this,se).get(r).add(e):f(this,se,Nl(i(this,se))).set(r,new Set([e]))}else{let r=i(this,K).get(e);if(r)for(let n of[...r])c(this,$,ji).call(this,e,n);i(this,N).delete(e)}return t}hasSignal(e){var t;if(i(this,R)&Oi)return!1;f(this,R,i(this,R)|Oi);try{return i(this,N).has(e)||!!((t=i(this,B))!=null&&t.hasSignal(e))}finally{f(this,R,i(this,R)&~Oi)}}signal(e){var t,r,n;if(!(i(this,R)&xi)){f(this,R,i(this,R)|xi);try{return(n=(t=i(this,N).get(e))==null?void 0:t.object)!=null?n:(r=i(this,B))==null?void 0:r.signal(e)}finally{f(this,R,i(this,R)&~xi)}}}detachSignal(e){let t=W(e);return t&&c(this,$,Ni).call(this,t),e}attachEffect(e){let t=e!=null&&ne in e?e[ne]:e;if(t==null||t.destroyed)throw new Error("[signalize] Cannot attach a destroyed effect to a group");return i(this,re).has(t)||(i(this,re).add(t),x(t,Se,de.Max,()=>{i(this,re).delete(t)})),e}runEffects(){if(!(i(this,R)&zi)){f(this,R,i(this,R)|zi);try{for(let e of i(this,re))e.run();for(let e of i(this,q))e.runEffects()}finally{f(this,R,i(this,R)&~zi)}}}attachLink(e){if(e!=null&&e.isDestroyed)throw new Error("[signalize] Cannot attach a destroyed link to a group");return e&&(f(this,ie,Rr(i(this,ie))).add(e),i(this,Jt).has(e)||(f(this,Jt,Wl(i(this,Jt))).add(e),x(e,Se,de.Max,()=>{i(this,ie).delete(e)}))),e}detachLink(e){return e&&i(this,ie).delete(e),e}get memberCounts(){return{signals:i(this,we).size,namedSignals:i(this,N).size,signalsByName:i(this,K).size,effects:i(this,re).size,links:i(this,ie).size,groups:i(this,q).size}}destroy(){Mi("SignalGroup#destroy","[signalize] SignalGroup#destroy is deprecated. Use SignalGroup#clear instead."),this.clear()}off(){if(!(i(this,R)&Pi)){f(this,R,i(this,R)|Pi);try{let e=[];for(let t of[...i(this,q)])S(e,()=>t.off());for(let t of[...i(this,re)])S(e,()=>t.destroy());i(this,re).clear();for(let t of[...i(this,ie)])S(e,()=>t.destroy());i(this,ie).clear();for(let t of[...i(this,we)])t.destroyed||S(e,()=>k(Ce,t.id,t.id,{detach:!0}));S(e,()=>k(this,Ll,this)),F(e,"switching off a signal group")}finally{f(this,R,i(this,R)&~Pi)}}}clear(){var e;if(!(i(this,R)&Ri)){f(this,R,i(this,R)|Ri);try{let t=[];S(t,()=>k(this,Se,this)),S(t,()=>z(this));for(let r of[...i(this,q)])S(t,()=>r.clear());for(let r of[...i(this,re)])S(t,()=>r.destroy());for(let r of[...i(this,we)])S(t,()=>D(r));for(let r of[...i(this,ie)])S(t,()=>r.destroy());for(let r of[...i(this,Ee).values()])S(t,()=>r());if(i(this,Ee).clear(),i(this,q).clear(),i(this,we).clear(),i(this,N).clear(),i(this,K).clear(),i(this,Ge).clear(),i(this,re).clear(),i(this,ie).clear(),(e=i(this,B))==null||e.detachGroup(this),i(this,Et)){let r=i(this,Et).deref();r!==void 0&&wt.delete(r),f(this,Et,void 0)}Kt.delete(this[_e].selfRef),this[_e].unsubs.clear(),wo.unregister(this),mo.unregister(this),F(t,"clearing a signal group")}finally{f(this,R,i(this,R)&~Ri)}}}};q=new WeakMap,we=new WeakMap,N=new WeakMap,se=new WeakMap,K=new WeakMap,Ge=new WeakMap,re=new WeakMap,Ee=new WeakMap,ie=new WeakMap,Jt=new WeakMap,B=new WeakMap,R=new WeakMap,Et=new WeakMap,$=new WeakSet,Gi=function(e){let t=W(e);if(t!=null&&t.destroyed)throw new Error("[signalize] Cannot attach a destroyed signal to a group");if(t&&(i(this,we).add(t),!i(this,Ee).has(t))){let r=this[_e].selfRef,n=new WeakRef(t),o=A(Ce,t.id,(l,h)=>{var g;if(h!=null&&h.detach)return;let d=n.deref(),y=r.deref();d!==void 0&&y!==void 0&&c(g=y,$,Ni).call(g,d)});f(this,Ee,Mr(i(this,Ee))).set(t,o);let a=this[_e];(a.unsubs=Rr(a.unsubs)).add(o)}return t},Ii=function(e){let t=i(this,Ee).get(e);if(t)try{t()}finally{i(this,Ee).delete(e),this[_e].unsubs.delete(t)}},ji=function(e,t){let r=i(this,K).get(e);r&&(r.delete(t),r.size===0&&i(this,K).delete(e));let n=i(this,se).get(t);n&&(n.delete(e),n.size===0&&(i(this,se).delete(t),i(this,Ge).has(t)||(c(this,$,Ii).call(this,t),i(this,we).delete(t),D(t))))},Bo=function(e,t){i(this,Ge).has(t)||c(this,$,ji).call(this,e,t)},Ni=function(e){let t=[];if(S(t,()=>c(this,$,Ii).call(this,e)),i(this,we).delete(e),i(this,Ge).delete(e),i(this,se).has(e)){let r=i(this,se).get(e);for(let n of r){let o=i(this,K).get(n);if(o){if(o.delete(e),o.size===0)i(this,N).delete(n),i(this,K).delete(n);else if(i(this,N).get(n)===e){let a;for(let l of o)a=l;f(this,N,Mr(i(this,N))).set(n,a)}}}r.clear(),i(this,se).delete(e)}F(t,"detaching a signal from a signal group")};var Ie=et,js,Ns,Is=class{constructor(e="id",t=1){u(this,js);u(this,Ns);f(this,js,e),f(this,Ns,t)}make(){return Symbol(`${i(this,js)}${Je(this,Ns)._++}`)}};js=new WeakMap,Ns=new WeakMap;var Ul=new Is("si"),Vl=["lazy","compare","beforeRead"],Hl=(s,e)=>s===e;function Ql(){Mi("signalReader(callback)","[signalize] signalReader(callback) is deprecated and will be removed in a future release. Use Signal.onChange(callback) instead \\u2014 it returns an unsubscribe function for proper cleanup.")}var Yl=s=>{let e=t=>{var r;return s.destroyed||(r=s.beforeRead)==null||r.call(s),t?(Ql(),zo()(()=>(s.destroyed||bo(s.id),t(s.value)),[e])):s.destroyed||bo(s.id),s.value};return Object.defineProperty(e,ye,{value:s}),e},ge,Wi=class{constructor(e,t){p(this,"id");p(this,"lazy");p(this,"compare");p(this,"beforeRead");p(this,"muted",!1);p(this,"destroyed",!1);u(this,ge);p(this,"valueFn");p(this,"reader");p(this,"writer",(e,t)=>{var l,h,d;let r=(l=t==null?void 0:t.lazy)!=null?l:!1,n=(h=t==null?void 0:t.compare)!=null?h:this.compare,o=n!=null?n:Hl;if((r!==this.lazy||r&&e!==this.valueFn||!r&&!o(e,i(this,ge)))&&(r?(f(this,ge,void 0),this.valueFn=e,this.lazy=!0):(f(this,ge,e),this.valueFn=void 0,this.lazy=!1),!this.muted&&!this.destroyed)){Di(this.id,i(this,ge));return}(d=t==null?void 0:t.touch)!=null&&d&&!this.muted&&!this.destroyed&&Di(this.id,i(this,ge),{touch:!0})});p(this,"object");this.id=Ul.make(),_l(this),this.lazy=e,this.lazy?(this.value=void 0,this.valueFn=t):(this.value=t,this.valueFn=void 0),this.reader=Yl(this),this.object=new Lr(this)}get[ye](){return this}get value(){return this.lazy&&(f(this,ge,this.valueFn()),this.valueFn=void 0,this.lazy=!1),i(this,ge)}set value(e){f(this,ge,e)}};ge=new WeakMap;function _(s=void 0,e){var r;let t;if(tt(s)){t=W(s);let n=Vl.filter(o=>(e==null?void 0:e[o])!=null);n.length>0&&pe({level:"warn",source:"ignored-option",message:`[signalize] createSignal(existingSignal, {${n.join(", ")}}) is a passthrough: it returns the signal that was passed in, so nothing in those braces is applied. Only {attach} works on this path. Configure the signal where it is created, or drop the options.`})}else{let n=(r=e==null?void 0:e.lazy)!=null?r:!1;t=new Wi(n,s),t.beforeRead=e==null?void 0:e.beforeRead,t.compare=e==null?void 0:e.compare}return(e==null?void 0:e.attach)!=null&&Ie.findOrCreate(e.attach).attachSignal(t),t.object}var en=0,Kl=()=>en>0,nt=class{constructor(){p(this,"delayedEffects",[])}batch(e,t){let r=this.delayedEffects.length;for(let n=0;n<r;n++){let[o,a]=this.delayedEffects[n];if(!(o>t)){if(o===t){a.add(e);return}this.delayedEffects.splice(n,0,[t,new Set([e])]);return}}this.delayedEffects.push([t,new Set([e])])}unbatch(e,t){let r=this.delayedEffects.length;for(let n=0;n<r;n++){let[o,a]=this.delayedEffects[n];if(o===t){a.delete(e);return}}}flush(){try{this.run()}finally{this.delayedEffects.length=0}}run(){if(this.delayedEffects.length===0)return;let e=new Set,t=[];en++;let r=Br();try{t.push(A(je,(n,o)=>{o===Zt&&e.add(n)}),A(Qi,n=>{e.add(n)}));for(let[,n]of this.delayedEffects)for(let o of n)if(!e.has(o))try{k(je,o,o,Zt)}catch(a){es(a)}}finally{try{for(let n of t)n()}finally{try{Fr(r,"flushing a batch of signal writes")}finally{en--}}}}};p(nt,"current");var Jl=()=>nt.current;var Xl="batch() only sees writes made on the current call stack \\u2014 an async callback stops being batched at its first `await`, so every write after that runs unbatched without any error. Move the async work outside of batch(), or split it into several synchronous batch() calls.";function Rt(s){let e=nt.current;e?e=void 0:e=nt.current=new nt;let t;try{let r=s();Po(r,"batch","callback",Xl)}catch(r){t=[r]}finally{if(e){nt.current=void 0;try{e.run()}catch(r){t===void 0?t=[r]:t.push(r)}}}t!==void 0&&F(t,"running a batch")}var Zl=()=>{},_o;_o=ne;var tn=class{constructor(e){p(this,_o);p(this,"run",()=>{var e;return(e=this[ne])==null?void 0:e.run()});p(this,"runImmediately",()=>{var e;return(e=this[ne])==null?void 0:e.runImmediately()});p(this,"destroy",()=>{var e;(e=this[ne])==null||e.destroy(),this[ne]=void 0});this[ne]=e,x(e,Se,()=>{this[ne]=void 0})}get destroyed(){let e=this[ne];return e==null||e.destroyed}onDestroy(e){let t=this[ne];return t==null||t.destroyed?(e(),Zl):x(t,Se,e)}},ec=0,tc=()=>ec>0;var Ct,Ys=(s,e,t)=>{if(tc()){let r={error:e,effect:s,effectId:s.id,phase:t};try{k(je,Oo,r);return}catch(n){console.error(`[signalize] an onEffectError handler threw while reporting an error of effect ${s.id.toString()}:`,n)}}pe({level:"error",source:"effect",message:`[signalize] unhandled rejection in the ${t} of effect ${s.id.toString()}:`,error:e})},Ks,Js,sn=class{constructor(e,t){p(this,"active");u(this,Ks);u(this,Js,!1);this.active=e,f(this,Ks,t)}complete(){f(this,Js,!0)}mayCommit(e){return this.active&&(i(this,Js)||e>i(this,Ks))}};Ks=new WeakMap,Js=new WeakMap;var At,ke,Ae,Ne,ss,rt,Ot,rs,xt,Oe,it,is,Xs,zt,Zs,rn,kt=class{constructor(e,t){u(this,Zs);p(this,"id");p(this,"callback");u(this,At);u(this,ke,new Set);u(this,Ae,new Set);u(this,Ne,new Map);u(this,ss,0);u(this,rt,new Set);u(this,Ot,[]);p(this,"autorun",!0);p(this,"shouldRun",!0);u(this,rs,!1);p(this,"priority");u(this,xt);u(this,Oe,!1);u(this,it,0);u(this,is,!1);u(this,Xs,0);u(this,zt,!1);var n,o;Y(this),this.callback=e;let r=(t==null?void 0:t.attach)!=null?Ie.findOrCreate(t.attach):void 0;this.autorun=(n=t==null?void 0:t.autorun)!=null?n:!0,f(this,xt,t!=null&&t.dependencies?t.dependencies.map(a=>{switch(typeof a){case"string":case"symbol":{if(r==null)throw new Error(`[signalize] createEffect: cannot resolve dependency "${String(a)}" \\u2014 no SignalGroup is attached (missing "attach" option)`);let l=r.signal(a);if(l==null)throw new Error(`[signalize] createEffect: cannot resolve dependency "${String(a)}" \\u2014 no signal with that name is registered in the attached SignalGroup`);return l}default:return a}}):void 0),this.id=Ct.idGen.make(),this.priority=(o=t==null?void 0:t.priority)!=null?o:0,A(je,this.id,Zt,this),r==null||r.attachEffect(this),++Ct.count}get destroyed(){return i(this,Oe)}hasStaticDeps(){return i(this,xt)!=null&&i(this,xt).length>0}saveSignalsFromDeps(){for(let e of i(this,xt)){let t=W(e);t.destroyed||this.whenSignalIsRead(t.id)}}static createEffect(e,t,r){var l;let n=Array.isArray(t)?t:void 0,o=n?Dn(ue({},r),{dependencies:n}):t,a=new Ct(e,o);try{(l=$r())==null||l.attachChildEffect(a),k(je,ko,a),a.hasStaticDeps()?a.destroyed||a.saveSignalsFromDeps():a.autorun&&a.run()}catch(h){let d=[h];(o==null?void 0:o.attach)==null&&S(d,()=>a.destroy()),F(d,"creating an effect")}return new tn(a)}attachChildEffect(e){i(this,Ot).push(e)}run(){c(this,Zs,rn).call(this,!1)}runImmediately(){c(this,Zs,rn).call(this,!0)}runStaticCallback(e){this.saveSignalsFromDeps(),this.storeCleanupCallback(this.runWithoutAutoTracking(),e)}runDynamicCallback(e){let t=new sn(!Dr(),i(this,ss));if(t.active){i(this,Ae).clear();for(let r of i(this,ke))i(this,Ae).add(r)}try{this.storeCleanupCallback(qi(this,this.callback),e),t.complete()}finally{t.mayCommit(i(this,ss))&&(this.cleanupLostSignals(),i(this,rt).clear())}}runWithoutAutoTracking(){let e=i(this,zt);f(this,zt,!0);try{return qi(this,this.callback)}finally{f(this,zt,e)}}[Zt](){if(this.shouldRun=!0,!(!this.autorun&&!i(this,rs)))try{this.run()}catch(e){if(!es(e))throw e}}whenSignalIsRead(e){i(this,Oe)||i(this,zt)||(Je(this,ss)._++,i(this,Ae).delete(e),i(this,ke).has(e)||(i(this,ke).add(e),i(this,Ne).set(e,[A(Vs,e,this.priority,Zt,this),x(Ce,e,Ui,this)])))}[Ui](e,t){try{this.onSignalDestroyed(e,t)}catch(r){if(t!=null&&t.detach||!es(r))throw r}}onSignalDestroyed(e,t){if(i(this,ke).has(e)){if(t!=null&&t.detach){this.unsubscribeSignal(e),i(this,ke).delete(e),i(this,rt).delete(e),i(this,Ae).delete(e),this.hasNoLiveSignals()&&this.destroyWhenUntriggerable();return}i(this,rt).has(e)||(i(this,rt).add(e),this.unsubscribeSignal(e),this.hasNoLiveSignals()&&this.destroyWhenUntriggerable())}}destroyWhenUntriggerable(){if(i(this,it)>0){f(this,is,!0);return}this.destroy()}hasNoLiveSignals(){return i(this,Ne).size===0}cleanupLostSignals(){if(i(this,Ae).size===0)return;let e=[];for(let t of i(this,Ae))S(e,()=>this.unsubscribeSignal(t)),i(this,ke).delete(t);F(e,"unsubscribing an effect from a signal")}destroyChildEffects(){if(i(this,Ot).length===0)return;let e=[];this.collectDestroyChildEffects(e),F(e,"destroying an effect")}collectDestroyChildEffects(e){for(let t of i(this,Ot))S(e,()=>t.destroy());i(this,Ot).length=0}unsubscribeSignal(e){if(i(this,Ne).has(e)){let t=[];try{i(this,Ne).get(e).forEach(r=>{S(t,()=>r())})}finally{i(this,Ne).delete(e)}F(t,"unsubscribing an effect from a signal")}}storeCleanupCallback(e,t){if(!Hs(e)){typeof e=="function"&&this.acceptCleanupCallback(e,t);return}Promise.resolve(e).then(r=>{typeof r=="function"&&this.acceptCleanupCallback(r,t)},r=>{Ys(this,r,"callback")})}acceptCleanupCallback(e,t){if(i(this,Oe)||t!==i(this,Xs)){this.runOrphanedCleanupCallback(e);return}let r=i(this,At);f(this,At,e),r!=null&&this.runOrphanedCleanupCallback(r)}runCleanupCallback(){let e=i(this,At);if(e==null)return;f(this,At,void 0);let t=e();Hs(t)&&Promise.resolve(t).catch(r=>{Ys(this,r,"cleanup")})}runOrphanedCleanupCallback(e){try{let t=e();Hs(t)&&Promise.resolve(t).catch(r=>{Ys(this,r,"cleanup")})}catch(t){Ys(this,t,"cleanup")}}destroy(){if(i(this,Oe))return;f(this,Oe,!0),z(Vs,this),z(je,this),z(Ce,this);let e=[];S(e,()=>k(this,Se,this)),S(e,()=>z(this)),S(e,()=>k(je,Ao,this)),S(e,()=>this.runCleanupCallback());try{this.collectDestroyChildEffects(e)}finally{i(this,ke).clear(),i(this,Ae).clear(),i(this,Ne).clear(),i(this,rt).clear(),--Ct.count}F(e,"destroying an effect")}};At=new WeakMap,ke=new WeakMap,Ae=new WeakMap,Ne=new WeakMap,ss=new WeakMap,rt=new WeakMap,Ot=new WeakMap,rs=new WeakMap,xt=new WeakMap,Oe=new WeakMap,it=new WeakMap,is=new WeakMap,Xs=new WeakMap,zt=new WeakMap,Zs=new WeakSet,rn=function(e){if(i(this,Oe)||!this.shouldRun)return;let t=Jl();if(t){if(!e){this.autorun||f(this,rs,!0),t.batch(this.id,this.priority);return}t.unbatch(this.id,this.priority)}if(f(this,rs,!1),i(this,it)>=Ct.maxDepth)throw new Error(`[signalize] Effect ${this.id.toString()} exceeded maxDepth=${Ct.maxDepth}: an effect callback recursively re-triggered itself (likely by writing a signal it depends on). Break the cycle, or raise the cap with setMaxEffectDepth(n) if the recursion is intentional.`);Je(this,it)._++;try{this.runCleanupCallback(),this.destroyChildEffects(),this.shouldRun=!1,Kl()&&k(Qi,this.id,this.id);let r=++Je(this,Xs)._;this.hasStaticDeps()?this.runStaticCallback(r):this.runDynamicCallback(r)}finally{if(Je(this,it)._--,i(this,it)===0&&i(this,is)&&(f(this,is,!1),!i(this,Oe)&&this.hasNoLiveSignals()))try{this.destroy()}catch(r){Ys(this,r,"cleanup")}}},p(kt,"idGen",new Is("ef")),p(kt,"count",0),p(kt,"maxDepth",256);Ct=kt;var ot=(...s)=>kt.createEffect(...s);xo(ot);function jo(s,e){var n,o,a;let t=$r(),r=_();try{let l=(e==null?void 0:e.name)||void 0,h=(e==null?void 0:e.attach)!=null?Ie.findOrCreate(e.attach):void 0;h!=null?l!=null?h.attachSignalByName(l,r):h.attachSignal(r):l!=null&&pe({level:"warn",source:"ignored-option",message:`[signalize] createMemo({name: ${String(l)}}) without {attach} is ignored: a name only exists within a SignalGroup. Pass {attach} as well, or drop the name.`});let d=(n=e==null?void 0:e.batchWrites)!=null?n:!1,y=ot(()=>{d?Rt(()=>{r.set(s())}):r.set(s())},{autorun:!((o=e==null?void 0:e.lazy)!=null&&o),priority:(a=e==null?void 0:e.priority)!=null?a:de.C,attach:h}),g=W(r);g.beforeRead=y.runImmediately;let C=x(Ce,g.id,y.destroy);return y.onDestroy(()=>{C(),t!=null&&D(r)}),r.get}catch(l){let h=[l];(e==null?void 0:e.attach)==null&&S(h,()=>D(r)),F(h,"creating a memo")}}var No="[signalize] SignalLink destroyed before the next value arrived",er,Pt,ns,tr,sr,nn=class{constructor(e,t,r){u(this,er);u(this,Pt);u(this,ns);u(this,tr,[]);u(this,sr,!1);f(this,er,e),f(this,Pt,t),f(this,ns,r)}get hasSettled(){return i(this,sr)}add(e){i(this,tr).push(e)}releaseAll(){i(this,ns)!=null&&(i(this,ns).cancel=void 0),i(this,tr).forEach(e=>{e()})}settleWithValue(e){f(this,sr,!0),this.releaseAll(),i(this,er).call(this,e)}settleWithDestroy(){this.releaseAll(),i(this,Pt).call(this,new Error(No))}settleWithAbort(e){this.releaseAll(),i(this,Pt).call(this,e)}settleWithCancel(){this.releaseAll(),i(this,Pt).call(this,new Error("[signalize] SignalLink read cancelled by the iterator"))}};er=new WeakMap,Pt=new WeakMap,ns=new WeakMap,tr=new WeakMap,sr=new WeakMap;var Go,V,os,rr,as,Ue,on,Wo,Uo;Go=st;var Ir=class{constructor(e){u(this,Ue);u(this,V,!1);p(this,Go,[]);u(this,os,0);u(this,rr,0);u(this,as,0);p(this,"source");p(this,"lastValue");p(this,"isDestroyed",!1);Y(this),this.source=W(e);let t=new WeakRef(this);this[st].push(A(Vs,this.source.id,(r,n)=>{let o=t.deref();o!=null&&!i(o,V)&&!o.isDestroyed&&((n==null?void 0:n.touch)===!0?o.touch():o.write())})),this[st].push(x(Ce,this.source.id,()=>{var r;return(r=t.deref())==null?void 0:r.destroy()}))}releaseOnDestroy(e){this[st].push(e)}attach(e){let t=Ie.findOrCreate(e);return t.attachLink(this),t}nextValue(e){return c(this,Ue,on).call(this,null,e)}asyncValues(e,t){let r={},n=c(this,Ue,Uo).call(this,r,e,t),o=n.return.bind(n);n.return=(l=>{var h;return(h=r.cancel)==null||h.call(r),o(l)});let a=n.throw.bind(n);return n.throw=(l=>{var h;return(h=r.cancel)==null||h.call(r),a(l)}),n}destroy(){if(this.isDestroyed)return;this.isDestroyed=!0;let e=[];for(let t of this[st])S(e,t);this[st].length=0,S(e,()=>k(this,Se,this)),S(e,()=>z(this)),this.lastValue=void 0,Object.freeze(this),F(e,"tearing down a SignalLink")}get isMuted(){return i(this,V)}mute(){return!this.isDestroyed&&!i(this,V)&&(f(this,V,!0),k(this,Vi,this)),this}unmute(){return!this.isDestroyed&&i(this,V)&&(f(this,V,!1),k(this,Hi,this)),this}toggleMute(){return this.isDestroyed||(f(this,V,!i(this,V)),k(this,i(this,V)?Vi:Hi,this)),i(this,V)}updateValue(e){if(!i(this,V)&&!this.isDestroyed){let t=++Je(this,rr)._,{value:r}=this.source;if(e(r),this.isDestroyed||i(this,rr)!==t)return;f(this,as,t),k(this,Us,r),this.lastValue=r}}};V=new WeakMap,os=new WeakMap,rr=new WeakMap,as=new WeakMap,Ue=new WeakSet,on=function(e,t,r){let{signal:n}=t!=null?t:{};return new Promise((o,a)=>{if(n!=null&&n.aborted){a(n.reason);return}if(this.isDestroyed){a(new Error(No));return}let l=new nn(o,a,r);if(r!=null&&(r.cancel=()=>l.settleWithCancel()),l.add(x(this,Se,()=>l.settleWithDestroy())),n!=null){let d=()=>l.settleWithAbort(n.reason);n.addEventListener("abort",d,{once:!0}),l.add(()=>n.removeEventListener("abort",d))}let h=A(this,Us,d=>{c(this,Ue,Wo).call(this,e)&&l.settleWithValue(d)});l.hasSettled?h():l.add(h)})},Wo=function(e){return e==null?!0:e.generation===i(this,as)?!1:(e.generation=i(this,as),!0)},Uo=function(e,t,r){return Fn(this,null,function*(){var o;_s(this,Us),f(this,os,i(this,os)+1);let n={generation:0};try{let a=0;for(;!this.isDestroyed;)try{let l=yield new ui(c(this,Ue,on).call(this,n,r,e));if(t!=null&&t(l,a++))break;yield l}catch(l){if((o=r==null?void 0:r.signal)!=null&&o.aborted&&l===r.signal.reason)throw l;break}}finally{f(this,os,i(this,os)-1),i(this,os)===0&&Ci(this,Us)}})};var an=class extends Ir{constructor(t,r){super(t);p(this,"target");this.target=W(r);let n=new WeakRef(this);this.releaseOnDestroy(x(Ce,this.target.id,()=>{var o;return(o=n.deref())==null?void 0:o.destroy()})),this.touch()}touch(){return this.updateValue(t=>{this.target.writer(t,{touch:!0})}),this}write(){this.updateValue(t=>{this.target.writer(t)})}},ln=class extends Ir{constructor(t,r){super(t);p(this,"target");this.target=r,this.touch()}touch(){return this.updateValue(t=>{this.target(t)}),this}write(){this.updateValue(t=>{this.target(t)})}},Zi=new WeakMap,qs=0,Fo=new FinalizationRegistry(s=>{for(let e of s)try{e()}catch(t){pe({level:"error",source:"link-finalizer",message:"[signalize] link: releasing the queue subscriptions of a collected link failed",error:t})}s.length=0,qs>0&&(qs-=1)}),sc=1e3,$o=new WeakSet;function Mt(s,e,t){let r=W(s);if(r==null)throw new TypeError("[signalize] link: source must be a signal");let n=W(e),o=n!=null?n:e,a=Zi.get(r);if(a==null)a=new Map,Zi.set(r,a);else if(a.has(o)){let d=a.get(o),y=t==null?void 0:t.attach;return y&&d.attach(y),d}let l=n!=null?new an(s,n):new ln(s,e),h=t==null?void 0:t.attach;return h&&l.attach(h),a.set(o,l),qs+=1,Fo.register(l,l[st],l),a.size>=sc&&!$o.has(r)&&($o.add(r),pe({level:"warn",source:"link-count",message:`[signalize] link(): ${a.size} links on a single source signal. A link is held until destroy(), unlink(), a cleared {attach} group, or the destruction of source/target \\u2014 garbage collection alone does not reclaim one on a live source. If this is a hot path creating fresh callbacks, tear the old links down; getLinksCount(source) is the number to watch.`})),x(l,Se,de.Max,()=>{a.delete(o),a.size===0&&Zi.delete(r),Fo.unregister(l),qs>0&&(qs-=1)}),l}var rc=new FinalizationRegistry(s=>{for(let e of s.unsubs)try{e()}catch(t){pe({level:"error",source:"automap-finalizer",message:"[signalize] releasing the destroy-queue subscriptions of a collected SignalAutoMap failed:",error:t})}s.unsubs.clear()}),Io,H,ls,Nr,We,cn,Gr;Io=Ws;var hn=class hn{constructor(){u(this,We);p(this,Io,{unsubs:new Set});u(this,H,new Map);u(this,ls,new Map);u(this,Nr,new WeakRef(this));rc.register(this,this[Ws],this)}static fromProps(e,t){var o;let r=new hn,n=t?[...new Set(t)].map(a=>[a,e[a]]):Object.entries(e);for(let[a,l]of n)c(o=r,We,cn).call(o,a,l);return r}keys(){return i(this,H).keys()}signals(){return i(this,H).values()}entries(){return i(this,H).entries()}clear(){let e=[...i(this,H).values()],t=[];for(let r of[...i(this,H).keys()])S(t,()=>c(this,We,Gr).call(this,r));for(let r of e)S(t,()=>r.destroy());F(t,"clearing a signal auto map")}delete(e){let t=i(this,H).get(e);return t===void 0?!1:(c(this,We,Gr).call(this,e),t.destroy(),!0)}has(e){return i(this,H).has(e)}get(e){return i(this,H).has(e)?i(this,H).get(e):c(this,We,cn).call(this,e)}update(e){e.size&&Rt(()=>{for(let[t,r]of e.entries())this.get(t).set(r)})}updateFromProps(e,t){let r=t?t.map(n=>[n,e[n]]):Object.entries(e);r.length!==0&&Rt(()=>{for(let[n,o]of r)this.get(n).set(o)})}};H=new WeakMap,ls=new WeakMap,Nr=new WeakMap,We=new WeakSet,cn=function(e,t){let r=_(t);i(this,H).set(e,r);let n=i(this,Nr),o=A(Ce,W(r).id,(a,l)=>{var d;if(l!=null&&l.detach)return;let h=n.deref();h!==void 0&&c(d=h,We,Gr).call(d,e)});return i(this,ls).set(e,o),this[Ws].unsubs.add(o),r},Gr=function(e){let t=i(this,ls).get(e);try{t()}finally{i(this,ls).delete(e),this[Ws].unsubs.delete(t),i(this,H).delete(e)}};var jr=hn;var Wr=class extends Error{constructor(e){super(`the kernel cannot create an entity because the uuid ${e} is already held by another entity`),this.name="EntityUuidInUseError",this.uuid=e}};function P(s,e,t,...r){try{e()}catch(n){s.error(t,...r,n)}}var Tt,cs,ir,Ur=class{constructor(e){u(this,Tt,new Map);u(this,cs,!1);u(this,ir);f(this,ir,e)}add(...[e,t]){i(this,Tt).set(e,t),!i(this,cs)&&(f(this,cs,!0),queueMicrotask(()=>this.flush()))}flush(){if(f(this,cs,!1),i(this,Tt).size===0)return;let e=i(this,Tt);f(this,Tt,new Map),i(this,ir).call(this,e)}};Tt=new WeakMap,cs=new WeakMap,ir=new WeakMap;var Vr=Symbol("onCreate"),oe=Symbol("onDestroy"),un=Symbol("onParentChanged"),hs=Symbol("onViewEvent");function Vo(s){return function(e,t){var o;let r=(s==null?void 0:s.name)||t.name,n=!!((o=s==null?void 0:s.readAsValue)!=null&&o);return{get(){let a=Ji(this,r);if(a)return n?a.value:a.get()},set(a){var l;(l=Ji(this,r))==null||l.set(a)},init(a){let l=_(a,s);return Mo(this,r,l),Ie.findOrCreate(this).attachSignalByName(r,l),l.value}}}}var ic=Object.create,fn=Object.defineProperty,nc=Object.getOwnPropertyDescriptor,Yo=(s,e)=>(e=Symbol[s])?e:Symbol.for("Symbol."+s),fs=s=>{throw TypeError(s)},oc=(s,e,t)=>e in s?fn(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,Ho=(s,e)=>fn(s,"name",{value:e,configurable:!0}),ac=s=>{var e;return[,,,ic((e=s==null?void 0:s[Yo("metadata")])!=null?e:null)]},qo=["class","method","getter","setter","accessor","field","value","get","set"],nr=s=>s!==void 0&&typeof s!="function"?fs("Function expected"):s,lc=(s,e,t,r,n)=>({kind:qo[s],name:e,metadata:r,addInitializer:o=>t._?fs("Already initialized"):n.push(nr(o||null))}),Ko=(s,e)=>oc(e,Yo("metadata"),s[3]),Qo=(s,e,t,r)=>{for(var n=0,o=s[e>>1],a=o&&o.length;n<a;n++)e&1?o[n].call(t):r=o[n].call(t,r);return r},cc=(s,e,t,r,n,o)=>{var a,l,h,d,y,g=e&7,C=!!(e&8),E=!!(e&16),O=g>3?s.length+1:g?C?1:2:0,Os=qo[g+5],Rn=g>3&&(s[O-1]=[]),pa=s[O]||(s[O]=[]),he=g&&(!E&&!C&&(n=n.prototype),g<5&&(g>3||!E)&&nc(g<4?n:{get[t](){return J(this,o)},set[t](Q){return ar(this,o,Q)}},t));g?E&&g<4&&Ho(o,(g>2?"set ":g>1?"get ":"")+t):Ho(n,t);for(var ai=r.length-1;ai>=0;ai--)d=lc(g,t,h={},s[3],pa),g&&(d.static=C,d.private=E,y=d.access={has:E?Q=>hc(n,Q):Q=>t in Q},g^3&&(y.get=E?Q=>(g^1?J:at)(Q,n,g^4?o:he.get):Q=>Q[t]),g>2&&(y.set=E?(Q,li)=>ar(Q,n,li,g^4?o:he.set):(Q,li)=>Q[t]=li)),l=(0,r[ai])(g?g<4?E?o:he[Os]:g>4?void 0:{get:he.get,set:he.set}:n,d),h._=1,g^4||l===void 0?nr(l)&&(g>4?Rn.unshift(l):g?E?o=l:he[Os]=l:n=l):typeof l!="object"||l===null?fs("Object expected"):(nr(a=l.get)&&(he.get=a),nr(a=l.set)&&(he.set=a),nr(a=l.init)&&Rn.unshift(a));return g||Ko(s,n),he&&fn(n,t,he),E?g^4?o:he:n},dn=(s,e,t)=>e.has(s)||fs("Cannot "+t),hc=(s,e)=>Object(e)!==e?fs(\'Cannot use the "in" operator on this value\'):s.has(e),J=(s,e,t)=>(dn(s,e,"read from private field"),t?t.call(s):e.get(s)),Hr=(s,e,t)=>e.has(s)?fs("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(s):e.set(s,t),ar=(s,e,t,r)=>(dn(s,e,"write to private field"),r?r.call(s,t):e.set(s,t),t),at=(s,e,t)=>(dn(s,e,"access private method"),t),Jo,xe,lt,lr,gn,Ve,Qr,or,us="value";Jo=[Vo({name:us})];var ze=class{constructor(e){Hr(this,Ve),Hr(this,xe,[]),Hr(this,lt),Hr(this,gn,Qo(lr,8,this)),Qo(lr,11,this),this.value$=void 0,_s(this,us),this.value$=Qs(this,us),this.value$.onChange(t=>$s(this,us,t)),e&&this.add(...e)}add(...e){return J(this,xe).push(...e),at(this,Ve,or).call(this),at(this,Ve,Qr).call(this,e)}unshift(...e){return J(this,xe).unshift(...e),at(this,Ve,or).call(this),at(this,Ve,Qr).call(this,e)}remove(...e){at(this,Ve,Qr).call(this,e)()}clear(){J(this,xe).length=0,at(this,Ve,or).call(this)}dispose(){var e;this.clear(),(e=J(this,lt))==null||e.destroy(),ar(this,lt,void 0),Si(this,us),z(this),this.value$.destroy(),Xi(this)}};lr=ac(null);xe=new WeakMap;lt=new WeakMap;gn=new WeakMap;Ve=new WeakSet;Qr=function(s){return()=>{for(let e of s){let t=J(this,xe).indexOf(e);t!==-1&&J(this,xe).splice(t,1)}at(this,Ve,or).call(this)}};or=function(){var s;(s=J(this,lt))==null||s.destroy(),J(this,xe).length===0?(ar(this,lt,void 0),this.value=void 0):(ar(this,lt,ot(()=>{let e;for(let t of J(this,xe)){let r=ts(t);if(r!=null){e=r;break}}this.value=e},J(this,xe))),J(this,lt).run())};cc(lr,4,"value",Jo,ze,gn);Ko(lr,ze);ze.Value=us;var Xo=new WeakMap,uc=s=>{let e=Xo.get(s);return e==null&&(e=new Ur(t=>{for(let[r,n]of t)P(s.logger,()=>r.set(n.value),`an effect of a context value failed (${String(n.name)}):`,n.uuid)}),Xo.set(s,e)),e},fc=(s,e,t,r,n)=>{uc(s).add(e,{value:t,name:r,uuid:n})},G,Z,ct,ae,ht,M,Lt,le,ys,hr,v,yn,X,Zo,pn,Dt,He,vn,bn,mn,ut,Bt,wn,ea,En,ds,cr,gs=class gs{constructor(e,t){u(this,v);u(this,G);u(this,Z);u(this,ct,new jr);u(this,ae,new Map);u(this,ht,new Map);u(this,M);u(this,Lt,new Set);u(this,le,[]);u(this,ys,0);u(this,hr,!1);u(this,Dt,!1);u(this,He);u(this,ut);f(this,G,e),f(this,Z,t)}get kernel(){return i(this,G)}get uuid(){return i(this,Z)}get order(){return i(this,ys)}set order(e){i(this,ys)!==e&&(f(this,ys,e),i(this,M)&&i(this,M).resortChildren(),i(this,G).noteEntityTreeChange(i(this,Z)))}get parentUuid(){var e;return(e=i(this,M))==null?void 0:e.uuid}set parentUuid(e){var t;if(((t=i(this,M))==null?void 0:t.uuid)!==e){let r=e?i(this,G).getEntity(e):void 0;r!=null&&this.assertAttachableTo(r),c(this,v,pn).call(this,r==null),f(this,M,r),i(this,M)&&i(this,M).addChild(this),c(this,v,bn).call(this),i(this,G).noteEntityTreeChange(i(this,Z))}}get parent(){return i(this,M)}set parent(e){this.parentUuid=e==null?void 0:e.uuid}get hasParent(){return!!i(this,M)}get children(){return i(this,le)}traverse(e){c(this,v,yn).call(this,e,new Set)}[oe](){if(!i(this,hr)){f(this,hr,!0),c(this,v,X).call(this,"properties",()=>i(this,ct).clear()),c(this,v,X).call(this,"listeners",()=>z(this)),c(this,v,X).call(this,"auto-destruction subscription",()=>{var e;return(e=i(this,He))==null?void 0:e.call(this)});for(let e of i(this,ht).values())c(this,v,X).call(this,"global context cleanup",()=>e.cleanup()),c(this,v,X).call(this,"global context signal",()=>e.signal.destroy());for(let e of i(this,ae).values())c(this,v,X).call(this,"context value reset",()=>e.context.set(void 0)),c(this,v,X).call(this,"context value subscription",()=>e.unsubscribePathValue()),c(this,v,X).call(this,"context parent subscription",()=>{var t;return(t=e.unsubscribeFromParent)==null?void 0:t.call(e)}),c(this,v,X).call(this,"context value path",()=>e.valuePath.dispose()),c(this,v,X).call(this,"inherited context signal",()=>e.inherited.destroy()),c(this,v,X).call(this,"provided context signal",()=>e.provide.destroy()),c(this,v,X).call(this,"context signal",()=>e.context.destroy());i(this,ht).clear(),i(this,ae).clear(),f(this,M,void 0),i(this,Lt).clear(),i(this,le).length=0}}assertAttachableTo(e){for(let t=e;t!=null;t=t.parent)if(t===this)throw new Error(`entity "${e.uuid}" cannot become the parent of "${this.uuid}": it is the entity itself or one of its descendants`)}addChild(e){var t;if(i(this,Lt).has(e.uuid))throw new Error(`child with uuid: ${e.uuid} already exists! parentUuid: ${this.uuid}`);i(this,Lt).add(e.uuid),c(this,v,Zo).call(this,e);for(let[,r]of i(e,ae))c(t=e,v,cr).call(t,r)}resortChildren(){i(this,le).sort((e,t)=>e.order-t.order)}removeChild(e){let t=i(this,le).indexOf(e);t!==-1&&(i(this,Lt).delete(e.uuid),i(this,le).splice(t,1))}removeFromParent(e=!0){c(this,v,pn).call(this,e)}get autoDestructionOnParentRemoval(){return i(this,Dt)}set autoDestructionOnParentRemoval(e){i(this,Dt)!==e&&(f(this,Dt,e),c(this,v,bn).call(this))}reSubscribeToParentContexts(){for(let[,e]of i(this,ae))c(this,v,cr).call(this,e)}dispatchMessageToView(e,t,r,n=!1){i(this,G).dispatchMessageToView({uuid:i(this,Z),type:e,data:t,transferables:r,traverseChildren:n})}dispatchViewEvents(e){for(let{type:t,data:r}of e)P(i(this,G).logger,()=>mt(this,hs,t,r),"entity view event delivery failed:",t,i(this,Z))}dispatchViewEvent(e,t){this.dispatchViewEvents([{type:e,data:t}])}getPropertyReader(e){return c(this,v,mn).call(this,e).get}getPropertyWriter(e){let t=c(this,v,mn).call(this,e);return(r,n)=>{this.clearTruthyPropsCache(),t.set(r,n)}}setProperties(e){Rt(()=>{for(let[t,r]of e)this.setProperty(t,r)})}setProperty(e,t){this.getPropertyWriter(e)(t)}getProperty(e){return ts(this.getPropertyReader(e))}propKeys(){return Array.from(i(this,ct).keys())}propEntries(){return Array.from(i(this,ct).entries()).map(([e,t])=>[e,t.value])}clearTruthyPropsCache(){f(this,ut,void 0)}truthyProps(){if(i(this,ut))return i(this,ut).size?i(this,ut):void 0;let e=new Set;for(let[t,r]of i(this,ct).entries())if(typeof t=="string"){let n=r.value;n!=null&&n!==!1&&n!==""&&e.add(t)}return f(this,ut,e),e.size?e:void 0}hasContext(e){return i(this,ae).has(e)}useContext(e){return c(this,v,ds).call(this,e).context.get}useParentContext(e){return c(this,v,ds).call(this,e).inherited.get}provideContext(e){return c(this,v,ds).call(this,e).provide}provideGlobalContext(e){return c(this,v,En).call(this,e).signal}attachContextProvider(e,t){var n;let r=c(this,v,ds).call(this,e);return c(n=gs,Bt,wn).call(n,t,r.provide,r.providerFeeds)}attachGlobalContextProvider(e,t){var n;let r=c(this,v,En).call(this,e);return c(n=gs,Bt,wn).call(n,t,r.signal,r.providerFeeds)}};G=new WeakMap,Z=new WeakMap,ct=new WeakMap,ae=new WeakMap,ht=new WeakMap,M=new WeakMap,Lt=new WeakMap,le=new WeakMap,ys=new WeakMap,hr=new WeakMap,v=new WeakSet,yn=function(e,t){var r;if(!t.has(this)){t.add(this),e(this);for(let n of i(this,le))c(r=n,v,yn).call(r,e,t)}},X=function(e,t){P(i(this,G).logger,t,`entity teardown step failed (${e}):`,i(this,Z))},Zo=function(e){let t=i(this,le).length;for(;t>0&&e.order<i(this,le)[t-1].order;)t--;i(this,le).splice(t,0,e)},pn=function(e){if(i(this,M)){if(i(this,M).removeChild(this),f(this,M,void 0),e)for(let[,t]of i(this,ae))c(this,v,cr).call(this,t);c(this,v,vn).call(this),i(this,G).noteEntityTreeChange(i(this,Z))}},Dt=new WeakMap,He=new WeakMap,vn=function(){i(this,He)&&(i(this,He).call(this),f(this,He,void 0))},bn=function(){c(this,v,vn).call(this),i(this,Dt)&&i(this,M)&&f(this,He,x(i(this,M),oe,de.Max,()=>{f(this,He,void 0),i(this,G).destroyEntity(i(this,Z))}))},mn=function(e){return i(this,ct).get(e)},ut=new WeakMap,Bt=new WeakSet,wn=function(e,t,r){let n=Mt(e,t);return r.add(n),()=>{var o;r.delete(n)&&(n.destroy(),c(o=gs,Bt,ea).call(o,r))}},ea=function(e){let t;for(let r of e)!r.isDestroyed&&r.source.value!=null&&(t=r);t==null||t.touch()},En=function(e){if(i(this,ht).has(e))return i(this,ht).get(e);let t=i(this,G).findOrCreateRootContext(e),r=_(),o={cleanup:t.add(r),signal:r,providerFeeds:new Set};return i(this,ht).set(e,o),o},ds=function(e){if(i(this,ae).has(e))return i(this,ae).get(e);let t=_(),r=_(),n=_(),o=new ze([r,t]),a=A(o,ze.Value,h=>{fc(i(this,G),n,h,e,i(this,Z))}),l={name:e,inherited:t,provide:r,context:n,valuePath:o,providerFeeds:new Set,unsubscribePathValue:a};return i(this,ae).set(e,l),c(this,v,cr).call(this,l),l},cr=function(e){var t,r;if((t=e.unsubscribeFromParent)==null||t.call(e),e.unsubscribeFromParent=void 0,this.parent){let n=c(r=this.parent,v,ds).call(r,e.name),o=Mt(n.context,e.inherited);e.unsubscribeFromParent=o.destroy.bind(o)}else{let n=i(this,G).findOrCreateRootContext(e.name),o=Mt(n.value$,e.inherited);e.unsubscribeFromParent=o.destroy.bind(o)}},u(gs,Bt);var Yr=gs;function ta(s,e){s.indexOf(e)===-1&&s.push(e)}var sa=s=>{let e=s.split("@").map(t=>t.trim());if(e.length===2&&e[1])return e[0]?{key:`${e[0]}@${e[1]}`,prop:e[1]}:{key:e[1],prop:e[1]}},qr=(s,e)=>{for(let t of e)s.add(t)},dc=(s,e)=>{if(s!=null)for(let t of s)e.add(t)},ft,Pe,Qe,Ft,ps,ce,ur,ra,Sn,fr=class{constructor(){u(this,ce);u(this,ft,new Map);u(this,Pe,new Map);u(this,Qe,new Map);u(this,Ft,new Set);u(this,ps,new Map)}static get(e){return e!=null?e:gc}define(e,t){let r=i(this,ft).get(e);r?ta(r,t):i(this,ft).set(e,[t]),c(this,ce,ur).call(this)}appendRoute(e,t){let r=sa(e);if(r){i(this,Ft).add(r.prop);let n=i(this,Qe).get(r.key);n?qr(n,t):i(this,Qe).set(r.key,new Set(t))}else{let n=i(this,Pe).get(e);n?qr(n,t):i(this,Pe).set(e,new Set(t))}c(this,ce,ur).call(this)}clearRoute(e){let t=sa(e);t?i(this,Qe).delete(t.key):i(this,Pe).delete(e),c(this,ce,ur).call(this)}findTokensByRoute(e,t){return new Set(c(this,ce,Sn).call(this,e,t))}findConstructors(e,t){let r=c(this,ce,Sn).call(this,e,t),n=new Set;for(let o of r)dc(i(this,ft).get(o),n);return n.size>0?Array.from(n):void 0}hasToken(e){return i(this,ft).has(e)}hasRoute(e){return i(this,Pe).has(e)}clear(){i(this,ft).clear(),i(this,Pe).clear(),i(this,Qe).clear(),i(this,Ft).clear(),c(this,ce,ur).call(this)}};ft=new WeakMap,Pe=new WeakMap,Qe=new WeakMap,Ft=new WeakMap,ps=new WeakMap,ce=new WeakSet,ur=function(){i(this,ps).clear()},ra=function(e){if(e===void 0||i(this,Ft).size===0)return"";let t="";for(let r of e)i(this,Ft).has(r)&&(t+=`${r.length}:${r}`);return t},Sn=function(e,t){var h;let r=c(this,ce,ra).call(this,t),n=i(this,ps).get(e),o=n==null?void 0:n.get(r);if(o!==void 0)return o;let a=new Set([e]),l=Array.from((h=i(this,Pe).get(e))!=null?h:[]);for(let d=l.shift();d!==void 0;d=l.shift()){if(a.has(d))continue;a.add(d);let y=i(this,Pe).get(d);y&&l.push(...Array.from(y).filter(g=>!a.has(g)))}if(t){for(let y of t){let g=i(this,Qe).get(y);g&&qr(a,g)}let d;do{d=a.size;for(let y of new Set(a))for(let g of t){let C=i(this,Qe).get(`${y}@${g}`);C&&qr(a,C)}}while(d!==a.size)}return n===void 0&&(n=new Map,i(this,ps).set(e,n)),n.set(r,a),a};var gc=new fr;var Cn=s=>s!=null?s:void 0;var dt=()=>{let s=_(void 0);return D(s),s},yc=()=>{let s=ot(()=>{},{autorun:!1});return s.destroy(),s},ia=()=>{},T,Re,be,bs,$t,j,_t,ms,dr,ws,gr,Es,Ss,Cs,ks,yr,Ye,Gt,It,jt,As,pr,vr,b,ve,kn,Kr,vs,I,An,Jr=class{constructor(e,t,r,n){u(this,b);u(this,T);u(this,Re);u(this,be);u(this,bs);u(this,$t,new Set);u(this,j,new Set);u(this,_t,new Set);u(this,ms,new Map);u(this,dr,new Map);u(this,ws,new Map);u(this,gr,new Map);u(this,Es,new Map);u(this,Ss,new Map);u(this,Cs,new Set);u(this,ks,new Map);u(this,yr,new Map);u(this,Ye);u(this,Gt);u(this,It);u(this,jt);u(this,As,!1);u(this,pr,!1);u(this,vr);f(this,T,e),f(this,Re,t),f(this,be,r),f(this,bs,n)}get displayName(){return i(this,be)}get debugHandles(){return{shadowObject:i(this,Ye),releaseScope:i(this,Gt),forgetShadowObject:i(this,It),unsubscribeFromEntityDestroy:i(this,jt)}}get debugCleanupCounts(){return{primary:i(this,$t).size,secondary:i(this,j).size,contextFeeds:i(this,_t).size}}createAPI(){return{entity:i(this,T),provideContext:this.provideContext.bind(this),provideGlobalContext:this.provideGlobalContext.bind(this),useContext:this.useContext.bind(this),useParentContext:this.useParentContext.bind(this),dispatchMessageToView:this.dispatchMessageToView.bind(this),useProperty:this.useProperty.bind(this),useProperties:this.useProperties.bind(this),createResource:this.createResource.bind(this),createEffect:this.createEffect.bind(this),createSignal:this.createSignal.bind(this),createMemo:this.createMemo.bind(this),on:this.on.bind(this),once:this.once.bind(this),emit:this.emit.bind(this),onViewEvent:this.onViewEvent.bind(this),onDestroy:this.onDestroy.bind(this)}}bindTo(e,t,r){if(i(this,As))throw new Error(`the creation scope of "${i(this,be)}" has torn down and cannot be bound`);if(i(this,Ye)!==void 0)throw new Error(`the creation scope of "${i(this,be)}" is already bound to a shadow-object`);f(this,Ye,e),f(this,Gt,t),f(this,It,r),i(this,Re).info("create shadow-object",i(this,be),{shadowObject:e,entity:i(this,T)}),f(this,jt,x(i(this,T),oe,de.Low,()=>{this.tearDown()}))}tearDown(){if(i(this,As))return;f(this,As,!0),c(this,b,ve).call(this,"scope release",()=>{var n;return(n=i(this,Gt))==null?void 0:n.call(this)}),c(this,b,ve).call(this,"entity destroy subscription",()=>{var n;return(n=i(this,jt))==null?void 0:n.call(this)}),i(this,Ye)!==void 0&&i(this,Re).info("destroy shadow-object",i(this,be),{shadowObject:i(this,Ye),entity:i(this,T)});let e=new Set,t=(n,o)=>{let a=!1;for(let l of n)e.has(l)||(e.add(l),a=!0,c(this,b,ve).call(this,o,l));return a},r=!0;for(;r;){let n=t(i(this,$t),"onDestroy callback"),o=t(i(this,j),"creation-api cleanup");r=n||o}for(let n of i(this,_t))c(this,b,ve).call(this,"context feed release",n);for(let n of i(this,ms).values())c(this,b,ve).call(this,"context reader",()=>D(n));for(let n of i(this,ws).values())c(this,b,ve).call(this,"parent context reader",()=>D(n));for(let n of i(this,ks).values())c(this,b,ve).call(this,"property reader",()=>D(n));for(let n of i(this,Es).values())c(this,b,ve).call(this,"context provider",()=>D(n));for(let n of i(this,Ss).values())c(this,b,ve).call(this,"global context provider",()=>D(n));i(this,$t).clear(),i(this,j).clear(),i(this,_t).clear(),i(this,ms).clear(),i(this,dr).clear(),i(this,ws).clear(),i(this,gr).clear(),i(this,ks).clear(),i(this,yr).clear(),i(this,Es).clear(),i(this,Ss).clear(),i(this,Cs).clear(),c(this,b,ve).call(this,"forget shadow-object",()=>{var n;return(n=i(this,It))==null?void 0:n.call(this)}),f(this,Ye,void 0),f(this,Gt,void 0),f(this,It,void 0),f(this,jt,void 0),f(this,pr,!0)}useProperty(e,t){if(c(this,b,I).call(this,"useProperty"))return dt().get;c(this,b,vs).call(this,t,"useProperty");let r=typeof t=="function"?{compare:t}:t;return c(this,b,Kr).call(this,e,i(this,ks),i(this,yr),()=>i(this,T).getPropertyReader(e),r,"useProperty","property")}useProperties(e){let t={};for(let r in e)Object.hasOwn(e,r)&&(t[r]=this.useProperty(e[r]));return t}provideContext(e,t,r){if(c(this,b,I).call(this,"provideContext"))return dt();c(this,b,vs).call(this,r,"provideContext");let n=typeof r=="function"?{compare:r}:r;return c(this,b,An).call(this,e,i(this,Es),o=>i(this,T).attachContextProvider(e,o),t,n)}provideGlobalContext(e,t,r){if(c(this,b,I).call(this,"provideGlobalContext"))return dt();c(this,b,vs).call(this,r,"provideGlobalContext");let n=typeof r=="function"?{compare:r}:r;return c(this,b,An).call(this,e,i(this,Ss),o=>i(this,T).attachGlobalContextProvider(e,o),t,n)}useContext(e,t){if(c(this,b,I).call(this,"useContext"))return dt().get;c(this,b,vs).call(this,t,"useContext");let r=typeof t=="function"?{compare:t}:t;return c(this,b,Kr).call(this,e,i(this,ms),i(this,dr),()=>i(this,T).useContext(e),r,"useContext","context")}useParentContext(e,t){if(c(this,b,I).call(this,"useParentContext"))return dt().get;c(this,b,vs).call(this,t,"useParentContext");let r=typeof t=="function"?{compare:t}:t;return c(this,b,Kr).call(this,e,i(this,ws),i(this,gr),()=>i(this,T).useParentContext(e),r,"useParentContext","parent context")}createSignal(...e){if(c(this,b,I).call(this,"createSignal"))return dt();let t=_(...e);return i(this,j).add(()=>{D(t)}),t}createEffect(...e){if(c(this,b,I).call(this,"createEffect"))return yc();let t=ot(...e);return i(this,j).add(t.destroy),t}createMemo(...e){if(c(this,b,I).call(this,"createMemo"))return dt().get;let t=jo(...e);return i(this,j).add(()=>{D(t)}),t}createResource(e,t){if(c(this,b,I).call(this,"createResource"))return dt();let r=_(),n=ot(()=>{let o=Cn(e());return r.set(o),o!==void 0&&t?()=>{t(o),r.set(void 0)}:()=>{r.set(void 0)}});return i(this,j).add(()=>{try{n.destroy()}finally{r.set(void 0),D(r)}}),r}on(...e){if(c(this,b,I).call(this,"on"))return ia;let[t]=e,r=typeof t=="string"||typeof t=="symbol"||Array.isArray(t)?A(i(this,T),...e):A(...e);return c(this,b,kn).call(this,r)}once(...e){if(c(this,b,I).call(this,"once"))return ia;let[t]=e,r=typeof t=="string"||typeof t=="symbol"||Array.isArray(t)?x(i(this,T),...e):x(...e);return c(this,b,kn).call(this,r)}emit(...e){if(c(this,b,I).call(this,"emit"))return;let[t]=e;typeof t=="string"||typeof t=="symbol"||Array.isArray(t)?k(i(this,T),...e):k(...e)}onViewEvent(e){if(c(this,b,I).call(this,"onViewEvent"))return;let t=A(i(this,T),hs,(r,n)=>{e(r,n)});i(this,j).add(t)}onDestroy(e){c(this,b,I).call(this,"onDestroy")||i(this,$t).add(e)}dispatchMessageToView(e,t,r,n=!1){c(this,b,I).call(this,"dispatchMessageToView")||i(this,T).dispatchMessageToView(e,t,r,n)}};T=new WeakMap,Re=new WeakMap,be=new WeakMap,bs=new WeakMap,$t=new WeakMap,j=new WeakMap,_t=new WeakMap,ms=new WeakMap,dr=new WeakMap,ws=new WeakMap,gr=new WeakMap,Es=new WeakMap,Ss=new WeakMap,Cs=new WeakMap,ks=new WeakMap,yr=new WeakMap,Ye=new WeakMap,Gt=new WeakMap,It=new WeakMap,jt=new WeakMap,As=new WeakMap,pr=new WeakMap,vr=new WeakMap,b=new WeakSet,ve=function(e,t){P(i(this,Re),t,`shadow-object teardown failed (${e}):`,i(this,be))},kn=function(e){return i(this,j).add(e),Object.assign(()=>{i(this,j).delete(e),e()},e)},Kr=function(e,t,r,n,o,a,l){let h=t.get(e);if(h===void 0){h=_(void 0,o).get,t.set(e,h),r.set(e,o==null?void 0:o.compare);let d=Mt(n(),h);i(this,j).add(d.destroy.bind(d))}else(o==null?void 0:o.compare)!=null&&r.get(e)!==o.compare&&i(this,Re).error(`[shadow-objects] ${a}("${String(e)}"): the cached signal already exists with a different (or no) {compare} function \\u2014 the new options are ignored. Pass options only on the first call per ${l}.`);return h},vs=function(e,t){typeof e!="function"||i(this,bs).has(t)||(i(this,Re).error(`[shadow-objects] Deprecation Warning: The "isEqual" option of "${t}()" is now passed as {compare} argument. Please update your code accordingly.`),i(this,bs).add(t))},I=function(e){var t,r;return i(this,pr)?((t=i(this,vr))!=null&&t.has(e)||(((r=i(this,vr))!=null?r:f(this,vr,new Set)).add(e),i(this,Re).error(`[shadow-objects] ${e}(): the creation scope of "${i(this,be)}" has torn down \\u2014 the call does nothing. Something is still holding the creation API past the end of its shadow-object.`)),!0):!1},An=function(e,t,r,n,o){var l;let a=t.get(e);if(a==null){let h=tt(n),d=h?void 0:Cn(n);if(a=_(d,o!=null&&o.compare?{compare:o.compare}:void 0),h){let y=Mt(n,a);i(this,j).add(y.destroy.bind(y))}i(this,_t).add(r(a)),t.set(e,a)}return((l=o==null?void 0:o.clearOnDestroy)==null||l)&&!i(this,Cs).has(a)&&(i(this,Cs).add(a),i(this,j).add(()=>{a.set(void 0)})),a};var na=s=>s.displayName||s.name,pc=[["onCreate",Vr],["onDestroy",oe],["onParentChanged",un],["onViewEvent",hs]],ti,L,Me,gt,Nt,yt,Wt,qe,si,w,On,xn,oa,aa,br,la,Xr,ca,ha,zn,Zr,ei=class{constructor(e){u(this,w);u(this,ti,new De("Kernel"));u(this,L,new Map);u(this,Me,new Set);u(this,gt,[]);u(this,Nt,[]);u(this,yt,!0);u(this,Wt,new Map);u(this,qe,new WeakMap);u(this,si,new Set);Y(this),this.registry=fr.get(e)}get logger(){return i(this,ti)}getEntity(e){return c(this,w,On).call(this,e).entity}findEntity(e){var t;return(t=i(this,L).get(e))==null?void 0:t.entity}hasEntity(e){return i(this,L).has(e)}get debugEntityCounts(){return{entities:i(this,L).size,rootEntities:i(this,Me).size,traversal:i(this,gt).length,traversalReversed:i(this,Nt).length}}traverseLevelOrderBFS(e=!1){if(i(this,yt)){let t=new Map,r=new Set,n=(o,a)=>{if(r.has(o))return;r.add(o);let l=this.findEntity(o);if(l===void 0)return;let h=t.get(a);h?h.push(l):t.set(a,[l]);for(let d of l.children)n(d.uuid,a+1)};i(this,Me).forEach(o=>{n(o,0)}),f(this,gt,Array.from(t.entries()).sort((o,a)=>o[0]-a[0]).flatMap(([,o])=>o)),f(this,Nt,i(this,gt).slice().reverse()),f(this,yt,!1)}return e?i(this,Nt).slice():i(this,gt).slice()}getEntityGraph(){let e=new Set;return Array.from(i(this,Me)).map(t=>c(this,w,xn).call(this,t,e)).filter(t=>t!==void 0)}upgradeEntities(){let e=new Map;for(let t of this.traverseLevelOrderBFS(!0))this.hasEntity(t.uuid)&&e.set(t.uuid,c(this,w,br).call(this,t.uuid,2));for(let t of this.traverseLevelOrderBFS(!1))this.hasEntity(t.uuid)&&c(this,w,br).call(this,t.uuid,1,e.get(t.uuid));e.clear()}run(e){this.logger.debug("sync",e);let t=0;try{Rt(()=>{for(let r of e.changeTrail)c(this,w,oa).call(this,r),t++})}catch(r){throw new qt(t,e.changeTrail.length,{cause:r})}}createEntity(e,t,r,n=0,o,a=!1){if(i(this,L).has(e))throw new Wr(e);let l=new Yr(this,e);l.order=n;let h={token:t,entity:l,usedConstructors:new Map};i(this,L).set(e,h),this.noteEntityTreeChange(e);try{r&&(l.parentUuid=r),l.autoDestructionOnParentRemoval=a,o&&l.setProperties(o),c(this,w,ca).call(this,h)}catch(d){throw c(this,w,aa).call(this,e),d}}destroyEntity(e){let t=i(this,L).get(e);if(t===void 0)return;let{entity:r,usedConstructors:n}=t;try{let o=[...r.children];for(let l of o)P(this.logger,()=>{l.autoDestructionOnParentRemoval?this.destroyEntity(l.uuid):l.removeFromParent()},"child of a destroyed entity could not be handed on:",l.uuid);P(this.logger,()=>r.removeFromParent(),"entity could not be detached from its parent:",r.uuid);let a=this.findShadowObjects(r.uuid);for(let l of a)z(r,l),c(this,w,zn).call(this,l,r);P(this.logger,()=>mt(r,oe,r),"entity onDestroy notification failed:",r.uuid);for(let l of a)P(this.logger,()=>{var h;return(h=i(this,qe).get(l))==null?void 0:h.tearDown()},"creation scope teardown of a destroyed entity failed:",r.uuid);P(this.logger,()=>r[oe](),"entity release failed:",r.uuid)}finally{n.clear(),i(this,L).delete(r.uuid),i(this,Me).delete(r.uuid),f(this,yt,!0)}}setParent(e,t,r){let n=this.getEntity(e),o=r!=null?r:n.order;if(!(n.parentUuid===t&&n.order===o)){if(t&&!i(this,L).has(t))throw new Error(`entity with uuid "${t}" not found!`);t&&n.assertAttachableTo(this.getEntity(t)),n.removeFromParent(t==null),n.order=o,n.parentUuid=t,this.logger.debug("entity.onParentChanged",{uuid:e,parentUuid:t,order:o,entity:n}),P(this.logger,()=>mt(n,un,n),"entity onParentChanged notification failed:",e)}}updateOrder(e,t){this.getEntity(e).order=t}noteEntityTreeChange(e){f(this,yt,!0);let t=i(this,L).get(e);t!==void 0&&(t.entity.hasParent?i(this,Me).delete(e):i(this,Me).add(e))}dispatchEventsToEntity(e,t){var r;(r=this.findEntity(e))==null||r.dispatchViewEvents(t)}changeProperties(e,t){this.getEntity(e).setProperties(t),c(this,w,br).call(this,e)}changeToken(e,t){let r=i(this,L).get(e);if(r===void 0||r.token===t)return;let n=r.token;r.token=t,c(this,w,br).call(this,e,0,void 0,n)}dispatchMessageToView(e){queueMicrotask(()=>{$s(this,xs,e)})}findShadowObjects(e){let t=i(this,L).get(e);if(t===void 0)return[];let{usedConstructors:r}=t;return Array.from(new Set(Array.from(r.values()).flatMap(n=>Array.from(n))))}findOrCreateRootContext(e){let t=i(this,Wt).get(e);return t||(t=new ze,i(this,Wt).set(e,t)),t}destroy(){for(let e of this.traverseLevelOrderBFS(!0))P(this.logger,()=>this.destroyEntity(e.uuid),"entity teardown during kernel destroy failed:",e.uuid);i(this,L).clear(),i(this,Me).clear(),i(this,gt).length=0,i(this,Nt).length=0,f(this,yt,!0);for(let e of i(this,Wt).values())e.dispose();i(this,Wt).clear(),queueMicrotask(()=>{z(this)})}};ti=new WeakMap,L=new WeakMap,Me=new WeakMap,gt=new WeakMap,Nt=new WeakMap,yt=new WeakMap,Wt=new WeakMap,qe=new WeakMap,si=new WeakMap,w=new WeakSet,On=function(e){let t=i(this,L).get(e);if(t===void 0)throw new Error(`entity with uuid "${e}" not found!`);return t},xn=function(e,t,r){let n=i(this,L).get(e);if(n===void 0){r==null||r.push({uuid:e,reason:"not-in-kernel"});return}if(t.has(e)){r==null||r.push({uuid:e,reason:"already-in-graph"});return}t.add(e);let{token:o,entity:a}=n,l=[],h=a.children.map(d=>c(this,w,xn).call(this,d.uuid,t,l)).filter(d=>d!==void 0);return ue({token:o,entity:a,props:Object.fromEntries(a.propEntries()),children:h},l.length>0?{omittedChildren:l}:{})},oa=function(e){switch(e.type){case Te.CreateEntities:this.createEntity(e.uuid,e.token,e.parentUuid,e.order,e.properties,e.autoDestructionOnParentRemoval);break;case Te.DestroyEntities:this.destroyEntity(e.uuid);break;case Te.SetParent:this.setParent(e.uuid,e.parentUuid,e.order);break;case Te.UpdateOrder:this.updateOrder(e.uuid,e.order);break;case Te.ChangeProperties:this.changeProperties(e.uuid,e.properties);break;case Te.ChangeToken:this.changeToken(e.uuid,e.token);break;case Te.SendEvents:this.dispatchEventsToEntity(e.uuid,e.events);break}},aa=function(e){P(this.logger,()=>this.destroyEntity(e),"rollback of a failed entity creation could not destroy the entity:",e)},br=function(e,t=0,r,n){let o=c(this,w,On).call(this,e);r!=null||(r=new Set(this.registry.findConstructors(o.token,o.entity.truthyProps())));let a=t===0||t===2,l=t===0||t===1,h=[],d=[];if(a){for(let[y,g]of o.usedConstructors)if(!r.has(y)){o.usedConstructors.delete(y),h.push({construct:y,count:g.size});for(let C of g)c(this,w,Zr).call(this,C,o.entity)}}if(l){for(let y of r)if(!o.usedConstructors.has(y))try{d.push(c(this,w,Xr).call(this,y,o))}catch(g){throw c(this,w,la).call(this,o,d,h,n),g}}return r},la=function(e,t,r,n){if(i(this,L).get(e.entity.uuid)===e){n!==void 0&&(e.token=n);for(let o=t.length-1;o>=0;o--)P(this.logger,()=>c(this,w,Zr).call(this,t[o],e.entity),"rollback of a failed shadow-object update could not remove a new shadow-object:",e.entity.uuid);for(let{construct:o,count:a}of r)for(let l=0;l<a;l++)P(this.logger,()=>c(this,w,Xr).call(this,o,e),"rollback of a failed shadow-object update could not restore a shadow-object:",na(o),e.entity.uuid)}},Xr=function(e,t){let r=new Jr(t.entity,this.logger,na(e),i(this,si)),n;try{n=Y(new e(r.createAPI()))}catch(a){throw r.tearDown(),a}i(this,qe).set(n,r),r.bindTo(n,()=>{i(this,qe).delete(n)},()=>{let a=t.usedConstructors.get(e);a&&(a.delete(n),a.size===0&&t.usedConstructors.delete(e))});let o=t.usedConstructors.get(e);o?o.add(n):t.usedConstructors.set(e,new Set([n]));try{c(this,w,ha).call(this,n,t.entity)}catch(a){throw c(this,w,Zr).call(this,n,t.entity),a}return n},ca=function(e){var t;(t=this.registry.findConstructors(e.token,e.entity.truthyProps()))==null||t.forEach(r=>{c(this,w,Xr).call(this,r,e)})},ha=function(e,t){var r;for(let[n,o]of pc)if(typeof e[n]=="function"&&typeof e[o]!="function"){let a=(r=i(this,qe).get(e))==null?void 0:r.displayName;this.logger.error(`the "${n}" lifecycle hook is a plain method and is never called; use the [${n}] symbol from "@spearwolf/shadow-objects/shadow-objects.js":`,a)}A(t,e),typeof e[Vr]=="function"&&e[Vr](t)},zn=function(e,t){var n;let r=(n=i(this,qe).get(e))==null?void 0:n.displayName;typeof e[oe]=="function"&&P(this.logger,()=>e[oe](t),"shadow-object onDestroy hook failed:",r),P(this.logger,()=>mt(e,oe,t),"shadow-object onDestroy notification failed:",r)},Zr=function(e,t){var r;c(this,w,zn).call(this,e,t),(r=i(this,qe).get(e))==null||r.tearDown(),z(t,e)};var ua=s=>(typeof s=="string"&&(s=new URL(s,globalThis.location.href)),s.toString());var Pn=s=>typeof s=="object"&&s!==null,fa=s=>{try{return s instanceof Error?{error:s.message||String(s),errorName:s.name}:{error:String(s)||"unknown error"}}catch(e){return{error:"an error that cannot be described"}}},mr,ii,Ut,pt,da,ga,ya,ri=class{constructor(e){u(this,pt);u(this,mr,new Set);u(this,ii,new De("MessageRouter"));u(this,Ut,!1);var t,r;this.kernel=(t=e==null?void 0:e.kernel)!=null?t:new ei,this.postMessage=(r=e==null?void 0:e.postMessage)!=null?r:self.postMessage.bind(self),A(this.kernel,xs,"onMessageToView",this)}get logger(){return i(this,ii)}get isDestroyed(){return i(this,Ut)}route(e){var r;let t=e.data;if(!Pn(t)){this.logger.debug("discarding a message it cannot read",t);return}if(i(this,Ut)){this.logger.debug("discarding a message that arrived after the teardown",t.type);return}switch(t.type){case $n:c(this,pt,da).call(this,t);break;case _n:c(this,pt,ga).call(this,t);break;case Er:c(this,pt,ya).call(this,t);break;default:this.logger.warn("unknown message",(r=t.type)!=null?r:t)}}onMessageToView(e){let n=e,{transferables:t}=n,r=Bn(n,["transferables"]);this.postMessage({type:xs,data:r},{transfer:t!=null?t:[]})}};mr=new WeakMap,ii=new WeakMap,Ut=new WeakMap,pt=new WeakSet,da=async function(e){let t=e.importModule;try{if(!t)throw new Error(\'missing "importModule" url\');let r=await import(ua(t));if(i(this,Ut)){this.logger.debug("discarding a module that arrived after the teardown",t);return}r[zs]?(await ki(this.kernel,r[zs],i(this,mr)),this.postMessage({type:Sr,url:t})):this.postMessage({type:Sr,url:t,error:po})}catch(r){this.logger.error("failed to import module",r),this.postMessage(ue({type:Sr,url:t},fa(r)))}},ga=function(e){var t;try{this.kernel.run(e)}catch(r){if(this.logger.error("failed to apply change trail",r),e.serial!=null){let n=r instanceof qt?r:void 0;this.postMessage(ue(ue({type:fi,serial:e.serial},fa((t=n==null?void 0:n.cause)!=null?t:r)),n?{appliedCount:n.appliedCount}:{}))}return}e.serial!=null&&this.postMessage({type:fi,serial:e.serial})},ya=function(e){this.logger.debug("on destroy",e),f(this,Ut,!0),z(this.kernel,this);try{this.kernel.destroy()}catch(t){this.logger.error("failed to tear the kernel down",t)}i(this,mr).clear(),this.postMessage({type:In})};var oi,Ke,vt,ni=class{constructor(){u(this,oi);u(this,Ke);u(this,vt);f(this,Ke,!1),f(this,vt,!1),this.onmessage=e=>{var r;let t=e.data;if(!Pn(t)){this.logger.debug("discarding a message it cannot read",t);return}if(i(this,vt)){this.logger.debug("discarding a message that arrived after the teardown",t.type);return}if(t.type===Le){Qn(t.config),this.logger.debug("console-logger config installed",t.config);return}(r=this.router)!=null||(this.router=new ri),this.router.route(e),t.type===Er&&(f(this,vt,!0),this.stop(),this.router=void 0)}}get logger(){var e;return(e=i(this,oi))!=null?e:f(this,oi,new De("WorkerRuntime"))}get isStarted(){return i(this,Ke)}get isDestroyed(){return i(this,vt)}start(){i(this,vt)||i(this,Ke)||(f(this,Ke,!0),self.addEventListener("message",this.onmessage),self.postMessage({type:Gn}))}stop(){i(this,Ke)&&(f(this,Ke,!1),self.removeEventListener("message",this.onmessage))}};oi=new WeakMap,Ke=new WeakMap,vt=new WeakMap;var vc=new ni;vc.start();\n/*! Bundled license information:\n\n@spearwolf/eventize/lib/index.mjs:\n (*!\n =============================================================================\n @spearwolf/eventize 6.2.0+build.20260830\n \u2014 git+https://github.com/spearwolf/eventize.git\n =============================================================================\n \n Copyright 2015-2026 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@spearwolf/signalize/dist/signalize.gcXQq0d2.js:\n@spearwolf/signalize/dist/index.js:\n@spearwolf/signalize/dist/decorators.js:\n (*!\n @file @spearwolf/signalize - signals and effects for all\n @author Wolfger Schramm <wolfger@spearwolf.de>\n @version 1.0.0+esm\n \n Copyright 2022-2026 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*/\n')}var Uo=()=>new Ai;var or=class extends Error{constructor(e,t){super(`no ${e} message arrived from the worker within ${t}ms`),this.name="WorkerTimeoutError",this.messageType=e,this.timeout=t}};var Vo=s=>typeof s=="object"&&s!==null;var ar=2147483647,Ti=s=>typeof s=="number"&&Number.isFinite(s)&&s>0&&s<=ar,as=(s,e,t=1e3,r,i)=>new Promise((n,o)=>{if(t!==0&&t!==1/0&&!Ti(t)){o(new TypeError(`cannot wait for a ${e} message: expected a timeout of 1 to ${ar} milliseconds, or 0 or Infinity for no deadline, got ${String(t)}`));return}if(i?.aborted){o(i.reason);return}let a,l,h=()=>{clearTimeout(a),s.removeEventListener("message",l),i?.removeEventListener("abort",u)};function u(){h(),o(i.reason)}t!==0&&t!==1/0&&(a=setTimeout(()=>{h(),o(new or(e,t))},t)),l=c=>{if(Vo(c.data)&&c.data.type===e)try{(!r||r(c.data))&&(h(),n())}catch(P){h(),o(P)}},i?.addEventListener("abort",u,{once:!0}),s.addEventListener("message",l)});var lh=s=>{if(!Array.isArray(s))return{changeTrail:s};let e,t;for(let r=0;r<s.length;r++){let i=s[r];if(i?.transferables){t=t?[...t,...i.transferables]:[...i.transferables],e??=[...s];let n={...i};delete n.transferables,e[r]=n}}return{changeTrail:e??s,transferables:t}},Ri=class extends Error{constructor(e,t,r){super(t,r),this.name="WorkerFailedError",this.type=e}},st=class extends Error{constructor(e="the worker environment has been destroyed"){super(e),this.name="WorkerDestroyedError"}},lr=class extends Error{constructor(e,t){super(t),this.name=e||"Error"}},Go={loadTimeout:Bn,configureTimeout:In,changeTrailTimeout:Un,destroyTimeout:Vn},hh=(s,e)=>{let t={...Go};if(s==null)return t;for(let r of Object.keys(Go)){if(!Object.hasOwn(s,r))continue;let i=s[r];i!==void 0&&(Ti(i)?t[r]=i:e.error(`ignoring the ${r} option: expected a number of milliseconds from 1 to ${ar}, got`,i))}return t},hr=class s{constructor(e){this.#t=!1,this.#s=0,this.#r=new AbortController,this.#i=new C("RemoteWorkerEnv"),this.onWorkerError=t=>{this.handleWorkerFailure("error",t,t.message||"the worker reported an error")},this.onWorkerMessageError=t=>{this.handleWorkerFailure("messageerror",t,"the worker sent a message that could not be deserialized")},this.onMessageFromWorker=t=>{t.data?.type===ft?this.onMessageToView?.(t.data.data):this.logger.debug("message from worker",t)},this.#n=Object.freeze(hh(e,this.logger)),oe(this,s.WorkerLoaded),oe(this,s.WorkerFailed)}static{this.WorkerLoaded="workerLoaded"}static{this.WorkerFailed="workerFailed"}#e;#t;#s;#r;#i;get logger(){return this.#i}#n;get timeouts(){return this.#n}get isDestroyed(){return this.#t}get workerLoaded(){let{signal:e}=this.#r;return e.aborted?Promise.reject(e.reason):new Promise((t,r)=>{let i,n=!1,o=()=>{n||(n=!0,i?.(),r(e.reason))};i=A(this,s.WorkerLoaded,a=>{n||(n=!0,e.removeEventListener("abort",o),t(a))}),!n&&e.addEventListener("abort",o,{once:!0})})}async start(){let{signal:e}=this.#r;if(e.aborted)throw e.reason;if(this.#e)return this.logger.warn("already started"),this.workerLoaded.then(()=>{if(this.isDestroyed)throw new st});let t=this.#e=Uo();t.addEventListener("error",this.onWorkerError),t.addEventListener("messageerror",this.onWorkerMessageError),this.configureConsoleLogger(t);try{if(await as(t,Nn,this.timeouts.loadTimeout,void 0,e),this.isDestroyed)throw e.aborted?e.reason:new st;t.addEventListener("message",this.onMessageFromWorker),queueMicrotask(()=>{this.announceLoaded()})}catch(r){throw r!==e.reason&&this.logger.error("failed to start",r),this.stopListeningTo(t),this.#e=void 0,this.#t||t.terminate(),r}}applyChangeTrail(e,t){let{signal:r}=this.#r;if(r.aborted)return Promise.reject(r.reason);let i=this.#e;if(i==null)return Promise.reject(new st);let{changeTrail:n,transferables:o}=lh(e),a={type:Wn,changeTrail:n};if(!t)return i.postMessage(a,o??[]),Promise.resolve();let l=++this.#s;return a.serial=l,i.postMessage(a,o??[]),as(i,_n,this.timeouts.changeTrailTimeout,h=>{if(h.serial!==l)return!1;if(h.error){let u=new lr(h.errorName,h.error);throw typeof h.appliedCount=="number"?new ze(h.appliedCount,e.length,{cause:u}):u}return!0},r)}importScript(e){let{signal:t}=this.#r;if(t.aborted)return Promise.reject(t.reason);let r=this.#e;return r==null?Promise.reject(new st):(e=ir(e),r.postMessage({type:Dn,importModule:e}),as(r,Fn,this.timeouts.configureTimeout,i=>{if(i.url!==e)return!1;if(i.error)throw new lr(i.errorName,i.error);return!0},t))}destroy(){this.#t=!0;let e=this.#e;this.#e=void 0,this.#r.abort(new st),e!=null&&(this.stopListeningTo(e),e.postMessage({type:$n}),as(e,jn,this.timeouts.destroyTimeout).catch(t=>{this.logger.warn("the worker did not acknowledge the teardown",t)}).finally(()=>{e.terminate()}))}handleWorkerFailure(e,t,r){if(this.#t)return;this.#t=!0;let i=new Ri(e,r,{cause:e==="error"?t.error??t:t});this.logger.error(r,t);let n=this.#e;this.#e=void 0,n!=null&&this.stopListeningTo(n),this.#r.abort(i),n?.terminate();try{this.onProxyFailed?.(i)}catch(o){this.logger.error("the proxy-failed callback threw",o)}this.announceFailure({env:this,type:e,message:r,reason:i,event:t})}announceLoaded(){try{W(this,s.WorkerLoaded,this)}catch(e){this.logger.error("a workerLoaded listener threw",e)}}announceFailure(e){try{W(this,s.WorkerFailed,e)}catch(t){this.logger.error("a workerFailed listener threw",t)}}stopListeningTo(e){e.removeEventListener("error",this.onWorkerError),e.removeEventListener("messageerror",this.onWorkerMessageError),e.removeEventListener("message",this.onMessageFromWorker)}configureConsoleLogger(e){let t=["RemoteWorkerEnv","workerConfig"],r=Qn(t),i=this.readWorkerConfig(t,r);this.logger.info("load console-logger worker config",{storageKey:r,workerConfig:i}),e.postMessage({type:be,config:{...C.sharedConfig,enable:this.logger.isEnabled,...i,...C.isEnabled?{}:{enable:!1}}})}readWorkerConfig(e,t){let r=Jn(e,"{}"),i;try{i=JSON.parse(r)}catch(n){return this.logger.error(`ignoring the unreadable console-logger worker config at "${t}"`,r,n),{}}return typeof i!="object"||i===null||Array.isArray(i)?(this.logger.error(`ignoring the console-logger worker config at "${t}": expected a JSON object`,r),{}):i}};var ch=[["loadTimeout",Di],["configureTimeout",Wi],["changeTrailTimeout",$i],["destroyTimeout",Ni]];function qo(s){return typeof s!="string"?s?ls.DefaultAutoSync:"no":s.trim().toLowerCase()}var ls=class s extends Ne{constructor(){super(...arguments),this.isShaeWorkerElement=!0,this.shadowEnv=new Y,this.#e=new C("ShaeWorkerElement"),this.autostart=!0,this.isConnected$=f(!1),this.autoSync$=f(s.DefaultAutoSync),this.src$=f(""),this.#t=!1,this.#a=e=>{e instanceof $e||this.logger.error("shadowEnv failed",e)}}static{this.observedAttributes=[...Ne.observedAttributes,ke,"src",cs,re]}static{this.DefaultAutoSync="frame"}#e;get logger(){return this.#e}#t;#s;#r;#i;restore(){super.restore(),this.#i=this.ns$.onChange(e=>{this.shadowEnv.view=R.get(e)}),p(this.shadowEnv,Y.ContextCreated,()=>{this.#r?.run(),this.dispatchEvent(new CustomEvent(Y.ContextCreated.toLowerCase(),{bubbles:!1,detail:{shadowEnv:this.shadowEnv}}))}),p(this.shadowEnv,Y.ContextLost,()=>{this.dispatchEvent(new CustomEvent(Y.ContextLost.toLowerCase(),{bubbles:!1,detail:{shadowEnv:this.shadowEnv}}))}),p(this.shadowEnv,Y.ProxyFailed,e=>{this.dispatchEvent(new CustomEvent(Y.ProxyFailed.toLowerCase(),{bubbles:!1,detail:{shadowEnv:this.shadowEnv,reason:e}}))}),p(this.shadowEnv,Y.SyncFailed,(e,t)=>{this.dispatchEvent(new CustomEvent(Y.SyncFailed.toLowerCase(),{bubbles:!1,detail:{shadowEnv:this.shadowEnv,reason:e,changeTrail:t}}))}),this.autoSync$.onChange(e=>this.#n(e)),this.#n(this.autoSync$.value),this.#c(),this.#o(),this.shadowEnv.isReady&&this.#r?.run()}#n(e){this.reflectAttribute(re,()=>{let t=this.hasAttribute(re),r=t?this.getAttribute(re):void 0;e===s.DefaultAutoSync?t&&r!==e&&this.setAttribute(re,e):r!==e&&this.setAttribute(re,e)})}#o(){this.#r=T(()=>{let e=this.src$.get();e&&this.importScript(e).catch(this.#a)},{autorun:!1})}#a;get shouldAutostart(){return this.autostart&&!Oe(this,zi)}get autoSync(){return this.autoSync$.value}set autoSync(e){this.autoSync$.set(qo(e))}get frameLoop(){return ss.get()}[ss.OnFrame](){this.syncShadowObjects()}async importScript(e){if(!e)throw new Error("src is blank");let t=await this.shadowEnv.ready();this.logger.info("shadowEnv importScript:",e,{shadowEnv:t});let r=t.envProxy;if(r==null)throw new $e;return await r.importScript(e),this}connectedCallback(){H(()=>{if(this.isDestroyed){Vs(this.getRootNode(),this.localName);return}super.connectedCallback(),q(()=>{let e=this.getAttribute(re);e!=null&&(this.autoSync=e),this.isConnected$.set(!0)}),this.shouldAutostart&&this.start().catch(this.#a)})}disconnectedCallback(){this.isConnected$.set(!1),super.disconnectedCallback()}attributeChangedCallback(e){if(!this.isDestroyed&&(super.attributeChangedCallback(e),e===ke&&this.#h(),e===cs&&this.#l(),e===re&&(this.autoSync=this.getAttribute(re)??!0),e==="src")){let t=(this.getAttribute("src")||"").trim();this.src$.set(t),this.shadowEnv.isReady&&this.#r?.run()}}#u(){let e={};for(let[t,r]of ch){let i=qn(this,r);i!==void 0&&(e[t]=i)}return e}start(){if(!this.#t){if(this.shadowEnv.view??=R.get(this.ns),this.shadowEnv.envProxy==null){let e=Oe(this,ke)?new nr:new hr(this.#u());this.shadowEnv.envProxy=e,this.#l()}this.#t=!0}return this.shadowEnv.ready()}teardown(){this.#i?.(),this.#i=void 0,this.#s?.destroy(),this.#r?.destroy(),x(this.isConnected$,this.autoSync$,this.src$),this.shadowEnv.envProxy=void 0,this.shadowEnv.destroy(),super.teardown()}#c(){this.#s=T(()=>{if(this.isConnected$.get()){let e=qo(this.autoSync$.get()||s.DefaultAutoSync),t;if(["true","yes","on","frame","auto-sync"].includes(e))return this.logger.debug("auto-sync",e,this),this.frameLoop.start(this),()=>{this.frameLoop.stop(this)};if(e.endsWith("fps")){let r=parseInt(e,10);r>0?t=Math.floor(1e3/r):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.debug("auto-sync interval (ms)",t,this);let r=setInterval(()=>{this.syncShadowObjects()},t);return()=>{clearInterval(r)}}else this.logger.debug("auto-sync off",this)}},[this.autoSync$,this.isConnected$])}#l(){let e=this.shadowEnv.envProxy;e?.isLocalEnv&&(e.disableStructuredClone=this.hasAttribute(cs))}#h(){let e=this.shadowEnv.envProxy;if(e==null)return;let t=!!e.isLocalEnv;Oe(this,ke)!==t&&(this.logger.error(`the "local" attribute cannot change once the shadowEnv is built; it is reset to ${t?'the bare "local" form':"its absence"} \u2014 build a new <shae-worker> element to switch environments`),this.reflectAttribute(ke,()=>{t?this.setAttribute(ke,""):this.removeAttribute(ke)}))}};customElements.define(xi,ls);globalThis.SHADOW_OBJECTS_BUNDLE_LOADED=!0;
|
|
22
22
|
/*! Bundled license information:
|
|
23
23
|
|
|
24
24
|
@spearwolf/eventize/lib/index.mjs:
|
|
25
25
|
(*!
|
|
26
26
|
=============================================================================
|
|
27
|
-
@spearwolf/eventize
|
|
28
|
-
\u2014 git+https://github.com/spearwolf/eventize.git
|
|
29
|
-
=============================================================================
|
|
30
|
-
|
|
31
|
-
Copyright 2015-2026 Wolfger Schramm
|
|
32
|
-
|
|
33
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
|
34
|
-
you may not use this file except in compliance with the License.
|
|
35
|
-
You may obtain a copy of the License at
|
|
36
|
-
|
|
37
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
|
38
|
-
|
|
39
|
-
Unless required by applicable law or agreed to in writing, software
|
|
40
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
|
41
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
42
|
-
See the License for the specific language governing permissions and
|
|
43
|
-
limitations under the License.
|
|
44
|
-
*)
|
|
45
|
-
|
|
46
|
-
@spearwolf/signalize/dist/signalize.DjCVnTTt.js:
|
|
47
|
-
@spearwolf/signalize/dist/index.js:
|
|
48
|
-
@spearwolf/signalize/dist/decorators.js:
|
|
49
|
-
(*!
|
|
50
|
-
@file @spearwolf/signalize - signals and effects for all
|
|
51
|
-
@author Wolfger Schramm <wolfger@spearwolf.de>
|
|
52
|
-
@version 0.30.0+esm.20260520
|
|
53
|
-
|
|
54
|
-
Copyright 2022-2026 Wolfger Schramm
|
|
55
|
-
|
|
56
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
|
57
|
-
you may not use this file except in compliance with the License.
|
|
58
|
-
You may obtain a copy of the License at
|
|
59
|
-
|
|
60
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
|
61
|
-
|
|
62
|
-
Unless required by applicable law or agreed to in writing, software
|
|
63
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
|
64
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
65
|
-
See the License for the specific language governing permissions and
|
|
66
|
-
limitations under the License.
|
|
67
|
-
|
|
68
|
-
*)
|
|
69
|
-
*/
|
|
70
|
-
`)}var nr=()=>new js;var ft=(s,e,t=1e3,i,r)=>new Promise((n,o)=>{if(r?.aborted){o(r.reason);return}let a,f,m=()=>{clearTimeout(a),s.removeEventListener("message",f),r?.removeEventListener("abort",P)};function P(){m(),o(r.reason)}t!==0&&t!==1/0&&(a=setTimeout(()=>{m(),o(new Error(`Timeout waiting for message of type: ${e}`))},t)),f=c=>{if(c.data.type===e)try{(!i||i(c.data))&&(m(),n())}catch(D){m(),o(D)}},r?.addEventListener("abort",P,{once:!0}),s.addEventListener("message",f)});var un=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},zs=class extends Error{constructor(e,t,i){super(t,i),this.name="WorkerFailedError",this.type=e}},Le=class extends Error{constructor(e="the worker environment has been destroyed"){super(e),this.name="WorkerDestroyedError"}},Kt=class s{constructor(){this.#t=!1,this.#s=0,this.#i=new AbortController,this.logger=new N("RemoteWorkerEnv"),Y(this,s.WorkerLoaded),Y(this,s.WorkerFailed)}static{this.WorkerLoaded="workerLoaded"}static{this.WorkerFailed="workerFailed"}#e;#t;#s;#i;get isDestroyed(){return this.#t}get workerLoaded(){let{signal:e}=this.#i;return e.aborted?Promise.reject(e.reason):new Promise((t,i)=>{let r,n=!1,o=()=>{n||(n=!0,r?.(),i(e.reason))};r=C(this,s.WorkerLoaded,a=>{n||(n=!0,e.removeEventListener("abort",o),t(a))}),!n&&e.addEventListener("abort",o,{once:!0})})}async start(){let{signal:e}=this.#i;if(e.aborted)throw e.reason;if(this.#t)throw new Le;if(this.#e)return this.logger.isWarn&&this.logger.warn("already started"),this.workerLoaded.then(()=>{if(this.isDestroyed)throw new Le});let t=this.#e=nr();t.addEventListener("error",this.onWorkerError.bind(this)),t.addEventListener("messageerror",this.onWorkerMessageError.bind(this)),this.configureConsoleLogger(t);try{if(await ft(t,bi,Si,void 0,e),this.isDestroyed)throw new Le;t.addEventListener("message",this.onMessageFromWorker.bind(this)),queueMicrotask(()=>{g(this,s.WorkerLoaded,this)})}catch(i){throw i!==e.reason&&this.logger.error("failed to start",i),this.#e=void 0,this.#t||t.terminate(),i}}applyChangeTrail(e,t){let{signal:i}=this.#i;if(i.aborted)return Promise.reject(i.reason);let r=this.#e;if(r==null)return Promise.reject(new Le);let n=un(e),o={type:vi,changeTrail:e},a=++this.#s;return t&&(o.serial=a),r.postMessage(o,n??[]),t?ft(r,wi,Ai,f=>{if(f.error)throw f.error;return f.serial===a},i):Promise.resolve()}importScript(e){let{signal:t}=this.#i;if(t.aborted)return Promise.reject(t.reason);let i=this.#e;return i==null?Promise.reject(new Le):(e=Ht(e),i.postMessage({type:yi,importModule:e}),ft(i,Ei,ki,r=>{if(r.error)throw r.error;return r.url===e},t))}destroy(){if(!this.#e)return;let e=this.#e;this.#e=void 0,this.#t=!0,e.postMessage({type:mi}),ft(e,Ci,Pi).finally(()=>{e.terminate()})}onWorkerError(e){this.handleWorkerFailure("error",e,e.message||"the worker reported an error")}onWorkerMessageError(e){this.handleWorkerFailure("messageerror",e,"the worker sent a message that could not be deserialized")}handleWorkerFailure(e,t,i){if(this.#t)return;this.#t=!0;let r=new zs(e,i,{cause:e==="error"?t.error??t:t});this.logger.error(i,t);let n=this.#e;this.#e=void 0,this.#i.abort(r),n?.terminate();try{this.onProxyFailed?.(r)}catch(o){this.logger.error("the proxy-failed callback threw",o)}g(this,s.WorkerFailed,{env:this,type:e,message:i,reason:r,event:t})}onMessageFromWorker(e){e.data?.type===$e?this.onMessageToView?.(e.data.data):this.logger.isDebug&&this.logger.debug("message from worker",e)}configureConsoleLogger(e){let t=`${V}.RemoteWorkerEnv.workerConfig`,i=JSON.parse(localStorage.getItem(t)??"{}");this.logger.isInfo&&this.logger.info("load console-logger worker config",{localStorageKey:t,workerConfig:i}),e.postMessage({type:V,config:{...N.sharedConfig,enable:this.logger.isEnabled,...i,...N.isEnabled?{}:{enable:!1}}})}};var Yt=class s extends be{constructor(){super(),this.isShaeWorkerElement=!0,this.shadowEnv=new B,this.logger=new N("ShaeWorkerElement"),this.autostart=!0,this.isConnected$=y(!1),this.autoSync$=y(s.DefaultAutoSync),this.src$=y(""),this.#e=!1,this.#t=!1,this.#a=e=>{e instanceof me||this.logger.error("shadowEnv failed",e)},this.ns$.onChange(e=>{this.shadowEnv.view=I.get(e)}),b(this.shadowEnv,B.ContextCreated,()=>{this.#r?.run(),this.dispatchEvent(new CustomEvent(B.ContextCreated.toLowerCase(),{bubbles:!1,detail:{shadowEnv:this.shadowEnv}}))}),b(this.shadowEnv,B.ContextLost,()=>{this.dispatchEvent(new CustomEvent(B.ContextLost.toLowerCase(),{bubbles:!1,detail:{shadowEnv:this.shadowEnv}}))}),b(this.shadowEnv,B.ProxyFailed,e=>{this.dispatchEvent(new CustomEvent(B.ProxyFailed.toLowerCase(),{bubbles:!1,detail:{shadowEnv:this.shadowEnv,reason:e}}))}),this.autoSync$.onChange(e=>{let t=this.hasAttribute(H),i=t?this.getAttribute(H):void 0;e===s.DefaultAutoSync?t&&i!==e&&this.setAttribute(H,e):i!==e&&this.setAttribute(H,e)}),this.#h(),this.#n(),this.style.display="contents"}static{this.observedAttributes=[...be.observedAttributes,vt,"src",mt,H]}static{this.DefaultAutoSync="frame"}#e;#t;#s;#i;#r;#n(){this.#r=S(()=>{let e=this.src$.get();e&&this.importScript(e).catch(this.#a)},{autorun:!1})}#a;get shouldAutostart(){return this.autostart&&!at(this,Bs)}get autoSync(){return this.autoSync$.value}set autoSync(e){typeof e!="string"&&(e=e?s.DefaultAutoSync:"no"),this.autoSync$.set(`${e}`.trim().toLowerCase())}get frameLoop(){return this.#s??=new ht,this.#s}[ht.OnFrame](){this.syncShadowObjects()}async importScript(e){if(!e)throw new Error("src is blank");let t=await this.shadowEnv.ready();this.logger.isInfo&&this.logger.info("shadowEnv importScript:",e,{shadowEnv:t});let i=t.envProxy;if(i==null)throw new me;return await i.importScript(e),this}connectedCallback(){W(()=>{let e=this.getAttribute(H);e!=null&&this.autoSync$.set(e),this.isConnected$.set(!0)}),this.shouldAutostart&&this.start().catch(this.#a)}disconnectedCallback(){this.isConnected$.set(!1),this.#o()}attributeChangedCallback(e){if(super.attributeChangedCallback(e),e===vt&&this.shadowEnv.envProxy!=null)throw new Error('Changing the "local" attribute after the shadowEnv has been created is not supported.');if(e===mt&&this.#l(),e===H&&(this.autoSync=this.hasAttribute(H)?this.getAttribute(H):!0),e==="src"){let t=(this.getAttribute("src")||"").trim();this.src$.set(t),this.shadowEnv.isReady&&this.#r?.run()}}start(){if(!this.#t){if(this.#e=!1,this.shadowEnv.view??=I.get(this.ns),this.shadowEnv.envProxy==null){let e=at(this,vt)?new Qt:new Kt;this.shadowEnv.envProxy=e,this.#l()}this.#t=!0}return this.shadowEnv.ready()}destroy(){this.#i?.destroy(),this.#r?.destroy(),M(this.isConnected$,this.autoSync$,this.src$),this.shadowEnv.envProxy=void 0,this.shadowEnv.destroy()}#o(){this.#e||(this.#e=!0,queueMicrotask(()=>{this.#e&&this.destroy()}))}#h(){this.#i=S(()=>{if(this.isConnected$.get()){let e=(this.autoSync$.get()||s.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 i=parseInt(e,10);i>0?t=Math.floor(1e3/i):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 i=setInterval(()=>{this.syncShadowObjects()},t);return()=>{clearInterval(i)}}else this.logger.isDebug&&this.logger.debug("auto-sync off",this)}},[this.autoSync$,this.isConnected$])}#l(){let e=this.shadowEnv.envProxy;e?.isLocalEnv&&(e.disableStructuredClone=this.hasAttribute(mt))}};customElements.define(Us,Yt);globalThis.SHADOW_ENTS_BUNDLE_LOADED=!0;
|
|
71
|
-
/*! Bundled license information:
|
|
72
|
-
|
|
73
|
-
@spearwolf/eventize/lib/index.mjs:
|
|
74
|
-
(*!
|
|
75
|
-
=============================================================================
|
|
76
|
-
@spearwolf/eventize 5.0.0+build.20260513
|
|
27
|
+
@spearwolf/eventize 6.2.0+build.20260830
|
|
77
28
|
— git+https://github.com/spearwolf/eventize.git
|
|
78
29
|
=============================================================================
|
|
79
30
|
|
|
@@ -92,13 +43,13 @@ var pt="shaeRequestEntParent",gt="shaeReRequestEntParent",Us="shae-worker",yt="s
|
|
|
92
43
|
limitations under the License.
|
|
93
44
|
*)
|
|
94
45
|
|
|
95
|
-
@spearwolf/signalize/dist/signalize.
|
|
46
|
+
@spearwolf/signalize/dist/signalize.gcXQq0d2.js:
|
|
96
47
|
@spearwolf/signalize/dist/index.js:
|
|
97
48
|
@spearwolf/signalize/dist/decorators.js:
|
|
98
49
|
(*!
|
|
99
50
|
@file @spearwolf/signalize - signals and effects for all
|
|
100
51
|
@author Wolfger Schramm <wolfger@spearwolf.de>
|
|
101
|
-
@version 0.
|
|
52
|
+
@version 1.0.0+esm
|
|
102
53
|
|
|
103
54
|
Copyright 2022-2026 Wolfger Schramm
|
|
104
55
|
|