"use strict";

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

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

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

var _message2 = _interopRequireDefault(require("maycur-antd/lib/message"));

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

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

var _react = require("react");

var _FieldLangSettingModal = _interopRequireDefault(require("../components/FieldLangSettingModal"));

var _useTranslate = _interopRequireDefault(require("./useTranslate"));

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

var _useLocalStorageLang = _interopRequireDefault(require("./useLocalStorageLang"));

var _useInitialProps = _interopRequireDefault(require("./useInitialProps"));

function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }

function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

var useLangModal = function useLangModal(props) {
  var modalManager = props.modalManager,
      identifier = props.identifier,
      data = props.data,
      _props$required = props.required,
      required = _props$required === void 0 ? false : _props$required,
      setValue = props.setValue,
      onFieldBlur = props.onFieldBlur,
      onFieldsChange = props.onFieldsChange,
      onCancel = props.onCancel;

  var _useState = (0, _react.useState)(data),
      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
      property = _useState2[0],
      setProperty = _useState2[1];

  var t = (0, _useTranslate.default)('MK_TransInput');
  var lang = (0, _useLocalStorageLang.default)();
  var initialProps = (0, _useInitialProps.default)(props);
  var propertyKeyZh = "".concat(identifier, "Zh");
  var propertyKeyEn = "".concat(identifier, "En");

  var openModal = function openModal() {
    modalManager.open({
      component: _FieldLangSettingModal.default,
      componentProps: _objectSpread({
        identifier: identifier,
        data: data,
        required: required,
        setValue: setValue,
        onFieldBlur: onFieldBlur,
        onFieldsChange: onFieldsChange
      }, initialProps)
    });
  };

  var onChange = (0, _react.useCallback)(function (key, e) {
    var _e$target;

    var params = _objectSpread(_objectSpread({}, property), {}, (0, _defineProperty2.default)({}, key, e === null || e === void 0 ? void 0 : (_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.value));

    params[identifier] = params["".concat(identifier).concat((0, _utils.toUpperCase)(lang))];
    setProperty(params);
  }, [property, identifier, lang]);
  var closeSelf = (0, _react.useCallback)(function () {
    if (typeof onCancel === 'function') {
      onCancel();
    }
  }, [onCancel]); // 待优化

  var getIdentifierValue = (0, _react.useCallback)(function () {
    var result = '';

    switch (lang) {
      case 'zh':
        result = property[propertyKeyZh] ? property[propertyKeyZh] : property[propertyKeyEn];
        break;

      case 'en':
        result = property[propertyKeyEn] ? property[propertyKeyEn] : property[propertyKeyZh];
        break;

      default:
        result = property["".concat(identifier).concat((0, _utils.toUpperCase)(lang))];
    }

    return result;
  }, [lang, propertyKeyZh, propertyKeyEn, property, identifier]);
  var onOk = (0, _react.useCallback)(function () {
    if (required && !property[propertyKeyZh] && !property[propertyKeyEn]) {
      _message2.default.warning(t('请至少填写一种语言'));

      return;
    }

    var params = _objectSpread(_objectSpread({}, property), {}, (0, _defineProperty2.default)({}, identifier, getIdentifierValue(property, identifier)));

    setValue(params[identifier]);
    var result = (0, _utils.getChangedFields)(params, identifier);

    if (typeof onFieldBlur === 'function') {
      onFieldBlur(result, (0, _utils.formatChangedFields)(result));
      closeSelf();
      return;
    }

    if (typeof onFieldsChange === 'function') {
      onFieldsChange(result, (0, _utils.formatChangedFields)(result));
      closeSelf();
      return;
    }
  }, [property, propertyKeyZh, propertyKeyEn, t, identifier, required, getIdentifierValue, setValue, onFieldBlur, onFieldsChange, closeSelf]);
  return [property, {
    openModal: openModal,
    onChange: onChange,
    onOk: onOk
  }];
};

var _default = useLangModal;
exports.default = _default;