import { ComponentType } from "react"; export declare enum ComponentStatus { default = 0, /** 已选中 */ selected = 1, /** 禁用 */ disabled = 2, /** 不允许删除 */ asset = 4 } export type ComponentProps = ComponentData["props"]; export interface ComponentData { /** * 组件类型名称 * 自定义组件必须为驼峰规则(例如:ComponentPlaceHolder) * HTML 组件必须全小写(例如:div, span) * */ type: string; context?: { [name: string]: string; }; /** * Schema 版本号,仅根节点有意义,整棵树原子迁移。 * 缺省视为 0(最早期的数据结构),由 migrateComponentData 迁移并写入。 */ version?: number; /** 组件属性 */ props: { children?: (ComponentData | string)[] | string | ComponentData; ref?: string; key?: string; id: string; name?: string; hidden?: 'remove' | 'hide'; [key: string]: any | ComponentData; }; /** * 选中标记:内嵌编辑器/子组件跳转通过该字段随 onChange/onChanged 通道请求选中。 * 选中状态随数据持久化:标记始终指向当前编辑的组件,撤销/重做会一并恢复。 */ selected?: boolean; } /** 转换属性,有些类型的属性需要转换成,例如函数 */ export type TransformProperty = { propType: string; propValue: any; options?: T; }; export interface PropertyTransform { transform(propValue: any, options?: any): any; } export interface IComponentParser { /** * 解析组件数据,返回 React 元素 * @param componentData 组件数据 * @param args 组件参数,例如导入、引用、组件等 * @returns React 元素 * */ parse(componentData: ComponentData, args?: Record): React.ReactNode; } export declare function preprocessComponentData(compoentData: ComponentData, args?: Record): ComponentData; export declare function childrenToArray(children: ComponentData["props"]["children"]): (ComponentData | string)[]; export declare function findRegisteredComponentType(typeName: string, componentTypes: Record | string>, options?: { allowNormalizedName?: boolean; }): ComponentType | undefined; export declare function collectRefNames(obj: any): string[]; export declare function isIntrinsicElementTypeName(typeName: string): boolean; export declare function searchRegisteredComponentTypes(obj: any, componentTypes: Record | string>, options?: { allowNormalizedName?: boolean; throwOnMissingNonHtml?: boolean; resolveTypeName?: (typeName: string) => string; }): Record>; export declare function normalizeNode(value: T): T; export declare function transformCode(source: string): string | null;