{"version":3,"file":"723.50047d4198ceeb16.js","mappings":"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","names":["RecommendationService","constructor","httpClient","utilityService","this","baseUrl","environment","apiUrl","getQuickReads","libraryId","pageNum","itemsPerPage","params","HttpParams","addPaginationIfExists","get","observe","pipe","map","response","createPaginatedResult","getQuickCatchupReads","getHighlyRated","getRediscover","getMoreIn","genreId","t","i0","i1","i2","core","Yz7","factory","ɵfac","providedIn","t_r1","LibraryRecommendedComponent_ng_container_0_ng_container_1_p_1_Template","all_r9","length","$event","_r18","ctx_r17","reloadInProgress","ctx_r19","item_r15","ctx_r14","LibraryRecommendedComponent_ng_container_0_ng_container_3_ng_template_2_Template","onDeck_r12","_r27","ctx_r26","ctx_r28","item_r24","ctx_r23","LibraryRecommendedComponent_ng_container_0_ng_container_5_ng_template_2_Template","quickReads_r21","_r36","ctx_r35","ctx_r37","item_r33","ctx_r32","LibraryRecommendedComponent_ng_container_0_ng_container_7_ng_template_2_Template","quickCatchups_r30","_r45","ctx_r44","ctx_r46","item_r42","ctx_r41","LibraryRecommendedComponent_ng_container_0_ng_container_9_ng_template_2_Template","highlyRated_r39","_r54","ctx_r53","ctx_r55","item_r51","ctx_r50","LibraryRecommendedComponent_ng_container_0_ng_container_11_ng_template_2_Template","rediscover_r48","_r66","ctx_r65","ctx_r67","item_r63","ctx_r62","LibraryRecommendedComponent_ng_container_0_ng_container_13_ng_container_1_ng_container_1_ng_template_2_Template","moreIn_r59","_c0","genre_r57","title","LibraryRecommendedComponent_ng_container_0_ng_container_13_ng_container_1_ng_container_1_Template","LibraryRecommendedComponent_ng_container_0_ng_container_13_ng_container_1_Template","ctx_r8","moreIn$","LibraryRecommendedComponent_ng_container_0_ng_container_1_Template","LibraryRecommendedComponent_ng_container_0_ng_container_3_Template","LibraryRecommendedComponent_ng_container_0_ng_container_5_Template","LibraryRecommendedComponent_ng_container_0_ng_container_7_Template","LibraryRecommendedComponent_ng_container_0_ng_container_9_Template","LibraryRecommendedComponent_ng_container_0_ng_container_11_Template","LibraryRecommendedComponent_ng_container_0_ng_container_13_Template","ctx_r0","all$","onDeck$","quickReads$","quickCatchups$","highlyRated$","rediscover$","genre$","LibraryRecommendedComponent","recommendationService","seriesService","metadataService","destroyRef","inject","DestroyRef","ngOnInit","takeUntilDestroyed","p","result","shareReplay","getOnDeck","getAllGenres","genres","Math","floor","random","subscribe","genre","id","merge","series","Number","isInteger","seriesObj","pagesRead","pages","filter","includes","i3","Xpm","selectors","inputs","standalone","features","decls","vars","consts","template","rf","ctx","LibraryRecommendedComponent_ng_container_0_Template","NgIf","CarouselReelComponent","SeriesCardComponent","AsyncPipe","TranslocoDirective","changeDetection","ctx_r7","_r14","ctx_r13","loadPage","position_r12","idx","ctx_r15","bulkSelectionService","handleCardSelection","item_r11","ctx_r10","isCardSelected","_r17","ctx_r16","updateFilter","LibraryDetailComponent_ng_container_0_li_9_ng_template_8_ng_container_1_ng_template_2_Template","loadingSeries","pagination","filterSettings","trackByIdentity","filterOpen","jumpKeys","refresh","LibraryDetailComponent_ng_container_0_li_9_ng_template_8_ng_container_0_Template","LibraryDetailComponent_ng_container_0_li_9_ng_template_8_ng_container_1_Template","tab_r5","LibraryDetailComponent_ng_container_0_li_9_ng_template_8_Template","icon","ctx_r4","totalItems","_r22","ctx_r21","emit","performAction","ctx_r24","active","LibraryDetailComponent_ng_container_0_li_9_Template","LibraryDetailComponent_ng_container_0_h6_10_Template","filterActive","actions","libraryName","tabs","fragment","bulkActionCallback","_r2","LibraryDetailComponent","route","router","libraryService","titleService","actionFactoryService","actionService","hubService","navService","filterUtilityService","filterV2","undefined","FilterSettings","EventEmitter","translocoService","TranslocoService","MetadataService","cdRef","ChangeDetectorRef","action","data","selectedSeriesIndices","getSelectedCardsForSource","selectedSeries","index","Action","AddToReadingList","addMultipleSeriesToReadingList","success","deselectAll","markForCheck","AddToWantToReadList","addMultipleSeriesToWantToReadList","s","RemoveFromWantToReadList","removeMultipleSeriesFromWantToReadList","AddToCollection","addMultipleSeriesToCollectionTag","MarkAsRead","markMultipleSeriesAsRead","MarkAsUnread","markMultipleSeriesAsUnread","Delete","deleteMultipleSeries","successful","item","name","localizedName","routeId","snapshot","paramMap","getLibraryActions","handleAction","bind","routeReuseStrategy","shouldReuseRoute","parseInt","getLibraryNames","take","names","setTitle","getJumpBar","barDetails","filterPresetsFromUrlV2","statements","stmt","field","FilterField","Libraries","push","value","comparison","FilterComparison","Equal","filterActiveCheck","createSeriesV2Filter","presetsV2","navigateByUrl","messages$","event","EVENTS","SeriesAdded","seriesAdded","payload","deepEqual","getSeries","seriesId","sObj","sort","s1","s2","sortName","SeriesRemoved","seriesRemoved","handleKeypress","key","KEY_CODES","SHIFT","isShiftDown","handleKeyUp","library","_this","_asyncToGenerator","lib","Scan","scanLibrary","RefreshMetadata","refreshMetadata","Edit","editLibrary","callback","isFirst","updateUrlFromFilterV2","getSeriesForLibraryV2","window","scrollTo","seriesClicked","navigate","i4","i5","i6","i7","i8","i9","i10","i11","hostBindings","LibraryDetailComponent_ng_container_0_Template","SideNavCompanionBarComponent","CardActionablesComponent","NgbNav","NgFor","NgbNavItem","NgbNavItemRole","NgbNavLink","NgbNavContent","CardDetailLayoutComponent","BulkOperationsComponent","NgbNavOutlet","DecimalPipe","SentenceCasePipe","styles","routes","path","runGuardsAndResolvers","canActivate","AuthGuard","LibraryAccessGuard","component","LibraryDetailRoutingModule","oAB","cJS","RouterModule","forChild","LibraryDetailModule","CommonModule","NgbNavModule"],"sourceRoot":"webpack:///","sources":["./src/app/_services/recommendation.service.ts","./src/app/library-detail/library-recommended/library-recommended.component.html","./src/app/library-detail/library-recommended/library-recommended.component.ts","./src/app/library-detail/library-detail.component.html","./src/app/library-detail/library-detail.component.ts","./src/app/library-detail/library-detail-routing.module.ts","./src/app/library-detail/library-detail.module.ts"],"sourcesContent":["import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { map } from 'rxjs';\nimport { environment } from 'src/environments/environment';\nimport { UtilityService } from '../shared/_services/utility.service';\nimport { PaginatedResult } from '../_models/pagination';\nimport { Series } from '../_models/series';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RecommendationService {\n\n private baseUrl = environment.apiUrl;\n\n constructor(private httpClient: HttpClient, private utilityService: UtilityService) { }\n\n getQuickReads(libraryId: number, pageNum?: number, itemsPerPage?: number) {\n let params = new HttpParams();\n params = this.utilityService.addPaginationIfExists(params, pageNum, itemsPerPage);\n return this.httpClient.get>(this.baseUrl + 'recommended/quick-reads?libraryId=' + libraryId, {observe: 'response', params})\n .pipe(map(response => this.utilityService.createPaginatedResult(response)));\n }\n\n getQuickCatchupReads(libraryId: number, pageNum?: number, itemsPerPage?: number) {\n let params = new HttpParams();\n params = this.utilityService.addPaginationIfExists(params, pageNum, itemsPerPage);\n return this.httpClient.get>(this.baseUrl + 'recommended/quick-catchup-reads?libraryId=' + libraryId, {observe: 'response', params})\n .pipe(map(response => this.utilityService.createPaginatedResult(response)));\n }\n\n getHighlyRated(libraryId: number, pageNum?: number, itemsPerPage?: number) {\n let params = new HttpParams();\n params = this.utilityService.addPaginationIfExists(params, pageNum, itemsPerPage);\n return this.httpClient.get>(this.baseUrl + 'recommended/highly-rated?libraryId=' + libraryId, {observe: 'response', params})\n .pipe(map(response => this.utilityService.createPaginatedResult(response)));\n }\n\n getRediscover(libraryId: number, pageNum?: number, itemsPerPage?: number) {\n let params = new HttpParams();\n params = this.utilityService.addPaginationIfExists(params, pageNum, itemsPerPage);\n return this.httpClient.get>(this.baseUrl + 'recommended/rediscover?libraryId=' + libraryId, {observe: 'response', params})\n .pipe(map(response => this.utilityService.createPaginatedResult(response)));\n }\n\n getMoreIn(libraryId: number, genreId: number, pageNum?: number, itemsPerPage?: number) {\n let params = new HttpParams();\n params = this.utilityService.addPaginationIfExists(params, pageNum, itemsPerPage);\n return this.httpClient.get>(this.baseUrl + 'recommended/more-in?libraryId=' + libraryId + '&genreId=' + genreId, {observe: 'response', params})\n .pipe(map(response => this.utilityService.createPaginatedResult(response)));\n }\n}\n","\n\n \n

\n {{t('no-data')}}\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 1\">\n \n \n \n \n \n \n \n \n\n
\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n inject,\n Input,\n OnInit\n} from '@angular/core';\nimport { filter, map, merge, Observable, shareReplay } from 'rxjs';\nimport { Genre } from 'src/app/_models/metadata/genre';\nimport { Series } from 'src/app/_models/series';\nimport { MetadataService } from 'src/app/_services/metadata.service';\nimport { RecommendationService } from 'src/app/_services/recommendation.service';\nimport { SeriesService } from 'src/app/_services/series.service';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport { SeriesCardComponent } from '../../cards/series-card/series-card.component';\nimport { CarouselReelComponent } from '../../carousel/_components/carousel-reel/carousel-reel.component';\nimport { NgIf, AsyncPipe } from '@angular/common';\nimport {TranslocoDirective} from \"@ngneat/transloco\";\n\n@Component({\n selector: 'app-library-recommended',\n templateUrl: './library-recommended.component.html',\n styleUrls: ['./library-recommended.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, CarouselReelComponent, SeriesCardComponent, AsyncPipe, TranslocoDirective]\n})\nexport class LibraryRecommendedComponent implements OnInit {\n\n @Input() libraryId: number = 0;\n private readonly destroyRef = inject(DestroyRef);\n\n quickReads$!: Observable;\n quickCatchups$!: Observable;\n highlyRated$!: Observable;\n onDeck$!: Observable;\n rediscover$!: Observable;\n moreIn$!: Observable;\n genre$!: Observable;\n\n all$!: Observable;\n\n constructor(private recommendationService: RecommendationService, private seriesService: SeriesService,\n private metadataService: MetadataService) { }\n\n ngOnInit(): void {\n\n this.quickReads$ = this.recommendationService.getQuickReads(this.libraryId, 0, 30)\n .pipe(takeUntilDestroyed(this.destroyRef), map(p => p.result), shareReplay());\n\n this.quickCatchups$ = this.recommendationService.getQuickCatchupReads(this.libraryId, 0, 30)\n .pipe(takeUntilDestroyed(this.destroyRef), map(p => p.result), shareReplay());\n\n this.highlyRated$ = this.recommendationService.getHighlyRated(this.libraryId, 0, 30)\n .pipe(takeUntilDestroyed(this.destroyRef), map(p => p.result), shareReplay());\n\n this.rediscover$ = this.recommendationService.getRediscover(this.libraryId, 0, 30)\n .pipe(takeUntilDestroyed(this.destroyRef), map(p => p.result), shareReplay());\n\n this.onDeck$ = this.seriesService.getOnDeck(this.libraryId, 0, 30)\n .pipe(takeUntilDestroyed(this.destroyRef), map(p => p.result), shareReplay());\n\n this.genre$ = this.metadataService.getAllGenres([this.libraryId]).pipe(\n takeUntilDestroyed(this.destroyRef),\n map(genres => genres[Math.floor(Math.random() * genres.length)]),\n shareReplay()\n );\n this.genre$.subscribe(genre => {\n this.moreIn$ = this.recommendationService.getMoreIn(this.libraryId, genre.id, 0, 30).pipe(takeUntilDestroyed(this.destroyRef), map(p => p.result), shareReplay());\n });\n\n this.all$ = merge(this.quickReads$, this.quickCatchups$, this.highlyRated$, this.rediscover$, this.onDeck$, this.genre$).pipe(takeUntilDestroyed(this.destroyRef));\n }\n\n\n reloadInProgress(series: Series | number) {\n if (Number.isInteger(series)) {\n if (!series) {return;}\n }\n // If the update to Series doesn't affect the requirement to be in this stream, then ignore update request\n const seriesObj = (series as Series);\n if (seriesObj.pagesRead !== seriesObj.pages && seriesObj.pagesRead !== 0) {\n return;\n }\n\n this.quickReads$ = this.quickReads$.pipe(filter(series => !series.includes(seriesObj)));\n this.quickCatchups$ = this.quickCatchups$.pipe(filter(series => !series.includes(seriesObj)));\n }\n\n}\n","\n \n

\n \n {{libraryName}}\n

\n
\n \n
\n
\n
{{t('common.series-count', {num: pagination.totalItems | number})}}
\n \n
\n\n
\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n EventEmitter,\n HostListener,\n inject,\n OnInit\n} from '@angular/core';\nimport {Title} from '@angular/platform-browser';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {take} from 'rxjs/operators';\nimport {BulkSelectionService} from '../cards/bulk-selection.service';\nimport {KEY_CODES, UtilityService} from '../shared/_services/utility.service';\nimport {SeriesAddedEvent} from '../_models/events/series-added-event';\nimport {Library} from '../_models/library';\nimport {Pagination} from '../_models/pagination';\nimport {Series} from '../_models/series';\nimport {FilterEvent} from '../_models/metadata/series-filter';\nimport {Action, ActionFactoryService, ActionItem} from '../_services/action-factory.service';\nimport {ActionService} from '../_services/action.service';\nimport {LibraryService} from '../_services/library.service';\nimport {EVENTS, MessageHubService} from '../_services/message-hub.service';\nimport {SeriesService} from '../_services/series.service';\nimport {NavService} from '../_services/nav.service';\nimport {FilterUtilitiesService} from '../shared/_services/filter-utilities.service';\nimport {FilterSettings} from '../metadata-filter/filter-settings';\nimport {JumpKey} from '../_models/jumpbar/jump-key';\nimport {SeriesRemovedEvent} from '../_models/events/series-removed-event';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport {SentenceCasePipe} from '../pipe/sentence-case.pipe';\nimport {BulkOperationsComponent} from '../cards/bulk-operations/bulk-operations.component';\nimport {SeriesCardComponent} from '../cards/series-card/series-card.component';\nimport {CardDetailLayoutComponent} from '../cards/card-detail-layout/card-detail-layout.component';\nimport {LibraryRecommendedComponent} from './library-recommended/library-recommended.component';\nimport {DecimalPipe, NgFor, NgIf} from '@angular/common';\nimport {NgbNav, NgbNavContent, NgbNavItem, NgbNavItemRole, NgbNavLink, NgbNavOutlet} from '@ng-bootstrap/ng-bootstrap';\nimport {\n SideNavCompanionBarComponent\n} from '../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component';\nimport {TranslocoDirective, TranslocoService} from \"@ngneat/transloco\";\nimport {SeriesFilterV2} from \"../_models/metadata/v2/series-filter-v2\";\nimport {MetadataService} from \"../_services/metadata.service\";\nimport {FilterComparison} from \"../_models/metadata/v2/filter-comparison\";\nimport {FilterField} from \"../_models/metadata/v2/filter-field\";\nimport {CardActionablesComponent} from \"../_single-module/card-actionables/card-actionables.component\";\n\n@Component({\n selector: 'app-library-detail',\n templateUrl: './library-detail.component.html',\n styleUrls: ['./library-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [SideNavCompanionBarComponent, CardActionablesComponent, NgbNav, NgFor, NgbNavItem, NgbNavItemRole, NgbNavLink, NgbNavContent, NgIf, LibraryRecommendedComponent, CardDetailLayoutComponent, SeriesCardComponent, BulkOperationsComponent, NgbNavOutlet, DecimalPipe, SentenceCasePipe, TranslocoDirective]\n})\nexport class LibraryDetailComponent implements OnInit {\n\n libraryId!: number;\n libraryName = '';\n series: Series[] = [];\n loadingSeries = false;\n pagination!: Pagination;\n actions: ActionItem[] = [];\n filterV2: SeriesFilterV2 | undefined = undefined;\n filterSettings: FilterSettings = new FilterSettings();\n filterOpen: EventEmitter = new EventEmitter();\n filterActive: boolean = false;\n filterActiveCheck!: SeriesFilterV2;\n refresh: EventEmitter = new EventEmitter();\n\n jumpKeys: Array = [];\n\n translocoService = inject(TranslocoService);\n\n tabs: Array<{title: string, fragment: string, icon: string}> = [\n {title: 'library-tab', fragment: '', icon: 'fa-landmark'},\n {title: 'recommended-tab', fragment: 'recommended', icon: 'fa-award'},\n ];\n active = this.tabs[0];\n private readonly destroyRef = inject(DestroyRef);\n private readonly metadataService = inject(MetadataService);\n private readonly cdRef = inject(ChangeDetectorRef);\n\n\n bulkActionCallback = (action: ActionItem, data: any) => {\n const selectedSeriesIndices = this.bulkSelectionService.getSelectedCardsForSource('series');\n const selectedSeries = this.series.filter((series, index: number) => selectedSeriesIndices.includes(index + ''));\n\n switch (action.action) {\n case Action.AddToReadingList:\n this.actionService.addMultipleSeriesToReadingList(selectedSeries, (success) => {\n if (success) this.bulkSelectionService.deselectAll();\n this.cdRef.markForCheck();\n });\n break;\n case Action.AddToWantToReadList:\n this.actionService.addMultipleSeriesToWantToReadList(selectedSeries.map(s => s.id), () => {\n this.bulkSelectionService.deselectAll();\n this.cdRef.markForCheck();\n });\n break;\n case Action.RemoveFromWantToReadList:\n this.actionService.removeMultipleSeriesFromWantToReadList(selectedSeries.map(s => s.id), () => {\n this.bulkSelectionService.deselectAll();\n this.cdRef.markForCheck();\n });\n break;\n case Action.AddToCollection:\n this.actionService.addMultipleSeriesToCollectionTag(selectedSeries, (success) => {\n if (success) this.bulkSelectionService.deselectAll();\n this.cdRef.markForCheck();\n });\n break;\n case Action.MarkAsRead:\n this.actionService.markMultipleSeriesAsRead(selectedSeries, () => {\n this.bulkSelectionService.deselectAll();\n this.loadPage();\n });\n\n break;\n case Action.MarkAsUnread:\n this.actionService.markMultipleSeriesAsUnread(selectedSeries, () => {\n this.bulkSelectionService.deselectAll();\n this.loadPage();\n });\n break;\n case Action.Delete:\n this.actionService.deleteMultipleSeries(selectedSeries, (successful) => {\n if (!successful) return;\n this.bulkSelectionService.deselectAll();\n this.loadPage();\n });\n break;\n }\n }\n\n constructor(private route: ActivatedRoute, private router: Router, private seriesService: SeriesService,\n private libraryService: LibraryService, private titleService: Title, private actionFactoryService: ActionFactoryService,\n private actionService: ActionService, public bulkSelectionService: BulkSelectionService, private hubService: MessageHubService,\n private utilityService: UtilityService, public navService: NavService, private filterUtilityService: FilterUtilitiesService) {\n const routeId = this.route.snapshot.paramMap.get('libraryId');\n if (routeId === null) {\n this.router.navigateByUrl('/libraries');\n return;\n }\n\n this.actions = this.actionFactoryService.getLibraryActions(this.handleAction.bind(this));\n this.router.routeReuseStrategy.shouldReuseRoute = () => false;\n this.libraryId = parseInt(routeId, 10);\n this.libraryService.getLibraryNames().pipe(take(1)).subscribe(names => {\n this.libraryName = names[this.libraryId];\n this.titleService.setTitle('Kavita - ' + this.libraryName);\n this.cdRef.markForCheck();\n });\n\n this.libraryService.getJumpBar(this.libraryId).subscribe(barDetails => {\n this.jumpKeys = barDetails;\n this.cdRef.markForCheck();\n });\n\n this.actions = this.actionFactoryService.getLibraryActions(this.handleAction.bind(this));\n\n this.pagination = this.filterUtilityService.pagination(this.route.snapshot);\n this.filterV2 = this.filterUtilityService.filterPresetsFromUrlV2(this.route.snapshot);\n\n if (this.filterV2.statements.filter(stmt => stmt.field === FilterField.Libraries).length === 0) {\n this.filterV2!.statements.push({field: FilterField.Libraries, value: this.libraryId + '', comparison: FilterComparison.Equal});\n }\n\n this.filterActiveCheck = this.filterUtilityService.createSeriesV2Filter();\n this.filterActiveCheck.statements.push({field: FilterField.Libraries, value: this.libraryId + '', comparison: FilterComparison.Equal});\n\n this.filterSettings.presetsV2 = this.filterV2;\n\n this.cdRef.markForCheck();\n }\n\n\n ngOnInit(): void {\n this.hubService.messages$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n if (event.event === EVENTS.SeriesAdded) {\n const seriesAdded = event.payload as SeriesAddedEvent;\n if (seriesAdded.libraryId !== this.libraryId) return;\n if (!this.utilityService.deepEqual(this.filterV2, this.filterActiveCheck)) {\n this.loadPage();\n return;\n }\n this.seriesService.getSeries(seriesAdded.seriesId).subscribe(s => {\n if (this.series.filter(sObj => s.id === sObj.id).length > 0) return;\n this.series = [...this.series, s].sort((s1: Series, s2: Series) => {\n if (s1.sortName < s2.sortName) return -1;\n if (s1.sortName > s2.sortName) return 1;\n return 0;\n });\n this.pagination.totalItems++;\n this.cdRef.markForCheck();\n this.refresh.emit();\n });\n\n\n } else if (event.event === EVENTS.SeriesRemoved) {\n const seriesRemoved = event.payload as SeriesRemovedEvent;\n if (seriesRemoved.libraryId !== this.libraryId) return;\n if (!this.utilityService.deepEqual(this.filterV2, this.filterActiveCheck)) {\n this.loadPage();\n return;\n }\n\n this.series = this.series.filter(s => s.id != seriesRemoved.seriesId);\n this.pagination.totalItems--;\n this.cdRef.markForCheck();\n this.refresh.emit();\n }\n });\n }\n\n\n @HostListener('document:keydown.shift', ['$event'])\n handleKeypress(event: KeyboardEvent) {\n if (event.key === KEY_CODES.SHIFT) {\n this.bulkSelectionService.isShiftDown = true;\n }\n }\n\n @HostListener('document:keyup.shift', ['$event'])\n handleKeyUp(event: KeyboardEvent) {\n if (event.key === KEY_CODES.SHIFT) {\n this.bulkSelectionService.isShiftDown = false;\n }\n }\n\n async handleAction(action: ActionItem, library: Library) {\n let lib: Partial = library;\n if (library === undefined) {\n lib = {id: this.libraryId, name: this.libraryName};\n }\n switch (action.action) {\n case(Action.Scan):\n await this.actionService.scanLibrary(lib);\n break;\n case(Action.RefreshMetadata):\n await this.actionService.refreshMetadata(lib);\n break;\n case(Action.Edit):\n this.actionService.editLibrary(lib);\n break;\n default:\n break;\n }\n }\n\n\n\n performAction(action: ActionItem) {\n if (typeof action.callback === 'function') {\n action.callback(action, undefined);\n }\n }\n\n updateFilter(data: FilterEvent) {\n if (data.filterV2 === undefined) return;\n this.filterV2 = data.filterV2;\n\n if (!data.isFirst) {\n this.filterUtilityService.updateUrlFromFilterV2(this.pagination, this.filterV2);\n }\n\n this.loadPage();\n }\n\n loadPage() {\n this.loadingSeries = true;\n this.filterActive = !this.utilityService.deepEqual(this.filterV2, this.filterActiveCheck);\n this.cdRef.markForCheck();\n\n this.seriesService.getSeriesForLibraryV2(undefined, undefined, this.filterV2)\n .subscribe(series => {\n this.series = series.result;\n this.pagination = series.pagination;\n this.loadingSeries = false;\n this.cdRef.markForCheck();\n window.scrollTo(0, 0);\n });\n }\n\n seriesClicked(series: Series) {\n this.router.navigate(['library', this.libraryId, 'series', series.id]);\n }\n\n trackByIdentity = (index: number, item: Series) => `${item.id}_${item.name}_${item.localizedName}_${item.pagesRead}`;\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { AuthGuard } from '../_guards/auth.guard';\nimport { LibraryAccessGuard } from '../_guards/library-access.guard';\nimport { LibraryDetailComponent } from './library-detail.component';\n\n\nconst routes: Routes = [\n {\n path: ':libraryId', \n runGuardsAndResolvers: 'always',\n canActivate: [AuthGuard, LibraryAccessGuard],\n component: LibraryDetailComponent\n },\n {\n path: '', \n component: LibraryDetailComponent\n }\n];\n\n\n@NgModule({\n imports: [RouterModule.forChild(routes), ],\n exports: [RouterModule]\n})\nexport class LibraryDetailRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LibraryDetailComponent } from './library-detail.component';\nimport { NgbNavModule } from '@ng-bootstrap/ng-bootstrap';\nimport { LibraryDetailRoutingModule } from './library-detail-routing.module';\nimport { LibraryRecommendedComponent } from './library-recommended/library-recommended.component';\n\nimport {SentenceCasePipe} from \"../pipe/sentence-case.pipe\";\nimport {CardDetailLayoutComponent} from \"../cards/card-detail-layout/card-detail-layout.component\";\nimport {SeriesCardComponent} from \"../cards/series-card/series-card.component\";\nimport {BulkOperationsComponent} from \"../cards/bulk-operations/bulk-operations.component\";\nimport {\n SideNavCompanionBarComponent\n} from \"../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component\";\nimport {CardActionablesComponent} from \"../_single-module/card-actionables/card-actionables.component\";\n\n\n\n@NgModule({\n imports: [\n CommonModule,\n NgbNavModule,\n LibraryDetailRoutingModule,\n CardActionablesComponent,\n SentenceCasePipe,\n CardDetailLayoutComponent,\n SeriesCardComponent,\n BulkOperationsComponent,\n SideNavCompanionBarComponent,\n LibraryDetailComponent, LibraryRecommendedComponent\n]\n})\nexport class LibraryDetailModule { }\n"],"x_google_ignoreList":[]}