@qite/tide-booking-component 1.4.104 → 1.4.105

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 (56) hide show
  1. package/build/build-cjs/index.js +1079 -116
  2. package/build/build-cjs/src/search-results/components/excursions/day-by-day-excursions.d.ts +4 -0
  3. package/build/build-cjs/src/search-results/components/excursions/excursion-details.d.ts +3 -0
  4. package/build/build-cjs/src/search-results/components/excursions/excursion-results.d.ts +8 -0
  5. package/build/build-cjs/src/search-results/store/search-results-selectors.d.ts +122 -0
  6. package/build/build-cjs/src/search-results/store/search-results-slice.d.ts +30 -2
  7. package/build/build-cjs/src/search-results/types.d.ts +27 -1
  8. package/build/build-cjs/src/search-results/utils/query-utils.d.ts +1 -0
  9. package/build/build-cjs/src/shared/components/flyin/flyin.d.ts +2 -1
  10. package/build/build-cjs/src/shared/utils/localization-util.d.ts +3 -0
  11. package/build/build-cjs/src/shared/utils/tide-api-utils.d.ts +6 -0
  12. package/build/build-esm/index.js +1071 -116
  13. package/build/build-esm/src/search-results/components/excursions/day-by-day-excursions.d.ts +4 -0
  14. package/build/build-esm/src/search-results/components/excursions/excursion-details.d.ts +3 -0
  15. package/build/build-esm/src/search-results/components/excursions/excursion-results.d.ts +8 -0
  16. package/build/build-esm/src/search-results/store/search-results-selectors.d.ts +122 -0
  17. package/build/build-esm/src/search-results/store/search-results-slice.d.ts +30 -2
  18. package/build/build-esm/src/search-results/types.d.ts +27 -1
  19. package/build/build-esm/src/search-results/utils/query-utils.d.ts +1 -0
  20. package/build/build-esm/src/shared/components/flyin/flyin.d.ts +2 -1
  21. package/build/build-esm/src/shared/utils/localization-util.d.ts +3 -0
  22. package/build/build-esm/src/shared/utils/tide-api-utils.d.ts +6 -0
  23. package/package.json +2 -2
  24. package/src/search-results/components/excursions/day-by-day-excursions.tsx +169 -0
  25. package/src/search-results/components/excursions/excursion-details.tsx +340 -0
  26. package/src/search-results/components/excursions/excursion-results.tsx +186 -0
  27. package/src/search-results/components/hotel/hotel-card.tsx +0 -3
  28. package/src/search-results/components/icon.tsx +1 -4
  29. package/src/search-results/components/search-results-container/search-results-container.tsx +90 -28
  30. package/src/search-results/store/search-results-selectors.ts +11 -0
  31. package/src/search-results/store/search-results-slice.ts +46 -3
  32. package/src/search-results/types.ts +42 -1
  33. package/src/search-results/utils/query-utils.ts +1 -0
  34. package/src/shared/components/flyin/accommodation-flyin.tsx +4 -2
  35. package/src/shared/components/flyin/flights-flyin.tsx +3 -1
  36. package/src/shared/components/flyin/flyin.tsx +18 -6
  37. package/src/shared/components/flyin/group-tour-flyin.tsx +3 -1
  38. package/src/shared/translations/ar-SA.json +4 -2
  39. package/src/shared/translations/da-DK.json +4 -2
  40. package/src/shared/translations/de-DE.json +4 -2
  41. package/src/shared/translations/en-GB.json +4 -2
  42. package/src/shared/translations/es-ES.json +4 -2
  43. package/src/shared/translations/fr-BE.json +4 -2
  44. package/src/shared/translations/fr-FR.json +4 -2
  45. package/src/shared/translations/is-IS.json +4 -2
  46. package/src/shared/translations/it-IT.json +4 -2
  47. package/src/shared/translations/ja-JP.json +4 -2
  48. package/src/shared/translations/nl-BE.json +4 -2
  49. package/src/shared/translations/nl-NL.json +4 -2
  50. package/src/shared/translations/no-NO.json +4 -2
  51. package/src/shared/translations/pl-PL.json +4 -2
  52. package/src/shared/translations/pt-PT.json +4 -2
  53. package/src/shared/translations/sv-SE.json +4 -2
  54. package/src/shared/utils/localization-util.ts +14 -0
  55. package/src/shared/utils/tide-api-utils.ts +8 -0
  56. package/styles/components/_search.scss +11 -1
@@ -576,7 +576,8 @@ var QSM$g = {
576
576
  RETURN_DATE: 'تاريخ العودة',
577
577
  CONFIRM: 'تأكيد',
578
578
  TRAVELERS: 'المسافرون',
579
- GROUP_TOUR: 'جولة جماعية'
579
+ GROUP_TOUR: 'جولة جماعية',
580
+ ALL_TRAVELERS: 'جميع المسافرين'
580
581
  };
