@qite/tide-booking-component 1.4.104 → 1.4.106

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 (58) hide show
  1. package/build/build-cjs/index.js +1312 -187
  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 +1304 -187
  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/itinerary/full-itinerary.tsx +161 -53
  30. package/src/search-results/components/itinerary/index.tsx +31 -7
  31. package/src/search-results/components/search-results-container/search-results-container.tsx +90 -28
  32. package/src/search-results/store/search-results-selectors.ts +11 -0
  33. package/src/search-results/store/search-results-slice.ts +46 -3
  34. package/src/search-results/types.ts +42 -1
  35. package/src/search-results/utils/query-utils.ts +1 -0
  36. package/src/shared/components/flyin/accommodation-flyin.tsx +4 -2
  37. package/src/shared/components/flyin/flights-flyin.tsx +3 -1
  38. package/src/shared/components/flyin/flyin.tsx +18 -6
  39. package/src/shared/components/flyin/group-tour-flyin.tsx +3 -1
  40. package/src/shared/translations/ar-SA.json +8 -2
  41. package/src/shared/translations/da-DK.json +8 -2
  42. package/src/shared/translations/de-DE.json +8 -2
  43. package/src/shared/translations/en-GB.json +8 -2
  44. package/src/shared/translations/es-ES.json +8 -2
  45. package/src/shared/translations/fr-BE.json +8 -2
  46. package/src/shared/translations/fr-FR.json +8 -2
  47. package/src/shared/translations/is-IS.json +8 -2
  48. package/src/shared/translations/it-IT.json +8 -2
  49. package/src/shared/translations/ja-JP.json +8 -2
  50. package/src/shared/translations/nl-BE.json +8 -2
  51. package/src/shared/translations/nl-NL.json +8 -2
  52. package/src/shared/translations/no-NO.json +8 -2
  53. package/src/shared/translations/pl-PL.json +8 -2
  54. package/src/shared/translations/pt-PT.json +8 -2
  55. package/src/shared/translations/sv-SE.json +8 -2
  56. package/src/shared/utils/localization-util.ts +14 -0
  57. package/src/shared/utils/tide-api-utils.ts +8 -0
  58. 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,12 @@ var SRP$f = {
659
660
  DEPARTURE_TIME_DESC: 'وقت المغادرة تنازلياً',
660
661
  DURATION_ASC: 'المدة تصاعدياً',
661
662
  DURATION_DESC: 'المدة تنازلياً',
662
- TRAVEL_GROUP: 'مجموعة المسافرين'
663
+ TRAVEL_GROUP: 'مجموعة المسافرين',
664
+ EXCURSION: 'رحلة'
665
+ };
666
+ var ITINERARY$f = {
667
+ DAY: 'اليوم',
668
+ NO_ITEMS: 'لا توجد عناصر لهذا اليوم.'
663
669
  };
