@primer/react
Version:
An implementation of GitHub's Primer Design System using React
134 lines (133 loc) • 3.47 kB
JavaScript
import { useOnOutsideClick } from "../hooks/useOnOutsideClick.js";
import Popover_module_css_default from "./Popover.module.css.js";
import { c } from "react-compiler-runtime";
import { clsx } from "clsx";
import { jsx } from "react/jsx-runtime";
import React, { useRef } from "react";
//#region src/Popover/Popover.tsx
const EMPTY_IGNORE_CLICK_REFS = [];
const Popover = /*#__PURE__*/ React.forwardRef(function Popover(t0, forwardRef) {
const $ = c(15);
let className;
let open;
let props;
let relative;
let t1;
if ($[0] !== t0) {
({className, caret: t1, open, relative, ...props} = t0);
$[0] = t0;
$[1] = className;
$[2] = open;
$[3] = props;
$[4] = relative;
$[5] = t1;
} else {
className = $[1];
open = $[2];
props = $[3];
relative = $[4];
t1 = $[5];
}
const caret = t1 === void 0 ? "top" : t1;
const t2 = open ? "" : void 0;
const t3 = relative ? "" : void 0;
let t4;
if ($[6] !== className) {
t4 = clsx(className, Popover_module_css_default.Popover);
$[6] = className;
$[7] = t4;
} else t4 = $[7];
let t5;
if ($[8] !== caret || $[9] !== forwardRef || $[10] !== props || $[11] !== t2 || $[12] !== t3 || $[13] !== t4) {
t5 = /*#__PURE__*/ jsx("div", {
...props,
ref: forwardRef,
"data-component": "Popover",
"data-open": t2,
"data-relative": t3,
"data-caret": caret,
className: t4
});
$[8] = caret;
$[9] = forwardRef;
$[10] = props;
$[11] = t2;
$[12] = t3;
$[13] = t4;
$[14] = t5;
} else t5 = $[14];
return t5;
});
Popover.displayName = "Popover";
const PopoverContent = (t0) => {
var _onClickOutside, _ignoreClickRefs;
const $ = c(17);
let className;
let ignoreClickRefs;
let onClickOutside;
let props;
let t1;
let t2;
if ($[0] !== t0) {
({className, width: t1, height: t2, onClickOutside, ignoreClickRefs, ...props} = t0);
$[0] = t0;
$[1] = className;
$[2] = ignoreClickRefs;
$[3] = onClickOutside;
$[4] = props;
$[5] = t1;
$[6] = t2;
} else {
className = $[1];
ignoreClickRefs = $[2];
onClickOutside = $[3];
props = $[4];
t1 = $[5];
t2 = $[6];
}
const width = t1 === void 0 ? "small" : t1;
const height = t2 === void 0 ? "fit-content" : t2;
const divRef = useRef(null);
const outsideClickHandler = (_onClickOutside = onClickOutside) !== null && _onClickOutside !== void 0 ? _onClickOutside : _temp;
const t3 = (_ignoreClickRefs = ignoreClickRefs) !== null && _ignoreClickRefs !== void 0 ? _ignoreClickRefs : EMPTY_IGNORE_CLICK_REFS;
let t4;
if ($[7] !== outsideClickHandler || $[8] !== t3) {
t4 = {
onClickOutside: outsideClickHandler,
containerRef: divRef,
ignoreClickRefs: t3
};
$[7] = outsideClickHandler;
$[8] = t3;
$[9] = t4;
} else t4 = $[9];
useOnOutsideClick(t4);
let t5;
if ($[10] !== className) {
t5 = clsx(className, Popover_module_css_default.PopoverContent);
$[10] = className;
$[11] = t5;
} else t5 = $[11];
let t6;
if ($[12] !== height || $[13] !== props || $[14] !== t5 || $[15] !== width) {
t6 = /*#__PURE__*/ jsx("div", {
ref: divRef,
"data-component": "Popover.Content",
"data-width": width,
"data-height": height,
className: t5,
...props
});
$[12] = height;
$[13] = props;
$[14] = t5;
$[15] = width;
$[16] = t6;
} else t6 = $[16];
return t6;
};
PopoverContent.displayName = "Popover.Content";
var Popover_default = Object.assign(Popover, { Content: PopoverContent });
function _temp() {}
//#endregion
export { Popover_default as default };