{
if (!hoverOpen) return;
window.clearTimeout(timeoutRef.current);
window.clearTimeout(openTimeoutRef.current);
openTimeoutRef.current = setTimeout(() => {
externalSetOpen?.(true);
setOpen(true);
}, openDebounce);
}}
onMouseLeave={(e) => {
if (!hoverOpen) return;
window.clearTimeout(openTimeoutRef.current);
timeoutRef.current = setTimeout(() => {
externalSetOpen?.(false);
setOpen(false);
}, debounce);
}}
onBlur={() => {
window.clearTimeout(timeoutRef.current);
}}
ref={dropdownRef}
>
{
const targetEl = e.target as HTMLElement | null;
if (targetEl?.closest?.(".cancel-link")) return;
if (disableClickActions) return;
externalSetOpen?.(!open);
setOpen(!open);
}}
className={twMerge(
"cursor-pointer",
"twui-dropdown-target",
targetWrapperProps?.className,
)}
>
{target}
{mounted &&
ReactDOM.createPortal(
{
if (!hoverOpen) return;
window.clearTimeout(timeoutRef.current);
}}
onBlur={() => {
if (!hoverOpen) return;
window.clearTimeout(timeoutRef.current);
}}
style={{
...contentStyle,
...contentWrapperProps?.style,
}}
ref={dropdownContentRef}
>
{props.children}
,
document.body,
)}
);
}