@vtj/designer
Version:
VTJ 是一款基于 Vue3 + Typescript 的低代码页面可视化设计器。内置低代码引擎、渲染器和代码生成器,面向前端开发者,开箱即用。 无缝嵌入本地开发工程,不改变前端开发流程和编码习惯。
77 lines (76 loc) • 2.62 kB
TypeScript
import { ShallowReactive, InjectionKey, MaybeRef, App, Ref } from 'vue';
import { Base, ProjectModel, BlockModel, HistoryModel, Service, Emitter, ProjectSchema, ProjectModelEvent } from '@vtj/core';
import { Context, Provider, Access, ProvideAdapter } from '@vtj/renderer';
import { SkeletonWrapperInstance } from '../wrappers';
import { Simulator } from './simulator';
import { Assets } from './assets';
import { Report } from './report';
export declare const engineKey: InjectionKey<ShallowReactive<Engine>>;
export interface EngineOptions {
container: MaybeRef<HTMLElement | undefined>;
service: Service;
project?: Partial<ProjectSchema>;
dependencies?: Record<string, () => Promise<any>>;
materials?: Record<string, () => Promise<any>>;
materialPath?: string;
globals?: Record<string, any>;
adapter?: Partial<ProvideAdapter>;
install?: (app: App, engine?: Engine) => void;
pageBasePath?: string;
pageRouteName?: string;
/**
* 这个是引擎自己的Access,不是业务应用,应用的在 adapter 中设置
*/
access?: Access;
/**
* 远程服务host
*/
remote?: string;
}
export declare const SAVE_BLOCK_FILE_FINISH = "SAVE_BLOCK_FILE_FINISH";
export declare class Engine extends Base {
options: EngineOptions;
app?: App;
skeleton?: SkeletonWrapperInstance | null;
container: MaybeRef<HTMLElement | undefined>;
service: Service;
assets: Assets;
simulator: Simulator;
emitter: Emitter;
project: Ref<ProjectModel | null>;
current: Ref<BlockModel | null>;
context: Ref<Context | null>;
isEmptyCurrent: Ref<boolean>;
history: Ref<HistoryModel | null>;
provider: Provider;
adapter?: Partial<ProvideAdapter>;
/**
* 当current变化时,更新该值,用于通知组件更新
*/
changed: Ref<symbol>;
access?: Access;
remote: string;
report: Report;
constructor(options: EngineOptions);
private init;
private render;
private bindEvents;
private activeFile;
private changeFile;
private changeCurrentFile;
private updateCurrent;
private saveProject;
private saveBlockFile;
onSaveBlockFileFinish(callback: (e: ProjectModelEvent) => void): void;
private saveMaterials;
private saveCurrentFile;
private initHistory;
private saveHistory;
private loadHistory;
private publish;
genSource(): Promise<string | undefined>;
private publishCurrent;
dispose(): void;
openFile(fileId?: string): Promise<void>;
}
export declare function useEngine(): ShallowReactive<Engine>;