@roomstay/frontend 2.6.79 → 2.6.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/dist/177.bundle.js +1 -1
  2. package/dist/288.bundle.js +1 -1
  3. package/dist/380.bundle.js +1 -0
  4. package/dist/430.bundle.js +1 -1
  5. package/dist/449.bundle.js +1 -1
  6. package/dist/537.bundle.js +1 -1
  7. package/dist/978.bundle.js +1 -1
  8. package/dist/main.bundle.js +1 -1
  9. package/dist/src/api/AvailabilityAPI.d.ts +3 -1
  10. package/dist/src/api/AvailabilityAPI.js +97 -81
  11. package/dist/src/api/AvailabilityAPI.js.map +1 -1
  12. package/dist/src/api/BookingAPI.d.ts +2 -0
  13. package/dist/src/api/BookingAPI.js +2 -0
  14. package/dist/src/api/BookingAPI.js.map +1 -1
  15. package/dist/src/api/ReservationAPI.d.ts +1 -2
  16. package/dist/src/api/ReservationAPI.js.map +1 -1
  17. package/dist/src/api/TrueRewardsAPI.d.ts +4 -0
  18. package/dist/src/api/TrueRewardsAPI.js +37 -0
  19. package/dist/src/api/TrueRewardsAPI.js.map +1 -0
  20. package/dist/src/components/generic/BEButton.d.ts +1 -0
  21. package/dist/src/components/generic/BEButton.js +2 -1
  22. package/dist/src/components/generic/BEButton.js.map +1 -1
  23. package/dist/src/components/generic/Event/EventCard.js +16 -8
  24. package/dist/src/components/generic/Event/EventCard.js.map +1 -1
  25. package/dist/src/components/generic/Event/EventCarousel.js +3 -1
  26. package/dist/src/components/generic/Event/EventCarousel.js.map +1 -1
  27. package/dist/src/components/generic/PromoCodeInput.d.ts +2 -0
  28. package/dist/src/components/generic/PromoCodeInput.js +2 -4
  29. package/dist/src/components/generic/PromoCodeInput.js.map +1 -1
  30. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js +9 -2
  31. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
  32. package/dist/src/components/members/InlineSignUpSection.d.ts +1 -1
  33. package/dist/src/components/members/InlineSignUpSection.js.map +1 -1
  34. package/dist/src/components/steps/common/CommonAddonSummary/CommonAddonSummary.d.ts +1 -1
  35. package/dist/src/components/steps/common/CommonAddonSummary/CommonAddonSummary.js +2 -2
  36. package/dist/src/components/steps/common/CommonAddonSummary/CommonAddonSummary.js.map +1 -1
  37. package/dist/src/components/steps/common/ItemisedFeesSummary/ItemisedFeesSummary.d.ts +1 -1
  38. package/dist/src/components/steps/common/ItemisedFeesSummary/ItemisedFeesSummary.js.map +1 -1
  39. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsLabel.d.ts +2 -0
  40. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsLabel.js +53 -0
  41. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsLabel.js.map +1 -0
  42. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsPaymentMethod.d.ts +2 -0
  43. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsPaymentMethod.js +115 -0
  44. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsPaymentMethod.js.map +1 -0
  45. package/dist/src/components/steps/date/PeoplePicker.js +2 -2
  46. package/dist/src/components/steps/date/PeoplePicker.js.map +1 -1
  47. package/dist/src/components/steps/hotel/HotelSearchParameters.js +5 -13
  48. package/dist/src/components/steps/hotel/HotelSearchParameters.js.map +1 -1
  49. package/dist/src/components/steps/room/UserSearchSummary/PromoCodeVerificationAlert.d.ts +1 -1
  50. package/dist/src/components/steps/room/UserSearchSummary/PromoCodeVerificationAlert.js +2 -1
  51. package/dist/src/components/steps/room/UserSearchSummary/PromoCodeVerificationAlert.js.map +1 -1
  52. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js +3 -13
  53. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js.map +1 -1
  54. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +5 -15
  55. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
  56. package/dist/src/components/summary/BESummaryAddonRow.js +1 -1
  57. package/dist/src/components/summary/BESummaryAddonRow.js.map +1 -1
  58. package/dist/src/components/summary/BESummaryPerkBlock.js.map +1 -1
  59. package/dist/src/contexts/BasketContext/BasketContextType.d.ts +1 -1
  60. package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
  61. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +37 -20
  62. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  63. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextTypes.d.ts +1 -1
  64. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextTypes.js.map +1 -1
  65. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +2 -0
  66. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  67. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.d.ts +3 -1
  68. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +10 -21
  69. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
  70. package/dist/src/events/actions/PlacedBookingEvent.d.ts +1 -1
  71. package/dist/src/events/actions/PlacedBookingEvent.js.map +1 -1
  72. package/dist/src/events/views/CommittedBookingEvent.d.ts +1 -1
  73. package/dist/src/events/views/CommittedBookingEvent.js.map +1 -1
  74. package/dist/src/events/views/RolledBackBookingEvent.d.ts +1 -1
  75. package/dist/src/events/views/RolledBackBookingEvent.js.map +1 -1
  76. package/dist/src/handlers/payment/TrueRewardsPaymentHandler.d.ts +2 -0
  77. package/dist/src/handlers/payment/TrueRewardsPaymentHandler.js +44 -0
  78. package/dist/src/handlers/payment/TrueRewardsPaymentHandler.js.map +1 -0
  79. package/dist/src/mockApi/ReservationAPI.d.ts +1 -1
  80. package/dist/src/mockApi/ReservationAPI.js.map +1 -1
  81. package/dist/src/models/Addon/Addon.d.ts +0 -24
  82. package/dist/src/models/Addon/Addon.js.map +1 -1
  83. package/dist/src/models/BasketAddonRow.js +3 -5
  84. package/dist/src/models/BasketAddonRow.js.map +1 -1
  85. package/dist/src/models/BasketRow.d.ts +60 -4
  86. package/dist/src/models/BasketRow.js +78 -9
  87. package/dist/src/models/BasketRow.js.map +1 -1
  88. package/dist/src/models/Fee.d.ts +1 -9
  89. package/dist/src/models/Fee.js.map +1 -1
  90. package/dist/src/models/Room/RoomRateNight.d.ts +1 -1
  91. package/dist/src/models/Room/RoomRateNight.js.map +1 -1
  92. package/dist/src/models/RoomstaySession.d.ts +1 -2
  93. package/dist/src/models/RoomstaySession.js.map +1 -1
  94. package/dist/src/pages/findReservation/FindReservationResults.js +2 -2
  95. package/dist/src/pages/findReservation/FindReservationResults.js.map +1 -1
  96. package/dist/src/pages/findReservation/ReservationRow.d.ts +1 -1
  97. package/dist/src/pages/findReservation/ReservationRow.js.map +1 -1
  98. package/dist/src/pages/findReservation/ReservationRowModal.d.ts +1 -1
  99. package/dist/src/pages/findReservation/ReservationRowModal.js.map +1 -1
  100. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js +2 -2
  101. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js.map +1 -1
  102. package/dist/src/translations/Translation.d.ts +14 -0
  103. package/dist/src/translations/Translation.js +14 -0
  104. package/dist/src/translations/Translation.js.map +1 -1
  105. package/dist/src/translations/languages/en-gb.js +14 -0
  106. package/dist/src/translations/languages/en-gb.js.map +1 -1
  107. package/dist/src/util/Analytics/Analytics.d.ts +1 -1
  108. package/dist/src/util/Analytics/Analytics.js.map +1 -1
  109. package/dist/src/util/Analytics/GoogleAnalytics4.d.ts +2 -2
  110. package/dist/src/util/Analytics/GoogleAnalytics4.js.map +1 -1
  111. package/dist/src/util/Analytics/UniversalAnalytics.d.ts +1 -1
  112. package/dist/src/util/Analytics/UniversalAnalytics.js.map +1 -1
  113. package/dist/src/util/DataLayer.d.ts +1 -1
  114. package/dist/src/util/DataLayer.js.map +1 -1
  115. package/dist/src/util/DerbysoftPixel.d.ts +1 -1
  116. package/dist/src/util/DerbysoftPixel.js.map +1 -1
  117. package/dist/test.bundle.js +1 -1
  118. package/dist/vendors.bundle.js +1 -1
  119. package/package.json +2 -2
  120. package/dist/659.bundle.js +0 -1
  121. package/dist/src/models/Api/ReservationsDTO.d.ts +0 -80
  122. package/dist/src/models/Api/ReservationsDTO.js +0 -3
  123. package/dist/src/models/Api/ReservationsDTO.js.map +0 -1
  124. package/dist/src/util/TotalCalculator.d.ts +0 -24
  125. package/dist/src/util/TotalCalculator.js +0 -157
  126. package/dist/src/util/TotalCalculator.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@roomstay/frontend",
