@pwfabric/runtime 0.0.0-stage → 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/LICENSE +90 -0
- package/README.md +43 -2
- package/dist/a11y/announcer.d.ts +65 -0
- package/dist/a11y/announcer.js +140 -0
- package/dist/a11y/announcer.js.map +1 -0
- package/dist/a11y/contrast.d.ts +54 -0
- package/dist/a11y/contrast.js +93 -0
- package/dist/a11y/contrast.js.map +1 -0
- package/dist/a11y/focus.d.ts +123 -0
- package/dist/a11y/focus.js +282 -0
- package/dist/a11y/focus.js.map +1 -0
- package/dist/a11y/index.d.ts +21 -0
- package/dist/a11y/index.js +18 -0
- package/dist/a11y/index.js.map +1 -0
- package/dist/a11y/keyboard.d.ts +144 -0
- package/dist/a11y/keyboard.js +317 -0
- package/dist/a11y/keyboard.js.map +1 -0
- package/dist/adapters/default-image.d.ts +25 -0
- package/dist/adapters/default-image.js +37 -0
- package/dist/adapters/default-image.js.map +1 -0
- package/dist/adapters/index.d.ts +27 -0
- package/dist/adapters/index.js +28 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/next-image.d.ts +38 -0
- package/dist/adapters/next-image.js +124 -0
- package/dist/adapters/next-image.js.map +1 -0
- package/dist/adapters/types.d.ts +61 -0
- package/dist/adapters/types.js +11 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/analytics/index.d.ts +14 -0
- package/dist/analytics/index.js +15 -0
- package/dist/analytics/index.js.map +1 -0
- package/dist/analytics/tracker.d.ts +65 -0
- package/dist/analytics/tracker.js +251 -0
- package/dist/analytics/tracker.js.map +1 -0
- package/dist/analytics/types.d.ts +130 -0
- package/dist/analytics/types.js +11 -0
- package/dist/analytics/types.js.map +1 -0
- package/dist/auth/index.d.ts +15 -0
- package/dist/auth/index.js +14 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/provider.d.ts +132 -0
- package/dist/auth/provider.js +473 -0
- package/dist/auth/provider.js.map +1 -0
- package/dist/auth/types.d.ts +117 -0
- package/dist/auth/types.js +9 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/binding/collection.d.ts +190 -0
- package/dist/binding/collection.js +358 -0
- package/dist/binding/collection.js.map +1 -0
- package/dist/binding/datasource.d.ts +319 -0
- package/dist/binding/datasource.js +556 -0
- package/dist/binding/datasource.js.map +1 -0
- package/dist/binding/engine.d.ts +65 -0
- package/dist/binding/engine.js +268 -0
- package/dist/binding/engine.js.map +1 -0
- package/dist/binding/expression.d.ts +150 -0
- package/dist/binding/expression.js +787 -0
- package/dist/binding/expression.js.map +1 -0
- package/dist/binding/index.d.ts +19 -0
- package/dist/binding/index.js +14 -0
- package/dist/binding/index.js.map +1 -0
- package/dist/binding/two-way.d.ts +149 -0
- package/dist/binding/two-way.js +462 -0
- package/dist/binding/two-way.js.map +1 -0
- package/dist/binding/types.d.ts +119 -0
- package/dist/binding/types.js +9 -0
- package/dist/binding/types.js.map +1 -0
- package/dist/blocks/component-types.d.ts +81 -0
- package/dist/blocks/component-types.js +11 -0
- package/dist/blocks/component-types.js.map +1 -0
- package/dist/blocks/composition-rules.d.ts +168 -0
- package/dist/blocks/composition-rules.js +391 -0
- package/dist/blocks/composition-rules.js.map +1 -0
- package/dist/blocks/hooks.d.ts +31 -0
- package/dist/blocks/hooks.js +42 -0
- package/dist/blocks/hooks.js.map +1 -0
- package/dist/blocks/index.d.ts +14 -0
- package/dist/blocks/index.js +23 -0
- package/dist/blocks/index.js.map +1 -0
- package/dist/blocks/registry.d.ts +84 -0
- package/dist/blocks/registry.js +136 -0
- package/dist/blocks/registry.js.map +1 -0
- package/dist/blocks/rule-engine.d.ts +131 -0
- package/dist/blocks/rule-engine.js +321 -0
- package/dist/blocks/rule-engine.js.map +1 -0
- package/dist/blocks/surface-event-context.d.ts +13 -0
- package/dist/blocks/surface-event-context.js +14 -0
- package/dist/blocks/surface-event-context.js.map +1 -0
- package/dist/blocks/surface-id-context.d.ts +13 -0
- package/dist/blocks/surface-id-context.js +15 -0
- package/dist/blocks/surface-id-context.js.map +1 -0
- package/dist/bus.d.ts +41 -0
- package/dist/bus.js +158 -0
- package/dist/bus.js.map +1 -0
- package/dist/cache/index.d.ts +9 -0
- package/dist/cache/index.js +10 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/memory.d.ts +32 -0
- package/dist/cache/memory.js +138 -0
- package/dist/cache/memory.js.map +1 -0
- package/dist/cache/types.d.ts +62 -0
- package/dist/cache/types.js +9 -0
- package/dist/cache/types.js.map +1 -0
- package/dist/capability/index.d.ts +72 -0
- package/dist/capability/index.js +87 -0
- package/dist/capability/index.js.map +1 -0
- package/dist/capability/kernel-capabilities.d.ts +31 -0
- package/dist/capability/kernel-capabilities.js +36 -0
- package/dist/capability/kernel-capabilities.js.map +1 -0
- package/dist/capability/platform-capabilities.d.ts +71 -0
- package/dist/capability/platform-capabilities.js +267 -0
- package/dist/capability/platform-capabilities.js.map +1 -0
- package/dist/capability/type-mapping.d.ts +70 -0
- package/dist/capability/type-mapping.js +107 -0
- package/dist/capability/type-mapping.js.map +1 -0
- package/dist/capability/validation.d.ts +46 -0
- package/dist/capability/validation.js +54 -0
- package/dist/capability/validation.js.map +1 -0
- package/dist/connectors/declared-connector.d.ts +48 -0
- package/dist/connectors/declared-connector.js +333 -0
- package/dist/connectors/declared-connector.js.map +1 -0
- package/dist/connectors/engine-registry.d.ts +50 -0
- package/dist/connectors/engine-registry.js +135 -0
- package/dist/connectors/engine-registry.js.map +1 -0
- package/dist/connectors/index.d.ts +14 -0
- package/dist/connectors/index.js +14 -0
- package/dist/connectors/index.js.map +1 -0
- package/dist/connectors/module-loader.d.ts +70 -0
- package/dist/connectors/module-loader.js +143 -0
- package/dist/connectors/module-loader.js.map +1 -0
- package/dist/connectors/types.d.ts +174 -0
- package/dist/connectors/types.js +23 -0
- package/dist/connectors/types.js.map +1 -0
- package/dist/context.d.ts +27 -0
- package/dist/context.js +38 -0
- package/dist/context.js.map +1 -0
- package/dist/data/DataCapabilityProvider.d.ts +39 -0
- package/dist/data/DataCapabilityProvider.js +58 -0
- package/dist/data/DataCapabilityProvider.js.map +1 -0
- package/dist/data/index.d.ts +17 -0
- package/dist/data/index.js +18 -0
- package/dist/data/index.js.map +1 -0
- package/dist/data/manager.d.ts +40 -0
- package/dist/data/manager.js +442 -0
- package/dist/data/manager.js.map +1 -0
- package/dist/data/types.d.ts +218 -0
- package/dist/data/types.js +2 -0
- package/dist/data/types.js.map +1 -0
- package/dist/entity/aggregate.d.ts +8 -0
- package/dist/entity/aggregate.js +24 -0
- package/dist/entity/aggregate.js.map +1 -0
- package/dist/entity/apply-query.d.ts +58 -0
- package/dist/entity/apply-query.js +264 -0
- package/dist/entity/apply-query.js.map +1 -0
- package/dist/entity/behavior.d.ts +94 -0
- package/dist/entity/behavior.js +78 -0
- package/dist/entity/behavior.js.map +1 -0
- package/dist/entity/connector.d.ts +141 -0
- package/dist/entity/connector.js +89 -0
- package/dist/entity/connector.js.map +1 -0
- package/dist/entity/connectors/index.d.ts +12 -0
- package/dist/entity/connectors/index.js +11 -0
- package/dist/entity/connectors/index.js.map +1 -0
- package/dist/entity/connectors/static.d.ts +51 -0
- package/dist/entity/connectors/static.js +245 -0
- package/dist/entity/connectors/static.js.map +1 -0
- package/dist/entity/entity-datasource.d.ts +50 -0
- package/dist/entity/entity-datasource.js +33 -0
- package/dist/entity/entity-datasource.js.map +1 -0
- package/dist/entity/facade.d.ts +70 -0
- package/dist/entity/facade.js +70 -0
- package/dist/entity/facade.js.map +1 -0
- package/dist/entity/http-connector.d.ts +123 -0
- package/dist/entity/http-connector.js +295 -0
- package/dist/entity/http-connector.js.map +1 -0
- package/dist/entity/index.d.ts +38 -0
- package/dist/entity/index.js +31 -0
- package/dist/entity/index.js.map +1 -0
- package/dist/entity/postgres-connector.d.ts +64 -0
- package/dist/entity/postgres-connector.js +239 -0
- package/dist/entity/postgres-connector.js.map +1 -0
- package/dist/entity/registry.d.ts +59 -0
- package/dist/entity/registry.js +90 -0
- package/dist/entity/registry.js.map +1 -0
- package/dist/entity/store.d.ts +66 -0
- package/dist/entity/store.js +349 -0
- package/dist/entity/store.js.map +1 -0
- package/dist/entity/types.d.ts +180 -0
- package/dist/entity/types.js +10 -0
- package/dist/entity/types.js.map +1 -0
- package/dist/execution-context.d.ts +88 -0
- package/dist/execution-context.js +146 -0
- package/dist/execution-context.js.map +1 -0
- package/dist/executor.d.ts +27 -0
- package/dist/executor.js +33 -0
- package/dist/executor.js.map +1 -0
- package/dist/forms/form-entity-bridge.d.ts +94 -0
- package/dist/forms/form-entity-bridge.js +96 -0
- package/dist/forms/form-entity-bridge.js.map +1 -0
- package/dist/forms/form-write-target.d.ts +34 -0
- package/dist/forms/form-write-target.js +81 -0
- package/dist/forms/form-write-target.js.map +1 -0
- package/dist/forms/index.d.ts +22 -0
- package/dist/forms/index.js +25 -0
- package/dist/forms/index.js.map +1 -0
- package/dist/forms/named-control-values.d.ts +27 -0
- package/dist/forms/named-control-values.js +42 -0
- package/dist/forms/named-control-values.js.map +1 -0
- package/dist/forms/processor.d.ts +55 -0
- package/dist/forms/processor.js +154 -0
- package/dist/forms/processor.js.map +1 -0
- package/dist/forms/types.d.ts +174 -0
- package/dist/forms/types.js +33 -0
- package/dist/forms/types.js.map +1 -0
- package/dist/forms/validator.d.ts +61 -0
- package/dist/forms/validator.js +218 -0
- package/dist/forms/validator.js.map +1 -0
- package/dist/graph/index.d.ts +10 -0
- package/dist/graph/index.js +9 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/resolver.d.ts +66 -0
- package/dist/graph/resolver.js +243 -0
- package/dist/graph/resolver.js.map +1 -0
- package/dist/graph/types.d.ts +125 -0
- package/dist/graph/types.js +9 -0
- package/dist/graph/types.js.map +1 -0
- package/dist/hooks/useInstalledAtoms.d.ts +96 -0
- package/dist/hooks/useInstalledAtoms.js +92 -0
- package/dist/hooks/useInstalledAtoms.js.map +1 -0
- package/dist/i18n/index.d.ts +15 -0
- package/dist/i18n/index.js +14 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/translator.d.ts +76 -0
- package/dist/i18n/translator.js +357 -0
- package/dist/i18n/translator.js.map +1 -0
- package/dist/i18n/types.d.ts +93 -0
- package/dist/i18n/types.js +9 -0
- package/dist/i18n/types.js.map +1 -0
- package/dist/index.d.ts +64 -0
- package/dist/index.js +95 -0
- package/dist/index.js.map +1 -0
- package/dist/kernel.d.ts +47 -0
- package/dist/kernel.js +258 -0
- package/dist/kernel.js.map +1 -0
- package/dist/perf/budget.d.ts +92 -0
- package/dist/perf/budget.js +122 -0
- package/dist/perf/budget.js.map +1 -0
- package/dist/perf/index.d.ts +16 -0
- package/dist/perf/index.js +13 -0
- package/dist/perf/index.js.map +1 -0
- package/dist/perf/render-timer.d.ts +90 -0
- package/dist/perf/render-timer.js +136 -0
- package/dist/perf/render-timer.js.map +1 -0
- package/dist/perf/reporter.d.ts +126 -0
- package/dist/perf/reporter.js +241 -0
- package/dist/perf/reporter.js.map +1 -0
- package/dist/perf/web-vitals.d.ts +111 -0
- package/dist/perf/web-vitals.js +268 -0
- package/dist/perf/web-vitals.js.map +1 -0
- package/dist/registry.d.ts +63 -0
- package/dist/registry.js +126 -0
- package/dist/registry.js.map +1 -0
- package/dist/render/BehaviorSurfaceProvider.d.ts +65 -0
- package/dist/render/BehaviorSurfaceProvider.js +185 -0
- package/dist/render/BehaviorSurfaceProvider.js.map +1 -0
- package/dist/render/BlockErrorBoundary.d.ts +26 -0
- package/dist/render/BlockErrorBoundary.js +41 -0
- package/dist/render/BlockErrorBoundary.js.map +1 -0
- package/dist/render/DataBoundSurfaceRenderer.d.ts +78 -0
- package/dist/render/DataBoundSurfaceRenderer.js +998 -0
- package/dist/render/DataBoundSurfaceRenderer.js.map +1 -0
- package/dist/render/DynamicBlockWrapper.d.ts +23 -0
- package/dist/render/DynamicBlockWrapper.js +117 -0
- package/dist/render/DynamicBlockWrapper.js.map +1 -0
- package/dist/render/appearance-resolver.d.ts +50 -0
- package/dist/render/appearance-resolver.js +78 -0
- package/dist/render/appearance-resolver.js.map +1 -0
- package/dist/render/capability-gate.d.ts +69 -0
- package/dist/render/capability-gate.js +94 -0
- package/dist/render/capability-gate.js.map +1 -0
- package/dist/render/conditional-states-css.d.ts +41 -0
- package/dist/render/conditional-states-css.js +82 -0
- package/dist/render/conditional-states-css.js.map +1 -0
- package/dist/render/connections-context.d.ts +31 -0
- package/dist/render/connections-context.js +34 -0
- package/dist/render/connections-context.js.map +1 -0
- package/dist/render/dark-theme-css.d.ts +36 -0
- package/dist/render/dark-theme-css.js +67 -0
- package/dist/render/dark-theme-css.js.map +1 -0
- package/dist/render/data-binding-types.d.ts +191 -0
- package/dist/render/data-binding-types.js +11 -0
- package/dist/render/data-binding-types.js.map +1 -0
- package/dist/render/data-cache.d.ts +30 -0
- package/dist/render/data-cache.js +37 -0
- package/dist/render/data-cache.js.map +1 -0
- package/dist/render/derive-dark-theme.d.ts +17 -0
- package/dist/render/derive-dark-theme.js +18 -0
- package/dist/render/derive-dark-theme.js.map +1 -0
- package/dist/render/dynamic-artifact-context.d.ts +77 -0
- package/dist/render/dynamic-artifact-context.js +89 -0
- package/dist/render/dynamic-artifact-context.js.map +1 -0
- package/dist/render/dynamic-block-loader.d.ts +80 -0
- package/dist/render/dynamic-block-loader.js +197 -0
- package/dist/render/dynamic-block-loader.js.map +1 -0
- package/dist/render/endpoint.d.ts +18 -0
- package/dist/render/endpoint.js +109 -0
- package/dist/render/endpoint.js.map +1 -0
- package/dist/render/entity-facade-context.d.ts +34 -0
- package/dist/render/entity-facade-context.js +37 -0
- package/dist/render/entity-facade-context.js.map +1 -0
- package/dist/render/group-states-css.d.ts +41 -0
- package/dist/render/group-states-css.js +73 -0
- package/dist/render/group-states-css.js.map +1 -0
- package/dist/render/hooks/useSurfaceEvents.d.ts +8 -0
- package/dist/render/hooks/useSurfaceEvents.js +9 -0
- package/dist/render/hooks/useSurfaceEvents.js.map +1 -0
- package/dist/render/hooks/useSurfaceId.d.ts +8 -0
- package/dist/render/hooks/useSurfaceId.js +9 -0
- package/dist/render/hooks/useSurfaceId.js.map +1 -0
- package/dist/render/index.d.ts +48 -0
- package/dist/render/index.js +61 -0
- package/dist/render/index.js.map +1 -0
- package/dist/render/interaction-rule-engine.d.ts +12 -0
- package/dist/render/interaction-rule-engine.js +47 -0
- package/dist/render/interaction-rule-engine.js.map +1 -0
- package/dist/render/keyframes-css.d.ts +31 -0
- package/dist/render/keyframes-css.js +44 -0
- package/dist/render/keyframes-css.js.map +1 -0
- package/dist/render/query-state.d.ts +3 -0
- package/dist/render/query-state.js +70 -0
- package/dist/render/query-state.js.map +1 -0
- package/dist/render/renderer.d.ts +44 -0
- package/dist/render/renderer.js +937 -0
- package/dist/render/renderer.js.map +1 -0
- package/dist/render/resolve-expressions.d.ts +37 -0
- package/dist/render/resolve-expressions.js +309 -0
- package/dist/render/resolve-expressions.js.map +1 -0
- package/dist/render/responsive-style-css.d.ts +42 -0
- package/dist/render/responsive-style-css.js +123 -0
- package/dist/render/responsive-style-css.js.map +1 -0
- package/dist/render/responsive.d.ts +49 -0
- package/dist/render/responsive.js +99 -0
- package/dist/render/responsive.js.map +1 -0
- package/dist/render/scoped-css.d.ts +71 -0
- package/dist/render/scoped-css.js +102 -0
- package/dist/render/scoped-css.js.map +1 -0
- package/dist/render/shell-selection.d.ts +69 -0
- package/dist/render/shell-selection.js +117 -0
- package/dist/render/shell-selection.js.map +1 -0
- package/dist/render/states-css.d.ts +32 -0
- package/dist/render/states-css.js +63 -0
- package/dist/render/states-css.js.map +1 -0
- package/dist/render/surface-data-context.d.ts +18 -0
- package/dist/render/surface-data-context.js +21 -0
- package/dist/render/surface-data-context.js.map +1 -0
- package/dist/render/surface-event-bus.d.ts +19 -0
- package/dist/render/surface-event-bus.js +68 -0
- package/dist/render/surface-event-bus.js.map +1 -0
- package/dist/render/surface-event-context.d.ts +11 -0
- package/dist/render/surface-event-context.js +12 -0
- package/dist/render/surface-event-context.js.map +1 -0
- package/dist/render/surface-id-context.d.ts +8 -0
- package/dist/render/surface-id-context.js +9 -0
- package/dist/render/surface-id-context.js.map +1 -0
- package/dist/render/theme-utils.d.ts +14 -0
- package/dist/render/theme-utils.js +15 -0
- package/dist/render/theme-utils.js.map +1 -0
- package/dist/render/types.d.ts +282 -0
- package/dist/render/types.js +9 -0
- package/dist/render/types.js.map +1 -0
- package/dist/render/visibility-css.d.ts +42 -0
- package/dist/render/visibility-css.js +119 -0
- package/dist/render/visibility-css.js.map +1 -0
- package/dist/render/width-scope.d.ts +34 -0
- package/dist/render/width-scope.js +44 -0
- package/dist/render/width-scope.js.map +1 -0
- package/dist/render/write-only-sources.d.ts +33 -0
- package/dist/render/write-only-sources.js +99 -0
- package/dist/render/write-only-sources.js.map +1 -0
- package/dist/routing/index.d.ts +14 -0
- package/dist/routing/index.js +15 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/routing/router.d.ts +42 -0
- package/dist/routing/router.js +218 -0
- package/dist/routing/router.js.map +1 -0
- package/dist/routing/types.d.ts +124 -0
- package/dist/routing/types.js +9 -0
- package/dist/routing/types.js.map +1 -0
- package/dist/seo/generator.d.ts +39 -0
- package/dist/seo/generator.js +236 -0
- package/dist/seo/generator.js.map +1 -0
- package/dist/seo/index.d.ts +14 -0
- package/dist/seo/index.js +15 -0
- package/dist/seo/index.js.map +1 -0
- package/dist/seo/types.d.ts +181 -0
- package/dist/seo/types.js +9 -0
- package/dist/seo/types.js.map +1 -0
- package/dist/state/index.d.ts +15 -0
- package/dist/state/index.js +16 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/manager.d.ts +33 -0
- package/dist/state/manager.js +81 -0
- package/dist/state/manager.js.map +1 -0
- package/dist/state/store.d.ts +40 -0
- package/dist/state/store.js +145 -0
- package/dist/state/store.js.map +1 -0
- package/dist/state/types.d.ts +107 -0
- package/dist/state/types.js +9 -0
- package/dist/state/types.js.map +1 -0
- package/dist/surface/expression.d.ts +65 -0
- package/dist/surface/expression.js +179 -0
- package/dist/surface/expression.js.map +1 -0
- package/dist/surface/index.d.ts +32 -0
- package/dist/surface/index.js +25 -0
- package/dist/surface/index.js.map +1 -0
- package/dist/surface/interpreter.d.ts +96 -0
- package/dist/surface/interpreter.js +231 -0
- package/dist/surface/interpreter.js.map +1 -0
- package/dist/surface/layout.d.ts +54 -0
- package/dist/surface/layout.js +288 -0
- package/dist/surface/layout.js.map +1 -0
- package/dist/surface/output.d.ts +90 -0
- package/dist/surface/output.js +104 -0
- package/dist/surface/output.js.map +1 -0
- package/dist/surface/primitives.d.ts +180 -0
- package/dist/surface/primitives.js +339 -0
- package/dist/surface/primitives.js.map +1 -0
- package/dist/surface/renderer.d.ts +96 -0
- package/dist/surface/renderer.js +190 -0
- package/dist/surface/renderer.js.map +1 -0
- package/dist/surface/schemas.d.ts +181 -0
- package/dist/surface/schemas.js +142 -0
- package/dist/surface/schemas.js.map +1 -0
- package/dist/surface/transforms.d.ts +144 -0
- package/dist/surface/transforms.js +120 -0
- package/dist/surface/transforms.js.map +1 -0
- package/dist/surface/types.d.ts +160 -0
- package/dist/surface/types.js +51 -0
- package/dist/surface/types.js.map +1 -0
- package/dist/surface/validation.d.ts +123 -0
- package/dist/surface/validation.js +147 -0
- package/dist/surface/validation.js.map +1 -0
- package/dist/validator.d.ts +55 -0
- package/dist/validator.js +100 -0
- package/dist/validator.js.map +1 -0
- package/package.json +106 -3
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Surface keyframe registry CSS generation (arbitrary `@keyframes`).
|
|
3
|
+
*
|
|
4
|
+
* The runtime ships a fixed set of `pw-*` keyframes in `SURFACE_BASE_CSS`
|
|
5
|
+
* (pulse / fade-in / marquee / slide-up / slide-down / scale-in / spin /
|
|
6
|
+
* bounce / spring-in), so `block.style.animation` could only reference those. A surface can
|
|
7
|
+
* now declare arbitrary named keyframes via `appearance.config.keyframes`
|
|
8
|
+
* (name → keyframe body); this module emits one `@keyframes <name>{<body>}` per
|
|
9
|
+
* entry so a block can drive custom motion offline.
|
|
10
|
+
*
|
|
11
|
+
* Each name is PREFIXED with `pw-kf-` to avoid colliding with host-page or
|
|
12
|
+
* runtime-shipped keyframes — so a surface declaring `{ wiggle: '…' }` makes the
|
|
13
|
+
* animation available as `pw-kf-wiggle`, and a block references it via
|
|
14
|
+
* `block.style.animation: 'pw-kf-wiggle 0.4s ease'`.
|
|
15
|
+
*
|
|
16
|
+
* The keyframe BODY passes through untouched (authors supply standard
|
|
17
|
+
* `@keyframes` selector blocks, e.g. `0%{…}50%{…}100%{…}`). An empty/absent
|
|
18
|
+
* registry emits zero bytes. The existing `prefers-reduced-motion` gate in
|
|
19
|
+
* `SURFACE_BASE_CSS` neutralises these animations for users who opt out (it
|
|
20
|
+
* matches by animation, not by keyframe name), so no extra gating is needed
|
|
21
|
+
* here.
|
|
22
|
+
*
|
|
23
|
+
* @module @pwfabric/runtime/render/keyframes-css
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* Build the surface keyframe CSS from the appearance `keyframes` registry
|
|
27
|
+
* (name → keyframe body). Emits `@keyframes pw-kf-<name>{<body>}` for each
|
|
28
|
+
* entry. Entries with an empty name or empty body are skipped. Returns '' when
|
|
29
|
+
* the registry is empty/undefined (zero bytes emitted).
|
|
30
|
+
*/
|
|
31
|
+
export declare function buildKeyframesCss(keyframes: Readonly<Record<string, string>> | undefined): string;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Surface keyframe registry CSS generation (arbitrary `@keyframes`).
|
|
3
|
+
*
|
|
4
|
+
* The runtime ships a fixed set of `pw-*` keyframes in `SURFACE_BASE_CSS`
|
|
5
|
+
* (pulse / fade-in / marquee / slide-up / slide-down / scale-in / spin /
|
|
6
|
+
* bounce / spring-in), so `block.style.animation` could only reference those. A surface can
|
|
7
|
+
* now declare arbitrary named keyframes via `appearance.config.keyframes`
|
|
8
|
+
* (name → keyframe body); this module emits one `@keyframes <name>{<body>}` per
|
|
9
|
+
* entry so a block can drive custom motion offline.
|
|
10
|
+
*
|
|
11
|
+
* Each name is PREFIXED with `pw-kf-` to avoid colliding with host-page or
|
|
12
|
+
* runtime-shipped keyframes — so a surface declaring `{ wiggle: '…' }` makes the
|
|
13
|
+
* animation available as `pw-kf-wiggle`, and a block references it via
|
|
14
|
+
* `block.style.animation: 'pw-kf-wiggle 0.4s ease'`.
|
|
15
|
+
*
|
|
16
|
+
* The keyframe BODY passes through untouched (authors supply standard
|
|
17
|
+
* `@keyframes` selector blocks, e.g. `0%{…}50%{…}100%{…}`). An empty/absent
|
|
18
|
+
* registry emits zero bytes. The existing `prefers-reduced-motion` gate in
|
|
19
|
+
* `SURFACE_BASE_CSS` neutralises these animations for users who opt out (it
|
|
20
|
+
* matches by animation, not by keyframe name), so no extra gating is needed
|
|
21
|
+
* here.
|
|
22
|
+
*
|
|
23
|
+
* @module @pwfabric/runtime/render/keyframes-css
|
|
24
|
+
*/
|
|
25
|
+
/** Prefix applied to every surface-declared keyframe name (collision guard). */
|
|
26
|
+
const KEYFRAME_PREFIX = 'pw-kf-';
|
|
27
|
+
/**
|
|
28
|
+
* Build the surface keyframe CSS from the appearance `keyframes` registry
|
|
29
|
+
* (name → keyframe body). Emits `@keyframes pw-kf-<name>{<body>}` for each
|
|
30
|
+
* entry. Entries with an empty name or empty body are skipped. Returns '' when
|
|
31
|
+
* the registry is empty/undefined (zero bytes emitted).
|
|
32
|
+
*/
|
|
33
|
+
export function buildKeyframesCss(keyframes) {
|
|
34
|
+
if (!keyframes)
|
|
35
|
+
return '';
|
|
36
|
+
let css = '';
|
|
37
|
+
for (const [name, body] of Object.entries(keyframes)) {
|
|
38
|
+
if (!name || typeof body !== 'string' || body.trim().length === 0)
|
|
39
|
+
continue;
|
|
40
|
+
css += `@keyframes ${KEYFRAME_PREFIX}${name}{${body}}`;
|
|
41
|
+
}
|
|
42
|
+
return css;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=keyframes-css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyframes-css.js","sourceRoot":"","sources":["../../src/render/keyframes-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,gFAAgF;AAChF,MAAM,eAAe,GAAG,QAAQ,CAAA;AAEhC;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,SAAuD;IAEvD,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAA;IACzB,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,SAAQ;QAC3E,GAAG,IAAI,cAAc,eAAe,GAAG,IAAI,IAAI,IAAI,GAAG,CAAA;IACxD,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC","sourcesContent":["/**\n * Surface keyframe registry CSS generation (arbitrary `@keyframes`).\n *\n * The runtime ships a fixed set of `pw-*` keyframes in `SURFACE_BASE_CSS`\n * (pulse / fade-in / marquee / slide-up / slide-down / scale-in / spin /\n * bounce / spring-in), so `block.style.animation` could only reference those. A surface can\n * now declare arbitrary named keyframes via `appearance.config.keyframes`\n * (name → keyframe body); this module emits one `@keyframes <name>{<body>}` per\n * entry so a block can drive custom motion offline.\n *\n * Each name is PREFIXED with `pw-kf-` to avoid colliding with host-page or\n * runtime-shipped keyframes — so a surface declaring `{ wiggle: '…' }` makes the\n * animation available as `pw-kf-wiggle`, and a block references it via\n * `block.style.animation: 'pw-kf-wiggle 0.4s ease'`.\n *\n * The keyframe BODY passes through untouched (authors supply standard\n * `@keyframes` selector blocks, e.g. `0%{…}50%{…}100%{…}`). An empty/absent\n * registry emits zero bytes. The existing `prefers-reduced-motion` gate in\n * `SURFACE_BASE_CSS` neutralises these animations for users who opt out (it\n * matches by animation, not by keyframe name), so no extra gating is needed\n * here.\n *\n * @module @pwfabric/runtime/render/keyframes-css\n */\n\n/** Prefix applied to every surface-declared keyframe name (collision guard). */\nconst KEYFRAME_PREFIX = 'pw-kf-'\n\n/**\n * Build the surface keyframe CSS from the appearance `keyframes` registry\n * (name → keyframe body). Emits `@keyframes pw-kf-<name>{<body>}` for each\n * entry. Entries with an empty name or empty body are skipped. Returns '' when\n * the registry is empty/undefined (zero bytes emitted).\n */\nexport function buildKeyframesCss(\n keyframes: Readonly<Record<string, string>> | undefined\n): string {\n if (!keyframes) return ''\n let css = ''\n for (const [name, body] of Object.entries(keyframes)) {\n if (!name || typeof body !== 'string' || body.trim().length === 0) continue\n css += `@keyframes ${KEYFRAME_PREFIX}${name}{${body}}`\n }\n return css\n}\n"]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* resolveQueryState — substitute `{{state.x}}` (and any expression) inside a
|
|
3
|
+
* data-source `query` object before it reaches the connector.
|
|
4
|
+
*
|
|
5
|
+
* Without it state would be interpolated ONLY in REST `endpoint` strings and
|
|
6
|
+
* connector/entity sources would pass `source.query` to the engine raw, so a
|
|
7
|
+
* pagination block writing `state.page` and a segmented-control writing
|
|
8
|
+
* `state.severity` could never reach `query.pagination.offset` or
|
|
9
|
+
* `query.filter.value`. This walks the query deeply and resolves every string
|
|
10
|
+
* that contains `{{ }}`.
|
|
11
|
+
*
|
|
12
|
+
* A string that is EXACTLY one expression (`"{{state.page}}"`) resolves to
|
|
13
|
+
* the raw value (number stays number, array stays array) so
|
|
14
|
+
* `pagination.limit: "{{state.pageSize}}"` yields a number, not "20".
|
|
15
|
+
* Mixed strings (`"prefix-{{state.x}}"`) resolve to a string.
|
|
16
|
+
*/
|
|
17
|
+
import { createExpressionContext, evaluate, interpolate } from '../surface/expression.js';
|
|
18
|
+
const WHOLE = /^\s*\{\{\s*([^{}]+?)\s*\}\}\s*$/;
|
|
19
|
+
export function resolveQueryState(query, state) {
|
|
20
|
+
const ctx = createExpressionContext({ state });
|
|
21
|
+
const walk = (v) => {
|
|
22
|
+
if (typeof v === 'string') {
|
|
23
|
+
if (!v.includes('{{'))
|
|
24
|
+
return v;
|
|
25
|
+
const whole = WHOLE.exec(v);
|
|
26
|
+
if (whole && whole[1] !== undefined) {
|
|
27
|
+
const r = evaluate(whole[1], ctx);
|
|
28
|
+
if (!r.success)
|
|
29
|
+
return undefined;
|
|
30
|
+
// An "All" segment and an empty search box both write '' (or null) into
|
|
31
|
+
// state. Read literally that is `field eq ''`, which matches no row —
|
|
32
|
+
// the control that was meant to WIDEN the list emptied it. A whole
|
|
33
|
+
// expression resolving to nothing is no constraint, so the key drops.
|
|
34
|
+
// A literal '' written into the query by an author is untouched: only
|
|
35
|
+
// an expression can resolve away.
|
|
36
|
+
if (r.value === '' || r.value === null)
|
|
37
|
+
return undefined;
|
|
38
|
+
return r.value;
|
|
39
|
+
}
|
|
40
|
+
const r = interpolate(v, ctx);
|
|
41
|
+
return r.success ? r.value : v;
|
|
42
|
+
}
|
|
43
|
+
if (Array.isArray(v))
|
|
44
|
+
return v.map(walk);
|
|
45
|
+
if (v && typeof v === 'object') {
|
|
46
|
+
const out = {};
|
|
47
|
+
for (const [k, val] of Object.entries(v)) {
|
|
48
|
+
const w = walk(val);
|
|
49
|
+
// an unresolved whole-expression drops the key so the connector sees
|
|
50
|
+
// "no constraint", not `undefined` as a literal filter value
|
|
51
|
+
if (w !== undefined)
|
|
52
|
+
out[k] = w;
|
|
53
|
+
}
|
|
54
|
+
return out;
|
|
55
|
+
}
|
|
56
|
+
return v;
|
|
57
|
+
};
|
|
58
|
+
return walk(query);
|
|
59
|
+
}
|
|
60
|
+
/** True when any string inside the query carries an expression. */
|
|
61
|
+
export function queryHasState(query) {
|
|
62
|
+
if (typeof query === 'string')
|
|
63
|
+
return query.includes('{{');
|
|
64
|
+
if (Array.isArray(query))
|
|
65
|
+
return query.some(queryHasState);
|
|
66
|
+
if (query && typeof query === 'object')
|
|
67
|
+
return Object.values(query).some(queryHasState);
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=query-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-state.js","sourceRoot":"","sources":["../../src/render/query-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAEzF,MAAM,KAAK,GAAG,iCAAiC,CAAA;AAE/C,MAAM,UAAU,iBAAiB,CAAI,KAAQ,EAAE,KAAwC;IACrF,MAAM,GAAG,GAAG,uBAAuB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IAC9C,MAAM,IAAI,GAAG,CAAC,CAAU,EAAW,EAAE;QACnC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO,CAAC,CAAA;YAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC3B,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;gBACpC,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;gBACjC,IAAI,CAAC,CAAC,CAAC,OAAO;oBAAE,OAAO,SAAS,CAAA;gBAChC,wEAAwE;gBACxE,sEAAsE;gBACtE,mEAAmE;gBACnE,sEAAsE;gBACtE,sEAAsE;gBACtE,kCAAkC;gBAClC,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI;oBAAE,OAAO,SAAS,CAAA;gBACxD,OAAO,CAAC,CAAC,KAAK,CAAA;YAChB,CAAC;YACD,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAChC,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACxC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,GAAG,GAA4B,EAAE,CAAA;YACvC,KAAK,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAA4B,CAAC,EAAE,CAAC;gBACpE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;gBACnB,qEAAqE;gBACrE,6DAA6D;gBAC7D,IAAI,CAAC,KAAK,SAAS;oBAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YACjC,CAAC;YACD,OAAO,GAAG,CAAA;QACZ,CAAC;QACD,OAAO,CAAC,CAAA;IACV,CAAC,CAAA;IACD,OAAO,IAAI,CAAC,KAAK,CAAM,CAAA;AACzB,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAC1D,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAgC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAClH,OAAO,KAAK,CAAA;AACd,CAAC","sourcesContent":["/**\n * resolveQueryState — substitute `{{state.x}}` (and any expression) inside a\n * data-source `query` object before it reaches the connector.\n *\n * Without it state would be interpolated ONLY in REST `endpoint` strings and\n * connector/entity sources would pass `source.query` to the engine raw, so a\n * pagination block writing `state.page` and a segmented-control writing\n * `state.severity` could never reach `query.pagination.offset` or\n * `query.filter.value`. This walks the query deeply and resolves every string\n * that contains `{{ }}`.\n *\n * A string that is EXACTLY one expression (`\"{{state.page}}\"`) resolves to\n * the raw value (number stays number, array stays array) so\n * `pagination.limit: \"{{state.pageSize}}\"` yields a number, not \"20\".\n * Mixed strings (`\"prefix-{{state.x}}\"`) resolve to a string.\n */\nimport { createExpressionContext, evaluate, interpolate } from '../surface/expression.js'\n\nconst WHOLE = /^\\s*\\{\\{\\s*([^{}]+?)\\s*\\}\\}\\s*$/\n\nexport function resolveQueryState<T>(query: T, state: Readonly<Record<string, unknown>>): T {\n const ctx = createExpressionContext({ state })\n const walk = (v: unknown): unknown => {\n if (typeof v === 'string') {\n if (!v.includes('{{')) return v\n const whole = WHOLE.exec(v)\n if (whole && whole[1] !== undefined) {\n const r = evaluate(whole[1], ctx)\n if (!r.success) return undefined\n // An \"All\" segment and an empty search box both write '' (or null) into\n // state. Read literally that is `field eq ''`, which matches no row —\n // the control that was meant to WIDEN the list emptied it. A whole\n // expression resolving to nothing is no constraint, so the key drops.\n // A literal '' written into the query by an author is untouched: only\n // an expression can resolve away.\n if (r.value === '' || r.value === null) return undefined\n return r.value\n }\n const r = interpolate(v, ctx)\n return r.success ? r.value : v\n }\n if (Array.isArray(v)) return v.map(walk)\n if (v && typeof v === 'object') {\n const out: Record<string, unknown> = {}\n for (const [k, val] of Object.entries(v as Record<string, unknown>)) {\n const w = walk(val)\n // an unresolved whole-expression drops the key so the connector sees\n // \"no constraint\", not `undefined` as a literal filter value\n if (w !== undefined) out[k] = w\n }\n return out\n }\n return v\n }\n return walk(query) as T\n}\n\n/** True when any string inside the query carries an expression. */\nexport function queryHasState(query: unknown): boolean {\n if (typeof query === 'string') return query.includes('{{')\n if (Array.isArray(query)) return query.some(queryHasState)\n if (query && typeof query === 'object') return Object.values(query as Record<string, unknown>).some(queryHasState)\n return false\n}\n"]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Surface Renderer
|
|
3
|
+
*
|
|
4
|
+
* Phase 2A.1: Main Surface-to-React rendering component
|
|
5
|
+
*
|
|
6
|
+
* @module @pwfabric/runtime/render/renderer
|
|
7
|
+
*/
|
|
8
|
+
import * as React from 'react';
|
|
9
|
+
import type { Block } from '@pwfabric/core';
|
|
10
|
+
import type { SurfaceRendererProps, BlockComponentRegistry, CapabilityProvider, ImageAdapter } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* SurfaceRenderer component
|
|
13
|
+
*
|
|
14
|
+
* Renders a surface definition to React components. surface
|
|
15
|
+
* definitions come from the pack-derived registry (the host's installed
|
|
16
|
+
* blocks and receipts) rather than hardcoded starter exports.
|
|
17
|
+
*/
|
|
18
|
+
export declare function SurfaceRenderer({ surface, capabilities, theme, projectTheme, projectDarkTheme, basePath, onEvent, components: customComponents, className, viewport: viewportProp, gap, padding, imageAdapter, entityFacade, connections, renderBlockWrapper, interactionMode, }: SurfaceRendererProps): React.ReactElement;
|
|
19
|
+
/**
|
|
20
|
+
* Standalone block renderer
|
|
21
|
+
*
|
|
22
|
+
* Renders a single block without a surface wrapper.
|
|
23
|
+
*/
|
|
24
|
+
export declare function BlockRenderer({ block, capabilities, theme: _theme, basePath, onEvent, components: customComponents, imageAdapter, }: {
|
|
25
|
+
block: Block;
|
|
26
|
+
capabilities?: CapabilityProvider[];
|
|
27
|
+
theme?: 'light' | 'dark';
|
|
28
|
+
basePath?: string;
|
|
29
|
+
onEvent?: SurfaceRendererProps['onEvent'];
|
|
30
|
+
components?: Partial<BlockComponentRegistry>;
|
|
31
|
+
imageAdapter?: ImageAdapter;
|
|
32
|
+
}): React.ReactElement;
|
|
33
|
+
/**
|
|
34
|
+
* Get all block IDs from a surface
|
|
35
|
+
*/
|
|
36
|
+
export declare function getBlockIds(blocks: readonly Block[]): string[];
|
|
37
|
+
/**
|
|
38
|
+
* Find a block by ID in a surface
|
|
39
|
+
*/
|
|
40
|
+
export declare function findBlockById(blocks: readonly Block[], id: string): Block | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* Update a block by ID in a surface
|
|
43
|
+
*/
|
|
44
|
+
export declare function updateBlockById(blocks: readonly Block[], id: string, updates: Partial<Block>): Block[];
|