IconBase.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  3. var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
  4. Object.defineProperty(exports, "__esModule", {
  5. value: true
  6. });
  7. exports.default = void 0;
  8. var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
  9. var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
  10. var React = _interopRequireWildcard(require("react"));
  11. var _utils = require("../utils");
  12. var _excluded = ["icon", "className", "onClick", "style", "primaryColor", "secondaryColor"];
  13. var twoToneColorPalette = {
  14. primaryColor: '#333',
  15. secondaryColor: '#E6E6E6',
  16. calculated: false
  17. };
  18. function setTwoToneColors(_ref) {
  19. var primaryColor = _ref.primaryColor,
  20. secondaryColor = _ref.secondaryColor;
  21. twoToneColorPalette.primaryColor = primaryColor;
  22. twoToneColorPalette.secondaryColor = secondaryColor || (0, _utils.getSecondaryColor)(primaryColor);
  23. twoToneColorPalette.calculated = !!secondaryColor;
  24. }
  25. function getTwoToneColors() {
  26. return (0, _objectSpread2.default)({}, twoToneColorPalette);
  27. }
  28. var IconBase = function IconBase(props) {
  29. var icon = props.icon,
  30. className = props.className,
  31. onClick = props.onClick,
  32. style = props.style,
  33. primaryColor = props.primaryColor,
  34. secondaryColor = props.secondaryColor,
  35. restProps = (0, _objectWithoutProperties2.default)(props, _excluded);
  36. var svgRef = React.useRef();
  37. var colors = twoToneColorPalette;
  38. if (primaryColor) {
  39. colors = {
  40. primaryColor: primaryColor,
  41. secondaryColor: secondaryColor || (0, _utils.getSecondaryColor)(primaryColor)
  42. };
  43. }
  44. (0, _utils.useInsertStyles)(svgRef);
  45. (0, _utils.warning)((0, _utils.isIconDefinition)(icon), "icon should be icon definiton, but got ".concat(icon));
  46. if (!(0, _utils.isIconDefinition)(icon)) {
  47. return null;
  48. }
  49. var target = icon;
  50. if (target && typeof target.icon === 'function') {
  51. target = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, target), {}, {
  52. icon: target.icon(colors.primaryColor, colors.secondaryColor)
  53. });
  54. }
  55. return (0, _utils.generate)(target.icon, "svg-".concat(target.name), (0, _objectSpread2.default)((0, _objectSpread2.default)({
  56. className: className,
  57. onClick: onClick,
  58. style: style,
  59. 'data-icon': target.name,
  60. width: '1em',
  61. height: '1em',
  62. fill: 'currentColor',
  63. 'aria-hidden': 'true'
  64. }, restProps), {}, {
  65. ref: svgRef
  66. }));
  67. };
  68. IconBase.displayName = 'IconReact';
  69. IconBase.getTwoToneColors = getTwoToneColors;
  70. IconBase.setTwoToneColors = setTwoToneColors;
  71. var _default = exports.default = IconBase;