@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":"DataBoundSurfaceRenderer.js","sourceRoot":"","sources":["../../src/render/DataBoundSurfaceRenderer.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DataBoundSurfaceRenderer.js","sourceRoot":"","sources":["../../src/render/DataBoundSurfaceRenderer.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Data-Bound Surface Renderer\n *\n * Wrapper component that resolves dataSources, state, and {{expression}} props\n * before passing concrete values to the existing SurfaceRenderer.\n *\n * Architecture (post-refactor):\n * Surface JSON (dataSources + state + {{expr}} in props)\n * -> DataBoundSurfaceRenderer\n * -> DataCapabilityProvider (creates DataService instance)\n * -> DataBoundInner\n * -> useSurfaceData: maps SurfaceDataSourceDefinition → DataSourceDefinition,\n * registers with DataService, fetches via DataService, manages React state\n * -> SurfaceRenderer (unchanged)\n * -> Block components (unchanged)\n *\n * Backward compatible: if no dataSources, passes through with zero overhead.\n *\n * @module @pwfabric/runtime/render/DataBoundSurfaceRenderer\n */\n\nimport * as React from 'react'\nimport { SurfaceRenderer } from './renderer.js'\nimport { resolveBlockExpressions } from './resolve-expressions.js'\nimport { endpointMissingPathValue, resolveEndpoint } from './endpoint.js'\nimport { resolveQueryState } from './query-state.js'\nimport { dataSourceCacheKey, type SurfaceDataCache } from './data-cache.js'\nimport { DataCapabilityProvider, useDataService } from '../data/DataCapabilityProvider.js'\nimport type {\n DataBoundSurfaceRendererProps,\n SurfaceDataSourceDefinition,\n SurfaceAction,\n RuntimeBehavior,\n} from './data-binding-types.js'\nimport type {\n SurfaceEvent,\n SurfaceRendererProps,\n RenderableSurface,\n BlockInteractionMode,\n} from './types.js'\nimport type { Block } from '@pwfabric/core'\nimport type { DataSourceDefinition } from '../data/types.js'\nimport { createEntityDataSource } from '../entity/entity-datasource.js'\nimport { aggregateThrough } from '../entity/aggregate.js'\nimport { SurfaceDataContext } from './surface-data-context.js'\nimport type { EntityFacade } from '../entity/facade.js'\nimport type { EntityAggregate, EntityQuery, EntityTypeId } from '../entity/types.js'\nimport type { SurfaceConnectionsValue } from '../connectors/types.js'\nimport { PLATFORM_PERSISTENCE_CAPABILITY_ID } from '@pwfabric/contracts'\nimport { isCapability } from '../capability/type-mapping.js'\nimport { writeOnlySourceIds } from './write-only-sources.js'\n\n// ============================================================\n// extract dataSources + initialState from persistence config\n// ============================================================\n\n/**\n * consolidated these two seeds under the platform/persistence\n * capability config. DataBoundSurfaceRenderer is the sole consumer.\n */\nfunction extractPersistenceSeeds(surface: {\n readonly capabilities?: RenderableSurface['capabilities']\n}): {\n dataSources: readonly SurfaceDataSourceDefinition[] | undefined\n initialState: Readonly<Record<string, unknown>> | undefined\n behaviors: readonly RuntimeBehavior[] | undefined\n} {\n const binding = surface.capabilities?.find(\n (c) => isCapability(c, PLATFORM_PERSISTENCE_CAPABILITY_ID)\n )\n const cfg = binding?.config as\n | {\n dataSources?: readonly SurfaceDataSourceDefinition[]\n initialState?: Readonly<Record<string, unknown>>\n behaviors?: readonly RuntimeBehavior[]\n }\n | undefined\n return {\n dataSources: cfg?.dataSources,\n initialState: cfg?.initialState,\n // Declared behaviors (shipped by a pattern / authored in JSON). The\n // renderer merges these with host-provided behaviors (the host's store) so a pack\n // can carry its own controls without the host knowing about them.\n behaviors: cfg?.behaviors,\n }\n}\n\n/**\n * A source that could not be served but declares a `fallback`: the caller\n * binds `data` AND records `message` under `__errors.<id>`, so the surface\n * renders honestly (sample data + error flag) instead of empty or crashed.\n */\nclass SourceFallback extends Error {\n constructor(\n message: string,\n readonly data: unknown\n ) {\n super(message)\n this.name = 'SourceFallback'\n }\n}\n\n/**\n * A surface whose ONLY dynamic behaviour is writing (platform/entities\n * formBindings, no persistence dataSources) still needs the full data-bound\n * path: the form→entity bridge dispatches statusKeys through setState and the\n * success/error UI hangs off `visibleWhen: \"{{state.x}}\"` — both live in\n * DataBoundInner's state machinery. Before this check, such a surface fell\n * into the zero-overhead passthrough where visibleWhen was never evaluated\n * and, worse, submits were silently lost (proven live against a real\n * SharePoint list: two submits on a formBindings-only page never reached the\n * connector; adding any read source made the identical form work).\n */\nfunction hasEntityFormBindings(surface: {\n readonly capabilities?: RenderableSurface['capabilities']\n}): boolean {\n const entityCap = surface.capabilities?.find((c) => isCapability(c, 'platform/entities'))\n const formBindings = (entityCap?.config as { formBindings?: readonly unknown[] } | undefined)\n ?.formBindings\n return Array.isArray(formBindings) && formBindings.length > 0\n}\n\n/**\n * The actions a block's `action` prop names, in order.\n *\n * One action or a list of them (`[setState step, setState stepError '']`) —\n * a wizard's \"Next\" has to move the step AND clear the previous step's error\n * in one click. Anything that is not a surface action (a form's `action` is\n * its submit URL string) names none.\n */\nexport function blockActionsOf(value: unknown): readonly SurfaceAction[] {\n if (Array.isArray(value)) return value.filter(isSurfaceAction)\n return isSurfaceAction(value) ? [value] : []\n}\n\nfunction blockTreeHasAction(blocks: readonly Block[] | undefined): boolean {\n if (!blocks) return false\n for (const block of blocks) {\n if (blockActionsOf(block.props?.action).length > 0) return true\n if (blockTreeHasAction(block.children)) return true\n }\n return false\n}\n\n/**\n * Does any block carry a condition or a repeat the renderer has to evaluate?\n *\n * `visibleWhen`/`if` and `repeat` are resolved ONLY on the data-bound path.\n * A static page — no source, no state, no action — takes this path too: on\n * the passthrough a condition would never be read, so the shell's empty\n * brand logo would draw as \"⊟ <name> logo\", and a thank-you gated on\n * `{{state.submitted}}` would show before anything was submitted.\n * An empty condition string is no condition, as in resolveBlock.\n */\nfunction blockTreeHasCondition(blocks: readonly Block[] | undefined): boolean {\n if (!blocks) return false\n for (const block of blocks) {\n const b = block as { visibleWhen?: unknown; if?: unknown; repeat?: unknown }\n for (const expr of [b.visibleWhen, b.if, b.repeat]) {\n if (typeof expr === 'string' && expr.trim()) return true\n }\n if (blockTreeHasCondition(block.children)) return true\n }\n return false\n}\n\n/**\n * Does this surface need the data-bound path — state, expression resolution,\n * the action dispatcher — or can it go straight to SurfaceRenderer?\n *\n * ONE ANSWER FOR EVERY HOST. The renderer's own passthrough check and embed's\n * `needsDataBoundRenderer` used to disagree: embed counted `initialState`, the\n * renderer did not. So a wizard page carrying nothing but `initialState` and\n * buttons with `action` props reached the renderer, fell into the passthrough,\n * and there `visibleWhen` was never evaluated, `repeat` never expanded and no\n * `action` was ever dispatched — the buttons were dead. A block `action` alone\n * needs the path too: it is dispatched nowhere else. So does a block\n * `visibleWhen`/`if`/`repeat` (see blockTreeHasCondition).\n *\n * Host-provided behaviors are a prop, not part of the surface, and are\n * checked by the renderer on top of this.\n */\nexport function surfaceNeedsDataBinding(surface: {\n readonly blocks?: readonly Block[]\n readonly capabilities?: RenderableSurface['capabilities']\n}): boolean {\n const { dataSources, initialState, behaviors } = extractPersistenceSeeds(surface)\n return (\n Boolean(dataSources && dataSources.length > 0) ||\n initialState !== undefined ||\n Boolean(behaviors && behaviors.length > 0) ||\n hasEntityFormBindings(surface) ||\n blockTreeHasAction(surface.blocks) ||\n blockTreeHasCondition(surface.blocks)\n )\n}\n\n// ============================================================\n// TYPES\n// ============================================================\n\ninterface SourceData {\n readonly data: unknown\n readonly loading: boolean\n readonly error: string | null\n /** HTTP status of the last answer; null for a network failure or a non-HTTP kind. */\n readonly status?: number | null\n /** The envelope `returns` unwrapped the list from (`total`, `skip`, `limit` …). */\n readonly meta?: Readonly<Record<string, unknown>> | null\n /** Not fetched: a required path value of the endpoint is empty. */\n readonly idle?: boolean\n /** The resolved request `data` answered (see requestKeyOf). */\n readonly key?: string\n}\n\n// ============================================================\n// SURFACE → RUNTIME SOURCE MAPPING\n// ============================================================\n\n/**\n * Maps a JSON-safe SurfaceDataSourceDefinition to a runtime DataSourceDefinition.\n * Returns null for 'state' kind (handled locally via React state, not DataService).\n */\nfunction mapSurfaceSourceToDefinition(\n source: SurfaceDataSourceDefinition,\n currentState: Record<string, unknown>\n): DataSourceDefinition | null {\n switch (source.kind) {\n case 'static':\n return {\n id: source.id,\n kind: 'static',\n staticData: source.staticData,\n }\n case 'state':\n // State sources read from React state, not managed by DataService\n return null\n case 'rest': {\n if (!source.endpoint) return null\n // `{{state.x}}` placeholders resolve against current state, each value\n // URL-encoded in a mixed endpoint — see resolveEndpoint for why.\n const endpoint = resolveEndpoint(source.endpoint, currentState)\n return {\n id: source.id,\n kind: 'rest' as const,\n endpoint,\n method: source.method ?? 'GET',\n ...(source.headers ? { headers: source.headers } : {}),\n // carry the identity the source names. This branch\n // copied endpoint/method/headers and stopped, so a rest source could\n // declare an identity the fetch would never see.\n ...(source.authProviderRef ? { authProviderRef: source.authProviderRef } : {}),\n // Same omission class as the line above: the source says where its\n // list is and the definition has to carry it, or `fetchRest` hands the\n // binding context a whole JSON body.\n ...(source.returns !== undefined ? { returns: source.returns } : {}),\n // The entity branch resolves `{{state.x}}` inside the query and hands\n // it to the facade; a rest source declared the same query and lost it\n // here. Resolved the same way, applied by the data service after the\n // fetch.\n ...(source.query\n ? { query: resolveQueryState(source.query, currentState) as EntityQuery }\n : {}),\n }\n }\n default:\n return null\n }\n}\n\n// ============================================================\n// useSurfaceData HOOK\n// ============================================================\n\n/**\n * Manages data source fetching, state, and auto-refresh for a data-bound surface.\n *\n * Delegates fetch mechanics to DataService via context.\n * Keeps React state management and expression resolution locally.\n */\ninterface SurfaceDataResult {\n expressionData: Record<string, unknown>\n surfaceState: Record<string, unknown>\n initialLoaded: boolean\n setStateValue: (key: string, value: unknown) => void\n refreshSource: (sourceId: string) => Promise<void>\n fetchAllSources: () => Promise<void>\n}\n\n/** What one fetch of one source came to. */\ntype FetchOutcome =\n | { readonly kind: 'ok'; readonly data: unknown; readonly status: number | null; readonly meta: Readonly<Record<string, unknown>> | null }\n | { readonly kind: 'error'; readonly message: string; readonly status: number | null; readonly fallback?: { readonly data: unknown } }\n\n/** JSON of a source DEFINITION, computed once per definition object. */\nconst definitionJsonCache = new WeakMap<object, string>()\nlet unserialisable = 0\n\nfunction safeJson(value: unknown): string {\n try {\n return JSON.stringify(value) ?? 'undefined'\n } catch {\n // A value that cannot be serialised can never be proven unchanged.\n return `#unserialisable-${++unserialisable}`\n }\n}\n\nfunction definitionJson(source: SurfaceDataSourceDefinition): string {\n let json = definitionJsonCache.get(source)\n if (json === undefined) {\n json = safeJson(source)\n definitionJsonCache.set(source, json)\n }\n return json\n}\n\n/** A REST source whose required path value is empty is not fetched. */\nfunction isIdleSource(source: SurfaceDataSourceDefinition, state: Readonly<Record<string, unknown>>): boolean {\n return source.kind === 'rest' && Boolean(source.endpoint) && endpointMissingPathValue(source.endpoint as string, state)\n}\n\n/**\n * EVERYTHING THAT DECIDES WHAT A SOURCE FETCHES, AS ONE STRING.\n *\n * The definition itself plus whatever it reads from state, RESOLVED: the REST\n * address, the query with its `{{state.*}}` placeholders filled in, a state\n * source's value. A source is refetched when — and only when — this changes.\n *\n * Refetching every source on every `setState` would make a search box writing\n * `state.searchDraft` on each keystroke refetch the product list AND the\n * cart, flashing both loading states, and a menu toggle refetch the whole\n * page. Dependency tracking on the resolved request is exact where\n * key-name extraction is not: `{{state.a ? state.b : state.c}}` depends on `c`\n * only while `a` is false, and the resolved value knows that.\n */\nfunction requestKeyOf(source: SurfaceDataSourceDefinition, state: Readonly<Record<string, unknown>>): string {\n const def = definitionJson(source)\n switch (source.kind) {\n case 'rest': {\n if (!source.endpoint) return def\n if (isIdleSource(source, state)) return `${def}|idle`\n const query = source.query ? safeJson(resolveQueryState(source.query, state)) : ''\n return `${def}|${resolveEndpoint(source.endpoint, state)}|${query}`\n }\n case 'entity': {\n const query = source.query ? safeJson(resolveQueryState(source.query, state)) : ''\n // The resolved aggregate too: a counter whose filter reads\n // `{{state.status}}` must ask again when the status changes.\n const aggregate = source.aggregate ? safeJson(resolveQueryState(source.aggregate, state)) : ''\n return `${def}|${query}|${aggregate}`\n }\n case 'state':\n return `${def}|${safeJson(state[source.id])}`\n default:\n return def\n }\n}\n\nfunction useSurfaceData(\n dataSources: readonly SurfaceDataSourceDefinition[] | undefined,\n initialState: Readonly<Record<string, unknown>> | undefined,\n interactionMode: BlockInteractionMode = 'live',\n entityFacade?: EntityFacade,\n connections?: SurfaceConnectionsValue,\n dataCache?: SurfaceDataCache,\n /** Sources only a form writes to (see write-only-sources): settled, never fetched. */\n writeOnly?: ReadonlySet<string>\n): SurfaceDataResult {\n const dataService = useDataService()\n const writeOnlyRef = React.useRef(writeOnly)\n writeOnlyRef.current = writeOnly\n const dataCacheRef = React.useRef(dataCache)\n dataCacheRef.current = dataCache\n\n // State store\n const [surfaceState, setSurfaceState] = React.useState<Record<string, unknown>>(() => ({\n ...initialState,\n }))\n\n // Source data store — seeded from the host's cache when it has yesterday's\n // rows for a source, so the first frame is not an empty table. The seed is\n // marked loading: the fetch that follows is what makes it today's.\n const [sourceData, setSourceData] = React.useState<Record<string, SourceData>>(() => {\n if (!dataCache || !dataSources) return {}\n const seeded: Record<string, SourceData> = {}\n for (const source of dataSources) {\n const key = dataSourceCacheKey(source, initialState ?? {})\n if (!key) continue\n const hit = dataCache.get(key)\n if (hit !== undefined) {\n seeded[source.id] = { data: hit, loading: true, error: null, key: requestKeyOf(source, initialState ?? {}) }\n }\n }\n return seeded\n })\n // Track whether initial fetch is complete. A page whose every fetched\n // source came out of the cache counts as loaded: the gate has nothing to\n // wait for that the visitor has not already seen.\n const [initialLoaded, setInitialLoaded] = React.useState(() => {\n if (!dataCache || !dataSources) return false\n const fetched = dataSources.filter((s) => dataSourceCacheKey(s, initialState ?? {}) !== undefined)\n return fetched.length > 0 && fetched.every((s) => dataCache.get(dataSourceCacheKey(s, initialState ?? {})!) !== undefined)\n })\n\n // Stable ref to current state for use in fetch callbacks\n const stateRef = React.useRef(surfaceState)\n stateRef.current = surfaceState\n\n // Stable ref to sources\n const sourcesRef = React.useRef(dataSources)\n sourcesRef.current = dataSources\n\n // Stable ref to the entity facade (kind:'entity' sources query through it)\n const entityFacadeRef = React.useRef(entityFacade)\n entityFacadeRef.current = entityFacade\n\n // Stable ref to the connections context (kind:'entity'\n // sources with a `connector` route through the engine registry)\n const connectionsRef = React.useRef(connections)\n connectionsRef.current = connections\n\n /** The request each source was last fetched (or marked idle) for. */\n const requestKeysRef = React.useRef<Record<string, string>>({})\n /** The in-flight fetch of each source — a newer one aborts it. */\n const controllersRef = React.useRef(new Map<string, AbortController>())\n\n // ---- setState action ----\n // Writing the value a key already holds changes nothing, so it renders\n // nothing and fetches nothing.\n const setStateValue = React.useCallback((key: string, value: unknown) => {\n setSurfaceState((prev) => {\n if (prev[key] === value) return prev\n return { ...prev, [key]: value }\n })\n }, [])\n\n // ---- (Re-)register a source's definition for the current state ----\n // Registered even when the source is idle, so a form or a behavior writing\n // to it through the data service still finds it.\n const registerSource = React.useCallback(\n (source: SurfaceDataSourceDefinition, state: Record<string, unknown>) => {\n if (dataService.hasSource(source.id)) dataService.unregisterSource(source.id)\n const definition = mapSurfaceSourceToDefinition(source, state)\n if (definition) dataService.registerSource(definition)\n },\n [dataService]\n )\n\n // ---- Fetch a single source ----\n const fetchSource = React.useCallback(\n async (\n source: SurfaceDataSourceDefinition,\n state: Record<string, unknown>,\n signal: AbortSignal\n ): Promise<FetchOutcome> => {\n const failed = (err: unknown, status: number | null = null): FetchOutcome => ({\n kind: 'error',\n message: err instanceof Error ? err.message : String(err),\n status,\n // fallback declared → bind it; the error stays visible next to it\n ...(err instanceof SourceFallback ? { fallback: { data: err.data } } : {}),\n })\n\n // State sources read from React state directly\n if (source.kind === 'state') {\n return { kind: 'ok', data: state[source.id], status: null, meta: null }\n }\n\n // Entity sources list records via the platform/entities facade.\n // Returns the items array so {{<id>}} binds directly to the list (e.g. a\n // table's `data`). Refreshed by refreshAll after a form→entity create.\n if (source.kind === 'entity') {\n if (!source.entityType) return { kind: 'ok', data: [], status: null, meta: null }\n\n // A source that names a `connector` routes through the\n // host-provided engine registry when that connection is registered\n // there. Registered-but-failed surfaces the reason as an honest\n // per-source error (`__errors.<id>`), never a crash; an unregistered\n // connection (or no registry at all) falls through to today's\n // default facade path.\n // `{{state.x}}` inside the query resolves against CURRENT state, so\n // a pagination block writing `state.page` or a segmented-control\n // writing `state.severity` reaches `query.pagination` / `query.filter`.\n // Before this, only REST endpoints saw state; connector queries went raw.\n const query = source.query ? (resolveQueryState(source.query, state) as EntityQuery) : undefined\n // An AGGREGATE source asks for one number, never the rows. Its\n // filter resolves against state like `query` does, and the answer\n // binds `{ fn, field?, value, count }` (`{{<id>.value}}`), exempt\n // from the list wrap below. A counter on an intake collection is\n // allowed what a list of it is not, and a public one no longer hands\n // every row to a stranger so the page can count them.\n const aggregate = source.aggregate\n ? (resolveQueryState(source.aggregate, state) as unknown as EntityAggregate)\n : undefined\n const entityType = source.entityType as EntityTypeId\n // Any failure below binds `fallback` (when declared) and still reports\n // the error — see SourceFallback.\n const fail = (message: string): never => {\n if (source.fallback !== undefined) throw new SourceFallback(message, source.fallback)\n throw new Error(message)\n }\n try {\n const engines = connectionsRef.current?.engines\n if (source.connector && engines) {\n const status = engines.getStatus(source.connector)\n if (status.state !== 'unregistered') {\n const engine = await engines.resolve(source.connector)\n if (engine) {\n if (aggregate) {\n const agg = await aggregateThrough(engine, entityType, aggregate)\n if (agg.success) return { kind: 'ok', data: agg.result, status: null, meta: null }\n return fail(agg.error)\n }\n const res = await engine.query(entityType, (query ?? {}) as EntityQuery)\n if (res.success) return { kind: 'ok', data: res.result.items, status: null, meta: null }\n return fail(res.error)\n }\n const failedStatus = engines.getStatus(source.connector)\n return fail(\n failedStatus.state === 'failed'\n ? failedStatus.reason\n : `Connector engine '${source.connector}' unavailable`\n )\n }\n // Declared connector, nothing registered: a pattern shipped without\n // its connection. With a fallback this is the \"sample data\" path;\n // without one, today's facade route stays.\n if (source.fallback !== undefined) {\n return fail(`Connector '${source.connector}' is not connected`)\n }\n }\n\n const facade = entityFacadeRef.current\n if (!facade) {\n return source.fallback !== undefined\n ? fail('No entity facade available')\n : {\n kind: 'ok',\n data: aggregate\n ? { fn: aggregate.fn, ...(aggregate.field ? { field: aggregate.field } : {}), value: null, count: 0 }\n : [],\n status: null,\n meta: null,\n }\n }\n if (aggregate) {\n if (typeof facade.resolveAggregate === 'function') {\n // A count that cannot be served is an error, not a 0: bind\n // `fallback` and report it, same as a failed list.\n try {\n const agg = await facade.resolveAggregate(entityType, aggregate)\n return { kind: 'ok', data: agg, status: null, meta: null }\n } catch (err) {\n return fail(err instanceof Error ? err.message : String(err))\n }\n }\n // A facade from before `resolveAggregate` lists; the rows it\n // returns are reduced here, same as a list-only engine.\n const viaList = await aggregateThrough(\n { query: async (t, q) => ({ success: true, result: await facade.resolveBinding(t, q) }) },\n entityType,\n aggregate\n )\n if (!viaList.success) return fail(viaList.error)\n return { kind: 'ok', data: viaList.result, status: null, meta: null }\n }\n const eds = createEntityDataSource(facade, {\n id: source.id,\n entityType: source.entityType as EntityTypeId,\n ...(query ? { query } : {}),\n })\n try {\n const result = await eds.fetch()\n return { kind: 'ok', data: result.items, status: null, meta: null }\n } catch (err) {\n return fail(err instanceof Error ? err.message : String(err))\n }\n } catch (err) {\n return failed(err)\n }\n }\n\n // Everything else goes through the DataService, registered for THIS state.\n registerSource(source, state)\n const result = await dataService.fetchData(source.id, {\n signal,\n ...(source.headers ? { headers: source.headers } : {}),\n })\n if (result.success) {\n return {\n kind: 'ok',\n data: result.data,\n status: result.metadata.status ?? null,\n meta: result.metadata.envelope ?? null,\n }\n }\n return failed(new Error(result.error.message), result.error.status ?? null)\n },\n [dataService, registerSource]\n )\n\n // ---- Fetch a set of sources for the current state ----\n const fetchSources = React.useCallback(\n async (sources: readonly SurfaceDataSourceDefinition[]) => {\n const state = stateRef.current\n const idle: SurfaceDataSourceDefinition[] = []\n const writeOnlySettled: SurfaceDataSourceDefinition[] = []\n const jobs: { source: SurfaceDataSourceDefinition; controller: AbortController; key: string }[] = []\n for (const source of sources) {\n controllersRef.current.get(source.id)?.abort()\n controllersRef.current.delete(source.id)\n const key = requestKeyOf(source, state)\n requestKeysRef.current[source.id] = key\n if (isIdleSource(source, state)) {\n idle.push(source)\n registerSource(source, state)\n continue\n }\n // A form's write target nothing reads: no list request — not on\n // mount, not after a submit's refreshAll. Still registered, so the\n // form's write through the data service finds it.\n if (writeOnlyRef.current?.has(source.id) === true) {\n writeOnlySettled.push(source)\n registerSource(source, state)\n continue\n }\n const controller = new AbortController()\n controllersRef.current.set(source.id, controller)\n jobs.push({ source, controller, key })\n }\n\n // Idle sources settle at once: no data, not loading, no error. The data\n // of whatever was shown before belongs to another request, so it goes.\n // Fetched sources show their loading flag and keep their data until the\n // answer arrives (a filter change does not blank the list meanwhile).\n setSourceData((prev) => {\n const next = { ...prev }\n for (const source of idle) {\n next[source.id] = { data: null, loading: false, error: null, status: null, meta: null, idle: true, key: requestKeysRef.current[source.id] as string }\n }\n for (const source of writeOnlySettled) {\n next[source.id] = { data: null, loading: false, error: null, status: null, meta: null, key: requestKeysRef.current[source.id] as string }\n }\n for (const { source } of jobs) {\n const p = prev[source.id]\n next[source.id] = {\n data: p?.data ?? null,\n loading: true,\n error: null,\n status: p?.status ?? null,\n meta: p?.meta ?? null,\n ...(p?.key !== undefined ? { key: p.key } : {}),\n }\n }\n return next\n })\n\n await Promise.all(\n jobs.map(async ({ source, controller, key }) => {\n let outcome: FetchOutcome\n try {\n outcome = await fetchSource(source, state, controller.signal)\n } catch (err) {\n outcome = { kind: 'error', message: err instanceof Error ? err.message : String(err), status: null }\n }\n if (controller.signal.aborted) return\n controllersRef.current.delete(source.id)\n setSourceData((prev) => {\n const next = { ...prev }\n if (outcome.kind === 'ok') {\n next[source.id] = { data: outcome.data, loading: false, error: null, status: outcome.status, meta: outcome.meta, key }\n } else {\n const p = prev[source.id]\n // ON ERROR, DATA FROM ANOTHER REQUEST IS CLEARED: a search\n // for cart 999 must not leave cart 1 on screen under the error.\n // The SAME request failing again (a refresh, a poll) keeps its\n // last good answer — that answer is still the right record.\n const keep = p?.key === key\n next[source.id] = {\n data: outcome.fallback ? outcome.fallback.data : keep ? (p?.data ?? null) : null,\n loading: false,\n error: outcome.message,\n status: outcome.status,\n meta: keep ? (p?.meta ?? null) : null,\n ...(keep ? { key } : {}),\n }\n }\n return next\n })\n if (outcome.kind === 'ok') {\n const cacheKey = dataSourceCacheKey(source, state)\n if (cacheKey) dataCacheRef.current?.set(cacheKey, outcome.data)\n }\n })\n )\n\n // A pass whose every fetch was superseded settles nothing; the pass\n // that superseded it will.\n if (jobs.length > 0 && jobs.every((j) => j.controller.signal.aborted)) return\n setInitialLoaded(true)\n },\n [fetchSource, registerSource]\n )\n\n // ---- Fetch every source (refreshAll) ----\n const fetchAllSources = React.useCallback(async () => {\n const sources = sourcesRef.current\n if (!sources || sources.length === 0) {\n setInitialLoaded(true)\n return\n }\n await fetchSources(sources)\n }, [fetchSources])\n\n // ---- Refresh a single source ----\n const refreshSource = React.useCallback(\n async (sourceId: string) => {\n const source = sourcesRef.current?.find((s) => s.id === sourceId)\n if (!source) return\n await fetchSources([source])\n },\n [fetchSources]\n )\n\n // ---- Initial fetch + refetch of the sources whose request changed ----\n React.useEffect(() => {\n const sources = dataSources ?? []\n const present = new Set(sources.map((s) => s.id))\n for (const id of Object.keys(requestKeysRef.current)) {\n if (present.has(id)) continue\n delete requestKeysRef.current[id]\n controllersRef.current.get(id)?.abort()\n controllersRef.current.delete(id)\n if (dataService.hasSource(id)) dataService.unregisterSource(id)\n }\n if (sources.length === 0) {\n setInitialLoaded(true)\n return\n }\n const changed = sources.filter((s) => requestKeyOf(s, surfaceState) !== requestKeysRef.current[s.id])\n if (changed.length > 0) void fetchSources(changed)\n }, [dataSources, surfaceState, fetchSources, dataService])\n\n // ---- Unmount: abort what is in flight, forget what was fetched ----\n // Forgetting matters under StrictMode's mount → unmount → mount: the second\n // mount must fetch again, not believe the aborted first pass succeeded.\n React.useEffect(() => {\n const controllers = controllersRef.current\n return () => {\n for (const controller of controllers.values()) controller.abort()\n controllers.clear()\n requestKeysRef.current = {}\n for (const source of sourcesRef.current ?? []) {\n if (dataService.hasSource(source.id)) dataService.unregisterSource(source.id)\n }\n }\n }, [dataService])\n\n // ---- Auto-refresh intervals ----\n React.useEffect(() => {\n // Inert (editor/preview): never start auto-refresh timers.\n if (!dataSources || interactionMode === 'inert') return\n\n const intervals: ReturnType<typeof setInterval>[] = []\n\n for (const source of dataSources) {\n if (source.refreshInterval && source.refreshInterval > 0) {\n const interval = setInterval(() => {\n void refreshSource(source.id)\n }, source.refreshInterval)\n intervals.push(interval)\n }\n }\n\n return () => {\n for (const interval of intervals) {\n clearInterval(interval)\n }\n }\n }, [dataSources, refreshSource, interactionMode])\n\n // ---- Build expression context ----\n const expressionData = React.useMemo(() => {\n const ctx: Record<string, unknown> = { state: surfaceState }\n // Per-source loading flags for skeleton UIs: `{{__loading.<sourceId>}}` /\n // `{{__anyLoading}}`. A declared source with no sourceData entry yet has\n // not even started its first fetch (the fetch effect runs after first\n // paint) — report it as loading so a skeleton shows from frame one\n // instead of flashing the block's empty state. `state`-kind sources read\n // synchronously from React state and are never \"loading\".\n const loadingMap: Record<string, boolean> = {}\n let anyLoading = false\n // Per-source error messages — `{{__errors.<sourceId>}}` — so a block can\n // distinguish \"fetch failed\" from \"fetched, genuinely empty\" instead of\n // showing a false empty-state. The value is the error MESSAGE string\n // (truthy check + tooltip content in one binding); null when healthy.\n const errorMap: Record<string, string | null> = {}\n let anyError = false\n // `{{__status.<id>}}` — the HTTP status of the last answer (200, 404, …);\n // null for a network failure, an idle source or a non-HTTP kind.\n // `{{__notFound.<id>}}` — status 404, so \"no such order\" and \"connection\n // error\" can be told apart. `{{__idle.<id>}}` — a REST source\n // not fetched because a required path value is empty.\n // `{{__meta.<id>}}` — the envelope `returns` unwrapped the list from\n // (`total`, `skip`, `limit` …); null when there is none.\n const statusMap: Record<string, number | null> = {}\n const notFoundMap: Record<string, boolean> = {}\n const idleMap: Record<string, boolean> = {}\n const metaMap: Record<string, Readonly<Record<string, unknown>> | null> = {}\n for (const source of dataSources ?? []) {\n const entry = sourceData[source.id]\n const loading =\n source.kind === 'state' || writeOnly?.has(source.id) === true ? false : entry ? entry.loading : true\n loadingMap[source.id] = loading\n if (loading) anyLoading = true\n const error = entry?.error ?? null\n errorMap[source.id] = error\n if (error) anyError = true\n const status = entry?.status ?? null\n statusMap[source.id] = status\n notFoundMap[source.id] = status === 404\n idleMap[source.id] = entry?.idle === true\n metaMap[source.id] = entry?.meta ?? null\n }\n /**\n * A LIST SOURCE ALWAYS BINDS AS A LIST.\n *\n * The entity path returns `result.items` — an array. The rest path\n * returned the whole JSON body, or, since `returns` landed, the plucked\n * value. So the same block bound to `{{data.Product}}` received an array\n * from our store and an object from anyone else's, and swapping a model\n * from platform to a connection quietly changed what every bound block\n * got. One shape.\n *\n * `static` and `state` are the documented exceptions and stay untouched:\n * a state source is routinely a scalar, and wrapping it would break every\n * shipped surface that reads one.\n */\n const LIST_KINDS = new Set(['rest', 'entity', 'graphql'])\n const kindById = new Map((dataSources ?? []).map((s) => [s.id, s.kind]))\n // An AGGREGATE source is one number, not a list of one: wrapping\n // `{ value }` into `[{ value }]` would still read through the single-\n // element fallthrough, but `.length` would lie and `count` would hide.\n // Entity-only: that is the one branch that reads `aggregate`; a rest\n // source carrying the key still fetches a list and binds as one.\n const aggregateIds = new Set(\n (dataSources ?? []).filter((s) => s.kind === 'entity' && s.aggregate !== undefined).map((s) => s.id)\n )\n for (const [key, value] of Object.entries(sourceData)) {\n const listy = LIST_KINDS.has(kindById.get(key) ?? '') && !aggregateIds.has(key)\n ctx[key] =\n listy && value.data != null && !Array.isArray(value.data) ? [value.data] : value.data\n }\n ctx['__loading'] = loadingMap\n ctx['__anyLoading'] = anyLoading\n ctx['__errors'] = errorMap\n ctx['__anyError'] = anyError\n ctx['__status'] = statusMap\n ctx['__notFound'] = notFoundMap\n ctx['__idle'] = idleMap\n ctx['__meta'] = metaMap\n return ctx\n }, [surfaceState, sourceData, dataSources, writeOnly])\n\n return {\n expressionData,\n surfaceState,\n initialLoaded,\n setStateValue,\n refreshSource,\n fetchAllSources,\n }\n}\n\n// ============================================================\n// canonicalizeEventType\n// ============================================================\n\n/**\n * Normalize a stored behavior trigger string to canonical colon form.\n * - Already has `:` → return lowercased/trimmed as-is\n * - Has `.` → replace first `.` with `:`\n * - Otherwise → return trimmed lowercased (best-effort; won't match well-formed events)\n */\nexport function canonicalizeEventType(raw: string): string {\n const s = raw.trim().toLowerCase()\n if (s.includes(':')) return s\n if (s.includes('.')) return s.replace('.', ':')\n return s\n}\n\n// ============================================================\n// isSurfaceAction\n// ============================================================\n\nexport function isSurfaceAction(value: unknown): value is SurfaceAction {\n if (!value || typeof value !== 'object') return false\n const obj = value as Record<string, unknown>\n return (\n obj.type === 'setState' ||\n obj.type === 'refresh' ||\n obj.type === 'refreshAll' ||\n obj.type === 'showBlock' ||\n obj.type === 'hideBlock' ||\n obj.type === 'navigate'\n )\n}\n\n/**\n * Guard the `navigate` action against XSS: only http(s) absolute URLs and\n * relative/anchor URLs may be navigated to. A scheme like `javascript:`,\n * `data:`, or `vbscript:` is rejected so a stored behavior cannot execute\n * script in a published-surface visitor's context. Control characters are\n * stripped first to defeat `java\\tscript:`-style scheme smuggling.\n */\nexport function isSafeNavigateUrl(url: unknown): url is string {\n if (typeof url !== 'string') return false\n const stripped = url.replace(/[^!-~]/g, '')\n if (stripped === '') return false\n const scheme = /^([a-zA-Z][a-zA-Z0-9+.-]*):/.exec(stripped)\n if (!scheme) return true // relative path / query / hash / protocol-relative\n const s = (scheme[1] ?? '').toLowerCase()\n return s === 'http' || s === 'https'\n}\n\n// ============================================================\n// DataBoundSurfaceRenderer COMPONENT\n// ============================================================\n\n/**\n * Data-bound surface renderer.\n *\n * If nothing on the surface is dynamic (see surfaceNeedsDataBinding), renders\n * SurfaceRenderer directly (zero overhead).\n * Otherwise, wraps with DataCapabilityProvider for DataService context, then\n * fetches data, manages state, resolves expressions, and intercepts events.\n */\nexport function DataBoundSurfaceRenderer(props: DataBoundSurfaceRendererProps): React.ReactElement {\n const { surface, onEvent, behaviors: hostBehaviors, onNavigateAction, dataServiceConfig, ...rest } = props\n const { blocks, appearance, capabilities } = surface\n // dataSources + initialState + declared behaviors live under platform/persistence config\n const { dataSources, initialState, behaviors: declaredBehaviors } = extractPersistenceSeeds(surface)\n // Declared (JSON) first, host (its store) after — same id in both: host wins.\n const behaviors = React.useMemo<readonly RuntimeBehavior[] | undefined>(() => {\n if (!declaredBehaviors?.length) return hostBehaviors\n if (!hostBehaviors?.length) return declaredBehaviors\n const hostIds = new Set(hostBehaviors.map((b) => b.id))\n return [...declaredBehaviors.filter((b) => !hostIds.has(b.id)), ...hostBehaviors]\n }, [declaredBehaviors, hostBehaviors])\n const hasBehaviors = Boolean(behaviors && behaviors.length > 0)\n\n // Nothing dynamic — no sources, no state, no behaviors, no form bindings, no\n // block action: pass through directly (zero overhead). Write-only surfaces\n // (formBindings without any read source) and state-only wizards must NOT\n // take it — see surfaceNeedsDataBinding() and hasEntityFormBindings().\n if (!hasBehaviors && !surfaceNeedsDataBinding(surface)) {\n const passthrough: RenderableSurface = {\n // `id` FORWARDED, not dropped. SurfaceRenderer derives its scope from\n // `surface.id`: with an id the per-surface rules key off the attribute\n // VALUE (`[data-pw-surface=\"<id>\"]`), without one they fall back to the\n // value-less `[data-pw-surface]` and every surface in a document shares\n // them. Rebuilding the surface object here silently erased the id, so the\n // scoping degraded on this path while looking correct in the source.\n ...(surface.id !== undefined ? { id: surface.id } : {}),\n blocks,\n ...(appearance !== undefined ? { appearance } : {}),\n ...(capabilities !== undefined ? { capabilities } : {}),\n }\n return onEvent ? (\n <SurfaceRenderer surface={passthrough} onEvent={onEvent} {...rest} />\n ) : (\n <SurfaceRenderer surface={passthrough} {...rest} />\n )\n }\n\n // Wrap with DataCapabilityProvider to provide DataService context\n return (\n <DataCapabilityProvider {...(dataServiceConfig ? { config: dataServiceConfig } : {})}>\n {onEvent ? (\n <DataBoundInner\n {...(surface.id !== undefined ? { surfaceId: surface.id } : {})}\n blocks={blocks}\n dataSources={dataSources ?? []}\n initialState={initialState}\n appearance={appearance}\n capabilities={capabilities}\n {...(behaviors !== undefined ? { behaviors } : {})}\n {...(onNavigateAction !== undefined ? { onNavigateAction } : {})}\n onEvent={onEvent}\n rendererProps={rest}\n />\n ) : (\n <DataBoundInner\n {...(surface.id !== undefined ? { surfaceId: surface.id } : {})}\n blocks={blocks}\n dataSources={dataSources ?? []}\n initialState={initialState}\n appearance={appearance}\n capabilities={capabilities}\n {...(behaviors !== undefined ? { behaviors } : {})}\n {...(onNavigateAction !== undefined ? { onNavigateAction } : {})}\n rendererProps={rest}\n />\n )}\n </DataCapabilityProvider>\n )\n}\n\n// ============================================================\n// DataBoundInner (split to allow hooks — needs DataCapabilityProvider ancestor)\n// ============================================================\n\ninterface DataBoundInnerProps {\n /** The surface's scope id — threaded through because this component receives\n * the surface DECOMPOSED into pieces, and `id` was never one of the pieces.\n * Without it the rebuilt surface below has no id and SurfaceRenderer falls\n * back to the value-less `[data-pw-surface]` scope. */\n surfaceId?: string\n blocks: readonly Block[]\n dataSources: readonly SurfaceDataSourceDefinition[]\n initialState: Readonly<Record<string, unknown>> | undefined\n appearance?: RenderableSurface['appearance']\n capabilities?: RenderableSurface['capabilities']\n onEvent?: (event: SurfaceEvent) => void\n behaviors?: readonly RuntimeBehavior[]\n onNavigateAction?: (url: string) => boolean\n rendererProps: Omit<SurfaceRendererProps, 'surface' | 'onEvent'>\n}\n\nfunction DataBoundInner({\n surfaceId,\n blocks,\n dataSources,\n initialState,\n appearance,\n capabilities,\n onEvent,\n behaviors,\n onNavigateAction,\n rendererProps,\n}: DataBoundInnerProps): React.ReactElement {\n const interactionMode = rendererProps.interactionMode ?? 'live'\n const entityFacade = (rendererProps as { entityFacade?: EntityFacade }).entityFacade\n // Same pass-through route as entityFacade: declared on\n // DataBoundSurfaceRendererProps, travels inside rendererProps.\n const loadingStrategy =\n (rendererProps as { loadingStrategy?: 'gate' | 'immediate' }).loadingStrategy ?? 'gate'\n // Connections context travels the same pass-through route\n // (declared on SurfaceRendererProps, so it also reaches SurfaceRenderer's\n // SurfaceConnectionsContext provider via the rendererProps spread below).\n const connections = (rendererProps as { connections?: SurfaceConnectionsValue }).connections\n const dataCache = (rendererProps as { dataCache?: SurfaceDataCache }).dataCache\n // Keyed by the ids, so a re-render that changes nothing hands useSurfaceData\n // the same set (its expression context depends on it).\n const writeOnlyKey = React.useMemo(\n () => [...writeOnlySourceIds({ blocks, dataSources, capabilities, behaviors })].sort().join('\\n'),\n [blocks, dataSources, capabilities, behaviors]\n )\n const writeOnly = React.useMemo<ReadonlySet<string>>(\n () => new Set(writeOnlyKey === '' ? [] : writeOnlyKey.split('\\n')),\n [writeOnlyKey]\n )\n const { expressionData, initialLoaded, setStateValue, refreshSource, fetchAllSources } =\n useSurfaceData(dataSources, initialState, interactionMode, entityFacade, connections, dataCache, writeOnly)\n\n // Resolve expressions in blocks\n const resolvedBlocks = React.useMemo(\n () => resolveBlockExpressions(blocks as Block[], expressionData),\n [blocks, expressionData]\n )\n\n // Shared action dispatcher — handles all six action types\n const dispatchAction = React.useCallback(\n (action: SurfaceAction) => {\n switch (action.type) {\n case 'setState':\n setStateValue(action.key, action.value)\n break\n case 'refresh':\n refreshSource(action.sourceId)\n break\n case 'refreshAll':\n fetchAllSources()\n break\n case 'showBlock':\n setStateValue('__show:' + action.blockId, true)\n break\n case 'hideBlock':\n setStateValue('__show:' + action.blockId, false)\n break\n case 'navigate':\n // Give the host a chance to handle this in place first (e.g. a\n // connected-preview mode swapping to a sibling page) before falling\n // through to a real hard navigation.\n if (onNavigateAction?.(action.url)) break\n if (isSafeNavigateUrl(action.url)) {\n window.location.assign(action.url)\n } else {\n console.warn('[surface] blocked unsafe navigate URL:', action.url)\n }\n break\n }\n },\n [setStateValue, refreshSource, fetchAllSources, onNavigateAction]\n )\n\n // Event interceptor\n const handleEvent = React.useCallback(\n (event: SurfaceEvent) => {\n // Inert (editor/preview): skip block-dispatched surface actions (state\n // mutations / data refreshes) so the surface doesn't mutate its own state\n // while authoring. `onEvent` is a pure notification and STILL fires below\n // — only the real data side-effects are gated.\n if (interactionMode !== 'inert') {\n // Check if the event payload contains a surface action\n const payload = event.payload as Record<string, unknown> | undefined\n const action = payload?.action\n\n if (isSurfaceAction(action)) {\n dispatchAction(action)\n }\n\n // `canonicalType` is normally stamped by the bus bridge (renderer.tsx's\n // busOnEvent), but some deployed block bundles still call\n // `context.onEvent` directly (the pre-bus legacy path) — for those,\n // `canonicalType` is absent. Block-scoped click events reaching here\n // always mean a real click occurred, so treat a canonicalType-less\n // 'click' as 'block:click' rather than silently dropping it.\n const fired = event.canonicalType ?? (event.type === 'click' && event.blockId ? 'block:click' : '')\n\n // A block's own `action` prop (one action or a list, run in order) is\n // what its CLICK does — and only its click. It used to run on every\n // event the block emitted, so a block that also reported hover, focus\n // or a value change would have fired its click action on each of them.\n // Looked up in the RESOLVED tree, so a repeat clone (`id--N`) carries\n // its own row's values.\n if (fired === 'block:click') {\n blockActionsOf(findBlockAction(resolvedBlocks, event.blockId)).forEach(dispatchAction)\n }\n\n // Execute stored behaviors whose trigger matches this canonical event.\n if (behaviors && behaviors.length > 0) {\n for (const b of behaviors) {\n if (canonicalizeEventType(b.event) !== fired) continue\n if (b.targetBlockId && b.targetBlockId !== event.blockId) continue\n b.actions.forEach(dispatchAction)\n }\n }\n }\n\n // Forward to original handler — a pure notification, always fires (the\n // host decides what side-effects, if any, to run).\n onEvent?.(event)\n },\n [interactionMode, onEvent, dispatchAction, resolvedBlocks, behaviors]\n )\n\n // Loading state — 'gate' strategy only (the historical default): the whole\n // block tree is withheld until the first fetch pass settles. 'immediate'\n // skips this and renders the tree at once; unresolved bindings evaluate to\n // undefined and fill in per source (see loadingStrategy prop docs).\n if (!initialLoaded && loadingStrategy !== 'immediate') {\n return (\n <div\n data-surface-loading\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '48px',\n // Theme-tokened with the old hardcoded values as fallbacks, so the\n // gate no longer paints light-theme blue on a dark-themed surface.\n color: 'var(--pw-color-text-muted, #666)',\n }}\n >\n <div style={{ textAlign: 'center' }}>\n <div\n style={{\n width: '32px',\n height: '32px',\n border: '3px solid var(--pw-color-border, #e5e7eb)',\n borderTopColor: 'var(--pw-color-primary, #3b82f6)',\n borderRadius: '50%',\n animation: 'spin 0.8s linear infinite',\n margin: '0 auto 12px',\n }}\n />\n Loading data...\n </div>\n </div>\n )\n }\n\n const resolvedSurface: RenderableSurface = {\n // See the passthrough branch above — same reason, same one-line omission.\n ...(surfaceId !== undefined ? { id: surfaceId } : {}),\n blocks: resolvedBlocks,\n ...(appearance !== undefined ? { appearance } : {}),\n ...(capabilities !== undefined ? { capabilities } : {}),\n }\n return (\n // What is bound right now, for the providers under SurfaceRenderer that\n // must act on it — the form writer decides create-vs-update from the\n // record a source has loaded, and could not see one before this.\n <SurfaceDataContext.Provider value={expressionData}>\n <SurfaceRenderer surface={resolvedSurface} onEvent={handleEvent} {...rendererProps} />\n </SurfaceDataContext.Provider>\n )\n}\n\n// ============================================================\n// HELPERS\n// ============================================================\n\n/**\n * Find the action prop of a block by ID in the resolved block tree.\n */\nfunction findBlockAction(blocks: readonly Block[], blockId: string): unknown {\n for (const block of blocks) {\n if (block.id === blockId) {\n return block.props?.action\n }\n if (block.children) {\n const found = findBlockAction(block.children, blockId)\n if (found !== undefined) return found\n }\n }\n return undefined\n}\n"]}
|
|
@@ -21,4 +21,3 @@ export interface DynamicBlockWrapperProps {
|
|
|
21
21
|
* Manages loading → loaded | error state machine.
|
|
22
22
|
*/
|
|
23
23
|
export declare function DynamicBlockWrapper({ descriptor, block, context, children, }: DynamicBlockWrapperProps): ReactNode;
|
|
24
|
-
//# sourceMappingURL=DynamicBlockWrapper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicBlockWrapper.js","sourceRoot":"","sources":["../../src/render/DynamicBlockWrapper.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DynamicBlockWrapper.js","sourceRoot":"","sources":["../../src/render/DynamicBlockWrapper.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Dynamic Block Wrapper Component\n *\n * Wraps dynamically loaded block components with loading,\n * error, and loaded state management.\n *\n * @module @pwfabric/runtime/render/DynamicBlockWrapper\n */\n\nimport { useState, useEffect, useCallback, type ReactNode } from 'react'\nimport type { DynamicBlockDescriptor } from '@pwfabric/contracts'\nimport type { Block } from '@pwfabric/core'\nimport type { BlockComponent, BlockContext } from './types.js'\nimport { BlockModuleLoader } from './dynamic-block-loader.js'\n\n// ============================================================\n// TYPES\n// ============================================================\n\nexport interface DynamicBlockWrapperProps {\n readonly descriptor: DynamicBlockDescriptor\n readonly block: Block\n readonly context: BlockContext\n readonly children?: ReactNode\n}\n\ntype LoadState = 'idle' | 'loading' | 'loaded' | 'error'\n\n// ============================================================\n// SKELETON & ERROR COMPONENTS\n// ============================================================\n\n/**\n * Quiet, theme-tokened module-load placeholder. Deliberately renders NO\n * visible text or spinner — the earlier \"Loading {blockType}...\" card was a\n * hardcoded light-theme box (gray fill, indigo spinner, English dev-facing\n * label) that flashed as a burst of bright cards on dark-themed surfaces\n * during a cold load. A low-contrast wash derived from the local text token\n * reads as \"something is about to appear\" in any theme and inside any card.\n * The data attributes keep the state machine observable for tests/tooling.\n */\nfunction DynamicBlockSkeleton({ blockType }: { readonly blockType: string }): ReactNode {\n return (\n <div\n data-dynamic-block={blockType}\n data-state=\"loading\"\n aria-busy=\"true\"\n style={{\n minHeight: '24px',\n borderRadius: '8px',\n backgroundColor: 'color-mix(in srgb, var(--pw-color-text, #9ca3af) 6%, transparent)',\n }}\n />\n )\n}\n\n/**\n * Module-load failure. Same quiet-shape rule: no visible copy — the error\n * tint + dashed border carry the meaning, the technical message lives in the\n * title tooltip (and the loader already logs it), and the single retry\n * control is an icon button with an English aria-label.\n */\nfunction DynamicBlockError({\n blockType,\n error,\n onRetry,\n}: {\n readonly blockType: string\n readonly error: string\n readonly onRetry: () => void\n}): ReactNode {\n return (\n <div\n data-dynamic-block={blockType}\n data-state=\"error\"\n title={error}\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '12px',\n border: '2px dashed var(--pw-color-error, #fca5a5)',\n borderRadius: '8px',\n backgroundColor: 'color-mix(in srgb, var(--pw-color-error, #ef4444) 8%, transparent)',\n minHeight: '48px',\n }}\n >\n <button\n type=\"button\"\n onClick={onRetry}\n aria-label={`Retry loading ${blockType}`}\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '28px',\n height: '28px',\n border: '1px solid var(--pw-color-error, #fca5a5)',\n borderRadius: '50%',\n backgroundColor: 'transparent',\n color: 'var(--pw-color-error, #991b1b)',\n cursor: 'pointer',\n padding: 0,\n }}\n >\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" />\n <path d=\"M3 3v5h5\" />\n </svg>\n </button>\n </div>\n )\n}\n\n// ============================================================\n// WRAPPER COMPONENT\n// ============================================================\n\n/**\n * Wraps a dynamically loaded block component.\n * Manages loading → loaded | error state machine.\n */\nexport function DynamicBlockWrapper({\n descriptor,\n block,\n context,\n children,\n}: DynamicBlockWrapperProps): ReactNode {\n const [state, setState] = useState<LoadState>(\n BlockModuleLoader.isLoaded(descriptor.blockType) ? 'loaded' : 'idle'\n )\n const [component, setComponent] = useState<BlockComponent | null>(() =>\n BlockModuleLoader.getSync(descriptor.blockType)\n )\n const [errorMessage, setErrorMessage] = useState('')\n\n const loadModule = useCallback(() => {\n setComponent(null)\n setState('loading')\n setErrorMessage('')\n\n BlockModuleLoader.load(descriptor)\n .then((comp) => {\n setComponent(() => comp)\n setState('loaded')\n })\n .catch((err: unknown) => {\n const msg = err instanceof Error ? err.message : 'Unknown error'\n setErrorMessage(msg)\n setState('error')\n })\n }, [descriptor])\n\n useEffect(() => {\n if (state === 'idle') {\n loadModule()\n }\n }, [state, loadModule])\n\n const handleRetry = useCallback(() => {\n BlockModuleLoader.invalidate(descriptor.blockType)\n loadModule()\n }, [descriptor.blockType, loadModule])\n\n // Component-first: if we have a loaded component, always render it regardless of\n // the state machine. This prevents the skeleton from flashing when state transitions\n // to 'loading' (e.g. retry) while the previous component is still valid in cache.\n if (component) {\n const Component = component\n // `props` is NEVER undefined. A node may legitimately carry no `props` key\n // at all — `{id, type, children}` is a valid section — and a block component\n // reads `props.x` directly, so handing it `undefined` throws inside the\n // component and the block renders as an error placeholder.\n //\n // A `section` authored without a `props` key would otherwise crash with\n // \"Cannot read properties of undefined (reading 'paddingY')\". The static\n // renderer guards this too (`renderer.tsx`: `block.props ?? {}`); this is\n // the path every PACK-INSTALLED block takes.\n return (\n <Component block={block} props={block.props ?? {}} context={context}>\n {children}\n </Component>\n )\n }\n\n if (state === 'error') {\n return (\n <DynamicBlockError\n blockType={descriptor.blockType}\n error={errorMessage}\n onRetry={handleRetry}\n />\n )\n }\n\n return <DynamicBlockSkeleton blockType={descriptor.blockType} />\n}\n"]}
|
|
@@ -48,4 +48,3 @@ export declare function resolveAppearanceDarkVars(appearance: SurfaceAppearanceR
|
|
|
48
48
|
* declared (no keyframe CSS emitted).
|
|
49
49
|
*/
|
|
50
50
|
export declare function resolveAppearanceKeyframes(appearance: SurfaceAppearanceRef | undefined): Record<string, string>;
|
|
51
|
-
//# sourceMappingURL=appearance-resolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appearance-resolver.js","sourceRoot":"","sources":["../../src/render/appearance-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,UAA4C,EAC5C,YAA2B;IAE3B,MAAM,GAAG,GAAG,UAAU,EAAE,MAAM,CAAA;IAC9B,MAAM,KAAK,GAAG,GAAG,EAAE,KAAiC,CAAA;IACpD,oEAAoE;IACpE,MAAM,EAAE,QAAQ,EAAE,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAA;IAC/C,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,EAAE,wBAAwB,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;IAEhG,MAAM,UAAU,GAA2B,EAAE,CAAA;IAC7C,IAAI,GAAG,EAAE,cAAc,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAC9D,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAA;YACvD,UAAU,CAAC,OAAO,CAAC,GAAG,KAAK,CAAA;QAC7B,CAAC;IACH,CAAC;IAED,OAAO,EAAE,GAAG,SAAS,EAAE,GAAG,UAAU,EAAE,CAAA;AACxC,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,yBAAyB,CACvC,UAA4C,EAC5C,YAA2B,EAC3B,gBAA+B;IAE/B,MAAM,GAAG,GAAG,UAAU,EAAE,MAAM,CAAA;IAC9B,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB;QAAE,OAAO,EAAE,CAAA;IACxC,MAAM,KAAK,GAAG,kBAAkB,CAC9B,wBAAwB,EACxB,YAAY,EACZ,GAAG,EAAE,KAAiC,CACvC,CAAA;IACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,SAAqC,CAAC,CAAA;IAClG,OAAO,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,qBAAqB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;AACzG,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CACxC,UAA4C;IAE5C,MAAM,SAAS,GAAG,UAAU,EAAE,MAAM,EAAE,SAAS,CAAA;IAC/C,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAA;IACzB,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;AACzB,CAAC"}
|
|
1
|
+
{"version":3,"file":"appearance-resolver.js","sourceRoot":"","sources":["../../src/render/appearance-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,UAA4C,EAC5C,YAA2B;IAE3B,MAAM,GAAG,GAAG,UAAU,EAAE,MAAM,CAAA;IAC9B,MAAM,KAAK,GAAG,GAAG,EAAE,KAAiC,CAAA;IACpD,oEAAoE;IACpE,MAAM,EAAE,QAAQ,EAAE,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAA;IAC/C,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,EAAE,wBAAwB,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;IAEhG,MAAM,UAAU,GAA2B,EAAE,CAAA;IAC7C,IAAI,GAAG,EAAE,cAAc,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAC9D,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAA;YACvD,UAAU,CAAC,OAAO,CAAC,GAAG,KAAK,CAAA;QAC7B,CAAC;IACH,CAAC;IAED,OAAO,EAAE,GAAG,SAAS,EAAE,GAAG,UAAU,EAAE,CAAA;AACxC,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,yBAAyB,CACvC,UAA4C,EAC5C,YAA2B,EAC3B,gBAA+B;IAE/B,MAAM,GAAG,GAAG,UAAU,EAAE,MAAM,CAAA;IAC9B,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB;QAAE,OAAO,EAAE,CAAA;IACxC,MAAM,KAAK,GAAG,kBAAkB,CAC9B,wBAAwB,EACxB,YAAY,EACZ,GAAG,EAAE,KAAiC,CACvC,CAAA;IACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,SAAqC,CAAC,CAAA;IAClG,OAAO,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,qBAAqB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;AACzG,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CACxC,UAA4C;IAE5C,MAAM,SAAS,GAAG,UAAU,EAAE,MAAM,EAAE,SAAS,CAAA;IAC/C,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAA;IACzB,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;AACzB,CAAC","sourcesContent":["/**\n * Appearance Resolver\n *\n * Bridges `surface.appearance` with the render path. ONE path: the in-process\n * cascade (`surfaceThemeToCSS`) over the platform baseline.\n *\n * There is no second path that delegates to an appearance atom's own\n * `resolve()`: an atom carrying its own baseline would never receive\n * `projectTheme`, so light and dark would come from different bases.\n *\n * @module @pwfabric/runtime/render/appearance-resolver\n */\n\nimport type { SurfaceAppearanceRef, SurfaceTheme } from '@pwfabric/contracts'\nimport {\n DEFAULT_APPEARANCE_THEME,\n mergeSurfaceThemes,\n resolveDarkTheme,\n resolveAppearanceMode,\n} from '@pwfabric/contracts'\nimport { surfaceThemeToCSS } from './theme-utils.js'\n\n/**\n * Resolve a surface.appearance reference to the CSS custom property map that the\n * renderer applies to `[data-pw-surface]`.\n *\n * `DEFAULT_APPEARANCE_THEME` is the baseline so an absent/empty surface config\n * still yields the full token set. The surface config overrides only the tokens\n * it sets; `projectTheme` sits as a middle layer between the platform baseline\n * and the surface override.\n */\nexport function resolveAppearanceVars(\n appearance: SurfaceAppearanceRef | undefined,\n projectTheme?: SurfaceTheme\n): Record<string, string> {\n const cfg = appearance?.config\n const theme = cfg?.theme as SurfaceTheme | undefined\n // a config that promises high contrast gets its inks pushed to 7:1.\n const { contrast } = resolveAppearanceMode(cfg)\n const themeVars = surfaceThemeToCSS(theme, DEFAULT_APPEARANCE_THEME, projectTheme, { contrast })\n\n const customVars: Record<string, string> = {}\n if (cfg?.styleVariables) {\n for (const [key, value] of Object.entries(cfg.styleVariables)) {\n const varName = key.startsWith('--') ? key : `--${key}`\n customVars[varName] = value\n }\n }\n\n return { ...themeVars, ...customVars }\n}\n\n/**\n * Resolve the DARK theme variant CSS-variable map for a surface appearance.\n *\n * The dark mode is ALWAYS the derivation of the effective light theme\n * (platform baseline < project theme < surface theme), with the explicit dark\n * overrides on top: the project's `darkTheme`, then the surface's own\n * `appearance.config.darkTheme`.\n *\n * An explicit `darkTheme` does NOT replace the derivation: an authoring tool\n * may write it as sparse overrides — only the tokens the author changed — and\n * merged over the LIGHT default, one edited dark colour would produce a dark\n * mode with a white page and dark text. A fully baked dark variant still\n * renders as baked: every token it sets wins over the derivation.\n *\n * A surface with no appearance config and no project dark overrides gets NO\n * dark CSS (conservative: one that never opted into theming stays light-only).\n */\nexport function resolveAppearanceDarkVars(\n appearance: SurfaceAppearanceRef | undefined,\n projectTheme?: SurfaceTheme,\n projectDarkTheme?: SurfaceTheme\n): Record<string, string> {\n const cfg = appearance?.config\n if (!cfg && !projectDarkTheme) return {}\n const light = mergeSurfaceThemes(\n DEFAULT_APPEARANCE_THEME,\n projectTheme,\n cfg?.theme as SurfaceTheme | undefined\n )\n const dark = resolveDarkTheme(light, projectDarkTheme, cfg?.darkTheme as SurfaceTheme | undefined)\n return surfaceThemeToCSS(dark, undefined, undefined, { contrast: resolveAppearanceMode(cfg).contrast })\n}\n\n/**\n * Resolve the surface-scoped custom `@keyframes` registry for an appearance.\n *\n * Reads `appearance.config.keyframes` (name → keyframe body). The renderer\n * feeds this map to `buildKeyframesCss`, which emits one\n * `@keyframes pw-kf-<name>{<body>}` per entry. Returns `{}` when no registry is\n * declared (no keyframe CSS emitted).\n */\nexport function resolveAppearanceKeyframes(\n appearance: SurfaceAppearanceRef | undefined\n): Record<string, string> {\n const keyframes = appearance?.config?.keyframes\n if (!keyframes) return {}\n return { ...keyframes }\n}\n"]}
|
|
@@ -67,4 +67,3 @@ export interface GatedBlockPlaceholderProps {
|
|
|
67
67
|
* Uses inline styles (no Tailwind dependency in runtime package).
|
|
68
68
|
*/
|
|
69
69
|
export declare function GatedBlockPlaceholder({ blockId, blockType, }: GatedBlockPlaceholderProps): React.ReactElement;
|
|
70
|
-
//# sourceMappingURL=capability-gate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability-gate.js","sourceRoot":"","sources":["../../src/render/capability-gate.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAwC9B,+DAA+D;AAC/D,UAAU;AACV,+DAA+D;AAE/D,MAAM,kBAAkB,GAAG,KAAK,CAAC,aAAa,CAA0B;IACtE,MAAM,EAAE,KAAK;IACb,cAAc,EAAE,IAAI,GAAG,EAAE;IACzB,oBAAoB,EAAE,IAAI,GAAG,EAAE;IAC/B,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,6BAA6B;IAC1D,oBAAoB,EAAE,GAAG,EAAE,CAAC,IAAI;CACjC,CAAC,CAAA;AAEF,+DAA+D;AAC/D,WAAW;AACX,+DAA+D;AAE/D;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAClC,YAAY,EACZ,QAAQ,GACiB;IACzB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAA0B,GAAG,EAAE;QACxD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,cAAc,EAAE,IAAI,GAAG,EAAE;gBACzB,oBAAoB,EAAE,IAAI,GAAG,EAAE;gBAC/B,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI;gBAC3B,oBAAoB,EAAE,GAAG,EAAE,CAAC,IAAI;aACjC,CAAA;QACH,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;QAC3C,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,CAAA;QAEvD,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,cAAc,EAAE,MAAM;YACtB,oBAAoB,EAAE,YAAY;YAClC,eAAe,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;YAC7D,oBAAoB,EAAE,CAAC,UAAkB,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;SAC3E,CAAA;IACH,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAA;IAElB,OAAO,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAA;AAC9E,CAAC;AAED,+DAA+D;AAC/D,OAAO;AACP,+DAA+D;AAE/D;;;;GAIG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;AAC7C,CAAC;AAWD;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,EACpC,OAAO,EACP,SAAS,GACkB;IAC3B,OAAO,CACL,gCACiB,OAAO,sBACJ,SAAS,EAC3B,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,QAAQ;YACvB,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,QAAQ;YACxB,OAAO,EAAE,WAAW;YACpB,iEAAiE;YACjE,+DAA+D;YAC/D,yCAAyC;YACzC,MAAM,EAAE,4CAA4C;YACpD,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,mEAAmE;YACpF,KAAK,EAAE,qCAAqC;YAC5C,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,MAAM;YACjB,GAAG,EAAE,KAAK;SACX,aAED,gBAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,aAC/C,WAAW,OAAG,SAAS,cACnB,EACP,eAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,qCAAqC,EAAE,yCAAiC,IAC5G,CACP,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"capability-gate.js","sourceRoot":"","sources":["../../src/render/capability-gate.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAwC9B,+DAA+D;AAC/D,UAAU;AACV,+DAA+D;AAE/D,MAAM,kBAAkB,GAAG,KAAK,CAAC,aAAa,CAA0B;IACtE,MAAM,EAAE,KAAK;IACb,cAAc,EAAE,IAAI,GAAG,EAAE;IACzB,oBAAoB,EAAE,IAAI,GAAG,EAAE;IAC/B,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,6BAA6B;IAC1D,oBAAoB,EAAE,GAAG,EAAE,CAAC,IAAI;CACjC,CAAC,CAAA;AAEF,+DAA+D;AAC/D,WAAW;AACX,+DAA+D;AAE/D;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAClC,YAAY,EACZ,QAAQ,GACiB;IACzB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAA0B,GAAG,EAAE;QACxD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,cAAc,EAAE,IAAI,GAAG,EAAE;gBACzB,oBAAoB,EAAE,IAAI,GAAG,EAAE;gBAC/B,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI;gBAC3B,oBAAoB,EAAE,GAAG,EAAE,CAAC,IAAI;aACjC,CAAA;QACH,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;QAC3C,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,CAAA;QAEvD,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,cAAc,EAAE,MAAM;YACtB,oBAAoB,EAAE,YAAY;YAClC,eAAe,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;YAC7D,oBAAoB,EAAE,CAAC,UAAkB,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;SAC3E,CAAA;IACH,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAA;IAElB,OAAO,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAA;AAC9E,CAAC;AAED,+DAA+D;AAC/D,OAAO;AACP,+DAA+D;AAE/D;;;;GAIG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;AAC7C,CAAC;AAWD;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,EACpC,OAAO,EACP,SAAS,GACkB;IAC3B,OAAO,CACL,gCACiB,OAAO,sBACJ,SAAS,EAC3B,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,QAAQ;YACvB,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,QAAQ;YACxB,OAAO,EAAE,WAAW;YACpB,iEAAiE;YACjE,+DAA+D;YAC/D,yCAAyC;YACzC,MAAM,EAAE,4CAA4C;YACpD,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,mEAAmE;YACpF,KAAK,EAAE,qCAAqC;YAC5C,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,MAAM;YACjB,GAAG,EAAE,KAAK;SACX,aAED,gBAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,aAC/C,WAAW,OAAG,SAAS,cACnB,EACP,eAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,qCAAqC,EAAE,yCAAiC,IAC5G,CACP,CAAA;AACH,CAAC","sourcesContent":["/**\n * Capability Gate Components\n *\n * Entitlement enforcement at the rendering layer.\n *\n * Provides:\n * - EntitlementProvider: React context for entitlement state\n * - useEntitlements: Hook to read entitlement state\n * - GatedBlockPlaceholder: Visual placeholder for unentitled blocks\n *\n * @module @pwfabric/runtime/render/capability-gate\n */\n\nimport * as React from 'react'\n\n// ============================================================\n// TYPES\n// ============================================================\n\n/**\n * The claim set this gate reads.\n *\n * Enforcing a claim set is a rendering mechanism; deciding WHO is entitled to\n * WHAT is the host's business. A host's own entitlement type conforms to this\n * shape structurally.\n *\n * Keeping the gate but not the vocabulary is the point: the engine can\n * enforce entitlements for a product it knows nothing about.\n */\nexport interface EntitlementClaims {\n readonly blocks: readonly string[]\n readonly capabilities: readonly string[]\n}\n\nexport interface EntitlementContextValue {\n /** Whether entitlements have been loaded */\n readonly loaded: boolean\n /** Set of entitled block types */\n readonly entitledBlocks: ReadonlySet<string>\n /** Set of entitled capabilities */\n readonly entitledCapabilities: ReadonlySet<string>\n /** Check if a specific block type is entitled */\n readonly isBlockEntitled: (blockType: string) => boolean\n /** Check if a specific capability is entitled */\n readonly isCapabilityEntitled: (capability: string) => boolean\n}\n\nexport interface EntitlementProviderProps {\n /** The claim set from the host, or null if not yet loaded */\n readonly entitlements: EntitlementClaims | null\n readonly children: React.ReactNode\n}\n\n// ============================================================\n// CONTEXT\n// ============================================================\n\nconst EntitlementContext = React.createContext<EntitlementContextValue>({\n loaded: false,\n entitledBlocks: new Set(),\n entitledCapabilities: new Set(),\n isBlockEntitled: () => true, // fail-open when no provider\n isCapabilityEntitled: () => true,\n})\n\n// ============================================================\n// PROVIDER\n// ============================================================\n\n/**\n * EntitlementProvider\n *\n * Wraps the app or surface renderer to provide entitlement state.\n * When entitlements is null (not yet loaded), all checks pass (fail-open).\n * Once loaded, enforcement is active.\n */\nexport function EntitlementProvider({\n entitlements,\n children,\n}: EntitlementProviderProps): React.ReactElement {\n const value = React.useMemo<EntitlementContextValue>(() => {\n if (!entitlements) {\n return {\n loaded: false,\n entitledBlocks: new Set(),\n entitledCapabilities: new Set(),\n isBlockEntitled: () => true,\n isCapabilityEntitled: () => true,\n }\n }\n\n const blocks = new Set(entitlements.blocks)\n const capabilities = new Set(entitlements.capabilities)\n\n return {\n loaded: true,\n entitledBlocks: blocks,\n entitledCapabilities: capabilities,\n isBlockEntitled: (blockType: string) => blocks.has(blockType),\n isCapabilityEntitled: (capability: string) => capabilities.has(capability),\n }\n }, [entitlements])\n\n return React.createElement(EntitlementContext.Provider, { value }, children)\n}\n\n// ============================================================\n// HOOK\n// ============================================================\n\n/**\n * useEntitlements\n *\n * Read entitlement state from the nearest EntitlementProvider.\n */\nexport function useEntitlements(): EntitlementContextValue {\n return React.useContext(EntitlementContext)\n}\n\n// ============================================================\n// GATED BLOCK PLACEHOLDER\n// ============================================================\n\nexport interface GatedBlockPlaceholderProps {\n readonly blockId: string\n readonly blockType: string\n}\n\n/**\n * GatedBlockPlaceholder\n *\n * Renders a visual placeholder for blocks the tenant is not entitled to use.\n * Uses inline styles (no Tailwind dependency in runtime package).\n */\nexport function GatedBlockPlaceholder({\n blockId,\n blockType,\n}: GatedBlockPlaceholderProps): React.ReactElement {\n return (\n <div\n data-block-id={blockId}\n data-gated-block={blockType}\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '24px 16px',\n // Theme-tokened (was a hardcoded light-gray card that clashed on\n // dark-themed surfaces). The copy stays — this is a deliberate\n // marketplace CTA, not an error message.\n border: '2px dashed var(--pw-color-border, #d1d5db)',\n borderRadius: '8px',\n backgroundColor: 'color-mix(in srgb, var(--pw-color-text, #6b7280) 5%, transparent)',\n color: 'var(--pw-color-text-muted, #6b7280)',\n textAlign: 'center',\n minHeight: '80px',\n gap: '4px',\n }}\n >\n <span style={{ fontSize: '14px', fontWeight: 500 }}>\n {'\\u{1F512}'} {blockType} block\n </span>\n <span style={{ fontSize: '12px', color: 'var(--pw-color-text-muted, #9ca3af)' }}>Install from Marketplace</span>\n </div>\n )\n}\n"]}
|
|
@@ -39,4 +39,3 @@ export declare function blockConditionalStatesCss(blockId: string, conditionalSt
|
|
|
39
39
|
* (zero bytes emitted) so existing surfaces are byte-identical.
|
|
40
40
|
*/
|
|
41
41
|
export declare function collectConditionalStatesCss(blocks: readonly Block[], surfaceId?: string): string;
|
|
42
|
-
//# sourceMappingURL=conditional-states-css.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditional-states-css.js","sourceRoot":"","sources":["../../src/render/conditional-states-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAE/E,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;;;;;;;;;GASG;AACH,SAAS,qBAAqB,CAAC,QAAgB;IAC7C,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACvE,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAChC,OAAO,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC9G,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAAe,EACf,iBAA0D,EAC1D,SAAkB;IAElB,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IAClD,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE,CAAC;QACtC,IAAI,CAAC,KAAK,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC;YAAE,SAAQ;QAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;QACzB,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,SAAQ;QACvD,yEAAyE;QACzE,uEAAuE;QACvE,GAAG,IAAI,GAAG,QAAQ,6BAA6B,KAAK,CAAC,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAA;IACvF,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAAwB,EAAE,SAAkB;IACtF,OAAO,gBAAgB,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CACxC,KAAK,CAAC,iBAAiB;QACrB,CAAC,CAAC,yBAAyB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,iBAAiB,EAAE,SAAS,CAAC;QACzE,CAAC,CAAC,EAAE,CACP,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"conditional-states-css.js","sourceRoot":"","sources":["../../src/render/conditional-states-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAE/E,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;;;;;;;;;GASG;AACH,SAAS,qBAAqB,CAAC,QAAgB;IAC7C,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACvE,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAChC,OAAO,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC9G,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAAe,EACf,iBAA0D,EAC1D,SAAkB;IAElB,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IAClD,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE,CAAC;QACtC,IAAI,CAAC,KAAK,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC;YAAE,SAAQ;QAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;QACzB,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,SAAQ;QACvD,yEAAyE;QACzE,uEAAuE;QACvE,GAAG,IAAI,GAAG,QAAQ,6BAA6B,KAAK,CAAC,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAA;IACvF,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAAwB,EAAE,SAAkB;IACtF,OAAO,gBAAgB,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CACxC,KAAK,CAAC,iBAAiB;QACrB,CAAC,CAAC,yBAAyB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,iBAAiB,EAAE,SAAS,CAAC;QACzE,CAAC,CAAC,EAAE,CACP,CAAA;AACH,CAAC","sourcesContent":["/**\n * Conditional-state CSS generation (aria/data/disabled/checked/`:has(…)` variants).\n *\n * `block.style` sits inline and cannot express pseudo-classes or attribute\n * selectors, and the fixed `block.states` field only covers the three\n * interaction pseudo-classes (`:hover`/`:active`/`:focus-visible`). Everything\n * else a block can style by STATE without JS — form pseudo-classes\n * (`:disabled`, `:checked`, `:invalid`, `:required`), ARIA reflections\n * (`[aria-expanded=\"true\"]`), `data-*` flags (`[data-active]`), and structural\n * `:has(…)` / sibling rules — lives in `block.conditionalStates`. Each entry's\n * `selector` is a CSS suffix APPENDED to the block selector, so the runtime\n * emits:\n *\n * `[data-pw-surface] [data-block-id=\"<id>\"]:disabled{ … }`\n * `[data-pw-surface] [data-block-id=\"<id>\"][aria-expanded=\"true\"]{ … }`\n * `[data-pw-surface] [data-block-id=\"<id>\"]:has(> img){ … }`\n *\n * Keys are CSS camelCase property names (converted to kebab-case); declarations\n * are emitted with `!important` because a block COMPONENT often applies the same\n * CSS property inline with its own default, and inline beats any plain\n * stylesheet rule. Scoped to `[data-block-id]`, so it only overrides the one\n * block. Blocks without `conditionalStates` emit zero bytes so existing surfaces\n * are byte-identical.\n *\n * @module @pwfabric/runtime/render/conditional-states-css\n */\n\nimport type { Block } from '@pwfabric/core'\nimport { blockSelector, camelToKebab, collectScopedCss } 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 * A conditional-state selector must be a SUFFIX that attaches directly to the\n * block selector — never a bare/standalone selector that could match (and leak\n * to) unrelated elements on the host page. Valid first characters:\n * `:` pseudo-class/element (`:disabled`, `:has(…)`)\n * `[` attribute selector (`[aria-expanded=\"true\"]`, `[data-active]`)\n * `>` `+` `~` combinators (`> img`, `+ .x`, `~ .y`)\n * whitespace — descendant combinator (` .child`)\n * Anything else (a bare `.class`, `div`, `*`, empty string) is rejected.\n */\nfunction isValidSuffixSelector(selector: string): boolean {\n if (typeof selector !== 'string' || selector.length === 0) return false\n const first = selector.charAt(0)\n return first === ':' || first === '[' || first === '>' || first === '+' || first === '~' || /\\s/.test(first)\n}\n\n/**\n * Emit the scoped CSS rule(s) for a single block's conditional states. Targets\n * `[data-block-id=\"<id>\"]<selector>` scoped under the surface root so it cannot\n * leak to the host page. Entries with a malformed `selector` (not a valid\n * suffix) or an empty `style` record are skipped. Returns '' when the block\n * declares no usable conditional state.\n */\nexport function blockConditionalStatesCss(\n blockId: string,\n conditionalStates: NonNullable<Block['conditionalStates']>,\n surfaceId?: string\n): string {\n const selector = blockSelector(blockId, surfaceId)\n let css = ''\n for (const entry of conditionalStates) {\n if (!entry || !isValidSuffixSelector(entry.selector)) continue\n const decls = entry.style\n if (!decls || Object.keys(decls).length === 0) continue\n // Same wrapper-exclusion as states-css: the id matches two elements; the\n // visual rule must land on the component root, not the square wrapper.\n css += `${selector}:not([data-block-wrapper])${entry.selector}{${declsToCss(decls)}}`\n }\n return css\n}\n\n/**\n * Walk a surface block tree and concatenate the per-block conditional-state CSS\n * for every block declaring `conditionalStates`. Blocks without it are skipped\n * (zero bytes emitted) so existing surfaces are byte-identical.\n */\nexport function collectConditionalStatesCss(blocks: readonly Block[], surfaceId?: string): string {\n return collectScopedCss(blocks, (block) =>\n block.conditionalStates\n ? blockConditionalStatesCss(block.id, block.conditionalStates, surfaceId)\n : ''\n )\n}\n"]}
|
|
@@ -29,4 +29,3 @@ export declare const SurfaceConnectionsContext: import("react").Context<SurfaceC
|
|
|
29
29
|
* the host didn't opt in (runner default path, legacy platform rendering).
|
|
30
30
|
*/
|
|
31
31
|
export declare function useSurfaceConnections(): SurfaceConnectionsValue | null;
|
|
32
|
-
//# sourceMappingURL=connections-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connections-context.js","sourceRoot":"","sources":["../../src/render/connections-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAGjD;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,aAAa,CAAiC,IAAI,CAAC,CAAA;AAE5F;;;GAGG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,UAAU,CAAC,yBAAyB,CAAC,CAAA;AAC9C,CAAC"}
|
|
1
|
+
{"version":3,"file":"connections-context.js","sourceRoot":"","sources":["../../src/render/connections-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAGjD;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,aAAa,CAAiC,IAAI,CAAC,CAAA;AAE5F;;;GAGG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,UAAU,CAAC,yBAAyB,CAAC,CAAA;AAC9C,CAAC","sourcesContent":["/**\n * Surface Connections React Context\n *\n * Carries the surface's CONNECTIONS CONTEXT — the world's configured\n * connections (name/connector/config, single dialect with the runner's\n * `connections.json` entries) plus the loaded engine registry — through\n * the render tree. Pattern mirrors `EntityFacadeContext`.\n *\n * Consumers:\n * - `DataBoundSurfaceRenderer` routes `{kind:'entity', connector}` data\n * sources through the registry (via the renderer prop, not this context\n * — the fetch runs above `SurfaceRenderer`).\n * - Pack blocks on the engine-bridge path read connections/config here\n * (platform source) instead of the runner's bundled connections.json —\n * same shape, different source.\n *\n * Absent provider = null = today's behavior (additive, opt-in).\n *\n * @module @pwfabric/runtime/render/connections-context\n */\n\nimport { createContext, useContext } from 'react'\nimport type { SurfaceConnectionsValue } from '../connectors/types.js'\n\n/**\n * React context carrying the connections context. Defaults to null —\n * hosts that don't provide it keep today's behavior everywhere.\n */\nexport const SurfaceConnectionsContext = createContext<SurfaceConnectionsValue | null>(null)\n\n/**\n * Returns the connections context from the nearest provider, or null when\n * the host didn't opt in (runner default path, legacy platform rendering).\n */\nexport function useSurfaceConnections(): SurfaceConnectionsValue | null {\n return useContext(SurfaceConnectionsContext)\n}\n"]}
|
|
@@ -34,4 +34,3 @@ import type { AppearanceModePolicy } from '@pwfabric/contracts';
|
|
|
34
34
|
* because two surfaces sharing a document must not share a dark palette.
|
|
35
35
|
*/
|
|
36
36
|
export declare function buildDarkThemeCss(darkVars: Record<string, string>, surfaceId?: string, policy?: AppearanceModePolicy): string;
|
|
37
|
-
//# sourceMappingURL=dark-theme-css.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dark-theme-css.js","sourceRoot":"","sources":["../../src/render/dark-theme-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C;;;;;;;GAOG;AACH,SAAS,SAAS,CAAC,IAA4B;IAC7C,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SACxB,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,KAAK,aAAa,CAAC;SACrD,IAAI,CAAC,GAAG,CAAC,CAAA;AACd,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAgC,EAChC,SAAkB,EAClB,SAA+B,QAAQ;IAEvC,+DAA+D;IAC/D,+EAA+E;IAC/E,6DAA6D;IAC7D,IAAI,MAAM,KAAK,OAAO;QAAE,OAAO,EAAE,CAAA;IACjC,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;IAChC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAA;IACpB,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;IACrC,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,CAAA;IACjD,yDAAyD;IACzD,MAAM,MAAM,GAAG,GAAG,KAAK,0BAA0B,IAAI,GAAG,CAAA;IACxD,yEAAyE;IACzE,MAAM,IAAI,GAAG,sCAAsC,KAAK,iCAAiC,IAAI,IAAI,CAAA;IACjG,OAAO,MAAM,GAAG,IAAI,CAAA;AACtB,CAAC"}
|
|
1
|
+
{"version":3,"file":"dark-theme-css.js","sourceRoot":"","sources":["../../src/render/dark-theme-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C;;;;;;;GAOG;AACH,SAAS,SAAS,CAAC,IAA4B;IAC7C,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SACxB,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,KAAK,aAAa,CAAC;SACrD,IAAI,CAAC,GAAG,CAAC,CAAA;AACd,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAgC,EAChC,SAAkB,EAClB,SAA+B,QAAQ;IAEvC,+DAA+D;IAC/D,+EAA+E;IAC/E,6DAA6D;IAC7D,IAAI,MAAM,KAAK,OAAO;QAAE,OAAO,EAAE,CAAA;IACjC,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;IAChC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAA;IACpB,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;IACrC,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,CAAA;IACjD,yDAAyD;IACzD,MAAM,MAAM,GAAG,GAAG,KAAK,0BAA0B,IAAI,GAAG,CAAA;IACxD,yEAAyE;IACzE,MAAM,IAAI,GAAG,sCAAsC,KAAK,iCAAiC,IAAI,IAAI,CAAA;IACjG,OAAO,MAAM,GAAG,IAAI,CAAA;AACtB,CAAC","sourcesContent":["/**\n * Dark theme variant CSS generation (the \"both strategies\" dark mode).\n *\n * Light theme tokens stay INLINE on the surface root (`[data-pw-surface]`); this\n * module emits the scoped rules that override them under TWO conditions:\n *\n * 1. Manual force-dark — `[data-pw-surface=\"<sid>\"][data-pw-theme=\"dark\"]{…}`\n * (host toggles `data-pw-theme=\"dark\"` on the root regardless of OS).\n * 2. Auto (OS preference) — `@media (prefers-color-scheme:dark){\n * [data-pw-surface=\"<sid>\"]:not([data-pw-theme=\"light\"]){…}}` (applies\n * unless the host has force-toggled light).\n *\n * The selector carries the surface ID by VALUE. It used to match on the mere\n * PRESENCE of `[data-pw-surface]`, which was a real bug: the embed autoloader\n * hydrates every `[data-pw-surface]` element in a document, so a host page can\n * hold several surfaces with different palettes. Each emitted its own `<style>`\n * with the same value-less selector and `!important`, so equal specificity made\n * DOCUMENT ORDER decide — the last surface's dark palette repainted all of them.\n * Reproduced in Chromium: a blue-themed surface rendered the amber surface's\n * dark background. The light theme was never affected because its values are\n * inline per element and custom properties inherit.\n *\n * @module @pwfabric/runtime/render/dark-theme-css\n */\n\nimport type { AppearanceModePolicy } from '@pwfabric/contracts'\nimport { surfaceScope } from './scoped-css.js'\n\n/**\n * Serialize a `--pw-*` CSS-var map to `--pw-…:val !important;…`.\n * `!important`: the LIGHT theme vars are applied INLINE on the surface root\n * (`rootStyle`), and an inline declaration beats any stylesheet/@media rule — so\n * without `!important` the dark overrides would never take effect. `!important`\n * on a custom-property declaration is honoured by the cascade and lets the\n * stylesheet dark vars override the inline light vars.\n */\nfunction varsToCss(vars: Record<string, string>): string {\n return Object.entries(vars)\n .map(([name, value]) => `${name}:${value} !important`)\n .join(';')\n}\n\n/**\n * Build the dark theme CSS from a resolved dark CSS-variable map (the output of\n * `resolveAppearanceDarkVars`). Emits BOTH the manual force-dark rule and the\n * `prefers-color-scheme:dark` auto rule. Returns '' when there are no dark vars.\n *\n * @param darkVars - resolved `--pw-*` map for the dark variant\n * @param surfaceId - scopes the rules to ONE surface. Omit only when rendering a\n * single surface in isolation (unit tests); the renderer always supplies it,\n * because two surfaces sharing a document must not share a dark palette.\n */\nexport function buildDarkThemeCss(\n darkVars: Record<string, string>,\n surfaceId?: string,\n policy: AppearanceModePolicy = 'system'\n): string {\n // The app says which modes it wears. A light-only app emits no\n // dark rule at all, so a dark device keeps it light; a dark-only app wears the\n // dark palette unconditionally. `system` follows the device.\n if (policy === 'light') return ''\n const body = varsToCss(darkVars)\n if (!body) return ''\n const scope = surfaceScope(surfaceId)\n if (policy === 'dark') return `${scope}{${body}}`\n // 1. Manual force-dark (host sets data-pw-theme=\"dark\").\n const manual = `${scope}[data-pw-theme=\"dark\"]{${body}}`\n // 2. Auto via OS preference, unless force-light (data-pw-theme=\"light\").\n const auto = `@media (prefers-color-scheme:dark){${scope}:not([data-pw-theme=\"light\"]){${body}}}`\n return manual + auto\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-binding-types.js","sourceRoot":"","sources":["../../src/render/data-binding-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
|
1
|
+
{"version":3,"file":"data-binding-types.js","sourceRoot":"","sources":["../../src/render/data-binding-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG","sourcesContent":["/**\n * Data Binding Types for Surface Renderer\n *\n * Type definitions for data-bound surface rendering.\n * These types define the shape of surface JSON definitions that include\n * dataSources, state, and expression-based prop bindings.\n *\n * @module @pwfabric/runtime/render/data-binding-types\n */\n\nimport type { SurfaceDataCache } from './data-cache.js'\nimport type { Block } from '@pwfabric/core'\nimport type { RenderableSurface, SurfaceRendererProps } from './types.js'\nimport type { DataServiceConfig } from '../data/types.js'\n\n// ============================================================\n// DATA SOURCE DEFINITION (Surface JSON level)\n// ============================================================\n\n/**\n * Source kinds supported in surface JSON definitions.\n * Note: 'computed' is excluded because functions can't be serialized in JSON.\n */\nexport type SurfaceDataSourceKind = 'rest' | 'static' | 'state' | 'entity'\n\n/**\n * Data source definition within a surface JSON.\n * Unlike DataSourceDefinition from data/types, this is JSON-serializable.\n */\nexport interface SurfaceDataSourceDefinition {\n /** Unique source identifier, used as the key in expression context */\n readonly id: string\n /** Source kind */\n readonly kind: SurfaceDataSourceKind\n /** REST endpoint (may contain {{state.key}} placeholders) */\n readonly endpoint?: string\n /** HTTP method for REST sources */\n readonly method?: 'GET' | 'POST' | 'PUT' | 'DELETE'\n /** Static inline data */\n readonly staticData?: unknown\n /** Auto-refresh interval in ms (0 or undefined = no auto-refresh) */\n readonly refreshInterval?: number\n /** Optional HTTP headers to include in REST requests (e.g. Authorization) */\n readonly headers?: Readonly<Record<string, string>>\n /** Entity type to list (kind: 'entity') via the platform/entities facade */\n readonly entityType?: string\n /** Optional query for entity sources (filter/sort/pagination). String\n * leaves may carry `{{state.x}}` expressions — resolved against surface\n * state before the connector is called (see render/query-state.ts). */\n readonly query?: Readonly<Record<string, unknown>>\n /** Payload bound when the source cannot be served (connector missing /\n * failed). `__errors.<id>` stays populated alongside it. */\n readonly fallback?: unknown\n /**\n * Contract parity with `dataSourceSchema.connector`: which\n * data-plane engine serves this entity source (e.g. 'graph-lists').\n * Routed through the host-provided `ConnectorEngineRegistry` when the\n * connection is registered there; absent/unregistered = the default\n * entity facade path (today's behavior).\n */\n readonly connector?: string\n /**\n * The response property holding the list — `data`, `products`, or absent\n * when the body IS the array. Dotted paths allowed for a nested one.\n */\n readonly returns?: string\n /** world auth binding BY NAME — never credential values. */\n readonly authProviderRef?: string\n /**\n * Contract parity with `dataSourceSchema.aggregate`: ask for ONE\n * NUMBER over the collection instead of its rows. The source binds\n * `{ fn, field?, value, count }` — `{{<id>.value}}` — and is exempt from\n * the list wrap. `filter` leaves may carry `{{state.x}}` like `query`.\n */\n readonly aggregate?: {\n readonly fn: 'count' | 'sum' | 'avg'\n readonly field?: string\n readonly filter?: Readonly<Record<string, unknown>>\n }\n}\n\n// ============================================================\n// SURFACE ACTIONS\n// ============================================================\n\n/**\n * Action types that blocks can dispatch via their action prop.\n */\nexport type SurfaceActionType =\n | 'setState'\n | 'refresh'\n | 'refreshAll'\n | 'showBlock'\n | 'hideBlock'\n | 'navigate'\n\n/**\n * Action dispatched by a block (e.g. button click, tab change).\n */\nexport type SurfaceAction =\n | { readonly type: 'setState'; readonly key: string; readonly value: unknown }\n | { readonly type: 'refresh'; readonly sourceId: string }\n | { readonly type: 'refreshAll' }\n | { readonly type: 'showBlock'; readonly blockId: string }\n | { readonly type: 'hideBlock'; readonly blockId: string }\n | { readonly type: 'navigate'; readonly url: string }\n\n/**\n * What a block's `action` prop may hold: one action, or a list run in order\n * on the block's click (`block:click`) — never on its other events.\n */\nexport type BlockActionProp = SurfaceAction | readonly SurfaceAction[]\n\n/**\n * A behavior stored on a published surface — maps an event trigger to one or more actions.\n * The `event` field accepts canonical colon form (`block:click`) or legacy dot form\n * (`surface.load`) — normalized at match time by `canonicalizeEventType`.\n */\nexport interface RuntimeBehavior {\n readonly id: string\n readonly event: string\n readonly targetBlockId?: string\n readonly actions: readonly SurfaceAction[]\n}\n\n// ============================================================\n// DATA-BOUND SURFACE\n// ============================================================\n\n/**\n * Surface definition extended with data binding capabilities.\n * This is the shape of a surface JSON that uses live data.\n */\nexport interface DataBoundSurface {\n /**\n * Stable surface id — SurfaceRenderer's render scope.\n *\n * Omitted from this type originally, which made the drop invisible: the\n * renderer decomposes the surface into blocks/appearance/capabilities and\n * rebuilds it, and a field the type never had could not survive the rebuild.\n * Downstream, `[data-pw-surface]` rendered with an EMPTY value and every\n * per-surface rule (dark theme, visibility, interaction states) fell back to\n * the value-less selector shared by every surface in the document — the exact\n * collision the scoping was added to prevent.\n */\n readonly id?: string\n /** Block composition */\n readonly blocks: readonly Block[]\n /** ui-appearance atom reference (theme + layout + styleVariables consolidated). */\n readonly appearance?: RenderableSurface['appearance']\n /** capability list — `platform/persistence` carries dataSources + initialState in its config. */\n readonly capabilities?: RenderableSurface['capabilities']\n}\n\n// ============================================================\n// RENDERER PROPS\n// ============================================================\n\n/**\n * Props for DataBoundSurfaceRenderer.\n * Extends SurfaceRendererProps but accepts a DataBoundSurface.\n */\nexport interface DataBoundSurfaceRendererProps extends Omit<SurfaceRendererProps, 'surface'> {\n /** Surface definition with optional dataSources and state */\n readonly surface: DataBoundSurface\n /** Stored behaviors to execute when their trigger event fires on the bus */\n readonly behaviors?: readonly RuntimeBehavior[]\n /**\n * Intercept a `navigate` action before the default `window.location.assign`\n * fallback runs. Return `true` to signal the host handled it (e.g. swapped\n * to a sibling page in place, connected-preview style) — the default hard\n * navigation is skipped. Return `false`/`undefined` to fall through to the\n * default behavior.\n */\n readonly onNavigateAction?: (url: string) => boolean\n /**\n * What to render while the initial `fetchAllSources` pass is in flight.\n *\n * - `'gate'` (default) — the historical behavior: an all-or-nothing\n * \"Loading data...\" placeholder replaces the ENTIRE block tree until the\n * first fetch settles. Kept as the default so existing consumers (e.g.\n * published `/s/` pages) are byte-identical.\n * - `'immediate'` — render the block tree right away; expressions bound to\n * still-loading sources resolve to `undefined` (never a literal `{{…}}`\n * string — path expressions always evaluate successfully) and fill in as\n * each source lands. Static chrome (navbar, headings, footer) is visible\n * from the first frame. Pair with the `__loading.<sourceId>` /\n * `__anyLoading` expression keys to drive per-widget skeletons.\n */\n readonly loadingStrategy?: 'gate' | 'immediate'\n /**\n * Yesterday's rows while today's load. A source whose key (see\n * `dataSourceCacheKey`) is present is seeded from the cache on the first\n * frame and still re-fetched; the fresh result replaces the seed and is\n * written back. Pairs naturally with `loadingStrategy: 'immediate'`.\n */\n readonly dataCache?: SurfaceDataCache\n\n /**\n * Configuration for the DataService this renderer creates.\n *\n * IT WAS NEVER PASSED. `<DataCapabilityProvider>` was mounted bare, so the\n * service was built with no config — which means `getAccessToken` was always\n * undefined and every `authProviderRef` on every rest source resolved to\n * nobody. The field parsed, travelled and was read by a resolver that could\n * not exist. Threading it is the repair; it is also what lets a host say\n * which origin is its own, so our API can be called with a cookie and\n * nobody else's can.\n */\n readonly dataServiceConfig?: DataServiceConfig\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-cache.js","sourceRoot":"","sources":["../../src/render/data-cache.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AASzE;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAmC,EACnC,KAAwC;IAExC,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IACzE,yEAAyE;IACzE,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,wBAAwB,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;QAChH,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC1E,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACtF,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,MAAM,CAAC,IAAI;QACX,MAAM,CAAC,EAAE;QACT,kEAAkE;QAClE,sEAAsE;QACtE,6CAA6C;QAC7C,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;QAC9E,MAAM,CAAC,MAAM,IAAI,IAAI;QACrB,MAAM,CAAC,UAAU,IAAI,IAAI;QACzB,MAAM,CAAC,SAAS,IAAI,IAAI;QACxB,MAAM,CAAC,OAAO,IAAI,IAAI;QACtB,KAAK;QACL,SAAS;KACV,CAAC,CAAA;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"data-cache.js","sourceRoot":"","sources":["../../src/render/data-cache.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AASzE;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAmC,EACnC,KAAwC;IAExC,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IACzE,yEAAyE;IACzE,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,wBAAwB,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;QAChH,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC1E,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACtF,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,MAAM,CAAC,IAAI;QACX,MAAM,CAAC,EAAE;QACT,kEAAkE;QAClE,sEAAsE;QACtE,6CAA6C;QAC7C,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;QAC9E,MAAM,CAAC,MAAM,IAAI,IAAI;QACrB,MAAM,CAAC,UAAU,IAAI,IAAI;QACzB,MAAM,CAAC,SAAS,IAAI,IAAI;QACxB,MAAM,CAAC,OAAO,IAAI,IAAI;QACtB,KAAK;QACL,SAAS;KACV,CAAC,CAAA;AACJ,CAAC","sourcesContent":["/**\n * A host-provided cache for fetched source data — stale-while-revalidate.\n *\n * A page the visitor has already seen should not come back empty while its\n * sources are re-fetched. The renderer knows nothing about where the cache\n * lives (the published-app runner keeps it in sessionStorage, a host may keep\n * it in memory); it only asks for a value by key on the first frame and\n * writes the fresh result back after a successful fetch. A failed fetch never\n * writes, so a good entry is not replaced by nothing.\n *\n * @module @pwfabric/runtime/render/data-cache\n */\nimport type { SurfaceDataSourceDefinition } from './data-binding-types.js'\nimport { resolveQueryState } from './query-state.js'\nimport { endpointMissingPathValue, resolveEndpoint } from './endpoint.js'\n\nexport interface SurfaceDataCache {\n /** The last successful result for this key, or undefined. */\n get(key: string): unknown\n /** Remember a successful result. Must not throw on a full store. */\n set(key: string, value: unknown): void\n}\n\n/**\n * The key a source's fetched data is remembered under.\n *\n * Built from everything that decides WHAT is fetched — kind, id, resolved address,\n * entity type, connector, and the query with its `{{state.*}}` placeholders\n * resolved against the current state — so page 2 never answers as page 1.\n * The `fallback` payload is left out: sample rows are not part of what was\n * fetched. `state` and `static` sources are never fetched, so they have no\n * key.\n */\nexport function dataSourceCacheKey(\n source: SurfaceDataSourceDefinition,\n state: Readonly<Record<string, unknown>>\n): string | undefined {\n if (source.kind === 'state' || source.kind === 'static') return undefined\n // An idle source (a required path value is empty) is not fetched either.\n if (source.kind === 'rest' && source.endpoint !== undefined && endpointMissingPathValue(source.endpoint, state)) {\n return undefined\n }\n const query = source.query ? resolveQueryState(source.query, state) : null\n const aggregate = source.aggregate ? resolveQueryState(source.aggregate, state) : null\n return JSON.stringify([\n source.kind,\n source.id,\n // The RESOLVED address, not the template: with the template every\n // `/products/{{state.id}}` shared one key, and `?id=13` opened on the\n // rows cached for 12 until the fetch landed.\n source.endpoint !== undefined ? resolveEndpoint(source.endpoint, state) : null,\n source.method ?? null,\n source.entityType ?? null,\n source.connector ?? null,\n source.returns ?? null,\n query,\n aggregate,\n ])\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derive-dark-theme.js","sourceRoot":"","sources":["../../src/render/derive-dark-theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"derive-dark-theme.js","sourceRoot":"","sources":["../../src/render/derive-dark-theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA","sourcesContent":["/**\n * Derive a dark theme variant from a light SurfaceTheme.\n *\n * A colour palette is a preset the end user edits — not a reason to ship a\n * separate appearance atom. The dark variant is DERIVED from the light palette\n * rather than authored twice.\n *\n * The implementation lives in `@pwfabric/contracts`\n * (`fabric/appearance-cascade`), because the derivation can run at WRITE\n * time: an authoring tool may bake the result into\n * `appearance.config.darkTheme` so the author can see and edit the dark palette\n * instead of it being invisible render-time magic. Render still derives as the\n * fallback for surfaces that carry no baked variant.\n *\n * @module @pwfabric/runtime/render/derive-dark-theme\n */\n\nexport { deriveDarkTheme } from '@pwfabric/contracts'\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-artifact-context.js","sourceRoot":"","sources":["../../src/render/dynamic-artifact-context.tsx"],"names":[],"mappings":";AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAkB,MAAM,OAAO,CAAA;AAErF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AA6C7D,+DAA+D;AAC/D,UAAU;AACV,+DAA+D;AAE/D,MAAM,sBAAsB,GAAG,aAAa,CAA8B;IACxE,aAAa,EAAE,IAAI,GAAG,EAAE;IACxB,eAAe,EAAE,IAAI,GAAG,EAAE;IAC1B,QAAQ,EAAE,KAAK;CAChB,CAAC,CAAA;AAEF,+DAA+D;AAC/D,WAAW;AACX,+DAA+D;AAE/D;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAiE;IAEjE,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IACpD,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;AACxC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,EACtC,aAAa,EACb,eAAe,EACf,QAAQ,GAAG,IAAI,EACf,OAAO,GAAG,KAAK,EACf,QAAQ,GACqB;IAC7B,MAAM,KAAK,GAAG,OAAO,CAA8B,GAAG,EAAE;QACtD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkC,CAAA;QAC1D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoC,CAAA;QAE9D,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;gBAClC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;YACtC,CAAC;QACH,CAAC;QAED,IAAI,eAAe,EAAE,CAAC;YACpB,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;gBACtC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC;QAED,OAAO;YACL,aAAa,EAAE,QAAQ;YACvB,eAAe,EAAE,UAAU;YAC3B,QAAQ;SACT,CAAA;IACH,CAAC,EAAE,CAAC,aAAa,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAA;IAE9C,wEAAwE;IACxE,wEAAwE;IACxE,0DAA0D;IAC1D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO;YAAE,OAAM;QACpB,oBAAoB,CAAC,aAAa,CAAC,CAAA;IACrC,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAA;IAE5B,OAAO,KAAC,sBAAsB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAmC,CAAA;AACpG,CAAC;AAED,+DAA+D;AAC/D,QAAQ;AACR,+DAA+D;AAE/D;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAI9B,MAAM,GAAG,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAA;IAC9C,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,aAAa,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAA;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAIhC,MAAM,GAAG,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAA;IAC9C,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,eAAe,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAA;AAClE,CAAC"}
|
|
1
|
+
{"version":3,"file":"dynamic-artifact-context.js","sourceRoot":"","sources":["../../src/render/dynamic-artifact-context.tsx"],"names":[],"mappings":";AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAkB,MAAM,OAAO,CAAA;AAErF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AA6C7D,+DAA+D;AAC/D,UAAU;AACV,+DAA+D;AAE/D,MAAM,sBAAsB,GAAG,aAAa,CAA8B;IACxE,aAAa,EAAE,IAAI,GAAG,EAAE;IACxB,eAAe,EAAE,IAAI,GAAG,EAAE;IAC1B,QAAQ,EAAE,KAAK;CAChB,CAAC,CAAA;AAEF,+DAA+D;AAC/D,WAAW;AACX,+DAA+D;AAE/D;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAiE;IAEjE,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IACpD,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;AACxC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,EACtC,aAAa,EACb,eAAe,EACf,QAAQ,GAAG,IAAI,EACf,OAAO,GAAG,KAAK,EACf,QAAQ,GACqB;IAC7B,MAAM,KAAK,GAAG,OAAO,CAA8B,GAAG,EAAE;QACtD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkC,CAAA;QAC1D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoC,CAAA;QAE9D,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;gBAClC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;YACtC,CAAC;QACH,CAAC;QAED,IAAI,eAAe,EAAE,CAAC;YACpB,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;gBACtC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC;QAED,OAAO;YACL,aAAa,EAAE,QAAQ;YACvB,eAAe,EAAE,UAAU;YAC3B,QAAQ;SACT,CAAA;IACH,CAAC,EAAE,CAAC,aAAa,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAA;IAE9C,wEAAwE;IACxE,wEAAwE;IACxE,0DAA0D;IAC1D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO;YAAE,OAAM;QACpB,oBAAoB,CAAC,aAAa,CAAC,CAAA;IACrC,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAA;IAE5B,OAAO,KAAC,sBAAsB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAmC,CAAA;AACpG,CAAC;AAED,+DAA+D;AAC/D,QAAQ;AACR,+DAA+D;AAE/D;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAI9B,MAAM,GAAG,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAA;IAC9C,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,aAAa,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAA;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAIhC,MAAM,GAAG,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAA;IAC9C,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,eAAe,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAA;AAClE,CAAC","sourcesContent":["/**\n * Dynamic Artifact Context Provider\n *\n * Provides dynamic block and starter descriptor maps\n * to the component tree. Populated from the host's render grants.\n *\n * @module @pwfabric/runtime/render/dynamic-artifact-context\n */\n\nimport { createContext, useContext, useEffect, useMemo, type ReactNode } from 'react'\nimport type { DynamicBlockDescriptor, DynamicStarterDescriptor } from '@pwfabric/contracts'\nimport { BlockModuleLoader } from './dynamic-block-loader.js'\n\n// ============================================================\n// TYPES\n// ============================================================\n\nexport interface DynamicArtifactContextValue {\n readonly dynamicBlocks: ReadonlyMap<string, DynamicBlockDescriptor>\n readonly dynamicStarters: ReadonlyMap<string, DynamicStarterDescriptor>\n readonly isLoaded: boolean\n}\n\nexport interface DynamicArtifactProviderProps {\n readonly dynamicBlocks?: readonly DynamicBlockDescriptor[]\n readonly dynamicStarters?: readonly DynamicStarterDescriptor[]\n /**\n * Whether the dynamic descriptors have finished loading. Server-rendered\n * consumers (a published page) pass fully-resolved descriptors\n * synchronously and omit this — it defaults to `true`. Client-side editors\n * load descriptors from the host's aggregate after mount, so they pass the\n * live loading state; consumers can then tell \"still loading\" apart from\n * \"genuinely no descriptor\" instead of flashing every block as unknown on\n * first paint.\n */\n readonly isLoaded?: boolean\n /**\n * WARM THE WHOLE CATALOG ON MOUNT. Off by default, and that default is the\n * point.\n *\n * This provider typically sits in the host app's root layout, so it is\n * mounted on every route. Preloading from there downloads, hash-verifies and\n * blob-imports every descriptor the host owns on pages that render none of\n * them — dozens of bundles and tens of seconds of summed download on a page\n * with no renderer at all.\n *\n * Rendering a block does not need this: `DynamicBlockWrapper` asks the\n * loader for the descriptor it is about to draw, and the loader caches and\n * de-dupes by block type. Turn it on only where a canvas is genuinely about\n * to render arbitrary blocks and the round trip should already be in flight\n * — a studio or an editor, never a layout.\n */\n readonly preload?: boolean\n readonly children: ReactNode\n}\n\n// ============================================================\n// CONTEXT\n// ============================================================\n\nconst DynamicArtifactContext = createContext<DynamicArtifactContextValue>({\n dynamicBlocks: new Map(),\n dynamicStarters: new Map(),\n isLoaded: false,\n})\n\n// ============================================================\n// PROVIDER\n// ============================================================\n\n/**\n * Warm the loader's cache for a whole catalog, fire-and-forget.\n *\n * The imperative half of the same opt-in: a canvas that knows it is about to\n * render arbitrary blocks can start the downloads itself, without the provider\n * having to guess from the fact that it was mounted. Caching and de-duplication\n * stay entirely the loader's business — calling this twice costs one download.\n */\nexport function preloadDynamicBlocks(\n descriptors: readonly DynamicBlockDescriptor[] | undefined | null\n): void {\n if (!descriptors || descriptors.length === 0) return\n BlockModuleLoader.preload(descriptors)\n}\n\n/**\n * Provides dynamic block and starter descriptors to the component tree.\n *\n * Downloads nothing by itself: blocks load lazily as they are rendered. Pass\n * `preload` to warm the whole catalog on mount.\n */\nexport function DynamicArtifactProvider({\n dynamicBlocks,\n dynamicStarters,\n isLoaded = true,\n preload = false,\n children,\n}: DynamicArtifactProviderProps): ReactNode {\n const value = useMemo<DynamicArtifactContextValue>(() => {\n const blockMap = new Map<string, DynamicBlockDescriptor>()\n const starterMap = new Map<string, DynamicStarterDescriptor>()\n\n if (dynamicBlocks) {\n for (const block of dynamicBlocks) {\n blockMap.set(block.blockType, block)\n }\n }\n\n if (dynamicStarters) {\n for (const starter of dynamicStarters) {\n starterMap.set(starter.starterId, starter)\n }\n }\n\n return {\n dynamicBlocks: blockMap,\n dynamicStarters: starterMap,\n isLoaded,\n }\n }, [dynamicBlocks, dynamicStarters, isLoaded])\n\n // In an effect, not in the memo above: a preload is a side effect and a\n // render is not the place for one — inside `useMemo` it also ran during\n // server rendering, where nothing can consume the result.\n useEffect(() => {\n if (!preload) return\n preloadDynamicBlocks(dynamicBlocks)\n }, [preload, dynamicBlocks])\n\n return <DynamicArtifactContext.Provider value={value}>{children}</DynamicArtifactContext.Provider>\n}\n\n// ============================================================\n// HOOKS\n// ============================================================\n\n/**\n * Access dynamic block descriptors.\n */\nexport function useDynamicBlocks(): {\n readonly blocks: ReadonlyMap<string, DynamicBlockDescriptor>\n readonly isLoaded: boolean\n} {\n const ctx = useContext(DynamicArtifactContext)\n return { blocks: ctx.dynamicBlocks, isLoaded: ctx.isLoaded }\n}\n\n/**\n * Access dynamic starter descriptors.\n */\nexport function useDynamicStarters(): {\n readonly starters: ReadonlyMap<string, DynamicStarterDescriptor>\n readonly isLoaded: boolean\n} {\n const ctx = useContext(DynamicArtifactContext)\n return { starters: ctx.dynamicStarters, isLoaded: ctx.isLoaded }\n}\n"]}
|