123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- /* 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 = '<div class="close-lightbox"></div>' + 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 = `<a href="#${id}" class="anchorLink">#</a>`;
- 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 + "//";
- });
|