@qite/tide-booking-component 1.4.101 → 1.4.103

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 (45) hide show
  1. package/build/build-cjs/index.js +998 -451
  2. package/build/build-cjs/src/index.d.ts +3 -1
  3. package/build/build-cjs/src/search-results/components/flight/flight-selection/independent-flight-option.d.ts +3 -0
  4. package/build/build-cjs/src/search-results/store/search-results-slice.d.ts +8 -1
  5. package/build/build-cjs/src/search-results/types.d.ts +3 -1
  6. package/build/build-cjs/src/search-results/utils/flight-utils.d.ts +1 -0
  7. package/build/build-cjs/src/shared/utils/localization-util.d.ts +2 -0
  8. package/build/build-esm/index.js +998 -445
  9. package/build/build-esm/src/index.d.ts +3 -1
  10. package/build/build-esm/src/search-results/components/flight/flight-selection/independent-flight-option.d.ts +3 -0
  11. package/build/build-esm/src/search-results/store/search-results-slice.d.ts +8 -1
  12. package/build/build-esm/src/search-results/types.d.ts +3 -1
  13. package/build/build-esm/src/search-results/utils/flight-utils.d.ts +1 -0
  14. package/build/build-esm/src/shared/utils/localization-util.d.ts +2 -0
  15. package/package.json +2 -2
  16. package/src/index.ts +3 -1
  17. package/src/search-results/components/flight/flight-selection/independent-flight-option.tsx +30 -9
  18. package/src/search-results/components/flight/flight-selection/independent-flight-selection.tsx +2 -6
  19. package/src/search-results/components/hotel/hotel-accommodation-results.tsx +11 -12
  20. package/src/search-results/components/icon.tsx +1 -1
  21. package/src/search-results/components/itinerary/index.tsx +0 -2
  22. package/src/search-results/components/search-results-container/search-results-container.tsx +695 -83
  23. package/src/search-results/store/search-results-slice.ts +20 -1
  24. package/src/search-results/types.ts +3 -1
  25. package/src/search-results/utils/flight-utils.ts +5 -0
  26. package/src/shared/components/flyin/accommodation-flyin.tsx +4 -2
  27. package/src/shared/translations/ar-SA.json +2 -0
  28. package/src/shared/translations/da-DK.json +2 -0
  29. package/src/shared/translations/de-DE.json +2 -0
  30. package/src/shared/translations/en-GB.json +2 -0
  31. package/src/shared/translations/es-ES.json +2 -0
  32. package/src/shared/translations/fr-BE.json +2 -0
  33. package/src/shared/translations/fr-FR.json +2 -0
  34. package/src/shared/translations/is-IS.json +2 -0
  35. package/src/shared/translations/it-IT.json +2 -0
  36. package/src/shared/translations/ja-JP.json +2 -0
  37. package/src/shared/translations/nl-BE.json +2 -0
  38. package/src/shared/translations/nl-NL.json +2 -0
  39. package/src/shared/translations/no-NO.json +2 -0
  40. package/src/shared/translations/pl-PL.json +2 -0
  41. package/src/shared/translations/pt-PT.json +2 -0
  42. package/src/shared/translations/sv-SE.json +2 -0
  43. package/src/shared/utils/localization-util.ts +5 -2
  44. package/styles/components/_flight-option.scss +14 -1
  45. package/styles/components/_search.scss +5 -0
@@ -579,6 +579,8 @@ var QSM$g = {
579
579
  GROUP_TOUR: 'جولة جماعية'
580
580
  };
