var BRp = {}; BRp.getCachedImage = function( url, crossOrigin, onLoad ){ var r = this; var imageCache = r.imageCache = r.imageCache || {}; var cache = imageCache[ url ]; if( cache ){ if( !cache.image.complete ){ cache.image.addEventListener('load', onLoad); } return cache.image; } else { cache = imageCache[ url ] = imageCache[ url ] || {}; var image = cache.image = new Image(); // eslint-disable-line no-undef image.addEventListener('load', onLoad); image.addEventListener('error', function(){ image.error = true; }); // #1582 safari doesn't load data uris with crossOrigin properly // https://bugs.webkit.org/show_bug.cgi?id=123978 var dataUriPrefix = 'data:'; var isDataUri = url.substring( 0, dataUriPrefix.length ).toLowerCase() === dataUriPrefix; if( !isDataUri ){ // if crossorigin is 'null'(stringified), then manually set it to null crossOrigin = crossOrigin === 'null' ? null : crossOrigin; image.crossOrigin = crossOrigin; // prevent tainted canvas } image.src = url; return image; } }; export default BRp;