{ "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 {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n DestroyRef,\r\n EventEmitter,\r\n HostListener,\r\n inject,\r\n OnInit\r\n} from '@angular/core';\r\nimport {Title} from '@angular/platform-browser';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {take} from 'rxjs/operators';\r\nimport {BulkSelectionService} from '../cards/bulk-selection.service';\r\nimport {KEY_CODES, UtilityService} from '../shared/_services/utility.service';\r\nimport {SeriesAddedEvent} from '../_models/events/series-added-event';\r\nimport {Library} from '../_models/library/library';\r\nimport {Pagination} from '../_models/pagination';\r\nimport {Series} from '../_models/series';\r\nimport {FilterEvent} from '../_models/metadata/series-filter';\r\nimport {Action, ActionFactoryService, ActionItem} from '../_services/action-factory.service';\r\nimport {ActionService} from '../_services/action.service';\r\nimport {LibraryService} from '../_services/library.service';\r\nimport {EVENTS, MessageHubService} from '../_services/message-hub.service';\r\nimport {SeriesService} from '../_services/series.service';\r\nimport {NavService} from '../_services/nav.service';\r\nimport {FilterUtilitiesService} from '../shared/_services/filter-utilities.service';\r\nimport {FilterSettings} from '../metadata-filter/filter-settings';\r\nimport {JumpKey} from '../_models/jumpbar/jump-key';\r\nimport {SeriesRemovedEvent} from '../_models/events/series-removed-event';\r\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\r\nimport {BulkOperationsComponent} from '../cards/bulk-operations/bulk-operations.component';\r\nimport {SeriesCardComponent} from '../cards/series-card/series-card.component';\r\nimport {CardDetailLayoutComponent} from '../cards/card-detail-layout/card-detail-layout.component';\r\nimport {DecimalPipe} from '@angular/common';\r\nimport {\r\n SideNavCompanionBarComponent\r\n} from '../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component';\r\nimport {TranslocoDirective} from \"@jsverse/transloco\";\r\nimport {SeriesFilterV2} from \"../_models/metadata/v2/series-filter-v2\";\r\nimport {FilterComparison} from \"../_models/metadata/v2/filter-comparison\";\r\nimport {FilterField} from \"../_models/metadata/v2/filter-field\";\r\nimport {CardActionablesComponent} from \"../_single-module/card-actionables/card-actionables.component\";\r\nimport {LoadingComponent} from \"../shared/loading/loading.component\";\r\nimport {debounceTime, ReplaySubject, tap} from \"rxjs\";\r\n\r\n@Component({\r\n selector: 'app-library-detail',\r\n templateUrl: './library-detail.component.html',\r\n styleUrls: ['./library-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [SideNavCompanionBarComponent, CardActionablesComponent,\r\n CardDetailLayoutComponent, SeriesCardComponent, BulkOperationsComponent, DecimalPipe, TranslocoDirective, LoadingComponent]\r\n})\r\nexport class LibraryDetailComponent implements OnInit {\r\n\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly cdRef = inject(ChangeDetectorRef);\r\n private readonly route = inject(ActivatedRoute);\r\n private readonly router = inject(Router);\r\n private readonly seriesService = inject(SeriesService);\r\n private readonly libraryService = inject(LibraryService);\r\n private readonly titleService = inject(Title);\r\n private readonly actionFactoryService = inject(ActionFactoryService);\r\n private readonly actionService = inject(ActionService);\r\n private readonly hubService = inject(MessageHubService);\r\n private readonly utilityService = inject(UtilityService);\r\n private readonly filterUtilityService = inject(FilterUtilitiesService);\r\n public readonly navService = inject(NavService);\r\n public readonly bulkSelectionService = inject(BulkSelectionService);\r\n\r\n libraryId!: number;\r\n libraryName = '';\r\n series: Series[] = [];\r\n loadingSeries = false;\r\n pagination: Pagination = {currentPage: 0, totalPages: 0, totalItems: 0, itemsPerPage: 0};\r\n actions: ActionItem[] = [];\r\n filter: SeriesFilterV2 | undefined = undefined;\r\n filterSettings: FilterSettings = new FilterSettings();\r\n filterOpen: EventEmitter = new EventEmitter();\r\n filterActive: boolean = false;\r\n filterActiveCheck!: SeriesFilterV2;\r\n refresh: EventEmitter = new EventEmitter();\r\n jumpKeys: Array = [];\r\n bulkLoader: boolean = false;\r\n\r\n tabs: Array<{title: string, fragment: string, icon: string}> = [\r\n {title: 'library-tab', fragment: '', icon: 'fa-landmark'},\r\n {title: 'recommended-tab', fragment: 'recommended', icon: 'fa-award'},\r\n ];\r\n active = this.tabs[0];\r\n\r\n loadPageSource = new ReplaySubject(1);\r\n loadPage$ = this.loadPageSource.asObservable();\r\n\r\n bulkActionCallback = async (action: ActionItem, data: any) => {\r\n const selectedSeriesIndices = this.bulkSelectionService.getSelectedCardsForSource('series');\r\n const selectedSeries = this.series.filter((series, index: number) => selectedSeriesIndices.includes(index + ''));\r\n\r\n switch (action.action) {\r\n case Action.AddToReadingList:\r\n this.actionService.addMultipleSeriesToReadingList(selectedSeries, (success) => {\r\n if (success) this.bulkSelectionService.deselectAll();\r\n this.cdRef.markForCheck();\r\n });\r\n break;\r\n case Action.AddToWantToReadList:\r\n this.actionService.addMultipleSeriesToWantToReadList(selectedSeries.map(s => s.id), () => {\r\n this.bulkSelectionService.deselectAll();\r\n this.cdRef.markForCheck();\r\n });\r\n break;\r\n case Action.RemoveFromWantToReadList:\r\n this.actionService.removeMultipleSeriesFromWantToReadList(selectedSeries.map(s => s.id), () => {\r\n this.bulkSelectionService.deselectAll();\r\n this.cdRef.markForCheck();\r\n });\r\n break;\r\n case Action.AddToCollection:\r\n this.actionService.addMultipleSeriesToCollectionTag(selectedSeries, (success) => {\r\n if (success) this.bulkSelectionService.deselectAll();\r\n this.cdRef.markForCheck();\r\n });\r\n break;\r\n case Action.MarkAsRead:\r\n this.actionService.markMultipleSeriesAsRead(selectedSeries, () => {\r\n this.bulkSelectionService.deselectAll();\r\n this.loadPage();\r\n });\r\n\r\n break;\r\n case Action.MarkAsUnread:\r\n this.actionService.markMultipleSeriesAsUnread(selectedSeries, () => {\r\n this.bulkSelectionService.deselectAll();\r\n this.loadPage();\r\n });\r\n break;\r\n case Action.Delete:\r\n if (selectedSeries.length > 25) {\r\n this.bulkLoader = true;\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n await this.actionService.deleteMultipleSeries(selectedSeries, (successful) => {\r\n this.bulkLoader = false;\r\n this.cdRef.markForCheck();\r\n if (!successful) return;\r\n this.bulkSelectionService.deselectAll();\r\n this.loadPage();\r\n });\r\n break;\r\n }\r\n }\r\n\r\n\r\n constructor() {\r\n const routeId = this.route.snapshot.paramMap.get('libraryId');\r\n if (routeId === null) {\r\n this.router.navigateByUrl('/home');\r\n return;\r\n }\r\n\r\n this.actions = this.actionFactoryService.getLibraryActions(this.handleAction.bind(this));\r\n this.router.routeReuseStrategy.shouldReuseRoute = () => false;\r\n this.libraryId = parseInt(routeId, 10);\r\n this.libraryService.getLibraryNames().pipe(take(1)).subscribe(names => {\r\n this.libraryName = names[this.libraryId];\r\n this.titleService.setTitle('Kavita - ' + this.libraryName);\r\n this.cdRef.markForCheck();\r\n });\r\n\r\n this.libraryService.getJumpBar(this.libraryId).subscribe(barDetails => {\r\n this.jumpKeys = barDetails;\r\n this.cdRef.markForCheck();\r\n });\r\n\r\n this.actions = this.actionFactoryService.getLibraryActions(this.handleAction.bind(this));\r\n\r\n this.filterUtilityService.filterPresetsFromUrl(this.route.snapshot).subscribe(filter => {\r\n this.filter = filter;\r\n\r\n if (this.filter.statements.filter(stmt => stmt.field === FilterField.Libraries).length === 0) {\r\n this.filter!.statements.push({field: FilterField.Libraries, value: this.libraryId + '', comparison: FilterComparison.Equal});\r\n }\r\n\r\n this.filterActiveCheck = this.filterUtilityService.createSeriesV2Filter();\r\n this.filterActiveCheck.statements.push({field: FilterField.Libraries, value: this.libraryId + '', comparison: FilterComparison.Equal});\r\n\r\n this.filterSettings.presetsV2 = this.filter;\r\n\r\n this.loadPage$.pipe(takeUntilDestroyed(this.destroyRef), debounceTime(100), tap(_ => this.loadPage())).subscribe();\r\n\r\n this.cdRef.markForCheck();\r\n });\r\n }\r\n\r\n\r\n ngOnInit(): void {\r\n this.hubService.messages$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\r\n if (event.event === EVENTS.SeriesAdded) {\r\n const seriesAdded = event.payload as SeriesAddedEvent;\r\n if (seriesAdded.libraryId !== this.libraryId) return;\r\n if (!this.utilityService.deepEqual(this.filter, this.filterActiveCheck)) {\r\n this.loadPageSource.next(true);\r\n return;\r\n }\r\n this.seriesService.getSeries(seriesAdded.seriesId).subscribe(s => {\r\n if (this.series.filter(sObj => s.id === sObj.id).length > 0) return;\r\n this.series = [...this.series, s].sort((s1: Series, s2: Series) => {\r\n if (s1.sortName < s2.sortName) return -1;\r\n if (s1.sortName > s2.sortName) return 1;\r\n return 0;\r\n });\r\n this.pagination.totalItems++;\r\n this.cdRef.markForCheck();\r\n this.refresh.emit();\r\n });\r\n\r\n\r\n } else if (event.event === EVENTS.SeriesRemoved) {\r\n const seriesRemoved = event.payload as SeriesRemovedEvent;\r\n if (seriesRemoved.libraryId !== this.libraryId) return;\r\n if (!this.utilityService.deepEqual(this.filter, this.filterActiveCheck)) {\r\n this.loadPageSource.next(true);\r\n return;\r\n }\r\n\r\n this.series = this.series.filter(s => s.id != seriesRemoved.seriesId);\r\n this.pagination.totalItems--;\r\n this.cdRef.markForCheck();\r\n this.refresh.emit();\r\n }\r\n });\r\n }\r\n\r\n\r\n @HostListener('document:keydown.shift', ['$event'])\r\n handleKeypress(event: KeyboardEvent) {\r\n if (event.key === KEY_CODES.SHIFT) {\r\n this.bulkSelectionService.isShiftDown = true;\r\n }\r\n }\r\n\r\n @HostListener('document:keyup.shift', ['$event'])\r\n handleKeyUp(event: KeyboardEvent) {\r\n if (event.key === KEY_CODES.SHIFT) {\r\n this.bulkSelectionService.isShiftDown = false;\r\n }\r\n }\r\n\r\n async handleAction(action: ActionItem, library: Library) {\r\n let lib: Partial = library;\r\n if (library === undefined) {\r\n this.libraryService.getLibrary(this.libraryId).subscribe(async library => {\r\n switch (action.action) {\r\n case(Action.Scan):\r\n await this.actionService.scanLibrary(library);\r\n break;\r\n case(Action.RefreshMetadata):\r\n await this.actionService.refreshLibraryMetadata(library);\r\n break;\r\n case(Action.GenerateColorScape):\r\n await this.actionService.refreshLibraryMetadata(library, undefined, false);\r\n break;\r\n case (Action.Delete):\r\n await this.actionService.deleteLibrary(library, () => {\r\n this.loadPageSource.next(true);\r\n });\r\n break;\r\n case (Action.AnalyzeFiles):\r\n await this.actionService.analyzeFiles(library);\r\n break;\r\n case(Action.Edit):\r\n this.actionService.editLibrary(library);\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n return\r\n }\r\n switch (action.action) {\r\n case(Action.Scan):\r\n await this.actionService.scanLibrary(lib);\r\n break;\r\n case(Action.RefreshMetadata):\r\n await this.actionService.refreshLibraryMetadata(lib);\r\n break;\r\n case(Action.GenerateColorScape):\r\n await this.actionService.refreshLibraryMetadata(lib, undefined, false);\r\n break;\r\n case(Action.Edit):\r\n this.actionService.editLibrary(lib);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n\r\n\r\n performAction(action: ActionItem) {\r\n if (typeof action.callback === 'function') {\r\n action.callback(action, undefined);\r\n }\r\n }\r\n\r\n updateFilter(data: FilterEvent) {\r\n if (data.filterV2 === undefined) return;\r\n this.filter = data.filterV2;\r\n\r\n if (data.isFirst) {\r\n this.loadPageSource.next(true);\r\n return;\r\n }\r\n\r\n this.filterUtilityService.updateUrlFromFilter(this.filter).subscribe((encodedFilter) => {\r\n this.loadPageSource.next(true);\r\n });\r\n }\r\n\r\n loadPage() {\r\n this.loadingSeries = true;\r\n this.filterActive = !this.utilityService.deepEqual(this.filter, this.filterActiveCheck);\r\n this.cdRef.markForCheck();\r\n\r\n this.seriesService.getSeriesForLibraryV2(undefined, undefined, this.filter)\r\n .subscribe(series => {\r\n this.series = series.result;\r\n this.pagination = series.pagination;\r\n this.loadingSeries = false;\r\n this.cdRef.markForCheck();\r\n });\r\n }\r\n\r\n trackByIdentity = (index: number, item: Series) => `${item.id}_${item.name}_${item.localizedName}_${item.pagesRead}`;\r\n}\r\n", "
\r\n \r\n \r\n

\r\n {{libraryName}}\r\n \r\n

\r\n @if (active.fragment === '') {\r\n
{{t('common.series-count', {num: pagination.totalItems | number})}}
\r\n }\r\n\r\n
\r\n \r\n \r\n @if (filter) {\r\n \r\n \r\n \r\n \r\n \r\n }\r\n\r\n\r\n\r\n
\r\n
\r\n", "import { Routes } from '@angular/router';\r\nimport { AuthGuard } from '../_guards/auth.guard';\r\nimport { LibraryAccessGuard } from '../_guards/library-access.guard';\r\nimport { LibraryDetailComponent } from '../library-detail/library-detail.component';\r\n\r\n\r\nexport const routes: Routes = [\r\n {\r\n path: ':libraryId',\r\n runGuardsAndResolvers: 'always',\r\n canActivate: [AuthGuard, LibraryAccessGuard],\r\n component: LibraryDetailComponent\r\n },\r\n {\r\n path: '',\r\n runGuardsAndResolvers: 'always',\r\n canActivate: [AuthGuard, LibraryAccessGuard],\r\n component: LibraryDetailComponent\r\n }\r\n];\r\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_1_Conditional_9_ng_template_1_Template", "\u0275\u0275templateRefExtractor", "loadingSeries", "filterSettings", "trackByIdentity", "filterOpen", "jumpKeys", "refresh", "\u0275\u0275elementContainerStart", "_r1", "emit", "performAction", "LibraryDetailComponent_ng_container_1_Conditional_6_Template", "\u0275\u0275element", "LibraryDetailComponent_ng_container_1_Conditional_9_Template", "filterActive", "\u0275\u0275textInterpolate", "libraryName", "actions", "\u0275\u0275conditional", "active", "fragment", "bulkActionCallback", "bulkLoader", "filter", "LibraryDetailComponent", "constructor", "destroyRef", "inject", "DestroyRef", "cdRef", "ChangeDetectorRef", "route", "ActivatedRoute", "router", "Router", "seriesService", "SeriesService", "libraryService", "LibraryService", "titleService", "Title", "actionFactoryService", "ActionFactoryService", "actionService", "ActionService", "hubService", "MessageHubService", "utilityService", "UtilityService", "filterUtilityService", "FilterUtilitiesService", "navService", "NavService", "BulkSelectionService", "currentPage", "totalPages", "itemsPerPage", "undefined", "FilterSettings", "EventEmitter", "tabs", "title", "icon", "loadPageSource", "ReplaySubject", "loadPage$", "asObservable", "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", "takeUntilDestroyed", "debounceTime", "tap", "_", "ngOnInit", "messages$", "event", "EVENTS", "SeriesAdded", "seriesAdded", "payload", "deepEqual", "next", "getSeries", "seriesId", "sObj", "sort", "s1", "s2", "sortName", "SeriesRemoved", "seriesRemoved", "handleKeypress", "key", "KEY_CODES", "SHIFT", "isShiftDown", "handleKeyUp", "library", "lib", "getLibrary", "Scan", "scanLibrary", "RefreshMetadata", "refreshLibraryMetadata", "GenerateColorScape", "deleteLibrary", "AnalyzeFiles", "analyzeFiles", "Edit", "editLibrary", "callback", "filterV2", "isFirst", "updateUrlFromFilter", "encodedFilter", "getSeriesForLibraryV2", "result", "selectors", "hostBindings", "rf", "ctx", "\u0275\u0275resolveDocument", "LibraryDetailComponent_ng_container_1_Template", "SideNavCompanionBarComponent", "CardActionablesComponent", "CardDetailLayoutComponent", "SeriesCardComponent", "BulkOperationsComponent", "DecimalPipe", "TranslocoDirective", "LoadingComponent", "styles", "changeDetection", "routes", "path", "runGuardsAndResolvers", "canActivate", "AuthGuard", "LibraryAccessGuard", "component", "LibraryDetailComponent"] }