UNPKG

@primer/react

Version:

An implementation of GitHub's Primer Design System using React

103 lines (100 loc) 2.33 kB
import { c } from 'react-compiler-runtime'; import React from 'react'; import classes from './ButtonGroup.module.css.js'; import { clsx } from 'clsx'; import { useFocusZone } from '../hooks/useFocusZone.js'; import { jsx } from 'react/jsx-runtime'; import { useProvidedRefOrCreate } from '../hooks/useProvidedRefOrCreate.js'; import { FocusKeys } from '@primer/behaviors'; const ButtonGroup = /*#__PURE__*/React.forwardRef(function ButtonGroup(t0, forwardRef) { const $ = c(20); let children; let className; let rest; let role; let t1; if ($[0] !== t0) { ({ as: t1, children, className, role, ...rest } = t0); $[0] = t0; $[1] = children; $[2] = className; $[3] = rest; $[4] = role; $[5] = t1; } else { children = $[1]; className = $[2]; rest = $[3]; role = $[4]; t1 = $[5]; } const BaseComponent = t1 === undefined ? "div" : t1; let t2; if ($[6] !== children) { t2 = React.Children.map(children, _temp); $[6] = children; $[7] = t2; } else { t2 = $[7]; } const buttons = t2; const buttonRef = useProvidedRefOrCreate(forwardRef); const t3 = role !== "toolbar"; let t4; if ($[8] !== buttonRef || $[9] !== t3) { t4 = { containerRef: buttonRef, disabled: t3, bindKeys: FocusKeys.ArrowHorizontal, focusOutBehavior: "wrap" }; $[8] = buttonRef; $[9] = t3; $[10] = t4; } else { t4 = $[10]; } useFocusZone(t4); let t5; if ($[11] !== className) { t5 = clsx(className, classes.ButtonGroup); $[11] = className; $[12] = t5; } else { t5 = $[12]; } let t6; if ($[13] !== BaseComponent || $[14] !== buttonRef || $[15] !== buttons || $[16] !== rest || $[17] !== role || $[18] !== t5) { t6 = /*#__PURE__*/jsx(BaseComponent, { ref: buttonRef, className: t5, role: role, ...rest, children: buttons }); $[13] = BaseComponent; $[14] = buttonRef; $[15] = buttons; $[16] = rest; $[17] = role; $[18] = t5; $[19] = t6; } else { t6 = $[19]; } return t6; }); ButtonGroup.displayName = 'ButtonGroup'; function _temp(child, index) { return /*#__PURE__*/jsx("div", { children: child }, index); } _temp.displayName = "_temp"; export { ButtonGroup as default };