{"version":3,"file":"modal.min.js","sources":["modal.min.js"],"sourcesContent":["\"use strict\";\n\n(function () {\n modalBeforeInit();\n document.addEventListener('readystatechange', function (e) {\n return e.target.readyState === 'complete' && modalsInit();\n });\n})();\nvar KEYCODE_TAB = 9;\nvar KEYCODE_ENTER = 13;\nvar KEYCODE_ESC = 27;\nvar currentFocus;\nfunction trapFocus(element) {\n var focusable = element.querySelectorAll('a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type=\"text\"]:not([disabled]), select:not([disabled]), .modal__close:not([disabled]):not(.modal__background), label:not([disabled])');\n var first = focusable[0];\n var last = focusable[focusable.length - 1];\n if (focusable) {\n focusable[element.dataset.videoId || focusable.length === 1 ? 0 : 1].focus();\n focusable.forEach(function (el, index) {\n if (el.tagName != 'A' && el.tagName != 'BUTTON' && el.tagName != 'TEXTAREA' && el.tagName != 'INPUT' && el.getAttribute(\"tabindex\") == null) {\n el.setAttribute('tabindex', 0);\n }\n el.addEventListener('keydown', function (e) {\n return (e.key === 'Enter' || e.keyCode === KEYCODE_ENTER) && el.click();\n });\n });\n }\n element.addEventListener('keydown', function (e) {\n var isTab = e.key === 'Tab' || e.keyCode === KEYCODE_TAB;\n if (!isTab) return;\n if (e.shiftKey && document.activeElement === first) {\n e.preventDefault();\n last.focus(); /* shift + tab */\n } else if (!e.shiftKey && document.activeElement === last) {\n e.preventDefault();\n first.focus(); /* tab */\n }\n });\n}\nfunction modalBeforeInit() {\n document.querySelectorAll('*:not(body) .modal').forEach(function (modal) {\n document.body.appendChild(modal);\n });\n}\nfunction modalsInit() {\n var body = document.body;\n var main = document.querySelector('.page');\n var modalOpeners = document.querySelectorAll('[data-modal-open]:not(.ready)');\n main.setAttribute('aria-hidden', 'false');\n var getPlayer = function getPlayer(videoId) {\n return videojs && videojs(videoId);\n };\n var getModal = function getModal(id) {\n return document.querySelector('[data-modal-id=\"' + id + '\"]');\n };\n var modalClose = function modalClose(target) {\n target.classList.remove('modal-opened');\n body.classList.remove('overlay-visible');\n target.setAttribute('aria-hidden', 'true');\n main.setAttribute('aria-hidden', 'false');\n currentFocus.focus();\n target.dataset.videoId && getPlayer(target.dataset.videoId).pause();\n };\n var modalOpen = function modalOpen(target, current) {\n target.classList.add('modal-opened');\n body.classList.add('overlay-visible');\n target.setAttribute('aria-hidden', 'false');\n main.setAttribute('aria-hidden', 'true');\n trapFocus(target);\n currentFocus = current;\n target.dataset.videoId && getPlayer(target.dataset.videoId).play();\n };\n if (modalOpeners) {\n modalOpeners.forEach(function (item) {\n item.classList.add('ready');\n var modal = getModal(item.dataset.modalTarget);\n if (modal !== null) {\n modal.classList.add('ready');\n var closes = modal.querySelectorAll('[data-modal-close]');\n closes.forEach(function (close) {\n close.addEventListener('click', function (e) {\n modalClose(modal);\n e.stopPropagation();\n }, false);\n close.addEventListener('keydown', function (e) {\n return e.key === 'Enter' || e.keyCode === KEYCODE_ENTER && modalClose(modal, item);\n });\n });\n item.addEventListener('click', function () {\n return modalOpen(modal, item);\n });\n item.addEventListener('keydown', function (e) {\n return e.key === 'Enter' || e.keyCode === KEYCODE_ENTER && modalOpen(modal, item);\n });\n item.addEventListener('keydown', function (e) {\n if (e.key === ' ' || e.keyCode === KEYCODE_SPACE) {\n e.preventDefault();\n modalOpen(modal, item);\n }\n });\n document.addEventListener('keydown', function (e) {\n if (modal.classList.contains('modal-opened') && (e.key === 'Escape' || e.keyCode === KEYCODE_ESC)) modalClose(modal, item);\n e.stopPropagation();\n });\n }\n });\n }\n}"],"names":["modalBeforeInit","document","addEventListener","e","target","readyState","modalsInit","currentFocus","KEYCODE_TAB","KEYCODE_ENTER","KEYCODE_ESC","trapFocus","element","focusable","querySelectorAll","first","last","length","dataset","videoId","focus","forEach","el","index","tagName","getAttribute","setAttribute","key","keyCode","click","shiftKey","activeElement","preventDefault","modal","body","appendChild","getPlayer","videojs","modalClose","classList","remove","main","pause","modalOpen","current","add","play","querySelector","modalOpeners","item","id","modalTarget","close","stopPropagation","KEYCODE_SPACE","contains"],"mappings":"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"}