(function () {
const drop = document.getElementById("drop"), input = document.getElementById("file");
const inner = document.getElementById("drop-inner"), info = document.getElementById("finfo");
const form = document.getElementById("meta"), draftsEl = document.getElementById("drafts");
let current = null;
const mb = b => (b / 1048576).toFixed(1).replace(".", ",") + " МБ";
function pick(file) {
if (!file) return;
if (!file.type.startsWith("video/")) { SK.toast("Это не видеофайл. Нужен MP4, MOV или WebM."); return; }
if (file.size > 2 * 1024 ** 3) { SK.toast("Файл больше 2 ГБ. Для таких нужен тариф «Шкаф»."); return; }
current = file;
const url = URL.createObjectURL(file);
inner.innerHTML = `Нажмите, чтобы выбрать другой файл`;
const vid = inner.querySelector("video");
vid.addEventListener("loadedmetadata", () => {
const w = vid.videoWidth, h = vid.videoHeight, r = w / h;
const ratio = Math.abs(r - 1) < 0.08 ? "1:1" : r < 1 ? "9:16" : "16:9";
form.querySelector(`input[name=r][value="${ratio}"]`).checked = true;
info.hidden = false;
info.innerHTML = `
Файл${SK.esc(file.name)}Размер${mb(file.size)}
Кадр${w}×${h}, ${ratio}Длительность${SK.dur(vid.duration)}`;
const t = document.getElementById("t");
if (!t.value) t.value = file.name.replace(/\.[^.]+$/, "").replace(/[_-]+/g, " ");
});
}
input.addEventListener("change", () => pick(input.files[0]));
drop.addEventListener("keydown", e => { if (e.key === "Enter" || e.key === " ") { e.preventDefault(); input.click(); } });
["dragenter", "dragover"].forEach(ev => drop.addEventListener(ev, e => { e.preventDefault(); drop.classList.add("over"); }));
["dragleave", "drop"].forEach(ev => drop.addEventListener(ev, e => { e.preventDefault(); drop.classList.remove("over"); }));
drop.addEventListener("drop", e => pick(e.dataTransfer.files[0]));
const load = () => { try { return JSON.parse(localStorage.getItem("sk-drafts")) || []; } catch (e) { return []; } };
function renderDrafts() {
const d = load();
draftsEl.innerHTML = d.length ? `Черновики в этом браузере${d.map((x, i) =>
`- ${SK.esc(x.title)} ${SK.esc(x.file || "без файла")}, ${x.ratio}
`).join("")}
` : "";
}
draftsEl.addEventListener("click", e => {
const b = e.target.closest("[data-del]"); if (!b) return;
const d = load(); d.splice(+b.dataset.del, 1);
try { localStorage.setItem("sk-drafts", JSON.stringify(d)); } catch (err) {}
renderDrafts(); SK.toast("Черновик удалён");
});
form.addEventListener("submit", e => {
e.preventDefault();
const title = document.getElementById("t").value.trim();
if (!title) { document.getElementById("t").focus(); return; }
const d = load();
d.unshift({ title, file: current ? current.name : "", ratio: form.querySelector("input[name=r]:checked").value });
try { localStorage.setItem("sk-drafts", JSON.stringify(d.slice(0, 10))); } catch (err) {}
renderDrafts(); SK.toast("Черновик сохранён");
});
document.getElementById("publish").addEventListener("click", () => {
if (!current) { SK.toast("Сначала выберите видеофайл"); return; }
SK.toast("Публикация доступна после входа. Черновик можно сохранить уже сейчас.");
});
renderDrafts();
})();