@qite/tide-booking-component 1.4.105 → 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.
@@ -631,6 +631,10 @@ var SRP$f = {
631
631
  TRAVEL_GROUP: 'مجموعة المسافرين',
632
632
  EXCURSION: 'رحلة'
633
633
  };
634
+ var ITINERARY$f = {
635
+ DAY: 'اليوم',
636
+ NO_ITEMS: 'لا توجد عناصر لهذا اليوم.'
637
+ };
634
638
  var arJson = {
635
639
  STEPS: STEPS$f,
636
640
  INPUT: INPUT$f,
@@ -649,7 +653,8 @@ var arJson = {
649
653
  NAVBAR: NAVBAR$f,
650
654
  LOGIN: LOGIN$f,
651
655
  QSM: QSM$g,
652
- SRP: SRP$f
656
+ SRP: SRP$f,
657
+ ITINERARY: ITINERARY$f
653
658
  };
654
659
 
655
660
  var STEPS$e = {
@@ -1039,6 +1044,10 @@ var SRP$e = {
1039
1044
  TRAVEL_GROUP: 'Rejseselskab',
1040
1045
  EXCURSION: 'Udflugt'
1041
1046
  };
1047
+ var ITINERARY$e = {
1048
+ DAY: 'Dag',
1049
+ NO_ITEMS: 'Ingen elementer for denne dag.'
1050
+ };
1042
1051
  var daJson = {
1043
1052
  STEPS: STEPS$e,
1044
1053
  INPUT: INPUT$e,
@@ -1057,7 +1066,8 @@ var daJson = {
1057
1066
  NAVBAR: NAVBAR$e,
1058
1067
  LOGIN: LOGIN$e,
1059
1068
  QSM: QSM$f,
1060
- SRP: SRP$e
1069
+ SRP: SRP$e,
1070
+ ITINERARY: ITINERARY$e
1061
1071
  };
1062
1072
 
1063
1073
  var STEPS$d = {
@@ -1448,6 +1458,10 @@ var SRP$d = {
1448
1458
  TRAVEL_GROUP: 'Reisegruppe',
1449
1459
  EXCURSION: 'Ausflug'
1450
1460
  };
1461
+ var ITINERARY$d = {
1462
+ DAY: 'Tag',
1463
+ NO_ITEMS: 'Keine Elemente für diesen Tag.'
1464
+ };
1451
1465
  var deJson = {
1452
1466
  STEPS: STEPS$d,
1453
1467
  INPUT: INPUT$d,
@@ -1466,7 +1480,8 @@ var deJson = {
1466
1480
  NAVBAR: NAVBAR$d,
1467
1481
  LOGIN: LOGIN$d,
1468
1482
  QSM: QSM$e,
1469
- SRP: SRP$d
1483
+ SRP: SRP$d,
1484
+ ITINERARY: ITINERARY$d
1470
1485
  };
1471
1486
 
1472
1487
  var STEPS$c = {
@@ -1860,6 +1875,10 @@ var SRP$c = {
1860
1875
  TRAVEL_GROUP: 'Travel group',
1861
1876
  EXCURSION: 'Excursion'
1862
1877
  };
1878
+ var ITINERARY$c = {
1879
+ DAY: 'Day',
1880
+ NO_ITEMS: 'No items for this day.'
1881
+ };
1863
1882
  var enJson = {
1864
1883
  STEPS: STEPS$c,
1865
1884
  INPUT: INPUT$c,
@@ -1878,7 +1897,8 @@ var enJson = {
1878
1897
  NAVBAR: NAVBAR$c,
1879
1898
  LOGIN: LOGIN$c,
1880
1899
  QSM: QSM$d,
1881
- SRP: SRP$c
1900
+ SRP: SRP$c,
1901
+ ITINERARY: ITINERARY$c
1882
1902
  };
1883
1903
 
1884
1904
  var STEPS$b = {
@@ -2269,6 +2289,10 @@ var SRP$b = {
2269
2289
  TRAVEL_GROUP: 'Grupo de viaje',
2270
2290
  EXCURSION: 'Excursión'
2271
2291
  };
2292
+ var ITINERARY$b = {
2293
+ DAY: 'Día',
2294
+ NO_ITEMS: 'No hay elementos para este día.'
2295
+ };
2272
2296
  var esJson = {
2273
2297
  STEPS: STEPS$b,
2274
2298
  INPUT: INPUT$b,
@@ -2287,7 +2311,8 @@ var esJson = {
2287
2311
  NAVBAR: NAVBAR$b,
2288
2312
  LOGIN: LOGIN$b,
2289
2313
  QSM: QSM$c,
2290
- SRP: SRP$b
2314
+ SRP: SRP$b,
2315
+ ITINERARY: ITINERARY$b
2291
2316
  };
2292
2317
 
2293
2318
  var STEPS$a = {
@@ -2682,6 +2707,10 @@ var SRP$a = {
2682
2707
  TRAVEL_GROUP: 'Groupe de voyageurs',
2683
2708
  EXCURSION: 'Excursion'
2684
2709
  };
2710
+ var ITINERARY$a = {
2711
+ DAY: 'Jour',
2712
+ NO_ITEMS: 'Aucun élément pour ce jour.'
2713
+ };
2685
2714
  var frBeJson = {
2686
2715
  STEPS: STEPS$a,
2687
2716
  INPUT: INPUT$a,
@@ -2700,7 +2729,8 @@ var frBeJson = {
2700
2729
  NAVBAR: NAVBAR$a,
2701
2730
  LOGIN: LOGIN$a,
2702
2731
  QSM: QSM$b,
2703
- SRP: SRP$a
2732
+ SRP: SRP$a,
2733
+ ITINERARY: ITINERARY$a
2704
2734
  };
2705
2735
 
2706
2736
  var STEPS$9 = {
@@ -3090,6 +3120,10 @@ var SRP$9 = {
3090
3120
  TRAVEL_GROUP: 'Groupe de voyageurs',
3091
3121
  EXCURSION: 'Excursion'
3092
3122
  };
3123
+ var ITINERARY$9 = {
3124
+ DAY: 'Jour',
3125
+ NO_ITEMS: 'Aucun élément pour ce jour.'
3126
+ };
3093
3127
  var frFrJson = {
3094
3128
  STEPS: STEPS$9,
3095
3129
  INPUT: INPUT$9,
@@ -3108,7 +3142,8 @@ var frFrJson = {
3108
3142
  NAVBAR: NAVBAR$9,
3109
3143
  LOGIN: LOGIN$9,
3110
3144
  QSM: QSM$a,
3111
- SRP: SRP$9
3145
+ SRP: SRP$9,
3146
+ ITINERARY: ITINERARY$9
3112
3147
  };
3113
3148
 
3114
3149
  var STEPS$8 = {
@@ -3498,6 +3533,10 @@ var SRP$8 = {
3498
3533
  TRAVEL_GROUP: 'Ferðahópur',
3499
3534
  EXCURSION: 'Útflutningur'
3500
3535
  };
3536
+ var ITINERARY$8 = {
3537
+ DAY: 'Dagur',
3538
+ NO_ITEMS: 'Engar upplýsingar fyrir þennan dag.'
3539
+ };
3501
3540
  var isJson = {
3502
3541
  STEPS: STEPS$8,
3503
3542
  INPUT: INPUT$8,
@@ -3516,7 +3555,8 @@ var isJson = {
3516
3555
  NAVBAR: NAVBAR$8,
3517
3556
  LOGIN: LOGIN$8,
3518
3557
  QSM: QSM$9,
3519
- SRP: SRP$8
3558
+ SRP: SRP$8,
3559
+ ITINERARY: ITINERARY$8
3520
3560
  };
3521
3561
 
3522
3562
  var STEPS$7 = {
@@ -3907,6 +3947,10 @@ var SRP$7 = {
3907
3947
  TRAVEL_GROUP: 'Gruppo di viaggio',
3908
3948
  EXCURSION: 'Escursione'
3909
3949
  };
3950
+ var ITINERARY$7 = {
3951
+ DAY: 'Giorno',
3952
+ NO_ITEMS: 'Nessun elemento per questo giorno.'
3953
+ };
3910
3954
  var itJson = {
3911
3955
  STEPS: STEPS$7,
3912
3956
  INPUT: INPUT$7,
@@ -3925,7 +3969,8 @@ var itJson = {
3925
3969
  NAVBAR: NAVBAR$7,
3926
3970
  LOGIN: LOGIN$7,
3927
3971
  QSM: QSM$8,
3928
- SRP: SRP$7
3972
+ SRP: SRP$7,
3973
+ ITINERARY: ITINERARY$7
3929
3974
  };
3930
3975
 
3931
3976
  var STEPS$6 = {
@@ -4320,6 +4365,10 @@ var SRP$6 = {
4320
4365
  TRAVEL_GROUP: 'Reisgezelschap',
4321
4366
  EXCURSION: 'Excursie'
4322
4367
  };
4368
+ var ITINERARY$6 = {
4369
+ DAY: 'Dag',
4370
+ NO_ITEMS: 'Geen elementen voor deze dag.'
4371
+ };
4323
4372
  var nlBeJson = {
4324
4373
  STEPS: STEPS$6,
4325
4374
  INPUT: INPUT$6,
@@ -4338,7 +4387,8 @@ var nlBeJson = {
4338
4387
  NAVBAR: NAVBAR$6,
4339
4388
  LOGIN: LOGIN$6,
4340
4389
  QSM: QSM$7,
4341
- SRP: SRP$6
4390
+ SRP: SRP$6,
4391
+ ITINERARY: ITINERARY$6
4342
4392
  };
4343
4393
 
4344
4394
  var STEPS$5 = {
@@ -4729,6 +4779,10 @@ var SRP$5 = {
4729
4779
  TRAVEL_GROUP: 'Reisgezelschap',
4730
4780
  EXCURSION: 'Excursie'
4731
4781
  };
4782
+ var ITINERARY$5 = {
4783
+ DAY: 'Dag',
4784
+ NO_ITEMS: 'Geen elementen voor deze dag.'
4785
+ };
4732
4786
  var nlNlJson = {
4733
4787
  STEPS: STEPS$5,
4734
4788
  INPUT: INPUT$5,
@@ -4747,7 +4801,8 @@ var nlNlJson = {
4747
4801
  NAVBAR: NAVBAR$5,
4748
4802
  LOGIN: LOGIN$5,
4749
4803
  QSM: QSM$6,
4750
- SRP: SRP$5
4804
+ SRP: SRP$5,
4805
+ ITINERARY: ITINERARY$5
4751
4806
  };
4752
4807
 
4753
4808
  var STEPS$4 = {
@@ -5138,6 +5193,10 @@ var SRP$4 = {
5138
5193
  TRAVEL_GROUP: 'Reisefølge',
5139
5194
  EXCURSION: 'Utflukt'
5140
5195
  };
5196
+ var ITINERARY$4 = {
5197
+ DAY: 'Dag',
5198
+ NO_ITEMS: 'Ingen elementer for denne dagen.'
5199
+ };
5141
5200
  var noJson = {
5142
5201
  STEPS: STEPS$4,
5143
5202
  INPUT: INPUT$4,
@@ -5156,7 +5215,8 @@ var noJson = {
5156
5215
  NAVBAR: NAVBAR$4,
5157
5216
  LOGIN: LOGIN$4,
5158
5217
  QSM: QSM$5,
5159
- SRP: SRP$4
5218
+ SRP: SRP$4,
5219
+ ITINERARY: ITINERARY$4
5160
5220
  };
5161
5221
 
5162
5222
  var STEPS$3 = {
@@ -5547,6 +5607,10 @@ var SRP$3 = {
5547
5607
  TRAVEL_GROUP: 'Grupa podróżnych',
5548
5608
  EXCURSION: 'Wycieczka'
5549
5609
  };
5610
+ var ITINERARY$3 = {
5611
+ DAY: 'Dzień',
5612
+ NO_ITEMS: 'Brak elementów dla tego dnia.'
5613
+ };
5550
5614
  var plJson = {
5551
5615
  STEPS: STEPS$3,
5552
5616
  INPUT: INPUT$3,
@@ -5565,7 +5629,8 @@ var plJson = {
5565
5629
  NAVBAR: NAVBAR$3,
5566
5630
  LOGIN: LOGIN$3,
5567
5631
  QSM: QSM$4,
5568
- SRP: SRP$3
5632
+ SRP: SRP$3,
5633
+ ITINERARY: ITINERARY$3
5569
5634
  };
5570
5635
 
5571
5636
  var STEPS$2 = {
@@ -5956,6 +6021,10 @@ var SRP$2 = {
5956
6021
  TRAVEL_GROUP: 'Grupo de viajantes',
5957
6022
  EXCURSION: 'Excursão'
5958
6023
  };
6024
+ var ITINERARY$2 = {
6025
+ DAY: 'Dia',
6026
+ NO_ITEMS: 'Nenhum item para este dia.'
6027
+ };
5959
6028
  var ptJson = {
5960
6029
  STEPS: STEPS$2,
5961
6030
  INPUT: INPUT$2,
@@ -5974,7 +6043,8 @@ var ptJson = {
5974
6043
  NAVBAR: NAVBAR$2,
5975
6044
  LOGIN: LOGIN$2,
5976
6045
  QSM: QSM$3,
5977
- SRP: SRP$2
6046
+ SRP: SRP$2,
6047
+ ITINERARY: ITINERARY$2
5978
6048
  };
5979
6049
 
5980
6050
  var STEPS$1 = {
@@ -6365,6 +6435,10 @@ var SRP$1 = {
6365
6435
  TRAVEL_GROUP: 'Resesällskap',
6366
6436
  EXCURSION: 'Utflykt'
6367
6437
  };
6438
+ var ITINERARY$1 = {
6439
+ DAY: 'Dag',
6440
+ NO_ITEMS: 'Inga element för denna dag.'
6441
+ };
6368
6442
  var svJson = {
6369
6443
  STEPS: STEPS$1,
6370
6444
  INPUT: INPUT$1,
@@ -6383,7 +6457,8 @@ var svJson = {
6383
6457
  NAVBAR: NAVBAR$1,
6384
6458
  LOGIN: LOGIN$1,
6385
6459
  QSM: QSM$2,
6386
- SRP: SRP$1
6460
+ SRP: SRP$1,
6461
+ ITINERARY: ITINERARY$1
6387
6462
  };
6388
6463
 
6389
6464
  var STEPS = {
@@ -6772,6 +6847,10 @@ var SRP = {
6772
6847
  TRAVEL_GROUP: '旅行グループ',
6773
6848
  EXCURSION: 'エクスカーション'
6774
6849
  };
6850
+ var ITINERARY = {
6851
+ DAY: '日',
6852
+ NO_ITEMS: 'この日のアイテムはありません。'
6853
+ };
6775
6854
  var jaJson = {
6776
6855
  STEPS: STEPS,
6777
6856
  INPUT: INPUT,
@@ -6790,7 +6869,8 @@ var jaJson = {
6790
6869
  NAVBAR: NAVBAR,
6791
6870
  LOGIN: LOGIN,
6792
6871
  QSM: QSM$1,
6793
- SRP: SRP
6872
+ SRP: SRP,
6873
+ ITINERARY: ITINERARY
6794
6874
  };
6795
6875
 
6796
6876
  exports.DepartureRange = void 0;
@@ -35423,6 +35503,21 @@ var getSegmentTitle = function (segment) {
35423
35503
  var _a;
35424
35504
  return (_a = segment.productName) !== null && _a !== void 0 ? _a : segment.accommodationName;
35425
35505
  };
35506
+ var SERVICE_TYPE_PRIORITY = {
35507
+ 7: 0, // Flight
35508
+ 13: 1, // Transfer
35509
+ 3: 2, // Hotel
35510
+ 4: 3 // Excursion
35511
+ };
35512
+ var getServiceTypePriority = function (serviceType) {
35513
+ var _a;
35514
+ return (_a = SERVICE_TYPE_PRIORITY[serviceType !== null && serviceType !== void 0 ? serviceType : -1]) !== null && _a !== void 0 ? _a : 2;
35515
+ };
35516
+ var getDateOnlyTime = function (date) {
35517
+ if (!date) return 0;
35518
+ var parsedDate = new Date(date);
35519
+ return new Date(parsedDate.getFullYear(), parsedDate.getMonth(), parsedDate.getDate()).getTime();
35520
+ };
35426
35521
  var Itinerary = function (_a) {
35427
35522
  var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
35428
35523
  var isOpen = _a.isOpen,
@@ -35451,14 +35546,17 @@ var Itinerary = function (_a) {
35451
35546
  true
35452
35547
  ).sort(function (a, b) {
35453
35548
  var _a, _b;
35454
- var orderA = (_a = a.order) !== null && _a !== void 0 ? _a : Infinity;
35455
- var orderB = (_b = b.order) !== null && _b !== void 0 ? _b : Infinity;
35456
- // First sort by order
35457
- if (orderA !== orderB) {
35458
- return orderA - orderB;
35459
- }
35460
- // Fallback to date
35461
- return new Date(a.from).getTime() - new Date(b.from).getTime();
35549
+ var dateA = getDateOnlyTime(a.from);
35550
+ var dateB = getDateOnlyTime(b.from);
35551
+ if (dateA !== dateB) {
35552
+ return dateA - dateB;
35553
+ }
35554
+ var priorityA = getServiceTypePriority(a.serviceType);
35555
+ var priorityB = getServiceTypePriority(b.serviceType);
35556
+ if (priorityA !== priorityB) {
35557
+ return priorityA - priorityB;
35558
+ }
35559
+ return ((_a = a.order) !== null && _a !== void 0 ? _a : Infinity) - ((_b = b.order) !== null && _b !== void 0 ? _b : Infinity);
35462
35560
  });
35463
35561
  },
35464
35562
  [packagingEntry]
@@ -48617,33 +48715,98 @@ var getRequestRoomsFromPackagingSegments = function (entry, segments) {
48617
48715
  });
48618
48716
  };
48619
48717
 
48620
- var formatNodeDate = function (date) {
48621
- if (!date) return '';
48622
- try {
48623
- return new Intl.DateTimeFormat('nl-BE', {
48624
- weekday: 'long',
48625
- day: '2-digit',
48626
- month: '2-digit',
48627
- year: 'numeric'
48628
- }).format(date);
48629
- } catch (_a) {
48630
- return '';
48631
- }
48632
- };
48633
48718
  var escapeHtml = function (value) {
48634
48719
  if (!value) return '';
48635
48720
  return value.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#39;');
48636
48721
  };
48637
- var buildItineraryHtml = function (itinerary) {
48722
+ var getNodeDayRange = function (node) {
48723
+ var _a, _b;
48724
+ var startDay = Number((_a = node.startDay) !== null && _a !== void 0 ? _a : 0);
48725
+ var endDay = Number((_b = node.endDay) !== null && _b !== void 0 ? _b : startDay);
48726
+ return { startDay: startDay, endDay: endDay };
48727
+ };
48728
+ var getItemDuration = function (item) {
48729
+ var _a;
48730
+ var duration = Number((_a = item.productDuration) !== null && _a !== void 0 ? _a : 0);
48731
+ return Number.isFinite(duration) && duration > 0 ? duration : 0;
48732
+ };
48733
+ var isAccommodationItem = function (item) {
48734
+ var _a;
48735
+ return getItemDuration(item) > 1 && ((_a = item.templateName) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes('hotel'));
48736
+ };
48737
+ var getAccommodationName = function (item) {
48738
+ return item.title || 'Onbekende accommodatie';
48739
+ };
48740
+ var getItemDeduplicationKey = function (item) {
48741
+ var _a;
48742
+ (_a = item.templateName) === null || _a === void 0 ? void 0 : _a.toLowerCase();
48743
+ // if (templateName === 'hotel') {
48744
+ // return [item.templateName, item.productCode, item.accommodationCode, item.regimeCode].filter(Boolean).join('|');
48745
+ // }
48746
+ // if (templateName === 'excursion') {
48747
+ // return [item.templateName, item.productCode].filter(Boolean).join('|');
48748
+ // }
48749
+ return [item.templateName, item.productCode, item.title].filter(Boolean).join('|');
48750
+ };
48751
+ var getUniqueItems = function (items) {
48752
+ if (items === void 0) {
48753
+ items = [];
48754
+ }
48755
+ var seen = new Set();
48756
+ return items.filter(function (item) {
48757
+ var key = getItemDeduplicationKey(item) || item.itemGuid;
48758
+ if (seen.has(key)) {
48759
+ return false;
48760
+ }
48761
+ seen.add(key);
48762
+ return true;
48763
+ });
48764
+ };
48765
+ var findAccommodationForDay = function (nodes, currentDay) {
48766
+ var _a;
48767
+ for (var _i = 0, _b = nodes !== null && nodes !== void 0 ? nodes : []; _i < _b.length; _i++) {
48768
+ var node = _b[_i];
48769
+ var startDay = getNodeDayRange(node).startDay;
48770
+ var uniqueItems = getUniqueItems((_a = node.items) !== null && _a !== void 0 ? _a : []);
48771
+ for (var _c = 0, uniqueItems_1 = uniqueItems; _c < uniqueItems_1.length; _c++) {
48772
+ var item = uniqueItems_1[_c];
48773
+ if (!isAccommodationItem(item)) {
48774
+ continue;
48775
+ }
48776
+ var duration = getItemDuration(item);
48777
+ var accommodationEndDay = startDay + duration - 1;
48778
+ if (currentDay >= startDay && currentDay <= accommodationEndDay) {
48779
+ return item;
48780
+ }
48781
+ }
48782
+ }
48783
+ return null;
48784
+ };
48785
+ var buildItineraryHtml = function (itinerary, translations) {
48638
48786
  var _a;
48639
48787
  if (!itinerary) {
48640
48788
  return '\n <div class="itinerary-shell">\n <div class="itinerary-empty">Geen reisroute beschikbaar.</div>\n </div>\n ';
48641
48789
  }
48642
- var nodesHtml = ((_a = itinerary.nodes) !== null && _a !== void 0 ? _a : [])
48790
+ var allNodes = (_a = itinerary.nodes) !== null && _a !== void 0 ? _a : [];
48791
+ var nodesHtml = allNodes
48643
48792
  .map(function (node) {
48644
- var hasItems = Array.isArray(node.items) && node.items.length > 0;
48793
+ var _a;
48794
+ var startDay = getNodeDayRange(node).startDay;
48795
+ var day = node.startDate ? dateFns.format(node.startDate, 'd') : null;
48796
+ var month = node.startDate ? dateFns.format(node.startDate, 'MMM') : null;
48797
+ var uniqueItems = getUniqueItems((_a = node.items) !== null && _a !== void 0 ? _a : []);
48798
+ var hasItems = uniqueItems.length > 0;
48799
+ var hasAccommodationInCurrentNode = uniqueItems.some(isAccommodationItem);
48800
+ var activeAccommodation = findAccommodationForDay(allNodes, startDay);
48801
+ var accommodationBanner =
48802
+ !hasAccommodationInCurrentNode && activeAccommodation
48803
+ ? '\n <div class="itinerary-node__accommodation-banner">\n Accommodatie voor deze dag: <strong>'.concat(
48804
+ escapeHtml(getAccommodationName(activeAccommodation)),
48805
+ '</strong>\n </div>\n '
48806
+ )
48807
+ : '';
48645
48808
  var itemsHtml = hasItems
48646
- ? node.items
48809
+ ? uniqueItems
48647
48810
  .map(function (item) {
48648
48811
  var _a;
48649
48812
  return '\n <article class="itinerary-item" data-template="'
@@ -48651,25 +48814,19 @@ var buildItineraryHtml = function (itinerary) {
48651
48814
  .concat((_a = item.contents) !== null && _a !== void 0 ? _a : '', '\n </article>\n ');
48652
48815
  })
48653
48816
  .join('')
48654
- : '<div class="itinerary-node__empty">Geen items voor deze dag.</div>';
48655
- return '\n <section class="itinerary-node">\n <header class="itinerary-node__header">\n <div class="itinerary-node__day">Dag '
48656
- .concat(node.startDay)
48657
- .concat(
48658
- node.endDay > node.startDay ? ' - '.concat(node.endDay) : '',
48659
- '</div>\n <div class="itinerary-node__meta">\n <h2 class="itinerary-node__title">'
48660
- )
48661
- .concat(escapeHtml(node.title), '</h2>\n <div class="itinerary-node__date">')
48662
- .concat(
48663
- escapeHtml(formatNodeDate(node.startDate)),
48664
- '</div>\n </div>\n </header>\n\n <div class="itinerary-node__content">\n '
48665
- )
48817
+ : '<div class="itinerary-node__empty">'.concat(translations.ITINERARY.NO_ITEMS, '</div>');
48818
+ 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">'
48819
+ .concat(day, '</p>\n <p class="itinerary-node__day-month">')
48820
+ .concat(month, '</p>\n </div>\n\n <div>\n <h2 class="itinerary-node__title">')
48821
+ .concat(escapeHtml(node.title), '</h2>\n </div>\n </header>\n\n <div class="itinerary-node__content">\n ')
48822
+ .concat(accommodationBanner, '\n ')
48666
48823
  .concat(itemsHtml, '\n </div>\n </section>\n ');
48667
48824
  })
48668
48825
  .join('');
48669
48826
  var defaultItemsHtml =
48670
48827
  itinerary.defaultItems && itinerary.defaultItems.length > 0
48671
48828
  ? '\n <section class="itinerary-default-items">\n <h2 class="itinerary-default-items__title">Algemene info</h2>\n '.concat(
48672
- itinerary.defaultItems
48829
+ getUniqueItems(itinerary.defaultItems)
48673
48830
  .map(function (item) {
48674
48831
  var _a;
48675
48832
  return '\n <article class="itinerary-item" data-template="'
@@ -48691,42 +48848,49 @@ var buildItineraryHtml = function (itinerary) {
48691
48848
  .concat(defaultItemsHtml, '\n </div>\n </div>\n ');
48692
48849
  };
48693
48850
  var FullItinerary = function (_a) {
48851
+ var _b;
48694
48852
  var isLoading = _a.isLoading;
48695
- if (isLoading) {
48696
- return React__default['default'].createElement(Spinner, null);
48697
- }
48698
48853
  var itinerary = reactRedux.useSelector(function (state) {
48699
48854
  return state.searchResults;
48700
48855
  }).itinerary;
48856
+ var context = React.useContext(SearchResultsConfigurationContext);
48857
+ var translations = getTranslations((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
48701
48858
  var hostRef = React.useRef(null);
48702
48859
  var shadowRootRef = React.useRef(null);
48703
48860
  var html = React.useMemo(
48704
48861
  function () {
48705
- return buildItineraryHtml(itinerary);
48862
+ return buildItineraryHtml(itinerary, translations);
48706
48863
  },
48707
- [itinerary]
48864
+ [itinerary, translations]
48708
48865
  );
48709
48866
  React.useEffect(
48710
48867
  function () {
48711
- var _a;
48712
- if (!hostRef.current) {
48868
+ var _a, _b;
48869
+ if (isLoading) {
48713
48870
  return;
48714
48871
  }
48715
- if (!shadowRootRef.current) {
48716
- shadowRootRef.current = hostRef.current.attachShadow({ mode: 'open' });
48872
+ var host = hostRef.current;
48873
+ if (!host) {
48874
+ return;
48717
48875
  }
48718
- var shadowRoot = shadowRootRef.current;
48876
+ var shadowRoot = (_a = host.shadowRoot) !== null && _a !== void 0 ? _a : host.attachShadow({ mode: 'open' });
48877
+ shadowRootRef.current = shadowRoot;
48719
48878
  shadowRoot.innerHTML =
48720
- "\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 "
48879
+ "\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 "
48721
48880
  .concat(
48722
- (_a = itinerary === null || itinerary === void 0 ? void 0 : itinerary.styleSheetBody) !== null && _a !== void 0 ? _a : '',
48881
+ (_b = itinerary === null || itinerary === void 0 ? void 0 : itinerary.styleSheetBody) !== null && _b !== void 0 ? _b : '',
48723
48882
  '\n </style>\n\n '
48724
48883
  )
48725
48884
  .concat(html, '\n ');
48726
48885
  },
48727
- [html, itinerary === null || itinerary === void 0 ? void 0 : itinerary.styleSheetBody]
48886
+ [html, itinerary === null || itinerary === void 0 ? void 0 : itinerary.styleSheetBody, isLoading]
48887
+ );
48888
+ return React__default['default'].createElement(
48889
+ React__default['default'].Fragment,
48890
+ null,
48891
+ isLoading && React__default['default'].createElement(Spinner, null),
48892
+ React__default['default'].createElement('div', { ref: hostRef, style: { display: isLoading ? 'none' : 'block' } })
48728
48893
  );
48729
- return React__default['default'].createElement('div', { ref: hostRef });
48730
48894
  };
48731
48895
 
48732
48896
  var getExcursionContentWithUpdatedPrice = function (contents, totalPrice, currencyCode) {
@@ -48976,9 +49140,9 @@ var SearchResultsContainer = function () {
48976
49140
  packagingAccoSearchDetails = _c.packagingAccoSearchDetails,
48977
49141
  editablePackagingEntry = _c.editablePackagingEntry,
48978
49142
  transactionId = _c.transactionId,
48979
- flyInType = _c.flyInType,
48980
- itinerary = _c.itinerary,
48981
- packagingFlightResults = _c.packagingFlightResults,
49143
+ flyInType = _c.flyInType;
49144
+ _c.itinerary;
49145
+ var packagingFlightResults = _c.packagingFlightResults,
48982
49146
  confirmedExcursionsByDay = _c.confirmedExcursionsByDay;
48983
49147
  var isMobile = useMediaQuery('(max-width: 1200px)');
48984
49148
  var _d = React.useState(false),
@@ -50161,7 +50325,6 @@ var SearchResultsContainer = function () {
50161
50325
  : '',
50162
50326
  language: (_d = context.languageCode) !== null && _d !== void 0 ? _d : 'en-GB'
50163
50327
  });
50164
- console.log('Built nextEntry', nextEntry);
50165
50328
  if (!nextEntry) return;
50166
50329
  dispatch(setEditablePackagingEntry(nextEntry));
50167
50330
  if (selectedCombinationFlight) {
@@ -50807,7 +50970,6 @@ var SearchResultsContainer = function () {
50807
50970
  ),
50808
50971
  context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
50809
50972
  context.packagingEntry &&
50810
- itinerary &&
50811
50973
  React__default['default'].createElement(FullItinerary, { isLoading: itineraryIsLoading })
50812
50974
  )
50813
50975
  ),