const video_formats = ["webm", "mp4"]; const audio_formats = ["mp3", "flac", "opus", "ogg", "m4a"]; const image_formats = ["jpg", "jpeg", "gif", "png", "bmp", "webp"]; const overlay = document.getElementById("overlay"); let g_scale = 1; let g_volume = 1.0; function mousescroll(e) { e.preventDefault(); g_scale = Math.min(Math.max(0.25, g_scale + (e.deltaY * -0.001)), 4); e.target.style.transform = `scale(${g_scale})`; } function onvolumechange(e) { g_volume = e.target.volume; } const ext_filter = (ext, pathname) => pathname.toLowerCase().endsWith(ext); function to_overlay(eltyp, pathname) { const el = document.createElement(eltyp); const el_label = document.createElement("span"); el_label.textContent = decodeURI(pathname.substr(pathname.lastIndexOf("/") + 1)); if (eltyp !== "audio") el.addEventListener('wheel', mousescroll); if (eltyp !== "img") { el.autoplay = el.controls = true; el.addEventListener("volumechange", onvolumechange); el.volume = g_volume; } el.src = pathname; overlay.appendChild(el); overlay.appendChild(el_label); overlay.style.visibility = "visible"; } document.getElementById("overlay").addEventListener("click", e => { e.target.firstChild.remove(); e.target.firstChild.remove(); e.target.style.visibility = "hidden"; g_scale = 1; }); const file_links = Array.from(document.getElementsByTagName('tr')).slice(2).filter(e => e.lastChild.innerHTML != "DIR").map(l => l.firstChild.firstChild); file_links.forEach(f => f.addEventListener('click', e => { const pathname = e.target.pathname; if (video_formats.some(ext => ext_filter(ext, pathname))) to_overlay("video", pathname); else if (audio_formats.some(ext => ext_filter(ext, pathname))) to_overlay("audio", pathname); else if (image_formats.some(ext => ext_filter(ext, pathname))) to_overlay("img", pathname); if (overlay.firstChild != null) e.preventDefault(); }));