3
- "version": "2.6.79",
3
+ "version": "2.6.80",
4
4
  "author": {
5
5
  "name": "Roomstay",
6
6
  "email": "rob@roomstay.io",
@@ -19,7 +19,7 @@
19
19
  "@planpay/web": "^1.1.2",
20
20
  "@popperjs/core": "^2.11.6",
21
21
  "@react-spring/web": "^9.4.4",
22
- "@roomstay/core": "^0.1.56",
22
+ "@roomstay/core": "^0.1.57",
23
23
  "@roomstay/ui": "^0.0.14",
24
24
  "@sentry/browser": "^5.21.0",
25
25
  "@sentry/types": "^5.26.0",
@@ -1 +0,0 @@
1
- (("undefined"!=typeof self?self:this).webpackChunkroomstay=("undefined"!=typeof self?self:this).webpackChunkroomstay||[]).push([[659],{30075:function(e,t,n){"use strict";n.d(t,{m:function(){return u}});var r=n(15671),a=n(43144),o=n(60136),l=n(82963),i=n(61120);var u=function(e){(0,o.Z)(s,e);var t,n,u=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=(0,i.Z)(t);if(n){var a=(0,i.Z)(this).constructor;e=Reflect.construct(r,arguments,a)}else e=r.apply(this,arguments);return(0,l.Z)(this,e)});function s(e,t,n){var a;return(0,r.Z)(this,s),(a=u.call(this)).reservation=void 0,a.basketRows=void 0,a.hotel=void 0,a.reservation=e,a.basketRows=t,a.hotel=n,a}return(0,a.Z)(s,null,[{key:"getLabel",value:function(){return"Booking/Placed"}}]),s}(n(97112).x)},95032:function(e,t,n){"use strict";n.d(t,{z:function(){return u}});var r=n(15671),a=n(43144),o=n(60136),l=n(82963),i=n(61120);var u=function(e){(0,o.Z)(s,e);var t,n,u=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=(0,i.Z)(t);if(n){var a=(0,i.Z)(this).constructor;e=Reflect.construct(r,arguments,a)}else e=r.apply(this,arguments);return(0,l.Z)(this,e)});function s(e){var t;return(0,r.Z)(this,s),(t=u.call(this)).basketRows=void 0,t.basketRows=e,t}return(0,a.Z)(s,null,[{key:"getLabel",value:function(){return"View/Checkout"}}]),s}(n(97112).x)},49659:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return vn}});var r=n(4918),a=n(95032),o=n(27484),l=n.n(o),i=n(67294),u=n(26793),s=n(89250),c=n(79655),d=n(79478),m=n(13821),p=n(13010),f=n(46409),v=n(19874),g=n(47304),y=n(87462),A=n(70885),C=n(89331),h=n(88144),b=n(87582),E=n(73460),x=n(79740),_=n(21120),P=n(78886),k=n(7832),w=n(30584),Z=n(94184),S=n.n(Z),I=n(44744),B=n(97754);function N(e){var t=e.addon,n=(0,u.$)().t;return i.createElement("div",{className:S()("additional-offers--column",{"--selected":e.selected}),style:{backgroundImage:"url('".concat(t.image&&I.Z.resizeImage(t.image,I.h.Original),"')")},onClick:function(){var t;null===(t=e.cardClicked)||void 0===t||t.call(e)}},i.createElement("div",{className:"additional-offers--column-body"},i.createElement(w.ZP,{type:w.yG.Small,color:B.Il.White},i.createElement("strong",null,t.name)),i.createElement("div",{className:"u-flex"},i.createElement(w.ZP,{inline:!0,type:w.yG.Small,color:B.Il.White},n(d.W.Misc.SeeDetails)),i.createElement(P.ZP,{icon:P.Tu.ArrowRight,color:B.Il.White}))))}var R=n(64854),W=n(20858),M=n(11830),D=n(65128),q=n(16380),G=n(63351);function T(e){var t,n=e.addon,a=((0,u.$)().t,(0,i.useContext)(r.hy)),o=(0,i.useState)(e.basketAddonRow?e.basketAddonRow.getSelectedDate():""),l=(0,A.Z)(o,2),s=l[0],c=l[1],d=(0,i.useState)(e.basketAddonRow?e.basketAddonRow.getSelectedTime():""),m=(0,A.Z)(d,2),f=m[0],v=m[1],g=(0,i.useState)({quantity:1}),y=(0,A.Z)(g,2),C=y[0],h=y[1],b=(0,i.useState)(e.basketAddonRow?e.basketAddonRow.getQuantity():1),E=(0,A.Z)(b,2),x=E[0],_=E[1],P=(0,i.useState)(e.basketAddonRow?e.basketAddonRow.getAdultQuantity():1),k=(0,A.Z)(P,2),Z=k[0],S=k[1],N=(0,i.useState)(e.basketAddonRow?e.basketAddonRow.getChildQuantity():0),T=(0,A.Z)(N,2),O=T[0],F=T[1];return i.useEffect((function(){var t,r,a,o,l,i;if(n)return e.basketAddonRow?(h(null!==(t=n.availability[e.basketAddonRow.getSelectedDate()])&&void 0!==t?t:n.availability[n.firstDate]),c(null!==(r=e.basketAddonRow.getSelectedDate())&&void 0!==r?r:n.firstDate),v(null!==(a=e.basketAddonRow.getSelectedTime())&&void 0!==a?a:""),_(e.basketAddonRow.getQuantity()),S(e.basketAddonRow.getAdultQuantity()),F(e.basketAddonRow.getChildQuantity())):(h(n.availability[n.firstDate]),c(n.firstDate),v((null===(o=n.availability[n.firstDate])||void 0===o||null===(l=o.selectorTimes)||void 0===l||null===(i=l[0])||void 0===i?void 0:i.value)||"")),function(){_(1),S(1),F(0)}}),[n]),i.createElement(D.Z,{open:e.isOpen,onClose:e.onClose,size:D.g.Small,title:n?n.name:""},n&&i.createElement(i.Fragment,null,i.createElement("div",{style:{height:"350px",width:"100%",backgroundImage:'url("'.concat(n.image&&I.Z.resizeImage(n.image,I.h.Original),'")'),backgroundPosition:"center",backgroundRepeat:"no-repeat",backgroundSize:"cover"}}),i.createElement("div",{className:"u-marg-heavy u-marg@m-"},i.createElement("div",{className:"u-marg-bottom"},i.createElement(p.Z,{bold:!0},n.name)),i.createElement("div",{className:"u-marg-bottom--heavy"},i.createElement(w.ZP,{type:w.yG.Small,color:B.Il.DarkGrey},i.createElement(M.R,{content:n.description}))),i.createElement("div",{className:"row u-marg-top"},i.createElement("div",{className:"u-flex col-md-6"},i.createElement(w.ZP,null,"Date"),i.createElement(G.P,{nativeOnMobile:!0,options:n.selectorDates,value:s,onChange:function(e){var t,r,a,o;t=e,h(n.availability[t]),c(t),v((null===(r=n.availability[t])||void 0===r||null===(a=r.selectorTimes)||void 0===a||null===(o=a[0])||void 0===o?void 0:o.value)||""),n.availability[t].quantity<x&&_(n.availability[t].quantity)},keyName:"value",labelName:"text",className:"u-flex align-items-center"}))),0!==(null==C||null===(t=C.selectorTimes)||void 0===t?void 0:t.length)&&i.createElement("div",{className:"row u-marg-top"},i.createElement("div",{className:"u-flex col-md-6"},i.createElement(w.ZP,null,"Time"),i.createElement(G.P,{nativeOnMobile:!0,options:(null==C?void 0:C.selectorTimes)||[],value:f,onChange:function(e){v(e)},keyName:"value",labelName:"text",className:"u-flex align-items-center"}))),C.price&&i.createElement("div",{className:"row u-marg-top"},i.createElement("div",{className:"u-flex col-md-6"},i.createElement(w.ZP,null,"Quantity"),i.createElement(q.Z,{number:x,min:1,max:C.quantity,onChange:function(e){_(e)}}))),C.adultPrice&&i.createElement("div",{className:"row u-marg-top"},i.createElement("div",{className:"u-flex col-md-6"},i.createElement(w.ZP,null,"Adults"),i.createElement(q.Z,{number:Z,min:0,max:C.quantity-O,onChange:function(e){S(e)}}))),C.childPrice&&i.createElement("div",{className:"row u-marg-top"},i.createElement("div",{className:"u-flex col-md-6"},i.createElement(w.ZP,null,"Children"),i.createElement(q.Z,{number:O,min:0,max:C.quantity-Z,onChange:function(e){F(e)}}))),i.createElement("div",{className:"u-flex align-items-center u-marg-top"},C.price&&i.createElement("h2",{className:"u-marg-none u-flex u-flex-align-center"},i.createElement(W.Z,null,C.price),"/ Qty"),C.adultPrice&&C.childPrice&&i.createElement("h2",{className:"u-marg-none"},i.createElement("div",{className:"u-marg-none u-flex u-flex-align-center"},i.createElement(W.Z,null,C.adultPrice)," / Adult"),i.createElement("br",null),i.createElement("div",{className:"u-marg-none u-flex u-flex-align-center"},i.createElement(W.Z,null,C.childPrice)," / Child")),C.adultPrice&&!C.childPrice&&i.createElement("h2",{className:"u-marg-none u-flex u-flex-align-center"},i.createElement(W.Z,null,C.adultPrice)," / Adult"),C.childPrice&&!C.adultPrice&&i.createElement("h2",{className:"u-marg-none u-flex u-flex-align-center"},i.createElement(W.Z,null,C.childPrice)," / Child"),i.createElement(R.Z,{filled:!0,primary:!0,onClick:function(){a.setAddonQuantities(n,{quantity:x,adult:Z,child:O},s,f),e.onClose()}},e.basketAddonRow?"Update Cart":"Add to Cart")),n.guaranteeDescription&&i.createElement(i.Fragment,null,i.createElement("h4",{className:"u-marg-bottom--light u-marg-top"},"Guarantee"),i.createElement("div",{className:"u-marg-bot--heavy"},i.createElement(w.ZP,{type:w.yG.Small},n.guaranteeDescription))),n.cancelPenalty&&i.createElement(i.Fragment,null,i.createElement("h4",{className:"u-marg-bottom--light u-marg-top"},"Cancellation Policy"),i.createElement("div",{className:"u-marg-bot--heavy"},i.createElement(w.ZP,{type:w.yG.Small},n.cancelPenalty))))))}function O(){var e=(0,i.useContext)(r.hy),t=(0,i.useContext)(r.Qm),n=(0,C.WP)().hotel,a=(0,h.q_)((function(){return{x:0}})),o=(0,A.Z)(a,2),l=o[0].x,s=o[1],c=(0,E.Z)(),m=(0,A.Z)(c,2),f=m[0],v=m[1],g=(0,u.$)().t,Z=i.useState([]),S=(0,A.Z)(Z,2),I=S[0],R=S[1],W=(0,i.useState)(!1),M=(0,A.Z)(W,2),D=M[0],q=M[1],G=(0,i.useState)(null),O=(0,A.Z)(G,2),F=O[0],U=O[1],L=(0,i.useState)(!1),j=(0,A.Z)(L,2),H=j[0],z=j[1],Q=(0,i.useState)(0),V=(0,A.Z)(Q,2),Y=V[0],J=V[1],$=(0,i.useState)(0),K=(0,A.Z)($,2),X=(K[0],K[1]),ee=(0,i.useState)(-1),te=(0,A.Z)(ee,2),ne=te[0],re=te[1];i.useEffect((function(){var t=!1,r=e.getAllValidRows();return z(!0),_.Z.Addons.findAddons(r,null==n?void 0:n.hotelID).then((function(e){t||(z(!1),R(e))})),function(){z(!1),t=!0}}),[t.currentLanguage]);var ae=222,oe=ae*I.length>=v.width,le=(0,b.c0)((function(e){var t=e.down,n=(0,A.Z)(e.movement,1)[0];ie(t,n)})),ie=function(e,t){if(oe)if(e)s({x:Y+1.5*t});else{var n=Y+t,r=(I.length-1)*ae,a=0;if(n>0)a=0,re(-1);else if(n<-(r-v.width+ae))a=-(r-v.width+ae),re(1);else{var o=-n/ae,l=n%ae>-111?Math.floor(o):Math.ceil(o);a=-l*ae,X(l),re(0)}s({x:a}),J(a)}};return i.createElement(x.Z,{open:!H&&0!==(null==I?void 0:I.length)||!(null==n||!n.showAddonLoader)},i.createElement("div",{className:"u-pad-bottom--heavy "},i.createElement("div",{className:"u-marg-bottom"},i.createElement(p.Z,{bold:!0},g(d.W.Step.Confirmation.AdditionalOfferings))),H&&null!=n&&n.showAddonLoader?i.createElement(k.Z,null):0===(null==I?void 0:I.length)?i.createElement("div",null,i.createElement(w.ZP,{color:B.Il.DarkGrey},g(d.W.Step.Confirmation.NoAdditionalOfferings))):i.createElement("div",{className:"additional-offers"+(I.length>2?"":" --wide"),ref:f},oe&&i.createElement("div",{className:"additional-offers--navigation"},i.createElement(P.ZP,{icon:P.Tu.ArrowLeft2,onClick:function(){ie(!1,ae)},color:-1===ne?B.Il.DarkGrey:B.Il.White,backgroundColor:B.Il.Navy,borderRadius:"round",size:"24px"}),i.createElement(P.ZP,{icon:P.Tu.ArrowRight2,onClick:function(){ie(!1,-222)},color:1===ne?B.Il.DarkGrey:B.Il.White,backgroundColor:B.Il.Navy,borderRadius:"round",size:"24px"})),i.createElement("div",{className:"additional-offers--track-container"},i.createElement(h.q.div,(0,y.Z)({className:"additional-offers--track"},le(),{style:{left:l}}),I.map((function(t,n){return i.createElement(N,{selected:!!e.getRowForAddon(t),key:n,addon:t,cardClicked:function(){q(!0),U(t)}})}))))),i.createElement(T,{isOpen:D&&!!F,addon:F,basketAddonRow:e.getRowForAddon(F),onClose:function(){q(!1)}})))}var F=n(87933);function U(e){var t=(0,i.useState)(e.endTimeDate.diff(l()(),"second")),n=(0,A.Z)(t,2),r=n[0],a=n[1];return(0,i.useEffect)((function(){var t=!1,n=setTimeout((function(){t||(r>0?a((function(e){return e-1})):(e.onEnd&&e.onEnd(),t=!0,clearTimeout(n)))}),1e3);return function(){t=!0,clearTimeout(n)}}),[r]),(0,i.useMemo)((function(){var e=[Math.floor(r/60/60),Math.floor(r/60%60),Math.floor(r%60)];return i.createElement(i.Fragment,null,e.map((function(e){return e.toString().padStart(2,"0")})).join(":"))}),[r])}var L=n(84544);function j(e){var t=(0,i.useState)(!1),n=(0,A.Z)(t,2),r=n[0],a=n[1],o=(0,u.$)().t;return i.createElement(F.ZP,{type:F.NK.Accent1},i.createElement("div",{className:"u-flex w-100 flex-wrap align-items-center"},i.createElement("div",null,i.createElement(w.ZP,null,i.createElement("strong",null,o(d.W.Step.Confirmation.YourRoomIs))),i.createElement(w.ZP,null,i.createElement("strong",null,o(d.W.Step.Confirmation.BeingHeldFor)))),i.createElement("div",{className:r?"a-flash":""},i.createElement(p.Z,{size:"large",bold:!0,color:B.Il.White},i.createElement(U,{endTimeDate:e.endDate,onEnd:function(){L.ZP.instance.sendInteraction("Countdown End Seen",L.s_.LINK,L._J.GUEST_DETAILS),a(!0)}})))))}var H=n(4511),z=n(38279),Q=n(40370),V=n(3933),Y=n(16337),J=n(25400),$=n(90292),K=n(95692),X=n(4942),ee=n(15861),te=n(64687),ne=n.n(te),re=n(76598),ae=n(23115),oe=n(39666),le=n(13819),ie=n(96486),ue=n(87536),se=n(78029),ce=n(79852),de=n(33409);function me(e){var t,n,a=(0,i.useContext)(r.hy),o=(0,u.$)().t,s=(0,i.useState)(l()().add(14,"minute")),c=(0,A.Z)(s,2),m=c[0];c[1],(0,i.useEffect)((function(){var t,n=!1,r=null;return(e.differences.length||null!==(t=e.warnings)&&void 0!==t&&t.length)&&(r=setTimeout((function(){n||e.onClose()}),74e4)),function(){n=!0,clearTimeout(r)}}),[e.differences.length,null===(t=e.warnings)||void 0===t?void 0:t.length]);var f=i.createElement("div",{className:"u-flex"},i.createElement(R.Z,{isText:!0,size:"small",icon:P.Tu.ArrowLeft,onClick:e.onClose,isLoading:e.isLoading},o(d.W.Step.Confirmation.TakeMeBack)),i.createElement(R.Z,{primary:!0,filled:!0,icon:P.Tu.ArrowRight,iconPosition:"right",onClick:e.onProceed,isLoading:e.isLoading},o(d.W.Step.Confirmation.ContinueWithReservation)));return i.createElement(D.Z,{open:!!e.differences.length||!(null===(n=e.warnings)||void 0===n||!n.length),title:o(d.W.Step.Confirmation.YourTotalPriceHasChanged),mobileFooter:f,desktopFooter:i.createElement("div",{className:"u-marg-heavy u-marg@m-"},f),size:D.g.Small,alignCenter:!0},i.createElement("div",{className:"u-marg-heavy u-marg@m-"},i.createElement("div",{className:"row"},i.createElement("div",{className:"col-md-8"},i.createElement(w.ZP,{type:w.yG.Small},o(d.W.Step.Confirmation.ConfirmationCheckoutTitle))),i.createElement("div",{className:"col-md-4"},i.createElement(de.ZP,{icon:P.Tu.Time,type:de.Rm.Primary},i.createElement("span",{className:"u-marg-right--light"},o(d.W.Step.Confirmation.RevertsIn)),i.createElement(U,{endTimeDate:m})))),i.createElement(v.Z,null),!(!e.differences||!e.differences.length)&&e.differences.map((function(e){var t,n,r,o=a.getAllValidRows().find((function(t){return t.getID()===e.id}));return i.createElement("div",{key:e.id},!!o&&i.createElement("div",{className:"u-marg-bottom--heavy"},i.createElement("div",{className:"u-marg-bottom--light"},i.createElement(p.Z,null,o.getRoom().name)),i.createElement(w.ZP,null,null===(t=o.getRate())||void 0===t?void 0:t.name)),i.createElement("div",{className:"u-flex u-marg-bottom--light"},i.createElement(w.ZP,{type:w.yG.Body},i.createElement("strong",null,"Displayed price:")),i.createElement(w.ZP,{color:B.Il.Alert},i.createElement(W.Z,null,null===(n=e.totalPrice)||void 0===n?void 0:n.before))),i.createElement("div",{className:"u-flex"},i.createElement(w.ZP,{type:w.yG.Body},i.createElement("strong",null,"Actual price:")),i.createElement(w.ZP,{color:B.Il.Success},i.createElement(W.Z,null,null===(r=e.totalPrice)||void 0===r?void 0:r.after))),i.createElement(v.Z,null))})),!(!e.warnings||!e.warnings.length)&&e.warnings.map((function(e,t){return i.createElement(w.ZP,{key:t},e)}))))}var pe=(0,i.createContext)({}),fe=function(){return(0,i.useContext)(pe)},ve=n(30075),ge=n(86820),ye=n(15671),Ae=n(43144),Ce=n(60136),he=n(82963),be=n(61120);var Ee,xe,_e=function(e){(0,Ce.Z)(a,e);var t,n,r=(t=a,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=(0,be.Z)(t);if(n){var a=(0,be.Z)(this).constructor;e=Reflect.construct(r,arguments,a)}else e=r.apply(this,arguments);return(0,he.Z)(this,e)});function a(e){var t;return(0,ye.Z)(this,a),(t=r.call(this)).reservation=void 0,t.reservation=e,t}return(0,Ae.Z)(a,null,[{key:"getLabel",value:function(){return"Booking/RolledBack"}}]),a}(n(97112).x),Pe=(n(47577),n(37533),n(74785)),ke=(0,i.forwardRef)((function(e,t){var n,a,o=(0,i.useRef)(null),l=(0,i.useContext)(r.hy),u=(0,i.useState)(null),s=(0,A.Z)(u,2),c=s[0],d=s[1],m=null===(n=l.reservationData)||void 0===n||null===(a=n.payment)||void 0===a?void 0:a.adyen;return(0,i.useImperativeHandle)(t,(function(){return{submitPayment:function(){return(0,ee.Z)(ne().mark((function e(){return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise(function(){var e=(0,ee.Z)(ne().mark((function e(t){var n;return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!c){e.next=8;break}return c.submit(),e.next=4,xe;case 4:if(!(n=e.sent)||"Authorised"===n.resultCode){e.next=7;break}return e.abrupt("return",t({success:!1,message:"Payment failed to authorize",data:{sessionData:n.sessionData,sessionResponse:n.sessionResult}}));case 7:t({success:!0,message:"Payment successful"});case 8:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 1:case"end":return e.stop()}}),e)})))()}}})),(0,i.useEffect)((function(){var e,t=!1;return(0,ee.Z)(ne().mark((function n(){var r,a,l,i,u;return ne().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(m&&o.current&&!t&&null!=m&&m.sessionId&&null!=m&&m.sessionData){n.next=2;break}return n.abrupt("return");case 2:return c&&c.unmount(),xe=new Promise((function(e){Ee=e})),n.next=6,(0,Pe.wk)({session:{id:null!==(r=null==m?void 0:m.sessionId)&&void 0!==r?r:"",sessionData:null==m?void 0:m.sessionData},environment:m.isLive?"live":"test",amount:{currency:null!==(a=null==m?void 0:m.currency)&&void 0!==a?a:"",value:100*parseFloat(null!==(l=null==m?void 0:m.amount)&&void 0!==l?l:"0")},clientKey:null!==(i=null==m?void 0:m.clientKey)&&void 0!==i?i:"",countryCode:null==m?void 0:m.countryCode,onPaymentCompleted:function(e){Ee(e)},onPaymentFailed:function(e,t){null==t||t.setStatus("error",{message:"Payment failed to process"}),Ee(e)},showPayButton:!1});case 6:e=n.sent,o.current&&((u=new Pe.TP(e)).mount(o.current),d(u));case 8:case"end":return n.stop()}}),n)})))(),function(){t=!0,c&&c.unmount()}}),[o,m]),i.createElement(i.Fragment,null,i.createElement("div",{className:"u-marg-bottom--heavy"},i.createElement(p.Z,{bold:!0},"Choose your payment method")),i.createElement("div",{ref:o,id:"dropin-container"}))})),we=function(){var e,t,n=(0,C.WP)().hotel,r=(0,i.useRef)(null);return{name:"Adyen",isAvailable:(null==n?void 0:n.cardProcessor)===re.EHotelCardProcessor.Adyen,isExclusive:!0,requireBookingPlaced:!0,bookingPaymentMethod:re.EBookingPaymentMethod.Adyen,onConfirm:(t=(0,ee.Z)(ne().mark((function e(){return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!r.current){e.next=2;break}return e.abrupt("return",r.current.submitPayment());case 2:return e.abrupt("return",{success:!1,retryPayment:!1,message:"Something has gone wrong. Failed to get payment infromation details."});case 3:case"end":return e.stop()}}),e)}))),function(){return t.apply(this,arguments)}),getBookingPaymentRequestObject:(e=(0,ee.Z)(ne().mark((function e(){return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",{Method:re.EBookingPaymentMethod.Adyen});case 1:case"end":return e.stop()}}),e)}))),function(){return e.apply(this,arguments)}),renderPaymentInput:function(){return i.createElement(ke,{ref:r})}}},Ze=n(49723),Se=n(62364),Ie=n(276),Be=n.n(Ie),Ne=function(){var e=(0,(0,r.Kc)().getTotalPayNow)(),t=(0,Ze.Z)({children:e}),n=t.symbol,a=t.prettyValue;return i.createElement("div",{className:S()(Be().root,"u-flex","u-flex-align-center")},i.createElement("div",null,i.createElement("img",{src:Se.Z.getAssetUrl()+"assets/img/afterpay.svg",alt:"Afterpay",height:33})),i.createElement(w.ZP,{bold:!0,className:"u-flex",color:B.Il.Navy,type:w.yG.Small},n,a))},Re=function(){var e,t,n,r=(0,C.WP)().hotel;return{name:"Afterpay",isAvailable:!(null==r||null===(e=r.paymentMethods)||void 0===e||!e.includes(re.EBookingPaymentMethod.Afterpay)),isExclusive:!1,requireBookingPlaced:!1,bookingPaymentMethod:re.EBookingPaymentMethod.Afterpay,onConfirm:(n=(0,ee.Z)(ne().mark((function e(){return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",{success:!0,retryPayment:!1,message:"Redirecting to payment gateway"});case 1:case"end":return e.stop()}}),e)}))),function(){return n.apply(this,arguments)}),getBookingPaymentRequestObject:(t=(0,ee.Z)(ne().mark((function e(){return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",{Method:re.EBookingPaymentMethod.Afterpay});case 1:case"end":return e.stop()}}),e)}))),function(){return t.apply(this,arguments)}),renderInput:function(){return i.createElement(Ne,null)},renderPaymentInput:void 0}},We=function(){var e,t,n=null===(e=(0,i.useContext)(r.hy).reservationData)||void 0===e||null===(t=e.payment)||void 0===t?void 0:t.mastercard;return(0,i.useEffect)((function(){if(null!=n&&n.sessionId){var e=document.getElementById("mastercard-checkout-script");e&&(e.remove(),window.Checkout=void 0),sessionStorage.removeItem("HostedCheckout_sessionId"),sessionStorage.removeItem("HostedCheckout_merchantState"),sessionStorage.removeItem("HostedCheckout_embedContainer"),window.mastercardError=function(){},window.mastercardCancel=function(){},window.mastercardComplete=function(){};var t=document.createElement("script");t.id="mastercard-checkout-script",t.src="".concat(n.baseUrl,"/static/checkout/checkout.min.js"),t.dataset.error="mastercardError",t.dataset.cancel="mastercardCancel",t.dataset.complete="mastercardComplete",t.onload=function(){window.Checkout?(window.Checkout.configure({session:{id:n.sessionId}}),"PaymentPage"===n.paymentMode?window.Checkout.showPaymentPage():"EmbeddedPage"===n.paymentMode&&window.Checkout.showEmbeddedPage("#mastercard-payment-container")):console.error("Mastercard Checkout SDK failed!")},document.head.appendChild(t)}}),[null==n?void 0:n.sessionId]),i.createElement("div",{id:"mastercard-payment-container"})},Me=function(){var e,t,n=(0,C.WP)().hotel;return{name:"Mastercard",isAvailable:(null==n?void 0:n.cardProcessor)===re.EHotelCardProcessor.Mastercard,isExclusive:!0,hasCustomConfirmButton:!0,requireBookingPlaced:!0,bookingPaymentMethod:re.EBookingPaymentMethod.Card,onConfirm:(t=(0,ee.Z)(ne().mark((function e(){return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",{success:!0,message:"Success"});case 1:case"end":return e.stop()}}),e)}))),function(){return t.apply(this,arguments)}),getBookingPaymentRequestObject:(e=(0,ee.Z)(ne().mark((function e(){return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",{Method:re.EBookingPaymentMethod.Card});case 1:case"end":return e.stop()}}),e)}))),function(){return e.apply(this,arguments)}),renderPaymentInput:function(){return i.createElement(We,null)}}},De=n(46716),qe=n(1320),Ge=n.n(qe),Te=function(){var e=(0,u.$)().t;return i.createElement("div",{className:Ge()["label-and-logo"]},i.createElement("div",null,e(d.W.Step.Confirmation.PlanpayLabel)),i.createElement("div",{className:"u-flex u-flex-align-center u-marg-left--light"},i.createElement("img",{style:{borderRadius:"24px",width:"65px",height:"16px"},height:16,width:65,src:Se.Z.getImageAssetUrl("planpay-logo-small.svg"),alt:""})))},Oe=function(){var e=(0,u.$)().t;return i.createElement(w.ZP,{color:B.Il.Graphite,className:"u-flex u-flex-align-center",style:{color:"#313131",fontSize:10}},i.createElement(P.ZP,{color:B.Il.DarkGrey,icon:P.Tu.Info,className:"u-marg-right--lighter u-marg-left--light"}),e(d.W.Step.Confirmation.PlanpayHelperText))},Fe=function(e){var t=e.symbol,n=e.rawPrice;return i.createElement(w.ZP,{bold:!0,className:Ge().price,color:B.Il.Navy,type:w.yG.Small},t,null==n?void 0:n.installmentAmount," ",null==n?void 0:n.frequency)},Ue=function(){var e,t,n,a,o,l,u,s,c,d,m,p,f,v,g,y,C,h,b,E=(0,ue.Gc)(),x=(0,i.useContext)(r.g7),_=(n=(e={}).price,a=e.checkin,o=e.currency,l=(0,r.Kc)(),u=(0,De.Z)(),s=u.planpay,c=u.planpayConfig,d=u.hasPlanpay,m=(0,i.useContext)(r.Qm).currentCurrency,p=null!=o?o:m,f=l.getTotalPrice()||n,v=(0,Ze.Z)({children:f}).value,g=null!=a?a:((null===(t=l.selectedBasketRow)||void 0===t?void 0:t.getStartDate())||l.endDate).format("YYYY-MM-DD"),y=(0,i.useState)(void 0),C=(0,A.Z)(y,2),h=C[0],b=C[1],(0,i.useEffect)((function(){if(d&&v){var e=function(){var e=(0,ee.Z)(ne().mark((function e(){var t;return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,s.pricePreview.fetch({totalCost:f,merchantId:c.username,currencyCode:p,redemptionDate:g});case 2:t=e.sent,b(t);case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();e()}}),[v,d,p,f]),h),P=(0,r.Kc)().getTotalPrice,k=(0,Ze.Z)({children:P()}).symbol,w=x.screenSize<=$.Z.Large;return i.createElement("div",{className:"u-flex u-flex-justify-between w-100 u-flex-align-center"},i.createElement("div",{className:Ge().root},i.createElement("div",{className:Ge().container},i.createElement(Te,null),w?i.createElement(Fe,{symbol:k,rawPrice:_}):E.formState.isValid?null:i.createElement(Oe,null)),w?i.createElement(Oe,null):i.createElement(Fe,{symbol:k,rawPrice:_})))},Le=n(53296),je=n(69747),He=n(514),ze=function(){return i.createElement("div",null,i.createElement("div",{className:"row no-gutters"},i.createElement("div",{className:"col-md-4"},i.createElement("div",{className:"d-flex justify-content-center"},i.createElement(je.Z,{type:"text",w:"md",h:"sm",blink:!0})),i.createElement(je.Z,{type:"text",h:"md",blink:!0}),i.createElement(je.Z,{type:"text",h:"md",blink:!0})),i.createElement("div",{className:"col-md-4"},i.createElement("div",{className:"d-flex justify-content-center"},i.createElement(je.Z,{type:"text",w:"md",h:"sm",blink:!0})),i.createElement(je.Z,{type:"text",h:"sm",blink:!0}),i.createElement(je.Z,{type:"text",h:"sm",blink:!0}),i.createElement(je.Z,{type:"text",h:"sm",blink:!0})),i.createElement("div",{className:"col-md-4"},i.createElement("div",{className:"d-flex justify-content-center"},i.createElement(je.Z,{type:"text",w:"md",h:"sm",blink:!0})),i.createElement("div",{className:"d-flex justify-content-center u-marg-top u-marg-bottom"},i.createElement(je.Z,{type:"text",w:"xs",h:"sm",blink:!0,noMarg:!0})),i.createElement("div",{className:"d-flex justify-content-center"},i.createElement(je.Z,{type:"text",w:"md",h:"sm",blink:!0,noMarg:!0})),i.createElement("div",{className:"d-flex justify-content-center u-marg-top u-marg-bottom"},i.createElement(je.Z,{type:"text",w:"xs",h:"sm",blink:!0,noMarg:!0})))),i.createElement("div",{className:"row no-gutters"},i.createElement("div",{className:"col-md-4"},i.createElement(je.Z,{type:"text",h:"lg",blink:!0})),i.createElement("div",{className:"offset-md-4 col-md-4 d-flex align-items-center"},i.createElement(je.Z,{type:"text",w:"xl",h:"sm",blink:!0}))))},Qe=function(){var e,t,n=(0,i.useContext)(r.hy),a=(0,He.W)().hotel,o=(0,De.Z)(),l=o.hasPlanpay,u=o.loadPlanPaySDK,s=null===(e=n.reservationData)||void 0===e||null===(t=e.payment)||void 0===t?void 0:t.planpay;return(0,i.useLayoutEffect)((function(){null!=s&&s.id&&Le.planpay.checkout.refresh()}),[null==s?void 0:s.id]),(0,i.useEffect)((function(){l&&u()}),[a,l]),i.createElement(i.Fragment,null,i.createElement("div",{className:"planpay-payment-container","data-planpay-checkout-id":null==s?void 0:s.id,style:{minHeight:"204px",display:"flex",justifyContent:"flex-end",flexDirection:"column"}},i.createElement(ze,null)))},Ve=n(25758),Ye=function(){var e=(0,Ve.u)(),t=(0,Ve.a)(),n=(0,i.useMemo)((function(){return["paymentMethod","roomstayId","planpay_checkout_id","returnFromPayment","success"].map((function(n){return t.get(n)||e.get(n)}))}),[e,t]),r=(0,A.Z)(n,5);return{queryPaymentMethod:r[0],queryRoomstayId:r[1],queryPlanpayCheckoutId:r[2],returnFromPayment:"true"===r[3],success:"true"===r[4]}},Je=function(){var e,t,n=Ye().queryPlanpayCheckoutId,a=(0,i.useContext)(r.hy),o=(0,r.dF)(),u=(0,De.Z)(),s=u.hasPricePreview,c=u.planpayConfig;return{name:"Planpay",isAvailable:!!s&&!(null==c||!c.minDaysShowPlanpay)&&l()(a.startDate).diff(l()(),"day")>c.minDaysShowPlanpay,isExclusive:!1,disabledReason:"You must fill all the above details before proceeding with Planpay",requireBookingPlaced:!0,requireFormFilled:!0,bookingPaymentMethod:re.EBookingPaymentMethod.Planpay,onConfirm:(t=(0,ee.Z)(ne().mark((function e(){return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",{success:!0,retryPayment:!1,message:"Success"});case 1:case"end":return e.stop()}}),e)}))),function(){return t.apply(this,arguments)}),getBookingPaymentRequestObject:(e=(0,ee.Z)(ne().mark((function e(){var t,r,a;return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(t=new URLSearchParams(window.location.search)).set("roomstayId","{{rsId}}"),t.set("session",o.sessionProvider.getCurrentSessionID().toString()),t.set("paymentMethod",re.EBookingPaymentMethod.Planpay),r="".concat(window.location.origin).concat(window.location.pathname).concat(window.location.search,"#/step/confirmation/?").concat(t),a={Method:re.EBookingPaymentMethod.Planpay,PlanpayCheckoutId:n||void 0,RedirectUrl:r},e.abrupt("return",a);case 7:case"end":return e.stop()}}),e)}))),function(){return e.apply(this,arguments)}),renderInput:function(){return i.createElement(Ue,null)},renderPaymentInput:function(){return i.createElement(Qe,null)}}},$e=n(35729),Ke=n.n($e),Xe=function(e){var t=e.vgsCardName,n=e.large;return i.createElement("div",{className:S()(Ke().root,(0,X.Z)({},Ke()["--large"],n)),style:{backgroundImage:"url('".concat(Se.Z.getImageAssetUrl()+t+".png","')")}})},et=n(59111),tt=function(e){var t,n=e.isCurrent,r=e.isDefault,a=e.style,o=(0,C.WP)().hotel,l=(null!==(t=null==o?void 0:o.paymentCardTypes)&&void 0!==t?t:[]).map((function(e){return et.w[e]?{name:et.w[e],status:!1}:null})).filter((function(e){return e}));return i.createElement("div",{className:"u-flex flex-row justify-content-start"},Object.keys(l).map((function(e){var t,o;return i.createElement("div",{key:e,id:null===(t=l[e])||void 0===t?void 0:t.name,className:S()("cc-icon u-flex u-marg-right--light",{"-current":null==n?void 0:n(e),"-default":null==r?void 0:r(e)}),style:Object.assign({backgroundImage:"url('".concat(Se.Z.getAssetUrl()+"assets/img/"+(null===(o=l[e])||void 0===o?void 0:o.name)+".png","')"),backgroundSize:"contain"},a||{})})})))},nt=n(39605),rt=n(75498),at=n.n(rt),ot=function(e){var t,n=e.card,a=(e.active,e.overrideSubLabel),o=(0,u.$)().t,l=(0,r.ZS)().roomstayMember,s=(0,(0,r.Kc)().getTotalPayNow)(),c=(0,Ze.Z)({children:s}),m=c.symbol,p=c.prettyValue,f=a||(n?"Expires ".concat((t=n.expiry).slice(0,2)+" / "+t.slice(2)):o(d.W.Step.Confirmation.CardSubLabel));return i.createElement("div",{className:"u-flex u-flex-justify-between w-100 u-flex-align-center"},i.createElement("div",{className:at().root},n?i.createElement("div",{className:"flex-shrink-0"},i.createElement(Xe,{vgsCardName:n.type,large:!0})):null,i.createElement("div",null,i.createElement(w.ZP,{align:nt.P.Left,type:w.yG.Small,color:B.Il.Navy},n?"**** **** **** ".concat(n.cardNumber.slice(-4)):o(d.W.Step.Confirmation.CardLabel)),i.createElement(w.ZP,{className:"u-marg-top--lighter",align:nt.P.Left,type:w.yG.Caption,color:B.Il.DarkGrey},f)),!n&&i.createElement("div",null,i.createElement(tt,{style:{width:24,height:16,borderRadius:1.5,border:"0.5px solid #DFE1E5"},isCurrent:function(){return!0}})),(null==l?void 0:l.defaultCard)&&n&&n.cardId===l.defaultCard&&i.createElement(de.ZP,{size:"small",type:de.Rm.Primary},"DEFAULT CARD")),i.createElement(w.ZP,{bold:!0,className:"u-flex",color:B.Il.Navy,type:w.yG.Small},m,p))},lt=function(){var e,t,n,r=(0,C.WP)().hotel,a=(0,u.$)().t;return{name:"Redirect",isAvailable:!(null==r||!r.cardProcessor||r.cardProcessor===re.EHotelCardProcessor.Passthrough||null==r||null===(e=r.paymentMethods)||void 0===e||!e.includes(re.EBookingPaymentMethod.Card)),isExclusive:!1,requireBookingPlaced:!1,bookingPaymentMethod:re.EBookingPaymentMethod.Card,onConfirm:(n=(0,ee.Z)(ne().mark((function e(){return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",{success:!0,retryPayment:!1,message:"Redirecting to payment gateway"});case 1:case"end":return e.stop()}}),e)}))),function(){return n.apply(this,arguments)}),getBookingPaymentRequestObject:(t=(0,ee.Z)(ne().mark((function e(){return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",{Method:re.EBookingPaymentMethod.Card});case 1:case"end":return e.stop()}}),e)}))),function(){return t.apply(this,arguments)}),renderInput:function(){return i.createElement(ot,{active:!0,overrideSubLabel:a(d.W.Step.Confirmation.CardThirdPartyLabel)})},renderPaymentInput:void 0}},it=function(){var e,t,n,a=(0,C.WP)(),o=a.hotel,l=a.isMemberPaymentInformationAvailable,u=(0,r.ZS)(),s=u.cards,c=u.roomstayMember,d=null==o||!o.cardProcessor||o.cardProcessor===re.EHotelCardProcessor.Passthrough,m=null==s?void 0:s[0];return null!=c&&c.defaultCard&&(m=null==s?void 0:s.find((function(e){return e.cardId===(null==c?void 0:c.defaultCard)}))),{name:"VGSMember",isAvailable:d&&!(null==o||null===(e=o.paymentMethods)||void 0===e||!e.includes(re.EBookingPaymentMethod.Card))&&!(null==s||!s.length)&&l,isExclusive:!1,requireBookingPlaced:!1,bookingPaymentMethod:re.EBookingPaymentMethod.Card,subOptions:null==s?void 0:s.map((function(e){return{label:i.createElement(ot,{card:e}),value:e.cardId}})),onConfirm:(n=(0,ee.Z)(ne().mark((function e(){return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",{success:!0,message:"Using saved card"});case 1:case"end":return e.stop()}}),e)}))),function(){return n.apply(this,arguments)}),getBookingPaymentRequestObject:(t=(0,ee.Z)(ne().mark((function e(){var t;return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",{Method:re.EBookingPaymentMethod.SavedCard,SavedCardID:null===(t=m)||void 0===t?void 0:t.cardId});case 1:case"end":return e.stop()}}),e)}))),function(){return t.apply(this,arguments)}),renderInput:function(){return i.createElement(ot,{card:m})},renderPaymentInput:void 0,onSubOptionChange:function(e){m=null==s?void 0:s.find((function(t){return t.cardId===e}))}}},ut=n(45993),st=n(71291),ct=(0,i.forwardRef)((function(e,t){var n,r=(0,C.WP)().hotel,a=(0,i.useState)({}),o=(0,A.Z)(a,2),l=o[0],s=o[1],c=(0,u.$)().t,m=(0,C.b)().focusElement,p={fontSize:"13px",lineHeight:"18px","&::placeholder":{color:"#8B8F9A",opacity:1}},f=(0,st.c)([{label:c(d.W.Step.Confirmation.Inputs.CardNumber),name:"credit-card",type:"card-number",vgsProps:{autoComplete:["cc-number"],successColor:"#4F8A10",errorColor:"#D8000C",showCardIcon:!1,placeholder:c(d.W.Step.Confirmation.Inputs.CardNumber)+" *",validations:["required","validCardNumber"],css:p}},{label:c(d.W.Step.Confirmation.Inputs.NameOnCard),name:"card-name",type:"text",vgsProps:{validations:["required"],css:p,placeholder:c(d.W.Step.Confirmation.Inputs.NameOnCard)+" *"}},{label:c(d.W.Step.Confirmation.Inputs.CardExpiry),name:"expiration-date",type:"card-expiration-date",vgsProps:{placeholder:c(d.W.Step.Confirmation.Inputs.CardExpiry)+" *",validations:["required","validCardExpirationDate"],css:p}},{label:c(d.W.Step.Confirmation.Inputs.SecurityCode),name:"security-code",type:"card-security-code",vgsProps:{placeholder:c(d.W.Step.Confirmation.Inputs.SecurityCode)+" *",validations:["required","validCardSecurityCode"],css:p}}]),v=(0,A.Z)(f.fields,4),g=v[0],y=v[1],h=v[2],b=v[3],E=f.vgsForm,_=function(e){var t={};Object.keys(e).forEach((function(n){var r="";switch(n){case"credit-card":r=c(d.W.Step.Confirmation.Inputs.CardNumber);break;case"expiration-date":r=c(d.W.Step.Confirmation.Inputs.CardExpiry);break;case"security-code":r=c(d.W.Step.Confirmation.Inputs.SecurityCode);break;default:r=c(d.W.Step.Confirmation.Inputs.NameOnCard)}t[n]=r+" "+e[n].errorMessages[e[n].errorMessages.length-1]})),s(t)};(0,i.useEffect)((function(){var e,t;l&&0!==Object.keys(l).length&&null!=g&&null!==(e=g.ref)&&void 0!==e&&e.current&&m(null==g||null===(t=g.ref)||void 0===t?void 0:t.current)}),[l]),(0,i.useImperativeHandle)(t,(function(){return{submitPayment:function(){return new Promise((function(e,t){E?E.submit("/post",{serializer:"deep",methods:"POST"},(function(n,r){var a=r,o=a["expiration-date"].match(/^(\d+)\s*\/\s*(\d+)$/);if(!o||o[1].length>2||4!==o[2].length&&2!==o[2].length)return _({"expiration-date":{errorMessages:[c(d.W.Step.Confirmation.InputErrors.CardExpiry.Invalid)]}}),void t(c(d.W.Step.Confirmation.InputErrors.CardExpiry.Invalid));var l=(1===o[1].length?"0":"")+o[1]+(2===o[2].length?o[2]:o[2].substr(2)),i={CVV:a["security-code"],Expiry:l,Name:a["card-name"],Number:a["credit-card"],Type:g.state.cardType};e({success:!0,message:"Payment successful",data:{PaymentCard:i}})}),(function(e){_(e),t(e)})):console.error("VGS not on element, problem has occurred")}))}}}));var k=(0,i.useRef)(null),Z=(null!==(n=null==r?void 0:r.paymentCardTypes)&&void 0!==n?n:[]).map((function(e){return et.w[e]?{name:et.w[e],status:!1}:null})).filter((function(e){return e}));return i.createElement("div",null,["credit-card","card-name","expiration-date","security-code"].map((function(e){var t=l[e];return i.createElement(x.Z,{open:!!t,key:e},i.createElement("div",{className:"u-flex"},i.createElement(F.ZP,{type:F.NK.Danger,icon:P.Tu.Error},i.createElement(w.ZP,{type:w.yG.Small},t))))})),i.createElement("div",{className:"u-marg-bottom"},i.createElement(tt,{isCurrent:function(e){var t;return null!==g.state.cardType&&(null===(t=Z[e])||void 0===t?void 0:t.name)===g.state.cardType},isDefault:function(e){return null===g.state.cardType}})),i.createElement("form",{ref:k},i.createElement(ut.Z,{dimensions:"2/2"},i.createElement("div",{className:g.getClasses(),ref:g.ref}),i.createElement(ut.Z,{dimensions:"2/2"},i.createElement("div",{className:h.getClasses(),ref:h.ref}),i.createElement("div",{className:b.getClasses(),ref:b.ref}))),i.createElement(ut.Z,{dimensions:"1"},i.createElement("div",{className:y.getClasses(),ref:y.ref}))))})),dt=function(){var e,t,n,r=(0,C.WP)().hotel,a=(0,i.useRef)(null);return{name:"VGS",isAvailable:!(null!=r&&r.cardProcessor&&r.cardProcessor!==re.EHotelCardProcessor.Passthrough||null==r||null===(e=r.paymentMethods)||void 0===e||!e.includes(re.EBookingPaymentMethod.Card)),isExclusive:!1,requireBookingPlaced:!1,bookingPaymentMethod:re.EBookingPaymentMethod.Card,onConfirm:(n=(0,ee.Z)(ne().mark((function e(){var t,n;return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,null===(t=a.current)||void 0===t?void 0:t.submitPayment();case 2:if(!(n=e.sent)){e.next=5;break}return e.abrupt("return",n);case 5:return e.abrupt("return",{success:!1,retryPayment:!1,message:"Something has gone wrong. Failed to get payment infromation details."});case 6:case"end":return e.stop()}}),e)}))),function(){return n.apply(this,arguments)}),getBookingPaymentRequestObject:(t=(0,ee.Z)(ne().mark((function e(){return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",{Method:re.EBookingPaymentMethod.Card});case 1:case"end":return e.stop()}}),e)}))),function(){return t.apply(this,arguments)}),renderInput:function(){return i.createElement(ot,{active:!0})},renderPaymentInput:function(){return i.createElement(ct,{ref:a})}}},mt=n(22566),pt=n(57133),ft=n(15891),vt=n(71657),gt=function(e){var t=e.errorData,n=e.onClose,r=e.isLoading;return i.createElement(D.Z,{open:!!t,size:D.g.Small,alignCenter:!0,onClose:n},i.createElement("div",{className:"u-pad--heavy-plus"},i.createElement("div",{className:"u-flex justify-content-center u-marg-bottom"},i.createElement(P.ZP,{icon:P.Tu.Error,size:"85px",color:B.Il.Accent})),i.createElement("div",{className:"u-marg-bottom--heavy"},i.createElement(p.Z,{align:nt.P.Center,size:"larger",bold:!0},"Apologies ",i.createElement("br",null),"for the inconvenience.")),i.createElement("div",{className:"u-marg-bottom--heavy"},i.createElement("div",{className:"u-marg-bottom--heavy"},i.createElement(w.ZP,{type:w.yG.Body,align:nt.P.Center},null==t?void 0:t.publicMessage)),!(null!=t&&t.isPaymentTaken)&&i.createElement(w.ZP,{type:w.yG.Small,color:B.Il.Grey,align:nt.P.Center},"* No payment has been taken")),i.createElement("div",{className:"u-flex justify-content-center"},i.createElement(R.Z,{icon:P.Tu.Close,stopIconAnimation:!0,onClick:n,wide:!0,isLoading:e.isLoading,disabled:r},"Reload"),(null==t?void 0:t.canRetryPayment)&&i.createElement(R.Z,{className:"u-marg-left",primary:!0,filled:!0,icon:P.Tu.ArrowRight2,stopIconAnimation:!0,iconPosition:"right",wide:!0,onClick:e.onRetry,isLoading:e.isLoading,disabled:e.isLoading},"Retry"))))};function yt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function At(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?yt(Object(n),!0).forEach((function(t){(0,X.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):yt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Ct=pe.Provider,ht=function(e){var t=e.children,n=(0,i.useState)({differences:[],warnings:[]}),a=(0,A.Z)(n,2),o=a[0],l=a[1],s=Ye(),c=s.queryPaymentMethod,m=s.queryRoomstayId,p=s.queryPlanpayCheckoutId,f=s.returnFromPayment,v=s.success,g=(0,i.useContext)(r.g7),y=(0,r.ZS)().roomstayMember,h=(0,i.useState)(),b=(0,A.Z)(h,2),E=b[0],P=b[1],k=(0,i.useState)(!1),Z=(0,A.Z)(k,2),S=Z[0],I=Z[1],B=(0,i.useState)(!1),N=(0,A.Z)(B,2),W=N[0],M=N[1],D=(0,i.useState)(""),q=(0,A.Z)(D,2),G=q[0],T=q[1],O=(0,i.useState)(!1),U=(0,A.Z)(O,2),j=U[0],H=U[1],z=(0,i.useState)(!1),Q=(0,A.Z)(z,2),V=Q[0],Y=Q[1],J=(0,pt.t)(),$=J.isExternalMemberHotel,K=J.memberNumber,X=(0,i.useState)(),te=(0,A.Z)(X,2),de=te[0],pe=te[1],fe=(0,i.useState)(!1),ye=(0,A.Z)(fe,2),Ae=ye[0],Ce=ye[1],he=(0,i.useState)(!1),be=(0,A.Z)(he,2),Ee=be[0],xe=be[1],Pe=(0,ue.cI)({mode:"onSubmit"}),ke=(0,i.useState)([]),Ze=(0,A.Z)(ke,2),Se=Ze[0],Ie=Ze[1],Be=(0,i.useState)([]),Ne=(0,A.Z)(Be,2),We=Ne[0],De=Ne[1],qe=(0,i.useContext)(r.hy),Ge=qe.getAllValidRows(),Te=qe.basketAddonRows,Oe=(0,i.useMemo)((function(){return g.sessionProvider.getSession()}),[qe.reservationData]),Fe=(0,C.WP)().hotel,Ue=(0,u.$)().t,Le=(0,C.zX)().raise,je=[lt(),we(),dt(),it(),Je(),Re(),Me()],He=(0,mt.J)(),ze=!!p&&!!m&&!!c,Qe=!(!f||!v&&ze||!m),Ve=Pe.watch("paymentMethod"),$e=(0,i.useRef)(!0);(0,i.useEffect)((function(){return function(){$e.current=!1}}),[]),(0,i.useEffect)((function(){var e,t;P(null===(e=g.engine.getSessionProvider().getSession())||void 0===e?void 0:e.source);var n=null===(t=qe.reservationData)||void 0===t?void 0:t.roomstayId;Qe&&!(!m||n&&m!==n)&&(null==ot||ot(qe.reservationData,"Please wait... Finalising your reservation")),ze&&m===n&&(null==ot||ot(qe.reservationData,"Please wait... Finalising your reservation"))}),[]),(0,i.useEffect)((function(){null!=Fe&&Fe.requireDeposit&&""!==qe.quoteQueryID&&qe.quoteOrPencilReservation((function(){return $e.current}))}),[null==Fe?void 0:Fe.requireDeposit,qe.quoteQueryID]),(0,i.useEffect)((function(){var e=je.filter((function(e){return e.isAvailable})),t="";null!=y&&y.cards&&e.some((function(e){return"VGSMember"===e.name}))&&(t="VGSMember"),!t&&e.length>0&&(t=e[0].name),Pe.setValue("paymentMethod",t),De(e)}),[Fe]),(0,i.useEffect)((function(){var e=We.find((function(e){return e.name===Ve}));e&&e.requireBookingPlaced&&!e.isExclusive&&ht()}),[Ve]);var Ke=(0,i.useMemo)((function(){return We.find((function(e){return e.isExclusive}))}),[We]),Xe=function(e){return e.userProfiles.map((function(t){var n=t.CountryCode;if(!n){var r=ft.T.find((function(e){return e.label===t.Country}));n=null==r?void 0:r.code}return{title:t.Title,firstName:t.Forename,lastName:t.Surname,phone:t.Phone.replace(" ",""),email:t.Email,address:{line1:t.Address,city:t.City,postalCode:t.PostCode,state:t.State,country:t.Country,countryId:t.CountryId,countryCode:n},marketingOptIn:e.marketingOptIn,auxInputs:t.AuxInputs}}))},et=function(e){var t=Se.every((function(t){return t().validate(e)}));return void 0===t||t},tt=function(){var e=(0,ee.Z)(ne().mark((function e(t){var n;return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=[],!t.reservations){e.next=5;break}t.reservations.forEach((function(e,t){var r=qe.currentBasketRows[t].checkDiffFromReservation(e);r&&n.push(r)})),e.next=7;break;case 5:throw oe.n_({level:le.z.Error,message:"No reservation data: "+JSON.stringify(t)}),new Error("The reservation could not be completed due to an unexpected issue, please try again");case 7:if(!(n.length||t.warnings&&t.warnings.length)){e.next=9;break}return e.abrupt("return",{differences:n,warnings:t.warnings});case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),nt=function(){var e=(0,ee.Z)(ne().mark((function e(t,n){var r,a,o,l;return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(Le(new ve.m(t,qe.currentBasketRows,Fe)),n!==re.EBookingPaymentMethod.Planpay){e.next=3;break}return e.abrupt("return");case 3:if((null==Fe?void 0:Fe.cardProcessor)!==re.EHotelCardProcessor.Passthrough){e.next=8;break}return e.next=6,null==ot?void 0:ot(t);case 6:e.next=9;break;case 8:null!==(r=t.payment)&&void 0!==r&&null!==(a=r.external)&&void 0!==a&&a.redirectUrl&&st(null===(o=t.payment)||void 0===o||null===(l=o.external)||void 0===l?void 0:l.redirectUrl);case 9:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),rt=function(){var e=(0,ee.Z)(ne().mark((function e(t,n){var r,a,o,i,u,s;return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return L.ZP.instance.sendInteraction("Complete Booking",L.s_.BUTTON,L._J.GUEST_DETAILS),I(!0),a=Xe(t),e.prev=3,o=null!=Fe&&Fe.captureChildAge?t.userProfiles.flatMap((function(e,t){var n;return(null==e||null===(n=e.CaptureChildAge)||void 0===n?void 0:n.map((function(e,n){return"Room ".concat(t+1," - Child: ").concat(n+1," Age: ").concat(e)})))||[]})):[],i=t.comments,u=o.length>0?"".concat(i,"\n").concat(o.join("\n")):i,e.next=9,_.Z.Reservation.bookNow(Ge,a,n,Te,u||"",null==Fe?void 0:Fe.hotelID,g.sessionProvider.getCurrentSessionID().toString(),qe.pencilId,void 0,void 0,void 0,$?K:void 0);case 9:return r=e.sent,e.next=12,qe.booked(r,{userProfiles:a,payment:n,comments:u||""});case 12:return e.next=14,tt(r);case 14:if(!(s=e.sent)){e.next=21;break}return I(!1),l(s),e.abrupt("return",null);case 21:return e.next=23,nt(r,n.Method);case 23:return e.abrupt("return",r);case 24:e.next=29;break;case 26:e.prev=26,e.t0=e.catch(3),pe(e.t0);case 29:return e.prev=29,I(!1),e.finish(29);case 32:return e.abrupt("return",null);case 33:case"end":return e.stop()}}),e,null,[[3,26,29,32]])})));return function(t,n){return e.apply(this,arguments)}}(),at=function(e){var t;return null==e||null===(t=e.reservations)||void 0===t?void 0:t.map((function(e){return e.reservationNumber}))},ot=function(){var e=(0,ee.Z)(ne().mark((function e(t,n){var a,o;return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,n&&T(n),I(!0),!t){e.next=22;break}if(!(a=at(t)).length){e.next=20;break}return e.prev=6,e.next=9,_.Z.Reservation.commit(a,t.itineraryNumber,null==Fe?void 0:Fe.hotelID,p||void 0);case 9:o=e.sent;try{L.ZP.instance.sendReservationConfirmed(qe.getAllValidRows(),qe.basketAddonRows,o)}catch(e){oe.Tb("Failed to read reservations from GTM code: "+JSON.stringify(e))}qe.checkedOut(o),Le(new ge.C(t,qe.currentBasketRows,Fe)),e.next=18;break;case 15:e.prev=15,e.t0=e.catch(6),pe(e.t0);case 18:e.next=22;break;case 20:r.qL.add({message:Ue(d.W.Step.Confirmation.UnexpectedErrorOnCommittingReservation)}),oe.Tb("No reservation IDs found when attempting to commit: "+JSON.stringify(t));case 22:e.next=28;break;case 24:e.prev=24,e.t1=e.catch(0),console.error(e.t1),oe.Tb(e.t1);case 28:I(!1);case 29:case"end":return e.stop()}}),e,null,[[0,24],[6,15]])})));return function(t,n){return e.apply(this,arguments)}}(),ut=function(){var e=(0,ee.Z)(ne().mark((function e(){var t;return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(qe.reservationData){e.next=2;break}return e.abrupt("return");case 2:if(e.prev=2,!(t=at(qe.reservationData)).length){e.next=11;break}return I(!0),e.next=8,_.Z.Reservation.rollback(t,qe.reservationData.itineraryNumber,null==Fe?void 0:Fe.hotelID);case 8:Le(new _e(qe.reservationData)),e.next=12;break;case 11:oe.Tb("No reservation IDs found when attempting to rollback: "+JSON.stringify(qe.reservationData));case 12:e.next=18;break;case 14:e.prev=14,e.t0=e.catch(2),console.log("Failed to rollback reservations"),oe.Tb(e.t0);case 18:return e.prev=18,qe.rollback(),I(!1),e.finish(18);case 22:case"end":return e.stop()}}),e,null,[[2,14,18,22]])})));return function(){return e.apply(this,arguments)}}(),st=function(e,t){I(!0),t&&T(t),window.location.href=e},ct=function(){var e=(0,ee.Z)(ne().mark((function e(){var t,n,r,a,o;return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(Ce(!0),I(!0),n=null==Oe?void 0:Oe.reservationRequest,r=null==Oe||null===(t=Oe.reservation)||void 0===t?void 0:t.roomstayId,n&&r){e.next=7;break}return console.error("No reservation request or roomstay ID found in session",{resRequest:n,roomstayId:r}),e.abrupt("return",null);case 7:return e.prev=7,e.next=10,_.Z.Reservation.bookNow(Ge,n.userProfiles,n.payment,Te,"",null==Fe?void 0:Fe.hotelID,g.sessionProvider.getCurrentSessionID().toString(),qe.pencilId,void 0,!0,r,$?K:void 0);case 10:return a=e.sent,e.next=13,qe.booked(a);case 13:return e.next=15,tt(a);case 15:if(!e.sent){e.next=20;break}I(!1),e.next=22;break;case 20:return e.next=22,nt(a,null===(o=n.payment)||void 0===o?void 0:o.Method);case 22:e.next=27;break;case 24:e.prev=24,e.t0=e.catch(7),pe(e.t0);case 27:return e.prev=27,I(!1),Ce(!1),H(!1),pe(void 0),e.finish(27);case 33:case"end":return e.stop()}}),e,null,[[7,24,27,33]])})));return function(){return e.apply(this,arguments)}}(),yt=function(){var e=(0,ee.Z)(ne().mark((function e(){var t;return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:Ce(!0),t=new URLSearchParams(window.location.search),window.history.replaceState({},"","".concat(window.location.pathname,"?").concat(t)),window.location.reload();case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),ht=function(){var e=(0,ee.Z)(ne().mark((function e(){var t,n,r,a,o,l;return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,new Promise(function(){var e=(0,ee.Z)(ne().mark((function e(t){var n,r,a;return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,et();case 2:n=e.sent,Y(!n),r=function(e){t(n?e:null)},a=function(){t(null)},Pe.handleSubmit(r,a)();case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}());case 2:if(t=e.sent){e.next=5;break}return e.abrupt("return");case 5:if(!Ke){e.next=33;break}if(!Ee){e.next=20;break}return M(!0),e.next=10,null===(n=Ke.onConfirm)||void 0===n?void 0:n.call(Ke);case 10:if(r=e.sent,M(!1),!r.success){e.next=17;break}return e.next=15,ot(qe.reservationData,"Please wait... Finalising your reservation");case 15:e.next=18;break;case 17:H(!0);case 18:e.next=31;break;case 20:if(!Ke.requireBookingPlaced){e.next=28;break}return e.t0=rt,e.t1=t,e.next=25,null==Ke?void 0:Ke.getBookingPaymentRequestObject();case 25:return e.t2=e.sent,e.next=28,(0,e.t0)(e.t1,e.t2);case 28:return xe(!0),e.next=31,null===(a=Ke.onSelect)||void 0===a?void 0:a.call(Ke);case 31:e.next=67;break;case 33:if(o=We.find((function(e){return e.name===t.paymentMethod}))){e.next=37;break}return console.error("No payment mode found for selected payment method",{paymentMethod:t.paymentMethod,availablePaymentHandlers:We}),e.abrupt("return");case 37:return e.prev=37,M(!0),e.next=41,o.onConfirm();case 41:if(l=e.sent,M(!1),!l.success){e.next=59;break}return e.t3=rt,e.t4=t,e.t5=At,e.t6=At,e.t7={},e.next=51,null==o?void 0:o.getBookingPaymentRequestObject();case 51:return e.t8=e.sent,e.t9=(0,e.t6)(e.t7,e.t8),e.t10=l.data,e.t11=(0,e.t5)(e.t9,e.t10),e.next=57,(0,e.t3)(e.t4,e.t11);case 57:e.next=59;break;case 59:e.next=64;break;case 61:e.prev=61,e.t12=e.catch(37),console.error(e.t12);case 64:return e.prev=64,M(!1),e.finish(64);case 67:case"end":return e.stop()}}),e,null,[[37,61,64,67]])})));return function(){return e.apply(this,arguments)}}();return i.createElement(ue.RV,Pe,i.createElement(Ct,{value:{onContinueClick:ht,bookingSource:E,commitReservation:ot,rollbackReservation:ut,redirectOut:st,setLoadingStatus:T,errorChecks:Se,addErrorChecks:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];Ie((function(e){return(0,ie.unionBy)(t,e,(function(e){return e().name}))}))},isLoading:S,isBackFromPlanpay:ze,isBackFromExternalPayment:Qe,isInPaymentMode:Ee,availablePaymentHandlers:We}},S&&i.createElement(ce.E,{isFullscreen:!0,label:G}),i.createElement(gt,{onRetry:ct,onClose:yt,errorData:de,isLoading:Ae}),i.createElement(x.Z,{open:V},i.createElement("div",{className:"u-pad-bottom"},i.createElement(F.ZP,{icon:ae.Tu.Error,type:F.NK.Danger},i.createElement(w.ZP,{type:w.yG.Small},Ue(d.W.Step.Confirmation.CustomInputFieldError))))),t,i.createElement(me,{differences:o.differences,warnings:o.warnings,isLoading:S,onClose:(0,ee.Z)(ne().mark((function e(){return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,null==ut?void 0:ut();case 2:He((0,vt.Z)().getStepUrl());case 3:case"end":return e.stop()}}),e)}))),onProceed:(0,ee.Z)(ne().mark((function e(){var t,n,a;return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=null==Oe?void 0:Oe.reservationRequest,n=qe.reservationData,e.prev=2,!t||!n){e.next=9;break}return e.next=6,nt(n,null==t||null===(a=t.payment)||void 0===a?void 0:a.Method);case 6:l({differences:[],warnings:[]}),e.next=11;break;case 9:r.qL.add({message:Ue(d.W.Step.Confirmation.UnexpectedErrorOnCommittingReservation)}),oe.Tb("No reservation request or response found when attempting to commit: "+JSON.stringify({resRequest:t,resResponse:n}));case 11:e.next=17;break;case 13:e.prev=13,e.t0=e.catch(2),console.error("Failed to commit reservation",e.t0),oe.Tb(e.t0);case 17:case"end":return e.stop()}}),e,null,[[2,13]])})))}),i.createElement("div",{className:"u-flex u-marg-top--heavy justify-content-end"},Ke&&Ee&&i.createElement("div",{className:"u-marg-right d-flex"},i.createElement(R.Z,{icon:ae.Tu.ArrowLeft,isText:!0,onClick:function(){xe(!1)}},Ue(d.W.Step.Confirmation.EditDetails))),j&&i.createElement("div",{className:"u-marg-right d-flex"},i.createElement(R.Z,{icon:ae.Tu.Edit,stopIconAnimation:!0,primary:!0,filled:!0,onClick:ct,isLoading:S},Ue(d.W.Step.Confirmation.RetryPayment))),(!(null!=Ke&&Ke.hasCustomConfirmButton)||!Ee)&&i.createElement(se.Z,{disabled:Ve===re.EBookingPaymentMethod.Planpay||S||W,text:Ue(Ke&&!Ee?d.W.Step.Confirmation.ContinueToPayment:d.W.Step.Confirmation.ConfirmReservation),isLoading:S,onClick:ht}))))},bt=n(25112);function Et(){var e=(0,u.$)().t;return i.createElement(bt.Z,{title:e(d.W.Step.Confirmation.SSLSecure)},i.createElement("img",{src:Se.Z.getAssetUrl()+"assets/img/ssl-secure-connection.png"}))}var xt=n(53653),_t=n(41432),Pt=n(45987),kt=n(89089),wt=n(57970),Zt=n.n(wt),St=function(e,t){var n,r=e.checked,a=e.onChange,o=e.disabled,l=e.label,u=e.renderContent,s=e.className,c=e.headerRef,d=e.style;return i.createElement("div",{className:S()(Zt().root,s,(n={},(0,X.Z)(n,Zt().disabled,o),(0,X.Z)(n,Zt().checked,r),n)),onClick:a,ref:t,style:d},i.createElement("div",{className:Zt().header,ref:c},i.createElement("div",{className:Zt().design}),i.createElement("div",{className:Zt().text},l)),u&&r&&i.createElement(x.Z,{open:!0},i.createElement("div",{className:Zt().content},u())))},It=(0,i.forwardRef)(St),Bt=n(9502),Nt=n.n(Bt),Rt=["renderContent"],Wt=function(e){var t=e.option,n=e.value,r=e.onChange,a=e.renderChildrenContent,o=e.isSubOption,l=t.options,u=!(null==l||!l.length),s=(0,i.useState)(null),c=(0,A.Z)(s,2),d=c[0],m=c[1],p=(0,i.useState)(!1),f=(0,A.Z)(p,2),v=f[0],g=f[1],y=u&&n&&l.find((function(e){return e.value===n}))||t,C=i.createElement(It,{headerRef:m,className:Nt().item,style:o?void 0:{paddingRight:"35px"},key:null==y?void 0:y.value,checked:!(null!=y&&y.disabled)&&(null==y?void 0:y.value)===n,onChange:function(){null!=y&&y.disabled||(u?g(!v):null!=y&&y.value&&(null==y?void 0:y.value)!==n&&(null==r||r(y.value,t.value)))},label:null==y?void 0:y.label,disabled:null==y?void 0:y.disabled,renderContent:null==y?void 0:y.renderContent});return null!=y&&y.disabled&&null!=y&&y.disabledReason?i.createElement(bt.Z,{key:null==y?void 0:y.value,wrapperClasses:Nt().wrapper,title:null==y?void 0:y.disabledReason},C):i.createElement(i.Fragment,null,i.createElement("div",{key:null==y?void 0:y.value,className:Nt().wrapper},C,!o&&i.createElement("div",{className:Nt().childrenIndicator,style:!l&&(null==y?void 0:y.value)===n||l&&v?{transform:"scaleY(-1) translateY(2px)"}:void 0},i.createElement(P.ZP,{size:"24px",icon:P.Tu.Dropdown}))),l&&i.createElement(kt.a,{onClose:function(){return g(!1)},className:Nt().overlay,hideStyles:!0,containerClassName:"u-w-100",open:v,followElement:d||void 0,offset:[0,0],placement:"bottom-start"},i.createElement(Mt,{options:l.map((function(e){e.renderContent;var t=(0,Pt.Z)(e,Rt);return a?e:t})),onChange:function(e){null==r||r(t.value,e),g(!1)},value:n,isSubGroup:!0})))},Mt=function(e){var t=e.options,n=void 0===t?[]:t,r=e.value,a=e.onChange,o=e.renderChildrenContent,l=e.isSubGroup;return i.createElement("div",{className:Nt().root},n.map((function(e){return i.createElement(Wt,{key:e.value,option:e,value:r,onChange:a,renderChildrenContent:o,isSubOption:l})})))},Dt=Mt;function qt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Gt=function(){var e,t=(0,ue.Gc)(),n=(0,i.useContext)(pe).availablePaymentHandlers,r=[],a=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return qt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?qt(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,l=!0,i=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return l=e.done,e},e:function(e){i=!0,o=e},f:function(){try{l||null==n.return||n.return()}finally{if(i)throw o}}}}(n);try{for(a.s();!(e=a.n()).done;){var o=e.value;o.isExclusive||o.isAvailable&&r.push({value:o.name,label:o.renderInput?o.renderInput():i.createElement(i.Fragment,null,"Payment Handler"),disabled:o.isDisabled||o.requireFormFilled&&!t.formState.isValid,disabledReason:o.disabledReason,options:o.subOptions,renderContent:o.renderPaymentInput})}}catch(e){a.e(e)}finally{a.f()}return i.createElement(ue.Qr,{control:t.control,name:"paymentMethod",render:function(e){var t=e.field,a=t.onChange,o=t.value;return i.createElement(i.Fragment,null,i.createElement("div",null,i.createElement(Dt,{options:r,value:o,onChange:function(e,t){var r,o=n.find((function(t){return t.name===e}));null==o||null===(r=o.onSubOptionChange)||void 0===r||r.call(o,t),a(e)}})))}})},Tt=n(50361),Ot=n.n(Tt),Ft=n(69024),Ut=n(66604),Lt=n(14590),jt=n(65762),Ht=n(95494),zt=function(e){return e.Title="Title",e.Forename="Forename",e.Surname="Surname",e.Email="Email",e.Phone="Phone",e.Address="Address",e.City="City",e.PostCode="PostCode",e.State="State",e.Country="Country",e.CountryId="CountryId",e.CountryCode="CountryCode",e}({}),Qt=function(e){return e.AuxInputs="AuxInputs",e}({}),Vt=n(61248),Yt=n(48340),Jt=n(43261),$t=n(16431),Kt=["ref","onChange"],Xt=["ref"],en=["ref"],tn=["ref"],nn=function(e){var t,n,r,a,o=e.hotel,l=e.numberOfChildrens,u=e.control,s=e.roomIndex;if(null==o||!o.captureChildAge||0===l)return i.createElement(i.Fragment,null);for(var c=(0,ue.Gc)().formState.errors,d=[],m=(null==o||null===(t=o.childConfiguration)||void 0===t||null===(n=t.childRange)||void 0===n?void 0:n.min)||0,p=(null==o||null===(r=o.childConfiguration)||void 0===r||null===(a=r.childRange)||void 0===a?void 0:a.max)||0,f=m;f<=p;f++)d.push({label:"".concat(f),value:"".concat(f)});var v="userProfiles[".concat(s,"].").concat((0,re.nameof)("CaptureChildAge")),g=Array.from({length:l},(function(e,t){return t})).map((function(e){return{name:"".concat(v,"[").concat(e,"]"),id:"".concat(v,"[").concat(e,"].id"),label:"Child ".concat(e+1," Age"),childIndex:e}})),A=function(e){var t,n,r;if(c.userProfiles)return null!==(t=c.userProfiles)&&void 0!==t&&null!==(n=t[s])&&void 0!==n&&null!==(r=n.CaptureChildAge)&&void 0!==r&&r[e]?"error":"success"},C=function(e,t){for(var n=[],r=0;r<e.length;r+=3)n.push(e.slice(r,r+3));return n}(g);return i.createElement("div",{className:"u-marg-top"},C.map((function(e,t){return i.createElement(ut.Z,{dimensions:"1/1/1",key:"InputGroup-".concat(t)},e.map((function(e){var t=e.id,n=e.name,r=e.label,a=e.childIndex;return i.createElement(ue.Qr,{key:t,control:u,name:n,rules:{required:!0},render:function(e){var t=e.field,n=(t.ref,(0,Pt.Z)(t,tn));return i.createElement(i.Fragment,null,i.createElement("div",{className:"u-marg-bottom--light"},i.createElement(w.ZP,{type:w.yG.Small},i.createElement("strong",null,r))),i.createElement(Lt.JD,(0,y.Z)({keyName:"value",labelName:"label",options:d,placeholder:"Please Select *"},n,{validationStatus:A(a)})))}})})))})))},rn=function(){var e=(0,ue.Gc)(),t=e.register,n=e.formState,a=e.control,o=e.watch,l=e.getValues,s=e.setValue,c=(0,i.useContext)(r.hy),m=c.getAllValidRows(),f=c.basketAddonRows,v=(0,C.WP)().hotel,g=(0,ue.Dq)({control:a,name:"userProfiles",rules:{required:!1}}),h=g.update,b=g.fields,E=o(["copyCheckBox","paymentMethod"]),_=(0,A.Z)(E,2),k=_[0],Z=_[1],S=n.errors,I=(0,u.$)().t,N=(0,i.useContext)(r.P0).roomstayMember,R=(0,Ht.X)().showChildren;(0,i.useEffect)((function(){var e,t;null===(e=S.userProfiles)||void 0===e||null===(t=e.forEach)||void 0===t||t.call(e,(function(e,t){var n;null!==(n=S.userProfiles)&&void 0!==n&&n[t]&&(D[t]=!0)})),q(D.slice(0))}),[S.userProfiles,k]),(0,i.useEffect)((function(){var e=function(e){return 0===e&&arguments.length>1&&void 0!==arguments[1]?arguments[1]:""},t=m.map((function(t,n){var r,a,o,l,i,u,s,c,d,m,p,f,v,g,y,A,C=t.checkoutDefaults,h=null==C?void 0:C.address;return A={},(0,X.Z)(A,zt.Title,""),(0,X.Z)(A,zt.Forename,e(n,null!==(r=null==C?void 0:C.firstName)&&void 0!==r?r:null==N?void 0:N.forename)),(0,X.Z)(A,zt.Surname,e(n,null!==(a=null==C?void 0:C.lastName)&&void 0!==a?a:null==N?void 0:N.surname)),(0,X.Z)(A,zt.Email,e(n,null!==(o=null==C?void 0:C.email)&&void 0!==o?o:null==N?void 0:N.email)),(0,X.Z)(A,zt.Phone,e(n,null!==(l=null==C?void 0:C.phone)&&void 0!==l?l:null==N?void 0:N.phoneNumber)),(0,X.Z)(A,zt.Address,e(n,null!==(i=null==h?void 0:h.line1)&&void 0!==i?i:null==N||null===(u=N.address)||void 0===u?void 0:u.address)),(0,X.Z)(A,zt.City,e(n,null!==(s=null==h?void 0:h.city)&&void 0!==s?s:null==N||null===(c=N.address)||void 0===c?void 0:c.city)),(0,X.Z)(A,zt.PostCode,e(n,null!==(d=null==h?void 0:h.postalCode)&&void 0!==d?d:null==N||null===(m=N.address)||void 0===m?void 0:m.zip)),(0,X.Z)(A,zt.State,e(n,null!==(p=null==h?void 0:h.state)&&void 0!==p?p:null==N||null===(f=N.address)||void 0===f?void 0:f.state)),(0,X.Z)(A,zt.Country,e(n,null!==(v=null==h?void 0:h.country)&&void 0!==v?v:null==N||null===(g=N.address)||void 0===g?void 0:g.country)),(0,X.Z)(A,zt.CountryId,e(n,null==h||null===(y=h.countryId)||void 0===y?void 0:y.toString())),(0,X.Z)(A,zt.CountryCode,e(n,null==h?void 0:h.countryCode)),(0,X.Z)(A,Qt.AuxInputs,t.auxiliaryFilter),A}));s("userProfiles",t),s("copyCheckBox",!!(null!=m&&m.length&&m.length>1))}),[N,null==m?void 0:m.length]);var W=(0,i.useState)(m.map((function(e,t){return 0===t}))),M=(0,A.Z)(W,2),D=M[0],q=M[1],G=function(e){var t=Ot()(l("userProfiles.0")),n=Ot()(l("userProfiles.".concat(e)));return t[Qt.AuxInputs]=n.AuxInputs,t},T=function(e,t){return function(e){L.ZP.instance.sendInteraction(t,L.s_.FORM_FIELD,L._J.GUEST_DETAILS)}};return(0,i.useEffect)((function(){k&&b.forEach((function(e,t){if(0!==t){var n=G(t);h(t,n)}}))}),[k]),(0,i.useEffect)((function(){var e=o((function(e,t){var n=t.name;"change"===t.type&&null!=n&&n.includes("userProfiles")&&"0"===n.split(".")[1]&&e.copyCheckBox&&b.map((function(e,t){if(0!==t){var n=G(t);h(t,n)}}))})).unsubscribe;return function(){e()}}),[b]),(0,i.useEffect)((function(){L.ZP.instance.sendCheckoutView(m,f)}),[]),i.createElement(i.Fragment,null,b.map((function(e,r){for(var o,l,u=function(e){return function(e,t){return"userProfiles.".concat(t,".").concat(e)}(e,r)},c=function(e){var t,n,a;if(S.userProfiles&&!(k&&r>=1))return null!==(t=S.userProfiles[r])&&void 0!==t&&t[e]||null!==(n=S.userProfiles[r])&&void 0!==n&&null!==(a=n.AuxInputs)&&void 0!==a&&a[e.replace("AuxInputs.","")]?"error":"success"},f=m[r],g=f.getRoom(),A=f.getAuxiliaryFilter(),C=k&&r>=1||Z===re.EBookingPaymentMethod.Planpay,h=(null==v?void 0:v.stateFieldConfiguration)===re.EHotelStateFieldConfiguration.Optional||(null==v?void 0:v.stateFieldConfiguration)===re.EHotelStateFieldConfiguration.Required,E=(null==v?void 0:v.stateFieldConfiguration)===re.EHotelStateFieldConfiguration.Required,_=null==v||null===(o=v.roomGroups)||void 0===o?void 0:o.find((function(e){return e.id===g.roomGroupId})),N=[],W=function(){var e,t,n=G[M],r=null==_?void 0:_.filters[n],a=null==g||null===(e=g.auxiliaryValues)||void 0===e||null===(t=e[n])||void 0===t?void 0:t.map((function(e){return e.toString()}));if(null!=r&&r.requireInput&&a){var o=r.options.filter((function(e){if(a.includes(e.value.toString()))return e})),l="".concat((0,re.nameof)("AuxInputs"),".").concat(n);1===o.length?s(u(l),o[0].value):null!=A&&A[n]&&s(u(l),A[n]),N.push({id:l,name:r.name,label:r.name,options:o.map((function(e){return{label:e.label,value:e.value}}))})}},M=0,G=Object.keys(null!==(O=null==_?void 0:_.filters)&&void 0!==O?O:{});M<G.length;M++){var O;W()}var U,L,j,H=i.createElement(ue.Qr,{control:a,name:u(zt.Country),rules:{required:{value:!0,message:I(d.W.Step.Confirmation.Inputs.Required,{field:I(d.W.Step.Confirmation.Inputs.Country)})}},render:function(e){var t=e.field,n=(t.ref,t.onChange),r=(0,Pt.Z)(t,Kt);return i.createElement(jt.Z,(0,y.Z)({disabled:C,validationStatus:c(zt.Country),onChange:function(e){n(e),T(u(zt.Country),"Country - Address")(e)},onChangeId:function(e){s(u(zt.CountryId),e)},onChangeCode:function(e){s(u(zt.CountryCode),e)}},r))}});return i.createElement("div",{key:e.id},i.createElement("div",{className:0===r?"":"u-marg-bottom--heavy"},i.createElement("div",{className:"u-marg-bottom",onClick:function(){0!==r&&function(e,t){D.splice(e,1,t),q(D.slice(0))}(r,!D[r])}},i.createElement("div",{className:"u-flex u-marg-bottom align-items-center"},i.createElement(p.Z,{bold:!0},I(d.W.Misc.Room)," ",r+1),0!==r&&i.createElement(P.ZP,{icon:D[r]?P.Tu.ArrowDown2:P.Tu.ArrowUp2,color:B.Il.Grey})),f&&i.createElement("div",{className:"u-marg-bottom"},i.createElement(w.ZP,null,i.createElement("strong",{className:"u-block@l-"},f.getRoom().name)," for"," ",Jt.Z.pluralWithDictAndCount(f.getAdults(),d.W.Step.Date.Adult,I),R?i.createElement(i.Fragment,null,", ",Jt.Z.pluralWithDictAndCount(f.getChildren(),d.W.Step.Date.Child,I)):null,null!=v&&null!==(l=v.childConfiguration)&&void 0!==l&&l.supportInfants?i.createElement(i.Fragment,null,", ",Jt.Z.pluralWithDictAndCount(f.getInfants(),d.W.Step.Date.Infant,I)):null),i.createElement("div",{className:"step-one-status--dates u-flex justify-content-start"},i.createElement(w.ZP,{type:w.yG.Small,color:B.Il.Accent},i.createElement("strong",null,f.getStartDate().format("ddd, MMM D"))),i.createElement(P.ZP,{icon:P.Tu.ArrowRight2,size:"18px"}),i.createElement(w.ZP,{type:w.yG.Small,color:B.Il.Accent},i.createElement("strong",null,f.getEndDate().format("ddd, MMM D"))))),(U=r,(j=null===(L=S.userProfiles)||void 0===L?void 0:L[U])&&n.submitCount>=1&&(0===U||!k)?Object.values(j).map((function(e,t){return i.createElement(x.Z,{key:t,open:!0},i.createElement("div",{className:"u-flex"},i.createElement(F.ZP,{icon:P.Tu.Error,type:F.NK.Danger,noMargin:t===Object.keys(j).length-1},i.createElement(w.ZP,{type:w.yG.Small},null==e?void 0:e.message))))})):null)),i.createElement("div",{className:"room-contact-details--row",style:{maxHeight:D[r]?void 0:0}},i.createElement("div",{className:"u-marg-bottom--heavy"},i.createElement("div",{className:"u-marg-bottom--light"},i.createElement(w.ZP,{type:w.yG.Small},i.createElement("strong",null,I(d.W.Step.Confirmation.ContactInfo)))),i.createElement(ut.Z,{dimensions:Yt.Z.isActive()?"1/2/2":"2/2"},Yt.Z.isActive()&&i.createElement(ue.Qr,{control:a,name:u(zt.Title),rules:{required:!0},render:function(e){var t=e.field,n=(t.ref,(0,Pt.Z)(t,Xt));return i.createElement(Lt.JD,(0,y.Z)({keyName:"value",labelName:"label",options:Yt.Z.getTitleOptions(),placeholder:I(d.W.Step.Confirmation.Inputs.Title)+" *",required:!0,validationStatus:c(zt.Title)},n))}}),i.createElement(_t.Z,(0,y.Z)({inputProps:{disabled:C},placeholder:I(d.W.Step.Confirmation.Inputs.Forename)+" *",wide:!0,required:!0,validationStatus:c(zt.Forename)},t(u(zt.Forename),{onChange:T(u(zt.Forename),"Forename - Contact Info"),required:{value:!0,message:I(d.W.Step.Confirmation.Inputs.Required,{field:I(d.W.Step.Confirmation.Inputs.Forename)})}}))),i.createElement(_t.Z,(0,y.Z)({inputProps:{disabled:C},placeholder:I(d.W.Step.Confirmation.Inputs.Surname)+" *",wide:!0,required:!0,validationStatus:c(zt.Surname)},t(u(zt.Surname),{onChange:T(u(zt.Surname),"Surname - Contact Info"),required:{value:!0,message:I(d.W.Step.Confirmation.Inputs.Required,{field:I(d.W.Step.Confirmation.Inputs.Surname)})}})))),i.createElement(ut.Z,{dimensions:"2/2"},i.createElement(_t.Z,(0,y.Z)({inputProps:{disabled:C},placeholder:I(d.W.Step.Confirmation.Inputs.Email)+" *",wide:!0,validationStatus:c(zt.Email),required:!0},t(u(zt.Email),{onChange:T(u(zt.Email),"Email - Contact Info"),required:{value:!0,message:I(d.W.Step.Confirmation.Inputs.Required,{field:I(d.W.Step.Confirmation.Inputs.Email)})},pattern:{value:$t.CU,message:I(d.W.Step.Confirmation.Inputs.InvalidEmail)}}))),Vt.Z.isActive()?i.createElement(ue.Qr,{control:a,name:u(zt.Phone),rules:{required:{value:!0,message:I(d.W.Step.Confirmation.Inputs.Required,{field:I(d.W.Step.Confirmation.Inputs.Phone)})},minLength:{value:5,message:"Phone number is required"},maxLength:{value:17,message:"Phone number is too long"},pattern:{value:/^[1-9]( |\d){1,15}$/g,message:"Incorrect phone number entered"}},render:function(e){var t=e.field;return i.createElement(Ut.Z,(0,y.Z)({disabled:C,validationStatus:c(zt.Phone)},t,{onChange:function(e){t.onChange(e),T(u(zt.Phone),"Phone - Contact Info")(e)}}))}}):i.createElement(_t.Z,(0,y.Z)({inputProps:{disabled:C},placeholder:I(d.W.Step.Confirmation.Inputs.Phone)+" *",wide:!0,required:!0,validationStatus:c(zt.Phone)},t(u(zt.Phone),{onChange:T(u(zt.Phone),"Phone - Contact Info"),required:{value:!0,message:I(d.W.Step.Confirmation.Inputs.Required,{field:I(d.W.Step.Confirmation.Inputs.Phone)})}}))))),i.createElement("div",{className:""},i.createElement("div",{className:"u-marg-bottom--light"},i.createElement(w.ZP,{type:w.yG.Small},i.createElement("strong",null,I(d.W.Step.Confirmation.Address)))),i.createElement(ut.Z,{dimensions:"3/1"},i.createElement(_t.Z,(0,y.Z)({inputProps:{disabled:C},placeholder:I(d.W.Step.Confirmation.Inputs.Address)+" *",wide:!0,required:!0,validationStatus:c(zt.Address)},t(u(zt.Address),{onChange:T(u(zt.Address),"Address - Address"),required:{value:!0,message:I(d.W.Step.Confirmation.Inputs.Required,{field:I(d.W.Step.Confirmation.Inputs.Address)})}}))),i.createElement(_t.Z,(0,y.Z)({inputProps:{disabled:C},placeholder:I(d.W.Step.Confirmation.Inputs.City)+" *",wide:!0,required:!0,validationStatus:c(zt.City)},t(u(zt.City),{onChange:T(u(zt.City),"City - Address"),required:{value:!0,message:I(d.W.Step.Confirmation.Inputs.Required,{field:I(d.W.Step.Confirmation.Inputs.City)})}})))),i.createElement(ut.Z,{dimensions:"2/2"},i.createElement(_t.Z,(0,y.Z)({inputProps:{disabled:C},placeholder:I(d.W.Step.Confirmation.Inputs.PostCode)+" *",wide:!0,required:!0,validationStatus:c(zt.PostCode)},t(u(zt.PostCode),{onChange:T(u(zt.PostCode),"PostCode - Address"),required:{value:!0,message:I(d.W.Step.Confirmation.Inputs.Required,{field:I(d.W.Step.Confirmation.Inputs.PostCode)})}}))),h?i.createElement(_t.Z,(0,y.Z)({inputProps:{disabled:C},placeholder:I(d.W.Step.Confirmation.Inputs.State)+(E?" *":""),wide:!0,required:E,validationStatus:c(zt.State)},t(u(zt.State),{onChange:T(u(zt.State),"State - Address"),required:{value:E,message:I(d.W.Step.Confirmation.Inputs.Required,{field:I(d.W.Step.Confirmation.Inputs.State)})}}))):H),h&&i.createElement(ut.Z,{dimensions:"1"},H))),N.length>0&&i.createElement("div",{className:"u-marg-top"},i.createElement("div",{className:"u-marg-top"},i.createElement(ut.Z,{dimensions:"2/2"},N.map((function(e){var t=e.options;return i.createElement(ue.Qr,{key:e.id,control:a,name:u(e.id),rules:{required:!0},render:function(n){var r=n.field,a=(r.ref,(0,Pt.Z)(r,en));return i.createElement(i.Fragment,null,i.createElement("div",{className:"u-marg-bottom--light"},i.createElement(w.ZP,{type:w.yG.Small},i.createElement("strong",null,e.name))),i.createElement(Lt.JD,(0,y.Z)({key:e.id,keyName:(0,re.nameof)("value"),labelName:(0,re.nameof)("label"),options:t,placeholder:"Please Select *",validationStatus:c(e.id)},a)))}})}))))),i.createElement(nn,{hotel:v,numberOfChildrens:Number(f.getChildren()),control:a,roomIndex:r})),b.length>1&&0===r?i.createElement("div",{className:"u-marg-bottom--heavy"},i.createElement(Ft.Z,(0,y.Z)({label:I(d.W.Step.Confirmation.ApplySameInfoToOtherRooms)},t("copyCheckBox")))):null)})))};function an(){var e=(0,u.$)().t,t=(0,C.WP)().hotel,n=(0,ue.Gc)(),r=n.register,a=n.formState;return i.createElement(i.Fragment,null,i.createElement("div",{className:"u-marg-bottom"},i.createElement(p.Z,{bold:!0},e(d.W.Step.Confirmation.Acknowledgement))),i.createElement("div",null,i.createElement(Ft.Z,(0,y.Z)({label:e(d.W.Step.Confirmation.EmailSpecialOffers)},r("marketingOptIn",{})))),i.createElement("div",{className:"u-marg-top--light"},i.createElement(Ft.Z,(0,y.Z)({},r("privacyPolicy",{required:!0}),{label:i.createElement("div",null,e(d.W.Step.Confirmation.IHaveUnderstoodPrivacyPolicy)," ",i.createElement("a",{style:{color:B.Il.Accent},className:"--underlined",href:null==t?void 0:t.privacyPolicyUrl,target:"_blank",rel:"noreferrer"},e(d.W.Step.Confirmation.PrivacyPolicy)))}))),i.createElement(x.Z,{open:!!a.errors.privacyPolicy},i.createElement("div",{className:"u-flex u-marg-top"},i.createElement(F.ZP,{type:F.NK.Danger,icon:P.Tu.Error},i.createElement(w.ZP,{type:w.yG.Small},e(d.W.Step.Confirmation.PrivacyPolicyError))))))}var on=n(92710),ln=n(56439);function un(){var e=(0,u.$)().t,t=(0,C.WP)().hotel;return i.createElement(i.Fragment,null,i.createElement("div",{className:"u-marg-bottom"},i.createElement(p.Z,{bold:!0},e(d.W.Step.Confirmation.Policies))),i.createElement("div",{className:"u-marg-bottom step-confirmation-policies-section"},i.createElement(ln.G,{hotel:t,wrapperClassName:"row",colClassName:"col-6 col-md-3",CheckInRender:function(){return i.createElement(w.ZP,{type:w.yG.Small},i.createElement("strong",null,e(d.W.Misc.CheckIn)))},CheckOutRender:function(){return i.createElement(w.ZP,{type:w.yG.Small},i.createElement("strong",null,e(d.W.Misc.CheckOut)))},LineRender:function(e){var t=e.line;return i.createElement(w.ZP,{type:w.yG.Small},t)}})))}function sn(){var e=(0,i.useContext)(r.hy),t=(0,u.$)().t,n=t(d.W.Misc.Room);return(0,i.useMemo)((function(){var r={},a=e.getAllValidRows(),o=0;return a.length>1?a.forEach((function(e){o++;var t=e.getRate(),n=r["".concat(null==t?void 0:t.cancelPolicyCode,"-").concat(null==t?void 0:t.guaranteeCode)];n||(n=r["".concat(null==t?void 0:t.cancelPolicyCode,"-").concat(null==t?void 0:t.guaranteeCode)]={rooms:[]}),n.rooms.push({index:o,room:e})})):r[0]={rooms:[{index:1,room:a[0]}]},i.createElement("div",{className:"u-marg-bottom step-confirmation-policy-block"},Object.values(r).map((function(e,r){var a,o,l,u=e.rooms[0];return i.createElement("div",{className:"u-marg-bottom--heavy",key:r},i.createElement("div",{className:"u-marg-bottom"},e.rooms.map((function(e){var t;return i.createElement(w.ZP,{key:e.index,type:w.yG.Small},i.createElement("strong",null,n," ",e.index)," ",e.room.getRoom().name," - ",null===(t=e.room.getRate())||void 0===t?void 0:t.name)}))),i.createElement("div",{className:"u-marg-bottom"},null!==(a=u.room.getRate())&&void 0!==a&&a.getGuaranteePolicy()?i.createElement(i.Fragment,null,i.createElement(w.ZP,{type:w.yG.Small,bold:!0,className:"u-marg-bottom--light"},t(d.W.Misc.GuaranteePolicy)),i.createElement(w.ZP,{type:w.yG.Small},i.createElement(M.R,{content:(null===(o=u.room.getRate())||void 0===o?void 0:o.getGuaranteePolicy())||""}))):null),i.createElement(w.ZP,{type:w.yG.Small,bold:!0,className:"u-marg-bottom--light"},t(d.W.Misc.CancellationPolicy)),i.createElement(w.ZP,{type:w.yG.Small},i.createElement(M.R,{content:(null===(l=u.room.getRate())||void 0===l?void 0:l.getCancellationPolicy())||""})))})))}),[e.currentBasketRows])}var cn=n(96222),dn=n(28016),mn=function(){var e=(0,i.useContext)(pe);return{exclusivePayment:(0,i.useMemo)((function(){return e.availablePaymentHandlers.find((function(e){return e.isAvailable&&e.isExclusive}))}),[e.availablePaymentHandlers])}};function pn(){var e,t=(0,u.$)().t,n=(0,ue.Gc)(),r=fe(),a=r.isInPaymentMode,o=r.isBackFromPlanpay,l=r.bookingSource,s=(0,mt.J)(),c=mn().exclusivePayment,m=function(){var e=(0,ee.Z)(ne().mark((function e(){return ne().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:s((0,vt.Z)().getStepUrl());case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),f=i.createElement(i.Fragment,null,i.createElement("div",{className:"u-marg-bottom--heavy"},i.createElement("div",{className:"u-marg-bottom--light"},i.createElement(p.Z,{bold:!0},t(d.W.Step.Confirmation.GuestDetails))),i.createElement(w.ZP,{type:w.yG.Small,color:B.Il.Success},i.createElement("strong",null,t(d.W.Step.Confirmation.AlmostDone,{required:"*"})))),i.createElement(rn,null),"inline"===l?i.createElement(F.ZP,{type:F.NK.Accent2,heavyPadding:!0},i.createElement("div",{className:"u-flex u-w-100 flex-wrap flex-xl-nowrap"},i.createElement("div",null,i.createElement(w.ZP,{color:B.Il.Accent,bold:!0},t(d.W.Step.Confirmation.WantMoreRooms)),i.createElement(w.ZP,{color:B.Il.Navy},t(d.W.Step.Confirmation.YouCanAddAndEditRooms))),i.createElement("div",{className:"d-flex align-items-center u-marg-top@xl-"},i.createElement(R.Z,{filled:!0,primary:!0,icon:P.Tu.Add,iconPosition:"left",onClick:m},t(d.W.Step.Confirmation.AddMoreRooms))))):i.createElement(i.Fragment,null),dn.Z.isActive()&&i.createElement(i.Fragment,null,i.createElement("div",{className:"u-marg-bottom--heavy"},i.createElement("div",{className:"u-marg-bottom"},i.createElement(p.Z,{bold:!0},t(d.W.Step.Confirmation.TravelAgent))),i.createElement("div",{className:"u-marg-bottom--light"},i.createElement(w.ZP,{type:w.yG.Small},i.createElement("strong",null,t(d.W.Step.Confirmation.Inputs.IATANumber)))),i.createElement("div",{className:"u-marg-bottom--light"},i.createElement(w.ZP,{type:w.yG.Small},t(d.W.Step.Confirmation.Inputs.IATANumberGuide))),i.createElement(_t.Z,(0,y.Z)({placeholder:t(d.W.Step.Confirmation.Inputs.IATANumber),wide:!0},n.register("IATANumber")))),i.createElement(v.Z,null)),i.createElement(on.h,null),i.createElement(v.Z,null),!c&&i.createElement(i.Fragment,null,i.createElement("div",{className:"u-marg-bottom--heavy"},i.createElement("div",{className:"u-marg-bottom"},i.createElement(p.Z,{bold:!0},t(d.W.Navigation.Menu.PaymentInformation))),i.createElement(Gt,null),i.createElement("div",{className:"u-marg-top u-flex align-items-center"},i.createElement("div",{className:"u-flex align-items-center justify-content-start"},i.createElement(P.ZP,{icon:P.Tu.Lock,color:B.Il.Success}),i.createElement("div",{className:"u-marg-left--light"},i.createElement(w.ZP,{type:w.yG.Small,color:B.Il.Success},i.createElement("strong",null,t(d.W.Step.Confirmation.Secured))))),i.createElement(Et,null))),i.createElement(v.Z,null)),i.createElement(un,null),i.createElement("div",{className:"u-pad-top--light u-marg-bottom"},i.createElement(sn,null)),cn.Z.isActive()&&i.createElement(i.Fragment,null,i.createElement(v.Z,null),i.createElement("div",null,i.createElement(an,null))));return i.createElement("form",null,o?i.createElement(k.Z,null):i.createElement(i.Fragment,null,i.createElement(x.Z,{open:!c||!a},f),c&&i.createElement(x.Z,{open:a},i.createElement(xt.Z,null),null===(e=c.renderPaymentInput)||void 0===e?void 0:e.call(c))))}function fn(){return i.createElement(ht,null,i.createElement(pn,null))}var vn=function(){var e=(0,i.useContext)(r.g7),t=(0,i.useContext)(r.aN).currentStep,n=(0,i.useContext)(r.hy).currentBasketRows,o=(0,s.TH)(),y=(0,u.$)().t,A=(0,Y.z)().raise;return(0,i.useEffect)((function(){var e=new a.z(n);A(e)}),[]),i.createElement("div",{className:"container rs-step-confirmation"},i.createElement(g.V,{step:"Confirmation"}),i.createElement(r.s$,null,i.createElement(Q.default,null),i.createElement(f.i5,null,i.createElement(f.mV,null,e.screenSize>$.Z.Medium&&i.createElement(i.Fragment,null,i.createElement(c.rU,{to:{pathname:K.Z.getPreviousStepUrl(t),search:o.search}},i.createElement(m.Z,null)),i.createElement("div",{className:"u-marg-top--light u-marg-bottom--heavy"},i.createElement(p.Z,{bold:!0},y(d.W.Navigation.Steps.Confirmation)))),i.createElement("div",{className:"u-marg-top@m-"},i.createElement(H.Z,null))),e.screenSize>$.Z.Medium&&i.createElement(f.f,null,i.createElement(z.Z,null))),i.createElement(v.Z,null),i.createElement(f.i5,null,i.createElement(f.mV,null,i.createElement("div",{className:"block-container"},!J.Z.isActive()&&i.createElement(O,null),i.createElement(fn,null))),e.screenSize>$.Z.Medium&&i.createElement(f.f,null,i.createElement(j,{endDate:l()().add(10,"minute")}),i.createElement(V.v,{showImages:!0})))))}},56374:function(e,t,n){(t=n(23645)(!1)).push([e.id,".adyen-checkout__status--error{padding:0}.adyen-checkout__status{border:none}",""]),e.exports=t},31693:function(e,t,n){(t=n(23645)(!0)).push([e.id,".AfterpayButton-module__root___eeNZH{width:100%}.AfterpayButton-module__root___eeNZH img{display:block}","",{version:3,sources:["AfterpayButton.module.scss"],names:[],mappings:"AAAA,qCAAM,UAAU,CAAC,yCAAU,aAAa",file:"AfterpayButton.module.scss",sourcesContent:[".root{width:100%}.root img{display:block}"]}]),t.locals={root:"AfterpayButton-module__root___eeNZH"},e.exports=t},12899:function(e,t,n){(t=n(23645)(!0)).push([e.id,".InlinePaymentCard-module__root___3JISW{width:24px;height:16px;background-size:contain;background-repeat:no-repeat;border-radius:2.5px;border:.5px solid #dfe1e5}.InlinePaymentCard-module__root___3JISW.InlinePaymentCard-module__--large____T4UH{width:48px;height:32px}","",{version:3,sources:["InlinePaymentCard.module.scss"],names:[],mappings:"AAAA,wCAAM,UAAU,CAAC,WAAW,CAAC,uBAAuB,CAAC,2BAA2B,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,kFAAc,UAAU,CAAC,WAAW",file:"InlinePaymentCard.module.scss",sourcesContent:[".root{width:24px;height:16px;background-size:contain;background-repeat:no-repeat;border-radius:2.5px;border:.5px solid #dfe1e5}.root.--large{width:48px;height:32px}"]}]),t.locals={root:"InlinePaymentCard-module__root___3JISW","--large":"InlinePaymentCard-module__--large____T4UH"},e.exports=t},94319:function(e,t,n){(t=n(23645)(!0)).push([e.id,".InlinePaymentOption-module__root___qRPN1{display:flex;align-items:center;gap:12px;margin-left:4px}@media(max-width: 991px){.InlinePaymentOption-module__root___qRPN1{flex-direction:column;align-items:flex-start}}","",{version:3,sources:["InlinePaymentOption.module.scss"],names:[],mappings:"AAAA,0CAAM,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,eAAe,CAAC,yBAAyB,0CAAM,qBAAqB,CAAC,sBAAsB,CAAC",file:"InlinePaymentOption.module.scss",sourcesContent:[".root{display:flex;align-items:center;gap:12px;margin-left:4px}@media(max-width: 991px){.root{flex-direction:column;align-items:flex-start}}"]}]),t.locals={root:"InlinePaymentOption-module__root___qRPN1"},e.exports=t},80987:function(e,t,n){(t=n(23645)(!0)).push([e.id,'.roomstay-booking-container .RadioButton-module__root___1w9es{width:100%;display:block;border:1px solid var(--rs-color-light-grey);border-radius:8px;margin:10px 0;cursor:pointer;transition:.3s}.roomstay-booking-container .RadioButton-module__root___1w9es+.RadioButton-module__root___1w9es{margin-top:8px}.roomstay-booking-container .RadioButton-module__root___1w9es.RadioButton-module__disabled___1HXUO{background:#f6f6fa;cursor:not-allowed}.roomstay-booking-container .RadioButton-module__root___1w9es.RadioButton-module__disabled___1HXUO .RadioButton-module__design___3kmtW{border:solid 1px #dfe1e5;background:rgba(0,0,0,0)}.roomstay-booking-container .RadioButton-module__root___1w9es.RadioButton-module__disabled___1HXUO .RadioButton-module__design___3kmtW::before{background:rgba(0,0,0,0)}.roomstay-booking-container .RadioButton-module__root___1w9es.RadioButton-module__disabled___1HXUO .RadioButton-module__text___1CCxU{color:#c0c3cc}.roomstay-booking-container .RadioButton-module__root___1w9es.RadioButton-module__checked___XmNJ8 .RadioButton-module__design___3kmtW{background:var(--rs-color-accent-2);border:solid 1px var(--rs-color-accent-1)}.roomstay-booking-container .RadioButton-module__root___1w9es.RadioButton-module__checked___XmNJ8 .RadioButton-module__design___3kmtW::before{transform:translate(-50%, -50%) scale(1);background:var(--rs-color-accent-1)}.roomstay-booking-container .RadioButton-module__root___1w9es.RadioButton-module__checked___XmNJ8 .RadioButton-module__text___1CCxU{color:var(--rs-color-navy)}.roomstay-booking-container .RadioButton-module__input___3WTPl{position:absolute;left:0;top:0;width:1px;height:1px;opacity:0;z-index:-1}.roomstay-booking-container .RadioButton-module__design___3kmtW{flex-shrink:0;width:16px;height:16px;border-radius:100px;position:relative;border:solid 1px var(--rs-color-light-grey)}.roomstay-booking-container .RadioButton-module__design___3kmtW::before{content:"";width:10px;height:10px;display:inline-block;border-radius:inherit;top:50%;left:50%;transform:translate(-50%, -50%);background:rgba(0,0,0,0);transition:.3s;position:absolute}.roomstay-booking-container .RadioButton-module__text___1CCxU{width:100%;color:var(--rs-color-navy);font-size:14px;font-weight:400;line-height:18px;margin-left:8px;transition:.3s}.roomstay-booking-container .RadioButton-module__content___2b4U9{display:block;padding:16px;border-top:solid 1px var(--rs-color-light-grey)}.roomstay-booking-container .RadioButton-module__header___2nA7I{padding:8px 16px;display:flex;align-items:center}',"",{version:3,sources:["RadioButton.module.scss"],names:[],mappings:"AAAA,8DAA2C,UAAU,CAAC,aAAa,CAAC,2CAA2C,CAAC,iBAAiB,CAAC,aAAa,CAAC,cAAc,CAAC,cAAc,CAAC,gGAAiD,cAAc,CAAC,mGAAoD,kBAAkB,CAAC,kBAAkB,CAAC,uIAA4D,wBAAwB,CAAC,wBAAwB,CAAC,+IAAoE,wBAAwB,CAAC,qIAA0D,aAAa,CAAC,sIAA2D,mCAAmC,CAAC,yCAAyC,CAAC,8IAAmE,wCAAwC,CAAC,mCAAmC,CAAC,oIAAyD,0BAA0B,CAAC,+DAA4C,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,gEAA6C,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,2CAA2C,CAAC,wEAAqD,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAAC,wBAAwB,CAAC,cAAc,CAAC,iBAAiB,CAAC,8DAA2C,UAAU,CAAC,0BAA0B,CAAC,cAAc,CAAC,eAAe,CAAC,gBAAgB,CAAC,eAAe,CAAC,cAAc,CAAC,iEAA8C,aAAa,CAAC,YAAY,CAAC,+CAA+C,CAAC,gEAA6C,gBAAgB,CAAC,YAAY,CAAC,kBAAkB",file:"RadioButton.module.scss",sourcesContent:[':global(.roomstay-booking-container) .root{width:100%;display:block;border:1px solid var(--rs-color-light-grey);border-radius:8px;margin:10px 0;cursor:pointer;transition:.3s}:global(.roomstay-booking-container) .root+.root{margin-top:8px}:global(.roomstay-booking-container) .root.disabled{background:#f6f6fa;cursor:not-allowed}:global(.roomstay-booking-container) .root.disabled .design{border:solid 1px #dfe1e5;background:rgba(0,0,0,0)}:global(.roomstay-booking-container) .root.disabled .design::before{background:rgba(0,0,0,0)}:global(.roomstay-booking-container) .root.disabled .text{color:#c0c3cc}:global(.roomstay-booking-container) .root.checked .design{background:var(--rs-color-accent-2);border:solid 1px var(--rs-color-accent-1)}:global(.roomstay-booking-container) .root.checked .design::before{transform:translate(-50%, -50%) scale(1);background:var(--rs-color-accent-1)}:global(.roomstay-booking-container) .root.checked .text{color:var(--rs-color-navy)}:global(.roomstay-booking-container) .input{position:absolute;left:0;top:0;width:1px;height:1px;opacity:0;z-index:-1}:global(.roomstay-booking-container) .design{flex-shrink:0;width:16px;height:16px;border-radius:100px;position:relative;border:solid 1px var(--rs-color-light-grey)}:global(.roomstay-booking-container) .design::before{content:"";width:10px;height:10px;display:inline-block;border-radius:inherit;top:50%;left:50%;transform:translate(-50%, -50%);background:rgba(0,0,0,0);transition:.3s;position:absolute}:global(.roomstay-booking-container) .text{width:100%;color:var(--rs-color-navy);font-size:14px;font-weight:400;line-height:18px;margin-left:8px;transition:.3s}:global(.roomstay-booking-container) .content{display:block;padding:16px;border-top:solid 1px var(--rs-color-light-grey)}:global(.roomstay-booking-container) .header{padding:8px 16px;display:flex;align-items:center}']}]),t.locals={root:"RadioButton-module__root___1w9es",disabled:"RadioButton-module__disabled___1HXUO",design:"RadioButton-module__design___3kmtW",text:"RadioButton-module__text___1CCxU",checked:"RadioButton-module__checked___XmNJ8",input:"RadioButton-module__input___3WTPl",content:"RadioButton-module__content___2b4U9",header:"RadioButton-module__header___2nA7I"},e.exports=t},5205:function(e,t,n){(t=n(23645)(!0)).push([e.id,".RadioButtonGroup-module__root___3QZUp{position:relative}.RadioButtonGroup-module__root___3QZUp .RadioButtonGroup-module__wrapper___3_Rg6{position:relative}.RadioButtonGroup-module__root___3QZUp .RadioButtonGroup-module__wrapper___3_Rg6:first-child .RadioButtonGroup-module__item___3rGSy{border-top-left-radius:5px !important;border-top-right-radius:5px !important}.RadioButtonGroup-module__root___3QZUp .RadioButtonGroup-module__wrapper___3_Rg6:last-child .RadioButtonGroup-module__item___3rGSy{border-bottom:1px solid var(--rs-color-light-grey) !important;border-bottom-left-radius:5px !important;border-bottom-right-radius:5px !important}.RadioButtonGroup-module__root___3QZUp .RadioButtonGroup-module__item___3rGSy{border-radius:0 !important;margin-top:0 !important;margin-bottom:0 !important;border-bottom:0 !important}.RadioButtonGroup-module__root___3QZUp .RadioButtonGroup-module__item___3rGSy:hover{background:rgba(204,204,204,.14)}.RadioButtonGroup-module__overlay___p2ip9{background-color:#fff;box-shadow:0px 8px 24px rgba(0,0,0,.25);border:1px solid #dfe1e5;border-radius:5px}.RadioButtonGroup-module__childrenIndicator___16sSu{position:absolute;right:16px;top:16px;pointer-events:none}","",{version:3,sources:["RadioButtonGroup.module.scss"],names:[],mappings:"AAAA,uCAAM,iBAAiB,CAAC,iFAAe,iBAAiB,CAAC,oIAAiC,qCAAqC,CAAC,sCAAsC,CAAC,mIAAgC,6DAA6D,CAAC,wCAAwC,CAAC,yCAAyC,CAAC,8EAAY,0BAA0B,CAAC,uBAAuB,CAAC,0BAA0B,CAAC,0BAA0B,CAAC,oFAAkB,gCAAgC,CAAC,0CAAS,qBAAqB,CAAC,uCAAuC,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,oDAAmB,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,mBAAmB",file:"RadioButtonGroup.module.scss",sourcesContent:[".root{position:relative}.root .wrapper{position:relative}.root .wrapper:first-child .item{border-top-left-radius:5px !important;border-top-right-radius:5px !important}.root .wrapper:last-child .item{border-bottom:1px solid var(--rs-color-light-grey) !important;border-bottom-left-radius:5px !important;border-bottom-right-radius:5px !important}.root .item{border-radius:0 !important;margin-top:0 !important;margin-bottom:0 !important;border-bottom:0 !important}.root .item:hover{background:rgba(204,204,204,.14)}.overlay{background-color:#fff;box-shadow:0px 8px 24px rgba(0,0,0,.25);border:1px solid #dfe1e5;border-radius:5px}.childrenIndicator{position:absolute;right:16px;top:16px;pointer-events:none}"]}]),t.locals={root:"RadioButtonGroup-module__root___3QZUp",wrapper:"RadioButtonGroup-module__wrapper___3_Rg6",item:"RadioButtonGroup-module__item___3rGSy",overlay:"RadioButtonGroup-module__overlay___p2ip9",childrenIndicator:"RadioButtonGroup-module__childrenIndicator___16sSu"},e.exports=t},87518:function(e,t,n){(t=n(23645)(!0)).push([e.id,".PlanpayLabel-module__root___a2__0{display:flex;align-items:center;justify-content:space-between;width:100%}@media(max-width: 991px){.PlanpayLabel-module__root___a2__0{flex-direction:column;align-items:flex-start}}.PlanpayLabel-module__container___pMoWg{display:flex;align-items:center;gap:12px}@media(max-width: 991px){.PlanpayLabel-module__container___pMoWg{flex:1 auto;flex-direction:row;align-items:center}}.PlanpayLabel-module__label-and-logo___3gMbJ{display:flex;align-items:center;flex:1 auto}@media(max-width: 991px){.PlanpayLabel-module__label-and-logo___3gMbJ{flex-direction:row-reverse;align-items:center;gap:12px}}.PlanpayLabel-module__price___2TINl{display:flex}@media(max-width: 991px){.PlanpayLabel-module__price___2TINl{text-align:right}}","",{version:3,sources:["PlanpayLabel.module.scss"],names:[],mappings:"AAAA,mCAAM,YAAY,CAAC,kBAAkB,CAAC,6BAA6B,CAAC,UAAU,CAAC,yBAAyB,mCAAM,qBAAqB,CAAC,sBAAsB,CAAC,CAAC,wCAAW,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,yBAAyB,wCAAW,WAAW,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,6CAAgB,YAAY,CAAC,kBAAkB,CAAC,WAAW,CAAC,yBAAyB,6CAAgB,0BAA0B,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,oCAAO,YAAY,CAAC,yBAAyB,oCAAO,gBAAgB,CAAC",file:"PlanpayLabel.module.scss",sourcesContent:[".root{display:flex;align-items:center;justify-content:space-between;width:100%}@media(max-width: 991px){.root{flex-direction:column;align-items:flex-start}}.container{display:flex;align-items:center;gap:12px}@media(max-width: 991px){.container{flex:1 auto;flex-direction:row;align-items:center}}.label-and-logo{display:flex;align-items:center;flex:1 auto}@media(max-width: 991px){.label-and-logo{flex-direction:row-reverse;align-items:center;gap:12px}}.price{display:flex}@media(max-width: 991px){.price{text-align:right}}"]}]),t.locals={root:"PlanpayLabel-module__root___a2__0",container:"PlanpayLabel-module__container___pMoWg","label-and-logo":"PlanpayLabel-module__label-and-logo___3gMbJ",price:"PlanpayLabel-module__price___2TINl"},e.exports=t},37533:function(e,t,n){var r=n(93379),a=n(56374);"string"==typeof(a=a.__esModule?a.default:a)&&(a=[[e.id,a,""]]);r(a,{insert:"head",singleton:!1}),e.exports=a.locals||{}},276:function(e,t,n){var r=n(93379),a=n(31693);"string"==typeof(a=a.__esModule?a.default:a)&&(a=[[e.id,a,""]]);r(a,{insert:"head",singleton:!1}),e.exports=a.locals||{}},35729:function(e,t,n){var r=n(93379),a=n(12899);"string"==typeof(a=a.__esModule?a.default:a)&&(a=[[e.id,a,""]]);r(a,{insert:"head",singleton:!1}),e.exports=a.locals||{}},75498:function(e,t,n){var r=n(93379),a=n(94319);"string"==typeof(a=a.__esModule?a.default:a)&&(a=[[e.id,a,""]]);r(a,{insert:"head",singleton:!1}),e.exports=a.locals||{}},57970:function(e,t,n){var r=n(93379),a=n(80987);"string"==typeof(a=a.__esModule?a.default:a)&&(a=[[e.id,a,""]]);r(a,{insert:"head",singleton:!1}),e.exports=a.locals||{}},9502:function(e,t,n){var r=n(93379),a=n(5205);"string"==typeof(a=a.__esModule?a.default:a)&&(a=[[e.id,a,""]]);r(a,{insert:"head",singleton:!1}),e.exports=a.locals||{}},1320:function(e,t,n){var r=n(93379),a=n(87518);"string"==typeof(a=a.__esModule?a.default:a)&&(a=[[e.id,a,""]]);r(a,{insert:"head",singleton:!1}),e.exports=a.locals||{}}}]);
@@ -1,80 +0,0 @@
1
- import { EBookingPaymentMethod, IPaymentCheckoutDetails } from '@roomstay/core';
2
- import RoomNightRateDTO from './RoomNightRateDTO';
3
- import { SimpleItemisedFee } from '../Fee';
4
- type ReservationsDTO = {
5
- roomstayId: string;
6
- reservations: ReservationDTO[];
7
- itineraryNumber: string;
8
- hotelFrontendId?: string;
9
- warnings?: string[];
10
- total?: string;
11
- payment?: IPaymentCheckoutDetails;
12
- itemisedFees?: SimpleItemisedFee[];
13
- feesSummary?: SimpleItemisedFee[];
14
- };
15
- export type ReservationAddonDTO = {
16
- code: string;
17
- inclusive: false;
18
- pricingType: string;
19
- quantity: number;
20
- adultQuantity: number;
21
- childQuantity?: number;
22
- description: string;
23
- name: string;
24
- category: string;
25
- image: string;
26
- price: number;
27
- fees?: number;
28
- itemisedFees?: SimpleItemisedFee[];
29
- displayPrice: number;
30
- adultPrice?: number;
31
- childPrice?: number;
32
- nights?: number;
33
- };
34
- export type ReservationDTO = {
35
- nights: {
36
- [date: string]: RoomNightRateDTO;
37
- };
38
- guestCounts: {
39
- adults: number;
40
- children: number;
41
- };
42
- guest: {
43
- address: {
44
- line1: string;
45
- city: string;
46
- postalCode: string;
47
- };
48
- firstName: string;
49
- lastName: string;
50
- phone: string;
51
- email: string;
52
- };
53
- paymentCard: {
54
- type?: string;
55
- last4: string;
56
- expiry: string;
57
- name: string;
58
- };
59
- paymentMethod?: EBookingPaymentMethod;
60
- comments?: string[];
61
- addons?: ReservationAddonDTO[];
62
- itemisedFees?: SimpleItemisedFee[];
63
- reservationNumber: string;
64
- cancelPolicy: string;
65
- cancellationPolicyLongDescription?: string;
66
- guaranteePolicy: string;
67
- guaranteePolicyLongDescription?: string;
68
- roomType: string;
69
- roomCode: string;
70
- rate: string;
71
- images: [string];
72
- status: string;
73
- isCancelable: boolean;
74
- total: {
75
- beforeTax: number;
76
- afterTax: number;
77
- beforeFees?: number;
78
- };
79
- };
80
- export default ReservationsDTO;
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=ReservationsDTO.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReservationsDTO.js","sourceRoot":"/","sources":["src/models/Api/ReservationsDTO.ts"],"names":[],"mappings":"","sourcesContent":["import { EBookingPaymentMethod, IPaymentCheckoutDetails } from '@roomstay/core';\n\nimport RoomNightRateDTO from '@/models/Api/RoomNightRateDTO';\nimport { SimpleItemisedFee } from '@/models/Fee';\n\n// TODO: Why are these DTO's needed when we have ItineraryResponse from the core???\ntype ReservationsDTO = {\n roomstayId: string;\n reservations: ReservationDTO[];\n itineraryNumber: string;\n hotelFrontendId?: string;\n warnings?: string[];\n total?: string;\n payment?: IPaymentCheckoutDetails;\n itemisedFees?: SimpleItemisedFee[];\n feesSummary?: SimpleItemisedFee[];\n};\n\nexport type ReservationAddonDTO = {\n code: string;\n inclusive: false;\n pricingType: string;\n quantity: number;\n adultQuantity: number;\n childQuantity?: number;\n description: string;\n name: string;\n category: string;\n image: string;\n price: number;\n fees?: number;\n itemisedFees?: SimpleItemisedFee[];\n displayPrice: number;\n adultPrice?: number;\n childPrice?: number;\n nights?: number;\n};\n\nexport type ReservationDTO = {\n nights: {\n [date: string]: RoomNightRateDTO;\n };\n guestCounts: {\n adults: number;\n children: number;\n };\n guest: {\n address: {\n line1: string;\n city: string;\n postalCode: string;\n };\n firstName: string;\n lastName: string;\n phone: string;\n email: string;\n };\n paymentCard: {\n type?: string;\n last4: string;\n expiry: string;\n name: string;\n };\n paymentMethod?: EBookingPaymentMethod;\n comments?: string[];\n addons?: ReservationAddonDTO[];\n itemisedFees?: SimpleItemisedFee[];\n\n reservationNumber: string;\n cancelPolicy: string;\n cancellationPolicyLongDescription?: string;\n guaranteePolicy: string;\n guaranteePolicyLongDescription?: string;\n roomType: string;\n roomCode: string;\n rate: string;\n images: [string];\n status: string;\n isCancelable: boolean;\n total: {\n beforeTax: number;\n afterTax: number;\n beforeFees?: number;\n };\n};\n\nexport default ReservationsDTO;\n"]}
@@ -1,24 +0,0 @@
1
- import { BasketAddonDTO } from '../models/Addon/Addon';
2
- import ReservationsDTO, { ReservationAddonDTO } from '../models/Api/ReservationsDTO';
3
- /**
4
- * Calculate totals for a Basket Addon.
5
- */
6
- export declare const calculateBasketAddonTotal: (addons: BasketAddonDTO | BasketAddonDTO[], dismissAddonNightCount?: boolean) => {
7
- price: number;
8
- adultPrice: number;
9
- childPrice: number;
10
- totalFees: number;
11
- total: number;
12
- };
13
- /**
14
- * Calculate totals for a Reservation Addon.
15
- */
16
- export declare const calculateReservationAddonTotal: (addons: ReservationAddonDTO | ReservationAddonDTO[], dismissAddonNightCount?: boolean) => {
17
- price: number;
18
- adultPrice: number;
19
- childPrice: number;
20
- totalFees: number;
21
- total: number;
22
- displayPrice: number;
23
- };
24
- export declare const calculateTotalForReservation: (reservation: ReservationsDTO, dismissAddonNightCount?: boolean) => number;
@@ -1,157 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calculateTotalForReservation = exports.calculateReservationAddonTotal = exports.calculateBasketAddonTotal = void 0;
4
- const core_1 = require("@roomstay/core");
5
- const Addon_1 = require("../models/Addon/Addon");
6
- /**
7
- * Calculate the addon total for a single addon.
8
- *
9
- * This does not account for fees. Fees need to be calculated separately, because we calculate them differently
10
- * based on whether they are a booked addon, or an addon in the basket.
11
- */
12
- const calculateBaseAddonTotal = (addon, dismissAddonNightCount) => {
13
- let indPrice = 0;
14
- let indAdultPrice = 0;
15
- let indChildPrice = 0;
16
- if (addon.price && addon.quantity) {
17
- indPrice = addon.quantity * Number(addon.price);
18
- }
19
- if (addon.pricingType === core_1.EAddonPricingType.PER_ADULT_OCCUPANCY_PER_NIGHT && addon.adultQuantity) {
20
- indPrice *= addon.adultQuantity;
21
- }
22
- else if (addon.pricingType === core_1.EAddonPricingType.PER_CHILD_OCCUPANCY_PER_NIGHT && addon.childQuantity) {
23
- indPrice *= addon.childQuantity;
24
- }
25
- if (addon.adultPrice && addon.adultQuantity) {
26
- indAdultPrice = addon.adultQuantity * Number(addon.adultPrice);
27
- }
28
- if (addon.childPrice && addon.childQuantity) {
29
- indChildPrice = addon.childQuantity * Number(addon.childPrice);
30
- }
31
- let addonTotal = indPrice + indAdultPrice + indChildPrice;
32
- if (Addon_1.ADDON_PER_NIGHT_TYPES.includes(addon.pricingType) && addon.nights && !dismissAddonNightCount) {
33
- addonTotal *= addon.nights;
34
- }
35
- return {
36
- indPrice,
37
- indAdultPrice,
38
- indChildPrice,
39
- addonTotal,
40
- };
41
- };
42
- /**
43
- * Calculate totals for a Basket Addon.
44
- */
45
- const calculateBasketAddonTotal = (addons, dismissAddonNightCount = false) => {
46
- if (!Array.isArray(addons)) {
47
- addons = [addons];
48
- }
49
- // TODO: This function is chaos! It will be slightly better when we remove the old fee fields.
50
- const result = addons.reduce((acc, addon) => {
51
- var _a, _b, _c, _d, _e, _f, _g;
52
- const base = calculateBaseAddonTotal(addon, dismissAddonNightCount);
53
- let addonFees = 0;
54
- // Calculate fees specific to BasketAddonDTO
55
- if ((addon.fee || ((_a = addon.fees) === null || _a === void 0 ? void 0 : _a.length)) && addon.quantity) {
56
- // There are no separate adult/child fees
57
- if ((_b = addon.fees) === null || _b === void 0 ? void 0 : _b.length) {
58
- // New Itemised fees
59
- addon.fees.forEach((fee) => {
60
- addonFees += addon.quantity * fee.amount;
61
- });
62
- }
63
- else {
64
- // Old fees (to be removed/deprecated)
65
- addonFees = addon.quantity * Number(addon.fee);
66
- }
67
- }
68
- else {
69
- // There are separate adult/child fees, so we need to calculate them separately.
70
- if ((addon.adultFee || ((_c = addon.adultFees) === null || _c === void 0 ? void 0 : _c.length)) && addon.adultQuantity) {
71
- if ((_d = addon.adultFees) === null || _d === void 0 ? void 0 : _d.length) {
72
- addon.adultFees.forEach((fee) => {
73
- addonFees += addon.adultQuantity * fee.amount;
74
- });
75
- }
76
- else {
77
- addonFees += (_e = addon.adultQuantity) !== null && _e !== void 0 ? _e : 1 * Number(addon.adultFee);
78
- }
79
- }
80
- if ((addon.childFee || ((_f = addon.childFees) === null || _f === void 0 ? void 0 : _f.length)) && addon.childQuantity) {
81
- if ((_g = addon.childFees) === null || _g === void 0 ? void 0 : _g.length) {
82
- addon.childFees.forEach((fee) => {
83
- var _a;
84
- addonFees += (_a = addon.childQuantity) !== null && _a !== void 0 ? _a : 1 * fee.amount;
85
- });
86
- }
87
- else {
88
- addonFees += addon.childQuantity * Number(addon.childFee);
89
- }
90
- }
91
- }
92
- // Multiply the fees by the number of nights if it's a per-night addon.
93
- if (Addon_1.ADDON_PER_NIGHT_TYPES.includes(addon.pricingType) && addon.nights && !dismissAddonNightCount) {
94
- addonFees *= addon.nights;
95
- }
96
- return {
97
- price: acc.price + base.indPrice,
98
- adultPrice: acc.adultPrice + base.indAdultPrice,
99
- childPrice: acc.childPrice + base.indChildPrice,
100
- totalFees: acc.totalFees + addonFees,
101
- total: acc.total + base.addonTotal + addonFees,
102
- };
103
- }, { price: 0, adultPrice: 0, childPrice: 0, totalFees: 0, total: 0 });
104
- return result;
105
- };
106
- exports.calculateBasketAddonTotal = calculateBasketAddonTotal;
107
- /**
108
- * Calculate totals for a Reservation Addon.
109
- */
110
- const calculateReservationAddonTotal = (addons, dismissAddonNightCount = false) => {
111
- if (!Array.isArray(addons)) {
112
- addons = [addons];
113
- }
114
- const result = addons.reduce((acc, addon) => {
115
- var _a, _b;
116
- const base = calculateBaseAddonTotal(addon, dismissAddonNightCount);
117
- // For a ReservationAddonDTO, the fees have already been calculated as a part of the booking process.
118
- let addonFees = addon.fees || 0;
119
- // But they might be superceded by itemised fees.
120
- if ((_a = addon.itemisedFees) === null || _a === void 0 ? void 0 : _a.length) {
121
- addonFees = addon.itemisedFees.reduce((acc, fee) => acc + fee.amount, 0);
122
- }
123
- // If we have Itemised Fees, the display price will be excluding fees.
124
- const displayPrice = ((_b = addon.itemisedFees) === null || _b === void 0 ? void 0 : _b.length) ? base.addonTotal : base.addonTotal + addonFees;
125
- return {
126
- price: acc.price + base.indPrice,
127
- adultPrice: acc.adultPrice + base.indAdultPrice,
128
- childPrice: acc.childPrice + base.indChildPrice,
129
- totalFees: acc.totalFees + addonFees,
130
- total: acc.total + base.addonTotal + addonFees,
131
- displayPrice: acc.displayPrice + displayPrice,
132
- };
133
- }, { price: 0, adultPrice: 0, childPrice: 0, totalFees: 0, total: 0, displayPrice: 0 });
134
- return result;
135
- };
136
- exports.calculateReservationAddonTotal = calculateReservationAddonTotal;
137
- const calculateTotalForReservation = (reservation, dismissAddonNightCount = false) => {
138
- var _a;
139
- let total = 0;
140
- (_a = reservation.itemisedFees) === null || _a === void 0 ? void 0 : _a.forEach((fee) => {
141
- total += fee.amount;
142
- });
143
- reservation.reservations.forEach((individualRes) => {
144
- var _a, _b, _c, _d, _e;
145
- total += individualRes.total.afterTax;
146
- const resNights = (_b = (_a = Object.keys(individualRes.nights)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;
147
- if ((_c = individualRes.addons) === null || _c === void 0 ? void 0 : _c.length) {
148
- const addons = ((_d = individualRes.addons) !== null && _d !== void 0 ? _d : []).map((addon) => {
149
- return Object.assign(Object.assign({}, addon), { nights: resNights });
150
- });
151
- total += (_e = (0, exports.calculateReservationAddonTotal)(addons, dismissAddonNightCount)) === null || _e === void 0 ? void 0 : _e.total;
152
- }
153
- });
154
- return (0, core_1.roundMoney)(total);
155
- };
156
- exports.calculateTotalForReservation = calculateTotalForReservation;
157
- //# sourceMappingURL=TotalCalculator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TotalCalculator.js","sourceRoot":"/","sources":["src/util/TotalCalculator.ts"],"names":[],"mappings":"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","sourcesContent":["import { EAddonPricingType, roundMoney } from '@roomstay/core';\n\nimport { ADDON_PER_NIGHT_TYPES, BasketAddonDTO } from '@/models/Addon/Addon';\nimport ReservationsDTO, { ReservationAddonDTO } from '@/models/Api/ReservationsDTO';\n\n/**\n * Calculate the addon total for a single addon.\n *\n * This does not account for fees. Fees need to be calculated separately, because we calculate them differently\n * based on whether they are a booked addon, or an addon in the basket.\n */\nconst calculateBaseAddonTotal = (addon: BasketAddonDTO | ReservationAddonDTO, dismissAddonNightCount: boolean) => {\n let indPrice = 0;\n let indAdultPrice = 0;\n let indChildPrice = 0;\n\n if (addon.price && addon.quantity) {\n indPrice = addon.quantity * Number(addon.price);\n }\n\n if (addon.pricingType === EAddonPricingType.PER_ADULT_OCCUPANCY_PER_NIGHT && addon.adultQuantity) {\n indPrice *= addon.adultQuantity;\n } else if (addon.pricingType === EAddonPricingType.PER_CHILD_OCCUPANCY_PER_NIGHT && addon.childQuantity) {\n indPrice *= addon.childQuantity;\n }\n\n if (addon.adultPrice && addon.adultQuantity) {\n indAdultPrice = addon.adultQuantity * Number(addon.adultPrice);\n }\n\n if (addon.childPrice && addon.childQuantity) {\n indChildPrice = addon.childQuantity * Number(addon.childPrice);\n }\n\n let addonTotal = indPrice + indAdultPrice + indChildPrice;\n if (ADDON_PER_NIGHT_TYPES.includes(addon.pricingType as EAddonPricingType) && addon.nights && !dismissAddonNightCount) {\n addonTotal *= addon.nights;\n }\n\n return {\n indPrice,\n indAdultPrice,\n indChildPrice,\n addonTotal,\n };\n};\n\n/**\n * Calculate totals for a Basket Addon.\n */\nexport const calculateBasketAddonTotal = (addons: BasketAddonDTO | BasketAddonDTO[], dismissAddonNightCount = false) => {\n if (!Array.isArray(addons)) {\n addons = [addons];\n }\n\n // TODO: This function is chaos! It will be slightly better when we remove the old fee fields.\n\n const result = addons.reduce(\n (acc, addon) => {\n const base = calculateBaseAddonTotal(addon, dismissAddonNightCount);\n let addonFees = 0;\n\n // Calculate fees specific to BasketAddonDTO\n if ((addon.fee || addon.fees?.length) && addon.quantity) {\n // There are no separate adult/child fees\n if (addon.fees?.length) {\n // New Itemised fees\n addon.fees.forEach((fee) => {\n addonFees += addon.quantity * fee.amount;\n });\n } else {\n // Old fees (to be removed/deprecated)\n addonFees = addon.quantity * Number(addon.fee);\n }\n } else {\n // There are separate adult/child fees, so we need to calculate them separately.\n if ((addon.adultFee || addon.adultFees?.length) && addon.adultQuantity) {\n if (addon.adultFees?.length) {\n addon.adultFees.forEach((fee) => {\n addonFees += addon.adultQuantity * fee.amount;\n });\n } else {\n addonFees += addon.adultQuantity ?? 1 * Number(addon.adultFee);\n }\n }\n\n if ((addon.childFee || addon.childFees?.length) && addon.childQuantity) {\n if (addon.childFees?.length) {\n addon.childFees.forEach((fee) => {\n addonFees += addon.childQuantity ?? 1 * fee.amount;\n });\n } else {\n addonFees += addon.childQuantity * Number(addon.childFee);\n }\n }\n }\n\n // Multiply the fees by the number of nights if it's a per-night addon.\n if (ADDON_PER_NIGHT_TYPES.includes(addon.pricingType as EAddonPricingType) && addon.nights && !dismissAddonNightCount) {\n addonFees *= addon.nights;\n }\n\n return {\n price: acc.price + base.indPrice,\n adultPrice: acc.adultPrice + base.indAdultPrice,\n childPrice: acc.childPrice + base.indChildPrice,\n totalFees: acc.totalFees + addonFees,\n total: acc.total + base.addonTotal + addonFees,\n };\n },\n { price: 0, adultPrice: 0, childPrice: 0, totalFees: 0, total: 0 }\n );\n\n return result;\n};\n\n/**\n * Calculate totals for a Reservation Addon.\n */\nexport const calculateReservationAddonTotal = (addons: ReservationAddonDTO | ReservationAddonDTO[], dismissAddonNightCount = false) => {\n if (!Array.isArray(addons)) {\n addons = [addons];\n }\n\n const result = addons.reduce(\n (acc, addon) => {\n const base = calculateBaseAddonTotal(addon, dismissAddonNightCount);\n\n // For a ReservationAddonDTO, the fees have already been calculated as a part of the booking process.\n let addonFees = addon.fees || 0;\n\n // But they might be superceded by itemised fees.\n if (addon.itemisedFees?.length) {\n addonFees = addon.itemisedFees.reduce((acc, fee) => acc + fee.amount, 0);\n }\n\n // If we have Itemised Fees, the display price will be excluding fees.\n const displayPrice = addon.itemisedFees?.length ? base.addonTotal : base.addonTotal + addonFees;\n\n return {\n price: acc.price + base.indPrice,\n adultPrice: acc.adultPrice + base.indAdultPrice,\n childPrice: acc.childPrice + base.indChildPrice,\n totalFees: acc.totalFees + addonFees,\n total: acc.total + base.addonTotal + addonFees,\n displayPrice: acc.displayPrice + displayPrice,\n };\n },\n { price: 0, adultPrice: 0, childPrice: 0, totalFees: 0, total: 0, displayPrice: 0 }\n );\n\n return result;\n};\n\nexport const calculateTotalForReservation = (reservation: ReservationsDTO, dismissAddonNightCount = false) => {\n let total = 0;\n\n reservation.itemisedFees?.forEach((fee) => {\n total += fee.amount;\n });\n\n reservation.reservations.forEach((individualRes) => {\n total += individualRes.total.afterTax;\n const resNights = Object.keys(individualRes.nights)?.length ?? 0;\n\n if (individualRes.addons?.length) {\n const addons = (individualRes.addons ?? []).map((addon) => {\n return { ...addon, nights: resNights };\n });\n\n total += calculateReservationAddonTotal(addons, dismissAddonNightCount)?.total;\n }\n });\n\n return roundMoney(total);\n};\n"]}