UNPKG

@knxcloud/lowcode-hooks

Version:
46 lines (42 loc) 1.92 kB
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 };