@spearwolf/shadow-objects 0.32.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 +333 -10
- package/README.md +100 -20
- 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 +43 -5
- package/src/elements/ShaeEntElement.d.ts.map +1 -1
- package/src/elements/ShaeEntElement.js +399 -170
- 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 +57 -7
- package/src/elements/ShaePropElement.d.ts.map +1 -1
- package/src/elements/ShaePropElement.js +241 -220
- 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 +230 -74
- 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 +81 -17
- package/src/in-the-dark/Kernel.d.ts.map +1 -1
- package/src/in-the-dark/Kernel.js +449 -392
- package/src/in-the-dark/Kernel.js.map +3 -3
- package/src/in-the-dark/Registry.d.ts +1 -1
- package/src/in-the-dark/Registry.d.ts.map +1 -1
- package/src/in-the-dark/Registry.js +99 -26
- package/src/in-the-dark/Registry.js.map +2 -2
- package/src/in-the-dark/ShadowObject.d.ts +1 -1
- package/src/in-the-dark/ShadowObject.d.ts.map +1 -1
- package/src/in-the-dark/ShadowObject.js +3 -2
- 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 +8 -5
- 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 +39 -8
- 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 +54 -28
- 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 -12
- 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 +4 -2
- package/src/utils/attr-utils.js.map +2 -2
- package/src/utils/constants.js.map +1 -1
- package/src/utils/generateUUID.d.ts +12 -1
- 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 +16 -1
- package/src/utils/waitForMessageOfType.d.ts.map +1 -1
- package/src/utils/waitForMessageOfType.js +28 -3
- package/src/utils/waitForMessageOfType.js.map +2 -2
- package/src/view/ComponentChanges.d.ts +91 -1
- package/src/view/ComponentChanges.d.ts.map +1 -1
- package/src/view/ComponentChanges.js +253 -69
- package/src/view/ComponentChanges.js.map +2 -2
- package/src/view/ComponentContext.d.ts +239 -7
- package/src/view/ComponentContext.d.ts.map +1 -1
- package/src/view/ComponentContext.js +648 -115
- 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 +3 -1
- package/src/view/ComponentMemory.js.map +2 -2
- package/src/view/IShadowObjectEnvProxy.d.ts +33 -1
- package/src/view/IShadowObjectEnvProxy.d.ts.map +1 -1
- package/src/view/LocalShadowObjectEnv.d.ts +2 -2
- package/src/view/LocalShadowObjectEnv.d.ts.map +1 -1
- package/src/view/LocalShadowObjectEnv.js +18 -11
- package/src/view/LocalShadowObjectEnv.js.map +2 -2
- package/src/view/RemoteWorkerEnv.d.ts +129 -3
- package/src/view/RemoteWorkerEnv.d.ts.map +1 -1
- package/src/view/RemoteWorkerEnv.js +290 -60
- package/src/view/RemoteWorkerEnv.js.map +2 -2
- package/src/view/ShadowEnv.d.ts +73 -2
- package/src/view/ShadowEnv.d.ts.map +1 -1
- package/src/view/ShadowEnv.js +301 -64
- package/src/view/ShadowEnv.js.map +2 -2
- package/src/view/ViewComponent.d.ts +93 -8
- package/src/view/ViewComponent.d.ts.map +1 -1
- package/src/view/ViewComponent.js +148 -28
- 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 +80 -18
- 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 ht="shaeRequestEntParent",lt="shaeReRequestEntParent",Ns="shae-worker",ct="shae-ent",_s="shae-prop",oe="token",q="forward-custom-events";var ut="local",$s="no-autostart",dt="no-structured-clone",V="auto-sync";var ft="name",pt="value",gt="type",yt="no-trim";var ve="*",Bs=1,Yt=2,Jt=4,H=Symbol.for("eventize"),Ki="[eventize]",Xt=s=>s===ve,Vs=s=>{switch(typeof s){case"string":case"symbol":return!0;default:return!1}},Us=typeof console<"u",Yi=Us?console[console.warn?"warn":"log"].bind(console,Ki):()=>{},Ji=(s,e,t)=>(Object.defineProperty(s,e,{value:t,configurable:!0}),s),Xi=0,Zt=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:Xi++})}isKnown(s){return this.eventNames.has(s)}replayTo(s,e,t=[]){if(Xt(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}},Qt=(s,e,t,i)=>{if(typeof e=="function"){let r=e.apply(s,t);r!=null&&i?.(r)}},Zi=(s,e,t,i)=>Qt(e,e.emit,[s].concat(t),i),er=s=>{switch(typeof s){case"function":return Bs;case"string":case"symbol":return Yt;case"object":return Jt}},tr=0,sr=()=>++tr,Gs=class{id;eventName;isCatchEmAll;priority;listener;listenerObject;listenerType;callAfterApply;isRemoved;refCount;constructor(s,e,t,i=null){this.id=sr(),this.eventName=s,this.isCatchEmAll=Xt(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===ve||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 Bs:Qt(r,i,e,t),this.callAfterApply&&this.callAfterApply();break;case Yt:Qt(r,r[i],e,t),this.callAfterApply&&this.callAfterApply();break;case Jt:{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 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},Ws=s=>s?.slice(0),js=(s,e)=>{let t=s.indexOf(e);t>-1&&s.splice(t,1)},nr=s=>s===Jt||s===Yt,Kt=(s,e,t)=>{let i=s.findIndex(r=>r.isEqual(e,t));i>-1&&(s[i].isRemoved=!0,s.splice(i,1))},qt=(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)Kt(s,r,void 0)},Ht=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))},hr=(s,e)=>{let t=ar(s,e);return t?(t.refCount+=1,t):(e.splice(rr(e,s),0,s),s)},lr=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 hr(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&&Xt(s)){this.removeAllListeners();return}if(e==null&&Vs(s)){this.removeByEventName(s);return}if(s instanceof Gs){this.removeByEventListener(s);return}if(t){this.removeByEventNameAndListenerObject(s,e);return}this.removeByListener(s,e)}removeByEventName(s){Ht(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)=>{js(e,s),e.length===0&&this.namedListeners.delete(t)}),js(this.catchEmAllListeners,s)))}removeByEventNameAndListenerObject(s,e){this.namedListeners.forEach((t,i)=>{qt(t,s,e),t.length===0&&this.namedListeners.delete(i)})}removeByListener(s,e){let t=typeof s=="object";this.namedListeners.forEach((i,r)=>{Kt(i,s,e),t&&qt(i,void 0,s),i.length===0&&this.namedListeners.delete(r)}),Kt(this.catchEmAllListeners,s,e),t&&qt(this.catchEmAllListeners,void 0,s)}removeAllListeners(){this.namedListeners.forEach(s=>Ht(s)),this.namedListeners.clear(),Ht(this.catchEmAllListeners)}forEach(s,e){let t=Ws(this.catchEmAllListeners),i=Ws(this.namedListeners.get(s));if(s===ve||!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}},ae=s=>!!(s&&s[H]);function We(s){if(ae(s))return s;let e=new lr,t=new Zt;return Ji(s,H,{keeper:t,store:e}),s}var Q={Max:Number.POSITIVE_INFINITY,Critical:1e9,High:1e6,Normal:0,Low:-1e4,Min:Number.NEGATIVE_INFINITY,AAA:1e9,BB:1e6,C:1e3,Default:0},cr=(s,e,t,i,r,n,o)=>{let a=s.add(new Gs(t,i,r,n));return e.replayTo(t,a,o),a},qs=(s,e,t,i)=>{let r=t.length,n=typeof t[0],o,a,f,m;if(r>=2&&r<=3&&n==="number"?(o=ve,[a,f,m]=t):r>=3&&r<=4&&typeof t[1]=="number"?[o,a,f,m]=t:(a=Q.Default,n==="string"||n==="symbol"||Array.isArray(t[0])?[o,f,m]=t:(o=ve,[f,m]=t)),!f)throw Us&&Yi("called with insufficient arguments!",t),new Error("subscribeTo() called with insufficient arguments");let P=c=>j=>cr(s,e,j,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)},ur=(s,e,t)=>{let i=[],r=qs(s,e,t,i);return Zt.publish(i),r},dr=(s,e,t)=>{let i=[];return{listeners:qs(s,e,t,i),publishRetained:()=>Zt.publish(i)}},Fs=s=>e=>{e.callAfterApply=()=>{s?.()}},Hs=(s,e)=>Object.assign(()=>A(s,e),Array.isArray(e)?{listeners:e}:{listener:e}),Is=(s,e,t,i)=>{if(e===ve)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[H];r.forEach(e,o=>o.apply(e,t,i)),n.retain(e,t)},Qs=(s,e,t,i)=>{Array.isArray(e)?e.forEach(r=>Is(s,r,t,i)):Is(s,e,t,i)},zs=(s,e,t,i)=>{if(e===ve)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)}},Ks=(s,e,t,i)=>{Array.isArray(e)?e.forEach(r=>zs(s,r,t,i)):zs(s,e,t,i)},Ys=s=>s!=null&&typeof s=="object";function w(s,...e){let t=We(s),{store:i,keeper:r}=t[H];return Hs(t,ur(i,r,e))}function k(s,...e){let t=We(s),{store:i,keeper:r}=t[H],{listeners:n,publishRetained:o}=dr(i,r,e),a=Hs(t,n),f=!1,m=()=>{f||(a(),f=!0)};return Array.isArray(n)?n.forEach(Fs(m)):Fs(m)(n),o(),m}function Ae(s,e){return new Promise(t=>{k(s,e,t)})}function A(s,e,t){if(!ae(s))return;let{store:i,keeper:r}=s[H],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")):Vs(e)&&r.remove(e)}function y(s,e,...t){ae(s)?Qs(s,e,t):Ys(s)&&Ks(s,e,t)}function fr(s,e,...t){let i=[],r=n=>{i.push(n)};return ae(s)?Qs(s,e,t,r):Ys(s)&&Ks(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 ee(s,e){let t=We(s),{keeper:i}=t[H];i.add(e)}function he(s,e){if(!ae(s))throw new Error("object is not eventized");let{keeper:t}=s[H];t.clear(e)}function pr(s,e){if(!ae(s))throw new Error("object is not eventized");let{keeper:t}=s[H];t.remove(e)}var gr=w,yr=k,vr=A,mr=y,br=fr,wr=Ae,Cr=ee,Er=he,Sr=pr,O=(()=>{let s=(e={})=>We(e);return s.inject=(e={})=>(e=We(e),Object.assign(e,{on:(...t)=>gr(e,...t),once:(...t)=>yr(e,...t),onceAsync:t=>wr(e,t),off:(t,i)=>vr(e,t,i),emit:(t,...i)=>mr(e,t,...i),emitAsync:(t,...i)=>br(e,t,...i),retain:t=>Cr(e,t),retainClear:t=>Er(e,t),unretain:t=>Sr(e,t)}),e),s.is=ae,s})();var es=s=>ae(s)?s[H]?.store?.getSubscriptionCount()??0:0;var K=Symbol.for("signal"),Pe=Symbol.for("effect"),Js=Symbol.for("destroySignal"),Xs=Symbol.for("createEffect"),kr=Symbol.for("destroyEffect"),Oe="value",ns="mute",os="unmute",le="destroy",je=Symbol.for("recall"),Fe=O(),we=O(),me=O(),ti=O(),be=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(w(me,(i,r)=>{r===je&&e.add(i)}),w(ti,i=>{e.add(i)}));for(let[,i]of this.delayedEffects)for(let r of i)e.has(r)||y(me,r,r,je)}finally{for(let i of t)i()}}},si=()=>be.current;function N(s){let e=be.current;e?e=void 0:e=be.current=new be;try{s()}finally{e&&(be.current=void 0,e.run())}}var ts=0;function Et(s){ts++;try{s()}finally{ts--}}function as(){return ts>0}var mt=class{[Pe];constructor(e){this[Pe]=e,k(e,le,()=>{this[Pe]=void 0})}run=()=>this[Pe]?.run();destroy=()=>{this[Pe]?.destroy(),this[Pe]=void 0}},ss=[],ii=()=>ss.at(-1),Ar=(s,e)=>{ss.push(s);try{return e()}finally{ss.pop()}};var Te=new WeakMap,vt=new Set,te=class s{#e=new Set;#t=new Set;#s=new Map;#r=new WeakMap;#i=new Map;#n=new Set;#o=new Set;#a;#l;static get(e){if(e!=null)return e instanceof s?e:Te.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){Te.get(e)?.clear()}static clear(){for(let e of[...vt])e.clear();vt.clear()}constructor(e){if(e!=null&&e instanceof s)return e;if(e??=this,Te.has(e))return Te.get(e);this.#l=new WeakRef(e),Te.set(e,this),vt.add(this),O(this)}attachGroup(e){if(e===this)throw new Error("Cannot attach a group to itself");return this.#e.add(e),e.#a&&e.#a!==this&&e.#a.#e.delete(e),e.#a=this,e}detachGroup(e){return e!==this&&this.#e.has(e)&&(this.#e.delete(e),e.#a=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),this.#i.has(e)?this.#i.get(e).push(i):this.#i.set(e,[i]),this.#r.has(i)?this.#r.get(i).add(e):this.#r.set(i,new Set([e]))}else this.#s.delete(e);return t}hasSignal(e){return this.#s.has(e)||!!this.#a?.hasSignal(e)}signal(e){return this.#s.get(e)?.object??this.#a?.signal(e)}detachSignal(e){let t=R(e);if(t&&(this.#t.delete(t),this.#r.has(t))){let i=this.#r.get(t);for(let r of i)if(this.#i.has(r)){let n=this.#i.get(r);n.splice(n.indexOf(t),1),n.length===0?(this.#s.delete(r),this.#i.delete(r)):this.#s.get(r)===t&&this.#s.set(r,n.at(-1))}i.clear(),this.#r.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.#o.add(e),e}detachLink(e){return e&&this.#o.delete(e),e}destroy(){console.warn("SignalGroup#destroy is deprecated. Use SignalGroup#clear instead."),this.clear()}clear(){y(this,le,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)L(e);for(let e of this.#o)e.destroy();if(this.#e.clear(),this.#t.clear(),this.#s.clear(),this.#i.clear(),this.#n.clear(),this.#o.clear(),this.#a?.detachGroup(this),this.#l){let e=this.#l.deref();e!==void 0&&Te.delete(e),this.#l=void 0}vt.delete(this)}},bt=class{#e;#t;constructor(e="id",t=1){this.#e=e,this.#t=t}make(){return Symbol(`${this.#e}${this.#t++}`)}},Pr=s=>s!=null&&typeof s.then=="function",is=class s{static idGen=new bt("ef");static count=0;static maxDepth=256;id;callback;#e;#t=new Set;#s=new Set;#r=new Map;#i=new Set;childEffects=[];curChildEffectSlot=0;autorun=!0;shouldRun=!0;priority;#n;#o=!1;#a=0;constructor(e,t){O(this),this.callback=e;let i;t?.attach!=null&&(i=te.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,w(me,this.id,je,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=ii();return a!=null?(o=a.getCurrentChildEffect(),o==null&&(o=new s(e,n),a.attachChildEffect(o),y(me,Xs,o)),a.curChildEffectSlot++):(o=new s(e,n),y(me,Xs,o)),o.hasStaticDeps()?o.saveSignalsFromDeps():o.autorun&&o.run(),new mt(o)}getCurrentChildEffect(){return this.childEffects[this.curChildEffectSlot]}attachChildEffect(e){this.childEffects.push(e)}run=()=>{if(this.#o||!this.shouldRun)return;let e=si();if(e){e.batch(this.id,this.priority);return}if(this.#a>=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.#a++;try{if(this.runCleanupCallback(),this.destroyChildEffects(),this.curChildEffectSlot=0,this.shouldRun=!1,y(ti,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=Ar(this,this.callback),this.cleanupLostSignals(),this.#i.clear()}}finally{this.#a--}};[je](){this.shouldRun=!0,this.autorun&&this.run()}whenSignalIsRead(e){this.#s.delete(e),this.#t.has(e)||(this.#t.add(e),this.#r.set(e,[w(Fe,e,this.priority,je,this),k(we,e,Js,this)]))}[Js](e){!this.#i.has(e)&&this.#t.has(e)&&(this.#i.add(e),this.unsubscribeSignal(e),this.#i.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.#r.has(e)&&(this.#r.get(e).forEach(t=>{t()}),this.#r.delete(e))}runCleanupCallback(){if(this.#e!=null){let e=this.#e;this.#e=void 0,Pr(e)?Promise.resolve(e).then(t=>{typeof t=="function"&&t()}):e()}}destroy=()=>{this.#o||(y(this,le,this),A(this),y(me,kr,this),this.runCleanupCallback(),this.destroyChildEffects(),A(Fe,this),A(me,this),A(we,this),this.#o=!0,this.#t.clear(),this.#s.clear(),this.#r.clear(),this.#i.clear(),--s.count)}},S=(...s)=>is.createEffect(...s);var Ie=new WeakMap,Tr=s=>{let e=Ie.get(s);return e||(e={},Ie.set(s,e)),e},U=(s,e)=>Ie.get(s)?.signals?.get(e);var ri=(s,e,t)=>{let i=Tr(s);i.signals??=new Map,i.signals.set(e,t)};function ze(...s){for(let e of s)if(Ie.has(e)){let t=Ie.get(e);if(t.signals){for(let i of t.signals.values())L(i);t.signals.clear(),t.signals=void 0}}}function ni(s){let e=R(Ce(s)?s:U(...s));e!=null&&!e.muted&&!e.destroyed&&rs(e.id,e.value,{touch:!0})}function xe(s){return Ce(s)?R(s)?.value:R(U(...s))?.value}var wt=class{[K];constructor(e){this[K]=e}get get(){return this[K].reader}get set(){return this[K].writer}get value(){return xe(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[K].muted}set muted(e){this[K].muted=e}touch(){ni(this)}destroy(){L(this)}},Or=new bt("si"),Zs=!1;function xr(){Zs||(Zs=!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 ei(s){as()||ii()?.whenSignalIsRead(s)}function rs(s,e,t){as()||y(Fe,s,e,t)}var Ce=s=>s!=null&&s[K]!=null,Mr=s=>{let e=t=>(s.destroyed||s.beforeRead?.(),t?(xr(),S(()=>(s.destroyed||ei(s.id),t(s.value)),[e])):s.destroyed||ei(s.id),s.value);return Object.defineProperty(e,K,{value:s}),e},Ct=class s{static instanceCount=0;id;lazy;get[K](){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)){rs(this.id,this.#e);return}(t?.touch??!1)&&!this.muted&&!this.destroyed&&rs(this.id,this.#e,{touch:!0})};object;constructor(e,t){this.id=Or.make(),++s.instanceCount,this.lazy=e,this.lazy?(this.value=void 0,this.valueFn=t):(this.value=t,this.valueFn=void 0),this.reader=Mr(this),this.object=new wt(this)}},R=s=>s?.[K];function p(s=void 0,e){let t;if(Ce(s))t=R(s);else{let i=e?.lazy??!1;t=new Ct(i,s),t.beforeRead=e?.beforeRead,t.compare=e?.compare}return e?.attach!=null&&te.findOrCreate(e.attach).attachSignal(t),t.object}var L=(...s)=>{for(let e of s){let t=R(e);t!=null&&!t.destroyed&&(t.destroyed=!0,t.beforeRead=void 0,--Ct.instanceCount,y(we,t.id,t.id))}};function St(s,e){let t=p(),i=e?.attach!=null?te.findOrCreate(e.attach):void 0;i!=null&&(e?.name?i.attachSignalByName(e.name,t):i.attachSignal(t));let r=S(()=>{N(()=>{t.set(s())})},{autorun:!(e?.lazy??!1),priority:e?.priority??Q.C,attach:i}),n=R(t);return n.beforeRead=r.run,k(we,n.id,r.destroy),t.get}var At=class{#e=!1;#t;source;lastValue;isDestroyed=!1;constructor(e){O(this),this.source=R(e),this.#t=w(Fe,this.source.id,(t,i)=>{!this.#e&&!this.isDestroyed&&(i?.touch===!0?this.touch():this.write())}),k(we,this.source.id,()=>this.destroy())}attach(e){let t=te.findOrCreate(e);return t.attachLink(this),k(this,le,()=>{t.detachLink(this)}),t}nextValue(){return new Promise((e,t)=>{let i=[],r=()=>i.forEach(n=>{n()});i.push(k(this,Oe,n=>{r(),e(n)}),k(this,le,()=>{r(),t()}))})}async*asyncValues(e){ee(this,Oe);try{let t=0;for(;!this.isDestroyed;)try{let i=await this.nextValue();if(e?.(i,t++))break;yield i}catch{break}}finally{he(this,Oe)}}destroy(){this.isDestroyed||(this.#t?.(),this.#t=void 0,y(this,le,this),he(this,Oe),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,y(this,ns,this)),this}unmute(){return!this.isDestroyed&&this.#e&&(this.#e=!1,y(this,os,this)),this}toggleMute(){return this.isDestroyed||(this.#e=!this.#e,y(this,this.#e?ns:os,this)),this.#e}updateValue(e){if(!this.#e&&!this.isDestroyed){let{value:t}=this.source;e(t),y(this,Oe,t),this.lastValue=t}}},hs=class extends At{target;constructor(e,t){super(e),this.target=R(t),k(we,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)})}},ls=class extends At{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)})}},kt=new Map;function _(s,e,t){let i=R(s),r=R(e),n=r??e,o;if(kt.has(i)){if(o=kt.get(i),o.has(n))return o.get(n)}else o=new Map,kt.set(i,o);let a=r!=null?new hs(s,r):new ls(s,e),f=t?.attach;return f&&a.attach(f),o.set(n,a),k(a,le,()=>{o.delete(n),o.size===0&&kt.delete(i)}),a}var Pt=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,p(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=p();return this.#e.set(e,t),t}return this.#e.get(e)}update(e){e.size&&N(()=>{for(let[t,i]of e.entries())this.get(t).set(i)})}updateFromProps(e,t){N(()=>{let i=t?t.map(r=>[r,e[r]]):Object.entries(e);for(let[r,n]of i)this.get(r).set(n)})}};var se=(s=>(s[s.StructuralChanges=1]="StructuralChanges",s[s.ContentUpdates=2]="ContentUpdates",s[s.Removal=3]="Removal",s))(se||{}),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||{}),Ee=Symbol.for("ShadowEntsGlobalNS"),ie="#void",oi="contextLost",ai="configure",hi="changeTrail",li="destroy",ci="loaded",ui="appliedChangeTrail",di="importedModule",fi="destroyed",Me="messageToView",pi=6e4,gi=6e4,yi=5e3,vi=5e3,cs="shadowObjects";function mi(s,e){s.indexOf(e)===-1&&s.push(e)}function us(s,e){let t=s.indexOf(e);t!==-1&&s.splice(t,1),s.push(e)}function ce(s,e){let t=s.indexOf(e);t!==-1&&s.splice(t,1)}var Se=s=>typeof s=="string"?s.trim()||Ee:typeof s=="symbol"?s:Ee;var Be="#root",Ve=class{#e;get uuid(){return this.#e}#t=0;constructor(e){this.#e=e}#s=!0;#r=0;#i=0;hasChanges(){return this.#t>0}get isNew(){return this.#s}get isCreated(){return this.#r>0&&this.#r>this.#i}get isDestroyed(){return this.#i>0&&this.#i>=this.#r}#n=ie;#o;#a=0;#l=!1;#c;#u;#h;create(e=ie,t,i=0,r=!1){this.#t++,this.#r++,this.#c=e,this.#u=t??Be,this.#h=i||void 0,this.#l=r}destroy(){this.#i++,this.#t++}clear(){this.#t=0,this.#s=!1,this.#c=void 0,this.#u=void 0,this.#h=void 0,this.#p.clear(),this.#g.length=0,this.#d.length=0,this.#f.clear()}changeToken(e){e===this.#n?this.#c=void 0:(this.#c=e,this.#t++)}setParent(e){e===this.#o?this.#u=void 0:(this.#u=e??Be,this.#t++)}changeOrder(e){e===this.#a?this.#h=void 0:(this.#h=e,this.#t++)}#y=new Map;#p=new Map;#g=[];changeProperty(e,t,i){let r=this.#y.get(e);i==null&&t!==r||i!=null&&!i(t,r)?(this.#p.set(e,t),us(this.#g,e),this.#t++):(this.#p.delete(e),ce(this.#g,e))}removeProperty(e){let t=this.#y.has(e);this.#p.has(e)?(this.#p.delete(e),t||ce(this.#g,e)):t&&(us(this.#g,e),this.#t++)}#d=[];#f=new Set;createEvent(e,t,i){this.#d.push({type:e,data:t}),i?.forEach(r=>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 se.StructuralChanges:i?e.push(this.makeCreateEntityChange()):n||(this.#u!==void 0&&!(this.#u===Be&&this.#o===void 0)?e.push(this.makeSetParentChange()):this.#h!==void 0&&this.#h!==this.#a&&e.push(this.makeUpdateOrderChange()),this.#c!==void 0&&this.#c!==this.#n&&e.push(this.makeChangeToken()));break;case se.ContentUpdates:!i&&r&&this.#g.length>0&&e.push(this.makeChangePropertyChange()),this.#d.length>0&&e.push(this.makeEvents());break;case se.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={type:E.CreateEntities,uuid:this.#e,token:this.#c};if(this.#n=this.#c,this.#u!==void 0){let t=this.#u===Be?void 0:this.#u;this.#o=t,t!==void 0&&(e.parentUuid=t)}return this.#p.size>0&&(e.properties=Array.from(this.#p.entries()).filter(([,t])=>t!==void 0),e.properties.forEach(([t,i])=>this.#y.set(t,i))),this.#h!==void 0&&this.#h!==this.#a&&(e.order=this.#a=this.#h),this.#l&&(e.autoDestructionOnParentRemoval=!0),e}makeDestroyEntityChange(){return{type:E.DestroyEntities,uuid:this.#e}}makeSetParentChange(){this.#o=this.#u===Be?void 0:this.#u;let e={type:E.SetParent,uuid:this.#e,parentUuid:this.#o};return this.#h!==void 0&&this.#h!==this.#a&&(e.order=this.#a=this.#h),e}makeUpdateOrderChange(){return this.#a=this.#h??0,{type:E.UpdateOrder,uuid:this.#e,order:this.#a}}makeChangeToken(){return this.#n=this.#c??ie,{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 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 bi=s=>{if(!(s===void 0||s.length===0))return s.filter(e=>e.length===1||e[1]!==void 0)},ds=(s,e)=>{if(s===e||e===void 0)return s;if(s===void 0)return bi(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 bi(s)};var Tt=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=ds(i.properties,t)}changeToken({uuid:e,token:t}){this.getComponentState(e).token=t||ie}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,r.order=i??0}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||ie,parentUuid:i,order:r??0,properties:ds(void 0,n),...o?{autoDestructionOnParentRemoval:!0}:{}})}};var F=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=Se(e),i=s.getContextsMap();return i.has(t)?i.get(t):new s(t)}#e=new Map;#t=[];#s=new Tt;constructor(e=Ee){let t=Se(e),i=s.getContextsMap();if(i.has(t))return i.get(t);this.ns=t,i.set(t,this)}addComponent(e){let t;this.#e.has(e.uuid)?(t=this.#e.get(e.uuid),t.component=e,t.children=[]):(t={component:e,children:[],changes:new Ve(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.#n(e,this.#t),this.#o=void 0}hasComponent(e){return this.#e.has(e.uuid)}hasComponents(){return this.#e.size>0}isRootComponent(e){return this.#t.includes(e.uuid)}destroyComponent(e){if(this.hasComponent(e)){let t=this.#e.get(e.uuid);t.children.slice(0).forEach(i=>this.#e.get(i)?.component.removeFromParent()),t.changes.destroy(),this.#o=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),r=this.#e.get(t.uuid),n=r.children.indexOf(e);n!==-1&&(r.children.splice(n,1),i.changes.setParent(void 0)),this.#n(i.component,this.#t),this.#o=void 0}}moveToRoot(e){let t=this.#e.get(e);t&&(t.changes?.setParent(void 0),this.#n(t.component,this.#t)),this.#o=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.#n(t,i.children),this.#e.get(t.uuid)?.changes.setParent(e.uuid),ce(this.#t,t.uuid),this.#o=void 0;else throw new Error(`the view component ${e.uuid} cannot have a child added to it because the component do not exist!`)}removeSubTree(e){let t=this.#e.get(e);t&&(t.children.slice(0).forEach(i=>this.removeSubTree(i)),this.destroyComponent(t.component),this.#r(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){if(e.parent){let t=this.#e.get(e.parent.uuid);ce(t.children,e.uuid),this.#n(e,t.children)}else ce(this.#t,e.uuid),this.#n(e,this.#t);this.#e.get(e.uuid)?.changes.changeOrder(e.order),this.#o=void 0}traverseLevelOrderBFS(){return this.#a().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.#i();for(let r of i)r.buildChangeTrail(t,se.StructuralChanges);for(let r of i)r.buildChangeTrail(t,se.ContentUpdates);for(let r of i)r.buildChangeTrail(t,se.Removal),(r.isDestroyed||r.isNew&&!r.isCreated)&&this.#r(r.uuid),e&&r.clear();return this.#s.write(t),t}reCreateChanges(){if(!this.#s.isEmpty()){this.buildChangeTrails(!1);for(let[e,t]of this.#s){let i=this.#e.get(e);if(i){let r=new Ve(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.#s.clear(),this.broadcastEvent(oi)}}clear(){if(this.#o=void 0,this.#s.clear(),this.#t.slice(0).forEach(e=>this.removeSubTree(e)),this.#t.length!==0)throw new Error("component-context panic: #rootComponents is not empty!");if(this.#e.size!==0)throw new Error("component-context panic: #components is not empty!")}#r(e){this.#e.has(e)&&(this.#e.delete(e),ce(this.#t,e),this.#o=void 0)}#i(){return this.#a().filter(e=>e.changes.hasChanges()).map(e=>e.changes)}#n(e,t){if(t.length===0){t.push(e.uuid);return}if(t.includes(e.uuid))return;let i=t.length,r=new Array(i);if(r[0]=this.#e.get(t[0]).component,e.order<r[0].order){t.unshift(e.uuid);return}if(i===1){t.push(e.uuid);return}let n=i-1;if(r[n]=this.#e.get(t[n]).component,e.order>=r[n].order){t.push(e.uuid);return}if(i===2){t.splice(1,0,e.uuid);return}for(let o=n-1;o>=1;o--)if(r[o]=this.#e.get(t[o]).component,e.order>=r[o].order){t.splice(o+1,0,e.uuid);return}}#o;#a(){if(this.#o)return this.#o;let e=new Map,t=(i,r)=>{let n=this.#e.get(i);if(n!=null){e.has(r)?e.get(r).push(n):e.set(r,[n]);for(let o of n.children)t(o,r+1)}};return this.#t.forEach(i=>t(i,0)),this.#o=Array.from(e.entries()).sort((i,r)=>i[0]-r[0]).flatMap(([,i])=>i),this.#o}};function Ue(s){return function(e,t){let i=s?.name||t.name,r=!!(s?.readAsValue??!1);return{get(){let n=U(this,i);if(n)return r?n.value:n.get()},set(n){U(this,i)?.set(n)},init(n){let o=p(n,s);return ri(this,i,o),te.findOrCreate(this).attachSignalByName(i,o),o.value}}}}var z="ConsoleLogger",I=`${z}Storage`,Rr=!!(globalThis.location?.host?.startsWith("localhost")??!1),qe="localStorage"in globalThis,Ot=Symbol.for(z),wi=!1,Ci=s=>{if(typeof s=="boolean")return s;switch(s.toLowerCase()){case"true":case"yes":case"on":return!0;default:return!1}},ps=s=>[qe?z:void 0,...Array.isArray(s)?s:[s]].filter(Boolean).join(".");function fs(s,e=void 0,t){let i=ps(s),r=qe?localStorage.getItem(i):globalThis[I]?.[i];return r!=null?e(r):t}function Ge(s,e){qe?localStorage.setItem(ps(s),e):(globalThis[I]==null&&(globalThis[I]={},console.debug(`${z}: Initialize`,{[I]:globalThis[I]})),globalThis[I][ps(s)]=e)}var D=class s{constructor(e){this.enable=!0,this.namespace=(e||"").trim()||z,wi||(s.loadConfig(),wi=!0);let t=[this.namespace,"enable"];this.enable=fs(t,Ci,this.enable),Ge(t,qe?this.enable?"true":"false":this.enable)}static{this.sharedConfig={enable:Rr,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(){qe?(["enable","debug","info","warn"].forEach(e=>{this.sharedConfig[e]=fs(e,Ci,this.sharedConfig[e])}),["debug","info","warn","error"].forEach(e=>{this.sharedStyles[e]=fs(["styles",e],void 0,this.sharedStyles[e])}),s.isDebug&&console.debug(`${z}: Load config from localStorage`,s.sharedConfig),globalThis[z]?.[Ot]||(globalThis[z]??={[Ot]:!0,get enable(){return s.sharedConfig.enable},set enable(e){s.sharedConfig.enable=e,Ge("enable",e?"true":"false")},get debug(){return s.sharedConfig.debug},set debug(e){s.sharedConfig.debug=e,Ge("debug",e?"true":"false")},get info(){return s.sharedConfig.info},set info(e){s.sharedConfig.info=e,Ge("info",e?"true":"false")},get warn(){return s.sharedConfig.warn},set warn(e){s.sharedConfig.warn=e,Ge("warn",e?"true":"false")}})):globalThis[I]?.[Ot]||(globalThis[I]={[Ot]:!0,...s.sharedConfig,...globalThis[I]},s.sharedConfig=globalThis[I],s.isDebug&&console.debug(`${z}: Load config from ${I}`,globalThis[I]))}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 Lr=Object.create,vs=Object.defineProperty,Dr=Object.getOwnPropertyDescriptor,Si=(s,e)=>(e=Symbol[s])?e:Symbol.for("Symbol."+s),Le=s=>{throw TypeError(s)},Nr=(s,e,t)=>e in s?vs(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,Ei=(s,e)=>vs(s,"name",{value:e,configurable:!0}),_r=s=>[,,,Lr(s?.[Si("metadata")]??null)],ki=["class","method","getter","setter","accessor","field","value","get","set"],He=s=>s!==void 0&&typeof s!="function"?Le("Function expected"):s,$r=(s,e,t,i,r)=>({kind:ki[s],name:e,metadata:i,addInitializer:n=>t._?Le("Already initialized"):r.push(He(n||null))}),Ai=(s,e)=>Nr(e,Si("metadata"),s[3]),xt=(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},Pi=(s,e,t,i,r,n)=>{var o,a,f,m,P,c=e&7,j=!!(e&8),C=!!(e&16),M=c>3?s.length+1:c?j?1:2:0,l=ki[c+5],h=c>3&&(s[M-1]=[]),d=s[M]||(s[M]=[]),u=c&&(!C&&!j&&(r=r.prototype),c<5&&(c>3||!C)&&Dr(c<4?r:{get[t](){return b(this,n)},set[t](v){return $(this,n,v)}},t));c?C&&c<4&&Ei(n,(c>2?"set ":c>1?"get ":"")+t):Ei(r,t);for(var g=i.length-1;g>=0;g--)m=$r(c,t,f={},s[3],d),c&&(m.static=j,m.private=C,P=m.access={has:C?v=>Wr(r,v):v=>t in v},c^3&&(P.get=C?v=>(c^1?b:Mt)(v,r,c^4?n:u.get):v=>v[t]),c>2&&(P.set=C?(v,B)=>$(v,r,B,c^4?n:u.set):(v,B)=>v[t]=B)),a=(0,i[g])(c?c<4?C?n:u[l]:c>4?void 0:{get:u.get,set:u.set}:r,m),f._=1,c^4||a===void 0?He(a)&&(c>4?h.unshift(a):c?C?n=a:u[l]=a:r=a):typeof a!="object"||a===null?Le("Object expected"):(He(o=a.get)&&(u.get=o),He(o=a.set)&&(u.set=o),He(o=a.init)&&h.unshift(o));return c||Ai(s,r),u&&vs(r,t,u),C?c^4?n:u:r},ms=(s,e,t)=>e.has(s)||Le("Cannot "+t),Wr=(s,e)=>Object(e)!==e?Le('Cannot use the "in" operator on this value'):s.has(e),b=(s,e,t)=>(ms(s,e,"read from private field"),t?t.call(s):e.get(s)),G=(s,e,t)=>e.has(s)?Le("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(s):e.set(s,t),$=(s,e,t,i)=>(ms(s,e,"write to private field"),i?i.call(s,t):e.set(s,t),t),Mt=(s,e,t)=>(ms(s,e,"access private method"),t),Ti,Oi,T,re,Re,Qe,Ye,ke,de,bs,ws,Rt,gs,Ke,ys,xi;Oi=[Ue()],Ti=[Ue()];var fe=class ue{constructor(){G(this,Ke),G(this,T),G(this,re),G(this,Re,!1),G(this,Qe,!1),G(this,Ye,!1),G(this,ke),this.logger=new D("ShadowEnv"),this.ns$=p(),G(this,bs,xt(de,8,this,!1)),xt(de,11,this),G(this,ws,xt(de,12,this,!1)),xt(de,15,this),G(this,Rt,!1),this.ready=async()=>this.isReady?this:Ae(this,ue.ContextCreated),G(this,gs,()=>{b(this,Re)&&Mt(this,Ke,ys).call(this)});let e=this;ee(e,ue.ContextCreated),w(e,ue.ContextLost,Q.AAA,()=>{he(e,ue.ContextCreated)}),S(()=>{if(this.viewReady&&this.proxyReady)return this.view.reCreateChanges(),y(e,ue.ContextCreated,e),b(this,Qe)&&($(this,Qe,!1),Mt(this,Ke,ys).call(this)),()=>{y(e,ue.ContextLost,e)}},[U(this,"viewReady"),U(this,"proxyReady")])}static get(e){if(e!=null)return globalThis.__shadowEnvs?.get(e)}get isDestroyed(){return b(this,Rt)}get view(){return b(this,T)}set view(e){e!==b(this,T)&&(b(this,T)&&b(this,T).ns&&globalThis.__shadowEnvs&&globalThis.__shadowEnvs.delete(b(this,T).ns),$(this,T,e??void 0),b(this,T)&&b(this,T).ns&&(globalThis.__shadowEnvs??=new Map,globalThis.__shadowEnvs.has(b(this,T).ns)&&globalThis.__shadowEnvs.get(b(this,T).ns)!==this&&this.logger.isWarn&&this.logger.warn("overwrite a namespace already in use",b(this,T).ns,globalThis.__shadowEnvs.get(b(this,T).ns)),globalThis.__shadowEnvs.set(b(this,T).ns,this)),this.viewReady=!!e)}get envProxy(){return b(this,re)}set envProxy(e){if(e!==b(this,re)){let t=b(this,re);$(this,re,e??void 0),b(this,re)&&(b(this,re).onMessageToView=Mt(this,Ke,xi).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!!(b(this,T)&&b(this,re)&&this.proxyReady&&!this.isDestroyed)}sync(){if(!this.isReady){$(this,Qe,!0);return}b(this,Re)||($(this,Re,!0),queueMicrotask(b(this,gs)))}syncWait(){return $(this,Ye,!0),this.sync(),b(this,ke)?b(this,ke):($(this,ke,Ae(this,ue.AfterSync).then(e=>($(this,ke,void 0),e))),b(this,ke))}destroy(){let e=b(this,T)?.ns;this.envProxy?.destroy(),this.envProxy=void 0,this.view=void 0,e&&globalThis.__shadowEnvs.has(e)&&globalThis.__shadowEnvs.get(e)===this&&globalThis.__shadowEnvs.delete(e),ze(this),A(this),$(this,Rt,!0),Object.freeze(this)}};de=_r(null);T=new WeakMap;re=new WeakMap;Re=new WeakMap;Qe=new WeakMap;Ye=new WeakMap;ke=new WeakMap;bs=new WeakMap;ws=new WeakMap;Rt=new WeakMap;gs=new WeakMap;Ke=new WeakSet;ys=async function(){if($(this,Re,!1),this.isReady){let s=this.view.buildChangeTrails();if(s.length>0)try{let e=b(this,Ye);$(this,Ye,!1),await this.envProxy.applyChangeTrail(s,e)}catch(e){this.logger.error("failed to apply change trail",e)}finally{y(this,fe.AfterSync,s)}}};xi=function(s){this.logger.isDebug&&this.logger.debug("onMessageToView",s.type,s.data),this.view?.dispatchMessage(s.uuid,s.type,s.data,s.traverseChildren)};Pi(de,4,"viewReady",Oi,fe,bs);Pi(de,4,"proxyReady",Ti,fe,ws);Ai(de,fe);fe.AfterSync="afterSync";fe.ContextLost="contextLost";fe.ContextCreated="contextCreated";var Y=fe;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"],jr=()=>{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()},Mi=()=>globalThis?.crypto?.randomUUID?.()??jr();var Je=class extends Error{constructor(e){super(e),this.name="ViewComponentError"}},Lt=class s{#e;#t;#s;#r;#i=0;#n;get uuid(){return this.#e}get token(){return this.#t}set token(e){e??=ie,e!==this.#t&&(this.#t=e,this.#s?.changeToken(this,e))}get parent(){return this.#r}set parent(e){if(e){if(e.#s!==this.#s)throw new Je("cannot set parent from different context");e.addChild(this)}else this.removeFromParent()}get context(){return this.#s}set context(e){this.#s!=e&&(this.#s&&this.destroy(),this.#s=e,e&&e.addComponent(this))}get order(){return this.#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){O(this),t instanceof s&&(t={parent:t}),this.#e=t?.uuid??Mi(),this.#t=e,this.#i=t?.order??0,this.#r=t?.parent,this.#n=t?.autoDestructionOnParentRemoval??!1;let i=t?.context??F.get();if(this.#r&&this.#r.#s!==i)throw new Je("cannot set parent from different context");this.context=i}isChildOf(e){return this.#r===e}removeFromParent(){this.#r?(this.#s?.removeFromParent(this.uuid,this.#r),this.#r=void 0):this.#s?.moveToRoot(this.uuid)}addChild(e){if(e.#s!==this.#s)throw new Je("cannot add a child from another context");e.isChildOf(this)||(e.removeFromParent(),e.#r=this,this.#s.addToChildren(this,e))}setProperty(e,t,i){this.#s.setProperty(this,e,t,i)}removeProperty(e){this.#s.removeProperty(this,e)}dispatchShadowObjectsEvent(e,t,i){this.#s.dispatchShadowObjectsEvent(this,e,t,i)}dispatchEvent(e,t,i){if(y(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 Xe=new Set(["on","true","yes","local","1"]);var Ri=s=>Se(s.getAttribute("ns")),et=(s,e)=>{if(s.hasAttribute(e)){let t=s.getAttribute(e)?.trim()?.toLowerCase()||"1";return Xe.has(t)}return!1};var Li=(s,e)=>{e.set(Ri(s))},Cs=new Set,Es=!1,Fr=s=>{Cs.add(s),Es||(Es=!0,queueMicrotask(()=>{Es=!1;for(let e of Cs)Y.get(e)?.sync();Cs.clear()}))},pe=class extends HTMLElement{constructor(){super(),this.isShaeElement=!0,this.ns$=p(Ee),this.ns$.onChange(e=>{typeof e=="string"&&e.length>0?this.getAttribute("ns")!==e&&this.setAttribute("ns",e):this.removeAttribute("ns")}),Li(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(Se(e))}attributeChangedCallback(e){e==="ns"&&Li(this,this.ns$)}syncShadowObjects(){Fr(this.ns)}};var Dt=class extends pe{constructor(){super(),this.isShaeEntElement=!0,this.componentContext$=p(),this.viewComponent$=p(),this.token$=p(),this.forwardCustomEvents$=p(!1),this.#n=!0,this.#y=()=>{let e=this.findShadowRootHost();e!=null&&this.dispatchEvent(new CustomEvent(lt,{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.#c()},this.#g=e=>{let t=e.detail?.requester;t!==this&&t?.isShaeEntElement&&t.ns===this.ns&&(e.stopPropagation(),t.#h(this))},this.ns$.onChange(e=>{this.componentContext$.set(F.get(e)),this.isConnected&&this.#c()}),this.#d(),this.token$.onChange(e=>{e==null?this.removeAttribute(oe):this.getAttribute(oe)!==e&&this.setAttribute(oe,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=w(e,F.ReRequestParentRoots,()=>this.#l()),i=e.context?.ns;return()=>{t(),e.destroy(),i&&i!==this.ns?Y.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!==F.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=[...pe.observedAttributes,oe,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 Lt(i,{context:t}),this.viewComponent$.set(r)),this.syncShadowObjects()});this.#t=()=>{e()}}#r(){this.#t?.(),this.#t=void 0}#i;#n;findShadowRootHost(){if(this.#n){this.#n=!1;let e=this;for(;e;){if(e.parentElement==null){let t=e.parentNode;t&&(this.#i=t.host);break}e=e.parentElement}}return this.#i}getParentNodeForObserver(){let e=this.parentNode;return e||(e.host??e)}connectedCallback(){this.#n=!0,this.addEventListener("slotchange",this.#y,{capture:!1,passive:!1}),this.addEventListener(ht,this.#g,{capture:!1,passive:!1}),this.#s(),Et(()=>this.#d()),Et(()=>this.#f()),this.componentContext==null&&this.componentContext$.set(F.get(this.ns)),this.#c(),this.componentContext?.dispatchReRequestParentRoots(),this.#o(),this.syncShadowObjects()}#o(){this.#a();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.#a(),this.onParentChanged(this.getParentNodeForObserver(),e);break}}}),this.#e.observe(e,{childList:!0,subtree:!1,attributes:!1}))}onParentChanged(e,t){this.#h(void 0),this.#c()}#a(){this.#e?.disconnect(),this.#e=void 0}attributeChangedCallback(e){super.attributeChangedCallback(e),e===oe?this.#d():e===q&&this.#f()}disconnectedCallback(){this.#n=!0,this.#a(),this.removeEventListener("slotchange",this.#y,{capture:!1}),this.removeEventListener(ht,this.#g,{capture:!1}),this.#h(void 0),this.componentContext$.set(void 0),this.syncShadowObjects(),this.#r()}#l(){this.isConnected&&(this.#h(void 0),this.#c())}#c(){this.dispatchEvent(new CustomEvent(ht,{bubbles:!0,composed:!0,detail:{requester:this}}))}#u;#h(e){if(this.entParentNode!==e)if(this.entParentNode&&this.entParentNode.removeEventListener(lt,this.#p,{capture:!1}),this.entParentNode=e,this.entParentNode&&this.entParentNode.addEventListener(lt,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.#c()}),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(oe)){let e=this.getAttribute(oe)?.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(ct,Dt);var Ir=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"]),Nt=class extends HTMLElement{constructor(){super(),this.isShaeEntElement=!0,this.entNode$=p(),this.viewComponent$=p(),this.name$=p(),this.valueIn$=p(),this.valueOut$=p(),this.type$=p(),this.shouldTrim$=p(!0),this.logger=new D("ShaePropElement"),this.#e=()=>{this.entNode$.set(Ir(this))},this.#t=()=>{queueMicrotask(()=>{this.isConnected||this.entNode$.set(void 0)})},this.#s=()=>{this.name$.set(this.getAttribute(ft)?.trim()??void 0)},this.#r=()=>{this.valueIn$.set(this.getAttribute(pt))},this.#i=()=>{let e=this.getAttribute(gt)?.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(!et(this,yt))},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=Xe.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));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=>Xe.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)}),N(()=>{this.#s(),this.#r(),this.#i(),this.#n()}),this.style.display="contents"}static{this.observedAttributes=[ft,pt,gt,yt]}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(){N(()=>{this.#e(),this.#s(),this.#r(),this.#i(),this.#n()})}attributeChangedCallback(e){switch(e){case ft:this.#s();break;case pt:this.#r();break;case gt:this.#i();break;case yt:this.#n();break}}disconnectedCallback(){this.#t()}#e;#t;#s;#r;#i;#n};customElements.whenDefined(ct).then(()=>customElements.define(_s,Nt));var Ss=null,tt=class s{static{this.OnFrame=Symbol("onFrame")}#e=0;#t=0;constructor(){if(Ss)return Ss;O(this),Ss=this}start(e){if(e!=null)return es(this)===0&&this.#r(),w(this,s.OnFrame,e),this.#t++,()=>{this.stop(e)}}stop(e){A(this,s.OnFrame,e),es(this)===0&&this.#i()}#s=e=>{y(this,s.OnFrame,e),this.#r()};#r(){this.#e=requestAnimationFrame(this.#s)}#i(){cancelAnimationFrame(this.#e),this.#e=0}};async function ks(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=>ks(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 _t=s=>s??void 0;var As=Symbol("onCreate"),J=Symbol("onDestroy"),Di=Symbol("onParentChanged"),$t=Symbol("onViewEvent");var Br=Object.create,Ps=Object.defineProperty,Vr=Object.getOwnPropertyDescriptor,$i=(s,e)=>(e=Symbol[s])?e:Symbol.for("Symbol."+s),Ne=s=>{throw TypeError(s)},Ur=(s,e,t)=>e in s?Ps(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,Ni=(s,e)=>Ps(s,"name",{value:e,configurable:!0}),Gr=s=>[,,,Br(s?.[$i("metadata")]??null)],Wi=["class","method","getter","setter","accessor","field","value","get","set"],st=s=>s!==void 0&&typeof s!="function"?Ne("Function expected"):s,qr=(s,e,t,i,r)=>({kind:Wi[s],name:e,metadata:i,addInitializer:n=>t._?Ne("Already initialized"):r.push(st(n||null))}),ji=(s,e)=>Ur(e,$i("metadata"),s[3]),_i=(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},Hr=(s,e,t,i,r,n)=>{var o,a,f,m,P,c=e&7,j=!!(e&8),C=!!(e&16),M=c>3?s.length+1:c?j?1:2:0,l=Wi[c+5],h=c>3&&(s[M-1]=[]),d=s[M]||(s[M]=[]),u=c&&(!C&&!j&&(r=r.prototype),c<5&&(c>3||!C)&&Vr(c<4?r:{get[t](){return W(this,n)},set[t](v){return rt(this,n,v)}},t));c?C&&c<4&&Ni(n,(c>2?"set ":c>1?"get ":"")+t):Ni(r,t);for(var g=i.length-1;g>=0;g--)m=qr(c,t,f={},s[3],d),c&&(m.static=j,m.private=C,P=m.access={has:C?v=>Qr(r,v):v=>t in v},c^3&&(P.get=C?v=>(c^1?W:ge)(v,r,c^4?n:u.get):v=>v[t]),c>2&&(P.set=C?(v,B)=>rt(v,r,B,c^4?n:u.set):(v,B)=>v[t]=B)),a=(0,i[g])(c?c<4?C?n:u[l]:c>4?void 0:{get:u.get,set:u.set}:r,m),f._=1,c^4||a===void 0?st(a)&&(c>4?h.unshift(a):c?C?n=a:u[l]=a:r=a):typeof a!="object"||a===null?Ne("Object expected"):(st(o=a.get)&&(u.get=o),st(o=a.set)&&(u.set=o),st(o=a.init)&&h.unshift(o));return c||ji(s,r),u&&Ps(r,t,u),C?c^4?n:u:r},Ts=(s,e,t)=>e.has(s)||Ne("Cannot "+t),Qr=(s,e)=>Object(e)!==e?Ne('Cannot use the "in" operator on this value'):s.has(e),W=(s,e,t)=>(Ts(s,e,"read from private field"),t?t.call(s):e.get(s)),Wt=(s,e,t)=>e.has(s)?Ne("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(s):e.set(s,t),rt=(s,e,t,i)=>(Ts(s,e,"write to private field"),i?i.call(s,t):e.set(s,t),t),ge=(s,e,t)=>(Ts(s,e,"access private method"),t),Fi,X,ye,nt,Os,ne,jt,it,De="value";Fi=[Ue({name:De})];var Z=class{constructor(e){Wt(this,ne),Wt(this,X,[]),Wt(this,ye),Wt(this,Os,_i(nt,8,this)),_i(nt,11,this),this.value$=void 0,ee(this,De),this.value$=U(this,De),this.value$.onChange(t=>y(this,De,t)),e&&this.add(...e)}add(...e){return W(this,X).push(...e),ge(this,ne,it).call(this),ge(this,ne,jt).call(this,e)}unshift(...e){return W(this,X).unshift(...e),ge(this,ne,it).call(this),ge(this,ne,jt).call(this,e)}remove(...e){ge(this,ne,jt).call(this,e)()}clear(){W(this,X).length=0,ge(this,ne,it).call(this)}dispose(){this.clear(),W(this,ye)?.destroy(),rt(this,ye,void 0),he(this,De),A(this),this.value$.destroy(),ze(this)}};nt=Gr(null);X=new WeakMap;ye=new WeakMap;Os=new WeakMap;ne=new WeakSet;jt=function(s){return()=>{for(let e of s){let t=W(this,X).indexOf(e);t!==-1&&W(this,X).splice(t,1)}ge(this,ne,it).call(this)}};it=function(){W(this,ye)?.destroy(),W(this,X).length===0?(rt(this,ye,void 0),this.value=void 0):(rt(this,ye,S(()=>{let s;for(let e of W(this,X)){let t=xe(e);if(t!=null){s=t;break}}this.value=s},W(this,X))),W(this,ye).run())};Hr(nt,4,"value",Fi,Z,Os);ji(nt,Z);Z.Value=De;var xs=new Map,Ms=!1,Kr=(s,e)=>{xs.set(s,e),Ms||(Ms=!0,queueMicrotask(()=>{Ms=!1;let t=Array.from(xs.entries());xs.clear();for(let[i,r]of t)i.set(r)}))},Ft=class{#e;#t;#s=new Pt;#r=new Map;#i=new Map;#n;#o;#a=new Set;#l=[];#c=0;get kernel(){return this.#e}get uuid(){return this.#t}get order(){return this.#c}set order(e){this.#c!==e&&(this.#c=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.#o=t,this.#o&&this.#o.addChild(this),this.#p()}}get parent(){return!this.#o&&this.#n&&(this.#o=this.#e.getEntity(this.#n)),this.#o}set parent(e){this.parentUuid=e?.uuid}get hasParent(){return!!this.#n}get children(){return this.#l}constructor(e,t){this.#e=e,this.#t=t,k(this,J,Q.Min,this)}traverse(e){e(this);for(let t of this.#l)t.traverse(e)}[J](){this.#s.clear(),A(this),this.#h?.();for(let e of this.#i.values())e.cleanup(),e.signal.destroy();this.#i.clear();for(let e of this.#r.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.#o=void 0,this.#a.clear(),this.#l.length=0}addChild(e){if(this.#l.length===0){this.#a.add(e.uuid),this.#l.push(e);return}if(this.#a.has(e.uuid))throw new Error(`child with uuid: ${e.uuid} already exists! parentUuid: ${this.uuid}`);this.#a.add(e.uuid),this.#l.push(e),this.resortChildren();for(let[,t]of e.#r)e.#v(t)}resortChildren(){this.#l.sort((e,t)=>e.order-t.order)}removeChild(e){this.#a.has(e.uuid)&&(this.#a.delete(e.uuid),this.#l.splice(this.#l.indexOf(e),1))}removeFromParent(){if(this.#o){this.#o.removeChild(this),this.#o=void 0,this.#n=void 0;for(let[,e]of this.#r)e.unsubscribeFromParent&&(e.unsubscribeFromParent(),e.unsubscribeFromParent=void 0);this.#y()}}#u=!1;#h;get autoDestructionOnParentRemoval(){return this.#u}set autoDestructionOnParentRemoval(e){this.#u!==e&&(this.#u=e,this.#p())}#y(){this.#h&&(this.#h(),this.#h=void 0)}#p(){this.#y(),this.#u&&this.#o&&(this.#h=k(this.#o,J,Q.Max,()=>{this.#h=void 0,this.#e.destroyEntity(this.#t)}))}reSubscribeToParentContexts(){for(let[,e]of this.#r)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)y(this,$t,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(),N(()=>{for(let[t,i]of e)this.setProperty(t,i)})}setProperty(e,t){this.getPropertyWriter(e)(t)}getProperty(e){return xe(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.#r.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.#i.has(e))return this.#i.get(e).signal;let t=this.#e.findOrCreateRootContext(e),i=p(),r=t.add(i);return this.#i.set(e,{cleanup:r,signal:i}),i}#f(e){if(this.#r.has(e))return this.#r.get(e);let t=p(),i=p(),r=p(),n=new Z([i,t]),o=w(n,Z.Value,f=>{Kr(r,f)}),a={name:e,inherited:t,provide:i,context:r,valuePath:n,unsubscribePathValue:o};return this.#r.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 Ii=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]}},It=(s,e)=>{for(let t of e)s.add(t)},Yr=(s,e)=>{if(s!=null)for(let t of s.constructors)e.add(t)},ot=class{static get(e){return e??Jr}#e=new Map;#t=new Map;#s=new Map;define(e,t){this.#e.has(e)?mi(this.#e.get(e).constructors,t):this.#e.set(e,{token:e,constructors:[t]})}appendRoute(e,t){let i=Ii(e);i?this.#s.has(i.key)?It(this.#s.get(i.key).routes,t):this.#s.set(i.key,{routes:new Set(t),token:i.token}):this.#t.has(e)?It(this.#t.get(e),t):this.#t.set(e,new Set(t))}clearRoute(e){let t=Ii(e);t?this.#s.delete(t.key):this.#t.delete(e)}findTokensByRoute(e,t){let i=new Set([e]),r=this.#t.has(e)?[...this.#t.get(e)]:[];for(;r.length;){let n=r.shift();i.has(n)||(i.add(n),this.#t.has(n)&&r.push(...Array.from(this.#t.get(n)).filter(o=>!i.has(o))))}if(t){for(let o of t)this.#s.has(o)&&It(i,this.#s.get(o).routes);let n;do{n=i.size;for(let o of new Set(i))for(let a of t){let f=`${o}@${a}`;this.#s.has(f)&&It(i,this.#s.get(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)Yr(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()}},Jr=new ot;var zi=s=>s.displayName||s.name,Bi=!1,Vi=!1,Ui=!1,Gi=!1,qi=!1,zt=class{constructor(e){this.logger=new D("Kernel"),this.#e=new Map,this.#t=new Set,this.#i=!0,this.#n=new Map,O(this),this.registry=ot.get(e)}#e;#t;#s;#r;#i;#n;getEntity(e){let t=this.#e.get(e)?.entity;if(!t)throw new Error(`entity with uuid "${e}" not found!`);return t}hasEntity(e){return this.#e.has(e)}traverseLevelOrderBFS(e=!1){if(this.#i){let t=new Map,i=(r,n)=>{let o=this.getEntity(r);t.has(n)?t.get(n).push(o):t.set(n,[o]);for(let a of o.children)i(a.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.#r=this.#s.slice().reverse(),this.#i=!1}return e?this.#r:this.#s}getEntityGraph(){return Array.from(this.#t).map(e=>this.getEntityGraphNode(e))}getEntityGraphNode(e){if(!this.#e.has(e))return;let{token:t,entity:i}=this.#e.get(e);return{token:t,entity:i,props:Object.fromEntries(i.propEntries()),children:i.children.map(r=>this.getEntityGraphNode(r.uuid))}}upgradeEntities(){let e=new Map;for(let t of this.traverseLevelOrderBFS(!0))e.set(t.uuid,this.updateShadowObjects(t.uuid,2));for(let t of this.traverseLevelOrderBFS(!1))this.updateShadowObjects(t.uuid,1,e.get(t.uuid));e.clear()}run(e){this.logger.isDebug&&this.logger.debug("sync",e),N(()=>{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.#i=!0;break;case E.DestroyEntities:this.destroyEntity(e.uuid),this.#i=!0;break;case E.SetParent:this.setParent(e.uuid,e.parentUuid,e.order),this.#i=!0;break;case E.UpdateOrder:this.updateOrder(e.uuid,e.order),this.#i=!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 Ft(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(e)}destroyEntity(e){if(!this.#e.has(e))return;let{entity:t,usedConstructors:i}=this.#e.get(e),r=[...t.children];for(let n of r)n.autoDestructionOnParentRemoval?this.destroyEntity(n.uuid):(n.removeFromParent(),this.#t.add(n.uuid));t.removeFromParent(),y(t,J,t),i.clear(),this.#e.delete(t.uuid),this.#t.delete(t.uuid),this.#i=!0}setParent(e,t,i=0){let r=this.getEntity(e);if(!(r.parentUuid===t&&r.order===i)){if(t&&!this.#e.has(t))throw new Error(`entity with uuid "${t}" not found!`);r.removeFromParent(),r.order=i,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:i,entity:r}),y(r,Di,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){if(!this.#e.has(e))return;let i=this.#e.get(e);i.token!==t&&(i.token=t,this.updateShadowObjects(e))}dispatchMessageToView(e){queueMicrotask(()=>{y(this,Me,e)})}updateShadowObjects(e,t=0,i){let r=this.#e.get(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,j=new Map,C=(l,h)=>{!qi&&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.'),qi=!0);let d=typeof h=="function"?{compare:h}:h,u=c.get(l);if(u===void 0){u=p(void 0,d).get,c.set(l,u),j.set(l,d?.compare);let g=_(t.entity.getPropertyReader(l),u);r.add(g.destroy.bind(g))}else d?.compare!=null&&j.get(l)!==d.compare&&console.warn(`[shadow-objects] useProperty("${l}"): 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 u},M=O(new e({entity:t.entity,provideContext(l,h,d){!Bi&&d!=null&&typeof d=="function"&&(console.warn('[shadow-objects] Deprecation Warning: The "isEqual" option of "provideContext()" is now passed as {compare} argument. Please update your code accordingly.'),Bi=!0);let u=typeof d=="function"?{compare:d}:d,g=m.get(l);if(g==null){let v=Ce(h),B=v?void 0:_t(h);if(g=p(B,u?.compare?{compare:u.compare}:void 0),v){let $e=_(h,g);r.add($e.destroy.bind($e))}let _e=_(g,t.entity.provideContext(l));r.add(_e.destroy.bind(_e)),m.set(l,g)}return g!=null&&(u?.clearOnDestroy??!0)&&r.add(()=>{g.set(void 0)}),g},provideGlobalContext(l,h,d){!Vi&&d!=null&&typeof d=="function"&&(console.warn('[shadow-objects] Deprecation Warning: The "isEqual" option of "provideGlobalContext()" is now passed as {compare} argument. Please update your code accordingly.'),Vi=!0);let u=typeof d=="function"?{compare:d}:d,g=P.get(l);if(g==null){let v=Ce(h),B=v?void 0:_t(h);if(g=p(B,u?.compare?{compare:u.compare}:void 0),v){let $e=_(h,g);r.add($e.destroy.bind($e))}let _e=_(g,t.entity.provideGlobalContext(l));r.add(_e.destroy.bind(_e)),P.set(l,g)}return g!=null&&(u?.clearOnDestroy??!0)&&r.add(()=>{g.set(void 0)}),g},useContext(l,h){!Ui&&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.'),Ui=!0);let d=typeof h=="function"?{compare:h}:h,u=n.get(l);if(u===void 0){u=p(void 0,d).get,n.set(l,u),o.set(l,d?.compare);let g=_(t.entity.useContext(l),u);r.add(g.destroy.bind(g))}else d?.compare!=null&&o.get(l)!==d.compare&&console.warn(`[shadow-objects] useContext("${String(l)}"): 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 u},useParentContext(l,h){!Gi&&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.'),Gi=!0);let d=typeof h=="function"?{compare:h}:h,u=a.get(l);if(u===void 0){u=p(void 0,d).get,a.set(l,u),f.set(l,d?.compare);let g=_(t.entity.useParentContext(l),u);r.add(g.destroy.bind(g))}else d?.compare!=null&&f.get(l)!==d.compare&&console.warn(`[shadow-objects] useParentContext("${String(l)}"): 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 u},dispatchMessageToView(l,h,d,u=!1){t.entity.dispatchMessageToView(l,h,d,u)},useProperty:C,useProperties(l){let h={};for(let d in l)Object.hasOwn(l,d)&&(h[d]=C(l[d]));return h},createResource(l,h){let d=p(),u=S(()=>{let g=_t(l());return d.set(g),g!==void 0&&h?()=>{h(g),d.set(void 0)}:()=>{d.set(void 0)}});return r.add(()=>{u.destroy(),d.set(void 0),L(d)}),d},createEffect(...l){let h=S(...l);return r.add(h.destroy),h},createSignal(...l){let h=p(...l);return r.add(()=>{L(h)}),h},createMemo(...l){let h=St(...l);return r.add(()=>{L(h)}),h},on(...l){let[h]=l;if(typeof h=="string"||typeof h=="symbol"||Array.isArray(h)){let u=w(t.entity,...l);return r.add(u),u}let d=w(...l);return r.add(d),Object.assign(()=>{r.delete(d),d()},d)},once(...l){let[h]=l;if(typeof h=="string"||typeof h=="symbol"||Array.isArray(h)){let u=k(t.entity,...l);return r.add(u),u}let d=k(...l);return r.add(d),Object.assign(()=>{r.delete(d),d()},d)},emit(...l){let[h]=l;typeof h=="string"||typeof h=="symbol"||Array.isArray(h)?y(t.entity,...l):y(...l)},onViewEvent(l){let h=w(t.entity,$t,(d,u)=>{l(d,u)});r.add(h)},onDestroy(l){i.add(l)}}));return this.logger.isInfo&&this.logger.info("create shadow-object",zi(e),{shadowObject:M,entity:t.entity}),k(t.entity,J,Q.Low,()=>{this.logger.isInfo&&this.logger.info("destroy shadow-object",zi(e),{shadowObject:M,entity:t.entity});for(let h of i)h();for(let h of r)h();for(let h of n.values())L(h);for(let h of a.values())L(h);for(let h of c.values())L(h);for(let h of m.values())L(h);for(let h of P.values())L(h);i.clear(),r.clear(),n.clear(),a.clear(),c.clear(),m.clear(),P.clear();let l=t.usedConstructors.get(e);l&&(l.delete(M),l.size===0&&t.usedConstructors.delete(e))}),t.usedConstructors.has(e)?t.usedConstructors.get(e).add(M):t.usedConstructors.set(e,new Set([M])),this.attachShadowObject(M,t.entity),M}createShadowObjects(e){let t=this.#e.get(e);this.registry.findConstructors(t.token,t.entity.truthyProps())?.forEach(i=>{this.constructShadowObject(i,t)})}findShadowObjects(e){if(!this.#e.has(e))return[];let{usedConstructors:t}=this.#e.get(e);return Array.from(new Set(Array.from(t.values()).flatMap(i=>Array.from(i))))}attachShadowObject(e,t){w(t,e),typeof e[As]=="function"&&e[As](t)}destroyShadowObject(e,t){typeof e[J]=="function"&&e[J](t),y(e,J,t),A(t,e)}findOrCreateRootContext(e){let t=this.#n.get(e);return t||(t=new Z,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 Bt=s=>(typeof s=="string"&&(s=new URL(s,globalThis.location.href)),s.toString());function Hi(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 Vt=class{constructor(e){this.#e=new Set,this.isLocalEnv=!0,this.disableStructuredClone=!1,this.kernel=new zt(e),w(this.kernel,Me,t=>{if(this.onMessageToView!=null){let{type:i,uuid:r,traverseChildren:n}=t,o=structuredClone(t.data,{transfer:t.transferables});this.onMessageToView({type:i,uuid:r,data:o,traverseChildren:n})}})}#e;get registry(){return this.kernel.registry}start(){return Promise.resolve()}applyChangeTrail(e,t){let i={changeTrail:this.disableStructuredClone?e:Hi(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(Bt(e));t[cs]&&await this.importModule(t[cs])}async importModule(e){return ks(this.kernel,e,this.#e)}destroy(){this.kernel.destroy(),this.registry.clear(),this.#e.clear()}};function Rs(s){let e=new Blob([s],{type:"text/javascript"}),t=URL.createObjectURL(e),i=new Worker(t);return URL.revokeObjectURL(t),i}function Ls(){return Rs(`var _i=Object.defineProperty;var xt=Object.getOwnPropertySymbols;var Fs=Object.prototype.hasOwnProperty,Gs=Object.prototype.propertyIsEnumerable;var Vi=(s,e)=>(e=Symbol[s])?e:Symbol.for("Symbol."+s),$s=s=>{throw TypeError(s)};var ts=(s,e,t)=>e in s?_i(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,ss=(s,e)=>{for(var t in e||(e={}))Fs.call(e,t)&&ts(s,t,e[t]);if(xt)for(var t of xt(e))Gs.call(e,t)&&ts(s,t,e[t]);return s};var Ns=(s,e)=>{var t={};for(var i in s)Fs.call(s,i)&&e.indexOf(i)<0&&(t[i]=s[i]);if(s!=null&&xt)for(var i of xt(s))e.indexOf(i)<0&&Gs.call(s,i)&&(t[i]=s[i]);return t};var y=(s,e,t)=>ts(s,typeof e!="symbol"?e+"":e,t),is=(s,e,t)=>e.has(s)||$s("Cannot "+t);var n=(s,e,t)=>(is(s,e,"read from private field"),t?t.call(s):e.get(s)),d=(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)=>(is(s,e,"write to private field"),i?i.call(s,t):e.set(s,t),t),C=(s,e,t)=>(is(s,e,"access private method"),t);var Mt=(s,e,t,i)=>({set _(r){g(s,e,r,t)},get _(){return n(s,e,i)}});var rs=function(s,e){this[0]=s,this[1]=e},Us=(s,e,t)=>{var i=(c,p,w,A)=>{try{var v=t[c](p),G=(p=v.value)instanceof rs,R=v.done;Promise.resolve(G?p[0]:p).then(S=>G?i(c==="return"?c:"next",p[1]?{done:S.done,value:S.value}:S,w,A):w({value:S,done:R})).catch(S=>i("throw",S,w,A))}catch(S){A(S)}},r=(c,p,w,A)=>a[c]=v=>(p=new Promise((G,R,S)=>(S=()=>i(c,v,G,R),o?o.then(S):S())),A=()=>o===w&&(o=0),o=w=p.then(A,A),p),o,a={};return t=t.apply(s,e),a[Vi("asyncIterator")]=()=>a,r("next"),r("throw"),r("return"),a};var le=(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))(le||{});var js="configure",_s="changeTrail",Vs="destroy",Is="loaded",ns="appliedChangeTrail",Lt="importedModule",Ws="destroyed",ht="messageToView";var Rt="shadowObjects";var $="ConsoleLogger",z=\`\${$}Storage\`,Hs,Ks,Js,Ii=!!((Js=(Ks=(Hs=globalThis.location)==null?void 0:Hs.host)==null?void 0:Ks.startsWith("localhost"))!=null&&Js),ft="localStorage"in globalThis,Tt=Symbol.for($),Qs=!1,qs=s=>{if(typeof s=="boolean")return s;switch(s.toLowerCase()){case"true":case"yes":case"on":return!0;default:return!1}},as=s=>[ft?$:void 0,...Array.isArray(s)?s:[s]].filter(Boolean).join(".");function os(s,e=void 0,t){var o;let i=as(s),r=ft?localStorage.getItem(i):(o=globalThis[z])==null?void 0:o[i];return r!=null?e(r):t}function lt(s,e){ft?localStorage.setItem(as(s),e):(globalThis[z]==null&&(globalThis[z]={},console.debug(\`\${$}: Initialize\`,{[z]:globalThis[z]})),globalThis[z][as(s)]=e)}var ze,ut,m=class m{constructor(e){d(this,ze);this.enable=!0,this.namespace=(e||"").trim()||$,Qs||(m.loadConfig(),Qs=!0);let t=[this.namespace,"enable"];this.enable=os(t,qs,this.enable),lt(t,ft?this.enable?"true":"false":this.enable)}static get isEnabled(){return m.sharedConfig.enable}static get isDebug(){return m.sharedConfig.enable&&m.sharedConfig.debug}static loadConfig(){var e,t,i;ft?(["enable","debug","info","warn"].forEach(r=>{this.sharedConfig[r]=os(r,qs,this.sharedConfig[r])}),["debug","info","warn","error"].forEach(r=>{this.sharedStyles[r]=os(["styles",r],void 0,this.sharedStyles[r])}),m.isDebug&&console.debug(\`\${$}: Load config from localStorage\`,m.sharedConfig),(e=globalThis[$])!=null&&e[Tt]||(t=globalThis[$])!=null||(globalThis[$]={[Tt]:!0,get enable(){return m.sharedConfig.enable},set enable(r){m.sharedConfig.enable=r,lt("enable",r?"true":"false")},get debug(){return m.sharedConfig.debug},set debug(r){m.sharedConfig.debug=r,lt("debug",r?"true":"false")},get info(){return m.sharedConfig.info},set info(r){m.sharedConfig.info=r,lt("info",r?"true":"false")},get warn(){return m.sharedConfig.warn},set warn(r){m.sharedConfig.warn=r,lt("warn",r?"true":"false")}})):(i=globalThis[z])!=null&&i[Tt]||(globalThis[z]=ss(ss({[Tt]:!0},m.sharedConfig),globalThis[z]),m.sharedConfig=globalThis[z],m.isDebug&&console.debug(\`\${$}: Load config from \${z}\`,globalThis[z]))}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){C(this,ze,ut).call(this,"debug",m.sharedStyles.debug,e)}info(...e){C(this,ze,ut).call(this,"info",m.sharedStyles.info,e)}warn(...e){C(this,ze,ut).call(this,"warn",m.sharedStyles.warn,e)}error(...e){C(this,ze,ut).call(this,"error",m.sharedStyles.error,e)}};ze=new WeakSet,ut=function(e,t,i){console[e](\`%c\${this.namespace}\`,t,...i)},m.sharedConfig={enable:Ii,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 Dt=m;var Fe="*",si=1,fs=2,ds=4,ue=Symbol.for("eventize"),Wi="[eventize]",gs=s=>s===Fe,ii=s=>{switch(typeof s){case"string":case"symbol":return!0;default:return!1}},ri=typeof console!="undefined",Qi=ri?console[console.warn?"warn":"log"].bind(console,Wi):()=>{},qi=(s,e,t)=>(Object.defineProperty(s,e,{value:t,configurable:!0}),s),Hi=0,ys=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:Hi++})}isKnown(s){return this.eventNames.has(s)}replayTo(s,e,t=[]){if(gs(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}},ls=(s,e,t,i)=>{if(typeof e=="function"){let r=e.apply(s,t);r!=null&&(i==null||i(r))}},Ki=(s,e,t,i)=>ls(e,e.emit,[s].concat(t),i),Ji=s=>{switch(typeof s){case"function":return si;case"string":case"symbol":return fs;case"object":return ds}},Yi=0,Xi=()=>++Yi,ni=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=Xi(),this.eventName=s,this.isCatchEmAll=gs(s),this.listener=t,this.listenerObject=i,this.priority=e,this.listenerType=Ji(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===Fe||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 si:ls(r,i,e,t),this.callAfterApply&&this.callAfterApply();break;case fs:ls(r,r[i],e,t),this.callAfterApply&&this.callAfterApply();break;case ds:{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 Ki(s,i,e,t);this.callAfterApply&&this.callAfterApply()}break}}}},Zi=(s,e)=>s.priority!==e.priority?e.priority-s.priority:s.id-e.id,er=(s,e)=>{let t=0,i=s.length;for(;t<i;){let r=t+i>>>1;Zi(e,s[r])<0?i=r:t=r+1}return t},Ys=s=>s==null?void 0:s.slice(0),Xs=(s,e)=>{let t=s.indexOf(e);t>-1&&s.splice(t,1)},tr=s=>s===ds||s===fs,us=(s,e,t)=>{let i=s.findIndex(r=>r.isEqual(e,t));i>-1&&(s[i].isRemoved=!0,s.splice(i,1))},cs=(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)us(s,r,void 0)},hs=s=>{s&&(s.forEach(e=>{e.isRemoved=!0}),s.length=0)},sr=(s,e)=>s.listenerType===e.listenerType?s.priority===e.priority&&s.eventName===e.eventName&&s.listenerObject===e.listenerObject&&s.listener===e.listener:!1,ir=(s,e)=>{if(tr(s.listenerType))return e.find(t=>sr(s,t))},rr=(s,e)=>{let t=ir(s,e);return t?(t.refCount+=1,t):(e.splice(er(e,s),0,s),s)},nr=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 rr(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&&gs(s)){this.removeAllListeners();return}if(e==null&&ii(s)){this.removeByEventName(s);return}if(s instanceof ni){this.removeByEventListener(s);return}if(t){this.removeByEventNameAndListenerObject(s,e);return}this.removeByListener(s,e)}removeByEventName(s){hs(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)=>{Xs(e,s),e.length===0&&this.namedListeners.delete(t)}),Xs(this.catchEmAllListeners,s)))}removeByEventNameAndListenerObject(s,e){this.namedListeners.forEach((t,i)=>{cs(t,s,e),t.length===0&&this.namedListeners.delete(i)})}removeByListener(s,e){let t=typeof s=="object";this.namedListeners.forEach((i,r)=>{us(i,s,e),t&&cs(i,void 0,s),i.length===0&&this.namedListeners.delete(r)}),us(this.catchEmAllListeners,s,e),t&&cs(this.catchEmAllListeners,void 0,s)}removeAllListeners(){this.namedListeners.forEach(s=>hs(s)),this.namedListeners.clear(),hs(this.catchEmAllListeners)}forEach(s,e){let t=Ys(this.catchEmAllListeners),i=Ys(this.namedListeners.get(s));if(s===Fe||!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 p=i[a];if(c>=o||p.priority>=t[c].priority){e(p),++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}},Ge=s=>!!(s&&s[ue]);function dt(s){if(Ge(s))return s;let e=new nr,t=new ys;return qi(s,ue,{keeper:t,store:e}),s}var be={Max:Number.POSITIVE_INFINITY,Critical:1e9,High:1e6,Normal:0,Low:-1e4,Min:Number.NEGATIVE_INFINITY,AAA:1e9,BB:1e6,C:1e3,Default:0},or=(s,e,t,i,r,o,a)=>{let c=s.add(new ni(t,i,r,o));return e.replayTo(t,c,a),c},oi=(s,e,t,i)=>{let r=t.length,o=typeof t[0],a,c,p,w;if(r>=2&&r<=3&&o==="number"?(a=Fe,[c,p,w]=t):r>=3&&r<=4&&typeof t[1]=="number"?[a,c,p,w]=t:(c=be.Default,o==="string"||o==="symbol"||Array.isArray(t[0])?[a,p,w]=t:(a=Fe,[p,w]=t)),!p)throw ri&&Qi("called with insufficient arguments!",t),new Error("subscribeTo() called with insufficient arguments");let A=v=>G=>or(s,e,G,v,p,w,i);return Array.isArray(a)?a.map(v=>Array.isArray(v)?A(v[1])(v[0]):A(c)(v)):A(c)(a)},ar=(s,e,t)=>{let i=[],r=oi(s,e,t,i);return ys.publish(i),r},cr=(s,e,t)=>{let i=[];return{listeners:oi(s,e,t,i),publishRetained:()=>ys.publish(i)}},Zs=s=>e=>{e.callAfterApply=()=>{s==null||s()}},ai=(s,e)=>Object.assign(()=>L(s,e),Array.isArray(e)?{listeners:e}:{listener:e}),ei=(s,e,t,i)=>{if(e===Fe)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[ue];r.forEach(e,a=>a.apply(e,t,i)),o.retain(e,t)},ci=(s,e,t,i)=>{Array.isArray(e)?e.forEach(r=>ei(s,r,t,i)):ei(s,e,t,i)},ti=(s,e,t,i)=>{if(e===Fe)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))}},hi=(s,e,t,i)=>{Array.isArray(e)?e.forEach(r=>ti(s,r,t,i)):ti(s,e,t,i)},li=s=>s!=null&&typeof s=="object";function T(s,...e){let t=dt(s),{store:i,keeper:r}=t[ue];return ai(t,ar(i,r,e))}function k(s,...e){let t=dt(s),{store:i,keeper:r}=t[ue],{listeners:o,publishRetained:a}=cr(i,r,e),c=ai(t,o),p=!1,w=()=>{p||(c(),p=!0)};return Array.isArray(o)?o.forEach(Zs(w)):Zs(w)(o),a(),w}function hr(s,e){return new Promise(t=>{k(s,e,t)})}function L(s,e,t){if(!Ge(s))return;let{store:i,keeper:r}=s[ue],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")):ii(e)&&r.remove(e)}function E(s,e,...t){Ge(s)?ci(s,e,t):li(s)&&hi(s,e,t)}function lr(s,e,...t){let i=[],r=o=>{i.push(o)};return Ge(s)?ci(s,e,t,r):li(s)&&hi(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 gt(s,e){let t=dt(s),{keeper:i}=t[ue];i.add(e)}function He(s,e){if(!Ge(s))throw new Error("object is not eventized");let{keeper:t}=s[ue];t.clear(e)}function ur(s,e){if(!Ge(s))throw new Error("object is not eventized");let{keeper:t}=s[ue];t.remove(e)}var fr=T,dr=k,gr=L,yr=E,pr=lr,vr=hr,mr=gt,br=He,wr=ur,V=(()=>{let s=(e={})=>dt(e);return s.inject=(e={})=>(e=dt(e),Object.assign(e,{on:(...t)=>fr(e,...t),once:(...t)=>dr(e,...t),onceAsync:t=>vr(e,t),off:(t,i)=>gr(e,t,i),emit:(t,...i)=>yr(e,t,...i),emitAsync:(t,...i)=>pr(e,t,...i),retain:t=>mr(e,t),retainClear:t=>br(e,t),unretain:t=>wr(e,t)}),e),s.is=Ge,s})();async function ps(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=>ps(s,c,t,!1)));let{registry:r}=s;if(e.define)for(let[c,p]of Object.entries(e.define))r.define(c,p);if(e.routes)for(let[c,p]of Object.entries(e.routes))r.appendRoute(c,p);await((a=(o=e.initialize)==null?void 0:o.call(e,{define:(c,p)=>r.define(c,p),kernel:s,registry:r}))!=null?a:Promise.resolve()),i&&s.upgradeEntities()}var ne=Symbol.for("signal"),Ke=Symbol.for("effect"),ui=Symbol.for("destroySignal"),fi=Symbol.for("createEffect"),Er=Symbol.for("destroyEffect"),et="value",ws="mute",Es="unmute",ke="destroy",yt=Symbol.for("recall"),pt=V(),Ie=V(),$e=V(),vi=V(),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(T($e,(i,r)=>{r===yt&&e.add(i)}),T(vi,i=>{e.add(i)}));for(let[,i]of this.delayedEffects)for(let r of i)e.has(r)||E($e,r,r,yt)}finally{for(let i of t)i()}}};y(Ae,"current");var mi=()=>Ae.current;function Pe(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 Sr=0;function Ss(){return Sr>0}var yi;yi=Ke;var zt=class{constructor(e){y(this,yi);y(this,"run",()=>{var e;return(e=this[Ke])==null?void 0:e.run()});y(this,"destroy",()=>{var e;(e=this[Ke])==null||e.destroy(),this[Ke]=void 0});this[Ke]=e,k(e,ke,()=>{this[Ke]=void 0})}},vs=[],bi=()=>vs.at(-1),Cr=(s,e)=>{vs.push(s);try{return e()}finally{vs.pop()}};var Je=new WeakMap,Bt=new Set,se,Ne,H,fe,ie,Ue,je,K,_e,Ye=class Ye{constructor(e){d(this,se,new Set);d(this,Ne,new Set);d(this,H,new Map);d(this,fe,new WeakMap);d(this,ie,new Map);d(this,Ue,new Set);d(this,je,new Set);d(this,K);d(this,_e);if(e!=null&&e instanceof Ye)return e;if(e!=null||(e=this),Je.has(e))return Je.get(e);g(this,_e,new WeakRef(e)),Je.set(e,this),Bt.add(this),V(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[...Bt])e.clear();Bt.clear()}attachGroup(e){if(e===this)throw new Error("Cannot attach a group to itself");return n(this,se).add(e),n(e,K)&&n(e,K)!==this&&n(n(e,K),se).delete(e),g(e,K,this),e}detachGroup(e){return e!==this&&n(this,se).has(e)&&(n(this,se).delete(e),g(e,K,void 0)),e}attachSignal(e){let t=D(e);if(t!=null&&t.destroyed)throw new Error("Cannot attach a destroyed signal to a group");return t&&n(this,Ne).add(t),e}attachSignalByName(e,t){if(t){this.attachSignal(t);let i=D(t);n(this,H).set(e,i),n(this,ie).has(e)?n(this,ie).get(e).push(i):n(this,ie).set(e,[i]),n(this,fe).has(i)?n(this,fe).get(i).add(e):n(this,fe).set(i,new Set([e]))}else n(this,H).delete(e);return t}hasSignal(e){var t;return n(this,H).has(e)||!!((t=n(this,K))!=null&&t.hasSignal(e))}signal(e){var t,i,r;return(r=(t=n(this,H).get(e))==null?void 0:t.object)!=null?r:(i=n(this,K))==null?void 0:i.signal(e)}detachSignal(e){let t=D(e);if(t&&(n(this,Ne).delete(t),n(this,fe).has(t))){let i=n(this,fe).get(t);for(let r of i)if(n(this,ie).has(r)){let o=n(this,ie).get(r);o.splice(o.indexOf(t),1),o.length===0?(n(this,H).delete(r),n(this,ie).delete(r)):n(this,H).get(r)===t&&n(this,H).set(r,o.at(-1))}i.clear(),n(this,fe).delete(t)}return e}attachEffect(e){return n(this,Ue).add(e),e}runEffects(){for(let e of n(this,Ue))e.run();for(let e of n(this,se))e.runEffects()}attachLink(e){if(e!=null&&e.isDestroyed)throw new Error("Cannot attach a destroyed link to a group");return e&&n(this,je).add(e),e}detachLink(e){return e&&n(this,je).delete(e),e}destroy(){console.warn("SignalGroup#destroy is deprecated. Use SignalGroup#clear instead."),this.clear()}clear(){var e;E(this,ke,this),L(this);for(let t of n(this,se))t.clear();for(let t of n(this,Ue))t.destroy();for(let t of n(this,Ne))N(t);for(let t of n(this,je))t.destroy();if(n(this,se).clear(),n(this,Ne).clear(),n(this,H).clear(),n(this,ie).clear(),n(this,Ue).clear(),n(this,je).clear(),(e=n(this,K))==null||e.detachGroup(this),n(this,_e)){let t=n(this,_e).deref();t!==void 0&&Je.delete(t),g(this,_e,void 0)}Bt.delete(this)}};se=new WeakMap,Ne=new WeakMap,H=new WeakMap,fe=new WeakMap,ie=new WeakMap,Ue=new WeakMap,je=new WeakMap,K=new WeakMap,_e=new WeakMap;var de=Ye,mt,bt,Ft=class{constructor(e="id",t=1){d(this,mt);d(this,bt);g(this,mt,e),g(this,bt,t)}make(){return Symbol(\`\${n(this,mt)}\${Mt(this,bt)._++}\`)}};mt=new WeakMap,bt=new WeakMap;var Ar=s=>s!=null&&typeof s.then=="function",we,re,Ee,Se,Ce,Ve,Xe,Ze,I=class I{constructor(e,t){y(this,"id");y(this,"callback");d(this,we);d(this,re,new Set);d(this,Ee,new Set);d(this,Se,new Map);d(this,Ce,new Set);y(this,"childEffects",[]);y(this,"curChildEffectSlot",0);y(this,"autorun",!0);y(this,"shouldRun",!0);y(this,"priority");d(this,Ve);d(this,Xe,!1);d(this,Ze,0);y(this,"run",()=>{if(n(this,Xe)||!this.shouldRun)return;let e=mi();if(e){e.batch(this.id,this.priority);return}if(n(this,Ze)>=I.maxDepth)throw new Error(\`[signalize] Effect \${this.id.toString()} exceeded maxDepth=\${I.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.\`);Mt(this,Ze)._++;try{if(this.runCleanupCallback(),this.destroyChildEffects(),this.curChildEffectSlot=0,this.shouldRun=!1,E(vi,this.id,this.id),this.hasStaticDeps())g(this,we,this.callback());else{n(this,Ee).clear();for(let t of n(this,re))n(this,Ee).add(t);g(this,we,Cr(this,this.callback)),this.cleanupLostSignals(),n(this,Ce).clear()}}finally{Mt(this,Ze)._--}});y(this,"destroy",()=>{n(this,Xe)||(E(this,ke,this),L(this),E($e,Er,this),this.runCleanupCallback(),this.destroyChildEffects(),L(pt,this),L($e,this),L(Ie,this),g(this,Xe,!0),n(this,re).clear(),n(this,Ee).clear(),n(this,Se).clear(),n(this,Ce).clear(),--I.count)});var r,o;V(this),this.callback=e;let i;(t==null?void 0:t.attach)!=null&&(i=de.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=I.idGen.make(),this.priority=(o=t==null?void 0:t.priority)!=null?o:0,T($e,this.id,yt,this),++I.count}hasStaticDeps(){return n(this,Ve)!=null&&n(this,Ve).length>0}saveSignalsFromDeps(){for(let e of n(this,Ve))this.whenSignalIsRead(D(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=bi();return c!=null?(a=c.getCurrentChildEffect(),a==null&&(a=new I(e,o),c.attachChildEffect(a),E($e,fi,a)),c.curChildEffectSlot++):(a=new I(e,o),E($e,fi,a)),a.hasStaticDeps()?a.saveSignalsFromDeps():a.autorun&&a.run(),new zt(a)}getCurrentChildEffect(){return this.childEffects[this.curChildEffectSlot]}attachChildEffect(e){this.childEffects.push(e)}[yt](){this.shouldRun=!0,this.autorun&&this.run()}whenSignalIsRead(e){n(this,Ee).delete(e),n(this,re).has(e)||(n(this,re).add(e),n(this,Se).set(e,[T(pt,e,this.priority,yt,this),k(Ie,e,ui,this)]))}[ui](e){!n(this,Ce).has(e)&&n(this,re).has(e)&&(n(this,Ce).add(e),this.unsubscribeSignal(e),n(this,Ce).size===n(this,re).size&&this.destroy())}cleanupLostSignals(){for(let e of n(this,Ee))this.unsubscribeSignal(e),n(this,re).delete(e)}destroyChildEffects(){for(let e of this.childEffects)e.destroy();this.childEffects.length=0}unsubscribeSignal(e){n(this,Se).has(e)&&(n(this,Se).get(e).forEach(t=>{t()}),n(this,Se).delete(e))}runCleanupCallback(){if(n(this,we)!=null){let e=n(this,we);g(this,we,void 0),Ar(e)?Promise.resolve(e).then(t=>{typeof t=="function"&&t()}):e()}}};we=new WeakMap,re=new WeakMap,Ee=new WeakMap,Se=new WeakMap,Ce=new WeakMap,Ve=new WeakMap,Xe=new WeakMap,Ze=new WeakMap,y(I,"idGen",new Ft("ef")),y(I,"count",0),y(I,"maxDepth",256);var ms=I,ge=(...s)=>ms.createEffect(...s);var vt=new WeakMap,kr=s=>{let e=vt.get(s);return e||(e={},vt.set(s,e)),e},Oe=(s,e)=>{var t,i;return(i=(t=vt.get(s))==null?void 0:t.signals)==null?void 0:i.get(e)};var wi=(s,e,t)=>{var r;let i=kr(s);(r=i.signals)!=null||(i.signals=new Map),i.signals.set(e,t)};function Cs(...s){for(let e of s)if(vt.has(e)){let t=vt.get(e);if(t.signals){for(let i of t.signals.values())N(i);t.signals.clear(),t.signals=void 0}}}function Ei(s){let e=D(We(s)?s:Oe(...s));e!=null&&!e.muted&&!e.destroyed&&bs(e.id,e.value,{touch:!0})}function tt(s){var e,t;return We(s)?(e=D(s))==null?void 0:e.value:(t=D(Oe(...s)))==null?void 0:t.value}var pi;pi=ne;var Gt=class{constructor(e){y(this,pi);this[ne]=e}get get(){return this[ne].reader}get set(){return this[ne].writer}get value(){return tt(this.get)}set value(e){this.set(e)}onChange(e){let{destroy:t}=ge(()=>e(this.value),[this.get]);return t}get muted(){return this[ne].muted}set muted(e){this[ne].muted=e}touch(){Ei(this)}destroy(){N(this)}},Pr=new Ft("si"),di=!1;function Or(){di||(di=!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 gi(s){var e;Ss()||(e=bi())==null||e.whenSignalIsRead(s)}function bs(s,e,t){Ss()||E(pt,s,e,t)}var We=s=>s!=null&&s[ne]!=null,xr=s=>{let e=t=>{var i;return s.destroyed||(i=s.beforeRead)==null||i.call(s),t?(Or(),ge(()=>(s.destroyed||gi(s.id),t(s.value)),[e])):s.destroyed||gi(s.id),s.value};return Object.defineProperty(e,ne,{value:s}),e},J,Nt=class Nt{constructor(e,t){y(this,"id");y(this,"lazy");y(this,"compare");y(this,"beforeRead");y(this,"muted",!1);y(this,"destroyed",!1);d(this,J);y(this,"valueFn");y(this,"reader");y(this,"writer",(e,t)=>{var c,p,w;let i=(c=t==null?void 0:t.lazy)!=null?c:!1,r=(p=t==null?void 0:t.compare)!=null?p:this.compare,o=r!=null?r:((A,v)=>A===v);if((i!==this.lazy||i&&e!==this.valueFn||!i&&!o(e,n(this,J)))&&(i?(g(this,J,void 0),this.valueFn=e,this.lazy=!0):(g(this,J,e),this.valueFn=void 0,this.lazy=!1),!this.muted&&!this.destroyed)){bs(this.id,n(this,J));return}(w=t==null?void 0:t.touch)!=null&&w&&!this.muted&&!this.destroyed&&bs(this.id,n(this,J),{touch:!0})});y(this,"object");this.id=Pr.make(),++Nt.instanceCount,this.lazy=e,this.lazy?(this.value=void 0,this.valueFn=t):(this.value=t,this.valueFn=void 0),this.reader=xr(this),this.object=new Gt(this)}get[ne](){return this}get value(){return this.lazy&&(g(this,J,this.valueFn()),this.valueFn=void 0,this.lazy=!1),n(this,J)}set value(e){g(this,J,e)}};J=new WeakMap,y(Nt,"instanceCount",0);var $t=Nt,D=s=>s==null?void 0:s[ne];function x(s=void 0,e){var i;let t;if(We(s))t=D(s);else{let r=(i=e==null?void 0:e.lazy)!=null?i:!1;t=new $t(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&&de.findOrCreate(e.attach).attachSignal(t),t.object}var N=(...s)=>{for(let e of s){let t=D(e);t!=null&&!t.destroyed&&(t.destroyed=!0,t.beforeRead=void 0,--$t.instanceCount,E(Ie,t.id,t.id))}};function Ut(s,e){var a,c;let t=x(),i=(e==null?void 0:e.attach)!=null?de.findOrCreate(e.attach):void 0;i!=null&&(e!=null&&e.name?i.attachSignalByName(e.name,t):i.attachSignal(t));let r=ge(()=>{Pe(()=>{t.set(s())})},{autorun:!((a=e==null?void 0:e.lazy)!=null&&a),priority:(c=e==null?void 0:e.priority)!=null?c:be.C,attach:i}),o=D(t);return o.beforeRead=r.run,k(Ie,o.id,r.destroy),t.get}var F,st,_t=class{constructor(e){d(this,F,!1);d(this,st);y(this,"source");y(this,"lastValue");y(this,"isDestroyed",!1);V(this),this.source=D(e),g(this,st,T(pt,this.source.id,(t,i)=>{!n(this,F)&&!this.isDestroyed&&((i==null?void 0:i.touch)===!0?this.touch():this.write())})),k(Ie,this.source.id,()=>this.destroy())}attach(e){let t=de.findOrCreate(e);return t.attachLink(this),k(this,ke,()=>{t.detachLink(this)}),t}nextValue(){return new Promise((e,t)=>{let i=[],r=()=>i.forEach(o=>{o()});i.push(k(this,et,o=>{r(),e(o)}),k(this,ke,()=>{r(),t()}))})}asyncValues(e){return Us(this,null,function*(){gt(this,et);try{let t=0;for(;!this.isDestroyed;)try{let i=yield new rs(this.nextValue());if(e!=null&&e(i,t++))break;yield i}catch(i){break}}finally{He(this,et)}})}destroy(){var e;this.isDestroyed||((e=n(this,st))==null||e.call(this),g(this,st,void 0),E(this,ke,this),He(this,et),L(this),this.lastValue=void 0,this.isDestroyed=!0,Object.freeze(this))}get isMuted(){return n(this,F)}mute(){return!this.isDestroyed&&!n(this,F)&&(g(this,F,!0),E(this,ws,this)),this}unmute(){return!this.isDestroyed&&n(this,F)&&(g(this,F,!1),E(this,Es,this)),this}toggleMute(){return this.isDestroyed||(g(this,F,!n(this,F)),E(this,n(this,F)?ws:Es,this)),n(this,F)}updateValue(e){if(!n(this,F)&&!this.isDestroyed){let{value:t}=this.source;e(t),E(this,et,t),this.lastValue=t}}};F=new WeakMap,st=new WeakMap;var As=class extends _t{constructor(t,i){super(t);y(this,"target");this.target=D(i),k(Ie,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)})}},ks=class extends _t{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)})}},jt=new Map;function Y(s,e,t){let i=D(s),r=D(e),o=r!=null?r:e,a;if(jt.has(i)){if(a=jt.get(i),a.has(o))return a.get(o)}else a=new Map,jt.set(i,a);let c=r!=null?new As(s,r):new ks(s,e),p=t==null?void 0:t.attach;return p&&c.attach(p),a.set(o,c),k(c,ke,()=>{a.delete(o),a.size===0&&jt.delete(i)}),c}var U,Ps=class Ps{constructor(){d(this,U,new Map)}static fromProps(e,t){let i=new Ps,r=t?t.map(o=>[o,e[o]]):Object.entries(e);for(let[o,a]of r)n(i,U).set(o,x(a));return i}keys(){return n(this,U).keys()}signals(){return n(this,U).values()}entries(){return n(this,U).entries()}clear(){for(let e of n(this,U).values())e.destroy();n(this,U).clear()}has(e){return n(this,U).has(e)}get(e){if(!n(this,U).has(e)){let t=x();return n(this,U).set(e,t),t}return n(this,U).get(e)}update(e){e.size&&Pe(()=>{for(let[t,i]of e.entries())this.get(t).set(i)})}updateFromProps(e,t){Pe(()=>{let i=t?t.map(r=>[r,e[r]]):Object.entries(e);for(let[r,o]of i)this.get(r).set(o)})}};U=new WeakMap;var Vt=Ps;var It=s=>s!=null?s:void 0;var Os=Symbol("onCreate"),oe=Symbol("onDestroy"),Si=Symbol("onParentChanged"),Wt=Symbol("onViewEvent");function Ci(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=Oe(this,i);if(a)return r?a.value:a.get()},set(a){var c;(c=Oe(this,i))==null||c.set(a)},init(a){let c=x(a,s);return wi(this,i,c),de.findOrCreate(this).attachSignalByName(i,c),c.value}}}}var Mr=Object.create,xs=Object.defineProperty,Lr=Object.getOwnPropertyDescriptor,Pi=(s,e)=>(e=Symbol[s])?e:Symbol.for("Symbol."+s),rt=s=>{throw TypeError(s)},Rr=(s,e,t)=>e in s?xs(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,Ai=(s,e)=>xs(s,"name",{value:e,configurable:!0}),Tr=s=>{var e;return[,,,Mr((e=s==null?void 0:s[Pi("metadata")])!=null?e:null)]},Oi=["class","method","getter","setter","accessor","field","value","get","set"],wt=s=>s!==void 0&&typeof s!="function"?rt("Function expected"):s,Dr=(s,e,t,i,r)=>({kind:Oi[s],name:e,metadata:i,addInitializer:o=>t._?rt("Already initialized"):r.push(wt(o||null))}),xi=(s,e)=>Rr(e,Pi("metadata"),s[3]),ki=(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},Br=(s,e,t,i,r,o)=>{var a,c,p,w,A,v=e&7,G=!!(e&8),R=!!(e&16),S=v>3?s.length+1:v?G?1:2:0,l=Oi[v+5],h=v>3&&(s[S-1]=[]),u=s[S]||(s[S]=[]),f=v&&(!R&&!G&&(r=r.prototype),v<5&&(v>3||!R)&&Lr(v<4?r:{get[t](){return j(this,o)},set[t](O){return St(this,o,O)}},t));v?R&&v<4&&Ai(o,(v>2?"set ":v>1?"get ":"")+t):Ai(r,t);for(var b=i.length-1;b>=0;b--)w=Dr(v,t,p={},s[3],u),v&&(w.static=G,w.private=R,A=w.access={has:R?O=>zr(r,O):O=>t in O},v^3&&(A.get=R?O=>(v^1?j:xe)(O,r,v^4?o:f.get):O=>O[t]),v>2&&(A.set=R?(O,he)=>St(O,r,he,v^4?o:f.set):(O,he)=>O[t]=he)),c=(0,i[b])(v?v<4?R?o:f[l]:v>4?void 0:{get:f.get,set:f.set}:r,w),p._=1,v^4||c===void 0?wt(c)&&(v>4?h.unshift(c):v?R?o=c:f[l]=c:r=c):typeof c!="object"||c===null?rt("Object expected"):(wt(a=c.get)&&(f.get=a),wt(a=c.set)&&(f.set=a),wt(a=c.init)&&h.unshift(a));return v||xi(s,r),f&&xs(r,t,f),R?v^4?o:f:r},Ms=(s,e,t)=>e.has(s)||rt("Cannot "+t),zr=(s,e)=>Object(e)!==e?rt('Cannot use the "in" operator on this value'):s.has(e),j=(s,e,t)=>(Ms(s,e,"read from private field"),t?t.call(s):e.get(s)),Qt=(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),St=(s,e,t,i)=>(Ms(s,e,"write to private field"),i?i.call(s,t):e.set(s,t),t),xe=(s,e,t)=>(Ms(s,e,"access private method"),t),Mi,ae,Me,Ct,Ls,ye,qt,Et,it="value";Mi=[Ci({name:it})];var ce=class{constructor(e){Qt(this,ye),Qt(this,ae,[]),Qt(this,Me),Qt(this,Ls,ki(Ct,8,this)),ki(Ct,11,this),this.value$=void 0,gt(this,it),this.value$=Oe(this,it),this.value$.onChange(t=>E(this,it,t)),e&&this.add(...e)}add(...e){return j(this,ae).push(...e),xe(this,ye,Et).call(this),xe(this,ye,qt).call(this,e)}unshift(...e){return j(this,ae).unshift(...e),xe(this,ye,Et).call(this),xe(this,ye,qt).call(this,e)}remove(...e){xe(this,ye,qt).call(this,e)()}clear(){j(this,ae).length=0,xe(this,ye,Et).call(this)}dispose(){var e;this.clear(),(e=j(this,Me))==null||e.destroy(),St(this,Me,void 0),He(this,it),L(this),this.value$.destroy(),Cs(this)}};Ct=Tr(null);ae=new WeakMap;Me=new WeakMap;Ls=new WeakMap;ye=new WeakSet;qt=function(s){return()=>{for(let e of s){let t=j(this,ae).indexOf(e);t!==-1&&j(this,ae).splice(t,1)}xe(this,ye,Et).call(this)}};Et=function(){var s;(s=j(this,Me))==null||s.destroy(),j(this,ae).length===0?(St(this,Me,void 0),this.value=void 0):(St(this,Me,ge(()=>{let e;for(let t of j(this,ae)){let i=tt(t);if(i!=null){e=i;break}}this.value=e},j(this,ae))),j(this,Me).run())};Br(Ct,4,"value",Mi,ce,Ls);xi(Ct,ce);ce.Value=it;var Rs=new Map,Ts=!1,Fr=(s,e)=>{Rs.set(s,e),Ts||(Ts=!0,queueMicrotask(()=>{Ts=!1;let t=Array.from(Rs.entries());Rs.clear();for(let[i,r]of t)i.set(r)}))},X,Qe,Le,Z,Re,W,B,pe,Q,nt,qe,ve,P,Ds,Bs,zs,Te,At,Ht,Kt=class{constructor(e,t){d(this,P);d(this,X);d(this,Qe);d(this,Le,new Vt);d(this,Z,new Map);d(this,Re,new Map);d(this,W);d(this,B);d(this,pe,new Set);d(this,Q,[]);d(this,nt,0);d(this,qe,!1);d(this,ve);d(this,Te);g(this,X,e),g(this,Qe,t),k(this,oe,be.Min,this)}get kernel(){return n(this,X)}get uuid(){return n(this,Qe)}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,X).getEntity(e):void 0;this.removeFromParent(),g(this,W,e||void 0),g(this,B,t),n(this,B)&&n(this,B).addChild(this),C(this,P,Bs).call(this)}}get parent(){return!n(this,B)&&n(this,W)&&g(this,B,n(this,X).getEntity(n(this,W))),n(this,B)}set parent(e){this.parentUuid=e==null?void 0:e.uuid}get hasParent(){return!!n(this,W)}get children(){return n(this,Q)}traverse(e){e(this);for(let t of n(this,Q))t.traverse(e)}[oe](){var e,t;n(this,Le).clear(),L(this),(e=n(this,ve))==null||e.call(this);for(let i of n(this,Re).values())i.cleanup(),i.signal.destroy();n(this,Re).clear();for(let i of n(this,Z).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,B,void 0),n(this,pe).clear(),n(this,Q).length=0}addChild(e){var t;if(n(this,Q).length===0){n(this,pe).add(e.uuid),n(this,Q).push(e);return}if(n(this,pe).has(e.uuid))throw new Error(\`child with uuid: \${e.uuid} already exists! parentUuid: \${this.uuid}\`);n(this,pe).add(e.uuid),n(this,Q).push(e),this.resortChildren();for(let[,i]of n(e,Z))C(t=e,P,Ht).call(t,i)}resortChildren(){n(this,Q).sort((e,t)=>e.order-t.order)}removeChild(e){n(this,pe).has(e.uuid)&&(n(this,pe).delete(e.uuid),n(this,Q).splice(n(this,Q).indexOf(e),1))}removeFromParent(){if(n(this,B)){n(this,B).removeChild(this),g(this,B,void 0),g(this,W,void 0);for(let[,e]of n(this,Z))e.unsubscribeFromParent&&(e.unsubscribeFromParent(),e.unsubscribeFromParent=void 0);C(this,P,Ds).call(this)}}get autoDestructionOnParentRemoval(){return n(this,qe)}set autoDestructionOnParentRemoval(e){n(this,qe)!==e&&(g(this,qe,e),C(this,P,Bs).call(this))}reSubscribeToParentContexts(){for(let[,e]of n(this,Z))C(this,P,Ht).call(this,e)}dispatchMessageToView(e,t,i,r=!1){n(this,X).dispatchMessageToView({uuid:n(this,Qe),type:e,data:t,transferables:i,traverseChildren:r})}dispatchViewEvents(e){for(let{type:t,data:i}of e)E(this,Wt,t,i)}dispatchViewEvent(e,t){this.dispatchViewEvents([{type:e,data:t}])}getPropertyReader(e){return C(this,P,zs).call(this,e).get}getPropertyWriter(e){return C(this,P,zs).call(this,e).set}setProperties(e){this.clearTruthyPropsCache(),Pe(()=>{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,Le).keys())}propEntries(){return Array.from(n(this,Le).entries()).map(([e,t])=>[e,t.value])}clearTruthyPropsCache(){g(this,Te,void 0)}truthyProps(){if(n(this,Te))return n(this,Te).size?n(this,Te):void 0;let e=new Set;for(let[t,i]of n(this,Le).entries())if(typeof t=="string"){let r=i.value;r!=null&&r!==!1&&r!==""&&e.add(t)}return g(this,Te,e),e.size?e:void 0}hasContext(e){return n(this,Z).has(e)}useContext(e){return C(this,P,At).call(this,e).context.get}useParentContext(e){return C(this,P,At).call(this,e).inherited.get}provideContext(e){return C(this,P,At).call(this,e).provide}provideGlobalContext(e){if(n(this,Re).has(e))return n(this,Re).get(e).signal;let t=n(this,X).findOrCreateRootContext(e),i=x(),r=t.add(i);return n(this,Re).set(e,{cleanup:r,signal:i}),i}};X=new WeakMap,Qe=new WeakMap,Le=new WeakMap,Z=new WeakMap,Re=new WeakMap,W=new WeakMap,B=new WeakMap,pe=new WeakMap,Q=new WeakMap,nt=new WeakMap,qe=new WeakMap,ve=new WeakMap,P=new WeakSet,Ds=function(){n(this,ve)&&(n(this,ve).call(this),g(this,ve,void 0))},Bs=function(){C(this,P,Ds).call(this),n(this,qe)&&n(this,B)&&g(this,ve,k(n(this,B),oe,be.Max,()=>{g(this,ve,void 0),n(this,X).destroyEntity(n(this,Qe))}))},zs=function(e){return n(this,Le).get(e)},Te=new WeakMap,At=function(e){if(n(this,Z).has(e))return n(this,Z).get(e);let t=x(),i=x(),r=x(),o=new ce([i,t]),a=T(o,ce.Value,p=>{Fr(r,p)}),c={name:e,inherited:t,provide:i,context:r,valuePath:o,unsubscribePathValue:a};return n(this,Z).set(e,c),C(this,P,Ht).call(this,c),c},Ht=function(e){var t,i;if((t=e.unsubscribeFromParent)==null||t.call(e),e.unsubscribeFromParent=void 0,this.parent){let r=C(i=this.parent,P,At).call(i,e.name),o=Y(r.context,e.inherited);e.unsubscribeFromParent=o.destroy.bind(o)}else{let r=n(this,X).findOrCreateRootContext(e.name),o=Y(r.value$,e.inherited);e.unsubscribeFromParent=o.destroy.bind(o)}};function Li(s,e){s.indexOf(e)===-1&&s.push(e)}var Ri=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]}},Jt=(s,e)=>{for(let t of e)s.add(t)},Gr=(s,e)=>{if(s!=null)for(let t of s.constructors)e.add(t)},me,_,q,kt=class{constructor(){d(this,me,new Map);d(this,_,new Map);d(this,q,new Map)}static get(e){return e!=null?e:$r}define(e,t){n(this,me).has(e)?Li(n(this,me).get(e).constructors,t):n(this,me).set(e,{token:e,constructors:[t]})}appendRoute(e,t){let i=Ri(e);i?n(this,q).has(i.key)?Jt(n(this,q).get(i.key).routes,t):n(this,q).set(i.key,{routes:new Set(t),token:i.token}):n(this,_).has(e)?Jt(n(this,_).get(e),t):n(this,_).set(e,new Set(t))}clearRoute(e){let t=Ri(e);t?n(this,q).delete(t.key):n(this,_).delete(e)}findTokensByRoute(e,t){let i=new Set([e]),r=n(this,_).has(e)?[...n(this,_).get(e)]:[];for(;r.length;){let o=r.shift();i.has(o)||(i.add(o),n(this,_).has(o)&&r.push(...Array.from(n(this,_).get(o)).filter(a=>!i.has(a))))}if(t){for(let a of t)n(this,q).has(a)&&Jt(i,n(this,q).get(a).routes);let o;do{o=i.size;for(let a of new Set(i))for(let c of t){let p=\`\${a}@\${c}\`;n(this,q).has(p)&&Jt(i,n(this,q).get(p).routes)}}while(o!==i.size)}return i}findConstructors(e,t){let i=this.findTokensByRoute(e,t),r=new Set;for(let o of i)Gr(n(this,me).get(o),r);return r.size>0?Array.from(r):void 0}hasToken(e){return n(this,me).has(e)}hasRoute(e){return n(this,_).has(e)}clear(){n(this,me).clear(),n(this,_).clear(),n(this,q).clear()}};me=new WeakMap,_=new WeakMap,q=new WeakMap;var $r=new kt;var Ti=s=>s.displayName||s.name,Di=!1,Bi=!1,zi=!1,Fi=!1,Gi=!1,M,ee,ot,Pt,te,De,Yt=class{constructor(e){d(this,M);d(this,ee);d(this,ot);d(this,Pt);d(this,te);d(this,De);this.logger=new Dt("Kernel"),g(this,M,new Map),g(this,ee,new Set),g(this,te,!0),g(this,De,new Map),V(this),this.registry=kt.get(e)}getEntity(e){var i;let t=(i=n(this,M).get(e))==null?void 0:i.entity;if(!t)throw new Error(\`entity with uuid "\${e}" not found!\`);return t}hasEntity(e){return n(this,M).has(e)}traverseLevelOrderBFS(e=!1){if(n(this,te)){let t=new Map,i=(r,o)=>{let a=this.getEntity(r);t.has(o)?t.get(o).push(a):t.set(o,[a]);for(let c of a.children)i(c.uuid,o+1)};n(this,ee).forEach(r=>{i(r,0)}),g(this,ot,Array.from(t.entries()).sort((r,o)=>r[0]-o[0]).flatMap(([,r])=>r)),g(this,Pt,n(this,ot).slice().reverse()),g(this,te,!1)}return e?n(this,Pt):n(this,ot)}getEntityGraph(){return Array.from(n(this,ee)).map(e=>this.getEntityGraphNode(e))}getEntityGraphNode(e){if(!n(this,M).has(e))return;let{token:t,entity:i}=n(this,M).get(e);return{token:t,entity:i,props:Object.fromEntries(i.propEntries()),children:i.children.map(r=>this.getEntityGraphNode(r.uuid))}}upgradeEntities(){let e=new Map;for(let t of this.traverseLevelOrderBFS(!0))e.set(t.uuid,this.updateShadowObjects(t.uuid,2));for(let t of this.traverseLevelOrderBFS(!1))this.updateShadowObjects(t.uuid,1,e.get(t.uuid));e.clear()}run(e){this.logger.isDebug&&this.logger.debug("sync",e),Pe(()=>{for(let t of e.changeTrail)this.parse(t)})}parse(e){switch(e.type){case le.CreateEntities:this.createEntity(e.uuid,e.token,e.parentUuid,e.order,e.properties,e.autoDestructionOnParentRemoval),g(this,te,!0);break;case le.DestroyEntities:this.destroyEntity(e.uuid),g(this,te,!0);break;case le.SetParent:this.setParent(e.uuid,e.parentUuid,e.order),g(this,te,!0);break;case le.UpdateOrder:this.updateOrder(e.uuid,e.order),g(this,te,!0);break;case le.ChangeProperties:this.changeProperties(e.uuid,e.properties);break;case le.ChangeToken:this.changeToken(e.uuid,e.token);break;case le.SendEvents:this.dispatchEventsToEntity(e.uuid,e.events);break}}createEntity(e,t,i,r=0,o,a=!1){let c=new Kt(this,e);c.order=r;let p={token:t,entity:c,usedConstructors:new Map};n(this,M).set(e,p),i&&(c.parentUuid=i),c.autoDestructionOnParentRemoval=a,c.hasParent||n(this,ee).add(e),o&&c.setProperties(o),this.createShadowObjects(e)}destroyEntity(e){if(!n(this,M).has(e))return;let{entity:t,usedConstructors:i}=n(this,M).get(e),r=[...t.children];for(let o of r)o.autoDestructionOnParentRemoval?this.destroyEntity(o.uuid):(o.removeFromParent(),n(this,ee).add(o.uuid));t.removeFromParent(),E(t,oe,t),i.clear(),n(this,M).delete(t.uuid),n(this,ee).delete(t.uuid),g(this,te,!0)}setParent(e,t,i=0){let r=this.getEntity(e);if(!(r.parentUuid===t&&r.order===i)){if(t&&!n(this,M).has(t))throw new Error(\`entity with uuid "\${t}" not found!\`);r.removeFromParent(),r.order=i,r.parentUuid=t,r.hasParent?n(this,ee).delete(e):n(this,ee).add(e),r.reSubscribeToParentContexts(),queueMicrotask(()=>{this.logger.isDebug&&this.logger.debug("entity.onParentChanged",{uuid:e,parentUuid:t,order:i,entity:r}),E(r,Si,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){if(!n(this,M).has(e))return;let i=n(this,M).get(e);i.token!==t&&(i.token=t,this.updateShadowObjects(e))}dispatchMessageToView(e){queueMicrotask(()=>{E(this,ht,e)})}updateShadowObjects(e,t=0,i){let r=n(this,M).get(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,p]of r.usedConstructors)if(!i.has(c)){r.usedConstructors.delete(c);for(let w of p)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,p=new Map,w=new Map,A=new Map,v=new Map,G=new Map,R=(l,h)=>{!Gi&&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.'),Gi=!0);let u=typeof h=="function"?{compare:h}:h,f=v.get(l);if(f===void 0){f=x(void 0,u).get,v.set(l,f),G.set(l,u==null?void 0:u.compare);let b=Y(t.entity.getPropertyReader(l),f);r.add(b.destroy.bind(b))}else(u==null?void 0:u.compare)!=null&&G.get(l)!==u.compare&&console.warn(\`[shadow-objects] useProperty("\${l}"): 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 f},S=V(new e({entity:t.entity,provideContext(l,h,u){var O;!Di&&u!=null&&typeof u=="function"&&(console.warn('[shadow-objects] Deprecation Warning: The "isEqual" option of "provideContext()" is now passed as {compare} argument. Please update your code accordingly.'),Di=!0);let f=typeof u=="function"?{compare:u}:u,b=w.get(l);if(b==null){let he=We(h),es=he?void 0:It(h);if(b=x(es,f!=null&&f.compare?{compare:f.compare}:void 0),he){let ct=Y(h,b);r.add(ct.destroy.bind(ct))}let at=Y(b,t.entity.provideContext(l));r.add(at.destroy.bind(at)),w.set(l,b)}return b!=null&&((O=f==null?void 0:f.clearOnDestroy)==null||O)&&r.add(()=>{b.set(void 0)}),b},provideGlobalContext(l,h,u){var O;!Bi&&u!=null&&typeof u=="function"&&(console.warn('[shadow-objects] Deprecation Warning: The "isEqual" option of "provideGlobalContext()" is now passed as {compare} argument. Please update your code accordingly.'),Bi=!0);let f=typeof u=="function"?{compare:u}:u,b=A.get(l);if(b==null){let he=We(h),es=he?void 0:It(h);if(b=x(es,f!=null&&f.compare?{compare:f.compare}:void 0),he){let ct=Y(h,b);r.add(ct.destroy.bind(ct))}let at=Y(b,t.entity.provideGlobalContext(l));r.add(at.destroy.bind(at)),A.set(l,b)}return b!=null&&((O=f==null?void 0:f.clearOnDestroy)==null||O)&&r.add(()=>{b.set(void 0)}),b},useContext(l,h){!zi&&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.'),zi=!0);let u=typeof h=="function"?{compare:h}:h,f=o.get(l);if(f===void 0){f=x(void 0,u).get,o.set(l,f),a.set(l,u==null?void 0:u.compare);let b=Y(t.entity.useContext(l),f);r.add(b.destroy.bind(b))}else(u==null?void 0:u.compare)!=null&&a.get(l)!==u.compare&&console.warn(\`[shadow-objects] useContext("\${String(l)}"): 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 f},useParentContext(l,h){!Fi&&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.'),Fi=!0);let u=typeof h=="function"?{compare:h}:h,f=c.get(l);if(f===void 0){f=x(void 0,u).get,c.set(l,f),p.set(l,u==null?void 0:u.compare);let b=Y(t.entity.useParentContext(l),f);r.add(b.destroy.bind(b))}else(u==null?void 0:u.compare)!=null&&p.get(l)!==u.compare&&console.warn(\`[shadow-objects] useParentContext("\${String(l)}"): 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 f},dispatchMessageToView(l,h,u,f=!1){t.entity.dispatchMessageToView(l,h,u,f)},useProperty:R,useProperties(l){let h={};for(let u in l)Object.hasOwn(l,u)&&(h[u]=R(l[u]));return h},createResource(l,h){let u=x(),f=ge(()=>{let b=It(l());return u.set(b),b!==void 0&&h?()=>{h(b),u.set(void 0)}:()=>{u.set(void 0)}});return r.add(()=>{f.destroy(),u.set(void 0),N(u)}),u},createEffect(...l){let h=ge(...l);return r.add(h.destroy),h},createSignal(...l){let h=x(...l);return r.add(()=>{N(h)}),h},createMemo(...l){let h=Ut(...l);return r.add(()=>{N(h)}),h},on(...l){let[h]=l;if(typeof h=="string"||typeof h=="symbol"||Array.isArray(h)){let f=T(t.entity,...l);return r.add(f),f}let u=T(...l);return r.add(u),Object.assign(()=>{r.delete(u),u()},u)},once(...l){let[h]=l;if(typeof h=="string"||typeof h=="symbol"||Array.isArray(h)){let f=k(t.entity,...l);return r.add(f),f}let u=k(...l);return r.add(u),Object.assign(()=>{r.delete(u),u()},u)},emit(...l){let[h]=l;typeof h=="string"||typeof h=="symbol"||Array.isArray(h)?E(t.entity,...l):E(...l)},onViewEvent(l){let h=T(t.entity,Wt,(u,f)=>{l(u,f)});r.add(h)},onDestroy(l){i.add(l)}}));return this.logger.isInfo&&this.logger.info("create shadow-object",Ti(e),{shadowObject:S,entity:t.entity}),k(t.entity,oe,be.Low,()=>{this.logger.isInfo&&this.logger.info("destroy shadow-object",Ti(e),{shadowObject:S,entity:t.entity});for(let h of i)h();for(let h of r)h();for(let h of o.values())N(h);for(let h of c.values())N(h);for(let h of v.values())N(h);for(let h of w.values())N(h);for(let h of A.values())N(h);i.clear(),r.clear(),o.clear(),c.clear(),v.clear(),w.clear(),A.clear();let l=t.usedConstructors.get(e);l&&(l.delete(S),l.size===0&&t.usedConstructors.delete(e))}),t.usedConstructors.has(e)?t.usedConstructors.get(e).add(S):t.usedConstructors.set(e,new Set([S])),this.attachShadowObject(S,t.entity),S}createShadowObjects(e){var i;let t=n(this,M).get(e);(i=this.registry.findConstructors(t.token,t.entity.truthyProps()))==null||i.forEach(r=>{this.constructShadowObject(r,t)})}findShadowObjects(e){if(!n(this,M).has(e))return[];let{usedConstructors:t}=n(this,M).get(e);return Array.from(new Set(Array.from(t.values()).flatMap(i=>Array.from(i))))}attachShadowObject(e,t){T(t,e),typeof e[Os]=="function"&&e[Os](t)}destroyShadowObject(e,t){typeof e[oe]=="function"&&e[oe](t),E(e,oe,t),L(t,e)}findOrCreateRootContext(e){let t=n(this,De).get(e);return t||(t=new ce,n(this,De).set(e,t)),t}destroy(){for(let e of n(this,De).values())e.dispose();n(this,De).clear();for(let e of this.traverseLevelOrderBFS().reverse())this.destroyEntity(e.uuid)}};M=new WeakMap,ee=new WeakMap,ot=new WeakMap,Pt=new WeakMap,te=new WeakMap,De=new WeakMap;var $i=s=>(typeof s=="string"&&(s=new URL(s,globalThis.location.href)),s.toString());var Ot,Be,Ni,Ui,ji,Xt=class{constructor(e){d(this,Be);d(this,Ot,new Set);var t,i;this.kernel=(t=e==null?void 0:e.kernel)!=null?t:new Yt,this.postMessage=(i=e==null?void 0:e.postMessage)!=null?i:self.postMessage.bind(self),T(this.kernel,ht,"onMessageToView",this)}route(e){var t;switch(e.data.type){case js:C(this,Be,Ni).call(this,e.data);break;case _s:C(this,Be,Ui).call(this,e.data);break;case Vs:C(this,Be,ji).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=Ns(r,["transferables"]);this.postMessage({type:ht,data:i},{transfer:t})}};Ot=new WeakMap,Be=new WeakSet,Ni=async function(e){try{let t=await import($i(e.importModule));t[Rt]?(await ps(this.kernel,t[Rt],n(this,Ot)),this.postMessage({type:Lt,url:e.importModule})):this.postMessage({type:Lt,url:e.importModule,error:\`module has no "\${Rt}" export\`})}catch(t){console.error("[MessageRouter] failed to import module",t),this.postMessage({type:Lt,url:e.importModule,error:\`\${t}\`})}},Ui=function(e){try{this.kernel.run(e)}catch(t){console.error("[MessageRouter] failed to apply change trail",t),this.postMessage({type:ns,serial:e.serial,error:t.toString()})}e.serial&&this.postMessage({type:ns,serial:e.serial})},ji=function(e){console.debug("[MessageRouter] on destroy",e),L(this.kernel,this),n(this,Ot).clear(),this.postMessage({type:Ws})};var Zt=class{constructor(){this.onmessage=e=>{var t;e.data.type===$?globalThis[z]=e.data.config:((t=this.router)!=null||(this.router=new Xt),this.router.route(e))}}start(){self.addEventListener("message",this.onmessage),self.postMessage({type:Is})}};console.debug("@spearwolf/shadow-objects/WorkerRuntime: hello!");var Nr=new Zt;Nr.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.BQvuuTxK.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.29.0+esm.20260513
|
|
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 Qi=()=>new Ls;var at=(s,e,t=1e3,i)=>new Promise((r,n)=>{let o,a,f=()=>{clearTimeout(o),s.removeEventListener("message",a)};t!==0&&t!==1/0&&(o=setTimeout(()=>{f(),n(new Error(`Timeout waiting for message of type: ${e}`))},t)),a=m=>{if(m.data.type===e)try{(!i||i(m.data))&&(f(),r())}catch(P){f(),n(P.toString())}},s.addEventListener("message",a)});var Xr=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},Ut=class s{constructor(){this.#t=!1,this.#s=0,this.logger=new D("RemoteWorkerEnv"),ee(this,s.WorkerLoaded)}static{this.WorkerLoaded="workerLoaded"}#e;#t;#s;get isDestroyed(){return this.#t}get workerLoaded(){return Ae(this,s.WorkerLoaded)}async start(){if(this.#e)return this.logger.isWarn&&this.logger.warn("already started"),this.workerLoaded.then(()=>{if(this.isDestroyed)throw"worker was destroyed"});let e=this.#e=Qi();this.configureConsoleLogger(e);try{if(await at(e,ci,pi),this.isDestroyed)throw"worker was destroyed";e.addEventListener("message",this.onMessageFromWorker.bind(this)),queueMicrotask(()=>{y(this,s.WorkerLoaded,this)})}catch(t){throw this.logger.error("failed to start",t),this.#e=void 0,t}}applyChangeTrail(e,t){let i=Xr(e),r={type:hi,changeTrail:e},n=++this.#s;return t&&(r.serial=n),this.#e.postMessage(r,i),t?at(this.#e,ui,yi,o=>{if(o.error)throw o.error;return o.serial===n}):Promise.resolve()}importScript(e){return e=Bt(e),this.#e.postMessage({type:ai,importModule:e}),at(this.#e,di,gi,t=>{if(t.error)throw t.error;return t.url===e})}destroy(){if(!this.#e)return;let e=this.#e;this.#e=void 0,this.#t=!0,e.postMessage({type:li}),at(e,fi,vi).finally(()=>{e.terminate()})}onMessageFromWorker(e){e.data?.type===Me?this.onMessageToView?.(e.data.data):this.logger.isDebug&&this.logger.debug("message from worker",e)}configureConsoleLogger(e){let t=`${z}.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:z,config:{...D.sharedConfig,enable:this.logger.isEnabled,...i,...D.isEnabled?{}:{enable:!1}}})}};var Gt=class s extends pe{constructor(){super(),this.isShaeWorkerElement=!0,this.shadowEnv=new Y,this.logger=new D("ShaeWorkerElement"),this.autostart=!0,this.isConnected$=p(!1),this.autoSync$=p(s.DefaultAutoSync),this.src$=p(""),this.#e=!1,this.#t=!1,this.ns$.onChange(e=>{this.shadowEnv.view=F.get(e)}),w(this.shadowEnv,Y.ContextCreated,()=>{this.#i?.run(),this.dispatchEvent(new CustomEvent(Y.ContextCreated.toLowerCase(),{bubbles:!1,detail:{shadowEnv:this.shadowEnv}}))}),w(this.shadowEnv,Y.ContextLost,()=>{this.dispatchEvent(new CustomEvent(Y.ContextLost.toLowerCase(),{bubbles:!1,detail:{shadowEnv:this.shadowEnv}}))}),this.autoSync$.onChange(e=>{let t=this.hasAttribute(V),i=t?this.getAttribute(V):void 0;e===s.DefaultAutoSync?t&&i!==e&&this.setAttribute(V,e):i!==e&&this.setAttribute(V,e)}),this.#a(),this.#n(),this.style.display="contents"}static{this.observedAttributes=[...pe.observedAttributes,ut,"src",dt,V]}static{this.DefaultAutoSync="frame"}#e;#t;#s;#r;#i;#n(){this.#i=S(()=>{let e=this.src$.get();e&&this.importScript(e)},{autorun:!1})}get shouldAutostart(){return this.autostart&&!et(this,$s)}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 tt,this.#s}[tt.OnFrame](){this.syncShadowObjects()}async importScript(e){if(!e)throw new Error("src is blank");let t=await this.shadowEnv.ready();return this.logger.isInfo&&this.logger.info("shadowEnv importScript:",e,{shadowEnv:t}),await t.envProxy.importScript(e),this}connectedCallback(){N(()=>{this.hasAttribute(V)&&this.autoSync$.set(this.getAttribute(V)),this.isConnected$.set(!0)}),this.shouldAutostart&&this.start()}disconnectedCallback(){this.isConnected$.set(!1),this.#o()}attributeChangedCallback(e){if(super.attributeChangedCallback(e),e===ut&&this.shadowEnv.envProxy!=null)throw new Error('Changing the "local" attribute after the shadowEnv has been created is not supported.');if(e===dt&&this.#l(),e===V&&(this.autoSync=this.hasAttribute(V)?this.getAttribute(V):!0),e==="src"){let t=(this.getAttribute("src")||"").trim();this.src$.set(t),this.shadowEnv.isReady&&this.#i?.run()}}start(){if(!this.#t){if(this.#e=!1,this.shadowEnv.view??=F.get(this.ns),this.shadowEnv.envProxy==null){let e=et(this,ut)?new Vt:new Ut;this.shadowEnv.envProxy=e,this.#l()}this.#t=!0}return this.shadowEnv.ready()}destroy(){this.#r?.destroy(),this.#i?.destroy(),L(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()}))}#a(){this.#r=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(dt))}};customElements.define(Ns,Gt);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 ht="shaeRequestEntParent",lt="shaeReRequestEntParent",Ns="shae-worker",ct="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
|
|