antd
Version:
An enterprise-class UI design language and React components implementation
54 lines (53 loc) • 2 kB
JavaScript
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.defaultPrefixCls = exports.defaultIconPrefixCls = exports.Variants = exports.ConfigContext = exports.ConfigConsumer = void 0;
exports.useComponentConfig = useComponentConfig;
var React = _interopRequireWildcard(require("react"));
const defaultPrefixCls = exports.defaultPrefixCls = 'ant';
const defaultIconPrefixCls = exports.defaultIconPrefixCls = 'anticon';
const Variants = exports.Variants = ['outlined', 'borderless', 'filled', 'underlined'];
const defaultGetPrefixCls = (suffixCls, customizePrefixCls) => {
if (customizePrefixCls) {
return customizePrefixCls;
}
return suffixCls ? `${defaultPrefixCls}-${suffixCls}` : defaultPrefixCls;
};
// zombieJ: 🚨 Do not pass `defaultRenderEmpty` here since it will cause circular dependency.
const ConfigContext = exports.ConfigContext = /*#__PURE__*/React.createContext({
// We provide a default function for Context without provider
getPrefixCls: defaultGetPrefixCls,
iconPrefixCls: defaultIconPrefixCls
});
const {
Consumer: ConfigConsumer
} = ConfigContext;
exports.ConfigConsumer = ConfigConsumer;
const EMPTY_OBJECT = {};
/**
* Get ConfigProvider configured component props.
* This help to reduce bundle size for saving `?.` operator.
* Do not use as `useMemo` deps since we do not cache the object here.
*
* NOTE: not refactor this with `useMemo` since memo will cost another memory space,
* which will waste both compare calculation & memory.
*/
function useComponentConfig(propName) {
const context = React.useContext(ConfigContext);
const {
getPrefixCls,
direction,
getPopupContainer
} = context;
const propValue = context[propName];
return Object.assign(Object.assign({
classNames: EMPTY_OBJECT,
styles: EMPTY_OBJECT
}, propValue), {
getPrefixCls,
direction,
getPopupContainer
});
}
;