'; } var vm = url.match(/vimeo\.com\/(?:video\/)?([0-9]+)/); if (vm) { return ''; } // Direct video file fallback. return ''; } function open(url) { if (!url) return; player.innerHTML = buildEmbed(url); box.classList.add('is-open'); box.setAttribute('aria-hidden', 'false'); document.body.classList.add('aqm-vl-open'); } function close() { player.innerHTML = ''; // stops playback for all embed types in one shot box.classList.remove('is-open'); box.setAttribute('aria-hidden', 'true'); document.body.classList.remove('aqm-vl-open'); } // Trigger via data attribute on any element. document.addEventListener('click', function(e){ var t = e.target.closest('[data-video-lightbox]'); if (!t) return; var url = t.getAttribute('data-video-lightbox'); if (!url) return; e.preventDefault(); open(url); }); // Close: button, click on backdrop, ESC. closeBtn.addEventListener('click', close); box.addEventListener('click', function(e){ if (e.target === box) close(); }); document.addEventListener('keydown', function(e){ if (e.key === 'Escape' && box.classList.contains('is-open')) close(); }); })();