@qite/tide-booking-component 1.4.78 → 1.4.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/build/build-cjs/index.js +771 -473
  2. package/build/build-cjs/src/qsm/types.d.ts +2 -0
  3. package/build/build-cjs/src/search-results/store/search-results-slice.d.ts +10 -1
  4. package/build/build-cjs/src/search-results/types.d.ts +5 -4
  5. package/build/build-cjs/src/search-results/utils/search-results-utils.d.ts +9 -2
  6. package/build/build-esm/index.js +769 -438
  7. package/build/build-esm/src/qsm/types.d.ts +2 -0
  8. package/build/build-esm/src/search-results/store/search-results-slice.d.ts +10 -1
  9. package/build/build-esm/src/search-results/types.d.ts +5 -4
  10. package/build/build-esm/src/search-results/utils/search-results-utils.d.ts +9 -2
  11. package/package.json +2 -2
  12. package/src/booking-wizard/features/price-details/selectors.ts +1 -1
  13. package/src/content/features/content-page/content-page-self-contained.tsx +4 -4
  14. package/src/qsm/components/QSMContainer/qsm-container.tsx +9 -0
  15. package/src/search-results/components/hotel/hotel-accommodation-results.tsx +97 -99
  16. package/src/search-results/components/hotel/hotel-card.tsx +29 -7
  17. package/src/search-results/components/search-results-container/flight-search-results.tsx +2 -2
  18. package/src/search-results/components/search-results-container/search-results-container.tsx +191 -40
  19. package/src/search-results/features/flights/flight-search-results-self-contained.tsx +21 -2
  20. package/src/search-results/features/hotels/hotel-flight-search-results-self-contained.tsx +21 -2
  21. package/src/search-results/features/hotels/hotel-search-results-self-contained.tsx +21 -2
  22. package/src/search-results/features/roundtrips/roundtrip-search-results-self-contained.tsx +21 -2
  23. package/src/search-results/store/search-results-slice.ts +19 -1
  24. package/src/search-results/types.ts +5 -5
  25. package/src/search-results/utils/search-results-utils.ts +185 -2
  26. package/build/build-cjs/src/search-results/components/filters/utility.d.ts +0 -3
  27. package/build/build-esm/src/search-results/components/filters/utility.d.ts +0 -3
  28. package/src/search-results/components/filters/utility.tsx +0 -79
@@ -59,7 +59,8 @@ import {
59
59
  isEqual as isEqual$1,
60
60
  groupBy,
61
61
  minBy,
62
- concat
62
+ concat,
63
+ flatMap
63
64
  } from 'lodash';
64
65
  import { arSA, da, de, enGB, es, fr, is, it, nl, nb, pl, pt, sv, ja, enUS } from 'date-fns/locale';
65
66
  import { usePopper } from 'react-popper';
@@ -12748,44 +12749,44 @@ PERFORMANCE OF THIS SOFTWARE.
12748
12749
  });
12749
12750
  };
12750
12751
 
12751
- var ENDPOINT$7 = '/api/web/booking/v2';
12752
- var ENDPOINT_AVAILABLE_FLIGHTS = ENDPOINT$7 + '/available-flights';
12753
- var ENDPOINT_TRANSPORT_DATES = ENDPOINT$7 + '/transport-dates';
12754
- var ENDPOINT_PRICES = ENDPOINT$7 + '/prices';
12755
- var ENDPOINT_AVAILABLE_COUNTRIES = ENDPOINT$7 + '/available-countries';
12756
- var ENDPOINT_SEARCH = ENDPOINT$7 + '/search';
12757
- var ENDPOINT_SEARCH_WITH_ERROR_MAPPING = ENDPOINT$7 + '/search-with-error-mapping';
12752
+ var ENDPOINT$8 = '/api/web/booking/v2';
12753
+ var ENDPOINT_AVAILABLE_FLIGHTS = ENDPOINT$8 + '/available-flights';
12754
+ var ENDPOINT_TRANSPORT_DATES = ENDPOINT$8 + '/transport-dates';
12755
+ var ENDPOINT_PRICES = ENDPOINT$8 + '/prices';
12756
+ var ENDPOINT_AVAILABLE_COUNTRIES = ENDPOINT$8 + '/available-countries';
12757
+ var ENDPOINT_SEARCH = ENDPOINT$8 + '/search';
12758
+ var ENDPOINT_SEARCH_WITH_ERROR_MAPPING = ENDPOINT$8 + '/search-with-error-mapping';
12758
12759
  // const ENDPOINT_ELASTIC = `${ENDPOINT}/elastic`; // TODO
12759
- var ENDPOINT_DETAILS = ENDPOINT$7 + '/details';
12760
- var ENDPOINT_DETAILS_WL = ENDPOINT$7 + '/details-wl';
12760
+ var ENDPOINT_DETAILS = ENDPOINT$8 + '/details';
12761
+ var ENDPOINT_DETAILS_WL = ENDPOINT$8 + '/details-wl';
12761
12762
  var ENDPOINT_ENTRYLIGHT = function (code) {
12762
- return ENDPOINT$7 + '/entry-light/' + code;
12763
+ return ENDPOINT$8 + '/entry-light/' + code;
12763
12764
  };
12764
- var ENDPOINT_VALIDATE_VOUCHER = ENDPOINT$7 + '/validate-voucher';
12765
+ var ENDPOINT_VALIDATE_VOUCHER = ENDPOINT$8 + '/validate-voucher';
12765
12766
  var ENDPOINT_ALTERNATE_HOTELS = function (transactionId, optionId) {
12766
- return ENDPOINT$7 + '/details/' + transactionId + '/alternate-hotels/' + optionId;
12767
+ return ENDPOINT$8 + '/details/' + transactionId + '/alternate-hotels/' + optionId;
12767
12768
  };
12768
12769
  var ENDPOINT_ALTERNATE_FLIGHTS = function (transactionId) {
12769
- return ENDPOINT$7 + '/details/' + transactionId + '/alternate-flights';
12770
+ return ENDPOINT$8 + '/details/' + transactionId + '/alternate-flights';
12770
12771
  };
12771
- var ENDPOINT_BOOKABLE_DATES = ENDPOINT$7 + '/bookable-dates';
12772
- var ENDPOINT_PRICE_DETAILS = ENDPOINT$7 + '/price-details';
12773
- var ENDPOINT_BOOK = ENDPOINT$7 + '/book';
12774
- var ENDPOINT_UPDATE = ENDPOINT$7 + '/update';
12775
- var ENDPOINT_AGENTS = ENDPOINT$7 + '/agents';
12772
+ var ENDPOINT_BOOKABLE_DATES = ENDPOINT$8 + '/bookable-dates';
12773
+ var ENDPOINT_PRICE_DETAILS = ENDPOINT$8 + '/price-details';
12774
+ var ENDPOINT_BOOK = ENDPOINT$8 + '/book';
12775
+ var ENDPOINT_UPDATE = ENDPOINT$8 + '/update';
12776
+ var ENDPOINT_AGENTS = ENDPOINT$8 + '/agents';
12776
12777
  var ENDPOINT_AVAILABLE_ALLOTMENTS = function (eventId, productCode) {
12777
- return ENDPOINT$7 + '/get-allotment-availability/' + eventId + '/' + productCode;
12778
+ return ENDPOINT$8 + '/get-allotment-availability/' + eventId + '/' + productCode;
12778
12779
  };
12779
- var ENDPOINT_FLIGHT_POOL = ENDPOINT$7 + '/flight-pool';
12780
- var ENDPOINT_TOUR_CODES = ENDPOINT$7 + '/tourcodes';
12780
+ var ENDPOINT_FLIGHT_POOL = ENDPOINT$8 + '/flight-pool';
12781
+ var ENDPOINT_TOUR_CODES = ENDPOINT$8 + '/tourcodes';
12781
12782
  var ENDPOINT_CUSTOM_ENTRY_STATUS$1 = function (dossierNumber, customEntryStatusId) {
12782
- return ENDPOINT$7 + '/custom-entry-status/' + dossierNumber + '/' + customEntryStatusId;
12783
+ return ENDPOINT$8 + '/custom-entry-status/' + dossierNumber + '/' + customEntryStatusId;
12783
12784
  };
12784
12785
  var ENDPOINT_ENTRY_STATUS = function (dossierNumber, entryStatus) {
12785
- return ENDPOINT$7 + '/entry-status/' + dossierNumber + '/' + entryStatus;
12786
+ return ENDPOINT$8 + '/entry-status/' + dossierNumber + '/' + entryStatus;
12786
12787
  };
12787
- var ENDPOINT_ELASTIC = ENDPOINT$7 + '/elastic';
12788
- var ENDPOINT_FLIGHT_LINES = ENDPOINT$7 + '/flightlines';
12788
+ var ENDPOINT_ELASTIC = ENDPOINT$8 + '/elastic';
12789
+ var ENDPOINT_FLIGHT_LINES = ENDPOINT$8 + '/flightlines';
12789
12790
  var availableFlights = function (config, request, signal) {
12790
12791
  var url = '' + config.host + ENDPOINT_AVAILABLE_FLIGHTS;
12791
12792
  var apiKey = config.apiKey;
@@ -12925,12 +12926,12 @@ PERFORMANCE OF THIS SOFTWARE.
12925
12926
  return post(url, apiKey, body, config.token, signal, true);
12926
12927
  };
12927
12928
 
12928
- var ENDPOINT$6 = '/api/member';
12929
- var ENDPOINT_LOGIN = ENDPOINT$6 + '/login';
12930
- var ENDPOINT_LOGOUT = ENDPOINT$6 + '/logout';
12931
- var ENDPOINT_CONFIRM = ENDPOINT$6 + '/confirm';
12932
- var ENDPOINT_FORGOT_PASSWORD = ENDPOINT$6 + '/forgot-password';
12933
- var ENDPOINT_RESET_PASSWORD = ENDPOINT$6 + '/reset-password';
12929
+ var ENDPOINT$7 = '/api/member';
12930
+ var ENDPOINT_LOGIN = ENDPOINT$7 + '/login';
12931
+ var ENDPOINT_LOGOUT = ENDPOINT$7 + '/logout';
12932
+ var ENDPOINT_CONFIRM = ENDPOINT$7 + '/confirm';
12933
+ var ENDPOINT_FORGOT_PASSWORD = ENDPOINT$7 + '/forgot-password';
12934
+ var ENDPOINT_RESET_PASSWORD = ENDPOINT$7 + '/reset-password';
12934
12935
  var login = function (config, request, signal) {
12935
12936
  var url = '' + config.host + ENDPOINT_LOGIN;
12936
12937
  var apiKey = config.apiKey;
@@ -12962,8 +12963,8 @@ PERFORMANCE OF THIS SOFTWARE.
12962
12963
  return post$1(url, apiKey, body, config.token, signal);
12963
12964
  };
12964
12965
 
