import { useOnce, useMutable } from '../../react' import { hoverEvent } from './index' import { isF } from '../utils' import type { ReactNode } from 'react' import type { HoverArg, HoverState } from './types' export const useHover = (arg?: HoverArg) => { if (isF(arg)) arg = { hover: arg } const memo = useMutable(arg) return useOnce(() => hoverEvent(memo as any)) } export default useHover export interface HoverProps extends Partial> { children: (state: HoverState) => ReactNode } export const Hover = (props: HoverProps) => { const { children, ...other } = props return children(useHover(other)) }