@roomstay/frontend 2.6.31 → 2.6.32

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 (139) hide show
  1. package/dist/166.bundle.js +1 -1
  2. package/dist/279.bundle.js +1 -1
  3. package/dist/370.bundle.js +1 -1
  4. package/dist/449.bundle.js +1 -1
  5. package/dist/586.bundle.js +1 -1
  6. package/dist/736.bundle.js +1 -1
  7. package/dist/873.bundle.js +1 -1
  8. package/dist/903.bundle.js +1 -1
  9. package/dist/927.bundle.js +1 -1
  10. package/dist/972.bundle.js +1 -1
  11. package/dist/978.bundle.js +1 -1
  12. package/dist/main.bundle.js +1 -1
  13. package/dist/src/api/AvailabilityAPI.d.ts +5 -4
  14. package/dist/src/api/AvailabilityAPI.js +23 -29
  15. package/dist/src/api/AvailabilityAPI.js.map +1 -1
  16. package/dist/src/components/generic/InputGroup/InputGroup.js +1 -0
  17. package/dist/src/components/generic/InputGroup/InputGroup.js.map +1 -1
  18. package/dist/src/components/generic/InputGroup/InputGroup.types.d.ts +1 -1
  19. package/dist/src/components/generic/InputGroup/InputGroup.types.js.map +1 -1
  20. package/dist/src/components/generic/ScrollToTop.js +10 -1
  21. package/dist/src/components/generic/ScrollToTop.js.map +1 -1
  22. package/dist/src/components/generic/date/DatePicker.js +2 -1
  23. package/dist/src/components/generic/date/DatePicker.js.map +1 -1
  24. package/dist/src/components/generic/date/DatePickerDay.js +2 -1
  25. package/dist/src/components/generic/date/DatePickerDay.js.map +1 -1
  26. package/dist/src/components/members/SignInModal/EmailAndFullnameMemberModal.d.ts +4 -0
  27. package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/EmailAndFullnameMemberModal.js +8 -4
  28. package/dist/src/components/members/SignInModal/EmailAndFullnameMemberModal.js.map +1 -0
  29. package/dist/src/components/members/SignInModal/EmailPasswordMemberModal.d.ts +4 -0
  30. package/dist/src/components/members/SignInModal/EmailPasswordMemberModal.js +29 -0
  31. package/dist/src/components/members/SignInModal/EmailPasswordMemberModal.js.map +1 -0
  32. package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/ExternalMemberModal.d.ts +8 -3
  33. package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/ExternalMemberModal.js +24 -23
  34. package/dist/src/components/members/SignInModal/ExternalMemberModal.js.map +1 -0
  35. package/dist/src/components/members/SignInModal/FamilyNameMemberModal.d.ts +4 -0
  36. package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/FamilyNameMemberModal.js +6 -4
  37. package/dist/src/components/members/SignInModal/FamilyNameMemberModal.js.map +1 -0
  38. package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/InternalMemberSignInModal.d.ts +1 -0
  39. package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/InternalMemberSignInModal.js +31 -35
  40. package/dist/src/components/members/SignInModal/InternalMemberSignInModal.js.map +1 -0
  41. package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/InternalMemberSignInModal.types.d.ts +1 -1
  42. package/dist/src/components/members/SignInModal/InternalMemberSignInModal.types.js.map +1 -0
  43. package/dist/src/components/members/SignInModal/MemberSignInModal.js +86 -0
  44. package/dist/src/components/members/SignInModal/MemberSignInModal.js.map +1 -0
  45. package/dist/src/components/steps/MinimumNightStayPill.js.map +1 -1
  46. package/dist/src/components/steps/confirmation/RoomContactDetails.js +72 -4
  47. package/dist/src/components/steps/confirmation/RoomContactDetails.js.map +1 -1
  48. package/dist/src/components/steps/date/PeoplePicker.js +1 -0
  49. package/dist/src/components/steps/date/PeoplePicker.js.map +1 -1
  50. package/dist/src/components/steps/date/PeoplePickerRow.d.ts +1 -0
  51. package/dist/src/components/steps/date/PeoplePickerRow.js +14 -4
  52. package/dist/src/components/steps/date/PeoplePickerRow.js.map +1 -1
  53. package/dist/src/components/steps/date/StepDatePricePerRoom.js +2 -1
  54. package/dist/src/components/steps/date/StepDatePricePerRoom.js.map +1 -1
  55. package/dist/src/components/steps/room/RoomListCrossSellBlock.js +1 -1
  56. package/dist/src/components/steps/room/RoomListCrossSellBlock.js.map +1 -1
  57. package/dist/src/components/steps/room/StepRoomBestRateAlert.js +13 -10
  58. package/dist/src/components/steps/room/StepRoomBestRateAlert.js.map +1 -1
  59. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js +5 -1
  60. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js.map +1 -1
  61. package/dist/src/components/steps/room/roomFilter/RoomFilterRoomType.js.map +1 -1
  62. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +3 -1
  63. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  64. package/dist/src/contexts/BookingEngineContext/BookingEngineContextType.types.d.ts +8 -1
  65. package/dist/src/contexts/BookingEngineContext/BookingEngineContextType.types.js.map +1 -1
  66. package/dist/src/contexts/BookingEngineContext/BookingEngineContextWrapper.js +5 -0
  67. package/dist/src/contexts/BookingEngineContext/BookingEngineContextWrapper.js.map +1 -1
  68. package/dist/src/contexts/CompanyContext/CompanyContextType.type.d.ts +1 -0
  69. package/dist/src/contexts/CompanyContext/CompanyContextType.type.js.map +1 -1
  70. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +22 -19
  71. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  72. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +4 -2
  73. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  74. package/dist/src/contexts/HotelOverridesContext.js +8 -0
  75. package/dist/src/contexts/HotelOverridesContext.js.map +1 -1
  76. package/dist/src/engines/BaseEngine.d.ts +4 -1
  77. package/dist/src/engines/BaseEngine.js +6 -1
  78. package/dist/src/engines/BaseEngine.js.map +1 -1
  79. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js +1 -1
  80. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js.map +1 -1
  81. package/dist/src/hooks/UpdateQueryParameters.js.map +1 -1
  82. package/dist/src/hooks/useCalendarNightStay.js +4 -2
  83. package/dist/src/hooks/useCalendarNightStay.js.map +1 -1
  84. package/dist/src/index.d.ts +2 -1
  85. package/dist/src/index.js +6 -4
  86. package/dist/src/index.js.map +1 -1
  87. package/dist/src/models/Api/HotelDTO.d.ts +1 -1
  88. package/dist/src/models/Api/HotelDTO.js.map +1 -1
  89. package/dist/src/models/Api/HotelOverrideDTO.d.ts +15 -7
  90. package/dist/src/models/Api/HotelOverrideDTO.js.map +1 -1
  91. package/dist/src/models/BasketRow.d.ts +12 -0
  92. package/dist/src/models/BasketRow.js +17 -0
  93. package/dist/src/models/BasketRow.js.map +1 -1
  94. package/dist/src/models/Client/Hotel/Hotel.d.ts +4 -1
  95. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  96. package/dist/src/models/Confirmation.d.ts +5 -0
  97. package/dist/src/models/Confirmation.js +5 -1
  98. package/dist/src/models/Confirmation.js.map +1 -1
  99. package/dist/src/models/LocalStorageModel.d.ts +7 -0
  100. package/dist/src/models/LocalStorageModel.js +3 -0
  101. package/dist/src/models/LocalStorageModel.js.map +1 -0
  102. package/dist/src/models/Promotion/IPromotion.type.d.ts +2 -0
  103. package/dist/src/models/Promotion/IPromotion.type.js.map +1 -1
  104. package/dist/src/providers/RoomstayThemeEngine.js +1 -1
  105. package/dist/src/providers/RoomstayThemeEngine.js.map +1 -1
  106. package/dist/src/providers/storage/LocalStorageProvider.d.ts +9 -14
  107. package/dist/src/providers/storage/LocalStorageProvider.js +19 -97
  108. package/dist/src/providers/storage/LocalStorageProvider.js.map +1 -1
  109. package/dist/src/providers/{SessionProvider.d.ts → storage/SessionProvider.d.ts} +1 -1
  110. package/dist/src/providers/{SessionProvider.js → storage/SessionProvider.js} +13 -12
  111. package/dist/src/providers/storage/SessionProvider.js.map +1 -0
  112. package/dist/src/providers/storage/StorageProvider.d.ts +14 -8
  113. package/dist/src/providers/storage/StorageProvider.js +94 -7
  114. package/dist/src/providers/storage/StorageProvider.js.map +1 -1
  115. package/dist/src/util/CalendarHelper.d.ts +1 -0
  116. package/dist/src/util/CalendarHelper.js +16 -1
  117. package/dist/src/util/CalendarHelper.js.map +1 -1
  118. package/dist/src/util/EventsHelper.js +2 -2
  119. package/dist/src/util/EventsHelper.js.map +1 -1
  120. package/dist/test.bundle.js +1 -1
  121. package/dist/tests/jest/providers/SessionProvider.test.js +7 -7
  122. package/dist/tests/jest/providers/SessionProvider.test.js.map +1 -1
  123. package/dist/tests/jest/providers/storage/LocalStorageProvider.test.js +17 -28
  124. package/dist/tests/jest/providers/storage/LocalStorageProvider.test.js.map +1 -1
  125. package/dist/vendors.bundle.js +1 -1
  126. package/dist/vendors.bundle.js.LICENSE.txt +8 -2
  127. package/package.json +4 -2
  128. package/dist/src/components/steps/room/MemberSignInModal/EmailAndFullnameMemberModal.d.ts +0 -4
  129. package/dist/src/components/steps/room/MemberSignInModal/EmailAndFullnameMemberModal.js.map +0 -1
  130. package/dist/src/components/steps/room/MemberSignInModal/ExternalMemberModal.js.map +0 -1
  131. package/dist/src/components/steps/room/MemberSignInModal/FamilyNameMemberModal.d.ts +0 -8
  132. package/dist/src/components/steps/room/MemberSignInModal/FamilyNameMemberModal.js.map +0 -1
  133. package/dist/src/components/steps/room/MemberSignInModal/InternalMemberSignInModal.js.map +0 -1
  134. package/dist/src/components/steps/room/MemberSignInModal/InternalMemberSignInModal.types.js.map +0 -1
  135. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js +0 -62
  136. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js.map +0 -1
  137. package/dist/src/providers/SessionProvider.js.map +0 -1
  138. /package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/InternalMemberSignInModal.types.js +0 -0
  139. /package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/MemberSignInModal.d.ts +0 -0
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getLetterDaysOfWeek = void 0;
6
+ exports.getQueryParamFromHash = exports.getLetterDaysOfWeek = void 0;
7
7
  const dayjs_1 = __importDefault(require("dayjs"));
