@primer/react
Version:
An implementation of GitHub's Primer Design System using React
44 lines (43 loc) • 1.32 kB
JavaScript
import { c } from "react-compiler-runtime";
import { useEffect } from "react";
import { iterateFocusableElements } from "@primer/behaviors/utils";
//#region src/hooks/useOpenAndCloseFocus.ts
function useOpenAndCloseFocus(t0) {
const $ = c(6);
const { initialFocusRef, returnFocusRef, containerRef, preventFocusOnOpen } = t0;
let t1;
let t2;
if ($[0] !== containerRef || $[1] !== initialFocusRef || $[2] !== preventFocusOnOpen || $[3] !== returnFocusRef) {
t1 = () => {
if (!preventFocusOnOpen) {
if (initialFocusRef && initialFocusRef.current) initialFocusRef.current.focus();
else if (containerRef.current) {
const firstItem = iterateFocusableElements(containerRef.current).next().value;
firstItem === null || firstItem === void 0 || firstItem.focus();
}
}
const returnFocusRefCurrent = returnFocusRef.current;
return function() {
returnFocusRefCurrent === null || returnFocusRefCurrent === void 0 || returnFocusRefCurrent.focus();
};
};
t2 = [
initialFocusRef,
returnFocusRef,
containerRef,
preventFocusOnOpen
];
$[0] = containerRef;
$[1] = initialFocusRef;
$[2] = preventFocusOnOpen;
$[3] = returnFocusRef;
$[4] = t1;
$[5] = t2;
} else {
t1 = $[4];
t2 = $[5];
}
useEffect(t1, t2);
}
//#endregion
export { useOpenAndCloseFocus };