UNPKG

@visactor/vchart

Version:

charts lib based @visactor/VGrammar

45 lines (29 loc) 1.67 kB
export * from "./light"; export * from "./dark"; import { isString } from "@visactor/vutils"; import { mergeTheme } from "../../util/theme/merge-theme"; import { lightTheme } from "./light"; import { preprocessTheme } from "../../util/theme/preprocess"; export const builtinThemes = { [lightTheme.name]: lightTheme }; export const defaultThemeName = lightTheme.name; export const themes = new Map(Object.keys(builtinThemes).map((key => [ key, builtinThemes[key] ]))); const transformedThemes = new Map(Object.keys(builtinThemes).map((key => [ key, preprocessTheme(builtinThemes[key]) ]))); export const hasThemeMerged = new Map(Object.keys(builtinThemes).map((key => [ key, key === defaultThemeName ]))); export const registerTheme = (name, theme) => { if (!name) return; const mergedTheme = getMergedTheme(theme); themes.set(name, mergedTheme), transformedThemes.set(name, preprocessTheme(mergedTheme)), hasThemeMerged.set(name, !0); }; export const getTheme = (name = defaultThemeName, transformed = !1) => (hasThemeMerged.has(name) && !hasThemeMerged.get(name) && registerTheme(name, themes.get(name)), transformed ? transformedThemes.get(name) : themes.get(name)); export const removeTheme = name => themes.delete(name) && transformedThemes.delete(name) && hasThemeMerged.delete(name); export const themeExist = name => !!isString(name) && themes.has(name); export const getMergedTheme = theme => { var _a; const baseThemeName = null !== (_a = theme.type) && void 0 !== _a ? _a : defaultThemeName, baseTheme = getTheme(baseThemeName); return mergeTheme({}, baseTheme, theme); }; //# sourceMappingURL=index.js.map