@core-rc/cssinjs-utils
Version:
A cssinjs util library to support @core-rc and its ecosystem libraries.
28 lines (27 loc) • 1.17 kB
JavaScript
import { warning } from 'rc-util';
function getComponentToken(component, token, defaultToken, options) {
const customToken = {
...token[component],
};
if (options?.deprecatedTokens) {
const { deprecatedTokens } = options;
deprecatedTokens.forEach(([oldTokenKey, newTokenKey]) => {
if (process.env.NODE_ENV !== 'production') {
warning(!customToken?.[oldTokenKey], `Component Token \`${String(oldTokenKey)}\` of ${String(component)} is deprecated. Please use \`${String(newTokenKey)}\` instead.`);
}
// Should wrap with `if` clause, or there will be `undefined` in object.
if (customToken?.[oldTokenKey] || customToken?.[newTokenKey]) {
customToken[newTokenKey] ??= customToken?.[oldTokenKey];
}
});
}
const mergedToken = { ...defaultToken, ...customToken };
// Remove same value as global token to minimize size
Object.keys(mergedToken).forEach((key) => {
if (mergedToken[key] === token[key]) {
delete mergedToken[key];
}
});
return mergedToken;
}
export default getComponentToken;