@roomstay/frontend 2.0.0-2 → 2.0.1

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 (94) hide show
  1. package/dist/201.bundle.js +1 -1
  2. package/dist/218.bundle.js +1 -1
  3. package/dist/279.bundle.js +1 -1
  4. package/dist/370.bundle.js +1 -1
  5. package/dist/449.bundle.js +1 -1
  6. package/dist/873.bundle.js +1 -1
  7. package/dist/882.bundle.js +1 -1
  8. package/dist/972.bundle.js +1 -1
  9. package/dist/main.bundle.js +1 -1
  10. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js +1 -11
  11. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js.map +1 -1
  12. package/dist/src/components/steps/confirmation/RoomContactDetails.js +2 -1
  13. package/dist/src/components/steps/confirmation/RoomContactDetails.js.map +1 -1
  14. package/dist/src/components/steps/confirmation/StepConfirmationForm.js +7 -2
  15. package/dist/src/components/steps/confirmation/StepConfirmationForm.js.map +1 -1
  16. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js +18 -12
  17. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js.map +1 -1
  18. package/dist/src/components/steps/room/RoomList.js +1 -1
  19. package/dist/src/components/steps/room/RoomList.js.map +1 -1
  20. package/dist/src/components/steps/room/StepRoomErrorForm.js +2 -1
  21. package/dist/src/components/steps/room/StepRoomErrorForm.js.map +1 -1
  22. package/dist/src/components/steps/room/roomDetails/RoomDetails.js +8 -8
  23. package/dist/src/components/steps/room/roomDetails/RoomDetails.js.map +1 -1
  24. package/dist/src/components/steps/room/roomDetails/roomRates/MembersOnlyRow.js.map +1 -1
  25. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.d.ts +7 -0
  26. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.js +31 -0
  27. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.js.map +1 -0
  28. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js +14 -7
  29. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js.map +1 -1
  30. package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
  31. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +12 -8
  32. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  33. package/dist/src/contexts/CompanyContext/CompanyContextType.type.d.ts +3 -1
  34. package/dist/src/contexts/CompanyContext/CompanyContextType.type.js.map +1 -1
  35. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +9 -1
  36. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  37. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +3 -2
  38. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  39. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js.map +1 -1
  40. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +71 -1
  41. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
  42. package/dist/src/events/RoomstayEventManager.d.ts +1 -1
  43. package/dist/src/events/RoomstayEventManager.js +23 -4
  44. package/dist/src/events/RoomstayEventManager.js.map +1 -1
  45. package/dist/src/events/actions/MemberOnlyFence/MemberOnlyFenceSignUp.d.ts +7 -0
  46. package/dist/src/events/actions/MemberOnlyFence/MemberOnlyFenceSignUp.js +15 -0
  47. package/dist/src/events/actions/MemberOnlyFence/MemberOnlyFenceSignUp.js.map +1 -0
  48. package/dist/src/events/actions/Promotion/PromotionAddedEvent.d.ts +7 -0
  49. package/dist/src/events/actions/Promotion/PromotionAddedEvent.js +15 -0
  50. package/dist/src/events/actions/Promotion/PromotionAddedEvent.js.map +1 -0
  51. package/dist/src/events/actions/Promotion/PromotionClickedEvent.d.ts +7 -0
  52. package/dist/src/events/actions/Promotion/PromotionClickedEvent.js +15 -0
  53. package/dist/src/events/actions/Promotion/PromotionClickedEvent.js.map +1 -0
  54. package/dist/src/events/actions/Promotion/PromotionRemovedEvent.d.ts +7 -0
  55. package/dist/src/events/actions/Promotion/PromotionRemovedEvent.js +15 -0
  56. package/dist/src/events/actions/Promotion/PromotionRemovedEvent.js.map +1 -0
  57. package/dist/src/events/index.d.ts +1 -0
  58. package/dist/src/events/index.js +1 -0
  59. package/dist/src/events/index.js.map +1 -1
  60. package/dist/src/hooks/EventHook.d.ts +1 -1
  61. package/dist/src/hooks/EventHook.js +2 -2
  62. package/dist/src/hooks/EventHook.js.map +1 -1
  63. package/dist/src/index.d.ts +2 -1
  64. package/dist/src/index.js +1 -0
  65. package/dist/src/index.js.map +1 -1
  66. package/dist/src/models/Promotion/IPromotion.type.d.ts +27 -0
  67. package/dist/src/models/Promotion/IPromotion.type.js +3 -0
  68. package/dist/src/models/Promotion/IPromotion.type.js.map +1 -0
  69. package/dist/src/pages/findReservation/FindReservation.js +2 -1
  70. package/dist/src/pages/findReservation/FindReservation.js.map +1 -1
  71. package/dist/src/providers/LanguageProvider.d.ts +14 -3
  72. package/dist/src/providers/LanguageProvider.js +3 -19
  73. package/dist/src/providers/LanguageProvider.js.map +1 -1
  74. package/dist/src/providers/PromotionProvider.d.ts +14 -0
  75. package/dist/src/providers/PromotionProvider.js +213 -0
  76. package/dist/src/providers/PromotionProvider.js.map +1 -0
  77. package/dist/src/util/ObjectHelper.d.ts +4 -0
  78. package/dist/src/util/ObjectHelper.js +25 -0
  79. package/dist/src/util/ObjectHelper.js.map +1 -0
  80. package/dist/src/util/Validation.d.ts +1 -0
  81. package/dist/src/util/Validation.js +2 -1
  82. package/dist/src/util/Validation.js.map +1 -1
  83. package/dist/test.bundle.js +1 -1
  84. package/dist/tests/jest/helpers/ObjectHelper.test.d.ts +1 -0
  85. package/dist/tests/jest/helpers/ObjectHelper.test.js +72 -0
  86. package/dist/tests/jest/helpers/ObjectHelper.test.js.map +1 -0
  87. package/dist/tests/offline/entry/RSCompany.js +41 -1
  88. package/dist/tests/offline/entry/RSCompany.js.map +1 -1
  89. package/dist/vendors.bundle.js +1 -1
  90. package/package.json +1 -1
  91. package/dist/src/components/steps/confirmation/StepConfirmationPaymentDetails.d.ts +0 -8
  92. package/dist/src/components/steps/confirmation/StepConfirmationPaymentDetails.js +0 -241
  93. package/dist/src/components/steps/confirmation/StepConfirmationPaymentDetails.js.map +0 -1
  94. package/dist/src/contexts/BasketContext/BasketContextType.d.ts +0 -41
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.usePromotionContainer = exports.removePromotion = exports.registerPromotion = void 0;
13
+ const contexts_1 = require("@frontend/contexts");
14
+ const dayjs = require("dayjs");
15
+ const MemberOnlyFenceSignUp_1 = require("events/actions/MemberOnlyFence/MemberOnlyFenceSignUp");
16
+ const PromotionAddedEvent_1 = require("events/actions/Promotion/PromotionAddedEvent");
17
+ const PromotionClickedEvent_1 = require("events/actions/Promotion/PromotionClickedEvent");
18
+ const PromotionRemovedEvent_1 = require("events/actions/Promotion/PromotionRemovedEvent");
19
+ const RoomstayEventManager_1 = require("events/RoomstayEventManager");
20
+ const EventHook_1 = require("hooks/EventHook");
21
+ const react_1 = require("react");
22
+ let _loadedPromotions = [];
23
+ let basketContextLoaded = false;
24
+ const registerPromotion = (promotion) => {
25
+ if (basketContextLoaded) {
26
+ RoomstayEventManager_1.default.raise(new PromotionAddedEvent_1.PromotionAddEvent(promotion));
27
+ }
28
+ else {
29
+ const promoIndex = getPromoIndex(promotion.name, _loadedPromotions);
30
+ if (promoIndex === -1) {
31
+ _loadedPromotions.push(promotion);
32
+ }
33
+ else {
34
+ _loadedPromotions[promoIndex] = promotion;
35
+ }
36
+ }
37
+ };
38
+ exports.registerPromotion = registerPromotion;
39
+ const removePromotion = (promotion) => {
40
+ if (basketContextLoaded) {
41
+ RoomstayEventManager_1.default.raise(new PromotionRemovedEvent_1.PromotionRemoveEvent(promotion));
42
+ }
43
+ else {
44
+ const promoIndex = getPromoIndex(promotion.name, _loadedPromotions);
45
+ if (promoIndex !== -1) {
46
+ _loadedPromotions.splice(promoIndex, 1);
47
+ }
48
+ }
49
+ };
50
+ exports.removePromotion = removePromotion;
51
+ const getPromoIndex = (name, promoList) => {
52
+ for (let i = 0; i < promoList.length; i++) {
53
+ if (promoList[i].name === name) {
54
+ return i;
55
+ }
56
+ }
57
+ return -1;
58
+ };
59
+ /**
60
+ * Used by the Basket context to bind to state.
61
+ */
62
+ const usePromotionContainer = ({ selectedBasketRow, updateBasketRow }) => {
63
+ const ccx = (0, react_1.useContext)(contexts_1.CompanyContext);
64
+ const [bump, setBump] = (0, react_1.useState)(0);
65
+ const [allPromotions, setAllPromotions] = (0, react_1.useState)(_loadedPromotions !== null && _loadedPromotions !== void 0 ? _loadedPromotions : []);
66
+ // TODO: Current implementation only supports a single promotion. In the future there will be multiple promotion locations
67
+ const [loadedPromotion, setLoadedPromotion] = (0, react_1.useState)(null);
68
+ const { on } = (0, EventHook_1.useEvent)();
69
+ (0, react_1.useEffect)(() => {
70
+ basketContextLoaded = true;
71
+ const updateBasketRowContext = (promotion) => {
72
+ if (!promotion) {
73
+ // We don't care about non promo sign ups;
74
+ return;
75
+ }
76
+ if (selectedBasketRow) {
77
+ const criteria = {
78
+ checkInDate: selectedBasketRow.getStartDate(),
79
+ checkOutDate: selectedBasketRow.getEndDate(),
80
+ adults: selectedBasketRow.getAdults(),
81
+ children: selectedBasketRow.getChildren(),
82
+ promoCode: selectedBasketRow.getPromoCode(),
83
+ };
84
+ const { checkInDate, checkOutDate, adults, children, promoCode } = promotion.onApply(criteria);
85
+ if (checkInDate) {
86
+ selectedBasketRow.setStartDate(dayjs(checkInDate));
87
+ }
88
+ if (checkOutDate) {
89
+ selectedBasketRow.setEndDate(dayjs(checkOutDate));
90
+ }
91
+ if (adults) {
92
+ selectedBasketRow.setAdults(adults);
93
+ }
94
+ if (children) {
95
+ selectedBasketRow.setChildren(children);
96
+ }
97
+ if (promoCode) {
98
+ selectedBasketRow.setPromoCode(promoCode);
99
+ }
100
+ updateBasketRow(selectedBasketRow);
101
+ }
102
+ };
103
+ on(PromotionAddedEvent_1.PromotionAddEvent, (event) => __awaiter(void 0, void 0, void 0, function* () {
104
+ if (event === null || event === void 0 ? void 0 : event.promotion) {
105
+ setAllPromotions((oldPromotions) => {
106
+ const promoIndex = getPromoIndex(event.promotion.name, oldPromotions);
107
+ if (promoIndex === -1) {
108
+ return [...oldPromotions, event.promotion];
109
+ }
110
+ else {
111
+ oldPromotions[promoIndex] = event.promotion;
112
+ return oldPromotions;
113
+ }
114
+ });
115
+ }
116
+ }), 'root');
117
+ on(PromotionRemovedEvent_1.PromotionRemoveEvent, (event) => __awaiter(void 0, void 0, void 0, function* () {
118
+ if (event === null || event === void 0 ? void 0 : event.promotion) {
119
+ setAllPromotions((oldPromotions) => {
120
+ if (oldPromotions.length === 0) {
121
+ return [];
122
+ }
123
+ return oldPromotions.filter((promo) => {
124
+ if (promo.name !== event.promotion.name) {
125
+ return promo;
126
+ }
127
+ return false;
128
+ });
129
+ });
130
+ setBump((a) => a + 1);
131
+ }
132
+ }), 'root');
133
+ on(PromotionClickedEvent_1.PromotionClickedEvent, (event) => __awaiter(void 0, void 0, void 0, function* () {
134
+ const { promotion } = event;
135
+ if (!promotion) {
136
+ // We shouldn't be here, but just in case we are...
137
+ return;
138
+ }
139
+ if (!ccx.signedInUser && promotion.requireMemberPromotion) {
140
+ ccx.openMemberSignupModal(promotion);
141
+ }
142
+ else {
143
+ updateBasketRowContext(promotion);
144
+ }
145
+ }), 'root');
146
+ on(MemberOnlyFenceSignUp_1.MemberOnlyFenceSignUp, (event) => __awaiter(void 0, void 0, void 0, function* () {
147
+ updateBasketRowContext(event.promotion);
148
+ }), 'root');
149
+ }, [ccx.signedInUser, selectedBasketRow, allPromotions, setAllPromotions, loadedPromotion, setLoadedPromotion]);
150
+ (0, react_1.useEffect)(() => {
151
+ if (selectedBasketRow) {
152
+ const criteria = {
153
+ checkInDate: selectedBasketRow.getStartDate(),
154
+ checkOutDate: selectedBasketRow.getEndDate(),
155
+ adults: selectedBasketRow.getAdults(),
156
+ children: selectedBasketRow.getChildren(),
157
+ promoCode: selectedBasketRow.getPromoCode(),
158
+ };
159
+ onPromotionCriteriaChanged(criteria);
160
+ }
161
+ }, [
162
+ selectedBasketRow,
163
+ selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getAdults(),
164
+ selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getChildren(),
165
+ selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getArrivalDate(),
166
+ selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getEndDate(),
167
+ selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getPromoCode(),
168
+ allPromotions,
169
+ bump,
170
+ ]);
171
+ (0, react_1.useEffect)(() => {
172
+ if (!loadedPromotion) {
173
+ return;
174
+ }
175
+ let loadedExists = false;
176
+ for (const promotion of allPromotions) {
177
+ if (promotion.name === loadedPromotion.name) {
178
+ loadedExists = true;
179
+ break;
180
+ }
181
+ }
182
+ if (!loadedExists) {
183
+ setLoadedPromotion(null);
184
+ }
185
+ }, [allPromotions, loadedPromotion]);
186
+ /**
187
+ * Checks all the registered promotions, and returns the first one that matches the criteria.
188
+ *
189
+ * @param criteria
190
+ */
191
+ const checkPromotions = (criteria) => __awaiter(void 0, void 0, void 0, function* () {
192
+ for (const promotion of allPromotions) {
193
+ if (yield promotion.testCriteria(criteria)) {
194
+ return promotion;
195
+ }
196
+ }
197
+ return null;
198
+ });
199
+ const onPromotionCriteriaChanged = (criteria) => {
200
+ checkPromotions(criteria)
201
+ .then((promo) => {
202
+ setLoadedPromotion(promo);
203
+ })
204
+ .catch(() => {
205
+ setLoadedPromotion(null);
206
+ });
207
+ };
208
+ return {
209
+ loadedPromotion,
210
+ };
211
+ };
212
+ exports.usePromotionContainer = usePromotionContainer;
213
+ //# sourceMappingURL=PromotionProvider.js.map
@@ -0,0 +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 * as 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"]}
@@ -0,0 +1,4 @@
1
+ import { DeepPartial } from 'react-hook-form';
2
+ export declare const isObject: (item?: any) => boolean;
3
+ export declare const getKeys: (item?: any) => string[];
4
+ export declare const mergeDeep: <TObject extends Record<any, any>>(target?: TObject, source?: DeepPartial<TObject>) => TObject;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mergeDeep = exports.getKeys = exports.isObject = void 0;
4
+ const isObject = (item) => item && typeof item === 'object' && !Array.isArray(item);
5
+ exports.isObject = isObject;
6
+ const getKeys = (item) => ((0, exports.isObject)(item) ? Object.keys(item) : []);
7
+ exports.getKeys = getKeys;
8
+ const mergeDeep = (target, source) => {
9
+ if ((0, exports.isObject)(target) || (0, exports.isObject)(source)) {
10
+ const newObject = {};
11
+ const allKeys = (0, exports.getKeys)(target).concat((0, exports.getKeys)(source));
12
+ for (const key of allKeys) {
13
+ if ((0, exports.isObject)(source === null || source === void 0 ? void 0 : source[key]) || (0, exports.isObject)(target === null || target === void 0 ? void 0 : target[key])) {
14
+ newObject[key] = (0, exports.mergeDeep)(target === null || target === void 0 ? void 0 : target[key], source === null || source === void 0 ? void 0 : source[key]);
15
+ }
16
+ else
17
+ Object.assign(newObject, { [key]: (source === null || source === void 0 ? void 0 : source[key]) || (target === null || target === void 0 ? void 0 : target[key]) });
18
+ }
19
+ return newObject;
20
+ }
21
+ else
22
+ return target;
23
+ };
24
+ exports.mergeDeep = mergeDeep;
25
+ //# sourceMappingURL=ObjectHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectHelper.js","sourceRoot":"/","sources":["src/util/ObjectHelper.ts"],"names":[],"mappings":";;;AAEO,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAW,EAAE,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAA7F,QAAA,QAAQ,YAAqF;AACnG,MAAM,OAAO,GAAG,CAAC,IAAU,EAAY,EAAE,CAAC,CAAC,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAA9E,QAAA,OAAO,WAAuE;AACpF,MAAM,SAAS,GAAG,CAAmC,MAAuB,EAAE,MAAoC,EAA8B,EAAE;IACrJ,IAAI,IAAA,gBAAQ,EAAC,MAAM,CAAC,IAAI,IAAA,gBAAQ,EAAC,MAAM,CAAC,EAAE;QACtC,MAAM,SAAS,GAAqB,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,IAAA,eAAO,EAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAA,eAAO,EAAC,MAAM,CAAC,CAAC,CAAC;QACxD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;YACvB,IAAI,IAAA,gBAAQ,EAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,GAAG,CAAC,CAAC,IAAI,IAAA,gBAAQ,EAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,GAAG,CAAC,CAAC,EAAE;gBACpD,SAAS,CAAC,GAAG,CAAC,GAAG,IAAA,iBAAS,EAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,GAAG,CAAC,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,GAAG,CAAC,CAAC,CAAC;aAC5D;;gBAAM,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,GAAG,CAAC,MAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,GAAG,CAAC,CAAA,EAAE,CAAC,CAAC;SAC9E;QACD,OAAO,SAAS,CAAC;KACpB;;QAAM,OAAO,MAAM,CAAC;AACzB,CAAC,CAAC;AAXW,QAAA,SAAS,aAWpB","sourcesContent":["import { DeepPartial } from 'react-hook-form';\n\nexport const isObject = (item?: any): boolean => item && typeof item === 'object' && !Array.isArray(item);\nexport const getKeys = (item?: any): string[] => (isObject(item) ? Object.keys(item) : []);\nexport const mergeDeep = <TObject extends Record<any, any>>(target?: TObject | null, source?: DeepPartial<TObject> | null): TObject | null | undefined => {\n if (isObject(target) || isObject(source)) {\n const newObject: Record<any, any> = {};\n const allKeys = getKeys(target).concat(getKeys(source));\n for (const key of allKeys) {\n if (isObject(source?.[key]) || isObject(target?.[key])) {\n newObject[key] = mergeDeep(target?.[key], source?.[key]);\n } else Object.assign(newObject, { [key]: source?.[key] || target?.[key] });\n }\n return newObject;\n } else return target;\n};\n"]}
@@ -1,4 +1,5 @@
1
1
  import { ValidationValueMessage } from 'react-hook-form';
