@@ -1358,46 +1358,62 @@ function getMermaidScriptEntry() {
13581358function getAutoReloadScript ( ) {
13591359 return `<script>
13601360(function() {
1361- let scrollY = 0;
1362- let slideIndices = null;
13631361 const es = new EventSource('/hot-reload');
1362+
13641363 es.addEventListener('reload', function() {
13651364 if (window.Reveal && Reveal.getIndices) {
1366- slideIndices = Reveal.getIndices();
1365+ const slideIndices = Reveal.getIndices();
13671366 sessionStorage.setItem("revealSlide", JSON.stringify(slideIndices));
13681367 } else {
1369- scrollY = window.scrollY;
1370- sessionStorage.setItem("scrollY", scrollY);
1368+ sessionStorage.setItem("scrollY", window.scrollY);
13711369 }
13721370 location.reload();
13731371 });
13741372
13751373 window.addEventListener("DOMContentLoaded", function() {
1376- // Hide body until slide/scroll is restored
13771374 document.body.style.display = "none";
1375+
1376+ const savedSlide = sessionStorage.getItem("revealSlide");
1377+ const savedScroll = sessionStorage.getItem("scrollY");
1378+
13781379 if (window.Reveal && Reveal.slide) {
1379- const saved = sessionStorage.getItem("revealSlide");
1380- if (saved) {
1381- const idx = JSON.parse(saved);
1382- Reveal.slide(idx.h, idx.v || 0);
1383- sessionStorage.removeItem("revealSlide");
1384- setTimeout(function() {
1380+ if (savedSlide) {
1381+ const idx = JSON.parse(savedSlide);
1382+ const h = idx.h || 0;
1383+ const v = idx.v || 0;
1384+ const f = (typeof idx.f === "number") ? idx.f : 0;
1385+
1386+ const restore = () => {
1387+ Reveal.slide(h, v, f);
1388+ Reveal.layout(); // neu berechnen
13851389 document.body.style.display = "";
1386- }, 0); // Reveal.slide is synchronous, but just in case
1390+ sessionStorage.removeItem("revealSlide");
1391+ };
1392+
1393+ // Wenn Reveal schon ready ist, sofort
1394+ if (Reveal.isReady()) {
1395+ restore();
1396+ } else {
1397+ // Sonst auf ready warten
1398+ Reveal.on('ready', restore, { once: true });
1399+ // Fallback, falls ready nicht feuert
1400+ setTimeout(() => {
1401+ document.body.style.display = "";
1402+ }, 1000);
1403+ }
13871404 } else {
13881405 document.body.style.display = "";
13891406 }
13901407 } else {
1391- const savedY = sessionStorage.getItem("scrollY");
1392- if (savedY) {
1393- window.scrollTo(0, parseInt(savedY, 10));
1408+ if (savedScroll) {
1409+ window.scrollTo(0, parseInt(savedScroll, 10));
13941410 sessionStorage.removeItem("scrollY");
13951411 }
13961412 document.body.style.display = "";
13971413 }
13981414 });
13991415})();
1400- </script>`
1416+ </script>` ;
14011417}
14021418
14031419export async function wrapInPage ( html , startPage , req ) {
0 commit comments