lazysizes
Version:
High performance (jankfree) lazy loader for images (including responsive images), iframes and scripts (widgets).
3 lines (2 loc) • 6.2 kB
JavaScript
/*! lazysizes - v5.3.2 */
!function(e,n){var t=function(){n(e.lazySizes),e.removeEventListener("lazyunveilread",t,!0)};n=n.bind(null,e,e.document),"object"==typeof module&&module.exports?n(require("lazysizes")):"function"==typeof define&&define.amd?define(["lazysizes"],n):e.lazySizes?t():e.addEventListener("lazyunveilread",t,!0)}(window,function(a,o,L){"use strict";var s,l,r,d,c,u,f,t,m,y,h,i,p,T,e,v,g,z,E,M,n,C,q;function b(){E.length&&(g=0,E.d())}function S(){for(var e=0,n=i.length;e<n;e++)!L.hC(i[e],q.lazyClass)&&I(i[e])&&L.aC(i[e],q.lazyClass)}function x(e){var n;(n=e.match(t))?this.urls[n[1]]=s.map[n[2]]||n[2]:this.urls.include=s.map[e]||e}function H(e){var n,t,i;return e=e.trim(),(n=(t=(e=s.map[e]||e).match(m))?(i=t[1],{condition:q.include.conditions[t[3]]||q.customMedia[t[3]]||t[2]||null,name:t[3]}):(i=e,{condition:null,name:""})).urls={},(s.map[i]||i).split(f).forEach(x,n),!n.urls.include&&n.urls.amd&&(this.saved=!0,n.initial=this),n}function A(e,n){var t,i=!n.condition;return n.condition&&(r||((l=l||o.querySelector(s.contentElement))?(t=(p(l,":after").getPropertyValue("content")||"none").replace(y,""),r={},t&&(r[t]=1),(t=(p(l,":before").getPropertyValue("content")||"none").replace(y,""))&&(r[t]=1)):r={}),r[n.name]?i=!0:a.matchMedia&&"string"==typeof n.condition?i=(matchMedia(n.condition)||{}).matches:"function"==typeof n.condition&&(i=n.condition(e,n))),i}function I(e){var n,t,i=e.lazyInclude;if(i&&i.candidates)for(n=0;n<i.candidates.length&&!A(e,t=i.candidates[n]);n++);return t&&t!=i.current||(t=null),t}function w(t,e,n){var i,a,l,r;u[t]?n&&(!0===u[t]?setTimeout(n):u[t].push(n)):(i=o.createElement(!0===e?"script":"link"),a=o.getElementsByTagName("script")[0],e?(i.src=t,i.async=!1):(i.rel="stylesheet",i.href=t),u[t]=[],u[i.href]=u[t],n&&(r=function(e){if("readystatechange"!=e.type||c[e.target.readyState]){var n=u[t];for(i.removeEventListener("load",r),i.removeEventListener("error",r),i.removeEventListener("readystatechange",r),i.removeEventListener("loadcssdefined",r),l&&clearInterval(l),u[t]=!0,u[i.href]=!0;n.length;)n.shift()()}},u[i.href][0]=n,e||(l=setInterval(function(){!function(e){for(var n=!1,t=o.styleSheets,i=e.href,a=0,l=t.length;a<l;a++)if(t[a].href==i){n=!0;break}return n}(i)||r({})},60)),i.addEventListener("load",r),i.addEventListener("error",r),i.addEventListener("readystatechange",r),i.addEventListener("loadcssdefined",r)),a.parentNode.insertBefore(i,a))}function N(e){e&&"function"==typeof e.lazytransform&&e.lazytransform(this)}function P(e){e&&"function"==typeof e.lazyunload&&e.lazyunload(this)}function R(e){e&&"function"==typeof e.lazyload&&e.lazyload(this)}function B(r,o){var s,d,e,n,t,i,a,l,c,u,f,m,y,h,p,v,g,z=r.lazyInclude.current||null,E={candidate:o,openArgs:["GET",o.urls.include,!0],sendData:null,xhrModifier:null,content:o.content&&o.content.content||o.content,oldCandidate:z};L.fire(r,"lazyincludeload",E).defaultPrevented?T.d():(v=function(){s&&d&&!e&&g()},g=function(){var e,n=s.status,t=s.content||s.responseText,i=!(null!=t||!z||!z.urls.include),a={candidate:o,content:t,text:s.responseText||s.content,response:s.response,xml:s.responseXML,isSuccess:!("status"in s)||(200<=n&&n<300||304===n),oldCandidate:z,insert:!0,resetHTML:i},l={target:r,details:a,detail:a};o.modules=d,z&&z.modules&&(z.modules.forEach(P,l),z.modules=null,a.resetHTML&&null==a.content&&o.initial&&o.initial.saved&&(a.content=o.initial.content)),d.forEach(N,l),e=L.fire(r,"lazyincludeloaded",a),a.insert&&a.isSuccess&&!e.defaultPrevented&&null!=a.content&&a.content!=r.innerHTML&&(r.innerHTML=a.content),T.d(),d.forEach(R,l),setTimeout(function(){L.fire(r,"lazyincluded",a)}),d=s=null},r.lazyInclude.current=o,r.setAttribute("data-currentinclude",o.name),o.urls.css&&(e=!0,n=o.urls.css,t=function(){e=!1,v()},i=(n=n.split("|,|")).length-1,n.forEach(function(e,n){w(e,!1,n==i?t:null)})),null==E.content&&o.urls.include?(a=E,l=function(e){s=e,v()},(c=new XMLHttpRequest).addEventListener("readystatechange",function(){var e=this.DONE||4;this.readyState===e&&(l(c),c=null)},!1),c.open.apply(c,a.openArgs),c.setRequestHeader("X-Requested-With","XMLHttpRequest"),a.xhrModifier&&a.xhrModifier(c,a.candidate),c.send(a.sendData)):s=E,o.urls.amd||o.urls.module?(u=function(){d=Array.prototype.slice.call(arguments),v()},o.urls.amd?(y=o.urls.amd,h=u,p=(y=y.split("|,|")).length-1,L.cfg.requireJs?L.cfg.requireJs(y,h):y.forEach(function(e,n){w(e,n==p?h:null)})):(f=o.urls.module,m=u,L.cfg.systemJs?L.cfg.systemJs(f,m):w(f,m))):d=[],v())}function D(e){var n,t,i,a,l,r;return(l=(t=e).getAttribute("data-include")||"",(r=t.lazyInclude)&&r.str==l&&!s.allowReload||(a={saved:!1,content:null},!(i=(r={str:l,candidates:(s.map[l]||l).split(d).map(H,a)}).candidates.length)||r.candidates[i-1].condition?(a.saved=!0,r.candidates.push({urls:{},condition:null,name:"initial",content:a})):a.saved&&1==r.candidates.length&&(a.saved=!1),(r.initialContent=a).saved&&(a.content=t.innerHTML),1<(t.lazyInclude=r).candidates.length?L.aC(t,"lazyconditionalinclude"):L.rC(t,"lazyconditionalinclude")),r).candidates.length&&h.contains(e)&&((n=I(e))&&B(e,n),1)}o.getElementsByClassName&&(d=/\s*,+\s+/,c={complete:1,loaded:1},u={},f=/\s+/,t=/^(amd|css|module)\:(.+)/i,m=/(.+)\s+(\(\s*(.+)\s*\))/,y=/['"]/g,h=o.documentElement,i=o.getElementsByClassName("lazyconditionalinclude"),p=function(e,n){var t=e.ownerDocument.defaultView;return t.opener||(t=a),t.getComputedStyle(e,n||null)||{getPropertyValue:function(){},isNull:!0}},v=2,z=g=0,E=[],M=function(){clearTimeout(e),e=setTimeout(b,999)},T={q:function(e){var n=null==e.getAttribute("data-lazyqueue");n&&(z++,v=3),v<g?E[n?"unshift":"push"](e):D(e)&&(g++,M())},d:function(){if(g&&g--,0<z&&(--z||(v=2)),!(v<g)){for(;E.length;)if(D(E.shift())){g++;break}M()}}},n=function(e){clearTimeout(C),r=null,C=setTimeout(S,"resize"==e.type?31:0)},(q=L&&L.cfg).include||(q.include={}),(s=q.include).contentElement||(s.contentElement="html"),s.conditions||(s.conditions={}),s.map||(s.map={}),addEventListener("lazybeforeunveil",function(e){e.detail.instance==L&&!e.defaultPrevented&&e.target.getAttribute("data-include")&&(T.q(e.target),e.detail.firesLoad=!0)},!1),addEventListener("resize",n,!1),addEventListener("lazyrefreshincludes",n,!1))});