@ecopages/radiant 0.3.0-alpha.13 → 0.3.0-alpha.14

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.
@@ -43,18 +43,14 @@ export declare class RadiantController<Bindings extends object = {}> implements
43
43
  */
44
44
  connect(): void;
45
45
  /**
46
- * Connects the controller for server-side rendering without running the
47
- * browser render/update lifecycle.
46
+ * Runs controller lifecycle work in SSR mode so `connect()` skips the client
47
+ * render/update path even when subclasses override it.
48
48
  */
49
- connectForSsrRender(): void;
49
+ runWithSsrLifecycle<T>(work: () => T): T;
50
50
  /**
51
51
  * Disconnects the controller from its host and tears down reactive work.
52
52
  */
53
53
  disconnect(): void;
54
- /**
55
- * Disconnects a controller that was attached through the SSR-only lifecycle.
56
- */
57
- disconnectForSsrRender(): void;
58
54
  get isConnected(): boolean;
59
55
  /**
60
56
  * Returns the JSX tree rendered into the attached host.
@@ -1,3 +1,3 @@
1
- var a=((A)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(A,{get:(x,T)=>(typeof require<"u"?require:x)[T]}):A)(function(A){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+A+'" is not supported')});var X=Symbol.for("@ecopages/radiant.legacy-instance-initializers"),G=Symbol.for("@ecopages/radiant.legacy-post-construction-initializers"),h=Symbol.for("@ecopages/radiant.legacy-executed-post-construction-initializers");function AA(A,x){Z(A,X,x)}function xA(A,x){Z(A,G,x)}function U(A){Q(A,X)}function Y(A){let x=A;Q(A,G,x[h]??=new Set)}function Z(A,x,T){let M=A,W=Object.prototype.hasOwnProperty.call(M,x)?M[x]:void 0;if(Array.isArray(W)){W.push(T);return}Object.defineProperty(M,x,{value:[T]})}function Q(A,x,T,M=Object.getPrototypeOf(A)){if(!M||M===Object.prototype)return;Q(A,x,T,Object.getPrototypeOf(M));let W=M[x];if(!Array.isArray(W))return;for(let $ of W){if(T?.has($))continue;$(A),T?.add($)}}function P(A){switch(A){case Array:return"array";case Boolean:return"boolean";case Number:return"number";case Object:return"object";case String:return"string"}}function N(A){switch(typeof A){case"boolean":return"boolean";case"number":return"number";case"string":return"string"}if(Array.isArray(A))return"array";if(Object.prototype.toString.call(A)==="[object Object]")return"object"}function F(A){switch(A){case Number:return 0;case String:return"";case Boolean:return!1;default:return null}}function V(A){try{return JSON.parse(A)}catch{throw TypeError("Invalid JSON string")}}var g={array(A){let x=V(A);if(!Array.isArray(x))throw TypeError(`Expected an array but got a value of type "${typeof x}"`);return x},boolean(A){return!(A==="0"||String(A).toLowerCase()==="false")},number(A){return Number(A.replace(/_/g,""))},object(A){let x=JSON.parse(A);if(x===null||typeof x!=="object"||Array.isArray(x))throw TypeError(`expected value of type "object" but instead got value "${A}" of type "${N(x)}"`);return x},string(A){return A}},j={default:E,array:O,object:O};function O(A){return JSON.stringify(A)}function E(A){return`${A}`}function q(A,x){let T=P(x);if(!T)throw TypeError(`[radiant-element] Unknown type "${x}"`);return g[T](A)}function _(A,x){let T=P(x);if(!T)throw TypeError(`[radiant-element] Unknown type "${x}"`);return(j[T]??j.default??E)(A)}function v(A){return typeof A==="boolean"}function m(A){return typeof A==="number"}function d(A){return typeof A==="string"}function c(A){return Array.isArray(A)}function s(A){return typeof A==="object"&&!Array.isArray(A)&&A!==null}function R(A,x){switch(A){case Boolean:return v(x);case Number:return m(x);case String:return d(x);case Array:return c(x);case Object:return s(x);default:return!1}}var MA=(A,x,T,M)=>{if(x===Boolean){let $=A.getAttribute(T);if($===null)return M;return $===""?!0:q($,x)}let W=A.getAttribute(T);return W!==null?q(W,x):M??F(x)};function D(A,x){if(x!==void 0&&!R(A,x))throw Error(`defaultValue does not match the expected type for ${A.name}`)}function qA(A,x,T,M){return{type:T,name:A,value:M,initialValue:M,attribute:x,converter:{fromAttribute:(W)=>q(W,T),toAttribute:(W)=>_(W,T)}}}import{Computed as y,subtle as u,trackDependency as n}from"@ecopages/signals";function o(A){return A}function L(A){return A}var C={trackDependency(A){n(o(A))},createComputed(A){return new y(A)},createWatcher(A){let x=new u.Watcher(A);return{watch(T){x.watch(L(T))},unwatch(T){x.unwatch(L(T))}}}};var S=C;function B(){return S}function l(A){S=A}function H(A){B().trackDependency(A)}function w(A){return B().createComputed(A)}function k(A){return B().createWatcher(A)}import{createSubscribableJsxValue as i}from"@ecopages/jsx";class I{read;subscribers=new Set;watcherListeners=new Set;version=0;constructor(A){this.read=A}get(){return H(this),this.read()}subscribe(A){return this.subscribers.add(A),()=>{this.subscribers.delete(A)}}addWatcher(A){return this.watcherListeners.add(A),()=>{this.watcherListeners.delete(A)}}getVersion(){return this.version}notify(A){this.version+=1;let x;try{this.notifyWatchers()}catch(T){x=T}if(this.publish(A),x)throw x}publish(A){for(let x of this.subscribers)x(A)}notifyWatchers(){let A=[];for(let x of this.watcherListeners)try{x()}catch(T){A.push(T)}if(A.length===1)throw A[0];if(A.length>1)throw AggregateError(A,"Multiple reactive dependency notifications failed.")}}function p(A){return typeof A==="object"&&A!==null&&typeof A.get==="function"}class K{host;access;shouldAutoBind;bindings;$;reactiveFields=new Map;reactiveDependencies=new Map;reactiveDependencyReaders=new Map;reactiveBindings=new Map;updateCallbacks=new Map;onConnectedCallbacks=[];onDisconnectedCallback=[];constructor(A,x,T){this.host=A;this.access=x;this.shouldAutoBind=T;let M=this.createReactiveBindingNamespace();this.bindings=M,this.$=M}connectHost(){for(let A of this.onConnectedCallbacks)A()}disconnectHost(){for(let A of this.onDisconnectedCallback)A()}notifyUpdate(A,x,T){if(x===T)return;this.reactiveDependencies.get(A)?.notify(T);let M=this.updateCallbacks.get(A);if(M)for(let W of M)W()}registerCleanupCallback(A){this.onDisconnectedCallback.push(A)}registerConnectedCallback(A){this.onConnectedCallbacks.push(A)}registerHydrationBinding(A,x){}registerReactiveDependencyReader(A,x){this.reactiveDependencyReaders.set(A,x)}registerUpdateCallback(A,x){if(!this.updateCallbacks.has(A))this.updateCallbacks.set(A,new Set);let T=this.updateCallbacks.get(A);return T.add(x),()=>{if(T.delete(x),T.size===0)this.updateCallbacks.delete(A)}}getReactiveBinding(A){let x=this.reactiveBindings.get(A);if(x)return x;let T=i({getValue:()=>this.readReactiveBindingValue(A),subscribe:(M)=>this.registerUpdateCallback(A,()=>{M(this.readReactiveBindingValue(A))})});return this.reactiveBindings.set(A,T),T}bind(A){return this.getReactiveBinding(A)}defineReactiveBinding(A,x=!0){let T=typeof x==="string"?x:x?`$${A}`:void 0,M=this.access.getBindingTarget?.(this.host)??this.host;if(!T||this.access.hasProperty(this.host,T))return;this.access.defineProperty(M,T,{get:()=>this.getReactiveBinding(A),enumerable:!1,configurable:!0})}trackReactiveRead(A){H(this.getReactiveDependency(A))}defineReactiveAccessor(A,x){let T=x.bind??this.shouldAutoBind();if(this.defineReactiveBinding(A,T),this.registerReactiveDependencyReader(A,x.getValue),this.access.defineProperty(this.host,A,{get:()=>{return this.trackReactiveRead(A),x.getValue()},set:(M)=>{let W=x.getValue();if(W===M)return;x.setValue(M),this.notifyUpdate(A,W,M)},enumerable:!0,configurable:!0}),x.notifyInitialValue!==void 0)this.notifyUpdate(A,void 0,x.notifyInitialValue)}createReactiveField(A,x,T={}){let M={name:A,value:x,initialValue:x};this.reactiveFields.set(A,M),this.defineReactiveAccessor(A,{bind:T.bind,getValue:()=>this.reactiveFields.get(A)?.value,setValue:(W)=>{this.reactiveFields.set(A,{...M,value:W})},notifyInitialValue:x})}createReactiveBindingNamespace(){return new Proxy(Object.create(null),{get:(A,x)=>{if(typeof x!=="string")return;return this.getReactiveBinding(x)}})}getReactiveDependency(A){let x=this.reactiveDependencies.get(A);if(x)return x;let T=new I(()=>this.readReactiveDependencyValue(A));return this.reactiveDependencies.set(A,T),T}readReactiveDependencyValue(A){let x=this.reactiveDependencyReaders.get(A);if(x)return x();return this.readReactiveBindingValue(A)}readReactiveBindingValue(A){let x=this.access.readProperty(this.host,A);if(p(x))return x.get();return x}}import{render as t}from"@ecopages/jsx";class z{host;element;bindings;$;reactiveHost;connected=!1;isRendering=!1;isRenderScheduled=!1;isSsrLifecycle=!1;needsRender=!1;contextProviders=new Map;hydrationBindings=new Map;renderSignal;renderWatcher=k(()=>{this.requestUpdate()});constructor(A){this.host=A,this.element=A,this.reactiveHost=new K(this,{defineProperty:(x,T,M)=>Object.defineProperty(x,T,M),hasProperty:(x,T)=>(T in x),readProperty:(x,T)=>x[T]},()=>this.shouldAutoBindReactiveMembers()),this.bindings=this.reactiveHost.bindings,this.$=this.reactiveHost.$,U(this)}connect(){if(Y(this),this.connected=!0,this.reactiveHost.connectHost(),this.shouldRunRenderLifecycle())this.update()}connectForSsrRender(){this.isSsrLifecycle=!0;try{this.connect()}finally{this.isSsrLifecycle=!1}}disconnect(){this.connected=!1,this.disconnectRenderWatcher(),this.reactiveHost.disconnectHost()}disconnectForSsrRender(){this.disconnect()}get isConnected(){return this.connected}render(){return null}requestUpdate(){if(!this.shouldRunRenderLifecycle())return;if(this.needsRender=!0,this.isRenderScheduled)return;this.isRenderScheduled=!0,queueMicrotask(()=>{if(this.isRenderScheduled=!1,!this.needsRender)return;this.update()})}update(){if(!this.shouldRunRenderLifecycle())return;let A=this.getRenderTarget();if(!A)return;if(this.needsRender=!0,!this.connected||this.isRendering)return;while(this.needsRender){this.needsRender=!1,this.isRendering=!0;try{t(this.resolveTrackedRenderOutput(),A)}finally{this.isRendering=!1}}}bind(A){return this.reactiveHost.bind(A)}getReactiveBinding(A){return this.reactiveHost.getReactiveBinding(A)}createReactiveField(A,x,T={}){this.reactiveHost.createReactiveField(A,x,T)}createReactiveProp(A,x){let{type:T,defaultValue:M,bind:W}=x;D(T,M);let $=new b(this.host,this,A),J=$.getInitialValue()??M??F(T);this.reactiveHost.defineReactiveAccessor(A,{bind:W,getValue:()=>J,setValue:(f)=>{J=f},notifyInitialValue:J}),$.install(),this.registerCleanupCallback(()=>{$.restore()})}defineReactiveBinding(A,x=!0){this.reactiveHost.defineReactiveBinding(A,x)}notifyUpdate(A,x,T){this.reactiveHost.notifyUpdate(A,x,T)}registerUpdateCallback(A,x){return this.reactiveHost.registerUpdateCallback(A,x)}connectedContextCallback(A){}registerContextProvider(A,x){this.contextProviders.set(A,x),this.hydrationBindings.set(A,x)}registerHydrationBinding(A,x){this.hydrationBindings.set(A,x)}getSsrContextProviders(){return[...this.contextProviders.values()]}getSsrHydrationBindings(){return[...this.hydrationBindings.values()]}registerCleanupCallback(A){this.reactiveHost.registerCleanupCallback(A)}registerConnectedCallback(A){this.reactiveHost.registerConnectedCallback(A)}registerReactiveDependencyReader(A,x){this.reactiveHost.registerReactiveDependencyReader(A,x)}trackReactiveRead(A){this.reactiveHost.trackReactiveRead(A)}addEventListener(A,x,T){this.host.addEventListener(A,x,T)}removeEventListener(A,x,T){this.host.removeEventListener(A,x,T)}dispatchEvent(A){return this.host.dispatchEvent(A)}getRef(A,x=!1){let T=`[data-ref="${A}"]`;if(x)return Array.from(this.host.querySelectorAll(T));return this.host.querySelector(T)??null}shouldAutoBindReactiveMembers(){return!0}shouldRunRenderLifecycle(){return!this.isSsrLifecycle&&this.render!==z.prototype.render}getRenderTarget(){return this.host instanceof HTMLElement?this.host:null}disconnectRenderWatcher(){if(!this.renderSignal)return;this.renderWatcher.unwatch(this.renderSignal),this.renderSignal=void 0}resolveTrackedRenderOutput(){let A=w(()=>this.render()),x=A.get();if(!this.connected)return x;if(this.renderSignal)this.renderWatcher.unwatch(this.renderSignal);return this.renderSignal=A,this.renderWatcher.watch(A),x}}class b{host;controller;propertyName;ownDescriptor;constructor(A,x,T){this.host=A;this.controller=x;this.propertyName=T;this.ownDescriptor=Object.getOwnPropertyDescriptor(this.host,this.propertyName)}getInitialValue(){return Reflect.get(this.host,this.propertyName)}install(){Object.defineProperty(this.host,this.propertyName,{get:()=>Reflect.get(this.controller,this.propertyName),set:(A)=>{Reflect.set(this.controller,this.propertyName,A)},enumerable:this.ownDescriptor?.enumerable??!0,configurable:!0})}restore(){let A=Reflect.get(this.controller,this.propertyName);if(this.ownDescriptor){if(Object.defineProperty(this.host,this.propertyName,this.ownDescriptor),"value"in this.ownDescriptor&&this.ownDescriptor.writable)Reflect.set(this.host,this.propertyName,A);return}Reflect.deleteProperty(this.host,this.propertyName);try{Reflect.set(this.host,this.propertyName,A)}catch{Object.defineProperty(this.host,this.propertyName,{value:A,writable:!0,enumerable:!0,configurable:!0})}}}export{z as RadiantController};
1
+ var a=((A)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(A,{get:(x,T)=>(typeof require<"u"?require:x)[T]}):A)(function(A){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+A+'" is not supported')});var X=Symbol.for("@ecopages/radiant.legacy-instance-initializers"),G=Symbol.for("@ecopages/radiant.legacy-post-construction-initializers"),h=Symbol.for("@ecopages/radiant.legacy-executed-post-construction-initializers");function AA(A,x){Z(A,X,x)}function xA(A,x){Z(A,G,x)}function U(A){Q(A,X)}function Y(A){let x=A;Q(A,G,x[h]??=new Set)}function Z(A,x,T){let M=A,W=Object.prototype.hasOwnProperty.call(M,x)?M[x]:void 0;if(Array.isArray(W)){W.push(T);return}Object.defineProperty(M,x,{value:[T]})}function Q(A,x,T,M=Object.getPrototypeOf(A)){if(!M||M===Object.prototype)return;Q(A,x,T,Object.getPrototypeOf(M));let W=M[x];if(!Array.isArray(W))return;for(let $ of W){if(T?.has($))continue;$(A),T?.add($)}}function P(A){switch(A){case Array:return"array";case Boolean:return"boolean";case Number:return"number";case Object:return"object";case String:return"string"}}function N(A){switch(typeof A){case"boolean":return"boolean";case"number":return"number";case"string":return"string"}if(Array.isArray(A))return"array";if(Object.prototype.toString.call(A)==="[object Object]")return"object"}function F(A){switch(A){case Number:return 0;case String:return"";case Boolean:return!1;default:return null}}function V(A){try{return JSON.parse(A)}catch{throw TypeError("Invalid JSON string")}}var g={array(A){let x=V(A);if(!Array.isArray(x))throw TypeError(`Expected an array but got a value of type "${typeof x}"`);return x},boolean(A){return!(A==="0"||String(A).toLowerCase()==="false")},number(A){return Number(A.replace(/_/g,""))},object(A){let x=JSON.parse(A);if(x===null||typeof x!=="object"||Array.isArray(x))throw TypeError(`expected value of type "object" but instead got value "${A}" of type "${N(x)}"`);return x},string(A){return A}},j={default:E,array:O,object:O};function O(A){return JSON.stringify(A)}function E(A){return`${A}`}function q(A,x){let T=P(x);if(!T)throw TypeError(`[radiant-element] Unknown type "${x}"`);return g[T](A)}function _(A,x){let T=P(x);if(!T)throw TypeError(`[radiant-element] Unknown type "${x}"`);return(j[T]??j.default??E)(A)}function v(A){return typeof A==="boolean"}function m(A){return typeof A==="number"}function d(A){return typeof A==="string"}function c(A){return Array.isArray(A)}function s(A){return typeof A==="object"&&!Array.isArray(A)&&A!==null}function R(A,x){switch(A){case Boolean:return v(x);case Number:return m(x);case String:return d(x);case Array:return c(x);case Object:return s(x);default:return!1}}var MA=(A,x,T,M)=>{if(x===Boolean){let $=A.getAttribute(T);if($===null)return M;return $===""?!0:q($,x)}let W=A.getAttribute(T);return W!==null?q(W,x):M??F(x)};function D(A,x){if(x!==void 0&&!R(A,x))throw Error(`defaultValue does not match the expected type for ${A.name}`)}function qA(A,x,T,M){return{type:T,name:A,value:M,initialValue:M,attribute:x,converter:{fromAttribute:(W)=>q(W,T),toAttribute:(W)=>_(W,T)}}}import{Computed as y,subtle as u,trackDependency as n}from"@ecopages/signals";function o(A){return A}function L(A){return A}var C={trackDependency(A){n(o(A))},createComputed(A){return new y(A)},createWatcher(A){let x=new u.Watcher(A);return{watch(T){x.watch(L(T))},unwatch(T){x.unwatch(L(T))}}}};var S=C;function B(){return S}function l(A){S=A}function H(A){B().trackDependency(A)}function w(A){return B().createComputed(A)}function I(A){return B().createWatcher(A)}import{createSubscribableJsxValue as p}from"@ecopages/jsx";class k{read;subscribers=new Set;watcherListeners=new Set;version=0;constructor(A){this.read=A}get(){return H(this),this.read()}subscribe(A){return this.subscribers.add(A),()=>{this.subscribers.delete(A)}}addWatcher(A){return this.watcherListeners.add(A),()=>{this.watcherListeners.delete(A)}}getVersion(){return this.version}notify(A){this.version+=1;let x;try{this.notifyWatchers()}catch(T){x=T}if(this.publish(A),x)throw x}publish(A){for(let x of this.subscribers)x(A)}notifyWatchers(){let A=[];for(let x of this.watcherListeners)try{x()}catch(T){A.push(T)}if(A.length===1)throw A[0];if(A.length>1)throw AggregateError(A,"Multiple reactive dependency notifications failed.")}}function i(A){return typeof A==="object"&&A!==null&&typeof A.get==="function"}class K{host;access;shouldAutoBind;bindings;$;reactiveFields=new Map;reactiveDependencies=new Map;reactiveDependencyReaders=new Map;reactiveBindings=new Map;updateCallbacks=new Map;onConnectedCallbacks=[];onDisconnectedCallback=[];constructor(A,x,T){this.host=A;this.access=x;this.shouldAutoBind=T;let M=this.createReactiveBindingNamespace();this.bindings=M,this.$=M}connectHost(){for(let A of this.onConnectedCallbacks)A()}disconnectHost(){for(let A of this.onDisconnectedCallback)A()}notifyUpdate(A,x,T){if(x===T)return;this.reactiveDependencies.get(A)?.notify(T);let M=this.updateCallbacks.get(A);if(M)for(let W of M)W()}registerCleanupCallback(A){this.onDisconnectedCallback.push(A)}registerConnectedCallback(A){this.onConnectedCallbacks.push(A)}registerHydrationBinding(A,x){}registerReactiveDependencyReader(A,x){this.reactiveDependencyReaders.set(A,x)}registerUpdateCallback(A,x){if(!this.updateCallbacks.has(A))this.updateCallbacks.set(A,new Set);let T=this.updateCallbacks.get(A);return T.add(x),()=>{if(T.delete(x),T.size===0)this.updateCallbacks.delete(A)}}getReactiveBinding(A){let x=this.reactiveBindings.get(A);if(x)return x;let T=p({getValue:()=>this.readReactiveBindingValue(A),subscribe:(M)=>this.registerUpdateCallback(A,()=>{M(this.readReactiveBindingValue(A))})});return this.reactiveBindings.set(A,T),T}defineReactiveBinding(A,x=!0){let T=typeof x==="string"?x:x?`$${A}`:void 0,M=this.access.getBindingTarget?.(this.host)??this.host;if(!T||this.access.hasProperty(this.host,T))return;this.access.defineProperty(M,T,{get:()=>this.getReactiveBinding(A),enumerable:!1,configurable:!0})}trackReactiveRead(A){H(this.getReactiveDependency(A))}defineReactiveAccessor(A,x){let T=x.bind??this.shouldAutoBind();if(this.defineReactiveBinding(A,T),this.registerReactiveDependencyReader(A,x.getValue),this.access.defineProperty(this.host,A,{get:()=>{return this.trackReactiveRead(A),x.getValue()},set:(M)=>{let W=x.getValue();if(W===M)return;x.setValue(M),this.notifyUpdate(A,W,M)},enumerable:!0,configurable:!0}),x.notifyInitialValue!==void 0)this.notifyUpdate(A,void 0,x.notifyInitialValue)}createReactiveField(A,x,T={}){let M={name:A,value:x,initialValue:x};this.reactiveFields.set(A,M),this.defineReactiveAccessor(A,{bind:T.bind,getValue:()=>this.reactiveFields.get(A)?.value,setValue:(W)=>{this.reactiveFields.set(A,{...M,value:W})},notifyInitialValue:x})}createReactiveBindingNamespace(){return new Proxy(Object.create(null),{get:(A,x)=>{if(typeof x!=="string")return;return this.getReactiveBinding(x)}})}getReactiveDependency(A){let x=this.reactiveDependencies.get(A);if(x)return x;let T=new k(()=>this.readReactiveDependencyValue(A));return this.reactiveDependencies.set(A,T),T}readReactiveDependencyValue(A){let x=this.reactiveDependencyReaders.get(A);if(x)return x();return this.readReactiveBindingValue(A)}readReactiveBindingValue(A){let x=this.access.readProperty(this.host,A);if(i(x))return x.get();return x}}import{render as t}from"@ecopages/jsx";class z{host;element;bindings;$;reactiveHost;connected=!1;isRendering=!1;isRenderScheduled=!1;isSsrLifecycle=!1;needsRender=!1;contextProviders=new Map;hydrationBindings=new Map;renderSignal;renderWatcher=I(()=>{this.requestUpdate()});constructor(A){this.host=A,this.element=A,this.reactiveHost=new K(this,{defineProperty:(x,T,M)=>Object.defineProperty(x,T,M),hasProperty:(x,T)=>(T in x),readProperty:(x,T)=>x[T]},()=>this.shouldAutoBindReactiveMembers()),this.bindings=this.reactiveHost.bindings,this.$=this.reactiveHost.$,U(this)}connect(){if(Y(this),this.connected=!0,this.reactiveHost.connectHost(),this.shouldRunRenderLifecycle())this.update()}runWithSsrLifecycle(A){this.isSsrLifecycle=!0;try{return A()}finally{this.isSsrLifecycle=!1}}disconnect(){this.connected=!1,this.disconnectRenderWatcher(),this.reactiveHost.disconnectHost()}get isConnected(){return this.connected}render(){return null}requestUpdate(){if(!this.shouldRunRenderLifecycle())return;if(this.needsRender=!0,this.isRenderScheduled)return;this.isRenderScheduled=!0,queueMicrotask(()=>{if(this.isRenderScheduled=!1,!this.needsRender)return;this.update()})}update(){if(!this.shouldRunRenderLifecycle())return;let A=this.getRenderTarget();if(!A)return;if(this.needsRender=!0,!this.connected||this.isRendering)return;while(this.needsRender){this.needsRender=!1,this.isRendering=!0;try{t(this.resolveTrackedRenderOutput(),A)}finally{this.isRendering=!1}}}bind(A){return this.reactiveHost.getReactiveBinding(A)}getReactiveBinding(A){return this.reactiveHost.getReactiveBinding(A)}createReactiveField(A,x,T={}){this.reactiveHost.createReactiveField(A,x,T)}createReactiveProp(A,x){let{type:T,defaultValue:M,bind:W}=x;D(T,M);let $=new b(this.host,this,A),J=$.getInitialValue()??M??F(T);this.reactiveHost.defineReactiveAccessor(A,{bind:W,getValue:()=>J,setValue:(f)=>{J=f},notifyInitialValue:J}),$.install(),this.registerCleanupCallback(()=>{$.restore()})}defineReactiveBinding(A,x=!0){this.reactiveHost.defineReactiveBinding(A,x)}notifyUpdate(A,x,T){this.reactiveHost.notifyUpdate(A,x,T)}registerUpdateCallback(A,x){return this.reactiveHost.registerUpdateCallback(A,x)}connectedContextCallback(A){}registerContextProvider(A,x){this.contextProviders.set(A,x),this.hydrationBindings.set(A,x)}registerHydrationBinding(A,x){this.hydrationBindings.set(A,x)}getSsrContextProviders(){return[...this.contextProviders.values()]}getSsrHydrationBindings(){return[...this.hydrationBindings.values()]}registerCleanupCallback(A){this.reactiveHost.registerCleanupCallback(A)}registerConnectedCallback(A){this.reactiveHost.registerConnectedCallback(A)}registerReactiveDependencyReader(A,x){this.reactiveHost.registerReactiveDependencyReader(A,x)}trackReactiveRead(A){this.reactiveHost.trackReactiveRead(A)}addEventListener(A,x,T){this.host.addEventListener(A,x,T)}removeEventListener(A,x,T){this.host.removeEventListener(A,x,T)}dispatchEvent(A){return this.host.dispatchEvent(A)}getRef(A,x=!1){let T=`[data-ref="${A}"]`;if(x)return Array.from(this.host.querySelectorAll(T));return this.host.querySelector(T)??null}shouldAutoBindReactiveMembers(){return!0}shouldRunRenderLifecycle(){return!this.isSsrLifecycle&&this.render!==z.prototype.render}getRenderTarget(){return this.host instanceof HTMLElement?this.host:null}disconnectRenderWatcher(){if(!this.renderSignal)return;this.renderWatcher.unwatch(this.renderSignal),this.renderSignal=void 0}resolveTrackedRenderOutput(){let A=w(()=>this.render()),x=A.get();if(!this.connected)return x;if(this.renderSignal)this.renderWatcher.unwatch(this.renderSignal);return this.renderSignal=A,this.renderWatcher.watch(A),x}}class b{host;controller;propertyName;ownDescriptor;constructor(A,x,T){this.host=A;this.controller=x;this.propertyName=T;this.ownDescriptor=Object.getOwnPropertyDescriptor(this.host,this.propertyName)}getInitialValue(){return Reflect.get(this.host,this.propertyName)}install(){Object.defineProperty(this.host,this.propertyName,{get:()=>Reflect.get(this.controller,this.propertyName),set:(A)=>{Reflect.set(this.controller,this.propertyName,A)},enumerable:this.ownDescriptor?.enumerable??!0,configurable:!0})}restore(){let A=Reflect.get(this.controller,this.propertyName);if(this.ownDescriptor){if(Object.defineProperty(this.host,this.propertyName,this.ownDescriptor),"value"in this.ownDescriptor&&this.ownDescriptor.writable)Reflect.set(this.host,this.propertyName,A);return}Reflect.deleteProperty(this.host,this.propertyName);try{Reflect.set(this.host,this.propertyName,A)}catch{Object.defineProperty(this.host,this.propertyName,{value:A,writable:!0,enumerable:!0,configurable:!0})}}}export{z as RadiantController};
2
2
 
3
- //# debugId=9A3839FCF9D040A064756E2164756E21
3
+ //# debugId=9EF5A00EF40C5F8764756E2164756E21
@@ -8,10 +8,10 @@
8
8
  "import {\n\tComputed as SignalsComputed,\n\tsubtle,\n\ttrackDependency,\n\ttype DependencyNode as SignalsDependencyNode,\n} from '@ecopages/signals';\nimport type { ReactiveComputed, ReactiveDependencyNode, ReactiveRuntime, ReactiveWatcher } from './reactivity-contract';\n\nfunction asSignalsDependencyNode(node: ReactiveDependencyNode): SignalsDependencyNode {\n\treturn node as SignalsDependencyNode;\n}\n\nfunction asSignalsComputed(signal: ReactiveComputed<unknown>): SignalsComputed<unknown> {\n\treturn signal as SignalsComputed<unknown>;\n}\n\n/**\n * Default Signals-backed implementation of Radiant's internal reactivity\n * runtime contract.\n *\n * This is the only core module that imports `@ecopages/signals` directly. The\n * rest of core consumes the narrower runtime contract through the adapter and\n * runtime holder modules.\n */\nexport const signalsReactiveRuntime: ReactiveRuntime = {\n\ttrackDependency(node) {\n\t\ttrackDependency(asSignalsDependencyNode(node));\n\t},\n\tcreateComputed<T>(read: () => T): ReactiveComputed<T> {\n\t\treturn new SignalsComputed(read);\n\t},\n\tcreateWatcher(notify: () => void): ReactiveWatcher {\n\t\tconst watcher = new subtle.Watcher(notify);\n\n\t\treturn {\n\t\t\twatch(signal) {\n\t\t\t\twatcher.watch(asSignalsComputed(signal));\n\t\t\t},\n\t\t\tunwatch(signal) {\n\t\t\t\twatcher.unwatch(asSignalsComputed(signal));\n\t\t\t},\n\t\t};\n\t},\n};\n",
