UNPKG

linkmore-design

Version:

🌈 πŸš€lmη»„δ»ΆεΊ“γ€‚πŸš€

216 lines (208 loc) β€’ 7.55 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "ConfigConsumer", { enumerable: true, get: function () { return _context.ConfigConsumer; } }); Object.defineProperty(exports, "ConfigContext", { enumerable: true, get: function () { return _context.ConfigContext; } }); exports.globalConfig = exports.defaultPrefixCls = exports.defaultIconPrefixCls = exports.default = exports.configConsumerProps = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); 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 React = _interopRequireWildcard(require("react")); var _localeProvider = _interopRequireWildcard(require("../locale-provider")); var _LocaleReceiver = _interopRequireDefault(require("../locale-provider/LocaleReceiver")); var _default2 = _interopRequireDefault(require("../locale/default")); var _message = _interopRequireDefault(require("../message")); var _notification = _interopRequireDefault(require("../notification")); var _context = require("./context"); var _cssVariables = require("./cssVariables"); var _DisabledContext = require("./DisabledContext"); var _SizeContext = _interopRequireWildcard(require("./SizeContext")); const configConsumerProps = ['getTargetContainer', 'getPopupContainer', 'rootPrefixCls', 'getPrefixCls', 'renderEmpty', 'csp', 'autoInsertSpaceInButton', 'locale', 'pageHeader', 'iconUrl']; // These props is used by `useContext` directly in sub component exports.configConsumerProps = configConsumerProps; const PASSED_PROPS = ['getTargetContainer', 'getPopupContainer', 'renderEmpty', 'pageHeader', 'input', 'pagination', 'form']; const defaultPrefixCls = 'ant'; exports.defaultPrefixCls = defaultPrefixCls; const defaultIconPrefixCls = 'anticon'; exports.defaultIconPrefixCls = defaultIconPrefixCls; let globalPrefixCls; let globalIconPrefixCls; function getGlobalPrefixCls() { return globalPrefixCls || defaultPrefixCls; } function getGlobalIconPrefixCls() { return globalIconPrefixCls || defaultIconPrefixCls; } const setGlobalConfig = ({ prefixCls, iconPrefixCls, theme }) => { if (prefixCls !== undefined) { globalPrefixCls = prefixCls; } if (iconPrefixCls !== undefined) { globalIconPrefixCls = iconPrefixCls; } if (theme) { (0, _cssVariables.registerTheme)(getGlobalPrefixCls(), theme); } }; const globalConfig = () => ({ getPrefixCls: (suffixCls, customizePrefixCls) => { if (customizePrefixCls) return customizePrefixCls; return suffixCls ? `${getGlobalPrefixCls()}-${suffixCls}` : getGlobalPrefixCls(); }, getIconPrefixCls: getGlobalIconPrefixCls, 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; const ProviderChildren = props => { const { children, csp, autoInsertSpaceInButton, form, locale, componentSize, direction, space, virtual, dropdownMatchSelectWidth, legacyLocale, parentContext, iconPrefixCls, componentDisabled, iconUrl } = props; const getPrefixCls = React.useCallback((suffixCls, customizePrefixCls) => { const { prefixCls } = props; if (customizePrefixCls) return customizePrefixCls; const mergedPrefixCls = prefixCls || parentContext.getPrefixCls(''); return suffixCls ? `${mergedPrefixCls}-${suffixCls}` : mergedPrefixCls; }, [parentContext.getPrefixCls, props.prefixCls]); const config = { ...parentContext, csp, autoInsertSpaceInButton, locale: locale || legacyLocale, direction, space, virtual, dropdownMatchSelectWidth, getPrefixCls, iconUrl }; // Pass the props used by `useContext` directly with child component. // These props should merged into `config`. PASSED_PROPS.forEach(propName => { const propValue = props[propName]; if (propValue) { config[propName] = propValue; } }); // https://github.com/ant-design/ant-design/issues/27617 const memoedConfig = (0, _useMemo.default)(() => config, config, (prevConfig, currentConfig) => { const prevKeys = Object.keys(prevConfig); const currentKeys = Object.keys(currentConfig); return prevKeys.length !== currentKeys.length || prevKeys.some(key => prevConfig[key] !== currentConfig[key]); }); const memoIconContextValue = React.useMemo(() => ({ prefixCls: iconPrefixCls, csp }), [iconPrefixCls, csp]); let childNode = children; // Additional Form provider let validateMessages = {}; if (locale) { validateMessages = locale.Form?.defaultValidateMessages || _default2.default.Form?.defaultValidateMessages || {}; } if (form && form.validateMessages) { validateMessages = { ...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 || csp) { childNode = /*#__PURE__*/React.createElement(_Context.default.Provider, { value: memoIconContextValue }, childNode); } if (componentSize) { childNode = /*#__PURE__*/React.createElement(_SizeContext.SizeContextProvider, { size: componentSize }, childNode); } if (componentDisabled !== undefined) { childNode = /*#__PURE__*/React.createElement(_DisabledContext.DisabledContextProvider, { disabled: componentDisabled }, childNode); } return /*#__PURE__*/React.createElement(_context.ConfigContext.Provider, { value: memoedConfig }, childNode); }; const ConfigProvider = props => { React.useEffect(() => { 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, (_, __, legacyLocale) => /*#__PURE__*/React.createElement(_context.ConfigConsumer, null, context => /*#__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;