/**
* SPDX-License-Identifier: CC0-1.0
*
* Copyright (C) 2025 Woj. Kosior <koszko@koszko.org>
*/
/*
#+begin_src manifest-jq
.matches = ["https://www.vaticannews.va/*"]
#+end_src
*/
if (false) { /* #+begin_src background-js */
blockJsOnUrl("https://www.vaticannews.va/*");
} /* #+end_src */
/* Make some dynamically-loaded images work. */
const dynamicImages = Object.assign(
{},
[...document.querySelectorAll("img[data-original]")].filter(
img => img.parentElement.tagName === "A"
)
);
const eps = 1e-10;
let loadingTimeout = null;
function imageLoaded(ev) {
ev.target.classList.add("loaded");
ev.target.removeEventListener("load", imageLoaded);
}
function loadVisibleImages() {
loadingTimeout = null;
const min = -eps, max = window.innerHeight + eps;
let allLoaded = true;
for (const [idx, img] of Object.entries(dynamicImages)) {
const boundingRect = img.getBoundingClientRect();
if (boundingRect.top > min && boundingRect.bottom < max) {
delete dynamicImages[idx];
img.src = img.getAttribute("data-original");
img.addEventListener("load", imageLoaded);
} else {
allLoaded = false;
}
}
if (allLoaded)
window.removeEventListener("resize", setLoadingTimeout);
}
function setLoadingTimeout() {
if (loadingTimeout !== null)
clearTimeout(loadingTimeout);
loadingTimeout = setTimeout(loadVisibleImages, 500);
}
window.addEventListener("scroll", setLoadingTimeout);
window.addEventListener("resize", setLoadingTimeout);
loadVisibleImages();