UNPKG

@restart/ui

Version:

Utilities for creating robust overlay components

33 lines 914 B
import useEventCallback from '@restart/hooks/useEventCallback'; import useMergedRefs from '@restart/hooks/useMergedRefs'; import { cloneElement, useEffect, useRef } from 'react'; import { getChildRef } from './utils'; function NoopTransition({ children, in: inProp, onExited, mountOnEnter, unmountOnExit }) { const ref = useRef(null); const hasEnteredRef = useRef(inProp); const handleExited = useEventCallback(onExited); useEffect(() => { if (inProp) hasEnteredRef.current = true;else { handleExited(ref.current); } }, [inProp, handleExited]); const combinedRef = useMergedRefs(ref, getChildRef(children)); const child = /*#__PURE__*/cloneElement(children, { ref: combinedRef }); if (inProp) return child; if (unmountOnExit) { return null; } if (!hasEnteredRef.current && mountOnEnter) { return null; } return child; } export default NoopTransition;