{ "version": 3, "sources": ["src/app/library-detail/library-detail.component.ts", "src/app/library-detail/library-detail.component.html", "src/app/_routes/library-detail-routing.module.ts"], "sourcesContent": ["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/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 '../_pipes/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 {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} 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\";\nimport {LoadingComponent} from \"../shared/loading/loading.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\n , CardDetailLayoutComponent, SeriesCardComponent, BulkOperationsComponent, NgbNavOutlet, DecimalPipe, SentenceCasePipe, TranslocoDirective, LoadingComponent]\n})\nexport class LibraryDetailComponent implements OnInit {\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly metadataService = inject(MetadataService);\n private readonly cdRef = inject(ChangeDetectorRef);\n\n libraryId!: number;\n libraryName = '';\n series: Series[] = [];\n loadingSeries = false;\n pagination: Pagination = {currentPage: 0, totalPages: 0, totalItems: 0, itemsPerPage: 0};\n actions: ActionItem[] = [];\n filter: 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 jumpKeys: Array = [];\n bulkLoader: boolean = false;\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\n\n bulkActionCallback = async (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 if (selectedSeries.length > 25) {\n this.bulkLoader = true;\n this.cdRef.markForCheck();\n }\n\n await this.actionService.deleteMultipleSeries(selectedSeries, (successful) => {\n this.bulkLoader = false;\n this.cdRef.markForCheck();\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('/home');\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.filterUtilityService.filterPresetsFromUrl(this.route.snapshot).subscribe(filter => {\n this.filter = filter;\n\n if (this.filter.statements.filter(stmt => stmt.field === FilterField.Libraries).length === 0) {\n this.filter!.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.filter;\n\n this.cdRef.markForCheck();\n });\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.filter, 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.filter, 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}; // BUG: We need the whole library for editLibrary\n this.libraryService.getLibrary(this.libraryId).subscribe(async library => {\n switch (action.action) {\n case(Action.Scan):\n await this.actionService.scanLibrary(library);\n break;\n case(Action.RefreshMetadata):\n await this.actionService.refreshMetadata(library);\n break;\n case(Action.Edit):\n this.actionService.editLibrary(library);\n break;\n default:\n break;\n }\n });\n return\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.filter = data.filterV2;\n\n if (data.isFirst) {\n this.loadPage();\n return;\n }\n\n this.filterUtilityService.updateUrlFromFilter(this.filter).subscribe((encodedFilter) => {\n this.loadPage();\n });\n }\n\n loadPage() {\n this.loadingSeries = true;\n this.filterActive = !this.utilityService.deepEqual(this.filter, this.filterActiveCheck);\n this.cdRef.markForCheck();\n\n this.seriesService.getSeriesForLibraryV2(undefined, undefined, this.filter)\n .subscribe(series => {\n this.series = series.result;\n this.pagination = series.pagination;\n this.loadingSeries = false;\n this.cdRef.markForCheck();\n });\n }\n\n trackByIdentity = (index: number, item: Series) => `${item.id}_${item.name}_${item.localizedName}_${item.pagesRead}`;\n}\n", "\n \n

\n \n {{libraryName}}\n

\n
{{t('common.series-count', {num: pagination.totalItems | number})}}
\n
\n \n \n \n \n \n \n \n\n\n
\n", "import { Routes } from '@angular/router';\nimport { AuthGuard } from '../_guards/auth.guard';\nimport { LibraryAccessGuard } from '../_guards/library-access.guard';\nimport { LibraryDetailComponent } from '../library-detail/library-detail.component';\n\n\nexport const routes: Routes = [\n {\n path: ':libraryId',\n runGuardsAndResolvers: 'always',\n canActivate: [AuthGuard, LibraryAccessGuard],\n component: LibraryDetailComponent\n },\n {\n path: '',\n runGuardsAndResolvers: 'always',\n canActivate: [AuthGuard, LibraryAccessGuard],\n component: LibraryDetailComponent\n }\n];\n"], "mappings": "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", "names": ["\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275advance", "\u0275\u0275textInterpolate1", "t_r3", "\u0275\u0275pureFunction1", "_c0", "\u0275\u0275pipeBind1", "ctx_r1", "pagination", "totalItems", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r5", "\u0275\u0275nextContext", "\u0275\u0275resetView", "loadPage", "$event", "position_r6", "idx", "bulkSelectionService", "handleCardSelection", "series", "length", "\u0275\u0275property", "item_r7", "libraryId", "isCardSelected", "_r4", "updateFilter", "\u0275\u0275template", "LibraryDetailComponent_ng_container_0_app_card_detail_layout_9_ng_template_1_Template", "\u0275\u0275templateRefExtractor", "loadingSeries", "filterSettings", "trackByIdentity", "filterOpen", "jumpKeys", "refresh", "\u0275\u0275elementContainerStart", "_r1", "emit", "performAction", "LibraryDetailComponent_ng_container_0_h6_6_Template", "\u0275\u0275element", "LibraryDetailComponent_ng_container_0_app_card_detail_layout_9_Template", "filterActive", "actions", "\u0275\u0275textInterpolate", "libraryName", "active", "fragment", "bulkActionCallback", "bulkLoader", "filter", "LibraryDetailComponent", "constructor", "route", "router", "seriesService", "libraryService", "titleService", "actionFactoryService", "actionService", "hubService", "utilityService", "navService", "filterUtilityService", "destroyRef", "inject", "DestroyRef", "metadataService", "MetadataService", "cdRef", "ChangeDetectorRef", "currentPage", "totalPages", "itemsPerPage", "undefined", "FilterSettings", "EventEmitter", "tabs", "title", "icon", "action", "data", "__async", "selectedSeriesIndices", "getSelectedCardsForSource", "selectedSeries", "index", "includes", "Action", "AddToReadingList", "addMultipleSeriesToReadingList", "success", "deselectAll", "markForCheck", "AddToWantToReadList", "addMultipleSeriesToWantToReadList", "map", "s", "id", "RemoveFromWantToReadList", "removeMultipleSeriesFromWantToReadList", "AddToCollection", "addMultipleSeriesToCollectionTag", "MarkAsRead", "markMultipleSeriesAsRead", "MarkAsUnread", "markMultipleSeriesAsUnread", "Delete", "deleteMultipleSeries", "successful", "item", "name", "localizedName", "pagesRead", "routeId", "snapshot", "paramMap", "get", "navigateByUrl", "getLibraryActions", "handleAction", "bind", "routeReuseStrategy", "shouldReuseRoute", "parseInt", "getLibraryNames", "pipe", "take", "subscribe", "names", "setTitle", "getJumpBar", "barDetails", "filterPresetsFromUrl", "statements", "stmt", "field", "FilterField", "Libraries", "push", "value", "comparison", "FilterComparison", "Equal", "filterActiveCheck", "createSeriesV2Filter", "presetsV2", "ngOnInit", "messages$", "takeUntilDestroyed", "event", "EVENTS", "SeriesAdded", "seriesAdded", "payload", "deepEqual", "getSeries", "seriesId", "sObj", "sort", "s1", "s2", "sortName", "SeriesRemoved", "seriesRemoved", "handleKeypress", "key", "KEY_CODES", "SHIFT", "isShiftDown", "handleKeyUp", "library", "lib", "getLibrary", "Scan", "scanLibrary", "RefreshMetadata", "refreshMetadata", "Edit", "editLibrary", "callback", "filterV2", "isFirst", "updateUrlFromFilter", "encodedFilter", "getSeriesForLibraryV2", "result", "\u0275\u0275directiveInject", "ActivatedRoute", "Router", "SeriesService", "LibraryService", "Title", "ActionFactoryService", "ActionService", "BulkSelectionService", "MessageHubService", "UtilityService", "NavService", "FilterUtilitiesService", "selectors", "hostBindings", "rf", "ctx", "\u0275\u0275resolveDocument", "LibraryDetailComponent_ng_container_0_Template", "SideNavCompanionBarComponent", "CardActionablesComponent", "NgIf", "CardDetailLayoutComponent", "SeriesCardComponent", "BulkOperationsComponent", "DecimalPipe", "TranslocoDirective", "LoadingComponent", "styles", "changeDetection", "_LibraryDetailComponent", "routes", "path", "runGuardsAndResolvers", "canActivate", "AuthGuard", "LibraryAccessGuard", "component", "LibraryDetailComponent"] }