@ecopages/radiant 0.3.0-alpha.8 → 0.3.0-alpha.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/core/radiant-controller.d.ts +1 -0
  2. package/dist/core/radiant-controller.js +2 -2
  3. package/dist/core/radiant-controller.js.map +3 -3
  4. package/dist/core/radiant-element.d.ts +14 -0
  5. package/dist/core/radiant-element.js +2 -2
  6. package/dist/core/radiant-element.js.map +3 -3
  7. package/dist/decorators/legacy/on-event.js +2 -2
  8. package/dist/decorators/legacy/on-event.js.map +5 -4
  9. package/dist/decorators/on-event.js +2 -2
  10. package/dist/decorators/on-event.js.map +5 -4
  11. package/dist/decorators/standard/on-event.js +2 -2
  12. package/dist/decorators/standard/on-event.js.map +5 -4
  13. package/dist/helpers/create-event-listener.js +2 -2
  14. package/dist/helpers/create-event-listener.js.map +5 -4
  15. package/dist/helpers/index.js +2 -2
  16. package/dist/helpers/index.js.map +5 -4
  17. package/dist/index.js +2 -2
  18. package/dist/index.js.map +7 -6
  19. package/dist/server/install-light-dom-shim.js +2 -2
  20. package/dist/server/install-light-dom-shim.js.map +3 -3
  21. package/dist/server/light-dom-shim.d.ts +9 -0
  22. package/dist/server/light-dom-shim.js +2 -2
  23. package/dist/server/light-dom-shim.js.map +3 -3
  24. package/dist/server/render-component.js +2 -2
  25. package/dist/server/render-component.js.map +3 -3
  26. package/dist/server/render-controller.js +2 -2
  27. package/dist/server/render-controller.js.map +3 -3
  28. package/dist/tools/escape-css-identifier.d.ts +1 -0
  29. package/dist/tools/escape-css-identifier.js +3 -0
  30. package/dist/tools/escape-css-identifier.js.map +10 -0
  31. package/dist/tools/index.d.ts +1 -0
  32. package/dist/tools/index.js +2 -2
  33. package/dist/tools/index.js.map +4 -3
  34. package/package.json +1 -1
