UNPKG

acud

Version:

acg react 组件库

180 lines (178 loc) • 7.58 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.globalConfig = exports.defaultPrefixCls = exports.defaultIconPrefixCls = exports["default"] = exports.configConsumerProps = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var React = _interopRequireWildcard(require("react")); var _useMemo = _interopRequireDefault(require("rc-util/lib/hooks/useMemo")); var _IconContext = _interopRequireDefault(require("acud-icon/lib/components/IconContext")); var _localeProvider = _interopRequireDefault(require("../locale-provider")); var _LocaleReceiver = _interopRequireDefault(require("../locale-provider/LocaleReceiver")); var _context = require("./context"); var _SizeContext = _interopRequireWildcard(require("./SizeContext")); var _context2 = require("../form/context"); var _UnstableContext = require("./UnstableContext"); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } /** * @file * @author zhousheng */ var configConsumerProps = exports.configConsumerProps = ['getTargetContainer', 'getPopupContainer', 'rootPrefixCls', 'getPrefixCls', 'renderEmpty', 'csp', 'autoInsertSpaceInButton', 'locale', 'pageHeader']; // These props is used by `useContext` directly in sub component var PASSED_PROPS = ['getTargetContainer', 'getPopupContainer', 'renderEmpty', 'pageHeader', 'input']; var defaultPrefixCls = exports.defaultPrefixCls = 'acud'; var defaultIconPrefixCls = exports.defaultIconPrefixCls = "".concat(defaultPrefixCls, "icon"); var globalPrefixCls = defaultPrefixCls; var globalIconPrefixCls; function getGlobalIconPrefixCls(prefixCls) { return globalIconPrefixCls || (prefixCls ? "".concat(prefixCls, "icon") : defaultIconPrefixCls); } var setGlobalConfig = function setGlobalConfig(_ref) { var prefixCls = _ref.prefixCls, iconPrefixCls = _ref.iconPrefixCls, unstableRender = _ref.unstableRender; if (prefixCls !== undefined) { globalPrefixCls = prefixCls; } if (iconPrefixCls !== undefined) { globalIconPrefixCls = iconPrefixCls; } if (unstableRender !== undefined) { (0, _UnstableContext.unstableSetRender)(unstableRender); } }; var globalConfig = exports.globalConfig = function globalConfig() { return { getPrefixCls: function getPrefixCls(suffixCls, customizePrefixCls) { if (customizePrefixCls) { return customizePrefixCls; } return suffixCls ? "".concat(globalPrefixCls, "-").concat(suffixCls) : globalPrefixCls; }, getIconPrefixCls: getGlobalIconPrefixCls }; }; var ProviderChildren = function ProviderChildren(props) { var children = props.children, csp = props.csp, autoInsertSpaceInButton = props.autoInsertSpaceInButton, locale = props.locale, componentSize = props.componentSize, direction = props.direction, space = props.space, virtual = props.virtual, dropdownMatchSelectWidth = props.dropdownMatchSelectWidth, legacyLocale = props.legacyLocale, parentContext = props.parentContext, customIconPrefixCls = props.iconPrefixCls, form = props.form; 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; }, // eslint-disable-next-line react-hooks/exhaustive-deps [parentContext.getPrefixCls]); var iconPrefixCls = customIconPrefixCls || parentContext.iconPrefixCls || getGlobalIconPrefixCls(getPrefixCls('')); var config = (0, _extends2["default"])((0, _extends2["default"])({}, parentContext), { csp: csp, autoInsertSpaceInButton: autoInsertSpaceInButton, locale: locale || legacyLocale, direction: direction, space: space, virtual: virtual, dropdownMatchSelectWidth: dropdownMatchSelectWidth, form: form, 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; } }); var memoedConfig = (0, _useMemo["default"])(function () { return config; }, // eslint-disable-next-line react-hooks/exhaustive-deps 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 }; }, [iconPrefixCls]); var childNode = children; // Additional Form provider if (locale) { childNode = /*#__PURE__*/React.createElement(_localeProvider["default"], { locale: locale }, childNode); } if (iconPrefixCls) { childNode = /*#__PURE__*/React.createElement(_IconContext["default"].Provider, { value: memoIconContextValue }, childNode); } if (componentSize) { childNode = /*#__PURE__*/React.createElement(_SizeContext.SizeContextProvider, { size: componentSize }, childNode); } if (form) { childNode = /*#__PURE__*/React.createElement(_context2.FormProvider, form, childNode); } return /*#__PURE__*/React.createElement(_context.ConfigContext.Provider, { value: memoedConfig }, childNode); }; var ConfigProvider = function ConfigProvider(props) { React.useEffect(function () { if (props.direction) { // message.config({ // rtl: props.direction === 'rtl', // }); // notification.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 = exports["default"] = ConfigProvider;