581
582
  var SRP$f = {
582
583
  SHOW_MORE: 'عرض المزيد',
@@ -627,7 +628,8 @@ var SRP$f = {
627
628
  DEPARTURE_TIME_DESC: 'وقت المغادرة تنازلياً',
628
629
  DURATION_ASC: 'المدة تصاعدياً',
629
630
  DURATION_DESC: 'المدة تنازلياً',
630
- TRAVEL_GROUP: 'مجموعة المسافرين'
631
+ TRAVEL_GROUP: 'مجموعة المسافرين',
632
+ EXCURSION: 'رحلة'
631
633
  };
632
634
  var arJson = {
633
635
  STEPS: STEPS$f,
@@ -982,7 +984,8 @@ var QSM$f = {
982
984
  RETURN_DATE: 'Hjemrejsedato',
983
985
  CONFIRM: 'Bekræft',
984
986
  TRAVELERS: 'Rejsende',
985
- GROUP_TOUR: 'Grupperejse'
987
+ GROUP_TOUR: 'Grupperejse',
988
+ ALL_TRAVELERS: 'Alle rejsende'
986
989
  };
987
990
  var SRP$e = {
988
991
  SHOW_MORE: 'Vis flere',
@@ -1033,7 +1036,8 @@ var SRP$e = {
1033
1036
  DEPARTURE_TIME_DESC: 'Afgangstid faldende',
1034
1037
  DURATION_ASC: 'Varighed stigende',
1035
1038
  DURATION_DESC: 'Varighed faldende',
1036
- TRAVEL_GROUP: 'Rejseselskab'
1039
+ TRAVEL_GROUP: 'Rejseselskab',
1040
+ EXCURSION: 'Udflugt'
1037
1041
  };
1038
1042
  var daJson = {
1039
1043
  STEPS: STEPS$e,
@@ -1389,7 +1393,8 @@ var QSM$e = {
1389
1393
  RETURN_DATE: 'Rückreisedatum',
1390
1394
  CONFIRM: 'Bestätigen',
1391
1395
  TRAVELERS: 'Reisende',
1392
- GROUP_TOUR: 'Gruppentour'
1396
+ GROUP_TOUR: 'Gruppentour',
1397
+ ALL_TRAVELERS: 'Alle Reisenden'
1393
1398
  };
1394
1399
  var SRP$d = {
1395
1400
  SHOW_MORE: 'Mehr anzeigen',
@@ -1440,7 +1445,8 @@ var SRP$d = {
1440
1445
  DEPARTURE_AIRPORTS: 'Abflughäfen',
1441
1446
  ARRIVAL_AIRPORTS: 'Ankunftsflughäfen',
1442
1447
  PRICE: 'Preis',
1443
- TRAVEL_GROUP: 'Reisegruppe'
1448
+ TRAVEL_GROUP: 'Reisegruppe',
1449
+ EXCURSION: 'Ausflug'
1444
1450
  };
1445
1451
  var deJson = {
1446
1452
  STEPS: STEPS$d,
@@ -1799,7 +1805,8 @@ var QSM$d = {
1799
1805
  RETURN_DATE: 'Return date',
1800
1806
  CONFIRM: 'Confirm',
1801
1807
  TRAVELERS: 'Travelers',
1802
- GROUP_TOUR: 'Group tour'
1808
+ GROUP_TOUR: 'Group tour',
1809
+ ALL_TRAVELERS: 'All travelers'
1803
1810
  };
1804
1811
  var SRP$c = {
1805
1812
  SHOW_MORE: 'Show more',
@@ -1850,7 +1857,8 @@ var SRP$c = {
1850
1857
  DEPARTURE_RANGE: 'Departure range',
1851
1858
  DEPARTURE_AIRPORTS: 'Departure airports',
1852
1859
  ARRIVAL_AIRPORTS: 'Arrival airports',
1853
- TRAVEL_GROUP: 'Travel group'
1860
+ TRAVEL_GROUP: 'Travel group',
1861
+ EXCURSION: 'Excursion'
1854
1862
  };
1855
1863
  var enJson = {
1856
1864
  STEPS: STEPS$c,
@@ -2206,7 +2214,8 @@ var QSM$c = {
2206
2214
  RETURN_DATE: 'Fecha de regreso',
2207
2215
  CONFIRM: 'Confirmar',
2208
2216
  TRAVELERS: 'Viajeros',
2209
- GROUP_TOUR: 'Tour grupal'
2217
+ GROUP_TOUR: 'Tour grupal',
2218
+ ALL_TRAVELERS: 'Todos los viajeros'
2210
2219
  };
2211
2220
  var SRP$b = {
2212
2221
  SHOW_MORE: 'Mostrar más',
@@ -2257,7 +2266,8 @@ var SRP$b = {
2257
2266
  DEPARTURE_AIRPORTS: 'Aeropuertos de salida',
2258
2267
  ARRIVAL_AIRPORTS: 'Aeropuertos de llegada',
2259
2268
  PRICE: 'Precio',
2260
- TRAVEL_GROUP: 'Grupo de viaje'
2269
+ TRAVEL_GROUP: 'Grupo de viaje',
2270
+ EXCURSION: 'Excursión'
2261
2271
  };
2262
2272
  var esJson = {
2263
2273
  STEPS: STEPS$b,
@@ -2617,7 +2627,8 @@ var QSM$b = {
2617
2627
  RETURN_DATE: 'Date de retour',
2618
2628
  CONFIRM: 'Confirmer',
2619
2629
  TRAVELERS: 'Voyageurs',
2620
- GROUP_TOUR: 'Tour en groupe'
2630
+ GROUP_TOUR: 'Tour en groupe',
2631
+ ALL_TRAVELERS: 'Tous les voyageurs'
2621
2632
  };
2622
2633
  var SRP$a = {
2623
2634
  SHOW_MORE: 'Afficher plus',
@@ -2668,7 +2679,8 @@ var SRP$a = {
2668
2679
  DEPARTURE_AIRPORTS: 'Aéroports de départ',
2669
2680
  ARRIVAL_AIRPORTS: 'Aéroports d’arrivée',
2670
2681
  PRICE: 'Prix',
2671
- TRAVEL_GROUP: 'Groupe de voyageurs'
2682
+ TRAVEL_GROUP: 'Groupe de voyageurs',
2683
+ EXCURSION: 'Excursion'
2672
2684
  };
2673
2685
  var frBeJson = {
2674
2686
  STEPS: STEPS$a,
@@ -3023,7 +3035,8 @@ var QSM$a = {
3023
3035
  RETURN_DATE: 'Date de retour',
3024
3036
  CONFIRM: 'Confirmer',
3025
3037
  TRAVELERS: 'Voyageurs',
3026
- GROUP_TOUR: 'Tour en groupe'
3038
+ GROUP_TOUR: 'Tour en groupe',
3039
+ ALL_TRAVELERS: 'Tous les voyageurs'
3027
3040
  };
3028
3041
  var SRP$9 = {
3029
3042
  SHOW_MORE: 'Afficher plus',
@@ -3074,7 +3087,8 @@ var SRP$9 = {
3074
3087
  DEPARTURE_AIRPORTS: 'Aéroports de départ',
3075
3088
  ARRIVAL_AIRPORTS: 'Aéroports d’arrivée',
3076
3089
  PRICE: 'Prix',
3077
- TRAVEL_GROUP: 'Groupe de voyageurs'
3090
+ TRAVEL_GROUP: 'Groupe de voyageurs',
3091
+ EXCURSION: 'Excursion'
3078
3092
  };
3079
3093
  var frFrJson = {
3080
3094
  STEPS: STEPS$9,
@@ -3429,7 +3443,8 @@ var QSM$9 = {
3429
3443
  RETURN_DATE: 'Heimkomudagur',
3430
3444
  CONFIRM: 'Staðfesta',
3431
3445
  TRAVELERS: 'Ferðalangar',
3432
- GROUP_TOUR: 'Ferð í hóp'
3446
+ GROUP_TOUR: 'Ferð í hóp',
3447
+ ALL_TRAVELERS: 'Allir ferðalangar'
3433
3448
  };
3434
3449
  var SRP$8 = {
3435
3450
  SHOW_MORE: 'Sýna meira',
@@ -3480,7 +3495,8 @@ var SRP$8 = {
3480
3495
  DEPARTURE_AIRPORTS: 'Brottfararflugvellir',
3481
3496
  ARRIVAL_AIRPORTS: 'Komuflugvellir',
3482
3497
  PRICE: 'Verð',
3483
- TRAVEL_GROUP: 'Ferðahópur'
3498
+ TRAVEL_GROUP: 'Ferðahópur',
3499
+ EXCURSION: 'Útflutningur'
3484
3500
  };
3485
3501
  var isJson = {
3486
3502
  STEPS: STEPS$8,
@@ -3836,7 +3852,8 @@ var QSM$8 = {
3836
3852
  RETURN_DATE: 'Data di ritorno',
3837
3853
  CONFIRM: 'Conferma',
3838
3854
  TRAVELERS: 'Viaggiatori',
3839
- GROUP_TOUR: 'Tour di gruppo'
3855
+ GROUP_TOUR: 'Tour di gruppo',
3856
+ ALL_TRAVELERS: 'Tutti i viaggiatori'
3840
3857
  };
3841
3858
  var SRP$7 = {
3842
3859
  SHOW_MORE: 'Mostra di più',
@@ -3887,7 +3904,8 @@ var SRP$7 = {
3887
3904
  DEPARTURE_AIRPORTS: 'Aeroporti di partenza',
3888
3905
  ARRIVAL_AIRPORTS: 'Aeroporti di arrivo',
3889
3906
  PRICE: 'Prezzo',
3890
- TRAVEL_GROUP: 'Gruppo di viaggio'
3907
+ TRAVEL_GROUP: 'Gruppo di viaggio',
3908
+ EXCURSION: 'Escursione'
3891
3909
  };
3892
3910
  var itJson = {
3893
3911
  STEPS: STEPS$7,
@@ -4247,7 +4265,8 @@ var QSM$7 = {
4247
4265
  RETURN_DATE: 'Terugkeerdatum',
4248
4266
  CONFIRM: 'Bevestigen',
4249
4267
  TRAVELERS: 'Reizigers',
4250
- GROUP_TOUR: 'Groepsreis'
4268
+ GROUP_TOUR: 'Groepsreis',
4269
+ ALL_TRAVELERS: 'Alle reizigers'
4251
4270
  };
4252
4271
  var SRP$6 = {
4253
4272
  SHOW_MORE: 'Toon meer',
@@ -4298,7 +4317,8 @@ var SRP$6 = {
4298
4317
  DEPARTURE_AIRPORTS: 'Vertrekluchthavens',
4299
4318
  ARRIVAL_AIRPORTS: 'Aankomstluchthavens',
4300
4319
  PRICE: 'Prijs',
4301
- TRAVEL_GROUP: 'Reisgezelschap'
4320
+ TRAVEL_GROUP: 'Reisgezelschap',
4321
+ EXCURSION: 'Excursie'
4302
4322
  };
4303
4323
  var nlBeJson = {
4304
4324
  STEPS: STEPS$6,
@@ -4654,7 +4674,8 @@ var QSM$6 = {
4654
4674
  RETURN_DATE: 'Terugkeerdatum',
4655
4675
  CONFIRM: 'Bevestigen',
4656
4676
  TRAVELERS: 'Reizigers',
4657
- GROUP_TOUR: 'Groepsreis'
4677
+ GROUP_TOUR: 'Groepsreis',
4678
+ ALL_TRAVELERS: 'Alle reizigers'
4658
4679
  };
4659
4680
  var SRP$5 = {
4660
4681
  SHOW_MORE: 'Toon meer',
@@ -4705,7 +4726,8 @@ var SRP$5 = {
4705
4726
  DEPARTURE_AIRPORTS: 'Vertrekluchthavens',
4706
4727
  ARRIVAL_AIRPORTS: 'Aankomstluchthavens',
4707
4728
  PRICE: 'Prijs',
4708
- TRAVEL_GROUP: 'Reisgezelschap'
4729
+ TRAVEL_GROUP: 'Reisgezelschap',
4730
+ EXCURSION: 'Excursie'
4709
4731
  };
4710
4732
  var nlNlJson = {
4711
4733
  STEPS: STEPS$5,
@@ -5061,7 +5083,8 @@ var QSM$5 = {
5061
5083
  RETURN_DATE: 'Returdato',
5062
5084
  CONFIRM: 'Bekreft',
5063
5085
  TRAVELERS: 'Reisende',
5064
- GROUP_TOUR: 'Gruppetur'
5086
+ GROUP_TOUR: 'Gruppetur',
5087
+ ALL_TRAVELERS: 'Alle reisende'
5065
5088
  };
5066
5089
  var SRP$4 = {
5067
5090
  SHOW_MORE: 'Vis mer',
@@ -5112,7 +5135,8 @@ var SRP$4 = {
5112
5135
  DEPARTURE_AIRPORTS: 'Avgangsflyplasser',
5113
5136
  ARRIVAL_AIRPORTS: 'Ankomstflyplasser',
5114
5137
  PRICE: 'Pris',
5115
- TRAVEL_GROUP: 'Reisefølge'
5138
+ TRAVEL_GROUP: 'Reisefølge',
5139
+ EXCURSION: 'Utflukt'
5116
5140
  };
5117
5141
  var noJson = {
5118
5142
  STEPS: STEPS$4,
@@ -5468,7 +5492,8 @@ var QSM$4 = {
5468
5492
  RETURN_DATE: 'Data powrotu',
5469
5493
  CONFIRM: 'Potwierdź',
5470
5494
  TRAVELERS: 'Podróżni',
5471
- GROUP_TOUR: 'Tour w grupie'
5495
+ GROUP_TOUR: 'Tour w grupie',
5496
+ ALL_TRAVELERS: 'Wszyscy podróżni'
5472
5497
  };
5473
5498
  var SRP$3 = {
5474
5499
  SHOW_MORE: 'Pokaż więcej',
@@ -5519,7 +5544,8 @@ var SRP$3 = {
5519
5544
  DEPARTURE_AIRPORTS: 'Lotniska wylotu',
5520
5545
  ARRIVAL_AIRPORTS: 'Lotniska przylotu',
5521
5546
  PRICE: 'Cena',
5522
- TRAVEL_GROUP: 'Grupa podróżnych'
5547
+ TRAVEL_GROUP: 'Grupa podróżnych',
5548
+ EXCURSION: 'Wycieczka'
5523
5549
  };
5524
5550
  var plJson = {
5525
5551
  STEPS: STEPS$3,
@@ -5875,7 +5901,8 @@ var QSM$3 = {
5875
5901
  RETURN_DATE: 'Data de regresso',
5876
5902
  CONFIRM: 'Confirmar',
5877
5903
  TRAVELERS: 'Viajantes',
5878
- GROUP_TOUR: 'Tour em grupo'
5904
+ GROUP_TOUR: 'Tour em grupo',
5905
+ ALL_TRAVELERS: 'All travelers'
5879
5906
  };
5880
5907
  var SRP$2 = {
5881
5908
  SHOW_MORE: 'Mostrar mais',
@@ -5926,7 +5953,8 @@ var SRP$2 = {
5926
5953
  DEPARTURE_AIRPORTS: 'Aeroportos de partida',
5927
5954
  ARRIVAL_AIRPORTS: 'Aeroportos de chegada',
5928
5955
  PRICE: 'Preço',
5929
- TRAVEL_GROUP: 'Grupo de viajantes'
5956
+ TRAVEL_GROUP: 'Grupo de viajantes',
5957
+ EXCURSION: 'Excursão'
5930
5958
  };
5931
5959
  var ptJson = {
5932
5960
  STEPS: STEPS$2,
@@ -6282,7 +6310,8 @@ var QSM$2 = {
6282
6310
  RETURN_DATE: 'Hemresedatum',
6283
6311
  CONFIRM: 'Bekräfta',
6284
6312
  TRAVELERS: 'Resenärer',
6285
- GROUP_TOUR: 'Gruppresa'
6313
+ GROUP_TOUR: 'Gruppresa',
6314
+ ALL_TRAVELERS: 'All travelers'
6286
6315
  };
6287
6316
  var SRP$1 = {
6288
6317
  SHOW_MORE: 'Visa mer',
@@ -6333,7 +6362,8 @@ var SRP$1 = {
6333
6362
  DEPARTURE_AIRPORTS: 'Avgångsflygplatser',
6334
6363
  ARRIVAL_AIRPORTS: 'Ankomstflygplatser',
6335
6364
  PRICE: 'Pris',
6336
- TRAVEL_GROUP: 'Resesällskap'
6365
+ TRAVEL_GROUP: 'Resesällskap',
6366
+ EXCURSION: 'Utflykt'
6337
6367
  };
6338
6368
  var svJson = {
6339
6369
  STEPS: STEPS$1,
@@ -6687,7 +6717,8 @@ var QSM$1 = {
6687
6717
  RETURN_DATE: '帰着日',
6688
6718
  CONFIRM: '確認',
6689
6719
  TRAVELERS: '旅行者',
6690
- GROUP_TOUR: 'グループツアー'
6720
+ GROUP_TOUR: 'グループツアー',
6721
+ ALL_TRAVELERS: 'すべての旅行者'
6691
6722
  };
6692
6723
  var SRP = {
6693
6724
  SHOW_MORE: 'もっと見る',
@@ -6738,7 +6769,8 @@ var SRP = {
6738
6769
  DEPARTURE_AIRPORTS: '出発空港',
6739
6770
  ARRIVAL_AIRPORTS: '到着空港',
6740
6771
  PRICE: '価格',
6741
- TRAVEL_GROUP: '旅行グループ'
6772
+ TRAVEL_GROUP: '旅行グループ',
6773
+ EXCURSION: 'エクスカーション'
6742
6774
  };
6743
6775
  var jaJson = {
6744
6776
  STEPS: STEPS,
@@ -6769,7 +6801,7 @@ exports.DepartureRange = void 0;
6769
6801
  DepartureRange[(DepartureRange['Night'] = 3)] = 'Night';
6770
6802
  })(exports.DepartureRange || (exports.DepartureRange = {}));
6771
6803
 
6772
- var formatPrice$2 = function (price, currencyCode, locale) {
6804
+ var formatPrice$3 = function (price, currencyCode, locale) {
6773
6805
  if (locale === void 0) {
6774
6806
  locale = 'nl-BE';
6775
6807
  }
@@ -6876,7 +6908,7 @@ function getLocale(code) {
6876
6908
  }
6877
6909
  }
6878
6910
  var getPriceDifferenceText = function (price, currencyCode) {
6879
- return price > 0 ? '+ '.concat(formatPrice$2(Math.abs(price), currencyCode)) : '- '.concat(formatPrice$2(Math.abs(price), currencyCode));
6911
+ return price > 0 ? '+ '.concat(formatPrice$3(Math.abs(price), currencyCode)) : '- '.concat(formatPrice$3(Math.abs(price), currencyCode));
6880
6912
  };
6881
6913
  function format(text, args) {
6882
6914
  return text.replace(/{([0-9]+)}/g, function (match, index) {
@@ -6976,6 +7008,16 @@ var findSortByType = function (sortByTypes, sortKey, direction) {
6976
7008
  }) || sortByTypes[0]
6977
7009
  );
6978
7010
  };
7011
+ var getDatesBetween = function (fromDate, toDate) {
7012
+ var dates = [];
7013
+ var current = new Date(fromDate);
7014
+ var end = new Date(toDate);
7015
+ while (current < end) {
7016
+ dates.push(new Date(current));
7017
+ current.setUTCDate(current.getUTCDate() + 1);
7018
+ }
7019
+ return dates;
7020
+ };
6979
7021
 
6980
7022
  var getDateFromParams = function (params, name) {
6981
7023
  var dateString = params.get(name);
@@ -13449,6 +13491,7 @@ PERFORMANCE OF THIS SOFTWARE.
13449
13491
  var ENDPOINT = '/api/web/packaging';
13450
13492
  var ENDPOINT_START_TRANSACTION = ENDPOINT + '/start';
13451
13493
  var ENDPOINT_ACCOMMODATIONS = ENDPOINT + '/accommodations';
13494
+ var ENDPOINT_EXCURSIONS = ENDPOINT + '/excursions';
13452
13495
  var ENDPOINT_FLIGHTS = ENDPOINT + '/flights';
13453
13496
  var ENDPOINT_PRICE_DETAILS = ENDPOINT + '/price-details';
13454
13497
  var ENDPOINT_ITINERARY = ENDPOINT + '/itinerary';
@@ -13472,6 +13515,12 @@ PERFORMANCE OF THIS SOFTWARE.
13472
13515
  var body = JSON.stringify(request);
13473
13516
  return post(url, apiKey, body, config.token, signal, true);
13474
13517
  };
13518
+ var searchPackagingExcursions = function (config, request, signal) {
13519
+ var url = '' + config.host + ENDPOINT_EXCURSIONS;
13520
+ var apiKey = config.apiKey;
13521
+ var body = JSON.stringify(request);
13522
+ return post(url, apiKey, body, config.token, signal, true);
13523
+ };
13475
13524
  var getEntry = function (config, magicLinkCode, signal) {
13476
13525
  var apiKey = config.apiKey;
13477
13526
  var url = '' + config.host + ENDPOINT_ENTRY(magicLinkCode);
@@ -13563,6 +13612,7 @@ PERFORMANCE OF THIS SOFTWARE.
13563
13612
  exports.searchLocations = searchLocations;
13564
13613
  exports.searchOords = searchOords;
13565
13614
  exports.searchPackagingAccommodations = searchPackagingAccommodations;
13615
+ exports.searchPackagingExcursions = searchPackagingExcursions;
13566
13616
  exports.searchPackagingFlights = searchPackagingFlights;
13567
13617
  exports.searchRegions = searchRegions;
13568
13618
  exports.searchWithErrorMapping = searchWithErrorMapping;
@@ -13639,16 +13689,16 @@ var formatPriceByMode = function (price, priceMode, personCount, duration, perPe
13639
13689
  if (!price) return '';
13640
13690
  switch (priceMode) {
13641
13691
  case 0:
13642
- return ''.concat(formatPrice$2(price, currencyCode));
13692
+ return ''.concat(formatPrice$3(price, currencyCode));
13643
13693
  case 1:
13644
13694
  var perPersonPrice = price / personCount;
13645
- return ''.concat(formatPrice$2(perPersonPrice, currencyCode), ' / ').concat(perPersonLabel);
13695
+ return ''.concat(formatPrice$3(perPersonPrice, currencyCode), ' / ').concat(perPersonLabel);
13646
13696
  case 2:
13647
13697
  var perNightPrice = price / duration;
13648
- return ''.concat(formatPrice$2(perNightPrice, currencyCode), ' / ').concat(perNightLabel);
13698
+ return ''.concat(formatPrice$3(perNightPrice, currencyCode), ' / ').concat(perNightLabel);
13649
13699
  case 3:
13650
13700
  var perPersonPerNightPrice = price / duration;
13651
- return ''.concat(formatPrice$2(perPersonPerNightPrice, currencyCode), ' / ').concat(perPersonPerNightLabel);
13701
+ return ''.concat(formatPrice$3(perPersonPerNightPrice, currencyCode), ' / ').concat(perPersonPerNightLabel);
13652
13702
  }
13653
13703
  };
13654
13704
 
@@ -22144,7 +22194,7 @@ var NoneOption = function (_a) {
22144
22194
  return x.requirementType === 2;
22145
22195
  });
22146
22196
  var noneSelected = !selectedOption;
22147
- var priceDifferencetext = selectedOption ? '- '.concat(formatPrice$2(Math.abs(selectedOption.line.price), currencyCode)) : '';
22197
+ var priceDifferencetext = selectedOption ? '- '.concat(formatPrice$3(Math.abs(selectedOption.line.price), currencyCode)) : '';
22148
22198
  return React__default['default'].createElement(
22149
22199
  React__default['default'].Fragment,
22150
22200
  null,
@@ -23421,7 +23471,7 @@ var OptionRoom = function (_a) {
23421
23471
  e.preventDefault();
23422
23472
  };
23423
23473
  var getPriceDifferenceText = function (price) {
23424
- return price > 0 ? '+ '.concat(formatPrice$2(Math.abs(price), currencyCode)) : '- '.concat(formatPrice$2(Math.abs(price), currencyCode));
23474
+ return price > 0 ? '+ '.concat(formatPrice$3(Math.abs(price), currencyCode)) : '- '.concat(formatPrice$3(Math.abs(price), currencyCode));
23425
23475
  };
23426
23476
  var getAccommodationPriceDifference = function (accommodation) {
23427
23477
  var _a;
@@ -24957,7 +25007,7 @@ var Sidebar = function (_a) {
24957
25007
  { className: 'pricing-summary__property' },
24958
25008
  React__default['default'].createElement('h6', { className: 'pricing-summary__title' }, translations.SIDEBAR.BASE_PRICE)
24959
25009
  ),
24960
- React__default['default'].createElement('div', { className: 'pricing-summary__value' }, formatPrice$2(basePrice, currencyCode))
25010
+ React__default['default'].createElement('div', { className: 'pricing-summary__value' }, formatPrice$3(basePrice, currencyCode))
24961
25011
  ),
24962
25012
  basePricePerPaxType &&
24963
25013
  basePricePerPaxType.map(function (ppt, index) {
@@ -24977,7 +25027,7 @@ var Sidebar = function (_a) {
24977
25027
  React__default['default'].createElement(
24978
25028
  'div',
24979
25029
  { className: 'pricing-summary__value' },
24980
- formatPrice$2(ppt.pricePerPaxType, currencyCode)
25030
+ formatPrice$3(ppt.pricePerPaxType, currencyCode)
24981
25031
  )
24982
25032
  ),
24983
25033
  ppt.details.map(function (detail, dIndex) {
@@ -24997,7 +25047,7 @@ var Sidebar = function (_a) {
24997
25047
  React__default['default'].createElement(
24998
25048
  'div',
24999
25049
  { className: 'pricing-summary__value' },
25000
- formatPrice$2(detail.price / detail.numberOfPax, currencyCode)
25050
+ formatPrice$3(detail.price / detail.numberOfPax, currencyCode)
25001
25051
  )
25002
25052
  );
25003
25053
  })
@@ -25024,7 +25074,7 @@ var Sidebar = function (_a) {
25024
25074
  React__default['default'].createElement(
25025
25075
  'div',
25026
25076
  { className: 'pricing-summary__value' },
25027
- formatPrice$2(priceDetail.price * priceDetail.amount, currencyCode)
25077
+ formatPrice$3(priceDetail.price * priceDetail.amount, currencyCode)
25028
25078
  )
25029
25079
  ),
25030
25080
  React__default['default'].createElement(
@@ -25059,7 +25109,7 @@ var Sidebar = function (_a) {
25059
25109
  React__default['default'].createElement(
25060
25110
  'div',
25061
25111
  { className: 'pricing-summary__value' },
25062
- formatPrice$2(priceDetail.price * priceDetail.amount, currencyCode)
25112
+ formatPrice$3(priceDetail.price * priceDetail.amount, currencyCode)
25063
25113
  )
25064
25114
  ),
25065
25115
  React__default['default'].createElement(
@@ -25089,7 +25139,7 @@ var Sidebar = function (_a) {
25089
25139
  React__default['default'].createElement(
25090
25140
  'div',
25091
25141
  { className: 'pricing-summary__value' },
25092
- formatPrice$2(ppt.pricePerPaxType, currencyCode)
25142
+ formatPrice$3(ppt.pricePerPaxType, currencyCode)
25093
25143
  )
25094
25144
  ),
25095
25145
  ppt.details.map(function (detail, dIndex) {
@@ -25109,7 +25159,7 @@ var Sidebar = function (_a) {
25109
25159
  React__default['default'].createElement(
25110
25160
  'div',
25111
25161
  { className: 'pricing-summary__value' },
25112
- formatPrice$2(detail.price / detail.numberOfPax, currencyCode)
25162
+ formatPrice$3(detail.price / detail.numberOfPax, currencyCode)
25113
25163
  )
25114
25164
  );
25115
25165
  })
@@ -25153,7 +25203,7 @@ var Sidebar = function (_a) {
25153
25203
  React__default['default'].createElement(
25154
25204
  'div',
25155
25205
  { className: 'pricing__price' },
25156
- formatPrice$2(commission !== null && commission !== void 0 ? commission : 0, currencyCode)
25206
+ formatPrice$3(commission !== null && commission !== void 0 ? commission : 0, currencyCode)
25157
25207
  )
25158
25208
  )
25159
25209
  )
@@ -25174,7 +25224,7 @@ var Sidebar = function (_a) {
25174
25224
  React__default['default'].createElement(
25175
25225
  'div',
25176
25226
  { className: 'pricing' },
25177
- React__default['default'].createElement('div', { className: 'pricing__price' }, formatPrice$2(totalPrice, currencyCode))
25227
+ React__default['default'].createElement('div', { className: 'pricing__price' }, formatPrice$3(totalPrice, currencyCode))
25178
25228
  )
25179
25229
  )
25180
25230
  ),
@@ -25192,7 +25242,7 @@ var Sidebar = function (_a) {
25192
25242
  React__default['default'].createElement(
25193
25243
  'div',
25194
25244
  { className: 'pricing' },
25195
- React__default['default'].createElement('div', { className: 'pricing__price' }, formatPrice$2(deposit, currencyCode))
25245
+ React__default['default'].createElement('div', { className: 'pricing__price' }, formatPrice$3(deposit, currencyCode))
25196
25246
  )
25197
25247
  )
25198
25248
  ),
@@ -25208,7 +25258,7 @@ var Sidebar = function (_a) {
25208
25258
  translations.SIDEBAR.DEPOSIT_TEXT1,
25209
25259
  React__default['default'].createElement('strong', null, translations.SIDEBAR.DEPOSIT_TEXT2),
25210
25260
  translations.SIDEBAR.DEPOSIT_TEXT3,
25211
- formatPrice$2(remainingAmount, currencyCode),
25261
+ formatPrice$3(remainingAmount, currencyCode),
25212
25262
  translations.SIDEBAR.DEPOSIT_TEXT4,
25213
25263
  React__default['default'].createElement('strong', null, translations.SIDEBAR.DEPOSIT_TEXT5),
25214
25264
  translations.SIDEBAR.DEPOSIT_TEXT6
@@ -25237,7 +25287,7 @@ var Sidebar = function (_a) {
25237
25287
  React__default['default'].createElement(
25238
25288
  'div',
25239
25289
  { className: 'pricing__price' },
25240
- formatPrice$2(commission !== null && commission !== void 0 ? commission : 0, currencyCode)
25290
+ formatPrice$3(commission !== null && commission !== void 0 ? commission : 0, currencyCode)
25241
25291
  )
25242
25292
  )
25243
25293
  )
@@ -25258,7 +25308,7 @@ var Sidebar = function (_a) {
25258
25308
  React__default['default'].createElement(
25259
25309
  'div',
25260
25310
  { className: 'pricing' },
25261
- React__default['default'].createElement('div', { className: 'pricing__price' }, formatPrice$2(totalPrice, currencyCode))
25311
+ React__default['default'].createElement('div', { className: 'pricing__price' }, formatPrice$3(totalPrice, currencyCode))
25262
25312
  )
25263
25313
  )
25264
25314
  )
@@ -33883,7 +33933,10 @@ var initialState$1 = {
33883
33933
  flyInIsOpen: false,
33884
33934
  flyInType: null,
33885
33935
  editablePackagingEntry: null,
33886
- itinerary: null
33936
+ itinerary: null,
33937
+ excursionSearchParams: null,
33938
+ selectedExcursionSearchResult: null,
33939
+ confirmedExcursionsByDay: {}
33887
33940
  };
33888
33941
  var searchResultsSlice = toolkit.createSlice({
33889
33942
  name: 'searchResults',
@@ -34029,6 +34082,41 @@ var searchResultsSlice = toolkit.createSlice({
34029
34082
  resetFlightSelection: function (state) {
34030
34083
  state.selectedOutwardKey = null;
34031
34084
  state.selectedReturnKey = null;
34085
+ },
34086
+ setExcursionSearchParams: function (state, action) {
34087
+ state.excursionSearchParams = action.payload;
34088
+ },
34089
+ setSelectedExcursionSearchResult: function (state, action) {
34090
+ state.selectedExcursionSearchResult = action.payload;
34091
+ },
34092
+ confirmExcursionForDay: function (state, action) {
34093
+ var _a;
34094
+ var _b = action.payload,
34095
+ dayKey = _b.dayKey,
34096
+ excursion = _b.excursion;
34097
+ var existingForDay = (_a = state.confirmedExcursionsByDay[dayKey]) !== null && _a !== void 0 ? _a : [];
34098
+ var existingIndex = existingForDay.findIndex(function (item) {
34099
+ return item.code === excursion.code;
34100
+ });
34101
+ if (existingIndex >= 0) {
34102
+ // replace existing confirmed version of same excursion
34103
+ existingForDay[existingIndex] = excursion;
34104
+ } else {
34105
+ existingForDay.push(excursion);
34106
+ }
34107
+ state.confirmedExcursionsByDay[dayKey] = existingForDay;
34108
+ },
34109
+ removeConfirmedExcursionForDay: function (state, action) {
34110
+ var _a;
34111
+ var _b = action.payload,
34112
+ dayKey = _b.dayKey,
34113
+ excursionCode = _b.excursionCode;
34114
+ state.confirmedExcursionsByDay[dayKey] = ((_a = state.confirmedExcursionsByDay[dayKey]) !== null && _a !== void 0 ? _a : []).filter(function (item) {
34115
+ return item.code !== excursionCode;
34116
+ });
34117
+ },
34118
+ clearConfirmedExcursionsForDay: function (state, action) {
34119
+ delete state.confirmedExcursionsByDay[action.payload.dayKey];
34032
34120
  }
34033
34121
  }
34034
34122
  });
@@ -34068,6 +34156,11 @@ var setFlyInIsOpen = _a.setFlyInIsOpen,
34068
34156
  setSelectedOutwardKey = _a.setSelectedOutwardKey,
34069
34157
  setSelectedReturnKey = _a.setSelectedReturnKey;
34070
34158
  _a.resetFlightSelection;
34159
+ var setExcursionSearchParams = _a.setExcursionSearchParams,
34160
+ setSelectedExcursionSearchResult = _a.setSelectedExcursionSearchResult,
34161
+ confirmExcursionForDay = _a.confirmExcursionForDay,
34162
+ removeConfirmedExcursionForDay = _a.removeConfirmedExcursionForDay;
34163
+ _a.clearConfirmedExcursionsForDay;
34071
34164
  var searchResultsReducer = searchResultsSlice.reducer;
34072
34165
 
34073
34166
  var ItemPicker = function (_a) {
@@ -34600,8 +34693,7 @@ var Icon$1 = function (_a) {
34600
34693
  }),
34601
34694
  title && React__default['default'].createElement('title', null, title),
34602
34695
  React__default['default'].createElement('path', {
34603
- d: 'M64 64C28.7 64 0 92.7 0 128l0 64C0 200.8 7.4 207.7 15.7 210.6 34.5 217.1 48 235 48 256s-13.5 38.9-32.3 45.4C7.4 304.3 0 311.2 0 320l0 64c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-64c0-8.8-7.4-15.7-15.7-18.6-18.8-6.5-32.3-24.4-32.3-45.4s13.5-38.9 32.3-45.4c8.3-2.9 15.7-9.8 15.7-18.6l0-64c0-35.3-28.7-64-64-64L64 64zM416 336l0-160-256 0 0 160 256 0zM112 160c0-17.7 14.3-32 32-32l288 0c17.7 0 32 14.3 32 32l0 192c0 17.7-14.3 32-32 32l-288 0c-17.7 0-32-14.3-32-32l0-192z',
34604
- fill: 'currentColor'
34696
+ d: 'M64 64C28.7 64 0 92.7 0 128l0 64C0 200.8 7.4 207.7 15.7 210.6 34.5 217.1 48 235 48 256s-13.5 38.9-32.3 45.4C7.4 304.3 0 311.2 0 320l0 64c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-64c0-8.8-7.4-15.7-15.7-18.6-18.8-6.5-32.3-24.4-32.3-45.4s13.5-38.9 32.3-45.4c8.3-2.9 15.7-9.8 15.7-18.6l0-64c0-35.3-28.7-64-64-64L64 64zM416 336l0-160-256 0 0 160 256 0zM112 160c0-17.7 14.3-32 32-32l288 0c17.7 0 32 14.3 32 32l0 192c0 17.7-14.3 32-32 32l-288 0c-17.7 0-32-14.3-32-32l0-192z'
34605
34697
  })
34606
34698
  );
34607
34699
  case 'ui-backforward':
@@ -35098,6 +35190,7 @@ var Icon$1 = function (_a) {
35098
35190
 
35099
35191
  var GROUP_TOUR_SERVICE_TYPE = 1;
35100
35192
  var ACCOMMODATION_SERVICE_TYPE = 3;
35193
+ var EXCURSION_SERVICE_TYPE = 4;
35101
35194
  var FLIGHT_SERVICE_TYPE = 7;
35102
35195
  var toDateOnlyString = function (value) {
35103
35196
  var date = value instanceof Date ? value : new Date(value);
@@ -35492,12 +35585,12 @@ var Itinerary = function (_a) {
35492
35585
  React__default['default'].createElement(
35493
35586
  'div',
35494
35587
  { className: 'search__filter__prices__wrapper' },
35495
- React__default['default'].createElement('h3', { className: 'search__filter__prices--amount' }, formatPrice$2(pricePerPerson, 'EUR')),
35588
+ React__default['default'].createElement('h3', { className: 'search__filter__prices--amount' }, formatPrice$3(pricePerPerson, 'EUR')),
35496
35589
  React__default['default'].createElement('p', null, translations.SRP.PACKAGE_PRICE_PER_PERSON),
35497
35590
  React__default['default'].createElement(
35498
35591
  'p',
35499
35592
  null,
35500
- React__default['default'].createElement('strong', null, '(', formatPrice$2(totalPrice, 'EUR'), ' ', translations.SRP.TOTAL, ')')
35593
+ React__default['default'].createElement('strong', null, '(', formatPrice$3(totalPrice, 'EUR'), ' ', translations.SRP.TOTAL, ')')
35501
35594
  )
35502
35595
  ),
35503
35596
  React__default['default'].createElement('button', { className: 'cta' }, translations.QSM.CONFIRM)
@@ -38563,7 +38656,8 @@ var FlightsFlyIn = function (_a) {
38563
38656
  React__default['default'].createElement(
38564
38657
  'div',
38565
38658
  { className: 'flyin__footer__price' },
38566
- 'Total price: \u20AC',
38659
+ translations.SHARED.TOTAL_PRICE,
38660
+ ': \u20AC',
38567
38661
  (_o = selectedCombinationFlight === null || selectedCombinationFlight === void 0 ? void 0 : selectedCombinationFlight.price) === null || _o === void 0
38568
38662
  ? void 0
38569
38663
  : _o.toFixed(2)
@@ -38577,7 +38671,7 @@ var FlightsFlyIn = function (_a) {
38577
38671
  );
38578
38672
  };
38579
38673
 
38580
- var formatPrice$1 = function (price, currencyCode) {
38674
+ var formatPrice$2 = function (price, currencyCode) {
38581
38675
  if (typeof price !== 'number') return '';
38582
38676
  var safeCurrency = currencyCode !== null && currencyCode !== void 0 ? currencyCode : 'EUR';
38583
38677
  return new Intl.NumberFormat('nl-BE', {
@@ -38709,7 +38803,7 @@ var AccommodationFlyIn = function (_a) {
38709
38803
  var totalPrice = selectedOptions.reduce(function (total, option) {
38710
38804
  return total + (option.price || 0);
38711
38805
  }, 0);
38712
- return formatPrice$1(totalPrice, selectedPackagingAccoSearchDetails.currencyCode);
38806
+ return formatPrice$2(totalPrice, selectedPackagingAccoSearchDetails.currencyCode);
38713
38807
  };
38714
38808
  var getPriceDifference = function (currentSelectedPrice, roomIndex, accommodationCode, regimeId) {
38715
38809
  var targetPrice = 0;
@@ -38734,7 +38828,7 @@ var AccommodationFlyIn = function (_a) {
38734
38828
  if (difference === 0) {
38735
38829
  return null;
38736
38830
  }
38737
- var formattedAbsoluteValue = formatPrice$1(Math.abs(difference), currencyCode);
38831
+ var formattedAbsoluteValue = formatPrice$2(Math.abs(difference), currencyCode);
38738
38832
  return ''.concat(difference > 0 ? '+' : '-', ' ').concat(formattedAbsoluteValue);
38739
38833
  };
38740
38834
  var getPriceDifferenceClassName = function (difference) {
@@ -38852,7 +38946,7 @@ var AccommodationFlyIn = function (_a) {
38852
38946
  React__default['default'].createElement(
38853
38947
  'div',
38854
38948
  { className: 'flyin__footer' },
38855
- React__default['default'].createElement('div', { className: 'flyin__footer__price' }, 'Total price: ', calculateTotalPrice()),
38949
+ React__default['default'].createElement('div', { className: 'flyin__footer__price' }, translations.SHARED.TOTAL_PRICE, ': ', calculateTotalPrice()),
38856
38950
  React__default['default'].createElement(
38857
38951
  'div',
38858
38952
  { className: 'flyin__button-wrapper' },
@@ -39011,7 +39105,7 @@ var AccommodationFlyIn = function (_a) {
39011
39105
  // )} */}
39012
39106
  // </div>
39013
39107
  // <div className="flyin__footer">
39014
- // <div className="flyin__footer__price">Total price: €</div>
39108
+ // <div className="flyin__footer__price">{translations.SHARED.TOTAL_PRICE}: €</div>
39015
39109
  // <div className="flyin__button-wrapper">
39016
39110
  // <button className="cta cta--select" onClick={handleConfirm}>
39017
39111
  // Toevoegen
@@ -39021,7 +39115,7 @@ var AccommodationFlyIn = function (_a) {
39021
39115
  // </>
39022
39116
  };
39023
39117
 
39024
- var formatPrice = function (price, currencyCode) {
39118
+ var formatPrice$1 = function (price, currencyCode) {
39025
39119
  if (currencyCode === void 0) {
39026
39120
  currencyCode = 'EUR';
39027
39121
  }
@@ -39204,7 +39298,7 @@ var GroupTourFlyIn = function (_a) {
39204
39298
  if (difference === 0) {
39205
39299
  return null;
39206
39300
  }
39207
- var formattedAbsoluteValue = formatPrice(Math.abs(difference), currencyCode);
39301
+ var formattedAbsoluteValue = formatPrice$1(Math.abs(difference), currencyCode);
39208
39302
  return ''.concat(difference > 0 ? '+' : '-', ' ').concat(formattedAbsoluteValue);
39209
39303
  };
39210
39304
  var getPriceDifferenceClassName = function (difference) {
@@ -39337,8 +39431,9 @@ var GroupTourFlyIn = function (_a) {
39337
39431
  React__default['default'].createElement(
39338
39432
  'div',
39339
39433
  { className: 'flyin__footer__price' },
39340
- 'Total price: ',
39341
- formatPrice(adjustedTotalPrice, bookingPackageDetails.currencyCode)
39434
+ translations.SHARED.TOTAL_PRICE,
39435
+ ': ',
39436
+ formatPrice$1(adjustedTotalPrice, bookingPackageDetails.currencyCode)
39342
39437
  ),
39343
39438
  React__default['default'].createElement(
39344
39439
  'div',
@@ -43655,7 +43750,7 @@ var getBaseHotelResult = function (searchResult, cmsItem, languageCode, translat
43655
43750
  searchResult.countryName,
43656
43751
  (_h = cmsItem === null || cmsItem === void 0 ? void 0 : cmsItem.parentItem) === null || _h === void 0 ? void 0 : _h.name
43657
43752
  ),
43658
- price: formatPrice$2(searchResult.price, searchResult.currencyCode, languageCode),
43753
+ price: formatPrice$3(searchResult.price, searchResult.currencyCode, languageCode),
43659
43754
  ctaText: translations === null || translations === void 0 ? void 0 : translations.SRP.VIEW_DETAILS
43660
43755
  };
43661
43756
  };
@@ -43895,6 +43990,24 @@ var HotelAccommodationResults = function (_a) {
43895
43990
  var selectSearchResultsState = function (state) {
43896
43991
  return state.searchResults;
43897
43992
  };
43993
+ var selectPackagingAccoResults = toolkit.createSelector([selectSearchResultsState], function (state) {
43994
+ return state.packagingAccoResults;
43995
+ });
43996
+ var selectSelectedPackagingAccoResultCode = toolkit.createSelector([selectSearchResultsState], function (state) {
43997
+ return state.selectedPackagingAccoResultCode;
43998
+ });
43999
+ var selectSelectedPackagingAccoResult = toolkit.createSelector(
44000
+ [selectPackagingAccoResults, selectSelectedPackagingAccoResultCode],
44001
+ function (packagingAccoResults, selectedPackagingAccoResultCode) {
44002
+ var _a;
44003
+ if (!selectedPackagingAccoResultCode) return null;
44004
+ return (_a = packagingAccoResults.find(function (accoResult) {
44005
+ return accoResult.code === selectedPackagingAccoResultCode;
44006
+ })) !== null && _a !== void 0
44007
+ ? _a
44008
+ : null;
44009
+ }
44010
+ );
43898
44011
  var selectPackagingFlightResults = toolkit.createSelector([selectSearchResultsState], function (state) {
43899
44012
  return state.packagingFlightResults;
43900
44013
  });
@@ -44021,7 +44134,7 @@ var IndependentFlightOption = function (_a) {
44021
44134
  { className: 'price' },
44022
44135
  translations.QSM.ROUNDTRIP + ' ' + translations.SRP.PRICE,
44023
44136
  '\u00A0',
44024
- formatPrice$2(
44137
+ formatPrice$3(
44025
44138
  price,
44026
44139
  'EUR',
44027
44140
  (_c = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _c !== void 0 ? _c : 'en-GB'
@@ -44034,7 +44147,7 @@ var IndependentFlightOption = function (_a) {
44034
44147
  { className: 'price' },
44035
44148
  priceDifference > 0 ? '+' : '-',
44036
44149
  '\u00A0',
44037
- formatPrice$2(
44150
+ formatPrice$3(
44038
44151
  Math.abs(priceDifference),
44039
44152
  'EUR',
44040
44153
  (_d = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _d !== void 0 ? _d : 'en-GB'
@@ -44741,6 +44854,567 @@ var PackageingFlightsFlyIn = function (_a) {
44741
44854
  );
44742
44855
  };
44743
44856
 
44857
+ var ExcursionResults = function (_a) {
44858
+ var _b;
44859
+ _a.isFlyIn;
44860
+ var activeSearchSeed = _a.activeSearchSeed;
44861
+ var context = React.useContext(SearchResultsConfigurationContext);
44862
+ var dispatch = reactRedux.useDispatch();
44863
+ var _c = React.useState(false),
44864
+ isLoading = _c[0],
44865
+ setIsLoading = _c[1];
44866
+ var _d = React.useState(null),
44867
+ excursions = _d[0],
44868
+ setExcursions = _d[1];
44869
+ var _e = reactRedux.useSelector(function (state) {
44870
+ return state.searchResults;
44871
+ }),
44872
+ flyInIsOpen = _e.flyInIsOpen,
44873
+ flyInType = _e.flyInType,
44874
+ excursionSearchParams = _e.excursionSearchParams,
44875
+ transactionId = _e.transactionId;
44876
+ React.useEffect(
44877
+ function () {
44878
+ if (!context || !activeSearchSeed || !excursionSearchParams) return;
44879
+ (function () {
44880
+ return __awaiter(void 0, void 0, void 0, function () {
44881
+ var config, destination, allPax, searchRequest, packageExcursionSearchResults, err_1;
44882
+ var _a, _b, _c, _d, _e;
44883
+ return __generator(this, function (_f) {
44884
+ switch (_f.label) {
44885
+ case 0:
44886
+ _f.trys.push([0, 2, 3, 4]);
44887
+ setIsLoading(true);
44888
+ console.log('Excursion search params changed, fetching excursions...', excursionSearchParams);
44889
+ config = {
44890
+ host: context.tideConnection.host,
44891
+ apiKey: context.tideConnection.apiKey
44892
+ };
44893
+ destination = excursionSearchParams.locationId
44894
+ ? { id: Number(excursionSearchParams.locationId), type: 'location' }
44895
+ : excursionSearchParams.oordId
44896
+ ? { id: Number(excursionSearchParams.oordId), type: 'oord' }
44897
+ : excursionSearchParams.regionId
44898
+ ? { id: Number(excursionSearchParams.regionId), type: 'region' }
44899
+ : excursionSearchParams.countryId
44900
+ ? { id: Number(excursionSearchParams.countryId), type: 'country' }
44901
+ : { id: 0, type: null };
44902
+ allPax = activeSearchSeed.rooms.flatMap(function (room) {
44903
+ return room.pax;
44904
+ });
44905
+ searchRequest = {
44906
+ transactionId: transactionId !== null && transactionId !== void 0 ? transactionId : '',
44907
+ officeId: (_a = context.tideConnection.officeId) !== null && _a !== void 0 ? _a : 1,
44908
+ agentId: (_b = context.agentId) !== null && _b !== void 0 ? _b : null,
44909
+ portalId: (_c = context.portalId) !== null && _c !== void 0 ? _c : null,
44910
+ catalogueId: (_d = context.searchConfiguration.defaultCatalogueId) !== null && _d !== void 0 ? _d : 0,
44911
+ searchConfigurationId: context.searchConfiguration.id,
44912
+ language: (_e = context.languageCode) !== null && _e !== void 0 ? _e : 'en-GB',
44913
+ serviceType: EXCURSION_SERVICE_TYPE,
44914
+ fromDate: excursionSearchParams.fromDate,
44915
+ toDate: excursionSearchParams.toDate,
44916
+ destination: {
44917
+ id: destination.id,
44918
+ isCountry: destination.type === 'country',
44919
+ isRegion: destination.type === 'region',
44920
+ isOord: destination.type === 'oord',
44921
+ isLocation: destination.type === 'location',
44922
+ isAirport: false,
44923
+ code: ''
44924
+ },
44925
+ productCode: '',
44926
+ // rooms: activeSearchSeed.rooms.map((room) => ({
44927
+ // travellers: room.pax.map((pax) => ({
44928
+ // id: pax.id,
44929
+ // age: pax.age,
44930
+ // dateOfBirth: pax.dateOfBirth
44931
+ // }))
44932
+ // })),
44933
+ rooms: [
44934
+ {
44935
+ travellers: allPax.map(function (pax) {
44936
+ return {
44937
+ id: pax.id,
44938
+ age: pax.age,
44939
+ dateOfBirth: pax.dateOfBirth
44940
+ };
44941
+ })
44942
+ }
44943
+ ],
44944
+ tagIds: []
44945
+ };
44946
+ return [4 /*yield*/, build.searchPackagingExcursions(config, searchRequest)];
44947
+ case 1:
44948
+ packageExcursionSearchResults = _f.sent();
44949
+ console.log('Excursion search results', packageExcursionSearchResults);
44950
+ setExcursions(packageExcursionSearchResults);
44951
+ return [3 /*break*/, 4];
44952
+ case 2:
44953
+ err_1 = _f.sent();
44954
+ console.error('Excursion search failed', err_1);
44955
+ return [3 /*break*/, 4];
44956
+ case 3:
44957
+ setIsLoading(false);
44958
+ return [7 /*endfinally*/];
44959
+ case 4:
44960
+ return [2 /*return*/];
44961
+ }
44962
+ });
44963
+ });
44964
+ })();
44965
+ },
44966
+ [context, activeSearchSeed, excursionSearchParams, transactionId]
44967
+ );
44968
+ if (!context || !activeSearchSeed) {
44969
+ return null;
44970
+ }
44971
+ if (!flyInIsOpen || flyInType !== 'excursion-results') {
44972
+ return null;
44973
+ }
44974
+ var translations = getTranslations((_b = context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
44975
+ var handleChange = function (excursion) {
44976
+ console.log('Selected excursion', excursion);
44977
+ dispatch(setFlyInType('excursion-details'));
44978
+ dispatch(setSelectedExcursionSearchResult(excursion));
44979
+ };
44980
+ return isLoading
44981
+ ? React__default['default'].createElement(Spinner, null)
44982
+ : React__default['default'].createElement(
44983
+ 'div',
44984
+ { className: 'flyin__content flyin__content--columns' },
44985
+ React__default['default'].createElement(
44986
+ 'div',
44987
+ { className: 'search__results__wrapper' },
44988
+ React__default['default'].createElement(
44989
+ 'div',
44990
+ { className: 'search__result-row' },
44991
+ React__default['default'].createElement(
44992
+ 'span',
44993
+ { className: 'search__result-row-text' },
44994
+ !isLoading &&
44995
+ React__default['default'].createElement(
44996
+ React__default['default'].Fragment,
44997
+ null,
44998
+ (excursions === null || excursions === void 0 ? void 0 : excursions.length) && excursions.length,
44999
+ '\u00A0',
45000
+ translations.SRP.TOTAL_RESULTS_LABEL
45001
+ )
45002
+ )
45003
+ ),
45004
+ React__default['default'].createElement(
45005
+ 'div',
45006
+ { className: 'search__results__cards search__results__cards--compact' },
45007
+ excursions &&
45008
+ excursions.length > 0 &&
45009
+ excursions.map(function (excursion) {
45010
+ return React__default['default'].createElement(
45011
+ 'div',
45012
+ {
45013
+ key: excursion.code,
45014
+ className: 'search__result-card__wrapper search__result-card__wrapper--custom',
45015
+ onMouseEnter: function (e) {
45016
+ return (e.currentTarget.style.transform = 'scale(1.02)');
45017
+ },
45018
+ onMouseLeave: function (e) {
45019
+ return (e.currentTarget.style.transform = 'scale(1)');
45020
+ }
45021
+ },
45022
+ excursion.contents
45023
+ ? React__default['default'].createElement('div', { dangerouslySetInnerHTML: { __html: he.decode(excursion.contents) } })
45024
+ : 'no contents',
45025
+ React__default['default'].createElement(
45026
+ 'div',
45027
+ { className: 'search__result-card__footer' },
45028
+ React__default['default'].createElement(
45029
+ 'button',
45030
+ {
45031
+ type: 'button',
45032
+ className: 'cta cta--select',
45033
+ onClick: function () {
45034
+ return handleChange(excursion);
45035
+ }
45036
+ },
45037
+ translations === null || translations === void 0 ? void 0 : translations.SHARED.SELECT
45038
+ )
45039
+ )
45040
+ );
45041
+ })
45042
+ )
45043
+ )
45044
+ );
45045
+ };
45046
+
45047
+ var formatPrice = function (price, currencyCode) {
45048
+ if (typeof price !== 'number') return '';
45049
+ return new Intl.NumberFormat('nl-BE', {
45050
+ style: 'currency',
45051
+ currency: currencyCode !== null && currencyCode !== void 0 ? currencyCode : 'EUR'
45052
+ }).format(price);
45053
+ };
45054
+ var getExcursionDayKey = function (date) {
45055
+ var parsed = typeof date === 'string' ? dateFns.parseISO(date) : date;
45056
+ return dateFns.format(parsed, 'yyyy-MM-dd');
45057
+ };
45058
+ var getOptionPaxIds = function (option) {
45059
+ return Array.isArray(option.paxIds)
45060
+ ? Array.from(new Set(option.paxIds)).sort(function (a, b) {
45061
+ return a - b;
45062
+ })
45063
+ : [];
45064
+ };
45065
+ var optionAppliesToPax = function (option, paxId) {
45066
+ return getOptionPaxIds(option).includes(paxId);
45067
+ };
45068
+ var optionAppliesToAllTravellers = function (option, travellerCount) {
45069
+ var paxIds = getOptionPaxIds(option);
45070
+ var expected = Array.from({ length: travellerCount }, function (_, i) {
45071
+ return i;
45072
+ });
45073
+ return (
45074
+ paxIds.length === expected.length &&
45075
+ paxIds.every(function (id, index) {
45076
+ return id === expected[index];
45077
+ })
45078
+ );
45079
+ };
45080
+ var groupOptionsByExcursion = function (options) {
45081
+ var groupedMap = new Map();
45082
+ options.forEach(function (option) {
45083
+ var key = option.accommodationCode;
45084
+ if (!groupedMap.has(key)) {
45085
+ groupedMap.set(key, {
45086
+ accommodationCode: option.accommodationCode,
45087
+ accommodationName: option.accommodationName,
45088
+ options: []
45089
+ });
45090
+ }
45091
+ groupedMap.get(key).options.push(option);
45092
+ });
45093
+ return Array.from(groupedMap.values());
45094
+ };
45095
+ var ExcursionDetails = function () {
45096
+ var _a;
45097
+ var context = React.useContext(SearchResultsConfigurationContext);
45098
+ var dispatch = reactRedux.useDispatch();
45099
+ var _b = reactRedux.useSelector(function (state) {
45100
+ return state.searchResults;
45101
+ }),
45102
+ selectedExcursionSearchResult = _b.selectedExcursionSearchResult,
45103
+ editablePackagingEntry = _b.editablePackagingEntry,
45104
+ excursionSearchParams = _b.excursionSearchParams;
45105
+ if (
45106
+ !context ||
45107
+ !selectedExcursionSearchResult ||
45108
+ !editablePackagingEntry ||
45109
+ !(excursionSearchParams === null || excursionSearchParams === void 0 ? void 0 : excursionSearchParams.date)
45110
+ ) {
45111
+ return null;
45112
+ }
45113
+ var translations = getTranslations((_a = context.languageCode) !== null && _a !== void 0 ? _a : 'en-GB');
45114
+ var travellerCount = editablePackagingEntry.pax.length;
45115
+ var allOptions = React.useMemo(
45116
+ function () {
45117
+ return selectedExcursionSearchResult.rooms.flatMap(function (room) {
45118
+ var _a;
45119
+ return (_a = room.options) !== null && _a !== void 0 ? _a : [];
45120
+ });
45121
+ },
45122
+ [selectedExcursionSearchResult]
45123
+ );
45124
+ var sharedOptions = React.useMemo(
45125
+ function () {
45126
+ return allOptions.filter(function (option) {
45127
+ return optionAppliesToAllTravellers(option, travellerCount);
45128
+ });
45129
+ },
45130
+ [allOptions, travellerCount]
45131
+ );
45132
+ var sharedExcursions = React.useMemo(
45133
+ function () {
45134
+ return groupOptionsByExcursion(sharedOptions);
45135
+ },
45136
+ [sharedOptions]
45137
+ );
45138
+ var paxGroups = React.useMemo(
45139
+ function () {
45140
+ return editablePackagingEntry.pax.map(function (pax) {
45141
+ var paxOptions = allOptions.filter(function (option) {
45142
+ return optionAppliesToPax(option, pax.id) && !optionAppliesToAllTravellers(option, travellerCount);
45143
+ });
45144
+ return {
45145
+ pax: pax,
45146
+ paxId: pax.id,
45147
+ excursions: groupOptionsByExcursion(paxOptions)
45148
+ };
45149
+ });
45150
+ },
45151
+ [editablePackagingEntry.pax, allOptions, travellerCount]
45152
+ );
45153
+ var getSelectedSharedOption = function () {
45154
+ return sharedOptions.find(function (option) {
45155
+ return option.isSelected;
45156
+ });
45157
+ };
45158
+ var getSelectedSharedOptionForExcursion = function (accommodationCode) {
45159
+ return sharedOptions.find(function (option) {
45160
+ return option.accommodationCode === accommodationCode && option.isSelected;
45161
+ });
45162
+ };
45163
+ var getSelectedOptionForPax = function (paxId) {
45164
+ return allOptions.find(function (option) {
45165
+ return optionAppliesToPax(option, paxId) && !optionAppliesToAllTravellers(option, travellerCount) && option.isSelected;
45166
+ });
45167
+ };
45168
+ var getSelectedOptionForExcursion = function (paxId, accommodationCode) {
45169
+ return allOptions.find(function (option) {
45170
+ return (
45171
+ optionAppliesToPax(option, paxId) &&
45172
+ !optionAppliesToAllTravellers(option, travellerCount) &&
45173
+ option.accommodationCode === accommodationCode &&
45174
+ option.isSelected
45175
+ );
45176
+ });
45177
+ };
45178
+ var handlePick = function (selectedGuid, paxId) {
45179
+ var updatedExcursionSearchResult = __assign(__assign({}, selectedExcursionSearchResult), {
45180
+ rooms: selectedExcursionSearchResult.rooms.map(function (room) {
45181
+ return __assign(__assign({}, room), {
45182
+ options: room.options.map(function (option) {
45183
+ var isSharedOption = optionAppliesToAllTravellers(option, travellerCount);
45184
+ if (paxId === undefined) {
45185
+ if (!isSharedOption) {
45186
+ return option;
45187
+ }
45188
+ return __assign(__assign({}, option), { isSelected: option.guid === selectedGuid });
45189
+ }
45190
+ if (isSharedOption || !optionAppliesToPax(option, paxId)) {
45191
+ return option;
45192
+ }
45193
+ return __assign(__assign({}, option), { isSelected: option.guid === selectedGuid });
45194
+ })
45195
+ });
45196
+ })
45197
+ });
45198
+ dispatch(setSelectedExcursionSearchResult(updatedExcursionSearchResult));
45199
+ };
45200
+ var calculateTotalPrice = function () {
45201
+ var selectedOptions = allOptions.filter(function (option) {
45202
+ return option.isSelected;
45203
+ });
45204
+ var totalPrice = selectedOptions.reduce(function (total, option) {
45205
+ return total + (option.price || 0);
45206
+ }, 0);
45207
+ return formatPrice(totalPrice, selectedExcursionSearchResult.currencyCode);
45208
+ };
45209
+ var getSharedPriceDifference = function (accommodationCode) {
45210
+ var currentSelectedShared = getSelectedSharedOption();
45211
+ var targetPrice = 0;
45212
+ var selectedOption = getSelectedSharedOptionForExcursion(accommodationCode);
45213
+ if (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.price) {
45214
+ targetPrice = selectedOption.price;
45215
+ } else {
45216
+ var firstOption = sharedOptions.find(function (option) {
45217
+ return option.accommodationCode === accommodationCode;
45218
+ });
45219
+ targetPrice = (firstOption === null || firstOption === void 0 ? void 0 : firstOption.price) || 0;
45220
+ }
45221
+ return targetPrice - ((currentSelectedShared === null || currentSelectedShared === void 0 ? void 0 : currentSelectedShared.price) || 0);
45222
+ };
45223
+ var getPriceDifference = function (currentSelectedPrice, paxId, accommodationCode) {
45224
+ var targetPrice = 0;
45225
+ var selectedOption = getSelectedOptionForExcursion(paxId, accommodationCode);
45226
+ if (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.price) {
45227
+ targetPrice = selectedOption.price;
45228
+ } else {
45229
+ var firstOption = allOptions.find(function (option) {
45230
+ return optionAppliesToPax(option, paxId) && !optionAppliesToAllTravellers(option, travellerCount) && option.accommodationCode === accommodationCode;
45231
+ });
45232
+ targetPrice = (firstOption === null || firstOption === void 0 ? void 0 : firstOption.price) || 0;
45233
+ }
45234
+ return targetPrice - (currentSelectedPrice || 0);
45235
+ };
45236
+ var formatPriceDifference = function (difference, currencyCode) {
45237
+ if (difference === 0) {
45238
+ return null;
45239
+ }
45240
+ var formattedAbsoluteValue = formatPrice(Math.abs(difference), currencyCode);
45241
+ return ''.concat(difference > 0 ? '+' : '-', ' ').concat(formattedAbsoluteValue);
45242
+ };
45243
+ var getPriceDifferenceClassName = function (difference) {
45244
+ if (difference < 0) {
45245
+ return 'flyin__acco__price flyin__acco__price--decrease';
45246
+ }
45247
+ if (difference > 0) {
45248
+ return 'flyin__acco__price flyin__acco__price--increase';
45249
+ }
45250
+ return 'flyin__acco__price';
45251
+ };
45252
+ var handleConfirm = function () {
45253
+ var dayKey = getExcursionDayKey(excursionSearchParams.date);
45254
+ dispatch(
45255
+ confirmExcursionForDay({
45256
+ dayKey: dayKey,
45257
+ excursion: selectedExcursionSearchResult
45258
+ })
45259
+ );
45260
+ dispatch(setFlyInIsOpen(false));
45261
+ };
45262
+ return React__default['default'].createElement(
45263
+ React__default['default'].Fragment,
45264
+ null,
45265
+ React__default['default'].createElement(
45266
+ 'div',
45267
+ { className: 'flyin__content' },
45268
+ sharedExcursions.length > 0 &&
45269
+ React__default['default'].createElement(
45270
+ 'div',
45271
+ { className: 'flyin__acco' },
45272
+ React__default['default'].createElement('h3', { className: 'flyin__acco__room-title' }, translations.QSM.ALL_TRAVELERS),
45273
+ React__default['default'].createElement(
45274
+ 'div',
45275
+ { className: 'flyin__acco__cards' },
45276
+ sharedExcursions.map(function (excursion) {
45277
+ var selectedOption = getSelectedSharedOptionForExcursion(excursion.accommodationCode);
45278
+ var priceDifference = getSharedPriceDifference(excursion.accommodationCode);
45279
+ return React__default['default'].createElement(
45280
+ 'div',
45281
+ { className: 'flyin__acco__card', key: 'all-'.concat(excursion.accommodationCode) },
45282
+ React__default['default'].createElement(
45283
+ 'div',
45284
+ { className: 'flyin__acco__content' },
45285
+ React__default['default'].createElement('h4', { className: 'flyin__acco__title' }, excursion.accommodationName)
45286
+ ),
45287
+ React__default['default'].createElement(
45288
+ 'div',
45289
+ { className: 'flyin__acco__footer' },
45290
+ React__default['default'].createElement(
45291
+ 'div',
45292
+ { className: 'flyin__acco__footer__actions' },
45293
+ React__default['default'].createElement(
45294
+ 'button',
45295
+ {
45296
+ className: selectedOption ? 'cta cta--select cta--selected' : 'cta cta--select',
45297
+ onClick: function () {
45298
+ var _a;
45299
+ return handlePick(
45300
+ selectedOption ? selectedOption.guid : (_a = lodash.first(excursion.options)) === null || _a === void 0 ? void 0 : _a.guid
45301
+ );
45302
+ }
45303
+ },
45304
+ selectedOption
45305
+ ? translations === null || translations === void 0
45306
+ ? void 0
45307
+ : translations.SHARED.SELECTED
45308
+ : translations === null || translations === void 0
45309
+ ? void 0
45310
+ : translations.SHARED.SELECT
45311
+ ),
45312
+ React__default['default'].createElement(
45313
+ 'div',
45314
+ { className: 'flyin__acco__price__wrapper' },
45315
+ React__default['default'].createElement(
45316
+ 'span',
45317
+ { className: getPriceDifferenceClassName(priceDifference) },
45318
+ formatPriceDifference(priceDifference, selectedExcursionSearchResult.currencyCode)
45319
+ )
45320
+ )
45321
+ )
45322
+ )
45323
+ );
45324
+ })
45325
+ )
45326
+ ),
45327
+ paxGroups.map(function (_a) {
45328
+ var pax = _a.pax,
45329
+ paxId = _a.paxId,
45330
+ excursions = _a.excursions;
45331
+ if (excursions.length === 0) {
45332
+ return null;
45333
+ }
45334
+ var selectedPaxOption = getSelectedOptionForPax(paxId);
45335
+ return React__default['default'].createElement(
45336
+ 'div',
45337
+ { className: 'flyin__acco', key: 'pax-'.concat(pax.id) },
45338
+ React__default['default'].createElement('h3', { className: 'flyin__acco__room-title' }, translations.SUMMARY.TRAVELER, ' ', pax.id + 1),
45339
+ React__default['default'].createElement(
45340
+ 'div',
45341
+ { className: 'flyin__acco__cards' },
45342
+ excursions.map(function (excursion) {
45343
+ var selectedOption = getSelectedOptionForExcursion(paxId, excursion.accommodationCode);
45344
+ var priceDifference = getPriceDifference(
45345
+ selectedPaxOption === null || selectedPaxOption === void 0 ? void 0 : selectedPaxOption.price,
45346
+ paxId,
45347
+ excursion.accommodationCode
45348
+ );
45349
+ return React__default['default'].createElement(
45350
+ 'div',
45351
+ { className: 'flyin__acco__card', key: ''.concat(pax.id, '-').concat(excursion.accommodationCode) },
45352
+ React__default['default'].createElement(
45353
+ 'div',
45354
+ { className: 'flyin__acco__content' },
45355
+ React__default['default'].createElement('h4', { className: 'flyin__acco__title' }, excursion.accommodationName)
45356
+ ),
45357
+ React__default['default'].createElement(
45358
+ 'div',
45359
+ { className: 'flyin__acco__footer' },
45360
+ React__default['default'].createElement(
45361
+ 'div',
45362
+ { className: 'flyin__acco__footer__actions' },
45363
+ React__default['default'].createElement(
45364
+ 'button',
45365
+ {
45366
+ className:
45367
+ (selectedPaxOption === null || selectedPaxOption === void 0 ? void 0 : selectedPaxOption.accommodationCode) ===
45368
+ excursion.accommodationCode
45369
+ ? 'cta cta--select cta--selected'
45370
+ : 'cta cta--select',
45371
+ onClick: function () {
45372
+ var _a;
45373
+ return handlePick(
45374
+ selectedOption ? selectedOption.guid : (_a = lodash.first(excursion.options)) === null || _a === void 0 ? void 0 : _a.guid,
45375
+ paxId
45376
+ );
45377
+ }
45378
+ },
45379
+ (selectedPaxOption === null || selectedPaxOption === void 0 ? void 0 : selectedPaxOption.accommodationCode) ===
45380
+ excursion.accommodationCode
45381
+ ? translations === null || translations === void 0
45382
+ ? void 0
45383
+ : translations.SHARED.SELECTED
45384
+ : translations === null || translations === void 0
45385
+ ? void 0
45386
+ : translations.SHARED.SELECT
45387
+ ),
45388
+ React__default['default'].createElement(
45389
+ 'div',
45390
+ { className: 'flyin__acco__price__wrapper' },
45391
+ React__default['default'].createElement(
45392
+ 'span',
45393
+ { className: getPriceDifferenceClassName(priceDifference) },
45394
+ formatPriceDifference(priceDifference, selectedExcursionSearchResult.currencyCode)
45395
+ )
45396
+ )
45397
+ )
45398
+ )
45399
+ );
45400
+ })
45401
+ )
45402
+ );
45403
+ })
45404
+ ),
45405
+ React__default['default'].createElement(
45406
+ 'div',
45407
+ { className: 'flyin__footer' },
45408
+ React__default['default'].createElement('div', { className: 'flyin__footer__price' }, translations.SHARED.TOTAL_PRICE, ': ', calculateTotalPrice()),
45409
+ React__default['default'].createElement(
45410
+ 'button',
45411
+ { type: 'button', className: 'cta cta--primary', onClick: handleConfirm },
45412
+ translations === null || translations === void 0 ? void 0 : translations.QSM.CONFIRM
45413
+ )
45414
+ )
45415
+ );
45416
+ };
45417
+
44744
45418
  var FlyIn = function (_a) {
44745
45419
  var _b;
44746
45420
  var srpType = _a.srpType,
@@ -44753,7 +45427,8 @@ var FlyIn = function (_a) {
44753
45427
  flyInType = _a.flyInType,
44754
45428
  isPackageEditFlow = _a.isPackageEditFlow,
44755
45429
  handleConfirm = _a.handleConfirm,
44756
- sortByTypes = _a.sortByTypes;
45430
+ sortByTypes = _a.sortByTypes,
45431
+ activeSearchSeed = _a.activeSearchSeed;
44757
45432
  var dispatch = reactRedux.useDispatch();
44758
45433
  var context = React.useContext(SearchResultsConfigurationContext);
44759
45434
  var language = (_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB';
@@ -44811,14 +45486,17 @@ var FlyIn = function (_a) {
44811
45486
  onCancelSearch();
44812
45487
  } else {
44813
45488
  dispatch(setSelectedSearchResult(null));
44814
- dispatch(setSelectedPackagingAccoResult(null));
44815
45489
  }
44816
45490
  dispatch(setFlyInType('acco-details'));
44817
45491
  setIsOpen(false);
44818
45492
  }
44819
45493
  };
44820
45494
  var handleGoBack = function () {
44821
- dispatch(setFlyInType('acco-results'));
45495
+ if (flyInType === 'acco-details') {
45496
+ dispatch(setFlyInType('acco-results'));
45497
+ } else if (flyInType === 'excursion-details') {
45498
+ dispatch(setFlyInType('excursion-results'));
45499
+ }
44822
45500
  };
44823
45501
  var handleSortChange = function (newSortKey, direction) {
44824
45502
  if (sortByTypes === undefined) return;
@@ -44862,7 +45540,8 @@ var FlyIn = function (_a) {
44862
45540
  srpType === build.PortalQsmType.AccommodationAndFlight &&
44863
45541
  flyInType === 'flight-return-results' &&
44864
45542
  ''.concat(translations.SRP.SELECT, ' ').concat(translations.FLIGHTS_FORM.RETURN_FLIGHT),
44865
- srpType === build.PortalQsmType.AccommodationAndFlight && flyInType === 'flight-details' && 'Select your fare'
45543
+ srpType === build.PortalQsmType.AccommodationAndFlight && flyInType === 'flight-details' && 'Select your fare',
45544
+ flyInType === 'excursion-results' || (flyInType === 'excursion-details' && 'Select excursion')
44866
45545
  ),
44867
45546
  React__default['default'].createElement(
44868
45547
  'span',
@@ -44875,8 +45554,7 @@ var FlyIn = function (_a) {
44875
45554
  React__default['default'].createElement(Icon, { name: 'ui-close', width: 30, height: 30, 'aria-hidden': 'true' })
44876
45555
  )
44877
45556
  ),
44878
- isPackageEditFlow &&
44879
- flyInType === 'acco-details' &&
45557
+ ((isPackageEditFlow && flyInType === 'acco-details') || flyInType === 'excursion-details') &&
44880
45558
  React__default['default'].createElement(
44881
45559
  'div',
44882
45560
  { className: 'flyin__content-title-row' },
@@ -44957,6 +45635,12 @@ var FlyIn = function (_a) {
44957
45635
  srpType === build.PortalQsmType.AccommodationAndFlight &&
44958
45636
  (flyInType === 'flight-outward-results' || flyInType === 'flight-return-results') &&
44959
45637
  React__default['default'].createElement(PackageingFlightsFlyIn, { isOpen: isOpen, setIsOpen: setIsOpen }),
45638
+ srpType === build.PortalQsmType.AccommodationAndFlight &&
45639
+ flyInType === 'excursion-results' &&
45640
+ React__default['default'].createElement(ExcursionResults, { isFlyIn: true, activeSearchSeed: activeSearchSeed }),
45641
+ srpType === build.PortalQsmType.AccommodationAndFlight &&
45642
+ flyInType === 'excursion-details' &&
45643
+ React__default['default'].createElement(ExcursionDetails, null),
44960
45644
  srpType === build.PortalQsmType.GroupTour &&
44961
45645
  React__default['default'].createElement(GroupTourFlyIn, { isLoading: detailsLoading, isOpen: isOpen, setIsOpen: setIsOpen })
44962
45646
  )
@@ -45315,7 +45999,7 @@ var PairedFlightOption = function (_a) {
45315
45999
  React__default['default'].createElement(
45316
46000
  'span',
45317
46001
  { className: 'price' },
45318
- formatPrice$2(
46002
+ formatPrice$3(
45319
46003
  item.price,
45320
46004
  'EUR',
45321
46005
  (_c = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _c !== void 0 ? _c : 'en-GB'
@@ -47151,7 +47835,7 @@ var GroupTourCard = function (_a) {
47151
47835
  React__default['default'].createElement(
47152
47836
  'div',
47153
47837
  { className: 'search__result-card__allotment__price' },
47154
- formatPrice$2(result.price, result.currencyCode, languageCode),
47838
+ formatPrice$3(result.price, result.currencyCode, languageCode),
47155
47839
  ' ',
47156
47840
  translations.PRODUCT.PER_PERSON
47157
47841
  )
@@ -48045,6 +48729,227 @@ var FullItinerary = function (_a) {
48045
48729
  return React__default['default'].createElement('div', { ref: hostRef });
48046
48730
  };
48047
48731
 
48732
+ var getExcursionContentWithUpdatedPrice = function (contents, totalPrice, currencyCode) {
48733
+ if (!contents) return '';
48734
+ var decodedHtml = he.decode(contents);
48735
+ var parser = new DOMParser();
48736
+ var doc = parser.parseFromString(decodedHtml, 'text/html');
48737
+ var priceElement = doc.querySelector('[data-excursion-price]');
48738
+ if (priceElement) {
48739
+ priceElement.textContent = new Intl.NumberFormat('nl-BE', {
48740
+ style: 'currency',
48741
+ currency: currencyCode !== null && currencyCode !== void 0 ? currencyCode : 'EUR'
48742
+ }).format(totalPrice);
48743
+ }
48744
+ return doc.body.innerHTML;
48745
+ };
48746
+ var DayByDayExcursions = function () {
48747
+ var _a;
48748
+ var context = React.useContext(SearchResultsConfigurationContext);
48749
+ var translations = getTranslations((_a = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _a !== void 0 ? _a : 'en-GB');
48750
+ var dispatch = reactRedux.useDispatch();
48751
+ var confirmedExcursionsByDay = reactRedux.useSelector(function (state) {
48752
+ return state.searchResults;
48753
+ }).confirmedExcursionsByDay;
48754
+ var selectedPackagingAccoResult = reactRedux.useSelector(selectSelectedPackagingAccoResult);
48755
+ var stayDates = React.useMemo(
48756
+ function () {
48757
+ if (
48758
+ !(selectedPackagingAccoResult === null || selectedPackagingAccoResult === void 0 ? void 0 : selectedPackagingAccoResult.fromDate) ||
48759
+ !(selectedPackagingAccoResult === null || selectedPackagingAccoResult === void 0 ? void 0 : selectedPackagingAccoResult.toDate)
48760
+ ) {
48761
+ return [];
48762
+ }
48763
+ return getDatesBetween(selectedPackagingAccoResult.fromDate, selectedPackagingAccoResult.toDate);
48764
+ },
48765
+ [
48766
+ selectedPackagingAccoResult === null || selectedPackagingAccoResult === void 0 ? void 0 : selectedPackagingAccoResult.fromDate,
48767
+ selectedPackagingAccoResult === null || selectedPackagingAccoResult === void 0 ? void 0 : selectedPackagingAccoResult.toDate
48768
+ ]
48769
+ );
48770
+ var handleSearchExcursions = function (day) {
48771
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
48772
+ if (!selectedPackagingAccoResult) {
48773
+ return;
48774
+ }
48775
+ var searchParams = {
48776
+ date: day.toISOString(),
48777
+ fromDate: day.toISOString(),
48778
+ toDate: day.toISOString(),
48779
+ countryId: selectedPackagingAccoResult.countryId,
48780
+ regionId: selectedPackagingAccoResult.regionId,
48781
+ oordId: selectedPackagingAccoResult.oordId,
48782
+ locationId: selectedPackagingAccoResult.locationId,
48783
+ locationName: selectedPackagingAccoResult.locationName,
48784
+ accommodationCode:
48785
+ (_e =
48786
+ (_d =
48787
+ (_c =
48788
+ (_b = (_a = selectedPackagingAccoResult.rooms) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.options) ===
48789
+ null || _c === void 0
48790
+ ? void 0
48791
+ : _c.find(function (option) {
48792
+ return option.isSelected;
48793
+ })) === null || _d === void 0
48794
+ ? void 0
48795
+ : _d.accommodationCode) !== null && _e !== void 0
48796
+ ? _e
48797
+ : null,
48798
+ accommodationName:
48799
+ (_k =
48800
+ (_j =
48801
+ (_h =
48802
+ (_g = (_f = selectedPackagingAccoResult.rooms) === null || _f === void 0 ? void 0 : _f[0]) === null || _g === void 0 ? void 0 : _g.options) ===
48803
+ null || _h === void 0
48804
+ ? void 0
48805
+ : _h.find(function (option) {
48806
+ return option.isSelected;
48807
+ })) === null || _j === void 0
48808
+ ? void 0
48809
+ : _j.accommodationName) !== null && _k !== void 0
48810
+ ? _k
48811
+ : null,
48812
+ hotelCode: selectedPackagingAccoResult.code,
48813
+ hotelName: selectedPackagingAccoResult.name,
48814
+ rooms:
48815
+ (_l = selectedPackagingAccoResult === null || selectedPackagingAccoResult === void 0 ? void 0 : selectedPackagingAccoResult.rooms) !== null &&
48816
+ _l !== void 0
48817
+ ? _l
48818
+ : []
48819
+ };
48820
+ dispatch(setExcursionSearchParams(searchParams));
48821
+ dispatch(setFlyInIsOpen(true));
48822
+ dispatch(setFlyInType('excursion-results'));
48823
+ };
48824
+ var getSelectedOptionsSummary = function (excursion) {
48825
+ var options = excursion.rooms.flatMap(function (room) {
48826
+ var _a;
48827
+ return (_a = room.options) !== null && _a !== void 0 ? _a : [];
48828
+ });
48829
+ return options.filter(function (option) {
48830
+ return option.isSelected;
48831
+ });
48832
+ };
48833
+ if (!selectedPackagingAccoResult || stayDates.length === 0) {
48834
+ return null;
48835
+ }
48836
+ return React__default['default'].createElement(
48837
+ React__default['default'].Fragment,
48838
+ null,
48839
+ stayDates.map(function (day) {
48840
+ var _a;
48841
+ var dayKey = dateFns.format(day, 'yyyy-MM-dd');
48842
+ var formattedDay = dateFns.format(day, 'd');
48843
+ var formattedMonth = dateFns.format(day, 'MMM');
48844
+ var confirmedExcursions = (_a = confirmedExcursionsByDay[dayKey]) !== null && _a !== void 0 ? _a : [];
48845
+ return React__default['default'].createElement(
48846
+ React__default['default'].Fragment,
48847
+ { key: dayKey },
48848
+ React__default['default'].createElement(
48849
+ 'div',
48850
+ { className: 'search__results__label search__results__label--secondary' },
48851
+ React__default['default'].createElement(
48852
+ 'div',
48853
+ { className: 'search__results__label__date' },
48854
+ React__default['default'].createElement('p', { className: 'search__results__label__date-date' }, formattedDay),
48855
+ React__default['default'].createElement('p', null, formattedMonth)
48856
+ ),
48857
+ React__default['default'].createElement(
48858
+ 'div',
48859
+ { className: 'search__results__label__text' },
48860
+ React__default['default'].createElement(
48861
+ 'h3',
48862
+ null,
48863
+ translations.SRP.SELECT,
48864
+ ' ',
48865
+ React__default['default'].createElement('strong', null, translations.SRP.EXCURSION)
48866
+ )
48867
+ )
48868
+ ),
48869
+ React__default['default'].createElement(
48870
+ 'div',
48871
+ { className: 'search__results__cards__actions' },
48872
+ React__default['default'].createElement('span', null, 'Accommodation for this day: ', selectedPackagingAccoResult.name),
48873
+ React__default['default'].createElement(
48874
+ 'button',
48875
+ {
48876
+ type: 'button',
48877
+ className: 'cta cta--secondary',
48878
+ onClick: function () {
48879
+ return handleSearchExcursions(day);
48880
+ }
48881
+ },
48882
+ confirmedExcursions.length > 0 ? 'Add another excursion' : ''.concat(translations.SRP.SELECT, ' ').concat(translations.SRP.EXCURSION)
48883
+ )
48884
+ ),
48885
+ React__default['default'].createElement(
48886
+ 'div',
48887
+ { className: 'search__results__cards search__results__cards--compact' },
48888
+ confirmedExcursions &&
48889
+ confirmedExcursions.length > 0 &&
48890
+ confirmedExcursions.map(function (excursion) {
48891
+ var selectedOptions = getSelectedOptionsSummary(excursion);
48892
+ var totalPrice = selectedOptions.reduce(function (sum, option) {
48893
+ return sum + (option.price || 0);
48894
+ }, 0);
48895
+ var updatedContents = getExcursionContentWithUpdatedPrice(excursion.contents, totalPrice, excursion.currencyCode);
48896
+ return React__default['default'].createElement(
48897
+ 'div',
48898
+ {
48899
+ key: excursion.code,
48900
+ className: 'search__result-card__wrapper search__result-card__wrapper--custom',
48901
+ onMouseEnter: function (e) {
48902
+ return (e.currentTarget.style.transform = 'scale(1.02)');
48903
+ },
48904
+ onMouseLeave: function (e) {
48905
+ return (e.currentTarget.style.transform = 'scale(1)');
48906
+ }
48907
+ },
48908
+ React__default['default'].createElement('div', { dangerouslySetInnerHTML: { __html: updatedContents } }),
48909
+ React__default['default'].createElement(
48910
+ 'div',
48911
+ { className: 'search__result-card__content--extra' },
48912
+ React__default['default'].createElement(
48913
+ 'div',
48914
+ { className: 'search__result-card__content__wrapper' },
48915
+ React__default['default'].createElement(
48916
+ 'div',
48917
+ { className: 'search__result-card__options' },
48918
+ selectedOptions.length > 0 &&
48919
+ selectedOptions.map(function (option) {
48920
+ return React__default['default'].createElement(
48921
+ 'div',
48922
+ { className: 'search__result-card__option', key: option.guid },
48923
+ React__default['default'].createElement(Icon$1, { name: 'ui-ticket', width: 14, height: 14, 'aria-hidden': 'true' }),
48924
+ React__default['default'].createElement('span', null, option.accommodationName)
48925
+ );
48926
+ })
48927
+ )
48928
+ )
48929
+ ),
48930
+ React__default['default'].createElement(
48931
+ 'div',
48932
+ { className: 'search__result-card__footer' },
48933
+ React__default['default'].createElement(
48934
+ 'button',
48935
+ {
48936
+ type: 'button',
48937
+ className: 'cta cta--remove',
48938
+ onClick: function () {
48939
+ return dispatch(removeConfirmedExcursionForDay({ dayKey: dayKey, excursionCode: excursion.code }));
48940
+ }
48941
+ },
48942
+ 'Remove'
48943
+ )
48944
+ )
48945
+ );
48946
+ })
48947
+ )
48948
+ );
48949
+ })
48950
+ );
48951
+ };
48952
+
48048
48953
  var SearchResultsContainer = function () {
48049
48954
  var _a, _b;
48050
48955
  var currentSearch = typeof window !== 'undefined' ? window.location.search : '';
@@ -48073,7 +48978,8 @@ var SearchResultsContainer = function () {
48073
48978
  transactionId = _c.transactionId,
48074
48979
  flyInType = _c.flyInType,
48075
48980
  itinerary = _c.itinerary,
48076
- packagingFlightResults = _c.packagingFlightResults;
48981
+ packagingFlightResults = _c.packagingFlightResults,
48982
+ confirmedExcursionsByDay = _c.confirmedExcursionsByDay;
48077
48983
  var isMobile = useMediaQuery('(max-width: 1200px)');
48078
48984
  var _d = React.useState(false),
48079
48985
  initialFiltersSet = _d[0],
@@ -49242,6 +50148,7 @@ var SearchResultsContainer = function () {
49242
50148
  selectedHotelCode: selectedPackagingAccoResultCode,
49243
50149
  accommodationResults: packagingAccoResults,
49244
50150
  selectedFlight: selectedCombinationFlight !== null && selectedCombinationFlight !== void 0 ? selectedCombinationFlight : null,
50151
+ confirmedExcursionsByDay: confirmedExcursionsByDay,
49245
50152
  seed: seed,
49246
50153
  transactionId:
49247
50154
  (_c =
@@ -49254,6 +50161,7 @@ var SearchResultsContainer = function () {
49254
50161
  : '',
49255
50162
  language: (_d = context.languageCode) !== null && _d !== void 0 ? _d : 'en-GB'
49256
50163
  });
50164
+ console.log('Built nextEntry', nextEntry);
49257
50165
  if (!nextEntry) return;
49258
50166
  dispatch(setEditablePackagingEntry(nextEntry));
49259
50167
  if (selectedCombinationFlight) {
@@ -49267,6 +50175,7 @@ var SearchResultsContainer = function () {
49267
50175
  packagingAccoResults,
49268
50176
  packagingAccoSearchDetails,
49269
50177
  selectedCombinationFlight,
50178
+ confirmedExcursionsByDay,
49270
50179
  transactionId,
49271
50180
  dispatch
49272
50181
  ]
@@ -49281,56 +50190,103 @@ var SearchResultsContainer = function () {
49281
50190
  return line.serviceType !== FLIGHT_SERVICE_TYPE;
49282
50191
  });
49283
50192
  };
50193
+ var removeExcursionLines = function (lines) {
50194
+ return lines.filter(function (line) {
50195
+ return line.serviceType !== EXCURSION_SERVICE_TYPE;
50196
+ });
50197
+ };
49284
50198
  var buildAccommodationLinesFromSelection = function (selectedHotel, seed) {
49285
- if (!selectedHotel) return [];
50199
+ return buildPackagingAccommodationLines(selectedHotel, seed, ACCOMMODATION_SERVICE_TYPE);
50200
+ };
50201
+ var buildExcursionLinesFromConfirmedDays = function (confirmedExcursionsByDay) {
50202
+ return Object.values(confirmedExcursionsByDay)
50203
+ .flat()
50204
+ .flatMap(function (excursion) {
50205
+ var selectedOptions = excursion.rooms.flatMap(function (room) {
50206
+ return room.options.filter(function (option) {
50207
+ return option.isSelected;
50208
+ });
50209
+ });
50210
+ var parentGuid = crypto.randomUUID();
50211
+ return selectedOptions.map(function (option, index) {
50212
+ var _a, _b, _c;
50213
+ return {
50214
+ guid: (_a = option.guid) !== null && _a !== void 0 ? _a : crypto.randomUUID(),
50215
+ moment: '',
50216
+ parentGuid: index === 0 ? null : parentGuid,
50217
+ order: index,
50218
+ isChanged: true,
50219
+ from: excursion.fromDate,
50220
+ to: excursion.toDate,
50221
+ serviceType: EXCURSION_SERVICE_TYPE,
50222
+ productName: excursion.name,
50223
+ productCode: excursion.code,
50224
+ accommodationName: option.accommodationName,
50225
+ accommodationCode: option.accommodationCode,
50226
+ regimeName: option.regimeName,
50227
+ regimeCode: option.regimeCode,
50228
+ country: excursion.countryId ? { id: excursion.countryId, name: excursion.countryName, localizations: [] } : null,
50229
+ region: excursion.regionId ? { id: excursion.regionId, name: excursion.regionName, localizations: [] } : null,
50230
+ oord: excursion.oordId ? { id: excursion.oordId, name: excursion.oordName, localizations: [] } : null,
50231
+ location: excursion.locationId ? { id: excursion.locationId, name: excursion.locationName, localizations: [] } : null,
50232
+ longitude: (_b = excursion.longitude) !== null && _b !== void 0 ? _b : null,
50233
+ latitude: (_c = excursion.latitude) !== null && _c !== void 0 ? _c : null,
50234
+ pax: Array.isArray(option.paxIds)
50235
+ ? option.paxIds.map(function (paxId, paxIndex) {
50236
+ return {
50237
+ paxId: paxId,
50238
+ room: 0,
50239
+ order: paxIndex
50240
+ };
50241
+ })
50242
+ : [],
50243
+ flightInformation: null
50244
+ };
50245
+ });
50246
+ });
50247
+ };
50248
+ var buildPackagingAccommodationLines = function (selectedItem, seed, serviceType) {
50249
+ if (!selectedItem) return [];
49286
50250
  var parentGuid = crypto.randomUUID();
49287
- return selectedHotel.rooms
50251
+ return selectedItem.rooms
49288
50252
  .filter(function (room) {
49289
50253
  return room.options.some(function (o) {
49290
50254
  return o.isSelected;
49291
50255
  });
49292
50256
  })
49293
50257
  .map(function (room, index) {
49294
- var _a, _b, _c, _d, _e;
50258
+ var _a, _b, _c;
49295
50259
  var option = room.options.find(function (o) {
49296
50260
  return o.isSelected;
49297
50261
  });
49298
- var pax =
49299
- (_b =
49300
- (_a = seed.rooms) === null || _a === void 0
49301
- ? void 0
49302
- : _a.flatMap(function (room, roomIndex) {
49303
- return room.pax.map(function (p, paxIndex) {
49304
- return {
49305
- paxId: p.id,
49306
- room: roomIndex,
49307
- order: paxIndex
49308
- };
49309
- });
49310
- })) !== null && _b !== void 0
49311
- ? _b
49312
- : [];
50262
+ var pax = option.paxIds.map(function (p, paxIndex) {
50263
+ return {
50264
+ paxId: p,
50265
+ room: index,
50266
+ order: paxIndex
50267
+ };
50268
+ });
49313
50269
  return {
49314
- guid: (_c = option.guid) !== null && _c !== void 0 ? _c : crypto.randomUUID(),
50270
+ guid: (_a = option.guid) !== null && _a !== void 0 ? _a : crypto.randomUUID(),
49315
50271
  moment: '',
49316
50272
  parentGuid: index === 0 ? null : parentGuid,
49317
50273
  order: index,
49318
50274
  isChanged: true,
49319
- from: selectedHotel.fromDate,
49320
- to: selectedHotel.toDate,
49321
- serviceType: ACCOMMODATION_SERVICE_TYPE,
49322
- productName: selectedHotel.name,
49323
- productCode: selectedHotel.code,
50275
+ from: selectedItem.fromDate,
50276
+ to: selectedItem.toDate,
50277
+ serviceType: serviceType,
50278
+ productName: selectedItem.name,
50279
+ productCode: selectedItem.code,
49324
50280
  accommodationName: option.accommodationName,
49325
50281
  accommodationCode: option.accommodationCode,
49326
50282
  regimeName: option.regimeName,
49327
50283
  regimeCode: option.regimeCode,
49328
- country: selectedHotel.countryId ? { id: selectedHotel.countryId, name: selectedHotel.countryName, localizations: [] } : null,
49329
- region: selectedHotel.regionId ? { id: selectedHotel.regionId, name: selectedHotel.regionName, localizations: [] } : null,
49330
- oord: selectedHotel.oordId ? { id: selectedHotel.oordId, name: selectedHotel.oordName, localizations: [] } : null,
49331
- location: selectedHotel.locationId ? { id: selectedHotel.locationId, name: selectedHotel.locationName, localizations: [] } : null,
49332
- longitude: (_d = selectedHotel.longitude) !== null && _d !== void 0 ? _d : null,
49333
- latitude: (_e = selectedHotel.latitude) !== null && _e !== void 0 ? _e : null,
50284
+ country: selectedItem.countryId ? { id: selectedItem.countryId, name: selectedItem.countryName, localizations: [] } : null,
50285
+ region: selectedItem.regionId ? { id: selectedItem.regionId, name: selectedItem.regionName, localizations: [] } : null,
50286
+ oord: selectedItem.oordId ? { id: selectedItem.oordId, name: selectedItem.oordName, localizations: [] } : null,
50287
+ location: selectedItem.locationId ? { id: selectedItem.locationId, name: selectedItem.locationName, localizations: [] } : null,
50288
+ longitude: (_b = selectedItem.longitude) !== null && _b !== void 0 ? _b : null,
50289
+ latitude: (_c = selectedItem.latitude) !== null && _c !== void 0 ? _c : null,
49334
50290
  pax: pax,
49335
50291
  flightInformation: null
49336
50292
  };
@@ -49458,6 +50414,7 @@ var SearchResultsContainer = function () {
49458
50414
  selectedHotelCode = _a.selectedHotelCode,
49459
50415
  accommodationResults = _a.accommodationResults,
49460
50416
  selectedFlight = _a.selectedFlight,
50417
+ confirmedExcursionsByDay = _a.confirmedExcursionsByDay,
49461
50418
  seed = _a.seed,
49462
50419
  transactionId = _a.transactionId,
49463
50420
  language = _a.language;
@@ -49485,6 +50442,12 @@ var SearchResultsContainer = function () {
49485
50442
  nextLines = __spreadArray(__spreadArray([], nextLines, true), flightLines, true);
49486
50443
  }
49487
50444
  }
50445
+ // excursions
50446
+ var excursionLines = buildExcursionLinesFromConfirmedDays(confirmedExcursionsByDay);
50447
+ nextLines = removeExcursionLines(nextLines);
50448
+ if (excursionLines.length) {
50449
+ nextLines = __spreadArray(__spreadArray([], nextLines, true), excursionLines, true);
50450
+ }
49488
50451
  nextLines = nextLines.map(function (line, index) {
49489
50452
  return __assign(__assign({}, line), { order: index });
49490
50453
  });
@@ -49495,7 +50458,7 @@ var SearchResultsContainer = function () {
49495
50458
  if (sourceEntry) {
49496
50459
  return structuredClone(sourceEntry);
49497
50460
  }
49498
- var paxId = 1;
50461
+ var paxId = 0;
49499
50462
  var pax =
49500
50463
  (_b =
49501
50464
  (_a = seed.rooms) === null || _a === void 0
@@ -49704,8 +50667,6 @@ var SearchResultsContainer = function () {
49704
50667
  context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
49705
50668
  !context.packagingEntry &&
49706
50669
  context.showFlightResults &&
49707
- // bookingPackageDetails?.outwardFlights &&
49708
- // <FlightResults flights={bookingPackageDetails?.outwardFlights} isDeparture={true} />
49709
50670
  React__default['default'].createElement(
49710
50671
  React__default['default'].Fragment,
49711
50672
  null,
@@ -49786,11 +50747,12 @@ var SearchResultsContainer = function () {
49786
50747
  context.showHotelAccommodationResults &&
49787
50748
  !context.packagingEntry &&
49788
50749
  React__default['default'].createElement(HotelAccommodationResults, { isLoading: isLoading }),
50750
+ context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
50751
+ !context.packagingEntry &&
50752
+ React__default['default'].createElement(DayByDayExcursions, null),
49789
50753
  context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
49790
50754
  !context.packagingEntry &&
49791
50755
  context.showFlightResults &&
49792
- // bookingPackageDetails?.returnFlights &&
49793
- // <FlightResults flights={bookingPackageDetails?.returnFlights} isDeparture={false} />
49794
50756
  React__default['default'].createElement(
49795
50757
  React__default['default'].Fragment,
49796
50758
  null,
@@ -49862,7 +50824,8 @@ var SearchResultsContainer = function () {
49862
50824
  detailsLoading: detailsIsLoading,
49863
50825
  flyInType: flyInType,
49864
50826
  isPackageEditFlow: !!context.packagingEntry,
49865
- sortByTypes: sortByTypes
50827
+ sortByTypes: sortByTypes,
50828
+ activeSearchSeed: activeSearchSeed
49866
50829
  })
49867
50830
  )
49868
50831
  )