1"use strict";function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}class Modal{constructor(openerSelector,contentSelector=null,wrapperClasses=[],closeOthers=false){_defineProperty(this,"isOpened",()=>{return this.modal.getAttribute("aria-hidden")==="false"});_defineProperty(this,"getContent",(e,opener)=>{e.preventDefault();e.stopPropagation();if(this.promiseCall){this.modal&&this.showModal();return}if(opener.href&&opener.href!==""){this.promiseCall=fetch(opener.href).then(response=>response.text()).then(html=>this.createModal(html)).catch(err=>console.log("Something went wrong.",err))}else{this.createModal(document.documentElement.innerHTML)}});_defineProperty(this,"createModal",contentHtml=>{const parser=new DOMParser,page=parser.parseFromString(contentHtml,"text/html");const content=page.querySelector(this.contentSelector);if(this.closeOthers){const models=document.querySelectorAll("aside.Modal");for(const elem of models){elem.remove()}}if(!content){return}content.removeAttribute("style");const modal=document.createElement("aside");modal.classList.add("Modal");modal.setAttribute("aria-hidden","true");const inner=document.createElement("div");inner.classList.add("ModalInner","u-customScrollBar",...this.wrapperClasses);inner.setAttribute("role","dialog");inner.setAttribute("aria-modal","true");inner.append(...content.childNodes);modal.append(inner);const closer=document.createElement("button");closer.classList.add("Modal-closer");closer.setAttribute("data-modal-closer","");modal.append(closer);document.body.append(modal);this.content=inner;this.closer=closer;this.modal=modal;this.addEventListeners();this.showModal()});_defineProperty(this,"destroyModal",()=>{if(!this.modal){return}this.removeEventListeners();this.modal.classList.remove("is-open");this.modal.remove();this.modal=this.content=this.closer=this.promiseCall=null});_defineProperty(this,"showModal",()=>{this.modal.classList.add("is-open");this.modal.setAttribute("aria-hidden","false");document.body.classList.add("is-not-overflowed")});_defineProperty(this,"closeModal",()=>{this.modal.setAttribute("aria-hidden","true");document.body.classList.remove("is-not-overflowed");this.modal.addEventListener("transitionend",()=>this.destroyModal(),false)});_defineProperty(this,"closeModalByCloser",e=>{var _this$modal$querySele;if(this.isOpened()&&!((_this$modal$querySele=this.modal.querySelector(".ModalInner"))!==null&&_this$modal$querySele!==void 0&&_this$modal$querySele.contains(e.target)))this.closeModal()});_defineProperty(this,"closeModalByKeyboard",e=>{(e.key==="Escape"||e.key==="Esc")&&this.closeModal()});_defineProperty(this,"addEventListeners",()=>{var _this$closer;(_this$closer=this.closer)===null||_this$closer===void 0?void 0:_this$closer.addEventListener("click",this.closeModal);document.addEventListener("click",this.closeModalByCloser,{passive:true});document.addEventListener("keydown",this.closeModalByKeyboard,{passive:true})});_defineProperty(this,"removeEventListeners",()=>{var _this$closer2;(_this$closer2=this.closer)===null||_this$closer2===void 0?void 0:_this$closer2.removeEventListener("click",this.closeModal);document.removeEventListener("click",this.closeModalByCloser,false);document.removeEventListener("keydown",this.closeModalByKeyboard,false)});this.modal=null;this.content=null;this.openers=document.querySelectorAll(openerSelector);this.contentSelector=contentSelector!==null&&contentSelector!==void 0?contentSelector:"body";this.wrapperClasses=wrapperClasses;this.promiseCall=null;this.closer=null;this.closeOthers=closeOthers;this.openers&&this.openers.forEach(opener=>opener.addEventListener("click",e=>this.getContent(e,opener)))}} 2//# sourceMappingURL=modal.min.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.