UNPKG

@primer/react

Version:

An implementation of GitHub's Primer Design System using React

167 lines (166 loc) 4.52 kB
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 };