amis-theme-editor
Version:
amis主题编辑器
175 lines (171 loc) • 5.3 kB
JavaScript
/**
* amis-theme-editor v2.0.22-beta.2
* Copyright 2018-2023 @fex
*/
import cloneDeep from 'lodash/cloneDeep';
/**
* 根据路径获取默认值
*/
function getValueByPath(path, data) {
try {
if (!path || !data) {
return null;
}
var res_1 = {};
var getValue_1 = function (p) {
var keys = p.split('.');
var value = cloneDeep(data.themeConfig.component);
var defaultToken = '';
var _loop_1 = function (i) {
var key = keys[i];
var isVar = /\$\{(.*)\}/.exec(key) || [];
if (isVar[1]) {
key = data[isVar[1]] || 'default';
}
if (Array.isArray(value)) {
value = value.find(function (n) { return n.type === key; });
}
else {
if (key === 'hover' || key === 'active' || key === 'disabled') {
defaultToken = value['default'].token;
}
value = value[key];
}
};
for (var i = 0; i < keys.length; i++) {
_loop_1(i);
}
if (defaultToken && value) {
// 继承default
if (typeof value === 'object') {
for (var key in value) {
if (value[key] === "var(".concat(defaultToken).concat(key, ")")) {
value[key] = 'inherit';
}
}
}
else {
if (value === "var(".concat(defaultToken).concat(keys[keys.length - 1], ")")) {
value = 'inherit';
}
}
}
return value;
};
if (Array.isArray(path)) {
path.forEach(function (p) {
var value = getValue_1(p);
if (typeof value === 'string') {
value = { color: value };
}
res_1 = Object.assign(res_1, value);
});
}
else {
res_1 = getValue_1(path);
}
return res_1;
}
catch (e) {
return null;
}
}
/**
* 获取继承值
*/
function getInheritValue(path, data) {
try {
if (!path || !data) {
return null;
}
var res_2 = {};
var getValue_2 = function (p) {
var keys = p.split('.');
var value = cloneDeep(data.themeConfig.component);
var defaultToken = '';
var _loop_2 = function (i) {
var key = keys[i];
var isVar = /\$\{(.*)\}/.exec(key) || [];
if (isVar[1]) {
key = data[isVar[1]] || 'default';
}
if (Array.isArray(value)) {
value = value.find(function (n) { return n.type === key; });
}
else {
if (key === 'hover' || key === 'active' || key === 'disabled') {
defaultToken = value['default'].token;
value = value['default'];
}
else {
value = value[key];
}
}
if (!value) {
return "break";
}
};
for (var i = 0; i < keys.length; i++) {
var state_1 = _loop_2(i);
if (state_1 === "break")
break;
}
if (defaultToken && value) {
return value;
}
return null;
};
if (Array.isArray(path)) {
path.forEach(function (p) {
var value = getValue_2(p);
if (typeof value === 'string') {
value = { color: value };
}
res_2 = Object.assign(res_2, value);
});
}
else {
res_2 = getValue_2(path);
}
return res_2;
}
catch (e) {
return null;
}
}
// 处理传入的继承数据
function formatInheritData(data) {
if (typeof data === 'string' && data.indexOf('inherit:') > -1) {
return 'inherit';
}
if (!data || typeof data !== 'object') {
return data;
}
data = cloneDeep(data);
for (var key in data) {
if (typeof data[key] === 'string' && data[key].indexOf('inherit:') > -1) {
data[key] = 'inherit';
}
}
return data;
}
// 设置继承数据
function setInheritData(value, editorInheritValue) {
if (value && editorInheritValue) {
if (typeof value === 'string') {
if (value === 'inherit') {
value = 'inherit:' + (editorInheritValue || '');
}
}
else {
value = cloneDeep(value);
for (var key in value) {
if (value[key] === 'inherit') {
value[key] = 'inherit:' + (editorInheritValue[key] || '');
}
}
}
}
return value;
}
export { formatInheritData, getInheritValue, getValueByPath, setInheritData };