(()=>{"use strict";class e{constructor(e,s){this._modal=document.querySelector(e),this._buttonClose=this._modal.querySelector(".popup-button-close"),this._closeButtonSelector=".popup-button-close",this._openedClass="popup_opened",this._handleEscButton=e=>{"Escape"===e.key&&this.close()},this._handleOverlayClick=e=>{e.target.classList.contains("popup_opened")&&this.close()},this._isOpened=!1}open(){this._modal.classList.add(this._openedClass),this._isOpened=!0,this._isEscHandleEnabled&&document.addEventListener("keydown",this._handleEscButton),this._isOverlayEnabled&&this._modal.addEventListener("mousedown",this._handleOverlayClick),this._isBodyFixWhenOpen&&document.querySelector("body").classList.add("body-fixed")}close(){this._modal.classList.remove(this._openedClass),this._isOpened=!1,this._isEscHandleEnabled&&document.removeEventListener("keydown",this._handleEscButton),this._isOverlayEnabled&&this._modal.removeEventListener("mousedown",this._handleOverlayClick),this._isBodyFixWhenOpen&&document.querySelector("body").classList.remove("body-fixed")}setEventListeners({overlay:e=!0,esc:s=!0,bodyfix:t=!0}={}){this._isOverlayEnabled=e,this._isEscHandleEnabled=s,this._isBodyFixWhenOpen=t,this._buttonClose.addEventListener("mousedown",()=>{this.close()})}}const s=new class extends e{constructor({popupImageSelector:e,popupImageDescSelector:s,buttonCloseSelector:t},o){super(o),this._popupImage=this._modal.querySelector(e),this._popupImageDesc=this._modal.querySelector(s),this._preloader=this._modal.querySelector(".popup-preloader"),t&&(this._buttonClose=this._modal.querySelector(t)),this._temporaryCloseHandler=null}setTemporaryHandleClose(e){this._temporaryCloseHandler=e}_clearTemporaryHandler(){this._temporaryCloseHandler=null}_setPreloader(){this._preloader&&(this._preloader.hidden=!1,this._popupImage.src="",this._popupImageDesc.textContent="Картинка загружается")}_unsetPreloader(){this._preloader&&(this._preloader.hidden=!0)}_loadImage(e){return new Promise((s,t)=>{const o=new Image;o.onload=()=>s(o),o.onerror=()=>t(new Error(`Не удалось загрузить по ${e}`)),o.src=e})}async open({link:e,desc:s}){this._setPreloader();try{super.open(),await this._loadImage(e),this._popupImage.src=e,this._popupImage.alt=s,this._popupImageDesc.textContent=s,requestAnimationFrame(()=>{this._popupImage.classList.remove("opacity-0","scale-90"),this._popupImageDesc.classList.remove("opacity-0","scale-90")})}catch(e){console.log(e),this._popupImageDesc.textContent="Что то пошло не так"}finally{console.log("сюда не заходим почему то"),this._unsetPreloader()}}close(){this._temporaryCloseHandler&&(this._temporaryCloseHandler(),this._clearTemporaryHandler()),setTimeout(()=>{this._popupImage.src=""},500),this._popupImage.alt="",this._popupImage.classList.add("opacity-0","scale-90"),this._popupImageDesc.classList.add("opacity-0","scale-90"),super.close()}}({popupImageSelector:".popup__image",popupImageDescSelector:".popup__image-description",buttonCloseSelector:".popup__button-close"},".popup-viewport");s.setEventListeners(),document.querySelectorAll(".annotation__image").forEach(e=>{e.addEventListener("mousedown",e=>{s.open({link:e.target.src,desc:e.target.alt})})})})();