eapp-amis-theme-editor
Version:
amis主题编辑器
85 lines (77 loc) • 2.62 kB
JavaScript
/**
* amis-theme-editor v2.0.11-beta.2
* Copyright 2018-2023 @fex
*/
;
Object.defineProperty(exports, '__esModule', { value: true });
var cloneDeep = require('lodash/cloneDeep');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var cloneDeep__default = /*#__PURE__*/_interopDefaultLegacy(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__default["default"](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;
}
}
exports.getValueByPath = getValueByPath;