PageSourceSearch

https://www.wiesbaden.de/assets/VideoHero-CSH73aTU.js

js wiesbaden.de collected 2026-10-09 22:19:54 UTC 2,311 bytes, 2 lines download raw bytes

1import{i}from"./i18next-WYacM04a.js";const s={IS_PLAYING:"is-playing",IS_PAUSED:"is-paused"},a={VIDEO:".SP-Video__control",TOGGLE:".SP-Video__toggle"},r="videoHero";class l{container;video;toggle;reducedMotionQuery;userPaused=!1;abortController;constructor(e){this.abortController=new AbortController,this.container=e;const t=e.querySelector(a.VIDEO),o=e.querySelector(a.TOGGLE);if(!t||!o)throw new Error(`[VideoHero] Benötigte Kindelemente nicht gefunden: video=${!!t}, toggle=${!!o}`);this.video=t,this.toggle=o,this.reducedMotionQuery=window.matchMedia("(prefers-reduced-motion: reduce)"),this.bindEvents(),this.init(),this.createObserver()}init(){this.reducedMotionQuery.matches&&(this.video.removeAttribute("autoplay"),this.userPaused=!0,this.video.pause())}bindEvents(){this.toggle.addEventListener("click",this.handleToggleClick,{signal:this.abortController.signal}),this.video.addEventListener("play",()=>this.updateVideo(),{signal:this.abortController.signal}),this.video.addEventListener("pause",()=>this.updateVideo(),{signal:this.abortController.signal}),this.reducedMotionQuery.addEventListener("change",this.handleReducedMotionChange,{signal:this.abortController.signal}),i.on("languageChanged",this.handleLanguageChanged),this.abortController.signal.addEventListener("abort",()=>{i.off("languageChanged",this.handleLanguageChanged)})}handleToggleClick=()=>{this.video.paused?(this.userPaused=!1,this.video.play()):(this.userPaused=!0,this.video.pause())};handleReducedMotionChange=e=>{e.matches&&(this.video.pause(),this.userPaused=!0)};handleLanguageChanged=()=>{this.updateVideo()};createObserver(){const e=new IntersectionObserver(([t])=>{t.isIntersecting?!this.userPaused&&!this.reducedMotionQuery.matches&&this.video.play():this.video.pause()});e.observe(this.video),this.abortController.signal.addEventListener("abort",()=>e.disconnect())}updateVideo(){this.video.paused?(this.container.classList.add(s.IS_PAUSED),this.container.classList.remove(s.IS_PLAYING),this.toggle.setAttribute("aria-label",i.t("playVideo",{ns:r}))):(this.container.classList.add(s.IS_PLAYING),this.container.classList.remove(s.IS_PAUSED),this.toggle.setAttribute("aria-label",i.t("pauseVideo",{ns:r})))}destroy(){this.abortController.abort()}}export{l as VideoHero};
2//# sourceMappingURL=VideoHero-CSH73aTU.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.