/* Service Worker — SLC-Workshop Companion (App-Shell, offline-first) */ const CACHE = "slc-companion-v35"; const SHELL = ["./", "index.html", "manifest.webmanifest", "icon.svg"]; // Action-Card-Grafiken (cards/s-c.png) fuer Offline vorab cachen (alle 24). const CARDS = []; for (let s = 0; s <= 5; s++) for (let c = 0; c <= 3; c++) { CARDS.push(`cards/s${s}-c${c}.png`); } const ASSETS = SHELL.concat(CARDS); self.addEventListener("install", (e) => { e.waitUntil( caches.open(CACHE).then((c) => c.addAll(ASSETS)).then(() => self.skipWaiting()) ); }); self.addEventListener("activate", (e) => { e.waitUntil( caches.keys() .then((ks) => Promise.all(ks.filter((k) => k !== CACHE).map((k) => caches.delete(k)))) .then(() => self.clients.claim()) ); }); self.addEventListener("fetch", (e) => { if (e.request.method !== "GET") return; e.respondWith( caches.match(e.request).then((hit) => hit || fetch(e.request) .then((resp) => { const copy = resp.clone(); caches.open(CACHE).then((c) => c.put(e.request, copy)); return resp; }) .catch(() => caches.match("index.html")) ) ); });