// popup.js const selectBtn = document.getElementById("select-btn"); const dot = document.getElementById("dot"); const serverLabel = document.getElementById("server-label"); const offlineMsg = document.getElementById("offline-msg"); let selectedMode = "recognize"; // ── Check server health ─────────────────────────────────────────────────────── async function checkServer() { try { const r = await fetch("http://localhost:8000/health", { signal: AbortSignal.timeout(3000), }); const d = await r.json(); return d.status === "ok"; } catch { return false; } } async function updateServerStatus() { const ok = await checkServer(); dot.className = `dot ${ok ? "ok" : "err"}`; serverLabel.textContent = ok ? "server ready" : "offline"; selectBtn.disabled = !ok; offlineMsg.classList.toggle("show", !ok); } updateServerStatus(); // ── Mode toggle ─────────────────────────────────────────────────────────────── document.querySelectorAll(".mode-opt").forEach(btn => { btn.addEventListener("click", () => { document.querySelectorAll(".mode-opt").forEach(b => b.classList.remove("active")); btn.classList.add("active"); selectedMode = btn.dataset.mode; chrome.storage.local.set({ ocrMode: selectedMode }); }); }); // Restore saved mode chrome.storage.local.get(["ocrMode"], ({ ocrMode }) => { if (ocrMode) { selectedMode = ocrMode; document.querySelectorAll(".mode-opt").forEach(btn => { btn.classList.toggle("active", btn.dataset.mode === ocrMode); }); } }); // ── Select button ───────────────────────────────────────────────────────────── selectBtn.addEventListener("click", async () => { // Save current mode to storage so background can read it await chrome.storage.local.set({ ocrMode: selectedMode }); // Get current tab and inject the selection const [tab] = await chrome.tabs.query({ active: true, currentWindow: true }); await chrome.scripting.executeScript({ target: { tabId: tab.id }, func: () => { window.postMessage({ type: "GLMOCR_START" }, "*"); }, }); // Tell content script to start selection mode chrome.tabs.sendMessage(tab.id, { type: "START_SELECTION" }); // Close popup so it doesn't obscure the page window.close(); });