import { ComponentType, ReactElement } from "react"; import type { ComponentData, IComponentParser } from "./parser"; import { ComponentTypes } from "maishu-jueying/type"; /** * @deprecated 该解析器通过「生成 JSX 代码 → Babel 编译 → new Function 执行」的方式渲染组件, * 已废弃。请改用 RuntimeComponentParser(即 runtime-parser 的 ComponentParser): * 它通过 React.createElement 直接渲染,并在渲染可挂 ref 的组件时按 props.id 把实例暴露到全局, * 以支持 DesignerContext.getComponent(id) 按 id 取回组件实例。 * 通过生成代码的方式来解析组件 * 1. 生成 JSX 代码 * 2. 编译 JSX 代码为 JavaScript 代码 * 3. 通过 new Function 创建组件实例 * */ export declare class ClassCodeComponentParser implements IComponentParser { private componentTypes; constructor(componentTypes: ComponentTypes); parse(componentData: ComponentData, args?: Record): ReactElement; } export declare function parseComponent(componentData: ComponentData, componentTypes: ComponentTypes, args?: Record): ReactElement; export declare function getRefNames(obj: any): string[]; export declare function searchComponentTypes(obj: any, componentTypes: ComponentTypes): Record>; /** 生成页面 JSX 代码 */ export declare function generatePageCode(componentData: ComponentData): string; /** 把 ComponentData 生成对应的 JSX 代码 */ export declare function generateComponentJSX(componentData: ComponentData, availableTemplateNames?: string[]): string; export declare function transformCode(source: string): string | null; export declare function valueStringify(value: any, availableTemplateNames?: string[]): string; /** * 获取指定代码的成员信息 * @param code 指定的代码 */ export declare function getMembers(code: string): string[];