| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- (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
|