UNPKG

@pnp/spfx-controls-react

Version:

Reusable React controls for SharePoint Framework solutions

63 lines 3.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateThemeFromColors = exports.getDefaultTheme = exports.generateThemeVariant = void 0; var scheme_utilities_1 = require("@fluentui/scheme-utilities"); var react_1 = require("@fluentui/react"); var VariantThemeProviderProps_1 = require("./VariantThemeProviderProps"); var generateThemeVariant = function (theme, themeType) { var currentTheme; switch (themeType) { case VariantThemeProviderProps_1.VariantType.None: currentTheme = theme; break; case VariantThemeProviderProps_1.VariantType.Neutral: currentTheme = (0, scheme_utilities_1.getNeutralVariant)(theme); break; case VariantThemeProviderProps_1.VariantType.Soft: currentTheme = (0, scheme_utilities_1.getSoftVariant)(theme); break; case VariantThemeProviderProps_1.VariantType.Strong: currentTheme = (0, scheme_utilities_1.getStrongVariant)(theme); break; default: currentTheme = theme; break; } return currentTheme; }; exports.generateThemeVariant = generateThemeVariant; var getDefaultTheme = function () { var _a; var currentTheme; var themeColorsFromWindow = (_a = window === null || window === void 0 ? void 0 : window.__themeState__) === null || _a === void 0 ? void 0 : _a.theme; // eslint-disable-line @typescript-eslint/no-explicit-any if (themeColorsFromWindow) { currentTheme = (0, react_1.createTheme)({ palette: themeColorsFromWindow, }); } else currentTheme = (0, react_1.getTheme)(); return currentTheme; }; exports.getDefaultTheme = getDefaultTheme; var generateThemeFromColors = function (primaryColor, textColor, backgroundColor) { var themeRules = (0, react_1.themeRulesStandardCreator)(); var colors = { primaryColor: (0, react_1.getColorFromString)(primaryColor), textColor: (0, react_1.getColorFromString)(textColor), backgroundColor: (0, react_1.getColorFromString)(backgroundColor), }; var currentIsDark = (0, react_1.isDark)(themeRules[react_1.BaseSlots[react_1.BaseSlots.backgroundColor]].color); react_1.ThemeGenerator.insureSlots(themeRules, currentIsDark); react_1.ThemeGenerator.setSlot(themeRules[react_1.BaseSlots[react_1.BaseSlots.primaryColor]], colors.primaryColor, currentIsDark, true, true); react_1.ThemeGenerator.setSlot(themeRules[react_1.BaseSlots[react_1.BaseSlots.foregroundColor]], colors.textColor, currentIsDark, true, true); react_1.ThemeGenerator.setSlot(themeRules[react_1.BaseSlots[react_1.BaseSlots.backgroundColor]], colors.backgroundColor, currentIsDark, true, true); var themeAsJson = react_1.ThemeGenerator.getThemeAsJson(themeRules); var generatedTheme = (0, react_1.createTheme)({ palette: themeAsJson, isInverted: currentIsDark, }); return generatedTheme; }; exports.generateThemeFromColors = generateThemeFromColors; //# sourceMappingURL=VariantThemeProviderHelpers.js.map