9
9
  "import type { ReactiveRuntime } from './reactivity-contract';\nimport { signalsReactiveRuntime } from './reactivity-signals';\n\nlet activeReactiveRuntime: ReactiveRuntime = signalsReactiveRuntime;\n\n/**\n * Returns the currently active internal reactivity runtime.\n *\n * The current implementation still defaults to the Signals-backed runtime, so\n * importing this module preserves today's behavior. A stricter optional-runtime\n * architecture would move that default installation into an explicit bootstrap\n * step instead of this eager default.\n */\nexport function getReactiveRuntime(): ReactiveRuntime {\n\treturn activeReactiveRuntime;\n}\n\n/**\n * Replaces the active internal reactivity runtime used by Radiant core.\n *\n * This is an internal seam for alternate runtime experiments and tests. It does\n * not yet make Signals optional at module-load time because this module still\n * imports the default Signals-backed runtime eagerly.\n */\nexport function setReactiveRuntime(runtime: ReactiveRuntime): void {\n\tactiveReactiveRuntime = runtime;\n}\n",
10
10
  "import { getReactiveRuntime } from './reactivity-runtime';\nexport type {\n\tReactiveComputed,\n\tReactiveDependencyNode,\n\tReactiveRuntime,\n\tReactiveSubscriber,\n\tReactiveWatcher,\n} from './reactivity-contract';\nexport { setReactiveRuntime } from './reactivity-runtime';\n\n/** Tracks one dependency-node read against the active internal reactivity runtime. */\nexport function trackReactiveDependency(node: import('./reactivity-contract').ReactiveDependencyNode): void {\n\tgetReactiveRuntime().trackDependency(node);\n}\n\n/** Creates a computed value using the currently selected internal reactivity runtime. */\nexport function createReactiveComputed<T>(read: () => T): import('./reactivity-contract').ReactiveComputed<T> {\n\treturn getReactiveRuntime().createComputed(read);\n}\n\n/** Creates a watcher using the currently selected internal reactivity runtime. */\nexport function createReactiveWatcher(notify: () => void): import('./reactivity-contract').ReactiveWatcher {\n\treturn getReactiveRuntime().createWatcher(notify);\n}\n",
