(()=>{"use strict";var e={446:(e,t,s)=>{s.d(t,{aL:()=>r});const r="Escape"},634:(e,t,s)=>{s.d(t,{A:()=>r});class r{constructor(e,t){this._inputSelector=e.inputSelector,this._inputErrorClass=e.inputErrorClass,this._errorClass=e.errorClass,this._submitButtonSelector=e.submitButtonSelector,this._inactiveButtonClass=e.inactiveButtonClass,this._formElement=t,this._inputList=Array.from(this._formElement.querySelectorAll(this._inputSelector)),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((e=>e.classList.add(...this._showErrorsAnimationClasses,...this._showErrorsTransitionsClasses)))}_animateErrMessage(e){console.log("пытаемся анимировать",e),e.classList.add(...this._showErrorsAnimationClasses),requestAnimationFrame((()=>{e.classList.add(...this._showErrorsTransitionsClasses),e.classList.remove(...this._showErrorsAnimationClasses);const t=()=>{e.removeEventListener("transitionend",t),e.classList.remove(...this._showErrorsTransitionsClasses)};e.addEventListener("transitionend",t),setTimeout(t,350)}))}_showInputError(e,t){const s=this._formElement.querySelector(`.${e.id}-error`);e.classList.add(this._inputErrorClass),s.textContent=t,s.classList.add(this._errorClass),this._animateErrMessage(s)}_hideInputError(e){const t=this._formElement.querySelector(`.${e.id}-error`);e.classList.remove(this._inputErrorClass),t.classList.remove(this._errorClass),t.classList.add(...this._showErrorsAnimationClasses),t.textContent=""}_checkInputValidity(e){e.validity.valid?this._hideInputError(e):this._showInputError(e,e.validationMessage)}_hasInvalidInput(e){return e.some((e=>!e.validity.valid))}_toggleButtonState(e,t){this._hasInvalidInput(e)?(t.classList.add(this._inactiveButtonClass),t.setAttribute("disabled",!0)):(t.classList.remove(this._inactiveButtonClass),t.removeAttribute("disabled"))}_showErrors(e,t){e.forEach((e=>{this._checkInputValidity(e)}))}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((e=>{this._hideInputError(e)}))}showErrors(){this._inputList.forEach((e=>{this._checkInputValidity(e)}))}_setEventListeners(){this._inputList.forEach((e=>{let t=null;e.addEventListener("input",(()=>{t&&clearTimeout(t),t=setTimeout((()=>{this._checkInputValidity(e)}),400)}))}))}enableValidation(){this._formElement.addEventListener("submit",(e=>{e.preventDefault()})),this._setEventListeners()}}},809:(e,t,s)=>{s.d(t,{N:()=>y,k:()=>g}),s.p;var r=s(810),n=s(446);class a{constructor(e){this._modal=document.querySelector(e),this._handleEscButton=e=>{e.key===n.aL&&this.close()},this._handleOverlayClick=e=>{e.target.classList.contains("popup_opened")&&this.close()}}open(){document.querySelector("body").classList.add("body-fixed"),this._modal.classList.add("popup_opened"),document.addEventListener("keydown",this._handleEscButton),this._modal.addEventListener("mousedown",this._handleOverlayClick)}close(){this._modal.classList.remove("popup_opened"),document.removeEventListener("keydown",this._handleEscButton),this._modal.removeEventListener("mousedown",this._handleOverlayClick),document.querySelector("body").classList.remove("body-fixed")}setEventListeners(){this._modal.querySelector(".popup__button-close").addEventListener("mousedown",(()=>{this.close()}))}}var i=s(966),o=s(634);const l={inputSelector:".raschet-bem__input",submitButtonSelector:".button-bem_submit",inactiveButtonClass:"ui-button_disabled",inputErrorClass:"ui-button__type_error",errorClass:"raschet-bem__input-error_visible"},c=new r.A({baseUrl:"https://api.dromotron.ru",headers:{Accept:"application/json","Content-Type":"application/json;charset=utf-8"}}),d=document.forms.formCallBack,h=d.querySelector(l.submitButtonSelector),u=document.querySelector(".popup-callback-button"),m=new o.A(l,d);m.enableValidation();const _=new class extends a{constructor({formSubmitHandler:e,formCleanError:t,checherValidation:s},r,n,a){super(r),this._formSubmitHandler=e,this._formCleanError=t,this._formElement=this._modal.querySelector(n),this._heading=this._modal.querySelector(".popup-form__title"),this._inputSelector=a,this._checker=s}_getInputValues(){return this._inputList=this._formElement.querySelectorAll(this._inputSelector),this._formValues={},this._inputList.forEach((e=>{this._formValues[e.name]=e.value})),console.log(this._formValues),this._formValues}open(e,t){this._heading.textContent=e||"",super.open()}close(){super.close(),this._formElement.reset(),this._formCleanError()}setEventListeners(){super.setEventListeners(),this._formElement.addEventListener("submit",(e=>{e.preventDefault(),this._checker()&&this._formSubmitHandler(this._getInputValues())}))}}({formSubmitHandler:e=>{(0,i.renderLoading)("loading",h,"Оставить заявку","Отправляем...","Отправлено успешно!"),c.sendCallForm(e).then((e=>{console.log(e),(0,i.renderLoading)("sended",h,"Оставить заявку","Отправляем...","Отправлено успешно!")})).catch((e=>console.log(e))).finally((()=>{setTimeout((()=>{_.close(),m.disableSaveButton(),(0,i.renderLoading)("default",h,"Оставить заявку","Отправляем...","Отправлено успешно!")}),900)}))},formCleanError:()=>{m.cleanAllErrors()},checherValidation:e=>!m.hasInvalidInput()||(m.showErrors(),!1)},".popup-callback",".popup__form",".raschet-bem__input");_.setEventListeners(),u.addEventListener("mousedown",(()=>{_.open()}));const p=new a(".popup-menu");p.setEventListeners(),document.querySelector(".nav__mobile-icon").addEventListener("click",(()=>{p.open(),console.log("111")}));const y=new class{constructor(){this.state=this.loadFromStorage()}loadFromStorage(){const e=localStorage.getItem("cart");return e?JSON.parse(e):{}}saveToStorage(){localStorage.setItem("cart",JSON.stringify(this.state))}addItem(e,t={}){return this.state[e]?this.state[e].quantity+=1:this.state[e]={...t,quantity:1},this.saveToStorage(),this.state[e]}removeItem(e){return this.state[e]?(this.state[e].quantity>1?this.state[e].quantity-=1:delete this.state[e],this.saveToStorage(),this.state[e]):null}removeItemCompletely(e){return this.state[e]?(delete this.state[e],this.saveToStorage(),null):null}getItemQuantity(e){return this.state[e]?.quantity||0}getTotalQuantity(){return Object.values(this.state).reduce(((e,t)=>e+t.quantity),0)}getTotalPrice(e){const t=Object.keys(this.state).reduce(((t,s)=>{const{price:r}=e[s];return t[s]={...this.state[s],...void 0!==r&&{price:r}},t}),{});return Object.values(t).reduce(((e,t)=>(console.log("Object.values(this.state).reduce((total, item)",t),e+t.price*t.quantity)),0)}clear(){this.state={},this.saveToStorage()}getItem(e){return this.state[e]}getItems(){return{...this.state}}getItemsForSend(e){const t=Object.keys(this.state).reduce(((t,s)=>{const{price:r,title:n}=e[s];return t[s]={...this.state[s],...void 0!==r&&{price:r},...void 0!==n&&{title:n}},t}),{});return Object.values(t)}},f=document.querySelector(".header-cart-link");function g(){const e=y.getTotalQuantity();e>0?(f.querySelector(".header-cart-link-count").textContent=`(${e})`,f.style.display="flex"):f.querySelector(".header-cart-link-count").textContent=""}g()},810:(e,t,s)=>{s.d(t,{A:()=>r});class r{constructor({baseUrl:e,headers:t}){this._baseUrl=e,this._headers=t}_isResponseOk(e){return e.ok?e.json():Promise.reject(`Ошибка: ${e.status}`)}getInitialCards(){return fetch("https://api.termoblok.ru/blogcards",{headers:this._headers}).then((e=>this._isResponseOk(e)))}getInitiatPartners(){return fetch("https://api.termoblok.ru/partners",{headers:this._headers}).then((e=>this._isResponseOk(e)))}sendCartForm(e){return fetch(`${this._baseUrl}/forms/cart-form`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).then((e=>this._isResponseOk(e)))}sendCallForm(e){return fetch(`${this._baseUrl}/forms/call-form`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).then((e=>this._isResponseOk(e)))}sendBigForm(e){return fetch(`${this._baseUrl}/forms/base-form`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).then((e=>this._isResponseOk(e)))}}},966:(e,t,s)=>{function r(e,t,s,r,n){switch(e){case"default":default:t.textContent=s;break;case"loading":t.textContent=r;break;case"sended":t.textContent=n}}function n(e,t){return e.some((e=>t.includes(e)))}function a(e,t){return console.log(e,t),!e.some((e=>!t.includes(e)))}function i(e,t){return t.filter((t=>a(e,t.type)))}function o(){let e=window.innerWidth;return window.addEventListener("resize",(function(){var t;setTimeout((t=window.innerWidth,void(e=t)),1500)})),e}function l(){let e=window.innerWidth;return window.addEventListener("resize",(function(){var t;t=window.innerWidth,e=t})),e}function c(e,t){let s=null;return function(...r){s||(s=setTimeout((()=>{e(...r),clearTimeout(s),s=null}),t))}}s.r(t),s.d(t,{articlesMapper:()=>i,isFullInclude:()=>a,isIntersection:()=>n,renderLoading:()=>r,throttle:()=>c,useWindowSize:()=>o,useWindowSizeTest:()=>l})}},t={};function s(r){var n=t[r];if(void 0!==n)return n.exports;var a=t[r]={exports:{}};return e[r](a,a.exports,s),a.exports}s.d=(e,t)=>{for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.p="/";const r={cardTemplateSelector:"#product-card-template",cardSelector:".product-card",configFields:[{selector:".card__image",whatChange:"src",privateVarname:"_imageEl",key_in_dataobj:"image_name"},{selector:".card__image",whatChange:"alt",privateVarname:"_imageAlt",key_in_dataobj:"title"},{selector:".card__title",whatChange:"textContent",privateVarname:"_titleEl",key_in_dataobj:"title"},{selector:".card__price",whatChange:"textContent",privateVarname:"_priceEl",key_in_dataobj:"price",formatter:e=>`${e} руб.`},{selector:".card__weight",whatChange:"textContent",privateVarname:"_weightEl",key_in_dataobj:"weight",formatter:e=>`Вес: ${e} кг`},{selector:".cart-quantity",whatChange:"value",privateVarname:"_quantityInput",key_in_dataobj:"count",defaultValue:"1"},{selector:".cart-btn-minus",whatChange:"dataset.action",privateVarname:"_minusBtn",key_in_dataobj:"id",defaultValue:"decrease"},{selector:".cart-btn-plus",whatChange:"dataset.action",privateVarname:"_plusBtn",key_in_dataobj:"id",defaultValue:"increase"},{selector:".card__link",whatChange:"href",privateVarname:"_linkEl",key_in_dataobj:"linkPath",formatter:e=>`/${e}`}],dataobj_test:{image_name:"plast-ti025-1234-L.png",linkPath:"komplektuyushchie-dlya-teploobmennikov/plates/ti025/ti025-aisi316-l-1234-0_4-mm.html",price:"316",title:"Пластина ТИ025 1.4401/AISI316 0.4mm L 1234",weight:"0.136",id:"product-12345",initial_quantity:"1"}};class n{constructor({cardTemplateSelector:e,cardSelector:t,configFields:s,cardObj:r,handleCardClick:n},a){this._handleCardClick=n,this._cardTemplateSelector=e,this._cardSelector=t,this._dynamicRenderer=a,this._cardObj=r}_getTemplate(){return document.querySelector(this._cardTemplateSelector).content.querySelector(this._cardSelector).cloneNode(!0)}addStyles(){}generateCard(){return this._element=this._getTemplate(),this._dynamicRenderer._configElementsMap(this._element),this._dynamicRenderer._renderObj(this._cardObj),this.addStyles(),this._setEventListeners(),this._element}_setEventListeners(){this._handleCardClick&&this._element.addEventListener("mousedown",(()=>{this._handleCardClick(this._cardObj,this._element)}))}}class a{constructor({data:e,renderer:t,el:s},r,n=0){this._renderedItems=e,this._container=s?s.querySelector(r):document.querySelector(r),this._renderer=t,this._delay=0,this._delayTime=n}hide(){this._container.style.display="none"}show(){this._container.style.display="block"}hideParentEl(){this._container.closest(".parent-sect").style.display="none"}setItem(e){this._container.prepend(e)}setItems(e){this._renderedItems=e}appendItem(e){this._container.append(e)}clear(){this._container.innerHTML="",this._delay=0}renderFiltered(e){this.clear(),this._renderedItems=e,this._renderedItems.forEach((e=>{this._renderer(e)})),0===e.length&&(this._container.textContent="По Вашему условию поиска статей пока нет.")}renderItems(){this._renderedItems.forEach((e=>{console.log("Пытается присвоить item['data-wow-delay'] для",e),e["data-wow-delay"]=this._delay/1e3+"s",setTimeout((()=>{this._renderer(e)}),this._delay),this._delay+=this._delayTime}))}}class i{constructor(e){this._configFields=e,this._elementsMap=new Map,this._sectionsMap=new Map;const t={};e.forEach((e=>{t[e.selector]||(t[e.selector]=[]),t[e.selector].push(e)})),this._configBySelector=t}_configElementsMap(e){Object.keys(this._configBySelector).forEach((t=>{const s=e.querySelector(t);s?this._configBySelector[t].forEach((r=>{if(this[r.privateVarname]=s,"array"!==r.whatChange)this._elementsMap.set(r.privateVarname,{element:s,whatChange:r.whatChange,keyInData:r.key_in_dataobj,formatter:r.formatter||!1,type:"property"});else{this._elementsMap.set(r.privateVarname,{element:s,whatChange:r.whatChange,keyInData:r.key_in_dataobj,type:"array"});const i=r.configForInnerSection,o=new a({items:[],el:e,renderer:e=>{const t=new n({cardTemplateSelector:i.cardTemplateSelector,cardSelector:i.cardSelector,configFields:i.configFields,cardObj:e}).generateCard();o.appendItem(t)}},t);this._sectionsMap.set(r.privateVarname,o)}})):console.warn(`Элемент с селектором ${t} не найден в карточке`)}))}_setProperty(e,t){const s=e.element,r=e.whatChange,n=e.keyInData,a=e.formatter||!1;null===t[n]&&s.closest(".parent-sect")&&(s.closest(".parent-sect").style.display="none"),s&&void 0!==t[n]&&null!==t[n]&&("textContent"===r?s.textContent=a?a(t[n]):t[n]:"innerHTML"===r?s.innerHTML=a?a(t[n]):t[n]:"src"===r?s.src=a?a(t[n]):t[n]:"alt"===r?s.alt=a?a(t[n]):t[n]:r in s&&(s[r]=a?a(t[n]):t[n]))}_renderArray(e,t,s){const r=e.keyInData,n=this._sectionsMap.get(t);console.log("Пытаемся отрендерить массивчик тегов data[dataKey]=",s[r],Array.isArray(s[r])),console.log(this._sectionsMap),console.log("config.",e),n&&Array.isArray(s[r])&&(n._container.closest(".parent-sect")&&!s[r].length&&(console.log("YOOOO section._container.closest"),n._container.closest(".parent-sect").style.display="none"),console.log("element.closest('.parent-sect')",n),e.element.innerHTML="",n.setItems(s[r]),n.renderItems())}_renderObj(e){this._elementsMap.forEach(((t,s)=>{"property"===t.type&&this._setProperty(t,e)})),this._elementsMap.forEach(((t,s)=>{"array"===t.type&&this._renderArray(t,s,e)}))}_clearObj(){this._sectionsMap.forEach(((e,t)=>{const s=this._elementsMap.get(t);s&&s.element&&(s.element.innerHTML="")})),this._elementsMap.forEach(((e,t)=>{const s=e.element,r=e.whatChange;s&&("textContent"===r||"innerHTML"===r?s[r]="":"src"===r?s.src="":"alt"===r?s.alt="":"value"===r&&(s.value=""))}))}updateField(e,t){const s=this._elementsMap.get(e);s&&s.element&&(s.element[s.whatChange]=t)}}class o extends n{constructor({handleIncreaseInCart:e,handleDecreaceInCart:t,handleRemoveFromCart:s,handleSomeElementNull:r,...n},a,o){super(n,a),this._handleIncreaseInCart=e,this._handleDecreaceInCart=t,this._handleRemoveFromCart=s,this._handleSomeElementNull=r,this._cart=o,this._dynamicRenderer=new i(n.configFields)}generateCard(){return this._element=super.generateCard(),this._element}updateCard(){const e=this._cart.getItems(),t=e[this._cardObj.linkPath]?.quantity||0;0===t?this._handleSomeElementNull():this._dynamicRenderer.updateField("_quantityInput",t)}_setEventListeners(){super._setEventListeners(),this._dynamicRenderer._elementsMap.get("_plusBtn").element.addEventListener("click",(()=>{this._handleIncreaseInCart(this._cardObj)})),this._dynamicRenderer._elementsMap.get("_minusBtn").element.addEventListener("click",(()=>{this._handleDecreaceInCart(this._cardObj)}))}}s(446);var l=s(809),c=s(634),d=s(810);const{renderLoading:h}=s(966),u=new d.A({baseUrl:"https://api.dromotron.ru",headers:{Accept:"application/json","Content-Type":"application/json;charset=utf-8"}}),m=document.querySelector(".cart-preloader"),_=document.querySelector(".cart-total-price");let p;function y(e){const t=l.N.getItems();return Object.keys(t).map((s=>({...e[s],count:t[s].quantity,i:s})))}function f(){const e=l.N.getTotalPrice(p);console.log("total_price",e),_.textContent=e}const g=new i(r.configFields),b=new a({data:[],renderer:e=>{const t=new o({...r,cardObj:e,handleIncreaseInCart:e=>{l.N.addItem(e.linkPath),t.updateCard(),(0,l.k)(),f()},handleDecreaceInCart:e=>{l.N.removeItem(e.linkPath),t.updateCard(),(0,l.k)(),f()},handleSomeElementNull:()=>{b.setItems(y(p)),b.clear(),b.renderItems()}},g,l.N),s=t.generateCard();b.appendItem(s)}},".cart");!async function(){const e=await fetch("https://api.dromotron.ru/data/price_catalog").then((e=>function(e){return e.ok?e.json():Promise.reject(`Ошибка: ${e.status}`)}(e)));p=e.reduce(((e,t)=>({...e,[t.linkPath]:t})),{}),m.style.display="none";const t=y(p);console.log("mappedFromCart",t),b.setItems(t),b.renderItems(),f()}();const v={inputSelector:".form__input",submitButtonSelector:".cart-submit-button",inactiveButtonClass:"form__submit-button_disabled",inputErrorClass:"form__input_type_error",errorClass:"form__input-error_visible"},E=document.forms.cartForm,C=E.querySelector(".cart-submit-button"),S=new c.A(v,E);S.enableValidation(),new class{constructor({formSubmitHandler:e,formCleanError:t,checherValidation:s},r,n){this._formSubmitHandler=e,this._formCleanError=t,this._formElement=r,this._inputSelector=n,this._absolutePopup=this._formElement.querySelector(".popup-absolute"),this._checker=s}_getInputValues(){return this._inputList=this._formElement.querySelectorAll(this._inputSelector),this._formValues={},this._inputList.forEach((e=>{this._formValues[e.name]=e.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(),this._absolutePopup.classList.contains("popup__form-fio_opened")&&(console.log("Открыто!"),this._absolutePopup.classList.remove("popup__form-fio_opened"))}setEventListeners(){this._formElement.addEventListener("submit",(e=>{e.preventDefault(),this._checker()&&this._formSubmitHandler(this._getInputValues())}))}}({formSubmitHandler:e=>{const t=l.N.getItemsForSend(p),s=l.N.getTotalPrice(p);h("loading",C,"Оставить заявку","Отправляем...","Отправлено успешно!"),u.sendCartForm({...e,order:t,totalPrice:s}).then((e=>{console.log(e),h("sended",C,"Оставить заявку","Отправляем...","Отправлено успешно!")})).catch((e=>console.log(e))).finally((()=>{E.reset(),setTimeout((()=>{h("default",C,"Оставить заявку","Отправляем...","Отправлено успешно")}),900)}))},formCleanError:()=>{},checherValidation:e=>!S.hasInvalidInput()||(S.showErrors(),!1)},E,v.inputSelector).setEventListeners()})();