{"version":3,"file":"377.74a8d4c9291054da.js","mappings":"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","names":["i0","_r2","ctx_r1","handleClick","ctx_r3","selection","emit","selected","ctx_r0","data","name","actions","suppressLibraryLink","imageUrl","pages","pagesRead","allowSelection","relation","deepClone","obj","Array","map","item","clonedObj","key","Object","prototype","hasOwnProperty","call","SeriesCardComponent","constructor","router","cdRef","seriesService","toastr","modalService","imageService","actionFactoryService","actionService","this","libraryId","undefined","isOnDeck","clicked","EventEmitter","reload","dataChanged","translocoService","inject","TranslocoService","ngOnInit","getSeriesCoverImage","id","markForCheck","ngOnChanges","changes","getSeriesActions","action","series","handleSeriesActionCallback","othersIndex","findIndex","title","othersAction","children","o","Action","RemoveFromOnDeck","push","callback","class","requiresAdmin","MarkAsRead","markAsRead","MarkAsUnread","markAsUnread","Scan","scanLibrary","RefreshMetadata","refreshMetadata","Delete","deleteSeries","Edit","openEditModal","AddToReadingList","addSeriesToReadingList","AddToWantToReadList","addMultipleSeriesToWantToReadList","RemoveFromWantToReadList","removeMultipleSeriesFromWantToReadList","url","startsWith","AddToCollection","addMultipleSeriesToCollectionTag","AnalyzeFiles","analyzeFilesForSeries","SendTo","sendSeriesToDevice","_extra","removeFromOnDeck","subscribe","modalRef","open","EditSeriesModalComponent","size","componentInstance","closed","closeResult","success","getSeries","_this","_asyncToGenerator","refreshMetdata","_this2","scan","res","translate","_this3","result","markSeriesAsUnread","markSeriesAsRead","navigate","t","i1","i2","i3","i4","i5","i6","i7","_angular_core__WEBPACK_IMPORTED_MODULE_7__","Xpm","selectors","inputs","outputs","standalone","features","decls","vars","consts","template","rf","ctx","SeriesCardComponent_ng_container_0_Template","CommonModule","i8","CardItemComponent","RelationshipPipe","changeDetection","t_r1","EditCollectionTagsComponent_ng_container_0_ng_template_11_div_6_div_1_Template","EditCollectionTagsComponent_ng_container_0_ng_template_11_div_6_div_2_Template","tmp_0_0","ctx_r6","collectionTagForm","get","errors","required","tmp_1_0","duplicateName","EditCollectionTagsComponent_ng_container_0_ng_template_11_div_6_Template","EditCollectionTagsComponent_ng_container_0_ng_template_11_ng_template_13_Template","tmp_2_0","invalid","touched","dirty","_r7","item_r18","_r21","$implicit","ctx_r20","handleSelection","i_r19","ctx_r16","selections","isSelected","libraryName","$event","_r24","ctx_r23","pagination","currentPage","ctx_r25","onPageChange","ctx_r22","itemsPerPage","totalItems","EditCollectionTagsComponent_ng_container_0_ng_template_15_div_0_div_9_ngb_pagination_1_Template","ctx_r17","totalPages","_r27","ctx_r26","toggleAll","EditCollectionTagsComponent_ng_container_0_ng_template_15_div_0_li_8_Template","EditCollectionTagsComponent_ng_container_0_ng_template_15_div_0_div_9_Template","ctx_r15","selectAll","hasSomeSelected","length","EditCollectionTagsComponent_ng_container_0_ng_template_15_div_0_Template","ctx_r4","isLoading","_r30","ctx_r29","imageUrls","ctx_r31","updateSelectedIndex","ctx_r32","updateSelectedImage","ctx_r33","handleReset","ctx_r5","tag","coverImageLocked","_r35","ctx_r34","close","ctx_r36","active","EditCollectionTagsComponent_ng_container_0_ng_template_11_Template","EditCollectionTagsComponent_ng_container_0_ng_template_15_Template","EditCollectionTagsComponent_ng_container_0_ng_template_19_Template","ctx_r37","ctx_r38","save","_c0","utilityService","getActiveBreakpoint","Breakpoint","Mobile","TabID","General","Series","CoverImage","EditCollectionTagsComponent","modal","collectionService","confirmService","libraryService","uploadService","selectedCover","destroyRef","DestroyRef","FormGroup","FormControl","nonNullable","validators","Validators","summary","coverImageIndex","promoted","valueChanges","pipe","debounceTime","distinctUntilChanged","switchMap","tagNameExists","tap","exists","isExistingName","value","setErrors","takeUntilDestroyed","randomize","getCollectionCoverImage","loadSeries","pageNum","forEach","s","toggle","forkJoin","getSeriesForTag","getLibraryNames","results","SelectionModel","libraryNames","numberOfSelected","dismiss","selectedIndex","unselectedIds","unselected","confirm","apis","updateTag","updateSeriesForTag","updateCollectionCoverImage","coverImageUpdated","index","patchValue","i9","core","EditCollectionTagsComponent_ng_container_0_Template","i10","NgbNav","NgbNavItem","NgbNavLink","NgbNavContent","ReactiveFormsModule","i11","FormsModule","NgbPagination","CoverImageChooserComponent","NgbNavOutlet","NgbTooltip","TranslocoDirective","styles","_r8","ctx_r7","performAction","CollectionDetailComponent_ng_container_0_app_side_nav_companion_bar_3_h2_2_span_3_Template","actionInProgress","collectionTagActions","collectionTag","_r10","ctx_r9","filterOpen","CollectionDetailComponent_ng_container_0_app_side_nav_companion_bar_3_h2_2_Template","filterActive","ctx_r12","_r20","ctx_r19","loadPage","position_r18","idx","ctx_r21","bulkSelectionService","handleCardSelection","item_r17","ctx_r14","isCardSelected","CollectionDetailComponent_ng_container_0_div_4_div_7_ng_template_1_Template","CollectionDetailComponent_ng_container_0_div_4_div_8_ng_template_1_Template","CollectionDetailComponent_ng_container_0_div_4_div_2_Template","_r29","ctx_r28","updateFilter","CollectionDetailComponent_ng_container_0_div_4_ng_template_5_Template","CollectionDetailComponent_ng_container_0_div_4_div_7_Template","CollectionDetailComponent_ng_container_0_div_4_div_8_Template","_c2","ScrollingBlockHeight","bulkActionCallback","filterSettings","_r11","trackByIdentity","jumpbarKeys","CollectionDetailComponent_ng_container_0_app_side_nav_companion_bar_3_Template","CollectionDetailComponent_ng_container_0_div_4_Template","CollectionDetailComponent","scrollingBlock","navbar","document","querySelector","companionBar","nativeElement","offsetHeight","route","titleService","jumpbarService","messageHub","filterUtilityService","scrollService","filter","FilterSettings","localizedName","selectedSeriesIndices","getSelectedCardsForSource","selectedSeries","includes","addMultipleSeriesToReadingList","deselectAll","markMultipleSeriesAsRead","markMultipleSeriesAsUnread","deleteMultipleSeries","successful","routeReuseStrategy","shouldReuseRoute","routeId","snapshot","paramMap","tagId","parseInt","filterPresetsFromUrlV2","statements","stmt","field","FilterField","Libraries","CollectionTags","comparison","FilterComparison","Equal","filterActiveCheck","createSeriesV2Filter","presetsV2","getCollectionTagActions","handleCollectionActionCallback","bind","messages$","event","EVENTS","SeriesAddedToCollection","payload","SeriesRemoved","ngAfterContentChecked","setScrollContainer","handleKeypress","KEY_CODES","SHIFT","isShiftDown","handleKeyUp","allTags","tags","matchingTags","error","navigateByUrl","replace","setTitle","collectionName","deepEqual","getAllSeriesV2","take","getJumpKeys","window","scrollTo","filterV2","isFirst","updateUrlFromFilterV2","openEditCollectionTagModal","scrollable","i12","i13","i14","DOCUMENT","i15","viewQuery","CollectionDetailComponent_ng_container_0_Template","NgIf","SideNavCompanionBarComponent","CardActionablesComponent","NgStyle","ImageComponent","ReadMoreComponent","BulkOperationsComponent","CardDetailLayoutComponent","item_r6","_r9","ctx_r8","loadCollection","AllCollectionsComponent_ng_container_0_ng_template_10_ng_container_1_Template","isAdmin$","_r14","ctx_r13","AllCollectionsComponent_ng_container_0_ng_template_8_Template","AllCollectionsComponent_ng_container_0_ng_template_10_Template","collections","AllCollectionsComponent","accountService","of","ToastrService","currentUser$","user","hasAdminRole","deleteTag","AllCollectionsComponent_ng_container_0_Template","AsyncPipe","DecimalPipe","routes","path","runGuardsAndResolvers","canActivate","AuthGuard","component","pathMatch","CollectionsRoutingModule","oAB","cJS","RouterModule","forChild","CollectionsModule"],"sourceRoot":"webpack:///","sources":["./src/app/cards/series-card/series-card.component.html","./src/app/cards/series-card/series-card.component.ts","./src/app/cards/_modals/edit-collection-tags/edit-collection-tags.component.html","./src/app/cards/_modals/edit-collection-tags/edit-collection-tags.component.ts","./src/app/collections/_components/collection-detail/collection-detail.component.html","./src/app/collections/_components/collection-detail/collection-detail.component.ts","./src/app/collections/_components/all-collections/all-collections.component.html","./src/app/collections/_components/all-collections/all-collections.component.ts","./src/app/collections/collections-routing.module.ts","./src/app/collections/collections.module.ts"],"sourcesContent":["\n \n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter, inject,\n Input,\n OnChanges,\n OnInit,\n Output\n} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {NgbModal} from '@ng-bootstrap/ng-bootstrap';\nimport {ToastrService} from 'ngx-toastr';\nimport {Series} from 'src/app/_models/series';\nimport {ImageService} from 'src/app/_services/image.service';\nimport {Action, ActionFactoryService, ActionItem} from 'src/app/_services/action-factory.service';\nimport {SeriesService} from 'src/app/_services/series.service';\nimport {ActionService} from 'src/app/_services/action.service';\nimport {EditSeriesModalComponent} from '../_modals/edit-series-modal/edit-series-modal.component';\nimport {RelationKind} from 'src/app/_models/series-detail/relation-kind';\nimport {CommonModule} from \"@angular/common\";\nimport {CardItemComponent} from \"../card-item/card-item.component\";\nimport {RelationshipPipe} from \"../../pipe/relationship.pipe\";\nimport {Device} from \"../../_models/device/device\";\nimport {TranslocoService} from \"@ngneat/transloco\";\n\nfunction deepClone(obj: any): any {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n if (obj instanceof Array) {\n return obj.map(item => deepClone(item));\n }\n\n const clonedObj: any = {};\n\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object' && obj[key] !== null) {\n clonedObj[key] = deepClone(obj[key]);\n } else {\n clonedObj[key] = obj[key];\n }\n }\n }\n\n return clonedObj;\n}\n\n@Component({\n selector: 'app-series-card',\n standalone: true,\n imports: [CommonModule, CardItemComponent, RelationshipPipe],\n templateUrl: './series-card.component.html',\n styleUrls: ['./series-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SeriesCardComponent implements OnInit, OnChanges {\n @Input({required: true}) data!: Series;\n @Input() libraryId = 0;\n @Input() suppressLibraryLink = false;\n /**\n * If the entity is selected or not.\n */\n @Input() selected: boolean = false;\n /**\n * If the entity should show selection code\n */\n @Input() allowSelection: boolean = false;\n /**\n * If the Series has a relationship to display\n */\n @Input() relation: RelationKind | undefined = undefined;\n /**\n * When a series card is shown on deck, a special actionable is added to the list\n */\n @Input() isOnDeck: boolean = false;\n\n @Output() clicked = new EventEmitter();\n /**\n * Emits when a reload needs to occur and the id of the entity\n */\n @Output() reload = new EventEmitter();\n @Output() dataChanged = new EventEmitter();\n /**\n * When the card is selected.\n */\n @Output() selection = new EventEmitter();\n\n actions: ActionItem[] = [];\n imageUrl: string = '';\n\n private readonly translocoService = inject(TranslocoService);\n\n constructor(private router: Router, private cdRef: ChangeDetectorRef,\n private seriesService: SeriesService, private toastr: ToastrService,\n private modalService: NgbModal, private imageService: ImageService,\n private actionFactoryService: ActionFactoryService,\n private actionService: ActionService) {}\n\n\n ngOnInit(): void {\n if (this.data) {\n this.imageUrl = this.imageService.getSeriesCoverImage(this.data.id);\n this.cdRef.markForCheck();\n }\n }\n\n ngOnChanges(changes: any) {\n if (this.data) {\n this.actions = [...this.actionFactoryService.getSeriesActions((action: ActionItem, series: Series) => this.handleSeriesActionCallback(action, series))];\n if (this.isOnDeck) {\n const othersIndex = this.actions.findIndex(obj => obj.title === 'others');\n const othersAction = deepClone(this.actions[othersIndex]) as ActionItem;\n if (othersAction.children.findIndex(o => o.action === Action.RemoveFromOnDeck) < 0) {\n othersAction.children.push({\n action: Action.RemoveFromOnDeck,\n title: 'remove-from-on-deck',\n callback: (action: ActionItem, series: Series) => this.handleSeriesActionCallback(action, series),\n class: 'danger',\n requiresAdmin: false,\n children: [],\n });\n this.actions[othersIndex] = othersAction;\n }\n }\n this.cdRef.markForCheck();\n }\n }\n\n handleSeriesActionCallback(action: ActionItem, series: Series) {\n switch (action.action) {\n case(Action.MarkAsRead):\n this.markAsRead(series);\n break;\n case(Action.MarkAsUnread):\n this.markAsUnread(series);\n break;\n case(Action.Scan):\n this.scanLibrary(series);\n break;\n case(Action.RefreshMetadata):\n this.refreshMetadata(series);\n break;\n case(Action.Delete):\n this.deleteSeries(series);\n break;\n case(Action.Edit):\n this.openEditModal(series);\n break;\n case(Action.AddToReadingList):\n this.actionService.addSeriesToReadingList(series);\n break;\n case Action.AddToWantToReadList:\n this.actionService.addMultipleSeriesToWantToReadList([series.id]);\n break;\n case Action.RemoveFromWantToReadList:\n this.actionService.removeMultipleSeriesFromWantToReadList([series.id]);\n if (this.router.url.startsWith('/want-to-read')) {\n this.reload.emit(series.id);\n }\n break;\n case(Action.AddToCollection):\n this.actionService.addMultipleSeriesToCollectionTag([series]);\n break;\n case (Action.AnalyzeFiles):\n this.actionService.analyzeFilesForSeries(series);\n break;\n case Action.SendTo:\n const device = (action._extra!.data as Device);\n this.actionService.sendSeriesToDevice(series.id, device);\n break;\n case Action.RemoveFromOnDeck:\n this.seriesService.removeFromOnDeck(series.id).subscribe(() => this.reload.emit(series.id));\n break;\n default:\n break;\n }\n }\n\n openEditModal(data: Series) {\n const modalRef = this.modalService.open(EditSeriesModalComponent, { size: 'lg' });\n modalRef.componentInstance.series = data;\n modalRef.closed.subscribe((closeResult: {success: boolean, series: Series, coverImageUpdate: boolean}) => {\n if (closeResult.success) {\n this.seriesService.getSeries(data.id).subscribe(series => {\n this.data = series;\n this.cdRef.markForCheck();\n this.reload.emit(series.id);\n this.dataChanged.emit(series);\n });\n }\n });\n }\n\n async refreshMetadata(series: Series) {\n await this.actionService.refreshMetdata(series);\n }\n\n async scanLibrary(series: Series) {\n this.seriesService.scan(series.libraryId, series.id).subscribe((res: any) => {\n this.toastr.success(this.translocoService.translate('toasts.scan-queued', {name: series.name}));\n });\n }\n\n async deleteSeries(series: Series) {\n await this.actionService.deleteSeries(series, (result: boolean) => {\n if (result) {\n this.reload.emit(series.id);\n }\n });\n }\n\n markAsUnread(series: Series) {\n this.actionService.markSeriesAsUnread(series, () => {\n if (this.data) {\n this.data.pagesRead = 0;\n this.cdRef.markForCheck();\n }\n\n this.dataChanged.emit(series);\n });\n }\n\n markAsRead(series: Series) {\n this.actionService.markSeriesAsRead(series, () => {\n if (this.data) {\n this.data.pagesRead = series.pages;\n this.cdRef.markForCheck();\n }\n this.dataChanged.emit(series);\n });\n }\n\n handleClick() {\n this.clicked.emit(this.data);\n this.router.navigate(['library', this.libraryId, 'series', this.data?.id]);\n }\n\n}\n","\n\n \n {{t('title', {collectionName: tag.title})}}\n \n \n \n \n \n {{t(TabID.General)}}\n \n \n \n \n {{t('name-label')}}\n \n \n \n {{t('required-field')}}\n \n \n {{t('name-validation')}}\n \n \n \n \n \n \n {{t('promote-label')}}\n \n {{t('promote-tooltip')}}\n \n \n \n \n\n \n {{t('summary-label')}}\n \n \n\n \n \n \n\n \n {{t(TabID.Series)}}\n \n \n {{t('series-title')}}\n \n \n {{selectAll ? t('deselect-all') : t('select-all')}}\n \n \n \n \n \n {{item.name}} ({{libraryName(item.libraryId)}})\n \n \n \n \n 1\"\n [(page)]=\"pagination.currentPage\"\n [pageSize]=\"pagination.itemsPerPage\"\n (pageChange)=\"onPageChange($event)\"\n [rotate]=\"false\" [ellipses]=\"false\" [boundaryLinks]=\"true\"\n [collectionSize]=\"pagination.totalItems\">\n \n \n \n \n\n \n {{t(TabID.CoverImage)}}\n \n \n \n \n \n\n \n \n \n\n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n inject,\n Input,\n OnInit\n} from '@angular/core';\nimport {FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {\n NgbActiveModal,\n NgbNav,\n NgbNavContent,\n NgbNavItem,\n NgbNavLink,\n NgbNavOutlet,\n NgbPagination, NgbTooltip\n} from '@ng-bootstrap/ng-bootstrap';\nimport { ToastrService } from 'ngx-toastr';\nimport { debounceTime, distinctUntilChanged, forkJoin, switchMap, tap } from 'rxjs';\nimport { ConfirmService } from 'src/app/shared/confirm.service';\nimport { Breakpoint, UtilityService } from 'src/app/shared/_services/utility.service';\nimport { SelectionModel } from 'src/app/typeahead/_components/typeahead.component';\nimport { CollectionTag } from 'src/app/_models/collection-tag';\nimport { Pagination } from 'src/app/_models/pagination';\nimport { Series } from 'src/app/_models/series';\nimport { CollectionTagService } from 'src/app/_services/collection-tag.service';\nimport { ImageService } from 'src/app/_services/image.service';\nimport { LibraryService } from 'src/app/_services/library.service';\nimport { SeriesService } from 'src/app/_services/series.service';\nimport { UploadService } from 'src/app/_services/upload.service';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport {CommonModule} from \"@angular/common\";\nimport {CoverImageChooserComponent} from \"../../cover-image-chooser/cover-image-chooser.component\";\nimport {TranslocoDirective, TranslocoService} from \"@ngneat/transloco\";\n\n\nenum TabID {\n General = 'general-tab',\n CoverImage = 'cover-image-tab',\n Series = 'series-tab'\n}\n\n@Component({\n selector: 'app-edit-collection-tags',\n standalone: true,\n imports: [CommonModule, NgbNav, NgbNavItem, NgbNavLink, NgbNavContent, ReactiveFormsModule, FormsModule, NgbPagination, CoverImageChooserComponent, NgbNavOutlet, NgbTooltip, TranslocoDirective],\n templateUrl: './edit-collection-tags.component.html',\n styleUrls: ['./edit-collection-tags.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EditCollectionTagsComponent implements OnInit {\n\n @Input({required: true}) tag!: CollectionTag;\n series: Array = [];\n selections!: SelectionModel;\n isLoading: boolean = true;\n\n pagination!: Pagination;\n selectAll: boolean = true;\n libraryNames!: any;\n collectionTagForm!: FormGroup;\n active = TabID.General;\n imageUrls: Array = [];\n selectedCover: string = '';\n private readonly destroyRef = inject(DestroyRef);\n translocoService = inject(TranslocoService);\n\n get hasSomeSelected() {\n return this.selections != null && this.selections.hasSomeSelected();\n }\n\n get Breakpoint() {\n return Breakpoint;\n }\n\n get TabID() {\n return TabID;\n }\n\n constructor(public modal: NgbActiveModal, private seriesService: SeriesService,\n private collectionService: CollectionTagService, private toastr: ToastrService,\n private confirmService: ConfirmService, private libraryService: LibraryService,\n private imageService: ImageService, private uploadService: UploadService,\n public utilityService: UtilityService, private readonly cdRef: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n if (this.pagination == undefined) {\n this.pagination = {totalPages: 1, totalItems: 200, itemsPerPage: 200, currentPage: 0};\n }\n this.collectionTagForm = new FormGroup({\n title: new FormControl(this.tag.title, { nonNullable: true, validators: [Validators.required] }),\n summary: new FormControl(this.tag.summary, { nonNullable: true, validators: [] }),\n coverImageLocked: new FormControl(this.tag.coverImageLocked, { nonNullable: true, validators: [] }),\n coverImageIndex: new FormControl(0, { nonNullable: true, validators: [] }),\n promoted: new FormControl(this.tag.promoted, { nonNullable: true, validators: [] }),\n });\n\n this.collectionTagForm.get('title')?.valueChanges.pipe(\n debounceTime(100),\n distinctUntilChanged(),\n switchMap(name => this.collectionService.tagNameExists(name)),\n tap(exists => {\n const isExistingName = this.collectionTagForm.get('title')?.value === this.tag.title;\n if (!exists || isExistingName) {\n this.collectionTagForm.get('title')?.setErrors(null);\n } else {\n this.collectionTagForm.get('title')?.setErrors({duplicateName: true})\n }\n this.cdRef.markForCheck();\n }),\n takeUntilDestroyed(this.destroyRef)\n ).subscribe();\n\n this.imageUrls.push(this.imageService.randomize(this.imageService.getCollectionCoverImage(this.tag.id)));\n this.loadSeries();\n }\n\n onPageChange(pageNum: number) {\n this.pagination.currentPage = pageNum;\n this.loadSeries();\n }\n\n toggleAll() {\n this.selectAll = !this.selectAll;\n this.series.forEach(s => this.selections.toggle(s, this.selectAll));\n this.cdRef.markForCheck();\n }\n\n loadSeries() {\n forkJoin([\n this.seriesService.getSeriesForTag(this.tag.id, this.pagination.currentPage, this.pagination.itemsPerPage),\n this.libraryService.getLibraryNames()\n ]).subscribe(results => {\n const series = results[0];\n this.pagination = series.pagination;\n this.series = series.result;\n\n this.imageUrls.push(...this.series.map(s => this.imageService.getSeriesCoverImage(s.id)));\n this.selections = new SelectionModel(true, this.series);\n this.isLoading = false;\n\n this.libraryNames = results[1];\n this.cdRef.markForCheck();\n });\n }\n\n handleSelection(item: Series) {\n this.selections.toggle(item);\n const numberOfSelected = this.selections.selected().length;\n if (numberOfSelected == 0) {\n this.selectAll = false;\n } else if (numberOfSelected == this.series.length) {\n this.selectAll = true;\n }\n this.cdRef.markForCheck();\n }\n\n libraryName(libraryId: number) {\n return this.libraryNames[libraryId];\n }\n\n close() {\n this.modal.dismiss();\n }\n\n async save() {\n const selectedIndex = this.collectionTagForm.get('coverImageIndex')?.value || 0;\n const unselectedIds = this.selections.unselected().map(s => s.id);\n const tag = this.collectionTagForm.value;\n tag.id = this.tag.id;\n\n if (unselectedIds.length == this.series.length &&\n !await this.confirmService.confirm(this.translocoService.translate('toasts.no-series-collection-warning'))) {\n return;\n }\n\n const apis = [\n this.collectionService.updateTag(tag),\n this.collectionService.updateSeriesForTag(tag, this.selections.unselected().map(s => s.id))\n ];\n\n if (selectedIndex > 0) {\n apis.push(this.uploadService.updateCollectionCoverImage(this.tag.id, this.selectedCover));\n }\n\n forkJoin(apis).subscribe(() => {\n this.modal.close({success: true, coverImageUpdated: selectedIndex > 0});\n this.toastr.success(this.translocoService.translate('toasts.collection-updated'));\n });\n }\n\n updateSelectedIndex(index: number) {\n this.collectionTagForm.patchValue({\n coverImageIndex: index\n });\n }\n\n updateSelectedImage(url: string) {\n this.selectedCover = url;\n this.cdRef.markForCheck();\n }\n\n handleReset() {\n this.collectionTagForm.patchValue({\n coverImageLocked: false\n });\n this.cdRef.markForCheck();\n }\n\n}\n","\n \n \n \n \n \n {{collectionTag.title}}()\n \n \n \n \n\n \n 0\">\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n\n \n \n {{t('no-data')}}\n \n \n\n \n \n {{t('no-data-filtered')}}\n \n \n \n \n\n","import {DOCUMENT, NgIf, NgStyle} from '@angular/common';\nimport {\n AfterContentChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostListener,\n inject,\n Inject,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport {Title} from '@angular/platform-browser';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {NgbModal} from '@ng-bootstrap/ng-bootstrap';\nimport {ToastrService} from 'ngx-toastr';\nimport {debounceTime, take} from 'rxjs/operators';\nimport {BulkSelectionService} from 'src/app/cards/bulk-selection.service';\nimport {EditCollectionTagsComponent} from 'src/app/cards/_modals/edit-collection-tags/edit-collection-tags.component';\nimport {FilterSettings} from 'src/app/metadata-filter/filter-settings';\nimport {FilterUtilitiesService} from 'src/app/shared/_services/filter-utilities.service';\nimport {KEY_CODES, UtilityService} from 'src/app/shared/_services/utility.service';\nimport {CollectionTag} from 'src/app/_models/collection-tag';\nimport {SeriesAddedToCollectionEvent} from 'src/app/_models/events/series-added-to-collection-event';\nimport {JumpKey} from 'src/app/_models/jumpbar/jump-key';\nimport {Pagination} from 'src/app/_models/pagination';\nimport {Series} from 'src/app/_models/series';\nimport {FilterEvent} from 'src/app/_models/metadata/series-filter';\nimport {Action, ActionFactoryService, ActionItem} from 'src/app/_services/action-factory.service';\nimport {ActionService} from 'src/app/_services/action.service';\nimport {CollectionTagService} from 'src/app/_services/collection-tag.service';\nimport {ImageService} from 'src/app/_services/image.service';\nimport {JumpbarService} from 'src/app/_services/jumpbar.service';\nimport {EVENTS, MessageHubService} from 'src/app/_services/message-hub.service';\nimport {ScrollService} from 'src/app/_services/scroll.service';\nimport {SeriesService} from 'src/app/_services/series.service';\nimport {SeriesCardComponent} from '../../../cards/series-card/series-card.component';\nimport {CardDetailLayoutComponent} from '../../../cards/card-detail-layout/card-detail-layout.component';\nimport {BulkOperationsComponent} from '../../../cards/bulk-operations/bulk-operations.component';\nimport {ReadMoreComponent} from '../../../shared/read-more/read-more.component';\nimport {ImageComponent} from '../../../shared/image/image.component';\n\nimport {\n SideNavCompanionBarComponent\n} from '../../../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport {TranslocoDirective, TranslocoService} from \"@ngneat/transloco\";\nimport {CardActionablesComponent} from \"../../../_single-module/card-actionables/card-actionables.component\";\nimport {FilterField} from \"../../../_models/metadata/v2/filter-field\";\nimport {FilterComparison} from \"../../../_models/metadata/v2/filter-comparison\";\nimport {SeriesFilterV2} from \"../../../_models/metadata/v2/series-filter-v2\";\n\n@Component({\n selector: 'app-collection-detail',\n templateUrl: './collection-detail.component.html',\n styleUrls: ['./collection-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, SideNavCompanionBarComponent, CardActionablesComponent, NgStyle, ImageComponent, ReadMoreComponent, BulkOperationsComponent, CardDetailLayoutComponent, SeriesCardComponent, TranslocoDirective]\n})\nexport class CollectionDetailComponent implements OnInit, AfterContentChecked {\n\n @ViewChild('scrollingBlock') scrollingBlock: ElementRef | undefined;\n @ViewChild('companionBar') companionBar: ElementRef | undefined;\n\n destroyRef = inject(DestroyRef);\n translocoService = inject(TranslocoService);\n\n collectionTag!: CollectionTag;\n isLoading: boolean = true;\n series: Array = [];\n pagination!: Pagination;\n collectionTagActions: ActionItem[] = [];\n filter: SeriesFilterV2 | undefined = undefined;\n filterSettings: FilterSettings = new FilterSettings();\n summary: string = '';\n\n actionInProgress: boolean = false;\n filterActiveCheck!: SeriesFilterV2;\n filterActive: boolean = false;\n\n jumpbarKeys: Array = [];\n\n filterOpen: EventEmitter = new EventEmitter();\n trackByIdentity = (index: number, item: Series) => `${item.name}_${item.localizedName}_${item.pagesRead}`;\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 this.cdRef.markForCheck();\n });\n break;\n case Action.MarkAsUnread:\n this.actionService.markMultipleSeriesAsUnread(selectedSeries, () => {\n this.bulkSelectionService.deselectAll();\n this.loadPage();\n this.cdRef.markForCheck();\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 this.cdRef.markForCheck();\n });\n break;\n }\n }\n\n get ScrollingBlockHeight() {\n if (this.scrollingBlock === undefined) return 'calc(var(--vh)*100)';\n const navbar = this.document.querySelector('.navbar') as HTMLElement;\n if (navbar === null) return 'calc(var(--vh)*100)';\n\n const companionHeight = this.companionBar!.nativeElement.offsetHeight;\n const navbarHeight = navbar.offsetHeight;\n const totalHeight = companionHeight + navbarHeight + 21; //21px to account for padding\n return 'calc(var(--vh)*100 - ' + totalHeight + 'px)';\n }\n\n constructor(public imageService: ImageService, private collectionService: CollectionTagService, private router: Router, private route: ActivatedRoute,\n private seriesService: SeriesService, private toastr: ToastrService, private actionFactoryService: ActionFactoryService,\n private modalService: NgbModal, private titleService: Title, private jumpbarService: JumpbarService,\n public bulkSelectionService: BulkSelectionService, private actionService: ActionService, private messageHub: MessageHubService,\n private filterUtilityService: FilterUtilitiesService, private utilityService: UtilityService, @Inject(DOCUMENT) private document: Document,\n private readonly cdRef: ChangeDetectorRef, private scrollService: ScrollService) {\n this.router.routeReuseStrategy.shouldReuseRoute = () => false;\n\n const routeId = this.route.snapshot.paramMap.get('id');\n if (routeId === null) {\n this.router.navigate(['collections']);\n return;\n }\n const tagId = parseInt(routeId, 10);\n\n this.pagination = this.filterUtilityService.pagination(this.route.snapshot);\n\n this.filter = this.filterUtilityService.filterPresetsFromUrlV2(this.route.snapshot);\n if (this.filter.statements.filter(stmt => stmt.field === FilterField.Libraries).length === 0) {\n this.filter!.statements.push({field: FilterField.CollectionTags, value: tagId + '', comparison: FilterComparison.Equal});\n }\n this.filterActiveCheck = this.filterUtilityService.createSeriesV2Filter();\n this.filterActiveCheck!.statements.push({field: FilterField.CollectionTags, value: tagId + '', comparison: FilterComparison.Equal});\n this.filterSettings.presetsV2 = this.filter;\n\n this.cdRef.markForCheck();\n\n this.updateTag(tagId);\n }\n\n ngOnInit(): void {\n this.collectionTagActions = this.actionFactoryService.getCollectionTagActions(this.handleCollectionActionCallback.bind(this));\n\n this.messageHub.messages$.pipe(takeUntilDestroyed(this.destroyRef), debounceTime(2000)).subscribe(event => {\n if (event.event == EVENTS.SeriesAddedToCollection) {\n const collectionEvent = event.payload as SeriesAddedToCollectionEvent;\n if (collectionEvent.tagId === this.collectionTag.id) {\n this.loadPage();\n }\n } else if (event.event === EVENTS.SeriesRemoved) {\n this.loadPage();\n }\n });\n }\n\n ngAfterContentChecked(): void {\n this.scrollService.setScrollContainer(this.scrollingBlock);\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 updateTag(tagId: number) {\n this.collectionService.allTags().subscribe(tags => {\n const matchingTags = tags.filter(t => t.id === tagId);\n if (matchingTags.length === 0) {\n this.toastr.error(this.translocoService.translate('errors.collection-invalid-access'));\n // TODO: Why would access need to be checked? Even if a id was guessed, the series wouldn't return\n this.router.navigateByUrl('/');\n return;\n }\n\n this.collectionTag = matchingTags[0];\n this.summary = (this.collectionTag.summary === null ? '' : this.collectionTag.summary).replace(/\\n/g, '');\n this.titleService.setTitle(this.translocoService.translate('collection-detail.title-alt', {collectionName: this.collectionTag.title}));\n this.cdRef.markForCheck();\n });\n }\n\n loadPage() {\n this.filterActive = !this.utilityService.deepEqual(this.filter, this.filterActiveCheck);\n this.isLoading = true;\n this.cdRef.markForCheck();\n\n this.seriesService.getAllSeriesV2(undefined, undefined, this.filter).pipe(take(1)).subscribe(series => {\n this.series = series.result;\n this.pagination = series.pagination;\n this.jumpbarKeys = this.jumpbarService.getJumpKeys(this.series, (series: Series) => series.name);\n this.isLoading = false;\n window.scrollTo(0, 0);\n this.cdRef.markForCheck();\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.filterUtilityService.updateUrlFromFilterV2(this.pagination, this.filter);\n }\n\n this.loadPage();\n }\n\n handleCollectionActionCallback(action: ActionItem, collectionTag: CollectionTag) {\n switch (action.action) {\n case(Action.Edit):\n this.openEditCollectionTagModal(this.collectionTag);\n break;\n default:\n break;\n }\n }\n\n performAction(action: ActionItem) {\n if (typeof action.callback === 'function') {\n action.callback(action, this.collectionTag);\n }\n }\n\n openEditCollectionTagModal(collectionTag: CollectionTag) {\n const modalRef = this.modalService.open(EditCollectionTagsComponent, { size: 'lg', scrollable: true });\n modalRef.componentInstance.tag = this.collectionTag;\n modalRef.closed.subscribe((results: {success: boolean, coverImageUpdated: boolean}) => {\n this.updateTag(this.collectionTag.id);\n this.loadPage();\n });\n }\n\n}\n","\n \n {{t('title')}}\n {{t('item-count', {num: collections.length | number})}}\n \n \n \n \n \n\n \n {{t('no-data')}}\n {{t('create-one-part-1')}} {{t('create-one-part-2')}}\n \n \n\n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n EventEmitter,\n inject,\n OnInit\n} from '@angular/core';\nimport {Title} from '@angular/platform-browser';\nimport {Router} from '@angular/router';\nimport {NgbModal} from '@ng-bootstrap/ng-bootstrap';\nimport {map, of} from 'rxjs';\nimport {Observable} from 'rxjs/internal/Observable';\nimport {EditCollectionTagsComponent} from 'src/app/cards/_modals/edit-collection-tags/edit-collection-tags.component';\nimport {CollectionTag} from 'src/app/_models/collection-tag';\nimport {JumpKey} from 'src/app/_models/jumpbar/jump-key';\nimport {Tag} from 'src/app/_models/tag';\nimport {AccountService} from 'src/app/_services/account.service';\nimport {Action, ActionFactoryService, ActionItem} from 'src/app/_services/action-factory.service';\nimport {CollectionTagService} from 'src/app/_services/collection-tag.service';\nimport {ImageService} from 'src/app/_services/image.service';\nimport {JumpbarService} from 'src/app/_services/jumpbar.service';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport {AsyncPipe, DecimalPipe, NgIf} from '@angular/common';\nimport {CardItemComponent} from '../../../cards/card-item/card-item.component';\nimport {CardDetailLayoutComponent} from '../../../cards/card-detail-layout/card-detail-layout.component';\nimport {\n SideNavCompanionBarComponent\n} from '../../../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component';\nimport {TranslocoDirective, TranslocoService} from \"@ngneat/transloco\";\nimport {ToastrService} from \"ngx-toastr\";\n\n\n@Component({\n selector: 'app-all-collections',\n templateUrl: './all-collections.component.html',\n styleUrls: ['./all-collections.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [SideNavCompanionBarComponent, CardDetailLayoutComponent, CardItemComponent, NgIf, AsyncPipe, DecimalPipe, TranslocoDirective]\n})\nexport class AllCollectionsComponent implements OnInit {\n\n isLoading: boolean = true;\n collections: CollectionTag[] = [];\n collectionTagActions: ActionItem[] = [];\n jumpbarKeys: Array = [];\n trackByIdentity = (index: number, item: CollectionTag) => `${item.id}_${item.title}`;\n isAdmin$: Observable = of(false);\n\n\n filterOpen: EventEmitter = new EventEmitter();\n private readonly destroyRef = inject(DestroyRef);\n private readonly translocoService = inject(TranslocoService);\n private readonly toastr = inject(ToastrService);\n\n constructor(private collectionService: CollectionTagService, private router: Router,\n private actionFactoryService: ActionFactoryService, private modalService: NgbModal,\n private titleService: Title, private jumpbarService: JumpbarService,\n private readonly cdRef: ChangeDetectorRef, public imageService: ImageService,\n public accountService: AccountService) {\n this.router.routeReuseStrategy.shouldReuseRoute = () => false;\n this.titleService.setTitle('Kavita - ' + this.translocoService.translate('all-collections.title'));\n }\n\n ngOnInit() {\n this.loadPage();\n this.collectionTagActions = this.actionFactoryService.getCollectionTagActions(this.handleCollectionActionCallback.bind(this));\n this.cdRef.markForCheck();\n this.isAdmin$ = this.accountService.currentUser$.pipe(takeUntilDestroyed(this.destroyRef), map(user => {\n if (!user) return false;\n return this.accountService.hasAdminRole(user);\n }));\n }\n\n loadCollection(item: CollectionTag) {\n this.router.navigate(['collections', item.id]);\n this.loadPage();\n }\n\n loadPage() {\n this.isLoading = true;\n this.cdRef.markForCheck();\n this.collectionService.allTags().subscribe(tags => {\n this.collections = [...tags];\n this.isLoading = false;\n this.jumpbarKeys = this.jumpbarService.getJumpKeys(tags, (t: Tag) => t.title);\n this.cdRef.markForCheck();\n });\n }\n\n handleCollectionActionCallback(action: ActionItem, collectionTag: CollectionTag) {\n switch (action.action) {\n case(Action.Delete):\n this.collectionService.deleteTag(collectionTag.id).subscribe(res => {\n this.toastr.success(res);\n });\n break;\n case(Action.Edit):\n const modalRef = this.modalService.open(EditCollectionTagsComponent, { size: 'lg', scrollable: true });\n modalRef.componentInstance.tag = collectionTag;\n modalRef.closed.subscribe((results: {success: boolean, coverImageUpdated: boolean}) => {\n if (results.success) {\n this.loadPage();\n }\n });\n break;\n default:\n break;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { AuthGuard } from '../_guards/auth.guard';\nimport { AllCollectionsComponent } from './_components/all-collections/all-collections.component';\nimport { CollectionDetailComponent } from './_components/collection-detail/collection-detail.component';\n\nconst routes: Routes = [\n {\n path: '', \n runGuardsAndResolvers: 'always',\n canActivate: [AuthGuard],\n children: [\n {path: '', component: AllCollectionsComponent, pathMatch: 'full'},\n {path: ':id', component: CollectionDetailComponent},\n ]\n }\n];\n\n\n@NgModule({\n imports: [RouterModule.forChild(routes), ],\n exports: [RouterModule]\n})\nexport class CollectionsRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CollectionDetailComponent } from './_components/collection-detail/collection-detail.component';\nimport { AllCollectionsComponent } from './_components/all-collections/all-collections.component';\nimport { CollectionsRoutingModule } from './collections-routing.module';\nimport {ImageComponent} from \"../shared/image/image.component\";\nimport {ReadMoreComponent} from \"../shared/read-more/read-more.component\";\nimport {\n SideNavCompanionBarComponent\n} from \"../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component\";\nimport {BulkOperationsComponent} from \"../cards/bulk-operations/bulk-operations.component\";\nimport {CardDetailLayoutComponent} from \"../cards/card-detail-layout/card-detail-layout.component\";\nimport {SeriesCardComponent} from \"../cards/series-card/series-card.component\";\nimport {CardItemComponent} from \"../cards/card-item/card-item.component\";\nimport {CardActionablesComponent} from \"../_single-module/card-actionables/card-actionables.component\";\n\n\n\n@NgModule({\n imports: [\n CommonModule,\n ImageComponent,\n ReadMoreComponent,\n CollectionsRoutingModule,\n CardActionablesComponent,\n SideNavCompanionBarComponent,\n BulkOperationsComponent,\n CardDetailLayoutComponent,\n SeriesCardComponent,\n CardItemComponent,\n AllCollectionsComponent,\n CollectionDetailComponent,\n ],\n exports: [\n AllCollectionsComponent\n ]\n})\nexport class CollectionsModule { }\n"],"x_google_ignoreList":[]}