PageSourceSearch

https://xn----8sbfzhqzbblfo2itb.xn--p1acf/build/assets/AdvertisementMap-ymqX08OS.js

js xn----8sbfzhqzbblfo2itb.xn--p1acf collected 2026-10-05 00:14:27 UTC 4,905 bytes, 2 lines download raw bytes

1import{d as P,s as z,a as R,v as $,o as i,c as d,i as f,w as A,j as o,t as I,F as w,r as F,e as _,g as v,k as O,G as N,x as S,z as y,m as k,J as V}from"./app-B9n5ItJw.js";import{_ as Z}from"./Pagination.vue_vue_type_script_setup_true_lang-CT2ZbdZU.js";import{i as D}from"./functions-CuW_MGZ-.js";import{a as E}from"./AppLayout.vue_vue_type_script_setup_true_lang-BH3dwmLi.js";import{_ as G}from"./AppHead-DQ5ukws8.js";import{_ as j}from"./AdvertisementListCard.vue_vue_type_script_setup_true_lang-Bavw-UBd.js";import{_ as J}from"./lodash-6Rhj1HKU.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";import"./AdvertisementController-CT1AO8Vh.js";import"./index-CSEUMRIG.js";import"./utils-qeWzl6vf.js";import"./PrimaryButton.vue_vue_type_script_setup_true_lang-BnLKNbqI.js";import"./index-mjyNT6kU.js";import"./Label.vue_vue_type_script_setup_true_lang-DkMQxpda.js";import"./IconXMark.vue_vue_type_script_setup_true_lang-xmMbOUx6.js";import"./InputError.vue_vue_type_script_setup_true_lang-CFa5rrEf.js";import"./InputLabel.vue_vue_type_script_setup_true_lang-Bv8NF2Px.js";import"./Modal.vue_vue_type_script_setup_true_lang-BnhPpNNL.js";import"./SelectOption.vue_vue_type_script_setup_true_lang-wxC6GU8D.js";import"./TextInput-DJQy57N1.js";import"./Icon.vue_vue_type_script_setup_true_lang-BlKyQ7rk.js";import"./index-DV4F2Y86.js";import"./index-M6fqTdVv.js";import"./index-CxIkDgLb.js";import"./ui-D6TTeail.js";import"./IconStar-DuAew7Dt.js";import"./AdvertisementListCardCarousel-B18ZAWCj.js";const L={class:"flex flex-col-reverse xl:flex-row-reverse"},T={class:"@container p-5 xl:w-1/2"},W={class:"mt-2 mb-5"},Y={key:0,class:"grid grid-cols-1 gap-5 @md:grid-cols-2 @3xl:grid-cols-3"},q={class:"relative h-64 w-full flex-col xl:sticky xl:top-0 xl:h-screen xl:w-1/2 xl:flex-1"},H={class:"relative"},kt=P({__name:"AdvertisementMap",props:S(["mapResults","listResults"],{element:{},elementModifiers:{}}),emits:["update:element"],setup(g){const M=z(g,"element"),x=g,s=R().props,r=y(()=>x.listResults),a=k(null),b=y(()=>a.value),m=k({left:0,top:0});let l,c=null;const u=()=>{if(!c||!a.value)return;const t=c.options.get("projection").toGlobalPixels(a.value.coordinates,c.getZoom()),e=c.converter.globalToPage(t);m.value={left:e[0],top:Math.max(e[1]-16,16)}},C=n=>{const[t,e]=n,p=s.filters??{};V.reload({only:["south","west","north","east","mapResults","listResults"],data:{...p,south:t[0],west:t[1],north:e[0],east:e[1]},replace:!0,onFinish:()=>{a.value=null,l.removeAll(),l.add(x.mapResults)}})},h=J.debounce(n=>C(n),500);return $(()=>{D(n);function n(){const t=new ymaps.Map("map",{center:[55.7522,37.6156],zoom:s.mapZoom??12,controls:["zoomControl"]},{suppressMapOpenBlock:!0,yandexMapDisablePoiInteractivity:!0,minZoom:3});if(l=new ymaps.ObjectManager({clusterize:!0,gridSize:64,clusterIconColor:s?.settings?.site_color}),l.objects.options.set({iconColor:s?.settings?.site_color,preset:"islands"}),l.objects.events.add("click",function(e){const p=e.get("objectId"),B=l.objects.getById(p);a.value=B?.properties?.advertisement??null,u()}),t.geoObjects.add(l),c=t,t.events.add("boundschange",function(){u(),h(t.getBounds())}),t.events.add("actiontick",u),t.events.add("click",function(e){e.get("target")===t&&(a.value=null)}),s.south&&s.west&&s.north&&s.east){const e=[[s.south,s.west],[s.north,s.east]];t.setBounds(e),l.add(s.mapResults)}else h(t.getBounds());M.value=t}}),(n,t)=>(i(),d(w,null,[f(G,{title:"Объявления на карте",description:"Смотрите объявления об аренде квартир на карте и оценивайте расположение домов."}),f(E,{"full-width":""},{default:A(()=>[o("div",L,[o("div",T,[t[2]||(t[2]=o("h1",{class:"text-lg font-bold"},"Объявления об аренде",-1)),o("div",W,"Найдено объявлений: "+I(r.value?.meta?.total),1),r.value?(i(),d("div",Y,[(i(!0),d(w,null,F(r.value.data,e=>(i(),_(j,{key:e.id,advertisement:e},null,8,["advertisement"]))),128))])):v("",!0),r.value?(i(),_(Z,{key:1,pagination:r.value,class:"mt-5"},null,8,["pagination"])):v("",!0)]),o("div",q,[t[4]||(t[4]=o("div",{id:"map",class:"h-full w-full"},null,-1)),b.value?(i(),d("div",{key:0,class:"absolute z-[1000] w-[360px] max-w-[calc(100vw-2rem)] -translate-x-1/2 -translate-y-full transform",style:N({left:`${m.value.left}px`,top:`${m.value.top}px`}),onClick:t[1]||(t[1]=O(()=>{},["stop"]))},[o("div",H,[o("button",{type:"button",class:"absolute top-2 right-2 z-10 flex h-8 w-8 items-center justify-center rounded-full bg-black/70 text-xl leading-none text-white",onClick:t[0]||(t[0]=e=>a.value=null)}," × "),f(j,{advertisement:b.value,"hover-scale":!1},null,8,["advertisement"]),t[3]||(t[3]=o("div",{class:"absolute bottom-[-7px] left-1/2 h-4 w-4 -translate-x-1/2 rotate-45 bg-white shadow-sm"},null,-1))])],4)):v("",!0)])])]),_:1})],64))}});
1export{kt as default};
2//# sourceMappingURL=AdvertisementMap-ymqX08OS.js.map

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.