import React, { MouseEvent } from 'react' import useTheme from '../use-theme' import CssTransition from './css-transition' import useCurrentState from '../utils/use-current-state' interface Props { onClick?: (event: MouseEvent) => void visible?: boolean width?: string onContentClick?: (event: MouseEvent) => void } const defaultProps = { onClick: () => {}, visible: false, onContentClick: () => {}, } type NativeAttrs = Omit, keyof Props> export type BackdropProps = Props & NativeAttrs const Backdrop: React.FC> = React.memo( ({ children, onClick, visible, width, onContentClick, ...props }: React.PropsWithChildren & typeof defaultProps) => { const theme = useTheme() const [, setIsContentMouseDown, IsContentMouseDownRef] = useCurrentState(false) const clickHandler = (event: MouseEvent) => { if (IsContentMouseDownRef.current) return onClick && onClick(event) } const mouseUpHandler = () => { if (!IsContentMouseDownRef.current) return const timer = setTimeout(() => { setIsContentMouseDown(false) clearTimeout(timer) }, 0) } return (
setIsContentMouseDown(true)}> {children}
) }, ) Backdrop.defaultProps = defaultProps Backdrop.displayName = 'GeistBackdrop' export default Backdrop