{"version":3,"sources":["./src/app/modules/shared/banner/banner.component.ts","./src/app/modules/shared/banner/banner.component.html","./src/app/modules/app-directory/app-favorite-thumbnail/app-favorite-thumbnail.component.html","./src/app/modules/app-directory/app-favorite-thumbnail/app-favorite-thumbnail.component.ts","./src/app/modules/app-directory/app-thumbnail/app-thumbnail.component.html","./src/app/modules/app-directory/app-thumbnail/app-thumbnail.component.ts","./src/app/modules/app-directory/app-list/app-list.component.html","./src/app/modules/app-directory/app-directory.routing.ts","./src/app/modules/app-directory/app-list/app-list.component.ts","./src/app/modules/app-directory/app-directory.module.ts"],"names":["bannerLink","bannerText","bannerLinkText","clicked","ngOnInit","ngOnDestroy","onAnyClick","this","emit","BannerComponent","appsService","matomoTracker","authService","uiThemeService","fadeOut","app","removeFromFavorites","subscribe","error","trackEvent","App","Unfavorite","card","name","trackLaunch","Open","AppFavoriteThumbnailComponent","alertService","focused","wordCountLimit","description","words","split","length","slice","join","addToFavorites","currentUser$","info","title","Favorite","onFocus","onFocusout","AppThumbnailComponent","routes","path","component","configService","bannerDismissKey","showBanner","destroyed$","Subject","trackPageView","ngAfterViewInit","refreshApps","bannerClicked","localStorage","setItem","apps$","getApps","combineLatest","oidcUser$","pipe","distinctUntilKeyChanged","takeUntil","ssoUserInfo$","userInfo","apps","timezoneOffset","Date","getTimezoneOffset","config","recruitBannerCloseKey","recruitBannerShowInternal","directory","getItem","showRecruitBannerAmerica","recruitBannerLinkAmerica","recruitBannerTextAmerica","recruitBannerLinkTextAmerica","showRecruitBannerEurope","recruitBannerLinkEurope","recruitBannerTextEurope","recruitBannerLinkTextEurope","favorites$","favorites","fromEvent","filter","nativeElement","startWith","undefined","debounceTime","distinctUntilChanged","switchMap","input","getAll","map","favorite","target","value","toLowerCase","indexOf","next","complete","AppListComponent","AppDirectoryRoutingModule","forChild","AppDirectoryModule"],"mappings":"qWAEA,aAUE,aAJS,KAAAA,WAAqB,GACrB,KAAAC,WAAqB,GACrB,KAAAC,eAAyB,GACxB,KAAAC,QAA6B,IAAI,I,OAG3C,YAAAC,SAAA,aAEA,YAAAC,YAAA,aAEO,YAAAC,WAAP,WACEC,KAAKJ,QAAQK,Q,sCAZJC,I,uBAAAA,EAAe,gZCP5B,gBACE,cACA,iBAA0B,QAAgB,OAC5C,OACA,gBACE,cAAkE,gCAAS,EAAAH,gBAAc,QAAkB,OAC3G,cAAG,gCAAS,EAAAA,gBAAwC,cAA4B,OAClF,Q,MAL4B,2BAGvB,uCAAsF,iC,w7BDH3F,G,gDEFA,gB,kBAA0F,kCAAzB,qC,wBAI3D,iB,mBACE,mDAD6D,gEAAuC,8D,qCAF1G,aACE,cAAoE,gEAClE,sBAC0C,QAAgC,OAC9E,O,qBAHK,4EACI,+EACqC,mE,sBAMhD,eAA6C,qBAAU,QCDvD,iBAUE,WAA6BI,EACVC,EACAC,EACAC,GAHU,KAAAH,cACV,KAAAC,gBACA,KAAAC,cACA,KAAAC,iBAPY,KAAAC,SAAU,EAEhC,KAAAC,IAAW,K,OAOb,YAAAC,oBAAP,e,EAAA,OACET,KAAKO,SAAU,EACfP,KAAKG,YAAYM,oBAAoBT,KAAKQ,KAAKE,WAC7C,eACA,SAAAC,GAAS,OAAC,EAAKJ,SAAU,KAE3BP,KAAKI,cAAcQ,WAAW,IAAoBC,IAAK,IAAmBC,YAA0B,QAAb,EAAAd,KAAKQ,IAAIO,YAAI,eAAEC,OAAQhB,KAAKQ,IAAIQ,OAGlH,YAAAC,YAAP,W,MACEjB,KAAKI,cAAcQ,WAAW,IAAoBC,IAAK,IAAmBK,MAAoB,QAAb,EAAAlB,KAAKQ,IAAIO,YAAI,eAAEC,OAAQhB,KAAKQ,IAAIQ,O,sCApBxGG,GAA6B,0C,uBAA7BA,EAA6B,qF,0jBDf1C,sBACA,wCAQA,cAAgC,gCAAS,EAAAV,yBAAuB,cAA6C,iBACxE,iBAAM,OAAO,OAClD,oBACA,cACE,gCAAS,EAAAQ,iBAAe,qBAAU,Q,mBAb/B,sDAA0C,cAW5C,8DACA,8E,4vCCFH,G,oCCVA,iB,kBAA0F,kCAAzB,qC,wBAI3D,iB,mBACE,mDAD6D,gEAAuC,8D,qCAF1G,aACE,eAAoE,gEAAuB,sDAAvB,CAAuB,6DACzF,uBAC0C,QAAgC,OAC9E,O,qBAHK,4EACI,+EACqC,mE,yBAIhD,YAAiC,QAA0B,Q,kBAA1B,sC,qCAI/B,eAA6B,4DAAmB,6DAA2B,qBAAU,QCDvF,iBAaE,WAA6Bd,EACViB,EACAhB,EACAC,EACAC,GAJU,KAAAH,cACV,KAAAiB,eACA,KAAAhB,gBACA,KAAAC,cACA,KAAAC,iBAXY,KAAAC,SAAU,EACX,KAAAc,SAAU,EAE/B,KAAAb,IAAW,KAEZ,KAAAc,eAAiB,G,OAQzB,YAAAzB,SAAA,WACE,GAAIG,KAAKQ,IAAIO,MAAQf,KAAKQ,IAAIO,KAAKQ,YAAa,CAC9C,IAAMC,EAAQxB,KAAKQ,IAAIO,KAAKQ,YAAYE,MAAM,KAC1CD,EAAME,OAAS1B,KAAKsB,iBACtBtB,KAAKQ,IAAIO,KAAKQ,YAAiBC,EAAMG,MAAM,EAAG3B,KAAKsB,eAAiB,GAAGM,KAAK,KAAI,aAK/E,YAAAC,eAAP,e,EAAA,OACE7B,KAAKO,SAAU,EACfP,KAAKG,YAAY0B,eAAe7B,KAAKQ,KAAKE,WACxC,WACE,EAAKL,YAAYyB,aAAapB,eAEhC,SAAAC,GACE,EAAKJ,SAAU,EACf,EAAKa,aAAaW,KAAK,CACrBC,MAAO,iEAKbhC,KAAKI,cAAcQ,WAAW,IAAoBC,IAAK,IAAmBoB,UAAwB,QAAb,EAAAjC,KAAKQ,IAAIO,YAAI,eAAEC,OAAQhB,KAAKQ,IAAIQ,OAGhH,YAAAC,YAAP,W,MACEjB,KAAKI,cAAcQ,WAAW,IAAoBC,IAAK,IAAmBK,MAAoB,QAAb,EAAAlB,KAAKQ,IAAIO,YAAI,eAAEC,OAAQhB,KAAKQ,IAAIQ,OAG5G,YAAAkB,QAAP,WACElC,KAAKqB,SAAU,GAGV,YAAAc,WAAP,WACEnC,KAAKqB,SAAU,G,sCAjDNe,GAAqB,oD,uBAArBA,EAAqB,4E,isBDjBlC,sBACA,wCAQA,oBACA,gBACE,cAAwB,gCAAS,EAAAP,mBAAT,CAA0B,2BAAU,EAAAK,YAApC,CAA0B,8BAAiC,EAAAC,gBAAc,iBAC1C,mBAAQ,OAAO,cAA8B,OACpG,oBACA,eAAoF,gCAAS,EAAAlB,gBAAT,CAAuB,2BAAU,EAAAiB,YAAjC,CAAuB,8BAAiC,EAAAC,gBAAc,sBACrJ,eAAgC,OACvC,Q,mBAhBK,sDAA0C,cAS5C,kEAIE,8DACA,8E,yjECFL,G,uDCJA,sBAAwD,oEAAwF,O,qBAAlH,gCAAyB,0BAAzB,CAAyB,oC,qBAU/C,uC,KAA8D,W,sCAHlE,cACE,gBAA2B,qBAAU,eAAM,QAA6B,OAAO,OAC/E,iBACE,6CAGF,OACF,Q,wBAN6C,yCAEd,qC,qBAQ7B,8B,KAAgD,W,sCAZpD,iBACE,sBASA,gBAA2B,6BAAkB,eAAM,QAAwB,OAAO,OAClF,iBACE,oCAEF,OACF,Q,uBAdO,+DAS8C,oCAE/B,gC,yBAhBxB,QAIE,uBAgBF,Q,wCAhBO,yCAAiD,e,sBAmBtD,iBACE,iBACE,eAAmB,wCAA6B,OAClD,OACF,Q,gDC/BIE,EAAiB,CACrB,CACEC,KAAM,GACNC,UCQJ,WAmBE,WACmBC,EACArC,EACAE,EACTD,GAHS,KAAAoC,gBACA,KAAArC,cACA,KAAAE,cACT,KAAAD,gBAhBF,KAAAqC,iBAA2B,oCAG5B,KAAAC,YAAa,EACb,KAAAjD,WAAa,GACb,KAAAC,WAAa,GACb,KAAAC,eAAiB,GAIhB,KAAAgD,WAA4B,IAAIC,EAAA,EAQtC5C,KAAKI,cAAcyC,cAAc,gB,OAGnC,YAAAC,gBAAA,WACE9C,KAAK+C,eAGA,YAAAC,cAAP,WACEC,aAAaC,QAAQlD,KAAKyC,iBAAkB,QAC5CzC,KAAK0C,YAAa,GAGZ,YAAAK,YAAR,sBACE/C,KAAKmD,MAAQnD,KAAKoD,UAClB,OAAAC,EAAA,GACErD,KAAKK,YAAYiD,UAAUC,KAAK,OAAAC,EAAA,GAAwB,gBAAiB,OAAAC,EAAA,GAAUzD,KAAK2C,aACxF3C,KAAKK,YAAYqD,aAAaH,KAAK,OAAAE,EAAA,GAAUzD,KAAK2C,aAClD3C,KAAKmD,OACLzC,WAAU,SAAC,G,IAAOiD,EAAA,KAAUC,EAAA,KACxBC,GAAiB,IAAIC,MAAOC,oBAC5B,EAAKvB,cAAcwB,OAAOC,wBAE5B,EAAKxB,iBAAmB,EAAKD,cAAcwB,OAAOC,wBAE/C,EAAKzB,cAAcwB,OAAOE,2BAAoD,UAAvBP,EAASQ,WAA0E,SAAhDlB,aAAamB,QAAQ,EAAK3B,oBACnH,EAAKD,cAAcwB,OAAOK,0BAA4B,KAAOR,GAAkBA,GAAkB,KAAOD,EAAKlC,QAAU,IACzH,EAAKgB,YAAa,EAClB,EAAKjD,WAAa,EAAK+C,cAAcwB,OAAOM,yBAC5C,EAAK5E,WAAa,EAAK8C,cAAcwB,OAAOO,yBAC5C,EAAK5E,eAAiB,EAAK6C,cAAcwB,OAAOQ,8BAE9C,EAAKhC,cAAcwB,OAAOS,yBAA2B,GAAKZ,GAAkBA,IAAmB,KAAOD,EAAKlC,QAAU,IACvH,EAAKgB,YAAa,EAClB,EAAKjD,WAAa,EAAK+C,cAAcwB,OAAOU,wBAC5C,EAAKhF,WAAa,EAAK8C,cAAcwB,OAAOW,wBAC5C,EAAKhF,eAAiB,EAAK6C,cAAcwB,OAAOY,iCAItD5E,KAAK6E,WAAa7E,KAAKoD,SAAQ,IAGzB,YAAAA,QAAR,SAAgB0B,GAAhB,WACE,YADc,IAAAA,OAAA,GACP,OAAAC,EAAA,GAAU/E,KAAKgF,OAAOC,cAAe,SAAS1B,KACnD,OAAA2B,EAAA,QAAUC,GACV,OAAAC,EAAA,GAAa,KACb,OAAAC,EAAA,KACA,OAAAC,EAAA,IAAU,SAACC,GACT,SAAKpF,YAAYqF,SAASjC,KACxB,OAAAkC,EAAA,IAAI,SAAA7B,GAAQ,OAAAA,EAAKoB,QAAO,SAAAxE,GAAO,OAACsE,EAAYtE,EAAIkF,UAAYlF,EAAIkF,eAChE,OAAAD,EAAA,IAAI,SAAA7B,GACF,OAAA2B,GAASA,EAAMI,OAAOC,MAClBhC,EAAKoB,QACH,SAAAxE,GACE,OAAAA,EAAIQ,KAAK6E,cAAcC,QAAQP,EAAMI,OAAOC,MAAMC,gBAAkB,GACnErF,EAAIO,MACHP,EAAIO,KAAKC,MACTR,EAAIO,KAAKC,KAAK6E,cAAcC,QAAQP,EAAMI,OAAOC,MAAMC,gBAAkB,KAE/EjC,WAOd,YAAA9D,YAAA,WACEE,KAAK2C,WAAWoD,OAChB/F,KAAK2C,WAAWqD,Y,sCAvFPC,GAAgB,0C,uBAAhBA,EAAgB,oD,MAAA,K,+kCFvB7B,mBACE,eAAqC,uBAAY,OACjD,gBACE,cACA,oBACF,OACF,OAEA,4BAEA,+B,iCAsBA,0C,MAxBW,kCAEG,2E,8rCEOd,KDJA,2B,8BAIaC,I,oDAAAA,IAAyB,SAH3B,CAAC,IAAaC,SAAS9D,IACtB,O,EAFZ,G,YELA,2B,8BAKa+D,I,oDAAAA,IAAkB,SAJpB,CAAC,IAAc,M,EAD1B","file":"8.8bec1b4f80600d6e6867.js","sourcesContent":["import { Component, ViewChild, ViewContainerRef, OnInit, OnDestroy, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'gl-banner',\r\n templateUrl: './banner.component.html',\r\n styleUrls: ['./banner.component.scss']\r\n})\r\nexport class BannerComponent implements OnInit, OnDestroy {\r\n @Input() bannerLink: string = '';\r\n @Input() bannerText: string = '';\r\n @Input() bannerLinkText: string = '';\r\n @Output() clicked: EventEmitter = new EventEmitter();\r\n constructor() {}\r\n\r\n ngOnInit() {}\r\n\r\n ngOnDestroy() {}\r\n\r\n public onAnyClick() {\r\n this.clicked.emit();\r\n }\r\n}\r\n","
\r\n \r\n {{ bannerText }}\r\n
\r\n
\r\n {{bannerLinkText}}\r\n \r\n
","\"{{\r\n\r\n
\r\n \r\n {{ app.card?.name || app.name }}\r\n
\r\n
\r\n\r\nRemove\r\nLearn More\r\nLaunch App","import { Component, Input, OnInit, HostBinding } from '@angular/core';\r\nimport { MatomoTracker } from 'ngx-matomo';\r\nimport { AnalyticsCategories, AppAnalyticsEvents, WidgetAnalyticsEvents } from 'src/app/models/analytics-events.model';\r\nimport { App } from 'src/app/models/app.model';\r\nimport { AuthService } from '../../auth/auth.service';\r\nimport { UIThemeService } from '../../core/ui-theme/ui-theme.service';\r\nimport { AppsService } from '../apps.service';\r\n\r\ndeclare var glas: any;\r\n\r\n@Component({\r\n selector: 'gl-app-favorite-thumbnail',\r\n templateUrl: './app-favorite-thumbnail.component.html',\r\n styleUrls: ['./app-favorite-thumbnail.component.scss']\r\n})\r\nexport class AppFavoriteThumbnailComponent {\r\n @HostBinding('class.fade-out') fadeOut = false;\r\n\r\n @Input() app: App = null;\r\n\r\n constructor(private readonly appsService: AppsService,\r\n private readonly matomoTracker: MatomoTracker,\r\n private readonly authService: AuthService,\r\n private readonly uiThemeService: UIThemeService) { }\r\n\r\n public removeFromFavorites() {\r\n this.fadeOut = true;\r\n this.appsService.removeFromFavorites(this.app).subscribe(\r\n () => { },\r\n error => (this.fadeOut = false)\r\n );\r\n this.matomoTracker.trackEvent(AnalyticsCategories.App, AppAnalyticsEvents.Unfavorite, (this.app.card?.name || this.app.name));\r\n }\r\n\r\n public trackLaunch() {\r\n this.matomoTracker.trackEvent(AnalyticsCategories.App, AppAnalyticsEvents.Open, (this.app.card?.name || this.app.name));\r\n }\r\n}\r\n","\"{{\r\n\r\n
\r\n \r\n {{ app.card?.name || app.name }}\r\n
\r\n
\r\n\r\n

{{ app.card.description }}

\r\n
\r\n Favorite\r\n Learn More\r\n Launch\r\n App\r\n
","import { Component, Input, OnInit, HostBinding } from '@angular/core';\r\nimport { MatomoTracker } from 'ngx-matomo';\r\nimport { Alert } from 'src/app/models/alert.model';\r\nimport { AnalyticsCategories, AppAnalyticsEvents } from 'src/app/models/analytics-events.model';\r\nimport { App } from 'src/app/models/app.model';\r\nimport { AuthService } from '../../auth/auth.service';\r\nimport { UIThemeService } from '../../core/ui-theme/ui-theme.service';\r\nimport { AlertService } from '../../shared/alerts/alert.service';\r\nimport { AppsService } from '../apps.service';\r\n\r\ndeclare var glas: any;\r\n\r\n@Component({\r\n selector: 'gl-app-thumbnail',\r\n templateUrl: './app-thumbnail.component.html',\r\n styleUrls: ['./app-thumbnail.component.scss']\r\n})\r\nexport class AppThumbnailComponent implements OnInit {\r\n @HostBinding('class.fade-out') fadeOut = false;\r\n @HostBinding('class.focused') focused = false;\r\n\r\n @Input() app: App = null;\r\n\r\n private wordCountLimit = 18;\r\n\r\n constructor(private readonly appsService: AppsService,\r\n private readonly alertService: AlertService,\r\n private readonly matomoTracker: MatomoTracker,\r\n private readonly authService: AuthService,\r\n private readonly uiThemeService: UIThemeService) { }\r\n\r\n ngOnInit() {\r\n if (this.app.card && this.app.card.description) {\r\n const words = this.app.card.description.split(' ');\r\n if (words.length > this.wordCountLimit) {\r\n this.app.card.description = `${words.slice(0, this.wordCountLimit - 1).join(' ')} …`;\r\n }\r\n }\r\n }\r\n\r\n public addToFavorites() {\r\n this.fadeOut = true;\r\n this.appsService.addToFavorites(this.app).subscribe(\r\n () => {\r\n this.authService.currentUser$.subscribe();\r\n },\r\n error => {\r\n this.fadeOut = false;\r\n this.alertService.info({\r\n title: 'You can only have up to 5 applications marked as favorite'\r\n } as Alert);\r\n }\r\n );\r\n\r\n this.matomoTracker.trackEvent(AnalyticsCategories.App, AppAnalyticsEvents.Favorite, (this.app.card?.name || this.app.name));\r\n }\r\n\r\n public trackLaunch() {\r\n this.matomoTracker.trackEvent(AnalyticsCategories.App, AppAnalyticsEvents.Open, (this.app.card?.name || this.app.name));\r\n }\r\n\r\n public onFocus(): void {\r\n this.focused = true;\r\n }\r\n\r\n public onFocusout(): void {\r\n this.focused = false;\r\n }\r\n}\r\n","
\r\n

Applications

\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n

Favorites ({{ data.favorites.length }})

\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n

Your Applications ({{ data.apps.length }})

\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n

Loading your applications ...

\r\n
\r\n
\r\n
","import { RouterModule, Routes } from '@angular/router';\r\nimport { NgModule } from '@angular/core';\r\n\r\n// Components\r\nimport { AppListComponent } from './app-list/app-list.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: AppListComponent\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AppDirectoryRoutingModule {}\r\n\r\nexport const routedComponents = [AppListComponent];\r\n","import { Component, AfterViewInit, ViewChild, ElementRef } from '@angular/core';\r\nimport {\r\n map,\r\n debounceTime,\r\n distinctUntilChanged,\r\n switchMap,\r\n startWith,\r\n takeUntil,\r\n distinctUntilKeyChanged\r\n} from 'rxjs/operators';\r\nimport { Observable, fromEvent, Subject, combineLatest } from 'rxjs';\r\nimport { MatomoTracker } from 'ngx-matomo';\r\nimport { AppsService } from '../apps.service';\r\nimport { App } from '../../../models/app.model';\r\nimport { ConfigService } from '../../core/config/config.service';\r\nimport { AuthService } from '../../auth/auth.service';\r\n\r\n@Component({\r\n selector: 'gl-app-list',\r\n templateUrl: './app-list.component.html',\r\n styleUrls: ['./app-list.component.scss']\r\n // changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AppListComponent implements AfterViewInit {\r\n private bannerDismissKey: string = 'TransPortDashboardBannerDismissed';\r\n public apps$: Observable;\r\n public favorites$: Observable;\r\n public showBanner = false;\r\n public bannerLink = '';\r\n public bannerText = '';\r\n public bannerLinkText = '';\r\n\r\n @ViewChild('filterInput') filter: ElementRef;\r\n\r\n private destroyed$: Subject = new Subject();\r\n\r\n constructor(\r\n private readonly configService: ConfigService,\r\n private readonly appsService: AppsService,\r\n private readonly authService: AuthService,\r\n private matomoTracker: MatomoTracker\r\n ) {\r\n this.matomoTracker.trackPageView('Applications');\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.refreshApps();\r\n }\r\n\r\n public bannerClicked() {\r\n localStorage.setItem(this.bannerDismissKey, 'true');\r\n this.showBanner = false;\r\n }\r\n\r\n private refreshApps() {\r\n this.apps$ = this.getApps();\r\n combineLatest(\r\n this.authService.oidcUser$.pipe(distinctUntilKeyChanged('access_token'), takeUntil(this.destroyed$)),\r\n this.authService.ssoUserInfo$.pipe(takeUntil(this.destroyed$)),\r\n this.apps$\r\n ).subscribe(([user, userInfo, apps]) => {\r\n let timezoneOffset = new Date().getTimezoneOffset();\r\n if (this.configService.config.recruitBannerCloseKey)\r\n {\r\n this.bannerDismissKey = this.configService.config.recruitBannerCloseKey;\r\n }\r\n if ((this.configService.config.recruitBannerShowInternal || userInfo.directory !== 'TPNYC') && localStorage.getItem(this.bannerDismissKey) !== 'true') {\r\n if (this.configService.config.showRecruitBannerAmerica && 540 >= timezoneOffset && timezoneOffset >= 180 && apps.length >= 2) {\r\n this.showBanner = true;\r\n this.bannerLink = this.configService.config.recruitBannerLinkAmerica;\r\n this.bannerText = this.configService.config.recruitBannerTextAmerica;\r\n this.bannerLinkText = this.configService.config.recruitBannerLinkTextAmerica;\r\n }\r\n if (this.configService.config.showRecruitBannerEurope && 0 >= timezoneOffset && timezoneOffset >= -180 && apps.length >= 2) {\r\n this.showBanner = true;\r\n this.bannerLink = this.configService.config.recruitBannerLinkEurope;\r\n this.bannerText = this.configService.config.recruitBannerTextEurope;\r\n this.bannerLinkText = this.configService.config.recruitBannerLinkTextEurope;\r\n }\r\n }\r\n });\r\n this.favorites$ = this.getApps(true);\r\n }\r\n\r\n private getApps(favorites: boolean = false): Observable {\r\n return fromEvent(this.filter.nativeElement, 'keyup').pipe(\r\n startWith(undefined),\r\n debounceTime(150),\r\n distinctUntilChanged(),\r\n switchMap((input: any) =>\r\n this.appsService.getAll().pipe(\r\n map(apps => apps.filter(app => (favorites ? app.favorite : !app.favorite))),\r\n map(apps =>\r\n input && input.target.value\r\n ? apps.filter(\r\n app =>\r\n app.name.toLowerCase().indexOf(input.target.value.toLowerCase()) > -1 ||\r\n (app.card &&\r\n app.card.name &&\r\n app.card.name.toLowerCase().indexOf(input.target.value.toLowerCase()) > -1)\r\n )\r\n : apps\r\n )\r\n )\r\n )\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyed$.next();\r\n this.destroyed$.complete();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { routedComponents, AppDirectoryRoutingModule } from './app-directory.routing';\r\nimport { AppListComponent } from './app-list/app-list.component';\r\nimport { AppThumbnailComponent } from './app-thumbnail/app-thumbnail.component';\r\nimport { AppFavoriteThumbnailComponent } from './app-favorite-thumbnail/app-favorite-thumbnail.component';\r\nimport { SharedModule } from '../shared/shared.module';\r\n\r\n@NgModule({\r\n imports: [SharedModule, AppDirectoryRoutingModule],\r\n declarations: [AppListComponent, AppThumbnailComponent, AppFavoriteThumbnailComponent, routedComponents],\r\n entryComponents: []\r\n})\r\nexport class AppDirectoryModule {}\r\n"],"sourceRoot":"webpack:///"}