'use strict';

var index = require('../BaseIcon/index.js');
var cs = require('classnames');
var _ = require('lodash');
var React = require('react');

function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }

var cs__default = /*#__PURE__*/_interopDefault(cs);
var ___default = /*#__PURE__*/_interopDefault(_);
var React__default = /*#__PURE__*/_interopDefault(React);

var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {
  enumerable: true,
  configurable: true,
  writable: true,
  value
}) : obj[key] = value;
var __spreadValues = (a, b) => {
  for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]);
  if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) {
    if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]);
  }
  return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
var __objRest = (source, exclude) => {
  var target = {};
  for (var prop in source) if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) target[prop] = source[prop];
  if (source != null && __getOwnPropSymbols) for (var prop of __getOwnPropSymbols(source)) {
    if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) target[prop] = source[prop];
  }
  return target;
};
const IconWrapper = "E_4100_0_7_iouxfgt";
const Icon = React__default.default.forwardRef((props, ref) => {
  const _a = props,
    {
      src,
      hoverSrc,
      active,
      activeSrc,
      onMouseEnter,
      onMouseLeave,
      onMouseMove,
      className,
      iconWidth = 16,
      iconHeight = 16,
      cursor,
      style,
      isRotate,
      prefix,
      suffix
    } = _a,
    restProps = __objRest(_a, ["src", "hoverSrc", "active", "activeSrc", "onMouseEnter", "onMouseLeave", "onMouseMove", "className", "iconWidth", "iconHeight", "cursor", "style", "isRotate", "prefix", "suffix"]);
  const [hover, setHover] = React.useState(false);
  const _src = React.useMemo(() => {
    if (active && activeSrc) {
      return activeSrc;
    }
    if (hover && hoverSrc) {
      return hoverSrc;
    }
    return src;
  }, [active, activeSrc, hover, hoverSrc, src]);
  const suffixIconSrc = React.useMemo(() => {
    if (!suffix) {
      return void 0;
    }
    const {
      activeSrc: activeSrc2,
      hoverSrc: hoverSrc2,
      src: src2
    } = suffix;
    if (active && activeSrc2) {
      return activeSrc2;
    }
    if (hover && hoverSrc2) {
      return hoverSrc2;
    }
    return src2;
  }, [active, hover, suffix]);
  return /* @__PURE__ */React__default.default.createElement(index, __spreadProps(__spreadValues({
    src: _src,
    className: cs__default.default(IconWrapper, "icon-wrapper", className, isRotate && "is-rotate"),
    suffixIconSrc,
    height: iconHeight,
    width: iconWidth,
    prefixNode: prefix,
    style: ___default.default.pickBy(__spreadValues({
      cursor
    }, style))
  }, restProps), {
    onMouseEnter: e => {
      onMouseEnter == null ? void 0 : onMouseEnter(e);
      if (hover) {
        setHover(true);
      }
    },
    onMouseMove: e => {
      onMouseMove == null ? void 0 : onMouseMove(e);
      if (hoverSrc) {
        setHover(true);
      }
    },
    onMouseLeave: e => {
      onMouseLeave == null ? void 0 : onMouseLeave(e);
      if (hoverSrc) {
        setHover(false);
      }
    }
  }));
});
var Icon$1 = Icon;

module.exports = Icon$1;
