"use strict";

function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

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

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

var _form = _interopRequireDefault(require("maycur-antd/lib/form"));

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

var _EditableContext = require("./EditableContext");

var _FormChef = _interopRequireDefault(require("../FormChef"));

function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }

function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }

function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }

function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }

function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }

var EditableRow = function EditableRow(props) {
  var formValue = props.formValue,
      form = props.form,
      formFields = props.formFields,
      formChef = props.formChef,
      updateRowForms = props.updateRowForms,
      FormDish = props.FormDish,
      FormBuild = props.FormBuild,
      formChange = props.formChange,
      restProps = _objectWithoutProperties(props, ["formValue", "form", "formFields", "formChef", "updateRowForms", "FormDish", "FormBuild", "formChange"]);

  var formInstantiate = formChef.formInstantiate,
      initData = formChef.initData;
  (0, _react.useEffect)(function () {
    formInit();
    updateRowForm();
    return function () {
      return updateRowForm(true);
    }; // 删除行时销毁该行 form
  }, []);

  var updateRowForm = function updateRowForm(isDestroy) {
    var rowForm = isDestroy ? undefined : form;
    updateRowForms(_defineProperty({}, "".concat(props['data-row-key']), rowForm));
  };

  var formInit =
  /*#__PURE__*/
  function () {
    var _ref = _asyncToGenerator(
    /*#__PURE__*/
    regeneratorRuntime.mark(function _callee() {
      return regeneratorRuntime.wrap(function _callee$(_context) {
        while (1) {
          switch (_context.prev = _context.next) {
            case 0:
              _context.next = 2;
              return formInstantiate(formFields);

            case 2:
              initData(formValue);

            case 3:
            case "end":
              return _context.stop();
          }
        }
      }, _callee);
    }));

    return function formInit() {
      return _ref.apply(this, arguments);
    };
  }();

  return _react["default"].createElement(_EditableContext.EditableContext.Provider, {
    value: {
      form: form
    }
  }, _react["default"].createElement("tr", restProps));
};

var _default = (0, _FormChef["default"])({
  isValueMap: true,
  createDOMForm: _form["default"].create,
  cookerOption: {
    validateMessages: {
      required: function required() {
        return '该项是必填项';
      },
      string: {
        max: function max(name, maxLength) {
          return "\u6700\u591A\u8F93\u5165".concat(maxLength, "\u4E2A\u5B57");
        }
      }
    }
  }
})(EditableRow);

exports["default"] = _default;