82 lines
4.3 KiB
JavaScript
82 lines
4.3 KiB
JavaScript
/*! lozad.js - v1.16.0 - 2020-09-06
|
|
* https://github.com/ApoorvSaxena/lozad.js
|
|
* Copyright (c) 2020 Apoorv Saxena; Licensed MIT */
|
|
!function (t, e) {
|
|
"object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : t.lozad = e()
|
|
}(this, function () {
|
|
"use strict";
|
|
/**
|
|
* Detect IE browser
|
|
* @const {boolean}
|
|
* @private
|
|
*/
|
|
var g = "undefined" != typeof document && document.documentMode,
|
|
f = {
|
|
rootMargin: "0px",
|
|
threshold: 0,
|
|
load: function (t) {
|
|
if ("picture" === t.nodeName.toLowerCase()) {
|
|
var e = t.querySelector("img"),
|
|
r = !1;
|
|
null === e && (e = document.createElement("img"), r = !0), g && t.getAttribute("data-iesrc") && (e.src = t.getAttribute("data-iesrc")), t.getAttribute("data-alt") && (e.alt = t.getAttribute("data-alt")), r && t.append(e)
|
|
}
|
|
if ("video" === t.nodeName.toLowerCase() && !t.getAttribute("data-src") && t.children) {
|
|
for (var a = t.children, o = void 0, i = 0; i <= a.length - 1; i++)(o = a[i].getAttribute("data-src")) && (a[i].src = o);
|
|
t.load()
|
|
}
|
|
t.getAttribute("data-poster") && (t.poster = t.getAttribute("data-poster")), t.getAttribute("data-src") && (t.src = t.getAttribute("data-src")), t.getAttribute("data-srcset") && t.setAttribute("srcset", t.getAttribute("data-srcset"));
|
|
var n = ",";
|
|
if (t.getAttribute("data-background-delimiter") && (n = t.getAttribute("data-background-delimiter")), t.getAttribute("data-background-image")) t.style.backgroundImage = "url('" + t.getAttribute("data-background-image").split(n).join("'),url('") + "')";
|
|
else if (t.getAttribute("data-background-image-set")) {
|
|
var d = t.getAttribute("data-background-image-set").split(n),
|
|
u = d[0].substr(0, d[0].indexOf(" ")) || d[0]; // Substring before ... 1x
|
|
u = -1 === u.indexOf("url(") ? "url(" + u + ")" : u, 1 === d.length ? t.style.backgroundImage = u : t.setAttribute("style", (t.getAttribute("style") || "") + "background-image: " + u + "; background-image: -webkit-image-set(" + d + "); background-image: image-set(" + d + ")")
|
|
}
|
|
t.getAttribute("data-toggle-class") && t.classList.toggle(t.getAttribute("data-toggle-class"))
|
|
},
|
|
loaded: function () {}
|
|
};
|
|
|
|
function A(t) {
|
|
t.setAttribute("data-loaded", !0)
|
|
}
|
|
var m = function (t) {
|
|
return "true" === t.getAttribute("data-loaded")
|
|
},
|
|
v = function (t) {
|
|
var e = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : document;
|
|
return t instanceof Element ? [t] : t instanceof NodeList ? t : e.querySelectorAll(t)
|
|
};
|
|
return function () {
|
|
var r, a, o = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : ".lozad",
|
|
t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {},
|
|
e = Object.assign({}, f, t),
|
|
i = e.root,
|
|
n = e.rootMargin,
|
|
d = e.threshold,
|
|
u = e.load,
|
|
g = e.loaded,
|
|
s = void 0;
|
|
"undefined" != typeof window && window.IntersectionObserver && (s = new IntersectionObserver((r = u, a = g,
|
|
function (t, e) {
|
|
t.forEach(function (t) {
|
|
(0 < t.intersectionRatio || t.isIntersecting) && (e.unobserve(t.target), m(t.target) || (r(t.target), A(t.target), a(t.target)))
|
|
})
|
|
}), {
|
|
root: i,
|
|
rootMargin: n,
|
|
threshold: d
|
|
}));
|
|
for (var c, l = v(o, i), b = 0; b < l.length; b++)(c = l[b]).getAttribute("data-placeholder-background") && (c.style.background = c.getAttribute("data-placeholder-background"));
|
|
return {
|
|
observe: function () {
|
|
for (var t = v(o, i), e = 0; e < t.length; e++) m(t[e]) || (s ? s.observe(t[e]) : (u(t[e]), A(t[e]), g(t[e])))
|
|
},
|
|
triggerLoad: function (t) {
|
|
m(t) || (u(t), A(t), g(t))
|
|
},
|
|
observer: s
|
|
}
|
|
}
|
|
});
|
|
|