UNPKG

@modern-kit/react

Version:
35 lines (31 loc) 1.12 kB
'use strict'; var utils = require('@modern-kit/utils'); var React = require('react'); var hooksUseEventListener = require('../useEventListener/index.cjs'); var hooksUsePreservedCallback = require('../usePreservedCallback/index.cjs'); require('../useIsomorphicLayoutEffect/index.cjs'); function useFocus({ onFocus = utils.noop, onBlur = utils.noop } = {}) { const [isFocus, setIsFocus] = React.useState(false); const ref = React.useRef(null); const preservedFocusAction = hooksUsePreservedCallback.usePreservedCallback((event) => { setIsFocus(true); onFocus(event); }); const preservedBlurAction = hooksUsePreservedCallback.usePreservedCallback((event) => { setIsFocus(false); onBlur(event); }); const setFocus = React.useCallback(() => { if (!ref.current) return; ref.current.focus(); setIsFocus(true); }, []); hooksUseEventListener.useEventListener(ref, "focus", preservedFocusAction); hooksUseEventListener.useEventListener(ref, "blur", preservedBlurAction); return { ref, isFocus, setFocus }; } exports.useFocus = useFocus; //# sourceMappingURL=index.cjs.map