text: "use strict";
  
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  
  var _typeof = require("@babel/runtime/helpers/typeof");
  
  Object.defineProperty(exports, "__esModule", {
    value: true
  });
  Object.defineProperty(exports, "ConfigConsumer", {
    enumerable: true,
    get: function get() {
      return _context.ConfigConsumer;
    }
  });
  Object.defineProperty(exports, "ConfigContext", {
    enumerable: true,
    get: function get() {
      return _context.ConfigContext;
    }
  });
  exports["default"] = exports.globalConfig = exports.defaultPrefixCls = exports.configConsumerProps = void 0;
  
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  
  var React = _interopRequireWildcard(require("react"));
  
  var _Context = _interopRequireDefault(require("@ant-design/icons/lib/components/Context"));
  
  var _rcFieldForm = require("rc-field-form");
  
  var _useMemo = _interopRequireDefault(require("rc-util/lib/hooks/useMemo"));
  
  var _localeProvider = _interopRequireWildcard(require("../locale-provider"));
  
  var _LocaleReceiver = _interopRequireDefault(require("../locale-provider/LocaleReceiver"));
  
  var _context = require("./context");
  
  var _SizeContext = _interopRequireWildcard(require("./SizeContext"));
  
  var _message = _interopRequireDefault(require("../message"));
  
  var _notification = _interopRequireDefault(require("../notification"));
  
  var _default2 = _interopRequireDefault(require("../locale/default"));
  
  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; }
  
  var configConsumerProps = ['getTargetContainer', 'getPopupContainer', 'rootPrefixCls', 'getPrefixCls', 'renderEmpty', 'csp', 'autoInsertSpaceInButton', 'locale', 'pageHeader']; // These props is used by `useContext` directly in sub component
  
  exports.configConsumerProps = configConsumerProps;
  var PASSED_PROPS = ['getTargetContainer', 'getPopupContainer', 'renderEmpty', 'pageHeader', 'input', 'form'];
  var defaultPrefixCls = 'ant';
  exports.defaultPrefixCls = defaultPrefixCls;
  var globalPrefixCls;
  
  var setGlobalConfig = function setGlobalConfig(params) {
    if (params.prefixCls !== undefined) {
      globalPrefixCls = params.prefixCls;
    }
  };
  
  function getGlobalPrefixCls() {
    return globalPrefixCls || defaultPrefixCls;
  }
  
  var globalConfig = function globalConfig() {
    return {
      getPrefixCls: function getPrefixCls(suffixCls, customizePrefixCls) {
        if (customizePrefixCls) return customizePrefixCls;
        return suffixCls ? "".concat(getGlobalPrefixCls(), "-").concat(suffixCls) : getGlobalPrefixCls();
      },
      getRootPrefixCls: function getRootPrefixCls(rootPrefixCls, customizePrefixCls) {
        // Customize rootPrefixCls is first priority
        if (rootPrefixCls) {
          return rootPrefixCls;
        } // If Global prefixCls provided, use this
  
  
        if (globalPrefixCls) {
          return globalPrefixCls;
        } // [Legacy] If customize prefixCls provided, we cut it to get the prefixCls
  
  
        if (customizePrefixCls && customizePrefixCls.includes('-')) {
          return customizePrefixCls.replace(/^(.*)-[^-]*$/, '$1');
        } // Fallback to default prefixCls
  
  
        return getGlobalPrefixCls();
      }
    };
  };
  
  exports.globalConfig = globalConfig;
  
  var ProviderChildren = function ProviderChildren(props) {
    var _a, _b;
  
    var children = props.children,
        csp = props.csp,
        autoInsertSpaceInButton = props.autoInsertSpaceInButton,
        form = props.form,
        locale = props.locale,
        componentSize = props.componentSize,
        direction = props.direction,
        space = props.space,
        virtual = props.virtual,
        dropdownMatchSelectWidth = props.dropdownMatchSelectWidth,
        legacyLocale = props.legacyLocale,
        parentContext = props.parentContext,
        iconPrefixCls = props.iconPrefixCls;
    var getPrefixCls = React.useCallback(function (suffixCls, customizePrefixCls) {
      var prefixCls = props.prefixCls;
      if (customizePrefixCls) return customizePrefixCls;
      var mergedPrefixCls = prefixCls || parentContext.getPrefixCls('');
      return suffixCls ? "".concat(mergedPrefixCls, "-").concat(suffixCls) : mergedPrefixCls;
    }, [parentContext.getPrefixCls, props.prefixCls]);
    var config = (0, _extends2["default"])((0, _extends2["default"])({}, parentContext), {
      csp: csp,
      autoInsertSpaceInButton: autoInsertSpaceInButton,
      locale: locale || legacyLocale,
      direction: direction,
      space: space,
      virtual: virtual,
      dropdownMatchSelectWidth: dropdownMatchSelectWidth,
      getPrefixCls: getPrefixCls
    }); // Pass the props used by `useContext` directly with child component.
    // These props should merged into `config`.
  
    PASSED_PROPS.forEach(function (propName) {
      var propValue = props[propName];
  
      if (propValue) {
        config[propName] = propValue;
      }
    }); // https://github.com/ant-design/ant-design/issues/27617
  
    var memoedConfig = (0, _useMemo["default"])(function () {
      return config;
    }, config, function (prevConfig, currentConfig) {
      var prevKeys = Object.keys(prevConfig);
      var currentKeys = Object.keys(currentConfig);
      return prevKeys.length !== currentKeys.length || prevKeys.some(function (key) {
        return prevConfig[key] !== currentConfig[key];
      });
    });
    var memoIconContextValue = React.useMemo(function () {
      return {
        prefixCls: iconPrefixCls,
        csp: csp
      };
    }, [iconPrefixCls]);
    var childNode = children; // Additional Form provider
  
    var validateMessages = {};
  
    if (locale) {
      validateMessages = ((_a = locale.Form) === null || _a === void 0 ? void 0 : _a.defaultValidateMessages) || ((_b = _default2["default"].Form) === null || _b === void 0 ? void 0 : _b.defaultValidateMessages) || {};
    }
  
    if (form && form.validateMessages) {
      validateMessages = (0, _extends2["default"])((0, _extends2["default"])({}, validateMessages), form.validateMessages);
    }
  
    if (Object.keys(validateMessages).length > 0) {
      childNode = /*#__PURE__*/React.createElement(_rcFieldForm.FormProvider, {
        validateMessages: validateMessages
      }, children);
    }
  
    if (locale) {
      childNode = /*#__PURE__*/React.createElement(_localeProvider["default"], {
        locale: locale,
        _ANT_MARK__: _localeProvider.ANT_MARK
      }, childNode);
    }
  
    if (iconPrefixCls) {
      childNode = /*#__PURE__*/React.createElement(_Context["default"].Provider, {
        value: memoIconContextValue
      }, childNode);
    }
  
    if (componentSize) {
      childNode = /*#__PURE__*/React.createElement(_SizeContext.SizeContextProvider, {
        size: componentSize
      }, childNode);
    }
  
    return /*#__PURE__*/React.createElement(_context.ConfigContext.Provider, {
      value: memoedConfig
    }, childNode);
  };
  
  var ConfigProvider = function ConfigProvider(props) {
    React.useEffect(function () {
      if (props.direction) {
        _message["default"].config({
          rtl: props.direction === 'rtl'
        });
  
        _notification["default"].config({
          rtl: props.direction === 'rtl'
        });
      }
    }, [props.direction]);
    return /*#__PURE__*/React.createElement(_LocaleReceiver["default"], null, function (_, __, legacyLocale) {
      return /*#__PURE__*/React.createElement(_context.ConfigConsumer, null, function (context) {
        return /*#__PURE__*/React.createElement(ProviderChildren, (0, _extends2["default"])({
          parentContext: context,
          legacyLocale: legacyLocale
        }, props));
      });
    });
  };
  /** @private internal Usage. do not use in your production */
  
  
  ConfigProvider.ConfigContext = _context.ConfigContext;
  ConfigProvider.SizeContext = _SizeContext["default"];
  ConfigProvider.config = setGlobalConfig;
  var _default = ConfigProvider;
  exports["default"] = _default;