@roomstay/frontend 2.1.5 → 2.1.7

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 (874) hide show
  1. package/dist/14.bundle.js +1 -0
  2. package/dist/151.bundle.js +1 -0
  3. package/dist/201.bundle.js +1 -1
  4. package/dist/279.bundle.js +1 -1
  5. package/dist/370.bundle.js +1 -1
  6. package/dist/399.bundle.js +2 -0
  7. package/dist/399.bundle.js.LICENSE.txt +30 -0
  8. package/dist/449.bundle.js +1 -1
  9. package/dist/559.bundle.js +1 -0
  10. package/dist/760.bundle.js +1 -1
  11. package/dist/815.bundle.js +1 -0
  12. package/dist/855.bundle.js +1 -0
  13. package/dist/873.bundle.js +1 -1
  14. package/dist/882.bundle.js +1 -1
  15. package/dist/962.bundle.js +1 -0
  16. package/dist/972.bundle.js +1 -1
  17. package/dist/main.bundle.js +1 -1
  18. package/dist/src/animations/AutoAutoHeight.d.ts +1 -1
  19. package/dist/src/animations/AutoAutoHeight.js +11 -34
  20. package/dist/src/animations/AutoAutoHeight.js.map +1 -1
  21. package/dist/src/animations/Fade.d.ts +1 -1
  22. package/dist/src/animations/Fade.js +3 -4
  23. package/dist/src/animations/Fade.js.map +1 -1
  24. package/dist/src/api/AddonAPI.js +3 -2
  25. package/dist/src/api/AddonAPI.js.map +1 -1
  26. package/dist/src/api/AvailabilityAPI.d.ts +2 -2
  27. package/dist/src/api/AvailabilityAPI.js +6 -6
  28. package/dist/src/api/AvailabilityAPI.js.map +1 -1
  29. package/dist/src/api/BaseAPI.d.ts +4 -4
  30. package/dist/src/api/BaseAPI.js +30 -24
  31. package/dist/src/api/BaseAPI.js.map +1 -1
  32. package/dist/src/api/ExchangeRateAPI.d.ts +1 -1
  33. package/dist/src/api/ExchangeRateAPI.js.map +1 -1
  34. package/dist/src/api/HotelAPI.js +1 -1
  35. package/dist/src/api/HotelAPI.js.map +1 -1
  36. package/dist/src/api/ReservationAPI.d.ts +1 -1
  37. package/dist/src/api/ReservationAPI.js +2 -1
  38. package/dist/src/api/ReservationAPI.js.map +1 -1
  39. package/dist/src/api/SessionAPI.d.ts +1 -1
  40. package/dist/src/api/SessionAPI.js +2 -2
  41. package/dist/src/api/SessionAPI.js.map +1 -1
  42. package/dist/src/components/User/Forms/ForgotPasswordForm.js +19 -23
  43. package/dist/src/components/User/Forms/ForgotPasswordForm.js.map +1 -1
  44. package/dist/src/components/User/Forms/SignInForm.js +50 -52
  45. package/dist/src/components/User/Forms/SignInForm.js.map +1 -1
  46. package/dist/src/components/User/Forms/SignUpForm.js +61 -62
  47. package/dist/src/components/User/Forms/SignUpForm.js.map +1 -1
  48. package/dist/src/components/generic/Alert.js +3 -26
  49. package/dist/src/components/generic/Alert.js.map +1 -1
  50. package/dist/src/components/generic/BEButton.d.ts +1 -1
  51. package/dist/src/components/generic/BEButton.js +8 -7
  52. package/dist/src/components/generic/BEButton.js.map +1 -1
  53. package/dist/src/components/generic/BESelect.d.ts +0 -0
  54. package/dist/src/components/generic/BESelect.js +2 -0
  55. package/dist/src/components/generic/BESelect.js.map +1 -0
  56. package/dist/src/components/generic/BackButton.js +2 -26
  57. package/dist/src/components/generic/BackButton.js.map +1 -1
  58. package/dist/src/components/generic/BookNowPayLaterInfoBlock.d.ts +2 -1
  59. package/dist/src/components/generic/BookNowPayLaterInfoBlock.js +9 -9
  60. package/dist/src/components/generic/BookNowPayLaterInfoBlock.js.map +1 -1
  61. package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.d.ts +1 -3
  62. package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.js.map +1 -1
  63. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js +1 -1
  64. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js.map +1 -1
  65. package/dist/src/components/generic/BookingWizard/BookingWizardContext.d.ts +1 -1
  66. package/dist/src/components/generic/BookingWizard/BookingWizardContext.js +1 -1
  67. package/dist/src/components/generic/BookingWizard/BookingWizardContext.js.map +1 -1
  68. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js +6 -4
  69. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js.map +1 -1
  70. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js +1 -1
  71. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js.map +1 -1
  72. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js +5 -4
  73. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js.map +1 -1
  74. package/dist/src/components/generic/Card/Card/Card.js +4 -27
  75. package/dist/src/components/generic/Card/Card/Card.js.map +1 -1
  76. package/dist/src/components/generic/Card/IconNavCard/IconNavCard.d.ts +1 -1
  77. package/dist/src/components/generic/Card/IconNavCard/IconNavCard.js +8 -8
  78. package/dist/src/components/generic/Card/IconNavCard/IconNavCard.js.map +1 -1
  79. package/dist/src/components/generic/Checkbox/Checkbox.d.ts +1 -1
  80. package/dist/src/components/generic/Checkbox/Checkbox.js +8 -8
  81. package/dist/src/components/generic/Checkbox/Checkbox.js.map +1 -1
  82. package/dist/src/components/generic/Countdown.js +6 -29
  83. package/dist/src/components/generic/Countdown.js.map +1 -1
  84. package/dist/src/components/generic/Currency.js +10 -10
  85. package/dist/src/components/generic/Currency.js.map +1 -1
  86. package/dist/src/components/generic/DateRangePicker/DateRangePicker.d.ts +3 -3
  87. package/dist/src/components/generic/DateRangePicker/DateRangePicker.js +28 -28
  88. package/dist/src/components/generic/DateRangePicker/DateRangePicker.js.map +1 -1
  89. package/dist/src/components/generic/DateRangePicker/DateRangePickerContext.d.ts +13 -7
  90. package/dist/src/components/generic/DateRangePicker/DateRangePickerContext.js +4 -39
  91. package/dist/src/components/generic/DateRangePicker/DateRangePickerContext.js.map +1 -1
  92. package/dist/src/components/generic/DateRangePicker/DateRangePickerDay.js +18 -16
  93. package/dist/src/components/generic/DateRangePicker/DateRangePickerDay.js.map +1 -1
  94. package/dist/src/components/generic/DateRangePicker/DateRangePickerDays.js +4 -27
  95. package/dist/src/components/generic/DateRangePicker/DateRangePickerDays.js.map +1 -1
  96. package/dist/src/components/generic/DateRangePicker/DateRangePickerMonth.js +10 -10
  97. package/dist/src/components/generic/DateRangePicker/DateRangePickerMonth.js.map +1 -1
  98. package/dist/src/components/generic/DateRangePicker/FloatingDateRangePicker.d.ts +3 -3
  99. package/dist/src/components/generic/DateRangePicker/FloatingDateRangePicker.js +13 -36
  100. package/dist/src/components/generic/DateRangePicker/FloatingDateRangePicker.js.map +1 -1
  101. package/dist/src/components/generic/Distance.js +5 -28
  102. package/dist/src/components/generic/Distance.js.map +1 -1
  103. package/dist/src/components/generic/ForwardedSelect.d.ts +1 -1
  104. package/dist/src/components/generic/ForwardedSelect.js +9 -29
  105. package/dist/src/components/generic/ForwardedSelect.js.map +1 -1
  106. package/dist/src/components/generic/Headline.d.ts +1 -1
  107. package/dist/src/components/generic/Headline.js +5 -30
  108. package/dist/src/components/generic/Headline.js.map +1 -1
  109. package/dist/src/components/generic/Icon/Icon.js +5 -28
  110. package/dist/src/components/generic/Icon/Icon.js.map +1 -1
  111. package/dist/src/components/generic/IconText/IconText.js +5 -4
  112. package/dist/src/components/generic/IconText/IconText.js.map +1 -1
  113. package/dist/src/components/generic/InputGroup/InputGroup.js +6 -29
  114. package/dist/src/components/generic/InputGroup/InputGroup.js.map +1 -1
  115. package/dist/src/components/generic/LineBreak.js +2 -25
  116. package/dist/src/components/generic/LineBreak.js.map +1 -1
  117. package/dist/src/components/generic/Notification.d.ts +2 -3
  118. package/dist/src/components/generic/Notification.js +16 -13
  119. package/dist/src/components/generic/Notification.js.map +1 -1
  120. package/dist/src/components/generic/NumberIncrement.js +10 -10
  121. package/dist/src/components/generic/NumberIncrement.js.map +1 -1
  122. package/dist/src/components/generic/Overlay/Overlay.d.ts +3 -3
  123. package/dist/src/components/generic/Overlay/Overlay.js +16 -40
  124. package/dist/src/components/generic/Overlay/Overlay.js.map +1 -1
  125. package/dist/src/components/generic/PasswordBox/PasswordBox.d.ts +1 -1
  126. package/dist/src/components/generic/PasswordBox/PasswordBox.js +8 -8
  127. package/dist/src/components/generic/PasswordBox/PasswordBox.js.map +1 -1
  128. package/dist/src/components/generic/PaymentCard/CardTypeSelect.js +9 -28
  129. package/dist/src/components/generic/PaymentCard/CardTypeSelect.js.map +1 -1
  130. package/dist/src/components/generic/PaymentCard/PaymentCard.js +18 -41
  131. package/dist/src/components/generic/PaymentCard/PaymentCard.js.map +1 -1
  132. package/dist/src/components/generic/PaymentCard/PaymentCardInput.js +66 -51
  133. package/dist/src/components/generic/PaymentCard/PaymentCardInput.js.map +1 -1
  134. package/dist/src/components/generic/Pill.d.ts +1 -1
  135. package/dist/src/components/generic/Pill.js +4 -27
  136. package/dist/src/components/generic/Pill.js.map +1 -1
  137. package/dist/src/components/generic/Placeholder.js +4 -27
  138. package/dist/src/components/generic/Placeholder.js.map +1 -1
  139. package/dist/src/components/generic/PlanpayButton/PlanpayButton.js +2 -25
  140. package/dist/src/components/generic/PlanpayButton/PlanpayButton.js.map +1 -1
  141. package/dist/src/components/generic/Portal/Portal.d.ts +1 -1
  142. package/dist/src/components/generic/Portal/Portal.js +4 -24
  143. package/dist/src/components/generic/Portal/Portal.js.map +1 -1
  144. package/dist/src/components/generic/PromoCodeInput.js +27 -28
  145. package/dist/src/components/generic/PromoCodeInput.js.map +1 -1
  146. package/dist/src/components/generic/RadioButtonGroup/RadioButton.js +9 -32
  147. package/dist/src/components/generic/RadioButtonGroup/RadioButton.js.map +1 -1
  148. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.d.ts +6 -6
  149. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js +6 -29
  150. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
  151. package/dist/src/components/generic/RecentSearchesCard.js +19 -18
  152. package/dist/src/components/generic/RecentSearchesCard.js.map +1 -1
  153. package/dist/src/components/generic/RoomstayMark.d.ts +1 -0
  154. package/dist/src/components/generic/RoomstayMark.js +49 -0
  155. package/dist/src/components/generic/RoomstayMark.js.map +1 -0
  156. package/dist/src/components/generic/ScrollToTop.d.ts +2 -0
  157. package/dist/src/components/generic/ScrollToTop.js +3 -3
  158. package/dist/src/components/generic/ScrollToTop.js.map +1 -1
  159. package/dist/src/components/generic/Select/Select.d.ts +4 -4
  160. package/dist/src/components/generic/Select/Select.js +16 -6
  161. package/dist/src/components/generic/Select/Select.js.map +1 -1
  162. package/dist/src/components/generic/Select.d.ts +0 -0
  163. package/dist/src/components/generic/Select.js +2 -0
  164. package/dist/src/components/generic/Select.js.map +1 -0
  165. package/dist/src/components/generic/Slider/Slider.d.ts +3 -3
  166. package/dist/src/components/generic/Slider/Slider.js +23 -45
  167. package/dist/src/components/generic/Slider/Slider.js.map +1 -1
  168. package/dist/src/components/generic/Tabs/ElementChildren.d.ts +1 -1
  169. package/dist/src/components/generic/Tabs/ElementChildren.js +6 -26
  170. package/dist/src/components/generic/Tabs/ElementChildren.js.map +1 -1
  171. package/dist/src/components/generic/Tabs/Tab.d.ts +1 -1
  172. package/dist/src/components/generic/Tabs/Tab.js +4 -24
  173. package/dist/src/components/generic/Tabs/Tab.js.map +1 -1
  174. package/dist/src/components/generic/Tabs/TabContext.d.ts +5 -6
  175. package/dist/src/components/generic/Tabs/TabContext.js +11 -31
  176. package/dist/src/components/generic/Tabs/TabContext.js.map +1 -1
  177. package/dist/src/components/generic/Tabs/TabLink.d.ts +1 -1
  178. package/dist/src/components/generic/Tabs/TabLink.js +7 -30
  179. package/dist/src/components/generic/Tabs/TabLink.js.map +1 -1
  180. package/dist/src/components/generic/Tabs/TabRouteContainer.js +10 -33
  181. package/dist/src/components/generic/Tabs/TabRouteContainer.js.map +1 -1
  182. package/dist/src/components/generic/Tabs/Tabs.d.ts +2 -2
  183. package/dist/src/components/generic/Tabs/Tabs.js +9 -32
  184. package/dist/src/components/generic/Tabs/Tabs.js.map +1 -1
  185. package/dist/src/components/generic/Text.d.ts +1 -1
  186. package/dist/src/components/generic/Text.js +3 -26
  187. package/dist/src/components/generic/Text.js.map +1 -1
  188. package/dist/src/components/generic/TextArea.d.ts +1 -1
  189. package/dist/src/components/generic/TextArea.js +6 -26
  190. package/dist/src/components/generic/TextArea.js.map +1 -1
  191. package/dist/src/components/generic/TextBox.d.ts +2 -2
  192. package/dist/src/components/generic/TextBox.js +11 -34
  193. package/dist/src/components/generic/TextBox.js.map +1 -1
  194. package/dist/src/components/generic/Tooltip/Tooltip.d.ts +1 -1
  195. package/dist/src/components/generic/Tooltip/Tooltip.js +8 -31
  196. package/dist/src/components/generic/Tooltip/Tooltip.js.map +1 -1
  197. package/dist/src/components/generic/badging/SSLSecureBadge.js +3 -26
  198. package/dist/src/components/generic/badging/SSLSecureBadge.js.map +1 -1
  199. package/dist/src/components/generic/buttons/NextStepButton.js +5 -28
  200. package/dist/src/components/generic/buttons/NextStepButton.js.map +1 -1
  201. package/dist/src/components/generic/custom/EnhancedPhoneNumberField/EnhancedPhoneNumberField.d.ts +3 -4
  202. package/dist/src/components/generic/custom/EnhancedPhoneNumberField/EnhancedPhoneNumberField.js +23 -32
  203. package/dist/src/components/generic/custom/EnhancedPhoneNumberField/EnhancedPhoneNumberField.js.map +1 -1
  204. package/dist/src/components/generic/date/DatePicker.js +42 -42
  205. package/dist/src/components/generic/date/DatePicker.js.map +1 -1
  206. package/dist/src/components/generic/date/DatePickerDay.js +27 -27
  207. package/dist/src/components/generic/date/DatePickerDay.js.map +1 -1
  208. package/dist/src/components/generic/date/DatePickerDays.js +4 -27
  209. package/dist/src/components/generic/date/DatePickerDays.js.map +1 -1
  210. package/dist/src/components/generic/date/DatePickerMonth.js +9 -9
  211. package/dist/src/components/generic/date/DatePickerMonth.js.map +1 -1
  212. package/dist/src/components/generic/date/DatePickerWeek.js +26 -26
  213. package/dist/src/components/generic/date/DatePickerWeek.js.map +1 -1
  214. package/dist/src/components/generic/date/FloatingDatePicker.d.ts +1 -1
  215. package/dist/src/components/generic/date/FloatingDatePicker.js +11 -11
  216. package/dist/src/components/generic/date/FloatingDatePicker.js.map +1 -1
  217. package/dist/src/components/generic/date/WeekViewSkeleton.js +23 -46
  218. package/dist/src/components/generic/date/WeekViewSkeleton.js.map +1 -1
  219. package/dist/src/components/generic/loader/ImageLoader.d.ts +1 -1
  220. package/dist/src/components/generic/loader/ImageLoader.js +8 -8
  221. package/dist/src/components/generic/loader/ImageLoader.js.map +1 -1
  222. package/dist/src/components/generic/loader/LargeLoader.js +15 -38
  223. package/dist/src/components/generic/loader/LargeLoader.js.map +1 -1
  224. package/dist/src/components/generic/loader/SmallSpinner.js +6 -3
  225. package/dist/src/components/generic/loader/SmallSpinner.js.map +1 -1
  226. package/dist/src/components/generic/map/HotelLocationMap.js +3 -26
  227. package/dist/src/components/generic/map/HotelLocationMap.js.map +1 -1
  228. package/dist/src/components/generic/modal/ConfirmationModal.js +8 -8
  229. package/dist/src/components/generic/modal/ConfirmationModal.js.map +1 -1
  230. package/dist/src/components/generic/modal/ErrorModal.d.ts +2 -2
  231. package/dist/src/components/generic/modal/ErrorModal.js +5 -5
  232. package/dist/src/components/generic/modal/ErrorModal.js.map +1 -1
  233. package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.d.ts +3 -2
  234. package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.js +16 -16
  235. package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.js.map +1 -1
  236. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.d.ts +1 -1
  237. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.js +26 -26
  238. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.js.map +1 -1
  239. package/dist/src/components/generic/modal/SimpleModal.d.ts +2 -2
  240. package/dist/src/components/generic/modal/SimpleModal.js +21 -22
  241. package/dist/src/components/generic/modal/SimpleModal.js.map +1 -1
  242. package/dist/src/components/generic/modal/TabbedModal.d.ts +1 -1
  243. package/dist/src/components/generic/modal/TabbedModal.js +12 -12
  244. package/dist/src/components/generic/modal/TabbedModal.js.map +1 -1
  245. package/dist/src/components/generic/radio/RadioFields.js +11 -11
  246. package/dist/src/components/generic/radio/RadioFields.js.map +1 -1
  247. package/dist/src/components/iconComponents/BookNowPayLaterIcon.js +16 -36
  248. package/dist/src/components/iconComponents/BookNowPayLaterIcon.js.map +1 -1
  249. package/dist/src/components/members/EditMyProfile.d.ts +1 -1
  250. package/dist/src/components/members/EditMyProfile.js +35 -59
  251. package/dist/src/components/members/EditMyProfile.js.map +1 -1
  252. package/dist/src/components/navigation/Header.js +69 -64
  253. package/dist/src/components/navigation/Header.js.map +1 -1
  254. package/dist/src/components/navigation/StepSelector.js +27 -27
  255. package/dist/src/components/navigation/StepSelector.js.map +1 -1
  256. package/dist/src/components/navigation/StepSelectorModal.js +14 -13
  257. package/dist/src/components/navigation/StepSelectorModal.js.map +1 -1
  258. package/dist/src/components/pages/Account/Card/CardList.js +10 -33
  259. package/dist/src/components/pages/Account/Card/CardList.js.map +1 -1
  260. package/dist/src/components/pages/Account/Card/MemberCardItem.js +10 -10
  261. package/dist/src/components/pages/Account/Card/MemberCardItem.js.map +1 -1
  262. package/dist/src/components/pages/PageColorComponent.js +4 -27
  263. package/dist/src/components/pages/PageColorComponent.js.map +1 -1
  264. package/dist/src/components/reservation/EmptyReservation.d.ts +6 -0
  265. package/dist/src/components/reservation/EmptyReservation.js +52 -0
  266. package/dist/src/components/reservation/EmptyReservation.js.map +1 -0
  267. package/dist/src/components/reservation/ReservationItem.js +56 -56
  268. package/dist/src/components/reservation/ReservationItem.js.map +1 -1
  269. package/dist/src/components/reservation/ReservationList.d.ts +3 -2
  270. package/dist/src/components/reservation/ReservationList.js +7 -26
  271. package/dist/src/components/reservation/ReservationList.js.map +1 -1
  272. package/dist/src/components/steps/DaysSelectedInformer.js +9 -6
  273. package/dist/src/components/steps/DaysSelectedInformer.js.map +1 -1
  274. package/dist/src/components/steps/MinimumNightStayPill.d.ts +1 -1
  275. package/dist/src/components/steps/MinimumNightStayPill.js +8 -8
  276. package/dist/src/components/steps/MinimumNightStayPill.js.map +1 -1
  277. package/dist/src/components/steps/addons/AddonCard.js +59 -58
  278. package/dist/src/components/steps/addons/AddonCard.js.map +1 -1
  279. package/dist/src/components/steps/addons/AddonList.js +16 -39
  280. package/dist/src/components/steps/addons/AddonList.js.map +1 -1
  281. package/dist/src/components/steps/addons/AddonsNotFound.js +38 -61
  282. package/dist/src/components/steps/addons/AddonsNotFound.js.map +1 -1
  283. package/dist/src/components/steps/common/CommonAddonSummary/CommonAddonSummary.d.ts +1 -1
  284. package/dist/src/components/steps/common/CommonAddonSummary/CommonAddonSummary.js +19 -19
  285. package/dist/src/components/steps/common/CommonAddonSummary/CommonAddonSummary.js.map +1 -1
  286. package/dist/src/components/steps/confirmation/AccountDetails.js +11 -34
  287. package/dist/src/components/steps/confirmation/AccountDetails.js.map +1 -1
  288. package/dist/src/components/steps/confirmation/PaymentDetails/AcceptablePaymentCard.js +5 -27
  289. package/dist/src/components/steps/confirmation/PaymentDetails/AcceptablePaymentCard.js.map +1 -1
  290. package/dist/src/components/steps/confirmation/PaymentDetails/CardPaymentDetails.js +1 -0
  291. package/dist/src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.js +12 -32
  292. package/dist/src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.js.map +1 -1
  293. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.d.ts +1 -1
  294. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js +26 -25
  295. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js.map +1 -1
  296. package/dist/src/components/steps/confirmation/PlanpayPaymentMethod.js +35 -58
  297. package/dist/src/components/steps/confirmation/PlanpayPaymentMethod.js.map +1 -1
  298. package/dist/src/components/steps/confirmation/RoomContactDetails.js +72 -68
  299. package/dist/src/components/steps/confirmation/RoomContactDetails.js.map +1 -1
  300. package/dist/src/components/steps/confirmation/StepConfirmationAcknowledgement.js +14 -14
  301. package/dist/src/components/steps/confirmation/StepConfirmationAcknowledgement.js.map +1 -1
  302. package/dist/src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.js +36 -35
  303. package/dist/src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.js.map +1 -1
  304. package/dist/src/components/steps/confirmation/StepConfirmationCommentsComponent.js +7 -30
  305. package/dist/src/components/steps/confirmation/StepConfirmationCommentsComponent.js.map +1 -1
  306. package/dist/src/components/steps/confirmation/StepConfirmationCountrySelector.d.ts +2 -2
  307. package/dist/src/components/steps/confirmation/StepConfirmationCountrySelector.js +29 -24
  308. package/dist/src/components/steps/confirmation/StepConfirmationCountrySelector.js.map +1 -1
  309. package/dist/src/components/steps/confirmation/StepConfirmationForm.js +94 -89
  310. package/dist/src/components/steps/confirmation/StepConfirmationForm.js.map +1 -1
  311. package/dist/src/components/steps/confirmation/StepConfirmationFormProvider.js +3 -26
  312. package/dist/src/components/steps/confirmation/StepConfirmationFormProvider.js.map +1 -1
  313. package/dist/src/components/steps/confirmation/StepConfirmationLimitedOffer.js +13 -13
  314. package/dist/src/components/steps/confirmation/StepConfirmationLimitedOffer.js.map +1 -1
  315. package/dist/src/components/steps/confirmation/StepConfirmationPoliciesSection.js +16 -16
  316. package/dist/src/components/steps/confirmation/StepConfirmationPoliciesSection.js.map +1 -1
  317. package/dist/src/components/steps/confirmation/StepConfirmationPolicyBlock.js +25 -20
  318. package/dist/src/components/steps/confirmation/StepConfirmationPolicyBlock.js.map +1 -1
  319. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffers.js +26 -26
  320. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffers.js.map +1 -1
  321. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.js +13 -9
  322. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.js.map +1 -1
  323. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersModal.js +61 -61
  324. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersModal.js.map +1 -1
  325. package/dist/src/components/steps/date/PeoplePicker.js +11 -7
  326. package/dist/src/components/steps/date/PeoplePicker.js.map +1 -1
  327. package/dist/src/components/steps/date/PeoplePickerRow.js +18 -18
  328. package/dist/src/components/steps/date/PeoplePickerRow.js.map +1 -1
  329. package/dist/src/components/steps/date/StepDatePricePerRoom.js +16 -16
  330. package/dist/src/components/steps/date/StepDatePricePerRoom.js.map +1 -1
  331. package/dist/src/components/steps/date/StepOneDateRange.js +10 -10
  332. package/dist/src/components/steps/date/StepOneDateRange.js.map +1 -1
  333. package/dist/src/components/steps/date/StepOneDateRangePicker.js +6 -6
  334. package/dist/src/components/steps/date/StepOneDateRangePicker.js.map +1 -1
  335. package/dist/src/components/steps/date/StepOneDateRangePickerLegend.js +6 -6
  336. package/dist/src/components/steps/date/StepOneDateRangePickerLegend.js.map +1 -1
  337. package/dist/src/components/steps/date/StepOneNextStepButton.js +5 -5
  338. package/dist/src/components/steps/date/StepOneNextStepButton.js.map +1 -1
  339. package/dist/src/components/steps/date/StepOneStatusPeople.js +4 -27
  340. package/dist/src/components/steps/date/StepOneStatusPeople.js.map +1 -1
  341. package/dist/src/components/steps/hotel/HotelCard.js +56 -56
  342. package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
  343. package/dist/src/components/steps/hotel/HotelCardList.js +5 -28
  344. package/dist/src/components/steps/hotel/HotelCardList.js.map +1 -1
  345. package/dist/src/components/steps/hotel/HotelCardModal.d.ts +1 -1
  346. package/dist/src/components/steps/hotel/HotelCardModal.js +45 -45
  347. package/dist/src/components/steps/hotel/HotelCardModal.js.map +1 -1
  348. package/dist/src/components/steps/hotel/HotelSearchParameters.js +40 -40
  349. package/dist/src/components/steps/hotel/HotelSearchParameters.js.map +1 -1
  350. package/dist/src/components/steps/hotel/NoHotelsAvailable.js +57 -80
  351. package/dist/src/components/steps/hotel/NoHotelsAvailable.js.map +1 -1
  352. package/dist/src/components/steps/room/AvailableUpgradesModal.d.ts +2 -1
  353. package/dist/src/components/steps/room/AvailableUpgradesModal.js +40 -42
  354. package/dist/src/components/steps/room/AvailableUpgradesModal.js.map +1 -1
  355. package/dist/src/components/steps/room/ImageGallerySlider.js +21 -21
  356. package/dist/src/components/steps/room/ImageGallerySlider.js.map +1 -1
  357. package/dist/src/components/steps/room/InactivityWindow.js +20 -20
  358. package/dist/src/components/steps/room/InactivityWindow.js.map +1 -1
  359. package/dist/src/components/steps/room/LargeRoomCard.js +36 -35
  360. package/dist/src/components/steps/room/LargeRoomCard.js.map +1 -1
  361. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js +44 -48
  362. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js.map +1 -1
  363. package/dist/src/components/steps/room/NoRoomsFoundBlock.js +52 -52
  364. package/dist/src/components/steps/room/NoRoomsFoundBlock.js.map +1 -1
  365. package/dist/src/components/steps/room/RatesNotFound.js +39 -62
  366. package/dist/src/components/steps/room/RatesNotFound.js.map +1 -1
  367. package/dist/src/components/steps/room/RoomList.js +13 -36
  368. package/dist/src/components/steps/room/RoomList.js.map +1 -1
  369. package/dist/src/components/steps/room/RoomListAlert.d.ts +1 -1
  370. package/dist/src/components/steps/room/RoomListAlert.js +11 -34
  371. package/dist/src/components/steps/room/RoomListAlert.js.map +1 -1
  372. package/dist/src/components/steps/room/RoomListCrossSellBlock.d.ts +2 -1
  373. package/dist/src/components/steps/room/RoomListCrossSellBlock.js +38 -38
  374. package/dist/src/components/steps/room/RoomListCrossSellBlock.js.map +1 -1
  375. package/dist/src/components/steps/room/RoomModal.js +32 -32
  376. package/dist/src/components/steps/room/RoomModal.js.map +1 -1
  377. package/dist/src/components/steps/room/StepRoomAlertBlocks.js +9 -9
  378. package/dist/src/components/steps/room/StepRoomAlertBlocks.js.map +1 -1
  379. package/dist/src/components/steps/room/StepRoomBestRateAlert.js +6 -6
  380. package/dist/src/components/steps/room/StepRoomBestRateAlert.js.map +1 -1
  381. package/dist/src/components/steps/room/StepRoomErrorForm.js +34 -34
  382. package/dist/src/components/steps/room/StepRoomErrorForm.js.map +1 -1
  383. package/dist/src/components/steps/room/StepRoomHotelDetails.js +18 -18
  384. package/dist/src/components/steps/room/StepRoomHotelDetails.js.map +1 -1
  385. package/dist/src/components/steps/room/StepRoomNextStepButton.js +4 -4
  386. package/dist/src/components/steps/room/StepRoomNextStepButton.js.map +1 -1
  387. package/dist/src/components/steps/room/StepRoomSortBy.js +6 -6
  388. package/dist/src/components/steps/room/StepRoomSortBy.js.map +1 -1
  389. package/dist/src/components/steps/room/StepRoomSummaryAndButton.js +15 -38
  390. package/dist/src/components/steps/room/StepRoomSummaryAndButton.js.map +1 -1
  391. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker.js +2 -25
  392. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker.js.map +1 -1
  393. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfChildrenPicker.js +2 -25
  394. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfChildrenPicker.js.map +1 -1
  395. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.js +9 -9
  396. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.js.map +1 -1
  397. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +71 -69
  398. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
  399. package/dist/src/components/steps/room/roomDetails/RoomDetails.js +42 -39
  400. package/dist/src/components/steps/room/roomDetails/RoomDetails.js.map +1 -1
  401. package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.js +18 -15
  402. package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.js.map +1 -1
  403. package/dist/src/components/steps/room/roomDetails/RoomDetailsPerkBlock.js +6 -7
  404. package/dist/src/components/steps/room/roomDetails/RoomDetailsPerkBlock.js.map +1 -1
  405. package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.js +16 -16
  406. package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.js.map +1 -1
  407. package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.d.ts +1 -1
  408. package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js +37 -36
  409. package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js.map +1 -1
  410. package/dist/src/components/steps/room/roomDetails/roomRates/BookNowButton.js +8 -31
  411. package/dist/src/components/steps/room/roomDetails/roomRates/BookNowButton.js.map +1 -1
  412. package/dist/src/components/steps/room/roomDetails/roomRates/MembersOnlyRow.js +26 -26
  413. package/dist/src/components/steps/room/roomDetails/roomRates/MembersOnlyRow.js.map +1 -1
  414. package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js +43 -43
  415. package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js.map +1 -1
  416. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js +34 -34
  417. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js.map +1 -1
  418. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal.js +8 -8
  419. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal.js.map +1 -1
  420. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.js +11 -11
  421. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.js.map +1 -1
  422. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js +8 -10
  423. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js.map +1 -1
  424. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js +32 -32
  425. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js.map +1 -1
  426. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js +16 -39
  427. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js.map +1 -1
  428. package/dist/src/components/steps/room/roomFilter/AppliedFiltersBlock.js +10 -9
  429. package/dist/src/components/steps/room/roomFilter/AppliedFiltersBlock.js.map +1 -1
  430. package/dist/src/components/steps/room/roomFilter/RoomFilterOverlay.js +32 -31
  431. package/dist/src/components/steps/room/roomFilter/RoomFilterOverlay.js.map +1 -1
  432. package/dist/src/components/steps/room/roomFilter/RoomFilterPriceSlider.d.ts +1 -1
  433. package/dist/src/components/steps/room/roomFilter/RoomFilterPriceSlider.js +20 -21
  434. package/dist/src/components/steps/room/roomFilter/RoomFilterPriceSlider.js.map +1 -1
  435. package/dist/src/components/steps/room/roomFilter/RoomFilterRateType.d.ts +1 -1
  436. package/dist/src/components/steps/room/roomFilter/RoomFilterRateType.js +17 -17
  437. package/dist/src/components/steps/room/roomFilter/RoomFilterRateType.js.map +1 -1
  438. package/dist/src/components/steps/room/roomFilter/RoomFilterRoomType.d.ts +1 -1
  439. package/dist/src/components/steps/room/roomFilter/RoomFilterRoomType.js +20 -18
  440. package/dist/src/components/steps/room/roomFilter/RoomFilterRoomType.js.map +1 -1
  441. package/dist/src/components/summary/BEMapWidget.d.ts +1 -1
  442. package/dist/src/components/summary/BEMapWidget.js +29 -27
  443. package/dist/src/components/summary/BEMapWidget.js.map +1 -1
  444. package/dist/src/components/summary/BEMobileSummary.js +22 -22
  445. package/dist/src/components/summary/BEMobileSummary.js.map +1 -1
  446. package/dist/src/components/summary/BEMobileSummaryModal.js +62 -60
  447. package/dist/src/components/summary/BEMobileSummaryModal.js.map +1 -1
  448. package/dist/src/components/summary/BESummary.js +42 -41
  449. package/dist/src/components/summary/BESummary.js.map +1 -1
  450. package/dist/src/components/summary/BESummaryAddonRow.js +18 -18
  451. package/dist/src/components/summary/BESummaryAddonRow.js.map +1 -1
  452. package/dist/src/components/summary/BESummaryPerkBlock.js +11 -11
  453. package/dist/src/components/summary/BESummaryPerkBlock.js.map +1 -1
  454. package/dist/src/components/summary/BESummaryPrivacyPolicy.js +11 -8
  455. package/dist/src/components/summary/BESummaryPrivacyPolicy.js.map +1 -1
  456. package/dist/src/components/summary/BESummaryRoomRow.js +57 -57
  457. package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
  458. package/dist/src/components/summary/TransportDistanceFromHotelBlock.js +12 -12
  459. package/dist/src/components/summary/TransportDistanceFromHotelBlock.js.map +1 -1
  460. package/dist/src/components/temp/Login.js +29 -29
  461. package/dist/src/components/temp/Login.js.map +1 -1
  462. package/dist/src/containers/PrivateRoute.js +6 -26
  463. package/dist/src/containers/PrivateRoute.js.map +1 -1
  464. package/dist/src/contexts/BasketContext/BasketContext.js +1 -1
  465. package/dist/src/contexts/BasketContext/BasketContext.js.map +1 -1
  466. package/dist/src/contexts/BasketContext/BasketContextType.d.ts +3 -3
  467. package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
  468. package/dist/src/contexts/BasketContext/BasketContextWrapper.d.ts +1 -1
  469. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +35 -59
  470. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  471. package/dist/src/contexts/BookingEngineContext/BookingEngineContext.js +1 -1
  472. package/dist/src/contexts/BookingEngineContext/BookingEngineContext.js.map +1 -1
  473. package/dist/src/contexts/BookingEngineContext/BookingEngineContextType.types.d.ts +1 -1
  474. package/dist/src/contexts/BookingEngineContext/BookingEngineContextType.types.js.map +1 -1
  475. package/dist/src/contexts/BookingEngineContext/BookingEngineContextWrapper.d.ts +1 -1
  476. package/dist/src/contexts/BookingEngineContext/BookingEngineContextWrapper.js +3 -4
  477. package/dist/src/contexts/BookingEngineContext/BookingEngineContextWrapper.js.map +1 -1
  478. package/dist/src/contexts/CompanyContext/CompanyContext.js +1 -1
  479. package/dist/src/contexts/CompanyContext/CompanyContext.js.map +1 -1
  480. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +24 -47
  481. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  482. package/dist/src/contexts/ConfirmationFormContext.d.ts +2 -2
  483. package/dist/src/contexts/ConfirmationFormContext.js +8 -28
  484. package/dist/src/contexts/ConfirmationFormContext.js.map +1 -1
  485. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +10 -10
  486. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  487. package/dist/src/contexts/DatePickerContext.d.ts +12 -11
  488. package/dist/src/contexts/DatePickerContext.js +4 -41
  489. package/dist/src/contexts/DatePickerContext.js.map +1 -1
  490. package/dist/src/contexts/ErrorContext.d.ts +2 -2
  491. package/dist/src/contexts/ErrorContext.js +10 -10
  492. package/dist/src/contexts/ErrorContext.js.map +1 -1
  493. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContext.js +1 -1
  494. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContext.js.map +1 -1
  495. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.d.ts +1 -1
  496. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js +43 -49
  497. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js.map +1 -1
  498. package/dist/src/contexts/HotelOverridesContext.d.ts +1 -1
  499. package/dist/src/contexts/HotelOverridesContext.js +14 -37
  500. package/dist/src/contexts/HotelOverridesContext.js.map +1 -1
  501. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.d.ts +7 -7
  502. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.js +18 -6
  503. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.js.map +1 -1
  504. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.d.ts +1 -1
  505. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js +38 -53
  506. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js.map +1 -1
  507. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.d.ts +1 -1
  508. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js +29 -49
  509. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js.map +1 -1
  510. package/dist/src/contexts/ModalContext.d.ts +1 -1
  511. package/dist/src/contexts/ModalContext.js +4 -5
  512. package/dist/src/contexts/ModalContext.js.map +1 -1
  513. package/dist/src/contexts/NotificationContext.d.ts +1 -1
  514. package/dist/src/contexts/NotificationContext.js +8 -31
  515. package/dist/src/contexts/NotificationContext.js.map +1 -1
  516. package/dist/src/engines/BaseEngine.js.map +1 -1
  517. package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js +2 -0
  518. package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js.map +1 -1
  519. package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.js +4 -27
  520. package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.js.map +1 -1
  521. package/dist/src/engines/FullPageBookingEngine/FullPageBookingEngineElement.js +15 -35
  522. package/dist/src/engines/FullPageBookingEngine/FullPageBookingEngineElement.js.map +1 -1
  523. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +67 -66
  524. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
  525. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngine.js.map +1 -1
  526. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js +20 -20
  527. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js.map +1 -1
  528. package/dist/src/events/RoomstayEvent.d.ts +0 -1
  529. package/dist/src/events/RoomstayEvent.js +0 -1
  530. package/dist/src/events/RoomstayEvent.js.map +1 -1
  531. package/dist/src/events/RoomstayEventManager.d.ts +2 -2
  532. package/dist/src/events/RoomstayEventManager.js +1 -1
  533. package/dist/src/events/RoomstayEventManager.js.map +1 -1
  534. package/dist/src/hooks/AutoFocusOnSelect.d.ts +1 -1
  535. package/dist/src/hooks/AutoFocusOnSelect.js.map +1 -1
  536. package/dist/src/hooks/BodyClickHook.d.ts +2 -4
  537. package/dist/src/hooks/BodyClickHook.js +3 -3
  538. package/dist/src/hooks/BodyClickHook.js.map +1 -1
  539. package/dist/src/hooks/CombineState.d.ts +1 -1
  540. package/dist/src/hooks/CombineState.js.map +1 -1
  541. package/dist/src/hooks/ConfirmationQuery.d.ts +3 -3
  542. package/dist/src/hooks/CurrentHotelHook.d.ts +1 -1
  543. package/dist/src/hooks/ElementSortHook.d.ts +1 -1
  544. package/dist/src/hooks/ElementSortHook.js +7 -27
  545. package/dist/src/hooks/ElementSortHook.js.map +1 -1
  546. package/dist/src/hooks/EventHook.d.ts +1 -1
  547. package/dist/src/hooks/EventHook.js.map +1 -1
  548. package/dist/src/hooks/KeyboardControlOnSelect.d.ts +3 -3
  549. package/dist/src/hooks/LoggedInUserHook.d.ts +6 -6
  550. package/dist/src/hooks/LoggedInUserHook.js.map +1 -1
  551. package/dist/src/hooks/Query.js +5 -25
  552. package/dist/src/hooks/Query.js.map +1 -1
  553. package/dist/src/hooks/VGSHooks.d.ts +4 -4
  554. package/dist/src/hooks/VGSHooks.js +16 -11
  555. package/dist/src/hooks/VGSHooks.js.map +1 -1
  556. package/dist/src/icons/Check.js +7 -27
  557. package/dist/src/icons/Check.js.map +1 -1
  558. package/dist/src/index.d.ts +3 -3
  559. package/dist/src/index.js +2 -17
  560. package/dist/src/index.js.map +1 -1
  561. package/dist/src/mockApi/AddonAPI.js +2 -1
  562. package/dist/src/mockApi/AddonAPI.js.map +1 -1
  563. package/dist/src/mockApi/MockAPI.d.ts +1 -1
  564. package/dist/src/mockApi/ReservationAPI.d.ts +1 -1
  565. package/dist/src/mockApi/ReservationAPI.js +2 -1
  566. package/dist/src/mockApi/ReservationAPI.js.map +1 -1
  567. package/dist/src/models/Addon/Addon.js +1 -1
  568. package/dist/src/models/Addon/Addon.js.map +1 -1
  569. package/dist/src/models/BasketAddonRow.d.ts +2 -2
  570. package/dist/src/models/BasketAddonRow.js +1 -1
  571. package/dist/src/models/BasketAddonRow.js.map +1 -1
  572. package/dist/src/models/BasketRow.d.ts +6 -6
  573. package/dist/src/models/BasketRow.js +3 -2
  574. package/dist/src/models/BasketRow.js.map +1 -1
  575. package/dist/src/models/BookingWizard/BookingWizardProperty.d.ts +1 -1
  576. package/dist/src/models/BookingWizard/BookingWizardProperty.js.map +1 -1
  577. package/dist/src/models/Client/Client.js.map +1 -1
  578. package/dist/src/models/Currency.d.ts +1 -1
  579. package/dist/src/models/Currency.js.map +1 -1
  580. package/dist/src/models/Room/Filters/BudgetFilter.d.ts +1 -1
  581. package/dist/src/models/Room/Filters/RoomTypeFilter.d.ts +1 -1
  582. package/dist/src/models/Room/Filters/RoomTypeFilter.js.map +1 -1
  583. package/dist/src/models/Room/Room.d.ts +10 -10
  584. package/dist/src/models/Room/Room.js +10 -8
  585. package/dist/src/models/Room/Room.js.map +1 -1
  586. package/dist/src/models/Room/RoomRate.d.ts +1 -1
  587. package/dist/src/models/Room/RoomRate.js +1 -1
  588. package/dist/src/models/Room/RoomRate.js.map +1 -1
  589. package/dist/src/models/Room/RoomRateNight.js.map +1 -1
  590. package/dist/src/models/RoomstaySession.d.ts +2 -2
  591. package/dist/src/models/RoomstaySession.js.map +1 -1
  592. package/dist/src/pages/account/AccountHome/AccountHomePage.js +31 -31
  593. package/dist/src/pages/account/AccountHome/AccountHomePage.js.map +1 -1
  594. package/dist/src/pages/account/AccountOutlet.d.ts +1 -1
  595. package/dist/src/pages/account/AccountOutlet.js +5 -25
  596. package/dist/src/pages/account/AccountOutlet.js.map +1 -1
  597. package/dist/src/pages/account/AccountRouter.js +12 -37
  598. package/dist/src/pages/account/AccountRouter.js.map +1 -1
  599. package/dist/src/pages/account/Details/AccountDetailsCardsPage.js +24 -28
  600. package/dist/src/pages/account/Details/AccountDetailsCardsPage.js.map +1 -1
  601. package/dist/src/pages/account/Details/AccountDetailsNoCardsPage.js +8 -8
  602. package/dist/src/pages/account/Details/AccountDetailsNoCardsPage.js.map +1 -1
  603. package/dist/src/pages/account/Details/AccountDetailsProfilePage.js +41 -42
  604. package/dist/src/pages/account/Details/AccountDetailsProfilePage.js.map +1 -1
  605. package/dist/src/pages/account/Help/AccountHelpPage.js +42 -44
  606. package/dist/src/pages/account/Help/AccountHelpPage.js.map +1 -1
  607. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js +78 -82
  608. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js.map +1 -1
  609. package/dist/src/pages/account/Reservations/AccountReservationsPage.js +17 -40
  610. package/dist/src/pages/account/Reservations/AccountReservationsPage.js.map +1 -1
  611. package/dist/src/pages/findReservation/FindReservation.js +81 -76
  612. package/dist/src/pages/findReservation/FindReservation.js.map +1 -1
  613. package/dist/src/pages/findReservation/FindReservationResults.js +33 -33
  614. package/dist/src/pages/findReservation/FindReservationResults.js.map +1 -1
  615. package/dist/src/pages/findReservation/ReservationRow.js +66 -65
  616. package/dist/src/pages/findReservation/ReservationRow.js.map +1 -1
  617. package/dist/src/pages/findReservation/ReservationRowModal.js +52 -52
  618. package/dist/src/pages/findReservation/ReservationRowModal.js.map +1 -1
  619. package/dist/src/pages/hotel/HotelInfo.js +88 -88
  620. package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
  621. package/dist/src/pages/hotel/HotelInfoPlaceholder.js +4 -27
  622. package/dist/src/pages/hotel/HotelInfoPlaceholder.js.map +1 -1
  623. package/dist/src/pages/steps/Step.d.ts +2 -2
  624. package/dist/src/pages/steps/Step.js.map +1 -1
  625. package/dist/src/pages/steps/StepAddon/StepAddon.d.ts +1 -1
  626. package/dist/src/pages/steps/StepAddon/StepAddon.js.map +1 -1
  627. package/dist/src/pages/steps/StepAddon/StepAddonComponent.js +18 -41
  628. package/dist/src/pages/steps/StepAddon/StepAddonComponent.js.map +1 -1
  629. package/dist/src/pages/steps/StepAddon/StepAddonLoader.js +51 -51
  630. package/dist/src/pages/steps/StepAddon/StepAddonLoader.js.map +1 -1
  631. package/dist/src/pages/steps/StepConfirmation/StepConfirmation.d.ts +1 -1
  632. package/dist/src/pages/steps/StepConfirmation/StepConfirmation.js.map +1 -1
  633. package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js +28 -51
  634. package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js.map +1 -1
  635. package/dist/src/pages/steps/StepConfirmation/StepConfirmationLoader.js +72 -72
  636. package/dist/src/pages/steps/StepConfirmation/StepConfirmationLoader.js.map +1 -1
  637. package/dist/src/pages/steps/StepDate/StepDate.d.ts +14 -0
  638. package/dist/src/pages/steps/StepDate/StepDate.js.map +1 -1
  639. package/dist/src/pages/steps/StepDate/StepDateComponent.d.ts +2 -0
  640. package/dist/src/pages/steps/StepDate/StepDateComponent.js +46 -48
  641. package/dist/src/pages/steps/StepDate/StepDateComponent.js.map +1 -1
  642. package/dist/src/pages/steps/StepGuide.d.ts +1 -1
  643. package/dist/src/pages/steps/StepGuide.js +3 -26
  644. package/dist/src/pages/steps/StepGuide.js.map +1 -1
  645. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js +21 -21
  646. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js.map +1 -1
  647. package/dist/src/pages/steps/StepHotel/StepHotelLoader.js +43 -43
  648. package/dist/src/pages/steps/StepHotel/StepHotelLoader.js.map +1 -1
  649. package/dist/src/pages/steps/StepRoom/StepRoom.d.ts +1 -1
  650. package/dist/src/pages/steps/StepRoom/StepRoom.js.map +1 -1
  651. package/dist/src/pages/steps/StepRoom/StepRoomComponent.js +33 -33
  652. package/dist/src/pages/steps/StepRoom/StepRoomComponent.js.map +1 -1
  653. package/dist/src/pages/steps/StepRoom/StepRoomLoader.js +74 -74
  654. package/dist/src/pages/steps/StepRoom/StepRoomLoader.js.map +1 -1
  655. package/dist/src/pages/steps/StepThanks/StepThanks.d.ts +1 -1
  656. package/dist/src/pages/steps/StepThanks/StepThanks.js.map +1 -1
  657. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js +28 -29
  658. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js.map +1 -1
  659. package/dist/src/providers/CurrencyProvider.d.ts +1 -1
  660. package/dist/src/providers/DIProvider.js +5 -25
  661. package/dist/src/providers/DIProvider.js.map +1 -1
  662. package/dist/src/providers/FilterProvider.d.ts +1 -1
  663. package/dist/src/providers/FilterProvider.js +3 -2
  664. package/dist/src/providers/FilterProvider.js.map +1 -1
  665. package/dist/src/providers/LanguageProvider.d.ts +1 -1
  666. package/dist/src/providers/LanguageProvider.js.map +1 -1
  667. package/dist/src/providers/PromotionProvider.d.ts +1 -1
  668. package/dist/src/providers/PromotionProvider.js +1 -1
  669. package/dist/src/providers/PromotionProvider.js.map +1 -1
  670. package/dist/src/providers/RoomstayThemeEngine.d.ts +2 -2
  671. package/dist/src/providers/RoomstayThemeEngine.js +5 -7
  672. package/dist/src/providers/RoomstayThemeEngine.js.map +1 -1
  673. package/dist/src/providers/SessionProvider.js +4 -4
  674. package/dist/src/providers/SessionProvider.js.map +1 -1
  675. package/dist/src/providers/feature/Feature.d.ts +1 -1
  676. package/dist/src/providers/feature/Feature.js +3 -0
  677. package/dist/src/providers/feature/Feature.js.map +1 -1
  678. package/dist/src/providers/feature/InlineAddonStepFeature.js.map +1 -1
  679. package/dist/src/providers/feature/MemberPortalFeature.d.ts +0 -1
  680. package/dist/src/providers/feature/MemberPortalFeature.js +0 -1
  681. package/dist/src/providers/feature/MemberPortalFeature.js.map +1 -1
  682. package/dist/src/providers/feature/NumberOfPeopleBookedPillFeature.d.ts +0 -1
  683. package/dist/src/providers/feature/NumberOfPeopleBookedPillFeature.js +0 -1
  684. package/dist/src/providers/feature/NumberOfPeopleBookedPillFeature.js.map +1 -1
  685. package/dist/src/providers/storage/LocalStorageProvider.d.ts +2 -2
  686. package/dist/src/providers/storage/LocalStorageProvider.js.map +1 -1
  687. package/dist/src/reducers/BasketReducer.js +3 -2
  688. package/dist/src/reducers/BasketReducer.js.map +1 -1
  689. package/dist/src/routes/NaturallyProgressedStepRoute.js +6 -29
  690. package/dist/src/routes/NaturallyProgressedStepRoute.js.map +1 -1
  691. package/dist/src/stories/Alert.stories.d.ts +2 -2
  692. package/dist/src/stories/Alert.stories.js +2 -25
  693. package/dist/src/stories/Alert.stories.js.map +1 -1
  694. package/dist/src/stories/BEButton.stories.d.ts +2 -2
  695. package/dist/src/stories/BEButton.stories.js +2 -25
  696. package/dist/src/stories/BEButton.stories.js.map +1 -1
  697. package/dist/src/stories/BackButton.stories.d.ts +2 -2
  698. package/dist/src/stories/BackButton.stories.js +2 -25
  699. package/dist/src/stories/BackButton.stories.js.map +1 -1
  700. package/dist/src/stories/BookNowPayLaterInfoBlock.stories.d.ts +2 -2
  701. package/dist/src/stories/BookNowPayLaterInfoBlock.stories.js +4 -24
  702. package/dist/src/stories/BookNowPayLaterInfoBlock.stories.js.map +1 -1
  703. package/dist/src/stories/BookingWizard.stories.d.ts +5 -5
  704. package/dist/src/stories/BookingWizard.stories.js +25 -9
  705. package/dist/src/stories/BookingWizard.stories.js.map +1 -1
  706. package/dist/src/stories/Card.stories.d.ts +6 -3
  707. package/dist/src/stories/CardTypeSelect.stories.d.ts +3 -3
  708. package/dist/src/stories/CardTypeSelect.stories.js +4 -24
  709. package/dist/src/stories/CardTypeSelect.stories.js.map +1 -1
  710. package/dist/src/stories/Checkbox.stories.d.ts +3 -3
  711. package/dist/src/stories/Checkbox.stories.js +2 -25
  712. package/dist/src/stories/Checkbox.stories.js.map +1 -1
  713. package/dist/src/stories/ConfirmationModal.stories.js +6 -29
  714. package/dist/src/stories/ConfirmationModal.stories.js.map +1 -1
  715. package/dist/src/stories/Countdown.stories.d.ts +2 -2
  716. package/dist/src/stories/Countdown.stories.js +4 -27
  717. package/dist/src/stories/Countdown.stories.js.map +1 -1
  718. package/dist/src/stories/Currency.stories.d.ts +2 -2
  719. package/dist/src/stories/Currency.stories.js +2 -25
  720. package/dist/src/stories/Currency.stories.js.map +1 -1
  721. package/dist/src/stories/DateRangePicker.stories.js +25 -15
  722. package/dist/src/stories/DateRangePicker.stories.js.map +1 -1
  723. package/dist/src/stories/Distance.stories.d.ts +2 -2
  724. package/dist/src/stories/Distance.stories.js +2 -25
  725. package/dist/src/stories/Distance.stories.js.map +1 -1
  726. package/dist/src/stories/EnhancedPhoneNumberField.stories.d.ts +5 -0
  727. package/dist/src/stories/EnhancedPhoneNumberField.stories.js +2 -25
  728. package/dist/src/stories/EnhancedPhoneNumberField.stories.js.map +1 -1
  729. package/dist/src/stories/ErrorModal.stories.js +7 -30
  730. package/dist/src/stories/ErrorModal.stories.js.map +1 -1
  731. package/dist/src/stories/FloatingDateRangePicker.stories.d.ts +1 -1
  732. package/dist/src/stories/FloatingDateRangePicker.stories.js +15 -38
  733. package/dist/src/stories/FloatingDateRangePicker.stories.js.map +1 -1
  734. package/dist/src/stories/ForwardedSelect.stories.d.ts +3 -3
  735. package/dist/src/stories/ForwardedSelect.stories.js +4 -27
  736. package/dist/src/stories/ForwardedSelect.stories.js.map +1 -1
  737. package/dist/src/stories/Headline.stories.d.ts +2 -2
  738. package/dist/src/stories/Headline.stories.js +2 -25
  739. package/dist/src/stories/Headline.stories.js.map +1 -1
  740. package/dist/src/stories/Icon.stories.d.ts +2 -2
  741. package/dist/src/stories/Icon.stories.js +5 -2
  742. package/dist/src/stories/Icon.stories.js.map +1 -1
  743. package/dist/src/stories/IconNavCard.stories.d.ts +18 -8
  744. package/dist/src/stories/IconNavCard.stories.js +5 -25
  745. package/dist/src/stories/IconNavCard.stories.js.map +1 -1
  746. package/dist/src/stories/IconText.stories.d.ts +5 -0
  747. package/dist/src/stories/IconText.stories.js +4 -6
  748. package/dist/src/stories/IconText.stories.js.map +1 -1
  749. package/dist/src/stories/ImageLoader.stories.d.ts +2 -2
  750. package/dist/src/stories/ImageLoader.stories.js +2 -25
  751. package/dist/src/stories/ImageLoader.stories.js.map +1 -1
  752. package/dist/src/stories/InputGroup.stories.d.ts +2 -2
  753. package/dist/src/stories/InputGroup.stories.js +3 -26
  754. package/dist/src/stories/InputGroup.stories.js.map +1 -1
  755. package/dist/src/stories/LargeLoader.stories.d.ts +2 -2
  756. package/dist/src/stories/LargeLoader.stories.js +2 -25
  757. package/dist/src/stories/LargeLoader.stories.js.map +1 -1
  758. package/dist/src/stories/LineBreak.stories.d.ts +2 -2
  759. package/dist/src/stories/LineBreak.stories.js +2 -25
  760. package/dist/src/stories/LineBreak.stories.js.map +1 -1
  761. package/dist/src/stories/Notification.stories.d.ts +2 -2
  762. package/dist/src/stories/Notification.stories.js +2 -25
  763. package/dist/src/stories/Notification.stories.js.map +1 -1
  764. package/dist/src/stories/NumberIncrement.stories.js +6 -28
  765. package/dist/src/stories/NumberIncrement.stories.js.map +1 -1
  766. package/dist/src/stories/PasswordBox.stories.d.ts +3 -3
  767. package/dist/src/stories/PasswordBox.stories.js +4 -24
  768. package/dist/src/stories/PasswordBox.stories.js.map +1 -1
  769. package/dist/src/stories/PaymentCard.stories.d.ts +2 -2
  770. package/dist/src/stories/PaymentCard.stories.js +4 -24
  771. package/dist/src/stories/PaymentCard.stories.js.map +1 -1
  772. package/dist/src/stories/PaymentCardInput.stories.d.ts +4 -4
  773. package/dist/src/stories/PaymentCardInput.stories.js +13 -25
  774. package/dist/src/stories/PaymentCardInput.stories.js.map +1 -1
  775. package/dist/src/stories/Pill.stories.d.ts +2 -2
  776. package/dist/src/stories/Pill.stories.js +2 -25
  777. package/dist/src/stories/Pill.stories.js.map +1 -1
  778. package/dist/src/stories/Placeholder.stories.d.ts +2 -2
  779. package/dist/src/stories/Placeholder.stories.js +2 -25
  780. package/dist/src/stories/Placeholder.stories.js.map +1 -1
  781. package/dist/src/stories/PlanpayButton.stories.d.ts +3 -3
  782. package/dist/src/stories/PlanpayButton.stories.js +4 -24
  783. package/dist/src/stories/PlanpayButton.stories.js.map +1 -1
  784. package/dist/src/stories/PromoCodeInput.stories.d.ts +2 -2
  785. package/dist/src/stories/PromoCodeInput.stories.js +2 -25
  786. package/dist/src/stories/PromoCodeInput.stories.js.map +1 -1
  787. package/dist/src/stories/RadioButton.stories.d.ts +4 -4
  788. package/dist/src/stories/RadioButton.stories.js +4 -24
  789. package/dist/src/stories/RadioButton.stories.js.map +1 -1
  790. package/dist/src/stories/RadioButtonGroup.stories.d.ts +2 -2
  791. package/dist/src/stories/RadioButtonGroup.stories.js +4 -27
  792. package/dist/src/stories/RadioButtonGroup.stories.js.map +1 -1
  793. package/dist/src/stories/RadioFields.stories.d.ts +2 -2
  794. package/dist/src/stories/RadioFields.stories.js +2 -25
  795. package/dist/src/stories/RadioFields.stories.js.map +1 -1
  796. package/dist/src/stories/SSLSecureBadge.stories.d.ts +2 -2
  797. package/dist/src/stories/SSLSecureBadge.stories.js +1 -1
  798. package/dist/src/stories/SSLSecureBadge.stories.js.map +1 -1
  799. package/dist/src/stories/Select.stories.d.ts +14 -14
  800. package/dist/src/stories/Select.stories.js +18 -38
  801. package/dist/src/stories/Select.stories.js.map +1 -1
  802. package/dist/src/stories/SimpleModal.stories.js +11 -33
  803. package/dist/src/stories/SimpleModal.stories.js.map +1 -1
  804. package/dist/src/stories/Slider.stories.d.ts +4 -4
  805. package/dist/src/stories/Slider.stories.js +6 -26
  806. package/dist/src/stories/Slider.stories.js.map +1 -1
  807. package/dist/src/stories/SmallSpinner.stories.d.ts +2 -2
  808. package/dist/src/stories/SmallSpinner.stories.js +2 -25
  809. package/dist/src/stories/SmallSpinner.stories.js.map +1 -1
  810. package/dist/src/stories/TabbedModal.stories.js +6 -29
  811. package/dist/src/stories/TabbedModal.stories.js.map +1 -1
  812. package/dist/src/stories/Tabs.stories.d.ts +1 -1
  813. package/dist/src/stories/Tabs.stories.js +7 -30
  814. package/dist/src/stories/Tabs.stories.js.map +1 -1
  815. package/dist/src/stories/Text.stories.d.ts +2 -2
  816. package/dist/src/stories/Text.stories.js +2 -25
  817. package/dist/src/stories/Text.stories.js.map +1 -1
  818. package/dist/src/stories/TextArea.stories.d.ts +3 -3
  819. package/dist/src/stories/TextArea.stories.js +2 -25
  820. package/dist/src/stories/TextArea.stories.js.map +1 -1
  821. package/dist/src/stories/TextBox.stories.d.ts +3 -3
  822. package/dist/src/stories/TextBox.stories.js +2 -25
  823. package/dist/src/stories/TextBox.stories.js.map +1 -1
  824. package/dist/src/stories/Tooltip.stories.d.ts +2 -2
  825. package/dist/src/stories/Tooltip.stories.js +2 -25
  826. package/dist/src/stories/Tooltip.stories.js.map +1 -1
  827. package/dist/src/translations/Translation.d.ts +4 -0
  828. package/dist/src/translations/Translation.js +4 -0
  829. package/dist/src/translations/Translation.js.map +1 -1
  830. package/dist/src/translations/languages/en-gb.js +4 -0
  831. package/dist/src/translations/languages/en-gb.js.map +1 -1
  832. package/dist/src/util/AsyncAuth.d.ts +5 -0
  833. package/dist/src/util/AsyncAuth.js +44 -0
  834. package/dist/src/util/AsyncAuth.js.map +1 -0
  835. package/dist/src/util/DataLayer.js +3 -3
  836. package/dist/src/util/DataLayer.js.map +1 -1
  837. package/dist/src/util/EnumHelper.d.ts +1 -1
  838. package/dist/src/util/EnumHelper.js +1 -1
  839. package/dist/src/util/EnumHelper.js.map +1 -1
  840. package/dist/src/util/ObjectHelper.d.ts +1 -1
  841. package/dist/src/util/PaymentCardHelper.js +2 -1
  842. package/dist/src/util/PaymentCardHelper.js.map +1 -1
  843. package/dist/src/util/StepManager.d.ts +1 -1
  844. package/dist/src/util/Validation.d.ts +0 -1
  845. package/dist/src/util/Validation.js +3 -4
  846. package/dist/src/util/Validation.js.map +1 -1
  847. package/dist/test.bundle.js +1 -1
  848. package/dist/tests/jest/engines/RoomstayThemeEngine.test.js +5 -3
  849. package/dist/tests/jest/engines/RoomstayThemeEngine.test.js.map +1 -1
  850. package/dist/tests/jest/providers/LanguageProvider.test.js +6 -4
  851. package/dist/tests/jest/providers/LanguageProvider.test.js.map +1 -1
  852. package/dist/tests/jest/providers/SessionProvider.test.js +12 -10
  853. package/dist/tests/jest/providers/SessionProvider.test.js.map +1 -1
  854. package/dist/tests/jest/reducers/BasketReducer.test.js +2 -1
  855. package/dist/tests/jest/reducers/BasketReducer.test.js.map +1 -1
  856. package/dist/tests/offline/RoomstayBestRateAlert.js +6 -6
  857. package/dist/tests/offline/RoomstayBestRateAlert.js.map +1 -1
  858. package/dist/tests/offline/entry/ReactWrapper.js +26 -49
  859. package/dist/tests/offline/entry/ReactWrapper.js.map +1 -1
  860. package/dist/tests/offline/entry/allEngines.js +2 -2
  861. package/dist/tests/offline/entry/allEngines.js.map +1 -1
  862. package/dist/tests/offline/entry/components/TestPicker.js +42 -52
  863. package/dist/tests/offline/entry/components/TestPicker.js.map +1 -1
  864. package/dist/tests/setupTests.js +1 -0
  865. package/dist/tests/setupTests.js.map +1 -1
  866. package/dist/vendors.bundle.js +1 -1
  867. package/dist/vendors.bundle.js.LICENSE.txt +0 -31
  868. package/package.json +11 -5
  869. package/dist/src/pages/account/Reservations/AccountReservationCancelledPage.d.ts +0 -1
  870. package/dist/src/pages/account/Reservations/AccountReservationCancelledPage.js +0 -133
  871. package/dist/src/pages/account/Reservations/AccountReservationCancelledPage.js.map +0 -1
  872. package/dist/src/pages/account/Reservations/AccountReservationMultiplePage.d.ts +0 -2
  873. package/dist/src/pages/account/Reservations/AccountReservationMultiplePage.js +0 -158
  874. package/dist/src/pages/account/Reservations/AccountReservationMultiplePage.js.map +0 -1
