Files
2026-01-16 01:51:36 +00:00

336 lines
13 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _exportNames = {
isNeedOpenHash: true,
ConfigConsumer: true,
ProConfigProvider: true,
useIntl: true,
ProProvider: true
};
exports.isNeedOpenHash = exports.default = exports.ProProvider = exports.ProConfigProvider = exports.ConfigConsumer = void 0;
exports.useIntl = useIntl;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _cssinjs = require("@ant-design/cssinjs");
var _antd = require("antd");
var _zh_CN = _interopRequireDefault(require("antd/lib/locale/zh_CN"));
var _react = _interopRequireWildcard(require("react"));
var _swr = require("swr");
var _intl = require("./intl");
Object.keys(_intl).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
if (key in exports && exports[key] === _intl[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _intl[key];
}
});
});
var _dayjs = _interopRequireDefault(require("dayjs"));
var _layoutToken = require("./typing/layoutToken");
var _useStyle = require("./useStyle");
Object.keys(_useStyle).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
if (key in exports && exports[key] === _useStyle[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _useStyle[key];
}
});
});
var _token = require("./useStyle/token");
var _merge = require("./utils/merge");
require("dayjs/locale/zh-cn");
var _jsxRuntime = require("react/jsx-runtime");
var _excluded = ["locale", "getPrefixCls"],
_excluded2 = ["locale", "theme"];
var omitUndefined = function omitUndefined(obj) {
var newObj = {};
Object.keys(obj || {}).forEach(function (key) {
if (obj[key] !== undefined) {
newObj[key] = obj[key];
}
});
if (Object.keys(newObj).length < 1) {
return undefined;
}
return newObj;
};
/**
* 用于判断当前是否需要开启哈希Hash模式。
* 首先也会判断当前是否处于测试环境中(通过 process.env.NODE_ENV === 'TEST' 判断),
* 如果是,则返回 false。否则直接返回 true 表示需要打开。
* @returns
*/
var isNeedOpenHash = exports.isNeedOpenHash = function isNeedOpenHash() {
var _process$env$NODE_ENV, _process$env$NODE_ENV2;
if (typeof process !== 'undefined' && (((_process$env$NODE_ENV = process.env.NODE_ENV) === null || _process$env$NODE_ENV === void 0 ? void 0 : _process$env$NODE_ENV.toUpperCase()) === 'TEST' || ((_process$env$NODE_ENV2 = process.env.NODE_ENV) === null || _process$env$NODE_ENV2 === void 0 ? void 0 : _process$env$NODE_ENV2.toUpperCase()) === 'DEV')) {
return false;
}
return true;
};
/**
* 用于配置 ValueEnum 的通用配置
*/
/**
* 支持 Map 和 Object
*
* @name ValueEnum 的类型
*/
/**
* 支持 Map 和 Object
*/
/**
* BaseProFieldFC 的类型设置
*/
/** Render 第二个参数,里面包含了一些常用的参数 */
/**
* 自带的token 配置
*/
/* Creating a context object with the default values. */
var ProConfigContext = /*#__PURE__*/_react.default.createContext({
intl: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, _intl.zhCNIntl), {}, {
locale: 'default'
}),
valueTypeMap: {},
theme: _token.emptyTheme,
hashed: true,
dark: false,
token: _token.defaultToken
});
var ConfigConsumer = exports.ConfigConsumer = ProConfigContext.Consumer;
/**
* 组件解除挂载后清空一下 cache
* @date 2022-11-28
* @returns null
*/
var CacheClean = function CacheClean() {
var _useSWRConfig = (0, _swr.useSWRConfig)(),
cache = _useSWRConfig.cache;
(0, _react.useEffect)(function () {
return function () {
// is a map
// @ts-ignore
cache.clear();
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
return null;
};
/**
* 用于配置 Pro 的组件,分装之后会简单一些
* @param props
* @returns
*/
var ConfigProviderContainer = function ConfigProviderContainer(props) {
var _proTheme$useToken;
var children = props.children,
dark = props.dark,
valueTypeMap = props.valueTypeMap,
_props$autoClearCache = props.autoClearCache,
autoClearCache = _props$autoClearCache === void 0 ? false : _props$autoClearCache,
propsToken = props.token,
prefixCls = props.prefixCls,
intl = props.intl;
var _useContext = (0, _react.useContext)(_antd.ConfigProvider.ConfigContext),
locale = _useContext.locale,
getPrefixCls = _useContext.getPrefixCls,
restConfig = (0, _objectWithoutProperties2.default)(_useContext, _excluded);
var tokenContext = (_proTheme$useToken = _useStyle.proTheme.useToken) === null || _proTheme$useToken === void 0 ? void 0 : _proTheme$useToken.call(_useStyle.proTheme);
var proProvide = (0, _react.useContext)(ProConfigContext);
/**
* pro 的 类
* @type {string}
* @example .ant-pro
*/
var proComponentsCls = prefixCls ? ".".concat(prefixCls) : ".".concat(getPrefixCls(), "-pro");
var antCls = '.' + getPrefixCls();
var salt = "".concat(proComponentsCls);
/**
* 合并一下token不然导致嵌套 token 失效
*/
var proLayoutTokenMerge = (0, _react.useMemo)(function () {
return (0, _layoutToken.getLayoutDesignToken)(propsToken || {}, tokenContext.token || _token.defaultToken);
}, [propsToken, tokenContext.token]);
var proProvideValue = (0, _react.useMemo)(function () {
var _proProvide$intl;
var localeName = locale === null || locale === void 0 ? void 0 : locale.locale;
var key = (0, _intl.findIntlKeyByAntdLocaleKey)(localeName);
// antd 的 key 存在的时候以 antd 的为主
var resolvedIntl = intl !== null && intl !== void 0 ? intl : localeName && ((_proProvide$intl = proProvide.intl) === null || _proProvide$intl === void 0 ? void 0 : _proProvide$intl.locale) === 'default' ? _intl.intlMap[key] : proProvide.intl || _intl.intlMap[key];
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, proProvide), {}, {
dark: dark !== null && dark !== void 0 ? dark : proProvide.dark,
token: (0, _merge.merge)(proProvide.token, tokenContext.token, {
proComponentsCls: proComponentsCls,
antCls: antCls,
themeId: tokenContext.theme.id,
layout: proLayoutTokenMerge
}),
intl: resolvedIntl || _intl.zhCNIntl
});
}, [locale === null || locale === void 0 ? void 0 : locale.locale, proProvide, dark, tokenContext.token, tokenContext.theme.id, proComponentsCls, antCls, proLayoutTokenMerge, intl]);
var finalToken = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, proProvideValue.token || {}), {}, {
proComponentsCls: proComponentsCls
});
var _useCacheToken = (0, _cssinjs.useCacheToken)(tokenContext.theme, [tokenContext.token, finalToken !== null && finalToken !== void 0 ? finalToken : {}], {
salt: salt,
override: finalToken
}),
_useCacheToken2 = (0, _slicedToArray2.default)(_useCacheToken, 2),
token = _useCacheToken2[0],
nativeHashId = _useCacheToken2[1];
var hashed = (0, _react.useMemo)(function () {
if (props.hashed === false) {
return false;
}
if (proProvide.hashed === false) return false;
return true;
}, [proProvide.hashed, props.hashed]);
var hashId = (0, _react.useMemo)(function () {
if (props.hashed === false) {
return '';
}
if (proProvide.hashed === false) return '';
//Fix issue with hashId code
if (isNeedOpenHash() === false) {
return '';
} else if (tokenContext.hashId) {
return tokenContext.hashId;
} else {
// 生产环境或其他环境
return nativeHashId;
}
}, [nativeHashId, proProvide.hashed, props.hashed]);
(0, _react.useEffect)(function () {
_dayjs.default.locale((locale === null || locale === void 0 ? void 0 : locale.locale) || 'zh-cn');
}, [locale === null || locale === void 0 ? void 0 : locale.locale]);
var themeConfig = (0, _react.useMemo)(function () {
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, restConfig.theme), {}, {
hashId: hashId,
hashed: hashed && isNeedOpenHash()
});
}, [restConfig.theme, hashId, hashed, isNeedOpenHash()]);
var proConfigContextValue = (0, _react.useMemo)(function () {
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, proProvideValue), {}, {
valueTypeMap: valueTypeMap || (proProvideValue === null || proProvideValue === void 0 ? void 0 : proProvideValue.valueTypeMap),
token: token,
theme: tokenContext.theme,
hashed: hashed,
hashId: hashId
});
}, [proProvideValue, valueTypeMap, token, tokenContext.theme, hashed, hashId]);
var configProviderDom = (0, _react.useMemo)(function () {
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.ConfigProvider, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, restConfig), {}, {
theme: themeConfig,
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ProConfigContext.Provider, {
value: proConfigContextValue,
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
children: [autoClearCache && /*#__PURE__*/(0, _jsxRuntime.jsx)(CacheClean, {}), children]
})
})
}));
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [restConfig, themeConfig, proConfigContextValue, autoClearCache, children]);
if (!autoClearCache) return configProviderDom;
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_swr.SWRConfig, {
value: {
provider: function provider() {
return new Map();
}
},
children: configProviderDom
});
};
/**
* 用于配置 Pro 的一些全局性的东西
* @param props
* @returns
*/
var ProConfigProvider = exports.ProConfigProvider = function ProConfigProvider(props) {
var needDeps = props.needDeps,
dark = props.dark,
token = props.token;
var proProvide = (0, _react.useContext)(ProConfigContext);
var _useContext2 = (0, _react.useContext)(_antd.ConfigProvider.ConfigContext),
locale = _useContext2.locale,
theme = _useContext2.theme,
rest = (0, _objectWithoutProperties2.default)(_useContext2, _excluded2);
// 是不是不需要渲染 provide
var isNullProvide = needDeps && proProvide.hashId !== undefined && Object.keys(props).sort().join('-') === 'children-needDeps';
if (isNullProvide) return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
children: props.children
});
var mergeAlgorithm = function mergeAlgorithm() {
var isDark = dark !== null && dark !== void 0 ? dark : proProvide.dark;
if (isDark && !Array.isArray(theme === null || theme === void 0 ? void 0 : theme.algorithm)) {
return [theme === null || theme === void 0 ? void 0 : theme.algorithm, _useStyle.proTheme.darkAlgorithm].filter(Boolean);
}
if (isDark && Array.isArray(theme === null || theme === void 0 ? void 0 : theme.algorithm)) {
return [].concat((0, _toConsumableArray2.default)((theme === null || theme === void 0 ? void 0 : theme.algorithm) || []), [_useStyle.proTheme.darkAlgorithm]).filter(Boolean);
}
return theme === null || theme === void 0 ? void 0 : theme.algorithm;
};
// 自动注入 antd 的配置
var configProvider = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, rest), {}, {
locale: locale || _zh_CN.default,
theme: omitUndefined((0, _objectSpread2.default)((0, _objectSpread2.default)({}, theme), {}, {
algorithm: mergeAlgorithm()
}))
});
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.ConfigProvider, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, configProvider), {}, {
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ConfigProviderContainer, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
token: token
}))
}));
};
/**
* It returns the intl object from the context if it exists, otherwise it returns the intl object for
* 获取国际化的方法
* @param locale
* @param localeMap
* the current locale
* @returns The return value of the function is the intl object.
*/
function useIntl() {
var _useContext3 = (0, _react.useContext)(_antd.ConfigProvider.ConfigContext),
locale = _useContext3.locale;
var _useContext4 = (0, _react.useContext)(ProConfigContext),
intl = _useContext4.intl;
if (intl && intl.locale !== 'default') {
return intl || _intl.zhCNIntl;
}
if (locale !== null && locale !== void 0 && locale.locale) {
return _intl.intlMap[(0, _intl.findIntlKeyByAntdLocaleKey)(locale.locale)] || _intl.zhCNIntl;
}
return _intl.zhCNIntl;
}
ProConfigContext.displayName = 'ProProvider';
var ProProvider = exports.ProProvider = ProConfigContext;
var _default = exports.default = ProConfigContext;