@atlaskit/button
Version:
A button triggers an event or action. They let users know what will happen next.
39 lines (36 loc) • 1.4 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
function isIconRenderProp(func) {
return !func.displayName &&
// most function components and class components have a displayName, negate them
!func.render &&
// forwardRef doesn't require a display name, however it does include a render function, negate them
typeof func === 'function' // at the very least we need to be a function
;
}
/**
* __Icon renderer__
*
* Used to support render props with icons.
*
*/
var IconRenderer = function IconRenderer(_ref) {
var Icon = _ref.icon;
var isRenderProp = isIconRenderProp(Icon);
var iconProps = {
label: '',
color: 'currentColor',
size: (0, _platformFeatureFlags.fg)('platform_dst_button_chevron_sizing') ? function (iconName) {
return iconName.startsWith('Chevron') ? 'small' : 'medium';
} : undefined
};
// @ts-ignore - TS2322 TypeScript 5.9.2 upgrade
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, isRenderProp ? Icon(iconProps) : /*#__PURE__*/_react.default.createElement(Icon, iconProps));
};
var _default = exports.default = IconRenderer;