@visactor/vchart
Version:
charts lib based @visactor/VGrammar
43 lines (35 loc) • 1.99 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: !0
}), exports.transformSeriesThemeToMerge = exports.transformColorSchemeToMerge = exports.mergeTheme = void 0;
const vutils_1 = require("@visactor/vutils"), util_1 = require("../../theme/color-scheme/util"), vutils_extension_1 = require("@visactor/vutils-extension"), factory_1 = require("../../core/factory");
function mergeTheme(target, ...sources) {
return (0, vutils_extension_1.mergeSpec)(transformThemeToMerge(target), ...sources.map(transformThemeToMerge));
}
function transformThemeToMerge(theme) {
var _a;
if (!theme) return theme;
const colorScheme = transformColorSchemeToMerge(theme.colorScheme);
return Object.assign({}, theme, {
colorScheme: colorScheme,
token: null !== (_a = theme.token) && void 0 !== _a ? _a : {},
series: Object.assign({}, theme.series)
});
}
function transformColorSchemeToMerge(colorScheme) {
return colorScheme && (colorScheme = Object.keys(colorScheme).reduce(((scheme, key) => {
const value = colorScheme[key];
return scheme[key] = (0, util_1.transformColorSchemeToStandardStruct)(value), scheme;
}), {})), colorScheme;
}
function transformSeriesThemeToMerge(seriesTheme, seriesType, getTheme) {
const seriesMarkInfoMap = factory_1.Factory.getSeriesMarkMap(seriesType);
if (!seriesMarkInfoMap) return seriesTheme;
const newTheme = {};
return Object.values(seriesMarkInfoMap).forEach((({type: type, name: name}) => {
newTheme[name] = (0, vutils_extension_1.mergeSpec)({}, getTheme("mark", (0, vutils_1.array)(type)[0]), getTheme("markByName", name), null == seriesTheme ? void 0 : seriesTheme[name]);
})), Object.assign(Object.assign({}, seriesTheme), newTheme);
}
exports.mergeTheme = mergeTheme, exports.transformColorSchemeToMerge = transformColorSchemeToMerge,
exports.transformSeriesThemeToMerge = transformSeriesThemeToMerge;
//# sourceMappingURL=merge-theme.js.map