{"version":3,"file":"common.5a7576042f835006.js","mappings":"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","names":["Cabin","Economy","Ecopremium","Business","First","TransportType","Flight","Bus","Train","Unknown","VoucherType","EuropeUpgrade","LongHaulUpgrade","UpgradeBenefit","UpgradeProduct","EconomyToBusiness","EconomyToPremiumeconomy","PremiumeconomyToBusiness","UpgradeStatusReason","NotFinnairFlight","TooCloseToDeparture","InfantInBooking","GroupBooking","SsrInBooking","TooManyPassengers","TooFarToDeparture","TooCloseToDepartureForWaitlist","SegmentInRequestedUpgradeCabin","SegmentMissingRequestedUpgradeCabin","TicketNotIssuedByFinnair","IneligibleBookingClass","BookingInIneligibleStatus","FlownSegment","UpgradeFinalStatus","Success","Failed","HandledByCustomerCare","InProgress","PaymentInProgress","PaymentDone","Initialized","PaymentInitialized","PaymentFailed","UpgradeStatus","Available","NotAvailable","Waitlisted","reset","createAction","setOffers","props","resetOffers","setDisruptedBoundIndex","setShowAlternativeOffers","setStatus","setSelectedOffer","resetSelectedOffers","setSelectedDate","setStage","setDeeplinkSource","resetDeeplinkSource","setConfirmationResponse","setSessionExpired","setSessionStarted","setBooking","setSendRefreshOffersEvent","setAlternativeConfirmUrl","setOrderSummaryData","setOrderReset","setOrderStart","setOrderError","setReviewConfirmed","setAcknowledgeFlow","all","union","parsePhoneNumber","countryCode","nationalNumber","includes","split","pop","getPhonePrefixOptions","countryCodes$","pipe","map","countryCodes","sortBy","cc","name","phonePrefix","value","option","FilterDateRangeKey","ALL","NEXT_WEEK","NEXT_MONTH","NEXT_YEAR","PAST_WEEK","PAST_MONTH","PAST_YEAR","getFilterDateRange","key","today","Date","fromDate","toISO8601","toDate","add","TimeUnit","day","month","year","subtract","allFlightsInRange","undefined","mapFinnairCabinClassToGlobalBookingTravelClass","travelClass","FinnairCabinClass","ECONOMY","GlobalBookingTravelClass","ECOPREMIUM","BUSINESS","MIXED","i0","ctx_r0","subtitle","PlainHeaderAreaComponent","constructor","this","headingClass","static","__ngFactoryType__","_angular_core__WEBPACK_IMPORTED_MODULE_0__","VBU","selectors","inputs","title","decls","vars","consts","template","rf","ctx","PlainHeaderAreaComponent_p_3_Template","OffersService","BaseService","config","http","super","GetOffersPath","getOffers$Response","params","context","rb","RequestBuilder","rootUrl","path","recLoc","query","lastName","header","apiKey","request","build","responseType","accept","filter","r","HttpResponse","getOffers","body","GetOffersV2Path","getOffersV2$Response","getOffersV2","GetOffersAuthenticatedPath","getOffersAuthenticated$Response","bearerAuth","getOffersAuthenticated","GetOffersV2AuthenticatedPath","getOffersV2Authenticated$Response","getOffersV2Authenticated","i1","i2","_angular_core__WEBPACK_IMPORTED_MODULE_6__","jDH","factory","ɵfac","providedIn","initialState","Object","seal","status","AlternativeOffersStateStatus","INITIAL","alternativeOffers","selectedOffers","boundId","selectedDates","currentStage","Stage","selection","disruptedBoundIndex","deeplinkSource","confirmationResponse","analyticsSent","sessionExpired","sessionStartedMs","booking","sendRefreshOffersEvent","alternativeConfirmStatusUrl","orderSummary","orderSummaryData","orderStatus","OrderSummaryStatus","reviewConfirmed","acknowledgeFlow","showAlternativeOffers","reducer","createReducer","on","AlternativeOffersActions","state","show","boundIndex","a","id","date","stage","source","url","data","OK","PENDING","LOAD_ERROR","alternativeOffersReducer","action","_selectAlternativeOffersState","createFeatureSelector","ALTERNATIVE_OFFERS_STATE_FEATURE_NAME","_selectOffers","createSelector","_allOffers","_selectedOfferIds","values","Boolean","_selectStatus","_selectSelectedOfferIds","_selectDisruptedBoundIndex","_showAlternativeOffers","_selectSelectedDate","_selectLocations","dictionary","locations","_selectSelectedDateOffers","_selectedDate","offers","toString","_selectSelectedOffer","_offers","_selectedDateOffers","_selectedDisruptedBoundIndex","find","offer","_selectedOffers","offerIds","currentAllOffers","entries","reduce","offerId","flatMap","currentAllBoundOffers","currentOffer","_selectOfferToAcknowledge","_getStage","_deeplinkSource","_analyticsSent","_sessionExpired","_confirmationResponse","_sessionStarted","_reviewConfirmed","_booking","_sendRefreshOffersEvent","_alternativeConfirmUrl","_getOrderSummaryData","_getOrderSummaryStatus","_acknowledgeFlow","safeSelect","allOffers","offersHash","_selectOffersHash","hash","selectDisruptedBoundIndex","select","selectedOffer","offerToAcknowledge","getStage","sessionStarted","alternativeConfirmUrl","orderSummaryStatus","AlternativeOffersHttpError","failedToRetrieve","failedToRetrieveDatePicker","failedToRetrieveDeeplink","failedToConfirm","AlternativeOffersService","store$","selfReaccService","offerSelfReaccService","configService","sentryLogger","getAlternativeOffers","showLoading","errorString","dispatch","locale","orderId","disruptionAlternativeOffers","cfg","offersUrl","boundSearchDate","startDate","secondBoundSearchDate","catchError","err","handleError","confirmAcknowledge","disruptionConfirmAcknowledge","orderUrl","boundIndexes","take","confirmAlternatives","disruptionConfirmAlternative$Response","offerIdByBoundIndex","throwError","confirmSelectedOffers","disruptionConfirmationRequest","disruptionConfirmAlternative","error","ERROR","of","i3","_angular_core__WEBPACK_IMPORTED_MODULE_8__","takeWhile","predicate","inclusive","operate","subscriber","index","subscribe","createOperatorSubscriber","result","next","complete"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./src/modules/one-upgrade/api/models/cabin.ts","./src/modules/one-upgrade/api/models/transport-type.ts","./src/modules/one-upgrade/api/models/voucher-type.ts","./src/modules/one-upgrade/api/models/upgrade-product.ts","./src/modules/one-upgrade/api/models/upgrade-status-reason.ts","./src/modules/one-upgrade/api/models/upgrade-final-status.ts","./src/modules/one-upgrade/api/models/upgrade-status.ts","./src/modules/reaccommodation/store/actions/alternative-offers.actions.ts","./src/modules/corporate/utils/utils.ts","./src/modules/ui-components/components/headers/plain-header-area/plain-header-area.component.html","./src/modules/ui-components/components/headers/plain-header-area/plain-header-area.component.ts","./src/modules/one-upgrade/api/services/offers.service.ts","./src/modules/reaccommodation/store/reducers/alternative-offers.reducer.ts","./src/modules/reaccommodation/store/selectors/alternative-offers.selector.ts","./src/modules/reaccommodation/services/alternative-offers.service.ts","./node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/takeWhile.ts"],"sourcesContent":["/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Cabin class\n */\nexport enum Cabin {\n Economy = 'ECONOMY',\n Ecopremium = 'ECOPREMIUM',\n Business = 'BUSINESS',\n First = 'FIRST'\n}\n","/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Type of transport\n */\nexport enum TransportType {\n Flight = 'FLIGHT',\n Bus = 'BUS',\n Train = 'TRAIN',\n Unknown = 'UNKNOWN'\n}\n","/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Voucher type\n */\nexport enum VoucherType {\n EuropeUpgrade = 'EUROPE_UPGRADE',\n LongHaulUpgrade = 'LONG_HAUL_UPGRADE',\n UpgradeBenefit = 'UPGRADE_BENEFIT'\n}\n","/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Upgrade product\n */\nexport enum UpgradeProduct {\n EconomyToBusiness = 'ECONOMY-TO-BUSINESS',\n EconomyToPremiumeconomy = 'ECONOMY-TO-PREMIUMECONOMY',\n PremiumeconomyToBusiness = 'PREMIUMECONOMY-TO-BUSINESS'\n}\n","/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Reason for the upgrade status, usually explaining why the upgrade is not available\n */\nexport enum UpgradeStatusReason {\n NotFinnairFlight = 'NOT_FINNAIR_FLIGHT',\n TooCloseToDeparture = 'TOO_CLOSE_TO_DEPARTURE',\n InfantInBooking = 'INFANT_IN_BOOKING',\n GroupBooking = 'GROUP_BOOKING',\n SsrInBooking = 'SSR_IN_BOOKING',\n TooManyPassengers = 'TOO_MANY_PASSENGERS',\n TooFarToDeparture = 'TOO_FAR_TO_DEPARTURE',\n TooCloseToDepartureForWaitlist = 'TOO_CLOSE_TO_DEPARTURE_FOR_WAITLIST',\n SegmentInRequestedUpgradeCabin = 'SEGMENT_IN_REQUESTED_UPGRADE_CABIN',\n SegmentMissingRequestedUpgradeCabin = 'SEGMENT_MISSING_REQUESTED_UPGRADE_CABIN',\n TicketNotIssuedByFinnair = 'TICKET_NOT_ISSUED_BY_FINNAIR',\n IneligibleBookingClass = 'INELIGIBLE_BOOKING_CLASS',\n BookingInIneligibleStatus = 'BOOKING_IN_INELIGIBLE_STATUS',\n FlownSegment = 'FLOWN_SEGMENT'\n}\n","/* tslint:disable */\n/* eslint-disable */\nexport enum UpgradeFinalStatus {\n Success = 'SUCCESS',\n Failed = 'FAILED',\n HandledByCustomerCare = 'HANDLED_BY_CUSTOMER_CARE',\n InProgress = 'IN_PROGRESS',\n PaymentInProgress = 'PAYMENT_IN_PROGRESS',\n PaymentDone = 'PAYMENT_DONE',\n Initialized = 'INITIALIZED',\n PaymentInitialized = 'PAYMENT_INITIALIZED',\n PaymentFailed = 'PAYMENT_FAILED'\n}\n","/* tslint:disable */\n/* eslint-disable */\nexport enum UpgradeStatus {\n Available = 'AVAILABLE',\n NotAvailable = 'NOT_AVAILABLE',\n InProgress = 'IN_PROGRESS',\n Waitlisted = 'WAITLISTED',\n Success = 'SUCCESS',\n Failed = 'FAILED'\n}\n","import { createAction, props, union } from '@ngrx/store';\n\nimport { LocalDate } from '@fcom/core/utils';\nimport { DeepLinkSource } from '@fcom/common/interfaces';\nimport { FinnairAlternativeOffers, FinnairOrder, FinnairSelfReacConfirmationResponse } from '@fcom/dapi/api/models';\n\nimport { AlternativeOffersStateStatus, BookingInfo, Stage } from '../../interfaces';\n\nexport const reset = createAction('[AlternativeOffers] Reset');\n\nexport const setOffers = createAction(\n '[AlternativeOffers] Set',\n props<{ boundIndex: number; alternativeOffers: FinnairAlternativeOffers }>()\n);\nexport const resetOffers = createAction('[AlternativeOffers] ResetOffers');\n\nexport const setDisruptedBoundIndex = createAction(\n '[DisruptedBoundIndex] Set',\n props<{ disruptedBoundIndex: number }>()\n);\n\nexport const setShowAlternativeOffers = createAction(\n '[AlternativeOffers] SetShowAlternativeOffers',\n props<{ show: boolean }>()\n);\n\nexport const setStatus = createAction(\n '[AlternativeOffers] SetStatus',\n props<{ status: AlternativeOffersStateStatus }>()\n);\n\nexport const setSelectedOffer = createAction(\n '[AlternativeOffers] SetSelectedOffer',\n props<{ boundIndex: number; id: string }>()\n);\nexport const resetSelectedOffers = createAction('[AlternativeOffers] ResetSelectedOffers');\n\nexport const setSelectedDate = createAction(\n '[AlternativeOffers] SetSelectedDate',\n props<{ boundIndex: number; date: LocalDate }>()\n);\n\nexport const setStage = createAction('[AlternativeOffers] setStage', props<{ stage: Stage }>());\n\nexport const setDeeplinkSource = createAction(\n '[AlternativeOffers] setDeeplinkSource',\n props<{ source: DeepLinkSource }>()\n);\nexport const resetDeeplinkSource = createAction('[AlternativeOffers] resetDeeplinkSource');\nexport const setConfirmationResponse = createAction(\n '[AlternativeOffers] setConfirmationResponse',\n props<{ confirmationResponse: FinnairSelfReacConfirmationResponse }>()\n);\n\nexport const setSessionExpired = createAction('[AlternativeOffers] setSessionExpired');\n\nexport const setSessionStarted = createAction(\n '[AlternativeOffers] setSessionStarted',\n props<{ sessionStartedMs: number }>()\n);\n\nexport const setBooking = createAction('[AlternativeOffers] setBooking', props<{ booking: BookingInfo }>());\n\nexport const setSendRefreshOffersEvent = createAction(\n '[AlternativeOffers] setSendRefreshOffersEvent',\n props<{ sendRefreshOffersEvent: boolean }>()\n);\n\nexport const setAlternativeConfirmUrl = createAction(\n '[AlternativeOffers] setAlternativeConfirmUrl',\n props<{ url: string }>()\n);\n\nexport const setOrderSummaryData = createAction(\n '[OrderSummaryActions] SetOrderSummary',\n props<{ data: FinnairOrder }>()\n);\n\nexport const setOrderReset = createAction('[OrderSummaryActions] Reset');\n\nexport const setOrderStart = createAction('[OrderSummaryActions] LoadStart');\n\nexport const setOrderError = createAction('[OrderSummaryActions] LoadError');\n\nexport const setReviewConfirmed = createAction(\n '[AlternativeOffers] setReviewConfirmed',\n props<{ reviewConfirmed: boolean }>()\n);\n\nexport const setAcknowledgeFlow = createAction(\n '[AlternativeOffers] setAcknowledgeFlow',\n props<{ acknowledgeFlow: boolean }>()\n);\n\nconst all = union({\n reset,\n setOffers,\n resetOffers,\n setDisruptedBoundIndex,\n setStatus,\n setSelectedOffer,\n resetSelectedOffers,\n setSelectedDate,\n setStage,\n setDeeplinkSource,\n resetDeeplinkSource,\n setConfirmationResponse,\n setSessionExpired,\n setBooking,\n setSessionStarted,\n setSendRefreshOffersEvent,\n setAlternativeConfirmUrl,\n setOrderSummaryData,\n setOrderReset,\n setOrderStart,\n setOrderError,\n setReviewConfirmed,\n setAcknowledgeFlow,\n setShowAlternativeOffers,\n});\nexport type ActionsUnion = typeof all;\n","import { map, Observable } from 'rxjs';\n\nimport { TranslatedCountryCode } from '@fcom/common-booking/components/pax-details/pax-details-form-group.component';\nimport { add, sortBy, subtract, TimeUnit, toISO8601 } from '@fcom/core/utils';\nimport { SelectOption, TripFilterDateRange } from '@fcom/common';\nimport { FinnairCabinClass } from '@fcom/dapi/api/models';\nimport { GlobalBookingTravelClass } from '@fcom/core/interfaces';\n\nexport const parsePhoneNumber = (countryCode: string | undefined, nationalNumber: string | undefined): string => {\n if (!countryCode || !nationalNumber) {\n return '';\n }\n const prefix = countryCode.includes('|') ? countryCode.split('|').pop() : countryCode;\n return `+${prefix}${nationalNumber}`;\n};\n\nexport const getPhonePrefixOptions = (\n countryCodes$: Observable\n): Observable => {\n return countryCodes$.pipe(\n map((countryCodes: TranslatedCountryCode[]) => {\n return sortBy(\n countryCodes.map((cc) => ({\n name: `${cc.name} (+${cc.phonePrefix})`,\n value: `${cc.countryCode}|${cc.phonePrefix}`,\n })),\n (option) => option.name\n );\n })\n );\n};\n\nexport enum FilterDateRangeKey {\n ALL = 'all',\n NEXT_WEEK = 'next-week',\n NEXT_MONTH = 'next-month',\n NEXT_YEAR = 'next-year',\n PAST_WEEK = 'past-week',\n PAST_MONTH = 'past-month',\n PAST_YEAR = 'past-year',\n}\n\nexport const getFilterDateRange = (key: FilterDateRangeKey): TripFilterDateRange => {\n const today = new Date();\n switch (key) {\n case FilterDateRangeKey.NEXT_WEEK:\n return {\n fromDate: toISO8601(today),\n toDate: toISO8601(add(today, 7, TimeUnit.day)),\n };\n case FilterDateRangeKey.NEXT_MONTH:\n return {\n fromDate: toISO8601(today),\n toDate: toISO8601(add(today, 1, TimeUnit.month)),\n };\n case FilterDateRangeKey.NEXT_YEAR:\n return {\n fromDate: toISO8601(today),\n toDate: toISO8601(add(today, 1, TimeUnit.year)),\n };\n case FilterDateRangeKey.PAST_YEAR:\n return {\n fromDate: toISO8601(subtract(today, 1, TimeUnit.year)),\n toDate: toISO8601(subtract(today, 1, TimeUnit.day)),\n allFlightsInRange: true,\n };\n case FilterDateRangeKey.PAST_MONTH:\n return {\n fromDate: toISO8601(subtract(today, 1, TimeUnit.month)),\n toDate: toISO8601(subtract(today, 1, TimeUnit.day)),\n allFlightsInRange: true,\n };\n case FilterDateRangeKey.PAST_WEEK:\n return {\n fromDate: toISO8601(subtract(today, 7, TimeUnit.day)),\n toDate: toISO8601(subtract(today, 1, TimeUnit.day)),\n allFlightsInRange: true,\n };\n case FilterDateRangeKey.ALL:\n default:\n return {\n fromDate: toISO8601(today),\n toDate: undefined,\n };\n }\n};\n\nexport const mapFinnairCabinClassToGlobalBookingTravelClass = (\n travelClass: FinnairCabinClass\n): GlobalBookingTravelClass => {\n switch (travelClass) {\n case FinnairCabinClass.ECONOMY:\n return GlobalBookingTravelClass.ECONOMY;\n case FinnairCabinClass.ECOPREMIUM:\n return GlobalBookingTravelClass.ECOPREMIUM;\n case FinnairCabinClass.BUSINESS:\n return GlobalBookingTravelClass.BUSINESS;\n default:\n return GlobalBookingTravelClass.MIXED;\n }\n};\n","
\n

{{ title }}

\n

{{ subtitle }}

\n
\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'fcom-plain-header-area',\n templateUrl: './plain-header-area.component.html',\n})\nexport class PlainHeaderAreaComponent {\n @Input()\n title: string;\n @Input()\n subtitle: string;\n @Input()\n headingClass = 'nordic-blue-900-text';\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\nimport { GetOffersResponse } from '../models/get-offers-response';\nimport { GetOffersV2Response } from '../models/get-offers-v-2-response';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class OffersService extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation getOffers\n */\n static readonly GetOffersPath = '/offers/{recLoc}';\n\n /**\n * Returns a list of upgrade offers for a booking for non-logged-in customer.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `getOffers()` instead.\n *\n * This method doesn't expect any request body.\n */\n getOffers$Response(params: {\n\n /**\n * Booking record locator\n */\n recLoc: string;\n\n /**\n * One last name as it is in the booking specified by the record locator\n */\n lastName: string;\n\n /**\n * Unique tracking code to gather all information from logs regarding this request\n */\n 'X-Correlation-ID'?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, OffersService.GetOffersPath, 'get');\n if (params) {\n rb.path('recLoc', params.recLoc, {});\n rb.query('lastName', params.lastName, {});\n rb.header('X-Correlation-ID', params['X-Correlation-ID'], {});\n\n }\n if(this.config.apiKey){\n rb.header('x-api-key', this.config.apiKey);\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Returns a list of upgrade offers for a booking for non-logged-in customer.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `getOffers$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n getOffers(params: {\n\n /**\n * Booking record locator\n */\n recLoc: string;\n\n /**\n * One last name as it is in the booking specified by the record locator\n */\n lastName: string;\n\n /**\n * Unique tracking code to gather all information from logs regarding this request\n */\n 'X-Correlation-ID'?: string;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.getOffers$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as GetOffersResponse)\n );\n }\n\n /**\n * Path part for operation getOffersV2\n */\n static readonly GetOffersV2Path = '/v2/offers/{recLoc}';\n\n /**\n * Returns a list of Premium Economy and Business upgrade offers for a booking for non-logged-in customer.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `getOffersV2()` instead.\n *\n * This method doesn't expect any request body.\n */\n getOffersV2$Response(params: {\n\n /**\n * Booking record locator\n */\n recLoc: string;\n\n /**\n * One last name as it is in the booking specified by the record locator\n */\n lastName: string;\n\n /**\n * Unique tracking code to gather all information from logs regarding this request\n */\n 'X-Correlation-ID'?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, OffersService.GetOffersV2Path, 'get');\n if (params) {\n rb.path('recLoc', params.recLoc, {});\n rb.query('lastName', params.lastName, {});\n rb.header('X-Correlation-ID', params['X-Correlation-ID'], {});\n\n }\n if(this.config.apiKey){\n rb.header('x-api-key', this.config.apiKey);\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Returns a list of Premium Economy and Business upgrade offers for a booking for non-logged-in customer.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `getOffersV2$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n getOffersV2(params: {\n\n /**\n * Booking record locator\n */\n recLoc: string;\n\n /**\n * One last name as it is in the booking specified by the record locator\n */\n lastName: string;\n\n /**\n * Unique tracking code to gather all information from logs regarding this request\n */\n 'X-Correlation-ID'?: string;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.getOffersV2$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as GetOffersV2Response)\n );\n }\n\n /**\n * Path part for operation getOffersAuthenticated\n */\n static readonly GetOffersAuthenticatedPath = '/members/offers/{recLoc}';\n\n /**\n * Returns a list of upgrade offers for a booking for logged-in customer.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `getOffersAuthenticated()` instead.\n *\n * This method doesn't expect any request body.\n */\n getOffersAuthenticated$Response(params: {\n\n /**\n * Booking record locator\n */\n recLoc: string;\n\n /**\n * One last name as it is in the booking specified by the record locator\n */\n lastName: string;\n\n /**\n * Unique tracking code to gather all information from logs regarding this request\n */\n 'X-Correlation-ID'?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, OffersService.GetOffersAuthenticatedPath, 'get');\n if (params) {\n rb.path('recLoc', params.recLoc, {});\n rb.query('lastName', params.lastName, {});\n rb.header('X-Correlation-ID', params['X-Correlation-ID'], {});\n\n }\n if(this.config.apiKey){\n rb.header('x-api-key', this.config.apiKey);\n }\n if(this.config.bearerAuth){\n rb.header('Authorization', this.config.bearerAuth);\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Returns a list of upgrade offers for a booking for logged-in customer.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `getOffersAuthenticated$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n getOffersAuthenticated(params: {\n\n /**\n * Booking record locator\n */\n recLoc: string;\n\n /**\n * One last name as it is in the booking specified by the record locator\n */\n lastName: string;\n\n /**\n * Unique tracking code to gather all information from logs regarding this request\n */\n 'X-Correlation-ID'?: string;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.getOffersAuthenticated$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as GetOffersResponse)\n );\n }\n\n /**\n * Path part for operation getOffersV2Authenticated\n */\n static readonly GetOffersV2AuthenticatedPath = '/v2/members/offers/{recLoc}';\n\n /**\n * Returns a list of Premium Economy and Business upgrade offers for a booking for logged-in customer.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `getOffersV2Authenticated()` instead.\n *\n * This method doesn't expect any request body.\n */\n getOffersV2Authenticated$Response(params: {\n\n /**\n * Booking record locator\n */\n recLoc: string;\n\n /**\n * One last name as it is in the booking specified by the record locator\n */\n lastName: string;\n\n /**\n * Unique tracking code to gather all information from logs regarding this request\n */\n 'X-Correlation-ID'?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, OffersService.GetOffersV2AuthenticatedPath, 'get');\n if (params) {\n rb.path('recLoc', params.recLoc, {});\n rb.query('lastName', params.lastName, {});\n rb.header('X-Correlation-ID', params['X-Correlation-ID'], {});\n\n }\n if(this.config.apiKey){\n rb.header('x-api-key', this.config.apiKey);\n }\n if(this.config.bearerAuth){\n rb.header('Authorization', this.config.bearerAuth);\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Returns a list of Premium Economy and Business upgrade offers for a booking for logged-in customer.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `getOffersV2Authenticated$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n getOffersV2Authenticated(params: {\n\n /**\n * Booking record locator\n */\n recLoc: string;\n\n /**\n * One last name as it is in the booking specified by the record locator\n */\n lastName: string;\n\n /**\n * Unique tracking code to gather all information from logs regarding this request\n */\n 'X-Correlation-ID'?: string;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.getOffersV2Authenticated$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as GetOffersV2Response)\n );\n }\n\n}\n","import { createReducer, on } from '@ngrx/store';\n\nimport { AlternativeOffersState, AlternativeOffersStateStatus, OrderSummaryStatus, Stage } from '../../interfaces';\nimport { AlternativeOffersActions } from '../actions';\n\nexport const initialState: AlternativeOffersState = Object.seal({\n status: AlternativeOffersStateStatus.INITIAL,\n alternativeOffers: undefined,\n selectedOffers: undefined,\n boundId: undefined,\n selectedDates: undefined,\n currentStage: Stage.selection,\n disruptedBoundIndex: -1,\n deeplinkSource: undefined,\n confirmationResponse: undefined,\n analyticsSent: false,\n sessionExpired: false,\n sessionStartedMs: undefined,\n booking: undefined,\n sendRefreshOffersEvent: false,\n alternativeConfirmStatusUrl: undefined,\n orderSummary: {\n orderSummaryData: null,\n orderStatus: OrderSummaryStatus.INITIAL,\n },\n reviewConfirmed: false,\n acknowledgeFlow: false,\n showAlternativeOffers: false,\n});\n\nconst reducer = createReducer(\n initialState,\n on(AlternativeOffersActions.reset, (state) => {\n // sendRefreshOffersEvent needs to persist for tracking purposes trough deeplink and not be reseted\n return {\n ...initialState,\n sendRefreshOffersEvent: state.sendRefreshOffersEvent,\n };\n }),\n on(AlternativeOffersActions.setStatus, (state, { status }) => {\n return {\n ...state,\n status,\n };\n }),\n on(AlternativeOffersActions.setShowAlternativeOffers, (state, { show }) => {\n return {\n ...state,\n showAlternativeOffers: show,\n };\n }),\n on(AlternativeOffersActions.setOffers, (state, { boundIndex, alternativeOffers }) => {\n return {\n ...state,\n alternativeOffers: {\n ...state.alternativeOffers,\n [boundIndex]: alternativeOffers,\n },\n };\n }),\n on(AlternativeOffersActions.resetOffers, (state) => {\n return {\n ...state,\n alternativeOffers: undefined,\n };\n }),\n on(AlternativeOffersActions.setDisruptedBoundIndex, (state, { disruptedBoundIndex }) => {\n return {\n ...state,\n disruptedBoundIndex,\n };\n }),\n on(AlternativeOffersActions.setSelectedOffer, (state, { boundIndex, id }) => {\n return {\n ...state,\n selectedOffers: {\n ...state.selectedOffers,\n [boundIndex]: id,\n },\n };\n }),\n on(AlternativeOffersActions.resetSelectedOffers, (state) => {\n return {\n ...state,\n selectedOffers: {},\n };\n }),\n on(AlternativeOffersActions.setSelectedDate, (state, { boundIndex, date }) => {\n return {\n ...state,\n selectedDates: {\n ...state.selectedDates,\n [boundIndex]: date,\n },\n };\n }),\n on(AlternativeOffersActions.setStage, (state, { stage }) => {\n return {\n ...state,\n currentStage: stage,\n };\n }),\n on(AlternativeOffersActions.setDeeplinkSource, (state, { source }) => {\n return {\n ...state,\n deeplinkSource: source,\n };\n }),\n on(AlternativeOffersActions.resetDeeplinkSource, (state) => {\n return {\n ...state,\n deeplinkSource: undefined,\n };\n }),\n on(AlternativeOffersActions.setConfirmationResponse, (state, { confirmationResponse }) => {\n return {\n ...state,\n confirmationResponse,\n };\n }),\n on(AlternativeOffersActions.setSessionExpired, (state) => {\n return {\n ...state,\n sessionExpired: true,\n };\n }),\n on(AlternativeOffersActions.setSessionStarted, (state, { sessionStartedMs }) => {\n return {\n ...state,\n sessionStartedMs,\n };\n }),\n on(AlternativeOffersActions.setBooking, (state, { booking }) => {\n return {\n ...state,\n booking,\n };\n }),\n on(AlternativeOffersActions.setSendRefreshOffersEvent, (state, { sendRefreshOffersEvent }) => {\n return {\n ...state,\n sendRefreshOffersEvent,\n };\n }),\n on(AlternativeOffersActions.setAlternativeConfirmUrl, (state, { url }) => {\n return {\n ...state,\n alternativeConfirmStatusUrl: url,\n };\n }),\n on(AlternativeOffersActions.setAcknowledgeFlow, (state, { acknowledgeFlow }) => {\n return {\n ...state,\n acknowledgeFlow,\n };\n }),\n on(AlternativeOffersActions.setOrderSummaryData, (state, { data }) => {\n return {\n ...state,\n orderSummary: {\n ...state.orderSummary,\n orderStatus: OrderSummaryStatus.OK,\n orderSummaryData: data,\n },\n };\n }),\n on(AlternativeOffersActions.setOrderReset, (state) => {\n return {\n ...state,\n orderSummary: {\n ...initialState.orderSummary,\n },\n };\n }),\n on(AlternativeOffersActions.setOrderStart, (state) => {\n return {\n ...state,\n orderSummary: {\n ...state.orderSummary,\n orderStatus: OrderSummaryStatus.PENDING,\n },\n };\n }),\n on(AlternativeOffersActions.setOrderError, (state) => {\n return {\n ...state,\n orderSummary: {\n ...state.orderSummary,\n orderStatus: OrderSummaryStatus.LOAD_ERROR,\n },\n };\n }),\n on(AlternativeOffersActions.setReviewConfirmed, (state, { reviewConfirmed }) => {\n return {\n ...state,\n reviewConfirmed,\n };\n })\n);\n\nexport function alternativeOffersReducer(\n state = initialState,\n action: AlternativeOffersActions.ActionsUnion\n): AlternativeOffersState {\n return reducer(state, action);\n}\n","/* eslint-disable no-underscore-dangle */\nimport { createFeatureSelector, createSelector, select } from '@ngrx/store';\n\nimport { safeSelect, StateSelector } from '@fcom/core/selectors/selector-utils';\nimport { LocalDate } from '@fcom/core/utils';\nimport { DeepLinkSource } from '@fcom/common/interfaces';\nimport {\n FinnairAlternativeOffer,\n FinnairAlternativeOffers,\n FinnairOrder,\n FinnairSelfReacConfirmationResponse,\n} from '@fcom/dapi/api/models';\n\nimport {\n ALTERNATIVE_OFFERS_STATE_FEATURE_NAME,\n AlternativeOffersState,\n AlternativeOffersStateStatus,\n BookingInfo,\n OrderSummaryStatus,\n ReaccommodationFeatureState,\n Stage,\n} from '../../interfaces';\n\nconst _selectAlternativeOffersState = createFeatureSelector(\n ALTERNATIVE_OFFERS_STATE_FEATURE_NAME\n);\n\nexport const _selectOffers = createSelector(\n _selectAlternativeOffersState,\n (state: AlternativeOffersState) => state.alternativeOffers?.[state.disruptedBoundIndex]\n);\n\nconst _allOffers = createSelector(\n _selectAlternativeOffersState,\n (state: AlternativeOffersState) => state.alternativeOffers\n);\n\nexport const _selectedOfferIds = createSelector(_selectAlternativeOffersState, (state: AlternativeOffersState) =>\n Object.values(state.selectedOffers ?? {}).filter(Boolean)\n);\n\nconst _selectOffersHash = () =>\n createSelector(_selectAlternativeOffersState, (state: AlternativeOffersState) =>\n state.alternativeOffers?.[state.disruptedBoundIndex]\n ? state.alternativeOffers?.[state.disruptedBoundIndex].hash\n : ''\n );\n\nconst _selectStatus = createSelector(_selectAlternativeOffersState, (state: AlternativeOffersState) => state.status);\n\nconst _selectSelectedOfferIds = createSelector(\n _selectAlternativeOffersState,\n (state: AlternativeOffersState) => state.selectedOffers\n);\n\nconst _selectDisruptedBoundIndex = createSelector(\n _selectAlternativeOffersState,\n (state: AlternativeOffersState) => state.disruptedBoundIndex\n);\n\nconst _showAlternativeOffers = createSelector(\n _selectAlternativeOffersState,\n (state: AlternativeOffersState) => state.showAlternativeOffers\n);\n\nexport const _selectSelectedDate = createSelector(\n _selectAlternativeOffersState,\n (state: AlternativeOffersState) => state.selectedDates\n);\n\nconst _selectLocations = createSelector(\n _selectAlternativeOffersState,\n (state: AlternativeOffersState) => state.alternativeOffers?.[state.disruptedBoundIndex]?.dictionary?.locations ?? {}\n);\n\nconst _selectSelectedDateOffers = createSelector(\n _selectAlternativeOffersState,\n _selectSelectedDate,\n (state: AlternativeOffersState, _selectedDate: Record): FinnairAlternativeOffer[] => {\n const date = _selectedDate?.[state.disruptedBoundIndex];\n if (state.alternativeOffers && date) {\n try {\n return state.alternativeOffers[state.disruptedBoundIndex]?.offers[date.toString()];\n } catch (_error) {\n return [];\n }\n }\n return [];\n }\n);\n\nexport const _selectSelectedOffer = createSelector(\n _selectSelectedOfferIds,\n _selectSelectedDateOffers,\n _selectDisruptedBoundIndex,\n (\n _offers: Record,\n _selectedDateOffers: FinnairAlternativeOffer[] = [],\n _selectedDisruptedBoundIndex\n ) => {\n return _selectedDateOffers.find((offer) => offer.id === _offers?.[_selectedDisruptedBoundIndex]);\n }\n);\n\nexport const _selectedOffers = createSelector(\n _selectSelectedOfferIds,\n _allOffers,\n (offerIds: Record, currentAllOffers: Record) => {\n return Object.entries(offerIds ?? {}).reduce((all, [boundIndex, offerId]) => {\n const allBoundOffers = Object.values(currentAllOffers[boundIndex]?.offers ?? {}).flatMap(\n (currentAllBoundOffers) => currentAllBoundOffers\n );\n const offer = allBoundOffers.find((currentOffer) => currentOffer.id === offerId);\n if (offer) {\n all[boundIndex] = offer;\n }\n return all;\n }, {});\n }\n);\n\nconst _selectOfferToAcknowledge = createSelector(\n _selectSelectedDateOffers,\n (_selectedDateOffers: FinnairAlternativeOffer[]) => {\n return _selectedDateOffers.find((offer) => offer.id === null);\n }\n);\n\nconst _getStage = createSelector(_selectAlternativeOffersState, (state: AlternativeOffersState) => state.currentStage);\n\nconst _deeplinkSource = createSelector(\n _selectAlternativeOffersState,\n (state: AlternativeOffersState) => state.deeplinkSource\n);\n\nconst _analyticsSent = createSelector(\n _selectAlternativeOffersState,\n (state: AlternativeOffersState) => state.analyticsSent\n);\n\nconst _confirmationResponse = createSelector(\n _selectAlternativeOffersState,\n (state: AlternativeOffersState) => state.confirmationResponse\n);\n\nconst _sessionExpired = createSelector(\n _selectAlternativeOffersState,\n (state: AlternativeOffersState) => state.sessionExpired\n);\n\nconst _sessionStarted = createSelector(\n _selectAlternativeOffersState,\n (state: AlternativeOffersState) => state.sessionStartedMs\n);\n\nconst _reviewConfirmed = createSelector(\n _selectAlternativeOffersState,\n (state: AlternativeOffersState) => state.reviewConfirmed\n);\n\nconst _booking = createSelector(_selectAlternativeOffersState, (state: AlternativeOffersState) => state.booking);\n\nconst _sendRefreshOffersEvent = createSelector(\n _selectAlternativeOffersState,\n (state: AlternativeOffersState) => state.sendRefreshOffersEvent\n);\n\nconst _alternativeConfirmUrl = createSelector(\n _selectAlternativeOffersState,\n (state: AlternativeOffersState) => state.alternativeConfirmStatusUrl\n);\n\nexport const _getOrderSummaryData = createSelector(\n _selectAlternativeOffersState,\n (state: AlternativeOffersState) => state.orderSummary.orderSummaryData\n);\n\nconst _getOrderSummaryStatus = createSelector(\n _selectAlternativeOffersState,\n (state: AlternativeOffersState) => state.orderSummary.orderStatus\n);\n\nexport const _acknowledgeFlow = createSelector(\n _selectAlternativeOffersState,\n (state: AlternativeOffersState) => state.acknowledgeFlow\n);\n\nexport const reaccommodationState = (): StateSelector =>\n select(_selectAlternativeOffersState);\nexport const offers = (): StateSelector =>\n safeSelect(_selectOffers);\nexport const allOffers = (): StateSelector> =>\n safeSelect(_allOffers);\nexport const offersHash = (): StateSelector => safeSelect(_selectOffersHash());\nexport const status = (): StateSelector =>\n safeSelect(_selectStatus);\nexport const selectDisruptedBoundIndex = (): StateSelector =>\n safeSelect(_selectDisruptedBoundIndex);\nexport const showAlternativeOffers = (): StateSelector =>\n select(_showAlternativeOffers);\nexport const selectedDates = (): StateSelector> =>\n safeSelect(_selectSelectedDate);\nexport const selectedOffer = (): StateSelector =>\n select(_selectSelectedOffer);\nexport const selectedOffers = (): StateSelector> =>\n select(_selectedOffers);\nexport const offerToAcknowledge = (): StateSelector =>\n select(_selectOfferToAcknowledge);\nexport const getStage = (): StateSelector => select(_getStage);\nexport const locations = (): StateSelector =>\n select(_selectLocations);\nexport const deeplinkSource = (): StateSelector => select(_deeplinkSource);\nexport const confirmationResponse = (): StateSelector<\n ReaccommodationFeatureState,\n FinnairSelfReacConfirmationResponse\n> => select(_confirmationResponse);\nexport const analyticsSent = (): StateSelector => select(_analyticsSent);\nexport const sessionExpired = (): StateSelector => select(_sessionExpired);\nexport const sessionStarted = (): StateSelector => select(_sessionStarted);\nexport const booking = (): StateSelector => select(_booking);\nexport const alternativeConfirmUrl = (): StateSelector =>\n select(_alternativeConfirmUrl);\nexport const sendRefreshOffersEvent = (): StateSelector =>\n select(_sendRefreshOffersEvent);\nexport const orderSummaryData = (): StateSelector =>\n select(_getOrderSummaryData);\nexport const orderSummaryStatus = (): StateSelector =>\n select(_getOrderSummaryStatus);\nexport const reviewConfirmed = (): StateSelector => select(_reviewConfirmed);\nexport const acknowledgeFlow = (): StateSelector => select(_acknowledgeFlow);\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { Store } from '@ngrx/store';\nimport { Observable, of, throwError } from 'rxjs';\nimport { catchError, take } from 'rxjs/operators';\n\nimport { ConfigService, SentryLogger } from '@fcom/core';\nimport { DapiHttpResponse } from '@fcom/dapi/api/dapi-http-response';\nimport {\n FinnairAlternativeOffer,\n FinnairAlternativeOffers,\n FinnairSelfReacConfirmationRequest,\n FinnairSelfReacConfirmationResponse,\n} from '@fcom/dapi/api/models';\nimport { OffersSelfReaccService, SelfReaccService } from '@fcom/dapi/api/services';\n\nimport { AlternativeOffersStateStatus, ReaccommodationFeatureState } from '../interfaces';\nimport { AlternativeOffersActions } from '../store';\n\nexport enum AlternativeOffersHttpError {\n failedToRetrieve = 'Failed to retrieve alternative offers, reverting to error page',\n failedToRetrieveDatePicker = 'Failed to retrieve alternative offers from datepicker',\n failedToRetrieveDeeplink = 'Failed to retrieve alternative offers from deeplink',\n failedToConfirm = 'Failed to confirm alternative offers or to acknowledge',\n}\n\n@Injectable()\nexport class AlternativeOffersService {\n constructor(\n private store$: Store,\n private selfReaccService: SelfReaccService,\n private offerSelfReaccService: OffersSelfReaccService,\n private configService: ConfigService,\n private sentryLogger: SentryLogger\n ) {}\n\n getAlternativeOffers(\n params: {\n orderId: string;\n boundIndex: number;\n hash: string;\n locale: string;\n startDate: string;\n },\n showLoading = true,\n errorString = AlternativeOffersHttpError.failedToRetrieve\n ): Observable<{ [key: string]: FinnairAlternativeOffers } | HttpErrorResponse> {\n if (showLoading) {\n this.store$.dispatch(AlternativeOffersActions.setStatus({ status: AlternativeOffersStateStatus.PENDING }));\n }\n\n const { hash, locale, orderId, boundIndex } = params;\n\n return this.offerSelfReaccService\n .disruptionAlternativeOffers(this.configService.cfg.offersUrl, {\n hash,\n locale,\n orderId,\n boundSearchDate: boundIndex === 0 ? params.startDate : undefined,\n secondBoundSearchDate: boundIndex === 1 ? params.startDate : undefined,\n })\n .pipe(\n // eslint-disable-next-line rxjs/no-implicit-any-catch\n catchError((err: HttpErrorResponse) => this.handleError(err, errorString))\n );\n }\n\n confirmAcknowledge(params: {\n boundIndexes: number[];\n orderId: string;\n hash: string;\n locale: string;\n }): Observable {\n return this.selfReaccService\n .disruptionConfirmAcknowledge(this.configService.cfg.orderUrl, {\n ...params,\n body: {\n boundIndexes: params.boundIndexes,\n },\n })\n .pipe(\n take(1),\n // eslint-disable-next-line rxjs/no-implicit-any-catch\n catchError((err: HttpErrorResponse) => this.handleError(err, AlternativeOffersHttpError.failedToConfirm))\n );\n }\n\n confirmAlternatives(params: {\n offerIdByBoundIndex: Record;\n orderId: string;\n hash: string;\n locale: string;\n }): Observable> {\n return this.selfReaccService\n .disruptionConfirmAlternative$Response(this.configService.cfg.orderUrl, {\n ...params,\n body: {\n offerIdByBoundIndex: params.offerIdByBoundIndex,\n },\n })\n .pipe(\n take(1),\n // eslint-disable-next-line rxjs/no-implicit-any-catch\n catchError((err: HttpErrorResponse) => throwError(() => err))\n );\n }\n\n confirmSelectedOffers(params: {\n disruptedBoundIndex: number;\n offer: FinnairAlternativeOffer;\n orderId: string;\n hash: string;\n locale: string;\n }): Observable {\n const disruptionConfirmationRequest: FinnairSelfReacConfirmationRequest = {\n data: {\n boundIndex: params.disruptedBoundIndex,\n offerId: params.offer.id,\n },\n };\n const { hash, orderId, locale } = params;\n return this.selfReaccService\n .disruptionConfirmAlternative(this.configService.cfg.orderUrl, {\n hash,\n orderId,\n locale,\n body: disruptionConfirmationRequest,\n })\n .pipe(\n take(1),\n // eslint-disable-next-line rxjs/no-implicit-any-catch\n catchError((err: HttpErrorResponse) => this.handleError(err, AlternativeOffersHttpError.failedToConfirm))\n );\n }\n\n private handleError(error: HttpErrorResponse, errorString: AlternativeOffersHttpError) {\n this.sentryLogger.error(errorString, { error });\n this.store$.dispatch(AlternativeOffersActions.setStatus({ status: AlternativeOffersStateStatus.ERROR }));\n return of(error);\n }\n}\n","import { OperatorFunction, MonoTypeOperatorFunction, TruthyTypesOf } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\nexport function takeWhile(predicate: BooleanConstructor, inclusive: true): MonoTypeOperatorFunction;\nexport function takeWhile(predicate: BooleanConstructor, inclusive: false): OperatorFunction>;\nexport function takeWhile(predicate: BooleanConstructor): OperatorFunction>;\nexport function takeWhile(predicate: (value: T, index: number) => value is S): OperatorFunction;\nexport function takeWhile(predicate: (value: T, index: number) => value is S, inclusive: false): OperatorFunction;\nexport function takeWhile(predicate: (value: T, index: number) => boolean, inclusive?: boolean): MonoTypeOperatorFunction;\n\n/**\n * Emits values emitted by the source Observable so long as each value satisfies\n * the given `predicate`, and then completes as soon as this `predicate` is not\n * satisfied.\n *\n * Takes values from the source only while they pass the\n * condition given. When the first value does not satisfy, it completes.\n *\n * ![](takeWhile.png)\n *\n * `takeWhile` subscribes and begins mirroring the source Observable. Each value\n * emitted on the source is given to the `predicate` function which returns a\n * boolean, representing a condition to be satisfied by the source values. The\n * output Observable emits the source values until such time as the `predicate`\n * returns false, at which point `takeWhile` stops mirroring the source\n * Observable and completes the output Observable.\n *\n * ## Example\n *\n * Emit click events only while the clientX property is greater than 200\n *\n * ```ts\n * import { fromEvent, takeWhile } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(takeWhile(ev => ev.clientX > 200));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link take}\n * @see {@link takeLast}\n * @see {@link takeUntil}\n * @see {@link skip}\n *\n * @param predicate A function that evaluates a value emitted by the source\n * Observable and returns a boolean. Also takes the (zero-based) index as the\n * second argument.\n * @param inclusive When set to `true` the value that caused `predicate` to\n * return `false` will also be emitted.\n * @return A function that returns an Observable that emits values from the\n * source Observable so long as each value satisfies the condition defined by\n * the `predicate`, then completes.\n */\nexport function takeWhile(predicate: (value: T, index: number) => boolean, inclusive = false): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n let index = 0;\n source.subscribe(\n createOperatorSubscriber(subscriber, (value) => {\n const result = predicate(value, index++);\n (result || inclusive) && subscriber.next(value);\n !result && subscriber.complete();\n })\n );\n });\n}\n"],"x_google_ignoreList":[15]}