PageSourceSearch

https://www.cruise.co.uk/theon/_nuxt/CUmguT5y.js

js cruise.co.uk collected 2026-09-24 22:14:35 UTC 11,017 bytes, 1 lines download raw bytes

1import{i as z,d as se,Q as G,o,a as c,z as S,j as T,F as x,s as F,n as q,b as p,e as O,f as P,_ as H,B as ne,l as V,a0 as re,t as I,$ as b,q as k}from"./wasFCxmo.js";import{_ as ie}from"./CjLZ0jia.js";import oe from"./wd-7CHhO.js";const ce=se({name:"AlternativePackageCard",components:{Price:G},props:{loading:{type:Boolean,required:!1,default:!1},title:{type:String,required:!1,default:""},href:{type:String,required:!0},cabins:{type:Array,required:!1,default:()=>[]},index:{type:Number,required:!1,default:0}}}),le=["textContent"],ue={class:"flex justify-between items-center text-md"},de={key:2,class:"text-md font-theme-bold text-theme-grey-1"},pe={key:3,class:"text-md font-theme-bold text-theme-grey-1"},me={class:"text-center mt-4"};function fe(l,u,_,m,w,C){const y=G,f=H;return o(),c(x,null,[l.title?(o(),c("p",{key:0,class:"text-md font-theme-bold text-theme-primary-dark pb-4",textContent:S(l.title)},null,8,le)):T("",!0),l.cabins.length&&l.cabins.length>0?(o(!0),c(x,{key:1},F(l.cabins,(d,h)=>(o(),c("div",{key:`cabinGrade${h}`,class:q([{"bg-theme-grey-5":h%2===0},"p-1"])},[p("p",ue,[p("span",null,[O(S(d.cabinSubtype),1),d.cabinGrade?(o(),c(x,{key:0},[O(" - "+S(d.cabinGrade),1)],64)):T("",!0)]),P(y,{class:"font-theme-bold text-theme-coral-red",currency:d.currency,decimal:d.decimal,"meta-abbr":d.metaAbbr,value:d.value},null,8,["currency","decimal","meta-abbr","value"])])],2))),128)):l.loading&&!l.cabins.length?(o(),c("p",de," Loading prices... ")):(o(),c("p",pe," Please enquire for prices ")),p("div",me,[P(f,{label:"View Sailing",modifiers:["tertiary"],"btn-type":"link",href:l.href},null,8,["href"])])],64)}const ge=z(ce,[["render",fe]]),ye={components:{Accordion:oe,Price:G,AlternativePackageCard:ge},props:{contentFields:{type:Object,default:()=>({})}},setup(l){const u=b(!1),_=b([]),m=b([]),w=b([]),C=b(""),y=b([]),f=b([]),d=b([]),h=b([]),$=b(""),D=b({}),N={inside:"Inside",outside:"Outside",balcony:"Balcony",suite:"Suite"};re(async()=>{try{if(!l.contentFields.packageGroupUUID)throw new Error("Package group UUID missing from contentful");u.value=!0;const e=await I().$fetchGateway(`/dora/group/${l.contentFields.packageGroupUUID}?attr=name,destination_uuid,package_uuids,packages`);if(D.value=e?.data[0],m.value=Array.isArray(D.value.package_uuids)?D.value.package_uuids.join(","):"",!m.value)return;await K()}catch{console.error("Package group data missing")}finally{u.value=!1}});const A=k(()=>l.contentFields.style==="Dropdown"),U=k(()=>l.contentFields.fallbackText),L=k(()=>l.contentFields.submitButtonLabel),v=k(()=>_.value.map(e=>{const n=e.sailings[0]||"",a=w.value.find(g=>g.UUID===n),r=y.value.find(g=>g.UUID===a.ship_uuid),t=f.value.find(g=>g.UUID===r.cruise_line_uuid),i=d.value[e.UUID]||[],s=i.reduce((g,M)=>g.find(ae=>ae.cabin_type===M.cabin_type)?g:g.concat([M]),[]);return{...e,packageSailingUUID:n,packageSailing:a,ship:r,cruiseline:t,uniqueCabinTypes:s,sailingCabins:i}})),B=k(()=>!f.value||!f.value.length?[]:f.value.map(e=>{const n=y.value.filter(a=>a.cruise_line_uuid===e.UUID).sort((a,r)=>a.summary.localeCompare(r.summary)).map(a=>{const r=v.value.filter(t=>t.ship.UUID===a.UUID).sort((t,i)=>new Date(t.start)-new Date(i.start)).map(t=>{const i=d.value[t.UUID]||[];return{title:`${j(t.start+" 00:00:00")}`,packageType:t.type,packageSailingUUID:t.packageSailingUUID,subTitle:t.title,content:{title:t.title,truncatedTitle:t.title.length>70?t.title.substring(0,70)+"...":t.title,date:`${j(t.start+" 00:00:00")}`,href:`/package/${t.UUID}/`,prices:i.filter(s=>s.display).map(s=>({type:s.cabin_type,cabinSubtype:s.cabin_subtype,cabinGrade:s.cabin_grade,meta:"pp",metaAbbr:"",currency:"£",value:(s.cost/100).toFixed(0).toLocaleString(),costBased:s.cost/100,cost:s.cost})).sort((s,g)=>s.value-g.value)||[]}}});return{ship:a.summary,shipUUID:a.UUID,packages:r||[]}});return{cruiseLine:e.summary,cruiseLineUUID:e.UUID,ships:n}}).filter(e=>e.ships.length&&e.ships[0].packages.length)),J=k(()=>v.value.map(e=>({UUID:e.UUID,start:e.start})).sort((e,n)=>new Date(e.start)-new Date(n.start))),E=k(()=>h.value.map(e=>{const n=e.sailings[0]||"",a=w.value.find(s=>s.UUID===n),r=y.value.find(s=>
1s.UUID===a.ship_uuid),t=f.value.find(s=>s.UUID===r.cruise_line_uuid),i=d.value[e.UUID]||[];return{...e,packageSailingUUID:n,packageSailing:a,ship:r,cruiseline:t,sailingCabins:i}})),Q=k(()=>!f.value||!f.value.length?[]:f.value.map(e=>{const n=y.value.filter(a=>a.cruise_line_uuid===e.UUID).sort((a,r)=>a.summary.localeCompare(r.summary)).map(a=>{const r=E.value.filter(t=>t.ship.UUID===a.UUID).sort((t,i)=>new Date(t.start)-new Date(i.start)).map(t=>{const i=d.value[t.UUID]||[];return{title:`${j(t.start+" 00:00:00")}`,packageType:t.type,packageSailingUUID:t.packageSailingUUID,subTitle:t.title,content:{title:t.title,truncatedTitle:t.title.length>70?t.title.substring(0,70)+"...":t.title,date:`${j(t.start+" 00:00:00")}`,duration:t.duration,href:`/package/${t.UUID}/`,prices:i.filter(s=>s.display).map(s=>({type:s.cabin_type,cabinSubtype:s.cabin_subtype,cabinGrade:s.cabin_grade,meta:"pp",metaAbbr:"",currency:"£",value:(s.cost/100).toFixed(0).toLocaleString(),costBased:s.cost/100,cost:s.cost})).sort((s,g)=>s.value-g.value)||[]}}});return{ship:a.summary,shipUUID:a.UUID,packages:r||[]}});return{cruiseLine:e.summary,cruiseLineUUID:e.UUID,ships:n}}).filter(e=>e.ships.length&&e.ships[0].packages.length)),Y=e=>{const n=[],a=["inside","balcony","outside","suite"];for(const r of a){const t=e.find(i=>i.type===r);if(t&&n.push(t),n.length>=2)break}return n};async function K(){await W(),await R(),await X(),await Z(),await ee(),await te()}async function R(){try{const e=await I().$fetchGateway(`/dora/package?sameName=${l.contentFields.packageUUID}&attr=type,title,description,start,duration,sailings`);return h.value=e.data,$.value=Array.isArray(h.value)?h.value.map(n=>n.sailings.map(a=>a).join(",")||"").join(","):[],e.data}catch(e){throw console.error("Failed to fetching alternative packages for package",e),e}}async function W(){try{const e=await I().$fetchGateway(`/dora/package/${m.value}?attr=type,cloudinary_id,type,title,description,start,duration,sailings`);return _.value=e.data,C.value=Array.isArray(_.value)?_.value.map(n=>n.sailings.map(a=>a).join(",")||"").join(","):[],e.data}catch(e){throw console.error("Failed to fetch packages",e),e}}async function X(){try{const e=[C.value,$.value].filter(Boolean).join(",");if(!e)return!1;const a=[...new Set(e.split(","))].join(","),r=await I().$fetchGateway(`/sailings/sailing/${a}?attr=type,ship_uuid,departure,duration,departure_port_uuid`);return w.value=r.data,r.data}catch(e){throw console.error("Failed to fetch package sailings",e),e}}async function Z(){try{if(!w.value.length)return!1;const e=w.value.map(a=>a.ship_uuid).join(","),n=await I().$fetchGateway(`/arya/ships/${e}?attr=summary,cruise_line_uuid,hero_images`);return y.value=n.data,n.data}catch(e){throw console.error("Failed to fetch package ships",e),e}}async function ee(){try{if(!y.value.length)return!1;const e=y.value.map(a=>a.cruise_line_uuid).join(","),n=await I().$fetchGateway(`/arya/cruise-lines/${e}?attr=summary,preferred,show_in_search,circular_logo_uuid,whats_included`);return f.value=n.data.sort((a,r)=>a.summary.localeCompare(r.summary)),n.data}catch(e){throw console.error("Failed to fetch package cruise lines",e),e}}async function te(){try{if(!_.value.length)return!1;const e=_.value.map(s=>s.UUID).join(","),n=h.value.map(s=>s.UUID).join(","),a=[e,n].filter(Boolean).join(","),t=[...new Set(a.split(","))].join(","),i=await I().$fetchGateway(`/dora/cost/${t}?attr=cabin_type,cabin_grade,cost,display,offer_text,cabin_subtype`);return d.value=i.data||[],i.data}catch(e){throw console.error("Failed to fetching package cabins",e),e}}function j(e){if(isNaN(Date.parse(e)))return console.error("Invalid date"),"";const n=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],a=new Date(e),r=a.getDate(),t=a.getMonth(),i=a.getFullYear();let s;return r===1||r===21||r===31?s="st":r===2||r===22?s="nd":r===3||r===23?s="rd":s="th",`${r}${s} ${n[t]} ${i}`}return{loading:u,isDropdown:A,fallbackText:U,submitButtonLabel:L,mapDropdownOptions:J,packages:_,sameNamePackages:h,fetchLowestCabinsByPriority:Y,packageGroupByCruiseLineMapping:B,cabinTypeLabels:N,sameNamePackagesByCruiseLineMapping:Q}}},he={class:"mt-5 md:max-w-6xl mx-auto"},be={key:0},Ue={class:"flex justify-between mx-auto mb-4 mt-6"},_e={key:0,class:"text-md lg:text-md text-theme-primary"},ve={class:"font-theme-semibold mr-1"},ke={key:1},xe={class:"flex flex-row justify-between items-center"},we={class:"font-theme-bold md:text-md capitalize"},Ie={key:1},De={key:2};function Pe(l,u,_,m,w,C){const y=G,f=H,d=ne("AlternativePackageCard"),h=ie;return o(),c("div",he,[m.sameNamePackages&&m.sameNamePackages.length?(o(),c("div",be,[...u[0]||(u[0]=[p("h4",{class:"text-xl md:text-2xl font-theme-bold text-theme-primary-dark mb-6"}," Alternative dates for this itinerary ",-1),p("p",{class:"hidden sm:block lg:text-md"}," Discover all available ships, dates and prices for this exclusive cruise and stay offer. ",-1)])])):T("",!0),(o(!0),c(x,null,F(m.sameNamePackagesByCruiseLineMapping,($,D)=>(o(),c(x,{key:`sameNamePackages${D}`},[(o(!0),c(x,null,F($.ships,(N,A)=>(o(),c(x,{key:`sameNamePackagesByCruiseLine${A}`},[p("div",Ue,[m.sameNamePackagesByCruiseLineMapping&&m.sameNamePackagesByCruiseLineMapping.length?(o(),c("h3",_e,[p("span",ve,S($.cruiseLine),1),p("span",null,S(N.ship),1)])):(o(),c("div",ke,"   ")),u[1]||(u[1]=p("p",{class:"text-md font-theme-bold justify-self-end float-right"}," (£pp) ",-1))]),P(h,{items:N.packages,class:"md:max-w-6xl mx-auto","expand-index":D===0&&A===0?0:-1,"full-header-toggle":!1},{subHeading:V(({content:U,isActive:L})=>[p("div",xe,[U&&U.prices.length?(o(!0),c(x,{key:0},F(m.fetchLowestCabinsByPriority(U.prices),(v,B)=>(o(),c("div",{key:`sameNamePackagePrice${B}`,class:"text-base lg:text-md"},[p("p",{class:q(["sm:block",{hidden:B>0}])}
1,[p("span",we,S(m.cabinTypeLabels[v.type]),1),u[2]||(u[2]=p("span",{class:"pr-2 pl-1 text-sm lg:text-base"}," from",-1)),P(y,{class:"font-theme-bold text-md lg:text-lg text-theme-coral-red",currency:v.currency,decimal:v.decimal,"meta-abbr":v.metaAbbr,value:v.value},null,8,["currency","decimal","meta-abbr","value"])],2)]))),128)):!U.prices.length&&m.loading?(o(),c("div",Ie,[...u[3]||(u[3]=[p("p",{class:"text-md font-theme-bold text-theme-grey-1"}," Loading prices... ",-1)])])):(o(),c("div",De,[...u[4]||(u[4]=[p("p",{class:"text-md font-theme-bold text-theme-grey-1"}," Please enquire for prices ",-1)])])),P(f,{label:"View",modifiers:["tertiary"],class:q({"transition-none":L}),"btn-type":"link",href:U.href},null,8,["class","href"])])]),content:V(({content:U})=>[P(d,{href:U.href,cabins:U.prices,loading:m.loading},null,8,["href","cabins","loading"])]),_:2},1032,["items","expand-index"])],64))),128))],64))),128))])}const Se=z(ye,[["render",Pe]]),Be=Object.freeze(Object.defineProperty({__proto__:null,default:Se},Symbol.toStringTag,{value:"Module"}));export{ge as A,Se as a,Be as b};

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.