@pnp/spfx-controls-react
Version:
Reusable React controls for SharePoint Framework solutions
63 lines • 3.1 kB
JavaScript
;
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