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) • 2.07 kB
JavaScript
import{SRC as t,POSTER as a,DATA as s,SIZES as o,SRCSET as r}from"./constants.js";import{getData as e,setStatus as m}from"./data.js";import{statusApplied as i,statusLoading as c}from"./elementStatus.js";import{safeCallback as d}from"./callback.js";import{addClass as l}from"./class.js";import{getTempImage as n}from"./tempImage.js";import{isHiDpi as p}from"./environment.js";import{unobserve as _}from"./unobserve.js";import{updateLoadingCount as g}from"./counters.js";import{forEachPictureSource as b,forEachVideoSource as u}from"./forEachSource.js";import{setOriginalsObject as f,attrsSrcSrcsetSizes as j,attrsSrc as I,attrsSrcPoster as k,attrsData as A}from"./originalAttributes.js";const E=(t,a,s)=>{l(t,a.class_applied),m(t,i),s&&(a.unobserve_completed&&_(t,a),d(a.callback_applied,t,s))},h=(t,a,s)=>{l(t,a.class_loading),m(t,c),s&&(g(s,1),d(a.callback_loading,t,s))},v=(t,a,s)=>{s&&t.setAttribute(a,s)},y=(a,s)=>{v(a,o,e(a,s.data_sizes)),v(a,r,e(a,s.data_srcset)),v(a,t,e(a,s.data_src))},M=(t,a)=>{b(t,(t=>{f(t,j),y(t,a)})),f(t,j),y(t,a)},N=(a,s)=>{f(a,I),v(a,t,e(a,s.data_src))},O=(s,o)=>{u(s,(a=>{f(a,I),v(a,t,e(a,o.data_src))})),f(s,k),v(s,a,e(s,o.data_poster)),v(s,t,e(s,o.data_src)),s.load()},S=(t,a)=>{f(t,A),v(t,s,e(t,a.data_src))},$=(a,s,o)=>{const r=e(a,s.data_bg),m=e(a,s.data_bg_hidpi),i=p&&m?m:r;i&&(a.style.backgroundImage=`url("${i}")`,n(a).setAttribute(t,i),h(a,s,o))},x=(t,a,s)=>{const o=e(t,a.data_bg_multi),r=e(t,a.data_bg_multi_hidpi),m=p&&r?r:o;m&&(t.style.backgroundImage=m,E(t,a,s))},z=(t,a,s)=>{const o=e(t,a.data_bg_set);if(!o)return;let r=o.split("|").map((t=>`image-set(${t})`));t.style.backgroundImage=r.join(),E(t,a,s)},B={IMG:M,IFRAME:N,VIDEO:O,OBJECT:S},C=(t,a)=>{const s=B[t.tagName];s&&s(t,a)},D=(t,a,s)=>{const o=B[t.tagName];o&&(o(t,a),h(t,a,s))};export{E as manageApplied,h as manageLoading,v as setAttributeIfValue,$ as setBackground,y as setImageAttributes,z as setImgsetBackground,x as setMultiBackground,D as setSources,N as setSourcesIframe,M as setSourcesImg,C as setSourcesNative,S as setSourcesObject,O as setSourcesVideo};