@styleless-ui/react
Version:
Completely unstyled, headless and accessible React UI components.
1 lines • 2.37 kB
JavaScript
;var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var u=Object.getOwnPropertyDescriptor(t,r);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,u)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&__createBinding(t,e,r);return __setModuleDefault(t,e),t};Object.defineProperty(exports,"__esModule",{value:!0});var React=__importStar(require("react")),_1=require("."),useButtonBase=function(e){var t=e.onBlur,r=e.onFocus,n=e.onKeyDown,u=e.onKeyUp,c=e.onClick,o=e.autoFocus,a=void 0!==o&&o,l=e.disabled,i=void 0!==l&&l,s=(0,_1.useIsMounted)(),f=(0,_1.useIsFocusVisible)(),d=f.isFocusVisibleRef,_=f.onBlur,v=f.onFocus,b=f.ref,p=React.useRef(),y=(0,_1.useForkedRefs)(p,b),k=React.useRef(!1),h=React.useRef(!1),g=React.useState((function(){return!i&&a})),R=g[0],B=g[1];i&&R&&B(!1),React.useEffect((function(){d.current=R})),(0,_1.useIsomorphicLayoutEffect)((function(){var e;R&&(null===(e=p.current)||void 0===e||e.focus())}),[]);var C=(0,_1.useEventCallback)((function(e){e.preventDefault(),!i&&s()&&(null==c||c(e))})),w=(0,_1.useEventCallback)((function(e){!i&&s()&&(p.current||(p.current=e.currentTarget),v(e),d.current&&B(!0),null==r||r(e))})),O=(0,_1.useEventCallback)((function(e){!i&&s()&&(_(e),!1===d.current&&B(!1),null==t||t(e))})),D=(0,_1.useEventCallback)((function(e){!i&&s()&&(R&&(!1===k.current&&" "===e.key&&(k.current=!0),!1===h.current&&"enter"===e.key.toLowerCase()&&(h.current=!0)),e.target===e.currentTarget&&[" ","enter"].includes(e.key.toLowerCase())&&e.preventDefault(),null==n||n(e))})),F=(0,_1.useEventCallback)((function(e){!i&&s()&&(R&&(" "===e.key&&(k.current=!1),"enter"===e.key.toLowerCase()&&(h.current=!1)),null==u||u(e),e.target===e.currentTarget&&[" ","enter"].includes(e.key.toLowerCase())&&e.target.click())}));return{isFocusedVisible:R,handleBlur:O,handleClick:C,handleFocus:w,handleKeyDown:D,handleKeyUp:F,handleButtonRef:y}};exports.default=useButtonBase;