UNPKG

@primer/react

Version:

An implementation of GitHub's Primer Design System using React

198 lines (194 loc) • 4.97 kB
import { c } from 'react-compiler-runtime'; import { List } from './ActionList/List.js'; import { Item } from './ActionList/Item.js'; import { Divider } from './ActionList/Divider.js'; import 'react'; import { useProvidedStateOrCreate } from '../hooks/useProvidedStateOrCreate.js'; import { jsx } from 'react/jsx-runtime'; import { useProvidedRefOrCreate } from '../hooks/useProvidedRefOrCreate.js'; import { ButtonComponent } from '../Button/Button.js'; import { AnchoredOverlay } from '../AnchoredOverlay/AnchoredOverlay.js'; 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 === undefined ? 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 ? 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: anchorRef, open: combinedOpenState, onOpen: onOpen, onClose: onClose, overlayProps: 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 }); export { ActionMenu };