@primer/react
Version:
An implementation of GitHub's Primer Design System using React
167 lines (166 loc) • 4.52 kB
JavaScript
import { useProvidedRefOrCreate } from "../hooks/useProvidedRefOrCreate.js";
import { useProvidedStateOrCreate } from "../hooks/useProvidedStateOrCreate.js";
import { ButtonComponent } from "../Button/Button.js";
import { AnchoredOverlay } from "../AnchoredOverlay/AnchoredOverlay.js";
import { Item } from "./ActionList/Item.js";
import { Divider } from "./ActionList/Divider.js";
import { List } from "./ActionList/List.js";
import { c } from "react-compiler-runtime";
import { jsx } from "react/jsx-runtime";
import "react";
//#region src/deprecated/ActionMenu.tsx
const ActionMenuItem = (props) => {
const $ = c(2);
let t0;
if ($[0] !== props) {
t0 = /*#__PURE__*/ jsx(Item, {
role: "menuitem",
...props
});
$[0] = props;
$[1] = t0;
} else t0 = $[1];
return t0;
};
ActionMenuItem.displayName = "ActionMenu.Item";
const defaultRenderAnchor = (props) => /*#__PURE__*/ jsx(ButtonComponent, { ...props });
defaultRenderAnchor.displayName = "defaultRenderAnchor";
const ActionMenuBase = (t0) => {
const $ = c(35);
let anchorContent;
let externalAnchorRef;
let items;
let listProps;
let onAction;
let open;
let overlayProps;
let setOpen;
let t1;
if ($[0] !== t0) {
({anchorContent, renderAnchor: t1, anchorRef: externalAnchorRef, onAction, open, setOpen, overlayProps, items, ...listProps} = t0);
$[0] = t0;
$[1] = anchorContent;
$[2] = externalAnchorRef;
$[3] = items;
$[4] = listProps;
$[5] = onAction;
$[6] = open;
$[7] = overlayProps;
$[8] = setOpen;
$[9] = t1;
} else {
anchorContent = $[1];
externalAnchorRef = $[2];
items = $[3];
listProps = $[4];
onAction = $[5];
open = $[6];
overlayProps = $[7];
setOpen = $[8];
t1 = $[9];
}
const renderAnchor = t1 === void 0 ? defaultRenderAnchor : t1;
const [combinedOpenState, setCombinedOpenState] = useProvidedStateOrCreate(open, setOpen, false);
const anchorRef = useProvidedRefOrCreate(externalAnchorRef);
let t2;
if ($[10] !== setCombinedOpenState) {
t2 = () => setCombinedOpenState(true);
$[10] = setCombinedOpenState;
$[11] = t2;
} else t2 = $[11];
const onOpen = t2;
let t3;
if ($[12] !== setCombinedOpenState) {
t3 = () => setCombinedOpenState(false);
$[12] = setCombinedOpenState;
$[13] = t3;
} else t3 = $[13];
const onClose = t3;
let t4;
bb0: {
if (renderAnchor === null) {
t4 = null;
break bb0;
}
let t5;
if ($[14] !== anchorContent || $[15] !== renderAnchor) {
t5 = (props) => renderAnchor({
"aria-label": "menu",
children: anchorContent,
...props
});
$[14] = anchorContent;
$[15] = renderAnchor;
$[16] = t5;
} else t5 = $[16];
t4 = t5;
}
const renderMenuAnchor = t4;
let t5;
if ($[17] !== items || $[18] !== onAction || $[19] !== onClose) {
let t6;
if ($[21] !== onAction || $[22] !== onClose) {
t6 = (item) => ({
...item,
role: "menuitem",
onAction: (props_0, event) => {
var _item$onAction;
const actionCallback = (_item$onAction = item.onAction) !== null && _item$onAction !== void 0 ? _item$onAction : onAction;
actionCallback === null || actionCallback === void 0 || actionCallback(props_0, event);
if (!event.defaultPrevented) onClose();
}
});
$[21] = onAction;
$[22] = onClose;
$[23] = t6;
} else t6 = $[23];
t5 = items.map(t6);
$[17] = items;
$[18] = onAction;
$[19] = onClose;
$[20] = t5;
} else t5 = $[20];
const itemsToRender = t5;
let t6;
if ($[24] !== itemsToRender || $[25] !== listProps) {
t6 = /*#__PURE__*/ jsx(List, {
...listProps,
role: "menu",
items: itemsToRender
});
$[24] = itemsToRender;
$[25] = listProps;
$[26] = t6;
} else t6 = $[26];
let t7;
if ($[27] !== anchorRef || $[28] !== combinedOpenState || $[29] !== onClose || $[30] !== onOpen || $[31] !== overlayProps || $[32] !== renderMenuAnchor || $[33] !== t6) {
t7 = /*#__PURE__*/ jsx(AnchoredOverlay, {
renderAnchor: renderMenuAnchor,
anchorRef,
open: combinedOpenState,
onOpen,
onClose,
overlayProps,
children: t6
});
$[27] = anchorRef;
$[28] = combinedOpenState;
$[29] = onClose;
$[30] = onOpen;
$[31] = overlayProps;
$[32] = renderMenuAnchor;
$[33] = t6;
$[34] = t7;
} else t7 = $[34];
return t7;
};
ActionMenuBase.displayName = "ActionMenu";
/**
* @deprecated Use ActionMenu with composable API instead. See https://primer.style/react/ActionMenu for more details.
*/
const ActionMenu = Object.assign(ActionMenuBase, {
Divider,
Item: ActionMenuItem
});
//#endregion
export { ActionMenu };