Blame view

天文台pc/tianwentai-ui/node_modules/@mui/private-theming/esm/ThemeProvider/ThemeProvider.js 2.39 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
  import * as React from 'react';
  import PropTypes from 'prop-types';
  import exactProp from '@mui/utils/exactProp';
  import ThemeContext from "../useTheme/ThemeContext.js";
  import useTheme from "../useTheme/index.js";
  import nested from "./nested.js";
  
  // To support composition of theme.
  import { jsx as _jsx } from "react/jsx-runtime";
  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 = useTheme();
    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] = outerTheme !== null;
      }
      return output;
    }, [localTheme, outerTheme]);
    return /*#__PURE__*/_jsx(ThemeContext.Provider, {
      value: theme,
      children: children
    });
  }
  process.env.NODE_ENV !== "production" ? ThemeProvider.propTypes = {
    /**
     * Your component tree.
     */
    children: PropTypes.node,
    /**
     * A theme object. You can provide a function to extend the outer theme.
     */
    theme: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired
  } : void 0;
  if (process.env.NODE_ENV !== 'production') {
    process.env.NODE_ENV !== "production" ? ThemeProvider.propTypes = exactProp(ThemeProvider.propTypes) : void 0;
  }
  export default ThemeProvider;