@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
@@ -12717,44 +12717,44 @@ PERFORMANCE OF THIS SOFTWARE.
12717
12717
  });
12718
12718
  };
12719
12719
 
12720
- var ENDPOINT$7 = '/api/web/booking/v2';
12721
- var ENDPOINT_AVAILABLE_FLIGHTS = ENDPOINT$7 + '/available-flights';
12722
- var ENDPOINT_TRANSPORT_DATES = ENDPOINT$7 + '/transport-dates';
12723
- var ENDPOINT_PRICES = ENDPOINT$7 + '/prices';
12724
- var ENDPOINT_AVAILABLE_COUNTRIES = ENDPOINT$7 + '/available-countries';
12725
- var ENDPOINT_SEARCH = ENDPOINT$7 + '/search';
12726
- var ENDPOINT_SEARCH_WITH_ERROR_MAPPING = ENDPOINT$7 + '/search-with-error-mapping';
12720
+ var ENDPOINT$8 = '/api/web/booking/v2';
12721
+ var ENDPOINT_AVAILABLE_FLIGHTS = ENDPOINT$8 + '/available-flights';
12722
+ var ENDPOINT_TRANSPORT_DATES = ENDPOINT$8 + '/transport-dates';
12723
+ var ENDPOINT_PRICES = ENDPOINT$8 + '/prices';
12724
+ var ENDPOINT_AVAILABLE_COUNTRIES = ENDPOINT$8 + '/available-countries';
12725
+ var ENDPOINT_SEARCH = ENDPOINT$8 + '/search';
12726
+ var ENDPOINT_SEARCH_WITH_ERROR_MAPPING = ENDPOINT$8 + '/search-with-error-mapping';
12727
12727
  // const ENDPOINT_ELASTIC = `${ENDPOINT}/elastic`; // TODO
12728
- var ENDPOINT_DETAILS = ENDPOINT$7 + '/details';
12729
- var ENDPOINT_DETAILS_WL = ENDPOINT$7 + '/details-wl';
12728
+ var ENDPOINT_DETAILS = ENDPOINT$8 + '/details';
12729
+ var ENDPOINT_DETAILS_WL = ENDPOINT$8 + '/details-wl';
12730
12730
  var ENDPOINT_ENTRYLIGHT = function (code) {
12731
- return ENDPOINT$7 + '/entry-light/' + code;
12731
+ return ENDPOINT$8 + '/entry-light/' + code;
12732
12732
  };
12733
- var ENDPOINT_VALIDATE_VOUCHER = ENDPOINT$7 + '/validate-voucher';
12733
+ var ENDPOINT_VALIDATE_VOUCHER = ENDPOINT$8 + '/validate-voucher';
12734
12734
  var ENDPOINT_ALTERNATE_HOTELS = function (transactionId, optionId) {
12735
- return ENDPOINT$7 + '/details/' + transactionId + '/alternate-hotels/' + optionId;
12735
+ return ENDPOINT$8 + '/details/' + transactionId + '/alternate-hotels/' + optionId;
12736
12736
  };
12737
12737
  var ENDPOINT_ALTERNATE_FLIGHTS = function (transactionId) {
12738
- return ENDPOINT$7 + '/details/' + transactionId + '/alternate-flights';
12738
+ return ENDPOINT$8 + '/details/' + transactionId + '/alternate-flights';
12739
12739
  };
12740
- var ENDPOINT_BOOKABLE_DATES = ENDPOINT$7 + '/bookable-dates';
12741
- var ENDPOINT_PRICE_DETAILS = ENDPOINT$7 + '/price-details';
12742
- var ENDPOINT_BOOK = ENDPOINT$7 + '/book';
12743
- var ENDPOINT_UPDATE = ENDPOINT$7 + '/update';
12744
- var ENDPOINT_AGENTS = ENDPOINT$7 + '/agents';
12740
+ var ENDPOINT_BOOKABLE_DATES = ENDPOINT$8 + '/bookable-dates';
12741
+ var ENDPOINT_PRICE_DETAILS = ENDPOINT$8 + '/price-details';
12742
+ var ENDPOINT_BOOK = ENDPOINT$8 + '/book';
12743
+ var ENDPOINT_UPDATE = ENDPOINT$8 + '/update';
12744
+ var ENDPOINT_AGENTS = ENDPOINT$8 + '/agents';
12745
12745
  var ENDPOINT_AVAILABLE_ALLOTMENTS = function (eventId, productCode) {
12746
- return ENDPOINT$7 + '/get-allotment-availability/' + eventId + '/' + productCode;
12746
+ return ENDPOINT$8 + '/get-allotment-availability/' + eventId + '/' + productCode;
12747
12747
  };
12748
- var ENDPOINT_FLIGHT_POOL = ENDPOINT$7 + '/flight-pool';
12749
- var ENDPOINT_TOUR_CODES = ENDPOINT$7 + '/tourcodes';
12748
+ var ENDPOINT_FLIGHT_POOL = ENDPOINT$8 + '/flight-pool';
12749
+ var ENDPOINT_TOUR_CODES = ENDPOINT$8 + '/tourcodes';
12750
12750
  var ENDPOINT_CUSTOM_ENTRY_STATUS$1 = function (dossierNumber, customEntryStatusId) {
12751
- return ENDPOINT$7 + '/custom-entry-status/' + dossierNumber + '/' + customEntryStatusId;
12751
+ return ENDPOINT$8 + '/custom-entry-status/' + dossierNumber + '/' + customEntryStatusId;
12752
12752
  };
12753
12753
  var ENDPOINT_ENTRY_STATUS = function (dossierNumber, entryStatus) {
12754
- return ENDPOINT$7 + '/entry-status/' + dossierNumber + '/' + entryStatus;
12754
+ return ENDPOINT$8 + '/entry-status/' + dossierNumber + '/' + entryStatus;
12755
12755
  };
12756
- var ENDPOINT_ELASTIC = ENDPOINT$7 + '/elastic';
12757
- var ENDPOINT_FLIGHT_LINES = ENDPOINT$7 + '/flightlines';
12756
+ var ENDPOINT_ELASTIC = ENDPOINT$8 + '/elastic';
12757
+ var ENDPOINT_FLIGHT_LINES = ENDPOINT$8 + '/flightlines';
12758
12758
  var availableFlights = function (config, request, signal) {
12759
12759
  var url = '' + config.host + ENDPOINT_AVAILABLE_FLIGHTS;
12760
12760
  var apiKey = config.apiKey;
@@ -12894,12 +12894,12 @@ PERFORMANCE OF THIS SOFTWARE.
12894
12894
  return post(url, apiKey, body, config.token, signal, true);
12895
12895
  };
12896
12896
 
12897
- var ENDPOINT$6 = '/api/member';
12898
- var ENDPOINT_LOGIN = ENDPOINT$6 + '/login';
12899
- var ENDPOINT_LOGOUT = ENDPOINT$6 + '/logout';
12900
- var ENDPOINT_CONFIRM = ENDPOINT$6 + '/confirm';
12901
- var ENDPOINT_FORGOT_PASSWORD = ENDPOINT$6 + '/forgot-password';
12902
- var ENDPOINT_RESET_PASSWORD = ENDPOINT$6 + '/reset-password';
12897
+ var ENDPOINT$7 = '/api/member';
12898
+ var ENDPOINT_LOGIN = ENDPOINT$7 + '/login';
12899
+ var ENDPOINT_LOGOUT = ENDPOINT$7 + '/logout';
12900
+ var ENDPOINT_CONFIRM = ENDPOINT$7 + '/confirm';
12901
+ var ENDPOINT_FORGOT_PASSWORD = ENDPOINT$7 + '/forgot-password';
12902
+ var ENDPOINT_RESET_PASSWORD = ENDPOINT$7 + '/reset-password';
12903
12903
  var login = function (config, request, signal) {
12904
12904
  var url = '' + config.host + ENDPOINT_LOGIN;
12905
12905
  var apiKey = config.apiKey;
@@ -12931,8 +12931,8 @@ PERFORMANCE OF THIS SOFTWARE.
12931
12931
  return post$1(url, apiKey, body, config.token, signal);
12932
12932
  };
12933
12933
 
