carbon-react
Version:
A library of reusable React components for easily building user interfaces.
2 lines (1 loc) • 672 B
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");exports.default=u=>{const[o,s]=e.useState(!1),[r,a]=e.useState(!1),l=e.useRef(null),t=e.useCallback((()=>s(!0)),[]),n=e.useCallback((()=>s(!1)),[]),c=e.useCallback((e=>{l.current=e.current}),[]),i=e.useCallback((()=>{requestAnimationFrame((()=>{var e;null==l||null===(e=l.current)||void 0===e||e.focus({preventScroll:!0})}))}),[]),v=e.useCallback((()=>a(!0)),[]),d=e.useCallback((()=>a(!1)),[]);return e.useMemo((()=>({hasFocus:o,hasMouseOver:r,onFocus:u?void 0:t,onBlur:u?void 0:n,onMouseDown:i,onMouseEnter:u?void 0:v,onMouseLeave:u?void 0:d,inputRef:c})),[o,r,t,n,i,u,v,d,c])};