@kisstar/rc-ui
Version:
UI component library built with React Hooks.
42 lines (41 loc) • 1.71 kB
JavaScript
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
/**
* 以 ant-design 的方式为组件提供统一的全局化配置
* ant-design is licensed MIT. https://github.com/ant-design/ant-design
*/
import React from 'react';
import { ConfigConsumer, ConfigContext } from './context';
/**
* 为组件提供统一的全局化配置。
*
* ConfigProvider 使用 React 的 `context` 特性,只需在应用外围包裹一次即可全局生效。
*/
export var ConfigProvider = function (props) {
var getPrefixClsWrapper = function (context) {
return function (suffixCls, customizePrefixCls) {
var prefixCls = props.prefixCls;
if (customizePrefixCls)
return customizePrefixCls;
var mergedPrefixCls = prefixCls || context.getPrefixCls('');
return suffixCls ? mergedPrefixCls + "-" + suffixCls : mergedPrefixCls;
};
};
var renderProvider = function (context) {
var children = props.children;
var config = __assign(__assign({}, context), { getPrefixCls: getPrefixClsWrapper(context) });
return React.createElement(ConfigContext.Provider, { value: config }, children);
};
return React.createElement(ConfigConsumer, null, function (context) { return renderProvider(context); });
};
export { ConfigConsumer, ConfigContext };
export default ConfigProvider;