@ccslabs/xtend 0.1.0-rc.1 → 0.1.2
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/CHANGELOG.md +2 -0
- package/README.md +4 -0
- package/catalog/component-catalog-coverage.js +2 -0
- package/catalog/epic13-package-export-lock.js +11 -1
- package/catalog/epic13-rmt-production-readiness.js +0 -1
- package/catalog/epic18-rmt-action-effect-runtime.d.ts +36 -0
- package/catalog/epic18-rmt-action-effect-runtime.js +249 -0
- package/catalog/epic18-rmt-app-platform-authoring.d.ts +39 -0
- package/catalog/epic18-rmt-app-platform-authoring.js +319 -0
- package/catalog/epic18-rmt-app-platform-fixture.d.ts +33 -0
- package/catalog/epic18-rmt-app-platform-fixture.js +221 -0
- package/catalog/epic18-rmt-app-platform-release-handoff.d.ts +30 -0
- package/catalog/epic18-rmt-app-platform-release-handoff.js +231 -0
- package/catalog/epic18-rmt-app-platform-tooling.d.ts +38 -0
- package/catalog/epic18-rmt-app-platform-tooling.js +242 -0
- package/catalog/epic18-rmt-component-template-primitives.d.ts +33 -0
- package/catalog/epic18-rmt-component-template-primitives.js +240 -0
- package/catalog/epic18-rmt-dom-descriptor-renderer.d.ts +35 -0
- package/catalog/epic18-rmt-dom-descriptor-renderer.js +232 -0
- package/catalog/epic18-rmt-event-routing-runtime.d.ts +35 -0
- package/catalog/epic18-rmt-event-routing-runtime.js +234 -0
- package/catalog/epic18-rmt-state-selector-runtime.d.ts +34 -0
- package/catalog/epic18-rmt-state-selector-runtime.js +216 -0
- package/catalog/epic18-rmt-surface-resource-graph-runtime.d.ts +36 -0
- package/catalog/epic18-rmt-surface-resource-graph-runtime.js +256 -0
- package/catalog/surface-manager-controller.js +5 -1
- package/catalog/surface-manager-materialization.js +7 -1
- package/catalog/surface-manager-overlay-bridge.js +41 -6
- package/catalog/surface-manager-workbench-fixture.js +1 -1
- package/catalog/surface-type-capability-matrix.d.ts +61 -0
- package/catalog/surface-type-capability-matrix.js +183 -0
- package/catalog/type-exports-rmt.js +37 -1
- package/catalog/type-exports.js +3 -3
- package/components/icon-packs/lucide.js +4 -0
- package/components/manifest.json +2 -0
- package/components/prism-rmt.d.ts +34 -0
- package/components/prism-rmt.js +130 -0
- package/components/xcards.js +15 -0
- package/components/xcode.d.ts +36 -1
- package/components/xcode.js +215 -20
- package/components/xfooter.js +17 -0
- package/components/xheader.js +14 -0
- package/components/xhero.js +16 -1
- package/components/xlink.js +97 -14
- package/components/xmasonry.js +15 -0
- package/components/xplayer.d.ts +44 -2
- package/components/xplayer.js +242 -15
- package/components/xrouter.js +27 -2
- package/components/xsection.js +15 -0
- package/components/xsidepanel.js +10 -2
- package/components/xsurfacemanager-controller.d.ts +2 -1
- package/components/xsurfacemanager-controller.js +27 -3
- package/components/xsurfacemanager.d.ts +2 -0
- package/components/xsurfacemanager.js +20 -8
- package/components/xsurfaceoverlay-bridge.d.ts +20 -5
- package/components/xsurfaceoverlay-bridge.js +114 -18
- package/components/xsurfaceportal.d.ts +29 -0
- package/components/xsurfaceportal.js +122 -0
- package/components/xsurfaceregion.d.ts +50 -0
- package/components/xsurfaceregion.js +285 -0
- package/components/xsurfacewindow.js +2 -1
- package/components/xtooltip.js +89 -23
- package/docs/README.md +222 -298
- package/docs/changelog.md +107 -0
- package/docs/component-catalog-coverage.md +9 -9
- package/docs/component-platform.md +19 -1
- package/docs/component-ux-app-authoring.md +56 -63
- package/docs/components/xcode.md +83 -53
- package/docs/components/xsurfaceportal.md +32 -0
- package/docs/components/xsurfaceregion.md +37 -0
- package/docs/components.md +105 -69
- package/docs/de/README.md +264 -0
- package/docs/de/XTend-ADR.md +221 -0
- package/docs/de/a11y-keyboard-smokes.md +62 -0
- package/docs/de/about.md +18 -0
- package/docs/de/api.md +157 -0
- package/docs/de/best-practices.md +76 -0
- package/docs/de/changelog.md +107 -0
- package/docs/de/component-catalog-coverage.md +58 -0
- package/docs/de/component-lab.md +103 -0
- package/docs/de/component-long-tail-migration.md +41 -0
- package/docs/de/component-platform.md +177 -0
- package/docs/de/component-ux-app-authoring.md +123 -0
- package/docs/de/component-ux-authoring.md +96 -0
- package/docs/de/component-ux-gates.md +45 -0
- package/docs/de/components/x-rmt-lifecycle-demo-build.md +60 -0
- package/docs/de/components/xalert.md +81 -0
- package/docs/de/components/xbutton.md +103 -0
- package/docs/de/components/xcalendar.md +82 -0
- package/docs/de/components/xcards.md +128 -0
- package/docs/de/components/xcheckbox.md +102 -0
- package/docs/de/components/xcode.md +156 -0
- package/docs/de/components/xdialog.md +92 -0
- package/docs/de/components/xdrawer.md +84 -0
- package/docs/de/components/xfooter.md +126 -0
- package/docs/de/components/xform.md +128 -0
- package/docs/de/components/xheader.md +308 -0
- package/docs/de/components/xhero.md +142 -0
- package/docs/de/components/xicon.md +125 -0
- package/docs/de/components/xinput.md +129 -0
- package/docs/de/components/xlightbox.md +98 -0
- package/docs/de/components/xlink.md +109 -0
- package/docs/de/components/xmasonry.md +124 -0
- package/docs/de/components/xmenu.md +158 -0
- package/docs/de/components/xmodal.md +82 -0
- package/docs/de/components/xplayer.md +104 -0
- package/docs/de/components/xpopover.md +67 -0
- package/docs/de/components/xprogress.md +56 -0
- package/docs/de/components/xradio.md +103 -0
- package/docs/de/components/xrouter.md +260 -0
- package/docs/de/components/xsection.md +125 -0
- package/docs/de/components/xselect.md +105 -0
- package/docs/de/components/xsidepanel.md +30 -0
- package/docs/de/components/xspinner.md +102 -0
- package/docs/de/components/xstate.md +148 -0
- package/docs/de/components/xstatus.md +55 -0
- package/docs/de/components/xsummary.md +78 -0
- package/docs/de/components/xsurfacemanager.md +27 -0
- package/docs/de/components/xsurfacewindow.md +21 -0
- package/docs/de/components/xtabs.md +160 -0
- package/docs/de/components/xtextarea.md +98 -0
- package/docs/de/components/xtheme.md +167 -0
- package/docs/de/components/xtoast.md +62 -0
- package/docs/de/components/xtooltip.md +66 -0
- package/docs/de/components/xtype.md +82 -0
- package/docs/de/components/xutils.md +144 -0
- package/docs/de/components/xwriter.md +94 -0
- package/docs/de/components.md +153 -0
- package/docs/de/conditional-network-evidence-ci.md +38 -0
- package/docs/de/conditional-network-evidence.md +50 -0
- package/docs/de/core-migration-guide.md +110 -0
- package/docs/de/design-tokens.md +116 -0
- package/docs/de/docs-rmt-production-hardening.md +31 -0
- package/docs/de/enterprise-adoption.md +413 -0
- package/docs/de/enterprise-component-flex-release-handoff.md +129 -0
- package/docs/de/epic10-platform-gates.md +62 -0
- package/docs/de/epic10-release-handoff.md +81 -0
- package/docs/de/epic11-enterprise-ux-handoff.md +70 -0
- package/docs/de/epic12-rc0-handoff.md +61 -0
- package/docs/de/epic18-media-manager-vendor-upstream.md +318 -0
- package/docs/de/epic18-rmt-app-platform-release-handoff.md +67 -0
- package/docs/de/epic18-vendor-bugfixes.md +34 -0
- package/docs/de/existing-component-metadata.md +67 -0
- package/docs/de/hydration-performance-closure.md +34 -0
- package/docs/de/hydration-policies.md +71 -0
- package/docs/de/known-residual-triage.md +22 -0
- package/docs/de/manifest-import-policy.md +79 -0
- package/docs/de/manifest.md +112 -0
- package/docs/de/motion-contrast.md +67 -0
- package/docs/de/package-export-lock.md +44 -0
- package/docs/de/performance-measurements.md +106 -0
- package/docs/de/performance-regression.md +89 -0
- package/docs/de/performance.md +94 -0
- package/docs/de/previews/README.md +17 -0
- package/docs/de/prod-browser-csp-smokes.md +40 -0
- package/docs/de/public-component-types.md +79 -0
- package/docs/de/quick-start-guide.md +220 -0
- package/docs/de/rc0-adoption-guide.md +102 -0
- package/docs/de/rc0-gate-matrix.md +58 -0
- package/docs/de/rc1-gate-matrix-ci-handoff.md +56 -0
- package/docs/de/rc1-migration-notes.md +69 -0
- package/docs/de/rc1-readiness.md +46 -0
- package/docs/de/release-owner-acceptance.md +56 -0
- package/docs/de/release-report-pack-dry-run-evidence.md +39 -0
- package/docs/de/rmt-action-effect-runtime.md +81 -0
- package/docs/de/rmt-app-platform-authoring.md +54 -0
- package/docs/de/rmt-app-platform-fixture.md +46 -0
- package/docs/de/rmt-app-platform-migration-guide.md +88 -0
- package/docs/de/rmt-app-platform-tooling.md +79 -0
- package/docs/de/rmt-component-template-primitives.md +57 -0
- package/docs/de/rmt-dom-descriptor-renderer.md +64 -0
- package/docs/de/rmt-dsl-authoring-polish.md +145 -0
- package/docs/de/rmt-event-routing-runtime.md +81 -0
- package/docs/de/rmt-first-demo-app.md +77 -0
- package/docs/de/rmt-first-xtend-apps.md +129 -0
- package/docs/de/rmt-kernel-panic-recovery-incident-handoff.md +61 -0
- package/docs/de/rmt-kernel-security-hardening-migration.md +50 -0
- package/docs/de/rmt-kernel-trusted-output-authoring.md +69 -0
- package/docs/de/rmt-language-server.md +234 -0
- package/docs/de/rmt-lifecycle-demo.md +24 -0
- package/docs/de/rmt-linter.md +140 -0
- package/docs/de/rmt-node-ssr-adapter.md +100 -0
- package/docs/de/rmt-php-ssr-adapter.md +120 -0
- package/docs/de/rmt-production-readiness.md +63 -0
- package/docs/de/rmt-state-selector-runtime.md +47 -0
- package/docs/de/rmt-surface-resource-graph-runtime.md +92 -0
- package/docs/de/rmt-tooling-release-gates.md +77 -0
- package/docs/de/rmt-vnext-authoring.md +170 -0
- package/docs/de/rmt-vnext-component-primitives.md +188 -0
- package/docs/de/rmt-vnext-cross-surface-events.md +68 -0
- package/docs/de/rmt-vnext-enterprise-mfe-handoff.md +70 -0
- package/docs/de/rmt-vnext-fabric-bridge-evidence.md +81 -0
- package/docs/de/rmt-vnext-migration-notes.md +62 -0
- package/docs/de/rmt-vnext-primitive-authoring-tooling.md +247 -0
- package/docs/de/rmt-vnext-primitive-grammar-design.md +289 -0
- package/docs/de/rmt-vnext-primitive-lowering.md +108 -0
- package/docs/de/rmt-vnext-primitive-migration.md +119 -0
- package/docs/de/rmt-vnext-primitive-parser-ast.md +76 -0
- package/docs/de/rmt-vnext-primitive-semantic-graph.md +118 -0
- package/docs/de/rmt-vnext-primitives-compiler-backlog.md +739 -0
- package/docs/de/rmt-vnext-release-handoff.md +83 -0
- package/docs/de/rmt-vnext-remote-surfaces.md +90 -0
- package/docs/de/rmt-vnext-source-to-sea-gate.md +612 -0
- package/docs/de/rmt-vnext-surface-registry-enterprise.md +76 -0
- package/docs/de/screenreader-signals.md +56 -0
- package/docs/de/supply-chain-gates.md +100 -0
- package/docs/de/surface-manager-authoring-guide.md +94 -0
- package/docs/de/surface-manager-browser-lab.md +45 -0
- package/docs/de/surface-manager-component-lab.md +43 -0
- package/docs/de/surface-manager-controller.md +66 -0
- package/docs/de/surface-manager-layout-engines.md +32 -0
- package/docs/de/surface-manager-lazy-hydration.md +63 -0
- package/docs/de/surface-manager-migration-guide.md +122 -0
- package/docs/de/surface-manager-native-rmt-surfaces.md +38 -0
- package/docs/de/surface-manager-overlay-bridge.md +53 -0
- package/docs/de/surface-manager-persistence.md +30 -0
- package/docs/de/surface-manager-quality-gates.md +51 -0
- package/docs/de/surface-manager-release-handoff.md +68 -0
- package/docs/de/surface-manager-remote-policy.md +54 -0
- package/docs/de/surface-manager-rmt-authoring.md +102 -0
- package/docs/de/surface-manager-route-lifecycle.md +59 -0
- package/docs/de/surface-manager-runtime-release-handoff.md +69 -0
- package/docs/de/surface-manager-side-panel-runtime.md +36 -0
- package/docs/de/surface-manager-stack-policy.md +39 -0
- package/docs/de/surface-manager-window-runtime.md +47 -0
- package/docs/de/surface-manager-workbench-fixture.md +43 -0
- package/docs/de/third-party-design-authoring.md +406 -0
- package/docs/de/trusted-dom-boundary-browser-proof.md +32 -0
- package/docs/de/trusted-dom-sanitizing.md +110 -0
- package/docs/de/type-exports.md +61 -0
- package/docs/de/typescript-components.md +63 -0
- package/docs/de/visual-browser-regression.md +83 -0
- package/docs/de/visual-owner-artifacts.md +46 -0
- package/docs/de/visual-snapshot-automation.md +87 -0
- package/docs/de/xtend-api-types.md +55 -0
- package/docs/de/xtend-builder-types.md +55 -0
- package/docs/de/xtend-catalog-types.md +44 -0
- package/docs/de/xtend-fabric-rmt-lane-mapping.md +143 -0
- package/docs/de/xtend-fabric.md +474 -0
- package/docs/de/xtend-loader-types.md +58 -0
- package/docs/de/xtend-loader.md +265 -0
- package/docs/de/xtend-policy-types.md +38 -0
- package/docs/de/xtend-rmt-types.md +40 -0
- package/docs/de/xtend-vendor-types.md +36 -0
- package/docs/de/xtendrmt-app-dsl.md +334 -0
- package/docs/de/xtendrmt-migration-guide.md +266 -0
- package/docs/de/xtendrmt-native-authoring.md +333 -0
- package/docs/de/xtendrmt-overview.md +109 -0
- package/docs/de/xtendrmt-parsedown-scheduling.md +301 -0
- package/docs/de/xtendrmt-runtime-bridge.md +155 -0
- package/docs/en/README.md +163 -0
- package/docs/en/XTend-ADR.md +221 -0
- package/docs/en/a11y-keyboard-smokes.md +68 -0
- package/docs/en/about.md +25 -0
- package/docs/en/api.md +171 -0
- package/docs/en/best-practices.md +125 -0
- package/docs/en/changelog.md +104 -0
- package/docs/en/component-catalog-coverage.md +104 -0
- package/docs/en/component-lab.md +103 -0
- package/docs/en/component-long-tail-migration.md +41 -0
- package/docs/en/component-platform.md +243 -0
- package/docs/en/component-ux-app-authoring.md +118 -0
- package/docs/en/component-ux-authoring.md +96 -0
- package/docs/en/component-ux-gates.md +45 -0
- package/docs/en/components/x-rmt-lifecycle-demo-build.md +75 -0
- package/docs/en/components/xalert.md +94 -0
- package/docs/en/components/xbutton.md +118 -0
- package/docs/en/components/xcalendar.md +95 -0
- package/docs/en/components/xcards.md +139 -0
- package/docs/en/components/xcheckbox.md +118 -0
- package/docs/en/components/xcode.md +153 -0
- package/docs/en/components/xdialog.md +108 -0
- package/docs/en/components/xdrawer.md +110 -0
- package/docs/en/components/xfooter.md +138 -0
- package/docs/en/components/xform.md +147 -0
- package/docs/en/components/xheader.md +308 -0
- package/docs/en/components/xhero.md +157 -0
- package/docs/en/components/xicon.md +149 -0
- package/docs/en/components/xinput.md +147 -0
- package/docs/en/components/xlightbox.md +113 -0
- package/docs/en/components/xlink.md +130 -0
- package/docs/en/components/xmasonry.md +136 -0
- package/docs/en/components/xmenu.md +185 -0
- package/docs/en/components/xmodal.md +102 -0
- package/docs/en/components/xplayer.md +114 -0
- package/docs/en/components/xpopover.md +87 -0
- package/docs/en/components/xprogress.md +73 -0
- package/docs/en/components/xradio.md +119 -0
- package/docs/en/components/xrouter.md +260 -0
- package/docs/en/components/xsection.md +136 -0
- package/docs/en/components/xselect.md +122 -0
- package/docs/en/components/xsidepanel.md +48 -0
- package/docs/en/components/xspinner.md +118 -0
- package/docs/en/components/xstate.md +163 -0
- package/docs/en/components/xstatus.md +71 -0
- package/docs/en/components/xsummary.md +90 -0
- package/docs/en/components/xsurfacemanager.md +42 -0
- package/docs/en/components/xsurfacewindow.md +31 -0
- package/docs/en/components/xtabs.md +187 -0
- package/docs/en/components/xtextarea.md +115 -0
- package/docs/en/components/xtheme.md +203 -0
- package/docs/en/components/xtoast.md +78 -0
- package/docs/en/components/xtooltip.md +85 -0
- package/docs/en/components/xtype.md +91 -0
- package/docs/en/components/xutils.md +161 -0
- package/docs/en/components/xwriter.md +106 -0
- package/docs/en/components.md +151 -0
- package/docs/en/conditional-network-evidence-ci.md +38 -0
- package/docs/en/conditional-network-evidence.md +50 -0
- package/docs/en/core-migration-guide.md +110 -0
- package/docs/en/design-tokens.md +137 -0
- package/docs/en/docs-rmt-production-hardening.md +31 -0
- package/docs/en/enterprise-adoption.md +413 -0
- package/docs/en/enterprise-component-flex-release-handoff.md +129 -0
- package/docs/en/epic10-platform-gates.md +62 -0
- package/docs/en/epic10-release-handoff.md +81 -0
- package/docs/en/epic11-enterprise-ux-handoff.md +70 -0
- package/docs/en/epic12-rc0-handoff.md +61 -0
- package/docs/en/epic18-media-manager-vendor-upstream.md +232 -0
- package/docs/en/epic18-rmt-app-platform-release-handoff.md +60 -0
- package/docs/en/epic18-vendor-bugfixes.md +29 -0
- package/docs/en/existing-component-metadata.md +67 -0
- package/docs/en/hydration-performance-closure.md +34 -0
- package/docs/en/hydration-policies.md +75 -0
- package/docs/en/known-residual-triage.md +22 -0
- package/docs/en/manifest-import-policy.md +81 -0
- package/docs/en/manifest.md +135 -0
- package/docs/en/motion-contrast.md +67 -0
- package/docs/en/package-export-lock.md +44 -0
- package/docs/en/performance-measurements.md +106 -0
- package/docs/en/performance-regression.md +89 -0
- package/docs/en/performance.md +132 -0
- package/docs/en/previews/README.md +17 -0
- package/docs/en/prod-browser-csp-smokes.md +40 -0
- package/docs/en/public-component-types.md +79 -0
- package/docs/en/quick-start-guide.md +189 -0
- package/docs/en/rc0-adoption-guide.md +102 -0
- package/docs/en/rc0-gate-matrix.md +58 -0
- package/docs/en/rc1-gate-matrix-ci-handoff.md +56 -0
- package/docs/en/rc1-migration-notes.md +69 -0
- package/docs/en/rc1-readiness.md +46 -0
- package/docs/en/release-owner-acceptance.md +56 -0
- package/docs/en/release-report-pack-dry-run-evidence.md +39 -0
- package/docs/en/rmt-action-effect-runtime.md +101 -0
- package/docs/en/rmt-app-platform-authoring.md +47 -0
- package/docs/en/rmt-app-platform-fixture.md +35 -0
- package/docs/en/rmt-app-platform-migration-guide.md +75 -0
- package/docs/en/rmt-app-platform-tooling.md +58 -0
- package/docs/en/rmt-component-template-primitives.md +49 -0
- package/docs/en/rmt-dom-descriptor-renderer.md +54 -0
- package/docs/en/rmt-dsl-authoring-polish.md +143 -0
- package/docs/en/rmt-event-routing-runtime.md +98 -0
- package/docs/en/rmt-first-demo-app.md +87 -0
- package/docs/en/rmt-first-xtend-apps.md +127 -0
- package/docs/en/rmt-kernel-panic-recovery-incident-handoff.md +60 -0
- package/docs/en/rmt-kernel-security-hardening-migration.md +49 -0
- package/docs/en/rmt-kernel-trusted-output-authoring.md +68 -0
- package/docs/en/rmt-language-server.md +243 -0
- package/docs/en/rmt-lifecycle-demo.md +23 -0
- package/docs/en/rmt-linter.md +146 -0
- package/docs/en/rmt-node-ssr-adapter.md +99 -0
- package/docs/en/rmt-php-ssr-adapter.md +118 -0
- package/docs/en/rmt-production-readiness.md +63 -0
- package/docs/en/rmt-state-selector-runtime.md +34 -0
- package/docs/en/rmt-surface-resource-graph-runtime.md +68 -0
- package/docs/en/rmt-tooling-release-gates.md +77 -0
- package/docs/en/rmt-vnext-authoring.md +102 -0
- package/docs/en/rmt-vnext-component-primitives.md +185 -0
- package/docs/en/rmt-vnext-cross-surface-events.md +59 -0
- package/docs/en/rmt-vnext-enterprise-mfe-handoff.md +62 -0
- package/docs/en/rmt-vnext-fabric-bridge-evidence.md +64 -0
- package/docs/en/rmt-vnext-migration-notes.md +62 -0
- package/docs/en/rmt-vnext-primitive-authoring-tooling.md +174 -0
- package/docs/en/rmt-vnext-primitive-grammar-design.md +268 -0
- package/docs/en/rmt-vnext-primitive-lowering.md +91 -0
- package/docs/en/rmt-vnext-primitive-migration.md +93 -0
- package/docs/en/rmt-vnext-primitive-parser-ast.md +59 -0
- package/docs/en/rmt-vnext-primitive-semantic-graph.md +103 -0
- package/docs/en/rmt-vnext-primitives-compiler-backlog.md +327 -0
- package/docs/en/rmt-vnext-release-handoff.md +83 -0
- package/docs/en/rmt-vnext-remote-surfaces.md +81 -0
- package/docs/en/rmt-vnext-source-to-sea-gate.md +482 -0
- package/docs/en/rmt-vnext-surface-registry-enterprise.md +68 -0
- package/docs/en/screenreader-signals.md +56 -0
- package/docs/en/supply-chain-gates.md +106 -0
- package/docs/en/surface-manager-authoring-guide.md +94 -0
- package/docs/en/surface-manager-browser-lab.md +45 -0
- package/docs/en/surface-manager-component-lab.md +43 -0
- package/docs/en/surface-manager-controller.md +66 -0
- package/docs/en/surface-manager-layout-engines.md +32 -0
- package/docs/en/surface-manager-lazy-hydration.md +63 -0
- package/docs/en/surface-manager-migration-guide.md +113 -0
- package/docs/en/surface-manager-native-rmt-surfaces.md +38 -0
- package/docs/en/surface-manager-overlay-bridge.md +53 -0
- package/docs/en/surface-manager-persistence.md +30 -0
- package/docs/en/surface-manager-quality-gates.md +51 -0
- package/docs/en/surface-manager-release-handoff.md +68 -0
- package/docs/en/surface-manager-remote-policy.md +54 -0
- package/docs/en/surface-manager-rmt-authoring.md +89 -0
- package/docs/en/surface-manager-route-lifecycle.md +59 -0
- package/docs/en/surface-manager-runtime-release-handoff.md +69 -0
- package/docs/en/surface-manager-side-panel-runtime.md +36 -0
- package/docs/en/surface-manager-stack-policy.md +39 -0
- package/docs/en/surface-manager-window-runtime.md +47 -0
- package/docs/en/surface-manager-workbench-fixture.md +43 -0
- package/docs/en/third-party-design-authoring.md +406 -0
- package/docs/en/trusted-dom-boundary-browser-proof.md +32 -0
- package/docs/en/trusted-dom-sanitizing.md +124 -0
- package/docs/en/type-exports.md +61 -0
- package/docs/en/typescript-components.md +63 -0
- package/docs/en/visual-browser-regression.md +83 -0
- package/docs/en/visual-owner-artifacts.md +46 -0
- package/docs/en/visual-snapshot-automation.md +87 -0
- package/docs/en/xtend-api-types.md +55 -0
- package/docs/en/xtend-builder-types.md +55 -0
- package/docs/en/xtend-catalog-types.md +44 -0
- package/docs/en/xtend-fabric-rmt-lane-mapping.md +143 -0
- package/docs/en/xtend-fabric.md +474 -0
- package/docs/en/xtend-loader-types.md +58 -0
- package/docs/en/xtend-loader.md +265 -0
- package/docs/en/xtend-policy-types.md +38 -0
- package/docs/en/xtend-rmt-types.md +40 -0
- package/docs/en/xtend-vendor-types.md +36 -0
- package/docs/en/xtendrmt-app-dsl.md +331 -0
- package/docs/en/xtendrmt-migration-guide.md +256 -0
- package/docs/en/xtendrmt-native-authoring.md +336 -0
- package/docs/en/xtendrmt-overview.md +63 -0
- package/docs/en/xtendrmt-parsedown-scheduling.md +301 -0
- package/docs/en/xtendrmt-runtime-bridge.md +155 -0
- package/docs/enterprise-adoption.md +4 -2
- package/docs/epic18-media-manager-vendor-upstream.md +318 -0
- package/docs/epic18-rmt-app-platform-release-handoff.md +67 -0
- package/docs/epic18-vendor-bugfixes.md +34 -0
- package/docs/index.php +1056 -109
- package/docs/manifest.md +8 -2
- package/docs/menu.json +986 -133
- package/docs/package-export-lock.md +2 -2
- package/docs/public-component-types.md +2 -2
- package/docs/quick-start-guide.md +126 -58
- package/docs/rmt-action-effect-runtime.md +101 -0
- package/docs/rmt-app-platform-authoring.md +54 -0
- package/docs/rmt-app-platform-fixture.md +46 -0
- package/docs/rmt-app-platform-migration-guide.md +88 -0
- package/docs/rmt-app-platform-tooling.md +79 -0
- package/docs/rmt-component-template-primitives.md +57 -0
- package/docs/rmt-dom-descriptor-renderer.md +64 -0
- package/docs/rmt-dsl-authoring-polish.md +67 -44
- package/docs/rmt-event-routing-runtime.md +98 -0
- package/docs/rmt-first-demo-app.md +2 -2
- package/docs/rmt-first-xtend-apps.md +70 -46
- package/docs/rmt-language-server.md +61 -4
- package/docs/rmt-lifecycle-demo.md +1 -2
- package/docs/rmt-node-ssr-adapter.md +144 -0
- package/docs/rmt-php-ssr-adapter.md +158 -0
- package/docs/rmt-state-selector-runtime.md +47 -0
- package/docs/rmt-surface-resource-graph-runtime.md +92 -0
- package/docs/rmt-vnext-authoring.md +128 -18
- package/docs/rmt-vnext-component-primitives.md +188 -0
- package/docs/rmt-vnext-fabric-bridge-evidence.md +81 -0
- package/docs/rmt-vnext-primitive-authoring-tooling.md +247 -0
- package/docs/rmt-vnext-primitive-grammar-design.md +289 -0
- package/docs/rmt-vnext-primitive-lowering.md +108 -0
- package/docs/rmt-vnext-primitive-migration.md +119 -0
- package/docs/rmt-vnext-primitive-parser-ast.md +76 -0
- package/docs/rmt-vnext-primitive-semantic-graph.md +118 -0
- package/docs/rmt-vnext-primitives-compiler-backlog.md +742 -0
- package/docs/rmt-vnext-release-handoff.md +14 -0
- package/docs/rmt-vnext-source-to-sea-gate.md +629 -0
- package/docs/surface-manager-migration-guide.md +34 -6
- package/docs/surface-manager-overlay-bridge.md +9 -4
- package/docs/surface-manager-rmt-authoring.md +50 -34
- package/docs/surface-manager-workbench-fixture.md +1 -2
- package/docs/third-party-design-authoring.md +1 -1
- package/docs/type-exports.md +3 -3
- package/docs/utils/pageloader.js +811 -62
- package/docs/visual-browser-regression.md +1 -1
- package/docs/xtend-rmt-types.md +3 -2
- package/docs/xtendrmt-app-dsl.md +187 -122
- package/docs/xtendrmt-docs-shell-vnext.rmt +165 -0
- package/docs/xtendrmt-migration-guide.md +48 -17
- package/docs/xtendrmt-native-authoring.md +213 -217
- package/docs/xtendrmt-overview.md +81 -61
- package/docs/xtendrmt-parsedown-scheduling.md +23 -8
- package/fabric/package.json +1 -1
- package/package.json +684 -21
- package/tools/package.json +5 -1
- package/tools/rmt-editor/vscode/README.md +72 -5
- package/tools/rmt-editor/vscode/XTend-Logo.png +0 -0
- package/tools/rmt-editor/vscode/extension.d.ts +33 -0
- package/tools/rmt-editor/vscode/extension.js +1816 -7
- package/tools/rmt-editor/vscode/language-configuration.json +2 -1
- package/tools/rmt-editor/vscode/package.json +193 -2
- package/tools/rmt-editor/vscode/snippets/rmt.code-snippets +41 -0
- package/tools/rmt-editor/vscode/syntaxes/rmt.tmLanguage.json +103 -1
- package/tools/rmt-editor/vscode/templates/launch.json +70 -0
- package/tools/rmt-editor/vscode/templates/tasks.json +172 -0
- package/tools/rmt-editor/vscode/xtend-rmt-language-0.0.0-enterprise-readiness.vsix +0 -0
- package/tools/rmt-language/app-platform-tooling.d.ts +128 -0
- package/tools/rmt-language/app-platform-tooling.js +677 -0
- package/tools/rmt-language/completions.d.ts +5 -0
- package/tools/rmt-language/completions.js +185 -3
- package/tools/rmt-language/diagnostics.js +54 -0
- package/tools/rmt-language/hover.js +36 -0
- package/tools/rmt-language/rmt-tooling-public-types.d.ts +7 -0
- package/tools/rmt-language/rules/app-platform-policy.js +39 -0
- package/tools/rmt-language/rules/index.js +5 -1
- package/tools/rmt-language/semantic-graph.d.ts +6 -0
- package/tools/rmt-language/semantic-graph.js +928 -0
- package/tools/rmt-language/snippets/index.js +44 -0
- package/tools/rmt-language/snippets/rmt.code-snippets +41 -0
- package/tools/rmt-language/vnext-compatibility.d.ts +10 -0
- package/tools/rmt-language/vnext-compatibility.js +642 -0
- package/tools/rmt-language/vnext-compiler.d.ts +5 -0
- package/tools/rmt-language/vnext-compiler.js +863 -17
- package/tools/rmt-language/vnext-parser.js +725 -9
- package/tools/rmt-language/vnext-release.d.ts +1 -0
- package/tools/rmt-language/vnext-release.js +20 -0
- package/tools/rmt-language/vnext-source-to-sea.d.ts +33 -0
- package/tools/rmt-language/vnext-source-to-sea.js +2227 -0
- package/tools/rmt-language/vnext-surfaces.js +111 -52
- package/tools/rmt-language/vnext-tooling.d.ts +19 -1
- package/tools/rmt-language/vnext-tooling.js +1247 -5
- package/tools/rmt-language-server/protocol.js +3 -0
- package/tools/rmt-language-server/server.d.ts +2 -0
- package/tools/rmt-language-server/server.js +176 -22
- package/tools/rmt-linter/cli.d.ts +2 -0
- package/tools/rmt-linter/cli.js +62 -0
- package/xtend-builder/generators/registry.js +11 -0
- package/xtend-builder/generators/rmt-app-platform.js +239 -0
- package/xtend-builder/generators/rmt-lifecycle-demo.js +3 -11
- package/xtend-builder/lib/cli.js +38 -0
- package/xtend-builder/package.json +3 -3
- package/xtend-builder/scaffold.config.js +29 -2
- package/xtend.css +49 -2
- package/xtendrmt/package.json +49 -1
- package/xtendrmt/rmt-action-effect-runtime.d.ts +126 -0
- package/xtendrmt/rmt-action-effect-runtime.js +494 -0
- package/xtendrmt/rmt-component-capability-registry.d.ts +180 -0
- package/xtendrmt/rmt-component-capability-registry.js +636 -0
- package/xtendrmt/rmt-core.d.ts +6 -0
- package/xtendrmt/rmt-core.esm.js +32 -6
- package/xtendrmt/rmt-dom-descriptor-renderer.d.ts +107 -0
- package/xtendrmt/rmt-dom-descriptor-renderer.js +1066 -0
- package/xtendrmt/rmt-event-routing-runtime.d.ts +144 -0
- package/xtendrmt/rmt-event-routing-runtime.js +666 -0
- package/xtendrmt/rmt-lifecycle-demo.app.js +2 -2
- package/xtendrmt/rmt-lifecycle-demo.core.json +4 -0
- package/xtendrmt/rmt-lifecycle-demo.rmt-build.app.js +1 -1
- package/xtendrmt/rmt-lifecycle-demo.rmt-build.scaffold.json +2 -2
- package/xtendrmt/rmt-lifecycle-demo.scaffold.json +4 -4
- package/xtendrmt/rmt-native-shell-runtime.d.ts +77 -0
- package/xtendrmt/rmt-native-shell-runtime.js +309 -0
- package/xtendrmt/rmt-node-ssr-adapter.d.ts +197 -0
- package/xtendrmt/rmt-node-ssr-adapter.js +1006 -0
- package/xtendrmt/rmt-php-ssr-adapter.php +976 -0
- package/xtendrmt/rmt-runtime.browser.js +32 -6
- package/xtendrmt/rmt-runtime.esm.js +32 -6
- package/xtendrmt/rmt-state-selector-runtime.d.ts +166 -0
- package/xtendrmt/rmt-state-selector-runtime.js +866 -0
- package/xtendrmt/rmt-surface-resource-graph-runtime.d.ts +224 -0
- package/xtendrmt/rmt-surface-resource-graph-runtime.js +932 -0
- package/xtendrmt/rmt-vnext-enterprise-mfe-demo.core.json +3 -0
- package/xtendrmt/rmt-vnext-reference-demo.core.json +3 -0
- package/xtendrmt/xtendrmt-bestcase-demo.core.json +3420 -372
- package/xtendrmt/xtendrmt-bestcase-demo.js +424 -8
- package/xtendrmt/xtendrmt-bestcase-demo.rmt +214 -6
|
@@ -6,6 +6,9 @@ import {
|
|
|
6
6
|
createRmtXRouterAdapter,
|
|
7
7
|
createRmtXtendComponentAdapter
|
|
8
8
|
} from './rmt-runtime.esm.js';
|
|
9
|
+
import {
|
|
10
|
+
createRmtComponentCapabilityRegistry
|
|
11
|
+
} from './rmt-component-capability-registry.js';
|
|
9
12
|
|
|
10
13
|
const DEMO_DOCUMENT_URL = './xtendrmt/xtendrmt-bestcase-demo.rmt';
|
|
11
14
|
const DEMO_CORE_DOCUMENT_URL = './xtendrmt/xtendrmt-bestcase-demo.core.json';
|
|
@@ -14,6 +17,8 @@ const ROUTE_COMPONENTS = Object.freeze({
|
|
|
14
17
|
scheduler: 'x-rmt-route-scheduler',
|
|
15
18
|
routing: 'x-rmt-route-routing',
|
|
16
19
|
templating: 'x-rmt-route-template-pilot',
|
|
20
|
+
primitives: 'x-rmt-route-primitives',
|
|
21
|
+
media: 'x-rmt-route-media',
|
|
17
22
|
adapter: 'x-rmt-route-adapter'
|
|
18
23
|
});
|
|
19
24
|
|
|
@@ -22,6 +27,8 @@ const XTEND_COMPONENT_MANIFEST = Object.freeze({
|
|
|
22
27
|
'x-rmt-route-scheduler': 'xtendrmt-bestcase-demo.js#x-rmt-route-scheduler',
|
|
23
28
|
'x-rmt-route-routing': 'xtendrmt-bestcase-demo.js#x-rmt-route-routing',
|
|
24
29
|
'x-rmt-route-template-pilot': 'xtendrmt-bestcase-demo.js#x-rmt-route-template-pilot',
|
|
30
|
+
'x-rmt-route-primitives': 'xtendrmt-bestcase-demo.js#x-rmt-route-primitives',
|
|
31
|
+
'x-rmt-route-media': 'xtendrmt-bestcase-demo.js#x-rmt-route-media',
|
|
25
32
|
'x-rmt-route-adapter': 'xtendrmt-bestcase-demo.js#x-rmt-route-adapter',
|
|
26
33
|
'x-header': '../components/xheader.js',
|
|
27
34
|
'x-section': '../components/xsection.js',
|
|
@@ -32,13 +39,18 @@ const XTEND_COMPONENT_MANIFEST = Object.freeze({
|
|
|
32
39
|
'x-button': '../components/xbutton.js',
|
|
33
40
|
'x-alert': '../components/xalert.js',
|
|
34
41
|
'x-code': '../components/xcode.js',
|
|
42
|
+
'x-player': '../components/xplayer.js',
|
|
43
|
+
'x-popover': '../components/xpopover.js',
|
|
44
|
+
'x-progress': '../components/xprogress.js',
|
|
45
|
+
'x-status': '../components/xstatus.js',
|
|
46
|
+
'x-toast': '../components/xtoast.js',
|
|
35
47
|
'x-modal': '../components/xmodal.js',
|
|
36
48
|
'x-router': '../components/xrouter.js',
|
|
37
49
|
'x-route': '../components/xrouter.js',
|
|
38
50
|
'x-footer': '../components/xfooter.js'
|
|
39
51
|
});
|
|
40
52
|
|
|
41
|
-
const DEMO_ROUTE_ORDER = Object.freeze(['kernel', 'scheduler', 'routing', 'templating', 'adapter']);
|
|
53
|
+
const DEMO_ROUTE_ORDER = Object.freeze(['kernel', 'scheduler', 'routing', 'templating', 'primitives', 'media', 'adapter']);
|
|
42
54
|
const DEMO_ROUTE_CONFIG = Object.freeze({
|
|
43
55
|
kernel: Object.freeze({
|
|
44
56
|
path: '/',
|
|
@@ -80,6 +92,26 @@ const DEMO_ROUTE_CONFIG = Object.freeze({
|
|
|
80
92
|
metaDescription: 'Pilot-Flow fuer RMT-vNext-basiertes XTend-Templating mit Component Attachment.'
|
|
81
93
|
})
|
|
82
94
|
}),
|
|
95
|
+
primitives: Object.freeze({
|
|
96
|
+
path: '/primitives',
|
|
97
|
+
title: 'RMT Component Primitives',
|
|
98
|
+
component: ROUTE_COMPONENTS.primitives,
|
|
99
|
+
template: 'demo.primitives',
|
|
100
|
+
schedule: 'component.primitive.matrix',
|
|
101
|
+
metadata: Object.freeze({
|
|
102
|
+
metaDescription: 'Component Capability Registry, Manifest-Matrix, keyed DOM Descriptor und RMT Primitive Coverage.'
|
|
103
|
+
})
|
|
104
|
+
}),
|
|
105
|
+
media: Object.freeze({
|
|
106
|
+
path: '/media',
|
|
107
|
+
title: 'RMT Player and Media Contract',
|
|
108
|
+
component: ROUTE_COMPONENTS.media,
|
|
109
|
+
template: 'demo.media',
|
|
110
|
+
schedule: 'media.visible.contract',
|
|
111
|
+
metadata: Object.freeze({
|
|
112
|
+
metaDescription: 'x-player Contract, State Bridge, Parts, Theme Tokens und Resource Ownership fuer RMT.'
|
|
113
|
+
})
|
|
114
|
+
}),
|
|
83
115
|
adapter: Object.freeze({
|
|
84
116
|
path: '/adapter',
|
|
85
117
|
title: 'XTend Product Adapter',
|
|
@@ -126,6 +158,8 @@ const DEMO_ADAPTERS = Object.freeze([
|
|
|
126
158
|
'slots',
|
|
127
159
|
'events',
|
|
128
160
|
'hydration',
|
|
161
|
+
'componentCapabilityRegistry',
|
|
162
|
+
'lazyComponentImport',
|
|
129
163
|
'diagnostics',
|
|
130
164
|
'scheduleRefs'
|
|
131
165
|
]),
|
|
@@ -182,7 +216,11 @@ const DEMO_STATIC_COMPONENTS = Object.freeze([
|
|
|
182
216
|
Object.freeze({ id: 'kernel.cards', tag: 'x-cards', schedule: 'component.visible.mount' }),
|
|
183
217
|
Object.freeze({ id: 'code.snapshot', tag: 'x-code', schedule: 'component.idle.hydrate' }),
|
|
184
218
|
Object.freeze({ id: 'feedback.status', tag: 'x-alert', schedule: 'component.visible.mount' }),
|
|
185
|
-
Object.freeze({ id: 'pilot.shell', tag: 'x-section', schedule: 'component.visible.mount' })
|
|
219
|
+
Object.freeze({ id: 'pilot.shell', tag: 'x-section', schedule: 'component.visible.mount' }),
|
|
220
|
+
Object.freeze({ id: 'primitive.matrix', tag: 'x-status', schedule: 'component.primitive.matrix' }),
|
|
221
|
+
Object.freeze({ id: 'primitive.progress', tag: 'x-progress', schedule: 'component.primitive.matrix' }),
|
|
222
|
+
Object.freeze({ id: 'media.player', tag: 'x-player', schedule: 'media.visible.contract' }),
|
|
223
|
+
Object.freeze({ id: 'media.toast', tag: 'x-toast', schedule: 'diagnostics.snapshot' })
|
|
186
224
|
]);
|
|
187
225
|
|
|
188
226
|
const DEMO_SCHEDULES = Object.freeze([
|
|
@@ -230,6 +268,28 @@ const DEMO_SCHEDULES = Object.freeze([
|
|
|
230
268
|
coalesceKey: 'component.hydrate',
|
|
231
269
|
budgetClass: 'background'
|
|
232
270
|
}),
|
|
271
|
+
Object.freeze({
|
|
272
|
+
id: 'component.primitive.matrix',
|
|
273
|
+
endpointName: 'xtendrmt.component-capability.matrix',
|
|
274
|
+
scope: 'xtendrmt.component.capabilities',
|
|
275
|
+
lane: 'visible',
|
|
276
|
+
priority: 92,
|
|
277
|
+
preferIdle: false,
|
|
278
|
+
deadlineMs: 180,
|
|
279
|
+
coalesceKey: 'component.capability.matrix',
|
|
280
|
+
budgetClass: 'interactive'
|
|
281
|
+
}),
|
|
282
|
+
Object.freeze({
|
|
283
|
+
id: 'media.visible.contract',
|
|
284
|
+
endpointName: 'xtendrmt.player.contract',
|
|
285
|
+
scope: 'xtendrmt.media.player',
|
|
286
|
+
lane: 'visible',
|
|
287
|
+
priority: 84,
|
|
288
|
+
preferIdle: false,
|
|
289
|
+
deadlineMs: 180,
|
|
290
|
+
coalesceKey: 'media.player.contract',
|
|
291
|
+
budgetClass: 'media-interactive'
|
|
292
|
+
}),
|
|
233
293
|
Object.freeze({
|
|
234
294
|
id: 'diagnostics.snapshot',
|
|
235
295
|
endpointName: 'xtendrmt.diagnostics.snapshot',
|
|
@@ -259,8 +319,14 @@ const state = {
|
|
|
259
319
|
routes: [],
|
|
260
320
|
schedules: [],
|
|
261
321
|
pilotFlow: null,
|
|
262
|
-
nativeDemoMigration: null
|
|
322
|
+
nativeDemoMigration: null,
|
|
323
|
+
componentPrimitives: null,
|
|
324
|
+
playerContract: null,
|
|
325
|
+
surfaceResourceLifecycle: null
|
|
263
326
|
},
|
|
327
|
+
componentCapabilityRegistry: null,
|
|
328
|
+
componentCapabilityMatrix: null,
|
|
329
|
+
playerSnapshot: null,
|
|
264
330
|
runtime: null,
|
|
265
331
|
stateBridge: null,
|
|
266
332
|
adapters: {
|
|
@@ -381,6 +447,40 @@ function createDemoMetadata(vnextCore = {}) {
|
|
|
381
447
|
},
|
|
382
448
|
kernelVisible: false
|
|
383
449
|
},
|
|
450
|
+
componentPrimitives: {
|
|
451
|
+
schema: 'xtend.rmt.component-capability-registry.v1',
|
|
452
|
+
status: 'runtime-projection-active',
|
|
453
|
+
registry: './rmt-component-capability-registry.js',
|
|
454
|
+
manifest: './components/manifest.json',
|
|
455
|
+
coverageTarget: 'all-public-xtend-components',
|
|
456
|
+
publicManifestCount: 44,
|
|
457
|
+
publicUiCount: 40,
|
|
458
|
+
nonVisualCount: 4,
|
|
459
|
+
families: ['form', 'navigation', 'overlay-surface', 'media-feedback-layout', 'theme-layout'],
|
|
460
|
+
rendererMode: 'generic-dom-descriptor-with-keyed-reuse',
|
|
461
|
+
importPolicy: 'explicit-importer-only',
|
|
462
|
+
kernelBoundary: 'no-rmt-kernel-import-of-xtend-types',
|
|
463
|
+
noShadowRootPatching: true,
|
|
464
|
+
noHtmlSinkForRmtAppUi: true
|
|
465
|
+
},
|
|
466
|
+
playerContract: {
|
|
467
|
+
schema: 'xtend.mm-rmt.player-contract.v1',
|
|
468
|
+
tag: 'x-player',
|
|
469
|
+
commands: ['play-media', 'pause-media', 'set-source', 'set-state', 'apply-theme'],
|
|
470
|
+
events: ['xplayer-play', 'xplayer-pause', 'xplayer-state'],
|
|
471
|
+
stateBridge: 'xstate-host-bridge',
|
|
472
|
+
themeTokens: ['--x-player-primary', '--x-player-accent', '--x-player-background', '--x-player-radius'],
|
|
473
|
+
parts: ['root', 'media', 'title', 'overlay', 'controls', 'progress'],
|
|
474
|
+
kernelBoundary: 'no-product-shadowRoot-patching'
|
|
475
|
+
},
|
|
476
|
+
surfaceResourceLifecycle: {
|
|
477
|
+
schema: 'xtend.rmt.surface-resource-lifecycle.v1',
|
|
478
|
+
portals: ['bestcase.surface.root', 'bestcase.overlay.root'],
|
|
479
|
+
overlays: ['bestcase.toast'],
|
|
480
|
+
resources: ['bestcase.capabilityRegistry', 'bestcase.playerObjectUrl', 'bestcase.runtimeSubscription'],
|
|
481
|
+
cleanupPolicy: 'close-and-dispose-on-owner-destroy',
|
|
482
|
+
sourceToSeaCoverage: true
|
|
483
|
+
},
|
|
384
484
|
scaffoldCompatibility: {
|
|
385
485
|
schema: 'xtend.scaffold.rmt-compatibility-binding.v1',
|
|
386
486
|
status: 'demo-reference-only',
|
|
@@ -425,12 +525,14 @@ function createDemoMetadata(vnextCore = {}) {
|
|
|
425
525
|
sourceSyntax: 'rmt-vnext',
|
|
426
526
|
routesSource: 'vnext.surfaces',
|
|
427
527
|
componentsSource: 'vnext.operations',
|
|
528
|
+
primitivesSource: 'vnext.states-selectors-actions-portals-resources',
|
|
428
529
|
adaptersSource: 'runtimeProjection.adapters',
|
|
429
530
|
schedulesSource: 'vnext.lanes',
|
|
430
531
|
productiveAdapters: [
|
|
431
532
|
'createRmtXRouterAdapter',
|
|
432
533
|
'createRmtXtendComponentAdapter',
|
|
433
|
-
'createRmtStateSchedulerDiagnosticsBridge'
|
|
534
|
+
'createRmtStateSchedulerDiagnosticsBridge',
|
|
535
|
+
'createRmtComponentCapabilityRegistry'
|
|
434
536
|
],
|
|
435
537
|
kernelVisible: false
|
|
436
538
|
}
|
|
@@ -560,6 +662,50 @@ function createRuntimeTemplates() {
|
|
|
560
662
|
}
|
|
561
663
|
}
|
|
562
664
|
},
|
|
665
|
+
{
|
|
666
|
+
id: 'demo.primitives',
|
|
667
|
+
mode: 'dom_descriptor',
|
|
668
|
+
markup: '<x-section layout="column" label="RMT Component Primitives"></x-section>',
|
|
669
|
+
metadata: {
|
|
670
|
+
route: 'primitives',
|
|
671
|
+
adapter: 'xtend.component',
|
|
672
|
+
authoring: createTemplateAuthoring('demo.primitives', ['primitive.matrix', 'primitive.progress'], {
|
|
673
|
+
componentCapabilityRegistry: 'xtend.rmt.component-capability-registry.v1',
|
|
674
|
+
rendererMode: 'generic-dom-descriptor-with-keyed-reuse',
|
|
675
|
+
importPolicy: 'explicit-importer-only'
|
|
676
|
+
})
|
|
677
|
+
},
|
|
678
|
+
hydration: {
|
|
679
|
+
mode: 'runtime_render',
|
|
680
|
+
ownershipMode: 'managed_subtree',
|
|
681
|
+
preferInsularHydration: true,
|
|
682
|
+
metadata: {
|
|
683
|
+
endpointHint: 'xtendrmt.component-capability.matrix'
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
},
|
|
687
|
+
{
|
|
688
|
+
id: 'demo.media',
|
|
689
|
+
mode: 'dom_descriptor',
|
|
690
|
+
markup: '<x-section layout="column" label="RMT Player Contract"></x-section>',
|
|
691
|
+
metadata: {
|
|
692
|
+
route: 'media',
|
|
693
|
+
adapter: 'xtend.component',
|
|
694
|
+
authoring: createTemplateAuthoring('demo.media', ['media.player', 'media.toast'], {
|
|
695
|
+
playerContract: 'xtend.mm-rmt.player-contract.v1',
|
|
696
|
+
componentRef: 'x-player',
|
|
697
|
+
resourceOwnership: 'object-url-disposed-on-surface-destroy'
|
|
698
|
+
})
|
|
699
|
+
},
|
|
700
|
+
hydration: {
|
|
701
|
+
mode: 'runtime_render',
|
|
702
|
+
ownershipMode: 'managed_subtree',
|
|
703
|
+
preferInsularHydration: true,
|
|
704
|
+
metadata: {
|
|
705
|
+
endpointHint: 'xtendrmt.player.contract'
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
},
|
|
563
709
|
{
|
|
564
710
|
id: 'demo.adapter',
|
|
565
711
|
mode: 'html_fragment',
|
|
@@ -643,7 +789,7 @@ function createComponentsFromVNextCore(vnextCore = {}) {
|
|
|
643
789
|
adapter: 'xtend.component',
|
|
644
790
|
kind: 'custom_element',
|
|
645
791
|
tag: id,
|
|
646
|
-
schedule: routeId === 'adapter' ? 'component.idle.hydrate' : 'component.visible.mount',
|
|
792
|
+
schedule: config.schedule || (routeId === 'adapter' ? 'component.idle.hydrate' : 'component.visible.mount'),
|
|
647
793
|
metadata: {
|
|
648
794
|
routeComponent: true,
|
|
649
795
|
template: config.template,
|
|
@@ -765,6 +911,92 @@ function getRmtFormat() {
|
|
|
765
911
|
return state.rmtFormat;
|
|
766
912
|
}
|
|
767
913
|
|
|
914
|
+
async function loadComponentCapabilityMatrix() {
|
|
915
|
+
if (state.componentCapabilityMatrix) {
|
|
916
|
+
return state.componentCapabilityMatrix;
|
|
917
|
+
}
|
|
918
|
+
|
|
919
|
+
try {
|
|
920
|
+
const manifestResponse = await fetch('./components/manifest.json', { cache: 'no-store' });
|
|
921
|
+
if (!manifestResponse.ok) {
|
|
922
|
+
throw new Error(`component manifest failed to load: ${manifestResponse.status}`);
|
|
923
|
+
}
|
|
924
|
+
const manifest = await manifestResponse.json();
|
|
925
|
+
const entries = Object.entries(manifest);
|
|
926
|
+
const sourcePairs = await Promise.all(entries.map(async ([tag, modulePath]) => {
|
|
927
|
+
const componentPath = `./components/${String(modulePath).replace(/^\.\//u, '')}`;
|
|
928
|
+
try {
|
|
929
|
+
const response = await fetch(componentPath, { cache: 'no-store' });
|
|
930
|
+
return [tag, response.ok ? await response.text() : ''];
|
|
931
|
+
} catch (_error) {
|
|
932
|
+
return [tag, ''];
|
|
933
|
+
}
|
|
934
|
+
}));
|
|
935
|
+
const sourceTexts = Object.fromEntries(sourcePairs);
|
|
936
|
+
const registry = createRmtComponentCapabilityRegistry({
|
|
937
|
+
manifest,
|
|
938
|
+
sourceTexts,
|
|
939
|
+
customElements
|
|
940
|
+
});
|
|
941
|
+
state.componentCapabilityRegistry = registry;
|
|
942
|
+
state.componentCapabilityMatrix = registry.createMatrixReport();
|
|
943
|
+
} catch (error) {
|
|
944
|
+
state.componentCapabilityMatrix = {
|
|
945
|
+
schema: 'xtend.rmt.component-capability-registry-report.v1',
|
|
946
|
+
ok: false,
|
|
947
|
+
status: 'failed',
|
|
948
|
+
reason: error && error.message ? error.message : String(error),
|
|
949
|
+
manifestCount: 0,
|
|
950
|
+
publicComponentCount: 0,
|
|
951
|
+
diagnostics: []
|
|
952
|
+
};
|
|
953
|
+
}
|
|
954
|
+
|
|
955
|
+
return state.componentCapabilityMatrix;
|
|
956
|
+
}
|
|
957
|
+
|
|
958
|
+
function readComponentCapabilitySnapshot() {
|
|
959
|
+
const matrix = state.componentCapabilityMatrix || {};
|
|
960
|
+
return {
|
|
961
|
+
schema: matrix.schema || 'xtend.rmt.component-capability-registry-report.v1',
|
|
962
|
+
status: matrix.status || (matrix.ok ? 'passed' : 'pending'),
|
|
963
|
+
ok: matrix.ok === true,
|
|
964
|
+
manifestCount: matrix.manifestCount || 0,
|
|
965
|
+
publicComponentCount: matrix.publicComponentCount || 0,
|
|
966
|
+
nonVisualCount: matrix.nonVisualCount || 0,
|
|
967
|
+
withRmtMetadata: matrix.withRmtMetadata || 0,
|
|
968
|
+
withComponentContract: matrix.withComponentContract || 0,
|
|
969
|
+
browserSmokeFamilies: matrix.browserSmokeFamilies || [],
|
|
970
|
+
familyCounts: matrix.familyCounts || {},
|
|
971
|
+
sourceToSeaRisk: 'browser-smoke-representative',
|
|
972
|
+
kernelBoundary: matrix.kernelBoundary || 'no-rmt-kernel-import-of-xtend-types',
|
|
973
|
+
diagnostics: Array.isArray(matrix.diagnostics) ? matrix.diagnostics.slice(0, 5) : []
|
|
974
|
+
};
|
|
975
|
+
}
|
|
976
|
+
|
|
977
|
+
function readPlayerContractSnapshot() {
|
|
978
|
+
const playerClass = customElements.get('x-player');
|
|
979
|
+
const contract = playerClass && playerClass.xtendRmtPlayerContract
|
|
980
|
+
? cloneSerializable(playerClass.xtendRmtPlayerContract, {})
|
|
981
|
+
: {
|
|
982
|
+
schema: 'xtend.mm-rmt.player-contract.v1',
|
|
983
|
+
tag: 'x-player',
|
|
984
|
+
commands: ['play-media', 'pause-media', 'set-source', 'set-state', 'apply-theme'],
|
|
985
|
+
events: ['xplayer-play', 'xplayer-pause', 'xplayer-state'],
|
|
986
|
+
stateBridge: 'xstate-host-bridge'
|
|
987
|
+
};
|
|
988
|
+
return {
|
|
989
|
+
...contract,
|
|
990
|
+
state: state.playerSnapshot || {
|
|
991
|
+
mediaId: 'intro',
|
|
992
|
+
status: 'paused',
|
|
993
|
+
title: 'XTendRMT Runtime Walkthrough'
|
|
994
|
+
},
|
|
995
|
+
resourceOwnership: 'object-url-disposed-on-surface-destroy',
|
|
996
|
+
kernelBoundary: contract.kernelBoundary || 'no-product-shadowRoot-patching'
|
|
997
|
+
};
|
|
998
|
+
}
|
|
999
|
+
|
|
768
1000
|
function recordAdapterResult(result, options = {}) {
|
|
769
1001
|
if (!result || typeof result !== 'object') return null;
|
|
770
1002
|
state.adapterResults.push(result);
|
|
@@ -896,6 +1128,8 @@ function readSchedulerSnapshot() {
|
|
|
896
1128
|
function syncState() {
|
|
897
1129
|
const snapshot = readSchedulerSnapshot();
|
|
898
1130
|
const pilotSnapshot = readPilotFlowSnapshot();
|
|
1131
|
+
const componentSnapshot = readComponentCapabilitySnapshot();
|
|
1132
|
+
const playerSnapshot = readPlayerContractSnapshot();
|
|
899
1133
|
const routeSnapshot = {
|
|
900
1134
|
path: state.activeRoute,
|
|
901
1135
|
component: state.activeComponent,
|
|
@@ -913,6 +1147,8 @@ function syncState() {
|
|
|
913
1147
|
});
|
|
914
1148
|
xstate.set('xtend.rmt.router.current', routeSnapshot);
|
|
915
1149
|
xstate.set('xtend.rmt.templating.pilot', pilotSnapshot);
|
|
1150
|
+
xstate.set('xtend.rmt.component.capabilities', componentSnapshot);
|
|
1151
|
+
xstate.set('xtend.rmt.player.contract', playerSnapshot);
|
|
916
1152
|
xstate.set('xtend.rmt.scheduler.snapshot', snapshot);
|
|
917
1153
|
xstate.set('xtend.rmt.scheduler.jobs', state.jobs.slice(-12));
|
|
918
1154
|
}
|
|
@@ -945,6 +1181,8 @@ function renderTimeline() {
|
|
|
945
1181
|
function refreshDemoUi() {
|
|
946
1182
|
const snapshot = readSchedulerSnapshot();
|
|
947
1183
|
const pilotSnapshot = readPilotFlowSnapshot();
|
|
1184
|
+
const componentSnapshot = readComponentCapabilitySnapshot();
|
|
1185
|
+
const playerSnapshot = readPlayerContractSnapshot();
|
|
948
1186
|
const pilotTemplate = findTemplate(pilotSnapshot.templateRef) || {};
|
|
949
1187
|
const templateCount = state.document && Array.isArray(state.document.templates)
|
|
950
1188
|
? state.document.templates.length
|
|
@@ -958,6 +1196,13 @@ function refreshDemoUi() {
|
|
|
958
1196
|
setText('metric-pressure', snapshot.pressureLevel);
|
|
959
1197
|
setText('metric-active-route', state.activeRoute);
|
|
960
1198
|
setText('metric-active-schedule', state.activeSchedule);
|
|
1199
|
+
setText('metric-states', state.vnextCore && Array.isArray(state.vnextCore.states) ? state.vnextCore.states.length : 0);
|
|
1200
|
+
setText('metric-actions', state.vnextCore && Array.isArray(state.vnextCore.actions) ? state.vnextCore.actions.length : 0);
|
|
1201
|
+
setText('metric-resources', state.vnextCore && Array.isArray(state.vnextCore.resources) ? state.vnextCore.resources.length : 0);
|
|
1202
|
+
setText('metric-remote-surfaces', state.vnextCore && Array.isArray(state.vnextCore.remoteSurfaces) ? state.vnextCore.remoteSurfaces.length : 0);
|
|
1203
|
+
setText('metric-public-components', componentSnapshot.publicComponentCount);
|
|
1204
|
+
setText('metric-rmt-metadata', componentSnapshot.withRmtMetadata);
|
|
1205
|
+
setText('metric-player-state', playerSnapshot.state && playerSnapshot.state.status ? playerSnapshot.state.status : 'paused');
|
|
961
1206
|
|
|
962
1207
|
renderTimeline();
|
|
963
1208
|
setXCode('demo-runtime-snapshot', snapshot);
|
|
@@ -989,7 +1234,8 @@ function refreshDemoUi() {
|
|
|
989
1234
|
productiveAdapterFactories: [
|
|
990
1235
|
'createRmtXRouterAdapter',
|
|
991
1236
|
'createRmtXtendComponentAdapter',
|
|
992
|
-
'createRmtStateSchedulerDiagnosticsBridge'
|
|
1237
|
+
'createRmtStateSchedulerDiagnosticsBridge',
|
|
1238
|
+
'createRmtComponentCapabilityRegistry'
|
|
993
1239
|
],
|
|
994
1240
|
routeMapping: state.mappings.routes
|
|
995
1241
|
? {
|
|
@@ -1028,7 +1274,14 @@ function refreshDemoUi() {
|
|
|
1028
1274
|
operations: state.vnextCore.operations.length,
|
|
1029
1275
|
slots: state.vnextCore.slots.length,
|
|
1030
1276
|
events: state.vnextCore.events.length,
|
|
1031
|
-
dataSources: state.vnextCore.dataSources.length
|
|
1277
|
+
dataSources: state.vnextCore.dataSources.length,
|
|
1278
|
+
states: state.vnextCore.states.length,
|
|
1279
|
+
selectors: state.vnextCore.selectors.length,
|
|
1280
|
+
actions: state.vnextCore.actions.length,
|
|
1281
|
+
portals: state.vnextCore.portals.length,
|
|
1282
|
+
overlays: state.vnextCore.overlays.length,
|
|
1283
|
+
resources: state.vnextCore.resources.length,
|
|
1284
|
+
remoteSurfaces: state.vnextCore.remoteSurfaces.length
|
|
1032
1285
|
}
|
|
1033
1286
|
: null,
|
|
1034
1287
|
runtimeProjectionDomains: ['adapters', 'components', 'routes', 'schedules'],
|
|
@@ -1056,6 +1309,27 @@ function refreshDemoUi() {
|
|
|
1056
1309
|
? pilotTemplate.metadata.authoring
|
|
1057
1310
|
: {}
|
|
1058
1311
|
});
|
|
1312
|
+
setXCode('demo-primitive-matrix', componentSnapshot);
|
|
1313
|
+
setXCode('demo-vnext-primitives', state.vnextCore
|
|
1314
|
+
? {
|
|
1315
|
+
states: state.vnextCore.states.map((entry) => entry.id),
|
|
1316
|
+
selectors: state.vnextCore.selectors.map((entry) => entry.id),
|
|
1317
|
+
actions: state.vnextCore.actions.map((entry) => entry.id),
|
|
1318
|
+
portals: state.vnextCore.portals.map((entry) => entry.id),
|
|
1319
|
+
overlays: state.vnextCore.overlays.map((entry) => entry.id),
|
|
1320
|
+
resources: state.vnextCore.resources.map((entry) => ({
|
|
1321
|
+
id: entry.id,
|
|
1322
|
+
kind: entry.kind,
|
|
1323
|
+
owner: entry.owner
|
|
1324
|
+
})),
|
|
1325
|
+
remoteSurfaces: state.vnextCore.remoteSurfaces.map((entry) => ({
|
|
1326
|
+
id: entry.id,
|
|
1327
|
+
remote: entry.remote,
|
|
1328
|
+
fallbackSurface: entry.fallbackSurface
|
|
1329
|
+
}))
|
|
1330
|
+
}
|
|
1331
|
+
: {});
|
|
1332
|
+
setXCode('demo-player-contract', playerSnapshot);
|
|
1059
1333
|
|
|
1060
1334
|
syncState();
|
|
1061
1335
|
}
|
|
@@ -1196,11 +1470,43 @@ function runTemplatePilotCycle() {
|
|
|
1196
1470
|
});
|
|
1197
1471
|
}
|
|
1198
1472
|
|
|
1473
|
+
function runPrimitiveMatrixCycle() {
|
|
1474
|
+
return runScheduled('component.primitive.matrix', 'Refresh XTend component primitive matrix', async () => {
|
|
1475
|
+
const matrix = await loadComponentCapabilityMatrix();
|
|
1476
|
+
const snapshot = readComponentCapabilitySnapshot();
|
|
1477
|
+
xstate.set('xtend.rmt.component.capabilities', snapshot);
|
|
1478
|
+
setStatus(`RMT refreshed ${snapshot.publicComponentCount || matrix.publicComponentCount || 0} XTend component capabilities without kernel imports.`, snapshot.ok ? 'success' : 'warning');
|
|
1479
|
+
return snapshot;
|
|
1480
|
+
});
|
|
1481
|
+
}
|
|
1482
|
+
|
|
1483
|
+
function runPlayerContractCycle(status = 'playing') {
|
|
1484
|
+
return runScheduled('media.visible.contract', `Apply x-player ${status} contract`, async () => {
|
|
1485
|
+
state.playerSnapshot = {
|
|
1486
|
+
mediaId: 'intro',
|
|
1487
|
+
status,
|
|
1488
|
+
title: 'XTendRMT Runtime Walkthrough',
|
|
1489
|
+
updatedAt: new Date().toISOString()
|
|
1490
|
+
};
|
|
1491
|
+
const player = byId('bestcase-player');
|
|
1492
|
+
if (player) {
|
|
1493
|
+
player.setAttribute('title', state.playerSnapshot.title);
|
|
1494
|
+
player.dataset.rmtState = status;
|
|
1495
|
+
}
|
|
1496
|
+
const snapshot = readPlayerContractSnapshot();
|
|
1497
|
+
xstate.set('xtend.rmt.player.contract', snapshot);
|
|
1498
|
+
setStatus(`RMT applied x-player ${status} request through the public player contract.`, 'success');
|
|
1499
|
+
return snapshot;
|
|
1500
|
+
});
|
|
1501
|
+
}
|
|
1502
|
+
|
|
1199
1503
|
async function runFullCycle() {
|
|
1200
1504
|
const button = byId('demo-run-all');
|
|
1201
1505
|
if (button) button.setAttribute('loading', '');
|
|
1202
1506
|
await navigateWithRmt(state.activeRoute || '/');
|
|
1203
1507
|
await runTemplatePilotCycle();
|
|
1508
|
+
await runPrimitiveMatrixCycle();
|
|
1509
|
+
await runPlayerContractCycle('playing');
|
|
1204
1510
|
await runHydrationCycle();
|
|
1205
1511
|
await runDiagnosticsCycle();
|
|
1206
1512
|
if (button) button.removeAttribute('loading');
|
|
@@ -1223,6 +1529,9 @@ function bindRouteControls(root = document) {
|
|
|
1223
1529
|
if (action === 'hydrate') runHydrationCycle();
|
|
1224
1530
|
if (action === 'diagnostics') runDiagnosticsCycle();
|
|
1225
1531
|
if (action === 'template-pilot') runTemplatePilotCycle();
|
|
1532
|
+
if (action === 'primitive-matrix') runPrimitiveMatrixCycle();
|
|
1533
|
+
if (action === 'player-play') runPlayerContractCycle('playing');
|
|
1534
|
+
if (action === 'player-pause') runPlayerContractCycle('paused');
|
|
1226
1535
|
if (action === 'route') navigateWithRmt(state.activeRoute || '/');
|
|
1227
1536
|
});
|
|
1228
1537
|
});
|
|
@@ -1353,6 +1662,8 @@ function defineDemoRouteComponents() {
|
|
|
1353
1662
|
<x-button data-demo-route="/scheduler" variant="secondary">Scheduler</x-button>
|
|
1354
1663
|
<x-button data-demo-route="/routing" variant="primary">Routing DSL</x-button>
|
|
1355
1664
|
<x-button data-demo-route="/templating" variant="secondary">Templating Pilot</x-button>
|
|
1665
|
+
<x-button data-demo-route="/primitives" variant="secondary">Primitives</x-button>
|
|
1666
|
+
<x-button data-demo-route="/media" variant="secondary">Media</x-button>
|
|
1356
1667
|
<x-button data-demo-route="/adapter" variant="secondary">Adapter</x-button>
|
|
1357
1668
|
</div>
|
|
1358
1669
|
</div>
|
|
@@ -1420,6 +1731,99 @@ function defineDemoRouteComponents() {
|
|
|
1420
1731
|
});
|
|
1421
1732
|
}
|
|
1422
1733
|
|
|
1734
|
+
if (!customElements.get(ROUTE_COMPONENTS.primitives)) {
|
|
1735
|
+
customElements.define(ROUTE_COMPONENTS.primitives, class XRmtRoutePrimitives extends HTMLElement {
|
|
1736
|
+
connectedCallback() {
|
|
1737
|
+
this.innerHTML = `
|
|
1738
|
+
<x-section layout="column" label="RMT Component Primitives">
|
|
1739
|
+
<div slot="header">
|
|
1740
|
+
<h2>Manifest-wide XTend component compatibility from RMT.</h2>
|
|
1741
|
+
<p class="muted">This route uses the Component Capability Registry to read XTend component contracts, RMT metadata, events, slots, parts and source-to-sea risk without importing XTend types into the RMT kernel.</p>
|
|
1742
|
+
<div class="demo-actions">
|
|
1743
|
+
<x-button data-demo-run="primitive-matrix" data-demo-route="/primitives" variant="primary">Refresh matrix</x-button>
|
|
1744
|
+
<x-button data-demo-route="/media" variant="secondary">Open player contract</x-button>
|
|
1745
|
+
</div>
|
|
1746
|
+
</div>
|
|
1747
|
+
<x-cards columns="4" gap="1rem">
|
|
1748
|
+
<x-card>
|
|
1749
|
+
<h3>Public UI</h3>
|
|
1750
|
+
<span id="metric-public-components" class="metric">0</span>
|
|
1751
|
+
<span class="metric-label">Renderable XTend manifest components</span>
|
|
1752
|
+
</x-card>
|
|
1753
|
+
<x-card>
|
|
1754
|
+
<h3>RMT Metadata</h3>
|
|
1755
|
+
<span id="metric-rmt-metadata" class="metric">0</span>
|
|
1756
|
+
<span class="metric-label">Component entries with RMT compatibility metadata</span>
|
|
1757
|
+
</x-card>
|
|
1758
|
+
<x-card>
|
|
1759
|
+
<h3>State</h3>
|
|
1760
|
+
<span id="metric-states" class="metric">0</span>
|
|
1761
|
+
<span class="metric-label">vNext state declarations in this demo source</span>
|
|
1762
|
+
</x-card>
|
|
1763
|
+
<x-card>
|
|
1764
|
+
<h3>Actions</h3>
|
|
1765
|
+
<span id="metric-actions" class="metric">0</span>
|
|
1766
|
+
<span class="metric-label">Declarative event/action records</span>
|
|
1767
|
+
</x-card>
|
|
1768
|
+
</x-cards>
|
|
1769
|
+
<x-status id="primitive-status" label="Component primitive matrix" state="ready"></x-status>
|
|
1770
|
+
<x-progress value="90" max="100" label="RMT primitive coverage"></x-progress>
|
|
1771
|
+
<x-code id="demo-primitive-matrix" lang="json"><template>{}</template></x-code>
|
|
1772
|
+
<x-code id="demo-vnext-primitives" lang="json"><template>{}</template></x-code>
|
|
1773
|
+
</x-section>
|
|
1774
|
+
`;
|
|
1775
|
+
bindRouteControls(this);
|
|
1776
|
+
refreshDemoUi();
|
|
1777
|
+
}
|
|
1778
|
+
});
|
|
1779
|
+
}
|
|
1780
|
+
|
|
1781
|
+
if (!customElements.get(ROUTE_COMPONENTS.media)) {
|
|
1782
|
+
customElements.define(ROUTE_COMPONENTS.media, class XRmtRouteMedia extends HTMLElement {
|
|
1783
|
+
connectedCallback() {
|
|
1784
|
+
this.innerHTML = `
|
|
1785
|
+
<x-section layout="column" label="RMT Player Contract">
|
|
1786
|
+
<div slot="header">
|
|
1787
|
+
<h2>x-player is driven through a public RMT contract.</h2>
|
|
1788
|
+
<p class="muted">The demo records play/pause requests, state bridge output, theme tokens, CSS parts and object-URL ownership without product code touching <code>shadowRoot</code>.</p>
|
|
1789
|
+
<div class="demo-actions">
|
|
1790
|
+
<x-button data-demo-run="player-play" variant="primary">Play request</x-button>
|
|
1791
|
+
<x-button data-demo-run="player-pause" variant="secondary">Pause request</x-button>
|
|
1792
|
+
<x-button data-demo-route="/primitives" variant="secondary">Component matrix</x-button>
|
|
1793
|
+
</div>
|
|
1794
|
+
</div>
|
|
1795
|
+
<x-cards columns="4" gap="1rem">
|
|
1796
|
+
<x-card>
|
|
1797
|
+
<h3>Player State</h3>
|
|
1798
|
+
<span id="metric-player-state" class="metric">paused</span>
|
|
1799
|
+
<span class="metric-label">Mirrored through xstate host bridge</span>
|
|
1800
|
+
</x-card>
|
|
1801
|
+
<x-card>
|
|
1802
|
+
<h3>Resources</h3>
|
|
1803
|
+
<span id="metric-resources" class="metric">0</span>
|
|
1804
|
+
<span class="metric-label">Owner-scoped resources with destroy cleanup</span>
|
|
1805
|
+
</x-card>
|
|
1806
|
+
<x-card>
|
|
1807
|
+
<h3>Remote</h3>
|
|
1808
|
+
<span id="metric-remote-surfaces" class="metric">0</span>
|
|
1809
|
+
<span class="metric-label">Declarative remote surface contracts</span>
|
|
1810
|
+
</x-card>
|
|
1811
|
+
<x-card>
|
|
1812
|
+
<h3>Boundary</h3>
|
|
1813
|
+
<span class="metric">API</span>
|
|
1814
|
+
<span class="metric-label">No product shadowRoot patching</span>
|
|
1815
|
+
</x-card>
|
|
1816
|
+
</x-cards>
|
|
1817
|
+
<x-player id="bestcase-player" title="XTendRMT Runtime Walkthrough" height="260"></x-player>
|
|
1818
|
+
<x-code id="demo-player-contract" lang="json"><template>{}</template></x-code>
|
|
1819
|
+
</x-section>
|
|
1820
|
+
`;
|
|
1821
|
+
bindRouteControls(this);
|
|
1822
|
+
refreshDemoUi();
|
|
1823
|
+
}
|
|
1824
|
+
});
|
|
1825
|
+
}
|
|
1826
|
+
|
|
1423
1827
|
if (!customElements.get(ROUTE_COMPONENTS.adapter)) {
|
|
1424
1828
|
customElements.define(ROUTE_COMPONENTS.adapter, class XRmtRouteAdapter extends HTMLElement {
|
|
1425
1829
|
connectedCallback() {
|
|
@@ -1468,6 +1872,10 @@ async function waitForXtendElements() {
|
|
|
1468
1872
|
'x-button',
|
|
1469
1873
|
'x-alert',
|
|
1470
1874
|
'x-code',
|
|
1875
|
+
'x-player',
|
|
1876
|
+
'x-progress',
|
|
1877
|
+
'x-status',
|
|
1878
|
+
'x-toast',
|
|
1471
1879
|
'x-modal',
|
|
1472
1880
|
'x-router',
|
|
1473
1881
|
'x-route',
|
|
@@ -1643,7 +2051,10 @@ async function loadDemoDocument() {
|
|
|
1643
2051
|
routes: Array.isArray(normalizedDocument.routes) ? normalizedDocument.routes : [],
|
|
1644
2052
|
schedules: Array.isArray(normalizedDocument.schedules) ? normalizedDocument.schedules : [],
|
|
1645
2053
|
pilotFlow: metadata.pilotFlow || null,
|
|
1646
|
-
nativeDemoMigration: metadata.nativeDemoMigration || null
|
|
2054
|
+
nativeDemoMigration: metadata.nativeDemoMigration || null,
|
|
2055
|
+
componentPrimitives: metadata.componentPrimitives || null,
|
|
2056
|
+
playerContract: metadata.playerContract || null,
|
|
2057
|
+
surfaceResourceLifecycle: metadata.surfaceResourceLifecycle || null
|
|
1647
2058
|
};
|
|
1648
2059
|
return normalizedDocument;
|
|
1649
2060
|
}
|
|
@@ -1653,6 +2064,7 @@ async function initDemo() {
|
|
|
1653
2064
|
ensureXTendNamespace();
|
|
1654
2065
|
defineDemoRouteComponents();
|
|
1655
2066
|
await waitForXtendElements();
|
|
2067
|
+
await loadComponentCapabilityMatrix();
|
|
1656
2068
|
|
|
1657
2069
|
state.runtime = createRmtRuntime({
|
|
1658
2070
|
windowTarget: window,
|
|
@@ -1709,7 +2121,11 @@ const demoApi = {
|
|
|
1709
2121
|
runHydrationCycle,
|
|
1710
2122
|
runDiagnosticsCycle,
|
|
1711
2123
|
runTemplatePilotCycle,
|
|
2124
|
+
runPrimitiveMatrixCycle,
|
|
2125
|
+
runPlayerContractCycle,
|
|
1712
2126
|
readPilotFlowSnapshot,
|
|
2127
|
+
readComponentCapabilitySnapshot,
|
|
2128
|
+
readPlayerContractSnapshot,
|
|
1713
2129
|
snapshot: readSchedulerSnapshot
|
|
1714
2130
|
};
|
|
1715
2131
|
|