UNPKG

@visactor/vchart

Version:

charts lib based @visactor/VGrammar

40 lines (32 loc) 1.61 kB
import { array } from "@visactor/vutils"; import { transformColorSchemeToStandardStruct } from "../../theme/color-scheme/util"; import { mergeSpec } from "@visactor/vutils-extension"; import { Factory } from "../../core/factory"; export function mergeTheme(target, ...sources) { return 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) }); } export function transformColorSchemeToMerge(colorScheme) { return colorScheme && (colorScheme = Object.keys(colorScheme).reduce(((scheme, key) => { const value = colorScheme[key]; return scheme[key] = transformColorSchemeToStandardStruct(value), scheme; }), {})), colorScheme; } export function transformSeriesThemeToMerge(seriesTheme, seriesType, getTheme) { const seriesMarkInfoMap = Factory.getSeriesMarkMap(seriesType); if (!seriesMarkInfoMap) return seriesTheme; const newTheme = {}; return Object.values(seriesMarkInfoMap).forEach((({type: type, name: name}) => { newTheme[name] = mergeSpec({}, getTheme("mark", array(type)[0]), getTheme("markByName", name), null == seriesTheme ? void 0 : seriesTheme[name]); })), Object.assign(Object.assign({}, seriesTheme), newTheme); } //# sourceMappingURL=merge-theme.js.map