diff --git a/elements/Image.js b/elements/Image.js index 05fdcc27..47871e23 100644 --- a/elements/Image.js +++ b/elements/Image.js @@ -18,11 +18,15 @@ class Image extends Shape { height: numberProp.isRequired, href: PropTypes.oneOfType([ PropTypes.number, - PropTypes.shape({ - uri: PropTypes.string.isRequired, - width: PropTypes.number.isRequired, - height: PropTypes.number.isRequired - }) + function(props, propName, componentName) { + if (Object.keys(props[propName]).length != 1 || + !/^\s*data:([a-z]+\/[a-z]+(;[a-z\-]+\=[a-z\-]+)?)?(;base64)?,[a-z0-9\!\$\&\'\,\(\)\*\+\,\;\=\-\.\_\~\:\@\/\?\%\s]*\s*$/i.test(props[propName].uri)) { + return new Error( + 'Invalid prop `' + propName + '` supplied to' + + ' `' + componentName + '`. Validation failed.' + ); + } + } ]).isRequired, preserveAspectRatio: PropTypes.string };