@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-cjs/index.js
CHANGED
|
@@ -13417,11 +13417,12 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
13417
13417
|
var ENDPOINT = '/api/web/packaging';
|
|
13418
13418
|
var ENDPOINT_START_TRANSACTION = ENDPOINT + '/start';
|
|
13419
13419
|
var ENDPOINT_ACCOMMODATIONS = ENDPOINT + '/accommodations';
|
|
13420
|
+
var ENDPOINT_FLIGHTS = ENDPOINT + '/flights';
|
|
13420
13421
|
var ENDPOINT_PRICE_DETAILS = ENDPOINT + '/price-details';
|
|
13422
|
+
var ENDPOINT_ITINERARY = ENDPOINT + '/itinerary';
|
|
13421
13423
|
var ENDPOINT_ENTRY = function (magicLinkCode) {
|
|
13422
13424
|
return ENDPOINT + '/entry/' + magicLinkCode;
|
|
13423
13425
|
};
|
|
13424
|
-
// MANUAL PACKAGING SEARCH
|
|
13425
13426
|
var startTransaction = function (config, signal) {
|
|
13426
13427
|
var apiKey = config.apiKey;
|
|
13427
13428
|
var url = '' + config.host + ENDPOINT_START_TRANSACTION;
|
|
@@ -13433,6 +13434,12 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
13433
13434
|
var body = JSON.stringify(request);
|
|
13434
13435
|
return post(url, apiKey, body, config.token, signal, true);
|
|
13435
13436
|
};
|
|
13437
|
+
var searchPackagingFlights = function (config, request, signal) {
|
|
13438
|
+
var url = '' + config.host + ENDPOINT_FLIGHTS;
|
|
13439
|
+
var apiKey = config.apiKey;
|
|
13440
|
+
var body = JSON.stringify(request);
|
|
13441
|
+
return post(url, apiKey, body, config.token, signal, true);
|
|
13442
|
+
};
|
|
13436
13443
|
var getEntry = function (config, magicLinkCode, signal) {
|
|
13437
13444
|
var apiKey = config.apiKey;
|
|
13438
13445
|
var url = '' + config.host + ENDPOINT_ENTRY(magicLinkCode);
|
|
@@ -13444,6 +13451,12 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
13444
13451
|
var body = JSON.stringify(request);
|
|
13445
13452
|
return post(url, apiKey, body, config.token, signal, true);
|
|
13446
13453
|
};
|
|
13454
|
+
var getItinerary = function (config, request, signal) {
|
|
13455
|
+
var url = '' + config.host + ENDPOINT_ITINERARY;
|
|
13456
|
+
var apiKey = config.apiKey;
|
|
13457
|
+
var body = JSON.stringify(request);
|
|
13458
|
+
return post(url, apiKey, body, config.token, signal, true);
|
|
13459
|
+
};
|
|
13447
13460
|
|
|
13448
13461
|
exports.AllotmentType = AllotmentType;
|
|
13449
13462
|
exports.ContactForm = ContactForm;
|
|
@@ -13496,6 +13509,7 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
13496
13509
|
exports.getEntryStatus = getEntryStatus;
|
|
13497
13510
|
exports.getEntryTotals = getEntryTotals;
|
|
13498
13511
|
exports.getInvoiceList = getInvoiceList;
|
|
13512
|
+
exports.getItinerary = getItinerary;
|
|
13499
13513
|
exports.getLocations = getLocations;
|
|
13500
13514
|
exports.getMolliePayment = getMolliePayment;
|
|
13501
13515
|
exports.getPortal = getPortal;
|
|
@@ -13517,6 +13531,7 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
13517
13531
|
exports.searchLocations = searchLocations;
|
|
13518
13532
|
exports.searchOords = searchOords;
|
|
13519
13533
|
exports.searchPackagingAccommodations = searchPackagingAccommodations;
|
|
13534
|
+
exports.searchPackagingFlights = searchPackagingFlights;
|
|
13520
13535
|
exports.searchRegions = searchRegions;
|
|
13521
13536
|
exports.searchWithErrorMapping = searchWithErrorMapping;
|
|
13522
13537
|
exports.setCustomEntryStatus = setCustomEntryStatus;
|
|
@@ -20504,7 +20519,7 @@ var getFlightDetails = function (flight) {
|
|
|
20504
20519
|
arrivalDate: lastLine.arrivalDate,
|
|
20505
20520
|
arrivalTime: lastLine.arrivalTime,
|
|
20506
20521
|
arrivalAirport: lastLine.arrivalAirportDescription,
|
|
20507
|
-
travelDuration: formatDuration
|
|
20522
|
+
travelDuration: formatDuration(flight.flightMetaData.durationInTicks),
|
|
20508
20523
|
travelDurationMinutes: minutesFromTicks(flight.flightMetaData.durationInTicks),
|
|
20509
20524
|
changeDurationMinutes: getTotalChangeDuration(flight),
|
|
20510
20525
|
numberOfStops: flight.flightMetaData.flightLines.length - 1,
|
|
@@ -20520,7 +20535,7 @@ var getFlightDetails = function (flight) {
|
|
|
20520
20535
|
arrivalTime: x.arrivalTime,
|
|
20521
20536
|
arrivalAirport: x.arrivalAirportDescription,
|
|
20522
20537
|
number: ''.concat(x.airlineCode, ' ').concat(x.number),
|
|
20523
|
-
travelDuration: formatDuration
|
|
20538
|
+
travelDuration: formatDuration(x.durationInTicks),
|
|
20524
20539
|
waitDuration: waitDurations.length - 1 <= i ? waitDurations[i] : undefined
|
|
20525
20540
|
};
|
|
20526
20541
|
})
|
|
@@ -20596,7 +20611,7 @@ var minutesFromTicks = function (ticks) {
|
|
|
20596
20611
|
var totalSeconds = ticks / 10000000;
|
|
20597
20612
|
return Math.floor(totalSeconds / 60);
|
|
20598
20613
|
};
|
|
20599
|
-
var formatDuration
|
|
20614
|
+
var formatDuration = function (ticks) {
|
|
20600
20615
|
if (!ticks) return '';
|
|
20601
20616
|
var totalSeconds = ticks / 10000000;
|
|
20602
20617
|
var hh = Math.floor(totalSeconds / 3600);
|
|
@@ -33809,10 +33824,13 @@ var initialState$1 = {
|
|
|
33809
33824
|
filteredPackagingAccoResults: [],
|
|
33810
33825
|
packagingAccoSearchDetails: [],
|
|
33811
33826
|
selectedPackagingAccoResultCode: null,
|
|
33827
|
+
packagingFlightResults: [],
|
|
33828
|
+
selectedPackagingFlight: null,
|
|
33812
33829
|
selectedFlight: null,
|
|
33813
33830
|
selectedFlightDetails: null,
|
|
33814
33831
|
bookingPackageDetails: null,
|
|
33815
33832
|
isLoading: false,
|
|
33833
|
+
flightsLoading: false,
|
|
33816
33834
|
filters: [],
|
|
33817
33835
|
selectedSortType: null,
|
|
33818
33836
|
activeTab: 'compact',
|
|
@@ -33821,7 +33839,8 @@ var initialState$1 = {
|
|
|
33821
33839
|
editablePackagingEntry: null,
|
|
33822
33840
|
transactionId: null,
|
|
33823
33841
|
accommodationFlyInStep: 'details',
|
|
33824
|
-
priceDetails: null
|
|
33842
|
+
priceDetails: null,
|
|
33843
|
+
itinerary: null
|
|
33825
33844
|
};
|
|
33826
33845
|
var searchResultsSlice = toolkit.createSlice({
|
|
33827
33846
|
name: 'searchResults',
|
|
@@ -33848,6 +33867,12 @@ var searchResultsSlice = toolkit.createSlice({
|
|
|
33848
33867
|
setSelectedPackagingAccoResult: function (state, action) {
|
|
33849
33868
|
state.selectedPackagingAccoResultCode = action.payload;
|
|
33850
33869
|
},
|
|
33870
|
+
setPackagingFlightResults: function (state, action) {
|
|
33871
|
+
state.packagingFlightResults = action.payload;
|
|
33872
|
+
},
|
|
33873
|
+
setSelectedPackagingFlight: function (state, action) {
|
|
33874
|
+
state.selectedPackagingFlight = action.payload;
|
|
33875
|
+
},
|
|
33851
33876
|
setSelectedFlight: function (state, action) {
|
|
33852
33877
|
state.selectedFlight = action.payload;
|
|
33853
33878
|
},
|
|
@@ -33870,6 +33895,9 @@ var searchResultsSlice = toolkit.createSlice({
|
|
|
33870
33895
|
setIsLoading: function (state, action) {
|
|
33871
33896
|
state.isLoading = action.payload;
|
|
33872
33897
|
},
|
|
33898
|
+
setFlightsLoading: function (state, action) {
|
|
33899
|
+
state.flightsLoading = action.payload;
|
|
33900
|
+
},
|
|
33873
33901
|
setFilters: function (state, action) {
|
|
33874
33902
|
var updatedFilters = action.payload;
|
|
33875
33903
|
updatedFilters.forEach(function (updatedFilter) {
|
|
@@ -33917,6 +33945,9 @@ var searchResultsSlice = toolkit.createSlice({
|
|
|
33917
33945
|
},
|
|
33918
33946
|
setPriceDetails: function (state, action) {
|
|
33919
33947
|
state.priceDetails = action.payload;
|
|
33948
|
+
},
|
|
33949
|
+
setItinerary: function (state, action) {
|
|
33950
|
+
state.itinerary = action.payload;
|
|
33920
33951
|
}
|
|
33921
33952
|
}
|
|
33922
33953
|
});
|
|
@@ -33927,11 +33958,14 @@ var setResults = ((_a = searchResultsSlice.actions), _a.setResults),
|
|
|
33927
33958
|
setFilteredPackagingAccoResults = _a.setFilteredPackagingAccoResults,
|
|
33928
33959
|
setPackagingAccoSearchDetails = _a.setPackagingAccoSearchDetails,
|
|
33929
33960
|
setSelectedPackagingAccoResult = _a.setSelectedPackagingAccoResult,
|
|
33961
|
+
setPackagingFlightResults = _a.setPackagingFlightResults,
|
|
33962
|
+
setSelectedPackagingFlight = _a.setSelectedPackagingFlight,
|
|
33930
33963
|
setSelectedFlight = _a.setSelectedFlight,
|
|
33931
33964
|
setSelectedFlightDetails = _a.setSelectedFlightDetails,
|
|
33932
|
-
setBookingPackageDetails = _a.setBookingPackageDetails
|
|
33933
|
-
|
|
33934
|
-
|
|
33965
|
+
setBookingPackageDetails = _a.setBookingPackageDetails;
|
|
33966
|
+
_a.selectFlight;
|
|
33967
|
+
var setIsLoading = _a.setIsLoading,
|
|
33968
|
+
setFlightsLoading = _a.setFlightsLoading,
|
|
33935
33969
|
setFilters = _a.setFilters,
|
|
33936
33970
|
resetFilters = _a.resetFilters,
|
|
33937
33971
|
setSortType = _a.setSortType,
|
|
@@ -33942,7 +33976,8 @@ var setFlyInIsOpen = _a.setFlyInIsOpen,
|
|
|
33942
33976
|
setEditablePackagingEntry = _a.setEditablePackagingEntry,
|
|
33943
33977
|
setTransactionId = _a.setTransactionId,
|
|
33944
33978
|
setAccommodationFlyInStep = _a.setAccommodationFlyInStep,
|
|
33945
|
-
setPriceDetails = _a.setPriceDetails
|
|
33979
|
+
setPriceDetails = _a.setPriceDetails,
|
|
33980
|
+
setItinerary = _a.setItinerary;
|
|
33946
33981
|
var searchResultsReducer = searchResultsSlice.reducer;
|
|
33947
33982
|
|
|
33948
33983
|
var ItemPicker = function (_a) {
|
|
@@ -35302,8 +35337,6 @@ var Itinerary = function (_a) {
|
|
|
35302
35337
|
segments: segments
|
|
35303
35338
|
};
|
|
35304
35339
|
});
|
|
35305
|
-
console.log('otherSegments', otherSegments);
|
|
35306
|
-
console.log('groupedOtherSegments', groupedOtherSegments);
|
|
35307
35340
|
var numberOfPax = ((_p = packagingEntry.pax) === null || _p === void 0 ? void 0 : _p.length) || 1;
|
|
35308
35341
|
var totalPrice = (priceDetails === null || priceDetails === void 0 ? void 0 : priceDetails.total) || packagingEntry.price || 0;
|
|
35309
35342
|
var pricePerPerson = totalPrice / numberOfPax;
|
|
@@ -36887,6 +36920,14 @@ var Icon = function (_a) {
|
|
|
36887
36920
|
}
|
|
36888
36921
|
};
|
|
36889
36922
|
|
|
36923
|
+
var getFlightKey = function (segments) {
|
|
36924
|
+
if (!segments || segments.length === 0) return '';
|
|
36925
|
+
return segments
|
|
36926
|
+
.map(function (s) {
|
|
36927
|
+
return ''.concat(s.marketingAirlineCode).concat(s.flightNumber, '_').concat(s.departureDateTime);
|
|
36928
|
+
})
|
|
36929
|
+
.join('_');
|
|
36930
|
+
};
|
|
36890
36931
|
// export const getAirportName = (airport: TideAirport | undefined, language: string): string => {
|
|
36891
36932
|
// if (!airport || !airport.name) {
|
|
36892
36933
|
// return "";
|
|
@@ -38447,13 +38488,11 @@ var FlightsFlyIn = function (_a) {
|
|
|
38447
38488
|
};
|
|
38448
38489
|
|
|
38449
38490
|
var formatPrice$1 = function (price, currencyCode) {
|
|
38450
|
-
if (currencyCode === void 0) {
|
|
38451
|
-
currencyCode = 'EUR';
|
|
38452
|
-
}
|
|
38453
38491
|
if (typeof price !== 'number') return '';
|
|
38492
|
+
var safeCurrency = currencyCode !== null && currencyCode !== void 0 ? currencyCode : 'EUR';
|
|
38454
38493
|
return new Intl.NumberFormat('nl-BE', {
|
|
38455
38494
|
style: 'currency',
|
|
38456
|
-
currency:
|
|
38495
|
+
currency: safeCurrency
|
|
38457
38496
|
}).format(price);
|
|
38458
38497
|
};
|
|
38459
38498
|
var AccommodationFlyIn = function (_a) {
|
|
@@ -44126,266 +44165,6 @@ var RoundTripResults = function () {
|
|
|
44126
44165
|
);
|
|
44127
44166
|
};
|
|
44128
44167
|
|
|
44129
|
-
var ticksToMinutes = function (ticks) {
|
|
44130
|
-
return Math.floor(ticks / 600000000);
|
|
44131
|
-
};
|
|
44132
|
-
var formatDuration = function (ticks) {
|
|
44133
|
-
var minutes = ticksToMinutes(ticks);
|
|
44134
|
-
var h = Math.floor(minutes / 60);
|
|
44135
|
-
var m = minutes % 60;
|
|
44136
|
-
return ''.concat(h, 'h ').concat(m, 'm');
|
|
44137
|
-
};
|
|
44138
|
-
var FlightResults = function (_a) {
|
|
44139
|
-
var _b;
|
|
44140
|
-
var flights = _a.flights,
|
|
44141
|
-
isDeparture = _a.isDeparture;
|
|
44142
|
-
var context = React.useContext(SearchResultsConfigurationContext);
|
|
44143
|
-
var translations = getTranslations((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
|
|
44144
|
-
var dispatch = reactRedux.useDispatch();
|
|
44145
|
-
var _c = React.useState(null),
|
|
44146
|
-
activeDetailId = _c[0],
|
|
44147
|
-
setActiveDetailId = _c[1];
|
|
44148
|
-
var handleDetailClick = function (flightOptionId) {
|
|
44149
|
-
setActiveDetailId(function (prev) {
|
|
44150
|
-
return prev === flightOptionId ? null : flightOptionId;
|
|
44151
|
-
});
|
|
44152
|
-
};
|
|
44153
|
-
var firstResult = flights === null || flights === void 0 ? void 0 : flights[0];
|
|
44154
|
-
var firstResultDate = (firstResult === null || firstResult === void 0 ? void 0 : firstResult.startDateTime)
|
|
44155
|
-
? dateFns.parseISO(firstResult.startDateTime)
|
|
44156
|
-
: null;
|
|
44157
|
-
return React__default['default'].createElement(
|
|
44158
|
-
React__default['default'].Fragment,
|
|
44159
|
-
null,
|
|
44160
|
-
React__default['default'].createElement(
|
|
44161
|
-
'div',
|
|
44162
|
-
{ className: 'search__results__label' },
|
|
44163
|
-
React__default['default'].createElement(
|
|
44164
|
-
'div',
|
|
44165
|
-
{ className: 'search__results__label__date' },
|
|
44166
|
-
firstResultDate &&
|
|
44167
|
-
React__default['default'].createElement(
|
|
44168
|
-
React__default['default'].Fragment,
|
|
44169
|
-
null,
|
|
44170
|
-
React__default['default'].createElement('p', { className: 'search__results__label__date-date' }, dateFns.format(firstResultDate, 'd')),
|
|
44171
|
-
React__default['default'].createElement('p', null, dateFns.format(firstResultDate, 'MMM'))
|
|
44172
|
-
)
|
|
44173
|
-
),
|
|
44174
|
-
React__default['default'].createElement(
|
|
44175
|
-
'div',
|
|
44176
|
-
{ className: 'search__results__label__text' },
|
|
44177
|
-
React__default['default'].createElement(
|
|
44178
|
-
'h3',
|
|
44179
|
-
null,
|
|
44180
|
-
translations.SRP.SELECT,
|
|
44181
|
-
' ',
|
|
44182
|
-
React__default['default'].createElement('strong', null, isDeparture ? translations.SRP.DEPARTURE : translations.SRP.RETURN)
|
|
44183
|
-
)
|
|
44184
|
-
)
|
|
44185
|
-
),
|
|
44186
|
-
flights &&
|
|
44187
|
-
flights.length > 0 &&
|
|
44188
|
-
React__default['default'].createElement(
|
|
44189
|
-
'div',
|
|
44190
|
-
{ className: 'search__results__cards search__results__cards--extended' },
|
|
44191
|
-
flights.map(function (flight, index) {
|
|
44192
|
-
var lines = flight.flightMetaData.flightLines;
|
|
44193
|
-
var firstLine = lines[0];
|
|
44194
|
-
var lastLine = lines[lines.length - 1];
|
|
44195
|
-
var stops = lines.length - 1;
|
|
44196
|
-
return React__default['default'].createElement(
|
|
44197
|
-
'div',
|
|
44198
|
-
{ className: 'flight', key: 'flight-'.concat(flight.flightId, '-').concat(index) },
|
|
44199
|
-
React__default['default'].createElement(
|
|
44200
|
-
'div',
|
|
44201
|
-
{ className: 'flight__option' },
|
|
44202
|
-
React__default['default'].createElement(
|
|
44203
|
-
'div',
|
|
44204
|
-
{ className: 'flight__content' },
|
|
44205
|
-
React__default['default'].createElement(
|
|
44206
|
-
'div',
|
|
44207
|
-
{ className: 'flight__flights' },
|
|
44208
|
-
React__default['default'].createElement(
|
|
44209
|
-
'div',
|
|
44210
|
-
{ className: 'flight__flight' },
|
|
44211
|
-
React__default['default'].createElement(
|
|
44212
|
-
'div',
|
|
44213
|
-
{ className: 'flight__flight__header' },
|
|
44214
|
-
React__default['default'].createElement('div', { className: 'flight__status__container' }),
|
|
44215
|
-
React__default['default'].createElement(
|
|
44216
|
-
'div',
|
|
44217
|
-
{ className: 'flight__price' },
|
|
44218
|
-
React__default['default'].createElement('span', { className: 'price' }, '\u20AC ', flight.price.toFixed(2)),
|
|
44219
|
-
React__default['default'].createElement(
|
|
44220
|
-
'button',
|
|
44221
|
-
{
|
|
44222
|
-
type: 'button',
|
|
44223
|
-
className: 'cta '.concat(flight.isSelected ? 'cta--selected' : 'cta--select'),
|
|
44224
|
-
onClick: function () {
|
|
44225
|
-
return dispatch(selectFlight({ flightOptionId: flight.flightOptionId, isDeparture: !!isDeparture }));
|
|
44226
|
-
}
|
|
44227
|
-
},
|
|
44228
|
-
flight.isSelected ? 'Selected' : 'Select'
|
|
44229
|
-
)
|
|
44230
|
-
)
|
|
44231
|
-
)
|
|
44232
|
-
),
|
|
44233
|
-
React__default['default'].createElement(
|
|
44234
|
-
'div',
|
|
44235
|
-
{ className: 'flight__flight' },
|
|
44236
|
-
React__default['default'].createElement(
|
|
44237
|
-
'div',
|
|
44238
|
-
{ className: 'flight__flight__container' },
|
|
44239
|
-
React__default['default'].createElement(
|
|
44240
|
-
'div',
|
|
44241
|
-
{ className: 'flight__flight__wrapper' },
|
|
44242
|
-
React__default['default'].createElement(
|
|
44243
|
-
'div',
|
|
44244
|
-
{ className: 'flight__logo__wrapper' },
|
|
44245
|
-
React__default['default'].createElement('img', {
|
|
44246
|
-
src: 'https://media.tidesoftware.be/media/shared/Airlines/'.concat(firstLine.airlineCode, '.png?height=256'),
|
|
44247
|
-
alt: flight.airlineDescription,
|
|
44248
|
-
className: 'flight__logo'
|
|
44249
|
-
}),
|
|
44250
|
-
React__default['default'].createElement('span', null, flight.airlineDescription)
|
|
44251
|
-
),
|
|
44252
|
-
React__default['default'].createElement(
|
|
44253
|
-
'div',
|
|
44254
|
-
{ className: 'flight__info' },
|
|
44255
|
-
React__default['default'].createElement(
|
|
44256
|
-
'div',
|
|
44257
|
-
{ className: 'flight__info__times' },
|
|
44258
|
-
React__default['default'].createElement('strong', null, firstLine.departureTime, ' ', firstLine.departureAirport),
|
|
44259
|
-
React__default['default'].createElement('p', null, dateFns.format(dateFns.parseISO(firstLine.departureDate), 'EEE dd MMM yyyy'))
|
|
44260
|
-
),
|
|
44261
|
-
React__default['default'].createElement(
|
|
44262
|
-
'div',
|
|
44263
|
-
{ className: 'flight__info__duration' },
|
|
44264
|
-
React__default['default'].createElement('p', null, formatDuration(flight.flightMetaData.durationInTicks)),
|
|
44265
|
-
React__default['default'].createElement(
|
|
44266
|
-
'div',
|
|
44267
|
-
{ className: 'flight__info__duration__stops' },
|
|
44268
|
-
stops > 0 && React__default['default'].createElement('div', { className: 'flight__info__duration__stop' })
|
|
44269
|
-
),
|
|
44270
|
-
React__default['default'].createElement(
|
|
44271
|
-
'span',
|
|
44272
|
-
null,
|
|
44273
|
-
stops === 0
|
|
44274
|
-
? translations.SRP.DIRECT
|
|
44275
|
-
: ''
|
|
44276
|
-
.concat(stops, ' ')
|
|
44277
|
-
.concat(translations.SRP.STOP)
|
|
44278
|
-
.concat(stops > 1 ? 's' : '')
|
|
44279
|
-
)
|
|
44280
|
-
),
|
|
44281
|
-
React__default['default'].createElement(
|
|
44282
|
-
'div',
|
|
44283
|
-
{ className: 'flight__info__times flight__info__times--arrival' },
|
|
44284
|
-
React__default['default'].createElement('strong', null, lastLine.arrivalTime, ' ', lastLine.arrivalAirport),
|
|
44285
|
-
React__default['default'].createElement('p', null, dateFns.format(dateFns.parseISO(lastLine.arrivalDate), 'EEE dd MMM yyyy'))
|
|
44286
|
-
)
|
|
44287
|
-
)
|
|
44288
|
-
),
|
|
44289
|
-
React__default['default'].createElement(
|
|
44290
|
-
'div',
|
|
44291
|
-
{ className: 'flight__detail__btn__wrapper' },
|
|
44292
|
-
React__default['default'].createElement(
|
|
44293
|
-
'div',
|
|
44294
|
-
{
|
|
44295
|
-
className: 'flight__detail__btn '.concat(activeDetailId === flight.flightOptionId ? 'flight__detail__btn--active' : ''),
|
|
44296
|
-
onClick: function () {
|
|
44297
|
-
return handleDetailClick(flight.flightOptionId);
|
|
44298
|
-
}
|
|
44299
|
-
},
|
|
44300
|
-
React__default['default'].createElement(Icon$1, {
|
|
44301
|
-
name: 'ui-chevron',
|
|
44302
|
-
className: 'flight__detail__btn__arrow',
|
|
44303
|
-
width: 16,
|
|
44304
|
-
height: 16
|
|
44305
|
-
})
|
|
44306
|
-
)
|
|
44307
|
-
)
|
|
44308
|
-
),
|
|
44309
|
-
React__default['default'].createElement(
|
|
44310
|
-
'div',
|
|
44311
|
-
{ className: 'flight__detail '.concat(activeDetailId === flight.flightOptionId ? 'flight__detail--active' : '') },
|
|
44312
|
-
lines.map(function (line, index) {
|
|
44313
|
-
var nextLine = lines[index + 1];
|
|
44314
|
-
return React__default['default'].createElement(
|
|
44315
|
-
React__default['default'].Fragment,
|
|
44316
|
-
{ key: index },
|
|
44317
|
-
React__default['default'].createElement(
|
|
44318
|
-
'div',
|
|
44319
|
-
{ className: 'flight__info' },
|
|
44320
|
-
React__default['default'].createElement(
|
|
44321
|
-
'div',
|
|
44322
|
-
{ className: 'flight__info__times__wrapper' },
|
|
44323
|
-
React__default['default'].createElement(
|
|
44324
|
-
'div',
|
|
44325
|
-
{ className: 'flight__info__times' },
|
|
44326
|
-
React__default['default'].createElement('p', null, line.departureTime),
|
|
44327
|
-
React__default['default'].createElement('strong', null, line.departureAirport),
|
|
44328
|
-
React__default['default'].createElement('p', null, dateFns.format(dateFns.parseISO(line.departureDate), 'EEE dd MMM yyyy'))
|
|
44329
|
-
),
|
|
44330
|
-
React__default['default'].createElement(Icon$1, { name: 'ui-plane-depart', width: 30, height: 20 })
|
|
44331
|
-
),
|
|
44332
|
-
React__default['default'].createElement(
|
|
44333
|
-
'div',
|
|
44334
|
-
{ className: 'flight__info__duration' },
|
|
44335
|
-
React__default['default'].createElement('p', null, formatDuration(line.durationInTicks)),
|
|
44336
|
-
React__default['default'].createElement('span', null, line.airline, ' ', line.number)
|
|
44337
|
-
),
|
|
44338
|
-
React__default['default'].createElement(
|
|
44339
|
-
'div',
|
|
44340
|
-
{ className: 'flight__info__times__wrapper flight__info__times__wrapper--arrival' },
|
|
44341
|
-
React__default['default'].createElement(Icon$1, { name: 'ui-plane-arrive', width: 30, height: 20 }),
|
|
44342
|
-
React__default['default'].createElement(
|
|
44343
|
-
'div',
|
|
44344
|
-
{ className: 'flight__info__times flight__info__times--arrival' },
|
|
44345
|
-
React__default['default'].createElement('p', null, line.arrivalTime),
|
|
44346
|
-
React__default['default'].createElement('strong', null, line.arrivalAirport),
|
|
44347
|
-
React__default['default'].createElement('p', null, dateFns.format(dateFns.parseISO(line.arrivalDate), 'EEE dd MMM yyyy'))
|
|
44348
|
-
)
|
|
44349
|
-
)
|
|
44350
|
-
),
|
|
44351
|
-
nextLine &&
|
|
44352
|
-
React__default['default'].createElement(
|
|
44353
|
-
'div',
|
|
44354
|
-
{ className: 'flight__info' },
|
|
44355
|
-
React__default['default'].createElement(
|
|
44356
|
-
'div',
|
|
44357
|
-
{ className: 'flight__info__duration flight__info__duration--waittime' },
|
|
44358
|
-
React__default['default'].createElement(
|
|
44359
|
-
'div',
|
|
44360
|
-
{ className: 'flight__info__duration__stops flight__info__duration__stops--stoptime' },
|
|
44361
|
-
React__default['default'].createElement(Icon$1, { name: 'ui-clock', width: 24, height: 24 })
|
|
44362
|
-
),
|
|
44363
|
-
React__default['default'].createElement(
|
|
44364
|
-
'div',
|
|
44365
|
-
{ className: 'flight__info__duration__stoptime' },
|
|
44366
|
-
React__default['default'].createElement('span', null, translations.SRP.STOP_TIME),
|
|
44367
|
-
React__default['default'].createElement(
|
|
44368
|
-
'strong',
|
|
44369
|
-
null,
|
|
44370
|
-
formatDuration(dateFns.parseISO(nextLine.departureDate).getTime() - dateFns.parseISO(line.arrivalDate).getTime())
|
|
44371
|
-
)
|
|
44372
|
-
)
|
|
44373
|
-
)
|
|
44374
|
-
)
|
|
44375
|
-
);
|
|
44376
|
-
})
|
|
44377
|
-
)
|
|
44378
|
-
)
|
|
44379
|
-
),
|
|
44380
|
-
React__default['default'].createElement('div', { className: 'flight__rate' })
|
|
44381
|
-
)
|
|
44382
|
-
)
|
|
44383
|
-
);
|
|
44384
|
-
})
|
|
44385
|
-
)
|
|
44386
|
-
);
|
|
44387
|
-
};
|
|
44388
|
-
|
|
44389
44168
|
var PairedFlightOption = function (_a) {
|
|
44390
44169
|
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
|
|
44391
44170
|
var item = _a.item;
|
|
@@ -44856,7 +44635,6 @@ var IndependentFlightOption = function (_a) {
|
|
|
44856
44635
|
guid = _a.guid,
|
|
44857
44636
|
selectedGuid = _a.selectedGuid;
|
|
44858
44637
|
_a.isOutward;
|
|
44859
|
-
reactRedux.useDispatch();
|
|
44860
44638
|
var context = React.useContext(SearchResultsConfigurationContext);
|
|
44861
44639
|
var language = (_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB';
|
|
44862
44640
|
var translations = getTranslations(language);
|
|
@@ -45083,14 +44861,6 @@ var IndependentFlightOption = function (_a) {
|
|
|
45083
44861
|
);
|
|
45084
44862
|
};
|
|
45085
44863
|
|
|
45086
|
-
var getFlightKey = function (segments) {
|
|
45087
|
-
if (!segments || segments.length === 0) return '';
|
|
45088
|
-
return segments
|
|
45089
|
-
.map(function (s) {
|
|
45090
|
-
return ''.concat(s.marketingAirlineCode).concat(s.flightNumber, '_').concat(s.departureDateTime);
|
|
45091
|
-
})
|
|
45092
|
-
.join('_');
|
|
45093
|
-
};
|
|
45094
44864
|
var IndependentFlightSelection = function (_a) {
|
|
45095
44865
|
var _b;
|
|
45096
44866
|
var searchResults = _a.searchResults;
|
|
@@ -47322,6 +47092,118 @@ var getRequestRoomsFromPackagingSegments = function (entry, segments) {
|
|
|
47322
47092
|
});
|
|
47323
47093
|
};
|
|
47324
47094
|
|
|
47095
|
+
var formatNodeDate = function (date) {
|
|
47096
|
+
if (!date) return '';
|
|
47097
|
+
try {
|
|
47098
|
+
return new Intl.DateTimeFormat('nl-BE', {
|
|
47099
|
+
weekday: 'long',
|
|
47100
|
+
day: '2-digit',
|
|
47101
|
+
month: '2-digit',
|
|
47102
|
+
year: 'numeric'
|
|
47103
|
+
}).format(date);
|
|
47104
|
+
} catch (_a) {
|
|
47105
|
+
return '';
|
|
47106
|
+
}
|
|
47107
|
+
};
|
|
47108
|
+
var escapeHtml = function (value) {
|
|
47109
|
+
if (!value) return '';
|
|
47110
|
+
return value.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, ''');
|
|
47111
|
+
};
|
|
47112
|
+
var buildItineraryHtml = function (itinerary) {
|
|
47113
|
+
var _a;
|
|
47114
|
+
if (!itinerary) {
|
|
47115
|
+
return '\n <div class="itinerary-shell">\n <div class="itinerary-empty">Geen reisroute beschikbaar.</div>\n </div>\n ';
|
|
47116
|
+
}
|
|
47117
|
+
var nodesHtml = ((_a = itinerary.nodes) !== null && _a !== void 0 ? _a : [])
|
|
47118
|
+
.map(function (node) {
|
|
47119
|
+
var hasItems = Array.isArray(node.items) && node.items.length > 0;
|
|
47120
|
+
var itemsHtml = hasItems
|
|
47121
|
+
? node.items
|
|
47122
|
+
.map(function (item) {
|
|
47123
|
+
var _a;
|
|
47124
|
+
return '\n <article class="itinerary-item" data-template="'
|
|
47125
|
+
.concat(escapeHtml(item.templateName), '">\n ')
|
|
47126
|
+
.concat((_a = item.contents) !== null && _a !== void 0 ? _a : '', '\n </article>\n ');
|
|
47127
|
+
})
|
|
47128
|
+
.join('')
|
|
47129
|
+
: '<div class="itinerary-node__empty">Geen items voor deze dag.</div>';
|
|
47130
|
+
return '\n <section class="itinerary-node">\n <header class="itinerary-node__header">\n <div class="itinerary-node__day">Dag '
|
|
47131
|
+
.concat(node.startDay)
|
|
47132
|
+
.concat(
|
|
47133
|
+
node.endDay > node.startDay ? ' - '.concat(node.endDay) : '',
|
|
47134
|
+
'</div>\n <div class="itinerary-node__meta">\n <h2 class="itinerary-node__title">'
|
|
47135
|
+
)
|
|
47136
|
+
.concat(escapeHtml(node.title), '</h2>\n <div class="itinerary-node__date">')
|
|
47137
|
+
.concat(
|
|
47138
|
+
escapeHtml(formatNodeDate(node.startDate)),
|
|
47139
|
+
'</div>\n </div>\n </header>\n\n <div class="itinerary-node__content">\n '
|
|
47140
|
+
)
|
|
47141
|
+
.concat(itemsHtml, '\n </div>\n </section>\n ');
|
|
47142
|
+
})
|
|
47143
|
+
.join('');
|
|
47144
|
+
var defaultItemsHtml =
|
|
47145
|
+
itinerary.defaultItems && itinerary.defaultItems.length > 0
|
|
47146
|
+
? '\n <section class="itinerary-default-items">\n <h2 class="itinerary-default-items__title">Algemene info</h2>\n '.concat(
|
|
47147
|
+
itinerary.defaultItems
|
|
47148
|
+
.map(function (item) {
|
|
47149
|
+
var _a;
|
|
47150
|
+
return '\n <article class="itinerary-item" data-template="'
|
|
47151
|
+
.concat(escapeHtml(item.templateName), '">\n ')
|
|
47152
|
+
.concat((_a = item.contents) !== null && _a !== void 0 ? _a : '', '\n </article>\n ');
|
|
47153
|
+
})
|
|
47154
|
+
.join(''),
|
|
47155
|
+
'\n </section>\n '
|
|
47156
|
+
)
|
|
47157
|
+
: '';
|
|
47158
|
+
return '\n <div class="itinerary-shell">\n '
|
|
47159
|
+
.concat(
|
|
47160
|
+
itinerary.title
|
|
47161
|
+
? '<header class="itinerary-shell__header"><h1 class="itinerary-shell__title">'.concat(escapeHtml(itinerary.title), '</h1></header>')
|
|
47162
|
+
: '',
|
|
47163
|
+
'\n\n <div class="itinerary-shell__content">\n '
|
|
47164
|
+
)
|
|
47165
|
+
.concat(nodesHtml, '\n ')
|
|
47166
|
+
.concat(defaultItemsHtml, '\n </div>\n </div>\n ');
|
|
47167
|
+
};
|
|
47168
|
+
var FullItinerary = function (_a) {
|
|
47169
|
+
var isLoading = _a.isLoading;
|
|
47170
|
+
if (isLoading) {
|
|
47171
|
+
return React__default['default'].createElement(Spinner, null);
|
|
47172
|
+
}
|
|
47173
|
+
var itinerary = reactRedux.useSelector(function (state) {
|
|
47174
|
+
return state.searchResults;
|
|
47175
|
+
}).itinerary;
|
|
47176
|
+
var hostRef = React.useRef(null);
|
|
47177
|
+
var shadowRootRef = React.useRef(null);
|
|
47178
|
+
var html = React.useMemo(
|
|
47179
|
+
function () {
|
|
47180
|
+
return buildItineraryHtml(itinerary);
|
|
47181
|
+
},
|
|
47182
|
+
[itinerary]
|
|
47183
|
+
);
|
|
47184
|
+
React.useEffect(
|
|
47185
|
+
function () {
|
|
47186
|
+
var _a;
|
|
47187
|
+
if (!hostRef.current) {
|
|
47188
|
+
return;
|
|
47189
|
+
}
|
|
47190
|
+
if (!shadowRootRef.current) {
|
|
47191
|
+
shadowRootRef.current = hostRef.current.attachShadow({ mode: 'open' });
|
|
47192
|
+
}
|
|
47193
|
+
var shadowRoot = shadowRootRef.current;
|
|
47194
|
+
shadowRoot.innerHTML =
|
|
47195
|
+
"\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 "
|
|
47196
|
+
.concat(
|
|
47197
|
+
(_a = itinerary === null || itinerary === void 0 ? void 0 : itinerary.styleSheetBody) !== null && _a !== void 0 ? _a : '',
|
|
47198
|
+
'\n </style>\n\n '
|
|
47199
|
+
)
|
|
47200
|
+
.concat(html, '\n ');
|
|
47201
|
+
},
|
|
47202
|
+
[html, itinerary === null || itinerary === void 0 ? void 0 : itinerary.styleSheetBody]
|
|
47203
|
+
);
|
|
47204
|
+
return React__default['default'].createElement('div', { ref: hostRef });
|
|
47205
|
+
};
|
|
47206
|
+
|
|
47325
47207
|
var SearchResultsContainer = function () {
|
|
47326
47208
|
var _a, _b;
|
|
47327
47209
|
var currentSearch = typeof window !== 'undefined' ? window.location.search : '';
|
|
@@ -47334,9 +47216,9 @@ var SearchResultsContainer = function () {
|
|
|
47334
47216
|
results = _c.results,
|
|
47335
47217
|
filteredResults = _c.filteredResults,
|
|
47336
47218
|
packagingAccoResults = _c.packagingAccoResults,
|
|
47337
|
-
filteredPackagingAccoResults = _c.filteredPackagingAccoResults
|
|
47338
|
-
|
|
47339
|
-
|
|
47219
|
+
filteredPackagingAccoResults = _c.filteredPackagingAccoResults;
|
|
47220
|
+
_c.bookingPackageDetails;
|
|
47221
|
+
var isLoading = _c.isLoading,
|
|
47340
47222
|
filters = _c.filters,
|
|
47341
47223
|
selectedSortType = _c.selectedSortType,
|
|
47342
47224
|
selectedSearchResult = _c.selectedSearchResult,
|
|
@@ -47345,7 +47227,9 @@ var SearchResultsContainer = function () {
|
|
|
47345
47227
|
packagingAccoSearchDetails = _c.packagingAccoSearchDetails,
|
|
47346
47228
|
editablePackagingEntry = _c.editablePackagingEntry,
|
|
47347
47229
|
transactionId = _c.transactionId,
|
|
47348
|
-
accommodationFlyInStep = _c.accommodationFlyInStep
|
|
47230
|
+
accommodationFlyInStep = _c.accommodationFlyInStep,
|
|
47231
|
+
itinerary = _c.itinerary,
|
|
47232
|
+
packagingFlightResults = _c.packagingFlightResults;
|
|
47349
47233
|
var isMobile = useMediaQuery('(max-width: 1200px)');
|
|
47350
47234
|
var _d = React.useState(false),
|
|
47351
47235
|
initialFiltersSet = _d[0],
|
|
@@ -47363,11 +47247,15 @@ var SearchResultsContainer = function () {
|
|
|
47363
47247
|
pricesAreLoading = _h[0],
|
|
47364
47248
|
setPricesAreLoading = _h[1];
|
|
47365
47249
|
var _j = React.useState(false),
|
|
47366
|
-
|
|
47367
|
-
|
|
47368
|
-
var _k = React.useState(
|
|
47369
|
-
|
|
47370
|
-
|
|
47250
|
+
itineraryIsLoading = _j[0],
|
|
47251
|
+
setItineraryIsLoading = _j[1];
|
|
47252
|
+
var _k = React.useState(false),
|
|
47253
|
+
itineraryOpen = _k[0],
|
|
47254
|
+
setItineraryOpen = _k[1];
|
|
47255
|
+
var _l = React.useState(null),
|
|
47256
|
+
selectedAccommodationSeed = _l[0],
|
|
47257
|
+
setSelectedAccommodationSeed = _l[1];
|
|
47258
|
+
var skipInitialPackagingAccoDetailsRef = React.useRef(false);
|
|
47371
47259
|
var panelRef = React.useRef(null);
|
|
47372
47260
|
var sortByTypes = [
|
|
47373
47261
|
{ direction: 'asc', label: 'default' },
|
|
@@ -47479,7 +47367,7 @@ var SearchResultsContainer = function () {
|
|
|
47479
47367
|
};
|
|
47480
47368
|
};
|
|
47481
47369
|
var buildPackagingAccommodationRequestFromSeed = function (seed, currentTransactionId) {
|
|
47482
|
-
var _a, _b, _c, _d;
|
|
47370
|
+
var _a, _b, _c, _d, _e, _f;
|
|
47483
47371
|
var country = seed.country;
|
|
47484
47372
|
var region = seed.region;
|
|
47485
47373
|
var oord = seed.oord;
|
|
@@ -47515,11 +47403,15 @@ var SearchResultsContainer = function () {
|
|
|
47515
47403
|
}
|
|
47516
47404
|
return {
|
|
47517
47405
|
transactionId: currentTransactionId,
|
|
47518
|
-
officeId:
|
|
47519
|
-
|
|
47520
|
-
|
|
47406
|
+
officeId:
|
|
47407
|
+
(_c = (_b = context === null || context === void 0 ? void 0 : context.tideConnection) === null || _b === void 0 ? void 0 : _b.officeId) !== null &&
|
|
47408
|
+
_c !== void 0
|
|
47409
|
+
? _c
|
|
47410
|
+
: 1,
|
|
47411
|
+
agentId: (_d = context === null || context === void 0 ? void 0 : context.agentId) !== null && _d !== void 0 ? _d : null,
|
|
47412
|
+
catalogueId: (_e = context.searchConfiguration.defaultCatalogueId) !== null && _e !== void 0 ? _e : 0,
|
|
47521
47413
|
searchConfigurationId: context.searchConfiguration.id,
|
|
47522
|
-
language: (
|
|
47414
|
+
language: (_f = context.languageCode) !== null && _f !== void 0 ? _f : 'en-GB',
|
|
47523
47415
|
serviceType: ACCOMMODATION_SERVICE_TYPE,
|
|
47524
47416
|
fromDate: seed.fromDate,
|
|
47525
47417
|
toDate: seed.toDate,
|
|
@@ -47537,6 +47429,75 @@ var SearchResultsContainer = function () {
|
|
|
47537
47429
|
tagIds: tagId ? [tagId] : []
|
|
47538
47430
|
};
|
|
47539
47431
|
};
|
|
47432
|
+
var buildPackagingFlightRequestFromSeed = function (seed, currentTransactionId) {
|
|
47433
|
+
var _a, _b, _c, _d;
|
|
47434
|
+
if (typeof window !== 'undefined') {
|
|
47435
|
+
window.scrollTo(0, 0);
|
|
47436
|
+
}
|
|
47437
|
+
var adults = seed.rooms
|
|
47438
|
+
.flatMap(function (x) {
|
|
47439
|
+
return x.pax;
|
|
47440
|
+
})
|
|
47441
|
+
.filter(function (x) {
|
|
47442
|
+
return x.age >= 18;
|
|
47443
|
+
}).length;
|
|
47444
|
+
var kids = seed.rooms
|
|
47445
|
+
.flatMap(function (x) {
|
|
47446
|
+
return x.pax;
|
|
47447
|
+
})
|
|
47448
|
+
.filter(function (x) {
|
|
47449
|
+
return x.age >= 2 && x.age < 18;
|
|
47450
|
+
}).length;
|
|
47451
|
+
var babies = seed.rooms
|
|
47452
|
+
.flatMap(function (x) {
|
|
47453
|
+
return x.pax;
|
|
47454
|
+
})
|
|
47455
|
+
.filter(function (x) {
|
|
47456
|
+
return x.age < 2;
|
|
47457
|
+
}).length;
|
|
47458
|
+
return {
|
|
47459
|
+
transactionId: currentTransactionId,
|
|
47460
|
+
officeId:
|
|
47461
|
+
(_b = (_a = context === null || context === void 0 ? void 0 : context.tideConnection) === null || _a === void 0 ? void 0 : _a.officeId) !== null &&
|
|
47462
|
+
_b !== void 0
|
|
47463
|
+
? _b
|
|
47464
|
+
: 1,
|
|
47465
|
+
catalogueId:
|
|
47466
|
+
(_d = lodash.first(
|
|
47467
|
+
(_c = context === null || context === void 0 ? void 0 : context.tideConnection) === null || _c === void 0 ? void 0 : _c.catalogueIds
|
|
47468
|
+
)) !== null && _d !== void 0
|
|
47469
|
+
? _d
|
|
47470
|
+
: 0,
|
|
47471
|
+
departureAirportCode: seed.departureAirport,
|
|
47472
|
+
arrivalAirportCode: seed.destinationAirport,
|
|
47473
|
+
returnAirportCode: seed.returnAirport,
|
|
47474
|
+
luggageIncluded: null,
|
|
47475
|
+
maxStops: null,
|
|
47476
|
+
travelClass: seed.travelClass,
|
|
47477
|
+
pax: lodash.concat(
|
|
47478
|
+
Array.from({ length: adults !== null && adults !== void 0 ? adults : 0 }, function (_, index) {
|
|
47479
|
+
return {
|
|
47480
|
+
id: index,
|
|
47481
|
+
age: 31
|
|
47482
|
+
};
|
|
47483
|
+
}),
|
|
47484
|
+
Array.from({ length: kids !== null && kids !== void 0 ? kids : 0 }, function (_, index) {
|
|
47485
|
+
return {
|
|
47486
|
+
id: index + (adults !== null && adults !== void 0 ? adults : 0),
|
|
47487
|
+
age: 8
|
|
47488
|
+
};
|
|
47489
|
+
}),
|
|
47490
|
+
Array.from({ length: babies !== null && babies !== void 0 ? babies : 0 }, function (_, index) {
|
|
47491
|
+
return {
|
|
47492
|
+
id: index + (adults !== null && adults !== void 0 ? adults : 0) + (kids !== null && kids !== void 0 ? kids : 0),
|
|
47493
|
+
age: 1
|
|
47494
|
+
};
|
|
47495
|
+
})
|
|
47496
|
+
),
|
|
47497
|
+
outward: seed.fromDate ? { date: dateToDateStruct(new Date(seed.fromDate)) } : null,
|
|
47498
|
+
return: seed.toDate ? { date: dateToDateStruct(new Date(seed.toDate)) } : null
|
|
47499
|
+
};
|
|
47500
|
+
};
|
|
47540
47501
|
var buildSearchSeedFromQueryParams = function (params) {
|
|
47541
47502
|
var from = getDateFromParams(params, 'fromDate');
|
|
47542
47503
|
var to = getDateFromParams(params, 'toDate');
|
|
@@ -47549,6 +47510,8 @@ var SearchResultsContainer = function () {
|
|
|
47549
47510
|
var tagId = getNumberFromParams(params, 'tagId');
|
|
47550
47511
|
var destinationAirport = getStringFromParams(params, 'destinationAirport');
|
|
47551
47512
|
var departureAirport = getStringFromParams(params, 'departureAirport');
|
|
47513
|
+
var travelClass = getStringFromParams(params, 'travelClass');
|
|
47514
|
+
var nationality = getStringFromParams(params, 'nationality');
|
|
47552
47515
|
if (!from || !to) {
|
|
47553
47516
|
return null;
|
|
47554
47517
|
}
|
|
@@ -47564,12 +47527,68 @@ var SearchResultsContainer = function () {
|
|
|
47564
47527
|
tagId: tagId,
|
|
47565
47528
|
destinationAirport: destinationAirport,
|
|
47566
47529
|
departureAirport: departureAirport,
|
|
47530
|
+
travelClass: travelClass,
|
|
47531
|
+
nationality: nationality,
|
|
47567
47532
|
rooms: getRequestRooms(rooms)
|
|
47568
47533
|
};
|
|
47569
47534
|
};
|
|
47535
|
+
var buildSearchSeedFromAccommodationSegments = function (entry, segments) {
|
|
47536
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
47537
|
+
if (!(segments === null || segments === void 0 ? void 0 : segments.length)) return null;
|
|
47538
|
+
var sortedSegments = __spreadArray([], segments, true).sort(function (a, b) {
|
|
47539
|
+
return new Date(a.from).getTime() - new Date(b.from).getTime();
|
|
47540
|
+
});
|
|
47541
|
+
var firstSegment = lodash.first(sortedSegments);
|
|
47542
|
+
var lastSegment = lodash.last(sortedSegments);
|
|
47543
|
+
if (!firstSegment || !lastSegment) return null;
|
|
47544
|
+
return {
|
|
47545
|
+
fromDate: toDateOnlyString(firstSegment.from),
|
|
47546
|
+
toDate: toDateOnlyString(lastSegment.to),
|
|
47547
|
+
country: (_b = (_a = firstSegment.country) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : null,
|
|
47548
|
+
region: (_d = (_c = firstSegment.region) === null || _c === void 0 ? void 0 : _c.id) !== null && _d !== void 0 ? _d : null,
|
|
47549
|
+
oord: (_f = (_e = firstSegment.oord) === null || _e === void 0 ? void 0 : _e.id) !== null && _f !== void 0 ? _f : null,
|
|
47550
|
+
location: (_h = (_g = firstSegment.location) === null || _g === void 0 ? void 0 : _g.id) !== null && _h !== void 0 ? _h : null,
|
|
47551
|
+
hotel: parseHotelId(firstSegment),
|
|
47552
|
+
hotelCode: (_j = firstSegment.productCode) !== null && _j !== void 0 ? _j : null,
|
|
47553
|
+
tagId: null,
|
|
47554
|
+
destinationAirport: getDestinationAirportFromEntry((_k = entry.lines) !== null && _k !== void 0 ? _k : []),
|
|
47555
|
+
departureAirport: getDepartureAirportFromEntry((_l = entry.lines) !== null && _l !== void 0 ? _l : []),
|
|
47556
|
+
rooms: getRequestRoomsFromPackagingSegments(entry, sortedSegments)
|
|
47557
|
+
};
|
|
47558
|
+
};
|
|
47559
|
+
var handleEditAccommodation = function (segments) {
|
|
47560
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
47561
|
+
var sourceEntry, seed, currentTransactionId;
|
|
47562
|
+
return __generator(this, function (_a) {
|
|
47563
|
+
switch (_a.label) {
|
|
47564
|
+
case 0:
|
|
47565
|
+
sourceEntry =
|
|
47566
|
+
editablePackagingEntry !== null && editablePackagingEntry !== void 0
|
|
47567
|
+
? editablePackagingEntry
|
|
47568
|
+
: context === null || context === void 0
|
|
47569
|
+
? void 0
|
|
47570
|
+
: context.packagingEntry;
|
|
47571
|
+
if (!sourceEntry) return [2 /*return*/];
|
|
47572
|
+
seed = buildSearchSeedFromAccommodationSegments(sourceEntry, segments);
|
|
47573
|
+
if (!seed) return [2 /*return*/];
|
|
47574
|
+
setDetailsIsLoading(true);
|
|
47575
|
+
setSelectedAccommodationSeed(seed);
|
|
47576
|
+
dispatch(setAccommodationFlyInStep('results'));
|
|
47577
|
+
handleFlyInToggle(true);
|
|
47578
|
+
return [4 /*yield*/, getOrCreateTransactionId()];
|
|
47579
|
+
case 1:
|
|
47580
|
+
currentTransactionId = _a.sent();
|
|
47581
|
+
return [4 /*yield*/, runAccommodationFlow(seed, currentTransactionId !== null && currentTransactionId !== void 0 ? currentTransactionId : '')];
|
|
47582
|
+
case 2:
|
|
47583
|
+
_a.sent();
|
|
47584
|
+
setDetailsIsLoading(false);
|
|
47585
|
+
return [2 /*return*/];
|
|
47586
|
+
}
|
|
47587
|
+
});
|
|
47588
|
+
});
|
|
47589
|
+
};
|
|
47570
47590
|
var handleConfirmHotelSwap = function () {
|
|
47571
47591
|
var updatedEntry = swapHotelInPackagingEntry();
|
|
47572
|
-
console.log('Updated entry after hotel swap', updatedEntry);
|
|
47573
47592
|
if (!updatedEntry) return;
|
|
47574
47593
|
dispatch(setEditablePackagingEntry(updatedEntry));
|
|
47575
47594
|
handleFlyInToggle(false);
|
|
@@ -47584,7 +47603,6 @@ var SearchResultsContainer = function () {
|
|
|
47584
47603
|
var details = packagingAccoSearchDetails;
|
|
47585
47604
|
if (!sourceEntry || !(details === null || details === void 0 ? void 0 : details.length)) return null;
|
|
47586
47605
|
var selectedOptionsPerRoom = getSelectedOptionsPerRoom(details);
|
|
47587
|
-
console.log('Selected options per room', selectedOptionsPerRoom);
|
|
47588
47606
|
if (!selectedOptionsPerRoom.length) return null;
|
|
47589
47607
|
var selectedHotel = details[0];
|
|
47590
47608
|
var roomIndex = 0;
|
|
@@ -47597,7 +47615,6 @@ var SearchResultsContainer = function () {
|
|
|
47597
47615
|
return x.roomIndex === roomIndex;
|
|
47598
47616
|
});
|
|
47599
47617
|
var selectedOption = selectedRoom === null || selectedRoom === void 0 ? void 0 : selectedRoom.option;
|
|
47600
|
-
console.log('selectedRoom and selectedOption for line', line, selectedRoom, selectedOption);
|
|
47601
47618
|
roomIndex++;
|
|
47602
47619
|
if (!selectedOption) {
|
|
47603
47620
|
return line;
|
|
@@ -47670,6 +47687,25 @@ var SearchResultsContainer = function () {
|
|
|
47670
47687
|
},
|
|
47671
47688
|
[filtersOpen]
|
|
47672
47689
|
);
|
|
47690
|
+
var getOrCreateTransactionId = function () {
|
|
47691
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
47692
|
+
var _a;
|
|
47693
|
+
return __generator(this, function (_b) {
|
|
47694
|
+
switch (_b.label) {
|
|
47695
|
+
case 0:
|
|
47696
|
+
if ((_a = context === null || context === void 0 ? void 0 : context.packagingEntry) === null || _a === void 0 ? void 0 : _a.transactionId) {
|
|
47697
|
+
return [2 /*return*/, context.packagingEntry.transactionId];
|
|
47698
|
+
}
|
|
47699
|
+
if (transactionId) {
|
|
47700
|
+
return [2 /*return*/, transactionId];
|
|
47701
|
+
}
|
|
47702
|
+
return [4 /*yield*/, runStartTransaction()];
|
|
47703
|
+
case 1:
|
|
47704
|
+
return [2 /*return*/, _b.sent()];
|
|
47705
|
+
}
|
|
47706
|
+
});
|
|
47707
|
+
});
|
|
47708
|
+
};
|
|
47673
47709
|
var runSearch = function () {
|
|
47674
47710
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
47675
47711
|
var config, seed, searchRequest, packageSearchResults, enrichedFilters, initialFilteredResults, err_1;
|
|
@@ -47692,7 +47728,6 @@ var SearchResultsContainer = function () {
|
|
|
47692
47728
|
return [4 /*yield*/, build.search(config, searchRequest)];
|
|
47693
47729
|
case 1:
|
|
47694
47730
|
packageSearchResults = _b.sent();
|
|
47695
|
-
console.log('Search results', packageSearchResults);
|
|
47696
47731
|
enrichedFilters = enrichFiltersWithResults(packageSearchResults, context.filters, (_a = context.tags) !== null && _a !== void 0 ? _a : []);
|
|
47697
47732
|
if (!initialFiltersSet) {
|
|
47698
47733
|
dispatch(resetFilters(enrichedFilters));
|
|
@@ -47752,11 +47787,11 @@ var SearchResultsContainer = function () {
|
|
|
47752
47787
|
var runHotelSearch = function (currentTransactionId, seed) {
|
|
47753
47788
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
47754
47789
|
var config, searchRequest, packageAccoSearchResults, enrichedFilters, initialFilteredResults, err_3;
|
|
47755
|
-
var _a;
|
|
47756
|
-
return __generator(this, function (
|
|
47757
|
-
switch (
|
|
47790
|
+
var _a, _b, _c;
|
|
47791
|
+
return __generator(this, function (_d) {
|
|
47792
|
+
switch (_d.label) {
|
|
47758
47793
|
case 0:
|
|
47759
|
-
|
|
47794
|
+
_d.trys.push([0, 2, , 3]);
|
|
47760
47795
|
if (!context) return [2 /*return*/];
|
|
47761
47796
|
dispatch(setIsLoading(true));
|
|
47762
47797
|
config = {
|
|
@@ -47766,10 +47801,9 @@ var SearchResultsContainer = function () {
|
|
|
47766
47801
|
searchRequest = buildPackagingAccommodationRequestFromSeed(seed, currentTransactionId);
|
|
47767
47802
|
searchRequest.portalId = context.portalId;
|
|
47768
47803
|
searchRequest.agentId = context.agentId;
|
|
47769
|
-
console.log('Packaging accommodation search request', searchRequest);
|
|
47770
47804
|
return [4 /*yield*/, build.searchPackagingAccommodations(config, searchRequest)];
|
|
47771
47805
|
case 1:
|
|
47772
|
-
packageAccoSearchResults =
|
|
47806
|
+
packageAccoSearchResults = _d.sent();
|
|
47773
47807
|
enrichedFilters = enrichFiltersWithPackageAccoResults(
|
|
47774
47808
|
packageAccoSearchResults,
|
|
47775
47809
|
context.filters,
|
|
@@ -47783,11 +47817,19 @@ var SearchResultsContainer = function () {
|
|
|
47783
47817
|
dispatch(setPackagingAccoResults(packageAccoSearchResults));
|
|
47784
47818
|
initialFilteredResults = applyFiltersToPackageAccoResults(packageAccoSearchResults, filters, null);
|
|
47785
47819
|
dispatch(setFilteredPackagingAccoResults(initialFilteredResults));
|
|
47820
|
+
if (initialFilteredResults.length > 0) {
|
|
47821
|
+
skipInitialPackagingAccoDetailsRef.current = true;
|
|
47822
|
+
dispatch(
|
|
47823
|
+
setSelectedPackagingAccoResult(
|
|
47824
|
+
(_c = (_b = lodash.first(initialFilteredResults)) === null || _b === void 0 ? void 0 : _b.code) !== null && _c !== void 0 ? _c : null
|
|
47825
|
+
)
|
|
47826
|
+
);
|
|
47827
|
+
}
|
|
47786
47828
|
dispatch(setIsLoading(false));
|
|
47787
47829
|
return [3 /*break*/, 3];
|
|
47788
47830
|
case 2:
|
|
47789
|
-
err_3 =
|
|
47790
|
-
console.error('
|
|
47831
|
+
err_3 = _d.sent();
|
|
47832
|
+
console.error('HotelSearch failed', err_3);
|
|
47791
47833
|
dispatch(setIsLoading(false));
|
|
47792
47834
|
return [3 /*break*/, 3];
|
|
47793
47835
|
case 3:
|
|
@@ -47796,32 +47838,61 @@ var SearchResultsContainer = function () {
|
|
|
47796
47838
|
});
|
|
47797
47839
|
});
|
|
47798
47840
|
};
|
|
47799
|
-
var runAccommodationFlow = function (seed) {
|
|
47841
|
+
var runAccommodationFlow = function (seed, currentTransactionId) {
|
|
47800
47842
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
47801
|
-
|
|
47802
|
-
|
|
47803
|
-
return __generator(this, function (_b) {
|
|
47804
|
-
switch (_b.label) {
|
|
47843
|
+
return __generator(this, function (_a) {
|
|
47844
|
+
switch (_a.label) {
|
|
47805
47845
|
case 0:
|
|
47806
47846
|
if (!context || context.showMockup) return [2 /*return*/];
|
|
47807
|
-
currentTransactionId
|
|
47808
|
-
((_a = context === null || context === void 0 ? void 0 : context.packagingEntry) === null || _a === void 0 ? void 0 : _a.transactionId) ||
|
|
47809
|
-
transactionId;
|
|
47810
|
-
console.log('Current transaction ID', currentTransactionId);
|
|
47811
|
-
if (!!currentTransactionId) return [3 /*break*/, 2];
|
|
47812
|
-
dispatch(setIsLoading(true));
|
|
47813
|
-
return [4 /*yield*/, runStartTransaction()];
|
|
47847
|
+
return [4 /*yield*/, runHotelSearch(currentTransactionId, seed)];
|
|
47814
47848
|
case 1:
|
|
47815
|
-
|
|
47816
|
-
|
|
47849
|
+
_a.sent();
|
|
47850
|
+
return [2 /*return*/];
|
|
47851
|
+
}
|
|
47852
|
+
});
|
|
47853
|
+
});
|
|
47854
|
+
};
|
|
47855
|
+
var runFlightSearch = function (currentTransactionId, seed) {
|
|
47856
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
47857
|
+
var config, searchRequest, packageFlightSearchResults, err_4;
|
|
47858
|
+
return __generator(this, function (_a) {
|
|
47859
|
+
switch (_a.label) {
|
|
47860
|
+
case 0:
|
|
47861
|
+
_a.trys.push([0, 2, , 3]);
|
|
47862
|
+
if (!context) return [2 /*return*/];
|
|
47863
|
+
dispatch(setFlightsLoading(true));
|
|
47864
|
+
config = {
|
|
47865
|
+
host: context.tideConnection.host,
|
|
47866
|
+
apiKey: context.tideConnection.apiKey
|
|
47867
|
+
};
|
|
47868
|
+
searchRequest = buildPackagingFlightRequestFromSeed(seed, currentTransactionId);
|
|
47869
|
+
searchRequest.agentId = context.agentId;
|
|
47870
|
+
return [4 /*yield*/, build.searchPackagingFlights(config, searchRequest)];
|
|
47871
|
+
case 1:
|
|
47872
|
+
packageFlightSearchResults = _a.sent();
|
|
47873
|
+
dispatch(setPackagingFlightResults(packageFlightSearchResults));
|
|
47874
|
+
dispatch(setFlightsLoading(false));
|
|
47875
|
+
return [3 /*break*/, 3];
|
|
47817
47876
|
case 2:
|
|
47818
|
-
|
|
47819
|
-
|
|
47820
|
-
|
|
47821
|
-
|
|
47822
|
-
return [4 /*yield*/, runHotelSearch(currentTransactionId, seed)];
|
|
47877
|
+
err_4 = _a.sent();
|
|
47878
|
+
console.error('FlightSearch failed', err_4);
|
|
47879
|
+
dispatch(setFlightsLoading(false));
|
|
47880
|
+
return [3 /*break*/, 3];
|
|
47823
47881
|
case 3:
|
|
47824
|
-
|
|
47882
|
+
return [2 /*return*/];
|
|
47883
|
+
}
|
|
47884
|
+
});
|
|
47885
|
+
});
|
|
47886
|
+
};
|
|
47887
|
+
var runFlightFlow = function (seed, currentTransactionId) {
|
|
47888
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
47889
|
+
return __generator(this, function (_a) {
|
|
47890
|
+
switch (_a.label) {
|
|
47891
|
+
case 0:
|
|
47892
|
+
if (!context || context.showMockup) return [2 /*return*/];
|
|
47893
|
+
return [4 /*yield*/, runFlightSearch(currentTransactionId, seed)];
|
|
47894
|
+
case 1:
|
|
47895
|
+
_a.sent();
|
|
47825
47896
|
return [2 /*return*/];
|
|
47826
47897
|
}
|
|
47827
47898
|
});
|
|
@@ -47838,20 +47909,60 @@ var SearchResultsContainer = function () {
|
|
|
47838
47909
|
runSearch();
|
|
47839
47910
|
}
|
|
47840
47911
|
if ((context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.Accommodation) {
|
|
47841
|
-
var
|
|
47842
|
-
if (
|
|
47843
|
-
|
|
47912
|
+
var seed_1 = activeSearchSeed;
|
|
47913
|
+
if (seed_1) {
|
|
47914
|
+
(function () {
|
|
47915
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
47916
|
+
var transactionId;
|
|
47917
|
+
return __generator(this, function (_a) {
|
|
47918
|
+
switch (_a.label) {
|
|
47919
|
+
case 0:
|
|
47920
|
+
return [4 /*yield*/, getOrCreateTransactionId()];
|
|
47921
|
+
case 1:
|
|
47922
|
+
transactionId = _a.sent();
|
|
47923
|
+
if (!transactionId) return [2 /*return*/];
|
|
47924
|
+
return [4 /*yield*/, runAccommodationFlow(seed_1, transactionId)];
|
|
47925
|
+
case 2:
|
|
47926
|
+
_a.sent();
|
|
47927
|
+
return [2 /*return*/];
|
|
47928
|
+
}
|
|
47929
|
+
});
|
|
47930
|
+
});
|
|
47931
|
+
})();
|
|
47844
47932
|
}
|
|
47845
47933
|
}
|
|
47846
47934
|
if (
|
|
47847
47935
|
(context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.AccommodationAndFlight &&
|
|
47848
47936
|
context.searchConfiguration.enableManualPackaging &&
|
|
47849
|
-
context.searchConfiguration.allowAccommodations &&
|
|
47850
47937
|
!(context === null || context === void 0 ? void 0 : context.packagingEntry)
|
|
47851
47938
|
) {
|
|
47852
|
-
var
|
|
47853
|
-
if (
|
|
47854
|
-
|
|
47939
|
+
var seed_2 = activeSearchSeed;
|
|
47940
|
+
if (seed_2) {
|
|
47941
|
+
(function () {
|
|
47942
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
47943
|
+
var sharedTransactionId, tasks;
|
|
47944
|
+
return __generator(this, function (_a) {
|
|
47945
|
+
switch (_a.label) {
|
|
47946
|
+
case 0:
|
|
47947
|
+
return [4 /*yield*/, getOrCreateTransactionId()];
|
|
47948
|
+
case 1:
|
|
47949
|
+
sharedTransactionId = _a.sent();
|
|
47950
|
+
if (!sharedTransactionId) return [2 /*return*/];
|
|
47951
|
+
tasks = [];
|
|
47952
|
+
if (context.searchConfiguration.allowAccommodations) {
|
|
47953
|
+
tasks.push(runAccommodationFlow(seed_2, sharedTransactionId));
|
|
47954
|
+
}
|
|
47955
|
+
if (context.searchConfiguration.allowFlights) {
|
|
47956
|
+
tasks.push(runFlightFlow(seed_2, sharedTransactionId));
|
|
47957
|
+
}
|
|
47958
|
+
return [4 /*yield*/, Promise.all(tasks)];
|
|
47959
|
+
case 2:
|
|
47960
|
+
_a.sent();
|
|
47961
|
+
return [2 /*return*/];
|
|
47962
|
+
}
|
|
47963
|
+
});
|
|
47964
|
+
});
|
|
47965
|
+
})();
|
|
47855
47966
|
}
|
|
47856
47967
|
}
|
|
47857
47968
|
},
|
|
@@ -47867,6 +47978,7 @@ var SearchResultsContainer = function () {
|
|
|
47867
47978
|
);
|
|
47868
47979
|
React.useEffect(
|
|
47869
47980
|
function () {
|
|
47981
|
+
console.log('packaging entry from context', context === null || context === void 0 ? void 0 : context.packagingEntry);
|
|
47870
47982
|
if (context === null || context === void 0 ? void 0 : context.packagingEntry) {
|
|
47871
47983
|
console.log('original packaging entry from context', context.packagingEntry);
|
|
47872
47984
|
dispatch(setEditablePackagingEntry(structuredClone(context.packagingEntry)));
|
|
@@ -47880,7 +47992,7 @@ var SearchResultsContainer = function () {
|
|
|
47880
47992
|
function () {
|
|
47881
47993
|
var fetchDetails = function () {
|
|
47882
47994
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
47883
|
-
var config, selectedItem, requestRooms, seed, detailsRequest, detailsResponse,
|
|
47995
|
+
var config, selectedItem, requestRooms, seed, detailsRequest, detailsResponse, err_5;
|
|
47884
47996
|
var _a;
|
|
47885
47997
|
return __generator(this, function (_b) {
|
|
47886
47998
|
switch (_b.label) {
|
|
@@ -47943,8 +48055,8 @@ var SearchResultsContainer = function () {
|
|
|
47943
48055
|
setDetailsIsLoading(false);
|
|
47944
48056
|
return [3 /*break*/, 4];
|
|
47945
48057
|
case 3:
|
|
47946
|
-
|
|
47947
|
-
console.error('Failed to fetch package details',
|
|
48058
|
+
err_5 = _b.sent();
|
|
48059
|
+
console.error('Failed to fetch package details', err_5);
|
|
47948
48060
|
setDetailsIsLoading(false);
|
|
47949
48061
|
return [3 /*break*/, 4];
|
|
47950
48062
|
case 4:
|
|
@@ -47969,12 +48081,16 @@ var SearchResultsContainer = function () {
|
|
|
47969
48081
|
destinationIsAirport,
|
|
47970
48082
|
detailSearchRequest,
|
|
47971
48083
|
packageAccoSearchDetails,
|
|
47972
|
-
|
|
48084
|
+
err_6;
|
|
47973
48085
|
var _a, _b, _c, _d, _e;
|
|
47974
48086
|
return __generator(this, function (_f) {
|
|
47975
48087
|
switch (_f.label) {
|
|
47976
48088
|
case 0:
|
|
47977
48089
|
if (!selectedPackagingAccoResultCode || !context) return [2 /*return*/];
|
|
48090
|
+
if (skipInitialPackagingAccoDetailsRef.current) {
|
|
48091
|
+
skipInitialPackagingAccoDetailsRef.current = false;
|
|
48092
|
+
return [2 /*return*/];
|
|
48093
|
+
}
|
|
47978
48094
|
setDetailsIsLoading(true);
|
|
47979
48095
|
if (
|
|
47980
48096
|
(context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.Accommodation ||
|
|
@@ -48053,13 +48169,12 @@ var SearchResultsContainer = function () {
|
|
|
48053
48169
|
return [4 /*yield*/, build.searchPackagingAccommodations(config, detailSearchRequest)];
|
|
48054
48170
|
case 2:
|
|
48055
48171
|
packageAccoSearchDetails = _f.sent();
|
|
48056
|
-
console.log('Packaging Acco Search details', packageAccoSearchDetails);
|
|
48057
48172
|
dispatch(setPackagingAccoSearchDetails(packageAccoSearchDetails));
|
|
48058
48173
|
setDetailsIsLoading(false);
|
|
48059
48174
|
return [3 /*break*/, 4];
|
|
48060
48175
|
case 3:
|
|
48061
|
-
|
|
48062
|
-
console.error('Failed to fetch package details',
|
|
48176
|
+
err_6 = _f.sent();
|
|
48177
|
+
console.error('Failed to fetch package details', err_6);
|
|
48063
48178
|
setDetailsIsLoading(false);
|
|
48064
48179
|
return [3 /*break*/, 4];
|
|
48065
48180
|
case 4:
|
|
@@ -48096,75 +48211,15 @@ var SearchResultsContainer = function () {
|
|
|
48096
48211
|
},
|
|
48097
48212
|
[activeSearchSeed]
|
|
48098
48213
|
);
|
|
48099
|
-
var handleEditAccommodation = function (segments) {
|
|
48100
|
-
return __awaiter(void 0, void 0, void 0, function () {
|
|
48101
|
-
var sourceEntry, seed;
|
|
48102
|
-
return __generator(this, function (_a) {
|
|
48103
|
-
switch (_a.label) {
|
|
48104
|
-
case 0:
|
|
48105
|
-
sourceEntry =
|
|
48106
|
-
editablePackagingEntry !== null && editablePackagingEntry !== void 0
|
|
48107
|
-
? editablePackagingEntry
|
|
48108
|
-
: context === null || context === void 0
|
|
48109
|
-
? void 0
|
|
48110
|
-
: context.packagingEntry;
|
|
48111
|
-
if (!sourceEntry) return [2 /*return*/];
|
|
48112
|
-
seed = buildSearchSeedFromAccommodationSegments(sourceEntry, segments);
|
|
48113
|
-
if (!seed) return [2 /*return*/];
|
|
48114
|
-
setDetailsIsLoading(true);
|
|
48115
|
-
setSelectedAccommodationSeed(seed);
|
|
48116
|
-
dispatch(setAccommodationFlyInStep('results'));
|
|
48117
|
-
handleFlyInToggle(true);
|
|
48118
|
-
return [4 /*yield*/, runAccommodationFlow(seed)];
|
|
48119
|
-
case 1:
|
|
48120
|
-
_a.sent();
|
|
48121
|
-
setDetailsIsLoading(false);
|
|
48122
|
-
return [2 /*return*/];
|
|
48123
|
-
}
|
|
48124
|
-
});
|
|
48125
|
-
});
|
|
48126
|
-
};
|
|
48127
|
-
var buildSearchSeedFromAccommodationSegments = function (entry, segments) {
|
|
48128
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
48129
|
-
if (!(segments === null || segments === void 0 ? void 0 : segments.length)) return null;
|
|
48130
|
-
var sortedSegments = __spreadArray([], segments, true).sort(function (a, b) {
|
|
48131
|
-
return new Date(a.from).getTime() - new Date(b.from).getTime();
|
|
48132
|
-
});
|
|
48133
|
-
var firstSegment = lodash.first(sortedSegments);
|
|
48134
|
-
var lastSegment = lodash.last(sortedSegments);
|
|
48135
|
-
if (!firstSegment || !lastSegment) return null;
|
|
48136
|
-
return {
|
|
48137
|
-
fromDate: toDateOnlyString(firstSegment.from),
|
|
48138
|
-
toDate: toDateOnlyString(lastSegment.to),
|
|
48139
|
-
country: (_b = (_a = firstSegment.country) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : null,
|
|
48140
|
-
region: (_d = (_c = firstSegment.region) === null || _c === void 0 ? void 0 : _c.id) !== null && _d !== void 0 ? _d : null,
|
|
48141
|
-
oord: (_f = (_e = firstSegment.oord) === null || _e === void 0 ? void 0 : _e.id) !== null && _f !== void 0 ? _f : null,
|
|
48142
|
-
location: (_h = (_g = firstSegment.location) === null || _g === void 0 ? void 0 : _g.id) !== null && _h !== void 0 ? _h : null,
|
|
48143
|
-
hotel: parseHotelId(firstSegment),
|
|
48144
|
-
hotelCode: (_j = firstSegment.productCode) !== null && _j !== void 0 ? _j : null,
|
|
48145
|
-
tagId: null,
|
|
48146
|
-
destinationAirport: getDestinationAirportFromEntry((_k = entry.lines) !== null && _k !== void 0 ? _k : []),
|
|
48147
|
-
departureAirport: getDepartureAirportFromEntry((_l = entry.lines) !== null && _l !== void 0 ? _l : []),
|
|
48148
|
-
rooms: getRequestRoomsFromPackagingSegments(entry, sortedSegments)
|
|
48149
|
-
};
|
|
48150
|
-
};
|
|
48151
48214
|
React.useEffect(
|
|
48152
48215
|
function () {
|
|
48153
48216
|
var fetchPriceDetails = function () {
|
|
48154
48217
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
48155
|
-
var config, priceDetails,
|
|
48218
|
+
var config, priceDetails, err_7;
|
|
48156
48219
|
return __generator(this, function (_a) {
|
|
48157
48220
|
switch (_a.label) {
|
|
48158
48221
|
case 0:
|
|
48159
|
-
|
|
48160
|
-
'Fetching price details for entry',
|
|
48161
|
-
editablePackagingEntry !== null && editablePackagingEntry !== void 0
|
|
48162
|
-
? editablePackagingEntry
|
|
48163
|
-
: context === null || context === void 0
|
|
48164
|
-
? void 0
|
|
48165
|
-
: context.packagingEntry
|
|
48166
|
-
);
|
|
48167
|
-
if (!context || !editablePackagingEntry) return [2 /*return*/];
|
|
48222
|
+
if (!context || !editablePackagingEntry || lodash.isEmpty(editablePackagingEntry.lines)) return [2 /*return*/];
|
|
48168
48223
|
setPricesAreLoading(true);
|
|
48169
48224
|
_a.label = 1;
|
|
48170
48225
|
case 1:
|
|
@@ -48180,8 +48235,8 @@ var SearchResultsContainer = function () {
|
|
|
48180
48235
|
setPricesAreLoading(false);
|
|
48181
48236
|
return [3 /*break*/, 4];
|
|
48182
48237
|
case 3:
|
|
48183
|
-
|
|
48184
|
-
console.error('Error fetching price details',
|
|
48238
|
+
err_7 = _a.sent();
|
|
48239
|
+
console.error('Error fetching price details', err_7);
|
|
48185
48240
|
setPricesAreLoading(false);
|
|
48186
48241
|
return [3 /*break*/, 4];
|
|
48187
48242
|
case 4:
|
|
@@ -48190,10 +48245,431 @@ var SearchResultsContainer = function () {
|
|
|
48190
48245
|
});
|
|
48191
48246
|
});
|
|
48192
48247
|
};
|
|
48248
|
+
var fetchItinerary = function () {
|
|
48249
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
48250
|
+
var config, itinerary_1, err_8;
|
|
48251
|
+
return __generator(this, function (_a) {
|
|
48252
|
+
switch (_a.label) {
|
|
48253
|
+
case 0:
|
|
48254
|
+
console.log('Fetching itinerary for entry', editablePackagingEntry);
|
|
48255
|
+
if (!context || !editablePackagingEntry || lodash.isEmpty(editablePackagingEntry.lines)) return [2 /*return*/];
|
|
48256
|
+
setItineraryIsLoading(true);
|
|
48257
|
+
_a.label = 1;
|
|
48258
|
+
case 1:
|
|
48259
|
+
_a.trys.push([1, 3, , 4]);
|
|
48260
|
+
config = {
|
|
48261
|
+
host: context.tideConnection.host,
|
|
48262
|
+
apiKey: context.tideConnection.apiKey
|
|
48263
|
+
};
|
|
48264
|
+
return [4 /*yield*/, build.getItinerary(config, editablePackagingEntry)];
|
|
48265
|
+
case 2:
|
|
48266
|
+
itinerary_1 = _a.sent();
|
|
48267
|
+
console.log('Fetched itinerary', itinerary_1);
|
|
48268
|
+
dispatch(setItinerary(itinerary_1));
|
|
48269
|
+
setItineraryIsLoading(false);
|
|
48270
|
+
return [3 /*break*/, 4];
|
|
48271
|
+
case 3:
|
|
48272
|
+
err_8 = _a.sent();
|
|
48273
|
+
console.error('Error fetching itinerary', err_8);
|
|
48274
|
+
setItineraryIsLoading(false);
|
|
48275
|
+
return [3 /*break*/, 4];
|
|
48276
|
+
case 4:
|
|
48277
|
+
return [2 /*return*/];
|
|
48278
|
+
}
|
|
48279
|
+
});
|
|
48280
|
+
});
|
|
48281
|
+
};
|
|
48193
48282
|
fetchPriceDetails();
|
|
48283
|
+
fetchItinerary();
|
|
48194
48284
|
},
|
|
48195
48285
|
[editablePackagingEntry]
|
|
48196
48286
|
);
|
|
48287
|
+
// Flight selection
|
|
48288
|
+
var _m = React.useState(null),
|
|
48289
|
+
selectedOutwardKey = _m[0],
|
|
48290
|
+
setSelectedOutwardKey = _m[1];
|
|
48291
|
+
var _o = React.useState(null),
|
|
48292
|
+
selectedReturnKey = _o[0],
|
|
48293
|
+
setSelectedReturnKey = _o[1];
|
|
48294
|
+
var uniqueOutwardFlights = React__default['default'].useMemo(
|
|
48295
|
+
function () {
|
|
48296
|
+
var map = new Map();
|
|
48297
|
+
packagingFlightResults.forEach(function (flight) {
|
|
48298
|
+
var key = getFlightKey(flight.outward.segments);
|
|
48299
|
+
if (!map.has(key)) {
|
|
48300
|
+
map.set(key, flight);
|
|
48301
|
+
}
|
|
48302
|
+
});
|
|
48303
|
+
return Array.from(map.values());
|
|
48304
|
+
},
|
|
48305
|
+
[packagingFlightResults]
|
|
48306
|
+
);
|
|
48307
|
+
var _p = React.useState([]),
|
|
48308
|
+
uniqueReturnFlights = _p[0],
|
|
48309
|
+
setUniqueReturnFlights = _p[1];
|
|
48310
|
+
React.useEffect(
|
|
48311
|
+
function () {
|
|
48312
|
+
if (!selectedOutwardKey) {
|
|
48313
|
+
setUniqueReturnFlights([]);
|
|
48314
|
+
setSelectedReturnKey(null);
|
|
48315
|
+
return;
|
|
48316
|
+
}
|
|
48317
|
+
// Filter combinations that match selected outward fare
|
|
48318
|
+
var matchingCombinations = packagingFlightResults.filter(function (flight) {
|
|
48319
|
+
return getFlightKey(flight.outward.segments) === selectedOutwardKey;
|
|
48320
|
+
});
|
|
48321
|
+
var returnMap = new Map();
|
|
48322
|
+
matchingCombinations.forEach(function (flight) {
|
|
48323
|
+
var key = getFlightKey(flight.return.segments);
|
|
48324
|
+
if (!returnMap.has(key)) {
|
|
48325
|
+
returnMap.set(key, flight);
|
|
48326
|
+
}
|
|
48327
|
+
});
|
|
48328
|
+
var returns = Array.from(returnMap.values());
|
|
48329
|
+
setUniqueReturnFlights(returns);
|
|
48330
|
+
},
|
|
48331
|
+
[selectedOutwardKey, packagingFlightResults]
|
|
48332
|
+
);
|
|
48333
|
+
var selectedOutward = React__default['default'].useMemo(
|
|
48334
|
+
function () {
|
|
48335
|
+
if (!selectedOutwardKey) return null;
|
|
48336
|
+
return (
|
|
48337
|
+
packagingFlightResults.find(function (flight) {
|
|
48338
|
+
return getFlightKey(flight.outward.segments) === selectedOutwardKey;
|
|
48339
|
+
}) || null
|
|
48340
|
+
);
|
|
48341
|
+
},
|
|
48342
|
+
[packagingFlightResults, selectedOutwardKey]
|
|
48343
|
+
);
|
|
48344
|
+
var selectedReturn = React__default['default'].useMemo(
|
|
48345
|
+
function () {
|
|
48346
|
+
if (!selectedReturnKey) return null;
|
|
48347
|
+
return (
|
|
48348
|
+
packagingFlightResults.find(function (flight) {
|
|
48349
|
+
return getFlightKey(flight.return.segments) === selectedReturnKey;
|
|
48350
|
+
}) || null
|
|
48351
|
+
);
|
|
48352
|
+
},
|
|
48353
|
+
[packagingFlightResults, selectedReturnKey]
|
|
48354
|
+
);
|
|
48355
|
+
var selectedCombinationFlight = React__default['default'].useMemo(
|
|
48356
|
+
function () {
|
|
48357
|
+
if (!selectedOutwardKey || !selectedReturnKey) return undefined;
|
|
48358
|
+
return packagingFlightResults.find(function (flight) {
|
|
48359
|
+
return getFlightKey(flight.outward.segments) === selectedOutwardKey && getFlightKey(flight.return.segments) === selectedReturnKey;
|
|
48360
|
+
});
|
|
48361
|
+
},
|
|
48362
|
+
[packagingFlightResults, selectedOutwardKey, selectedReturnKey]
|
|
48363
|
+
);
|
|
48364
|
+
// TODO: get details for selected combination flight and show in fly-in
|
|
48365
|
+
// useEffect(() => {
|
|
48366
|
+
// if (!selectedCombinationFlight) return;
|
|
48367
|
+
// dispatch(setSelectedPackagingFlight(selectedCombinationFlight));
|
|
48368
|
+
// // onFlightSearch(selectedCombinationFlight); // Trigger search to update accommodation options based on selected flight
|
|
48369
|
+
// dispatch(setFlyInIsOpen(true));
|
|
48370
|
+
// }, [selectedCombinationFlight, dispatch]);
|
|
48371
|
+
React.useEffect(
|
|
48372
|
+
function () {
|
|
48373
|
+
var _a, _b, _c, _d;
|
|
48374
|
+
if (!context) return;
|
|
48375
|
+
var seed = activeSearchSeed;
|
|
48376
|
+
if (!seed) return;
|
|
48377
|
+
var nextEntry = buildOrUpdatePackagingEntryPartial({
|
|
48378
|
+
sourceEntry:
|
|
48379
|
+
(_a = editablePackagingEntry !== null && editablePackagingEntry !== void 0 ? editablePackagingEntry : context.packagingEntry) !== null &&
|
|
48380
|
+
_a !== void 0
|
|
48381
|
+
? _a
|
|
48382
|
+
: null,
|
|
48383
|
+
selectedHotelCode: selectedPackagingAccoResultCode,
|
|
48384
|
+
accommodationResults: packagingAccoResults,
|
|
48385
|
+
selectedFlight: selectedCombinationFlight !== null && selectedCombinationFlight !== void 0 ? selectedCombinationFlight : null,
|
|
48386
|
+
seed: seed,
|
|
48387
|
+
transactionId:
|
|
48388
|
+
(_c =
|
|
48389
|
+
transactionId !== null && transactionId !== void 0
|
|
48390
|
+
? transactionId
|
|
48391
|
+
: (_b = context.packagingEntry) === null || _b === void 0
|
|
48392
|
+
? void 0
|
|
48393
|
+
: _b.transactionId) !== null && _c !== void 0
|
|
48394
|
+
? _c
|
|
48395
|
+
: '',
|
|
48396
|
+
language: (_d = context.languageCode) !== null && _d !== void 0 ? _d : 'en-GB'
|
|
48397
|
+
});
|
|
48398
|
+
console.log('Built next packaging entry', nextEntry);
|
|
48399
|
+
if (!nextEntry) return;
|
|
48400
|
+
dispatch(setEditablePackagingEntry(nextEntry));
|
|
48401
|
+
if (selectedCombinationFlight) {
|
|
48402
|
+
dispatch(setSelectedPackagingFlight(selectedCombinationFlight));
|
|
48403
|
+
}
|
|
48404
|
+
},
|
|
48405
|
+
[
|
|
48406
|
+
context,
|
|
48407
|
+
activeSearchSeed,
|
|
48408
|
+
selectedPackagingAccoResultCode,
|
|
48409
|
+
packagingAccoResults,
|
|
48410
|
+
packagingAccoSearchDetails,
|
|
48411
|
+
selectedCombinationFlight,
|
|
48412
|
+
transactionId,
|
|
48413
|
+
dispatch
|
|
48414
|
+
]
|
|
48415
|
+
);
|
|
48416
|
+
var removeAccommodationLines = function (lines) {
|
|
48417
|
+
return lines.filter(function (line) {
|
|
48418
|
+
return line.serviceType !== ACCOMMODATION_SERVICE_TYPE;
|
|
48419
|
+
});
|
|
48420
|
+
};
|
|
48421
|
+
var removeFlightLines = function (lines) {
|
|
48422
|
+
return lines.filter(function (line) {
|
|
48423
|
+
return line.serviceType !== FLIGHT_SERVICE_TYPE;
|
|
48424
|
+
});
|
|
48425
|
+
};
|
|
48426
|
+
var buildAccommodationLinesFromSelection = function (selectedHotel, seed) {
|
|
48427
|
+
if (!selectedHotel) return [];
|
|
48428
|
+
var parentGuid = crypto.randomUUID();
|
|
48429
|
+
return selectedHotel.rooms
|
|
48430
|
+
.filter(function (room) {
|
|
48431
|
+
return room.options.some(function (o) {
|
|
48432
|
+
return o.isSelected;
|
|
48433
|
+
});
|
|
48434
|
+
})
|
|
48435
|
+
.map(function (room, index) {
|
|
48436
|
+
var _a, _b, _c, _d, _e;
|
|
48437
|
+
var option = room.options.find(function (o) {
|
|
48438
|
+
return o.isSelected;
|
|
48439
|
+
});
|
|
48440
|
+
var pax =
|
|
48441
|
+
(_b =
|
|
48442
|
+
(_a = seed.rooms) === null || _a === void 0
|
|
48443
|
+
? void 0
|
|
48444
|
+
: _a.flatMap(function (room, roomIndex) {
|
|
48445
|
+
return room.pax.map(function (p, paxIndex) {
|
|
48446
|
+
return {
|
|
48447
|
+
paxId: p.id,
|
|
48448
|
+
room: roomIndex,
|
|
48449
|
+
order: paxIndex
|
|
48450
|
+
};
|
|
48451
|
+
});
|
|
48452
|
+
})) !== null && _b !== void 0
|
|
48453
|
+
? _b
|
|
48454
|
+
: [];
|
|
48455
|
+
return {
|
|
48456
|
+
guid: (_c = option.guid) !== null && _c !== void 0 ? _c : crypto.randomUUID(),
|
|
48457
|
+
moment: '',
|
|
48458
|
+
parentGuid: index === 0 ? null : parentGuid,
|
|
48459
|
+
order: index,
|
|
48460
|
+
isChanged: true,
|
|
48461
|
+
from: selectedHotel.fromDate,
|
|
48462
|
+
to: selectedHotel.toDate,
|
|
48463
|
+
serviceType: ACCOMMODATION_SERVICE_TYPE,
|
|
48464
|
+
productName: selectedHotel.name,
|
|
48465
|
+
productCode: selectedHotel.code,
|
|
48466
|
+
accommodationName: option.accommodationName,
|
|
48467
|
+
accommodationCode: option.accommodationCode,
|
|
48468
|
+
regimeName: option.regimeName,
|
|
48469
|
+
regimeCode: option.regimeCode,
|
|
48470
|
+
country: selectedHotel.countryId ? { id: selectedHotel.countryId, name: selectedHotel.countryName, localizations: [] } : null,
|
|
48471
|
+
region: selectedHotel.regionId ? { id: selectedHotel.regionId, name: selectedHotel.regionName, localizations: [] } : null,
|
|
48472
|
+
oord: selectedHotel.oordId ? { id: selectedHotel.oordId, name: selectedHotel.oordName, localizations: [] } : null,
|
|
48473
|
+
location: selectedHotel.locationId ? { id: selectedHotel.locationId, name: selectedHotel.locationName, localizations: [] } : null,
|
|
48474
|
+
longitude: (_d = selectedHotel.longitude) !== null && _d !== void 0 ? _d : null,
|
|
48475
|
+
latitude: (_e = selectedHotel.latitude) !== null && _e !== void 0 ? _e : null,
|
|
48476
|
+
pax: pax,
|
|
48477
|
+
flightInformation: null
|
|
48478
|
+
};
|
|
48479
|
+
});
|
|
48480
|
+
};
|
|
48481
|
+
var toDateOnlyUtcString = function (value) {
|
|
48482
|
+
var date = new Date(value);
|
|
48483
|
+
return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate())).toISOString();
|
|
48484
|
+
};
|
|
48485
|
+
var toTimeOnlyString = function (value) {
|
|
48486
|
+
var date = new Date(value);
|
|
48487
|
+
var hh = String(date.getUTCHours()).padStart(2, '0');
|
|
48488
|
+
var mm = String(date.getUTCMinutes()).padStart(2, '0');
|
|
48489
|
+
var ss = String(date.getUTCSeconds()).padStart(2, '0');
|
|
48490
|
+
return ''.concat(hh, ':').concat(mm, ':').concat(ss);
|
|
48491
|
+
};
|
|
48492
|
+
var mapFlightSegmentsToFlightLines = function (segments) {
|
|
48493
|
+
return segments.map(function (segment) {
|
|
48494
|
+
var _a;
|
|
48495
|
+
return {
|
|
48496
|
+
airlineCode: segment.marketingAirlineCode,
|
|
48497
|
+
airlineDescription: segment.marketingAirlineName,
|
|
48498
|
+
operatingAirlineCode: segment.operatingAirlineCode,
|
|
48499
|
+
operatingAirlineDescription: segment.operatingAirlineName,
|
|
48500
|
+
flightNumber: segment.flightNumber,
|
|
48501
|
+
operatingFlightNumber: (_a = segment.operatingFlightNumber) !== null && _a !== void 0 ? _a : null,
|
|
48502
|
+
departureDate: toDateOnlyUtcString(segment.departureDateTime),
|
|
48503
|
+
departureTime: toTimeOnlyString(segment.departureDateTime),
|
|
48504
|
+
departureAirportCode: segment.departureAirportCode,
|
|
48505
|
+
departureAirportDescription: segment.departureAirportName,
|
|
48506
|
+
arrivalDate: toDateOnlyUtcString(segment.arrivalDateTime),
|
|
48507
|
+
arrivalTime: toTimeOnlyString(segment.arrivalDateTime),
|
|
48508
|
+
arrivalAirportCode: segment.arrivalAirportCode,
|
|
48509
|
+
arrivalAirportDescription: segment.arrivalAirportName,
|
|
48510
|
+
durationInTicks: segment.durationInTicks
|
|
48511
|
+
};
|
|
48512
|
+
});
|
|
48513
|
+
};
|
|
48514
|
+
var buildFlightLabel = function (segments) {
|
|
48515
|
+
var firstSegment = lodash.first(segments);
|
|
48516
|
+
var lastSegment = lodash.last(segments);
|
|
48517
|
+
if (!firstSegment || !lastSegment) {
|
|
48518
|
+
return { productName: 'Flight', productCode: 'FLIGHT' };
|
|
48519
|
+
}
|
|
48520
|
+
return {
|
|
48521
|
+
productName: ''
|
|
48522
|
+
.concat(firstSegment.departureAirportName, ' - ')
|
|
48523
|
+
.concat(lastSegment.arrivalAirportName, ' (')
|
|
48524
|
+
.concat(firstSegment.marketingAirlineName, ')'),
|
|
48525
|
+
productCode: ''.concat(firstSegment.departureAirportCode, ' ').concat(lastSegment.arrivalAirportCode, '/').concat(firstSegment.marketingAirlineCode)
|
|
48526
|
+
};
|
|
48527
|
+
};
|
|
48528
|
+
var buildFlightLinesFromSelection = function (selectedFlight) {
|
|
48529
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
48530
|
+
if (!selectedFlight) return [];
|
|
48531
|
+
var outwardSegments = (_b = (_a = selectedFlight.outward) === null || _a === void 0 ? void 0 : _a.segments) !== null && _b !== void 0 ? _b : [];
|
|
48532
|
+
var returnSegments = (_d = (_c = selectedFlight.return) === null || _c === void 0 ? void 0 : _c.segments) !== null && _d !== void 0 ? _d : [];
|
|
48533
|
+
if (!outwardSegments.length || !returnSegments.length) return [];
|
|
48534
|
+
var outwardLabel = buildFlightLabel(outwardSegments);
|
|
48535
|
+
var returnLabel = buildFlightLabel(returnSegments);
|
|
48536
|
+
var outwardFirst = lodash.first(outwardSegments);
|
|
48537
|
+
var outwardLast = lodash.last(outwardSegments);
|
|
48538
|
+
var returnFirst = lodash.first(returnSegments);
|
|
48539
|
+
var returnLast = lodash.last(returnSegments);
|
|
48540
|
+
var outwardLine = {
|
|
48541
|
+
guid: selectedFlight.outwardGuid,
|
|
48542
|
+
parentGuid: null,
|
|
48543
|
+
order: 0,
|
|
48544
|
+
isChanged: true,
|
|
48545
|
+
from: (_e = outwardFirst === null || outwardFirst === void 0 ? void 0 : outwardFirst.departureDateTime.toString()) !== null && _e !== void 0 ? _e : '',
|
|
48546
|
+
to: (_f = outwardLast === null || outwardLast === void 0 ? void 0 : outwardLast.arrivalDateTime.toString()) !== null && _f !== void 0 ? _f : '',
|
|
48547
|
+
serviceType: FLIGHT_SERVICE_TYPE,
|
|
48548
|
+
productName: outwardLabel.productName,
|
|
48549
|
+
productCode: outwardLabel.productCode,
|
|
48550
|
+
accommodationName:
|
|
48551
|
+
(_g = outwardFirst === null || outwardFirst === void 0 ? void 0 : outwardFirst.metaData) === null || _g === void 0 ? void 0 : _g.farePriceClassName,
|
|
48552
|
+
accommodationCode:
|
|
48553
|
+
(_h = outwardFirst === null || outwardFirst === void 0 ? void 0 : outwardFirst.metaData) === null || _h === void 0 ? void 0 : _h.fareCode,
|
|
48554
|
+
regimeName: null,
|
|
48555
|
+
regimeCode: null,
|
|
48556
|
+
country: null,
|
|
48557
|
+
region: null,
|
|
48558
|
+
oord: null,
|
|
48559
|
+
location: null,
|
|
48560
|
+
longitude: null,
|
|
48561
|
+
latitude: null,
|
|
48562
|
+
// pax: allPaxAssignments,
|
|
48563
|
+
flightInformation: {
|
|
48564
|
+
pnr: '',
|
|
48565
|
+
flightLines: mapFlightSegmentsToFlightLines(outwardSegments)
|
|
48566
|
+
}
|
|
48567
|
+
};
|
|
48568
|
+
var returnLine = {
|
|
48569
|
+
guid: selectedFlight.returnGuid,
|
|
48570
|
+
parentGuid: selectedFlight.outwardGuid,
|
|
48571
|
+
order: 1,
|
|
48572
|
+
isChanged: true,
|
|
48573
|
+
from: (_j = returnFirst === null || returnFirst === void 0 ? void 0 : returnFirst.departureDateTime.toString()) !== null && _j !== void 0 ? _j : '',
|
|
48574
|
+
to: (_k = returnLast === null || returnLast === void 0 ? void 0 : returnLast.departureDateTime.toString()) !== null && _k !== void 0 ? _k : '',
|
|
48575
|
+
serviceType: FLIGHT_SERVICE_TYPE,
|
|
48576
|
+
productName: returnLabel.productName,
|
|
48577
|
+
productCode: returnLabel.productCode,
|
|
48578
|
+
accommodationName:
|
|
48579
|
+
(_l = returnFirst === null || returnFirst === void 0 ? void 0 : returnFirst.metaData) === null || _l === void 0 ? void 0 : _l.farePriceClassName,
|
|
48580
|
+
accommodationCode: (_m = returnFirst === null || returnFirst === void 0 ? void 0 : returnFirst.metaData) === null || _m === void 0 ? void 0 : _m.fareCode,
|
|
48581
|
+
regimeName: null,
|
|
48582
|
+
regimeCode: null,
|
|
48583
|
+
country: null,
|
|
48584
|
+
region: null,
|
|
48585
|
+
oord: null,
|
|
48586
|
+
location: null,
|
|
48587
|
+
longitude: null,
|
|
48588
|
+
latitude: null,
|
|
48589
|
+
// pax: allPaxAssignments,
|
|
48590
|
+
flightInformation: {
|
|
48591
|
+
pnr: '',
|
|
48592
|
+
flightLines: mapFlightSegmentsToFlightLines(returnSegments)
|
|
48593
|
+
}
|
|
48594
|
+
};
|
|
48595
|
+
return [outwardLine, returnLine];
|
|
48596
|
+
};
|
|
48597
|
+
var buildOrUpdatePackagingEntryPartial = function (_a) {
|
|
48598
|
+
var _b, _c;
|
|
48599
|
+
var sourceEntry = _a.sourceEntry,
|
|
48600
|
+
selectedHotelCode = _a.selectedHotelCode,
|
|
48601
|
+
accommodationResults = _a.accommodationResults,
|
|
48602
|
+
selectedFlight = _a.selectedFlight,
|
|
48603
|
+
seed = _a.seed,
|
|
48604
|
+
transactionId = _a.transactionId,
|
|
48605
|
+
language = _a.language;
|
|
48606
|
+
if (!((_b = seed === null || seed === void 0 ? void 0 : seed.rooms) === null || _b === void 0 ? void 0 : _b.length)) return null;
|
|
48607
|
+
var entry = buildBasePackagingEntry(sourceEntry, seed, transactionId, language);
|
|
48608
|
+
var nextLines = __spreadArray([], (_c = entry.lines) !== null && _c !== void 0 ? _c : [], true);
|
|
48609
|
+
var selectedHotel = selectedHotelCode
|
|
48610
|
+
? accommodationResults.find(function (r) {
|
|
48611
|
+
return r.code === selectedHotelCode;
|
|
48612
|
+
})
|
|
48613
|
+
: null;
|
|
48614
|
+
console.log('Selected hotel for packaging entry', selectedHotel);
|
|
48615
|
+
// Update accommodation only when enough data exists
|
|
48616
|
+
if (selectedHotel) {
|
|
48617
|
+
var accommodationLines = buildAccommodationLinesFromSelection(selectedHotel, seed);
|
|
48618
|
+
if (accommodationLines.length) {
|
|
48619
|
+
nextLines = removeAccommodationLines(nextLines);
|
|
48620
|
+
nextLines = __spreadArray(__spreadArray([], nextLines, true), accommodationLines, true);
|
|
48621
|
+
}
|
|
48622
|
+
}
|
|
48623
|
+
// Update flights only when full selected combination exists
|
|
48624
|
+
if (selectedFlight) {
|
|
48625
|
+
var flightLines = buildFlightLinesFromSelection(selectedFlight);
|
|
48626
|
+
console.log('selectedFlight', selectedFlight);
|
|
48627
|
+
console.log('Built flight lines from selection', flightLines);
|
|
48628
|
+
if (flightLines.length) {
|
|
48629
|
+
nextLines = removeFlightLines(nextLines);
|
|
48630
|
+
nextLines = __spreadArray(__spreadArray([], nextLines, true), flightLines, true);
|
|
48631
|
+
}
|
|
48632
|
+
}
|
|
48633
|
+
nextLines = nextLines.map(function (line, index) {
|
|
48634
|
+
return __assign(__assign({}, line), { order: index });
|
|
48635
|
+
});
|
|
48636
|
+
return __assign(__assign({}, entry), { language: language, transactionId: transactionId, pax: entry.pax, lines: nextLines });
|
|
48637
|
+
};
|
|
48638
|
+
var buildBasePackagingEntry = function (sourceEntry, seed, transactionId, language) {
|
|
48639
|
+
var _a, _b;
|
|
48640
|
+
if (sourceEntry) {
|
|
48641
|
+
return structuredClone(sourceEntry);
|
|
48642
|
+
}
|
|
48643
|
+
var paxId = 1;
|
|
48644
|
+
var pax =
|
|
48645
|
+
(_b =
|
|
48646
|
+
(_a = seed.rooms) === null || _a === void 0
|
|
48647
|
+
? void 0
|
|
48648
|
+
: _a.flatMap(function (room, roomIndex) {
|
|
48649
|
+
return room.pax.map(function (_, paxIndex) {
|
|
48650
|
+
return {
|
|
48651
|
+
id: paxId++,
|
|
48652
|
+
firstName: '',
|
|
48653
|
+
lastName: '',
|
|
48654
|
+
dateOfBirth: null,
|
|
48655
|
+
isMainBooker: roomIndex === 0 && paxIndex === 0
|
|
48656
|
+
};
|
|
48657
|
+
});
|
|
48658
|
+
})) !== null && _b !== void 0
|
|
48659
|
+
? _b
|
|
48660
|
+
: [];
|
|
48661
|
+
return {
|
|
48662
|
+
language: language,
|
|
48663
|
+
transactionId: transactionId,
|
|
48664
|
+
dossierNumber: '',
|
|
48665
|
+
status: 0,
|
|
48666
|
+
bookingDate: null,
|
|
48667
|
+
price: 0,
|
|
48668
|
+
depositAmount: 0,
|
|
48669
|
+
pax: pax,
|
|
48670
|
+
lines: []
|
|
48671
|
+
};
|
|
48672
|
+
};
|
|
48197
48673
|
return React__default['default'].createElement(
|
|
48198
48674
|
'div',
|
|
48199
48675
|
{ id: 'tide-booking', className: 'search__bg' },
|
|
@@ -48311,13 +48787,11 @@ var SearchResultsContainer = function () {
|
|
|
48311
48787
|
'span',
|
|
48312
48788
|
{ className: 'search__result-row-text' },
|
|
48313
48789
|
!isLoading &&
|
|
48314
|
-
|
|
48790
|
+
context.searchConfiguration.qsmType !== build.PortalQsmType.AccommodationAndFlight &&
|
|
48315
48791
|
React__default['default'].createElement(
|
|
48316
48792
|
React__default['default'].Fragment,
|
|
48317
48793
|
null,
|
|
48318
|
-
|
|
48319
|
-
context.searchConfiguration.enableManualPackaging) ||
|
|
48320
|
-
context.searchConfiguration.qsmType === build.PortalQsmType.Accommodation) &&
|
|
48794
|
+
context.searchConfiguration.qsmType === build.PortalQsmType.Accommodation &&
|
|
48321
48795
|
(filteredPackagingAccoResults === null || filteredPackagingAccoResults === void 0 ? void 0 : filteredPackagingAccoResults.length) &&
|
|
48322
48796
|
(filteredPackagingAccoResults === null || filteredPackagingAccoResults === void 0 ? void 0 : filteredPackagingAccoResults.length),
|
|
48323
48797
|
context.searchConfiguration.qsmType !== build.PortalQsmType.Accommodation &&
|
|
@@ -48366,25 +48840,117 @@ var SearchResultsContainer = function () {
|
|
|
48366
48840
|
context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
|
|
48367
48841
|
!context.packagingEntry &&
|
|
48368
48842
|
context.showFlightResults &&
|
|
48369
|
-
|
|
48370
|
-
|
|
48371
|
-
|
|
48372
|
-
|
|
48373
|
-
|
|
48843
|
+
// bookingPackageDetails?.outwardFlights &&
|
|
48844
|
+
// <FlightResults flights={bookingPackageDetails?.outwardFlights} isDeparture={true} />
|
|
48845
|
+
React__default['default'].createElement(
|
|
48846
|
+
React__default['default'].Fragment,
|
|
48847
|
+
null,
|
|
48848
|
+
React__default['default'].createElement(
|
|
48849
|
+
'div',
|
|
48850
|
+
{ className: 'search__results__label search__results__label--secondary' },
|
|
48851
|
+
React__default['default'].createElement(
|
|
48852
|
+
'div',
|
|
48853
|
+
{ className: 'search__results__label__date' },
|
|
48854
|
+
React__default['default'].createElement(Icon$1, { name: 'ui-flight', height: 16, fill: 'white' })
|
|
48855
|
+
),
|
|
48856
|
+
React__default['default'].createElement(
|
|
48857
|
+
'div',
|
|
48858
|
+
{ className: 'search__results__label__text' },
|
|
48859
|
+
React__default['default'].createElement(
|
|
48860
|
+
'h3',
|
|
48861
|
+
null,
|
|
48862
|
+
translations.SRP.SELECT,
|
|
48863
|
+
' ',
|
|
48864
|
+
React__default['default'].createElement('strong', null, ' ', translations.SRP.DEPARTURE)
|
|
48865
|
+
)
|
|
48866
|
+
)
|
|
48867
|
+
),
|
|
48868
|
+
React__default['default'].createElement(
|
|
48869
|
+
'div',
|
|
48870
|
+
{ className: 'search__results__cards search__results__cards--extended' },
|
|
48871
|
+
selectedOutwardKey && selectedOutward
|
|
48872
|
+
? React__default['default'].createElement(IndependentFlightOption, {
|
|
48873
|
+
key: 'flight-'.concat(selectedOutwardKey),
|
|
48874
|
+
item: selectedOutward.outward,
|
|
48875
|
+
guid: selectedOutward.outwardGuid,
|
|
48876
|
+
onSelect: function () {
|
|
48877
|
+
return setSelectedOutwardKey(null);
|
|
48878
|
+
},
|
|
48879
|
+
selectedGuid: selectedOutward.outwardGuid,
|
|
48880
|
+
isOutward: true
|
|
48881
|
+
})
|
|
48882
|
+
: uniqueOutwardFlights.map(function (result) {
|
|
48883
|
+
return React__default['default'].createElement(IndependentFlightOption, {
|
|
48884
|
+
key: 'flight-'.concat(result.outwardGuid),
|
|
48885
|
+
item: result.outward,
|
|
48886
|
+
onSelect: function () {
|
|
48887
|
+
return setSelectedOutwardKey(getFlightKey(result.outward.segments));
|
|
48888
|
+
},
|
|
48889
|
+
guid: result.outwardGuid,
|
|
48890
|
+
isOutward: true
|
|
48891
|
+
});
|
|
48892
|
+
})
|
|
48893
|
+
)
|
|
48894
|
+
),
|
|
48374
48895
|
context.showHotelAccommodationResults &&
|
|
48375
48896
|
!context.packagingEntry &&
|
|
48376
48897
|
React__default['default'].createElement(HotelAccommodationResults, { isLoading: isLoading }),
|
|
48377
48898
|
context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
|
|
48378
48899
|
!context.packagingEntry &&
|
|
48379
48900
|
context.showFlightResults &&
|
|
48380
|
-
|
|
48381
|
-
|
|
48382
|
-
|
|
48383
|
-
|
|
48384
|
-
|
|
48901
|
+
// bookingPackageDetails?.returnFlights &&
|
|
48902
|
+
// <FlightResults flights={bookingPackageDetails?.returnFlights} isDeparture={false} />
|
|
48903
|
+
React__default['default'].createElement(
|
|
48904
|
+
React__default['default'].Fragment,
|
|
48905
|
+
null,
|
|
48906
|
+
React__default['default'].createElement(
|
|
48907
|
+
'div',
|
|
48908
|
+
{ className: 'search__results__label search__results__label--secondary' },
|
|
48909
|
+
React__default['default'].createElement(
|
|
48910
|
+
'div',
|
|
48911
|
+
{ className: 'search__results__label__date' },
|
|
48912
|
+
React__default['default'].createElement(Icon$1, { name: 'ui-flight', height: 16, fill: 'white' })
|
|
48913
|
+
),
|
|
48914
|
+
React__default['default'].createElement(
|
|
48915
|
+
'div',
|
|
48916
|
+
{ className: 'search__results__label__text' },
|
|
48917
|
+
React__default['default'].createElement(
|
|
48918
|
+
'h3',
|
|
48919
|
+
null,
|
|
48920
|
+
translations.SRP.SELECT,
|
|
48921
|
+
' ',
|
|
48922
|
+
React__default['default'].createElement('strong', null, ' ', translations.SRP.RETURN)
|
|
48923
|
+
)
|
|
48924
|
+
)
|
|
48925
|
+
),
|
|
48926
|
+
React__default['default'].createElement(
|
|
48927
|
+
'div',
|
|
48928
|
+
{ className: 'search__results__cards search__results__cards--extended' },
|
|
48929
|
+
selectedReturnKey && selectedReturn
|
|
48930
|
+
? React__default['default'].createElement(IndependentFlightOption, {
|
|
48931
|
+
key: 'flight-'.concat(selectedReturnKey),
|
|
48932
|
+
item: selectedReturn.return,
|
|
48933
|
+
guid: selectedReturn.outwardGuid,
|
|
48934
|
+
selectedGuid: selectedReturn.outwardGuid,
|
|
48935
|
+
isOutward: false
|
|
48936
|
+
})
|
|
48937
|
+
: uniqueReturnFlights.map(function (result) {
|
|
48938
|
+
return React__default['default'].createElement(IndependentFlightOption, {
|
|
48939
|
+
key: 'flight-'.concat(result.outwardGuid),
|
|
48940
|
+
item: result.return,
|
|
48941
|
+
onSelect: function () {
|
|
48942
|
+
return setSelectedReturnKey(getFlightKey(result.return.segments));
|
|
48943
|
+
},
|
|
48944
|
+
guid: result.outwardGuid,
|
|
48945
|
+
isOutward: false
|
|
48946
|
+
});
|
|
48947
|
+
})
|
|
48948
|
+
)
|
|
48949
|
+
),
|
|
48385
48950
|
context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
|
|
48386
48951
|
context.packagingEntry &&
|
|
48387
|
-
|
|
48952
|
+
itinerary &&
|
|
48953
|
+
React__default['default'].createElement(FullItinerary, { isLoading: itineraryIsLoading })
|
|
48388
48954
|
)
|
|
48389
48955
|
),
|
|
48390
48956
|
React__default['default'].createElement(FlyIn, {
|
|
@@ -55847,3 +56413,4 @@ exports.PhotoGallery = PhotoGallery;
|
|
|
55847
56413
|
exports.QSM = QSM;
|
|
55848
56414
|
exports.SearchResults = SearchResults;
|
|
55849
56415
|
exports.Slider = Slider;
|
|
56416
|
+
exports.Spinner = Spinner;
|