12934
- var ENDPOINT$5 = '/api/mollie';
12935
- var ENDPOINT_CREATE_PAYMENTS = ENDPOINT$5 + '/create-payment';
12934
+ var ENDPOINT$6 = '/api/mollie';
12935
+ var ENDPOINT_CREATE_PAYMENTS = ENDPOINT$6 + '/create-payment';
12936
12936
  /**
12937
12937
  * api/mollie/create-payment
12938
12938
  * @param request
@@ -12945,13 +12945,13 @@ PERFORMANCE OF THIS SOFTWARE.
12945
12945
  return post(url, apiKey, body, config.token, signal);
12946
12946
  };
12947
12947
 
12948
- var ENDPOINT$4 = '/api/web/search';
12949
- var ENDPOINT_COUNTRIES = ENDPOINT$4 + '/countries';
12950
- var ENDPOINT_REGIONS = ENDPOINT$4 + '/regions';
12951
- var ENDPOINT_OORDS = ENDPOINT$4 + '/oords';
12952
- var ENDPOINT_LOCATIONS$1 = ENDPOINT$4 + '/locations';
12948
+ var ENDPOINT$5 = '/api/web/search';
12949
+ var ENDPOINT_COUNTRIES = ENDPOINT$5 + '/countries';
12950
+ var ENDPOINT_REGIONS = ENDPOINT$5 + '/regions';
12951
+ var ENDPOINT_OORDS = ENDPOINT$5 + '/oords';
12952
+ var ENDPOINT_LOCATIONS$1 = ENDPOINT$5 + '/locations';
12953
12953
  var ENDPOINT_PORTAL = function (portalId) {
12954
- return ENDPOINT$4 + '/portal/' + portalId;
12954
+ return ENDPOINT$5 + '/portal/' + portalId;
12955
12955
  };
12956
12956
  var ENDPOINT_AIRPORT = '/api/web/entity/airport';
12957
12957
  /**
@@ -13113,12 +13113,12 @@ PERFORMANCE OF THIS SOFTWARE.
13113
13113
  return d instanceof Date && !isNaN(d.getTime());
13114
13114
  };
13115
13115
 
13116
- var ENDPOINT$3 = '/api/web/agent';
13117
- var ENDPOINT_GET_PRINT_ACTIONS = ENDPOINT$3 + '/print-action';
13118
- var ENDPOINT_PRINT = ENDPOINT$3 + '/print-action';
13119
- var ENDPOINT_CUSTOM_ENTRY_STATUS = ENDPOINT$3 + '/custom-entry-status';
13120
- var ENDPOINT_ENUM_ENTRY_STATUS = ENDPOINT$3 + '/enum/entry-status';
13121
- var ENDPOINT_CHANGE_ENTRY_AGENT_SURCHARGE = ENDPOINT$3 + '/entry/change-agent-surcharge';
13116
+ var ENDPOINT$4 = '/api/web/agent';
13117
+ var ENDPOINT_GET_PRINT_ACTIONS = ENDPOINT$4 + '/print-action';
13118
+ var ENDPOINT_PRINT = ENDPOINT$4 + '/print-action';
13119
+ var ENDPOINT_CUSTOM_ENTRY_STATUS = ENDPOINT$4 + '/custom-entry-status';
13120
+ var ENDPOINT_ENUM_ENTRY_STATUS = ENDPOINT$4 + '/enum/entry-status';
13121
+ var ENDPOINT_CHANGE_ENTRY_AGENT_SURCHARGE = ENDPOINT$4 + '/entry/change-agent-surcharge';
13122
13122
  /**
13123
13123
  * api/web/agent/print-action/{print-action-group}
13124
13124
  * @param config
@@ -13151,7 +13151,7 @@ PERFORMANCE OF THIS SOFTWARE.
13151
13151
  return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);
13152
13152
  })
13153
13153
  .join('&');
13154
- var url = '' + config.host + ENDPOINT$3 + '/entry/list?' + queryString;
13154
+ var url = '' + config.host + ENDPOINT$4 + '/entry/list?' + queryString;
13155
13155
  var apiKey = config.apiKey;
13156
13156
  return get(url, apiKey, config.token, signal, true);
13157
13157
  };
@@ -13162,7 +13162,7 @@ PERFORMANCE OF THIS SOFTWARE.
13162
13162
  return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);
13163
13163
  })
13164
13164
  .join('&');
13165
- var url = '' + config.host + ENDPOINT$3 + '/v2/entry/list?' + queryString;
13165
+ var url = '' + config.host + ENDPOINT$4 + '/v2/entry/list?' + queryString;
13166
13166
  var apiKey = config.apiKey;
13167
13167
  return get(url, apiKey, config.token, signal, true);
13168
13168
  };
@@ -13173,12 +13173,12 @@ PERFORMANCE OF THIS SOFTWARE.
13173
13173
  return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);
13174
13174
  })
13175
13175
  .join('&');
13176
- var url = '' + config.host + ENDPOINT$3 + '/entry/total?' + queryString;
13176
+ var url = '' + config.host + ENDPOINT$4 + '/entry/total?' + queryString;
13177
13177
  var apiKey = config.apiKey;
13178
13178
  return get(url, apiKey, config.token, signal, true);
13179
13179
  };
13180
13180
  var getEntryDetailv2 = function (config, entryId, signal) {
13181
- var url = '' + config.host + ENDPOINT$3 + '/v2/entry/detail/' + entryId;
13181
+ var url = '' + config.host + ENDPOINT$4 + '/v2/entry/detail/' + entryId;
13182
13182
  var apiKey = config.apiKey;
13183
13183
  return get(url, apiKey, config.token, signal, true);
13184
13184
  };
@@ -13189,7 +13189,7 @@ PERFORMANCE OF THIS SOFTWARE.
13189
13189
  return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);
13190
13190
  })
13191
13191
  .join('&');
13192
- var url = '' + config.host + ENDPOINT$3 + '/invoice/list?' + queryString;
13192
+ var url = '' + config.host + ENDPOINT$4 + '/invoice/list?' + queryString;
13193
13193
  var apiKey = config.apiKey;
13194
13194
  return get(url, apiKey, config.token, signal, true);
13195
13195
  };
@@ -13216,25 +13216,25 @@ PERFORMANCE OF THIS SOFTWARE.
13216
13216
  return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);
13217
13217
  })
13218
13218
  .join('&');
13219
- var url = '' + config.host + ENDPOINT$3 + '/allotment/list?' + queryString;
13219
+ var url = '' + config.host + ENDPOINT$4 + '/allotment/list?' + queryString;
13220
13220
  var apiKey = config.apiKey;
13221
13221
  return get(url, apiKey, config.token, signal, true);
13222
13222
  };
13223
13223
  var getAllotment = function (config, allotmentId, signal) {
13224
- var url = '' + config.host + ENDPOINT$3 + '/allotment/' + allotmentId;
13224
+ var url = '' + config.host + ENDPOINT$4 + '/allotment/' + allotmentId;
13225
13225
  var apiKey = config.apiKey;
13226
13226
  return get(url, apiKey, config.token, signal, true);
13227
13227
  };
13228
13228
 
13229
- var ENDPOINT$2 = '/api/web';
13230
- var ENDPOINT_CREATE_CRM_CONTACT = ENDPOINT$2 + '/crmcontact';
13231
- var ENDPOINT_CONTACT_FORM$1 = ENDPOINT$2 + '/contactform';
13232
- var ENDPOINT_CREATE_AFFILIATES = ENDPOINT$2 + '/affiliates';
13233
- var ENDPOINT_TRANSLATION_DICTIONARY = ENDPOINT$2 + '/translation-dictionary';
13234
- var ENDPOINT_BOOKING_ACCOMMODATION = ENDPOINT$2 + '/booking-accommodation';
13235
- var ENDPOINT_LOCATIONS = ENDPOINT$2 + '/entity/locations';
13229
+ var ENDPOINT$3 = '/api/web';
13230
+ var ENDPOINT_CREATE_CRM_CONTACT = ENDPOINT$3 + '/crmcontact';
13231
+ var ENDPOINT_CONTACT_FORM$1 = ENDPOINT$3 + '/contactform';
13232
+ var ENDPOINT_CREATE_AFFILIATES = ENDPOINT$3 + '/affiliates';
13233
+ var ENDPOINT_TRANSLATION_DICTIONARY = ENDPOINT$3 + '/translation-dictionary';
13234
+ var ENDPOINT_BOOKING_ACCOMMODATION = ENDPOINT$3 + '/booking-accommodation';
13235
+ var ENDPOINT_LOCATIONS = ENDPOINT$3 + '/entity/locations';
13236
13236
  var ENDPOINT_WEBSITE_CONFIGURATION = function (portalId) {
13237
- return ENDPOINT$2 + '/website/' + portalId + '/configuration';
13237
+ return ENDPOINT$3 + '/website/' + portalId + '/configuration';
13238
13238
  };
13239
13239
  /**
13240
13240
  * api/web/crmcontact
@@ -13299,9 +13299,9 @@ PERFORMANCE OF THIS SOFTWARE.
13299
13299
  return get(url, apiKey, config.token, signal, true);
13300
13300
  };
13301
13301
 
13302
- var ENDPOINT$1 = '/api/web/contact';
13303
- var ENDPOINT_CONTACT_FORM = ENDPOINT$1 + '/contact-form';
13304
- var ENDPOINT_CONTACT_HAS_TAG = ENDPOINT$1 + '/has-tag';
13302
+ var ENDPOINT$2 = '/api/web/contact';
13303
+ var ENDPOINT_CONTACT_FORM = ENDPOINT$2 + '/contact-form';
13304
+ var ENDPOINT_CONTACT_HAS_TAG = ENDPOINT$2 + '/has-tag';
13305
13305
  /**
13306
13306
  * api/web/contact/contact-form
13307
13307
  * Processes a contact form.
@@ -13323,8 +13323,8 @@ PERFORMANCE OF THIS SOFTWARE.
13323
13323
  return post$1(url, apiKey, body, config.token, signal);
13324
13324
  };
13325
13325
 
13326
- var ENDPOINT = '/api/web/file';
13327
- var ENDPOINT_FEED = ENDPOINT + '/feed';
13326
+ var ENDPOINT$1 = '/api/web/file';
13327
+ var ENDPOINT_FEED = ENDPOINT$1 + '/feed';
13328
13328
  /**
13329
13329
  * api/web/file/feed
13330
13330
  * fetch a xml from blob feed.
@@ -13353,6 +13353,16 @@ PERFORMANCE OF THIS SOFTWARE.
13353
13353
  return get$1(url, apiKey, config.token, signal);
13354
13354
  };
13355
13355
 
13356
+ var ENDPOINT = '/api/web/packaging';
13357
+ var ENDPOINT_ACCOMMODATIONS = ENDPOINT + '/accommodations';
13358
+ // MANUAL PACKAGING SEARCH
13359
+ var searchPackagingAccommodations = function (config, request, signal) {
13360
+ var url = '' + config.host + ENDPOINT_ACCOMMODATIONS;
13361
+ var apiKey = config.apiKey;
13362
+ var body = JSON.stringify(request);
13363
+ return post(url, apiKey, body, config.token, signal, true);
13364
+ };
13365
+
13356
13366
  exports.AllotmentType = AllotmentType;
13357
13367
  exports.ContactForm = ContactForm;
13358
13368
  exports.DataType = DataType;
@@ -13421,6 +13431,7 @@ PERFORMANCE OF THIS SOFTWARE.
13421
13431
  exports.searchFlightPool = searchFlightPool;
13422
13432
  exports.searchLocations = searchLocations;
13423
13433
  exports.searchOords = searchOords;
13434
+ exports.searchPackagingAccommodations = searchPackagingAccommodations;
13424
13435
  exports.searchRegions = searchRegions;
13425
13436
  exports.searchWithErrorMapping = searchWithErrorMapping;
13426
13437
  exports.setCustomEntryStatus = setCustomEntryStatus;
@@ -24412,7 +24423,7 @@ var aggregatePricePerPaxType = function (priceDetails, requestRooms) {
24412
24423
  room.pax.forEach(function (pax) {
24413
24424
  var paxType = 'ADULT';
24414
24425
  if (typeof pax.age === 'number') {
24415
- if (pax.age <= 11) {
24426
+ if (pax.age <= 11 && pax.age > 2) {
24416
24427
  paxType = 'CHILD';
24417
24428
  } else if (pax.age <= 2) {
24418
24429
  paxType = 'INFANT';
@@ -30413,6 +30424,7 @@ var Footer = function (_a) {
30413
30424
 
30414
30425
  var QSMConfigurationContext = React__default['default'].createContext({
30415
30426
  type: exports.PortalQsmType.Accommodation,
30427
+ searchConfigurations: [],
30416
30428
  askTravelers: false,
30417
30429
  askNationality: false,
30418
30430
  askTravelClass: false,
@@ -33042,6 +33054,7 @@ var TravelNationalityPicker = function () {
33042
33054
  };
33043
33055
 
33044
33056
  var QSMContainer = function () {
33057
+ var _a;
33045
33058
  var dispatch = reactRedux.useDispatch();
33046
33059
  var isMobile = useMediaQuery('(max-width: 768px)');
33047
33060
  var qsmState = reactRedux.useSelector(function (state) {
@@ -33052,24 +33065,36 @@ var QSMContainer = function () {
33052
33065
  fromDate = qsmState.fromDate,
33053
33066
  toDate = qsmState.toDate,
33054
33067
  tripType = qsmState.tripType;
33055
- var _a = React.useContext(QSMConfigurationContext),
33056
- askTravelers = _a.askTravelers,
33057
- askRooms = _a.askRooms,
33058
- askNationality = _a.askNationality,
33059
- askTravelClass = _a.askTravelClass,
33060
- askTravelType = _a.askTravelType,
33061
- submitIcon = _a.submitIcon,
33062
- onSubmit = _a.onSubmit,
33063
- travelTypes = _a.travelTypes,
33064
- languageCode = _a.languageCode,
33065
- departureAirport = _a.departureAirport,
33066
- destinationAirport = _a.destinationAirport,
33067
- returnAirport = _a.returnAirport,
33068
- destination = _a.destination,
33069
- allowOneWay = _a.allowOneWay,
33070
- allowRoundtrip = _a.allowRoundtrip,
33071
- allowOpenJaw = _a.allowOpenJaw;
33068
+ var _b = React.useContext(QSMConfigurationContext),
33069
+ askTravelers = _b.askTravelers,
33070
+ askRooms = _b.askRooms,
33071
+ askNationality = _b.askNationality,
33072
+ askTravelClass = _b.askTravelClass,
33073
+ askTravelType = _b.askTravelType,
33074
+ submitIcon = _b.submitIcon,
33075
+ onSubmit = _b.onSubmit,
33076
+ travelTypes = _b.travelTypes,
33077
+ languageCode = _b.languageCode,
33078
+ departureAirport = _b.departureAirport,
33079
+ destinationAirport = _b.destinationAirport,
33080
+ returnAirport = _b.returnAirport,
33081
+ destination = _b.destination,
33082
+ allowOneWay = _b.allowOneWay,
33083
+ allowRoundtrip = _b.allowRoundtrip,
33084
+ allowOpenJaw = _b.allowOpenJaw,
33085
+ searchConfigurations = _b.searchConfigurations;
33072
33086
  var translations = getTranslations(languageCode !== null && languageCode !== void 0 ? languageCode : 'en-GB');
33087
+ React.useEffect(
33088
+ function () {
33089
+ var _a;
33090
+ var defaultQsmType = (_a = lodash.first(searchConfigurations)) === null || _a === void 0 ? void 0 : _a.qsmType;
33091
+ console.log('Available search configurations:', searchConfigurations);
33092
+ if (!defaultQsmType) return;
33093
+ console.log('set default qsmType:', defaultQsmType);
33094
+ handleQsmTypeChange(defaultQsmType);
33095
+ },
33096
+ [searchConfigurations]
33097
+ );
33073
33098
  React.useEffect(
33074
33099
  function () {
33075
33100
  if (fromDate || toDate) return;
@@ -33103,12 +33128,36 @@ var QSMContainer = function () {
33103
33128
  };
33104
33129
  var handleQsmTypeChange = function (value) {
33105
33130
  dispatch(setSelectedQsmType(value));
33106
- var startDate = dateFns.addMonths(new Date(), 1);
33131
+ var now = new Date();
33132
+ // Default fallback
33133
+ var startDate = dateFns.addMonths(now, 1);
33107
33134
  var endDate = dateFns.addDays(startDate, 7);
33108
33135
  if (value === exports.PortalQsmType.GroupTour) {
33109
- startDate = new Date();
33136
+ startDate = now;
33110
33137
  endDate = dateFns.addYears(startDate, 1);
33111
33138
  }
33139
+ var searchConfig = searchConfigurations.find(function (config) {
33140
+ return config.qsmType === value;
33141
+ });
33142
+ if (searchConfig) {
33143
+ var applyAmount = function (baseDate, type, amount) {
33144
+ if (!amount || type == null) return baseDate;
33145
+ switch (type) {
33146
+ case build.DateAmountType.days:
33147
+ return dateFns.addDays(baseDate, amount);
33148
+ case build.DateAmountType.months:
33149
+ return dateFns.addMonths(baseDate, amount);
33150
+ default:
33151
+ return baseDate;
33152
+ }
33153
+ };
33154
+ if (searchConfig.fromDateAmount) {
33155
+ startDate = applyAmount(now, searchConfig.fromDateAmountType, searchConfig.fromDateAmount);
33156
+ }
33157
+ if (searchConfig.toDateAmount) {
33158
+ endDate = applyAmount(startDate, searchConfig.toDateAmountType, searchConfig.toDateAmount);
33159
+ }
33160
+ }
33112
33161
  handleDateChange({
33113
33162
  fromDate: startDate,
33114
33163
  toDate: endDate
@@ -33207,6 +33256,53 @@ var QSMContainer = function () {
33207
33256
  },
33208
33257
  [fromDate, toDate, departureAirport, returnAirport, allowOpenJaw]
33209
33258
  );
33259
+ var qsmTypeMeta =
33260
+ ((_a = {}),
33261
+ (_a[exports.PortalQsmType.Multidestination] = {
33262
+ icon: 'ui-location',
33263
+ label: translations.QSM.MULTIDESTINATION
33264
+ }),
33265
+ (_a[exports.PortalQsmType.Package] = {
33266
+ icon: 'ui-suitcase',
33267
+ label: translations.QSM.PACKAGES
33268
+ }),
33269
+ (_a[exports.PortalQsmType.AccommodationAndFlight] = {
33270
+ icon: ['ui-backforward', 'ui-bed'],
33271
+ label: translations.QSM.TRANSPORT_HOTEL
33272
+ }),
33273
+ (_a[exports.PortalQsmType.Accommodation] = {
33274
+ icon: 'ui-bed',
33275
+ label: translations.QSM.ACCOMMODATION
33276
+ }),
33277
+ (_a[exports.PortalQsmType.Flight] = {
33278
+ icon: 'ui-flight',
33279
+ label: translations.QSM.TRANSPORTS
33280
+ }),
33281
+ (_a[exports.PortalQsmType.GroupTour] = {
33282
+ icon: 'ui-group',
33283
+ label: translations.QSM.GROUP_TOUR
33284
+ }),
33285
+ (_a[exports.PortalQsmType.RoundTrip] = {
33286
+ icon: 'ui-group',
33287
+ label: translations.QSM.ROUNDTRIP
33288
+ }),
33289
+ (_a[exports.PortalQsmType.Ticket] = {
33290
+ icon: 'ui-ticket',
33291
+ label: translations.QSM.TICKET_ONLY
33292
+ }),
33293
+ (_a[exports.PortalQsmType.Car] = {
33294
+ icon: 'ui-car',
33295
+ label: translations.QSM.RENT_A_CAR
33296
+ }),
33297
+ (_a[exports.PortalQsmType.Transfer] = {
33298
+ icon: 'ui-backforward',
33299
+ label: translations.QSM.TRANSFERS
33300
+ }),
33301
+ (_a[exports.PortalQsmType.Cruise] = {
33302
+ icon: 'ui-ship',
33303
+ label: translations.QSM.CRUISES
33304
+ }),
33305
+ _a);
33210
33306
  return React__default['default'].createElement(
33211
33307
  'div',
33212
33308
  { className: 'qsm' },
@@ -33216,168 +33312,31 @@ var QSMContainer = function () {
33216
33312
  React__default['default'].createElement(
33217
33313
  'div',
33218
33314
  { className: 'qsm__tabs' },
33219
- React__default['default'].createElement(
33220
- 'button',
33221
- {
33222
- type: 'button',
33223
- className: 'qsm__tab '.concat(qsmType == exports.PortalQsmType.Multidestination ? 'qsm__tab--active' : ''),
33224
- onClick: function () {
33225
- return handleQsmTypeChange(exports.PortalQsmType.Multidestination);
33226
- }
33227
- },
33228
- React__default['default'].createElement(
33229
- 'span',
33230
- { className: 'qsm__tab__icons' },
33231
- React__default['default'].createElement(Icon$2, { name: 'ui-location', height: 16 })
33232
- ),
33233
- translations.QSM.MULTIDESTINATION
33234
- ),
33235
- React__default['default'].createElement(
33236
- 'button',
33237
- {
33238
- type: 'button',
33239
- className: 'qsm__tab '.concat(qsmType == exports.PortalQsmType.Package ? 'qsm__tab--active' : ''),
33240
- onClick: function () {
33241
- return handleQsmTypeChange(exports.PortalQsmType.Package);
33242
- }
33243
- },
33244
- React__default['default'].createElement(
33245
- 'span',
33246
- { className: 'qsm__tab__icons' },
33247
- React__default['default'].createElement(Icon$2, { name: 'ui-suitcase', height: 16 })
33248
- ),
33249
- translations.QSM.PACKAGES
33250
- ),
33251
- React__default['default'].createElement(
33252
- 'button',
33253
- {
33254
- type: 'button',
33255
- className: 'qsm__tab '.concat(qsmType == exports.PortalQsmType.AccommodationAndFlight ? 'qsm__tab--active' : ''),
33256
- onClick: function () {
33257
- return handleQsmTypeChange(exports.PortalQsmType.AccommodationAndFlight);
33258
- }
33259
- },
33260
- React__default['default'].createElement(
33261
- 'span',
33262
- { className: 'qsm__tab__icons' },
33263
- React__default['default'].createElement(Icon$2, { name: 'ui-backforward', height: 14 }),
33264
- '+',
33265
- React__default['default'].createElement(Icon$2, { name: 'ui-bed', height: 14 })
33266
- ),
33267
- translations.QSM.TRANSPORT_HOTEL
33268
- ),
33269
- React__default['default'].createElement(
33270
- 'button',
33271
- {
33272
- type: 'button',
33273
- className: 'qsm__tab '.concat(qsmType == exports.PortalQsmType.Accommodation ? 'qsm__tab--active' : ''),
33274
- onClick: function () {
33275
- return handleQsmTypeChange(exports.PortalQsmType.Accommodation);
33276
- }
33277
- },
33278
- React__default['default'].createElement(
33279
- 'span',
33280
- { className: 'qsm__tab__icons' },
33281
- React__default['default'].createElement(Icon$2, { name: 'ui-bed', height: 16 })
33282
- ),
33283
- translations.QSM.ACCOMMODATION
33284
- ),
33285
- React__default['default'].createElement(
33286
- 'button',
33287
- {
33288
- type: 'button',
33289
- className: 'qsm__tab '.concat(qsmType == exports.PortalQsmType.Flight ? 'qsm__tab--active' : ''),
33290
- onClick: function () {
33291
- return handleQsmTypeChange(exports.PortalQsmType.Flight);
33292
- }
33293
- },
33294
- React__default['default'].createElement(
33295
- 'span',
33296
- { className: 'qsm__tab__icons' },
33297
- React__default['default'].createElement(Icon$2, { name: 'ui-flight', height: 16 })
33298
- ),
33299
- translations.QSM.TRANSPORTS
33300
- ),
33301
- React__default['default'].createElement(
33302
- 'button',
33303
- {
33304
- type: 'button',
33305
- className: 'qsm__tab '.concat(qsmType == exports.PortalQsmType.GroupTour ? 'qsm__tab--active' : ''),
33306
- onClick: function () {
33307
- return handleQsmTypeChange(exports.PortalQsmType.GroupTour);
33308
- }
33309
- },
33310
- React__default['default'].createElement(
33311
- 'span',
33312
- { className: 'qsm__tab__icons' },
33313
- React__default['default'].createElement(Icon$2, { name: 'ui-group', height: 16 })
33314
- ),
33315
- translations.QSM.GROUP_TOUR
33316
- ),
33317
- React__default['default'].createElement(
33318
- 'button',
33319
- {
33320
- type: 'button',
33321
- className: 'qsm__tab '.concat(qsmType == exports.PortalQsmType.Ticket ? 'qsm__tab--active' : ''),
33322
- onClick: function () {
33323
- return handleQsmTypeChange(exports.PortalQsmType.Ticket);
33324
- }
33325
- },
33326
- React__default['default'].createElement(
33327
- 'span',
33328
- { className: 'qsm__tab__icons' },
33329
- React__default['default'].createElement(Icon$2, { name: 'ui-ticket', height: 16 })
33330
- ),
33331
- translations.QSM.TICKET_ONLY
33332
- ),
33333
- React__default['default'].createElement(
33334
- 'button',
33335
- {
33336
- type: 'button',
33337
- className: 'qsm__tab '.concat(qsmType == exports.PortalQsmType.Car ? 'qsm__tab--active' : ''),
33338
- onClick: function () {
33339
- return handleQsmTypeChange(exports.PortalQsmType.Car);
33340
- }
33341
- },
33342
- React__default['default'].createElement(
33343
- 'span',
33344
- { className: 'qsm__tab__icons' },
33345
- React__default['default'].createElement(Icon$2, { name: 'ui-car', height: 16 })
33346
- ),
33347
- translations.QSM.RENT_A_CAR
33348
- ),
33349
- React__default['default'].createElement(
33350
- 'button',
33351
- {
33352
- type: 'button',
33353
- className: 'qsm__tab '.concat(qsmType == exports.PortalQsmType.Transfer ? 'qsm__tab--active' : ''),
33354
- onClick: function () {
33355
- return handleQsmTypeChange(exports.PortalQsmType.Transfer);
33356
- }
33357
- },
33358
- React__default['default'].createElement(
33359
- 'span',
33360
- { className: 'qsm__tab__icons' },
33361
- React__default['default'].createElement(Icon$2, { name: 'ui-backforward', height: 16 })
33362
- ),
33363
- translations.QSM.TRANSFERS
33364
- ),
33365
- React__default['default'].createElement(
33366
- 'button',
33367
- {
33368
- type: 'button',
33369
- className: 'qsm__tab '.concat(qsmType == exports.PortalQsmType.Cruise ? 'qsm__tab--active' : ''),
33370
- onClick: function () {
33371
- return handleQsmTypeChange(exports.PortalQsmType.Cruise);
33372
- }
33373
- },
33374
- React__default['default'].createElement(
33375
- 'span',
33376
- { className: 'qsm__tab__icons' },
33377
- React__default['default'].createElement(Icon$2, { name: 'ui-ship', height: 16 })
33378
- ),
33379
- translations.QSM.CRUISES
33380
- )
33315
+ searchConfigurations.map(function (searchConfig, index) {
33316
+ var meta = qsmTypeMeta[searchConfig.qsmType];
33317
+ if (!meta) return null; // safety guard
33318
+ return React__default['default'].createElement(
33319
+ 'button',
33320
+ {
33321
+ key: 'qsm-type-'.concat(index),
33322
+ type: 'button',
33323
+ className: 'qsm__tab '.concat(qsmType === searchConfig.qsmType ? 'qsm__tab--active' : ''),
33324
+ onClick: function () {
33325
+ return handleQsmTypeChange(searchConfig.qsmType);
33326
+ }
33327
+ },
33328
+ React__default['default'].createElement(
33329
+ 'span',
33330
+ { className: 'qsm__tab__icons' },
33331
+ Array.isArray(meta.icon)
33332
+ ? meta.icon.map(function (icon, i) {
33333
+ return React__default['default'].createElement(Icon$2, { key: i, name: icon, height: 14 });
33334
+ })
33335
+ : React__default['default'].createElement(Icon$2, { name: meta.icon, height: 16 })
33336
+ ),
33337
+ meta.label
33338
+ );
33339
+ })
33381
33340
  ),
33382
33341
  React__default['default'].createElement(
33383
33342
  'div',
@@ -33579,6 +33538,9 @@ var initialState$1 = {
33579
33538
  results: [],
33580
33539
  filteredResults: [],
33581
33540
  selectedSearchResultId: null,
33541
+ packagingAccoResults: [],
33542
+ filteredPackagingAccoResults: [],
33543
+ selectedPackagingAccoResultCode: null,
33582
33544
  selectedFlight: null,
33583
33545
  selectedFlightDetails: null,
33584
33546
  bookingPackageDetails: null,
@@ -33603,6 +33565,15 @@ var searchResultsSlice = toolkit.createSlice({
33603
33565
  setSelectedSearchResult: function (state, action) {
33604
33566
  state.selectedSearchResultId = action.payload;
33605
33567
  },
33568
+ setPackagingAccoResults: function (state, action) {
33569
+ state.packagingAccoResults = action.payload;
33570
+ },
33571
+ setFilteredPackagingAccoResults: function (state, action) {
33572
+ state.filteredPackagingAccoResults = action.payload;
33573
+ },
33574
+ setSelectedPackagingAccoResult: function (state, action) {
33575
+ state.selectedPackagingAccoResultCode = action.payload;
33576
+ },
33606
33577
  setSelectedFlight: function (state, action) {
33607
33578
  state.selectedFlight = action.payload;
33608
33579
  },
@@ -33669,6 +33640,9 @@ var searchResultsSlice = toolkit.createSlice({
33669
33640
  var setResults = ((_a = searchResultsSlice.actions), _a.setResults),
33670
33641
  setFilteredResults = _a.setFilteredResults,
33671
33642
  setSelectedSearchResult = _a.setSelectedSearchResult,
33643
+ setPackagingAccoResults = _a.setPackagingAccoResults,
33644
+ setFilteredPackagingAccoResults = _a.setFilteredPackagingAccoResults,
33645
+ setSelectedPackagingAccoResult = _a.setSelectedPackagingAccoResult,
33672
33646
  setSelectedFlight = _a.setSelectedFlight,
33673
33647
  setSelectedFlightDetails = _a.setSelectedFlightDetails,
33674
33648
  setBookingPackageDetails = _a.setBookingPackageDetails,
@@ -38067,15 +38041,48 @@ var FlyIn = function (_a) {
38067
38041
  };
38068
38042
 
38069
38043
  var HotelCard = function (_a) {
38044
+ var _b;
38070
38045
  var result = _a.result,
38071
38046
  translations = _a.translations;
38072
38047
  var dispatch = reactRedux.useDispatch();
38073
- var selectedSearchResultId = reactRedux.useSelector(function (state) {
38048
+ var selectedPackagingAccoResultCode = reactRedux.useSelector(function (state) {
38074
38049
  return state.searchResults;
38075
- }).selectedSearchResultId;
38076
- var handleChange = function (productId) {
38077
- dispatch(setSelectedSearchResult(productId));
38050
+ }).selectedPackagingAccoResultCode;
38051
+ var handleChange = function (productCode) {
38052
+ dispatch(setSelectedPackagingAccoResult(productCode));
38078
38053
  };
38054
+ if ((_b = result.contents) === null || _b === void 0 ? void 0 : _b.length) {
38055
+ return React__default['default'].createElement(
38056
+ 'div',
38057
+ { className: 'search__result-card__wrapper' },
38058
+ React__default['default'].createElement('div', {
38059
+ dangerouslySetInnerHTML: {
38060
+ __html: result.contents
38061
+ }
38062
+ }),
38063
+ React__default['default'].createElement(
38064
+ 'div',
38065
+ { className: 'search__result-card__footer' },
38066
+ React__default['default'].createElement(
38067
+ 'button',
38068
+ {
38069
+ type: 'button',
38070
+ className: 'cta '.concat(selectedPackagingAccoResultCode === result.code ? 'cta--selected' : 'cta--select'),
38071
+ onClick: function () {
38072
+ return handleChange(result.code);
38073
+ }
38074
+ },
38075
+ selectedPackagingAccoResultCode === result.code
38076
+ ? translations === null || translations === void 0
38077
+ ? void 0
38078
+ : translations.SHARED.SELECTED
38079
+ : translations === null || translations === void 0
38080
+ ? void 0
38081
+ : translations.SHARED.SELECT
38082
+ )
38083
+ )
38084
+ );
38085
+ }
38079
38086
  return React__default['default'].createElement(
38080
38087
  'div',
38081
38088
  {
@@ -38159,12 +38166,12 @@ var HotelCard = function (_a) {
38159
38166
  'button',
38160
38167
  {
38161
38168
  type: 'button',
38162
- className: 'cta '.concat(selectedSearchResultId === result.id ? 'cta--selected' : 'cta--select'),
38169
+ className: 'cta '.concat(selectedPackagingAccoResultCode === result.code ? 'cta--selected' : 'cta--select'),
38163
38170
  onClick: function () {
38164
- return handleChange(result.id);
38171
+ return handleChange(result.code);
38165
38172
  }
38166
38173
  },
38167
- selectedSearchResultId === result.id
38174
+ selectedPackagingAccoResultCode === result.code
38168
38175
  ? translations === null || translations === void 0
38169
38176
  ? void 0
38170
38177
  : translations.SHARED.SELECTED
@@ -38179,7 +38186,7 @@ var HotelCard = function (_a) {
38179
38186
 
38180
38187
  var renderResults = function (results, context, cmsMap, activeTab, translations) {
38181
38188
  var renderedResults = results.map(function (result, index) {
38182
- var cmsItem = cmsMap.get(result.productId);
38189
+ var cmsItem = cmsMap.get(result.code);
38183
38190
  var mappedResult = mapSearchResult(result, cmsItem, context.languageCode, translations);
38184
38191
  if (
38185
38192
  (context === null || context === void 0 ? void 0 : context.showCustomCards) &&
@@ -38204,10 +38211,10 @@ var renderResults = function (results, context, cmsMap, activeTab, translations)
38204
38211
  );
38205
38212
  };
38206
38213
  var mapSearchResult = function (searchResult, cmsItem, languageCode, translations) {
38207
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
38214
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
38208
38215
  return {
38209
38216
  type: 'hotel',
38210
- id: searchResult.productId,
38217
+ code: searchResult.code,
38211
38218
  title:
38212
38219
  ((_b = (_a = cmsItem === null || cmsItem === void 0 ? void 0 : cmsItem.content) === null || _a === void 0 ? void 0 : _a.general) === null || _b === void 0
38213
38220
  ? void 0
@@ -38231,14 +38238,31 @@ var mapSearchResult = function (searchResult, cmsItem, languageCode, translation
38231
38238
  price: formatPrice(searchResult.price, searchResult.currencyCode, languageCode),
38232
38239
  ctaText: translations === null || translations === void 0 ? void 0 : translations.SRP.VIEW_DETAILS,
38233
38240
  days: ''
38234
- .concat(calculateNights(searchResult.stayFromDate, searchResult.stayToDate), ' ')
38241
+ .concat(calculateNights(new Date(searchResult.fromDate), new Date(searchResult.toDate)), ' ')
38235
38242
  .concat(translations === null || translations === void 0 ? void 0 : translations.SRP.NIGHTS),
38236
- accommodation: searchResult.accommodationName,
38237
- regime: searchResult.regimeName,
38243
+ accommodation:
38244
+ ((_l =
38245
+ (_k = (_j = lodash.first(searchResult.rooms)) === null || _j === void 0 ? void 0 : _j.options) === null || _k === void 0
38246
+ ? void 0
38247
+ : _k.find(function (x) {
38248
+ return x.isSelected;
38249
+ })) === null || _l === void 0
38250
+ ? void 0
38251
+ : _l.accommodationName) || '',
38252
+ regime:
38253
+ ((_p =
38254
+ (_o = (_m = lodash.first(searchResult.rooms)) === null || _m === void 0 ? void 0 : _m.options) === null || _o === void 0
38255
+ ? void 0
38256
+ : _o.find(function (x) {
38257
+ return x.isSelected;
38258
+ })) === null || _p === void 0
38259
+ ? void 0
38260
+ : _p.regimeName) || '',
38238
38261
  stars:
38239
- ((_k = (_j = cmsItem === null || cmsItem === void 0 ? void 0 : cmsItem.content) === null || _j === void 0 ? void 0 : _j.general) === null || _k === void 0
38262
+ (_r = (_q = cmsItem === null || cmsItem === void 0 ? void 0 : cmsItem.content) === null || _q === void 0 ? void 0 : _q.general) === null || _r === void 0
38240
38263
  ? void 0
38241
- : _k.stars) || searchResult.hotelStars
38264
+ : _r.stars,
38265
+ contents: searchResult.contents
38242
38266
  };
38243
38267
  };
38244
38268
  var HotelAccommodationResults = function (_a) {
@@ -38248,9 +38272,6 @@ var HotelAccommodationResults = function (_a) {
38248
38272
  if (!context) {
38249
38273
  return;
38250
38274
  }
38251
- if (context.showMockup) {
38252
- return showMocukups(context);
38253
- }
38254
38275
  var translations = getTranslations((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
38255
38276
  if (isLoading) {
38256
38277
  return React__default['default'].createElement(
@@ -38264,9 +38285,9 @@ var HotelAccommodationResults = function (_a) {
38264
38285
  var _d = reactRedux.useSelector(function (state) {
38265
38286
  return state.searchResults;
38266
38287
  }),
38267
- filteredResults = _d.filteredResults,
38288
+ filteredPackagingAccoResults = _d.filteredPackagingAccoResults,
38268
38289
  activeTab = _d.activeTab;
38269
- if (!filteredResults.length) {
38290
+ if (!filteredPackagingAccoResults.length) {
38270
38291
  return React__default['default'].createElement('div', { className: 'no-results' }, translations.SRP.NO_RESULTS);
38271
38292
  }
38272
38293
  var cmsMap = React__default['default'].useMemo(
@@ -38277,20 +38298,20 @@ var HotelAccommodationResults = function (_a) {
38277
38298
  ? void 0
38278
38299
  : _a.forEach(function (item) {
38279
38300
  var _a, _b, _c;
38280
- var id =
38301
+ var code =
38281
38302
  (_c =
38282
38303
  (_b = (_a = item === null || item === void 0 ? void 0 : item.content) === null || _a === void 0 ? void 0 : _a.general) === null || _b === void 0
38283
38304
  ? void 0
38284
38305
  : _b.product) === null || _c === void 0
38285
38306
  ? void 0
38286
- : _c.tideId;
38287
- if (id) map.set(id, item);
38307
+ : _c.code;
38308
+ if (code) map.set(code, item);
38288
38309
  });
38289
38310
  return map;
38290
38311
  },
38291
38312
  [context.cmsHotelData]
38292
38313
  );
38293
- var firstResult = filteredResults === null || filteredResults === void 0 ? void 0 : filteredResults[0];
38314
+ var firstResult = filteredPackagingAccoResults === null || filteredPackagingAccoResults === void 0 ? void 0 : filteredPackagingAccoResults[0];
38294
38315
  var firstResultDay = (firstResult === null || firstResult === void 0 ? void 0 : firstResult.fromDate)
38295
38316
  ? dateFns.format(dateFns.parseISO(firstResult.fromDate), 'd')
38296
38317
  : null;
@@ -38321,90 +38342,87 @@ var HotelAccommodationResults = function (_a) {
38321
38342
  )
38322
38343
  )
38323
38344
  ),
38324
- renderResults(filteredResults, context, cmsMap, activeTab, translations)
38345
+ renderResults(filteredPackagingAccoResults, context, cmsMap, activeTab, translations)
38325
38346
  );
38326
38347
  };
38327
- var showMocukups = function (context) {
38328
- var mockedHotelResults = [
38329
- {
38330
- type: 'hotel',
38331
- id: 2,
38332
- title: 'HTFSWILLCARL',
38333
- image: 'https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=1925&auto=format&fit=crop',
38334
- description: '2 persoons kamer',
38335
- location: 'Tenerif, Spanje',
38336
- price: '$2244',
38337
- ctaText: 'Bekijk details',
38338
- days: '7 nights',
38339
- flightInfo: null,
38340
- accommodation: 'Hotel XYZ',
38341
- regime: 'All-inclusive',
38342
- stars: 5
38343
- },
38344
- {
38345
- type: 'hotel',
38346
- id: 3,
38347
- title: 'HTFSSOFTROCK',
38348
- image: 'https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=1925&auto=format&fit=crop',
38349
- description: '3 persoons kamer',
38350
- location: 'Tenerif, Spanje',
38351
- price: '$2244',
38352
- ctaText: 'Bekijk details',
38353
- days: '7 nights',
38354
- flightInfo: null,
38355
- accommodation: 'Hotel ABC',
38356
- regime: 'Half-board',
38357
- stars: 4
38358
- },
38359
- {
38360
- type: 'hotel',
38361
- id: 4,
38362
- title: 'HTFSROYGAR',
38363
- image: 'https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=1925&auto=format&fit=crop',
38364
- description: '4 persoons kamer',
38365
- location: 'Tenerif, Spanje',
38366
- price: '$2496',
38367
- ctaText: 'Bekijk details',
38368
- days: '7 nights',
38369
- flightInfo: null,
38370
- accommodation: 'Hotel DEF',
38371
- regime: 'Full-board',
38372
- stars: 5
38373
- },
38374
- {
38375
- type: 'hotel',
38376
- id: 5,
38377
- title: 'HTFSCONBEL',
38378
- image: 'https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=1925&auto=format&fit=crop',
38379
- description: '5 persoons kamer',
38380
- location: 'Tenerif, Spanje',
38381
- price: '$6784.8',
38382
- ctaText: 'Bekijk details',
38383
- days: '7 nights',
38384
- flightInfo: null,
38385
- accommodation: 'Hotel GHI',
38386
- regime: 'All-inclusive',
38387
- stars: 5
38388
- }
38389
- ];
38390
- return React__default['default'].createElement(React__default['default'].Fragment, null, renderMockupResults(mockedHotelResults, context));
38391
- };
38392
- var renderMockupResults = function (results, context) {
38393
- var renderedResults = results.map(function (result, index) {
38394
- if (
38395
- (context === null || context === void 0 ? void 0 : context.showCustomCards) &&
38396
- (context === null || context === void 0 ? void 0 : context.customCardRenderer)
38397
- ) {
38398
- return React__default['default'].createElement(
38399
- 'div',
38400
- { key: ''.concat(result.id, '-').concat(index), className: 'search__result-card' },
38401
- context.customCardRenderer(result)
38402
- );
38403
- }
38404
- return React__default['default'].createElement(HotelCard, { key: ''.concat(result.id, '-').concat(index), result: result });
38405
- });
38406
- return React__default['default'].createElement('div', { className: 'search__results__cards' }, renderedResults);
38407
- };
38348
+ // const showMocukups = (context: any) => {
38349
+ // const mockedHotelResults = [
38350
+ // {
38351
+ // type: 'hotel',
38352
+ // id: 2,
38353
+ // title: 'HTFSWILLCARL',
38354
+ // image: 'https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=1925&auto=format&fit=crop',
38355
+ // description: '2 persoons kamer',
38356
+ // location: 'Tenerif, Spanje',
38357
+ // price: '$2244',
38358
+ // ctaText: 'Bekijk details',
38359
+ // days: '7 nights',
38360
+ // flightInfo: null,
38361
+ // accommodation: 'Hotel XYZ',
38362
+ // regime: 'All-inclusive',
38363
+ // stars: 5
38364
+ // } as HotelResult,
38365
+ // {
38366
+ // type: 'hotel',
38367
+ // id: 3,
38368
+ // title: 'HTFSSOFTROCK',
38369
+ // image: 'https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=1925&auto=format&fit=crop',
38370
+ // description: '3 persoons kamer',
38371
+ // location: 'Tenerif, Spanje',
38372
+ // price: '$2244',
38373
+ // ctaText: 'Bekijk details',
38374
+ // days: '7 nights',
38375
+ // flightInfo: null,
38376
+ // accommodation: 'Hotel ABC',
38377
+ // regime: 'Half-board',
38378
+ // stars: 4
38379
+ // } as HotelResult,
38380
+ // {
38381
+ // type: 'hotel',
38382
+ // id: 4,
38383
+ // title: 'HTFSROYGAR',
38384
+ // image: 'https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=1925&auto=format&fit=crop',
38385
+ // description: '4 persoons kamer',
38386
+ // location: 'Tenerif, Spanje',
38387
+ // price: '$2496',
38388
+ // ctaText: 'Bekijk details',
38389
+ // days: '7 nights',
38390
+ // flightInfo: null,
38391
+ // accommodation: 'Hotel DEF',
38392
+ // regime: 'Full-board',
38393
+ // stars: 5
38394
+ // } as HotelResult,
38395
+ // {
38396
+ // type: 'hotel',
38397
+ // id: 5,
38398
+ // title: 'HTFSCONBEL',
38399
+ // image: 'https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=1925&auto=format&fit=crop',
38400
+ // description: '5 persoons kamer',
38401
+ // location: 'Tenerif, Spanje',
38402
+ // price: '$6784.8',
38403
+ // ctaText: 'Bekijk details',
38404
+ // days: '7 nights',
38405
+ // flightInfo: null,
38406
+ // accommodation: 'Hotel GHI',
38407
+ // regime: 'All-inclusive',
38408
+ // stars: 5
38409
+ // } as HotelResult
38410
+ // ] as HotelResult[];
38411
+ // return <>{renderMockupResults(mockedHotelResults, context)}</>;
38412
+ // };
38413
+ // const renderMockupResults = (results: any[], context: any) => {
38414
+ // const renderedResults = results.map((result, index) => {
38415
+ // if (context?.showCustomCards && context?.customCardRenderer) {
38416
+ // return (
38417
+ // <div key={`${result.id}-${index}`} className="search__result-card">
38418
+ // {context.customCardRenderer(result)}
38419
+ // </div>
38420
+ // );
38421
+ // }
38422
+ // return <HotelCard key={`${result.id}-${index}`} result={result} />;
38423
+ // });
38424
+ // return <div className="search__results__cards">{renderedResults}</div>;
38425
+ // };
38408
38426
 
38409
38427
  var RoundTripResults = function () {
38410
38428
  return React__default['default'].createElement(
@@ -38664,91 +38682,6 @@ var RoundTripResults = function () {
38664
38682
  );
38665
38683
  };
38666
38684
 
38667
- var enrichFiltersWithResults = function (results, filters, tags) {
38668
- if (!results || results.length === 0 || !filters) {
38669
- return filters !== null && filters !== void 0 ? filters : [];
38670
- }
38671
- return filters.map(function (filter) {
38672
- var updatedFilter = __assign({}, filter);
38673
- if (filter.property === 'price' && (filter.min == null || filter.max == null)) {
38674
- var prices = results
38675
- .map(function (r) {
38676
- var _a;
38677
- return (_a = r.price) !== null && _a !== void 0 ? _a : 0;
38678
- })
38679
- .filter(function (p) {
38680
- return p > 0;
38681
- });
38682
- if (prices.length > 0) {
38683
- updatedFilter.min = Math.floor(Math.min.apply(Math, prices));
38684
- updatedFilter.max = Math.ceil(Math.max.apply(Math, prices));
38685
- }
38686
- }
38687
- if (filter.property === 'accommodation') {
38688
- var map_1 = new Map();
38689
- results.forEach(function (r) {
38690
- if (r.accommodationCode) {
38691
- map_1.set(r.accommodationCode, {
38692
- name: r.accommodationName,
38693
- code: r.accommodationCode
38694
- });
38695
- }
38696
- });
38697
- updatedFilter.options = Array.from(map_1.values()).map(function (accommodation) {
38698
- var _a;
38699
- return {
38700
- label: (_a = accommodation.name) !== null && _a !== void 0 ? _a : accommodation.code,
38701
- value: accommodation.code,
38702
- isChecked: false
38703
- };
38704
- });
38705
- }
38706
- if (filter.property === 'regime') {
38707
- var map_2 = new Map();
38708
- results.forEach(function (r) {
38709
- if (r.regimeCode) {
38710
- map_2.set(r.regimeCode, {
38711
- name: r.regimeName,
38712
- code: r.regimeCode
38713
- });
38714
- }
38715
- });
38716
- updatedFilter.options = Array.from(map_2.values()).map(function (regime) {
38717
- var _a;
38718
- return {
38719
- label: (_a = regime.name) !== null && _a !== void 0 ? _a : regime.code,
38720
- value: regime.code,
38721
- isChecked: false
38722
- };
38723
- });
38724
- }
38725
- if (filter.property === 'theme') {
38726
- var map_3 = new Map();
38727
- results.forEach(function (r) {
38728
- var _a;
38729
- (_a = r.tagIds) === null || _a === void 0
38730
- ? void 0
38731
- : _a.forEach(function (tagId) {
38732
- var tag = tags.find(function (t) {
38733
- return t.id === tagId;
38734
- });
38735
- if (tag && tag.id != null && tag.name != null) {
38736
- map_3.set(tag.id, { name: tag.name, id: tag.id });
38737
- }
38738
- });
38739
- });
38740
- updatedFilter.options = Array.from(map_3.values()).map(function (theme) {
38741
- return {
38742
- label: theme.name,
38743
- value: theme.id,
38744
- isChecked: false
38745
- };
38746
- });
38747
- }
38748
- return updatedFilter;
38749
- });
38750
- };
38751
-
38752
38685
  var ticksToMinutes = function (ticks) {
38753
38686
  return Math.floor(ticks / 600000000);
38754
38687
  };
@@ -40963,7 +40896,7 @@ var FlightResultsContainer = function (_a) {
40963
40896
  React.useEffect(
40964
40897
  function () {
40965
40898
  if (!(context === null || context === void 0 ? void 0 : context.showMockup)) {
40966
- if ((context === null || context === void 0 ? void 0 : context.type) === exports.PortalQsmType.Flight && isHubReady) {
40899
+ if ((context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === exports.PortalQsmType.Flight && isHubReady) {
40967
40900
  onFlightSearch();
40968
40901
  }
40969
40902
  }
@@ -41103,7 +41036,7 @@ var FlightResultsContainer = function (_a) {
41103
41036
  'div',
41104
41037
  { className: 'search__results__wrapper' },
41105
41038
  flightsLoading && React__default['default'].createElement(Spinner, null),
41106
- (context === null || context === void 0 ? void 0 : context.type) == exports.PortalQsmType.Flight &&
41039
+ (context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) == exports.PortalQsmType.Flight &&
41107
41040
  (context === null || context === void 0 ? void 0 : context.showFlightAccommodationResults) &&
41108
41041
  results &&
41109
41042
  results.length > 0 &&
@@ -41516,6 +41449,165 @@ var GroupTourResults = function (_a) {
41516
41449
  );
41517
41450
  };
41518
41451
 
41452
+ var enrichFiltersWithResults = function (results, filters, tags) {
41453
+ if (!results || results.length === 0 || !filters) {
41454
+ return filters !== null && filters !== void 0 ? filters : [];
41455
+ }
41456
+ return filters.map(function (filter) {
41457
+ var updatedFilter = __assign({}, filter);
41458
+ if (filter.property === 'price' && (filter.min == null || filter.max == null)) {
41459
+ var prices = results
41460
+ .map(function (r) {
41461
+ var _a;
41462
+ return (_a = r.price) !== null && _a !== void 0 ? _a : 0;
41463
+ })
41464
+ .filter(function (p) {
41465
+ return p > 0;
41466
+ });
41467
+ if (prices.length > 0) {
41468
+ updatedFilter.min = Math.floor(Math.min.apply(Math, prices));
41469
+ updatedFilter.max = Math.ceil(Math.max.apply(Math, prices));
41470
+ }
41471
+ }
41472
+ if (filter.property === 'accommodation') {
41473
+ var map_1 = new Map();
41474
+ results.forEach(function (r) {
41475
+ if (r.accommodationCode) {
41476
+ map_1.set(r.accommodationCode, {
41477
+ name: r.accommodationName,
41478
+ code: r.accommodationCode
41479
+ });
41480
+ }
41481
+ });
41482
+ updatedFilter.options = Array.from(map_1.values()).map(function (accommodation) {
41483
+ var _a;
41484
+ return {
41485
+ label: (_a = accommodation.name) !== null && _a !== void 0 ? _a : accommodation.code,
41486
+ value: accommodation.code,
41487
+ isChecked: false
41488
+ };
41489
+ });
41490
+ }
41491
+ if (filter.property === 'regime') {
41492
+ var map_2 = new Map();
41493
+ results.forEach(function (r) {
41494
+ if (r.regimeCode) {
41495
+ map_2.set(r.regimeCode, {
41496
+ name: r.regimeName,
41497
+ code: r.regimeCode
41498
+ });
41499
+ }
41500
+ });
41501
+ updatedFilter.options = Array.from(map_2.values()).map(function (regime) {
41502
+ var _a;
41503
+ return {
41504
+ label: (_a = regime.name) !== null && _a !== void 0 ? _a : regime.code,
41505
+ value: regime.code,
41506
+ isChecked: false
41507
+ };
41508
+ });
41509
+ }
41510
+ if (filter.property === 'theme') {
41511
+ var map_3 = new Map();
41512
+ results.forEach(function (r) {
41513
+ var _a;
41514
+ (_a = r.tagIds) === null || _a === void 0
41515
+ ? void 0
41516
+ : _a.forEach(function (tagId) {
41517
+ var tag = tags.find(function (t) {
41518
+ return t.id === tagId;
41519
+ });
41520
+ if (tag && tag.id != null && tag.name != null) {
41521
+ map_3.set(tag.id, { name: tag.name, id: tag.id });
41522
+ }
41523
+ });
41524
+ });
41525
+ updatedFilter.options = Array.from(map_3.values()).map(function (theme) {
41526
+ return {
41527
+ label: theme.name,
41528
+ value: theme.id,
41529
+ isChecked: false
41530
+ };
41531
+ });
41532
+ }
41533
+ return updatedFilter;
41534
+ });
41535
+ };
41536
+ var enrichFiltersWithPackageAccoResults = function (results, filters, tags) {
41537
+ if (!results || results.length === 0 || !filters) {
41538
+ return filters !== null && filters !== void 0 ? filters : [];
41539
+ }
41540
+ return filters.map(function (filter) {
41541
+ var updatedFilter = __assign({}, filter);
41542
+ if (filter.property === 'price' && (filter.min == null || filter.max == null)) {
41543
+ var prices = results
41544
+ .map(function (r) {
41545
+ var _a;
41546
+ return (_a = r.price) !== null && _a !== void 0 ? _a : 0;
41547
+ })
41548
+ .filter(function (p) {
41549
+ return p > 0;
41550
+ });
41551
+ if (prices.length > 0) {
41552
+ updatedFilter.min = Math.floor(Math.min.apply(Math, prices));
41553
+ updatedFilter.max = Math.ceil(Math.max.apply(Math, prices));
41554
+ }
41555
+ }
41556
+ if (filter.property === 'accommodation') {
41557
+ var map_4 = new Map();
41558
+ results.forEach(function (r) {
41559
+ var rooms = lodash.flatMap(r.rooms);
41560
+ if (rooms) {
41561
+ rooms.map(function (room) {
41562
+ room.options.map(function (option) {
41563
+ if (option.accommodationCode) {
41564
+ map_4.set(option.accommodationCode, {
41565
+ name: option.accommodationName,
41566
+ code: option.accommodationCode
41567
+ });
41568
+ }
41569
+ });
41570
+ });
41571
+ }
41572
+ });
41573
+ updatedFilter.options = Array.from(map_4.values()).map(function (accommodation) {
41574
+ var _a;
41575
+ return {
41576
+ label: (_a = accommodation.name) !== null && _a !== void 0 ? _a : accommodation.code,
41577
+ value: accommodation.code,
41578
+ isChecked: false
41579
+ };
41580
+ });
41581
+ }
41582
+ if (filter.property === 'regime') {
41583
+ var map_5 = new Map();
41584
+ results.forEach(function (r) {
41585
+ var rooms = lodash.flatMap(r.rooms);
41586
+ if (rooms) {
41587
+ rooms.map(function (room) {
41588
+ room.options.map(function (option) {
41589
+ if (option.regimeCode) {
41590
+ map_5.set(option.regimeCode, {
41591
+ name: option.regimeName,
41592
+ code: option.regimeCode
41593
+ });
41594
+ }
41595
+ });
41596
+ });
41597
+ }
41598
+ });
41599
+ updatedFilter.options = Array.from(map_5.values()).map(function (regime) {
41600
+ var _a;
41601
+ return {
41602
+ label: (_a = regime.name) !== null && _a !== void 0 ? _a : regime.code,
41603
+ value: regime.code,
41604
+ isChecked: false
41605
+ };
41606
+ });
41607
+ }
41608
+ return updatedFilter;
41609
+ });
41610
+ };
41519
41611
  var applyFilters = function (results, filters) {
41520
41612
  return results.filter(function (r) {
41521
41613
  return filters.every(function (filter) {
@@ -41581,6 +41673,61 @@ var applyFilters = function (results, filters) {
41581
41673
  });
41582
41674
  });
41583
41675
  };
41676
+ var applyFiltersToPackageAccoResults = function (results, filters) {
41677
+ return results.filter(function (r) {
41678
+ return filters.every(function (filter) {
41679
+ var _a, _b;
41680
+ if (!filter.isFrontendFilter) return true;
41681
+ // ACCOMMODATION
41682
+ if (filter.property === 'accommodation') {
41683
+ var selected_2 =
41684
+ (_a = filter.options) === null || _a === void 0
41685
+ ? void 0
41686
+ : _a
41687
+ .filter(function (o) {
41688
+ return o.isChecked;
41689
+ })
41690
+ .map(function (o) {
41691
+ return o.value;
41692
+ });
41693
+ if (!selected_2 || selected_2.length === 0) return true;
41694
+ var roomOptions = r.rooms.flatMap(function (room) {
41695
+ return room.options;
41696
+ });
41697
+ return roomOptions.some(function (option) {
41698
+ return selected_2.includes(option.accommodationCode);
41699
+ });
41700
+ }
41701
+ // REGIME
41702
+ if (filter.property === 'regime') {
41703
+ var selected_3 =
41704
+ (_b = filter.options) === null || _b === void 0
41705
+ ? void 0
41706
+ : _b
41707
+ .filter(function (o) {
41708
+ return o.isChecked;
41709
+ })
41710
+ .map(function (o) {
41711
+ return o.value;
41712
+ });
41713
+ if (!selected_3 || selected_3.length === 0) return true;
41714
+ var roomOptions = r.rooms.flatMap(function (room) {
41715
+ return room.options;
41716
+ });
41717
+ return roomOptions.some(function (option) {
41718
+ return selected_3.includes(option.regimeCode);
41719
+ });
41720
+ }
41721
+ // PRICE
41722
+ if (filter.property === 'price') {
41723
+ if (filter.selectedMin != null && r.price < filter.selectedMin) return false;
41724
+ if (filter.selectedMax != null && r.price > filter.selectedMax) return false;
41725
+ return true;
41726
+ }
41727
+ return true;
41728
+ });
41729
+ });
41730
+ };
41584
41731
 
41585
41732
  var SearchResultsContainer = function () {
41586
41733
  var _a;
@@ -41678,11 +41825,12 @@ var SearchResultsContainer = function () {
41678
41825
  payload: {
41679
41826
  catalogueIds: (_a = context.tideConnection.catalogueIds) !== null && _a !== void 0 ? _a : [],
41680
41827
  serviceType:
41681
- context.type === exports.PortalQsmType.Accommodation || context.type === exports.PortalQsmType.AccommodationAndFlight
41828
+ context.searchConfiguration.qsmType === exports.PortalQsmType.Accommodation ||
41829
+ context.searchConfiguration.qsmType === exports.PortalQsmType.AccommodationAndFlight
41682
41830
  ? 3
41683
- : context.type === exports.PortalQsmType.Flight
41831
+ : context.searchConfiguration.qsmType === exports.PortalQsmType.Flight
41684
41832
  ? 7
41685
- : context.type === exports.PortalQsmType.RoundTrip
41833
+ : context.searchConfiguration.qsmType === exports.PortalQsmType.RoundTrip
41686
41834
  ? 1
41687
41835
  : 0,
41688
41836
  searchType: 0,
@@ -41752,14 +41900,15 @@ var SearchResultsContainer = function () {
41752
41900
  payload: {
41753
41901
  catalogueIds: (_a = context.tideConnection.catalogueIds) !== null && _a !== void 0 ? _a : [],
41754
41902
  serviceType:
41755
- context.type === exports.PortalQsmType.Accommodation || context.type === exports.PortalQsmType.AccommodationAndFlight
41903
+ context.searchConfiguration.qsmType === exports.PortalQsmType.Accommodation ||
41904
+ context.searchConfiguration.qsmType === exports.PortalQsmType.AccommodationAndFlight
41756
41905
  ? 3
41757
- : context.type === exports.PortalQsmType.Flight
41906
+ : context.searchConfiguration.qsmType === exports.PortalQsmType.Flight
41758
41907
  ? 7
41759
- : context.type === exports.PortalQsmType.RoundTrip
41908
+ : context.searchConfiguration.qsmType === exports.PortalQsmType.RoundTrip
41760
41909
  ? 1
41761
41910
  : undefined,
41762
- searchType: context.type === exports.PortalQsmType.GroupTour ? 1 : 0,
41911
+ searchType: context.searchConfiguration.qsmType === exports.PortalQsmType.GroupTour ? 1 : 0,
41763
41912
  destination: {
41764
41913
  id: Number(destinationId),
41765
41914
  isCountry: destinationIsCountry,
@@ -41772,7 +41921,7 @@ var SearchResultsContainer = function () {
41772
41921
  toDate: to,
41773
41922
  earliestFromOffset: 0,
41774
41923
  latestToOffset: 0,
41775
- includeFlights: context.type === exports.PortalQsmType.AccommodationAndFlight ? true : false,
41924
+ includeFlights: context.searchConfiguration.qsmType === exports.PortalQsmType.AccommodationAndFlight ? true : false,
41776
41925
  // regimeCodes:
41777
41926
  // filters
41778
41927
  // .find((f) => f.property === 'regime')
@@ -41780,7 +41929,8 @@ var SearchResultsContainer = function () {
41780
41929
  // .flatMap((o) => o.value.toString()) || [],
41781
41930
  // minPrice: filters.find((f) => f.property === 'price')?.selectedMin,
41782
41931
  // maxPrice: filters.find((f) => f.property === 'price')?.selectedMax,
41783
- useExactDates: (context === null || context === void 0 ? void 0 : context.type) === exports.PortalQsmType.GroupTour ? false : true,
41932
+ useExactDates:
41933
+ (context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === exports.PortalQsmType.GroupTour ? false : true,
41784
41934
  onlyCachedResults: false,
41785
41935
  includeAllAllotments: true,
41786
41936
  productIds: hotel ? [hotel] : [],
@@ -41846,6 +41996,96 @@ var SearchResultsContainer = function () {
41846
41996
  });
41847
41997
  return requestRooms;
41848
41998
  };
41999
+ var buildPackagingAccommodationRequestFromQueryParams = function (params) {
42000
+ var _a, _b;
42001
+ var from = getDateFromParams(params, 'fromDate');
42002
+ var to = getDateFromParams(params, 'toDate');
42003
+ var rooms = getRoomsFromParams(params, 'rooms');
42004
+ var country = getNumberFromParams(params, 'country');
42005
+ var region = getNumberFromParams(params, 'region');
42006
+ var oord = getNumberFromParams(params, 'oord');
42007
+ var city = getNumberFromParams(params, 'location');
42008
+ var hotel = getNumberFromParams(params, 'hotel');
42009
+ var tagId = getNumberFromParams(params, 'tagId');
42010
+ var agentId = getNumberFromParams(params, 'agentId');
42011
+ if (!from || !to) {
42012
+ console.error('Missing fromDate or toDate in query params, using default values');
42013
+ return null;
42014
+ }
42015
+ if (typeof window !== 'undefined') {
42016
+ window.scrollTo(0, 0);
42017
+ }
42018
+ var destinationId = null;
42019
+ var destinationIsCountry = false;
42020
+ var destinationIsRegion = false;
42021
+ var destinationIsOord = false;
42022
+ var destinationIsLocation = false;
42023
+ if (country) {
42024
+ destinationId = country;
42025
+ destinationIsCountry = true;
42026
+ } else if (region) {
42027
+ destinationId = region;
42028
+ destinationIsRegion = true;
42029
+ } else if (oord) {
42030
+ destinationId = oord;
42031
+ destinationIsOord = true;
42032
+ } else if (city) {
42033
+ destinationId = city;
42034
+ destinationIsLocation = true;
42035
+ }
42036
+ var searchRequest = {
42037
+ officeId: 1,
42038
+ agentId: agentId !== null && agentId !== void 0 ? agentId : null,
42039
+ catalogueId: (_a = context.searchConfiguration.defaultCatalogueId) !== null && _a !== void 0 ? _a : 0,
42040
+ searchConfigurationId: context.searchConfiguration.id,
42041
+ language: (_b = context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB',
42042
+ servicesType: 3, // accommodation
42043
+ fromDate: from,
42044
+ toDate: to,
42045
+ destination: {
42046
+ id: Number(destinationId),
42047
+ isCountry: destinationIsCountry,
42048
+ isRegion: destinationIsRegion,
42049
+ isOord: destinationIsOord,
42050
+ isLocation: destinationIsLocation
42051
+ },
42052
+ productCode: hotel ? hotel.toString() : '',
42053
+ rooms: getPackagingRequestRooms(rooms),
42054
+ tagIds: tagId ? [tagId] : []
42055
+ };
42056
+ console.log('Search request for packaging accommodation from query params', searchRequest);
42057
+ return searchRequest;
42058
+ };
42059
+ var getPackagingRequestRooms = function (rooms) {
42060
+ if (!rooms) {
42061
+ // Fall back to 2 adults
42062
+ var room = { index: 0, travellers: [] };
42063
+ lodash.range(0, 2).forEach(function () {
42064
+ room.travellers.push({
42065
+ age: 30
42066
+ });
42067
+ });
42068
+ return [room];
42069
+ }
42070
+ var requestRooms =
42071
+ rooms === null || rooms === void 0
42072
+ ? void 0
42073
+ : rooms.map(function (x, i) {
42074
+ var room = { index: i, travellers: [] };
42075
+ lodash.range(0, x.adults).forEach(function () {
42076
+ room.travellers.push({
42077
+ age: 30
42078
+ });
42079
+ });
42080
+ x.childAges.forEach(function (x) {
42081
+ room.travellers.push({
42082
+ age: x
42083
+ });
42084
+ });
42085
+ return room;
42086
+ });
42087
+ return requestRooms;
42088
+ };
41849
42089
  React.useEffect(
41850
42090
  function () {
41851
42091
  if (typeof document !== 'undefined') {
@@ -41917,7 +42157,7 @@ var SearchResultsContainer = function () {
41917
42157
  dispatch(setSelectedSearchResult(matching.productId));
41918
42158
  }
41919
42159
  } else {
41920
- if (context.type === exports.PortalQsmType.AccommodationAndFlight) {
42160
+ if (context.searchConfiguration.qsmType === exports.PortalQsmType.AccommodationAndFlight) {
41921
42161
  dispatch(setSelectedSearchResult((_b = packageSearchResults[0]) === null || _b === void 0 ? void 0 : _b.productId));
41922
42162
  }
41923
42163
  }
@@ -41935,14 +42175,71 @@ var SearchResultsContainer = function () {
41935
42175
  });
41936
42176
  });
41937
42177
  };
42178
+ var runHotelSearch = function () {
42179
+ return __awaiter(void 0, void 0, void 0, function () {
42180
+ var config, params, searchRequest, rq, packageAccoSearchResults, enrichedFilters, initialFilteredResults, err_2;
42181
+ var _a;
42182
+ return __generator(this, function (_b) {
42183
+ switch (_b.label) {
42184
+ case 0:
42185
+ dispatch(setIsLoading(true));
42186
+ _b.label = 1;
42187
+ case 1:
42188
+ _b.trys.push([1, 3, , 4]);
42189
+ if (!context) {
42190
+ return [2 /*return*/];
42191
+ }
42192
+ config = {
42193
+ host: context.tideConnection.host,
42194
+ apiKey: context.tideConnection.apiKey
42195
+ };
42196
+ params = new URLSearchParams(location.search);
42197
+ searchRequest = void 0;
42198
+ rq = buildPackagingAccommodationRequestFromQueryParams(params);
42199
+ if (!rq) {
42200
+ throw new Error('Invalid search parameters');
42201
+ }
42202
+ searchRequest = rq;
42203
+ return [4 /*yield*/, build.searchPackagingAccommodations(config, searchRequest)];
42204
+ case 2:
42205
+ packageAccoSearchResults = _b.sent();
42206
+ console.log('package Acco SearchResults', packageAccoSearchResults);
42207
+ enrichedFilters = enrichFiltersWithPackageAccoResults(
42208
+ packageAccoSearchResults,
42209
+ context.filters,
42210
+ (_a = context.tags) !== null && _a !== void 0 ? _a : []
42211
+ );
42212
+ if (!initialFiltersSet) {
42213
+ dispatch(resetFilters(enrichedFilters));
42214
+ setInitialFilters(enrichedFilters);
42215
+ setInitialFiltersSet(true);
42216
+ }
42217
+ dispatch(setPackagingAccoResults(packageAccoSearchResults));
42218
+ initialFilteredResults = applyFiltersToPackageAccoResults(packageAccoSearchResults, filters);
42219
+ dispatch(setFilteredPackagingAccoResults(initialFilteredResults));
42220
+ dispatch(setIsLoading(false));
42221
+ return [3 /*break*/, 4];
42222
+ case 3:
42223
+ err_2 = _b.sent();
42224
+ console.error('Search failed', err_2);
42225
+ dispatch(setIsLoading(false));
42226
+ return [3 /*break*/, 4];
42227
+ case 4:
42228
+ return [2 /*return*/];
42229
+ }
42230
+ });
42231
+ });
42232
+ };
41938
42233
  if (!(context === null || context === void 0 ? void 0 : context.showMockup)) {
41939
42234
  if (
41940
- (context === null || context === void 0 ? void 0 : context.type) === exports.PortalQsmType.AccommodationAndFlight ||
41941
- (context === null || context === void 0 ? void 0 : context.type) === exports.PortalQsmType.Accommodation ||
41942
- (context === null || context === void 0 ? void 0 : context.type) === exports.PortalQsmType.GroupTour
42235
+ (context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === exports.PortalQsmType.AccommodationAndFlight ||
42236
+ (context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === exports.PortalQsmType.GroupTour
41943
42237
  ) {
41944
42238
  runSearch();
41945
42239
  }
42240
+ if ((context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === exports.PortalQsmType.Accommodation) {
42241
+ runHotelSearch();
42242
+ }
41946
42243
  }
41947
42244
  },
41948
42245
  [location.search]
@@ -41952,15 +42249,15 @@ var SearchResultsContainer = function () {
41952
42249
  function () {
41953
42250
  var fetchPackageDetails = function () {
41954
42251
  return __awaiter(void 0, void 0, void 0, function () {
41955
- var config, selectedItem, params, entryId, requestRooms, rooms, detailsRequest, detailsResponse, detailsWLResponse, err_2;
42252
+ var config, selectedItem, params, entryId, requestRooms, rooms, detailsRequest, detailsResponse, detailsWLResponse, err_3;
41956
42253
  var _a, _b;
41957
42254
  return __generator(this, function (_c) {
41958
42255
  switch (_c.label) {
41959
42256
  case 0:
41960
42257
  if (!selectedSearchResultId || !context) return [2 /*return*/];
41961
42258
  if (
41962
- (context === null || context === void 0 ? void 0 : context.type) === exports.PortalQsmType.Accommodation ||
41963
- (context === null || context === void 0 ? void 0 : context.type) === exports.PortalQsmType.GroupTour
42259
+ (context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === exports.PortalQsmType.Accommodation ||
42260
+ (context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === exports.PortalQsmType.GroupTour
41964
42261
  ) {
41965
42262
  handleFlyInToggle(true);
41966
42263
  }
@@ -41996,7 +42293,7 @@ var SearchResultsContainer = function () {
41996
42293
  productCode: selectedItem.code,
41997
42294
  fromDate: selectedItem.fromDate,
41998
42295
  toDate: selectedItem.toDate,
41999
- includeFlights: context.type === exports.PortalQsmType.AccommodationAndFlight ? true : false,
42296
+ includeFlights: context.searchConfiguration.qsmType === exports.PortalQsmType.AccommodationAndFlight ? true : false,
42000
42297
  includeHotels: true,
42001
42298
  includePaxTypes: true,
42002
42299
  checkExternalAvailability: true,
@@ -42039,8 +42336,8 @@ var SearchResultsContainer = function () {
42039
42336
  case 5:
42040
42337
  return [3 /*break*/, 7];
42041
42338
  case 6:
42042
- err_2 = _c.sent();
42043
- console.error('Failed to fetch package details', err_2);
42339
+ err_3 = _c.sent();
42340
+ console.error('Failed to fetch package details', err_3);
42044
42341
  return [3 /*break*/, 7];
42045
42342
  case 7:
42046
42343
  return [2 /*return*/];
@@ -42069,14 +42366,14 @@ var SearchResultsContainer = function () {
42069
42366
  React__default['default'].createElement(
42070
42367
  'div',
42071
42368
  { className: 'search__container' },
42072
- context.type === exports.PortalQsmType.Flight &&
42369
+ context.searchConfiguration.qsmType === exports.PortalQsmType.Flight &&
42073
42370
  React__default['default'].createElement(
42074
42371
  FlightSearchProvider,
42075
42372
  { tideConnection: context.tideConnection },
42076
42373
  React__default['default'].createElement(FlightResultsContainer, { isMobile: isMobile }),
42077
42374
  React__default['default'].createElement(FlyIn, {
42078
42375
  title: 'Select your fare',
42079
- srpType: context.type,
42376
+ srpType: context.searchConfiguration.qsmType,
42080
42377
  isOpen: flyInIsOpen,
42081
42378
  setIsOpen: handleFlyInToggle,
42082
42379
  onPanelRef: function (el) {
@@ -42084,14 +42381,14 @@ var SearchResultsContainer = function () {
42084
42381
  }
42085
42382
  })
42086
42383
  ),
42087
- (context.type === exports.PortalQsmType.AccommodationAndFlight ||
42088
- context.type === exports.PortalQsmType.Accommodation ||
42089
- context.type === exports.PortalQsmType.GroupTour ||
42090
- context.type === exports.PortalQsmType.RoundTrip) &&
42384
+ (context.searchConfiguration.qsmType === exports.PortalQsmType.AccommodationAndFlight ||
42385
+ context.searchConfiguration.qsmType === exports.PortalQsmType.Accommodation ||
42386
+ context.searchConfiguration.qsmType === exports.PortalQsmType.GroupTour ||
42387
+ context.searchConfiguration.qsmType === exports.PortalQsmType.RoundTrip) &&
42091
42388
  React__default['default'].createElement(
42092
42389
  React__default['default'].Fragment,
42093
42390
  null,
42094
- context.type != exports.PortalQsmType.AccommodationAndFlight &&
42391
+ context.searchConfiguration.qsmType != exports.PortalQsmType.AccommodationAndFlight &&
42095
42392
  context.showFilters &&
42096
42393
  React__default['default'].createElement(Filters, {
42097
42394
  initialFilters: initialFilters,
@@ -42103,7 +42400,7 @@ var SearchResultsContainer = function () {
42103
42400
  // handleApplyFilters={() => setSearchTrigger((prev) => prev + 1)}
42104
42401
  isLoading: isLoading
42105
42402
  }),
42106
- context.type === exports.PortalQsmType.AccommodationAndFlight &&
42403
+ context.searchConfiguration.qsmType === exports.PortalQsmType.AccommodationAndFlight &&
42107
42404
  React__default['default'].createElement(Itinerary, {
42108
42405
  isOpen: itineraryOpen,
42109
42406
  handleSetIsOpen: function () {
@@ -42121,7 +42418,7 @@ var SearchResultsContainer = function () {
42121
42418
  React__default['default'].createElement(
42122
42419
  'div',
42123
42420
  { className: 'search__results__actions' },
42124
- context.type != exports.PortalQsmType.AccommodationAndFlight &&
42421
+ context.searchConfiguration.qsmType != exports.PortalQsmType.AccommodationAndFlight &&
42125
42422
  context.showFilters &&
42126
42423
  React__default['default'].createElement(
42127
42424
  'div',
@@ -42134,7 +42431,7 @@ var SearchResultsContainer = function () {
42134
42431
  React__default['default'].createElement(Icon$1, { name: 'ui-filter', className: 'mobile-filters-button__icon', height: 16 }),
42135
42432
  translations.SRP.FILTERS
42136
42433
  ),
42137
- context.type === exports.PortalQsmType.AccommodationAndFlight &&
42434
+ context.searchConfiguration.qsmType === exports.PortalQsmType.AccommodationAndFlight &&
42138
42435
  React__default['default'].createElement(
42139
42436
  'div',
42140
42437
  {
@@ -42194,8 +42491,9 @@ var SearchResultsContainer = function () {
42194
42491
  { className: 'search__results__wrapper' },
42195
42492
  context.showTabViews && React__default['default'].createElement(TabViews, null),
42196
42493
  context.showRoundTripResults && context.showMockup && React__default['default'].createElement(RoundTripResults, null),
42197
- context.type === exports.PortalQsmType.GroupTour && React__default['default'].createElement(GroupTourResults, { isLoading: isLoading }),
42198
- context.type === exports.PortalQsmType.AccommodationAndFlight &&
42494
+ context.searchConfiguration.qsmType === exports.PortalQsmType.GroupTour &&
42495
+ React__default['default'].createElement(GroupTourResults, { isLoading: isLoading }),
42496
+ context.searchConfiguration.qsmType === exports.PortalQsmType.AccommodationAndFlight &&
42199
42497
  context.showFlightResults &&
42200
42498
  (bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.outwardFlights) &&
42201
42499
  React__default['default'].createElement(FlightResults, {
@@ -42203,7 +42501,7 @@ var SearchResultsContainer = function () {
42203
42501
  isDeparture: true
42204
42502
  }),
42205
42503
  context.showHotelAccommodationResults && React__default['default'].createElement(HotelAccommodationResults, { isLoading: isLoading }),
42206
- context.type === exports.PortalQsmType.AccommodationAndFlight &&
42504
+ context.searchConfiguration.qsmType === exports.PortalQsmType.AccommodationAndFlight &&
42207
42505
  context.showFlightResults &&
42208
42506
  (bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.returnFlights) &&
42209
42507
  React__default['default'].createElement(FlightResults, {
@@ -42214,7 +42512,7 @@ var SearchResultsContainer = function () {
42214
42512
  ),
42215
42513
  React__default['default'].createElement(FlyIn, {
42216
42514
  title: ''.concat(translations.SRP.SELECT, ' ').concat(translations.SRP.ACCOMMODATION),
42217
- srpType: context.type,
42515
+ srpType: context.searchConfiguration.qsmType,
42218
42516
  isOpen: flyInIsOpen,
42219
42517
  setIsOpen: handleFlyInToggle,
42220
42518
  onPanelRef: function (el) {