(function (global, factory) {

typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
(global.retinajs = factory());

}(this, (function () { 'use strict';

var hasWindow = typeof window !== 'undefined'; var environment = Math.round(hasWindow ? window.devicePixelRatio || 1 : 1); var srcReplace = /(.[A-z]{3,4}/?(?.*)?)$/; var inlineReplace = /url((‘|“)?(+)('|”)?)/i; var selector = '[data-rjs]'; var processedAttr = 'data-rjs-processed'; function arrayify(object) {

return Array.prototype.slice.call(object);

} function chooseCap(cap) {

var numericCap = parseInt(cap, 10);
if (environment < numericCap) {
  return environment;
} else {
  return numericCap;
}

} function forceOriginalDimensions(image) {

if (!image.hasAttribute('data-no-resize')) {
  if (image.offsetWidth === 0 && image.offsetHeight === 0) {
    image.setAttribute('width', image.naturalWidth);
    image.setAttribute('height', image.naturalHeight);
  } else {
    image.setAttribute('width', image.offsetWidth);
    image.setAttribute('height', image.offsetHeight);
  }
}
return image;

} function setSourceIfAvailable(image, retinaURL) {

var imgType = image.nodeName.toLowerCase();
var testImage = document.createElement('img');
testImage.addEventListener('load', function () {
  if (imgType === 'img') {
    forceOriginalDimensions(image).setAttribute('src', retinaURL);
  } else {
    image.style.backgroundImage = 'url(' + retinaURL + ')';
  }
});
testImage.setAttribute('src', retinaURL);
image.setAttribute(processedAttr, true);

} function dynamicSwapImage(image, src) {

var rjs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
var cap = chooseCap(rjs);
if (src && cap > 1) {
  var newSrc = src.replace(srcReplace, '@' + cap + 'x$1');
  setSourceIfAvailable(image, newSrc);
}

} function manualSwapImage(image, src, hdsrc) {

if (environment > 1) {
  setSourceIfAvailable(image, hdsrc);
}

} function getImages(images) {

if (!images) {
  return typeof document !== 'undefined' ? arrayify(document.querySelectorAll(selector)) : [];
} else {
  return typeof images.forEach === 'function' ? images : arrayify(images);
}

} function cleanBgImg(img) {

return img.style.backgroundImage.replace(inlineReplace, '$2');

} function retina(images) {

getImages(images).forEach(function (img) {
  if (!img.getAttribute(processedAttr)) {
    var isImg = img.nodeName.toLowerCase() === 'img';
    var src = isImg ? img.getAttribute('src') : cleanBgImg(img);
    var rjs = img.getAttribute('data-rjs');
    var rjsIsNumber = !isNaN(parseInt(rjs, 10));
    if (rjs === null) {
      return;
    }
    if (rjsIsNumber) {
      dynamicSwapImage(img, src, rjs);
    } else {
      manualSwapImage(img, src, rjs);
    }
  }
});

} if (hasWindow) {

window.addEventListener('load', function () {
  retina();
});
window.retinajs = retina;

}

return retina;

}))); //# sourceMappingURL=retina.js.map