12965
- var ENDPOINT$5 = '/api/mollie';
12966
- var ENDPOINT_CREATE_PAYMENTS = ENDPOINT$5 + '/create-payment';
12966
+ var ENDPOINT$6 = '/api/mollie';
12967
+ var ENDPOINT_CREATE_PAYMENTS = ENDPOINT$6 + '/create-payment';
12967
12968
  /**
12968
12969
  * api/mollie/create-payment
12969
12970
  * @param request
@@ -12976,13 +12977,13 @@ PERFORMANCE OF THIS SOFTWARE.
12976
12977
  return post(url, apiKey, body, config.token, signal);
12977
12978
  };
12978
12979
 
12979
- var ENDPOINT$4 = '/api/web/search';
12980
- var ENDPOINT_COUNTRIES = ENDPOINT$4 + '/countries';
12981
- var ENDPOINT_REGIONS = ENDPOINT$4 + '/regions';
12982
- var ENDPOINT_OORDS = ENDPOINT$4 + '/oords';
12983
- var ENDPOINT_LOCATIONS$1 = ENDPOINT$4 + '/locations';
12980
+ var ENDPOINT$5 = '/api/web/search';
12981
+ var ENDPOINT_COUNTRIES = ENDPOINT$5 + '/countries';
12982
+ var ENDPOINT_REGIONS = ENDPOINT$5 + '/regions';
12983
+ var ENDPOINT_OORDS = ENDPOINT$5 + '/oords';
12984
+ var ENDPOINT_LOCATIONS$1 = ENDPOINT$5 + '/locations';
12984
12985
  var ENDPOINT_PORTAL = function (portalId) {
12985
- return ENDPOINT$4 + '/portal/' + portalId;
12986
+ return ENDPOINT$5 + '/portal/' + portalId;
12986
12987
  };
12987
12988
  var ENDPOINT_AIRPORT = '/api/web/entity/airport';
12988
12989
  /**
@@ -13144,12 +13145,12 @@ PERFORMANCE OF THIS SOFTWARE.
13144
13145
  return d instanceof Date && !isNaN(d.getTime());
13145
13146
  };
13146
13147
 
13147
- var ENDPOINT$3 = '/api/web/agent';
13148
- var ENDPOINT_GET_PRINT_ACTIONS = ENDPOINT$3 + '/print-action';
13149
- var ENDPOINT_PRINT = ENDPOINT$3 + '/print-action';
13150
- var ENDPOINT_CUSTOM_ENTRY_STATUS = ENDPOINT$3 + '/custom-entry-status';
13151
- var ENDPOINT_ENUM_ENTRY_STATUS = ENDPOINT$3 + '/enum/entry-status';
13152
- var ENDPOINT_CHANGE_ENTRY_AGENT_SURCHARGE = ENDPOINT$3 + '/entry/change-agent-surcharge';
13148
+ var ENDPOINT$4 = '/api/web/agent';
13149
+ var ENDPOINT_GET_PRINT_ACTIONS = ENDPOINT$4 + '/print-action';
13150
+ var ENDPOINT_PRINT = ENDPOINT$4 + '/print-action';
13151
+ var ENDPOINT_CUSTOM_ENTRY_STATUS = ENDPOINT$4 + '/custom-entry-status';
13152
+ var ENDPOINT_ENUM_ENTRY_STATUS = ENDPOINT$4 + '/enum/entry-status';
13153
+ var ENDPOINT_CHANGE_ENTRY_AGENT_SURCHARGE = ENDPOINT$4 + '/entry/change-agent-surcharge';
13153
13154
  /**
13154
13155
  * api/web/agent/print-action/{print-action-group}
13155
13156
  * @param config
@@ -13182,7 +13183,7 @@ PERFORMANCE OF THIS SOFTWARE.
13182
13183
  return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);
13183
13184
  })
13184
13185
  .join('&');
13185
- var url = '' + config.host + ENDPOINT$3 + '/entry/list?' + queryString;
13186
+ var url = '' + config.host + ENDPOINT$4 + '/entry/list?' + queryString;
13186
13187
  var apiKey = config.apiKey;
13187
13188
  return get(url, apiKey, config.token, signal, true);
13188
13189
  };
@@ -13193,7 +13194,7 @@ PERFORMANCE OF THIS SOFTWARE.
13193
13194
  return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);
13194
13195
  })
13195
13196
  .join('&');
13196
- var url = '' + config.host + ENDPOINT$3 + '/v2/entry/list?' + queryString;
13197
+ var url = '' + config.host + ENDPOINT$4 + '/v2/entry/list?' + queryString;
13197
13198
  var apiKey = config.apiKey;
13198
13199
  return get(url, apiKey, config.token, signal, true);
13199
13200
  };
@@ -13204,12 +13205,12 @@ PERFORMANCE OF THIS SOFTWARE.
13204
13205
  return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);
13205
13206
  })
13206
13207
  .join('&');
13207
- var url = '' + config.host + ENDPOINT$3 + '/entry/total?' + queryString;
13208
+ var url = '' + config.host + ENDPOINT$4 + '/entry/total?' + queryString;
13208
13209
  var apiKey = config.apiKey;
13209
13210
  return get(url, apiKey, config.token, signal, true);
13210
13211
  };
13211
13212
  var getEntryDetailv2 = function (config, entryId, signal) {
13212
- var url = '' + config.host + ENDPOINT$3 + '/v2/entry/detail/' + entryId;
13213
+ var url = '' + config.host + ENDPOINT$4 + '/v2/entry/detail/' + entryId;
13213
13214
  var apiKey = config.apiKey;
13214
13215
  return get(url, apiKey, config.token, signal, true);
13215
13216
  };
@@ -13220,7 +13221,7 @@ PERFORMANCE OF THIS SOFTWARE.
13220
13221
  return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);
13221
13222
  })
13222
13223
  .join('&');
13223
- var url = '' + config.host + ENDPOINT$3 + '/invoice/list?' + queryString;
13224
+ var url = '' + config.host + ENDPOINT$4 + '/invoice/list?' + queryString;
13224
13225
  var apiKey = config.apiKey;
13225
13226
  return get(url, apiKey, config.token, signal, true);
13226
13227
  };
@@ -13247,25 +13248,25 @@ PERFORMANCE OF THIS SOFTWARE.
13247
13248
  return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);
13248
13249
  })
13249
13250
  .join('&');
13250
- var url = '' + config.host + ENDPOINT$3 + '/allotment/list?' + queryString;
13251
+ var url = '' + config.host + ENDPOINT$4 + '/allotment/list?' + queryString;
13251
13252
  var apiKey = config.apiKey;
13252
13253
  return get(url, apiKey, config.token, signal, true);
13253
13254
  };
13254
13255
  var getAllotment = function (config, allotmentId, signal) {
13255
- var url = '' + config.host + ENDPOINT$3 + '/allotment/' + allotmentId;
13256
+ var url = '' + config.host + ENDPOINT$4 + '/allotment/' + allotmentId;
13256
13257
  var apiKey = config.apiKey;
13257
13258
  return get(url, apiKey, config.token, signal, true);
13258
13259
  };
13259
13260
 
13260
- var ENDPOINT$2 = '/api/web';
13261
- var ENDPOINT_CREATE_CRM_CONTACT = ENDPOINT$2 + '/crmcontact';
13262
- var ENDPOINT_CONTACT_FORM$1 = ENDPOINT$2 + '/contactform';
13263
- var ENDPOINT_CREATE_AFFILIATES = ENDPOINT$2 + '/affiliates';
13264
- var ENDPOINT_TRANSLATION_DICTIONARY = ENDPOINT$2 + '/translation-dictionary';
13265
- var ENDPOINT_BOOKING_ACCOMMODATION = ENDPOINT$2 + '/booking-accommodation';
13266
- var ENDPOINT_LOCATIONS = ENDPOINT$2 + '/entity/locations';
13261
+ var ENDPOINT$3 = '/api/web';
13262
+ var ENDPOINT_CREATE_CRM_CONTACT = ENDPOINT$3 + '/crmcontact';
13263
+ var ENDPOINT_CONTACT_FORM$1 = ENDPOINT$3 + '/contactform';
13264
+ var ENDPOINT_CREATE_AFFILIATES = ENDPOINT$3 + '/affiliates';
13265
+ var ENDPOINT_TRANSLATION_DICTIONARY = ENDPOINT$3 + '/translation-dictionary';
13266
+ var ENDPOINT_BOOKING_ACCOMMODATION = ENDPOINT$3 + '/booking-accommodation';
13267
+ var ENDPOINT_LOCATIONS = ENDPOINT$3 + '/entity/locations';
13267
13268
  var ENDPOINT_WEBSITE_CONFIGURATION = function (portalId) {
13268
- return ENDPOINT$2 + '/website/' + portalId + '/configuration';
13269
+ return ENDPOINT$3 + '/website/' + portalId + '/configuration';
13269
13270
  };
13270
13271
  /**
13271
13272
  * api/web/crmcontact
@@ -13330,9 +13331,9 @@ PERFORMANCE OF THIS SOFTWARE.
13330
13331
  return get(url, apiKey, config.token, signal, true);
13331
13332
  };
13332
13333
 
13333
- var ENDPOINT$1 = '/api/web/contact';
13334
- var ENDPOINT_CONTACT_FORM = ENDPOINT$1 + '/contact-form';
13335
- var ENDPOINT_CONTACT_HAS_TAG = ENDPOINT$1 + '/has-tag';
13334
+ var ENDPOINT$2 = '/api/web/contact';
13335
+ var ENDPOINT_CONTACT_FORM = ENDPOINT$2 + '/contact-form';
13336
+ var ENDPOINT_CONTACT_HAS_TAG = ENDPOINT$2 + '/has-tag';
13336
13337
  /**
13337
13338
  * api/web/contact/contact-form
13338
13339
  * Processes a contact form.
@@ -13354,8 +13355,8 @@ PERFORMANCE OF THIS SOFTWARE.
13354
13355
  return post$1(url, apiKey, body, config.token, signal);
13355
13356
  };
13356
13357
 
13357
- var ENDPOINT = '/api/web/file';
13358
- var ENDPOINT_FEED = ENDPOINT + '/feed';
13358
+ var ENDPOINT$1 = '/api/web/file';
13359
+ var ENDPOINT_FEED = ENDPOINT$1 + '/feed';
13359
13360
  /**
13360
13361
  * api/web/file/feed
13361
13362
  * fetch a xml from blob feed.
@@ -13384,6 +13385,16 @@ PERFORMANCE OF THIS SOFTWARE.
13384
13385
  return get$1(url, apiKey, config.token, signal);
13385
13386
  };
13386
13387
 
13388
+ var ENDPOINT = '/api/web/packaging';
13389
+ var ENDPOINT_ACCOMMODATIONS = ENDPOINT + '/accommodations';
13390
+ // MANUAL PACKAGING SEARCH
13391
+ var searchPackagingAccommodations = function (config, request, signal) {
13392
+ var url = '' + config.host + ENDPOINT_ACCOMMODATIONS;
13393
+ var apiKey = config.apiKey;
13394
+ var body = JSON.stringify(request);
13395
+ return post(url, apiKey, body, config.token, signal, true);
13396
+ };
13397
+
13387
13398
  exports.AllotmentType = AllotmentType;
13388
13399
  exports.ContactForm = ContactForm;
13389
13400
  exports.DataType = DataType;
@@ -13452,6 +13463,7 @@ PERFORMANCE OF THIS SOFTWARE.
13452
13463
  exports.searchFlightPool = searchFlightPool;
13453
13464
  exports.searchLocations = searchLocations;
13454
13465
  exports.searchOords = searchOords;
13466
+ exports.searchPackagingAccommodations = searchPackagingAccommodations;
13455
13467
  exports.searchRegions = searchRegions;
13456
13468
  exports.searchWithErrorMapping = searchWithErrorMapping;
13457
13469
  exports.setCustomEntryStatus = setCustomEntryStatus;
@@ -24364,7 +24376,7 @@ var aggregatePricePerPaxType = function (priceDetails, requestRooms) {
24364
24376
  room.pax.forEach(function (pax) {
24365
24377
  var paxType = 'ADULT';
24366
24378
  if (typeof pax.age === 'number') {
24367
- if (pax.age <= 11) {
24379
+ if (pax.age <= 11 && pax.age > 2) {
24368
24380
  paxType = 'CHILD';
24369
24381
  } else if (pax.age <= 2) {
24370
24382
  paxType = 'INFANT';
@@ -30300,6 +30312,7 @@ var Footer = function (_a) {
30300
30312
 
30301
30313
  var QSMConfigurationContext = React__default.createContext({
30302
30314
  type: PortalQsmType.Accommodation,
30315
+ searchConfigurations: [],
30303
30316
  askTravelers: false,
30304
30317
  askNationality: false,
30305
30318
  askTravelClass: false,
@@ -32907,6 +32920,7 @@ var TravelNationalityPicker = function () {
32907
32920
  };
32908
32921
 
32909
32922
  var QSMContainer = function () {
32923
+ var _a;
32910
32924
  var dispatch = useDispatch();
32911
32925
  var isMobile = useMediaQuery('(max-width: 768px)');
32912
32926
  var qsmState = useSelector(function (state) {
@@ -32917,24 +32931,36 @@ var QSMContainer = function () {
32917
32931
  fromDate = qsmState.fromDate,
32918
32932
  toDate = qsmState.toDate,
32919
32933
  tripType = qsmState.tripType;
32920
- var _a = useContext(QSMConfigurationContext),
32921
- askTravelers = _a.askTravelers,
32922
- askRooms = _a.askRooms,
32923
- askNationality = _a.askNationality,
32924
- askTravelClass = _a.askTravelClass,
32925
- askTravelType = _a.askTravelType,
32926
- submitIcon = _a.submitIcon,
32927
- onSubmit = _a.onSubmit,
32928
- travelTypes = _a.travelTypes,
32929
- languageCode = _a.languageCode,
32930
- departureAirport = _a.departureAirport,
32931
- destinationAirport = _a.destinationAirport,
32932
- returnAirport = _a.returnAirport,
32933
- destination = _a.destination,
32934
- allowOneWay = _a.allowOneWay,
32935
- allowRoundtrip = _a.allowRoundtrip,
32936
- allowOpenJaw = _a.allowOpenJaw;
32934
+ var _b = useContext(QSMConfigurationContext),
32935
+ askTravelers = _b.askTravelers,
32936
+ askRooms = _b.askRooms,
32937
+ askNationality = _b.askNationality,
32938
+ askTravelClass = _b.askTravelClass,
32939
+ askTravelType = _b.askTravelType,
32940
+ submitIcon = _b.submitIcon,
32941
+ onSubmit = _b.onSubmit,
32942
+ travelTypes = _b.travelTypes,
32943
+ languageCode = _b.languageCode,
32944
+ departureAirport = _b.departureAirport,
32945
+ destinationAirport = _b.destinationAirport,
32946
+ returnAirport = _b.returnAirport,
32947
+ destination = _b.destination,
32948
+ allowOneWay = _b.allowOneWay,
32949
+ allowRoundtrip = _b.allowRoundtrip,
32950
+ allowOpenJaw = _b.allowOpenJaw,
32951
+ searchConfigurations = _b.searchConfigurations;
32937
32952
  var translations = getTranslations(languageCode !== null && languageCode !== void 0 ? languageCode : 'en-GB');
32953
+ useEffect(
32954
+ function () {
32955
+ var _a;
32956
+ var defaultQsmType = (_a = first(searchConfigurations)) === null || _a === void 0 ? void 0 : _a.qsmType;
32957
+ console.log('Available search configurations:', searchConfigurations);
32958
+ if (!defaultQsmType) return;
32959
+ console.log('set default qsmType:', defaultQsmType);
32960
+ handleQsmTypeChange(defaultQsmType);
32961
+ },
32962
+ [searchConfigurations]
32963
+ );
32938
32964
  useEffect(
32939
32965
  function () {
32940
32966
  if (fromDate || toDate) return;
@@ -32968,12 +32994,36 @@ var QSMContainer = function () {
32968
32994
  };
32969
32995
  var handleQsmTypeChange = function (value) {
32970
32996
  dispatch(setSelectedQsmType(value));
32971
- var startDate = addMonths(new Date(), 1);
32997
+ var now = new Date();
32998
+ // Default fallback
32999
+ var startDate = addMonths(now, 1);
32972
33000
  var endDate = addDays(startDate, 7);
32973
33001
  if (value === PortalQsmType.GroupTour) {
32974
- startDate = new Date();
33002
+ startDate = now;
32975
33003
  endDate = addYears(startDate, 1);
32976
33004
  }
33005
+ var searchConfig = searchConfigurations.find(function (config) {
33006
+ return config.qsmType === value;
33007
+ });
33008
+ if (searchConfig) {
33009
+ var applyAmount = function (baseDate, type, amount) {
33010
+ if (!amount || type == null) return baseDate;
33011
+ switch (type) {
33012
+ case build.DateAmountType.days:
33013
+ return addDays(baseDate, amount);
33014
+ case build.DateAmountType.months:
33015
+ return addMonths(baseDate, amount);
33016
+ default:
33017
+ return baseDate;
33018
+ }
33019
+ };
33020
+ if (searchConfig.fromDateAmount) {
33021
+ startDate = applyAmount(now, searchConfig.fromDateAmountType, searchConfig.fromDateAmount);
33022
+ }
33023
+ if (searchConfig.toDateAmount) {
33024
+ endDate = applyAmount(startDate, searchConfig.toDateAmountType, searchConfig.toDateAmount);
33025
+ }
33026
+ }
32977
33027
  handleDateChange({
32978
33028
  fromDate: startDate,
32979
33029
  toDate: endDate
@@ -33072,6 +33122,53 @@ var QSMContainer = function () {
33072
33122
  },
33073
33123
  [fromDate, toDate, departureAirport, returnAirport, allowOpenJaw]
33074
33124
  );
33125
+ var qsmTypeMeta =
33126
+ ((_a = {}),
33127
+ (_a[PortalQsmType.Multidestination] = {
33128
+ icon: 'ui-location',
33129
+ label: translations.QSM.MULTIDESTINATION
33130
+ }),
33131
+ (_a[PortalQsmType.Package] = {
33132
+ icon: 'ui-suitcase',
33133
+ label: translations.QSM.PACKAGES
33134
+ }),
33135
+ (_a[PortalQsmType.AccommodationAndFlight] = {
33136
+ icon: ['ui-backforward', 'ui-bed'],
33137
+ label: translations.QSM.TRANSPORT_HOTEL
33138
+ }),
33139
+ (_a[PortalQsmType.Accommodation] = {
33140
+ icon: 'ui-bed',
33141
+ label: translations.QSM.ACCOMMODATION
33142
+ }),
33143
+ (_a[PortalQsmType.Flight] = {
33144
+ icon: 'ui-flight',
33145
+ label: translations.QSM.TRANSPORTS
33146
+ }),
33147
+ (_a[PortalQsmType.GroupTour] = {
33148
+ icon: 'ui-group',
33149
+ label: translations.QSM.GROUP_TOUR
33150
+ }),
33151
+ (_a[PortalQsmType.RoundTrip] = {
33152
+ icon: 'ui-group',
33153
+ label: translations.QSM.ROUNDTRIP
33154
+ }),
33155
+ (_a[PortalQsmType.Ticket] = {
33156
+ icon: 'ui-ticket',
33157
+ label: translations.QSM.TICKET_ONLY
33158
+ }),
33159
+ (_a[PortalQsmType.Car] = {
33160
+ icon: 'ui-car',
33161
+ label: translations.QSM.RENT_A_CAR
33162
+ }),
33163
+ (_a[PortalQsmType.Transfer] = {
33164
+ icon: 'ui-backforward',
33165
+ label: translations.QSM.TRANSFERS
33166
+ }),
33167
+ (_a[PortalQsmType.Cruise] = {
33168
+ icon: 'ui-ship',
33169
+ label: translations.QSM.CRUISES
33170
+ }),
33171
+ _a);
33075
33172
  return React__default.createElement(
33076
33173
  'div',
33077
33174
  { className: 'qsm' },
@@ -33081,132 +33178,31 @@ var QSMContainer = function () {
33081
33178
  React__default.createElement(
33082
33179
  'div',
33083
33180
  { className: 'qsm__tabs' },
33084
- React__default.createElement(
33085
- 'button',
33086
- {
33087
- type: 'button',
33088
- className: 'qsm__tab '.concat(qsmType == PortalQsmType.Multidestination ? 'qsm__tab--active' : ''),
33089
- onClick: function () {
33090
- return handleQsmTypeChange(PortalQsmType.Multidestination);
33091
- }
33092
- },
33093
- React__default.createElement('span', { className: 'qsm__tab__icons' }, React__default.createElement(Icon$2, { name: 'ui-location', height: 16 })),
33094
- translations.QSM.MULTIDESTINATION
33095
- ),
33096
- React__default.createElement(
33097
- 'button',
33098
- {
33099
- type: 'button',
33100
- className: 'qsm__tab '.concat(qsmType == PortalQsmType.Package ? 'qsm__tab--active' : ''),
33101
- onClick: function () {
33102
- return handleQsmTypeChange(PortalQsmType.Package);
33103
- }
33104
- },
33105
- React__default.createElement('span', { className: 'qsm__tab__icons' }, React__default.createElement(Icon$2, { name: 'ui-suitcase', height: 16 })),
33106
- translations.QSM.PACKAGES
33107
- ),
33108
- React__default.createElement(
33109
- 'button',
33110
- {
33111
- type: 'button',
33112
- className: 'qsm__tab '.concat(qsmType == PortalQsmType.AccommodationAndFlight ? 'qsm__tab--active' : ''),
33113
- onClick: function () {
33114
- return handleQsmTypeChange(PortalQsmType.AccommodationAndFlight);
33115
- }
33116
- },
33117
- React__default.createElement(
33118
- 'span',
33119
- { className: 'qsm__tab__icons' },
33120
- React__default.createElement(Icon$2, { name: 'ui-backforward', height: 14 }),
33121
- '+',
33122
- React__default.createElement(Icon$2, { name: 'ui-bed', height: 14 })
33123
- ),
33124
- translations.QSM.TRANSPORT_HOTEL
33125
- ),
33126
- React__default.createElement(
33127
- 'button',
33128
- {
33129
- type: 'button',
33130
- className: 'qsm__tab '.concat(qsmType == PortalQsmType.Accommodation ? 'qsm__tab--active' : ''),
33131
- onClick: function () {
33132
- return handleQsmTypeChange(PortalQsmType.Accommodation);
33133
- }
33134
- },
33135
- React__default.createElement('span', { className: 'qsm__tab__icons' }, React__default.createElement(Icon$2, { name: 'ui-bed', height: 16 })),
33136
- translations.QSM.ACCOMMODATION
33137
- ),
33138
- React__default.createElement(
33139
- 'button',
33140
- {
33141
- type: 'button',
33142
- className: 'qsm__tab '.concat(qsmType == PortalQsmType.Flight ? 'qsm__tab--active' : ''),
33143
- onClick: function () {
33144
- return handleQsmTypeChange(PortalQsmType.Flight);
33145
- }
33146
- },
33147
- React__default.createElement('span', { className: 'qsm__tab__icons' }, React__default.createElement(Icon$2, { name: 'ui-flight', height: 16 })),
33148
- translations.QSM.TRANSPORTS
33149
- ),
33150
- React__default.createElement(
33151
- 'button',
33152
- {
33153
- type: 'button',
33154
- className: 'qsm__tab '.concat(qsmType == PortalQsmType.GroupTour ? 'qsm__tab--active' : ''),
33155
- onClick: function () {
33156
- return handleQsmTypeChange(PortalQsmType.GroupTour);
33157
- }
33158
- },
33159
- React__default.createElement('span', { className: 'qsm__tab__icons' }, React__default.createElement(Icon$2, { name: 'ui-group', height: 16 })),
33160
- translations.QSM.GROUP_TOUR
33161
- ),
33162
- React__default.createElement(
33163
- 'button',
33164
- {
33165
- type: 'button',
33166
- className: 'qsm__tab '.concat(qsmType == PortalQsmType.Ticket ? 'qsm__tab--active' : ''),
33167
- onClick: function () {
33168
- return handleQsmTypeChange(PortalQsmType.Ticket);
33169
- }
33170
- },
33171
- React__default.createElement('span', { className: 'qsm__tab__icons' }, React__default.createElement(Icon$2, { name: 'ui-ticket', height: 16 })),
33172
- translations.QSM.TICKET_ONLY
33173
- ),
33174
- React__default.createElement(
33175
- 'button',
33176
- {
33177
- type: 'button',
33178
- className: 'qsm__tab '.concat(qsmType == PortalQsmType.Car ? 'qsm__tab--active' : ''),
33179
- onClick: function () {
33180
- return handleQsmTypeChange(PortalQsmType.Car);
33181
- }
33182
- },
33183
- React__default.createElement('span', { className: 'qsm__tab__icons' }, React__default.createElement(Icon$2, { name: 'ui-car', height: 16 })),
33184
- translations.QSM.RENT_A_CAR
33185
- ),
33186
- React__default.createElement(
33187
- 'button',
33188
- {
33189
- type: 'button',
33190
- className: 'qsm__tab '.concat(qsmType == PortalQsmType.Transfer ? 'qsm__tab--active' : ''),
33191
- onClick: function () {
33192
- return handleQsmTypeChange(PortalQsmType.Transfer);
33193
- }
33194
- },
33195
- React__default.createElement('span', { className: 'qsm__tab__icons' }, React__default.createElement(Icon$2, { name: 'ui-backforward', height: 16 })),
33196
- translations.QSM.TRANSFERS
33197
- ),
33198
- React__default.createElement(
33199
- 'button',
33200
- {
33201
- type: 'button',
33202
- className: 'qsm__tab '.concat(qsmType == PortalQsmType.Cruise ? 'qsm__tab--active' : ''),
33203
- onClick: function () {
33204
- return handleQsmTypeChange(PortalQsmType.Cruise);
33205
- }
33206
- },
33207
- React__default.createElement('span', { className: 'qsm__tab__icons' }, React__default.createElement(Icon$2, { name: 'ui-ship', height: 16 })),
33208
- translations.QSM.CRUISES
33209
- )
33181
+ searchConfigurations.map(function (searchConfig, index) {
33182
+ var meta = qsmTypeMeta[searchConfig.qsmType];
33183
+ if (!meta) return null; // safety guard
33184
+ return React__default.createElement(
33185
+ 'button',
33186
+ {
33187
+ key: 'qsm-type-'.concat(index),
33188
+ type: 'button',
33189
+ className: 'qsm__tab '.concat(qsmType === searchConfig.qsmType ? 'qsm__tab--active' : ''),
33190
+ onClick: function () {
33191
+ return handleQsmTypeChange(searchConfig.qsmType);
33192
+ }
33193
+ },
33194
+ React__default.createElement(
33195
+ 'span',
33196
+ { className: 'qsm__tab__icons' },
33197
+ Array.isArray(meta.icon)
33198
+ ? meta.icon.map(function (icon, i) {
33199
+ return React__default.createElement(Icon$2, { key: i, name: icon, height: 14 });
33200
+ })
33201
+ : React__default.createElement(Icon$2, { name: meta.icon, height: 16 })
33202
+ ),
33203
+ meta.label
33204
+ );
33205
+ })
33210
33206
  ),
33211
33207
  React__default.createElement(
33212
33208
  'div',
@@ -33397,6 +33393,9 @@ var initialState$1 = {
33397
33393
  results: [],
33398
33394
  filteredResults: [],
33399
33395
  selectedSearchResultId: null,
33396
+ packagingAccoResults: [],
33397
+ filteredPackagingAccoResults: [],
33398
+ selectedPackagingAccoResultCode: null,
33400
33399
  selectedFlight: null,
33401
33400
  selectedFlightDetails: null,
33402
33401
  bookingPackageDetails: null,
@@ -33421,6 +33420,15 @@ var searchResultsSlice = createSlice({
33421
33420
  setSelectedSearchResult: function (state, action) {
33422
33421
  state.selectedSearchResultId = action.payload;
33423
33422
  },
33423
+ setPackagingAccoResults: function (state, action) {
33424
+ state.packagingAccoResults = action.payload;
33425
+ },
33426
+ setFilteredPackagingAccoResults: function (state, action) {
33427
+ state.filteredPackagingAccoResults = action.payload;
33428
+ },
33429
+ setSelectedPackagingAccoResult: function (state, action) {
33430
+ state.selectedPackagingAccoResultCode = action.payload;
33431
+ },
33424
33432
  setSelectedFlight: function (state, action) {
33425
33433
  state.selectedFlight = action.payload;
33426
33434
  },
@@ -33487,6 +33495,9 @@ var searchResultsSlice = createSlice({
33487
33495
  var setResults = ((_a = searchResultsSlice.actions), _a.setResults),
33488
33496
  setFilteredResults = _a.setFilteredResults,
33489
33497
  setSelectedSearchResult = _a.setSelectedSearchResult,
33498
+ setPackagingAccoResults = _a.setPackagingAccoResults,
33499
+ setFilteredPackagingAccoResults = _a.setFilteredPackagingAccoResults,
33500
+ setSelectedPackagingAccoResult = _a.setSelectedPackagingAccoResult,
33490
33501
  setSelectedFlight = _a.setSelectedFlight,
33491
33502
  setSelectedFlightDetails = _a.setSelectedFlightDetails,
33492
33503
  setBookingPackageDetails = _a.setBookingPackageDetails,
@@ -37845,15 +37856,48 @@ var FlyIn = function (_a) {
37845
37856
  };
37846
37857
 
37847
37858
  var HotelCard = function (_a) {
37859
+ var _b;
37848
37860
  var result = _a.result,
37849
37861
  translations = _a.translations;
37850
37862
  var dispatch = useDispatch();
37851
- var selectedSearchResultId = useSelector(function (state) {
37863
+ var selectedPackagingAccoResultCode = useSelector(function (state) {
37852
37864
  return state.searchResults;
37853
- }).selectedSearchResultId;
37854
- var handleChange = function (productId) {
37855
- dispatch(setSelectedSearchResult(productId));
37865
+ }).selectedPackagingAccoResultCode;
37866
+ var handleChange = function (productCode) {
37867
+ dispatch(setSelectedPackagingAccoResult(productCode));
37856
37868
  };
37869
+ if ((_b = result.contents) === null || _b === void 0 ? void 0 : _b.length) {
37870
+ return React__default.createElement(
37871
+ 'div',
37872
+ { className: 'search__result-card__wrapper' },
37873
+ React__default.createElement('div', {
37874
+ dangerouslySetInnerHTML: {
37875
+ __html: result.contents
37876
+ }
37877
+ }),
37878
+ React__default.createElement(
37879
+ 'div',
37880
+ { className: 'search__result-card__footer' },
37881
+ React__default.createElement(
37882
+ 'button',
37883
+ {
37884
+ type: 'button',
37885
+ className: 'cta '.concat(selectedPackagingAccoResultCode === result.code ? 'cta--selected' : 'cta--select'),
37886
+ onClick: function () {
37887
+ return handleChange(result.code);
37888
+ }
37889
+ },
37890
+ selectedPackagingAccoResultCode === result.code
37891
+ ? translations === null || translations === void 0
37892
+ ? void 0
37893
+ : translations.SHARED.SELECTED
37894
+ : translations === null || translations === void 0
37895
+ ? void 0
37896
+ : translations.SHARED.SELECT
37897
+ )
37898
+ )
37899
+ );
37900
+ }
37857
37901
  return React__default.createElement(
37858
37902
  'div',
37859
37903
  {
@@ -37937,12 +37981,12 @@ var HotelCard = function (_a) {
37937
37981
  'button',
37938
37982
  {
37939
37983
  type: 'button',
37940
- className: 'cta '.concat(selectedSearchResultId === result.id ? 'cta--selected' : 'cta--select'),
37984
+ className: 'cta '.concat(selectedPackagingAccoResultCode === result.code ? 'cta--selected' : 'cta--select'),
37941
37985
  onClick: function () {
37942
- return handleChange(result.id);
37986
+ return handleChange(result.code);
37943
37987
  }
37944
37988
  },
37945
- selectedSearchResultId === result.id
37989
+ selectedPackagingAccoResultCode === result.code
37946
37990
  ? translations === null || translations === void 0
37947
37991
  ? void 0
37948
37992
  : translations.SHARED.SELECTED
@@ -37957,7 +38001,7 @@ var HotelCard = function (_a) {
37957
38001
 
37958
38002
  var renderResults = function (results, context, cmsMap, activeTab, translations) {
37959
38003
  var renderedResults = results.map(function (result, index) {
37960
- var cmsItem = cmsMap.get(result.productId);
38004
+ var cmsItem = cmsMap.get(result.code);
37961
38005
  var mappedResult = mapSearchResult(result, cmsItem, context.languageCode, translations);
37962
38006
  if (
37963
38007
  (context === null || context === void 0 ? void 0 : context.showCustomCards) &&
@@ -37978,10 +38022,10 @@ var renderResults = function (results, context, cmsMap, activeTab, translations)
37978
38022
  );
37979
38023
  };
37980
38024
  var mapSearchResult = function (searchResult, cmsItem, languageCode, translations) {
37981
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
38025
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
37982
38026
  return {
37983
38027
  type: 'hotel',
37984
- id: searchResult.productId,
38028
+ code: searchResult.code,
37985
38029
  title:
37986
38030
  ((_b = (_a = cmsItem === null || cmsItem === void 0 ? void 0 : cmsItem.content) === null || _a === void 0 ? void 0 : _a.general) === null || _b === void 0
37987
38031
  ? void 0
@@ -38005,14 +38049,31 @@ var mapSearchResult = function (searchResult, cmsItem, languageCode, translation
38005
38049
  price: formatPrice(searchResult.price, searchResult.currencyCode, languageCode),
38006
38050
  ctaText: translations === null || translations === void 0 ? void 0 : translations.SRP.VIEW_DETAILS,
38007
38051
  days: ''
38008
- .concat(calculateNights(searchResult.stayFromDate, searchResult.stayToDate), ' ')
38052
+ .concat(calculateNights(new Date(searchResult.fromDate), new Date(searchResult.toDate)), ' ')
38009
38053
  .concat(translations === null || translations === void 0 ? void 0 : translations.SRP.NIGHTS),
38010
- accommodation: searchResult.accommodationName,
38011
- regime: searchResult.regimeName,
38054
+ accommodation:
38055
+ ((_l =
38056
+ (_k = (_j = first(searchResult.rooms)) === null || _j === void 0 ? void 0 : _j.options) === null || _k === void 0
38057
+ ? void 0
38058
+ : _k.find(function (x) {
38059
+ return x.isSelected;
38060
+ })) === null || _l === void 0
38061
+ ? void 0
38062
+ : _l.accommodationName) || '',
38063
+ regime:
38064
+ ((_p =
38065
+ (_o = (_m = first(searchResult.rooms)) === null || _m === void 0 ? void 0 : _m.options) === null || _o === void 0
38066
+ ? void 0
38067
+ : _o.find(function (x) {
38068
+ return x.isSelected;
38069
+ })) === null || _p === void 0
38070
+ ? void 0
38071
+ : _p.regimeName) || '',
38012
38072
  stars:
38013
- ((_k = (_j = cmsItem === null || cmsItem === void 0 ? void 0 : cmsItem.content) === null || _j === void 0 ? void 0 : _j.general) === null || _k === void 0
38073
+ (_r = (_q = cmsItem === null || cmsItem === void 0 ? void 0 : cmsItem.content) === null || _q === void 0 ? void 0 : _q.general) === null || _r === void 0
38014
38074
  ? void 0
38015
- : _k.stars) || searchResult.hotelStars
38075
+ : _r.stars,
38076
+ contents: searchResult.contents
38016
38077
  };
38017
38078
  };
38018
38079
  var HotelAccommodationResults = function (_a) {
@@ -38022,9 +38083,6 @@ var HotelAccommodationResults = function (_a) {
38022
38083
  if (!context) {
38023
38084
  return;
38024
38085
  }
38025
- if (context.showMockup) {
38026
- return showMocukups(context);
38027
- }
38028
38086
  var translations = getTranslations((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
38029
38087
  if (isLoading) {
38030
38088
  return React__default.createElement(
@@ -38038,9 +38096,9 @@ var HotelAccommodationResults = function (_a) {
38038
38096
  var _d = useSelector(function (state) {
38039
38097
  return state.searchResults;
38040
38098
  }),
38041
- filteredResults = _d.filteredResults,
38099
+ filteredPackagingAccoResults = _d.filteredPackagingAccoResults,
38042
38100
  activeTab = _d.activeTab;
38043
- if (!filteredResults.length) {
38101
+ if (!filteredPackagingAccoResults.length) {
38044
38102
  return React__default.createElement('div', { className: 'no-results' }, translations.SRP.NO_RESULTS);
38045
38103
  }
38046
38104
  var cmsMap = React__default.useMemo(
@@ -38051,20 +38109,20 @@ var HotelAccommodationResults = function (_a) {
38051
38109
  ? void 0
38052
38110
  : _a.forEach(function (item) {
38053
38111
  var _a, _b, _c;
38054
- var id =
38112
+ var code =
38055
38113
  (_c =
38056
38114
  (_b = (_a = item === null || item === void 0 ? void 0 : item.content) === null || _a === void 0 ? void 0 : _a.general) === null || _b === void 0
38057
38115
  ? void 0
38058
38116
  : _b.product) === null || _c === void 0
38059
38117
  ? void 0
38060
- : _c.tideId;
38061
- if (id) map.set(id, item);
38118
+ : _c.code;
38119
+ if (code) map.set(code, item);
38062
38120
  });
38063
38121
  return map;
38064
38122
  },
38065
38123
  [context.cmsHotelData]
38066
38124
  );
38067
- var firstResult = filteredResults === null || filteredResults === void 0 ? void 0 : filteredResults[0];
38125
+ var firstResult = filteredPackagingAccoResults === null || filteredPackagingAccoResults === void 0 ? void 0 : filteredPackagingAccoResults[0];
38068
38126
  var firstResultDay = (firstResult === null || firstResult === void 0 ? void 0 : firstResult.fromDate) ? format$1(parseISO(firstResult.fromDate), 'd') : null;
38069
38127
  var firstResultMonth = (firstResult === null || firstResult === void 0 ? void 0 : firstResult.fromDate)
38070
38128
  ? format$1(parseISO(firstResult.fromDate), 'MMM')
@@ -38087,90 +38145,87 @@ var HotelAccommodationResults = function (_a) {
38087
38145
  React__default.createElement('h3', null, translations.SRP.SELECT, ' ', React__default.createElement('strong', null, translations.SRP.ACCOMMODATION))
38088
38146
  )
38089
38147
  ),
38090
- renderResults(filteredResults, context, cmsMap, activeTab, translations)
38148
+ renderResults(filteredPackagingAccoResults, context, cmsMap, activeTab, translations)
38091
38149
  );
38092
38150
  };
38093
- var showMocukups = function (context) {
38094
- var mockedHotelResults = [
38095
- {
38096
- type: 'hotel',
38097
- id: 2,
38098
- title: 'HTFSWILLCARL',
38099
- image: 'https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=1925&auto=format&fit=crop',
38100
- description: '2 persoons kamer',
38101
- location: 'Tenerif, Spanje',
38102
- price: '$2244',
38103
- ctaText: 'Bekijk details',
38104
- days: '7 nights',
38105
- flightInfo: null,
38106
- accommodation: 'Hotel XYZ',
38107
- regime: 'All-inclusive',
38108
- stars: 5
38109
- },
38110
- {
38111
- type: 'hotel',
38112
- id: 3,
38113
- title: 'HTFSSOFTROCK',
38114
- image: 'https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=1925&auto=format&fit=crop',
38115
- description: '3 persoons kamer',
38116
- location: 'Tenerif, Spanje',
38117
- price: '$2244',
38118
- ctaText: 'Bekijk details',
38119
- days: '7 nights',
38120
- flightInfo: null,
38121
- accommodation: 'Hotel ABC',
38122
- regime: 'Half-board',
38123
- stars: 4
38124
- },
38125
- {
38126
- type: 'hotel',
38127
- id: 4,
38128
- title: 'HTFSROYGAR',
38129
- image: 'https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=1925&auto=format&fit=crop',
38130
- description: '4 persoons kamer',
38131
- location: 'Tenerif, Spanje',
38132
- price: '$2496',
38133
- ctaText: 'Bekijk details',
38134
- days: '7 nights',
38135
- flightInfo: null,
38136
- accommodation: 'Hotel DEF',
38137
- regime: 'Full-board',
38138
- stars: 5
38139
- },
38140
- {
38141
- type: 'hotel',
38142
- id: 5,
38143
- title: 'HTFSCONBEL',
38144
- image: 'https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=1925&auto=format&fit=crop',
38145
- description: '5 persoons kamer',
38146
- location: 'Tenerif, Spanje',
38147
- price: '$6784.8',
38148
- ctaText: 'Bekijk details',
38149
- days: '7 nights',
38150
- flightInfo: null,
38151
- accommodation: 'Hotel GHI',
38152
- regime: 'All-inclusive',
38153
- stars: 5
38154
- }
38155
- ];
38156
- return React__default.createElement(React__default.Fragment, null, renderMockupResults(mockedHotelResults, context));
38157
- };
38158
- var renderMockupResults = function (results, context) {
38159
- var renderedResults = results.map(function (result, index) {
38160
- if (
38161
- (context === null || context === void 0 ? void 0 : context.showCustomCards) &&
38162
- (context === null || context === void 0 ? void 0 : context.customCardRenderer)
38163
- ) {
38164
- return React__default.createElement(
38165
- 'div',
38166
- { key: ''.concat(result.id, '-').concat(index), className: 'search__result-card' },
38167
- context.customCardRenderer(result)
38168
- );
38169
- }
38170
- return React__default.createElement(HotelCard, { key: ''.concat(result.id, '-').concat(index), result: result });
38171
- });
38172
- return React__default.createElement('div', { className: 'search__results__cards' }, renderedResults);
38173
- };
38151
+ // const showMocukups = (context: any) => {
38152
+ // const mockedHotelResults = [
38153
+ // {
38154
+ // type: 'hotel',
38155
+ // id: 2,
38156
+ // title: 'HTFSWILLCARL',
38157
+ // image: 'https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=1925&auto=format&fit=crop',
38158
+ // description: '2 persoons kamer',
38159
+ // location: 'Tenerif, Spanje',
38160
+ // price: '$2244',
38161
+ // ctaText: 'Bekijk details',
38162
+ // days: '7 nights',
38163
+ // flightInfo: null,
38164
+ // accommodation: 'Hotel XYZ',
38165
+ // regime: 'All-inclusive',
38166
+ // stars: 5
38167
+ // } as HotelResult,
38168
+ // {
38169
+ // type: 'hotel',
38170
+ // id: 3,
38171
+ // title: 'HTFSSOFTROCK',
38172
+ // image: 'https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=1925&auto=format&fit=crop',
38173
+ // description: '3 persoons kamer',
38174
+ // location: 'Tenerif, Spanje',
38175
+ // price: '$2244',
38176
+ // ctaText: 'Bekijk details',
38177
+ // days: '7 nights',
38178
+ // flightInfo: null,
38179
+ // accommodation: 'Hotel ABC',
38180
+ // regime: 'Half-board',
38181
+ // stars: 4
38182
+ // } as HotelResult,
38183
+ // {
38184
+ // type: 'hotel',
38185
+ // id: 4,
38186
+ // title: 'HTFSROYGAR',
38187
+ // image: 'https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=1925&auto=format&fit=crop',
38188
+ // description: '4 persoons kamer',
38189
+ // location: 'Tenerif, Spanje',
38190
+ // price: '$2496',
38191
+ // ctaText: 'Bekijk details',
38192
+ // days: '7 nights',
38193
+ // flightInfo: null,
38194
+ // accommodation: 'Hotel DEF',
38195
+ // regime: 'Full-board',
38196
+ // stars: 5
38197
+ // } as HotelResult,
38198
+ // {
38199
+ // type: 'hotel',
38200
+ // id: 5,
38201
+ // title: 'HTFSCONBEL',
38202
+ // image: 'https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=1925&auto=format&fit=crop',
38203
+ // description: '5 persoons kamer',
38204
+ // location: 'Tenerif, Spanje',
38205
+ // price: '$6784.8',
38206
+ // ctaText: 'Bekijk details',
38207
+ // days: '7 nights',
38208
+ // flightInfo: null,
38209
+ // accommodation: 'Hotel GHI',
38210
+ // regime: 'All-inclusive',
38211
+ // stars: 5
38212
+ // } as HotelResult
38213
+ // ] as HotelResult[];
38214
+ // return <>{renderMockupResults(mockedHotelResults, context)}</>;
38215
+ // };
38216
+ // const renderMockupResults = (results: any[], context: any) => {
38217
+ // const renderedResults = results.map((result, index) => {
38218
+ // if (context?.showCustomCards && context?.customCardRenderer) {
38219
+ // return (
38220
+ // <div key={`${result.id}-${index}`} className="search__result-card">
38221
+ // {context.customCardRenderer(result)}
38222
+ // </div>
38223
+ // );
38224
+ // }
38225
+ // return <HotelCard key={`${result.id}-${index}`} result={result} />;
38226
+ // });
38227
+ // return <div className="search__results__cards">{renderedResults}</div>;
38228
+ // };
38174
38229
 
38175
38230
  var RoundTripResults = function () {
38176
38231
  return React__default.createElement(
@@ -38418,91 +38473,6 @@ var RoundTripResults = function () {
38418
38473
  );
38419
38474
  };
38420
38475
 
38421
- var enrichFiltersWithResults = function (results, filters, tags) {
38422
- if (!results || results.length === 0 || !filters) {
38423
- return filters !== null && filters !== void 0 ? filters : [];
38424
- }
38425
- return filters.map(function (filter) {
38426
- var updatedFilter = __assign({}, filter);
38427
- if (filter.property === 'price' && (filter.min == null || filter.max == null)) {
38428
- var prices = results
38429
- .map(function (r) {
38430
- var _a;
38431
- return (_a = r.price) !== null && _a !== void 0 ? _a : 0;
38432
- })
38433
- .filter(function (p) {
38434
- return p > 0;
38435
- });
38436
- if (prices.length > 0) {
38437
- updatedFilter.min = Math.floor(Math.min.apply(Math, prices));
38438
- updatedFilter.max = Math.ceil(Math.max.apply(Math, prices));
38439
- }
38440
- }
38441
- if (filter.property === 'accommodation') {
38442
- var map_1 = new Map();
38443
- results.forEach(function (r) {
38444
- if (r.accommodationCode) {
38445
- map_1.set(r.accommodationCode, {
38446
- name: r.accommodationName,
38447
- code: r.accommodationCode
38448
- });
38449
- }
38450
- });
38451
- updatedFilter.options = Array.from(map_1.values()).map(function (accommodation) {
38452
- var _a;
38453
- return {
38454
- label: (_a = accommodation.name) !== null && _a !== void 0 ? _a : accommodation.code,
38455
- value: accommodation.code,
38456
- isChecked: false
38457
- };
38458
- });
38459
- }
38460
- if (filter.property === 'regime') {
38461
- var map_2 = new Map();
38462
- results.forEach(function (r) {
38463
- if (r.regimeCode) {
38464
- map_2.set(r.regimeCode, {
38465
- name: r.regimeName,
38466
- code: r.regimeCode
38467
- });
38468
- }
38469
- });
38470
- updatedFilter.options = Array.from(map_2.values()).map(function (regime) {
38471
- var _a;
38472
- return {
38473
- label: (_a = regime.name) !== null && _a !== void 0 ? _a : regime.code,
38474
- value: regime.code,
38475
- isChecked: false
38476
- };
38477
- });
38478
- }
38479
- if (filter.property === 'theme') {
38480
- var map_3 = new Map();
38481
- results.forEach(function (r) {
38482
- var _a;
38483
- (_a = r.tagIds) === null || _a === void 0
38484
- ? void 0
38485
- : _a.forEach(function (tagId) {
38486
- var tag = tags.find(function (t) {
38487
- return t.id === tagId;
38488
- });
38489
- if (tag && tag.id != null && tag.name != null) {
38490
- map_3.set(tag.id, { name: tag.name, id: tag.id });
38491
- }
38492
- });
38493
- });
38494
- updatedFilter.options = Array.from(map_3.values()).map(function (theme) {
38495
- return {
38496
- label: theme.name,
38497
- value: theme.id,
38498
- isChecked: false
38499
- };
38500
- });
38501
- }
38502
- return updatedFilter;
38503
- });
38504
- };
38505
-
38506
38476
  var ticksToMinutes = function (ticks) {
38507
38477
  return Math.floor(ticks / 600000000);
38508
38478
  };
@@ -40664,7 +40634,7 @@ var FlightResultsContainer = function (_a) {
40664
40634
  useEffect(
40665
40635
  function () {
40666
40636
  if (!(context === null || context === void 0 ? void 0 : context.showMockup)) {
40667
- if ((context === null || context === void 0 ? void 0 : context.type) === PortalQsmType.Flight && isHubReady) {
40637
+ if ((context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === PortalQsmType.Flight && isHubReady) {
40668
40638
  onFlightSearch();
40669
40639
  }
40670
40640
  }
@@ -40804,7 +40774,7 @@ var FlightResultsContainer = function (_a) {
40804
40774
  'div',
40805
40775
  { className: 'search__results__wrapper' },
40806
40776
  flightsLoading && React__default.createElement(Spinner, null),
40807
- (context === null || context === void 0 ? void 0 : context.type) == PortalQsmType.Flight &&
40777
+ (context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) == PortalQsmType.Flight &&
40808
40778
  (context === null || context === void 0 ? void 0 : context.showFlightAccommodationResults) &&
40809
40779
  results &&
40810
40780
  results.length > 0 &&
@@ -41217,6 +41187,165 @@ var GroupTourResults = function (_a) {
41217
41187
  );
41218
41188
  };
41219
41189
 
41190
+ var enrichFiltersWithResults = function (results, filters, tags) {
41191
+ if (!results || results.length === 0 || !filters) {
41192
+ return filters !== null && filters !== void 0 ? filters : [];
41193
+ }
41194
+ return filters.map(function (filter) {
41195
+ var updatedFilter = __assign({}, filter);
41196
+ if (filter.property === 'price' && (filter.min == null || filter.max == null)) {
41197
+ var prices = results
41198
+ .map(function (r) {
41199
+ var _a;
41200
+ return (_a = r.price) !== null && _a !== void 0 ? _a : 0;
41201
+ })
41202
+ .filter(function (p) {
41203
+ return p > 0;
41204
+ });
41205
+ if (prices.length > 0) {
41206
+ updatedFilter.min = Math.floor(Math.min.apply(Math, prices));
41207
+ updatedFilter.max = Math.ceil(Math.max.apply(Math, prices));
41208
+ }
41209
+ }
41210
+ if (filter.property === 'accommodation') {
41211
+ var map_1 = new Map();
41212
+ results.forEach(function (r) {
41213
+ if (r.accommodationCode) {
41214
+ map_1.set(r.accommodationCode, {
41215
+ name: r.accommodationName,
41216
+ code: r.accommodationCode
41217
+ });
41218
+ }
41219
+ });
41220
+ updatedFilter.options = Array.from(map_1.values()).map(function (accommodation) {
41221
+ var _a;
41222
+ return {
41223
+ label: (_a = accommodation.name) !== null && _a !== void 0 ? _a : accommodation.code,
41224
+ value: accommodation.code,
41225
+ isChecked: false
41226
+ };
41227
+ });
41228
+ }
41229
+ if (filter.property === 'regime') {
41230
+ var map_2 = new Map();
41231
+ results.forEach(function (r) {
41232
+ if (r.regimeCode) {
41233
+ map_2.set(r.regimeCode, {
41234
+ name: r.regimeName,
41235
+ code: r.regimeCode
41236
+ });
41237
+ }
41238
+ });
41239
+ updatedFilter.options = Array.from(map_2.values()).map(function (regime) {
41240
+ var _a;
41241
+ return {
41242
+ label: (_a = regime.name) !== null && _a !== void 0 ? _a : regime.code,
41243
+ value: regime.code,
41244
+ isChecked: false
41245
+ };
41246
+ });
41247
+ }
41248
+ if (filter.property === 'theme') {
41249
+ var map_3 = new Map();
41250
+ results.forEach(function (r) {
41251
+ var _a;
41252
+ (_a = r.tagIds) === null || _a === void 0
41253
+ ? void 0
41254
+ : _a.forEach(function (tagId) {
41255
+ var tag = tags.find(function (t) {
41256
+ return t.id === tagId;
41257
+ });
41258
+ if (tag && tag.id != null && tag.name != null) {
41259
+ map_3.set(tag.id, { name: tag.name, id: tag.id });
41260
+ }
41261
+ });
41262
+ });
41263
+ updatedFilter.options = Array.from(map_3.values()).map(function (theme) {
41264
+ return {
41265
+ label: theme.name,
41266
+ value: theme.id,
41267
+ isChecked: false
41268
+ };
41269
+ });
41270
+ }
41271
+ return updatedFilter;
41272
+ });
41273
+ };
41274
+ var enrichFiltersWithPackageAccoResults = function (results, filters, tags) {
41275
+ if (!results || results.length === 0 || !filters) {
41276
+ return filters !== null && filters !== void 0 ? filters : [];
41277
+ }
41278
+ return filters.map(function (filter) {
41279
+ var updatedFilter = __assign({}, filter);
41280
+ if (filter.property === 'price' && (filter.min == null || filter.max == null)) {
41281
+ var prices = results
41282
+ .map(function (r) {
41283
+ var _a;
41284
+ return (_a = r.price) !== null && _a !== void 0 ? _a : 0;
41285
+ })
41286
+ .filter(function (p) {
41287
+ return p > 0;
41288
+ });
41289
+ if (prices.length > 0) {
41290
+ updatedFilter.min = Math.floor(Math.min.apply(Math, prices));
41291
+ updatedFilter.max = Math.ceil(Math.max.apply(Math, prices));
41292
+ }
41293
+ }
41294
+ if (filter.property === 'accommodation') {
41295
+ var map_4 = new Map();
41296
+ results.forEach(function (r) {
41297
+ var rooms = flatMap(r.rooms);
41298
+ if (rooms) {
41299
+ rooms.map(function (room) {
41300
+ room.options.map(function (option) {
41301
+ if (option.accommodationCode) {
41302
+ map_4.set(option.accommodationCode, {
41303
+ name: option.accommodationName,
41304
+ code: option.accommodationCode
41305
+ });
41306
+ }
41307
+ });
41308
+ });
41309
+ }
41310
+ });
41311
+ updatedFilter.options = Array.from(map_4.values()).map(function (accommodation) {
41312
+ var _a;
41313
+ return {
41314
+ label: (_a = accommodation.name) !== null && _a !== void 0 ? _a : accommodation.code,
41315
+ value: accommodation.code,
41316
+ isChecked: false
41317
+ };
41318
+ });
41319
+ }
41320
+ if (filter.property === 'regime') {
41321
+ var map_5 = new Map();
41322
+ results.forEach(function (r) {
41323
+ var rooms = flatMap(r.rooms);
41324
+ if (rooms) {
41325
+ rooms.map(function (room) {
41326
+ room.options.map(function (option) {
41327
+ if (option.regimeCode) {
41328
+ map_5.set(option.regimeCode, {
41329
+ name: option.regimeName,
41330
+ code: option.regimeCode
41331
+ });
41332
+ }
41333
+ });
41334
+ });
41335
+ }
41336
+ });
41337
+ updatedFilter.options = Array.from(map_5.values()).map(function (regime) {
41338
+ var _a;
41339
+ return {
41340
+ label: (_a = regime.name) !== null && _a !== void 0 ? _a : regime.code,
41341
+ value: regime.code,
41342
+ isChecked: false
41343
+ };
41344
+ });
41345
+ }
41346
+ return updatedFilter;
41347
+ });
41348
+ };
41220
41349
  var applyFilters = function (results, filters) {
41221
41350
  return results.filter(function (r) {
41222
41351
  return filters.every(function (filter) {
@@ -41282,6 +41411,61 @@ var applyFilters = function (results, filters) {
41282
41411
  });
41283
41412
  });
41284
41413
  };
41414
+ var applyFiltersToPackageAccoResults = function (results, filters) {
41415
+ return results.filter(function (r) {
41416
+ return filters.every(function (filter) {
41417
+ var _a, _b;
41418
+ if (!filter.isFrontendFilter) return true;
41419
+ // ACCOMMODATION
41420
+ if (filter.property === 'accommodation') {
41421
+ var selected_2 =
41422
+ (_a = filter.options) === null || _a === void 0
41423
+ ? void 0
41424
+ : _a
41425
+ .filter(function (o) {
41426
+ return o.isChecked;
41427
+ })
41428
+ .map(function (o) {
41429
+ return o.value;
41430
+ });
41431
+ if (!selected_2 || selected_2.length === 0) return true;
41432
+ var roomOptions = r.rooms.flatMap(function (room) {
41433
+ return room.options;
41434
+ });
41435
+ return roomOptions.some(function (option) {
41436
+ return selected_2.includes(option.accommodationCode);
41437
+ });
41438
+ }
41439
+ // REGIME
41440
+ if (filter.property === 'regime') {
41441
+ var selected_3 =
41442
+ (_b = filter.options) === null || _b === void 0
41443
+ ? void 0
41444
+ : _b
41445
+ .filter(function (o) {
41446
+ return o.isChecked;
41447
+ })
41448
+ .map(function (o) {
41449
+ return o.value;
41450
+ });
41451
+ if (!selected_3 || selected_3.length === 0) return true;
41452
+ var roomOptions = r.rooms.flatMap(function (room) {
41453
+ return room.options;
41454
+ });
41455
+ return roomOptions.some(function (option) {
41456
+ return selected_3.includes(option.regimeCode);
41457
+ });
41458
+ }
41459
+ // PRICE
41460
+ if (filter.property === 'price') {
41461
+ if (filter.selectedMin != null && r.price < filter.selectedMin) return false;
41462
+ if (filter.selectedMax != null && r.price > filter.selectedMax) return false;
41463
+ return true;
41464
+ }
41465
+ return true;
41466
+ });
41467
+ });
41468
+ };
41285
41469
 
41286
41470
  var SearchResultsContainer = function () {
41287
41471
  var _a;
@@ -41379,11 +41563,11 @@ var SearchResultsContainer = function () {
41379
41563
  payload: {
41380
41564
  catalogueIds: (_a = context.tideConnection.catalogueIds) !== null && _a !== void 0 ? _a : [],
41381
41565
  serviceType:
41382
- context.type === PortalQsmType.Accommodation || context.type === PortalQsmType.AccommodationAndFlight
41566
+ context.searchConfiguration.qsmType === PortalQsmType.Accommodation || context.searchConfiguration.qsmType === PortalQsmType.AccommodationAndFlight
41383
41567
  ? 3
41384
- : context.type === PortalQsmType.Flight
41568
+ : context.searchConfiguration.qsmType === PortalQsmType.Flight
41385
41569
  ? 7
41386
- : context.type === PortalQsmType.RoundTrip
41570
+ : context.searchConfiguration.qsmType === PortalQsmType.RoundTrip
41387
41571
  ? 1
41388
41572
  : 0,
41389
41573
  searchType: 0,
@@ -41453,14 +41637,14 @@ var SearchResultsContainer = function () {
41453
41637
  payload: {
41454
41638
  catalogueIds: (_a = context.tideConnection.catalogueIds) !== null && _a !== void 0 ? _a : [],
41455
41639
  serviceType:
41456
- context.type === PortalQsmType.Accommodation || context.type === PortalQsmType.AccommodationAndFlight
41640
+ context.searchConfiguration.qsmType === PortalQsmType.Accommodation || context.searchConfiguration.qsmType === PortalQsmType.AccommodationAndFlight
41457
41641
  ? 3
41458
- : context.type === PortalQsmType.Flight
41642
+ : context.searchConfiguration.qsmType === PortalQsmType.Flight
41459
41643
  ? 7
41460
- : context.type === PortalQsmType.RoundTrip
41644
+ : context.searchConfiguration.qsmType === PortalQsmType.RoundTrip
41461
41645
  ? 1
41462
41646
  : undefined,
41463
- searchType: context.type === PortalQsmType.GroupTour ? 1 : 0,
41647
+ searchType: context.searchConfiguration.qsmType === PortalQsmType.GroupTour ? 1 : 0,
41464
41648
  destination: {
41465
41649
  id: Number(destinationId),
41466
41650
  isCountry: destinationIsCountry,
@@ -41473,7 +41657,7 @@ var SearchResultsContainer = function () {
41473
41657
  toDate: to,
41474
41658
  earliestFromOffset: 0,
41475
41659
  latestToOffset: 0,
41476
- includeFlights: context.type === PortalQsmType.AccommodationAndFlight ? true : false,
41660
+ includeFlights: context.searchConfiguration.qsmType === PortalQsmType.AccommodationAndFlight ? true : false,
41477
41661
  // regimeCodes:
41478
41662
  // filters
41479
41663
  // .find((f) => f.property === 'regime')
@@ -41481,7 +41665,7 @@ var SearchResultsContainer = function () {
41481
41665
  // .flatMap((o) => o.value.toString()) || [],
41482
41666
  // minPrice: filters.find((f) => f.property === 'price')?.selectedMin,
41483
41667
  // maxPrice: filters.find((f) => f.property === 'price')?.selectedMax,
41484
- useExactDates: (context === null || context === void 0 ? void 0 : context.type) === PortalQsmType.GroupTour ? false : true,
41668
+ useExactDates: (context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === PortalQsmType.GroupTour ? false : true,
41485
41669
  onlyCachedResults: false,
41486
41670
  includeAllAllotments: true,
41487
41671
  productIds: hotel ? [hotel] : [],
@@ -41547,6 +41731,96 @@ var SearchResultsContainer = function () {
41547
41731
  });
41548
41732
  return requestRooms;
41549
41733
  };
41734
+ var buildPackagingAccommodationRequestFromQueryParams = function (params) {
41735
+ var _a, _b;
41736
+ var from = getDateFromParams(params, 'fromDate');
41737
+ var to = getDateFromParams(params, 'toDate');
41738
+ var rooms = getRoomsFromParams(params, 'rooms');
41739
+ var country = getNumberFromParams(params, 'country');
41740
+ var region = getNumberFromParams(params, 'region');
41741
+ var oord = getNumberFromParams(params, 'oord');
41742
+ var city = getNumberFromParams(params, 'location');
41743
+ var hotel = getNumberFromParams(params, 'hotel');
41744
+ var tagId = getNumberFromParams(params, 'tagId');
41745
+ var agentId = getNumberFromParams(params, 'agentId');
41746
+ if (!from || !to) {
41747
+ console.error('Missing fromDate or toDate in query params, using default values');
41748
+ return null;
41749
+ }
41750
+ if (typeof window !== 'undefined') {
41751
+ window.scrollTo(0, 0);
41752
+ }
41753
+ var destinationId = null;
41754
+ var destinationIsCountry = false;
41755
+ var destinationIsRegion = false;
41756
+ var destinationIsOord = false;
41757
+ var destinationIsLocation = false;
41758
+ if (country) {
41759
+ destinationId = country;
41760
+ destinationIsCountry = true;
41761
+ } else if (region) {
41762
+ destinationId = region;
41763
+ destinationIsRegion = true;
41764
+ } else if (oord) {
41765
+ destinationId = oord;
41766
+ destinationIsOord = true;
41767
+ } else if (city) {
41768
+ destinationId = city;
41769
+ destinationIsLocation = true;
41770
+ }
41771
+ var searchRequest = {
41772
+ officeId: 1,
41773
+ agentId: agentId !== null && agentId !== void 0 ? agentId : null,
41774
+ catalogueId: (_a = context.searchConfiguration.defaultCatalogueId) !== null && _a !== void 0 ? _a : 0,
41775
+ searchConfigurationId: context.searchConfiguration.id,
41776
+ language: (_b = context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB',
41777
+ servicesType: 3, // accommodation
41778
+ fromDate: from,
41779
+ toDate: to,
41780
+ destination: {
41781
+ id: Number(destinationId),
41782
+ isCountry: destinationIsCountry,
41783
+ isRegion: destinationIsRegion,
41784
+ isOord: destinationIsOord,
41785
+ isLocation: destinationIsLocation
41786
+ },
41787
+ productCode: hotel ? hotel.toString() : '',
41788
+ rooms: getPackagingRequestRooms(rooms),
41789
+ tagIds: tagId ? [tagId] : []
41790
+ };
41791
+ console.log('Search request for packaging accommodation from query params', searchRequest);
41792
+ return searchRequest;
41793
+ };
41794
+ var getPackagingRequestRooms = function (rooms) {
41795
+ if (!rooms) {
41796
+ // Fall back to 2 adults
41797
+ var room = { index: 0, travellers: [] };
41798
+ range(0, 2).forEach(function () {
41799
+ room.travellers.push({
41800
+ age: 30
41801
+ });
41802
+ });
41803
+ return [room];
41804
+ }
41805
+ var requestRooms =
41806
+ rooms === null || rooms === void 0
41807
+ ? void 0
41808
+ : rooms.map(function (x, i) {
41809
+ var room = { index: i, travellers: [] };
41810
+ range(0, x.adults).forEach(function () {
41811
+ room.travellers.push({
41812
+ age: 30
41813
+ });
41814
+ });
41815
+ x.childAges.forEach(function (x) {
41816
+ room.travellers.push({
41817
+ age: x
41818
+ });
41819
+ });
41820
+ return room;
41821
+ });
41822
+ return requestRooms;
41823
+ };
41550
41824
  useEffect(
41551
41825
  function () {
41552
41826
  if (typeof document !== 'undefined') {
@@ -41618,7 +41892,7 @@ var SearchResultsContainer = function () {
41618
41892
  dispatch(setSelectedSearchResult(matching.productId));
41619
41893
  }
41620
41894
  } else {
41621
- if (context.type === PortalQsmType.AccommodationAndFlight) {
41895
+ if (context.searchConfiguration.qsmType === PortalQsmType.AccommodationAndFlight) {
41622
41896
  dispatch(setSelectedSearchResult((_b = packageSearchResults[0]) === null || _b === void 0 ? void 0 : _b.productId));
41623
41897
  }
41624
41898
  }
@@ -41636,14 +41910,71 @@ var SearchResultsContainer = function () {
41636
41910
  });
41637
41911
  });
41638
41912
  };
41913
+ var runHotelSearch = function () {
41914
+ return __awaiter(void 0, void 0, void 0, function () {
41915
+ var config, params, searchRequest, rq, packageAccoSearchResults, enrichedFilters, initialFilteredResults, err_2;
41916
+ var _a;
41917
+ return __generator(this, function (_b) {
41918
+ switch (_b.label) {
41919
+ case 0:
41920
+ dispatch(setIsLoading(true));
41921
+ _b.label = 1;
41922
+ case 1:
41923
+ _b.trys.push([1, 3, , 4]);
41924
+ if (!context) {
41925
+ return [2 /*return*/];
41926
+ }
41927
+ config = {
41928
+ host: context.tideConnection.host,
41929
+ apiKey: context.tideConnection.apiKey
41930
+ };
41931
+ params = new URLSearchParams(location.search);
41932
+ searchRequest = void 0;
41933
+ rq = buildPackagingAccommodationRequestFromQueryParams(params);
41934
+ if (!rq) {
41935
+ throw new Error('Invalid search parameters');
41936
+ }
41937
+ searchRequest = rq;
41938
+ return [4 /*yield*/, build.searchPackagingAccommodations(config, searchRequest)];
41939
+ case 2:
41940
+ packageAccoSearchResults = _b.sent();
41941
+ console.log('package Acco SearchResults', packageAccoSearchResults);
41942
+ enrichedFilters = enrichFiltersWithPackageAccoResults(
41943
+ packageAccoSearchResults,
41944
+ context.filters,
41945
+ (_a = context.tags) !== null && _a !== void 0 ? _a : []
41946
+ );
41947
+ if (!initialFiltersSet) {
41948
+ dispatch(resetFilters(enrichedFilters));
41949
+ setInitialFilters(enrichedFilters);
41950
+ setInitialFiltersSet(true);
41951
+ }
41952
+ dispatch(setPackagingAccoResults(packageAccoSearchResults));
41953
+ initialFilteredResults = applyFiltersToPackageAccoResults(packageAccoSearchResults, filters);
41954
+ dispatch(setFilteredPackagingAccoResults(initialFilteredResults));
41955
+ dispatch(setIsLoading(false));
41956
+ return [3 /*break*/, 4];
41957
+ case 3:
41958
+ err_2 = _b.sent();
41959
+ console.error('Search failed', err_2);
41960
+ dispatch(setIsLoading(false));
41961
+ return [3 /*break*/, 4];
41962
+ case 4:
41963
+ return [2 /*return*/];
41964
+ }
41965
+ });
41966
+ });
41967
+ };
41639
41968
  if (!(context === null || context === void 0 ? void 0 : context.showMockup)) {
41640
41969
  if (
41641
- (context === null || context === void 0 ? void 0 : context.type) === PortalQsmType.AccommodationAndFlight ||
41642
- (context === null || context === void 0 ? void 0 : context.type) === PortalQsmType.Accommodation ||
41643
- (context === null || context === void 0 ? void 0 : context.type) === PortalQsmType.GroupTour
41970
+ (context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === PortalQsmType.AccommodationAndFlight ||
41971
+ (context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === PortalQsmType.GroupTour
41644
41972
  ) {
41645
41973
  runSearch();
41646
41974
  }
41975
+ if ((context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === PortalQsmType.Accommodation) {
41976
+ runHotelSearch();
41977
+ }
41647
41978
  }
41648
41979
  },
41649
41980
  [location.search]
@@ -41653,15 +41984,15 @@ var SearchResultsContainer = function () {
41653
41984
  function () {
41654
41985
  var fetchPackageDetails = function () {
41655
41986
  return __awaiter(void 0, void 0, void 0, function () {
41656
- var config, selectedItem, params, entryId, requestRooms, rooms, detailsRequest, detailsResponse, detailsWLResponse, err_2;
41987
+ var config, selectedItem, params, entryId, requestRooms, rooms, detailsRequest, detailsResponse, detailsWLResponse, err_3;
41657
41988
  var _a, _b;
41658
41989
  return __generator(this, function (_c) {
41659
41990
  switch (_c.label) {
41660
41991
  case 0:
41661
41992
  if (!selectedSearchResultId || !context) return [2 /*return*/];
41662
41993
  if (
41663
- (context === null || context === void 0 ? void 0 : context.type) === PortalQsmType.Accommodation ||
41664
- (context === null || context === void 0 ? void 0 : context.type) === PortalQsmType.GroupTour
41994
+ (context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === PortalQsmType.Accommodation ||
41995
+ (context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === PortalQsmType.GroupTour
41665
41996
  ) {
41666
41997
  handleFlyInToggle(true);
41667
41998
  }
@@ -41697,7 +42028,7 @@ var SearchResultsContainer = function () {
41697
42028
  productCode: selectedItem.code,
41698
42029
  fromDate: selectedItem.fromDate,
41699
42030
  toDate: selectedItem.toDate,
41700
- includeFlights: context.type === PortalQsmType.AccommodationAndFlight ? true : false,
42031
+ includeFlights: context.searchConfiguration.qsmType === PortalQsmType.AccommodationAndFlight ? true : false,
41701
42032
  includeHotels: true,
41702
42033
  includePaxTypes: true,
41703
42034
  checkExternalAvailability: true,
@@ -41740,8 +42071,8 @@ var SearchResultsContainer = function () {
41740
42071
  case 5:
41741
42072
  return [3 /*break*/, 7];
41742
42073
  case 6:
41743
- err_2 = _c.sent();
41744
- console.error('Failed to fetch package details', err_2);
42074
+ err_3 = _c.sent();
42075
+ console.error('Failed to fetch package details', err_3);
41745
42076
  return [3 /*break*/, 7];
41746
42077
  case 7:
41747
42078
  return [2 /*return*/];
@@ -41770,14 +42101,14 @@ var SearchResultsContainer = function () {
41770
42101
  React__default.createElement(
41771
42102
  'div',
41772
42103
  { className: 'search__container' },
41773
- context.type === PortalQsmType.Flight &&
42104
+ context.searchConfiguration.qsmType === PortalQsmType.Flight &&
41774
42105
  React__default.createElement(
41775
42106
  FlightSearchProvider,
41776
42107
  { tideConnection: context.tideConnection },
41777
42108
  React__default.createElement(FlightResultsContainer, { isMobile: isMobile }),
41778
42109
  React__default.createElement(FlyIn, {
41779
42110
  title: 'Select your fare',
41780
- srpType: context.type,
42111
+ srpType: context.searchConfiguration.qsmType,
41781
42112
  isOpen: flyInIsOpen,
41782
42113
  setIsOpen: handleFlyInToggle,
41783
42114
  onPanelRef: function (el) {
@@ -41785,14 +42116,14 @@ var SearchResultsContainer = function () {
41785
42116
  }
41786
42117
  })
41787
42118
  ),
41788
- (context.type === PortalQsmType.AccommodationAndFlight ||
41789
- context.type === PortalQsmType.Accommodation ||
41790
- context.type === PortalQsmType.GroupTour ||
41791
- context.type === PortalQsmType.RoundTrip) &&
42119
+ (context.searchConfiguration.qsmType === PortalQsmType.AccommodationAndFlight ||
42120
+ context.searchConfiguration.qsmType === PortalQsmType.Accommodation ||
42121
+ context.searchConfiguration.qsmType === PortalQsmType.GroupTour ||
42122
+ context.searchConfiguration.qsmType === PortalQsmType.RoundTrip) &&
41792
42123
  React__default.createElement(
41793
42124
  React__default.Fragment,
41794
42125
  null,
41795
- context.type != PortalQsmType.AccommodationAndFlight &&
42126
+ context.searchConfiguration.qsmType != PortalQsmType.AccommodationAndFlight &&
41796
42127
  context.showFilters &&
41797
42128
  React__default.createElement(Filters, {
41798
42129
  initialFilters: initialFilters,
@@ -41804,7 +42135,7 @@ var SearchResultsContainer = function () {
41804
42135
  // handleApplyFilters={() => setSearchTrigger((prev) => prev + 1)}
41805
42136
  isLoading: isLoading
41806
42137
  }),
41807
- context.type === PortalQsmType.AccommodationAndFlight &&
42138
+ context.searchConfiguration.qsmType === PortalQsmType.AccommodationAndFlight &&
41808
42139
  React__default.createElement(Itinerary, {
41809
42140
  isOpen: itineraryOpen,
41810
42141
  handleSetIsOpen: function () {
@@ -41822,7 +42153,7 @@ var SearchResultsContainer = function () {
41822
42153
  React__default.createElement(
41823
42154
  'div',
41824
42155
  { className: 'search__results__actions' },
41825
- context.type != PortalQsmType.AccommodationAndFlight &&
42156
+ context.searchConfiguration.qsmType != PortalQsmType.AccommodationAndFlight &&
41826
42157
  context.showFilters &&
41827
42158
  React__default.createElement(
41828
42159
  'div',
@@ -41835,7 +42166,7 @@ var SearchResultsContainer = function () {
41835
42166
  React__default.createElement(Icon$1, { name: 'ui-filter', className: 'mobile-filters-button__icon', height: 16 }),
41836
42167
  translations.SRP.FILTERS
41837
42168
  ),
41838
- context.type === PortalQsmType.AccommodationAndFlight &&
42169
+ context.searchConfiguration.qsmType === PortalQsmType.AccommodationAndFlight &&
41839
42170
  React__default.createElement(
41840
42171
  'div',
41841
42172
  {
@@ -41895,8 +42226,8 @@ var SearchResultsContainer = function () {
41895
42226
  { className: 'search__results__wrapper' },
41896
42227
  context.showTabViews && React__default.createElement(TabViews, null),
41897
42228
  context.showRoundTripResults && context.showMockup && React__default.createElement(RoundTripResults, null),
41898
- context.type === PortalQsmType.GroupTour && React__default.createElement(GroupTourResults, { isLoading: isLoading }),
41899
- context.type === PortalQsmType.AccommodationAndFlight &&
42229
+ context.searchConfiguration.qsmType === PortalQsmType.GroupTour && React__default.createElement(GroupTourResults, { isLoading: isLoading }),
42230
+ context.searchConfiguration.qsmType === PortalQsmType.AccommodationAndFlight &&
41900
42231
  context.showFlightResults &&
41901
42232
  (bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.outwardFlights) &&
41902
42233
  React__default.createElement(FlightResults, {
@@ -41904,7 +42235,7 @@ var SearchResultsContainer = function () {
41904
42235
  isDeparture: true
41905
42236
  }),
41906
42237
  context.showHotelAccommodationResults && React__default.createElement(HotelAccommodationResults, { isLoading: isLoading }),
41907
- context.type === PortalQsmType.AccommodationAndFlight &&
42238
+ context.searchConfiguration.qsmType === PortalQsmType.AccommodationAndFlight &&
41908
42239
  context.showFlightResults &&
41909
42240
  (bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.returnFlights) &&
41910
42241
  React__default.createElement(FlightResults, {
@@ -41915,7 +42246,7 @@ var SearchResultsContainer = function () {
41915
42246
  ),
41916
42247
  React__default.createElement(FlyIn, {
41917
42248
  title: ''.concat(translations.SRP.SELECT, ' ').concat(translations.SRP.ACCOMMODATION),
41918
- srpType: context.type,
42249
+ srpType: context.searchConfiguration.qsmType,
41919
42250
  isOpen: flyInIsOpen,
41920
42251
  setIsOpen: handleFlyInToggle,
41921
42252
  onPanelRef: function (el) {