"use strict";

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

var _typeof = require("@babel/runtime/helpers/typeof");

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

require("maycur-antd/lib/col/style/css");

var _col = _interopRequireDefault(require("maycur-antd/lib/col"));

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

var _utils = _interopRequireDefault(require("../utils/utils"));

var _PopoverTip = _interopRequireDefault(require("../PopoverTip"));

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

var _lodash = _interopRequireDefault(require("lodash"));

function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }

function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

/*
 * @Description: file content
 * @Author: RongWei
 * @Date: 2019-12-25 19:14:20
 * @LastEditors: RongWei
 * @LastEditTime: 2020-08-04 19:24:32
 */
var cmClzName = _utils.default.prefixCls + '-form-item';

var Div = function Div(props) {
  return /*#__PURE__*/_react.default.createElement("div", {
    className: props.className
  }, props.children);
};

function FormItem(props) {
  var _props$field = props.field,
      property = _props$field.property,
      type = _props$field.type,
      extra = _props$field.extra,
      children = props.children,
      isInTable = props.isInTable,
      isInSecondaryForm = props.isInSecondaryForm,
      _props$complexFields = props.complexFields,
      complexFields = _props$complexFields === void 0 ? [] : _props$complexFields,
      _props$specialFields = props.specialFields,
      specialFields = _props$specialFields === void 0 ? [] : _props$specialFields,
      errMsg = props.errMsg;
  var label = property.label,
      _property$webSize = property.webSize,
      webSize = _property$webSize === void 0 ? 0.5 : _property$webSize,
      required = property.required,
      assistedRemark = property.assistedRemark;

  var _label = (0, _react.useMemo)(function () {
    var labelWithRemark = label;

    if (isInSecondaryForm || isInTable || specialFields.includes(type)) {
      return null;
    }

    if (assistedRemark) {
      labelWithRemark = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, label, " ", /*#__PURE__*/_react.default.createElement(_PopoverTip.default, {
        content: assistedRemark
      }));
    }

    return labelWithRemark;
  }, [isInTable, isInSecondaryForm, specialFields, type, label]); // const hasSplit = useMemo(() => {
  //     if (webSize === 1 && ((specialFields.includes(type)) || complexFields.includes(type))) {
  //         return true;
  //     }
  //     return false;
  // }, [complexFields, specialFields, webSize, type]);


  var Wrap = (0, _react.useMemo)(function () {
    return isInTable ? _react.default.Fragment : isInSecondaryForm ? Div : _col.default;
  }, [isInTable, isInSecondaryForm]);
  var labelClz = (0, _react.useMemo)(function () {
    return (0, _classnames.default)("".concat(cmClzName, "-label"), {
      'complex': complexFields.includes(type),
      'required': required
    });
  }, [complexFields, required, type]);
  var wrapProps = (0, _react.useMemo)(function () {
    return isInTable ? {} : isInSecondaryForm ? {
      className: " ".concat(errMsg ? 'has-err' : '')
    } : {
      span: 24 * webSize,
      className: "mk-col ".concat(errMsg ? 'has-err' : '')
    };
  }, [errMsg, isInTable, isInSecondaryForm, webSize]); // const splitBar = useMemo(() => {
  //     return hasSplit ? <div className={`${cmClzName}-split`}></div> : null;
  // }, [hasSplit]);

  return /*#__PURE__*/_react.default.createElement(Wrap, wrapProps, /*#__PURE__*/_react.default.createElement("div", {
    className: cmClzName
  }, _label ? /*#__PURE__*/_react.default.createElement("div", {
    className: "".concat(cmClzName, "-header")
  }, /*#__PURE__*/_react.default.createElement("div", {
    className: labelClz
  }, _label), /*#__PURE__*/_react.default.createElement("div", {
    className: "".concat(cmClzName, "-header_extra")
  }, extra)) : null, /*#__PURE__*/_react.default.createElement("div", {
    className: "".concat(cmClzName, "-body")
  }, /*#__PURE__*/_react.default.createElement("div", null, children, !!errMsg && /*#__PURE__*/_react.default.createElement("div", {
    className: "".concat(cmClzName, "-error")
  }, errMsg)))));
}

function propsEqual(prevProps, nextProps) {
  var result = true;

  if (!_lodash.default.isEqual(prevProps.errMsg, nextProps.errMsg)) {
    result = false;
  } else if (prevProps.complexFields !== nextProps.complexFields) {
    result = false;
  } else if (!_lodash.default.isEqual(prevProps.field, nextProps.field)) {
    result = false;
  } else if (!_lodash.default.isEqual(prevProps.formatProps, nextProps.formatProps)) {
    result = false;
  } else if (!_lodash.default.isEqual(prevProps.value, nextProps.value)) {
    result = false;
  }

  return result;
}

;
var FormFood = /*#__PURE__*/(0, _react.memo)(FormItem, propsEqual);
var _default = FormFood;
exports.default = _default;