import type { FC, ReactElement } from 'react' import { createContext, useContext, useEffect, useRef, useState } from 'react' import { FromBottom, type FromBottomProps } from './FromBottom' import { FromLeft, type FromLeftProps } from './FromLeft' import { FromRight, type FromRightProps } from './FromRight' import { FromTop, type FromTopProps } from './FromTop' interface RootProps { children: ReactElement | Array } const SlideInContext = createContext(undefined) export const Root: FC = ({ children }) => { const ref = useRef(null) const [render, setRender] = useState(false) useEffect(() => { if (ref.current) setRender(true) }, []) return ( {render && children}
) } export function useSlideInContext() { return useContext(SlideInContext) } export const SlideIn: FC & { FromLeft: FC FromRight: FC FromBottom: FC FromTop: FC } = Object.assign(Root, { FromLeft, FromRight, FromBottom, FromTop, })