1function e(e){var t=document.cookie,n=e+`=`,r=t.indexOf(`; `+n);if(r==-1){if(r=t.indexOf(n),r!=0)return null}else{r+=2;var i=document.cookie.indexOf(`;`,r);i==-1&&(i=t.length)}return decodeURI(t.substring(r+n.length,i))}var t={getToken:function(){return new Promise((e,t)=>{let n={secret:CoreApiConfig.auth.secret,key:CoreApiConfig.auth.key};fetch(CoreApiConfig.domain+CoreApiConfig.methods.auth,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(n)}).then(e=>{if(!e.ok)throw Error(`Network response was not ok`);return e.json()}).then(t=>{e(t.type+` `+t.token)}).catch(e=>{t(e)})})},getStoreFinderToken:function(){return e(`store_finder_auth`)===null?new Promise((e,t)=>{let n=globalConf(StoreFinderConfig),r={"Content-Type":`application/json`,Accept:`application/json`},i={key:n.auth.k,secret:n.auth.s};fetch(n.url.getAuth,{method:`POST`,headers:r,body:JSON.stringify(i)}).then(e=>{if(!e.ok)throw Error(`Network response was not ok`);return e.json()}).then(t=>{let n=t.type+` `+t.token,r=t.expired_at;document.cookie=`store_finder_auth=`+n+`; path=/; secure; expires=`+new Date(r).toGMTString()+`;`,sessionStorage.setItem(`store_finder_auth`,n),e(n)}).catch(e=>{console.log(`Error while getting token: `,e),t(e)})}):new Promise((t,n)=>{let r=e(`store_finder_auth`);sessionStorage.setItem(`store_finder_auth`,r),t(r)})}},n={isIosDevice:function(){return navigator.platform.indexOf(`iPhone`)!=-1||navigator.platform.indexOf(`iPad`)!=-1||navigator.platform.indexOf(`iPod`)!=-1},escapeHtml:function(e){let t=document.createElement(`div`);return t.textContent=e,t.innerHTML}},r=function(e){this.tmpl=document.getElementById(`pointTypeItemTmpl`).innerHTML,this.pointType=e};r.prototype.renderItem=function(){let e=this,t=``,r;return t=e.tmpl,r={"@id":n.escapeHtml(e.pointType.id),"@title":n.escapeHtml(e.pointType.name)},Object.keys(r).forEach(function(e){t=t.replaceAll(e,r[e])}),new DOMParser().parseFromString(t,`text/html`).body.firstElementChild};var i=function(e){this.tmpl=document.getElementById(`productTypeItemTmpl`).innerHTML,this.productType=e};i.prototype.renderItem=function(){let e=this,t=``,r;return t=e.tmpl,r={"@id":n.escapeHtml(e.productType.id),"@title":n.escapeHtml(e.productType.name)}
1,Object.keys(r).forEach(function(e){t=t.replaceAll(e,r[e])}),new DOMParser().parseFromString(t,`text/html`).body.firstElementChild};var a={init:function(e){let t=a;if(t.mapData=e,t.pointTypeFilterSelector=`.point-type-filter input`,t.productTypeFilterSelector=`.product-type-filter input`,t.addressInput=document.querySelector(`.finder-map #address-search`),t.addressInput){let e=t.addressInput.cloneNode(!0);t.addressInput.parentNode.replaceChild(e,t.addressInput),t.addressInput=e,t.addressInput.addEventListener(`change`,function(){let e=this.closest(`.field`),t=e?e.querySelector(`.clear-input`):null;this.value.length>0?t&&t.classList.add(`active`):t&&t.classList.remove(`active`)})}document.querySelectorAll(`.clear-input`).forEach(e=>{let n=e.cloneNode(!0);e.parentNode.replaceChild(n,e),n.addEventListener(`click`,function(){t.addressInput&&(t.addressInput.value=``,t.addressInput.removeAttribute(`data-place-name`)),this.classList.remove(`active`),document.querySelectorAll(`.finder-map-city-list button`).forEach(e=>e.setAttribute(`aria-pressed`,`false`)),document.querySelectorAll(`.finder-map-city-list li`).forEach(e=>e.classList.remove(`active`)),o.filterPoints()})}),t.addressInput&&typeof google<`u`&&google.maps&&google.maps.places?t.addressSearch=new google.maps.places.SearchBox(t.addressInput):console.warn(`SearchBox initialization skipped: addressInput or google.maps.places missing`),t._initTopCities(),t._initAddress(),t._initPointType(),t._initProductsType()},getFiltersJson:function(){t.getStoreFinderToken().then(e=>{let t=globalConf(StoreFinderConfig);fetch(t.url.getFiltersUrl+`?shop=`+t.shopName,{method:`GET`,headers:{Authorization:sessionStorage.getItem(`store_finder_auth`)}}).then(e=>{if(!e.ok)throw Error(`Network response was not ok`);return e.json()}).then(e=>{let t=document.createElement(`script`);t.src=`https://maps.googleapis.com/maps/api/js?key=`+e.data.map.key+`&language=`+Shopify.locale+`&libraries=places,geometry`,t.async=!0,t.onload=function(){u.filterData=e.data,u.init(),u.tryInit()},t.onerror=function(){console.error(`Failed to load Google Maps script`)},document.body.appendChild(t)}).catch(e=>{console.error(`Error while fetching filters:`,e)})}).catch(e=>{console.error(`Error while getting token for filters:`,e)})},_initAddress:function(){var e=a;if(!e.addressSearch){console.error(`MapFilter.addressSearch is not initialized`);return}google.maps.event.addListener(e.addressSearch,`places_changed`,function(t){var n=e.addressSearch.getPlaces()[0],r;n?(e.addressInput.setAttribute(`data-place-name`,n.name||``),r={lat:n.geometry.location.lat(),lng:n.geometry.location.lng()},o.filterPoints(r)):e.addressInput.setAttribute(`data-place-name`,``),r&&o._zoomNearestPoints(r,!0)})},_initPointType:function(){let e=a,t;if(!e.mapData||!e.mapData.filters||!e.mapData.filters.point_type){console.warn(`MapFilter._initPointType: filters.point_type missing`);return}e.mapData.filters.point_type.forEach(function(e){t=new r(e).renderItem();let n=document.querySelector(`.point-type-filter .filter-body-inner`);n&&(n.querySelector(`#point-type-${e.id}`)||n.append(t))}),document.querySelectorAll(`.point-type-f`).forEach(t=>{t.removeEventListener(`change`,e._onPointTypeChange),t.addEventListener(`change`,e._onPointTypeChange)})},_initProductsType:function(){let e=a,t;if(!e.mapData||!e.mapData.filters||!e.mapData.filters.product_type){console.warn(`MapFilter._initProductsType: filters.product_type missing`);return}e.mapData.filters.product_type.forEach(function(n){if(e.mapData.products.includes(n.id)){t=new i(n).renderItem();let e=document.querySelector(`.product-type-filter .filter-body-inner`);e&&(e.querySelector(`#product-type-${n.id}`)||e.append(t))}}),document.querySelectorAll(`.product-type-f`).forEach(t=>{t.removeEventListener(`change`,e._onProductTypeChange),t.addEventListener(`change`,e._onProductTypeChange)})},_onPointTypeChange:function(){o.filterPoints()},_onProductTypeChange:function(){o.filterPoints()},_onTopCitiesChange:function(){let e=a.addressInput;if(document.querySelectorAll(`.finder-map-city-list button`).forEach(e
1=>e.setAttribute(`aria-pressed`,`false`)),document.querySelectorAll(`.finder-map-city-list li`).forEach(e=>e.classList.remove(`active`)),this.classList.contains(`js-city-reset`)){o.showAllPoints(),this.classList.add(`active`);let e=this.querySelector(`button`);e&&e.setAttribute(`aria-pressed`,`true`);return}let t=this.querySelector(`button`);t&&t.setAttribute(`aria-pressed`,`true`),this.classList.add(`active`);let n=this.textContent.trim();e&&(e.value=n),e&&(google.maps.event.trigger(e,`focus`,{}),google.maps.event.trigger(e,`keydown`,{keyCode:13}))},_initTopCities:function(){let e=a;document.querySelectorAll(`.finder-map-city-list li`).forEach(t=>{let n=t.cloneNode(!0);t.parentNode.replaceChild(n,t),n.addEventListener(`click`,e._onTopCitiesChange)})},clearFilters:function(){let e=a;document.querySelectorAll(`.point-type-f`).forEach(e=>{e.checked=!1,e.removeAttribute(`checked`)}),document.querySelectorAll(`.product-type-f`).forEach(e=>{e.checked=!1,e.removeAttribute(`checked`)}),e.addressInput&&(e.addressInput.value=``,e.addressInput.removeAttribute(`data-place-name`)),document.querySelectorAll(`.clear-input`).forEach(e=>e.classList.remove(`active`)),document.querySelectorAll(`.finder-map-city-list button`).forEach(e=>e.setAttribute(`aria-pressed`,`false`)),document.querySelectorAll(`.finder-map-city-list li`).forEach(e=>e.classList.remove(`active`))}},o={countryCenter:{lat:48.21,lng:35.1},zoom:5.2,radius:1e3,style:[{featureType:`landscape.man_made`,elementType:`geometry.fill`,stylers:[{color:`#efefef`}]},{featureType:`poi.attraction`,elementType:`labels.text`,stylers:[{color:`#c0c0c0`},{visibility:`simplified`}]},{featureType:`road.highway`,elementType:`geometry.fill`,stylers:[{color:`#ffffff`}]},{featureType:`road.highway`,elementType:`geometry.stroke`,stylers:[{color:`#ffffff`}]},{featureType:`road.highway`,elementType:`labels.icon`,stylers:[{visibility:`simplified`}]},{featureType:`road.highway`,elementType:`labels.text.fill`,stylers:[{color:`#c0c0c0`}]},{featureType:`transit.station`,elementType:`labels.text`,stylers:[{color:`#c0c0c0`},{visibility:`simplified`}]},{featureType:`transit.station.rail`,elementType:`labels.text`,stylers:[{color:`#c0c0c0`}]},{featureType:`transit.station.rail`,elementType:`labels.text.stroke`,stylers:[{visibility:`simplified`}]},{featureType:`water`,elementType:`geometry.fill`,stylers:[{color:`#5bd0c9`}]}],mapElement:null,mapInner:null,filtersInner:null,init:function(e){let t=o;if(t.mapData=e,t.searchMarker=null,t.mapElement=document.querySelector(`[data-map]`),t.mapInner=document.querySelector(`.finder-map-map`),t.filtersInner=document.querySelector(`.finder-map-city-select`),!t.mapElement){console.error(`PointsMap.mapElement not found!`);return}t.map=new google.maps.Map(this.mapElement,{zoom:this.zoom,minZoom:this.zoom,maxZoom:28,center:this.countryCenter,mapTypeControl:!1,zoomControl:!0,zoomControlOptions:{position:google.maps.ControlPosition.LEFT_BOTTOM},scaleControl:!0,scaleControlOptions:{style:google.maps.MapTypeControlStyle.HORIZONTAL_BAR,position:google.maps.ControlPosition.TOP_CENTER},streetViewControl:!1,fullscreenControl:!0,fullscreenControlOptions:{position:google.maps.ControlPosition.LEFT_TOP},styles:this.style}),t.markerPopup=new google.maps.InfoWindow({content:``}),t.placeMap(),document.addEventListener(`click`,e=>{e.target.closest(`.current-location-btn`)&&t._onGetCurrentLocation(),e.target.closest(`[data-clear-filter]`)&&t.showAllPoints()}),google.maps.event.addListenerOnce(t.map,`idle`,()=>{let e=new CustomEvent(`finderMapLoaded`,{detail:{mapInstance:t.map}});window.dispatchEvent(e)});let n=()=>{let e=document.querySelector(`.finder-map-select-inner`),t=document.querySelector(`.finder-map`),n=document.querySelector(`.finder-map-map`),r=document.getElementById(`address-search`);if(!e||!t||!n||!r)return;function i(){document.activeElement!==r&&(window.innerWidth<=992?t.contains(e)&&n.appendChild(e):n.contains(e)&&t.appendChild(e))}i(),window.addEventListener(`resize`,i),r.addEventListener(`blur`,i)};document.readyState===`loading`?document.addEventListener(`DOMContentLoaded`,n):n()},placeMap:function(){let e=o;if(!e.mapInner){console.error(`PointsMap.mapInner not found in placeMap`);return}let t=e.mapInner.querySelector(`.loading-wrapper`);t&&(t.style.transition=`opacity 0.3s`,t.style.opacity=`0`,setTimeout(()=>{t.style.display=`none`},300));let n=e.mapInner.closest(`.finder-map`);n&&(n.style.overflow=`inherit`),e.map.controls[google.maps.ControlPosition.LEFT_CENTER].push(e._getCurrentLocationBtn()),google.maps.event.addListenerOnce(e.map,`tilesloaded`,e._showOnLoadNearestPoints),e.drawPoints(),e.filtersInner&&e.filtersInner.classList.remove(`disabled`)},drawPoints:function(){let e=o,t,n,r=[],i=[];if(!e.mapData||!e.mapData.points){console.error(`PointsMap.drawPoints: mapData.points is missing`);return}let a=[];Array.isArray(e.mapData.points)?a=e.mapData.points:typeof e.mapData.points==`object`&&(a=Object.values(e.mapData.points)),a.forEach(function(e){t=new s(e),n=t.makeMarker(),i.push(t),r.push(n)}),e.markers=i,e.drawClusters(r)},drawClusters:function(e){let t=this;
1t.cluster&&t.cluster.clearMarkers(),t.cluster=new markerClusterer.MarkerClusterer({map:t.map,markers:e,renderer:{render({count:e,position:t},n){function r(e){let t,n,r,i,a,o;return e<10?(t=34,n=34,r=17,i=13,a=13,o=21):e<100?(t=38,n=38,r=18,i=15,a=12,o=22):e<1e3?(t=44,n=44,r=22,i=18,a=13,o=26):e<1e4?(t=50,n=50,r=25,i=21,a=12,o=29):(t=58,n=58,r=29,i=24,a=15,o=32),window.btoa(` 2 <svg xmlns="http://www.w3.org/2000/svg" width="${t}" height="${n}" viewBox="0 0 ${n} ${n}" fill="none"> 3 <g filter="url(#filter0_f_2740_83)"> 4 <circle cx="${r}" cy="${r}" r="${i}" fill="#7ADEE9"/> 5 </g> 6 7 <defs> 8 <filter id="filter0_f_2740_83" x="0" y="0" width="${t}" height="${t}" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> 9 <feFlood flood-opacity="0" result="BackgroundImageFix"/> 10 <feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/> 11 <feGaussianBlur stdDeviation="2.5" result="effect1_foregroundBlur_2740_83"/> 12 </filter> 13 </defs> 14 <text x="${a}" y="${o}" font-family="Mont, sans-serif" font-size="12" font-weight="600" fill="#01567e">${e}</text> 15 </svg>`)}return new google.maps.Marker({position:t,icon:{url:`data:image/svg+xml;base64,${r(e)}`},optimized:!0})}}})},showMarkerOnMap:function(e){let t=this,n,r=parseFloat(e.getAttribute(`data-lng`)),i=parseFloat(e.getAttribute(`data-lat`));t.markers.forEach(function(e){if(e.lngNum===r&&e.latNum===i){n=e;return}});let a=new google.maps.LatLng(n.latNum,n.lngNum);t.map.panTo(a),t.map.setZoom(20),new google.maps.event.trigger(n.marker,`click`)},gallerySlider:function(){setTimeout(function(){let e=document.querySelector(`.map-point-gallery`);e&&e.querySelectorAll(`.map-point-gallery-item`).length>0&&new Swiper(e,{slidesPerView:3,spaceBetween:10,navigation:{nextEl:`.map-point-gallery-arrow.next`,prevEl:`.map-point-gallery-arrow.prev`},breakpoints:{546:{slidesPerView:3},0:{slidesPerView:2}}})},300)},_getCurrentLocationBtn:function(){let e=document.createElement(`div`),t=document.createElement(`button`);t.className=`current-location-btn`,t.title=`ÐаÑе мÑÑÑÐµÐ·Ð½Ð°Ñ Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ`;let n=document.createElement(`div`);return n.className=`current-location-img`,t.appendChild(n),e.appendChild(t),e},_onGetCurrentLocation:function(){let e=o,t;navigator.geolocation&&navigator.geolocation.getCurrentPosition(function(n){t={lat:n.coords.latitude,lng:n.coords.longitude},e._zoomNearestPoints(t,!1)},function(){console.log(`Geolocation is not allowed`)})},_zoomNearestPoints:function(e,t,n){let r=o,i,a,s,l,u,d;u=r._calculatePointsDistance(e),u=r._sortPointsDistance(u),c.resetRowsPointsDistance(u),u.length&&(d=r._getMaxDistancePoint(u),d.lng<e.lng?(s=new google.maps.LatLng(d.lat,d.lng),a=new google.maps.LatLng(e.lat,e.lng)):(s=new google.maps.LatLng(e.lat,e.lng),a=new google.maps.LatLng(d.lat,d.lng)),l=new google.maps.LatLngBounds(s,a)),r._drawSearchRadius(e),t?r.map.fitBounds(r.searchRadius.getBounds()):r.map.fitBounds(l),i=r.map.getZoom(),i>0&&(i=16),r.map.setZoom(i)},_sortPointsDistance:function(e){return e=e.sort(function(e,t){return e.distance-t.distance}),e},_calculatePointsDistance:function(e,t){let n=o,r=[],i=[],a,s,c;return a=new google.maps.LatLng(e.lat,e.lng),t||=n.markers,t.forEach(function(e){e.marker.getVisible()&&(s=new google.maps.LatLng(parseFloat(e.pointData.lat),parseFloat(e.pointData.lng)),c=google.maps.geometry.spherical.computeDistanceBetween(s,a),r.push({distance:c,pointData:e.pointData}),i.push(e))}),r},_getMaxDistancePoint:function(e){let t;return t=e.length>=3?e[2].pointData:e[e.length-1].pointData,t},_drawSearchRadius:function(e){let t=o;t._clearSearchRadius(),t.searchRadius=new google.maps.Circle({strokeColor:`#2e6da4`,strokeOpacity:.8,strokeWeight:1,fillColor:`#6283d8`,fillOpacity:.35,map:t.map,center:e,radius:t.radius})},_clearSearchRadius:function(){let e=o;e.searchRadius&&e.searchRadius.setMap(null)},_showOnLoadNearestPoints:function(){let e=o,t;navigator.geolocation&&navigator.geolocation.getCurrentPosition(function(n){t={lat:n.coords.latitude,lng:n.coords.longitude}
15,e._zoomNearestPoints(t,!0)},function(){console.log(`Geolocation is not allowed`),document.dispatchEvent(new CustomEvent(`mapfinder:nogeo`))})},filterPoints:function(e){let t=o,n,r,i,a=[],s=[],l=[];e&&t._zoomNearestPoints(e,!0,!0);let u=document.getElementById(`address-search`);i=u?u.getAttribute(`data-place-name`):``,n=Array.from(document.querySelectorAll(`.product-type-filter input:checked`)).map(e=>e.value),r=Array.from(document.querySelectorAll(`.point-type-filter input:checked`)).map(e=>e.value),i&&t.markers.forEach(function(e){e.pointData.city&&e.pointData.city.toLowerCase().replace(`-`,``).indexOf(i.toLowerCase().replace(`-`,``))>-1&&l.push(e)}),l.length||(l=t.markers),l.forEach(function(e){var t=!0;n&&n.length&&t&&(t=!1,e.pointData.products.forEach(function(e){if(n.indexOf(e.toString())>-1){t=!0;return}})),r&&r.length&&t&&(t=!1,r.includes(e.pointData.store_type_id.toString())&&(t=!0)),t?(a.push(e.marker),e.marker.setVisible(!0),s.push(e)):e.marker.setVisible(!1)}),t.drawClusters(a),c.resetRowsFiltered(s)},showAllPoints:function(){var e=o,t=[];a.clearFilters(),e.markers.forEach(function(e){e.marker.setVisible(!0),t.push(e.marker)}),e.drawClusters(t),e.map.setCenter(e.countryCenter),e.map.setZoom(e.zoom),c.resetRowsFiltered(e.markers)}},s=function(e){let t=globalConf(StoreFinderConfig);this.pointData=e,this.serviceTmpl=document.getElementById(`serviceTmpl`).innerHTML,this.markerPopupTmpl=document.getElementById(`markerPopupTmpl`).innerHTML,this.latNum=parseFloat(e.lat),this.lngNum=parseFloat(e.lng),this.markerConf={position:{lat:this.latNum,lng:this.lngNum},title:e.name,map:o.map,icon:{url:t.icon,scaledSize:new google.maps.Size(50,50)}}};s.prototype.makeMarker=function(){let e=this,t;return t=new google.maps.Marker(e.markerConf),e.marker=t,google.maps.event.addListener(t,`click`,function(n){o.markerPopup.close(),o.markerPopup.setContent(e.getPopup()),o.markerPopup.open(e.map,t),e.getGallery()!==``&&o.gallerySlider()}),google.maps.event.addListener(t,`mouseover`,function(e){e.domEvent.target.parentElement.removeAttribute(`title`)}),t},s.prototype.getPopup=function(){let e=this,t=e.markerPopupTmpl,r=e.pointData,i={layout:{"@title":r.name,"@gallery":e.getGallery(),"@address":r.city+`, `+r.address,"@schedule":r.schedule==null?`<p class="mb-2">пн-пÑ: 09:00-19:00</p><p class="mb-0">Ñб-нд: 09:00-20:00</p>`:n.escapeHtml(r.schedule),"@phone":r.phone==null?`+380675034567`:n.escapeHtml(r.phone),"@type":e.getStoreType(),"@services":e.getServices()}};return Object.keys(i.layout).forEach(function(e){t=t.replace(e,i.layout[e])}),t},s.prototype.getGallery=function(){let e=this,t=globalConf(StoreFinderConfig),n=[],r=e.pointData.id,i=`${t.url.pointGalleryURL}/${r}/gallery`,a=new XMLHttpRequest;a.open(`GET`,i,!1);try{if(a.send(),a.status!==200)throw Error(`Network response was not ok: ${a.status}`);let e=JSON.parse(a.responseText);return e.data.length>0?(e.data.forEach(e=>{let t=document.createElement(`img`);t.src=e.full_url,t.alt=`Point gallery image`,n.push(`<div class="swiper-slide"><a href="`+t.src+`" data-fancybox="gallery" class="map-point-gallery-item">`+t.outerHTML+`</a></div>`)}),n.join(``)):``}catch(e){return console.error(`Fetch error:`,e),``}},s.prototype.getStoreType=function(){let e=this,t,n=e.pointData.store_type_id;return window.mapData.types.forEach(function(e){e.id===n&&(t=e.name)}),t},s.prototype.getServices=function(){let e=this;this.serviceTmpl;let t=[],n=[];return window.mapData.services.forEach(function(t){e.pointData.services.forEach(function(e){t.id===e&&n.push(t)})}),n.forEach(function(n){let r=e.serviceTmpl;r=r.replace(`@service`,n.name),r=r.replace(`@class`,`tag-`+n.code),t.push(r)}),t.join(``)};var c={pageSize:40,list:null,title:null,init:function(e){let t=c;t.list=document.querySelector(`.finder-map-points-content`),t.title=document.querySelector(`.finder-map-title`),t.fullData=e,t.pointsList=e.points,t.resetRows(t.pointsList)},resetRows:function(e){let t=c;t.page=1,t.pointsList=e,t.renderRows()},refresh:function(){let e=c;e.pointsList&&e.renderRows()},resetRowsPointsDistance:function(e){let t=c,n=[];e.forEach(function(e){n.push(e.pointData)}),t.resetRows(n)},renderRows:function(){let e=c,t=e.pageSize*e.page,n=0,r;e.list||=document.querySelector(`.finder-map-points-content`),e.list&&(e.list.innerHTML=``);let i=[];if(Array.isArray(e.pointsList)?i=e.pointsList:typeof e.pointsList==`object`&&e.pointsList!==null&&(i=Object.values(e.pointsList)),i.length)for(let a=0;a<i.length&&n!==t;a++){let t=i[a];r=l.renderRow(t,e.fullData),e.list&&e.list.append(r),n++}
15else e.renderEmptyRow()},renderEmptyRow:function(){let e=this,t=document.getElementById(`noResultsTmpl`).innerHTML;e.list&&(e.list.innerHTML=t)},resetRowsFiltered:function(e){let t=c,n,r,i=[];e.forEach(function(e){i.push(e.pointData)}),navigator.geolocation?navigator.geolocation.getCurrentPosition(function(i){n={lat:i.coords.latitude,lng:i.coords.longitude},r=o._calculatePointsDistance(n,e),r=o._sortPointsDistance(r),t.resetRowsPointsDistance(r)},function(){t.resetRows(i)}):t.resetRows(i)}},l={pointTmpl:document.getElementById(`pointTmpl`).innerHTML,typeTmpl:document.getElementById(`typeTmpl`).innerHTML,productTmpl:document.getElementById(`prodTmpl`)?document.getElementById(`prodTmpl`).innerHTML:``,serviceTmpl:document.getElementById(`serviceTmpl`).innerHTML,renderRow:function(e,t){let r=l,i=``,a,o;r.pointData=e,r.fullData=t,r.services=t.services,r.pointServices=r.pointData.services,i=r.pointTmpl,o={"@address":e.city+`, `+e.address,"@type":r.renderRowType(),"@title":e.name,"@schedule":e.schedule==null?`<p class="mb-2">пн-пÑ: 09:00-19:00</p><p class="mb-0">Ñб-нд: 09:00-20:00</p>`:n.escapeHtml(e.schedule),"@phone":e.phone==null?`+380675034567`:n.escapeHtml(e.phone),"@services":r.renderServices(r.pointServices,r.services),"@lat":e.lat,"@lng":e.lng},Object.keys(o).forEach(function(e){i=i.replace(e,o[e])}),a=new DOMParser().parseFromString(i,`text/html`).body.firstElementChild;let s=a.querySelector(`[data-id="marker_lnk"]`);if(s&&s.addEventListener(`click`,function(){r.onMapLinkClick(this)}),a.querySelector(`.map-point-title`)&&a.querySelector(`.map-point-title`).textContent.includes(`ФÑÑмовий магазин`)){let e=a.querySelector(`.map-point-phone`);e&&e.classList.remove(`d-none`)}return a},onMapLinkClick:function(e){if(o.showMarkerOnMap(e),window.innerWidth<992){let e=Header.getHeaderHeight(),t=o.mapInner.getBoundingClientRect().top+window.pageYOffset-e;window.scrollTo({top:t,behavior:`smooth`})}return!1},renderServices:function(){let e=l,t=[],n=[];return e.services.forEach(function(t){e.pointServices.forEach(function(e){t.id===e&&n.push(t)})}),n.forEach(function(n){let r=e.serviceTmpl;r=r.replace(`@service`,n.name),r=r.replace(`@class`,`tag-`+n.code),t.push(r)}),t.join(``)},renderRowType:function(){let e=l,t=[],n=[],r;return r=e.pointData.store_type_id,e.fullData.types.forEach(function(e){e.id===r&&n.push(e.name)}),n.forEach(function(n){let r=e.typeTmpl;r=r.replace(`@type`,n),t.push(r)}),t.join(``)}},u={mapData:null,filterData:null,mapInited:!1,init:function(){let e=u;e.filters=document.querySelectorAll(`.finder-map-filter`),e.filtersHeading=document.querySelectorAll(`.filter-heading`),e.filtersWrapper=document.querySelector(`.finder-map-select-inner`),e.filtersHeading.forEach(t=>{t.addEventListener(`click`,function(){e.toggleFilter(this)})}),e.getPointsJson()},toggleFilter:function(e){let t=u,n=e.closest(`.finder-map-filter`).querySelector(`.filter-body`);e.classList.contains(`open`)?(e.classList.remove(`open`),n&&t.slideUp(n,400)):(e.classList.add(`open`),n&&t.slideDown(n,400))},slideUp:function(e,t=400){e.style.transitionProperty=`height, margin, padding`,e.style.transitionDuration=t+`ms`,e.style.boxSizing=`border-box`,e.style.height=e.offsetHeight+`px`,e.offsetHeight,e.style.overflow=`hidden`,e.style.height=`0`,e.style.paddingTop=`0`,e.style.paddingBottom=`0`,e.style.marginTop=`0`,e.style.marginBottom=`0`,window.setTimeout(()=>{e.style.display=`none`,e.style.removeProperty(`height`),e.style.removeProperty(`padding-top`),e.style.removeProperty(`padding-bottom`),e.style.removeProperty(`margin-top`),e.style.removeProperty(`margin-bottom`),e.style.removeProperty(`overflow`),e.style.removeProperty(`transition-duration`),e.style.removeProperty(`transition-property`)},t)},slideDown:function(e,t=400){e.style.removeProperty(`display`);let n=window.getComputedStyle(e).display;n===`none`&&(n=`block`),e.style.display=n;let r=e.offsetHeight;e.style.overflow=`hidden`,e.style.height=`0`,e.style.paddingTop=`0`,e.style.paddingBottom=`0`,e.style.marginTop=`0`,e.style.marginBottom=`0`,e.offsetHeight,e.style.boxSizing=`border-box`,e.style.transitionProperty=`height, margin, padding`,e.style.transitionDuration=t+`ms`,e.style.height=r+`px`,e.style.removeProperty(`padding-top`),e.style.removeProperty(`padding-bottom`),e.style.removeProperty(`margin-top`),e.style.removeProperty(`margin-bottom`),window.setTimeout(()=>{e.style.removeProperty(`height`),e.style.removeProperty(`overflow`),e.style.removeProperty(`transition-duration`),e.style.removeProperty(`transition-property`)},t)},slideToggle:function(e,t=400){return window.getComputedStyle(e).display===`none`?this.slideDown(e,t):this.slideUp(e,t)},getPointsJson:function(){let e=u,n=globalConf(StoreFinderConfig);t.getStoreFinderToken().then(t=>{fetch(n.url.jsonData,{method:`GET`,headers:{"Content-Type":`application/json`,Accept:`application/json`,Authorization:sessionStorage.getItem(`store_finder_auth`)}}).then(e=>{if(!e.ok)throw Error(`Network response was not ok`);return e.json()}).then(t=>{let n=t.data?t.data:t;e.mapData=n,window.mapData=n,e.tryInit()}).catch(e=>{console.error(`Error while fetching points:`,e)})}).catch(e=>{console.error(`Error while getting token for points:`,e)})},tryInit:function(){let e=u;e.canInitMap()?e.setMapInited():console.log(`StoreFinder.tryInit: canInitMap is false`)},setMapInited:function(){let e=u;e.mapInited=!0,e.filterData&&(e.mapData.filters=e.filterData.filters,e.mapData.map=e.filterData.map,a.filterData=e.filterData),o.init(e.mapData),c.init(e.mapData),a.init(e.mapData),e.initMobileFilter()},canInitMap:function(){let e=u;return e.mapData&&e.filterData&&typeof google<`u`&&google.maps&&google.maps.Map&&!e.mapInited},initMobileFilter:function(){let e=u;document.addEventListener(`click`,function(t){let n=t.target.closest(`.store-filter-btn`);n&&(e.filtersWrapper&&e.slideToggle(e.filtersWrapper,400),n.classList.toggle(`active`))})}};document.addEventListener(`DOMContentLoaded`,()=>{a.getFiltersJson()});
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.