/* All the things */ let currentUrl = window.location.hostname; if (window.location.port) { currentUrl += ':' + window.location.port } /* Screenshots */ const lightbox = document.getElementById("lightbox"); const showScreenshotOverlay = (e, el, index) => { lightbox.classList.add('show'); document.addEventListener('keydown', nextScreenshotKeyboardListener); return showScreenshot(e, index); }; const showScreenshot = (e, index) => { const actualIndex = resolveScreenshotIndex(index); lightbox.innerHTML = '
' + screenshots[actualIndex].innerHTML; lightbox.querySelector('img').onclick = (e) => { return showScreenshot(e,actualIndex+1); }; currentScreenshotIndex = actualIndex; e.stopPropagation(); return false; }; const nextScreenshot = (e) => { return showScreenshot(e, currentScreenshotIndex+1); }; const previousScreenshot = (e) => { return showScreenshot(e, currentScreenshotIndex-1); }; const resolveScreenshotIndex = (index) => { if (index < 0) { return screenshots.length - 1; } else if (index > screenshots.length - 1) { return 0; } return index; }; const hideScreenshotOverlay = (e) => { lightbox.classList.remove('show'); document.removeEventListener('keydown', nextScreenshotKeyboardListener); }; const nextScreenshotKeyboardListener = (e) => { switch (e.keyCode) { case 37: previousScreenshot(e); break; case 39: nextScreenshot(e); break; } }; let currentScreenshotIndex = 0; const screenshots = [...document.querySelectorAll("#screenshots a")]; screenshots.forEach((el, index) => { el.onclick = (e) => { return showScreenshotOverlay(e, el, index); }; }); lightbox.onclick = hideScreenshotOverlay; // Add anchor links document.querySelectorAll('.anchor').forEach((el) => { if (el.hasAttribute('id')) { const id = el.getAttribute('id'); const anchor = document.createElement('a'); anchor.innerHTML = `#`; el.appendChild(anchor); } }); // Change ntfy.sh url and protocol to match self-hosted one document.querySelectorAll('.ntfyUrl').forEach((el) => { el.innerHTML = currentUrl; }); document.querySelectorAll('.ntfyProtocol').forEach((el) => { el.innerHTML = window.location.protocol + "//"; });