Files
marianek.pl/libraries/jquery/lozad.js
2024-10-25 23:02:37 +02:00

122 lines
3.7 KiB
JavaScript

/*! lozad.js - v1.9.0 - 2019-02-09
* https://github.com/ApoorvSaxena/lozad.js
* Copyright (c) 2019 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";
var g =
Object.assign ||
function (t) {
for (var e = 1; e < arguments.length; e++) {
var r = arguments[e];
for (var o in r)
Object.prototype.hasOwnProperty.call(r, o) && (t[o] = r[o]);
}
return t;
},
n = "undefined" != typeof document && document.documentMode,
l = {
rootMargin: "0px",
threshold: 0,
load: function (t) {
if ("picture" === t.nodeName.toLowerCase()) {
var e = document.createElement("img");
n &&
t.getAttribute("data-iesrc") &&
(e.src = t.getAttribute("data-iesrc")),
t.getAttribute("data-alt") && (e.alt = t.getAttribute("data-alt")),
t.appendChild(e);
}
if (
"video" === t.nodeName.toLowerCase() &&
!t.getAttribute("data-src") &&
t.children
) {
for (var r = t.children, o = void 0, a = 0; a <= r.length - 1; a++)
(o = r[a].getAttribute("data-src")) && (r[a].src = o);
t.load();
}
t.getAttribute("data-src") && (t.src = t.getAttribute("data-src")),
t.getAttribute("data-srcset") &&
t.setAttribute("srcset", t.getAttribute("data-srcset")),
t.getAttribute("data-background-image") &&
(t.style.backgroundImage =
"url('" + t.getAttribute("data-background-image") + "')"),
t.getAttribute("data-toggle-class") &&
t.classList.toggle(t.getAttribute("data-toggle-class"));
},
loaded: function () {},
};
/**
* Detect IE browser
* @const {boolean}
* @private
*/ function f(t) {
t.setAttribute("data-loaded", !0);
}
var b = function (t) {
return "true" === t.getAttribute("data-loaded");
};
return function () {
var r,
o,
a =
0 < arguments.length && void 0 !== arguments[0]
? arguments[0]
: ".lozad",
t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {},
e = g({}, l, t),
n = e.root,
i = e.rootMargin,
d = e.threshold,
c = e.load,
u = e.loaded,
s = void 0;
return (
window.IntersectionObserver &&
(s = new IntersectionObserver(
((r = c),
(o = u),
function (t, e) {
t.forEach(function (t) {
(0 < t.intersectionRatio || t.isIntersecting) &&
(e.unobserve(t.target),
b(t.target) || (r(t.target), f(t.target), o(t.target)));
});
}),
{ root: n, rootMargin: i, threshold: d }
)),
{
observe: function () {
for (
var t = (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);
})(a, n),
e = 0;
e < t.length;
e++
)
b(t[e]) || (s ? s.observe(t[e]) : (c(t[e]), f(t[e]), u(t[e])));
},
triggerLoad: function (t) {
b(t) || (c(t), f(t), u(t));
},
observer: s,
}
);
};
});