@qite/tide-booking-component 1.4.100 → 1.4.102
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.
- package/build/build-cjs/index.js +990 -423
- package/build/build-cjs/src/index.d.ts +3 -1
- package/build/build-cjs/src/search-results/components/itinerary/full-itinerary.d.ts +6 -0
- package/build/build-cjs/src/search-results/store/search-results-slice.d.ts +18 -2
- package/build/build-cjs/src/search-results/types.d.ts +3 -1
- package/build/build-cjs/src/search-results/utils/flight-utils.d.ts +1 -0
- package/build/build-esm/index.js +990 -417
- package/build/build-esm/src/index.d.ts +3 -1
- package/build/build-esm/src/search-results/components/itinerary/full-itinerary.d.ts +6 -0
- package/build/build-esm/src/search-results/store/search-results-slice.d.ts +18 -2
- package/build/build-esm/src/search-results/types.d.ts +3 -1
- package/build/build-esm/src/search-results/utils/flight-utils.d.ts +1 -0
- package/package.json +2 -2
- package/src/index.ts +3 -1
- package/src/search-results/components/flight/flight-selection/independent-flight-option.tsx +1 -7
- package/src/search-results/components/flight/flight-selection/independent-flight-selection.tsx +2 -6
- package/src/search-results/components/itinerary/full-itinerary.tsx +266 -0
- package/src/search-results/components/itinerary/index.tsx +0 -2
- package/src/search-results/components/search-results-container/search-results-container.tsx +668 -78
- package/src/search-results/store/search-results-slice.ts +35 -3
- package/src/search-results/types.ts +3 -1
- package/src/search-results/utils/flight-utils.ts +5 -0
- package/src/shared/components/flyin/accommodation-flyin.tsx +4 -2
package/build/build-esm/index.js
CHANGED
|
@@ -13449,11 +13449,12 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
13449
13449
|
var ENDPOINT = '/api/web/packaging';
|
|
13450
13450
|
var ENDPOINT_START_TRANSACTION = ENDPOINT + '/start';
|
|
13451
13451
|
var ENDPOINT_ACCOMMODATIONS = ENDPOINT + '/accommodations';
|
|
13452
|
+
var ENDPOINT_FLIGHTS = ENDPOINT + '/flights';
|
|
13452
13453
|
var ENDPOINT_PRICE_DETAILS = ENDPOINT + '/price-details';
|
|
13454
|
+
var ENDPOINT_ITINERARY = ENDPOINT + '/itinerary';
|
|
13453
13455
|
var ENDPOINT_ENTRY = function (magicLinkCode) {
|
|
13454
13456
|
return ENDPOINT + '/entry/' + magicLinkCode;
|
|
13455
13457
|
};
|
|
13456
|
-
// MANUAL PACKAGING SEARCH
|
|
13457
13458
|
var startTransaction = function (config, signal) {
|
|
13458
13459
|
var apiKey = config.apiKey;
|
|
13459
13460
|
var url = '' + config.host + ENDPOINT_START_TRANSACTION;
|
|
@@ -13465,6 +13466,12 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
13465
13466
|
var body = JSON.stringify(request);
|
|
13466
13467
|
return post(url, apiKey, body, config.token, signal, true);
|
|
13467
13468
|
};
|
|
13469
|
+
var searchPackagingFlights = function (config, request, signal) {
|
|
13470
|
+
var url = '' + config.host + ENDPOINT_FLIGHTS;
|
|
13471
|
+
var apiKey = config.apiKey;
|
|
13472
|
+
var body = JSON.stringify(request);
|
|
13473
|
+
return post(url, apiKey, body, config.token, signal, true);
|
|
13474
|
+
};
|
|
13468
13475
|
var getEntry = function (config, magicLinkCode, signal) {
|
|
13469
13476
|
var apiKey = config.apiKey;
|
|
13470
13477
|
var url = '' + config.host + ENDPOINT_ENTRY(magicLinkCode);
|
|
@@ -13476,6 +13483,12 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
13476
13483
|
var body = JSON.stringify(request);
|
|
13477
13484
|
return post(url, apiKey, body, config.token, signal, true);
|
|
13478
13485
|
};
|
|
13486
|
+
var getItinerary = function (config, request, signal) {
|
|
13487
|
+
var url = '' + config.host + ENDPOINT_ITINERARY;
|
|
13488
|
+
var apiKey = config.apiKey;
|
|
13489
|
+
var body = JSON.stringify(request);
|
|
13490
|
+
return post(url, apiKey, body, config.token, signal, true);
|
|
13491
|
+
};
|
|
13479
13492
|
|
|
13480
13493
|
exports.AllotmentType = AllotmentType;
|
|
13481
13494
|
exports.ContactForm = ContactForm;
|
|
@@ -13528,6 +13541,7 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
13528
13541
|
exports.getEntryStatus = getEntryStatus;
|
|
13529
13542
|
exports.getEntryTotals = getEntryTotals;
|
|
13530
13543
|
exports.getInvoiceList = getInvoiceList;
|
|
13544
|
+
exports.getItinerary = getItinerary;
|
|
13531
13545
|
exports.getLocations = getLocations;
|
|
13532
13546
|
exports.getMolliePayment = getMolliePayment;
|
|
13533
13547
|
exports.getPortal = getPortal;
|
|
@@ -13549,6 +13563,7 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
13549
13563
|
exports.searchLocations = searchLocations;
|
|
13550
13564
|
exports.searchOords = searchOords;
|
|
13551
13565
|
exports.searchPackagingAccommodations = searchPackagingAccommodations;
|
|
13566
|
+
exports.searchPackagingFlights = searchPackagingFlights;
|
|
13552
13567
|
exports.searchRegions = searchRegions;
|
|
13553
13568
|
exports.searchWithErrorMapping = searchWithErrorMapping;
|
|
13554
13569
|
exports.setCustomEntryStatus = setCustomEntryStatus;
|
|
@@ -20487,7 +20502,7 @@ var getFlightDetails = function (flight) {
|
|
|
20487
20502
|
arrivalDate: lastLine.arrivalDate,
|
|
20488
20503
|
arrivalTime: lastLine.arrivalTime,
|
|
20489
20504
|
arrivalAirport: lastLine.arrivalAirportDescription,
|
|
20490
|
-
travelDuration: formatDuration
|
|
20505
|
+
travelDuration: formatDuration(flight.flightMetaData.durationInTicks),
|
|
20491
20506
|
travelDurationMinutes: minutesFromTicks(flight.flightMetaData.durationInTicks),
|
|
20492
20507
|
changeDurationMinutes: getTotalChangeDuration(flight),
|
|
20493
20508
|
numberOfStops: flight.flightMetaData.flightLines.length - 1,
|
|
@@ -20503,7 +20518,7 @@ var getFlightDetails = function (flight) {
|
|
|
20503
20518
|
arrivalTime: x.arrivalTime,
|
|
20504
20519
|
arrivalAirport: x.arrivalAirportDescription,
|
|
20505
20520
|
number: ''.concat(x.airlineCode, ' ').concat(x.number),
|
|
20506
|
-
travelDuration: formatDuration
|
|
20521
|
+
travelDuration: formatDuration(x.durationInTicks),
|
|
20507
20522
|
waitDuration: waitDurations.length - 1 <= i ? waitDurations[i] : undefined
|
|
20508
20523
|
};
|
|
20509
20524
|
})
|
|
@@ -20579,7 +20594,7 @@ var minutesFromTicks = function (ticks) {
|
|
|
20579
20594
|
var totalSeconds = ticks / 10000000;
|
|
20580
20595
|
return Math.floor(totalSeconds / 60);
|
|
20581
20596
|
};
|
|
20582
|
-
var formatDuration
|
|
20597
|
+
var formatDuration = function (ticks) {
|
|
20583
20598
|
if (!ticks) return '';
|
|
20584
20599
|
var totalSeconds = ticks / 10000000;
|
|
20585
20600
|
var hh = Math.floor(totalSeconds / 3600);
|
|
@@ -33668,10 +33683,13 @@ var initialState$1 = {
|
|
|
33668
33683
|
filteredPackagingAccoResults: [],
|
|
33669
33684
|
packagingAccoSearchDetails: [],
|
|
33670
33685
|
selectedPackagingAccoResultCode: null,
|
|
33686
|
+
packagingFlightResults: [],
|
|
33687
|
+
selectedPackagingFlight: null,
|
|
33671
33688
|
selectedFlight: null,
|
|
33672
33689
|
selectedFlightDetails: null,
|
|
33673
33690
|
bookingPackageDetails: null,
|
|
33674
33691
|
isLoading: false,
|
|
33692
|
+
flightsLoading: false,
|
|
33675
33693
|
filters: [],
|
|
33676
33694
|
selectedSortType: null,
|
|
33677
33695
|
activeTab: 'compact',
|
|
@@ -33680,7 +33698,8 @@ var initialState$1 = {
|
|
|
33680
33698
|
editablePackagingEntry: null,
|
|
33681
33699
|
transactionId: null,
|
|
33682
33700
|
accommodationFlyInStep: 'details',
|
|
33683
|
-
priceDetails: null
|
|
33701
|
+
priceDetails: null,
|
|
33702
|
+
itinerary: null
|
|
33684
33703
|
};
|
|
33685
33704
|
var searchResultsSlice = createSlice({
|
|
33686
33705
|
name: 'searchResults',
|
|
@@ -33707,6 +33726,12 @@ var searchResultsSlice = createSlice({
|
|
|
33707
33726
|
setSelectedPackagingAccoResult: function (state, action) {
|
|
33708
33727
|
state.selectedPackagingAccoResultCode = action.payload;
|
|
33709
33728
|
},
|
|
33729
|
+
setPackagingFlightResults: function (state, action) {
|
|
33730
|
+
state.packagingFlightResults = action.payload;
|
|
33731
|
+
},
|
|
33732
|
+
setSelectedPackagingFlight: function (state, action) {
|
|
33733
|
+
state.selectedPackagingFlight = action.payload;
|
|
33734
|
+
},
|
|
33710
33735
|
setSelectedFlight: function (state, action) {
|
|
33711
33736
|
state.selectedFlight = action.payload;
|
|
33712
33737
|
},
|
|
@@ -33729,6 +33754,9 @@ var searchResultsSlice = createSlice({
|
|
|
33729
33754
|
setIsLoading: function (state, action) {
|
|
33730
33755
|
state.isLoading = action.payload;
|
|
33731
33756
|
},
|
|
33757
|
+
setFlightsLoading: function (state, action) {
|
|
33758
|
+
state.flightsLoading = action.payload;
|
|
33759
|
+
},
|
|
33732
33760
|
setFilters: function (state, action) {
|
|
33733
33761
|
var updatedFilters = action.payload;
|
|
33734
33762
|
updatedFilters.forEach(function (updatedFilter) {
|
|
@@ -33776,6 +33804,9 @@ var searchResultsSlice = createSlice({
|
|
|
33776
33804
|
},
|
|
33777
33805
|
setPriceDetails: function (state, action) {
|
|
33778
33806
|
state.priceDetails = action.payload;
|
|
33807
|
+
},
|
|
33808
|
+
setItinerary: function (state, action) {
|
|
33809
|
+
state.itinerary = action.payload;
|
|
33779
33810
|
}
|
|
33780
33811
|
}
|
|
33781
33812
|
});
|
|
@@ -33786,11 +33817,14 @@ var setResults = ((_a = searchResultsSlice.actions), _a.setResults),
|
|
|
33786
33817
|
setFilteredPackagingAccoResults = _a.setFilteredPackagingAccoResults,
|
|
33787
33818
|
setPackagingAccoSearchDetails = _a.setPackagingAccoSearchDetails,
|
|
33788
33819
|
setSelectedPackagingAccoResult = _a.setSelectedPackagingAccoResult,
|
|
33820
|
+
setPackagingFlightResults = _a.setPackagingFlightResults,
|
|
33821
|
+
setSelectedPackagingFlight = _a.setSelectedPackagingFlight,
|
|
33789
33822
|
setSelectedFlight = _a.setSelectedFlight,
|
|
33790
33823
|
setSelectedFlightDetails = _a.setSelectedFlightDetails,
|
|
33791
|
-
setBookingPackageDetails = _a.setBookingPackageDetails
|
|
33792
|
-
|
|
33793
|
-
|
|
33824
|
+
setBookingPackageDetails = _a.setBookingPackageDetails;
|
|
33825
|
+
_a.selectFlight;
|
|
33826
|
+
var setIsLoading = _a.setIsLoading,
|
|
33827
|
+
setFlightsLoading = _a.setFlightsLoading,
|
|
33794
33828
|
setFilters = _a.setFilters,
|
|
33795
33829
|
resetFilters = _a.resetFilters,
|
|
33796
33830
|
setSortType = _a.setSortType,
|
|
@@ -33801,7 +33835,8 @@ var setFlyInIsOpen = _a.setFlyInIsOpen,
|
|
|
33801
33835
|
setEditablePackagingEntry = _a.setEditablePackagingEntry,
|
|
33802
33836
|
setTransactionId = _a.setTransactionId,
|
|
33803
33837
|
setAccommodationFlyInStep = _a.setAccommodationFlyInStep,
|
|
33804
|
-
setPriceDetails = _a.setPriceDetails
|
|
33838
|
+
setPriceDetails = _a.setPriceDetails,
|
|
33839
|
+
setItinerary = _a.setItinerary;
|
|
33805
33840
|
var searchResultsReducer = searchResultsSlice.reducer;
|
|
33806
33841
|
|
|
33807
33842
|
var ItemPicker = function (_a) {
|
|
@@ -35159,8 +35194,6 @@ var Itinerary = function (_a) {
|
|
|
35159
35194
|
segments: segments
|
|
35160
35195
|
};
|
|
35161
35196
|
});
|
|
35162
|
-
console.log('otherSegments', otherSegments);
|
|
35163
|
-
console.log('groupedOtherSegments', groupedOtherSegments);
|
|
35164
35197
|
var numberOfPax = ((_p = packagingEntry.pax) === null || _p === void 0 ? void 0 : _p.length) || 1;
|
|
35165
35198
|
var totalPrice = (priceDetails === null || priceDetails === void 0 ? void 0 : priceDetails.total) || packagingEntry.price || 0;
|
|
35166
35199
|
var pricePerPerson = totalPrice / numberOfPax;
|
|
@@ -36738,6 +36771,14 @@ var Icon = function (_a) {
|
|
|
36738
36771
|
}
|
|
36739
36772
|
};
|
|
36740
36773
|
|
|
36774
|
+
var getFlightKey = function (segments) {
|
|
36775
|
+
if (!segments || segments.length === 0) return '';
|
|
36776
|
+
return segments
|
|
36777
|
+
.map(function (s) {
|
|
36778
|
+
return ''.concat(s.marketingAirlineCode).concat(s.flightNumber, '_').concat(s.departureDateTime);
|
|
36779
|
+
})
|
|
36780
|
+
.join('_');
|
|
36781
|
+
};
|
|
36741
36782
|
// export const getAirportName = (airport: TideAirport | undefined, language: string): string => {
|
|
36742
36783
|
// if (!airport || !airport.name) {
|
|
36743
36784
|
// return "";
|
|
@@ -38276,13 +38317,11 @@ var FlightsFlyIn = function (_a) {
|
|
|
38276
38317
|
};
|
|
38277
38318
|
|
|
38278
38319
|
var formatPrice$1 = function (price, currencyCode) {
|
|
38279
|
-
if (currencyCode === void 0) {
|
|
38280
|
-
currencyCode = 'EUR';
|
|
38281
|
-
}
|
|
38282
38320
|
if (typeof price !== 'number') return '';
|
|
38321
|
+
var safeCurrency = currencyCode !== null && currencyCode !== void 0 ? currencyCode : 'EUR';
|
|
38283
38322
|
return new Intl.NumberFormat('nl-BE', {
|
|
38284
38323
|
style: 'currency',
|
|
38285
|
-
currency:
|
|
38324
|
+
currency: safeCurrency
|
|
38286
38325
|
}).format(price);
|
|
38287
38326
|
};
|
|
38288
38327
|
var AccommodationFlyIn = function (_a) {
|
|
@@ -43933,259 +43972,6 @@ var RoundTripResults = function () {
|
|
|
43933
43972
|
);
|
|
43934
43973
|
};
|
|
43935
43974
|
|
|
43936
|
-
var ticksToMinutes = function (ticks) {
|
|
43937
|
-
return Math.floor(ticks / 600000000);
|
|
43938
|
-
};
|
|
43939
|
-
var formatDuration = function (ticks) {
|
|
43940
|
-
var minutes = ticksToMinutes(ticks);
|
|
43941
|
-
var h = Math.floor(minutes / 60);
|
|
43942
|
-
var m = minutes % 60;
|
|
43943
|
-
return ''.concat(h, 'h ').concat(m, 'm');
|
|
43944
|
-
};
|
|
43945
|
-
var FlightResults = function (_a) {
|
|
43946
|
-
var _b;
|
|
43947
|
-
var flights = _a.flights,
|
|
43948
|
-
isDeparture = _a.isDeparture;
|
|
43949
|
-
var context = useContext(SearchResultsConfigurationContext);
|
|
43950
|
-
var translations = getTranslations((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
|
|
43951
|
-
var dispatch = useDispatch();
|
|
43952
|
-
var _c = useState(null),
|
|
43953
|
-
activeDetailId = _c[0],
|
|
43954
|
-
setActiveDetailId = _c[1];
|
|
43955
|
-
var handleDetailClick = function (flightOptionId) {
|
|
43956
|
-
setActiveDetailId(function (prev) {
|
|
43957
|
-
return prev === flightOptionId ? null : flightOptionId;
|
|
43958
|
-
});
|
|
43959
|
-
};
|
|
43960
|
-
var firstResult = flights === null || flights === void 0 ? void 0 : flights[0];
|
|
43961
|
-
var firstResultDate = (firstResult === null || firstResult === void 0 ? void 0 : firstResult.startDateTime) ? parseISO(firstResult.startDateTime) : null;
|
|
43962
|
-
return React__default.createElement(
|
|
43963
|
-
React__default.Fragment,
|
|
43964
|
-
null,
|
|
43965
|
-
React__default.createElement(
|
|
43966
|
-
'div',
|
|
43967
|
-
{ className: 'search__results__label' },
|
|
43968
|
-
React__default.createElement(
|
|
43969
|
-
'div',
|
|
43970
|
-
{ className: 'search__results__label__date' },
|
|
43971
|
-
firstResultDate &&
|
|
43972
|
-
React__default.createElement(
|
|
43973
|
-
React__default.Fragment,
|
|
43974
|
-
null,
|
|
43975
|
-
React__default.createElement('p', { className: 'search__results__label__date-date' }, format$1(firstResultDate, 'd')),
|
|
43976
|
-
React__default.createElement('p', null, format$1(firstResultDate, 'MMM'))
|
|
43977
|
-
)
|
|
43978
|
-
),
|
|
43979
|
-
React__default.createElement(
|
|
43980
|
-
'div',
|
|
43981
|
-
{ className: 'search__results__label__text' },
|
|
43982
|
-
React__default.createElement(
|
|
43983
|
-
'h3',
|
|
43984
|
-
null,
|
|
43985
|
-
translations.SRP.SELECT,
|
|
43986
|
-
' ',
|
|
43987
|
-
React__default.createElement('strong', null, isDeparture ? translations.SRP.DEPARTURE : translations.SRP.RETURN)
|
|
43988
|
-
)
|
|
43989
|
-
)
|
|
43990
|
-
),
|
|
43991
|
-
flights &&
|
|
43992
|
-
flights.length > 0 &&
|
|
43993
|
-
React__default.createElement(
|
|
43994
|
-
'div',
|
|
43995
|
-
{ className: 'search__results__cards search__results__cards--extended' },
|
|
43996
|
-
flights.map(function (flight, index) {
|
|
43997
|
-
var lines = flight.flightMetaData.flightLines;
|
|
43998
|
-
var firstLine = lines[0];
|
|
43999
|
-
var lastLine = lines[lines.length - 1];
|
|
44000
|
-
var stops = lines.length - 1;
|
|
44001
|
-
return React__default.createElement(
|
|
44002
|
-
'div',
|
|
44003
|
-
{ className: 'flight', key: 'flight-'.concat(flight.flightId, '-').concat(index) },
|
|
44004
|
-
React__default.createElement(
|
|
44005
|
-
'div',
|
|
44006
|
-
{ className: 'flight__option' },
|
|
44007
|
-
React__default.createElement(
|
|
44008
|
-
'div',
|
|
44009
|
-
{ className: 'flight__content' },
|
|
44010
|
-
React__default.createElement(
|
|
44011
|
-
'div',
|
|
44012
|
-
{ className: 'flight__flights' },
|
|
44013
|
-
React__default.createElement(
|
|
44014
|
-
'div',
|
|
44015
|
-
{ className: 'flight__flight' },
|
|
44016
|
-
React__default.createElement(
|
|
44017
|
-
'div',
|
|
44018
|
-
{ className: 'flight__flight__header' },
|
|
44019
|
-
React__default.createElement('div', { className: 'flight__status__container' }),
|
|
44020
|
-
React__default.createElement(
|
|
44021
|
-
'div',
|
|
44022
|
-
{ className: 'flight__price' },
|
|
44023
|
-
React__default.createElement('span', { className: 'price' }, '\u20AC ', flight.price.toFixed(2)),
|
|
44024
|
-
React__default.createElement(
|
|
44025
|
-
'button',
|
|
44026
|
-
{
|
|
44027
|
-
type: 'button',
|
|
44028
|
-
className: 'cta '.concat(flight.isSelected ? 'cta--selected' : 'cta--select'),
|
|
44029
|
-
onClick: function () {
|
|
44030
|
-
return dispatch(selectFlight({ flightOptionId: flight.flightOptionId, isDeparture: !!isDeparture }));
|
|
44031
|
-
}
|
|
44032
|
-
},
|
|
44033
|
-
flight.isSelected ? 'Selected' : 'Select'
|
|
44034
|
-
)
|
|
44035
|
-
)
|
|
44036
|
-
)
|
|
44037
|
-
),
|
|
44038
|
-
React__default.createElement(
|
|
44039
|
-
'div',
|
|
44040
|
-
{ className: 'flight__flight' },
|
|
44041
|
-
React__default.createElement(
|
|
44042
|
-
'div',
|
|
44043
|
-
{ className: 'flight__flight__container' },
|
|
44044
|
-
React__default.createElement(
|
|
44045
|
-
'div',
|
|
44046
|
-
{ className: 'flight__flight__wrapper' },
|
|
44047
|
-
React__default.createElement(
|
|
44048
|
-
'div',
|
|
44049
|
-
{ className: 'flight__logo__wrapper' },
|
|
44050
|
-
React__default.createElement('img', {
|
|
44051
|
-
src: 'https://media.tidesoftware.be/media/shared/Airlines/'.concat(firstLine.airlineCode, '.png?height=256'),
|
|
44052
|
-
alt: flight.airlineDescription,
|
|
44053
|
-
className: 'flight__logo'
|
|
44054
|
-
}),
|
|
44055
|
-
React__default.createElement('span', null, flight.airlineDescription)
|
|
44056
|
-
),
|
|
44057
|
-
React__default.createElement(
|
|
44058
|
-
'div',
|
|
44059
|
-
{ className: 'flight__info' },
|
|
44060
|
-
React__default.createElement(
|
|
44061
|
-
'div',
|
|
44062
|
-
{ className: 'flight__info__times' },
|
|
44063
|
-
React__default.createElement('strong', null, firstLine.departureTime, ' ', firstLine.departureAirport),
|
|
44064
|
-
React__default.createElement('p', null, format$1(parseISO(firstLine.departureDate), 'EEE dd MMM yyyy'))
|
|
44065
|
-
),
|
|
44066
|
-
React__default.createElement(
|
|
44067
|
-
'div',
|
|
44068
|
-
{ className: 'flight__info__duration' },
|
|
44069
|
-
React__default.createElement('p', null, formatDuration(flight.flightMetaData.durationInTicks)),
|
|
44070
|
-
React__default.createElement(
|
|
44071
|
-
'div',
|
|
44072
|
-
{ className: 'flight__info__duration__stops' },
|
|
44073
|
-
stops > 0 && React__default.createElement('div', { className: 'flight__info__duration__stop' })
|
|
44074
|
-
),
|
|
44075
|
-
React__default.createElement(
|
|
44076
|
-
'span',
|
|
44077
|
-
null,
|
|
44078
|
-
stops === 0
|
|
44079
|
-
? translations.SRP.DIRECT
|
|
44080
|
-
: ''
|
|
44081
|
-
.concat(stops, ' ')
|
|
44082
|
-
.concat(translations.SRP.STOP)
|
|
44083
|
-
.concat(stops > 1 ? 's' : '')
|
|
44084
|
-
)
|
|
44085
|
-
),
|
|
44086
|
-
React__default.createElement(
|
|
44087
|
-
'div',
|
|
44088
|
-
{ className: 'flight__info__times flight__info__times--arrival' },
|
|
44089
|
-
React__default.createElement('strong', null, lastLine.arrivalTime, ' ', lastLine.arrivalAirport),
|
|
44090
|
-
React__default.createElement('p', null, format$1(parseISO(lastLine.arrivalDate), 'EEE dd MMM yyyy'))
|
|
44091
|
-
)
|
|
44092
|
-
)
|
|
44093
|
-
),
|
|
44094
|
-
React__default.createElement(
|
|
44095
|
-
'div',
|
|
44096
|
-
{ className: 'flight__detail__btn__wrapper' },
|
|
44097
|
-
React__default.createElement(
|
|
44098
|
-
'div',
|
|
44099
|
-
{
|
|
44100
|
-
className: 'flight__detail__btn '.concat(activeDetailId === flight.flightOptionId ? 'flight__detail__btn--active' : ''),
|
|
44101
|
-
onClick: function () {
|
|
44102
|
-
return handleDetailClick(flight.flightOptionId);
|
|
44103
|
-
}
|
|
44104
|
-
},
|
|
44105
|
-
React__default.createElement(Icon$1, { name: 'ui-chevron', className: 'flight__detail__btn__arrow', width: 16, height: 16 })
|
|
44106
|
-
)
|
|
44107
|
-
)
|
|
44108
|
-
),
|
|
44109
|
-
React__default.createElement(
|
|
44110
|
-
'div',
|
|
44111
|
-
{ className: 'flight__detail '.concat(activeDetailId === flight.flightOptionId ? 'flight__detail--active' : '') },
|
|
44112
|
-
lines.map(function (line, index) {
|
|
44113
|
-
var nextLine = lines[index + 1];
|
|
44114
|
-
return React__default.createElement(
|
|
44115
|
-
React__default.Fragment,
|
|
44116
|
-
{ key: index },
|
|
44117
|
-
React__default.createElement(
|
|
44118
|
-
'div',
|
|
44119
|
-
{ className: 'flight__info' },
|
|
44120
|
-
React__default.createElement(
|
|
44121
|
-
'div',
|
|
44122
|
-
{ className: 'flight__info__times__wrapper' },
|
|
44123
|
-
React__default.createElement(
|
|
44124
|
-
'div',
|
|
44125
|
-
{ className: 'flight__info__times' },
|
|
44126
|
-
React__default.createElement('p', null, line.departureTime),
|
|
44127
|
-
React__default.createElement('strong', null, line.departureAirport),
|
|
44128
|
-
React__default.createElement('p', null, format$1(parseISO(line.departureDate), 'EEE dd MMM yyyy'))
|
|
44129
|
-
),
|
|
44130
|
-
React__default.createElement(Icon$1, { name: 'ui-plane-depart', width: 30, height: 20 })
|
|
44131
|
-
),
|
|
44132
|
-
React__default.createElement(
|
|
44133
|
-
'div',
|
|
44134
|
-
{ className: 'flight__info__duration' },
|
|
44135
|
-
React__default.createElement('p', null, formatDuration(line.durationInTicks)),
|
|
44136
|
-
React__default.createElement('span', null, line.airline, ' ', line.number)
|
|
44137
|
-
),
|
|
44138
|
-
React__default.createElement(
|
|
44139
|
-
'div',
|
|
44140
|
-
{ className: 'flight__info__times__wrapper flight__info__times__wrapper--arrival' },
|
|
44141
|
-
React__default.createElement(Icon$1, { name: 'ui-plane-arrive', width: 30, height: 20 }),
|
|
44142
|
-
React__default.createElement(
|
|
44143
|
-
'div',
|
|
44144
|
-
{ className: 'flight__info__times flight__info__times--arrival' },
|
|
44145
|
-
React__default.createElement('p', null, line.arrivalTime),
|
|
44146
|
-
React__default.createElement('strong', null, line.arrivalAirport),
|
|
44147
|
-
React__default.createElement('p', null, format$1(parseISO(line.arrivalDate), 'EEE dd MMM yyyy'))
|
|
44148
|
-
)
|
|
44149
|
-
)
|
|
44150
|
-
),
|
|
44151
|
-
nextLine &&
|
|
44152
|
-
React__default.createElement(
|
|
44153
|
-
'div',
|
|
44154
|
-
{ className: 'flight__info' },
|
|
44155
|
-
React__default.createElement(
|
|
44156
|
-
'div',
|
|
44157
|
-
{ className: 'flight__info__duration flight__info__duration--waittime' },
|
|
44158
|
-
React__default.createElement(
|
|
44159
|
-
'div',
|
|
44160
|
-
{ className: 'flight__info__duration__stops flight__info__duration__stops--stoptime' },
|
|
44161
|
-
React__default.createElement(Icon$1, { name: 'ui-clock', width: 24, height: 24 })
|
|
44162
|
-
),
|
|
44163
|
-
React__default.createElement(
|
|
44164
|
-
'div',
|
|
44165
|
-
{ className: 'flight__info__duration__stoptime' },
|
|
44166
|
-
React__default.createElement('span', null, translations.SRP.STOP_TIME),
|
|
44167
|
-
React__default.createElement(
|
|
44168
|
-
'strong',
|
|
44169
|
-
null,
|
|
44170
|
-
formatDuration(parseISO(nextLine.departureDate).getTime() - parseISO(line.arrivalDate).getTime())
|
|
44171
|
-
)
|
|
44172
|
-
)
|
|
44173
|
-
)
|
|
44174
|
-
)
|
|
44175
|
-
);
|
|
44176
|
-
})
|
|
44177
|
-
)
|
|
44178
|
-
)
|
|
44179
|
-
),
|
|
44180
|
-
React__default.createElement('div', { className: 'flight__rate' })
|
|
44181
|
-
)
|
|
44182
|
-
)
|
|
44183
|
-
);
|
|
44184
|
-
})
|
|
44185
|
-
)
|
|
44186
|
-
);
|
|
44187
|
-
};
|
|
44188
|
-
|
|
44189
43975
|
var PairedFlightOption = function (_a) {
|
|
44190
43976
|
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
|
|
44191
43977
|
var item = _a.item;
|
|
@@ -44634,7 +44420,6 @@ var IndependentFlightOption = function (_a) {
|
|
|
44634
44420
|
guid = _a.guid,
|
|
44635
44421
|
selectedGuid = _a.selectedGuid;
|
|
44636
44422
|
_a.isOutward;
|
|
44637
|
-
useDispatch();
|
|
44638
44423
|
var context = useContext(SearchResultsConfigurationContext);
|
|
44639
44424
|
var language = (_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB';
|
|
44640
44425
|
var translations = getTranslations(language);
|
|
@@ -44849,14 +44634,6 @@ var IndependentFlightOption = function (_a) {
|
|
|
44849
44634
|
);
|
|
44850
44635
|
};
|
|
44851
44636
|
|
|
44852
|
-
var getFlightKey = function (segments) {
|
|
44853
|
-
if (!segments || segments.length === 0) return '';
|
|
44854
|
-
return segments
|
|
44855
|
-
.map(function (s) {
|
|
44856
|
-
return ''.concat(s.marketingAirlineCode).concat(s.flightNumber, '_').concat(s.departureDateTime);
|
|
44857
|
-
})
|
|
44858
|
-
.join('_');
|
|
44859
|
-
};
|
|
44860
44637
|
var IndependentFlightSelection = function (_a) {
|
|
44861
44638
|
var _b;
|
|
44862
44639
|
var searchResults = _a.searchResults;
|
|
@@ -47076,6 +46853,118 @@ var getRequestRoomsFromPackagingSegments = function (entry, segments) {
|
|
|
47076
46853
|
});
|
|
47077
46854
|
};
|
|
47078
46855
|
|
|
46856
|
+
var formatNodeDate = function (date) {
|
|
46857
|
+
if (!date) return '';
|
|
46858
|
+
try {
|
|
46859
|
+
return new Intl.DateTimeFormat('nl-BE', {
|
|
46860
|
+
weekday: 'long',
|
|
46861
|
+
day: '2-digit',
|
|
46862
|
+
month: '2-digit',
|
|
46863
|
+
year: 'numeric'
|
|
46864
|
+
}).format(date);
|
|
46865
|
+
} catch (_a) {
|
|
46866
|
+
return '';
|
|
46867
|
+
}
|
|
46868
|
+
};
|
|
46869
|
+
var escapeHtml = function (value) {
|
|
46870
|
+
if (!value) return '';
|
|
46871
|
+
return value.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, ''');
|
|
46872
|
+
};
|
|
46873
|
+
var buildItineraryHtml = function (itinerary) {
|
|
46874
|
+
var _a;
|
|
46875
|
+
if (!itinerary) {
|
|
46876
|
+
return '\n <div class="itinerary-shell">\n <div class="itinerary-empty">Geen reisroute beschikbaar.</div>\n </div>\n ';
|
|
46877
|
+
}
|
|
46878
|
+
var nodesHtml = ((_a = itinerary.nodes) !== null && _a !== void 0 ? _a : [])
|
|
46879
|
+
.map(function (node) {
|
|
46880
|
+
var hasItems = Array.isArray(node.items) && node.items.length > 0;
|
|
46881
|
+
var itemsHtml = hasItems
|
|
46882
|
+
? node.items
|
|
46883
|
+
.map(function (item) {
|
|
46884
|
+
var _a;
|
|
46885
|
+
return '\n <article class="itinerary-item" data-template="'
|
|
46886
|
+
.concat(escapeHtml(item.templateName), '">\n ')
|
|
46887
|
+
.concat((_a = item.contents) !== null && _a !== void 0 ? _a : '', '\n </article>\n ');
|
|
46888
|
+
})
|
|
46889
|
+
.join('')
|
|
46890
|
+
: '<div class="itinerary-node__empty">Geen items voor deze dag.</div>';
|
|
46891
|
+
return '\n <section class="itinerary-node">\n <header class="itinerary-node__header">\n <div class="itinerary-node__day">Dag '
|
|
46892
|
+
.concat(node.startDay)
|
|
46893
|
+
.concat(
|
|
46894
|
+
node.endDay > node.startDay ? ' - '.concat(node.endDay) : '',
|
|
46895
|
+
'</div>\n <div class="itinerary-node__meta">\n <h2 class="itinerary-node__title">'
|
|
46896
|
+
)
|
|
46897
|
+
.concat(escapeHtml(node.title), '</h2>\n <div class="itinerary-node__date">')
|
|
46898
|
+
.concat(
|
|
46899
|
+
escapeHtml(formatNodeDate(node.startDate)),
|
|
46900
|
+
'</div>\n </div>\n </header>\n\n <div class="itinerary-node__content">\n '
|
|
46901
|
+
)
|
|
46902
|
+
.concat(itemsHtml, '\n </div>\n </section>\n ');
|
|
46903
|
+
})
|
|
46904
|
+
.join('');
|
|
46905
|
+
var defaultItemsHtml =
|
|
46906
|
+
itinerary.defaultItems && itinerary.defaultItems.length > 0
|
|
46907
|
+
? '\n <section class="itinerary-default-items">\n <h2 class="itinerary-default-items__title">Algemene info</h2>\n '.concat(
|
|
46908
|
+
itinerary.defaultItems
|
|
46909
|
+
.map(function (item) {
|
|
46910
|
+
var _a;
|
|
46911
|
+
return '\n <article class="itinerary-item" data-template="'
|
|
46912
|
+
.concat(escapeHtml(item.templateName), '">\n ')
|
|
46913
|
+
.concat((_a = item.contents) !== null && _a !== void 0 ? _a : '', '\n </article>\n ');
|
|
46914
|
+
})
|
|
46915
|
+
.join(''),
|
|
46916
|
+
'\n </section>\n '
|
|
46917
|
+
)
|
|
46918
|
+
: '';
|
|
46919
|
+
return '\n <div class="itinerary-shell">\n '
|
|
46920
|
+
.concat(
|
|
46921
|
+
itinerary.title
|
|
46922
|
+
? '<header class="itinerary-shell__header"><h1 class="itinerary-shell__title">'.concat(escapeHtml(itinerary.title), '</h1></header>')
|
|
46923
|
+
: '',
|
|
46924
|
+
'\n\n <div class="itinerary-shell__content">\n '
|
|
46925
|
+
)
|
|
46926
|
+
.concat(nodesHtml, '\n ')
|
|
46927
|
+
.concat(defaultItemsHtml, '\n </div>\n </div>\n ');
|
|
46928
|
+
};
|
|
46929
|
+
var FullItinerary = function (_a) {
|
|
46930
|
+
var isLoading = _a.isLoading;
|
|
46931
|
+
if (isLoading) {
|
|
46932
|
+
return React__default.createElement(Spinner, null);
|
|
46933
|
+
}
|
|
46934
|
+
var itinerary = useSelector(function (state) {
|
|
46935
|
+
return state.searchResults;
|
|
46936
|
+
}).itinerary;
|
|
46937
|
+
var hostRef = useRef(null);
|
|
46938
|
+
var shadowRootRef = useRef(null);
|
|
46939
|
+
var html = useMemo(
|
|
46940
|
+
function () {
|
|
46941
|
+
return buildItineraryHtml(itinerary);
|
|
46942
|
+
},
|
|
46943
|
+
[itinerary]
|
|
46944
|
+
);
|
|
46945
|
+
useEffect(
|
|
46946
|
+
function () {
|
|
46947
|
+
var _a;
|
|
46948
|
+
if (!hostRef.current) {
|
|
46949
|
+
return;
|
|
46950
|
+
}
|
|
46951
|
+
if (!shadowRootRef.current) {
|
|
46952
|
+
shadowRootRef.current = hostRef.current.attachShadow({ mode: 'open' });
|
|
46953
|
+
}
|
|
46954
|
+
var shadowRoot = shadowRootRef.current;
|
|
46955
|
+
shadowRoot.innerHTML =
|
|
46956
|
+
"\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 "
|
|
46957
|
+
.concat(
|
|
46958
|
+
(_a = itinerary === null || itinerary === void 0 ? void 0 : itinerary.styleSheetBody) !== null && _a !== void 0 ? _a : '',
|
|
46959
|
+
'\n </style>\n\n '
|
|
46960
|
+
)
|
|
46961
|
+
.concat(html, '\n ');
|
|
46962
|
+
},
|
|
46963
|
+
[html, itinerary === null || itinerary === void 0 ? void 0 : itinerary.styleSheetBody]
|
|
46964
|
+
);
|
|
46965
|
+
return React__default.createElement('div', { ref: hostRef });
|
|
46966
|
+
};
|
|
46967
|
+
|
|
47079
46968
|
var SearchResultsContainer = function () {
|
|
47080
46969
|
var _a, _b;
|
|
47081
46970
|
var currentSearch = typeof window !== 'undefined' ? window.location.search : '';
|
|
@@ -47088,9 +46977,9 @@ var SearchResultsContainer = function () {
|
|
|
47088
46977
|
results = _c.results,
|
|
47089
46978
|
filteredResults = _c.filteredResults,
|
|
47090
46979
|
packagingAccoResults = _c.packagingAccoResults,
|
|
47091
|
-
filteredPackagingAccoResults = _c.filteredPackagingAccoResults
|
|
47092
|
-
|
|
47093
|
-
|
|
46980
|
+
filteredPackagingAccoResults = _c.filteredPackagingAccoResults;
|
|
46981
|
+
_c.bookingPackageDetails;
|
|
46982
|
+
var isLoading = _c.isLoading,
|
|
47094
46983
|
filters = _c.filters,
|
|
47095
46984
|
selectedSortType = _c.selectedSortType,
|
|
47096
46985
|
selectedSearchResult = _c.selectedSearchResult,
|
|
@@ -47099,7 +46988,9 @@ var SearchResultsContainer = function () {
|
|
|
47099
46988
|
packagingAccoSearchDetails = _c.packagingAccoSearchDetails,
|
|
47100
46989
|
editablePackagingEntry = _c.editablePackagingEntry,
|
|
47101
46990
|
transactionId = _c.transactionId,
|
|
47102
|
-
accommodationFlyInStep = _c.accommodationFlyInStep
|
|
46991
|
+
accommodationFlyInStep = _c.accommodationFlyInStep,
|
|
46992
|
+
itinerary = _c.itinerary,
|
|
46993
|
+
packagingFlightResults = _c.packagingFlightResults;
|
|
47103
46994
|
var isMobile = useMediaQuery('(max-width: 1200px)');
|
|
47104
46995
|
var _d = useState(false),
|
|
47105
46996
|
initialFiltersSet = _d[0],
|
|
@@ -47117,11 +47008,15 @@ var SearchResultsContainer = function () {
|
|
|
47117
47008
|
pricesAreLoading = _h[0],
|
|
47118
47009
|
setPricesAreLoading = _h[1];
|
|
47119
47010
|
var _j = useState(false),
|
|
47120
|
-
|
|
47121
|
-
|
|
47122
|
-
var _k = useState(
|
|
47123
|
-
|
|
47124
|
-
|
|
47011
|
+
itineraryIsLoading = _j[0],
|
|
47012
|
+
setItineraryIsLoading = _j[1];
|
|
47013
|
+
var _k = useState(false),
|
|
47014
|
+
itineraryOpen = _k[0],
|
|
47015
|
+
setItineraryOpen = _k[1];
|
|
47016
|
+
var _l = useState(null),
|
|
47017
|
+
selectedAccommodationSeed = _l[0],
|
|
47018
|
+
setSelectedAccommodationSeed = _l[1];
|
|
47019
|
+
var skipInitialPackagingAccoDetailsRef = useRef(false);
|
|
47125
47020
|
var panelRef = useRef(null);
|
|
47126
47021
|
var sortByTypes = [
|
|
47127
47022
|
{ direction: 'asc', label: 'default' },
|
|
@@ -47233,7 +47128,7 @@ var SearchResultsContainer = function () {
|
|
|
47233
47128
|
};
|
|
47234
47129
|
};
|
|
47235
47130
|
var buildPackagingAccommodationRequestFromSeed = function (seed, currentTransactionId) {
|
|
47236
|
-
var _a, _b, _c, _d;
|
|
47131
|
+
var _a, _b, _c, _d, _e, _f;
|
|
47237
47132
|
var country = seed.country;
|
|
47238
47133
|
var region = seed.region;
|
|
47239
47134
|
var oord = seed.oord;
|
|
@@ -47269,11 +47164,15 @@ var SearchResultsContainer = function () {
|
|
|
47269
47164
|
}
|
|
47270
47165
|
return {
|
|
47271
47166
|
transactionId: currentTransactionId,
|
|
47272
|
-
officeId:
|
|
47273
|
-
|
|
47274
|
-
|
|
47167
|
+
officeId:
|
|
47168
|
+
(_c = (_b = context === null || context === void 0 ? void 0 : context.tideConnection) === null || _b === void 0 ? void 0 : _b.officeId) !== null &&
|
|
47169
|
+
_c !== void 0
|
|
47170
|
+
? _c
|
|
47171
|
+
: 1,
|
|
47172
|
+
agentId: (_d = context === null || context === void 0 ? void 0 : context.agentId) !== null && _d !== void 0 ? _d : null,
|
|
47173
|
+
catalogueId: (_e = context.searchConfiguration.defaultCatalogueId) !== null && _e !== void 0 ? _e : 0,
|
|
47275
47174
|
searchConfigurationId: context.searchConfiguration.id,
|
|
47276
|
-
language: (
|
|
47175
|
+
language: (_f = context.languageCode) !== null && _f !== void 0 ? _f : 'en-GB',
|
|
47277
47176
|
serviceType: ACCOMMODATION_SERVICE_TYPE,
|
|
47278
47177
|
fromDate: seed.fromDate,
|
|
47279
47178
|
toDate: seed.toDate,
|
|
@@ -47291,6 +47190,74 @@ var SearchResultsContainer = function () {
|
|
|
47291
47190
|
tagIds: tagId ? [tagId] : []
|
|
47292
47191
|
};
|
|
47293
47192
|
};
|
|
47193
|
+
var buildPackagingFlightRequestFromSeed = function (seed, currentTransactionId) {
|
|
47194
|
+
var _a, _b, _c, _d;
|
|
47195
|
+
if (typeof window !== 'undefined') {
|
|
47196
|
+
window.scrollTo(0, 0);
|
|
47197
|
+
}
|
|
47198
|
+
var adults = seed.rooms
|
|
47199
|
+
.flatMap(function (x) {
|
|
47200
|
+
return x.pax;
|
|
47201
|
+
})
|
|
47202
|
+
.filter(function (x) {
|
|
47203
|
+
return x.age >= 18;
|
|
47204
|
+
}).length;
|
|
47205
|
+
var kids = seed.rooms
|
|
47206
|
+
.flatMap(function (x) {
|
|
47207
|
+
return x.pax;
|
|
47208
|
+
})
|
|
47209
|
+
.filter(function (x) {
|
|
47210
|
+
return x.age >= 2 && x.age < 18;
|
|
47211
|
+
}).length;
|
|
47212
|
+
var babies = seed.rooms
|
|
47213
|
+
.flatMap(function (x) {
|
|
47214
|
+
return x.pax;
|
|
47215
|
+
})
|
|
47216
|
+
.filter(function (x) {
|
|
47217
|
+
return x.age < 2;
|
|
47218
|
+
}).length;
|
|
47219
|
+
return {
|
|
47220
|
+
transactionId: currentTransactionId,
|
|
47221
|
+
officeId:
|
|
47222
|
+
(_b = (_a = context === null || context === void 0 ? void 0 : context.tideConnection) === null || _a === void 0 ? void 0 : _a.officeId) !== null &&
|
|
47223
|
+
_b !== void 0
|
|
47224
|
+
? _b
|
|
47225
|
+
: 1,
|
|
47226
|
+
catalogueId:
|
|
47227
|
+
(_d = first((_c = context === null || context === void 0 ? void 0 : context.tideConnection) === null || _c === void 0 ? void 0 : _c.catalogueIds)) !==
|
|
47228
|
+
null && _d !== void 0
|
|
47229
|
+
? _d
|
|
47230
|
+
: 0,
|
|
47231
|
+
departureAirportCode: seed.departureAirport,
|
|
47232
|
+
arrivalAirportCode: seed.destinationAirport,
|
|
47233
|
+
returnAirportCode: seed.returnAirport,
|
|
47234
|
+
luggageIncluded: null,
|
|
47235
|
+
maxStops: null,
|
|
47236
|
+
travelClass: seed.travelClass,
|
|
47237
|
+
pax: concat(
|
|
47238
|
+
Array.from({ length: adults !== null && adults !== void 0 ? adults : 0 }, function (_, index) {
|
|
47239
|
+
return {
|
|
47240
|
+
id: index,
|
|
47241
|
+
age: 31
|
|
47242
|
+
};
|
|
47243
|
+
}),
|
|
47244
|
+
Array.from({ length: kids !== null && kids !== void 0 ? kids : 0 }, function (_, index) {
|
|
47245
|
+
return {
|
|
47246
|
+
id: index + (adults !== null && adults !== void 0 ? adults : 0),
|
|
47247
|
+
age: 8
|
|
47248
|
+
};
|
|
47249
|
+
}),
|
|
47250
|
+
Array.from({ length: babies !== null && babies !== void 0 ? babies : 0 }, function (_, index) {
|
|
47251
|
+
return {
|
|
47252
|
+
id: index + (adults !== null && adults !== void 0 ? adults : 0) + (kids !== null && kids !== void 0 ? kids : 0),
|
|
47253
|
+
age: 1
|
|
47254
|
+
};
|
|
47255
|
+
})
|
|
47256
|
+
),
|
|
47257
|
+
outward: seed.fromDate ? { date: dateToDateStruct(new Date(seed.fromDate)) } : null,
|
|
47258
|
+
return: seed.toDate ? { date: dateToDateStruct(new Date(seed.toDate)) } : null
|
|
47259
|
+
};
|
|
47260
|
+
};
|
|
47294
47261
|
var buildSearchSeedFromQueryParams = function (params) {
|
|
47295
47262
|
var from = getDateFromParams(params, 'fromDate');
|
|
47296
47263
|
var to = getDateFromParams(params, 'toDate');
|
|
@@ -47303,6 +47270,8 @@ var SearchResultsContainer = function () {
|
|
|
47303
47270
|
var tagId = getNumberFromParams(params, 'tagId');
|
|
47304
47271
|
var destinationAirport = getStringFromParams(params, 'destinationAirport');
|
|
47305
47272
|
var departureAirport = getStringFromParams(params, 'departureAirport');
|
|
47273
|
+
var travelClass = getStringFromParams(params, 'travelClass');
|
|
47274
|
+
var nationality = getStringFromParams(params, 'nationality');
|
|
47306
47275
|
if (!from || !to) {
|
|
47307
47276
|
return null;
|
|
47308
47277
|
}
|
|
@@ -47318,12 +47287,68 @@ var SearchResultsContainer = function () {
|
|
|
47318
47287
|
tagId: tagId,
|
|
47319
47288
|
destinationAirport: destinationAirport,
|
|
47320
47289
|
departureAirport: departureAirport,
|
|
47290
|
+
travelClass: travelClass,
|
|
47291
|
+
nationality: nationality,
|
|
47321
47292
|
rooms: getRequestRooms(rooms)
|
|
47322
47293
|
};
|
|
47323
47294
|
};
|
|
47295
|
+
var buildSearchSeedFromAccommodationSegments = function (entry, segments) {
|
|
47296
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
47297
|
+
if (!(segments === null || segments === void 0 ? void 0 : segments.length)) return null;
|
|
47298
|
+
var sortedSegments = __spreadArray([], segments, true).sort(function (a, b) {
|
|
47299
|
+
return new Date(a.from).getTime() - new Date(b.from).getTime();
|
|
47300
|
+
});
|
|
47301
|
+
var firstSegment = first(sortedSegments);
|
|
47302
|
+
var lastSegment = last(sortedSegments);
|
|
47303
|
+
if (!firstSegment || !lastSegment) return null;
|
|
47304
|
+
return {
|
|
47305
|
+
fromDate: toDateOnlyString(firstSegment.from),
|
|
47306
|
+
toDate: toDateOnlyString(lastSegment.to),
|
|
47307
|
+
country: (_b = (_a = firstSegment.country) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : null,
|
|
47308
|
+
region: (_d = (_c = firstSegment.region) === null || _c === void 0 ? void 0 : _c.id) !== null && _d !== void 0 ? _d : null,
|
|
47309
|
+
oord: (_f = (_e = firstSegment.oord) === null || _e === void 0 ? void 0 : _e.id) !== null && _f !== void 0 ? _f : null,
|
|
47310
|
+
location: (_h = (_g = firstSegment.location) === null || _g === void 0 ? void 0 : _g.id) !== null && _h !== void 0 ? _h : null,
|
|
47311
|
+
hotel: parseHotelId(firstSegment),
|
|
47312
|
+
hotelCode: (_j = firstSegment.productCode) !== null && _j !== void 0 ? _j : null,
|
|
47313
|
+
tagId: null,
|
|
47314
|
+
destinationAirport: getDestinationAirportFromEntry((_k = entry.lines) !== null && _k !== void 0 ? _k : []),
|
|
47315
|
+
departureAirport: getDepartureAirportFromEntry((_l = entry.lines) !== null && _l !== void 0 ? _l : []),
|
|
47316
|
+
rooms: getRequestRoomsFromPackagingSegments(entry, sortedSegments)
|
|
47317
|
+
};
|
|
47318
|
+
};
|
|
47319
|
+
var handleEditAccommodation = function (segments) {
|
|
47320
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
47321
|
+
var sourceEntry, seed, currentTransactionId;
|
|
47322
|
+
return __generator(this, function (_a) {
|
|
47323
|
+
switch (_a.label) {
|
|
47324
|
+
case 0:
|
|
47325
|
+
sourceEntry =
|
|
47326
|
+
editablePackagingEntry !== null && editablePackagingEntry !== void 0
|
|
47327
|
+
? editablePackagingEntry
|
|
47328
|
+
: context === null || context === void 0
|
|
47329
|
+
? void 0
|
|
47330
|
+
: context.packagingEntry;
|
|
47331
|
+
if (!sourceEntry) return [2 /*return*/];
|
|
47332
|
+
seed = buildSearchSeedFromAccommodationSegments(sourceEntry, segments);
|
|
47333
|
+
if (!seed) return [2 /*return*/];
|
|
47334
|
+
setDetailsIsLoading(true);
|
|
47335
|
+
setSelectedAccommodationSeed(seed);
|
|
47336
|
+
dispatch(setAccommodationFlyInStep('results'));
|
|
47337
|
+
handleFlyInToggle(true);
|
|
47338
|
+
return [4 /*yield*/, getOrCreateTransactionId()];
|
|
47339
|
+
case 1:
|
|
47340
|
+
currentTransactionId = _a.sent();
|
|
47341
|
+
return [4 /*yield*/, runAccommodationFlow(seed, currentTransactionId !== null && currentTransactionId !== void 0 ? currentTransactionId : '')];
|
|
47342
|
+
case 2:
|
|
47343
|
+
_a.sent();
|
|
47344
|
+
setDetailsIsLoading(false);
|
|
47345
|
+
return [2 /*return*/];
|
|
47346
|
+
}
|
|
47347
|
+
});
|
|
47348
|
+
});
|
|
47349
|
+
};
|
|
47324
47350
|
var handleConfirmHotelSwap = function () {
|
|
47325
47351
|
var updatedEntry = swapHotelInPackagingEntry();
|
|
47326
|
-
console.log('Updated entry after hotel swap', updatedEntry);
|
|
47327
47352
|
if (!updatedEntry) return;
|
|
47328
47353
|
dispatch(setEditablePackagingEntry(updatedEntry));
|
|
47329
47354
|
handleFlyInToggle(false);
|
|
@@ -47338,7 +47363,6 @@ var SearchResultsContainer = function () {
|
|
|
47338
47363
|
var details = packagingAccoSearchDetails;
|
|
47339
47364
|
if (!sourceEntry || !(details === null || details === void 0 ? void 0 : details.length)) return null;
|
|
47340
47365
|
var selectedOptionsPerRoom = getSelectedOptionsPerRoom(details);
|
|
47341
|
-
console.log('Selected options per room', selectedOptionsPerRoom);
|
|
47342
47366
|
if (!selectedOptionsPerRoom.length) return null;
|
|
47343
47367
|
var selectedHotel = details[0];
|
|
47344
47368
|
var roomIndex = 0;
|
|
@@ -47351,7 +47375,6 @@ var SearchResultsContainer = function () {
|
|
|
47351
47375
|
return x.roomIndex === roomIndex;
|
|
47352
47376
|
});
|
|
47353
47377
|
var selectedOption = selectedRoom === null || selectedRoom === void 0 ? void 0 : selectedRoom.option;
|
|
47354
|
-
console.log('selectedRoom and selectedOption for line', line, selectedRoom, selectedOption);
|
|
47355
47378
|
roomIndex++;
|
|
47356
47379
|
if (!selectedOption) {
|
|
47357
47380
|
return line;
|
|
@@ -47424,6 +47447,25 @@ var SearchResultsContainer = function () {
|
|
|
47424
47447
|
},
|
|
47425
47448
|
[filtersOpen]
|
|
47426
47449
|
);
|
|
47450
|
+
var getOrCreateTransactionId = function () {
|
|
47451
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
47452
|
+
var _a;
|
|
47453
|
+
return __generator(this, function (_b) {
|
|
47454
|
+
switch (_b.label) {
|
|
47455
|
+
case 0:
|
|
47456
|
+
if ((_a = context === null || context === void 0 ? void 0 : context.packagingEntry) === null || _a === void 0 ? void 0 : _a.transactionId) {
|
|
47457
|
+
return [2 /*return*/, context.packagingEntry.transactionId];
|
|
47458
|
+
}
|
|
47459
|
+
if (transactionId) {
|
|
47460
|
+
return [2 /*return*/, transactionId];
|
|
47461
|
+
}
|
|
47462
|
+
return [4 /*yield*/, runStartTransaction()];
|
|
47463
|
+
case 1:
|
|
47464
|
+
return [2 /*return*/, _b.sent()];
|
|
47465
|
+
}
|
|
47466
|
+
});
|
|
47467
|
+
});
|
|
47468
|
+
};
|
|
47427
47469
|
var runSearch = function () {
|
|
47428
47470
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
47429
47471
|
var config, seed, searchRequest, packageSearchResults, enrichedFilters, initialFilteredResults, err_1;
|
|
@@ -47446,7 +47488,6 @@ var SearchResultsContainer = function () {
|
|
|
47446
47488
|
return [4 /*yield*/, build.search(config, searchRequest)];
|
|
47447
47489
|
case 1:
|
|
47448
47490
|
packageSearchResults = _b.sent();
|
|
47449
|
-
console.log('Search results', packageSearchResults);
|
|
47450
47491
|
enrichedFilters = enrichFiltersWithResults(packageSearchResults, context.filters, (_a = context.tags) !== null && _a !== void 0 ? _a : []);
|
|
47451
47492
|
if (!initialFiltersSet) {
|
|
47452
47493
|
dispatch(resetFilters(enrichedFilters));
|
|
@@ -47506,11 +47547,11 @@ var SearchResultsContainer = function () {
|
|
|
47506
47547
|
var runHotelSearch = function (currentTransactionId, seed) {
|
|
47507
47548
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
47508
47549
|
var config, searchRequest, packageAccoSearchResults, enrichedFilters, initialFilteredResults, err_3;
|
|
47509
|
-
var _a;
|
|
47510
|
-
return __generator(this, function (
|
|
47511
|
-
switch (
|
|
47550
|
+
var _a, _b, _c;
|
|
47551
|
+
return __generator(this, function (_d) {
|
|
47552
|
+
switch (_d.label) {
|
|
47512
47553
|
case 0:
|
|
47513
|
-
|
|
47554
|
+
_d.trys.push([0, 2, , 3]);
|
|
47514
47555
|
if (!context) return [2 /*return*/];
|
|
47515
47556
|
dispatch(setIsLoading(true));
|
|
47516
47557
|
config = {
|
|
@@ -47520,10 +47561,9 @@ var SearchResultsContainer = function () {
|
|
|
47520
47561
|
searchRequest = buildPackagingAccommodationRequestFromSeed(seed, currentTransactionId);
|
|
47521
47562
|
searchRequest.portalId = context.portalId;
|
|
47522
47563
|
searchRequest.agentId = context.agentId;
|
|
47523
|
-
console.log('Packaging accommodation search request', searchRequest);
|
|
47524
47564
|
return [4 /*yield*/, build.searchPackagingAccommodations(config, searchRequest)];
|
|
47525
47565
|
case 1:
|
|
47526
|
-
packageAccoSearchResults =
|
|
47566
|
+
packageAccoSearchResults = _d.sent();
|
|
47527
47567
|
enrichedFilters = enrichFiltersWithPackageAccoResults(
|
|
47528
47568
|
packageAccoSearchResults,
|
|
47529
47569
|
context.filters,
|
|
@@ -47537,11 +47577,19 @@ var SearchResultsContainer = function () {
|
|
|
47537
47577
|
dispatch(setPackagingAccoResults(packageAccoSearchResults));
|
|
47538
47578
|
initialFilteredResults = applyFiltersToPackageAccoResults(packageAccoSearchResults, filters, null);
|
|
47539
47579
|
dispatch(setFilteredPackagingAccoResults(initialFilteredResults));
|
|
47580
|
+
if (initialFilteredResults.length > 0) {
|
|
47581
|
+
skipInitialPackagingAccoDetailsRef.current = true;
|
|
47582
|
+
dispatch(
|
|
47583
|
+
setSelectedPackagingAccoResult(
|
|
47584
|
+
(_c = (_b = first(initialFilteredResults)) === null || _b === void 0 ? void 0 : _b.code) !== null && _c !== void 0 ? _c : null
|
|
47585
|
+
)
|
|
47586
|
+
);
|
|
47587
|
+
}
|
|
47540
47588
|
dispatch(setIsLoading(false));
|
|
47541
47589
|
return [3 /*break*/, 3];
|
|
47542
47590
|
case 2:
|
|
47543
|
-
err_3 =
|
|
47544
|
-
console.error('
|
|
47591
|
+
err_3 = _d.sent();
|
|
47592
|
+
console.error('HotelSearch failed', err_3);
|
|
47545
47593
|
dispatch(setIsLoading(false));
|
|
47546
47594
|
return [3 /*break*/, 3];
|
|
47547
47595
|
case 3:
|
|
@@ -47550,32 +47598,61 @@ var SearchResultsContainer = function () {
|
|
|
47550
47598
|
});
|
|
47551
47599
|
});
|
|
47552
47600
|
};
|
|
47553
|
-
var runAccommodationFlow = function (seed) {
|
|
47601
|
+
var runAccommodationFlow = function (seed, currentTransactionId) {
|
|
47554
47602
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
47555
|
-
|
|
47556
|
-
|
|
47557
|
-
return __generator(this, function (_b) {
|
|
47558
|
-
switch (_b.label) {
|
|
47603
|
+
return __generator(this, function (_a) {
|
|
47604
|
+
switch (_a.label) {
|
|
47559
47605
|
case 0:
|
|
47560
47606
|
if (!context || context.showMockup) return [2 /*return*/];
|
|
47561
|
-
currentTransactionId
|
|
47562
|
-
((_a = context === null || context === void 0 ? void 0 : context.packagingEntry) === null || _a === void 0 ? void 0 : _a.transactionId) ||
|
|
47563
|
-
transactionId;
|
|
47564
|
-
console.log('Current transaction ID', currentTransactionId);
|
|
47565
|
-
if (!!currentTransactionId) return [3 /*break*/, 2];
|
|
47566
|
-
dispatch(setIsLoading(true));
|
|
47567
|
-
return [4 /*yield*/, runStartTransaction()];
|
|
47607
|
+
return [4 /*yield*/, runHotelSearch(currentTransactionId, seed)];
|
|
47568
47608
|
case 1:
|
|
47569
|
-
|
|
47570
|
-
|
|
47609
|
+
_a.sent();
|
|
47610
|
+
return [2 /*return*/];
|
|
47611
|
+
}
|
|
47612
|
+
});
|
|
47613
|
+
});
|
|
47614
|
+
};
|
|
47615
|
+
var runFlightSearch = function (currentTransactionId, seed) {
|
|
47616
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
47617
|
+
var config, searchRequest, packageFlightSearchResults, err_4;
|
|
47618
|
+
return __generator(this, function (_a) {
|
|
47619
|
+
switch (_a.label) {
|
|
47620
|
+
case 0:
|
|
47621
|
+
_a.trys.push([0, 2, , 3]);
|
|
47622
|
+
if (!context) return [2 /*return*/];
|
|
47623
|
+
dispatch(setFlightsLoading(true));
|
|
47624
|
+
config = {
|
|
47625
|
+
host: context.tideConnection.host,
|
|
47626
|
+
apiKey: context.tideConnection.apiKey
|
|
47627
|
+
};
|
|
47628
|
+
searchRequest = buildPackagingFlightRequestFromSeed(seed, currentTransactionId);
|
|
47629
|
+
searchRequest.agentId = context.agentId;
|
|
47630
|
+
return [4 /*yield*/, build.searchPackagingFlights(config, searchRequest)];
|
|
47631
|
+
case 1:
|
|
47632
|
+
packageFlightSearchResults = _a.sent();
|
|
47633
|
+
dispatch(setPackagingFlightResults(packageFlightSearchResults));
|
|
47634
|
+
dispatch(setFlightsLoading(false));
|
|
47635
|
+
return [3 /*break*/, 3];
|
|
47571
47636
|
case 2:
|
|
47572
|
-
|
|
47573
|
-
|
|
47574
|
-
|
|
47575
|
-
|
|
47576
|
-
return [4 /*yield*/, runHotelSearch(currentTransactionId, seed)];
|
|
47637
|
+
err_4 = _a.sent();
|
|
47638
|
+
console.error('FlightSearch failed', err_4);
|
|
47639
|
+
dispatch(setFlightsLoading(false));
|
|
47640
|
+
return [3 /*break*/, 3];
|
|
47577
47641
|
case 3:
|
|
47578
|
-
|
|
47642
|
+
return [2 /*return*/];
|
|
47643
|
+
}
|
|
47644
|
+
});
|
|
47645
|
+
});
|
|
47646
|
+
};
|
|
47647
|
+
var runFlightFlow = function (seed, currentTransactionId) {
|
|
47648
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
47649
|
+
return __generator(this, function (_a) {
|
|
47650
|
+
switch (_a.label) {
|
|
47651
|
+
case 0:
|
|
47652
|
+
if (!context || context.showMockup) return [2 /*return*/];
|
|
47653
|
+
return [4 /*yield*/, runFlightSearch(currentTransactionId, seed)];
|
|
47654
|
+
case 1:
|
|
47655
|
+
_a.sent();
|
|
47579
47656
|
return [2 /*return*/];
|
|
47580
47657
|
}
|
|
47581
47658
|
});
|
|
@@ -47592,20 +47669,60 @@ var SearchResultsContainer = function () {
|
|
|
47592
47669
|
runSearch();
|
|
47593
47670
|
}
|
|
47594
47671
|
if ((context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.Accommodation) {
|
|
47595
|
-
var
|
|
47596
|
-
if (
|
|
47597
|
-
|
|
47672
|
+
var seed_1 = activeSearchSeed;
|
|
47673
|
+
if (seed_1) {
|
|
47674
|
+
(function () {
|
|
47675
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
47676
|
+
var transactionId;
|
|
47677
|
+
return __generator(this, function (_a) {
|
|
47678
|
+
switch (_a.label) {
|
|
47679
|
+
case 0:
|
|
47680
|
+
return [4 /*yield*/, getOrCreateTransactionId()];
|
|
47681
|
+
case 1:
|
|
47682
|
+
transactionId = _a.sent();
|
|
47683
|
+
if (!transactionId) return [2 /*return*/];
|
|
47684
|
+
return [4 /*yield*/, runAccommodationFlow(seed_1, transactionId)];
|
|
47685
|
+
case 2:
|
|
47686
|
+
_a.sent();
|
|
47687
|
+
return [2 /*return*/];
|
|
47688
|
+
}
|
|
47689
|
+
});
|
|
47690
|
+
});
|
|
47691
|
+
})();
|
|
47598
47692
|
}
|
|
47599
47693
|
}
|
|
47600
47694
|
if (
|
|
47601
47695
|
(context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.AccommodationAndFlight &&
|
|
47602
47696
|
context.searchConfiguration.enableManualPackaging &&
|
|
47603
|
-
context.searchConfiguration.allowAccommodations &&
|
|
47604
47697
|
!(context === null || context === void 0 ? void 0 : context.packagingEntry)
|
|
47605
47698
|
) {
|
|
47606
|
-
var
|
|
47607
|
-
if (
|
|
47608
|
-
|
|
47699
|
+
var seed_2 = activeSearchSeed;
|
|
47700
|
+
if (seed_2) {
|
|
47701
|
+
(function () {
|
|
47702
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
47703
|
+
var sharedTransactionId, tasks;
|
|
47704
|
+
return __generator(this, function (_a) {
|
|
47705
|
+
switch (_a.label) {
|
|
47706
|
+
case 0:
|
|
47707
|
+
return [4 /*yield*/, getOrCreateTransactionId()];
|
|
47708
|
+
case 1:
|
|
47709
|
+
sharedTransactionId = _a.sent();
|
|
47710
|
+
if (!sharedTransactionId) return [2 /*return*/];
|
|
47711
|
+
tasks = [];
|
|
47712
|
+
if (context.searchConfiguration.allowAccommodations) {
|
|
47713
|
+
tasks.push(runAccommodationFlow(seed_2, sharedTransactionId));
|
|
47714
|
+
}
|
|
47715
|
+
if (context.searchConfiguration.allowFlights) {
|
|
47716
|
+
tasks.push(runFlightFlow(seed_2, sharedTransactionId));
|
|
47717
|
+
}
|
|
47718
|
+
return [4 /*yield*/, Promise.all(tasks)];
|
|
47719
|
+
case 2:
|
|
47720
|
+
_a.sent();
|
|
47721
|
+
return [2 /*return*/];
|
|
47722
|
+
}
|
|
47723
|
+
});
|
|
47724
|
+
});
|
|
47725
|
+
})();
|
|
47609
47726
|
}
|
|
47610
47727
|
}
|
|
47611
47728
|
},
|
|
@@ -47621,6 +47738,7 @@ var SearchResultsContainer = function () {
|
|
|
47621
47738
|
);
|
|
47622
47739
|
useEffect(
|
|
47623
47740
|
function () {
|
|
47741
|
+
console.log('packaging entry from context', context === null || context === void 0 ? void 0 : context.packagingEntry);
|
|
47624
47742
|
if (context === null || context === void 0 ? void 0 : context.packagingEntry) {
|
|
47625
47743
|
console.log('original packaging entry from context', context.packagingEntry);
|
|
47626
47744
|
dispatch(setEditablePackagingEntry(structuredClone(context.packagingEntry)));
|
|
@@ -47634,7 +47752,7 @@ var SearchResultsContainer = function () {
|
|
|
47634
47752
|
function () {
|
|
47635
47753
|
var fetchDetails = function () {
|
|
47636
47754
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
47637
|
-
var config, selectedItem, requestRooms, seed, detailsRequest, detailsResponse,
|
|
47755
|
+
var config, selectedItem, requestRooms, seed, detailsRequest, detailsResponse, err_5;
|
|
47638
47756
|
var _a;
|
|
47639
47757
|
return __generator(this, function (_b) {
|
|
47640
47758
|
switch (_b.label) {
|
|
@@ -47697,8 +47815,8 @@ var SearchResultsContainer = function () {
|
|
|
47697
47815
|
setDetailsIsLoading(false);
|
|
47698
47816
|
return [3 /*break*/, 4];
|
|
47699
47817
|
case 3:
|
|
47700
|
-
|
|
47701
|
-
console.error('Failed to fetch package details',
|
|
47818
|
+
err_5 = _b.sent();
|
|
47819
|
+
console.error('Failed to fetch package details', err_5);
|
|
47702
47820
|
setDetailsIsLoading(false);
|
|
47703
47821
|
return [3 /*break*/, 4];
|
|
47704
47822
|
case 4:
|
|
@@ -47723,12 +47841,16 @@ var SearchResultsContainer = function () {
|
|
|
47723
47841
|
destinationIsAirport,
|
|
47724
47842
|
detailSearchRequest,
|
|
47725
47843
|
packageAccoSearchDetails,
|
|
47726
|
-
|
|
47844
|
+
err_6;
|
|
47727
47845
|
var _a, _b, _c, _d, _e;
|
|
47728
47846
|
return __generator(this, function (_f) {
|
|
47729
47847
|
switch (_f.label) {
|
|
47730
47848
|
case 0:
|
|
47731
47849
|
if (!selectedPackagingAccoResultCode || !context) return [2 /*return*/];
|
|
47850
|
+
if (skipInitialPackagingAccoDetailsRef.current) {
|
|
47851
|
+
skipInitialPackagingAccoDetailsRef.current = false;
|
|
47852
|
+
return [2 /*return*/];
|
|
47853
|
+
}
|
|
47732
47854
|
setDetailsIsLoading(true);
|
|
47733
47855
|
if (
|
|
47734
47856
|
(context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.Accommodation ||
|
|
@@ -47807,13 +47929,12 @@ var SearchResultsContainer = function () {
|
|
|
47807
47929
|
return [4 /*yield*/, build.searchPackagingAccommodations(config, detailSearchRequest)];
|
|
47808
47930
|
case 2:
|
|
47809
47931
|
packageAccoSearchDetails = _f.sent();
|
|
47810
|
-
console.log('Packaging Acco Search details', packageAccoSearchDetails);
|
|
47811
47932
|
dispatch(setPackagingAccoSearchDetails(packageAccoSearchDetails));
|
|
47812
47933
|
setDetailsIsLoading(false);
|
|
47813
47934
|
return [3 /*break*/, 4];
|
|
47814
47935
|
case 3:
|
|
47815
|
-
|
|
47816
|
-
console.error('Failed to fetch package details',
|
|
47936
|
+
err_6 = _f.sent();
|
|
47937
|
+
console.error('Failed to fetch package details', err_6);
|
|
47817
47938
|
setDetailsIsLoading(false);
|
|
47818
47939
|
return [3 /*break*/, 4];
|
|
47819
47940
|
case 4:
|
|
@@ -47850,75 +47971,15 @@ var SearchResultsContainer = function () {
|
|
|
47850
47971
|
},
|
|
47851
47972
|
[activeSearchSeed]
|
|
47852
47973
|
);
|
|
47853
|
-
var handleEditAccommodation = function (segments) {
|
|
47854
|
-
return __awaiter(void 0, void 0, void 0, function () {
|
|
47855
|
-
var sourceEntry, seed;
|
|
47856
|
-
return __generator(this, function (_a) {
|
|
47857
|
-
switch (_a.label) {
|
|
47858
|
-
case 0:
|
|
47859
|
-
sourceEntry =
|
|
47860
|
-
editablePackagingEntry !== null && editablePackagingEntry !== void 0
|
|
47861
|
-
? editablePackagingEntry
|
|
47862
|
-
: context === null || context === void 0
|
|
47863
|
-
? void 0
|
|
47864
|
-
: context.packagingEntry;
|
|
47865
|
-
if (!sourceEntry) return [2 /*return*/];
|
|
47866
|
-
seed = buildSearchSeedFromAccommodationSegments(sourceEntry, segments);
|
|
47867
|
-
if (!seed) return [2 /*return*/];
|
|
47868
|
-
setDetailsIsLoading(true);
|
|
47869
|
-
setSelectedAccommodationSeed(seed);
|
|
47870
|
-
dispatch(setAccommodationFlyInStep('results'));
|
|
47871
|
-
handleFlyInToggle(true);
|
|
47872
|
-
return [4 /*yield*/, runAccommodationFlow(seed)];
|
|
47873
|
-
case 1:
|
|
47874
|
-
_a.sent();
|
|
47875
|
-
setDetailsIsLoading(false);
|
|
47876
|
-
return [2 /*return*/];
|
|
47877
|
-
}
|
|
47878
|
-
});
|
|
47879
|
-
});
|
|
47880
|
-
};
|
|
47881
|
-
var buildSearchSeedFromAccommodationSegments = function (entry, segments) {
|
|
47882
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
47883
|
-
if (!(segments === null || segments === void 0 ? void 0 : segments.length)) return null;
|
|
47884
|
-
var sortedSegments = __spreadArray([], segments, true).sort(function (a, b) {
|
|
47885
|
-
return new Date(a.from).getTime() - new Date(b.from).getTime();
|
|
47886
|
-
});
|
|
47887
|
-
var firstSegment = first(sortedSegments);
|
|
47888
|
-
var lastSegment = last(sortedSegments);
|
|
47889
|
-
if (!firstSegment || !lastSegment) return null;
|
|
47890
|
-
return {
|
|
47891
|
-
fromDate: toDateOnlyString(firstSegment.from),
|
|
47892
|
-
toDate: toDateOnlyString(lastSegment.to),
|
|
47893
|
-
country: (_b = (_a = firstSegment.country) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : null,
|
|
47894
|
-
region: (_d = (_c = firstSegment.region) === null || _c === void 0 ? void 0 : _c.id) !== null && _d !== void 0 ? _d : null,
|
|
47895
|
-
oord: (_f = (_e = firstSegment.oord) === null || _e === void 0 ? void 0 : _e.id) !== null && _f !== void 0 ? _f : null,
|
|
47896
|
-
location: (_h = (_g = firstSegment.location) === null || _g === void 0 ? void 0 : _g.id) !== null && _h !== void 0 ? _h : null,
|
|
47897
|
-
hotel: parseHotelId(firstSegment),
|
|
47898
|
-
hotelCode: (_j = firstSegment.productCode) !== null && _j !== void 0 ? _j : null,
|
|
47899
|
-
tagId: null,
|
|
47900
|
-
destinationAirport: getDestinationAirportFromEntry((_k = entry.lines) !== null && _k !== void 0 ? _k : []),
|
|
47901
|
-
departureAirport: getDepartureAirportFromEntry((_l = entry.lines) !== null && _l !== void 0 ? _l : []),
|
|
47902
|
-
rooms: getRequestRoomsFromPackagingSegments(entry, sortedSegments)
|
|
47903
|
-
};
|
|
47904
|
-
};
|
|
47905
47974
|
useEffect(
|
|
47906
47975
|
function () {
|
|
47907
47976
|
var fetchPriceDetails = function () {
|
|
47908
47977
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
47909
|
-
var config, priceDetails,
|
|
47978
|
+
var config, priceDetails, err_7;
|
|
47910
47979
|
return __generator(this, function (_a) {
|
|
47911
47980
|
switch (_a.label) {
|
|
47912
47981
|
case 0:
|
|
47913
|
-
|
|
47914
|
-
'Fetching price details for entry',
|
|
47915
|
-
editablePackagingEntry !== null && editablePackagingEntry !== void 0
|
|
47916
|
-
? editablePackagingEntry
|
|
47917
|
-
: context === null || context === void 0
|
|
47918
|
-
? void 0
|
|
47919
|
-
: context.packagingEntry
|
|
47920
|
-
);
|
|
47921
|
-
if (!context || !editablePackagingEntry) return [2 /*return*/];
|
|
47982
|
+
if (!context || !editablePackagingEntry || isEmpty(editablePackagingEntry.lines)) return [2 /*return*/];
|
|
47922
47983
|
setPricesAreLoading(true);
|
|
47923
47984
|
_a.label = 1;
|
|
47924
47985
|
case 1:
|
|
@@ -47934,8 +47995,8 @@ var SearchResultsContainer = function () {
|
|
|
47934
47995
|
setPricesAreLoading(false);
|
|
47935
47996
|
return [3 /*break*/, 4];
|
|
47936
47997
|
case 3:
|
|
47937
|
-
|
|
47938
|
-
console.error('Error fetching price details',
|
|
47998
|
+
err_7 = _a.sent();
|
|
47999
|
+
console.error('Error fetching price details', err_7);
|
|
47939
48000
|
setPricesAreLoading(false);
|
|
47940
48001
|
return [3 /*break*/, 4];
|
|
47941
48002
|
case 4:
|
|
@@ -47944,10 +48005,431 @@ var SearchResultsContainer = function () {
|
|
|
47944
48005
|
});
|
|
47945
48006
|
});
|
|
47946
48007
|
};
|
|
48008
|
+
var fetchItinerary = function () {
|
|
48009
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
48010
|
+
var config, itinerary_1, err_8;
|
|
48011
|
+
return __generator(this, function (_a) {
|
|
48012
|
+
switch (_a.label) {
|
|
48013
|
+
case 0:
|
|
48014
|
+
console.log('Fetching itinerary for entry', editablePackagingEntry);
|
|
48015
|
+
if (!context || !editablePackagingEntry || isEmpty(editablePackagingEntry.lines)) return [2 /*return*/];
|
|
48016
|
+
setItineraryIsLoading(true);
|
|
48017
|
+
_a.label = 1;
|
|
48018
|
+
case 1:
|
|
48019
|
+
_a.trys.push([1, 3, , 4]);
|
|
48020
|
+
config = {
|
|
48021
|
+
host: context.tideConnection.host,
|
|
48022
|
+
apiKey: context.tideConnection.apiKey
|
|
48023
|
+
};
|
|
48024
|
+
return [4 /*yield*/, build.getItinerary(config, editablePackagingEntry)];
|
|
48025
|
+
case 2:
|
|
48026
|
+
itinerary_1 = _a.sent();
|
|
48027
|
+
console.log('Fetched itinerary', itinerary_1);
|
|
48028
|
+
dispatch(setItinerary(itinerary_1));
|
|
48029
|
+
setItineraryIsLoading(false);
|
|
48030
|
+
return [3 /*break*/, 4];
|
|
48031
|
+
case 3:
|
|
48032
|
+
err_8 = _a.sent();
|
|
48033
|
+
console.error('Error fetching itinerary', err_8);
|
|
48034
|
+
setItineraryIsLoading(false);
|
|
48035
|
+
return [3 /*break*/, 4];
|
|
48036
|
+
case 4:
|
|
48037
|
+
return [2 /*return*/];
|
|
48038
|
+
}
|
|
48039
|
+
});
|
|
48040
|
+
});
|
|
48041
|
+
};
|
|
47947
48042
|
fetchPriceDetails();
|
|
48043
|
+
fetchItinerary();
|
|
47948
48044
|
},
|
|
47949
48045
|
[editablePackagingEntry]
|
|
47950
48046
|
);
|
|
48047
|
+
// Flight selection
|
|
48048
|
+
var _m = useState(null),
|
|
48049
|
+
selectedOutwardKey = _m[0],
|
|
48050
|
+
setSelectedOutwardKey = _m[1];
|
|
48051
|
+
var _o = useState(null),
|
|
48052
|
+
selectedReturnKey = _o[0],
|
|
48053
|
+
setSelectedReturnKey = _o[1];
|
|
48054
|
+
var uniqueOutwardFlights = React__default.useMemo(
|
|
48055
|
+
function () {
|
|
48056
|
+
var map = new Map();
|
|
48057
|
+
packagingFlightResults.forEach(function (flight) {
|
|
48058
|
+
var key = getFlightKey(flight.outward.segments);
|
|
48059
|
+
if (!map.has(key)) {
|
|
48060
|
+
map.set(key, flight);
|
|
48061
|
+
}
|
|
48062
|
+
});
|
|
48063
|
+
return Array.from(map.values());
|
|
48064
|
+
},
|
|
48065
|
+
[packagingFlightResults]
|
|
48066
|
+
);
|
|
48067
|
+
var _p = useState([]),
|
|
48068
|
+
uniqueReturnFlights = _p[0],
|
|
48069
|
+
setUniqueReturnFlights = _p[1];
|
|
48070
|
+
useEffect(
|
|
48071
|
+
function () {
|
|
48072
|
+
if (!selectedOutwardKey) {
|
|
48073
|
+
setUniqueReturnFlights([]);
|
|
48074
|
+
setSelectedReturnKey(null);
|
|
48075
|
+
return;
|
|
48076
|
+
}
|
|
48077
|
+
// Filter combinations that match selected outward fare
|
|
48078
|
+
var matchingCombinations = packagingFlightResults.filter(function (flight) {
|
|
48079
|
+
return getFlightKey(flight.outward.segments) === selectedOutwardKey;
|
|
48080
|
+
});
|
|
48081
|
+
var returnMap = new Map();
|
|
48082
|
+
matchingCombinations.forEach(function (flight) {
|
|
48083
|
+
var key = getFlightKey(flight.return.segments);
|
|
48084
|
+
if (!returnMap.has(key)) {
|
|
48085
|
+
returnMap.set(key, flight);
|
|
48086
|
+
}
|
|
48087
|
+
});
|
|
48088
|
+
var returns = Array.from(returnMap.values());
|
|
48089
|
+
setUniqueReturnFlights(returns);
|
|
48090
|
+
},
|
|
48091
|
+
[selectedOutwardKey, packagingFlightResults]
|
|
48092
|
+
);
|
|
48093
|
+
var selectedOutward = React__default.useMemo(
|
|
48094
|
+
function () {
|
|
48095
|
+
if (!selectedOutwardKey) return null;
|
|
48096
|
+
return (
|
|
48097
|
+
packagingFlightResults.find(function (flight) {
|
|
48098
|
+
return getFlightKey(flight.outward.segments) === selectedOutwardKey;
|
|
48099
|
+
}) || null
|
|
48100
|
+
);
|
|
48101
|
+
},
|
|
48102
|
+
[packagingFlightResults, selectedOutwardKey]
|
|
48103
|
+
);
|
|
48104
|
+
var selectedReturn = React__default.useMemo(
|
|
48105
|
+
function () {
|
|
48106
|
+
if (!selectedReturnKey) return null;
|
|
48107
|
+
return (
|
|
48108
|
+
packagingFlightResults.find(function (flight) {
|
|
48109
|
+
return getFlightKey(flight.return.segments) === selectedReturnKey;
|
|
48110
|
+
}) || null
|
|
48111
|
+
);
|
|
48112
|
+
},
|
|
48113
|
+
[packagingFlightResults, selectedReturnKey]
|
|
48114
|
+
);
|
|
48115
|
+
var selectedCombinationFlight = React__default.useMemo(
|
|
48116
|
+
function () {
|
|
48117
|
+
if (!selectedOutwardKey || !selectedReturnKey) return undefined;
|
|
48118
|
+
return packagingFlightResults.find(function (flight) {
|
|
48119
|
+
return getFlightKey(flight.outward.segments) === selectedOutwardKey && getFlightKey(flight.return.segments) === selectedReturnKey;
|
|
48120
|
+
});
|
|
48121
|
+
},
|
|
48122
|
+
[packagingFlightResults, selectedOutwardKey, selectedReturnKey]
|
|
48123
|
+
);
|
|
48124
|
+
// TODO: get details for selected combination flight and show in fly-in
|
|
48125
|
+
// useEffect(() => {
|
|
48126
|
+
// if (!selectedCombinationFlight) return;
|
|
48127
|
+
// dispatch(setSelectedPackagingFlight(selectedCombinationFlight));
|
|
48128
|
+
// // onFlightSearch(selectedCombinationFlight); // Trigger search to update accommodation options based on selected flight
|
|
48129
|
+
// dispatch(setFlyInIsOpen(true));
|
|
48130
|
+
// }, [selectedCombinationFlight, dispatch]);
|
|
48131
|
+
useEffect(
|
|
48132
|
+
function () {
|
|
48133
|
+
var _a, _b, _c, _d;
|
|
48134
|
+
if (!context) return;
|
|
48135
|
+
var seed = activeSearchSeed;
|
|
48136
|
+
if (!seed) return;
|
|
48137
|
+
var nextEntry = buildOrUpdatePackagingEntryPartial({
|
|
48138
|
+
sourceEntry:
|
|
48139
|
+
(_a = editablePackagingEntry !== null && editablePackagingEntry !== void 0 ? editablePackagingEntry : context.packagingEntry) !== null &&
|
|
48140
|
+
_a !== void 0
|
|
48141
|
+
? _a
|
|
48142
|
+
: null,
|
|
48143
|
+
selectedHotelCode: selectedPackagingAccoResultCode,
|
|
48144
|
+
accommodationResults: packagingAccoResults,
|
|
48145
|
+
selectedFlight: selectedCombinationFlight !== null && selectedCombinationFlight !== void 0 ? selectedCombinationFlight : null,
|
|
48146
|
+
seed: seed,
|
|
48147
|
+
transactionId:
|
|
48148
|
+
(_c =
|
|
48149
|
+
transactionId !== null && transactionId !== void 0
|
|
48150
|
+
? transactionId
|
|
48151
|
+
: (_b = context.packagingEntry) === null || _b === void 0
|
|
48152
|
+
? void 0
|
|
48153
|
+
: _b.transactionId) !== null && _c !== void 0
|
|
48154
|
+
? _c
|
|
48155
|
+
: '',
|
|
48156
|
+
language: (_d = context.languageCode) !== null && _d !== void 0 ? _d : 'en-GB'
|
|
48157
|
+
});
|
|
48158
|
+
console.log('Built next packaging entry', nextEntry);
|
|
48159
|
+
if (!nextEntry) return;
|
|
48160
|
+
dispatch(setEditablePackagingEntry(nextEntry));
|
|
48161
|
+
if (selectedCombinationFlight) {
|
|
48162
|
+
dispatch(setSelectedPackagingFlight(selectedCombinationFlight));
|
|
48163
|
+
}
|
|
48164
|
+
},
|
|
48165
|
+
[
|
|
48166
|
+
context,
|
|
48167
|
+
activeSearchSeed,
|
|
48168
|
+
selectedPackagingAccoResultCode,
|
|
48169
|
+
packagingAccoResults,
|
|
48170
|
+
packagingAccoSearchDetails,
|
|
48171
|
+
selectedCombinationFlight,
|
|
48172
|
+
transactionId,
|
|
48173
|
+
dispatch
|
|
48174
|
+
]
|
|
48175
|
+
);
|
|
48176
|
+
var removeAccommodationLines = function (lines) {
|
|
48177
|
+
return lines.filter(function (line) {
|
|
48178
|
+
return line.serviceType !== ACCOMMODATION_SERVICE_TYPE;
|
|
48179
|
+
});
|
|
48180
|
+
};
|
|
48181
|
+
var removeFlightLines = function (lines) {
|
|
48182
|
+
return lines.filter(function (line) {
|
|
48183
|
+
return line.serviceType !== FLIGHT_SERVICE_TYPE;
|
|
48184
|
+
});
|
|
48185
|
+
};
|
|
48186
|
+
var buildAccommodationLinesFromSelection = function (selectedHotel, seed) {
|
|
48187
|
+
if (!selectedHotel) return [];
|
|
48188
|
+
var parentGuid = crypto.randomUUID();
|
|
48189
|
+
return selectedHotel.rooms
|
|
48190
|
+
.filter(function (room) {
|
|
48191
|
+
return room.options.some(function (o) {
|
|
48192
|
+
return o.isSelected;
|
|
48193
|
+
});
|
|
48194
|
+
})
|
|
48195
|
+
.map(function (room, index) {
|
|
48196
|
+
var _a, _b, _c, _d, _e;
|
|
48197
|
+
var option = room.options.find(function (o) {
|
|
48198
|
+
return o.isSelected;
|
|
48199
|
+
});
|
|
48200
|
+
var pax =
|
|
48201
|
+
(_b =
|
|
48202
|
+
(_a = seed.rooms) === null || _a === void 0
|
|
48203
|
+
? void 0
|
|
48204
|
+
: _a.flatMap(function (room, roomIndex) {
|
|
48205
|
+
return room.pax.map(function (p, paxIndex) {
|
|
48206
|
+
return {
|
|
48207
|
+
paxId: p.id,
|
|
48208
|
+
room: roomIndex,
|
|
48209
|
+
order: paxIndex
|
|
48210
|
+
};
|
|
48211
|
+
});
|
|
48212
|
+
})) !== null && _b !== void 0
|
|
48213
|
+
? _b
|
|
48214
|
+
: [];
|
|
48215
|
+
return {
|
|
48216
|
+
guid: (_c = option.guid) !== null && _c !== void 0 ? _c : crypto.randomUUID(),
|
|
48217
|
+
moment: '',
|
|
48218
|
+
parentGuid: index === 0 ? null : parentGuid,
|
|
48219
|
+
order: index,
|
|
48220
|
+
isChanged: true,
|
|
48221
|
+
from: selectedHotel.fromDate,
|
|
48222
|
+
to: selectedHotel.toDate,
|
|
48223
|
+
serviceType: ACCOMMODATION_SERVICE_TYPE,
|
|
48224
|
+
productName: selectedHotel.name,
|
|
48225
|
+
productCode: selectedHotel.code,
|
|
48226
|
+
accommodationName: option.accommodationName,
|
|
48227
|
+
accommodationCode: option.accommodationCode,
|
|
48228
|
+
regimeName: option.regimeName,
|
|
48229
|
+
regimeCode: option.regimeCode,
|
|
48230
|
+
country: selectedHotel.countryId ? { id: selectedHotel.countryId, name: selectedHotel.countryName, localizations: [] } : null,
|
|
48231
|
+
region: selectedHotel.regionId ? { id: selectedHotel.regionId, name: selectedHotel.regionName, localizations: [] } : null,
|
|
48232
|
+
oord: selectedHotel.oordId ? { id: selectedHotel.oordId, name: selectedHotel.oordName, localizations: [] } : null,
|
|
48233
|
+
location: selectedHotel.locationId ? { id: selectedHotel.locationId, name: selectedHotel.locationName, localizations: [] } : null,
|
|
48234
|
+
longitude: (_d = selectedHotel.longitude) !== null && _d !== void 0 ? _d : null,
|
|
48235
|
+
latitude: (_e = selectedHotel.latitude) !== null && _e !== void 0 ? _e : null,
|
|
48236
|
+
pax: pax,
|
|
48237
|
+
flightInformation: null
|
|
48238
|
+
};
|
|
48239
|
+
});
|
|
48240
|
+
};
|
|
48241
|
+
var toDateOnlyUtcString = function (value) {
|
|
48242
|
+
var date = new Date(value);
|
|
48243
|
+
return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate())).toISOString();
|
|
48244
|
+
};
|
|
48245
|
+
var toTimeOnlyString = function (value) {
|
|
48246
|
+
var date = new Date(value);
|
|
48247
|
+
var hh = String(date.getUTCHours()).padStart(2, '0');
|
|
48248
|
+
var mm = String(date.getUTCMinutes()).padStart(2, '0');
|
|
48249
|
+
var ss = String(date.getUTCSeconds()).padStart(2, '0');
|
|
48250
|
+
return ''.concat(hh, ':').concat(mm, ':').concat(ss);
|
|
48251
|
+
};
|
|
48252
|
+
var mapFlightSegmentsToFlightLines = function (segments) {
|
|
48253
|
+
return segments.map(function (segment) {
|
|
48254
|
+
var _a;
|
|
48255
|
+
return {
|
|
48256
|
+
airlineCode: segment.marketingAirlineCode,
|
|
48257
|
+
airlineDescription: segment.marketingAirlineName,
|
|
48258
|
+
operatingAirlineCode: segment.operatingAirlineCode,
|
|
48259
|
+
operatingAirlineDescription: segment.operatingAirlineName,
|
|
48260
|
+
flightNumber: segment.flightNumber,
|
|
48261
|
+
operatingFlightNumber: (_a = segment.operatingFlightNumber) !== null && _a !== void 0 ? _a : null,
|
|
48262
|
+
departureDate: toDateOnlyUtcString(segment.departureDateTime),
|
|
48263
|
+
departureTime: toTimeOnlyString(segment.departureDateTime),
|
|
48264
|
+
departureAirportCode: segment.departureAirportCode,
|
|
48265
|
+
departureAirportDescription: segment.departureAirportName,
|
|
48266
|
+
arrivalDate: toDateOnlyUtcString(segment.arrivalDateTime),
|
|
48267
|
+
arrivalTime: toTimeOnlyString(segment.arrivalDateTime),
|
|
48268
|
+
arrivalAirportCode: segment.arrivalAirportCode,
|
|
48269
|
+
arrivalAirportDescription: segment.arrivalAirportName,
|
|
48270
|
+
durationInTicks: segment.durationInTicks
|
|
48271
|
+
};
|
|
48272
|
+
});
|
|
48273
|
+
};
|
|
48274
|
+
var buildFlightLabel = function (segments) {
|
|
48275
|
+
var firstSegment = first(segments);
|
|
48276
|
+
var lastSegment = last(segments);
|
|
48277
|
+
if (!firstSegment || !lastSegment) {
|
|
48278
|
+
return { productName: 'Flight', productCode: 'FLIGHT' };
|
|
48279
|
+
}
|
|
48280
|
+
return {
|
|
48281
|
+
productName: ''
|
|
48282
|
+
.concat(firstSegment.departureAirportName, ' - ')
|
|
48283
|
+
.concat(lastSegment.arrivalAirportName, ' (')
|
|
48284
|
+
.concat(firstSegment.marketingAirlineName, ')'),
|
|
48285
|
+
productCode: ''.concat(firstSegment.departureAirportCode, ' ').concat(lastSegment.arrivalAirportCode, '/').concat(firstSegment.marketingAirlineCode)
|
|
48286
|
+
};
|
|
48287
|
+
};
|
|
48288
|
+
var buildFlightLinesFromSelection = function (selectedFlight) {
|
|
48289
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
48290
|
+
if (!selectedFlight) return [];
|
|
48291
|
+
var outwardSegments = (_b = (_a = selectedFlight.outward) === null || _a === void 0 ? void 0 : _a.segments) !== null && _b !== void 0 ? _b : [];
|
|
48292
|
+
var returnSegments = (_d = (_c = selectedFlight.return) === null || _c === void 0 ? void 0 : _c.segments) !== null && _d !== void 0 ? _d : [];
|
|
48293
|
+
if (!outwardSegments.length || !returnSegments.length) return [];
|
|
48294
|
+
var outwardLabel = buildFlightLabel(outwardSegments);
|
|
48295
|
+
var returnLabel = buildFlightLabel(returnSegments);
|
|
48296
|
+
var outwardFirst = first(outwardSegments);
|
|
48297
|
+
var outwardLast = last(outwardSegments);
|
|
48298
|
+
var returnFirst = first(returnSegments);
|
|
48299
|
+
var returnLast = last(returnSegments);
|
|
48300
|
+
var outwardLine = {
|
|
48301
|
+
guid: selectedFlight.outwardGuid,
|
|
48302
|
+
parentGuid: null,
|
|
48303
|
+
order: 0,
|
|
48304
|
+
isChanged: true,
|
|
48305
|
+
from: (_e = outwardFirst === null || outwardFirst === void 0 ? void 0 : outwardFirst.departureDateTime.toString()) !== null && _e !== void 0 ? _e : '',
|
|
48306
|
+
to: (_f = outwardLast === null || outwardLast === void 0 ? void 0 : outwardLast.arrivalDateTime.toString()) !== null && _f !== void 0 ? _f : '',
|
|
48307
|
+
serviceType: FLIGHT_SERVICE_TYPE,
|
|
48308
|
+
productName: outwardLabel.productName,
|
|
48309
|
+
productCode: outwardLabel.productCode,
|
|
48310
|
+
accommodationName:
|
|
48311
|
+
(_g = outwardFirst === null || outwardFirst === void 0 ? void 0 : outwardFirst.metaData) === null || _g === void 0 ? void 0 : _g.farePriceClassName,
|
|
48312
|
+
accommodationCode:
|
|
48313
|
+
(_h = outwardFirst === null || outwardFirst === void 0 ? void 0 : outwardFirst.metaData) === null || _h === void 0 ? void 0 : _h.fareCode,
|
|
48314
|
+
regimeName: null,
|
|
48315
|
+
regimeCode: null,
|
|
48316
|
+
country: null,
|
|
48317
|
+
region: null,
|
|
48318
|
+
oord: null,
|
|
48319
|
+
location: null,
|
|
48320
|
+
longitude: null,
|
|
48321
|
+
latitude: null,
|
|
48322
|
+
// pax: allPaxAssignments,
|
|
48323
|
+
flightInformation: {
|
|
48324
|
+
pnr: '',
|
|
48325
|
+
flightLines: mapFlightSegmentsToFlightLines(outwardSegments)
|
|
48326
|
+
}
|
|
48327
|
+
};
|
|
48328
|
+
var returnLine = {
|
|
48329
|
+
guid: selectedFlight.returnGuid,
|
|
48330
|
+
parentGuid: selectedFlight.outwardGuid,
|
|
48331
|
+
order: 1,
|
|
48332
|
+
isChanged: true,
|
|
48333
|
+
from: (_j = returnFirst === null || returnFirst === void 0 ? void 0 : returnFirst.departureDateTime.toString()) !== null && _j !== void 0 ? _j : '',
|
|
48334
|
+
to: (_k = returnLast === null || returnLast === void 0 ? void 0 : returnLast.departureDateTime.toString()) !== null && _k !== void 0 ? _k : '',
|
|
48335
|
+
serviceType: FLIGHT_SERVICE_TYPE,
|
|
48336
|
+
productName: returnLabel.productName,
|
|
48337
|
+
productCode: returnLabel.productCode,
|
|
48338
|
+
accommodationName:
|
|
48339
|
+
(_l = returnFirst === null || returnFirst === void 0 ? void 0 : returnFirst.metaData) === null || _l === void 0 ? void 0 : _l.farePriceClassName,
|
|
48340
|
+
accommodationCode: (_m = returnFirst === null || returnFirst === void 0 ? void 0 : returnFirst.metaData) === null || _m === void 0 ? void 0 : _m.fareCode,
|
|
48341
|
+
regimeName: null,
|
|
48342
|
+
regimeCode: null,
|
|
48343
|
+
country: null,
|
|
48344
|
+
region: null,
|
|
48345
|
+
oord: null,
|
|
48346
|
+
location: null,
|
|
48347
|
+
longitude: null,
|
|
48348
|
+
latitude: null,
|
|
48349
|
+
// pax: allPaxAssignments,
|
|
48350
|
+
flightInformation: {
|
|
48351
|
+
pnr: '',
|
|
48352
|
+
flightLines: mapFlightSegmentsToFlightLines(returnSegments)
|
|
48353
|
+
}
|
|
48354
|
+
};
|
|
48355
|
+
return [outwardLine, returnLine];
|
|
48356
|
+
};
|
|
48357
|
+
var buildOrUpdatePackagingEntryPartial = function (_a) {
|
|
48358
|
+
var _b, _c;
|
|
48359
|
+
var sourceEntry = _a.sourceEntry,
|
|
48360
|
+
selectedHotelCode = _a.selectedHotelCode,
|
|
48361
|
+
accommodationResults = _a.accommodationResults,
|
|
48362
|
+
selectedFlight = _a.selectedFlight,
|
|
48363
|
+
seed = _a.seed,
|
|
48364
|
+
transactionId = _a.transactionId,
|
|
48365
|
+
language = _a.language;
|
|
48366
|
+
if (!((_b = seed === null || seed === void 0 ? void 0 : seed.rooms) === null || _b === void 0 ? void 0 : _b.length)) return null;
|
|
48367
|
+
var entry = buildBasePackagingEntry(sourceEntry, seed, transactionId, language);
|
|
48368
|
+
var nextLines = __spreadArray([], (_c = entry.lines) !== null && _c !== void 0 ? _c : [], true);
|
|
48369
|
+
var selectedHotel = selectedHotelCode
|
|
48370
|
+
? accommodationResults.find(function (r) {
|
|
48371
|
+
return r.code === selectedHotelCode;
|
|
48372
|
+
})
|
|
48373
|
+
: null;
|
|
48374
|
+
console.log('Selected hotel for packaging entry', selectedHotel);
|
|
48375
|
+
// Update accommodation only when enough data exists
|
|
48376
|
+
if (selectedHotel) {
|
|
48377
|
+
var accommodationLines = buildAccommodationLinesFromSelection(selectedHotel, seed);
|
|
48378
|
+
if (accommodationLines.length) {
|
|
48379
|
+
nextLines = removeAccommodationLines(nextLines);
|
|
48380
|
+
nextLines = __spreadArray(__spreadArray([], nextLines, true), accommodationLines, true);
|
|
48381
|
+
}
|
|
48382
|
+
}
|
|
48383
|
+
// Update flights only when full selected combination exists
|
|
48384
|
+
if (selectedFlight) {
|
|
48385
|
+
var flightLines = buildFlightLinesFromSelection(selectedFlight);
|
|
48386
|
+
console.log('selectedFlight', selectedFlight);
|
|
48387
|
+
console.log('Built flight lines from selection', flightLines);
|
|
48388
|
+
if (flightLines.length) {
|
|
48389
|
+
nextLines = removeFlightLines(nextLines);
|
|
48390
|
+
nextLines = __spreadArray(__spreadArray([], nextLines, true), flightLines, true);
|
|
48391
|
+
}
|
|
48392
|
+
}
|
|
48393
|
+
nextLines = nextLines.map(function (line, index) {
|
|
48394
|
+
return __assign(__assign({}, line), { order: index });
|
|
48395
|
+
});
|
|
48396
|
+
return __assign(__assign({}, entry), { language: language, transactionId: transactionId, pax: entry.pax, lines: nextLines });
|
|
48397
|
+
};
|
|
48398
|
+
var buildBasePackagingEntry = function (sourceEntry, seed, transactionId, language) {
|
|
48399
|
+
var _a, _b;
|
|
48400
|
+
if (sourceEntry) {
|
|
48401
|
+
return structuredClone(sourceEntry);
|
|
48402
|
+
}
|
|
48403
|
+
var paxId = 1;
|
|
48404
|
+
var pax =
|
|
48405
|
+
(_b =
|
|
48406
|
+
(_a = seed.rooms) === null || _a === void 0
|
|
48407
|
+
? void 0
|
|
48408
|
+
: _a.flatMap(function (room, roomIndex) {
|
|
48409
|
+
return room.pax.map(function (_, paxIndex) {
|
|
48410
|
+
return {
|
|
48411
|
+
id: paxId++,
|
|
48412
|
+
firstName: '',
|
|
48413
|
+
lastName: '',
|
|
48414
|
+
dateOfBirth: null,
|
|
48415
|
+
isMainBooker: roomIndex === 0 && paxIndex === 0
|
|
48416
|
+
};
|
|
48417
|
+
});
|
|
48418
|
+
})) !== null && _b !== void 0
|
|
48419
|
+
? _b
|
|
48420
|
+
: [];
|
|
48421
|
+
return {
|
|
48422
|
+
language: language,
|
|
48423
|
+
transactionId: transactionId,
|
|
48424
|
+
dossierNumber: '',
|
|
48425
|
+
status: 0,
|
|
48426
|
+
bookingDate: null,
|
|
48427
|
+
price: 0,
|
|
48428
|
+
depositAmount: 0,
|
|
48429
|
+
pax: pax,
|
|
48430
|
+
lines: []
|
|
48431
|
+
};
|
|
48432
|
+
};
|
|
47951
48433
|
return React__default.createElement(
|
|
47952
48434
|
'div',
|
|
47953
48435
|
{ id: 'tide-booking', className: 'search__bg' },
|
|
@@ -48065,13 +48547,11 @@ var SearchResultsContainer = function () {
|
|
|
48065
48547
|
'span',
|
|
48066
48548
|
{ className: 'search__result-row-text' },
|
|
48067
48549
|
!isLoading &&
|
|
48068
|
-
|
|
48550
|
+
context.searchConfiguration.qsmType !== build.PortalQsmType.AccommodationAndFlight &&
|
|
48069
48551
|
React__default.createElement(
|
|
48070
48552
|
React__default.Fragment,
|
|
48071
48553
|
null,
|
|
48072
|
-
|
|
48073
|
-
context.searchConfiguration.enableManualPackaging) ||
|
|
48074
|
-
context.searchConfiguration.qsmType === build.PortalQsmType.Accommodation) &&
|
|
48554
|
+
context.searchConfiguration.qsmType === build.PortalQsmType.Accommodation &&
|
|
48075
48555
|
(filteredPackagingAccoResults === null || filteredPackagingAccoResults === void 0 ? void 0 : filteredPackagingAccoResults.length) &&
|
|
48076
48556
|
(filteredPackagingAccoResults === null || filteredPackagingAccoResults === void 0 ? void 0 : filteredPackagingAccoResults.length),
|
|
48077
48557
|
context.searchConfiguration.qsmType !== build.PortalQsmType.Accommodation &&
|
|
@@ -48120,25 +48600,117 @@ var SearchResultsContainer = function () {
|
|
|
48120
48600
|
context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
|
|
48121
48601
|
!context.packagingEntry &&
|
|
48122
48602
|
context.showFlightResults &&
|
|
48123
|
-
|
|
48124
|
-
|
|
48125
|
-
|
|
48126
|
-
|
|
48127
|
-
|
|
48603
|
+
// bookingPackageDetails?.outwardFlights &&
|
|
48604
|
+
// <FlightResults flights={bookingPackageDetails?.outwardFlights} isDeparture={true} />
|
|
48605
|
+
React__default.createElement(
|
|
48606
|
+
React__default.Fragment,
|
|
48607
|
+
null,
|
|
48608
|
+
React__default.createElement(
|
|
48609
|
+
'div',
|
|
48610
|
+
{ className: 'search__results__label search__results__label--secondary' },
|
|
48611
|
+
React__default.createElement(
|
|
48612
|
+
'div',
|
|
48613
|
+
{ className: 'search__results__label__date' },
|
|
48614
|
+
React__default.createElement(Icon$1, { name: 'ui-flight', height: 16, fill: 'white' })
|
|
48615
|
+
),
|
|
48616
|
+
React__default.createElement(
|
|
48617
|
+
'div',
|
|
48618
|
+
{ className: 'search__results__label__text' },
|
|
48619
|
+
React__default.createElement(
|
|
48620
|
+
'h3',
|
|
48621
|
+
null,
|
|
48622
|
+
translations.SRP.SELECT,
|
|
48623
|
+
' ',
|
|
48624
|
+
React__default.createElement('strong', null, ' ', translations.SRP.DEPARTURE)
|
|
48625
|
+
)
|
|
48626
|
+
)
|
|
48627
|
+
),
|
|
48628
|
+
React__default.createElement(
|
|
48629
|
+
'div',
|
|
48630
|
+
{ className: 'search__results__cards search__results__cards--extended' },
|
|
48631
|
+
selectedOutwardKey && selectedOutward
|
|
48632
|
+
? React__default.createElement(IndependentFlightOption, {
|
|
48633
|
+
key: 'flight-'.concat(selectedOutwardKey),
|
|
48634
|
+
item: selectedOutward.outward,
|
|
48635
|
+
guid: selectedOutward.outwardGuid,
|
|
48636
|
+
onSelect: function () {
|
|
48637
|
+
return setSelectedOutwardKey(null);
|
|
48638
|
+
},
|
|
48639
|
+
selectedGuid: selectedOutward.outwardGuid,
|
|
48640
|
+
isOutward: true
|
|
48641
|
+
})
|
|
48642
|
+
: uniqueOutwardFlights.map(function (result) {
|
|
48643
|
+
return React__default.createElement(IndependentFlightOption, {
|
|
48644
|
+
key: 'flight-'.concat(result.outwardGuid),
|
|
48645
|
+
item: result.outward,
|
|
48646
|
+
onSelect: function () {
|
|
48647
|
+
return setSelectedOutwardKey(getFlightKey(result.outward.segments));
|
|
48648
|
+
},
|
|
48649
|
+
guid: result.outwardGuid,
|
|
48650
|
+
isOutward: true
|
|
48651
|
+
});
|
|
48652
|
+
})
|
|
48653
|
+
)
|
|
48654
|
+
),
|
|
48128
48655
|
context.showHotelAccommodationResults &&
|
|
48129
48656
|
!context.packagingEntry &&
|
|
48130
48657
|
React__default.createElement(HotelAccommodationResults, { isLoading: isLoading }),
|
|
48131
48658
|
context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
|
|
48132
48659
|
!context.packagingEntry &&
|
|
48133
48660
|
context.showFlightResults &&
|
|
48134
|
-
|
|
48135
|
-
|
|
48136
|
-
|
|
48137
|
-
|
|
48138
|
-
|
|
48661
|
+
// bookingPackageDetails?.returnFlights &&
|
|
48662
|
+
// <FlightResults flights={bookingPackageDetails?.returnFlights} isDeparture={false} />
|
|
48663
|
+
React__default.createElement(
|
|
48664
|
+
React__default.Fragment,
|
|
48665
|
+
null,
|
|
48666
|
+
React__default.createElement(
|
|
48667
|
+
'div',
|
|
48668
|
+
{ className: 'search__results__label search__results__label--secondary' },
|
|
48669
|
+
React__default.createElement(
|
|
48670
|
+
'div',
|
|
48671
|
+
{ className: 'search__results__label__date' },
|
|
48672
|
+
React__default.createElement(Icon$1, { name: 'ui-flight', height: 16, fill: 'white' })
|
|
48673
|
+
),
|
|
48674
|
+
React__default.createElement(
|
|
48675
|
+
'div',
|
|
48676
|
+
{ className: 'search__results__label__text' },
|
|
48677
|
+
React__default.createElement(
|
|
48678
|
+
'h3',
|
|
48679
|
+
null,
|
|
48680
|
+
translations.SRP.SELECT,
|
|
48681
|
+
' ',
|
|
48682
|
+
React__default.createElement('strong', null, ' ', translations.SRP.RETURN)
|
|
48683
|
+
)
|
|
48684
|
+
)
|
|
48685
|
+
),
|
|
48686
|
+
React__default.createElement(
|
|
48687
|
+
'div',
|
|
48688
|
+
{ className: 'search__results__cards search__results__cards--extended' },
|
|
48689
|
+
selectedReturnKey && selectedReturn
|
|
48690
|
+
? React__default.createElement(IndependentFlightOption, {
|
|
48691
|
+
key: 'flight-'.concat(selectedReturnKey),
|
|
48692
|
+
item: selectedReturn.return,
|
|
48693
|
+
guid: selectedReturn.outwardGuid,
|
|
48694
|
+
selectedGuid: selectedReturn.outwardGuid,
|
|
48695
|
+
isOutward: false
|
|
48696
|
+
})
|
|
48697
|
+
: uniqueReturnFlights.map(function (result) {
|
|
48698
|
+
return React__default.createElement(IndependentFlightOption, {
|
|
48699
|
+
key: 'flight-'.concat(result.outwardGuid),
|
|
48700
|
+
item: result.return,
|
|
48701
|
+
onSelect: function () {
|
|
48702
|
+
return setSelectedReturnKey(getFlightKey(result.return.segments));
|
|
48703
|
+
},
|
|
48704
|
+
guid: result.outwardGuid,
|
|
48705
|
+
isOutward: false
|
|
48706
|
+
});
|
|
48707
|
+
})
|
|
48708
|
+
)
|
|
48709
|
+
),
|
|
48139
48710
|
context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
|
|
48140
48711
|
context.packagingEntry &&
|
|
48141
|
-
|
|
48712
|
+
itinerary &&
|
|
48713
|
+
React__default.createElement(FullItinerary, { isLoading: itineraryIsLoading })
|
|
48142
48714
|
)
|
|
48143
48715
|
),
|
|
48144
48716
|
React__default.createElement(FlyIn, {
|
|
@@ -55585,5 +56157,6 @@ export {
|
|
|
55585
56157
|
PhotoGallery,
|
|
55586
56158
|
QSM,
|
|
55587
56159
|
SearchResults,
|
|
55588
|
-
Slider
|
|
56160
|
+
Slider,
|
|
56161
|
+
Spinner
|
|
55589
56162
|
};
|