@ecopages/radiant 0.3.0-alpha.9 → 0.3.0-beta.1
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 +5 -5
- package/client/app-bootstrap.d.ts +19 -0
- package/client/app-bootstrap.js +3 -0
- package/client/app-bootstrap.js.map +10 -0
- package/client/hydrator.js +3 -0
- package/{dist/client → client}/hydrator.js.map +2 -2
- package/client/install-hydrator.js +3 -0
- package/{dist/client → client}/install-hydrator.js.map +2 -2
- package/context/context-consumer-bootstrap.js +3 -0
- package/{dist/context → context}/context-consumer-bootstrap.js.map +4 -4
- package/context/context-consumer-runtime.js +3 -0
- package/context/context-consumer-runtime.js.map +12 -0
- package/context/context-host.js +3 -0
- package/{dist/context → context}/context-host.js.map +2 -2
- package/context/context-provider.js +3 -0
- package/{dist/context → context}/context-provider.js.map +3 -3
- package/context/context-ssr-bridge.js +3 -0
- package/{dist/context → context}/context-ssr-bridge.js.map +2 -2
- package/context/create-context.js +3 -0
- package/{dist/context → context}/create-context.js.map +2 -2
- package/context/decorators/consume-context.js +3 -0
- package/context/decorators/consume-context.js.map +19 -0
- package/context/decorators/context-selection-delivery.js +3 -0
- package/{dist/context → context}/decorators/context-selection-delivery.js.map +2 -2
- package/context/decorators/context-selector.js +3 -0
- package/context/decorators/context-selector.js.map +22 -0
- package/context/decorators/legacy/consume-context.js +3 -0
- package/context/decorators/legacy/consume-context.js.map +16 -0
- package/context/decorators/legacy/context-selector-field.js +3 -0
- package/context/decorators/legacy/context-selector-field.js.map +17 -0
- package/context/decorators/legacy/context-selector.js +3 -0
- package/context/decorators/legacy/context-selector.js.map +17 -0
- package/context/decorators/legacy/provide-context.js +3 -0
- package/{dist/context → context}/decorators/legacy/provide-context.js.map +5 -5
- package/context/decorators/on-context-update.js +3 -0
- package/{dist/context → context}/decorators/on-context-update.js.map +6 -6
- package/context/decorators/provide-context.js +3 -0
- package/{dist/context → context}/decorators/provide-context.js.map +5 -5
- package/context/decorators/standard/consume-context.js +3 -0
- package/{dist/context → context}/decorators/standard/consume-context.js.map +4 -4
- package/context/decorators/standard/context-selector-field.js +3 -0
- package/{dist/context → context}/decorators/standard/context-selector-field.js.map +4 -4
- package/context/decorators/standard/context-selector.js +3 -0
- package/{dist/context → context}/decorators/standard/context-selector.js.map +4 -4
- package/context/decorators/standard/provide-context.js +3 -0
- package/{dist/context → context}/decorators/standard/provide-context.js.map +3 -3
- package/context/decorators/standard-legacy-dispatch.d.ts +6 -0
- package/context/decorators/standard-legacy-dispatch.js +3 -0
- package/context/decorators/standard-legacy-dispatch.js.map +10 -0
- package/context/events.js +3 -0
- package/context/events.js.map +10 -0
- package/context/hydration-script.js +3 -0
- package/{dist/context → context}/hydration-script.js.map +2 -2
- package/context/index.js +3 -0
- package/{dist/context → context}/index.js.map +13 -12
- package/controller-registry.js +3 -0
- package/{dist/controller-registry.js.map → controller-registry.js.map} +2 -2
- package/core/controller-metadata.js +3 -0
- package/{dist/core → core}/controller-metadata.js.map +2 -2
- package/core/custom-element-metadata.js +3 -0
- package/{dist/core → core}/custom-element-metadata.js.map +2 -2
- package/core/event-subscription-registry.d.ts +16 -0
- package/core/event-subscription-registry.js +3 -0
- package/core/event-subscription-registry.js.map +10 -0
- package/core/host-ssr-registry.d.ts +13 -0
- package/core/host-ssr-registry.js +3 -0
- package/core/host-ssr-registry.js.map +10 -0
- package/core/hydration-capable-host.d.ts +8 -0
- package/core/hydration-capable-host.js +3 -0
- package/core/hydration-capable-host.js.map +10 -0
- package/core/hydration-codec.js +3 -0
- package/{dist/core → core}/hydration-codec.js.map +2 -2
- package/{dist/core → core}/radiant-controller.d.ts +42 -20
- package/core/radiant-controller.js +3 -0
- package/core/radiant-controller.js.map +21 -0
- package/{dist/core/radiant-component-ssr.d.ts → core/radiant-element-ssr-host.d.ts} +16 -16
- package/core/radiant-element-ssr-host.js +3 -0
- package/core/radiant-element-ssr-host.js.map +10 -0
- package/core/radiant-element-ssr-registry.d.ts +20 -0
- package/core/radiant-element-ssr-registry.js +3 -0
- package/core/radiant-element-ssr-registry.js.map +10 -0
- package/{dist/core → core}/radiant-element.d.ts +44 -155
- package/core/radiant-element.js +3 -0
- package/core/radiant-element.js.map +31 -0
- package/core/radiant-hydrator-state.js +3 -0
- package/{dist/core → core}/radiant-hydrator-state.js.map +2 -2
- package/core/reactive-binding-adapter.d.ts +10 -0
- package/core/reactive-binding-adapter.js +3 -0
- package/core/reactive-binding-adapter.js.map +10 -0
- package/core/reactive-host.d.ts +138 -0
- package/core/reactive-host.js +3 -0
- package/core/reactive-host.js.map +13 -0
- package/{dist/core → core}/reactive-jsx-value.d.ts +4 -3
- package/core/reactive-jsx-value.js +3 -0
- package/core/reactive-jsx-value.js.map +10 -0
- package/core/reactive-prop-core.d.ts +39 -0
- package/core/reactive-prop-core.js +3 -0
- package/{dist/decorators/standard/reactive-prop.js.map → core/reactive-prop-core.js.map} +4 -5
- package/{dist/core → core}/reactive-prop-metadata.d.ts +1 -1
- package/core/reactive-prop-metadata.js +3 -0
- package/core/reactive-prop-metadata.js.map +10 -0
- package/core/reactive-property-state.d.ts +20 -0
- package/core/reactive-property-state.js +3 -0
- package/core/reactive-property-state.js.map +12 -0
- package/core/reactivity-adapter.d.ts +8 -0
- package/core/reactivity-adapter.js +3 -0
- package/core/reactivity-adapter.js.map +12 -0
- package/core/reactivity-contract.d.ts +53 -0
- package/core/reactivity-contract.js +2 -0
- package/core/reactivity-contract.js.map +9 -0
- package/core/reactivity-runtime.d.ts +18 -0
- package/core/reactivity-runtime.js +3 -0
- package/core/reactivity-runtime.js.map +11 -0
- package/core/reactivity-signals.d.ts +10 -0
- package/core/reactivity-signals.js +3 -0
- package/core/reactivity-signals.js.map +10 -0
- package/core/render-runtime.d.ts +28 -0
- package/core/render-runtime.js +3 -0
- package/core/render-runtime.js.map +16 -0
- package/core/render-scheduler.d.ts +22 -0
- package/core/render-scheduler.js +3 -0
- package/core/render-scheduler.js.map +10 -0
- package/core/slot-projection-runtime.js +3 -0
- package/core/slot-projection-runtime.js.map +12 -0
- package/core/ssr-preparation.js +3 -0
- package/{dist/core → core}/ssr-preparation.js.map +2 -2
- package/decorators/attr.js +3 -0
- package/decorators/attr.js.map +18 -0
- package/decorators/bound.js +3 -0
- package/{dist/decorators → decorators}/bound.js.map +2 -2
- package/decorators/bridge.js +3 -0
- package/{dist/decorators → decorators}/bridge.js.map +2 -2
- package/decorators/controller.js +3 -0
- package/{dist/decorators → decorators}/controller.js.map +2 -2
- package/decorators/custom-element.js +3 -0
- package/{dist/decorators → decorators}/custom-element.js.map +2 -2
- package/decorators/debounce.js +3 -0
- package/{dist/decorators → decorators}/debounce.js.map +2 -2
- package/decorators/event.js +3 -0
- package/{dist/decorators → decorators}/event.js.map +3 -3
- package/decorators/legacy/attr.js +3 -0
- package/decorators/legacy/attr.js.map +15 -0
- package/decorators/legacy/bound.js +3 -0
- package/{dist/decorators → decorators}/legacy/bound.js.map +2 -2
- package/decorators/legacy/custom-element.js +3 -0
- package/{dist/decorators → decorators}/legacy/custom-element.js.map +2 -2
- package/decorators/legacy/debounce.js +3 -0
- package/{dist/decorators → decorators}/legacy/debounce.js.map +2 -2
- package/decorators/legacy/event.js +3 -0
- package/decorators/legacy/event.js.map +13 -0
- package/decorators/legacy/host-readiness.d.ts +8 -0
- package/decorators/legacy/host-readiness.js +3 -0
- package/decorators/legacy/host-readiness.js.map +11 -0
- package/decorators/legacy/instance-initializers.d.ts +34 -0
- package/decorators/legacy/instance-initializers.js +3 -0
- package/decorators/legacy/instance-initializers.js.map +10 -0
- package/decorators/legacy/member-bootstrap.d.ts +10 -0
- package/decorators/legacy/member-bootstrap.js +3 -0
- package/decorators/legacy/member-bootstrap.js.map +10 -0
- package/decorators/legacy/on-event.js +3 -0
- package/decorators/legacy/on-event.js.map +13 -0
- package/{dist/decorators → decorators}/legacy/on-updated.d.ts +1 -1
- package/decorators/legacy/on-updated.js +3 -0
- package/decorators/legacy/on-updated.js.map +11 -0
- package/decorators/legacy/query-slot.js +3 -0
- package/decorators/legacy/query-slot.js.map +13 -0
- package/decorators/legacy/query.js +3 -0
- package/decorators/legacy/query.js.map +12 -0
- package/decorators/legacy/reactive-field.js +3 -0
- package/decorators/legacy/reactive-field.js.map +13 -0
- package/{dist/decorators → decorators}/legacy/reactive-prop.d.ts +1 -2
- package/decorators/legacy/reactive-prop.js +3 -0
- package/decorators/legacy/reactive-prop.js.map +15 -0
- package/{dist/decorators → decorators}/legacy/signal.d.ts +1 -1
- package/decorators/legacy/signal.js +3 -0
- package/decorators/legacy/signal.js.map +17 -0
- package/decorators/on-event.js +3 -0
- package/{dist/decorators → decorators}/on-event.js.map +4 -4
- package/decorators/on-updated.js +3 -0
- package/decorators/on-updated.js.map +14 -0
- package/{dist/decorators → decorators}/prop.d.ts +5 -6
- package/decorators/prop.js +3 -0
- package/decorators/prop.js.map +18 -0
- package/decorators/query-slot.js +3 -0
- package/decorators/query-slot.js.map +16 -0
- package/decorators/query.js +3 -0
- package/{dist/decorators → decorators}/query.js.map +3 -3
- package/decorators/shared/auto-bind.d.ts +7 -0
- package/decorators/shared/auto-bind.js +3 -0
- package/decorators/shared/auto-bind.js.map +10 -0
- package/{dist/decorators → decorators}/shared/reactive-attr.d.ts +1 -1
- package/decorators/shared/reactive-attr.js +3 -0
- package/decorators/shared/reactive-attr.js.map +13 -0
- package/decorators/signal.js +3 -0
- package/decorators/signal.js.map +19 -0
- package/decorators/standard/attr.js +3 -0
- package/decorators/standard/attr.js.map +14 -0
- package/decorators/standard/bound.js +3 -0
- package/{dist/decorators → decorators}/standard/bound.js.map +2 -2
- package/decorators/standard/custom-element.js +3 -0
- package/{dist/decorators → decorators}/standard/custom-element.js.map +2 -2
- package/decorators/standard/debounce.js +3 -0
- package/{dist/decorators → decorators}/standard/debounce.js.map +2 -2
- package/decorators/standard/event.js +3 -0
- package/{dist/decorators → decorators}/standard/event.js.map +2 -2
- package/decorators/standard/on-event.js +3 -0
- package/{dist/decorators → decorators}/standard/on-event.js.map +3 -3
- package/decorators/standard/on-updated.js +3 -0
- package/{dist/decorators → decorators}/standard/on-updated.js.map +2 -2
- package/{dist/decorators → decorators}/standard/query-slot.d.ts +0 -1
- package/decorators/standard/query-slot.js +3 -0
- package/decorators/standard/query-slot.js.map +11 -0
- package/decorators/standard/query.js +3 -0
- package/{dist/decorators → decorators}/standard/query.js.map +2 -2
- package/decorators/standard/reactive-field.js +3 -0
- package/decorators/standard/reactive-field.js.map +11 -0
- package/{dist/decorators → decorators}/standard/reactive-prop.d.ts +1 -1
- package/decorators/standard/reactive-prop.js +3 -0
- package/decorators/standard/reactive-prop.js.map +13 -0
- package/{dist/decorators → decorators}/standard/signal.d.ts +1 -1
- package/decorators/standard/signal.js +3 -0
- package/decorators/standard/signal.js.map +16 -0
- package/{dist/decorators → decorators}/state.d.ts +3 -2
- package/decorators/state.js +3 -0
- package/decorators/state.js.map +16 -0
- package/helpers/create-event-listener.js +3 -0
- package/{dist/helpers → helpers}/create-event-listener.js.map +3 -3
- package/helpers/create-event.js +3 -0
- package/{dist/helpers → helpers}/create-event.js.map +2 -2
- package/{dist/helpers → helpers}/create-query-slot.d.ts +0 -1
- package/helpers/create-query-slot.js +3 -0
- package/helpers/create-query-slot.js.map +10 -0
- package/helpers/create-query.js +3 -0
- package/{dist/helpers → helpers}/create-query.js.map +2 -2
- package/helpers/debounce.js +3 -0
- package/{dist/helpers → helpers}/debounce.js.map +2 -2
- package/helpers/index.js +3 -0
- package/{dist/helpers → helpers}/index.js.map +4 -4
- package/index.js +3 -0
- package/index.js.map +86 -0
- package/package.json +102 -125
- package/server/context-ssr.js +3 -0
- package/{dist/server → server}/context-ssr.js.map +2 -2
- package/server/host-attribute-serialization.d.ts +46 -0
- package/server/host-attribute-serialization.js +3 -0
- package/server/host-attribute-serialization.js.map +12 -0
- package/server/host-script-composition.d.ts +42 -0
- package/server/host-script-composition.js +3 -0
- package/server/host-script-composition.js.map +10 -0
- package/server/html-parser.js +3 -0
- package/{dist/server → server}/html-parser.js.map +2 -2
- package/server/install-light-dom-shim.js +3 -0
- package/server/install-light-dom-shim.js.map +17 -0
- package/server/internal-radiant-host.d.ts +2 -0
- package/server/internal-radiant-host.js +3 -0
- package/server/internal-radiant-host.js.map +9 -0
- package/server/light-dom-shim.d.ts +2 -0
- package/server/light-dom-shim.js +3 -0
- package/server/light-dom-shim.js.map +16 -0
- package/server/minimal-dom/document.d.ts +17 -0
- package/server/minimal-dom/document.js +3 -0
- package/server/minimal-dom/document.js.map +14 -0
- package/server/minimal-dom/html.d.ts +7 -0
- package/server/minimal-dom/html.js +3 -0
- package/server/minimal-dom/html.js.map +13 -0
- package/{dist/server/light-dom-shim.d.ts → server/minimal-dom/install.d.ts} +1 -4
- package/server/minimal-dom/install.js +3 -0
- package/server/minimal-dom/install.js.map +16 -0
- package/server/minimal-dom/nodes.d.ts +78 -0
- package/server/project-root.js +3 -0
- package/{dist/server → server}/project-root.js.map +2 -2
- package/server/radiant-element-ssr-bridge.d.ts +21 -0
- package/server/radiant-element-ssr-bridge.js +3 -0
- package/server/radiant-element-ssr-bridge.js.map +24 -0
- package/server/radiant-element-ssr-extractor.d.ts +2 -0
- package/server/radiant-element-ssr-extractor.js +3 -0
- package/server/radiant-element-ssr-extractor.js.map +12 -0
- package/server/radiant-element-ssr-service.d.ts +13 -0
- package/server/radiant-element-ssr-service.js +3 -0
- package/server/radiant-element-ssr-service.js.map +22 -0
- package/server/radiant-element-ssr.d.ts +1 -0
- package/server/radiant-element-ssr.js +3 -0
- package/server/radiant-element-ssr.js.map +24 -0
- package/{dist/server → server}/render-component.d.ts +3 -9
- package/server/render-component.js +3 -0
- package/server/render-component.js.map +32 -0
- package/server/render-controller.js +3 -0
- package/server/render-controller.js.map +35 -0
- package/server/render-fragment.d.ts +7 -0
- package/server/render-fragment.js +3 -0
- package/server/render-fragment.js.map +10 -0
- package/server/slot-projection-html.js +3 -0
- package/{dist/server → server}/slot-projection-html.js.map +5 -5
- package/signals/host-resource.js +3 -0
- package/{dist/signals → signals}/host-resource.js.map +2 -2
- package/{dist/signals → signals}/host-signal.d.ts +2 -1
- package/signals/host-signal.js +3 -0
- package/signals/host-signal.js.map +13 -0
- package/signals/hydration-script.js +3 -0
- package/{dist/signals → signals}/hydration-script.js.map +2 -2
- package/tools/escape-css-identifier.js +3 -0
- package/tools/escape-css-identifier.js.map +10 -0
- package/tools/escape-script-json.js +3 -0
- package/{dist/tools → tools}/escape-script-json.js.map +2 -2
- package/tools/event-emitter.js +3 -0
- package/{dist/tools → tools}/event-emitter.js.map +2 -2
- package/tools/index.js +3 -0
- package/{dist/tools → tools}/index.js.map +3 -3
- package/tools/render-jsx-template.js +3 -0
- package/{dist/tools → tools}/render-jsx-template.js.map +2 -2
- package/types.js +3 -0
- package/{dist/types.js.map → types.js.map} +2 -2
- package/utils/attribute-utils.js +3 -0
- package/{dist/utils → utils}/attribute-utils.js.map +2 -2
- package/utils/escape-html-attribute.d.ts +2 -0
- package/utils/escape-html-attribute.js +3 -0
- package/utils/escape-html-attribute.js.map +10 -0
- package/utils/index.js +3 -0
- package/{dist/utils → utils}/index.js.map +2 -2
- package/dist/LICENSE +0 -21
- package/dist/client/hydrator.js +0 -3
- package/dist/client/install-hydrator.js +0 -3
- package/dist/context/context-consumer-bootstrap.js +0 -3
- package/dist/context/context-consumer-runtime.js +0 -3
- package/dist/context/context-consumer-runtime.js.map +0 -12
- package/dist/context/context-host.js +0 -3
- package/dist/context/context-provider.js +0 -3
- package/dist/context/context-ssr-bridge.js +0 -3
- package/dist/context/create-context.js +0 -3
- package/dist/context/decorators/consume-context.js +0 -3
- package/dist/context/decorators/consume-context.js.map +0 -19
- package/dist/context/decorators/context-selection-delivery.js +0 -3
- package/dist/context/decorators/context-selector.js +0 -3
- package/dist/context/decorators/context-selector.js.map +0 -21
- package/dist/context/decorators/legacy/consume-context.js +0 -3
- package/dist/context/decorators/legacy/consume-context.js.map +0 -16
- package/dist/context/decorators/legacy/context-selector-field.js +0 -3
- package/dist/context/decorators/legacy/context-selector-field.js.map +0 -17
- package/dist/context/decorators/legacy/context-selector.js +0 -3
- package/dist/context/decorators/legacy/context-selector.js.map +0 -17
- package/dist/context/decorators/legacy/provide-context.js +0 -3
- package/dist/context/decorators/on-context-update.js +0 -3
- package/dist/context/decorators/provide-context.js +0 -3
- package/dist/context/decorators/standard/consume-context.js +0 -3
- package/dist/context/decorators/standard/context-selector-field.js +0 -3
- package/dist/context/decorators/standard/context-selector.js +0 -3
- package/dist/context/decorators/standard/provide-context.js +0 -3
- package/dist/context/events.js +0 -3
- package/dist/context/events.js.map +0 -10
- package/dist/context/hydration-script.js +0 -3
- package/dist/context/index.js +0 -3
- package/dist/controller-registry.js +0 -3
- package/dist/core/controller-metadata.js +0 -3
- package/dist/core/custom-element-metadata.js +0 -3
- package/dist/core/hydration-codec.js +0 -3
- package/dist/core/radiant-component-ssr-registry.d.ts +0 -54
- package/dist/core/radiant-component-ssr-registry.js +0 -3
- package/dist/core/radiant-component-ssr-registry.js.map +0 -10
- package/dist/core/radiant-component-ssr.js +0 -3
- package/dist/core/radiant-component-ssr.js.map +0 -14
- package/dist/core/radiant-controller.js +0 -3
- package/dist/core/radiant-controller.js.map +0 -13
- package/dist/core/radiant-element.js +0 -3
- package/dist/core/radiant-element.js.map +0 -19
- package/dist/core/radiant-hydrator-state.js +0 -3
- package/dist/core/reactive-host.d.ts +0 -137
- package/dist/core/reactive-host.js +0 -3
- package/dist/core/reactive-host.js.map +0 -10
- package/dist/core/reactive-jsx-value.js +0 -3
- package/dist/core/reactive-jsx-value.js.map +0 -10
- package/dist/core/reactive-prop-metadata.js +0 -3
- package/dist/core/reactive-prop-metadata.js.map +0 -10
- package/dist/core/slot-projection-runtime.js +0 -3
- package/dist/core/slot-projection-runtime.js.map +0 -12
- package/dist/core/ssr-preparation.js +0 -3
- package/dist/decorators/attr.js +0 -3
- package/dist/decorators/attr.js.map +0 -16
- package/dist/decorators/bound.js +0 -3
- package/dist/decorators/bridge.js +0 -3
- package/dist/decorators/controller.js +0 -3
- package/dist/decorators/custom-element.js +0 -3
- package/dist/decorators/debounce.js +0 -3
- package/dist/decorators/event.js +0 -3
- package/dist/decorators/legacy/attr.js +0 -3
- package/dist/decorators/legacy/attr.js.map +0 -13
- package/dist/decorators/legacy/bound.js +0 -3
- package/dist/decorators/legacy/custom-element.js +0 -3
- package/dist/decorators/legacy/debounce.js +0 -3
- package/dist/decorators/legacy/event.js +0 -3
- package/dist/decorators/legacy/event.js.map +0 -13
- package/dist/decorators/legacy/instance-initializers.d.ts +0 -16
- package/dist/decorators/legacy/instance-initializers.js +0 -3
- package/dist/decorators/legacy/instance-initializers.js.map +0 -10
- package/dist/decorators/legacy/on-event.js +0 -3
- package/dist/decorators/legacy/on-event.js.map +0 -13
- package/dist/decorators/legacy/on-updated.js +0 -3
- package/dist/decorators/legacy/on-updated.js.map +0 -11
- package/dist/decorators/legacy/query-slot.js +0 -3
- package/dist/decorators/legacy/query-slot.js.map +0 -13
- package/dist/decorators/legacy/query.js +0 -3
- package/dist/decorators/legacy/query.js.map +0 -12
- package/dist/decorators/legacy/reactive-field.js +0 -3
- package/dist/decorators/legacy/reactive-field.js.map +0 -11
- package/dist/decorators/legacy/reactive-prop.js +0 -3
- package/dist/decorators/legacy/reactive-prop.js.map +0 -13
- package/dist/decorators/legacy/signal.js +0 -3
- package/dist/decorators/legacy/signal.js.map +0 -15
- package/dist/decorators/on-event.js +0 -3
- package/dist/decorators/on-updated.js +0 -3
- package/dist/decorators/on-updated.js.map +0 -14
- package/dist/decorators/prop.js +0 -3
- package/dist/decorators/prop.js.map +0 -16
- package/dist/decorators/query-slot.js +0 -3
- package/dist/decorators/query-slot.js.map +0 -16
- package/dist/decorators/query.js +0 -3
- package/dist/decorators/shared/reactive-attr.js +0 -3
- package/dist/decorators/shared/reactive-attr.js.map +0 -11
- package/dist/decorators/signal.js +0 -3
- package/dist/decorators/signal.js.map +0 -17
- package/dist/decorators/standard/attr.js +0 -3
- package/dist/decorators/standard/attr.js.map +0 -12
- package/dist/decorators/standard/bound.js +0 -3
- package/dist/decorators/standard/custom-element.js +0 -3
- package/dist/decorators/standard/debounce.js +0 -3
- package/dist/decorators/standard/event.js +0 -3
- package/dist/decorators/standard/on-event.js +0 -3
- package/dist/decorators/standard/on-updated.js +0 -3
- package/dist/decorators/standard/query-slot.js +0 -3
- package/dist/decorators/standard/query-slot.js.map +0 -11
- package/dist/decorators/standard/query.js +0 -3
- package/dist/decorators/standard/reactive-field.js +0 -3
- package/dist/decorators/standard/reactive-field.js.map +0 -10
- package/dist/decorators/standard/reactive-prop.js +0 -3
- package/dist/decorators/standard/signal.js +0 -3
- package/dist/decorators/standard/signal.js.map +0 -14
- package/dist/decorators/state.js +0 -3
- package/dist/decorators/state.js.map +0 -14
- package/dist/helpers/create-event-listener.js +0 -3
- package/dist/helpers/create-event.js +0 -3
- package/dist/helpers/create-query-slot.js +0 -3
- package/dist/helpers/create-query-slot.js.map +0 -10
- package/dist/helpers/create-query.js +0 -3
- package/dist/helpers/debounce.js +0 -3
- package/dist/helpers/index.js +0 -3
- package/dist/index.js +0 -3
- package/dist/index.js.map +0 -72
- package/dist/server/context-ssr.js +0 -3
- package/dist/server/html-parser.js +0 -3
- package/dist/server/install-light-dom-shim.js +0 -3
- package/dist/server/install-light-dom-shim.js.map +0 -12
- package/dist/server/light-dom-shim.js +0 -3
- package/dist/server/light-dom-shim.js.map +0 -11
- package/dist/server/project-root.js +0 -3
- package/dist/server/radiant-component-ssr-runtime.d.ts +0 -9
- package/dist/server/radiant-component-ssr-runtime.js +0 -3
- package/dist/server/radiant-component-ssr-runtime.js.map +0 -17
- package/dist/server/render-component.js +0 -3
- package/dist/server/render-component.js.map +0 -20
- package/dist/server/render-controller.js +0 -3
- package/dist/server/render-controller.js.map +0 -23
- package/dist/server/slot-projection-html.js +0 -3
- package/dist/signals/host-resource.js +0 -3
- package/dist/signals/host-signal.js +0 -3
- package/dist/signals/host-signal.js.map +0 -13
- package/dist/signals/hydration-script.js +0 -3
- package/dist/tools/escape-css-identifier.js +0 -3
- package/dist/tools/escape-css-identifier.js.map +0 -10
- package/dist/tools/escape-script-json.js +0 -3
- package/dist/tools/event-emitter.js +0 -3
- package/dist/tools/index.js +0 -3
- package/dist/tools/render-jsx-template.js +0 -3
- package/dist/types.js +0 -3
- package/dist/utils/attribute-utils.js +0 -3
- package/dist/utils/index.js +0 -3
- package/size-budget.json +0 -25
- /package/{dist/client → client}/hydrator.d.ts +0 -0
- /package/{dist/client → client}/install-hydrator.d.ts +0 -0
- /package/{dist/context → context}/context-consumer-bootstrap.d.ts +0 -0
- /package/{dist/context → context}/context-consumer-runtime.d.ts +0 -0
- /package/{dist/context → context}/context-host.d.ts +0 -0
- /package/{dist/context → context}/context-provider.d.ts +0 -0
- /package/{dist/context → context}/context-ssr-bridge.d.ts +0 -0
- /package/{dist/context → context}/create-context.d.ts +0 -0
- /package/{dist/context → context}/decorators/consume-context.d.ts +0 -0
- /package/{dist/context → context}/decorators/context-selection-delivery.d.ts +0 -0
- /package/{dist/context → context}/decorators/context-selector.d.ts +0 -0
- /package/{dist/context → context}/decorators/legacy/consume-context.d.ts +0 -0
- /package/{dist/context → context}/decorators/legacy/context-selector-field.d.ts +0 -0
- /package/{dist/context → context}/decorators/legacy/context-selector.d.ts +0 -0
- /package/{dist/context → context}/decorators/legacy/provide-context.d.ts +0 -0
- /package/{dist/context → context}/decorators/on-context-update.d.ts +0 -0
- /package/{dist/context → context}/decorators/provide-context.d.ts +0 -0
- /package/{dist/context → context}/decorators/standard/consume-context.d.ts +0 -0
- /package/{dist/context → context}/decorators/standard/context-selector-field.d.ts +0 -0
- /package/{dist/context → context}/decorators/standard/context-selector.d.ts +0 -0
- /package/{dist/context → context}/decorators/standard/provide-context.d.ts +0 -0
- /package/{dist/context → context}/events.d.ts +0 -0
- /package/{dist/context → context}/hydration-script.d.ts +0 -0
- /package/{dist/context → context}/index.d.ts +0 -0
- /package/{dist/context → context}/types.d.ts +0 -0
- /package/{dist/context → context}/types.js +0 -0
- /package/{dist/context → context}/types.js.map +0 -0
- /package/{dist/controller-registry.d.ts → controller-registry.d.ts} +0 -0
- /package/{dist/core → core}/controller-metadata.d.ts +0 -0
- /package/{dist/core → core}/custom-element-metadata.d.ts +0 -0
- /package/{dist/core → core}/hydration-codec.d.ts +0 -0
- /package/{dist/core → core}/radiant-hydrator-state.d.ts +0 -0
- /package/{dist/core → core}/slot-projection-runtime.d.ts +0 -0
- /package/{dist/core → core}/ssr-hydration-binding.d.ts +0 -0
- /package/{dist/core → core}/ssr-hydration-binding.js +0 -0
- /package/{dist/core → core}/ssr-hydration-binding.js.map +0 -0
- /package/{dist/core → core}/ssr-preparation.d.ts +0 -0
- /package/{dist/decorators → decorators}/attr.d.ts +0 -0
- /package/{dist/decorators → decorators}/bound.d.ts +0 -0
- /package/{dist/decorators → decorators}/bridge.d.ts +0 -0
- /package/{dist/decorators → decorators}/controller.d.ts +0 -0
- /package/{dist/decorators → decorators}/custom-element.d.ts +0 -0
- /package/{dist/decorators → decorators}/debounce.d.ts +0 -0
- /package/{dist/decorators → decorators}/event.d.ts +0 -0
- /package/{dist/decorators → decorators}/legacy/attr.d.ts +0 -0
- /package/{dist/decorators → decorators}/legacy/bound.d.ts +0 -0
- /package/{dist/decorators → decorators}/legacy/custom-element.d.ts +0 -0
- /package/{dist/decorators → decorators}/legacy/debounce.d.ts +0 -0
- /package/{dist/decorators → decorators}/legacy/event.d.ts +0 -0
- /package/{dist/decorators → decorators}/legacy/on-event.d.ts +0 -0
- /package/{dist/decorators → decorators}/legacy/query-slot.d.ts +0 -0
- /package/{dist/decorators → decorators}/legacy/query.d.ts +0 -0
- /package/{dist/decorators → decorators}/legacy/reactive-field.d.ts +0 -0
- /package/{dist/decorators → decorators}/on-event.d.ts +0 -0
- /package/{dist/decorators → decorators}/on-updated.d.ts +0 -0
- /package/{dist/decorators → decorators}/query-slot.d.ts +0 -0
- /package/{dist/decorators → decorators}/query.d.ts +0 -0
- /package/{dist/decorators → decorators}/signal.d.ts +0 -0
- /package/{dist/decorators → decorators}/standard/attr.d.ts +0 -0
- /package/{dist/decorators → decorators}/standard/bound.d.ts +0 -0
- /package/{dist/decorators → decorators}/standard/custom-element.d.ts +0 -0
- /package/{dist/decorators → decorators}/standard/debounce.d.ts +0 -0
- /package/{dist/decorators → decorators}/standard/event.d.ts +0 -0
- /package/{dist/decorators → decorators}/standard/on-event.d.ts +0 -0
- /package/{dist/decorators → decorators}/standard/on-updated.d.ts +0 -0
- /package/{dist/decorators → decorators}/standard/query.d.ts +0 -0
- /package/{dist/decorators → decorators}/standard/reactive-field.d.ts +0 -0
- /package/{dist/helpers → helpers}/create-event-listener.d.ts +0 -0
- /package/{dist/helpers → helpers}/create-event.d.ts +0 -0
- /package/{dist/helpers → helpers}/create-query.d.ts +0 -0
- /package/{dist/helpers → helpers}/debounce.d.ts +0 -0
- /package/{dist/helpers → helpers}/index.d.ts +0 -0
- /package/{dist/index.d.ts → index.d.ts} +0 -0
- /package/{dist/server → server}/context-ssr.d.ts +0 -0
- /package/{dist/server → server}/html-parser.d.ts +0 -0
- /package/{dist/server → server}/install-light-dom-shim.d.ts +0 -0
- /package/{dist/server → server}/project-root.d.ts +0 -0
- /package/{dist/server → server}/render-controller.d.ts +0 -0
- /package/{dist/server → server}/slot-projection-html.d.ts +0 -0
- /package/{dist/signals → signals}/host-resource.d.ts +0 -0
- /package/{dist/signals → signals}/hydration-script.d.ts +0 -0
- /package/{dist/tools → tools}/escape-css-identifier.d.ts +0 -0
- /package/{dist/tools → tools}/escape-script-json.d.ts +0 -0
- /package/{dist/tools → tools}/event-emitter.d.ts +0 -0
- /package/{dist/tools → tools}/index.d.ts +0 -0
- /package/{dist/tools → tools}/render-jsx-template.d.ts +0 -0
- /package/{dist/types.d.ts → types.d.ts} +0 -0
- /package/{dist/utils → utils}/attribute-utils.d.ts +0 -0
- /package/{dist/utils → utils}/index.d.ts +0 -0
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/core/reactive-host.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import { createSubscribableJsxValue, type SubscribableJsxValue } from '@ecopages/jsx';\nimport { trackDependency, type DependencyNode, type SignalSubscriber } from '@ecopages/signals';\nimport type {\n\tReactiveBindingOption,\n\tReactiveBindingValue,\n\tReactiveBindings,\n\tReactiveFieldOptions,\n} from './radiant-element';\nimport type { SsrSerializableHydrationBinding } from './ssr-hydration-binding';\n\ntype StringPropertyKey<Value> = Extract<keyof Value, string>;\ntype ReactiveDependencyReader = () => unknown;\n\ntype ReactiveHostAccess<Host extends object> = {\n\tdefineProperty(target: object, property: string, descriptor: PropertyDescriptor): void;\n\tgetBindingTarget?(host: Host): object;\n\thasProperty(host: Host, property: string): boolean;\n\treadProperty(host: Host, property: string): unknown;\n};\n\ntype ReactiveField<T = unknown> = {\n\tname: string;\n\tvalue: T;\n\tinitialValue: T;\n};\n\ntype ReactiveAccessorOptions<T> = {\n\tbind?: ReactiveBindingOption;\n\tgetValue: () => T | undefined;\n\tsetValue: (value: T) => void;\n\tnotifyInitialValue?: T;\n};\n\n/**\n * Shared reactive-host contract consumed by decorators and host adapters.\n *\n * `RadiantElement` and `RadiantController` both implement this surface so the\n * decorator layer can define fields, bindings, context reactions, and tracked\n * reads without depending on a specific host class.\n */\nexport interface ReactiveHostLike<Bindings extends object = {}> {\n\treadonly bindings: ReactiveBindings<Bindings>;\n\treadonly $: ReactiveBindings<Bindings>;\n\tbind<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>>;\n\tgetReactiveBinding<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>>;\n\tcreateReactiveField<T>(propertyName: string, initialValue: T, options?: ReactiveFieldOptions): void;\n\tdefineReactiveBinding(property: string, bind?: ReactiveBindingOption): void;\n\tnotifyUpdate(changedProperty: string, oldValue: unknown, value: unknown): void;\n\tregisterCleanupCallback(callback: () => void): void;\n\tregisterConnectedCallback(callback: () => void): void;\n\tregisterHydrationBinding(name: string, binding: SsrSerializableHydrationBinding): void;\n\tregisterReactiveDependencyReader(property: string, read: () => unknown): void;\n\ttrackReactiveRead(property: string): void;\n}\n\n/**\n * Internal dependency node that bridges Radiant host members into the signals\n * tracking graph.\n */\nclass ReactiveHostDependency implements DependencyNode {\n\tprivate readonly subscribers = new Set<SignalSubscriber<unknown>>();\n\tprivate readonly watcherListeners = new Set<() => void>();\n\tprivate version = 0;\n\n\tconstructor(private readonly read: ReactiveDependencyReader) {}\n\n\tpublic get(): unknown {\n\t\ttrackDependency(this);\n\t\treturn this.read();\n\t}\n\n\tpublic subscribe(notify: SignalSubscriber<unknown>): () => void {\n\t\tthis.subscribers.add(notify);\n\n\t\treturn () => {\n\t\t\tthis.subscribers.delete(notify);\n\t\t};\n\t}\n\n\tpublic addWatcher(notify: () => void): () => void {\n\t\tthis.watcherListeners.add(notify);\n\n\t\treturn () => {\n\t\t\tthis.watcherListeners.delete(notify);\n\t\t};\n\t}\n\n\tpublic getVersion(): number {\n\t\treturn this.version;\n\t}\n\n\tpublic notify(nextValue: unknown): void {\n\t\tthis.version += 1;\n\t\tlet watcherError: unknown;\n\n\t\ttry {\n\t\t\tthis.notifyWatchers();\n\t\t} catch (error) {\n\t\t\twatcherError = error;\n\t\t}\n\n\t\tthis.publish(nextValue);\n\n\t\tif (watcherError) {\n\t\t\tthrow watcherError;\n\t\t}\n\t}\n\n\tprivate publish(nextValue: unknown): void {\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tsubscriber(nextValue);\n\t\t}\n\t}\n\n\tprivate notifyWatchers(): void {\n\t\tconst errors: unknown[] = [];\n\n\t\tfor (const listener of this.watcherListeners) {\n\t\t\ttry {\n\t\t\t\tlistener();\n\t\t\t} catch (error) {\n\t\t\t\terrors.push(error);\n\t\t\t}\n\t\t}\n\n\t\tif (errors.length === 1) {\n\t\t\tthrow errors[0];\n\t\t}\n\n\t\tif (errors.length > 1) {\n\t\t\tthrow new AggregateError(errors, 'Multiple reactive dependency notifications failed.');\n\t\t}\n\t}\n}\n\nfunction isSignalLikeBindingValue(value: unknown): value is { get(): unknown } {\n\treturn typeof value === 'object' && value !== null && typeof (value as { get?: unknown }).get === 'function';\n}\n\n/**\n * Shared reactivity engine used by both `RadiantElement` and\n * `RadiantController`.\n *\n * This class owns three pieces of shared behavior:\n *\n * - defining reactive accessors on the host object\n * - exposing cached JSX bindings such as `bindings.count` and `$count`\n * - publishing tracked updates into the signals graph and update callbacks\n *\n * Host-specific concerns such as attribute reflection, render lifecycles, and\n * custom-element APIs stay in the outer host classes.\n */\nexport class ReactiveHost<Host extends object, Bindings extends object = {}> implements ReactiveHostLike<Bindings> {\n\tpublic readonly bindings: ReactiveBindings<Bindings>;\n\tpublic readonly $: ReactiveBindings<Bindings>;\n\n\tprivate reactiveFields = new Map<string, ReactiveField>();\n\tprivate reactiveDependencies = new Map<string, ReactiveHostDependency>();\n\tprivate reactiveDependencyReaders = new Map<string, ReactiveDependencyReader>();\n\tprivate reactiveBindings = new Map<string, SubscribableJsxValue>();\n\tprivate updateCallbacks = new Map<string, Set<(...rest: any[]) => any>>();\n\tprivate onConnectedCallbacks: (() => void)[] = [];\n\tprivate onDisconnectedCallback: (() => void)[] = [];\n\n\tconstructor(\n\t\tprivate readonly host: Host,\n\t\tprivate readonly access: ReactiveHostAccess<Host>,\n\t\tprivate readonly shouldAutoBind: () => boolean,\n\t) {\n\t\tconst bindingNamespace = this.createReactiveBindingNamespace();\n\t\tthis.bindings = bindingNamespace;\n\t\tthis.$ = bindingNamespace;\n\t}\n\n\t/**\n\t * Runs all connection callbacks registered by decorators or host adapters.\n\t */\n\tpublic connectHost(): void {\n\t\tfor (const callback of this.onConnectedCallbacks) {\n\t\t\tcallback();\n\t\t}\n\t}\n\n\t/**\n\t * Runs all cleanup callbacks registered for host disconnect.\n\t */\n\tpublic disconnectHost(): void {\n\t\tfor (const cleanup of this.onDisconnectedCallback) {\n\t\t\tcleanup();\n\t\t}\n\t}\n\n\t/**\n\t * Publishes a reactive member change to tracked dependencies and explicit\n\t * update callbacks.\n\t */\n\tpublic notifyUpdate(changedProperty: string, oldValue: unknown, value: unknown): void {\n\t\tif (oldValue === value) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.reactiveDependencies.get(changedProperty)?.notify(value);\n\t\tconst updates = this.updateCallbacks.get(changedProperty);\n\n\t\tif (updates) {\n\t\t\tfor (const update of updates) {\n\t\t\t\tupdate();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Registers a callback that should run when the outer host disconnects.\n\t */\n\tpublic registerCleanupCallback(callback: () => void): void {\n\t\tthis.onDisconnectedCallback.push(callback);\n\t}\n\n\t/**\n\t * Registers a callback that should run whenever the outer host connects.\n\t */\n\tpublic registerConnectedCallback(callback: () => void): void {\n\t\tthis.onConnectedCallbacks.push(callback);\n\t}\n\n\t/**\n\t * Placeholder hydration hook so shared decorators can target both host types.\n\t *\n\t * `ReactiveHost` itself does not persist hydration bindings; concrete hosts\n\t * such as `RadiantElement` can override this behavior at the outer layer.\n\t */\n\tpublic registerHydrationBinding(_name: string, _binding: SsrSerializableHydrationBinding): void {}\n\n\t/**\n\t * Registers a raw reader for a reactive member so tracked dependency reads do\n\t * not need to go back through the public accessor.\n\t */\n\tpublic registerReactiveDependencyReader(property: string, read: ReactiveDependencyReader): void {\n\t\tthis.reactiveDependencyReaders.set(property, read);\n\t}\n\n\t/**\n\t * Registers a callback that runs whenever a named reactive member changes.\n\t *\n\t * Returns a disposer that removes the callback.\n\t */\n\tpublic registerUpdateCallback(property: string, update: (...rest: any[]) => any): () => void {\n\t\tif (!this.updateCallbacks.has(property)) {\n\t\t\tthis.updateCallbacks.set(property, new Set());\n\t\t}\n\n\t\tconst callbacks = this.updateCallbacks.get(property)!;\n\t\tcallbacks.add(update);\n\n\t\treturn () => {\n\t\t\tcallbacks.delete(update);\n\n\t\t\tif (callbacks.size === 0) {\n\t\t\t\tthis.updateCallbacks.delete(property);\n\t\t\t}\n\t\t};\n\t}\n\n\t/**\n\t * Returns the cached JSX binding object for a named reactive member.\n\t */\n\tpublic getReactiveBinding<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>> {\n\t\tconst cachedBinding = this.reactiveBindings.get(property);\n\n\t\tif (cachedBinding) {\n\t\t\treturn cachedBinding as SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>>;\n\t\t}\n\n\t\tconst binding = createSubscribableJsxValue<ReactiveBindingValue<Bindings, Property>>({\n\t\t\tgetValue: () => this.readReactiveBindingValue(property) as ReactiveBindingValue<Bindings, Property>,\n\t\t\tsubscribe: (notify) =>\n\t\t\t\tthis.registerUpdateCallback(property, () => {\n\t\t\t\t\tnotify(this.readReactiveBindingValue(property) as ReactiveBindingValue<Bindings, Property>);\n\t\t\t\t}),\n\t\t});\n\n\t\tthis.reactiveBindings.set(property, binding);\n\t\treturn binding;\n\t}\n\n\t/**\n\t * Short alias for `getReactiveBinding(...)`.\n\t */\n\tpublic bind<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>> {\n\t\treturn this.getReactiveBinding(property) as SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>>;\n\t}\n\n\t/**\n\t * Defines a stable binding companion property such as `$count` on the host or\n\t * its chosen binding target.\n\t */\n\tpublic defineReactiveBinding(property: string, bind: ReactiveBindingOption = true): void {\n\t\tconst bindingPropertyName = typeof bind === 'string' ? bind : bind ? `$${property}` : undefined;\n\t\tconst bindingTarget = this.access.getBindingTarget?.(this.host) ?? this.host;\n\n\t\tif (!bindingPropertyName || this.access.hasProperty(this.host, bindingPropertyName)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.access.defineProperty(bindingTarget, bindingPropertyName, {\n\t\t\tget: () => this.getReactiveBinding(property as StringPropertyKey<Bindings>),\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t});\n\t}\n\n\t/**\n\t * Records a dependency read for the named reactive member.\n\t */\n\tpublic trackReactiveRead(property: string): void {\n\t\ttrackDependency(this.getReactiveDependency(property));\n\t}\n\n\t/**\n\t * Defines a reactive getter/setter pair on the host and wires it into\n\t * bindings, dependency tracking, and update notifications.\n\t */\n\tpublic defineReactiveAccessor<T>(propertyName: string, options: ReactiveAccessorOptions<T>): void {\n\t\tconst bind = options.bind ?? this.shouldAutoBind();\n\n\t\tthis.defineReactiveBinding(propertyName, bind);\n\t\tthis.registerReactiveDependencyReader(propertyName, options.getValue);\n\n\t\tthis.access.defineProperty(this.host, propertyName, {\n\t\t\tget: () => {\n\t\t\t\tthis.trackReactiveRead(propertyName);\n\t\t\t\treturn options.getValue();\n\t\t\t},\n\t\t\tset: (newValue: T) => {\n\t\t\t\tconst oldValue = options.getValue();\n\n\t\t\t\tif (oldValue === newValue) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\toptions.setValue(newValue);\n\t\t\t\tthis.notifyUpdate(propertyName, oldValue, newValue);\n\t\t\t},\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t});\n\n\t\tif (options.notifyInitialValue !== undefined) {\n\t\t\tthis.notifyUpdate(propertyName, undefined, options.notifyInitialValue);\n\t\t}\n\t}\n\n\t/**\n\t * Defines a controller- or element-local reactive field with optional JSX\n\t * binding exposure.\n\t */\n\tpublic createReactiveField<T>(propertyName: string, initialValue: T, options: ReactiveFieldOptions = {}): void {\n\t\tconst reactiveField: ReactiveField<T> = {\n\t\t\tname: propertyName,\n\t\t\tvalue: initialValue,\n\t\t\tinitialValue,\n\t\t};\n\n\t\tthis.reactiveFields.set(propertyName, reactiveField);\n\n\t\tthis.defineReactiveAccessor(propertyName, {\n\t\t\tbind: options.bind,\n\t\t\tgetValue: () => this.reactiveFields.get(propertyName)?.value as T | undefined,\n\t\t\tsetValue: (newValue: T) => {\n\t\t\t\tthis.reactiveFields.set(propertyName, { ...reactiveField, value: newValue });\n\t\t\t},\n\t\t\tnotifyInitialValue: initialValue,\n\t\t});\n\t}\n\n\tprivate createReactiveBindingNamespace(): ReactiveBindings<Bindings> {\n\t\treturn new Proxy(Object.create(null) as ReactiveBindings<Bindings>, {\n\t\t\tget: (_target, property) => {\n\t\t\t\tif (typeof property !== 'string') {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\treturn this.getReactiveBinding(property as StringPropertyKey<Bindings>);\n\t\t\t},\n\t\t}) as ReactiveBindings<Bindings>;\n\t}\n\n\tprivate getReactiveDependency(property: string): ReactiveHostDependency {\n\t\tconst cachedDependency = this.reactiveDependencies.get(property);\n\n\t\tif (cachedDependency) {\n\t\t\treturn cachedDependency;\n\t\t}\n\n\t\tconst dependency = new ReactiveHostDependency(() => this.readReactiveDependencyValue(property));\n\t\tthis.reactiveDependencies.set(property, dependency);\n\t\treturn dependency;\n\t}\n\n\tprivate readReactiveDependencyValue(property: string): unknown {\n\t\tconst reader = this.reactiveDependencyReaders.get(property);\n\n\t\tif (reader) {\n\t\t\treturn reader();\n\t\t}\n\n\t\treturn this.readReactiveBindingValue(property as StringPropertyKey<Bindings>);\n\t}\n\n\tprivate readReactiveBindingValue<Property extends StringPropertyKey<Bindings>>(property: Property): unknown {\n\t\tconst value = this.access.readProperty(this.host, property);\n\n\t\tif (isSignalLikeBindingValue(value)) {\n\t\t\treturn value.get();\n\t\t}\n\n\t\treturn value;\n\t}\n}\n"
|
|
6
|
-
],
|
|
7
|
-
"mappings": "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",
|
|
8
|
-
"debugId": "07D0E89A5E90CB6C64756E2164756E21",
|
|
9
|
-
"names": []
|
|
10
|
-
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var z=((j)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(j,{get:(q,x)=>(typeof require<"u"?require:q)[x]}):j)(function(j){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+j+'" is not supported')});function B(j,q){return j.bind(q)}export{B as bindReactiveValue};
|
|
2
|
-
|
|
3
|
-
//# debugId=0E5C45AE990E173564756E2164756E21
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/core/reactive-jsx-value.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import type { SubscribableJsxValue } from '@ecopages/jsx';\nimport type { RadiantElement, ReactiveBindingValue } from './radiant-element';\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): SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>> {\n\treturn host.bind(property);\n}\n"
|
|
6
|
-
],
|
|
7
|
-
"mappings": "2PAUO,SAAS,CAIf,CAAC,EAAY,EAAoF,CACjG,OAAO,EAAK,KAAK,CAAQ",
|
|
8
|
-
"debugId": "0E5C45AE990E173564756E2164756E21",
|
|
9
|
-
"names": []
|
|
10
|
-
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var s=((t)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,o)=>(typeof require<"u"?require:e)[o]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var n=Symbol.for("@ecopages/radiant.reactivePropDefinitions");function p(t,e,o){let r=t.constructor,i=r[n]??[];if(i.some((c)=>c.name===e))return;i.push({name:e,options:o}),r[n]=i}function R(t){return(t.constructor[n]??[]).slice()}export{p as registerReactivePropDefinition,R as getReactivePropDefinitions};
|
|
2
|
-
|
|
3
|
-
//# debugId=FA34B346DE22D8EF64756E2164756E21
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/core/reactive-prop-metadata.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import type { ReactivePropertyOptions } from './radiant-element';\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
|
-
],
|
|
7
|
-
"mappings": "2PAEA,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": "FA34B346DE22D8EF64756E2164756E21",
|
|
9
|
-
"names": []
|
|
10
|
-
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var A=((q)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(q,{get:(w,G)=>(typeof require<"u"?require:w)[G]}):q)(function(q){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+q+'" is not supported')});function F(q){return q.replace(/&/g,"\\u0026").replace(/</g,"\\u003c").replace(/>/g,"\\u003e").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}var W="data-hydration",D="data-hydration-type",M="data-hydration-key";function h(q){let w=q.hydrationKey?` ${M}="${Y(q.hydrationKey)}"`:"";return`<script type="application/json" ${W} ${D}="${q.type}"${w}>${q.serializedValue}</script>`}function V(q){return F(q)}function v(q,w){let G=q.textContent;if(!G)return w;try{return JSON.parse(G)}catch{if(typeof console<"u")console.warn(`[@ecopages/radiant] Failed to parse hydration payload from <script ${W}>:`,G.slice(0,120));return w}}function T(q,w,G){let Q=q.children;if(!Q||Q.length===0){let Z=q.childNodes;if(!Z||Z.length===0)return null;for(let X=0;X<Z.length;X+=1){let $=Z[X];if($.nodeType!==1)continue;let L=$;if(B(L,w,G))return L}return null}for(let Z=0;Z<Q.length;Z+=1)if(B(Q[Z],w,G))return Q[Z];return null}function B(q,w,G){if(q.tagName!=="SCRIPT"||!q.hasAttribute(W)||q.getAttribute(D)!==w)return!1;if(G!==void 0)return q.getAttribute(M)===G;return!q.hasAttribute(M)}function Y(q){return q.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}import{createMarkupNodeLike as K,isKeyedJsxValue as P,isSlotJsxValue as H}from"@ecopages/jsx";var x="",E="data-radiant-slot-projection";function c(q){let w=new Map;for(let G of Array.from(q.childNodes)){if(_(G))continue;f(w,S(G),G)}return w}function b(q){let w;try{w=JSON.parse(q)}catch{if(typeof console<"u")console.warn("[@ecopages/radiant] Failed to parse slot projection payload:",q.slice(0,120));return new Map}let G=new Map;for(let[Q,Z]of Object.entries(w)){if(!Array.isArray(Z)||Z.length===0)continue;G.set(J(Q),Z.map((X)=>K(X)))}return G}function i(q){let w=Array.from(q.childNodes).filter((G)=>O(G)).map((G)=>z(G)??"").filter((G)=>G!=="");return w.length>0?w.join(""):void 0}function s(q){let w={};for(let[G,Q]of q.entries()){let Z=Q.map((X)=>z(X)).filter((X)=>X!==void 0&&X!=="");if(Z.length>0)w[G]=Z}return Object.keys(w).length>0?JSON.stringify(w):void 0}function u(q,w){let G=!1,Q=(X)=>{if(H(X))return G=!0,I(X,w,Q);if(P(X))return j(X,Q(X.value));if(g(X))return{_$rType$:1,rootLocalName:X.rootLocalName,strings:X.strings,values:X.values.map(($)=>Q($))};if(U(X))return Array.from(X,($)=>Q($));return X},Z=Q(q);return{containsSlots:G,value:Z}}function d(q){for(let w of Array.from(q.childNodes)){if(!k(w))continue;let G=w.textContent??void 0;return w.parentNode?.removeChild(w),G}return}function f(q,w,G){let Q=q.get(w);if(Q){Q.push(G);return}q.set(w,[G])}function j(q,w){return{...q,value:w}}function S(q){if(q instanceof Element)return J(q.getAttribute("slot"));return x}function U(q){return typeof q!=="string"&&typeof q==="object"&&q!==null&&Symbol.iterator in q}function k(q){return q instanceof HTMLScriptElement&&q.hasAttribute(E)}function O(q){return q instanceof HTMLScriptElement&&q.hasAttribute(W)}function _(q){return k(q)||O(q)}function g(q){return typeof q==="object"&&q!==null&&q._$rType$===1&&Array.isArray(q.strings)&&Array.isArray(q.values)}function J(q){return q??x}function z(q){if(q===void 0||q===null||q===!1||q===!0)return;if(typeof Node<"u"&&q instanceof Node){if(q.nodeType===Node.TEXT_NODE)return q.textContent??"";return q.outerHTML??q.textContent??void 0}if(P(q))return z(q.value);if(typeof q==="string"||typeof q==="number"||typeof q==="bigint")return String(q);if(typeof q==="object"&&q!==null&&"outerHTML"in q)return typeof q.outerHTML==="string"?q.outerHTML:q.textContent??void 0;if(U(q))return Array.from(q,(w)=>z(w)??"").join("");return}function I(q,w,G){let Q=w.get(J(q.name));if(Q&&Q.length>0)return Q.length===1?Q[0]:Q;if(q.fallback===void 0)return"";return G(q.fallback)}export{d as takeSlotProjectionScriptPayload,s as serializeProjectedSlotRenderables,u as resolveSlotProjection,b as deserializeProjectedSlotRenderables,i as collectAuthoredHydrationScriptMarkup,c as captureProjectedSlotRenderables,E as SLOT_PROJECTION_SCRIPT_ATTRIBUTE,x as DEFAULT_SLOT_NAME};
|
|
2
|
-
|
|
3
|
-
//# debugId=210A9ECD4BDC80BB64756E2164756E21
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/tools/escape-script-json.ts", "../src/core/hydration-codec.ts", "../src/core/slot-projection-runtime.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"/**\n * Escapes serialized JSON so it remains safe when embedded inside an HTML\n * `<script>` tag.\n */\nexport function escapeScriptJson(value: string): string {\n\treturn value\n\t\t.replace(/&/g, '\\\\u0026')\n\t\t.replace(/</g, '\\\\u003c')\n\t\t.replace(/>/g, '\\\\u003e')\n\t\t.replace(/\\u2028/g, '\\\\u2028')\n\t\t.replace(/\\u2029/g, '\\\\u2029');\n}\n",
|
|
6
|
-
"import { escapeScriptJson } from '../tools/escape-script-json';\n\n/** Attribute marker used to identify hydration payloads inside a host. */\nexport const HYDRATION_ATTRIBUTE = 'data-hydration';\n/** Discriminator that scopes a hydration payload to a specific feature. */\nexport const HYDRATION_TYPE_ATTRIBUTE = 'data-hydration-type';\n/** Optional key that scopes a hydration payload to a specific decorated field. */\nexport const HYDRATION_KEY_ATTRIBUTE = 'data-hydration-key';\n\nexport type HydrationPayloadType = 'signal' | 'context';\n\ntype HydrationScriptHost = {\n\tchildren?: ArrayLike<Element> | undefined;\n\tchildNodes?: ArrayLike<{ nodeType: number }> | undefined;\n};\n\n/** Creates a `<script type=\"application/json\">` tag for a hydration payload. */\nexport function createHydrationScriptTag(options: {\n\ttype: HydrationPayloadType;\n\thydrationKey?: string;\n\tserializedValue: string;\n}): string {\n\tconst keyAttribute = options.hydrationKey\n\t\t? ` ${HYDRATION_KEY_ATTRIBUTE}=\"${escapeHtmlAttribute(options.hydrationKey)}\"`\n\t\t: '';\n\n\treturn `<script type=\"application/json\" ${HYDRATION_ATTRIBUTE} ${HYDRATION_TYPE_ATTRIBUTE}=\"${options.type}\"${keyAttribute}>${options.serializedValue}</script>`;\n}\n\n/** Escapes serialized JSON so it remains safe inside an HTML script tag. */\nexport function escapeHydrationJson(value: string): string {\n\treturn escapeScriptJson(value);\n}\n\n/** Parses JSON from a hydration script element, returning the fallback on failure. */\nexport function parseHydrationPayload<T>(element: Element, fallback: T): T {\n\tconst textContent = element.textContent;\n\n\tif (!textContent) {\n\t\treturn fallback;\n\t}\n\n\ttry {\n\t\treturn JSON.parse(textContent) as T;\n\t} catch {\n\t\tif (typeof console !== 'undefined') {\n\t\t\tconsole.warn(\n\t\t\t\t`[@ecopages/radiant] Failed to parse hydration payload from <script ${HYDRATION_ATTRIBUTE}>:`,\n\t\t\t\ttextContent.slice(0, 120),\n\t\t\t);\n\t\t}\n\t\treturn fallback;\n\t}\n}\n\n/**\n * Finds a hydration script element inside a host by type and optional key.\n *\n * When a key is provided, looks for an exact `data-hydration-key` match.\n * Otherwise, returns the first unkeyed script matching the type.\n */\nexport function findHydrationScript(\n\thost: HydrationScriptHost,\n\ttype: HydrationPayloadType,\n\thydrationKey?: string,\n): Element | null {\n\tconst children = host.children;\n\n\tif (!children || children.length === 0) {\n\t\tconst childNodes = (host as Partial<{ childNodes: ArrayLike<{ nodeType: number }> }>).childNodes;\n\n\t\tif (!childNodes || childNodes.length === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\tfor (let i = 0; i < childNodes.length; i += 1) {\n\t\t\tconst node = childNodes[i]!;\n\n\t\t\tif (node.nodeType !== 1) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst element = node as unknown as Element;\n\n\t\t\tif (matchesHydrationScript(element, type, hydrationKey)) {\n\t\t\t\treturn element;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfor (let i = 0; i < children.length; i += 1) {\n\t\tif (matchesHydrationScript(children[i]!, type, hydrationKey)) {\n\t\t\treturn children[i]!;\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction matchesHydrationScript(element: Element, type: HydrationPayloadType, hydrationKey?: string): boolean {\n\tif (\n\t\telement.tagName !== 'SCRIPT' ||\n\t\t!element.hasAttribute(HYDRATION_ATTRIBUTE) ||\n\t\telement.getAttribute(HYDRATION_TYPE_ATTRIBUTE) !== type\n\t) {\n\t\treturn false;\n\t}\n\n\tif (hydrationKey !== undefined) {\n\t\treturn element.getAttribute(HYDRATION_KEY_ATTRIBUTE) === hydrationKey;\n\t}\n\n\treturn !element.hasAttribute(HYDRATION_KEY_ATTRIBUTE);\n}\n\nfunction escapeHtmlAttribute(value: string): string {\n\treturn value.replace(/&/g, '&').replace(/\"/g, '"').replace(/</g, '<').replace(/>/g, '>');\n}\n",
|
|
7
|
-
"import {\n\tcreateMarkupNodeLike,\n\tisKeyedJsxValue,\n\tisSlotJsxValue,\n\ttype JsxRenderable,\n\ttype KeyedJsxValue,\n\ttype SlotJsxValue,\n\ttype TemplateResultLike,\n} from '@ecopages/jsx';\n\nimport { HYDRATION_ATTRIBUTE } from './hydration-codec';\n\nexport const DEFAULT_SLOT_NAME = '';\nexport const SLOT_PROJECTION_SCRIPT_ATTRIBUTE = 'data-radiant-slot-projection';\n\ntype ResolvedSlotProjection = {\n\tcontainsSlots: boolean;\n\tvalue: JsxRenderable;\n};\n\nexport function captureProjectedSlotRenderables(host: HTMLElement): Map<string, JsxRenderable[]> {\n\tconst projectedContent = new Map<string, JsxRenderable[]>();\n\n\tfor (const node of Array.from(host.childNodes)) {\n\t\tif (isIgnoredProjectedNode(node)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tappendProjectedRenderable(projectedContent, getNodeSlotName(node), node);\n\t}\n\n\treturn projectedContent;\n}\n\nexport function deserializeProjectedSlotRenderables(payload: string): Map<string, JsxRenderable[]> {\n\tlet parsedPayload: Record<string, string[]>;\n\n\ttry {\n\t\tparsedPayload = JSON.parse(payload) as Record<string, string[]>;\n\t} catch {\n\t\tif (typeof console !== 'undefined') {\n\t\t\tconsole.warn('[@ecopages/radiant] Failed to parse slot projection payload:', payload.slice(0, 120));\n\t\t}\n\t\treturn new Map();\n\t}\n\n\tconst projectedContent = new Map<string, JsxRenderable[]>();\n\n\tfor (const [slotName, fragments] of Object.entries(parsedPayload)) {\n\t\tif (!Array.isArray(fragments) || fragments.length === 0) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tprojectedContent.set(\n\t\t\tnormalizeSlotName(slotName),\n\t\t\tfragments.map((fragment) => createMarkupNodeLike(fragment)),\n\t\t);\n\t}\n\n\treturn projectedContent;\n}\n\nexport function collectAuthoredHydrationScriptMarkup(host: HTMLElement): string | undefined {\n\tconst fragments = Array.from(host.childNodes)\n\t\t.filter((node): node is HTMLScriptElement => isHydrationScriptNode(node))\n\t\t.map((node) => renderableToHtmlFragment(node) ?? '')\n\t\t.filter((fragment) => fragment !== '');\n\n\treturn fragments.length > 0 ? fragments.join('') : undefined;\n}\n\nexport function serializeProjectedSlotRenderables(\n\tprojectedContent: ReadonlyMap<string, readonly JsxRenderable[]>,\n): string | undefined {\n\tconst payload: Record<string, string[]> = {};\n\n\tfor (const [slotName, renderables] of projectedContent.entries()) {\n\t\tconst fragments = renderables\n\t\t\t.map((renderable) => renderableToHtmlFragment(renderable))\n\t\t\t.filter((fragment): fragment is string => fragment !== undefined && fragment !== '');\n\n\t\tif (fragments.length > 0) {\n\t\t\tpayload[slotName] = fragments;\n\t\t}\n\t}\n\n\treturn Object.keys(payload).length > 0 ? JSON.stringify(payload) : undefined;\n}\n\nexport function resolveSlotProjection(\n\tvalue: JsxRenderable,\n\tprojectedContent: ReadonlyMap<string, readonly JsxRenderable[]>,\n): ResolvedSlotProjection {\n\tlet containsSlots = false;\n\n\tconst resolveValue = (currentValue: JsxRenderable): JsxRenderable => {\n\t\tif (isSlotJsxValue(currentValue)) {\n\t\t\tcontainsSlots = true;\n\t\t\treturn resolveSlotValue(currentValue, projectedContent, resolveValue);\n\t\t}\n\n\t\tif (isKeyedJsxValue(currentValue)) {\n\t\t\treturn cloneKeyedJsxValue(currentValue, resolveValue(currentValue.value));\n\t\t}\n\n\t\tif (isTemplateResultLike(currentValue)) {\n\t\t\treturn {\n\t\t\t\t_$rType$: 1,\n\t\t\t\trootLocalName: currentValue.rootLocalName,\n\t\t\t\tstrings: currentValue.strings,\n\t\t\t\tvalues: currentValue.values.map((entry) => resolveValue(entry as JsxRenderable)),\n\t\t\t} satisfies TemplateResultLike;\n\t\t}\n\n\t\tif (isIterableRenderable(currentValue)) {\n\t\t\treturn Array.from(currentValue, (entry) => resolveValue(entry as JsxRenderable));\n\t\t}\n\n\t\treturn currentValue;\n\t};\n\n\tconst resolvedValue = resolveValue(value);\n\n\treturn {\n\t\tcontainsSlots,\n\t\tvalue: resolvedValue,\n\t};\n}\n\nexport function takeSlotProjectionScriptPayload(host: HTMLElement): string | undefined {\n\tfor (const node of Array.from(host.childNodes)) {\n\t\tif (!isSlotProjectionScriptNode(node)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst payload = node.textContent ?? undefined;\n\t\tnode.parentNode?.removeChild(node);\n\t\treturn payload;\n\t}\n\n\treturn undefined;\n}\n\nfunction appendProjectedRenderable(\n\tprojectedContent: Map<string, JsxRenderable[]>,\n\tslotName: string,\n\trenderable: JsxRenderable,\n): void {\n\tconst existingRenderables = projectedContent.get(slotName);\n\n\tif (existingRenderables) {\n\t\texistingRenderables.push(renderable);\n\t\treturn;\n\t}\n\n\tprojectedContent.set(slotName, [renderable]);\n}\n\nfunction cloneKeyedJsxValue(value: KeyedJsxValue, nextValue: JsxRenderable): KeyedJsxValue {\n\treturn {\n\t\t...value,\n\t\tvalue: nextValue,\n\t};\n}\n\nfunction getNodeSlotName(node: Node): string {\n\tif (node instanceof Element) {\n\t\treturn normalizeSlotName(node.getAttribute('slot'));\n\t}\n\n\treturn DEFAULT_SLOT_NAME;\n}\n\nfunction isIterableRenderable(value: JsxRenderable): value is Iterable<JsxRenderable> {\n\treturn typeof value !== 'string' && typeof value === 'object' && value !== null && Symbol.iterator in value;\n}\n\nfunction isSlotProjectionScriptNode(node: Node): node is HTMLScriptElement {\n\treturn node instanceof HTMLScriptElement && node.hasAttribute(SLOT_PROJECTION_SCRIPT_ATTRIBUTE);\n}\n\nfunction isHydrationScriptNode(node: Node): node is HTMLScriptElement {\n\treturn node instanceof HTMLScriptElement && node.hasAttribute(HYDRATION_ATTRIBUTE);\n}\n\nfunction isIgnoredProjectedNode(node: Node): boolean {\n\treturn isSlotProjectionScriptNode(node) || isHydrationScriptNode(node);\n}\n\nfunction isTemplateResultLike(value: JsxRenderable): value is TemplateResultLike {\n\treturn (\n\t\ttypeof value === 'object' &&\n\t\tvalue !== null &&\n\t\t(value as Partial<TemplateResultLike>)['_$rType$'] === 1 &&\n\t\tArray.isArray((value as Partial<TemplateResultLike>).strings) &&\n\t\tArray.isArray((value as Partial<TemplateResultLike>).values)\n\t);\n}\n\nfunction normalizeSlotName(name: string | undefined | null): string {\n\treturn name ?? DEFAULT_SLOT_NAME;\n}\n\nfunction renderableToHtmlFragment(renderable: JsxRenderable): string | undefined {\n\tif (renderable === undefined || renderable === null || renderable === false || renderable === true) {\n\t\treturn undefined;\n\t}\n\n\tif (typeof Node !== 'undefined' && renderable instanceof Node) {\n\t\tif (renderable.nodeType === Node.TEXT_NODE) {\n\t\t\treturn renderable.textContent ?? '';\n\t\t}\n\n\t\treturn (renderable as Element).outerHTML ?? renderable.textContent ?? undefined;\n\t}\n\n\tif (isKeyedJsxValue(renderable)) {\n\t\treturn renderableToHtmlFragment(renderable.value);\n\t}\n\n\tif (typeof renderable === 'string' || typeof renderable === 'number' || typeof renderable === 'bigint') {\n\t\treturn String(renderable);\n\t}\n\n\tif (typeof renderable === 'object' && renderable !== null && 'outerHTML' in renderable) {\n\t\treturn typeof renderable.outerHTML === 'string' ? renderable.outerHTML : (renderable.textContent ?? undefined);\n\t}\n\n\tif (isIterableRenderable(renderable)) {\n\t\treturn Array.from(renderable, (entry) => renderableToHtmlFragment(entry as JsxRenderable) ?? '').join('');\n\t}\n\n\treturn undefined;\n}\n\nfunction resolveSlotValue(\n\tvalue: SlotJsxValue,\n\tprojectedContent: ReadonlyMap<string, readonly JsxRenderable[]>,\n\tresolveValue: (value: JsxRenderable) => JsxRenderable,\n): JsxRenderable {\n\tconst assignedContent = projectedContent.get(normalizeSlotName(value.name));\n\n\tif (assignedContent && assignedContent.length > 0) {\n\t\treturn assignedContent.length === 1 ? assignedContent[0] : (assignedContent as JsxRenderable);\n\t}\n\n\tif (value.fallback === undefined) {\n\t\treturn '';\n\t}\n\n\treturn resolveValue(value.fallback);\n}\n"
|
|
8
|
-
],
|
|
9
|
-
"mappings": "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",
|
|
10
|
-
"debugId": "210A9ECD4BDC80BB64756E2164756E21",
|
|
11
|
-
"names": []
|
|
12
|
-
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var J=((j)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(j,{get:(q,w)=>(typeof require<"u"?require:q)[w]}):j)(function(j){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+j+'" is not supported')});var F=Symbol.for("@ecopages/radiant.ssr-preparation-callbacks"),H=Symbol.for("@ecopages/radiant.ssr-preparation-running");function Q(j,q){let D=j[F];if(Array.isArray(D)){D.push(q);return}Object.defineProperty(j,F,{value:[q],configurable:!0})}function V(j){let q=j,w=q[F];if(!Array.isArray(w))return;q[H]=!0;try{for(let D of w)D()}finally{delete q[H]}}export{V as runSsrPreparationCallbacks,Q as registerSsrPreparationCallback,H as SSR_PREPARATION_RUNNING};
|
|
2
|
-
|
|
3
|
-
//# debugId=88DF383448E9ECF764756E2164756E21
|
package/dist/decorators/attr.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var W=((t)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var b=Symbol.for("@ecopages/radiant.legacy-instance-initializers");function k(t,e){let n=t[b];if(Array.isArray(n)){n.push(e);return}Object.defineProperty(t,b,{value:[e],configurable:!0})}function Z(t){let e=[],r=Object.getPrototypeOf(t);while(r&&r!==Object.prototype)e.push(r),r=Object.getPrototypeOf(r);for(let n=e.length-1;n>=0;n-=1){let o=e[n][b];if(!Array.isArray(o))continue;for(let i of o)i(t)}}function m(t){switch(t){case Array:return"array";case Boolean:return"boolean";case Number:return"number";case Object:return"object";case String:return"string"}}function B(t){switch(typeof t){case"boolean":return"boolean";case"number":return"number";case"string":return"string"}if(Array.isArray(t))return"array";if(Object.prototype.toString.call(t)==="[object Object]")return"object"}function T(t){switch(t){case Number:return 0;case String:return"";case Boolean:return!1;default:return null}}function V(t){try{return JSON.parse(t)}catch{throw TypeError("Invalid JSON string")}}var j={array(t){let e=V(t);if(!Array.isArray(e))throw TypeError(`Expected an array but got a value of type "${typeof e}"`);return e},boolean(t){return!(t==="0"||String(t).toLowerCase()==="false")},number(t){return Number(t.replace(/_/g,""))},object(t){let e=JSON.parse(t);if(e===null||typeof e!=="object"||Array.isArray(e))throw TypeError(`expected value of type "object" but instead got value "${t}" of type "${B(e)}"`);return e},string(t){return t}},M={default:h,array:F,object:F};function F(t){return JSON.stringify(t)}function h(t){return`${t}`}function g(t,e){let r=m(e);if(!r)throw TypeError(`[radiant-element] Unknown type "${e}"`);return j[r](t)}function C(t,e){let r=m(e);if(!r)throw TypeError(`[radiant-element] Unknown type "${e}"`);return(M[r]??M.default??h)(t)}function w(t){return typeof t==="boolean"}function S(t){return typeof t==="number"}function $(t){return typeof t==="string"}function p(t){return Array.isArray(t)}function U(t){return typeof t==="object"&&!Array.isArray(t)&&t!==null}function L(t,e){switch(t){case Boolean:return w(e);case Number:return S(e);case String:return $(e);case Array:return p(e);case Object:return U(e);default:return!1}}var J=(t,e,r,n)=>{if(e===Boolean){let i=t.getAttribute(r);if(i===null)return n;return i===""?!0:g(i,e)}let o=t.getAttribute(r);return o!==null?g(o,e):n??T(e)};function q(t){return typeof t==="function"}function O(t,e,r,n){if(typeof n==="object")return t(void 0,n);return e(r,n)}function _(t,e,r,n,o){if(typeof n==="object"){if(!q(r))throw TypeError("Standard method decorators require a method target");return t(r,n)}if(!o)throw TypeError("Legacy method decorators require a property descriptor");return e(r,n,o)}function A(t){if(t instanceof Element)return t;if("host"in t)return t.host;return t.element}function K(t){return t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/_/g,"-").toLowerCase()}function E(t,e){if(e.converter?.fromAttribute){let r=e.converter.fromAttribute(t);if(t===null&&r===void 0&&"defaultValue"in e)return e.defaultValue;return r}if(e.type){if(t===null)return e.defaultValue??T(e.type);if(e.type===Boolean&&t==="")return!0;return g(t,e.type)}if(t===null)return e.defaultValue;return t}function s(t,e,r){return E(A(t).getAttribute(e),r)}function Q(t,e,r,n){let o=n.converter?.toAttribute?n.converter.toAttribute(r):n.type?C(r,n.type):r==null?null:String(r);if(o===null){t.removeAttribute(e);return}t.setAttribute(e,o)}function f(t,e,r={}){if(r.type&&r.defaultValue!==void 0&&!L(r.type,r.defaultValue))throw Error(`defaultValue does not match the expected type for ${r.type.name}`);let n=t,o=r.source??K(e),i=Symbol(`@ecopages/radiant/attr:${e}:observer`),d=Symbol(`@ecopages/radiant/attr:${e}:last-value`),y=r.bind??t.shouldAutoBindReactiveMembers?.()??!1;t.defineReactiveBinding(e,y),t.registerReactiveDependencyReader(e,()=>s(t,o,r)),n[d]=s(t,o,r),Object.defineProperty(t,e,{get(){return t.trackReactiveRead(e),s(this,o,r)},set(c){let u=A(this),l=s(this,o,r);Q(u,o,c,r);let a=s(this,o,r);if(Object.is(l,a))return;this[d]=a,t.notifyUpdate(e,l,a)},enumerable:!0,configurable:!0});let H=()=>{n[i]?.disconnect()},x=()=>{let c=s(t,o,r),u=n[d];if(!Object.is(u,c))n[d]=c,t.notifyUpdate(e,u,c);if(typeof MutationObserver>"u")return;let l=A(t);H();let a=new MutationObserver(()=>{let R=s(t,o,r),v=n[d];if(Object.is(v,R))return;n[d]=R,t.notifyUpdate(e,v,R)});a.observe(l,{attributeFilter:[o],attributes:!0}),n[i]=a};x(),t.registerConnectedCallback(x),t.registerCleanupCallback(H)}function D(t={}){return(e,r)=>{let n=Symbol(`@ecopages/radiant/attr:${r}:installed`);k(e,(o)=>{o.registerConnectedCallback(()=>{if(o[n])return;let i=o[r],d=t.defaultValue===void 0?i:t.defaultValue;f(o,r,{...t,defaultValue:d}),o[n]=!0})})}}function P(t={}){return function(e,r){let n=String(r.name),o=Symbol(`@ecopages/radiant/attr:${n}:initializer`);return r.addInitializer(function(){let i=this[o],d=t.defaultValue===void 0?i:t.defaultValue;f(this,n,{...t,defaultValue:d})}),function(i){return this[o]=i,i}}}function ct(t={}){function e(r,n){return O(P(t),D(t),r,n)}return e}export{ct as attr};
|
|
2
|
-
|
|
3
|
-
//# debugId=71F684D27DD20F0064756E2164756E21
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/decorators/legacy/instance-initializers.ts", "../src/utils/attribute-utils.ts", "../src/decorators/bridge.ts", "../src/decorators/shared/reactive-attr.ts", "../src/decorators/legacy/attr.ts", "../src/decorators/standard/attr.ts", "../src/decorators/attr.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"type LegacyInstanceInitializer<T extends object = object> = (instance: T) => void;\n\nconst LEGACY_INSTANCE_INITIALIZERS = Symbol.for('@ecopages/radiant.legacy-instance-initializers');\n\n/**\n * Registers per-instance initialization work for a legacy decorator.\n *\n * Legacy decorators execute against the prototype, so any initialization that\n * needs the concrete element instance must be deferred until construction time.\n */\nexport function registerLegacyInstanceInitializer<T extends object>(\n\tproto: T,\n\tinitializer: LegacyInstanceInitializer<T>,\n): void {\n\tconst target = proto as Record<PropertyKey, unknown>;\n\tconst ownInitializers = target[LEGACY_INSTANCE_INITIALIZERS];\n\n\tif (Array.isArray(ownInitializers)) {\n\t\townInitializers.push(initializer);\n\t\treturn;\n\t}\n\n\tObject.defineProperty(proto, LEGACY_INSTANCE_INITIALIZERS, {\n\t\tvalue: [initializer],\n\t\tconfigurable: true,\n\t});\n}\n\n/**\n * Runs all legacy decorator initializers for a newly constructed element.\n *\n * Initializers are collected from the prototype chain and executed from base to\n * derived class so inherited setup remains stable.\n */\nexport function runLegacyInstanceInitializers<T extends object>(instance: T): void {\n\tconst prototypes: object[] = [];\n\tlet currentPrototype = Object.getPrototypeOf(instance);\n\n\twhile (currentPrototype && currentPrototype !== Object.prototype) {\n\t\tprototypes.push(currentPrototype);\n\t\tcurrentPrototype = Object.getPrototypeOf(currentPrototype);\n\t}\n\n\tfor (let index = prototypes.length - 1; index >= 0; index -= 1) {\n\t\tconst initializers = (prototypes[index] as Record<PropertyKey, unknown>)[LEGACY_INSTANCE_INITIALIZERS] as\n\t\t\t| LegacyInstanceInitializer<T>[]\n\t\t\t| undefined;\n\n\t\tif (!Array.isArray(initializers)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor (const initializer of initializers) {\n\t\t\tinitializer(instance);\n\t\t}\n\t}\n}\n",
|
|
6
|
-
"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",
|
|
7
|
-
"import type { Method } from '../types';\n\ntype StandardFieldFn<Host extends object, Value, Result> = (\n\ttarget: undefined,\n\tcontext: ClassFieldDecoratorContext<Host, Value>,\n) => Result;\n\ntype LegacyFieldFn<Proto, Result> = (proto: Proto, name: string) => Result;\n\ntype StandardMethodFn<Host extends object, TMethod extends Method, Result> = (\n\ttarget: TMethod,\n\tcontext: ClassMethodDecoratorContext<Host, TMethod>,\n) => Result;\n\ntype LegacyMethodFn<Proto, Result> = (proto: Proto, name: string, descriptor: PropertyDescriptor) => Result;\n\nfunction isMethod(value: unknown): value is Method {\n\treturn typeof value === 'function';\n}\n\nexport function fieldDecoratorBridge<Host extends object, Value, Result, Proto>(\n\tstandard: StandardFieldFn<Host, Value, Result>,\n\tlegacy: LegacyFieldFn<Proto, void>,\n\tprotoOrTarget: undefined,\n\tnameOrContext: ClassFieldDecoratorContext<Host, Value>,\n): Result;\nexport function fieldDecoratorBridge<Host extends object, Value, Proto, Result>(\n\tstandard: StandardFieldFn<Host, Value, void>,\n\tlegacy: LegacyFieldFn<Proto, Result>,\n\tprotoOrTarget: Proto,\n\tnameOrContext: string,\n): Result;\nexport function fieldDecoratorBridge<Host extends object, Value, StandardResult, Proto, LegacyResult>(\n\tstandard: StandardFieldFn<Host, Value, StandardResult>,\n\tlegacy: LegacyFieldFn<Proto, LegacyResult>,\n\tprotoOrTarget: Proto | undefined,\n\tnameOrContext: string | ClassFieldDecoratorContext<Host, Value>,\n): StandardResult | LegacyResult;\n\nexport function fieldDecoratorBridge(\n\tstandard: StandardFieldFn<object, unknown, unknown>,\n\tlegacy: LegacyFieldFn<unknown, unknown>,\n\tprotoOrTarget: unknown,\n\tnameOrContext: string | ClassFieldDecoratorContext<object, unknown>,\n): unknown {\n\tif (typeof nameOrContext === 'object') {\n\t\treturn standard(undefined, nameOrContext);\n\t}\n\n\treturn legacy(protoOrTarget, nameOrContext);\n}\n\nexport function methodDecoratorBridge<Host extends object, TMethod extends Method, Result, Proto>(\n\tstandard: StandardMethodFn<Host, TMethod, Result>,\n\tlegacy: LegacyMethodFn<Proto, void>,\n\tprotoOrTarget: TMethod,\n\tnameOrContext: ClassMethodDecoratorContext<Host, TMethod>,\n\tdescriptor?: undefined,\n): Result;\nexport function methodDecoratorBridge<Host extends object, TMethod extends Method, Proto, Result>(\n\tstandard: StandardMethodFn<Host, TMethod, void>,\n\tlegacy: LegacyMethodFn<Proto, Result>,\n\tprotoOrTarget: Proto,\n\tnameOrContext: string,\n\tdescriptor: PropertyDescriptor,\n): Result;\nexport function methodDecoratorBridge<Host extends object, TMethod extends Method, StandardResult, Proto, LegacyResult>(\n\tstandard: StandardMethodFn<Host, TMethod, StandardResult>,\n\tlegacy: LegacyMethodFn<Proto, LegacyResult>,\n\tprotoOrTarget: Proto | TMethod,\n\tnameOrContext: string | ClassMethodDecoratorContext<Host, TMethod>,\n\tdescriptor?: PropertyDescriptor,\n): StandardResult | LegacyResult;\n\nexport function methodDecoratorBridge(\n\tstandard: StandardMethodFn<object, Method, unknown>,\n\tlegacy: LegacyMethodFn<unknown, unknown>,\n\tprotoOrTarget: unknown,\n\tnameOrContext: string | ClassMethodDecoratorContext<object, Method>,\n\tdescriptor?: PropertyDescriptor,\n): unknown {\n\tif (typeof nameOrContext === 'object') {\n\t\tif (!isMethod(protoOrTarget)) {\n\t\t\tthrow new TypeError('Standard method decorators require a method target');\n\t\t}\n\n\t\treturn standard(protoOrTarget, nameOrContext);\n\t}\n\n\tif (!descriptor) {\n\t\tthrow new TypeError('Legacy method decorators require a property descriptor');\n\t}\n\n\treturn legacy(protoOrTarget, nameOrContext, descriptor);\n}\n",
|
|
8
|
-
"import type { ReactiveHostLike } from '../../core/reactive-host';\nimport type { ReactiveBindingOption } from '../../core/radiant-element';\nimport {\n\tdefaultValueForType,\n\tisValueOfType,\n\treadAttributeValue,\n\ttype AttributeTypeConstant,\n\twriteAttributeValue,\n} from '../../utils/attribute-utils';\n\nexport type AttrConverter<T> = {\n\tfromAttribute?: (value: string | null) => T;\n\ttoAttribute?: (value: T) => string | null;\n};\n\nexport type AttrOptions<T = string | undefined> = {\n\tsource?: string;\n\ttype?: AttributeTypeConstant;\n\tbind?: ReactiveBindingOption;\n\tdefaultValue?: T;\n\tconverter?: AttrConverter<T>;\n};\n\ntype ReactiveAttributeHostApi<Bindings extends object = {}> = ReactiveHostLike<Bindings> & {\n\tregisterCleanupCallback(callback: () => void): void;\n\tregisterConnectedCallback(callback: () => void): void;\n};\n\nexport type ReactiveAttributeHostLike<Bindings extends object = {}> =\n\t| (ReactiveAttributeHostApi<Bindings> & Element)\n\t| (ReactiveAttributeHostApi<Bindings> & { host: Element })\n\t| (ReactiveAttributeHostApi<Bindings> & { element: Element });\n\nfunction resolveAttributeTarget(host: ReactiveAttributeHostLike): Element {\n\tif (host instanceof Element) {\n\t\treturn host;\n\t}\n\n\tif ('host' in host) {\n\t\treturn host.host;\n\t}\n\n\treturn host.element;\n}\n\nfunction toAttributeName(propertyName: string): string {\n\treturn propertyName\n\t\t.replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n\t\t.replace(/_/g, '-')\n\t\t.toLowerCase();\n}\n\nfunction resolveAttributeValue<T>(rawValue: string | null, options: AttrOptions<T>): T {\n\tif (options.converter?.fromAttribute) {\n\t\tconst convertedValue = options.converter.fromAttribute(rawValue);\n\n\t\tif (rawValue === null && convertedValue === undefined && 'defaultValue' in options) {\n\t\t\treturn options.defaultValue as T;\n\t\t}\n\n\t\treturn convertedValue;\n\t}\n\n\tif (options.type) {\n\t\tif (rawValue === null) {\n\t\t\treturn (options.defaultValue ?? defaultValueForType(options.type)) as T;\n\t\t}\n\n\t\tif (options.type === Boolean && rawValue === '') {\n\t\t\treturn true as T;\n\t\t}\n\n\t\treturn readAttributeValue(rawValue, options.type) as T;\n\t}\n\n\tif (rawValue === null) {\n\t\treturn options.defaultValue as T;\n\t}\n\n\treturn rawValue as T;\n}\n\nfunction readReactiveAttributeValue<T>(\n\thost: ReactiveAttributeHostLike,\n\tattributeName: string,\n\toptions: AttrOptions<T>,\n): T {\n\treturn resolveAttributeValue(resolveAttributeTarget(host).getAttribute(attributeName), options);\n}\n\nfunction writeReactiveAttributeValue<T>(\n\ttarget: Element,\n\tattributeName: string,\n\tvalue: T,\n\toptions: AttrOptions<T>,\n): void {\n\tconst attributeValue = options.converter?.toAttribute\n\t\t? options.converter.toAttribute(value)\n\t\t: options.type\n\t\t\t? writeAttributeValue(value, options.type)\n\t\t\t: value == null\n\t\t\t\t? null\n\t\t\t\t: String(value);\n\n\tif (attributeValue === null) {\n\t\ttarget.removeAttribute(attributeName);\n\t\treturn;\n\t}\n\n\ttarget.setAttribute(attributeName, attributeValue);\n}\n\nexport function installReactiveAttribute<TBindings extends object, TValue>(\n\thost: ReactiveAttributeHostLike<TBindings>,\n\tpropertyName: string,\n\toptions: AttrOptions<TValue> = {},\n): void {\n\tif (options.type && options.defaultValue !== undefined && !isValueOfType(options.type, options.defaultValue)) {\n\t\tthrow new Error(`defaultValue does not match the expected type for ${options.type.name}`);\n\t}\n\n\tconst hostRecord = host as unknown as Record<PropertyKey, unknown>;\n\tconst attributeName = options.source ?? toAttributeName(propertyName);\n\tconst observerKey = Symbol(`@ecopages/radiant/attr:${propertyName}:observer`);\n\tconst lastValueKey = Symbol(`@ecopages/radiant/attr:${propertyName}:last-value`);\n\tconst bind =\n\t\toptions.bind ??\n\t\t(host as unknown as { shouldAutoBindReactiveMembers?: () => boolean }).shouldAutoBindReactiveMembers?.() ??\n\t\tfalse;\n\n\thost.defineReactiveBinding(propertyName, bind);\n\thost.registerReactiveDependencyReader(propertyName, () => readReactiveAttributeValue(host, attributeName, options));\n\thostRecord[lastValueKey] = readReactiveAttributeValue(host, attributeName, options);\n\n\tObject.defineProperty(host, propertyName, {\n\t\tget() {\n\t\t\thost.trackReactiveRead(propertyName);\n\t\t\treturn readReactiveAttributeValue(this as ReactiveAttributeHostLike, attributeName, options);\n\t\t},\n\t\tset(newValue: TValue) {\n\t\t\tconst target = resolveAttributeTarget(this as ReactiveAttributeHostLike);\n\t\t\tconst oldValue = readReactiveAttributeValue(this as ReactiveAttributeHostLike, attributeName, options);\n\t\t\twriteReactiveAttributeValue(target, attributeName, newValue, options);\n\t\t\tconst nextValue = readReactiveAttributeValue(this as ReactiveAttributeHostLike, attributeName, options);\n\n\t\t\tif (Object.is(oldValue, nextValue)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t(this as Record<PropertyKey, unknown>)[lastValueKey] = nextValue;\n\t\t\thost.notifyUpdate(propertyName, oldValue, nextValue);\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true,\n\t});\n\n\tconst disconnectObserver = () => {\n\t\tconst observer = hostRecord[observerKey] as MutationObserver | undefined;\n\t\tobserver?.disconnect();\n\t};\n\n\tconst syncAndObserve = () => {\n\t\tconst nextValue = readReactiveAttributeValue(host, attributeName, options);\n\t\tconst previousValue = hostRecord[lastValueKey];\n\n\t\tif (!Object.is(previousValue, nextValue)) {\n\t\t\thostRecord[lastValueKey] = nextValue;\n\t\t\thost.notifyUpdate(propertyName, previousValue, nextValue);\n\t\t}\n\n\t\tif (typeof MutationObserver === 'undefined') {\n\t\t\treturn;\n\t\t}\n\n\t\tconst target = resolveAttributeTarget(host);\n\n\t\tdisconnectObserver();\n\n\t\tconst observer = new MutationObserver(() => {\n\t\t\tconst currentValue = readReactiveAttributeValue(host, attributeName, options);\n\t\t\tconst lastValue = hostRecord[lastValueKey];\n\n\t\t\tif (Object.is(lastValue, currentValue)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\thostRecord[lastValueKey] = currentValue;\n\t\t\thost.notifyUpdate(propertyName, lastValue, currentValue);\n\t\t});\n\n\t\tobserver.observe(target, {\n\t\t\tattributeFilter: [attributeName],\n\t\t\tattributes: true,\n\t\t});\n\n\t\thostRecord[observerKey] = observer;\n\t};\n\n\tsyncAndObserve();\n\thost.registerConnectedCallback(syncAndObserve);\n\thost.registerCleanupCallback(disconnectObserver);\n}\n",
|
|
9
|
-
"import { installReactiveAttribute, type AttrOptions, type ReactiveAttributeHostLike } from '../shared/reactive-attr';\nimport { registerLegacyInstanceInitializer } from './instance-initializers';\n\nexport function reactiveAttr<TValue = string | undefined>(options: AttrOptions<TValue> = {}) {\n\treturn (target: ReactiveAttributeHostLike, propertyName: string) => {\n\t\tconst installedKey = Symbol(`@ecopages/radiant/attr:${propertyName}:installed`);\n\n\t\tregisterLegacyInstanceInitializer(target, (host) => {\n\t\t\t(host as ReactiveAttributeHostLike).registerConnectedCallback(() => {\n\t\t\t\tif ((host as unknown as Record<PropertyKey, unknown>)[installedKey]) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst initializerValue = (host as unknown as Record<PropertyKey, TValue | undefined>)[propertyName];\n\t\t\t\tconst defaultValue = (options.defaultValue === undefined ? initializerValue : options.defaultValue) as\n\t\t\t\t\t| TValue\n\t\t\t\t\t| undefined;\n\n\t\t\t\tinstallReactiveAttribute(host as ReactiveAttributeHostLike, propertyName, {\n\t\t\t\t\t...options,\n\t\t\t\t\tdefaultValue,\n\t\t\t\t});\n\n\t\t\t\t(host as unknown as Record<PropertyKey, unknown>)[installedKey] = true;\n\t\t\t});\n\t\t});\n\t};\n}\n",
|
|
10
|
-
"import { installReactiveAttribute, type AttrOptions, type ReactiveAttributeHostLike } from '../shared/reactive-attr';\n\nexport function reactiveAttr<TValue = string | undefined>(options: AttrOptions<TValue> = {}) {\n\treturn function <THost extends ReactiveAttributeHostLike>(\n\t\ttarget: undefined,\n\t\tcontext: ClassFieldDecoratorContext<THost, TValue>,\n\t) {\n\t\tvoid target;\n\t\tconst propertyName = String(context.name);\n\t\tconst initializerValueKey = Symbol(`@ecopages/radiant/attr:${propertyName}:initializer`);\n\n\t\tcontext.addInitializer(function (this: THost) {\n\t\t\tconst initializerValue = (this as Record<PropertyKey, TValue | undefined>)[initializerValueKey];\n\t\t\tconst defaultValue = (options.defaultValue === undefined ? initializerValue : options.defaultValue) as\n\t\t\t\t| TValue\n\t\t\t\t| undefined;\n\n\t\t\tinstallReactiveAttribute(this, propertyName, {\n\t\t\t\t...options,\n\t\t\t\tdefaultValue,\n\t\t\t});\n\t\t});\n\n\t\treturn function (this: THost, value: TValue) {\n\t\t\t(this as Record<PropertyKey, TValue | undefined>)[initializerValueKey] = value;\n\t\t\treturn value;\n\t\t};\n\t};\n}\n",
|
|
11
|
-
"import { fieldDecoratorBridge } from './bridge';\nimport { reactiveAttr as legacyReactiveAttr } from './legacy/attr';\nimport { reactiveAttr as standardReactiveAttr } from './standard/attr';\nimport type { ReactiveAttributeHostLike } from './shared/reactive-attr';\nexport type { AttrConverter, AttrOptions } from './shared/reactive-attr';\n\nexport function attr<TValue = string | undefined>(options: import('./shared/reactive-attr').AttrOptions<TValue> = {}) {\n\tfunction decorator<THost extends ReactiveAttributeHostLike>(\n\t\tprotoOrTarget: undefined,\n\t\tnameOrContext: ClassFieldDecoratorContext<THost, TValue>,\n\t): (this: THost, value: TValue) => TValue;\n\tfunction decorator(protoOrTarget: ReactiveAttributeHostLike, nameOrContext: string): void;\n\tfunction decorator(\n\t\tprotoOrTarget: ReactiveAttributeHostLike | undefined,\n\t\tnameOrContext: string | ClassFieldDecoratorContext<ReactiveAttributeHostLike, TValue>,\n\t): ((this: ReactiveAttributeHostLike, value: TValue) => TValue) | void {\n\t\treturn fieldDecoratorBridge(\n\t\t\tstandardReactiveAttr(options),\n\t\t\tlegacyReactiveAttr(options),\n\t\t\tprotoOrTarget,\n\t\t\tnameOrContext,\n\t\t);\n\t}\n\n\treturn decorator;\n}\n"
|
|
12
|
-
],
|
|
13
|
-
"mappings": "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",
|
|
14
|
-
"debugId": "71F684D27DD20F0064756E2164756E21",
|
|
15
|
-
"names": []
|
|
16
|
-
}
|
package/dist/decorators/bound.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var l=((t)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(o,e)=>(typeof require<"u"?require:o)[e]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});function u(t){return typeof t==="function"}function c(t,o,e,n){if(typeof n==="object")return t(void 0,n);return o(e,n)}function d(t,o,e,n,r){if(typeof n==="object"){if(!u(e))throw TypeError("Standard method decorators require a method target");return t(e,n)}if(!r)throw TypeError("Legacy method decorators require a property descriptor");return o(e,n,r)}function s(t,o,e){let n=e.value;return{configurable:!0,get(){if(this===t.prototype||Object.prototype.hasOwnProperty.call(this,o))return n;let r=n.bind(this);return Object.defineProperty(this,o,{value:r,configurable:!0,writable:!0}),r}}}function a(t,o){let e=String(o.name);if(o.private)throw Error(`'bound' cannot decorate private properties like ${e}.`);o.addInitializer(function(){this[e]=this[e].bind(this)})}function R(t,o,e){return d(a,s,t,o,e)}export{R as bound};
|
|
2
|
-
|
|
3
|
-
//# debugId=233CFF85BFD8009D64756E2164756E21
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var a=((t)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(r,e)=>(typeof require<"u"?require:r)[e]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});function d(t){return typeof t==="function"}function u(t,r,e,o){if(typeof o==="object")return t(void 0,o);return r(e,o)}function c(t,r,e,o,n){if(typeof o==="object"){if(!d(e))throw TypeError("Standard method decorators require a method target");return t(e,o)}if(!n)throw TypeError("Legacy method decorators require a property descriptor");return r(e,o,n)}export{c as methodDecoratorBridge,u as fieldDecoratorBridge};
|
|
2
|
-
|
|
3
|
-
//# debugId=29F9F6D71FA37B4064756E2164756E21
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var A=((E)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(E,{get:(I,L)=>(typeof require<"u"?require:I)[L]}):E)(function(E){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+E+'" is not supported')});var W=Symbol.for("@ecopages/radiant.controllerIdentifier");function F(E,I){E[W]=I}function G(E){return E[W]}var u="data-controller",_=Symbol.for("@ecopages/radiant.controller-registry-state");function q(){let E=globalThis,I=E[_];if(I)return I;let L={activeRuntimes:new Set,controllerRegistrationStrategy:"keep-current",controllerRegistry:new Map};return E[_]=L,L}var D=q(),T=D.controllerRegistry,M=D.activeRuntimes;function p(E){let I=E.getAttribute(u);if(!I)return[];return I.split(/\s+/).map((L)=>L.trim()).filter((L)=>L.length>0)}function h(E,I){if(E instanceof Element&&E.hasAttribute(u))I(E);for(let L of Array.from(E.querySelectorAll(`[${u}]`)))I(L)}class R{root;controllersByElement=new Map;observer;stopped=!1;constructor(E=document){this.root=E;this.start()}stop(){if(this.stopped)return;this.stopped=!0,this.observer?.disconnect(),this.observer=void 0;for(let[E,I]of this.controllersByElement)for(let[L]of I)this.disconnectController(E,L);M.delete(this)}reconcileRegisteredController(E){h(this.root,(I)=>{if(!p(I).includes(E))return;this.connectController(I,E)})}replaceRegisteredController(E){for(let[I,L]of Array.from(this.controllersByElement.entries())){if(!L.has(E))continue;this.disconnectController(I,E)}this.reconcileRegisteredController(E)}start(){if(h(this.root,(I)=>{this.reconcileElement(I)}),typeof MutationObserver>"u"){M.add(this);return}this.observer=new MutationObserver((I)=>{for(let L of I){if(L.type==="attributes"&&L.target instanceof Element){this.reconcileElement(L.target);continue}for(let O of Array.from(L.removedNodes)){if(!(O instanceof Element))continue;h(O,(C)=>{this.disconnectElementControllers(C)})}for(let O of Array.from(L.addedNodes)){if(!(O instanceof Element))continue;h(O,(C)=>{this.reconcileElement(C)})}}});let E=this.root instanceof Document?this.root.documentElement:this.root;this.observer.observe(E,{attributeFilter:[u],attributes:!0,childList:!0,subtree:!0}),M.add(this)}reconcileElement(E){let I=new Set(p(E)),L=this.controllersByElement.get(E);if(L){for(let O of L.keys())if(!I.has(O))this.disconnectController(E,O)}for(let O of I)this.connectController(E,O)}connectController(E,I){let L=T.get(I);if(!L)return;let O=this.controllersByElement.get(E);if(!O)O=new Map,this.controllersByElement.set(E,O);if(O.has(I))return;let C=new L(E);O.set(I,C),C.connect()}disconnectController(E,I){let L=this.controllersByElement.get(E);if(!L)return;let O=L.get(I);if(!O)return;if(O.disconnect(),L.delete(I),L.size===0)this.controllersByElement.delete(E)}disconnectElementControllers(E){let I=this.controllersByElement.get(E);if(!I)return;for(let L of Array.from(I.keys()))this.disconnectController(E,L)}}function w(E,I){let L=T.get(E);if(L)return L;F(I,E),T.set(E,I);for(let O of Array.from(M))O.reconcileRegisteredController(E);return I}function K(E){return T.has(E)}function N(E){return T.get(E)}function z(E,I){if(T.get(E)===I)return I;F(I,E),T.set(E,I);for(let O of Array.from(M))O.replaceRegisteredController(E);return I}function j(E){D.controllerRegistrationStrategy=E}function P(){j("replace")}function Q(){j("keep-current")}function k(E,I){if(D.controllerRegistrationStrategy==="replace")return z(E,I);return w(E,I)}function U(E=document){return new R(E)}function V(){for(let E of Array.from(M))E.stop()}function Z(E){return function(I){return k(E,I)}}export{Z as controller};
|
|
2
|
-
|
|
3
|
-
//# debugId=69F8D6F5F00F2B1564756E2164756E21
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var P=((j)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(j,{get:(q,z)=>(typeof require<"u"?require:q)[z]}):j)(function(j){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+j+'" is not supported')});var I=Symbol.for("@ecopages/radiant.customElementTagName");function F(j,q){j[I]=q}function V(j){return j[I]}function J(j,q){return(z)=>{if(F(z,j),typeof customElements<"u"&&!customElements.get(j))customElements.define(j,z,q)}}function K(j,q){return function(z,B){B.addInitializer(function(){if(F(this,j),typeof customElements<"u"&&!customElements.get(j))customElements.define(j,this,q)})}}function b(j,q){function z(B,H){if(typeof H<"u")return K(j,q)(B,H);return J(j,q)(B)}return z}export{b as customElement};
|
|
2
|
-
|
|
3
|
-
//# debugId=583FF706F48591E064756E2164756E21
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var l=((e)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(n,o)=>(typeof require<"u"?require:n)[o]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});function M(e){return typeof e==="function"}function g(e,n,o,t){if(typeof t==="object")return e(void 0,t);return n(o,t)}function c(e,n,o,t,r){if(typeof t==="object"){if(!M(o))throw TypeError("Standard method decorators require a method target");return e(o,t)}if(!r)throw TypeError("Legacy method decorators require a property descriptor");return n(o,t,r)}function u(e,n){let o=null,t=null,r,d=()=>{if(o!==null)clearTimeout(o),o=null},y=()=>{if(t===null)return r;let s=t;return t=null,d(),r=s(),r},a=function(...s){t=()=>e.apply(this,s),d(),o=setTimeout(()=>{y()},n)};return a.cancel=()=>{d(),t=null},a.flush=()=>{if(t===null)return r;return y()},a.pending=()=>t!==null,a}function i(e){return(n,o,t)=>{let r=t.value,d=new WeakMap;return t.value=function(...a){let s=d.get(this);if(!s)s=u((...p)=>{return r.apply(this,p)},e),d.set(this,s);s(...a)},t}}function h(e){return(n)=>{let o=new WeakMap;return function(...t){let r=o.get(this);if(!r)r=u((...d)=>{return n.apply(this,d)},e),o.set(this,r);r(...t)}}}function S(e){function n(o,t,r){return c(h(e),i(e),o,t,r)}return n}export{S as debounce};
|
|
2
|
-
|
|
3
|
-
//# debugId=7F87A38B675BC95764756E2164756E21
|
package/dist/decorators/event.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var P=((d)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(d,{get:(o,u)=>(typeof require<"u"?require:o)[u]}):d)(function(d){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+d+'" is not supported')});var F=Symbol.for("@ecopages/radiant.legacy-instance-initializers");function R(d,o){let r=d[F];if(Array.isArray(r)){r.push(o);return}Object.defineProperty(d,F,{value:[o],configurable:!0})}function D(d){let o=[],u=Object.getPrototypeOf(d);while(u&&u!==Object.prototype)o.push(u),u=Object.getPrototypeOf(u);for(let r=o.length-1;r>=0;r-=1){let s=o[r][F];if(!Array.isArray(s))continue;for(let H of s)H(d)}}function y(d){return typeof d==="function"}function x(d,o,u,r){if(typeof r==="object")return d(void 0,r);return o(u,r)}function n(d,o,u,r,s){if(typeof r==="object"){if(!y(u))throw TypeError("Standard method decorators require a method target");return d(u,r)}if(!s)throw TypeError("Legacy method decorators require a property descriptor");return o(u,r,s)}class t{host;eventConfig;constructor(d,o){this.host=d,this.eventConfig=o}emit(d){let o=new CustomEvent(this.eventConfig.name,{detail:d,bubbles:this.eventConfig.bubbles,cancelable:this.eventConfig.cancelable,composed:this.eventConfig.composed});this.host.dispatchEvent(o)}}function M(d,o){let u=new t(d,o);return d.registerEventEmitter(o.name,u),u}function a(d){return(o,u)=>{R(o,(r)=>{let s=M(r,d);r.registerConnectedCallback(()=>{Object.defineProperty(r,u,{get(){return s},enumerable:!0,configurable:!0})})})}}function c(d){return function(o,u){u.addInitializer(function(){let r=M(this,d);Object.defineProperty(this,u.name,{get(){return r},enumerable:!0,configurable:!0})})}}function Q(d){function o(u,r){return x(c(d),a(d),u,r)}return o}export{Q as event};
|
|
2
|
-
|
|
3
|
-
//# debugId=16D85C878AD39F9F64756E2164756E21
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var Y=((n)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(t,e)=>(typeof require<"u"?require:t)[e]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});var T=Symbol.for("@ecopages/radiant.legacy-instance-initializers");function x(n,t){let c=n[T];if(Array.isArray(c)){c.push(t);return}Object.defineProperty(n,T,{value:[t],configurable:!0})}function w(n){let t=[],e=Object.getPrototypeOf(n);while(e&&e!==Object.prototype)t.push(e),e=Object.getPrototypeOf(e);for(let c=t.length-1;c>=0;c-=1){let i=t[c][T];if(!Array.isArray(i))continue;for(let r of i)r(n)}}function $(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 v(n){switch(n){case Number:return 0;case String:return"";case Boolean:return!1;default:return null}}function D(n){try{return JSON.parse(n)}catch{throw TypeError("Invalid JSON string")}}var Q={array(n){let t=D(n);if(!Array.isArray(t))throw TypeError(`Expected an array but got a value of type "${typeof t}"`);return t},boolean(n){return!(n==="0"||String(n).toLowerCase()==="false")},number(n){return Number(n.replace(/_/g,""))},object(n){let t=JSON.parse(n);if(t===null||typeof t!=="object"||Array.isArray(t))throw TypeError(`expected value of type "object" but instead got value "${n}" of type "${q(t)}"`);return t},string(n){return n}},u={default:C,array:M,object:M};function M(n){return JSON.stringify(n)}function C(n){return`${n}`}function f(n,t){let e=$(t);if(!e)throw TypeError(`[radiant-element] Unknown type "${t}"`);return Q[e](n)}function L(n,t){let e=$(t);if(!e)throw TypeError(`[radiant-element] Unknown type "${t}"`);return(u[e]??u.default??C)(n)}function W(n){return typeof n==="boolean"}function X(n){return typeof n==="number"}function E(n){return typeof n==="string"}function K(n){return Array.isArray(n)}function P(n){return typeof n==="object"&&!Array.isArray(n)&&n!==null}function U(n,t){switch(n){case Boolean:return W(t);case Number:return X(t);case String:return E(t);case Array:return K(t);case Object:return P(t);default:return!1}}var V=(n,t,e,c)=>{if(t===Boolean){let r=n.getAttribute(e);if(r===null)return c;return r===""?!0:f(r,t)}let i=n.getAttribute(e);return i!==null?f(i,t):c??v(t)};function H(n){if(n instanceof Element)return n;if("host"in n)return n.host;return n.element}function Z(n){return n.replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/_/g,"-").toLowerCase()}function G(n,t){if(t.converter?.fromAttribute){let e=t.converter.fromAttribute(n);if(n===null&&e===void 0&&"defaultValue"in t)return t.defaultValue;return e}if(t.type){if(n===null)return t.defaultValue??v(t.type);if(t.type===Boolean&&n==="")return!0;return f(n,t.type)}if(n===null)return t.defaultValue;return n}function A(n,t,e){return G(H(n).getAttribute(t),e)}function J(n,t,e,c){let i=c.converter?.toAttribute?c.converter.toAttribute(e):c.type?L(e,c.type):e==null?null:String(e);if(i===null){n.removeAttribute(t);return}n.setAttribute(t,i)}function j(n,t,e={}){if(e.type&&e.defaultValue!==void 0&&!U(e.type,e.defaultValue))throw Error(`defaultValue does not match the expected type for ${e.type.name}`);let c=n,i=e.source??Z(t),r=Symbol(`@ecopages/radiant/attr:${t}:observer`),b=Symbol(`@ecopages/radiant/attr:${t}:last-value`),F=e.bind??n.shouldAutoBindReactiveMembers?.()??!1;n.defineReactiveBinding(t,F),n.registerReactiveDependencyReader(t,()=>A(n,i,e)),c[b]=A(n,i,e),Object.defineProperty(n,t,{get(){return n.trackReactiveRead(t),A(this,i,e)},set(d){let R=H(this),g=A(this,i,e);J(R,i,d,e);let s=A(this,i,e);if(Object.is(g,s))return;this[b]=s,n.notifyUpdate(t,g,s)},enumerable:!0,configurable:!0});let B=()=>{c[r]?.disconnect()},O=()=>{let d=A(n,i,e),R=c[b];if(!Object.is(R,d))c[b]=d,n.notifyUpdate(t,R,d);if(typeof MutationObserver>"u")return;let g=H(n);B();let s=new MutationObserver(()=>{let k=A(n,i,e),m=c[b];if(Object.is(m,k))return;c[b]=k,n.notifyUpdate(t,m,k)});s.observe(g,{attributeFilter:[i],attributes:!0}),c[r]=s};O(),n.registerConnectedCallback(O),n.registerCleanupCallback(B)}function l(n={}){return(t,e)=>{let c=Symbol(`@ecopages/radiant/attr:${e}:installed`);x(t,(i)=>{i.registerConnectedCallback(()=>{if(i[c])return;let r=i[e],b=n.defaultValue===void 0?r:n.defaultValue;j(i,e,{...n,defaultValue:b}),i[c]=!0})})}}export{l as reactiveAttr};
|
|
2
|
-
|
|
3
|
-
//# debugId=AE64EA9575061F1D64756E2164756E21
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/decorators/legacy/instance-initializers.ts", "../src/utils/attribute-utils.ts", "../src/decorators/shared/reactive-attr.ts", "../src/decorators/legacy/attr.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"type LegacyInstanceInitializer<T extends object = object> = (instance: T) => void;\n\nconst LEGACY_INSTANCE_INITIALIZERS = Symbol.for('@ecopages/radiant.legacy-instance-initializers');\n\n/**\n * Registers per-instance initialization work for a legacy decorator.\n *\n * Legacy decorators execute against the prototype, so any initialization that\n * needs the concrete element instance must be deferred until construction time.\n */\nexport function registerLegacyInstanceInitializer<T extends object>(\n\tproto: T,\n\tinitializer: LegacyInstanceInitializer<T>,\n): void {\n\tconst target = proto as Record<PropertyKey, unknown>;\n\tconst ownInitializers = target[LEGACY_INSTANCE_INITIALIZERS];\n\n\tif (Array.isArray(ownInitializers)) {\n\t\townInitializers.push(initializer);\n\t\treturn;\n\t}\n\n\tObject.defineProperty(proto, LEGACY_INSTANCE_INITIALIZERS, {\n\t\tvalue: [initializer],\n\t\tconfigurable: true,\n\t});\n}\n\n/**\n * Runs all legacy decorator initializers for a newly constructed element.\n *\n * Initializers are collected from the prototype chain and executed from base to\n * derived class so inherited setup remains stable.\n */\nexport function runLegacyInstanceInitializers<T extends object>(instance: T): void {\n\tconst prototypes: object[] = [];\n\tlet currentPrototype = Object.getPrototypeOf(instance);\n\n\twhile (currentPrototype && currentPrototype !== Object.prototype) {\n\t\tprototypes.push(currentPrototype);\n\t\tcurrentPrototype = Object.getPrototypeOf(currentPrototype);\n\t}\n\n\tfor (let index = prototypes.length - 1; index >= 0; index -= 1) {\n\t\tconst initializers = (prototypes[index] as Record<PropertyKey, unknown>)[LEGACY_INSTANCE_INITIALIZERS] as\n\t\t\t| LegacyInstanceInitializer<T>[]\n\t\t\t| undefined;\n\n\t\tif (!Array.isArray(initializers)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor (const initializer of initializers) {\n\t\t\tinitializer(instance);\n\t\t}\n\t}\n}\n",
|
|
6
|
-
"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",
|
|
7
|
-
"import type { ReactiveHostLike } from '../../core/reactive-host';\nimport type { ReactiveBindingOption } from '../../core/radiant-element';\nimport {\n\tdefaultValueForType,\n\tisValueOfType,\n\treadAttributeValue,\n\ttype AttributeTypeConstant,\n\twriteAttributeValue,\n} from '../../utils/attribute-utils';\n\nexport type AttrConverter<T> = {\n\tfromAttribute?: (value: string | null) => T;\n\ttoAttribute?: (value: T) => string | null;\n};\n\nexport type AttrOptions<T = string | undefined> = {\n\tsource?: string;\n\ttype?: AttributeTypeConstant;\n\tbind?: ReactiveBindingOption;\n\tdefaultValue?: T;\n\tconverter?: AttrConverter<T>;\n};\n\ntype ReactiveAttributeHostApi<Bindings extends object = {}> = ReactiveHostLike<Bindings> & {\n\tregisterCleanupCallback(callback: () => void): void;\n\tregisterConnectedCallback(callback: () => void): void;\n};\n\nexport type ReactiveAttributeHostLike<Bindings extends object = {}> =\n\t| (ReactiveAttributeHostApi<Bindings> & Element)\n\t| (ReactiveAttributeHostApi<Bindings> & { host: Element })\n\t| (ReactiveAttributeHostApi<Bindings> & { element: Element });\n\nfunction resolveAttributeTarget(host: ReactiveAttributeHostLike): Element {\n\tif (host instanceof Element) {\n\t\treturn host;\n\t}\n\n\tif ('host' in host) {\n\t\treturn host.host;\n\t}\n\n\treturn host.element;\n}\n\nfunction toAttributeName(propertyName: string): string {\n\treturn propertyName\n\t\t.replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n\t\t.replace(/_/g, '-')\n\t\t.toLowerCase();\n}\n\nfunction resolveAttributeValue<T>(rawValue: string | null, options: AttrOptions<T>): T {\n\tif (options.converter?.fromAttribute) {\n\t\tconst convertedValue = options.converter.fromAttribute(rawValue);\n\n\t\tif (rawValue === null && convertedValue === undefined && 'defaultValue' in options) {\n\t\t\treturn options.defaultValue as T;\n\t\t}\n\n\t\treturn convertedValue;\n\t}\n\n\tif (options.type) {\n\t\tif (rawValue === null) {\n\t\t\treturn (options.defaultValue ?? defaultValueForType(options.type)) as T;\n\t\t}\n\n\t\tif (options.type === Boolean && rawValue === '') {\n\t\t\treturn true as T;\n\t\t}\n\n\t\treturn readAttributeValue(rawValue, options.type) as T;\n\t}\n\n\tif (rawValue === null) {\n\t\treturn options.defaultValue as T;\n\t}\n\n\treturn rawValue as T;\n}\n\nfunction readReactiveAttributeValue<T>(\n\thost: ReactiveAttributeHostLike,\n\tattributeName: string,\n\toptions: AttrOptions<T>,\n): T {\n\treturn resolveAttributeValue(resolveAttributeTarget(host).getAttribute(attributeName), options);\n}\n\nfunction writeReactiveAttributeValue<T>(\n\ttarget: Element,\n\tattributeName: string,\n\tvalue: T,\n\toptions: AttrOptions<T>,\n): void {\n\tconst attributeValue = options.converter?.toAttribute\n\t\t? options.converter.toAttribute(value)\n\t\t: options.type\n\t\t\t? writeAttributeValue(value, options.type)\n\t\t\t: value == null\n\t\t\t\t? null\n\t\t\t\t: String(value);\n\n\tif (attributeValue === null) {\n\t\ttarget.removeAttribute(attributeName);\n\t\treturn;\n\t}\n\n\ttarget.setAttribute(attributeName, attributeValue);\n}\n\nexport function installReactiveAttribute<TBindings extends object, TValue>(\n\thost: ReactiveAttributeHostLike<TBindings>,\n\tpropertyName: string,\n\toptions: AttrOptions<TValue> = {},\n): void {\n\tif (options.type && options.defaultValue !== undefined && !isValueOfType(options.type, options.defaultValue)) {\n\t\tthrow new Error(`defaultValue does not match the expected type for ${options.type.name}`);\n\t}\n\n\tconst hostRecord = host as unknown as Record<PropertyKey, unknown>;\n\tconst attributeName = options.source ?? toAttributeName(propertyName);\n\tconst observerKey = Symbol(`@ecopages/radiant/attr:${propertyName}:observer`);\n\tconst lastValueKey = Symbol(`@ecopages/radiant/attr:${propertyName}:last-value`);\n\tconst bind =\n\t\toptions.bind ??\n\t\t(host as unknown as { shouldAutoBindReactiveMembers?: () => boolean }).shouldAutoBindReactiveMembers?.() ??\n\t\tfalse;\n\n\thost.defineReactiveBinding(propertyName, bind);\n\thost.registerReactiveDependencyReader(propertyName, () => readReactiveAttributeValue(host, attributeName, options));\n\thostRecord[lastValueKey] = readReactiveAttributeValue(host, attributeName, options);\n\n\tObject.defineProperty(host, propertyName, {\n\t\tget() {\n\t\t\thost.trackReactiveRead(propertyName);\n\t\t\treturn readReactiveAttributeValue(this as ReactiveAttributeHostLike, attributeName, options);\n\t\t},\n\t\tset(newValue: TValue) {\n\t\t\tconst target = resolveAttributeTarget(this as ReactiveAttributeHostLike);\n\t\t\tconst oldValue = readReactiveAttributeValue(this as ReactiveAttributeHostLike, attributeName, options);\n\t\t\twriteReactiveAttributeValue(target, attributeName, newValue, options);\n\t\t\tconst nextValue = readReactiveAttributeValue(this as ReactiveAttributeHostLike, attributeName, options);\n\n\t\t\tif (Object.is(oldValue, nextValue)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t(this as Record<PropertyKey, unknown>)[lastValueKey] = nextValue;\n\t\t\thost.notifyUpdate(propertyName, oldValue, nextValue);\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true,\n\t});\n\n\tconst disconnectObserver = () => {\n\t\tconst observer = hostRecord[observerKey] as MutationObserver | undefined;\n\t\tobserver?.disconnect();\n\t};\n\n\tconst syncAndObserve = () => {\n\t\tconst nextValue = readReactiveAttributeValue(host, attributeName, options);\n\t\tconst previousValue = hostRecord[lastValueKey];\n\n\t\tif (!Object.is(previousValue, nextValue)) {\n\t\t\thostRecord[lastValueKey] = nextValue;\n\t\t\thost.notifyUpdate(propertyName, previousValue, nextValue);\n\t\t}\n\n\t\tif (typeof MutationObserver === 'undefined') {\n\t\t\treturn;\n\t\t}\n\n\t\tconst target = resolveAttributeTarget(host);\n\n\t\tdisconnectObserver();\n\n\t\tconst observer = new MutationObserver(() => {\n\t\t\tconst currentValue = readReactiveAttributeValue(host, attributeName, options);\n\t\t\tconst lastValue = hostRecord[lastValueKey];\n\n\t\t\tif (Object.is(lastValue, currentValue)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\thostRecord[lastValueKey] = currentValue;\n\t\t\thost.notifyUpdate(propertyName, lastValue, currentValue);\n\t\t});\n\n\t\tobserver.observe(target, {\n\t\t\tattributeFilter: [attributeName],\n\t\t\tattributes: true,\n\t\t});\n\n\t\thostRecord[observerKey] = observer;\n\t};\n\n\tsyncAndObserve();\n\thost.registerConnectedCallback(syncAndObserve);\n\thost.registerCleanupCallback(disconnectObserver);\n}\n",
|
|
8
|
-
"import { installReactiveAttribute, type AttrOptions, type ReactiveAttributeHostLike } from '../shared/reactive-attr';\nimport { registerLegacyInstanceInitializer } from './instance-initializers';\n\nexport function reactiveAttr<TValue = string | undefined>(options: AttrOptions<TValue> = {}) {\n\treturn (target: ReactiveAttributeHostLike, propertyName: string) => {\n\t\tconst installedKey = Symbol(`@ecopages/radiant/attr:${propertyName}:installed`);\n\n\t\tregisterLegacyInstanceInitializer(target, (host) => {\n\t\t\t(host as ReactiveAttributeHostLike).registerConnectedCallback(() => {\n\t\t\t\tif ((host as unknown as Record<PropertyKey, unknown>)[installedKey]) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst initializerValue = (host as unknown as Record<PropertyKey, TValue | undefined>)[propertyName];\n\t\t\t\tconst defaultValue = (options.defaultValue === undefined ? initializerValue : options.defaultValue) as\n\t\t\t\t\t| TValue\n\t\t\t\t\t| undefined;\n\n\t\t\t\tinstallReactiveAttribute(host as ReactiveAttributeHostLike, propertyName, {\n\t\t\t\t\t...options,\n\t\t\t\t\tdefaultValue,\n\t\t\t\t});\n\n\t\t\t\t(host as unknown as Record<PropertyKey, unknown>)[installedKey] = true;\n\t\t\t});\n\t\t});\n\t};\n}\n"
|
|
9
|
-
],
|
|
10
|
-
"mappings": "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",
|
|
11
|
-
"debugId": "AE64EA9575061F1D64756E2164756E21",
|
|
12
|
-
"names": []
|
|
13
|
-
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var x=((f)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(f,{get:(j,q)=>(typeof require<"u"?require:j)[q]}):f)(function(f){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+f+'" is not supported')});function B(f,j,q){let v=q.value;return{configurable:!0,get(){if(this===f.prototype||Object.prototype.hasOwnProperty.call(this,j))return v;let w=v.bind(this);return Object.defineProperty(this,j,{value:w,configurable:!0,writable:!0}),w}}}export{B as bound};
|
|
2
|
-
|
|
3
|
-
//# debugId=002989A9EF405CB664756E2164756E21
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var y=((b)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(b,{get:(j,k)=>(typeof require<"u"?require:j)[k]}):b)(function(b){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+b+'" is not supported')});var q=Symbol.for("@ecopages/radiant.customElementTagName");function x(b,j){b[q]=j}function B(b){return b[q]}function H(b,j){return(k)=>{if(x(k,b),typeof customElements<"u"&&!customElements.get(b))customElements.define(b,k,j)}}export{H as customElement};
|
|
2
|
-
|
|
3
|
-
//# debugId=A99CB015E651C8C064756E2164756E21
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var f=((y)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(y,{get:(F,D)=>(typeof require<"u"?require:F)[D]}):y)(function(y){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+y+'" is not supported')});function P(y,F){let D=null,r=null,t,j=()=>{if(D!==null)clearTimeout(D),D=null},K=()=>{if(r===null)return t;let M=r;return r=null,j(),t=M(),t},E=function(...M){r=()=>y.apply(this,M),j(),D=setTimeout(()=>{K()},F)};return E.cancel=()=>{j(),r=null},E.flush=()=>{if(r===null)return t;return K()},E.pending=()=>r!==null,E}function q(y){return(F,D,r)=>{let t=r.value,j=new WeakMap;return r.value=function(...E){let M=j.get(this);if(!M)M=P((..._)=>{return t.apply(this,_)},y),j.set(this,M);M(...E)},r}}export{q as debounce};
|
|
2
|
-
|
|
3
|
-
//# debugId=BB1D62C7B0AC636264756E2164756E21
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var $=((B)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(B,{get:(D,H)=>(typeof require<"u"?require:D)[H]}):B)(function(B){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+B+'" is not supported')});var Q=Symbol.for("@ecopages/radiant.legacy-instance-initializers");function V(B,D){let M=B[Q];if(Array.isArray(M)){M.push(D);return}Object.defineProperty(B,Q,{value:[D],configurable:!0})}function k(B){let D=[],H=Object.getPrototypeOf(B);while(H&&H!==Object.prototype)D.push(H),H=Object.getPrototypeOf(H);for(let M=D.length-1;M>=0;M-=1){let O=D[M][Q];if(!Array.isArray(O))continue;for(let X of O)X(B)}}class U{host;eventConfig;constructor(B,D){this.host=B,this.eventConfig=D}emit(B){let D=new CustomEvent(this.eventConfig.name,{detail:B,bubbles:this.eventConfig.bubbles,cancelable:this.eventConfig.cancelable,composed:this.eventConfig.composed});this.host.dispatchEvent(D)}}function W(B,D){let H=new U(B,D);return B.registerEventEmitter(D.name,H),H}function Z(B){return(D,H)=>{V(D,(M)=>{let O=W(M,B);M.registerConnectedCallback(()=>{Object.defineProperty(M,H,{get(){return O},enumerable:!0,configurable:!0})})})}}export{Z as event};
|
|
2
|
-
|
|
3
|
-
//# debugId=A4AD67BA372E657C64756E2164756E21
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/decorators/legacy/instance-initializers.ts", "../src/tools/event-emitter.ts", "../src/helpers/create-event.ts", "../src/decorators/legacy/event.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"type LegacyInstanceInitializer<T extends object = object> = (instance: T) => void;\n\nconst LEGACY_INSTANCE_INITIALIZERS = Symbol.for('@ecopages/radiant.legacy-instance-initializers');\n\n/**\n * Registers per-instance initialization work for a legacy decorator.\n *\n * Legacy decorators execute against the prototype, so any initialization that\n * needs the concrete element instance must be deferred until construction time.\n */\nexport function registerLegacyInstanceInitializer<T extends object>(\n\tproto: T,\n\tinitializer: LegacyInstanceInitializer<T>,\n): void {\n\tconst target = proto as Record<PropertyKey, unknown>;\n\tconst ownInitializers = target[LEGACY_INSTANCE_INITIALIZERS];\n\n\tif (Array.isArray(ownInitializers)) {\n\t\townInitializers.push(initializer);\n\t\treturn;\n\t}\n\n\tObject.defineProperty(proto, LEGACY_INSTANCE_INITIALIZERS, {\n\t\tvalue: [initializer],\n\t\tconfigurable: true,\n\t});\n}\n\n/**\n * Runs all legacy decorator initializers for a newly constructed element.\n *\n * Initializers are collected from the prototype chain and executed from base to\n * derived class so inherited setup remains stable.\n */\nexport function runLegacyInstanceInitializers<T extends object>(instance: T): void {\n\tconst prototypes: object[] = [];\n\tlet currentPrototype = Object.getPrototypeOf(instance);\n\n\twhile (currentPrototype && currentPrototype !== Object.prototype) {\n\t\tprototypes.push(currentPrototype);\n\t\tcurrentPrototype = Object.getPrototypeOf(currentPrototype);\n\t}\n\n\tfor (let index = prototypes.length - 1; index >= 0; index -= 1) {\n\t\tconst initializers = (prototypes[index] as Record<PropertyKey, unknown>)[LEGACY_INSTANCE_INITIALIZERS] as\n\t\t\t| LegacyInstanceInitializer<T>[]\n\t\t\t| undefined;\n\n\t\tif (!Array.isArray(initializers)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor (const initializer of initializers) {\n\t\t\tinitializer(instance);\n\t\t}\n\t}\n}\n",
|
|
6
|
-
"import type { RadiantElement } from '../core/radiant-element';\n\nexport interface EventEmitterConfig {\n\tname: string;\n\tbubbles?: boolean;\n\tcancelable?: boolean;\n\tcomposed?: boolean;\n}\n\n/**\n * A generic event emitter class that allows emitting custom events.\n *\n * @template T - The type of the event detail.\n */\nexport class EventEmitter<T = unknown> {\n\tprivate host: RadiantElement;\n\tprivate eventConfig: EventEmitterConfig;\n\n\t/**\n\t * Constructs a new instance of the EventEmitter class.\n\t *\n\t * @param host - The host element on which the events will be dispatched.\n\t * @param eventConfig - The configuration for the event.\n\t */\n\tconstructor(host: RadiantElement, eventConfig: EventEmitterConfig) {\n\t\tthis.host = host;\n\t\tthis.eventConfig = eventConfig;\n\t}\n\n\t/**\n\t * Emits a custom event with the specified detail.\n\t *\n\t * @param detail - The detail object to be passed along with the event.\n\t */\n\temit(detail?: T) {\n\t\tconst event = new CustomEvent(this.eventConfig.name, {\n\t\t\tdetail: detail,\n\t\t\tbubbles: this.eventConfig.bubbles,\n\t\t\tcancelable: this.eventConfig.cancelable,\n\t\t\tcomposed: this.eventConfig.composed,\n\t\t});\n\t\tthis.host.dispatchEvent(event);\n\t}\n}\n",
|
|
7
|
-
"import type { RadiantElement } from '../core/radiant-element';\nimport { EventEmitter, type EventEmitterConfig } from '../tools/event-emitter';\n\n/**\n * Creates an EventEmitter bound to a host element and registers it on the host.\n * Functional equivalent of the `@event` decorator for vanilla JS usage.\n * @param host The host element that will dispatch the events.\n * @param config {@link EventEmitterConfig} The event emitter configuration.\n */\nexport function createEvent<T = unknown>(host: RadiantElement, config: EventEmitterConfig): EventEmitter<T> {\n\tconst emitter = new EventEmitter<T>(host, config);\n\thost.registerEventEmitter(config.name, emitter);\n\treturn emitter;\n}\n",
|
|
8
|
-
"import type { RadiantElement } from '../../core/radiant-element';\nimport { createEvent } from '../../helpers/create-event';\nimport type { EventEmitterConfig } from '../../tools/event-emitter';\nimport { registerLegacyInstanceInitializer } from './instance-initializers';\n\n/**\n * Decorator that attaches an EventEmitter to the class field property.\n * The EventEmitter can be used to dispatch custom events from the target element.\n * @param eventConfig Configuration for the event emitter.\n * @see {@link EventEmitter} for more details about how the EventEmitter works.\n */\nexport function event(eventConfig: EventEmitterConfig) {\n\treturn (proto: RadiantElement, propertyKey: string) => {\n\t\tregisterLegacyInstanceInitializer(proto, (element) => {\n\t\t\tconst emitter = createEvent(element, eventConfig);\n\n\t\t\telement.registerConnectedCallback(() => {\n\t\t\t\tObject.defineProperty(element, propertyKey, {\n\t\t\t\t\tget() {\n\t\t\t\t\t\treturn emitter;\n\t\t\t\t\t},\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t};\n}\n"
|
|
9
|
-
],
|
|
10
|
-
"mappings": "2PAEA,IAAM,EAA+B,OAAO,IAAI,gDAAgD,EAQzF,SAAS,CAAmD,CAClE,EACA,EACO,CAEP,IAAM,EADS,EACgB,GAE/B,GAAI,MAAM,QAAQ,CAAe,EAAG,CACnC,EAAgB,KAAK,CAAW,EAChC,OAGD,OAAO,eAAe,EAAO,EAA8B,CAC1D,MAAO,CAAC,CAAW,EACnB,aAAc,EACf,CAAC,EASK,SAAS,CAA+C,CAAC,EAAmB,CAClF,IAAM,EAAuB,CAAC,EAC1B,EAAmB,OAAO,eAAe,CAAQ,EAErD,MAAO,GAAoB,IAAqB,OAAO,UACtD,EAAW,KAAK,CAAgB,EAChC,EAAmB,OAAO,eAAe,CAAgB,EAG1D,QAAS,EAAQ,EAAW,OAAS,EAAG,GAAS,EAAG,GAAS,EAAG,CAC/D,IAAM,EAAgB,EAAW,GAAwC,GAIzE,GAAI,CAAC,MAAM,QAAQ,CAAY,EAC9B,SAGD,QAAW,KAAe,EACzB,EAAY,CAAQ,GCvChB,MAAM,CAA0B,CAC9B,KACA,YAQR,WAAW,CAAC,EAAsB,EAAiC,CAClE,KAAK,KAAO,EACZ,KAAK,YAAc,EAQpB,IAAI,CAAC,EAAY,CAChB,IAAM,EAAQ,IAAI,YAAY,KAAK,YAAY,KAAM,CACpD,OAAQ,EACR,QAAS,KAAK,YAAY,QAC1B,WAAY,KAAK,YAAY,WAC7B,SAAU,KAAK,YAAY,QAC5B,CAAC,EACD,KAAK,KAAK,cAAc,CAAK,EAE/B,CClCO,SAAS,CAAwB,CAAC,EAAsB,EAA6C,CAC3G,IAAM,EAAU,IAAI,EAAgB,EAAM,CAAM,EAEhD,OADA,EAAK,qBAAqB,EAAO,KAAM,CAAO,EACvC,ECDD,SAAS,CAAK,CAAC,EAAiC,CACtD,MAAO,CAAC,EAAuB,IAAwB,CACtD,EAAkC,EAAO,CAAC,IAAY,CACrD,IAAM,EAAU,EAAY,EAAS,CAAW,EAEhD,EAAQ,0BAA0B,IAAM,CACvC,OAAO,eAAe,EAAS,EAAa,CAC3C,GAAG,EAAG,CACL,OAAO,GAER,WAAY,GACZ,aAAc,EACf,CAAC,EACD,EACD",
|
|
11
|
-
"debugId": "A4AD67BA372E657C64756E2164756E21",
|
|
12
|
-
"names": []
|
|
13
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
type LegacyInstanceInitializer<T extends object = object> = (instance: T) => void;
|
|
2
|
-
/**
|
|
3
|
-
* Registers per-instance initialization work for a legacy decorator.
|
|
4
|
-
*
|
|
5
|
-
* Legacy decorators execute against the prototype, so any initialization that
|
|
6
|
-
* needs the concrete element instance must be deferred until construction time.
|
|
7
|
-
*/
|
|
8
|
-
export declare function registerLegacyInstanceInitializer<T extends object>(proto: T, initializer: LegacyInstanceInitializer<T>): void;
|
|
9
|
-
/**
|
|
10
|
-
* Runs all legacy decorator initializers for a newly constructed element.
|
|
11
|
-
*
|
|
12
|
-
* Initializers are collected from the prototype chain and executed from base to
|
|
13
|
-
* derived class so inherited setup remains stable.
|
|
14
|
-
*/
|
|
15
|
-
export declare function runLegacyInstanceInitializers<T extends object>(instance: T): void;
|
|
16
|
-
export {};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var J=((j)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(j,{get:(k,q)=>(typeof require<"u"?require:k)[q]}):j)(function(j){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+j+'" is not supported')});var D=Symbol.for("@ecopages/radiant.legacy-instance-initializers");function M(j,k){let B=j[D];if(Array.isArray(B)){B.push(k);return}Object.defineProperty(j,D,{value:[k],configurable:!0})}function O(j){let k=[],q=Object.getPrototypeOf(j);while(q&&q!==Object.prototype)k.push(q),q=Object.getPrototypeOf(q);for(let B=k.length-1;B>=0;B-=1){let F=k[B][D];if(!Array.isArray(F))continue;for(let H of F)H(j)}}export{O as runLegacyInstanceInitializers,M as registerLegacyInstanceInitializer};
|
|
2
|
-
|
|
3
|
-
//# debugId=1BB39F3AF54A4F4C64756E2164756E21
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/decorators/legacy/instance-initializers.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"type LegacyInstanceInitializer<T extends object = object> = (instance: T) => void;\n\nconst LEGACY_INSTANCE_INITIALIZERS = Symbol.for('@ecopages/radiant.legacy-instance-initializers');\n\n/**\n * Registers per-instance initialization work for a legacy decorator.\n *\n * Legacy decorators execute against the prototype, so any initialization that\n * needs the concrete element instance must be deferred until construction time.\n */\nexport function registerLegacyInstanceInitializer<T extends object>(\n\tproto: T,\n\tinitializer: LegacyInstanceInitializer<T>,\n): void {\n\tconst target = proto as Record<PropertyKey, unknown>;\n\tconst ownInitializers = target[LEGACY_INSTANCE_INITIALIZERS];\n\n\tif (Array.isArray(ownInitializers)) {\n\t\townInitializers.push(initializer);\n\t\treturn;\n\t}\n\n\tObject.defineProperty(proto, LEGACY_INSTANCE_INITIALIZERS, {\n\t\tvalue: [initializer],\n\t\tconfigurable: true,\n\t});\n}\n\n/**\n * Runs all legacy decorator initializers for a newly constructed element.\n *\n * Initializers are collected from the prototype chain and executed from base to\n * derived class so inherited setup remains stable.\n */\nexport function runLegacyInstanceInitializers<T extends object>(instance: T): void {\n\tconst prototypes: object[] = [];\n\tlet currentPrototype = Object.getPrototypeOf(instance);\n\n\twhile (currentPrototype && currentPrototype !== Object.prototype) {\n\t\tprototypes.push(currentPrototype);\n\t\tcurrentPrototype = Object.getPrototypeOf(currentPrototype);\n\t}\n\n\tfor (let index = prototypes.length - 1; index >= 0; index -= 1) {\n\t\tconst initializers = (prototypes[index] as Record<PropertyKey, unknown>)[LEGACY_INSTANCE_INITIALIZERS] as\n\t\t\t| LegacyInstanceInitializer<T>[]\n\t\t\t| undefined;\n\n\t\tif (!Array.isArray(initializers)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor (const initializer of initializers) {\n\t\t\tinitializer(instance);\n\t\t}\n\t}\n}\n"
|
|
6
|
-
],
|
|
7
|
-
"mappings": "2PAEA,IAAM,EAA+B,OAAO,IAAI,gDAAgD,EAQzF,SAAS,CAAmD,CAClE,EACA,EACO,CAEP,IAAM,EADS,EACgB,GAE/B,GAAI,MAAM,QAAQ,CAAe,EAAG,CACnC,EAAgB,KAAK,CAAW,EAChC,OAGD,OAAO,eAAe,EAAO,EAA8B,CAC1D,MAAO,CAAC,CAAW,EACnB,aAAc,EACf,CAAC,EASK,SAAS,CAA+C,CAAC,EAAmB,CAClF,IAAM,EAAuB,CAAC,EAC1B,EAAmB,OAAO,eAAe,CAAQ,EAErD,MAAO,GAAoB,IAAqB,OAAO,UACtD,EAAW,KAAK,CAAgB,EAChC,EAAmB,OAAO,eAAe,CAAgB,EAG1D,QAAS,EAAQ,EAAW,OAAS,EAAG,GAAS,EAAG,GAAS,EAAG,CAC/D,IAAM,EAAgB,EAAW,GAAwC,GAIzE,GAAI,CAAC,MAAM,QAAQ,CAAY,EAC9B,SAGD,QAAW,KAAe,EACzB,EAAY,CAAQ",
|
|
8
|
-
"debugId": "1BB39F3AF54A4F4C64756E2164756E21",
|
|
9
|
-
"names": []
|
|
10
|
-
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var T=(($)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy($,{get:(x,W)=>(typeof require<"u"?require:x)[W]}):$)(function($){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+$+'" is not supported')});var J=Symbol.for("@ecopages/radiant.legacy-instance-initializers");function G($,x){let j=$[J];if(Array.isArray(j)){j.push(x);return}Object.defineProperty($,J,{value:[x],configurable:!0})}function R($){let x=[],W=Object.getPrototypeOf($);while(W&&W!==Object.prototype)x.push(W),W=Object.getPrototypeOf(W);for(let j=x.length-1;j>=0;j-=1){let B=x[j][J];if(!Array.isArray(B))continue;for(let F of B)F($)}}function P($){let x=globalThis.CSS;if(typeof x?.escape==="function")return x.escape($);let W="";for(let j=0;j<$.length;j+=1){let B=$[j]??"",F=B.codePointAt(0)??0;if(F===0){W+="�";continue}let D=F>=1&&F<=31||F===127,Q=j===0&&F>=48&&F<=57,U=j===1&&F>=48&&F<=57&&($[0]??"")==="-",V=j===0&&B==="-"&&$.length===1;if(D||Q||U){W+=`\\${F.toString(16)} `;continue}if(F>=128||B==="-"||B==="_"||F>=48&&F<=57||F>=65&&F<=90||F>=97&&F<=122){W+=V?`\\${B}`:B;continue}W+=`\\${B}`}return W}var X=Symbol("radiant.shadowRootListenerHooks"),Y=Symbol("radiant.patchedAttachShadow");function _($){if($ instanceof Element)return $;if("host"in $)return $.host;return $.element}function N($){return!($ instanceof Element)}function Z($,x,W,j){let B=(F)=>{if(F.target instanceof Element&&F.target.matches(W))j(F)};return $.addEventListener(x.type,B,x.options),()=>{$.removeEventListener(x.type,B,x.options)}}function S($,x){let W=_($);if(!W[X])W[X]=new Set;if(W[X].add(x),W[Y])return;let j=W.attachShadow;W.attachShadow=function(F){let D=j.call(this,F);for(let Q of W[X]??[])Q();return D},W[Y]=!0}function K($,x,W){if(N($)&&"scope"in x&&x.scope&&x.scope!=="light")throw Error("RadiantController event listeners only support light DOM scope.");let j=_($),B=W.bind($),F=null,D=null,Q=null,U=null,V=!1,O=()=>{F?.(),D?.(),Q?.(),U?.(),F=null,D=null,Q=null,U=null},q=()=>{if(V)return;if("window"in x&&!F)window.addEventListener(x.type,B,x.options),F=()=>{window.removeEventListener(x.type,B,x.options)};if("document"in x&&!D)document.addEventListener(x.type,B,x.options),D=()=>{document.removeEventListener(x.type,B,x.options)};if("selector"in x||"ref"in x){let M="selector"in x?x.selector:`[data-ref='${P(x.ref)}']`;if(x.scope!=="shadow"&&!Q)Q=Z(j,x,M,B);if(x.scope!=="light"&&j.shadowRoot&&!U)U=Z(j.shadowRoot,x,M,B)}};if("selector"in x||"ref"in x){if(x.scope!=="light")S($,()=>{if($.isConnected)q()})}if($.registerConnectedCallback(q),$.registerCleanupCallback(O),$.isConnected)q();return()=>{V=!0,O()}}function I($){return(x,W,j)=>{let B=j.value;return G(x,(F)=>{K(F,$,B.bind(F))}),j}}export{I as onEvent};
|
|
2
|
-
|
|
3
|
-
//# debugId=4C4792837982983364756E2164756E21
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/decorators/legacy/instance-initializers.ts", "../src/tools/escape-css-identifier.ts", "../src/helpers/create-event-listener.ts", "../src/decorators/legacy/on-event.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"type LegacyInstanceInitializer<T extends object = object> = (instance: T) => void;\n\nconst LEGACY_INSTANCE_INITIALIZERS = Symbol.for('@ecopages/radiant.legacy-instance-initializers');\n\n/**\n * Registers per-instance initialization work for a legacy decorator.\n *\n * Legacy decorators execute against the prototype, so any initialization that\n * needs the concrete element instance must be deferred until construction time.\n */\nexport function registerLegacyInstanceInitializer<T extends object>(\n\tproto: T,\n\tinitializer: LegacyInstanceInitializer<T>,\n): void {\n\tconst target = proto as Record<PropertyKey, unknown>;\n\tconst ownInitializers = target[LEGACY_INSTANCE_INITIALIZERS];\n\n\tif (Array.isArray(ownInitializers)) {\n\t\townInitializers.push(initializer);\n\t\treturn;\n\t}\n\n\tObject.defineProperty(proto, LEGACY_INSTANCE_INITIALIZERS, {\n\t\tvalue: [initializer],\n\t\tconfigurable: true,\n\t});\n}\n\n/**\n * Runs all legacy decorator initializers for a newly constructed element.\n *\n * Initializers are collected from the prototype chain and executed from base to\n * derived class so inherited setup remains stable.\n */\nexport function runLegacyInstanceInitializers<T extends object>(instance: T): void {\n\tconst prototypes: object[] = [];\n\tlet currentPrototype = Object.getPrototypeOf(instance);\n\n\twhile (currentPrototype && currentPrototype !== Object.prototype) {\n\t\tprototypes.push(currentPrototype);\n\t\tcurrentPrototype = Object.getPrototypeOf(currentPrototype);\n\t}\n\n\tfor (let index = prototypes.length - 1; index >= 0; index -= 1) {\n\t\tconst initializers = (prototypes[index] as Record<PropertyKey, unknown>)[LEGACY_INSTANCE_INITIALIZERS] as\n\t\t\t| LegacyInstanceInitializer<T>[]\n\t\t\t| undefined;\n\n\t\tif (!Array.isArray(initializers)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor (const initializer of initializers) {\n\t\t\tinitializer(instance);\n\t\t}\n\t}\n}\n",
|
|
6
|
-
"export function escapeCssIdentifier(value: string): string {\n\tconst cssNamespace = globalThis.CSS as { escape?: (value: string) => string } | undefined;\n\n\tif (typeof cssNamespace?.escape === 'function') {\n\t\treturn cssNamespace.escape(value);\n\t}\n\n\tlet escaped = '';\n\n\tfor (let index = 0; index < value.length; index += 1) {\n\t\tconst character = value[index] ?? '';\n\t\tconst codePoint = character.codePointAt(0) ?? 0;\n\n\t\tif (codePoint === 0) {\n\t\t\tescaped += '\\uFFFD';\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst isControlCharacter = (codePoint >= 0x0001 && codePoint <= 0x001f) || codePoint === 0x007f;\n\t\tconst startsWithDigit = index === 0 && codePoint >= 0x0030 && codePoint <= 0x0039;\n\t\tconst startsWithHyphenDigit =\n\t\t\tindex === 1 &&\n\t\t\tcodePoint >= 0x0030 &&\n\t\t\tcodePoint <= 0x0039 &&\n\t\t\t(value[0] ?? '') === '-';\n\t\tconst isSingleHyphen = index === 0 && character === '-' && value.length === 1;\n\n\t\tif (isControlCharacter || startsWithDigit || startsWithHyphenDigit) {\n\t\t\tescaped += `\\\\${codePoint.toString(16)} `;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (\n\t\t\tcodePoint >= 0x0080 ||\n\t\t\tcharacter === '-' ||\n\t\t\tcharacter === '_' ||\n\t\t\t(codePoint >= 0x0030 && codePoint <= 0x0039) ||\n\t\t\t(codePoint >= 0x0041 && codePoint <= 0x005a) ||\n\t\t\t(codePoint >= 0x0061 && codePoint <= 0x007a)\n\t\t) {\n\t\t\tescaped += isSingleHyphen ? `\\\\${character}` : character;\n\t\t\tcontinue;\n\t\t}\n\n\t\tescaped += `\\\\${character}`;\n\t}\n\n\treturn escaped;\n}",
|
|
7
|
-
"import type { RadiantElementEventListener } from '../core/radiant-element';\nimport { escapeCssIdentifier } from '../tools/escape-css-identifier';\n\n/**\n * Selects which DOM tree delegated event listeners should observe.\n */\nexport type OnEventScope = 'light' | 'shadow' | 'both';\n\ntype BaseOnEventConfig = Pick<RadiantElementEventListener, 'type' | 'options'> & {\n\tscope?: OnEventScope;\n};\n\nexport type OnEventConfig = BaseOnEventConfig &\n\t(\n\t\t| {\n\t\t\t\tselector: string;\n\t\t }\n\t\t| {\n\t\t\t\tref: string;\n\t\t }\n\t\t| {\n\t\t\t\twindow: true;\n\t\t }\n\t\t| {\n\t\t\t\tdocument: true;\n\t\t }\n\t);\n\ntype DelegatedEventRoot = Element | ShadowRoot;\n\ntype EventListenerLifecycleHost = {\n\tregisterConnectedCallback(callback: () => void): void;\n\tregisterCleanupCallback(callback: () => void): void;\n\tisConnected: boolean;\n};\n\nexport type EventListenerHost =\n\t| (EventListenerLifecycleHost & Element)\n\t| (EventListenerLifecycleHost & { host: Element })\n\t| (EventListenerLifecycleHost & { element: Element });\n\nconst shadowRootListenerHooksKey = Symbol('radiant.shadowRootListenerHooks');\nconst patchedAttachShadowKey = Symbol('radiant.patchedAttachShadow');\n\ntype ShadowRootHookHost = Element & {\n\t[patchedAttachShadowKey]?: true;\n\t[shadowRootListenerHooksKey]?: Set<() => void>;\n};\n\nfunction resolveEventListenerHostElement(host: EventListenerHost): Element {\n\tif (host instanceof Element) {\n\t\treturn host;\n\t}\n\n\tif ('host' in host) {\n\t\treturn host.host;\n\t}\n\n\treturn host.element;\n}\n\nfunction isControllerEventHost(host: EventListenerHost): host is EventListenerLifecycleHost & { host: Element } {\n\treturn !(host instanceof Element);\n}\n\nfunction addDelegatedListener(\n\troot: DelegatedEventRoot,\n\tconfig: Pick<OnEventConfig, 'type' | 'options'>,\n\tselector: string,\n\tlistener: EventListener,\n): () => void {\n\tconst delegatedListener = (event: Event) => {\n\t\tif (event.target instanceof Element && event.target.matches(selector)) {\n\t\t\tlistener(event);\n\t\t}\n\t};\n\n\troot.addEventListener(config.type, delegatedListener, config.options);\n\n\treturn () => {\n\t\troot.removeEventListener(config.type, delegatedListener, config.options);\n\t};\n}\n\nfunction registerShadowRootHook(host: EventListenerHost, hook: () => void): void {\n\tconst shadowAwareHost = resolveEventListenerHostElement(host) as ShadowRootHookHost;\n\n\tif (!shadowAwareHost[shadowRootListenerHooksKey]) {\n\t\tshadowAwareHost[shadowRootListenerHooksKey] = new Set();\n\t}\n\n\tshadowAwareHost[shadowRootListenerHooksKey].add(hook);\n\n\tif (shadowAwareHost[patchedAttachShadowKey]) {\n\t\treturn;\n\t}\n\n\tconst originalAttachShadow = shadowAwareHost.attachShadow;\n\n\tshadowAwareHost.attachShadow = function patchedAttachShadow(init: ShadowRootInit): ShadowRoot {\n\t\tconst shadowRoot = originalAttachShadow.call(this, init);\n\t\tfor (const shadowRootHook of shadowAwareHost[shadowRootListenerHooksKey] ?? []) {\n\t\t\tshadowRootHook();\n\t\t}\n\t\treturn shadowRoot;\n\t};\n\n\tshadowAwareHost[patchedAttachShadowKey] = true;\n}\n\n/**\n * Subscribes to a DOM event with delegation, window, or document targeting.\n * Functional equivalent of the `@onEvent` decorator for vanilla JS usage.\n * Returns a cleanup function to remove the listener.\n * @param host The host RadiantElement.\n * @param config The event listener configuration.\n * @param callback The event handler function.\n */\nexport function createEventListener(\n\thost: EventListenerHost,\n\tconfig: OnEventConfig,\n\tcallback: (event: Event) => void,\n): () => void {\n\tif (isControllerEventHost(host) && 'scope' in config && config.scope && config.scope !== 'light') {\n\t\tthrow new Error('RadiantController event listeners only support light DOM scope.');\n\t}\n\n\tconst hostElement = resolveEventListenerHostElement(host);\n\tconst boundCallback = callback.bind(host);\n\tlet windowCleanup: (() => void) | null = null;\n\tlet documentCleanup: (() => void) | null = null;\n\tlet lightCleanup: (() => void) | null = null;\n\tlet shadowCleanup: (() => void) | null = null;\n\tlet disposed = false;\n\n\tconst detachListeners = () => {\n\t\twindowCleanup?.();\n\t\tdocumentCleanup?.();\n\t\tlightCleanup?.();\n\t\tshadowCleanup?.();\n\n\t\twindowCleanup = null;\n\t\tdocumentCleanup = null;\n\t\tlightCleanup = null;\n\t\tshadowCleanup = null;\n\t};\n\n\tconst attachListeners = () => {\n\t\tif (disposed) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ('window' in config && !windowCleanup) {\n\t\t\twindow.addEventListener(config.type, boundCallback, config.options);\n\t\t\twindowCleanup = () => {\n\t\t\t\twindow.removeEventListener(config.type, boundCallback, config.options);\n\t\t\t};\n\t\t}\n\n\t\tif ('document' in config && !documentCleanup) {\n\t\t\tdocument.addEventListener(config.type, boundCallback, config.options);\n\t\t\tdocumentCleanup = () => {\n\t\t\t\tdocument.removeEventListener(config.type, boundCallback, config.options);\n\t\t\t};\n\t\t}\n\n\t\tif ('selector' in config || 'ref' in config) {\n\t\t\tconst selector = 'selector' in config ? config.selector : `[data-ref='${escapeCssIdentifier(config.ref)}']`;\n\n\t\t\tif (config.scope !== 'shadow' && !lightCleanup) {\n\t\t\t\tlightCleanup = addDelegatedListener(hostElement, config, selector, boundCallback);\n\t\t\t}\n\n\t\t\tif (config.scope !== 'light' && hostElement.shadowRoot && !shadowCleanup) {\n\t\t\t\tshadowCleanup = addDelegatedListener(hostElement.shadowRoot, config, selector, boundCallback);\n\t\t\t}\n\t\t}\n\t};\n\n\tif ('selector' in config || 'ref' in config) {\n\t\tif (config.scope !== 'light') {\n\t\t\tregisterShadowRootHook(host, () => {\n\t\t\t\tif (host.isConnected) {\n\t\t\t\t\tattachListeners();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\thost.registerConnectedCallback(attachListeners);\n\thost.registerCleanupCallback(detachListeners);\n\n\tif (host.isConnected) {\n\t\tattachListeners();\n\t}\n\n\treturn () => {\n\t\tdisposed = true;\n\t\tdetachListeners();\n\t};\n}\n",
|
|
8
|
-
"import { createEventListener, type EventListenerHost } from '../../helpers/create-event-listener';\nimport type { OnEventConfig } from '../on-event';\nimport { registerLegacyInstanceInitializer } from './instance-initializers';\n\n/**\n * A decorator to subscribe to an event on the target element.\n * The event listener will be automatically unsubscribed when the element is disconnected.\n *\n * Note: This decorator uses event delegation, which means it relies on event bubbling.\n * Therefore, it will not work with events that do not bubble, such as `focus`, `blur`, `load`, `unload`, `scroll`, etc.\n * For focus and blur events, consider using `focusin` and `focusout` which are similar but do bubble.\n *\n * @param eventConfig The event configuration.\n * @param eventConfig.selectors The CSS selector(s) of the target element(s).\n * @param eventConfig.ref The data-ref attribute of the target element.\n * @param eventConfig.type The type of the event to listen for.\n * @param eventConfig.options Optional. An options object that specifies characteristics about the event listener.\n */\nexport function onEvent(eventConfig: OnEventConfig) {\n\treturn (proto: EventListenerHost, _: string, descriptor: PropertyDescriptor) => {\n\t\tconst originalMethod = descriptor.value;\n\n\t\tregisterLegacyInstanceInitializer(proto, (element) => {\n\t\t\tcreateEventListener(element, eventConfig, originalMethod.bind(element));\n\t\t});\n\n\t\treturn descriptor;\n\t};\n}\n"
|
|
9
|
-
],
|
|
10
|
-
"mappings": "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",
|
|
11
|
-
"debugId": "4C4792837982983364756E2164756E21",
|
|
12
|
-
"names": []
|
|
13
|
-
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var W=((j)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(j,{get:(D,B)=>(typeof require<"u"?require:D)[B]}):j)(function(j){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+j+'" is not supported')});var U=Symbol.for("@ecopages/radiant.legacy-instance-initializers");function V(j,D){let F=j[U];if(Array.isArray(F)){F.push(D);return}Object.defineProperty(j,U,{value:[D],configurable:!0})}function $(j){let D=[],B=Object.getPrototypeOf(j);while(B&&B!==Object.prototype)D.push(B),B=Object.getPrototypeOf(B);for(let F=D.length-1;F>=0;F-=1){let q=D[F][U];if(!Array.isArray(q))continue;for(let H of q)H(j)}}function f(j){return(D,B)=>{let F=Symbol(`@ecopages/radiant/on-updated:${B}:cleanup`);V(D,(q)=>{q.registerConnectedCallback(()=>{let H=q[B].bind(q),J=[];if(Array.isArray(j))for(let Q of j)J.push(q.registerUpdateCallback(Q,H));else if(typeof j==="string")J.push(q.registerUpdateCallback(j,H));q[F]=()=>{for(let Q of J)Q()}}),q.registerCleanupCallback(()=>{let H=q[F];if(typeof H==="function")H(),delete q[F]})})}}export{f as onUpdated};
|
|
2
|
-
|
|
3
|
-
//# debugId=9AC906AAB7417FC664756E2164756E21
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/decorators/legacy/instance-initializers.ts", "../src/decorators/legacy/on-updated.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"type LegacyInstanceInitializer<T extends object = object> = (instance: T) => void;\n\nconst LEGACY_INSTANCE_INITIALIZERS = Symbol.for('@ecopages/radiant.legacy-instance-initializers');\n\n/**\n * Registers per-instance initialization work for a legacy decorator.\n *\n * Legacy decorators execute against the prototype, so any initialization that\n * needs the concrete element instance must be deferred until construction time.\n */\nexport function registerLegacyInstanceInitializer<T extends object>(\n\tproto: T,\n\tinitializer: LegacyInstanceInitializer<T>,\n): void {\n\tconst target = proto as Record<PropertyKey, unknown>;\n\tconst ownInitializers = target[LEGACY_INSTANCE_INITIALIZERS];\n\n\tif (Array.isArray(ownInitializers)) {\n\t\townInitializers.push(initializer);\n\t\treturn;\n\t}\n\n\tObject.defineProperty(proto, LEGACY_INSTANCE_INITIALIZERS, {\n\t\tvalue: [initializer],\n\t\tconfigurable: true,\n\t});\n}\n\n/**\n * Runs all legacy decorator initializers for a newly constructed element.\n *\n * Initializers are collected from the prototype chain and executed from base to\n * derived class so inherited setup remains stable.\n */\nexport function runLegacyInstanceInitializers<T extends object>(instance: T): void {\n\tconst prototypes: object[] = [];\n\tlet currentPrototype = Object.getPrototypeOf(instance);\n\n\twhile (currentPrototype && currentPrototype !== Object.prototype) {\n\t\tprototypes.push(currentPrototype);\n\t\tcurrentPrototype = Object.getPrototypeOf(currentPrototype);\n\t}\n\n\tfor (let index = prototypes.length - 1; index >= 0; index -= 1) {\n\t\tconst initializers = (prototypes[index] as Record<PropertyKey, unknown>)[LEGACY_INSTANCE_INITIALIZERS] as\n\t\t\t| LegacyInstanceInitializer<T>[]\n\t\t\t| undefined;\n\n\t\tif (!Array.isArray(initializers)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor (const initializer of initializers) {\n\t\t\tinitializer(instance);\n\t\t}\n\t}\n}\n",
|
|
6
|
-
"type LegacyUpdatedHost = {\n\tregisterCleanupCallback(callback: () => void): void;\n\tregisterConnectedCallback(callback: () => void): void;\n\tregisterUpdateCallback(key: string, update: (...rest: any[]) => any): () => void;\n};\n\nimport { registerLegacyInstanceInitializer } from './instance-initializers';\n\n/**\n * A decorator to subscribe to an updated callback when a reactive field or property changes.\n * @param eventConfig The event configuration.\n */\nexport function onUpdated(keyOrKeys: string | string[]) {\n\treturn (target: LegacyUpdatedHost, methodName: string) => {\n\t\tconst cleanupKey = Symbol(`@ecopages/radiant/on-updated:${methodName}:cleanup`);\n\n\t\tregisterLegacyInstanceInitializer(target, (element) => {\n\t\t\telement.registerConnectedCallback(() => {\n\t\t\t\tconst boundedMethod = (element as any)[methodName].bind(element);\n\t\t\t\tconst cleanups: Array<() => void> = [];\n\n\t\t\t\tif (Array.isArray(keyOrKeys)) {\n\t\t\t\t\tfor (const key of keyOrKeys) {\n\t\t\t\t\t\tcleanups.push(element.registerUpdateCallback(key, boundedMethod));\n\t\t\t\t\t}\n\t\t\t\t} else if (typeof keyOrKeys === 'string') {\n\t\t\t\t\tcleanups.push(element.registerUpdateCallback(keyOrKeys, boundedMethod));\n\t\t\t\t}\n\n\t\t\t\t(element as unknown as Record<PropertyKey, unknown>)[cleanupKey] = () => {\n\t\t\t\t\tfor (const cleanup of cleanups) {\n\t\t\t\t\t\tcleanup();\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t});\n\n\t\t\telement.registerCleanupCallback(() => {\n\t\t\t\tconst cleanup = (element as unknown as Record<PropertyKey, unknown>)[cleanupKey];\n\n\t\t\t\tif (typeof cleanup === 'function') {\n\t\t\t\t\tcleanup();\n\t\t\t\t\tdelete (element as unknown as Record<PropertyKey, unknown>)[cleanupKey];\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t};\n}\n"
|
|
7
|
-
],
|
|
8
|
-
"mappings": "2PAEA,IAAM,EAA+B,OAAO,IAAI,gDAAgD,EAQzF,SAAS,CAAmD,CAClE,EACA,EACO,CAEP,IAAM,EADS,EACgB,GAE/B,GAAI,MAAM,QAAQ,CAAe,EAAG,CACnC,EAAgB,KAAK,CAAW,EAChC,OAGD,OAAO,eAAe,EAAO,EAA8B,CAC1D,MAAO,CAAC,CAAW,EACnB,aAAc,EACf,CAAC,EASK,SAAS,CAA+C,CAAC,EAAmB,CAClF,IAAM,EAAuB,CAAC,EAC1B,EAAmB,OAAO,eAAe,CAAQ,EAErD,MAAO,GAAoB,IAAqB,OAAO,UACtD,EAAW,KAAK,CAAgB,EAChC,EAAmB,OAAO,eAAe,CAAgB,EAG1D,QAAS,EAAQ,EAAW,OAAS,EAAG,GAAS,EAAG,GAAS,EAAG,CAC/D,IAAM,EAAgB,EAAW,GAAwC,GAIzE,GAAI,CAAC,MAAM,QAAQ,CAAY,EAC9B,SAGD,QAAW,KAAe,EACzB,EAAY,CAAQ,GCzChB,SAAS,CAAS,CAAC,EAA8B,CACvD,MAAO,CAAC,EAA2B,IAAuB,CACzD,IAAM,EAAa,OAAO,gCAAgC,WAAoB,EAE9E,EAAkC,EAAQ,CAAC,IAAY,CACtD,EAAQ,0BAA0B,IAAM,CACvC,IAAM,EAAiB,EAAgB,GAAY,KAAK,CAAO,EACzD,EAA8B,CAAC,EAErC,GAAI,MAAM,QAAQ,CAAS,EAC1B,QAAW,KAAO,EACjB,EAAS,KAAK,EAAQ,uBAAuB,EAAK,CAAa,CAAC,EAE3D,QAAI,OAAO,IAAc,SAC/B,EAAS,KAAK,EAAQ,uBAAuB,EAAW,CAAa,CAAC,EAGtE,EAAoD,GAAc,IAAM,CACxE,QAAW,KAAW,EACrB,EAAQ,GAGV,EAED,EAAQ,wBAAwB,IAAM,CACrC,IAAM,EAAW,EAAoD,GAErE,GAAI,OAAO,IAAY,WACtB,EAAQ,EACR,OAAQ,EAAoD,GAE7D,EACD",
|
|
9
|
-
"debugId": "9AC906AAB7417FC664756E2164756E21",
|
|
10
|
-
"names": []
|
|
11
|
-
}
|