@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
@@ -608,7 +608,8 @@ var QSM$g = {
608
608
  RETURN_DATE: 'تاريخ العودة',
609
609
  CONFIRM: 'تأكيد',
610
610
  TRAVELERS: 'المسافرون',
611
- GROUP_TOUR: 'جولة جماعية'
611
+ GROUP_TOUR: 'جولة جماعية',
612
+ ALL_TRAVELERS: 'جميع المسافرين'
612
613
  };
613
614
  var SRP$f = {
614
615
  SHOW_MORE: 'عرض المزيد',
@@ -659,7 +660,8 @@ var SRP$f = {
659
660
  DEPARTURE_TIME_DESC: 'وقت المغادرة تنازلياً',
660
661
  DURATION_ASC: 'المدة تصاعدياً',
661
662
  DURATION_DESC: 'المدة تنازلياً',
662
- TRAVEL_GROUP: 'مجموعة المسافرين'
663
+ TRAVEL_GROUP: 'مجموعة المسافرين',
664
+ EXCURSION: 'رحلة'
663
665
  };
664
666
  var arJson = {
665
667
  STEPS: STEPS$f,
@@ -1014,7 +1016,8 @@ var QSM$f = {
1014
1016
  RETURN_DATE: 'Hjemrejsedato',
1015
1017
  CONFIRM: 'Bekræft',
1016
1018
  TRAVELERS: 'Rejsende',
1017
- GROUP_TOUR: 'Grupperejse'
1019
+ GROUP_TOUR: 'Grupperejse',
1020
+ ALL_TRAVELERS: 'Alle rejsende'
1018
1021
  };
1019
1022
  var SRP$e = {
1020
1023
  SHOW_MORE: 'Vis flere',
@@ -1065,7 +1068,8 @@ var SRP$e = {
1065
1068
  DEPARTURE_TIME_DESC: 'Afgangstid faldende',
1066
1069
  DURATION_ASC: 'Varighed stigende',
1067
1070
  DURATION_DESC: 'Varighed faldende',
1068
- TRAVEL_GROUP: 'Rejseselskab'
1071
+ TRAVEL_GROUP: 'Rejseselskab',
1072
+ EXCURSION: 'Udflugt'
1069
1073
  };
1070
1074
  var daJson = {
1071
1075
  STEPS: STEPS$e,
@@ -1421,7 +1425,8 @@ var QSM$e = {
1421
1425
  RETURN_DATE: 'Rückreisedatum',
1422
1426
  CONFIRM: 'Bestätigen',
1423
1427
  TRAVELERS: 'Reisende',
1424
- GROUP_TOUR: 'Gruppentour'
1428
+ GROUP_TOUR: 'Gruppentour',
1429
+ ALL_TRAVELERS: 'Alle Reisenden'
1425
1430
  };
1426
1431
  var SRP$d = {
1427
1432
  SHOW_MORE: 'Mehr anzeigen',
@@ -1472,7 +1477,8 @@ var SRP$d = {
1472
1477
  DEPARTURE_AIRPORTS: 'Abflughäfen',
1473
1478
  ARRIVAL_AIRPORTS: 'Ankunftsflughäfen',
1474
1479
  PRICE: 'Preis',
1475
- TRAVEL_GROUP: 'Reisegruppe'
1480
+ TRAVEL_GROUP: 'Reisegruppe',
1481
+ EXCURSION: 'Ausflug'
1476
1482
  };
1477
1483
  var deJson = {
1478
1484
  STEPS: STEPS$d,
@@ -1831,7 +1837,8 @@ var QSM$d = {
1831
1837
  RETURN_DATE: 'Return date',
1832
1838
  CONFIRM: 'Confirm',
1833
1839
  TRAVELERS: 'Travelers',
1834
- GROUP_TOUR: 'Group tour'
1840
+ GROUP_TOUR: 'Group tour',
1841
+ ALL_TRAVELERS: 'All travelers'
1835
1842
  };
1836
1843
  var SRP$c = {
1837
1844
  SHOW_MORE: 'Show more',
@@ -1882,7 +1889,8 @@ var SRP$c = {
1882
1889
  DEPARTURE_RANGE: 'Departure range',
1883
1890
  DEPARTURE_AIRPORTS: 'Departure airports',
1884
1891
  ARRIVAL_AIRPORTS: 'Arrival airports',
1885
- TRAVEL_GROUP: 'Travel group'
1892
+ TRAVEL_GROUP: 'Travel group',
1893
+ EXCURSION: 'Excursion'
1886
1894
  };
1887
1895
  var enJson = {
1888
1896
  STEPS: STEPS$c,
@@ -2238,7 +2246,8 @@ var QSM$c = {
2238
2246
  RETURN_DATE: 'Fecha de regreso',
2239
2247
  CONFIRM: 'Confirmar',
2240
2248
  TRAVELERS: 'Viajeros',
2241
- GROUP_TOUR: 'Tour grupal'
2249
+ GROUP_TOUR: 'Tour grupal',
2250
+ ALL_TRAVELERS: 'Todos los viajeros'
2242
2251
  };
2243
2252
  var SRP$b = {
2244
2253
  SHOW_MORE: 'Mostrar más',
@@ -2289,7 +2298,8 @@ var SRP$b = {
2289
2298
  DEPARTURE_AIRPORTS: 'Aeropuertos de salida',
2290
2299
  ARRIVAL_AIRPORTS: 'Aeropuertos de llegada',
2291
2300
  PRICE: 'Precio',
2292
- TRAVEL_GROUP: 'Grupo de viaje'
2301
+ TRAVEL_GROUP: 'Grupo de viaje',
2302
+ EXCURSION: 'Excursión'
2293
2303
  };
2294
2304
  var esJson = {
2295
2305
  STEPS: STEPS$b,
@@ -2649,7 +2659,8 @@ var QSM$b = {
2649
2659
  RETURN_DATE: 'Date de retour',
2650
2660
  CONFIRM: 'Confirmer',
2651
2661
  TRAVELERS: 'Voyageurs',
2652
- GROUP_TOUR: 'Tour en groupe'
2662
+ GROUP_TOUR: 'Tour en groupe',
2663
+ ALL_TRAVELERS: 'Tous les voyageurs'
2653
2664
  };
2654
2665
  var SRP$a = {
2655
2666
  SHOW_MORE: 'Afficher plus',
@@ -2700,7 +2711,8 @@ var SRP$a = {
2700
2711
  DEPARTURE_AIRPORTS: 'Aéroports de départ',
2701
2712
  ARRIVAL_AIRPORTS: 'Aéroports d’arrivée',
2702
2713
  PRICE: 'Prix',
2703
- TRAVEL_GROUP: 'Groupe de voyageurs'
2714
+ TRAVEL_GROUP: 'Groupe de voyageurs',
2715
+ EXCURSION: 'Excursion'
2704
2716
  };
2705
2717
  var frBeJson = {
2706
2718
  STEPS: STEPS$a,
@@ -3055,7 +3067,8 @@ var QSM$a = {
3055
3067
  RETURN_DATE: 'Date de retour',
3056
3068
  CONFIRM: 'Confirmer',
3057
3069
  TRAVELERS: 'Voyageurs',
3058
- GROUP_TOUR: 'Tour en groupe'
3070
+ GROUP_TOUR: 'Tour en groupe',
3071
+ ALL_TRAVELERS: 'Tous les voyageurs'
3059
3072
  };
3060
3073
  var SRP$9 = {
3061
3074
  SHOW_MORE: 'Afficher plus',
@@ -3106,7 +3119,8 @@ var SRP$9 = {
3106
3119
  DEPARTURE_AIRPORTS: 'Aéroports de départ',
3107
3120
  ARRIVAL_AIRPORTS: 'Aéroports d’arrivée',
3108
3121
  PRICE: 'Prix',
3109
- TRAVEL_GROUP: 'Groupe de voyageurs'
3122
+ TRAVEL_GROUP: 'Groupe de voyageurs',
3123
+ EXCURSION: 'Excursion'
3110
3124
  };
3111
3125
  var frFrJson = {
3112
3126
  STEPS: STEPS$9,
@@ -3461,7 +3475,8 @@ var QSM$9 = {
3461
3475
  RETURN_DATE: 'Heimkomudagur',
3462
3476
  CONFIRM: 'Staðfesta',
3463
3477
  TRAVELERS: 'Ferðalangar',
3464
- GROUP_TOUR: 'Ferð í hóp'
3478
+ GROUP_TOUR: 'Ferð í hóp',
3479
+ ALL_TRAVELERS: 'Allir ferðalangar'
3465
3480
  };
3466
3481
  var SRP$8 = {
3467
3482
  SHOW_MORE: 'Sýna meira',
@@ -3512,7 +3527,8 @@ var SRP$8 = {
3512
3527
  DEPARTURE_AIRPORTS: 'Brottfararflugvellir',
3513
3528
  ARRIVAL_AIRPORTS: 'Komuflugvellir',
3514
3529
  PRICE: 'Verð',
3515
- TRAVEL_GROUP: 'Ferðahópur'
3530
+ TRAVEL_GROUP: 'Ferðahópur',
3531
+ EXCURSION: 'Útflutningur'
3516
3532
  };
3517
3533
  var isJson = {
3518
3534
  STEPS: STEPS$8,
@@ -3868,7 +3884,8 @@ var QSM$8 = {
3868
3884
  RETURN_DATE: 'Data di ritorno',
3869
3885
  CONFIRM: 'Conferma',
3870
3886
  TRAVELERS: 'Viaggiatori',
3871
- GROUP_TOUR: 'Tour di gruppo'
3887
+ GROUP_TOUR: 'Tour di gruppo',
3888
+ ALL_TRAVELERS: 'Tutti i viaggiatori'
3872
3889
  };
3873
3890
  var SRP$7 = {
3874
3891
  SHOW_MORE: 'Mostra di più',
@@ -3919,7 +3936,8 @@ var SRP$7 = {
3919
3936
  DEPARTURE_AIRPORTS: 'Aeroporti di partenza',
3920
3937
  ARRIVAL_AIRPORTS: 'Aeroporti di arrivo',
3921
3938
  PRICE: 'Prezzo',
3922
- TRAVEL_GROUP: 'Gruppo di viaggio'
3939
+ TRAVEL_GROUP: 'Gruppo di viaggio',
3940
+ EXCURSION: 'Escursione'
3923
3941
  };
3924
3942
  var itJson = {
3925
3943
  STEPS: STEPS$7,
@@ -4279,7 +4297,8 @@ var QSM$7 = {
4279
4297
  RETURN_DATE: 'Terugkeerdatum',
4280
4298
  CONFIRM: 'Bevestigen',
4281
4299
  TRAVELERS: 'Reizigers',
4282
- GROUP_TOUR: 'Groepsreis'
4300
+ GROUP_TOUR: 'Groepsreis',
4301
+ ALL_TRAVELERS: 'Alle reizigers'
4283
4302
  };
4284
4303
  var SRP$6 = {
4285
4304
  SHOW_MORE: 'Toon meer',
@@ -4330,7 +4349,8 @@ var SRP$6 = {
4330
4349
  DEPARTURE_AIRPORTS: 'Vertrekluchthavens',
4331
4350
  ARRIVAL_AIRPORTS: 'Aankomstluchthavens',
4332
4351
  PRICE: 'Prijs',
4333
- TRAVEL_GROUP: 'Reisgezelschap'
4352
+ TRAVEL_GROUP: 'Reisgezelschap',
4353
+ EXCURSION: 'Excursie'
4334
4354
  };
4335
4355
  var nlBeJson = {
4336
4356
  STEPS: STEPS$6,
@@ -4686,7 +4706,8 @@ var QSM$6 = {
4686
4706
  RETURN_DATE: 'Terugkeerdatum',
4687
4707
  CONFIRM: 'Bevestigen',
4688
4708
  TRAVELERS: 'Reizigers',
4689
- GROUP_TOUR: 'Groepsreis'
4709
+ GROUP_TOUR: 'Groepsreis',
4710
+ ALL_TRAVELERS: 'Alle reizigers'
4690
4711
  };
4691
4712
  var SRP$5 = {
4692
4713
  SHOW_MORE: 'Toon meer',
@@ -4737,7 +4758,8 @@ var SRP$5 = {
4737
4758
  DEPARTURE_AIRPORTS: 'Vertrekluchthavens',
4738
4759
  ARRIVAL_AIRPORTS: 'Aankomstluchthavens',
4739
4760
  PRICE: 'Prijs',
4740
- TRAVEL_GROUP: 'Reisgezelschap'
4761
+ TRAVEL_GROUP: 'Reisgezelschap',
4762
+ EXCURSION: 'Excursie'
4741
4763
  };
4742
4764
  var nlNlJson = {
4743
4765
  STEPS: STEPS$5,
@@ -5093,7 +5115,8 @@ var QSM$5 = {
5093
5115
  RETURN_DATE: 'Returdato',
5094
5116
  CONFIRM: 'Bekreft',
5095
5117
  TRAVELERS: 'Reisende',
5096
- GROUP_TOUR: 'Gruppetur'
5118
+ GROUP_TOUR: 'Gruppetur',
5119
+ ALL_TRAVELERS: 'Alle reisende'
5097
5120
  };
5098
5121
  var SRP$4 = {
5099
5122
  SHOW_MORE: 'Vis mer',
@@ -5144,7 +5167,8 @@ var SRP$4 = {
5144
5167
  DEPARTURE_AIRPORTS: 'Avgangsflyplasser',
5145
5168
  ARRIVAL_AIRPORTS: 'Ankomstflyplasser',
5146
5169
  PRICE: 'Pris',
5147
- TRAVEL_GROUP: 'Reisefølge'
5170
+ TRAVEL_GROUP: 'Reisefølge',
5171
+ EXCURSION: 'Utflukt'
5148
5172
  };
5149
5173
  var noJson = {
5150
5174
  STEPS: STEPS$4,
@@ -5500,7 +5524,8 @@ var QSM$4 = {
5500
5524
  RETURN_DATE: 'Data powrotu',
5501
5525
  CONFIRM: 'Potwierdź',
5502
5526
  TRAVELERS: 'Podróżni',
5503
- GROUP_TOUR: 'Tour w grupie'
5527
+ GROUP_TOUR: 'Tour w grupie',
5528
+ ALL_TRAVELERS: 'Wszyscy podróżni'
5504
5529
  };
5505
5530
  var SRP$3 = {
5506
5531
  SHOW_MORE: 'Pokaż więcej',
@@ -5551,7 +5576,8 @@ var SRP$3 = {
5551
5576
  DEPARTURE_AIRPORTS: 'Lotniska wylotu',
5552
5577
  ARRIVAL_AIRPORTS: 'Lotniska przylotu',
5553
5578
  PRICE: 'Cena',
5554
- TRAVEL_GROUP: 'Grupa podróżnych'
5579
+ TRAVEL_GROUP: 'Grupa podróżnych',
5580
+ EXCURSION: 'Wycieczka'
5555
5581
  };
5556
5582
  var plJson = {
5557
5583
  STEPS: STEPS$3,
@@ -5907,7 +5933,8 @@ var QSM$3 = {
5907
5933
  RETURN_DATE: 'Data de regresso',
5908
5934
  CONFIRM: 'Confirmar',
5909
5935
  TRAVELERS: 'Viajantes',
5910
- GROUP_TOUR: 'Tour em grupo'
5936
+ GROUP_TOUR: 'Tour em grupo',
5937
+ ALL_TRAVELERS: 'All travelers'
5911
5938
  };
5912
5939
  var SRP$2 = {
5913
5940
  SHOW_MORE: 'Mostrar mais',
@@ -5958,7 +5985,8 @@ var SRP$2 = {
5958
5985
  DEPARTURE_AIRPORTS: 'Aeroportos de partida',
5959
5986
  ARRIVAL_AIRPORTS: 'Aeroportos de chegada',
5960
5987
  PRICE: 'Preço',
5961
- TRAVEL_GROUP: 'Grupo de viajantes'
5988
+ TRAVEL_GROUP: 'Grupo de viajantes',
5989
+ EXCURSION: 'Excursão'
5962
5990
  };
5963
5991
  var ptJson = {
5964
5992
  STEPS: STEPS$2,
@@ -6314,7 +6342,8 @@ var QSM$2 = {
6314
6342
  RETURN_DATE: 'Hemresedatum',
6315
6343
  CONFIRM: 'Bekräfta',
6316
6344
  TRAVELERS: 'Resenärer',
6317
- GROUP_TOUR: 'Gruppresa'
6345
+ GROUP_TOUR: 'Gruppresa',
6346
+ ALL_TRAVELERS: 'All travelers'
6318
6347
  };
6319
6348
  var SRP$1 = {
6320
6349
  SHOW_MORE: 'Visa mer',
@@ -6365,7 +6394,8 @@ var SRP$1 = {
6365
6394
  DEPARTURE_AIRPORTS: 'Avgångsflygplatser',
6366
6395
  ARRIVAL_AIRPORTS: 'Ankomstflygplatser',
6367
6396
  PRICE: 'Pris',
6368
- TRAVEL_GROUP: 'Resesällskap'
6397
+ TRAVEL_GROUP: 'Resesällskap',
6398
+ EXCURSION: 'Utflykt'
6369
6399
  };
6370
6400
  var svJson = {
6371
6401
  STEPS: STEPS$1,
@@ -6719,7 +6749,8 @@ var QSM$1 = {
6719
6749
  RETURN_DATE: '帰着日',
6720
6750
  CONFIRM: '確認',
6721
6751
  TRAVELERS: '旅行者',
6722
- GROUP_TOUR: 'グループツアー'
6752
+ GROUP_TOUR: 'グループツアー',
6753
+ ALL_TRAVELERS: 'すべての旅行者'
6723
6754
  };
6724
6755
  var SRP = {
6725
6756
  SHOW_MORE: 'もっと見る',
@@ -6770,7 +6801,8 @@ var SRP = {
6770
6801
  DEPARTURE_AIRPORTS: '出発空港',
6771
6802
  ARRIVAL_AIRPORTS: '到着空港',
6772
6803
  PRICE: '価格',
6773
- TRAVEL_GROUP: '旅行グループ'
6804
+ TRAVEL_GROUP: '旅行グループ',
6805
+ EXCURSION: 'エクスカーション'
6774
6806
  };
6775
6807
  var jaJson = {
6776
6808
  STEPS: STEPS,
@@ -6801,7 +6833,7 @@ var DepartureRange;
6801
6833
  DepartureRange[(DepartureRange['Night'] = 3)] = 'Night';
6802
6834
  })(DepartureRange || (DepartureRange = {}));
6803
6835
 
6804
- var formatPrice$2 = function (price, currencyCode, locale) {
6836
+ var formatPrice$3 = function (price, currencyCode, locale) {
6805
6837
  if (locale === void 0) {
6806
6838
  locale = 'nl-BE';
6807
6839
  }
@@ -6908,7 +6940,7 @@ function getLocale(code) {
6908
6940
  }
6909
6941
  }
6910
6942
  var getPriceDifferenceText = function (price, currencyCode) {
6911
- return price > 0 ? '+ '.concat(formatPrice$2(Math.abs(price), currencyCode)) : '- '.concat(formatPrice$2(Math.abs(price), currencyCode));
6943
+ return price > 0 ? '+ '.concat(formatPrice$3(Math.abs(price), currencyCode)) : '- '.concat(formatPrice$3(Math.abs(price), currencyCode));
6912
6944
  };
6913
6945
  function format(text, args) {
6914
6946
  return text.replace(/{([0-9]+)}/g, function (match, index) {
@@ -7008,6 +7040,16 @@ var findSortByType = function (sortByTypes, sortKey, direction) {
7008
7040
  }) || sortByTypes[0]
7009
7041
  );
7010
7042
  };
7043
+ var getDatesBetween = function (fromDate, toDate) {
7044
+ var dates = [];
7045
+ var current = new Date(fromDate);
7046
+ var end = new Date(toDate);
7047
+ while (current < end) {
7048
+ dates.push(new Date(current));
7049
+ current.setUTCDate(current.getUTCDate() + 1);
7050
+ }
7051
+ return dates;
7052
+ };
7011
7053
 
7012
7054
  var getDateFromParams = function (params, name) {
7013
7055
  var dateString = params.get(name);
@@ -13481,6 +13523,7 @@ PERFORMANCE OF THIS SOFTWARE.
13481
13523
  var ENDPOINT = '/api/web/packaging';
13482
13524
  var ENDPOINT_START_TRANSACTION = ENDPOINT + '/start';
13483
13525
  var ENDPOINT_ACCOMMODATIONS = ENDPOINT + '/accommodations';
13526
+ var ENDPOINT_EXCURSIONS = ENDPOINT + '/excursions';
13484
13527
  var ENDPOINT_FLIGHTS = ENDPOINT + '/flights';
13485
13528
  var ENDPOINT_PRICE_DETAILS = ENDPOINT + '/price-details';
13486
13529
  var ENDPOINT_ITINERARY = ENDPOINT + '/itinerary';
@@ -13504,6 +13547,12 @@ PERFORMANCE OF THIS SOFTWARE.
13504
13547
  var body = JSON.stringify(request);
13505
13548
  return post(url, apiKey, body, config.token, signal, true);
13506
13549
  };
13550
+ var searchPackagingExcursions = function (config, request, signal) {
13551
+ var url = '' + config.host + ENDPOINT_EXCURSIONS;
13552
+ var apiKey = config.apiKey;
13553
+ var body = JSON.stringify(request);
13554
+ return post(url, apiKey, body, config.token, signal, true);
13555
+ };
13507
13556
  var getEntry = function (config, magicLinkCode, signal) {
13508
13557
  var apiKey = config.apiKey;
13509
13558
  var url = '' + config.host + ENDPOINT_ENTRY(magicLinkCode);
@@ -13595,6 +13644,7 @@ PERFORMANCE OF THIS SOFTWARE.
13595
13644
  exports.searchLocations = searchLocations;
13596
13645
  exports.searchOords = searchOords;
13597
13646
  exports.searchPackagingAccommodations = searchPackagingAccommodations;
13647
+ exports.searchPackagingExcursions = searchPackagingExcursions;
13598
13648
  exports.searchPackagingFlights = searchPackagingFlights;
13599
13649
  exports.searchRegions = searchRegions;
13600
13650
  exports.searchWithErrorMapping = searchWithErrorMapping;
@@ -13671,16 +13721,16 @@ var formatPriceByMode = function (price, priceMode, personCount, duration, perPe
13671
13721
  if (!price) return '';
13672
13722
  switch (priceMode) {
13673
13723
  case 0:
13674
- return ''.concat(formatPrice$2(price, currencyCode));
13724
+ return ''.concat(formatPrice$3(price, currencyCode));
13675
13725
  case 1:
13676
13726
  var perPersonPrice = price / personCount;
13677
- return ''.concat(formatPrice$2(perPersonPrice, currencyCode), ' / ').concat(perPersonLabel);
13727
+ return ''.concat(formatPrice$3(perPersonPrice, currencyCode), ' / ').concat(perPersonLabel);
13678
13728
  case 2:
13679
13729
  var perNightPrice = price / duration;
13680
- return ''.concat(formatPrice$2(perNightPrice, currencyCode), ' / ').concat(perNightLabel);
13730
+ return ''.concat(formatPrice$3(perNightPrice, currencyCode), ' / ').concat(perNightLabel);
13681
13731
  case 3:
13682
13732
  var perPersonPerNightPrice = price / duration;
13683
- return ''.concat(formatPrice$2(perPersonPerNightPrice, currencyCode), ' / ').concat(perPersonPerNightLabel);
13733
+ return ''.concat(formatPrice$3(perPersonPerNightPrice, currencyCode), ' / ').concat(perPersonPerNightLabel);
13684
13734
  }
13685
13735
  };
13686
13736
 
@@ -22105,7 +22155,7 @@ var NoneOption = function (_a) {
22105
22155
  return x.requirementType === 2;
22106
22156
  });
22107
22157
  var noneSelected = !selectedOption;
22108
- var priceDifferencetext = selectedOption ? '- '.concat(formatPrice$2(Math.abs(selectedOption.line.price), currencyCode)) : '';
22158
+ var priceDifferencetext = selectedOption ? '- '.concat(formatPrice$3(Math.abs(selectedOption.line.price), currencyCode)) : '';
22109
22159
  return React__default.createElement(
22110
22160
  React__default.Fragment,
22111
22161
  null,
@@ -23378,7 +23428,7 @@ var OptionRoom = function (_a) {
23378
23428
  e.preventDefault();
23379
23429
  };
23380
23430
  var getPriceDifferenceText = function (price) {
23381
- return price > 0 ? '+ '.concat(formatPrice$2(Math.abs(price), currencyCode)) : '- '.concat(formatPrice$2(Math.abs(price), currencyCode));
23431
+ return price > 0 ? '+ '.concat(formatPrice$3(Math.abs(price), currencyCode)) : '- '.concat(formatPrice$3(Math.abs(price), currencyCode));
23382
23432
  };
23383
23433
  var getAccommodationPriceDifference = function (accommodation) {
23384
23434
  var _a;
@@ -24903,7 +24953,7 @@ var Sidebar = function (_a) {
24903
24953
  { className: 'pricing-summary__property' },
24904
24954
  React__default.createElement('h6', { className: 'pricing-summary__title' }, translations.SIDEBAR.BASE_PRICE)
24905
24955
  ),
24906
- React__default.createElement('div', { className: 'pricing-summary__value' }, formatPrice$2(basePrice, currencyCode))
24956
+ React__default.createElement('div', { className: 'pricing-summary__value' }, formatPrice$3(basePrice, currencyCode))
24907
24957
  ),
24908
24958
  basePricePerPaxType &&
24909
24959
  basePricePerPaxType.map(function (ppt, index) {
@@ -24920,7 +24970,7 @@ var Sidebar = function (_a) {
24920
24970
  ' ',
24921
24971
  getPaxTypeTranslation(translations, ppt.paxType, ppt.numberOfPax)
24922
24972
  ),
24923
- React__default.createElement('div', { className: 'pricing-summary__value' }, formatPrice$2(ppt.pricePerPaxType, currencyCode))
24973
+ React__default.createElement('div', { className: 'pricing-summary__value' }, formatPrice$3(ppt.pricePerPaxType, currencyCode))
24924
24974
  ),
24925
24975
  ppt.details.map(function (detail, dIndex) {
24926
24976
  return React__default.createElement(
@@ -24933,7 +24983,7 @@ var Sidebar = function (_a) {
24933
24983
  React__default.createElement(
24934
24984
  'div',
24935
24985
  { className: 'pricing-summary__value' },
24936
- formatPrice$2(detail.price / detail.numberOfPax, currencyCode)
24986
+ formatPrice$3(detail.price / detail.numberOfPax, currencyCode)
24937
24987
  )
24938
24988
  );
24939
24989
  })
@@ -24960,7 +25010,7 @@ var Sidebar = function (_a) {
24960
25010
  React__default.createElement(
24961
25011
  'div',
24962
25012
  { className: 'pricing-summary__value' },
24963
- formatPrice$2(priceDetail.price * priceDetail.amount, currencyCode)
25013
+ formatPrice$3(priceDetail.price * priceDetail.amount, currencyCode)
24964
25014
  )
24965
25015
  ),
24966
25016
  React__default.createElement(
@@ -24995,7 +25045,7 @@ var Sidebar = function (_a) {
24995
25045
  React__default.createElement(
24996
25046
  'div',
24997
25047
  { className: 'pricing-summary__value' },
24998
- formatPrice$2(priceDetail.price * priceDetail.amount, currencyCode)
25048
+ formatPrice$3(priceDetail.price * priceDetail.amount, currencyCode)
24999
25049
  )
25000
25050
  ),
25001
25051
  React__default.createElement(
@@ -25025,7 +25075,7 @@ var Sidebar = function (_a) {
25025
25075
  React__default.createElement(
25026
25076
  'div',
25027
25077
  { className: 'pricing-summary__value' },
25028
- formatPrice$2(ppt.pricePerPaxType, currencyCode)
25078
+ formatPrice$3(ppt.pricePerPaxType, currencyCode)
25029
25079
  )
25030
25080
  ),
25031
25081
  ppt.details.map(function (detail, dIndex) {
@@ -25045,7 +25095,7 @@ var Sidebar = function (_a) {
25045
25095
  React__default.createElement(
25046
25096
  'div',
25047
25097
  { className: 'pricing-summary__value' },
25048
- formatPrice$2(detail.price / detail.numberOfPax, currencyCode)
25098
+ formatPrice$3(detail.price / detail.numberOfPax, currencyCode)
25049
25099
  )
25050
25100
  );
25051
25101
  })
@@ -25089,7 +25139,7 @@ var Sidebar = function (_a) {
25089
25139
  React__default.createElement(
25090
25140
  'div',
25091
25141
  { className: 'pricing__price' },
25092
- formatPrice$2(commission !== null && commission !== void 0 ? commission : 0, currencyCode)
25142
+ formatPrice$3(commission !== null && commission !== void 0 ? commission : 0, currencyCode)
25093
25143
  )
25094
25144
  )
25095
25145
  )
@@ -25110,7 +25160,7 @@ var Sidebar = function (_a) {
25110
25160
  React__default.createElement(
25111
25161
  'div',
25112
25162
  { className: 'pricing' },
25113
- React__default.createElement('div', { className: 'pricing__price' }, formatPrice$2(totalPrice, currencyCode))
25163
+ React__default.createElement('div', { className: 'pricing__price' }, formatPrice$3(totalPrice, currencyCode))
25114
25164
  )
25115
25165
  )
25116
25166
  ),
@@ -25128,7 +25178,7 @@ var Sidebar = function (_a) {
25128
25178
  React__default.createElement(
25129
25179
  'div',
25130
25180
  { className: 'pricing' },
25131
- React__default.createElement('div', { className: 'pricing__price' }, formatPrice$2(deposit, currencyCode))
25181
+ React__default.createElement('div', { className: 'pricing__price' }, formatPrice$3(deposit, currencyCode))
25132
25182
  )
25133
25183
  )
25134
25184
  ),
@@ -25144,7 +25194,7 @@ var Sidebar = function (_a) {
25144
25194
  translations.SIDEBAR.DEPOSIT_TEXT1,
25145
25195
  React__default.createElement('strong', null, translations.SIDEBAR.DEPOSIT_TEXT2),
25146
25196
  translations.SIDEBAR.DEPOSIT_TEXT3,
25147
- formatPrice$2(remainingAmount, currencyCode),
25197
+ formatPrice$3(remainingAmount, currencyCode),
25148
25198
  translations.SIDEBAR.DEPOSIT_TEXT4,
25149
25199
  React__default.createElement('strong', null, translations.SIDEBAR.DEPOSIT_TEXT5),
25150
25200
  translations.SIDEBAR.DEPOSIT_TEXT6
@@ -25173,7 +25223,7 @@ var Sidebar = function (_a) {
25173
25223
  React__default.createElement(
25174
25224
  'div',
25175
25225
  { className: 'pricing__price' },
25176
- formatPrice$2(commission !== null && commission !== void 0 ? commission : 0, currencyCode)
25226
+ formatPrice$3(commission !== null && commission !== void 0 ? commission : 0, currencyCode)
25177
25227
  )
25178
25228
  )
25179
25229
  )
@@ -25194,7 +25244,7 @@ var Sidebar = function (_a) {
25194
25244
  React__default.createElement(
25195
25245
  'div',
25196
25246
  { className: 'pricing' },
25197
- React__default.createElement('div', { className: 'pricing__price' }, formatPrice$2(totalPrice, currencyCode))
25247
+ React__default.createElement('div', { className: 'pricing__price' }, formatPrice$3(totalPrice, currencyCode))
25198
25248
  )
25199
25249
  )
25200
25250
  )
@@ -33742,7 +33792,10 @@ var initialState$1 = {
33742
33792
  flyInIsOpen: false,
33743
33793
  flyInType: null,
33744
33794
  editablePackagingEntry: null,
33745
- itinerary: null
33795
+ itinerary: null,
33796
+ excursionSearchParams: null,
33797
+ selectedExcursionSearchResult: null,
33798
+ confirmedExcursionsByDay: {}
33746
33799
  };
33747
33800
  var searchResultsSlice = createSlice({
33748
33801
  name: 'searchResults',
@@ -33888,6 +33941,41 @@ var searchResultsSlice = createSlice({
33888
33941
  resetFlightSelection: function (state) {
33889
33942
  state.selectedOutwardKey = null;
33890
33943
  state.selectedReturnKey = null;
33944
+ },
33945
+ setExcursionSearchParams: function (state, action) {
33946
+ state.excursionSearchParams = action.payload;
33947
+ },
33948
+ setSelectedExcursionSearchResult: function (state, action) {
33949
+ state.selectedExcursionSearchResult = action.payload;
33950
+ },
33951
+ confirmExcursionForDay: function (state, action) {
33952
+ var _a;
33953
+ var _b = action.payload,
33954
+ dayKey = _b.dayKey,
33955
+ excursion = _b.excursion;
33956
+ var existingForDay = (_a = state.confirmedExcursionsByDay[dayKey]) !== null && _a !== void 0 ? _a : [];
33957
+ var existingIndex = existingForDay.findIndex(function (item) {
33958
+ return item.code === excursion.code;
33959
+ });
33960
+ if (existingIndex >= 0) {
33961
+ // replace existing confirmed version of same excursion
33962
+ existingForDay[existingIndex] = excursion;
33963
+ } else {
33964
+ existingForDay.push(excursion);
33965
+ }
33966
+ state.confirmedExcursionsByDay[dayKey] = existingForDay;
33967
+ },
33968
+ removeConfirmedExcursionForDay: function (state, action) {
33969
+ var _a;
33970
+ var _b = action.payload,
33971
+ dayKey = _b.dayKey,
33972
+ excursionCode = _b.excursionCode;
33973
+ state.confirmedExcursionsByDay[dayKey] = ((_a = state.confirmedExcursionsByDay[dayKey]) !== null && _a !== void 0 ? _a : []).filter(function (item) {
33974
+ return item.code !== excursionCode;
33975
+ });
33976
+ },
33977
+ clearConfirmedExcursionsForDay: function (state, action) {
33978
+ delete state.confirmedExcursionsByDay[action.payload.dayKey];
33891
33979
  }
33892
33980
  }
33893
33981
  });
@@ -33927,6 +34015,11 @@ var setFlyInIsOpen = _a.setFlyInIsOpen,
33927
34015
  setSelectedOutwardKey = _a.setSelectedOutwardKey,
33928
34016
  setSelectedReturnKey = _a.setSelectedReturnKey;
33929
34017
  _a.resetFlightSelection;
34018
+ var setExcursionSearchParams = _a.setExcursionSearchParams,
34019
+ setSelectedExcursionSearchResult = _a.setSelectedExcursionSearchResult,
34020
+ confirmExcursionForDay = _a.confirmExcursionForDay,
34021
+ removeConfirmedExcursionForDay = _a.removeConfirmedExcursionForDay;
34022
+ _a.clearConfirmedExcursionsForDay;
33930
34023
  var searchResultsReducer = searchResultsSlice.reducer;
33931
34024
 
33932
34025
  var ItemPicker = function (_a) {
@@ -34457,8 +34550,7 @@ var Icon$1 = function (_a) {
34457
34550
  }),
34458
34551
  title && React__default.createElement('title', null, title),
34459
34552
  React__default.createElement('path', {
34460
- 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',
34461
- fill: 'currentColor'
34553
+ 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'
34462
34554
  })
34463
34555
  );
34464
34556
  case 'ui-backforward':
@@ -34955,6 +35047,7 @@ var Icon$1 = function (_a) {
34955
35047
 
34956
35048
  var GROUP_TOUR_SERVICE_TYPE = 1;
34957
35049
  var ACCOMMODATION_SERVICE_TYPE = 3;
35050
+ var EXCURSION_SERVICE_TYPE = 4;
34958
35051
  var FLIGHT_SERVICE_TYPE = 7;
34959
35052
  var toDateOnlyString = function (value) {
34960
35053
  var date = value instanceof Date ? value : new Date(value);
@@ -35345,12 +35438,12 @@ var Itinerary = function (_a) {
35345
35438
  React__default.createElement(
35346
35439
  'div',
35347
35440
  { className: 'search__filter__prices__wrapper' },
35348
- React__default.createElement('h3', { className: 'search__filter__prices--amount' }, formatPrice$2(pricePerPerson, 'EUR')),
35441
+ React__default.createElement('h3', { className: 'search__filter__prices--amount' }, formatPrice$3(pricePerPerson, 'EUR')),
35349
35442
  React__default.createElement('p', null, translations.SRP.PACKAGE_PRICE_PER_PERSON),
35350
35443
  React__default.createElement(
35351
35444
  'p',
35352
35445
  null,
35353
- React__default.createElement('strong', null, '(', formatPrice$2(totalPrice, 'EUR'), ' ', translations.SRP.TOTAL, ')')
35446
+ React__default.createElement('strong', null, '(', formatPrice$3(totalPrice, 'EUR'), ' ', translations.SRP.TOTAL, ')')
35354
35447
  )
35355
35448
  ),
35356
35449
  React__default.createElement('button', { className: 'cta' }, translations.QSM.CONFIRM)
@@ -38392,7 +38485,8 @@ var FlightsFlyIn = function (_a) {
38392
38485
  React__default.createElement(
38393
38486
  'div',
38394
38487
  { className: 'flyin__footer__price' },
38395
- 'Total price: \u20AC',
38488
+ translations.SHARED.TOTAL_PRICE,
38489
+ ': \u20AC',
38396
38490
  (_o = selectedCombinationFlight === null || selectedCombinationFlight === void 0 ? void 0 : selectedCombinationFlight.price) === null || _o === void 0
38397
38491
  ? void 0
38398
38492
  : _o.toFixed(2)
@@ -38406,7 +38500,7 @@ var FlightsFlyIn = function (_a) {
38406
38500
  );
38407
38501
  };
38408
38502
 
38409
- var formatPrice$1 = function (price, currencyCode) {
38503
+ var formatPrice$2 = function (price, currencyCode) {
38410
38504
  if (typeof price !== 'number') return '';
38411
38505
  var safeCurrency = currencyCode !== null && currencyCode !== void 0 ? currencyCode : 'EUR';
38412
38506
  return new Intl.NumberFormat('nl-BE', {
@@ -38538,7 +38632,7 @@ var AccommodationFlyIn = function (_a) {
38538
38632
  var totalPrice = selectedOptions.reduce(function (total, option) {
38539
38633
  return total + (option.price || 0);
38540
38634
  }, 0);
38541
- return formatPrice$1(totalPrice, selectedPackagingAccoSearchDetails.currencyCode);
38635
+ return formatPrice$2(totalPrice, selectedPackagingAccoSearchDetails.currencyCode);
38542
38636
  };
38543
38637
  var getPriceDifference = function (currentSelectedPrice, roomIndex, accommodationCode, regimeId) {
38544
38638
  var targetPrice = 0;
@@ -38563,7 +38657,7 @@ var AccommodationFlyIn = function (_a) {
38563
38657
  if (difference === 0) {
38564
38658
  return null;
38565
38659
  }
38566
- var formattedAbsoluteValue = formatPrice$1(Math.abs(difference), currencyCode);
38660
+ var formattedAbsoluteValue = formatPrice$2(Math.abs(difference), currencyCode);
38567
38661
  return ''.concat(difference > 0 ? '+' : '-', ' ').concat(formattedAbsoluteValue);
38568
38662
  };
38569
38663
  var getPriceDifferenceClassName = function (difference) {
@@ -38681,7 +38775,7 @@ var AccommodationFlyIn = function (_a) {
38681
38775
  React__default.createElement(
38682
38776
  'div',
38683
38777
  { className: 'flyin__footer' },
38684
- React__default.createElement('div', { className: 'flyin__footer__price' }, 'Total price: ', calculateTotalPrice()),
38778
+ React__default.createElement('div', { className: 'flyin__footer__price' }, translations.SHARED.TOTAL_PRICE, ': ', calculateTotalPrice()),
38685
38779
  React__default.createElement(
38686
38780
  'div',
38687
38781
  { className: 'flyin__button-wrapper' },
@@ -38840,7 +38934,7 @@ var AccommodationFlyIn = function (_a) {
38840
38934
  // )} */}
38841
38935
  // </div>
38842
38936
  // <div className="flyin__footer">
38843
- // <div className="flyin__footer__price">Total price: €</div>
38937
+ // <div className="flyin__footer__price">{translations.SHARED.TOTAL_PRICE}: €</div>
38844
38938
  // <div className="flyin__button-wrapper">
38845
38939
  // <button className="cta cta--select" onClick={handleConfirm}>
38846
38940
  // Toevoegen
@@ -38850,7 +38944,7 @@ var AccommodationFlyIn = function (_a) {
38850
38944
  // </>
38851
38945
  };
38852
38946
 
38853
- var formatPrice = function (price, currencyCode) {
38947
+ var formatPrice$1 = function (price, currencyCode) {
38854
38948
  if (currencyCode === void 0) {
38855
38949
  currencyCode = 'EUR';
38856
38950
  }
@@ -39033,7 +39127,7 @@ var GroupTourFlyIn = function (_a) {
39033
39127
  if (difference === 0) {
39034
39128
  return null;
39035
39129
  }
39036
- var formattedAbsoluteValue = formatPrice(Math.abs(difference), currencyCode);
39130
+ var formattedAbsoluteValue = formatPrice$1(Math.abs(difference), currencyCode);
39037
39131
  return ''.concat(difference > 0 ? '+' : '-', ' ').concat(formattedAbsoluteValue);
39038
39132
  };
39039
39133
  var getPriceDifferenceClassName = function (difference) {
@@ -39162,8 +39256,9 @@ var GroupTourFlyIn = function (_a) {
39162
39256
  React__default.createElement(
39163
39257
  'div',
39164
39258
  { className: 'flyin__footer__price' },
39165
- 'Total price: ',
39166
- formatPrice(adjustedTotalPrice, bookingPackageDetails.currencyCode)
39259
+ translations.SHARED.TOTAL_PRICE,
39260
+ ': ',
39261
+ formatPrice$1(adjustedTotalPrice, bookingPackageDetails.currencyCode)
39167
39262
  ),
39168
39263
  React__default.createElement(
39169
39264
  'div',
@@ -43480,7 +43575,7 @@ var getBaseHotelResult = function (searchResult, cmsItem, languageCode, translat
43480
43575
  searchResult.countryName,
43481
43576
  (_h = cmsItem === null || cmsItem === void 0 ? void 0 : cmsItem.parentItem) === null || _h === void 0 ? void 0 : _h.name
43482
43577
  ),
43483
- price: formatPrice$2(searchResult.price, searchResult.currencyCode, languageCode),
43578
+ price: formatPrice$3(searchResult.price, searchResult.currencyCode, languageCode),
43484
43579
  ctaText: translations === null || translations === void 0 ? void 0 : translations.SRP.VIEW_DETAILS
43485
43580
  };
43486
43581
  };
@@ -43710,6 +43805,24 @@ var HotelAccommodationResults = function (_a) {
43710
43805
  var selectSearchResultsState = function (state) {
43711
43806
  return state.searchResults;
43712
43807
  };
43808
+ var selectPackagingAccoResults = createSelector([selectSearchResultsState], function (state) {
43809
+ return state.packagingAccoResults;
43810
+ });
43811
+ var selectSelectedPackagingAccoResultCode = createSelector([selectSearchResultsState], function (state) {
43812
+ return state.selectedPackagingAccoResultCode;
43813
+ });
43814
+ var selectSelectedPackagingAccoResult = createSelector(
43815
+ [selectPackagingAccoResults, selectSelectedPackagingAccoResultCode],
43816
+ function (packagingAccoResults, selectedPackagingAccoResultCode) {
43817
+ var _a;
43818
+ if (!selectedPackagingAccoResultCode) return null;
43819
+ return (_a = packagingAccoResults.find(function (accoResult) {
43820
+ return accoResult.code === selectedPackagingAccoResultCode;
43821
+ })) !== null && _a !== void 0
43822
+ ? _a
43823
+ : null;
43824
+ }
43825
+ );
43713
43826
  var selectPackagingFlightResults = createSelector([selectSearchResultsState], function (state) {
43714
43827
  return state.packagingFlightResults;
43715
43828
  });
@@ -43830,7 +43943,7 @@ var IndependentFlightOption = function (_a) {
43830
43943
  { className: 'price' },
43831
43944
  translations.QSM.ROUNDTRIP + ' ' + translations.SRP.PRICE,
43832
43945
  '\u00A0',
43833
- formatPrice$2(
43946
+ formatPrice$3(
43834
43947
  price,
43835
43948
  'EUR',
43836
43949
  (_c = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _c !== void 0 ? _c : 'en-GB'
@@ -43843,7 +43956,7 @@ var IndependentFlightOption = function (_a) {
43843
43956
  { className: 'price' },
43844
43957
  priceDifference > 0 ? '+' : '-',
43845
43958
  '\u00A0',
43846
- formatPrice$2(
43959
+ formatPrice$3(
43847
43960
  Math.abs(priceDifference),
43848
43961
  'EUR',
43849
43962
  (_d = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _d !== void 0 ? _d : 'en-GB'
@@ -44538,6 +44651,567 @@ var PackageingFlightsFlyIn = function (_a) {
44538
44651
  );
44539
44652
  };
44540
44653
 
44654
+ var ExcursionResults = function (_a) {
44655
+ var _b;
44656
+ _a.isFlyIn;
44657
+ var activeSearchSeed = _a.activeSearchSeed;
44658
+ var context = useContext(SearchResultsConfigurationContext);
44659
+ var dispatch = useDispatch();
44660
+ var _c = useState(false),
44661
+ isLoading = _c[0],
44662
+ setIsLoading = _c[1];
44663
+ var _d = useState(null),
44664
+ excursions = _d[0],
44665
+ setExcursions = _d[1];
44666
+ var _e = useSelector(function (state) {
44667
+ return state.searchResults;
44668
+ }),
44669
+ flyInIsOpen = _e.flyInIsOpen,
44670
+ flyInType = _e.flyInType,
44671
+ excursionSearchParams = _e.excursionSearchParams,
44672
+ transactionId = _e.transactionId;
44673
+ useEffect(
44674
+ function () {
44675
+ if (!context || !activeSearchSeed || !excursionSearchParams) return;
44676
+ (function () {
44677
+ return __awaiter(void 0, void 0, void 0, function () {
44678
+ var config, destination, allPax, searchRequest, packageExcursionSearchResults, err_1;
44679
+ var _a, _b, _c, _d, _e;
44680
+ return __generator(this, function (_f) {
44681
+ switch (_f.label) {
44682
+ case 0:
44683
+ _f.trys.push([0, 2, 3, 4]);
44684
+ setIsLoading(true);
44685
+ console.log('Excursion search params changed, fetching excursions...', excursionSearchParams);
44686
+ config = {
44687
+ host: context.tideConnection.host,
44688
+ apiKey: context.tideConnection.apiKey
44689
+ };
44690
+ destination = excursionSearchParams.locationId
44691
+ ? { id: Number(excursionSearchParams.locationId), type: 'location' }
44692
+ : excursionSearchParams.oordId
44693
+ ? { id: Number(excursionSearchParams.oordId), type: 'oord' }
44694
+ : excursionSearchParams.regionId
44695
+ ? { id: Number(excursionSearchParams.regionId), type: 'region' }
44696
+ : excursionSearchParams.countryId
44697
+ ? { id: Number(excursionSearchParams.countryId), type: 'country' }
44698
+ : { id: 0, type: null };
44699
+ allPax = activeSearchSeed.rooms.flatMap(function (room) {
44700
+ return room.pax;
44701
+ });
44702
+ searchRequest = {
44703
+ transactionId: transactionId !== null && transactionId !== void 0 ? transactionId : '',
44704
+ officeId: (_a = context.tideConnection.officeId) !== null && _a !== void 0 ? _a : 1,
44705
+ agentId: (_b = context.agentId) !== null && _b !== void 0 ? _b : null,
44706
+ portalId: (_c = context.portalId) !== null && _c !== void 0 ? _c : null,
44707
+ catalogueId: (_d = context.searchConfiguration.defaultCatalogueId) !== null && _d !== void 0 ? _d : 0,
44708
+ searchConfigurationId: context.searchConfiguration.id,
44709
+ language: (_e = context.languageCode) !== null && _e !== void 0 ? _e : 'en-GB',
44710
+ serviceType: EXCURSION_SERVICE_TYPE,
44711
+ fromDate: excursionSearchParams.fromDate,
44712
+ toDate: excursionSearchParams.toDate,
44713
+ destination: {
44714
+ id: destination.id,
44715
+ isCountry: destination.type === 'country',
44716
+ isRegion: destination.type === 'region',
44717
+ isOord: destination.type === 'oord',
44718
+ isLocation: destination.type === 'location',
44719
+ isAirport: false,
44720
+ code: ''
44721
+ },
44722
+ productCode: '',
44723
+ // rooms: activeSearchSeed.rooms.map((room) => ({
44724
+ // travellers: room.pax.map((pax) => ({
44725
+ // id: pax.id,
44726
+ // age: pax.age,
44727
+ // dateOfBirth: pax.dateOfBirth
44728
+ // }))
44729
+ // })),
44730
+ rooms: [
44731
+ {
44732
+ travellers: allPax.map(function (pax) {
44733
+ return {
44734
+ id: pax.id,
44735
+ age: pax.age,
44736
+ dateOfBirth: pax.dateOfBirth
44737
+ };
44738
+ })
44739
+ }
44740
+ ],
44741
+ tagIds: []
44742
+ };
44743
+ return [4 /*yield*/, build.searchPackagingExcursions(config, searchRequest)];
44744
+ case 1:
44745
+ packageExcursionSearchResults = _f.sent();
44746
+ console.log('Excursion search results', packageExcursionSearchResults);
44747
+ setExcursions(packageExcursionSearchResults);
44748
+ return [3 /*break*/, 4];
44749
+ case 2:
44750
+ err_1 = _f.sent();
44751
+ console.error('Excursion search failed', err_1);
44752
+ return [3 /*break*/, 4];
44753
+ case 3:
44754
+ setIsLoading(false);
44755
+ return [7 /*endfinally*/];
44756
+ case 4:
44757
+ return [2 /*return*/];
44758
+ }
44759
+ });
44760
+ });
44761
+ })();
44762
+ },
44763
+ [context, activeSearchSeed, excursionSearchParams, transactionId]
44764
+ );
44765
+ if (!context || !activeSearchSeed) {
44766
+ return null;
44767
+ }
44768
+ if (!flyInIsOpen || flyInType !== 'excursion-results') {
44769
+ return null;
44770
+ }
44771
+ var translations = getTranslations((_b = context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
44772
+ var handleChange = function (excursion) {
44773
+ console.log('Selected excursion', excursion);
44774
+ dispatch(setFlyInType('excursion-details'));
44775
+ dispatch(setSelectedExcursionSearchResult(excursion));
44776
+ };
44777
+ return isLoading
44778
+ ? React__default.createElement(Spinner, null)
44779
+ : React__default.createElement(
44780
+ 'div',
44781
+ { className: 'flyin__content flyin__content--columns' },
44782
+ React__default.createElement(
44783
+ 'div',
44784
+ { className: 'search__results__wrapper' },
44785
+ React__default.createElement(
44786
+ 'div',
44787
+ { className: 'search__result-row' },
44788
+ React__default.createElement(
44789
+ 'span',
44790
+ { className: 'search__result-row-text' },
44791
+ !isLoading &&
44792
+ React__default.createElement(
44793
+ React__default.Fragment,
44794
+ null,
44795
+ (excursions === null || excursions === void 0 ? void 0 : excursions.length) && excursions.length,
44796
+ '\u00A0',
44797
+ translations.SRP.TOTAL_RESULTS_LABEL
44798
+ )
44799
+ )
44800
+ ),
44801
+ React__default.createElement(
44802
+ 'div',
44803
+ { className: 'search__results__cards search__results__cards--compact' },
44804
+ excursions &&
44805
+ excursions.length > 0 &&
44806
+ excursions.map(function (excursion) {
44807
+ return React__default.createElement(
44808
+ 'div',
44809
+ {
44810
+ key: excursion.code,
44811
+ className: 'search__result-card__wrapper search__result-card__wrapper--custom',
44812
+ onMouseEnter: function (e) {
44813
+ return (e.currentTarget.style.transform = 'scale(1.02)');
44814
+ },
44815
+ onMouseLeave: function (e) {
44816
+ return (e.currentTarget.style.transform = 'scale(1)');
44817
+ }
44818
+ },
44819
+ excursion.contents
44820
+ ? React__default.createElement('div', { dangerouslySetInnerHTML: { __html: he.decode(excursion.contents) } })
44821
+ : 'no contents',
44822
+ React__default.createElement(
44823
+ 'div',
44824
+ { className: 'search__result-card__footer' },
44825
+ React__default.createElement(
44826
+ 'button',
44827
+ {
44828
+ type: 'button',
44829
+ className: 'cta cta--select',
44830
+ onClick: function () {
44831
+ return handleChange(excursion);
44832
+ }
44833
+ },
44834
+ translations === null || translations === void 0 ? void 0 : translations.SHARED.SELECT
44835
+ )
44836
+ )
44837
+ );
44838
+ })
44839
+ )
44840
+ )
44841
+ );
44842
+ };
44843
+
44844
+ var formatPrice = function (price, currencyCode) {
44845
+ if (typeof price !== 'number') return '';
44846
+ return new Intl.NumberFormat('nl-BE', {
44847
+ style: 'currency',
44848
+ currency: currencyCode !== null && currencyCode !== void 0 ? currencyCode : 'EUR'
44849
+ }).format(price);
44850
+ };
44851
+ var getExcursionDayKey = function (date) {
44852
+ var parsed = typeof date === 'string' ? parseISO(date) : date;
44853
+ return format$1(parsed, 'yyyy-MM-dd');
44854
+ };
44855
+ var getOptionPaxIds = function (option) {
44856
+ return Array.isArray(option.paxIds)
44857
+ ? Array.from(new Set(option.paxIds)).sort(function (a, b) {
44858
+ return a - b;
44859
+ })
44860
+ : [];
44861
+ };
44862
+ var optionAppliesToPax = function (option, paxId) {
44863
+ return getOptionPaxIds(option).includes(paxId);
44864
+ };
44865
+ var optionAppliesToAllTravellers = function (option, travellerCount) {
44866
+ var paxIds = getOptionPaxIds(option);
44867
+ var expected = Array.from({ length: travellerCount }, function (_, i) {
44868
+ return i;
44869
+ });
44870
+ return (
44871
+ paxIds.length === expected.length &&
44872
+ paxIds.every(function (id, index) {
44873
+ return id === expected[index];
44874
+ })
44875
+ );
44876
+ };
44877
+ var groupOptionsByExcursion = function (options) {
44878
+ var groupedMap = new Map();
44879
+ options.forEach(function (option) {
44880
+ var key = option.accommodationCode;
44881
+ if (!groupedMap.has(key)) {
44882
+ groupedMap.set(key, {
44883
+ accommodationCode: option.accommodationCode,
44884
+ accommodationName: option.accommodationName,
44885
+ options: []
44886
+ });
44887
+ }
44888
+ groupedMap.get(key).options.push(option);
44889
+ });
44890
+ return Array.from(groupedMap.values());
44891
+ };
44892
+ var ExcursionDetails = function () {
44893
+ var _a;
44894
+ var context = useContext(SearchResultsConfigurationContext);
44895
+ var dispatch = useDispatch();
44896
+ var _b = useSelector(function (state) {
44897
+ return state.searchResults;
44898
+ }),
44899
+ selectedExcursionSearchResult = _b.selectedExcursionSearchResult,
44900
+ editablePackagingEntry = _b.editablePackagingEntry,
44901
+ excursionSearchParams = _b.excursionSearchParams;
44902
+ if (
44903
+ !context ||
44904
+ !selectedExcursionSearchResult ||
44905
+ !editablePackagingEntry ||
44906
+ !(excursionSearchParams === null || excursionSearchParams === void 0 ? void 0 : excursionSearchParams.date)
44907
+ ) {
44908
+ return null;
44909
+ }
44910
+ var translations = getTranslations((_a = context.languageCode) !== null && _a !== void 0 ? _a : 'en-GB');
44911
+ var travellerCount = editablePackagingEntry.pax.length;
44912
+ var allOptions = useMemo(
44913
+ function () {
44914
+ return selectedExcursionSearchResult.rooms.flatMap(function (room) {
44915
+ var _a;
44916
+ return (_a = room.options) !== null && _a !== void 0 ? _a : [];
44917
+ });
44918
+ },
44919
+ [selectedExcursionSearchResult]
44920
+ );
44921
+ var sharedOptions = useMemo(
44922
+ function () {
44923
+ return allOptions.filter(function (option) {
44924
+ return optionAppliesToAllTravellers(option, travellerCount);
44925
+ });
44926
+ },
44927
+ [allOptions, travellerCount]
44928
+ );
44929
+ var sharedExcursions = useMemo(
44930
+ function () {
44931
+ return groupOptionsByExcursion(sharedOptions);
44932
+ },
44933
+ [sharedOptions]
44934
+ );
44935
+ var paxGroups = useMemo(
44936
+ function () {
44937
+ return editablePackagingEntry.pax.map(function (pax) {
44938
+ var paxOptions = allOptions.filter(function (option) {
44939
+ return optionAppliesToPax(option, pax.id) && !optionAppliesToAllTravellers(option, travellerCount);
44940
+ });
44941
+ return {
44942
+ pax: pax,
44943
+ paxId: pax.id,
44944
+ excursions: groupOptionsByExcursion(paxOptions)
44945
+ };
44946
+ });
44947
+ },
44948
+ [editablePackagingEntry.pax, allOptions, travellerCount]
44949
+ );
44950
+ var getSelectedSharedOption = function () {
44951
+ return sharedOptions.find(function (option) {
44952
+ return option.isSelected;
44953
+ });
44954
+ };
44955
+ var getSelectedSharedOptionForExcursion = function (accommodationCode) {
44956
+ return sharedOptions.find(function (option) {
44957
+ return option.accommodationCode === accommodationCode && option.isSelected;
44958
+ });
44959
+ };
44960
+ var getSelectedOptionForPax = function (paxId) {
44961
+ return allOptions.find(function (option) {
44962
+ return optionAppliesToPax(option, paxId) && !optionAppliesToAllTravellers(option, travellerCount) && option.isSelected;
44963
+ });
44964
+ };
44965
+ var getSelectedOptionForExcursion = function (paxId, accommodationCode) {
44966
+ return allOptions.find(function (option) {
44967
+ return (
44968
+ optionAppliesToPax(option, paxId) &&
44969
+ !optionAppliesToAllTravellers(option, travellerCount) &&
44970
+ option.accommodationCode === accommodationCode &&
44971
+ option.isSelected
44972
+ );
44973
+ });
44974
+ };
44975
+ var handlePick = function (selectedGuid, paxId) {
44976
+ var updatedExcursionSearchResult = __assign(__assign({}, selectedExcursionSearchResult), {
44977
+ rooms: selectedExcursionSearchResult.rooms.map(function (room) {
44978
+ return __assign(__assign({}, room), {
44979
+ options: room.options.map(function (option) {
44980
+ var isSharedOption = optionAppliesToAllTravellers(option, travellerCount);
44981
+ if (paxId === undefined) {
44982
+ if (!isSharedOption) {
44983
+ return option;
44984
+ }
44985
+ return __assign(__assign({}, option), { isSelected: option.guid === selectedGuid });
44986
+ }
44987
+ if (isSharedOption || !optionAppliesToPax(option, paxId)) {
44988
+ return option;
44989
+ }
44990
+ return __assign(__assign({}, option), { isSelected: option.guid === selectedGuid });
44991
+ })
44992
+ });
44993
+ })
44994
+ });
44995
+ dispatch(setSelectedExcursionSearchResult(updatedExcursionSearchResult));
44996
+ };
44997
+ var calculateTotalPrice = function () {
44998
+ var selectedOptions = allOptions.filter(function (option) {
44999
+ return option.isSelected;
45000
+ });
45001
+ var totalPrice = selectedOptions.reduce(function (total, option) {
45002
+ return total + (option.price || 0);
45003
+ }, 0);
45004
+ return formatPrice(totalPrice, selectedExcursionSearchResult.currencyCode);
45005
+ };
45006
+ var getSharedPriceDifference = function (accommodationCode) {
45007
+ var currentSelectedShared = getSelectedSharedOption();
45008
+ var targetPrice = 0;
45009
+ var selectedOption = getSelectedSharedOptionForExcursion(accommodationCode);
45010
+ if (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.price) {
45011
+ targetPrice = selectedOption.price;
45012
+ } else {
45013
+ var firstOption = sharedOptions.find(function (option) {
45014
+ return option.accommodationCode === accommodationCode;
45015
+ });
45016
+ targetPrice = (firstOption === null || firstOption === void 0 ? void 0 : firstOption.price) || 0;
45017
+ }
45018
+ return targetPrice - ((currentSelectedShared === null || currentSelectedShared === void 0 ? void 0 : currentSelectedShared.price) || 0);
45019
+ };
45020
+ var getPriceDifference = function (currentSelectedPrice, paxId, accommodationCode) {
45021
+ var targetPrice = 0;
45022
+ var selectedOption = getSelectedOptionForExcursion(paxId, accommodationCode);
45023
+ if (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.price) {
45024
+ targetPrice = selectedOption.price;
45025
+ } else {
45026
+ var firstOption = allOptions.find(function (option) {
45027
+ return optionAppliesToPax(option, paxId) && !optionAppliesToAllTravellers(option, travellerCount) && option.accommodationCode === accommodationCode;
45028
+ });
45029
+ targetPrice = (firstOption === null || firstOption === void 0 ? void 0 : firstOption.price) || 0;
45030
+ }
45031
+ return targetPrice - (currentSelectedPrice || 0);
45032
+ };
45033
+ var formatPriceDifference = function (difference, currencyCode) {
45034
+ if (difference === 0) {
45035
+ return null;
45036
+ }
45037
+ var formattedAbsoluteValue = formatPrice(Math.abs(difference), currencyCode);
45038
+ return ''.concat(difference > 0 ? '+' : '-', ' ').concat(formattedAbsoluteValue);
45039
+ };
45040
+ var getPriceDifferenceClassName = function (difference) {
45041
+ if (difference < 0) {
45042
+ return 'flyin__acco__price flyin__acco__price--decrease';
45043
+ }
45044
+ if (difference > 0) {
45045
+ return 'flyin__acco__price flyin__acco__price--increase';
45046
+ }
45047
+ return 'flyin__acco__price';
45048
+ };
45049
+ var handleConfirm = function () {
45050
+ var dayKey = getExcursionDayKey(excursionSearchParams.date);
45051
+ dispatch(
45052
+ confirmExcursionForDay({
45053
+ dayKey: dayKey,
45054
+ excursion: selectedExcursionSearchResult
45055
+ })
45056
+ );
45057
+ dispatch(setFlyInIsOpen(false));
45058
+ };
45059
+ return React__default.createElement(
45060
+ React__default.Fragment,
45061
+ null,
45062
+ React__default.createElement(
45063
+ 'div',
45064
+ { className: 'flyin__content' },
45065
+ sharedExcursions.length > 0 &&
45066
+ React__default.createElement(
45067
+ 'div',
45068
+ { className: 'flyin__acco' },
45069
+ React__default.createElement('h3', { className: 'flyin__acco__room-title' }, translations.QSM.ALL_TRAVELERS),
45070
+ React__default.createElement(
45071
+ 'div',
45072
+ { className: 'flyin__acco__cards' },
45073
+ sharedExcursions.map(function (excursion) {
45074
+ var selectedOption = getSelectedSharedOptionForExcursion(excursion.accommodationCode);
45075
+ var priceDifference = getSharedPriceDifference(excursion.accommodationCode);
45076
+ return React__default.createElement(
45077
+ 'div',
45078
+ { className: 'flyin__acco__card', key: 'all-'.concat(excursion.accommodationCode) },
45079
+ React__default.createElement(
45080
+ 'div',
45081
+ { className: 'flyin__acco__content' },
45082
+ React__default.createElement('h4', { className: 'flyin__acco__title' }, excursion.accommodationName)
45083
+ ),
45084
+ React__default.createElement(
45085
+ 'div',
45086
+ { className: 'flyin__acco__footer' },
45087
+ React__default.createElement(
45088
+ 'div',
45089
+ { className: 'flyin__acco__footer__actions' },
45090
+ React__default.createElement(
45091
+ 'button',
45092
+ {
45093
+ className: selectedOption ? 'cta cta--select cta--selected' : 'cta cta--select',
45094
+ onClick: function () {
45095
+ var _a;
45096
+ return handlePick(
45097
+ selectedOption ? selectedOption.guid : (_a = first(excursion.options)) === null || _a === void 0 ? void 0 : _a.guid
45098
+ );
45099
+ }
45100
+ },
45101
+ selectedOption
45102
+ ? translations === null || translations === void 0
45103
+ ? void 0
45104
+ : translations.SHARED.SELECTED
45105
+ : translations === null || translations === void 0
45106
+ ? void 0
45107
+ : translations.SHARED.SELECT
45108
+ ),
45109
+ React__default.createElement(
45110
+ 'div',
45111
+ { className: 'flyin__acco__price__wrapper' },
45112
+ React__default.createElement(
45113
+ 'span',
45114
+ { className: getPriceDifferenceClassName(priceDifference) },
45115
+ formatPriceDifference(priceDifference, selectedExcursionSearchResult.currencyCode)
45116
+ )
45117
+ )
45118
+ )
45119
+ )
45120
+ );
45121
+ })
45122
+ )
45123
+ ),
45124
+ paxGroups.map(function (_a) {
45125
+ var pax = _a.pax,
45126
+ paxId = _a.paxId,
45127
+ excursions = _a.excursions;
45128
+ if (excursions.length === 0) {
45129
+ return null;
45130
+ }
45131
+ var selectedPaxOption = getSelectedOptionForPax(paxId);
45132
+ return React__default.createElement(
45133
+ 'div',
45134
+ { className: 'flyin__acco', key: 'pax-'.concat(pax.id) },
45135
+ React__default.createElement('h3', { className: 'flyin__acco__room-title' }, translations.SUMMARY.TRAVELER, ' ', pax.id + 1),
45136
+ React__default.createElement(
45137
+ 'div',
45138
+ { className: 'flyin__acco__cards' },
45139
+ excursions.map(function (excursion) {
45140
+ var selectedOption = getSelectedOptionForExcursion(paxId, excursion.accommodationCode);
45141
+ var priceDifference = getPriceDifference(
45142
+ selectedPaxOption === null || selectedPaxOption === void 0 ? void 0 : selectedPaxOption.price,
45143
+ paxId,
45144
+ excursion.accommodationCode
45145
+ );
45146
+ return React__default.createElement(
45147
+ 'div',
45148
+ { className: 'flyin__acco__card', key: ''.concat(pax.id, '-').concat(excursion.accommodationCode) },
45149
+ React__default.createElement(
45150
+ 'div',
45151
+ { className: 'flyin__acco__content' },
45152
+ React__default.createElement('h4', { className: 'flyin__acco__title' }, excursion.accommodationName)
45153
+ ),
45154
+ React__default.createElement(
45155
+ 'div',
45156
+ { className: 'flyin__acco__footer' },
45157
+ React__default.createElement(
45158
+ 'div',
45159
+ { className: 'flyin__acco__footer__actions' },
45160
+ React__default.createElement(
45161
+ 'button',
45162
+ {
45163
+ className:
45164
+ (selectedPaxOption === null || selectedPaxOption === void 0 ? void 0 : selectedPaxOption.accommodationCode) ===
45165
+ excursion.accommodationCode
45166
+ ? 'cta cta--select cta--selected'
45167
+ : 'cta cta--select',
45168
+ onClick: function () {
45169
+ var _a;
45170
+ return handlePick(
45171
+ selectedOption ? selectedOption.guid : (_a = first(excursion.options)) === null || _a === void 0 ? void 0 : _a.guid,
45172
+ paxId
45173
+ );
45174
+ }
45175
+ },
45176
+ (selectedPaxOption === null || selectedPaxOption === void 0 ? void 0 : selectedPaxOption.accommodationCode) ===
45177
+ excursion.accommodationCode
45178
+ ? translations === null || translations === void 0
45179
+ ? void 0
45180
+ : translations.SHARED.SELECTED
45181
+ : translations === null || translations === void 0
45182
+ ? void 0
45183
+ : translations.SHARED.SELECT
45184
+ ),
45185
+ React__default.createElement(
45186
+ 'div',
45187
+ { className: 'flyin__acco__price__wrapper' },
45188
+ React__default.createElement(
45189
+ 'span',
45190
+ { className: getPriceDifferenceClassName(priceDifference) },
45191
+ formatPriceDifference(priceDifference, selectedExcursionSearchResult.currencyCode)
45192
+ )
45193
+ )
45194
+ )
45195
+ )
45196
+ );
45197
+ })
45198
+ )
45199
+ );
45200
+ })
45201
+ ),
45202
+ React__default.createElement(
45203
+ 'div',
45204
+ { className: 'flyin__footer' },
45205
+ React__default.createElement('div', { className: 'flyin__footer__price' }, translations.SHARED.TOTAL_PRICE, ': ', calculateTotalPrice()),
45206
+ React__default.createElement(
45207
+ 'button',
45208
+ { type: 'button', className: 'cta cta--primary', onClick: handleConfirm },
45209
+ translations === null || translations === void 0 ? void 0 : translations.QSM.CONFIRM
45210
+ )
45211
+ )
45212
+ );
45213
+ };
45214
+
44541
45215
  var FlyIn = function (_a) {
44542
45216
  var _b;
44543
45217
  var srpType = _a.srpType,
@@ -44550,7 +45224,8 @@ var FlyIn = function (_a) {
44550
45224
  flyInType = _a.flyInType,
44551
45225
  isPackageEditFlow = _a.isPackageEditFlow,
44552
45226
  handleConfirm = _a.handleConfirm,
44553
- sortByTypes = _a.sortByTypes;
45227
+ sortByTypes = _a.sortByTypes,
45228
+ activeSearchSeed = _a.activeSearchSeed;
44554
45229
  var dispatch = useDispatch();
44555
45230
  var context = useContext(SearchResultsConfigurationContext);
44556
45231
  var language = (_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB';
@@ -44608,14 +45283,17 @@ var FlyIn = function (_a) {
44608
45283
  onCancelSearch();
44609
45284
  } else {
44610
45285
  dispatch(setSelectedSearchResult(null));
44611
- dispatch(setSelectedPackagingAccoResult(null));
44612
45286
  }
44613
45287
  dispatch(setFlyInType('acco-details'));
44614
45288
  setIsOpen(false);
44615
45289
  }
44616
45290
  };
44617
45291
  var handleGoBack = function () {
44618
- dispatch(setFlyInType('acco-results'));
45292
+ if (flyInType === 'acco-details') {
45293
+ dispatch(setFlyInType('acco-results'));
45294
+ } else if (flyInType === 'excursion-details') {
45295
+ dispatch(setFlyInType('excursion-results'));
45296
+ }
44619
45297
  };
44620
45298
  var handleSortChange = function (newSortKey, direction) {
44621
45299
  if (sortByTypes === undefined) return;
@@ -44659,7 +45337,8 @@ var FlyIn = function (_a) {
44659
45337
  srpType === build.PortalQsmType.AccommodationAndFlight &&
44660
45338
  flyInType === 'flight-return-results' &&
44661
45339
  ''.concat(translations.SRP.SELECT, ' ').concat(translations.FLIGHTS_FORM.RETURN_FLIGHT),
44662
- srpType === build.PortalQsmType.AccommodationAndFlight && flyInType === 'flight-details' && 'Select your fare'
45340
+ srpType === build.PortalQsmType.AccommodationAndFlight && flyInType === 'flight-details' && 'Select your fare',
45341
+ flyInType === 'excursion-results' || (flyInType === 'excursion-details' && 'Select excursion')
44663
45342
  ),
44664
45343
  React__default.createElement(
44665
45344
  'span',
@@ -44672,8 +45351,7 @@ var FlyIn = function (_a) {
44672
45351
  React__default.createElement(Icon, { name: 'ui-close', width: 30, height: 30, 'aria-hidden': 'true' })
44673
45352
  )
44674
45353
  ),
44675
- isPackageEditFlow &&
44676
- flyInType === 'acco-details' &&
45354
+ ((isPackageEditFlow && flyInType === 'acco-details') || flyInType === 'excursion-details') &&
44677
45355
  React__default.createElement(
44678
45356
  'div',
44679
45357
  { className: 'flyin__content-title-row' },
@@ -44754,6 +45432,10 @@ var FlyIn = function (_a) {
44754
45432
  srpType === build.PortalQsmType.AccommodationAndFlight &&
44755
45433
  (flyInType === 'flight-outward-results' || flyInType === 'flight-return-results') &&
44756
45434
  React__default.createElement(PackageingFlightsFlyIn, { isOpen: isOpen, setIsOpen: setIsOpen }),
45435
+ srpType === build.PortalQsmType.AccommodationAndFlight &&
45436
+ flyInType === 'excursion-results' &&
45437
+ React__default.createElement(ExcursionResults, { isFlyIn: true, activeSearchSeed: activeSearchSeed }),
45438
+ srpType === build.PortalQsmType.AccommodationAndFlight && flyInType === 'excursion-details' && React__default.createElement(ExcursionDetails, null),
44757
45439
  srpType === build.PortalQsmType.GroupTour &&
44758
45440
  React__default.createElement(GroupTourFlyIn, { isLoading: detailsLoading, isOpen: isOpen, setIsOpen: setIsOpen })
44759
45441
  )
@@ -45100,7 +45782,7 @@ var PairedFlightOption = function (_a) {
45100
45782
  React__default.createElement(
45101
45783
  'span',
45102
45784
  { className: 'price' },
45103
- formatPrice$2(
45785
+ formatPrice$3(
45104
45786
  item.price,
45105
45787
  'EUR',
45106
45788
  (_c = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _c !== void 0 ? _c : 'en-GB'
@@ -46902,7 +47584,7 @@ var GroupTourCard = function (_a) {
46902
47584
  React__default.createElement(
46903
47585
  'div',
46904
47586
  { className: 'search__result-card__allotment__price' },
46905
- formatPrice$2(result.price, result.currencyCode, languageCode),
47587
+ formatPrice$3(result.price, result.currencyCode, languageCode),
46906
47588
  ' ',
46907
47589
  translations.PRODUCT.PER_PERSON
46908
47590
  )
@@ -47796,6 +48478,221 @@ var FullItinerary = function (_a) {
47796
48478
  return React__default.createElement('div', { ref: hostRef });
47797
48479
  };
47798
48480
 
48481
+ var getExcursionContentWithUpdatedPrice = function (contents, totalPrice, currencyCode) {
48482
+ if (!contents) return '';
48483
+ var decodedHtml = he.decode(contents);
48484
+ var parser = new DOMParser();
48485
+ var doc = parser.parseFromString(decodedHtml, 'text/html');
48486
+ var priceElement = doc.querySelector('[data-excursion-price]');
48487
+ if (priceElement) {
48488
+ priceElement.textContent = new Intl.NumberFormat('nl-BE', {
48489
+ style: 'currency',
48490
+ currency: currencyCode !== null && currencyCode !== void 0 ? currencyCode : 'EUR'
48491
+ }).format(totalPrice);
48492
+ }
48493
+ return doc.body.innerHTML;
48494
+ };
48495
+ var DayByDayExcursions = function () {
48496
+ var _a;
48497
+ var context = useContext(SearchResultsConfigurationContext);
48498
+ var translations = getTranslations((_a = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _a !== void 0 ? _a : 'en-GB');
48499
+ var dispatch = useDispatch();
48500
+ var confirmedExcursionsByDay = useSelector(function (state) {
48501
+ return state.searchResults;
48502
+ }).confirmedExcursionsByDay;
48503
+ var selectedPackagingAccoResult = useSelector(selectSelectedPackagingAccoResult);
48504
+ var stayDates = useMemo(
48505
+ function () {
48506
+ if (
48507
+ !(selectedPackagingAccoResult === null || selectedPackagingAccoResult === void 0 ? void 0 : selectedPackagingAccoResult.fromDate) ||
48508
+ !(selectedPackagingAccoResult === null || selectedPackagingAccoResult === void 0 ? void 0 : selectedPackagingAccoResult.toDate)
48509
+ ) {
48510
+ return [];
48511
+ }
48512
+ return getDatesBetween(selectedPackagingAccoResult.fromDate, selectedPackagingAccoResult.toDate);
48513
+ },
48514
+ [
48515
+ selectedPackagingAccoResult === null || selectedPackagingAccoResult === void 0 ? void 0 : selectedPackagingAccoResult.fromDate,
48516
+ selectedPackagingAccoResult === null || selectedPackagingAccoResult === void 0 ? void 0 : selectedPackagingAccoResult.toDate
48517
+ ]
48518
+ );
48519
+ var handleSearchExcursions = function (day) {
48520
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
48521
+ if (!selectedPackagingAccoResult) {
48522
+ return;
48523
+ }
48524
+ var searchParams = {
48525
+ date: day.toISOString(),
48526
+ fromDate: day.toISOString(),
48527
+ toDate: day.toISOString(),
48528
+ countryId: selectedPackagingAccoResult.countryId,
48529
+ regionId: selectedPackagingAccoResult.regionId,
48530
+ oordId: selectedPackagingAccoResult.oordId,
48531
+ locationId: selectedPackagingAccoResult.locationId,
48532
+ locationName: selectedPackagingAccoResult.locationName,
48533
+ accommodationCode:
48534
+ (_e =
48535
+ (_d =
48536
+ (_c =
48537
+ (_b = (_a = selectedPackagingAccoResult.rooms) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.options) ===
48538
+ null || _c === void 0
48539
+ ? void 0
48540
+ : _c.find(function (option) {
48541
+ return option.isSelected;
48542
+ })) === null || _d === void 0
48543
+ ? void 0
48544
+ : _d.accommodationCode) !== null && _e !== void 0
48545
+ ? _e
48546
+ : null,
48547
+ accommodationName:
48548
+ (_k =
48549
+ (_j =
48550
+ (_h =
48551
+ (_g = (_f = selectedPackagingAccoResult.rooms) === null || _f === void 0 ? void 0 : _f[0]) === null || _g === void 0 ? void 0 : _g.options) ===
48552
+ null || _h === void 0
48553
+ ? void 0
48554
+ : _h.find(function (option) {
48555
+ return option.isSelected;
48556
+ })) === null || _j === void 0
48557
+ ? void 0
48558
+ : _j.accommodationName) !== null && _k !== void 0
48559
+ ? _k
48560
+ : null,
48561
+ hotelCode: selectedPackagingAccoResult.code,
48562
+ hotelName: selectedPackagingAccoResult.name,
48563
+ rooms:
48564
+ (_l = selectedPackagingAccoResult === null || selectedPackagingAccoResult === void 0 ? void 0 : selectedPackagingAccoResult.rooms) !== null &&
48565
+ _l !== void 0
48566
+ ? _l
48567
+ : []
48568
+ };
48569
+ dispatch(setExcursionSearchParams(searchParams));
48570
+ dispatch(setFlyInIsOpen(true));
48571
+ dispatch(setFlyInType('excursion-results'));
48572
+ };
48573
+ var getSelectedOptionsSummary = function (excursion) {
48574
+ var options = excursion.rooms.flatMap(function (room) {
48575
+ var _a;
48576
+ return (_a = room.options) !== null && _a !== void 0 ? _a : [];
48577
+ });
48578
+ return options.filter(function (option) {
48579
+ return option.isSelected;
48580
+ });
48581
+ };
48582
+ if (!selectedPackagingAccoResult || stayDates.length === 0) {
48583
+ return null;
48584
+ }
48585
+ return React__default.createElement(
48586
+ React__default.Fragment,
48587
+ null,
48588
+ stayDates.map(function (day) {
48589
+ var _a;
48590
+ var dayKey = format$1(day, 'yyyy-MM-dd');
48591
+ var formattedDay = format$1(day, 'd');
48592
+ var formattedMonth = format$1(day, 'MMM');
48593
+ var confirmedExcursions = (_a = confirmedExcursionsByDay[dayKey]) !== null && _a !== void 0 ? _a : [];
48594
+ return React__default.createElement(
48595
+ React__default.Fragment,
48596
+ { key: dayKey },
48597
+ React__default.createElement(
48598
+ 'div',
48599
+ { className: 'search__results__label search__results__label--secondary' },
48600
+ React__default.createElement(
48601
+ 'div',
48602
+ { className: 'search__results__label__date' },
48603
+ React__default.createElement('p', { className: 'search__results__label__date-date' }, formattedDay),
48604
+ React__default.createElement('p', null, formattedMonth)
48605
+ ),
48606
+ React__default.createElement(
48607
+ 'div',
48608
+ { className: 'search__results__label__text' },
48609
+ React__default.createElement('h3', null, translations.SRP.SELECT, ' ', React__default.createElement('strong', null, translations.SRP.EXCURSION))
48610
+ )
48611
+ ),
48612
+ React__default.createElement(
48613
+ 'div',
48614
+ { className: 'search__results__cards__actions' },
48615
+ React__default.createElement('span', null, 'Accommodation for this day: ', selectedPackagingAccoResult.name),
48616
+ React__default.createElement(
48617
+ 'button',
48618
+ {
48619
+ type: 'button',
48620
+ className: 'cta cta--secondary',
48621
+ onClick: function () {
48622
+ return handleSearchExcursions(day);
48623
+ }
48624
+ },
48625
+ confirmedExcursions.length > 0 ? 'Add another excursion' : ''.concat(translations.SRP.SELECT, ' ').concat(translations.SRP.EXCURSION)
48626
+ )
48627
+ ),
48628
+ React__default.createElement(
48629
+ 'div',
48630
+ { className: 'search__results__cards search__results__cards--compact' },
48631
+ confirmedExcursions &&
48632
+ confirmedExcursions.length > 0 &&
48633
+ confirmedExcursions.map(function (excursion) {
48634
+ var selectedOptions = getSelectedOptionsSummary(excursion);
48635
+ var totalPrice = selectedOptions.reduce(function (sum, option) {
48636
+ return sum + (option.price || 0);
48637
+ }, 0);
48638
+ var updatedContents = getExcursionContentWithUpdatedPrice(excursion.contents, totalPrice, excursion.currencyCode);
48639
+ return React__default.createElement(
48640
+ 'div',
48641
+ {
48642
+ key: excursion.code,
48643
+ className: 'search__result-card__wrapper search__result-card__wrapper--custom',
48644
+ onMouseEnter: function (e) {
48645
+ return (e.currentTarget.style.transform = 'scale(1.02)');
48646
+ },
48647
+ onMouseLeave: function (e) {
48648
+ return (e.currentTarget.style.transform = 'scale(1)');
48649
+ }
48650
+ },
48651
+ React__default.createElement('div', { dangerouslySetInnerHTML: { __html: updatedContents } }),
48652
+ React__default.createElement(
48653
+ 'div',
48654
+ { className: 'search__result-card__content--extra' },
48655
+ React__default.createElement(
48656
+ 'div',
48657
+ { className: 'search__result-card__content__wrapper' },
48658
+ React__default.createElement(
48659
+ 'div',
48660
+ { className: 'search__result-card__options' },
48661
+ selectedOptions.length > 0 &&
48662
+ selectedOptions.map(function (option) {
48663
+ return React__default.createElement(
48664
+ 'div',
48665
+ { className: 'search__result-card__option', key: option.guid },
48666
+ React__default.createElement(Icon$1, { name: 'ui-ticket', width: 14, height: 14, 'aria-hidden': 'true' }),
48667
+ React__default.createElement('span', null, option.accommodationName)
48668
+ );
48669
+ })
48670
+ )
48671
+ )
48672
+ ),
48673
+ React__default.createElement(
48674
+ 'div',
48675
+ { className: 'search__result-card__footer' },
48676
+ React__default.createElement(
48677
+ 'button',
48678
+ {
48679
+ type: 'button',
48680
+ className: 'cta cta--remove',
48681
+ onClick: function () {
48682
+ return dispatch(removeConfirmedExcursionForDay({ dayKey: dayKey, excursionCode: excursion.code }));
48683
+ }
48684
+ },
48685
+ 'Remove'
48686
+ )
48687
+ )
48688
+ );
48689
+ })
48690
+ )
48691
+ );
48692
+ })
48693
+ );
48694
+ };
48695
+
47799
48696
  var SearchResultsContainer = function () {
47800
48697
  var _a, _b;
47801
48698
  var currentSearch = typeof window !== 'undefined' ? window.location.search : '';
@@ -47824,7 +48721,8 @@ var SearchResultsContainer = function () {
47824
48721
  transactionId = _c.transactionId,
47825
48722
  flyInType = _c.flyInType,
47826
48723
  itinerary = _c.itinerary,
47827
- packagingFlightResults = _c.packagingFlightResults;
48724
+ packagingFlightResults = _c.packagingFlightResults,
48725
+ confirmedExcursionsByDay = _c.confirmedExcursionsByDay;
47828
48726
  var isMobile = useMediaQuery('(max-width: 1200px)');
47829
48727
  var _d = useState(false),
47830
48728
  initialFiltersSet = _d[0],
@@ -48992,6 +49890,7 @@ var SearchResultsContainer = function () {
48992
49890
  selectedHotelCode: selectedPackagingAccoResultCode,
48993
49891
  accommodationResults: packagingAccoResults,
48994
49892
  selectedFlight: selectedCombinationFlight !== null && selectedCombinationFlight !== void 0 ? selectedCombinationFlight : null,
49893
+ confirmedExcursionsByDay: confirmedExcursionsByDay,
48995
49894
  seed: seed,
48996
49895
  transactionId:
48997
49896
  (_c =
@@ -49004,6 +49903,7 @@ var SearchResultsContainer = function () {
49004
49903
  : '',
49005
49904
  language: (_d = context.languageCode) !== null && _d !== void 0 ? _d : 'en-GB'
49006
49905
  });
49906
+ console.log('Built nextEntry', nextEntry);
49007
49907
  if (!nextEntry) return;
49008
49908
  dispatch(setEditablePackagingEntry(nextEntry));
49009
49909
  if (selectedCombinationFlight) {
@@ -49017,6 +49917,7 @@ var SearchResultsContainer = function () {
49017
49917
  packagingAccoResults,
49018
49918
  packagingAccoSearchDetails,
49019
49919
  selectedCombinationFlight,
49920
+ confirmedExcursionsByDay,
49020
49921
  transactionId,
49021
49922
  dispatch
49022
49923
  ]
@@ -49031,56 +49932,103 @@ var SearchResultsContainer = function () {
49031
49932
  return line.serviceType !== FLIGHT_SERVICE_TYPE;
49032
49933
  });
49033
49934
  };
49935
+ var removeExcursionLines = function (lines) {
49936
+ return lines.filter(function (line) {
49937
+ return line.serviceType !== EXCURSION_SERVICE_TYPE;
49938
+ });
49939
+ };
49034
49940
  var buildAccommodationLinesFromSelection = function (selectedHotel, seed) {
49035
- if (!selectedHotel) return [];
49941
+ return buildPackagingAccommodationLines(selectedHotel, seed, ACCOMMODATION_SERVICE_TYPE);
49942
+ };
49943
+ var buildExcursionLinesFromConfirmedDays = function (confirmedExcursionsByDay) {
49944
+ return Object.values(confirmedExcursionsByDay)
49945
+ .flat()
49946
+ .flatMap(function (excursion) {
49947
+ var selectedOptions = excursion.rooms.flatMap(function (room) {
49948
+ return room.options.filter(function (option) {
49949
+ return option.isSelected;
49950
+ });
49951
+ });
49952
+ var parentGuid = crypto.randomUUID();
49953
+ return selectedOptions.map(function (option, index) {
49954
+ var _a, _b, _c;
49955
+ return {
49956
+ guid: (_a = option.guid) !== null && _a !== void 0 ? _a : crypto.randomUUID(),
49957
+ moment: '',
49958
+ parentGuid: index === 0 ? null : parentGuid,
49959
+ order: index,
49960
+ isChanged: true,
49961
+ from: excursion.fromDate,
49962
+ to: excursion.toDate,
49963
+ serviceType: EXCURSION_SERVICE_TYPE,
49964
+ productName: excursion.name,
49965
+ productCode: excursion.code,
49966
+ accommodationName: option.accommodationName,
49967
+ accommodationCode: option.accommodationCode,
49968
+ regimeName: option.regimeName,
49969
+ regimeCode: option.regimeCode,
49970
+ country: excursion.countryId ? { id: excursion.countryId, name: excursion.countryName, localizations: [] } : null,
49971
+ region: excursion.regionId ? { id: excursion.regionId, name: excursion.regionName, localizations: [] } : null,
49972
+ oord: excursion.oordId ? { id: excursion.oordId, name: excursion.oordName, localizations: [] } : null,
49973
+ location: excursion.locationId ? { id: excursion.locationId, name: excursion.locationName, localizations: [] } : null,
49974
+ longitude: (_b = excursion.longitude) !== null && _b !== void 0 ? _b : null,
49975
+ latitude: (_c = excursion.latitude) !== null && _c !== void 0 ? _c : null,
49976
+ pax: Array.isArray(option.paxIds)
49977
+ ? option.paxIds.map(function (paxId, paxIndex) {
49978
+ return {
49979
+ paxId: paxId,
49980
+ room: 0,
49981
+ order: paxIndex
49982
+ };
49983
+ })
49984
+ : [],
49985
+ flightInformation: null
49986
+ };
49987
+ });
49988
+ });
49989
+ };
49990
+ var buildPackagingAccommodationLines = function (selectedItem, seed, serviceType) {
49991
+ if (!selectedItem) return [];
49036
49992
  var parentGuid = crypto.randomUUID();
49037
- return selectedHotel.rooms
49993
+ return selectedItem.rooms
49038
49994
  .filter(function (room) {
49039
49995
  return room.options.some(function (o) {
49040
49996
  return o.isSelected;
49041
49997
  });
49042
49998
  })
49043
49999
  .map(function (room, index) {
49044
- var _a, _b, _c, _d, _e;
50000
+ var _a, _b, _c;
49045
50001
  var option = room.options.find(function (o) {
49046
50002
  return o.isSelected;
49047
50003
  });
49048
- var pax =
49049
- (_b =
49050
- (_a = seed.rooms) === null || _a === void 0
49051
- ? void 0
49052
- : _a.flatMap(function (room, roomIndex) {
49053
- return room.pax.map(function (p, paxIndex) {
49054
- return {
49055
- paxId: p.id,
49056
- room: roomIndex,
49057
- order: paxIndex
49058
- };
49059
- });
49060
- })) !== null && _b !== void 0
49061
- ? _b
49062
- : [];
50004
+ var pax = option.paxIds.map(function (p, paxIndex) {
50005
+ return {
50006
+ paxId: p,
50007
+ room: index,
50008
+ order: paxIndex
50009
+ };
50010
+ });
49063
50011
  return {
49064
- guid: (_c = option.guid) !== null && _c !== void 0 ? _c : crypto.randomUUID(),
50012
+ guid: (_a = option.guid) !== null && _a !== void 0 ? _a : crypto.randomUUID(),
49065
50013
  moment: '',
49066
50014
  parentGuid: index === 0 ? null : parentGuid,
49067
50015
  order: index,
49068
50016
  isChanged: true,
49069
- from: selectedHotel.fromDate,
49070
- to: selectedHotel.toDate,
49071
- serviceType: ACCOMMODATION_SERVICE_TYPE,
49072
- productName: selectedHotel.name,
49073
- productCode: selectedHotel.code,
50017
+ from: selectedItem.fromDate,
50018
+ to: selectedItem.toDate,
50019
+ serviceType: serviceType,
50020
+ productName: selectedItem.name,
50021
+ productCode: selectedItem.code,
49074
50022
  accommodationName: option.accommodationName,
49075
50023
  accommodationCode: option.accommodationCode,
49076
50024
  regimeName: option.regimeName,
49077
50025
  regimeCode: option.regimeCode,
49078
- country: selectedHotel.countryId ? { id: selectedHotel.countryId, name: selectedHotel.countryName, localizations: [] } : null,
49079
- region: selectedHotel.regionId ? { id: selectedHotel.regionId, name: selectedHotel.regionName, localizations: [] } : null,
49080
- oord: selectedHotel.oordId ? { id: selectedHotel.oordId, name: selectedHotel.oordName, localizations: [] } : null,
49081
- location: selectedHotel.locationId ? { id: selectedHotel.locationId, name: selectedHotel.locationName, localizations: [] } : null,
49082
- longitude: (_d = selectedHotel.longitude) !== null && _d !== void 0 ? _d : null,
49083
- latitude: (_e = selectedHotel.latitude) !== null && _e !== void 0 ? _e : null,
50026
+ country: selectedItem.countryId ? { id: selectedItem.countryId, name: selectedItem.countryName, localizations: [] } : null,
50027
+ region: selectedItem.regionId ? { id: selectedItem.regionId, name: selectedItem.regionName, localizations: [] } : null,
50028
+ oord: selectedItem.oordId ? { id: selectedItem.oordId, name: selectedItem.oordName, localizations: [] } : null,
50029
+ location: selectedItem.locationId ? { id: selectedItem.locationId, name: selectedItem.locationName, localizations: [] } : null,
50030
+ longitude: (_b = selectedItem.longitude) !== null && _b !== void 0 ? _b : null,
50031
+ latitude: (_c = selectedItem.latitude) !== null && _c !== void 0 ? _c : null,
49084
50032
  pax: pax,
49085
50033
  flightInformation: null
49086
50034
  };
@@ -49208,6 +50156,7 @@ var SearchResultsContainer = function () {
49208
50156
  selectedHotelCode = _a.selectedHotelCode,
49209
50157
  accommodationResults = _a.accommodationResults,
49210
50158
  selectedFlight = _a.selectedFlight,
50159
+ confirmedExcursionsByDay = _a.confirmedExcursionsByDay,
49211
50160
  seed = _a.seed,
49212
50161
  transactionId = _a.transactionId,
49213
50162
  language = _a.language;
@@ -49235,6 +50184,12 @@ var SearchResultsContainer = function () {
49235
50184
  nextLines = __spreadArray(__spreadArray([], nextLines, true), flightLines, true);
49236
50185
  }
49237
50186
  }
50187
+ // excursions
50188
+ var excursionLines = buildExcursionLinesFromConfirmedDays(confirmedExcursionsByDay);
50189
+ nextLines = removeExcursionLines(nextLines);
50190
+ if (excursionLines.length) {
50191
+ nextLines = __spreadArray(__spreadArray([], nextLines, true), excursionLines, true);
50192
+ }
49238
50193
  nextLines = nextLines.map(function (line, index) {
49239
50194
  return __assign(__assign({}, line), { order: index });
49240
50195
  });
@@ -49245,7 +50200,7 @@ var SearchResultsContainer = function () {
49245
50200
  if (sourceEntry) {
49246
50201
  return structuredClone(sourceEntry);
49247
50202
  }
49248
- var paxId = 1;
50203
+ var paxId = 0;
49249
50204
  var pax =
49250
50205
  (_b =
49251
50206
  (_a = seed.rooms) === null || _a === void 0
@@ -49454,8 +50409,6 @@ var SearchResultsContainer = function () {
49454
50409
  context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
49455
50410
  !context.packagingEntry &&
49456
50411
  context.showFlightResults &&
49457
- // bookingPackageDetails?.outwardFlights &&
49458
- // <FlightResults flights={bookingPackageDetails?.outwardFlights} isDeparture={true} />
49459
50412
  React__default.createElement(
49460
50413
  React__default.Fragment,
49461
50414
  null,
@@ -49536,11 +50489,12 @@ var SearchResultsContainer = function () {
49536
50489
  context.showHotelAccommodationResults &&
49537
50490
  !context.packagingEntry &&
49538
50491
  React__default.createElement(HotelAccommodationResults, { isLoading: isLoading }),
50492
+ context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
50493
+ !context.packagingEntry &&
50494
+ React__default.createElement(DayByDayExcursions, null),
49539
50495
  context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
49540
50496
  !context.packagingEntry &&
49541
50497
  context.showFlightResults &&
49542
- // bookingPackageDetails?.returnFlights &&
49543
- // <FlightResults flights={bookingPackageDetails?.returnFlights} isDeparture={false} />
49544
50498
  React__default.createElement(
49545
50499
  React__default.Fragment,
49546
50500
  null,
@@ -49612,7 +50566,8 @@ var SearchResultsContainer = function () {
49612
50566
  detailsLoading: detailsIsLoading,
49613
50567
  flyInType: flyInType,
49614
50568
  isPackageEditFlow: !!context.packagingEntry,
49615
- sortByTypes: sortByTypes
50569
+ sortByTypes: sortByTypes,
50570
+ activeSearchSeed: activeSearchSeed
49616
50571
  })
49617
50572
  )
49618
50573
  )