/******/ (() => { // webpackBootstrap
|
/*!***************************!*\
|
!*** ./src/video/view.js ***!
|
\***************************/
|
/** view.js **/
|
document.addEventListener("DOMContentLoaded", function () {
|
const lazyVideos = [].slice.call(document.querySelectorAll(".video-container video"));
|
|
// Build a helper to actually set sources + load
|
function loadVideo(video) {
|
const sources = video.querySelectorAll("source[data-src]");
|
sources.forEach(source => {
|
source.src = source.dataset.src;
|
});
|
video.load();
|
}
|
|
// --- 1. IntersectionObserver (best case) ---
|
if ("IntersectionObserver" in window) {
|
const lazyVideoObserver = new IntersectionObserver(function (entries, observer) {
|
entries.forEach(entry => {
|
if (entry.isIntersecting) {
|
loadVideo(entry.target);
|
observer.unobserve(entry.target);
|
}
|
});
|
}, {
|
rootMargin: "200px 0px",
|
threshold: 0.1
|
});
|
lazyVideos.forEach(video => lazyVideoObserver.observe(video));
|
return;
|
}
|
|
// --- 2. Fallback: requestIdleCallback ---
|
if ("requestIdleCallback" in window) {
|
requestIdleCallback(() => {
|
lazyVideos.forEach(video => loadVideo(video));
|
});
|
return;
|
}
|
|
// --- 3. Final fallback: load immediately ---
|
lazyVideos.forEach(video => loadVideo(video));
|
});
|
/******/ })()
|
;
|
//# sourceMappingURL=view.js.map
|