File: /var/www/elpuerto/html/wp-content/plugins/a3-lazy-load/assets/js/jquery.lazyloadxt.srcset.js
/*! Lazy Load XT v1.1.0 2016-01-12
* http://ressio.github.io/lazy-load-xt
* (C) 2016 RESS.io
* Licensed under MIT */
(function ($, window, document, undefined) {
var options = $.lazyLoadXT,
srcsetSupport = (function () {
return 'srcset' in (new Image());
})(),
reUrl = /^\s*(\S*)/,
reWidth = /\S\s+(\d+)w/,
reHeight = /\S\s+(\d+)h/,
reDpr = /\S\s+([\d\.]+)x/,
infty = [0, Infinity],
one = [0, 1],
srcsetOptions = {
srcsetAttr: 'data-srcset',
srcsetExtended: true,
srcsetBaseAttr: 'data-srcset-base',
srcsetExtAttr: 'data-srcset-ext'
},
viewport = {
w: 0,
h: 0,
x: 0
},
property,
limit;
for (property in srcsetOptions) {
if (options[property] === undefined) {
options[property] = srcsetOptions[property];
}
}
options.selector += ',img[' + options.srcsetAttr + '],source[' + options.srcsetAttr + ']';
function mathFilter(array, action) {
return Math[action].apply(null, $.map(array, function (item) {
return item[property];
}));
}
function compareMax(item) {
return item[property] >= viewport[property] || item[property] === limit;
}
function compareMin(item) {
return item[property] === limit;
}
function parseSrcset($el) {
var srcset = $el.attr(options.srcsetAttr);
if (!srcset) {
return false;
}
var list = $.map(srcset.replace(/(\s[\d.]+[whx]),/g, '$1 @,@ ').split(' @,@ '), function (item) {
return {
url: reUrl.exec(item)[1],
w: parseFloat((reWidth.exec(item) || infty)[1]),
h: parseFloat((reHeight.exec(item) || infty)[1]),
x: parseFloat((reDpr.exec(item) || one)[1])
};
});
if (!list.length) {
return false;
}
var documentElement = document.documentElement,
whx,
src;
viewport = {
w: window.innerWidth || documentElement.clientWidth,
h: window.innerHeight || documentElement.clientHeight,
x: window.devicePixelRatio || 1
};
// Notice for DOMtastic users: currently $.grep method is not implemented in DOMtastic
for (whx in viewport) {
property = whx;
limit = mathFilter(list, 'max');
list = $.grep(list, compareMax);
}
for (whx in viewport) {
property = whx;
limit = mathFilter(list, 'min');
list = $.grep(list, compareMin);
}
src = list[0].url;
if (options.srcsetExtended) {
src = ($el.attr(options.srcsetBaseAttr) || '') + src + ($el.attr(options.srcsetExtAttr) || '');
}
return src;
}
$(document).on('lazyshow', 'img', function (e, $el) {
var srcset = $el.attr(options.srcsetAttr);
if (srcset) {
if (!options.srcsetExtended && srcsetSupport) {
$el.attr('srcset', srcset);
$el.attr('data-srcset', '');
} else {
$el.lazyLoadXT.srcAttr = parseSrcset;
}
}
});
$(document).on('lazyshow', 'source', function (e, $el) {
$(this).removeClass('lazy-hidden');
var srcset = $el.attr(options.srcsetAttr);
if (srcset) {
if (!options.srcsetExtended && srcsetSupport) {
$el.attr('srcset', srcset);
$el.attr('data-srcset', '');
} else {
$el.lazyLoadXT.srcAttr = parseSrcset;
}
}
});
})(window.jQuery || window.Zepto || window.$, window, document);