import React from 'react'; export interface StyleTransitionPropsType { appear?: boolean; in?: boolean; /** * 过渡效果的方向 * * @type {('left' | 'right')} */ direction?: 'left' | 'right' | 'up' | 'down'; /** * 子节点 * * @type {Node} */ children?: React.ReactNode; /** * 过渡时长。'auto'表示会根据元素高度自动计算过渡时长 * * @type {(number * | { * enter: number, * exit: number, * })} */ timeout?: 'auto' | number | { enter: number; exit: number; }; /** * 指定过渡时应用的css类名。 */ transitionClasses?: string | { appear?: string; appearActive?: string; enter?: string; enterActive?: string; exit?: string; exitActive?: string; }; easing?: string; onEnter?: (node: HTMLElement, isAccept: boolean) => void; onEntering?: (node: HTMLElement, isAccept: boolean) => void; onEntered?: (node: HTMLElement, isAccept: boolean) => void; onExit?: (node: HTMLElement) => void; onExiting?: (node: HTMLElement) => void; onExited?: (node: HTMLElement) => void; } export interface StyleTransitionOptions { enterStyle: (transition: TransitionInterface, node: HTMLElement, isAppearing: boolean) => React.CSSProperties; enterActiveStyle?: (transition: TransitionInterface, node: HTMLElement, isAppearing: boolean) => React.CSSProperties; enterToStyle: (transition: TransitionInterface, node: HTMLElement, isAppearing: boolean) => React.CSSProperties; exitStyle: (transition: TransitionInterface, node: HTMLElement) => React.CSSProperties; exitActiveStyle?: (transition: TransitionInterface, node: HTMLElement) => React.CSSProperties; exitToStyle: (transition: TransitionInterface, node: HTMLElement) => React.CSSProperties; transitionProps?: string[]; duration?: { enter: number; exit: number; }; easing?: { enter: string; exit: string; }; } export interface TransitionInterface { props: StyleTransitionPropsType; getTimeout: (e: HTMLElement) => { enter: number; exit: number; }; } /** * 创建通过css样式定义过渡效果的过渡组件。 * * 元素入场过渡: 先应用`enterStyle`,一帧(16ms)之后,应用`enterActiveStyle`和`enterToStyle`。 * * 元素出场过渡: 先应用`exitStyle`,一帧(16ms)之后,应用`exitActiveStyle`和`enterToStyle`。 * */ export default function createStyleTransition(options: StyleTransitionOptions, defaultProps?: Props & StyleTransitionPropsType): React.ComponentType;