import { type DslDefinition, type DslSlots } from '@oinone/kunlun-dsl'; import { type Component, type Slots, type VNode } from 'vue'; export declare const DEFAULT_TAG_PREFIX = "oinone"; export declare const SLOTS_KEY = "__slots"; export declare const RENDER_OPTIONS_KEY = "__render__options"; export declare const SLOT_CONTEXT_KEY = "slotContext"; /** * 渲染可选项 */ export interface DslRenderOptions { /** * 动态key * 当key不存在时进行自动生成 */ dynamicKey?: boolean; /** * 是否强制更新 * 永远使用新的key进行渲染 */ focusUpdate?: boolean; /** * 是否递归渲染 * 递归渲染有性能损耗,但可以解决某些渲染问题,建议在明确递归层数的情况下局部使用该参数 */ recursion?: boolean; /** * vue createVNode patchFlag */ patchFlag?: number; /** * vue createVNode dynamicProps */ dynamicProps?: string[] | null; /** * vue createVNode isBlockNode */ isBlockNode?: boolean; /** * 插槽上下文 */ slotContext?: Record; } export type DslChildren = string | VNode[] | Slots; /** * dsl扩展属性 */ export type DslRenderExtendProp = { __slots?: DslChildren; __render__options?: DslRenderOptions; }; export type DslRenderDefinition = DslDefinition & DslRenderExtendProp; export type DslPropType = { dslDefinition: DslRenderDefinition; slotName: string; slotContext?: Record; [key: string]: any; } & DslRenderExtendProp; type ResolveComponentType = Component | string; /** * dsl渲染 */ export declare class DslRender { private static resolveComponentCache; private static resolveCommonComponentCache; /** * 渲染指定dsl定义到对应插槽 * @param dsl 指定dsl * @param slotName 插槽名称 默认为: default * @param children 插槽 * @param options 渲染可选项 */ static render(dsl: DslRenderDefinition, slotName?: string, children?: DslChildren, options?: DslRenderOptions): VNode | undefined; /** * 渲染dsl插槽 * @param dslSlots dsl插槽 */ static renderSlots(dslSlots: DslSlots): Slots; /** * 通过指定dsl获取VNode插槽 * @param dsl 指定dsl * @param supportedSlotNames */ static fetchVNodeSlots(dsl: DslDefinition | undefined, supportedSlotNames?: string[]): Slots | undefined; /** * 根据dsl节点类型获取对应组件 * * @remarks * - {@link DslDefinitionType#VIEW} resolve rule: `{@link DEFAULT_TAG_PREFIX}-{@link DslDefinition#dslNodeType}` (Unsupported auto resolve methods)
* - {@link DslDefinitionType#PACK} resolve rule: `{@link PackDslDefinition#widget}` (Supported auto resolve methods)
* - {@link DslDefinitionType#ELEMENT} resolve rule: `{@link ElementDslDefinition#widget}` (Supported auto resolve methods)
* - Others resolve rule: `{@link DslDefinition#dslNodeType}` (Unsupported auto resolve methods) * * @param dslDefinition dsl定义 * @return * - 正确获取组件时返回: Component | string; * - 未知类型、插槽或模板类型返回: null; * - 无效的dslNodeType返回: undefined */ static fetchComponent(dslDefinition: DslDefinition): ResolveComponentType | null | undefined; private static createVNodeChildren; private static createVNodeWithDslDefinition; private static resolveMethods; private static resolveCommonWidgetComponent; private static resolveWidgetComponent; } export {};