{"version":3,"file":"default-src_modules_pnr-widget_components_pnr-widget_pnr-widget_component_ts-src_modules_pnr--d9d553.9a5a4e10da22b850.js","mappings":"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","names":["TourOperator","APOLLO","TJAREBORG","ALPPIMATKAT","TOIVIOMATKAT","MIXXTRAVEL","DynamicComponentFactory","constructor","appRef","factory","injector","this","embeddedComponents","createDynamicComponents","hostElement","componentRefs","Array","prototype","slice","call","querySelectorAll","selector","map","element","createComponentRef","push","forEach","componentRef","attachView","hostView","el","projectableNodes","childNodes","create","setComponentAttrs","instance","comp","anyComp","key","Object","hasOwnProperty","hasAttribute","getAttribute","destroy","detachView","DynamicHtmlComponent","elementRef","resolver","factories","innerHtml","components","IconComponent","nativeElement","ngAfterViewInit","innerHTML","transformListContent","SvgLibraryIcon","CHECKMARK","initFactories","createAllComponents","ngOnDestroy","removeAllComponents","component","resolveComponentFactory","dynamicComponentFactory","static","__ngFactoryType__","i0","core","VBU","selectors","inputs","decls","vars","template","rf","ctx","encapsulation","ctx_r1","personalizedDisruptions$","backgroundImage","PnrWidgetComponent_ng_template_9_ng_container_0_Template","tabsContentWithUpcomingTrips_r3","PnrWidgetComponent_ng_template_11_ng_container_1_Template","loader_r4","LoaderTheme","INLINE_TEXT","PnrWidgetComponent_ng_template_15_div_0_ng_container_1_Template","_r5","cancelRetrieve","emit","ButtonTheme","LIGHT_TERTIARY_GHOST","PnrWidgetComponent_ng_template_15_div_0_Template","loading","PnrWidgetComponent_ng_template_17_ng_container_1_Template","PnrWidgetComponent_ng_template_17_ng_container_2_Template","PnrWidgetComponent_ng_template_17_ng_container_3_Template","mmbTitle_r9","formLoaderContent_r6","pnrWidgetTabs_r7","cmsArticleContent_r8","$event","_r10","setActiveTab","PnrWidgetComponent_ng_template_19_ng_container_6_Template","TabTheme","DEFAULT","activeTab$","MmbWidgetTab","FIND_WITH_BOOKING_REFERENCE","findWithBookingReference_r12","UPCOMING_TRIPS","disableUpcomingTripsTab","upcomingTripsTab_r11","upcomingTrips_r13","loginCard_r14","noUpcomingTripsNotification_r15","PnrWidgetComponent_ng_template_21_ng_container_0_ng_container_1_Template","PnrWidgetComponent_ng_template_21_ng_container_0_ng_container_3_Template","PnrWidgetComponent_ng_template_21_ng_container_0_ng_container_5_Template","showMyTripsToLoggedUser$","showNoTripsNotification","PnrWidgetComponent_ng_template_21_ng_container_0_Template","isLoginStatusVerificationLoaderOn$","loginVerifyLoader_r16","_r17","viewBookingDetails","onNoTripsNotification","onErrorFetchingTripsNotification","checkForUpgradesTripLink","PnrWidgetComponent_ng_template_27_ng_container_0_Template","findWithBookingReferenceContent_r18","_c2","cmsArticle_r19","picture","teaserTitle","PnrWidgetComponent_ng_template_29_ng_container_0_div_1_div_2_Template","PnrWidgetComponent_ng_template_29_ng_container_0_div_1_h2_4_Template","teaserText","PnrWidgetComponent_ng_template_29_ng_container_0_div_1_Template","operator","PnrWidgetComponent_ng_template_29_ng_container_0_Template","cmsArticle$","tourOperatorImage","PnrWidgetComponent_ng_template_31_div_4_Template","widgetTitle","responsiveImageLinksData","loginForm","translationPrefix","_r21","preventDefault","ButtonType","SUBMIT","ButtonSize","LARGE","ButtonMode","FILL_MOBILE","LIGHT_PRIMARY_CTA_HEATHER","buttonText","_c3","ARROW_RIGHT","IconPosition","RIGHT","PnrWidgetComponent_ng_template_33_div_5_fcom_button_3_Template","loginVerificationLoaderOn_r22","_r23","clearError","NotificationTheme","ALERT","NotificationLayout","BLOCK","error_r24","PnrWidgetComponent_ng_template_33_ng_container_0_Template","_r20","onSubmit","PnrWidgetComponent_ng_template_33_ng_container_2_Template","PnrWidgetComponent_ng_template_33_ng_container_3_Template","PnrWidgetComponent_ng_template_33_div_4_Template","PnrWidgetComponent_ng_template_33_div_5_Template","PnrWidgetComponent_ng_template_33_fcom_notification_6_Template","errorFetchingUpcomingTripsNotification_r25","error$","_r26","index","INFO","INFO_BLOCK","LIGHT_SECONDARY_OUTLINE","FILL","_r27","showErrorFetchingTripsNotification","set","WARNING","ALERT_TRIANGLE","PnrWidgetComponent_ng_template_37_fcom_notification_0_Template","widgetTabMap","mapTourOperatorCode","TourOperatorCode","KU","AL","ST","TM","MI","PnrWidgetComponent","store$","ModalButtons","LoginStatus","recLocRegex","PNR_PATTERN_WITH_TRAILING_WHITESPACE","disruptions$","NEVER","formSubmit","EventEmitter","signal","activeTabSubject$","BehaviorSubject","asObservable","NAME_VALIDATORS","Validators","required","minLength","maxLength","pattern","NAME_PATTERN","subscriptions","Subscription","ngOnInit","loginStatus$","pipe","loginStatus","finShare","profileType$","profileType","combineLatest","LOGGED_IN","ProfileType","FPLUS","recLoc","FormControl","prefilledRecLoc","addValidators","FormGroup","lastName","prefilledLastName","status","INITIAL","PENDING","add","filter","CORPORATE","subscribe","showMyTrips","take","next","unsubscribe","valid","getForm","markAsDirty","markAllAsTouched","updateValueAndValidity","bookingDetails","prefillFormDetails","controls","setValue","activateNotification","errorFetchingTrips","value","trim","tourOperatorCode","i1","outputs","ngContentSelectors","_c1","consts","PnrWidgetComponent_cms_disruptions_0_Template","PnrWidgetComponent_cms_disruptions_2_Template","PnrWidgetComponent_fin_content_image_5_Template","PnrWidgetComponent_ng_container_8_Template","PnrWidgetComponent_ng_template_9_Template","PnrWidgetComponent_ng_template_11_Template","PnrWidgetComponent_ng_template_13_Template","PnrWidgetComponent_ng_template_15_Template","PnrWidgetComponent_ng_template_17_Template","PnrWidgetComponent_ng_template_19_Template","PnrWidgetComponent_ng_template_21_Template","PnrWidgetComponent_ng_template_23_Template","PnrWidgetComponent_ng_template_25_Template","PnrWidgetComponent_ng_template_27_Template","PnrWidgetComponent_ng_template_29_Template","PnrWidgetComponent_ng_template_31_Template","PnrWidgetComponent_ng_template_33_Template","PnrWidgetComponent_ng_template_35_Template","PnrWidgetComponent_ng_template_37_Template","pnrWidgetContent_r28","PNR_WIDGET_FEATURE_KEY","UpcomingTripsFetchStatus","FETCHED","ERROR","upcomingTrips","createReducer","undefined","initialState","on","UpcomingTripsActions","state","trips","reducers","tripsMmb","upcomingTripsReducer","action","UpcomingTripsEffects","actions$","orderPreviewService","store","fetchUpcomingTrips$","createEffect","ofType","type","exhaustMap","getUpcomingTrips","distinctUntilChanged","previousResponse","currentResponse","compareAsJson","response","mapOrderPreviewsToUpcomingTrips","orderPreviews","locations","tap","dispatch","catchError","EMPTY","MAX_SHOWN_TRIPS","orderPreview","bookingReference","id","departure","location","bounds","locationCode","date","TzDate","of","dateTime","toLocalDate","arrival","remainingTrips","length","i2","i3","fesm2022_core","jDH","ɵfac","PnrWidgetModule","$C","G2t","CommonModule","DirectiveModule","ImagesModule","LoginModule","PipesModule","UiTranslateModule","UiComponentsModule","ComponentsModule","FcomFormsModule","CmsModule","FinFormsModule","OrderModule","StoreModule","forFeature","EffectsModule","setTrips","createAction","props","fetchTrips","all","union","selectPnrWidgetState","createFeatureSelector","selectUpcomingTripsState","createSelector","selectUpcomingTrips","selectUpcomingTripsStatus","isMobile_r1","image","alt","link_r3","UpcomingTripComponent_ng_container_0_fcom_image_2_Template","UpcomingTripComponent_ng_container_0_ng_container_17_Template","UpcomingTripComponent_ng_container_0_ng_container_18_Template","_c0","departureDate","_r4","onTripLinkClick","isMobile_r5","_c4","_c5","tripLinkText","UpcomingTripComponent","mediaQueryService","viewDetailsClicked","isMobile$","isBreakpoint$","UpcomingTripComponent_ng_container_0_Template","UpcomingTripComponent_ng_template_2_Template","_r1","viewDetailsClick","upcomingTrip_r3","cityName","UpcomingTripsComponent_div_0_ng_container_1_Template","upcomingTrips$","seeAllMyTripsLink$","UpcomingTripsComponent","languageService","noTripsNotificationActivated","errorWhenFetchingTrips","tripsLoading","lang","RootPaths","PLUS_ROOT","LoyaltyRoutesPath","MY_TRIPS","select","upcomingTripsFetchStatus$","getUpcomingTripsStatus","shouldShowNoTripsNotification","UpcomingTripsComponent_div_0_Template","UpcomingTripsComponent_ng_template_1_Template"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./src/modules/common-booking/interfaces/tour-operator.interface.ts","./src/modules/cms/factories/dynamic-component.factory.ts","./src/modules/cms/components/dynamic/dynamic-html.component.ts","./src/modules/pnr-widget/components/pnr-widget/pnr-widget.component.html","./src/modules/pnr-widget/components/pnr-widget/pnr-widget.component.ts","./src/modules/pnr-widget/interfaces/store.interface.ts","./src/modules/pnr-widget/store/reducers/upcoming-trips.reducer.ts","./src/modules/pnr-widget/store/reducers/index.ts","./src/modules/pnr-widget/store/effects/upcoming-trips.effects.ts","./src/modules/pnr-widget/pnr-widget.module.ts","./src/modules/pnr-widget/store/actions/upcoming-trips.actions.ts","./src/modules/pnr-widget/interfaces/pnr-widget-tab.interface.ts","./src/modules/pnr-widget/store/selectors/upcoming-trips.selectors.ts","./src/modules/pnr-widget/components/upcoming-trip/upcoming-trip.component.html","./src/modules/pnr-widget/components/upcoming-trip/upcoming-trip.component.ts","./src/modules/pnr-widget/components/upcoming-trips/upcoming-trips.component.html","./src/modules/pnr-widget/components/upcoming-trips/upcoming-trips.component.ts"],"sourcesContent":["export enum TourOperator {\n APOLLO = 'apollo',\n TJAREBORG = 'tjareborg',\n ALPPIMATKAT = 'alppimatkat',\n TOIVIOMATKAT = 'toiviomatkat',\n MIXXTRAVEL = 'mixxtravel',\n}\n","import { ApplicationRef, ComponentFactory, ComponentRef, Injector } from '@angular/core';\n\nexport class DynamicComponentFactory {\n private embeddedComponents: ComponentRef[] = [];\n\n constructor(\n private appRef: ApplicationRef,\n private factory: ComponentFactory,\n private injector: Injector\n ) {}\n\n createDynamicComponents(hostElement: Element): ComponentRef[] {\n const dynamicHtmlElements = Array.prototype.slice.call(\n hostElement.querySelectorAll(this.factory.selector)\n ) as Element[];\n const componentRefs = dynamicHtmlElements.map((element) => this.createComponentRef(element));\n this.embeddedComponents.push(...componentRefs);\n componentRefs.forEach((componentRef) => this.appRef.attachView(componentRef.hostView));\n return componentRefs;\n }\n\n private createComponentRef(el: Element): ComponentRef {\n const projectableNodes = [Array.prototype.slice.call(el.childNodes)];\n const componentRef = this.factory.create(this.injector, projectableNodes, el);\n const component = componentRef.instance;\n\n this.setComponentAttrs(component, el);\n\n return componentRef;\n }\n\n private setComponentAttrs(comp: T, el: Element): void {\n const anyComp = comp as any;\n for (const key in anyComp) {\n if (Object.prototype.hasOwnProperty.call(anyComp, key) && el.hasAttribute(key)) {\n anyComp[key] = el.getAttribute(key);\n }\n }\n }\n\n destroy(): void {\n this.embeddedComponents.forEach((componentRef) => {\n this.appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n }\n}\n","import {\n AfterViewInit,\n ApplicationRef,\n Component,\n ComponentFactoryResolver,\n ElementRef,\n Injector,\n Input,\n OnDestroy,\n} from '@angular/core';\n\nimport { SvgLibraryIcon } from '@finnairoyj/fcom-ui-styles/enums';\n\nimport { IconComponent } from '@fcom/ui-components';\n\nimport { DynamicComponentFactory } from '../../factories/dynamic-component.factory';\nimport { transformListContent } from '../../utils';\n\n@Component({\n selector: 'fin-dynamic-html',\n template: '',\n})\nexport class DynamicHtmlComponent implements AfterViewInit, OnDestroy {\n private readonly factories: DynamicComponentFactory[] = [];\n private readonly hostElement: Element;\n\n @Input()\n innerHtml = '';\n\n components = [IconComponent];\n\n constructor(\n elementRef: ElementRef,\n private appRef: ApplicationRef,\n private injector: Injector,\n private resolver: ComponentFactoryResolver\n ) {\n this.hostElement = elementRef.nativeElement;\n }\n\n ngAfterViewInit(): void {\n this.hostElement.innerHTML = transformListContent(this.innerHtml, SvgLibraryIcon.CHECKMARK);\n this.initFactories();\n this.createAllComponents();\n }\n\n ngOnDestroy(): void {\n this.removeAllComponents();\n }\n\n private initFactories(): void {\n this.components.forEach((component) => {\n const factory = this.resolver.resolveComponentFactory(component);\n const dynamicComponentFactory = new DynamicComponentFactory(this.appRef, factory, this.injector);\n this.factories.push(dynamicComponentFactory);\n });\n }\n\n private createAllComponents(): void {\n this.factories.forEach((factory) => {\n factory.createDynamicComponents(this.hostElement);\n });\n }\n\n private removeAllComponents(): void {\n this.factories.forEach((factory) => factory.destroy());\n }\n}\n","\n\n\n
\n \n \n\n
\n
\n \n
\n
\n
\n\n\n \n\n\n\n
\n \n
\n
\n\n\n
\n \n {{ 'actions.loading' | finLocalization }}\n
\n
\n\n\n
\n \n \n
\n
\n\n\n
\n \n \n
\n \n
\n\n\n \n \n \n \n \n \n \n \n\n\n\n \n \n \n \n \n\n\n \n\n\n\n \n\n\n\n \n\n\n\n \n
\n
\n
\n \n \n
\n
\n

{{ cmsArticle.teaserTitle }}

\n\n \n
\n
\n
\n
\n
\n\n\n
\n

\n {{ widgetTitle | finLocalization }}\n

\n
\n \n
\n
\n
\n\n\n \n
\n \n \n
\n \n\n
\n\n \n
\n\n
\n
\n \n
\n\n \n \n
\n \n {{ error | finLocalization }}\n \n \n
\n\n\n
\n \n
\n

\n {{ 'MMB.upcomingTrips.bookingReferenceTab.notification.noTripsMessage' | finLocalization }}\n

\n
\n \n
\n \n
\n
\n
\n\n\n \n {{ 'MMB.upcomingTrips.bookingReferenceTab.notification.error' | finLocalization }}\n \n\n\n\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n signal,\n} from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\n\nimport { SvgLibraryIcon } from '@finnairoyj/fcom-ui-styles/enums';\nimport { BehaviorSubject, combineLatest, filter, NEVER, Observable, Subscription, take } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { map } from 'rxjs/operators';\n\nimport { PassengerNameRecord } from '@fcom/common-booking';\nimport { CmsArticle, CmsCollection, CmsImageData } from '@fcom/core-api';\nimport { NAME_PATTERN, PNR_PATTERN_WITH_TRAILING_WHITESPACE } from '@fcom/core/utils/utils';\nimport {\n ButtonMode,\n ButtonSize,\n ButtonTheme,\n ButtonType,\n IconPosition,\n LoaderTheme,\n ModalButtons,\n NotificationLayout,\n NotificationTheme,\n TabTheme,\n} from '@fcom/ui-components';\nimport { TourOperatorCode } from '@fcom/dapi/api/models';\nimport { TourOperator } from '@fcom/common-booking/interfaces/tour-operator.interface';\nimport { AppState } from '@fcom/core/interfaces';\nimport { loginStatus, profileType } from '@fcom/core/selectors';\nimport { finShare } from '@fcom/rx';\nimport { LoginStatus, ProfileType } from '@fcom/core-api/login';\nimport { unsubscribe } from '@fcom/core';\n\nimport { BookingDetails } from '../../interfaces/upcoming-trips.interface';\nimport { MmbWidgetTab } from '../../interfaces/pnr-widget-tab.interface';\n\n/**\n * Shows a PNR Widget component with a background image, PNR login-form and displays error if data is incorrect.\n *\n * When provided, displays a cmsArticle block, tourOperator image, groupBookingModal and fcom-loader while waiting to retrieve the data\n *\n * Example usage:\n *\n * @example Inputs and Outputs\n * \n * {\n switch (operator) {\n case TourOperator.APOLLO:\n return TourOperatorCode.KU;\n case TourOperator.ALPPIMATKAT:\n return TourOperatorCode.AL;\n case TourOperator.TJAREBORG:\n return TourOperatorCode.ST;\n case TourOperator.TOIVIOMATKAT:\n return TourOperatorCode.TM;\n case TourOperator.MIXXTRAVEL:\n return TourOperatorCode.MI;\n default:\n return undefined;\n }\n};\n\n@Component({\n selector: 'fcom-pnr-widget',\n templateUrl: './pnr-widget.component.html',\n styleUrls: ['./pnr-widget.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PnrWidgetComponent implements OnInit, OnDestroy {\n readonly ButtonSize = ButtonSize;\n readonly ButtonMode = ButtonMode;\n readonly ButtonType = ButtonType;\n readonly IconPosition = IconPosition;\n readonly NotificationTheme = NotificationTheme;\n readonly NotificationLayout = NotificationLayout;\n readonly LoaderTheme = LoaderTheme;\n readonly ModalButtons = ModalButtons;\n readonly ButtonTheme = ButtonTheme;\n readonly MmbWidgetTab = MmbWidgetTab;\n readonly LoginStatus = LoginStatus;\n readonly SvgLibraryIcon = SvgLibraryIcon;\n\n @Input() widgetTitle: string;\n @Input() buttonText: string;\n\n @Input() backgroundImage: CmsImageData;\n @Input() tourOperatorImage: CmsImageData;\n @Input() loading: boolean;\n @Input() operator: TourOperator;\n @Input() translationPrefix = 'loginFields';\n @Input() recLocRegex = PNR_PATTERN_WITH_TRAILING_WHITESPACE;\n @Input() prefilledRecLoc: string;\n @Input() prefilledLastName: string;\n @Input() checkForUpgradesTripLink = false;\n\n @Input() disruptions$: Observable = NEVER;\n @Input() personalizedDisruptions$: Observable = NEVER;\n @Input() error$: Observable;\n @Input() cmsArticle$: Observable;\n\n @Output() formSubmit = new EventEmitter();\n @Output() cancelRetrieve = new EventEmitter();\n @Output() clearError = new EventEmitter();\n\n showNoTripsNotification = signal(false);\n showErrorFetchingTripsNotification = signal(false);\n disableUpcomingTripsTab = signal(false);\n\n activeTabSubject$: BehaviorSubject = new BehaviorSubject(\n MmbWidgetTab.FIND_WITH_BOOKING_REFERENCE\n );\n activeTab$: Observable = this.activeTabSubject$.asObservable();\n isLoginStatusVerificationLoaderOn$: Observable;\n loginStatus$: Observable;\n profileType$: Observable;\n showMyTripsToLoggedUser$: Observable;\n\n loginForm: FormGroup<{ lastName: FormControl; recLoc: FormControl }>;\n\n NAME_VALIDATORS = [\n Validators.required,\n Validators.minLength(2),\n Validators.maxLength(50),\n Validators.pattern(NAME_PATTERN),\n ];\n\n private subscriptions = new Subscription();\n\n constructor(private store$: Store) {}\n\n ngOnInit(): void {\n this.loginStatus$ = this.store$.pipe(loginStatus(), finShare());\n this.profileType$ = this.store$.pipe(profileType());\n\n this.showMyTripsToLoggedUser$ = combineLatest([this.loginStatus$, this.profileType$]).pipe(\n map(([loginStatus, profileType]) => loginStatus === LoginStatus.LOGGED_IN && profileType === ProfileType.FPLUS)\n );\n const recLoc = new FormControl(this.prefilledRecLoc ?? '', [Validators.required]);\n\n if (!this.operator) {\n recLoc.addValidators(Validators.pattern(this.recLocRegex));\n } else {\n recLoc.addValidators(Validators.pattern(/^[0-9]+$/));\n }\n\n this.loginForm = new FormGroup({\n lastName: new FormControl(this.prefilledLastName ?? '', this.NAME_VALIDATORS),\n recLoc,\n });\n this.isLoginStatusVerificationLoaderOn$ = this.loginStatus$.pipe(\n map((status: LoginStatus) => !(status !== LoginStatus.INITIAL && status !== LoginStatus.PENDING))\n );\n this.subscriptions.add(\n this.profileType$\n .pipe(filter((profileType) => profileType === ProfileType.CORPORATE))\n .subscribe(() => this.disableUpcomingTripsTab.set(true))\n );\n this.subscriptions.add(\n this.showMyTripsToLoggedUser$\n .pipe(\n filter((showMyTrips) => showMyTrips),\n take(1)\n )\n .subscribe(() => {\n this.disableUpcomingTripsTab.set(false);\n this.activeTabSubject$.next(widgetTabMap[MmbWidgetTab.UPCOMING_TRIPS]);\n })\n );\n }\n\n ngOnDestroy(): void {\n unsubscribe(this.subscriptions);\n }\n\n onSubmit(): void {\n if (this.loginForm.valid) {\n this.formSubmit.emit(this.getForm());\n } else {\n this.loginForm.markAsDirty();\n this.loginForm.markAllAsTouched();\n this.loginForm.updateValueAndValidity();\n }\n }\n\n viewBookingDetails(bookingDetails: BookingDetails): void {\n this.prefillFormDetails(bookingDetails);\n this.onSubmit();\n }\n\n private prefillFormDetails(bookingDetails: BookingDetails): void {\n this.loginForm.controls.recLoc.setValue(bookingDetails.recLoc);\n this.loginForm.controls.lastName.setValue(bookingDetails.lastName);\n }\n\n setActiveTab({ index }: { index: number; data?: unknown }): void {\n this.activeTabSubject$.next(widgetTabMap[index]);\n }\n\n onNoTripsNotification(activateNotification: boolean): void {\n this.showNoTripsNotification.set(activateNotification);\n this.activeTabSubject$.next(widgetTabMap[1]);\n }\n\n onErrorFetchingTripsNotification(errorFetchingTrips: boolean): void {\n this.showErrorFetchingTripsNotification.set(errorFetchingTrips);\n this.disableUpcomingTripsTab.set(errorFetchingTrips);\n this.activeTabSubject$.next(widgetTabMap[0]);\n }\n\n private getForm(): PassengerNameRecord {\n return {\n recLoc: this.loginForm.controls.recLoc.value.trim(),\n lastName: this.loginForm.controls.lastName.value.trim(),\n tourOperatorCode: mapTourOperatorCode(this.operator),\n };\n }\n\n protected readonly TabTheme = TabTheme;\n}\n","import { AppState } from '@fcom/core/interfaces';\n\nimport { UpcomingTrip } from './upcoming-trips.interface';\n\nexport const PNR_WIDGET_FEATURE_KEY = 'pnrWidget';\n\nexport interface UpcomingTripsState {\n upcomingTrips: UpcomingTrip[];\n status: UpcomingTripsFetchStatus;\n}\n\nexport enum UpcomingTripsFetchStatus {\n INITIAL,\n FETCHED,\n ERROR,\n}\n\nexport interface PnrWidgetState {\n tripsMmb: UpcomingTripsState;\n}\n\nexport interface PnrWidgetFeatureState extends AppState {\n readonly [PNR_WIDGET_FEATURE_KEY]: PnrWidgetState;\n}\n","import { createReducer, on } from '@ngrx/store';\n\nimport { UpcomingTripsFetchStatus, UpcomingTripsState } from '../../interfaces/store.interface';\nimport { UpcomingTripsActions } from '../actions';\n\nexport const initialState: UpcomingTripsState = {\n upcomingTrips: undefined,\n status: UpcomingTripsFetchStatus.INITIAL,\n};\n\nconst upcomingTrips = createReducer(\n initialState,\n on(UpcomingTripsActions.setTrips, (state, { trips, status }) => ({\n ...state,\n upcomingTrips: trips,\n status: status,\n }))\n);\n\nexport const upcomingTripsReducer = (\n state: UpcomingTripsState,\n action: UpcomingTripsActions.UpcomingTripsActionsUnion\n): UpcomingTripsState => {\n return upcomingTrips(state, action);\n};\n","import { ActionReducerMap } from '@ngrx/store';\n\nimport { PnrWidgetState } from '../../interfaces';\nimport { upcomingTripsReducer } from './upcoming-trips.reducer';\n\nexport const reducers: ActionReducerMap = {\n tripsMmb: upcomingTripsReducer,\n};\n","import { Injectable } from '@angular/core';\n\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { EMPTY } from 'rxjs';\nimport { catchError, distinctUntilChanged, exhaustMap, map, tap } from 'rxjs/operators';\n\nimport { OrderPreviewsService } from '@fcom/order';\nimport { FinnairOrderPreview, FinnairOrderPreviewsResponse } from '@fcom/dapi/api/models';\nimport { compareAsJson, TzDate } from '@fcom/core';\n\nimport { UpcomingTripsActions } from '../actions';\nimport { PnrWidgetState, UpcomingTripsFetchStatus } from '../../interfaces/store.interface';\nimport { UpcomingTrip } from '../../interfaces';\nimport { MAX_SHOWN_TRIPS } from '../../components/upcoming-trips/upcoming-trips.component';\n\n@Injectable()\nexport class UpcomingTripsEffects {\n fetchUpcomingTrips$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(UpcomingTripsActions.fetchTrips.type),\n exhaustMap(() =>\n this.orderPreviewService.getUpcomingTrips().pipe(\n distinctUntilChanged((previousResponse, currentResponse) =>\n compareAsJson(previousResponse, currentResponse)\n ),\n map((response) => this.mapOrderPreviewsToUpcomingTrips(response.orderPreviews, response.locations))\n )\n ),\n tap((upcomingTrips: UpcomingTrip[]) => {\n this.store.dispatch(\n UpcomingTripsActions.setTrips({\n trips: upcomingTrips,\n status: UpcomingTripsFetchStatus.FETCHED,\n })\n );\n }),\n catchError(() => {\n this.store.dispatch(UpcomingTripsActions.setTrips({ trips: [], status: UpcomingTripsFetchStatus.ERROR }));\n return EMPTY;\n })\n ),\n { dispatch: false }\n );\n\n constructor(\n private readonly actions$: Actions,\n private orderPreviewService: OrderPreviewsService,\n private store: Store\n ) {}\n\n private mapOrderPreviewsToUpcomingTrips(\n orderPreviews: FinnairOrderPreview[],\n locations: FinnairOrderPreviewsResponse['locations']\n ): UpcomingTrip[] {\n return (\n orderPreviews?.slice(0, MAX_SHOWN_TRIPS).map((orderPreview) => {\n return {\n bookingReference: orderPreview.id,\n lastName: orderPreview.lastName,\n departure: {\n location: locations[orderPreview.bounds[0].departure.locationCode],\n date: TzDate.of(orderPreview.bounds[0].departure.dateTime).toLocalDate(),\n },\n arrival: {\n location: locations[orderPreview.bounds[0].arrival.locationCode],\n date: TzDate.of(orderPreview.bounds[0].arrival.dateTime).toLocalDate(),\n },\n remainingTrips: orderPreview.bounds.length - 1,\n };\n }) || []\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { StoreModule } from '@ngrx/store';\nimport { EffectsModule } from '@ngrx/effects';\n\nimport { DirectiveModule, FinFormsModule, ImagesModule, PipesModule } from '@fcom/common';\nimport { FcomFormsModule } from '@fcom/ui-components';\nimport { CmsModule } from '@fcom/cms';\nimport { UiTranslateModule } from '@fcom/ui-translate';\nimport { UiComponentsModule } from '@fcom/ui-components/ui-components.module';\nimport { OrderModule } from '@fcom/order';\nimport { ComponentsModule } from '@fcom/common/components/components.module';\nimport { LoginModule } from '@fcom/common/login';\n\nimport { PNR_WIDGET_FEATURE_KEY } from './interfaces/store.interface';\nimport { PnrWidgetComponent } from './components/pnr-widget/pnr-widget.component';\nimport { UpcomingTripsComponent } from './components/upcoming-trips/upcoming-trips.component';\nimport { UpcomingTripComponent } from './components/upcoming-trip/upcoming-trip.component';\nimport { reducers } from './store';\nimport { UpcomingTripsEffects } from './store/effects/upcoming-trips.effects';\n\n@NgModule({\n declarations: [PnrWidgetComponent, UpcomingTripsComponent, UpcomingTripComponent],\n exports: [PnrWidgetComponent, UpcomingTripsComponent, UpcomingTripComponent],\n imports: [\n CommonModule,\n DirectiveModule,\n ImagesModule,\n LoginModule,\n PipesModule,\n UiTranslateModule,\n UiComponentsModule,\n ComponentsModule,\n FcomFormsModule,\n CmsModule,\n FinFormsModule,\n OrderModule,\n StoreModule.forFeature(PNR_WIDGET_FEATURE_KEY, reducers),\n EffectsModule.forFeature([UpcomingTripsEffects]),\n ],\n})\nexport class PnrWidgetModule {}\n","import { createAction, props, union } from '@ngrx/store';\n\nimport { UpcomingTrip } from '../../interfaces/upcoming-trips.interface';\nimport { UpcomingTripsFetchStatus } from '../../interfaces/store.interface';\n\nexport const setTrips = createAction(\n '[PnrWidget] SetTrips',\n props<{ trips: UpcomingTrip[]; status: UpcomingTripsFetchStatus }>()\n);\nexport const fetchTrips = createAction('[PnrWidget] FetchTrips');\n\nconst all = union({ setTrips, fetchTrips });\n\nexport type UpcomingTripsActionsUnion = typeof all;\n","export enum MmbWidgetTab {\n FIND_WITH_BOOKING_REFERENCE,\n UPCOMING_TRIPS,\n}\n","import { createFeatureSelector, createSelector, select } from '@ngrx/store';\n\nimport { StateSelector } from '@fcom/core/selectors/selector-utils';\n\nimport {\n PNR_WIDGET_FEATURE_KEY,\n PnrWidgetState,\n UpcomingTrip,\n UpcomingTripsFetchStatus,\n UpcomingTripsState,\n} from '../../interfaces';\n\nconst selectPnrWidgetState = createFeatureSelector(PNR_WIDGET_FEATURE_KEY);\nconst selectUpcomingTripsState = createSelector(selectPnrWidgetState, (state: PnrWidgetState) => state.tripsMmb);\n\nconst selectUpcomingTrips = createSelector(\n selectUpcomingTripsState,\n (state: UpcomingTripsState) => state.upcomingTrips\n);\nconst selectUpcomingTripsStatus = createSelector(selectUpcomingTripsState, (state: UpcomingTripsState) => state.status);\n\nexport const getUpcomingTrips = (): StateSelector => select(selectUpcomingTrips);\nexport const getUpcomingTripsStatus = (): StateSelector =>\n select(selectUpcomingTripsStatus);\n","\n
\n \n
\n \n

\n {{\n ('MMB.upcomingTrips.tripsTab.tripLocations' | finLocalization: { departure: departure, arrival: arrival }) +\n ' ' +\n (remainingTrips > 0\n ? ('MMB.upcomingTrips.tripsTab.moreTrips' | finLocalization: { numberOfTrips: remainingTrips })\n : '')\n }}\n

\n
\n

{{ departureDate | finDateFormat: 'FULL' }}

\n

\n {{ 'MMB.upcomingTrips.tripsTab.bookingReference' | finLocalization }}\n {{ bookingReference }}\n

\n
\n \n
\n
\n\n\n \n\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\nimport { SvgLibraryIcon } from '@finnairoyj/fcom-ui-styles/enums';\nimport { Observable } from 'rxjs';\n\nimport { ButtonMode, ButtonSize, ButtonTheme, IconPosition, ResponsiveImage } from '@fcom/ui-components';\nimport { LocalDate } from '@fcom/core/utils';\nimport { MediaQueryService } from '@fcom/common';\n\nimport { BookingDetails } from '../../interfaces/upcoming-trips.interface';\n\n@Component({\n selector: 'fin-upcoming-trip',\n templateUrl: './upcoming-trip.component.html',\n styleUrls: ['./upcoming-trip.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UpcomingTripComponent implements OnInit {\n readonly ButtonMode = ButtonMode;\n readonly ButtonSize = ButtonSize;\n readonly ButtonTheme = ButtonTheme;\n readonly IconPosition = IconPosition;\n readonly SvgLibraryIcon = SvgLibraryIcon;\n\n @Input() image: { alt: string } & ResponsiveImage;\n @Input() departure: string;\n @Input() arrival: string;\n @Input() departureDate: LocalDate;\n @Input() bookingReference: string;\n @Input() lastName: string;\n @Input() remainingTrips: number;\n @Input() checkForUpgradesTripLink: boolean;\n\n @Output() viewDetailsClicked: EventEmitter = new EventEmitter();\n\n isMobile$: Observable;\n\n tripLinkText: string;\n\n constructor(private mediaQueryService: MediaQueryService) {}\n\n onTripLinkClick(): void {\n this.viewDetailsClicked.emit({\n recLoc: this.bookingReference,\n lastName: this.lastName,\n });\n }\n\n ngOnInit(): void {\n this.isMobile$ = this.mediaQueryService.isBreakpoint$('mobile');\n this.tripLinkText = this.checkForUpgradesTripLink\n ? 'MMB.upcomingTrips.tripsTab.button.checkUpgrades'\n : 'MMB.upcomingTrips.tripsTab.button.viewDetails';\n }\n}\n","
\n \n \n \n \n
\n\n\n
\n
\n \n {{ 'actions.loading' | finLocalization }}\n
\n
\n
\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n signal,\n} from '@angular/core';\n\nimport { SvgLibraryIcon } from '@finnairoyj/fcom-ui-styles/enums';\nimport { combineLatest, filter, Observable, Subscription } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { map } from 'rxjs/operators';\n\nimport { unsubscribe } from '@fcom/core/utils';\nimport { ButtonMode, ButtonTheme, IconPosition, LoaderTheme } from '@fcom/ui-components';\nimport { RootPaths } from '@fcom/core/constants';\nimport { LoyaltyRoutesPath } from '@fcom/loyalty-core/interfaces/loyalty.interface';\nimport { LanguageService } from '@fcom/ui-translate';\n\nimport { BookingDetails, UpcomingTrip } from '../../interfaces/upcoming-trips.interface';\nimport { PnrWidgetState, UpcomingTripsFetchStatus } from '../../interfaces/store.interface';\nimport { getUpcomingTrips, getUpcomingTripsStatus } from '../../store/selectors/upcoming-trips.selectors';\nimport { fetchTrips } from '../../store/actions/upcoming-trips.actions';\n\nexport const MAX_SHOWN_TRIPS = 5;\n\n@Component({\n selector: 'fin-upcoming-trips',\n templateUrl: './upcoming-trips.component.html',\n styleUrls: ['./upcoming-trips.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UpcomingTripsComponent implements OnInit, OnDestroy {\n readonly LoaderTheme = LoaderTheme;\n readonly ButtonMode = ButtonMode;\n readonly ButtonTheme = ButtonTheme;\n readonly IconPosition = IconPosition;\n readonly SvgLibraryIcon = SvgLibraryIcon;\n\n @Input() checkForUpgradesTripLink: boolean;\n\n @Output() viewDetailsClicked: EventEmitter = new EventEmitter();\n @Output() noTripsNotificationActivated: EventEmitter = new EventEmitter();\n @Output() errorWhenFetchingTrips: EventEmitter = new EventEmitter();\n\n tripsLoading = signal(true);\n upcomingTrips$: Observable;\n upcomingTripsFetchStatus$: Observable;\n seeAllMyTripsLink$: Observable;\n\n private subscriptions = new Subscription();\n\n constructor(\n private store$: Store,\n private languageService: LanguageService\n ) {}\n\n viewDetailsClick(bookingDetails: BookingDetails): void {\n this.viewDetailsClicked.emit(bookingDetails);\n }\n\n ngOnInit(): void {\n this.seeAllMyTripsLink$ = this.languageService.lang.pipe(\n map((lang) => `/${lang}/${RootPaths.PLUS_ROOT}/${LoyaltyRoutesPath.MY_TRIPS}`)\n );\n this.upcomingTrips$ = this.store$.pipe(getUpcomingTrips());\n this.upcomingTripsFetchStatus$ = this.store$.pipe(getUpcomingTripsStatus());\n\n this.subscriptions.add(\n this.upcomingTripsFetchStatus$.subscribe((status: UpcomingTripsFetchStatus) => {\n if (status === UpcomingTripsFetchStatus.INITIAL) {\n this.tripsLoading.set(true);\n this.store$.dispatch(fetchTrips());\n } else {\n this.tripsLoading.set(false);\n if (status === UpcomingTripsFetchStatus.ERROR) {\n this.errorWhenFetchingTrips.emit(true);\n }\n }\n })\n );\n this.subscriptions.add(\n combineLatest([this.upcomingTrips$, this.upcomingTripsFetchStatus$])\n .pipe(filter(([trips, status]) => this.shouldShowNoTripsNotification(trips, status)))\n .subscribe(() => this.noTripsNotificationActivated.emit(true))\n );\n }\n\n ngOnDestroy(): void {\n unsubscribe(this.subscriptions);\n }\n\n private shouldShowNoTripsNotification(trips: UpcomingTrip[], status: UpcomingTripsFetchStatus): boolean {\n return trips?.length === 0 && status === UpcomingTripsFetchStatus.FETCHED;\n }\n}\n"],"x_google_ignoreList":[]}