tinper-bee-core/js/componentOrElement.js

33 lines
1004 B
JavaScript

import React from 'react';
import createChainableTypeChecker from './utils/createChainableTypeChecker';
function validate(props, propName, componentName, location, propFullName) {
const propValue = props[propName];
const propType = typeof propValue;
if (React.isValidElement(propValue)) {
return new Error(
`Invalid ${location} \`${propFullName}\` of type ReactElement ` +
`supplied to \`${componentName}\`, expected a ReactComponent or a ` +
'DOMElement. You can usually obtain a ReactComponent or DOMElement ' +
'from a ReactElement by attaching a ref to it.'
);
}
if (
(propType !== 'object' || typeof propValue.render !== 'function') &&
propValue.nodeType !== 1
) {
return new Error(
`Invalid ${location} \`${propFullName}\` of value \`${propValue}\` ` +
`supplied to \`${componentName}\`, expected a ReactComponent or a ` +
'DOMElement.'
);
}
return null;
}
export default createChainableTypeChecker(validate);