2
+ export declare const EMAIL_REGEX: RegExp;
2
3
  export declare const passwordRegex: RegExp;
3
4
  export declare const passwordPatternValidationMessage = "Password must have at least 8 characters long, case sensitive, can contain !$#%, no spaces.";
4
5
  export declare const passwordMatchValidationMessage = "Password and Repeat Password have to match";
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeRequiredRule = exports.makeRequiredValidationMessage = exports.emailPatternRule = exports.emailPatternValidationMessage = exports.emailRegex = exports.isPassWordMatch = exports.passwordPatternRule = exports.passwordMatchValidationMessage = exports.passwordPatternValidationMessage = exports.passwordRegex = void 0;
3
+ exports.makeRequiredRule = exports.makeRequiredValidationMessage = exports.emailPatternRule = exports.emailPatternValidationMessage = exports.emailRegex = exports.isPassWordMatch = exports.passwordPatternRule = exports.passwordMatchValidationMessage = exports.passwordPatternValidationMessage = exports.passwordRegex = exports.EMAIL_REGEX = void 0;
4
+ exports.EMAIL_REGEX = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
4
5
  exports.passwordRegex = /^[A-Za-z\d!$#%]{8,}$/;
5
6
  exports.passwordPatternValidationMessage = 'Password must have at least 8 characters long, case sensitive, can contain !$#%, no spaces.';
6
7
  exports.passwordMatchValidationMessage = 'Password and Repeat Password have to match';
@@ -1 +1 @@
1
- {"version":3,"file":"Validation.js","sourceRoot":"/","sources":["src/util/Validation.ts"],"names":[],"mappings":";;;AAEa,QAAA,aAAa,GAAG,sBAAsB,CAAC;AACvC,QAAA,gCAAgC,GAAG,6FAA6F,CAAC;AACjI,QAAA,8BAA8B,GAAG,4CAA4C,CAAC;AAC9E,QAAA,mBAAmB,GAAG;IAC/B,KAAK,EAAE,qBAAa;IACpB,OAAO,EAAE,wCAAgC;CAC5C,CAAC;AACK,MAAM,eAAe,GAAG,CAAC,aAAqB,EAAE,EAAE,CAAC,CAAC,cAAsB,EAAE,EAAE;IACjF,OAAO,CAAC,cAAc,IAAI,cAAc,KAAK,aAAa,IAAI,sCAA8B,CAAC;AACjG,CAAC,CAAC;AAFW,QAAA,eAAe,mBAE1B;AAEW,QAAA,UAAU,GAAG,wJAAwJ,CAAC;AACtK,QAAA,6BAA6B,GAAG,kBAAkB,CAAC;AACnD,QAAA,gBAAgB,GAAG;IAC5B,KAAK,EAAE,kBAAU;IACjB,OAAO,EAAE,qCAA6B;CACzC,CAAC;AAEK,MAAM,6BAA6B,GAAG,CAAC,UAAmB,EAAU,EAAE,CAAC,GAAG,UAAU,IAAI,YAAY,cAAc,CAAC;AAA7G,QAAA,6BAA6B,iCAAgF;AACnH,MAAM,gBAAgB,GAAG,CAAC,UAAmB,EAAE,UAAmB,EAAmC,EAAE,CAAC,CAAC;IAC5G,KAAK,EAAE,UAAU;IACjB,OAAO,EAAE,IAAA,qCAA6B,EAAC,UAAU,CAAC;CACrD,CAAC,CAAC;AAHU,QAAA,gBAAgB,oBAG1B","sourcesContent":["import { ValidationValueMessage } from 'react-hook-form';\n\nexport const passwordRegex = /^[A-Za-z\\d!$#%]{8,}$/;\nexport const passwordPatternValidationMessage = 'Password must have at least 8 characters long, case sensitive, can contain !$#%, no spaces.';\nexport const passwordMatchValidationMessage = 'Password and Repeat Password have to match';\nexport const passwordPatternRule = {\n value: passwordRegex,\n message: passwordPatternValidationMessage,\n};\nexport const isPassWordMatch = (passwordValue: string) => (repeatPassword: string) => {\n return !repeatPassword || repeatPassword === passwordValue || passwordMatchValidationMessage;\n};\n\nexport const emailRegex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\nexport const emailPatternValidationMessage = 'Email is invalid';\nexport const emailPatternRule = {\n value: emailRegex,\n message: emailPatternValidationMessage,\n};\n\nexport const makeRequiredValidationMessage = (fieldLabel?: string): string => `${fieldLabel || 'This field'} is required`;\nexport const makeRequiredRule = (isRequired: boolean, fieldLabel?: string): ValidationValueMessage<boolean> => ({\n value: isRequired,\n message: makeRequiredValidationMessage(fieldLabel),\n});\n"]}
1
+ {"version":3,"file":"Validation.js","sourceRoot":"/","sources":["src/util/Validation.ts"],"names":[],"mappings":";;;AAEa,QAAA,WAAW,GAAG,wJAAwJ,CAAC;AACvK,QAAA,aAAa,GAAG,sBAAsB,CAAC;AACvC,QAAA,gCAAgC,GAAG,6FAA6F,CAAC;AACjI,QAAA,8BAA8B,GAAG,4CAA4C,CAAC;AAC9E,QAAA,mBAAmB,GAAG;IAC/B,KAAK,EAAE,qBAAa;IACpB,OAAO,EAAE,wCAAgC;CAC5C,CAAC;AACK,MAAM,eAAe,GAAG,CAAC,aAAqB,EAAE,EAAE,CAAC,CAAC,cAAsB,EAAE,EAAE;IACjF,OAAO,CAAC,cAAc,IAAI,cAAc,KAAK,aAAa,IAAI,sCAA8B,CAAC;AACjG,CAAC,CAAC;AAFW,QAAA,eAAe,mBAE1B;AAEW,QAAA,UAAU,GAAG,wJAAwJ,CAAC;AACtK,QAAA,6BAA6B,GAAG,kBAAkB,CAAC;AACnD,QAAA,gBAAgB,GAAG;IAC5B,KAAK,EAAE,kBAAU;IACjB,OAAO,EAAE,qCAA6B;CACzC,CAAC;AAEK,MAAM,6BAA6B,GAAG,CAAC,UAAmB,EAAU,EAAE,CAAC,GAAG,UAAU,IAAI,YAAY,cAAc,CAAC;AAA7G,QAAA,6BAA6B,iCAAgF;AACnH,MAAM,gBAAgB,GAAG,CAAC,UAAmB,EAAE,UAAmB,EAAmC,EAAE,CAAC,CAAC;IAC5G,KAAK,EAAE,UAAU;IACjB,OAAO,EAAE,IAAA,qCAA6B,EAAC,UAAU,CAAC;CACrD,CAAC,CAAC;AAHU,QAAA,gBAAgB,oBAG1B","sourcesContent":["import { ValidationValueMessage } from 'react-hook-form';\n\nexport const EMAIL_REGEX = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\nexport const passwordRegex = /^[A-Za-z\\d!$#%]{8,}$/;\nexport const passwordPatternValidationMessage = 'Password must have at least 8 characters long, case sensitive, can contain !$#%, no spaces.';\nexport const passwordMatchValidationMessage = 'Password and Repeat Password have to match';\nexport const passwordPatternRule = {\n value: passwordRegex,\n message: passwordPatternValidationMessage,\n};\nexport const isPassWordMatch = (passwordValue: string) => (repeatPassword: string) => {\n return !repeatPassword || repeatPassword === passwordValue || passwordMatchValidationMessage;\n};\n\nexport const emailRegex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\nexport const emailPatternValidationMessage = 'Email is invalid';\nexport const emailPatternRule = {\n value: emailRegex,\n message: emailPatternValidationMessage,\n};\n\nexport const makeRequiredValidationMessage = (fieldLabel?: string): string => `${fieldLabel || 'This field'} is required`;\nexport const makeRequiredRule = (isRequired: boolean, fieldLabel?: string): ValidationValueMessage<boolean> => ({\n value: isRequired,\n message: makeRequiredValidationMessage(fieldLabel),\n});\n"]}