@lesnoypudge/utils-react
Version:
lesnoypudge's utils-react
34 lines (33 loc) • 937 B
JavaScript
import { useFunction } from "../../../../hooks/useFunction/useFunction.js";
import { isCallable } from "@lesnoypudge/utils";
import { useRef } from "react";
import { FocusOn } from "react-focus-on";
import { jsx } from "react/jsx-runtime";
const FocusLock = ({
children,
innerRef,
onActivation,
returnFocus,
...lockProps
}) => {
const isActivatedRef = useRef(false);
const returnFocusFn = useFunction((node) => {
if (!isActivatedRef.current) return false;
return isCallable(returnFocus) ? returnFocus(node) : returnFocus ?? false;
});
const _onActivation = useFunction((node) => {
isActivatedRef.current = true;
return onActivation == null ? void 0 : onActivation(node);
});
return /* @__PURE__ */ jsx(FocusOn, {
returnFocus: returnFocusFn,
onActivation: _onActivation,
ref: innerRef,
...lockProps,
children
});
};
export {
FocusLock
};
//# sourceMappingURL=FocusLock.js.map