UNPKG

@primer/react

Version:

An implementation of GitHub's Primer Design System using React

44 lines (43 loc) 1.32 kB
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 };