"use strict";

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

var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");

var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");

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

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

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

var _assign = _interopRequireDefault(require("lodash/assign"));

var _ConfigContext = _interopRequireDefault(require("./ConfigContext"));

var _defaultConfig = _interopRequireDefault(require("./defaultConfig"));

var _index = _interopRequireWildcard(require("../locale/index"));

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; }

/**
 * 对外暴露用于注入全局配置属性的Context.Provider
 */
var ConfigProvider = function ConfigProvider(props) {
  // 处理当前语言
  var value = props.value;
  var localeConfig = value && value.localeConfig;
  var locale = {
    getLangMsg: function getLangMsg(componentName, labelName, params) {
      if (localeConfig && localeConfig.customGetLangMsg) {
        return localeConfig.customGetLangMsg(componentName, labelName, params);
      }

      return (0, _index.getLangMsg)(componentName, labelName, params);
    },
    getCompLangMsg: function getCompLangMsg(compLangMsgParams) {
      return (0, _index.getCompLangMsg)(compLangMsgParams, localeConfig === null || localeConfig === void 0 ? void 0 : localeConfig.customGetLangMsg);
    }
  };

  if (localeConfig) {
    _index.default.setLocalesData(localeConfig.locale, localeConfig.localeData);
  } // 处理组件默认属性


  var providerValue = (0, _assign.default)({}, _defaultConfig.default, value, {
    locale: locale
  });
  return /*#__PURE__*/_react.default.createElement(_ConfigContext.default.Provider, {
    value: providerValue
  }, props.children);
};

var _default = ConfigProvider;
exports.default = _default;