(()=>{"use strict";class e{constructor({data:e,renderer:t,el:r},s,a=0){this._renderedItems=e,this._container=r?r.querySelector(s):document.querySelector(s),this._renderer=t,this._delay=0,this._delayTime=a}hideParentEl(){this._container.closest(".parent-sect").style.display="none"}setItem(e){this._container.prepend(e)}setData(e){this._renderedItems=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=>{e["data-wow-delay"]=this._delay/1e3+"s",setTimeout(()=>{this._renderer(e)},this._delay),this._delay+=this._delayTime})}renderItem(e){this._renderer(e)}renderItemsSlice(e,t){this.clear(),this._renderedItems.slice(e,t).forEach(e=>{this._renderer(e)})}renderItemsFilteredByKey(e,t){this.clear(),this._renderedItems.filter(r=>r[e]===t).forEach(e=>{this._renderer(e)})}}class t{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(t){Object.keys(this._configBySelector).forEach(s=>{const a=t.querySelector(s);a?this._configBySelector[s].forEach(n=>{if(this[n.privateVarname]=a,"array"!==n.whatChange)this._elementsMap.set(n.privateVarname,{element:a,whatChange:n.whatChange,keyInData:n.key_in_dataobj,formatter:n.formatter||!1,type:"property"});else{this._elementsMap.set(n.privateVarname,{element:a,whatChange:n.whatChange,keyInData:n.key_in_dataobj,type:"array"});const c=n.configForInnerSection,o=new e({items:[],el:t,renderer:e=>{const t=new r({cardTemplateSelector:c.cardTemplateSelector,cardSelector:c.cardSelector,configFields:c.configFields,cardObj:e}).generateCard();o.appendItem(t)}},s);this._sectionsMap.set(n.privateVarname,o)}}):console.warn(`Элемент с селектором ${s} не найден в карточке`)})}_setProperty(e,t){const r=e.element,s=e.whatChange,a=e.keyInData,n=e.formatter||!1;null===t[a]&&(r.closest(".parent-sect")&&(r.closest(".parent-sect").style.display="none"),console.log("element.closest('.parent-sect')",r.closest(".parent-sect"))),r&&void 0!==t[a]&&null!==t[a]&&("textContent"===s?r.textContent=n?n(t[a]):t[a]:"innerHTML"===s?r.innerHTML=n?n(t[a]):t[a]:"src"===s?r.src=n?n(t[a]):t[a]:"alt"===s?r.alt=n?n(t[a]):t[a]:s in r&&(r[s]=n?n(t[a]):t[a]))}_renderArray(e,t,r){const s=e.keyInData,a=this._sectionsMap.get(t);console.log("Пытаемся отрендерить массивчик тегов data[dataKey]=",r[s],Array.isArray(r[s])),console.log(this._sectionsMap),console.log("config.",e),a&&Array.isArray(r[s])&&(a._container.closest(".parent-sect")&&!r[s].length&&(console.log("YOOOO section._container.closest"),a._container.closest(".parent-sect").style.display="none"),console.log("element.closest('.parent-sect')",a),e.element.innerHTML="",a.setItems(r[s]),a.renderItems())}_renderObj(e){this._elementsMap.forEach((t,r)=>{"property"===t.type&&this._setProperty(t,e)}),this._elementsMap.forEach((t,r)=>{"array"===t.type&&this._renderArray(t,r,e)})}_clearObj(){this._sectionsMap.forEach((e,t)=>{const r=this._elementsMap.get(t);r&&r.element&&(r.element.innerHTML="")}),this._elementsMap.forEach((e,t)=>{const r=e.element,s=e.whatChange;r&&("textContent"===s||"innerHTML"===s?r[s]="":"src"===s?r.src="":"alt"===s?r.alt="":"value"===s&&(r.value=""))})}updateField(e,t){const r=this._elementsMap.get(e);r&&r.element&&(r.element[r.whatChange]=t)}}class r{constructor({cardTemplateSelector:e,cardSelector:r,configFields:s,cardObj:a,handleCardClick:n},c=null){this._handleCardClick=n,this._cardTemplateSelector=e,this._cardSelector=r,this._dynamicRenderer=c||new t(s),this._cardObj=a}_getTemplate(){return document.querySelector(this._cardTemplateSelector).content.querySelector(this._cardSelector).cloneNode(!0)}generateCard(){return this._element=this._getTemplate(),console.log(this._configBySelector),this._dynamicRenderer._configElementsMap(this._element),console.log(this._elementsMap),this._dynamicRenderer._renderObj(this._cardObj),this._setEventListeners(),this._element}_setEventListeners(){this._handleCardClick&&this._element.addEventListener("mousedown",()=>{this._handleCardClick(this._cardObj,this._element)})}}const s=new class{constructor({baseUrl:e,headers:t}){this._baseUrl=e,this._headers=t}_isResponseOk(e){return e.ok?e.json():Promise.reject(`Ошибка: ${e.status}`)}getDataRequest(e){return fetch(`https://${this._baseUrl}/data/${e}`,{headers:this._headers}).then(e=>this._isResponseOk(e))}getCustomRequest(e){return fetch(`https://${this._baseUrl}/custom/${e}`,{headers:this._headers}).then(e=>this._isResponseOk(e))}getSharedTable(e){return fetch(`https://${this._baseUrl}/${e}`,{headers:this._headers}).then(e=>this._isResponseOk(e))}getReviewRequest(e){return fetch(`https://${this._baseUrl}/reviews/${e}`,{headers:this._headers}).then(e=>this._isResponseOk(e))}sendForm(e,t){return fetch(`https://${this._baseUrl}/forms/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t),isBase64Encoded:!1}).then(e=>(console.log(e),this._isResponseOk(e)))}}({baseUrl:"api.ssk22.ru",headers:{Accept:"application/json","Content-Type":"application/json;charset=utf-8"}}),a={cardTemplateSelector:"#card-object-template",cardSelector:".card",configFields:[{selector:".card-title",whatChange:"textContent",privateVarname:"_cardTitleEl",key_in_dataobj:"title"},{selector:".card-equipment",whatChange:"textContent",privateVarname:"_cardEquipmentEl",key_in_dataobj:"equipment"},{selector:".card-reg",whatChange:"textContent",privateVarname:"_cardRegion",key_in_dataobj:"region"},{selector:".card-loc",whatChange:"textContent",privateVarname:"_cardLocation",key_in_dataobj:"location"},{selector:".project__poster",whatChange:"src",privateVarname:"_cardPosterSrc",key_in_dataobj:"imageUrl"},{selector:".project__poster",whatChange:"alt",privateVarname:"_cardPosterAlt",key_in_dataobj:"title"}]},n=()=>s.getDataRequest("objects"),c=document.querySelector(".object-section"),o=new e({data:null,renderer:e=>{const s=function({config:{cardTemplateSelector:e,cardSelector:s,configFields:a,...n},cardObj:c,handleCardClick:o=()=>{},additionalObj:i={}}){const l=new t(a);return new r({cardTemplateSelector:e,cardSelector:s,configFields:a,handleCardClick:o,cardObj:{...c,...i},...n},l).generateCard()}({config:a,cardObj:e,handleCardClick:e=>console.log(`Карточка кликнута c ${e.title} и ${e.location}`)});o.appendItem(s)}},".object-list"),i=document.querySelector(".objects-more-button");i.addEventListener("click",async e=>{i.classList.add("hidden"),await async function(){const e=document.createElement("div");e.classList.add("p-4","font-medium"),e.textContent="Загружаем...",o.appendItem(e);const t=await n();c.scrollIntoView({behavior:"smooth"}),o.clear(),o.setData(t),o.renderItems()}()})})();