(function () { "use strict"; // ---- Alternância de tema (persistida em localStorage) ---- function currentTheme() { var explicit = document.documentElement.getAttribute("data-theme"); if (explicit) return explicit; return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"; } var toggle = document.getElementById("themeToggle"); if (toggle) { toggle.addEventListener("click", function () { var next = currentTheme() === "dark" ? "light" : "dark"; document.documentElement.setAttribute("data-theme", next); try { localStorage.setItem("theme", next); } catch (e) {} }); } // ---- Área de upload (clique + arrastar/soltar + nome dos arquivos) ---- var drop = document.getElementById("filedrop"); var input = document.getElementById("fileInput"); var label = document.getElementById("filedropText"); var form = document.getElementById("uploadForm"); var btn = document.getElementById("uploadBtn"); function describe(files) { if (!files || !files.length) return "Clique ou arraste arquivos aqui"; if (files.length === 1) return files[0].name; return files.length + " arquivos selecionados"; } if (input && label) { input.addEventListener("change", function () { label.textContent = describe(input.files); }); } if (drop && input) { ["dragenter", "dragover"].forEach(function (ev) { drop.addEventListener(ev, function (e) { e.preventDefault(); drop.classList.add("drag"); }); }); ["dragleave", "drop"].forEach(function (ev) { drop.addEventListener(ev, function (e) { e.preventDefault(); drop.classList.remove("drag"); }); }); drop.addEventListener("drop", function (e) { if (e.dataTransfer && e.dataTransfer.files && e.dataTransfer.files.length) { input.files = e.dataTransfer.files; if (label) label.textContent = describe(input.files); } }); } if (form && btn) { form.addEventListener("submit", function () { if (input && input.files && input.files.length) { btn.disabled = true; btn.textContent = "Processando…"; } }); } })();