import React, { MutableRefObject } from 'react'; import { INodeProps } from './Node'; import { ResizableProps } from 're-resizable'; import 'document.contains'; import './styles.less'; /** * 表示组件支持通过 className 和 style 进行样式定制 */ export interface StyledProps { /** * 组件自定义类名 */ className?: string; /** * 组件自定义样式 */ style?: React.CSSProperties; } export interface INode { id: string; position: NodePosition; render: (props: { node: INode; style: React.CSSProperties; [propKey: string]: any; }) => React.ReactElement; disabled?: boolean; minHeight?: number; minWidth?: number; style?: React.CSSProperties; [extendPropName: string]: any; } export declare type DirectionKey = 'x' | 'y'; export interface NodePosition { x: number; y: number; w: number; h: number; } export interface NodePositionData { i?: number; x: number; y: number; w: number; h: number; l: number; r: number; t: number; b: number; lr: number; tb: number; } export declare type Direction = 'l' | 'r' | 't' | 'b'; export declare const DefaultDirections: { x: string[]; y: string[]; }; export interface IContainer { nodes: INode[]; onChange?: (nodes: INode[]) => any; onNodeMove?: (id: string, position: NodePosition, nodeIndex: number) => any; containerStyle?: React.CSSProperties; containerClassName?: string; nodeStyle?: React.CSSProperties; nodeClassName?: string; resizableProps?: ResizableProps; activeNodeId?: string; hoverNodeId?: string; onClickNode?: INodeProps['onClick']; containerRef?: MutableRefObject; mapNodeProps?: (node: INode, index: number) => any; paddingSnap?: number | number[]; } export declare function unique(array: any, compare?: (a: any, b: any) => boolean): any[]; export declare function Container({ nodes, onChange, onNodeMove, containerStyle, containerClassName, nodeStyle, nodeClassName, resizableProps, activeNodeId, hoverNodeId, onClickNode, containerRef, mapNodeProps, paddingSnap, }: IContainer): JSX.Element;