@discoveryjs/discovery
Version:
Frontend framework for rapid data (JSON) analysis, shareable serverless reports and dashboards
51 lines (50 loc) • 1.82 kB
JavaScript
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);
}