8
8
  const getLetterDaysOfWeek = (startsWeekOnDay) => {
9
9
  if (startsWeekOnDay === 'monday') {
@@ -84,4 +84,19 @@ CalendarHelper.getDaysBetween = (startDate, endDate) => {
84
84
  }
85
85
  return days;
86
86
  };
87
+ const getQueryParamFromHash = (param) => {
88
+ const currentUrl = window.location.href;
89
+ const hashIndex = currentUrl.indexOf('#');
90
+ if (hashIndex !== -1) {
91
+ const hashFragment = currentUrl.substring(hashIndex + 1); // Extract the part after '#'
92
+ const simulatedUrl = new URL(`https://example.com/${hashFragment}`); // Add base URL for parsing
93
+ if (simulatedUrl.searchParams.has(param)) {
94
+ const value = simulatedUrl.searchParams.get(param); // Get the query parameter value
95
+ return value === null ? undefined : value;
96
+ }
97
+ return undefined;
98
+ }
99
+ return undefined;
100
+ };
101
+ exports.getQueryParamFromHash = getQueryParamFromHash;
87
102
  //# sourceMappingURL=CalendarHelper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CalendarHelper.js","sourceRoot":"/","sources":["src/util/CalendarHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import dayjs from 'dayjs';\n\nimport { WeekdayStartsOn } from '@/models/Client/Hotel/WeekdayStartsOn.types';\n\nexport const getLetterDaysOfWeek = (startsWeekOnDay: string) => {\n if (startsWeekOnDay === 'monday') {\n return ['M', 'T', 'W', 'T', 'F', 'S', 'S'];\n } else {\n return ['S', 'M', 'T', 'W', 'T', 'F', 'S'];\n }\n};\n\nexport default class CalendarHelper {\n /**\n * Returns an array always divisible by 7,\n *\n * Essentially no matter what what month is given, this function will always return the same number of days;\n * with each MOD 7 index representing the correct date.\n */\n public static getWeekPaddedMonthArrayForDate = (startWeekOnDay: WeekdayStartsOn, date: dayjs.Dayjs): string[] => {\n const monthStart = date.startOf('month');\n const monthEnd = date.endOf('month');\n let startDayIndex = parseInt(monthStart.format('d'), 10);\n\n if (startWeekOnDay === 'monday') {\n if (startDayIndex !== 0) {\n startDayIndex--;\n } else {\n startDayIndex = 6;\n }\n }\n\n const endDateNumber = parseInt(monthEnd.format('D'), 10);\n const endDayIndex = parseInt(monthEnd.format('d'), 10);\n const paddingAtEnd = startWeekOnDay === 'monday' ? (7 - endDayIndex) % 7 : (7 - endDayIndex - 1) % 7;\n\n const dayArray: string[] = [];\n\n for (let i = 0; i < endDateNumber + startDayIndex; i++) {\n if (i >= startDayIndex) {\n dayArray.push(String(i + 1 - startDayIndex));\n } else {\n dayArray.push('');\n }\n }\n\n for (let i = 0; i < paddingAtEnd; i++) {\n dayArray.push('');\n }\n\n return dayArray;\n };\n\n public static getMonthArray = (date: dayjs.Dayjs): dayjs.Dayjs[] => {\n const monthStart = date.startOf('month');\n const monthEnd = date.endOf('month');\n\n const diff = monthEnd.diff(monthStart, 'day');\n\n const days = [];\n\n for (let i = 0; i < diff; i++) {\n days.push(dayjs(monthStart.add(i, 'day')));\n }\n\n return days;\n };\n\n public static getWeekFrom = (date: dayjs.Dayjs): dayjs.Dayjs[] => {\n const days: dayjs.Dayjs[] = [];\n\n for (let i = 1; i <= 7; i++) {\n days.push(date.add(i, 'day'));\n }\n\n return days;\n };\n\n public static getWeekTo = (date: dayjs.Dayjs): dayjs.Dayjs[] => {\n const days: dayjs.Dayjs[] = [];\n\n for (let i = 1; i <= 7; i++) {\n days.push(date.subtract(i, 'day'));\n }\n\n return days;\n };\n\n public static getDaysBetween = (startDate: dayjs.Dayjs, endDate: dayjs.Dayjs): dayjs.Dayjs[] => {\n const days: dayjs.Dayjs[] = [];\n const diff = endDate.diff(startDate, 'day');\n\n for (let i = 0; i <= diff + 7; i++) {\n days.push(startDate.add(i, 'day'));\n }\n\n return days;\n };\n}\n"]}
1
+ {"version":3,"file":"CalendarHelper.js","sourceRoot":"/","sources":["src/util/CalendarHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import dayjs from 'dayjs';\n\nimport { WeekdayStartsOn } from '@/models/Client/Hotel/WeekdayStartsOn.types';\n\nexport const getLetterDaysOfWeek = (startsWeekOnDay: string) => {\n if (startsWeekOnDay === 'monday') {\n return ['M', 'T', 'W', 'T', 'F', 'S', 'S'];\n } else {\n return ['S', 'M', 'T', 'W', 'T', 'F', 'S'];\n }\n};\n\nexport default class CalendarHelper {\n /**\n * Returns an array always divisible by 7,\n *\n * Essentially no matter what what month is given, this function will always return the same number of days;\n * with each MOD 7 index representing the correct date.\n */\n public static getWeekPaddedMonthArrayForDate = (startWeekOnDay: WeekdayStartsOn, date: dayjs.Dayjs): string[] => {\n const monthStart = date.startOf('month');\n const monthEnd = date.endOf('month');\n let startDayIndex = parseInt(monthStart.format('d'), 10);\n\n if (startWeekOnDay === 'monday') {\n if (startDayIndex !== 0) {\n startDayIndex--;\n } else {\n startDayIndex = 6;\n }\n }\n\n const endDateNumber = parseInt(monthEnd.format('D'), 10);\n const endDayIndex = parseInt(monthEnd.format('d'), 10);\n const paddingAtEnd = startWeekOnDay === 'monday' ? (7 - endDayIndex) % 7 : (7 - endDayIndex - 1) % 7;\n\n const dayArray: string[] = [];\n\n for (let i = 0; i < endDateNumber + startDayIndex; i++) {\n if (i >= startDayIndex) {\n dayArray.push(String(i + 1 - startDayIndex));\n } else {\n dayArray.push('');\n }\n }\n\n for (let i = 0; i < paddingAtEnd; i++) {\n dayArray.push('');\n }\n\n return dayArray;\n };\n\n public static getMonthArray = (date: dayjs.Dayjs): dayjs.Dayjs[] => {\n const monthStart = date.startOf('month');\n const monthEnd = date.endOf('month');\n\n const diff = monthEnd.diff(monthStart, 'day');\n\n const days = [];\n\n for (let i = 0; i < diff; i++) {\n days.push(dayjs(monthStart.add(i, 'day')));\n }\n\n return days;\n };\n\n public static getWeekFrom = (date: dayjs.Dayjs): dayjs.Dayjs[] => {\n const days: dayjs.Dayjs[] = [];\n\n for (let i = 1; i <= 7; i++) {\n days.push(date.add(i, 'day'));\n }\n\n return days;\n };\n\n public static getWeekTo = (date: dayjs.Dayjs): dayjs.Dayjs[] => {\n const days: dayjs.Dayjs[] = [];\n\n for (let i = 1; i <= 7; i++) {\n days.push(date.subtract(i, 'day'));\n }\n\n return days;\n };\n\n public static getDaysBetween = (startDate: dayjs.Dayjs, endDate: dayjs.Dayjs): dayjs.Dayjs[] => {\n const days: dayjs.Dayjs[] = [];\n const diff = endDate.diff(startDate, 'day');\n\n for (let i = 0; i <= diff + 7; i++) {\n days.push(startDate.add(i, 'day'));\n }\n\n return days;\n };\n}\n\nexport const getQueryParamFromHash = (param: string): string | undefined => {\n const currentUrl = window.location.href;\n const hashIndex = currentUrl.indexOf('#');\n\n if (hashIndex !== -1) {\n const hashFragment = currentUrl.substring(hashIndex + 1); // Extract the part after '#'\n const simulatedUrl = new URL(`https://example.com/${hashFragment}`); // Add base URL for parsing\n if (simulatedUrl.searchParams.has(param)) {\n const value = simulatedUrl.searchParams.get(param); // Get the query parameter value\n return value === null ? undefined : value;\n }\n\n return undefined;\n }\n\n return undefined;\n};\n"]}
@@ -8,12 +8,12 @@ const dayjs_1 = __importDefault(require("dayjs"));
8
8
  const isBetween_1 = __importDefault(require("dayjs/plugin/isBetween"));
9
9
  const timezone_1 = __importDefault(require("dayjs/plugin/timezone"));
10
10
  const utc_1 = __importDefault(require("dayjs/plugin/utc"));
11
- const LocalStorageProvider_1 = require("../providers/storage/LocalStorageProvider");
11
+ const StorageProvider_1 = require("../providers/storage/StorageProvider");
12
12
  dayjs_1.default.extend(utc_1.default);
13
13
  dayjs_1.default.extend(timezone_1.default);
14
14
  dayjs_1.default.extend(isBetween_1.default);
15
15
  const CACHED_EVENTS_KEY = 'events';
16
- const provider = new LocalStorageProvider_1.LocalStorageProvider();
16
+ const provider = new StorageProvider_1.StorageProvider();
17
17
  const createEventKey = (hotelId, unixStartDate) => [CACHED_EVENTS_KEY, hotelId, unixStartDate].join('-');
18
18
  const write = (hotelId, unixStartDate, value) => provider.write(createEventKey(hotelId, unixStartDate), value);
19
19
  exports.write = write;
@@ -1 +1 @@
1
- {"version":3,"file":"EventsHelper.js","sourceRoot":"/","sources":["src/util/EventsHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { IRoomstayEvent } from '@roomstay/core';\nimport dayjs from 'dayjs';\nimport isBetween from 'dayjs/plugin/isBetween';\nimport timezone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\n\nimport { LocalStorageProvider } from '@/providers/storage/LocalStorageProvider';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(isBetween);\n\nconst CACHED_EVENTS_KEY = 'events';\n\ninterface ICachedEvents {\n expired: number;\n events: IRoomstayEvent[];\n}\n\nconst provider = new LocalStorageProvider();\n\nconst createEventKey = (hotelId: string, unixStartDate: number) => [CACHED_EVENTS_KEY, hotelId, unixStartDate].join('-');\n\nconst write = (hotelId: string, unixStartDate: number, value: ICachedEvents) => provider.write(createEventKey(hotelId, unixStartDate), value);\n\nconst read = (hotelId: string, unixStartDate: number) => provider.read<ICachedEvents>(createEventKey(hotelId, unixStartDate));\n\nconst getValidEvents = (events: IRoomstayEvent[]): IRoomstayEvent[] => {\n if (!events || events.length === 0) {\n return [];\n }\n\n const today = dayjs();\n return events.filter(({ endDate, timezone, isPermanent }) => isPermanent || today.isBefore(dayjs(endDate, timezone)));\n};\n\nconst getApplicableEvents = (\n events: IRoomstayEvent[],\n {\n checkInDate,\n checkInTime,\n checkOutDate,\n checkOutTime,\n }: {\n checkInDate: string;\n checkInTime: string;\n checkOutDate: string;\n checkOutTime: string;\n }\n): IRoomstayEvent[] => {\n if (!events || events.length === 0) {\n return [];\n }\n const itineraryStartDate = dayjs(`${checkInDate}${checkInTime}`, 'YYYY-MM-DDHHmm');\n const itineraryEndDate = dayjs(`${checkOutDate}${checkOutTime}`, 'YYYY-MM-DDHHmm');\n return events.filter(({ endDate: endDateString, timezone, startDate: startDateString }) => {\n // https://stackoverflow.com/questions/11526504/minimum-and-maximum-date\n const startDate = startDateString ? dayjs.tz(startDateString, timezone) : dayjs(-8640000000000000);\n const endDate = endDateString ? dayjs.tz(endDateString, timezone) : dayjs(8640000000000000);\n return !endDate || itineraryStartDate.isBetween(startDate, endDate, null, '[]') || itineraryEndDate.isBetween(startDate, endDate, null, '[]');\n });\n};\n\nconst isCachedEventValid = (cachedEvents: ICachedEvents): boolean => {\n const today = dayjs();\n const expiredDate = dayjs(cachedEvents.expired);\n return today.isBefore(expiredDate) && cachedEvents.events?.length > 0;\n};\n\nexport { getApplicableEvents, getValidEvents, ICachedEvents, isCachedEventValid, read, write };\n"]}
1
+ {"version":3,"file":"EventsHelper.js","sourceRoot":"/","sources":["src/util/EventsHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { IRoomstayEvent } from '@roomstay/core';\nimport dayjs from 'dayjs';\nimport isBetween from 'dayjs/plugin/isBetween';\nimport timezone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\n\nimport { StorageProvider } from '@/providers/storage/StorageProvider';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(isBetween);\n\nconst CACHED_EVENTS_KEY = 'events';\n\ninterface ICachedEvents {\n expired: number;\n events: IRoomstayEvent[];\n}\n\nconst provider = new StorageProvider();\n\nconst createEventKey = (hotelId: string, unixStartDate: number) => [CACHED_EVENTS_KEY, hotelId, unixStartDate].join('-');\n\nconst write = (hotelId: string, unixStartDate: number, value: ICachedEvents) => provider.write(createEventKey(hotelId, unixStartDate), value);\n\nconst read = (hotelId: string, unixStartDate: number) => provider.read<ICachedEvents>(createEventKey(hotelId, unixStartDate));\n\nconst getValidEvents = (events: IRoomstayEvent[]): IRoomstayEvent[] => {\n if (!events || events.length === 0) {\n return [];\n }\n\n const today = dayjs();\n return events.filter(({ endDate, timezone, isPermanent }) => isPermanent || today.isBefore(dayjs(endDate, timezone)));\n};\n\nconst getApplicableEvents = (\n events: IRoomstayEvent[],\n {\n checkInDate,\n checkInTime,\n checkOutDate,\n checkOutTime,\n }: {\n checkInDate: string;\n checkInTime: string;\n checkOutDate: string;\n checkOutTime: string;\n }\n): IRoomstayEvent[] => {\n if (!events || events.length === 0) {\n return [];\n }\n const itineraryStartDate = dayjs(`${checkInDate}${checkInTime}`, 'YYYY-MM-DDHHmm');\n const itineraryEndDate = dayjs(`${checkOutDate}${checkOutTime}`, 'YYYY-MM-DDHHmm');\n return events.filter(({ endDate: endDateString, timezone, startDate: startDateString }) => {\n // https://stackoverflow.com/questions/11526504/minimum-and-maximum-date\n const startDate = startDateString ? dayjs.tz(startDateString, timezone) : dayjs(-8640000000000000);\n const endDate = endDateString ? dayjs.tz(endDateString, timezone) : dayjs(8640000000000000);\n return !endDate || itineraryStartDate.isBetween(startDate, endDate, null, '[]') || itineraryEndDate.isBetween(startDate, endDate, null, '[]');\n });\n};\n\nconst isCachedEventValid = (cachedEvents: ICachedEvents): boolean => {\n const today = dayjs();\n const expiredDate = dayjs(cachedEvents.expired);\n return today.isBefore(expiredDate) && cachedEvents.events?.length > 0;\n};\n\nexport { getApplicableEvents, getValidEvents, ICachedEvents, isCachedEventValid, read, write };\n"]}