UNPKG

@discoveryjs/discovery

Version:

Frontend framework for rapid data (JSON) analysis, shareable serverless reports and dashboards

51 lines (50 loc) 1.82 kB
import { resolveColorSchemeValue } from "../color-scheme.js"; const stylesBeforeApply = /* @__PURE__ */ new WeakMap(); const styles = { "font-family": "Tahoma, Verdana, Arial, sans-serif", "font-size": "14px", "line-height": "1.6", "-webkit-text-size-adjust": "none", "text-size-adjust": "none", "background-color": "var(--discovery-background-color, white)", "color": "var(--discovery-color, black)" }; const darkStyles = { "--discovery-background-color": "#242424", "--discovery-color": "#cccccc" }; function saveContainerStyleProp(container, prop, styles2) { if (prop in styles2 === false) { styles2[prop] = [ container.style.getPropertyValue(prop), container.style.getPropertyPriority(prop) ]; } } export function applyContainerStyles(container, colorScheme) { const containerStyles = stylesBeforeApply.get(container) || /* @__PURE__ */ Object.create(null); const isDarkColorScheme = resolveColorSchemeValue(colorScheme) === "dark"; for (const [prop, value] of Object.entries(styles)) { saveContainerStyleProp(container, prop, containerStyles); container.style.setProperty(prop, value); } for (const [prop, value] of Object.entries(darkStyles)) { saveContainerStyleProp(container, prop, containerStyles); if (isDarkColorScheme) { container.style.setProperty(prop, value); } else { container.style.removeProperty(prop); } } stylesBeforeApply.set(container, containerStyles); return isDarkColorScheme; } export function rollbackContainerStyles(container) { const containerStyles = stylesBeforeApply.get(container); if (containerStyles !== void 0) { for (const [prop, value] of Object.entries(containerStyles)) { container.style.setProperty(prop, ...value); } } stylesBeforeApply.delete(container); }