From 57c1fe5a969082cb9eccc309d90450dd7705f74e Mon Sep 17 00:00:00 2001 From: Minsuk Kang Date: Fri, 6 Jan 2017 13:31:40 -0800 Subject: [PATCH] To allow only data URI as iOS does not support async image loading --- elements/Image.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) 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 };