vanilla-lazyload
Version:
LazyLoad is a lightweight (2.4 kB) and flexible script that speeds up your web application by deferring the loading of your below-the-fold images, videos and iframes to when they will enter the viewport. It's written in plain "vanilla" JavaScript, it leve
2 lines (1 loc) • 1.63 kB
JavaScript
import{addClass as r,removeClass as o}from"./class.js";import{safeCallback as s}from"./callback.js";import{hasStatusNative as e,setStatus as t}from"./data.js";import{statusLoaded as l,statusError as a}from"./elementStatus.js";import{getTempImage as n,deleteTempImage as i}from"./tempImage.js";import{unobserve as m}from"./unobserve.js";import{isSomethingLoading as c,haveElementsToLoad as d,updateLoadingCount as f,decreaseToLoadCount as p}from"./counters.js";import{restoreOriginalAttrs as E,attrsSrcSrcsetSizes as v}from"./originalAttributes.js";const _=["IMG","IFRAME","VIDEO","OBJECT"],j=r=>_.indexOf(r.tagName)>-1,b=(r,o)=>{!o||c(o)||d(o)||s(r.callback_finish,o)},L=(r,o,s)=>{r.addEventListener(o,s),r.llEvLisnrs[o]=s},u=(r,o,s)=>{r.removeEventListener(o,s)},g=r=>!!r.llEvLisnrs,I=(r,o,s)=>{g(r)||(r.llEvLisnrs={});const e="VIDEO"===r.tagName?"loadeddata":"load";L(r,e,o),L(r,"error",s)},k=r=>{if(!g(r))return;const o=r.llEvLisnrs;for(let s in o){const e=o[s];u(r,s,e)}delete r.llEvLisnrs},O=(r,s,e)=>{i(r),f(e,-1),p(e),o(r,s.class_loading),s.unobserve_completed&&m(r,e)},x=(o,a,n,i)=>{const m=e(a);O(a,n,i),r(a,n.class_loaded),t(a,l),s(n.callback_loaded,a,i),m||b(n,i)},A=(o,l,n,i)=>{const m=e(l);O(l,n,i),r(l,n.class_error),t(l,a),s(n.callback_error,l,i),n.restore_on_error&&E(l,v),m||b(n,i)},D=(r,o,s)=>{const e=n(r)||r;g(e)||I(e,(t=>{x(0,r,o,s),k(e)}),(t=>{A(0,r,o,s),k(e)}))};export{L as addEventListener,I as addEventListeners,D as addOneShotEventListeners,b as checkFinish,O as doneHandler,A as errorHandler,g as hasEventListeners,j as hasLoadEvent,x as loadHandler,u as removeEventListener,k as removeEventListeners};