11
- "import { createSubscribableJsxValue, type SubscribableJsxValue } from '@ecopages/jsx';\nimport { trackReactiveDependency, type ReactiveDependencyNode, type ReactiveSubscriber } from './reactivity-adapter';\nimport type {\n\tReactiveBindingOption,\n\tReactiveBindingValue,\n\tReactiveBindings,\n\tReactiveFieldOptions,\n} from './reactive-prop-core';\nimport type { SsrSerializableHydrationBinding } from './ssr-hydration-binding';\n\ntype StringPropertyKey<Value> = Extract<keyof Value, string>;\ntype ReactiveDependencyReader = () => unknown;\n\ntype ReactiveHostAccess<Host extends object> = {\n\tdefineProperty(target: object, property: string, descriptor: PropertyDescriptor): void;\n\tgetBindingTarget?(host: Host): object;\n\thasProperty(host: Host, property: string): boolean;\n\treadProperty(host: Host, property: string): unknown;\n};\n\ntype ReactiveField<T = unknown> = {\n\tname: string;\n\tvalue: T;\n\tinitialValue: T;\n};\n\ntype ReactiveAccessorOptions<T> = {\n\tbind?: ReactiveBindingOption;\n\tgetValue: () => T | undefined;\n\tsetValue: (value: T) => void;\n\tnotifyInitialValue?: T;\n};\n\n/**\n * Shared reactive-host contract consumed by decorators and host adapters.\n *\n * `RadiantElement` and `RadiantController` both implement this surface so the\n * decorator layer can define fields, bindings, context reactions, and tracked\n * reads without depending on a specific host class.\n */\nexport interface ReactiveHostLike<Bindings extends object = {}> {\n\treadonly bindings: ReactiveBindings<Bindings>;\n\treadonly $: ReactiveBindings<Bindings>;\n\tbind<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>>;\n\tgetReactiveBinding<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>>;\n\tcreateReactiveField<T>(propertyName: string, initialValue: T, options?: ReactiveFieldOptions): void;\n\tdefineReactiveBinding(property: string, bind?: ReactiveBindingOption): void;\n\tnotifyUpdate(changedProperty: string, oldValue: unknown, value: unknown): void;\n\tregisterCleanupCallback(callback: () => void): void;\n\tregisterConnectedCallback(callback: () => void): void;\n\tregisterHydrationBinding(name: string, binding: SsrSerializableHydrationBinding): void;\n\tregisterReactiveDependencyReader(property: string, read: () => unknown): void;\n\ttrackReactiveRead(property: string): void;\n}\n\n/**\n * Internal dependency node that bridges Radiant host members into the signals\n * tracking graph.\n */\nclass ReactiveHostDependency implements ReactiveDependencyNode {\n\tprivate readonly subscribers = new Set<ReactiveSubscriber<unknown>>();\n\tprivate readonly watcherListeners = new Set<() => void>();\n\tprivate version = 0;\n\n\tconstructor(private readonly read: ReactiveDependencyReader) {}\n\n\tpublic get(): unknown {\n\t\ttrackReactiveDependency(this);\n\t\treturn this.read();\n\t}\n\n\tpublic subscribe(notify: ReactiveSubscriber<unknown>): () => void {\n\t\tthis.subscribers.add(notify);\n\n\t\treturn () => {\n\t\t\tthis.subscribers.delete(notify);\n\t\t};\n\t}\n\n\tpublic addWatcher(notify: () => void): () => void {\n\t\tthis.watcherListeners.add(notify);\n\n\t\treturn () => {\n\t\t\tthis.watcherListeners.delete(notify);\n\t\t};\n\t}\n\n\tpublic getVersion(): number {\n\t\treturn this.version;\n\t}\n\n\tpublic notify(nextValue: unknown): void {\n\t\tthis.version += 1;\n\t\tlet watcherError: unknown;\n\n\t\ttry {\n\t\t\tthis.notifyWatchers();\n\t\t} catch (error) {\n\t\t\twatcherError = error;\n\t\t}\n\n\t\tthis.publish(nextValue);\n\n\t\tif (watcherError) {\n\t\t\tthrow watcherError;\n\t\t}\n\t}\n\n\tprivate publish(nextValue: unknown): void {\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tsubscriber(nextValue);\n\t\t}\n\t}\n\n\tprivate notifyWatchers(): void {\n\t\tconst errors: unknown[] = [];\n\n\t\tfor (const listener of this.watcherListeners) {\n\t\t\ttry {\n\t\t\t\tlistener();\n\t\t\t} catch (error) {\n\t\t\t\terrors.push(error);\n\t\t\t}\n\t\t}\n\n\t\tif (errors.length === 1) {\n\t\t\tthrow errors[0];\n\t\t}\n\n\t\tif (errors.length > 1) {\n\t\t\tthrow new AggregateError(errors, 'Multiple reactive dependency notifications failed.');\n\t\t}\n\t}\n}\n\nfunction isSignalLikeBindingValue(value: unknown): value is { get(): unknown } {\n\treturn typeof value === 'object' && value !== null && typeof (value as { get?: unknown }).get === 'function';\n}\n\n/**\n * Shared reactivity engine used by both `RadiantElement` and\n * `RadiantController`.\n *\n * This class owns three pieces of shared behavior:\n *\n * - defining reactive accessors on the host object\n * - exposing cached JSX bindings such as `bindings.count` and `$count`\n * - publishing tracked updates into the signals graph and update callbacks\n *\n * Host-specific concerns such as attribute reflection, render lifecycles, and\n * custom-element APIs stay in the outer host classes.\n */\nexport class ReactiveHost<Host extends object, Bindings extends object = {}> implements ReactiveHostLike<Bindings> {\n\tpublic readonly bindings: ReactiveBindings<Bindings>;\n\tpublic readonly $: ReactiveBindings<Bindings>;\n\n\tprivate reactiveFields = new Map<string, ReactiveField>();\n\tprivate reactiveDependencies = new Map<string, ReactiveHostDependency>();\n\tprivate reactiveDependencyReaders = new Map<string, ReactiveDependencyReader>();\n\tprivate reactiveBindings = new Map<string, SubscribableJsxValue>();\n\tprivate updateCallbacks = new Map<string, Set<(...rest: any[]) => any>>();\n\tprivate onConnectedCallbacks: (() => void)[] = [];\n\tprivate onDisconnectedCallback: (() => void)[] = [];\n\n\tconstructor(\n\t\tprivate readonly host: Host,\n\t\tprivate readonly access: ReactiveHostAccess<Host>,\n\t\tprivate readonly shouldAutoBind: () => boolean,\n\t) {\n\t\tconst bindingNamespace = this.createReactiveBindingNamespace();\n\t\tthis.bindings = bindingNamespace;\n\t\tthis.$ = bindingNamespace;\n\t}\n\n\t/**\n\t * Runs all connection callbacks registered by decorators or host adapters.\n\t */\n\tpublic connectHost(): void {\n\t\tfor (const callback of this.onConnectedCallbacks) {\n\t\t\tcallback();\n\t\t}\n\t}\n\n\t/**\n\t * Runs all cleanup callbacks registered for host disconnect.\n\t */\n\tpublic disconnectHost(): void {\n\t\tfor (const cleanup of this.onDisconnectedCallback) {\n\t\t\tcleanup();\n\t\t}\n\t}\n\n\t/**\n\t * Publishes a reactive member change to tracked dependencies and explicit\n\t * update callbacks.\n\t */\n\tpublic notifyUpdate(changedProperty: string, oldValue: unknown, value: unknown): void {\n\t\tif (oldValue === value) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.reactiveDependencies.get(changedProperty)?.notify(value);\n\t\tconst updates = this.updateCallbacks.get(changedProperty);\n\n\t\tif (updates) {\n\t\t\tfor (const update of updates) {\n\t\t\t\tupdate();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Registers a callback that should run when the outer host disconnects.\n\t */\n\tpublic registerCleanupCallback(callback: () => void): void {\n\t\tthis.onDisconnectedCallback.push(callback);\n\t}\n\n\t/**\n\t * Registers a callback that should run whenever the outer host connects.\n\t */\n\tpublic registerConnectedCallback(callback: () => void): void {\n\t\tthis.onConnectedCallbacks.push(callback);\n\t}\n\n\t/**\n\t * Placeholder hydration hook so shared decorators can target both host types.\n\t *\n\t * `ReactiveHost` itself does not persist hydration bindings; concrete hosts\n\t * such as `RadiantElement` can override this behavior at the outer layer.\n\t */\n\tpublic registerHydrationBinding(_name: string, _binding: SsrSerializableHydrationBinding): void {}\n\n\t/**\n\t * Registers a raw reader for a reactive member so tracked dependency reads do\n\t * not need to go back through the public accessor.\n\t */\n\tpublic registerReactiveDependencyReader(property: string, read: ReactiveDependencyReader): void {\n\t\tthis.reactiveDependencyReaders.set(property, read);\n\t}\n\n\t/**\n\t * Registers a callback that runs whenever a named reactive member changes.\n\t *\n\t * Returns a disposer that removes the callback.\n\t */\n\tpublic registerUpdateCallback(property: string, update: (...rest: any[]) => any): () => void {\n\t\tif (!this.updateCallbacks.has(property)) {\n\t\t\tthis.updateCallbacks.set(property, new Set());\n\t\t}\n\n\t\tconst callbacks = this.updateCallbacks.get(property)!;\n\t\tcallbacks.add(update);\n\n\t\treturn () => {\n\t\t\tcallbacks.delete(update);\n\n\t\t\tif (callbacks.size === 0) {\n\t\t\t\tthis.updateCallbacks.delete(property);\n\t\t\t}\n\t\t};\n\t}\n\n\t/**\n\t * Returns the cached JSX binding object for a named reactive member.\n\t */\n\tpublic getReactiveBinding<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>> {\n\t\tconst cachedBinding = this.reactiveBindings.get(property);\n\n\t\tif (cachedBinding) {\n\t\t\treturn cachedBinding as SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>>;\n\t\t}\n\n\t\tconst binding = createSubscribableJsxValue<ReactiveBindingValue<Bindings, Property>>({\n\t\t\tgetValue: () => this.readReactiveBindingValue(property) as ReactiveBindingValue<Bindings, Property>,\n\t\t\tsubscribe: (notify) =>\n\t\t\t\tthis.registerUpdateCallback(property, () => {\n\t\t\t\t\tnotify(this.readReactiveBindingValue(property) as ReactiveBindingValue<Bindings, Property>);\n\t\t\t\t}),\n\t\t});\n\n\t\tthis.reactiveBindings.set(property, binding);\n\t\treturn binding;\n\t}\n\n\t/**\n\t * Short alias for `getReactiveBinding(...)`.\n\t */\n\tpublic bind<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>> {\n\t\treturn this.getReactiveBinding(property) as SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>>;\n\t}\n\n\t/**\n\t * Defines a stable binding companion property such as `$count` on the host or\n\t * its chosen binding target.\n\t */\n\tpublic defineReactiveBinding(property: string, bind: ReactiveBindingOption = true): void {\n\t\tconst bindingPropertyName = typeof bind === 'string' ? bind : bind ? `$${property}` : undefined;\n\t\tconst bindingTarget = this.access.getBindingTarget?.(this.host) ?? this.host;\n\n\t\tif (!bindingPropertyName || this.access.hasProperty(this.host, bindingPropertyName)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.access.defineProperty(bindingTarget, bindingPropertyName, {\n\t\t\tget: () => this.getReactiveBinding(property as StringPropertyKey<Bindings>),\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t});\n\t}\n\n\t/**\n\t * Records a dependency read for the named reactive member.\n\t */\n\tpublic trackReactiveRead(property: string): void {\n\t\ttrackReactiveDependency(this.getReactiveDependency(property));\n\t}\n\n\t/**\n\t * Defines a reactive getter/setter pair on the host and wires it into\n\t * bindings, dependency tracking, and update notifications.\n\t */\n\tpublic defineReactiveAccessor<T>(propertyName: string, options: ReactiveAccessorOptions<T>): void {\n\t\tconst bind = options.bind ?? this.shouldAutoBind();\n\n\t\tthis.defineReactiveBinding(propertyName, bind);\n\t\tthis.registerReactiveDependencyReader(propertyName, options.getValue);\n\n\t\tthis.access.defineProperty(this.host, propertyName, {\n\t\t\tget: () => {\n\t\t\t\tthis.trackReactiveRead(propertyName);\n\t\t\t\treturn options.getValue();\n\t\t\t},\n\t\t\tset: (newValue: T) => {\n\t\t\t\tconst oldValue = options.getValue();\n\n\t\t\t\tif (oldValue === newValue) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\toptions.setValue(newValue);\n\t\t\t\tthis.notifyUpdate(propertyName, oldValue, newValue);\n\t\t\t},\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t});\n\n\t\tif (options.notifyInitialValue !== undefined) {\n\t\t\tthis.notifyUpdate(propertyName, undefined, options.notifyInitialValue);\n\t\t}\n\t}\n\n\t/**\n\t * Defines a controller- or element-local reactive field with optional JSX\n\t * binding exposure.\n\t */\n\tpublic createReactiveField<T>(propertyName: string, initialValue: T, options: ReactiveFieldOptions = {}): void {\n\t\tconst reactiveField: ReactiveField<T> = {\n\t\t\tname: propertyName,\n\t\t\tvalue: initialValue,\n\t\t\tinitialValue,\n\t\t};\n\n\t\tthis.reactiveFields.set(propertyName, reactiveField);\n\n\t\tthis.defineReactiveAccessor(propertyName, {\n\t\t\tbind: options.bind,\n\t\t\tgetValue: () => this.reactiveFields.get(propertyName)?.value as T | undefined,\n\t\t\tsetValue: (newValue: T) => {\n\t\t\t\tthis.reactiveFields.set(propertyName, { ...reactiveField, value: newValue });\n\t\t\t},\n\t\t\tnotifyInitialValue: initialValue,\n\t\t});\n\t}\n\n\tprivate createReactiveBindingNamespace(): ReactiveBindings<Bindings> {\n\t\treturn new Proxy(Object.create(null) as ReactiveBindings<Bindings>, {\n\t\t\tget: (_target, property) => {\n\t\t\t\tif (typeof property !== 'string') {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\treturn this.getReactiveBinding(property as StringPropertyKey<Bindings>);\n\t\t\t},\n\t\t}) as ReactiveBindings<Bindings>;\n\t}\n\n\tprivate getReactiveDependency(property: string): ReactiveHostDependency {\n\t\tconst cachedDependency = this.reactiveDependencies.get(property);\n\n\t\tif (cachedDependency) {\n\t\t\treturn cachedDependency;\n\t\t}\n\n\t\tconst dependency = new ReactiveHostDependency(() => this.readReactiveDependencyValue(property));\n\t\tthis.reactiveDependencies.set(property, dependency);\n\t\treturn dependency;\n\t}\n\n\tprivate readReactiveDependencyValue(property: string): unknown {\n\t\tconst reader = this.reactiveDependencyReaders.get(property);\n\n\t\tif (reader) {\n\t\t\treturn reader();\n\t\t}\n\n\t\treturn this.readReactiveBindingValue(property as StringPropertyKey<Bindings>);\n\t}\n\n\tprivate readReactiveBindingValue<Property extends StringPropertyKey<Bindings>>(property: Property): unknown {\n\t\tconst value = this.access.readProperty(this.host, property);\n\n\t\tif (isSignalLikeBindingValue(value)) {\n\t\t\treturn value.get();\n\t\t}\n\n\t\treturn value;\n\t}\n}\n",
12
- "import { render as renderJsx, type JsxRenderable, type SubscribableJsxValue } from '@ecopages/jsx';\nimport { createReactiveComputed, createReactiveWatcher, type ReactiveComputed } from './reactivity-adapter';\nimport type { SsrSerializableContextProvider } from '../context/context-provider';\nimport type { UnknownContext } from '../context/types';\nimport {\n\trunLegacyInstanceInitializers,\n\trunLegacyPostConstructionInitializers,\n} from '../decorators/legacy/instance-initializers';\nimport { ReactiveHost, type ReactiveHostLike } from './reactive-host';\nimport type {\n\tReactiveBindingOption,\n\tReactivePropertyOptions,\n\tReactiveBindingValue,\n\tReactiveBindings,\n\tReactiveFieldOptions,\n} from './reactive-prop-core';\nimport type { SsrSerializableHydrationBinding } from './ssr-hydration-binding';\nimport { defaultValueForType } from '../utils/attribute-utils';\nimport { validateReactivePropertyDefault } from './reactive-prop-core';\n\ntype StringPropertyKey<Value> = Extract<keyof Value, string>;\n\n/**\n * Attaches Radiant reactivity to an existing DOM element without defining a\n * custom element.\n *\n * `RadiantController` is the controller-host counterpart to `RadiantElement`.\n * It can enhance authored DOM, or it can take over the host's inner DOM by\n * overriding `render()`.\n *\n * When used with the controller registry, the attached host is typically an\n * element carrying `data-controller=\"...\"`.\n *\n * @typeParam Bindings - Explicit internal bindable shape. Include only the\n * reactive keys that JSX bindings should accept.\n */\nexport class RadiantController<Bindings extends object = {}> implements ReactiveHostLike<Bindings> {\n\tpublic readonly host: Element;\n\tpublic readonly element: Element;\n\tpublic readonly bindings: ReactiveBindings<Bindings>;\n\tpublic readonly $: ReactiveBindings<Bindings>;\n\n\tprivate readonly reactiveHost: ReactiveHost<this, Bindings>;\n\tprivate connected = false;\n\tprivate isRendering = false;\n\tprivate isRenderScheduled = false;\n\tprivate isSsrLifecycle = false;\n\tprivate needsRender = false;\n\tprivate contextProviders = new Map<string, SsrSerializableContextProvider>();\n\tprivate hydrationBindings = new Map<string, SsrSerializableHydrationBinding>();\n\tprivate renderSignal?: ReactiveComputed<JsxRenderable>;\n\tprivate readonly renderWatcher = createReactiveWatcher(() => {\n\t\tthis.requestUpdate();\n\t});\n\n\tconstructor(host: Element) {\n\t\tthis.host = host;\n\t\tthis.element = host;\n\t\tthis.reactiveHost = new ReactiveHost<this, Bindings>(\n\t\t\tthis,\n\t\t\t{\n\t\t\t\tdefineProperty: (target, property, descriptor) => Object.defineProperty(target, property, descriptor),\n\t\t\t\thasProperty: (target, property) => property in target,\n\t\t\t\treadProperty: (target, property) => (target as Record<string, unknown>)[property],\n\t\t\t},\n\t\t\t() => this.shouldAutoBindReactiveMembers(),\n\t\t);\n\t\tthis.bindings = this.reactiveHost.bindings;\n\t\tthis.$ = this.reactiveHost.$;\n\t\trunLegacyInstanceInitializers(this);\n\t}\n\n\t/**\n\t * Connects the controller to its host and starts reactive subscriptions.\n\t *\n\t * If the controller owns a render lifecycle by overriding `render()`, the\n\t * first update runs immediately after connection.\n\t */\n\tpublic connect(): void {\n\t\trunLegacyPostConstructionInitializers(this);\n\t\tthis.connected = true;\n\t\tthis.reactiveHost.connectHost();\n\n\t\tif (this.shouldRunRenderLifecycle()) {\n\t\t\tthis.update();\n\t\t}\n\t}\n\n\t/**\n\t * Connects the controller for server-side rendering without running the\n\t * browser render/update lifecycle.\n\t */\n\tpublic connectForSsrRender(): void {\n\t\tthis.isSsrLifecycle = true;\n\n\t\ttry {\n\t\t\tthis.connect();\n\t\t} finally {\n\t\t\tthis.isSsrLifecycle = false;\n\t\t}\n\t}\n\n\t/**\n\t * Disconnects the controller from its host and tears down reactive work.\n\t */\n\tpublic disconnect(): void {\n\t\tthis.connected = false;\n\t\tthis.disconnectRenderWatcher();\n\t\tthis.reactiveHost.disconnectHost();\n\t}\n\n\t/**\n\t * Disconnects a controller that was attached through the SSR-only lifecycle.\n\t */\n\tpublic disconnectForSsrRender(): void {\n\t\tthis.disconnect();\n\t}\n\n\tpublic get isConnected(): boolean {\n\t\treturn this.connected;\n\t}\n\n\t/**\n\t * Returns the JSX tree rendered into the attached host.\n\t *\n\t * The base implementation renders nothing. Override this method when the\n\t * controller should own the host's inner DOM instead of only enhancing\n\t * authored markup.\n\t */\n\tpublic render(): JsxRenderable {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Schedules a render pass for render-owning controllers.\n\t *\n\t * Multiple calls in the same microtask are coalesced into a single update.\n\t */\n\tpublic requestUpdate(): void {\n\t\tif (!this.shouldRunRenderLifecycle()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.needsRender = true;\n\n\t\tif (this.isRenderScheduled) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isRenderScheduled = true;\n\n\t\tqueueMicrotask(() => {\n\t\t\tthis.isRenderScheduled = false;\n\n\t\t\tif (!this.needsRender) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.update();\n\t\t});\n\t}\n\n\t/**\n\t * Flushes the current render output into the attached host element.\n\t *\n\t * This is a no-op unless the controller overrides `render()`.\n\t */\n\tpublic update(): void {\n\t\tif (!this.shouldRunRenderLifecycle()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst renderTarget = this.getRenderTarget();\n\n\t\tif (!renderTarget) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.needsRender = true;\n\n\t\tif (!this.connected || this.isRendering) {\n\t\t\treturn;\n\t\t}\n\n\t\twhile (this.needsRender) {\n\t\t\tthis.needsRender = false;\n\t\t\tthis.isRendering = true;\n\n\t\t\ttry {\n\t\t\t\trenderJsx(this.resolveTrackedRenderOutput(), renderTarget);\n\t\t\t} finally {\n\t\t\t\tthis.isRendering = false;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Returns a subscribable JSX binding for a selected reactive member.\n\t */\n\tpublic bind<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>> {\n\t\treturn this.reactiveHost.bind(property);\n\t}\n\n\t/**\n\t * Returns the cached binding object for a selected reactive member.\n\t */\n\tpublic getReactiveBinding<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>> {\n\t\treturn this.reactiveHost.getReactiveBinding(property);\n\t}\n\n\t/**\n\t * Defines a reactive field directly on the controller instance.\n\t */\n\tpublic createReactiveField<T>(propertyName: string, initialValue: T, options: ReactiveFieldOptions = {}): void {\n\t\tthis.reactiveHost.createReactiveField(propertyName, initialValue, options);\n\t}\n\n\t/**\n\t * Defines a controller prop backed by the attached host element's property\n\t * channel instead of attribute serialization.\n\t *\n\t * This gives controller-based integrations the same reactive field surface as\n\t * `@prop(...)` on `RadiantElement`, while allowing external code to assign\n\t * structured values such as arrays or objects directly on `controller.host`.\n\t */\n\tpublic createReactiveProp<T = unknown>(propertyName: string, options: ReactivePropertyOptions<T>): void {\n\t\tconst { type, defaultValue, bind } = options;\n\n\t\tvalidateReactivePropertyDefault(type, defaultValue);\n\n\t\tconst hostPropertyBridge = new ControllerHostPropertyBridge<T>(this.host, this, propertyName);\n\t\tconst initialHostValue = hostPropertyBridge.getInitialValue();\n\t\tlet currentValue = (initialHostValue ?? defaultValue ?? defaultValueForType(type)) as T;\n\n\t\tthis.reactiveHost.defineReactiveAccessor(propertyName, {\n\t\t\tbind,\n\t\t\tgetValue: () => currentValue,\n\t\t\tsetValue: (newValue: T) => {\n\t\t\t\tcurrentValue = newValue;\n\t\t\t},\n\t\t\tnotifyInitialValue: currentValue,\n\t\t});\n\n\t\thostPropertyBridge.install();\n\n\t\tthis.registerCleanupCallback(() => {\n\t\t\thostPropertyBridge.restore();\n\t\t});\n\t}\n\n\t/**\n\t * Defines a JSX binding companion such as `$count` for a reactive member.\n\t */\n\tpublic defineReactiveBinding(property: string, bind: ReactiveBindingOption = true): void {\n\t\tthis.reactiveHost.defineReactiveBinding(property, bind);\n\t}\n\n\tpublic notifyUpdate(changedProperty: string, oldValue: unknown, value: unknown): void {\n\t\tthis.reactiveHost.notifyUpdate(changedProperty, oldValue, value);\n\t}\n\n\tpublic registerUpdateCallback(property: string, update: (...rest: any[]) => any): () => void {\n\t\treturn this.reactiveHost.registerUpdateCallback(property, update);\n\t}\n\n\t/**\n\t * Notifies context decorators that a provider or consumer for `contextName`\n\t * finished connecting on this controller host.\n\t *\n\t * Controllers currently rely on the shared client-side context event flow, so\n\t * the base implementation does not need extra bookkeeping here.\n\t */\n\tpublic connectedContextCallback(_contextName: UnknownContext): void {}\n\n\t/**\n\t * Registers a decorated context provider on the controller host.\n\t *\n\t * Controller providers participate in the same client-side event-based context\n\t * flow as `RadiantElement` providers. During SSR, the registered providers are\n\t * also exposed to descendant consumers and hydration payload collection.\n\t */\n\tpublic registerContextProvider(name: string, provider: SsrSerializableContextProvider): void {\n\t\tthis.contextProviders.set(name, provider);\n\t\tthis.hydrationBindings.set(name, provider);\n\t}\n\n\t/**\n\t * Registers a keyed SSR hydration binding for the controller host.\n\t */\n\tpublic registerHydrationBinding(name: string, binding: SsrSerializableHydrationBinding): void {\n\t\tthis.hydrationBindings.set(name, binding);\n\t}\n\n\t/**\n\t * Returns SSR-visible context providers registered on this controller.\n\t */\n\tpublic getSsrContextProviders(): SsrSerializableContextProvider[] {\n\t\treturn [...this.contextProviders.values()];\n\t}\n\n\t/**\n\t * Returns keyed hydration payload producers registered on this controller.\n\t */\n\tpublic getSsrHydrationBindings(): SsrSerializableHydrationBinding[] {\n\t\treturn [...this.hydrationBindings.values()];\n\t}\n\n\tpublic registerCleanupCallback(callback: () => void): void {\n\t\tthis.reactiveHost.registerCleanupCallback(callback);\n\t}\n\n\tpublic registerConnectedCallback(callback: () => void): void {\n\t\tthis.reactiveHost.registerConnectedCallback(callback);\n\t}\n\n\tpublic registerReactiveDependencyReader(property: string, read: () => unknown): void {\n\t\tthis.reactiveHost.registerReactiveDependencyReader(property, read);\n\t}\n\n\tpublic trackReactiveRead(property: string): void {\n\t\tthis.reactiveHost.trackReactiveRead(property);\n\t}\n\n\tpublic addEventListener(\n\t\ttype: string,\n\t\tlistener: EventListenerOrEventListenerObject,\n\t\toptions?: boolean | AddEventListenerOptions,\n\t): void {\n\t\tthis.host.addEventListener(type, listener, options);\n\t}\n\n\tpublic removeEventListener(\n\t\ttype: string,\n\t\tlistener: EventListenerOrEventListenerObject,\n\t\toptions?: boolean | EventListenerOptions,\n\t): void {\n\t\tthis.host.removeEventListener(type, listener, options);\n\t}\n\n\tpublic dispatchEvent(event: Event): boolean {\n\t\treturn this.host.dispatchEvent(event);\n\t}\n\n\t/**\n\t * Finds one or more elements inside the attached host by `data-ref`.\n\t *\n\t * Prefer `@query(...)` for stable, decorator-backed refs and use `getRef(...)`\n\t * for one-off lookups.\n\t */\n\tpublic getRef<T extends Element = Element>(ref: string, all: true): T[];\n\tpublic getRef<T extends Element = Element>(ref: string, all?: false): T | null;\n\tpublic getRef<T extends Element = Element>(ref: string, all = false): T | T[] | null {\n\t\tconst selector = `[data-ref=\"${ref}\"]`;\n\n\t\tif (all) {\n\t\t\treturn Array.from(this.host.querySelectorAll(selector)) as T[];\n\t\t}\n\n\t\treturn (this.host.querySelector(selector) as T) ?? null;\n\t}\n\n\tprotected shouldAutoBindReactiveMembers(): boolean {\n\t\treturn true;\n\t}\n\n\tprotected shouldRunRenderLifecycle(): boolean {\n\t\treturn !this.isSsrLifecycle && this.render !== RadiantController.prototype.render;\n\t}\n\n\tprivate getRenderTarget(): HTMLElement | null {\n\t\treturn this.host instanceof HTMLElement ? this.host : null;\n\t}\n\n\tprivate disconnectRenderWatcher(): void {\n\t\tif (!this.renderSignal) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.renderWatcher.unwatch(this.renderSignal);\n\t\tthis.renderSignal = undefined;\n\t}\n\n\tprivate resolveTrackedRenderOutput(): JsxRenderable {\n\t\tconst nextRenderSignal = createReactiveComputed(() => this.render());\n\t\tconst output = nextRenderSignal.get();\n\n\t\tif (!this.connected) {\n\t\t\treturn output;\n\t\t}\n\n\t\tif (this.renderSignal) {\n\t\t\tthis.renderWatcher.unwatch(this.renderSignal);\n\t\t}\n\n\t\tthis.renderSignal = nextRenderSignal;\n\t\tthis.renderWatcher.watch(nextRenderSignal);\n\t\treturn output;\n\t}\n}\n\nclass ControllerHostPropertyBridge<T> {\n\tprivate readonly ownDescriptor: PropertyDescriptor | undefined;\n\n\tconstructor(\n\t\tprivate readonly host: Element,\n\t\tprivate readonly controller: object,\n\t\tprivate readonly propertyName: string,\n\t) {\n\t\tthis.ownDescriptor = Object.getOwnPropertyDescriptor(this.host, this.propertyName);\n\t}\n\n\tpublic getInitialValue(): T | undefined {\n\t\treturn Reflect.get(this.host, this.propertyName) as T | undefined;\n\t}\n\n\tpublic install(): void {\n\t\tObject.defineProperty(this.host, this.propertyName, {\n\t\t\tget: () => Reflect.get(this.controller, this.propertyName),\n\t\t\tset: (newValue: T) => {\n\t\t\t\tReflect.set(this.controller, this.propertyName, newValue);\n\t\t\t},\n\t\t\tenumerable: this.ownDescriptor?.enumerable ?? true,\n\t\t\tconfigurable: true,\n\t\t});\n\t}\n\n\tpublic restore(): void {\n\t\tconst finalValue = Reflect.get(this.controller, this.propertyName);\n\n\t\tif (this.ownDescriptor) {\n\t\t\tObject.defineProperty(this.host, this.propertyName, this.ownDescriptor);\n\n\t\t\tif ('value' in this.ownDescriptor && this.ownDescriptor.writable) {\n\t\t\t\tReflect.set(this.host, this.propertyName, finalValue);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tReflect.deleteProperty(this.host, this.propertyName);\n\n\t\ttry {\n\t\t\tReflect.set(this.host, this.propertyName, finalValue);\n\t\t} catch {\n\t\t\tObject.defineProperty(this.host, this.propertyName, {\n\t\t\t\tvalue: finalValue,\n\t\t\t\twritable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t});\n\t\t}\n\t}\n}\n"
11
+ "import { createSubscribableJsxValue, type SubscribableJsxValue } from '@ecopages/jsx';\nimport { trackReactiveDependency, type ReactiveDependencyNode, type ReactiveSubscriber } from './reactivity-adapter';\nimport type {\n\tReactiveBindingOption,\n\tReactiveBindingValue,\n\tReactiveBindings,\n\tReactiveFieldOptions,\n} from './reactive-prop-core';\nimport type { SsrSerializableHydrationBinding } from './ssr-hydration-binding';\n\ntype StringPropertyKey<Value> = Extract<keyof Value, string>;\ntype ReactiveDependencyReader = () => unknown;\n\ntype ReactiveHostAccess<Host extends object> = {\n\tdefineProperty(target: object, property: string, descriptor: PropertyDescriptor): void;\n\tgetBindingTarget?(host: Host): object;\n\thasProperty(host: Host, property: string): boolean;\n\treadProperty(host: Host, property: string): unknown;\n};\n\ntype ReactiveField<T = unknown> = {\n\tname: string;\n\tvalue: T;\n\tinitialValue: T;\n};\n\ntype ReactiveAccessorOptions<T> = {\n\tbind?: ReactiveBindingOption;\n\tgetValue: () => T | undefined;\n\tsetValue: (value: T) => void;\n\tnotifyInitialValue?: T;\n};\n\n/**\n * Shared reactive-host contract consumed by decorators and host adapters.\n *\n * `RadiantElement` and `RadiantController` both implement this surface so the\n * decorator layer can define fields, bindings, context reactions, and tracked\n * reads without depending on a specific host class.\n */\nexport interface ReactiveHostLike<Bindings extends object = {}> {\n\treadonly bindings: ReactiveBindings<Bindings>;\n\treadonly $: ReactiveBindings<Bindings>;\n\tbind<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>>;\n\tgetReactiveBinding<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>>;\n\tcreateReactiveField<T>(propertyName: string, initialValue: T, options?: ReactiveFieldOptions): void;\n\tdefineReactiveBinding(property: string, bind?: ReactiveBindingOption): void;\n\tnotifyUpdate(changedProperty: string, oldValue: unknown, value: unknown): void;\n\tregisterCleanupCallback(callback: () => void): void;\n\tregisterConnectedCallback(callback: () => void): void;\n\tregisterHydrationBinding(name: string, binding: SsrSerializableHydrationBinding): void;\n\tregisterReactiveDependencyReader(property: string, read: () => unknown): void;\n\ttrackReactiveRead(property: string): void;\n}\n\n/**\n * Internal dependency node that bridges Radiant host members into the signals\n * tracking graph.\n */\nclass ReactiveHostDependency implements ReactiveDependencyNode {\n\tprivate readonly subscribers = new Set<ReactiveSubscriber<unknown>>();\n\tprivate readonly watcherListeners = new Set<() => void>();\n\tprivate version = 0;\n\n\tconstructor(private readonly read: ReactiveDependencyReader) {}\n\n\tpublic get(): unknown {\n\t\ttrackReactiveDependency(this);\n\t\treturn this.read();\n\t}\n\n\tpublic subscribe(notify: ReactiveSubscriber<unknown>): () => void {\n\t\tthis.subscribers.add(notify);\n\n\t\treturn () => {\n\t\t\tthis.subscribers.delete(notify);\n\t\t};\n\t}\n\n\tpublic addWatcher(notify: () => void): () => void {\n\t\tthis.watcherListeners.add(notify);\n\n\t\treturn () => {\n\t\t\tthis.watcherListeners.delete(notify);\n\t\t};\n\t}\n\n\tpublic getVersion(): number {\n\t\treturn this.version;\n\t}\n\n\tpublic notify(nextValue: unknown): void {\n\t\tthis.version += 1;\n\t\tlet watcherError: unknown;\n\n\t\ttry {\n\t\t\tthis.notifyWatchers();\n\t\t} catch (error) {\n\t\t\twatcherError = error;\n\t\t}\n\n\t\tthis.publish(nextValue);\n\n\t\tif (watcherError) {\n\t\t\tthrow watcherError;\n\t\t}\n\t}\n\n\tprivate publish(nextValue: unknown): void {\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tsubscriber(nextValue);\n\t\t}\n\t}\n\n\tprivate notifyWatchers(): void {\n\t\tconst errors: unknown[] = [];\n\n\t\tfor (const listener of this.watcherListeners) {\n\t\t\ttry {\n\t\t\t\tlistener();\n\t\t\t} catch (error) {\n\t\t\t\terrors.push(error);\n\t\t\t}\n\t\t}\n\n\t\tif (errors.length === 1) {\n\t\t\tthrow errors[0];\n\t\t}\n\n\t\tif (errors.length > 1) {\n\t\t\tthrow new AggregateError(errors, 'Multiple reactive dependency notifications failed.');\n\t\t}\n\t}\n}\n\nfunction isSignalLikeBindingValue(value: unknown): value is { get(): unknown } {\n\treturn typeof value === 'object' && value !== null && typeof (value as { get?: unknown }).get === 'function';\n}\n\n/**\n * Shared reactivity engine used by both `RadiantElement` and\n * `RadiantController`.\n *\n * This class owns three pieces of shared behavior:\n *\n * - defining reactive accessors on the host object\n * - exposing cached JSX bindings such as `bindings.count` and `$count`\n * - publishing tracked updates into the signals graph and update callbacks\n *\n * Host-specific concerns such as attribute reflection, render lifecycles, and\n * custom-element APIs stay in the outer host classes.\n */\nexport class ReactiveHost<Host extends object, Bindings extends object = {}> {\n\tpublic readonly bindings: ReactiveBindings<Bindings>;\n\tpublic readonly $: ReactiveBindings<Bindings>;\n\n\tprivate reactiveFields = new Map<string, ReactiveField>();\n\tprivate reactiveDependencies = new Map<string, ReactiveHostDependency>();\n\tprivate reactiveDependencyReaders = new Map<string, ReactiveDependencyReader>();\n\tprivate reactiveBindings = new Map<string, SubscribableJsxValue>();\n\tprivate updateCallbacks = new Map<string, Set<(...rest: any[]) => any>>();\n\tprivate onConnectedCallbacks: (() => void)[] = [];\n\tprivate onDisconnectedCallback: (() => void)[] = [];\n\n\tconstructor(\n\t\tprivate readonly host: Host,\n\t\tprivate readonly access: ReactiveHostAccess<Host>,\n\t\tprivate readonly shouldAutoBind: () => boolean,\n\t) {\n\t\tconst bindingNamespace = this.createReactiveBindingNamespace();\n\t\tthis.bindings = bindingNamespace;\n\t\tthis.$ = bindingNamespace;\n\t}\n\n\t/**\n\t * Runs all connection callbacks registered by decorators or host adapters.\n\t */\n\tpublic connectHost(): void {\n\t\tfor (const callback of this.onConnectedCallbacks) {\n\t\t\tcallback();\n\t\t}\n\t}\n\n\t/**\n\t * Runs all cleanup callbacks registered for host disconnect.\n\t */\n\tpublic disconnectHost(): void {\n\t\tfor (const cleanup of this.onDisconnectedCallback) {\n\t\t\tcleanup();\n\t\t}\n\t}\n\n\t/**\n\t * Publishes a reactive member change to tracked dependencies and explicit\n\t * update callbacks.\n\t */\n\tpublic notifyUpdate(changedProperty: string, oldValue: unknown, value: unknown): void {\n\t\tif (oldValue === value) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.reactiveDependencies.get(changedProperty)?.notify(value);\n\t\tconst updates = this.updateCallbacks.get(changedProperty);\n\n\t\tif (updates) {\n\t\t\tfor (const update of updates) {\n\t\t\t\tupdate();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Registers a callback that should run when the outer host disconnects.\n\t */\n\tpublic registerCleanupCallback(callback: () => void): void {\n\t\tthis.onDisconnectedCallback.push(callback);\n\t}\n\n\t/**\n\t * Registers a callback that should run whenever the outer host connects.\n\t */\n\tpublic registerConnectedCallback(callback: () => void): void {\n\t\tthis.onConnectedCallbacks.push(callback);\n\t}\n\n\t/**\n\t * Placeholder hydration hook so shared decorators can target both host types.\n\t *\n\t * `ReactiveHost` itself does not persist hydration bindings; concrete hosts\n\t * such as `RadiantElement` can override this behavior at the outer layer.\n\t */\n\tpublic registerHydrationBinding(_name: string, _binding: SsrSerializableHydrationBinding): void {}\n\n\t/**\n\t * Registers a raw reader for a reactive member so tracked dependency reads do\n\t * not need to go back through the public accessor.\n\t */\n\tpublic registerReactiveDependencyReader(property: string, read: ReactiveDependencyReader): void {\n\t\tthis.reactiveDependencyReaders.set(property, read);\n\t}\n\n\t/**\n\t * Registers a callback that runs whenever a named reactive member changes.\n\t *\n\t * Returns a disposer that removes the callback.\n\t */\n\tpublic registerUpdateCallback(property: string, update: (...rest: any[]) => any): () => void {\n\t\tif (!this.updateCallbacks.has(property)) {\n\t\t\tthis.updateCallbacks.set(property, new Set());\n\t\t}\n\n\t\tconst callbacks = this.updateCallbacks.get(property)!;\n\t\tcallbacks.add(update);\n\n\t\treturn () => {\n\t\t\tcallbacks.delete(update);\n\n\t\t\tif (callbacks.size === 0) {\n\t\t\t\tthis.updateCallbacks.delete(property);\n\t\t\t}\n\t\t};\n\t}\n\n\t/**\n\t * Returns the cached JSX binding object for a named reactive member.\n\t */\n\tpublic getReactiveBinding<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>> {\n\t\tconst cachedBinding = this.reactiveBindings.get(property);\n\n\t\tif (cachedBinding) {\n\t\t\treturn cachedBinding as SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>>;\n\t\t}\n\n\t\tconst binding = createSubscribableJsxValue<ReactiveBindingValue<Bindings, Property>>({\n\t\t\tgetValue: () => this.readReactiveBindingValue(property) as ReactiveBindingValue<Bindings, Property>,\n\t\t\tsubscribe: (notify) =>\n\t\t\t\tthis.registerUpdateCallback(property, () => {\n\t\t\t\t\tnotify(this.readReactiveBindingValue(property) as ReactiveBindingValue<Bindings, Property>);\n\t\t\t\t}),\n\t\t});\n\n\t\tthis.reactiveBindings.set(property, binding);\n\t\treturn binding;\n\t}\n\n\t/**\n\t * Defines a stable binding companion property such as `$count` on the host or\n\t * its chosen binding target.\n\t */\n\tpublic defineReactiveBinding(property: string, bind: ReactiveBindingOption = true): void {\n\t\tconst bindingPropertyName = typeof bind === 'string' ? bind : bind ? `$${property}` : undefined;\n\t\tconst bindingTarget = this.access.getBindingTarget?.(this.host) ?? this.host;\n\n\t\tif (!bindingPropertyName || this.access.hasProperty(this.host, bindingPropertyName)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.access.defineProperty(bindingTarget, bindingPropertyName, {\n\t\t\tget: () => this.getReactiveBinding(property as StringPropertyKey<Bindings>),\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t});\n\t}\n\n\t/**\n\t * Records a dependency read for the named reactive member.\n\t */\n\tpublic trackReactiveRead(property: string): void {\n\t\ttrackReactiveDependency(this.getReactiveDependency(property));\n\t}\n\n\t/**\n\t * Defines a reactive getter/setter pair on the host and wires it into\n\t * bindings, dependency tracking, and update notifications.\n\t */\n\tpublic defineReactiveAccessor<T>(propertyName: string, options: ReactiveAccessorOptions<T>): void {\n\t\tconst bind = options.bind ?? this.shouldAutoBind();\n\n\t\tthis.defineReactiveBinding(propertyName, bind);\n\t\tthis.registerReactiveDependencyReader(propertyName, options.getValue);\n\n\t\tthis.access.defineProperty(this.host, propertyName, {\n\t\t\tget: () => {\n\t\t\t\tthis.trackReactiveRead(propertyName);\n\t\t\t\treturn options.getValue();\n\t\t\t},\n\t\t\tset: (newValue: T) => {\n\t\t\t\tconst oldValue = options.getValue();\n\n\t\t\t\tif (oldValue === newValue) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\toptions.setValue(newValue);\n\t\t\t\tthis.notifyUpdate(propertyName, oldValue, newValue);\n\t\t\t},\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t});\n\n\t\tif (options.notifyInitialValue !== undefined) {\n\t\t\tthis.notifyUpdate(propertyName, undefined, options.notifyInitialValue);\n\t\t}\n\t}\n\n\t/**\n\t * Defines a controller- or element-local reactive field with optional JSX\n\t * binding exposure.\n\t */\n\tpublic createReactiveField<T>(propertyName: string, initialValue: T, options: ReactiveFieldOptions = {}): void {\n\t\tconst reactiveField: ReactiveField<T> = {\n\t\t\tname: propertyName,\n\t\t\tvalue: initialValue,\n\t\t\tinitialValue,\n\t\t};\n\n\t\tthis.reactiveFields.set(propertyName, reactiveField);\n\n\t\tthis.defineReactiveAccessor(propertyName, {\n\t\t\tbind: options.bind,\n\t\t\tgetValue: () => this.reactiveFields.get(propertyName)?.value as T | undefined,\n\t\t\tsetValue: (newValue: T) => {\n\t\t\t\tthis.reactiveFields.set(propertyName, { ...reactiveField, value: newValue });\n\t\t\t},\n\t\t\tnotifyInitialValue: initialValue,\n\t\t});\n\t}\n\n\tprivate createReactiveBindingNamespace(): ReactiveBindings<Bindings> {\n\t\treturn new Proxy(Object.create(null) as ReactiveBindings<Bindings>, {\n\t\t\tget: (_target, property) => {\n\t\t\t\tif (typeof property !== 'string') {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\treturn this.getReactiveBinding(property as StringPropertyKey<Bindings>);\n\t\t\t},\n\t\t}) as ReactiveBindings<Bindings>;\n\t}\n\n\tprivate getReactiveDependency(property: string): ReactiveHostDependency {\n\t\tconst cachedDependency = this.reactiveDependencies.get(property);\n\n\t\tif (cachedDependency) {\n\t\t\treturn cachedDependency;\n\t\t}\n\n\t\tconst dependency = new ReactiveHostDependency(() => this.readReactiveDependencyValue(property));\n\t\tthis.reactiveDependencies.set(property, dependency);\n\t\treturn dependency;\n\t}\n\n\tprivate readReactiveDependencyValue(property: string): unknown {\n\t\tconst reader = this.reactiveDependencyReaders.get(property);\n\n\t\tif (reader) {\n\t\t\treturn reader();\n\t\t}\n\n\t\treturn this.readReactiveBindingValue(property as StringPropertyKey<Bindings>);\n\t}\n\n\tprivate readReactiveBindingValue<Property extends StringPropertyKey<Bindings>>(property: Property): unknown {\n\t\tconst value = this.access.readProperty(this.host, property);\n\n\t\tif (isSignalLikeBindingValue(value)) {\n\t\t\treturn value.get();\n\t\t}\n\n\t\treturn value;\n\t}\n}\n",
12
+ "import { render as renderJsx, type JsxRenderable, type SubscribableJsxValue } from '@ecopages/jsx';\nimport { createReactiveComputed, createReactiveWatcher, type ReactiveComputed } from './reactivity-adapter';\nimport type { SsrSerializableContextProvider } from '../context/context-provider';\nimport type { UnknownContext } from '../context/types';\nimport {\n\trunLegacyInstanceInitializers,\n\trunLegacyPostConstructionInitializers,\n} from '../decorators/legacy/instance-initializers';\nimport { ReactiveHost, type ReactiveHostLike } from './reactive-host';\nimport type {\n\tReactiveBindingOption,\n\tReactivePropertyOptions,\n\tReactiveBindingValue,\n\tReactiveBindings,\n\tReactiveFieldOptions,\n} from './reactive-prop-core';\nimport type { SsrSerializableHydrationBinding } from './ssr-hydration-binding';\nimport { defaultValueForType } from '../utils/attribute-utils';\nimport { validateReactivePropertyDefault } from './reactive-prop-core';\n\ntype StringPropertyKey<Value> = Extract<keyof Value, string>;\n\n/**\n * Attaches Radiant reactivity to an existing DOM element without defining a\n * custom element.\n *\n * `RadiantController` is the controller-host counterpart to `RadiantElement`.\n * It can enhance authored DOM, or it can take over the host's inner DOM by\n * overriding `render()`.\n *\n * When used with the controller registry, the attached host is typically an\n * element carrying `data-controller=\"...\"`.\n *\n * @typeParam Bindings - Explicit internal bindable shape. Include only the\n * reactive keys that JSX bindings should accept.\n */\nexport class RadiantController<Bindings extends object = {}> implements ReactiveHostLike<Bindings> {\n\tpublic readonly host: Element;\n\tpublic readonly element: Element;\n\tpublic readonly bindings: ReactiveBindings<Bindings>;\n\tpublic readonly $: ReactiveBindings<Bindings>;\n\n\tprivate readonly reactiveHost: ReactiveHost<this, Bindings>;\n\tprivate connected = false;\n\tprivate isRendering = false;\n\tprivate isRenderScheduled = false;\n\tprivate isSsrLifecycle = false;\n\tprivate needsRender = false;\n\tprivate contextProviders = new Map<string, SsrSerializableContextProvider>();\n\tprivate hydrationBindings = new Map<string, SsrSerializableHydrationBinding>();\n\tprivate renderSignal?: ReactiveComputed<JsxRenderable>;\n\tprivate readonly renderWatcher = createReactiveWatcher(() => {\n\t\tthis.requestUpdate();\n\t});\n\n\tconstructor(host: Element) {\n\t\tthis.host = host;\n\t\tthis.element = host;\n\t\tthis.reactiveHost = new ReactiveHost<this, Bindings>(\n\t\t\tthis,\n\t\t\t{\n\t\t\t\tdefineProperty: (target, property, descriptor) => Object.defineProperty(target, property, descriptor),\n\t\t\t\thasProperty: (target, property) => property in target,\n\t\t\t\treadProperty: (target, property) => (target as Record<string, unknown>)[property],\n\t\t\t},\n\t\t\t() => this.shouldAutoBindReactiveMembers(),\n\t\t);\n\t\tthis.bindings = this.reactiveHost.bindings;\n\t\tthis.$ = this.reactiveHost.$;\n\t\trunLegacyInstanceInitializers(this);\n\t}\n\n\t/**\n\t * Connects the controller to its host and starts reactive subscriptions.\n\t *\n\t * If the controller owns a render lifecycle by overriding `render()`, the\n\t * first update runs immediately after connection.\n\t */\n\tpublic connect(): void {\n\t\trunLegacyPostConstructionInitializers(this);\n\t\tthis.connected = true;\n\t\tthis.reactiveHost.connectHost();\n\n\t\tif (this.shouldRunRenderLifecycle()) {\n\t\t\tthis.update();\n\t\t}\n\t}\n\n\t/**\n\t * Runs controller lifecycle work in SSR mode so `connect()` skips the client\n\t * render/update path even when subclasses override it.\n\t */\n\tpublic runWithSsrLifecycle<T>(work: () => T): T {\n\t\tthis.isSsrLifecycle = true;\n\n\t\ttry {\n\t\t\treturn work();\n\t\t} finally {\n\t\t\tthis.isSsrLifecycle = false;\n\t\t}\n\t}\n\n\t/**\n\t * Disconnects the controller from its host and tears down reactive work.\n\t */\n\tpublic disconnect(): void {\n\t\tthis.connected = false;\n\t\tthis.disconnectRenderWatcher();\n\t\tthis.reactiveHost.disconnectHost();\n\t}\n\n\tpublic get isConnected(): boolean {\n\t\treturn this.connected;\n\t}\n\n\t/**\n\t * Returns the JSX tree rendered into the attached host.\n\t *\n\t * The base implementation renders nothing. Override this method when the\n\t * controller should own the host's inner DOM instead of only enhancing\n\t * authored markup.\n\t */\n\tpublic render(): JsxRenderable {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Schedules a render pass for render-owning controllers.\n\t *\n\t * Multiple calls in the same microtask are coalesced into a single update.\n\t */\n\tpublic requestUpdate(): void {\n\t\tif (!this.shouldRunRenderLifecycle()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.needsRender = true;\n\n\t\tif (this.isRenderScheduled) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isRenderScheduled = true;\n\n\t\tqueueMicrotask(() => {\n\t\t\tthis.isRenderScheduled = false;\n\n\t\t\tif (!this.needsRender) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.update();\n\t\t});\n\t}\n\n\t/**\n\t * Flushes the current render output into the attached host element.\n\t *\n\t * This is a no-op unless the controller overrides `render()`.\n\t */\n\tpublic update(): void {\n\t\tif (!this.shouldRunRenderLifecycle()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst renderTarget = this.getRenderTarget();\n\n\t\tif (!renderTarget) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.needsRender = true;\n\n\t\tif (!this.connected || this.isRendering) {\n\t\t\treturn;\n\t\t}\n\n\t\twhile (this.needsRender) {\n\t\t\tthis.needsRender = false;\n\t\t\tthis.isRendering = true;\n\n\t\t\ttry {\n\t\t\t\trenderJsx(this.resolveTrackedRenderOutput(), renderTarget);\n\t\t\t} finally {\n\t\t\t\tthis.isRendering = false;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Returns a subscribable JSX binding for a selected reactive member.\n\t */\n\tpublic bind<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>> {\n\t\treturn this.reactiveHost.getReactiveBinding(property);\n\t}\n\n\t/**\n\t * Returns the cached binding object for a selected reactive member.\n\t */\n\tpublic getReactiveBinding<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>> {\n\t\treturn this.reactiveHost.getReactiveBinding(property);\n\t}\n\n\t/**\n\t * Defines a reactive field directly on the controller instance.\n\t */\n\tpublic createReactiveField<T>(propertyName: string, initialValue: T, options: ReactiveFieldOptions = {}): void {\n\t\tthis.reactiveHost.createReactiveField(propertyName, initialValue, options);\n\t}\n\n\t/**\n\t * Defines a controller prop backed by the attached host element's property\n\t * channel instead of attribute serialization.\n\t *\n\t * This gives controller-based integrations the same reactive field surface as\n\t * `@prop(...)` on `RadiantElement`, while allowing external code to assign\n\t * structured values such as arrays or objects directly on `controller.host`.\n\t */\n\tpublic createReactiveProp<T = unknown>(propertyName: string, options: ReactivePropertyOptions<T>): void {\n\t\tconst { type, defaultValue, bind } = options;\n\n\t\tvalidateReactivePropertyDefault(type, defaultValue);\n\n\t\tconst hostPropertyBridge = new ControllerHostPropertyBridge<T>(this.host, this, propertyName);\n\t\tconst initialHostValue = hostPropertyBridge.getInitialValue();\n\t\tlet currentValue = (initialHostValue ?? defaultValue ?? defaultValueForType(type)) as T;\n\n\t\tthis.reactiveHost.defineReactiveAccessor(propertyName, {\n\t\t\tbind,\n\t\t\tgetValue: () => currentValue,\n\t\t\tsetValue: (newValue: T) => {\n\t\t\t\tcurrentValue = newValue;\n\t\t\t},\n\t\t\tnotifyInitialValue: currentValue,\n\t\t});\n\n\t\thostPropertyBridge.install();\n\n\t\tthis.registerCleanupCallback(() => {\n\t\t\thostPropertyBridge.restore();\n\t\t});\n\t}\n\n\t/**\n\t * Defines a JSX binding companion such as `$count` for a reactive member.\n\t */\n\tpublic defineReactiveBinding(property: string, bind: ReactiveBindingOption = true): void {\n\t\tthis.reactiveHost.defineReactiveBinding(property, bind);\n\t}\n\n\tpublic notifyUpdate(changedProperty: string, oldValue: unknown, value: unknown): void {\n\t\tthis.reactiveHost.notifyUpdate(changedProperty, oldValue, value);\n\t}\n\n\tpublic registerUpdateCallback(property: string, update: (...rest: any[]) => any): () => void {\n\t\treturn this.reactiveHost.registerUpdateCallback(property, update);\n\t}\n\n\t/**\n\t * Notifies context decorators that a provider or consumer for `contextName`\n\t * finished connecting on this controller host.\n\t *\n\t * Controllers currently rely on the shared client-side context event flow, so\n\t * the base implementation does not need extra bookkeeping here.\n\t */\n\tpublic connectedContextCallback(_contextName: UnknownContext): void {}\n\n\t/**\n\t * Registers a decorated context provider on the controller host.\n\t *\n\t * Controller providers participate in the same client-side event-based context\n\t * flow as `RadiantElement` providers. During SSR, the registered providers are\n\t * also exposed to descendant consumers and hydration payload collection.\n\t */\n\tpublic registerContextProvider(name: string, provider: SsrSerializableContextProvider): void {\n\t\tthis.contextProviders.set(name, provider);\n\t\tthis.hydrationBindings.set(name, provider);\n\t}\n\n\t/**\n\t * Registers a keyed SSR hydration binding for the controller host.\n\t */\n\tpublic registerHydrationBinding(name: string, binding: SsrSerializableHydrationBinding): void {\n\t\tthis.hydrationBindings.set(name, binding);\n\t}\n\n\t/**\n\t * Returns SSR-visible context providers registered on this controller.\n\t */\n\tpublic getSsrContextProviders(): SsrSerializableContextProvider[] {\n\t\treturn [...this.contextProviders.values()];\n\t}\n\n\t/**\n\t * Returns keyed hydration payload producers registered on this controller.\n\t */\n\tpublic getSsrHydrationBindings(): SsrSerializableHydrationBinding[] {\n\t\treturn [...this.hydrationBindings.values()];\n\t}\n\n\tpublic registerCleanupCallback(callback: () => void): void {\n\t\tthis.reactiveHost.registerCleanupCallback(callback);\n\t}\n\n\tpublic registerConnectedCallback(callback: () => void): void {\n\t\tthis.reactiveHost.registerConnectedCallback(callback);\n\t}\n\n\tpublic registerReactiveDependencyReader(property: string, read: () => unknown): void {\n\t\tthis.reactiveHost.registerReactiveDependencyReader(property, read);\n\t}\n\n\tpublic trackReactiveRead(property: string): void {\n\t\tthis.reactiveHost.trackReactiveRead(property);\n\t}\n\n\tpublic addEventListener(\n\t\ttype: string,\n\t\tlistener: EventListenerOrEventListenerObject,\n\t\toptions?: boolean | AddEventListenerOptions,\n\t): void {\n\t\tthis.host.addEventListener(type, listener, options);\n\t}\n\n\tpublic removeEventListener(\n\t\ttype: string,\n\t\tlistener: EventListenerOrEventListenerObject,\n\t\toptions?: boolean | EventListenerOptions,\n\t): void {\n\t\tthis.host.removeEventListener(type, listener, options);\n\t}\n\n\tpublic dispatchEvent(event: Event): boolean {\n\t\treturn this.host.dispatchEvent(event);\n\t}\n\n\t/**\n\t * Finds one or more elements inside the attached host by `data-ref`.\n\t *\n\t * Prefer `@query(...)` for stable, decorator-backed refs and use `getRef(...)`\n\t * for one-off lookups.\n\t */\n\tpublic getRef<T extends Element = Element>(ref: string, all: true): T[];\n\tpublic getRef<T extends Element = Element>(ref: string, all?: false): T | null;\n\tpublic getRef<T extends Element = Element>(ref: string, all = false): T | T[] | null {\n\t\tconst selector = `[data-ref=\"${ref}\"]`;\n\n\t\tif (all) {\n\t\t\treturn Array.from(this.host.querySelectorAll(selector)) as T[];\n\t\t}\n\n\t\treturn (this.host.querySelector(selector) as T) ?? null;\n\t}\n\n\tprotected shouldAutoBindReactiveMembers(): boolean {\n\t\treturn true;\n\t}\n\n\tprotected shouldRunRenderLifecycle(): boolean {\n\t\treturn !this.isSsrLifecycle && this.render !== RadiantController.prototype.render;\n\t}\n\n\tprivate getRenderTarget(): HTMLElement | null {\n\t\treturn this.host instanceof HTMLElement ? this.host : null;\n\t}\n\n\tprivate disconnectRenderWatcher(): void {\n\t\tif (!this.renderSignal) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.renderWatcher.unwatch(this.renderSignal);\n\t\tthis.renderSignal = undefined;\n\t}\n\n\tprivate resolveTrackedRenderOutput(): JsxRenderable {\n\t\tconst nextRenderSignal = createReactiveComputed(() => this.render());\n\t\tconst output = nextRenderSignal.get();\n\n\t\tif (!this.connected) {\n\t\t\treturn output;\n\t\t}\n\n\t\tif (this.renderSignal) {\n\t\t\tthis.renderWatcher.unwatch(this.renderSignal);\n\t\t}\n\n\t\tthis.renderSignal = nextRenderSignal;\n\t\tthis.renderWatcher.watch(nextRenderSignal);\n\t\treturn output;\n\t}\n}\n\nclass ControllerHostPropertyBridge<T> {\n\tprivate readonly ownDescriptor: PropertyDescriptor | undefined;\n\n\tconstructor(\n\t\tprivate readonly host: Element,\n\t\tprivate readonly controller: object,\n\t\tprivate readonly propertyName: string,\n\t) {\n\t\tthis.ownDescriptor = Object.getOwnPropertyDescriptor(this.host, this.propertyName);\n\t}\n\n\tpublic getInitialValue(): T | undefined {\n\t\treturn Reflect.get(this.host, this.propertyName) as T | undefined;\n\t}\n\n\tpublic install(): void {\n\t\tObject.defineProperty(this.host, this.propertyName, {\n\t\t\tget: () => Reflect.get(this.controller, this.propertyName),\n\t\t\tset: (newValue: T) => {\n\t\t\t\tReflect.set(this.controller, this.propertyName, newValue);\n\t\t\t},\n\t\t\tenumerable: this.ownDescriptor?.enumerable ?? true,\n\t\t\tconfigurable: true,\n\t\t});\n\t}\n\n\tpublic restore(): void {\n\t\tconst finalValue = Reflect.get(this.controller, this.propertyName);\n\n\t\tif (this.ownDescriptor) {\n\t\t\tObject.defineProperty(this.host, this.propertyName, this.ownDescriptor);\n\n\t\t\tif ('value' in this.ownDescriptor && this.ownDescriptor.writable) {\n\t\t\t\tReflect.set(this.host, this.propertyName, finalValue);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tReflect.deleteProperty(this.host, this.propertyName);\n\n\t\ttry {\n\t\t\tReflect.set(this.host, this.propertyName, finalValue);\n\t\t} catch {\n\t\t\tObject.defineProperty(this.host, this.propertyName, {\n\t\t\t\tvalue: finalValue,\n\t\t\t\twritable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t});\n\t\t}\n\t}\n}\n"
13
13
  ],
