@qite/tide-booking-component 1.4.102 → 1.4.104

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 (55) hide show
  1. package/build/build-cjs/index.js +1773 -877
  2. package/build/build-cjs/src/search-results/components/filters/filters.d.ts +2 -0
  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/components/hotel/hotel-accommodation-results.d.ts +1 -0
  5. package/build/build-cjs/src/search-results/store/search-results-selectors.d.ts +424 -0
  6. package/build/build-cjs/src/search-results/store/search-results-slice.d.ts +27 -8
  7. package/build/build-cjs/src/search-results/types.d.ts +14 -2
  8. package/build/build-cjs/src/search-results/utils/search-results-utils.d.ts +8 -6
  9. package/build/build-cjs/src/shared/components/flyin/flyin.d.ts +3 -3
  10. package/build/build-cjs/src/shared/components/flyin/packaging-flights-flyin.d.ts +7 -0
  11. package/build/build-cjs/src/shared/utils/localization-util.d.ts +2 -0
  12. package/build/build-esm/index.js +1747 -861
  13. package/build/build-esm/src/search-results/components/filters/filters.d.ts +2 -0
  14. package/build/build-esm/src/search-results/components/flight/flight-selection/independent-flight-option.d.ts +3 -0
  15. package/build/build-esm/src/search-results/components/hotel/hotel-accommodation-results.d.ts +1 -0
  16. package/build/build-esm/src/search-results/store/search-results-selectors.d.ts +424 -0
  17. package/build/build-esm/src/search-results/store/search-results-slice.d.ts +27 -8
  18. package/build/build-esm/src/search-results/types.d.ts +14 -2
  19. package/build/build-esm/src/search-results/utils/search-results-utils.d.ts +8 -6
  20. package/build/build-esm/src/shared/components/flyin/flyin.d.ts +3 -3
  21. package/build/build-esm/src/shared/components/flyin/packaging-flights-flyin.d.ts +7 -0
  22. package/build/build-esm/src/shared/utils/localization-util.d.ts +2 -0
  23. package/package.json +2 -2
  24. package/src/booking-wizard/features/flight-options/index.tsx +6 -2
  25. package/src/search-results/components/filters/filters.tsx +8 -9
  26. package/src/search-results/components/flight/flight-selection/independent-flight-option.tsx +31 -4
  27. package/src/search-results/components/hotel/hotel-accommodation-results.tsx +81 -25
  28. package/src/search-results/components/icon.tsx +1 -1
  29. package/src/search-results/components/search-results-container/search-results-container.tsx +194 -130
  30. package/src/search-results/store/search-results-selectors.ts +73 -0
  31. package/src/search-results/store/search-results-slice.ts +94 -14
  32. package/src/search-results/types.ts +14 -2
  33. package/src/search-results/utils/search-results-utils.ts +310 -58
  34. package/src/shared/components/flyin/flyin.tsx +102 -19
  35. package/src/shared/components/flyin/packaging-flights-flyin.tsx +164 -0
  36. package/src/shared/translations/ar-SA.json +2 -0
  37. package/src/shared/translations/da-DK.json +2 -0
  38. package/src/shared/translations/de-DE.json +2 -0
  39. package/src/shared/translations/en-GB.json +2 -0
  40. package/src/shared/translations/es-ES.json +2 -0
  41. package/src/shared/translations/fr-BE.json +2 -0
  42. package/src/shared/translations/fr-FR.json +2 -0
  43. package/src/shared/translations/is-IS.json +2 -0
  44. package/src/shared/translations/it-IT.json +2 -0
  45. package/src/shared/translations/ja-JP.json +2 -0
  46. package/src/shared/translations/nl-BE.json +2 -0
  47. package/src/shared/translations/nl-NL.json +2 -0
  48. package/src/shared/translations/no-NO.json +2 -0
  49. package/src/shared/translations/pl-PL.json +2 -0
  50. package/src/shared/translations/pt-PT.json +2 -0
  51. package/src/shared/translations/sv-SE.json +2 -0
  52. package/src/shared/utils/localization-util.ts +5 -2
  53. package/styles/components/_flight-option.scss +14 -1
  54. package/styles/components/_flyin.scss +16 -0
  55. package/styles/components/_search.scss +9 -1
@@ -611,6 +611,8 @@ var QSM$g = {
611
611
  GROUP_TOUR: 'جولة جماعية'
612
612
  };