581
581
  var SRP$f = {
582
+ SHOW_MORE: 'عرض المزيد',
583
+ SHOW_LESS: 'عرض أقل',
582
584
  NO_RESULTS: 'لم يتم العثور على نتائج.',
583
585
  TOTAL_RESULTS_LABEL: 'تم العثور على باقات',
584
586
  RESET: 'إعادة تعيين',
@@ -983,6 +985,8 @@ var QSM$f = {
983
985
  GROUP_TOUR: 'Grupperejse'
984
986
  };
985
987
  var SRP$e = {
988
+ SHOW_MORE: 'Vis flere',
989
+ SHOW_LESS: 'Vis færre',
986
990
  NO_RESULTS: 'Ingen resultater fundet.',
987
991
  TOTAL_RESULTS_LABEL: 'Fundne pakker',
988
992
  RESET: 'Nulstil',
@@ -1388,6 +1392,8 @@ var QSM$e = {
1388
1392
  GROUP_TOUR: 'Gruppentour'
1389
1393
  };
1390
1394
  var SRP$d = {
1395
+ SHOW_MORE: 'Mehr anzeigen',
1396
+ SHOW_LESS: 'Weniger anzeigen',
1391
1397
  NO_RESULTS: 'Keine Ergebnisse gefunden.',
1392
1398
  TOTAL_RESULTS_LABEL: 'Gefundene Pakete',
1393
1399
  RESET: 'Zurücksetzen',
@@ -1796,6 +1802,8 @@ var QSM$d = {
1796
1802
  GROUP_TOUR: 'Group tour'
1797
1803
  };
1798
1804
  var SRP$c = {
1805
+ SHOW_MORE: 'Show more',
1806
+ SHOW_LESS: 'Show less',
1799
1807
  NO_RESULTS: 'No results found.',
1800
1808
  TOTAL_RESULTS_LABEL: 'Packages found',
1801
1809
  RESET: 'Reset',
@@ -2201,6 +2209,8 @@ var QSM$c = {
2201
2209
  GROUP_TOUR: 'Tour grupal'
2202
2210
  };
2203
2211
  var SRP$b = {
2212
+ SHOW_MORE: 'Mostrar más',
2213
+ SHOW_LESS: 'Mostrar menos',
2204
2214
  NO_RESULTS: 'No se han encontrado resultados.',
2205
2215
  TOTAL_RESULTS_LABEL: 'Paquetes encontrados',
2206
2216
  RESET: 'Restablecer',
@@ -2610,6 +2620,8 @@ var QSM$b = {
2610
2620
  GROUP_TOUR: 'Tour en groupe'
2611
2621
  };
2612
2622
  var SRP$a = {
2623
+ SHOW_MORE: 'Afficher plus',
2624
+ SHOW_LESS: 'Afficher moins',
2613
2625
  NO_RESULTS: 'Aucun résultat trouvé.',
2614
2626
  TOTAL_RESULTS_LABEL: 'Forfaits trouvés',
2615
2627
  RESET: 'Réinitialiser',
@@ -3014,6 +3026,8 @@ var QSM$a = {
3014
3026
  GROUP_TOUR: 'Tour en groupe'
3015
3027
  };
3016
3028
  var SRP$9 = {
3029
+ SHOW_MORE: 'Afficher plus',
3030
+ SHOW_LESS: 'Afficher moins',
3017
3031
  NO_RESULTS: 'Aucun résultat trouvé.',
3018
3032
  TOTAL_RESULTS_LABEL: 'Forfaits trouvés',
3019
3033
  RESET: 'Réinitialiser',
@@ -3418,6 +3432,8 @@ var QSM$9 = {
3418
3432
  GROUP_TOUR: 'Ferð í hóp'
3419
3433
  };
3420
3434
  var SRP$8 = {
3435
+ SHOW_MORE: 'Sýna meira',
3436
+ SHOW_LESS: 'Sýna minna',
3421
3437
  NO_RESULTS: 'Engar niðurstöður fundust.',
3422
3438
  TOTAL_RESULTS_LABEL: 'Fundnar pakkar',
3423
3439
  RESET: 'Endurstilla',
@@ -3823,6 +3839,8 @@ var QSM$8 = {
3823
3839
  GROUP_TOUR: 'Tour di gruppo'
3824
3840
  };
3825
3841
  var SRP$7 = {
3842
+ SHOW_MORE: 'Mostra di più',
3843
+ SHOW_LESS: 'Mostra di meno',
3826
3844
  NO_RESULTS: 'Nessun risultato trovato.',
3827
3845
  TOTAL_RESULTS_LABEL: 'Pacchetti trovati',
3828
3846
  RESET: 'Reimposta',
@@ -4232,6 +4250,8 @@ var QSM$7 = {
4232
4250
  GROUP_TOUR: 'Groepsreis'
4233
4251
  };
4234
4252
  var SRP$6 = {
4253
+ SHOW_MORE: 'Toon meer',
4254
+ SHOW_LESS: 'Toon minder',
4235
4255
  NO_RESULTS: 'Geen resultaten gevonden.',
4236
4256
  TOTAL_RESULTS_LABEL: 'Gevonden pakketten',
4237
4257
  RESET: 'Resetten',
@@ -4637,6 +4657,8 @@ var QSM$6 = {
4637
4657
  GROUP_TOUR: 'Groepsreis'
4638
4658
  };
4639
4659
  var SRP$5 = {
4660
+ SHOW_MORE: 'Toon meer',
4661
+ SHOW_LESS: 'Toon minder',
4640
4662
  NO_RESULTS: 'Geen resultaten gevonden.',
4641
4663
  TOTAL_RESULTS_LABEL: 'Gevonden pakketten',
4642
4664
  RESET: 'Resetten',
@@ -5042,6 +5064,8 @@ var QSM$5 = {
5042
5064
  GROUP_TOUR: 'Gruppetur'
5043
5065
  };
5044
5066
  var SRP$4 = {
5067
+ SHOW_MORE: 'Vis mer',
5068
+ SHOW_LESS: 'Vis mindre',
5045
5069
  NO_RESULTS: 'Ingen resultater funnet.',
5046
5070
  TOTAL_RESULTS_LABEL: 'Fant pakker',
5047
5071
  RESET: 'Tilbakestill',
@@ -5447,6 +5471,8 @@ var QSM$4 = {
5447
5471
  GROUP_TOUR: 'Tour w grupie'
5448
5472
  };
5449
5473
  var SRP$3 = {
5474
+ SHOW_MORE: 'Pokaż więcej',
5475
+ SHOW_LESS: 'Pokaż mniej',
5450
5476
  NO_RESULTS: 'Nie znaleziono wyników.',
5451
5477
  TOTAL_RESULTS_LABEL: 'Znalezione pakiety',
5452
5478
  RESET: 'Resetuj',
@@ -5852,6 +5878,8 @@ var QSM$3 = {
5852
5878
  GROUP_TOUR: 'Tour em grupo'
5853
5879
  };
5854
5880
  var SRP$2 = {
5881
+ SHOW_MORE: 'Mostrar mais',
5882
+ SHOW_LESS: 'Mostrar menos',
5855
5883
  NO_RESULTS: 'Nenhum resultado encontrado.',
5856
5884
  TOTAL_RESULTS_LABEL: 'Pacotes encontrados',
5857
5885
  RESET: 'Redefinir',
@@ -6257,6 +6285,8 @@ var QSM$2 = {
6257
6285
  GROUP_TOUR: 'Gruppresa'
6258
6286
  };
6259
6287
  var SRP$1 = {
6288
+ SHOW_MORE: 'Visa mer',
6289
+ SHOW_LESS: 'Visa mindre',
6260
6290
  NO_RESULTS: 'Inga resultat hittades.',
6261
6291
  TOTAL_RESULTS_LABEL: 'Hittade paket',
6262
6292
  RESET: 'Återställ',
@@ -6660,6 +6690,8 @@ var QSM$1 = {
6660
6690
  GROUP_TOUR: 'グループツアー'
6661
6691
  };
6662
6692
  var SRP = {
6693
+ SHOW_MORE: 'もっと見る',
6694
+ SHOW_LESS: '閉じる',
6663
6695
  NO_RESULTS: '結果が見つかりませんでした。',
6664
6696
  TOTAL_RESULTS_LABEL: '見つかったパッケージ',
6665
6697
  RESET: 'リセット',
@@ -6866,8 +6898,8 @@ var timeFromDateTime = function (dateTime) {
6866
6898
  return '';
6867
6899
  }
6868
6900
  var date = new Date(dateTime);
6869
- var hours = date.getHours();
6870
- var minutes = date.getMinutes();
6901
+ var hours = date.getUTCHours();
6902
+ var minutes = date.getUTCMinutes();
6871
6903
  return ''
6872
6904
  .concat(hours, ':')
6873
6905
  .concat(minutes < 10 ? '0' : '')
@@ -13417,6 +13449,7 @@ PERFORMANCE OF THIS SOFTWARE.
13417
13449
  var ENDPOINT = '/api/web/packaging';
13418
13450
  var ENDPOINT_START_TRANSACTION = ENDPOINT + '/start';
13419
13451
  var ENDPOINT_ACCOMMODATIONS = ENDPOINT + '/accommodations';
13452
+ var ENDPOINT_FLIGHTS = ENDPOINT + '/flights';
13420
13453
  var ENDPOINT_PRICE_DETAILS = ENDPOINT + '/price-details';
13421
13454
  var ENDPOINT_ITINERARY = ENDPOINT + '/itinerary';
13422
13455
  var ENDPOINT_ENTRY = function (magicLinkCode) {
@@ -13433,6 +13466,12 @@ PERFORMANCE OF THIS SOFTWARE.
13433
13466
  var body = JSON.stringify(request);
13434
13467
  return post(url, apiKey, body, config.token, signal, true);
13435
13468
  };
13469
+ var searchPackagingFlights = function (config, request, signal) {
13470
+ var url = '' + config.host + ENDPOINT_FLIGHTS;
13471
+ var apiKey = config.apiKey;
13472
+ var body = JSON.stringify(request);
13473
+ return post(url, apiKey, body, config.token, signal, true);
13474
+ };
13436
13475
  var getEntry = function (config, magicLinkCode, signal) {
13437
13476
  var apiKey = config.apiKey;
13438
13477
  var url = '' + config.host + ENDPOINT_ENTRY(magicLinkCode);
@@ -13524,6 +13563,7 @@ PERFORMANCE OF THIS SOFTWARE.
13524
13563
  exports.searchLocations = searchLocations;
13525
13564
  exports.searchOords = searchOords;
13526
13565
  exports.searchPackagingAccommodations = searchPackagingAccommodations;
13566
+ exports.searchPackagingFlights = searchPackagingFlights;
13527
13567
  exports.searchRegions = searchRegions;
13528
13568
  exports.searchWithErrorMapping = searchWithErrorMapping;
13529
13569
  exports.setCustomEntryStatus = setCustomEntryStatus;
@@ -20511,7 +20551,7 @@ var getFlightDetails = function (flight) {
20511
20551
  arrivalDate: lastLine.arrivalDate,
20512
20552
  arrivalTime: lastLine.arrivalTime,
20513
20553
  arrivalAirport: lastLine.arrivalAirportDescription,
20514
- travelDuration: formatDuration$1(flight.flightMetaData.durationInTicks),
20554
+ travelDuration: formatDuration(flight.flightMetaData.durationInTicks),
20515
20555
  travelDurationMinutes: minutesFromTicks(flight.flightMetaData.durationInTicks),
20516
20556
  changeDurationMinutes: getTotalChangeDuration(flight),
20517
20557
  numberOfStops: flight.flightMetaData.flightLines.length - 1,
@@ -20527,7 +20567,7 @@ var getFlightDetails = function (flight) {
20527
20567
  arrivalTime: x.arrivalTime,
20528
20568
  arrivalAirport: x.arrivalAirportDescription,
20529
20569
  number: ''.concat(x.airlineCode, ' ').concat(x.number),
20530
- travelDuration: formatDuration$1(x.durationInTicks),
20570
+ travelDuration: formatDuration(x.durationInTicks),
20531
20571
  waitDuration: waitDurations.length - 1 <= i ? waitDurations[i] : undefined
20532
20572
  };
20533
20573
  })
@@ -20603,7 +20643,7 @@ var minutesFromTicks = function (ticks) {
20603
20643
  var totalSeconds = ticks / 10000000;
20604
20644
  return Math.floor(totalSeconds / 60);
20605
20645
  };
20606
- var formatDuration$1 = function (ticks) {
20646
+ var formatDuration = function (ticks) {
20607
20647
  if (!ticks) return '';
20608
20648
  var totalSeconds = ticks / 10000000;
20609
20649
  var hh = Math.floor(totalSeconds / 3600);
@@ -33816,10 +33856,13 @@ var initialState$1 = {
33816
33856
  filteredPackagingAccoResults: [],
33817
33857
  packagingAccoSearchDetails: [],
33818
33858
  selectedPackagingAccoResultCode: null,
33859
+ packagingFlightResults: [],
33860
+ selectedPackagingFlight: null,
33819
33861
  selectedFlight: null,
33820
33862
  selectedFlightDetails: null,
33821
33863
  bookingPackageDetails: null,
33822
33864
  isLoading: false,
33865
+ flightsLoading: false,
33823
33866
  filters: [],
33824
33867
  selectedSortType: null,
33825
33868
  activeTab: 'compact',
@@ -33856,6 +33899,12 @@ var searchResultsSlice = toolkit.createSlice({
33856
33899
  setSelectedPackagingAccoResult: function (state, action) {
33857
33900
  state.selectedPackagingAccoResultCode = action.payload;
33858
33901
  },
33902
+ setPackagingFlightResults: function (state, action) {
33903
+ state.packagingFlightResults = action.payload;
33904
+ },
33905
+ setSelectedPackagingFlight: function (state, action) {
33906
+ state.selectedPackagingFlight = action.payload;
33907
+ },
33859
33908
  setSelectedFlight: function (state, action) {
33860
33909
  state.selectedFlight = action.payload;
33861
33910
  },
@@ -33878,6 +33927,9 @@ var searchResultsSlice = toolkit.createSlice({
33878
33927
  setIsLoading: function (state, action) {
33879
33928
  state.isLoading = action.payload;
33880
33929
  },
33930
+ setFlightsLoading: function (state, action) {
33931
+ state.flightsLoading = action.payload;
33932
+ },
33881
33933
  setFilters: function (state, action) {
33882
33934
  var updatedFilters = action.payload;
33883
33935
  updatedFilters.forEach(function (updatedFilter) {
@@ -33938,11 +33990,14 @@ var setResults = ((_a = searchResultsSlice.actions), _a.setResults),
33938
33990
  setFilteredPackagingAccoResults = _a.setFilteredPackagingAccoResults,
33939
33991
  setPackagingAccoSearchDetails = _a.setPackagingAccoSearchDetails,
33940
33992
  setSelectedPackagingAccoResult = _a.setSelectedPackagingAccoResult,
33993
+ setPackagingFlightResults = _a.setPackagingFlightResults,
33994
+ setSelectedPackagingFlight = _a.setSelectedPackagingFlight,
33941
33995
  setSelectedFlight = _a.setSelectedFlight,
33942
33996
  setSelectedFlightDetails = _a.setSelectedFlightDetails,
33943
- setBookingPackageDetails = _a.setBookingPackageDetails,
33944
- selectFlight = _a.selectFlight,
33945
- setIsLoading = _a.setIsLoading,
33997
+ setBookingPackageDetails = _a.setBookingPackageDetails;
33998
+ _a.selectFlight;
33999
+ var setIsLoading = _a.setIsLoading,
34000
+ setFlightsLoading = _a.setFlightsLoading,
33946
34001
  setFilters = _a.setFilters,
33947
34002
  resetFilters = _a.resetFilters,
33948
34003
  setSortType = _a.setSortType,
@@ -34219,7 +34274,7 @@ var Icon$1 = function (_a) {
34219
34274
  title && React__default['default'].createElement('title', null, title),
34220
34275
  React__default['default'].createElement('path', {
34221
34276
  d: 'M32 32c17.7 0 32 14.3 32 32l0 256 224 0 0-160c0-17.7 14.3-32 32-32l224 0c53 0 96 43 96 96l0 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-224 0-32 0L64 416l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 64C0 46.3 14.3 32 32 32zm144 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160z',
34222
- fill: 'currentColor'
34277
+ fill: fill !== null && fill !== void 0 ? fill : 'currentColor'
34223
34278
  })
34224
34279
  );
34225
34280
  case 'ui-utensils':
@@ -35314,8 +35369,6 @@ var Itinerary = function (_a) {
35314
35369
  segments: segments
35315
35370
  };
35316
35371
  });
35317
- console.log('otherSegments', otherSegments);
35318
- console.log('groupedOtherSegments', groupedOtherSegments);
35319
35372
  var numberOfPax = ((_p = packagingEntry.pax) === null || _p === void 0 ? void 0 : _p.length) || 1;
35320
35373
  var totalPrice = (priceDetails === null || priceDetails === void 0 ? void 0 : priceDetails.total) || packagingEntry.price || 0;
35321
35374
  var pricePerPerson = totalPrice / numberOfPax;
@@ -36899,6 +36952,14 @@ var Icon = function (_a) {
36899
36952
  }
36900
36953
  };
36901
36954
 
36955
+ var getFlightKey = function (segments) {
36956
+ if (!segments || segments.length === 0) return '';
36957
+ return segments
36958
+ .map(function (s) {
36959
+ return ''.concat(s.marketingAirlineCode).concat(s.flightNumber, '_').concat(s.departureDateTime);
36960
+ })
36961
+ .join('_');
36962
+ };
36902
36963
  // export const getAirportName = (airport: TideAirport | undefined, language: string): string => {
36903
36964
  // if (!airport || !airport.name) {
36904
36965
  // return "";
@@ -38459,13 +38520,11 @@ var FlightsFlyIn = function (_a) {
38459
38520
  };
38460
38521
 
38461
38522
  var formatPrice$1 = function (price, currencyCode) {
38462
- if (currencyCode === void 0) {
38463
- currencyCode = 'EUR';
38464
- }
38465
38523
  if (typeof price !== 'number') return '';
38524
+ var safeCurrency = currencyCode !== null && currencyCode !== void 0 ? currencyCode : 'EUR';
38466
38525
  return new Intl.NumberFormat('nl-BE', {
38467
38526
  style: 'currency',
38468
- currency: currencyCode
38527
+ currency: safeCurrency
38469
38528
  }).format(price);
38470
38529
  };
38471
38530
  var AccommodationFlyIn = function (_a) {
@@ -43672,16 +43731,6 @@ var HotelAccommodationResults = function (_a) {
43672
43731
  : firstPackagingResult.fromDate;
43673
43732
  var firstResultDay = firstResultDate ? dateFns.format(dateFns.parseISO(firstResultDate), 'd') : null;
43674
43733
  var firstResultMonth = firstResultDate ? dateFns.format(dateFns.parseISO(firstResultDate), 'MMM') : null;
43675
- if (isLoading) {
43676
- return React__default['default'].createElement(
43677
- React__default['default'].Fragment,
43678
- null,
43679
- (_c = context.customSpinner) !== null && _c !== void 0 ? _c : React__default['default'].createElement(Spinner, null)
43680
- );
43681
- }
43682
- if (mappedResults.length === 0) {
43683
- return React__default['default'].createElement('div', { className: 'no-results' }, translations.SRP.NO_RESULTS);
43684
- }
43685
43734
  return React__default['default'].createElement(
43686
43735
  React__default['default'].Fragment,
43687
43736
  null,
@@ -43691,8 +43740,14 @@ var HotelAccommodationResults = function (_a) {
43691
43740
  React__default['default'].createElement(
43692
43741
  'div',
43693
43742
  { className: 'search__results__label__date' },
43694
- React__default['default'].createElement('p', { className: 'search__results__label__date-date' }, firstResultDay),
43695
- React__default['default'].createElement('p', null, firstResultMonth)
43743
+ firstResultDay && firstResultMonth
43744
+ ? React__default['default'].createElement(
43745
+ React__default['default'].Fragment,
43746
+ null,
43747
+ React__default['default'].createElement('p', { className: 'search__results__label__date-date' }, firstResultDay),
43748
+ React__default['default'].createElement('p', null, firstResultMonth)
43749
+ )
43750
+ : React__default['default'].createElement(Icon$1, { name: 'ui-bed', height: 16, fill: 'white' })
43696
43751
  ),
43697
43752
  React__default['default'].createElement(
43698
43753
  'div',
@@ -43706,7 +43761,14 @@ var HotelAccommodationResults = function (_a) {
43706
43761
  )
43707
43762
  )
43708
43763
  ),
43709
- renderHotelResults(mappedResults, context, activeTab, translations)
43764
+ isLoading
43765
+ ? React__default['default'].createElement(
43766
+ React__default['default'].Fragment,
43767
+ null,
43768
+ (_c = context.customSpinner) !== null && _c !== void 0 ? _c : React__default['default'].createElement(Spinner, null)
43769
+ )
43770
+ : renderHotelResults(mappedResults, context, activeTab, translations),
43771
+ mappedResults.length === 0 && !isLoading && React__default['default'].createElement('div', { className: 'no-results' }, translations.SRP.NO_RESULTS)
43710
43772
  );
43711
43773
  };
43712
43774
 
@@ -44138,266 +44200,6 @@ var RoundTripResults = function () {
44138
44200
  );
44139
44201
  };
44140
44202
 
44141
- var ticksToMinutes = function (ticks) {
44142
- return Math.floor(ticks / 600000000);
44143
- };
44144
- var formatDuration = function (ticks) {
44145
- var minutes = ticksToMinutes(ticks);
44146
- var h = Math.floor(minutes / 60);
44147
- var m = minutes % 60;
44148
- return ''.concat(h, 'h ').concat(m, 'm');
44149
- };
44150
- var FlightResults = function (_a) {
44151
- var _b;
44152
- var flights = _a.flights,
44153
- isDeparture = _a.isDeparture;
44154
- var context = React.useContext(SearchResultsConfigurationContext);
44155
- var translations = getTranslations((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
44156
- var dispatch = reactRedux.useDispatch();
44157
- var _c = React.useState(null),
44158
- activeDetailId = _c[0],
44159
- setActiveDetailId = _c[1];
44160
- var handleDetailClick = function (flightOptionId) {
44161
- setActiveDetailId(function (prev) {
44162
- return prev === flightOptionId ? null : flightOptionId;
44163
- });
44164
- };
44165
- var firstResult = flights === null || flights === void 0 ? void 0 : flights[0];
44166
- var firstResultDate = (firstResult === null || firstResult === void 0 ? void 0 : firstResult.startDateTime)
44167
- ? dateFns.parseISO(firstResult.startDateTime)
44168
- : null;
44169
- return React__default['default'].createElement(
44170
- React__default['default'].Fragment,
44171
- null,
44172
- React__default['default'].createElement(
44173
- 'div',
44174
- { className: 'search__results__label' },
44175
- React__default['default'].createElement(
44176
- 'div',
44177
- { className: 'search__results__label__date' },
44178
- firstResultDate &&
44179
- React__default['default'].createElement(
44180
- React__default['default'].Fragment,
44181
- null,
44182
- React__default['default'].createElement('p', { className: 'search__results__label__date-date' }, dateFns.format(firstResultDate, 'd')),
44183
- React__default['default'].createElement('p', null, dateFns.format(firstResultDate, 'MMM'))
44184
- )
44185
- ),
44186
- React__default['default'].createElement(
44187
- 'div',
44188
- { className: 'search__results__label__text' },
44189
- React__default['default'].createElement(
44190
- 'h3',
44191
- null,
44192
- translations.SRP.SELECT,
44193
- ' ',
44194
- React__default['default'].createElement('strong', null, isDeparture ? translations.SRP.DEPARTURE : translations.SRP.RETURN)
44195
- )
44196
- )
44197
- ),
44198
- flights &&
44199
- flights.length > 0 &&
44200
- React__default['default'].createElement(
44201
- 'div',
44202
- { className: 'search__results__cards search__results__cards--extended' },
44203
- flights.map(function (flight, index) {
44204
- var lines = flight.flightMetaData.flightLines;
44205
- var firstLine = lines[0];
44206
- var lastLine = lines[lines.length - 1];
44207
- var stops = lines.length - 1;
44208
- return React__default['default'].createElement(
44209
- 'div',
44210
- { className: 'flight', key: 'flight-'.concat(flight.flightId, '-').concat(index) },
44211
- React__default['default'].createElement(
44212
- 'div',
44213
- { className: 'flight__option' },
44214
- React__default['default'].createElement(
44215
- 'div',
44216
- { className: 'flight__content' },
44217
- React__default['default'].createElement(
44218
- 'div',
44219
- { className: 'flight__flights' },
44220
- React__default['default'].createElement(
44221
- 'div',
44222
- { className: 'flight__flight' },
44223
- React__default['default'].createElement(
44224
- 'div',
44225
- { className: 'flight__flight__header' },
44226
- React__default['default'].createElement('div', { className: 'flight__status__container' }),
44227
- React__default['default'].createElement(
44228
- 'div',
44229
- { className: 'flight__price' },
44230
- React__default['default'].createElement('span', { className: 'price' }, '\u20AC ', flight.price.toFixed(2)),
44231
- React__default['default'].createElement(
44232
- 'button',
44233
- {
44234
- type: 'button',
44235
- className: 'cta '.concat(flight.isSelected ? 'cta--selected' : 'cta--select'),
44236
- onClick: function () {
44237
- return dispatch(selectFlight({ flightOptionId: flight.flightOptionId, isDeparture: !!isDeparture }));
44238
- }
44239
- },
44240
- flight.isSelected ? 'Selected' : 'Select'
44241
- )
44242
- )
44243
- )
44244
- ),
44245
- React__default['default'].createElement(
44246
- 'div',
44247
- { className: 'flight__flight' },
44248
- React__default['default'].createElement(
44249
- 'div',
44250
- { className: 'flight__flight__container' },
44251
- React__default['default'].createElement(
44252
- 'div',
44253
- { className: 'flight__flight__wrapper' },
44254
- React__default['default'].createElement(
44255
- 'div',
44256
- { className: 'flight__logo__wrapper' },
44257
- React__default['default'].createElement('img', {
44258
- src: 'https://media.tidesoftware.be/media/shared/Airlines/'.concat(firstLine.airlineCode, '.png?height=256'),
44259
- alt: flight.airlineDescription,
44260
- className: 'flight__logo'
44261
- }),
44262
- React__default['default'].createElement('span', null, flight.airlineDescription)
44263
- ),
44264
- React__default['default'].createElement(
44265
- 'div',
44266
- { className: 'flight__info' },
44267
- React__default['default'].createElement(
44268
- 'div',
44269
- { className: 'flight__info__times' },
44270
- React__default['default'].createElement('strong', null, firstLine.departureTime, ' ', firstLine.departureAirport),
44271
- React__default['default'].createElement('p', null, dateFns.format(dateFns.parseISO(firstLine.departureDate), 'EEE dd MMM yyyy'))
44272
- ),
44273
- React__default['default'].createElement(
44274
- 'div',
44275
- { className: 'flight__info__duration' },
44276
- React__default['default'].createElement('p', null, formatDuration(flight.flightMetaData.durationInTicks)),
44277
- React__default['default'].createElement(
44278
- 'div',
44279
- { className: 'flight__info__duration__stops' },
44280
- stops > 0 && React__default['default'].createElement('div', { className: 'flight__info__duration__stop' })
44281
- ),
44282
- React__default['default'].createElement(
44283
- 'span',
44284
- null,
44285
- stops === 0
44286
- ? translations.SRP.DIRECT
44287
- : ''
44288
- .concat(stops, ' ')
44289
- .concat(translations.SRP.STOP)
44290
- .concat(stops > 1 ? 's' : '')
44291
- )
44292
- ),
44293
- React__default['default'].createElement(
44294
- 'div',
44295
- { className: 'flight__info__times flight__info__times--arrival' },
44296
- React__default['default'].createElement('strong', null, lastLine.arrivalTime, ' ', lastLine.arrivalAirport),
44297
- React__default['default'].createElement('p', null, dateFns.format(dateFns.parseISO(lastLine.arrivalDate), 'EEE dd MMM yyyy'))
44298
- )
44299
- )
44300
- ),
44301
- React__default['default'].createElement(
44302
- 'div',
44303
- { className: 'flight__detail__btn__wrapper' },
44304
- React__default['default'].createElement(
44305
- 'div',
44306
- {
44307
- className: 'flight__detail__btn '.concat(activeDetailId === flight.flightOptionId ? 'flight__detail__btn--active' : ''),
44308
- onClick: function () {
44309
- return handleDetailClick(flight.flightOptionId);
44310
- }
44311
- },
44312
- React__default['default'].createElement(Icon$1, {
44313
- name: 'ui-chevron',
44314
- className: 'flight__detail__btn__arrow',
44315
- width: 16,
44316
- height: 16
44317
- })
44318
- )
44319
- )
44320
- ),
44321
- React__default['default'].createElement(
44322
- 'div',
44323
- { className: 'flight__detail '.concat(activeDetailId === flight.flightOptionId ? 'flight__detail--active' : '') },
44324
- lines.map(function (line, index) {
44325
- var nextLine = lines[index + 1];
44326
- return React__default['default'].createElement(
44327
- React__default['default'].Fragment,
44328
- { key: index },
44329
- React__default['default'].createElement(
44330
- 'div',
44331
- { className: 'flight__info' },
44332
- React__default['default'].createElement(
44333
- 'div',
44334
- { className: 'flight__info__times__wrapper' },
44335
- React__default['default'].createElement(
44336
- 'div',
44337
- { className: 'flight__info__times' },
44338
- React__default['default'].createElement('p', null, line.departureTime),
44339
- React__default['default'].createElement('strong', null, line.departureAirport),
44340
- React__default['default'].createElement('p', null, dateFns.format(dateFns.parseISO(line.departureDate), 'EEE dd MMM yyyy'))
44341
- ),
44342
- React__default['default'].createElement(Icon$1, { name: 'ui-plane-depart', width: 30, height: 20 })
44343
- ),
44344
- React__default['default'].createElement(
44345
- 'div',
44346
- { className: 'flight__info__duration' },
44347
- React__default['default'].createElement('p', null, formatDuration(line.durationInTicks)),
44348
- React__default['default'].createElement('span', null, line.airline, ' ', line.number)
44349
- ),
44350
- React__default['default'].createElement(
44351
- 'div',
44352
- { className: 'flight__info__times__wrapper flight__info__times__wrapper--arrival' },
44353
- React__default['default'].createElement(Icon$1, { name: 'ui-plane-arrive', width: 30, height: 20 }),
44354
- React__default['default'].createElement(
44355
- 'div',
44356
- { className: 'flight__info__times flight__info__times--arrival' },
44357
- React__default['default'].createElement('p', null, line.arrivalTime),
44358
- React__default['default'].createElement('strong', null, line.arrivalAirport),
44359
- React__default['default'].createElement('p', null, dateFns.format(dateFns.parseISO(line.arrivalDate), 'EEE dd MMM yyyy'))
44360
- )
44361
- )
44362
- ),
44363
- nextLine &&
44364
- React__default['default'].createElement(
44365
- 'div',
44366
- { className: 'flight__info' },
44367
- React__default['default'].createElement(
44368
- 'div',
44369
- { className: 'flight__info__duration flight__info__duration--waittime' },
44370
- React__default['default'].createElement(
44371
- 'div',
44372
- { className: 'flight__info__duration__stops flight__info__duration__stops--stoptime' },
44373
- React__default['default'].createElement(Icon$1, { name: 'ui-clock', width: 24, height: 24 })
44374
- ),
44375
- React__default['default'].createElement(
44376
- 'div',
44377
- { className: 'flight__info__duration__stoptime' },
44378
- React__default['default'].createElement('span', null, translations.SRP.STOP_TIME),
44379
- React__default['default'].createElement(
44380
- 'strong',
44381
- null,
44382
- formatDuration(dateFns.parseISO(nextLine.departureDate).getTime() - dateFns.parseISO(line.arrivalDate).getTime())
44383
- )
44384
- )
44385
- )
44386
- )
44387
- );
44388
- })
44389
- )
44390
- )
44391
- ),
44392
- React__default['default'].createElement('div', { className: 'flight__rate' })
44393
- )
44394
- )
44395
- );
44396
- })
44397
- )
44398
- );
44399
- };
44400
-
44401
44203
  var PairedFlightOption = function (_a) {
44402
44204
  var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
44403
44205
  var item = _a.item;
@@ -44862,25 +44664,28 @@ var PairedFlightSelection = function (_a) {
44862
44664
  };
44863
44665
 
44864
44666
  var IndependentFlightOption = function (_a) {
44865
- var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
44667
+ var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
44866
44668
  var item = _a.item,
44867
44669
  onSelect = _a.onSelect,
44868
44670
  guid = _a.guid,
44869
- selectedGuid = _a.selectedGuid;
44870
- _a.isOutward;
44871
- reactRedux.useDispatch();
44671
+ selectedGuid = _a.selectedGuid,
44672
+ isOutward = _a.isOutward,
44673
+ showSelectedState = _a.showSelectedState,
44674
+ currentSelectedPrice = _a.currentSelectedPrice,
44675
+ price = _a.price;
44872
44676
  var context = React.useContext(SearchResultsConfigurationContext);
44873
44677
  var language = (_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB';
44874
44678
  var translations = getTranslations(language);
44875
- var _m = React.useState(false),
44876
- detailsOpen = _m[0],
44877
- setDetailsOpen = _m[1];
44679
+ var _p = React.useState(false),
44680
+ detailsOpen = _p[0],
44681
+ setDetailsOpen = _p[1];
44682
+ var priceDifference = price && currentSelectedPrice ? price - currentSelectedPrice : null;
44878
44683
  return React__default['default'].createElement(
44879
44684
  'div',
44880
44685
  { className: 'search__result-card', key: 'flight-'.concat(item.code) },
44881
44686
  React__default['default'].createElement(
44882
44687
  'div',
44883
- { className: 'flight' },
44688
+ { className: 'flight '.concat(showSelectedState && selectedGuid === guid ? 'flight--selected' : '') },
44884
44689
  React__default['default'].createElement(
44885
44690
  'div',
44886
44691
  { className: 'flight__option' },
@@ -44900,6 +44705,33 @@ var IndependentFlightOption = function (_a) {
44900
44705
  React__default['default'].createElement(
44901
44706
  'div',
44902
44707
  { className: 'flight__price' },
44708
+ price != null &&
44709
+ price > 0 &&
44710
+ (isOutward
44711
+ ? React__default['default'].createElement(
44712
+ 'span',
44713
+ { className: 'price' },
44714
+ translations.QSM.ROUNDTRIP + ' ' + translations.SRP.PRICE,
44715
+ '\u00A0',
44716
+ formatPrice$2(
44717
+ price,
44718
+ 'EUR',
44719
+ (_c = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _c !== void 0 ? _c : 'en-GB'
44720
+ )
44721
+ )
44722
+ : priceDifference != null &&
44723
+ Math.abs(priceDifference) > 0 &&
44724
+ React__default['default'].createElement(
44725
+ 'span',
44726
+ { className: 'price' },
44727
+ priceDifference > 0 ? '+' : '-',
44728
+ '\u00A0',
44729
+ formatPrice$2(
44730
+ Math.abs(priceDifference),
44731
+ 'EUR',
44732
+ (_d = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _d !== void 0 ? _d : 'en-GB'
44733
+ )
44734
+ )),
44903
44735
  React__default['default'].createElement(
44904
44736
  'button',
44905
44737
  {
@@ -44928,7 +44760,7 @@ var IndependentFlightOption = function (_a) {
44928
44760
  { className: 'flight__logo__wrapper' },
44929
44761
  React__default['default'].createElement('img', {
44930
44762
  src: 'https://media.tidesoftware.be/media/shared/Airlines/'.concat(
44931
- (_c = getDepartureSegment(item)) === null || _c === void 0 ? void 0 : _c.marketingAirlineCode,
44763
+ (_e = getDepartureSegment(item)) === null || _e === void 0 ? void 0 : _e.marketingAirlineCode,
44932
44764
  '.png?height=256'
44933
44765
  ),
44934
44766
  alt: '',
@@ -44937,7 +44769,7 @@ var IndependentFlightOption = function (_a) {
44937
44769
  React__default['default'].createElement(
44938
44770
  'span',
44939
44771
  null,
44940
- (_d = getDepartureSegment(item)) === null || _d === void 0 ? void 0 : _d.marketingAirlineName
44772
+ (_f = getDepartureSegment(item)) === null || _f === void 0 ? void 0 : _f.marketingAirlineName
44941
44773
  )
44942
44774
  ),
44943
44775
  React__default['default'].createElement(
@@ -44949,14 +44781,14 @@ var IndependentFlightOption = function (_a) {
44949
44781
  React__default['default'].createElement(
44950
44782
  'strong',
44951
44783
  null,
44952
- timeFromDateTime((_e = getDepartureSegment(item)) === null || _e === void 0 ? void 0 : _e.departureDateTime),
44784
+ timeFromDateTime((_g = getDepartureSegment(item)) === null || _g === void 0 ? void 0 : _g.departureDateTime),
44953
44785
  ' ',
44954
- (_f = getDepartureSegment(item)) === null || _f === void 0 ? void 0 : _f.departureAirportCode
44786
+ (_h = getDepartureSegment(item)) === null || _h === void 0 ? void 0 : _h.departureAirportCode
44955
44787
  ),
44956
44788
  React__default['default'].createElement(
44957
44789
  'p',
44958
44790
  null,
44959
- longFormatDate((_g = getDepartureSegment(item)) === null || _g === void 0 ? void 0 : _g.departureDateTime, language)
44791
+ longFormatDate((_j = getDepartureSegment(item)) === null || _j === void 0 ? void 0 : _j.departureDateTime, language)
44960
44792
  )
44961
44793
  ),
44962
44794
  React__default['default'].createElement(
@@ -44980,14 +44812,14 @@ var IndependentFlightOption = function (_a) {
44980
44812
  React__default['default'].createElement(
44981
44813
  'strong',
44982
44814
  null,
44983
- timeFromDateTime((_h = getArrivalSegment(item)) === null || _h === void 0 ? void 0 : _h.arrivalDateTime),
44815
+ timeFromDateTime((_k = getArrivalSegment(item)) === null || _k === void 0 ? void 0 : _k.arrivalDateTime),
44984
44816
  ' ',
44985
- (_j = getArrivalSegment(item)) === null || _j === void 0 ? void 0 : _j.arrivalAirportCode
44817
+ (_l = getArrivalSegment(item)) === null || _l === void 0 ? void 0 : _l.arrivalAirportCode
44986
44818
  ),
44987
44819
  React__default['default'].createElement(
44988
44820
  'p',
44989
44821
  null,
44990
- longFormatDate((_k = getArrivalSegment(item)) === null || _k === void 0 ? void 0 : _k.arrivalDateTime, language)
44822
+ longFormatDate((_m = getArrivalSegment(item)) === null || _m === void 0 ? void 0 : _m.arrivalDateTime, language)
44991
44823
  )
44992
44824
  )
44993
44825
  )
@@ -45012,9 +44844,9 @@ var IndependentFlightOption = function (_a) {
45012
44844
  React__default['default'].createElement(
45013
44845
  'div',
45014
44846
  { className: 'flight__detail '.concat(detailsOpen ? 'flight__detail--active' : '') },
45015
- (_l = getFlightSegments(item)) === null || _l === void 0
44847
+ (_o = getFlightSegments(item)) === null || _o === void 0
45016
44848
  ? void 0
45017
- : _l.map(function (segment, index) {
44849
+ : _o.map(function (segment, index) {
45018
44850
  return React__default['default'].createElement(
45019
44851
  React__default['default'].Fragment,
45020
44852
  { key: 'outward-segment-'.concat(index, '-').concat(segment.flightNumber) },
@@ -45095,14 +44927,6 @@ var IndependentFlightOption = function (_a) {
45095
44927
  );
45096
44928
  };
45097
44929
 
45098
- var getFlightKey = function (segments) {
45099
- if (!segments || segments.length === 0) return '';
45100
- return segments
45101
- .map(function (s) {
45102
- return ''.concat(s.marketingAirlineCode).concat(s.flightNumber, '_').concat(s.departureDateTime);
45103
- })
45104
- .join('_');
45105
- };
45106
44930
  var IndependentFlightSelection = function (_a) {
45107
44931
  var _b;
45108
44932
  var searchResults = _a.searchResults;
@@ -47458,9 +47282,10 @@ var SearchResultsContainer = function () {
47458
47282
  results = _c.results,
47459
47283
  filteredResults = _c.filteredResults,
47460
47284
  packagingAccoResults = _c.packagingAccoResults,
47461
- filteredPackagingAccoResults = _c.filteredPackagingAccoResults,
47462
- bookingPackageDetails = _c.bookingPackageDetails,
47463
- isLoading = _c.isLoading,
47285
+ filteredPackagingAccoResults = _c.filteredPackagingAccoResults;
47286
+ _c.bookingPackageDetails;
47287
+ var isLoading = _c.isLoading,
47288
+ flightsLoading = _c.flightsLoading,
47464
47289
  filters = _c.filters,
47465
47290
  selectedSortType = _c.selectedSortType,
47466
47291
  selectedSearchResult = _c.selectedSearchResult,
@@ -47470,7 +47295,8 @@ var SearchResultsContainer = function () {
47470
47295
  editablePackagingEntry = _c.editablePackagingEntry,
47471
47296
  transactionId = _c.transactionId,
47472
47297
  accommodationFlyInStep = _c.accommodationFlyInStep,
47473
- itinerary = _c.itinerary;
47298
+ itinerary = _c.itinerary,
47299
+ packagingFlightResults = _c.packagingFlightResults;
47474
47300
  var isMobile = useMediaQuery('(max-width: 1200px)');
47475
47301
  var _d = React.useState(false),
47476
47302
  initialFiltersSet = _d[0],
@@ -47496,6 +47322,10 @@ var SearchResultsContainer = function () {
47496
47322
  var _l = React.useState(null),
47497
47323
  selectedAccommodationSeed = _l[0],
47498
47324
  setSelectedAccommodationSeed = _l[1];
47325
+ var skipInitialPackagingAccoDetailsRef = React.useRef(false);
47326
+ var _m = React.useState(false),
47327
+ showAllOutwardFlights = _m[0],
47328
+ setShowAllOutwardFlights = _m[1];
47499
47329
  var panelRef = React.useRef(null);
47500
47330
  var sortByTypes = [
47501
47331
  { direction: 'asc', label: 'default' },
@@ -47607,7 +47437,7 @@ var SearchResultsContainer = function () {
47607
47437
  };
47608
47438
  };
47609
47439
  var buildPackagingAccommodationRequestFromSeed = function (seed, currentTransactionId) {
47610
- var _a, _b, _c, _d;
47440
+ var _a, _b, _c, _d, _e, _f;
47611
47441
  var country = seed.country;
47612
47442
  var region = seed.region;
47613
47443
  var oord = seed.oord;
@@ -47643,11 +47473,15 @@ var SearchResultsContainer = function () {
47643
47473
  }
47644
47474
  return {
47645
47475
  transactionId: currentTransactionId,
47646
- officeId: 1,
47647
- agentId: (_b = context === null || context === void 0 ? void 0 : context.agentId) !== null && _b !== void 0 ? _b : null,
47648
- catalogueId: (_c = context.searchConfiguration.defaultCatalogueId) !== null && _c !== void 0 ? _c : 0,
47476
+ officeId:
47477
+ (_c = (_b = context === null || context === void 0 ? void 0 : context.tideConnection) === null || _b === void 0 ? void 0 : _b.officeId) !== null &&
47478
+ _c !== void 0
47479
+ ? _c
47480
+ : 1,
47481
+ agentId: (_d = context === null || context === void 0 ? void 0 : context.agentId) !== null && _d !== void 0 ? _d : null,
47482
+ catalogueId: (_e = context.searchConfiguration.defaultCatalogueId) !== null && _e !== void 0 ? _e : 0,
47649
47483
  searchConfigurationId: context.searchConfiguration.id,
47650
- language: (_d = context.languageCode) !== null && _d !== void 0 ? _d : 'en-GB',
47484
+ language: (_f = context.languageCode) !== null && _f !== void 0 ? _f : 'en-GB',
47651
47485
  serviceType: ACCOMMODATION_SERVICE_TYPE,
47652
47486
  fromDate: seed.fromDate,
47653
47487
  toDate: seed.toDate,
@@ -47665,6 +47499,75 @@ var SearchResultsContainer = function () {
47665
47499
  tagIds: tagId ? [tagId] : []
47666
47500
  };
47667
47501
  };
47502
+ var buildPackagingFlightRequestFromSeed = function (seed, currentTransactionId) {
47503
+ var _a, _b, _c, _d;
47504
+ if (typeof window !== 'undefined') {
47505
+ window.scrollTo(0, 0);
47506
+ }
47507
+ var adults = seed.rooms
47508
+ .flatMap(function (x) {
47509
+ return x.pax;
47510
+ })
47511
+ .filter(function (x) {
47512
+ return x.age >= 18;
47513
+ }).length;
47514
+ var kids = seed.rooms
47515
+ .flatMap(function (x) {
47516
+ return x.pax;
47517
+ })
47518
+ .filter(function (x) {
47519
+ return x.age >= 2 && x.age < 18;
47520
+ }).length;
47521
+ var babies = seed.rooms
47522
+ .flatMap(function (x) {
47523
+ return x.pax;
47524
+ })
47525
+ .filter(function (x) {
47526
+ return x.age < 2;
47527
+ }).length;
47528
+ return {
47529
+ transactionId: currentTransactionId,
47530
+ officeId:
47531
+ (_b = (_a = context === null || context === void 0 ? void 0 : context.tideConnection) === null || _a === void 0 ? void 0 : _a.officeId) !== null &&
47532
+ _b !== void 0
47533
+ ? _b
47534
+ : 1,
47535
+ catalogueId:
47536
+ (_d = lodash.first(
47537
+ (_c = context === null || context === void 0 ? void 0 : context.tideConnection) === null || _c === void 0 ? void 0 : _c.catalogueIds
47538
+ )) !== null && _d !== void 0
47539
+ ? _d
47540
+ : 0,
47541
+ departureAirportCode: seed.departureAirport,
47542
+ arrivalAirportCode: seed.destinationAirport,
47543
+ returnAirportCode: seed.returnAirport,
47544
+ luggageIncluded: null,
47545
+ maxStops: null,
47546
+ travelClass: seed.travelClass,
47547
+ pax: lodash.concat(
47548
+ Array.from({ length: adults !== null && adults !== void 0 ? adults : 0 }, function (_, index) {
47549
+ return {
47550
+ id: index,
47551
+ age: 31
47552
+ };
47553
+ }),
47554
+ Array.from({ length: kids !== null && kids !== void 0 ? kids : 0 }, function (_, index) {
47555
+ return {
47556
+ id: index + (adults !== null && adults !== void 0 ? adults : 0),
47557
+ age: 8
47558
+ };
47559
+ }),
47560
+ Array.from({ length: babies !== null && babies !== void 0 ? babies : 0 }, function (_, index) {
47561
+ return {
47562
+ id: index + (adults !== null && adults !== void 0 ? adults : 0) + (kids !== null && kids !== void 0 ? kids : 0),
47563
+ age: 1
47564
+ };
47565
+ })
47566
+ ),
47567
+ outward: seed.fromDate ? { date: dateToDateStruct(new Date(seed.fromDate)) } : null,
47568
+ return: seed.toDate ? { date: dateToDateStruct(new Date(seed.toDate)) } : null
47569
+ };
47570
+ };
47668
47571
  var buildSearchSeedFromQueryParams = function (params) {
47669
47572
  var from = getDateFromParams(params, 'fromDate');
47670
47573
  var to = getDateFromParams(params, 'toDate');
@@ -47677,6 +47580,8 @@ var SearchResultsContainer = function () {
47677
47580
  var tagId = getNumberFromParams(params, 'tagId');
47678
47581
  var destinationAirport = getStringFromParams(params, 'destinationAirport');
47679
47582
  var departureAirport = getStringFromParams(params, 'departureAirport');
47583
+ var travelClass = getStringFromParams(params, 'travelClass');
47584
+ var nationality = getStringFromParams(params, 'nationality');
47680
47585
  if (!from || !to) {
47681
47586
  return null;
47682
47587
  }
@@ -47692,9 +47597,66 @@ var SearchResultsContainer = function () {
47692
47597
  tagId: tagId,
47693
47598
  destinationAirport: destinationAirport,
47694
47599
  departureAirport: departureAirport,
47600
+ travelClass: travelClass,
47601
+ nationality: nationality,
47695
47602
  rooms: getRequestRooms(rooms)
47696
47603
  };
47697
47604
  };
47605
+ var buildSearchSeedFromAccommodationSegments = function (entry, segments) {
47606
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
47607
+ if (!(segments === null || segments === void 0 ? void 0 : segments.length)) return null;
47608
+ var sortedSegments = __spreadArray([], segments, true).sort(function (a, b) {
47609
+ return new Date(a.from).getTime() - new Date(b.from).getTime();
47610
+ });
47611
+ var firstSegment = lodash.first(sortedSegments);
47612
+ var lastSegment = lodash.last(sortedSegments);
47613
+ if (!firstSegment || !lastSegment) return null;
47614
+ return {
47615
+ fromDate: toDateOnlyString(firstSegment.from),
47616
+ toDate: toDateOnlyString(lastSegment.to),
47617
+ country: (_b = (_a = firstSegment.country) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : null,
47618
+ region: (_d = (_c = firstSegment.region) === null || _c === void 0 ? void 0 : _c.id) !== null && _d !== void 0 ? _d : null,
47619
+ oord: (_f = (_e = firstSegment.oord) === null || _e === void 0 ? void 0 : _e.id) !== null && _f !== void 0 ? _f : null,
47620
+ location: (_h = (_g = firstSegment.location) === null || _g === void 0 ? void 0 : _g.id) !== null && _h !== void 0 ? _h : null,
47621
+ hotel: parseHotelId(firstSegment),
47622
+ hotelCode: (_j = firstSegment.productCode) !== null && _j !== void 0 ? _j : null,
47623
+ tagId: null,
47624
+ destinationAirport: getDestinationAirportFromEntry((_k = entry.lines) !== null && _k !== void 0 ? _k : []),
47625
+ departureAirport: getDepartureAirportFromEntry((_l = entry.lines) !== null && _l !== void 0 ? _l : []),
47626
+ rooms: getRequestRoomsFromPackagingSegments(entry, sortedSegments)
47627
+ };
47628
+ };
47629
+ var handleEditAccommodation = function (segments) {
47630
+ return __awaiter(void 0, void 0, void 0, function () {
47631
+ var sourceEntry, seed, currentTransactionId;
47632
+ return __generator(this, function (_a) {
47633
+ switch (_a.label) {
47634
+ case 0:
47635
+ sourceEntry =
47636
+ editablePackagingEntry !== null && editablePackagingEntry !== void 0
47637
+ ? editablePackagingEntry
47638
+ : context === null || context === void 0
47639
+ ? void 0
47640
+ : context.packagingEntry;
47641
+ if (!sourceEntry) return [2 /*return*/];
47642
+ seed = buildSearchSeedFromAccommodationSegments(sourceEntry, segments);
47643
+ if (!seed) return [2 /*return*/];
47644
+ setDetailsIsLoading(true);
47645
+ setSelectedAccommodationSeed(seed);
47646
+ dispatch(setAccommodationFlyInStep('results'));
47647
+ handleFlyInToggle(true);
47648
+ return [4 /*yield*/, getOrCreateTransactionId()];
47649
+ case 1:
47650
+ currentTransactionId = _a.sent();
47651
+ return [4 /*yield*/, runAccommodationFlow(seed, currentTransactionId !== null && currentTransactionId !== void 0 ? currentTransactionId : '')];
47652
+ case 2:
47653
+ _a.sent();
47654
+ setDetailsIsLoading(false);
47655
+ return [2 /*return*/];
47656
+ }
47657
+ });
47658
+ });
47659
+ };
47698
47660
  var handleConfirmHotelSwap = function () {
47699
47661
  var updatedEntry = swapHotelInPackagingEntry();
47700
47662
  if (!updatedEntry) return;
@@ -47795,6 +47757,25 @@ var SearchResultsContainer = function () {
47795
47757
  },
47796
47758
  [filtersOpen]
47797
47759
  );
47760
+ var getOrCreateTransactionId = function () {
47761
+ return __awaiter(void 0, void 0, void 0, function () {
47762
+ var _a;
47763
+ return __generator(this, function (_b) {
47764
+ switch (_b.label) {
47765
+ case 0:
47766
+ if ((_a = context === null || context === void 0 ? void 0 : context.packagingEntry) === null || _a === void 0 ? void 0 : _a.transactionId) {
47767
+ return [2 /*return*/, context.packagingEntry.transactionId];
47768
+ }
47769
+ if (transactionId) {
47770
+ return [2 /*return*/, transactionId];
47771
+ }
47772
+ return [4 /*yield*/, runStartTransaction()];
47773
+ case 1:
47774
+ return [2 /*return*/, _b.sent()];
47775
+ }
47776
+ });
47777
+ });
47778
+ };
47798
47779
  var runSearch = function () {
47799
47780
  return __awaiter(void 0, void 0, void 0, function () {
47800
47781
  var config, seed, searchRequest, packageSearchResults, enrichedFilters, initialFilteredResults, err_1;
@@ -47853,6 +47834,7 @@ var SearchResultsContainer = function () {
47853
47834
  case 0:
47854
47835
  _a.trys.push([0, 2, , 3]);
47855
47836
  if (!context) return [2 /*return*/, null];
47837
+ dispatch(setIsLoading(true));
47856
47838
  config = {
47857
47839
  host: context.tideConnection.host,
47858
47840
  apiKey: context.tideConnection.apiKey
@@ -47860,12 +47842,13 @@ var SearchResultsContainer = function () {
47860
47842
  return [4 /*yield*/, build.startTransaction(config)];
47861
47843
  case 1:
47862
47844
  transaction = _a.sent();
47863
- console.log('Transaction started', transaction);
47864
47845
  dispatch(setTransactionId(transaction.transactionId));
47846
+ dispatch(setIsLoading(false));
47865
47847
  return [2 /*return*/, transaction.transactionId];
47866
47848
  case 2:
47867
47849
  err_2 = _a.sent();
47868
47850
  console.error('Transaction failed', err_2);
47851
+ dispatch(setIsLoading(false));
47869
47852
  return [2 /*return*/, null];
47870
47853
  case 3:
47871
47854
  return [2 /*return*/];
@@ -47876,11 +47859,11 @@ var SearchResultsContainer = function () {
47876
47859
  var runHotelSearch = function (currentTransactionId, seed) {
47877
47860
  return __awaiter(void 0, void 0, void 0, function () {
47878
47861
  var config, searchRequest, packageAccoSearchResults, enrichedFilters, initialFilteredResults, err_3;
47879
- var _a;
47880
- return __generator(this, function (_b) {
47881
- switch (_b.label) {
47862
+ var _a, _b, _c;
47863
+ return __generator(this, function (_d) {
47864
+ switch (_d.label) {
47882
47865
  case 0:
47883
- _b.trys.push([0, 2, , 3]);
47866
+ _d.trys.push([0, 2, , 3]);
47884
47867
  if (!context) return [2 /*return*/];
47885
47868
  dispatch(setIsLoading(true));
47886
47869
  config = {
@@ -47892,7 +47875,7 @@ var SearchResultsContainer = function () {
47892
47875
  searchRequest.agentId = context.agentId;
47893
47876
  return [4 /*yield*/, build.searchPackagingAccommodations(config, searchRequest)];
47894
47877
  case 1:
47895
- packageAccoSearchResults = _b.sent();
47878
+ packageAccoSearchResults = _d.sent();
47896
47879
  enrichedFilters = enrichFiltersWithPackageAccoResults(
47897
47880
  packageAccoSearchResults,
47898
47881
  context.filters,
@@ -47906,11 +47889,19 @@ var SearchResultsContainer = function () {
47906
47889
  dispatch(setPackagingAccoResults(packageAccoSearchResults));
47907
47890
  initialFilteredResults = applyFiltersToPackageAccoResults(packageAccoSearchResults, filters, null);
47908
47891
  dispatch(setFilteredPackagingAccoResults(initialFilteredResults));
47892
+ if (initialFilteredResults.length > 0) {
47893
+ skipInitialPackagingAccoDetailsRef.current = true;
47894
+ dispatch(
47895
+ setSelectedPackagingAccoResult(
47896
+ (_c = (_b = lodash.first(initialFilteredResults)) === null || _b === void 0 ? void 0 : _b.code) !== null && _c !== void 0 ? _c : null
47897
+ )
47898
+ );
47899
+ }
47909
47900
  dispatch(setIsLoading(false));
47910
47901
  return [3 /*break*/, 3];
47911
47902
  case 2:
47912
- err_3 = _b.sent();
47913
- console.error('Search failed', err_3);
47903
+ err_3 = _d.sent();
47904
+ console.error('HotelSearch failed', err_3);
47914
47905
  dispatch(setIsLoading(false));
47915
47906
  return [3 /*break*/, 3];
47916
47907
  case 3:
@@ -47919,31 +47910,66 @@ var SearchResultsContainer = function () {
47919
47910
  });
47920
47911
  });
47921
47912
  };
47922
- var runAccommodationFlow = function (seed) {
47913
+ var runAccommodationFlow = function (seed, currentTransactionId) {
47923
47914
  return __awaiter(void 0, void 0, void 0, function () {
47924
- var currentTransactionId;
47925
- var _a;
47926
- return __generator(this, function (_b) {
47927
- switch (_b.label) {
47915
+ return __generator(this, function (_a) {
47916
+ switch (_a.label) {
47928
47917
  case 0:
47929
47918
  if (!context || context.showMockup) return [2 /*return*/];
47930
- currentTransactionId =
47931
- ((_a = context === null || context === void 0 ? void 0 : context.packagingEntry) === null || _a === void 0 ? void 0 : _a.transactionId) ||
47932
- transactionId;
47933
- if (!!currentTransactionId) return [3 /*break*/, 2];
47934
- dispatch(setIsLoading(true));
47935
- return [4 /*yield*/, runStartTransaction()];
47919
+ return [4 /*yield*/, runHotelSearch(currentTransactionId, seed)];
47936
47920
  case 1:
47937
- currentTransactionId = _b.sent();
47938
- _b.label = 2;
47939
- case 2:
47940
- if (!currentTransactionId) {
47941
- dispatch(setIsLoading(false));
47942
- return [2 /*return*/];
47921
+ _a.sent();
47922
+ return [2 /*return*/];
47923
+ }
47924
+ });
47925
+ });
47926
+ };
47927
+ var runFlightSearch = function (currentTransactionId, seed) {
47928
+ return __awaiter(void 0, void 0, void 0, function () {
47929
+ var config, searchRequest, packageFlightSearchResults, firstResult, err_4;
47930
+ return __generator(this, function (_a) {
47931
+ switch (_a.label) {
47932
+ case 0:
47933
+ _a.trys.push([0, 2, , 3]);
47934
+ if (!context) return [2 /*return*/];
47935
+ dispatch(setFlightsLoading(true));
47936
+ config = {
47937
+ host: context.tideConnection.host,
47938
+ apiKey: context.tideConnection.apiKey
47939
+ };
47940
+ searchRequest = buildPackagingFlightRequestFromSeed(seed, currentTransactionId);
47941
+ searchRequest.agentId = context.agentId;
47942
+ return [4 /*yield*/, build.searchPackagingFlights(config, searchRequest)];
47943
+ case 1:
47944
+ packageFlightSearchResults = _a.sent();
47945
+ dispatch(setPackagingFlightResults(packageFlightSearchResults));
47946
+ firstResult = lodash.first(packageFlightSearchResults);
47947
+ if (firstResult) {
47948
+ setSelectedOutwardKey(getFlightKey(firstResult.outward.segments));
47949
+ setSelectedReturnKey(getFlightKey(firstResult.return.segments));
47943
47950
  }
47944
- return [4 /*yield*/, runHotelSearch(currentTransactionId, seed)];
47951
+ dispatch(setFlightsLoading(false));
47952
+ return [3 /*break*/, 3];
47953
+ case 2:
47954
+ err_4 = _a.sent();
47955
+ console.error('FlightSearch failed', err_4);
47956
+ dispatch(setFlightsLoading(false));
47957
+ return [3 /*break*/, 3];
47945
47958
  case 3:
47946
- _b.sent();
47959
+ return [2 /*return*/];
47960
+ }
47961
+ });
47962
+ });
47963
+ };
47964
+ var runFlightFlow = function (seed, currentTransactionId) {
47965
+ return __awaiter(void 0, void 0, void 0, function () {
47966
+ return __generator(this, function (_a) {
47967
+ switch (_a.label) {
47968
+ case 0:
47969
+ if (!context || context.showMockup) return [2 /*return*/];
47970
+ return [4 /*yield*/, runFlightSearch(currentTransactionId, seed)];
47971
+ case 1:
47972
+ _a.sent();
47947
47973
  return [2 /*return*/];
47948
47974
  }
47949
47975
  });
@@ -47960,20 +47986,60 @@ var SearchResultsContainer = function () {
47960
47986
  runSearch();
47961
47987
  }
47962
47988
  if ((context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.Accommodation) {
47963
- var seed = activeSearchSeed;
47964
- if (seed) {
47965
- runAccommodationFlow(seed);
47989
+ var seed_1 = activeSearchSeed;
47990
+ if (seed_1) {
47991
+ (function () {
47992
+ return __awaiter(void 0, void 0, void 0, function () {
47993
+ var transactionId;
47994
+ return __generator(this, function (_a) {
47995
+ switch (_a.label) {
47996
+ case 0:
47997
+ return [4 /*yield*/, getOrCreateTransactionId()];
47998
+ case 1:
47999
+ transactionId = _a.sent();
48000
+ if (!transactionId) return [2 /*return*/];
48001
+ return [4 /*yield*/, runAccommodationFlow(seed_1, transactionId)];
48002
+ case 2:
48003
+ _a.sent();
48004
+ return [2 /*return*/];
48005
+ }
48006
+ });
48007
+ });
48008
+ })();
47966
48009
  }
47967
48010
  }
47968
48011
  if (
47969
48012
  (context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.AccommodationAndFlight &&
47970
48013
  context.searchConfiguration.enableManualPackaging &&
47971
- context.searchConfiguration.allowAccommodations &&
47972
48014
  !(context === null || context === void 0 ? void 0 : context.packagingEntry)
47973
48015
  ) {
47974
- var seed = activeSearchSeed;
47975
- if (seed) {
47976
- runAccommodationFlow(seed);
48016
+ var seed_2 = activeSearchSeed;
48017
+ if (seed_2) {
48018
+ (function () {
48019
+ return __awaiter(void 0, void 0, void 0, function () {
48020
+ var sharedTransactionId, tasks;
48021
+ return __generator(this, function (_a) {
48022
+ switch (_a.label) {
48023
+ case 0:
48024
+ return [4 /*yield*/, getOrCreateTransactionId()];
48025
+ case 1:
48026
+ sharedTransactionId = _a.sent();
48027
+ if (!sharedTransactionId) return [2 /*return*/];
48028
+ tasks = [];
48029
+ if (context.searchConfiguration.allowAccommodations) {
48030
+ tasks.push(runAccommodationFlow(seed_2, sharedTransactionId));
48031
+ }
48032
+ if (context.searchConfiguration.allowFlights) {
48033
+ tasks.push(runFlightFlow(seed_2, sharedTransactionId));
48034
+ }
48035
+ return [4 /*yield*/, Promise.all(tasks)];
48036
+ case 2:
48037
+ _a.sent();
48038
+ return [2 /*return*/];
48039
+ }
48040
+ });
48041
+ });
48042
+ })();
47977
48043
  }
47978
48044
  }
47979
48045
  },
@@ -47990,7 +48056,6 @@ var SearchResultsContainer = function () {
47990
48056
  React.useEffect(
47991
48057
  function () {
47992
48058
  if (context === null || context === void 0 ? void 0 : context.packagingEntry) {
47993
- console.log('original packaging entry from context', context.packagingEntry);
47994
48059
  dispatch(setEditablePackagingEntry(structuredClone(context.packagingEntry)));
47995
48060
  dispatch(setTransactionId(context.packagingEntry.transactionId));
47996
48061
  }
@@ -48002,7 +48067,7 @@ var SearchResultsContainer = function () {
48002
48067
  function () {
48003
48068
  var fetchDetails = function () {
48004
48069
  return __awaiter(void 0, void 0, void 0, function () {
48005
- var config, selectedItem, requestRooms, seed, detailsRequest, detailsResponse, err_4;
48070
+ var config, selectedItem, requestRooms, seed, detailsRequest, detailsResponse, err_5;
48006
48071
  var _a;
48007
48072
  return __generator(this, function (_b) {
48008
48073
  switch (_b.label) {
@@ -48065,8 +48130,8 @@ var SearchResultsContainer = function () {
48065
48130
  setDetailsIsLoading(false);
48066
48131
  return [3 /*break*/, 4];
48067
48132
  case 3:
48068
- err_4 = _b.sent();
48069
- console.error('Failed to fetch package details', err_4);
48133
+ err_5 = _b.sent();
48134
+ console.error('Failed to fetch package details', err_5);
48070
48135
  setDetailsIsLoading(false);
48071
48136
  return [3 /*break*/, 4];
48072
48137
  case 4:
@@ -48091,12 +48156,16 @@ var SearchResultsContainer = function () {
48091
48156
  destinationIsAirport,
48092
48157
  detailSearchRequest,
48093
48158
  packageAccoSearchDetails,
48094
- err_5;
48159
+ err_6;
48095
48160
  var _a, _b, _c, _d, _e;
48096
48161
  return __generator(this, function (_f) {
48097
48162
  switch (_f.label) {
48098
48163
  case 0:
48099
48164
  if (!selectedPackagingAccoResultCode || !context) return [2 /*return*/];
48165
+ if (skipInitialPackagingAccoDetailsRef.current) {
48166
+ skipInitialPackagingAccoDetailsRef.current = false;
48167
+ return [2 /*return*/];
48168
+ }
48100
48169
  setDetailsIsLoading(true);
48101
48170
  if (
48102
48171
  (context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.Accommodation ||
@@ -48179,8 +48248,8 @@ var SearchResultsContainer = function () {
48179
48248
  setDetailsIsLoading(false);
48180
48249
  return [3 /*break*/, 4];
48181
48250
  case 3:
48182
- err_5 = _f.sent();
48183
- console.error('Failed to fetch package details', err_5);
48251
+ err_6 = _f.sent();
48252
+ console.error('Failed to fetch package details', err_6);
48184
48253
  setDetailsIsLoading(false);
48185
48254
  return [3 /*break*/, 4];
48186
48255
  case 4:
@@ -48217,84 +48286,40 @@ var SearchResultsContainer = function () {
48217
48286
  },
48218
48287
  [activeSearchSeed]
48219
48288
  );
48220
- var handleEditAccommodation = function (segments) {
48221
- return __awaiter(void 0, void 0, void 0, function () {
48222
- var sourceEntry, seed;
48223
- return __generator(this, function (_a) {
48224
- switch (_a.label) {
48225
- case 0:
48226
- sourceEntry =
48227
- editablePackagingEntry !== null && editablePackagingEntry !== void 0
48228
- ? editablePackagingEntry
48229
- : context === null || context === void 0
48230
- ? void 0
48231
- : context.packagingEntry;
48232
- if (!sourceEntry) return [2 /*return*/];
48233
- seed = buildSearchSeedFromAccommodationSegments(sourceEntry, segments);
48234
- if (!seed) return [2 /*return*/];
48235
- setDetailsIsLoading(true);
48236
- setSelectedAccommodationSeed(seed);
48237
- dispatch(setAccommodationFlyInStep('results'));
48238
- handleFlyInToggle(true);
48239
- return [4 /*yield*/, runAccommodationFlow(seed)];
48240
- case 1:
48241
- _a.sent();
48242
- setDetailsIsLoading(false);
48243
- return [2 /*return*/];
48244
- }
48245
- });
48246
- });
48247
- };
48248
- var buildSearchSeedFromAccommodationSegments = function (entry, segments) {
48249
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
48250
- if (!(segments === null || segments === void 0 ? void 0 : segments.length)) return null;
48251
- var sortedSegments = __spreadArray([], segments, true).sort(function (a, b) {
48252
- return new Date(a.from).getTime() - new Date(b.from).getTime();
48253
- });
48254
- var firstSegment = lodash.first(sortedSegments);
48255
- var lastSegment = lodash.last(sortedSegments);
48256
- if (!firstSegment || !lastSegment) return null;
48257
- return {
48258
- fromDate: toDateOnlyString(firstSegment.from),
48259
- toDate: toDateOnlyString(lastSegment.to),
48260
- country: (_b = (_a = firstSegment.country) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : null,
48261
- region: (_d = (_c = firstSegment.region) === null || _c === void 0 ? void 0 : _c.id) !== null && _d !== void 0 ? _d : null,
48262
- oord: (_f = (_e = firstSegment.oord) === null || _e === void 0 ? void 0 : _e.id) !== null && _f !== void 0 ? _f : null,
48263
- location: (_h = (_g = firstSegment.location) === null || _g === void 0 ? void 0 : _g.id) !== null && _h !== void 0 ? _h : null,
48264
- hotel: parseHotelId(firstSegment),
48265
- hotelCode: (_j = firstSegment.productCode) !== null && _j !== void 0 ? _j : null,
48266
- tagId: null,
48267
- destinationAirport: getDestinationAirportFromEntry((_k = entry.lines) !== null && _k !== void 0 ? _k : []),
48268
- departureAirport: getDepartureAirportFromEntry((_l = entry.lines) !== null && _l !== void 0 ? _l : []),
48269
- rooms: getRequestRoomsFromPackagingSegments(entry, sortedSegments)
48270
- };
48271
- };
48272
48289
  React.useEffect(
48273
48290
  function () {
48274
48291
  var fetchPriceDetails = function () {
48275
48292
  return __awaiter(void 0, void 0, void 0, function () {
48276
- var config, priceDetails, err_6;
48277
- return __generator(this, function (_a) {
48278
- switch (_a.label) {
48293
+ var config, request, priceDetails, err_7;
48294
+ var _a, _b;
48295
+ return __generator(this, function (_c) {
48296
+ switch (_c.label) {
48279
48297
  case 0:
48280
- if (!context || !editablePackagingEntry) return [2 /*return*/];
48298
+ if (!context || !editablePackagingEntry || lodash.isEmpty(editablePackagingEntry.lines)) return [2 /*return*/];
48281
48299
  setPricesAreLoading(true);
48282
- _a.label = 1;
48300
+ _c.label = 1;
48283
48301
  case 1:
48284
- _a.trys.push([1, 3, , 4]);
48302
+ _c.trys.push([1, 3, , 4]);
48285
48303
  config = {
48286
48304
  host: context.tideConnection.host,
48287
48305
  apiKey: context.tideConnection.apiKey
48288
48306
  };
48289
- return [4 /*yield*/, build.getPriceDetails(config, editablePackagingEntry)];
48307
+ request = {
48308
+ language: (_a = context.languageCode) !== null && _a !== void 0 ? _a : 'en-GB',
48309
+ officeId: context.tideConnection.officeId,
48310
+ catalogueId: (_b = context.searchConfiguration.defaultCatalogueId) !== null && _b !== void 0 ? _b : 0,
48311
+ agentId: context.agentId,
48312
+ payload: editablePackagingEntry
48313
+ };
48314
+ return [4 /*yield*/, build.getPriceDetails(config, request)];
48290
48315
  case 2:
48291
- priceDetails = _a.sent();
48316
+ priceDetails = _c.sent();
48292
48317
  dispatch(setPriceDetails(priceDetails));
48293
48318
  setPricesAreLoading(false);
48294
48319
  return [3 /*break*/, 4];
48295
48320
  case 3:
48296
- err_6 = _a.sent();
48297
- console.error('Error fetching price details', err_6);
48321
+ err_7 = _c.sent();
48322
+ console.error('Error fetching price details', err_7);
48298
48323
  setPricesAreLoading(false);
48299
48324
  return [3 /*break*/, 4];
48300
48325
  case 4:
@@ -48305,30 +48330,37 @@ var SearchResultsContainer = function () {
48305
48330
  };
48306
48331
  var fetchItinerary = function () {
48307
48332
  return __awaiter(void 0, void 0, void 0, function () {
48308
- var config, itinerary_1, err_7;
48309
- return __generator(this, function (_a) {
48310
- switch (_a.label) {
48333
+ var config, request, itinerary_1, err_8;
48334
+ var _a, _b;
48335
+ return __generator(this, function (_c) {
48336
+ switch (_c.label) {
48311
48337
  case 0:
48312
- console.log('Fetching itinerary for entry', editablePackagingEntry);
48313
- if (!context || !editablePackagingEntry) return [2 /*return*/];
48338
+ if (!context || !context.packagingEntry || !editablePackagingEntry || lodash.isEmpty(editablePackagingEntry.lines)) return [2 /*return*/];
48314
48339
  setItineraryIsLoading(true);
48315
- _a.label = 1;
48340
+ _c.label = 1;
48316
48341
  case 1:
48317
- _a.trys.push([1, 3, , 4]);
48342
+ _c.trys.push([1, 3, , 4]);
48318
48343
  config = {
48319
48344
  host: context.tideConnection.host,
48320
48345
  apiKey: context.tideConnection.apiKey
48321
48346
  };
48322
- return [4 /*yield*/, build.getItinerary(config, editablePackagingEntry)];
48347
+ request = {
48348
+ language: (_a = context.languageCode) !== null && _a !== void 0 ? _a : 'en-GB',
48349
+ officeId: context.tideConnection.officeId,
48350
+ catalogueId: (_b = context.searchConfiguration.defaultCatalogueId) !== null && _b !== void 0 ? _b : 0,
48351
+ agentId: context.agentId,
48352
+ payload: editablePackagingEntry
48353
+ };
48354
+ return [4 /*yield*/, build.getItinerary(config, request)];
48323
48355
  case 2:
48324
- itinerary_1 = _a.sent();
48356
+ itinerary_1 = _c.sent();
48325
48357
  console.log('Fetched itinerary', itinerary_1);
48326
48358
  dispatch(setItinerary(itinerary_1));
48327
48359
  setItineraryIsLoading(false);
48328
48360
  return [3 /*break*/, 4];
48329
48361
  case 3:
48330
- err_7 = _a.sent();
48331
- console.error('Error fetching itinerary', err_7);
48362
+ err_8 = _c.sent();
48363
+ console.error('Error fetching itinerary', err_8);
48332
48364
  setItineraryIsLoading(false);
48333
48365
  return [3 /*break*/, 4];
48334
48366
  case 4:
@@ -48342,6 +48374,399 @@ var SearchResultsContainer = function () {
48342
48374
  },
48343
48375
  [editablePackagingEntry]
48344
48376
  );
48377
+ // Flight selection
48378
+ var _o = React.useState(null),
48379
+ selectedOutwardKey = _o[0],
48380
+ setSelectedOutwardKey = _o[1];
48381
+ var _p = React.useState(null),
48382
+ selectedReturnKey = _p[0],
48383
+ setSelectedReturnKey = _p[1];
48384
+ var uniqueOutwardFlights = React__default['default'].useMemo(
48385
+ function () {
48386
+ var map = new Map();
48387
+ packagingFlightResults.forEach(function (flight) {
48388
+ var key = getFlightKey(flight.outward.segments);
48389
+ if (!map.has(key)) {
48390
+ map.set(key, flight);
48391
+ }
48392
+ });
48393
+ return Array.from(map.values());
48394
+ },
48395
+ [packagingFlightResults]
48396
+ );
48397
+ var _q = React.useState([]),
48398
+ uniqueReturnFlights = _q[0],
48399
+ setUniqueReturnFlights = _q[1];
48400
+ React.useEffect(
48401
+ function () {
48402
+ var _a;
48403
+ if (!selectedOutwardKey) {
48404
+ setUniqueReturnFlights([]);
48405
+ setSelectedReturnKey(null);
48406
+ return;
48407
+ }
48408
+ // Filter combinations that match selected outward fare
48409
+ var matchingCombinations = packagingFlightResults.filter(function (flight) {
48410
+ return getFlightKey(flight.outward.segments) === selectedOutwardKey;
48411
+ });
48412
+ var returnMap = new Map();
48413
+ matchingCombinations.forEach(function (flight) {
48414
+ var key = getFlightKey(flight.return.segments);
48415
+ if (!returnMap.has(key)) {
48416
+ returnMap.set(key, flight);
48417
+ }
48418
+ });
48419
+ var returns = Array.from(returnMap.values());
48420
+ setUniqueReturnFlights(returns);
48421
+ var firstReturnKey = returns.length > 0 ? getFlightKey((_a = lodash.first(returns)) === null || _a === void 0 ? void 0 : _a.return.segments) : null;
48422
+ if (firstReturnKey) {
48423
+ setSelectedReturnKey(firstReturnKey);
48424
+ }
48425
+ },
48426
+ [selectedOutwardKey, packagingFlightResults]
48427
+ );
48428
+ var selectedOutward = React__default['default'].useMemo(
48429
+ function () {
48430
+ if (!selectedOutwardKey) return null;
48431
+ return (
48432
+ packagingFlightResults.find(function (flight) {
48433
+ return getFlightKey(flight.outward.segments) === selectedOutwardKey;
48434
+ }) || null
48435
+ );
48436
+ },
48437
+ [packagingFlightResults, selectedOutwardKey]
48438
+ );
48439
+ var selectedReturn = React__default['default'].useMemo(
48440
+ function () {
48441
+ if (!selectedReturnKey) return null;
48442
+ return (
48443
+ packagingFlightResults.find(function (flight) {
48444
+ return getFlightKey(flight.return.segments) === selectedReturnKey;
48445
+ }) || null
48446
+ );
48447
+ },
48448
+ [packagingFlightResults, selectedReturnKey]
48449
+ );
48450
+ var selectedCombinationFlight = React__default['default'].useMemo(
48451
+ function () {
48452
+ if (!selectedOutwardKey || !selectedReturnKey) return undefined;
48453
+ return packagingFlightResults.find(function (flight) {
48454
+ return getFlightKey(flight.outward.segments) === selectedOutwardKey && getFlightKey(flight.return.segments) === selectedReturnKey;
48455
+ });
48456
+ },
48457
+ [packagingFlightResults, selectedOutwardKey, selectedReturnKey]
48458
+ );
48459
+ // TODO: get details for selected combination flight and show in fly-in
48460
+ // useEffect(() => {
48461
+ // if (!selectedCombinationFlight) return;
48462
+ // dispatch(setSelectedPackagingFlight(selectedCombinationFlight));
48463
+ // // onFlightSearch(selectedCombinationFlight); // Trigger search to update accommodation options based on selected flight
48464
+ // dispatch(setFlyInIsOpen(true));
48465
+ // }, [selectedCombinationFlight, dispatch]);
48466
+ React.useEffect(
48467
+ function () {
48468
+ var _a, _b, _c, _d;
48469
+ if (!context) return;
48470
+ var seed = activeSearchSeed;
48471
+ if (!seed) return;
48472
+ var nextEntry = buildOrUpdatePackagingEntryPartial({
48473
+ sourceEntry:
48474
+ (_a = editablePackagingEntry !== null && editablePackagingEntry !== void 0 ? editablePackagingEntry : context.packagingEntry) !== null &&
48475
+ _a !== void 0
48476
+ ? _a
48477
+ : null,
48478
+ selectedHotelCode: selectedPackagingAccoResultCode,
48479
+ accommodationResults: packagingAccoResults,
48480
+ selectedFlight: selectedCombinationFlight !== null && selectedCombinationFlight !== void 0 ? selectedCombinationFlight : null,
48481
+ seed: seed,
48482
+ transactionId:
48483
+ (_c =
48484
+ transactionId !== null && transactionId !== void 0
48485
+ ? transactionId
48486
+ : (_b = context.packagingEntry) === null || _b === void 0
48487
+ ? void 0
48488
+ : _b.transactionId) !== null && _c !== void 0
48489
+ ? _c
48490
+ : '',
48491
+ language: (_d = context.languageCode) !== null && _d !== void 0 ? _d : 'en-GB'
48492
+ });
48493
+ if (!nextEntry) return;
48494
+ dispatch(setEditablePackagingEntry(nextEntry));
48495
+ if (selectedCombinationFlight) {
48496
+ dispatch(setSelectedPackagingFlight(selectedCombinationFlight));
48497
+ }
48498
+ },
48499
+ [
48500
+ context,
48501
+ activeSearchSeed,
48502
+ selectedPackagingAccoResultCode,
48503
+ packagingAccoResults,
48504
+ packagingAccoSearchDetails,
48505
+ selectedCombinationFlight,
48506
+ transactionId,
48507
+ dispatch
48508
+ ]
48509
+ );
48510
+ var removeAccommodationLines = function (lines) {
48511
+ return lines.filter(function (line) {
48512
+ return line.serviceType !== ACCOMMODATION_SERVICE_TYPE;
48513
+ });
48514
+ };
48515
+ var removeFlightLines = function (lines) {
48516
+ return lines.filter(function (line) {
48517
+ return line.serviceType !== FLIGHT_SERVICE_TYPE;
48518
+ });
48519
+ };
48520
+ var buildAccommodationLinesFromSelection = function (selectedHotel, seed) {
48521
+ if (!selectedHotel) return [];
48522
+ var parentGuid = crypto.randomUUID();
48523
+ return selectedHotel.rooms
48524
+ .filter(function (room) {
48525
+ return room.options.some(function (o) {
48526
+ return o.isSelected;
48527
+ });
48528
+ })
48529
+ .map(function (room, index) {
48530
+ var _a, _b, _c, _d, _e;
48531
+ var option = room.options.find(function (o) {
48532
+ return o.isSelected;
48533
+ });
48534
+ var pax =
48535
+ (_b =
48536
+ (_a = seed.rooms) === null || _a === void 0
48537
+ ? void 0
48538
+ : _a.flatMap(function (room, roomIndex) {
48539
+ return room.pax.map(function (p, paxIndex) {
48540
+ return {
48541
+ paxId: p.id,
48542
+ room: roomIndex,
48543
+ order: paxIndex
48544
+ };
48545
+ });
48546
+ })) !== null && _b !== void 0
48547
+ ? _b
48548
+ : [];
48549
+ return {
48550
+ guid: (_c = option.guid) !== null && _c !== void 0 ? _c : crypto.randomUUID(),
48551
+ moment: '',
48552
+ parentGuid: index === 0 ? null : parentGuid,
48553
+ order: index,
48554
+ isChanged: true,
48555
+ from: selectedHotel.fromDate,
48556
+ to: selectedHotel.toDate,
48557
+ serviceType: ACCOMMODATION_SERVICE_TYPE,
48558
+ productName: selectedHotel.name,
48559
+ productCode: selectedHotel.code,
48560
+ accommodationName: option.accommodationName,
48561
+ accommodationCode: option.accommodationCode,
48562
+ regimeName: option.regimeName,
48563
+ regimeCode: option.regimeCode,
48564
+ country: selectedHotel.countryId ? { id: selectedHotel.countryId, name: selectedHotel.countryName, localizations: [] } : null,
48565
+ region: selectedHotel.regionId ? { id: selectedHotel.regionId, name: selectedHotel.regionName, localizations: [] } : null,
48566
+ oord: selectedHotel.oordId ? { id: selectedHotel.oordId, name: selectedHotel.oordName, localizations: [] } : null,
48567
+ location: selectedHotel.locationId ? { id: selectedHotel.locationId, name: selectedHotel.locationName, localizations: [] } : null,
48568
+ longitude: (_d = selectedHotel.longitude) !== null && _d !== void 0 ? _d : null,
48569
+ latitude: (_e = selectedHotel.latitude) !== null && _e !== void 0 ? _e : null,
48570
+ pax: pax,
48571
+ flightInformation: null
48572
+ };
48573
+ });
48574
+ };
48575
+ var toDateOnlyUtcString = function (value) {
48576
+ var date = new Date(value);
48577
+ return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate())).toISOString();
48578
+ };
48579
+ var toTimeOnlyString = function (value) {
48580
+ var date = new Date(value);
48581
+ var hh = String(date.getUTCHours()).padStart(2, '0');
48582
+ var mm = String(date.getUTCMinutes()).padStart(2, '0');
48583
+ var ss = String(date.getUTCSeconds()).padStart(2, '0');
48584
+ return ''.concat(hh, ':').concat(mm, ':').concat(ss);
48585
+ };
48586
+ var mapFlightSegmentsToFlightLines = function (segments) {
48587
+ return segments.map(function (segment) {
48588
+ var _a;
48589
+ return {
48590
+ airlineCode: segment.marketingAirlineCode,
48591
+ airlineDescription: segment.marketingAirlineName,
48592
+ operatingAirlineCode: segment.operatingAirlineCode,
48593
+ operatingAirlineDescription: segment.operatingAirlineName,
48594
+ flightNumber: segment.flightNumber,
48595
+ operatingFlightNumber: (_a = segment.operatingFlightNumber) !== null && _a !== void 0 ? _a : null,
48596
+ departureDate: toDateOnlyUtcString(segment.departureDateTime),
48597
+ departureTime: toTimeOnlyString(segment.departureDateTime),
48598
+ departureAirportCode: segment.departureAirportCode,
48599
+ departureAirportDescription: segment.departureAirportName,
48600
+ arrivalDate: toDateOnlyUtcString(segment.arrivalDateTime),
48601
+ arrivalTime: toTimeOnlyString(segment.arrivalDateTime),
48602
+ arrivalAirportCode: segment.arrivalAirportCode,
48603
+ arrivalAirportDescription: segment.arrivalAirportName,
48604
+ durationInTicks: segment.durationInTicks
48605
+ };
48606
+ });
48607
+ };
48608
+ var buildFlightLabel = function (segments) {
48609
+ var firstSegment = lodash.first(segments);
48610
+ var lastSegment = lodash.last(segments);
48611
+ if (!firstSegment || !lastSegment) {
48612
+ return { productName: 'Flight', productCode: 'FLIGHT' };
48613
+ }
48614
+ return {
48615
+ productName: ''
48616
+ .concat(firstSegment.departureAirportName, ' - ')
48617
+ .concat(lastSegment.arrivalAirportName, ' (')
48618
+ .concat(firstSegment.marketingAirlineName, ')'),
48619
+ productCode: ''.concat(firstSegment.departureAirportCode, ' ').concat(lastSegment.arrivalAirportCode, '/').concat(firstSegment.marketingAirlineCode)
48620
+ };
48621
+ };
48622
+ var buildFlightLinesFromSelection = function (selectedFlight) {
48623
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
48624
+ if (!selectedFlight) return [];
48625
+ var outwardSegments = (_b = (_a = selectedFlight.outward) === null || _a === void 0 ? void 0 : _a.segments) !== null && _b !== void 0 ? _b : [];
48626
+ var returnSegments = (_d = (_c = selectedFlight.return) === null || _c === void 0 ? void 0 : _c.segments) !== null && _d !== void 0 ? _d : [];
48627
+ if (!outwardSegments.length || !returnSegments.length) return [];
48628
+ var outwardLabel = buildFlightLabel(outwardSegments);
48629
+ var returnLabel = buildFlightLabel(returnSegments);
48630
+ var outwardFirst = lodash.first(outwardSegments);
48631
+ var outwardLast = lodash.last(outwardSegments);
48632
+ var returnFirst = lodash.first(returnSegments);
48633
+ var returnLast = lodash.last(returnSegments);
48634
+ var outwardLine = {
48635
+ guid: selectedFlight.outwardGuid,
48636
+ parentGuid: null,
48637
+ order: 0,
48638
+ isChanged: true,
48639
+ from: (_e = outwardFirst === null || outwardFirst === void 0 ? void 0 : outwardFirst.departureDateTime.toString()) !== null && _e !== void 0 ? _e : '',
48640
+ to: (_f = outwardLast === null || outwardLast === void 0 ? void 0 : outwardLast.arrivalDateTime.toString()) !== null && _f !== void 0 ? _f : '',
48641
+ serviceType: FLIGHT_SERVICE_TYPE,
48642
+ productName: outwardLabel.productName,
48643
+ productCode: outwardLabel.productCode,
48644
+ accommodationName:
48645
+ (_g = outwardFirst === null || outwardFirst === void 0 ? void 0 : outwardFirst.metaData) === null || _g === void 0 ? void 0 : _g.farePriceClassName,
48646
+ accommodationCode:
48647
+ (_h = outwardFirst === null || outwardFirst === void 0 ? void 0 : outwardFirst.metaData) === null || _h === void 0 ? void 0 : _h.fareCode,
48648
+ regimeName: null,
48649
+ regimeCode: null,
48650
+ country: null,
48651
+ region: null,
48652
+ oord: null,
48653
+ location: null,
48654
+ longitude: null,
48655
+ latitude: null,
48656
+ // pax: allPaxAssignments,
48657
+ flightInformation: {
48658
+ pnr: '',
48659
+ flightLines: mapFlightSegmentsToFlightLines(outwardSegments)
48660
+ }
48661
+ };
48662
+ var returnLine = {
48663
+ guid: selectedFlight.returnGuid,
48664
+ parentGuid: selectedFlight.outwardGuid,
48665
+ order: 1,
48666
+ isChanged: true,
48667
+ from: (_j = returnFirst === null || returnFirst === void 0 ? void 0 : returnFirst.departureDateTime.toString()) !== null && _j !== void 0 ? _j : '',
48668
+ to: (_k = returnLast === null || returnLast === void 0 ? void 0 : returnLast.departureDateTime.toString()) !== null && _k !== void 0 ? _k : '',
48669
+ serviceType: FLIGHT_SERVICE_TYPE,
48670
+ productName: returnLabel.productName,
48671
+ productCode: returnLabel.productCode,
48672
+ accommodationName:
48673
+ (_l = returnFirst === null || returnFirst === void 0 ? void 0 : returnFirst.metaData) === null || _l === void 0 ? void 0 : _l.farePriceClassName,
48674
+ accommodationCode: (_m = returnFirst === null || returnFirst === void 0 ? void 0 : returnFirst.metaData) === null || _m === void 0 ? void 0 : _m.fareCode,
48675
+ regimeName: null,
48676
+ regimeCode: null,
48677
+ country: null,
48678
+ region: null,
48679
+ oord: null,
48680
+ location: null,
48681
+ longitude: null,
48682
+ latitude: null,
48683
+ // pax: allPaxAssignments,
48684
+ flightInformation: {
48685
+ pnr: '',
48686
+ flightLines: mapFlightSegmentsToFlightLines(returnSegments)
48687
+ }
48688
+ };
48689
+ return [outwardLine, returnLine];
48690
+ };
48691
+ var buildOrUpdatePackagingEntryPartial = function (_a) {
48692
+ var _b, _c;
48693
+ var sourceEntry = _a.sourceEntry,
48694
+ selectedHotelCode = _a.selectedHotelCode,
48695
+ accommodationResults = _a.accommodationResults,
48696
+ selectedFlight = _a.selectedFlight,
48697
+ seed = _a.seed,
48698
+ transactionId = _a.transactionId,
48699
+ language = _a.language;
48700
+ if (!((_b = seed === null || seed === void 0 ? void 0 : seed.rooms) === null || _b === void 0 ? void 0 : _b.length)) return null;
48701
+ var entry = buildBasePackagingEntry(sourceEntry, seed, transactionId, language);
48702
+ var nextLines = __spreadArray([], (_c = entry.lines) !== null && _c !== void 0 ? _c : [], true);
48703
+ var selectedHotel = selectedHotelCode
48704
+ ? accommodationResults.find(function (r) {
48705
+ return r.code === selectedHotelCode;
48706
+ })
48707
+ : null;
48708
+ // Update accommodation only when enough data exists
48709
+ if (selectedHotel) {
48710
+ var accommodationLines = buildAccommodationLinesFromSelection(selectedHotel, seed);
48711
+ if (accommodationLines.length) {
48712
+ nextLines = removeAccommodationLines(nextLines);
48713
+ nextLines = __spreadArray(__spreadArray([], nextLines, true), accommodationLines, true);
48714
+ }
48715
+ }
48716
+ // Update flights only when full selected combination exists
48717
+ if (selectedFlight) {
48718
+ var flightLines = buildFlightLinesFromSelection(selectedFlight);
48719
+ if (flightLines.length) {
48720
+ nextLines = removeFlightLines(nextLines);
48721
+ nextLines = __spreadArray(__spreadArray([], nextLines, true), flightLines, true);
48722
+ }
48723
+ }
48724
+ nextLines = nextLines.map(function (line, index) {
48725
+ return __assign(__assign({}, line), { order: index });
48726
+ });
48727
+ return __assign(__assign({}, entry), { language: language, transactionId: transactionId, pax: entry.pax, lines: nextLines });
48728
+ };
48729
+ var buildBasePackagingEntry = function (sourceEntry, seed, transactionId, language) {
48730
+ var _a, _b;
48731
+ if (sourceEntry) {
48732
+ return structuredClone(sourceEntry);
48733
+ }
48734
+ var paxId = 1;
48735
+ var pax =
48736
+ (_b =
48737
+ (_a = seed.rooms) === null || _a === void 0
48738
+ ? void 0
48739
+ : _a.flatMap(function (room, roomIndex) {
48740
+ return room.pax.map(function (_, paxIndex) {
48741
+ return {
48742
+ id: paxId++,
48743
+ firstName: '',
48744
+ lastName: '',
48745
+ dateOfBirth: null,
48746
+ isMainBooker: roomIndex === 0 && paxIndex === 0
48747
+ };
48748
+ });
48749
+ })) !== null && _b !== void 0
48750
+ ? _b
48751
+ : [];
48752
+ return {
48753
+ language: language,
48754
+ transactionId: transactionId,
48755
+ dossierNumber: '',
48756
+ status: 0,
48757
+ bookingDate: null,
48758
+ price: 0,
48759
+ depositAmount: 0,
48760
+ pax: pax,
48761
+ lines: []
48762
+ };
48763
+ };
48764
+ var visibleOutwardFlights = React__default['default'].useMemo(
48765
+ function () {
48766
+ return showAllOutwardFlights ? uniqueOutwardFlights : uniqueOutwardFlights.slice(0, 3);
48767
+ },
48768
+ [showAllOutwardFlights, uniqueOutwardFlights]
48769
+ );
48345
48770
  return React__default['default'].createElement(
48346
48771
  'div',
48347
48772
  { id: 'tide-booking', className: 'search__bg' },
@@ -48459,13 +48884,11 @@ var SearchResultsContainer = function () {
48459
48884
  'span',
48460
48885
  { className: 'search__result-row-text' },
48461
48886
  !isLoading &&
48462
- !context.packagingEntry &&
48887
+ context.searchConfiguration.qsmType !== build.PortalQsmType.AccommodationAndFlight &&
48463
48888
  React__default['default'].createElement(
48464
48889
  React__default['default'].Fragment,
48465
48890
  null,
48466
- ((context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
48467
- context.searchConfiguration.enableManualPackaging) ||
48468
- context.searchConfiguration.qsmType === build.PortalQsmType.Accommodation) &&
48891
+ context.searchConfiguration.qsmType === build.PortalQsmType.Accommodation &&
48469
48892
  (filteredPackagingAccoResults === null || filteredPackagingAccoResults === void 0 ? void 0 : filteredPackagingAccoResults.length) &&
48470
48893
  (filteredPackagingAccoResults === null || filteredPackagingAccoResults === void 0 ? void 0 : filteredPackagingAccoResults.length),
48471
48894
  context.searchConfiguration.qsmType !== build.PortalQsmType.Accommodation &&
@@ -48514,22 +48937,145 @@ var SearchResultsContainer = function () {
48514
48937
  context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
48515
48938
  !context.packagingEntry &&
48516
48939
  context.showFlightResults &&
48517
- (bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.outwardFlights) &&
48518
- React__default['default'].createElement(FlightResults, {
48519
- flights: bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.outwardFlights,
48520
- isDeparture: true
48521
- }),
48940
+ // bookingPackageDetails?.outwardFlights &&
48941
+ // <FlightResults flights={bookingPackageDetails?.outwardFlights} isDeparture={true} />
48942
+ React__default['default'].createElement(
48943
+ React__default['default'].Fragment,
48944
+ null,
48945
+ React__default['default'].createElement(
48946
+ 'div',
48947
+ { className: 'search__results__label search__results__label--secondary' },
48948
+ React__default['default'].createElement(
48949
+ 'div',
48950
+ { className: 'search__results__label__date' },
48951
+ React__default['default'].createElement(Icon$1, { name: 'ui-flight', height: 16, fill: 'white' })
48952
+ ),
48953
+ React__default['default'].createElement(
48954
+ 'div',
48955
+ { className: 'search__results__label__text' },
48956
+ React__default['default'].createElement(
48957
+ 'h3',
48958
+ null,
48959
+ translations.SRP.SELECT,
48960
+ ' ',
48961
+ React__default['default'].createElement('strong', null, ' ', translations.SRP.DEPARTURE)
48962
+ )
48963
+ )
48964
+ ),
48965
+ flightsLoading
48966
+ ? React__default['default'].createElement(Spinner, null)
48967
+ : React__default['default'].createElement(
48968
+ React__default['default'].Fragment,
48969
+ null,
48970
+ React__default['default'].createElement(
48971
+ 'div',
48972
+ { className: 'search__results__cards search__results__cards--extended' },
48973
+ selectedOutwardKey &&
48974
+ selectedOutward &&
48975
+ React__default['default'].createElement(IndependentFlightOption, {
48976
+ key: 'flight-'.concat(selectedOutwardKey),
48977
+ item: selectedOutward.outward,
48978
+ guid: selectedOutward.outwardGuid,
48979
+ onSelect: function () {
48980
+ return setSelectedOutwardKey(null);
48981
+ },
48982
+ selectedGuid: selectedOutward.outwardGuid,
48983
+ isOutward: true,
48984
+ showSelectedState: true,
48985
+ price: selectedOutward.price
48986
+ }),
48987
+ visibleOutwardFlights.map(function (result) {
48988
+ return React__default['default'].createElement(IndependentFlightOption, {
48989
+ key: 'flight-'.concat(result.outwardGuid),
48990
+ item: result.outward,
48991
+ onSelect: function () {
48992
+ return setSelectedOutwardKey(getFlightKey(result.outward.segments));
48993
+ },
48994
+ guid: result.outwardGuid,
48995
+ isOutward: true,
48996
+ price: result.price,
48997
+ currentSelectedPrice: selectedOutward === null || selectedOutward === void 0 ? void 0 : selectedOutward.price
48998
+ });
48999
+ })
49000
+ ),
49001
+ uniqueOutwardFlights &&
49002
+ uniqueOutwardFlights.length > 3 &&
49003
+ React__default['default'].createElement(
49004
+ 'div',
49005
+ { className: 'search__results__cards__actions' },
49006
+ React__default['default'].createElement(
49007
+ 'button',
49008
+ {
49009
+ className: 'cta cta--secondary',
49010
+ onClick: function () {
49011
+ return setShowAllOutwardFlights(!showAllOutwardFlights);
49012
+ }
49013
+ },
49014
+ showAllOutwardFlights ? translations.SRP.SHOW_LESS : translations.SRP.SHOW_MORE
49015
+ )
49016
+ )
49017
+ )
49018
+ ),
48522
49019
  context.showHotelAccommodationResults &&
48523
49020
  !context.packagingEntry &&
48524
49021
  React__default['default'].createElement(HotelAccommodationResults, { isLoading: isLoading }),
48525
49022
  context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
48526
49023
  !context.packagingEntry &&
48527
49024
  context.showFlightResults &&
48528
- (bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.returnFlights) &&
48529
- React__default['default'].createElement(FlightResults, {
48530
- flights: bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.returnFlights,
48531
- isDeparture: false
48532
- }),
49025
+ // bookingPackageDetails?.returnFlights &&
49026
+ // <FlightResults flights={bookingPackageDetails?.returnFlights} isDeparture={false} />
49027
+ React__default['default'].createElement(
49028
+ React__default['default'].Fragment,
49029
+ null,
49030
+ React__default['default'].createElement(
49031
+ 'div',
49032
+ { className: 'search__results__label search__results__label--secondary' },
49033
+ React__default['default'].createElement(
49034
+ 'div',
49035
+ { className: 'search__results__label__date' },
49036
+ React__default['default'].createElement(Icon$1, { name: 'ui-flight', height: 16, fill: 'white' })
49037
+ ),
49038
+ React__default['default'].createElement(
49039
+ 'div',
49040
+ { className: 'search__results__label__text' },
49041
+ React__default['default'].createElement(
49042
+ 'h3',
49043
+ null,
49044
+ translations.SRP.SELECT,
49045
+ ' ',
49046
+ React__default['default'].createElement('strong', null, ' ', translations.SRP.RETURN)
49047
+ )
49048
+ )
49049
+ ),
49050
+ React__default['default'].createElement(
49051
+ 'div',
49052
+ { className: 'search__results__cards search__results__cards--extended' },
49053
+ selectedReturnKey &&
49054
+ selectedReturn &&
49055
+ React__default['default'].createElement(IndependentFlightOption, {
49056
+ key: 'flight-'.concat(selectedReturnKey),
49057
+ item: selectedReturn.return,
49058
+ guid: selectedReturn.outwardGuid,
49059
+ selectedGuid: selectedReturn.outwardGuid,
49060
+ isOutward: false,
49061
+ showSelectedState: true,
49062
+ price: selectedReturn.price
49063
+ }),
49064
+ uniqueReturnFlights.map(function (result) {
49065
+ return React__default['default'].createElement(IndependentFlightOption, {
49066
+ key: 'flight-'.concat(result.outwardGuid),
49067
+ item: result.return,
49068
+ onSelect: function () {
49069
+ return setSelectedReturnKey(getFlightKey(result.return.segments));
49070
+ },
49071
+ guid: result.outwardGuid,
49072
+ isOutward: false,
49073
+ currentSelectedPrice: selectedReturn === null || selectedReturn === void 0 ? void 0 : selectedReturn.price,
49074
+ price: result.price
49075
+ });
49076
+ })
49077
+ )
49078
+ ),
48533
49079
  context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
48534
49080
  context.packagingEntry &&
48535
49081
  itinerary &&
@@ -55996,3 +56542,4 @@ exports.PhotoGallery = PhotoGallery;
55996
56542
  exports.QSM = QSM;
55997
56543
  exports.SearchResults = SearchResults;
55998
56544
  exports.Slider = Slider;
56545
+ exports.Spinner = Spinner;