Files
2026-11-12 06:29:38 +08:00

2 lines
1.6 KiB
JavaScript

import{ba as T,ap as P,bb as x}from"./index-DiaaLdUu.js";import{r as i}from"./react-vendor-jWT2yUdV.js";let g=!1,f=0;function G(){g=!0,setTimeout(()=>{g=!1},50)}function b(u){u.pointerType==="touch"&&G()}function L(){if(!(typeof document>"u"))return f===0&&typeof PointerEvent<"u"&&document.addEventListener("pointerup",b),f++,()=>{f--,!(f>0)&&typeof PointerEvent<"u"&&document.removeEventListener("pointerup",b)}}function C(u){let{onHoverStart:s,onHoverChange:o,onHoverEnd:d,isDisabled:n}=u,[m,$]=i.useState(!1),e=i.useRef({isHovered:!1,ignoreEmulatedMouseEvents:!1,pointerType:"",target:null}).current;i.useEffect(L,[]);let{addGlobalListener:c,removeAllGlobalListeners:E}=T(),{hoverProps:H,triggerHoverEnd:h}=i.useMemo(()=>{let y=(t,r)=>{if(e.pointerType=r,n||r==="touch"||e.isHovered||!t.currentTarget.contains(t.target))return;e.isHovered=!0;let a=t.currentTarget;e.target=a,c(P(t.target),"pointerover",p=>{e.isHovered&&e.target&&!x(e.target,p.target)&&l(p,p.pointerType)},{capture:!0}),s&&s({type:"hoverstart",target:a,pointerType:r}),o&&o(!0),$(!0)},l=(t,r)=>{let a=e.target;e.pointerType="",e.target=null,!(r==="touch"||!e.isHovered||!a)&&(e.isHovered=!1,E(),d&&d({type:"hoverend",target:a,pointerType:r}),o&&o(!1),$(!1))},v={};return typeof PointerEvent<"u"&&(v.onPointerEnter=t=>{g&&t.pointerType==="mouse"||y(t,t.pointerType)},v.onPointerLeave=t=>{!n&&t.currentTarget.contains(t.target)&&l(t,t.pointerType)}),{hoverProps:v,triggerHoverEnd:l}},[s,o,d,n,e,c,E]);return i.useEffect(()=>{n&&h({currentTarget:e.target},e.pointerType)},[n]),{hoverProps:H,isHovered:m}}export{C as $};