14
- "mappings": "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",
15
- "debugId": "9A3839FCF9D040A064756E2164756E21",
14
+ "mappings": "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",
15
+ "debugId": "9EF5A00EF40C5F8764756E2164756E21",
16
16
  "names": []
17
17
  }
@@ -1,3 +1,3 @@
1
- var r0=(($)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy($,{get:(Q,X)=>(typeof require<"u"?require:Q)[X]}):$)(function($){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+$+'" is not supported')});var I=Symbol.for("@ecopages/radiant.legacy-instance-initializers"),R=Symbol.for("@ecopages/radiant.legacy-post-construction-initializers"),K0=Symbol.for("@ecopages/radiant.legacy-executed-post-construction-initializers");function e0($,Q){f($,I,Q)}function $2($,Q){f($,R,Q)}function T($){O($,I)}function H($){let Q=$;O($,R,Q[K0]??=new Set)}function f($,Q,X){let q=$,Z=Object.prototype.hasOwnProperty.call(q,Q)?q[Q]:void 0;if(Array.isArray(Z)){Z.push(X);return}Object.defineProperty(q,Q,{value:[X]})}function O($,Q,X,q=Object.getPrototypeOf($)){if(!q||q===Object.prototype)return;O($,Q,X,Object.getPrototypeOf(q));let Z=q[Q];if(!Array.isArray(Z))return;for(let W of Z){if(X?.has(W))continue;W($),X?.add(W)}}function V($){switch($){case Array:return"array";case Boolean:return"boolean";case Number:return"number";case Object:return"object";case String:return"string"}}function w0($){switch(typeof $){case"boolean":return"boolean";case"number":return"number";case"string":return"string"}if(Array.isArray($))return"array";if(Object.prototype.toString.call($)==="[object Object]")return"object"}function D0($){switch($){case Number:return 0;case String:return"";case Boolean:return!1;default:return null}}function z0($){try{return JSON.parse($)}catch{throw TypeError("Invalid JSON string")}}var L0={array($){let Q=z0($);if(!Array.isArray(Q))throw TypeError(`Expected an array but got a value of type "${typeof Q}"`);return Q},boolean($){return!($==="0"||String($).toLowerCase()==="false")},number($){return Number($.replace(/_/g,""))},object($){let Q=JSON.parse($);if(Q===null||typeof Q!=="object"||Array.isArray(Q))throw TypeError(`expected value of type "object" but instead got value "${$}" of type "${w0(Q)}"`);return Q},string($){return $}},S={default:N,array:h,object:h};function h($){return JSON.stringify($)}function N($){return`${$}`}function K($,Q){let X=V(Q);if(!X)throw TypeError(`[radiant-element] Unknown type "${Q}"`);return L0[X]($)}function g($,Q){let X=V(Q);if(!X)throw TypeError(`[radiant-element] Unknown type "${Q}"`);return(S[X]??S.default??N)($)}function O0($){return typeof $==="boolean"}function P0($){return typeof $==="number"}function E0($){return typeof $==="string"}function j0($){return Array.isArray($)}function A0($){return typeof $==="object"&&!Array.isArray($)&&$!==null}function b($,Q){switch($){case Boolean:return O0(Q);case Number:return P0(Q);case String:return E0(Q);case Array:return j0(Q);case Object:return A0(Q);default:return!1}}var v=($,Q,X,q)=>{if(Q===Boolean){let W=$.getAttribute(X);if(W===null)return q;return W===""?!0:K(W,Q)}let Z=$.getAttribute(X);return Z!==null?K(Z,Q):q??D0(Q)};function m($,Q){if(Q!==void 0&&!b($,Q))throw Error(`defaultValue does not match the expected type for ${$.name}`)}function y($,Q,X,q){return{type:X,name:$,value:q,initialValue:q,attribute:Q,converter:{fromAttribute:(Z)=>K(Z,X),toAttribute:(Z)=>g(Z,X)}}}import{Computed as _0,subtle as k0,trackDependency as C0}from"@ecopages/signals";function I0($){return $}function c($){return $}var s={trackDependency($){C0(I0($))},createComputed($){return new _0($)},createWatcher($){let Q=new k0.Watcher($);return{watch(X){Q.watch(c(X))},unwatch(X){Q.unwatch(c(X))}}}};var u=s;function w(){return u}function R0($){u=$}function P($){w().trackDependency($)}function d($){return w().createComputed($)}function p($){return w().createWatcher($)}function i($){return $.replace(/&/g,"\\u0026").replace(/</g,"\\u003c").replace(/>/g,"\\u003e").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}var J="data-hydration",o="data-hydration-type",E="data-hydration-key";function Y2($){let Q=$.hydrationKey?` ${E}="${T0($.hydrationKey)}"`:"";return`<script type="application/json" ${J} ${o}="${$.type}"${Q}>${$.serializedValue}</script>`}function K2($){return i($)}function w2($,Q){let X=$.textContent;if(!X)return Q;try{return JSON.parse(X)}catch{if(typeof console<"u")console.warn(`[@ecopages/radiant] Failed to parse hydration payload from <script ${J}>:`,X.slice(0,120));return Q}}function D2($,Q,X){let q=$.children;if(!q||q.length===0){let Z=$.childNodes;if(!Z||Z.length===0)return null;for(let W=0;W<Z.length;W+=1){let G=Z[W];if(G.nodeType!==1)continue;let M=G;if(l(M,Q,X))return M}return null}for(let Z=0;Z<q.length;Z+=1)if(l(q[Z],Q,X))return q[Z];return null}function l($,Q,X){if($.tagName!=="SCRIPT"||!$.hasAttribute(J)||$.getAttribute(o)!==Q)return!1;if(X!==void 0)return $.getAttribute(E)===X;return!$.hasAttribute(E)}function T0($){return $.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}import{createMarkupNodeLike as f0,isKeyedJsxValue as n,isSlotJsxValue as S0}from"@ecopages/jsx";var B="",z="data-radiant-slot-projection";function a($){let Q=new Map;for(let X of Array.from($.childNodes)){if(g0(X))continue;h0(Q,N0(X),X)}return Q}function r($){let Q;try{Q=JSON.parse($)}catch{if(typeof console<"u")console.warn("[@ecopages/radiant] Failed to parse slot projection payload:",$.slice(0,120));return new Map}let X=new Map;for(let[q,Z]of Object.entries(Q)){if(!Array.isArray(Z)||Z.length===0)continue;X.set(j(q),Z.map((W)=>f0(W)))}return X}function t($){let Q=Array.from($.childNodes).filter((X)=>Z0(X)).map((X)=>D(X)??"").filter((X)=>X!=="");return Q.length>0?Q.join(""):void 0}function e($){let Q={};for(let[X,q]of $.entries()){let Z=q.map((W)=>D(W)).filter((W)=>W!==void 0&&W!=="");if(Z.length>0)Q[X]=Z}return Object.keys(Q).length>0?JSON.stringify(Q):void 0}function $0($,Q){let X=!1,q=(W)=>{if(S0(W))return X=!0,v0(W,Q,q);if(n(W))return V0(W,q(W.value));if(b0(W))return{_$rType$:1,rootLocalName:W.rootLocalName,ssrIntrinsicProps:W.ssrIntrinsicProps,strings:W.strings,values:W.values.map((G)=>q(G))};if(X0(W))return Array.from(W,(G)=>q(G));return W},Z=q($);return{containsSlots:X,value:Z}}function Q0($){for(let Q of Array.from($.childNodes)){if(!q0(Q))continue;let X=Q.textContent??void 0;return Q.parentNode?.removeChild(Q),X}return}function h0($,Q,X){let q=$.get(Q);if(q){q.push(X);return}$.set(Q,[X])}function V0($,Q){return{...$,value:Q}}function N0($){if($ instanceof Element)return j($.getAttribute("slot"));return B}function X0($){return typeof $!=="string"&&typeof $==="object"&&$!==null&&Symbol.iterator in $}function q0($){return $ instanceof HTMLScriptElement&&$.hasAttribute(z)}function Z0($){return $ instanceof HTMLScriptElement&&$.hasAttribute(J)}function g0($){return q0($)||Z0($)}function b0($){return typeof $==="object"&&$!==null&&$._$rType$===1&&Array.isArray($.strings)&&Array.isArray($.values)}function j($){return $??B}function D($){if($===void 0||$===null||$===!1||$===!0)return;if(typeof Node<"u"&&$ instanceof Node){if($.nodeType===Node.TEXT_NODE)return $.textContent??"";return $.outerHTML??$.textContent??void 0}if(n($))return D($.value);if(typeof $==="string"||typeof $==="number"||typeof $==="bigint")return String($);if(typeof $==="object"&&$!==null&&"outerHTML"in $)return typeof $.outerHTML==="string"?$.outerHTML:$.textContent??void 0;if(X0($))return Array.from($,(Q)=>D(Q)??"").join("");return}function v0($,Q,X){let q=Q.get(j($.name));if(q&&q.length>0)return q.length===1?q[0]:q;if($.fallback===void 0)return"";return X($.fallback)}import{hydrate as m0,render as y0}from"@ecopages/jsx";class A{#$;#Q=new Map;#X;#Z;#q;#W=0;constructor($){this.#$=$,this.#Z=p(()=>{this.#$.requestUpdate()})}get slotProjectionVersion(){return this.#W}getSlotElement($){return this.getSlotElements($)[0]??null}getSlotElements($){return this.ensureSlotProjectionState(),(this.#Q.get($??B)??[]).filter((Q)=>typeof Node<"u"&&Q instanceof Element)}getSlotProjectionScriptTag(){this.ensureSlotProjectionState();let $=e(this.#Q);if(!$)return;return`<script type="application/json" ${z}>${c0($)}</script>`}getAuthoredHydrationScriptMarkup(){return t(this.#$)??void 0}hydrate($){this.disconnectSlotProjectionObserver();try{m0(this.resolveTrackedRenderOutput().value,$)}finally{this.observeSlotProjection()}}render($){this.disconnectSlotProjectionObserver();try{y0(this.resolveTrackedRenderOutput().value,$)}finally{this.observeSlotProjection()}}observeSlotProjection(){if(typeof MutationObserver>"u"||this.#q||!this.#$.isConnected)return;this.#q=new MutationObserver(($)=>this.handleSlotProjectionMutations($)),this.#q.observe(this.#$,{childList:!0})}disconnectSlotProjectionObserver(){this.#q?.disconnect(),this.#q=void 0}disconnectRenderWatcher(){if(!this.#X)return;this.#Z.unwatch(this.#X),this.#X=void 0}resolveTrackedRenderOutput(){let $=d(()=>this.resolveRenderOutput()),Q=$.get();if(!this.#$.isConnected)return Q;if(this.#X)this.#Z.unwatch(this.#X);return this.#X=$,this.#Z.watch($),Q}dispose(){this.disconnectSlotProjectionObserver(),this.disconnectRenderWatcher()}ensureSlotProjectionState(){if(this.#Q.size>0)return;let $=this.#$.isConnected?Q0(this.#$):void 0;if(typeof $==="string"&&$!==""){this.#Q=r($),this.#W+=1;return}if(this.#$.childNodes.length>0)this.#Q=a(this.#$),this.#W+=1}handleSlotProjectionMutations($){let Q=!1;for(let X of $){for(let q of Array.from(X.removedNodes))if(this.removeProjectedSlotNode(q))Q=!0;for(let q of Array.from(X.addedNodes)){if(q.parentNode!==this.#$)continue;if(this.addProjectedSlotNode(q))Q=!0}}if(Q)this.#W+=1,this.#$.requestUpdate()}addProjectedSlotNode($){if($ instanceof HTMLScriptElement&&($.hasAttribute(z)||$.hasAttribute(J)))return!1;let Q=$ instanceof Element?$.getAttribute("slot")??B:B,X=this.#Q.get(Q);if(X){if(X.includes($))return!1;return X.push($),!0}return this.#Q.set(Q,[$]),!0}removeProjectedSlotNode($){for(let[Q,X]of this.#Q.entries()){let q=X.indexOf($);if(q===-1)continue;if(X.splice(q,1),X.length===0)this.#Q.delete(Q);return!0}return!1}resolveRenderOutput(){return this.ensureSlotProjectionState(),$0(this.#$.render(),this.#Q)}}function c0($){return $.replace(/</g,"\\u003c")}import{createSubscribableJsxValue as s0}from"@ecopages/jsx";class W0{read;subscribers=new Set;watcherListeners=new Set;version=0;constructor($){this.read=$}get(){return P(this),this.read()}subscribe($){return this.subscribers.add($),()=>{this.subscribers.delete($)}}addWatcher($){return this.watcherListeners.add($),()=>{this.watcherListeners.delete($)}}getVersion(){return this.version}notify($){this.version+=1;let Q;try{this.notifyWatchers()}catch(X){Q=X}if(this.publish($),Q)throw Q}publish($){for(let Q of this.subscribers)Q($)}notifyWatchers(){let $=[];for(let Q of this.watcherListeners)try{Q()}catch(X){$.push(X)}if($.length===1)throw $[0];if($.length>1)throw AggregateError($,"Multiple reactive dependency notifications failed.")}}function u0($){return typeof $==="object"&&$!==null&&typeof $.get==="function"}class _{host;access;shouldAutoBind;bindings;$;reactiveFields=new Map;reactiveDependencies=new Map;reactiveDependencyReaders=new Map;reactiveBindings=new Map;updateCallbacks=new Map;onConnectedCallbacks=[];onDisconnectedCallback=[];constructor($,Q,X){this.host=$;this.access=Q;this.shouldAutoBind=X;let q=this.createReactiveBindingNamespace();this.bindings=q,this.$=q}connectHost(){for(let $ of this.onConnectedCallbacks)$()}disconnectHost(){for(let $ of this.onDisconnectedCallback)$()}notifyUpdate($,Q,X){if(Q===X)return;this.reactiveDependencies.get($)?.notify(X);let q=this.updateCallbacks.get($);if(q)for(let Z of q)Z()}registerCleanupCallback($){this.onDisconnectedCallback.push($)}registerConnectedCallback($){this.onConnectedCallbacks.push($)}registerHydrationBinding($,Q){}registerReactiveDependencyReader($,Q){this.reactiveDependencyReaders.set($,Q)}registerUpdateCallback($,Q){if(!this.updateCallbacks.has($))this.updateCallbacks.set($,new Set);let X=this.updateCallbacks.get($);return X.add(Q),()=>{if(X.delete(Q),X.size===0)this.updateCallbacks.delete($)}}getReactiveBinding($){let Q=this.reactiveBindings.get($);if(Q)return Q;let X=s0({getValue:()=>this.readReactiveBindingValue($),subscribe:(q)=>this.registerUpdateCallback($,()=>{q(this.readReactiveBindingValue($))})});return this.reactiveBindings.set($,X),X}bind($){return this.getReactiveBinding($)}defineReactiveBinding($,Q=!0){let X=typeof Q==="string"?Q:Q?`$${$}`:void 0,q=this.access.getBindingTarget?.(this.host)??this.host;if(!X||this.access.hasProperty(this.host,X))return;this.access.defineProperty(q,X,{get:()=>this.getReactiveBinding($),enumerable:!1,configurable:!0})}trackReactiveRead($){P(this.getReactiveDependency($))}defineReactiveAccessor($,Q){let X=Q.bind??this.shouldAutoBind();if(this.defineReactiveBinding($,X),this.registerReactiveDependencyReader($,Q.getValue),this.access.defineProperty(this.host,$,{get:()=>{return this.trackReactiveRead($),Q.getValue()},set:(q)=>{let Z=Q.getValue();if(Z===q)return;Q.setValue(q),this.notifyUpdate($,Z,q)},enumerable:!0,configurable:!0}),Q.notifyInitialValue!==void 0)this.notifyUpdate($,void 0,Q.notifyInitialValue)}createReactiveField($,Q,X={}){let q={name:$,value:Q,initialValue:Q};this.reactiveFields.set($,q),this.defineReactiveAccessor($,{bind:X.bind,getValue:()=>this.reactiveFields.get($)?.value,setValue:(Z)=>{this.reactiveFields.set($,{...q,value:Z})},notifyInitialValue:Q})}createReactiveBindingNamespace(){return new Proxy(Object.create(null),{get:($,Q)=>{if(typeof Q!=="string")return;return this.getReactiveBinding(Q)}})}getReactiveDependency($){let Q=this.reactiveDependencies.get($);if(Q)return Q;let X=new W0(()=>this.readReactiveDependencyValue($));return this.reactiveDependencies.set($,X),X}readReactiveDependencyValue($){let Q=this.reactiveDependencyReaders.get($);if(Q)return Q();return this.readReactiveBindingValue($)}readReactiveBindingValue($){let Q=this.access.readProperty(this.host,$);if(u0(Q))return Q.get();return Q}}var k=Symbol.for("@ecopages/radiant.ssr-preparation-callbacks"),G0=Symbol.for("@ecopages/radiant.ssr-preparation-running");function T2($,Q){let q=$[k];if(Array.isArray(q)){q.push(Q);return}Object.defineProperty($,k,{value:[Q],configurable:!0})}function J0($){let Q=$,X=Q[k];if(!Array.isArray(X))return;Q[G0]=!0;try{for(let q of X)q()}finally{delete Q[G0]}}var C=Symbol.for("@ecopages/radiant.hydrator-installed");function S2(){globalThis[C]=!0}function h2(){delete globalThis[C]}function F0(){return globalThis[C]===!0}import{getActiveSsrScopeValue as d0,withActiveSsrScopeValue as p0}from"@ecopages/jsx/server";var x0=Symbol.for("@ecopages/radiant.element-ssr-runtime");function B0(){return d0(x0)}function g2($,Q){return p0(x0,$,Q)}import{hasHydrationMarkers as i0,jsx as l0}from"@ecopages/jsx";var o0=n0();function n0(){if(typeof HTMLElement<"u")return HTMLElement;throw Error("RadiantElement requires HTMLElement. Install '@ecopages/radiant/server/light-dom-shim' before SSR imports.")}class H0 extends o0{renderRootMode="light";bindings;$;reactiveHost;reactivePropertyState;contextProviders=new Map;hydrationBindings=new Map;eventSubscriptions=new Map;eventEmitters=new Map;elementReady=!1;isRendering=!1;isFirstConnectPending=!1;isRenderScheduled=!1;needsRender=!1;renderRuntime;constructor(){super();this.reactivePropertyState=new U0(this),this.reactiveHost=new _(this,{defineProperty:($,Q,X)=>Object.defineProperty($,Q,X),getBindingTarget:($)=>Object.getPrototypeOf($)??$,hasProperty:($,Q)=>(Q in $),readProperty:($,Q)=>$[Q]},()=>this.shouldAutoBindReactiveMembers()),this.bindings=this.reactiveHost.bindings,this.$=this.reactiveHost.$,T(this)}get slotProjectionVersion(){return this.renderRuntime?.slotProjectionVersion??0}connectedCallback(){H(this);let $=this.isFirstConnectPending;if(this.elementReady=!0,this.reactiveHost.connectHost(),$)return;this.isFirstConnectPending=!0,queueMicrotask(()=>{if(this.isFirstConnectPending=!1,!this.isConnected)return;if(!this.shouldRunRenderLifecycle())return;if(this.getOrCreateRenderRuntime().observeSlotProjection(),M0(this)){if(this.needsRender=!1,this.hydrate(),this.needsRender)this.update();return}this.update()})}connectedContextCallback($){}disconnectedCallback(){this.renderRuntime?.dispose(),this.renderRuntime=void 0,this.removeAllSubscribedEvents(),this.reactiveHost.disconnectHost()}notifyUpdate($,Q,X){this.reactiveHost.notifyUpdate($,Q,X)}attributeChangedCallback($,Q,X){if(Q===X||!this.elementReady)return;this.reactivePropertyState.applyAttributeChange($,Q,X)}renderTemplate({target:$=this,template:Q,insert:X="replace",sanitize:q}){let Z=q?q(Q):Q;switch(X){case"replace":$.innerHTML=Z;break;case"beforeend":$.insertAdjacentHTML("beforeend",Z);break;case"afterbegin":$.insertAdjacentHTML("afterbegin",Z);break;case"beforebegin":$.insertAdjacentHTML("beforebegin",Z);break;case"afterend":$.insertAdjacentHTML("afterend",Z);break}}render(){return l0("slot",{})}renderViewToString($={}){if(!this.shouldRunRenderLifecycle())return this.innerHTML;return H(this),this.prepareForSsr(),a0().renderView(this,$)}hydrate(){if(!this.shouldRunRenderLifecycle()||!this.isConnected||this.isRendering)return;let{renderTarget:$}=this.resolveRenderSurface(),Q=this.getOrCreateRenderRuntime();this.isRendering=!0;try{Q.hydrate($)}finally{this.isRendering=!1}}requestUpdate(){if(!this.shouldRunRenderLifecycle())return;if(this.needsRender=!0,this.isRenderScheduled)return;this.isRenderScheduled=!0,queueMicrotask(()=>{if(this.isRenderScheduled=!1,!this.needsRender)return;this.update()})}update(){if(!this.shouldRunRenderLifecycle())return;let{renderTarget:$}=this.resolveRenderSurface(),Q=this.getOrCreateRenderRuntime();if(this.needsRender=!0,!this.isConnected||this.isRendering)return;if(this.isFirstConnectPending&&M0(this))return;while(this.needsRender&&this.isConnected){this.needsRender=!1,this.isRendering=!0;try{Q.render($)}finally{this.isRendering=!1}}}registerReactiveProperty($){this.reactivePropertyState.register($)}getReactiveProperties(){return this.reactivePropertyState.getAll()}registerReactiveDependencyReader($,Q){this.reactiveHost.registerReactiveDependencyReader($,Q)}registerContextProvider($,Q){this.contextProviders.set($,Q),this.hydrationBindings.set($,Q)}registerHydrationBinding($,Q){this.hydrationBindings.set($,Q)}getContextProviders(){return H(this),[...this.contextProviders.values()]}getHydrationBindings(){return H(this),[...this.hydrationBindings.values()]}prepareForSsr(){J0(this)}shouldAutoBindReactiveMembers(){return!0}shouldRunRenderLifecycle(){return this.render!==H0.prototype.render}getRenderTarget(){if(this.renderRootMode!=="shadow")return this;if(this.shadowRoot)return this.shadowRoot;if(typeof this.attachShadow!=="function")throw Error("RadiantElement shadow render mode requires attachShadow().");return this.attachShadow({mode:"open"})}registerUpdateCallback($,Q){return this.reactiveHost.registerUpdateCallback($,Q)}getReactiveBinding($){return this.reactiveHost.getReactiveBinding($)}bind($){return this.reactiveHost.bind($)}defineReactiveBinding($,Q=!0){this.reactiveHost.defineReactiveBinding($,Q)}trackReactiveRead($){this.reactiveHost.trackReactiveRead($)}subscribeEvents($){let Q=[];for(let X of $)Q.push(this.subscribeEvent(X));return Q}subscribeEvent($){let{interactionTarget:Q}=this.resolveRenderSurface(),X=(Z)=>{if(Z.target&&Z.target.matches($.selector))$.listener.call(this,Z)},q=`${$.type}:${$.selector}`;return Q.addEventListener($.type,X,$.options),this.eventSubscriptions.set(q,{...$,listener:X,target:Q}),this.unsubscribeEvent.bind(this,q)}unsubscribeEvent($){let Q=this.eventSubscriptions.get($);if(Q)Q.target.removeEventListener(Q.type,Q.listener,Q.options),this.eventSubscriptions.delete($)}removeAllSubscribedEvents(){for(let $ of this.eventSubscriptions.values())$.target.removeEventListener($.type,$.listener,$.options);this.eventSubscriptions.clear()}registerCleanupCallback($){this.reactiveHost.registerCleanupCallback($)}registerConnectedCallback($){this.reactiveHost.registerConnectedCallback($)}registerEventEmitter($,Q){this.eventEmitters.set($,Q)}getRef($,Q=!1){let X=`[data-ref="${$}"]`,{queryRoot:q}=this.resolveRenderSurface();if(Q)return Array.from(q.querySelectorAll(X));return q.querySelector(X)??null}getSlotElement($){return this.getOrCreateRenderRuntime().getSlotElement($)}getSlotElements($){return this.getOrCreateRenderRuntime().getSlotElements($)}createReactiveField($,Q,X={}){this.reactiveHost.createReactiveField($,Q,X)}createReactiveProp($,Q){this.reactivePropertyState.create($,Q,(X,q,Z)=>v(this,X,q,Z),(X,q)=>{this.reactiveHost.defineReactiveAccessor(X,q)})}getSlotProjectionScriptTag(){return this.getOrCreateRenderRuntime().getSlotProjectionScriptTag()}getAuthoredHydrationScriptMarkup(){return this.getOrCreateRenderRuntime().getAuthoredHydrationScriptMarkup()}resolveTrackedRenderOutput(){return this.getOrCreateRenderRuntime().resolveTrackedRenderOutput()}getOrCreateRenderRuntime(){if(this.renderRuntime)return this.renderRuntime;return this.renderRuntime=new A(this),this.renderRuntime}resolveRenderSurface(){let $=this.getRenderTarget(),Q=$ instanceof ShadowRoot?$:this;return{interactionTarget:Q,queryRoot:Q,renderTarget:$}}}function a0(){let $=B0();if(!$)throw Error("Radiant SSR runtime unavailable. Import `@ecopages/radiant/server/render-component` first.");return $}function M0($){return F0()&&i0($)}class U0{host;properties=new Map;preUpgradePropertyValues=new Map;constructor($){this.host=$;for(let Q of Object.getOwnPropertyNames($))this.preUpgradePropertyValues.set(Q,Reflect.get($,Q))}register($){this.properties.set($.name,$)}getAll(){return Array.from(this.properties.values())}applyAttributeChange($,Q,X){let q=this.properties.get($);if(!q)return;let Z=this.transformAttributeValue(X,q),W=this.transformAttributeValue(Q,q);Reflect.set(this.host,q.attribute,Z),this.host.notifyUpdate($,W,Z)}create($,Q,X,q){let{type:Z,attribute:W,reflect:G,defaultValue:M}=Q,F=W??$,L=this.preUpgradePropertyValues.has($),Y0=L?this.preUpgradePropertyValues.get($):void 0;m(Z,M);let U=L?Y0:X(Z,F,M);if(this.host.hasAttribute(F)&&(!G||U==null||U===""))this.host.removeAttribute(F);if(L&&Object.prototype.hasOwnProperty.call(this.host,$))Reflect.deleteProperty(this.host,$);let Y=y($,F,Z,U);if(this.register(Y),q($,{bind:Q.bind,getValue:()=>this.properties.get($)?.value,setValue:(x)=>{this.properties.set($,{...Y,value:x}),this.reflectValue(F,G,Y,x)}}),U!==void 0)queueMicrotask(()=>{let x=this.properties.get($)?.value;if(x===void 0)return;this.reflectValue(F,G,Y,x),this.host.notifyUpdate($,void 0,x)})}transformAttributeValue($,Q){return $!==null?Q.converter.fromAttribute($):$}reflectValue($,Q,X,q){if(!Q)return;if(q==null||q===""||q===!1){this.host.removeAttribute($);return}let Z=X.converter.toAttribute(q);this.host.setAttribute($,Z)}}export{H0 as RadiantElement};
1
+ var r0=(($)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy($,{get:(Q,X)=>(typeof require<"u"?require:Q)[X]}):$)(function($){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+$+'" is not supported')});var I=Symbol.for("@ecopages/radiant.legacy-instance-initializers"),R=Symbol.for("@ecopages/radiant.legacy-post-construction-initializers"),K0=Symbol.for("@ecopages/radiant.legacy-executed-post-construction-initializers");function e0($,Q){f($,I,Q)}function $2($,Q){f($,R,Q)}function T($){O($,I)}function H($){let Q=$;O($,R,Q[K0]??=new Set)}function f($,Q,X){let q=$,Z=Object.prototype.hasOwnProperty.call(q,Q)?q[Q]:void 0;if(Array.isArray(Z)){Z.push(X);return}Object.defineProperty(q,Q,{value:[X]})}function O($,Q,X,q=Object.getPrototypeOf($)){if(!q||q===Object.prototype)return;O($,Q,X,Object.getPrototypeOf(q));let Z=q[Q];if(!Array.isArray(Z))return;for(let W of Z){if(X?.has(W))continue;W($),X?.add(W)}}function V($){switch($){case Array:return"array";case Boolean:return"boolean";case Number:return"number";case Object:return"object";case String:return"string"}}function w0($){switch(typeof $){case"boolean":return"boolean";case"number":return"number";case"string":return"string"}if(Array.isArray($))return"array";if(Object.prototype.toString.call($)==="[object Object]")return"object"}function D0($){switch($){case Number:return 0;case String:return"";case Boolean:return!1;default:return null}}function z0($){try{return JSON.parse($)}catch{throw TypeError("Invalid JSON string")}}var L0={array($){let Q=z0($);if(!Array.isArray(Q))throw TypeError(`Expected an array but got a value of type "${typeof Q}"`);return Q},boolean($){return!($==="0"||String($).toLowerCase()==="false")},number($){return Number($.replace(/_/g,""))},object($){let Q=JSON.parse($);if(Q===null||typeof Q!=="object"||Array.isArray(Q))throw TypeError(`expected value of type "object" but instead got value "${$}" of type "${w0(Q)}"`);return Q},string($){return $}},S={default:N,array:h,object:h};function h($){return JSON.stringify($)}function N($){return`${$}`}function K($,Q){let X=V(Q);if(!X)throw TypeError(`[radiant-element] Unknown type "${Q}"`);return L0[X]($)}function g($,Q){let X=V(Q);if(!X)throw TypeError(`[radiant-element] Unknown type "${Q}"`);return(S[X]??S.default??N)($)}function O0($){return typeof $==="boolean"}function P0($){return typeof $==="number"}function E0($){return typeof $==="string"}function j0($){return Array.isArray($)}function A0($){return typeof $==="object"&&!Array.isArray($)&&$!==null}function b($,Q){switch($){case Boolean:return O0(Q);case Number:return P0(Q);case String:return E0(Q);case Array:return j0(Q);case Object:return A0(Q);default:return!1}}var v=($,Q,X,q)=>{if(Q===Boolean){let W=$.getAttribute(X);if(W===null)return q;return W===""?!0:K(W,Q)}let Z=$.getAttribute(X);return Z!==null?K(Z,Q):q??D0(Q)};function m($,Q){if(Q!==void 0&&!b($,Q))throw Error(`defaultValue does not match the expected type for ${$.name}`)}function y($,Q,X,q){return{type:X,name:$,value:q,initialValue:q,attribute:Q,converter:{fromAttribute:(Z)=>K(Z,X),toAttribute:(Z)=>g(Z,X)}}}import{Computed as _0,subtle as k0,trackDependency as C0}from"@ecopages/signals";function I0($){return $}function c($){return $}var s={trackDependency($){C0(I0($))},createComputed($){return new _0($)},createWatcher($){let Q=new k0.Watcher($);return{watch(X){Q.watch(c(X))},unwatch(X){Q.unwatch(c(X))}}}};var u=s;function w(){return u}function R0($){u=$}function P($){w().trackDependency($)}function d($){return w().createComputed($)}function p($){return w().createWatcher($)}function i($){return $.replace(/&/g,"\\u0026").replace(/</g,"\\u003c").replace(/>/g,"\\u003e").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}var J="data-hydration",o="data-hydration-type",E="data-hydration-key";function Y2($){let Q=$.hydrationKey?` ${E}="${T0($.hydrationKey)}"`:"";return`<script type="application/json" ${J} ${o}="${$.type}"${Q}>${$.serializedValue}</script>`}function K2($){return i($)}function w2($,Q){let X=$.textContent;if(!X)return Q;try{return JSON.parse(X)}catch{if(typeof console<"u")console.warn(`[@ecopages/radiant] Failed to parse hydration payload from <script ${J}>:`,X.slice(0,120));return Q}}function D2($,Q,X){let q=$.children;if(!q||q.length===0){let Z=$.childNodes;if(!Z||Z.length===0)return null;for(let W=0;W<Z.length;W+=1){let G=Z[W];if(G.nodeType!==1)continue;let M=G;if(l(M,Q,X))return M}return null}for(let Z=0;Z<q.length;Z+=1)if(l(q[Z],Q,X))return q[Z];return null}function l($,Q,X){if($.tagName!=="SCRIPT"||!$.hasAttribute(J)||$.getAttribute(o)!==Q)return!1;if(X!==void 0)return $.getAttribute(E)===X;return!$.hasAttribute(E)}function T0($){return $.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}import{createMarkupNodeLike as f0,isKeyedJsxValue as n,isSlotJsxValue as S0}from"@ecopages/jsx";var B="",z="data-radiant-slot-projection";function a($){let Q=new Map;for(let X of Array.from($.childNodes)){if(g0(X))continue;h0(Q,N0(X),X)}return Q}function r($){let Q;try{Q=JSON.parse($)}catch{if(typeof console<"u")console.warn("[@ecopages/radiant] Failed to parse slot projection payload:",$.slice(0,120));return new Map}let X=new Map;for(let[q,Z]of Object.entries(Q)){if(!Array.isArray(Z)||Z.length===0)continue;X.set(j(q),Z.map((W)=>f0(W)))}return X}function t($){let Q=Array.from($.childNodes).filter((X)=>Z0(X)).map((X)=>D(X)??"").filter((X)=>X!=="");return Q.length>0?Q.join(""):void 0}function e($){let Q={};for(let[X,q]of $.entries()){let Z=q.map((W)=>D(W)).filter((W)=>W!==void 0&&W!=="");if(Z.length>0)Q[X]=Z}return Object.keys(Q).length>0?JSON.stringify(Q):void 0}function $0($,Q){let X=!1,q=(W)=>{if(S0(W))return X=!0,v0(W,Q,q);if(n(W))return V0(W,q(W.value));if(b0(W))return{_$rType$:1,rootLocalName:W.rootLocalName,ssrIntrinsicProps:W.ssrIntrinsicProps,strings:W.strings,values:W.values.map((G)=>q(G))};if(X0(W))return Array.from(W,(G)=>q(G));return W},Z=q($);return{containsSlots:X,value:Z}}function Q0($){for(let Q of Array.from($.childNodes)){if(!q0(Q))continue;let X=Q.textContent??void 0;return Q.parentNode?.removeChild(Q),X}return}function h0($,Q,X){let q=$.get(Q);if(q){q.push(X);return}$.set(Q,[X])}function V0($,Q){return{...$,value:Q}}function N0($){if($ instanceof Element)return j($.getAttribute("slot"));return B}function X0($){return typeof $!=="string"&&typeof $==="object"&&$!==null&&Symbol.iterator in $}function q0($){return $ instanceof HTMLScriptElement&&$.hasAttribute(z)}function Z0($){return $ instanceof HTMLScriptElement&&$.hasAttribute(J)}function g0($){return q0($)||Z0($)}function b0($){return typeof $==="object"&&$!==null&&$._$rType$===1&&Array.isArray($.strings)&&Array.isArray($.values)}function j($){return $??B}function D($){if($===void 0||$===null||$===!1||$===!0)return;if(typeof Node<"u"&&$ instanceof Node){if($.nodeType===Node.TEXT_NODE)return $.textContent??"";return $.outerHTML??$.textContent??void 0}if(n($))return D($.value);if(typeof $==="string"||typeof $==="number"||typeof $==="bigint")return String($);if(typeof $==="object"&&$!==null&&"outerHTML"in $)return typeof $.outerHTML==="string"?$.outerHTML:$.textContent??void 0;if(X0($))return Array.from($,(Q)=>D(Q)??"").join("");return}function v0($,Q,X){let q=Q.get(j($.name));if(q&&q.length>0)return q.length===1?q[0]:q;if($.fallback===void 0)return"";return X($.fallback)}import{hydrate as m0,render as y0}from"@ecopages/jsx";class A{#$;#Q=new Map;#X;#Z;#q;#W=0;constructor($){this.#$=$,this.#Z=p(()=>{this.#$.requestUpdate()})}get slotProjectionVersion(){return this.#W}getSlotElements($){return this.ensureSlotProjectionState(),(this.#Q.get($??B)??[]).filter((Q)=>typeof Node<"u"&&Q instanceof Element)}getSlotProjectionScriptTag(){this.ensureSlotProjectionState();let $=e(this.#Q);if(!$)return;return`<script type="application/json" ${z}>${c0($)}</script>`}getAuthoredHydrationScriptMarkup(){return t(this.#$)??void 0}hydrate($){this.disconnectSlotProjectionObserver();try{m0(this.resolveTrackedRenderOutput().value,$)}finally{this.observeSlotProjection()}}render($){this.disconnectSlotProjectionObserver();try{y0(this.resolveTrackedRenderOutput().value,$)}finally{this.observeSlotProjection()}}observeSlotProjection(){if(typeof MutationObserver>"u"||this.#q||!this.#$.isConnected)return;this.#q=new MutationObserver(($)=>this.handleSlotProjectionMutations($)),this.#q.observe(this.#$,{childList:!0})}disconnectSlotProjectionObserver(){this.#q?.disconnect(),this.#q=void 0}disconnectRenderWatcher(){if(!this.#X)return;this.#Z.unwatch(this.#X),this.#X=void 0}resolveTrackedRenderOutput(){let $=d(()=>this.resolveRenderOutput()),Q=$.get();if(!this.#$.isConnected)return Q;if(this.#X)this.#Z.unwatch(this.#X);return this.#X=$,this.#Z.watch($),Q}dispose(){this.disconnectSlotProjectionObserver(),this.disconnectRenderWatcher()}ensureSlotProjectionState(){if(this.#Q.size>0)return;let $=this.#$.isConnected?Q0(this.#$):void 0;if(typeof $==="string"&&$!==""){this.#Q=r($),this.#W+=1;return}if(this.#$.childNodes.length>0)this.#Q=a(this.#$),this.#W+=1}handleSlotProjectionMutations($){let Q=!1;for(let X of $){for(let q of Array.from(X.removedNodes))if(this.removeProjectedSlotNode(q))Q=!0;for(let q of Array.from(X.addedNodes)){if(q.parentNode!==this.#$)continue;if(this.addProjectedSlotNode(q))Q=!0}}if(Q)this.#W+=1,this.#$.requestUpdate()}addProjectedSlotNode($){if($ instanceof HTMLScriptElement&&($.hasAttribute(z)||$.hasAttribute(J)))return!1;let Q=$ instanceof Element?$.getAttribute("slot")??B:B,X=this.#Q.get(Q);if(X){if(X.includes($))return!1;return X.push($),!0}return this.#Q.set(Q,[$]),!0}removeProjectedSlotNode($){for(let[Q,X]of this.#Q.entries()){let q=X.indexOf($);if(q===-1)continue;if(X.splice(q,1),X.length===0)this.#Q.delete(Q);return!0}return!1}resolveRenderOutput(){return this.ensureSlotProjectionState(),$0(this.#$.render(),this.#Q)}}function c0($){return $.replace(/</g,"\\u003c")}import{createSubscribableJsxValue as s0}from"@ecopages/jsx";class W0{read;subscribers=new Set;watcherListeners=new Set;version=0;constructor($){this.read=$}get(){return P(this),this.read()}subscribe($){return this.subscribers.add($),()=>{this.subscribers.delete($)}}addWatcher($){return this.watcherListeners.add($),()=>{this.watcherListeners.delete($)}}getVersion(){return this.version}notify($){this.version+=1;let Q;try{this.notifyWatchers()}catch(X){Q=X}if(this.publish($),Q)throw Q}publish($){for(let Q of this.subscribers)Q($)}notifyWatchers(){let $=[];for(let Q of this.watcherListeners)try{Q()}catch(X){$.push(X)}if($.length===1)throw $[0];if($.length>1)throw AggregateError($,"Multiple reactive dependency notifications failed.")}}function u0($){return typeof $==="object"&&$!==null&&typeof $.get==="function"}class _{host;access;shouldAutoBind;bindings;$;reactiveFields=new Map;reactiveDependencies=new Map;reactiveDependencyReaders=new Map;reactiveBindings=new Map;updateCallbacks=new Map;onConnectedCallbacks=[];onDisconnectedCallback=[];constructor($,Q,X){this.host=$;this.access=Q;this.shouldAutoBind=X;let q=this.createReactiveBindingNamespace();this.bindings=q,this.$=q}connectHost(){for(let $ of this.onConnectedCallbacks)$()}disconnectHost(){for(let $ of this.onDisconnectedCallback)$()}notifyUpdate($,Q,X){if(Q===X)return;this.reactiveDependencies.get($)?.notify(X);let q=this.updateCallbacks.get($);if(q)for(let Z of q)Z()}registerCleanupCallback($){this.onDisconnectedCallback.push($)}registerConnectedCallback($){this.onConnectedCallbacks.push($)}registerHydrationBinding($,Q){}registerReactiveDependencyReader($,Q){this.reactiveDependencyReaders.set($,Q)}registerUpdateCallback($,Q){if(!this.updateCallbacks.has($))this.updateCallbacks.set($,new Set);let X=this.updateCallbacks.get($);return X.add(Q),()=>{if(X.delete(Q),X.size===0)this.updateCallbacks.delete($)}}getReactiveBinding($){let Q=this.reactiveBindings.get($);if(Q)return Q;let X=s0({getValue:()=>this.readReactiveBindingValue($),subscribe:(q)=>this.registerUpdateCallback($,()=>{q(this.readReactiveBindingValue($))})});return this.reactiveBindings.set($,X),X}defineReactiveBinding($,Q=!0){let X=typeof Q==="string"?Q:Q?`$${$}`:void 0,q=this.access.getBindingTarget?.(this.host)??this.host;if(!X||this.access.hasProperty(this.host,X))return;this.access.defineProperty(q,X,{get:()=>this.getReactiveBinding($),enumerable:!1,configurable:!0})}trackReactiveRead($){P(this.getReactiveDependency($))}defineReactiveAccessor($,Q){let X=Q.bind??this.shouldAutoBind();if(this.defineReactiveBinding($,X),this.registerReactiveDependencyReader($,Q.getValue),this.access.defineProperty(this.host,$,{get:()=>{return this.trackReactiveRead($),Q.getValue()},set:(q)=>{let Z=Q.getValue();if(Z===q)return;Q.setValue(q),this.notifyUpdate($,Z,q)},enumerable:!0,configurable:!0}),Q.notifyInitialValue!==void 0)this.notifyUpdate($,void 0,Q.notifyInitialValue)}createReactiveField($,Q,X={}){let q={name:$,value:Q,initialValue:Q};this.reactiveFields.set($,q),this.defineReactiveAccessor($,{bind:X.bind,getValue:()=>this.reactiveFields.get($)?.value,setValue:(Z)=>{this.reactiveFields.set($,{...q,value:Z})},notifyInitialValue:Q})}createReactiveBindingNamespace(){return new Proxy(Object.create(null),{get:($,Q)=>{if(typeof Q!=="string")return;return this.getReactiveBinding(Q)}})}getReactiveDependency($){let Q=this.reactiveDependencies.get($);if(Q)return Q;let X=new W0(()=>this.readReactiveDependencyValue($));return this.reactiveDependencies.set($,X),X}readReactiveDependencyValue($){let Q=this.reactiveDependencyReaders.get($);if(Q)return Q();return this.readReactiveBindingValue($)}readReactiveBindingValue($){let Q=this.access.readProperty(this.host,$);if(u0(Q))return Q.get();return Q}}var k=Symbol.for("@ecopages/radiant.ssr-preparation-callbacks"),G0=Symbol.for("@ecopages/radiant.ssr-preparation-running");function T2($,Q){let q=$[k];if(Array.isArray(q)){q.push(Q);return}Object.defineProperty($,k,{value:[Q],configurable:!0})}function J0($){let Q=$,X=Q[k];if(!Array.isArray(X))return;Q[G0]=!0;try{for(let q of X)q()}finally{delete Q[G0]}}var C=Symbol.for("@ecopages/radiant.hydrator-installed");function S2(){globalThis[C]=!0}function h2(){delete globalThis[C]}function F0(){return globalThis[C]===!0}import{getActiveSsrScopeValue as d0,withActiveSsrScopeValue as p0}from"@ecopages/jsx/server";var x0=Symbol.for("@ecopages/radiant.element-ssr-runtime");function B0(){return d0(x0)}function g2($,Q){return p0(x0,$,Q)}import{hasHydrationMarkers as i0,jsx as l0}from"@ecopages/jsx";var o0=n0();function n0(){if(typeof HTMLElement<"u")return HTMLElement;throw Error("RadiantElement requires HTMLElement. Install '@ecopages/radiant/server/light-dom-shim' before SSR imports.")}class H0 extends o0{renderRootMode="light";bindings;$;reactiveHost;reactivePropertyState;contextProviders=new Map;hydrationBindings=new Map;eventSubscriptions=new Map;eventEmitters=new Map;elementReady=!1;isRendering=!1;isFirstConnectPending=!1;isRenderScheduled=!1;needsRender=!1;renderRuntime;constructor(){super();this.reactivePropertyState=new U0(this),this.reactiveHost=new _(this,{defineProperty:($,Q,X)=>Object.defineProperty($,Q,X),getBindingTarget:($)=>Object.getPrototypeOf($)??$,hasProperty:($,Q)=>(Q in $),readProperty:($,Q)=>$[Q]},()=>this.shouldAutoBindReactiveMembers()),this.bindings=this.reactiveHost.bindings,this.$=this.reactiveHost.$,T(this)}get slotProjectionVersion(){return this.renderRuntime?.slotProjectionVersion??0}connectedCallback(){H(this);let $=this.isFirstConnectPending;if(this.elementReady=!0,this.reactiveHost.connectHost(),$)return;this.isFirstConnectPending=!0,queueMicrotask(()=>{if(this.isFirstConnectPending=!1,!this.isConnected)return;if(!this.shouldRunRenderLifecycle())return;if(this.getOrCreateRenderRuntime().observeSlotProjection(),M0(this)){if(this.needsRender=!1,this.hydrate(),this.needsRender)this.update();return}this.update()})}connectedContextCallback($){}disconnectedCallback(){this.renderRuntime?.dispose(),this.renderRuntime=void 0,this.removeAllSubscribedEvents(),this.reactiveHost.disconnectHost()}notifyUpdate($,Q,X){this.reactiveHost.notifyUpdate($,Q,X)}attributeChangedCallback($,Q,X){if(Q===X||!this.elementReady)return;this.reactivePropertyState.applyAttributeChange($,Q,X)}renderTemplate({target:$=this,template:Q,insert:X="replace",sanitize:q}){let Z=q?q(Q):Q;switch(X){case"replace":$.innerHTML=Z;break;case"beforeend":$.insertAdjacentHTML("beforeend",Z);break;case"afterbegin":$.insertAdjacentHTML("afterbegin",Z);break;case"beforebegin":$.insertAdjacentHTML("beforebegin",Z);break;case"afterend":$.insertAdjacentHTML("afterend",Z);break}}render(){return l0("slot",{})}renderViewToString($={}){if(!this.shouldRunRenderLifecycle())return this.innerHTML;return H(this),this.prepareForSsr(),a0().renderView(this,$)}hydrate(){if(!this.shouldRunRenderLifecycle()||!this.isConnected||this.isRendering)return;let{renderTarget:$}=this.resolveRenderSurface(),Q=this.getOrCreateRenderRuntime();this.isRendering=!0;try{Q.hydrate($)}finally{this.isRendering=!1}}requestUpdate(){if(!this.shouldRunRenderLifecycle())return;if(this.needsRender=!0,this.isRenderScheduled)return;this.isRenderScheduled=!0,queueMicrotask(()=>{if(this.isRenderScheduled=!1,!this.needsRender)return;this.update()})}update(){if(!this.shouldRunRenderLifecycle())return;let{renderTarget:$}=this.resolveRenderSurface(),Q=this.getOrCreateRenderRuntime();if(this.needsRender=!0,!this.isConnected||this.isRendering)return;if(this.isFirstConnectPending&&M0(this))return;while(this.needsRender&&this.isConnected){this.needsRender=!1,this.isRendering=!0;try{Q.render($)}finally{this.isRendering=!1}}}registerReactiveProperty($){this.reactivePropertyState.register($)}getReactiveProperties(){return this.reactivePropertyState.getAll()}registerReactiveDependencyReader($,Q){this.reactiveHost.registerReactiveDependencyReader($,Q)}registerContextProvider($,Q){this.contextProviders.set($,Q),this.hydrationBindings.set($,Q)}registerHydrationBinding($,Q){this.hydrationBindings.set($,Q)}getContextProviders(){return H(this),[...this.contextProviders.values()]}getHydrationBindings(){return H(this),[...this.hydrationBindings.values()]}prepareForSsr(){J0(this)}shouldAutoBindReactiveMembers(){return!0}shouldRunRenderLifecycle(){return this.render!==H0.prototype.render}getRenderTarget(){if(this.renderRootMode!=="shadow")return this;if(this.shadowRoot)return this.shadowRoot;if(typeof this.attachShadow!=="function")throw Error("RadiantElement shadow render mode requires attachShadow().");return this.attachShadow({mode:"open"})}registerUpdateCallback($,Q){return this.reactiveHost.registerUpdateCallback($,Q)}getReactiveBinding($){return this.reactiveHost.getReactiveBinding($)}bind($){return this.reactiveHost.getReactiveBinding($)}defineReactiveBinding($,Q=!0){this.reactiveHost.defineReactiveBinding($,Q)}trackReactiveRead($){this.reactiveHost.trackReactiveRead($)}subscribeEvents($){let Q=[];for(let X of $)Q.push(this.subscribeEvent(X));return Q}subscribeEvent($){let{interactionTarget:Q}=this.resolveRenderSurface(),X=(Z)=>{if(Z.target&&Z.target.matches($.selector))$.listener.call(this,Z)},q=`${$.type}:${$.selector}`;return Q.addEventListener($.type,X,$.options),this.eventSubscriptions.set(q,{...$,listener:X,target:Q}),this.unsubscribeEvent.bind(this,q)}unsubscribeEvent($){let Q=this.eventSubscriptions.get($);if(Q)Q.target.removeEventListener(Q.type,Q.listener,Q.options),this.eventSubscriptions.delete($)}removeAllSubscribedEvents(){for(let $ of this.eventSubscriptions.values())$.target.removeEventListener($.type,$.listener,$.options);this.eventSubscriptions.clear()}registerCleanupCallback($){this.reactiveHost.registerCleanupCallback($)}registerConnectedCallback($){this.reactiveHost.registerConnectedCallback($)}registerEventEmitter($,Q){this.eventEmitters.set($,Q)}getRef($,Q=!1){let X=`[data-ref="${$}"]`,{queryRoot:q}=this.resolveRenderSurface();if(Q)return Array.from(q.querySelectorAll(X));return q.querySelector(X)??null}getSlotElement($){return this.getSlotElements($)[0]??null}getSlotElements($){return this.getOrCreateRenderRuntime().getSlotElements($)}createReactiveField($,Q,X={}){this.reactiveHost.createReactiveField($,Q,X)}createReactiveProp($,Q){this.reactivePropertyState.create($,Q,(X,q,Z)=>v(this,X,q,Z),(X,q)=>{this.reactiveHost.defineReactiveAccessor(X,q)})}getSlotProjectionScriptTag(){return this.getOrCreateRenderRuntime().getSlotProjectionScriptTag()}getAuthoredHydrationScriptMarkup(){return this.getOrCreateRenderRuntime().getAuthoredHydrationScriptMarkup()}resolveTrackedRenderOutput(){return this.getOrCreateRenderRuntime().resolveTrackedRenderOutput()}getOrCreateRenderRuntime(){if(this.renderRuntime)return this.renderRuntime;return this.renderRuntime=new A(this),this.renderRuntime}resolveRenderSurface(){let $=this.getRenderTarget(),Q=$ instanceof ShadowRoot?$:this;return{interactionTarget:Q,queryRoot:Q,renderTarget:$}}}function a0(){let $=B0();if(!$)throw Error("Radiant SSR runtime unavailable. Import `@ecopages/radiant/server/render-component` first.");return $}function M0($){return F0()&&i0($)}class U0{host;properties=new Map;preUpgradePropertyValues=new Map;constructor($){this.host=$;for(let Q of Object.getOwnPropertyNames($))this.preUpgradePropertyValues.set(Q,Reflect.get($,Q))}register($){this.properties.set($.name,$)}getAll(){return Array.from(this.properties.values())}applyAttributeChange($,Q,X){let q=this.properties.get($);if(!q)return;let Z=this.transformAttributeValue(X,q),W=this.transformAttributeValue(Q,q);Reflect.set(this.host,q.attribute,Z),this.host.notifyUpdate($,W,Z)}create($,Q,X,q){let{type:Z,attribute:W,reflect:G,defaultValue:M}=Q,F=W??$,L=this.preUpgradePropertyValues.has($),Y0=L?this.preUpgradePropertyValues.get($):void 0;m(Z,M);let U=L?Y0:X(Z,F,M);if(this.host.hasAttribute(F)&&(!G||U==null||U===""))this.host.removeAttribute(F);if(L&&Object.prototype.hasOwnProperty.call(this.host,$))Reflect.deleteProperty(this.host,$);let Y=y($,F,Z,U);if(this.register(Y),q($,{bind:Q.bind,getValue:()=>this.properties.get($)?.value,setValue:(x)=>{this.properties.set($,{...Y,value:x}),this.reflectValue(F,G,Y,x)}}),U!==void 0)queueMicrotask(()=>{let x=this.properties.get($)?.value;if(x===void 0)return;this.reflectValue(F,G,Y,x),this.host.notifyUpdate($,void 0,x)})}transformAttributeValue($,Q){return $!==null?Q.converter.fromAttribute($):$}reflectValue($,Q,X,q){if(!Q)return;if(q==null||q===""||q===!1){this.host.removeAttribute($);return}let Z=X.converter.toAttribute(q);this.host.setAttribute($,Z)}}export{H0 as RadiantElement};
2
2
 
3
- //# debugId=282CC73B7E25712B64756E2164756E21
3
+ //# debugId=5CB4B32FAD9B2A1F64756E2164756E21