"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7966],{27966:function(e,n,a){a.r(n),a.d(n,{default:function(){return O}});var l=a(27573),t=a(7653),r=a(72971),i=a(76184),o=a(48687),s=a(10701),c=a(71811),d=a(67754),u=a(59453),v=a(96874),m=a(96504);let f=(e,n,a,l)=>{if(0===a)return{transaction_fee:0,booking_fee:0,total:0,policyRefund:0};if("USD"===e){let e=Number((2.9/100*n+.3).toFixed(2));return{transaction_fee:e,booking_fee:l,total:Number((a-e-l).toFixed(2)),policyRefund:a}}if("MXN"===e){let e=Number((3.6/100*n+3).toFixed(2));return{transaction_fee:e,booking_fee:l,total:Number((a-e-l).toFixed(2)),policyRefund:a}}throw Error("Unsupported currency")};var p=a(68055),x=a(63629),y=a(34690),g=a(43478),_=a(69363),h=a(54279);function b(e){let{amountToRefundFees:n,currency:a,currentCurrencyConversionRate:t=1}=e,r=(0,p.eR)("blocks.reservation.cancel");return(0,l.jsxs)("div",{className:"p-3 flex flex-col gap-2 border rounded-md mb-4 text-xs",children:[(0,l.jsxs)("div",{className:"w-full flex justify-between items-center",children:[(0,l.jsx)("p",{children:r("dialog.fees.policy")}),(0,l.jsx)("p",{children:(0,h.Z)(n.policyRefund*t,a)})]}),(0,l.jsxs)("div",{className:"w-full flex justify-between items-center",children:[(0,l.jsx)("p",{children:r("dialog.fees.transaction")}),(0,l.jsxs)("p",{children:["-",(0,h.Z)(n.transaction_fee*t,a)]})]}),(0,l.jsxs)("div",{className:"w-full flex justify-between items-center",children:[(0,l.jsx)("p",{children:r("dialog.fees.booking")}),(0,l.jsxs)("p",{children:["-",(0,h.Z)(n.booking_fee*t,a)]})]}),(0,l.jsxs)("div",{className:"w-full flex justify-between items-center",children:[(0,l.jsx)("p",{children:r("dialog.fees.total")}),(0,l.jsx)("p",{children:(0,h.Z)(n.total*t,a)})]})]})}let j=e=>{let{html:n}=e,[a,r]=(0,t.useState)("");return(0,t.useEffect)(()=>{let e=new DOMParser().parseFromString(n,"text/html");Array.from(e.body.querySelectorAll("[style]")).forEach(e=>{e.removeAttribute("style")}),r(e.body.innerHTML)},[n]),(0,l.jsx)("div",{dangerouslySetInnerHTML:{__html:a},className:"flex flex-col gap-2 text-foreground"})};function w(e){var n,a,r;let{website:i,loading:o,onSubmit:s,amountToRefundFees:d,cancelReason:u,setCancelReason:v,currency:f,currentCurrencyConversionRate:w=1}=e,N=(0,p.eR)("blocks.reservation.cancel"),S=null==i?void 0:i.providerConstants,R=(null==S?void 0:S.locale)||"en",{currentReservation:k}=(0,c.H)(),[D,C]=(0,t.useState)(!1),[Z,F]=(0,t.useState)(!1),z=d.total>0&&Number((null==k?void 0:k.pay_now)||0)>=d.policyRefund;return(0,l.jsx)("div",{className:"flex flex-col w-full gap-3",children:(0,l.jsx)("div",{className:"border bg-secondary rounded-md px-4 pb-4 w-full flex flex-col",children:(0,l.jsx)(m.UQy,{type:"single",collapsible:!0,children:(0,l.jsxs)(m.Qdk,{value:"voucher",className:"border-none p-0",children:[(0,l.jsx)(m.o48,{className:"p-0 pt-3 hover:no-underline",children:(0,l.jsx)("h2",{className:"text-lg font-semibold flex items-center gap-2",children:N("title")})}),(0,l.jsx)(m.vF,{className:"text-md",children:(0,l.jsxs)("div",{className:"w-full flex flex-col gap-4 mt-3",children:["engine"!==i.property.type&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("h3",{className:"font-semibold",children:N("policy")}),(0,l.jsx)(j,{html:(null==k?void 0:null===(r=k.occupancy)||void 0===r?void 0:null===(a=r[0])||void 0===a?void 0:null===(n=a.room)||void 0===n?void 0:n.policy)||""}),(0,l.jsx)(m.Z0O,{})]}),(0,l.jsxs)("div",{className:"w-full flex flex-col gap-2",children:[(0,l.jsxs)(m.bZj,{variant:"destructive",className:"text-red-800 bg-red-50",children:[(0,l.jsx)(x.Z,{size:14,className:"stroke-red-500 relative top-[6px]"}),(0,l.jsx)("span",{className:"text-sm",children:N("disclaimer")})]}),(0,l.jsx)(_.Z,{locale:R,state:Z,setState:F}),(0,l.jsxs)(m.aRR,{open:D,onOpenChange:C,children:[(0,l.jsx)(m.vW2,{asChild:!0,children:(0,l.jsx)(m.zxk,{disabled:o||!Z,type:"button",className:"w-fit",children:o?(0,l.jsx)(y.Z,{size:14,className:"animate-spin"}):N("dialog.title")})}),(0,l.jsxs)(m._Tf,{className:"border-border shadow-none",children:[(0,l.jsxs)(m.f$P,{children:[N("dialog.title")," \uD83D\uDE14"]}),(0,l.jsx)(m.yTm,{className:"opacity-60",children:N("dialog.description")}),(0,l.jsxs)("form",{onSubmit:s,children:[(0,l.jsxs)("div",{className:"w-full flex flex-col gap-2 mb-4",children:[(0,l.jsx)(m.__J,{htmlFor:"reason",children:N("dialog.reason")}),(0,l.jsx)(m.gxH,{id:"reason",name:"reason",required:!0,className:"bg-transparent text-foreground",onChange:e=>v(e.target.value),defaultValue:u})]}),(0,l.jsxs)(m.bZj,{variant:"warning",className:"p-2 mb-4",children:[(0,l.jsx)(g.Z,{size:14}),(0,l.jsx)("span",{className:"text-sm leading-[1.25]",children:0!==Number((null==d?void 0:d.policyRefund)||0)?z?N("dialog.refundable",{amount:(0,l.jsx)("b",{children:(0,h.Z)(Number(d.total*w),f)})}):N("dialog.fees.cannotRefund"):N("dialog.nonRefundable")})]}),0!==Number((null==d?void 0:d.policyRefund)||0)&&(0,l.jsx)(b,{amountToRefundFees:d,currency:f,currentCurrencyConversionRate:w}),(0,l.jsxs)(m.xoY,{children:[(0,l.jsx)(m.zxk,{onClick:()=>C(!1),variant:"outline",type:"button",autoFocus:!0,className:"text-primary bg-primary-foreground hover:text-primary hover:bg-primary-foreground",disabled:o,children:N("dialog.cancel")}),(0,l.jsx)(m.zxk,{type:"submit",disabled:!u||o,children:o?(0,l.jsx)(y.Z,{size:14,className:"animate-spin"}):N("dialog.confirm")})]})]})]})]})]})]})})]})})})})}function N(e){var n,a,r,i,o;let{website:s}=e,{currentReservation:p,currentCurrencyConversionRate:x,handleCancelPayment:y,handleUpdatePayment:g,handleUpdateReservation:_}=(0,c.H)(),{toast:h}=(0,m.pmc)(),b=(0,d.useRouter)(),j=(0,d.usePathname)(),N=(0,d.useSearchParams)(),S=(null==p?void 0:null===(a=p.metadata)||void 0===a?void 0:null===(n=a.payment)||void 0===n?void 0:n.account_currency)||(null==p?void 0:null===(i=p.metadata)||void 0===i?void 0:null===(r=i.payment)||void 0===r?void 0:r.currency)||(null==p?void 0:p.currency)||"USD",R=(null==p?void 0:p.request_currency)||(null==p?void 0:p.currency)||"USD",[k,D]=(0,t.useState)(!1),[C,Z]=(0,t.useState)(""),{data:F}=(0,u.a)({queryKey:["reservation",p],queryFn:async()=>{var e,n;return await (0,v.Z)("itineraries/search",{token:null==p?void 0:null===(n=p.metadata)||void 0===n?void 0:null===(e=n.itineraryEngine)||void 0===e?void 0:e.token})},enabled:!!p}),z=null==F?void 0:null===(o=F.data)||void 0===o?void 0:o.search[0],E=Number(Number((null==z?void 0:z.cancellation_policy_rooms.reduce((e,n)=>e+Number(n.cancellation_policy.cancellation_penalty_refund),0))||0).toFixed(2)),O=f(S,Number((null==p?void 0:p.pay_now_with_extras)||(null==p?void 0:p.pay_now)),E,Number((null==p?void 0:p.fee)||0)),I=O.total>0&&Number((null==p?void 0:p.pay_now)||0)>=O.policyRefund,q=(0,t.useCallback)(async e=>{var n,a,l,t;e.preventDefault(),D(!0);let r=await (0,v.Z)("itineraries/cancel",{token:null==p?void 0:null===(a=p.metadata)||void 0===a?void 0:null===(n=a.itineraryEngine)||void 0===n?void 0:n.token},{rooms:null==p?void 0:null===(t=p.metadata)||void 0===t?void 0:null===(l=t.itineraryEngine)||void 0===l?void 0:l.rooms.map(e=>({id:e.id,room_id:e.room_id,rate_plan_id:e.rate_plan_id}))});if(r.success){I?(await y({orderReference:null==p?void 0:p.order_reference,paymentReference:null==p?void 0:p.payment_reference,amount:Math.round(100*O.total)}),await g({orderReference:null==p?void 0:p.order_reference,paymentReference:null==p?void 0:p.payment_reference,params:{status:"REFUNDED"},metadata:JSON.stringify({cancel_reason:"guest",cancel_description:C,cancel_date:new Date().toISOString(),cancel_transaction_fee:String(O.transaction_fee||0),cancel_refund:String(O.total||0)})}),await _({status:"refunded",cancel_reason:"guest",cancel_description:C,cancel_date:new Date().toISOString(),cancel_transaction_fee:String(O.transaction_fee||0),cancel_refund:String(O.total||0)})):(await g({orderReference:null==p?void 0:p.order_reference,paymentReference:null==p?void 0:p.payment_reference,params:{status:"CANCELLED"},metadata:JSON.stringify({cancel_reason:"guest",cancel_description:C,cancel_date:new Date().toISOString(),cancel_transaction_fee:String(0),cancel_refund:String(0)})}),await _({status:"canceled",cancel_reason:"guest",cancel_description:C,cancel_date:new Date().toISOString(),cancel_transaction_fee:String(0),cancel_refund:String(0)})),await new Promise(e=>setTimeout(e,2e3));let e=new URLSearchParams(N.toString());b.replace(j+"/canceled?"+e.toString())}else D(!1),h({title:r.message,variant:"destructive"})},[p,s,z,C]);return(0,l.jsx)(w,{website:s,loading:k,onSubmit:q,amountToRefundFees:O,cancelReason:C,setCancelReason:Z,currency:R,currentCurrencyConversionRate:x})}var S=a(35797);function R(e){var n,a,r,i,o;let{website:s}=e,{currentReservation:v,currentCurrencyConversionRate:p,handleCancelPayment:x,handleUpdatePayment:y,handleUpdateReservation:g}=(0,c.H)(),{toast:_}=(0,m.pmc)(),h=(0,d.useRouter)(),b=(0,d.usePathname)(),j=(0,d.useSearchParams)(),N=(null==v?void 0:null===(a=v.metadata)||void 0===a?void 0:null===(n=a.payment)||void 0===n?void 0:n.account_currency)||(null==v?void 0:null===(i=v.metadata)||void 0===i?void 0:null===(r=i.payment)||void 0===r?void 0:r.currency)||(null==v?void 0:v.currency)||"USD",R=(null==v?void 0:v.request_currency)||(null==v?void 0:v.currency)||"USD",[k,D]=(0,t.useState)(!1),[C,Z]=(0,t.useState)(""),{data:F}=(0,u.a)({queryKey:["reservation",v],queryFn:async()=>{var e,n,a;return await (0,S.Z)("reservations/transaction-extended",{hotel_id:"gzav-".concat(null==s?void 0:null===(e=s.property)||void 0===e?void 0:e.zavia_id),token:null==v?void 0:null===(a=v.metadata)||void 0===a?void 0:null===(n=a.itineraryZavia)||void 0===n?void 0:n.token})},enabled:!!v}),z=Number((null==F?void 0:null===(o=F.data)||void 0===o?void 0:o.amountToRefund)||0),E=f(N,Number((null==v?void 0:v.pay_now_with_extras)||(null==v?void 0:v.pay_now)),z,Number((null==v?void 0:v.fee)||0)),O=E.total>0&&Number((null==v?void 0:v.pay_now)||0)>=E.policyRefund,I=(0,t.useCallback)(async e=>{var n,a,l;e.preventDefault(),D(!0);let t=await (0,S.Z)("guest/cancel",{hotel_id:"gzav-".concat(null==s?void 0:null===(n=s.property)||void 0===n?void 0:n.zavia_id),token:null==v?void 0:null===(l=v.metadata)||void 0===l?void 0:null===(a=l.itineraryZavia)||void 0===a?void 0:a.token});if(t.success){O?(await x({orderReference:null==v?void 0:v.order_reference,paymentReference:null==v?void 0:v.payment_reference,amount:Math.round(100*E.total)}),await y({orderReference:null==v?void 0:v.order_reference,paymentReference:null==v?void 0:v.payment_reference,params:{status:"REFUNDED"},metadata:JSON.stringify({cancel_reason:"guest",cancel_description:C,cancel_date:new Date().toISOString(),cancel_transaction_fee:String(E.transaction_fee||0),cancel_refund:String(E.total||0)})}),await g({status:"refunded",cancel_reason:"guest",cancel_description:C,cancel_date:new Date().toISOString(),cancel_transaction_fee:String(E.transaction_fee||0),cancel_refund:String(E.total||0)})):(await y({orderReference:null==v?void 0:v.order_reference,paymentReference:null==v?void 0:v.payment_reference,params:{status:"CANCELLED"},metadata:JSON.stringify({cancel_reason:"guest",cancel_description:C,cancel_date:new Date().toISOString(),cancel_transaction_fee:String(0),cancel_refund:String(0)})}),await g({status:"canceled",cancel_reason:"guest",cancel_description:C,cancel_date:new Date().toISOString(),cancel_transaction_fee:String(0),cancel_refund:String(0)})),await new Promise(e=>setTimeout(e,2e3));let e=new URLSearchParams(j.toString());h.replace(b+"/canceled?"+e.toString())}else D(!1),_({title:t.message,variant:"destructive"})},[v,s,F,C]);return(0,l.jsx)(w,{website:s,loading:k,onSubmit:I,amountToRefundFees:E,cancelReason:C,setCancelReason:Z,currency:R,currentCurrencyConversionRate:p})}function k(e){var n;let{website:a}=e,t=null==a?void 0:null===(n=a.property)||void 0===n?void 0:n.type,{currentReservation:r}=(0,c.H)();return(null==r?void 0:r.status)==="canceled"||(null==r?void 0:r.status)==="refunded"?null:"engine"===t?(0,l.jsx)(N,{website:a}):"zavia"===t?(0,l.jsx)(R,{website:a}):null}var D=a(66424),C=a(19808);function Z(e){var n,a,t,r,i;let{website:o}=e,s=(0,p.eR)("blocks.reservation.status"),{currentReservation:d}=(0,c.H)(),u=(null==d?void 0:d.status)==="booked"&&(null==d?void 0:null===(t=d.totals)||void 0===t?void 0:null===(a=t.requested)||void 0===a?void 0:null===(n=a.policyPayment)||void 0===n?void 0:n.pay_later)!==0,v=null==o?void 0:o.enable_pay_due;return(0,l.jsxs)("div",{className:"w-full flex items-center justify-between gap-4 p-4 border rounded-md bg-secondary text-foreground",children:[(0,l.jsxs)("div",{className:"w-full flex gap-4 items-center",children:[(0,l.jsx)(m.Cts,{className:(0,m.cn)("rounded-md text-sm font-normal py-1 px-3",{"bg-red-500 text-white":(null==d?void 0:d.status)==="canceled"||(null==d?void 0:d.status)==="refunded","bg-lime-500 text-white":(null==d?void 0:d.status)==="booked"}),children:(null==d?void 0:d.status)==="canceled"||(null==d?void 0:d.status)==="refunded"?s("canceled"):(null==d?void 0:d.status)==="booked"?s("booked"):null==d?void 0:d.status}),(0,l.jsx)("b",{children:null==d?void 0:d.itinerary_id})]}),v&&(0,l.jsx)(l.Fragment,{children:"{}"!==JSON.stringify(null==d?void 0:null===(i=d.totals)||void 0===i?void 0:null===(r=i.requested)||void 0===r?void 0:r.policyPayment)&&u&&(0,l.jsx)(C.default,{href:"/checkout/cart?reservationId=".concat(null==d?void 0:d.id),children:(0,l.jsxs)(m.zxk,{className:"whitespace-nowrap py-1 px-3 h-auto gap-2",size:"sm",children:[(0,l.jsx)(D.Z,{size:14})," ",s("payDue")]})})})]})}var F=a(59668);a(71364);var z=(0,a(30359).$)("fca20b94523a02eca2683c6259e81d74a2046439");function E(e){let{website:n}=e,a=(0,p.eR)("blocks.reservation.voucher"),{toast:r}=(0,m.pmc)(),{currentReservation:i}=(0,c.H)(),[o,s]=(0,t.useState)(!1),[d,u]=(0,t.useState)("");async function v(e){e.preventDefault(),s(!0),await z(i,n,d),await (0,F.Iox)(F.XH6,{where:{id:{_eq:null==i?void 0:i.id}},set:{voucher_sent:!0}}),r({title:a("send.success")}),s(!1)}return(null==i?void 0:i.status)==="canceled"||(null==i?void 0:i.status)==="refunded"?null:(0,l.jsx)("div",{className:"flex flex-col w-full gap-3",children:(0,l.jsx)("div",{className:"border bg-secondary rounded-md px-4 pb-4 w-full flex flex-col",children:(0,l.jsx)(m.UQy,{type:"single",collapsible:!0,children:(0,l.jsxs)(m.Qdk,{value:"voucher",className:"border-none p-0",children:[(0,l.jsx)(m.o48,{className:"p-0 pt-3 hover:no-underline",children:(0,l.jsxs)("h2",{className:"text-lg font-semibold flex items-center gap-2",children:[a("title")," "]})}),(0,l.jsx)(m.vF,{className:"text-md",children:(0,l.jsx)("div",{className:"w-full flex flex-col gap-4 mt-3",children:(0,l.jsxs)("div",{className:"w-full flex flex-col gap-2 px-1",children:[(0,l.jsx)(m.__J,{children:a("send.label")}),(0,l.jsxs)("form",{onSubmit:e=>v(e),className:"w-full flex gap-2 items-center",children:[(0,l.jsx)(m.IIB,{type:"email",placeholder:a("send.email"),className:"border-border bg-transparent text-foreground",defaultValue:d,onChange:e=>u(e.target.value),required:!0}),(0,l.jsx)(m.zxk,{disabled:o,type:"submit",children:o?(0,l.jsx)(y.Z,{size:16,className:"animate-spin"}):a("send.button")})]})]})})})]})})})})}function O(e){var n;let{component:a,website:c}=e,d=(0,i.Z)(a),u=null==c?void 0:null===(n=c.tracking_codes)||void 0===n?void 0:n.find(e=>"sojernTracker"===e.name),v=(0,t.useMemo)(()=>{var e;return{id:null==u?void 0:null===(e=u.codes)||void 0===e?void 0:e.conversion,name:"Conversion",parameters:[],placement:"body"}},[]);return(0,r.j)({config:v,params:{}}),(0,l.jsx)("section",{className:"w-full py-4 bg-background text-foreground",style:d,children:(0,l.jsxs)(o.Z,{className:"flex flex-col gap-4 max-w-4xl md:px-0",children:[(0,l.jsx)(Z,{website:c}),(0,l.jsx)(s.Z,{opened:!0}),(0,l.jsx)(E,{website:c}),(0,l.jsx)(k,{website:c})]})})}}}]);