12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
- import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
- var _excluded = ["icon", "className", "onClick", "style", "primaryColor", "secondaryColor"];
- import * as React from 'react';
- import { generate, getSecondaryColor, isIconDefinition, warning, useInsertStyles } from "../utils";
- var twoToneColorPalette = {
- primaryColor: '#333',
- secondaryColor: '#E6E6E6',
- calculated: false
- };
- function setTwoToneColors(_ref) {
- var primaryColor = _ref.primaryColor,
- secondaryColor = _ref.secondaryColor;
- twoToneColorPalette.primaryColor = primaryColor;
- twoToneColorPalette.secondaryColor = secondaryColor || getSecondaryColor(primaryColor);
- twoToneColorPalette.calculated = !!secondaryColor;
- }
- function getTwoToneColors() {
- return _objectSpread({}, twoToneColorPalette);
- }
- var IconBase = function IconBase(props) {
- var icon = props.icon,
- className = props.className,
- onClick = props.onClick,
- style = props.style,
- primaryColor = props.primaryColor,
- secondaryColor = props.secondaryColor,
- restProps = _objectWithoutProperties(props, _excluded);
- var svgRef = React.useRef();
- var colors = twoToneColorPalette;
- if (primaryColor) {
- colors = {
- primaryColor: primaryColor,
- secondaryColor: secondaryColor || getSecondaryColor(primaryColor)
- };
- }
- useInsertStyles(svgRef);
- warning(isIconDefinition(icon), "icon should be icon definiton, but got ".concat(icon));
- if (!isIconDefinition(icon)) {
- return null;
- }
- var target = icon;
- if (target && typeof target.icon === 'function') {
- target = _objectSpread(_objectSpread({}, target), {}, {
- icon: target.icon(colors.primaryColor, colors.secondaryColor)
- });
- }
- return generate(target.icon, "svg-".concat(target.name), _objectSpread(_objectSpread({
- className: className,
- onClick: onClick,
- style: style,
- 'data-icon': target.name,
- width: '1em',
- height: '1em',
- fill: 'currentColor',
- 'aria-hidden': 'true'
- }, restProps), {}, {
- ref: svgRef
- }));
- };
- IconBase.displayName = 'IconReact';
- IconBase.getTwoToneColors = getTwoToneColors;
- IconBase.setTwoToneColors = setTwoToneColors;
- export default IconBase;
|