"use strict";

var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");

var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.create = void 0;

var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));

var _classnames = _interopRequireDefault(require("classnames"));

var _react = _interopRequireWildcard(require("react"));

var _Icon = _interopRequireDefault(require("./Icon"));

// Copyright 1999-2019. Plesk International GmbH. All rights reserved.
const create = (icon, defaults = {}) => {
  if (!icon) {
    return icon;
  }

  if ( /*#__PURE__*/(0, _react.isValidElement)(icon)) {
    const {
      className,
      ...props
    } = icon.props;
    const newProps = { ...defaults
    };
    Object.keys(props).forEach(name => {
      if (props[name] !== null && props[name] !== undefined) {
        newProps[name] = props[name];
      }
    });

    if (defaults.className || className) {
      newProps.className = (0, _classnames.default)(defaults.className, className);
    }

    return /*#__PURE__*/(0, _react.cloneElement)(icon, newProps);
  }

  if (typeof icon === 'object') {
    const {
      className,
      ...props
    } = icon;
    return /*#__PURE__*/_react.default.createElement(_Icon.default, (0, _extends2.default)({}, defaults, {
      className: defaults.className || className ? (0, _classnames.default)(defaults.className, className) : null
    }, props));
  }

  return /*#__PURE__*/_react.default.createElement(_Icon.default, (0, _extends2.default)({}, defaults, {
    name: icon
  }));
};

exports.create = create;