Blame view

天文台pc/tianwentai-ui/node_modules/@mui/utils/requirePropFactory/requirePropFactory.js 1.11 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
  "use strict";
  
  Object.defineProperty(exports, "__esModule", {
    value: true
  });
  exports.default = requirePropFactory;
  function requirePropFactory(componentNameInError, Component) {
    if (process.env.NODE_ENV === 'production') {
      return () => () => null;
    }
  
    // eslint-disable-next-line react/forbid-foreign-prop-types
    const prevPropTypes = Component ? {
      ...Component.propTypes
    } : null;
    const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {
      const propFullNameSafe = propFullName || propName;
      const defaultTypeChecker = prevPropTypes?.[propFullNameSafe];
      if (defaultTypeChecker) {
        const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);
        if (typeCheckerResult) {
          return typeCheckerResult;
        }
      }
      if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {
        return new Error(`The prop \`${propFullNameSafe}\` of ` + `\`${componentNameInError}\` can only be used together with the \`${requiredProp}\` prop.`);
      }
      return null;
    };
    return requireProp;
  }