Blame view

天文台pc/tianwentai-ui/node_modules/@mui/system/esm/memoTheme.js 760 Bytes
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
  import preprocessStyles from "./preprocessStyles.js";
  
  /* eslint-disable @typescript-eslint/naming-convention */
  
  // We need to pass an argument as `{ theme }` for PigmentCSS, but we don't want to
  // allocate more objects.
  const arg = {
    theme: undefined
  };
  
  /**
   * Memoize style function on theme.
   * Intended to be used in styled() calls that only need access to the theme.
   */
  export default function unstable_memoTheme(styleFn) {
    let lastValue;
    let lastTheme;
    return function styleMemoized(props) {
      let value = lastValue;
      if (value === undefined || props.theme !== lastTheme) {
        arg.theme = props.theme;
        value = preprocessStyles(styleFn(arg));
        lastValue = value;
        lastTheme = props.theme;
      }
      return value;
    };
  }