UNPKG

lazysizes

Version:

High performance (jankfree) lazy loader for images (including responsive images), iframes and scripts (widgets).

2 lines 2.01 kB
/*! lazysizes - v4.0.0 */ !function(a,b){var c=function(){b(a.lazySizes),a.removeEventListener("lazyunveilread",c,!0)};b=b.bind(null,a,a.document),"object"==typeof module&&module.exports?b(require("lazysizes")):a.lazySizes?c():a.addEventListener("lazyunveilread",c,!0)}(window,function(a,b,c){"use strict";function d(a){var b=parseFloat(a.getAttribute("data-aspectratio")),c=a.getAttribute(n.srcsetAttr)||a.getAttribute("srcset");return!b&&c.match(q)&&(b="w"==RegExp.$2?RegExp.$1/RegExp.$3:RegExp.$3/RegExp.$1),b}function e(a){return a.offsetWidth/a.offsetHeight}function f(a){return'source[data-tag~="'+a+'"]'}function g(b){var c=b.parentNode,d=s.test(c.nodeName||""),e=(a.getComputedStyle(b)||{}).fontFamily,g=null;return d&&(n.autoArtDirect||p.test(e||""))&&(g={picture:c,img:b,tags:e.match(r)},g.tags&&(g.selector=g.tags[1].split(t).map(f).join(","))),g}function h(b){var c=b.getAttribute("media");return{source:b,aspectRatio:d(b),isSelected:!c||a.matchMedia(c).matches}}function i(a,b){return a.aspectRatio<b.aspectRatio}function j(a,b){var c,d,e=a[0];for(c=1,d=a.length;d>c;c++)Math.abs(e.aspectRatio-b)>Math.abs(a[c].aspectRatio-b)&&(e=a[c]);return e}function k(a,b){a._lsMedia=b,c.rAF(function(){a._lsMedia&&delete a._lsMedia,a.setAttribute("media",b)})}function l(a){var b=e(a.img),c=u.call(a.picture.getElementsByTagName("source")).map(h).sort(i),d=a.selector?c.filter(function(b){return b.source.matches(a.selector)}):c,f=j(d,b);f.isSelected||k(f.source,"(min-width: 1px)"),c.filter(function(a){return a!=f&&a.isSelected}).forEach(function(a){k(a.source,"(x)")})}function m(a){if(a.detail.instance==c){var b=a.target,d=g(b);d&&l(d)}}if(a.addEventListener){var n=c.cfg,o=(a.Element||Node||a.HTMLElement).prototype,p=/artdirect/,q=/\s+(\d+)(w|h)\s+(\d+)(w|h)/,r=/artdirect["']*\s*:\s*["']*(.+?)(?=($|'|"|;))/,s=/^picture$/i,t=/[\s,]+/g,u=[].slice;o.matches||(o.matches=o.matchesSelector||o.webkitMatchesSelector||o.msMatchesSelector||o.oMatchesSelector),a.addEventListener("lazybeforesizes",m,!0)}});