///
/** Two char of 't' 'b' 'c' 'l' 'r'. Example: 'lt' */
export declare type AlignPoint = string;
export interface AlignType {
/**
* move point of source node to align with point of target node.
* Such as ['tr','cc'], align top right point of source node with center point of target node.
* Point can be 't'(top), 'b'(bottom), 'c'(center), 'l'(left), 'r'(right) */
points?: AlignPoint[];
/**
* offset source node by offset[0] in x and offset[1] in y.
* If offset contains percentage string value, it is relative to sourceNode region.
*/
offset?: number[];
/**
* offset target node by offset[0] in x and offset[1] in y.
* If targetOffset contains percentage string value, it is relative to targetNode region.
*/
targetOffset?: number[];
/**
* If adjustX field is true, will adjust source node in x direction if source node is invisible.
* If adjustY field is true, will adjust source node in y direction if source node is invisible.
*/
overflow?: {
adjustX?: boolean | number;
adjustY?: boolean | number;
};
/**
* Whether use css right instead of left to position
*/
useCssRight?: boolean;
/**
* Whether use css bottom instead of top to position
*/
useCssBottom?: boolean;
/**
* Whether use css transform instead of left/top/right/bottom to position if browser supports.
* Defaults to false.
*/
useCssTransform?: boolean;
ignoreShake?: boolean;
}
export interface BuildInPlacements {
[placement: string]: AlignType;
}
export declare type StretchType = string;
export declare type ActionType = string;
export declare type AnimationType = string;
export declare type TransitionNameType = string;
export interface Point {
pageX: number;
pageY: number;
}
export interface CommonEventHandler {
remove: () => void;
}
declare type MotionStatus = 'none' | 'appear' | 'enter' | 'leave';
declare type MotionActiveStatus = 'appear-active' | 'enter-active' | 'leave-active';
declare type MotionNameObject = {
[key in MotionStatus | MotionActiveStatus]?: string;
};
declare type MotionEventHandler = (element: HTMLElement, event: React.TransitionEvent | React.AnimationEvent | undefined) => React.CSSProperties | false | null | undefined | void;
export interface MotionType {
motionName?: string | MotionNameObject;
motionAppear?: boolean;
motionEnter?: boolean;
motionLeave?: boolean;
motionLeaveImmediately?: boolean;
removeOnLeave?: boolean;
leavedClassName?: string;
onAppearStart?: MotionEventHandler;
onAppearActive?: MotionEventHandler;
onAppearEnd?: MotionEventHandler;
onEnterStart?: MotionEventHandler;
onEnterActive?: MotionEventHandler;
onEnterEnd?: MotionEventHandler;
onLeaveStart?: MotionEventHandler;
onLeaveActive?: MotionEventHandler;
onLeaveEnd?: MotionEventHandler;
}
export interface MotionProps extends MotionType {
visible?: boolean;
children: (props: {
className: string;
style: React.CSSProperties;
}, ref: React.Ref) => React.ReactElement;
}
export declare type CSSMotionClass = React.ComponentClass;
export {};