@primer/react
Version:
An implementation of GitHub's Primer Design System using React
130 lines (127 loc) • 2.83 kB
JavaScript
import { c } from 'react-compiler-runtime';
import React from 'react';
import { clsx } from 'clsx';
import classes from './TokenBase.module.css.js';
import { jsx } from 'react/jsx-runtime';
const defaultTokenSize = 'medium';
const isTokenInteractive = ({
as = 'span',
onClick,
onFocus,
tabIndex = -1,
disabled
}) => {
if (disabled) {
return false;
}
return Boolean(onFocus || onClick || tabIndex > -1 || ['a', 'button'].includes(as));
};
const TokenBase = /*#__PURE__*/React.forwardRef((t0, forwardedRef) => {
const $ = c(25);
let Component;
let T0;
let id;
let rest;
let size;
let t1;
let t2;
let t3;
if ($[0] !== t0) {
const {
onRemove,
onKeyDown,
id: t4,
className,
size: t5,
isSelected: _isSelected,
as: t6,
...t7
} = t0;
id = t4;
rest = t7;
size = t5 === undefined ? defaultTokenSize : t5;
Component = t6 === undefined ? "span" : t6;
T0 = Component;
if ($[9] !== onKeyDown || $[10] !== onRemove) {
t1 = event => {
onKeyDown && onKeyDown(event);
if ((event.key === "Backspace" || event.key === "Delete") && onRemove) {
onRemove();
}
};
$[9] = onKeyDown;
$[10] = onRemove;
$[11] = t1;
} else {
t1 = $[11];
}
if ($[12] !== className) {
t2 = clsx(classes.TokenBase, className);
$[12] = className;
$[13] = t2;
} else {
t2 = $[13];
}
t3 = isTokenInteractive({
as: Component,
onClick: rest.onClick,
onFocus: rest.onFocus,
tabIndex: rest.tabIndex,
disabled: rest.disabled
});
$[0] = t0;
$[1] = Component;
$[2] = T0;
$[3] = id;
$[4] = rest;
$[5] = size;
$[6] = t1;
$[7] = t2;
$[8] = t3;
} else {
Component = $[1];
T0 = $[2];
id = $[3];
rest = $[4];
size = $[5];
t1 = $[6];
t2 = $[7];
t3 = $[8];
}
let t4;
if ($[14] !== id) {
var _id;
t4 = (_id = id) === null || _id === void 0 ? void 0 : _id.toString();
$[14] = id;
$[15] = t4;
} else {
t4 = $[15];
}
const t5 = Component === "button" ? rest : Component === "a" ? rest : rest;
const t6 = forwardedRef;
let t7;
if ($[16] !== T0 || $[17] !== size || $[18] !== t1 || $[19] !== t2 || $[20] !== t3 || $[21] !== t4 || $[22] !== t5 || $[23] !== t6) {
t7 = /*#__PURE__*/jsx(T0, {
onKeyDown: t1,
className: t2,
"data-cursor-is-interactive": t3,
"data-size": size,
id: t4,
...t5,
ref: t6
});
$[16] = T0;
$[17] = size;
$[18] = t1;
$[19] = t2;
$[20] = t3;
$[21] = t4;
$[22] = t5;
$[23] = t6;
$[24] = t7;
} else {
t7 = $[24];
}
return t7;
});
export { TokenBase as default, defaultTokenSize, isTokenInteractive };