package/dist/index.js.map CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/decorators/legacy/instance-initializers.ts", "../src/core/reactive-host.ts", "../src/core/ssr-preparation.ts", "../src/tools/escape-script-json.ts", "../src/core/hydration-codec.ts", "../src/core/slot-projection-runtime.ts", "../src/core/radiant-hydrator-state.ts", "../src/core/radiant-component-ssr-registry.ts", "../src/utils/attribute-utils.ts", "../src/core/radiant-element.ts", "../src/core/radiant-controller.ts", "../src/core/controller-metadata.ts", "../src/controller-registry.ts", "../src/decorators/bridge.ts", "../src/decorators/shared/reactive-attr.ts", "../src/decorators/legacy/attr.ts", "../src/decorators/standard/attr.ts", "../src/decorators/attr.ts", "../src/decorators/legacy/bound.ts", "../src/decorators/standard/bound.ts", "../src/decorators/bound.ts", "../src/decorators/controller.ts", "../src/core/custom-element-metadata.ts", "../src/decorators/legacy/custom-element.ts", "../src/decorators/standard/custom-element.ts", "../src/decorators/custom-element.ts", "../src/helpers/debounce.ts", "../src/decorators/legacy/debounce.ts", "../src/decorators/standard/debounce.ts", "../src/decorators/debounce.ts", "../src/tools/event-emitter.ts", "../src/helpers/create-event.ts", "../src/decorators/legacy/event.ts", "../src/decorators/standard/event.ts", "../src/decorators/event.ts", "../src/helpers/create-event-listener.ts", "../src/decorators/legacy/on-event.ts", "../src/decorators/standard/on-event.ts", "../src/decorators/on-event.ts", "../src/decorators/legacy/on-updated.ts", "../src/decorators/standard/on-updated.ts", "../src/decorators/on-updated.ts", "../src/core/reactive-prop-metadata.ts", "../src/decorators/legacy/reactive-prop.ts", "../src/decorators/standard/reactive-prop.ts", "../src/decorators/prop.ts", "../src/helpers/create-query.ts", "../src/decorators/legacy/query.ts", "../src/decorators/standard/query.ts", "../src/decorators/query.ts", "../src/helpers/create-query-slot.ts", "../src/decorators/legacy/query-slot.ts", "../src/decorators/standard/query-slot.ts", "../src/decorators/query-slot.ts", "../src/signals/hydration-script.ts", "../src/signals/host-signal.ts", "../src/decorators/legacy/signal.ts", "../src/decorators/standard/signal.ts", "../src/decorators/signal.ts", "../src/decorators/legacy/reactive-field.ts", "../src/decorators/standard/reactive-field.ts", "../src/decorators/state.ts"],
3
+ "sources": ["../src/decorators/legacy/instance-initializers.ts", "../src/core/reactive-host.ts", "../src/core/ssr-preparation.ts", "../src/tools/escape-script-json.ts", "../src/core/hydration-codec.ts", "../src/core/slot-projection-runtime.ts", "../src/core/radiant-hydrator-state.ts", "../src/core/radiant-component-ssr-registry.ts", "../src/utils/attribute-utils.ts", "../src/core/radiant-element.ts", "../src/core/radiant-controller.ts", "../src/core/controller-metadata.ts", "../src/controller-registry.ts", "../src/decorators/bridge.ts", "../src/decorators/shared/reactive-attr.ts", "../src/decorators/legacy/attr.ts", "../src/decorators/standard/attr.ts", "../src/decorators/attr.ts", "../src/decorators/legacy/bound.ts", "../src/decorators/standard/bound.ts", "../src/decorators/bound.ts", "../src/decorators/controller.ts", "../src/core/custom-element-metadata.ts", "../src/decorators/legacy/custom-element.ts", "../src/decorators/standard/custom-element.ts", "../src/decorators/custom-element.ts", "../src/helpers/debounce.ts", "../src/decorators/legacy/debounce.ts", "../src/decorators/standard/debounce.ts", "../src/decorators/debounce.ts", "../src/tools/event-emitter.ts", "../src/helpers/create-event.ts", "../src/decorators/legacy/event.ts", "../src/decorators/standard/event.ts", "../src/decorators/event.ts", "../src/tools/escape-css-identifier.ts", "../src/helpers/create-event-listener.ts", "../src/decorators/legacy/on-event.ts", "../src/decorators/standard/on-event.ts", "../src/decorators/on-event.ts", "../src/decorators/legacy/on-updated.ts", "../src/decorators/standard/on-updated.ts", "../src/decorators/on-updated.ts", "../src/core/reactive-prop-metadata.ts", "../src/decorators/legacy/reactive-prop.ts", "../src/decorators/standard/reactive-prop.ts", "../src/decorators/prop.ts", "../src/helpers/create-query.ts", "../src/decorators/legacy/query.ts", "../src/decorators/standard/query.ts", "../src/decorators/query.ts", "../src/helpers/create-query-slot.ts", "../src/decorators/legacy/query-slot.ts", "../src/decorators/standard/query-slot.ts", "../src/decorators/query-slot.ts", "../src/signals/hydration-script.ts", "../src/signals/host-signal.ts", "../src/decorators/legacy/signal.ts", "../src/decorators/standard/signal.ts", "../src/decorators/signal.ts", "../src/decorators/legacy/reactive-field.ts", "../src/decorators/standard/reactive-field.ts", "../src/decorators/state.ts"],
4
4
  "sourcesContent": [
5
5
  "type LegacyInstanceInitializer<T extends object = object> = (instance: T) => void;\n\nconst LEGACY_INSTANCE_INITIALIZERS = Symbol.for('@ecopages/radiant.legacy-instance-initializers');\n\n/**\n * Registers per-instance initialization work for a legacy decorator.\n *\n * Legacy decorators execute against the prototype, so any initialization that\n * needs the concrete element instance must be deferred until construction time.\n */\nexport function registerLegacyInstanceInitializer<T extends object>(\n\tproto: T,\n\tinitializer: LegacyInstanceInitializer<T>,\n): void {\n\tconst target = proto as Record<PropertyKey, unknown>;\n\tconst ownInitializers = target[LEGACY_INSTANCE_INITIALIZERS];\n\n\tif (Array.isArray(ownInitializers)) {\n\t\townInitializers.push(initializer);\n\t\treturn;\n\t}\n\n\tObject.defineProperty(proto, LEGACY_INSTANCE_INITIALIZERS, {\n\t\tvalue: [initializer],\n\t\tconfigurable: true,\n\t});\n}\n\n/**\n * Runs all legacy decorator initializers for a newly constructed element.\n *\n * Initializers are collected from the prototype chain and executed from base to\n * derived class so inherited setup remains stable.\n */\nexport function runLegacyInstanceInitializers<T extends object>(instance: T): void {\n\tconst prototypes: object[] = [];\n\tlet currentPrototype = Object.getPrototypeOf(instance);\n\n\twhile (currentPrototype && currentPrototype !== Object.prototype) {\n\t\tprototypes.push(currentPrototype);\n\t\tcurrentPrototype = Object.getPrototypeOf(currentPrototype);\n\t}\n\n\tfor (let index = prototypes.length - 1; index >= 0; index -= 1) {\n\t\tconst initializers = (prototypes[index] as Record<PropertyKey, unknown>)[LEGACY_INSTANCE_INITIALIZERS] as\n\t\t\t| LegacyInstanceInitializer<T>[]\n\t\t\t| undefined;\n\n\t\tif (!Array.isArray(initializers)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor (const initializer of initializers) {\n\t\t\tinitializer(instance);\n\t\t}\n\t}\n}\n",
6
6
  "import { createSubscribableJsxValue, type SubscribableJsxValue } from '@ecopages/jsx';\nimport { trackDependency, type DependencyNode, type SignalSubscriber } from '@ecopages/signals';\nimport type {\n\tReactiveBindingOption,\n\tReactiveBindingValue,\n\tReactiveBindings,\n\tReactiveFieldOptions,\n} from './radiant-element';\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 DependencyNode {\n\tprivate readonly subscribers = new Set<SignalSubscriber<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\ttrackDependency(this);\n\t\treturn this.read();\n\t}\n\n\tpublic subscribe(notify: SignalSubscriber<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\ttrackDependency(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",
@@ -11,8 +11,8 @@
11
11
  "const RADIANT_HYDRATOR_INSTALLED_SYMBOL = Symbol.for('@ecopages/radiant.hydrator-installed');\n\ntype GlobalHydratorState = typeof globalThis & Record<PropertyKey, unknown>;\n\n/**\n * Marks the current JavaScript environment as hydration-enabled for first\n * custom-element connect.\n *\n * `RadiantElement` reads this flag before deciding whether SSR markup should\n * hydrate in place or be replaced by a fresh client render.\n */\nexport function installRadiantHydratorState(): void {\n\t(globalThis as GlobalHydratorState)[RADIANT_HYDRATOR_INSTALLED_SYMBOL] = true;\n}\n\n/**\n * Clears the explicit hydration-enabled flag from `globalThis`.\n *\n * This is mainly used by tests so they can assert both hydrated and non-\n * hydrated first-connect behavior deterministically.\n */\nexport function uninstallRadiantHydratorState(): void {\n\tdelete (globalThis as GlobalHydratorState)[RADIANT_HYDRATOR_INSTALLED_SYMBOL];\n}\n\n/**\n * Returns whether first-connect hydration is currently enabled for this\n * JavaScript environment.\n */\nexport function isRadiantHydratorInstalled(): boolean {\n\treturn (globalThis as GlobalHydratorState)[RADIANT_HYDRATOR_INSTALLED_SYMBOL] === true;\n}\n",
12
12
  "import type { JsxRenderable } from '@ecopages/jsx';\nimport type { RenderToStringOptions } from '@ecopages/jsx/server';\n\n/**\n * Optional SSR hooks exposed by `RadiantElement` instances to the shared\n * server runtime.\n *\n * The bridge lets the runtime detect whether a component is still using the\n * inherited host SSR implementation or has taken ownership of host rendering\n * through explicit overrides.\n */\nexport type RadiantElementRenderBridge = {\n\trenderHost?: () => JsxRenderable;\n\trenderHostToString?: (options?: RenderToStringOptions) => string;\n};\n\n/**\n * Runtime shape required by the shared Radiant SSR helpers.\n *\n * This is intentionally narrower than `RadiantElement` itself so the server\n * runtime can stay decoupled from the full client base-class implementation.\n */\nexport type RadiantElementSsrCapable = HTMLElement & {\n\tresolveSsrRenderBridge?: () => RadiantElementRenderBridge;\n\tgetHostSsrAttributes?: () => Record<string, string>;\n\trenderToString(options?: RenderToStringOptions): string;\n\trenderHost?(): JsxRenderable;\n\trenderHostToString(options?: RenderToStringOptions): string;\n};\n\n/**\n * Shared SSR runtime contract registered on `globalThis`.\n *\n * Server entrypoints install one implementation that both direct component SSR\n * and nested JSX custom-element SSR can reuse without importing client-only\n * internals into every call site.\n */\nexport type RadiantElementSsrRuntime = {\n\tgetHostAttributes(component: RadiantElementSsrCapable): Record<string, string>;\n\trenderHost(component: RadiantElementSsrCapable): JsxRenderable;\n\trenderHostToString(component: RadiantElementSsrCapable, options?: RenderToStringOptions): string;\n\tresolveRenderBridge(component: RadiantElementSsrCapable): RadiantElementRenderBridge | undefined;\n\trenderView(component: RadiantElementSsrCapable, options?: RenderToStringOptions): string;\n};\n\nconst RADIANT_COMPONENT_SSR_RUNTIME_SYMBOL = Symbol.for('@ecopages/radiant.component-ssr-runtime');\n\ntype GlobalSsrRuntimeState = typeof globalThis & {\n\t[RADIANT_COMPONENT_SSR_RUNTIME_SYMBOL]?: RadiantElementSsrRuntime;\n};\n\n/**\n * Reads the currently registered Radiant SSR runtime from `globalThis`.\n *\n * Returns `undefined` when no server entrypoint has installed the runtime yet.\n */\nexport function getRadiantElementSsrRuntime(): RadiantElementSsrRuntime | undefined {\n\treturn (globalThis as GlobalSsrRuntimeState)[RADIANT_COMPONENT_SSR_RUNTIME_SYMBOL];\n}\n\n/**\n * Registers the shared Radiant SSR runtime on `globalThis`.\n *\n * The latest registration wins, which keeps server adapters free to install\n * the runtime eagerly from their own explicit entrypoint.\n */\nexport function registerRadiantElementSsrRuntime(runtime: RadiantElementSsrRuntime): void {\n\t(globalThis as GlobalSsrRuntimeState)[RADIANT_COMPONENT_SSR_RUNTIME_SYMBOL] = runtime;\n}\n",
13
13
  "import type { RadiantElement } from '../core/radiant-element';\n\nexport type AttributeTypeConstant = typeof Array | typeof Boolean | typeof Number | typeof Object | typeof String;\n\nexport type AttributeTypeDefault = Array<unknown> | boolean | number | Record<string, unknown> | string;\n\n/**\n * Parses the given attribute type constant and returns its corresponding string representation.\n *\n * @param constant - The attribute type constant to parse.\n * @returns The string representation of the attribute type constant.\n */\nexport function parseAttributeTypeConstant(constant?: AttributeTypeConstant) {\n\tswitch (constant) {\n\t\tcase Array:\n\t\t\treturn 'array';\n\t\tcase Boolean:\n\t\t\treturn 'boolean';\n\t\tcase Number:\n\t\t\treturn 'number';\n\t\tcase Object:\n\t\t\treturn 'object';\n\t\tcase String:\n\t\t\treturn 'string';\n\t}\n}\n\n/**\n * Parses the attribute type default value and returns its type as a string.\n *\n * @param defaultValue - The default value of the attribute type.\n * @returns The type of the default value as a string.\n */\nexport function parseAttributeTypeDefault(defaultValue?: AttributeTypeDefault) {\n\tswitch (typeof defaultValue) {\n\t\tcase 'boolean':\n\t\t\treturn 'boolean';\n\t\tcase 'number':\n\t\t\treturn 'number';\n\t\tcase 'string':\n\t\t\treturn 'string';\n\t}\n\n\tif (Array.isArray(defaultValue)) return 'array';\n\tif (Object.prototype.toString.call(defaultValue) === '[object Object]') return 'object';\n}\n\n/**\n * Returns the default value for a given attribute type.\n *\n * @param type - The attribute type constant.\n * @returns The default value for the specified attribute type.\n */\nexport function defaultValueForType(type: AttributeTypeConstant): unknown {\n\tswitch (type) {\n\t\tcase Number:\n\t\t\treturn 0;\n\t\tcase String:\n\t\t\treturn '';\n\t\tcase Boolean:\n\t\t\treturn false;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n\ntype Reader = (value: string) => number | string | boolean | object | unknown[];\n\n/**\n * Utility function to parse a JSON string safely\n */\nfunction parseJSON<T>(value: string): T {\n\ttry {\n\t\treturn JSON.parse(value);\n\t} catch {\n\t\tthrow new TypeError('Invalid JSON string');\n\t}\n}\n\n/**\n * Object that maps attribute types to reader functions.\n * @type {Object.<string, Reader>}\n */\nconst readers: { [type: string]: Reader } = {\n\tarray(value: string): unknown[] {\n\t\tconst array = parseJSON<unknown[]>(value);\n\t\tif (!Array.isArray(array)) {\n\t\t\tthrow new TypeError(`Expected an array but got a value of type \"${typeof array}\"`);\n\t\t}\n\t\treturn array;\n\t},\n\n\tboolean(value: string): boolean {\n\t\treturn !(value === '0' || String(value).toLowerCase() === 'false');\n\t},\n\n\tnumber(value: string): number {\n\t\tconst number = Number(value.replace(/_/g, ''));\n\t\treturn number;\n\t},\n\n\tobject(value: string): object {\n\t\tconst object = JSON.parse(value);\n\t\tif (object === null || typeof object !== 'object' || Array.isArray(object)) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseAttributeTypeDefault(\n\t\t\t\t\tobject,\n\t\t\t\t)}\"`,\n\t\t\t);\n\t\t}\n\t\treturn object;\n\t},\n\n\tstring(value: string): string {\n\t\treturn value;\n\t},\n};\n\ntype Writer = (value: unknown) => string;\n\n/**\n * Object that maps attribute types to writer functions.\n * @type {Object.<string, Writer>}\n */\nconst writers: { [type: string]: Writer } = {\n\tdefault: writeString,\n\tarray: writeJSON,\n\tobject: writeJSON,\n};\n\nfunction writeJSON(value: unknown) {\n\treturn JSON.stringify(value);\n}\n\nfunction writeString(value: unknown) {\n\treturn `${value}`;\n}\n\n/**\n * Reads the attribute value based on the provided type.\n * @param value - The attribute value to be read.\n * @param type - The type of the attribute.\n * @returns The parsed attribute value.\n * @throws {TypeError} If the provided type is unknown.\n */\nexport function readAttributeValue(value: string, type: AttributeTypeConstant) {\n\tconst readerType = parseAttributeTypeConstant(type);\n\tif (!readerType) throw new TypeError(`[radiant-element] Unknown type \"${type}\"`);\n\treturn readers[readerType]!(value);\n}\n\nexport type ReadAttributeValueReturnType = ReturnType<typeof readAttributeValue>;\n\n/**\n * Writes the attribute value based on the provided type.\n *\n * @param value - The value to be written.\n * @param type - The type of the attribute.\n * @returns The written attribute value.\n * @throws {TypeError} If the provided type is unknown.\n */\nexport function writeAttributeValue(value: unknown, type: AttributeTypeConstant) {\n\tconst writerType = parseAttributeTypeConstant(type);\n\tif (!writerType) throw new TypeError(`[radiant-element] Unknown type \"${type}\"`);\n\tconst writer: Writer = writers[writerType] ?? writers.default ?? writeString;\n\treturn writer(value);\n}\n\nexport type WriteAttributeValueReturnType = ReturnType<typeof writeAttributeValue>;\n\n/*\n * Type guard functions for each type in AttributeTypeConstant\n */\nfunction isBoolean(value: unknown): value is boolean {\n\treturn typeof value === 'boolean';\n}\n\nfunction isNumber(value: unknown): value is number {\n\treturn typeof value === 'number';\n}\n\nfunction isString(value: unknown): value is string {\n\treturn typeof value === 'string';\n}\n\nfunction isArray(value: unknown): value is Array<unknown> {\n\treturn Array.isArray(value);\n}\n\nfunction isObject(value: unknown): value is object {\n\treturn typeof value === 'object' && !Array.isArray(value) && value !== null;\n}\n\n/*\n * Check function to ensure defaultValue matches the type\n */\nexport function isValueOfType(type: AttributeTypeConstant, defaultValue: unknown): boolean {\n\tswitch (type) {\n\t\tcase Boolean:\n\t\t\treturn isBoolean(defaultValue);\n\t\tcase Number:\n\t\t\treturn isNumber(defaultValue);\n\t\tcase String:\n\t\t\treturn isString(defaultValue);\n\t\tcase Array:\n\t\t\treturn isArray(defaultValue);\n\t\tcase Object:\n\t\t\treturn isObject(defaultValue);\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\nexport const getInitialValue = (\n\ttarget: RadiantElement,\n\ttype: AttributeTypeConstant,\n\tattributeKey: string,\n\tdefaultValue: unknown,\n) => {\n\tif (type === Boolean) {\n\t\tconst attributeValue = target.getAttribute(attributeKey);\n\t\tif (attributeValue === null) {\n\t\t\treturn defaultValue;\n\t\t}\n\n\t\treturn attributeValue === '' ? true : readAttributeValue(attributeValue, type);\n\t}\n\n\tconst attributeValue = target.getAttribute(attributeKey);\n\treturn attributeValue !== null\n\t\t? readAttributeValue(attributeValue, type)\n\t\t: (defaultValue ?? (defaultValueForType(type) as typeof defaultValue));\n};\n",
14
- "import type { EventEmitter } from '../tools';\nimport {\n\thasHydrationMarkers,\n\thydrate as hydrateJsx,\n\tjsx,\n\trender as renderJsx,\n\ttype JsxRenderable,\n\ttype SubscribableJsxValue,\n} from '@ecopages/jsx';\nimport type { RenderToStringOptions } from '@ecopages/jsx/server';\nimport { Computed, subtle } from '@ecopages/signals';\nimport type { SsrSerializableContextProvider } from '../context/context-provider';\nimport type { UnknownContext } from '../context/types';\nimport { runLegacyInstanceInitializers } from '../decorators/legacy/instance-initializers';\nimport type { SsrSerializableHydrationBinding } from './ssr-hydration-binding';\nimport { ReactiveHost } from './reactive-host';\nimport { runSsrPreparationCallbacks } from './ssr-preparation';\nimport {\n\tDEFAULT_SLOT_NAME,\n\tSLOT_PROJECTION_SCRIPT_ATTRIBUTE,\n\tcollectAuthoredHydrationScriptMarkup,\n\tcaptureProjectedSlotRenderables,\n\tdeserializeProjectedSlotRenderables,\n\tresolveSlotProjection,\n\tserializeProjectedSlotRenderables,\n\ttakeSlotProjectionScriptPayload,\n} from './slot-projection-runtime';\nimport { HYDRATION_ATTRIBUTE } from './hydration-codec';\nimport { isRadiantHydratorInstalled } from './radiant-hydrator-state';\nimport {\n\tgetRadiantElementSsrRuntime,\n\ttype RadiantElementRenderBridge,\n\ttype RadiantElementSsrCapable,\n} from './radiant-component-ssr-registry';\nimport {\n\ttype AttributeTypeConstant,\n\ttype ReadAttributeValueReturnType,\n\ttype WriteAttributeValueReturnType,\n\tgetInitialValue,\n\tisValueOfType,\n\treadAttributeValue,\n\twriteAttributeValue,\n} from '../utils/attribute-utils';\n\nconst RadiantElementBase = resolveRadiantElementBase();\n\nfunction resolveRadiantElementBase(): typeof HTMLElement {\n\tif (typeof HTMLElement !== 'undefined') {\n\t\treturn HTMLElement;\n\t}\n\n\tthrow new Error(\n\t\t\"RadiantElement requires HTMLElement. Install '@ecopages/radiant/server/light-dom-shim' before importing Radiant components in SSR.\",\n\t);\n}\n\n/**\n * Possible positions to insert a rendered template.\n */\nexport type RenderInsertPosition = 'replace' | 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend';\n\n/**\n * Represents a Radiant element event listener.\n */\nexport type RadiantElementEventListener = {\n\tselector: string;\n\ttype: string;\n\tlistener: EventListener;\n\toptions?: AddEventListenerOptions;\n};\n\n/**\n * Represents a property metadata object.\n */\nexport interface ReactiveProperty<T = unknown> {\n\ttype: AttributeTypeConstant;\n\tvalue?: T;\n\tinitialValue?: T;\n\tname: string;\n\tattribute: string;\n\tconverter: {\n\t\tfromAttribute: (value: string) => ReadAttributeValueReturnType;\n\t\ttoAttribute: (value: any) => WriteAttributeValueReturnType;\n\t};\n}\n\n/**\n * Represents the options for a reactive property.\n */\nexport type ReactivePropertyOptions<T> = {\n\ttype: AttributeTypeConstant;\n\treflect?: boolean;\n\tattribute?: string;\n\tdefaultValue?: T;\n\t/**\n\t * Exposes a JSX binding companion for the reactive property.\n\t *\n\t * - `true` creates a `$propertyName` accessor.\n\t * - a string creates a custom accessor with that name.\n\t * - `undefined` defers to the host default.\n\t *\n\t * The generated accessor returns a subscribable JSX child value so JSX can\n\t * patch only the affected child part when the property changes.\n\t */\n\tbind?: boolean | string;\n};\n\nexport type ReactiveBindingOption = boolean | string;\n\nexport type ReactiveFieldOptions = {\n\t/**\n\t * Exposes a JSX binding companion for the reactive field.\n\t *\n\t * - `true` creates a `$fieldName` accessor.\n\t * - a string creates a custom accessor with that name.\n\t * - `undefined` defers to the host default.\n\t */\n\tbind?: ReactiveBindingOption;\n};\n\nexport type ReactiveField<T = unknown> = {\n\tname: string;\n\tvalue: T;\n\tinitialValue: T;\n};\n\ntype StringPropertyKey<Value> = Extract<keyof Value, string>;\n\n/**\n * Value type produced by a JSX binding for a selected reactive member.\n *\n * Bindings preserve the original property type when it is already renderable by\n * the Ecopages JSX runtime. For non-renderable values, the binding falls back\n * to the broader `JsxRenderable` contract consumed by the renderer.\n */\nexport type ReactiveBindingValue<\n\tHost extends object,\n\tProperty extends StringPropertyKey<Host>,\n> = Host[Property] extends JsxRenderable ? Host[Property] : JsxRenderable;\n\n/**\n * Namespace of cached JSX bindings keyed by the explicit bindable shape.\n *\n * Radiant exposes this namespace twice on every host:\n *\n * - `host.bindings.key` for the explicit form\n * - `host.$.key` for the short form\n *\n * Both aliases resolve through the same cached binding objects as\n * `host.bind('key')`.\n */\nexport type ReactiveBindings<Bindings extends object> = {\n\treadonly [Property in StringPropertyKey<Bindings>]: SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>>;\n};\n\n/**\n * Represents an interface for a Radiant element.\n * @typeParam Bindings - Explicit internal bindable shape used to type `bind()` and `getReactiveBinding()`.\n *\n * This shape describes which reactive members are exposed through `bindings`,\n * `$`, and `bind(...)`. It does not automatically define the public JSX\n * attribute contract for the custom element.\n */\nexport interface IRadiantElement<Bindings extends object = {}> {\n\t/**\n\t * Namespace of cached JSX bindings keyed by the explicit bindable shape.\n\t */\n\treadonly bindings: ReactiveBindings<Bindings>;\n\n\t/**\n\t * Short alias for {@link bindings}.\n\t */\n\treadonly $: ReactiveBindings<Bindings>;\n\n\t/**\n\t * Called when a property of the element is updated.\n\t * @param changedProperty - The name of the changed property.\n\t * @param oldValue - The old value of the property.\n\t * @param newValue - The new value of the property.\n\t */\n\tnotifyUpdate(changedProperty: string, oldValue: unknown, newValue: unknown): void;\n\n\t/**\n\t * Subscribes to a Radiant element event.\n\t * @param event - The event listener to subscribe to.\n\t */\n\tsubscribeEvent(event: RadiantElementEventListener): void;\n\n\t/**\n\t * Registers a callback to be invoked when a reactive property or field changes.\n\t *\n\t * @returns A cleanup function that unregisters the callback.\n\t */\n\tregisterUpdateCallback(property: string, update: (...rest: any[]) => any): () => void;\n\n\t/**\n\t * Returns a subscribable JSX child binding for a reactive property or field.\n\t *\n\t * Prefer `this.bindings.key` or `this.$.key` in JSX render code when you want\n\t * property access syntax without string literals.\n\t */\n\tbind<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>>;\n\n\t/**\n\t * Returns a subscribable JSX child binding for a reactive property or field.\n\t *\n\t * This is the primitive lookup used by `bind()`, `bindings.key`, and `$.key`.\n\t */\n\tgetReactiveBinding<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>>;\n\n\t/**\n\t * Defines a stable JSX binding companion accessor for a reactive member.\n\t *\n\t * Companion bindings create properties such as `$count` directly on the host.\n\t * Prefer the `bindings` or `$` namespace for new code when you want typed,\n\t * explicit access to the configured bindable shape.\n\t */\n\tdefineReactiveBinding(property: string, bind?: ReactiveBindingOption): void;\n\n\t/**\n\t * Subscribes to multiple Radiant element events.\n\t * @param events - The array of event listeners to subscribe to.\n\t */\n\tsubscribeEvents(events: RadiantElementEventListener[]): void;\n\n\t/**\n\t * It adds a callback to be executed when the Radiant element is disconnected from the DOM.\n\t */\n\tregisterCleanupCallback(callback: () => void): void;\n\n\t/**\n\t * Registers a callback to run on each future host connection.\n\t *\n\t * The callback is only invoked from `connectedCallback()`. Registering it\n\t * after the host is already connected does not invoke it immediately.\n\t */\n\tregisterConnectedCallback(callback: () => void): void;\n\n\t/**\n\t * Registers a raw value reader for a reactive member so that tracked render\n\t * dependencies can read the underlying value without triggering the public\n\t * getter's dependency tracking.\n\t */\n\tregisterReactiveDependencyReader(property: string, read: () => unknown): void;\n\n\t/**\n\t * Records a tracked read of a reactive member during a component render,\n\t * allowing the signals runtime to re-render only the affected parts.\n\t */\n\ttrackReactiveRead(property: string): void;\n\n\t/**\n\t * Renders a trusted HTML template string into the specified target element.\n\t *\n\t * **Security:** The `template` string is written to the DOM via `innerHTML`\n\t * or `insertAdjacentHTML` without built-in sanitization. Callers are\n\t * responsible for ensuring the input is trusted. Supply a `sanitize`\n\t * function to transform the template before insertion.\n\t *\n\t * @param options - The rendering options.\n\t * @param options.target - The target element to render the template into.\n\t * @param options.template - The template string to render.\n\t * @param options.insert - The position to insert the rendered template. (optional)\n\t * @param options.sanitize - An optional function that transforms the template string before insertion.\n\t */\n\trenderTemplate(options: {\n\t\ttarget: HTMLElement;\n\t\ttemplate: string;\n\t\tinsert?: RenderInsertPosition;\n\t\tsanitize?: (html: string) => string;\n\t}): void;\n\n\t/**\n\t * Called when the Radiant element is connected to a context.\n\t * @param context - The connected context.\n\t */\n\tconnectedContextCallback(context: UnknownContext): void;\n\n\t/**\n\t * Gets a reference to a child element by its data-ref attribute.\n\t * @param ref - The data-ref attribute value of the element to get.\n\t * @param all - Whether to get all elements with the specified data-ref attribute value.\n\t * @returns The element with the specified data-ref attribute value, an array of elements or null if no element was found.\n\t */\n\tgetRef<T extends Element = Element>(ref: string, all: true): T[];\n\tgetRef<T extends Element = Element>(ref: string, all?: false): T | null;\n}\n\n/**\n * A base class for creating custom elements with reactive properties and event subscriptions.\n * @typeParam Bindings - Explicit internal bindable shape. Include only the\n * prop/state keys that JSX bindings should accept.\n *\n * Prefer a separate public props type for custom-element JSX declarations when\n * the external attribute contract differs from the component's internal\n * reactive state. Reuse the same type only when the public props and bindable\n * members are intentionally identical.\n * @extends HTMLElement\n * @implements IRadiantElement<Bindings>\n */\nexport class RadiantElement<Bindings extends object = {}>\n\textends RadiantElementBase\n\timplements IRadiantElement<Bindings>\n{\n\tpublic readonly bindings: ReactiveBindings<Bindings>;\n\tpublic readonly $: ReactiveBindings<Bindings>;\n\tprivate readonly reactiveHost: ReactiveHost<this, Bindings>;\n\n\t/**\n\t * A map of property metadata objects, it contains useful information about the properties configured via decorators.\n\t */\n\tprivate reactiveProperties = new Map<string, ReactiveProperty>();\n\n\t/**\n\t * Registered context providers keyed by decorated property name.\n\t */\n\tprivate contextProviders = new Map<string, SsrSerializableContextProvider>();\n\n\t/**\n\t * Registered keyed hydration payload producers appended to SSR host output.\n\t */\n\tprivate hydrationBindings = new Map<string, SsrSerializableHydrationBinding>();\n\n\t/**\n\t * A map of event subscriptions used to manage event listeners on the Radiant element.\n\t */\n\tprivate eventSubscriptions = new Map<string, RadiantElementEventListener>();\n\n\t/**\n\t * A map for event emitters\n\t */\n\tprivate eventEmitters = new Map<string, EventEmitter>();\n\n\t/**\n\t * A flag indicating whether the element has been connected to the DOM.\n\t */\n\tprivate elementReady = false;\n\tprivate isRendering = false;\n\tprivate isFirstConnectPending = false;\n\tprivate isRenderScheduled = false;\n\tprivate needsRender = false;\n\t/**\n\t * Snapshot of own-property values that existed before Radiant installs the\n\t * reactive accessors for declared props.\n\t *\n\t * \"Pre-upgrade\" refers to the custom-element upgrade window where user code,\n\t * SSR boot code, or another framework assigns `element.someProp = value`\n\t * before the browser has finished constructing the final custom-element class\n\t * instance with its accessors in place.\n\t *\n\t * Those early assignments land as plain own properties on the element. If we\n\t * define a reactive accessor later without first capturing them, the accessor\n\t * would either miss the assigned value or remain shadowed by the own property.\n\t * `createReactiveProp()` consumes this snapshot so the early value becomes the\n\t * prop's initial reactive state.\n\t */\n\tprivate readonly preUpgradePropertyValues = new Map<string, unknown>();\n\tprivate projectedSlotContent = new Map<string, JsxRenderable[]>();\n\tprivate renderSignal?: Computed<{ containsSlots: boolean; value: JsxRenderable }>;\n\tprivate readonly renderWatcher = new subtle.Watcher(() => {\n\t\tthis.requestUpdate();\n\t});\n\tprivate slotProjectionObserver?: MutationObserver;\n\tprivate slotProjectionVersion = 0;\n\n\tconstructor() {\n\t\tsuper();\n\t\tfor (const propertyName of Object.getOwnPropertyNames(this)) {\n\t\t\tthis.preUpgradePropertyValues.set(propertyName, (this as Record<string, unknown>)[propertyName]);\n\t\t}\n\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\tgetBindingTarget: (target) => Object.getPrototypeOf(target) ?? target,\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\tconnectedCallback() {\n\t\tconst isReconnectDuringPendingFirstConnect = this.isFirstConnectPending;\n\n\t\tthis.elementReady = true;\n\n\t\tthis.reactiveHost.connectHost();\n\n\t\tif (isReconnectDuringPendingFirstConnect) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isFirstConnectPending = true;\n\n\t\tqueueMicrotask(() => {\n\t\t\tthis.isFirstConnectPending = false;\n\n\t\t\tif (!this.isConnected) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!this.shouldRunRenderLifecycle()) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.ensureSlotProjectionState();\n\t\t\tthis.observeSlotProjection();\n\n\t\t\tif (shouldHydrateOnConnect(this)) {\n\t\t\t\tthis.needsRender = false;\n\t\t\t\tthis.hydrate();\n\n\t\t\t\tif (this.needsRender) {\n\t\t\t\t\tthis.update();\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.update();\n\t\t});\n\t}\n\n\tconnectedContextCallback(_contextName: UnknownContext): void {}\n\n\tdisconnectedCallback() {\n\t\tthis.disconnectSlotProjectionObserver();\n\t\tthis.disconnectRenderWatcher();\n\t\tthis.removeAllSubscribedEvents();\n\t\tthis.reactiveHost.disconnectHost();\n\t}\n\n\tpublic notifyUpdate(changedProperty: string, oldValue: unknown, value: unknown) {\n\t\tthis.reactiveHost.notifyUpdate(changedProperty, oldValue, value);\n\t}\n\n\tprivate transformAttributeValue(value: string | null, config: any): unknown {\n\t\treturn value !== null ? config?.converter.fromAttribute(value) : value;\n\t}\n\n\tattributeChangedCallback(name: string, oldValue: string | null, newValue: string | null) {\n\t\tif (oldValue === newValue || !this.elementReady) return;\n\n\t\tif (this.reactiveProperties.has(name)) {\n\t\t\tconst config = this.reactiveProperties.get(name);\n\n\t\t\tconst transformedValue = this.transformAttributeValue(newValue, config);\n\t\t\tconst transformedOldValue = this.transformAttributeValue(oldValue, config);\n\n\t\t\tconst key = config ? config.attribute : name;\n\t\t\t(this as any)[key] = transformedValue;\n\t\t\tthis.notifyUpdate(name, transformedOldValue, transformedValue);\n\t\t}\n\t}\n\n\t/**\n\t * Renders a trusted HTML template string into the specified target element.\n\t *\n\t * **Security:** The `template` string is written to the DOM via `innerHTML`\n\t * or `insertAdjacentHTML` without built-in sanitization. Callers are\n\t * responsible for ensuring the input is trusted. Supply a `sanitize`\n\t * function to transform the template before insertion.\n\t */\n\tpublic renderTemplate({\n\t\ttarget = this,\n\t\ttemplate,\n\t\tinsert = 'replace',\n\t\tsanitize,\n\t}: {\n\t\ttarget: HTMLElement;\n\t\ttemplate: string;\n\t\tinsert?: RenderInsertPosition;\n\t\tsanitize?: (html: string) => string;\n\t}) {\n\t\tconst html = sanitize ? sanitize(template) : template;\n\t\tswitch (insert) {\n\t\t\tcase 'replace':\n\t\t\t\ttarget.innerHTML = html;\n\t\t\t\tbreak;\n\t\t\tcase 'beforeend':\n\t\t\t\ttarget.insertAdjacentHTML('beforeend', html);\n\t\t\t\tbreak;\n\t\t\tcase 'afterbegin':\n\t\t\t\ttarget.insertAdjacentHTML('afterbegin', html);\n\t\t\t\tbreak;\n\t\t\tcase 'beforebegin':\n\t\t\t\ttarget.insertAdjacentHTML('beforebegin', html);\n\t\t\t\tbreak;\n\t\t\tcase 'afterend':\n\t\t\t\ttarget.insertAdjacentHTML('afterend', html);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tpublic render(): JsxRenderable {\n\t\treturn jsx('slot', {});\n\t}\n\n\tpublic renderToString(options: RenderToStringOptions = {}): string {\n\t\tif (!this.shouldRunRenderLifecycle()) {\n\t\t\treturn this.innerHTML;\n\t\t}\n\n\t\tthis.prepareForSsr();\n\n\t\treturn requireRadiantElementSsrRuntime().renderView(this as unknown as RadiantElementSsrCapable, options);\n\t}\n\n\tpublic renderHost(): JsxRenderable {\n\t\treturn requireRadiantElementSsrRuntime().renderHost(this as unknown as RadiantElementSsrCapable);\n\t}\n\n\tpublic renderHostToString(options: RenderToStringOptions = {}): string {\n\t\treturn requireRadiantElementSsrRuntime().renderHostToString(\n\t\t\tthis as unknown as RadiantElementSsrCapable,\n\t\t\toptions,\n\t\t);\n\t}\n\n\tpublic hydrate(): void {\n\t\tif (!this.shouldRunRenderLifecycle() || !this.isConnected || this.isRendering) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isRendering = true;\n\t\tthis.disconnectSlotProjectionObserver();\n\n\t\ttry {\n\t\t\thydrateJsx(this.resolveTrackedRenderOutput().value, this);\n\t\t} finally {\n\t\t\tthis.isRendering = false;\n\t\t\tthis.observeSlotProjection();\n\t\t}\n\t}\n\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\tpublic update(): void {\n\t\tif (!this.shouldRunRenderLifecycle()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.needsRender = true;\n\n\t\tif (!this.isConnected || this.isRendering) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.isFirstConnectPending && shouldHydrateOnConnect(this)) {\n\t\t\treturn;\n\t\t}\n\n\t\twhile (this.needsRender && this.isConnected) {\n\t\t\tthis.needsRender = false;\n\t\t\tthis.isRendering = true;\n\t\t\tthis.disconnectSlotProjectionObserver();\n\n\t\t\ttry {\n\t\t\t\trenderJsx(this.resolveTrackedRenderOutput().value, this);\n\t\t\t} finally {\n\t\t\t\tthis.isRendering = false;\n\t\t\t\tthis.observeSlotProjection();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic registerReactiveProperty(config: ReactiveProperty) {\n\t\tthis.reactiveProperties.set(config.name, config);\n\t}\n\n\tprotected getReactiveProperties(): ReactiveProperty[] {\n\t\treturn Array.from(this.reactiveProperties.values());\n\t}\n\n\tpublic registerReactiveDependencyReader(property: string, read: () => unknown): void {\n\t\tthis.reactiveHost.registerReactiveDependencyReader(property, read);\n\t}\n\n\tpublic registerContextProvider(name: string, provider: SsrSerializableContextProvider): void {\n\t\tthis.contextProviders.set(name, provider);\n\t\tthis.registerHydrationBinding(name, provider);\n\t}\n\n\tpublic registerHydrationBinding(name: string, binding: SsrSerializableHydrationBinding): void {\n\t\tthis.hydrationBindings.set(name, binding);\n\t}\n\n\tprotected getContextProviders(): SsrSerializableContextProvider[] {\n\t\treturn Array.from(this.contextProviders.values());\n\t}\n\n\tprotected getHydrationBindings(): SsrSerializableHydrationBinding[] {\n\t\treturn Array.from(this.hydrationBindings.values());\n\t}\n\n\t/**\n\t * Flushes any deferred SSR-only preparation work before the host is\n\t * serialized.\n\t *\n\t * Radiant uses this to reapply SSR consumer state after construction so the\n\t * first server render sees finalized fields, props, and authored content.\n\t */\n\tprotected prepareForSsr(): void {\n\t\trunSsrPreparationCallbacks(this);\n\t}\n\n\t/**\n\t * Returns the default JSX binding policy for reactive members on this host.\n\t *\n\t * `RadiantElement` hosts default to automatic bindings for reactive members\n\t * when no explicit `bind` option is supplied.\n\t *\n\t * Lower-level hosts can override this hook to opt out when they want binding\n\t * creation to stay fully explicit across `@prop`, `@state`, and direct\n\t * `createReactiveProp`/`createReactiveField` calls.\n\t */\n\tprotected shouldAutoBindReactiveMembers(): boolean {\n\t\treturn true;\n\t}\n\n\tprotected shouldRunRenderLifecycle(): boolean {\n\t\treturn this.render !== RadiantElement.prototype.render;\n\t}\n\n\tprotected getHostSsrAttributes(): Record<string, string> {\n\t\treturn requireRadiantElementSsrRuntime().getHostAttributes(this as unknown as RadiantElementSsrCapable);\n\t}\n\n\tprotected resolveSsrRenderBridge(): RadiantElementRenderBridge {\n\t\tconst bridge: RadiantElementRenderBridge = {};\n\n\t\tif (this.renderHostToString === RadiantElement.prototype.renderHostToString) {\n\t\t\tbridge.renderHostToString = (options: RenderToStringOptions | undefined) =>\n\t\t\t\tthis.renderHostToString(options);\n\t\t}\n\n\t\tif (this.renderHost === RadiantElement.prototype.renderHost) {\n\t\t\tbridge.renderHost = () => this.renderHost();\n\t\t}\n\n\t\treturn bridge;\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\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\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\tpublic defineReactiveBinding(property: string, bind: ReactiveBindingOption = true): void {\n\t\tthis.reactiveHost.defineReactiveBinding(property, bind);\n\t}\n\n\tpublic trackReactiveRead(property: string): void {\n\t\tthis.reactiveHost.trackReactiveRead(property);\n\t}\n\n\tpublic subscribeEvents(events: RadiantElementEventListener[]): Array<() => void> {\n\t\tconst unsubscribers: Array<() => void> = [];\n\t\tfor (const event of events) {\n\t\t\tunsubscribers.push(this.subscribeEvent(event));\n\t\t}\n\t\treturn unsubscribers;\n\t}\n\n\tpublic subscribeEvent(eventConfig: RadiantElementEventListener): () => void {\n\t\tconst delegatedListener = (delegatedEvent: Event) => {\n\t\t\tif (delegatedEvent.target && (delegatedEvent.target as Element).matches(eventConfig.selector)) {\n\t\t\t\teventConfig.listener.call(this, delegatedEvent);\n\t\t\t}\n\t\t};\n\t\tconst subscriptionId = `${eventConfig.type}:${eventConfig.selector}`;\n\t\tthis.addEventListener(eventConfig.type, delegatedListener, eventConfig.options);\n\t\tthis.eventSubscriptions.set(subscriptionId, {\n\t\t\t...eventConfig,\n\t\t\tlistener: delegatedListener,\n\t\t});\n\n\t\treturn this.unsubscribeEvent.bind(this, subscriptionId);\n\t}\n\n\tprivate unsubscribeEvent(id: string): void {\n\t\tconst eventSubscription = this.eventSubscriptions.get(id);\n\t\tif (eventSubscription) {\n\t\t\tthis.removeEventListener(eventSubscription.type, eventSubscription.listener, eventSubscription.options);\n\t\t\tthis.eventSubscriptions.delete(id);\n\t\t}\n\t}\n\n\tprivate removeAllSubscribedEvents(): void {\n\t\tfor (const eventSubscription of this.eventSubscriptions.values()) {\n\t\t\tthis.removeEventListener(eventSubscription.type, eventSubscription.listener, eventSubscription.options);\n\t\t}\n\t\tthis.eventSubscriptions.clear();\n\t}\n\n\t/**\n\t * Registers a callback that runs on every future disconnect.\n\t */\n\tpublic registerCleanupCallback(callback: () => void): void {\n\t\tthis.reactiveHost.registerCleanupCallback(callback);\n\t}\n\n\t/**\n\t * Registers a callback that runs from `connectedCallback()` on future host\n\t * connections.\n\t *\n\t * Registering after the host is already connected does not invoke the\n\t * callback immediately.\n\t */\n\tpublic registerConnectedCallback(callback: () => void): void {\n\t\tthis.reactiveHost.registerConnectedCallback(callback);\n\t}\n\n\tpublic registerEventEmitter(name: string, emitter: EventEmitter) {\n\t\tthis.eventEmitters.set(name, emitter);\n\t}\n\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\t\tif (all) {\n\t\t\treturn Array.from(this.querySelectorAll(selector)) as T[];\n\t\t}\n\t\treturn (this.querySelector(selector) as T) ?? null;\n\t}\n\n\tpublic getSlotElement<T extends Element = Element>(name?: string): T | null {\n\t\treturn (this.getSlotElements<T>(name)[0] ?? null) as T | null;\n\t}\n\n\tpublic getSlotElements<T extends Element = Element>(name?: string): T[] {\n\t\tthis.ensureSlotProjectionState();\n\n\t\treturn (this.projectedSlotContent.get(name ?? DEFAULT_SLOT_NAME) ?? []).filter(\n\t\t\t(renderable): renderable is T => typeof Node !== 'undefined' && renderable instanceof Element,\n\t\t);\n\t}\n\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 reactive custom-element property backed by a Radiant accessor.\n\t *\n\t * When the host was assigned a value before upgrade, that pre-upgrade value is\n\t * preferred over attribute parsing and `defaultValue` so early `.prop = value`\n\t * writes survive into the reactive lifecycle.\n\t */\n\tpublic createReactiveProp<T = unknown>(propertyName: string, options: ReactivePropertyOptions<T>): void {\n\t\tconst { type, attribute, reflect, defaultValue } = options;\n\t\tconst attributeKey = attribute ?? propertyName;\n\t\tconst hasPreUpgradeValue = this.preUpgradePropertyValues.has(propertyName);\n\t\tconst preUpgradeValue = hasPreUpgradeValue ? (this.preUpgradePropertyValues.get(propertyName) as T) : undefined;\n\n\t\tif (defaultValue !== undefined && !isValueOfType(type, defaultValue)) {\n\t\t\tthrow new Error(`defaultValue does not match the expected type for ${type.name}`);\n\t\t}\n\n\t\tconst initialValue: T | undefined = hasPreUpgradeValue\n\t\t\t? preUpgradeValue\n\t\t\t: (getInitialValue(this, type, attributeKey, defaultValue) as T);\n\n\t\tif (this.hasAttribute(attributeKey) && (!reflect || initialValue == null || initialValue === '')) {\n\t\t\tthis.removeAttribute(attributeKey);\n\t\t}\n\n\t\tif (hasPreUpgradeValue && Object.prototype.hasOwnProperty.call(this, propertyName)) {\n\t\t\tReflect.deleteProperty(this, propertyName);\n\t\t}\n\n\t\tconst propertyMapping: ReactiveProperty<T> = {\n\t\t\ttype,\n\t\t\tname: propertyName,\n\t\t\tvalue: initialValue,\n\t\t\tinitialValue,\n\t\t\tattribute: attributeKey,\n\t\t\tconverter: {\n\t\t\t\tfromAttribute: (value) => readAttributeValue(value, type),\n\t\t\t\ttoAttribute: (value) => writeAttributeValue(value, type),\n\t\t\t},\n\t\t};\n\n\t\tthis.registerReactiveProperty(propertyMapping);\n\n\t\tconst handleReflectRequest = (value: T) => {\n\t\t\tif (reflect) {\n\t\t\t\tif (value == null || value === '' || value === false) {\n\t\t\t\t\tthis.removeAttribute(attributeKey);\n\t\t\t\t} else {\n\t\t\t\t\tconst attributeValue = propertyMapping.converter.toAttribute(value);\n\t\t\t\t\tthis.setAttribute(attributeKey, attributeValue);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis.reactiveHost.defineReactiveAccessor(propertyName, {\n\t\t\tbind: options.bind,\n\t\t\tgetValue: () => this.reactiveProperties.get(propertyName)?.value as T | undefined,\n\t\t\tsetValue: (newValue: T) => {\n\t\t\t\tthis.reactiveProperties.set(propertyName, { ...propertyMapping, value: newValue });\n\t\t\t\thandleReflectRequest(newValue);\n\t\t\t},\n\t\t});\n\n\t\tif (initialValue !== undefined) {\n\t\t\tqueueMicrotask(() => {\n\t\t\t\tconst currentValue = this.reactiveProperties.get(propertyName)?.value as T | undefined;\n\t\t\t\tif (currentValue === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\thandleReflectRequest(currentValue);\n\t\t\t\tthis.notifyUpdate(propertyName, undefined, currentValue);\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate ensureSlotProjectionState(): void {\n\t\tif (this.projectedSlotContent.size > 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst scriptPayload = this.isConnected ? takeSlotProjectionScriptPayload(this) : undefined;\n\n\t\tif (typeof scriptPayload === 'string' && scriptPayload !== '') {\n\t\t\tthis.projectedSlotContent = deserializeProjectedSlotRenderables(scriptPayload);\n\t\t\tthis.slotProjectionVersion += 1;\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.getHostChildNodeCount() > 0) {\n\t\t\tthis.projectedSlotContent = captureProjectedSlotRenderables(this);\n\t\t\tthis.slotProjectionVersion += 1;\n\t\t}\n\t}\n\n\tprivate getHostChildNodeCount(): number {\n\t\treturn 'childNodes' in this && this.childNodes ? this.childNodes.length : 0;\n\t}\n\n\tprivate getSlotProjectionScriptTag(): string | undefined {\n\t\tthis.ensureSlotProjectionState();\n\t\tconst payload = serializeProjectedSlotRenderables(this.projectedSlotContent);\n\n\t\tif (!payload) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn `<script type=\"application/json\" ${SLOT_PROJECTION_SCRIPT_ATTRIBUTE}>${escapeScriptText(payload)}</script>`;\n\t}\n\n\tprivate getAuthoredHydrationScriptMarkup(): string | undefined {\n\t\tconst authoredHydrationMarkup = collectAuthoredHydrationScriptMarkup(this);\n\n\t\tif (authoredHydrationMarkup) {\n\t\t\treturn authoredHydrationMarkup;\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tprivate handleSlotProjectionMutations(records: MutationRecord[]): void {\n\t\tlet hasProjectionChanges = false;\n\n\t\tfor (const record of records) {\n\t\t\tfor (const removedNode of Array.from(record.removedNodes)) {\n\t\t\t\tif (this.removeProjectedSlotNode(removedNode)) {\n\t\t\t\t\thasProjectionChanges = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const addedNode of Array.from(record.addedNodes)) {\n\t\t\t\tif (addedNode.parentNode !== this) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (this.addProjectedSlotNode(addedNode)) {\n\t\t\t\t\thasProjectionChanges = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasProjectionChanges) {\n\t\t\tthis.slotProjectionVersion += 1;\n\t\t\tthis.update();\n\t\t}\n\t}\n\n\tprivate addProjectedSlotNode(node: Node): boolean {\n\t\tif (\n\t\t\tnode instanceof HTMLScriptElement &&\n\t\t\t(node.hasAttribute(SLOT_PROJECTION_SCRIPT_ATTRIBUTE) || node.hasAttribute(HYDRATION_ATTRIBUTE))\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst slotName = node instanceof Element ? (node.getAttribute('slot') ?? DEFAULT_SLOT_NAME) : DEFAULT_SLOT_NAME;\n\t\tconst bucket = this.projectedSlotContent.get(slotName);\n\n\t\tif (bucket) {\n\t\t\tif (bucket.includes(node)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tbucket.push(node);\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.projectedSlotContent.set(slotName, [node]);\n\t\treturn true;\n\t}\n\n\tprivate removeProjectedSlotNode(node: Node): boolean {\n\t\tfor (const [slotName, bucket] of this.projectedSlotContent.entries()) {\n\t\t\tconst nodeIndex = bucket.indexOf(node);\n\n\t\t\tif (nodeIndex === -1) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tbucket.splice(nodeIndex, 1);\n\n\t\t\tif (bucket.length === 0) {\n\t\t\t\tthis.projectedSlotContent.delete(slotName);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tprivate observeSlotProjection(): void {\n\t\tif (typeof MutationObserver === 'undefined' || this.slotProjectionObserver || !this.isConnected) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.slotProjectionObserver = new MutationObserver((records) => this.handleSlotProjectionMutations(records));\n\t\tthis.slotProjectionObserver.observe(this, { childList: true });\n\t}\n\n\tprivate disconnectSlotProjectionObserver(): void {\n\t\tthis.slotProjectionObserver?.disconnect();\n\t\tthis.slotProjectionObserver = undefined;\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(): { containsSlots: boolean; value: JsxRenderable } {\n\t\tconst nextRenderSignal = new Computed(() => this.resolveRenderOutput());\n\t\tconst output = nextRenderSignal.get();\n\n\t\tif (!this.isConnected) {\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\tprivate resolveRenderOutput(): { containsSlots: boolean; value: JsxRenderable } {\n\t\tthis.ensureSlotProjectionState();\n\t\treturn resolveSlotProjection(this.render(), this.projectedSlotContent);\n\t}\n}\n\nfunction requireRadiantElementSsrRuntime() {\n\tconst runtime = getRadiantElementSsrRuntime();\n\n\tif (!runtime) {\n\t\tthrow new Error(\n\t\t\t'Radiant SSR runtime is unavailable. Import `@ecopages/radiant/server/render-component` before using instance SSR methods.',\n\t\t);\n\t}\n\n\treturn runtime;\n}\n\nfunction shouldHydrateOnConnect(component: HTMLElement): boolean {\n\treturn isRadiantHydratorInstalled() && hasHydrationMarkers(component);\n}\n\nfunction escapeScriptText(value: string): string {\n\treturn value.replace(/</g, '\\\\u003c');\n}\n",
15
- "import { render as renderJsx, type JsxRenderable, type SubscribableJsxValue } from '@ecopages/jsx';\nimport { Computed, subtle } from '@ecopages/signals';\nimport type { UnknownContext } from '../context/types';\nimport { runLegacyInstanceInitializers } from '../decorators/legacy/instance-initializers';\nimport { ReactiveHost, type ReactiveHostLike } from './reactive-host';\nimport type {\n\tReactivePropertyOptions,\n\tReactiveBindingValue,\n\tReactiveBindings,\n\tReactiveFieldOptions,\n} from './radiant-element';\nimport type { ReactiveBindingOption } from './radiant-element';\nimport type { SsrSerializableHydrationBinding } from './ssr-hydration-binding';\nimport { defaultValueForType, isValueOfType } from '../utils/attribute-utils';\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 needsRender = false;\n\tprivate renderSignal?: Computed<JsxRenderable>;\n\tprivate readonly renderWatcher = new subtle.Watcher(() => {\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\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.connected = true;\n\t\tthis.reactiveHost.connectHost();\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.disconnectRenderWatcher();\n\t\tthis.reactiveHost.disconnectHost();\n\t\tthis.connected = false;\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\tif (defaultValue !== undefined && !isValueOfType(type, defaultValue)) {\n\t\t\tthrow new Error(`defaultValue does not match the expected type for ${type.name}`);\n\t\t}\n\n\t\tconst ownDescriptor = Object.getOwnPropertyDescriptor(this.host, propertyName);\n\t\tconst hostRecord = this.host as unknown as Record<PropertyKey, unknown>;\n\t\tconst initialHostValue = hostRecord[propertyName] as T | undefined;\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\tObject.defineProperty(this.host, propertyName, {\n\t\t\tget: () => (this as Record<PropertyKey, unknown>)[propertyName],\n\t\t\tset: (newValue: T) => {\n\t\t\t\t(this as Record<PropertyKey, unknown>)[propertyName] = newValue;\n\t\t\t},\n\t\t\tenumerable: ownDescriptor?.enumerable ?? true,\n\t\t\tconfigurable: true,\n\t\t});\n\n\t\tthis.registerCleanupCallback(() => {\n\t\t\tconst finalValue = (this as Record<PropertyKey, unknown>)[propertyName];\n\n\t\t\tif (ownDescriptor) {\n\t\t\t\tObject.defineProperty(this.host, propertyName, ownDescriptor);\n\n\t\t\t\tif ('value' in ownDescriptor && ownDescriptor.writable) {\n\t\t\t\t\thostRecord[propertyName] = finalValue;\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdelete hostRecord[propertyName];\n\n\t\t\ttry {\n\t\t\t\thostRecord[propertyName] = finalValue;\n\t\t\t} catch {\n\t\t\t\tObject.defineProperty(this.host, propertyName, {\n\t\t\t\t\tvalue: finalValue,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t});\n\t\t\t}\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\tpublic connectedContextCallback(_contextName: UnknownContext): void {}\n\n\tpublic registerContextProvider(_name: string, _provider: unknown): void {\n\t\t// Controller context support is currently client-only.\n\t}\n\n\tpublic registerHydrationBinding(_name: string, _binding: SsrSerializableHydrationBinding): void {}\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.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 = new Computed(() => 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",
14
+ "import type { EventEmitter } from '../tools';\nimport {\n\thasHydrationMarkers,\n\thydrate as hydrateJsx,\n\tjsx,\n\trender as renderJsx,\n\ttype JsxRenderable,\n\ttype SubscribableJsxValue,\n} from '@ecopages/jsx';\nimport type { RenderToStringOptions } from '@ecopages/jsx/server';\nimport { Computed, subtle } from '@ecopages/signals';\nimport type { SsrSerializableContextProvider } from '../context/context-provider';\nimport type { UnknownContext } from '../context/types';\nimport { runLegacyInstanceInitializers } from '../decorators/legacy/instance-initializers';\nimport type { SsrSerializableHydrationBinding } from './ssr-hydration-binding';\nimport { ReactiveHost } from './reactive-host';\nimport { runSsrPreparationCallbacks } from './ssr-preparation';\nimport {\n\tDEFAULT_SLOT_NAME,\n\tSLOT_PROJECTION_SCRIPT_ATTRIBUTE,\n\tcollectAuthoredHydrationScriptMarkup,\n\tcaptureProjectedSlotRenderables,\n\tdeserializeProjectedSlotRenderables,\n\tresolveSlotProjection,\n\tserializeProjectedSlotRenderables,\n\ttakeSlotProjectionScriptPayload,\n} from './slot-projection-runtime';\nimport { HYDRATION_ATTRIBUTE } from './hydration-codec';\nimport { isRadiantHydratorInstalled } from './radiant-hydrator-state';\nimport {\n\tgetRadiantElementSsrRuntime,\n\ttype RadiantElementRenderBridge,\n\ttype RadiantElementSsrCapable,\n} from './radiant-component-ssr-registry';\nimport {\n\ttype AttributeTypeConstant,\n\ttype ReadAttributeValueReturnType,\n\ttype WriteAttributeValueReturnType,\n\tgetInitialValue,\n\tisValueOfType,\n\treadAttributeValue,\n\twriteAttributeValue,\n} from '../utils/attribute-utils';\n\nconst RadiantElementBase = resolveRadiantElementBase();\n\ntype RadiantRenderTarget = HTMLElement | ShadowRoot;\n\nfunction resolveRadiantElementBase(): typeof HTMLElement {\n\tif (typeof HTMLElement !== 'undefined') {\n\t\treturn HTMLElement;\n\t}\n\n\tthrow new Error(\n\t\t\"RadiantElement requires HTMLElement. Install '@ecopages/radiant/server/light-dom-shim' before importing Radiant components in SSR.\",\n\t);\n}\n\n/**\n * Possible positions to insert a rendered template.\n */\nexport type RenderInsertPosition = 'replace' | 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend';\n\n/**\n * Represents a Radiant element event listener.\n */\nexport type RadiantElementEventListener = {\n\tselector: string;\n\ttype: string;\n\tlistener: EventListener;\n\toptions?: AddEventListenerOptions;\n};\n\ntype RadiantElementEventSubscription = RadiantElementEventListener & {\n\ttarget: EventTarget;\n};\n\n/**\n * Represents a property metadata object.\n */\nexport interface ReactiveProperty<T = unknown> {\n\ttype: AttributeTypeConstant;\n\tvalue?: T;\n\tinitialValue?: T;\n\tname: string;\n\tattribute: string;\n\tconverter: {\n\t\tfromAttribute: (value: string) => ReadAttributeValueReturnType;\n\t\ttoAttribute: (value: any) => WriteAttributeValueReturnType;\n\t};\n}\n\n/**\n * Represents the options for a reactive property.\n */\nexport type ReactivePropertyOptions<T> = {\n\ttype: AttributeTypeConstant;\n\treflect?: boolean;\n\tattribute?: string;\n\tdefaultValue?: T;\n\t/**\n\t * Exposes a JSX binding companion for the reactive property.\n\t *\n\t * - `true` creates a `$propertyName` accessor.\n\t * - a string creates a custom accessor with that name.\n\t * - `undefined` defers to the host default.\n\t *\n\t * The generated accessor returns a subscribable JSX child value so JSX can\n\t * patch only the affected child part when the property changes.\n\t */\n\tbind?: boolean | string;\n};\n\nexport type ReactiveBindingOption = boolean | string;\n\nexport type ReactiveFieldOptions = {\n\t/**\n\t * Exposes a JSX binding companion for the reactive field.\n\t *\n\t * - `true` creates a `$fieldName` accessor.\n\t * - a string creates a custom accessor with that name.\n\t * - `undefined` defers to the host default.\n\t */\n\tbind?: ReactiveBindingOption;\n};\n\nexport type ReactiveField<T = unknown> = {\n\tname: string;\n\tvalue: T;\n\tinitialValue: T;\n};\n\ntype StringPropertyKey<Value> = Extract<keyof Value, string>;\n\n/**\n * Value type produced by a JSX binding for a selected reactive member.\n *\n * Bindings preserve the original property type when it is already renderable by\n * the Ecopages JSX runtime. For non-renderable values, the binding falls back\n * to the broader `JsxRenderable` contract consumed by the renderer.\n */\nexport type ReactiveBindingValue<\n\tHost extends object,\n\tProperty extends StringPropertyKey<Host>,\n> = Host[Property] extends JsxRenderable ? Host[Property] : JsxRenderable;\n\n/**\n * Namespace of cached JSX bindings keyed by the explicit bindable shape.\n *\n * Radiant exposes this namespace twice on every host:\n *\n * - `host.bindings.key` for the explicit form\n * - `host.$.key` for the short form\n *\n * Both aliases resolve through the same cached binding objects as\n * `host.bind('key')`.\n */\nexport type ReactiveBindings<Bindings extends object> = {\n\treadonly [Property in StringPropertyKey<Bindings>]: SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>>;\n};\n\n/**\n * Represents an interface for a Radiant element.\n * @typeParam Bindings - Explicit internal bindable shape used to type `bind()` and `getReactiveBinding()`.\n *\n * This shape describes which reactive members are exposed through `bindings`,\n * `$`, and `bind(...)`. It does not automatically define the public JSX\n * attribute contract for the custom element.\n */\nexport interface IRadiantElement<Bindings extends object = {}> {\n\t/**\n\t * Namespace of cached JSX bindings keyed by the explicit bindable shape.\n\t */\n\treadonly bindings: ReactiveBindings<Bindings>;\n\n\t/**\n\t * Short alias for {@link bindings}.\n\t */\n\treadonly $: ReactiveBindings<Bindings>;\n\n\t/**\n\t * Called when a property of the element is updated.\n\t * @param changedProperty - The name of the changed property.\n\t * @param oldValue - The old value of the property.\n\t * @param newValue - The new value of the property.\n\t */\n\tnotifyUpdate(changedProperty: string, oldValue: unknown, newValue: unknown): void;\n\n\t/**\n\t * Subscribes to a Radiant element event.\n\t * @param event - The event listener to subscribe to.\n\t */\n\tsubscribeEvent(event: RadiantElementEventListener): void;\n\n\t/**\n\t * Registers a callback to be invoked when a reactive property or field changes.\n\t *\n\t * @returns A cleanup function that unregisters the callback.\n\t */\n\tregisterUpdateCallback(property: string, update: (...rest: any[]) => any): () => void;\n\n\t/**\n\t * Returns a subscribable JSX child binding for a reactive property or field.\n\t *\n\t * Prefer `this.bindings.key` or `this.$.key` in JSX render code when you want\n\t * property access syntax without string literals.\n\t */\n\tbind<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>>;\n\n\t/**\n\t * Returns a subscribable JSX child binding for a reactive property or field.\n\t *\n\t * This is the primitive lookup used by `bind()`, `bindings.key`, and `$.key`.\n\t */\n\tgetReactiveBinding<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>>;\n\n\t/**\n\t * Defines a stable JSX binding companion accessor for a reactive member.\n\t *\n\t * Companion bindings create properties such as `$count` directly on the host.\n\t * Prefer the `bindings` or `$` namespace for new code when you want typed,\n\t * explicit access to the configured bindable shape.\n\t */\n\tdefineReactiveBinding(property: string, bind?: ReactiveBindingOption): void;\n\n\t/**\n\t * Subscribes to multiple Radiant element events.\n\t * @param events - The array of event listeners to subscribe to.\n\t */\n\tsubscribeEvents(events: RadiantElementEventListener[]): void;\n\n\t/**\n\t * It adds a callback to be executed when the Radiant element is disconnected from the DOM.\n\t */\n\tregisterCleanupCallback(callback: () => void): void;\n\n\t/**\n\t * Registers a callback to run on each future host connection.\n\t *\n\t * The callback is only invoked from `connectedCallback()`. Registering it\n\t * after the host is already connected does not invoke it immediately.\n\t */\n\tregisterConnectedCallback(callback: () => void): void;\n\n\t/**\n\t * Registers a raw value reader for a reactive member so that tracked render\n\t * dependencies can read the underlying value without triggering the public\n\t * getter's dependency tracking.\n\t */\n\tregisterReactiveDependencyReader(property: string, read: () => unknown): void;\n\n\t/**\n\t * Records a tracked read of a reactive member during a component render,\n\t * allowing the signals runtime to re-render only the affected parts.\n\t */\n\ttrackReactiveRead(property: string): void;\n\n\t/**\n\t * Renders a trusted HTML template string into the specified target element.\n\t *\n\t * **Security:** The `template` string is written to the DOM via `innerHTML`\n\t * or `insertAdjacentHTML` without built-in sanitization. Callers are\n\t * responsible for ensuring the input is trusted. Supply a `sanitize`\n\t * function to transform the template before insertion.\n\t *\n\t * @param options - The rendering options.\n\t * @param options.target - The target element to render the template into.\n\t * @param options.template - The template string to render.\n\t * @param options.insert - The position to insert the rendered template. (optional)\n\t * @param options.sanitize - An optional function that transforms the template string before insertion.\n\t */\n\trenderTemplate(options: {\n\t\ttarget: HTMLElement;\n\t\ttemplate: string;\n\t\tinsert?: RenderInsertPosition;\n\t\tsanitize?: (html: string) => string;\n\t}): void;\n\n\t/**\n\t * Called when the Radiant element is connected to a context.\n\t * @param context - The connected context.\n\t */\n\tconnectedContextCallback(context: UnknownContext): void;\n\n\t/**\n\t * Gets a reference to a child element by its data-ref attribute.\n\t * @param ref - The data-ref attribute value of the element to get.\n\t * @param all - Whether to get all elements with the specified data-ref attribute value.\n\t * @returns The element with the specified data-ref attribute value, an array of elements or null if no element was found.\n\t */\n\tgetRef<T extends Element = Element>(ref: string, all: true): T[];\n\tgetRef<T extends Element = Element>(ref: string, all?: false): T | null;\n}\n\n/**\n * A base class for creating custom elements with reactive properties and event subscriptions.\n * @typeParam Bindings - Explicit internal bindable shape. Include only the\n * prop/state keys that JSX bindings should accept.\n *\n * Prefer a separate public props type for custom-element JSX declarations when\n * the external attribute contract differs from the component's internal\n * reactive state. Reuse the same type only when the public props and bindable\n * members are intentionally identical.\n * @extends HTMLElement\n * @implements IRadiantElement<Bindings>\n */\nexport class RadiantElement<Bindings extends object = {}>\n\textends RadiantElementBase\n\timplements IRadiantElement<Bindings>\n{\n\t/**\n\t * Controls where the JSX render lifecycle mounts the component view.\n\t *\n\t * Subclasses can override this with `'shadow'` to force an internal open\n\t * shadow root for client-side rendering. Host SSR helpers remain light-DOM\n\t * only and throw when shadow render mode is enabled.\n\t */\n\tprotected readonly renderRootMode: 'light' | 'shadow' = 'light';\n\tpublic readonly bindings: ReactiveBindings<Bindings>;\n\tpublic readonly $: ReactiveBindings<Bindings>;\n\tprivate readonly reactiveHost: ReactiveHost<this, Bindings>;\n\n\t/**\n\t * A map of property metadata objects, it contains useful information about the properties configured via decorators.\n\t */\n\tprivate reactiveProperties = new Map<string, ReactiveProperty>();\n\n\t/**\n\t * Registered context providers keyed by decorated property name.\n\t */\n\tprivate contextProviders = new Map<string, SsrSerializableContextProvider>();\n\n\t/**\n\t * Registered keyed hydration payload producers appended to SSR host output.\n\t */\n\tprivate hydrationBindings = new Map<string, SsrSerializableHydrationBinding>();\n\n\t/**\n\t * A map of event subscriptions used to manage event listeners on the Radiant element.\n\t */\n\tprivate eventSubscriptions = new Map<string, RadiantElementEventSubscription>();\n\n\t/**\n\t * A map for event emitters\n\t */\n\tprivate eventEmitters = new Map<string, EventEmitter>();\n\n\t/**\n\t * A flag indicating whether the element has been connected to the DOM.\n\t */\n\tprivate elementReady = false;\n\tprivate isRendering = false;\n\tprivate isFirstConnectPending = false;\n\tprivate isRenderScheduled = false;\n\tprivate needsRender = false;\n\t/**\n\t * Snapshot of own-property values that existed before Radiant installs the\n\t * reactive accessors for declared props.\n\t *\n\t * \"Pre-upgrade\" refers to the custom-element upgrade window where user code,\n\t * SSR boot code, or another framework assigns `element.someProp = value`\n\t * before the browser has finished constructing the final custom-element class\n\t * instance with its accessors in place.\n\t *\n\t * Those early assignments land as plain own properties on the element. If we\n\t * define a reactive accessor later without first capturing them, the accessor\n\t * would either miss the assigned value or remain shadowed by the own property.\n\t * `createReactiveProp()` consumes this snapshot so the early value becomes the\n\t * prop's initial reactive state.\n\t */\n\tprivate readonly preUpgradePropertyValues = new Map<string, unknown>();\n\tprivate projectedSlotContent = new Map<string, JsxRenderable[]>();\n\tprivate renderSignal?: Computed<{ containsSlots: boolean; value: JsxRenderable }>;\n\tprivate readonly renderWatcher = new subtle.Watcher(() => {\n\t\tthis.requestUpdate();\n\t});\n\tprivate slotProjectionObserver?: MutationObserver;\n\tprivate slotProjectionVersion = 0;\n\n\tconstructor() {\n\t\tsuper();\n\t\tfor (const propertyName of Object.getOwnPropertyNames(this)) {\n\t\t\tthis.preUpgradePropertyValues.set(propertyName, (this as Record<string, unknown>)[propertyName]);\n\t\t}\n\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\tgetBindingTarget: (target) => Object.getPrototypeOf(target) ?? target,\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\tconnectedCallback() {\n\t\tconst isReconnectDuringPendingFirstConnect = this.isFirstConnectPending;\n\n\t\tthis.elementReady = true;\n\n\t\tthis.reactiveHost.connectHost();\n\n\t\tif (isReconnectDuringPendingFirstConnect) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isFirstConnectPending = true;\n\n\t\tqueueMicrotask(() => {\n\t\t\tthis.isFirstConnectPending = false;\n\n\t\t\tif (!this.isConnected) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!this.shouldRunRenderLifecycle()) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.ensureSlotProjectionState();\n\t\t\tthis.observeSlotProjection();\n\n\t\t\tif (shouldHydrateOnConnect(this)) {\n\t\t\t\tthis.needsRender = false;\n\t\t\t\tthis.hydrate();\n\n\t\t\t\tif (this.needsRender) {\n\t\t\t\t\tthis.update();\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.update();\n\t\t});\n\t}\n\n\tconnectedContextCallback(_contextName: UnknownContext): void {}\n\n\tdisconnectedCallback() {\n\t\tthis.disconnectSlotProjectionObserver();\n\t\tthis.disconnectRenderWatcher();\n\t\tthis.removeAllSubscribedEvents();\n\t\tthis.reactiveHost.disconnectHost();\n\t}\n\n\tpublic notifyUpdate(changedProperty: string, oldValue: unknown, value: unknown) {\n\t\tthis.reactiveHost.notifyUpdate(changedProperty, oldValue, value);\n\t}\n\n\tprivate transformAttributeValue(value: string | null, config: any): unknown {\n\t\treturn value !== null ? config?.converter.fromAttribute(value) : value;\n\t}\n\n\tattributeChangedCallback(name: string, oldValue: string | null, newValue: string | null) {\n\t\tif (oldValue === newValue || !this.elementReady) return;\n\n\t\tif (this.reactiveProperties.has(name)) {\n\t\t\tconst config = this.reactiveProperties.get(name);\n\n\t\t\tconst transformedValue = this.transformAttributeValue(newValue, config);\n\t\t\tconst transformedOldValue = this.transformAttributeValue(oldValue, config);\n\n\t\t\tconst key = config ? config.attribute : name;\n\t\t\t(this as any)[key] = transformedValue;\n\t\t\tthis.notifyUpdate(name, transformedOldValue, transformedValue);\n\t\t}\n\t}\n\n\t/**\n\t * Renders a trusted HTML template string into the specified target element.\n\t *\n\t * **Security:** The `template` string is written to the DOM via `innerHTML`\n\t * or `insertAdjacentHTML` without built-in sanitization. Callers are\n\t * responsible for ensuring the input is trusted. Supply a `sanitize`\n\t * function to transform the template before insertion.\n\t */\n\tpublic renderTemplate({\n\t\ttarget = this,\n\t\ttemplate,\n\t\tinsert = 'replace',\n\t\tsanitize,\n\t}: {\n\t\ttarget: HTMLElement;\n\t\ttemplate: string;\n\t\tinsert?: RenderInsertPosition;\n\t\tsanitize?: (html: string) => string;\n\t}) {\n\t\tconst html = sanitize ? sanitize(template) : template;\n\t\tswitch (insert) {\n\t\t\tcase 'replace':\n\t\t\t\ttarget.innerHTML = html;\n\t\t\t\tbreak;\n\t\t\tcase 'beforeend':\n\t\t\t\ttarget.insertAdjacentHTML('beforeend', html);\n\t\t\t\tbreak;\n\t\t\tcase 'afterbegin':\n\t\t\t\ttarget.insertAdjacentHTML('afterbegin', html);\n\t\t\t\tbreak;\n\t\t\tcase 'beforebegin':\n\t\t\t\ttarget.insertAdjacentHTML('beforebegin', html);\n\t\t\t\tbreak;\n\t\t\tcase 'afterend':\n\t\t\t\ttarget.insertAdjacentHTML('afterend', html);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tpublic render(): JsxRenderable {\n\t\treturn jsx('slot', {});\n\t}\n\n\tpublic renderToString(options: RenderToStringOptions = {}): string {\n\t\tif (!this.shouldRunRenderLifecycle()) {\n\t\t\treturn this.innerHTML;\n\t\t}\n\n\t\tthis.prepareForSsr();\n\n\t\treturn requireRadiantElementSsrRuntime().renderView(this as unknown as RadiantElementSsrCapable, options);\n\t}\n\n\tpublic renderHost(): JsxRenderable {\n\t\tthis.assertSupportsHostSsrRendering();\n\t\treturn requireRadiantElementSsrRuntime().renderHost(this as unknown as RadiantElementSsrCapable);\n\t}\n\n\tpublic renderHostToString(options: RenderToStringOptions = {}): string {\n\t\tthis.assertSupportsHostSsrRendering();\n\t\treturn requireRadiantElementSsrRuntime().renderHostToString(\n\t\t\tthis as unknown as RadiantElementSsrCapable,\n\t\t\toptions,\n\t\t);\n\t}\n\n\tpublic hydrate(): void {\n\t\tif (!this.shouldRunRenderLifecycle() || !this.isConnected || this.isRendering) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst renderTarget = this.getRenderTarget();\n\n\t\tthis.isRendering = true;\n\t\tthis.disconnectSlotProjectionObserver();\n\n\t\ttry {\n\t\t\thydrateJsx(this.resolveTrackedRenderOutput().value, renderTarget as HTMLElement);\n\t\t} finally {\n\t\t\tthis.isRendering = false;\n\t\t\tthis.observeSlotProjection();\n\t\t}\n\t}\n\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\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\tthis.needsRender = true;\n\n\t\tif (!this.isConnected || this.isRendering) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.isFirstConnectPending && shouldHydrateOnConnect(this)) {\n\t\t\treturn;\n\t\t}\n\n\t\twhile (this.needsRender && this.isConnected) {\n\t\t\tthis.needsRender = false;\n\t\t\tthis.isRendering = true;\n\t\t\tthis.disconnectSlotProjectionObserver();\n\n\t\t\ttry {\n\t\t\t\trenderJsx(this.resolveTrackedRenderOutput().value, renderTarget as HTMLElement);\n\t\t\t} finally {\n\t\t\t\tthis.isRendering = false;\n\t\t\t\tthis.observeSlotProjection();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic registerReactiveProperty(config: ReactiveProperty) {\n\t\tthis.reactiveProperties.set(config.name, config);\n\t}\n\n\tprotected getReactiveProperties(): ReactiveProperty[] {\n\t\treturn Array.from(this.reactiveProperties.values());\n\t}\n\n\tpublic registerReactiveDependencyReader(property: string, read: () => unknown): void {\n\t\tthis.reactiveHost.registerReactiveDependencyReader(property, read);\n\t}\n\n\tpublic registerContextProvider(name: string, provider: SsrSerializableContextProvider): void {\n\t\tthis.contextProviders.set(name, provider);\n\t\tthis.registerHydrationBinding(name, provider);\n\t}\n\n\tpublic registerHydrationBinding(name: string, binding: SsrSerializableHydrationBinding): void {\n\t\tthis.hydrationBindings.set(name, binding);\n\t}\n\n\tprotected getContextProviders(): SsrSerializableContextProvider[] {\n\t\treturn Array.from(this.contextProviders.values());\n\t}\n\n\tprotected getHydrationBindings(): SsrSerializableHydrationBinding[] {\n\t\treturn Array.from(this.hydrationBindings.values());\n\t}\n\n\t/**\n\t * Flushes any deferred SSR-only preparation work before the host is\n\t * serialized.\n\t *\n\t * Radiant uses this to reapply SSR consumer state after construction so the\n\t * first server render sees finalized fields, props, and authored content.\n\t */\n\tprotected prepareForSsr(): void {\n\t\trunSsrPreparationCallbacks(this);\n\t}\n\n\t/**\n\t * Returns the default JSX binding policy for reactive members on this host.\n\t *\n\t * `RadiantElement` hosts default to automatic bindings for reactive members\n\t * when no explicit `bind` option is supplied.\n\t *\n\t * Lower-level hosts can override this hook to opt out when they want binding\n\t * creation to stay fully explicit across `@prop`, `@state`, and direct\n\t * `createReactiveProp`/`createReactiveField` calls.\n\t */\n\tprotected shouldAutoBindReactiveMembers(): boolean {\n\t\treturn true;\n\t}\n\n\tprotected shouldRunRenderLifecycle(): boolean {\n\t\treturn this.render !== RadiantElement.prototype.render;\n\t}\n\n\t/** Returns the DOM root used by client-side render and hydrate work. */\n\tprotected getRenderTarget(): RadiantRenderTarget {\n\t\tif (this.renderRootMode !== 'shadow') {\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this.shadowRoot) {\n\t\t\treturn this.shadowRoot;\n\t\t}\n\n\t\tif (typeof this.attachShadow !== 'function') {\n\t\t\tthrow new Error('RadiantElement shadow render mode requires attachShadow().');\n\t\t}\n\n\t\treturn this.attachShadow({ mode: 'open' });\n\t}\n\n\tprotected getHostSsrAttributes(): Record<string, string> {\n\t\treturn requireRadiantElementSsrRuntime().getHostAttributes(this as unknown as RadiantElementSsrCapable);\n\t}\n\n\tprotected resolveSsrRenderBridge(): RadiantElementRenderBridge {\n\t\tconst bridge: RadiantElementRenderBridge = {};\n\n\t\tif (this.renderHostToString === RadiantElement.prototype.renderHostToString) {\n\t\t\tbridge.renderHostToString = (options: RenderToStringOptions | undefined) =>\n\t\t\t\tthis.renderHostToString(options);\n\t\t}\n\n\t\tif (this.renderHost === RadiantElement.prototype.renderHost) {\n\t\t\tbridge.renderHost = () => this.renderHost();\n\t\t}\n\n\t\treturn bridge;\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\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\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\tpublic defineReactiveBinding(property: string, bind: ReactiveBindingOption = true): void {\n\t\tthis.reactiveHost.defineReactiveBinding(property, bind);\n\t}\n\n\tpublic trackReactiveRead(property: string): void {\n\t\tthis.reactiveHost.trackReactiveRead(property);\n\t}\n\n\tpublic subscribeEvents(events: RadiantElementEventListener[]): Array<() => void> {\n\t\tconst unsubscribers: Array<() => void> = [];\n\t\tfor (const event of events) {\n\t\t\tunsubscribers.push(this.subscribeEvent(event));\n\t\t}\n\t\treturn unsubscribers;\n\t}\n\n\tpublic subscribeEvent(eventConfig: RadiantElementEventListener): () => void {\n\t\tconst eventTarget = this.getEventSubscriptionTarget();\n\t\tconst delegatedListener = (delegatedEvent: Event) => {\n\t\t\tif (delegatedEvent.target && (delegatedEvent.target as Element).matches(eventConfig.selector)) {\n\t\t\t\teventConfig.listener.call(this, delegatedEvent);\n\t\t\t}\n\t\t};\n\t\tconst subscriptionId = `${eventConfig.type}:${eventConfig.selector}`;\n\t\teventTarget.addEventListener(eventConfig.type, delegatedListener, eventConfig.options);\n\t\tthis.eventSubscriptions.set(subscriptionId, {\n\t\t\t...eventConfig,\n\t\t\tlistener: delegatedListener,\n\t\t\ttarget: eventTarget,\n\t\t});\n\n\t\treturn this.unsubscribeEvent.bind(this, subscriptionId);\n\t}\n\n\tprivate unsubscribeEvent(id: string): void {\n\t\tconst eventSubscription = this.eventSubscriptions.get(id);\n\t\tif (eventSubscription) {\n\t\t\teventSubscription.target.removeEventListener(\n\t\t\t\teventSubscription.type,\n\t\t\t\teventSubscription.listener,\n\t\t\t\teventSubscription.options,\n\t\t\t);\n\t\t\tthis.eventSubscriptions.delete(id);\n\t\t}\n\t}\n\n\tprivate removeAllSubscribedEvents(): void {\n\t\tfor (const eventSubscription of this.eventSubscriptions.values()) {\n\t\t\teventSubscription.target.removeEventListener(\n\t\t\t\teventSubscription.type,\n\t\t\t\teventSubscription.listener,\n\t\t\t\teventSubscription.options,\n\t\t\t);\n\t\t}\n\t\tthis.eventSubscriptions.clear();\n\t}\n\n\t/**\n\t * Registers a callback that runs on every future disconnect.\n\t */\n\tpublic registerCleanupCallback(callback: () => void): void {\n\t\tthis.reactiveHost.registerCleanupCallback(callback);\n\t}\n\n\t/**\n\t * Registers a callback that runs from `connectedCallback()` on future host\n\t * connections.\n\t *\n\t * Registering after the host is already connected does not invoke the\n\t * callback immediately.\n\t */\n\tpublic registerConnectedCallback(callback: () => void): void {\n\t\tthis.reactiveHost.registerConnectedCallback(callback);\n\t}\n\n\tpublic registerEventEmitter(name: string, emitter: EventEmitter) {\n\t\tthis.eventEmitters.set(name, emitter);\n\t}\n\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\t\tconst queryRoot = this.getQueryRoot();\n\t\tif (all) {\n\t\t\treturn Array.from(queryRoot.querySelectorAll(selector)) as T[];\n\t\t}\n\t\treturn (queryRoot.querySelector(selector) as T) ?? null;\n\t}\n\n\tpublic getSlotElement<T extends Element = Element>(name?: string): T | null {\n\t\treturn (this.getSlotElements<T>(name)[0] ?? null) as T | null;\n\t}\n\n\tpublic getSlotElements<T extends Element = Element>(name?: string): T[] {\n\t\tthis.ensureSlotProjectionState();\n\n\t\treturn (this.projectedSlotContent.get(name ?? DEFAULT_SLOT_NAME) ?? []).filter(\n\t\t\t(renderable): renderable is T => typeof Node !== 'undefined' && renderable instanceof Element,\n\t\t);\n\t}\n\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 reactive custom-element property backed by a Radiant accessor.\n\t *\n\t * When the host was assigned a value before upgrade, that pre-upgrade value is\n\t * preferred over attribute parsing and `defaultValue` so early `.prop = value`\n\t * writes survive into the reactive lifecycle.\n\t */\n\tpublic createReactiveProp<T = unknown>(propertyName: string, options: ReactivePropertyOptions<T>): void {\n\t\tconst { type, attribute, reflect, defaultValue } = options;\n\t\tconst attributeKey = attribute ?? propertyName;\n\t\tconst hasPreUpgradeValue = this.preUpgradePropertyValues.has(propertyName);\n\t\tconst preUpgradeValue = hasPreUpgradeValue ? (this.preUpgradePropertyValues.get(propertyName) as T) : undefined;\n\n\t\tif (defaultValue !== undefined && !isValueOfType(type, defaultValue)) {\n\t\t\tthrow new Error(`defaultValue does not match the expected type for ${type.name}`);\n\t\t}\n\n\t\tconst initialValue: T | undefined = hasPreUpgradeValue\n\t\t\t? preUpgradeValue\n\t\t\t: (getInitialValue(this, type, attributeKey, defaultValue) as T);\n\n\t\tif (this.hasAttribute(attributeKey) && (!reflect || initialValue == null || initialValue === '')) {\n\t\t\tthis.removeAttribute(attributeKey);\n\t\t}\n\n\t\tif (hasPreUpgradeValue && Object.prototype.hasOwnProperty.call(this, propertyName)) {\n\t\t\tReflect.deleteProperty(this, propertyName);\n\t\t}\n\n\t\tconst propertyMapping: ReactiveProperty<T> = {\n\t\t\ttype,\n\t\t\tname: propertyName,\n\t\t\tvalue: initialValue,\n\t\t\tinitialValue,\n\t\t\tattribute: attributeKey,\n\t\t\tconverter: {\n\t\t\t\tfromAttribute: (value) => readAttributeValue(value, type),\n\t\t\t\ttoAttribute: (value) => writeAttributeValue(value, type),\n\t\t\t},\n\t\t};\n\n\t\tthis.registerReactiveProperty(propertyMapping);\n\n\t\tconst handleReflectRequest = (value: T) => {\n\t\t\tif (reflect) {\n\t\t\t\tif (value == null || value === '' || value === false) {\n\t\t\t\t\tthis.removeAttribute(attributeKey);\n\t\t\t\t} else {\n\t\t\t\t\tconst attributeValue = propertyMapping.converter.toAttribute(value);\n\t\t\t\t\tthis.setAttribute(attributeKey, attributeValue);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis.reactiveHost.defineReactiveAccessor(propertyName, {\n\t\t\tbind: options.bind,\n\t\t\tgetValue: () => this.reactiveProperties.get(propertyName)?.value as T | undefined,\n\t\t\tsetValue: (newValue: T) => {\n\t\t\t\tthis.reactiveProperties.set(propertyName, { ...propertyMapping, value: newValue });\n\t\t\t\thandleReflectRequest(newValue);\n\t\t\t},\n\t\t});\n\n\t\tif (initialValue !== undefined) {\n\t\t\tqueueMicrotask(() => {\n\t\t\t\tconst currentValue = this.reactiveProperties.get(propertyName)?.value as T | undefined;\n\t\t\t\tif (currentValue === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\thandleReflectRequest(currentValue);\n\t\t\t\tthis.notifyUpdate(propertyName, undefined, currentValue);\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate ensureSlotProjectionState(): void {\n\t\tif (this.projectedSlotContent.size > 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst scriptPayload = this.isConnected ? takeSlotProjectionScriptPayload(this) : undefined;\n\n\t\tif (typeof scriptPayload === 'string' && scriptPayload !== '') {\n\t\t\tthis.projectedSlotContent = deserializeProjectedSlotRenderables(scriptPayload);\n\t\t\tthis.slotProjectionVersion += 1;\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.getHostChildNodeCount() > 0) {\n\t\t\tthis.projectedSlotContent = captureProjectedSlotRenderables(this);\n\t\t\tthis.slotProjectionVersion += 1;\n\t\t}\n\t}\n\n\tprivate getHostChildNodeCount(): number {\n\t\treturn 'childNodes' in this && this.childNodes ? this.childNodes.length : 0;\n\t}\n\n\tprivate getSlotProjectionScriptTag(): string | undefined {\n\t\tthis.ensureSlotProjectionState();\n\t\tconst payload = serializeProjectedSlotRenderables(this.projectedSlotContent);\n\n\t\tif (!payload) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn `<script type=\"application/json\" ${SLOT_PROJECTION_SCRIPT_ATTRIBUTE}>${escapeScriptText(payload)}</script>`;\n\t}\n\n\tprivate getAuthoredHydrationScriptMarkup(): string | undefined {\n\t\tconst authoredHydrationMarkup = collectAuthoredHydrationScriptMarkup(this);\n\n\t\tif (authoredHydrationMarkup) {\n\t\t\treturn authoredHydrationMarkup;\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tprivate handleSlotProjectionMutations(records: MutationRecord[]): void {\n\t\tlet hasProjectionChanges = false;\n\n\t\tfor (const record of records) {\n\t\t\tfor (const removedNode of Array.from(record.removedNodes)) {\n\t\t\t\tif (this.removeProjectedSlotNode(removedNode)) {\n\t\t\t\t\thasProjectionChanges = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const addedNode of Array.from(record.addedNodes)) {\n\t\t\t\tif (addedNode.parentNode !== this) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (this.addProjectedSlotNode(addedNode)) {\n\t\t\t\t\thasProjectionChanges = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasProjectionChanges) {\n\t\t\tthis.slotProjectionVersion += 1;\n\t\t\tthis.update();\n\t\t}\n\t}\n\n\tprivate addProjectedSlotNode(node: Node): boolean {\n\t\tif (\n\t\t\tnode instanceof HTMLScriptElement &&\n\t\t\t(node.hasAttribute(SLOT_PROJECTION_SCRIPT_ATTRIBUTE) || node.hasAttribute(HYDRATION_ATTRIBUTE))\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst slotName = node instanceof Element ? (node.getAttribute('slot') ?? DEFAULT_SLOT_NAME) : DEFAULT_SLOT_NAME;\n\t\tconst bucket = this.projectedSlotContent.get(slotName);\n\n\t\tif (bucket) {\n\t\t\tif (bucket.includes(node)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tbucket.push(node);\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.projectedSlotContent.set(slotName, [node]);\n\t\treturn true;\n\t}\n\n\tprivate removeProjectedSlotNode(node: Node): boolean {\n\t\tfor (const [slotName, bucket] of this.projectedSlotContent.entries()) {\n\t\t\tconst nodeIndex = bucket.indexOf(node);\n\n\t\t\tif (nodeIndex === -1) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tbucket.splice(nodeIndex, 1);\n\n\t\t\tif (bucket.length === 0) {\n\t\t\t\tthis.projectedSlotContent.delete(slotName);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tprivate observeSlotProjection(): void {\n\t\tif (typeof MutationObserver === 'undefined' || this.slotProjectionObserver || !this.isConnected) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.slotProjectionObserver = new MutationObserver((records) => this.handleSlotProjectionMutations(records));\n\t\tthis.slotProjectionObserver.observe(this, { childList: true });\n\t}\n\n\tprivate disconnectSlotProjectionObserver(): void {\n\t\tthis.slotProjectionObserver?.disconnect();\n\t\tthis.slotProjectionObserver = undefined;\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(): { containsSlots: boolean; value: JsxRenderable } {\n\t\tconst nextRenderSignal = new Computed(() => this.resolveRenderOutput());\n\t\tconst output = nextRenderSignal.get();\n\n\t\tif (!this.isConnected) {\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\tprivate resolveRenderOutput(): { containsSlots: boolean; value: JsxRenderable } {\n\t\tthis.ensureSlotProjectionState();\n\t\treturn resolveSlotProjection(this.render(), this.projectedSlotContent);\n\t}\n\n\tprivate getEventSubscriptionTarget(): HTMLElement | ShadowRoot {\n\t\tconst renderTarget = this.getRenderTarget();\n\t\treturn renderTarget instanceof ShadowRoot ? renderTarget : this;\n\t}\n\n\tprivate getQueryRoot(): ParentNode {\n\t\tconst renderTarget = this.getRenderTarget();\n\t\treturn renderTarget instanceof ShadowRoot ? renderTarget : this;\n\t}\n\n\tprivate assertSupportsHostSsrRendering(): void {\n\t\tif (this.renderRootMode === 'shadow') {\n\t\t\tthrow new Error('RadiantElement shadow render mode does not support renderHost() or renderHostToString().');\n\t\t}\n\t}\n}\n\nfunction requireRadiantElementSsrRuntime() {\n\tconst runtime = getRadiantElementSsrRuntime();\n\n\tif (!runtime) {\n\t\tthrow new Error(\n\t\t\t'Radiant SSR runtime is unavailable. Import `@ecopages/radiant/server/render-component` before using instance SSR methods.',\n\t\t);\n\t}\n\n\treturn runtime;\n}\n\nfunction shouldHydrateOnConnect(component: HTMLElement): boolean {\n\treturn isRadiantHydratorInstalled() && hasHydrationMarkers(component);\n}\n\nfunction escapeScriptText(value: string): string {\n\treturn value.replace(/</g, '\\\\u003c');\n}\n",
15
+ "import { render as renderJsx, type JsxRenderable, type SubscribableJsxValue } from '@ecopages/jsx';\nimport { Computed, subtle } from '@ecopages/signals';\nimport type { UnknownContext } from '../context/types';\nimport { runLegacyInstanceInitializers } from '../decorators/legacy/instance-initializers';\nimport { ReactiveHost, type ReactiveHostLike } from './reactive-host';\nimport type {\n\tReactivePropertyOptions,\n\tReactiveBindingValue,\n\tReactiveBindings,\n\tReactiveFieldOptions,\n} from './radiant-element';\nimport type { ReactiveBindingOption } from './radiant-element';\nimport type { SsrSerializableHydrationBinding } from './ssr-hydration-binding';\nimport { defaultValueForType, isValueOfType } from '../utils/attribute-utils';\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 renderSignal?: Computed<JsxRenderable>;\n\tprivate readonly renderWatcher = new subtle.Watcher(() => {\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\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\tif (defaultValue !== undefined && !isValueOfType(type, defaultValue)) {\n\t\t\tthrow new Error(`defaultValue does not match the expected type for ${type.name}`);\n\t\t}\n\n\t\tconst ownDescriptor = Object.getOwnPropertyDescriptor(this.host, propertyName);\n\t\tconst hostRecord = this.host as unknown as Record<PropertyKey, unknown>;\n\t\tconst initialHostValue = hostRecord[propertyName] as T | undefined;\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\tObject.defineProperty(this.host, propertyName, {\n\t\t\tget: () => (this as Record<PropertyKey, unknown>)[propertyName],\n\t\t\tset: (newValue: T) => {\n\t\t\t\t(this as Record<PropertyKey, unknown>)[propertyName] = newValue;\n\t\t\t},\n\t\t\tenumerable: ownDescriptor?.enumerable ?? true,\n\t\t\tconfigurable: true,\n\t\t});\n\n\t\tthis.registerCleanupCallback(() => {\n\t\t\tconst finalValue = (this as Record<PropertyKey, unknown>)[propertyName];\n\n\t\t\tif (ownDescriptor) {\n\t\t\t\tObject.defineProperty(this.host, propertyName, ownDescriptor);\n\n\t\t\t\tif ('value' in ownDescriptor && ownDescriptor.writable) {\n\t\t\t\t\thostRecord[propertyName] = finalValue;\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdelete hostRecord[propertyName];\n\n\t\t\ttry {\n\t\t\t\thostRecord[propertyName] = finalValue;\n\t\t\t} catch {\n\t\t\t\tObject.defineProperty(this.host, propertyName, {\n\t\t\t\t\tvalue: finalValue,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t});\n\t\t\t}\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\tpublic connectedContextCallback(_contextName: UnknownContext): void {}\n\n\tpublic registerContextProvider(_name: string, _provider: unknown): void {\n\t\t// Controller context support is currently client-only.\n\t}\n\n\tpublic registerHydrationBinding(_name: string, _binding: SsrSerializableHydrationBinding): void {}\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 = new Computed(() => 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",
16
16
  "export const CONTROLLER_IDENTIFIER = Symbol.for('@ecopages/radiant.controllerIdentifier');\n\ntype ControllerConstructorWithMetadata = CustomElementConstructor & {\n\t[CONTROLLER_IDENTIFIER]?: string;\n};\n\nexport function setControllerIdentifier(target: CustomElementConstructor, identifier: string): void {\n\t(target as ControllerConstructorWithMetadata)[CONTROLLER_IDENTIFIER] = identifier;\n}\n\nexport function getControllerIdentifier(target: CustomElementConstructor): string | undefined {\n\treturn (target as ControllerConstructorWithMetadata)[CONTROLLER_IDENTIFIER];\n}\n",
17
17
  "import type { RadiantController } from './core/radiant-controller';\nimport { setControllerIdentifier } from './core/controller-metadata';\n\nexport const CONTROLLER_ATTRIBUTE = 'data-controller';\n\nexport type ControllerConstructor<TController extends RadiantController = RadiantController> = new (\n\thost: Element,\n) => TController;\n\nexport type ControllerRegistrationStrategy = 'keep-current' | 'replace';\n\ntype ControllerRegistryGlobalState = {\n\tactiveRuntimes: Set<ControllerRegistryRuntime>;\n\tcontrollerRegistrationStrategy: ControllerRegistrationStrategy;\n\tcontrollerRegistry: Map<string, ControllerConstructor>;\n};\n\nexport const CONTROLLER_REGISTRY_STATE_KEY = Symbol.for('@ecopages/radiant.controller-registry-state');\n\nfunction getControllerRegistryGlobalState(): ControllerRegistryGlobalState {\n\tconst globalScope = globalThis as typeof globalThis & Record<PropertyKey, unknown>;\n\tconst existingState = globalScope[CONTROLLER_REGISTRY_STATE_KEY];\n\n\tif (existingState) {\n\t\treturn existingState as ControllerRegistryGlobalState;\n\t}\n\n\tconst nextState: ControllerRegistryGlobalState = {\n\t\tactiveRuntimes: new Set<ControllerRegistryRuntime>(),\n\t\tcontrollerRegistrationStrategy: 'keep-current',\n\t\tcontrollerRegistry: new Map<string, ControllerConstructor>(),\n\t};\n\n\tglobalScope[CONTROLLER_REGISTRY_STATE_KEY] = nextState;\n\n\treturn nextState;\n}\n\nconst controllerRegistryState = getControllerRegistryGlobalState();\nconst controllerRegistry = controllerRegistryState.controllerRegistry;\nconst activeRuntimes = controllerRegistryState.activeRuntimes;\n\nexport function parseControllerIdentifiers(element: Element): string[] {\n\tconst value = element.getAttribute(CONTROLLER_ATTRIBUTE);\n\n\tif (!value) {\n\t\treturn [];\n\t}\n\n\treturn value\n\t\t.split(/\\s+/)\n\t\t.map((identifier) => identifier.trim())\n\t\t.filter((identifier) => identifier.length > 0);\n}\n\nexport function visitControllerElements(root: ParentNode, visit: (element: Element) => void): void {\n\tif (root instanceof Element && root.hasAttribute(CONTROLLER_ATTRIBUTE)) {\n\t\tvisit(root);\n\t}\n\n\tfor (const element of Array.from(root.querySelectorAll(`[${CONTROLLER_ATTRIBUTE}]`))) {\n\t\tvisit(element);\n\t}\n}\n\nexport class ControllerRegistryRuntime {\n\tprivate readonly controllersByElement = new Map<Element, Map<string, RadiantController>>();\n\tprivate observer?: MutationObserver;\n\tprivate stopped = false;\n\n\tconstructor(private readonly root: ParentNode = document) {\n\t\tthis.start();\n\t}\n\n\tpublic stop(): void {\n\t\tif (this.stopped) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.stopped = true;\n\t\tthis.observer?.disconnect();\n\t\tthis.observer = undefined;\n\n\t\tfor (const [element, controllers] of this.controllersByElement) {\n\t\t\tfor (const [identifier] of controllers) {\n\t\t\t\tthis.disconnectController(element, identifier);\n\t\t\t}\n\t\t}\n\n\t\tactiveRuntimes.delete(this);\n\t}\n\n\tpublic reconcileRegisteredController(identifier: string): void {\n\t\tvisitControllerElements(this.root, (element) => {\n\t\t\tif (!parseControllerIdentifiers(element).includes(identifier)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.connectController(element, identifier);\n\t\t});\n\t}\n\n\tpublic replaceRegisteredController(identifier: string): void {\n\t\tfor (const [element, controllers] of Array.from(this.controllersByElement.entries())) {\n\t\t\tif (!controllers.has(identifier)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tthis.disconnectController(element, identifier);\n\t\t}\n\n\t\tthis.reconcileRegisteredController(identifier);\n\t}\n\n\tprivate start(): void {\n\t\tvisitControllerElements(this.root, (element) => {\n\t\t\tthis.reconcileElement(element);\n\t\t});\n\n\t\tif (typeof MutationObserver === 'undefined') {\n\t\t\tactiveRuntimes.add(this);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.observer = new MutationObserver((records) => {\n\t\t\tfor (const record of records) {\n\t\t\t\tif (record.type === 'attributes' && record.target instanceof Element) {\n\t\t\t\t\tthis.reconcileElement(record.target);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (const removedNode of Array.from(record.removedNodes)) {\n\t\t\t\t\tif (!(removedNode instanceof Element)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvisitControllerElements(removedNode, (element) => {\n\t\t\t\t\t\tthis.disconnectElementControllers(element);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tfor (const addedNode of Array.from(record.addedNodes)) {\n\t\t\t\t\tif (!(addedNode instanceof Element)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvisitControllerElements(addedNode, (element) => {\n\t\t\t\t\t\tthis.reconcileElement(element);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tconst observerRoot = this.root instanceof Document ? this.root.documentElement : this.root;\n\n\t\tthis.observer.observe(observerRoot, {\n\t\t\tattributeFilter: [CONTROLLER_ATTRIBUTE],\n\t\t\tattributes: true,\n\t\t\tchildList: true,\n\t\t\tsubtree: true,\n\t\t});\n\n\t\tactiveRuntimes.add(this);\n\t}\n\n\tprivate reconcileElement(element: Element): void {\n\t\tconst nextIdentifiers = new Set(parseControllerIdentifiers(element));\n\t\tconst currentControllers = this.controllersByElement.get(element);\n\n\t\tif (currentControllers) {\n\t\t\tfor (const identifier of currentControllers.keys()) {\n\t\t\t\tif (!nextIdentifiers.has(identifier)) {\n\t\t\t\t\tthis.disconnectController(element, identifier);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (const identifier of nextIdentifiers) {\n\t\t\tthis.connectController(element, identifier);\n\t\t}\n\t}\n\n\tprivate connectController(element: Element, identifier: string): void {\n\t\tconst controllerConstructor = controllerRegistry.get(identifier);\n\n\t\tif (!controllerConstructor) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet controllers = this.controllersByElement.get(element);\n\n\t\tif (!controllers) {\n\t\t\tcontrollers = new Map();\n\t\t\tthis.controllersByElement.set(element, controllers);\n\t\t}\n\n\t\tif (controllers.has(identifier)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst controller = new controllerConstructor(element);\n\t\tcontrollers.set(identifier, controller);\n\t\tcontroller.connect();\n\t}\n\n\tprivate disconnectController(element: Element, identifier: string): void {\n\t\tconst controllers = this.controllersByElement.get(element);\n\n\t\tif (!controllers) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst controller = controllers.get(identifier);\n\n\t\tif (!controller) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontroller.disconnect();\n\t\tcontrollers.delete(identifier);\n\n\t\tif (controllers.size === 0) {\n\t\t\tthis.controllersByElement.delete(element);\n\t\t}\n\t}\n\n\tprivate disconnectElementControllers(element: Element): void {\n\t\tconst controllers = this.controllersByElement.get(element);\n\n\t\tif (!controllers) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const identifier of Array.from(controllers.keys())) {\n\t\t\tthis.disconnectController(element, identifier);\n\t\t}\n\t}\n}\n\nexport function registerController<\n\tTController extends RadiantController,\n\tTConstructor extends ControllerConstructor<TController>,\n>(identifier: string, controller: TConstructor): TConstructor {\n\tconst existingController = controllerRegistry.get(identifier);\n\n\tif (existingController) {\n\t\treturn existingController as TConstructor;\n\t}\n\n\tsetControllerIdentifier(controller as unknown as CustomElementConstructor, identifier);\n\tcontrollerRegistry.set(identifier, controller);\n\n\tfor (const runtime of Array.from(activeRuntimes)) {\n\t\truntime.reconcileRegisteredController(identifier);\n\t}\n\n\treturn controller;\n}\n\nexport function hasRegisteredController(identifier: string): boolean {\n\treturn controllerRegistry.has(identifier);\n}\n\n/**\n * Returns the registered controller constructor for an identifier, if one is available.\n *\n * This is primarily used by SSR adapters that need to render controller-owned\n * authored hosts before the browser registry attaches controllers at runtime.\n */\nexport function resolveRegisteredController(identifier: string): ControllerConstructor | undefined {\n\treturn controllerRegistry.get(identifier);\n}\n\nexport function replaceController<\n\tTController extends RadiantController,\n\tTConstructor extends ControllerConstructor<TController>,\n>(identifier: string, controller: TConstructor): TConstructor {\n\tconst existingController = controllerRegistry.get(identifier);\n\n\tif (existingController === controller) {\n\t\treturn controller;\n\t}\n\n\tsetControllerIdentifier(controller as unknown as CustomElementConstructor, identifier);\n\tcontrollerRegistry.set(identifier, controller);\n\n\tfor (const runtime of Array.from(activeRuntimes)) {\n\t\truntime.replaceRegisteredController(identifier);\n\t}\n\n\treturn controller;\n}\n\nexport function setControllerRegistrationStrategy(strategy: ControllerRegistrationStrategy): void {\n\tcontrollerRegistryState.controllerRegistrationStrategy = strategy;\n}\n\nexport function enableControllerReplacementForHmr(): void {\n\tsetControllerRegistrationStrategy('replace');\n}\n\nexport function disableControllerReplacementForHmr(): void {\n\tsetControllerRegistrationStrategy('keep-current');\n}\n\nexport function registerControllerWithConfiguredStrategy<\n\tTController extends RadiantController,\n\tTConstructor extends ControllerConstructor<TController>,\n>(identifier: string, controller: TConstructor): TConstructor {\n\tif (controllerRegistryState.controllerRegistrationStrategy === 'replace') {\n\t\treturn replaceController(identifier, controller);\n\t}\n\n\treturn registerController(identifier, controller);\n}\n\nexport function startControllers(root: ParentNode = document): ControllerRegistryRuntime {\n\treturn new ControllerRegistryRuntime(root);\n}\n\nexport function stopControllers(): void {\n\tfor (const runtime of Array.from(activeRuntimes)) {\n\t\truntime.stop();\n\t}\n}\n",
18
18
  "import type { Method } from '../types';\n\ntype StandardFieldFn<Host extends object, Value, Result> = (\n\ttarget: undefined,\n\tcontext: ClassFieldDecoratorContext<Host, Value>,\n) => Result;\n\ntype LegacyFieldFn<Proto, Result> = (proto: Proto, name: string) => Result;\n\ntype StandardMethodFn<Host extends object, TMethod extends Method, Result> = (\n\ttarget: TMethod,\n\tcontext: ClassMethodDecoratorContext<Host, TMethod>,\n) => Result;\n\ntype LegacyMethodFn<Proto, Result> = (proto: Proto, name: string, descriptor: PropertyDescriptor) => Result;\n\nfunction isMethod(value: unknown): value is Method {\n\treturn typeof value === 'function';\n}\n\nexport function fieldDecoratorBridge<Host extends object, Value, Result, Proto>(\n\tstandard: StandardFieldFn<Host, Value, Result>,\n\tlegacy: LegacyFieldFn<Proto, void>,\n\tprotoOrTarget: undefined,\n\tnameOrContext: ClassFieldDecoratorContext<Host, Value>,\n): Result;\nexport function fieldDecoratorBridge<Host extends object, Value, Proto, Result>(\n\tstandard: StandardFieldFn<Host, Value, void>,\n\tlegacy: LegacyFieldFn<Proto, Result>,\n\tprotoOrTarget: Proto,\n\tnameOrContext: string,\n): Result;\nexport function fieldDecoratorBridge<Host extends object, Value, StandardResult, Proto, LegacyResult>(\n\tstandard: StandardFieldFn<Host, Value, StandardResult>,\n\tlegacy: LegacyFieldFn<Proto, LegacyResult>,\n\tprotoOrTarget: Proto | undefined,\n\tnameOrContext: string | ClassFieldDecoratorContext<Host, Value>,\n): StandardResult | LegacyResult;\n\nexport function fieldDecoratorBridge(\n\tstandard: StandardFieldFn<object, unknown, unknown>,\n\tlegacy: LegacyFieldFn<unknown, unknown>,\n\tprotoOrTarget: unknown,\n\tnameOrContext: string | ClassFieldDecoratorContext<object, unknown>,\n): unknown {\n\tif (typeof nameOrContext === 'object') {\n\t\treturn standard(undefined, nameOrContext);\n\t}\n\n\treturn legacy(protoOrTarget, nameOrContext);\n}\n\nexport function methodDecoratorBridge<Host extends object, TMethod extends Method, Result, Proto>(\n\tstandard: StandardMethodFn<Host, TMethod, Result>,\n\tlegacy: LegacyMethodFn<Proto, void>,\n\tprotoOrTarget: TMethod,\n\tnameOrContext: ClassMethodDecoratorContext<Host, TMethod>,\n\tdescriptor?: undefined,\n): Result;\nexport function methodDecoratorBridge<Host extends object, TMethod extends Method, Proto, Result>(\n\tstandard: StandardMethodFn<Host, TMethod, void>,\n\tlegacy: LegacyMethodFn<Proto, Result>,\n\tprotoOrTarget: Proto,\n\tnameOrContext: string,\n\tdescriptor: PropertyDescriptor,\n): Result;\nexport function methodDecoratorBridge<Host extends object, TMethod extends Method, StandardResult, Proto, LegacyResult>(\n\tstandard: StandardMethodFn<Host, TMethod, StandardResult>,\n\tlegacy: LegacyMethodFn<Proto, LegacyResult>,\n\tprotoOrTarget: Proto | TMethod,\n\tnameOrContext: string | ClassMethodDecoratorContext<Host, TMethod>,\n\tdescriptor?: PropertyDescriptor,\n): StandardResult | LegacyResult;\n\nexport function methodDecoratorBridge(\n\tstandard: StandardMethodFn<object, Method, unknown>,\n\tlegacy: LegacyMethodFn<unknown, unknown>,\n\tprotoOrTarget: unknown,\n\tnameOrContext: string | ClassMethodDecoratorContext<object, Method>,\n\tdescriptor?: PropertyDescriptor,\n): unknown {\n\tif (typeof nameOrContext === 'object') {\n\t\tif (!isMethod(protoOrTarget)) {\n\t\t\tthrow new TypeError('Standard method decorators require a method target');\n\t\t}\n\n\t\treturn standard(protoOrTarget, nameOrContext);\n\t}\n\n\tif (!descriptor) {\n\t\tthrow new TypeError('Legacy method decorators require a property descriptor');\n\t}\n\n\treturn legacy(protoOrTarget, nameOrContext, descriptor);\n}\n",
@@ -37,7 +37,8 @@
37
37
  "import type { RadiantElement } from '../../core/radiant-element';\nimport { createEvent } from '../../helpers/create-event';\nimport type { EventEmitterConfig } from '../../tools/event-emitter';\nimport { registerLegacyInstanceInitializer } from './instance-initializers';\n\n/**\n * Decorator that attaches an EventEmitter to the class field property.\n * The EventEmitter can be used to dispatch custom events from the target element.\n * @param eventConfig Configuration for the event emitter.\n * @see {@link EventEmitter} for more details about how the EventEmitter works.\n */\nexport function event(eventConfig: EventEmitterConfig) {\n\treturn (proto: RadiantElement, propertyKey: string) => {\n\t\tregisterLegacyInstanceInitializer(proto, (element) => {\n\t\t\tconst emitter = createEvent(element, eventConfig);\n\n\t\t\telement.registerConnectedCallback(() => {\n\t\t\t\tObject.defineProperty(element, propertyKey, {\n\t\t\t\t\tget() {\n\t\t\t\t\t\treturn emitter;\n\t\t\t\t\t},\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t};\n}\n",
38
38
  "import type { RadiantElement } from '../../core/radiant-element';\nimport { createEvent } from '../../helpers/create-event';\nimport type { EventEmitterConfig } from '../../tools/event-emitter';\n\n/**\n * Decorator that attaches an EventEmitter to the class field property.\n * The EventEmitter can be used to dispatch custom events from the target element.\n * @param eventConfig Configuration for the event emitter.\n * @see {@link EventEmitter} for more details about how the EventEmitter works.\n */\nexport function event(eventConfig: EventEmitterConfig) {\n\treturn function <T extends RadiantElement, V>(_: undefined, context: ClassFieldDecoratorContext<T, V>) {\n\t\tcontext.addInitializer(function (this: T) {\n\t\t\tconst emitter = createEvent(this, eventConfig);\n\n\t\t\tObject.defineProperty(this, context.name, {\n\t\t\t\tget() {\n\t\t\t\t\treturn emitter;\n\t\t\t\t},\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t});\n\t\t});\n\t};\n}\n",
39
39
  "import { type EventEmitterConfig } from '../tools/event-emitter';\nimport type { RadiantElement } from '../core/radiant-element';\nimport { event as legacyEvent } from './legacy/event';\nimport { event as standardEvent } from './standard/event';\nimport { fieldDecoratorBridge } from './bridge';\n\n/**\n * Decorator that attaches an EventEmitter to the class field property.\n * The EventEmitter can be used to dispatch custom events from the target element.\n * @param eventConfig {@link EventEmitterConfig} Configuration for the event emitter.\n * @see {@link EventEmitter} for more details about how the EventEmitter works.\n */\nexport function event(eventConfig: EventEmitterConfig) {\n\tfunction decorator<THost extends RadiantElement, TValue>(\n\t\tprotoOrTarget: undefined,\n\t\tnameOrContext: ClassFieldDecoratorContext<THost, TValue>,\n\t): void;\n\tfunction decorator(protoOrTarget: RadiantElement, nameOrContext: string): void;\n\tfunction decorator(\n\t\tprotoOrTarget: RadiantElement | undefined,\n\t\tnameOrContext: string | ClassFieldDecoratorContext<RadiantElement, unknown>,\n\t): void {\n\t\treturn fieldDecoratorBridge(standardEvent(eventConfig), legacyEvent(eventConfig), protoOrTarget, nameOrContext);\n\t}\n\n\treturn decorator;\n}\n",
40
- "import type { RadiantElementEventListener } from '../core/radiant-element';\n\n/**\n * Selects which DOM tree delegated event listeners should observe.\n */\nexport type OnEventScope = 'light' | 'shadow' | 'both';\n\ntype BaseOnEventConfig = Pick<RadiantElementEventListener, 'type' | 'options'> & {\n\tscope?: OnEventScope;\n};\n\nexport type OnEventConfig = BaseOnEventConfig &\n\t(\n\t\t| {\n\t\t\t\tselector: string;\n\t\t }\n\t\t| {\n\t\t\t\tref: string;\n\t\t }\n\t\t| {\n\t\t\t\twindow: true;\n\t\t }\n\t\t| {\n\t\t\t\tdocument: true;\n\t\t }\n\t);\n\ntype DelegatedEventRoot = Element | ShadowRoot;\n\ntype EventListenerLifecycleHost = {\n\tregisterConnectedCallback(callback: () => void): void;\n\tregisterCleanupCallback(callback: () => void): void;\n\tisConnected: boolean;\n};\n\nexport type EventListenerHost =\n\t| (EventListenerLifecycleHost & Element)\n\t| (EventListenerLifecycleHost & { host: Element })\n\t| (EventListenerLifecycleHost & { element: Element });\n\nconst shadowRootListenerHooksKey = Symbol('radiant.shadowRootListenerHooks');\nconst patchedAttachShadowKey = Symbol('radiant.patchedAttachShadow');\n\ntype ShadowRootHookHost = Element & {\n\t[patchedAttachShadowKey]?: true;\n\t[shadowRootListenerHooksKey]?: Set<() => void>;\n};\n\nfunction resolveEventListenerHostElement(host: EventListenerHost): Element {\n\tif (host instanceof Element) {\n\t\treturn host;\n\t}\n\n\tif ('host' in host) {\n\t\treturn host.host;\n\t}\n\n\treturn host.element;\n}\n\nfunction isControllerEventHost(host: EventListenerHost): host is EventListenerLifecycleHost & { host: Element } {\n\treturn !(host instanceof Element);\n}\n\nfunction addDelegatedListener(\n\troot: DelegatedEventRoot,\n\tconfig: Pick<OnEventConfig, 'type' | 'options'>,\n\tselector: string,\n\tlistener: EventListener,\n): () => void {\n\tconst delegatedListener = (event: Event) => {\n\t\tif (event.target instanceof Element && event.target.matches(selector)) {\n\t\t\tlistener(event);\n\t\t}\n\t};\n\n\troot.addEventListener(config.type, delegatedListener, config.options);\n\n\treturn () => {\n\t\troot.removeEventListener(config.type, delegatedListener, config.options);\n\t};\n}\n\nfunction registerShadowRootHook(host: EventListenerHost, hook: () => void): void {\n\tconst shadowAwareHost = resolveEventListenerHostElement(host) as ShadowRootHookHost;\n\n\tif (!shadowAwareHost[shadowRootListenerHooksKey]) {\n\t\tshadowAwareHost[shadowRootListenerHooksKey] = new Set();\n\t}\n\n\tshadowAwareHost[shadowRootListenerHooksKey].add(hook);\n\n\tif (shadowAwareHost[patchedAttachShadowKey]) {\n\t\treturn;\n\t}\n\n\tconst originalAttachShadow = shadowAwareHost.attachShadow;\n\n\tshadowAwareHost.attachShadow = function patchedAttachShadow(init: ShadowRootInit): ShadowRoot {\n\t\tconst shadowRoot = originalAttachShadow.call(this, init);\n\t\tfor (const shadowRootHook of shadowAwareHost[shadowRootListenerHooksKey] ?? []) {\n\t\t\tshadowRootHook();\n\t\t}\n\t\treturn shadowRoot;\n\t};\n\n\tshadowAwareHost[patchedAttachShadowKey] = true;\n}\n\n/**\n * Subscribes to a DOM event with delegation, window, or document targeting.\n * Functional equivalent of the `@onEvent` decorator for vanilla JS usage.\n * Returns a cleanup function to remove the listener.\n * @param host The host RadiantElement.\n * @param config The event listener configuration.\n * @param callback The event handler function.\n */\nexport function createEventListener(\n\thost: EventListenerHost,\n\tconfig: OnEventConfig,\n\tcallback: (event: Event) => void,\n): () => void {\n\tif (isControllerEventHost(host) && 'scope' in config && config.scope && config.scope !== 'light') {\n\t\tthrow new Error('RadiantController event listeners only support light DOM scope.');\n\t}\n\n\tconst hostElement = resolveEventListenerHostElement(host);\n\tconst boundCallback = callback.bind(host);\n\tlet windowCleanup: (() => void) | null = null;\n\tlet documentCleanup: (() => void) | null = null;\n\tlet lightCleanup: (() => void) | null = null;\n\tlet shadowCleanup: (() => void) | null = null;\n\tlet disposed = false;\n\n\tconst detachListeners = () => {\n\t\twindowCleanup?.();\n\t\tdocumentCleanup?.();\n\t\tlightCleanup?.();\n\t\tshadowCleanup?.();\n\n\t\twindowCleanup = null;\n\t\tdocumentCleanup = null;\n\t\tlightCleanup = null;\n\t\tshadowCleanup = null;\n\t};\n\n\tconst attachListeners = () => {\n\t\tif (disposed) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ('window' in config && !windowCleanup) {\n\t\t\twindow.addEventListener(config.type, boundCallback, config.options);\n\t\t\twindowCleanup = () => {\n\t\t\t\twindow.removeEventListener(config.type, boundCallback, config.options);\n\t\t\t};\n\t\t}\n\n\t\tif ('document' in config && !documentCleanup) {\n\t\t\tdocument.addEventListener(config.type, boundCallback, config.options);\n\t\t\tdocumentCleanup = () => {\n\t\t\t\tdocument.removeEventListener(config.type, boundCallback, config.options);\n\t\t\t};\n\t\t}\n\n\t\tif ('selector' in config || 'ref' in config) {\n\t\t\tconst selector = 'selector' in config ? config.selector : `[data-ref='${CSS.escape(config.ref)}']`;\n\n\t\t\tif (config.scope !== 'shadow' && !lightCleanup) {\n\t\t\t\tlightCleanup = addDelegatedListener(hostElement, config, selector, boundCallback);\n\t\t\t}\n\n\t\t\tif (config.scope !== 'light' && hostElement.shadowRoot && !shadowCleanup) {\n\t\t\t\tshadowCleanup = addDelegatedListener(hostElement.shadowRoot, config, selector, boundCallback);\n\t\t\t}\n\t\t}\n\t};\n\n\tif ('selector' in config || 'ref' in config) {\n\t\tif (config.scope !== 'light') {\n\t\t\tregisterShadowRootHook(host, () => {\n\t\t\t\tif (host.isConnected) {\n\t\t\t\t\tattachListeners();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\thost.registerConnectedCallback(attachListeners);\n\thost.registerCleanupCallback(detachListeners);\n\n\tif (host.isConnected) {\n\t\tattachListeners();\n\t}\n\n\treturn () => {\n\t\tdisposed = true;\n\t\tdetachListeners();\n\t};\n}\n",
40
+ "export function escapeCssIdentifier(value: string): string {\n\tconst cssNamespace = globalThis.CSS as { escape?: (value: string) => string } | undefined;\n\n\tif (typeof cssNamespace?.escape === 'function') {\n\t\treturn cssNamespace.escape(value);\n\t}\n\n\tlet escaped = '';\n\n\tfor (let index = 0; index < value.length; index += 1) {\n\t\tconst character = value[index] ?? '';\n\t\tconst codePoint = character.codePointAt(0) ?? 0;\n\n\t\tif (codePoint === 0) {\n\t\t\tescaped += '\\uFFFD';\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst isControlCharacter = (codePoint >= 0x0001 && codePoint <= 0x001f) || codePoint === 0x007f;\n\t\tconst startsWithDigit = index === 0 && codePoint >= 0x0030 && codePoint <= 0x0039;\n\t\tconst startsWithHyphenDigit =\n\t\t\tindex === 1 &&\n\t\t\tcodePoint >= 0x0030 &&\n\t\t\tcodePoint <= 0x0039 &&\n\t\t\t(value[0] ?? '') === '-';\n\t\tconst isSingleHyphen = index === 0 && character === '-' && value.length === 1;\n\n\t\tif (isControlCharacter || startsWithDigit || startsWithHyphenDigit) {\n\t\t\tescaped += `\\\\${codePoint.toString(16)} `;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (\n\t\t\tcodePoint >= 0x0080 ||\n\t\t\tcharacter === '-' ||\n\t\t\tcharacter === '_' ||\n\t\t\t(codePoint >= 0x0030 && codePoint <= 0x0039) ||\n\t\t\t(codePoint >= 0x0041 && codePoint <= 0x005a) ||\n\t\t\t(codePoint >= 0x0061 && codePoint <= 0x007a)\n\t\t) {\n\t\t\tescaped += isSingleHyphen ? `\\\\${character}` : character;\n\t\t\tcontinue;\n\t\t}\n\n\t\tescaped += `\\\\${character}`;\n\t}\n\n\treturn escaped;\n}",
41
+ "import type { RadiantElementEventListener } from '../core/radiant-element';\nimport { escapeCssIdentifier } from '../tools/escape-css-identifier';\n\n/**\n * Selects which DOM tree delegated event listeners should observe.\n */\nexport type OnEventScope = 'light' | 'shadow' | 'both';\n\ntype BaseOnEventConfig = Pick<RadiantElementEventListener, 'type' | 'options'> & {\n\tscope?: OnEventScope;\n};\n\nexport type OnEventConfig = BaseOnEventConfig &\n\t(\n\t\t| {\n\t\t\t\tselector: string;\n\t\t }\n\t\t| {\n\t\t\t\tref: string;\n\t\t }\n\t\t| {\n\t\t\t\twindow: true;\n\t\t }\n\t\t| {\n\t\t\t\tdocument: true;\n\t\t }\n\t);\n\ntype DelegatedEventRoot = Element | ShadowRoot;\n\ntype EventListenerLifecycleHost = {\n\tregisterConnectedCallback(callback: () => void): void;\n\tregisterCleanupCallback(callback: () => void): void;\n\tisConnected: boolean;\n};\n\nexport type EventListenerHost =\n\t| (EventListenerLifecycleHost & Element)\n\t| (EventListenerLifecycleHost & { host: Element })\n\t| (EventListenerLifecycleHost & { element: Element });\n\nconst shadowRootListenerHooksKey = Symbol('radiant.shadowRootListenerHooks');\nconst patchedAttachShadowKey = Symbol('radiant.patchedAttachShadow');\n\ntype ShadowRootHookHost = Element & {\n\t[patchedAttachShadowKey]?: true;\n\t[shadowRootListenerHooksKey]?: Set<() => void>;\n};\n\nfunction resolveEventListenerHostElement(host: EventListenerHost): Element {\n\tif (host instanceof Element) {\n\t\treturn host;\n\t}\n\n\tif ('host' in host) {\n\t\treturn host.host;\n\t}\n\n\treturn host.element;\n}\n\nfunction isControllerEventHost(host: EventListenerHost): host is EventListenerLifecycleHost & { host: Element } {\n\treturn !(host instanceof Element);\n}\n\nfunction addDelegatedListener(\n\troot: DelegatedEventRoot,\n\tconfig: Pick<OnEventConfig, 'type' | 'options'>,\n\tselector: string,\n\tlistener: EventListener,\n): () => void {\n\tconst delegatedListener = (event: Event) => {\n\t\tif (event.target instanceof Element && event.target.matches(selector)) {\n\t\t\tlistener(event);\n\t\t}\n\t};\n\n\troot.addEventListener(config.type, delegatedListener, config.options);\n\n\treturn () => {\n\t\troot.removeEventListener(config.type, delegatedListener, config.options);\n\t};\n}\n\nfunction registerShadowRootHook(host: EventListenerHost, hook: () => void): void {\n\tconst shadowAwareHost = resolveEventListenerHostElement(host) as ShadowRootHookHost;\n\n\tif (!shadowAwareHost[shadowRootListenerHooksKey]) {\n\t\tshadowAwareHost[shadowRootListenerHooksKey] = new Set();\n\t}\n\n\tshadowAwareHost[shadowRootListenerHooksKey].add(hook);\n\n\tif (shadowAwareHost[patchedAttachShadowKey]) {\n\t\treturn;\n\t}\n\n\tconst originalAttachShadow = shadowAwareHost.attachShadow;\n\n\tshadowAwareHost.attachShadow = function patchedAttachShadow(init: ShadowRootInit): ShadowRoot {\n\t\tconst shadowRoot = originalAttachShadow.call(this, init);\n\t\tfor (const shadowRootHook of shadowAwareHost[shadowRootListenerHooksKey] ?? []) {\n\t\t\tshadowRootHook();\n\t\t}\n\t\treturn shadowRoot;\n\t};\n\n\tshadowAwareHost[patchedAttachShadowKey] = true;\n}\n\n/**\n * Subscribes to a DOM event with delegation, window, or document targeting.\n * Functional equivalent of the `@onEvent` decorator for vanilla JS usage.\n * Returns a cleanup function to remove the listener.\n * @param host The host RadiantElement.\n * @param config The event listener configuration.\n * @param callback The event handler function.\n */\nexport function createEventListener(\n\thost: EventListenerHost,\n\tconfig: OnEventConfig,\n\tcallback: (event: Event) => void,\n): () => void {\n\tif (isControllerEventHost(host) && 'scope' in config && config.scope && config.scope !== 'light') {\n\t\tthrow new Error('RadiantController event listeners only support light DOM scope.');\n\t}\n\n\tconst hostElement = resolveEventListenerHostElement(host);\n\tconst boundCallback = callback.bind(host);\n\tlet windowCleanup: (() => void) | null = null;\n\tlet documentCleanup: (() => void) | null = null;\n\tlet lightCleanup: (() => void) | null = null;\n\tlet shadowCleanup: (() => void) | null = null;\n\tlet disposed = false;\n\n\tconst detachListeners = () => {\n\t\twindowCleanup?.();\n\t\tdocumentCleanup?.();\n\t\tlightCleanup?.();\n\t\tshadowCleanup?.();\n\n\t\twindowCleanup = null;\n\t\tdocumentCleanup = null;\n\t\tlightCleanup = null;\n\t\tshadowCleanup = null;\n\t};\n\n\tconst attachListeners = () => {\n\t\tif (disposed) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ('window' in config && !windowCleanup) {\n\t\t\twindow.addEventListener(config.type, boundCallback, config.options);\n\t\t\twindowCleanup = () => {\n\t\t\t\twindow.removeEventListener(config.type, boundCallback, config.options);\n\t\t\t};\n\t\t}\n\n\t\tif ('document' in config && !documentCleanup) {\n\t\t\tdocument.addEventListener(config.type, boundCallback, config.options);\n\t\t\tdocumentCleanup = () => {\n\t\t\t\tdocument.removeEventListener(config.type, boundCallback, config.options);\n\t\t\t};\n\t\t}\n\n\t\tif ('selector' in config || 'ref' in config) {\n\t\t\tconst selector = 'selector' in config ? config.selector : `[data-ref='${escapeCssIdentifier(config.ref)}']`;\n\n\t\t\tif (config.scope !== 'shadow' && !lightCleanup) {\n\t\t\t\tlightCleanup = addDelegatedListener(hostElement, config, selector, boundCallback);\n\t\t\t}\n\n\t\t\tif (config.scope !== 'light' && hostElement.shadowRoot && !shadowCleanup) {\n\t\t\t\tshadowCleanup = addDelegatedListener(hostElement.shadowRoot, config, selector, boundCallback);\n\t\t\t}\n\t\t}\n\t};\n\n\tif ('selector' in config || 'ref' in config) {\n\t\tif (config.scope !== 'light') {\n\t\t\tregisterShadowRootHook(host, () => {\n\t\t\t\tif (host.isConnected) {\n\t\t\t\t\tattachListeners();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\thost.registerConnectedCallback(attachListeners);\n\thost.registerCleanupCallback(detachListeners);\n\n\tif (host.isConnected) {\n\t\tattachListeners();\n\t}\n\n\treturn () => {\n\t\tdisposed = true;\n\t\tdetachListeners();\n\t};\n}\n",
41
42
  "import { createEventListener, type EventListenerHost } from '../../helpers/create-event-listener';\nimport type { OnEventConfig } from '../on-event';\nimport { registerLegacyInstanceInitializer } from './instance-initializers';\n\n/**\n * A decorator to subscribe to an event on the target element.\n * The event listener will be automatically unsubscribed when the element is disconnected.\n *\n * Note: This decorator uses event delegation, which means it relies on event bubbling.\n * Therefore, it will not work with events that do not bubble, such as `focus`, `blur`, `load`, `unload`, `scroll`, etc.\n * For focus and blur events, consider using `focusin` and `focusout` which are similar but do bubble.\n *\n * @param eventConfig The event configuration.\n * @param eventConfig.selectors The CSS selector(s) of the target element(s).\n * @param eventConfig.ref The data-ref attribute of the target element.\n * @param eventConfig.type The type of the event to listen for.\n * @param eventConfig.options Optional. An options object that specifies characteristics about the event listener.\n */\nexport function onEvent(eventConfig: OnEventConfig) {\n\treturn (proto: EventListenerHost, _: string, descriptor: PropertyDescriptor) => {\n\t\tconst originalMethod = descriptor.value;\n\n\t\tregisterLegacyInstanceInitializer(proto, (element) => {\n\t\t\tcreateEventListener(element, eventConfig, originalMethod.bind(element));\n\t\t});\n\n\t\treturn descriptor;\n\t};\n}\n",
42
43
  "import { createEventListener, type EventListenerHost } from '../../helpers/create-event-listener';\nimport type { OnEventConfig } from '../on-event';\nimport type { Method } from '../../types';\n\n/**\n * A decorator to subscribe to an event on the target element.\n * The event listener will be automatically unsubscribed when the element is disconnected.\n *\n * Note: This decorator uses event delegation, which means it relies on event bubbling.\n * Therefore, it will not work with events that do not bubble, such as `focus`, `blur`, `load`, `unload`, `scroll`, etc.\n * For focus and blur events, consider using `focusin` and `focusout` which are similar but do bubble.\n *\n * @param eventConfig The event configuration.\n * @param eventConfig.selectors The CSS selector(s) of the target element(s).\n * @param eventConfig.ref The data-ref attribute of the target element.\n * @param eventConfig.type The type of the event to listen for.\n * @param eventConfig.options Optional. An options object that specifies characteristics about the event listener.\n */\nexport function onEvent(eventConfig: OnEventConfig) {\n\treturn function <Host extends EventListenerHost, T extends Method>(\n\t\toriginalMethod: T,\n\t\tcontext: ClassMethodDecoratorContext<Host, T>,\n\t): void {\n\t\tcontext.addInitializer(function (this: Host) {\n\t\t\tcreateEventListener(this, eventConfig, originalMethod.bind(this));\n\t\t});\n\t};\n}\n",
43
44
  "import type { Method } from '../types';\nimport type { EventListenerHost, OnEventConfig, OnEventScope } from '../helpers/create-event-listener';\nimport { onEvent as legacyOnEvent } from './legacy/on-event';\nimport { onEvent as standardOnEvent } from './standard/on-event';\nimport { methodDecoratorBridge } from './bridge';\n\nexport type { OnEventConfig, OnEventScope };\n\n/**\n * A decorator to subscribe to an event on the target element.\n * The event listener will be automatically unsubscribed when the element is disconnected.\n *\n * Note: This decorator uses event delegation, which means it relies on event bubbling.\n * Therefore, it will not work with events that do not bubble, such as `focus`, `blur`, `load`, `unload`, `scroll`, etc.\n * For focus and blur events, consider using `focusin` and `focusout` which are similar but do bubble.\n * Delegated listeners observe the host light DOM by default, and can optionally observe the shadow root or both trees.\n *\n * @param options {@link OnEventConfig} The event configuration.\n */\nexport function onEvent(options: OnEventConfig) {\n\tfunction decorator<Host extends EventListenerHost, TMethod extends Method>(\n\t\tprotoOrTarget: TMethod,\n\t\tnameOrContext: ClassMethodDecoratorContext<Host, TMethod>,\n\t): void;\n\tfunction decorator(\n\t\tprotoOrTarget: EventListenerHost,\n\t\tnameOrContext: string,\n\t\tdescriptor: TypedPropertyDescriptor<Method>,\n\t): TypedPropertyDescriptor<Method> | void;\n\tfunction decorator(\n\t\tprotoOrTarget: EventListenerHost | Method,\n\t\tnameOrContext: string | ClassMethodDecoratorContext<EventListenerHost, Method>,\n\t\tdescriptor?: TypedPropertyDescriptor<Method>,\n\t): TypedPropertyDescriptor<Method> | void {\n\t\treturn methodDecoratorBridge(\n\t\t\tstandardOnEvent(options),\n\t\t\tlegacyOnEvent(options),\n\t\t\tprotoOrTarget,\n\t\t\tnameOrContext,\n\t\t\tdescriptor,\n\t\t);\n\t}\n\n\treturn decorator;\n}\n",
@@ -65,7 +66,7 @@
65
66
  "import type { ReactiveHostLike } from '../../core/reactive-host';\n\nexport function reactiveField<T extends ReactiveHostLike, V>(_: undefined, context: ClassFieldDecoratorContext<T, V>) {\n\tconst privatePropertyKey = Symbol(`__${String(context.name)}__value`);\n\n\tconst contextName = String(context.name);\n\n\tcontext.addInitializer(function (this: T) {\n\t\tthis.defineReactiveBinding(\n\t\t\tcontextName,\n\t\t\t(this as unknown as { shouldAutoBindReactiveMembers?: () => boolean }).shouldAutoBindReactiveMembers?.() ??\n\t\t\t\tfalse,\n\t\t);\n\t\tthis.registerReactiveDependencyReader(\n\t\t\tcontextName,\n\t\t\t() => (this as unknown as Record<PropertyKey, unknown>)[privatePropertyKey],\n\t\t);\n\n\t\tObject.defineProperty(this, context.name, {\n\t\t\tget() {\n\t\t\t\t(this as ReactiveHostLike).trackReactiveRead(contextName);\n\t\t\t\treturn (this as unknown as Record<PropertyKey, unknown>)[privatePropertyKey];\n\t\t\t},\n\t\t\tset(newValue: unknown) {\n\t\t\t\tconst oldValue = (this as unknown as Record<PropertyKey, unknown>)[privatePropertyKey];\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\t(this as unknown as Record<PropertyKey, unknown>)[privatePropertyKey] = newValue;\n\t\t\t\t\t(this as ReactiveHostLike).notifyUpdate(contextName, oldValue, newValue);\n\t\t\t\t}\n\t\t\t},\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t});\n\t});\n\n\treturn function (this: T, value: V) {\n\t\t(this as any)[privatePropertyKey] = value;\n\t\treturn value;\n\t};\n}\n",
66
67
  "import type { ReactiveHostLike } from '../core/reactive-host';\nimport { reactiveField as legacyReactiveField } from './legacy/reactive-field';\nimport { reactiveField as standardReactiveField } from './standard/reactive-field';\nimport { fieldDecoratorBridge } from './bridge';\n\n/**\n * Declares internal mutable component state.\n *\n * Each write triggers `notifyUpdate` so update callbacks, bindings, and\n * `RadiantElement` renders stay in sync. When no explicit binding option\n * is supplied, `RadiantElement` hosts expose a JSX companion binding\n * accessor automatically while plain imperative hosts keep binding\n * opt-in.\n */\nexport function state<THost extends ReactiveHostLike, TValue>(\n\tprotoOrTarget: undefined,\n\tnameOrContext: ClassFieldDecoratorContext<THost, TValue>,\n): (this: THost, value: TValue) => TValue;\nexport function state(protoOrTarget: ReactiveHostLike, nameOrContext: string): void;\nexport function state(\n\tprotoOrTarget: ReactiveHostLike | undefined,\n\tnameOrContext: string | ClassFieldDecoratorContext<ReactiveHostLike, unknown>,\n): ((this: ReactiveHostLike, value: unknown) => unknown) | void {\n\treturn fieldDecoratorBridge(standardReactiveField, legacyReactiveField, protoOrTarget, nameOrContext);\n}\n"
67
68
  ],
68
- "mappings": "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",
69
- "debugId": "DD20C216AEE4D77064756E2164756E21",
69
+ "mappings": "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",
70
+ "debugId": "26E5CC492F2EEBE864756E2164756E21",
70
71
  "names": []
71
72
  }