import type { FC } from '../../lib/teact/teact'; import React, { useRef } from '../../lib/teact/teact'; import useShowTransition from '../../hooks/useShowTransition'; import usePrevious from '../../hooks/usePrevious'; import buildClassName from '../../util/buildClassName'; type OwnProps = { isOpen: boolean; isCustom?: boolean; id?: string; className?: string; onClick?: (e: React.MouseEvent) => void; children: React.ReactNode; }; const ShowTransition: FC = ({ isOpen, isCustom, id, className, onClick, children, }) => { const { shouldRender, transitionClassNames } = useShowTransition( isOpen, undefined, undefined, isCustom ? false : undefined, ); const prevIsOpen = usePrevious(isOpen); const prevChildren = usePrevious(children); const fromChildrenRef = useRef(); if (prevIsOpen && !isOpen) { fromChildrenRef.current = prevChildren; } return ( shouldRender && (
{isOpen ? children : fromChildrenRef.current!}
) ); }; export default ShowTransition;