PageSourceSearch

https://travelscanner.ai/assets/DestinationLanding-DGmIlzCh.js

js travelscanner.ai collected 2026-10-05 14:06:38 UTC 14,407 bytes, 7 lines download raw bytes

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MapAside-7UuH3ite.js","assets/main-kBzK4eIG.js","assets/vendor-primevue-CeEACqX_.js","assets/vendor-primevue-z0I5QTct.css","assets/vendor-fontawesome-CHTXNQM2.js","assets/vendor-luxon-D-syak89.js","assets/vendor-i18n-G4dYfk6F.js","assets/vendor-pako-DwGzBETv.js","assets/vendor-posthog-B2YXpdD_.js","assets/vendor-query-B7KhvNMU.js","assets/main-x_rp7B12.css","assets/vendor-mapbox-BajM9YZy.js","assets/vendor-mapbox-Bjlwf8hR.css","assets/bunny-BFgfExvG.js","assets/index-QyT8flm0.js","assets/NewHotelCard-DiSQ_Wka.js","assets/ImageWithFallback-raoQ1sx0.js","assets/ImageWithFallback-CllQnTmb.css","assets/rateLabels-BuXyiow2.js","assets/HotelCardImage-DEtelr5M.js","assets/NoHotelImage-Bo4zjMQU.js","assets/HotelCardImage-2hfM1_bi.css","assets/AlternativeRoomDates-Bs7qvvqB.js","assets/AlternativeRoomDates-kH8Se71-.css","assets/PerksSection-C3ODrFYJ.js","assets/PerksSection-km3LqWze.css","assets/LoyaltyLabelBanner-b4_DrhEs.js","assets/LoyaltyLabelBanner-4gHgBHln.css","assets/chevron-right-6aEiQEcc.js","assets/utensils-BqRf34se.js","assets/NewHotelCard-BKKKW4I9.css","assets/MapAside-C2Ub915m.css"])))=>i.map(i=>d[i]);
2import{c as Ce,h as c,ai as De,c2 as Ie,ar as Le,v as Q,bk as w,aK as de,af as G,c3 as Te,ad as Ee,ab as Pe,t as W,_ as Re,e as ue,T as he,a2 as Ae}from"./main-kBzK4eIG.js";import{u as ie}from"./index-_Wgz898U.js";import{C as ne,n as Me}from"./utils-lH9_IML1.js";import{a as Ne,S as Oe,H as we}from"./HighlightsSection-9wAABklZ.js";import"./vendor-posthog-B2YXpdD_.js";import{d as Y,c as t,r as M,N as P,G as X,u as e,z as p,E as L,O as T,C as g,A as o,s as Fe,w as F,b as pe,o as _e,f as k,S as $e,F as j,V as J,Z as ae,aj as Z,a7 as Ue}from"./vendor-primevue-CeEACqX_.js";import{H as xe}from"./HeroSearch-BgEuZTs4.js";import{d as Be}from"./defaultPlaceBg-44PyOaOo.js";import{d as ee,r as me,a as ve,f as Ve,D as Ge,b as je}from"./destinationCollectionSearch-1S47UWhg.js";import{u as z}from"./vendor-i18n-G4dYfk6F.js";import{H as Qe,d as Ye,c as ze,S as Ke,g as qe,u as Ze,a as le,N as re}from"./NewHotelCard-DiSQ_Wka.js";import{H as ge,b as Je,g as We}from"./flightsDestinationPrefill-BWFpsOmB.js";import{u as Xe}from"./useNearbyHotels-CVxMsK2W.js";import{B as fe}from"./PlacesCarousel.vue_vue_type_style_index_0_scoped_9ff658d5_lang-qHcabAzd.js";import{P as et}from"./plane-DcqTp_Rg.js";import{u as tt}from"./useCollectionRates-_feoNmvb.js";import{s as N}from"./socket-D7UBviuq.js";import"./vendor-fontawesome-CHTXNQM2.js";import"./vendor-luxon-D-syak89.js";import"./vendor-pako-DwGzBETv.js";import"./vendor-query-B7KhvNMU.js";import"./NoHotelImage-Bo4zjMQU.js";import"./bunny-BFgfExvG.js";import"./index-CNkSL6Qc.js";import"./PlacesCarousel-DCTVTMtK.js";import"./ImageWithFallback-raoQ1sx0.js";import"./rateLabels-BuXyiow2.js";import"./HotelCardImage-DEtelr5M.js";import"./AlternativeRoomDates-Bs7qvvqB.js";import"./PerksSection-C3ODrFYJ.js";import"./LoyaltyLabelBanner-b4_DrhEs.js";import"./chevron-right-6aEiQEcc.js";import"./utensils-BqRf34se.js";import"./flightsNearbyAirport-C-yGIJCN.js";import"./vendor-socket-YTJ-CyAn.js";/**
3 * @license lucide-vue-next v0.453.0 - ISC
4 *
5 * This source code is licensed under the ISC license.
6 * See the LICENSE file in the root directory of this source tree.
7 */const st=Ce("CalendarDaysIcon",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}],["path",{d:"M8 14h.01",key:"6423bh"}],["path",{d:"M12 14h.01",key:"1etili"}],["path",{d:"M16 14h.01",key:"1gbofw"}],["path",{d:"M8 18h.01",key:"lrp35t"}],["path",{d:"M12 18h.01",key:"mhygvu"}],["path",{d:"M16 18h.01",key:"kzsmim"}]]),ot={key:0,class:"destination-landing-hero__price"},it={class:"destination-landing-hero__search"},nt=Y({__name:"DestinationLandingHero",props:{destination:{},fromPrice:{}},setup(b,{expose:_}){const a=b,{t:u}=z(),d=t(()=>ee(a.destination)),r=t(()=>me(a.destination,c.language,u("collections.destinations.findHotelsIn",{destination:d.value}))),H=t(()=>a.fromPrice?u("collections.destinations.fromPricePerNight",{price:De(a.fromPrice,{currency:c.currency,locale:c.locale})}):""),m=t(()=>a.destination.imageUrl||Be),l=M(null),v=M(null);return _({openDates:()=>{v.value?.$el?.scrollIntoView({behavior:"smooth",block:"start"}),setTimeout(()=>l.value?.openDates?.(),700)}}),Ie(ve(a.destination)),(D,O)=>(o(),P(Ne,{ref_key:"heroRef",ref:v,class:"destination-landing-hero","data-testid":"destination-landing-hero",title:r.value.title,subtitle:r.value.description||void 0,image:m.value,"image-alt":e(u)("hero.imageAlt")},{default:X(()=>[H.value?(o(),p("p",ot,L(H.value),1)):T("",!0),g("div",it,[e(c).isMobile?(o(),P(Le,{key:0,ref_key:"searchRef",ref:l,class:"search",isLabel:!0,source:"home"},null,512)):(o(),P(e(xe),{key:1,class:"search",source:"home",isLabel:!0,roomSearch:!1,inl
7ine:!1,mini:!1}))])]),_:1},8,["title","subtitle","image","image-alt"]))}}),at=Q(nt,[["__scopeId","data-v-2df0dcec"],["__file","DestinationLandingHero.vue"]]),ye=20,lt=8e3,rt={topCount:ye,consecutiveBatches:3},ct=60,dt=[...Qe].join(","),ce=b=>{const _=Ye(b);for(const a of _)a.score===void 0&&(a.score=ze(a,Ke,1));return _.sort(qe(null,Te.RANKING_DESC,void 0))};function ut(){const{nearbyHotels:b,isLoading:_,error:a,fetchNearbyHotels:u}=Xe(),d=Fe([]),r=M(!1),H=t(()=>!r.value),m=t(()=>!!a.value);let l=null,v=le();const C=()=>{l&&clearTimeout(l),l=null,d.value=ce(b.value),r.value=!0};F(b,f=>{r.value||(d.value=ce(f),!(d.value.length<ct)&&Ze(v,d.value,rt)&&C())}),F(_,f=>{f||C()});const D=f=>{f&&(d.value=[],r.value=!1,v=le(),l&&clearTimeout(l),l=setTimeout(C,lt),u({placeId:f,...w,occupancies:de(G.occupancies),currency:c.currency,guestNationality:c.guestNationality,hotelTypes:dt}))};return pe(()=>{l&&clearTimeout(l),l=null}),{displayedHotels:t(()=>d.value.slice(0,ye)),isLoading:H,error:m,fetchDestinationHotels:D}}const ht={key:0,class:"destination-hotels","data-testid":"destination-hotels-section"},pt={key:0,class:"destination-hotels__header"},_t={class:"destination-hotels__title"},mt={class:"destination-hotels__description"},vt={class:"destination-hotels__dates"},gt={class:"destination-hotels__dates-line"},ft={key:1,class:"destination-hotels__grid"},yt={class:"destination-hotels__list"},bt={class:"destination-hotels__map"},St={key:2,class:"destination-hotels__grid"},kt={key:1,class:"destination-hotels__list"},Ht={class:"destination-hotels__map"},Ct=Y({__name:"DestinationHotelsSection",props:{destination:{}},emits:["change-dates","from-price"],setup(b,{emit:_}){const a=Ue(()=>Re(()=>import("./MapAside-7UuH3ite.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]))),u=b,d=_,{t:r}=z(),H=W(),{displayedHotels:m,isLoading:l,error:v,fetchDestinationHotels:C}=ut(),D=t(()=>ee(u.destination)),O=t(()=>{const s={day:"numeric",month:"short"},i=c.locale||"en-US";return[w.checkin,w.checkout].map(n=>Ee(n,i,s)).join(" - ")}),f=t(()=>Object.fromEntries(Object.entries(ve(u.destination)).map(([s,i])=>[s,String(i??"")]))),K=t(()=>Pe(c.currency||"USD")),$=t(()=>{const s=m.value.find(i=>i.latitude&&i.longitude);return s?{location:{lat:s.latitude,lng:s.longitude}}:{}}),I=M(null),q=s=>{I.value=s,document.getElementById(`listcard-${s.id}`)?.scrollIntoView({behavior:"smooth",block:"center"})},E=t(()=>({source:"hotels",occupancies:G.occupancies,...w,searchQuery:f.value,isGuestUser:c.isGuestUser})),S=t(()=>({hotels:m.value,geometry:$.value,currencySymbol:K.value,...w,occupancies:de(G.occupancies),rooms:String(G.rooms),hoveredHotel:I.value??void 0,enableClustering:!0,disableAreaSearch:!0,cooperativeGestures:!0,isGuestUser:c.isGuestUser})),U=t(()=>l.value||!v.value&&m.value.length>0),x=()=>{H.push({path:"/hotels",query:f.value})};return F(m,s=>{const i=s.map(n=>Number(n.price)).filter(n=>Number.isFinite(n)&&n>0);d("from-price",i.length?Math.min(...i):null)}),_e(()=>{C(u.destination.placeId??"")}),(s,i)=>U.value?(o(),p("section",ht,[e(c).isMobile?T("",!0):(o(),p("div",pt,[g("h2",_t,L(e(r)("collections.destinations.bestHotelsIn",{destination:D.value})),1),g("p",mt,L(e(r)("collections.destinations.bestHotelsDescription",{destination:D.value})),1)])),g("div",vt,[g("span",gt,[k(e(st),{size:18}),$e(" "+L(e(r)("collections.destinations.bestPricesFor",{dates:O.value})),1)]),g("button",{type:"button",class:"destination-hotels__dates-button","data-testid":"destination-hotels-change-dates",onClick:i[0]||(i[0]=n=>d("change-dates"))},L(e(r)("collections.destinations.changeDates")),1)]),e(l)?(o(),p("div",ft,[g("div",yt,[(o(),p(j,null,J(3,n=>k(e(ae),{key:n,height:"220px","border-radius":"16px"})),64))]),g("div",bt,[k(e(ae),{height:"100%","border-radius":"16px"})])])):(o(),p("div",St,[e(c).isMobile?(o(),P(e(fe),{key:0,title:e(r)("collections.destinations.bestHotelsIn",{destination:D.value}),items:e(m),responsiveOptions:e(ge),defaultVisible:1.2,defaultScroll:1},{item:X(({data:n})=>[k(re,Z(E.value,{hotel:n,"layout-variant":"grid"}),null,16,["hotel"])]),_:1},8,["title","items","responsiveOptions"])):(o(),p("div",kt,[(o(!0),p(j,null,J(e(m),n=>(o(),P(re,Z({ref_for:!0},E.value,{key:n.id,hotel:n,"layout-variant":"list",selected:n.id===I.value?.id,"onHover:hotel":i[1]||(i[1]=R=>I.value=R),"onUnhover:hotel":i[2]||(i[2]=R=>I.value=null)}
7),null,16,["hotel","selected"]))),128))])),g("div",Ht,[k(e(a),Z(S.value,{"onClick:hotel":q,"onHover:hotel":i[3]||(i[3]=n=>I.value=n),"onUnhover:hotel":i[4]||(i[4]=n=>I.value=null)}),null,16)])])),g("button",{type:"button",class:"destination-hotels__see-all","data-testid":"destination-hotels-see-all",onClick:x},L(e(r)("collections.destinations.seeAllHotels",{destination:D.value})),1)])):T("",!0)}}),Dt=Q(Ct,[["__scopeId","data-v-88c16981"],["__file","DestinationHotelsSection.vue"]]),It={key:0,class:"destination-flights","data-testid":"destination-flights-card"},Lt={class:"destination-flights__line"},Tt={class:"destination-flights__title"},Et=Y({__name:"DestinationFlightsCard",props:{destination:{}},setup(b){const _=b,{t:a}=z(),u=W(),d=he(),r=t(()=>ee(_.destination)),H=t(()=>ue.project.settings?.enableFlights===!0&&!!_.destination.iata),m=t(()=>a("collections.destinations.flightsTo",{destination:r.value})),l=async()=>{const v=await Je(_.destination.iata);v&&await We(u,d,v)};return(v,C)=>H.value?(o(),p("section",It,[g("span",Lt,[k(e(et),{size:20}),g("span",Tt,L(m.value),1)]),g("button",{type:"button",class:"destination-flights__button","data-testid":"destination-flights-search",onClick:l},L(e(a)("collections.destinations.searchFlights")),1)])):T("",!0)}}),Pt=Q(Et,[["__scopeId","data-v-d498eea0"],["__file","DestinationFlightsCard.vue"]]),Rt={key:0,class:"destination-landing","data-testid":"destination-landing"},At={key:0,class:"destination-landing__title","data-testid":"destination-landing-collection-title"},Mt={key:2,class:"destination-landing__grid destination-landing__section"},Nt={key:2,class:"destination-landing__section destination-landing__related","data-testid":"destination-landing-related"},V="destination-landing",Ot=Y({__name:"DestinationLanding",setup(b){const{t:_}=z(),a=he(),u=W(),d=t(()=>a.params.slug),{collections:r,fetchPublishedCollections:H}=ie("destination"),{isLiveRatesEnabled:m,isStaticRatesEnabled:l,mergeRateResponse:v,clearRates:C,fetchRatesForHotelIds:D,resolveStaticPricesForCollection:O,getItemPrice:f,getPropertyHotelIdsFromCollection:K,isPreviewItemPriceLoading:$,markLiveRatesFetchComplete:I}=tt(),{fetchSingleCollection:q}=ie(),E=t(()=>Ve(r.value,d.value)),S=t(()=>E.value?.item??null),U=M(null),x=M(null),s=M(null),i=t(()=>ue.project.settings?.stays?.showHighlights!==!1),n=t(()=>{if(!E.value)return[];const h=(E.value.collection.items??[]).filter(A=>A.placeId!==E.value?.item.placeId);return h.length>1?[{...E.value.collection,layout:"carousel",items:h}]:[]}),R=t(()=>S.value?me(S.value,c.language):null),be=t(()=>`${window.location.origin}/destinations/${S.value?.slug||d.value}`);Ae(()=>({...R.value?.title?{title:R.value.title}:{},link:[{rel:"canonical",href:be.value}],meta:R.value?.description?[{name:"description",content:R.value.description}]:[]}));const te=async()=>{s.value&&(m.value?(C(),D(V,K(s.value))):l.value&&await O(s.value))},se=h=>{h.requestId===V&&v(h)},B=h=>{h.requestId===V&&I(V)},Se=()=>U.value?.openDates?.(),oe=h=>Me(u,h),ke=h=>u.push(je(h));return F(S,async h=>{const A=h?.hotelCollectionSlug||h?.hotelCollectionId;if(!A){s.value=null;return}s.value=await q(A),await te()},{immediate:!0}),F(()=>c.currency||c.guestNationality,()=>te()),_e(async()=>{N.on("hotels:fetch-rates:rate",se),N.on("hotels:fetch-rates:complete",B),N.on("hotels:fetch-rates:error",B),await H().catch(()=>{}),S.value||u.replace("/")}),pe(()=>{N.off("hotels:fetch-rates:rate",se),N.off("hotels:fetch-rates:complete",B),N.off("hotels:fetch-rates:error",B)}),(h,A)=>S.value?(o(),p("div",Rt,[k(at,{ref_key:"heroRef",ref:U,class:"destination-landing__hero",destination:S.value,"from-price":x.value},null,8,["destination","from-price"]),s.value?(o(),p(j,{key:0},[e(c).isMobile?T("",!0):(o(),p("h2",At,L(s.value.title),1)),e(c).isMobile?(o(),P(e(fe),{key:1,class:"destination-landing__section",title:s.value.title,items:s.value.items??[],responsiveOptions:e(ge),defaultVisible:1.2,defaultScroll:1},{item:X(({data:y})=>[k(ne,{hotel:y,price:e(f)(y),priceLoading:e($)(y),onClick:He=>oe(y)},null,8,["hotel","price","priceLoading","onClick"])]),_:1},8,["title","items","responsiveOptions"])):(o(),p("div",Mt,[(o(!0),p(j,null,J(s.value.items,y=>(o(),P(ne,{key:y.item,hotel:y,price:e(f)(y),priceLoading:e($)(y),onClick:He=>oe(y)},null,8,["hotel","price","priceLoading","onClick"]))),128))]))],64)):T("",!0),i.value?(o(),P(we,{key:1,class:"destination-landing__section","test-id":"destination-landing-highlights","translation-base-key":"home.highlights","highlight-items":e(Oe)},null,8,["highlight-items"])):T("",!0),k(Dt,{class:"destination-landing__section",destination:S.value,onChangeDates:Se,onFromPrice:A[0]||(A[0]=y=>x.value=y)},null,8,["destination"]),k(Pt,{class:"destination-landing__section",destination:S.value},null,8,["destination"]),n.value.length?(o(),p("section",Nt,[k(Ge,{collections:n.value,product:"stays",title:e(_)("collections.destinations.needIdeas"),onSelect:ke},null,8,["collections","title"])])):T("",!0)])):T("",!0)}}),gs=Q(Ot,[["__scopeId","data-v-a19af98c"],["__file","DestinationLanding.vue"]]);export{gs 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.