UNPKG

@visactor/vchart

Version:

charts lib based @visactor/VGrammar

46 lines (29 loc) 1.48 kB
export * from "./light"; export * from "./dark"; import { isString } from "@visactor/vutils"; import { mergeTheme } from "../../util/theme/merge-theme"; import { lightTheme } from "./light"; import { getFunnelTheme } from "./common/series/funnel"; 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; 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), hasThemeMerged.set(name, !0); }; export const getTheme = (name = defaultThemeName) => (hasThemeMerged.has(name) && !hasThemeMerged.get(name) && registerTheme(name, themes.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); }; export { getFunnelTheme }; //# sourceMappingURL=index.js.map