@knxcloud/lowcode-hooks
Version:
46 lines (42 loc) • 1.92 kB
TypeScript
import { IPublicTypeNodeSchema, GlobalEvent, IPublicModelNode, IPublicTypeDisposable } from '@alilc/lowcode-types';
import { Component, ComponentPublicInstance, InjectionKey } from 'vue';
type DesignMode = 'live' | 'design';
interface RendererContext {
readonly components: Record<string, Component<any, any, any>>;
readonly designMode: DesignMode;
readonly thisRequiredInJSE: boolean;
getNode(id: string): INode | null;
rerender(): void;
wrapLeafComp<C extends object, L extends object>(name: string, comp: C, leaf: L): L;
triggerCompGetCtx(schema: IPublicTypeNodeSchema, val: ComponentPublicInstance): void;
}
declare function getRendererContextKey(): InjectionKey<RendererContext>;
declare function useRendererContext(): RendererContext;
type IPublicTypePropChangeOptions = Omit<GlobalEvent.Node.Prop.ChangeOptions, 'node'>;
interface INode extends IPublicModelNode {
onVisibleChange(func: (flag: boolean) => any): () => void;
onPropChange(func: (info: IPublicTypePropChangeOptions) => void): IPublicTypeDisposable;
onChildrenChange(fn: (param?: {
type: string;
node: INode;
} | undefined) => void): IPublicTypeDisposable | undefined;
}
interface EnvNode {
mode: DesignMode;
node: INode | null;
isDesignerEnv: boolean;
}
interface DesignerEnvNode extends EnvNode {
mode: 'design';
node: INode;
isDesignerEnv: true;
}
interface LiveEnvNode extends EnvNode {
mode: 'live';
node: null;
isDesignerEnv: false;
}
type CurrentNode = DesignerEnvNode | LiveEnvNode;
declare function getCurrentNodeKey(): InjectionKey<CurrentNode>;
declare function useCurrentNode(): CurrentNode;
export { type CurrentNode, type DesignMode, type DesignerEnvNode, type EnvNode, type INode, type IPublicTypePropChangeOptions, type LiveEnvNode, type RendererContext, getCurrentNodeKey, getRendererContextKey, useCurrentNode, useRendererContext };