antd
Version:
An enterprise-class UI design language and React components implementation
223 lines (179 loc) • 8.56 kB
JavaScript
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"));
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 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 && locale.Form && locale.Form.defaultValidateMessages) {
validateMessages = locale.Form.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;
;