@vtj/renderer
Version:
VTJ 是一款基于 Vue3 + Typescript 的低代码页面可视化设计器。内置低代码引擎、渲染器和代码生成器,面向前端开发者,开箱即用。 无缝嵌入本地开发工程,不改变前端开发流程和编码习惯。
77 lines (76 loc) • 2.89 kB
TypeScript
import { App, InjectionKey } from 'vue';
import { Router, RouteRecordName, RouteMeta } from 'vue-router';
import { ProjectSchema, PageFile, BlockFile, Service, BlockSchema, NodeFromPlugin, Base } from '@vtj/core';
import { ContextMode } from '../constants';
import { CreateRendererOptions } from '../render';
import { ProvideAdapter } from './defaults';
import { Context } from '..';
export declare const providerKey: InjectionKey<Provider>;
export interface ProviderOptions {
service: Service;
project?: Partial<ProjectSchema>;
modules?: Record<string, () => Promise<any>>;
mode?: ContextMode;
adapter?: Partial<ProvideAdapter>;
router?: Router;
dependencies?: Record<string, () => Promise<any>>;
materials?: Record<string, () => Promise<any>>;
globals?: Record<string, any>;
materialPath?: string;
nodeEnv?: NodeEnv;
install?: (app: App) => void;
routeAppendTo?: RouteRecordName;
pageRouteName?: string;
routeMeta?: RouteMeta;
}
export declare enum NodeEnv {
Production = "production",
Development = "development"
}
export declare class Provider extends Base {
options: ProviderOptions;
mode: ContextMode;
globals: Record<string, any>;
modules: Record<string, () => Promise<any>>;
adapter: ProvideAdapter;
apis: Record<string, (...args: any[]) => Promise<any>>;
dependencies: Record<string, () => Promise<any>>;
materials: Record<string, () => Promise<any>>;
library: Record<string, any>;
service: Service;
project: ProjectSchema | null;
components: Record<string, any>;
nodeEnv: NodeEnv;
private router;
private materialPath;
private urlDslCaches;
constructor(options: ProviderOptions);
createMock(func: (...args: any) => any): (...args: any[]) => Promise<any>;
load(project: ProjectSchema): Promise<void>;
initMock(global?: any): void;
private loadDependencies;
private loadAssets;
private initRouter;
install(app: App): void;
getFile(id: string): PageFile | BlockFile | null;
getPage(id: string): PageFile | null;
getHomepage(): PageFile | null;
getDsl(id: string): Promise<BlockSchema | null>;
getDslByUrl(url: string): Promise<BlockSchema | null>;
createDslRenderer(dsl: BlockSchema, opts?: Partial<CreateRendererOptions>): {
renderer: any;
context: Context;
};
getRenderComponent(id: string, output?: (file: BlockFile | PageFile) => void): Promise<any>;
defineUrlSchemaComponent(url: string, name?: string): any;
definePluginComponent(from: NodeFromPlugin): any;
}
export declare function createProvider(options: ProviderOptions): {
provider: Provider;
onReady: (callback: () => void) => void;
};
export interface UseProviderOptions {
id?: string;
version?: string;
}
export declare function useProvider(options?: UseProviderOptions): Provider;