diff --git a/src/media/js/mod_mokojoomhero.js b/src/media/js/mod_mokojoomhero.js
index d374628..43ed745 100644
--- a/src/media/js/mod_mokojoomhero.js
+++ b/src/media/js/mod_mokojoomhero.js
@@ -20,6 +20,7 @@ document.addEventListener('DOMContentLoaded', function () {
return;
}
+ // ── Image slideshow ──
document.querySelectorAll('.mokojoomhero[data-slides]').forEach(function (hero) {
var slides = hero.querySelectorAll('.mokojoomhero__slide');
var interval = parseInt(hero.dataset.interval, 10) || 5000;
@@ -39,4 +40,49 @@ document.addEventListener('DOMContentLoaded', function () {
slides[current].setAttribute('aria-hidden', 'false');
}, interval);
});
+
+ // ── Pause/resume videos when out of viewport ──
+ if (!('IntersectionObserver' in window)) {
+ return;
+ }
+
+ var observer = new IntersectionObserver(function (entries) {
+ entries.forEach(function (entry) {
+ var hero = entry.target;
+ var video = hero.querySelector('video.mokojoomhero__video');
+ var iframe = hero.querySelector('iframe.mokojoomhero__video');
+
+ if (entry.isIntersecting) {
+ // Resume
+ if (video) {
+ video.play();
+ }
+ if (iframe) {
+ var src = iframe.src || '';
+ if (src.indexOf('youtube') !== -1) {
+ iframe.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}', '*');
+ } else if (src.indexOf('vimeo') !== -1) {
+ iframe.contentWindow.postMessage('{"method":"play"}', '*');
+ }
+ }
+ } else {
+ // Pause
+ if (video) {
+ video.pause();
+ }
+ if (iframe) {
+ var src = iframe.src || '';
+ if (src.indexOf('youtube') !== -1) {
+ iframe.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', '*');
+ } else if (src.indexOf('vimeo') !== -1) {
+ iframe.contentWindow.postMessage('{"method":"pause"}', '*');
+ }
+ }
+ }
+ });
+ }, { threshold: 0.1 });
+
+ document.querySelectorAll('.mokojoomhero').forEach(function (hero) {
+ observer.observe(hero);
+ });
});
diff --git a/src/tmpl/default.php b/src/tmpl/default.php
index 62879d4..2d8d3fa 100644
--- a/src/tmpl/default.php
+++ b/src/tmpl/default.php
@@ -45,7 +45,7 @@ $heightAttr = htmlspecialchars($heroHeight, ENT_QUOTES, 'UTF-8');
>
-
+