1(function () { 2 "use strict"; 3 4 document.addEventListener("DOMContentLoaded", function () { 5 var modal = document.querySelector(".app-emc__modal"); 6 if (!modal) { 7 return; 8 } 9 10 var iframe = modal.querySelector(".app-emc__modal-iframe"); 11 var triggers = document.querySelectorAll(".app-emc__media[data-video-src]"); 12 var closeControls = modal.querySelectorAll("[data-app-emc-close]"); 13 var lastFocused = null; 14 15 function openModal(src, title) { 16 lastFocused = document.activeElement; 17 iframe.src = src + (src.indexOf("?") > -1 ? "&" : "?") + "autoplay=1"; 18 iframe.title = title || ""; 19 modal.classList.add("app-emc__modal--open"); 20 modal.setAttribute("aria-hidden", "false"); 21 document.body.style.overflow = "hidden"; 22 var closeBtn = modal.querySelector(".app-emc__modal-close"); 23 if (closeBtn) { 24 closeBtn.focus(); 25 } 26 } 27 28 function closeModal() { 29 modal.classList.remove("app-emc__modal--open"); 30 modal.setAttribute("aria-hidden", "true"); 31 document.body.style.overflow = ""; 32 iframe.src = ""; 33 if (lastFocused && typeof lastFocused.focus === "function") { 34 lastFocused.focus(); 35 } 36 } 37 38 triggers.forEach(function (trigger) { 39 trigger.addEventListener("click", function () { 40 var src = trigger.getAttribute("data-video-src"); 41 var title = trigger.getAttribute("data-video-title"); 42 if (src) { 43 openModal(src, title); 44 } 45 }); 46 }); 47 48 closeControls.forEach(function (control) { 49 control.addEventListener("click", closeModal); 50 }); 51 52 document.addEventListener("keydown", function (event) { 53 if (event.key === "Escape" && modal.classList.contains("app-emc__modal--open")) { 54 closeModal(); 55 } 56 }); 57 }); 58})();
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.