import { IDesigner } from '../designer'; import { DocumentModel } from '../document'; import type { IDocumentModel } from '../document'; import { IPublicEnumTransformStage } from '@alilc/lowcode-types'; import type { IBaseApiProject, IPublicTypeProjectSchema, IPublicTypeRootSchema, IPublicTypeSimulatorRenderer } from '@alilc/lowcode-types'; import { ISimulatorHost } from '../simulator'; export interface IProject extends Omit, 'simulatorHost' | 'importSchema' | 'exportSchema' | 'openDocument' | 'getDocumentById' | 'getCurrentDocument' | 'addPropsTransducer' | 'onRemoveDocument' | 'onChangeDocument' | 'onSimulatorHostReady' | 'onSimulatorRendererReady' | 'setI18n' | 'setConfig' | 'currentDocument' | 'selection' | 'documents' | 'createDocument' | 'getDocumentByFileName'> { get designer(): IDesigner; get simulator(): ISimulatorHost | null; get currentDocument(): IDocumentModel | null | undefined; get documents(): IDocumentModel[]; get i18n(): { [local: string]: { [key: string]: any; }; }; mountSimulator(simulator: ISimulatorHost): void; open(doc?: string | IDocumentModel | IPublicTypeRootSchema): IDocumentModel | null; getDocumentByFileName(fileName: string): IDocumentModel | null; createDocument(data?: IPublicTypeRootSchema): IDocumentModel; load(schema?: IPublicTypeProjectSchema, autoOpen?: boolean | string): void; getSchema(stage?: IPublicEnumTransformStage): IPublicTypeProjectSchema; getDocument(id: string): IDocumentModel | null; onCurrentDocumentChange(fn: (doc: IDocumentModel) => void): () => void; onSimulatorReady(fn: (simulator: ISimulatorHost) => void): () => void; onRendererReady(fn: () => void): () => void; /** * 分字段设置储存数据,不记录操作记录 */ set(key: T, value: IPublicTypeProjectSchema[T]): void; set(key: string, value: unknown): void; /** * 分字段获取储存数据 */ get(key: T): IPublicTypeProjectSchema[T]; get(key: string): T; get(key: string): unknown; checkExclusive(activeDoc: DocumentModel): void; setRendererReady(renderer: IPublicTypeSimulatorRenderer): void; } export declare class Project implements IProject { readonly designer: IDesigner; readonly viewName: string; private emitter; readonly documents: IDocumentModel[]; private data; private _simulator?; private isRendererReady; /** * 模拟器 */ get simulator(): ISimulatorHost | null; get currentDocument(): IDocumentModel | null | undefined; private _config; get config(): any; set config(value: any); private _i18n; get i18n(): any; set i18n(value: any); private documentsMap; constructor(designer: IDesigner, schema?: IPublicTypeProjectSchema, viewName?: string); private getComponentsMap; /** * 获取项目整体 schema */ getSchema(stage?: IPublicEnumTransformStage): IPublicTypeProjectSchema; /** * 替换当前 document 的 schema,并触发渲染器的 render * @param schema */ setSchema(schema?: IPublicTypeProjectSchema): void; /** * 整体设置项目 schema * * @param autoOpen true 自动打开文档 string 指定打开的文件 */ load(schema?: IPublicTypeProjectSchema, autoOpen?: boolean | string): void; /** * 卸载当前项目数据 */ unload(): void; removeDocument(doc: IDocumentModel): void; /** * 分字段设置储存数据,不记录操作记录 */ set(key: T, value: IPublicTypeProjectSchema[T]): void; set(key: string, value: unknown): void; /** * 分字段设置储存数据 */ get(key: T): IPublicTypeRootSchema[T]; get(key: string): T; get(key: string): unknown; getDocument(id: string): IDocumentModel | null; getDocumentByFileName(fileName: string): IDocumentModel | null; createDocument(data?: IPublicTypeRootSchema): IDocumentModel; open(doc?: string | IDocumentModel | IPublicTypeRootSchema): IDocumentModel | null; checkExclusive(activeDoc: DocumentModel): void; closeOthers(opened: DocumentModel): void; mountSimulator(simulator: ISimulatorHost): void; setRendererReady(renderer: any): void; onSimulatorReady(fn: (args: any) => void): () => void; onRendererReady(fn: () => void): () => void; onCurrentDocumentChange(fn: (doc: IDocumentModel) => void): () => void; }