1import{a as p,o as g,b as y,e as d,w as m,d as l,n as a,i as _,t as v,j as I,h as L,D as w,_ as A,F as B}from"./app.f83e9ede.js";/* empty css */import{B as M,I as O,C,H as D}from"./Heading.c10393a5.js";import{T as F,L as T}from"./Layout.9046c08d.js";import{H as $}from"./HtmlHead.1a4c88d5.js";import{I as k}from"./InputInlineSelect.d790412e.js";import{F as z,D as R,P as G}from"./PassengerField.a4847d95.js";import{_ as b}from"./_plugin-vue_export-helper.cdc0426e.js";import"./index.e24f5de0.js";import"./ModalSlideScreen.d2a02e2b.js";import"./moment.9709ab41.js";import"./index.9e37770f.js";const E="_component_z8we5_13",H="_form_z8we5_13",W="_citySelector_z8we5_31",P="_submit_z8we5_43",U="_bottom_z8we5_55",N="_toggleMobileOpen_z8we5_61",V="_arrowUpIcon_z8we5_87",Z="_arrowDown_z8we5_93",j="_total_z8we5_97",Y={component:E,form:H,citySelector:W,submit:P,bottom:U,toggleMobileOpen:N,arrowUpIcon:V,arrowDown:Z,total:j},q={name:"RouteBusStopSelect",components:{InputInlineSelect:k,FromToCityField:z,DepartureReturnDateField:R,PassengerField:G,Button:M,Icon:O,TransitionExpand:F},props:{departureStopsList:{type:Array,default:()=>[]},arrivalStopsList:{type:Array,default:()=>[]},selectedDepartureStopId:{type:Number,default:0},selectedArrivalStopId:{type:Number,default:0}},data(){return{switched:!1,mobile:!1,mobileOpen:!1}},watch:{selectedArrivalStopId(e,t){e!==0&&e!==t&&(this.mobileOpen=!0)}},computed:{selectedDepartureStop(){return(this.switched?this.arrivalStopsList:this.departureStopsList).find(t=>(t==null?void 0:t.id)===this.selectedDepartureStopId)||null},selectedArrivalStop(){return(this.switched?this.departureStopsList:this.arrivalStopsList).find(t=>(t==null?void 0:t.id)===this.selectedArrivalStopId)||null}},emits:["on-departure-stop-change","on-arrival-stop-change","on-find-ticket"],methods:{onFromToCityChange(e,t){if(!!e)switch(t){case"departureStop":this.$emit("on-departure-stop-change",e.id);break;case"arrivalStop":this.$emit("on-arrival-stop-change",e.id);break}},onSubmit(e){var t;(t=this.$emit)==null||t.call(this,"on-find-ticket",e)},toggleMobileOpen(){this.mobileOpen=!this.mobileOpen},isMobile(){this.mobile=window.innerWidth<1e3}}
1,mounted(){this.isMobile(),window.addEventListener("resize",this.isMobile,!1)},unmounted(){window.removeEventListener("resize",this.isMobile,!1)}};function J(e,t,s,r,o,i){const n=p("FromToCityField"),u=p("Button"),h=p("TransitionExpand"),S=p("Icon");return g(),y("div",{class:a(e.$style.component)},[d(h,{open:!o.mobile||o.mobileOpen,duration:300},{default:m(()=>[l("form",{onSubmit:t[0]||(t[0]=I((...f)=>i.onSubmit&&i.onSubmit(...f),["prevent"])),class:a(e.$style.form)},[l("div",{class:a(e.$style.citySelector)},[d(n,{departureStopSuggestions:s.departureStopsList,arrivalStopSuggestions:s.arrivalStopsList,departureStop:i.selectedDepartureStop,arrivalStop:i.selectedArrivalStop,onOnChange:i.onFromToCityChange,switchVisible:!1},null,8,["departureStopSuggestions","arrivalStopSuggestions","departureStop","arrivalStop","onOnChange"])],2),l("div",{class:a(e.$style.submit)},[d(u,{type:"submit",primary:"",stretch:""},{default:m(()=>[_(v(e.$t("Buy ticket")),1)]),_:1})],2)],34)]),_:1},8,["open"]),o.mobile?(g(),y("div",{key:0,ref:"bottom",class:a(e.$style.bottom)},[l("div",{class:a(e.$style.total)},[l("div",{class:a(e.$style.label)},[l("button",{type:"button",class:a([e.$style.toggleMobileOpen,e.$style.mobile]),onClick:t[1]||(t[1]=(...f)=>i.toggleMobileOpen&&i.toggleMobileOpen(...f))},[l("div",{class:a([e.$style.arrowUpIcon,{[e.$style.arrowDown]:o.mobile&&o.mobileOpen}])},[d(S,{name:"arrowup",color:"#012F8A"})],2),_(" "+v(e.$t("Route")),1)],2)],2)],2)],2)):L("",!0)],2)}const K={$style:Y},Q=b(q,[["render",J],["__cssModules",K]]),X="/build/assets/marker.0974a6be.svg",x="/build/assets/activeMarker.f623da49.
1svg",ee="_component_1w9f8_13",te="_container_1w9f8_26",se="_containerWrapper_1w9f8_33",oe="_whiteBox_1w9f8_41",ie="_gridContent_1w9f8_60",ne="_field_1w9f8_77",re="_country_1w9f8_81",ae="_containerWrap_1w9f8_33",le="_map_1w9f8_96",ce={component:ee,container:te,containerWrapper:se,whiteBox:oe,gridContent:ie,field:ne,country:re,containerWrap:ae,map:le};let c;const pe={name:"RouteMapPage",components:{Layout:T,Container:C,HtmlHead:$,Heading:D,RouteBusStopSelect:Q},props:{departureStops:{type:Object,default:null},arrivalStops:{type:Object,default:null}},beforeCreate(){w.reload({only:["departureStops","arrivalStops"]})},data(){return{map:null,markersGroup:null,markers:[],routeLine:null,icons:{defaultIcon:null,activeIcon:null},selectedA:null,selectedB:null,origins:[],destinations:[],selectedArrivalStop:0,selectedDepartureStop:0}},async mounted(){typeof window<"u"&&(c=await A(()=>import("./leaflet-src.bb509f32.js").then(e=>e.l),["assets/leaflet-src.bb509f32.js","assets/app.f83e9ede.js","assets/app.1f0e3a8b.css"]),this.initializeIcons(),this.initializeMap(),this.setupMarkers())},methods:{initializeIcons(){this.icons={defaultIcon:c.icon({iconUrl:X,iconSize:[27,38],iconAnchor:[13,38],popupAnchor:[-3,-36]}),activeIcon:c.icon({iconUrl:x,iconSize:[27,38],iconAnchor:[13,38],popupAnchor:[-3,-36]})}},initializeMap(){this.map=c.map("map").setView([52.505,23.09],5),this.map.scrollWheelZoom.disable(),c.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",{maxZoom:18,attribution:"\xA9 OpenStreetMap"}).addTo(this.map),this.markersGroup=c.featureGroup().addTo(this.map)},setupMarkers(){this.markersGroup&&this.markersGroup.clearLayers(),this.origins=this.countryFilter(this.departureStops),this.origins.forEach(e=>{if(!e||!e.location)return;const{location:{latitude:t,longitude:s},id:r,title:o}=e;if(t!=null&&s!=null){const n=c.marker([t,s],{icon:this.icons.defaultIcon,title:o}).on("click",()=>this.onMarkerClick(n)).on("mouseover",()=>this.onMarkerMouseOver(n)).on("mouseout",()=>this.onMarkerMouseOut(n));n.id=r;var i=c.point(0,-30);n.bindTooltip(o,{direction:"top",permanent:!0,offset:i}),this.markersGroup.addLayer(n),this.markers.push(n),n.getTooltip().setOpacity(0)}}),this.markers.length&&this.map.fitBounds(this.markersGroup.getBounds(),{maxZoom:5})},onMarkerMouseOver(e){e.setIcon(this.icons.activeIcon),e.getTooltip().setOpacity(1)},onMarkerMouseOut(e){this.isSelected(e)||(e.setIcon(this.icons.defaultIcon),e.getTooltip().setOpacity(0))},isSelected(e){return this.selectedA&&this.selectedA.id===e.id||this.selectedB&&this.selectedB.id===e.id},onMarkerClick(e){e.getTooltip().setOpacity(1),this.selectedA?this.selectedA.id===e.id?(this.resetFirst(),this.selectedDepartureStop=0,this.selectedArrivalStop=0):!this.selectedB||this.selectedB.id!==e.id?(this.selectSecond(e),this.selectedArrivalStop=e.id):this.selectedB.id===e.id&&(this.selectedArrivalStop=0,this.resetSecond()):(this.selectFirst(e),this.selectedDepartureStop=e.id)},selectFirst(e){this.selectedA=e,e.setIcon(this.icons.activeIcon),e.getTooltip().setOpacity(1),this.reloadRelated(e.id)},selectSecond(e){this.selectedB&&(this.selectedB.setIcon(this.icons.defaultIcon),this.selectedB.getTooltip().setOpacity(0)),this.selectedB=e,e.setIcon(this.icons.activeIcon),e.getTooltip().setOpacity(1),this.drawLine()},resetFirst(){this.resetSecond(),this.selectedA&&(this.selectedA.setIcon(this.icons.defaultIcon),this.selectedA.getTooltip().setOpacity(0),this.selectedA=null),this.restoreAllMarkers()},resetSecond(){this.removeLine(),this.selectedB&&(this.selectedB.setIcon(this.icons.defaultIcon),this.selectedB.getTooltip().setOpacity(0),this.selectedB=null)},restoreAllMarkers(){this.markers.forEach(e=>{this.markersGroup.hasLayer(e)||this.markersGroup.addLayer(e),e.setIcon(this.icons.defaultIcon),e.getTooltip().setOpacity(0)}),this.map.fitBounds(this.markersGroup.getBounds(),{maxZoom:5})},drawLine(){if(this.removeLine(),!(this.selectedA&&this.selectedB))return;const e=[this.selectedA.getLatLng(),this.selectedB.getLatLng()];this.routeLine=c.polyline(e,{color:"#0052a3"}).addTo(this.map),this.map.fitBounds(this.routeLine.getBounds(),{maxZoom:5})},removeLine(){this.routeLine&&(this.map.removeLayer(this.routeLine),this.routeLine=null)},reloadRelated(e){w.post(this.$page.props.fullUrl,{origin:e},{preserveState:!0,only:["arrivalStops"],onSuccess:()=>{this.destinations=this.countryFilter(this.arrivalStops);const t=new Set((this.destinations||[]).map(s=>s.id));
1t.add(e),this.markers.forEach(s=>{t.has(s.id)?this.markersGroup.addLayer(s):this.markersGroup.removeLayer(s)})}})},countryFilter(e){return e.filter(t=>t.state!=="RU"&&t.state!=="BY")},onDepartureStopChange(e){var s;this.selectedDepartureStop=e;let t=(s=this.markers.find(r=>(r==null?void 0:r.id)==e))!=null?s:0;this.resetFirst(),this.selectFirst(t),this.resetSecond(),this.selectedArrivalStop=0},onArrivalStopChange(e){var s;this.selectedArrivalStop=e;let t=(s=this.markers.find(r=>(r==null?void 0:r.id)==e))!=null?s:0;this.selectSecond(t)},onFindTicket(){var r,o,i,n,u,h;const e=new Date;if(!((r=this.selectedB)!=null&&r.id)||!((o=this.selectedA)!=null&&o.id))return;const t=[e.getFullYear(),String(e.getMonth()+1).padStart(2,"0"),String(e.getDate()).padStart(2,"0")].join("-"),s=`${(n=(i=this.$page.props)==null?void 0:i.currentSite)==null?void 0:n.url}/tickets/search?origin=${this.selectedA.id}&destination=${this.selectedB.id}&departure=${t}¤cy=${(h=(u=this.$page.props)==null?void 0:u.preferredCurrency)==null?void 0:h.id}`;window.location.href=s}}};function de(e,t,s,r,o,i){const n=p("HtmlHead"),u=p("RouteBusStopSelect"),h=p("Container"),S=p("Layout");return g(),y(B,null,[d(n,{title:e.$t("Route map"),description:e.$t("Find routes and plan trips with route map")},null,8,["title","description"]),d(S,null,{default:m(()=>[l("div",{class:a(e.$style.component)},[l("div",{class:a(e.$style.containerWrapper)},[d(h,{class:a(e.$style.container)},{default:m(()=>[l("div",{class:a(e.$style.whiteBox)},[d(u,{onOnDepartureStopChange:i.onDepartureStopChange,onOnArrivalStopChange:i.onArrivalStopChange,onOnFindTicket:i.onFindTicket,departureStopsList:o.origins,arrivalStopsList:o.destinations,selectedDepartureStopId:o.selectedDepartureStop,selectedArrivalStopId:o.selectedArrivalStop},null,8,["onOnDepartureStopChange","onOnArrivalStopChange","onOnFindTicket","departureStopsList","arrivalStopsList","selectedDepartureStopId","selectedArrivalStopId"])],2)]),_:1},8,["class"])],2),l("div",{id:"map",class:a(e.$style.map)},null,2)],2)]),_:1})],64)}const ue={$style:ce},Ae=b(pe,[["render",de],["__cssModules",ue]]);export{Ae as default};
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.