export const Widget = Symbol('Widget'); export const WidgetModel = Symbol('WidgetModel'); export const WidgetFactory = Symbol('WidgetFactory'); export const WidgetManager = Symbol('WidgetManager'); export enum WidgetType { Decorator = 'Decorator' } export interface Widget { id: string; priority: number; area?: string; visible: boolean; render(): Promise; } export interface WidgetModel { id: string; type: string; priority: number; visible: boolean; area?: string; props?: { [key: string]: any }; matedata?: { [key: string]: any }; children?: WidgetModel[] } export interface WidgetFactory { priority: number; create(widgetModel: WidgetModel): Promise>; support(widgetModel: WidgetModel): Promise; } export interface WidgetManager { get(area: string): Promise[]>; render(area: string): Promise; }