phase-6: add registry-driven dynamic page-section-widget rendering engine

This commit is contained in:
sdarbinyan
2026-07-03 01:35:09 +04:00
parent 7dca7fee7d
commit 3f00884f33
8 changed files with 171 additions and 0 deletions

View File

@@ -0,0 +1,11 @@
import { WidgetConfig } from '../../shared/models/config';
export interface WidgetRenderNode {
id: string;
type: string;
version: string;
props: Record<string, unknown>;
featureFlag?: string;
visible?: boolean;
source: WidgetConfig;
}

View File

@@ -0,0 +1,23 @@
import { Injectable } from '@angular/core';
import { WidgetConfig } from '../../shared/models/config';
import { WidgetRegistryService } from '../../widgets/registry/widget-registry.service';
import { ResolvedWidget } from '../../widgets/contracts/widget-component.contract';
@Injectable({ providedIn: 'root' })
export class WidgetHostService {
constructor(private readonly registry: WidgetRegistryService) {}
resolveWidget(widget: WidgetConfig): ResolvedWidget | null {
const registered = this.registry.resolve(widget.type, widget.version);
if (!registered) {
return null;
}
return {
type: registered.type,
version: registered.version,
component: registered.component,
props: widget.props ?? {}
};
}
}