69 lines
1.9 KiB
JavaScript
69 lines
1.9 KiB
JavaScript
import deepmerge from 'deepmerge';
|
|
import constant from '../../../i18n/theme-editor.json';
|
|
|
|
export const filterConfigType = (name) => {
|
|
switch (name) {
|
|
case 'color':
|
|
case 'typography':
|
|
case 'border':
|
|
return 'global';
|
|
default:
|
|
return 'local';
|
|
}
|
|
};
|
|
|
|
export const filterGlobalValue = (defaultConfig, userConfig) => {
|
|
const valueObject = {};
|
|
const globalArr = ['color', 'typography', 'border'];
|
|
globalArr.forEach((global) => {
|
|
const configObj = {};
|
|
defaultConfig
|
|
.find(config => (config.name === global))
|
|
.config.forEach(c => (configObj[c.key] = deepmerge({}, c)));
|
|
valueObject[global] = configObj;
|
|
Object.keys(configObj).forEach((c) => {
|
|
if (userConfig.global[c]) {
|
|
configObj[c].value = userConfig.global[c];
|
|
}
|
|
});
|
|
});
|
|
return valueObject;
|
|
};
|
|
|
|
export const getStyleDisplayValue = (displayValue, global) => {
|
|
if (displayValue.startsWith('$')) {
|
|
return global[displayValue].value;
|
|
}
|
|
return displayValue;
|
|
};
|
|
|
|
const getLang = () => {
|
|
return location.hash.replace('#', '').split('/')[1] || 'zh-CN';
|
|
};
|
|
|
|
const getNameFromI18N = (name) => {
|
|
const lang = getLang();
|
|
return constant.filter(config => config.lang === lang)[0][name];
|
|
};
|
|
|
|
export const getVariableDisplayName = (key) => {
|
|
return getNameFromI18N('variable-name')[key] || key;
|
|
};
|
|
|
|
export const getStyleDisplayName = (config, componentName) => {
|
|
const displayNameMap = getNameFromI18N('display-name');
|
|
if (config.name) {
|
|
return getVariableDisplayName(config.key.replace('$--', ''));
|
|
}
|
|
let displayName = config.key.replace(`$--${componentName}-`, '');
|
|
Object.keys(displayNameMap).forEach((name) => {
|
|
displayName = displayName.replace(name, displayNameMap[name]);
|
|
});
|
|
displayName = displayName.replace(/-/g, ' ');
|
|
return displayName.trim();
|
|
};
|
|
|
|
export const getActionDisplayName = (key) => {
|
|
return getNameFromI18N('action')[key] || key;
|
|
};
|