@@ -22,7 +22,7 @@ const PromotionRemovedEvent_1 = require("../events/actions/Promotion/PromotionRe
22
22
  const RoomstayEventManager_1 = __importDefault(require("../events/RoomstayEventManager"));
23
23
  const EventHook_1 = require("../hooks/EventHook");
24
24
  const react_1 = require("react");
25
- let _loadedPromotions = [];
25
+ const _loadedPromotions = [];
26
26
  let basketContextLoaded = false;
27
27
  const registerPromotion = (promotion) => {
28
28
  if (basketContextLoaded) {
@@ -1 +1 @@
1
- {"version":3,"file":"PromotionProvider.js","sourceRoot":"/","sources":["src/providers/PromotionProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import { BasketContextType, CompanyContext } from '@frontend/contexts';\nimport dayjs from 'dayjs';\nimport { MemberOnlyFenceSignUp } from '@/events/actions/MemberOnlyFence/MemberOnlyFenceSignUp';\nimport { PromotionAddEvent } from '@/events/actions/Promotion/PromotionAddedEvent';\nimport { PromotionClickedEvent } from '@/events/actions/Promotion/PromotionClickedEvent';\nimport { PromotionRemoveEvent } from '@/events/actions/Promotion/PromotionRemovedEvent';\nimport RoomstayEventManager from '@/events/RoomstayEventManager';\nimport { useEvent } from '@/hooks/EventHook';\nimport BasketRow from '@/models/BasketRow';\nimport { IPromotion, IPromotionTestCriteria } from '@/models/Promotion/IPromotion.type';\nimport { useContext, useEffect, useState } from 'react';\n\nlet _loadedPromotions: IPromotion[] = [];\nlet basketContextLoaded = false;\n\nexport const registerPromotion = (promotion: IPromotion) => {\n if (basketContextLoaded) {\n RoomstayEventManager.raise(new PromotionAddEvent(promotion));\n } else {\n const promoIndex = getPromoIndex(promotion.name, _loadedPromotions);\n\n if (promoIndex === -1) {\n _loadedPromotions.push(promotion);\n } else {\n _loadedPromotions[promoIndex] = promotion;\n }\n }\n};\n\nexport const removePromotion = (promotion: IPromotion) => {\n if (basketContextLoaded) {\n RoomstayEventManager.raise(new PromotionRemoveEvent(promotion));\n } else {\n const promoIndex = getPromoIndex(promotion.name, _loadedPromotions);\n\n if (promoIndex !== -1) {\n _loadedPromotions.splice(promoIndex, 1);\n }\n }\n};\n\nconst getPromoIndex = (name: string, promoList: IPromotion[]) => {\n for (let i = 0; i < promoList.length; i++) {\n if (promoList[i].name === name) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * Used by the Basket context to bind to state.\n */\nexport const usePromotionContainer = ({ selectedBasketRow, updateBasketRow }: { selectedBasketRow: BasketRow; updateBasketRow: BasketContextType['updateBasketRow'] }) => {\n const ccx = useContext(CompanyContext);\n\n const [bump, setBump] = useState(0);\n const [allPromotions, setAllPromotions] = useState<IPromotion[]>(_loadedPromotions ?? []);\n\n // TODO: Current implementation only supports a single promotion. In the future there will be multiple promotion locations\n const [loadedPromotion, setLoadedPromotion] = useState<IPromotion>(null);\n\n const { on } = useEvent();\n\n useEffect(() => {\n basketContextLoaded = true;\n\n const updateBasketRowContext = (promotion: IPromotion) => {\n if (!promotion) {\n // We don't care about non promo sign ups;\n return;\n }\n\n if (selectedBasketRow) {\n const criteria = {\n checkInDate: selectedBasketRow.getStartDate(),\n checkOutDate: selectedBasketRow.getEndDate(),\n adults: selectedBasketRow.getAdults(),\n children: selectedBasketRow.getChildren(),\n promoCode: selectedBasketRow.getPromoCode(),\n };\n\n const { checkInDate, checkOutDate, adults, children, promoCode } = promotion.onApply(criteria);\n\n if (checkInDate) {\n selectedBasketRow.setStartDate(dayjs(checkInDate));\n }\n\n if (checkOutDate) {\n selectedBasketRow.setEndDate(dayjs(checkOutDate));\n }\n\n if (adults) {\n selectedBasketRow.setAdults(adults);\n }\n\n if (children) {\n selectedBasketRow.setChildren(children);\n }\n\n if (promoCode) {\n selectedBasketRow.setPromoCode(promoCode);\n }\n\n updateBasketRow(selectedBasketRow);\n }\n };\n\n on(\n PromotionAddEvent,\n async (event: PromotionAddEvent) => {\n if (event?.promotion) {\n setAllPromotions((oldPromotions) => {\n const promoIndex = getPromoIndex(event.promotion.name, oldPromotions);\n\n if (promoIndex === -1) {\n return [...oldPromotions, event.promotion];\n } else {\n oldPromotions[promoIndex] = event.promotion;\n return oldPromotions;\n }\n });\n }\n },\n 'root'\n );\n\n on(\n PromotionRemoveEvent,\n async (event: PromotionRemoveEvent) => {\n if (event?.promotion) {\n setAllPromotions((oldPromotions) => {\n if (oldPromotions.length === 0) {\n return [];\n }\n\n return oldPromotions.filter((promo) => {\n if (promo.name !== event.promotion.name) {\n return promo;\n }\n return false;\n });\n });\n\n setBump((a) => a + 1);\n }\n },\n 'root'\n );\n\n on(\n PromotionClickedEvent,\n async (event: PromotionClickedEvent) => {\n const { promotion } = event;\n\n if (!promotion) {\n // We shouldn't be here, but just in case we are...\n return;\n }\n\n if (!ccx.signedInUser && promotion.requireMemberPromotion) {\n ccx.openMemberSignupModal(promotion);\n } else {\n updateBasketRowContext(promotion);\n }\n },\n 'root'\n );\n\n on(\n MemberOnlyFenceSignUp,\n async (event: MemberOnlyFenceSignUp) => {\n updateBasketRowContext(event.promotion);\n },\n 'root'\n );\n }, [ccx.signedInUser, selectedBasketRow, allPromotions, setAllPromotions, loadedPromotion, setLoadedPromotion]);\n\n useEffect(() => {\n if (selectedBasketRow) {\n const criteria = {\n checkInDate: selectedBasketRow.getStartDate(),\n checkOutDate: selectedBasketRow.getEndDate(),\n adults: selectedBasketRow.getAdults(),\n children: selectedBasketRow.getChildren(),\n promoCode: selectedBasketRow.getPromoCode(),\n };\n\n onPromotionCriteriaChanged(criteria);\n }\n }, [\n selectedBasketRow,\n selectedBasketRow?.getAdults(),\n selectedBasketRow?.getChildren(),\n selectedBasketRow?.getArrivalDate(),\n selectedBasketRow?.getEndDate(),\n selectedBasketRow?.getPromoCode(),\n allPromotions,\n bump,\n ]);\n\n useEffect(() => {\n if (!loadedPromotion) {\n return;\n }\n\n let loadedExists = false;\n for (const promotion of allPromotions) {\n if (promotion.name === loadedPromotion.name) {\n loadedExists = true;\n break;\n }\n }\n\n if (!loadedExists) {\n setLoadedPromotion(null);\n }\n }, [allPromotions, loadedPromotion]);\n\n /**\n * Checks all the registered promotions, and returns the first one that matches the criteria.\n *\n * @param criteria\n */\n const checkPromotions = async (criteria: IPromotionTestCriteria) => {\n for (const promotion of allPromotions) {\n if (await promotion.testCriteria(criteria)) {\n return promotion;\n }\n }\n\n return null;\n };\n\n const onPromotionCriteriaChanged = (criteria: IPromotionTestCriteria) => {\n checkPromotions(criteria)\n .then((promo) => {\n setLoadedPromotion(promo);\n })\n .catch(() => {\n setLoadedPromotion(null);\n });\n };\n\n return {\n loadedPromotion,\n };\n};\n"]}
1
+ {"version":3,"file":"PromotionProvider.js","sourceRoot":"/","sources":["src/providers/PromotionProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import { BasketContextType, CompanyContext } from '@frontend/contexts';\nimport dayjs from 'dayjs';\nimport { MemberOnlyFenceSignUp } from '@/events/actions/MemberOnlyFence/MemberOnlyFenceSignUp';\nimport { PromotionAddEvent } from '@/events/actions/Promotion/PromotionAddedEvent';\nimport { PromotionClickedEvent } from '@/events/actions/Promotion/PromotionClickedEvent';\nimport { PromotionRemoveEvent } from '@/events/actions/Promotion/PromotionRemovedEvent';\nimport RoomstayEventManager from '@/events/RoomstayEventManager';\nimport { useEvent } from '@/hooks/EventHook';\nimport BasketRow from '@/models/BasketRow';\nimport { IPromotion, IPromotionTestCriteria } from '@/models/Promotion/IPromotion.type';\nimport { useContext, useEffect, useState } from 'react';\n\nconst _loadedPromotions: IPromotion[] = [];\nlet basketContextLoaded = false;\n\nexport const registerPromotion = (promotion: IPromotion) => {\n if (basketContextLoaded) {\n RoomstayEventManager.raise(new PromotionAddEvent(promotion));\n } else {\n const promoIndex = getPromoIndex(promotion.name, _loadedPromotions);\n\n if (promoIndex === -1) {\n _loadedPromotions.push(promotion);\n } else {\n _loadedPromotions[promoIndex] = promotion;\n }\n }\n};\n\nexport const removePromotion = (promotion: IPromotion) => {\n if (basketContextLoaded) {\n RoomstayEventManager.raise(new PromotionRemoveEvent(promotion));\n } else {\n const promoIndex = getPromoIndex(promotion.name, _loadedPromotions);\n\n if (promoIndex !== -1) {\n _loadedPromotions.splice(promoIndex, 1);\n }\n }\n};\n\nconst getPromoIndex = (name: string, promoList: IPromotion[]) => {\n for (let i = 0; i < promoList.length; i++) {\n if (promoList[i].name === name) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * Used by the Basket context to bind to state.\n */\nexport const usePromotionContainer = ({ selectedBasketRow, updateBasketRow }: { selectedBasketRow: BasketRow; updateBasketRow: BasketContextType['updateBasketRow'] }) => {\n const ccx = useContext(CompanyContext);\n\n const [bump, setBump] = useState(0);\n const [allPromotions, setAllPromotions] = useState<IPromotion[]>(_loadedPromotions ?? []);\n\n // TODO: Current implementation only supports a single promotion. In the future there will be multiple promotion locations\n const [loadedPromotion, setLoadedPromotion] = useState<IPromotion | null>(null);\n\n const { on } = useEvent();\n\n useEffect(() => {\n basketContextLoaded = true;\n\n const updateBasketRowContext = (promotion: IPromotion) => {\n if (!promotion) {\n // We don't care about non promo sign ups;\n return;\n }\n\n if (selectedBasketRow) {\n const criteria = {\n checkInDate: selectedBasketRow.getStartDate(),\n checkOutDate: selectedBasketRow.getEndDate(),\n adults: selectedBasketRow.getAdults(),\n children: selectedBasketRow.getChildren(),\n promoCode: selectedBasketRow.getPromoCode(),\n };\n\n const { checkInDate, checkOutDate, adults, children, promoCode } = promotion.onApply(criteria);\n\n if (checkInDate) {\n selectedBasketRow.setStartDate(dayjs(checkInDate));\n }\n\n if (checkOutDate) {\n selectedBasketRow.setEndDate(dayjs(checkOutDate));\n }\n\n if (adults) {\n selectedBasketRow.setAdults(adults);\n }\n\n if (children) {\n selectedBasketRow.setChildren(children);\n }\n\n if (promoCode) {\n selectedBasketRow.setPromoCode(promoCode);\n }\n\n updateBasketRow(selectedBasketRow);\n }\n };\n\n on(\n PromotionAddEvent,\n async (event: PromotionAddEvent) => {\n if (event?.promotion) {\n setAllPromotions((oldPromotions) => {\n const promoIndex = getPromoIndex(event.promotion.name, oldPromotions);\n\n if (promoIndex === -1) {\n return [...oldPromotions, event.promotion];\n } else {\n oldPromotions[promoIndex] = event.promotion;\n return oldPromotions;\n }\n });\n }\n },\n 'root'\n );\n\n on(\n PromotionRemoveEvent,\n async (event: PromotionRemoveEvent) => {\n if (event?.promotion) {\n setAllPromotions((oldPromotions) => {\n if (oldPromotions.length === 0) {\n return [];\n }\n\n return oldPromotions.filter((promo) => {\n if (promo.name !== event.promotion.name) {\n return promo;\n }\n return false;\n });\n });\n\n setBump((a) => a + 1);\n }\n },\n 'root'\n );\n\n on(\n PromotionClickedEvent,\n async (event: PromotionClickedEvent) => {\n const { promotion } = event;\n\n if (!promotion) {\n // We shouldn't be here, but just in case we are...\n return;\n }\n\n if (!ccx.signedInUser && promotion.requireMemberPromotion) {\n ccx.openMemberSignupModal(promotion);\n } else {\n updateBasketRowContext(promotion);\n }\n },\n 'root'\n );\n\n on(\n MemberOnlyFenceSignUp,\n async (event: MemberOnlyFenceSignUp) => {\n updateBasketRowContext(event.promotion as IPromotion);\n },\n 'root'\n );\n }, [ccx.signedInUser, selectedBasketRow, allPromotions, setAllPromotions, loadedPromotion, setLoadedPromotion]);\n\n useEffect(() => {\n if (selectedBasketRow) {\n const criteria = {\n checkInDate: selectedBasketRow.getStartDate(),\n checkOutDate: selectedBasketRow.getEndDate(),\n adults: selectedBasketRow.getAdults(),\n children: selectedBasketRow.getChildren(),\n promoCode: selectedBasketRow.getPromoCode(),\n };\n\n onPromotionCriteriaChanged(criteria);\n }\n }, [\n selectedBasketRow,\n selectedBasketRow?.getAdults(),\n selectedBasketRow?.getChildren(),\n selectedBasketRow?.getArrivalDate(),\n selectedBasketRow?.getEndDate(),\n selectedBasketRow?.getPromoCode(),\n allPromotions,\n bump,\n ]);\n\n useEffect(() => {\n if (!loadedPromotion) {\n return;\n }\n\n let loadedExists = false;\n for (const promotion of allPromotions) {\n if (promotion.name === loadedPromotion.name) {\n loadedExists = true;\n break;\n }\n }\n\n if (!loadedExists) {\n setLoadedPromotion(null);\n }\n }, [allPromotions, loadedPromotion]);\n\n /**\n * Checks all the registered promotions, and returns the first one that matches the criteria.\n *\n * @param criteria\n */\n const checkPromotions = async (criteria: IPromotionTestCriteria) => {\n for (const promotion of allPromotions) {\n if (await promotion.testCriteria(criteria)) {\n return promotion;\n }\n }\n\n return null;\n };\n\n const onPromotionCriteriaChanged = (criteria: IPromotionTestCriteria) => {\n checkPromotions(criteria)\n .then((promo) => {\n setLoadedPromotion(promo);\n })\n .catch(() => {\n setLoadedPromotion(null);\n });\n };\n\n return {\n loadedPromotion,\n };\n};\n"]}
@@ -14,8 +14,8 @@ export declare enum RoomstayTheme {
14
14
  declare class RoomstayThemeEngine {
15
15
  currentCompany: Company | null;
16
16
  EngineContainer: HTMLElement;
17
- ScriptContainer: Element;
18
- StyleContainer: Element;
17
+ ScriptContainer: Element | null;
18
+ StyleContainer: Element | null;
19
19
  selectedLang: Language;
20
20
  isLocalhost: boolean;
21
21
  ThemeType: RoomstayTheme;
@@ -36,9 +36,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  };
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
38
  exports.RoomstayTheme = void 0;
39
- // tslint:disable-next-line: no-submodule-imports
40
39
  const isSameOrAfter_1 = __importDefault(require("dayjs/plugin/isSameOrAfter"));
41
- // tslint:disable-next-line: no-submodule-imports
42
40
  const isSameOrBefore_1 = __importDefault(require("dayjs/plugin/isSameOrBefore"));
43
41
  const dayjs_1 = __importDefault(require("dayjs"));
44
42
  const LanguageProvider_1 = require("./LanguageProvider");
@@ -46,7 +44,6 @@ const i18next_1 = __importDefault(require("i18next"));
46
44
  const react_i18next_1 = require("react-i18next");
47
45
  const Sentry = __importStar(require("@sentry/browser"));
48
46
  const ROP = __importStar(require("@juggle/resize-observer"));
49
- /** @ts-ignore */
50
47
  if (typeof ResizeObserver === 'undefined') {
51
48
  window.ResizeObserver = ROP.ResizeObserver;
52
49
  }
@@ -134,6 +131,7 @@ class RoomstayThemeEngine {
134
131
  });
135
132
  });
136
133
  this.loadScript = (src, name) => new Promise((resolve) => {
134
+ var _a;
137
135
  const script = this.createElementOrReuseExisting('script', `script-${name}`);
138
136
  if (script.hasAttribute('src') && script.getAttribute('src') === src) {
139
137
  resolve();
@@ -144,7 +142,7 @@ class RoomstayThemeEngine {
144
142
  resolve();
145
143
  });
146
144
  }
147
- this.ScriptContainer.appendChild(script);
145
+ (_a = this.ScriptContainer) === null || _a === void 0 ? void 0 : _a.appendChild(script);
148
146
  });
