@pwfabric/runtime 1.0.0-rc.0 → 1.0.0-rc.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 +35 -5
- package/dist/a11y/announcer.d.ts +0 -1
- package/dist/a11y/announcer.js.map +1 -1
- package/dist/a11y/contrast.d.ts +0 -1
- package/dist/a11y/contrast.js.map +1 -1
- package/dist/a11y/focus.d.ts +0 -1
- package/dist/a11y/focus.js.map +1 -1
- package/dist/a11y/index.d.ts +0 -1
- package/dist/a11y/index.js.map +1 -1
- package/dist/a11y/keyboard.d.ts +0 -1
- package/dist/a11y/keyboard.js.map +1 -1
- package/dist/adapters/default-image.d.ts +0 -1
- package/dist/adapters/default-image.js.map +1 -1
- package/dist/adapters/index.d.ts +0 -1
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/next-image.d.ts +0 -1
- package/dist/adapters/next-image.js.map +1 -1
- package/dist/adapters/types.d.ts +0 -1
- package/dist/adapters/types.js.map +1 -1
- package/dist/analytics/index.d.ts +0 -1
- package/dist/analytics/index.js.map +1 -1
- package/dist/analytics/tracker.d.ts +0 -1
- package/dist/analytics/tracker.js.map +1 -1
- package/dist/analytics/types.d.ts +0 -1
- package/dist/analytics/types.js.map +1 -1
- package/dist/auth/index.d.ts +0 -1
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/provider.d.ts +0 -1
- package/dist/auth/provider.js.map +1 -1
- package/dist/auth/types.d.ts +0 -1
- package/dist/auth/types.js.map +1 -1
- package/dist/binding/collection.d.ts +0 -1
- package/dist/binding/collection.js.map +1 -1
- package/dist/binding/datasource.d.ts +0 -1
- package/dist/binding/datasource.js.map +1 -1
- package/dist/binding/engine.d.ts +0 -1
- package/dist/binding/engine.js.map +1 -1
- package/dist/binding/expression.d.ts +0 -1
- package/dist/binding/expression.js.map +1 -1
- package/dist/binding/index.d.ts +0 -1
- package/dist/binding/index.js.map +1 -1
- package/dist/binding/two-way.d.ts +0 -1
- package/dist/binding/two-way.js.map +1 -1
- package/dist/binding/types.d.ts +0 -1
- package/dist/binding/types.js.map +1 -1
- package/dist/blocks/component-types.d.ts +0 -1
- package/dist/blocks/component-types.js.map +1 -1
- package/dist/blocks/composition-rules.d.ts +0 -1
- package/dist/blocks/composition-rules.js.map +1 -1
- package/dist/blocks/hooks.d.ts +0 -1
- package/dist/blocks/hooks.js.map +1 -1
- package/dist/blocks/index.d.ts +0 -2
- package/dist/blocks/index.js +5 -6
- package/dist/blocks/index.js.map +1 -1
- package/dist/blocks/registry.d.ts +0 -1
- package/dist/blocks/registry.js.map +1 -1
- package/dist/blocks/rule-engine.d.ts +0 -1
- package/dist/blocks/rule-engine.js.map +1 -1
- package/dist/blocks/surface-event-context.d.ts +0 -1
- package/dist/blocks/surface-event-context.js.map +1 -1
- package/dist/blocks/surface-id-context.d.ts +0 -1
- package/dist/blocks/surface-id-context.js.map +1 -1
- package/dist/bus.d.ts +0 -1
- package/dist/bus.js.map +1 -1
- package/dist/cache/index.d.ts +0 -1
- package/dist/cache/index.js.map +1 -1
- package/dist/cache/memory.d.ts +0 -1
- package/dist/cache/memory.js.map +1 -1
- package/dist/cache/types.d.ts +0 -1
- package/dist/cache/types.js.map +1 -1
- package/dist/capability/index.d.ts +0 -1
- package/dist/capability/index.js.map +1 -1
- package/dist/capability/kernel-capabilities.d.ts +0 -1
- package/dist/capability/kernel-capabilities.js.map +1 -1
- package/dist/capability/platform-capabilities.d.ts +0 -1
- package/dist/capability/platform-capabilities.js.map +1 -1
- package/dist/capability/type-mapping.d.ts +0 -1
- package/dist/capability/type-mapping.js.map +1 -1
- package/dist/capability/validation.d.ts +0 -1
- package/dist/capability/validation.js.map +1 -1
- package/dist/connectors/declared-connector.d.ts +0 -1
- package/dist/connectors/declared-connector.js.map +1 -1
- package/dist/connectors/engine-registry.d.ts +0 -1
- package/dist/connectors/engine-registry.js.map +1 -1
- package/dist/connectors/index.d.ts +0 -1
- package/dist/connectors/index.js.map +1 -1
- package/dist/connectors/module-loader.d.ts +0 -1
- package/dist/connectors/module-loader.js.map +1 -1
- package/dist/connectors/types.d.ts +0 -1
- package/dist/connectors/types.js.map +1 -1
- package/dist/context.d.ts +0 -1
- package/dist/context.js.map +1 -1
- package/dist/data/DataCapabilityProvider.d.ts +0 -1
- package/dist/data/DataCapabilityProvider.js.map +1 -1
- package/dist/data/index.d.ts +0 -1
- package/dist/data/index.js.map +1 -1
- package/dist/data/manager.d.ts +0 -1
- package/dist/data/manager.js.map +1 -1
- package/dist/data/types.d.ts +0 -1
- package/dist/data/types.js.map +1 -1
- package/dist/entity/aggregate.d.ts +0 -1
- package/dist/entity/aggregate.js.map +1 -1
- package/dist/entity/apply-query.d.ts +0 -1
- package/dist/entity/apply-query.js.map +1 -1
- package/dist/entity/behavior.d.ts +0 -1
- package/dist/entity/behavior.js.map +1 -1
- package/dist/entity/connector.d.ts +0 -1
- package/dist/entity/connector.js.map +1 -1
- package/dist/entity/connectors/index.d.ts +0 -1
- package/dist/entity/connectors/index.js.map +1 -1
- package/dist/entity/connectors/static.d.ts +0 -1
- package/dist/entity/connectors/static.js.map +1 -1
- package/dist/entity/entity-datasource.d.ts +0 -1
- package/dist/entity/entity-datasource.js.map +1 -1
- package/dist/entity/facade.d.ts +0 -1
- package/dist/entity/facade.js.map +1 -1
- package/dist/entity/http-connector.d.ts +0 -1
- package/dist/entity/http-connector.js.map +1 -1
- package/dist/entity/index.d.ts +0 -1
- package/dist/entity/index.js.map +1 -1
- package/dist/entity/postgres-connector.d.ts +0 -1
- package/dist/entity/postgres-connector.js.map +1 -1
- package/dist/entity/registry.d.ts +0 -1
- package/dist/entity/registry.js.map +1 -1
- package/dist/entity/store.d.ts +0 -1
- package/dist/entity/store.js.map +1 -1
- package/dist/entity/types.d.ts +0 -1
- package/dist/entity/types.js.map +1 -1
- package/dist/execution-context.d.ts +0 -1
- package/dist/execution-context.js.map +1 -1
- package/dist/executor.d.ts +0 -1
- package/dist/executor.js.map +1 -1
- package/dist/forms/form-entity-bridge.d.ts +0 -1
- package/dist/forms/form-entity-bridge.js.map +1 -1
- package/dist/forms/form-write-target.d.ts +0 -1
- package/dist/forms/form-write-target.js.map +1 -1
- package/dist/forms/index.d.ts +0 -1
- package/dist/forms/index.js.map +1 -1
- package/dist/forms/named-control-values.d.ts +0 -1
- package/dist/forms/named-control-values.js.map +1 -1
- package/dist/forms/processor.d.ts +0 -1
- package/dist/forms/processor.js.map +1 -1
- package/dist/forms/types.d.ts +0 -1
- package/dist/forms/types.js.map +1 -1
- package/dist/forms/validator.d.ts +0 -1
- package/dist/forms/validator.js.map +1 -1
- package/dist/graph/index.d.ts +0 -1
- package/dist/graph/index.js.map +1 -1
- package/dist/graph/resolver.d.ts +0 -1
- package/dist/graph/resolver.js.map +1 -1
- package/dist/graph/types.d.ts +0 -1
- package/dist/graph/types.js.map +1 -1
- package/dist/hooks/useInstalledAtoms.d.ts +0 -1
- package/dist/hooks/useInstalledAtoms.js.map +1 -1
- package/dist/i18n/index.d.ts +0 -1
- package/dist/i18n/index.js.map +1 -1
- package/dist/i18n/translator.d.ts +0 -1
- package/dist/i18n/translator.js.map +1 -1
- package/dist/i18n/types.d.ts +0 -1
- package/dist/i18n/types.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js.map +1 -1
- package/dist/kernel.d.ts +0 -1
- package/dist/kernel.js.map +1 -1
- package/dist/perf/budget.d.ts +0 -1
- package/dist/perf/budget.js.map +1 -1
- package/dist/perf/index.d.ts +0 -1
- package/dist/perf/index.js.map +1 -1
- package/dist/perf/render-timer.d.ts +0 -1
- package/dist/perf/render-timer.js.map +1 -1
- package/dist/perf/reporter.d.ts +0 -1
- package/dist/perf/reporter.js.map +1 -1
- package/dist/perf/web-vitals.d.ts +0 -1
- package/dist/perf/web-vitals.js.map +1 -1
- package/dist/registry.d.ts +0 -1
- package/dist/registry.js.map +1 -1
- package/dist/render/BehaviorSurfaceProvider.d.ts +0 -1
- package/dist/render/BehaviorSurfaceProvider.js.map +1 -1
- package/dist/render/BlockErrorBoundary.d.ts +0 -1
- package/dist/render/BlockErrorBoundary.js.map +1 -1
- package/dist/render/DataBoundSurfaceRenderer.d.ts +0 -1
- package/dist/render/DataBoundSurfaceRenderer.js.map +1 -1
- package/dist/render/DynamicBlockWrapper.d.ts +0 -1
- package/dist/render/DynamicBlockWrapper.js.map +1 -1
- package/dist/render/appearance-resolver.d.ts +0 -1
- package/dist/render/appearance-resolver.js.map +1 -1
- package/dist/render/capability-gate.d.ts +0 -1
- package/dist/render/capability-gate.js.map +1 -1
- package/dist/render/conditional-states-css.d.ts +0 -1
- package/dist/render/conditional-states-css.js.map +1 -1
- package/dist/render/connections-context.d.ts +0 -1
- package/dist/render/connections-context.js.map +1 -1
- package/dist/render/dark-theme-css.d.ts +0 -1
- package/dist/render/dark-theme-css.js.map +1 -1
- package/dist/render/data-binding-types.d.ts +0 -1
- package/dist/render/data-binding-types.js.map +1 -1
- package/dist/render/data-cache.d.ts +0 -1
- package/dist/render/data-cache.js.map +1 -1
- package/dist/render/derive-dark-theme.d.ts +0 -1
- package/dist/render/derive-dark-theme.js.map +1 -1
- package/dist/render/dynamic-artifact-context.d.ts +0 -1
- package/dist/render/dynamic-artifact-context.js.map +1 -1
- package/dist/render/dynamic-block-loader.d.ts +0 -1
- package/dist/render/dynamic-block-loader.js.map +1 -1
- package/dist/render/endpoint.d.ts +0 -1
- package/dist/render/endpoint.js.map +1 -1
- package/dist/render/entity-facade-context.d.ts +0 -1
- package/dist/render/entity-facade-context.js.map +1 -1
- package/dist/render/group-states-css.d.ts +0 -1
- package/dist/render/group-states-css.js.map +1 -1
- package/dist/render/hooks/useSurfaceEvents.d.ts +0 -1
- package/dist/render/hooks/useSurfaceEvents.js.map +1 -1
- package/dist/render/hooks/useSurfaceId.d.ts +0 -1
- package/dist/render/hooks/useSurfaceId.js.map +1 -1
- package/dist/render/index.d.ts +0 -1
- package/dist/render/index.js.map +1 -1
- package/dist/render/interaction-rule-engine.d.ts +0 -1
- package/dist/render/interaction-rule-engine.js.map +1 -1
- package/dist/render/keyframes-css.d.ts +0 -1
- package/dist/render/keyframes-css.js.map +1 -1
- package/dist/render/query-state.d.ts +0 -1
- package/dist/render/query-state.js.map +1 -1
- package/dist/render/renderer.d.ts +0 -1
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/resolve-expressions.d.ts +0 -1
- package/dist/render/resolve-expressions.js.map +1 -1
- package/dist/render/responsive-style-css.d.ts +0 -1
- package/dist/render/responsive-style-css.js.map +1 -1
- package/dist/render/responsive.d.ts +0 -1
- package/dist/render/responsive.js.map +1 -1
- package/dist/render/scoped-css.d.ts +0 -1
- package/dist/render/scoped-css.js.map +1 -1
- package/dist/render/shell-selection.d.ts +0 -1
- package/dist/render/shell-selection.js.map +1 -1
- package/dist/render/states-css.d.ts +0 -1
- package/dist/render/states-css.js.map +1 -1
- package/dist/render/surface-data-context.d.ts +0 -1
- package/dist/render/surface-data-context.js.map +1 -1
- package/dist/render/surface-event-bus.d.ts +0 -1
- package/dist/render/surface-event-bus.js.map +1 -1
- package/dist/render/surface-event-context.d.ts +0 -1
- package/dist/render/surface-event-context.js.map +1 -1
- package/dist/render/surface-id-context.d.ts +0 -1
- package/dist/render/surface-id-context.js.map +1 -1
- package/dist/render/theme-utils.d.ts +0 -1
- package/dist/render/theme-utils.js.map +1 -1
- package/dist/render/types.d.ts +0 -1
- package/dist/render/types.js.map +1 -1
- package/dist/render/visibility-css.d.ts +0 -1
- package/dist/render/visibility-css.js.map +1 -1
- package/dist/render/width-scope.d.ts +0 -1
- package/dist/render/width-scope.js.map +1 -1
- package/dist/render/write-only-sources.d.ts +0 -1
- package/dist/render/write-only-sources.js.map +1 -1
- package/dist/routing/index.d.ts +0 -1
- package/dist/routing/index.js.map +1 -1
- package/dist/routing/router.d.ts +0 -1
- package/dist/routing/router.js.map +1 -1
- package/dist/routing/types.d.ts +0 -1
- package/dist/routing/types.js.map +1 -1
- package/dist/seo/generator.d.ts +0 -1
- package/dist/seo/generator.js.map +1 -1
- package/dist/seo/index.d.ts +0 -1
- package/dist/seo/index.js.map +1 -1
- package/dist/seo/types.d.ts +0 -1
- package/dist/seo/types.js.map +1 -1
- package/dist/state/index.d.ts +0 -1
- package/dist/state/index.js.map +1 -1
- package/dist/state/manager.d.ts +0 -1
- package/dist/state/manager.js.map +1 -1
- package/dist/state/store.d.ts +0 -1
- package/dist/state/store.js.map +1 -1
- package/dist/state/types.d.ts +0 -1
- package/dist/state/types.js.map +1 -1
- package/dist/surface/expression.d.ts +0 -1
- package/dist/surface/expression.js.map +1 -1
- package/dist/surface/index.d.ts +0 -1
- package/dist/surface/index.js.map +1 -1
- package/dist/surface/interpreter.d.ts +0 -1
- package/dist/surface/interpreter.js.map +1 -1
- package/dist/surface/layout.d.ts +0 -1
- package/dist/surface/layout.js.map +1 -1
- package/dist/surface/output.d.ts +0 -1
- package/dist/surface/output.js.map +1 -1
- package/dist/surface/primitives.d.ts +0 -1
- package/dist/surface/primitives.js.map +1 -1
- package/dist/surface/renderer.d.ts +0 -1
- package/dist/surface/renderer.js.map +1 -1
- package/dist/surface/schemas.d.ts +0 -1
- package/dist/surface/schemas.js.map +1 -1
- package/dist/surface/transforms.d.ts +0 -1
- package/dist/surface/transforms.js.map +1 -1
- package/dist/surface/types.d.ts +0 -1
- package/dist/surface/types.js.map +1 -1
- package/dist/surface/validation.d.ts +0 -1
- package/dist/surface/validation.js.map +1 -1
- package/dist/validator.d.ts +0 -1
- package/dist/validator.js.map +1 -1
- package/package.json +41 -40
- package/dist/__tests__/dom-test-setup.d.ts +0 -21
- package/dist/__tests__/dom-test-setup.d.ts.map +0 -1
- package/dist/__tests__/dom-test-setup.js +0 -36
- package/dist/__tests__/dom-test-setup.js.map +0 -1
- package/dist/a11y/announcer.d.ts.map +0 -1
- package/dist/a11y/contrast.d.ts.map +0 -1
- package/dist/a11y/focus.d.ts.map +0 -1
- package/dist/a11y/index.d.ts.map +0 -1
- package/dist/a11y/keyboard.d.ts.map +0 -1
- package/dist/adapters/default-image.d.ts.map +0 -1
- package/dist/adapters/index.d.ts.map +0 -1
- package/dist/adapters/next-image.d.ts.map +0 -1
- package/dist/adapters/types.d.ts.map +0 -1
- package/dist/analytics/index.d.ts.map +0 -1
- package/dist/analytics/tracker.d.ts.map +0 -1
- package/dist/analytics/types.d.ts.map +0 -1
- package/dist/auth/index.d.ts.map +0 -1
- package/dist/auth/provider.d.ts.map +0 -1
- package/dist/auth/types.d.ts.map +0 -1
- package/dist/binding/collection.d.ts.map +0 -1
- package/dist/binding/datasource.d.ts.map +0 -1
- package/dist/binding/engine.d.ts.map +0 -1
- package/dist/binding/expression.d.ts.map +0 -1
- package/dist/binding/index.d.ts.map +0 -1
- package/dist/binding/two-way.d.ts.map +0 -1
- package/dist/binding/types.d.ts.map +0 -1
- package/dist/blocks/__test-fixtures__/block-fixtures.d.ts +0 -40
- package/dist/blocks/__test-fixtures__/block-fixtures.d.ts.map +0 -1
- package/dist/blocks/__test-fixtures__/block-fixtures.js +0 -506
- package/dist/blocks/__test-fixtures__/block-fixtures.js.map +0 -1
- package/dist/blocks/component-types.d.ts.map +0 -1
- package/dist/blocks/composition-rules.d.ts.map +0 -1
- package/dist/blocks/hooks.d.ts.map +0 -1
- package/dist/blocks/index.d.ts.map +0 -1
- package/dist/blocks/registry.d.ts.map +0 -1
- package/dist/blocks/rule-engine.d.ts.map +0 -1
- package/dist/blocks/surface-event-context.d.ts.map +0 -1
- package/dist/blocks/surface-id-context.d.ts.map +0 -1
- package/dist/bus.d.ts.map +0 -1
- package/dist/cache/index.d.ts.map +0 -1
- package/dist/cache/memory.d.ts.map +0 -1
- package/dist/cache/types.d.ts.map +0 -1
- package/dist/capability/index.d.ts.map +0 -1
- package/dist/capability/kernel-capabilities.d.ts.map +0 -1
- package/dist/capability/platform-capabilities.d.ts.map +0 -1
- package/dist/capability/type-mapping.d.ts.map +0 -1
- package/dist/capability/validation.d.ts.map +0 -1
- package/dist/connectors/declared-connector.d.ts.map +0 -1
- package/dist/connectors/engine-registry.d.ts.map +0 -1
- package/dist/connectors/index.d.ts.map +0 -1
- package/dist/connectors/module-loader.d.ts.map +0 -1
- package/dist/connectors/types.d.ts.map +0 -1
- package/dist/context.d.ts.map +0 -1
- package/dist/data/DataCapabilityProvider.d.ts.map +0 -1
- package/dist/data/index.d.ts.map +0 -1
- package/dist/data/manager.d.ts.map +0 -1
- package/dist/data/types.d.ts.map +0 -1
- package/dist/entity/aggregate.d.ts.map +0 -1
- package/dist/entity/apply-query.d.ts.map +0 -1
- package/dist/entity/behavior.d.ts.map +0 -1
- package/dist/entity/connector.d.ts.map +0 -1
- package/dist/entity/connectors/index.d.ts.map +0 -1
- package/dist/entity/connectors/static.d.ts.map +0 -1
- package/dist/entity/entity-datasource.d.ts.map +0 -1
- package/dist/entity/facade.d.ts.map +0 -1
- package/dist/entity/http-connector.d.ts.map +0 -1
- package/dist/entity/index.d.ts.map +0 -1
- package/dist/entity/postgres-connector.d.ts.map +0 -1
- package/dist/entity/registry.d.ts.map +0 -1
- package/dist/entity/store.d.ts.map +0 -1
- package/dist/entity/types.d.ts.map +0 -1
- package/dist/execution-context.d.ts.map +0 -1
- package/dist/executor.d.ts.map +0 -1
- package/dist/forms/form-entity-bridge.d.ts.map +0 -1
- package/dist/forms/form-write-target.d.ts.map +0 -1
- package/dist/forms/index.d.ts.map +0 -1
- package/dist/forms/named-control-values.d.ts.map +0 -1
- package/dist/forms/processor.d.ts.map +0 -1
- package/dist/forms/types.d.ts.map +0 -1
- package/dist/forms/validator.d.ts.map +0 -1
- package/dist/graph/index.d.ts.map +0 -1
- package/dist/graph/resolver.d.ts.map +0 -1
- package/dist/graph/types.d.ts.map +0 -1
- package/dist/hooks/useInstalledAtoms.d.ts.map +0 -1
- package/dist/i18n/index.d.ts.map +0 -1
- package/dist/i18n/translator.d.ts.map +0 -1
- package/dist/i18n/types.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/kernel.d.ts.map +0 -1
- package/dist/perf/budget.d.ts.map +0 -1
- package/dist/perf/index.d.ts.map +0 -1
- package/dist/perf/render-timer.d.ts.map +0 -1
- package/dist/perf/reporter.d.ts.map +0 -1
- package/dist/perf/web-vitals.d.ts.map +0 -1
- package/dist/registry.d.ts.map +0 -1
- package/dist/render/BehaviorSurfaceProvider.d.ts.map +0 -1
- package/dist/render/BlockErrorBoundary.d.ts.map +0 -1
- package/dist/render/DataBoundSurfaceRenderer.d.ts.map +0 -1
- package/dist/render/DynamicBlockWrapper.d.ts.map +0 -1
- package/dist/render/appearance-resolver.d.ts.map +0 -1
- package/dist/render/capability-gate.d.ts.map +0 -1
- package/dist/render/conditional-states-css.d.ts.map +0 -1
- package/dist/render/connections-context.d.ts.map +0 -1
- package/dist/render/dark-theme-css.d.ts.map +0 -1
- package/dist/render/data-binding-types.d.ts.map +0 -1
- package/dist/render/data-cache.d.ts.map +0 -1
- package/dist/render/derive-dark-theme.d.ts.map +0 -1
- package/dist/render/dynamic-artifact-context.d.ts.map +0 -1
- package/dist/render/dynamic-block-loader.d.ts.map +0 -1
- package/dist/render/endpoint.d.ts.map +0 -1
- package/dist/render/entity-facade-context.d.ts.map +0 -1
- package/dist/render/group-states-css.d.ts.map +0 -1
- package/dist/render/hooks/useSurfaceEvents.d.ts.map +0 -1
- package/dist/render/hooks/useSurfaceId.d.ts.map +0 -1
- package/dist/render/index.d.ts.map +0 -1
- package/dist/render/interaction-rule-engine.d.ts.map +0 -1
- package/dist/render/keyframes-css.d.ts.map +0 -1
- package/dist/render/query-state.d.ts.map +0 -1
- package/dist/render/renderer.d.ts.map +0 -1
- package/dist/render/resolve-expressions.d.ts.map +0 -1
- package/dist/render/responsive-style-css.d.ts.map +0 -1
- package/dist/render/responsive.d.ts.map +0 -1
- package/dist/render/scoped-css.d.ts.map +0 -1
- package/dist/render/shell-selection.d.ts.map +0 -1
- package/dist/render/states-css.d.ts.map +0 -1
- package/dist/render/surface-data-context.d.ts.map +0 -1
- package/dist/render/surface-event-bus.d.ts.map +0 -1
- package/dist/render/surface-event-context.d.ts.map +0 -1
- package/dist/render/surface-id-context.d.ts.map +0 -1
- package/dist/render/theme-utils.d.ts.map +0 -1
- package/dist/render/types.d.ts.map +0 -1
- package/dist/render/visibility-css.d.ts.map +0 -1
- package/dist/render/width-scope.d.ts.map +0 -1
- package/dist/render/write-only-sources.d.ts.map +0 -1
- package/dist/routing/index.d.ts.map +0 -1
- package/dist/routing/router.d.ts.map +0 -1
- package/dist/routing/types.d.ts.map +0 -1
- package/dist/seo/generator.d.ts.map +0 -1
- package/dist/seo/index.d.ts.map +0 -1
- package/dist/seo/types.d.ts.map +0 -1
- package/dist/state/index.d.ts.map +0 -1
- package/dist/state/manager.d.ts.map +0 -1
- package/dist/state/store.d.ts.map +0 -1
- package/dist/state/types.d.ts.map +0 -1
- package/dist/surface/expression.d.ts.map +0 -1
- package/dist/surface/index.d.ts.map +0 -1
- package/dist/surface/interpreter.d.ts.map +0 -1
- package/dist/surface/layout.d.ts.map +0 -1
- package/dist/surface/output.d.ts.map +0 -1
- package/dist/surface/primitives.d.ts.map +0 -1
- package/dist/surface/renderer.d.ts.map +0 -1
- package/dist/surface/schemas.d.ts.map +0 -1
- package/dist/surface/transforms.d.ts.map +0 -1
- package/dist/surface/types.d.ts.map +0 -1
- package/dist/surface/validation.d.ts.map +0 -1
- package/dist/validator.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-block-loader.js","sourceRoot":"","sources":["../../src/render/dynamic-block-loader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dynamic-block-loader.js","sourceRoot":"","sources":["../../src/render/dynamic-block-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA8BH,+DAA+D;AAC/D,gBAAgB;AAChB,+DAA+D;AAE/D;;;;;;GAMG;AACH,MAAM,qBAAqB;IACR,KAAK,GAAG,IAAI,GAAG,EAAwB,CAAA;IACvC,OAAO,GAAG,IAAI,GAAG,EAA+B,CAAA;IAEjE;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,UAAkC;QAC3C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;QAC5C,OAAO,IAAI,CAAC,SAAS,CAAA;IACvB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ,CAAC,UAAkC;QAC/C,cAAc;QACd,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QACnD,IAAI,MAAM;YAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAA;QAEjF,4CAA4C;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QACvD,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAA;QAE7B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QACvC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QAE/C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAA;YAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE;gBACnC,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;aACrB,CAAC,CAAA;YACF,OAAO,IAAI,CAAA;QACb,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAC3C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,WAA8C;QACpD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrF,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;oBACnC,+BAA+B;gBACjC,CAAC,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,SAAiB;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAClC,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,SAAiB;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,SAAS,IAAI,IAAI,CAAA;IACrD,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,SAAiB;QACjC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,UAAU,IAAI,IAAI,CAAA;IACtD,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,SAAkB;QAC3B,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QAC9B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;QACpB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,UAAkC;QACrD,MAAM,eAAe,GAAG,MAAM,CAAA;QAE9B,MAAM,cAAc,GAAG,KAAK,IAA0B,EAAE;YACtD,wDAAwD;YACxD,oEAAoE;YACpE,kEAAkE;YAClE,mEAAmE;YACnE,cAAc;YACd,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAA;YACtE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,2BAA2B,UAAU,CAAC,SAAS,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;YACnF,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAA;YACrC,MAAM,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAA;YAExE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAA;YAC3D,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;YACzC,IAAI,CAAC;gBACH,OAAO,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAgB,CAAA;YACzE,CAAC;oBAAS,CAAC;gBACT,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;YAC9B,CAAC;QACH,CAAC,CAAA;QAED,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;QACpC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CACtD,UAAU,CACR,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,EACjF,eAAe,CAChB,CACF,CAAA;QAED,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAA;QAE7D,uDAAuD;QACvD,kEAAkE;QAClE,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM,CAAA;QAC7E,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,aAAa,UAAU,CAAC,SAAS,0CAA0C,CAAC,CAAA;QAC9F,CAAC;QACD,MAAM,UAAU,GACd,GAAG,CAAC,UAAU,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAA;QAE9E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,CAAA;IAC7C,CAAC;CACF;AAED,+DAA+D;AAC/D,oBAAoB;AACpB,+DAA+D;AAE/D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAkB,EAClB,SAAiB,EACjB,SAAiB;IAEjB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,yBAAyB,SAAS,+BAA+B,CAAC,CAAA;IACpF,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAA;IAC7E,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IACxC,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,CAAA;IAEjC,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,IAAI,WAAW,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CAAC,8BAA8B,SAAS,EAAE,CAAC,CAAA;QAC5D,CAAC;QACD,OAAM;IACR,CAAC;IAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAChD,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACrC,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;QAC3C,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC;YACtE,MAAM,IAAI,KAAK,CAAC,8BAA8B,SAAS,EAAE,CAAC,CAAA;QAC5D,CAAC;QACD,OAAM;IACR,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,qCAAqC,SAAS,EAAE,CAAC,CAAA;AACnE,CAAC;AAED,SAAS,UAAU,CAAC,KAAiB;IACnC,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACxC,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,aAAa,CAAC,KAAiB;IACtC,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IAC/B,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAA;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,qBAAqB,EAAE,CAAA","sourcesContent":["/**\n * Dynamic Block Module Loader\n *\n * Loads third-party block ESM modules at runtime via dynamic import().\n * extends to first-party packs — the loader now SHA-256 hash\n * checks the bundle bytes against `descriptor.integrity` before evaluation\n * and discovers both the component and the BlockDefinition under stable\n * export names (`Component` + `definition`) emitted by the bundle wrapper.\n *\n * @module @pwfabric/runtime/render/dynamic-block-loader\n */\n\nimport type { BlockDefinition } from '@pwfabric/core'\nimport type { DynamicBlockDescriptor } from '@pwfabric/contracts'\nimport type { BlockComponent } from './types.js'\n\n// ============================================================\n// TYPES\n// ============================================================\n\nexport interface LoadedAtom {\n readonly Component: BlockComponent\n readonly definition: BlockDefinition | null\n}\n\ninterface CachedModule {\n readonly component: BlockComponent\n readonly definition: BlockDefinition | null\n readonly loadedAt: number\n}\n\ninterface BlockModule {\n readonly default?: BlockComponent\n readonly component?: BlockComponent\n readonly render?: BlockComponent\n /** wrapper convention */\n readonly Component?: BlockComponent\n readonly definition?: BlockDefinition\n}\n\n// ============================================================\n// MODULE LOADER\n// ============================================================\n\n/**\n * Singleton loader for dynamic block ESM modules.\n *\n * - Caches loaded modules by blockType\n * - Deduplicates concurrent requests for the same module\n * - Provides preload for fire-and-forget pre-fetching\n */\nclass BlockModuleLoaderImpl {\n private readonly cache = new Map<string, CachedModule>()\n private readonly pending = new Map<string, Promise<LoadedAtom>>()\n\n /**\n * Load a dynamic block module and return its component.\n */\n async load(descriptor: DynamicBlockDescriptor): Promise<BlockComponent> {\n const atom = await this.loadAtom(descriptor)\n return atom.Component\n }\n\n /**\n * load both the component and the BlockDefinition. Hash-checks\n * the bundle bytes against `descriptor.integrity` before evaluation.\n */\n async loadAtom(descriptor: DynamicBlockDescriptor): Promise<LoadedAtom> {\n // Check cache\n const cached = this.cache.get(descriptor.blockType)\n if (cached) return { Component: cached.component, definition: cached.definition }\n\n // Check pending (dedup concurrent requests)\n const inflight = this.pending.get(descriptor.blockType)\n if (inflight) return inflight\n\n const promise = this.doLoad(descriptor)\n this.pending.set(descriptor.blockType, promise)\n\n try {\n const atom = await promise\n this.cache.set(descriptor.blockType, {\n component: atom.Component,\n definition: atom.definition,\n loadedAt: Date.now(),\n })\n return atom\n } finally {\n this.pending.delete(descriptor.blockType)\n }\n }\n\n /**\n * Preload multiple block modules (fire-and-forget).\n */\n preload(descriptors: readonly DynamicBlockDescriptor[]): void {\n for (const descriptor of descriptors) {\n if (!this.cache.has(descriptor.blockType) && !this.pending.has(descriptor.blockType)) {\n this.loadAtom(descriptor).catch(() => {\n // Preload failure is non-fatal\n })\n }\n }\n }\n\n /**\n * Check if a block module is already loaded.\n */\n isLoaded(blockType: string): boolean {\n return this.cache.has(blockType)\n }\n\n /**\n * Synchronously get a cached block component, or null if not yet loaded.\n */\n getSync(blockType: string): BlockComponent | null {\n return this.cache.get(blockType)?.component ?? null\n }\n\n /**\n * Synchronously get the cached block definition, or null if not yet loaded\n * (or the bundle did not export one).\n */\n getDefinitionSync(blockType: string): BlockDefinition | null {\n return this.cache.get(blockType)?.definition ?? null\n }\n\n /**\n * Invalidate cache for a specific block type or all blocks.\n */\n invalidate(blockType?: string): void {\n if (blockType) {\n this.cache.delete(blockType)\n } else {\n this.cache.clear()\n }\n }\n\n private async doLoad(descriptor: DynamicBlockDescriptor): Promise<LoadedAtom> {\n const LOAD_TIMEOUT_MS = 10_000\n\n const fetchAndImport = async (): Promise<BlockModule> => {\n // integrity is required before evaluation. We fetch the\n // bundle, hash-verify the bytes against `descriptor.integrity`, and\n // only then create a Blob URL and feed it to `import()`. Skipping\n // this would let a CDN-side compromise execute attacker code under\n // our origin.\n const res = await fetch(descriptor.moduleUrl, { credentials: 'omit' })\n if (!res.ok) {\n throw new Error(`Bundle fetch failed for ${descriptor.blockType}: ${res.status}`)\n }\n const bytes = await res.arrayBuffer()\n await verifyIntegrity(bytes, descriptor.integrity, descriptor.blockType)\n\n const blob = new Blob([bytes], { type: 'text/javascript' })\n const blobUrl = URL.createObjectURL(blob)\n try {\n return (await import(/* webpackIgnore: true */ blobUrl)) as BlockModule\n } finally {\n URL.revokeObjectURL(blobUrl)\n }\n }\n\n const loadPromise = fetchAndImport()\n const timeoutPromise = new Promise<never>((_, reject) =>\n setTimeout(\n () => reject(new Error(`Module load timed out after ${LOAD_TIMEOUT_MS / 1000}s`)),\n LOAD_TIMEOUT_MS\n )\n )\n\n const mod = await Promise.race([loadPromise, timeoutPromise])\n\n // wrapper convention emits `Component` + `definition`.\n // Fall back to legacy export names so older bundles keep working.\n const component = mod.Component ?? mod.default ?? mod.component ?? mod.render\n if (!component || typeof component !== 'function') {\n throw new Error(`Module at ${descriptor.moduleUrl} does not export a valid block component`)\n }\n const definition: BlockDefinition | null =\n mod.definition && typeof mod.definition === 'object' ? mod.definition : null\n\n return { Component: component, definition }\n }\n}\n\n// ============================================================\n// HASH VERIFICATION\n// ============================================================\n\n/**\n * SHA-256 verify the fetched bundle bytes against `descriptor.integrity`.\n *\n * Accepted formats:\n * - bare 64-char hex (the format `bundleHash` is stored in DB / listing\n * metadata)\n * - SRI-style `sha256-<base64>` (allowed for forward-compat with W3C\n * subresource-integrity strings)\n *\n * Empty / missing integrity is treated as a hard failure — this is a\n * security boundary, not a hint.\n *\n * Exported for unit tests; runtime callers should use `BlockModuleLoader.load`.\n */\nexport async function verifyIntegrity(\n bytes: ArrayBuffer,\n integrity: string,\n blockType: string\n): Promise<void> {\n if (!integrity) {\n throw new Error(`Missing integrity for ${blockType}; refusing to evaluate bundle`)\n }\n const computed = new Uint8Array(await crypto.subtle.digest('SHA-256', bytes))\n const computedHex = bytesToHex(computed)\n const expected = integrity.trim()\n\n if (/^[0-9a-f]{64}$/i.test(expected)) {\n if (computedHex.toLowerCase() !== expected.toLowerCase()) {\n throw new Error(`Integrity check failed for ${blockType}`)\n }\n return\n }\n\n const sriMatch = /^sha256-(.+)$/i.exec(expected)\n if (sriMatch) {\n const expectedB64 = sriMatch[1] ?? ''\n const computedB64 = bytesToBase64(computed)\n if (expectedB64.replace(/=+$/, '') !== computedB64.replace(/=+$/, '')) {\n throw new Error(`Integrity check failed for ${blockType}`)\n }\n return\n }\n\n throw new Error(`Unrecognized integrity format for ${blockType}`)\n}\n\nfunction bytesToHex(bytes: Uint8Array): string {\n let out = ''\n for (const v of bytes) {\n out += v.toString(16).padStart(2, '0')\n }\n return out\n}\n\nfunction bytesToBase64(bytes: Uint8Array): string {\n let bin = ''\n for (const v of bytes) {\n bin += String.fromCharCode(v)\n }\n return btoa(bin)\n}\n\n/**\n * Singleton instance\n */\nexport const BlockModuleLoader = new BlockModuleLoaderImpl()\n"]}
|
|
@@ -16,4 +16,3 @@ export declare function resolveEndpoint(endpoint: string, state: Readonly<Record
|
|
|
16
16
|
* ONE expression (`{{state.url}}`) is required as a whole.
|
|
17
17
|
*/
|
|
18
18
|
export declare function endpointMissingPathValue(endpoint: string, state: Readonly<Record<string, unknown>>): boolean;
|
|
19
|
-
//# sourceMappingURL=endpoint.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../src/render/endpoint.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../src/render/endpoint.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * resolveEndpoint — place surface state into a REST source's `endpoint`.\n *\n * EVERY VALUE IS URL-ENCODED WHEN THE ENDPOINT MIXES TEXT AND EXPRESSIONS.\n *\n * A raw interpolation would be harmless if state could only come from the\n * page's own controls, but a published app can seed state from its address\n * (`/product?id=12`): `?id=12/../../admin` or `?id=1%26role=owner` would\n * rewrite the path or the query of a request the visitor's credential rides on. A space or a `ü`\n * was always encoded by `fetch`; what this adds is `& # + % ? /`.\n *\n * Three rules:\n *\n * - mixed endpoint (`/products/{{state.id}}`, `?q={{state.q}}`): each value\n * goes through `encodeURIComponent` — ALL values, not only the ones that\n * came from the address, because the renderer cannot tell them apart;\n * - a value that is exactly `.` or `..` becomes `''` — `encodeURIComponent`\n * leaves both alone, and a lone `..` segment still climbs a directory;\n * - an endpoint that is ONE expression (`\"{{state.url}}\"`) is left as it\n * resolves, unencoded — today's behaviour. The published-app runner never\n * seeds a key read there (nor one read in the scheme/host part), so the\n * address cannot reach it.\n *\n * A failed expression leaves the endpoint as authored, as it always did.\n *\n * @module @pwfabric/runtime/render/endpoint\n */\nimport { createExpressionContext, evaluate, interpolate } from '../surface/expression.js'\n\n/** `\"{{ expr }}\"` and nothing else (surrounding whitespace allowed). */\nconst WHOLE = /^\\s*\\{\\{\\s*([^{}]+?)\\s*\\}\\}\\s*$/\n\n/** One `{{ … }}` placeholder — the same shape `interpolate` walks. */\nconst PLACEHOLDER = /\\{\\{(.+?)\\}\\}/g\n\n/** The form a single state value takes inside a mixed endpoint. */\nexport function encodeEndpointValue(value: unknown): string {\n const s = String(value ?? '')\n if (s === '.' || s === '..') return ''\n return encodeURIComponent(s)\n}\n\nexport function resolveEndpoint(endpoint: string, state: Readonly<Record<string, unknown>>): string {\n if (!endpoint.includes('{{')) return endpoint\n const ctx = createExpressionContext({ state: state as Record<string, unknown> })\n\n // One expression: resolved as before, no encoding (see module note).\n if (WHOLE.test(endpoint)) {\n const r = interpolate(endpoint, ctx)\n return r.success ? r.value : endpoint\n }\n\n let failed = false\n const out = endpoint.replace(PLACEHOLDER, (_match, expression: string) => {\n if (failed) return ''\n const r = evaluate(expression.trim(), ctx)\n if (!r.success) {\n failed = true\n return ''\n }\n return encodeEndpointValue(r.value)\n })\n return failed ? endpoint : out\n}\n\n/**\n * Would this endpoint be requested with a required value MISSING?\n *\n * A detail source is authored as `/carts/{{state.numara}}`. Until the visitor\n * types a number, `numara` is empty and the request would go to `/carts/` —\n * the whole collection (DummyJSON redirects there), which then fails `returns`\n * and opens the page on an error. A placeholder in the PATH is\n * required: when it resolves to nothing (`''`, `null`, `undefined`) or cannot\n * be evaluated, the source is not fetched at all and stays idle.\n *\n * A placeholder in the QUERY STRING (`?q={{state.q}}`) is not required — an\n * empty search box legitimately means \"no constraint\". An endpoint that is\n * ONE expression (`{{state.url}}`) is required as a whole.\n */\nexport function endpointMissingPathValue(\n endpoint: string,\n state: Readonly<Record<string, unknown>>\n): boolean {\n if (!endpoint.includes('{{')) return false\n const ctx = createExpressionContext({ state: state as Record<string, unknown> })\n const empty = (expression: string): boolean => {\n const r = evaluate(expression.trim(), ctx)\n return !r.success || r.value === undefined || r.value === null || String(r.value).trim() === ''\n }\n const whole = WHOLE.exec(endpoint)\n if (whole) return empty(whole[1] ?? '')\n\n // The path part ends at the first `?` or `#` that is not inside a placeholder.\n let pathEnd = endpoint.length\n for (let i = 0, depth = 0; i < endpoint.length; i++) {\n if (endpoint.startsWith('{{', i)) {\n depth++\n i++\n } else if (endpoint.startsWith('}}', i) && depth > 0) {\n depth--\n i++\n } else if (depth === 0 && (endpoint[i] === '?' || endpoint[i] === '#')) {\n pathEnd = i\n break\n }\n }\n for (const m of endpoint.slice(0, pathEnd).matchAll(PLACEHOLDER)) {\n if (empty(m[1] ?? '')) return true\n }\n return false\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-facade-context.js","sourceRoot":"","sources":["../../src/render/entity-facade-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAGjD;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAsB,IAAI,CAAC,CAAA;AAE3E;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,UAAU,CAAC,mBAAmB,CAAC,CAAA;AACxC,CAAC"}
|
|
1
|
+
{"version":3,"file":"entity-facade-context.js","sourceRoot":"","sources":["../../src/render/entity-facade-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAGjD;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAsB,IAAI,CAAC,CAAA;AAE3E;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,UAAU,CAAC,mBAAmB,CAAC,CAAA;AACxC,CAAC","sourcesContent":["/**\n * Entity Facade React Context\n *\n * Provides EntityFacade to the surface render tree via React\n * context. Pattern mirrors SurfaceRoutingContext / useSurfaceRouting().\n *\n * Injection point: EntityFacadeContext.Provider wraps BehaviorSurfaceProvider\n * inside SurfaceRenderer when entityFacade prop is supplied.\n *\n * @module @pwfabric/runtime/render/entity-facade-context\n */\n\nimport { createContext, useContext } from 'react'\nimport type { EntityFacade } from '../entity/facade.js'\n\n/**\n * React context that carries an EntityFacade instance through the render tree.\n * Defaults to null — blocks that require entity access check for null and\n * gracefully handle the absent-facade case.\n */\nexport const EntityFacadeContext = createContext<EntityFacade | null>(null)\n\n/**\n * Returns the EntityFacade from the nearest EntityFacadeContext.Provider.\n * Returns null when no provider is present (entity support not configured).\n *\n * @example\n * ```tsx\n * import { useEntityFacade } from '@pwfabric/runtime/render'\n *\n * function MyBlock() {\n * const facade = useEntityFacade()\n * if (!facade) return null // No entity support configured\n * const result = await facade.store.query('Employee', {})\n * }\n * ```\n */\nexport function useEntityFacade(): EntityFacade | null {\n return useContext(EntityFacadeContext)\n}\n"]}
|
|
@@ -39,4 +39,3 @@ export declare function blockGroupStatesCss(rootId: string, thisId: string, grou
|
|
|
39
39
|
* emit zero bytes (existing surfaces byte-identical).
|
|
40
40
|
*/
|
|
41
41
|
export declare function collectGroupStatesCss(blocks: readonly Block[], surfaceId?: string): string;
|
|
42
|
-
//# sourceMappingURL=group-states-css.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group-states-css.js","sourceRoot":"","sources":["../../src/render/group-states-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE1E,4FAA4F;AAC5F,SAAS,UAAU,CAAC,KAAuC;IACzD,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC;SACnE,IAAI,CAAC,GAAG,CAAC,CAAA;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAc,EACd,MAAc,EACd,WAA8C,EAC9C,SAAkB;IAElB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAA;IAC/B,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACxD,+EAA+E;IAC/E,6EAA6E;IAC7E,qDAAqD;IACrD,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,WAAW,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAA;AACjG,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAwB,EAAE,SAAkB;IAChF,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,MAAM,IAAI,GAAG,CAAC,KAAY,EAAE,aAAiC,EAAQ,EAAE;QACrE,IAAI,KAAK,CAAC,WAAW,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YACrD,GAAG,IAAI,mBAAmB,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QACnF,CAAC;QACD,2EAA2E;QAC3E,yCAAyC;QACzC,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAA;QAClE,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ;gBAAE,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;QAClE,CAAC;IACH,CAAC,CAAA;IACD,KAAK,MAAM,KAAK,IAAI,MAAM;QAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IAClD,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
1
|
+
{"version":3,"file":"group-states-css.js","sourceRoot":"","sources":["../../src/render/group-states-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE1E,4FAA4F;AAC5F,SAAS,UAAU,CAAC,KAAuC;IACzD,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC;SACnE,IAAI,CAAC,GAAG,CAAC,CAAA;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAc,EACd,MAAc,EACd,WAA8C,EAC9C,SAAkB;IAElB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAA;IAC/B,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACxD,+EAA+E;IAC/E,6EAA6E;IAC7E,qDAAqD;IACrD,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,WAAW,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAA;AACjG,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAwB,EAAE,SAAkB;IAChF,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,MAAM,IAAI,GAAG,CAAC,KAAY,EAAE,aAAiC,EAAQ,EAAE;QACrE,IAAI,KAAK,CAAC,WAAW,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YACrD,GAAG,IAAI,mBAAmB,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QACnF,CAAC;QACD,2EAA2E;QAC3E,yCAAyC;QACzC,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAA;QAClE,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ;gBAAE,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;QAClE,CAAC;IACH,CAAC,CAAA;IACD,KAAK,MAAM,KAAK,IAAI,MAAM;QAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IAClD,OAAO,GAAG,CAAA;AACZ,CAAC","sourcesContent":["/**\n * Group-hover scoped CSS generation (Tailwind `group` + `group-hover:`).\n *\n * A parent container marked `groupRoot: true` is a hover SOURCE: hovering it\n * restyles descendants that declare `groupStates.hover`. `block.style` is inline\n * and can express neither the ancestor `:hover` nor the descendant relationship,\n * so the runtime emits a scoped descendant rule keyed by BOTH block ids:\n *\n * `[data-pw-surface] [data-block-id=\"<rootId>\"]:hover [data-block-id=\"<thisId>\"]{ … }`\n *\n * The host element already rendered for every block (`data-block-id`) is\n * sufficient on both ends — no extra attribute is needed. Keys are CSS camelCase\n * property names (converted to kebab-case); declarations are emitted with\n * `!important` because a block COMPONENT often applies the same property inline\n * with its own default and inline beats any plain stylesheet rule. Scoped to the\n * one descendant under the one root.\n *\n * Only the NEAREST ancestor with `groupRoot:true` drives a block's\n * `groupStates`; a block with `groupStates.hover` but no `groupRoot` ancestor\n * emits zero bytes. Surfaces using no `groupStates` emit zero bytes so existing\n * surfaces are byte-identical.\n *\n * @module @pwfabric/runtime/render/group-states-css\n */\n\nimport type { Block } from '@pwfabric/core'\nimport { blockIdAttr, blockSelector, camelToKebab } from './scoped-css.js'\n\n/** Serialize a camelCase decl record to `prop:value !important;…` (values pass through). */\nfunction declsToCss(decls: Readonly<Record<string, string>>): string {\n return Object.entries(decls)\n .map(([prop, value]) => `${camelToKebab(prop)}:${value} !important`)\n .join(';')\n}\n\n/**\n * Emit the scoped group-hover rule for a single descendant block, given the id\n * of the nearest `groupRoot` ancestor. Targets\n * `[data-block-id=\"<rootId>\"]:hover [data-block-id=\"<thisId>\"]` scoped under the\n * surface root. Returns '' when the descendant declares no non-empty\n * `groupStates.hover` record.\n */\nexport function blockGroupStatesCss(\n rootId: string,\n thisId: string,\n groupStates: NonNullable<Block['groupStates']>,\n surfaceId?: string\n): string {\n const decls = groupStates.hover\n if (!decls || Object.keys(decls).length === 0) return ''\n // `blockSelector(rootId)` already includes the `[data-pw-surface]` prefix; the\n // descendant half is just the bare `[data-block-id]` attribute selector (the\n // shared surface scope is carried by the root half).\n return `${blockSelector(rootId, surfaceId)}:hover ${blockIdAttr(thisId)}{${declsToCss(decls)}}`\n}\n\n/**\n * Walk a surface block tree tracking the nearest ancestor marked\n * `groupRoot: true`; for each block declaring `groupStates.hover` UNDER such an\n * ancestor, concatenate its scoped group-hover CSS. Blocks with `groupStates`\n * but no `groupRoot` ancestor — and surfaces with no `groupStates` at all —\n * emit zero bytes (existing surfaces byte-identical).\n */\nexport function collectGroupStatesCss(blocks: readonly Block[], surfaceId?: string): string {\n let css = ''\n const walk = (block: Block, nearestRootId: string | undefined): void => {\n if (block.groupStates && nearestRootId !== undefined) {\n css += blockGroupStatesCss(nearestRootId, block.id, block.groupStates, surfaceId)\n }\n // This block becomes the nearest root for its own descendants when it is a\n // group root (innermost groupRoot wins).\n const rootForChildren = block.groupRoot ? block.id : nearestRootId\n if (block.children) {\n for (const child of block.children) walk(child, rootForChildren)\n }\n }\n for (const block of blocks) walk(block, undefined)\n return css\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSurfaceEvents.js","sourceRoot":"","sources":["../../../src/render/hooks/useSurfaceEvents.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}
|
|
1
|
+
{"version":3,"file":"useSurfaceEvents.js","sourceRoot":"","sources":["../../../src/render/hooks/useSurfaceEvents.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA","sourcesContent":["/**\n * useSurfaceEvents hook\n *\n * Re-exports from `@pwfabric/runtime/blocks` (its canonical home).\n *\n * @module @pwfabric/runtime/render/hooks/useSurfaceEvents\n */\n\nexport { useSurfaceEvents } from '../../blocks/index.js'\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSurfaceId.js","sourceRoot":"","sources":["../../../src/render/hooks/useSurfaceId.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA"}
|
|
1
|
+
{"version":3,"file":"useSurfaceId.js","sourceRoot":"","sources":["../../../src/render/hooks/useSurfaceId.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA","sourcesContent":["/**\n * useSurfaceId hook\n *\n * Re-exports from `@pwfabric/runtime/blocks` (its canonical home).\n *\n * @module @pwfabric/runtime/render/hooks/useSurfaceId\n */\n\nexport { useSurfaceId } from '../../blocks/index.js'\n"]}
|
package/dist/render/index.d.ts
CHANGED
|
@@ -46,4 +46,3 @@ export type { SurfaceData } from './surface-data-context.js';
|
|
|
46
46
|
export { SurfaceConnectionsContext, useSurfaceConnections } from './connections-context.js';
|
|
47
47
|
export type { ShellSelectionStore, ShellSelectionOptions, ShellSelectionProviderProps } from './shell-selection.js';
|
|
48
48
|
export { ShellSelectionContext, ShellSelectionProvider, createShellSelectionStore, useShellSelection, } from './shell-selection.js';
|
|
49
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/render/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/render/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/render/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Surface Renderer Module\n *\n * Phase 2A.1: Surface-to-React rendering infrastructure\n *\n * @module @pwfabric/runtime/render\n */\n\n// Types\nexport type {\n BlockComponentProps,\n BlockComponent,\n BlockComponentRegistry,\n CapabilityProvider,\n BlockContext,\n SurfaceEventType,\n SurfaceEvent,\n SurfaceRendererProps,\n BlockRendererProps,\n RenderResult,\n RenderableSurface,\n CapabilityType,\n ImageAdapter,\n ImageAdapterProps,\n BlockWrapperProps,\n BlockWrapperRenderArgs,\n BlockInteractionMode,\n} from './types.js'\n\n// Components\nexport {\n SurfaceRenderer,\n BlockRenderer,\n getBlockIds,\n findBlockById,\n updateBlockById,\n} from './renderer.js'\n\n// legacy first-party `*Block` component re-exports +\n// `defaultBlockComponents` retired. Components flow through the install\n// pipeline (pwpack publish → CDN bundle → BlockModuleLoader); the static\n// re-exports that lived here are gone.\n\n// Theme utilities\nexport { surfaceThemeToCSS } from './theme-utils.js'\nexport { deriveDarkTheme } from './derive-dark-theme.js'\n\n// Responsive utilities\nexport {\n resolveResponsiveValue,\n resolveSpanAtBreakpoint,\n getColumnsAtBreakpoint,\n getBreakpointForWidth,\n resolveBlockLayout,\n resolveMeasureStyle,\n resolveSurfaceRootStyle,\n useViewport,\n} from './responsive.js'\n\n// Per-breakpoint visibility (hideOn/showOn) CSS generation\nexport {\n collectVisibilityCss,\n blockVisibilityCss,\n resolveHiddenBreakpoints,\n} from './visibility-css.js'\n\n// Interaction-state (hover/active/focus) CSS generation\nexport { collectStatesCss, blockStatesCss } from './states-css.js'\n\n// Conditional-state (aria/data/disabled/checked/:has) CSS generation\nexport {\n collectConditionalStatesCss,\n blockConditionalStatesCss,\n} from './conditional-states-css.js'\n\n// Surface keyframe registry (appearance.config.keyframes) CSS generation\nexport { buildKeyframesCss } from './keyframes-css.js'\n\n// Per-prop responsive style (block.style breakpoint maps) CSS generation\nexport {\n collectResponsiveStyleCss,\n blockResponsiveStyleCss,\n} from './responsive-style-css.js'\n\n// Group-hover (block.groupRoot + descendant block.groupStates) CSS generation\nexport { collectGroupStatesCss, blockGroupStatesCss } from './group-states-css.js'\n\n// Shared scoped-CSS helpers (used by the per-block collectors above)\nexport {\n cssEscapeId,\n camelToKebab,\n blockIdAttr,\n blockSelector,\n collectScopedCss,\n} from './scoped-css.js'\n\n// Dark theme variant CSS generation + resolver\nexport { buildDarkThemeCss } from './dark-theme-css.js'\nexport { resolveAppearanceDarkVars, resolveAppearanceKeyframes } from './appearance-resolver.js'\n\n// Data-bound rendering\nexport type {\n SurfaceDataSourceKind,\n SurfaceDataSourceDefinition,\n SurfaceActionType,\n SurfaceAction,\n BlockActionProp,\n DataBoundSurface,\n DataBoundSurfaceRendererProps,\n} from './data-binding-types.js'\n\nexport { DataBoundSurfaceRenderer, surfaceNeedsDataBinding, blockActionsOf } from './DataBoundSurfaceRenderer.js'\nexport { resolveEndpoint, encodeEndpointValue } from './endpoint.js'\nexport { dataSourceCacheKey } from './data-cache.js'\nexport type { SurfaceDataCache } from './data-cache.js'\nexport { resolveBlockExpressions, resolveString } from './resolve-expressions.js'\n\n// Block Error Boundary (crash isolation)\nexport { BlockErrorBoundary } from './BlockErrorBoundary.js'\n\n// Capability Gate (Entitlement enforcement)\nexport type {\n EntitlementContextValue,\n EntitlementProviderProps,\n GatedBlockPlaceholderProps,\n} from './capability-gate.js'\nexport { EntitlementProvider, useEntitlements, GatedBlockPlaceholder } from './capability-gate.js'\n\n// Dynamic Artifact Loading\nexport { BlockModuleLoader } from './dynamic-block-loader.js'\nexport type { DynamicBlockWrapperProps } from './DynamicBlockWrapper.js'\nexport { DynamicBlockWrapper } from './DynamicBlockWrapper.js'\nexport type {\n DynamicArtifactContextValue,\n DynamicArtifactProviderProps,\n} from './dynamic-artifact-context.js'\nexport {\n DynamicArtifactProvider,\n preloadDynamicBlocks,\n useDynamicBlocks,\n useDynamicStarters,\n} from './dynamic-artifact-context.js'\n\n// Surface event protocol\nexport { createSurfaceEventBus } from './surface-event-bus.js'\nexport { SurfaceEventContext } from './surface-event-context.js'\nexport { useSurfaceEvents } from './hooks/useSurfaceEvents.js'\n\n// BehaviorSurfaceProvider — runtime surface wiring\nexport type { BehaviorSurfaceProviderProps } from './BehaviorSurfaceProvider.js'\nexport { BehaviorSurfaceProvider } from './BehaviorSurfaceProvider.js'\nexport { SurfaceIdContext } from './surface-id-context.js'\nexport { useSurfaceId } from './hooks/useSurfaceId.js'\n\n// EntityFacade → Surface Renderer integration\nexport { EntityFacadeContext, useEntityFacade } from './entity-facade-context.js'\n\n// What the data-bound path has currently bound, by source id (form writer reads it)\nexport { SurfaceDataContext, useSurfaceData } from './surface-data-context.js'\nexport type { SurfaceData } from './surface-data-context.js'\n\n// Connections context (world connections + engine registry)\nexport { SurfaceConnectionsContext, useSurfaceConnections } from './connections-context.js'\n\n// Shell × body: SPLIT shell selection, projected onto the URL so a selected\n// record can be linked to and the Back button undoes the selection.\nexport type { ShellSelectionStore, ShellSelectionOptions, ShellSelectionProviderProps } from './shell-selection.js'\nexport {\n ShellSelectionContext,\n ShellSelectionProvider,\n createShellSelectionStore,\n useShellSelection,\n} from './shell-selection.js'\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interaction-rule-engine.js","sourceRoot":"","sources":["../../src/render/interaction-rule-engine.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,uEAAuE;AAWvE,MAAM,OAAO,4BAA4B;IACtB,KAAK,GAAG,IAAI,GAAG,EAA2B,CAAA;IAE3D,QAAQ,CAAC,IAAqB;QAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAC/B,CAAC;IAED,UAAU,CAAC,MAAc;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAClC,CAAC;IAED,MAAM,CAAC,GAEN;QACC,MAAM,aAAa,GAAmB,EAAE,CAAA;QAExC,qDAAqD;QACrD,MAAM,SAAS,GAAG,IAAI,GAAG,EAA6B,CAAA;QACtD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;YAClD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACnB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;QACvC,CAAC;QAED,KAAK,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,SAAS,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,KAA6B,EAAE,EAAE;gBACpE,oCAAoC;gBACpC,MAAM,MAAM,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAA;gBACtF,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;oBAC1B,IAAI,CAAC;wBACH,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;4BAAE,SAAQ;wBAC9C,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBAC1B,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,6CAA6C;wBAC7C,OAAO,CAAC,IAAI,CAAC,iCAAiC,IAAI,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,CAAA;oBACxE,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAA;YACF,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC3B,CAAC;QAED,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;IAChD,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;CACF;AAED,MAAM,UAAU,2BAA2B;IACzC,OAAO,IAAI,4BAA4B,EAAE,CAAA;AAC3C,CAAC"}
|
|
1
|
+
{"version":3,"file":"interaction-rule-engine.js","sourceRoot":"","sources":["../../src/render/interaction-rule-engine.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,uEAAuE;AAWvE,MAAM,OAAO,4BAA4B;IACtB,KAAK,GAAG,IAAI,GAAG,EAA2B,CAAA;IAE3D,QAAQ,CAAC,IAAqB;QAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAC/B,CAAC;IAED,UAAU,CAAC,MAAc;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAClC,CAAC;IAED,MAAM,CAAC,GAEN;QACC,MAAM,aAAa,GAAmB,EAAE,CAAA;QAExC,qDAAqD;QACrD,MAAM,SAAS,GAAG,IAAI,GAAG,EAA6B,CAAA;QACtD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;YAClD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACnB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;QACvC,CAAC;QAED,KAAK,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,SAAS,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,KAA6B,EAAE,EAAE;gBACpE,oCAAoC;gBACpC,MAAM,MAAM,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAA;gBACtF,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;oBAC1B,IAAI,CAAC;wBACH,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;4BAAE,SAAQ;wBAC9C,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBAC1B,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,6CAA6C;wBAC7C,OAAO,CAAC,IAAI,CAAC,iCAAiC,IAAI,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,CAAA;oBACxE,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAA;YACF,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC3B,CAAC;QAED,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;IAChD,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;CACF;AAED,MAAM,UAAU,2BAA2B;IACzC,OAAO,IAAI,4BAA4B,EAAE,CAAA;AAC3C,CAAC","sourcesContent":["// packages/runtime/src/render/interaction-rule-engine.ts\n// DefaultInteractionRuleEngine (formerly DefaultSurfaceBehaviorEngine)\n\nimport type {\n InteractionRule,\n InteractionRuleEngine,\n SurfaceEventTrigger,\n SurfaceEventDescriptor,\n} from '@pwfabric/contracts'\n\nexport type { InteractionRule, InteractionRuleEngine, SurfaceEventTrigger }\n\nexport class DefaultInteractionRuleEngine implements InteractionRuleEngine {\n private readonly rules = new Map<string, InteractionRule>()\n\n register(rule: InteractionRule): void {\n this.rules.set(rule.id, rule)\n }\n\n unregister(ruleId: string): boolean {\n return this.rules.delete(ruleId)\n }\n\n attach(bus: {\n on(pattern: string, handler: (e: SurfaceEventDescriptor) => void): () => void\n }): () => void {\n const unsubscribers: (() => void)[] = []\n\n // Group rules by trigger, subscribe once per trigger\n const byTrigger = new Map<string, InteractionRule[]>()\n for (const rule of this.rules.values()) {\n const existing = byTrigger.get(rule.trigger) ?? []\n existing.push(rule)\n byTrigger.set(rule.trigger, existing)\n }\n\n for (const [trigger, triggerRules] of byTrigger) {\n const unsub = bus.on(trigger, async (event: SurfaceEventDescriptor) => {\n // Sort by priority (higher = first)\n const sorted = [...triggerRules].sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0))\n for (const rule of sorted) {\n try {\n if (rule.guard && !rule.guard(event)) continue\n await rule.action(event)\n } catch (err) {\n // Fail-safe: log but don't break other rules\n console.warn(`[InteractionRuleEngine] Rule '${rule.id}' failed:`, err)\n }\n }\n })\n unsubscribers.push(unsub)\n }\n\n return () => unsubscribers.forEach((u) => u())\n }\n\n clear(): void {\n this.rules.clear()\n }\n}\n\nexport function createInteractionRuleEngine(): InteractionRuleEngine {\n return new DefaultInteractionRuleEngine()\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyframes-css.js","sourceRoot":"","sources":["../../src/render/keyframes-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,gFAAgF;AAChF,MAAM,eAAe,GAAG,QAAQ,CAAA;AAEhC;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,SAAuD;IAEvD,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAA;IACzB,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,SAAQ;QAC3E,GAAG,IAAI,cAAc,eAAe,GAAG,IAAI,IAAI,IAAI,GAAG,CAAA;IACxD,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
1
|
+
{"version":3,"file":"keyframes-css.js","sourceRoot":"","sources":["../../src/render/keyframes-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,gFAAgF;AAChF,MAAM,eAAe,GAAG,QAAQ,CAAA;AAEhC;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,SAAuD;IAEvD,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAA;IACzB,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,SAAQ;QAC3E,GAAG,IAAI,cAAc,eAAe,GAAG,IAAI,IAAI,IAAI,GAAG,CAAA;IACxD,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC","sourcesContent":["/**\n * Surface keyframe registry CSS generation (arbitrary `@keyframes`).\n *\n * The runtime ships a fixed set of `pw-*` keyframes in `SURFACE_BASE_CSS`\n * (pulse / fade-in / marquee / slide-up / slide-down / scale-in / spin /\n * bounce / spring-in), so `block.style.animation` could only reference those. A surface can\n * now declare arbitrary named keyframes via `appearance.config.keyframes`\n * (name → keyframe body); this module emits one `@keyframes <name>{<body>}` per\n * entry so a block can drive custom motion offline.\n *\n * Each name is PREFIXED with `pw-kf-` to avoid colliding with host-page or\n * runtime-shipped keyframes — so a surface declaring `{ wiggle: '…' }` makes the\n * animation available as `pw-kf-wiggle`, and a block references it via\n * `block.style.animation: 'pw-kf-wiggle 0.4s ease'`.\n *\n * The keyframe BODY passes through untouched (authors supply standard\n * `@keyframes` selector blocks, e.g. `0%{…}50%{…}100%{…}`). An empty/absent\n * registry emits zero bytes. The existing `prefers-reduced-motion` gate in\n * `SURFACE_BASE_CSS` neutralises these animations for users who opt out (it\n * matches by animation, not by keyframe name), so no extra gating is needed\n * here.\n *\n * @module @pwfabric/runtime/render/keyframes-css\n */\n\n/** Prefix applied to every surface-declared keyframe name (collision guard). */\nconst KEYFRAME_PREFIX = 'pw-kf-'\n\n/**\n * Build the surface keyframe CSS from the appearance `keyframes` registry\n * (name → keyframe body). Emits `@keyframes pw-kf-<name>{<body>}` for each\n * entry. Entries with an empty name or empty body are skipped. Returns '' when\n * the registry is empty/undefined (zero bytes emitted).\n */\nexport function buildKeyframesCss(\n keyframes: Readonly<Record<string, string>> | undefined\n): string {\n if (!keyframes) return ''\n let css = ''\n for (const [name, body] of Object.entries(keyframes)) {\n if (!name || typeof body !== 'string' || body.trim().length === 0) continue\n css += `@keyframes ${KEYFRAME_PREFIX}${name}{${body}}`\n }\n return css\n}\n"]}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
export declare function resolveQueryState<T>(query: T, state: Readonly<Record<string, unknown>>): T;
|
|
2
2
|
/** True when any string inside the query carries an expression. */
|
|
3
3
|
export declare function queryHasState(query: unknown): boolean;
|
|
4
|
-
//# sourceMappingURL=query-state.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-state.js","sourceRoot":"","sources":["../../src/render/query-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAEzF,MAAM,KAAK,GAAG,iCAAiC,CAAA;AAE/C,MAAM,UAAU,iBAAiB,CAAI,KAAQ,EAAE,KAAwC;IACrF,MAAM,GAAG,GAAG,uBAAuB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IAC9C,MAAM,IAAI,GAAG,CAAC,CAAU,EAAW,EAAE;QACnC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO,CAAC,CAAA;YAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC3B,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;gBACpC,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;gBACjC,IAAI,CAAC,CAAC,CAAC,OAAO;oBAAE,OAAO,SAAS,CAAA;gBAChC,wEAAwE;gBACxE,sEAAsE;gBACtE,mEAAmE;gBACnE,sEAAsE;gBACtE,sEAAsE;gBACtE,kCAAkC;gBAClC,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI;oBAAE,OAAO,SAAS,CAAA;gBACxD,OAAO,CAAC,CAAC,KAAK,CAAA;YAChB,CAAC;YACD,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAChC,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACxC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,GAAG,GAA4B,EAAE,CAAA;YACvC,KAAK,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAA4B,CAAC,EAAE,CAAC;gBACpE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;gBACnB,qEAAqE;gBACrE,6DAA6D;gBAC7D,IAAI,CAAC,KAAK,SAAS;oBAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YACjC,CAAC;YACD,OAAO,GAAG,CAAA;QACZ,CAAC;QACD,OAAO,CAAC,CAAA;IACV,CAAC,CAAA;IACD,OAAO,IAAI,CAAC,KAAK,CAAM,CAAA;AACzB,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAC1D,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAgC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAClH,OAAO,KAAK,CAAA;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"query-state.js","sourceRoot":"","sources":["../../src/render/query-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAEzF,MAAM,KAAK,GAAG,iCAAiC,CAAA;AAE/C,MAAM,UAAU,iBAAiB,CAAI,KAAQ,EAAE,KAAwC;IACrF,MAAM,GAAG,GAAG,uBAAuB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IAC9C,MAAM,IAAI,GAAG,CAAC,CAAU,EAAW,EAAE;QACnC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO,CAAC,CAAA;YAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC3B,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;gBACpC,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;gBACjC,IAAI,CAAC,CAAC,CAAC,OAAO;oBAAE,OAAO,SAAS,CAAA;gBAChC,wEAAwE;gBACxE,sEAAsE;gBACtE,mEAAmE;gBACnE,sEAAsE;gBACtE,sEAAsE;gBACtE,kCAAkC;gBAClC,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI;oBAAE,OAAO,SAAS,CAAA;gBACxD,OAAO,CAAC,CAAC,KAAK,CAAA;YAChB,CAAC;YACD,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAChC,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACxC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,GAAG,GAA4B,EAAE,CAAA;YACvC,KAAK,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAA4B,CAAC,EAAE,CAAC;gBACpE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;gBACnB,qEAAqE;gBACrE,6DAA6D;gBAC7D,IAAI,CAAC,KAAK,SAAS;oBAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YACjC,CAAC;YACD,OAAO,GAAG,CAAA;QACZ,CAAC;QACD,OAAO,CAAC,CAAA;IACV,CAAC,CAAA;IACD,OAAO,IAAI,CAAC,KAAK,CAAM,CAAA;AACzB,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAC1D,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAgC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAClH,OAAO,KAAK,CAAA;AACd,CAAC","sourcesContent":["/**\n * resolveQueryState — substitute `{{state.x}}` (and any expression) inside a\n * data-source `query` object before it reaches the connector.\n *\n * Without it state would be interpolated ONLY in REST `endpoint` strings and\n * connector/entity sources would pass `source.query` to the engine raw, so a\n * pagination block writing `state.page` and a segmented-control writing\n * `state.severity` could never reach `query.pagination.offset` or\n * `query.filter.value`. This walks the query deeply and resolves every string\n * that contains `{{ }}`.\n *\n * A string that is EXACTLY one expression (`\"{{state.page}}\"`) resolves to\n * the raw value (number stays number, array stays array) so\n * `pagination.limit: \"{{state.pageSize}}\"` yields a number, not \"20\".\n * Mixed strings (`\"prefix-{{state.x}}\"`) resolve to a string.\n */\nimport { createExpressionContext, evaluate, interpolate } from '../surface/expression.js'\n\nconst WHOLE = /^\\s*\\{\\{\\s*([^{}]+?)\\s*\\}\\}\\s*$/\n\nexport function resolveQueryState<T>(query: T, state: Readonly<Record<string, unknown>>): T {\n const ctx = createExpressionContext({ state })\n const walk = (v: unknown): unknown => {\n if (typeof v === 'string') {\n if (!v.includes('{{')) return v\n const whole = WHOLE.exec(v)\n if (whole && whole[1] !== undefined) {\n const r = evaluate(whole[1], ctx)\n if (!r.success) return undefined\n // An \"All\" segment and an empty search box both write '' (or null) into\n // state. Read literally that is `field eq ''`, which matches no row —\n // the control that was meant to WIDEN the list emptied it. A whole\n // expression resolving to nothing is no constraint, so the key drops.\n // A literal '' written into the query by an author is untouched: only\n // an expression can resolve away.\n if (r.value === '' || r.value === null) return undefined\n return r.value\n }\n const r = interpolate(v, ctx)\n return r.success ? r.value : v\n }\n if (Array.isArray(v)) return v.map(walk)\n if (v && typeof v === 'object') {\n const out: Record<string, unknown> = {}\n for (const [k, val] of Object.entries(v as Record<string, unknown>)) {\n const w = walk(val)\n // an unresolved whole-expression drops the key so the connector sees\n // \"no constraint\", not `undefined` as a literal filter value\n if (w !== undefined) out[k] = w\n }\n return out\n }\n return v\n }\n return walk(query) as T\n}\n\n/** True when any string inside the query carries an expression. */\nexport function queryHasState(query: unknown): boolean {\n if (typeof query === 'string') return query.includes('{{')\n if (Array.isArray(query)) return query.some(queryHasState)\n if (query && typeof query === 'object') return Object.values(query as Record<string, unknown>).some(queryHasState)\n return false\n}\n"]}
|
|
@@ -42,4 +42,3 @@ export declare function findBlockById(blocks: readonly Block[], id: string): Blo
|
|
|
42
42
|
* Update a block by ID in a surface
|
|
43
43
|
*/
|
|
44
44
|
export declare function updateBlockById(blocks: readonly Block[], id: string, updates: Partial<Block>): Block[];
|
|
45
|
-
//# sourceMappingURL=renderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/render/renderer.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/render/renderer.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Surface Renderer\n *\n * Phase 2A.1: Main Surface-to-React rendering component\n *\n * @module @pwfabric/runtime/render/renderer\n */\n\nimport * as React from 'react'\nimport type { Block } from '@pwfabric/core'\nimport { FLEX_HOIST_KEYS, LAYOUT_HOIST_KEYS } from './scoped-css.js'\nimport type {\n SurfaceRendererProps,\n BlockRendererProps,\n BlockContext,\n BlockComponentRegistry,\n BlockComponent,\n BlockWrapperProps,\n BlockWrapperRenderArgs,\n CapabilityProvider,\n CapabilityType,\n ImageAdapter,\n BlockSizing,\n} from './types.js'\nimport {\n resolveBlockLayout,\n resolveMeasureStyle,\n resolveSurfaceRootStyle,\n useViewport,\n getColumnsAtBreakpoint,\n} from './responsive.js'\nimport { chunkByWidthScope, resolveWidthScope } from './width-scope.js'\nimport {\n resolveAppearanceVars,\n resolveAppearanceDarkVars,\n resolveAppearanceKeyframes,\n} from './appearance-resolver.js'\nimport { collectVisibilityCss } from './visibility-css.js'\nimport { collectStatesCss } from './states-css.js'\nimport { collectConditionalStatesCss } from './conditional-states-css.js'\nimport { collectResponsiveStyleCss } from './responsive-style-css.js'\nimport { collectGroupStatesCss } from './group-states-css.js'\nimport { buildDarkThemeCss } from './dark-theme-css.js'\nimport { resolveAppearanceMode } from '@pwfabric/contracts'\nimport { buildKeyframesCss } from './keyframes-css.js'\nimport { DEFAULT_BLOCK_LAYOUT } from '@pwfabric/core'\nimport type { BreakpointName } from '@pwfabric/core'\nimport type { ImageAdapterProps } from '../adapters/types.js'\nimport type {\n DynamicBlockDescriptor,\n SurfaceEventDescriptor,\n} from '@pwfabric/contracts'\nimport type { SurfaceEvent } from './types.js'\n// `defaultBlockComponents` retired. Production render\n// path goes exclusively through the install pipeline — `customComponents`\n// (typically wired from `useDynamicArtifacts`) supplies the runtime\n// component map; blocks without a descriptor render as\n// \"Unknown block\" placeholders.\nimport { useEntitlements, GatedBlockPlaceholder } from './capability-gate.js'\nimport { useDynamicBlocks } from './dynamic-artifact-context.js'\nimport { DynamicBlockWrapper } from './DynamicBlockWrapper.js'\nimport { BlockErrorBoundary } from './BlockErrorBoundary.js'\nimport { BehaviorSurfaceProvider } from './BehaviorSurfaceProvider.js'\nimport { isCapability } from '../capability/type-mapping.js'\nimport type { SurfaceDataSourceDefinition } from './data-binding-types.js'\nimport { EntityFacadeContext } from './entity-facade-context.js'\nimport { SurfaceConnectionsContext } from './connections-context.js'\nimport { ShellSelectionProvider } from './shell-selection.js'\nimport type { FormEntityBridgeConfig } from '../forms/form-entity-bridge.js'\nimport { isRepeatExpanded } from './resolve-expressions.js'\n\n// ============================================================\n// HELPERS\n// ============================================================\n\n/**\n * Merge component registries, filtering out undefined values\n */\nfunction mergeComponentRegistries(\n base: BlockComponentRegistry | Partial<BlockComponentRegistry> = {},\n overrides?: Partial<BlockComponentRegistry>\n): BlockComponentRegistry {\n const merged: BlockComponentRegistry = {}\n for (const [key, value] of Object.entries(base)) {\n if (value !== undefined) merged[key] = value\n }\n if (overrides) {\n for (const [key, value] of Object.entries(overrides)) {\n if (value !== undefined) merged[key] = value\n }\n }\n return merged\n}\n\n/**\n * Project a canonical `SurfaceEventDescriptor.type` (contracts vocabulary, e.g.\n * `'block:click'`, `'form:submit'`, `'input:change'`) onto the renderer's legacy\n * `SurfaceEvent['type']` enum. Anything without a direct legacy equivalent\n * collapses to `'custom'`. Only used to satisfy the `onEvent` handler's shape —\n * the dispatcher reads `blockId`/`payload`, not the projected `type`.\n */\nfunction mapCanonicalEventType(type: string): SurfaceEvent['type'] {\n switch (type) {\n case 'block:click':\n return 'click'\n case 'form:submit':\n return 'submit'\n case 'form:change':\n case 'input:change':\n return 'change'\n default:\n return 'custom'\n }\n}\n\n/**\n * Create an ImageBlock component that uses the provided adapter\n */\nfunction createImageBlockWithAdapter(adapter: ImageAdapter): BlockComponent {\n return ({ props, block }): React.ReactNode => {\n // Build adapter props, only including defined values\n const adapterProps: ImageAdapterProps = {\n src: (props.src as string) || '/placeholder.png',\n alt: (props.alt as string) ?? '',\n blockId: block.id,\n }\n\n // Add optional props only if they have values\n if (props.width !== undefined) {\n ;(adapterProps as { width: number | string }).width = props.width as number | string\n }\n if (props.height !== undefined) {\n ;(adapterProps as { height: number | string }).height = props.height as number | string\n }\n if (props.loading !== undefined) {\n ;(adapterProps as { loading: 'lazy' | 'eager' }).loading = props.loading as 'lazy' | 'eager'\n ;(adapterProps as { priority: boolean }).priority = props.loading === 'eager'\n }\n if (props.objectFit !== undefined) {\n ;(adapterProps as { objectFit: ImageAdapterProps['objectFit'] }).objectFit =\n props.objectFit as ImageAdapterProps['objectFit']\n }\n if (props.aspectRatio !== undefined) {\n ;(adapterProps as { aspectRatio: string }).aspectRatio = props.aspectRatio as string\n }\n if (props.borderRadius !== undefined) {\n ;(adapterProps as { borderRadius: number | string }).borderRadius = props.borderRadius as\n | number\n | string\n }\n if (props.placeholder !== undefined) {\n ;(adapterProps as { placeholder: 'blur' | 'empty' }).placeholder = props.placeholder as\n | 'blur'\n | 'empty'\n }\n if (props.blurDataURL !== undefined) {\n ;(adapterProps as { blurDataURL: string }).blurDataURL = props.blurDataURL as string\n }\n\n return React.createElement(adapter, adapterProps)\n }\n}\n\n// ============================================================\n// BLOCK WRAPPER SEAM (ADR render-unification)\n// ============================================================\n\ntype RenderBlockWrapperFn = (args: BlockWrapperRenderArgs) => React.ReactNode\n\n/**\n * Emit a block's outermost wrapper. When `renderBlockWrapper` is provided\n * (editor seam) the decorator owns the wrapper element and receives the\n * runtime-computed `wrapperProps` (layout style + selectors). Otherwise the\n * default `<div {...wrapperProps}>` is rendered — byte-identical to the\n * pre-seam runtime (modulo the unified `data-block-id`).\n */\n/**\n * The attributes EVERY wrapper must carry — in one place.\n *\n * `states-css.ts` and `conditional-states-css.ts` EXCLUDE the wrapper from\n * their state rules with `:not([data-block-wrapper])`. Without the attribute\n * there is no exclusion: a rule matches both the wrapper and the component\n * root, and the defect described in states-css comes back (\"the square\n * wrapper takes the hover box-shadow, corners show under the rounded card,\n * transforms stack\") — on every block, including blocks installed from a pack.\n *\n * All four call sites derive from this base, so they cannot drift apart.\n */\nfunction baseWrapperProps(\n block: { id: string },\n layoutStyle: React.CSSProperties | undefined,\n scopeAttr: Record<string, string>\n): BlockWrapperProps {\n return {\n // `exactOptionalPropertyTypes`: an optional field cannot be given an\n // explicit `undefined`; when absent it is left out.\n ...(layoutStyle ? { style: layoutStyle } : {}),\n id: block.id,\n 'data-block-id': block.id,\n ...scopeAttr,\n // `data-block-wrapper`: an ALIAS carrying the same value as `data-block-id`\n // but with a separate job — the one marker that tells the wrapper apart\n // from the component root.\n 'data-block-wrapper': block.id,\n }\n}\n\nfunction emitBlockWrapper(\n block: Block,\n wrapperProps: BlockWrapperProps,\n inner: React.ReactNode,\n parentBlock: Block | undefined,\n renderBlockWrapper: RenderBlockWrapperFn | undefined\n): React.ReactNode {\n if (renderBlockWrapper) {\n return (\n <React.Fragment key={block.id}>\n {renderBlockWrapper({\n block,\n children: inner,\n wrapperProps,\n ...(parentBlock !== undefined ? { parentBlock } : {}),\n })}\n </React.Fragment>\n )\n }\n return (\n <div key={block.id} {...wrapperProps}>\n {inner}\n </div>\n )\n}\n\n// ============================================================\n// RESPONSIVE STYLE FLATTENING\n// ============================================================\n\n/**\n * Strip a block's responsive (`{ xs?, sm?, … }`) `style` prop values for INLINE\n * application: those are emitted ENTIRELY as scoped stylesheet rules by\n * `collectResponsiveStyleCss` (base as a non-media rule + larger breakpoints as\n * `@media`). They must NOT be applied inline — inline declarations beat\n * stylesheet/@media rules, so an inline base would pin the value and the\n * responsive overrides would never take effect. Flat string values pass through\n * untouched. Returns the SAME block object when no responsive value is present\n * (zero allocation for existing surfaces).\n */\nfunction flattenResponsiveStyle(block: Block): Block {\n const style = block.style\n if (!style) return block\n let hasResponsive = false\n const flat: Record<string, string> = {}\n for (const [prop, value] of Object.entries(style)) {\n if (typeof value === 'string') {\n flat[prop] = value\n continue\n }\n if (value === null || value === undefined) continue\n // Responsive value map → handled ENTIRELY by responsive-style-css (base as a\n // non-media scoped rule + larger breakpoints as @media). It must NOT be\n // applied inline: inline declarations beat stylesheet/@media rules, so an\n // inline base would pin the value and the responsive overrides would never\n // take effect. Strip it from the inline style here.\n hasResponsive = true\n }\n if (!hasResponsive) return block\n return { ...block, style: flat }\n}\n\n// ============================================================\n// BLOCK RENDERER\n// ============================================================\n\n/**\n * Compute a block's grid/flex layout style. Applied to EVERY render path\n * (static, dynamic, unknown, gated) so installed dynamic blocks lay out\n * identically to static ones — otherwise full-span dynamic sections auto-place\n * side-by-side instead of stacking.\n */\n/**\n * CHROME IS DECLARED, NOT HARD-CODED.\n *\n * The engine keeps no list of chrome block names (navbar, rail, bottom bar…):\n * such a list would be one pack's vocabulary, and a second pack could not\n * express its own chrome. Instead a block declares its own\n * `layout.widthScope` and the engine applies it. That a piece of chrome\n * inside a row is not stretched to an equal column also follows from that\n * declaration (see `resolveWidthScope` below).\n *\n * The one name kept below, `split-view`, is not pack vocabulary: it is a\n * LAYOUT block that places its own children and keeps the selection in\n * surface-owned state (see `shell-selection`).\n */\nconst CHILD_LAYOUT_OWNER = 'split-view'\n\n// Style keys hoisted from block.style to the WRAPPER div (the flex/grid item).\n// Module-scoped because renderBlock must strip the SAME keys from the style the\n// component receives — otherwise a margin is applied twice (wrapper + inner):\n// marginTop:'-40%' would move content by -335px AND -256px.\n// FLEX_HOIST_KEYS / LAYOUT_HOIST_KEYS live in scoped-css.ts — the responsive\n// CSS generator must read the SAME list (one hoisting rule, one place).\n\n/** block.style minus the hoisted keys — what the component itself may apply. */\nfunction stripHoistedStyle(block: Block): Block {\n const style = block.style as Record<string, unknown> | undefined\n if (!style) return block\n let has = false\n for (const key of LAYOUT_HOIST_KEYS) if (style[key] !== undefined) { has = true; break }\n if (!has) return block\n const rest: Record<string, unknown> = { ...style }\n for (const key of LAYOUT_HOIST_KEYS) delete rest[key]\n return { ...block, style: rest } as Block\n}\n\n/**\n * ROW STACKING LAW.\n *\n * A `container` with `direction: 'row'` is a flex row with `nowrap`; without\n * this rule nothing turns it into a column on a phone, so on xs a heading\n * sits squeezed beside a segmented control that overflows, navbar pills run\n * off the edge, and a two-column body becomes two 190px columns.\n *\n * The law: at the `xs` breakpoint a row container whose children include at\n * least TWO non-intrinsic blocks renders as a column. Rows made of intrinsic\n * blocks (avatar + name, icon + label, a button pair) are content rows and\n * keep their direction. Authors opt out with `keepRow: true`; a row that\n * already declares `wrap: true` handles itself. The stacked container carries\n * `stackedFromRow: true` so child layout does not apply column-mode\n * partial-span widths to what used to be row cells.\n */\nconst ROW_DIRECTIONS = new Set(['row', 'row-reverse'])\nfunction applyRowStacking(\n block: Block,\n viewport: BreakpointName,\n components: BlockComponentRegistry\n): Block {\n if (viewport !== 'xs' || block.type !== 'container') return block\n const props = (block.props ?? {}) as Record<string, unknown>\n if (!ROW_DIRECTIONS.has(String(props.direction))) return block\n if (props.keepRow === true || props.wrap === true) return block\n const children = block.children ?? []\n const fluid = children.filter((c) => components[c.type]?.sizing !== 'intrinsic').length\n if (fluid < 2) return block\n return { ...block, props: { ...props, direction: 'column', stackedFromRow: true } }\n}\n\nconst FIXED_PX_WIDTH = /^\\s*\\d+(?:\\.\\d+)?\\s*px\\s*$/i\n\n/**\n * A width that is a fixed length — a finite number (px, the props unit) or a\n * `px` string. Percentages, `auto`, `fit-content`, theme vars and\n * responsive maps are NOT fixed: they say nothing about the block keeping\n * its own size in a row.\n */\nfunction isFixedWidth(value: unknown): boolean {\n if (typeof value === 'number') return Number.isFinite(value) && value > 0\n return typeof value === 'string' && FIXED_PX_WIDTH.test(value) && parseFloat(value) > 0\n}\n\n/** The instance states a fixed width in `props.width` or `style.width`. */\nfunction hasFixedWidth(block: Block): boolean {\n const props = block.props as Record<string, unknown> | undefined\n const style = block.style as Record<string, unknown> | undefined\n return isFixedWidth(props?.width) || isFixedWidth(style?.width)\n}\n\nfunction computeBlockLayoutStyle(\n block: Block,\n parentBlock: Block | undefined,\n viewport: BreakpointName,\n sizing?: BlockSizing\n): React.CSSProperties {\n // Skip grid-column when parent manages its own layout (grid, container, form, etc.)\n const parentType = parentBlock?.type\n // A child that EXPLICITLY declares layout.span keeps it inside a grid parent.\n // Otherwise asymmetric 12-col layouts are impossible: the declaration would\n // be silently swallowed. Grid stays the owner only for span-less children\n // (equal auto columns, the default).\n const childDeclaresSpan = block.layout?.span !== undefined\n // A parent that expanded a `repeat` (the repeater family, or any block that\n // repeats) lays its clones out with its own grid/columns — the clones must\n // not carry the surface's 12-column span into it. A grid\n // parent keeps its own rule above.\n const parentRepeats = parentType !== 'grid' && isRepeatExpanded(parentBlock)\n const parentOwnsLayout =\n parentRepeats ||\n (parentType === 'grid' && !childDeclaresSpan) ||\n parentType === 'container' ||\n parentType === 'section' ||\n parentType === 'form' ||\n parentType === 'tabs' ||\n parentType === 'tooltip' ||\n parentType === CHILD_LAYOUT_OWNER\n\n const layout = block.layout ?? DEFAULT_BLOCK_LAYOUT\n const resolved = resolveBlockLayout(layout, viewport)\n\n // Column container children: apply explicit width when span < surface columns\n const parentDirection = parentBlock?.props?.direction as string | undefined\n // A row stacked by the ROW STACKING LAW is not an authored column: its\n // children were row cells, so their partial spans must not become widths.\n const parentStackedFromRow = parentBlock?.props?.stackedFromRow === true\n const isColumnContainer =\n parentType === 'container' &&\n (parentDirection === 'column' || parentDirection === undefined) &&\n !parentStackedFromRow\n\n let columnChildWidth: string | undefined\n if (isColumnContainer && parentBlock) {\n const surfaceCols = getColumnsAtBreakpoint(viewport)\n const parentCols = resolveBlockLayout(parentBlock.layout ?? DEFAULT_BLOCK_LAYOUT, viewport).span\n if (resolved.span < surfaceCols) {\n columnChildWidth = `${(resolved.span / parentCols) * 100}%`\n }\n }\n\n // Row container children: apply flexBasis so spans translate to proportional widths.\n //\n // Weighted columns: a child's OWN `block.style` flex hints win over the span-derived\n // default. The wrapper is the flex item — so `flex`/`flexGrow`/`flexBasis`/`flexShrink`\n // declared on a child must land on the wrapper, not the inner block. When present they\n // fully replace the default span/equal distribution, letting an author express an\n // arbitrary ratio (e.g. `flex:\"1.62 1 0\"` + `flex:\"1 1 0\"` → exact 1.62:1 columns)\n // that the integer-span model cannot. `layout.span` remains the default when no flex\n // hint is given.\n const childStyle = block.style as React.CSSProperties | undefined\n const childHasFlexHint =\n childStyle !== undefined && FLEX_HOIST_KEYS.some((k) => childStyle[k] !== undefined)\n\n const isRowContainer = parentType === 'container' && parentDirection === 'row'\n\n let rowChildStyle: React.CSSProperties | undefined\n // A rail beside a row is NOT one of two equal columns. The default below\n // gives every row child `flex: 1 1 0` — right for two content columns,\n // wrong for chrome: it would stretch a 76px rail to half the row and squeeze\n // the body it exists to sit beside. The block DECLARES its own scope.\n if (isRowContainer && resolveWidthScope(block, viewport) === 'viewport' && !childHasFlexHint) {\n rowChildStyle = { flexGrow: 0, flexShrink: 0, flexBasis: 'auto', alignSelf: 'stretch' }\n } else if (\n isRowContainer &&\n (sizing === 'intrinsic' || hasFixedWidth(block)) &&\n !childHasFlexHint\n ) {\n // The block declared its width is its content (avatar, badge, button…):\n // it keeps that width; whatever sits beside it takes the rest. Without\n // this every such block would take half the row.\n //\n // The same holds for an INSTANCE that states a fixed width (a 56px\n // thumbnail beside a product title). `sizing` is static per block type,\n // so a fluid-by-default block (image) cannot declare it; the instance's\n // own numeric/px width is the declaration. Without it a 56px image took\n // the equal share and squeezed the text beside it into two lines.\n rowChildStyle = { flexGrow: 0, flexShrink: 0, flexBasis: 'auto' }\n } else if (isRowContainer && parentBlock && !childHasFlexHint) {\n // No author flex hint → derive proportional width from the integer span.\n const surfaceCols = getColumnsAtBreakpoint(viewport)\n const parentCols = resolveBlockLayout(parentBlock.layout ?? DEFAULT_BLOCK_LAYOUT, viewport).span\n if (resolved.span < surfaceCols) {\n // Explicit partial span → proportional width\n rowChildStyle = {\n flexBasis: `${(resolved.span / parentCols) * 100}%`,\n flexGrow: 0,\n flexShrink: 0,\n }\n } else {\n // Default/full-width span → equal distribution\n rowChildStyle = { flexGrow: 1, flexShrink: 1, flexBasis: '0' }\n }\n }\n\n // Hoist layout-positioning props (margin/maxWidth/minWidth) to the wrapper div so\n // grid-item centering works (the inner block element is usually width:100%). Flex\n // hints hoist here too so a row-container child's authored ratio reaches the flex\n // item (the wrapper) rather than the inner block.\n const hoistedStyle: React.CSSProperties = {}\n if (block.style) {\n for (const key of LAYOUT_HOIST_KEYS) {\n const val = (block.style as React.CSSProperties)[key]\n if (val !== undefined) {\n ;(hoistedStyle as Record<string, unknown>)[key] = val\n }\n }\n }\n // Auto-center when maxWidth is set without an explicit margin.\n if (\n hoistedStyle.maxWidth !== undefined &&\n hoistedStyle.margin === undefined &&\n hoistedStyle.marginLeft === undefined &&\n hoistedStyle.marginRight === undefined\n ) {\n hoistedStyle.margin = '0 auto'\n // An auto-centred max-width block FILLS up to its max width, as a block\n // box with `max-width` + `margin: 0 auto` does in normal flow. Inside a\n // flex column or a grid cell, auto inline margins cancel `stretch`, so\n // without an explicit width the wrapper shrank to its content and the\n // inner `width:100%` resolved against that shrunken box (\n // a two-pane doc shell collapsed to 307 px and the panes stacked unless\n // the selected text was long, and content columns narrowed).\n // Not applied where the block keeps its own width: an intrinsic block\n // (button, badge), a row cell (its flex basis is the width), a column\n // child with a span-derived width, or an authored non-100% width.\n const authoredWidth = (block.style as React.CSSProperties | undefined)?.width\n if (\n sizing !== 'intrinsic' &&\n !isRowContainer &&\n columnChildWidth === undefined &&\n (authoredWidth === undefined || authoredWidth === '100%')\n ) {\n hoistedStyle.width = '100%'\n }\n }\n\n // Interaction states (block.states) are rendered as scoped `:hover`/`:active`/\n // `:focus-visible` CSS rules elsewhere; here we add a default `transition` to\n // the base wrapper style so the state change animates. Authors can still\n // override via `block.style.transition`, and `prefers-reduced-motion`\n // (SURFACE_BASE_CSS) neutralises it for users who opt out.\n const hasStates = block.states !== undefined && block.states !== null\n const transitionStyle: React.CSSProperties =\n hasStates && (block.style as React.CSSProperties | undefined)?.transition === undefined\n ? { transition: 'all var(--pw-duration-fast, 150ms) var(--pw-easing, ease)' }\n : {}\n\n // GRID items default to min-width:auto, which lets nowrap/max-content content\n // leak its intrinsic width into track sizing even under overflow:hidden\n // (measured: a marquee pushed the whole page 63px). Zero it for grid items\n // only — on FLEX children min-width:auto is load-bearing (equal-distribution\n // rows keep children at least min-content wide; zeroing it made a highlighted\n // word stretch to half the row). An author's own minWidth (hoisted) wins.\n const isGridItem = !parentOwnsLayout || parentType === 'grid'\n return {\n ...(isGridItem ? { minWidth: 0 } : {}),\n ...(!parentOwnsLayout ? { gridColumn: `span ${resolved.span} / span ${resolved.span}` } : {}),\n ...(resolved.offset !== undefined && !parentOwnsLayout\n ? { gridColumnStart: resolved.offset + 1 }\n : {}),\n ...(columnChildWidth !== undefined ? { width: columnChildWidth } : {}),\n ...(rowChildStyle ?? {}),\n ...(resolved.order !== undefined ? { order: resolved.order } : {}),\n ...(resolved.hidden ? { display: 'none' } : {}),\n ...transitionStyle,\n ...hoistedStyle,\n }\n}\n\n/**\n * Render a single block recursively.\n * parentBlock is used to determine the CSS strategy for nested blocks.\n * entitlementCheck gates unentitled blocks.\n * dynamicBlocks provides dynamic block descriptors for fallback rendering.\n */\nfunction renderBlock(\n { block: rawBlock, context, components }: BlockRendererProps,\n parentBlock?: Block,\n entitlementCheck?: (blockType: string) => boolean,\n dynamicBlocks?: ReadonlyMap<string, DynamicBlockDescriptor>,\n renderBlockWrapper?: RenderBlockWrapperFn\n): React.ReactNode {\n // Per-prop responsive styles (block.style values that are `{ xs?, … }` maps)\n // can't be expressed inline as media queries — flatten them to their base\n // value here so the inline path (this block + computeBlockLayoutStyle hoists)\n // sees a flat `Record<string,string>`; the larger-breakpoint values are\n // emitted as scoped media-query CSS by collectResponsiveStyleCss.\n const block = applyRowStacking(\n flattenResponsiveStyle(rawBlock),\n (context.viewport ?? 'lg') as BreakpointName,\n components\n )\n // Layout applies to EVERY path below (static/dynamic/unknown/gated) so installed\n // dynamic blocks get the same grid span/width/centering as static ones. Previously\n // only the static path applied it → full-span dynamic sections collapsed side-by-side.\n const layoutStyle = computeBlockLayoutStyle(\n block,\n parentBlock,\n (context.viewport ?? 'lg') as BreakpointName,\n components[block.type]?.sizing\n )\n\n // Scope stamp. A viewport audit needs to see the declaration in the DOM to\n // say \"viewport was declared but the block does not reach the edge\"; the\n // style alone carries the result, not the declaration.\n const scopeAttr =\n resolveWidthScope(block, (context.viewport ?? 'lg') as BreakpointName) === 'viewport'\n ? { 'data-pw-width-scope': 'viewport' }\n : {}\n\n // Gate check — show placeholder for unentitled blocks\n // Dynamic blocks with descriptors are entitled (installed + built)\n if (entitlementCheck && !entitlementCheck(block.type) && !dynamicBlocks?.has(block.type)) {\n return emitBlockWrapper(\n block,\n baseWrapperProps(block, layoutStyle, scopeAttr),\n <GatedBlockPlaceholder blockId={block.id} blockType={block.type} />,\n parentBlock,\n renderBlockWrapper\n )\n }\n\n // Install-only render — when the world has the atom\n // installed (CDN bundle URL on the descriptor) the dynamic wrapper\n // takes over. `customComponents` may still supply test/preview-time\n // component overrides, but the legacy `defaultBlockComponents` map is\n // gone; unmatched block types render as \"Unknown block\" placeholders.\n const dynamicDescriptor = dynamicBlocks?.get(block.type)\n if (dynamicDescriptor) {\n let dynamicChildren: React.ReactNode = null\n if (block.children && block.children.length > 0) {\n dynamicChildren = block.children.map((child) =>\n renderBlock(\n { block: child, context, components },\n block,\n entitlementCheck,\n dynamicBlocks,\n renderBlockWrapper\n )\n )\n }\n return emitBlockWrapper(\n block,\n { ...baseWrapperProps(block, layoutStyle, scopeAttr), 'data-dynamic-block': block.type },\n <BlockErrorBoundary blockId={block.id} blockType={block.type}>\n <DynamicBlockWrapper descriptor={dynamicDescriptor} block={stripHoistedStyle(block)} context={context}>\n {dynamicChildren}\n </DynamicBlockWrapper>\n </BlockErrorBoundary>,\n parentBlock,\n renderBlockWrapper\n )\n }\n\n const Component = components[block.type]\n\n if (!Component) {\n console.warn(`Unknown block type: ${block.type}`)\n // Render children so a partial subtree still shows when a block type isn't\n // installed (e.g. an uninstalled \"Container\" wrapper), but DON'T surface a\n // visible \"Unknown block: <type>\" placeholder to end users on published /\n // preview surfaces — that read as a broken page. The console.warn above and\n // the `data-unknown-type` attribute keep it diagnosable, and the authoring\n // editor uses its own EditableBlock placeholder, so nothing is lost there.\n let unknownChildren: React.ReactNode = null\n if (block.children && block.children.length > 0) {\n unknownChildren = block.children.map((child) =>\n renderBlock(\n { block: child, context, components },\n block,\n entitlementCheck,\n dynamicBlocks,\n renderBlockWrapper\n )\n )\n }\n return emitBlockWrapper(\n block,\n { ...baseWrapperProps(block, layoutStyle, scopeAttr), 'data-unknown-type': block.type },\n <>{unknownChildren}</>,\n parentBlock,\n renderBlockWrapper\n )\n }\n\n // Recursively render children — current block becomes the parent\n let children: React.ReactNode = null\n if (block.children && block.children.length > 0) {\n children = block.children.map((child) =>\n renderBlock(\n { block: child, context, components },\n block,\n entitlementCheck,\n dynamicBlocks,\n renderBlockWrapper\n )\n )\n }\n\n // TODO: When FormBlock contract includes `bindToEntity` prop,\n // call attachFormEntityBridge(bus, entityStore, { formId: block.id, ...block.props.bindToEntity })\n // Requires: platform/entities capability active (platform/input retired).\n // See packages/runtime/src/forms/form-entity-bridge.ts for the bridge implementation.\n\n return emitBlockWrapper(\n block,\n baseWrapperProps(block, layoutStyle, scopeAttr),\n <BlockErrorBoundary blockId={block.id} blockType={block.type}>\n <Component block={stripHoistedStyle(block)} props={block.props ?? {}} context={context}>\n {children}\n </Component>\n </BlockErrorBoundary>,\n parentBlock,\n renderBlockWrapper\n )\n}\n\n// ============================================================\n// BASE CSS STANDARD (box-sizing reset)\n// ============================================================\n\n/**\n * Scoped box-sizing reset injected at the surface render root.\n *\n * `box-sizing` is NOT an inherited CSS property, so setting it only on the\n * `[data-pw-surface]` root would leave every descendant at the browser\n * default `content-box`. Under `content-box`, a block declared `width:100%`\n * with padding (e.g. `layout/section` padding:80) computes its border-box\n * width as `100% + padding` and overflows its parent → horizontal scroll.\n * A descendant selector (`[data-pw-surface] *`) is therefore required so\n * every block inside the surface respects its declared width.\n *\n * The reset is scoped to the `[data-pw-surface]` subtree (root + descendants\n * + their generated `::before`/`::after` boxes) rather than emitted as a\n * global `*{}` rule so it cannot leak into and reset a host page that embeds\n * the surface. This makes the standard ship from the runtime itself — a host\n * app, the embed bundle, and a preview tool all inherit it for free.\n */\nconst SURFACE_BASE_CSS =\n '[data-pw-surface],' +\n '[data-pw-surface] *,' +\n '[data-pw-surface] *::before,' +\n '[data-pw-surface] *::after{box-sizing:border-box}' +\n // Horizontal-overflow guard. Reference pages protect themselves with\n // body{overflow-x:hidden}; a surface must not rely on its host for that.\n // `clip` (not `hidden`) so no scroll container is created and position:sticky\n // descendants keep working.\n '[data-pw-surface]{overflow-x:clip}' +\n // Surface root paints the THEME ground (light/dark). Without this the\n // root stays transparent and content OUTSIDE a card (a bare heading/section)\n // shows the host page's own background — fine in light mode, but in dark mode\n // (derived dark vars) it left light text on a white page → unreadable. Painting\n // background+color from the tokens makes the whole surface follow the mode\n // (the dark <style> block re-resolves --pw-color-* under [data-pw-theme]/@media).\n // Scoped to the root only (not descendants) so blocks still set their own.\n '[data-pw-surface]{background:var(--pw-color-background);color:var(--pw-color-text);' +\n // The BODY FONT, bound on the root like the ground. Only the published\n // theme.css bound it (on html,body), so a serif-bodied theme (rose) read\n // serif on the published page and in the host font on the canvas and in an\n // embed. Blocks inherit it; a block that sets its own font still wins.\n // `inherit` keeps the host font when a theme declares none.\n 'font-family:var(--pw-font-family,inherit);font-size:var(--pw-font-size-base,inherit);' +\n 'line-height:var(--pw-line-height-body,inherit)}' +\n // Controls take the surface font. Browsers give button, input,\n // select and textarea their OWN system font instead of inheriting, so a\n // themed page showed its body face everywhere except in its controls (a\n // serif theme rendered sans-serif buttons). Family only: sizes and colours stay the\n // block's. :where() keeps specificity at zero so a block's own font wins.\n '[data-pw-surface] :where(button,input,select,textarea,optgroup){font-family:inherit}' +\n // Centralised keyboard focus ring (WCAG 2.4.7/2.4.11) — every focusable element\n // inside the surface gets the theme's --pw-focus-ring-* (with on-brand AA fallbacks)\n // instead of each block hard-coding (or dropping) a ring. :where() = zero\n // specificity so a block can still override. A tenant re-skin changes the ring in\n // one place; it can never silently lose focus visibility.\n '[data-pw-surface] :where(a,button,input,select,textarea,[tabindex]:not([tabindex=\"-1\"])):focus-visible{' +\n 'outline:var(--pw-focus-ring-width,2px) solid var(--pw-focus-ring-color,#4f46e5);' +\n 'outline-offset:var(--pw-focus-ring-offset,2px)}' +\n // Named animation keyframes shipped from the runtime so a block can drive\n // motion via `block.style.animation: 'pw-pulse 1.5s ease-in-out infinite'` (or\n // pw-marquee / pw-fade-in) WITHOUT each surface defining @keyframes (block.style\n // can't). Names are pw-* to avoid host-page collision. Covers the soundwave-pulse\n // / logo-marquee patterns that previously had no offline-capable expression.\n '@keyframes pw-pulse{0%,100%{opacity:1}50%{opacity:.45}}' +\n '@keyframes pw-fade-in{from{opacity:0}to{opacity:1}}' +\n '@keyframes pw-marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}' +\n // Batch-1 animation library — entrance/loop motion blocks can drive via\n // block.style.animation without defining @keyframes.\n '@keyframes pw-slide-up{from{transform:translateY(8px);opacity:0}to{transform:translateY(0);opacity:1}}' +\n '@keyframes pw-slide-down{from{transform:translateY(-8px);opacity:0}to{transform:translateY(0);opacity:1}}' +\n '@keyframes pw-scale-in{from{transform:scale(.96);opacity:0}to{transform:scale(1);opacity:1}}' +\n '@keyframes pw-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}' +\n '@keyframes pw-bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-25%)}}' +\n // Spring ENTRANCE (Dalga 1, core (d)). pw-bounce is a vertical loop and the\n // theme's --pw-easing-bounce token had no entrance keyframe to ride on, so\n // delivered apps reached for pw-pulse. The overshoot is the keyframe's own\n // timing function: `animation: pw-spring-in .4s` springs with no easing\n // named, a theme re-tunes it through the token, and the fallback is the\n // token's canonical default (surface-theme.ts). Reduced-motion gated below.\n '@keyframes pw-spring-in{from{transform:scale(.9);opacity:0;' +\n 'animation-timing-function:var(--pw-easing-bounce,cubic-bezier(0.34, 1.56, 0.64, 1))}' +\n 'to{transform:scale(1);opacity:1}}' +\n // Interaction-state transitions (theme motion tokens): every interactive\n // element eases its colour/elevation changes instead of snapping — the\n // micro-polish half of hover/focus/pressed feedback that inline block\n // styles cannot express (pseudo-states need a stylesheet). :where() keeps\n // specificity at zero so any block's own transition wins; the property\n // list is colour/elevation-only (no `all`) so layout-affecting properties\n // never animate by accident. Durations/easing come from the theme's motion\n // tokens with the old instant behaviour recoverable per-theme by setting\n // them to 0ms. The reduced-motion rule below already neutralises these.\n '[data-pw-surface] :where(a,button,input,select,textarea,[role=\"button\"]):not(:disabled){' +\n 'transition:background-color var(--pw-duration-fast,150ms) var(--pw-easing,ease),' +\n 'color var(--pw-duration-fast,150ms) var(--pw-easing,ease),' +\n 'border-color var(--pw-duration-fast,150ms) var(--pw-easing,ease),' +\n 'box-shadow var(--pw-duration-fast,150ms) var(--pw-easing,ease),' +\n 'opacity var(--pw-duration-fast,150ms) var(--pw-easing,ease),' +\n 'filter var(--pw-duration-fast,150ms) var(--pw-easing,ease)}' +\n // Honour reduced-motion: neutralise pw-* animations + transitions for users who\n // opt out (a11y). Covers pseudo-elements too.\n '@media (prefers-reduced-motion:reduce){[data-pw-surface] *,[data-pw-surface] *::before,[data-pw-surface] *::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}' +\n // iOS safe-area insets. Host apps already set `viewport-fit=cover`, so\n // env(safe-area-inset-*) is live but nothing consumed it → on notch /\n // Dynamic-Island / home-indicator devices sticky navbars tuck under the notch\n // and trailing footers/bottom bars sit under the home indicator. These rules\n // make EVERY published surface (embed, preview, host app) inset-aware at a\n // single point. The surface root takes the horizontal insets; navbar/footer\n // block roots (which emit data-block-type) take the vertical ones. max(N,env)\n // keeps each ≥ its normal value when no inset exists (env resolves to 0px),\n // so a static mid-page navbar only ever gains pad on an actual inset device.\n '[data-pw-surface]{' +\n 'padding-left:max(0px,env(safe-area-inset-left));' +\n 'padding-right:max(0px,env(safe-area-inset-right))}' +\n '[data-pw-surface] [data-block-type=\"navbar\"]{' +\n 'padding-top:max(12px,env(safe-area-inset-top))}' +\n '[data-pw-surface] [data-block-type=\"footer\"]{' +\n 'padding-bottom:max(48px,env(safe-area-inset-bottom))}'\n\n// ============================================================\n// SURFACE RENDERER COMPONENT\n// ============================================================\n\n/**\n * SurfaceRenderer component\n *\n * Renders a surface definition to React components. surface\n * definitions come from the pack-derived registry (the host's installed\n * blocks and receipts) rather than hardcoded starter exports.\n */\nexport function SurfaceRenderer({\n surface,\n capabilities = [],\n theme = 'light',\n projectTheme,\n projectDarkTheme,\n basePath = '',\n onEvent,\n components: customComponents,\n className,\n viewport: viewportProp,\n gap,\n padding,\n imageAdapter,\n entityFacade,\n connections,\n renderBlockWrapper,\n interactionMode = 'live',\n}: SurfaceRendererProps): React.ReactElement {\n // Use explicit viewport or auto-detect\n const autoViewport = useViewport()\n const viewport = viewportProp ?? autoViewport\n // `onEvent` is a pure notification — it ALWAYS flows, even in inert mode, so\n // the host (editor/preview) can observe interactions and give feedback. The\n // `interactionMode` flag (threaded into BlockContext below) is what gates real\n // side-effects: blocks must skip navigation / data writes when `inert`.\n const effectiveOnEvent = onEvent\n\n // Canonical bus → renderer `onEvent` bridge. The `BehaviorSurfaceProvider`\n // subscribes this to the bus' global `*` wildcard, so every block-emitted\n // `SurfaceEventDescriptor` (contracts vocabulary: namespaced `type` string +\n // `surfaceId`/`payload`/`timestamp`) reaches the renderer's `onEvent` handler\n // — i.e. `DataBoundSurfaceRenderer.handleEvent`, which dispatches a form's\n // `payload.action` setState and a block's `action` prop. The handler consumes\n // the legacy `SurfaceEvent` shape (`{type, blockId, payload}`), so we project\n // the descriptor onto it: the canonical namespaced type maps to its legacy\n // equivalent, with anything else collapsing to `'custom'` (blockId/payload pass\n // through unchanged — that is all the dispatcher reads).\n const busOnEvent = React.useMemo(() => {\n if (!effectiveOnEvent) return undefined\n return (event: SurfaceEventDescriptor): void => {\n // Surface lifecycle events (`surface:load`/`surface:unload`) are bus-internal\n // and were never part of the legacy `onEvent` host/dispatcher contract — only\n // block interactions flow to the renderer's handler. Skip them so the host\n // callback (and the DataBound dispatcher) see exactly the block-level events\n // they saw under the retired `context.onEvent` path.\n if (event.type.startsWith('surface:')) return\n effectiveOnEvent({\n type: mapCanonicalEventType(event.type),\n blockId: event.blockId ?? '',\n ...(event.payload !== undefined ? { payload: event.payload } : {}),\n canonicalType: event.type,\n })\n }\n }, [effectiveOnEvent])\n // Build capability map\n const capabilityMap = React.useMemo(() => {\n const map = new Map<CapabilityType, CapabilityProvider>()\n for (const cap of capabilities) {\n map.set(cap.type, cap)\n }\n return map\n }, [capabilities])\n\n // Build block context (theme removed from BlockContext)\n const context: BlockContext = React.useMemo(\n () => ({\n capabilities: capabilityMap,\n basePath,\n onEvent: effectiveOnEvent,\n imageAdapter,\n viewport,\n interactionMode,\n }),\n [capabilityMap, basePath, effectiveOnEvent, imageAdapter, viewport, interactionMode]\n )\n\n // Create image component override if adapter is provided\n const imageComponentOverride = React.useMemo(() => {\n if (!imageAdapter) return undefined\n return { image: createImageBlockWithAdapter(imageAdapter) }\n }, [imageAdapter])\n\n // Merge component registries (image adapter takes precedence over custom components)\n // `defaultBlockComponents` removed; `customComponents`\n // is now the only static seed for the registry alongside the image override.\n const componentRegistry = React.useMemo(\n () => mergeComponentRegistries(customComponents, imageComponentOverride),\n [customComponents, imageComponentOverride]\n )\n\n // Read entitlements from context\n const { isBlockEntitled, loaded: entitlementsLoaded } = useEntitlements()\n const entitlementCheck = entitlementsLoaded ? isBlockEntitled : undefined\n\n // Read dynamic block descriptors\n const { blocks: dynamicBlockMap } = useDynamicBlocks()\n\n // The root FLOWS; the measure lives in an INNER container.\n //\n // If the root carried grid + `maxWidth` + `margin:0 auto`, persistent\n // navigation chrome would sit inside the centred box too (at 1536px a rail\n // would start 218px in from the screen edge). The rule: chrome belongs to\n // the viewport, the body to the measure.\n //\n // Gap/padding come from CSS variables so the `surface.theme.layout` tokens\n // take effect; the variables are set on this element through `themeVars`.\n const rootLayoutStyle = resolveSurfaceRootStyle(gap ?? 'var(--pw-layout-surface-gap)', 0)\n const measureStyle = resolveMeasureStyle(\n viewport,\n gap ?? 'var(--pw-layout-surface-gap)',\n padding ?? 'var(--pw-layout-surface-padding)'\n )\n\n // Resolve appearance atom (theme + layout + styleVariables unified).\n // Theme tokens + custom CSS vars both live inside surface.appearance.config.\n const appearanceVars = React.useMemo(\n () => resolveAppearanceVars(surface.appearance, projectTheme),\n [surface.appearance, projectTheme]\n )\n\n const rootStyle = React.useMemo(\n () => ({\n ...rootLayoutStyle,\n ...appearanceVars,\n }),\n [rootLayoutStyle, appearanceVars]\n )\n\n // Surface-scope key for every emitted <style> rule. The embed autoloader\n // hydrates EVERY [data-pw-surface] element in a document, so a host page can\n // hold several surfaces at once; scoping by the ATTRIBUTE VALUE keeps each\n // surface's rules off its siblings. Undefined only when a surface has no id\n // (isolated test renders), where the historical value-less selector is fine.\n const scopeId = surface.id || undefined\n\n // Per-breakpoint visibility (hideOn/showOn). Media queries can't be\n // expressed inline, so the runtime emits scoped CSS rules — keyed by each\n // block's `data-block-id` — into the surface stylesheet (alongside the\n // box-sizing reset). Empty string when no block uses hideOn/showOn → existing\n // surfaces emit zero extra bytes.\n const visibilityCss = React.useMemo(\n () => collectVisibilityCss(surface.blocks, scopeId),\n [surface.blocks, scopeId]\n )\n\n // Interaction-state styling (block.states). Pseudo-classes (:hover/:active/\n // :focus-visible) can't be expressed inline, so the runtime emits scoped CSS\n // rules — keyed by each block's `data-block-id` — alongside the visibility CSS.\n // Empty string when no block uses `states` → existing surfaces emit zero bytes.\n const statesCss = React.useMemo(\n () => collectStatesCss(surface.blocks, scopeId),\n [surface.blocks, scopeId]\n )\n\n // Conditional-state styling (block.conditionalStates) — aria/data/disabled/\n // checked/:has variants. Attribute selectors and these pseudo-classes can't be\n // expressed inline, so the runtime emits scoped `[data-block-id]<selector>`\n // rules (with `!important` to beat component inline defaults). Empty string\n // when no block uses `conditionalStates` → existing surfaces emit zero bytes.\n const conditionalStatesCss = React.useMemo(\n () => collectConditionalStatesCss(surface.blocks, scopeId),\n [surface.blocks, scopeId]\n )\n\n // Per-prop responsive styles (block.style values that vary by breakpoint).\n // The base (xs) value is applied inline by the renderer (flattenResponsiveStyle);\n // the larger breakpoints are emitted here as scoped min-width media-query rules\n // keyed by each block's `data-block-id`. Empty string when no block uses a\n // responsive style value → existing surfaces emit zero bytes.\n const responsiveStyleCss = React.useMemo(\n () => collectResponsiveStyleCss(surface.blocks, scopeId),\n [surface.blocks, scopeId]\n )\n\n // Group-hover styling (block.groupRoot + descendant block.groupStates.hover) —\n // a parent marked groupRoot, on :hover, restyles descendants declaring\n // groupStates. The ancestor `:hover` + descendant relationship can't be\n // expressed inline, so the runtime emits scoped\n // `[data-block-id=\"<root>\"]:hover [data-block-id=\"<desc>\"]{…}` rules keyed by\n // both block ids. Empty string when no block uses groupStates under a\n // groupRoot → existing surfaces emit zero bytes.\n const groupStatesCss = React.useMemo(\n () => collectGroupStatesCss(surface.blocks, scopeId),\n [surface.blocks, scopeId]\n )\n\n // Dark theme variant (appearance.config.darkTheme). Light vars stay inline on\n // the root; the dark vars override under BOTH `[data-pw-theme=\"dark\"]` (manual\n // force) AND `@media (prefers-color-scheme:dark)` (auto). Empty string when no\n // darkTheme is declared.\n const darkThemeCss = React.useMemo(() => {\n // Same `projectTheme` middle layer the light vars above resolve with —\n // otherwise a project-themed page is on-brand in light and platform-default\n // in dark.\n const darkVars = resolveAppearanceDarkVars(surface.appearance, projectTheme, projectDarkTheme)\n // `appearance.config.mode.policy` decides whether the dark rule\n // exists at all (light), always applies (dark) or follows the device.\n return buildDarkThemeCss(darkVars, scopeId, resolveAppearanceMode(surface.appearance?.config).policy)\n }, [surface.appearance, projectTheme, projectDarkTheme, scopeId])\n\n // Surface keyframe registry (appearance.config.keyframes) — arbitrary named\n // @keyframes a block can reference via `block.style.animation: 'pw-kf-<name> …'`\n // (each declared name is prefixed `pw-kf-`). Empty string when no registry is\n // declared. The prefers-reduced-motion gate in SURFACE_BASE_CSS neutralises\n // these for users who opt out (it matches by animation, not keyframe name).\n const keyframesCss = React.useMemo(\n () => buildKeyframesCss(resolveAppearanceKeyframes(surface.appearance)),\n [surface.appearance]\n )\n\n // extract form→entity bridge configs from surface capabilities\n const entityFormBindings = React.useMemo<readonly FormEntityBridgeConfig[] | undefined>(() => {\n // NO LONGER GATED ON THE ENTITY FACADE. A form now writes to a SOURCE, and\n // a rest-backed source has no facade behind it — requiring one here meant\n // a form pointed at anyone else's endpoint silently never attached.\n if (!surface.capabilities?.length) return undefined\n const entityCap = surface.capabilities.find((c) => isCapability(c, 'platform/entities'))\n const formBindings = entityCap?.config?.formBindings\n if (!Array.isArray(formBindings) || formBindings.length === 0) return undefined\n return formBindings as readonly FormEntityBridgeConfig[]\n }, [surface.capabilities])\n\n /**\n * The read sources, so a form binding's `sourceId` can be resolved.\n *\n * The same declaration the persistence capability already carries — a form\n * writes to something the page also knows how to read, which is what makes\n * \"refresh after write\" meaningful.\n */\n const formWriteSources = React.useMemo<readonly SurfaceDataSourceDefinition[] | undefined>(() => {\n const cap = surface.capabilities?.find((c) => isCapability(c, 'platform/persistence'))\n const sources = cap?.config?.dataSources\n return Array.isArray(sources) && sources.length > 0\n ? (sources as readonly SurfaceDataSourceDefinition[])\n : undefined\n }, [surface.capabilities])\n\n // Render blocks — in scope groups, keeping source order.\n //\n // `container` groups are wrapped in the measured container; `viewport`\n // groups become DIRECT children of the root. The escape is PLACEMENT, not a\n // CSS trick: `width:100vw` counts the scrollbar too and would produce ~15px\n // of horizontal overflow on every page with a vertical scrollbar.\n const renderOne = (block: Block) =>\n renderBlock(\n {\n block,\n context,\n components: componentRegistry,\n },\n undefined,\n entitlementCheck,\n dynamicBlockMap,\n renderBlockWrapper\n )\n\n const renderedBlocks = chunkByWidthScope(surface.blocks, viewport).map((chunk, i) =>\n chunk.scope === 'viewport' ? (\n <React.Fragment key={`pw-vp-${i}`}>{chunk.blocks.map(renderOne)}</React.Fragment>\n ) : (\n <div key={`pw-ct-${i}`} data-pw-measure=\"\" style={measureStyle}>\n {chunk.blocks.map(renderOne)}\n </div>\n )\n )\n\n return (\n // SurfaceConnectionsContext carries the connections\n // context (world connections + engine registry) to blocks on the\n // engine-bridge path. null (host didn't opt in) = today's behavior.\n <SurfaceConnectionsContext.Provider value={connections ?? null}>\n {/*. EntityFacadeContext.Provider wraps the entire render tree */}\n <EntityFacadeContext.Provider value={entityFacade ?? null}>\n <BehaviorSurfaceProvider\n surfaceId={surface.id ?? ''}\n {...(entityFormBindings ? { entityFormBindings } : {})}\n {...(formWriteSources ? { dataSources: formWriteSources } : {})}\n {...(busOnEvent ? { onEvent: busOnEvent } : {})}\n blocks={surface.blocks}\n >\n {/* Shell selection (split shells) — ONE store per surface, so a list, a\n detail pane and any header reading the same key agree. `syncUrl`\n follows interactionMode: an inert canvas selects without moving the\n host's address bar. */}\n <ShellSelectionProvider syncUrl={interactionMode !== 'inert'}>\n <div\n className={className}\n style={rootStyle}\n // Carries the surface id so scoped rules can target THIS surface only.\n // Empty string when the surface has no id — still matches the bare\n // `[data-pw-surface]` selector the base CSS and the embed autoloader use.\n data-pw-surface={scopeId ?? ''}\n data-surface-renderer\n data-theme={theme}\n data-viewport={viewport}\n >\n {/* BASE CSS standard: scoped box-sizing reset, first child so it\n applies before any block paints. Scoped to [data-pw-surface] so\n it cannot leak to a host page. */}\n <style data-pw-base-css>{SURFACE_BASE_CSS}</style>\n {/* Per-breakpoint visibility (hideOn/showOn) — media-query rules\n keyed by block id. Only present when a block opts in. */}\n {visibilityCss ? (\n <style data-pw-visibility-css>{visibilityCss}</style>\n ) : null}\n {/* Interaction-state styling (block.states) — scoped\n :hover/:active/:focus-visible rules keyed by block id. Only\n present when a block opts in. */}\n {statesCss ? <style data-pw-states-css>{statesCss}</style> : null}\n {/* Conditional-state styling (block.conditionalStates) — scoped\n aria/data/disabled/checked/:has rules keyed by block id. Only\n present when a block opts in. */}\n {conditionalStatesCss ? (\n <style data-pw-conditional-states-css>{conditionalStatesCss}</style>\n ) : null}\n {/* Per-prop responsive styles (block.style breakpoint maps) —\n min-width media-query rules keyed by block id. Only present when a\n block opts in; base value stays inline. */}\n {responsiveStyleCss ? (\n <style data-pw-responsive-style-css>{responsiveStyleCss}</style>\n ) : null}\n {/* Group-hover styling (block.groupRoot + descendant\n block.groupStates) — scoped\n `[data-block-id=\"<root>\"]:hover [data-block-id=\"<desc>\"]` rules.\n Only present when a block opts in. */}\n {groupStatesCss ? (\n <style data-pw-group-states-css>{groupStatesCss}</style>\n ) : null}\n {/* Dark theme variant (appearance.config.darkTheme) — scoped\n force-dark + prefers-color-scheme:dark var overrides. Only present\n when a darkTheme is declared. */}\n {darkThemeCss ? <style data-pw-dark-theme-css>{darkThemeCss}</style> : null}\n {/* Surface keyframe registry (appearance.config.keyframes) — arbitrary\n @keyframes pw-kf-<name> a block can reference via\n block.style.animation. Only present when a registry is declared. */}\n {keyframesCss ? <style data-pw-keyframes-css>{keyframesCss}</style> : null}\n {renderedBlocks}\n </div>\n </ShellSelectionProvider>\n </BehaviorSurfaceProvider>\n </EntityFacadeContext.Provider>\n </SurfaceConnectionsContext.Provider>\n )\n}\n\n// ============================================================\n// BLOCK RENDERER (STANDALONE)\n// ============================================================\n\n/**\n * Standalone block renderer\n *\n * Renders a single block without a surface wrapper.\n */\nexport function BlockRenderer({\n block,\n capabilities = [],\n theme: _theme = 'light',\n basePath = '',\n onEvent,\n components: customComponents,\n imageAdapter,\n}: {\n block: Block\n capabilities?: CapabilityProvider[]\n theme?: 'light' | 'dark'\n basePath?: string\n onEvent?: SurfaceRendererProps['onEvent']\n components?: Partial<BlockComponentRegistry>\n imageAdapter?: ImageAdapter\n}): React.ReactElement {\n // Build capability map\n const capabilityMap = React.useMemo(() => {\n const map = new Map<CapabilityType, CapabilityProvider>()\n for (const cap of capabilities) {\n map.set(cap.type, cap)\n }\n return map\n }, [capabilities])\n\n // Build block context (theme removed from BlockContext)\n const context: BlockContext = React.useMemo(\n () => ({\n capabilities: capabilityMap,\n basePath,\n onEvent,\n imageAdapter,\n }),\n [capabilityMap, basePath, onEvent, imageAdapter]\n )\n\n // Create image component override if adapter is provided\n const imageComponentOverride = React.useMemo(() => {\n if (!imageAdapter) return undefined\n return { image: createImageBlockWithAdapter(imageAdapter) }\n }, [imageAdapter])\n\n // Merge component registries\n // `defaultBlockComponents` retired; `customComponents`\n // is the only static seed (defaulted to {}) alongside the image override.\n const componentRegistry = React.useMemo(\n () => mergeComponentRegistries(customComponents, imageComponentOverride),\n [customComponents, imageComponentOverride]\n )\n\n return renderBlock({ block, context, components: componentRegistry }) as React.ReactElement\n}\n\n// ============================================================\n// UTILITY FUNCTIONS\n// ============================================================\n\n/**\n * Get all block IDs from a surface\n */\nexport function getBlockIds(blocks: readonly Block[]): string[] {\n const ids: string[] = []\n\n function collectIds(block: Block): void {\n ids.push(block.id)\n if (block.children) {\n for (const child of block.children) {\n collectIds(child)\n }\n }\n }\n\n for (const block of blocks) {\n collectIds(block)\n }\n\n return ids\n}\n\n/**\n * Find a block by ID in a surface\n */\nexport function findBlockById(blocks: readonly Block[], id: string): Block | undefined {\n for (const block of blocks) {\n if (block.id === id) {\n return block\n }\n if (block.children) {\n const found = findBlockById(block.children, id)\n if (found) {\n return found\n }\n }\n }\n return undefined\n}\n\n/**\n * Update a block by ID in a surface\n */\nexport function updateBlockById(\n blocks: readonly Block[],\n id: string,\n updates: Partial<Block>\n): Block[] {\n return blocks.map((block) => {\n if (block.id === id) {\n return { ...block, ...updates }\n }\n if (block.children) {\n return {\n ...block,\n children: updateBlockById(block.children, id, updates),\n }\n }\n return block\n })\n}\n"]}
|
|
@@ -35,4 +35,3 @@ export declare function resolveString(value: string, context: ExpressionContext)
|
|
|
35
35
|
export declare function resolveBlockExpressions(blocks: readonly Block[], data: Record<string, unknown>, helpers?: Record<string, (...args: unknown[]) => unknown>): Block[];
|
|
36
36
|
/** True when this resolved block expanded a `repeat` — its children are clones. */
|
|
37
37
|
export declare function isRepeatExpanded(block: Block | undefined): boolean;
|
|
38
|
-
//# sourceMappingURL=resolve-expressions.d.ts.map
|