import React, { ForwardedRef, forwardRef } from 'react' import { useMergeRefs } from '@lidofinance/hooks' import { Transition } from 'react-transition-group' import { DEFAULT_DURATION } from './constants' import { TransitionWrapperProps, TransitionInnerProps } from './types' type WrappedProps = Omit & TransitionWrapperProps export default function withTransition< P extends TransitionInnerProps, E extends HTMLElement >( Component: React.ComponentType

): React.ForwardRefExoticComponent< React.PropsWithoutRef> & React.RefAttributes > { function Wrapped(props: WrappedProps

, externalRef: ForwardedRef) { const { in: state = false, timeout = DEFAULT_DURATION, mountOnEnter = true, unmountOnExit = true, appear = true, enter = true, exit = true, addEndListener, onEnter, onEntering, onEntered, onExit, onExiting, onExited, ...rest } = props const transitionProps = { in: state, timeout, mountOnEnter, unmountOnExit, appear, enter, exit, addEndListener, onEnter, onEntering, onEntered, onExit, onExiting, onExited, } const ref = useMergeRefs([externalRef]) return ( {(status) => ( )} ) } return forwardRef(Wrapped) }