149
147
  this.createElementOrReuseExisting = (type, name) => {
150
148
  const container = this.EngineContainer;
@@ -173,11 +171,11 @@ class RoomstayThemeEngine {
173
171
  Sentry.init({
174
172
  dsn: 'https://3bfba949561e48f1862c843ce8254a2d@o398412.ingest.sentry.io/5254086',
175
173
  beforeSend: (event, hint) => {
176
- var _a;
174
+ var _a, _b;
177
175
  event.tags = (_a = event.tags) !== null && _a !== void 0 ? _a : { logger: '_default_' };
178
176
  try {
179
- if (hint.originalException instanceof Error) {
180
- if (hint.originalException.stack.indexOf('www.googletagmanager.com/gtm.js?id=') > -1) {
177
+ if ((hint === null || hint === void 0 ? void 0 : hint.originalException) instanceof Error) {
178
+ if (((_b = hint.originalException.stack) === null || _b === void 0 ? void 0 : _b.indexOf('www.googletagmanager.com/gtm.js?id=')) > -1) {
181
179
  event.tags.logger = 'gtm';
182
180
  event.level = Sentry.Severity.Warning;
183
181
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RoomstayThemeEngine.js","sourceRoot":"/","sources":["src/providers/RoomstayThemeEngine.ts"],"names":[],"mappings":"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","sourcesContent":["// tslint:disable-next-line: no-submodule-imports\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter';\n// tslint:disable-next-line: no-submodule-imports\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore';\nimport dayjs from 'dayjs';\n\nimport { LanguageProvider, Language } from '@/providers/LanguageProvider';\n\nimport i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport * as Sentry from '@sentry/browser';\nimport * as ROP from '@juggle/resize-observer';\nimport type { Company } from '@/models/Client/Hotel/Company';\nimport type ColorProfile from '@/models/Client/Hotel/ColorProfile';\n\ndeclare global {\n interface Window {\n ResizeObserver: any;\n }\n}\n\ndeclare const ASSET_URL: string;\n\nexport declare const RS_VERSION: string;\n\n/** @ts-ignore */\nif (typeof ResizeObserver === 'undefined') {\n window.ResizeObserver = ROP.ResizeObserver;\n}\n\nexport enum RoomstayTheme {\n Medium = 'medium',\n Light = 'light',\n}\nclass RoomstayThemeEngine {\n public currentCompany: Company | null = null;\n\n public EngineContainer: HTMLElement;\n\n public ScriptContainer: Element = null;\n public StyleContainer: Element = null;\n\n public selectedLang: Language = Language.en_us;\n\n // TODO This needs to be changed, not ideal to just check for localhost\n public isLocalhost: boolean = location.hostname === 'localhost';\n\n // TODO: This needs to be refactored to not be a fixed string.\n public ThemeType = RoomstayTheme.Light;\n\n public ExternalStyles: string[] = [];\n public ExternalScripts: string[] = ['https://js.verygoodvault.com/vgs-collect/1/AC7dReJwJ6EWF1L9FHdcCw7n.js'];\n\n public constructor() {\n console.log(`Initializing Roomstay Booking Engine v${RS_VERSION}`);\n }\n\n private reloadScriptAndStyleContainers = () => {\n this.StyleContainer = this.createElementOrReuseExisting('div', 'style-container');\n this.ScriptContainer = this.createElementOrReuseExisting('div', 'script-container');\n\n this.ScriptContainer.innerHTML = '';\n this.StyleContainer.innerHTML = '';\n\n this.registerStyles();\n };\n\n public changeCompany = (newCompany: Company) => {\n this.currentCompany = newCompany;\n this.registerStyles(newCompany.colors);\n };\n\n public changeTheme = async (profile: ColorProfile) => {\n const styleOverrides = this.createElementOrReuseExisting('style', 'engine-styles');\n\n styleOverrides.setAttribute('rel', 'preload');\n\n let headerOverrides = '';\n if (profile.navbar) {\n headerOverrides = `\n --rs-color-header-background: ${profile.navbar.background}!important;\n --rs-color-header-text: ${profile.navbar.text}!important;\n --rs-color-header-text-active: ${profile.navbar.textActive}!important;\n `;\n }\n\n styleOverrides.innerHTML = `\n :root {\n --rs-color-accent-1: ${profile.accent}!important;\n --rs-color-accent-2: ${profile.accent2}!important;\n --rs-color-accent-3: ${profile.accent3}!important;\n\n ${headerOverrides}\n\n ${profile.success ? `--rs-color-success: ${profile.success}!important;` : ''}\n }\n `;\n };\n\n public registerStyles = async (profile?: ColorProfile) => {\n console.log('Loading custom Theme Styles');\n if (profile) {\n this.changeTheme(profile);\n }\n\n this.ExternalStyles.forEach((url, index) => {\n const style = this.createElementOrReuseExisting('link', `engine-external-style-${index}`);\n style.setAttribute('rel', 'stylesheet');\n style.setAttribute('href', this.getAssetUrl() + url);\n });\n };\n\n public getAssetUrl = () => {\n return this.isLocalhost ? '/' : ASSET_URL;\n };\n\n public getImageAssetUrl = (url = '') => {\n return this.getAssetUrl() + 'assets/img/' + url;\n };\n\n /**\n * Detects if URL is absolute, and needs to be\n * @param url string\n */\n public wrapAssetUrl = (url: string) => {\n if (url.match(/^(?:[a-z]+:)?\\/\\//)) {\n return url;\n }\n\n return this.getAssetUrl() + url;\n };\n\n public registerScripts = async () => {\n this.ExternalScripts.forEach((url: string, index) => {\n this.loadScript(url, `legacy-${index}`);\n });\n };\n\n public loadScript = (src: string, name: string): Promise<void> =>\n new Promise((resolve) => {\n const script = this.createElementOrReuseExisting('script', `script-${name}`);\n if (script.hasAttribute('src') && script.getAttribute('src') === src) {\n resolve();\n } else {\n script.setAttribute('src', src);\n script.addEventListener('load', () => {\n resolve();\n });\n }\n\n this.ScriptContainer.appendChild(script);\n });\n\n public createElementOrReuseExisting = <K extends keyof HTMLElementTagNameMap>(type: K, name: string) => {\n const container = this.EngineContainer;\n const findingElement = container.querySelector(`${type}[name=\"roomstay-${name}\"]`);\n\n if (findingElement) {\n return findingElement;\n } else {\n const target = document.createElement(type);\n target.setAttribute('name', `roomstay-${name}`);\n container.appendChild(target);\n return target;\n }\n };\n\n public init = async () => {\n dayjs.extend(isSameOrBefore);\n dayjs.extend(isSameOrAfter);\n\n if (i18n) {\n i18n.use(initReactI18next).init({\n interpolation: { escapeValue: false },\n lng: Language.en_us,\n resources: LanguageProvider.getI18nMappedLanguages(),\n });\n }\n\n if (!this.isLocalhost) {\n Sentry.init({\n dsn: 'https://3bfba949561e48f1862c843ce8254a2d@o398412.ingest.sentry.io/5254086',\n beforeSend: (event, hint) => {\n event.tags = event.tags ?? { logger: '_default_' };\n\n try {\n if (hint.originalException instanceof Error) {\n if (hint.originalException.stack.indexOf('www.googletagmanager.com/gtm.js?id=') > -1) {\n event.tags.logger = 'gtm';\n event.level = Sentry.Severity.Warning;\n }\n }\n } catch (ex) {\n console.log(ex);\n }\n\n return event;\n },\n });\n }\n\n this.reloadScriptAndStyleContainers();\n };\n}\n\nexport default new RoomstayThemeEngine();\n"]}
1
+ {"version":3,"file":"RoomstayThemeEngine.js","sourceRoot":"/","sources":["src/providers/RoomstayThemeEngine.ts"],"names":[],"mappings":"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","sourcesContent":["import isSameOrAfter from 'dayjs/plugin/isSameOrAfter';\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore';\nimport dayjs from 'dayjs';\n\nimport { LanguageProvider, Language } from '@/providers/LanguageProvider';\n\nimport i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport * as Sentry from '@sentry/browser';\nimport * as ROP from '@juggle/resize-observer';\nimport type { Company } from '@/models/Client/Hotel/Company';\nimport type ColorProfile from '@/models/Client/Hotel/ColorProfile';\n\ndeclare global {\n interface Window {\n ResizeObserver: any;\n }\n}\n\ndeclare const ASSET_URL: string;\n\nexport declare const RS_VERSION: string;\n\nif (typeof ResizeObserver === 'undefined') {\n window.ResizeObserver = ROP.ResizeObserver;\n}\n\nexport enum RoomstayTheme {\n Medium = 'medium',\n Light = 'light',\n}\nclass RoomstayThemeEngine {\n public currentCompany: Company | null = null;\n\n public EngineContainer!: HTMLElement;\n\n public ScriptContainer: Element | null = null;\n public StyleContainer: Element | null = null;\n\n public selectedLang: Language = Language.en_us;\n\n // TODO This needs to be changed, not ideal to just check for localhost\n public isLocalhost: boolean = location.hostname === 'localhost';\n\n // TODO: This needs to be refactored to not be a fixed string.\n public ThemeType = RoomstayTheme.Light;\n\n public ExternalStyles: string[] = [];\n public ExternalScripts: string[] = ['https://js.verygoodvault.com/vgs-collect/1/AC7dReJwJ6EWF1L9FHdcCw7n.js'];\n\n public constructor() {\n console.log(`Initializing Roomstay Booking Engine v${RS_VERSION}`);\n }\n\n private reloadScriptAndStyleContainers = () => {\n this.StyleContainer = this.createElementOrReuseExisting('div', 'style-container');\n this.ScriptContainer = this.createElementOrReuseExisting('div', 'script-container');\n\n this.ScriptContainer.innerHTML = '';\n this.StyleContainer.innerHTML = '';\n\n this.registerStyles();\n };\n\n public changeCompany = (newCompany: Company) => {\n this.currentCompany = newCompany;\n this.registerStyles(newCompany.colors);\n };\n\n public changeTheme = async (profile: ColorProfile) => {\n const styleOverrides = this.createElementOrReuseExisting('style', 'engine-styles');\n\n styleOverrides.setAttribute('rel', 'preload');\n\n let headerOverrides = '';\n if (profile.navbar) {\n headerOverrides = `\n --rs-color-header-background: ${profile.navbar.background}!important;\n --rs-color-header-text: ${profile.navbar.text}!important;\n --rs-color-header-text-active: ${profile.navbar.textActive}!important;\n `;\n }\n\n styleOverrides.innerHTML = `\n :root {\n --rs-color-accent-1: ${profile.accent}!important;\n --rs-color-accent-2: ${profile.accent2}!important;\n --rs-color-accent-3: ${profile.accent3}!important;\n\n ${headerOverrides}\n\n ${profile.success ? `--rs-color-success: ${profile.success}!important;` : ''}\n }\n `;\n };\n\n public registerStyles = async (profile?: ColorProfile) => {\n console.log('Loading custom Theme Styles');\n if (profile) {\n this.changeTheme(profile);\n }\n\n this.ExternalStyles.forEach((url, index) => {\n const style = this.createElementOrReuseExisting('link', `engine-external-style-${index}`);\n style.setAttribute('rel', 'stylesheet');\n style.setAttribute('href', this.getAssetUrl() + url);\n });\n };\n\n public getAssetUrl = () => {\n return this.isLocalhost ? '/' : ASSET_URL;\n };\n\n public getImageAssetUrl = (url = '') => {\n return this.getAssetUrl() + 'assets/img/' + url;\n };\n\n /**\n * Detects if URL is absolute, and needs to be\n * @param url string\n */\n public wrapAssetUrl = (url: string) => {\n if (url.match(/^(?:[a-z]+:)?\\/\\//)) {\n return url;\n }\n\n return this.getAssetUrl() + url;\n };\n\n public registerScripts = async () => {\n this.ExternalScripts.forEach((url: string, index) => {\n this.loadScript(url, `legacy-${index}`);\n });\n };\n\n public loadScript = (src: string, name: string): Promise<void> =>\n new Promise((resolve) => {\n const script = this.createElementOrReuseExisting('script', `script-${name}`);\n if (script.hasAttribute('src') && script.getAttribute('src') === src) {\n resolve();\n } else {\n script.setAttribute('src', src);\n script.addEventListener('load', () => {\n resolve();\n });\n }\n\n this.ScriptContainer?.appendChild(script);\n });\n\n public createElementOrReuseExisting = <K extends keyof HTMLElementTagNameMap>(type: K, name: string) => {\n const container = this.EngineContainer;\n const findingElement = container.querySelector(`${type}[name=\"roomstay-${name}\"]`);\n\n if (findingElement) {\n return findingElement;\n } else {\n const target = document.createElement(type);\n target.setAttribute('name', `roomstay-${name}`);\n container.appendChild(target);\n return target;\n }\n };\n\n public init = async () => {\n dayjs.extend(isSameOrBefore);\n dayjs.extend(isSameOrAfter);\n\n if (i18n) {\n i18n.use(initReactI18next).init({\n interpolation: { escapeValue: false },\n lng: Language.en_us,\n resources: LanguageProvider.getI18nMappedLanguages(),\n });\n }\n\n if (!this.isLocalhost) {\n Sentry.init({\n dsn: 'https://3bfba949561e48f1862c843ce8254a2d@o398412.ingest.sentry.io/5254086',\n beforeSend: (event, hint) => {\n event.tags = event.tags ?? { logger: '_default_' };\n\n try {\n if (hint?.originalException instanceof Error) {\n if ((hint.originalException.stack?.indexOf('www.googletagmanager.com/gtm.js?id=') as number) > -1) {\n event.tags.logger = 'gtm';\n event.level = Sentry.Severity.Warning;\n }\n }\n } catch (ex) {\n console.log(ex);\n }\n\n return event;\n },\n });\n }\n\n this.reloadScriptAndStyleContainers();\n };\n}\n\nexport default new RoomstayThemeEngine();\n"]}
@@ -86,7 +86,7 @@ class SessionProvider {
86
86
  return __awaiter(this, void 0, void 0, function* () {
87
87
  let session;
88
88
  if (sessionID) {
89
- session = yield this.findSession(sessionID);
89
+ session = (yield this.findSession(sessionID));
90
90
  if (session) {
91
91
  return session.id;
92
92
  }
@@ -163,8 +163,8 @@ class SessionProvider {
163
163
  unSerializeSession(session) {
164
164
  var _a;
165
165
  const basketRows = [];
166
- let startDate;
167
- let endDate;
166
+ let startDate = null;
167
+ let endDate = null;
168
168
  if (session.startDate) {
169
169
  startDate = (0, dayjs_1.default)(session.startDate, RoomstaySession_1.SERIALIZED_DATE_FORMAT);
170
170
  }
@@ -183,7 +183,7 @@ class SessionProvider {
183
183
  rate.unSerialize(serializedBasketRow.rate);
184
184
  rate.setRoom(room);
185
185
  }
186
- const basketRow = new BasketRow_1.default(rate !== null && rate !== void 0 ? rate : null, serializedBasketRow.uniqId);
186
+ const basketRow = new BasketRow_1.default(rate, serializedBasketRow.uniqId);
187
187
  if (serializedBasketRow.startDate) {
188
188
  basketRow.setStartDate((0, dayjs_1.default)(serializedBasketRow.startDate, RoomstaySession_1.SERIALIZED_DATE_FORMAT));
189
189
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SessionProvider.js","sourceRoot":"/","sources":["src/providers/SessionProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import { LocalStorageProvider } from '@/providers/storage/LocalStorageProvider';\nimport { RoomstaySession, SerializedRoomstaySession, SERIALIZED_DATE_FORMAT, SerializedRoomstaySessionBasketRow } from '@/models/RoomstaySession';\nimport dayjs from 'dayjs';\nimport BasketRow from '@/models/BasketRow';\nimport { RoomRate } from '@/models/Room/RoomRate';\nimport { Room } from '@/models/Room/Room';\nimport { debounce } from '../util/Debounce';\n\n/**\n * Session provider is in charge of handling the loading, saving and passing of the current Engine Session.\n *\n * Desired flow:\n * * App Opened\n * * Session Provider loaded\n * * New User Session Created\n * * User moves through the app, updating the session with vital details (current step, basket context )\n * * User refreshes browser - session is re-loaded and user resumes where they left off\n * * User proceeds to checkout.\n * * Session is saved.\n *\n * Mini Booking Widget:\n * * User loads mini booking widget, selects dates, people\n * * Rates are loaded, and user selects a rate, redirecting to Full Booking Engine\n * * Session Provider creates a SessionID to pass to redirected path\n * * Session Provider loads the passed SessionID and loads the correct session\n * * Resume to Desired Flow\n *\n * Re-targeting:\n * ---Since re-targeting will happen on client site, under client domain, localStorage will be preserved, ergo we can load the previous incomplete sessions back to the user\n * * User lands on client Homepage\n * * Session Provider loads previous incomplete sessions\n * * A slider with details of previous baskets is shown back to the user\n * * User clicks on a previous session and is brought to the Booking Engine\n * * Resume to Desired Flow\n */\nexport default class SessionProvider {\n private currentSessionID: number;\n private hotelID: string;\n private cachedSession: Partial<RoomstaySession> = {};\n\n public async setHotelID(hotelID: string) {\n this.hotelID = hotelID;\n this.updateSession({ hotelID });\n }\n\n public async initialize(sessionID?: number, source?: string) {\n await this.setSessionID(sessionID, source);\n }\n\n public async setSessionID(sessionID?: number, source?: string) {\n const foundSession = await this.findOrCreateSessionID(sessionID, source);\n\n if (foundSession) {\n this.currentSessionID = foundSession;\n\n const storage = new LocalStorageProvider(sessionStorage);\n await storage.write('currentSession', this.currentSessionID);\n }\n }\n\n /**\n * Function to find the right session from session storage, or local storage\n *\n * If one isn't found it is then created.\n */\n private async findOrCreateSessionID(sessionID: number, source: string) {\n let session: RoomstaySession;\n\n if (sessionID) {\n session = await this.findSession(sessionID);\n\n if (session) {\n return session.id;\n }\n }\n\n session = await this.generateNewSession(source);\n\n return session.id;\n }\n\n private async findSession(sessionID: number): Promise<RoomstaySession> {\n const storage = new LocalStorageProvider();\n\n const session = await storage.read<SerializedRoomstaySession>(this.getSessionKey(sessionID));\n\n if (session) {\n return this.unSerializeSession(session);\n }\n }\n\n private async generateNewSession(source: string): Promise<RoomstaySession> {\n const sessionId = new Date().getTime();\n\n const session: RoomstaySession = {\n id: sessionId,\n startDate: null,\n endDate: null,\n step: '',\n hotelID: this.hotelID ?? null,\n basketRows: [],\n source,\n };\n\n this.saveSession(session);\n\n return session;\n }\n\n private serializeSession(session: RoomstaySession): SerializedRoomstaySession {\n const basketRows: SerializedRoomstaySessionBasketRow[] = [];\n\n // TODO possibly refactor BasketRow to serialize itself, or instead make a serializer that can do all this.\n session.basketRows.forEach((unSerializeBasketRow: BasketRow) => {\n const rate = unSerializeBasketRow.getRate();\n const room = unSerializeBasketRow.getRoom();\n\n let serializedRate = null;\n let serializedRoom = null;\n\n if (rate) {\n serializedRate = rate.serialize();\n }\n\n if (room) {\n serializedRoom = room.serialize();\n }\n\n basketRows.push({\n uniqId: unSerializeBasketRow.getID(),\n startDate: unSerializeBasketRow.getStartDate()?.format(SERIALIZED_DATE_FORMAT),\n endDate: unSerializeBasketRow.getEndDate()?.format(SERIALIZED_DATE_FORMAT),\n adults: unSerializeBasketRow.getAdults(),\n children: unSerializeBasketRow.getChildren(),\n promoCode: unSerializeBasketRow.getPromoCode(),\n promoCodeStatus: unSerializeBasketRow.getPromoCodeStatus(),\n rate: serializedRate,\n room: serializedRoom,\n });\n });\n\n return {\n id: session.id,\n startDate: session.startDate?.format(SERIALIZED_DATE_FORMAT),\n endDate: session.endDate?.format(SERIALIZED_DATE_FORMAT),\n step: session.step,\n hotelID: session.hotelID,\n basketRows,\n source: session.source,\n reservation: session.reservation,\n };\n }\n\n private unSerializeSession(session: SerializedRoomstaySession): RoomstaySession {\n const basketRows: BasketRow[] = [];\n let startDate: dayjs.Dayjs;\n let endDate: dayjs.Dayjs;\n\n if (session.startDate) {\n startDate = dayjs(session.startDate, SERIALIZED_DATE_FORMAT);\n }\n\n if (session.endDate) {\n endDate = dayjs(session.endDate, SERIALIZED_DATE_FORMAT);\n }\n\n session.basketRows?.forEach((serializedBasketRow) => {\n let rate;\n let room;\n\n if (serializedBasketRow.room) {\n room = new Room();\n room.unSerialize(serializedBasketRow.room);\n }\n\n if (serializedBasketRow.rate && room) {\n rate = new RoomRate();\n rate.unSerialize(serializedBasketRow.rate);\n rate.setRoom(room);\n }\n\n const basketRow = new BasketRow(rate ?? null, serializedBasketRow.uniqId);\n\n if (serializedBasketRow.startDate) {\n basketRow.setStartDate(dayjs(serializedBasketRow.startDate, SERIALIZED_DATE_FORMAT));\n }\n if (serializedBasketRow.endDate) {\n basketRow.setEndDate(dayjs(serializedBasketRow.endDate, SERIALIZED_DATE_FORMAT));\n }\n\n basketRow.setAdults(serializedBasketRow.adults);\n basketRow.setChildren(serializedBasketRow.children);\n\n basketRows.push(basketRow);\n });\n\n return {\n id: session.id,\n startDate,\n endDate,\n step: session.step,\n hotelID: session.hotelID,\n basketRows,\n source: session.source,\n reservation: session.reservation,\n };\n }\n\n private getSessionKey(sessionId?: number): string {\n return `session-${sessionId ?? this.currentSessionID}`;\n }\n\n /**\n * @returns the current session ID\n */\n public getCurrentSessionID(): number {\n return this.currentSessionID;\n }\n\n public async getSession(): Promise<RoomstaySession> {\n const storage = new LocalStorageProvider();\n\n const sessionFromStorage = await storage.read<SerializedRoomstaySession>(this.getSessionKey());\n\n if (sessionFromStorage) {\n return this.unSerializeSession(sessionFromStorage);\n } else {\n return this.generateNewSession('');\n }\n }\n\n public async saveSession(changedSession: RoomstaySession) {\n if (!changedSession) {\n return console.log('Attempted to save empty session');\n }\n\n const storage = new LocalStorageProvider();\n\n const serializedSession = this.serializeSession(changedSession);\n\n await storage.write(this.getSessionKey(serializedSession.id), serializedSession);\n }\n\n private debouncedUpdateSession = debounce(async () => {\n const currentSession = await this.getSession();\n const cachedSession = this.cachedSession;\n this.cachedSession = {};\n await this.saveSession({\n ...currentSession,\n ...cachedSession,\n });\n }, 300);\n\n public async updateSession(partialSession: Partial<RoomstaySession>) {\n Object.assign(this.cachedSession, partialSession);\n this.debouncedUpdateSession();\n }\n\n public async deleteSession() {\n const storage = new LocalStorageProvider();\n storage.delete(this.getSessionKey());\n }\n\n public async getAllSessions() {\n const storage = new LocalStorageProvider();\n const sessionKeys = storage.getAllKeys((name) => name.startsWith('roomstay-session'));\n\n return (await storage.readAll<SerializedRoomstaySession>(sessionKeys)).map((session) => this.unSerializeSession(session));\n }\n}\n"]}
1
+ {"version":3,"file":"SessionProvider.js","sourceRoot":"/","sources":["src/providers/SessionProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import { LocalStorageProvider } from '@/providers/storage/LocalStorageProvider';\nimport { RoomstaySession, SerializedRoomstaySession, SERIALIZED_DATE_FORMAT, SerializedRoomstaySessionBasketRow } from '@/models/RoomstaySession';\nimport dayjs, { Dayjs } from 'dayjs';\nimport BasketRow from '@/models/BasketRow';\nimport { IRoomRate, RoomRate } from '@/models/Room/RoomRate';\nimport { IRoom, Room } from '@/models/Room/Room';\nimport { debounce } from '@/util/Debounce';\n\n/**\n * Session provider is in charge of handling the loading, saving and passing of the current Engine Session.\n *\n * Desired flow:\n * * App Opened\n * * Session Provider loaded\n * * New User Session Created\n * * User moves through the app, updating the session with vital details (current step, basket context )\n * * User refreshes browser - session is re-loaded and user resumes where they left off\n * * User proceeds to checkout.\n * * Session is saved.\n *\n * Mini Booking Widget:\n * * User loads mini booking widget, selects dates, people\n * * Rates are loaded, and user selects a rate, redirecting to Full Booking Engine\n * * Session Provider creates a SessionID to pass to redirected path\n * * Session Provider loads the passed SessionID and loads the correct session\n * * Resume to Desired Flow\n *\n * Re-targeting:\n * ---Since re-targeting will happen on client site, under client domain, localStorage will be preserved, ergo we can load the previous incomplete sessions back to the user\n * * User lands on client Homepage\n * * Session Provider loads previous incomplete sessions\n * * A slider with details of previous baskets is shown back to the user\n * * User clicks on a previous session and is brought to the Booking Engine\n * * Resume to Desired Flow\n */\nexport default class SessionProvider {\n private currentSessionID!: number;\n private hotelID!: string;\n private cachedSession: Partial<RoomstaySession> = {};\n\n public async setHotelID(hotelID: string) {\n this.hotelID = hotelID;\n this.updateSession({ hotelID });\n }\n\n public async initialize(sessionID?: number, source?: string) {\n await this.setSessionID(sessionID, source);\n }\n\n public async setSessionID(sessionID?: number, source?: string) {\n const foundSession = await this.findOrCreateSessionID(sessionID as number, source as string);\n\n if (foundSession) {\n this.currentSessionID = foundSession;\n\n const storage = new LocalStorageProvider(sessionStorage);\n await storage.write('currentSession', this.currentSessionID);\n }\n }\n\n /**\n * Function to find the right session from session storage, or local storage\n *\n * If one isn't found it is then created.\n */\n private async findOrCreateSessionID(sessionID: number, source: string) {\n let session: RoomstaySession;\n\n if (sessionID) {\n session = (await this.findSession(sessionID)) as RoomstaySession;\n\n if (session) {\n return session.id;\n }\n }\n\n session = await this.generateNewSession(source);\n\n return session.id;\n }\n\n private async findSession(sessionID: number): Promise<RoomstaySession | undefined> {\n const storage = new LocalStorageProvider();\n\n const session = await storage.read<SerializedRoomstaySession>(this.getSessionKey(sessionID));\n\n if (session) {\n return this.unSerializeSession(session);\n }\n }\n\n private async generateNewSession(source: string): Promise<RoomstaySession> {\n const sessionId = new Date().getTime();\n\n const session: RoomstaySession = {\n id: sessionId,\n startDate: null,\n endDate: null,\n step: '',\n hotelID: this.hotelID ?? null,\n basketRows: [],\n source,\n };\n\n this.saveSession(session);\n\n return session;\n }\n\n private serializeSession(session: RoomstaySession): SerializedRoomstaySession {\n const basketRows: SerializedRoomstaySessionBasketRow[] = [];\n\n // TODO possibly refactor BasketRow to serialize itself, or instead make a serializer that can do all this.\n session.basketRows.forEach((unSerializeBasketRow: BasketRow) => {\n const rate = unSerializeBasketRow.getRate();\n const room = unSerializeBasketRow.getRoom();\n\n let serializedRate = null;\n let serializedRoom = null;\n\n if (rate) {\n serializedRate = rate.serialize();\n }\n\n if (room) {\n serializedRoom = room.serialize();\n }\n\n basketRows.push({\n uniqId: unSerializeBasketRow.getID(),\n startDate: unSerializeBasketRow.getStartDate()?.format(SERIALIZED_DATE_FORMAT),\n endDate: unSerializeBasketRow.getEndDate()?.format(SERIALIZED_DATE_FORMAT),\n adults: unSerializeBasketRow.getAdults(),\n children: unSerializeBasketRow.getChildren(),\n promoCode: unSerializeBasketRow.getPromoCode(),\n promoCodeStatus: unSerializeBasketRow.getPromoCodeStatus(),\n rate: serializedRate as IRoomRate,\n room: serializedRoom as IRoom,\n });\n });\n\n return {\n id: session.id,\n startDate: session.startDate?.format(SERIALIZED_DATE_FORMAT) as string,\n endDate: session.endDate?.format(SERIALIZED_DATE_FORMAT) as string,\n step: session.step,\n hotelID: session.hotelID,\n basketRows,\n source: session.source,\n reservation: session.reservation,\n };\n }\n\n private unSerializeSession(session: SerializedRoomstaySession): RoomstaySession {\n const basketRows: BasketRow[] = [];\n let startDate: dayjs.Dayjs | null = null;\n let endDate: dayjs.Dayjs | null = null;\n\n if (session.startDate) {\n startDate = dayjs(session.startDate, SERIALIZED_DATE_FORMAT);\n }\n\n if (session.endDate) {\n endDate = dayjs(session.endDate, SERIALIZED_DATE_FORMAT);\n }\n\n session.basketRows?.forEach((serializedBasketRow) => {\n let rate;\n let room;\n\n if (serializedBasketRow.room) {\n room = new Room();\n room.unSerialize(serializedBasketRow.room);\n }\n\n if (serializedBasketRow.rate && room) {\n rate = new RoomRate();\n rate.unSerialize(serializedBasketRow.rate);\n rate.setRoom(room);\n }\n\n const basketRow = new BasketRow(rate, serializedBasketRow.uniqId);\n\n if (serializedBasketRow.startDate) {\n basketRow.setStartDate(dayjs(serializedBasketRow.startDate, SERIALIZED_DATE_FORMAT));\n }\n if (serializedBasketRow.endDate) {\n basketRow.setEndDate(dayjs(serializedBasketRow.endDate, SERIALIZED_DATE_FORMAT));\n }\n\n basketRow.setAdults(serializedBasketRow.adults);\n basketRow.setChildren(serializedBasketRow.children);\n\n basketRows.push(basketRow);\n });\n\n return {\n id: session.id,\n startDate,\n endDate,\n step: session.step,\n hotelID: session.hotelID,\n basketRows,\n source: session.source,\n reservation: session.reservation,\n };\n }\n\n private getSessionKey(sessionId?: number): string {\n return `session-${sessionId ?? this.currentSessionID}`;\n }\n\n /**\n * @returns the current session ID\n */\n public getCurrentSessionID(): number {\n return this.currentSessionID;\n }\n\n public async getSession(): Promise<RoomstaySession> {\n const storage = new LocalStorageProvider();\n\n const sessionFromStorage = await storage.read<SerializedRoomstaySession>(this.getSessionKey());\n\n if (sessionFromStorage) {\n return this.unSerializeSession(sessionFromStorage);\n } else {\n return this.generateNewSession('');\n }\n }\n\n public async saveSession(changedSession: RoomstaySession) {\n if (!changedSession) {\n return console.log('Attempted to save empty session');\n }\n\n const storage = new LocalStorageProvider();\n\n const serializedSession = this.serializeSession(changedSession);\n\n await storage.write(this.getSessionKey(serializedSession.id), serializedSession);\n }\n\n private debouncedUpdateSession = debounce(async () => {\n const currentSession = await this.getSession();\n const cachedSession = this.cachedSession;\n this.cachedSession = {};\n await this.saveSession({\n ...currentSession,\n ...cachedSession,\n });\n }, 300);\n\n public async updateSession(partialSession: Partial<RoomstaySession>) {\n Object.assign(this.cachedSession, partialSession);\n this.debouncedUpdateSession();\n }\n\n public async deleteSession() {\n const storage = new LocalStorageProvider();\n storage.delete(this.getSessionKey());\n }\n\n public async getAllSessions() {\n const storage = new LocalStorageProvider();\n const sessionKeys = storage.getAllKeys((name) => name.startsWith('roomstay-session'));\n\n return (await storage.readAll<SerializedRoomstaySession>(sessionKeys)).map((session) => this.unSerializeSession(session));\n }\n}\n"]}
@@ -6,6 +6,6 @@ export declare abstract class Feature {
6
6
  isActive(): boolean;
7
7
  load(): void;
8
8
  unLoad(): void;
9
- protected abstract onLoad(): void;
9
+ protected onLoad(): void;
10
10
  protected onUnLoad(): void;
11
11
  }
@@ -20,6 +20,9 @@ class Feature {
20
20
  this.active = false;
21
21
  this.onUnLoad();
22
22
  }
23
+ onLoad() {
24
+ // Empty function to be overwritten
25
+ }
23
26
  onUnLoad() {
24
27
  // Empty function to be overwritten
25
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Feature.js","sourceRoot":"/","sources":["src/providers/feature/Feature.ts"],"names":[],"mappings":";;;AAAA,MAAsB,OAAO;IAIzB,YAAmB,IAAY;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAEM,QAAQ;QACX,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAEM,IAAI;QACP,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,IAAI,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;IAEM,MAAM;QACT,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpB,CAAC;IAGS,QAAQ;QACd,mCAAmC;IACvC,CAAC;CACJ;AAjCD,0BAiCC","sourcesContent":["export abstract class Feature {\n private name: string;\n private active: boolean;\n\n public constructor(name: string) {\n this.name = name;\n this.active = false;\n }\n\n public getName() {\n return this.name;\n }\n\n public isActive() {\n return this.active;\n }\n\n public load() {\n this.active = true;\n\n this.onLoad();\n }\n\n public unLoad() {\n this.active = false;\n\n this.onUnLoad();\n }\n\n protected abstract onLoad(): void;\n protected onUnLoad() {\n // Empty function to be overwritten\n }\n}\n"]}
1
+ {"version":3,"file":"Feature.js","sourceRoot":"/","sources":["src/providers/feature/Feature.ts"],"names":[],"mappings":";;;AAAA,MAAsB,OAAO;IAIzB,YAAmB,IAAY;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAEM,QAAQ;QACX,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAEM,IAAI;QACP,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,IAAI,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;IAEM,MAAM;QACT,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpB,CAAC;IAES,MAAM;QACZ,mCAAmC;IACvC,CAAC;IACS,QAAQ;QACd,mCAAmC;IACvC,CAAC;CACJ;AAnCD,0BAmCC","sourcesContent":["export abstract class Feature {\n private name: string;\n private active: boolean;\n\n public constructor(name: string) {\n this.name = name;\n this.active = false;\n }\n\n public getName() {\n return this.name;\n }\n\n public isActive() {\n return this.active;\n }\n\n public load() {\n this.active = true;\n\n this.onLoad();\n }\n\n public unLoad() {\n this.active = false;\n\n this.onUnLoad();\n }\n\n protected onLoad(): void {\n // Empty function to be overwritten\n }\n protected onUnLoad() {\n // Empty function to be overwritten\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"InlineAddonStepFeature.js","sourceRoot":"/","sources":["src/providers/feature/InlineAddonStepFeature.ts"],"names":[],"mappings":";;;;;AAAA,kFAA0D;AAC1D,qEAA6C;AAC7C,yDAAsD;AAGtD,MAAM,sBAAuB,SAAQ,iBAAO;IAGxC;QACI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACpC,CAAC;IAES,MAAM;QACZ,IAAI,qBAAW,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;YAC9B,IAAI,CAAC,YAAY,GAAG,qBAAW,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;SACpD;QAED,qBAAW,CAAC,OAAO,CAAC,EAAE,EAAE,mBAAS,CAAC,CAAC;IACvC,CAAC;IAES,QAAQ;QACd,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,qBAAW,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;SAC9C;aAAM;YACH,OAAO,qBAAW,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;SACvC;IACL,CAAC;CACJ;AAED,kBAAe,IAAI,sBAAsB,EAAE,CAAC","sourcesContent":["import StepAddon from '@/pages/steps/StepAddon/StepAddon';\nimport StepManager from '@/util/StepManager';\nimport { Feature } from '@/providers/feature/Feature';\nimport type Step from '@/pages/steps/Step';\n\nclass InlineAddonStepFeature extends Feature {\n private originalStep: Step;\n\n public constructor() {\n super('InlineAddonStepFeature');\n }\n\n protected onLoad() {\n if (StepManager.currentSteps[15]) {\n this.originalStep = StepManager.currentSteps[15];\n }\n\n StepManager.addStep(15, StepAddon);\n }\n\n protected onUnLoad() {\n if (this.originalStep) {\n StepManager.addStep(15, this.originalStep);\n } else {\n delete StepManager.currentSteps[15];\n }\n }\n}\n\nexport default new InlineAddonStepFeature();\n"]}
1
+ {"version":3,"file":"InlineAddonStepFeature.js","sourceRoot":"/","sources":["src/providers/feature/InlineAddonStepFeature.ts"],"names":[],"mappings":";;;;;AAAA,kFAA0D;AAC1D,qEAA6C;AAC7C,yDAAsD;AAGtD,MAAM,sBAAuB,SAAQ,iBAAO;IAGxC;QACI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACpC,CAAC;IAES,MAAM;QACZ,IAAI,qBAAW,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;YAC9B,IAAI,CAAC,YAAY,GAAG,qBAAW,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;SACpD;QAED,qBAAW,CAAC,OAAO,CAAC,EAAE,EAAE,mBAAS,CAAC,CAAC;IACvC,CAAC;IAES,QAAQ;QACd,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,qBAAW,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;SAC9C;aAAM;YACH,OAAO,qBAAW,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;SACvC;IACL,CAAC;CACJ;AAED,kBAAe,IAAI,sBAAsB,EAAE,CAAC","sourcesContent":["import StepAddon from '@/pages/steps/StepAddon/StepAddon';\nimport StepManager from '@/util/StepManager';\nimport { Feature } from '@/providers/feature/Feature';\nimport type Step from '@/pages/steps/Step';\n\nclass InlineAddonStepFeature extends Feature {\n private originalStep!: Step;\n\n public constructor() {\n super('InlineAddonStepFeature');\n }\n\n protected onLoad() {\n if (StepManager.currentSteps[15]) {\n this.originalStep = StepManager.currentSteps[15];\n }\n\n StepManager.addStep(15, StepAddon);\n }\n\n protected onUnLoad() {\n if (this.originalStep) {\n StepManager.addStep(15, this.originalStep);\n } else {\n delete StepManager.currentSteps[15];\n }\n }\n}\n\nexport default new InlineAddonStepFeature();\n"]}
@@ -1,7 +1,6 @@
1
1
  import { Feature } from './Feature';
2
2
  declare class MemberPortalFeature extends Feature {
3
3
  constructor();
4
- protected onLoad(): void;
5
4
  }
6
5
  declare const _default: MemberPortalFeature;
7
6
  export default _default;
@@ -5,7 +5,6 @@ class MemberPortalFeature extends Feature_1.Feature {
5
5
  constructor() {
6
6
  super('MemberPortalFeature');
7
7
  }
8
- onLoad() { }
9
8
  }
10
9
  exports.default = new MemberPortalFeature();
11
10
  //# sourceMappingURL=MemberPortalFeature.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MemberPortalFeature.js","sourceRoot":"/","sources":["src/providers/feature/MemberPortalFeature.ts"],"names":[],"mappings":";;AAAA,yDAAsD;AAEtD,MAAM,mBAAoB,SAAQ,iBAAO;IACrC;QACI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACjC,CAAC;IACS,MAAM,KAAI,CAAC;CACxB;AAED,kBAAe,IAAI,mBAAmB,EAAE,CAAC","sourcesContent":["import { Feature } from '@/providers/feature/Feature';\n\nclass MemberPortalFeature extends Feature {\n constructor() {\n super('MemberPortalFeature');\n }\n protected onLoad() {}\n}\n\nexport default new MemberPortalFeature();\n"]}
1
+ {"version":3,"file":"MemberPortalFeature.js","sourceRoot":"/","sources":["src/providers/feature/MemberPortalFeature.ts"],"names":[],"mappings":";;AAAA,yDAAsD;AAEtD,MAAM,mBAAoB,SAAQ,iBAAO;IACrC;QACI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACjC,CAAC;CACJ;AAED,kBAAe,IAAI,mBAAmB,EAAE,CAAC","sourcesContent":["import { Feature } from '@/providers/feature/Feature';\n\nclass MemberPortalFeature extends Feature {\n constructor() {\n super('MemberPortalFeature');\n }\n}\n\nexport default new MemberPortalFeature();\n"]}
@@ -1,7 +1,6 @@
1
1
  import { Feature } from './Feature';
2
2
  declare class NumberOfPeopleBookedPillFeature extends Feature {
3
3
  constructor();
4
- protected onLoad(): void;
5
4
  }
6
5
  declare const _default: NumberOfPeopleBookedPillFeature;
7
6
  export default _default;
@@ -5,7 +5,6 @@ class NumberOfPeopleBookedPillFeature extends Feature_1.Feature {
5
5
  constructor() {
6
6
  super('NumberOfPeopleBookedPillFeature');
7
7
  }
8
- onLoad() { }
9
8
  }
10
9
  exports.default = new NumberOfPeopleBookedPillFeature();
11
10
  //# sourceMappingURL=NumberOfPeopleBookedPillFeature.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NumberOfPeopleBookedPillFeature.js","sourceRoot":"/","sources":["src/providers/feature/NumberOfPeopleBookedPillFeature.ts"],"names":[],"mappings":";;AAAA,uCAAoC;AAEpC,MAAM,+BAAgC,SAAQ,iBAAO;IACjD;QACI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAC7C,CAAC;IAES,MAAM,KAAI,CAAC;CACxB;AAED,kBAAe,IAAI,+BAA+B,EAAE,CAAC","sourcesContent":["import { Feature } from './Feature';\n\nclass NumberOfPeopleBookedPillFeature extends Feature {\n public constructor() {\n super('NumberOfPeopleBookedPillFeature');\n }\n\n protected onLoad() {}\n}\n\nexport default new NumberOfPeopleBookedPillFeature();\n"]}
1
+ {"version":3,"file":"NumberOfPeopleBookedPillFeature.js","sourceRoot":"/","sources":["src/providers/feature/NumberOfPeopleBookedPillFeature.ts"],"names":[],"mappings":";;AAAA,uCAAoC;AAEpC,MAAM,+BAAgC,SAAQ,iBAAO;IACjD;QACI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAC7C,CAAC;CACJ;AAED,kBAAe,IAAI,+BAA+B,EAAE,CAAC","sourcesContent":["import { Feature } from './Feature';\n\nclass NumberOfPeopleBookedPillFeature extends Feature {\n public constructor() {\n super('NumberOfPeopleBookedPillFeature');\n }\n}\n\nexport default new NumberOfPeopleBookedPillFeature();\n"]}
@@ -8,9 +8,9 @@ export declare class LocalStorageProvider extends StorageProvider {
8
8
  private storageMethod;
9
9
  constructor(storageMethod?: Storage);
10
10
  private prefixKey;
11
- read<T>(key: string): Promise<T>;
11
+ read<T>(key: string): Promise<T | null | undefined>;
12
12
  readAll: <T>(keys: string[]) => Promise<T[]>;
13
13
  write(key: string, value: any): Promise<void>;
14
14
  delete: (key: string) => void;
15
- getAllKeys: (filter?: (match: string) => boolean) => string[];
15
+ getAllKeys: (filter?: ((match: string) => boolean) | undefined) => string[];
16
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LocalStorageProvider.js","sourceRoot":"/","sources":["src/providers/storage/LocalStorageProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import { StorageProvider, StorageType } from '@/providers/storage/StorageProvider';\nimport * as Sentry from '@sentry/browser';\n\nexport class LocalStorageProvider extends StorageProvider {\n private readonly enginePrefix = 'roomstay';\n\n /**\n * This is important. We're either going to be using localStorage or sessionStorage\n * by default it's localStorage\n */\n private storageMethod: Storage;\n\n public constructor(storageMethod?: Storage) {\n super();\n\n this.storageMethod = !storageMethod ? localStorage : storageMethod;\n }\n\n private prefixKey = (key: string) => {\n return `${this.enginePrefix}-${key}`;\n };\n\n public async read<T>(key: string): Promise<T> {\n let fromStorage: string;\n\n try {\n fromStorage = this.storageMethod.getItem(this.prefixKey(key));\n } catch (ex) {\n Sentry.captureException(ex);\n return null;\n }\n\n if (fromStorage) {\n try {\n const pretty = JSON.parse(fromStorage);\n\n if (pretty && pretty.value) {\n return pretty.value;\n }\n } catch (ex) {\n return null;\n }\n } else {\n return null;\n }\n }\n\n public readAll = async <T>(keys: string[]): Promise<T[]> => {\n const objects: T[] = [];\n\n const promises = keys.map(async (key) => {\n if (key.startsWith(`${this.enginePrefix}-`)) {\n key = key.replace(`${this.enginePrefix}-`, '');\n }\n\n const response = await this.read<T>(key);\n\n if (response) {\n objects.push(response);\n }\n });\n\n await Promise.all(promises);\n\n return objects;\n };\n\n public async write(key: string, value: any) {\n let objStorageType: StorageType;\n\n if (typeof value === 'object') {\n objStorageType = StorageType.Object;\n } else if (typeof value === 'string') {\n objStorageType = StorageType.String;\n } else {\n objStorageType = StorageType.Number;\n }\n\n const insertValue = {\n type: objStorageType,\n value,\n };\n\n try {\n this.storageMethod.setItem(this.prefixKey(key), JSON.stringify(insertValue));\n } catch (ex) {\n Sentry.captureException(ex);\n }\n }\n\n public delete = (key: string) => {\n this.storageMethod.removeItem(this.prefixKey(key));\n };\n\n public getAllKeys = (filter?: (match: string) => boolean): string[] => {\n return Object.keys(this.storageMethod).filter((key) => key.startsWith('roomstay') && ((filter && filter(key)) || !filter));\n };\n}\n"]}
1
+ {"version":3,"file":"LocalStorageProvider.js","sourceRoot":"/","sources":["src/providers/storage/LocalStorageProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import { StorageProvider, StorageType } from '@/providers/storage/StorageProvider';\nimport * as Sentry from '@sentry/browser';\n\nexport class LocalStorageProvider extends StorageProvider {\n private readonly enginePrefix = 'roomstay';\n\n /**\n * This is important. We're either going to be using localStorage or sessionStorage\n * by default it's localStorage\n */\n private storageMethod: Storage;\n\n public constructor(storageMethod?: Storage) {\n super();\n\n this.storageMethod = !storageMethod ? localStorage : storageMethod;\n }\n\n private prefixKey = (key: string) => {\n return `${this.enginePrefix}-${key}`;\n };\n\n public async read<T>(key: string): Promise<T | null | undefined> {\n let fromStorage: string;\n\n try {\n fromStorage = this.storageMethod.getItem(this.prefixKey(key)) as string;\n } catch (ex) {\n Sentry.captureException(ex);\n return null;\n }\n\n if (fromStorage) {\n try {\n const pretty = JSON.parse(fromStorage);\n\n if (pretty && pretty.value) {\n return pretty.value;\n }\n } catch (ex) {\n return null;\n }\n } else {\n return null;\n }\n }\n\n public readAll = async <T>(keys: string[]): Promise<T[]> => {\n const objects: T[] = [];\n\n const promises = keys.map(async (key) => {\n if (key.startsWith(`${this.enginePrefix}-`)) {\n key = key.replace(`${this.enginePrefix}-`, '');\n }\n\n const response = await this.read<T>(key);\n\n if (response) {\n objects.push(response);\n }\n });\n\n await Promise.all(promises);\n\n return objects;\n };\n\n public async write(key: string, value: any) {\n let objStorageType: StorageType;\n\n if (typeof value === 'object') {\n objStorageType = StorageType.Object;\n } else if (typeof value === 'string') {\n objStorageType = StorageType.String;\n } else {\n objStorageType = StorageType.Number;\n }\n\n const insertValue = {\n type: objStorageType,\n value,\n };\n\n try {\n this.storageMethod.setItem(this.prefixKey(key), JSON.stringify(insertValue));\n } catch (ex) {\n Sentry.captureException(ex);\n }\n }\n\n public delete = (key: string) => {\n this.storageMethod.removeItem(this.prefixKey(key));\n };\n\n public getAllKeys = (filter?: (match: string) => boolean): string[] => {\n return Object.keys(this.storageMethod).filter((key) => key.startsWith('roomstay') && ((filter && filter(key)) || !filter));\n };\n}\n"]}
@@ -34,7 +34,8 @@ const BasketReducer = (rows, action) => {
34
34
  // Let us loop through all of our rows and see if it's in array
35
35
  // if target row isn't included, we'll add it to the end.
36
36
  const newRows = rows.map((mappedRow) => {
37
- if (mappedRow.getID() === action.row.getID()) {
37
+ var _a;
38
+ if (mappedRow.getID() === ((_a = action.row) === null || _a === void 0 ? void 0 : _a.getID())) {
38
39
  hasRowIncluded = true;
39
40
  return action.row;
40
41
  }
@@ -54,7 +55,7 @@ const BasketReducer = (rows, action) => {
54
55
  return rows;
55
56
  case 'Remove':
56
57
  if (action.row) {
57
- const newRows = rows.filter((item) => item.getID() !== action.row.getID());
58
+ const newRows = rows.filter((item) => { var _a; return item.getID() !== ((_a = action.row) === null || _a === void 0 ? void 0 : _a.getID()); });
58
59
  const removeFromCartEvent = new RemoveFromCartEvent_1.RemoveFromCartEvent(action.row, newRows);
59
60
  RoomstayEventManager_1.default.raise(removeFromCartEvent);
60
61
  return newRows;
@@ -1 +1 @@
1
- {"version":3,"file":"BasketReducer.js","sourceRoot":"/","sources":["src/reducers/BasketReducer.ts"],"names":[],"mappings":"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","sourcesContent":["import BasketRow from '@/models/BasketRow';\nimport dayjs from 'dayjs';\nimport { RemoveFromCartEvent } from '@/events/actions/RemoveFromCartEvent';\nimport RoomstayEventManager from '@/events/RoomstayEventManager';\nimport { RoomRate } from '@/models/Room/RoomRate';\nimport { AddToCartEvent } from '@frontend/events';\n\nexport type BasketReducerType = {\n method: 'Add' | 'Remove' | 'Update' | 'Clear' | 'AddRate';\n row?: BasketRow;\n rate?: RoomRate;\n};\n\nexport const BasketReducer = (rows: BasketRow[], action: BasketReducerType): BasketRow[] => {\n const checkAndSetRowDates = (row: BasketRow) => {\n if (!row.getStartDate()) {\n row.setStartDate(dayjs('now'));\n }\n\n if (!row.getEndDate()) {\n row.setEndDate(dayjs('now').add(1, 'day'));\n }\n };\n\n switch (action.method) {\n case 'Add':\n if (action.row) {\n const { row } = action;\n\n checkAndSetRowDates(row);\n\n return [...rows, row];\n }\n return rows;\n case 'AddRate':\n if (action.row && action.rate) {\n const { row } = action;\n\n checkAndSetRowDates(row);\n\n row.setRate(action.rate);\n\n let hasRowIncluded = false;\n // Let us loop through all of our rows and see if it's in array\n // if target row isn't included, we'll add it to the end.\n const newRows = rows.map((mappedRow) => {\n if (mappedRow.getID() === action.row.getID()) {\n hasRowIncluded = true;\n return action.row;\n } else {\n return mappedRow;\n }\n });\n\n if (!hasRowIncluded) {\n newRows.push(row);\n }\n\n // Reason we raise this event here, and not in the reducer for example is\n // this is the only sure way we can trust a room is being added to the cart\n const addToCartEvent = new AddToCartEvent(row, newRows);\n RoomstayEventManager.raise(addToCartEvent);\n\n return [...newRows];\n }\n\n return rows;\n case 'Remove':\n if (action.row) {\n const newRows = rows.filter((item) => item.getID() !== action.row.getID());\n\n const removeFromCartEvent = new RemoveFromCartEvent(action.row, newRows);\n RoomstayEventManager.raise(removeFromCartEvent);\n\n return newRows;\n }\n\n return rows;\n case 'Clear':\n return [];\n case 'Update':\n if (action.row) {\n return rows.map((row) => {\n if (row.getID() === action.row.getID()) {\n return action.row;\n } else {\n return row;\n }\n });\n }\n\n return rows;\n }\n};\n"]}
1
+ {"version":3,"file":"BasketReducer.js","sourceRoot":"/","sources":["src/reducers/BasketReducer.ts"],"names":[],"mappings":"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","sourcesContent":["import BasketRow from '@/models/BasketRow';\nimport dayjs from 'dayjs';\nimport { RemoveFromCartEvent } from '@/events/actions/RemoveFromCartEvent';\nimport RoomstayEventManager from '@/events/RoomstayEventManager';\nimport { RoomRate } from '@/models/Room/RoomRate';\nimport { AddToCartEvent } from '@frontend/events';\n\nexport type BasketReducerType = {\n method: 'Add' | 'Remove' | 'Update' | 'Clear' | 'AddRate';\n row?: BasketRow;\n rate?: RoomRate;\n};\n\nexport const BasketReducer = (rows: BasketRow[], action: BasketReducerType): BasketRow[] => {\n const checkAndSetRowDates = (row: BasketRow) => {\n if (!row.getStartDate()) {\n row.setStartDate(dayjs('now'));\n }\n\n if (!row.getEndDate()) {\n row.setEndDate(dayjs('now').add(1, 'day'));\n }\n };\n\n switch (action.method) {\n case 'Add':\n if (action.row) {\n const { row } = action;\n\n checkAndSetRowDates(row);\n\n return [...rows, row];\n }\n return rows;\n case 'AddRate':\n if (action.row && action.rate) {\n const { row } = action;\n\n checkAndSetRowDates(row);\n\n row.setRate(action.rate);\n\n let hasRowIncluded = false;\n // Let us loop through all of our rows and see if it's in array\n // if target row isn't included, we'll add it to the end.\n const newRows = rows.map((mappedRow) => {\n if (mappedRow.getID() === action.row?.getID()) {\n hasRowIncluded = true;\n return action.row;\n } else {\n return mappedRow;\n }\n });\n\n if (!hasRowIncluded) {\n newRows.push(row);\n }\n\n // Reason we raise this event here, and not in the reducer for example is\n // this is the only sure way we can trust a room is being added to the cart\n const addToCartEvent = new AddToCartEvent(row, newRows);\n RoomstayEventManager.raise(addToCartEvent);\n\n return [...newRows];\n }\n\n return rows;\n case 'Remove':\n if (action.row) {\n const newRows = rows.filter((item) => item.getID() !== action.row?.getID());\n\n const removeFromCartEvent = new RemoveFromCartEvent(action.row, newRows);\n RoomstayEventManager.raise(removeFromCartEvent);\n\n return newRows;\n }\n\n return rows;\n case 'Clear':\n return [];\n case 'Update':\n if (action.row) {\n return rows.map((row) => {\n if (row.getID() === (action.row as BasketRow).getID()) {\n return action.row as BasketRow;\n } else {\n return row;\n }\n });\n }\n\n return rows;\n }\n};\n"]}
@@ -1,32 +1,9 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
4
  };
28
5
  Object.defineProperty(exports, "__esModule", { value: true });
29
- const React = __importStar(require("react"));
6
+ const react_1 = __importDefault(require("react"));
30
7
  const react_router_1 = require("react-router");
31
8
  const StepGuide_1 = __importDefault(require("../pages/steps/StepGuide"));
32
9
  const StepSelector_1 = __importDefault(require("../components/navigation/StepSelector"));
@@ -36,13 +13,13 @@ const StepAddon_1 = __importDefault(require("../pages/steps/StepAddon/StepAddon"
36
13
  const StepConfirmation_1 = __importDefault(require("../pages/steps/StepConfirmation/StepConfirmation"));
37
14
  const StepRoute = (props) => {
38
15
  const renderFunction = (routeProps) => {
39
- return (React.createElement(StepGuide_1.default, { step: props.step },
40
- React.createElement(StepSelector_1.default, null),
41
- React.createElement(StepContent, Object.assign({}, routeProps)),
42
- [StepRoom_1.default.getName(), StepAddon_1.default.getName(), StepConfirmation_1.default.getName()].includes(props.step.getName()) && React.createElement(InactivityWindow_1.default, null)));
16
+ return (react_1.default.createElement(StepGuide_1.default, { step: props.step },
17
+ react_1.default.createElement(StepSelector_1.default, null),
18
+ react_1.default.createElement(StepContent, Object.assign({}, routeProps)),
19
+ [StepRoom_1.default.getName(), StepAddon_1.default.getName(), StepConfirmation_1.default.getName()].includes(props.step.getName()) && react_1.default.createElement(InactivityWindow_1.default, null)));
43
20
  };
44
21
  const StepContent = props.step.getComponent();
45
- return React.createElement(react_router_1.Route, { path: props.step.getStepUrl(), render: renderFunction });
22
+ return react_1.default.createElement(react_router_1.Route, { path: props.step.getStepUrl(), render: renderFunction });
46
23
  };
47
24
  exports.default = StepRoute;
48
25
  //# sourceMappingURL=NaturallyProgressedStepRoute.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NaturallyProgressedStepRoute.js","sourceRoot":"/","sources":["src/routes/NaturallyProgressedStepRoute.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,+CAAqC;AACrC,wEAAgD;AAChD,wFAAgE;AAEhE,gGAAwE;AACxE,+EAAuD;AACvD,kFAA0D;AAC1D,uGAA+E;AAM/E,MAAM,SAAS,GAAG,CAAC,KAAqB,EAAE,EAAE;IACxC,MAAM,cAAc,GAAG,CAAC,UAAe,EAAE,EAAE;QACvC,OAAO,CACH,oBAAC,mBAAS,IAAC,IAAI,EAAE,KAAK,CAAC,IAAI;YACvB,oBAAC,sBAAY,OAAG;YAChB,oBAAC,WAAW,oBAAK,UAAU,EAAI;YAC9B,CAAC,kBAAQ,CAAC,OAAO,EAAE,EAAE,mBAAS,CAAC,OAAO,EAAE,EAAE,0BAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,oBAAC,0BAAgB,OAAG,CACrH,CACf,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,EAAS,CAAC;IAErD,OAAO,oBAAC,oBAAK,IAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,cAAc,GAAI,CAAC;AAC5E,CAAC,CAAC;AAEF,kBAAe,SAAS,CAAC","sourcesContent":["import * as React from 'react';\nimport { Route } from 'react-router';\nimport StepGuide from '@/pages/steps/StepGuide';\nimport StepSelector from '@/components/navigation/StepSelector';\nimport Step from '@/pages/steps/Step';\nimport InactivityWindow from '@/components/steps/room/InactivityWindow';\nimport StepRoom from '@/pages/steps/StepRoom/StepRoom';\nimport StepAddon from '@/pages/steps/StepAddon/StepAddon';\nimport StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\n\nexport interface StepRouteProps {\n step: Step;\n}\n\nconst StepRoute = (props: StepRouteProps) => {\n const renderFunction = (routeProps: any) => {\n return (\n <StepGuide step={props.step}>\n <StepSelector />\n <StepContent {...routeProps} />\n {[StepRoom.getName(), StepAddon.getName(), StepConfirmation.getName()].includes(props.step.getName()) && <InactivityWindow />}\n </StepGuide>\n );\n };\n\n const StepContent = props.step.getComponent() as any;\n\n return <Route path={props.step.getStepUrl()} render={renderFunction} />;\n};\n\nexport default StepRoute;\n"]}
1
+ {"version":3,"file":"NaturallyProgressedStepRoute.js","sourceRoot":"/","sources":["src/routes/NaturallyProgressedStepRoute.tsx"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAC1B,+CAAqC;AACrC,wEAAgD;AAChD,wFAAgE;AAEhE,gGAAwE;AACxE,+EAAuD;AACvD,kFAA0D;AAC1D,uGAA+E;AAM/E,MAAM,SAAS,GAAG,CAAC,KAAqB,EAAE,EAAE;IACxC,MAAM,cAAc,GAAG,CAAC,UAAe,EAAE,EAAE;QACvC,OAAO,CACH,8BAAC,mBAAS,IAAC,IAAI,EAAE,KAAK,CAAC,IAAI;YACvB,8BAAC,sBAAY,OAAG;YAChB,8BAAC,WAAW,oBAAK,UAAU,EAAI;YAC9B,CAAC,kBAAQ,CAAC,OAAO,EAAE,EAAE,mBAAS,CAAC,OAAO,EAAE,EAAE,0BAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,8BAAC,0BAAgB,OAAG,CACrH,CACf,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,EAAS,CAAC;IAErD,OAAO,8BAAC,oBAAK,IAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,cAAc,GAAI,CAAC;AAC5E,CAAC,CAAC;AAEF,kBAAe,SAAS,CAAC","sourcesContent":["import React from 'react';\nimport { Route } from 'react-router';\nimport StepGuide from '@/pages/steps/StepGuide';\nimport StepSelector from '@/components/navigation/StepSelector';\nimport Step from '@/pages/steps/Step';\nimport InactivityWindow from '@/components/steps/room/InactivityWindow';\nimport StepRoom from '@/pages/steps/StepRoom/StepRoom';\nimport StepAddon from '@/pages/steps/StepAddon/StepAddon';\nimport StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\n\nexport interface StepRouteProps {\n step: Step;\n}\n\nconst StepRoute = (props: StepRouteProps) => {\n const renderFunction = (routeProps: any) => {\n return (\n <StepGuide step={props.step}>\n <StepSelector />\n <StepContent {...routeProps} />\n {[StepRoom.getName(), StepAddon.getName(), StepConfirmation.getName()].includes(props.step.getName()) && <InactivityWindow />}\n </StepGuide>\n );\n };\n\n const StepContent = props.step.getComponent() as any;\n\n return <Route path={props.step.getStepUrl()} render={renderFunction} />;\n};\n\nexport default StepRoute;\n"]}
@@ -1,5 +1,5 @@
1
- import { ComponentMeta } from '@storybook/react';
1
+ import { ComponentStory, ComponentMeta } from '@storybook/react';
2
2
  import Alert from '../components/generic/Alert';
3
3
  declare const _default: ComponentMeta<typeof Alert>;
4
4
  export default _default;
5
- export declare const Default: any;
5
+ export declare const Default: ComponentStory<typeof Alert>;