diff --git a/intro_overlay.py b/intro_overlay.py index 1aaadc4..5261cd6 100644 --- a/intro_overlay.py +++ b/intro_overlay.py @@ -1,23 +1,26 @@ import streamlit.components.v1 as components -# Animationslaenge 16,4 s + ~1 s Puffer fuers "Unpacking" der Bundler-Animation. -INTRO_DURATION_MS = 17400 -# Statische URL (Streamlit Static Serving). Beim Live-Test ggf. auf "./static/intro.html" -# oder "/static/intro.html" korrigieren, falls "app/static/..." 404 liefert. -_INTRO_SRC = "app/static/intro.html" +# Sicherheitsnetz-Timer (ms): das Ausblenden geschieht primaer ueber das 'ended'-Event des +# Videos (exakt am Ende). Dieser Timer greift nur, falls 'ended' mal nicht feuert +# (z. B. Autoplay blockiert). Grosszuegig ueber der Videolaenge (~15,8 s) waehlen. +INTRO_FALLBACK_MS = 20000 +# Statische URL (Streamlit Static Serving). Beim Live-Test ggf. auf "./static/intro.mp4" +# oder "/static/intro.mp4" korrigieren, falls "app/static/..." 404 liefert. +_INTRO_SRC = "app/static/intro.mp4" _SEEN_KEY = "einrechnung_intro_seen" -def render_intro_overlay(duration_ms: int = INTRO_DURATION_MS, +def render_intro_overlay(fallback_ms: int = INTRO_FALLBACK_MS, intro_src: str = _INTRO_SRC, seen_key: str = _SEEN_KEY) -> None: - """Injiziert ein einmaliges Intro-Overlay in die Streamlit-Elternseite (Ansatz A). + """Injiziert ein einmaliges Intro-Overlay (MP4) in die Streamlit-Elternseite (Ansatz A). Ein unsichtbarer components.html-Baustein (Hoehe 0) fuehrt JS aus, das ein position:fixed-Overlay in window.parent.document einfuegt - ein echtes Overlay ueber der - Seite. Autoplay nur einmal pro Browser (localStorage), "Ueberspringen"-Button + Auto-Fade, - Replay-Button oben rechts (aendert den "gesehen"-Merker nicht). Die Animation laeuft - isoliert in einem inneren iframe (eigenes CSS/JS, keine Kollision mit Streamlit). + Seite. Die Animation ist ein