664
670
  var arJson = {
665
671
  STEPS: STEPS$f,
@@ -679,7 +685,8 @@ var arJson = {
679
685
  NAVBAR: NAVBAR$f,
680
686
  LOGIN: LOGIN$f,
681
687
  QSM: QSM$g,
682
- SRP: SRP$f
688
+ SRP: SRP$f,
689
+ ITINERARY: ITINERARY$f
683
690
  };
684
691
 
685
692
  var STEPS$e = {
@@ -1014,7 +1021,8 @@ var QSM$f = {
1014
1021
  RETURN_DATE: 'Hjemrejsedato',
1015
1022
  CONFIRM: 'Bekræft',
1016
1023
  TRAVELERS: 'Rejsende',
1017
- GROUP_TOUR: 'Grupperejse'
1024
+ GROUP_TOUR: 'Grupperejse',
1025
+ ALL_TRAVELERS: 'Alle rejsende'
1018
1026
  };
1019
1027
  var SRP$e = {
1020
1028
  SHOW_MORE: 'Vis flere',
@@ -1065,7 +1073,12 @@ var SRP$e = {
1065
1073
  DEPARTURE_TIME_DESC: 'Afgangstid faldende',
1066
1074
  DURATION_ASC: 'Varighed stigende',
1067
1075
  DURATION_DESC: 'Varighed faldende',
1068
- TRAVEL_GROUP: 'Rejseselskab'
1076
+ TRAVEL_GROUP: 'Rejseselskab',
1077
+ EXCURSION: 'Udflugt'
1078
+ };
1079
+ var ITINERARY$e = {
1080
+ DAY: 'Dag',
1081
+ NO_ITEMS: 'Ingen elementer for denne dag.'
1069
1082
  };
1070
1083
  var daJson = {
1071
1084
  STEPS: STEPS$e,
@@ -1085,7 +1098,8 @@ var daJson = {
1085
1098
  NAVBAR: NAVBAR$e,
1086
1099
  LOGIN: LOGIN$e,
1087
1100
  QSM: QSM$f,
1088
- SRP: SRP$e
1101
+ SRP: SRP$e,
1102
+ ITINERARY: ITINERARY$e
1089
1103
  };
1090
1104
 
1091
1105
  var STEPS$d = {
@@ -1421,7 +1435,8 @@ var QSM$e = {
1421
1435
  RETURN_DATE: 'Rückreisedatum',
1422
1436
  CONFIRM: 'Bestätigen',
1423
1437
  TRAVELERS: 'Reisende',
1424
- GROUP_TOUR: 'Gruppentour'
1438
+ GROUP_TOUR: 'Gruppentour',
1439
+ ALL_TRAVELERS: 'Alle Reisenden'
1425
1440
  };
1426
1441
  var SRP$d = {
1427
1442
  SHOW_MORE: 'Mehr anzeigen',
@@ -1472,7 +1487,12 @@ var SRP$d = {
1472
1487
  DEPARTURE_AIRPORTS: 'Abflughäfen',
1473
1488
  ARRIVAL_AIRPORTS: 'Ankunftsflughäfen',
1474
1489
  PRICE: 'Preis',
1475
- TRAVEL_GROUP: 'Reisegruppe'
1490
+ TRAVEL_GROUP: 'Reisegruppe',
1491
+ EXCURSION: 'Ausflug'
1492
+ };
1493
+ var ITINERARY$d = {
1494
+ DAY: 'Tag',
1495
+ NO_ITEMS: 'Keine Elemente für diesen Tag.'
1476
1496
  };
1477
1497
  var deJson = {
1478
1498
  STEPS: STEPS$d,
@@ -1492,7 +1512,8 @@ var deJson = {
1492
1512
  NAVBAR: NAVBAR$d,
1493
1513
  LOGIN: LOGIN$d,
1494
1514
  QSM: QSM$e,
1495
- SRP: SRP$d
1515
+ SRP: SRP$d,
1516
+ ITINERARY: ITINERARY$d
1496
1517
  };
1497
1518
 
1498
1519
  var STEPS$c = {
@@ -1831,7 +1852,8 @@ var QSM$d = {
1831
1852
  RETURN_DATE: 'Return date',
1832
1853
  CONFIRM: 'Confirm',
1833
1854
  TRAVELERS: 'Travelers',
1834
- GROUP_TOUR: 'Group tour'
1855
+ GROUP_TOUR: 'Group tour',
1856
+ ALL_TRAVELERS: 'All travelers'
1835
1857
  };
1836
1858
  var SRP$c = {
1837
1859
  SHOW_MORE: 'Show more',
@@ -1882,7 +1904,12 @@ var SRP$c = {
1882
1904
  DEPARTURE_RANGE: 'Departure range',
1883
1905
  DEPARTURE_AIRPORTS: 'Departure airports',
1884
1906
  ARRIVAL_AIRPORTS: 'Arrival airports',
1885
- TRAVEL_GROUP: 'Travel group'
1907
+ TRAVEL_GROUP: 'Travel group',
1908
+ EXCURSION: 'Excursion'
1909
+ };
1910
+ var ITINERARY$c = {
1911
+ DAY: 'Day',
1912
+ NO_ITEMS: 'No items for this day.'
1886
1913
  };
1887
1914
  var enJson = {
1888
1915
  STEPS: STEPS$c,
@@ -1902,7 +1929,8 @@ var enJson = {
1902
1929
  NAVBAR: NAVBAR$c,
1903
1930
  LOGIN: LOGIN$c,
1904
1931
  QSM: QSM$d,
1905
- SRP: SRP$c
1932
+ SRP: SRP$c,
1933
+ ITINERARY: ITINERARY$c
1906
1934
  };
1907
1935
 
1908
1936
  var STEPS$b = {
@@ -2238,7 +2266,8 @@ var QSM$c = {
2238
2266
  RETURN_DATE: 'Fecha de regreso',
2239
2267
  CONFIRM: 'Confirmar',
2240
2268
  TRAVELERS: 'Viajeros',
2241
- GROUP_TOUR: 'Tour grupal'
2269
+ GROUP_TOUR: 'Tour grupal',
2270
+ ALL_TRAVELERS: 'Todos los viajeros'
2242
2271
  };
2243
2272
  var SRP$b = {
2244
2273
  SHOW_MORE: 'Mostrar más',
@@ -2289,7 +2318,12 @@ var SRP$b = {
2289
2318
  DEPARTURE_AIRPORTS: 'Aeropuertos de salida',
2290
2319
  ARRIVAL_AIRPORTS: 'Aeropuertos de llegada',
2291
2320
  PRICE: 'Precio',
2292
- TRAVEL_GROUP: 'Grupo de viaje'
2321
+ TRAVEL_GROUP: 'Grupo de viaje',
2322
+ EXCURSION: 'Excursión'
2323
+ };
2324
+ var ITINERARY$b = {
2325
+ DAY: 'Día',
2326
+ NO_ITEMS: 'No hay elementos para este día.'
2293
2327
  };
2294
2328
  var esJson = {
2295
2329
  STEPS: STEPS$b,
@@ -2309,7 +2343,8 @@ var esJson = {
2309
2343
  NAVBAR: NAVBAR$b,
2310
2344
  LOGIN: LOGIN$b,
2311
2345
  QSM: QSM$c,
2312
- SRP: SRP$b
2346
+ SRP: SRP$b,
2347
+ ITINERARY: ITINERARY$b
2313
2348
  };
2314
2349
 
2315
2350
  var STEPS$a = {
@@ -2649,7 +2684,8 @@ var QSM$b = {
2649
2684
  RETURN_DATE: 'Date de retour',
2650
2685
  CONFIRM: 'Confirmer',
2651
2686
  TRAVELERS: 'Voyageurs',
2652
- GROUP_TOUR: 'Tour en groupe'
2687
+ GROUP_TOUR: 'Tour en groupe',
2688
+ ALL_TRAVELERS: 'Tous les voyageurs'
2653
2689
  };
2654
2690
  var SRP$a = {
2655
2691
  SHOW_MORE: 'Afficher plus',
@@ -2700,7 +2736,12 @@ var SRP$a = {
2700
2736
  DEPARTURE_AIRPORTS: 'Aéroports de départ',
2701
2737
  ARRIVAL_AIRPORTS: 'Aéroports d’arrivée',
2702
2738
  PRICE: 'Prix',
2703
- TRAVEL_GROUP: 'Groupe de voyageurs'
2739
+ TRAVEL_GROUP: 'Groupe de voyageurs',
2740
+ EXCURSION: 'Excursion'
2741
+ };
2742
+ var ITINERARY$a = {
2743
+ DAY: 'Jour',
2744
+ NO_ITEMS: 'Aucun élément pour ce jour.'
2704
2745
  };
2705
2746
  var frBeJson = {
2706
2747
  STEPS: STEPS$a,
@@ -2720,7 +2761,8 @@ var frBeJson = {
2720
2761
  NAVBAR: NAVBAR$a,
2721
2762
  LOGIN: LOGIN$a,
2722
2763
  QSM: QSM$b,
2723
- SRP: SRP$a
2764
+ SRP: SRP$a,
2765
+ ITINERARY: ITINERARY$a
2724
2766
  };
2725
2767
 
2726
2768
  var STEPS$9 = {
@@ -3055,7 +3097,8 @@ var QSM$a = {
3055
3097
  RETURN_DATE: 'Date de retour',
3056
3098
  CONFIRM: 'Confirmer',
3057
3099
  TRAVELERS: 'Voyageurs',
3058
- GROUP_TOUR: 'Tour en groupe'
3100
+ GROUP_TOUR: 'Tour en groupe',
3101
+ ALL_TRAVELERS: 'Tous les voyageurs'
3059
3102
  };
3060
3103
  var SRP$9 = {
3061
3104
  SHOW_MORE: 'Afficher plus',
@@ -3106,7 +3149,12 @@ var SRP$9 = {
3106
3149
  DEPARTURE_AIRPORTS: 'Aéroports de départ',
3107
3150
  ARRIVAL_AIRPORTS: 'Aéroports d’arrivée',
3108
3151
  PRICE: 'Prix',
3109
- TRAVEL_GROUP: 'Groupe de voyageurs'
3152
+ TRAVEL_GROUP: 'Groupe de voyageurs',
3153
+ EXCURSION: 'Excursion'
3154
+ };
3155
+ var ITINERARY$9 = {
3156
+ DAY: 'Jour',
3157
+ NO_ITEMS: 'Aucun élément pour ce jour.'
3110
3158
  };
3111
3159
  var frFrJson = {
3112
3160
  STEPS: STEPS$9,
@@ -3126,7 +3174,8 @@ var frFrJson = {
3126
3174
  NAVBAR: NAVBAR$9,
3127
3175
  LOGIN: LOGIN$9,
3128
3176
  QSM: QSM$a,
3129
- SRP: SRP$9
3177
+ SRP: SRP$9,
3178
+ ITINERARY: ITINERARY$9
3130
3179
  };
3131
3180
 
3132
3181
  var STEPS$8 = {
@@ -3461,7 +3510,8 @@ var QSM$9 = {
3461
3510
  RETURN_DATE: 'Heimkomudagur',
3462
3511
  CONFIRM: 'Staðfesta',
3463
3512
  TRAVELERS: 'Ferðalangar',
3464
- GROUP_TOUR: 'Ferð í hóp'
3513
+ GROUP_TOUR: 'Ferð í hóp',
3514
+ ALL_TRAVELERS: 'Allir ferðalangar'
3465
3515
  };
3466
3516
  var SRP$8 = {
3467
3517
  SHOW_MORE: 'Sýna meira',
@@ -3512,7 +3562,12 @@ var SRP$8 = {
3512
3562
  DEPARTURE_AIRPORTS: 'Brottfararflugvellir',
3513
3563
  ARRIVAL_AIRPORTS: 'Komuflugvellir',
3514
3564
  PRICE: 'Verð',
3515
- TRAVEL_GROUP: 'Ferðahópur'
3565
+ TRAVEL_GROUP: 'Ferðahópur',
3566
+ EXCURSION: 'Útflutningur'
3567
+ };
3568
+ var ITINERARY$8 = {
3569
+ DAY: 'Dagur',
3570
+ NO_ITEMS: 'Engar upplýsingar fyrir þennan dag.'
3516
3571
  };
3517
3572
  var isJson = {
3518
3573
  STEPS: STEPS$8,
@@ -3532,7 +3587,8 @@ var isJson = {
3532
3587
  NAVBAR: NAVBAR$8,
3533
3588
  LOGIN: LOGIN$8,
3534
3589
  QSM: QSM$9,
3535
- SRP: SRP$8
3590
+ SRP: SRP$8,
3591
+ ITINERARY: ITINERARY$8
3536
3592
  };
3537
3593
 
3538
3594
  var STEPS$7 = {
@@ -3868,7 +3924,8 @@ var QSM$8 = {
3868
3924
  RETURN_DATE: 'Data di ritorno',
3869
3925
  CONFIRM: 'Conferma',
3870
3926
  TRAVELERS: 'Viaggiatori',
3871
- GROUP_TOUR: 'Tour di gruppo'
3927
+ GROUP_TOUR: 'Tour di gruppo',
3928
+ ALL_TRAVELERS: 'Tutti i viaggiatori'
3872
3929
  };
3873
3930
  var SRP$7 = {
3874
3931
  SHOW_MORE: 'Mostra di più',
@@ -3919,7 +3976,12 @@ var SRP$7 = {
3919
3976
  DEPARTURE_AIRPORTS: 'Aeroporti di partenza',
3920
3977
  ARRIVAL_AIRPORTS: 'Aeroporti di arrivo',
3921
3978
  PRICE: 'Prezzo',
3922
- TRAVEL_GROUP: 'Gruppo di viaggio'
3979
+ TRAVEL_GROUP: 'Gruppo di viaggio',
3980
+ EXCURSION: 'Escursione'
3981
+ };
3982
+ var ITINERARY$7 = {
3983
+ DAY: 'Giorno',
3984
+ NO_ITEMS: 'Nessun elemento per questo giorno.'
3923
3985
  };
3924
3986
  var itJson = {
3925
3987
  STEPS: STEPS$7,
@@ -3939,7 +4001,8 @@ var itJson = {
3939
4001
  NAVBAR: NAVBAR$7,
3940
4002
  LOGIN: LOGIN$7,
3941
4003
  QSM: QSM$8,
3942
- SRP: SRP$7
4004
+ SRP: SRP$7,
4005
+ ITINERARY: ITINERARY$7
3943
4006
  };
3944
4007
 
3945
4008
  var STEPS$6 = {
@@ -4279,7 +4342,8 @@ var QSM$7 = {
4279
4342
  RETURN_DATE: 'Terugkeerdatum',
4280
4343
  CONFIRM: 'Bevestigen',
4281
4344
  TRAVELERS: 'Reizigers',
4282
- GROUP_TOUR: 'Groepsreis'
4345
+ GROUP_TOUR: 'Groepsreis',
4346
+ ALL_TRAVELERS: 'Alle reizigers'
4283
4347
  };
4284
4348
  var SRP$6 = {
4285
4349
  SHOW_MORE: 'Toon meer',
@@ -4330,7 +4394,12 @@ var SRP$6 = {
4330
4394
  DEPARTURE_AIRPORTS: 'Vertrekluchthavens',
4331
4395
  ARRIVAL_AIRPORTS: 'Aankomstluchthavens',
4332
4396
  PRICE: 'Prijs',
4333
- TRAVEL_GROUP: 'Reisgezelschap'
4397
+ TRAVEL_GROUP: 'Reisgezelschap',
4398
+ EXCURSION: 'Excursie'
4399
+ };
4400
+ var ITINERARY$6 = {
4401
+ DAY: 'Dag',
4402
+ NO_ITEMS: 'Geen elementen voor deze dag.'
4334
4403
  };
4335
4404
  var nlBeJson = {
4336
4405
  STEPS: STEPS$6,
@@ -4350,7 +4419,8 @@ var nlBeJson = {
4350
4419
  NAVBAR: NAVBAR$6,
4351
4420
  LOGIN: LOGIN$6,
4352
4421
  QSM: QSM$7,
4353
- SRP: SRP$6
4422
+ SRP: SRP$6,
4423
+ ITINERARY: ITINERARY$6
4354
4424
  };
4355
4425
 
4356
4426
  var STEPS$5 = {
@@ -4686,7 +4756,8 @@ var QSM$6 = {
4686
4756
  RETURN_DATE: 'Terugkeerdatum',
4687
4757
  CONFIRM: 'Bevestigen',
4688
4758
  TRAVELERS: 'Reizigers',
4689
- GROUP_TOUR: 'Groepsreis'
4759
+ GROUP_TOUR: 'Groepsreis',
4760
+ ALL_TRAVELERS: 'Alle reizigers'
4690
4761
  };
4691
4762
  var SRP$5 = {
4692
4763
  SHOW_MORE: 'Toon meer',
@@ -4737,7 +4808,12 @@ var SRP$5 = {
4737
4808
  DEPARTURE_AIRPORTS: 'Vertrekluchthavens',
4738
4809
  ARRIVAL_AIRPORTS: 'Aankomstluchthavens',
4739
4810
  PRICE: 'Prijs',
4740
- TRAVEL_GROUP: 'Reisgezelschap'
4811
+ TRAVEL_GROUP: 'Reisgezelschap',
4812
+ EXCURSION: 'Excursie'
4813
+ };
4814
+ var ITINERARY$5 = {
4815
+ DAY: 'Dag',
4816
+ NO_ITEMS: 'Geen elementen voor deze dag.'
4741
4817
  };
4742
4818
  var nlNlJson = {
4743
4819
  STEPS: STEPS$5,
@@ -4757,7 +4833,8 @@ var nlNlJson = {
4757
4833
  NAVBAR: NAVBAR$5,
4758
4834
  LOGIN: LOGIN$5,
4759
4835
  QSM: QSM$6,
4760
- SRP: SRP$5
4836
+ SRP: SRP$5,
4837
+ ITINERARY: ITINERARY$5
4761
4838
  };
4762
4839
 
4763
4840
  var STEPS$4 = {
@@ -5093,7 +5170,8 @@ var QSM$5 = {
5093
5170
  RETURN_DATE: 'Returdato',
5094
5171
  CONFIRM: 'Bekreft',
5095
5172
  TRAVELERS: 'Reisende',
5096
- GROUP_TOUR: 'Gruppetur'
5173
+ GROUP_TOUR: 'Gruppetur',
5174
+ ALL_TRAVELERS: 'Alle reisende'
5097
5175
  };
5098
5176
  var SRP$4 = {
5099
5177
  SHOW_MORE: 'Vis mer',
@@ -5144,7 +5222,12 @@ var SRP$4 = {
5144
5222
  DEPARTURE_AIRPORTS: 'Avgangsflyplasser',
5145
5223
  ARRIVAL_AIRPORTS: 'Ankomstflyplasser',
5146
5224
  PRICE: 'Pris',
5147
- TRAVEL_GROUP: 'Reisefølge'
5225
+ TRAVEL_GROUP: 'Reisefølge',
5226
+ EXCURSION: 'Utflukt'
5227
+ };
5228
+ var ITINERARY$4 = {
5229
+ DAY: 'Dag',
5230
+ NO_ITEMS: 'Ingen elementer for denne dagen.'
5148
5231
  };
5149
5232
  var noJson = {
5150
5233
  STEPS: STEPS$4,
@@ -5164,7 +5247,8 @@ var noJson = {
5164
5247
  NAVBAR: NAVBAR$4,
5165
5248
  LOGIN: LOGIN$4,
5166
5249
  QSM: QSM$5,
5167
- SRP: SRP$4
5250
+ SRP: SRP$4,
5251
+ ITINERARY: ITINERARY$4
5168
5252
  };
5169
5253
 
5170
5254
  var STEPS$3 = {
@@ -5500,7 +5584,8 @@ var QSM$4 = {
5500
5584
  RETURN_DATE: 'Data powrotu',
5501
5585
  CONFIRM: 'Potwierdź',
5502
5586
  TRAVELERS: 'Podróżni',
5503
- GROUP_TOUR: 'Tour w grupie'
5587
+ GROUP_TOUR: 'Tour w grupie',
5588
+ ALL_TRAVELERS: 'Wszyscy podróżni'
5504
5589
  };
5505
5590
  var SRP$3 = {
5506
5591
  SHOW_MORE: 'Pokaż więcej',
@@ -5551,7 +5636,12 @@ var SRP$3 = {
5551
5636
  DEPARTURE_AIRPORTS: 'Lotniska wylotu',
5552
5637
  ARRIVAL_AIRPORTS: 'Lotniska przylotu',
5553
5638
  PRICE: 'Cena',
5554
- TRAVEL_GROUP: 'Grupa podróżnych'
5639
+ TRAVEL_GROUP: 'Grupa podróżnych',
5640
+ EXCURSION: 'Wycieczka'
5641
+ };
5642
+ var ITINERARY$3 = {
5643
+ DAY: 'Dzień',
5644
+ NO_ITEMS: 'Brak elementów dla tego dnia.'
5555
5645
  };
5556
5646
  var plJson = {
5557
5647
  STEPS: STEPS$3,
@@ -5571,7 +5661,8 @@ var plJson = {
5571
5661
  NAVBAR: NAVBAR$3,
5572
5662
  LOGIN: LOGIN$3,
5573
5663
  QSM: QSM$4,
5574
- SRP: SRP$3
5664
+ SRP: SRP$3,
5665
+ ITINERARY: ITINERARY$3
5575
5666
  };
5576
5667
 
5577
5668
  var STEPS$2 = {
@@ -5907,7 +5998,8 @@ var QSM$3 = {
5907
5998
  RETURN_DATE: 'Data de regresso',
5908
5999
  CONFIRM: 'Confirmar',
5909
6000
  TRAVELERS: 'Viajantes',
5910
- GROUP_TOUR: 'Tour em grupo'
6001
+ GROUP_TOUR: 'Tour em grupo',
6002
+ ALL_TRAVELERS: 'All travelers'
5911
6003
  };
5912
6004
  var SRP$2 = {
5913
6005
  SHOW_MORE: 'Mostrar mais',
@@ -5958,7 +6050,12 @@ var SRP$2 = {
5958
6050
  DEPARTURE_AIRPORTS: 'Aeroportos de partida',
5959
6051
  ARRIVAL_AIRPORTS: 'Aeroportos de chegada',
5960
6052
  PRICE: 'Preço',
5961
- TRAVEL_GROUP: 'Grupo de viajantes'
6053
+ TRAVEL_GROUP: 'Grupo de viajantes',
6054
+ EXCURSION: 'Excursão'
6055
+ };
6056
+ var ITINERARY$2 = {
6057
+ DAY: 'Dia',
6058
+ NO_ITEMS: 'Nenhum item para este dia.'
5962
6059
  };
5963
6060
  var ptJson = {
5964
6061
  STEPS: STEPS$2,
@@ -5978,7 +6075,8 @@ var ptJson = {
5978
6075
  NAVBAR: NAVBAR$2,
5979
6076
  LOGIN: LOGIN$2,
5980
6077
  QSM: QSM$3,
5981
- SRP: SRP$2
6078
+ SRP: SRP$2,
6079
+ ITINERARY: ITINERARY$2
5982
6080
  };
5983
6081
 
5984
6082
  var STEPS$1 = {
@@ -6314,7 +6412,8 @@ var QSM$2 = {
6314
6412
  RETURN_DATE: 'Hemresedatum',
6315
6413
  CONFIRM: 'Bekräfta',
6316
6414
  TRAVELERS: 'Resenärer',
6317
- GROUP_TOUR: 'Gruppresa'
6415
+ GROUP_TOUR: 'Gruppresa',
6416
+ ALL_TRAVELERS: 'All travelers'
6318
6417
  };
6319
6418
  var SRP$1 = {
6320
6419
  SHOW_MORE: 'Visa mer',
@@ -6365,7 +6464,12 @@ var SRP$1 = {
6365
6464
  DEPARTURE_AIRPORTS: 'Avgångsflygplatser',
6366
6465
  ARRIVAL_AIRPORTS: 'Ankomstflygplatser',
6367
6466
  PRICE: 'Pris',
6368
- TRAVEL_GROUP: 'Resesällskap'
6467
+ TRAVEL_GROUP: 'Resesällskap',
6468
+ EXCURSION: 'Utflykt'
6469
+ };
6470
+ var ITINERARY$1 = {
6471
+ DAY: 'Dag',
6472
+ NO_ITEMS: 'Inga element för denna dag.'
6369
6473
  };
6370
6474
  var svJson = {
6371
6475
  STEPS: STEPS$1,
@@ -6385,7 +6489,8 @@ var svJson = {
6385
6489
  NAVBAR: NAVBAR$1,
6386
6490
  LOGIN: LOGIN$1,
6387
6491
  QSM: QSM$2,
6388
- SRP: SRP$1
6492
+ SRP: SRP$1,
6493
+ ITINERARY: ITINERARY$1
6389
6494
  };
6390
6495
 
6391
6496
  var STEPS = {
@@ -6719,7 +6824,8 @@ var QSM$1 = {
6719
6824
  RETURN_DATE: '帰着日',
6720
6825
  CONFIRM: '確認',
6721
6826
  TRAVELERS: '旅行者',
6722
- GROUP_TOUR: 'グループツアー'
6827
+ GROUP_TOUR: 'グループツアー',
6828
+ ALL_TRAVELERS: 'すべての旅行者'
6723
6829
  };
6724
6830
  var SRP = {
6725
6831
  SHOW_MORE: 'もっと見る',
@@ -6770,7 +6876,12 @@ var SRP = {
6770
6876
  DEPARTURE_AIRPORTS: '出発空港',
6771
6877
  ARRIVAL_AIRPORTS: '到着空港',
6772
6878
  PRICE: '価格',
6773
- TRAVEL_GROUP: '旅行グループ'
6879
+ TRAVEL_GROUP: '旅行グループ',
6880
+ EXCURSION: 'エクスカーション'
6881
+ };
6882
+ var ITINERARY = {
6883
+ DAY: '日',
6884
+ NO_ITEMS: 'この日のアイテムはありません。'
6774
6885
  };
6775
6886
  var jaJson = {
6776
6887
  STEPS: STEPS,
@@ -6790,7 +6901,8 @@ var jaJson = {
6790
6901
  NAVBAR: NAVBAR,
6791
6902
  LOGIN: LOGIN,
6792
6903
  QSM: QSM$1,
6793
- SRP: SRP
6904
+ SRP: SRP,
6905
+ ITINERARY: ITINERARY
6794
6906
  };
6795
6907
 
6796
6908
  var DepartureRange;
@@ -6801,7 +6913,7 @@ var DepartureRange;
6801
6913
  DepartureRange[(DepartureRange['Night'] = 3)] = 'Night';
6802
6914
  })(DepartureRange || (DepartureRange = {}));
6803
6915
 
6804
- var formatPrice$2 = function (price, currencyCode, locale) {
6916
+ var formatPrice$3 = function (price, currencyCode, locale) {
6805
6917
  if (locale === void 0) {
6806
6918
  locale = 'nl-BE';
6807
6919
  }
@@ -6908,7 +7020,7 @@ function getLocale(code) {
6908
7020
  }
6909
7021
  }
6910
7022
  var getPriceDifferenceText = function (price, currencyCode) {
6911
- return price > 0 ? '+ '.concat(formatPrice$2(Math.abs(price), currencyCode)) : '- '.concat(formatPrice$2(Math.abs(price), currencyCode));
7023
+ return price > 0 ? '+ '.concat(formatPrice$3(Math.abs(price), currencyCode)) : '- '.concat(formatPrice$3(Math.abs(price), currencyCode));
6912
7024
  };
6913
7025
  function format(text, args) {
6914
7026
  return text.replace(/{([0-9]+)}/g, function (match, index) {
@@ -7008,6 +7120,16 @@ var findSortByType = function (sortByTypes, sortKey, direction) {
7008
7120
  }) || sortByTypes[0]
7009
7121
  );
7010
7122
  };
7123
+ var getDatesBetween = function (fromDate, toDate) {
7124
+ var dates = [];
7125
+ var current = new Date(fromDate);
7126
+ var end = new Date(toDate);
7127
+ while (current < end) {
7128
+ dates.push(new Date(current));
7129
+ current.setUTCDate(current.getUTCDate() + 1);
7130
+ }
7131
+ return dates;
7132
+ };
7011
7133
 
7012
7134
  var getDateFromParams = function (params, name) {
7013
7135
  var dateString = params.get(name);
@@ -13481,6 +13603,7 @@ PERFORMANCE OF THIS SOFTWARE.
13481
13603
  var ENDPOINT = '/api/web/packaging';
13482
13604
  var ENDPOINT_START_TRANSACTION = ENDPOINT + '/start';
13483
13605
  var ENDPOINT_ACCOMMODATIONS = ENDPOINT + '/accommodations';
13606
+ var ENDPOINT_EXCURSIONS = ENDPOINT + '/excursions';
13484
13607
  var ENDPOINT_FLIGHTS = ENDPOINT + '/flights';
13485
13608
  var ENDPOINT_PRICE_DETAILS = ENDPOINT + '/price-details';
13486
13609
  var ENDPOINT_ITINERARY = ENDPOINT + '/itinerary';
@@ -13504,6 +13627,12 @@ PERFORMANCE OF THIS SOFTWARE.
13504
13627
  var body = JSON.stringify(request);
13505
13628
  return post(url, apiKey, body, config.token, signal, true);
13506
13629
  };
13630
+ var searchPackagingExcursions = function (config, request, signal) {
13631
+ var url = '' + config.host + ENDPOINT_EXCURSIONS;
13632
+ var apiKey = config.apiKey;
13633
+ var body = JSON.stringify(request);
13634
+ return post(url, apiKey, body, config.token, signal, true);
13635
+ };
13507
13636
  var getEntry = function (config, magicLinkCode, signal) {
13508
13637
  var apiKey = config.apiKey;
13509
13638
  var url = '' + config.host + ENDPOINT_ENTRY(magicLinkCode);
@@ -13595,6 +13724,7 @@ PERFORMANCE OF THIS SOFTWARE.
13595
13724
  exports.searchLocations = searchLocations;
13596
13725
  exports.searchOords = searchOords;
13597
13726
  exports.searchPackagingAccommodations = searchPackagingAccommodations;
13727
+ exports.searchPackagingExcursions = searchPackagingExcursions;
13598
13728
  exports.searchPackagingFlights = searchPackagingFlights;
13599
13729
  exports.searchRegions = searchRegions;
13600
13730
  exports.searchWithErrorMapping = searchWithErrorMapping;
@@ -13671,16 +13801,16 @@ var formatPriceByMode = function (price, priceMode, personCount, duration, perPe
13671
13801
  if (!price) return '';
13672
13802
  switch (priceMode) {
13673
13803
  case 0:
13674
- return ''.concat(formatPrice$2(price, currencyCode));
13804
+ return ''.concat(formatPrice$3(price, currencyCode));
13675
13805
  case 1:
13676
13806
  var perPersonPrice = price / personCount;
13677
- return ''.concat(formatPrice$2(perPersonPrice, currencyCode), ' / ').concat(perPersonLabel);
13807
+ return ''.concat(formatPrice$3(perPersonPrice, currencyCode), ' / ').concat(perPersonLabel);
13678
13808
  case 2:
13679
13809
  var perNightPrice = price / duration;
13680
- return ''.concat(formatPrice$2(perNightPrice, currencyCode), ' / ').concat(perNightLabel);
13810
+ return ''.concat(formatPrice$3(perNightPrice, currencyCode), ' / ').concat(perNightLabel);
13681
13811
  case 3:
13682
13812
  var perPersonPerNightPrice = price / duration;
13683
- return ''.concat(formatPrice$2(perPersonPerNightPrice, currencyCode), ' / ').concat(perPersonPerNightLabel);
13813
+ return ''.concat(formatPrice$3(perPersonPerNightPrice, currencyCode), ' / ').concat(perPersonPerNightLabel);
13684
13814
  }
13685
13815
  };
13686
13816
 
@@ -22105,7 +22235,7 @@ var NoneOption = function (_a) {
22105
22235
  return x.requirementType === 2;
22106
22236
  });
22107
22237
  var noneSelected = !selectedOption;
22108
- var priceDifferencetext = selectedOption ? '- '.concat(formatPrice$2(Math.abs(selectedOption.line.price), currencyCode)) : '';
22238
+ var priceDifferencetext = selectedOption ? '- '.concat(formatPrice$3(Math.abs(selectedOption.line.price), currencyCode)) : '';
22109
22239
  return React__default.createElement(
22110
22240
  React__default.Fragment,
22111
22241
  null,
@@ -23378,7 +23508,7 @@ var OptionRoom = function (_a) {
23378
23508
  e.preventDefault();
23379
23509
  };
23380
23510
  var getPriceDifferenceText = function (price) {
23381
- return price > 0 ? '+ '.concat(formatPrice$2(Math.abs(price), currencyCode)) : '- '.concat(formatPrice$2(Math.abs(price), currencyCode));
23511
+ return price > 0 ? '+ '.concat(formatPrice$3(Math.abs(price), currencyCode)) : '- '.concat(formatPrice$3(Math.abs(price), currencyCode));
23382
23512
  };
23383
23513
  var getAccommodationPriceDifference = function (accommodation) {
23384
23514
  var _a;
@@ -24903,7 +25033,7 @@ var Sidebar = function (_a) {
24903
25033
  { className: 'pricing-summary__property' },
24904
25034
  React__default.createElement('h6', { className: 'pricing-summary__title' }, translations.SIDEBAR.BASE_PRICE)
24905
25035
  ),
24906
- React__default.createElement('div', { className: 'pricing-summary__value' }, formatPrice$2(basePrice, currencyCode))
25036
+ React__default.createElement('div', { className: 'pricing-summary__value' }, formatPrice$3(basePrice, currencyCode))
24907
25037
  ),
24908
25038
  basePricePerPaxType &&
24909
25039
  basePricePerPaxType.map(function (ppt, index) {
@@ -24920,7 +25050,7 @@ var Sidebar = function (_a) {
24920
25050
  ' ',
24921
25051
  getPaxTypeTranslation(translations, ppt.paxType, ppt.numberOfPax)
24922
25052
  ),
24923
- React__default.createElement('div', { className: 'pricing-summary__value' }, formatPrice$2(ppt.pricePerPaxType, currencyCode))
25053
+ React__default.createElement('div', { className: 'pricing-summary__value' }, formatPrice$3(ppt.pricePerPaxType, currencyCode))
24924
25054
  ),
24925
25055
  ppt.details.map(function (detail, dIndex) {
24926
25056
  return React__default.createElement(
@@ -24933,7 +25063,7 @@ var Sidebar = function (_a) {
24933
25063
  React__default.createElement(
24934
25064
  'div',
24935
25065
  { className: 'pricing-summary__value' },
24936
- formatPrice$2(detail.price / detail.numberOfPax, currencyCode)
25066
+ formatPrice$3(detail.price / detail.numberOfPax, currencyCode)
24937
25067
  )
24938
25068
  );
24939
25069
  })
@@ -24960,7 +25090,7 @@ var Sidebar = function (_a) {
24960
25090
  React__default.createElement(
24961
25091
  'div',
24962
25092
  { className: 'pricing-summary__value' },
24963
- formatPrice$2(priceDetail.price * priceDetail.amount, currencyCode)
25093
+ formatPrice$3(priceDetail.price * priceDetail.amount, currencyCode)
24964
25094
  )
24965
25095
  ),
24966
25096
  React__default.createElement(
@@ -24995,7 +25125,7 @@ var Sidebar = function (_a) {
24995
25125
  React__default.createElement(
24996
25126
  'div',
24997
25127
  { className: 'pricing-summary__value' },
24998
- formatPrice$2(priceDetail.price * priceDetail.amount, currencyCode)
25128
+ formatPrice$3(priceDetail.price * priceDetail.amount, currencyCode)
24999
25129
  )
25000
25130
  ),
25001
25131
  React__default.createElement(
@@ -25025,7 +25155,7 @@ var Sidebar = function (_a) {
25025
25155
  React__default.createElement(
25026
25156
  'div',
25027
25157
  { className: 'pricing-summary__value' },
25028
- formatPrice$2(ppt.pricePerPaxType, currencyCode)
25158
+ formatPrice$3(ppt.pricePerPaxType, currencyCode)
25029
25159
  )
25030
25160
  ),
25031
25161
  ppt.details.map(function (detail, dIndex) {
@@ -25045,7 +25175,7 @@ var Sidebar = function (_a) {
25045
25175
  React__default.createElement(
25046
25176
  'div',
25047
25177
  { className: 'pricing-summary__value' },
25048
- formatPrice$2(detail.price / detail.numberOfPax, currencyCode)
25178
+ formatPrice$3(detail.price / detail.numberOfPax, currencyCode)
25049
25179
  )
25050
25180
  );
25051
25181
  })
@@ -25089,7 +25219,7 @@ var Sidebar = function (_a) {
25089
25219
  React__default.createElement(
25090
25220
  'div',
25091
25221
  { className: 'pricing__price' },
25092
- formatPrice$2(commission !== null && commission !== void 0 ? commission : 0, currencyCode)
25222
+ formatPrice$3(commission !== null && commission !== void 0 ? commission : 0, currencyCode)
25093
25223
  )
25094
25224
  )
25095
25225
  )
@@ -25110,7 +25240,7 @@ var Sidebar = function (_a) {
25110
25240
  React__default.createElement(
25111
25241
  'div',
25112
25242
  { className: 'pricing' },
25113
- React__default.createElement('div', { className: 'pricing__price' }, formatPrice$2(totalPrice, currencyCode))
25243
+ React__default.createElement('div', { className: 'pricing__price' }, formatPrice$3(totalPrice, currencyCode))
25114
25244
  )
25115
25245
  )
25116
25246
  ),
@@ -25128,7 +25258,7 @@ var Sidebar = function (_a) {
25128
25258
  React__default.createElement(
25129
25259
  'div',
25130
25260
  { className: 'pricing' },
25131
- React__default.createElement('div', { className: 'pricing__price' }, formatPrice$2(deposit, currencyCode))
25261
+ React__default.createElement('div', { className: 'pricing__price' }, formatPrice$3(deposit, currencyCode))
25132
25262
  )
25133
25263
  )
25134
25264
  ),
@@ -25144,7 +25274,7 @@ var Sidebar = function (_a) {
25144
25274
  translations.SIDEBAR.DEPOSIT_TEXT1,
25145
25275
  React__default.createElement('strong', null, translations.SIDEBAR.DEPOSIT_TEXT2),
25146
25276
  translations.SIDEBAR.DEPOSIT_TEXT3,
25147
- formatPrice$2(remainingAmount, currencyCode),
25277
+ formatPrice$3(remainingAmount, currencyCode),
25148
25278
  translations.SIDEBAR.DEPOSIT_TEXT4,
25149
25279
  React__default.createElement('strong', null, translations.SIDEBAR.DEPOSIT_TEXT5),
25150
25280
  translations.SIDEBAR.DEPOSIT_TEXT6
@@ -25173,7 +25303,7 @@ var Sidebar = function (_a) {
25173
25303
  React__default.createElement(
25174
25304
  'div',
25175
25305
  { className: 'pricing__price' },
25176
- formatPrice$2(commission !== null && commission !== void 0 ? commission : 0, currencyCode)
25306
+ formatPrice$3(commission !== null && commission !== void 0 ? commission : 0, currencyCode)
25177
25307
  )
25178
25308
  )
25179
25309
  )
@@ -25194,7 +25324,7 @@ var Sidebar = function (_a) {
25194
25324
  React__default.createElement(
25195
25325
  'div',
25196
25326
  { className: 'pricing' },
25197
- React__default.createElement('div', { className: 'pricing__price' }, formatPrice$2(totalPrice, currencyCode))
25327
+ React__default.createElement('div', { className: 'pricing__price' }, formatPrice$3(totalPrice, currencyCode))
25198
25328
  )
25199
25329
  )
25200
25330
  )
@@ -33742,7 +33872,10 @@ var initialState$1 = {
33742
33872
  flyInIsOpen: false,
33743
33873
  flyInType: null,
33744
33874
  editablePackagingEntry: null,
33745
- itinerary: null
33875
+ itinerary: null,
33876
+ excursionSearchParams: null,
33877
+ selectedExcursionSearchResult: null,
33878
+ confirmedExcursionsByDay: {}
33746
33879
  };
33747
33880
  var searchResultsSlice = createSlice({
33748
33881
  name: 'searchResults',
@@ -33888,6 +34021,41 @@ var searchResultsSlice = createSlice({
33888
34021
  resetFlightSelection: function (state) {
33889
34022
  state.selectedOutwardKey = null;
33890
34023
  state.selectedReturnKey = null;
34024
+ },
34025
+ setExcursionSearchParams: function (state, action) {
34026
+ state.excursionSearchParams = action.payload;
34027
+ },
34028
+ setSelectedExcursionSearchResult: function (state, action) {
34029
+ state.selectedExcursionSearchResult = action.payload;
34030
+ },
34031
+ confirmExcursionForDay: function (state, action) {
34032
+ var _a;
34033
+ var _b = action.payload,
34034
+ dayKey = _b.dayKey,
34035
+ excursion = _b.excursion;
34036
+ var existingForDay = (_a = state.confirmedExcursionsByDay[dayKey]) !== null && _a !== void 0 ? _a : [];
34037
+ var existingIndex = existingForDay.findIndex(function (item) {
34038
+ return item.code === excursion.code;
34039
+ });
34040
+ if (existingIndex >= 0) {
34041
+ // replace existing confirmed version of same excursion
34042
+ existingForDay[existingIndex] = excursion;
34043
+ } else {
34044
+ existingForDay.push(excursion);
34045
+ }
34046
+ state.confirmedExcursionsByDay[dayKey] = existingForDay;
34047
+ },
34048
+ removeConfirmedExcursionForDay: function (state, action) {
34049
+ var _a;
34050
+ var _b = action.payload,
34051
+ dayKey = _b.dayKey,
34052
+ excursionCode = _b.excursionCode;
34053
+ state.confirmedExcursionsByDay[dayKey] = ((_a = state.confirmedExcursionsByDay[dayKey]) !== null && _a !== void 0 ? _a : []).filter(function (item) {
34054
+ return item.code !== excursionCode;
34055
+ });
34056
+ },
34057
+ clearConfirmedExcursionsForDay: function (state, action) {
34058
+ delete state.confirmedExcursionsByDay[action.payload.dayKey];
33891
34059
  }
33892
34060
  }
33893
34061
  });
@@ -33927,6 +34095,11 @@ var setFlyInIsOpen = _a.setFlyInIsOpen,
33927
34095
  setSelectedOutwardKey = _a.setSelectedOutwardKey,
33928
34096
  setSelectedReturnKey = _a.setSelectedReturnKey;
33929
34097
  _a.resetFlightSelection;
34098
+ var setExcursionSearchParams = _a.setExcursionSearchParams,
34099
+ setSelectedExcursionSearchResult = _a.setSelectedExcursionSearchResult,
34100
+ confirmExcursionForDay = _a.confirmExcursionForDay,
34101
+ removeConfirmedExcursionForDay = _a.removeConfirmedExcursionForDay;
34102
+ _a.clearConfirmedExcursionsForDay;
33930
34103
  var searchResultsReducer = searchResultsSlice.reducer;
33931
34104
 
33932
34105
  var ItemPicker = function (_a) {
@@ -34457,8 +34630,7 @@ var Icon$1 = function (_a) {
34457
34630
  }),
34458
34631
  title && React__default.createElement('title', null, title),
34459
34632
  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'
34633
+ 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
34634
  })
34463
34635
  );
34464
34636
  case 'ui-backforward':
@@ -34955,6 +35127,7 @@ var Icon$1 = function (_a) {
34955
35127
 
34956
35128
  var GROUP_TOUR_SERVICE_TYPE = 1;
34957
35129
  var ACCOMMODATION_SERVICE_TYPE = 3;
35130
+ var EXCURSION_SERVICE_TYPE = 4;
34958
35131
  var FLIGHT_SERVICE_TYPE = 7;
34959
35132
  var toDateOnlyString = function (value) {
34960
35133
  var date = value instanceof Date ? value : new Date(value);
@@ -35187,6 +35360,21 @@ var getSegmentTitle = function (segment) {
35187
35360
  var _a;
35188
35361
  return (_a = segment.productName) !== null && _a !== void 0 ? _a : segment.accommodationName;
35189
35362
  };
35363
+ var SERVICE_TYPE_PRIORITY = {
35364
+ 7: 0, // Flight
35365
+ 13: 1, // Transfer
35366
+ 3: 2, // Hotel
35367
+ 4: 3 // Excursion
35368
+ };
35369
+ var getServiceTypePriority = function (serviceType) {
35370
+ var _a;
35371
+ return (_a = SERVICE_TYPE_PRIORITY[serviceType !== null && serviceType !== void 0 ? serviceType : -1]) !== null && _a !== void 0 ? _a : 2;
35372
+ };
35373
+ var getDateOnlyTime = function (date) {
35374
+ if (!date) return 0;
35375
+ var parsedDate = new Date(date);
35376
+ return new Date(parsedDate.getFullYear(), parsedDate.getMonth(), parsedDate.getDate()).getTime();
35377
+ };
35190
35378
  var Itinerary = function (_a) {
35191
35379
  var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
35192
35380
  var isOpen = _a.isOpen,
@@ -35215,14 +35403,17 @@ var Itinerary = function (_a) {
35215
35403
  true
35216
35404
  ).sort(function (a, b) {
35217
35405
  var _a, _b;
35218
- var orderA = (_a = a.order) !== null && _a !== void 0 ? _a : Infinity;
35219
- var orderB = (_b = b.order) !== null && _b !== void 0 ? _b : Infinity;
35220
- // First sort by order
35221
- if (orderA !== orderB) {
35222
- return orderA - orderB;
35223
- }
35224
- // Fallback to date
35225
- return new Date(a.from).getTime() - new Date(b.from).getTime();
35406
+ var dateA = getDateOnlyTime(a.from);
35407
+ var dateB = getDateOnlyTime(b.from);
35408
+ if (dateA !== dateB) {
35409
+ return dateA - dateB;
35410
+ }
35411
+ var priorityA = getServiceTypePriority(a.serviceType);
35412
+ var priorityB = getServiceTypePriority(b.serviceType);
35413
+ if (priorityA !== priorityB) {
35414
+ return priorityA - priorityB;
35415
+ }
35416
+ return ((_a = a.order) !== null && _a !== void 0 ? _a : Infinity) - ((_b = b.order) !== null && _b !== void 0 ? _b : Infinity);
35226
35417
  });
35227
35418
  },
35228
35419
  [packagingEntry]
@@ -35345,12 +35536,12 @@ var Itinerary = function (_a) {
35345
35536
  React__default.createElement(
35346
35537
  'div',
35347
35538
  { className: 'search__filter__prices__wrapper' },
35348
- React__default.createElement('h3', { className: 'search__filter__prices--amount' }, formatPrice$2(pricePerPerson, 'EUR')),
35539
+ React__default.createElement('h3', { className: 'search__filter__prices--amount' }, formatPrice$3(pricePerPerson, 'EUR')),
35349
35540
  React__default.createElement('p', null, translations.SRP.PACKAGE_PRICE_PER_PERSON),
35350
35541
  React__default.createElement(
35351
35542
  'p',
35352
35543
  null,
35353
- React__default.createElement('strong', null, '(', formatPrice$2(totalPrice, 'EUR'), ' ', translations.SRP.TOTAL, ')')
35544
+ React__default.createElement('strong', null, '(', formatPrice$3(totalPrice, 'EUR'), ' ', translations.SRP.TOTAL, ')')
35354
35545
  )
35355
35546
  ),
35356
35547
  React__default.createElement('button', { className: 'cta' }, translations.QSM.CONFIRM)
@@ -38392,7 +38583,8 @@ var FlightsFlyIn = function (_a) {
38392
38583
  React__default.createElement(
38393
38584
  'div',
38394
38585
  { className: 'flyin__footer__price' },
38395
- 'Total price: \u20AC',
38586
+ translations.SHARED.TOTAL_PRICE,
38587
+ ': \u20AC',
38396
38588
  (_o = selectedCombinationFlight === null || selectedCombinationFlight === void 0 ? void 0 : selectedCombinationFlight.price) === null || _o === void 0
38397
38589
  ? void 0
38398
38590
  : _o.toFixed(2)
@@ -38406,7 +38598,7 @@ var FlightsFlyIn = function (_a) {
38406
38598
  );
38407
38599
  };
38408
38600
 
38409
- var formatPrice$1 = function (price, currencyCode) {
38601
+ var formatPrice$2 = function (price, currencyCode) {
38410
38602
  if (typeof price !== 'number') return '';
38411
38603
  var safeCurrency = currencyCode !== null && currencyCode !== void 0 ? currencyCode : 'EUR';
38412
38604
  return new Intl.NumberFormat('nl-BE', {
@@ -38538,7 +38730,7 @@ var AccommodationFlyIn = function (_a) {
38538
38730
  var totalPrice = selectedOptions.reduce(function (total, option) {
38539
38731
  return total + (option.price || 0);
38540
38732
  }, 0);
38541
- return formatPrice$1(totalPrice, selectedPackagingAccoSearchDetails.currencyCode);
38733
+ return formatPrice$2(totalPrice, selectedPackagingAccoSearchDetails.currencyCode);
38542
38734
  };
38543
38735
  var getPriceDifference = function (currentSelectedPrice, roomIndex, accommodationCode, regimeId) {
38544
38736
  var targetPrice = 0;
@@ -38563,7 +38755,7 @@ var AccommodationFlyIn = function (_a) {
38563
38755
  if (difference === 0) {
38564
38756
  return null;
38565
38757
  }
38566
- var formattedAbsoluteValue = formatPrice$1(Math.abs(difference), currencyCode);
38758
+ var formattedAbsoluteValue = formatPrice$2(Math.abs(difference), currencyCode);
38567
38759
  return ''.concat(difference > 0 ? '+' : '-', ' ').concat(formattedAbsoluteValue);
38568
38760
  };
38569
38761
  var getPriceDifferenceClassName = function (difference) {
@@ -38681,7 +38873,7 @@ var AccommodationFlyIn = function (_a) {
38681
38873
  React__default.createElement(
38682
38874
  'div',
38683
38875
  { className: 'flyin__footer' },
38684
- React__default.createElement('div', { className: 'flyin__footer__price' }, 'Total price: ', calculateTotalPrice()),
38876
+ React__default.createElement('div', { className: 'flyin__footer__price' }, translations.SHARED.TOTAL_PRICE, ': ', calculateTotalPrice()),
38685
38877
  React__default.createElement(
38686
38878
  'div',
38687
38879
  { className: 'flyin__button-wrapper' },
@@ -38840,7 +39032,7 @@ var AccommodationFlyIn = function (_a) {
38840
39032
  // )} */}
38841
39033
  // </div>
38842
39034
  // <div className="flyin__footer">
38843
- // <div className="flyin__footer__price">Total price: €</div>
39035
+ // <div className="flyin__footer__price">{translations.SHARED.TOTAL_PRICE}: €</div>
38844
39036
  // <div className="flyin__button-wrapper">
38845
39037
  // <button className="cta cta--select" onClick={handleConfirm}>
38846
39038
  // Toevoegen
@@ -38850,7 +39042,7 @@ var AccommodationFlyIn = function (_a) {
38850
39042
  // </>
38851
39043
  };
38852
39044
 
38853
- var formatPrice = function (price, currencyCode) {
39045
+ var formatPrice$1 = function (price, currencyCode) {
38854
39046
  if (currencyCode === void 0) {
38855
39047
  currencyCode = 'EUR';
38856
39048
  }
@@ -39033,7 +39225,7 @@ var GroupTourFlyIn = function (_a) {
39033
39225
  if (difference === 0) {
39034
39226
  return null;
39035
39227
  }
39036
- var formattedAbsoluteValue = formatPrice(Math.abs(difference), currencyCode);
39228
+ var formattedAbsoluteValue = formatPrice$1(Math.abs(difference), currencyCode);
39037
39229
  return ''.concat(difference > 0 ? '+' : '-', ' ').concat(formattedAbsoluteValue);
39038
39230
  };
39039
39231
  var getPriceDifferenceClassName = function (difference) {
@@ -39162,8 +39354,9 @@ var GroupTourFlyIn = function (_a) {
39162
39354
  React__default.createElement(
39163
39355
  'div',
39164
39356
  { className: 'flyin__footer__price' },
39165
- 'Total price: ',
39166
- formatPrice(adjustedTotalPrice, bookingPackageDetails.currencyCode)
39357
+ translations.SHARED.TOTAL_PRICE,
39358
+ ': ',
39359
+ formatPrice$1(adjustedTotalPrice, bookingPackageDetails.currencyCode)
39167
39360
  ),
39168
39361
  React__default.createElement(
39169
39362
  'div',
@@ -43480,7 +43673,7 @@ var getBaseHotelResult = function (searchResult, cmsItem, languageCode, translat
43480
43673
  searchResult.countryName,
43481
43674
  (_h = cmsItem === null || cmsItem === void 0 ? void 0 : cmsItem.parentItem) === null || _h === void 0 ? void 0 : _h.name
43482
43675
  ),
43483
- price: formatPrice$2(searchResult.price, searchResult.currencyCode, languageCode),
43676
+ price: formatPrice$3(searchResult.price, searchResult.currencyCode, languageCode),
43484
43677
  ctaText: translations === null || translations === void 0 ? void 0 : translations.SRP.VIEW_DETAILS
43485
43678
  };
43486
43679
  };
@@ -43710,6 +43903,24 @@ var HotelAccommodationResults = function (_a) {
43710
43903
  var selectSearchResultsState = function (state) {
43711
43904
  return state.searchResults;
43712
43905
  };
43906
+ var selectPackagingAccoResults = createSelector([selectSearchResultsState], function (state) {
43907
+ return state.packagingAccoResults;
43908
+ });
43909
+ var selectSelectedPackagingAccoResultCode = createSelector([selectSearchResultsState], function (state) {
43910
+ return state.selectedPackagingAccoResultCode;
43911
+ });
43912
+ var selectSelectedPackagingAccoResult = createSelector(
43913
+ [selectPackagingAccoResults, selectSelectedPackagingAccoResultCode],
43914
+ function (packagingAccoResults, selectedPackagingAccoResultCode) {
43915
+ var _a;
43916
+ if (!selectedPackagingAccoResultCode) return null;
43917
+ return (_a = packagingAccoResults.find(function (accoResult) {
43918
+ return accoResult.code === selectedPackagingAccoResultCode;
43919
+ })) !== null && _a !== void 0
43920
+ ? _a
43921
+ : null;
43922
+ }
43923
+ );
43713
43924
  var selectPackagingFlightResults = createSelector([selectSearchResultsState], function (state) {
43714
43925
  return state.packagingFlightResults;
43715
43926
  });
@@ -43830,7 +44041,7 @@ var IndependentFlightOption = function (_a) {
43830
44041
  { className: 'price' },
43831
44042
  translations.QSM.ROUNDTRIP + ' ' + translations.SRP.PRICE,
43832
44043
  '\u00A0',
43833
- formatPrice$2(
44044
+ formatPrice$3(
43834
44045
  price,
43835
44046
  'EUR',
43836
44047
  (_c = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _c !== void 0 ? _c : 'en-GB'
@@ -43843,7 +44054,7 @@ var IndependentFlightOption = function (_a) {
43843
44054
  { className: 'price' },
43844
44055
  priceDifference > 0 ? '+' : '-',
43845
44056
  '\u00A0',
43846
- formatPrice$2(
44057
+ formatPrice$3(
43847
44058
  Math.abs(priceDifference),
43848
44059
  'EUR',
43849
44060
  (_d = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _d !== void 0 ? _d : 'en-GB'
@@ -44538,6 +44749,567 @@ var PackageingFlightsFlyIn = function (_a) {
44538
44749
  );
44539
44750
  };
44540
44751
 
44752
+ var ExcursionResults = function (_a) {
44753
+ var _b;
44754
+ _a.isFlyIn;
44755
+ var activeSearchSeed = _a.activeSearchSeed;
44756
+ var context = useContext(SearchResultsConfigurationContext);
44757
+ var dispatch = useDispatch();
44758
+ var _c = useState(false),
44759
+ isLoading = _c[0],
44760
+ setIsLoading = _c[1];
44761
+ var _d = useState(null),
44762
+ excursions = _d[0],
44763
+ setExcursions = _d[1];
44764
+ var _e = useSelector(function (state) {
44765
+ return state.searchResults;
44766
+ }),
44767
+ flyInIsOpen = _e.flyInIsOpen,
44768
+ flyInType = _e.flyInType,
44769
+ excursionSearchParams = _e.excursionSearchParams,
44770
+ transactionId = _e.transactionId;
44771
+ useEffect(
44772
+ function () {
44773
+ if (!context || !activeSearchSeed || !excursionSearchParams) return;
44774
+ (function () {
44775
+ return __awaiter(void 0, void 0, void 0, function () {
44776
+ var config, destination, allPax, searchRequest, packageExcursionSearchResults, err_1;
44777
+ var _a, _b, _c, _d, _e;
44778
+ return __generator(this, function (_f) {
44779
+ switch (_f.label) {
44780
+ case 0:
44781
+ _f.trys.push([0, 2, 3, 4]);
44782
+ setIsLoading(true);
44783
+ console.log('Excursion search params changed, fetching excursions...', excursionSearchParams);
44784
+ config = {
44785
+ host: context.tideConnection.host,
44786
+ apiKey: context.tideConnection.apiKey
44787
+ };
44788
+ destination = excursionSearchParams.locationId
44789
+ ? { id: Number(excursionSearchParams.locationId), type: 'location' }
44790
+ : excursionSearchParams.oordId
44791
+ ? { id: Number(excursionSearchParams.oordId), type: 'oord' }
44792
+ : excursionSearchParams.regionId
44793
+ ? { id: Number(excursionSearchParams.regionId), type: 'region' }
44794
+ : excursionSearchParams.countryId
44795
+ ? { id: Number(excursionSearchParams.countryId), type: 'country' }
44796
+ : { id: 0, type: null };
44797
+ allPax = activeSearchSeed.rooms.flatMap(function (room) {
44798
+ return room.pax;
44799
+ });
44800
+ searchRequest = {
44801
+ transactionId: transactionId !== null && transactionId !== void 0 ? transactionId : '',
44802
+ officeId: (_a = context.tideConnection.officeId) !== null && _a !== void 0 ? _a : 1,
44803
+ agentId: (_b = context.agentId) !== null && _b !== void 0 ? _b : null,
44804
+ portalId: (_c = context.portalId) !== null && _c !== void 0 ? _c : null,
44805
+ catalogueId: (_d = context.searchConfiguration.defaultCatalogueId) !== null && _d !== void 0 ? _d : 0,
44806
+ searchConfigurationId: context.searchConfiguration.id,
44807
+ language: (_e = context.languageCode) !== null && _e !== void 0 ? _e : 'en-GB',
44808
+ serviceType: EXCURSION_SERVICE_TYPE,
44809
+ fromDate: excursionSearchParams.fromDate,
44810
+ toDate: excursionSearchParams.toDate,
44811
+ destination: {
44812
+ id: destination.id,
44813
+ isCountry: destination.type === 'country',
44814
+ isRegion: destination.type === 'region',
44815
+ isOord: destination.type === 'oord',
44816
+ isLocation: destination.type === 'location',
44817
+ isAirport: false,
44818
+ code: ''
44819
+ },
44820
+ productCode: '',
44821
+ // rooms: activeSearchSeed.rooms.map((room) => ({
44822
+ // travellers: room.pax.map((pax) => ({
44823
+ // id: pax.id,
44824
+ // age: pax.age,
44825
+ // dateOfBirth: pax.dateOfBirth
44826
+ // }))
44827
+ // })),
44828
+ rooms: [
44829
+ {
44830
+ travellers: allPax.map(function (pax) {
44831
+ return {
44832
+ id: pax.id,
44833
+ age: pax.age,
44834
+ dateOfBirth: pax.dateOfBirth
44835
+ };
44836
+ })
44837
+ }
44838
+ ],
44839
+ tagIds: []
44840
+ };
44841
+ return [4 /*yield*/, build.searchPackagingExcursions(config, searchRequest)];
44842
+ case 1:
44843
+ packageExcursionSearchResults = _f.sent();
44844
+ console.log('Excursion search results', packageExcursionSearchResults);
44845
+ setExcursions(packageExcursionSearchResults);
44846
+ return [3 /*break*/, 4];
44847
+ case 2:
44848
+ err_1 = _f.sent();
44849
+ console.error('Excursion search failed', err_1);
44850
+ return [3 /*break*/, 4];
44851
+ case 3:
44852
+ setIsLoading(false);
44853
+ return [7 /*endfinally*/];
44854
+ case 4:
44855
+ return [2 /*return*/];
44856
+ }
44857
+ });
44858
+ });
44859
+ })();
44860
+ },
44861
+ [context, activeSearchSeed, excursionSearchParams, transactionId]
44862
+ );
44863
+ if (!context || !activeSearchSeed) {
44864
+ return null;
44865
+ }
44866
+ if (!flyInIsOpen || flyInType !== 'excursion-results') {
44867
+ return null;
44868
+ }
44869
+ var translations = getTranslations((_b = context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
44870
+ var handleChange = function (excursion) {
44871
+ console.log('Selected excursion', excursion);
44872
+ dispatch(setFlyInType('excursion-details'));
44873
+ dispatch(setSelectedExcursionSearchResult(excursion));
44874
+ };
44875
+ return isLoading
44876
+ ? React__default.createElement(Spinner, null)
44877
+ : React__default.createElement(
44878
+ 'div',
44879
+ { className: 'flyin__content flyin__content--columns' },
44880
+ React__default.createElement(
44881
+ 'div',
44882
+ { className: 'search__results__wrapper' },
44883
+ React__default.createElement(
44884
+ 'div',
44885
+ { className: 'search__result-row' },
44886
+ React__default.createElement(
44887
+ 'span',
44888
+ { className: 'search__result-row-text' },
44889
+ !isLoading &&
44890
+ React__default.createElement(
44891
+ React__default.Fragment,
44892
+ null,
44893
+ (excursions === null || excursions === void 0 ? void 0 : excursions.length) && excursions.length,
44894
+ '\u00A0',
44895
+ translations.SRP.TOTAL_RESULTS_LABEL
44896
+ )
44897
+ )
44898
+ ),
44899
+ React__default.createElement(
44900
+ 'div',
44901
+ { className: 'search__results__cards search__results__cards--compact' },
44902
+ excursions &&
44903
+ excursions.length > 0 &&
44904
+ excursions.map(function (excursion) {
44905
+ return React__default.createElement(
44906
+ 'div',
44907
+ {
44908
+ key: excursion.code,
44909
+ className: 'search__result-card__wrapper search__result-card__wrapper--custom',
44910
+ onMouseEnter: function (e) {
44911
+ return (e.currentTarget.style.transform = 'scale(1.02)');
44912
+ },
44913
+ onMouseLeave: function (e) {
44914
+ return (e.currentTarget.style.transform = 'scale(1)');
44915
+ }
44916
+ },
44917
+ excursion.contents
44918
+ ? React__default.createElement('div', { dangerouslySetInnerHTML: { __html: he.decode(excursion.contents) } })
44919
+ : 'no contents',
44920
+ React__default.createElement(
44921
+ 'div',
44922
+ { className: 'search__result-card__footer' },
44923
+ React__default.createElement(
44924
+ 'button',
44925
+ {
44926
+ type: 'button',
44927
+ className: 'cta cta--select',
44928
+ onClick: function () {
44929
+ return handleChange(excursion);
44930
+ }
44931
+ },
44932
+ translations === null || translations === void 0 ? void 0 : translations.SHARED.SELECT
44933
+ )
44934
+ )
44935
+ );
44936
+ })
44937
+ )
44938
+ )
44939
+ );
44940
+ };
44941
+
44942
+ var formatPrice = function (price, currencyCode) {
44943
+ if (typeof price !== 'number') return '';
44944
+ return new Intl.NumberFormat('nl-BE', {
44945
+ style: 'currency',
44946
+ currency: currencyCode !== null && currencyCode !== void 0 ? currencyCode : 'EUR'
44947
+ }).format(price);
44948
+ };
44949
+ var getExcursionDayKey = function (date) {
44950
+ var parsed = typeof date === 'string' ? parseISO(date) : date;
44951
+ return format$1(parsed, 'yyyy-MM-dd');
44952
+ };
44953
+ var getOptionPaxIds = function (option) {
44954
+ return Array.isArray(option.paxIds)
44955
+ ? Array.from(new Set(option.paxIds)).sort(function (a, b) {
44956
+ return a - b;
44957
+ })
44958
+ : [];
44959
+ };
44960
+ var optionAppliesToPax = function (option, paxId) {
44961
+ return getOptionPaxIds(option).includes(paxId);
44962
+ };
44963
+ var optionAppliesToAllTravellers = function (option, travellerCount) {
44964
+ var paxIds = getOptionPaxIds(option);
44965
+ var expected = Array.from({ length: travellerCount }, function (_, i) {
44966
+ return i;
44967
+ });
44968
+ return (
44969
+ paxIds.length === expected.length &&
44970
+ paxIds.every(function (id, index) {
44971
+ return id === expected[index];
44972
+ })
44973
+ );
44974
+ };
44975
+ var groupOptionsByExcursion = function (options) {
44976
+ var groupedMap = new Map();
44977
+ options.forEach(function (option) {
44978
+ var key = option.accommodationCode;
44979
+ if (!groupedMap.has(key)) {
44980
+ groupedMap.set(key, {
44981
+ accommodationCode: option.accommodationCode,
44982
+ accommodationName: option.accommodationName,
44983
+ options: []
44984
+ });
44985
+ }
44986
+ groupedMap.get(key).options.push(option);
44987
+ });
44988
+ return Array.from(groupedMap.values());
44989
+ };
44990
+ var ExcursionDetails = function () {
44991
+ var _a;
44992
+ var context = useContext(SearchResultsConfigurationContext);
44993
+ var dispatch = useDispatch();
44994
+ var _b = useSelector(function (state) {
44995
+ return state.searchResults;
44996
+ }),
44997
+ selectedExcursionSearchResult = _b.selectedExcursionSearchResult,
44998
+ editablePackagingEntry = _b.editablePackagingEntry,
44999
+ excursionSearchParams = _b.excursionSearchParams;
45000
+ if (
45001
+ !context ||
45002
+ !selectedExcursionSearchResult ||
45003
+ !editablePackagingEntry ||
45004
+ !(excursionSearchParams === null || excursionSearchParams === void 0 ? void 0 : excursionSearchParams.date)
45005
+ ) {
45006
+ return null;
45007
+ }
45008
+ var translations = getTranslations((_a = context.languageCode) !== null && _a !== void 0 ? _a : 'en-GB');
45009
+ var travellerCount = editablePackagingEntry.pax.length;
45010
+ var allOptions = useMemo(
45011
+ function () {
45012
+ return selectedExcursionSearchResult.rooms.flatMap(function (room) {
45013
+ var _a;
45014
+ return (_a = room.options) !== null && _a !== void 0 ? _a : [];
45015
+ });
45016
+ },
45017
+ [selectedExcursionSearchResult]
45018
+ );
45019
+ var sharedOptions = useMemo(
45020
+ function () {
45021
+ return allOptions.filter(function (option) {
45022
+ return optionAppliesToAllTravellers(option, travellerCount);
45023
+ });
45024
+ },
45025
+ [allOptions, travellerCount]
45026
+ );
45027
+ var sharedExcursions = useMemo(
45028
+ function () {
45029
+ return groupOptionsByExcursion(sharedOptions);
45030
+ },
45031
+ [sharedOptions]
45032
+ );
45033
+ var paxGroups = useMemo(
45034
+ function () {
45035
+ return editablePackagingEntry.pax.map(function (pax) {
45036
+ var paxOptions = allOptions.filter(function (option) {
45037
+ return optionAppliesToPax(option, pax.id) && !optionAppliesToAllTravellers(option, travellerCount);
45038
+ });
45039
+ return {
45040
+ pax: pax,
45041
+ paxId: pax.id,
45042
+ excursions: groupOptionsByExcursion(paxOptions)
45043
+ };
45044
+ });
45045
+ },
45046
+ [editablePackagingEntry.pax, allOptions, travellerCount]
45047
+ );
45048
+ var getSelectedSharedOption = function () {
45049
+ return sharedOptions.find(function (option) {
45050
+ return option.isSelected;
45051
+ });
45052
+ };
45053
+ var getSelectedSharedOptionForExcursion = function (accommodationCode) {
45054
+ return sharedOptions.find(function (option) {
45055
+ return option.accommodationCode === accommodationCode && option.isSelected;
45056
+ });
45057
+ };
45058
+ var getSelectedOptionForPax = function (paxId) {
45059
+ return allOptions.find(function (option) {
45060
+ return optionAppliesToPax(option, paxId) && !optionAppliesToAllTravellers(option, travellerCount) && option.isSelected;
45061
+ });
45062
+ };
45063
+ var getSelectedOptionForExcursion = function (paxId, accommodationCode) {
45064
+ return allOptions.find(function (option) {
45065
+ return (
45066
+ optionAppliesToPax(option, paxId) &&
45067
+ !optionAppliesToAllTravellers(option, travellerCount) &&
45068
+ option.accommodationCode === accommodationCode &&
45069
+ option.isSelected
45070
+ );
45071
+ });
45072
+ };
45073
+ var handlePick = function (selectedGuid, paxId) {
45074
+ var updatedExcursionSearchResult = __assign(__assign({}, selectedExcursionSearchResult), {
45075
+ rooms: selectedExcursionSearchResult.rooms.map(function (room) {
45076
+ return __assign(__assign({}, room), {
45077
+ options: room.options.map(function (option) {
45078
+ var isSharedOption = optionAppliesToAllTravellers(option, travellerCount);
45079
+ if (paxId === undefined) {
45080
+ if (!isSharedOption) {
45081
+ return option;
45082
+ }
45083
+ return __assign(__assign({}, option), { isSelected: option.guid === selectedGuid });
45084
+ }
45085
+ if (isSharedOption || !optionAppliesToPax(option, paxId)) {
45086
+ return option;
45087
+ }
45088
+ return __assign(__assign({}, option), { isSelected: option.guid === selectedGuid });
45089
+ })
45090
+ });
45091
+ })
45092
+ });
45093
+ dispatch(setSelectedExcursionSearchResult(updatedExcursionSearchResult));
45094
+ };
45095
+ var calculateTotalPrice = function () {
45096
+ var selectedOptions = allOptions.filter(function (option) {
45097
+ return option.isSelected;
45098
+ });
45099
+ var totalPrice = selectedOptions.reduce(function (total, option) {
45100
+ return total + (option.price || 0);
45101
+ }, 0);
45102
+ return formatPrice(totalPrice, selectedExcursionSearchResult.currencyCode);
45103
+ };
45104
+ var getSharedPriceDifference = function (accommodationCode) {
45105
+ var currentSelectedShared = getSelectedSharedOption();
45106
+ var targetPrice = 0;
45107
+ var selectedOption = getSelectedSharedOptionForExcursion(accommodationCode);
45108
+ if (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.price) {
45109
+ targetPrice = selectedOption.price;
45110
+ } else {
45111
+ var firstOption = sharedOptions.find(function (option) {
45112
+ return option.accommodationCode === accommodationCode;
45113
+ });
45114
+ targetPrice = (firstOption === null || firstOption === void 0 ? void 0 : firstOption.price) || 0;
45115
+ }
45116
+ return targetPrice - ((currentSelectedShared === null || currentSelectedShared === void 0 ? void 0 : currentSelectedShared.price) || 0);
45117
+ };
45118
+ var getPriceDifference = function (currentSelectedPrice, paxId, accommodationCode) {
45119
+ var targetPrice = 0;
45120
+ var selectedOption = getSelectedOptionForExcursion(paxId, accommodationCode);
45121
+ if (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.price) {
45122
+ targetPrice = selectedOption.price;
45123
+ } else {
45124
+ var firstOption = allOptions.find(function (option) {
45125
+ return optionAppliesToPax(option, paxId) && !optionAppliesToAllTravellers(option, travellerCount) && option.accommodationCode === accommodationCode;
45126
+ });
45127
+ targetPrice = (firstOption === null || firstOption === void 0 ? void 0 : firstOption.price) || 0;
45128
+ }
45129
+ return targetPrice - (currentSelectedPrice || 0);
45130
+ };
45131
+ var formatPriceDifference = function (difference, currencyCode) {
45132
+ if (difference === 0) {
45133
+ return null;
45134
+ }
45135
+ var formattedAbsoluteValue = formatPrice(Math.abs(difference), currencyCode);
45136
+ return ''.concat(difference > 0 ? '+' : '-', ' ').concat(formattedAbsoluteValue);
45137
+ };
45138
+ var getPriceDifferenceClassName = function (difference) {
45139
+ if (difference < 0) {
45140
+ return 'flyin__acco__price flyin__acco__price--decrease';
45141
+ }
45142
+ if (difference > 0) {
45143
+ return 'flyin__acco__price flyin__acco__price--increase';
45144
+ }
45145
+ return 'flyin__acco__price';
45146
+ };
45147
+ var handleConfirm = function () {
45148
+ var dayKey = getExcursionDayKey(excursionSearchParams.date);
45149
+ dispatch(
45150
+ confirmExcursionForDay({
45151
+ dayKey: dayKey,
45152
+ excursion: selectedExcursionSearchResult
45153
+ })
45154
+ );
45155
+ dispatch(setFlyInIsOpen(false));
45156
+ };
45157
+ return React__default.createElement(
45158
+ React__default.Fragment,
45159
+ null,
45160
+ React__default.createElement(
45161
+ 'div',
45162
+ { className: 'flyin__content' },
45163
+ sharedExcursions.length > 0 &&
45164
+ React__default.createElement(
45165
+ 'div',
45166
+ { className: 'flyin__acco' },
45167
+ React__default.createElement('h3', { className: 'flyin__acco__room-title' }, translations.QSM.ALL_TRAVELERS),
45168
+ React__default.createElement(
45169
+ 'div',
45170
+ { className: 'flyin__acco__cards' },
45171
+ sharedExcursions.map(function (excursion) {
45172
+ var selectedOption = getSelectedSharedOptionForExcursion(excursion.accommodationCode);
45173
+ var priceDifference = getSharedPriceDifference(excursion.accommodationCode);
45174
+ return React__default.createElement(
45175
+ 'div',
45176
+ { className: 'flyin__acco__card', key: 'all-'.concat(excursion.accommodationCode) },
45177
+ React__default.createElement(
45178
+ 'div',
45179
+ { className: 'flyin__acco__content' },
45180
+ React__default.createElement('h4', { className: 'flyin__acco__title' }, excursion.accommodationName)
45181
+ ),
45182
+ React__default.createElement(
45183
+ 'div',
45184
+ { className: 'flyin__acco__footer' },
45185
+ React__default.createElement(
45186
+ 'div',
45187
+ { className: 'flyin__acco__footer__actions' },
45188
+ React__default.createElement(
45189
+ 'button',
45190
+ {
45191
+ className: selectedOption ? 'cta cta--select cta--selected' : 'cta cta--select',
45192
+ onClick: function () {
45193
+ var _a;
45194
+ return handlePick(
45195
+ selectedOption ? selectedOption.guid : (_a = first(excursion.options)) === null || _a === void 0 ? void 0 : _a.guid
45196
+ );
45197
+ }
45198
+ },
45199
+ selectedOption
45200
+ ? translations === null || translations === void 0
45201
+ ? void 0
45202
+ : translations.SHARED.SELECTED
45203
+ : translations === null || translations === void 0
45204
+ ? void 0
45205
+ : translations.SHARED.SELECT
45206
+ ),
45207
+ React__default.createElement(
45208
+ 'div',
45209
+ { className: 'flyin__acco__price__wrapper' },
45210
+ React__default.createElement(
45211
+ 'span',
45212
+ { className: getPriceDifferenceClassName(priceDifference) },
45213
+ formatPriceDifference(priceDifference, selectedExcursionSearchResult.currencyCode)
45214
+ )
45215
+ )
45216
+ )
45217
+ )
45218
+ );
45219
+ })
45220
+ )
45221
+ ),
45222
+ paxGroups.map(function (_a) {
45223
+ var pax = _a.pax,
45224
+ paxId = _a.paxId,
45225
+ excursions = _a.excursions;
45226
+ if (excursions.length === 0) {
45227
+ return null;
45228
+ }
45229
+ var selectedPaxOption = getSelectedOptionForPax(paxId);
45230
+ return React__default.createElement(
45231
+ 'div',
45232
+ { className: 'flyin__acco', key: 'pax-'.concat(pax.id) },
45233
+ React__default.createElement('h3', { className: 'flyin__acco__room-title' }, translations.SUMMARY.TRAVELER, ' ', pax.id + 1),
45234
+ React__default.createElement(
45235
+ 'div',
45236
+ { className: 'flyin__acco__cards' },
45237
+ excursions.map(function (excursion) {
45238
+ var selectedOption = getSelectedOptionForExcursion(paxId, excursion.accommodationCode);
45239
+ var priceDifference = getPriceDifference(
45240
+ selectedPaxOption === null || selectedPaxOption === void 0 ? void 0 : selectedPaxOption.price,
45241
+ paxId,
45242
+ excursion.accommodationCode
45243
+ );
45244
+ return React__default.createElement(
45245
+ 'div',
45246
+ { className: 'flyin__acco__card', key: ''.concat(pax.id, '-').concat(excursion.accommodationCode) },
45247
+ React__default.createElement(
45248
+ 'div',
45249
+ { className: 'flyin__acco__content' },
45250
+ React__default.createElement('h4', { className: 'flyin__acco__title' }, excursion.accommodationName)
45251
+ ),
45252
+ React__default.createElement(
45253
+ 'div',
45254
+ { className: 'flyin__acco__footer' },
45255
+ React__default.createElement(
45256
+ 'div',
45257
+ { className: 'flyin__acco__footer__actions' },
45258
+ React__default.createElement(
45259
+ 'button',
45260
+ {
45261
+ className:
45262
+ (selectedPaxOption === null || selectedPaxOption === void 0 ? void 0 : selectedPaxOption.accommodationCode) ===
45263
+ excursion.accommodationCode
45264
+ ? 'cta cta--select cta--selected'
45265
+ : 'cta cta--select',
45266
+ onClick: function () {
45267
+ var _a;
45268
+ return handlePick(
45269
+ selectedOption ? selectedOption.guid : (_a = first(excursion.options)) === null || _a === void 0 ? void 0 : _a.guid,
45270
+ paxId
45271
+ );
45272
+ }
45273
+ },
45274
+ (selectedPaxOption === null || selectedPaxOption === void 0 ? void 0 : selectedPaxOption.accommodationCode) ===
45275
+ excursion.accommodationCode
45276
+ ? translations === null || translations === void 0
45277
+ ? void 0
45278
+ : translations.SHARED.SELECTED
45279
+ : translations === null || translations === void 0
45280
+ ? void 0
45281
+ : translations.SHARED.SELECT
45282
+ ),
45283
+ React__default.createElement(
45284
+ 'div',
45285
+ { className: 'flyin__acco__price__wrapper' },
45286
+ React__default.createElement(
45287
+ 'span',
45288
+ { className: getPriceDifferenceClassName(priceDifference) },
45289
+ formatPriceDifference(priceDifference, selectedExcursionSearchResult.currencyCode)
45290
+ )
45291
+ )
45292
+ )
45293
+ )
45294
+ );
45295
+ })
45296
+ )
45297
+ );
45298
+ })
45299
+ ),
45300
+ React__default.createElement(
45301
+ 'div',
45302
+ { className: 'flyin__footer' },
45303
+ React__default.createElement('div', { className: 'flyin__footer__price' }, translations.SHARED.TOTAL_PRICE, ': ', calculateTotalPrice()),
45304
+ React__default.createElement(
45305
+ 'button',
45306
+ { type: 'button', className: 'cta cta--primary', onClick: handleConfirm },
45307
+ translations === null || translations === void 0 ? void 0 : translations.QSM.CONFIRM
45308
+ )
45309
+ )
45310
+ );
45311
+ };
45312
+
44541
45313
  var FlyIn = function (_a) {
44542
45314
  var _b;
44543
45315
  var srpType = _a.srpType,
@@ -44550,7 +45322,8 @@ var FlyIn = function (_a) {
44550
45322
  flyInType = _a.flyInType,
44551
45323
  isPackageEditFlow = _a.isPackageEditFlow,
44552
45324
  handleConfirm = _a.handleConfirm,
44553
- sortByTypes = _a.sortByTypes;
45325
+ sortByTypes = _a.sortByTypes,
45326
+ activeSearchSeed = _a.activeSearchSeed;
44554
45327
  var dispatch = useDispatch();
44555
45328
  var context = useContext(SearchResultsConfigurationContext);
44556
45329
  var language = (_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB';
@@ -44608,14 +45381,17 @@ var FlyIn = function (_a) {
44608
45381
  onCancelSearch();
44609
45382
  } else {
44610
45383
  dispatch(setSelectedSearchResult(null));
44611
- dispatch(setSelectedPackagingAccoResult(null));
44612
45384
  }
44613
45385
  dispatch(setFlyInType('acco-details'));
44614
45386
  setIsOpen(false);
44615
45387
  }
44616
45388
  };
44617
45389
  var handleGoBack = function () {
44618
- dispatch(setFlyInType('acco-results'));
45390
+ if (flyInType === 'acco-details') {
45391
+ dispatch(setFlyInType('acco-results'));
45392
+ } else if (flyInType === 'excursion-details') {
45393
+ dispatch(setFlyInType('excursion-results'));
45394
+ }
44619
45395
  };
44620
45396
  var handleSortChange = function (newSortKey, direction) {
44621
45397
  if (sortByTypes === undefined) return;
@@ -44659,7 +45435,8 @@ var FlyIn = function (_a) {
44659
45435
  srpType === build.PortalQsmType.AccommodationAndFlight &&
44660
45436
  flyInType === 'flight-return-results' &&
44661
45437
  ''.concat(translations.SRP.SELECT, ' ').concat(translations.FLIGHTS_FORM.RETURN_FLIGHT),
44662
- srpType === build.PortalQsmType.AccommodationAndFlight && flyInType === 'flight-details' && 'Select your fare'
45438
+ srpType === build.PortalQsmType.AccommodationAndFlight && flyInType === 'flight-details' && 'Select your fare',
45439
+ flyInType === 'excursion-results' || (flyInType === 'excursion-details' && 'Select excursion')
44663
45440
  ),
44664
45441
  React__default.createElement(
44665
45442
  'span',
@@ -44672,8 +45449,7 @@ var FlyIn = function (_a) {
44672
45449
  React__default.createElement(Icon, { name: 'ui-close', width: 30, height: 30, 'aria-hidden': 'true' })
44673
45450
  )
44674
45451
  ),
44675
- isPackageEditFlow &&
44676
- flyInType === 'acco-details' &&
45452
+ ((isPackageEditFlow && flyInType === 'acco-details') || flyInType === 'excursion-details') &&
44677
45453
  React__default.createElement(
44678
45454
  'div',
44679
45455
  { className: 'flyin__content-title-row' },
@@ -44754,6 +45530,10 @@ var FlyIn = function (_a) {
44754
45530
  srpType === build.PortalQsmType.AccommodationAndFlight &&
44755
45531
  (flyInType === 'flight-outward-results' || flyInType === 'flight-return-results') &&
44756
45532
  React__default.createElement(PackageingFlightsFlyIn, { isOpen: isOpen, setIsOpen: setIsOpen }),
45533
+ srpType === build.PortalQsmType.AccommodationAndFlight &&
45534
+ flyInType === 'excursion-results' &&
45535
+ React__default.createElement(ExcursionResults, { isFlyIn: true, activeSearchSeed: activeSearchSeed }),
45536
+ srpType === build.PortalQsmType.AccommodationAndFlight && flyInType === 'excursion-details' && React__default.createElement(ExcursionDetails, null),
44757
45537
  srpType === build.PortalQsmType.GroupTour &&
44758
45538
  React__default.createElement(GroupTourFlyIn, { isLoading: detailsLoading, isOpen: isOpen, setIsOpen: setIsOpen })
44759
45539
  )
@@ -45100,7 +45880,7 @@ var PairedFlightOption = function (_a) {
45100
45880
  React__default.createElement(
45101
45881
  'span',
45102
45882
  { className: 'price' },
45103
- formatPrice$2(
45883
+ formatPrice$3(
45104
45884
  item.price,
45105
45885
  'EUR',
45106
45886
  (_c = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _c !== void 0 ? _c : 'en-GB'
@@ -46902,7 +47682,7 @@ var GroupTourCard = function (_a) {
46902
47682
  React__default.createElement(
46903
47683
  'div',
46904
47684
  { className: 'search__result-card__allotment__price' },
46905
- formatPrice$2(result.price, result.currencyCode, languageCode),
47685
+ formatPrice$3(result.price, result.currencyCode, languageCode),
46906
47686
  ' ',
46907
47687
  translations.PRODUCT.PER_PERSON
46908
47688
  )
@@ -47684,33 +48464,98 @@ var getRequestRoomsFromPackagingSegments = function (entry, segments) {
47684
48464
  });
47685
48465
  };
47686
48466
 
47687
- var formatNodeDate = function (date) {
47688
- if (!date) return '';
47689
- try {
47690
- return new Intl.DateTimeFormat('nl-BE', {
47691
- weekday: 'long',
47692
- day: '2-digit',
47693
- month: '2-digit',
47694
- year: 'numeric'
47695
- }).format(date);
47696
- } catch (_a) {
47697
- return '';
47698
- }
47699
- };
47700
48467
  var escapeHtml = function (value) {
47701
48468
  if (!value) return '';
47702
48469
  return value.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#39;');
47703
48470
  };
47704
- var buildItineraryHtml = function (itinerary) {
48471
+ var getNodeDayRange = function (node) {
48472
+ var _a, _b;
48473
+ var startDay = Number((_a = node.startDay) !== null && _a !== void 0 ? _a : 0);
48474
+ var endDay = Number((_b = node.endDay) !== null && _b !== void 0 ? _b : startDay);
48475
+ return { startDay: startDay, endDay: endDay };
48476
+ };
48477
+ var getItemDuration = function (item) {
48478
+ var _a;
48479
+ var duration = Number((_a = item.productDuration) !== null && _a !== void 0 ? _a : 0);
48480
+ return Number.isFinite(duration) && duration > 0 ? duration : 0;
48481
+ };
48482
+ var isAccommodationItem = function (item) {
48483
+ var _a;
48484
+ return getItemDuration(item) > 1 && ((_a = item.templateName) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes('hotel'));
48485
+ };
48486
+ var getAccommodationName = function (item) {
48487
+ return item.title || 'Onbekende accommodatie';
48488
+ };
48489
+ var getItemDeduplicationKey = function (item) {
48490
+ var _a;
48491
+ (_a = item.templateName) === null || _a === void 0 ? void 0 : _a.toLowerCase();
48492
+ // if (templateName === 'hotel') {
48493
+ // return [item.templateName, item.productCode, item.accommodationCode, item.regimeCode].filter(Boolean).join('|');
48494
+ // }
48495
+ // if (templateName === 'excursion') {
48496
+ // return [item.templateName, item.productCode].filter(Boolean).join('|');
48497
+ // }
48498
+ return [item.templateName, item.productCode, item.title].filter(Boolean).join('|');
48499
+ };
48500
+ var getUniqueItems = function (items) {
48501
+ if (items === void 0) {
48502
+ items = [];
48503
+ }
48504
+ var seen = new Set();
48505
+ return items.filter(function (item) {
48506
+ var key = getItemDeduplicationKey(item) || item.itemGuid;
48507
+ if (seen.has(key)) {
48508
+ return false;
48509
+ }
48510
+ seen.add(key);
48511
+ return true;
48512
+ });
48513
+ };
48514
+ var findAccommodationForDay = function (nodes, currentDay) {
48515
+ var _a;
48516
+ for (var _i = 0, _b = nodes !== null && nodes !== void 0 ? nodes : []; _i < _b.length; _i++) {
48517
+ var node = _b[_i];
48518
+ var startDay = getNodeDayRange(node).startDay;
48519
+ var uniqueItems = getUniqueItems((_a = node.items) !== null && _a !== void 0 ? _a : []);
48520
+ for (var _c = 0, uniqueItems_1 = uniqueItems; _c < uniqueItems_1.length; _c++) {
48521
+ var item = uniqueItems_1[_c];
48522
+ if (!isAccommodationItem(item)) {
48523
+ continue;
48524
+ }
48525
+ var duration = getItemDuration(item);
48526
+ var accommodationEndDay = startDay + duration - 1;
48527
+ if (currentDay >= startDay && currentDay <= accommodationEndDay) {
48528
+ return item;
48529
+ }
48530
+ }
48531
+ }
48532
+ return null;
48533
+ };
48534
+ var buildItineraryHtml = function (itinerary, translations) {
47705
48535
  var _a;
47706
48536
  if (!itinerary) {
47707
48537
  return '\n <div class="itinerary-shell">\n <div class="itinerary-empty">Geen reisroute beschikbaar.</div>\n </div>\n ';
47708
48538
  }
47709
- var nodesHtml = ((_a = itinerary.nodes) !== null && _a !== void 0 ? _a : [])
48539
+ var allNodes = (_a = itinerary.nodes) !== null && _a !== void 0 ? _a : [];
48540
+ var nodesHtml = allNodes
47710
48541
  .map(function (node) {
47711
- var hasItems = Array.isArray(node.items) && node.items.length > 0;
48542
+ var _a;
48543
+ var startDay = getNodeDayRange(node).startDay;
48544
+ var day = node.startDate ? format$1(node.startDate, 'd') : null;
48545
+ var month = node.startDate ? format$1(node.startDate, 'MMM') : null;
48546
+ var uniqueItems = getUniqueItems((_a = node.items) !== null && _a !== void 0 ? _a : []);
48547
+ var hasItems = uniqueItems.length > 0;
48548
+ var hasAccommodationInCurrentNode = uniqueItems.some(isAccommodationItem);
48549
+ var activeAccommodation = findAccommodationForDay(allNodes, startDay);
48550
+ var accommodationBanner =
48551
+ !hasAccommodationInCurrentNode && activeAccommodation
48552
+ ? '\n <div class="itinerary-node__accommodation-banner">\n Accommodatie voor deze dag: <strong>'.concat(
48553
+ escapeHtml(getAccommodationName(activeAccommodation)),
48554
+ '</strong>\n </div>\n '
48555
+ )
48556
+ : '';
47712
48557
  var itemsHtml = hasItems
47713
- ? node.items
48558
+ ? uniqueItems
47714
48559
  .map(function (item) {
47715
48560
  var _a;
47716
48561
  return '\n <article class="itinerary-item" data-template="'
@@ -47718,25 +48563,19 @@ var buildItineraryHtml = function (itinerary) {
47718
48563
  .concat((_a = item.contents) !== null && _a !== void 0 ? _a : '', '\n </article>\n ');
47719
48564
  })
47720
48565
  .join('')
47721
- : '<div class="itinerary-node__empty">Geen items voor deze dag.</div>';
47722
- return '\n <section class="itinerary-node">\n <header class="itinerary-node__header">\n <div class="itinerary-node__day">Dag '
47723
- .concat(node.startDay)
47724
- .concat(
47725
- node.endDay > node.startDay ? ' - '.concat(node.endDay) : '',
47726
- '</div>\n <div class="itinerary-node__meta">\n <h2 class="itinerary-node__title">'
47727
- )
47728
- .concat(escapeHtml(node.title), '</h2>\n <div class="itinerary-node__date">')
47729
- .concat(
47730
- escapeHtml(formatNodeDate(node.startDate)),
47731
- '</div>\n </div>\n </header>\n\n <div class="itinerary-node__content">\n '
47732
- )
48566
+ : '<div class="itinerary-node__empty">'.concat(translations.ITINERARY.NO_ITEMS, '</div>');
48567
+ return '\n <section class="itinerary-node">\n <header class="itinerary-node__header">\n \n <div class="itinerary-node__day">\n <p class="itinerary-node__day-day">'
48568
+ .concat(day, '</p>\n <p class="itinerary-node__day-month">')
48569
+ .concat(month, '</p>\n </div>\n\n <div>\n <h2 class="itinerary-node__title">')
48570
+ .concat(escapeHtml(node.title), '</h2>\n </div>\n </header>\n\n <div class="itinerary-node__content">\n ')
48571
+ .concat(accommodationBanner, '\n ')
47733
48572
  .concat(itemsHtml, '\n </div>\n </section>\n ');
47734
48573
  })
47735
48574
  .join('');
47736
48575
  var defaultItemsHtml =
47737
48576
  itinerary.defaultItems && itinerary.defaultItems.length > 0
47738
48577
  ? '\n <section class="itinerary-default-items">\n <h2 class="itinerary-default-items__title">Algemene info</h2>\n '.concat(
47739
- itinerary.defaultItems
48578
+ getUniqueItems(itinerary.defaultItems)
47740
48579
  .map(function (item) {
47741
48580
  var _a;
47742
48581
  return '\n <article class="itinerary-item" data-template="'
@@ -47758,42 +48597,264 @@ var buildItineraryHtml = function (itinerary) {
47758
48597
  .concat(defaultItemsHtml, '\n </div>\n </div>\n ');
47759
48598
  };
47760
48599
  var FullItinerary = function (_a) {
48600
+ var _b;
47761
48601
  var isLoading = _a.isLoading;
47762
- if (isLoading) {
47763
- return React__default.createElement(Spinner, null);
47764
- }
47765
48602
  var itinerary = useSelector(function (state) {
47766
48603
  return state.searchResults;
47767
48604
  }).itinerary;
48605
+ var context = useContext(SearchResultsConfigurationContext);
48606
+ var translations = getTranslations((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
47768
48607
  var hostRef = useRef(null);
47769
48608
  var shadowRootRef = useRef(null);
47770
48609
  var html = useMemo(
47771
48610
  function () {
47772
- return buildItineraryHtml(itinerary);
48611
+ return buildItineraryHtml(itinerary, translations);
47773
48612
  },
47774
- [itinerary]
48613
+ [itinerary, translations]
47775
48614
  );
47776
48615
  useEffect(
47777
48616
  function () {
47778
- var _a;
47779
- if (!hostRef.current) {
48617
+ var _a, _b;
48618
+ if (isLoading) {
47780
48619
  return;
47781
48620
  }
47782
- if (!shadowRootRef.current) {
47783
- shadowRootRef.current = hostRef.current.attachShadow({ mode: 'open' });
48621
+ var host = hostRef.current;
48622
+ if (!host) {
48623
+ return;
47784
48624
  }
47785
- var shadowRoot = shadowRootRef.current;
48625
+ var shadowRoot = (_a = host.shadowRoot) !== null && _a !== void 0 ? _a : host.attachShadow({ mode: 'open' });
48626
+ shadowRootRef.current = shadowRoot;
47786
48627
  shadowRoot.innerHTML =
47787
- "\n <style>\n :host {\n all: initial;\n }\n\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n .itinerary-shell {\n width: 100%;\n margin: 0 auto;\n font-family: 'Outfit', sans-serif;\n color: #222;\n }\n\n .itinerary-shell__header {\n margin-bottom: 24px;\n }\n\n .itinerary-shell__title {\n margin: 0;\n font-size: 32px;\n line-height: 1.2;\n }\n\n .itinerary-shell__content {\n display: grid;\n gap: 24px;\n }\n\n .itinerary-node {\n border: 1px solid #e5e7eb;\n border-radius: 16px;\n overflow: hidden;\n background: #fff;\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);\n }\n\n .itinerary-node__header {\n display: flex;\n gap: 16px;\n align-items: flex-start;\n padding: 20px 20px 16px;\n border-bottom: 1px solid #eef0f2;\n background: #fafafa;\n }\n\n .itinerary-node__day {\n flex: 0 0 auto;\n min-width: 72px;\n padding: 8px 12px;\n border-radius: 999px;\n font-size: 14px;\n font-weight: 700;\n line-height: 1;\n background: #111827;\n color: #fff;\n text-align: center;\n }\n\n .itinerary-node__meta {\n min-width: 0;\n }\n\n .itinerary-node__title {\n margin: 0;\n font-size: 22px;\n line-height: 1.25;\n }\n\n .itinerary-node__date {\n margin-top: 6px;\n font-size: 14px;\n color: #6b7280;\n }\n\n .itinerary-node__content {\n display: grid;\n gap: 20px;\n padding: 20px;\n }\n\n .itinerary-item {\n display: block;\n border-radius: 12px;\n overflow: hidden;\n background: #fff;\n }\n\n .itinerary-node__empty,\n .itinerary-empty {\n padding: 20px;\n border: 1px dashed #d1d5db;\n border-radius: 12px;\n color: #6b7280;\n background: #fafafa;\n }\n\n .itinerary-default-items {\n border: 1px solid #e5e7eb;\n border-radius: 16px;\n padding: 20px;\n background: #fff;\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);\n }\n\n .itinerary-default-items__title {\n margin: 0 0 16px;\n font-size: 22px;\n }\n\n @media (max-width: 768px) {\n .itinerary-shell {\n padding: 16px;\n }\n\n .itinerary-node__header {\n flex-direction: column;\n }\n\n .itinerary-node__day {\n min-width: auto;\n }\n }\n\n "
48628
+ "\n <style>\n :host {\n all: initial;\n display: block;\n width: 100%;\n }\n\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n .itinerary-shell {\n width: 100%;\n margin: 0 auto;\n font-family: 'Outfit', sans-serif;\n color: #222;\n }\n\n .itinerary-shell__header {\n margin-bottom: 24px;\n }\n\n .itinerary-shell__title {\n margin: 0;\n font-size: 32px;\n line-height: 1.2;\n }\n\n .itinerary-shell__content {\n display: grid;\n gap: 24px;\n }\n\n .itinerary-node {\n border: 1px solid #e5e7eb;\n border-radius: 16px;\n overflow: hidden;\n background: #fff;\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);\n }\n\n .itinerary-node__header {\n display: flex;\n gap: 16px;\n align-items: center;\n border-bottom: 1px solid #eef0f2;\n background: #fafafa;\n }\n\n .itinerary-node__day {\n flex: 50px 0 0;\n display: flex;\n flex-flow: column;\n align-items: center;\n justify-content: center;\n background: #1f9470;\n color: white;\n border: 1.5px solid var(--tide-booking-color-secondary);\n }\n\n .itinerary-node__day-month {\n margin: 0px;\n }\n\n .itinerary-node__day-day {\n margin: 0px;\n font-weight: var(--tide-booking-search-results-label-date-month-font-weight);\n color: var(--tide-booking-search-results-label-date-month-color);\n font-size: 24px;\n }\n\n .itinerary-node__title {\n margin: 0;\n font-size: 22px;\n line-height: 1.25;\n }\n\n .itinerary-node__content {\n display: grid;\n gap: 20px;\n padding: 20px;\n }\n\n .itinerary-node__accommodation-banner {\n padding: 12px 16px;\n border: 1px solid #dbeafe;\n border-radius: 12px;\n background: #eff6ff;\n color: #1e3a8a;\n font-size: 14px;\n line-height: 1.4;\n }\n\n .itinerary-item {\n display: block;\n border-radius: 12px;\n overflow: hidden;\n background: #fff;\n }\n\n .itinerary-node__empty,\n .itinerary-empty {\n padding: 20px;\n border: 1px dashed #d1d5db;\n border-radius: 12px;\n color: #6b7280;\n background: #fafafa;\n }\n\n .itinerary-default-items {\n border: 1px solid #e5e7eb;\n border-radius: 16px;\n padding: 20px;\n background: #fff;\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);\n }\n\n .itinerary-default-items__title {\n margin: 0 0 16px;\n font-size: 22px;\n }\n\n @media (max-width: 768px) {\n .itinerary-shell {\n padding: 16px;\n }\n }\n\n "
47788
48629
  .concat(
47789
- (_a = itinerary === null || itinerary === void 0 ? void 0 : itinerary.styleSheetBody) !== null && _a !== void 0 ? _a : '',
48630
+ (_b = itinerary === null || itinerary === void 0 ? void 0 : itinerary.styleSheetBody) !== null && _b !== void 0 ? _b : '',
47790
48631
  '\n </style>\n\n '
47791
48632
  )
47792
48633
  .concat(html, '\n ');
47793
48634
  },
47794
- [html, itinerary === null || itinerary === void 0 ? void 0 : itinerary.styleSheetBody]
48635
+ [html, itinerary === null || itinerary === void 0 ? void 0 : itinerary.styleSheetBody, isLoading]
48636
+ );
48637
+ return React__default.createElement(
48638
+ React__default.Fragment,
48639
+ null,
48640
+ isLoading && React__default.createElement(Spinner, null),
48641
+ React__default.createElement('div', { ref: hostRef, style: { display: isLoading ? 'none' : 'block' } })
48642
+ );
48643
+ };
48644
+
48645
+ var getExcursionContentWithUpdatedPrice = function (contents, totalPrice, currencyCode) {
48646
+ if (!contents) return '';
48647
+ var decodedHtml = he.decode(contents);
48648
+ var parser = new DOMParser();
48649
+ var doc = parser.parseFromString(decodedHtml, 'text/html');
48650
+ var priceElement = doc.querySelector('[data-excursion-price]');
48651
+ if (priceElement) {
48652
+ priceElement.textContent = new Intl.NumberFormat('nl-BE', {
48653
+ style: 'currency',
48654
+ currency: currencyCode !== null && currencyCode !== void 0 ? currencyCode : 'EUR'
48655
+ }).format(totalPrice);
48656
+ }
48657
+ return doc.body.innerHTML;
48658
+ };
48659
+ var DayByDayExcursions = function () {
48660
+ var _a;
48661
+ var context = useContext(SearchResultsConfigurationContext);
48662
+ var translations = getTranslations((_a = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _a !== void 0 ? _a : 'en-GB');
48663
+ var dispatch = useDispatch();
48664
+ var confirmedExcursionsByDay = useSelector(function (state) {
48665
+ return state.searchResults;
48666
+ }).confirmedExcursionsByDay;
48667
+ var selectedPackagingAccoResult = useSelector(selectSelectedPackagingAccoResult);
48668
+ var stayDates = useMemo(
48669
+ function () {
48670
+ if (
48671
+ !(selectedPackagingAccoResult === null || selectedPackagingAccoResult === void 0 ? void 0 : selectedPackagingAccoResult.fromDate) ||
48672
+ !(selectedPackagingAccoResult === null || selectedPackagingAccoResult === void 0 ? void 0 : selectedPackagingAccoResult.toDate)
48673
+ ) {
48674
+ return [];
48675
+ }
48676
+ return getDatesBetween(selectedPackagingAccoResult.fromDate, selectedPackagingAccoResult.toDate);
48677
+ },
48678
+ [
48679
+ selectedPackagingAccoResult === null || selectedPackagingAccoResult === void 0 ? void 0 : selectedPackagingAccoResult.fromDate,
48680
+ selectedPackagingAccoResult === null || selectedPackagingAccoResult === void 0 ? void 0 : selectedPackagingAccoResult.toDate
48681
+ ]
48682
+ );
48683
+ var handleSearchExcursions = function (day) {
48684
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
48685
+ if (!selectedPackagingAccoResult) {
48686
+ return;
48687
+ }
48688
+ var searchParams = {
48689
+ date: day.toISOString(),
48690
+ fromDate: day.toISOString(),
48691
+ toDate: day.toISOString(),
48692
+ countryId: selectedPackagingAccoResult.countryId,
48693
+ regionId: selectedPackagingAccoResult.regionId,
48694
+ oordId: selectedPackagingAccoResult.oordId,
48695
+ locationId: selectedPackagingAccoResult.locationId,
48696
+ locationName: selectedPackagingAccoResult.locationName,
48697
+ accommodationCode:
48698
+ (_e =
48699
+ (_d =
48700
+ (_c =
48701
+ (_b = (_a = selectedPackagingAccoResult.rooms) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.options) ===
48702
+ null || _c === void 0
48703
+ ? void 0
48704
+ : _c.find(function (option) {
48705
+ return option.isSelected;
48706
+ })) === null || _d === void 0
48707
+ ? void 0
48708
+ : _d.accommodationCode) !== null && _e !== void 0
48709
+ ? _e
48710
+ : null,
48711
+ accommodationName:
48712
+ (_k =
48713
+ (_j =
48714
+ (_h =
48715
+ (_g = (_f = selectedPackagingAccoResult.rooms) === null || _f === void 0 ? void 0 : _f[0]) === null || _g === void 0 ? void 0 : _g.options) ===
48716
+ null || _h === void 0
48717
+ ? void 0
48718
+ : _h.find(function (option) {
48719
+ return option.isSelected;
48720
+ })) === null || _j === void 0
48721
+ ? void 0
48722
+ : _j.accommodationName) !== null && _k !== void 0
48723
+ ? _k
48724
+ : null,
48725
+ hotelCode: selectedPackagingAccoResult.code,
48726
+ hotelName: selectedPackagingAccoResult.name,
48727
+ rooms:
48728
+ (_l = selectedPackagingAccoResult === null || selectedPackagingAccoResult === void 0 ? void 0 : selectedPackagingAccoResult.rooms) !== null &&
48729
+ _l !== void 0
48730
+ ? _l
48731
+ : []
48732
+ };
48733
+ dispatch(setExcursionSearchParams(searchParams));
48734
+ dispatch(setFlyInIsOpen(true));
48735
+ dispatch(setFlyInType('excursion-results'));
48736
+ };
48737
+ var getSelectedOptionsSummary = function (excursion) {
48738
+ var options = excursion.rooms.flatMap(function (room) {
48739
+ var _a;
48740
+ return (_a = room.options) !== null && _a !== void 0 ? _a : [];
48741
+ });
48742
+ return options.filter(function (option) {
48743
+ return option.isSelected;
48744
+ });
48745
+ };
48746
+ if (!selectedPackagingAccoResult || stayDates.length === 0) {
48747
+ return null;
48748
+ }
48749
+ return React__default.createElement(
48750
+ React__default.Fragment,
48751
+ null,
48752
+ stayDates.map(function (day) {
48753
+ var _a;
48754
+ var dayKey = format$1(day, 'yyyy-MM-dd');
48755
+ var formattedDay = format$1(day, 'd');
48756
+ var formattedMonth = format$1(day, 'MMM');
48757
+ var confirmedExcursions = (_a = confirmedExcursionsByDay[dayKey]) !== null && _a !== void 0 ? _a : [];
48758
+ return React__default.createElement(
48759
+ React__default.Fragment,
48760
+ { key: dayKey },
48761
+ React__default.createElement(
48762
+ 'div',
48763
+ { className: 'search__results__label search__results__label--secondary' },
48764
+ React__default.createElement(
48765
+ 'div',
48766
+ { className: 'search__results__label__date' },
48767
+ React__default.createElement('p', { className: 'search__results__label__date-date' }, formattedDay),
48768
+ React__default.createElement('p', null, formattedMonth)
48769
+ ),
48770
+ React__default.createElement(
48771
+ 'div',
48772
+ { className: 'search__results__label__text' },
48773
+ React__default.createElement('h3', null, translations.SRP.SELECT, ' ', React__default.createElement('strong', null, translations.SRP.EXCURSION))
48774
+ )
48775
+ ),
48776
+ React__default.createElement(
48777
+ 'div',
48778
+ { className: 'search__results__cards__actions' },
48779
+ React__default.createElement('span', null, 'Accommodation for this day: ', selectedPackagingAccoResult.name),
48780
+ React__default.createElement(
48781
+ 'button',
48782
+ {
48783
+ type: 'button',
48784
+ className: 'cta cta--secondary',
48785
+ onClick: function () {
48786
+ return handleSearchExcursions(day);
48787
+ }
48788
+ },
48789
+ confirmedExcursions.length > 0 ? 'Add another excursion' : ''.concat(translations.SRP.SELECT, ' ').concat(translations.SRP.EXCURSION)
48790
+ )
48791
+ ),
48792
+ React__default.createElement(
48793
+ 'div',
48794
+ { className: 'search__results__cards search__results__cards--compact' },
48795
+ confirmedExcursions &&
48796
+ confirmedExcursions.length > 0 &&
48797
+ confirmedExcursions.map(function (excursion) {
48798
+ var selectedOptions = getSelectedOptionsSummary(excursion);
48799
+ var totalPrice = selectedOptions.reduce(function (sum, option) {
48800
+ return sum + (option.price || 0);
48801
+ }, 0);
48802
+ var updatedContents = getExcursionContentWithUpdatedPrice(excursion.contents, totalPrice, excursion.currencyCode);
48803
+ return React__default.createElement(
48804
+ 'div',
48805
+ {
48806
+ key: excursion.code,
48807
+ className: 'search__result-card__wrapper search__result-card__wrapper--custom',
48808
+ onMouseEnter: function (e) {
48809
+ return (e.currentTarget.style.transform = 'scale(1.02)');
48810
+ },
48811
+ onMouseLeave: function (e) {
48812
+ return (e.currentTarget.style.transform = 'scale(1)');
48813
+ }
48814
+ },
48815
+ React__default.createElement('div', { dangerouslySetInnerHTML: { __html: updatedContents } }),
48816
+ React__default.createElement(
48817
+ 'div',
48818
+ { className: 'search__result-card__content--extra' },
48819
+ React__default.createElement(
48820
+ 'div',
48821
+ { className: 'search__result-card__content__wrapper' },
48822
+ React__default.createElement(
48823
+ 'div',
48824
+ { className: 'search__result-card__options' },
48825
+ selectedOptions.length > 0 &&
48826
+ selectedOptions.map(function (option) {
48827
+ return React__default.createElement(
48828
+ 'div',
48829
+ { className: 'search__result-card__option', key: option.guid },
48830
+ React__default.createElement(Icon$1, { name: 'ui-ticket', width: 14, height: 14, 'aria-hidden': 'true' }),
48831
+ React__default.createElement('span', null, option.accommodationName)
48832
+ );
48833
+ })
48834
+ )
48835
+ )
48836
+ ),
48837
+ React__default.createElement(
48838
+ 'div',
48839
+ { className: 'search__result-card__footer' },
48840
+ React__default.createElement(
48841
+ 'button',
48842
+ {
48843
+ type: 'button',
48844
+ className: 'cta cta--remove',
48845
+ onClick: function () {
48846
+ return dispatch(removeConfirmedExcursionForDay({ dayKey: dayKey, excursionCode: excursion.code }));
48847
+ }
48848
+ },
48849
+ 'Remove'
48850
+ )
48851
+ )
48852
+ );
48853
+ })
48854
+ )
48855
+ );
48856
+ })
47795
48857
  );
47796
- return React__default.createElement('div', { ref: hostRef });
47797
48858
  };
47798
48859
 
47799
48860
  var SearchResultsContainer = function () {
@@ -47822,9 +48883,10 @@ var SearchResultsContainer = function () {
47822
48883
  packagingAccoSearchDetails = _c.packagingAccoSearchDetails,
47823
48884
  editablePackagingEntry = _c.editablePackagingEntry,
47824
48885
  transactionId = _c.transactionId,
47825
- flyInType = _c.flyInType,
47826
- itinerary = _c.itinerary,
47827
- packagingFlightResults = _c.packagingFlightResults;
48886
+ flyInType = _c.flyInType;
48887
+ _c.itinerary;
48888
+ var packagingFlightResults = _c.packagingFlightResults,
48889
+ confirmedExcursionsByDay = _c.confirmedExcursionsByDay;
47828
48890
  var isMobile = useMediaQuery('(max-width: 1200px)');
47829
48891
  var _d = useState(false),
47830
48892
  initialFiltersSet = _d[0],
@@ -48992,6 +50054,7 @@ var SearchResultsContainer = function () {
48992
50054
  selectedHotelCode: selectedPackagingAccoResultCode,
48993
50055
  accommodationResults: packagingAccoResults,
48994
50056
  selectedFlight: selectedCombinationFlight !== null && selectedCombinationFlight !== void 0 ? selectedCombinationFlight : null,
50057
+ confirmedExcursionsByDay: confirmedExcursionsByDay,
48995
50058
  seed: seed,
48996
50059
  transactionId:
48997
50060
  (_c =
@@ -49017,6 +50080,7 @@ var SearchResultsContainer = function () {
49017
50080
  packagingAccoResults,
49018
50081
  packagingAccoSearchDetails,
49019
50082
  selectedCombinationFlight,
50083
+ confirmedExcursionsByDay,
49020
50084
  transactionId,
49021
50085
  dispatch
49022
50086
  ]
@@ -49031,56 +50095,103 @@ var SearchResultsContainer = function () {
49031
50095
  return line.serviceType !== FLIGHT_SERVICE_TYPE;
49032
50096
  });
49033
50097
  };
50098
+ var removeExcursionLines = function (lines) {
50099
+ return lines.filter(function (line) {
50100
+ return line.serviceType !== EXCURSION_SERVICE_TYPE;
50101
+ });
50102
+ };
49034
50103
  var buildAccommodationLinesFromSelection = function (selectedHotel, seed) {
49035
- if (!selectedHotel) return [];
50104
+ return buildPackagingAccommodationLines(selectedHotel, seed, ACCOMMODATION_SERVICE_TYPE);
50105
+ };
50106
+ var buildExcursionLinesFromConfirmedDays = function (confirmedExcursionsByDay) {
50107
+ return Object.values(confirmedExcursionsByDay)
50108
+ .flat()
50109
+ .flatMap(function (excursion) {
50110
+ var selectedOptions = excursion.rooms.flatMap(function (room) {
50111
+ return room.options.filter(function (option) {
50112
+ return option.isSelected;
50113
+ });
50114
+ });
50115
+ var parentGuid = crypto.randomUUID();
50116
+ return selectedOptions.map(function (option, index) {
50117
+ var _a, _b, _c;
50118
+ return {
50119
+ guid: (_a = option.guid) !== null && _a !== void 0 ? _a : crypto.randomUUID(),
50120
+ moment: '',
50121
+ parentGuid: index === 0 ? null : parentGuid,
50122
+ order: index,
50123
+ isChanged: true,
50124
+ from: excursion.fromDate,
50125
+ to: excursion.toDate,
50126
+ serviceType: EXCURSION_SERVICE_TYPE,
50127
+ productName: excursion.name,
50128
+ productCode: excursion.code,
50129
+ accommodationName: option.accommodationName,
50130
+ accommodationCode: option.accommodationCode,
50131
+ regimeName: option.regimeName,
50132
+ regimeCode: option.regimeCode,
50133
+ country: excursion.countryId ? { id: excursion.countryId, name: excursion.countryName, localizations: [] } : null,
50134
+ region: excursion.regionId ? { id: excursion.regionId, name: excursion.regionName, localizations: [] } : null,
50135
+ oord: excursion.oordId ? { id: excursion.oordId, name: excursion.oordName, localizations: [] } : null,
50136
+ location: excursion.locationId ? { id: excursion.locationId, name: excursion.locationName, localizations: [] } : null,
50137
+ longitude: (_b = excursion.longitude) !== null && _b !== void 0 ? _b : null,
50138
+ latitude: (_c = excursion.latitude) !== null && _c !== void 0 ? _c : null,
50139
+ pax: Array.isArray(option.paxIds)
50140
+ ? option.paxIds.map(function (paxId, paxIndex) {
50141
+ return {
50142
+ paxId: paxId,
50143
+ room: 0,
50144
+ order: paxIndex
50145
+ };
50146
+ })
50147
+ : [],
50148
+ flightInformation: null
50149
+ };
50150
+ });
50151
+ });
50152
+ };
50153
+ var buildPackagingAccommodationLines = function (selectedItem, seed, serviceType) {
50154
+ if (!selectedItem) return [];
49036
50155
  var parentGuid = crypto.randomUUID();
49037
- return selectedHotel.rooms
50156
+ return selectedItem.rooms
49038
50157
  .filter(function (room) {
49039
50158
  return room.options.some(function (o) {
49040
50159
  return o.isSelected;
49041
50160
  });
49042
50161
  })
49043
50162
  .map(function (room, index) {
49044
- var _a, _b, _c, _d, _e;
50163
+ var _a, _b, _c;
49045
50164
  var option = room.options.find(function (o) {
49046
50165
  return o.isSelected;
49047
50166
  });
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
- : [];
50167
+ var pax = option.paxIds.map(function (p, paxIndex) {
50168
+ return {
50169
+ paxId: p,
50170
+ room: index,
50171
+ order: paxIndex
50172
+ };
50173
+ });
49063
50174
  return {
49064
- guid: (_c = option.guid) !== null && _c !== void 0 ? _c : crypto.randomUUID(),
50175
+ guid: (_a = option.guid) !== null && _a !== void 0 ? _a : crypto.randomUUID(),
49065
50176
  moment: '',
49066
50177
  parentGuid: index === 0 ? null : parentGuid,
49067
50178
  order: index,
49068
50179
  isChanged: true,
49069
- from: selectedHotel.fromDate,
49070
- to: selectedHotel.toDate,
49071
- serviceType: ACCOMMODATION_SERVICE_TYPE,
49072
- productName: selectedHotel.name,
49073
- productCode: selectedHotel.code,
50180
+ from: selectedItem.fromDate,
50181
+ to: selectedItem.toDate,
50182
+ serviceType: serviceType,
50183
+ productName: selectedItem.name,
50184
+ productCode: selectedItem.code,
49074
50185
  accommodationName: option.accommodationName,
49075
50186
  accommodationCode: option.accommodationCode,
49076
50187
  regimeName: option.regimeName,
49077
50188
  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,
50189
+ country: selectedItem.countryId ? { id: selectedItem.countryId, name: selectedItem.countryName, localizations: [] } : null,
50190
+ region: selectedItem.regionId ? { id: selectedItem.regionId, name: selectedItem.regionName, localizations: [] } : null,
50191
+ oord: selectedItem.oordId ? { id: selectedItem.oordId, name: selectedItem.oordName, localizations: [] } : null,
50192
+ location: selectedItem.locationId ? { id: selectedItem.locationId, name: selectedItem.locationName, localizations: [] } : null,
50193
+ longitude: (_b = selectedItem.longitude) !== null && _b !== void 0 ? _b : null,
50194
+ latitude: (_c = selectedItem.latitude) !== null && _c !== void 0 ? _c : null,
49084
50195
  pax: pax,
49085
50196
  flightInformation: null
49086
50197
  };
@@ -49208,6 +50319,7 @@ var SearchResultsContainer = function () {
49208
50319
  selectedHotelCode = _a.selectedHotelCode,
49209
50320
  accommodationResults = _a.accommodationResults,
49210
50321
  selectedFlight = _a.selectedFlight,
50322
+ confirmedExcursionsByDay = _a.confirmedExcursionsByDay,
49211
50323
  seed = _a.seed,
49212
50324
  transactionId = _a.transactionId,
49213
50325
  language = _a.language;
@@ -49235,6 +50347,12 @@ var SearchResultsContainer = function () {
49235
50347
  nextLines = __spreadArray(__spreadArray([], nextLines, true), flightLines, true);
49236
50348
  }
49237
50349
  }
50350
+ // excursions
50351
+ var excursionLines = buildExcursionLinesFromConfirmedDays(confirmedExcursionsByDay);
50352
+ nextLines = removeExcursionLines(nextLines);
50353
+ if (excursionLines.length) {
50354
+ nextLines = __spreadArray(__spreadArray([], nextLines, true), excursionLines, true);
50355
+ }
49238
50356
  nextLines = nextLines.map(function (line, index) {
49239
50357
  return __assign(__assign({}, line), { order: index });
49240
50358
  });
@@ -49245,7 +50363,7 @@ var SearchResultsContainer = function () {
49245
50363
  if (sourceEntry) {
49246
50364
  return structuredClone(sourceEntry);
49247
50365
  }
49248
- var paxId = 1;
50366
+ var paxId = 0;
49249
50367
  var pax =
49250
50368
  (_b =
49251
50369
  (_a = seed.rooms) === null || _a === void 0
@@ -49454,8 +50572,6 @@ var SearchResultsContainer = function () {
49454
50572
  context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
49455
50573
  !context.packagingEntry &&
49456
50574
  context.showFlightResults &&
49457
- // bookingPackageDetails?.outwardFlights &&
49458
- // <FlightResults flights={bookingPackageDetails?.outwardFlights} isDeparture={true} />
49459
50575
  React__default.createElement(
49460
50576
  React__default.Fragment,
49461
50577
  null,
@@ -49536,11 +50652,12 @@ var SearchResultsContainer = function () {
49536
50652
  context.showHotelAccommodationResults &&
49537
50653
  !context.packagingEntry &&
49538
50654
  React__default.createElement(HotelAccommodationResults, { isLoading: isLoading }),
50655
+ context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
50656
+ !context.packagingEntry &&
50657
+ React__default.createElement(DayByDayExcursions, null),
49539
50658
  context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
49540
50659
  !context.packagingEntry &&
49541
50660
  context.showFlightResults &&
49542
- // bookingPackageDetails?.returnFlights &&
49543
- // <FlightResults flights={bookingPackageDetails?.returnFlights} isDeparture={false} />
49544
50661
  React__default.createElement(
49545
50662
  React__default.Fragment,
49546
50663
  null,
@@ -49595,7 +50712,6 @@ var SearchResultsContainer = function () {
49595
50712
  ),
49596
50713
  context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
49597
50714
  context.packagingEntry &&
49598
- itinerary &&
49599
50715
  React__default.createElement(FullItinerary, { isLoading: itineraryIsLoading })
49600
50716
  )
49601
50717
  ),
@@ -49612,7 +50728,8 @@ var SearchResultsContainer = function () {
49612
50728
  detailsLoading: detailsIsLoading,
49613
50729
  flyInType: flyInType,
49614
50730
  isPackageEditFlow: !!context.packagingEntry,
49615
- sortByTypes: sortByTypes
50731
+ sortByTypes: sortByTypes,
50732
+ activeSearchSeed: activeSearchSeed
49616
50733
  })
49617
50734
  )
49618
50735
  )