import React from 'react'; import { Dict } from '@music163/tango-helpers'; interface IPageStateHandlers { getPageState: () => Dict; setPageState: (stateValue: Dict) => void; } interface RegisterStateConfig { /** * 用户自定义的组件状态 * @param props * @param instance * @returns */ getInitStates?: (handlers: IPageStateHandlers, props: any, instance: any) => any; /** * 用户自定义的触发器行为 * @param handlers * @returns */ getTriggerProps?: (handlers: IPageStateHandlers) => Dict; } interface DesignerRenderProps { originalProps: Record; designerProps: Record; children: React.ReactElement; } interface DesignerConfig { /** * 是否可拖拽 */ draggable?: boolean; /** * 是否有包裹容器 */ hasWrapper?: boolean; /** * 容器自定义样式 */ wrapperStyle?: React.CSSProperties; /** * 展示方式 */ display?: DndBoxProps['display']; /** * 自定义渲染 */ render?: (props: DesignerRenderProps) => React.ReactNode; /** * 注入给组件的默认属性 */ defaultProps?: Record; } interface DefineComponentConfig { /** * displayName */ name?: string; /** * 同步组件状态到 tango.page 上 */ registerState?: RegisterStateConfig; /** * 组件在设计态配置 */ designerConfig?: DesignerConfig; } export interface TangoComponentProps { /** * 组件 ID (兼容旧版设计) */ id?: string; /** * 组件 ID,同时用于页面内的状态访问路径 */ tid?: string; } export declare function defineComponent

(BaseComponent: React.ComponentType

, options?: DefineComponentConfig): React.ForwardRefExoticComponent & React.RefAttributes>; interface DndBoxProps extends React.ComponentPropsWithoutRef<'div'> { name?: string; display?: 'block' | 'inline-block' | 'inline'; } export {};