@ecopages/radiant 0.3.0-beta.2 → 0.3.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -7
- package/client/app-bootstrap.js +2 -2
- package/client/app-bootstrap.js.map +2 -2
- package/client/hydrator.js +2 -2
- package/client/hydrator.js.map +2 -2
- package/client/install-hydrator.js +2 -2
- package/client/install-hydrator.js.map +2 -2
- package/context/context-consumer-bootstrap.js +2 -2
- package/context/context-consumer-bootstrap.js.map +4 -4
- package/context/context-consumer-runtime.js +2 -2
- package/context/context-consumer-runtime.js.map +4 -4
- package/context/context-host.js +2 -2
- package/context/context-host.js.map +2 -2
- package/context/context-provider.js +2 -2
- package/context/context-provider.js.map +2 -2
- package/context/context-ssr-bridge.d.ts +1 -1
- package/context/context-ssr-bridge.js +2 -2
- package/context/context-ssr-bridge.js.map +3 -3
- package/context/create-context.js +2 -2
- package/context/create-context.js.map +2 -2
- package/context/decorators/consume-context.js +2 -2
- package/context/decorators/consume-context.js.map +4 -4
- package/context/decorators/context-selection-delivery.js +2 -2
- package/context/decorators/context-selection-delivery.js.map +2 -2
- package/context/decorators/context-selector.js +2 -2
- package/context/decorators/context-selector.js.map +4 -4
- package/context/decorators/legacy/consume-context.js +2 -2
- package/context/decorators/legacy/consume-context.js.map +4 -4
- package/context/decorators/legacy/context-selector-field.js +2 -2
- package/context/decorators/legacy/context-selector-field.js.map +4 -4
- package/context/decorators/legacy/context-selector.js +2 -2
- package/context/decorators/legacy/context-selector.js.map +4 -4
- package/context/decorators/legacy/provide-context.js +2 -2
- package/context/decorators/legacy/provide-context.js.map +2 -2
- package/context/decorators/on-context-update.js +2 -2
- package/context/decorators/on-context-update.js.map +4 -4
- package/context/decorators/provide-context.js +2 -2
- package/context/decorators/provide-context.js.map +2 -2
- package/context/decorators/standard/consume-context.js +2 -2
- package/context/decorators/standard/consume-context.js.map +4 -4
- package/context/decorators/standard/context-selector-field.js +2 -2
- package/context/decorators/standard/context-selector-field.js.map +4 -4
- package/context/decorators/standard/context-selector.js +2 -2
- package/context/decorators/standard/context-selector.js.map +4 -4
- package/context/decorators/standard/provide-context.js +2 -2
- package/context/decorators/standard/provide-context.js.map +2 -2
- package/context/decorators/standard-legacy-dispatch.js +2 -2
- package/context/decorators/standard-legacy-dispatch.js.map +2 -2
- package/context/events.js +2 -2
- package/context/events.js.map +2 -2
- package/context/hydration-script.js +2 -2
- package/context/hydration-script.js.map +2 -2
- package/context/index.js +2 -2
- package/context/index.js.map +4 -4
- package/controller-registry.js +2 -2
- package/controller-registry.js.map +2 -2
- package/core/controller-metadata.js +2 -2
- package/core/controller-metadata.js.map +2 -2
- package/core/custom-element-metadata.js +2 -2
- package/core/custom-element-metadata.js.map +2 -2
- package/core/event-subscription-registry.js +2 -2
- package/core/event-subscription-registry.js.map +2 -2
- package/core/host-ssr-registry.js +2 -2
- package/core/host-ssr-registry.js.map +2 -2
- package/core/hydration-capable-host.js +2 -2
- package/core/hydration-capable-host.js.map +2 -2
- package/core/hydration-codec.js +2 -2
- package/core/hydration-codec.js.map +2 -2
- package/core/radiant-controller.js +2 -2
- package/core/radiant-controller.js.map +2 -2
- package/core/radiant-element-brand.d.ts +2 -0
- package/core/radiant-element-brand.js +3 -0
- package/core/radiant-element-brand.js.map +10 -0
- package/core/radiant-element-ssr-host-source.d.ts +32 -0
- package/core/radiant-element-ssr-host-source.js +3 -0
- package/core/radiant-element-ssr-host-source.js.map +11 -0
- package/core/radiant-element-ssr-host.d.ts +5 -6
- package/core/radiant-element-ssr-host.js +1 -2
- package/core/radiant-element-ssr-host.js.map +3 -4
- package/core/radiant-element-ssr-registry.d.ts +24 -11
- package/core/radiant-element-ssr-registry.js +2 -2
- package/core/radiant-element-ssr-registry.js.map +3 -3
- package/core/radiant-element.d.ts +5 -3
- package/core/radiant-element.js +2 -2
- package/core/radiant-element.js.map +6 -5
- package/core/radiant-hydrator-state.js +2 -2
- package/core/radiant-hydrator-state.js.map +2 -2
- package/core/reactive-binding-adapter.js +2 -2
- package/core/reactive-binding-adapter.js.map +2 -2
- package/core/reactive-host.js +2 -2
- package/core/reactive-host.js.map +2 -2
- package/core/reactive-jsx-value.js +2 -2
- package/core/reactive-jsx-value.js.map +2 -2
- package/core/reactive-prop-core.js +2 -2
- package/core/reactive-prop-core.js.map +2 -2
- package/core/reactive-prop-metadata.js +2 -2
- package/core/reactive-prop-metadata.js.map +2 -2
- package/core/reactive-property-state.js +2 -2
- package/core/reactive-property-state.js.map +2 -2
- package/core/reactivity-adapter.js +2 -2
- package/core/reactivity-adapter.js.map +2 -2
- package/core/reactivity-runtime.js +2 -2
- package/core/reactivity-runtime.js.map +2 -2
- package/core/reactivity-signals.js +2 -2
- package/core/reactivity-signals.js.map +2 -2
- package/core/render-runtime.js +2 -2
- package/core/render-runtime.js.map +2 -2
- package/core/render-scheduler.js +2 -2
- package/core/render-scheduler.js.map +2 -2
- package/core/slot-projection-runtime.js +2 -2
- package/core/slot-projection-runtime.js.map +2 -2
- package/core/ssr-preparation.js +2 -2
- package/core/ssr-preparation.js.map +2 -2
- package/decorators/attr.js +2 -2
- package/decorators/attr.js.map +2 -2
- package/decorators/bound.js +2 -2
- package/decorators/bound.js.map +2 -2
- package/decorators/bridge.js +2 -2
- package/decorators/bridge.js.map +2 -2
- package/decorators/controller.js +2 -2
- package/decorators/controller.js.map +2 -2
- package/decorators/custom-element.js +2 -2
- package/decorators/custom-element.js.map +2 -2
- package/decorators/debounce.js +2 -2
- package/decorators/debounce.js.map +2 -2
- package/decorators/event.js +2 -2
- package/decorators/event.js.map +2 -2
- package/decorators/legacy/attr.js +2 -2
- package/decorators/legacy/attr.js.map +2 -2
- package/decorators/legacy/bound.js +2 -2
- package/decorators/legacy/bound.js.map +2 -2
- package/decorators/legacy/custom-element.js +2 -2
- package/decorators/legacy/custom-element.js.map +2 -2
- package/decorators/legacy/debounce.js +2 -2
- package/decorators/legacy/debounce.js.map +2 -2
- package/decorators/legacy/event.js +2 -2
- package/decorators/legacy/event.js.map +2 -2
- package/decorators/legacy/host-readiness.js +2 -2
- package/decorators/legacy/host-readiness.js.map +2 -2
- package/decorators/legacy/instance-initializers.js +2 -2
- package/decorators/legacy/instance-initializers.js.map +2 -2
- package/decorators/legacy/member-bootstrap.js +2 -2
- package/decorators/legacy/member-bootstrap.js.map +2 -2
- package/decorators/legacy/on-event.js +2 -2
- package/decorators/legacy/on-event.js.map +2 -2
- package/decorators/legacy/on-updated.js +2 -2
- package/decorators/legacy/on-updated.js.map +2 -2
- package/decorators/legacy/query-slot.js +2 -2
- package/decorators/legacy/query-slot.js.map +2 -2
- package/decorators/legacy/query.js +2 -2
- package/decorators/legacy/query.js.map +2 -2
- package/decorators/legacy/reactive-field.js +2 -2
- package/decorators/legacy/reactive-field.js.map +2 -2
- package/decorators/legacy/reactive-prop.js +2 -2
- package/decorators/legacy/reactive-prop.js.map +2 -2
- package/decorators/legacy/signal.js +2 -2
- package/decorators/legacy/signal.js.map +2 -2
- package/decorators/on-event.js +2 -2
- package/decorators/on-event.js.map +2 -2
- package/decorators/on-updated.js +2 -2
- package/decorators/on-updated.js.map +2 -2
- package/decorators/prop.js +2 -2
- package/decorators/prop.js.map +2 -2
- package/decorators/query-slot.js +2 -2
- package/decorators/query-slot.js.map +2 -2
- package/decorators/query.js +2 -2
- package/decorators/query.js.map +2 -2
- package/decorators/shared/auto-bind.js +2 -2
- package/decorators/shared/auto-bind.js.map +2 -2
- package/decorators/shared/reactive-attr.js +2 -2
- package/decorators/shared/reactive-attr.js.map +2 -2
- package/decorators/signal.js +2 -2
- package/decorators/signal.js.map +2 -2
- package/decorators/standard/attr.js +2 -2
- package/decorators/standard/attr.js.map +2 -2
- package/decorators/standard/bound.js +2 -2
- package/decorators/standard/bound.js.map +2 -2
- package/decorators/standard/custom-element.js +2 -2
- package/decorators/standard/custom-element.js.map +2 -2
- package/decorators/standard/debounce.js +2 -2
- package/decorators/standard/debounce.js.map +2 -2
- package/decorators/standard/event.js +2 -2
- package/decorators/standard/event.js.map +2 -2
- package/decorators/standard/on-event.js +2 -2
- package/decorators/standard/on-event.js.map +2 -2
- package/decorators/standard/on-updated.js +2 -2
- package/decorators/standard/on-updated.js.map +2 -2
- package/decorators/standard/query-slot.js +2 -2
- package/decorators/standard/query-slot.js.map +2 -2
- package/decorators/standard/query.js +2 -2
- package/decorators/standard/query.js.map +2 -2
- package/decorators/standard/reactive-field.js +2 -2
- package/decorators/standard/reactive-field.js.map +2 -2
- package/decorators/standard/reactive-prop.js +2 -2
- package/decorators/standard/reactive-prop.js.map +2 -2
- package/decorators/standard/signal.js +2 -2
- package/decorators/standard/signal.js.map +2 -2
- package/decorators/state.js +2 -2
- package/decorators/state.js.map +2 -2
- package/helpers/create-event-listener.js +2 -2
- package/helpers/create-event-listener.js.map +2 -2
- package/helpers/create-event.js +2 -2
- package/helpers/create-event.js.map +2 -2
- package/helpers/create-query-slot.js +2 -2
- package/helpers/create-query-slot.js.map +2 -2
- package/helpers/create-query.js +2 -2
- package/helpers/create-query.js.map +2 -2
- package/helpers/debounce.js +2 -2
- package/helpers/debounce.js.map +2 -2
- package/helpers/index.js +2 -2
- package/helpers/index.js.map +2 -2
- package/index.js +2 -2
- package/index.js.map +6 -5
- package/package.json +13 -3
- package/server/assert-light-dom-ssr.d.ts +10 -0
- package/server/assert-light-dom-ssr.js +3 -0
- package/server/assert-light-dom-ssr.js.map +10 -0
- package/server/context-ssr.d.ts +8 -19
- package/server/context-ssr.js +2 -2
- package/server/context-ssr.js.map +5 -5
- package/server/host-attribute-serialization.js +2 -2
- package/server/host-attribute-serialization.js.map +4 -4
- package/server/host-script-composition.js +2 -2
- package/server/host-script-composition.js.map +2 -2
- package/server/html-parser.js +2 -2
- package/server/html-parser.js.map +2 -2
- package/server/install-light-dom-shim.d.ts +2 -1
- package/server/install-light-dom-shim.js +2 -2
- package/server/install-light-dom-shim.js.map +9 -8
- package/server/install-ssr-runtime.d.ts +8 -0
- package/server/install-ssr-runtime.js +3 -0
- package/server/install-ssr-runtime.js.map +21 -0
- package/server/install-ssr-scope-adapters.d.ts +1 -0
- package/server/install-ssr-scope-adapters.js +3 -0
- package/server/install-ssr-scope-adapters.js.map +11 -0
- package/server/light-dom-shim.js +2 -2
- package/server/light-dom-shim.js.map +8 -7
- package/server/minimal-dom/dataset.d.ts +2 -0
- package/server/minimal-dom/dataset.js +3 -0
- package/server/minimal-dom/dataset.js.map +10 -0
- package/server/minimal-dom/document.js +2 -2
- package/server/minimal-dom/document.js.map +5 -6
- package/server/minimal-dom/html.d.ts +1 -2
- package/server/minimal-dom/html.js +2 -2
- package/server/minimal-dom/html.js.map +6 -5
- package/server/minimal-dom/install.d.ts +1 -0
- package/server/minimal-dom/install.js +2 -2
- package/server/minimal-dom/install.js.map +8 -7
- package/server/minimal-dom/nodes.d.ts +9 -0
- package/server/minimal-dom/nodes.js +3 -0
- package/server/minimal-dom/nodes.js.map +12 -0
- package/server/project-root.js +2 -2
- package/server/project-root.js.map +4 -5
- package/server/radiant-element-ssr-bridge.d.ts +9 -9
- package/server/radiant-element-ssr-bridge.js +2 -2
- package/server/radiant-element-ssr-bridge.js.map +27 -14
- package/server/radiant-element-ssr-extractor.d.ts +5 -1
- package/server/radiant-element-ssr-extractor.js +2 -2
- package/server/radiant-element-ssr-extractor.js.map +6 -5
- package/server/radiant-element-ssr-service.d.ts +4 -1
- package/server/radiant-element-ssr-service.js +2 -2
- package/server/radiant-element-ssr-service.js.map +15 -12
- package/server/radiant-element-ssr.d.ts +1 -1
- package/server/radiant-element-ssr.js +2 -2
- package/server/radiant-element-ssr.js.map +27 -14
- package/server/render-component.d.ts +3 -5
- package/server/render-component.js +2 -2
- package/server/render-component.js.map +27 -20
- package/server/render-controller.d.ts +1 -0
- package/server/render-controller.js +2 -2
- package/server/render-controller.js.map +30 -23
- package/server/render-fragment.js +2 -2
- package/server/render-fragment.js.map +2 -2
- package/server/slot-projection-html.js +2 -2
- package/server/slot-projection-html.js.map +5 -6
- package/signals/host-resource.js +2 -2
- package/signals/host-resource.js.map +2 -2
- package/signals/host-signal.js +2 -2
- package/signals/host-signal.js.map +2 -2
- package/signals/hydration-script.js +2 -2
- package/signals/hydration-script.js.map +2 -2
- package/tools/escape-css-identifier.js +2 -2
- package/tools/escape-css-identifier.js.map +2 -2
- package/tools/escape-script-json.js +2 -2
- package/tools/escape-script-json.js.map +2 -2
- package/tools/event-emitter.js +2 -2
- package/tools/event-emitter.js.map +2 -2
- package/tools/index.js +2 -2
- package/tools/index.js.map +2 -2
- package/tools/render-jsx-template.js +2 -2
- package/tools/render-jsx-template.js.map +2 -2
- package/types.js +2 -2
- package/types.js.map +2 -2
- package/utils/attribute-utils.js +2 -2
- package/utils/attribute-utils.js.map +2 -2
- package/utils/escape-html-attribute.js +2 -2
- package/utils/escape-html-attribute.js.map +2 -2
- package/utils/index.js +2 -2
- package/utils/index.js.map +2 -2
- package/server/internal-radiant-host.d.ts +0 -2
- package/server/internal-radiant-host.js +0 -3
- package/server/internal-radiant-host.js.map +0 -9
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/core/host-ssr-registry.ts", "../src/core/reactive-prop-metadata.ts", "../src/decorators/legacy/instance-initializers.ts", "../src/decorators/legacy/host-readiness.ts", "../src/core/event-subscription-registry.ts", "../src/utils/attribute-utils.ts", "../src/core/reactive-prop-core.ts", "../src/core/reactive-property-state.ts", "../src/core/reactivity-signals.ts", "../src/core/reactivity-runtime.ts", "../src/core/reactivity-adapter.ts", "../src/tools/escape-script-json.ts", "../src/core/hydration-codec.ts", "../src/core/slot-projection-runtime.ts", "../src/core/render-runtime.ts", "../src/core/render-scheduler.ts", "../src/core/reactive-binding-adapter.ts", "../src/core/reactive-host.ts", "../src/core/ssr-preparation.ts", "../src/core/radiant-hydrator-state.ts", "../src/core/radiant-element-ssr-registry.ts", "../src/core/radiant-element.ts"],
|
|
3
|
+
"sources": ["../src/core/host-ssr-registry.ts", "../src/core/reactive-prop-metadata.ts", "../src/decorators/legacy/instance-initializers.ts", "../src/decorators/legacy/host-readiness.ts", "../src/core/event-subscription-registry.ts", "../src/utils/attribute-utils.ts", "../src/core/reactive-prop-core.ts", "../src/core/reactive-property-state.ts", "../src/core/reactivity-signals.ts", "../src/core/reactivity-runtime.ts", "../src/core/reactivity-adapter.ts", "../src/tools/escape-script-json.ts", "../src/core/hydration-codec.ts", "../src/core/slot-projection-runtime.ts", "../src/core/render-runtime.ts", "../src/core/render-scheduler.ts", "../src/core/reactive-binding-adapter.ts", "../src/core/reactive-host.ts", "../src/core/ssr-preparation.ts", "../src/core/radiant-hydrator-state.ts", "../src/core/radiant-element-ssr-registry.ts", "../src/core/radiant-element-brand.ts", "../src/core/radiant-element.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import type { SsrSerializableContextProvider } from '../context/context-provider';\nimport type { SsrSerializableHydrationBinding } from './ssr-hydration-binding';\n\n/**\n * Shared SSR provider and hydration binding storage for Radiant hosts.\n */\nexport class HostSsrRegistry {\n\tprivate readonly contextProviders = new Map<string, SsrSerializableContextProvider>();\n\tprivate readonly hydrationBindings = new Map<string, SsrSerializableHydrationBinding>();\n\n\tpublic registerContextProvider(name: string, provider: SsrSerializableContextProvider): void {\n\t\tthis.contextProviders.set(name, provider);\n\t\tthis.hydrationBindings.set(name, provider);\n\t}\n\n\tpublic registerHydrationBinding(name: string, binding: SsrSerializableHydrationBinding): void {\n\t\tthis.hydrationBindings.set(name, binding);\n\t}\n\n\tpublic getContextProviders(): SsrSerializableContextProvider[] {\n\t\treturn [...this.contextProviders.values()];\n\t}\n\n\tpublic getHydrationBindings(): SsrSerializableHydrationBinding[] {\n\t\treturn [...this.hydrationBindings.values()];\n\t}\n}\n",
|
|
6
6
|
"import type { ReactivePropertyOptions } from './reactive-prop-core';\n\nconst REACTIVE_PROP_DEFINITIONS = Symbol.for('@ecopages/radiant.reactivePropDefinitions');\n\nexport type ReactivePropDefinition = {\n\tname: string;\n\toptions: ReactivePropertyOptions<unknown>;\n};\n\ntype RadiantConstructorWithReactiveProps = CustomElementConstructor & {\n\t[REACTIVE_PROP_DEFINITIONS]?: ReactivePropDefinition[];\n};\n\nexport function registerReactivePropDefinition(\n\ttarget: object,\n\tpropertyName: string,\n\toptions: ReactivePropertyOptions<unknown>,\n): void {\n\tconst constructor = target.constructor as RadiantConstructorWithReactiveProps;\n\tconst definitions = constructor[REACTIVE_PROP_DEFINITIONS] ?? [];\n\n\tif (definitions.some((definition) => definition.name === propertyName)) {\n\t\treturn;\n\t}\n\n\tdefinitions.push({ name: propertyName, options });\n\tconstructor[REACTIVE_PROP_DEFINITIONS] = definitions;\n}\n\nexport function getReactivePropDefinitions(target: object): ReactivePropDefinition[] {\n\treturn ((target.constructor as RadiantConstructorWithReactiveProps)[REACTIVE_PROP_DEFINITIONS] ?? []).slice();\n}\n",
|
|
@@ -22,10 +22,11 @@
|
|
|
22
22
|
"import type { JsxBindingSourceValue, SubscribableJsxValueWithAccess } from '@ecopages/jsx';\nimport { adaptReactiveStateToJsxBinding } from './reactive-binding-adapter';\nimport { getReactiveRuntime } from './reactivity-runtime';\nimport type { ReactiveState } from './reactivity-contract';\nimport type {\n\tReactiveAccessorDefinition,\n\tReactiveBindingOption,\n\tReactiveBindingValue,\n\tReactiveBindings,\n\tReactiveFieldOptions,\n} from './reactive-prop-core';\n\ntype StringPropertyKey<Value> = Extract<keyof Value, string>;\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, and context reactions without\n * 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): SubscribableJsxValueWithAccess<ReactiveBindingValue<Bindings, Property>>;\n\tgetReactiveBinding<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValueWithAccess<ReactiveBindingValue<Bindings, Property>>;\n\tgetReactiveMember<T = unknown>(propertyName: string): ReactiveState<T> | undefined;\n\tcreateReactiveField<T>(propertyName: string, initialValue: T, options?: ReactiveFieldOptions): void;\n\tcreateReactiveMember<T>(propertyName: string, initialValue: T): ReactiveState<T>;\n\tregisterReactiveMember<T>(propertyName: string, signal: ReactiveState<T>): 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\tregisterUpdateCallback(property: string, update: () => void): () => void;\n}\n\n/**\n * Shared reactivity engine used by both `RadiantElement` and\n * `RadiantController`.\n *\n * Every reactive host member owns a single signals-backed `ReactiveState`\n * (a `State` for fields/props/attributes, or a user `signal()` for the signal\n * decorator). The jsx binding, `onUpdated` callbacks, and `ReactiveComputed`\n * tracking all read that one state directly, so there is no parallel\n * notification bus or dependency shim.\n *\n * Host-specific concerns such as attribute reflection, render lifecycles, and\n * custom-element APIs stay in the outer host classes.\n */\nexport class ReactiveHost<Host extends object, Bindings extends object = {}> {\n\tpublic readonly bindings: ReactiveBindings<Bindings>;\n\tpublic readonly $: ReactiveBindings<Bindings>;\n\n\tprivate reactiveMembers = new Map<string, ReactiveState<unknown>>();\n\tprivate jsxBindings = new Map<string, SubscribableJsxValueWithAccess<JsxBindingSourceValue>>();\n\t/** `onUpdated` callbacks keyed by property; values are signal unsubscribe disposers when subscribed. */\n\tprivate updateCallbacks = new Map<string, Map<() => void, (() => void) | undefined>>();\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 * Registers a callback that should run on host disconnect.\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 host connects.\n\t */\n\tpublic registerConnectedCallback(callback: () => void): void {\n\t\tthis.onConnectedCallbacks.push(callback);\n\t}\n\n\t/**\n\t * Fires the `onUpdated` callbacks registered for a member.\n\t *\n\t * This is the only remaining use of the update-callback bus: an initial\n\t * emit for members that want one (currently `@prop`). Change notifications\n\t * flow through the member `State`'s own subscription, not through here.\n\t */\n\tpublic notifyUpdate(changedProperty: string, _oldValue: unknown, _value: unknown): void {\n\t\tconst callbacks = this.updateCallbacks.get(changedProperty);\n\n\t\tif (!callbacks) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const update of [...callbacks.keys()]) {\n\t\t\tupdate();\n\t\t}\n\t}\n\n\t/**\n\t * Returns the member state registered under `propertyName`, if any.\n\t */\n\tpublic getReactiveMember<T = unknown>(propertyName: string): ReactiveState<T> | undefined {\n\t\treturn this.reactiveMembers.get(propertyName) as ReactiveState<T> | undefined;\n\t}\n\n\t/**\n\t * Creates a new reactive member state and registers it under `propertyName`.\n\t */\n\tpublic createReactiveMember<T>(propertyName: string, initialValue: T): ReactiveState<T> {\n\t\tconst signal = getReactiveRuntime().createState(initialValue) as ReactiveState<T>;\n\t\tthis.registerMember(propertyName, signal as ReactiveState<unknown>);\n\t\treturn signal;\n\t}\n\n\t/**\n\t * Registers an externally-owned reactive member state (used by the\n\t * `signal()` decorator, whose state is a user-provided signals `Signal`).\n\t */\n\tpublic registerReactiveMember<T>(propertyName: string, signal: ReactiveState<T>): void {\n\t\tthis.registerMember(propertyName, signal as ReactiveState<unknown>);\n\t}\n\n\t/**\n\t * Stores the member state and subscribes any `onUpdated` callbacks that were\n\t * registered before the member existed (decorator initializer ordering).\n\t */\n\tprivate registerMember(propertyName: string, signal: ReactiveState<unknown>): void {\n\t\tthis.reactiveMembers.set(propertyName, signal);\n\t\tthis.jsxBindings.delete(propertyName);\n\n\t\tconst callbacks = this.updateCallbacks.get(propertyName);\n\n\t\tif (callbacks) {\n\t\t\tfor (const update of callbacks.keys()) {\n\t\t\t\tthis.subscribeCallback(propertyName, update);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Subscribes an `onUpdated` callback to the member state if the member is\n\t * already registered and not yet subscribed.\n\t */\n\tprivate subscribeCallback(propertyName: string, update: () => void): void {\n\t\tconst callbacks = this.updateCallbacks.get(propertyName);\n\t\tconst signal = this.reactiveMembers.get(propertyName);\n\n\t\tif (!callbacks || !signal || callbacks.get(update)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst unsubscribe = signal.subscribe(() => update());\n\t\tcallbacks.set(update, unsubscribe);\n\t}\n\n\t/**\n\t * Returns the jsx binding for a named reactive member.\n\t *\n\t * The binding is adapted from the member `State` once and cached so derived\n\t * transforms (`map`, member access) share a stable source identity.\n\t */\n\tpublic getReactiveBinding<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValueWithAccess<ReactiveBindingValue<Bindings, Property>> {\n\t\tconst key = property as string;\n\t\tconst cached = this.jsxBindings.get(key);\n\n\t\tif (cached) {\n\t\t\treturn cached as SubscribableJsxValueWithAccess<ReactiveBindingValue<Bindings, Property>>;\n\t\t}\n\n\t\tconst signal = this.reactiveMembers.get(key);\n\n\t\tif (!signal) {\n\t\t\tthrow new Error(`No reactive binding registered for \"${String(property)}\".`);\n\t\t}\n\n\t\tconst binding = adaptReactiveStateToJsxBinding(\n\t\t\tsignal as ReactiveState<ReactiveBindingValue<Bindings, Property>>,\n\t\t);\n\n\t\tthis.jsxBindings.set(key, binding);\n\t\treturn binding;\n\t}\n\n\t/**\n\t * Registers an `onUpdated`-style callback for a named reactive member.\n\t *\n\t * Change notifications flow through the member `State`'s own subscription\n\t * (D1). The callback is also kept in the update-callback bus so an initial\n\t * emit (currently `@prop`) can still reach it once after definition.\n\t */\n\tpublic registerUpdateCallback(property: string, update: () => void): () => void {\n\t\tlet callbacks = this.updateCallbacks.get(property);\n\n\t\tif (!callbacks) {\n\t\t\tcallbacks = new Map();\n\t\t\tthis.updateCallbacks.set(property, callbacks);\n\t\t}\n\n\t\tcallbacks.set(update, undefined);\n\t\tthis.subscribeCallback(property, update);\n\n\t\treturn () => {\n\t\t\tconst perProperty = this.updateCallbacks.get(property);\n\t\t\tperProperty?.get(update)?.();\n\t\t\tperProperty?.delete(update);\n\n\t\t\tif (perProperty && perProperty.size === 0) {\n\t\t\t\tthis.updateCallbacks.delete(property);\n\t\t\t}\n\t\t};\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 * Defines a reactive getter/setter pair on the host backed by a member\n\t * `State`, and wires it into the jsx binding namespace.\n\t */\n\tpublic defineReactiveAccessor<T>(propertyName: string, options: ReactiveAccessorDefinition<T>): void {\n\t\tconst bind = options.bind ?? this.shouldAutoBind();\n\n\t\tthis.defineReactiveBinding(propertyName, bind);\n\n\t\tthis.access.defineProperty(this.host, propertyName, {\n\t\t\tget: () => options.signal.get(),\n\t\t\tset: (newValue: T) => {\n\t\t\t\toptions.signal.set(newValue);\n\t\t\t\toptions.onSet?.(newValue);\n\t\t\t},\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\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 existing = this.reactiveMembers.get(propertyName) as ReactiveState<T> | undefined;\n\t\tconst signal = existing ?? this.createReactiveMember(propertyName, initialValue);\n\n\t\tif (existing && initialValue !== undefined) {\n\t\t\tsignal.set(initialValue);\n\t\t}\n\n\t\tthis.defineReactiveAccessor(propertyName, { bind: options.bind, signal });\n\n\t\tif (!options.suppressInitialNotify) {\n\t\t\tthis.notifyUpdate(propertyName, undefined, signal.get());\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\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",
|
|
23
23
|
"type SsrPreparationCallback = () => void;\n\nconst SSR_PREPARATION_CALLBACKS = Symbol.for('@ecopages/radiant.ssr-preparation-callbacks');\nexport const SSR_PREPARATION_RUNNING = Symbol.for('@ecopages/radiant.ssr-preparation-running');\n\n/**\n * Registers instance-local SSR preparation work that should run immediately\n * before a Radiant host serializes its first server render.\n *\n * Decorators use this to defer SSR-only setup until after class fields,\n * reactive props, and authored host content have all been applied.\n */\nexport function registerSsrPreparationCallback(host: object, callback: SsrPreparationCallback): void {\n\tconst target = host as Record<PropertyKey, unknown>;\n\tconst existingCallbacks = target[SSR_PREPARATION_CALLBACKS];\n\n\tif (Array.isArray(existingCallbacks)) {\n\t\texistingCallbacks.push(callback);\n\t\treturn;\n\t}\n\n\tObject.defineProperty(host, SSR_PREPARATION_CALLBACKS, {\n\t\tvalue: [callback],\n\t\tconfigurable: true,\n\t});\n}\n\n/**\n * Runs all registered SSR preparation callbacks for the provided host.\n *\n * The callbacks are intentionally retained so repeated SSR serializations stay\n * deterministic after later host mutations.\n */\nexport function runSsrPreparationCallbacks(host: object): void {\n\tconst target = host as Record<PropertyKey, unknown>;\n\tconst callbacks = target[SSR_PREPARATION_CALLBACKS];\n\n\tif (!Array.isArray(callbacks)) {\n\t\treturn;\n\t}\n\n\ttarget[SSR_PREPARATION_RUNNING] = true;\n\n\ttry {\n\t\tfor (const callback of callbacks as SsrPreparationCallback[]) {\n\t\t\tcallback();\n\t\t}\n\t} finally {\n\t\tdelete target[SSR_PREPARATION_RUNNING];\n\t}\n}\n",
|
|
24
24
|
"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",
|
|
25
|
-
"import type { JsxRenderable } from '@ecopages/jsx';\nimport {
|
|
26
|
-
"import type { EventEmitter } from '../tools';\nimport { hasHydrationMarkers, jsx, type JsxRenderable, type SubscribableJsxValueWithAccess } from '@ecopages/jsx';\nimport type { RenderToStringOptions } from '@ecopages/jsx/server';\nimport { HostSsrRegistry } from './host-ssr-registry';\nimport { getReactivePropDefinitions, type ReactivePropDefinition } from './reactive-prop-metadata';\nimport { ensureLegacyHostReady } from '../decorators/legacy/host-readiness';\nimport type { SsrSerializableContextProvider } from '../context/context-provider';\nimport type { UnknownContext } from '../context/types';\nimport {\n\ttype ReactiveBindingOption,\n\ttype ReactiveBindingValue,\n\ttype ReactiveBindings,\n\ttype ReactiveFieldOptions,\n\ttype ReactiveProperty,\n\ttype ReactivePropertyOptions,\n} from './reactive-prop-core';\nimport { EventSubscriptionRegistry } from './event-subscription-registry';\nimport { ReactivePropertyState } from './reactive-property-state';\nimport { RenderRuntime, type RenderRuntimeHost } from './render-runtime';\nimport { RenderScheduler } from './render-scheduler';\nimport type { SsrSerializableHydrationBinding } from './ssr-hydration-binding';\nimport { ReactiveHost } from './reactive-host';\nimport type { ReactiveState } from './reactivity-contract';\nimport { runSsrPreparationCallbacks } from './ssr-preparation';\nimport { isRadiantHydratorInstalled } from './radiant-hydrator-state';\nimport { getRadiantElementSsrRuntime } from './radiant-element-ssr-registry';\nimport type { InternalRadiantSsrHost } from './radiant-element-ssr-host';\nimport { getInitialValue } from '../utils/attribute-utils';\n\nexport type {\n\tReactiveBindingOption,\n\tReactiveBindingValue,\n\tReactiveBindings,\n\tReactiveFieldOptions,\n\tReactiveProperty,\n\tReactivePropertyOptions,\n} from './reactive-prop-core';\n\nconst RadiantElementBase = resolveRadiantElementBase();\n\ntype RadiantRenderTarget = HTMLElement | ShadowRoot;\ntype RadiantInteractionTarget = HTMLElement | ShadowRoot;\ntype RadiantRenderSurface = {\n\trenderTarget: RadiantRenderTarget;\n\tinteractionTarget: RadiantInteractionTarget;\n\tqueryRoot: ParentNode;\n};\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 SSR imports.\",\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 StringPropertyKey<Value> = Extract<keyof Value, string>;\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: () => void): () => 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): SubscribableJsxValueWithAccess<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): SubscribableJsxValueWithAccess<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 * Creates a new reactive member state and registers it under `propertyName`.\n\t */\n\tcreateReactiveMember<T>(propertyName: string, initialValue: T): ReactiveState<T>;\n\n\t/**\n\t * Registers an externally-owned reactive member state (used by `signal()`).\n\t */\n\tregisterReactiveMember<T>(propertyName: string, signal: ReactiveState<T>): void;\n\n\t/**\n\t * Returns the member state registered under `propertyName`, if any.\n\t */\n\tgetReactiveMember<T = unknown>(propertyName: string): ReactiveState<T> | undefined;\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\tprivate readonly reactivePropertyState: ReactivePropertyState;\n\tprivate readonly eventSubscriptionRegistry: EventSubscriptionRegistry;\n\n\t/**\n\t * Registered context providers and hydration bindings for SSR.\n\t */\n\tprivate readonly hostSsrRegistry = new HostSsrRegistry();\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 isFirstConnectPending = false;\n\tprivate readonly renderScheduler: RenderScheduler;\n\tprivate renderRuntime?: RenderRuntime;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.reactivePropertyState = new ReactivePropertyState(this);\n\t\tthis.eventSubscriptionRegistry = new EventSubscriptionRegistry(\n\t\t\t() => this.resolveRenderSurface().interactionTarget,\n\t\t\t() => this,\n\t\t);\n\t\tthis.renderScheduler = new RenderScheduler({\n\t\t\tcanFlush: () =>\n\t\t\t\tthis.isConnected &&\n\t\t\t\t!this.renderScheduler.rendering &&\n\t\t\t\t!(this.isFirstConnectPending && shouldHydrateOnConnect(this)),\n\t\t\tcommit: () => {\n\t\t\t\tconst { renderTarget } = this.resolveRenderSurface();\n\t\t\t\tthis.getOrCreateRenderRuntime().render(renderTarget as HTMLElement);\n\t\t\t},\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\tensureLegacyHostReady(this, 'construct');\n\t}\n\n\tpublic get slotProjectionVersion(): number {\n\t\treturn this.renderRuntime?.slotProjectionVersion ?? 0;\n\t}\n\n\tconnectedCallback() {\n\t\tensureLegacyHostReady(this, 'connect');\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\tconst renderRuntime = this.getOrCreateRenderRuntime();\n\t\t\trenderRuntime.observeSlotProjection();\n\n\t\t\tif (shouldHydrateOnConnect(this)) {\n\t\t\t\tthis.renderScheduler.clearPending();\n\t\t\t\tthis.hydrate();\n\n\t\t\t\tif (this.renderScheduler.pending) {\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.renderRuntime?.dispose();\n\t\tthis.renderRuntime = undefined;\n\t\tthis.eventSubscriptionRegistry.removeAll();\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\tattributeChangedCallback(name: string, oldValue: string | null, newValue: string | null) {\n\t\tif (oldValue === newValue || !this.elementReady) return;\n\n\t\tthis.reactivePropertyState.applyAttributeChange(name, oldValue, newValue);\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 getReactivePropDefinitions(): ReactivePropDefinition[] {\n\t\treturn getReactivePropDefinitions(this);\n\t}\n\n\tpublic getPropertyValue(name: string): unknown {\n\t\treturn Reflect.get(this, name);\n\t}\n\n\tpublic renderViewToString(options: RenderToStringOptions = {}): string {\n\t\tif (!this.shouldRunRenderLifecycle()) {\n\t\t\treturn this.innerHTML;\n\t\t}\n\n\t\tensureLegacyHostReady(this, 'ssr');\n\t\tthis.prepareForSsr();\n\n\t\treturn requireRadiantElementSsrRuntime().renderView(this as unknown as InternalRadiantSsrHost, options);\n\t}\n\n\tpublic hydrate(): void {\n\t\tif (!this.shouldRunRenderLifecycle() || !this.isConnected || this.renderScheduler.rendering) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { renderTarget } = this.resolveRenderSurface();\n\t\tconst renderRuntime = this.getOrCreateRenderRuntime();\n\n\t\tthis.renderScheduler.runExclusive(() => {\n\t\t\trenderRuntime.hydrate(renderTarget as HTMLElement);\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.renderScheduler.requestUpdate();\n\t}\n\n\tpublic update(): void {\n\t\tif (!this.shouldRunRenderLifecycle()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.renderScheduler.markPending();\n\t\tthis.renderScheduler.flush();\n\t}\n\n\tpublic registerReactiveProperty(config: ReactiveProperty) {\n\t\tthis.reactivePropertyState.register(config);\n\t}\n\n\tpublic getReactiveProperties(): ReactiveProperty[] {\n\t\treturn this.reactivePropertyState.getAll();\n\t}\n\n\tpublic registerContextProvider(name: string, provider: SsrSerializableContextProvider): void {\n\t\tthis.hostSsrRegistry.registerContextProvider(name, provider);\n\t}\n\n\tpublic registerHydrationBinding(name: string, binding: SsrSerializableHydrationBinding): void {\n\t\tthis.hostSsrRegistry.registerHydrationBinding(name, binding);\n\t}\n\n\tpublic getContextProviders(): SsrSerializableContextProvider[] {\n\t\treturn this.hostSsrRegistry.getContextProviders();\n\t}\n\n\tpublic getHydrationBindings(): SsrSerializableHydrationBinding[] {\n\t\treturn this.hostSsrRegistry.getHydrationBindings();\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\tpublic registerUpdateCallback(property: string, update: () => void): () => 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): SubscribableJsxValueWithAccess<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): SubscribableJsxValueWithAccess<ReactiveBindingValue<Bindings, Property>> {\n\t\treturn this.reactiveHost.getReactiveBinding(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 createReactiveMember<T>(propertyName: string, initialValue: T): ReactiveState<T> {\n\t\treturn this.reactiveHost.createReactiveMember(propertyName, initialValue);\n\t}\n\n\tpublic registerReactiveMember<T>(propertyName: string, signal: ReactiveState<T>): void {\n\t\tthis.reactiveHost.registerReactiveMember(propertyName, signal);\n\t}\n\n\tpublic getReactiveMember<T = unknown>(propertyName: string): ReactiveState<T> | undefined {\n\t\treturn this.reactiveHost.getReactiveMember(propertyName);\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 hasEventSubscription(subscriptionId: string): boolean {\n\t\treturn this.eventSubscriptionRegistry.hasEventSubscription(subscriptionId);\n\t}\n\n\tpublic subscribeEvent(eventConfig: RadiantElementEventListener): () => void {\n\t\treturn this.eventSubscriptionRegistry.subscribe(eventConfig);\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.resolveRenderSurface();\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\treturn this.getOrCreateRenderRuntime().getSlotElements<T>(name);\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\tthis.reactivePropertyState.create(\n\t\t\tpropertyName,\n\t\t\toptions,\n\t\t\t(type, attributeKey, defaultValue) => getInitialValue(this, type, attributeKey, defaultValue) as T,\n\t\t\t(name, config) => {\n\t\t\t\tthis.reactiveHost.defineReactiveAccessor(name, config);\n\t\t\t},\n\t\t\t(name, initial) => this.createReactiveMember(name, initial),\n\t\t);\n\t}\n\n\tpublic getSlotProjectionScriptTag(): string | undefined {\n\t\treturn this.getOrCreateRenderRuntime().getSlotProjectionScriptTag();\n\t}\n\n\tpublic getAuthoredHydrationScriptMarkup(): string | undefined {\n\t\treturn this.getOrCreateRenderRuntime().getAuthoredHydrationScriptMarkup();\n\t}\n\n\tpublic resolveTrackedRenderOutput(): { containsSlots: boolean; value: JsxRenderable } {\n\t\treturn this.getOrCreateRenderRuntime().resolveTrackedRenderOutput();\n\t}\n\n\tprivate getOrCreateRenderRuntime() {\n\t\tif (this.renderRuntime) {\n\t\t\treturn this.renderRuntime;\n\t\t}\n\n\t\tthis.renderRuntime = new RenderRuntime(this as RenderRuntimeHost);\n\t\treturn this.renderRuntime;\n\t}\n\n\tprivate resolveRenderSurface(): RadiantRenderSurface {\n\t\tconst renderTarget = this.getRenderTarget();\n\t\tconst interactionTarget =\n\t\t\ttypeof ShadowRoot !== 'undefined' && renderTarget instanceof ShadowRoot ? renderTarget : this;\n\n\t\treturn {\n\t\t\tinteractionTarget,\n\t\t\tqueryRoot: interactionTarget,\n\t\t\trenderTarget,\n\t\t};\n\t}\n}\n\nfunction requireRadiantElementSsrRuntime() {\n\tconst runtime = getRadiantElementSsrRuntime();\n\n\tif (!runtime) {\n\t\tthrow new Error('Radiant SSR runtime unavailable. Import `@ecopages/radiant/server/render-component` first.');\n\t}\n\n\treturn runtime;\n}\n\nfunction shouldHydrateOnConnect(component: HTMLElement): boolean {\n\treturn isRadiantHydratorInstalled() && hasHydrationMarkers(component);\n}\n"
|
|
25
|
+
"import type { JsxRenderable } from '@ecopages/jsx';\nimport type { RadiantElementSsrHostSource, RadiantElementViewRenderSource } from './radiant-element-ssr-host-source';\n\n/** Core-local render options so client code never imports `@ecopages/jsx/server`. */\nexport type RadiantElementRenderToStringOptions = {\n\thydrate?: boolean;\n\tmode?: 'plain' | 'hydrate';\n};\n\nexport type RadiantElementRenderBridge = {\n\trenderHost?: () => JsxRenderable;\n\trenderHostToString?: (options?: RadiantElementRenderToStringOptions) => string;\n};\n\n/** Branded Element Host accepted by the server SSR pipeline. */\nexport type RadiantElementServerRenderSsrCapable = RadiantElementSsrHostSource;\n\nexport type { RadiantElementViewRenderSource };\n\nexport type RadiantElementSsrRuntime = {\n\tgetHostAttributes(component: RadiantElementServerRenderSsrCapable): Record<string, string>;\n\trenderHost(component: RadiantElementServerRenderSsrCapable): JsxRenderable;\n\trenderHostToString(\n\t\tcomponent: RadiantElementServerRenderSsrCapable,\n\t\toptions?: RadiantElementRenderToStringOptions,\n\t): string;\n\tresolveRenderBridge(component: object): RadiantElementRenderBridge | undefined;\n\trenderView(component: RadiantElementServerRenderSsrCapable, options?: RadiantElementRenderToStringOptions): string;\n};\n\n/** JSX SSR scope adapters installed by the server layer into client-safe core. */\nexport type RadiantElementSsrScopeAdapters = {\n\tget<T>(key: symbol): T | undefined;\n\twithValue<TValue, T>(key: symbol, value: TValue, render: () => T): T;\n};\n\nconst RADIANT_ELEMENT_SSR_RUNTIME_SYMBOL = Symbol.for('@ecopages/radiant.element-ssr-runtime');\n\nlet scopeAdapters: RadiantElementSsrScopeAdapters | undefined;\n\n/**\n * Called once from Radiant server SSR modules; client bundles never install this.\n * Module-local: SSR bundlers must resolve one `@ecopages/radiant` instance (do not inline duplicates).\n */\nexport function installRadiantElementSsrScopeAdapters(adapters: RadiantElementSsrScopeAdapters): void {\n\tscopeAdapters = adapters;\n}\n\nexport function getRadiantElementSsrRuntime(): RadiantElementSsrRuntime | undefined {\n\treturn scopeAdapters?.get<RadiantElementSsrRuntime>(RADIANT_ELEMENT_SSR_RUNTIME_SYMBOL);\n}\n\nexport function withRadiantElementSsrRuntime<T>(runtime: RadiantElementSsrRuntime, render: () => T): T {\n\tif (!scopeAdapters) {\n\t\tthrow new Error(\n\t\t\t'Radiant element SSR runtime requires the server scope adapters. Import a Radiant server SSR entrypoint before rendering.',\n\t\t);\n\t}\n\n\tif (scopeAdapters.get<RadiantElementSsrRuntime>(RADIANT_ELEMENT_SSR_RUNTIME_SYMBOL) === runtime) {\n\t\treturn render();\n\t}\n\n\treturn scopeAdapters.withValue(RADIANT_ELEMENT_SSR_RUNTIME_SYMBOL, runtime, render);\n}\n",
|
|
26
|
+
"/** Cross-realm Element Host brand for SSR extraction (survives duplicate package copies). */\nexport const RADIANT_ELEMENT_BRAND = Symbol.for('@ecopages/radiant.RadiantElement');\n",
|
|
27
|
+
"import type { EventEmitter } from '../tools';\nimport { hasHydrationMarkers, jsx, type JsxRenderable, type SubscribableJsxValueWithAccess } from '@ecopages/jsx';\nimport { HostSsrRegistry } from './host-ssr-registry';\nimport { getReactivePropDefinitions, type ReactivePropDefinition } from './reactive-prop-metadata';\nimport { ensureLegacyHostReady } from '../decorators/legacy/host-readiness';\nimport type { SsrSerializableContextProvider } from '../context/context-provider';\nimport type { UnknownContext } from '../context/types';\nimport {\n\ttype ReactiveBindingOption,\n\ttype ReactiveBindingValue,\n\ttype ReactiveBindings,\n\ttype ReactiveFieldOptions,\n\ttype ReactiveProperty,\n\ttype ReactivePropertyOptions,\n} from './reactive-prop-core';\nimport { EventSubscriptionRegistry } from './event-subscription-registry';\nimport { ReactivePropertyState } from './reactive-property-state';\nimport { RenderRuntime, type RenderRuntimeHost } from './render-runtime';\nimport { RenderScheduler } from './render-scheduler';\nimport type { SsrSerializableHydrationBinding } from './ssr-hydration-binding';\nimport { ReactiveHost } from './reactive-host';\nimport type { ReactiveState } from './reactivity-contract';\nimport { runSsrPreparationCallbacks } from './ssr-preparation';\nimport { isRadiantHydratorInstalled } from './radiant-hydrator-state';\nimport { getRadiantElementSsrRuntime, type RadiantElementRenderToStringOptions } from './radiant-element-ssr-registry';\nimport { RADIANT_ELEMENT_BRAND } from './radiant-element-brand';\nimport { getInitialValue } from '../utils/attribute-utils';\n\nexport type {\n\tReactiveBindingOption,\n\tReactiveBindingValue,\n\tReactiveBindings,\n\tReactiveFieldOptions,\n\tReactiveProperty,\n\tReactivePropertyOptions,\n} from './reactive-prop-core';\n\nconst RadiantElementBase = resolveRadiantElementBase();\n\ntype RadiantRenderTarget = HTMLElement | ShadowRoot;\ntype RadiantInteractionTarget = HTMLElement | ShadowRoot;\ntype RadiantRenderSurface = {\n\trenderTarget: RadiantRenderTarget;\n\tinteractionTarget: RadiantInteractionTarget;\n\tqueryRoot: ParentNode;\n};\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 SSR imports.\",\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 StringPropertyKey<Value> = Extract<keyof Value, string>;\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: () => void): () => 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): SubscribableJsxValueWithAccess<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): SubscribableJsxValueWithAccess<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 * Creates a new reactive member state and registers it under `propertyName`.\n\t */\n\tcreateReactiveMember<T>(propertyName: string, initialValue: T): ReactiveState<T>;\n\n\t/**\n\t * Registers an externally-owned reactive member state (used by `signal()`).\n\t */\n\tregisterReactiveMember<T>(propertyName: string, signal: ReactiveState<T>): void;\n\n\t/**\n\t * Returns the member state registered under `propertyName`, if any.\n\t */\n\tgetReactiveMember<T = unknown>(propertyName: string): ReactiveState<T> | undefined;\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\tdeclare readonly [RADIANT_ELEMENT_BRAND]: true;\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\treadonly renderRootMode: 'light' | 'shadow' = 'light';\n\tpublic readonly bindings: ReactiveBindings<Bindings>;\n\tpublic readonly $: ReactiveBindings<Bindings>;\n\tprivate readonly reactiveHost: ReactiveHost<this, Bindings>;\n\tprivate readonly reactivePropertyState: ReactivePropertyState;\n\tprivate readonly eventSubscriptionRegistry: EventSubscriptionRegistry;\n\n\t/**\n\t * Registered context providers and hydration bindings for SSR.\n\t */\n\tprivate readonly hostSsrRegistry = new HostSsrRegistry();\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 isFirstConnectPending = false;\n\tprivate readonly renderScheduler: RenderScheduler;\n\tprivate renderRuntime?: RenderRuntime;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.reactivePropertyState = new ReactivePropertyState(this);\n\t\tthis.eventSubscriptionRegistry = new EventSubscriptionRegistry(\n\t\t\t() => this.resolveRenderSurface().interactionTarget,\n\t\t\t() => this,\n\t\t);\n\t\tthis.renderScheduler = new RenderScheduler({\n\t\t\tcanFlush: () =>\n\t\t\t\tthis.isConnected &&\n\t\t\t\t!this.renderScheduler.rendering &&\n\t\t\t\t!(this.isFirstConnectPending && shouldHydrateOnConnect(this)),\n\t\t\tcommit: () => {\n\t\t\t\tconst { renderTarget } = this.resolveRenderSurface();\n\t\t\t\tthis.getOrCreateRenderRuntime().render(renderTarget as HTMLElement);\n\t\t\t},\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\tensureLegacyHostReady(this, 'construct');\n\t}\n\n\tpublic get slotProjectionVersion(): number {\n\t\treturn this.renderRuntime?.slotProjectionVersion ?? 0;\n\t}\n\n\tconnectedCallback() {\n\t\tensureLegacyHostReady(this, 'connect');\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\tconst renderRuntime = this.getOrCreateRenderRuntime();\n\t\t\trenderRuntime.observeSlotProjection();\n\n\t\t\tif (shouldHydrateOnConnect(this)) {\n\t\t\t\tthis.renderScheduler.clearPending();\n\t\t\t\tthis.hydrate();\n\n\t\t\t\tif (this.renderScheduler.pending) {\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.renderRuntime?.dispose();\n\t\tthis.renderRuntime = undefined;\n\t\tthis.eventSubscriptionRegistry.removeAll();\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\tattributeChangedCallback(name: string, oldValue: string | null, newValue: string | null) {\n\t\tif (oldValue === newValue || !this.elementReady) return;\n\n\t\tthis.reactivePropertyState.applyAttributeChange(name, oldValue, newValue);\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 getReactivePropDefinitions(): ReactivePropDefinition[] {\n\t\treturn getReactivePropDefinitions(this);\n\t}\n\n\tpublic getPropertyValue(name: string): unknown {\n\t\treturn Reflect.get(this, name);\n\t}\n\n\tpublic renderViewToString(options: RadiantElementRenderToStringOptions = {}): string {\n\t\tif (!this.shouldRunRenderLifecycle()) {\n\t\t\treturn this.innerHTML;\n\t\t}\n\n\t\tensureLegacyHostReady(this, 'ssr');\n\t\tthis.prepareForSsr();\n\n\t\treturn requireRadiantElementSsrRuntime().renderView(this, options);\n\t}\n\n\tpublic hydrate(): void {\n\t\tif (!this.shouldRunRenderLifecycle() || !this.isConnected || this.renderScheduler.rendering) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { renderTarget } = this.resolveRenderSurface();\n\t\tconst renderRuntime = this.getOrCreateRenderRuntime();\n\n\t\tthis.renderScheduler.runExclusive(() => {\n\t\t\trenderRuntime.hydrate(renderTarget as HTMLElement);\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.renderScheduler.requestUpdate();\n\t}\n\n\tpublic update(): void {\n\t\tif (!this.shouldRunRenderLifecycle()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.renderScheduler.markPending();\n\t\tthis.renderScheduler.flush();\n\t}\n\n\tpublic registerReactiveProperty(config: ReactiveProperty) {\n\t\tthis.reactivePropertyState.register(config);\n\t}\n\n\tpublic getReactiveProperties(): ReactiveProperty[] {\n\t\treturn this.reactivePropertyState.getAll();\n\t}\n\n\tpublic registerContextProvider(name: string, provider: SsrSerializableContextProvider): void {\n\t\tthis.hostSsrRegistry.registerContextProvider(name, provider);\n\t}\n\n\tpublic registerHydrationBinding(name: string, binding: SsrSerializableHydrationBinding): void {\n\t\tthis.hostSsrRegistry.registerHydrationBinding(name, binding);\n\t}\n\n\tpublic getContextProviders(): SsrSerializableContextProvider[] {\n\t\treturn this.hostSsrRegistry.getContextProviders();\n\t}\n\n\tpublic getHydrationBindings(): SsrSerializableHydrationBinding[] {\n\t\treturn this.hostSsrRegistry.getHydrationBindings();\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\tpublic registerUpdateCallback(property: string, update: () => void): () => 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): SubscribableJsxValueWithAccess<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): SubscribableJsxValueWithAccess<ReactiveBindingValue<Bindings, Property>> {\n\t\treturn this.reactiveHost.getReactiveBinding(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 createReactiveMember<T>(propertyName: string, initialValue: T): ReactiveState<T> {\n\t\treturn this.reactiveHost.createReactiveMember(propertyName, initialValue);\n\t}\n\n\tpublic registerReactiveMember<T>(propertyName: string, signal: ReactiveState<T>): void {\n\t\tthis.reactiveHost.registerReactiveMember(propertyName, signal);\n\t}\n\n\tpublic getReactiveMember<T = unknown>(propertyName: string): ReactiveState<T> | undefined {\n\t\treturn this.reactiveHost.getReactiveMember(propertyName);\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 hasEventSubscription(subscriptionId: string): boolean {\n\t\treturn this.eventSubscriptionRegistry.hasEventSubscription(subscriptionId);\n\t}\n\n\tpublic subscribeEvent(eventConfig: RadiantElementEventListener): () => void {\n\t\treturn this.eventSubscriptionRegistry.subscribe(eventConfig);\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.resolveRenderSurface();\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\treturn this.getOrCreateRenderRuntime().getSlotElements<T>(name);\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\tthis.reactivePropertyState.create(\n\t\t\tpropertyName,\n\t\t\toptions,\n\t\t\t(type, attributeKey, defaultValue) => getInitialValue(this, type, attributeKey, defaultValue) as T,\n\t\t\t(name, config) => {\n\t\t\t\tthis.reactiveHost.defineReactiveAccessor(name, config);\n\t\t\t},\n\t\t\t(name, initial) => this.createReactiveMember(name, initial),\n\t\t);\n\t}\n\n\tpublic getSlotProjectionScriptTag(): string | undefined {\n\t\treturn this.getOrCreateRenderRuntime().getSlotProjectionScriptTag();\n\t}\n\n\tpublic getAuthoredHydrationScriptMarkup(): string | undefined {\n\t\treturn this.getOrCreateRenderRuntime().getAuthoredHydrationScriptMarkup();\n\t}\n\n\tpublic resolveTrackedRenderOutput(): { containsSlots: boolean; value: JsxRenderable } {\n\t\treturn this.getOrCreateRenderRuntime().resolveTrackedRenderOutput();\n\t}\n\n\tprivate getOrCreateRenderRuntime() {\n\t\tif (this.renderRuntime) {\n\t\t\treturn this.renderRuntime;\n\t\t}\n\n\t\tthis.renderRuntime = new RenderRuntime(this as RenderRuntimeHost);\n\t\treturn this.renderRuntime;\n\t}\n\n\tprivate resolveRenderSurface(): RadiantRenderSurface {\n\t\tconst renderTarget = this.getRenderTarget();\n\t\tconst interactionTarget =\n\t\t\ttypeof ShadowRoot !== 'undefined' && renderTarget instanceof ShadowRoot ? renderTarget : this;\n\n\t\treturn {\n\t\t\tinteractionTarget,\n\t\t\tqueryRoot: interactionTarget,\n\t\t\trenderTarget,\n\t\t};\n\t}\n}\n\nObject.defineProperty(RadiantElement.prototype, RADIANT_ELEMENT_BRAND, {\n\tvalue: true,\n\tconfigurable: true,\n});\n\nfunction requireRadiantElementSsrRuntime() {\n\tconst runtime = getRadiantElementSsrRuntime();\n\n\tif (!runtime) {\n\t\tthrow new Error('Radiant SSR runtime unavailable. Import `@ecopages/radiant/server/render-component` first.');\n\t}\n\n\treturn runtime;\n}\n\nfunction shouldHydrateOnConnect(component: HTMLElement): boolean {\n\treturn isRadiantHydratorInstalled() && hasHydrationMarkers(component);\n}\n"
|
|
27
28
|
],
|
|
28
|
-
"mappings": "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",
|
|
29
|
-
"debugId": "
|
|
29
|
+
"mappings": "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",
|
|
30
|
+
"debugId": "4AE84901E8248DCD64756E2164756E21",
|
|
30
31
|
"names": []
|
|
31
32
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var
|
|
1
|
+
var a=Symbol.for("@ecopages/radiant.hydrator-installed");function b(){globalThis[a]=!0}function c(){delete globalThis[a]}function d(){return globalThis[a]===!0}export{c as uninstallRadiantHydratorState,d as isRadiantHydratorInstalled,b as installRadiantHydratorState};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=D1580C08011CAA0D64756E2164756E21
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"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"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "AAAA,IAAM,EAAoC,OAAO,IAAI,sCAAsC,EAWpF,SAAS,CAA2B,EAAS,CAClD,WAAmC,GAAqC,GASnE,SAAS,CAA6B,EAAS,CACrD,OAAQ,WAAmC,GAOrC,SAAS,CAA0B,EAAY,CACrD,OAAQ,WAAmC,KAAuC",
|
|
8
|
+
"debugId": "D1580C08011CAA0D64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import{createSubscribableJsxValue as B}from"@ecopages/jsx";function D(q){return B({getValue:()=>q.get(),subscribe:(z)=>q.subscribe(z)})}export{D as adaptReactiveStateToJsxBinding};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=36875BEE0EF79DA464756E2164756E21
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import {\n\tcreateSubscribableJsxValue,\n\ttype JsxBindingSourceValue,\n\ttype SubscribableJsxValueWithAccess,\n} from '@ecopages/jsx';\nimport type { ReactiveState } from './reactivity-contract';\n\n/**\n * Adapts a host member {@link ReactiveState} into the jsx binding shape.\n *\n * Kept in a dedicated module so `reactive-host.ts` stays free of direct\n * `@ecopages/jsx` imports while bindings still expose `getValue`, `subscribe`,\n * and `map` for derived child updates.\n */\nexport function adaptReactiveStateToJsxBinding<Value extends JsxBindingSourceValue>(\n\tstate: ReactiveState<Value>,\n): SubscribableJsxValueWithAccess<Value> {\n\treturn createSubscribableJsxValue({\n\t\tgetValue: () => state.get(),\n\t\tsubscribe: (notify) => state.subscribe(notify),\n\t});\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "AAAA,qCACC,sBAaM,SAAS,CAAmE,CAClF,EACwC,CACxC,OAAO,EAA2B,CACjC,SAAU,IAAM,EAAM,IAAI,EAC1B,UAAW,CAAC,IAAW,EAAM,UAAU,CAAM,CAC9C,CAAC",
|
|
8
|
+
"debugId": "36875BEE0EF79DA464756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
package/core/reactive-host.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import{Computed as U,state as W,subtle as Y,trackDependency as Z}from"@ecopages/signals";function _(q){return q}function H(q){return q}var L={trackDependency(q){Z(_(q))},createComputed(q){return new U(q)},createWatcher(q){let z=new Y.Watcher(q);return{watch(E){z.watch(H(E))},unwatch(E){z.unwatch(H(E))}}},createState(q){return W(q)}};var M=L;function O(){return M}function X(q){M=q}import{createSubscribableJsxValue as $}from"@ecopages/jsx";function Q(q){return $({getValue:()=>q.get(),subscribe:(z)=>q.subscribe(z)})}class A{host;access;shouldAutoBind;bindings;$;reactiveMembers=new Map;jsxBindings=new Map;updateCallbacks=new Map;onConnectedCallbacks=[];onDisconnectedCallback=[];constructor(q,z,E){this.host=q;this.access=z;this.shouldAutoBind=E;let F=this.createReactiveBindingNamespace();this.bindings=F,this.$=F}connectHost(){for(let q of this.onConnectedCallbacks)q()}disconnectHost(){for(let q of this.onDisconnectedCallback)q()}registerCleanupCallback(q){this.onDisconnectedCallback.push(q)}registerConnectedCallback(q){this.onConnectedCallbacks.push(q)}notifyUpdate(q,z,E){let F=this.updateCallbacks.get(q);if(!F)return;for(let G of[...F.keys()])G()}getReactiveMember(q){return this.reactiveMembers.get(q)}createReactiveMember(q,z){let E=O().createState(z);return this.registerMember(q,E),E}registerReactiveMember(q,z){this.registerMember(q,z)}registerMember(q,z){this.reactiveMembers.set(q,z),this.jsxBindings.delete(q);let E=this.updateCallbacks.get(q);if(E)for(let F of E.keys())this.subscribeCallback(q,F)}subscribeCallback(q,z){let E=this.updateCallbacks.get(q),F=this.reactiveMembers.get(q);if(!E||!F||E.get(z))return;let G=F.subscribe(()=>z());E.set(z,G)}getReactiveBinding(q){let z=q,E=this.jsxBindings.get(z);if(E)return E;let F=this.reactiveMembers.get(z);if(!F)throw Error(`No reactive binding registered for "${String(q)}".`);let G=Q(F);return this.jsxBindings.set(z,G),G}registerUpdateCallback(q,z){let E=this.updateCallbacks.get(q);if(!E)E=new Map,this.updateCallbacks.set(q,E);return E.set(z,void 0),this.subscribeCallback(q,z),()=>{let F=this.updateCallbacks.get(q);if(F?.get(z)?.(),F?.delete(z),F&&F.size===0)this.updateCallbacks.delete(q)}}defineReactiveBinding(q,z=!0){let E=typeof z==="string"?z:z?`$${q}`:void 0,F=this.access.getBindingTarget?.(this.host)??this.host;if(!E||this.access.hasProperty(this.host,E))return;this.access.defineProperty(F,E,{get:()=>this.getReactiveBinding(q),enumerable:!1,configurable:!0})}defineReactiveAccessor(q,z){let E=z.bind??this.shouldAutoBind();this.defineReactiveBinding(q,E),this.access.defineProperty(this.host,q,{get:()=>z.signal.get(),set:(F)=>{z.signal.set(F),z.onSet?.(F)},enumerable:!0,configurable:!0})}createReactiveField(q,z,E={}){let F=this.reactiveMembers.get(q),G=F??this.createReactiveMember(q,z);if(F&&z!==void 0)G.set(z);if(this.defineReactiveAccessor(q,{bind:E.bind,signal:G}),!E.suppressInitialNotify)this.notifyUpdate(q,void 0,G.get())}createReactiveBindingNamespace(){return new Proxy(Object.create(null),{get:(q,z)=>{if(typeof z!=="string")return;return this.getReactiveBinding(z)}})}}export{A as ReactiveHost};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=B4A466A5E097E28D64756E2164756E21
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"import {\n\tcreateSubscribableJsxValue,\n\ttype JsxBindingSourceValue,\n\ttype SubscribableJsxValueWithAccess,\n} from '@ecopages/jsx';\nimport type { ReactiveState } from './reactivity-contract';\n\n/**\n * Adapts a host member {@link ReactiveState} into the jsx binding shape.\n *\n * Kept in a dedicated module so `reactive-host.ts` stays free of direct\n * `@ecopages/jsx` imports while bindings still expose `getValue`, `subscribe`,\n * and `map` for derived child updates.\n */\nexport function adaptReactiveStateToJsxBinding<Value extends JsxBindingSourceValue>(\n\tstate: ReactiveState<Value>,\n): SubscribableJsxValueWithAccess<Value> {\n\treturn createSubscribableJsxValue({\n\t\tgetValue: () => state.get(),\n\t\tsubscribe: (notify) => state.subscribe(notify),\n\t});\n}\n",
|
|
8
8
|
"import type { JsxBindingSourceValue, SubscribableJsxValueWithAccess } from '@ecopages/jsx';\nimport { adaptReactiveStateToJsxBinding } from './reactive-binding-adapter';\nimport { getReactiveRuntime } from './reactivity-runtime';\nimport type { ReactiveState } from './reactivity-contract';\nimport type {\n\tReactiveAccessorDefinition,\n\tReactiveBindingOption,\n\tReactiveBindingValue,\n\tReactiveBindings,\n\tReactiveFieldOptions,\n} from './reactive-prop-core';\n\ntype StringPropertyKey<Value> = Extract<keyof Value, string>;\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, and context reactions without\n * 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): SubscribableJsxValueWithAccess<ReactiveBindingValue<Bindings, Property>>;\n\tgetReactiveBinding<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValueWithAccess<ReactiveBindingValue<Bindings, Property>>;\n\tgetReactiveMember<T = unknown>(propertyName: string): ReactiveState<T> | undefined;\n\tcreateReactiveField<T>(propertyName: string, initialValue: T, options?: ReactiveFieldOptions): void;\n\tcreateReactiveMember<T>(propertyName: string, initialValue: T): ReactiveState<T>;\n\tregisterReactiveMember<T>(propertyName: string, signal: ReactiveState<T>): 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\tregisterUpdateCallback(property: string, update: () => void): () => void;\n}\n\n/**\n * Shared reactivity engine used by both `RadiantElement` and\n * `RadiantController`.\n *\n * Every reactive host member owns a single signals-backed `ReactiveState`\n * (a `State` for fields/props/attributes, or a user `signal()` for the signal\n * decorator). The jsx binding, `onUpdated` callbacks, and `ReactiveComputed`\n * tracking all read that one state directly, so there is no parallel\n * notification bus or dependency shim.\n *\n * Host-specific concerns such as attribute reflection, render lifecycles, and\n * custom-element APIs stay in the outer host classes.\n */\nexport class ReactiveHost<Host extends object, Bindings extends object = {}> {\n\tpublic readonly bindings: ReactiveBindings<Bindings>;\n\tpublic readonly $: ReactiveBindings<Bindings>;\n\n\tprivate reactiveMembers = new Map<string, ReactiveState<unknown>>();\n\tprivate jsxBindings = new Map<string, SubscribableJsxValueWithAccess<JsxBindingSourceValue>>();\n\t/** `onUpdated` callbacks keyed by property; values are signal unsubscribe disposers when subscribed. */\n\tprivate updateCallbacks = new Map<string, Map<() => void, (() => void) | undefined>>();\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 * Registers a callback that should run on host disconnect.\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 host connects.\n\t */\n\tpublic registerConnectedCallback(callback: () => void): void {\n\t\tthis.onConnectedCallbacks.push(callback);\n\t}\n\n\t/**\n\t * Fires the `onUpdated` callbacks registered for a member.\n\t *\n\t * This is the only remaining use of the update-callback bus: an initial\n\t * emit for members that want one (currently `@prop`). Change notifications\n\t * flow through the member `State`'s own subscription, not through here.\n\t */\n\tpublic notifyUpdate(changedProperty: string, _oldValue: unknown, _value: unknown): void {\n\t\tconst callbacks = this.updateCallbacks.get(changedProperty);\n\n\t\tif (!callbacks) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const update of [...callbacks.keys()]) {\n\t\t\tupdate();\n\t\t}\n\t}\n\n\t/**\n\t * Returns the member state registered under `propertyName`, if any.\n\t */\n\tpublic getReactiveMember<T = unknown>(propertyName: string): ReactiveState<T> | undefined {\n\t\treturn this.reactiveMembers.get(propertyName) as ReactiveState<T> | undefined;\n\t}\n\n\t/**\n\t * Creates a new reactive member state and registers it under `propertyName`.\n\t */\n\tpublic createReactiveMember<T>(propertyName: string, initialValue: T): ReactiveState<T> {\n\t\tconst signal = getReactiveRuntime().createState(initialValue) as ReactiveState<T>;\n\t\tthis.registerMember(propertyName, signal as ReactiveState<unknown>);\n\t\treturn signal;\n\t}\n\n\t/**\n\t * Registers an externally-owned reactive member state (used by the\n\t * `signal()` decorator, whose state is a user-provided signals `Signal`).\n\t */\n\tpublic registerReactiveMember<T>(propertyName: string, signal: ReactiveState<T>): void {\n\t\tthis.registerMember(propertyName, signal as ReactiveState<unknown>);\n\t}\n\n\t/**\n\t * Stores the member state and subscribes any `onUpdated` callbacks that were\n\t * registered before the member existed (decorator initializer ordering).\n\t */\n\tprivate registerMember(propertyName: string, signal: ReactiveState<unknown>): void {\n\t\tthis.reactiveMembers.set(propertyName, signal);\n\t\tthis.jsxBindings.delete(propertyName);\n\n\t\tconst callbacks = this.updateCallbacks.get(propertyName);\n\n\t\tif (callbacks) {\n\t\t\tfor (const update of callbacks.keys()) {\n\t\t\t\tthis.subscribeCallback(propertyName, update);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Subscribes an `onUpdated` callback to the member state if the member is\n\t * already registered and not yet subscribed.\n\t */\n\tprivate subscribeCallback(propertyName: string, update: () => void): void {\n\t\tconst callbacks = this.updateCallbacks.get(propertyName);\n\t\tconst signal = this.reactiveMembers.get(propertyName);\n\n\t\tif (!callbacks || !signal || callbacks.get(update)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst unsubscribe = signal.subscribe(() => update());\n\t\tcallbacks.set(update, unsubscribe);\n\t}\n\n\t/**\n\t * Returns the jsx binding for a named reactive member.\n\t *\n\t * The binding is adapted from the member `State` once and cached so derived\n\t * transforms (`map`, member access) share a stable source identity.\n\t */\n\tpublic getReactiveBinding<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValueWithAccess<ReactiveBindingValue<Bindings, Property>> {\n\t\tconst key = property as string;\n\t\tconst cached = this.jsxBindings.get(key);\n\n\t\tif (cached) {\n\t\t\treturn cached as SubscribableJsxValueWithAccess<ReactiveBindingValue<Bindings, Property>>;\n\t\t}\n\n\t\tconst signal = this.reactiveMembers.get(key);\n\n\t\tif (!signal) {\n\t\t\tthrow new Error(`No reactive binding registered for \"${String(property)}\".`);\n\t\t}\n\n\t\tconst binding = adaptReactiveStateToJsxBinding(\n\t\t\tsignal as ReactiveState<ReactiveBindingValue<Bindings, Property>>,\n\t\t);\n\n\t\tthis.jsxBindings.set(key, binding);\n\t\treturn binding;\n\t}\n\n\t/**\n\t * Registers an `onUpdated`-style callback for a named reactive member.\n\t *\n\t * Change notifications flow through the member `State`'s own subscription\n\t * (D1). The callback is also kept in the update-callback bus so an initial\n\t * emit (currently `@prop`) can still reach it once after definition.\n\t */\n\tpublic registerUpdateCallback(property: string, update: () => void): () => void {\n\t\tlet callbacks = this.updateCallbacks.get(property);\n\n\t\tif (!callbacks) {\n\t\t\tcallbacks = new Map();\n\t\t\tthis.updateCallbacks.set(property, callbacks);\n\t\t}\n\n\t\tcallbacks.set(update, undefined);\n\t\tthis.subscribeCallback(property, update);\n\n\t\treturn () => {\n\t\t\tconst perProperty = this.updateCallbacks.get(property);\n\t\t\tperProperty?.get(update)?.();\n\t\t\tperProperty?.delete(update);\n\n\t\t\tif (perProperty && perProperty.size === 0) {\n\t\t\t\tthis.updateCallbacks.delete(property);\n\t\t\t}\n\t\t};\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 * Defines a reactive getter/setter pair on the host backed by a member\n\t * `State`, and wires it into the jsx binding namespace.\n\t */\n\tpublic defineReactiveAccessor<T>(propertyName: string, options: ReactiveAccessorDefinition<T>): void {\n\t\tconst bind = options.bind ?? this.shouldAutoBind();\n\n\t\tthis.defineReactiveBinding(propertyName, bind);\n\n\t\tthis.access.defineProperty(this.host, propertyName, {\n\t\t\tget: () => options.signal.get(),\n\t\t\tset: (newValue: T) => {\n\t\t\t\toptions.signal.set(newValue);\n\t\t\t\toptions.onSet?.(newValue);\n\t\t\t},\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\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 existing = this.reactiveMembers.get(propertyName) as ReactiveState<T> | undefined;\n\t\tconst signal = existing ?? this.createReactiveMember(propertyName, initialValue);\n\n\t\tif (existing && initialValue !== undefined) {\n\t\t\tsignal.set(initialValue);\n\t\t}\n\n\t\tthis.defineReactiveAccessor(propertyName, { bind: options.bind, signal });\n\n\t\tif (!options.suppressInitialNotify) {\n\t\t\tthis.notifyUpdate(propertyName, undefined, signal.get());\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\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"
|
|
9
9
|
],
|
|
10
|
-
"mappings": "
|
|
11
|
-
"debugId": "
|
|
10
|
+
"mappings": "AAAA,mBACC,WACA,YACA,qBACA,0BAWD,SAAS,CAAuB,CAAC,EAAqD,CACrF,OAAO,EAGR,SAAS,CAAiB,CAAC,EAA6D,CACvF,OAAO,EAWD,IAAM,EAA0C,CACtD,eAAe,CAAC,EAAM,CACrB,EAAgB,EAAwB,CAAI,CAAC,GAE9C,cAAiB,CAAC,EAAoC,CACrD,OAAO,IAAI,EAAgB,CAAI,GAEhC,aAAa,CAAC,EAAqC,CAClD,IAAM,EAAU,IAAI,EAAO,QAAQ,CAAM,EAEzC,MAAO,CACN,KAAK,CAAC,EAAQ,CACb,EAAQ,MAAM,EAAkB,CAAM,CAAC,GAExC,OAAO,CAAC,EAAQ,CACf,EAAQ,QAAQ,EAAkB,CAAM,CAAC,EAE3C,GAED,WAAc,CAAC,EAA8B,CAC5C,OAAO,EAAa,CAAO,EAE7B,EClDA,IAAI,EAAyC,EAUtC,SAAS,CAAkB,EAAoB,CACrD,OAAO,EAUD,SAAS,CAAkB,CAAC,EAAgC,CAClE,EAAwB,ECzBzB,qCACC,sBAaM,SAAS,CAAmE,CAClF,EACwC,CACxC,OAAO,EAA2B,CACjC,SAAU,IAAM,EAAM,IAAI,EAC1B,UAAW,CAAC,IAAW,EAAM,UAAU,CAAM,CAC9C,CAAC,ECkCK,MAAM,CAAgE,CAY1D,KACA,OACA,eAbF,SACA,EAER,gBAAkB,IAAI,IACtB,YAAc,IAAI,IAElB,gBAAkB,IAAI,IACtB,qBAAuC,CAAC,EACxC,uBAAyC,CAAC,EAElD,WAAW,CACO,EACA,EACA,EAChB,CAHgB,YACA,cACA,sBAEjB,IAAM,EAAmB,KAAK,+BAA+B,EAC7D,KAAK,SAAW,EAChB,KAAK,EAAI,EAMH,WAAW,EAAS,CAC1B,QAAW,KAAY,KAAK,qBAC3B,EAAS,EAOJ,cAAc,EAAS,CAC7B,QAAW,KAAW,KAAK,uBAC1B,EAAQ,EAOH,uBAAuB,CAAC,EAA4B,CAC1D,KAAK,uBAAuB,KAAK,CAAQ,EAMnC,yBAAyB,CAAC,EAA4B,CAC5D,KAAK,qBAAqB,KAAK,CAAQ,EAUjC,YAAY,CAAC,EAAyB,EAAoB,EAAuB,CACvF,IAAM,EAAY,KAAK,gBAAgB,IAAI,CAAe,EAE1D,GAAI,CAAC,EACJ,OAGD,QAAW,IAAU,CAAC,GAAG,EAAU,KAAK,CAAC,EACxC,EAAO,EAOF,iBAA8B,CAAC,EAAoD,CACzF,OAAO,KAAK,gBAAgB,IAAI,CAAY,EAMtC,oBAAuB,CAAC,EAAsB,EAAmC,CACvF,IAAM,EAAS,EAAmB,EAAE,YAAY,CAAY,EAE5D,OADA,KAAK,eAAe,EAAc,CAAgC,EAC3D,EAOD,sBAAyB,CAAC,EAAsB,EAAgC,CACtF,KAAK,eAAe,EAAc,CAAgC,EAO3D,cAAc,CAAC,EAAsB,EAAsC,CAClF,KAAK,gBAAgB,IAAI,EAAc,CAAM,EAC7C,KAAK,YAAY,OAAO,CAAY,EAEpC,IAAM,EAAY,KAAK,gBAAgB,IAAI,CAAY,EAEvD,GAAI,EACH,QAAW,KAAU,EAAU,KAAK,EACnC,KAAK,kBAAkB,EAAc,CAAM,EAStC,iBAAiB,CAAC,EAAsB,EAA0B,CACzE,IAAM,EAAY,KAAK,gBAAgB,IAAI,CAAY,EACjD,EAAS,KAAK,gBAAgB,IAAI,CAAY,EAEpD,GAAI,CAAC,GAAa,CAAC,GAAU,EAAU,IAAI,CAAM,EAChD,OAGD,IAAM,EAAc,EAAO,UAAU,IAAM,EAAO,CAAC,EACnD,EAAU,IAAI,EAAQ,CAAW,EAS3B,kBAAgE,CACtE,EAC2E,CAC3E,IAAM,EAAM,EACN,EAAS,KAAK,YAAY,IAAI,CAAG,EAEvC,GAAI,EACH,OAAO,EAGR,IAAM,EAAS,KAAK,gBAAgB,IAAI,CAAG,EAE3C,GAAI,CAAC,EACJ,MAAU,MAAM,uCAAuC,OAAO,CAAQ,KAAK,EAG5E,IAAM,EAAU,EACf,CACD,EAGA,OADA,KAAK,YAAY,IAAI,EAAK,CAAO,EAC1B,EAUD,sBAAsB,CAAC,EAAkB,EAAgC,CAC/E,IAAI,EAAY,KAAK,gBAAgB,IAAI,CAAQ,EAEjD,GAAI,CAAC,EACJ,EAAY,IAAI,IAChB,KAAK,gBAAgB,IAAI,EAAU,CAAS,EAM7C,OAHA,EAAU,IAAI,EAAQ,MAAS,EAC/B,KAAK,kBAAkB,EAAU,CAAM,EAEhC,IAAM,CACZ,IAAM,EAAc,KAAK,gBAAgB,IAAI,CAAQ,EAIrD,GAHA,GAAa,IAAI,CAAM,IAAI,EAC3B,GAAa,OAAO,CAAM,EAEtB,GAAe,EAAY,OAAS,EACvC,KAAK,gBAAgB,OAAO,CAAQ,GAShC,qBAAqB,CAAC,EAAkB,EAA8B,GAAY,CACxF,IAAM,EAAsB,OAAO,IAAS,SAAW,EAAO,EAAO,IAAI,IAAa,OAChF,EAAgB,KAAK,OAAO,mBAAmB,KAAK,IAAI,GAAK,KAAK,KAExE,GAAI,CAAC,GAAuB,KAAK,OAAO,YAAY,KAAK,KAAM,CAAmB,EACjF,OAGD,KAAK,OAAO,eAAe,EAAe,EAAqB,CAC9D,IAAK,IAAM,KAAK,mBAAmB,CAAuC,EAC1E,WAAY,GACZ,aAAc,EACf,CAAC,EAOK,sBAAyB,CAAC,EAAsB,EAA8C,CACpG,IAAM,EAAO,EAAQ,MAAQ,KAAK,eAAe,EAEjD,KAAK,sBAAsB,EAAc,CAAI,EAE7C,KAAK,OAAO,eAAe,KAAK,KAAM,EAAc,CACnD,IAAK,IAAM,EAAQ,OAAO,IAAI,EAC9B,IAAK,CAAC,IAAgB,CACrB,EAAQ,OAAO,IAAI,CAAQ,EAC3B,EAAQ,QAAQ,CAAQ,GAEzB,WAAY,GACZ,aAAc,EACf,CAAC,EAOK,mBAAsB,CAAC,EAAsB,EAAiB,EAAgC,CAAC,EAAS,CAC9G,IAAM,EAAW,KAAK,gBAAgB,IAAI,CAAY,EAChD,EAAS,GAAY,KAAK,qBAAqB,EAAc,CAAY,EAE/E,GAAI,GAAY,IAAiB,OAChC,EAAO,IAAI,CAAY,EAKxB,GAFA,KAAK,uBAAuB,EAAc,CAAE,KAAM,EAAQ,KAAM,QAAO,CAAC,EAEpE,CAAC,EAAQ,sBACZ,KAAK,aAAa,EAAc,OAAW,EAAO,IAAI,CAAC,EAIjD,8BAA8B,EAA+B,CACpE,OAAO,IAAI,MAAM,OAAO,OAAO,IAAI,EAAiC,CACnE,IAAK,CAAC,EAAS,IAAa,CAC3B,GAAI,OAAO,IAAa,SACvB,OAGD,OAAO,KAAK,mBAAmB,CAAuC,EAExE,CAAC,EAEH",
|
|
11
|
+
"debugId": "B4A466A5E097E28D64756E2164756E21",
|
|
12
12
|
"names": []
|
|
13
13
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
function x(j,q){return j.bind(q)}export{x as bindReactiveValue};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=2F90FCE1D8A5048A64756E2164756E21
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import type { SubscribableJsxValueWithAccess } from '@ecopages/jsx';\nimport type { RadiantElement } from './radiant-element';\nimport type { ReactiveBindingValue } from './reactive-prop-core';\n\n/**\n * Creates a stable JSX child binding backed by a Radiant reactive property or field.\n *\n * The returned value resolves eagerly on the server and subscribes to the host's\n * update callbacks on the client so the mounted child range can patch directly\n * when the selected property changes.\n */\nexport function bindReactiveValue<\n\tBindings extends object,\n\tHost extends RadiantElement<Bindings>,\n\tProperty extends Extract<keyof Bindings, string>,\n>(host: Host, property: Property): SubscribableJsxValueWithAccess<ReactiveBindingValue<Bindings, Property>> {\n\treturn host.bind(property);\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "AAWO,SAAS,CAIf,CAAC,EAAY,EAA8F,CAC3G,OAAO,EAAK,KAAK,CAAQ",
|
|
8
|
+
"debugId": "2F90FCE1D8A5048A64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
function P(q){switch(q){case Array:return"array";case Boolean:return"boolean";case Number:return"number";case Object:return"object";case String:return"string"}}function Y(q){switch(typeof q){case"boolean":return"boolean";case"number":return"number";case"string":return"string"}if(Array.isArray(q))return"array";if(Object.prototype.toString.call(q)==="[object Object]")return"object"}function Z(q){switch(q){case Number:return 0;case String:return"";case Boolean:return!1;default:return null}}function _(q){try{return JSON.parse(q)}catch{throw TypeError("Invalid JSON string")}}var $={array(q){let x=_(q);if(!Array.isArray(x))throw TypeError(`Expected an array but got a value of type "${typeof x}"`);return x},boolean(q){return!(q==="0"||String(q).toLowerCase()==="false")},number(q){return Number(q.replace(/_/g,""))},object(q){let x=JSON.parse(q);if(x===null||typeof x!=="object"||Array.isArray(x))throw TypeError(`expected value of type "object" but instead got value "${q}" of type "${Y(x)}"`);return x},string(q){return q}},L={default:Q,array:M,object:M};function M(q){return JSON.stringify(q)}function Q(q){return`${q}`}function H(q,x){let z=P(x);if(!z)throw TypeError(`[radiant-element] Unknown type "${x}"`);return $[z](q)}function R(q,x){let z=P(x);if(!z)throw TypeError(`[radiant-element] Unknown type "${x}"`);return(L[z]??L.default??Q)(q)}function B(q){return typeof q==="boolean"}function D(q){return typeof q==="number"}function F(q){return typeof q==="string"}function U(q){return Array.isArray(q)}function W(q){return typeof q==="object"&&!Array.isArray(q)&&q!==null}function X(q,x){switch(q){case Boolean:return B(x);case Number:return D(x);case String:return F(x);case Array:return U(x);case Object:return W(x);default:return!1}}var k=(q,x,z,G)=>{if(x===Boolean){let I=q.getAttribute(z);if(I===null)return G;return I===""?!0:H(I,x)}let E=q.getAttribute(z);return E!==null?H(E,x):G??Z(x)};function m(q,x){if(x!==void 0&&!X(q,x))throw Error(`defaultValue does not match the expected type for ${q.name}`)}function O(q,x,z,G){return{type:z,name:q,initialValue:G,attribute:x,converter:{fromAttribute:(E)=>H(E,z),toAttribute:(E)=>R(E,z)}}}export{m as validateReactivePropertyDefault,O as createReactivePropertyMapping};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=CE3F20507977A68864756E2164756E21
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"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",
|
|
6
6
|
"import type { JsxBindingSourceValue, JsxRenderable, SubscribableJsxValueWithAccess } from '@ecopages/jsx';\nimport type { ReactiveState } from './reactivity-contract';\nimport {\n\ttype AttributeTypeConstant,\n\ttype ReadAttributeValueReturnType,\n\ttype WriteAttributeValueReturnType,\n\tisValueOfType,\n\treadAttributeValue,\n\twriteAttributeValue,\n} from '../utils/attribute-utils';\n\ntype StringPropertyKey<Value> = Extract<keyof Value, string>;\n\nexport interface ReactiveProperty<T = unknown> {\n\ttype: AttributeTypeConstant;\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\nexport type ReactivePropertyOptions<T> = {\n\ttype: AttributeTypeConstant;\n\treflect?: boolean;\n\tattribute?: string;\n\tdefaultValue?: T;\n\tbind?: boolean | string;\n};\n\nexport type ReactiveBindingOption = boolean | string;\n\nexport type ReactiveFieldOptions = {\n\tbind?: ReactiveBindingOption;\n\t/** When true, skip the initial notifyUpdate emitted while defining the field. */\n\tsuppressInitialNotify?: boolean;\n};\n\nexport type ReactiveBindingValue<\n\tHost extends object,\n\tProperty extends StringPropertyKey<Host>,\n> = Host[Property] extends JsxBindingSourceValue ? Host[Property] : JsxRenderable;\n\nexport type ReactiveBindings<Bindings extends object> = {\n\treadonly [Property in StringPropertyKey<Bindings>]: SubscribableJsxValueWithAccess<\n\t\tReactiveBindingValue<Bindings, Property>\n\t>;\n};\n\nexport type ReactiveAccessorDefinition<T> = {\n\tbind?: ReactiveBindingOption;\n\tsignal: ReactiveState<T>;\n\tonSet?: (value: T) => void;\n};\n\nexport function validateReactivePropertyDefault(type: AttributeTypeConstant, defaultValue: unknown): void {\n\tif (defaultValue !== undefined && !isValueOfType(type, defaultValue)) {\n\t\tthrow new Error(`defaultValue does not match the expected type for ${type.name}`);\n\t}\n}\n\nexport function createReactivePropertyMapping<T>(\n\tpropertyName: string,\n\tattributeKey: string,\n\ttype: AttributeTypeConstant,\n\tinitialValue: T | undefined,\n): ReactiveProperty<T> {\n\treturn {\n\t\ttype,\n\t\tname: propertyName,\n\t\tinitialValue,\n\t\tattribute: attributeKey,\n\t\tconverter: {\n\t\t\tfromAttribute: (value) => readAttributeValue(value, type),\n\t\t\ttoAttribute: (value) => writeAttributeValue(value, type),\n\t\t},\n\t};\n}\n"
|
|
7
7
|
],
|
|
8
|
-
"mappings": "
|
|
9
|
-
"debugId": "
|
|
8
|
+
"mappings": "AAYO,SAAS,CAA0B,CAAC,EAAkC,CAC5E,OAAQ,QACF,MACJ,MAAO,aACH,QACJ,MAAO,eACH,OACJ,MAAO,cACH,OACJ,MAAO,cACH,OACJ,MAAO,UAUH,SAAS,CAAyB,CAAC,EAAqC,CAC9E,OAAQ,OAAO,OACT,UACJ,MAAO,cACH,SACJ,MAAO,aACH,SACJ,MAAO,SAGT,GAAI,MAAM,QAAQ,CAAY,EAAG,MAAO,QACxC,GAAI,OAAO,UAAU,SAAS,KAAK,CAAY,IAAM,kBAAmB,MAAO,SASzE,SAAS,CAAmB,CAAC,EAAsC,CACzE,OAAQ,QACF,OACJ,MAAO,QACH,OACJ,MAAO,QACH,QACJ,MAAO,WAEP,OAAO,MASV,SAAS,CAAY,CAAC,EAAkB,CACvC,GAAI,CACH,OAAO,KAAK,MAAM,CAAK,EACtB,KAAM,CACP,MAAU,UAAU,qBAAqB,GAQ3C,IAAM,EAAsC,CAC3C,KAAK,CAAC,EAA0B,CAC/B,IAAM,EAAQ,EAAqB,CAAK,EACxC,GAAI,CAAC,MAAM,QAAQ,CAAK,EACvB,MAAU,UAAU,8CAA8C,OAAO,IAAQ,EAElF,OAAO,GAGR,OAAO,CAAC,EAAwB,CAC/B,MAAO,EAAE,IAAU,KAAO,OAAO,CAAK,EAAE,YAAY,IAAM,UAG3D,MAAM,CAAC,EAAuB,CAE7B,OADe,OAAO,EAAM,QAAQ,KAAM,EAAE,CAAC,GAI9C,MAAM,CAAC,EAAuB,CAC7B,IAAM,EAAS,KAAK,MAAM,CAAK,EAC/B,GAAI,IAAW,MAAQ,OAAO,IAAW,UAAY,MAAM,QAAQ,CAAM,EACxE,MAAU,UACT,0DAA0D,eAAmB,EAC5E,CACD,IACD,EAED,OAAO,GAGR,MAAM,CAAC,EAAuB,CAC7B,OAAO,EAET,EAQM,EAAsC,CAC3C,QAAS,EACT,MAAO,EACP,OAAQ,CACT,EAEA,SAAS,CAAS,CAAC,EAAgB,CAClC,OAAO,KAAK,UAAU,CAAK,EAG5B,SAAS,CAAW,CAAC,EAAgB,CACpC,MAAO,GAAG,IAUJ,SAAS,CAAkB,CAAC,EAAe,EAA6B,CAC9E,IAAM,EAAa,EAA2B,CAAI,EAClD,GAAI,CAAC,EAAY,MAAU,UAAU,mCAAmC,IAAO,EAC/E,OAAO,EAAQ,GAAa,CAAK,EAa3B,SAAS,CAAmB,CAAC,EAAgB,EAA6B,CAChF,IAAM,EAAa,EAA2B,CAAI,EAClD,GAAI,CAAC,EAAY,MAAU,UAAU,mCAAmC,IAAO,EAE/E,OADuB,EAAQ,IAAe,EAAQ,SAAW,GACnD,CAAK,EAQpB,SAAS,CAAS,CAAC,EAAkC,CACpD,OAAO,OAAO,IAAU,UAGzB,SAAS,CAAQ,CAAC,EAAiC,CAClD,OAAO,OAAO,IAAU,SAGzB,SAAS,CAAQ,CAAC,EAAiC,CAClD,OAAO,OAAO,IAAU,SAGzB,SAAS,CAAO,CAAC,EAAyC,CACzD,OAAO,MAAM,QAAQ,CAAK,EAG3B,SAAS,CAAQ,CAAC,EAAiC,CAClD,OAAO,OAAO,IAAU,UAAY,CAAC,MAAM,QAAQ,CAAK,GAAK,IAAU,KAMjE,SAAS,CAAa,CAAC,EAA6B,EAAgC,CAC1F,OAAQ,QACF,QACJ,OAAO,EAAU,CAAY,OACzB,OACJ,OAAO,EAAS,CAAY,OACxB,OACJ,OAAO,EAAS,CAAY,OACxB,MACJ,OAAO,EAAQ,CAAY,OACvB,OACJ,OAAO,EAAS,CAAY,UAE5B,MAAO,IAIH,IAAM,EAAkB,CAC9B,EACA,EACA,EACA,IACI,CACJ,GAAI,IAAS,QAAS,CACrB,IAAM,EAAiB,EAAO,aAAa,CAAY,EACvD,GAAI,IAAmB,KACtB,OAAO,EAGR,OAAO,IAAmB,GAAK,GAAO,EAAmB,EAAgB,CAAI,EAG9E,IAAM,EAAiB,EAAO,aAAa,CAAY,EACvD,OAAO,IAAmB,KACvB,EAAmB,EAAgB,CAAI,EACtC,GAAiB,EAAoB,CAAI,GC9KvC,SAAS,CAA+B,CAAC,EAA6B,EAA6B,CACzG,GAAI,IAAiB,QAAa,CAAC,EAAc,EAAM,CAAY,EAClE,MAAU,MAAM,qDAAqD,EAAK,MAAM,EAI3E,SAAS,CAAgC,CAC/C,EACA,EACA,EACA,EACsB,CACtB,MAAO,CACN,OACA,KAAM,EACN,eACA,UAAW,EACX,UAAW,CACV,cAAe,CAAC,IAAU,EAAmB,EAAO,CAAI,EACxD,YAAa,CAAC,IAAU,EAAoB,EAAO,CAAI,CACxD,CACD",
|
|
9
|
+
"debugId": "CE3F20507977A68864756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var
|
|
1
|
+
var e=Symbol.for("@ecopages/radiant.reactivePropDefinitions");function s(t,i,r){let n=t.constructor,o=n[e]??[];if(o.some((c)=>c.name===i))return;o.push({name:i,options:r}),n[e]=o}function a(t){return(t.constructor[e]??[]).slice()}export{s as registerReactivePropDefinition,a as getReactivePropDefinitions};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=ECFFF80721B89BC164756E2164756E21
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import type { ReactivePropertyOptions } from './reactive-prop-core';\n\nconst REACTIVE_PROP_DEFINITIONS = Symbol.for('@ecopages/radiant.reactivePropDefinitions');\n\nexport type ReactivePropDefinition = {\n\tname: string;\n\toptions: ReactivePropertyOptions<unknown>;\n};\n\ntype RadiantConstructorWithReactiveProps = CustomElementConstructor & {\n\t[REACTIVE_PROP_DEFINITIONS]?: ReactivePropDefinition[];\n};\n\nexport function registerReactivePropDefinition(\n\ttarget: object,\n\tpropertyName: string,\n\toptions: ReactivePropertyOptions<unknown>,\n): void {\n\tconst constructor = target.constructor as RadiantConstructorWithReactiveProps;\n\tconst definitions = constructor[REACTIVE_PROP_DEFINITIONS] ?? [];\n\n\tif (definitions.some((definition) => definition.name === propertyName)) {\n\t\treturn;\n\t}\n\n\tdefinitions.push({ name: propertyName, options });\n\tconstructor[REACTIVE_PROP_DEFINITIONS] = definitions;\n}\n\nexport function getReactivePropDefinitions(target: object): ReactivePropDefinition[] {\n\treturn ((target.constructor as RadiantConstructorWithReactiveProps)[REACTIVE_PROP_DEFINITIONS] ?? []).slice();\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "AAEA,IAAM,EAA4B,OAAO,IAAI,2CAA2C,EAWjF,SAAS,CAA8B,CAC7C,EACA,EACA,EACO,CACP,IAAM,EAAc,EAAO,YACrB,EAAc,EAAY,IAA8B,CAAC,EAE/D,GAAI,EAAY,KAAK,CAAC,IAAe,EAAW,OAAS,CAAY,EACpE,OAGD,EAAY,KAAK,CAAE,KAAM,EAAc,SAAQ,CAAC,EAChD,EAAY,GAA6B,EAGnC,SAAS,CAA0B,CAAC,EAA0C,CACpF,OAAS,EAAO,YAAoD,IAA8B,CAAC,GAAG,MAAM",
|
|
8
|
+
"debugId": "ECFFF80721B89BC164756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
function d(n){switch(n){case Array:return"array";case Boolean:return"boolean";case Number:return"number";case Object:return"object";case String:return"string"}}function q(n){switch(typeof n){case"boolean":return"boolean";case"number":return"number";case"string":return"string"}if(Array.isArray(n))return"array";if(Object.prototype.toString.call(n)==="[object Object]")return"object"}function E(n){switch(n){case Number:return 0;case String:return"";case Boolean:return!1;default:return null}}function L(n){try{return JSON.parse(n)}catch{throw TypeError("Invalid JSON string")}}var O={array(n){let r=L(n);if(!Array.isArray(r))throw TypeError(`Expected an array but got a value of type "${typeof r}"`);return r},boolean(n){return!(n==="0"||String(n).toLowerCase()==="false")},number(n){return Number(n.replace(/_/g,""))},object(n){let r=JSON.parse(n);if(r===null||typeof r!=="object"||Array.isArray(r))throw TypeError(`expected value of type "object" but instead got value "${n}" of type "${q(r)}"`);return r},string(n){return n}},M={default:A,array:U,object:U};function U(n){return JSON.stringify(n)}function A(n){return`${n}`}function R(n,r){let i=d(r);if(!i)throw TypeError(`[radiant-element] Unknown type "${r}"`);return O[i](n)}function k(n,r){let i=d(r);if(!i)throw TypeError(`[radiant-element] Unknown type "${r}"`);return(M[i]??M.default??A)(n)}function w(n){return typeof n==="boolean"}function z(n){return typeof n==="number"}function C(n){return typeof n==="string"}function G(n){return Array.isArray(n)}function I(n){return typeof n==="object"&&!Array.isArray(n)&&n!==null}function x(n,r){switch(n){case Boolean:return w(r);case Number:return z(r);case String:return C(r);case Array:return G(r);case Object:return I(r);default:return!1}}var X=(n,r,i,o)=>{if(r===Boolean){let s=n.getAttribute(i);if(s===null)return o;return s===""?!0:R(s,r)}let t=n.getAttribute(i);return t!==null?R(t,r):o??E(r)};function H(n,r){if(r!==void 0&&!x(n,r))throw Error(`defaultValue does not match the expected type for ${n.name}`)}function b(n,r,i,o){return{type:i,name:n,initialValue:o,attribute:r,converter:{fromAttribute:(t)=>R(t,i),toAttribute:(t)=>k(t,i)}}}class Q{host;properties=new Map;preUpgradePropertyValues=new Map;constructor(n){this.host=n;for(let r of Object.getOwnPropertyNames(n))this.preUpgradePropertyValues.set(r,Reflect.get(n,r))}register(n){this.properties.set(n.name,n)}getAll(){return Array.from(this.properties.values())}applyAttributeChange(n,r,i){let o=this.properties.get(n);if(!o)return;let t=this.transformAttributeValue(i,o);Reflect.set(this.host,o.name,t)}create(n,r,i,o,t){let{type:s,attribute:D,reflect:e,defaultValue:T}=r,g=D??n,P=this.preUpgradePropertyValues.has(n),S=P?this.preUpgradePropertyValues.get(n):void 0;H(s,T);let c=P?S:i(s,g,T);if(this.host.hasAttribute(g)&&(!e||c==null||c===""))this.host.removeAttribute(g);if(P&&Object.prototype.hasOwnProperty.call(this.host,n))Reflect.deleteProperty(this.host,n);let p=b(n,g,s,c);this.register(p);let m=this.host.getReactiveMember(n),f=m??t(n,c);if(m&&c!==void 0)m.set(c);if(o(n,{bind:r.bind,signal:f,onSet:(h)=>this.reflectValue(g,e,p,h)}),c!==void 0)queueMicrotask(()=>{let h=f.get();if(h===void 0)return;this.reflectValue(g,e,p,h),this.host.notifyUpdate(n,void 0,h)})}transformAttributeValue(n,r){return n!==null?r.converter.fromAttribute(n):n}reflectValue(n,r,i,o){if(!r)return;if(o==null||o===""||o===!1){this.host.removeAttribute(n);return}let t=i.converter.toAttribute(o);this.host.setAttribute(n,t)}}export{Q as ReactivePropertyState};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=2C00346D1DB7540E64756E2164756E21
|