(()=>{"use strict";var t={985:(t,e,s)=>{s.d(e,{createForm:()=>l});class o{constructor(t,e){this._inputSelector=t.inputSelector,this._inputErrorClass=t.inputErrorClass,this._errorClass=t.errorClass,this._submitButtonSelector=t.submitButtonSelector,this._inactiveButtonClass=t.inactiveButtonClass,this._formElement=e,this._inputList=Array.from(this._formElement.querySelectorAll(`${this._inputSelector}:not([type="radio"])`)),this._buttonElement=this._formElement.querySelector(this._submitButtonSelector),this._showErrorsAnimationClasses=["translate-x-5","opacity-0"],this._showErrorsTransitionsClasses=["transition-all","duration-300"],Array.from(this._formElement.querySelectorAll(".form__input-error")).map(t=>t.classList.add(...this._showErrorsAnimationClasses,...this._showErrorsTransitionsClasses))}_animateErrMessage(t){t.classList.add(...this._showErrorsAnimationClasses),requestAnimationFrame(()=>{t.classList.add(...this._showErrorsTransitionsClasses),t.classList.remove(...this._showErrorsAnimationClasses);const e=()=>{t.removeEventListener("transitionend",e),t.classList.remove(...this._showErrorsTransitionsClasses)};t.addEventListener("transitionend",e),setTimeout(e,350)})}_showInputError(t,e){const s=this._formElement.querySelector(`.${t.id}-error`);t.classList.add(this._inputErrorClass),s.textContent=e,s.classList.add(this._errorClass),this._animateErrMessage(s)}_hideInputError(t){const e=this._formElement.querySelector(`.${t.id}-error`);t.classList.remove(this._inputErrorClass),e.classList.remove(this._errorClass),e.classList.add(...this._showErrorsAnimationClasses),e.textContent=""}_checkInputValidity(t){t.validity.valid?this._hideInputError(t):this._showInputError(t,t.validationMessage)}_hasInvalidInput(t){return t.some(t=>!t.validity.valid)}_toggleButtonState(t,e){this._hasInvalidInput(t)?(e.classList.add(this._inactiveButtonClass),e.setAttribute("disabled",!0)):(e.classList.remove(this._inactiveButtonClass),e.removeAttribute("disabled"))}_showErrors(t,e){t.forEach(t=>{this._checkInputValidity(t)})}toggleButtonState(){this._toggleButtonState(this._inputList,this._buttonElement)}hasInvalidInput(){return this._hasInvalidInput(this._inputList)}disableSaveButton(){this._buttonElement.classList.add(this._inactiveButtonClass),this._buttonElement.setAttribute("disabled",!0)}cleanAllErrors(){this._inputList.forEach(t=>{this._hideInputError(t)})}showErrors(){this._inputList.forEach(t=>{this._checkInputValidity(t)})}_setEventListeners(){this._inputList.forEach(t=>{let e=null;t.addEventListener("input",()=>{e&&clearTimeout(e),e=setTimeout(()=>{this._checkInputValidity(t)},400)})})}_setStepEventListeners(t){t.forEach(t=>{const e=t.inputs,s=t.button;console.log(`123 ${s}`),e.forEach(t=>{t.addEventListener("input",()=>{this._checkInputValidity(t),this._toggleButtonState(e,s)})})})}checkStep(t){const e=this._sets[t].inputs,s=this._sets[t].button;return!this._hasInvalidInput(e)||(this._showErrors(e,s),this._toggleButtonState(e,s),!1)}enableStepValidation(){this._sets=[];const t=this._formElement.querySelector(".first-step"),e=t.querySelector(".first-step-button"),s=Array.from(t.querySelectorAll(this._inputSelector));this._sets.push({inputs:s,button:e});const o=this._formElement.querySelector(".second-step"),r=o.querySelector(".second-step-button"),n=Array.from(o.querySelectorAll(this._inputSelector));this._sets.push({inputs:n,button:r}),this._setStepEventListeners(this._sets)}enableValidation(){this._formElement.addEventListener("submit",t=>{t.preventDefault()}),this._setEventListeners()}}class r{constructor({baseUrl:t,headers:e}){this._baseUrl=t,this._headers=e}_isResponseOk(t){return t.ok?t.json():Promise.reject(`Ошибка: ${t.status}`)}getDataRequest(t){return fetch(`https://${this._baseUrl}/data/${t}`,{headers:this._headers}).then(t=>this._isResponseOk(t))}getCustomRequest(t){return fetch(`https://${this._baseUrl}/custom/${t}`,{headers:this._headers}).then(t=>this._isResponseOk(t))}getSharedTable(t){return fetch(`https://${this._baseUrl}/${t}`,{headers:this._headers}).then(t=>this._isResponseOk(t))}getReviewRequest(t){return fetch(`https://${this._baseUrl}/reviews/${t}`,{headers:this._headers}).then(t=>this._isResponseOk(t))}sendForm(t,e){return fetch(`https://${this._baseUrl}/forms/${t}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e),isBase64Encoded:!1}).then(t=>(console.log(t),this._isResponseOk(t)))}}class n{constructor({formSubmitHandler:t,formCleanError:e,checherValidation:s},o,r){this._formSubmitHandler=t,this._formCleanError=e,this._formElement=o,this._inputSelector=r,this._checker=s}_getInputValues(){return this._inputList=this._formElement.querySelectorAll(this._inputSelector),this._formValues={},this._inputList.forEach(t=>{"checkbox"===t.type?(this._formValues[t.name]||(this._formValues[t.name]=[]),t.checked&&this._formValues[t.name].push(t.value)):"radio"===t.type?t.checked&&(this._formValues[t.name]=t.value):this._formValues[t.name]=t.value}),localStorage.getItem("clientId")&&(this._formValues.clientId=localStorage.getItem("clientId")),this._formValues.page=window.location.pathname,console.log("Поля формы на отправку",this._formValues),this._formValues}cleanAll(){this._formElement.reset(),this._formCleanError()}setEventListeners(){this._formElement.addEventListener("submit",t=>{t.preventDefault(),this._checker()&&this._formSubmitHandler(this._getInputValues())})}}function i(t,e,s,o,r){switch(t){case"default":default:e.textContent=s;break;case"loading":e.textContent=o;break;case"sended":e.textContent=r}}const a={inputSelector:".form__input",submitButtonSelector:".form__submit-button",inactiveButtonClass:"form__submit-button_disabled",inputErrorClass:"form__input_type_error",errorClass:"form__input-error_visible"};function l(t){const{formSelector:e,formId:s,handleCloseCallback:l,handleSuccessSendedCallback:c,buttonText:h="Оставить заявку",loadingText:u="Отправляем...",successText:d="Отправлено успешно!",newFormConfig:m,isStepValidation:_=!1,dataTransformCallback:p}=t,f=m||a;console.log("configForm",f);const b=document.querySelector(e);if(!b)return void console.warn(`Форма ${e} не найдена`);const S=b.querySelector(f.submitButtonSelector),v=new r({baseUrl:"api.dromotron.ru",headers:{Accept:"application/json","Content-Type":"application/json;charset=utf-8"}}),E=new o(f,b);_?E.enableStepValidation():E.enableValidation();const y=new n({formSubmitHandler:t=>{let e=t;p&&(e=p(t)),i("loading",S,h,u,d),v.sendForm(s,e).then(e=>{i("sended",S,h,u,d),c?.(e,t)}).catch(t=>console.log(t)).finally(()=>{b.reset(),setTimeout(()=>{i("default",S,h,u,d)},900),l&&l()})},formCleanError:()=>{},checherValidation:t=>!E.hasInvalidInput()||(E.showErrors(),!1)},b,f.inputSelector);return y.setEventListeners(),{form:b,formValidator:E,formStatic:y}}}},e={};function s(o){var r=e[o];if(void 0!==r)return r.exports;var n=e[o]={exports:{}};return t[o](n,n.exports,s),n.exports}s.d=(t,e)=>{for(var o in e)s.o(e,o)&&!s.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),s.p="/",s.p;var o=s(985);class r{constructor(t,e){this._modal=document.querySelector(t),this._buttonClose=this._modal.querySelector(".popup-button-close"),this._closeButtonSelector=".popup-button-close",this._openedClass="popup_opened",this._handleEscButton=t=>{"Escape"===t.key&&this.close()},this._handleOverlayClick=t=>{t.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:t=!0,esc:e=!0,bodyfix:s=!0}={}){this._isOverlayEnabled=t,this._isEscHandleEnabled=e,this._isBodyFixWhenOpen=s,this._buttonClose.addEventListener("mousedown",()=>{this.close()})}}class n extends r{constructor({handleClose:t,formConfig:e,headingSelector:s,commentSelector:r,buttonCloseSelector:n},i){super(i),n&&(this._buttonClose=this._modal.querySelector(n)),this._formInstance=(0,o.createForm)({...e,formSelector:`${i} form`,handleCloseCallback:()=>{this.close()}}),this._formElement=this._formInstance.form,this._formValidator=this._formInstance.formValidator,this._heading=this._modal.querySelector(s),this._comment=this._modal.querySelector(r),t&&(this._handleCloseFunc=t),this._step=0}increaseStep(){this._step=1}decreaseStep(){this._step=0}open(t,e){this._heading&&(this._heading.textContent=t||"Отправить заявку"),this._comment&&(this._comment.textContent=e||""),super.open()}close(){super.close(),this._handleCloseFunc&&this._handleCloseFunc(),this._formElement.reset(),this._formValidator.cleanAllErrors()}setEventListeners(t){super.setEventListeners(t)}setSubmitHandler(t){this._formInstance.formStatic.setSubmitHandler(t)}validate(){return this._formValidator.hasInvalidInput()}}class i extends r{constructor(t,e){super(t);const{containerSelector:s,animateClasses:o,buttonCloseSelector:r}=e;this._animateClasses=o||[],this._container=this._modal.querySelector(s||".popup-menu-container"),this._container.classList.add(...o,"transition-all","duration-200"),r&&(this._buttonClose=this._modal.querySelector(r))}open(){super.open(),this._container.classList.remove(...this._animateClasses)}close(){super.close(),this._container.classList.add(...this._animateClasses)}}!function(t){const{popupSelector:e,buttonOpenSelector:s,formConfig:o,popupConfig:r={}}=t,i=new n({...r,formConfig:{...o,formSelector:`${e} form`}},e),a=document.querySelector(s);a?(a.addEventListener("click",t=>{t.preventDefault(),i.open(r.heading,r.comment)}),i.setEventListeners({overlay:!1,esc:!1})):(console.warn(`Кнопка ${s} не найдена`),i.setEventListeners({overlay:!1,esc:!1}))}({popupSelector:".popup-callback",buttonOpenSelector:".popup-callback-button",formConfig:{formId:"call-form",loadingText:"Отправляем заявку в дромотрон 2...",newFormConfig:{inputSelector:".raschet-bem__input",submitButtonSelector:".button-bem_submit",inactiveButtonClass:"ui-button_disabled",inputErrorClass:"ui-button__type_error",errorClass:"raschet-bem__input-error_visible"}},popupConfig:{buttonCloseSelector:".popup__button-close",heading:"Оставьте свой номер и мы Вам перезвоним2",headingSelector:".title-form",handleClose:()=>{console.log('Попап "Перезвоните мне" закрыт')}}}),function(t={}){const e={containerSelector:".popup-menu-container",animateClasses:["translate-x-20"],buttonCloseSelector:".popup-button-close"},{popupSelector:s=".popup-menu",buttonOpenSelector:o=".nav__mobile-icon",menuConfig:r={}}=t,n={...e,...r,animateClasses:[...e.animateClasses,...r.animateClasses||[]]},a=new i(s,n),l=document.querySelector(o);l?(l.addEventListener("click",t=>{t.preventDefault(),a.open()}),a.setEventListeners()):(console.warn(`Кнопка ${o} не найдена`),a.setEventListeners())}({menuConfig:{containerSelector:".popup__container_menu",buttonCloseSelector:".popup__button-close"}});const a=new class{constructor(){this.state=this.loadFromStorage()}loadFromStorage(){const t=localStorage.getItem("cart");return t?JSON.parse(t):{}}saveToStorage(){localStorage.setItem("cart",JSON.stringify(this.state))}addItem(t,e={}){return this.state[t]?this.state[t].quantity+=1:this.state[t]={...e,quantity:1},this.saveToStorage(),this.state[t]}removeItem(t){return this.state[t]?(this.state[t].quantity>1?this.state[t].quantity-=1:delete this.state[t],this.saveToStorage(),this.state[t]):null}removeItemCompletely(t){return this.state[t]?(delete this.state[t],this.saveToStorage(),null):null}getItemQuantity(t){return this.state[t]?.quantity||0}getTotalQuantity(){return Object.values(this.state).reduce((t,e)=>t+e.quantity,0)}getTotalPrice(t){const e=Object.keys(this.state).reduce((e,s)=>{const{price:o}=t[s];return e[s]={...this.state[s],...void 0!==o&&{price:o}},e},{});return Object.values(e).reduce((t,e)=>(console.log("Object.values(this.state).reduce((total, item)",e),t+e.price*e.quantity),0)}clear(){this.state={},this.saveToStorage()}getItem(t){return this.state[t]}getItems(){return{...this.state}}getItemsForSend(t){const e=Object.keys(this.state).reduce((e,s)=>{const{price:o,title:r}=t[s];return e[s]={...this.state[s],...void 0!==o&&{price:o},...void 0!==r&&{title:r}},e},{});return Object.values(e)}},l=document.querySelector(".header-cart-link");!function(){const t=a.getTotalQuantity();t>0?(l.querySelector(".header-cart-link-count").textContent=`(${t})`,l.style.display="flex"):l.querySelector(".header-cart-link-count").textContent=""}()})();