import { Injectable } from '@angular/core'; import { Observable, map } from 'rxjs'; import { BrandingEngineService } from '../../theme/runtime/branding-engine.service'; import { ThemeEngineService } from '../../theme/runtime/theme-engine.service'; import { PageRendererService } from '../../dynamic-renderer/page-renderer/page-renderer.service'; import { PageRenderModel } from '../../dynamic-renderer/page-renderer/page-renderer.model'; import { WidgetRegistryBootstrapService } from '../../widgets/registry/widget-registry.bootstrap.service'; import { PageResolverService } from '../../dynamic-renderer/page-resolver/page-resolver.service'; @Injectable({ providedIn: 'root' }) export class WebsiteRuntimeFacade { constructor( private readonly pageResolver: PageResolverService, private readonly pageRenderer: PageRendererService, private readonly registryBootstrap: WidgetRegistryBootstrapService, private readonly themeEngine: ThemeEngineService, private readonly brandingEngine: BrandingEngineService ) {} initializeRuntime(): void { this.registryBootstrap.registerDefaults(); this.themeEngine.initialize(); this.brandingEngine.initialize(); } getPageRenderModelForUrl(url: string): Observable { return this.pageResolver.resolveByUrl(url).pipe( map(page => { return page ? this.pageRenderer.toRenderModel(page) : null; }) ); } }