UNPKG

@fluentui/react

Version:

Reusable React components for building web experiences.

59 lines 2.3 kB
import * as React from 'react'; import { css } from '@fluentui/utilities'; import { useDocument } from '@fluentui/react-window-provider'; import { makeStyles } from './makeStyles'; // eslint-disable-next-line @typescript-eslint/no-deprecated var useThemeProviderStyles = makeStyles(function (theme) { var semanticColors = theme.semanticColors, fonts = theme.fonts; return { body: [ { color: semanticColors.bodyText, background: semanticColors.bodyBackground, fontFamily: fonts.medium.fontFamily, fontWeight: fonts.medium.fontWeight, fontSize: fonts.medium.fontSize, MozOsxFontSmoothing: fonts.medium.MozOsxFontSmoothing, WebkitFontSmoothing: fonts.medium.WebkitFontSmoothing, }, ], }; }); /** * Hook to add class to body element. */ function useApplyClassToBody(state, classesToApply) { var _a; var applyTo = state.applyTo; var applyToBody = applyTo === 'body'; var body = (_a = useDocument()) === null || _a === void 0 ? void 0 : _a.body; React.useEffect(function () { if (!applyToBody || !body) { return; } for (var _i = 0, classesToApply_1 = classesToApply; _i < classesToApply_1.length; _i++) { var classToApply = classesToApply_1[_i]; if (classToApply) { body.classList.add(classToApply); } } return function () { if (!applyToBody || !body) { return; } for (var _i = 0, classesToApply_2 = classesToApply; _i < classesToApply_2.length; _i++) { var classToApply = classesToApply_2[_i]; if (classToApply) { body.classList.remove(classToApply); } } }; }, [applyToBody, body, classesToApply]); } export function useThemeProviderClasses(state) { var classes = useThemeProviderStyles(state); var className = state.className, applyTo = state.applyTo; useApplyClassToBody(state, [classes.root, classes.body]); state.className = css(className, classes.root, applyTo === 'element' && classes.body); } //# sourceMappingURL=useThemeProviderClasses.js.map