import React, { useEffect, useState } from 'react'; import { Transition } from '@douyinfe/semi-animation-react'; import PropTypes from 'prop-types'; const formatStyle = function formatStyle({ rotate = 0 }) { return { transform: `rotate(${Math.ceil(rotate)}deg)`, }; }; export interface OpenIconTransitionProps { children?: React.ReactNode; isOpen?: boolean; } function OpenIconTransition(props: OpenIconTransitionProps = {}) { const { children, isOpen } = props; const [immediate, setImmediate] = useState(true); useEffect(() => { setImmediate(false); }, []); return ( {(transitionStyle: any) => { const formatedStyle = formatStyle(transitionStyle); if (typeof children === 'function') { return children(formatedStyle); } if (React.isValidElement(children)) { return React.cloneElement(children, { style: { ...(children.props && children.props.style), ...formatedStyle, }, }); } return children; }} ); } OpenIconTransition.propTypes = { isOpen: PropTypes.bool.isRequired, children: PropTypes.any.isRequired, }; export default OpenIconTransition;