1import{_ as ut}from"./D28bVcnM.js";import{d as y}from"./D8ZMcQSb.js";import{N as dt,c as p,o as d,j as n,d as pt,a as yt,p as _,J as vt,L as mt,m as ft,g as b,e as f,t as c,A as M,x as A,z as wt,i as N,v as F,F as gt,r as bt,y as ht,h as T,f as j}from"./BagQXiMl.js";import{P as _t}from"./BM8FxvIs.js";import{t as q,d as I}from"./Cpa216oP.js";import{u as kt}from"./CJWKIkEQ.js";import{_ as Yt}from"./Cp1vRou9.js";import{M as Ct}from"./B9MoD-DD.js";import{B as Dt}from"./Czl3ywKa.js";import{D as xt}from"./ByhJOv_d.js";import{S as Tt}from"./BRxWFBCE.js";import"./CL3qQRA6.js";import"./D34cgo3p.js";import"./DRxXXfRE.js";import"./_B4Ppv5j.js";import"./DTgCqII8.js";import"./C1uNpmWj.js";import"./Dlydt2kM.js";import"./T0NCUph9.js";import"./Dv_2D0-N.js";import"./C-E7h4MG.js";import"./Bdzhf_vw.js";import"./Cwly6uki.js";import"./CLFzEa0p.js";import"./DO6jexN5.js";import"./DwNXngVC.js";import"./BQjtp5qc.js";import"./BzesHVnN.js";import"./DFp5nHrg.js";import"./Do1PdYC1.js";import"./CvAKNS90.js";import"./BnEfWtyJ.js";import"./C0qNFsLU.js";import"./ruu5t4e-.js";import"./DXvxG1oj.js";import"./DcZ1lfOL.js";import"./BxbitoJn.js";import"./kB7TmBdb.js";import"./DA5zOjGS.js";const St={},Pt={class:"loadingio-spinner-interwind-g91vsj4wwep"};function Lt($,C){return d(),p("div",Pt,C[0]||(C[0]=[n("div",{class:"ldio-hsmf6i6u4a"},[n("div",null,[n("div",null,[n("div",null,[n("div")])]),n("div",null,[n("div",null,[n("div")])])])],-1)]))}const Mt=Object.assign(dt(St,[["render",Lt]]),{__name:"Loader"}),At={class:"container",id:"promotions"},Ft={key:0,class:"tw-text-center tw-block tw-my-2"},$t={key:1,class:"tw-text-center tw-block tw-my-2"},Bt={key:2,class:"tw-text-center tw-block tw-my-2"},Ut={class:"md:tw-grid md:tw-grid-cols-5 tw-gap-3"},zt={class:"md:tw-col-span-1"},Rt={class:"tw-sticky tw-top-28 [&_label]:tw-font-semibold"},Ot={key:0},Nt={key:1},jt={for:"cruise",class:"tw-py-1"},qt={class:"tw-m-auto tw-text-center tw-my-2"},It={key:0,class:"tw-text-center"},Wt={key:1,class:"container tw-text-center tw-font-semibold tw-bg-red-200 tw-rounded-lg tw-p-2"},Vt={key:2,class:"tw-font-semibold tw-py-2 tw-text-center"},Et={key:0,class:"md:tw-grid tw-grid-cols-9 tw-gap-2 tw-card tw-my-2"},Gt={key:0,class:"tw-mr-1"},Ht={key:1,class:"tw-mr-1"},Qt={key:2,class:"tw-mr-1"},Jt={key:3},Kt={key:1},Xt={class:"tw-absolute tw-left-0 tw-rounded-lg tw-px-2 tw-py-1 tw-m-3 tw-text-sm tw-bg-[hsla(0,0%,100%,0.8)] tw-text-primary tw-font-semibold"},Zt={class:"md:tw-col-span-6 tw-p-4 tw-flex tw-items-center"},te={class:"tw-w-full"},ee={class:"tw-text-ellipsis tw-line-clamp-1 tw-font-semibold"},ae={class:"md:tw-flex tw-items-center tw-gap-3"},ie={key:0,class:"tw-py-1"},se={class:"tw-font-semibold tw-text tw-py-0.5 tw-bg-gray-50 tw-border-solid tw-border tw-border-gray-200 tw-rounded-lg tw-px-2 tw-inline-block"},re={key:0},oe={class:"tw-font-semibold tw-text-lg"},ne={key:0,class:"tw-line-through md:tw-pl-3 tw-text-red-500 tw-inline-block"},le={key:1},ce={key:2,class:"tw-py-1"},ue={class:"tw-py-1 md:tw-flex tw-gap-4"},de={class:"tw-flex tw-gap-3 tw-justify-center md:tw-justify-end"},pe=["onClick"],ye=["onClick"],W="days{title day} tags cruise{name id type category tags card{url}} shortDescription type islands price",V="availabilityUrl tags departures{startDate endDate itinerary price offer}",ve=pt({__name:"CruiseToursFilter",props:{days:{},cardinalPoint:{},island:{},islands:{},type:{},date:{},charter:{type:Boolean},origin:{default:"galapagos"},tag:{},onlyPromotions:{type:Boolean,default:!1}},setup($){const{categoryNumber:C,normalizeString:B,defineDiscountPercentage:E}=yt(),u=$,w=_([]),v=_([]),k=_(!1),D=_(""),{getAvailability:G}=kt(),x=_(!1),S=_(),P=_(!1),g=_({currentYearSpaces:0,nextYearSpaces:0,totalSpaces:0,currentYearTours:0,nextYearTours:0,totalTours:0}),s=vt({category:"",type:"",day:"",onlyPromotions:u.onlyPromotions,date:u.date?y(u.date):y(),cruise:"",price:"low",categories:[],types:[],days:[],cruises:[],pricesSort:[{value:"low",label:"Low to High"},{value:"high",label:"High to Low"}]});async function H(){const a={};if(u.days&&u.days.value&&u.days.value>0&&(a.duration=u.days.value),u.island)switch(u.island){case"espanola":a.island="española";break;case"darwin":a.island="darwin island";break;default:a.island=u.island;break}const{itineraries:t,galapagosCruises:m}=await j({query:`{ 2 itineraries:${q({destination:"galapagos",...a},W)} 3 galapagosCruises:${I({origin:"galapagos"},V)} 4 }`});let l=[];
4if(u.cardinalPoint){let r="";switch(u.cardinalPoint){case"north":r="south";break;case"south":r="north";break;case"east":r="west";break;case"west":r="east";break}l=t.filter(e=>e.islands&&e.islands.includes(u.cardinalPoint)&&!e.islands.includes(r))}else l=t;if(u.islands){const r=Math.ceil(u.islands.length/2);l=l.filter(e=>e.days.map(Y=>Y.title.toLowerCase()).filter(Y=>u.islands.some(L=>Y.includes(L))).length>=r)}return{galapagosTours:l,galapagosCruises:m}}async function Q(){const{antarcticTours:a,antarcticCruises:t}=await j({query:`{ 5 antarcticTours:${q({destination:"antartida"},W)} 6 antarcticCruises:${I({origin:"antartida"},V)} 7 }`});return{antarcticTours:a,antarcticCruises:t}}async function U(){k.value=!0;try{let a=[],t=[];if(u.origin=="galapagos"){const{galapagosTours:e,galapagosCruises:i}=await H();a=e,t=i}if(u.origin=="antarctica"){const{antarcticTours:e,antarcticCruises:i}=await Q();a=e,t=i}a=a.map(e=>e.cruise.length>1?e.cruise.map(i=>({...e,cruise:[i,...e.cruise.filter(o=>o.id!=i.id)]})):e).flat();const m=t.filter(e=>e.availabilityUrl).map(e=>e.availabilityUrl),l=[];t.filter(e=>e.departures&&e.departures.length>0).forEach(e=>({departures:e.departures.map(i=>{const o={start:y(i.startDate).format("YYYY-MM-DD"),end:y(i.endDate).format("YYYY-MM-DD"),spaces:0,itinerary:i.itinerary,cruise:e.name,id:e.id,days:y(i.endDate).diff(y(i.startDate),"days")+1,nights:y(i.endDate).diff(y(i.startDate),"days"),cabin_type:"",rackRate:i.price?i.price:0,promotionalRate:i.offer?i.offer:0,hold:0,promotion:""};y(i.startDate).isAfter(y())&&l.push(o)})}));const r=await J(m);w.value=a,w.value=Z([...r,...l]),u.charter&&(w.value=w.value.filter(e=>e.availability&&e.availability?.cabin_type.toLowerCase().trim()=="charter")),u.tag&&(w.value=w.value.filter(e=>e.tags?.find(i=>i==u.tag))),v.value=w.value,u.type&&(s.type=u.type||"",h()),u.onlyPromotions&&h(),z(v.value),g.value=ct()}catch(a){console.error("Error loading cruise tours filter data:",a),w.value=[],v.value=[],g.value=0}finally{k.value=!1}}async function J(a){try{const t=a.map(r=>G({url:r,date:y(s.date).format("YYYY-MM-DD")}));return(await Promise.all([...t])).map(r=>r?.availability||[]).flat().map(r=>({...r}))}catch{return[]}}function K(a){return{antartida:"Antarctica",artic:"Arctic"}[a.toLowerCase()]||a}function X(){s.category="",s.type="",s.cruise="",s.day="",s.onlyPromotions=!s.onlyPromotions,h()}function Z(a){const t=[];a.forEach(r=>{const e=u.origin=="galapagos"?w.value.find(i=>i?.cruise?.[0]&&r.id==i.cruise[0].id&&r.itinerary.toLowerCase().trim().includes(i.itineraryLetter.toLowerCase().trim())&&i.duration==r.days):w.value.find(i=>i?.cruise?.[0]&&r.id==i.cruise[0].id&&B(r.itinerary)==B(i.title)&&i.duration==r.days);if(e){const i={...e,availability:r,promotion:r.promotionalRate&&r.promotionalRate>0?r.promotionalRate:0,price:r.rackRate&&r.rackRate>0?r.rackRate:e.price};t.push(i)}});const m=t.sort((r,e)=>y(r.availability?.start).isAfter(y(e.availability?.start))?1:-1),l=w.value.filter(r=>!m.find(e=>e.id==r.id));return[...m,...l]}function z(a){const t=[...new Set(a.map(e=>e.duration))].sort((e,i)=>e-i),m=[...new Set(a.filter(e=>e.cruise?.[0]).map(e=>e.cruise[0].type))],l=[...new Set(a.filter(e=>e.cruise?.[0]).map(e=>e.cruise[0].name))],r=[...new Set(a.filter(e=>e.cruise?.[0]).map(e=>e.cruise[0].category))];s.cruises=l.map(e=>({value:e,label:e})),s.categories=r.map(e=>({value:e,label:e.replace(/-/g," ").replace(/(^\w{1})|(\s+\w{1})/g,i=>i.toUpperCase())})),s.types=m.map(e=>({value:e,label:e})),s.days=t.map(e=>({value:e.toString(),label:e.toString()}))}async function tt(){s.category="",s.cruise="",s.date=y(),s.day="",s.onlyPromotions=!1,v.value=w.value,await O(),u.type||(s.type=""),u.type&&(h(),z(v.value))}async function h(){k.value=!0,x.value=!0,D.value="",v.value=[];let a=w.value;s.onlyPromotions&&(a=st(a)),s.category&&(a=et(a)),s.type&&(a=at(a)),s.day&&(a=it(a)),s.cruise&&(a=rt(a)),s.date&&(a=lt(a)),v.value=a,k.value=!1,v.value.length===0&&(D.value="Not found cruise itineraries")}function et(a){return a.filter(t=>t.cruise?.[0]&&t.cruise[0].category==s.category)}function at(a){return a.filter(t=>t.cruise?.[0]&&t.cruise[0].type==s.type)}function it(a){return a.filter(t=>t.duration==parseInt(s.day))}function st(a){return a.filter(t=>t.promotion>0)}function rt(a){return a.filter(t=>t.cruise?.[0]&&t.cruise[0].name.toLowerCase().includes(s.cruise.toLowerCase()))}function ot(){const a=v.value,t=a.filter(l=>l.availability),m=a.filter(l=>!l.availability);t.sort((l,r)=>{const e=l.promotion>0?l.promotion:l.price,i=r.promotion>0?r.promotion:r.price;return s.price==="low"?e-i:i-e}),v.value=[...t,...m],x.value=!0}const nt=(a,t)=>t.value.toLowerCase().indexOf(a.toLowerCase())>=0;function lt(a){const t=y(s.date).format("YYYY-MM")+"-01",m=a.filter(r=>!r.availability);return[...a.filter(r=>r.availability&&(y(r.availability.start).isAfter(t)||y(r.availability.start).isSame(t))).sort((r,e)=>y(r.availability?.start).isAfter(y(e.availability?.start))?1:-1),...m]}mt(()=>[s.category,s.date,s.day,s.type],()=>{s.cruise="";const a=[...new Set(v.value.filter(t=>t.cruise?.[0]).map(t=>t.cruise[0].name))];s.cruises=a.map(t=>({value:t,label:t}))});const ct=()=>{const a=new Date().getFullYear(),t=v.value.filter(e=>e.availability?.start.includes(a.toString())),m=t.reduce((e,i)=>e+i.availability.spaces,0),l=v.value.filter(e=>e.availability?.start.includes((a+1).toString())),r=l.reduce((e,i)=>e+i.availability.spaces,0);
7return{currentYearSpaces:m,nextYearSpaces:r,totalSpaces:m+r,currentYearTours:t.length,nextYearTours:l.length,totalTours:t.length+l.length}};function R(a){window.location.href=a}async function O(){w.value.find(a=>a.availability?.start.includes(y(s.date).format("YYYY"))&&a.availability.spaces>0)||(w.value=[],v.value=[],await U()),h()}return ft(async()=>{await U()}),(a,t)=>{const m=xt,l=Tt,r=wt("Icon"),e=ut;return d(),p("div",At,[n("div",null,[a.charter?(d(),p("h2",Ft," Real time "+c(a.origin=="galapagos"?"Galapagos":"Antarctic")+" yacht charter availability, over "+c(g.value.totalTours>0?g.value.totalTours:8e3)+" departures available in "+c(new Date().getFullYear())+" and "+c(new Date().getFullYear()+1),1)):a.origin=="galapagos"?(d(),p("h2",$t," Biggest real time availability of Galapagos cruises, over "+c(g.value.currentYearTours>0?g.value.currentYearTours:1e3)+" available departures in "+c(new Date().getFullYear())+", over "+c(g.value.nextYearTours>0?g.value.nextYearTours:2e3)+" available departures in "+c(new Date().getFullYear()+1)+", "+c(s.cruises.length>0?s.cruises.length:85)+" hand selected ships to choose from ",1)):a.origin=="antarctica"?(d(),p("h2",Bt," Discover Antarctic & Arctic cruises with over "+c(g.value.currentYearTours>0?g.value.currentYearTours:200)+" scheduled departures in "+c(new Date().getFullYear())+" and "+c(g.value.nextYearTours>0?g.value.nextYearTours:300)+" in "+c(new Date().getFullYear()+1)+". Browse "+c(s.cruises.length>0?s.cruises.length:25)+" carefully selected ships and plan your next adventure. ",1)):f("",!0)]),n("div",Ut,[n("div",zt,[n("div",Rt,[n("div",null,[t[10]||(t[10]=n("label",{for:"date",class:"tw-py-1"},"Travel date:",-1)),b(m,{value:s.date,"onUpdate:value":t[0]||(t[0]=i=>s.date=i),picker:"month",id:"date",onChange:O,class:"tw-w-full",size:"large"},null,8,["value"])]),a.days?.showFilter?(d(),p("div",Ot,[t[11]||(t[11]=n("label",{for:"days",class:"tw-py-1"},"Cruise Length: ",-1)),b(l,{id:"days",value:s.day,"onUpdate:value":t[1]||(t[1]=i=>s.day=i),options:s.days,onChange:h,class:"tw-w-full",size:"large"},null,8,["value","options"])])):f("",!0),n("div",null,[t[12]||(t[12]=n("label",{for:"category",class:"tw-py-1"},"Ship Category:",-1)),b(l,{id:"category",value:s.category,"onUpdate:value":t[2]||(t[2]=i=>s.category=i),options:s.categories,onChange:t[3]||(t[3]=()=>{s.type="",h()}),class:"tw-w-full",size:"large"},null,8,["value","options"])]),n("div",null,[t[13]||(t[13]=n("label",{for:"type",class:"tw-py-1"},"Type of Ship:",-1)),b(l,{id:"type",value:s.type,"onUpdate:value":t[4]||(t[4]=i=>s.type=i),options:s.types,onChange:t[5]||(t[5]=()=>{h()}),class:"tw-w-full",size:"large"},null,8,["value","options"])]),s.cruises.length>0?(d(),p("div",Nt,[n("label",jt,"Ship ("+c(s.cruises.length)+" "+c(s.cruises.length>1?"Options":"Option")+"):",1),b(l,{id:"cruise",value:s.cruise,"onUpdate:value":t[6]||(t[6]=i=>s.cruise=i),options:s.cruises,"show-search":"",onChange:h,"filter-option":nt,class:"tw-w-full",size:"large"},null,8,["value","options"])])):f("",!0),n("div",null,[t[14]||(t[14]=n("label",{for:"price",class:"tw-py-1"},"Sort by price:",-1)),b(l,{id:"price",value:s.price,"onUpdate:value":t[7]||(t[7]=i=>s.price=i),options:s.pricesSort,onChange:ot,class:"tw-w-full",size:"large"},null,8,["value","options"])]),n("button",{class:M(`btn ${s.onlyPromotions?"btn-blue":"btn-light"} tw-w-full tw-my-2 tw-font-semibold md:tw-text-sm`),onClick:X}," Show only promotions ",2),n("div",qt,[n("button",{class:"btn btn-danger tw-w-full md:tw-text-sm tw-font-semibold",onClick:tt},[b(r,{icon:"fas fa-eraser"}),t[15]||(t[15]=A(" Clear filters ",-1))])])])]),n("div",{class:M(`md:tw-col-span-4 md:tw-px-12 ${k.value&&" tw-flex tw-justify-center tw-items-center"}`)},[k.value?(d(),p("div",It,[b(Mt),t[16]||(t[16]=n("div",null,"Loading data, please wait a few seconds ....",-1))])):f("",!0),D.value?(d(),p("div",Wt,c(D.value),1)):f("",!0),v.value.length>0?(d(),p("div",Vt,c(v.value.length)+" Cruise "+c(v.value.length>1?"Itineraries":"Itinerary")+" Available ",1)):f("",!0),v.value.length>0&&!k.value?(d(),N(_t,{key:3,quantity:v.value.length,"per-page":4,"reset-navigation":x.value,onReseted:t[8]||(t[8]=i=>x.value=!i)},{data:F(({interval:i})=>[(d(!0),p(gt,null,bt(v.value.slice(i.start,i.end),(o,Y)=>(d(),p("div",{key:o.id+Y},[o.cruise?.[0]?(d(),p("div",Et,[n("div",{class:"md:tw-col-span-3 tw-relative tw-bg-cover tw-bg-no-repeat tw-rounded-t-lg md:tw-rounded-tr-none md:tw-rounded-l-lg tw-bg-center tw-h-52 md:tw-h-auto tw-min-h-52",style:ht(`background-image: url('${o.cruise[0]?.card?.[0]?.url||""}');`)},[o.availability&&o.availability.spaces>0?(d(),p("div",{key:0,class:M(`tw-bg-teal-700 tw-px-2 tw-py-0.5 tw-bg-gray-50 [&_*]:tw-text-sm tw-rounded-lg tw-inline-block [&_*]:tw-font-semibold tw-absolute tw-m-2 tw-text-white ${o.promotion>0&&o.availability.cabin_type!=="Charter"&&"!tw-bg-red-500 "} ${o.availability.cabin_type=="Charter"&&"!tw-bg-yellow-500"}`)},[o.availability.cabin_type=="Charter"?(d(),p("span",Gt," Charter ")):(d(),p("span",Ht,c(o.availability?.spaces)+" "+c(o.availability?.spaces>1?"Spots":"Spot"),1)),o.promotion?(d(),p("span",Qt,"| "+c(T(E)(o.promotion,o.price))+" % OFF",1)
7):f("",!0),o.promotion>0?(d(),p("span",Jt,[b(r,{icon:"fa-solid fa-fire"})])):f("",!0)],2)):f("",!0),a.origin=="antarctica"&&u.tag?(d(),p("div",Kt,[n("span",Xt,c(K(o.tags?.find(L=>L===u.tag)||u.tag)),1)])):f("",!0)],4),n("div",Zt,[n("div",te,[n("div",ee,c(o.title),1),n("div",ae,[o.availability?(d(),p("span",ie,c(T(y)(o.availability?.start).format("DD MMM YYYY"))+" - "+c(T(y)(o.availability?.end).format("DD MMM YYYY")),1)):f("",!0),n("span",se,c(o.duration)+" Days ",1)]),o.price>0?(d(),p("div",re,[t[17]||(t[17]=A(" From ",-1)),n("span",oe," USD "+c(o.promotion?o.promotion:o.price)+",00 ",1),o.promotion>0?(d(),p("span",ne,"USD "+c(o.price)+",00",1)):f("",!0)])):(d(),p("div",le,t[18]||(t[18]=[n("span",{class:"tw-font-semibold tw-text-lg"}," Request a quote ",-1)]))),o.availability&&o.availability.promotion?(d(),p("div",ce,c(o.availability?.promotion),1)):f("",!0),n("div",ue,[n("div",null,[t[19]||(t[19]=n("span",{class:"tw-font-semibold"}," Ship: ",-1)),A(" "+c(o.cruise[0].name),1)]),b(Yt,{rating:T(C)(o.cruise[0].category)},null,8,["rating"])]),n("div",de,[o.cruise?.[0]?.tags?.includes("Availability Online")&&o.availability&&o.availability.spaces>0?(d(),p("button",{key:0,onClick:()=>{o.availability?.cabin_type.toLowerCase().includes("charter")?(S.value={...o.availability,cruise:o.cruise[0].name,nights:o.availability.days-1},P.value=!0):R(`/booking?id=${o.cruise[0].id}&start=${o.availability.start}&end=${o.availability.end}`)},class:"btn btn-secondary"}," Book It ",8,pe)):f("",!0),n("button",{onClick:()=>R(`${a.origin=="galapagos"?`/galapagos/cruises/${o.cruise[0]?.url}/`:"/antarctica/itineraries/"}${o.url}${o.availability?`?startDate=${o.availability.start}&endDate=${o.availability.end}`:""}`),class:"btn btn-primary"}," View Details ",8,ye)])])])])):f("",!0)]))),128))]),_:1},8,["quantity","reset-navigation"])):f("",!0)],2)]),b(Ct,{title:"Please complete this form",open:P.value,onClose:t[9]||(t[9]=i=>P.value=i),size:"small"},{default:F(()=>[b(e,null,{default:F(()=>[S.value?(d(),N(Dt,{key:0,date:S.value},null,8,["date"])):f("",!0)]),_:1})]),_:1},8,["open"])])}}}),ta=Object.assign(ve,{__name:"CruiseToursFilter"});export{ta 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.