31 lines
1.4 KiB
JavaScript
31 lines
1.4 KiB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
export default function requirePropFactory(componentNameInError, Component) {
|
|
if (process.env.NODE_ENV === 'production') {
|
|
return function () {
|
|
return null;
|
|
};
|
|
}
|
|
|
|
// eslint-disable-next-line react/forbid-foreign-prop-types
|
|
var prevPropTypes = Component ? _extends({}, Component.propTypes) : null;
|
|
var requireProp = function requireProp(requiredProp) {
|
|
return function (props, propName, componentName, location, propFullName) {
|
|
var propFullNameSafe = propFullName || propName;
|
|
var defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];
|
|
if (defaultTypeChecker) {
|
|
for (var _len = arguments.length, args = new Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {
|
|
args[_key - 5] = arguments[_key];
|
|
}
|
|
var typeCheckerResult = defaultTypeChecker.apply(void 0, [props, propName, componentName, location, propFullName].concat(args));
|
|
if (typeCheckerResult) {
|
|
return typeCheckerResult;
|
|
}
|
|
}
|
|
if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {
|
|
return new Error("The prop `".concat(propFullNameSafe, "` of ") + "`".concat(componentNameInError, "` can only be used together with the `").concat(requiredProp, "` prop."));
|
|
}
|
|
return null;
|
|
};
|
|
};
|
|
return requireProp;
|
|
} |