613
613
  var SRP$f = {
614
+ SHOW_MORE: 'عرض المزيد',
615
+ SHOW_LESS: 'عرض أقل',
614
616
  NO_RESULTS: 'لم يتم العثور على نتائج.',
615
617
  TOTAL_RESULTS_LABEL: 'تم العثور على باقات',
616
618
  RESET: 'إعادة تعيين',
@@ -1015,6 +1017,8 @@ var QSM$f = {
1015
1017
  GROUP_TOUR: 'Grupperejse'
1016
1018
  };
1017
1019
  var SRP$e = {
1020
+ SHOW_MORE: 'Vis flere',
1021
+ SHOW_LESS: 'Vis færre',
1018
1022
  NO_RESULTS: 'Ingen resultater fundet.',
1019
1023
  TOTAL_RESULTS_LABEL: 'Fundne pakker',
1020
1024
  RESET: 'Nulstil',
@@ -1420,6 +1424,8 @@ var QSM$e = {
1420
1424
  GROUP_TOUR: 'Gruppentour'
1421
1425
  };
1422
1426
  var SRP$d = {
1427
+ SHOW_MORE: 'Mehr anzeigen',
1428
+ SHOW_LESS: 'Weniger anzeigen',
1423
1429
  NO_RESULTS: 'Keine Ergebnisse gefunden.',
1424
1430
  TOTAL_RESULTS_LABEL: 'Gefundene Pakete',
1425
1431
  RESET: 'Zurücksetzen',
@@ -1828,6 +1834,8 @@ var QSM$d = {
1828
1834
  GROUP_TOUR: 'Group tour'
1829
1835
  };
1830
1836
  var SRP$c = {
1837
+ SHOW_MORE: 'Show more',
1838
+ SHOW_LESS: 'Show less',
1831
1839
  NO_RESULTS: 'No results found.',
1832
1840
  TOTAL_RESULTS_LABEL: 'Packages found',
1833
1841
  RESET: 'Reset',
@@ -2233,6 +2241,8 @@ var QSM$c = {
2233
2241
  GROUP_TOUR: 'Tour grupal'
2234
2242
  };
2235
2243
  var SRP$b = {
2244
+ SHOW_MORE: 'Mostrar más',
2245
+ SHOW_LESS: 'Mostrar menos',
2236
2246
  NO_RESULTS: 'No se han encontrado resultados.',
2237
2247
  TOTAL_RESULTS_LABEL: 'Paquetes encontrados',
2238
2248
  RESET: 'Restablecer',
@@ -2642,6 +2652,8 @@ var QSM$b = {
2642
2652
  GROUP_TOUR: 'Tour en groupe'
2643
2653
  };
2644
2654
  var SRP$a = {
2655
+ SHOW_MORE: 'Afficher plus',
2656
+ SHOW_LESS: 'Afficher moins',
2645
2657
  NO_RESULTS: 'Aucun résultat trouvé.',
2646
2658
  TOTAL_RESULTS_LABEL: 'Forfaits trouvés',
2647
2659
  RESET: 'Réinitialiser',
@@ -3046,6 +3058,8 @@ var QSM$a = {
3046
3058
  GROUP_TOUR: 'Tour en groupe'
3047
3059
  };
3048
3060
  var SRP$9 = {
3061
+ SHOW_MORE: 'Afficher plus',
3062
+ SHOW_LESS: 'Afficher moins',
3049
3063
  NO_RESULTS: 'Aucun résultat trouvé.',
3050
3064
  TOTAL_RESULTS_LABEL: 'Forfaits trouvés',
3051
3065
  RESET: 'Réinitialiser',
@@ -3450,6 +3464,8 @@ var QSM$9 = {
3450
3464
  GROUP_TOUR: 'Ferð í hóp'
3451
3465
  };
3452
3466
  var SRP$8 = {
3467
+ SHOW_MORE: 'Sýna meira',
3468
+ SHOW_LESS: 'Sýna minna',
3453
3469
  NO_RESULTS: 'Engar niðurstöður fundust.',
3454
3470
  TOTAL_RESULTS_LABEL: 'Fundnar pakkar',
3455
3471
  RESET: 'Endurstilla',
@@ -3855,6 +3871,8 @@ var QSM$8 = {
3855
3871
  GROUP_TOUR: 'Tour di gruppo'
3856
3872
  };
3857
3873
  var SRP$7 = {
3874
+ SHOW_MORE: 'Mostra di più',
3875
+ SHOW_LESS: 'Mostra di meno',
3858
3876
  NO_RESULTS: 'Nessun risultato trovato.',
3859
3877
  TOTAL_RESULTS_LABEL: 'Pacchetti trovati',
3860
3878
  RESET: 'Reimposta',
@@ -4264,6 +4282,8 @@ var QSM$7 = {
4264
4282
  GROUP_TOUR: 'Groepsreis'
4265
4283
  };
4266
4284
  var SRP$6 = {
4285
+ SHOW_MORE: 'Toon meer',
4286
+ SHOW_LESS: 'Toon minder',
4267
4287
  NO_RESULTS: 'Geen resultaten gevonden.',
4268
4288
  TOTAL_RESULTS_LABEL: 'Gevonden pakketten',
4269
4289
  RESET: 'Resetten',
@@ -4669,6 +4689,8 @@ var QSM$6 = {
4669
4689
  GROUP_TOUR: 'Groepsreis'
4670
4690
  };
4671
4691
  var SRP$5 = {
4692
+ SHOW_MORE: 'Toon meer',
4693
+ SHOW_LESS: 'Toon minder',
4672
4694
  NO_RESULTS: 'Geen resultaten gevonden.',
4673
4695
  TOTAL_RESULTS_LABEL: 'Gevonden pakketten',
4674
4696
  RESET: 'Resetten',
@@ -5074,6 +5096,8 @@ var QSM$5 = {
5074
5096
  GROUP_TOUR: 'Gruppetur'
5075
5097
  };
5076
5098
  var SRP$4 = {
5099
+ SHOW_MORE: 'Vis mer',
5100
+ SHOW_LESS: 'Vis mindre',
5077
5101
  NO_RESULTS: 'Ingen resultater funnet.',
5078
5102
  TOTAL_RESULTS_LABEL: 'Fant pakker',
5079
5103
  RESET: 'Tilbakestill',
@@ -5479,6 +5503,8 @@ var QSM$4 = {
5479
5503
  GROUP_TOUR: 'Tour w grupie'
5480
5504
  };
5481
5505
  var SRP$3 = {
5506
+ SHOW_MORE: 'Pokaż więcej',
5507
+ SHOW_LESS: 'Pokaż mniej',
5482
5508
  NO_RESULTS: 'Nie znaleziono wyników.',
5483
5509
  TOTAL_RESULTS_LABEL: 'Znalezione pakiety',
5484
5510
  RESET: 'Resetuj',
@@ -5884,6 +5910,8 @@ var QSM$3 = {
5884
5910
  GROUP_TOUR: 'Tour em grupo'
5885
5911
  };
5886
5912
  var SRP$2 = {
5913
+ SHOW_MORE: 'Mostrar mais',
5914
+ SHOW_LESS: 'Mostrar menos',
5887
5915
  NO_RESULTS: 'Nenhum resultado encontrado.',
5888
5916
  TOTAL_RESULTS_LABEL: 'Pacotes encontrados',
5889
5917
  RESET: 'Redefinir',
@@ -6289,6 +6317,8 @@ var QSM$2 = {
6289
6317
  GROUP_TOUR: 'Gruppresa'
6290
6318
  };
6291
6319
  var SRP$1 = {
6320
+ SHOW_MORE: 'Visa mer',
6321
+ SHOW_LESS: 'Visa mindre',
6292
6322
  NO_RESULTS: 'Inga resultat hittades.',
6293
6323
  TOTAL_RESULTS_LABEL: 'Hittade paket',
6294
6324
  RESET: 'Återställ',
@@ -6692,6 +6722,8 @@ var QSM$1 = {
6692
6722
  GROUP_TOUR: 'グループツアー'
6693
6723
  };
6694
6724
  var SRP = {
6725
+ SHOW_MORE: 'もっと見る',
6726
+ SHOW_LESS: '閉じる',
6695
6727
  NO_RESULTS: '結果が見つかりませんでした。',
6696
6728
  TOTAL_RESULTS_LABEL: '見つかったパッケージ',
6697
6729
  RESET: 'リセット',
@@ -6898,8 +6930,8 @@ var timeFromDateTime = function (dateTime) {
6898
6930
  return '';
6899
6931
  }
6900
6932
  var date = new Date(dateTime);
6901
- var hours = date.getHours();
6902
- var minutes = date.getMinutes();
6933
+ var hours = date.getUTCHours();
6934
+ var minutes = date.getUTCMinutes();
6903
6935
  return ''
6904
6936
  .concat(hours, ':')
6905
6937
  .concat(minutes < 10 ? '0' : '')
@@ -21689,7 +21721,11 @@ var FlightOptionsForm = function () {
21689
21721
  setFlightGroups = _f[1];
21690
21722
  var handleSubmit = function (e) {
21691
21723
  if (settings.skipRouter) {
21692
- dispatch(setCurrentStep(ROOM_OPTIONS_FORM_STEP));
21724
+ if (settings.roomOptions.isHidden) {
21725
+ dispatch(setCurrentStep(OPTIONS_FORM_STEP));
21726
+ } else {
21727
+ dispatch(setCurrentStep(ROOM_OPTIONS_FORM_STEP));
21728
+ }
21693
21729
  } else {
21694
21730
  if (settings.roomOptions.isHidden) {
21695
21731
  navigate(
@@ -33684,21 +33720,28 @@ var initialState$1 = {
33684
33720
  packagingAccoSearchDetails: [],
33685
33721
  selectedPackagingAccoResultCode: null,
33686
33722
  packagingFlightResults: [],
33723
+ filteredPackagingFlightResults: [],
33687
33724
  selectedPackagingFlight: null,
33725
+ selectedOutwardKey: null,
33726
+ selectedReturnKey: null,
33688
33727
  selectedFlight: null,
33689
33728
  selectedFlightDetails: null,
33690
33729
  bookingPackageDetails: null,
33730
+ priceDetails: null,
33691
33731
  isLoading: false,
33692
33732
  flightsLoading: false,
33693
- filters: [],
33694
33733
  selectedSortType: null,
33734
+ selectedFlightSortType: null,
33735
+ initialFilters: [],
33736
+ filters: [],
33737
+ initialFlightFilters: [],
33738
+ flightFilters: [],
33695
33739
  activeTab: 'compact',
33696
33740
  currentPage: 1,
33741
+ transactionId: null,
33697
33742
  flyInIsOpen: false,
33743
+ flyInType: null,
33698
33744
  editablePackagingEntry: null,
33699
- transactionId: null,
33700
- accommodationFlyInStep: 'details',
33701
- priceDetails: null,
33702
33745
  itinerary: null
33703
33746
  };
33704
33747
  var searchResultsSlice = createSlice({
@@ -33729,6 +33772,9 @@ var searchResultsSlice = createSlice({
33729
33772
  setPackagingFlightResults: function (state, action) {
33730
33773
  state.packagingFlightResults = action.payload;
33731
33774
  },
33775
+ setFilteredPackagingFlightResults: function (state, action) {
33776
+ state.filteredPackagingFlightResults = action.payload;
33777
+ },
33732
33778
  setSelectedPackagingFlight: function (state, action) {
33733
33779
  state.selectedPackagingFlight = action.payload;
33734
33780
  },
@@ -33757,6 +33803,9 @@ var searchResultsSlice = createSlice({
33757
33803
  setFlightsLoading: function (state, action) {
33758
33804
  state.flightsLoading = action.payload;
33759
33805
  },
33806
+ setInitialFilters: function (state, action) {
33807
+ state.initialFilters = action.payload;
33808
+ },
33760
33809
  setFilters: function (state, action) {
33761
33810
  var updatedFilters = action.payload;
33762
33811
  updatedFilters.forEach(function (updatedFilter) {
@@ -33773,9 +33822,31 @@ var searchResultsSlice = createSlice({
33773
33822
  resetFilters: function (state, action) {
33774
33823
  state.filters = action.payload;
33775
33824
  },
33825
+ setInitialFlightFilters: function (state, action) {
33826
+ state.initialFlightFilters = action.payload;
33827
+ },
33828
+ setFlightFilters: function (state, action) {
33829
+ var updatedFilters = action.payload;
33830
+ updatedFilters.forEach(function (updatedFilter) {
33831
+ var existingIndex = state.flightFilters.findIndex(function (f) {
33832
+ return f.property === updatedFilter.property;
33833
+ });
33834
+ if (existingIndex !== -1) {
33835
+ state.flightFilters[existingIndex] = updatedFilter;
33836
+ } else {
33837
+ state.flightFilters.push(updatedFilter); // Optional: Add new filters if not present
33838
+ }
33839
+ });
33840
+ },
33841
+ resetFlightFilters: function (state, action) {
33842
+ state.flightFilters = action.payload;
33843
+ },
33776
33844
  setSortType: function (state, action) {
33777
33845
  state.selectedSortType = action.payload;
33778
33846
  },
33847
+ setFlightSortType: function (state, action) {
33848
+ state.selectedFlightSortType = action.payload;
33849
+ },
33779
33850
  setActiveTab: function (state, action) {
33780
33851
  state.activeTab = action.payload;
33781
33852
  },
@@ -33799,14 +33870,24 @@ var searchResultsSlice = createSlice({
33799
33870
  setTransactionId: function (state, action) {
33800
33871
  state.transactionId = action.payload;
33801
33872
  },
33802
- setAccommodationFlyInStep: function (state, action) {
33803
- state.accommodationFlyInStep = action.payload;
33873
+ setFlyInType: function (state, action) {
33874
+ state.flyInType = action.payload;
33804
33875
  },
33805
33876
  setPriceDetails: function (state, action) {
33806
33877
  state.priceDetails = action.payload;
33807
33878
  },
33808
33879
  setItinerary: function (state, action) {
33809
33880
  state.itinerary = action.payload;
33881
+ },
33882
+ setSelectedOutwardKey: function (state, action) {
33883
+ state.selectedOutwardKey = action.payload;
33884
+ },
33885
+ setSelectedReturnKey: function (state, action) {
33886
+ state.selectedReturnKey = action.payload;
33887
+ },
33888
+ resetFlightSelection: function (state) {
33889
+ state.selectedOutwardKey = null;
33890
+ state.selectedReturnKey = null;
33810
33891
  }
33811
33892
  }
33812
33893
  });
@@ -33815,6 +33896,7 @@ var setResults = ((_a = searchResultsSlice.actions), _a.setResults),
33815
33896
  setSelectedSearchResult = _a.setSelectedSearchResult,
33816
33897
  setPackagingAccoResults = _a.setPackagingAccoResults,
33817
33898
  setFilteredPackagingAccoResults = _a.setFilteredPackagingAccoResults,
33899
+ setFilteredPackagingFlightResults = _a.setFilteredPackagingFlightResults,
33818
33900
  setPackagingAccoSearchDetails = _a.setPackagingAccoSearchDetails,
33819
33901
  setSelectedPackagingAccoResult = _a.setSelectedPackagingAccoResult,
33820
33902
  setPackagingFlightResults = _a.setPackagingFlightResults,
@@ -33825,18 +33907,26 @@ var setResults = ((_a = searchResultsSlice.actions), _a.setResults),
33825
33907
  _a.selectFlight;
33826
33908
  var setIsLoading = _a.setIsLoading,
33827
33909
  setFlightsLoading = _a.setFlightsLoading,
33910
+ setInitialFilters = _a.setInitialFilters,
33828
33911
  setFilters = _a.setFilters,
33829
33912
  resetFilters = _a.resetFilters,
33913
+ setInitialFlightFilters = _a.setInitialFlightFilters,
33914
+ setFlightFilters = _a.setFlightFilters,
33915
+ resetFlightFilters = _a.resetFlightFilters,
33830
33916
  setSortType = _a.setSortType,
33917
+ setFlightSortType = _a.setFlightSortType,
33831
33918
  setActiveTab = _a.setActiveTab;
33832
33919
  _a.setCurrentPage;
33833
33920
  _a.resetSearchState;
33834
33921
  var setFlyInIsOpen = _a.setFlyInIsOpen,
33835
33922
  setEditablePackagingEntry = _a.setEditablePackagingEntry,
33836
33923
  setTransactionId = _a.setTransactionId,
33837
- setAccommodationFlyInStep = _a.setAccommodationFlyInStep,
33924
+ setFlyInType = _a.setFlyInType,
33838
33925
  setPriceDetails = _a.setPriceDetails,
33839
- setItinerary = _a.setItinerary;
33926
+ setItinerary = _a.setItinerary,
33927
+ setSelectedOutwardKey = _a.setSelectedOutwardKey,
33928
+ setSelectedReturnKey = _a.setSelectedReturnKey;
33929
+ _a.resetFlightSelection;
33840
33930
  var searchResultsReducer = searchResultsSlice.reducer;
33841
33931
 
33842
33932
  var ItemPicker = function (_a) {
@@ -34099,7 +34189,7 @@ var Icon$1 = function (_a) {
34099
34189
  title && React__default.createElement('title', null, title),
34100
34190
  React__default.createElement('path', {
34101
34191
  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',
34102
- fill: 'currentColor'
34192
+ fill: fill !== null && fill !== void 0 ? fill : 'currentColor'
34103
34193
  })
34104
34194
  );
34105
34195
  case 'ui-utensils':
@@ -43430,7 +43520,7 @@ var mapPackagingAccoResult = function (searchResult, cmsItem, languageCode, tran
43430
43520
  contents: searchResult.contents
43431
43521
  });
43432
43522
  };
43433
- var renderHotelResults = function (results, context, activeTab, translations) {
43523
+ var renderHotelResults = function (results, context, activeTab, translations, selectedPackagingAccoResult, isFlyIn) {
43434
43524
  var renderedResults = results.map(function (result, index) {
43435
43525
  var _a;
43436
43526
  var key = ''.concat((_a = result.id) !== null && _a !== void 0 ? _a : result.code, '-').concat(index);
@@ -43445,13 +43535,18 @@ var renderHotelResults = function (results, context, activeTab, translations) {
43445
43535
  return React__default.createElement(
43446
43536
  'div',
43447
43537
  { className: 'search__results__cards '.concat(activeTab ? 'search__results__cards--'.concat(activeTab) : '') },
43538
+ selectedPackagingAccoResult &&
43539
+ !isFlyIn &&
43540
+ React__default.createElement(HotelCard, { key: selectedPackagingAccoResult.code, result: selectedPackagingAccoResult, translations: translations }),
43448
43541
  renderedResults
43449
43542
  );
43450
43543
  };
43451
43544
  var HotelAccommodationResults = function (_a) {
43452
43545
  var _b, _c;
43453
- var isLoading = _a.isLoading;
43546
+ var isLoading = _a.isLoading,
43547
+ isFlyIn = _a.isFlyIn;
43454
43548
  var context = useContext(SearchResultsConfigurationContext);
43549
+ var dispatch = useDispatch();
43455
43550
  if (!context) {
43456
43551
  return null;
43457
43552
  }
@@ -43461,7 +43556,10 @@ var HotelAccommodationResults = function (_a) {
43461
43556
  }),
43462
43557
  filteredResults = _d.filteredResults,
43463
43558
  filteredPackagingAccoResults = _d.filteredPackagingAccoResults,
43559
+ packagingAccoResults = _d.packagingAccoResults,
43464
43560
  activeTab = _d.activeTab;
43561
+ _d.flyInIsOpen;
43562
+ var selectedPackagingAccoResultCode = _d.selectedPackagingAccoResultCode;
43465
43563
  var cmsMap = React__default.useMemo(
43466
43564
  function () {
43467
43565
  var _a;
@@ -43524,51 +43622,947 @@ var HotelAccommodationResults = function (_a) {
43524
43622
  : firstPackagingResult.fromDate;
43525
43623
  var firstResultDay = firstResultDate ? format$1(parseISO(firstResultDate), 'd') : null;
43526
43624
  var firstResultMonth = firstResultDate ? format$1(parseISO(firstResultDate), 'MMM') : null;
43527
- if (isLoading) {
43528
- return React__default.createElement(
43529
- React__default.Fragment,
43530
- null,
43531
- (_c = context.customSpinner) !== null && _c !== void 0 ? _c : React__default.createElement(Spinner, null)
43532
- );
43533
- }
43534
- if (mappedResults.length === 0) {
43535
- return React__default.createElement('div', { className: 'no-results' }, translations.SRP.NO_RESULTS);
43536
- }
43625
+ var selectedPackagingAccoResult = React__default.useMemo(
43626
+ function () {
43627
+ var selectedResult = packagingAccoResults.find(function (result) {
43628
+ return result.code === selectedPackagingAccoResultCode;
43629
+ });
43630
+ if (selectedResult) {
43631
+ return mapPackagingAccoResult(selectedResult, cmsMap.get(selectedResult.code), context.languageCode, translations);
43632
+ }
43633
+ },
43634
+ [packagingAccoResults, selectedPackagingAccoResultCode, cmsMap, context.languageCode, translations]
43635
+ );
43636
+ var visibleResults = React__default.useMemo(
43637
+ function () {
43638
+ var shouldShowAll =
43639
+ (context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) !== build.PortalQsmType.AccommodationAndFlight || isFlyIn;
43640
+ if (shouldShowAll) {
43641
+ return mappedResults;
43642
+ }
43643
+ if (selectedPackagingAccoResult) {
43644
+ return mappedResults
43645
+ .filter(function (result) {
43646
+ return result.code !== selectedPackagingAccoResult.code;
43647
+ })
43648
+ .slice(0, 2);
43649
+ }
43650
+ return mappedResults.slice(0, 3);
43651
+ },
43652
+ [context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType, mappedResults, isFlyIn, selectedPackagingAccoResult]
43653
+ );
43654
+ var handleShowMoreHotels = function (flyInType) {
43655
+ dispatch(setFlyInType(flyInType));
43656
+ dispatch(setFlyInIsOpen(true));
43657
+ };
43537
43658
  return React__default.createElement(
43538
43659
  React__default.Fragment,
43539
43660
  null,
43661
+ !isFlyIn &&
43662
+ React__default.createElement(
43663
+ 'div',
43664
+ { className: 'search__results__label search__results__label--secondary' },
43665
+ React__default.createElement(
43666
+ 'div',
43667
+ { className: 'search__results__label__date' },
43668
+ firstResultDay && firstResultMonth
43669
+ ? React__default.createElement(
43670
+ React__default.Fragment,
43671
+ null,
43672
+ React__default.createElement('p', { className: 'search__results__label__date-date' }, firstResultDay),
43673
+ React__default.createElement('p', null, firstResultMonth)
43674
+ )
43675
+ : React__default.createElement(Icon$1, { name: 'ui-bed', height: 16, fill: 'white' })
43676
+ ),
43677
+ React__default.createElement(
43678
+ 'div',
43679
+ { className: 'search__results__label__text' },
43680
+ React__default.createElement('h3', null, translations.SRP.SELECT, ' ', React__default.createElement('strong', null, translations.SRP.ACCOMMODATION))
43681
+ )
43682
+ ),
43683
+ isLoading
43684
+ ? React__default.createElement(
43685
+ React__default.Fragment,
43686
+ null,
43687
+ (_c = context.customSpinner) !== null && _c !== void 0 ? _c : React__default.createElement(Spinner, null)
43688
+ )
43689
+ : renderHotelResults(visibleResults, context, activeTab, translations, selectedPackagingAccoResult, isFlyIn),
43690
+ packagingAccoResults.length > 3 &&
43691
+ !isFlyIn &&
43692
+ React__default.createElement(
43693
+ 'div',
43694
+ { className: 'search__results__cards__actions' },
43695
+ React__default.createElement(
43696
+ 'button',
43697
+ {
43698
+ className: 'cta cta--secondary',
43699
+ onClick: function () {
43700
+ return handleShowMoreHotels('acco-results');
43701
+ }
43702
+ },
43703
+ translations.SRP.SHOW_MORE
43704
+ )
43705
+ ),
43706
+ mappedResults.length === 0 && !isLoading && React__default.createElement('div', { className: 'no-results' }, translations.SRP.NO_RESULTS)
43707
+ );
43708
+ };
43709
+
43710
+ var selectSearchResultsState = function (state) {
43711
+ return state.searchResults;
43712
+ };
43713
+ var selectPackagingFlightResults = createSelector([selectSearchResultsState], function (state) {
43714
+ return state.packagingFlightResults;
43715
+ });
43716
+ var selectFilteredPackagingFlightResults = createSelector([selectSearchResultsState], function (state) {
43717
+ return state.filteredPackagingFlightResults;
43718
+ });
43719
+ var selectSelectedOutwardKey = createSelector([selectSearchResultsState], function (state) {
43720
+ return state.selectedOutwardKey;
43721
+ });
43722
+ var selectSelectedReturnKey = createSelector([selectSearchResultsState], function (state) {
43723
+ return state.selectedReturnKey;
43724
+ });
43725
+ var selectUniqueOutwardFlights = createSelector([selectFilteredPackagingFlightResults], function (packagingFlightResults) {
43726
+ var map = new Map();
43727
+ packagingFlightResults.forEach(function (flight) {
43728
+ var key = getFlightKey(flight.outward.segments);
43729
+ if (!map.has(key)) {
43730
+ map.set(key, flight);
43731
+ }
43732
+ });
43733
+ return Array.from(map.values());
43734
+ });
43735
+ var selectUniqueReturnFlights = createSelector(
43736
+ [selectFilteredPackagingFlightResults, selectSelectedOutwardKey],
43737
+ function (packagingFlightResults, selectedOutwardKey) {
43738
+ if (!selectedOutwardKey) return [];
43739
+ var matchingCombinations = packagingFlightResults.filter(function (flight) {
43740
+ return getFlightKey(flight.outward.segments) === selectedOutwardKey;
43741
+ });
43742
+ var map = new Map();
43743
+ matchingCombinations.forEach(function (flight) {
43744
+ var key = getFlightKey(flight.return.segments);
43745
+ if (!map.has(key)) {
43746
+ map.set(key, flight);
43747
+ }
43748
+ });
43749
+ return Array.from(map.values());
43750
+ }
43751
+ );
43752
+ var selectSelectedOutward = createSelector([selectPackagingFlightResults, selectSelectedOutwardKey], function (packagingFlightResults, selectedOutwardKey) {
43753
+ var _a;
43754
+ if (!selectedOutwardKey) return null;
43755
+ return (_a = packagingFlightResults.find(function (flight) {
43756
+ return getFlightKey(flight.outward.segments) === selectedOutwardKey;
43757
+ })) !== null && _a !== void 0
43758
+ ? _a
43759
+ : null;
43760
+ });
43761
+ var selectSelectedReturn = createSelector([selectPackagingFlightResults, selectSelectedReturnKey], function (packagingFlightResults, selectedReturnKey) {
43762
+ var _a;
43763
+ if (!selectedReturnKey) return null;
43764
+ return (_a = packagingFlightResults.find(function (flight) {
43765
+ return getFlightKey(flight.return.segments) === selectedReturnKey;
43766
+ })) !== null && _a !== void 0
43767
+ ? _a
43768
+ : null;
43769
+ });
43770
+ var selectSelectedCombinationFlight = createSelector(
43771
+ [selectPackagingFlightResults, selectSelectedOutwardKey, selectSelectedReturnKey],
43772
+ function (packagingFlightResults, selectedOutwardKey, selectedReturnKey) {
43773
+ var _a;
43774
+ if (!selectedOutwardKey || !selectedReturnKey) return null;
43775
+ return (_a = packagingFlightResults.find(function (flight) {
43776
+ return getFlightKey(flight.outward.segments) === selectedOutwardKey && getFlightKey(flight.return.segments) === selectedReturnKey;
43777
+ })) !== null && _a !== void 0
43778
+ ? _a
43779
+ : null;
43780
+ }
43781
+ );
43782
+
43783
+ var IndependentFlightOption = function (_a) {
43784
+ var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
43785
+ var item = _a.item,
43786
+ onSelect = _a.onSelect,
43787
+ guid = _a.guid,
43788
+ selectedGuid = _a.selectedGuid,
43789
+ isOutward = _a.isOutward,
43790
+ showSelectedState = _a.showSelectedState,
43791
+ currentSelectedPrice = _a.currentSelectedPrice,
43792
+ price = _a.price;
43793
+ var context = useContext(SearchResultsConfigurationContext);
43794
+ var language = (_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB';
43795
+ var translations = getTranslations(language);
43796
+ var _p = useState(false),
43797
+ detailsOpen = _p[0],
43798
+ setDetailsOpen = _p[1];
43799
+ var priceDifference = price && currentSelectedPrice ? price - currentSelectedPrice : null;
43800
+ return React__default.createElement(
43801
+ 'div',
43802
+ { className: 'search__result-card', key: 'flight-'.concat(item.code) },
43540
43803
  React__default.createElement(
43541
43804
  'div',
43542
- { className: 'search__results__label search__results__label--secondary' },
43805
+ { className: 'flight '.concat(showSelectedState && selectedGuid === guid ? 'flight--selected' : '') },
43543
43806
  React__default.createElement(
43544
43807
  'div',
43545
- { className: 'search__results__label__date' },
43546
- React__default.createElement('p', { className: 'search__results__label__date-date' }, firstResultDay),
43547
- React__default.createElement('p', null, firstResultMonth)
43808
+ { className: 'flight__option' },
43809
+ React__default.createElement(
43810
+ 'div',
43811
+ { className: 'flight__content' },
43812
+ React__default.createElement(
43813
+ 'div',
43814
+ { className: 'flight__flights' },
43815
+ React__default.createElement(
43816
+ 'div',
43817
+ { className: 'flight__flight' },
43818
+ React__default.createElement(
43819
+ 'div',
43820
+ { className: 'flight__flight__header' },
43821
+ React__default.createElement('div', { className: 'flight__status__container' }),
43822
+ React__default.createElement(
43823
+ 'div',
43824
+ { className: 'flight__price' },
43825
+ price != null &&
43826
+ price > 0 &&
43827
+ (isOutward
43828
+ ? React__default.createElement(
43829
+ 'span',
43830
+ { className: 'price' },
43831
+ translations.QSM.ROUNDTRIP + ' ' + translations.SRP.PRICE,
43832
+ '\u00A0',
43833
+ formatPrice$2(
43834
+ price,
43835
+ 'EUR',
43836
+ (_c = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _c !== void 0 ? _c : 'en-GB'
43837
+ )
43838
+ )
43839
+ : priceDifference != null &&
43840
+ Math.abs(priceDifference) > 0 &&
43841
+ React__default.createElement(
43842
+ 'span',
43843
+ { className: 'price' },
43844
+ priceDifference > 0 ? '+' : '-',
43845
+ '\u00A0',
43846
+ formatPrice$2(
43847
+ Math.abs(priceDifference),
43848
+ 'EUR',
43849
+ (_d = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _d !== void 0 ? _d : 'en-GB'
43850
+ )
43851
+ )),
43852
+ React__default.createElement(
43853
+ 'button',
43854
+ {
43855
+ type: 'button',
43856
+ className: 'cta '.concat(selectedGuid === guid ? 'cta--selected' : 'cta--select'),
43857
+ onClick: function () {
43858
+ return onSelect === null || onSelect === void 0 ? void 0 : onSelect();
43859
+ }
43860
+ },
43861
+ selectedGuid === guid ? 'Selected' : 'Select'
43862
+ )
43863
+ )
43864
+ )
43865
+ ),
43866
+ React__default.createElement(
43867
+ 'div',
43868
+ { className: 'flight__flight' },
43869
+ React__default.createElement(
43870
+ 'div',
43871
+ { className: 'flight__flight__container' },
43872
+ React__default.createElement(
43873
+ 'div',
43874
+ { className: 'flight__flight__wrapper' },
43875
+ React__default.createElement(
43876
+ 'div',
43877
+ { className: 'flight__logo__wrapper' },
43878
+ React__default.createElement('img', {
43879
+ src: 'https://media.tidesoftware.be/media/shared/Airlines/'.concat(
43880
+ (_e = getDepartureSegment(item)) === null || _e === void 0 ? void 0 : _e.marketingAirlineCode,
43881
+ '.png?height=256'
43882
+ ),
43883
+ alt: '',
43884
+ className: 'flight__logo'
43885
+ }),
43886
+ React__default.createElement('span', null, (_f = getDepartureSegment(item)) === null || _f === void 0 ? void 0 : _f.marketingAirlineName)
43887
+ ),
43888
+ React__default.createElement(
43889
+ 'div',
43890
+ { className: 'flight__info' },
43891
+ React__default.createElement(
43892
+ 'div',
43893
+ { className: 'flight__info__times' },
43894
+ React__default.createElement(
43895
+ 'strong',
43896
+ null,
43897
+ timeFromDateTime((_g = getDepartureSegment(item)) === null || _g === void 0 ? void 0 : _g.departureDateTime),
43898
+ ' ',
43899
+ (_h = getDepartureSegment(item)) === null || _h === void 0 ? void 0 : _h.departureAirportCode
43900
+ ),
43901
+ React__default.createElement(
43902
+ 'p',
43903
+ null,
43904
+ longFormatDate((_j = getDepartureSegment(item)) === null || _j === void 0 ? void 0 : _j.departureDateTime, language)
43905
+ )
43906
+ ),
43907
+ React__default.createElement(
43908
+ 'div',
43909
+ { className: 'flight__info__duration' },
43910
+ React__default.createElement('p', null, durationTicksInHoursString(item.durationInTicks)),
43911
+ React__default.createElement(
43912
+ 'div',
43913
+ { className: 'flight__info__duration__stops' },
43914
+ React__default.createElement('div', { className: 'flight__info__duration__stop' })
43915
+ ),
43916
+ React__default.createElement(
43917
+ 'span',
43918
+ null,
43919
+ getNumberOfStopsLabel(item, translations.SRP.DIRECT, translations.SRP.STOPS, translations.SRP.STOP)
43920
+ )
43921
+ ),
43922
+ React__default.createElement(
43923
+ 'div',
43924
+ { className: 'flight__info__times flight__info__times--arrival' },
43925
+ React__default.createElement(
43926
+ 'strong',
43927
+ null,
43928
+ timeFromDateTime((_k = getArrivalSegment(item)) === null || _k === void 0 ? void 0 : _k.arrivalDateTime),
43929
+ ' ',
43930
+ (_l = getArrivalSegment(item)) === null || _l === void 0 ? void 0 : _l.arrivalAirportCode
43931
+ ),
43932
+ React__default.createElement(
43933
+ 'p',
43934
+ null,
43935
+ longFormatDate((_m = getArrivalSegment(item)) === null || _m === void 0 ? void 0 : _m.arrivalDateTime, language)
43936
+ )
43937
+ )
43938
+ )
43939
+ ),
43940
+ React__default.createElement(
43941
+ 'div',
43942
+ { className: 'flight__detail__btn__wrapper' },
43943
+ React__default.createElement(
43944
+ 'div',
43945
+ {
43946
+ className: 'flight__detail__btn '.concat(detailsOpen ? 'flight__detail__btn--active' : ''),
43947
+ onClick: function () {
43948
+ return setDetailsOpen(function (prev) {
43949
+ return !prev;
43950
+ });
43951
+ }
43952
+ },
43953
+ React__default.createElement(Icon$1, { name: 'ui-chevron', className: 'flight__detail__btn__arrow', width: 16, height: 16 })
43954
+ )
43955
+ )
43956
+ ),
43957
+ React__default.createElement(
43958
+ 'div',
43959
+ { className: 'flight__detail '.concat(detailsOpen ? 'flight__detail--active' : '') },
43960
+ (_o = getFlightSegments(item)) === null || _o === void 0
43961
+ ? void 0
43962
+ : _o.map(function (segment, index) {
43963
+ return React__default.createElement(
43964
+ React__default.Fragment,
43965
+ { key: 'outward-segment-'.concat(index, '-').concat(segment.flightNumber) },
43966
+ React__default.createElement(
43967
+ 'div',
43968
+ { className: 'flight__info' },
43969
+ React__default.createElement(
43970
+ 'div',
43971
+ { className: 'flight__info__times__wrapper' },
43972
+ React__default.createElement(
43973
+ 'div',
43974
+ { className: 'flight__info__times' },
43975
+ React__default.createElement('p', null, timeFromDateTime(segment.departureDateTime)),
43976
+ React__default.createElement('strong', null, segment.departureAirportCode),
43977
+ React__default.createElement('p', null, longFormatDate(segment.departureDateTime, language))
43978
+ ),
43979
+ React__default.createElement('div', null, React__default.createElement(Icon$1, { name: 'ui-plane-depart', width: 30, height: 20 }))
43980
+ ),
43981
+ React__default.createElement(
43982
+ 'div',
43983
+ { className: 'flight__info__duration' },
43984
+ React__default.createElement('p', null, durationTicksInHoursString(segment.durationInTicks)),
43985
+ React__default.createElement('div', { className: 'flight__info__duration__stops' }),
43986
+ React__default.createElement('span', null, segment.marketingAirlineName),
43987
+ React__default.createElement('strong', null, segment.operatingFlightNumber)
43988
+ ),
43989
+ React__default.createElement(
43990
+ 'div',
43991
+ { className: 'flight__info__times__wrapper flight__info__times__wrapper--arrival' },
43992
+ React__default.createElement('div', null, React__default.createElement(Icon$1, { name: 'ui-plane-arrive', width: 30, height: 20 })),
43993
+ React__default.createElement(
43994
+ 'div',
43995
+ { className: 'flight__info__times flight__info__times--arrival' },
43996
+ React__default.createElement('p', null, timeFromDateTime(segment.arrivalDateTime)),
43997
+ React__default.createElement('strong', null, segment.arrivalAirportCode),
43998
+ React__default.createElement('p', null, longFormatDate(segment.arrivalDateTime, language))
43999
+ )
44000
+ )
44001
+ ),
44002
+ segment.transferTimeInTicks &&
44003
+ React__default.createElement(
44004
+ 'div',
44005
+ { className: 'flight__info' },
44006
+ React__default.createElement('div', { className: 'flight__info__times' }),
44007
+ React__default.createElement(
44008
+ 'div',
44009
+ { className: 'flight__info__duration flight__info__duration--waittime' },
44010
+ React__default.createElement(
44011
+ 'div',
44012
+ { className: 'flight__info__duration__stops flight__info__duration__stops--stoptime' },
44013
+ React__default.createElement(Icon$1, { name: 'ui-clock', width: 24, height: 24 })
44014
+ ),
44015
+ React__default.createElement(
44016
+ 'div',
44017
+ { className: 'flight__info__duration__stoptime' },
44018
+ React__default.createElement('span', null, 'Stop time'),
44019
+ React__default.createElement('strong', null, durationTicksInHoursString(segment.transferTimeInTicks))
44020
+ )
44021
+ ),
44022
+ React__default.createElement('div', { className: 'flight__info__times flight__info__times--arrival' })
44023
+ )
44024
+ );
44025
+ })
44026
+ )
44027
+ )
44028
+ )
44029
+ )
44030
+ )
44031
+ )
44032
+ );
44033
+ };
44034
+
44035
+ var MultiRangeFilter = function (_a) {
44036
+ var min = _a.min,
44037
+ max = _a.max,
44038
+ selectedMin = _a.selectedMin,
44039
+ selectedMax = _a.selectedMax,
44040
+ valueFormatter = _a.valueFormatter,
44041
+ onChange = _a.onChange;
44042
+ var _b = useState(false),
44043
+ isDragging = _b[0],
44044
+ setIsDragging = _b[1];
44045
+ var _c = useState(0),
44046
+ leftPercentage = _c[0],
44047
+ setLeftPercentage = _c[1];
44048
+ var _d = useState(0),
44049
+ rightPercentage = _d[0],
44050
+ setRightPercentage = _d[1];
44051
+ var _e = useState(selectedMin !== null && selectedMin !== void 0 ? selectedMin : min),
44052
+ minVal = _e[0],
44053
+ setMinVal = _e[1];
44054
+ var _f = useState(selectedMax !== null && selectedMax !== void 0 ? selectedMax : max),
44055
+ maxVal = _f[0],
44056
+ setMaxVal = _f[1];
44057
+ var minGap = 5;
44058
+ // Sync internal state with external selectedMin/selectedMax changes
44059
+ useEffect(
44060
+ function () {
44061
+ setMinVal(selectedMin !== null && selectedMin !== void 0 ? selectedMin : min);
44062
+ setMaxVal(selectedMax !== null && selectedMax !== void 0 ? selectedMax : max);
44063
+ },
44064
+ [min, max, selectedMin, selectedMax]
44065
+ );
44066
+ // Recalculate slider track whenever values change
44067
+ useEffect(
44068
+ function () {
44069
+ var range = max - min || 1;
44070
+ var minPercent = ((minVal - min) / range) * 100;
44071
+ var maxPercent = ((maxVal - min) / range) * 100;
44072
+ setLeftPercentage(minPercent);
44073
+ setRightPercentage(100 - maxPercent);
44074
+ },
44075
+ [minVal, maxVal, min, max]
44076
+ );
44077
+ var slideMin = function (e) {
44078
+ var value = parseInt(e.target.value, 10);
44079
+ // Ensure the thumbs don’t cross and enforce minGap
44080
+ if (value <= maxVal - minGap) {
44081
+ setMinVal(value);
44082
+ }
44083
+ };
44084
+ var slideMax = function (e) {
44085
+ var value = parseInt(e.target.value, 10);
44086
+ // Ensure the thumbs don’t cross and enforce minGap
44087
+ if (value >= minVal + minGap) {
44088
+ setMaxVal(value);
44089
+ }
44090
+ };
44091
+ var startDrag = function () {
44092
+ setIsDragging(true);
44093
+ };
44094
+ var stopDrag = function () {
44095
+ setIsDragging(false);
44096
+ // Notify parent with the final values
44097
+ onChange(minVal, maxVal);
44098
+ };
44099
+ return React__default.createElement(
44100
+ 'div',
44101
+ { className: 'double-slider-box' },
44102
+ React__default.createElement(
44103
+ 'div',
44104
+ { className: 'input-box' },
44105
+ React__default.createElement('div', { className: 'min-box' }, valueFormatter(minVal)),
44106
+ React__default.createElement('div', { className: 'max-box' }, valueFormatter(maxVal))
44107
+ ),
44108
+ React__default.createElement(
44109
+ 'div',
44110
+ { className: 'range-slider' },
44111
+ React__default.createElement('div', {
44112
+ className: 'slider-track',
44113
+ style: { left: ''.concat(leftPercentage, '%'), right: ''.concat(rightPercentage, '%') }
44114
+ }),
44115
+ React__default.createElement('input', {
44116
+ type: 'range',
44117
+ min: min,
44118
+ max: max,
44119
+ value: minVal,
44120
+ onChange: slideMin,
44121
+ onMouseDown: startDrag,
44122
+ onMouseUp: stopDrag,
44123
+ onTouchStart: startDrag,
44124
+ onTouchEnd: stopDrag,
44125
+ className: 'min-val'
44126
+ }),
44127
+ React__default.createElement('input', {
44128
+ type: 'range',
44129
+ min: min,
44130
+ max: max,
44131
+ value: maxVal,
44132
+ onChange: slideMax,
44133
+ onMouseDown: startDrag,
44134
+ onMouseUp: stopDrag,
44135
+ onTouchStart: startDrag,
44136
+ onTouchEnd: stopDrag,
44137
+ className: 'max-val'
44138
+ }),
44139
+ isDragging && React__default.createElement('div', { className: 'min-tooltip' }, valueFormatter(minVal)),
44140
+ isDragging && React__default.createElement('div', { className: 'max-tooltip' }, valueFormatter(maxVal))
44141
+ )
44142
+ );
44143
+ };
44144
+
44145
+ var Filters = function (_a) {
44146
+ var _b;
44147
+ var initialFilters = _a.initialFilters,
44148
+ filters = _a.filters,
44149
+ isOpen = _a.isOpen,
44150
+ handleSetIsOpen = _a.handleSetIsOpen,
44151
+ isLoading = _a.isLoading,
44152
+ setFilters = _a.setFilters,
44153
+ resetFilters = _a.resetFilters;
44154
+ var context = useContext(SearchResultsConfigurationContext);
44155
+ if (!context || !context.showFilters) {
44156
+ return null;
44157
+ }
44158
+ var translations = getTranslations((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
44159
+ var _c = useState({}),
44160
+ visibleFilters = _c[0],
44161
+ setVisibleFilters = _c[1];
44162
+ var toggleFilterVisibility = function (filterId) {
44163
+ setVisibleFilters(function (prev) {
44164
+ var _a;
44165
+ return __assign(__assign({}, prev), ((_a = {}), (_a[filterId] = !prev[filterId]), _a));
44166
+ });
44167
+ };
44168
+ var handleCheckBoxFilter = function (filter, option) {
44169
+ var updated = filters.map(function (f) {
44170
+ var _a;
44171
+ if (f.property !== filter.property) return f;
44172
+ return __assign(__assign({}, f), {
44173
+ options:
44174
+ (_a = f.options) === null || _a === void 0
44175
+ ? void 0
44176
+ : _a.map(function (opt) {
44177
+ return opt.value === option.value ? __assign(__assign({}, opt), { isChecked: !opt.isChecked }) : opt;
44178
+ })
44179
+ });
44180
+ });
44181
+ setFilters(updated);
44182
+ };
44183
+ var handleSliderChange = function (filter, newMin, newMax) {
44184
+ var updated = filters.map(function (f) {
44185
+ if (f.property !== filter.property) return f;
44186
+ return __assign(__assign({}, f), { selectedMin: newMin, selectedMax: newMax });
44187
+ });
44188
+ setFilters(updated);
44189
+ };
44190
+ var handleFullReset = function () {
44191
+ if (!isLoading) {
44192
+ resetFilters(initialFilters);
44193
+ }
44194
+ };
44195
+ return React__default.createElement(
44196
+ 'div',
44197
+ { className: 'search__filters--modal '.concat(isOpen ? 'is-open' : '') },
44198
+ React__default.createElement('div', {
44199
+ className: 'search__filters--background',
44200
+ onClick: function () {
44201
+ return handleSetIsOpen();
44202
+ }
44203
+ }),
44204
+ React__default.createElement(
44205
+ 'button',
44206
+ {
44207
+ className: 'search__filters--close',
44208
+ onClick: function () {
44209
+ return handleSetIsOpen();
44210
+ }
44211
+ },
44212
+ React__default.createElement(Icon$1, { name: 'ui-close', height: 24 })
44213
+ ),
44214
+ React__default.createElement(
44215
+ 'div',
44216
+ { className: 'search__filters' },
44217
+ React__default.createElement(
44218
+ 'div',
44219
+ { className: 'search__filter-row search__filter__header' },
44220
+ React__default.createElement(
44221
+ 'div',
44222
+ { className: 'search__filter-row-flex-title' },
44223
+ React__default.createElement('p', { className: 'search__filter-small-title' }, translations.SRP.FILTERS)
44224
+ ),
44225
+ !isLoading &&
44226
+ React__default.createElement(
44227
+ 'a',
44228
+ {
44229
+ className: 'search__filter-reset',
44230
+ onClick: function () {
44231
+ return handleFullReset();
44232
+ }
44233
+ },
44234
+ translations.SRP.RESET
44235
+ )
43548
44236
  ),
44237
+ isLoading
44238
+ ? React__default.createElement(Spinner, null)
44239
+ : React__default.createElement(
44240
+ React__default.Fragment,
44241
+ null,
44242
+ React__default.createElement(
44243
+ 'div',
44244
+ { className: 'search__filters__group-container' },
44245
+ filters.map(function (filter, index) {
44246
+ var _a, _b;
44247
+ var isVisible = (_a = visibleFilters[filter.property]) !== null && _a !== void 0 ? _a : true;
44248
+ return React__default.createElement(
44249
+ 'div',
44250
+ { key: ''.concat(filter.property, '-').concat(index), className: 'search__filter-group' },
44251
+ React__default.createElement(
44252
+ 'div',
44253
+ {
44254
+ className: 'search__filter-row search__filter-row--underline',
44255
+ onClick: function () {
44256
+ return toggleFilterVisibility(filter.property);
44257
+ },
44258
+ role: 'button',
44259
+ tabIndex: 0
44260
+ },
44261
+ React__default.createElement('h6', { className: 'search__filter-large-title' }, filter.label),
44262
+ React__default.createElement(
44263
+ 'svg',
44264
+ {
44265
+ id: 'search-chevron-up-icon',
44266
+ className: 'search__filter-chevron-icon '.concat(isVisible ? 'search__filter-chevron-icon--flipped' : '', ' '),
44267
+ viewBox: '0 0 10 6.063',
44268
+ width: 10,
44269
+ height: 6.063
44270
+ },
44271
+ React__default.createElement('path', {
44272
+ id: 'Path_62',
44273
+ 'data-name': 'Path 62',
44274
+ d: 'M245-617.937l-5-5L241.063-624,245-620.062,248.938-624,250-622.937Z',
44275
+ transform: 'translate(-240 624)',
44276
+ fill: '#707070'
44277
+ })
44278
+ )
44279
+ ),
44280
+ isVisible &&
44281
+ filter.type === 'checkbox' &&
44282
+ React__default.createElement(
44283
+ 'div',
44284
+ { className: 'search__filter-rows' },
44285
+ filter.options &&
44286
+ filter.options.map(function (option, optionIndex) {
44287
+ return React__default.createElement(
44288
+ 'div',
44289
+ { className: 'search__filter-row search__filter-row--checkbox', key: ''.concat(option.label, '-').concat(optionIndex) },
44290
+ React__default.createElement(
44291
+ 'div',
44292
+ { className: 'checkbox' },
44293
+ React__default.createElement(
44294
+ 'label',
44295
+ { className: 'checkbox__label' },
44296
+ React__default.createElement('input', {
44297
+ type: 'checkbox',
44298
+ className: 'checkbox__input checkbox__input--parent',
44299
+ checked: option.isChecked,
44300
+ onChange: function (e) {
44301
+ return handleCheckBoxFilter(filter, option);
44302
+ }
44303
+ }),
44304
+ React__default.createElement('span', { className: 'radiobutton__label-text' }, option.label)
44305
+ )
44306
+ )
44307
+ );
44308
+ })
44309
+ ),
44310
+ isVisible &&
44311
+ filter.type === 'toggle' &&
44312
+ React__default.createElement(
44313
+ 'div',
44314
+ { className: 'search__filter-rows' },
44315
+ (_b = filter.options) === null || _b === void 0
44316
+ ? void 0
44317
+ : _b.map(function (option, optionIndex) {
44318
+ return React__default.createElement(
44319
+ 'div',
44320
+ { className: 'search__filter-row', key: ''.concat(option.label, '-').concat(optionIndex) },
44321
+ React__default.createElement('span', { className: 'search__filter-toggle-label' }, option.label),
44322
+ React__default.createElement('div', { className: 'checkbox' }),
44323
+ React__default.createElement(
44324
+ 'label',
44325
+ { className: 'checkbox__label' },
44326
+ React__default.createElement('input', {
44327
+ type: 'checkbox',
44328
+ className: 'checkbox__input',
44329
+ checked: option.isChecked,
44330
+ onChange: function () {
44331
+ return handleCheckBoxFilter(filter, option);
44332
+ }
44333
+ })
44334
+ )
44335
+ );
44336
+ })
44337
+ ),
44338
+ isVisible &&
44339
+ filter &&
44340
+ filter.type === 'slider' &&
44341
+ (function () {
44342
+ var _a, _b, _c, _d;
44343
+ var min = (_a = filter.min) !== null && _a !== void 0 ? _a : 0;
44344
+ var max = (_b = filter.max) !== null && _b !== void 0 ? _b : 100;
44345
+ var selectedMin = (_c = filter.selectedMin) !== null && _c !== void 0 ? _c : min;
44346
+ var selectedMax = (_d = filter.selectedMax) !== null && _d !== void 0 ? _d : max;
44347
+ return React__default.createElement(MultiRangeFilter, {
44348
+ min: min,
44349
+ max: max,
44350
+ selectedMin: selectedMin,
44351
+ selectedMax: selectedMax,
44352
+ valueFormatter: function (value) {
44353
+ return ''.concat(value);
44354
+ },
44355
+ onChange: function (newMin, newMax) {
44356
+ handleSliderChange(filter, newMin, newMax);
44357
+ }
44358
+ });
44359
+ })()
44360
+ );
44361
+ })
44362
+ )
44363
+ )
44364
+ )
44365
+ );
44366
+ };
44367
+
44368
+ var PackageingFlightsFlyIn = function (_a) {
44369
+ var _b;
44370
+ _a.isOpen;
44371
+ _a.setIsOpen;
44372
+ var context = useContext(SearchResultsConfigurationContext);
44373
+ var language = (_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB';
44374
+ var translations = getTranslations(language);
44375
+ var dispatch = useDispatch();
44376
+ var _c = useSelector(function (state) {
44377
+ return state.searchResults;
44378
+ }),
44379
+ flightsLoading = _c.flightsLoading,
44380
+ initialFlightFilters = _c.initialFlightFilters,
44381
+ flightFilters = _c.flightFilters,
44382
+ flyInType = _c.flyInType,
44383
+ selectedFlightSortType = _c.selectedFlightSortType;
44384
+ var uniqueOutwardFlights = useSelector(selectUniqueOutwardFlights);
44385
+ var uniqueReturnFlights = useSelector(selectUniqueReturnFlights);
44386
+ var selectedOutward = useSelector(selectSelectedOutward);
44387
+ var selectedReturn = useSelector(selectSelectedReturn);
44388
+ var _d = useState(false),
44389
+ outwardStepComplete = _d[0],
44390
+ setOutwardStepComplete = _d[1];
44391
+ var handleConfirm = function () {
44392
+ if (!outwardStepComplete) {
44393
+ setOutwardStepComplete(true);
44394
+ dispatch(setFlyInType('flight-return-results'));
44395
+ return;
44396
+ } else {
44397
+ dispatch(setFlyInType(null));
44398
+ setOutwardStepComplete(false);
44399
+ dispatch(setFlyInIsOpen(false));
44400
+ }
44401
+ };
44402
+ var sortByTypes = [
44403
+ { direction: 'asc', label: 'default' },
44404
+ { direction: 'asc', label: 'price' },
44405
+ { direction: 'desc', label: 'price' },
44406
+ { direction: 'asc', label: 'departureTime' },
44407
+ { direction: 'desc', label: 'departureTime' },
44408
+ { direction: 'asc', label: 'durationInTicks' },
44409
+ { direction: 'desc', label: 'durationInTicks' }
44410
+ ];
44411
+ var handleSortChange = function (newSortKey, direction) {
44412
+ if (sortByTypes === undefined) return;
44413
+ var newSortByType = findSortByType(sortByTypes, newSortKey, direction !== null && direction !== void 0 ? direction : 'asc');
44414
+ if (newSortByType) {
44415
+ dispatch(setFlightSortType(newSortByType));
44416
+ }
44417
+ };
44418
+ return React__default.createElement(
44419
+ React__default.Fragment,
44420
+ null,
44421
+ React__default.createElement(
44422
+ 'div',
44423
+ { className: 'flyin__content flyin__content--columns' },
44424
+ flightsLoading
44425
+ ? React__default.createElement(Spinner, null)
44426
+ : React__default.createElement(
44427
+ React__default.Fragment,
44428
+ null,
44429
+ React__default.createElement(Filters, {
44430
+ initialFilters: initialFlightFilters,
44431
+ filters: flightFilters,
44432
+ isOpen: false,
44433
+ handleSetIsOpen: function () {},
44434
+ // handleApplyFilters={() => setSearchTrigger((prev) => prev + 1)}
44435
+ isLoading: flightsLoading,
44436
+ setFilters: function (filters) {
44437
+ return dispatch(setFlightFilters(filters));
44438
+ },
44439
+ resetFilters: function (filters) {
44440
+ return dispatch(resetFlightFilters(filters));
44441
+ }
44442
+ }),
44443
+ React__default.createElement(
44444
+ 'div',
44445
+ { className: 'search__results__wrapper' },
44446
+ React__default.createElement(
44447
+ 'div',
44448
+ { className: 'search__result-row' },
44449
+ React__default.createElement(
44450
+ 'span',
44451
+ { className: 'search__result-row-text' },
44452
+ (uniqueOutwardFlights === null || uniqueOutwardFlights === void 0 ? void 0 : uniqueOutwardFlights.length) && uniqueOutwardFlights.length,
44453
+ '\u00A0',
44454
+ translations.FLIGHTS_FORM.FLIGHTS_FOUND_2,
44455
+ '\u00A0',
44456
+ translations.FLIGHTS_FORM.FLIGHTS_FOUND_3
44457
+ ),
44458
+ sortByTypes &&
44459
+ sortByTypes.length > 0 &&
44460
+ React__default.createElement(
44461
+ 'div',
44462
+ { className: 'search__result-row-filter' },
44463
+ React__default.createElement(ItemPicker, {
44464
+ items: sortByTypes,
44465
+ selection: (selectedFlightSortType === null || selectedFlightSortType === void 0 ? void 0 : selectedFlightSortType.label) || undefined,
44466
+ selectedSortByType: selectedFlightSortType || undefined,
44467
+ label: translations.SRP.SORTBY,
44468
+ placeholder: translations.SRP.SORTBY,
44469
+ classModifier: '',
44470
+ valueFormatter: function (value, direction) {
44471
+ return getSortingName(translations, findSortByType(sortByTypes, value, direction !== null && direction !== void 0 ? direction : 'asc'));
44472
+ },
44473
+ // onPick={handleSortChange}
44474
+ onPick: function (newSortKey, direction) {
44475
+ return handleSortChange(newSortKey, direction);
44476
+ }
44477
+ })
44478
+ )
44479
+ ),
44480
+ React__default.createElement(
44481
+ 'div',
44482
+ { className: 'search__results__cards search__results__cards--extended' },
44483
+ flyInType == 'flight-outward-results' &&
44484
+ uniqueOutwardFlights.map(function (result) {
44485
+ return React__default.createElement(IndependentFlightOption, {
44486
+ key: 'flight-'.concat(result.outwardGuid),
44487
+ item: result.outward,
44488
+ onSelect: function () {
44489
+ return dispatch(setSelectedOutwardKey(getFlightKey(result.outward.segments)));
44490
+ },
44491
+ guid: result.outwardGuid,
44492
+ isOutward: true,
44493
+ price: result.price,
44494
+ currentSelectedPrice: selectedOutward === null || selectedOutward === void 0 ? void 0 : selectedOutward.price,
44495
+ selectedGuid: selectedOutward === null || selectedOutward === void 0 ? void 0 : selectedOutward.outwardGuid,
44496
+ showSelectedState: true
44497
+ });
44498
+ }),
44499
+ flyInType == 'flight-return-results' &&
44500
+ uniqueReturnFlights.map(function (result) {
44501
+ return React__default.createElement(IndependentFlightOption, {
44502
+ key: 'flight-'.concat(result.outwardGuid),
44503
+ item: result.return,
44504
+ onSelect: function () {
44505
+ return dispatch(setSelectedReturnKey(getFlightKey(result.return.segments)));
44506
+ },
44507
+ guid: result.outwardGuid,
44508
+ isOutward: false,
44509
+ price: result.price,
44510
+ currentSelectedPrice: selectedReturn === null || selectedReturn === void 0 ? void 0 : selectedReturn.price,
44511
+ selectedGuid: selectedReturn === null || selectedReturn === void 0 ? void 0 : selectedReturn.outwardGuid,
44512
+ showSelectedState: true
44513
+ });
44514
+ })
44515
+ )
44516
+ )
44517
+ )
44518
+ ),
44519
+ React__default.createElement(
44520
+ 'div',
44521
+ { className: 'flyin__footer' },
44522
+ React__default.createElement('div', { className: 'flyin__footer__price' }),
43549
44523
  React__default.createElement(
43550
44524
  'div',
43551
- { className: 'search__results__label__text' },
43552
- React__default.createElement('h3', null, translations.SRP.SELECT, ' ', React__default.createElement('strong', null, translations.SRP.ACCOMMODATION))
44525
+ { className: 'flyin__button-wrapper' },
44526
+ React__default.createElement(
44527
+ 'button',
44528
+ {
44529
+ className: 'cta cta--select',
44530
+ onClick: function () {
44531
+ return handleConfirm();
44532
+ }
44533
+ },
44534
+ translations.QSM.CONFIRM
44535
+ )
43553
44536
  )
43554
- ),
43555
- renderHotelResults(mappedResults, context, activeTab, translations)
44537
+ )
43556
44538
  );
43557
44539
  };
43558
44540
 
43559
44541
  var FlyIn = function (_a) {
43560
- var title = _a.title,
43561
- srpType = _a.srpType,
44542
+ var _b;
44543
+ var srpType = _a.srpType,
43562
44544
  isOpen = _a.isOpen,
43563
44545
  setIsOpen = _a.setIsOpen,
43564
- _b = _a.className,
43565
- className = _b === void 0 ? '' : _b,
44546
+ _c = _a.className,
44547
+ className = _c === void 0 ? '' : _c,
43566
44548
  onPanelRef = _a.onPanelRef,
43567
44549
  detailsLoading = _a.detailsLoading,
43568
- accommodationStep = _a.accommodationStep,
44550
+ flyInType = _a.flyInType,
43569
44551
  isPackageEditFlow = _a.isPackageEditFlow,
43570
- handleConfirm = _a.handleConfirm;
44552
+ handleConfirm = _a.handleConfirm,
44553
+ sortByTypes = _a.sortByTypes;
43571
44554
  var dispatch = useDispatch();
44555
+ var context = useContext(SearchResultsConfigurationContext);
44556
+ var language = (_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB';
44557
+ var translations = getTranslations(language);
44558
+ var _d = useSelector(function (state) {
44559
+ return state.searchResults;
44560
+ }),
44561
+ isLoading = _d.isLoading,
44562
+ initialFilters = _d.initialFilters,
44563
+ filters = _d.filters,
44564
+ filteredPackagingAccoResults = _d.filteredPackagingAccoResults,
44565
+ selectedSortType = _d.selectedSortType;
43572
44566
  var onCancelSearch = useFlightSearch().onCancelSearch;
43573
44567
  var panelRef = useRef(null);
43574
44568
  // expose DOM node if needed
@@ -43616,12 +44610,19 @@ var FlyIn = function (_a) {
43616
44610
  dispatch(setSelectedSearchResult(null));
43617
44611
  dispatch(setSelectedPackagingAccoResult(null));
43618
44612
  }
43619
- dispatch(setAccommodationFlyInStep('details'));
44613
+ dispatch(setFlyInType('acco-details'));
43620
44614
  setIsOpen(false);
43621
44615
  }
43622
44616
  };
43623
44617
  var handleGoBack = function () {
43624
- dispatch(setAccommodationFlyInStep('results'));
44618
+ dispatch(setFlyInType('acco-results'));
44619
+ };
44620
+ var handleSortChange = function (newSortKey, direction) {
44621
+ if (sortByTypes === undefined) return;
44622
+ var newSortByType = findSortByType(sortByTypes, newSortKey, direction !== null && direction !== void 0 ? direction : 'asc');
44623
+ if (newSortByType) {
44624
+ dispatch(setSortType(newSortByType));
44625
+ }
43625
44626
  };
43626
44627
  return React__default.createElement(
43627
44628
  'div',
@@ -43629,7 +44630,11 @@ var FlyIn = function (_a) {
43629
44630
  className: 'flyin '
43630
44631
  .concat(isOpen ? 'flyin--active' : '', ' ')
43631
44632
  .concat(className, ' ')
43632
- .concat(isPackageEditFlow ? 'flyin--large' : '')
44633
+ .concat(
44634
+ isPackageEditFlow || flyInType === 'flight-outward-results' || flyInType === 'flight-return-results' || flyInType === 'acco-results'
44635
+ ? 'flyin--large'
44636
+ : ''
44637
+ )
43633
44638
  },
43634
44639
  React__default.createElement(
43635
44640
  'div',
@@ -43640,7 +44645,22 @@ var FlyIn = function (_a) {
43640
44645
  React__default.createElement(
43641
44646
  'div',
43642
44647
  { className: 'flyin__content-title-row' },
43643
- React__default.createElement('h3', { className: 'flyin__content-title' }, title),
44648
+ React__default.createElement(
44649
+ 'h3',
44650
+ { className: 'flyin__content-title' },
44651
+ srpType === build.PortalQsmType.Flight && 'Select your fare',
44652
+ srpType === build.PortalQsmType.Accommodation ||
44653
+ (srpType === build.PortalQsmType.AccommodationAndFlight &&
44654
+ (flyInType === 'acco-results' || flyInType === 'acco-details') &&
44655
+ ''.concat(translations.SRP.SELECT, ' ').concat(translations.SRP.ACCOMMODATION)),
44656
+ srpType === build.PortalQsmType.AccommodationAndFlight &&
44657
+ flyInType === 'flight-outward-results' &&
44658
+ ''.concat(translations.SRP.SELECT, ' ').concat(translations.FLIGHTS_FORM.OUTWARD_FLIGHT),
44659
+ srpType === build.PortalQsmType.AccommodationAndFlight &&
44660
+ flyInType === 'flight-return-results' &&
44661
+ ''.concat(translations.SRP.SELECT, ' ').concat(translations.FLIGHTS_FORM.RETURN_FLIGHT),
44662
+ srpType === build.PortalQsmType.AccommodationAndFlight && flyInType === 'flight-details' && 'Select your fare'
44663
+ ),
43644
44664
  React__default.createElement(
43645
44665
  'span',
43646
44666
  {
@@ -43653,7 +44673,7 @@ var FlyIn = function (_a) {
43653
44673
  )
43654
44674
  ),
43655
44675
  isPackageEditFlow &&
43656
- accommodationStep === 'details' &&
44676
+ flyInType === 'acco-details' &&
43657
44677
  React__default.createElement(
43658
44678
  'div',
43659
44679
  { className: 'flyin__content-title-row' },
@@ -43667,15 +44687,73 @@ var FlyIn = function (_a) {
43667
44687
  ),
43668
44688
  srpType === build.PortalQsmType.Flight && React__default.createElement(FlightsFlyIn, { isOpen: isOpen, setIsOpen: setIsOpen }),
43669
44689
  (srpType === build.PortalQsmType.Accommodation || srpType === build.PortalQsmType.AccommodationAndFlight) &&
43670
- accommodationStep === 'results' &&
44690
+ flyInType === 'acco-results' &&
43671
44691
  React__default.createElement(
43672
44692
  'div',
43673
- { className: 'flyin__content' },
43674
- React__default.createElement(HotelAccommodationResults, { isLoading: detailsLoading })
44693
+ { className: 'flyin__content flyin__content--columns' },
44694
+ React__default.createElement(Filters, {
44695
+ initialFilters: initialFilters,
44696
+ filters: filters,
44697
+ isOpen: false,
44698
+ handleSetIsOpen: function () {},
44699
+ // handleApplyFilters={() => setSearchTrigger((prev) => prev + 1)}
44700
+ isLoading: isLoading,
44701
+ setFilters: function (filters) {
44702
+ return dispatch(setFilters(filters));
44703
+ },
44704
+ resetFilters: function (filters) {
44705
+ return dispatch(resetFilters(filters));
44706
+ }
44707
+ }),
44708
+ React__default.createElement(
44709
+ 'div',
44710
+ { className: 'search__results__wrapper' },
44711
+ React__default.createElement(
44712
+ 'div',
44713
+ { className: 'search__result-row' },
44714
+ React__default.createElement(
44715
+ 'span',
44716
+ { className: 'search__result-row-text' },
44717
+ !isLoading &&
44718
+ React__default.createElement(
44719
+ React__default.Fragment,
44720
+ null,
44721
+ (filteredPackagingAccoResults === null || filteredPackagingAccoResults === void 0 ? void 0 : filteredPackagingAccoResults.length) &&
44722
+ filteredPackagingAccoResults.length,
44723
+ '\u00A0',
44724
+ translations.SRP.TOTAL_RESULTS_LABEL
44725
+ )
44726
+ ),
44727
+ sortByTypes &&
44728
+ sortByTypes.length > 0 &&
44729
+ React__default.createElement(
44730
+ 'div',
44731
+ { className: 'search__result-row-filter' },
44732
+ React__default.createElement(ItemPicker, {
44733
+ items: sortByTypes,
44734
+ selection: (selectedSortType === null || selectedSortType === void 0 ? void 0 : selectedSortType.label) || undefined,
44735
+ selectedSortByType: selectedSortType,
44736
+ label: translations.SRP.SORTBY,
44737
+ placeholder: translations.SRP.SORTBY,
44738
+ classModifier: 'travel-class-picker__items',
44739
+ valueFormatter: function (value, direction) {
44740
+ return getSortingName(translations, findSortByType(sortByTypes, value, direction !== null && direction !== void 0 ? direction : 'asc'));
44741
+ },
44742
+ onPick: function (newSortKey, direction) {
44743
+ return handleSortChange(newSortKey, direction);
44744
+ }
44745
+ })
44746
+ )
44747
+ ),
44748
+ React__default.createElement(HotelAccommodationResults, { isLoading: detailsLoading, isFlyIn: true })
44749
+ )
43675
44750
  ),
43676
44751
  (srpType === build.PortalQsmType.Accommodation || srpType === build.PortalQsmType.AccommodationAndFlight) &&
43677
- accommodationStep === 'details' &&
44752
+ flyInType === 'acco-details' &&
43678
44753
  React__default.createElement(AccommodationFlyIn, { isLoading: detailsLoading, handleConfirm: handleConfirm }),
44754
+ srpType === build.PortalQsmType.AccommodationAndFlight &&
44755
+ (flyInType === 'flight-outward-results' || flyInType === 'flight-return-results') &&
44756
+ React__default.createElement(PackageingFlightsFlyIn, { isOpen: isOpen, setIsOpen: setIsOpen }),
43679
44757
  srpType === build.PortalQsmType.GroupTour &&
43680
44758
  React__default.createElement(GroupTourFlyIn, { isLoading: detailsLoading, isOpen: isOpen, setIsOpen: setIsOpen })
43681
44759
  )
@@ -44413,227 +45491,6 @@ var PairedFlightSelection = function (_a) {
44413
45491
  );
44414
45492
  };
44415
45493
 
44416
- var IndependentFlightOption = function (_a) {
44417
- var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
44418
- var item = _a.item,
44419
- onSelect = _a.onSelect,
44420
- guid = _a.guid,
44421
- selectedGuid = _a.selectedGuid;
44422
- _a.isOutward;
44423
- var context = useContext(SearchResultsConfigurationContext);
44424
- var language = (_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB';
44425
- var translations = getTranslations(language);
44426
- var _m = useState(false),
44427
- detailsOpen = _m[0],
44428
- setDetailsOpen = _m[1];
44429
- return React__default.createElement(
44430
- 'div',
44431
- { className: 'search__result-card', key: 'flight-'.concat(item.code) },
44432
- React__default.createElement(
44433
- 'div',
44434
- { className: 'flight' },
44435
- React__default.createElement(
44436
- 'div',
44437
- { className: 'flight__option' },
44438
- React__default.createElement(
44439
- 'div',
44440
- { className: 'flight__content' },
44441
- React__default.createElement(
44442
- 'div',
44443
- { className: 'flight__flights' },
44444
- React__default.createElement(
44445
- 'div',
44446
- { className: 'flight__flight' },
44447
- React__default.createElement(
44448
- 'div',
44449
- { className: 'flight__flight__header' },
44450
- React__default.createElement('div', { className: 'flight__status__container' }),
44451
- React__default.createElement(
44452
- 'div',
44453
- { className: 'flight__price' },
44454
- React__default.createElement(
44455
- 'button',
44456
- {
44457
- type: 'button',
44458
- className: 'cta '.concat(selectedGuid === guid ? 'cta--selected' : 'cta--select'),
44459
- onClick: function () {
44460
- return onSelect === null || onSelect === void 0 ? void 0 : onSelect();
44461
- }
44462
- },
44463
- selectedGuid === guid ? 'Selected' : 'Select'
44464
- )
44465
- )
44466
- )
44467
- ),
44468
- React__default.createElement(
44469
- 'div',
44470
- { className: 'flight__flight' },
44471
- React__default.createElement(
44472
- 'div',
44473
- { className: 'flight__flight__container' },
44474
- React__default.createElement(
44475
- 'div',
44476
- { className: 'flight__flight__wrapper' },
44477
- React__default.createElement(
44478
- 'div',
44479
- { className: 'flight__logo__wrapper' },
44480
- React__default.createElement('img', {
44481
- src: 'https://media.tidesoftware.be/media/shared/Airlines/'.concat(
44482
- (_c = getDepartureSegment(item)) === null || _c === void 0 ? void 0 : _c.marketingAirlineCode,
44483
- '.png?height=256'
44484
- ),
44485
- alt: '',
44486
- className: 'flight__logo'
44487
- }),
44488
- React__default.createElement('span', null, (_d = getDepartureSegment(item)) === null || _d === void 0 ? void 0 : _d.marketingAirlineName)
44489
- ),
44490
- React__default.createElement(
44491
- 'div',
44492
- { className: 'flight__info' },
44493
- React__default.createElement(
44494
- 'div',
44495
- { className: 'flight__info__times' },
44496
- React__default.createElement(
44497
- 'strong',
44498
- null,
44499
- timeFromDateTime((_e = getDepartureSegment(item)) === null || _e === void 0 ? void 0 : _e.departureDateTime),
44500
- ' ',
44501
- (_f = getDepartureSegment(item)) === null || _f === void 0 ? void 0 : _f.departureAirportCode
44502
- ),
44503
- React__default.createElement(
44504
- 'p',
44505
- null,
44506
- longFormatDate((_g = getDepartureSegment(item)) === null || _g === void 0 ? void 0 : _g.departureDateTime, language)
44507
- )
44508
- ),
44509
- React__default.createElement(
44510
- 'div',
44511
- { className: 'flight__info__duration' },
44512
- React__default.createElement('p', null, durationTicksInHoursString(item.durationInTicks)),
44513
- React__default.createElement(
44514
- 'div',
44515
- { className: 'flight__info__duration__stops' },
44516
- React__default.createElement('div', { className: 'flight__info__duration__stop' })
44517
- ),
44518
- React__default.createElement(
44519
- 'span',
44520
- null,
44521
- getNumberOfStopsLabel(item, translations.SRP.DIRECT, translations.SRP.STOPS, translations.SRP.STOP)
44522
- )
44523
- ),
44524
- React__default.createElement(
44525
- 'div',
44526
- { className: 'flight__info__times flight__info__times--arrival' },
44527
- React__default.createElement(
44528
- 'strong',
44529
- null,
44530
- timeFromDateTime((_h = getArrivalSegment(item)) === null || _h === void 0 ? void 0 : _h.arrivalDateTime),
44531
- ' ',
44532
- (_j = getArrivalSegment(item)) === null || _j === void 0 ? void 0 : _j.arrivalAirportCode
44533
- ),
44534
- React__default.createElement(
44535
- 'p',
44536
- null,
44537
- longFormatDate((_k = getArrivalSegment(item)) === null || _k === void 0 ? void 0 : _k.arrivalDateTime, language)
44538
- )
44539
- )
44540
- )
44541
- ),
44542
- React__default.createElement(
44543
- 'div',
44544
- { className: 'flight__detail__btn__wrapper' },
44545
- React__default.createElement(
44546
- 'div',
44547
- {
44548
- className: 'flight__detail__btn '.concat(detailsOpen ? 'flight__detail__btn--active' : ''),
44549
- onClick: function () {
44550
- return setDetailsOpen(function (prev) {
44551
- return !prev;
44552
- });
44553
- }
44554
- },
44555
- React__default.createElement(Icon$1, { name: 'ui-chevron', className: 'flight__detail__btn__arrow', width: 16, height: 16 })
44556
- )
44557
- )
44558
- ),
44559
- React__default.createElement(
44560
- 'div',
44561
- { className: 'flight__detail '.concat(detailsOpen ? 'flight__detail--active' : '') },
44562
- (_l = getFlightSegments(item)) === null || _l === void 0
44563
- ? void 0
44564
- : _l.map(function (segment, index) {
44565
- return React__default.createElement(
44566
- React__default.Fragment,
44567
- { key: 'outward-segment-'.concat(index, '-').concat(segment.flightNumber) },
44568
- React__default.createElement(
44569
- 'div',
44570
- { className: 'flight__info' },
44571
- React__default.createElement(
44572
- 'div',
44573
- { className: 'flight__info__times__wrapper' },
44574
- React__default.createElement(
44575
- 'div',
44576
- { className: 'flight__info__times' },
44577
- React__default.createElement('p', null, timeFromDateTime(segment.departureDateTime)),
44578
- React__default.createElement('strong', null, segment.departureAirportCode),
44579
- React__default.createElement('p', null, longFormatDate(segment.departureDateTime, language))
44580
- ),
44581
- React__default.createElement('div', null, React__default.createElement(Icon$1, { name: 'ui-plane-depart', width: 30, height: 20 }))
44582
- ),
44583
- React__default.createElement(
44584
- 'div',
44585
- { className: 'flight__info__duration' },
44586
- React__default.createElement('p', null, durationTicksInHoursString(segment.durationInTicks)),
44587
- React__default.createElement('div', { className: 'flight__info__duration__stops' }),
44588
- React__default.createElement('span', null, segment.marketingAirlineName),
44589
- React__default.createElement('strong', null, segment.operatingFlightNumber)
44590
- ),
44591
- React__default.createElement(
44592
- 'div',
44593
- { className: 'flight__info__times__wrapper flight__info__times__wrapper--arrival' },
44594
- React__default.createElement('div', null, React__default.createElement(Icon$1, { name: 'ui-plane-arrive', width: 30, height: 20 })),
44595
- React__default.createElement(
44596
- 'div',
44597
- { className: 'flight__info__times flight__info__times--arrival' },
44598
- React__default.createElement('p', null, timeFromDateTime(segment.arrivalDateTime)),
44599
- React__default.createElement('strong', null, segment.arrivalAirportCode),
44600
- React__default.createElement('p', null, longFormatDate(segment.arrivalDateTime, language))
44601
- )
44602
- )
44603
- ),
44604
- segment.transferTimeInTicks &&
44605
- React__default.createElement(
44606
- 'div',
44607
- { className: 'flight__info' },
44608
- React__default.createElement('div', { className: 'flight__info__times' }),
44609
- React__default.createElement(
44610
- 'div',
44611
- { className: 'flight__info__duration flight__info__duration--waittime' },
44612
- React__default.createElement(
44613
- 'div',
44614
- { className: 'flight__info__duration__stops flight__info__duration__stops--stoptime' },
44615
- React__default.createElement(Icon$1, { name: 'ui-clock', width: 24, height: 24 })
44616
- ),
44617
- React__default.createElement(
44618
- 'div',
44619
- { className: 'flight__info__duration__stoptime' },
44620
- React__default.createElement('span', null, 'Stop time'),
44621
- React__default.createElement('strong', null, durationTicksInHoursString(segment.transferTimeInTicks))
44622
- )
44623
- ),
44624
- React__default.createElement('div', { className: 'flight__info__times flight__info__times--arrival' })
44625
- )
44626
- );
44627
- })
44628
- )
44629
- )
44630
- )
44631
- )
44632
- )
44633
- )
44634
- );
44635
- };
44636
-
44637
45494
  var IndependentFlightSelection = function (_a) {
44638
45495
  var _b;
44639
45496
  var searchResults = _a.searchResults;
@@ -44817,116 +45674,6 @@ var FlightSelection = function (_a) {
44817
45674
  : React__default.createElement(IndependentFlightSelection, { searchResults: searchResults });
44818
45675
  };
44819
45676
 
44820
- var MultiRangeFilter = function (_a) {
44821
- var min = _a.min,
44822
- max = _a.max,
44823
- selectedMin = _a.selectedMin,
44824
- selectedMax = _a.selectedMax,
44825
- valueFormatter = _a.valueFormatter,
44826
- onChange = _a.onChange;
44827
- var _b = useState(false),
44828
- isDragging = _b[0],
44829
- setIsDragging = _b[1];
44830
- var _c = useState(0),
44831
- leftPercentage = _c[0],
44832
- setLeftPercentage = _c[1];
44833
- var _d = useState(0),
44834
- rightPercentage = _d[0],
44835
- setRightPercentage = _d[1];
44836
- var _e = useState(selectedMin !== null && selectedMin !== void 0 ? selectedMin : min),
44837
- minVal = _e[0],
44838
- setMinVal = _e[1];
44839
- var _f = useState(selectedMax !== null && selectedMax !== void 0 ? selectedMax : max),
44840
- maxVal = _f[0],
44841
- setMaxVal = _f[1];
44842
- var minGap = 5;
44843
- // Sync internal state with external selectedMin/selectedMax changes
44844
- useEffect(
44845
- function () {
44846
- setMinVal(selectedMin !== null && selectedMin !== void 0 ? selectedMin : min);
44847
- setMaxVal(selectedMax !== null && selectedMax !== void 0 ? selectedMax : max);
44848
- },
44849
- [min, max, selectedMin, selectedMax]
44850
- );
44851
- // Recalculate slider track whenever values change
44852
- useEffect(
44853
- function () {
44854
- var range = max - min || 1;
44855
- var minPercent = ((minVal - min) / range) * 100;
44856
- var maxPercent = ((maxVal - min) / range) * 100;
44857
- setLeftPercentage(minPercent);
44858
- setRightPercentage(100 - maxPercent);
44859
- },
44860
- [minVal, maxVal, min, max]
44861
- );
44862
- var slideMin = function (e) {
44863
- var value = parseInt(e.target.value, 10);
44864
- // Ensure the thumbs don’t cross and enforce minGap
44865
- if (value <= maxVal - minGap) {
44866
- setMinVal(value);
44867
- }
44868
- };
44869
- var slideMax = function (e) {
44870
- var value = parseInt(e.target.value, 10);
44871
- // Ensure the thumbs don’t cross and enforce minGap
44872
- if (value >= minVal + minGap) {
44873
- setMaxVal(value);
44874
- }
44875
- };
44876
- var startDrag = function () {
44877
- setIsDragging(true);
44878
- };
44879
- var stopDrag = function () {
44880
- setIsDragging(false);
44881
- // Notify parent with the final values
44882
- onChange(minVal, maxVal);
44883
- };
44884
- return React__default.createElement(
44885
- 'div',
44886
- { className: 'double-slider-box' },
44887
- React__default.createElement(
44888
- 'div',
44889
- { className: 'input-box' },
44890
- React__default.createElement('div', { className: 'min-box' }, valueFormatter(minVal)),
44891
- React__default.createElement('div', { className: 'max-box' }, valueFormatter(maxVal))
44892
- ),
44893
- React__default.createElement(
44894
- 'div',
44895
- { className: 'range-slider' },
44896
- React__default.createElement('div', {
44897
- className: 'slider-track',
44898
- style: { left: ''.concat(leftPercentage, '%'), right: ''.concat(rightPercentage, '%') }
44899
- }),
44900
- React__default.createElement('input', {
44901
- type: 'range',
44902
- min: min,
44903
- max: max,
44904
- value: minVal,
44905
- onChange: slideMin,
44906
- onMouseDown: startDrag,
44907
- onMouseUp: stopDrag,
44908
- onTouchStart: startDrag,
44909
- onTouchEnd: stopDrag,
44910
- className: 'min-val'
44911
- }),
44912
- React__default.createElement('input', {
44913
- type: 'range',
44914
- min: min,
44915
- max: max,
44916
- value: maxVal,
44917
- onChange: slideMax,
44918
- onMouseDown: startDrag,
44919
- onMouseUp: stopDrag,
44920
- onTouchStart: startDrag,
44921
- onTouchEnd: stopDrag,
44922
- className: 'max-val'
44923
- }),
44924
- isDragging && React__default.createElement('div', { className: 'min-tooltip' }, valueFormatter(minVal)),
44925
- isDragging && React__default.createElement('div', { className: 'max-tooltip' }, valueFormatter(maxVal))
44926
- )
44927
- );
44928
- };
44929
-
44930
45677
  var FlightFilters = function (_a) {
44931
45678
  var _b;
44932
45679
  var isOpen = _a.isOpen,
@@ -46015,228 +46762,6 @@ var FlightResultsContainer = function (_a) {
46015
46762
  );
46016
46763
  };
46017
46764
 
46018
- var Filters = function (_a) {
46019
- var _b;
46020
- var initialFilters = _a.initialFilters,
46021
- filters = _a.filters,
46022
- isOpen = _a.isOpen,
46023
- handleSetIsOpen = _a.handleSetIsOpen,
46024
- isLoading = _a.isLoading;
46025
- var context = useContext(SearchResultsConfigurationContext);
46026
- if (!context || !context.showFilters) {
46027
- return null;
46028
- }
46029
- var translations = getTranslations((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
46030
- var _c = useState({}),
46031
- visibleFilters = _c[0],
46032
- setVisibleFilters = _c[1];
46033
- var dispatch = useDispatch();
46034
- var toggleFilterVisibility = function (filterId) {
46035
- setVisibleFilters(function (prev) {
46036
- var _a;
46037
- return __assign(__assign({}, prev), ((_a = {}), (_a[filterId] = !prev[filterId]), _a));
46038
- });
46039
- };
46040
- var handleCheckBoxFilter = function (filter, option) {
46041
- var updated = filters.map(function (f) {
46042
- var _a;
46043
- if (f.property !== filter.property) return f;
46044
- return __assign(__assign({}, f), {
46045
- options:
46046
- (_a = f.options) === null || _a === void 0
46047
- ? void 0
46048
- : _a.map(function (opt) {
46049
- return opt.value === option.value ? __assign(__assign({}, opt), { isChecked: !opt.isChecked }) : opt;
46050
- })
46051
- });
46052
- });
46053
- dispatch(setFilters(updated));
46054
- };
46055
- var handleSliderChange = function (filter, newMin, newMax) {
46056
- var updated = filters.map(function (f) {
46057
- if (f.property !== filter.property) return f;
46058
- return __assign(__assign({}, f), { selectedMin: newMin, selectedMax: newMax });
46059
- });
46060
- dispatch(setFilters(updated));
46061
- };
46062
- var handleFullReset = function () {
46063
- if (!isLoading) {
46064
- dispatch(resetFilters(initialFilters));
46065
- }
46066
- };
46067
- return React__default.createElement(
46068
- 'div',
46069
- { className: 'search__filters--modal '.concat(isOpen ? 'is-open' : '') },
46070
- React__default.createElement('div', {
46071
- className: 'search__filters--background',
46072
- onClick: function () {
46073
- return handleSetIsOpen();
46074
- }
46075
- }),
46076
- React__default.createElement(
46077
- 'button',
46078
- {
46079
- className: 'search__filters--close',
46080
- onClick: function () {
46081
- return handleSetIsOpen();
46082
- }
46083
- },
46084
- React__default.createElement(Icon$1, { name: 'ui-close', height: 24 })
46085
- ),
46086
- React__default.createElement(
46087
- 'div',
46088
- { className: 'search__filters' },
46089
- React__default.createElement(
46090
- 'div',
46091
- { className: 'search__filter-row search__filter__header' },
46092
- React__default.createElement(
46093
- 'div',
46094
- { className: 'search__filter-row-flex-title' },
46095
- React__default.createElement('p', { className: 'search__filter-small-title' }, translations.SRP.FILTERS)
46096
- ),
46097
- !isLoading &&
46098
- React__default.createElement(
46099
- 'a',
46100
- {
46101
- className: 'search__filter-reset',
46102
- onClick: function () {
46103
- return handleFullReset();
46104
- }
46105
- },
46106
- translations.SRP.RESET
46107
- )
46108
- ),
46109
- isLoading
46110
- ? React__default.createElement(Spinner, null)
46111
- : React__default.createElement(
46112
- React__default.Fragment,
46113
- null,
46114
- React__default.createElement(
46115
- 'div',
46116
- { className: 'search__filters__group-container' },
46117
- filters.map(function (filter, index) {
46118
- var _a, _b;
46119
- var isVisible = (_a = visibleFilters[filter.property]) !== null && _a !== void 0 ? _a : true;
46120
- return React__default.createElement(
46121
- 'div',
46122
- { key: ''.concat(filter.property, '-').concat(index), className: 'search__filter-group' },
46123
- React__default.createElement(
46124
- 'div',
46125
- {
46126
- className: 'search__filter-row search__filter-row--underline',
46127
- onClick: function () {
46128
- return toggleFilterVisibility(filter.property);
46129
- },
46130
- role: 'button',
46131
- tabIndex: 0
46132
- },
46133
- React__default.createElement('h6', { className: 'search__filter-large-title' }, filter.label),
46134
- React__default.createElement(
46135
- 'svg',
46136
- {
46137
- id: 'search-chevron-up-icon',
46138
- className: 'search__filter-chevron-icon '.concat(isVisible ? 'search__filter-chevron-icon--flipped' : '', ' '),
46139
- viewBox: '0 0 10 6.063',
46140
- width: 10,
46141
- height: 6.063
46142
- },
46143
- React__default.createElement('path', {
46144
- id: 'Path_62',
46145
- 'data-name': 'Path 62',
46146
- d: 'M245-617.937l-5-5L241.063-624,245-620.062,248.938-624,250-622.937Z',
46147
- transform: 'translate(-240 624)',
46148
- fill: '#707070'
46149
- })
46150
- )
46151
- ),
46152
- isVisible &&
46153
- filter.type === 'checkbox' &&
46154
- React__default.createElement(
46155
- 'div',
46156
- { className: 'search__filter-rows' },
46157
- filter.options &&
46158
- filter.options.map(function (option, optionIndex) {
46159
- return React__default.createElement(
46160
- 'div',
46161
- { className: 'search__filter-row search__filter-row--checkbox', key: ''.concat(option.label, '-').concat(optionIndex) },
46162
- React__default.createElement(
46163
- 'div',
46164
- { className: 'checkbox' },
46165
- React__default.createElement(
46166
- 'label',
46167
- { className: 'checkbox__label' },
46168
- React__default.createElement('input', {
46169
- type: 'checkbox',
46170
- className: 'checkbox__input checkbox__input--parent',
46171
- checked: option.isChecked,
46172
- onChange: function (e) {
46173
- return handleCheckBoxFilter(filter, option);
46174
- }
46175
- }),
46176
- React__default.createElement('span', { className: 'radiobutton__label-text' }, option.label)
46177
- )
46178
- )
46179
- );
46180
- })
46181
- ),
46182
- isVisible &&
46183
- filter.type === 'toggle' &&
46184
- React__default.createElement(
46185
- 'div',
46186
- { className: 'search__filter-rows' },
46187
- (_b = filter.options) === null || _b === void 0
46188
- ? void 0
46189
- : _b.map(function (option, optionIndex) {
46190
- return React__default.createElement(
46191
- 'div',
46192
- { className: 'search__filter-row', key: ''.concat(option.label, '-').concat(optionIndex) },
46193
- React__default.createElement('span', { className: 'search__filter-toggle-label' }, option.label),
46194
- React__default.createElement('div', { className: 'checkbox' }),
46195
- React__default.createElement(
46196
- 'label',
46197
- { className: 'checkbox__label' },
46198
- React__default.createElement('input', {
46199
- type: 'checkbox',
46200
- className: 'checkbox__input',
46201
- checked: option.isChecked,
46202
- onChange: function () {
46203
- return handleCheckBoxFilter(filter, option);
46204
- }
46205
- })
46206
- )
46207
- );
46208
- })
46209
- ),
46210
- isVisible &&
46211
- filter &&
46212
- filter.type === 'slider' &&
46213
- (function () {
46214
- var _a, _b, _c, _d;
46215
- var min = (_a = filter.min) !== null && _a !== void 0 ? _a : 0;
46216
- var max = (_b = filter.max) !== null && _b !== void 0 ? _b : 100;
46217
- var selectedMin = (_c = filter.selectedMin) !== null && _c !== void 0 ? _c : min;
46218
- var selectedMax = (_d = filter.selectedMax) !== null && _d !== void 0 ? _d : max;
46219
- return React__default.createElement(MultiRangeFilter, {
46220
- min: min,
46221
- max: max,
46222
- selectedMin: selectedMin,
46223
- selectedMax: selectedMax,
46224
- valueFormatter: function (value) {
46225
- return ''.concat(value);
46226
- },
46227
- onChange: function (newMin, newMax) {
46228
- handleSliderChange(filter, newMin, newMax);
46229
- }
46230
- });
46231
- })()
46232
- );
46233
- })
46234
- )
46235
- )
46236
- )
46237
- );
46238
- };
46239
-
46240
46765
  var GroupTourCard = function (_a) {
46241
46766
  var _b, _c, _d, _e, _f, _g;
46242
46767
  var result = _a.result,
@@ -46554,80 +47079,245 @@ var enrichFiltersWithResults = function (results, filters, tags) {
46554
47079
  return updatedFilter;
46555
47080
  });
46556
47081
  };
46557
- var enrichFiltersWithPackageAccoResults = function (results, filters, tags) {
46558
- if (!results || results.length === 0 || !filters) {
46559
- return filters !== null && filters !== void 0 ? filters : [];
46560
- }
46561
- return filters.map(function (filter) {
46562
- var updatedFilter = __assign({}, filter);
46563
- if (filter.property === 'price' && (filter.min == null || filter.max == null)) {
46564
- var prices = results
46565
- .map(function (r) {
46566
- var _a;
46567
- return (_a = r.price) !== null && _a !== void 0 ? _a : 0;
46568
- })
46569
- .filter(function (p) {
46570
- return p > 0;
46571
- });
46572
- if (prices.length > 0) {
46573
- updatedFilter.min = Math.floor(Math.min.apply(Math, prices));
46574
- updatedFilter.max = Math.ceil(Math.max.apply(Math, prices));
46575
- }
46576
- }
46577
- if (filter.property === 'accommodation') {
46578
- var map_4 = new Map();
46579
- results.forEach(function (r) {
46580
- var rooms = flatMap(r.rooms);
46581
- if (rooms) {
46582
- rooms.map(function (room) {
46583
- room.options.map(function (option) {
46584
- if (option.accommodationCode) {
46585
- map_4.set(option.accommodationCode, {
46586
- name: option.accommodationName,
46587
- code: option.accommodationCode
46588
- });
46589
- }
47082
+ var enrichFiltersWithPackageAccoResults = function (results, tags) {
47083
+ var filters = [];
47084
+ if (!results || results.length === 0) {
47085
+ return filters;
47086
+ }
47087
+ var regimeFilter = {
47088
+ property: 'regime',
47089
+ label: 'Regime',
47090
+ type: 'checkbox',
47091
+ options: [],
47092
+ isFrontendFilter: true
47093
+ };
47094
+ var map = new Map();
47095
+ results.forEach(function (r) {
47096
+ var rooms = flatMap(r.rooms);
47097
+ if (rooms) {
47098
+ rooms.map(function (room) {
47099
+ room.options.map(function (option) {
47100
+ if (option.regimeCode) {
47101
+ map.set(option.regimeCode, {
47102
+ name: option.regimeName,
47103
+ code: option.regimeCode
46590
47104
  });
46591
- });
46592
- }
47105
+ }
47106
+ });
46593
47107
  });
46594
- updatedFilter.options = Array.from(map_4.values()).map(function (accommodation) {
46595
- var _a;
46596
- return {
46597
- label: (_a = accommodation.name) !== null && _a !== void 0 ? _a : accommodation.code,
46598
- value: accommodation.code,
46599
- isChecked: false
46600
- };
47108
+ }
47109
+ });
47110
+ regimeFilter.options = Array.from(map.values()).map(function (regime) {
47111
+ var _a;
47112
+ return {
47113
+ label: (_a = regime.name) !== null && _a !== void 0 ? _a : regime.code,
47114
+ value: regime.code,
47115
+ isChecked: false
47116
+ };
47117
+ });
47118
+ filters.push(regimeFilter);
47119
+ var priceFilter = {
47120
+ property: 'price',
47121
+ label: 'Prijs',
47122
+ type: 'slider',
47123
+ isFrontendFilter: true
47124
+ };
47125
+ var prices = results
47126
+ .map(function (r) {
47127
+ var _a;
47128
+ return (_a = r.price) !== null && _a !== void 0 ? _a : 0;
47129
+ })
47130
+ .filter(function (p) {
47131
+ return p > 0;
47132
+ });
47133
+ priceFilter.min = Math.floor(Math.min.apply(Math, prices));
47134
+ priceFilter.max = Math.ceil(Math.max.apply(Math, prices));
47135
+ filters.push(priceFilter);
47136
+ return filters;
47137
+ };
47138
+ var enrichFiltersWithPackageFlightResults = function (results, tags, translations) {
47139
+ var filters = [];
47140
+ if (!results || results.length === 0) {
47141
+ return filters;
47142
+ }
47143
+ // Airlines
47144
+ var airlinesFilter = {
47145
+ label: 'Airlines',
47146
+ property: 'airline',
47147
+ type: 'checkbox',
47148
+ isFrontendFilter: true,
47149
+ options: []
47150
+ };
47151
+ var airlinesFilterMap = new Map();
47152
+ results.map(function (r) {
47153
+ var airlineCode = r.airlineCode;
47154
+ var airlineName = r.airlineName;
47155
+ if (airlineCode && airlineName) {
47156
+ airlinesFilterMap.set(airlineCode, {
47157
+ name: airlineName,
47158
+ code: airlineCode
46601
47159
  });
46602
47160
  }
46603
- if (filter.property === 'regime') {
46604
- var map_5 = new Map();
46605
- results.forEach(function (r) {
46606
- var rooms = flatMap(r.rooms);
46607
- if (rooms) {
46608
- rooms.map(function (room) {
46609
- room.options.map(function (option) {
46610
- if (option.regimeCode) {
46611
- map_5.set(option.regimeCode, {
46612
- name: option.regimeName,
46613
- code: option.regimeCode
46614
- });
46615
- }
46616
- });
46617
- });
46618
- }
47161
+ });
47162
+ airlinesFilter.options = Array.from(airlinesFilterMap.values()).map(function (airline) {
47163
+ var _a;
47164
+ return {
47165
+ label: (_a = airline.name) !== null && _a !== void 0 ? _a : airline.code,
47166
+ value: airline.code,
47167
+ isChecked: false
47168
+ };
47169
+ });
47170
+ filters.push(airlinesFilter);
47171
+ // Number of stops
47172
+ var stopsFilter = {
47173
+ label: 'Number of Stops',
47174
+ property: 'numberOfStops',
47175
+ type: 'checkbox',
47176
+ isFrontendFilter: true,
47177
+ options: []
47178
+ };
47179
+ var stopsMap = new Map();
47180
+ results.map(function (result) {
47181
+ var numberOfStops = getNumberOfStops(result.outward);
47182
+ if (!stopsMap.has(numberOfStops)) {
47183
+ stopsMap.set(numberOfStops, { numberOfStops: numberOfStops });
47184
+ }
47185
+ });
47186
+ stopsFilter.options = Array.from(stopsMap.values()).map(function (stop) {
47187
+ return {
47188
+ label: ''.concat(stop.numberOfStops == 0 ? 'direct' : stop.numberOfStops + ' Stop'.concat(stop.numberOfStops !== 1 ? 's' : '')),
47189
+ value: stop.numberOfStops,
47190
+ isChecked: false
47191
+ };
47192
+ });
47193
+ filters.push(stopsFilter);
47194
+ // Departure range
47195
+ var departureRangeFilter = {
47196
+ label: 'Departure Range',
47197
+ property: 'departureRange',
47198
+ type: 'checkbox',
47199
+ isFrontendFilter: true,
47200
+ options: []
47201
+ };
47202
+ var departureRangeMap = new Map();
47203
+ results.map(function (result) {
47204
+ var _a;
47205
+ var departureRange = rangeFromDateTimeInMinutes((_a = getDepartureSegment(result.outward)) === null || _a === void 0 ? void 0 : _a.departureDateTime);
47206
+ if (!departureRangeMap.has(departureRange)) {
47207
+ departureRangeMap.set(departureRange, departureRange);
47208
+ }
47209
+ });
47210
+ departureRangeFilter.options = orderBy(Array.from(departureRangeMap.values()), ['id'], ['asc']).map(function (range) {
47211
+ return {
47212
+ label: getDepartureRangeName(translations, range),
47213
+ value: range,
47214
+ isChecked: false
47215
+ };
47216
+ });
47217
+ filters.push(departureRangeFilter);
47218
+ // Departure Airport
47219
+ var departureAirportFilter = {
47220
+ label: 'Departure Airport',
47221
+ property: 'departureAirport',
47222
+ type: 'checkbox',
47223
+ isFrontendFilter: true,
47224
+ options: []
47225
+ };
47226
+ var departureAirportsMap = new Map();
47227
+ results.map(function (result) {
47228
+ var departureSegment = getDepartureSegment(result.outward);
47229
+ var departureAirport = departureSegment === null || departureSegment === void 0 ? void 0 : departureSegment.departureAirportCode;
47230
+ if (departureAirport && !departureAirportsMap.has(departureAirport)) {
47231
+ departureAirportsMap.set(departureAirport, {
47232
+ name: (departureSegment === null || departureSegment === void 0 ? void 0 : departureSegment.departureAirportName) + ' (' + departureAirport + ')',
47233
+ code: departureAirport
46619
47234
  });
46620
- updatedFilter.options = Array.from(map_5.values()).map(function (regime) {
46621
- var _a;
46622
- return {
46623
- label: (_a = regime.name) !== null && _a !== void 0 ? _a : regime.code,
46624
- value: regime.code,
46625
- isChecked: false
46626
- };
47235
+ }
47236
+ });
47237
+ departureAirportFilter.options = Array.from(departureAirportsMap.values()).map(function (airport) {
47238
+ var _a;
47239
+ return {
47240
+ label: (_a = airport.name) !== null && _a !== void 0 ? _a : airport.code,
47241
+ value: airport.code,
47242
+ isChecked: false
47243
+ };
47244
+ });
47245
+ filters.push(departureAirportFilter);
47246
+ // Arrival Airport
47247
+ var arrivalAirportFilter = {
47248
+ label: 'Arrival Airport',
47249
+ property: 'arrivalAirport',
47250
+ type: 'checkbox',
47251
+ isFrontendFilter: true,
47252
+ options: []
47253
+ };
47254
+ var arrivalAirportsMap = new Map();
47255
+ results.map(function (result) {
47256
+ var arrivalSegment = getArrivalSegment(result.outward);
47257
+ var arrivalAirport = arrivalSegment === null || arrivalSegment === void 0 ? void 0 : arrivalSegment.arrivalAirportCode;
47258
+ if (arrivalAirport && !arrivalAirportsMap.has(arrivalAirport)) {
47259
+ arrivalAirportsMap.set(arrivalAirport, {
47260
+ name: (arrivalSegment === null || arrivalSegment === void 0 ? void 0 : arrivalSegment.arrivalAirportName) + ' (' + arrivalAirport + ')',
47261
+ code: arrivalAirport
46627
47262
  });
46628
47263
  }
46629
- return updatedFilter;
46630
47264
  });
47265
+ arrivalAirportFilter.options = Array.from(arrivalAirportsMap.values()).map(function (airport) {
47266
+ var _a;
47267
+ return {
47268
+ label: (_a = airport.name) !== null && _a !== void 0 ? _a : airport.code,
47269
+ value: airport.code,
47270
+ isChecked: false
47271
+ };
47272
+ });
47273
+ filters.push(arrivalAirportFilter);
47274
+ // Price
47275
+ var priceFilter = {
47276
+ label: 'Price',
47277
+ property: 'price',
47278
+ type: 'slider',
47279
+ isFrontendFilter: true
47280
+ };
47281
+ var prices = results
47282
+ .map(function (r) {
47283
+ var _a;
47284
+ return (_a = r.price) !== null && _a !== void 0 ? _a : 0;
47285
+ })
47286
+ .filter(function (p) {
47287
+ return p > 0;
47288
+ });
47289
+ if (prices.length > 0) {
47290
+ priceFilter.min = Math.floor(Math.min.apply(Math, prices));
47291
+ priceFilter.max = Math.ceil(Math.max.apply(Math, prices));
47292
+ }
47293
+ filters.push(priceFilter);
47294
+ // Travel duration
47295
+ var travelDurationFilter = {
47296
+ label: 'Travel Duration',
47297
+ property: 'travelDuration',
47298
+ type: 'slider',
47299
+ isFrontendFilter: true
47300
+ };
47301
+ var minTravelTimeDuration = Math.min.apply(
47302
+ Math,
47303
+ results.map(function (result) {
47304
+ return result.outward.durationInTicks;
47305
+ })
47306
+ );
47307
+ var maxTravelTimeDuration = Math.max.apply(
47308
+ Math,
47309
+ results.map(function (result) {
47310
+ return result.outward.durationInTicks;
47311
+ })
47312
+ );
47313
+ var minTravelTimeValue = durationInTicksInMinutes(minTravelTimeDuration);
47314
+ var maxTravelTimeValue = durationInTicksInMinutes(maxTravelTimeDuration);
47315
+ if (minTravelTimeValue != null && maxTravelTimeValue != null) {
47316
+ travelDurationFilter.min = minTravelTimeValue;
47317
+ travelDurationFilter.max = maxTravelTimeValue;
47318
+ }
47319
+ filters.push(travelDurationFilter);
47320
+ return filters;
46631
47321
  };
46632
47322
  var applyFilters = function (results, filters, sortBy) {
46633
47323
  var filtered = results.filter(function (r) {
@@ -46769,6 +47459,147 @@ var applyFiltersToPackageAccoResults = function (results, filters, sortBy) {
46769
47459
  return 0;
46770
47460
  });
46771
47461
  };
47462
+ var applyFiltersToPackageFlightResults = function (results, filters, sortBy) {
47463
+ var filtered = results.filter(function (result) {
47464
+ return filters.every(function (filter) {
47465
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
47466
+ if (!filter.isFrontendFilter) return true;
47467
+ // Airline
47468
+ if (filter.property === 'airline') {
47469
+ var selected =
47470
+ (_a = filter.options) === null || _a === void 0
47471
+ ? void 0
47472
+ : _a
47473
+ .filter(function (o) {
47474
+ return o.isChecked;
47475
+ })
47476
+ .map(function (o) {
47477
+ return o.value;
47478
+ });
47479
+ if (!selected || selected.length === 0) return true;
47480
+ return selected.includes(result.airlineCode);
47481
+ }
47482
+ // Stops
47483
+ if (filter.property === 'numberOfStops') {
47484
+ var selected =
47485
+ (_b = filter.options) === null || _b === void 0
47486
+ ? void 0
47487
+ : _b
47488
+ .filter(function (o) {
47489
+ return o.isChecked;
47490
+ })
47491
+ .map(function (o) {
47492
+ return o.value;
47493
+ });
47494
+ if (!selected || selected.length === 0) return true;
47495
+ return selected.includes(getNumberOfStops(result.outward)) && selected.includes(getNumberOfStops(result.return));
47496
+ }
47497
+ // Departure range
47498
+ if (filter.property === 'departureRange') {
47499
+ var selected =
47500
+ (_c = filter.options) === null || _c === void 0
47501
+ ? void 0
47502
+ : _c
47503
+ .filter(function (o) {
47504
+ return o.isChecked;
47505
+ })
47506
+ .map(function (o) {
47507
+ return o.value;
47508
+ });
47509
+ if (!selected || selected.length === 0) return true;
47510
+ return selected.includes(
47511
+ rangeFromDateTimeInMinutes((_d = getDepartureSegment(result.outward)) === null || _d === void 0 ? void 0 : _d.departureDateTime)
47512
+ );
47513
+ }
47514
+ // Departure airport
47515
+ if (filter.property === 'departureAirport') {
47516
+ var selected =
47517
+ (_e = filter.options) === null || _e === void 0
47518
+ ? void 0
47519
+ : _e
47520
+ .filter(function (o) {
47521
+ return o.isChecked;
47522
+ })
47523
+ .map(function (o) {
47524
+ return o.value;
47525
+ });
47526
+ if (!selected || selected.length === 0) return true;
47527
+ var departureAirportCode = (_f = getDepartureSegment(result.outward)) === null || _f === void 0 ? void 0 : _f.departureAirportCode;
47528
+ if (!departureAirportCode) return false;
47529
+ return selected.includes(departureAirportCode);
47530
+ }
47531
+ // Arrival airport
47532
+ if (filter.property === 'arrivalAirport') {
47533
+ var selected =
47534
+ (_g = filter.options) === null || _g === void 0
47535
+ ? void 0
47536
+ : _g
47537
+ .filter(function (o) {
47538
+ return o.isChecked;
47539
+ })
47540
+ .map(function (o) {
47541
+ return o.value;
47542
+ });
47543
+ if (!selected || selected.length === 0) return true;
47544
+ var arrivalAirportCode = (_h = getArrivalSegment(result.outward)) === null || _h === void 0 ? void 0 : _h.arrivalAirportCode;
47545
+ if (!arrivalAirportCode) return false;
47546
+ return selected.includes(arrivalAirportCode);
47547
+ }
47548
+ // PRICE
47549
+ if (filter.property === 'price') {
47550
+ if (filter.selectedMin != null && result.price < filter.selectedMin) return false;
47551
+ if (filter.selectedMax != null && result.price > filter.selectedMax) return false;
47552
+ return true;
47553
+ }
47554
+ // Travel times
47555
+ if (filter.property === 'travelDuration') {
47556
+ if (
47557
+ filter.selectedMin != null &&
47558
+ durationInTicksInMinutes((_j = result.outward) === null || _j === void 0 ? void 0 : _j.durationInTicks) < filter.selectedMin
47559
+ )
47560
+ return false;
47561
+ if (
47562
+ filter.selectedMax != null &&
47563
+ durationInTicksInMinutes((_k = result.outward) === null || _k === void 0 ? void 0 : _k.durationInTicks) > filter.selectedMax
47564
+ )
47565
+ return false;
47566
+ return true;
47567
+ }
47568
+ return true;
47569
+ });
47570
+ });
47571
+ // SORTING
47572
+ if (!sortBy || sortBy.label === 'default') {
47573
+ return filtered;
47574
+ }
47575
+ if (sortBy.label === 'departureTime') {
47576
+ return orderBy(
47577
+ results,
47578
+ [
47579
+ function (result) {
47580
+ var _a;
47581
+ return (_a = getDepartureSegment(result.outward)) === null || _a === void 0 ? void 0 : _a.departureDateTime;
47582
+ }
47583
+ ],
47584
+ [sortBy.direction] // or "desc"
47585
+ );
47586
+ } else if (sortBy.label === 'durationInTicks') {
47587
+ return orderBy(
47588
+ results,
47589
+ [
47590
+ function (result) {
47591
+ var _a, _b;
47592
+ return durationInTicksInMinutes(
47593
+ (_b = (_a = result.outward) === null || _a === void 0 ? void 0 : _a.durationInTicks) !== null && _b !== void 0 ? _b : 0
47594
+ );
47595
+ }
47596
+ ],
47597
+ [sortBy.direction] // or "desc"
47598
+ );
47599
+ } else {
47600
+ return orderBy(results, [sortBy.label], [sortBy.direction]);
47601
+ }
47602
+ };
46772
47603
 
46773
47604
  var getSelectedOptionsPerRoom = function (details) {
46774
47605
  var _a;
@@ -46977,27 +47808,30 @@ var SearchResultsContainer = function () {
46977
47808
  results = _c.results,
46978
47809
  filteredResults = _c.filteredResults,
46979
47810
  packagingAccoResults = _c.packagingAccoResults,
46980
- filteredPackagingAccoResults = _c.filteredPackagingAccoResults;
46981
- _c.bookingPackageDetails;
46982
- var isLoading = _c.isLoading,
47811
+ filteredPackagingAccoResults = _c.filteredPackagingAccoResults,
47812
+ isLoading = _c.isLoading,
47813
+ flightsLoading = _c.flightsLoading,
47814
+ initialFilters = _c.initialFilters,
46983
47815
  filters = _c.filters,
47816
+ flightFilters = _c.flightFilters,
46984
47817
  selectedSortType = _c.selectedSortType,
47818
+ selectedFlightSortType = _c.selectedFlightSortType,
46985
47819
  selectedSearchResult = _c.selectedSearchResult,
46986
47820
  selectedPackagingAccoResultCode = _c.selectedPackagingAccoResultCode,
46987
47821
  flyInIsOpen = _c.flyInIsOpen,
46988
47822
  packagingAccoSearchDetails = _c.packagingAccoSearchDetails,
46989
47823
  editablePackagingEntry = _c.editablePackagingEntry,
46990
47824
  transactionId = _c.transactionId,
46991
- accommodationFlyInStep = _c.accommodationFlyInStep,
47825
+ flyInType = _c.flyInType,
46992
47826
  itinerary = _c.itinerary,
46993
47827
  packagingFlightResults = _c.packagingFlightResults;
46994
47828
  var isMobile = useMediaQuery('(max-width: 1200px)');
46995
47829
  var _d = useState(false),
46996
47830
  initialFiltersSet = _d[0],
46997
47831
  setInitialFiltersSet = _d[1];
46998
- var _e = useState([]),
46999
- initialFilters = _e[0],
47000
- setInitialFilters = _e[1];
47832
+ var _e = useState(false),
47833
+ initialFlightFiltersSet = _e[0],
47834
+ setInitialFlightFiltersSet = _e[1];
47001
47835
  var _f = useState(false),
47002
47836
  filtersOpen = _f[0],
47003
47837
  setFiltersOpen = _f[1];
@@ -47333,7 +48167,7 @@ var SearchResultsContainer = function () {
47333
48167
  if (!seed) return [2 /*return*/];
47334
48168
  setDetailsIsLoading(true);
47335
48169
  setSelectedAccommodationSeed(seed);
47336
- dispatch(setAccommodationFlyInStep('results'));
48170
+ dispatch(setFlyInType('acco-results'));
47337
48171
  handleFlyInToggle(true);
47338
48172
  return [4 /*yield*/, getOrCreateTransactionId()];
47339
48173
  case 1:
@@ -47491,7 +48325,7 @@ var SearchResultsContainer = function () {
47491
48325
  enrichedFilters = enrichFiltersWithResults(packageSearchResults, context.filters, (_a = context.tags) !== null && _a !== void 0 ? _a : []);
47492
48326
  if (!initialFiltersSet) {
47493
48327
  dispatch(resetFilters(enrichedFilters));
47494
- setInitialFilters(enrichedFilters);
48328
+ dispatch(setInitialFilters(enrichedFilters));
47495
48329
  setInitialFiltersSet(true);
47496
48330
  }
47497
48331
  dispatch(setResults(packageSearchResults));
@@ -47524,6 +48358,7 @@ var SearchResultsContainer = function () {
47524
48358
  case 0:
47525
48359
  _a.trys.push([0, 2, , 3]);
47526
48360
  if (!context) return [2 /*return*/, null];
48361
+ dispatch(setIsLoading(true));
47527
48362
  config = {
47528
48363
  host: context.tideConnection.host,
47529
48364
  apiKey: context.tideConnection.apiKey
@@ -47531,12 +48366,13 @@ var SearchResultsContainer = function () {
47531
48366
  return [4 /*yield*/, build.startTransaction(config)];
47532
48367
  case 1:
47533
48368
  transaction = _a.sent();
47534
- console.log('Transaction started', transaction);
47535
48369
  dispatch(setTransactionId(transaction.transactionId));
48370
+ dispatch(setIsLoading(false));
47536
48371
  return [2 /*return*/, transaction.transactionId];
47537
48372
  case 2:
47538
48373
  err_2 = _a.sent();
47539
48374
  console.error('Transaction failed', err_2);
48375
+ dispatch(setIsLoading(false));
47540
48376
  return [2 /*return*/, null];
47541
48377
  case 3:
47542
48378
  return [2 /*return*/];
@@ -47564,11 +48400,7 @@ var SearchResultsContainer = function () {
47564
48400
  return [4 /*yield*/, build.searchPackagingAccommodations(config, searchRequest)];
47565
48401
  case 1:
47566
48402
  packageAccoSearchResults = _d.sent();
47567
- enrichedFilters = enrichFiltersWithPackageAccoResults(
47568
- packageAccoSearchResults,
47569
- context.filters,
47570
- (_a = context.tags) !== null && _a !== void 0 ? _a : []
47571
- );
48403
+ enrichedFilters = enrichFiltersWithPackageAccoResults(packageAccoSearchResults, (_a = context.tags) !== null && _a !== void 0 ? _a : []);
47572
48404
  if (!initialFiltersSet) {
47573
48405
  dispatch(resetFilters(enrichedFilters));
47574
48406
  setInitialFilters(enrichedFilters);
@@ -47614,11 +48446,12 @@ var SearchResultsContainer = function () {
47614
48446
  };
47615
48447
  var runFlightSearch = function (currentTransactionId, seed) {
47616
48448
  return __awaiter(void 0, void 0, void 0, function () {
47617
- var config, searchRequest, packageFlightSearchResults, err_4;
47618
- return __generator(this, function (_a) {
47619
- switch (_a.label) {
48449
+ var config, searchRequest, packageFlightSearchResults, enrichedFilters, initialFilteredResults, firstResult, err_4;
48450
+ var _a;
48451
+ return __generator(this, function (_b) {
48452
+ switch (_b.label) {
47620
48453
  case 0:
47621
- _a.trys.push([0, 2, , 3]);
48454
+ _b.trys.push([0, 2, , 3]);
47622
48455
  if (!context) return [2 /*return*/];
47623
48456
  dispatch(setFlightsLoading(true));
47624
48457
  config = {
@@ -47629,12 +48462,31 @@ var SearchResultsContainer = function () {
47629
48462
  searchRequest.agentId = context.agentId;
47630
48463
  return [4 /*yield*/, build.searchPackagingFlights(config, searchRequest)];
47631
48464
  case 1:
47632
- packageFlightSearchResults = _a.sent();
48465
+ packageFlightSearchResults = _b.sent();
48466
+ enrichedFilters = enrichFiltersWithPackageFlightResults(
48467
+ packageFlightSearchResults,
48468
+ (_a = context.tags) !== null && _a !== void 0 ? _a : [],
48469
+ translations
48470
+ );
48471
+ if (!initialFlightFiltersSet) {
48472
+ dispatch(resetFlightFilters(enrichedFilters));
48473
+ dispatch(setInitialFlightFilters(enrichedFilters));
48474
+ setInitialFlightFiltersSet(true);
48475
+ }
47633
48476
  dispatch(setPackagingFlightResults(packageFlightSearchResults));
48477
+ initialFilteredResults = applyFiltersToPackageFlightResults(packageFlightSearchResults, filters, null);
48478
+ dispatch(setFilteredPackagingFlightResults(initialFilteredResults));
48479
+ if (initialFilteredResults.length > 0) {
48480
+ firstResult = first(packageFlightSearchResults);
48481
+ if (firstResult) {
48482
+ dispatch(setSelectedOutwardKey(getFlightKey(firstResult.outward.segments)));
48483
+ dispatch(setSelectedReturnKey(getFlightKey(firstResult.return.segments)));
48484
+ }
48485
+ }
47634
48486
  dispatch(setFlightsLoading(false));
47635
48487
  return [3 /*break*/, 3];
47636
48488
  case 2:
47637
- err_4 = _a.sent();
48489
+ err_4 = _b.sent();
47638
48490
  console.error('FlightSearch failed', err_4);
47639
48491
  dispatch(setFlightsLoading(false));
47640
48492
  return [3 /*break*/, 3];
@@ -47738,9 +48590,7 @@ var SearchResultsContainer = function () {
47738
48590
  );
47739
48591
  useEffect(
47740
48592
  function () {
47741
- console.log('packaging entry from context', context === null || context === void 0 ? void 0 : context.packagingEntry);
47742
48593
  if (context === null || context === void 0 ? void 0 : context.packagingEntry) {
47743
- console.log('original packaging entry from context', context.packagingEntry);
47744
48594
  dispatch(setEditablePackagingEntry(structuredClone(context.packagingEntry)));
47745
48595
  dispatch(setTransactionId(context.packagingEntry.transactionId));
47746
48596
  }
@@ -47858,6 +48708,7 @@ var SearchResultsContainer = function () {
47858
48708
  (context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.GroupTour
47859
48709
  ) {
47860
48710
  handleFlyInToggle(true);
48711
+ dispatch(setFlyInType('acco-details'));
47861
48712
  }
47862
48713
  _f.label = 1;
47863
48714
  case 1:
@@ -47949,13 +48800,15 @@ var SearchResultsContainer = function () {
47949
48800
  if (selectedPackagingAccoResultCode) {
47950
48801
  fetchPackagingAccoSearchDetails();
47951
48802
  }
47952
- dispatch(setAccommodationFlyInStep('details'));
47953
48803
  },
47954
48804
  [selectedSearchResult, selectedPackagingAccoResultCode]
47955
48805
  );
47956
48806
  useEffect(
47957
48807
  function () {
47958
- if ((context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.Accommodation) {
48808
+ if (
48809
+ (context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.Accommodation ||
48810
+ (context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.AccommodationAndFlight
48811
+ ) {
47959
48812
  var filteredPackageAccoResults = applyFiltersToPackageAccoResults(packagingAccoResults, filters, selectedSortType);
47960
48813
  dispatch(setFilteredPackagingAccoResults(filteredPackageAccoResults));
47961
48814
  } else {
@@ -47965,6 +48818,15 @@ var SearchResultsContainer = function () {
47965
48818
  },
47966
48819
  [filters, results, packagingAccoResults, selectedSortType]
47967
48820
  );
48821
+ useEffect(
48822
+ function () {
48823
+ if ((context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.AccommodationAndFlight) {
48824
+ var filteredPackageFlightResults = applyFiltersToPackageFlightResults(packagingFlightResults, flightFilters, selectedFlightSortType);
48825
+ dispatch(setFilteredPackagingFlightResults(filteredPackageFlightResults));
48826
+ }
48827
+ },
48828
+ [flightFilters, packagingFlightResults, selectedFlightSortType]
48829
+ );
47968
48830
  useEffect(
47969
48831
  function () {
47970
48832
  setInitialFiltersSet(false);
@@ -47975,27 +48837,35 @@ var SearchResultsContainer = function () {
47975
48837
  function () {
47976
48838
  var fetchPriceDetails = function () {
47977
48839
  return __awaiter(void 0, void 0, void 0, function () {
47978
- var config, priceDetails, err_7;
47979
- return __generator(this, function (_a) {
47980
- switch (_a.label) {
48840
+ var config, request, priceDetails, err_7;
48841
+ var _a, _b;
48842
+ return __generator(this, function (_c) {
48843
+ switch (_c.label) {
47981
48844
  case 0:
47982
48845
  if (!context || !editablePackagingEntry || isEmpty(editablePackagingEntry.lines)) return [2 /*return*/];
47983
48846
  setPricesAreLoading(true);
47984
- _a.label = 1;
48847
+ _c.label = 1;
47985
48848
  case 1:
47986
- _a.trys.push([1, 3, , 4]);
48849
+ _c.trys.push([1, 3, , 4]);
47987
48850
  config = {
47988
48851
  host: context.tideConnection.host,
47989
48852
  apiKey: context.tideConnection.apiKey
47990
48853
  };
47991
- return [4 /*yield*/, build.getPriceDetails(config, editablePackagingEntry)];
48854
+ request = {
48855
+ language: (_a = context.languageCode) !== null && _a !== void 0 ? _a : 'en-GB',
48856
+ officeId: context.tideConnection.officeId,
48857
+ catalogueId: (_b = context.searchConfiguration.defaultCatalogueId) !== null && _b !== void 0 ? _b : 0,
48858
+ agentId: context.agentId,
48859
+ payload: editablePackagingEntry
48860
+ };
48861
+ return [4 /*yield*/, build.getPriceDetails(config, request)];
47992
48862
  case 2:
47993
- priceDetails = _a.sent();
48863
+ priceDetails = _c.sent();
47994
48864
  dispatch(setPriceDetails(priceDetails));
47995
48865
  setPricesAreLoading(false);
47996
48866
  return [3 /*break*/, 4];
47997
48867
  case 3:
47998
- err_7 = _a.sent();
48868
+ err_7 = _c.sent();
47999
48869
  console.error('Error fetching price details', err_7);
48000
48870
  setPricesAreLoading(false);
48001
48871
  return [3 /*break*/, 4];
@@ -48007,29 +48877,35 @@ var SearchResultsContainer = function () {
48007
48877
  };
48008
48878
  var fetchItinerary = function () {
48009
48879
  return __awaiter(void 0, void 0, void 0, function () {
48010
- var config, itinerary_1, err_8;
48011
- return __generator(this, function (_a) {
48012
- switch (_a.label) {
48880
+ var config, request, itinerary_1, err_8;
48881
+ var _a, _b;
48882
+ return __generator(this, function (_c) {
48883
+ switch (_c.label) {
48013
48884
  case 0:
48014
- console.log('Fetching itinerary for entry', editablePackagingEntry);
48015
- if (!context || !editablePackagingEntry || isEmpty(editablePackagingEntry.lines)) return [2 /*return*/];
48885
+ if (!context || !context.packagingEntry || !editablePackagingEntry || isEmpty(editablePackagingEntry.lines)) return [2 /*return*/];
48016
48886
  setItineraryIsLoading(true);
48017
- _a.label = 1;
48887
+ _c.label = 1;
48018
48888
  case 1:
48019
- _a.trys.push([1, 3, , 4]);
48889
+ _c.trys.push([1, 3, , 4]);
48020
48890
  config = {
48021
48891
  host: context.tideConnection.host,
48022
48892
  apiKey: context.tideConnection.apiKey
48023
48893
  };
48024
- return [4 /*yield*/, build.getItinerary(config, editablePackagingEntry)];
48894
+ request = {
48895
+ language: (_a = context.languageCode) !== null && _a !== void 0 ? _a : 'en-GB',
48896
+ officeId: context.tideConnection.officeId,
48897
+ catalogueId: (_b = context.searchConfiguration.defaultCatalogueId) !== null && _b !== void 0 ? _b : 0,
48898
+ agentId: context.agentId,
48899
+ payload: editablePackagingEntry
48900
+ };
48901
+ return [4 /*yield*/, build.getItinerary(config, request)];
48025
48902
  case 2:
48026
- itinerary_1 = _a.sent();
48027
- console.log('Fetched itinerary', itinerary_1);
48903
+ itinerary_1 = _c.sent();
48028
48904
  dispatch(setItinerary(itinerary_1));
48029
48905
  setItineraryIsLoading(false);
48030
48906
  return [3 /*break*/, 4];
48031
48907
  case 3:
48032
- err_8 = _a.sent();
48908
+ err_8 = _c.sent();
48033
48909
  console.error('Error fetching itinerary', err_8);
48034
48910
  setItineraryIsLoading(false);
48035
48911
  return [3 /*break*/, 4];
@@ -48045,36 +48921,22 @@ var SearchResultsContainer = function () {
48045
48921
  [editablePackagingEntry]
48046
48922
  );
48047
48923
  // Flight selection
48048
- var _m = useState(null),
48049
- selectedOutwardKey = _m[0],
48050
- setSelectedOutwardKey = _m[1];
48051
- var _o = useState(null),
48052
- selectedReturnKey = _o[0],
48053
- setSelectedReturnKey = _o[1];
48054
- var uniqueOutwardFlights = React__default.useMemo(
48055
- function () {
48056
- var map = new Map();
48057
- packagingFlightResults.forEach(function (flight) {
48058
- var key = getFlightKey(flight.outward.segments);
48059
- if (!map.has(key)) {
48060
- map.set(key, flight);
48061
- }
48062
- });
48063
- return Array.from(map.values());
48064
- },
48065
- [packagingFlightResults]
48066
- );
48067
- var _p = useState([]),
48068
- uniqueReturnFlights = _p[0],
48069
- setUniqueReturnFlights = _p[1];
48924
+ // const [selectedOutwardKey, setSelectedOutwardKey] = useState<string | null>(null);
48925
+ // const [selectedReturnKey, setSelectedReturnKey] = useState<string | null>(null);
48926
+ var selectedOutwardKey = useSelector(selectSelectedOutwardKey);
48927
+ var selectedReturnKey = useSelector(selectSelectedReturnKey);
48928
+ var uniqueOutwardFlights = useSelector(selectUniqueOutwardFlights);
48929
+ var uniqueReturnFlights = useSelector(selectUniqueReturnFlights);
48930
+ var selectedOutward = useSelector(selectSelectedOutward);
48931
+ var selectedReturn = useSelector(selectSelectedReturn);
48932
+ var selectedCombinationFlight = useSelector(selectSelectedCombinationFlight);
48070
48933
  useEffect(
48071
48934
  function () {
48935
+ var _a;
48072
48936
  if (!selectedOutwardKey) {
48073
- setUniqueReturnFlights([]);
48074
- setSelectedReturnKey(null);
48937
+ dispatch(setSelectedReturnKey(null));
48075
48938
  return;
48076
48939
  }
48077
- // Filter combinations that match selected outward fare
48078
48940
  var matchingCombinations = packagingFlightResults.filter(function (flight) {
48079
48941
  return getFlightKey(flight.outward.segments) === selectedOutwardKey;
48080
48942
  });
@@ -48086,40 +48948,26 @@ var SearchResultsContainer = function () {
48086
48948
  }
48087
48949
  });
48088
48950
  var returns = Array.from(returnMap.values());
48089
- setUniqueReturnFlights(returns);
48090
- },
48091
- [selectedOutwardKey, packagingFlightResults]
48092
- );
48093
- var selectedOutward = React__default.useMemo(
48094
- function () {
48095
- if (!selectedOutwardKey) return null;
48096
- return (
48097
- packagingFlightResults.find(function (flight) {
48098
- return getFlightKey(flight.outward.segments) === selectedOutwardKey;
48099
- }) || null
48100
- );
48101
- },
48102
- [packagingFlightResults, selectedOutwardKey]
48103
- );
48104
- var selectedReturn = React__default.useMemo(
48105
- function () {
48106
- if (!selectedReturnKey) return null;
48107
- return (
48108
- packagingFlightResults.find(function (flight) {
48109
- return getFlightKey(flight.return.segments) === selectedReturnKey;
48110
- }) || null
48111
- );
48951
+ var segments = (_a = first(returns)) === null || _a === void 0 ? void 0 : _a.return.segments;
48952
+ var firstReturnKey = returns.length > 0 && segments ? getFlightKey(segments) : null;
48953
+ if (
48954
+ !returns.some(function (x) {
48955
+ return getFlightKey(x.return.segments) === selectedReturnKey;
48956
+ })
48957
+ ) {
48958
+ dispatch(setSelectedReturnKey(firstReturnKey));
48959
+ }
48112
48960
  },
48113
- [packagingFlightResults, selectedReturnKey]
48961
+ [selectedOutwardKey, packagingFlightResults, selectedReturnKey, dispatch]
48114
48962
  );
48115
- var selectedCombinationFlight = React__default.useMemo(
48963
+ var visibleOutwardFlights = React__default.useMemo(
48116
48964
  function () {
48117
- if (!selectedOutwardKey || !selectedReturnKey) return undefined;
48118
- return packagingFlightResults.find(function (flight) {
48119
- return getFlightKey(flight.outward.segments) === selectedOutwardKey && getFlightKey(flight.return.segments) === selectedReturnKey;
48965
+ var withoutSelected = uniqueOutwardFlights.filter(function (x) {
48966
+ return getFlightKey(x.outward.segments) !== selectedOutwardKey;
48120
48967
  });
48968
+ return withoutSelected.slice(0, 3);
48121
48969
  },
48122
- [packagingFlightResults, selectedOutwardKey, selectedReturnKey]
48970
+ [uniqueOutwardFlights, selectedOutwardKey]
48123
48971
  );
48124
48972
  // TODO: get details for selected combination flight and show in fly-in
48125
48973
  // useEffect(() => {
@@ -48128,6 +48976,7 @@ var SearchResultsContainer = function () {
48128
48976
  // // onFlightSearch(selectedCombinationFlight); // Trigger search to update accommodation options based on selected flight
48129
48977
  // dispatch(setFlyInIsOpen(true));
48130
48978
  // }, [selectedCombinationFlight, dispatch]);
48979
+ // Build packagingEntry
48131
48980
  useEffect(
48132
48981
  function () {
48133
48982
  var _a, _b, _c, _d;
@@ -48155,7 +49004,6 @@ var SearchResultsContainer = function () {
48155
49004
  : '',
48156
49005
  language: (_d = context.languageCode) !== null && _d !== void 0 ? _d : 'en-GB'
48157
49006
  });
48158
- console.log('Built next packaging entry', nextEntry);
48159
49007
  if (!nextEntry) return;
48160
49008
  dispatch(setEditablePackagingEntry(nextEntry));
48161
49009
  if (selectedCombinationFlight) {
@@ -48371,7 +49219,6 @@ var SearchResultsContainer = function () {
48371
49219
  return r.code === selectedHotelCode;
48372
49220
  })
48373
49221
  : null;
48374
- console.log('Selected hotel for packaging entry', selectedHotel);
48375
49222
  // Update accommodation only when enough data exists
48376
49223
  if (selectedHotel) {
48377
49224
  var accommodationLines = buildAccommodationLinesFromSelection(selectedHotel, seed);
@@ -48383,8 +49230,6 @@ var SearchResultsContainer = function () {
48383
49230
  // Update flights only when full selected combination exists
48384
49231
  if (selectedFlight) {
48385
49232
  var flightLines = buildFlightLinesFromSelection(selectedFlight);
48386
- console.log('selectedFlight', selectedFlight);
48387
- console.log('Built flight lines from selection', flightLines);
48388
49233
  if (flightLines.length) {
48389
49234
  nextLines = removeFlightLines(nextLines);
48390
49235
  nextLines = __spreadArray(__spreadArray([], nextLines, true), flightLines, true);
@@ -48430,6 +49275,10 @@ var SearchResultsContainer = function () {
48430
49275
  lines: []
48431
49276
  };
48432
49277
  };
49278
+ var handleShowMoreFlights = function (flyInType) {
49279
+ dispatch(setFlyInType(flyInType));
49280
+ dispatch(setFlyInIsOpen(true));
49281
+ };
48433
49282
  return React__default.createElement(
48434
49283
  'div',
48435
49284
  { id: 'tide-booking', className: 'search__bg' },
@@ -48446,7 +49295,6 @@ var SearchResultsContainer = function () {
48446
49295
  { tideConnection: context.tideConnection },
48447
49296
  React__default.createElement(FlightResultsContainer, { isMobile: isMobile }),
48448
49297
  React__default.createElement(FlyIn, {
48449
- title: 'Select your fare',
48450
49298
  srpType: context.searchConfiguration.qsmType,
48451
49299
  isOpen: flyInIsOpen,
48452
49300
  setIsOpen: handleFlyInToggle,
@@ -48473,7 +49321,13 @@ var SearchResultsContainer = function () {
48473
49321
  return setFiltersOpen(!filtersOpen);
48474
49322
  },
48475
49323
  // handleApplyFilters={() => setSearchTrigger((prev) => prev + 1)}
48476
- isLoading: isLoading
49324
+ isLoading: isLoading,
49325
+ setFilters: function (filters) {
49326
+ return dispatch(setFilters(filters));
49327
+ },
49328
+ resetFilters: function (filters) {
49329
+ return dispatch(resetFilters(filters));
49330
+ }
48477
49331
  }),
48478
49332
  context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
48479
49333
  React__default.createElement(Itinerary, {
@@ -48540,53 +49394,53 @@ var SearchResultsContainer = function () {
48540
49394
  }
48541
49395
  })
48542
49396
  ),
48543
- React__default.createElement(
48544
- 'div',
48545
- { className: 'search__result-row' },
49397
+ context.searchConfiguration.qsmType !== build.PortalQsmType.AccommodationAndFlight &&
48546
49398
  React__default.createElement(
48547
- 'span',
48548
- { className: 'search__result-row-text' },
48549
- !isLoading &&
48550
- context.searchConfiguration.qsmType !== build.PortalQsmType.AccommodationAndFlight &&
49399
+ 'div',
49400
+ { className: 'search__result-row' },
49401
+ React__default.createElement(
49402
+ 'span',
49403
+ { className: 'search__result-row-text' },
49404
+ !isLoading &&
49405
+ React__default.createElement(
49406
+ React__default.Fragment,
49407
+ null,
49408
+ context.searchConfiguration.qsmType === build.PortalQsmType.Accommodation &&
49409
+ (filteredPackagingAccoResults === null || filteredPackagingAccoResults === void 0 ? void 0 : filteredPackagingAccoResults.length) &&
49410
+ (filteredPackagingAccoResults === null || filteredPackagingAccoResults === void 0 ? void 0 : filteredPackagingAccoResults.length),
49411
+ context.searchConfiguration.qsmType !== build.PortalQsmType.Accommodation &&
49412
+ (filteredResults === null || filteredResults === void 0 ? void 0 : filteredResults.length) &&
49413
+ filteredResults.length,
49414
+ '\u00A0',
49415
+ translations.SRP.TOTAL_RESULTS_LABEL
49416
+ )
49417
+ ),
49418
+ !context.packagingEntry &&
49419
+ !isMobile &&
49420
+ sortByTypes &&
49421
+ sortByTypes.length > 0 &&
48551
49422
  React__default.createElement(
48552
- React__default.Fragment,
48553
- null,
48554
- context.searchConfiguration.qsmType === build.PortalQsmType.Accommodation &&
48555
- (filteredPackagingAccoResults === null || filteredPackagingAccoResults === void 0 ? void 0 : filteredPackagingAccoResults.length) &&
48556
- (filteredPackagingAccoResults === null || filteredPackagingAccoResults === void 0 ? void 0 : filteredPackagingAccoResults.length),
48557
- context.searchConfiguration.qsmType !== build.PortalQsmType.Accommodation &&
48558
- (filteredResults === null || filteredResults === void 0 ? void 0 : filteredResults.length) &&
48559
- filteredResults.length,
48560
- '\u00A0',
48561
- translations.SRP.TOTAL_RESULTS_LABEL
49423
+ 'div',
49424
+ { className: 'search__result-row-filter' },
49425
+ React__default.createElement(ItemPicker, {
49426
+ items: sortByTypes,
49427
+ selection: (selectedSortType === null || selectedSortType === void 0 ? void 0 : selectedSortType.label) || undefined,
49428
+ selectedSortByType: selectedSortType,
49429
+ label: translations.SRP.SORTBY,
49430
+ placeholder: translations.SRP.SORTBY,
49431
+ classModifier: 'travel-class-picker__items',
49432
+ valueFormatter: function (value, direction) {
49433
+ return getSortingName(
49434
+ translations,
49435
+ findSortByType(sortByTypes, value, direction !== null && direction !== void 0 ? direction : 'asc')
49436
+ );
49437
+ },
49438
+ onPick: function (newSortKey, direction) {
49439
+ return handleSortChange(newSortKey, direction);
49440
+ }
49441
+ })
48562
49442
  )
48563
49443
  ),
48564
- !context.packagingEntry &&
48565
- !isMobile &&
48566
- sortByTypes &&
48567
- sortByTypes.length > 0 &&
48568
- React__default.createElement(
48569
- 'div',
48570
- { className: 'search__result-row-filter' },
48571
- React__default.createElement(ItemPicker, {
48572
- items: sortByTypes,
48573
- selection: (selectedSortType === null || selectedSortType === void 0 ? void 0 : selectedSortType.label) || undefined,
48574
- selectedSortByType: selectedSortType,
48575
- label: translations.SRP.SORTBY,
48576
- placeholder: translations.SRP.SORTBY,
48577
- classModifier: 'travel-class-picker__items',
48578
- valueFormatter: function (value, direction) {
48579
- return getSortingName(
48580
- translations,
48581
- findSortByType(sortByTypes, value, direction !== null && direction !== void 0 ? direction : 'asc')
48582
- );
48583
- },
48584
- onPick: function (newSortKey, direction) {
48585
- return handleSortChange(newSortKey, direction);
48586
- }
48587
- })
48588
- )
48589
- ),
48590
49444
  React__default.createElement(
48591
49445
  'div',
48592
49446
  { className: 'search__results__wrapper' },
@@ -48625,32 +49479,59 @@ var SearchResultsContainer = function () {
48625
49479
  )
48626
49480
  )
48627
49481
  ),
48628
- React__default.createElement(
48629
- 'div',
48630
- { className: 'search__results__cards search__results__cards--extended' },
48631
- selectedOutwardKey && selectedOutward
48632
- ? React__default.createElement(IndependentFlightOption, {
48633
- key: 'flight-'.concat(selectedOutwardKey),
48634
- item: selectedOutward.outward,
48635
- guid: selectedOutward.outwardGuid,
48636
- onSelect: function () {
48637
- return setSelectedOutwardKey(null);
48638
- },
48639
- selectedGuid: selectedOutward.outwardGuid,
48640
- isOutward: true
48641
- })
48642
- : uniqueOutwardFlights.map(function (result) {
48643
- return React__default.createElement(IndependentFlightOption, {
48644
- key: 'flight-'.concat(result.outwardGuid),
48645
- item: result.outward,
48646
- onSelect: function () {
48647
- return setSelectedOutwardKey(getFlightKey(result.outward.segments));
48648
- },
48649
- guid: result.outwardGuid,
48650
- isOutward: true
48651
- });
48652
- })
48653
- )
49482
+ flightsLoading
49483
+ ? React__default.createElement(Spinner, null)
49484
+ : React__default.createElement(
49485
+ React__default.Fragment,
49486
+ null,
49487
+ React__default.createElement(
49488
+ 'div',
49489
+ { className: 'search__results__cards search__results__cards--extended' },
49490
+ selectedOutwardKey &&
49491
+ selectedOutward &&
49492
+ React__default.createElement(IndependentFlightOption, {
49493
+ key: 'flight-'.concat(selectedOutwardKey),
49494
+ item: selectedOutward.outward,
49495
+ guid: selectedOutward.outwardGuid,
49496
+ onSelect: function () {
49497
+ return dispatch(setSelectedOutwardKey(null));
49498
+ },
49499
+ selectedGuid: selectedOutward.outwardGuid,
49500
+ isOutward: true,
49501
+ showSelectedState: true,
49502
+ price: selectedOutward.price
49503
+ }),
49504
+ visibleOutwardFlights.map(function (result) {
49505
+ return React__default.createElement(IndependentFlightOption, {
49506
+ key: 'flight-'.concat(result.outwardGuid),
49507
+ item: result.outward,
49508
+ onSelect: function () {
49509
+ return dispatch(setSelectedOutwardKey(getFlightKey(result.outward.segments)));
49510
+ },
49511
+ guid: result.outwardGuid,
49512
+ isOutward: true,
49513
+ price: result.price,
49514
+ currentSelectedPrice: selectedOutward === null || selectedOutward === void 0 ? void 0 : selectedOutward.price
49515
+ });
49516
+ })
49517
+ ),
49518
+ uniqueOutwardFlights &&
49519
+ uniqueOutwardFlights.length > 3 &&
49520
+ React__default.createElement(
49521
+ 'div',
49522
+ { className: 'search__results__cards__actions' },
49523
+ React__default.createElement(
49524
+ 'button',
49525
+ {
49526
+ className: 'cta cta--secondary',
49527
+ onClick: function () {
49528
+ return handleShowMoreFlights('flight-outward-results');
49529
+ }
49530
+ },
49531
+ translations.SRP.SHOW_MORE
49532
+ )
49533
+ )
49534
+ )
48654
49535
  ),
48655
49536
  context.showHotelAccommodationResults &&
48656
49537
  !context.packagingEntry &&
@@ -48686,25 +49567,30 @@ var SearchResultsContainer = function () {
48686
49567
  React__default.createElement(
48687
49568
  'div',
48688
49569
  { className: 'search__results__cards search__results__cards--extended' },
48689
- selectedReturnKey && selectedReturn
48690
- ? React__default.createElement(IndependentFlightOption, {
48691
- key: 'flight-'.concat(selectedReturnKey),
48692
- item: selectedReturn.return,
48693
- guid: selectedReturn.outwardGuid,
48694
- selectedGuid: selectedReturn.outwardGuid,
48695
- isOutward: false
48696
- })
48697
- : uniqueReturnFlights.map(function (result) {
48698
- return React__default.createElement(IndependentFlightOption, {
48699
- key: 'flight-'.concat(result.outwardGuid),
48700
- item: result.return,
48701
- onSelect: function () {
48702
- return setSelectedReturnKey(getFlightKey(result.return.segments));
48703
- },
48704
- guid: result.outwardGuid,
48705
- isOutward: false
48706
- });
48707
- })
49570
+ selectedReturnKey &&
49571
+ selectedReturn &&
49572
+ React__default.createElement(IndependentFlightOption, {
49573
+ key: 'flight-'.concat(selectedReturnKey),
49574
+ item: selectedReturn.return,
49575
+ guid: selectedReturn.outwardGuid,
49576
+ selectedGuid: selectedReturn.outwardGuid,
49577
+ isOutward: false,
49578
+ showSelectedState: true,
49579
+ price: selectedReturn.price
49580
+ }),
49581
+ uniqueReturnFlights.map(function (result) {
49582
+ return React__default.createElement(IndependentFlightOption, {
49583
+ key: 'flight-'.concat(result.outwardGuid),
49584
+ item: result.return,
49585
+ onSelect: function () {
49586
+ return dispatch(setSelectedReturnKey(getFlightKey(result.return.segments)));
49587
+ },
49588
+ guid: result.outwardGuid,
49589
+ isOutward: false,
49590
+ currentSelectedPrice: selectedReturn === null || selectedReturn === void 0 ? void 0 : selectedReturn.price,
49591
+ price: result.price
49592
+ });
49593
+ })
48708
49594
  )
48709
49595
  ),
48710
49596
  context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
@@ -48714,7 +49600,6 @@ var SearchResultsContainer = function () {
48714
49600
  )
48715
49601
  ),
48716
49602
  React__default.createElement(FlyIn, {
48717
- title: ''.concat(translations.SRP.SELECT, ' ').concat(translations.SRP.ACCOMMODATION),
48718
49603
  srpType: context.searchConfiguration.qsmType,
48719
49604
  isOpen: flyInIsOpen,
48720
49605
  setIsOpen: handleFlyInToggle,
@@ -48725,8 +49610,9 @@ var SearchResultsContainer = function () {
48725
49610
  return (panelRef.current = el);
48726
49611
  },
48727
49612
  detailsLoading: detailsIsLoading,
48728
- accommodationStep: accommodationFlyInStep,
48729
- isPackageEditFlow: !!context.packagingEntry
49613
+ flyInType: flyInType,
49614
+ isPackageEditFlow: !!context.packagingEntry,
49615
+ sortByTypes: sortByTypes
48730
49616
  })
48731
49617
  )
48732
49618
  )