1import{r as i,u as te,a as J,j as e,p as H,b as ne}from"./index.c19e81ac.js";import{S as ie}from"./03cf7316.js";import{y as ce,z as le,A as re,B as oe,C as de,D as ue,s as me,t as he,u as pe,E as fe}from"./ed5a659c.js";import{T as xe,h as q,b as P}from"./6ab29fd3.js";import{r as je,t as _e,v as ye,x as Ne,j as ve}from"./13454ac2.js";import{u as be}from"./9bf29f89.js";import{c as ge,D as b,d as Se}from"./749b8405.js";import"./6f12ac3f.js";const U=66;function Ce({tour:a}){const l=i.useMemo(()=>je(a.ActiveDates||a.raw&&a.raw.ActiveDates),[a.ActiveDates,a.raw]),[n,t]=i.useState(null),[r,h]=i.useState(()=>l[0]||null),[p,_]=i.useState(!1),[f,m]=i.useState(!1),[u,x]=i.useState(null),[g,d]=i.useState(!1),[j,I]=i.useState(null),[K,w]=i.useState(!1),[L,T]=i.useState(a.seatsAvailable),[k,$]=i.useState(!1),[B,M]=i.useState(a.tripReqId),[Q,O]=i.useState(a.routeCode),D=i.useRef(null),S=i.useRef(0),{startBooking:V}=be(),X=te(),[Y]=J();i.useEffect(()=>{h(l[0]||null),x(null),I(null),T(a.seatsAvailable),$(!1),M(a.tripReqId),O(a.routeCode),S.current+=1},[a.id,l,a.seatsAvailable,a.tripReqId,a.routeCode]),i.useEffect(()=>{if(n!=="amenities"||u!==null)return;let s=!1;return d(!0),_e(a.companyId||0).then(c=>{if(s)return;const o=a.amenityIds||[];x(o.map(y=>c[y]||y))}).catch(()=>{s||x([])}).finally(()=>{s||d(!1)}),()=>{s=!0}},[n,u,a.amenityIds,a.companyId]),i.useEffect(()=>{if(n!=="cancel"||j!==null)return;const s=a.routeCode||a.code;if(!s){I([]);return}let c=!1;return w(!0),ye(s).then(o=>{c||I(o)}).catch(()=>{c||I([])}).finally(()=>{c||w(!1)}),()=>{c=!0}},[n,j,a.routeCode,a.code]),i.useEffect(()=>{const s=D.current;if(!s)return;let c=null;function o(){const v=s.querySelector(".date-chip");return v?v.offsetWidth+8:U}function y(){const v=o();if(!v)return;const se=s.scrollWidth-s.clientWidth,z=Math.min(Math.round(s.scrollLeft/v)*v,Math.max(se,0));Math.abs(z-s.scrollLeft)>1&&s.scrollTo({left:z,behavior:"smooth"}),E(s)}const N=()=>{E(s),clearTimeout(c),c=setTimeout(y,80)},ae=requestAnimationFrame(()=>E(s));return s.addEventListener("scroll",N,{passive:!0}),window.addEventListener("resize",N),()=>{cancelAnimationFrame(ae),clearTimeout(c),s.removeEventListener("scroll",N),window.removeEventListener("resize",N)}},[l]);function E(s){_(s.scrollLeft>2),m(s.scrollLeft+s.clientWidth<s.scrollWidth-2)}function F(s){const c=D.current;if(!c)return;const o=c.querySelector(".date-chip"),y=8,N=o?o.offsetWidth+y:U;c.scrollBy({left:s*N*3,behavior:"smooth"})}function C(s){t(c=>c===s?null:s)}function Z(s){if(h(s),!(s!=null&&s.iso)||a.tripReqId==null||a.tripReqId==="")return;const c=++S.current;$(!0),Ne({tripReqId:a.tripReqId,journeyDate:s.iso}).then(o=>{c===S.current&&(o.seatsAvailable!=null&&o.seatsAvailable!==""?T(o.seatsAvailable):T(0),o.tripReqId!=null&&o.tripReqId!==""&&M(o.tripReqId),o.routeCode&&O(o.routeCode))}).catch(()=>{c===S.current&&T(0)}).finally(()=>{c===S.current&&$(!1)})}function W(){const s=Number(L);return Number.isFinite(s)&&s>0}function ee(){if(!r||k||!W())return;const s=Q||a.routeCode||a.code;V({...a,seatsAvailable:L,tripReqId:B,routeCode:s},r);const c=ge(Y,{routeCode:s,date:r==null?void 0:r.iso,tripId:a.tripId,tripReqId:B});X(c?`${H.passengers}?${c}`:H.passengers)}return e.jsxs("article",{className:"tour-card",children:[e.jsx("img",{className:"tour-card__image",src:a.image,alt:a.name}),e.jsxs("div",{className:"tour-card__head",children:[e.jsx("h3",{className:"tour-card__title",children:a.name}),e.jsx("span",{className:"tour-card__code",children:a.code}),e.jsx("span",{className:"tour-card__category",children:a.category})]}),e.jsxs("div",{className:"tour-card__details",children:[e.jsx(A,{label:"Days of Operation",value:a.daysOfOperation}),e.jsx(A,{label:"Departure Time",value:a.departureTime}),e.jsx(A,{label:"Accommodation",value:a.accommodation}),e.jsx(A,{label:"Seats Available",value:k?"Loadingâ¦":String(L??a.seatsAvailable??"â")}),e.jsx("div",{className:"tour-card__book",children:e.jsx("button",{type:"button",className:"btn btn--book",onClick:ee,disabled:!r||k||!W(),children:"Book"})})]}),e.jsxs("div",{className:"tour-card__tabs",children:[e.jsx(R,{icon:ce,label:"Route",open:n==="route",onClick:()=>C("route")}),e.jsx(R,{icon:le,label:"Itinerary",open:n==="itinerary",onClick:()=>C("itinerary")}),e.jsx(R,{icon:re,label:"Amenities",open:n==="amenities",onClick:()=>C("amenities")}),e.jsx(R,{icon:oe,label:"Cancellation Policy",open:n==="cancel",onClick:()=>C("cancel")}),e.jsx(R,{icon:de,label:"Terms & Conditions",open:n==="terms",onClick:()=>C("terms")})]}),n&&e.jsxs("div",{className:"tour-card__panel",children:[n==="route"&&e.jsx(Ie,{stops:a.route||[]}),n==="itinerary"&&(Array.isArray(a.itinerary)&&a.itinerary.length?e.jsx(Re,{days:a.itinerary}):e.jsx("p",{children:"No itinerary found"})),n==="amenities"&&(g||u===null?e.jsx("p",{children:"Loading..."}):u.length?e.jsx("ul",{className:"tour-card__amenities",children:u.map(s=>e.jsx("li",{className:"tour-card__amenity",children:s},s))}):e.jsx("p",{children:"No amenities found"})),n==="cancel"&&(K||j===null?e.jsx("p",{children:"Loading..."}):j.length?e.jsxs("div",{className:"tour-card__policy",children:[e.jsxs("div",{className:"tour-card__policy-head",children:[e.jsxs("div",{className:"h1",children:["Time Before",e.jsx("br",{}),"Trip Start"]}),e.jsxs("div",{className:"h2",children:["Cancellation",e.jsx("br",{}),"Slab"]}),e.jsxs("div",{className:"h3",children:["Refund",e.jsx("br",{}),"Slab"]})]}),j.map(s=>e.jsxs("div",{className:"tour-card__policy-row",children:[e.jsx("div",{className:"col1",children:s.time}),e.jsx("div",{className:"col2",children:s.charge}),e.jsx("div",{className:"col3",children:s.refund})]},s.time))]}
1):e.jsx("p",{children:"No cancellation policy found"})),n==="terms"&&e.jsx("ol",{className:"tour-card__terms",children:xe.map(s=>e.jsx("li",{children:s},s))})]}),e.jsxs("div",{className:"tour-card__dates",children:[e.jsxs("span",{className:"tour-card__dates-label",children:[e.jsx(ue,{className:"icon"}),"Schedule Dates:"]}),e.jsx("button",{type:"button",className:"tour-card__nav",onClick:()=>F(-1),disabled:!p,"aria-label":"Previous dates",children:e.jsx(me,{className:"icon icon--md"})}),e.jsxs("div",{className:"tour-card__dates-row",ref:D,children:[l.map(s=>{const c=(r==null?void 0:r.iso)===s.iso;return e.jsxs("button",{type:"button",onClick:()=>Z(s),className:`date-chip${c?" is-active":""}`,children:[e.jsx("span",{children:s.day}),e.jsx("span",{className:"num",children:s.date}),e.jsx("span",{children:s.month})]},s.iso)}),e.jsx("span",{className:"tour-card__dates-spacer","aria-hidden":"true"})]}),e.jsx("button",{type:"button",className:"tour-card__nav",onClick:()=>F(1),disabled:!f,"aria-label":"Next dates",children:e.jsx(he,{className:"icon icon--md"})})]})]})}function A({label:a,value:l}){return e.jsxs("div",{className:"tour-card__meta",children:[e.jsx("p",{className:"meta-label",children:a}),e.jsx("p",{className:"meta-value",children:l})]})}function R({icon:a,label:l,open:n,onClick:t}){return e.jsxs("button",{type:"button",className:"tour-card__tab",onClick:t,children:[e.jsx(a,{className:"icon"}),l,e.jsx(pe,{className:`icon chevron${n?" is-open":""}`,strokeWidth:2})]})}function Re({days:a}){const[l,n]=i.useState(null);return e.jsx("div",{className:"itinerary",children:a.map((t,r)=>{var p,_,f;const h=l===r;return e.jsxs("div",{className:`itinerary__row${h?" is-open":""}`,children:[e.jsxs("button",{type:"button",className:"itinerary__head",onClick:()=>n(h?null:r),"aria-expanded":h,children:[t.day?e.jsx("span",{className:"itinerary__day",children:t.day}):null,e.jsx("span",{className:`itinerary__title${t.day?"":" itinerary__title--solo"}`,children:t.title}),e.jsx("span",{className:"itinerary__plus","aria-hidden":"true",children:e.jsx(fe,{className:"icon"})})]}),h?e.jsxs("div",{className:`itinerary__detail${t.day?"":" itinerary__detail--flush"}`,children:[t.description?e.jsx("p",{children:t.description}):null,(p=t.sections)==null?void 0:p.map((m,u)=>{var x;return e.jsxs("div",{className:"itinerary__section",children:[m.heading?e.jsx("h4",{className:"itinerary__section-title",children:m.heading}):null,(x=m.items)!=null&&x.length?e.jsx("ul",{className:"itinerary__list",children:m.items.map((g,d)=>e.jsx("li",{children:g},`${t.day||t.title}-sec-${u}-${d}`))}):null]},`${t.day||t.title}-sec-${u}`)}),(_=t.items)!=null&&_.length?e.jsx("ul",{className:"itinerary__list",children:t.items.map((m,u)=>e.jsx("li",{children:m},`${t.day||t.title}-item-${u}`))}):null,(f=t.notes)==null?void 0:f.map((m,u)=>e.jsx("p",{children:m},`${t.day||t.title}-note-${u}`))]}):null]},`${t.day||t.title}-${r}`)})})}function Ie({stops:a}){return e.jsx("ol",{className:"timeline",children:a.map((l,n)=>{const t=n===0,r=n===a.length-1,h=t?"timeline__dot--start":r?"timeline__dot--end":"";return e.jsxs("li",{className:"timeline__item",children:[n<a.length-1&&e.jsx("span",{className:"timeline__line"}),e.jsx("span",{className:`timeline__dot ${h}`}),e.jsxs("span",{className:"timeline__label",children:[l,t?" (Start)":r?" (End)":""]})]},`${l}-${n}`)})})}function Te(a){return{district:a.get("district")||b.district,depot:Se(a)||b.depot,destination:a.get("destination")||"",packageType:a.get("packageType")||b.packageType}}function G(a){const l=new URLSearchParams;return Object.entries(a).forEach(([n,t])=>{t&&l.set(n,t)}),l}function we(){const a=ne(),[l,n]=J(),[t,r]=i.useState(()=>{var d;return(d=a.state)!=null&&d.filters?{...b,...a.state.filters}:{...b,...Te(l)}}),[h,p]=i.useState([]),[_,f]=i.useState(!1),m=i.useRef(!1);async function u(d){if(q(P(d))){p([]),f(!1);return}f(!0);try{p(await ve(d))}catch{p([])}finally{f(!1)}}i.useEffect(()=>{m.current||q(P(t))||(m.current=!0,u(t))},[t]),i.useEffect(()=>{var j;if(!((j=a.state)!=null&&j.filters))return;const d={...b,...a.state.filters};r(d),n(G(d),{replace:!0})},[a.state,n]);const x=()=>{m.current=!0,n(G(t),{replace:!0}),u(t)},g=!q(P(t));return e.jsxs("div",{className:"search-page",children:[e.jsx(ie,{filters:t,setFilters:r,onSearch:x}),e.jsx("div",{className:"search-page__results",children:_?e.jsx("p",{className:"search-page__empty",children:"Loadingâ¦"}):h.length>0?h.map(d=>e.jsx(Ce,{tour:d},d.id)):e.jsx("p",{className:"search-page__empty",children:g?"No packages found for the selected filters.":"Select District, Depot, Destination and Package Tour to search."})})]})}export{we 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.