Blame view

天文台pc/tianwentai-ui/node_modules/@mui/private-theming/ThemeProvider/ThemeProvider.js 2.93 KB
bc518174   王天杨   提交两个项目文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
  "use strict";
  
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
  Object.defineProperty(exports, "__esModule", {
    value: true
  });
  exports.default = void 0;
  var React = _interopRequireWildcard(require("react"));
  var _propTypes = _interopRequireDefault(require("prop-types"));
  var _exactProp = _interopRequireDefault(require("@mui/utils/exactProp"));
  var _ThemeContext = _interopRequireDefault(require("../useTheme/ThemeContext"));
  var _useTheme = _interopRequireDefault(require("../useTheme"));
  var _nested = _interopRequireDefault(require("./nested"));
  var _jsxRuntime = require("react/jsx-runtime");
  // To support composition of theme.
  function mergeOuterLocalTheme(outerTheme, localTheme) {
    if (typeof localTheme === 'function') {
      const mergedTheme = localTheme(outerTheme);
      if (process.env.NODE_ENV !== 'production') {
        if (!mergedTheme) {
          console.error(['MUI: You should return an object from your theme function, i.e.', '<ThemeProvider theme={() => ({})} />'].join('\n'));
        }
      }
      return mergedTheme;
    }
    return {
      ...outerTheme,
      ...localTheme
    };
  }
  
  /**
   * This component takes a `theme` prop.
   * It makes the `theme` available down the React tree thanks to React context.
   * This component should preferably be used at **the root of your component tree**.
   */
  function ThemeProvider(props) {
    const {
      children,
      theme: localTheme
    } = props;
    const outerTheme = (0, _useTheme.default)();
    if (process.env.NODE_ENV !== 'production') {
      if (outerTheme === null && typeof localTheme === 'function') {
        console.error(['MUI: You are providing a theme function prop to the ThemeProvider component:', '<ThemeProvider theme={outerTheme => outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\n'));
      }
    }
    const theme = React.useMemo(() => {
      const output = outerTheme === null ? {
        ...localTheme
      } : mergeOuterLocalTheme(outerTheme, localTheme);
      if (output != null) {
        output[_nested.default] = outerTheme !== null;
      }
      return output;
    }, [localTheme, outerTheme]);
    return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ThemeContext.default.Provider, {
      value: theme,
      children: children
    });
  }
  process.env.NODE_ENV !== "production" ? ThemeProvider.propTypes = {
    /**
     * Your component tree.
     */
    children: _propTypes.default.node,
    /**
     * A theme object. You can provide a function to extend the outer theme.
     */
    theme: _propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.func]).isRequired
  } : void 0;
  if (process.env.NODE_ENV !== 'production') {
    process.env.NODE_ENV !== "production" ? ThemeProvider.propTypes = (0, _exactProp.default)(ThemeProvider.propTypes) : void 0;
  }
  var _default = exports.default = ThemeProvider;