UNPKG

antd

Version:

An enterprise-class UI design language and React components implementation

223 lines (179 loc) 8.56 kB
"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")); 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;