@primer/react
Version:
An implementation of GitHub's Primer Design System using React
78 lines (75 loc) • 1.8 kB
JavaScript
import { c } from 'react-compiler-runtime';
import { useOnOutsideClick } from './useOnOutsideClick.js';
import { useOpenAndCloseFocus } from './useOpenAndCloseFocus.js';
import { useOnEscapePress } from './useOnEscapePress.js';
import { useProvidedRefOrCreate } from './useProvidedRefOrCreate.js';
const useOverlay = t0 => {
const $ = c(13);
const {
overlayRef: _overlayRef,
returnFocusRef,
initialFocusRef,
onEscape,
ignoreClickRefs,
onClickOutside,
preventFocusOnOpen
} = t0;
const overlayRef = useProvidedRefOrCreate(_overlayRef);
let t1;
if ($[0] !== initialFocusRef || $[1] !== overlayRef || $[2] !== preventFocusOnOpen || $[3] !== returnFocusRef) {
t1 = {
containerRef: overlayRef,
returnFocusRef,
initialFocusRef,
preventFocusOnOpen
};
$[0] = initialFocusRef;
$[1] = overlayRef;
$[2] = preventFocusOnOpen;
$[3] = returnFocusRef;
$[4] = t1;
} else {
t1 = $[4];
}
useOpenAndCloseFocus(t1);
let t2;
if ($[5] !== ignoreClickRefs || $[6] !== onClickOutside || $[7] !== overlayRef) {
t2 = {
containerRef: overlayRef,
ignoreClickRefs,
onClickOutside
};
$[5] = ignoreClickRefs;
$[6] = onClickOutside;
$[7] = overlayRef;
$[8] = t2;
} else {
t2 = $[8];
}
useOnOutsideClick(t2);
let t3;
if ($[9] !== onEscape) {
t3 = event => {
onEscape(event);
event.preventDefault();
};
$[9] = onEscape;
$[10] = t3;
} else {
t3 = $[10];
}
const preventeddefaultCheckedEscape = t3;
useOnEscapePress(preventeddefaultCheckedEscape);
let t4;
if ($[11] !== overlayRef) {
t4 = {
ref: overlayRef
};
$[11] = overlayRef;
$[12] = t4;
} else {
t4 = $[12];
}
return t4;
};
export { useOverlay };