{"version":3,"sources":["node_modules/ngx-file-drop/fesm2022/ngx-file-drop.mjs","src/app/_services/upload.service.ts","src/app/cards/cover-image-chooser/cover-image-chooser.component.ts","src/app/cards/cover-image-chooser/cover-image-chooser.component.html","src/app/_models/library/file-type-group.enum.ts","src/app/_pipes/file-type-group.pipe.ts","src/app/shared/edit-list/edit-list.component.ts","src/app/shared/edit-list/edit-list.component.html","src/app/cards/_modals/bulk-add-to-collection/bulk-add-to-collection.component.ts","src/app/cards/_modals/bulk-add-to-collection/bulk-add-to-collection.component.html","src/app/reading-list/_modals/add-to-list-modal/add-to-list-modal.component.ts","src/app/reading-list/_modals/add-to-list-modal/add-to-list-modal.component.html","src/app/reading-list/_modals/edit-reading-list-modal/edit-reading-list-modal.component.ts","src/app/reading-list/_modals/edit-reading-list-modal/edit-reading-list-modal.component.html","src/app/_services/chapter.service.ts","src/app/_services/volume.service.ts","src/app/_services/action.service.ts","src/app/sidenav/_modals/library-settings-modal/library-settings-modal.component.ts","src/app/sidenav/_modals/library-settings-modal/library-settings-modal.component.html"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { Directive, EventEmitter, TemplateRef, Component, Input, Output, ContentChild, ViewChild, NgModule } from '@angular/core';\nimport { timer } from 'rxjs';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\n/**\r\n * fileEntry is an instance of {@link FileSystemFileEntry} or {@link FileSystemDirectoryEntry}.\r\n * Which one is it can be checked using {@link FileSystemEntry.isFile} or {@link FileSystemEntry.isDirectory}\r\n * properties of the given {@link FileSystemEntry}.\r\n */\nconst _c0 = [\"fileSelector\"];\nconst _c1 = a0 => ({\n openFileSelector: a0\n});\nfunction NgxFileDropComponent_ng_template_4_div_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 8);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.dropZoneLabel);\n }\n}\nfunction NgxFileDropComponent_ng_template_4_div_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\")(1, \"input\", 9);\n i0.ɵɵlistener(\"click\", function NgxFileDropComponent_ng_template_4_div_1_Template_input_click_1_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.openFileSelector($event));\n });\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵpropertyInterpolate(\"value\", ctx_r1.browseBtnLabel);\n i0.ɵɵproperty(\"className\", ctx_r1.browseBtnClassName);\n }\n}\nfunction NgxFileDropComponent_ng_template_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NgxFileDropComponent_ng_template_4_div_0_Template, 2, 1, \"div\", 6)(1, NgxFileDropComponent_ng_template_4_div_1_Template, 2, 2, \"div\", 7);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.dropZoneLabel);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.showBrowseBtn);\n }\n}\nfunction NgxFileDropComponent_ng_template_6_Template(rf, ctx) {}\nclass NgxFileDropEntry {\n constructor(relativePath, fileEntry) {\n this.relativePath = relativePath;\n this.fileEntry = fileEntry;\n }\n}\nlet NgxFileDropContentTemplateDirective = /*#__PURE__*/(() => {\n class NgxFileDropContentTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgxFileDropContentTemplateDirective_Factory(t) {\n return new (t || NgxFileDropContentTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgxFileDropContentTemplateDirective,\n selectors: [[\"\", \"ngx-file-drop-content-tmp\", \"\"]]\n });\n }\n }\n return NgxFileDropContentTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgxFileDropComponent = /*#__PURE__*/(() => {\n class NgxFileDropComponent {\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value != null && `${value}` !== 'false';\n }\n constructor(zone, renderer) {\n this.zone = zone;\n this.renderer = renderer;\n this.accept = '*';\n this.directory = false;\n this.multiple = true;\n this.dropZoneLabel = '';\n this.dropZoneClassName = 'ngx-file-drop__drop-zone';\n this.useDragEnter = false;\n this.contentClassName = 'ngx-file-drop__content';\n this.showBrowseBtn = false;\n this.browseBtnClassName = 'btn btn-primary btn-xs ngx-file-drop__browse-btn';\n this.browseBtnLabel = 'Browse files';\n this.onFileDrop = new EventEmitter();\n this.onFileOver = new EventEmitter();\n this.onFileLeave = new EventEmitter();\n this.isDraggingOverDropZone = false;\n this.globalDraggingInProgress = false;\n this.files = [];\n this.numOfActiveReadEntries = 0;\n this.helperFormEl = null;\n this.fileInputPlaceholderEl = null;\n this.dropEventTimerSubscription = null;\n this._disabled = false;\n this.openFileSelector = event => {\n if (this.fileSelector && this.fileSelector.nativeElement) {\n this.fileSelector.nativeElement.click();\n }\n };\n this.globalDragStartListener = this.renderer.listen('document', 'dragstart', evt => {\n this.globalDraggingInProgress = true;\n });\n this.globalDragEndListener = this.renderer.listen('document', 'dragend', evt => {\n this.globalDraggingInProgress = false;\n });\n }\n ngOnDestroy() {\n if (this.dropEventTimerSubscription) {\n this.dropEventTimerSubscription.unsubscribe();\n this.dropEventTimerSubscription = null;\n }\n this.globalDragStartListener();\n this.globalDragEndListener();\n this.files = [];\n this.helperFormEl = null;\n this.fileInputPlaceholderEl = null;\n }\n onDragOver(event) {\n if (this.useDragEnter) {\n this.preventAndStop(event);\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = 'copy';\n }\n } else if (!this.isDropzoneDisabled() && !this.useDragEnter && event.dataTransfer) {\n if (!this.isDraggingOverDropZone) {\n this.isDraggingOverDropZone = true;\n this.onFileOver.emit(event);\n }\n this.preventAndStop(event);\n event.dataTransfer.dropEffect = 'copy';\n }\n }\n onDragEnter(event) {\n if (!this.isDropzoneDisabled() && this.useDragEnter) {\n if (!this.isDraggingOverDropZone) {\n this.isDraggingOverDropZone = true;\n this.onFileOver.emit(event);\n }\n this.preventAndStop(event);\n }\n }\n onDragLeave(event) {\n if (!this.isDropzoneDisabled()) {\n if (this.isDraggingOverDropZone) {\n this.isDraggingOverDropZone = false;\n this.onFileLeave.emit(event);\n }\n this.preventAndStop(event);\n }\n }\n dropFiles(event) {\n if (this.isDropzoneDisabled()) {\n return;\n }\n this.isDraggingOverDropZone = false;\n if (event.dataTransfer) {\n let items;\n if (event.dataTransfer.items) {\n items = event.dataTransfer.items;\n } else {\n items = event.dataTransfer.files;\n }\n this.preventAndStop(event);\n this.checkFiles(items);\n }\n }\n /**\r\n * Processes the change event of the file input and adds the given files.\r\n * @param Event event\r\n */\n uploadFiles(event) {\n if (this.isDropzoneDisabled()) {\n return;\n }\n if (event.target) {\n const items = event.target.files || [];\n this.checkFiles(items);\n this.resetFileInput();\n }\n }\n getFakeDropEntry(file) {\n const fakeFileEntry = {\n name: file.name,\n isDirectory: false,\n isFile: true,\n file: callback => callback(file)\n };\n return new NgxFileDropEntry(fakeFileEntry.name, fakeFileEntry);\n }\n checkFile(item) {\n if (!item) {\n return;\n }\n // if (\"getAsFile\" in item) {\n // const file = item.getAsFile();\n // if (file) {\n // this.addToQueue(\n // this.getFakeDropEntry(file)\n // );\n // return;\n // }\n // }\n if (\"webkitGetAsEntry\" in item) {\n let entry = item.webkitGetAsEntry();\n if (entry) {\n if (entry.isFile) {\n const toUpload = new NgxFileDropEntry(entry.name, entry);\n this.addToQueue(toUpload);\n } else if (entry.isDirectory) {\n this.traverseFileTree(entry, entry.name);\n }\n return;\n }\n }\n this.addToQueue(this.getFakeDropEntry(item));\n }\n checkFiles(items) {\n for (let i = 0; i < items.length; i++) {\n this.checkFile(items[i]);\n }\n if (this.dropEventTimerSubscription) {\n this.dropEventTimerSubscription.unsubscribe();\n }\n this.dropEventTimerSubscription = timer(200, 200).subscribe(() => {\n if (this.files.length > 0 && this.numOfActiveReadEntries === 0) {\n const files = this.files;\n this.files = [];\n this.onFileDrop.emit(files);\n }\n });\n }\n traverseFileTree(item, path) {\n if (item.isFile) {\n const toUpload = new NgxFileDropEntry(path, item);\n this.files.push(toUpload);\n } else {\n path = path + '/';\n const dirReader = item.createReader();\n let entries = [];\n const readEntries = () => {\n this.numOfActiveReadEntries++;\n dirReader.readEntries(result => {\n if (!result.length) {\n // add empty folders\n if (entries.length === 0) {\n const toUpload = new NgxFileDropEntry(path, item);\n this.zone.run(() => {\n this.addToQueue(toUpload);\n });\n } else {\n for (let i = 0; i < entries.length; i++) {\n this.zone.run(() => {\n this.traverseFileTree(entries[i], path + entries[i].name);\n });\n }\n }\n } else {\n // continue with the reading\n entries = entries.concat(result);\n readEntries();\n }\n this.numOfActiveReadEntries--;\n });\n };\n readEntries();\n }\n }\n /**\r\n * Clears any added files from the file input element so the same file can subsequently be added multiple times.\r\n */\n resetFileInput() {\n if (this.fileSelector && this.fileSelector.nativeElement) {\n const fileInputEl = this.fileSelector.nativeElement;\n const fileInputContainerEl = fileInputEl.parentElement;\n const helperFormEl = this.getHelperFormElement();\n const fileInputPlaceholderEl = this.getFileInputPlaceholderElement();\n // Just a quick check so we do not mess up the DOM (will never happen though).\n if (fileInputContainerEl !== helperFormEl) {\n // Insert the form input placeholder in the DOM before the form input element.\n this.renderer.insertBefore(fileInputContainerEl, fileInputPlaceholderEl, fileInputEl);\n // Add the form input as child of the temporary form element, removing the form input from the DOM.\n this.renderer.appendChild(helperFormEl, fileInputEl);\n // Reset the form, thus clearing the input element of any files.\n helperFormEl.reset();\n // Add the file input back to the DOM in place of the file input placeholder element.\n this.renderer.insertBefore(fileInputContainerEl, fileInputEl, fileInputPlaceholderEl);\n // Remove the input placeholder from the DOM\n this.renderer.removeChild(fileInputContainerEl, fileInputPlaceholderEl);\n }\n }\n }\n /**\r\n * Get a cached HTML form element as a helper element to clear the file input element.\r\n */\n getHelperFormElement() {\n if (!this.helperFormEl) {\n this.helperFormEl = this.renderer.createElement('form');\n }\n return this.helperFormEl;\n }\n /**\r\n * Get a cached HTML div element to be used as placeholder for the file input element when clearing said element.\r\n */\n getFileInputPlaceholderElement() {\n if (!this.fileInputPlaceholderEl) {\n this.fileInputPlaceholderEl = this.renderer.createElement('div');\n }\n return this.fileInputPlaceholderEl;\n }\n isDropzoneDisabled() {\n return this.globalDraggingInProgress || this.disabled;\n }\n addToQueue(item) {\n this.files.push(item);\n }\n preventAndStop(event) {\n event.stopPropagation();\n event.preventDefault();\n }\n static {\n this.ɵfac = function NgxFileDropComponent_Factory(t) {\n return new (t || NgxFileDropComponent)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgxFileDropComponent,\n selectors: [[\"ngx-file-drop\"]],\n contentQueries: function NgxFileDropComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NgxFileDropContentTemplateDirective, 5, TemplateRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.contentTemplate = _t.first);\n }\n },\n viewQuery: function NgxFileDropComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.fileSelector = _t.first);\n }\n },\n inputs: {\n accept: \"accept\",\n directory: \"directory\",\n multiple: \"multiple\",\n dropZoneLabel: \"dropZoneLabel\",\n dropZoneClassName: \"dropZoneClassName\",\n useDragEnter: \"useDragEnter\",\n contentClassName: \"contentClassName\",\n showBrowseBtn: \"showBrowseBtn\",\n browseBtnClassName: \"browseBtnClassName\",\n browseBtnLabel: \"browseBtnLabel\",\n disabled: \"disabled\"\n },\n outputs: {\n onFileDrop: \"onFileDrop\",\n onFileOver: \"onFileOver\",\n onFileLeave: \"onFileLeave\"\n },\n decls: 7,\n vars: 15,\n consts: [[\"fileSelector\", \"\"], [\"defaultContentTemplate\", \"\"], [3, \"drop\", \"dragover\", \"dragenter\", \"dragleave\", \"className\"], [3, \"className\"], [\"type\", \"file\", 1, \"ngx-file-drop__file-input\", 3, \"change\", \"accept\", \"multiple\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"class\", \"ngx-file-drop__drop-zone-label\", 4, \"ngIf\"], [4, \"ngIf\"], [1, \"ngx-file-drop__drop-zone-label\"], [\"type\", \"button\", 3, \"click\", \"className\", \"value\"]],\n template: function NgxFileDropComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 2);\n i0.ɵɵlistener(\"drop\", function NgxFileDropComponent_Template_div_drop_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.dropFiles($event));\n })(\"dragover\", function NgxFileDropComponent_Template_div_dragover_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onDragOver($event));\n })(\"dragenter\", function NgxFileDropComponent_Template_div_dragenter_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onDragEnter($event));\n })(\"dragleave\", function NgxFileDropComponent_Template_div_dragleave_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onDragLeave($event));\n });\n i0.ɵɵelementStart(1, \"div\", 3)(2, \"input\", 4, 0);\n i0.ɵɵlistener(\"change\", function NgxFileDropComponent_Template_input_change_2_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.uploadFiles($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(4, NgxFileDropComponent_ng_template_4_Template, 2, 2, \"ng-template\", null, 1, i0.ɵɵtemplateRefExtractor)(6, NgxFileDropComponent_ng_template_6_Template, 0, 0, \"ng-template\", 5);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const defaultContentTemplate_r4 = i0.ɵɵreference(5);\n i0.ɵɵclassProp(\"ngx-file-drop__drop-zone--over\", ctx.isDraggingOverDropZone);\n i0.ɵɵproperty(\"className\", ctx.dropZoneClassName);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"className\", ctx.contentClassName);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"accept\", ctx.accept)(\"multiple\", ctx.multiple);\n i0.ɵɵattribute(\"directory\", ctx.directory || undefined)(\"webkitdirectory\", ctx.directory || undefined)(\"mozdirectory\", ctx.directory || undefined)(\"msdirectory\", ctx.directory || undefined)(\"odirectory\", ctx.directory || undefined);\n i0.ɵɵadvance(4);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx.contentTemplate || defaultContentTemplate_r4)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(13, _c1, ctx.openFileSelector));\n }\n },\n dependencies: [i1.NgIf, i1.NgTemplateOutlet],\n styles: [\".ngx-file-drop__drop-zone[_ngcontent-%COMP%]{height:100px;margin:auto;border:2px dotted #0782d0;border-radius:30px}.ngx-file-drop__drop-zone--over[_ngcontent-%COMP%]{background-color:#93939380}.ngx-file-drop__content[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;height:100px;color:#0782d0}.ngx-file-drop__drop-zone-label[_ngcontent-%COMP%]{text-align:center}.ngx-file-drop__file-input[_ngcontent-%COMP%]{display:none}\"]\n });\n }\n }\n return NgxFileDropComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgxFileDropModule = /*#__PURE__*/(() => {\n class NgxFileDropModule {\n static {\n this.ɵfac = function NgxFileDropModule_Factory(t) {\n return new (t || NgxFileDropModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgxFileDropModule,\n bootstrap: [NgxFileDropComponent]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [CommonModule]\n });\n }\n }\n return NgxFileDropModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { NgxFileDropComponent, NgxFileDropContentTemplateDirective, NgxFileDropEntry, NgxFileDropModule };\n","import { HttpClient } from '@angular/common/http';\nimport {inject, Injectable} from '@angular/core';\nimport { environment } from 'src/environments/environment';\nimport { TextResonse } from '../_types/text-response';\nimport {translate} from \"@jsverse/transloco\";\nimport {ToastrService} from \"ngx-toastr\";\nimport {tap} from \"rxjs\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UploadService {\n\n private baseUrl = environment.apiUrl;\n private readonly toastr = inject(ToastrService);\n\n constructor(private httpClient: HttpClient) { }\n\n\n uploadByUrl(url: string) {\n return this.httpClient.post(this.baseUrl + 'upload/upload-by-url', {url}, TextResonse);\n }\n\n /**\n *\n * @param seriesId Series to overwrite cover image for\n * @param url A base64 encoded url\n * @param lockCover Should the cover be locked or not\n * @returns\n */\n updateSeriesCoverImage(seriesId: number, url: string, lockCover: boolean = true) {\n return this.httpClient.post(this.baseUrl + 'upload/series', {id: seriesId, url: this._cleanBase64Url(url), lockCover}).pipe(tap(_ => {\n this.toastr.info(translate('series-detail.cover-change'));\n }));\n }\n\n updateCollectionCoverImage(tagId: number, url: string, lockCover: boolean = true) {\n return this.httpClient.post(this.baseUrl + 'upload/collection', {id: tagId, url: this._cleanBase64Url(url), lockCover}).pipe(tap(_ => {\n this.toastr.info(translate('series-detail.cover-change'));\n }));\n }\n\n updateReadingListCoverImage(readingListId: number, url: string, lockCover: boolean = true) {\n return this.httpClient.post(this.baseUrl + 'upload/reading-list', {id: readingListId, url: this._cleanBase64Url(url), lockCover}).pipe(tap(_ => {\n this.toastr.info(translate('series-detail.cover-change'));\n }));\n }\n\n updateChapterCoverImage(chapterId: number, url: string, lockCover: boolean = true) {\n return this.httpClient.post(this.baseUrl + 'upload/chapter', {id: chapterId, url: this._cleanBase64Url(url), lockCover}).pipe(tap(_ => {\n this.toastr.info(translate('series-detail.cover-change'));\n }));\n }\n\n updateVolumeCoverImage(volumeId: number, url: string, lockCover: boolean = true) {\n return this.httpClient.post(this.baseUrl + 'upload/volume', {id: volumeId, url: this._cleanBase64Url(url), lockCover}).pipe(tap(_ => {\n this.toastr.info(translate('series-detail.cover-change'));\n }));\n }\n\n updateLibraryCoverImage(libraryId: number, url: string, lockCover: boolean = true) {\n return this.httpClient.post(this.baseUrl + 'upload/library', {id: libraryId, url: this._cleanBase64Url(url), lockCover}).pipe(tap(_ => {\n this.toastr.info(translate('series-detail.cover-change'));\n }));\n }\n\n resetChapterCoverLock(chapterId: number, ) {\n return this.httpClient.post(this.baseUrl + 'upload/reset-chapter-lock', {id: chapterId, url: ''});\n }\n\n _cleanBase64Url(url: string) {\n if (url.startsWith('data')) {\n url = url.split(',')[1];\n }\n return url;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n inject,\n Inject,\n Input,\n OnInit,\n Output\n} from '@angular/core';\nimport {FormBuilder, FormControl, FormGroup, ReactiveFormsModule} from '@angular/forms';\nimport {NgxFileDropEntry, FileSystemFileEntry, NgxFileDropModule} from 'ngx-file-drop';\nimport { fromEvent } from 'rxjs';\nimport { takeWhile } from 'rxjs/operators';\nimport { ToastrService } from 'ngx-toastr';\nimport { ImageService } from 'src/app/_services/image.service';\nimport { KEY_CODES } from 'src/app/shared/_services/utility.service';\nimport { UploadService } from 'src/app/_services/upload.service';\nimport {CommonModule, DOCUMENT} from '@angular/common';\nimport {ImageComponent} from \"../../shared/image/image.component\";\nimport {translate, TranslocoModule} from \"@jsverse/transloco\";\n\n@Component({\n selector: 'app-cover-image-chooser',\n standalone: true,\n imports: [\n ReactiveFormsModule,\n NgxFileDropModule,\n CommonModule,\n ImageComponent,\n TranslocoModule\n ],\n templateUrl: './cover-image-chooser.component.html',\n styleUrls: ['./cover-image-chooser.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CoverImageChooserComponent implements OnInit {\n\n private readonly cdRef = inject(ChangeDetectorRef);\n public readonly imageService = inject(ImageService);\n public readonly fb = inject(FormBuilder);\n public readonly toastr = inject(ToastrService);\n public readonly uploadService = inject(UploadService);\n\n /**\n * If buttons show under images to allow immediate selection of cover images.\n */\n @Input() showApplyButton: boolean = false;\n /**\n * When a cover image is selected, this will be called with a base url representation of the file.\n */\n @Output() applyCover: EventEmitter = new EventEmitter();\n /**\n * When a cover image is reset, this will be called.\n */\n @Output() resetCover: EventEmitter = new EventEmitter();\n\n @Input() imageUrls: Array = [];\n @Output() imageUrlsChange: EventEmitter> = new EventEmitter>();\n\n /**\n * Should the control give the ability to select an image that emits the reset status for cover image\n */\n @Input() showReset: boolean = false;\n @Output() resetClicked: EventEmitter = new EventEmitter();\n\n /**\n * Emits the selected index. Used usually to check if something other than the default image was selected.\n */\n @Output() imageSelected: EventEmitter = new EventEmitter();\n /**\n * Emits a base64 encoded image\n */\n @Output() selectedBase64Url: EventEmitter = new EventEmitter();\n\n\n\n selectedIndex: number = 0;\n /**\n * Only applies for showApplyButton. Used to track which image is applied.\n */\n appliedIndex: number = 0;\n form!: FormGroup;\n files: NgxFileDropEntry[] = [];\n acceptableExtensions = ['.png', '.jpg', '.jpeg', '.gif', '.webp', '.avif'].join(',');\n mode: 'file' | 'url' | 'all' = 'all';\n\n constructor(@Inject(DOCUMENT) private document: Document) { }\n\n ngOnInit(): void {\n this.form = this.fb.group({\n coverImageUrl: new FormControl('', [])\n });\n\n this.cdRef.markForCheck();\n }\n\n\n /**\n * Generates a base64 encoding for an Image. Used in manual file upload flow.\n * @param img\n * @returns\n */\n getBase64Image(img: HTMLImageElement) {\n const canvas = document.createElement(\"canvas\");\n canvas.width = img.width;\n canvas.height = img.height;\n const ctx = canvas.getContext(\"2d\", {alpha: false});\n if (!ctx) {\n return '';\n }\n\n ctx.drawImage(img, 0, 0);\n return canvas.toDataURL(\"image/png\");\n }\n\n selectImage(index: number, callback?: Function) {\n if (this.selectedIndex === index) { return; }\n\n // If we load custom images of series/chapters/covers, then those urls are not properly encoded, so on select we have to clean them up\n if (!this.imageUrls[index].startsWith('data:image/')) {\n const imgUrl = this.imageUrls[index];\n const img = new Image();\n img.crossOrigin = 'Anonymous';\n img.src = imgUrl;\n img.onload = (e) => {\n this.handleUrlImageAdd(img, index);\n this.selectedBase64Url.emit(this.imageUrls[this.selectedIndex]);\n if (callback) callback(index);\n };\n img.onerror = (e) => {\n this.toastr.error(translate('errors.rejected-cover-upload'));\n this.form.get('coverImageUrl')?.setValue('');\n this.cdRef.markForCheck();\n };\n this.form.get('coverImageUrl')?.setValue('');\n this.cdRef.markForCheck();\n return;\n }\n\n this.selectedIndex = index;\n this.cdRef.markForCheck();\n this.imageSelected.emit(this.selectedIndex);\n this.selectedBase64Url.emit(this.imageUrls[this.selectedIndex]);\n }\n\n applyImage(index: number) {\n if (!this.showApplyButton) return;\n\n this.selectImage(index, () => {\n this.applyCover.emit(this.imageUrls[index]);\n this.appliedIndex = index;\n this.cdRef.markForCheck();\n });\n }\n\n resetImage() {\n if (this.showApplyButton) {\n this.resetCover.emit();\n }\n }\n\n loadImage(url?: string) {\n url = url || this.form.get('coverImageUrl')?.value.trim();\n if (!url || url === '') return;\n\n this.uploadService.uploadByUrl(url).subscribe(filename => {\n const img = new Image();\n img.crossOrigin = 'Anonymous';\n img.src = this.imageService.getCoverUploadImage(filename);\n img.onload = (e) => this.handleUrlImageAdd(img);\n img.onerror = (e) => {\n this.toastr.error(translate('errors.rejected-cover-upload'));\n this.form.get('coverImageUrl')?.setValue('');\n this.cdRef.markForCheck();\n };\n this.form.get('coverImageUrl')?.setValue('');\n this.cdRef.markForCheck();\n });\n }\n\n loadImageFromUrl(url?: string) {\n url = url || this.form.get('coverImageUrl')?.value.trim();\n if (!url || url === '') return;\n\n this.uploadService.uploadByUrl(url).subscribe(filename => {\n const img = new Image();\n img.crossOrigin = 'Anonymous';\n img.src = this.imageService.getCoverUploadImage(filename);\n img.onload = (e) => this.handleUrlImageAdd(img);\n img.onerror = (e) => {\n this.toastr.error(translate('errors.rejected-cover-upload'));\n this.form.get('coverImageUrl')?.setValue('');\n this.cdRef.markForCheck();\n };\n this.form.get('coverImageUrl')?.setValue('');\n this.cdRef.markForCheck();\n });\n }\n\n\n\n changeMode(mode: 'url') {\n this.mode = mode;\n this.setupEnterHandler();\n this.cdRef.markForCheck();\n\n setTimeout(() => (this.document.querySelector('#load-image') as HTMLInputElement)?.focus(), 10);\n }\n\n public dropped(files: NgxFileDropEntry[]) {\n this.files = files;\n for (const droppedFile of files) {\n\n // Is it a file?\n if (droppedFile.fileEntry.isFile) {\n const fileEntry = droppedFile.fileEntry as FileSystemFileEntry;\n fileEntry.file((file: File) => {\n const reader = new FileReader();\n reader.onload = (e) => this.handleFileImageAdd(e);\n reader.readAsDataURL(file);\n });\n }\n }\n }\n\n handleFileImageAdd(e: any) {\n if (e.target == null) return;\n\n this.imageUrls.push(e.target.result); // This is base64 already\n this.imageUrlsChange.emit(this.imageUrls);\n this.selectedIndex = this.imageUrls.length - 1;\n this.imageSelected.emit(this.selectedIndex); // Auto select newly uploaded image\n this.selectedBase64Url.emit(e.target.result);\n setTimeout(() => {\n (this.document.querySelector('div.image-card[aria-label=\"Image ' + this.selectedIndex + '\"]') as HTMLElement).focus();\n })\n this.cdRef.markForCheck();\n }\n\n handleUrlImageAdd(img: HTMLImageElement, index: number = -1) {\n const url = this.getBase64Image(img);\n if (index >= 0) {\n this.imageUrls[index] = url;\n } else {\n this.imageUrls.push(url);\n }\n\n this.imageUrlsChange.emit(this.imageUrls);\n this.cdRef.markForCheck();\n\n setTimeout(() => {\n // Auto select newly uploaded image and tell parent of new base64 url\n this.selectImage(index >= 0 ? index : this.imageUrls.length - 1);\n });\n }\n\n reset() {\n this.resetClicked.emit();\n this.selectedIndex = -1;\n }\n\n setupEnterHandler() {\n setTimeout(() => {\n const elem = document.querySelector('input[id=\"load-image\"]');\n if (elem == null) return;\n fromEvent(elem, 'keydown')\n .pipe(takeWhile(() => this.mode === 'url')).subscribe((event) => {\n const evt = event;\n switch(evt.key) {\n case KEY_CODES.ENTER:\n {\n this.loadImage();\n break;\n }\n\n case KEY_CODES.ESC_KEY:\n this.mode = 'all';\n event.stopPropagation();\n break;\n default:\n break;\n }\n });\n });\n }\n\n protected fileOver(event: any){}\n protected fileLeave(event: any){}\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 0\">\n \n
\n \n
\n
\n
\n\n
\n\n\n
\n","export enum FileTypeGroup {\n Archive = 1,\n Epub = 2,\n Pdf = 3,\n Images = 4\n}\n\nexport const allFileTypeGroup = Object.keys(FileTypeGroup)\n.filter(key => !isNaN(Number(key)) && parseInt(key, 10) >= 0)\n.map(key => parseInt(key, 10)) as FileTypeGroup[];\n","import { Pipe, PipeTransform } from '@angular/core';\nimport {FileTypeGroup} from \"../_models/library/file-type-group.enum\";\nimport {translate} from \"@jsverse/transloco\";\n\n@Pipe({\n name: 'fileTypeGroup',\n standalone: true\n})\nexport class FileTypeGroupPipe implements PipeTransform {\n\n transform(value: FileTypeGroup): string {\n switch (value) {\n case FileTypeGroup.Archive:\n return translate('file-type-group-pipe.archive');\n case FileTypeGroup.Epub:\n return translate('file-type-group-pipe.epub');\n case FileTypeGroup.Pdf:\n return translate('file-type-group-pipe.pdf');\n case FileTypeGroup.Images:\n return translate('file-type-group-pipe.image');\n\n }\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component, DestroyRef,\n EventEmitter,\n inject,\n Input,\n OnInit,\n Output\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormControl, FormGroup, ReactiveFormsModule} from \"@angular/forms\";\nimport {Select2Module} from \"ng-select2-component\";\nimport {TranslocoDirective} from \"@jsverse/transloco\";\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport {debounceTime, distinctUntilChanged, tap} from \"rxjs/operators\";\n\n@Component({\n selector: 'app-edit-list',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, Select2Module, TranslocoDirective],\n templateUrl: './edit-list.component.html',\n styleUrl: './edit-list.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EditListComponent implements OnInit {\n\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n\n @Input({required: true}) items: Array = [];\n @Input({required: true}) label = '';\n @Output() updateItems = new EventEmitter>();\n\n form: FormGroup = new FormGroup({});\n private combinedItems: string = '';\n\n get Items() {\n return this.combinedItems.split(',') || [''];\n }\n\n\n ngOnInit() {\n this.items.forEach((link, index) => {\n this.form.addControl('link' + index, new FormControl(link, []));\n });\n\n this.combinedItems = this.items.join(',');\n\n this.form.valueChanges.pipe(\n debounceTime(100),\n distinctUntilChanged(),\n tap(data => this.emit()),\n takeUntilDestroyed(this.destroyRef))\n .subscribe();\n this.cdRef.markForCheck();\n }\n\n add() {\n this.combinedItems += ',';\n this.form.addControl('link' + (this.Items.length - 1), new FormControl('', []));\n this.emit();\n this.cdRef.markForCheck();\n }\n\n remove(index: number) {\n\n const initialControls = Object.keys(this.form.controls)\n .filter(key => key.startsWith('link'));\n\n if (index == 0 && initialControls.length === 1) {\n this.form.get(initialControls[0])?.setValue('', {emitEvent: true});\n this.emit();\n this.cdRef.markForCheck();\n return;\n }\n\n // Remove the form control explicitly then rebuild the combinedItems\n this.form.removeControl('link' + index, {emitEvent: true});\n\n this.combinedItems = Object.keys(this.form.controls)\n .filter(key => key.startsWith('link'))\n .map(key => this.form.get(key)?.value)\n .join(',');\n\n\n this.emit();\n this.cdRef.markForCheck();\n }\n\n emit() {\n this.updateItems.emit(Object.keys(this.form.controls)\n .filter(key => key.startsWith('link'))\n .map(key => this.form.get(key)?.value)\n .filter(v => v !== null && v !== ''));\n }\n}\n","
\n\n @for(item of Items; let i = $index; track item; let isFirst = $first) {\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n }\n\n
\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n Input,\n OnInit,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {FormControl, FormGroup, ReactiveFormsModule} from '@angular/forms';\nimport {NgbActiveModal, NgbModalModule} from '@ng-bootstrap/ng-bootstrap';\nimport {ToastrService} from 'ngx-toastr';\nimport {UserCollection} from 'src/app/_models/collection-tag';\nimport {ReadingList} from 'src/app/_models/reading-list';\nimport {CollectionTagService} from 'src/app/_services/collection-tag.service';\nimport {CommonModule} from \"@angular/common\";\nimport {FilterPipe} from \"../../../_pipes/filter.pipe\";\nimport {translate, TranslocoDirective} from \"@jsverse/transloco\";\nimport {ScrobbleProvider} from \"../../../_services/scrobbling.service\";\n\n@Component({\n selector: 'app-bulk-add-to-collection',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FilterPipe, NgbModalModule, TranslocoDirective],\n templateUrl: './bulk-add-to-collection.component.html',\n styleUrls: ['./bulk-add-to-collection.component.scss'],\n encapsulation: ViewEncapsulation.None, // This is needed as per the bootstrap modal documentation to get styles to work.\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BulkAddToCollectionComponent implements OnInit, AfterViewInit {\n\n private readonly modal = inject(NgbActiveModal);\n private readonly collectionService = inject(CollectionTagService);\n private readonly toastr = inject(ToastrService);\n private readonly cdRef = inject(ChangeDetectorRef);\n protected readonly MaxItems = 8;\n\n @Input({required: true}) title!: string;\n /**\n * Series Ids to add to Collection Tag\n */\n @Input() seriesIds: Array = [];\n @ViewChild('title') inputElem!: ElementRef;\n\n /**\n * All existing collections sorted by recent use date\n */\n lists: Array = [];\n loading: boolean = false;\n isCreating: boolean = false;\n listForm: FormGroup = new FormGroup({});\n\n ngOnInit(): void {\n\n this.listForm.addControl('title', new FormControl(this.title, []));\n this.listForm.addControl('filterQuery', new FormControl('', []));\n\n this.loading = true;\n this.cdRef.markForCheck();\n this.collectionService.allCollections(true).subscribe(tags => {\n // Don't allow Smart Collections in\n this.lists = tags.filter(t => t.source === ScrobbleProvider.Kavita);\n this.loading = false;\n this.cdRef.markForCheck();\n });\n }\n\n ngAfterViewInit() {\n // Shift focus to input\n if (this.inputElem) {\n this.inputElem.nativeElement.select();\n this.cdRef.markForCheck();\n }\n }\n\n close() {\n this.modal.close();\n }\n\n create() {\n if (this.isCreating) return;\n const tagName = this.listForm.value.title;\n this.isCreating = true;\n this.cdRef.markForCheck();\n this.collectionService.addByMultiple(0, this.seriesIds, tagName).subscribe(() => {\n this.toastr.success(translate('toasts.series-added-to-collection', {collectionName: tagName}));\n this.isCreating = false;\n this.modal.close();\n });\n }\n\n addToCollection(tag: UserCollection) {\n if (this.seriesIds.length === 0) return;\n\n this.collectionService.addByMultiple(tag.id, this.seriesIds, '').subscribe(() => {\n this.toastr.success(translate('toasts.series-added-to-collection', {collectionName: tag.title}));\n this.modal.close();\n });\n\n }\n\n filterList = (listItem: ReadingList) => {\n return listItem.title.toLowerCase().indexOf((this.listForm.value.filterQuery || '').toLowerCase()) >= 0;\n }\n\n}\n","\n\n
\n

{{t('title')}}

\n \n
\n
\n
\n @if (lists.length >= MaxItems) {\n
\n \n
\n \n \n
\n
\n }\n\n
    \n @for(collectionTag of lists | filter: filterList; let i = $index; track collectionTag.title + collectionTag.promoted) {\n
  • \n {{collectionTag.title}}\n @if (collectionTag.promoted) {\n \n }\n
  • \n }\n\n @if (lists.length === 0 && !loading) {\n
  • {{t('no-data')}}
  • \n }\n\n @if (loading) {\n
  • \n
    \n {{t('loading')}}\n
    \n
  • \n }\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n \n
\n
\n
\n
\n
\n\n\n\n
\n","import {AfterViewInit, Component, ElementRef, inject, Input, OnInit, ViewChild} from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ToastrService } from 'ngx-toastr';\nimport { ReadingList } from 'src/app/_models/reading-list';\nimport { ReadingListService } from 'src/app/_services/reading-list.service';\nimport { FilterPipe } from '../../../_pipes/filter.pipe';\nimport { NgIf, NgFor } from '@angular/common';\nimport {TranslocoDirective, TranslocoService} from \"@jsverse/transloco\";\n\nexport enum ADD_FLOW {\n Series = 0,\n Volume = 1,\n Chapter = 2,\n Multiple = 3,\n Multiple_Series\n}\n\n@Component({\n selector: 'app-add-to-list-modal',\n templateUrl: './add-to-list-modal.component.html',\n styleUrls: ['./add-to-list-modal.component.scss'],\n standalone: true,\n imports: [ReactiveFormsModule, NgIf, NgFor, FilterPipe, TranslocoDirective]\n})\nexport class AddToListModalComponent implements OnInit, AfterViewInit {\n\n @Input({required: true}) title!: string;\n /**\n * Only used in Series flow\n */\n @Input() seriesId?: number;\n /**\n * Only used in Volume flow\n */\n @Input() volumeId?: number;\n /**\n * Only used in Chapter flow\n */\n @Input() chapterId?: number;\n /**\n * Only used in Multiple flow\n */\n @Input() volumeIds?: Array;\n /**\n * Only used in Multiple flow\n */\n @Input() chapterIds?: Array;\n /**\n * Only used in Multiple_Series flow\n */\n @Input() seriesIds?: Array;\n\n /**\n * Determines which Input is required and which API is used to associate to the Reading List\n */\n @Input({required: true}) type!: ADD_FLOW;\n\n /**\n * All existing reading lists sorted by recent use date\n */\n lists: Array = [];\n loading: boolean = false;\n listForm: FormGroup = new FormGroup({});\n\n @ViewChild('title') inputElem!: ElementRef;\n\n filterList = (listItem: ReadingList) => {\n return listItem.title.toLowerCase().indexOf((this.listForm.value.filterQuery || '').toLowerCase()) >= 0;\n }\n\n translocoService = inject(TranslocoService);\n\n\n constructor(private modal: NgbActiveModal, private readingListService: ReadingListService, private toastr: ToastrService) { }\n\n ngOnInit(): void {\n\n this.listForm.addControl('title', new FormControl(this.title, []));\n this.listForm.addControl('filterQuery', new FormControl('', []));\n\n this.loading = true;\n this.readingListService.getReadingLists(false, true).subscribe(lists => {\n this.lists = lists.result;\n this.loading = false;\n });\n\n\n }\n\n ngAfterViewInit() {\n // Shift focus to input\n if (this.inputElem) {\n this.inputElem.nativeElement.select();\n }\n }\n\n close() {\n this.modal.close();\n }\n\n create() {\n this.readingListService.createList(this.listForm.value.title).subscribe(list => {\n this.addToList(list);\n });\n }\n\n addToList(readingList: ReadingList) {\n\n if (this.type === ADD_FLOW.Multiple_Series && this.seriesIds !== undefined) {\n this.readingListService.updateByMultipleSeries(readingList.id, this.seriesIds).subscribe(() => {\n this.toastr.success(this.translocoService.translate('toasts.series-added-to-reading-list'));\n this.modal.close();\n });\n }\n\n if (this.seriesId === undefined) return;\n\n if (this.type === ADD_FLOW.Series && this.seriesId !== undefined) {\n this.readingListService.updateBySeries(readingList.id, this.seriesId).subscribe(() => {\n this.toastr.success(this.translocoService.translate('toasts.series-added-to-reading-list'));\n this.modal.close();\n });\n } else if (this.type === ADD_FLOW.Volume && this.volumeId !== undefined) {\n this.readingListService.updateByVolume(readingList.id, this.seriesId, this.volumeId).subscribe(() => {\n this.toastr.success(this.translocoService.translate('toasts.volumes-added-to-reading-list'));\n this.modal.close();\n });\n } else if (this.type === ADD_FLOW.Chapter && this.chapterId !== undefined) {\n this.readingListService.updateByChapter(readingList.id, this.seriesId, this.chapterId).subscribe(() => {\n this.toastr.success(this.translocoService.translate('toasts.chapter-added-to-reading-list'));\n this.modal.close();\n });\n } else if (this.type === ADD_FLOW.Multiple && this.volumeIds !== undefined && this.chapterIds !== undefined) {\n this.readingListService.updateByMultiple(readingList.id, this.seriesId, this.volumeIds, this.chapterIds).subscribe(() => {\n this.toastr.success(this.translocoService.translate('toasts.multiple-added-to-reading-list'));\n this.modal.close();\n });\n }\n\n }\n}\n","\n\n
\n

{{t('title')}}

\n \n
\n
\n
\n
= 5\">\n \n
\n \n \n
\n
\n
    \n
  • \n {{readingList.title}} \n
  • \n
  • {{t('no-data')}}
  • \n
  • \n
    \n {{t('loading')}}\n
    \n
  • \n
\n
\n
\n
\n
\n
\n \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 { FormGroup, FormControl, Validators, ReactiveFormsModule } from '@angular/forms';\nimport { NgbActiveModal, NgbNav, NgbNavItem, NgbNavItemRole, NgbNavLink, NgbNavContent, NgbTooltip, NgbNavOutlet } from '@ng-bootstrap/ng-bootstrap';\nimport { ToastrService } from 'ngx-toastr';\nimport { debounceTime, distinctUntilChanged, forkJoin, switchMap, tap } from 'rxjs';\nimport { Breakpoint, UtilityService } from 'src/app/shared/_services/utility.service';\nimport { ReadingList } from 'src/app/_models/reading-list';\nimport { AccountService } from 'src/app/_services/account.service';\nimport { ImageService } from 'src/app/_services/image.service';\nimport { ReadingListService } from 'src/app/_services/reading-list.service';\nimport { UploadService } from 'src/app/_services/upload.service';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport { CoverImageChooserComponent } from '../../../cards/cover-image-chooser/cover-image-chooser.component';\nimport { NgIf, NgTemplateOutlet, AsyncPipe } from '@angular/common';\nimport {translate, TranslocoDirective} from \"@jsverse/transloco\";\n\nenum TabID {\n General = 'general-tab',\n CoverImage = 'cover-image-tab'\n}\n\n@Component({\n selector: 'app-edit-reading-list-modal',\n templateUrl: './edit-reading-list-modal.component.html',\n styleUrls: ['./edit-reading-list-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgbNav, NgbNavItem, NgbNavItemRole, NgbNavLink, NgbNavContent, ReactiveFormsModule, NgIf, NgbTooltip, NgTemplateOutlet, CoverImageChooserComponent, NgbNavOutlet, AsyncPipe, TranslocoDirective]\n})\nexport class EditReadingListModalComponent implements OnInit {\n\n @Input({required: true}) readingList!: ReadingList;\n private readonly destroyRef = inject(DestroyRef);\n reviewGroup!: FormGroup;\n\n coverImageIndex: number = 0;\n /**\n * Url of the selected cover\n */\n selectedCover: string = '';\n coverImageLocked: boolean = false;\n imageUrls: Array = [];\n active = TabID.General;\n\n get Breakpoint() { return Breakpoint; }\n get TabID() { return TabID; }\n\n constructor(private ngModal: NgbActiveModal, private readingListService: ReadingListService,\n public utilityService: UtilityService, private uploadService: UploadService, private toastr: ToastrService,\n private imageService: ImageService, private readonly cdRef: ChangeDetectorRef, public accountService: AccountService) { }\n\n ngOnInit(): void {\n this.reviewGroup = new FormGroup({\n title: new FormControl(this.readingList.title, { nonNullable: true, validators: [Validators.required] }),\n summary: new FormControl(this.readingList.summary, { nonNullable: true, validators: [] }),\n promoted: new FormControl(this.readingList.promoted, { nonNullable: true, validators: [] }),\n startingMonth: new FormControl(this.readingList.startingMonth, { nonNullable: true, validators: [Validators.min(1), Validators.max(12)] }),\n startingYear: new FormControl(this.readingList.startingYear, { nonNullable: true, validators: [Validators.min(1000)] }),\n endingMonth: new FormControl(this.readingList.endingMonth, { nonNullable: true, validators: [Validators.min(1), Validators.max(12)] }),\n endingYear: new FormControl(this.readingList.endingYear, { nonNullable: true, validators: [Validators.min(1000)] }),\n });\n\n this.coverImageLocked = this.readingList.coverImageLocked;\n\n this.reviewGroup.get('title')?.valueChanges.pipe(\n debounceTime(100),\n distinctUntilChanged(),\n switchMap(name => this.readingListService.nameExists(name)),\n tap(exists => {\n const isExistingName = this.reviewGroup.get('title')?.value === this.readingList.title;\n if (!exists || isExistingName) {\n this.reviewGroup.get('title')?.setErrors(null);\n } else {\n this.reviewGroup.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.getReadingListCoverImage(this.readingList.id)));\n if (!this.readingList.items || this.readingList.items.length === 0) {\n this.readingListService.getListItems(this.readingList.id).subscribe(items => {\n this.imageUrls.push(...(items).map(rli => this.imageService.getChapterCoverImage(rli.chapterId)));\n });\n } else {\n this.imageUrls.push(...(this.readingList.items).map(rli => this.imageService.getChapterCoverImage(rli.chapterId)));\n }\n }\n\n close() {\n this.ngModal.dismiss(undefined);\n }\n\n save() {\n if (this.reviewGroup.value.title.trim() === '') return;\n\n const model = {...this.reviewGroup.value, readingListId: this.readingList.id, coverImageLocked: this.coverImageLocked};\n model.startingMonth = model.startingMonth || 0;\n model.startingYear = model.startingYear || 0;\n model.endingMonth = model.endingMonth || 0;\n model.endingYear = model.endingYear || 0;\n const apis = [this.readingListService.update(model)];\n\n if (this.selectedCover !== '') {\n apis.push(this.uploadService.updateReadingListCoverImage(this.readingList.id, this.selectedCover))\n }\n\n forkJoin(apis).subscribe(results => {\n this.readingList.title = model.title;\n this.readingList.summary = model.summary;\n this.readingList.coverImageLocked = this.coverImageLocked;\n this.readingList.promoted = model.promoted;\n this.ngModal.close(this.readingList);\n this.toastr.success(translate('toasts.reading-list-updated'));\n });\n }\n\n updateSelectedIndex(index: number) {\n this.coverImageIndex = index;\n this.cdRef.detectChanges();\n }\n\n updateSelectedImage(url: string) {\n this.selectedCover = url;\n }\n\n handleReset() {\n this.coverImageLocked = false;\n }\n\n}\n","\n\n
\n

{{t('title', {name: readingList.title})}}

\n \n
\n
\n
    \n
  • \n {{t(TabID.General)}}\n \n
    \n
    \n
    \n \n \n
    \n
    \n {{t('required-field')}}\n
    \n
    \n {{t('name-unique-validation')}}\n
    \n
    \n
    \n \n
    \n
    \n \n \n \n {{t('promote-tooltip')}}\n \n
    \n
    \n
    \n
    \n\n
    \n
    \n
    {{t('starting-title')}}
    \n
    \n \n \n
    \n
    \n {{t('month-validation')}}\n
    \n
    \n
    \n
    \n \n \n
    \n
    \n {{t('year-validation')}}\n
    \n
    \n
    \n
    \n\n
    \n
    {{t('ending-title')}}
    \n
    \n \n \n
    \n
    \n {{t('month-validation')}}\n
    \n
    \n
    \n
    \n \n \n
    \n
    \n {{t('year-validation')}}\n
    \n
    \n
    \n
    \n
    \n\n
    \n \n \n
    \n
    \n
    \n
  • \n
  • \n {{t(TabID.CoverImage)}}\n \n \n \n
  • \n
\n
\n
\n
\n \n \n
\n\n\n\n
\n","import { Injectable } from '@angular/core';\nimport {environment} from \"../../environments/environment\";\nimport {HttpClient} from \"@angular/common/http\";\nimport {Chapter} from \"../_models/chapter\";\nimport {TextResonse} from \"../_types/text-response\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ChapterService {\n\n baseUrl = environment.apiUrl;\n\n constructor(private httpClient: HttpClient) { }\n\n getChapterMetadata(chapterId: number) {\n return this.httpClient.get(this.baseUrl + 'chapter?chapterId=' + chapterId);\n }\n\n deleteChapter(chapterId: number) {\n return this.httpClient.delete(this.baseUrl + 'chapter?chapterId=' + chapterId);\n }\n\n updateChapter(chapter: Chapter) {\n return this.httpClient.post(this.baseUrl + 'chapter/update', chapter, TextResonse);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport {environment} from \"../../environments/environment\";\nimport {HttpClient} from \"@angular/common/http\";\nimport {Volume} from \"../_models/volume\";\nimport {TextResonse} from \"../_types/text-response\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class VolumeService {\n\n baseUrl = environment.apiUrl;\n\n constructor(private httpClient: HttpClient) { }\n\n getVolumeMetadata(volumeId: number) {\n return this.httpClient.get(this.baseUrl + 'volume?volumeId=' + volumeId);\n }\n\n deleteVolume(volumeId: number) {\n return this.httpClient.delete(this.baseUrl + 'volume?volumeId=' + volumeId);\n }\n\n updateVolume(volume: any) {\n return this.httpClient.post(this.baseUrl + 'volume/update', volume, TextResonse);\n }\n}\n","import {inject, Injectable, OnDestroy} from '@angular/core';\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\nimport { ToastrService } from 'ngx-toastr';\nimport {Subject, tap} from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { BulkAddToCollectionComponent } from '../cards/_modals/bulk-add-to-collection/bulk-add-to-collection.component';\nimport { AddToListModalComponent, ADD_FLOW } from '../reading-list/_modals/add-to-list-modal/add-to-list-modal.component';\nimport { EditReadingListModalComponent } from '../reading-list/_modals/edit-reading-list-modal/edit-reading-list-modal.component';\nimport { ConfirmService } from '../shared/confirm.service';\nimport { LibrarySettingsModalComponent } from '../sidenav/_modals/library-settings-modal/library-settings-modal.component';\nimport { Chapter } from '../_models/chapter';\nimport { Device } from '../_models/device/device';\nimport { Library } from '../_models/library/library';\nimport { ReadingList } from '../_models/reading-list';\nimport { Series } from '../_models/series';\nimport { Volume } from '../_models/volume';\nimport { DeviceService } from './device.service';\nimport { LibraryService } from './library.service';\nimport { MemberService } from './member.service';\nimport { ReaderService } from './reader.service';\nimport { SeriesService } from './series.service';\nimport {translate} from \"@jsverse/transloco\";\nimport {UserCollection} from \"../_models/collection-tag\";\nimport {CollectionTagService} from \"./collection-tag.service\";\nimport {SmartFilter} from \"../_models/metadata/v2/smart-filter\";\nimport {FilterService} from \"./filter.service\";\nimport {ReadingListService} from \"./reading-list.service\";\nimport {ChapterService} from \"./chapter.service\";\nimport {VolumeService} from \"./volume.service\";\n\nexport type LibraryActionCallback = (library: Partial) => void;\nexport type SeriesActionCallback = (series: Series) => void;\nexport type VolumeActionCallback = (volume: Volume) => void;\nexport type ChapterActionCallback = (chapter: Chapter) => void;\nexport type ReadingListActionCallback = (readingList: ReadingList) => void;\nexport type VoidActionCallback = () => void;\nexport type BooleanActionCallback = (result: boolean) => void;\n\n/**\n * Responsible for executing actions\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ActionService {\n\n private readonly chapterService = inject(ChapterService);\n private readonly volumeService = inject(VolumeService);\n private readonly libraryService = inject(LibraryService);\n private readonly seriesService = inject(SeriesService);\n private readonly readerService = inject(ReaderService);\n private readonly toastr = inject(ToastrService);\n private readonly modalService = inject(NgbModal);\n private readonly confirmService = inject(ConfirmService);\n private readonly memberService = inject(MemberService);\n private readonly deviceService = inject(DeviceService);\n private readonly collectionTagService = inject(CollectionTagService);\n private readonly filterService = inject(FilterService);\n private readonly readingListService = inject(ReadingListService);\n\n\n private readingListModalRef: NgbModalRef | null = null;\n private collectionModalRef: NgbModalRef | null = null;\n\n\n /**\n * Request a file scan for a given Library\n * @param library Partial Library, must have id and name populated\n * @param callback Optional callback to perform actions after API completes\n * @returns\n */\n async scanLibrary(library: Partial, callback?: LibraryActionCallback) {\n if (!library.hasOwnProperty('id') || library.id === undefined) {\n return;\n }\n\n // Prompt user if we should do a force or not\n const force = false; // await this.promptIfForce();\n\n this.libraryService.scan(library.id, force).pipe(take(1)).subscribe((res: any) => {\n this.toastr.info(translate('toasts.scan-queued', {name: library.name}));\n if (callback) {\n callback(library);\n }\n });\n }\n\n\n /**\n * Request a refresh of Metadata for a given Library\n * @param library Partial Library, must have id and name populated\n * @param callback Optional callback to perform actions after API completes\n * @param forceUpdate Optional Should we force\n * @param forceColorscape Optional Should we force colorscape gen\n * @returns\n */\n async refreshLibraryMetadata(library: Partial, callback?: LibraryActionCallback, forceUpdate: boolean = true, forceColorscape: boolean = false) {\n if (!library.hasOwnProperty('id') || library.id === undefined) {\n return;\n }\n\n // Prompt the user if we are doing a forced call\n if (forceUpdate) {\n if (!await this.confirmService.confirm(translate('toasts.confirm-regen-covers'))) {\n if (callback) {\n callback(library);\n }\n return;\n }\n }\n\n const message = forceUpdate ? 'toasts.refresh-covers-queued' : 'toasts.generate-colorscape-queued';\n\n this.libraryService.refreshMetadata(library?.id, forceUpdate, forceColorscape).subscribe((res: any) => {\n this.toastr.info(translate(message, {name: library.name}));\n\n if (callback) {\n callback(library);\n }\n });\n }\n\n editLibrary(library: Partial, callback?: LibraryActionCallback) {\n const modalRef = this.modalService.open(LibrarySettingsModalComponent, {size: 'xl', fullscreen: 'md'});\n modalRef.componentInstance.library = library;\n modalRef.closed.subscribe((closeResult: {success: boolean, library: Library, coverImageUpdate: boolean}) => {\n if (callback) callback(library)\n });\n }\n\n /**\n * Request an analysis of files for a given Library (currently just word count)\n * @param library Partial Library, must have id and name populated\n * @param callback Optional callback to perform actions after API completes\n * @returns\n */\n async analyzeFiles(library: Partial, callback?: LibraryActionCallback) {\n if (!library.hasOwnProperty('id') || library.id === undefined) {\n return;\n }\n\n if (!await this.confirmService.alert(translate('toasts.alert-long-running'))) {\n if (callback) {\n callback(library);\n }\n return;\n }\n\n this.libraryService.analyze(library?.id).pipe(take(1)).subscribe((res: any) => {\n this.toastr.info(translate('toasts.library-file-analysis-queued', {name: library.name}));\n if (callback) {\n callback(library);\n }\n });\n }\n\n async deleteLibrary(library: Partial, callback?: LibraryActionCallback) {\n if (!library.hasOwnProperty('id') || library.id === undefined) {\n return;\n }\n\n if (!await this.confirmService.alert(translate('toasts.confirm-library-delete'))) {\n if (callback) {\n callback(library);\n }\n return;\n }\n\n this.libraryService.delete(library?.id).pipe(take(1)).subscribe((res: any) => {\n this.toastr.info(translate('toasts.library-deleted', {name: library.name}));\n if (callback) {\n callback(library);\n }\n });\n }\n\n /**\n * Mark a series as read; updates the series pagesRead\n * @param series Series, must have id and name populated\n * @param callback Optional callback to perform actions after API completes\n */\n markSeriesAsRead(series: Series, callback?: SeriesActionCallback) {\n this.seriesService.markRead(series.id).pipe(take(1)).subscribe(res => {\n series.pagesRead = series.pages;\n this.toastr.success(translate('toasts.entity-read', {name: series.name}));\n if (callback) {\n callback(series);\n }\n });\n }\n\n /**\n * Mark a series as unread; updates the series pagesRead\n * @param series Series, must have id and name populated\n * @param callback Optional callback to perform actions after API completes\n */\n markSeriesAsUnread(series: Series, callback?: SeriesActionCallback) {\n this.seriesService.markUnread(series.id).pipe(take(1)).subscribe(res => {\n series.pagesRead = 0;\n this.toastr.success(translate('toasts.entity-unread', {name: series.name}));\n if (callback) {\n callback(series);\n }\n });\n }\n\n /**\n * Start a file scan for a Series\n * @param series Series, must have libraryId and name populated\n * @param callback Optional callback to perform actions after API completes\n */\n async scanSeries(series: Series, callback?: SeriesActionCallback) {\n this.seriesService.scan(series.libraryId, series.id).pipe(take(1)).subscribe((res: any) => {\n this.toastr.info(translate('toasts.scan-queued', {name: series.name}));\n if (callback) {\n callback(series);\n }\n });\n }\n\n /**\n * Start a file scan for analyze files for a Series\n * @param series Series, must have libraryId and name populated\n * @param callback Optional callback to perform actions after API completes\n */\n analyzeFilesForSeries(series: Series, callback?: SeriesActionCallback) {\n this.seriesService.analyzeFiles(series.libraryId, series.id).pipe(take(1)).subscribe((res: any) => {\n this.toastr.info(translate('toasts.scan-queued', {name: series.name}));\n if (callback) {\n callback(series);\n }\n });\n }\n\n /**\n * Start a metadata refresh for a Series\n * @param series Series, must have libraryId, id and name populated\n * @param callback Optional callback to perform actions after API completes\n * @param forceUpdate If cache should be checked or not\n * @param forceColorscape If cache should be checked or not\n */\n async refreshSeriesMetadata(series: Series, callback?: SeriesActionCallback, forceUpdate: boolean = true, forceColorscape: boolean = false) {\n\n // Prompt the user if we are doing a forced call\n if (forceUpdate) {\n if (!await this.confirmService.confirm(translate('toasts.confirm-regen-covers'))) {\n if (callback) {\n callback(series);\n }\n return;\n }\n }\n\n const message = forceUpdate ? 'toasts.refresh-covers-queued' : 'toasts.generate-colorscape-queued';\n\n this.seriesService.refreshMetadata(series, forceUpdate, forceColorscape).pipe(take(1)).subscribe((res: any) => {\n this.toastr.info(translate(message, {name: series.name}));\n if (callback) {\n callback(series);\n }\n });\n }\n\n /**\n * Mark all chapters and the volume as Read\n * @param seriesId Series Id\n * @param volume Volume, should have id, chapters and pagesRead populated\n * @param callback Optional callback to perform actions after API completes\n */\n markVolumeAsRead(seriesId: number, volume: Volume, callback?: VolumeActionCallback) {\n this.readerService.markVolumeRead(seriesId, volume.id).pipe(take(1)).subscribe(() => {\n volume.pagesRead = volume.pages;\n volume.chapters?.forEach(c => c.pagesRead = c.pages);\n this.toastr.success(translate('toasts.mark-read'));\n\n if (callback) {\n callback(volume);\n }\n });\n }\n\n /**\n * Mark all chapters and the volume as unread\n * @param seriesId Series Id\n * @param volume Volume, should have id, chapters and pagesRead populated\n * @param callback Optional callback to perform actions after API completes\n */\n markVolumeAsUnread(seriesId: number, volume: Volume, callback?: VolumeActionCallback) {\n this.readerService.markVolumeUnread(seriesId, volume.id).subscribe(() => {\n volume.pagesRead = 0;\n volume.chapters?.forEach(c => c.pagesRead = 0);\n this.toastr.success(translate('toasts.mark-unread'));\n if (callback) {\n callback(volume);\n }\n });\n }\n\n /**\n * Mark a chapter as read\n * @param libraryId Library Id\n * @param seriesId Series Id\n * @param chapter Chapter, should have id, pages, volumeId populated\n * @param callback Optional callback to perform actions after API completes\n */\n markChapterAsRead(libraryId: number, seriesId: number, chapter: Chapter, callback?: ChapterActionCallback) {\n this.readerService.saveProgress(libraryId, seriesId, chapter.volumeId, chapter.id, chapter.pages).pipe(take(1)).subscribe(results => {\n chapter.pagesRead = chapter.pages;\n this.toastr.success(translate('toasts.mark-read'));\n if (callback) {\n callback(chapter);\n }\n });\n }\n\n /**\n * Mark a chapter as unread\n * @param libraryId Library Id\n * @param seriesId Series Id\n * @param chapter Chapter, should have id, pages, volumeId populated\n * @param callback Optional callback to perform actions after API completes\n */\n markChapterAsUnread(libraryId: number, seriesId: number, chapter: Chapter, callback?: ChapterActionCallback) {\n this.readerService.saveProgress(libraryId, seriesId, chapter.volumeId, chapter.id, 0).pipe(take(1)).subscribe(results => {\n chapter.pagesRead = 0;\n this.toastr.success(translate('toasts.mark-unread'));\n if (callback) {\n callback(chapter);\n }\n });\n }\n\n /**\n * Mark all chapters and the volumes as Read. All volumes and chapters must belong to a series\n * @param seriesId Series Id\n * @param volumes Volumes, should have id, chapters and pagesRead populated\n * @param chapters Optional Chapters, should have id\n * @param callback Optional callback to perform actions after API completes\n */\n markMultipleAsRead(seriesId: number, volumes: Array, chapters?: Array, callback?: VoidActionCallback) {\n this.readerService.markMultipleRead(seriesId, volumes.map(v => v.id), chapters?.map(c => c.id)).pipe(take(1)).subscribe(() => {\n volumes.forEach(volume => {\n volume.pagesRead = volume.pages;\n volume.chapters?.forEach(c => c.pagesRead = c.pages);\n });\n chapters?.forEach(c => c.pagesRead = c.pages);\n this.toastr.success(translate('toasts.mark-read'));\n\n if (callback) {\n callback();\n }\n });\n }\n\n /**\n * Mark all chapters and the volumes as Unread. All volumes must belong to a series\n * @param seriesId Series Id\n * @param volumes Volumes, should have id, chapters and pagesRead populated\n * @param chapters Optional Chapters, should have id\n * @param callback Optional callback to perform actions after API completes\n */\n markMultipleAsUnread(seriesId: number, volumes: Array, chapters?: Array, callback?: VoidActionCallback) {\n this.readerService.markMultipleUnread(seriesId, volumes.map(v => v.id), chapters?.map(c => c.id)).pipe(take(1)).subscribe(() => {\n volumes.forEach(volume => {\n volume.pagesRead = 0;\n volume.chapters?.forEach(c => c.pagesRead = 0);\n });\n chapters?.forEach(c => c.pagesRead = 0);\n this.toastr.success(translate('toasts.mark-unread'));\n\n if (callback) {\n callback();\n }\n });\n }\n\n /**\n * Mark all series as Read.\n * @param series Series, should have id, pagesRead populated\n * @param callback Optional callback to perform actions after API completes\n */\n markMultipleSeriesAsRead(series: Array, callback?: VoidActionCallback) {\n this.readerService.markMultipleSeriesRead(series.map(v => v.id)).pipe(take(1)).subscribe(() => {\n series.forEach(s => {\n s.pagesRead = s.pages;\n });\n this.toastr.success(translate('toasts.mark-read'));\n\n if (callback) {\n callback();\n }\n });\n }\n\n /**\n * Mark all series as Unread.\n * @param series Series, should have id, pagesRead populated\n * @param callback Optional callback to perform actions after API completes\n */\n markMultipleSeriesAsUnread(series: Array, callback?: VoidActionCallback) {\n this.readerService.markMultipleSeriesUnread(series.map(v => v.id)).pipe(take(1)).subscribe(() => {\n series.forEach(s => {\n s.pagesRead = s.pages;\n });\n this.toastr.success(translate('toasts.mark-unread'));\n\n if (callback) {\n callback();\n }\n });\n }\n\n /**\n * Mark all collections as promoted/unpromoted.\n * @param collections UserCollection, should have id, pagesRead populated\n * @param promoted boolean, promoted state\n * @param callback Optional callback to perform actions after API completes\n */\n promoteMultipleCollections(collections: Array, promoted: boolean, callback?: BooleanActionCallback) {\n this.collectionTagService.promoteMultipleCollections(collections.map(v => v.id), promoted).pipe(take(1)).subscribe(() => {\n if (promoted) {\n this.toastr.success(translate('toasts.collections-promoted'));\n } else {\n this.toastr.success(translate('toasts.collections-unpromoted'));\n }\n\n if (callback) {\n callback(true);\n }\n });\n }\n\n /**\n * Deletes multiple collections\n * @param collections UserCollection, should have id, pagesRead populated\n * @param callback Optional callback to perform actions after API completes\n */\n async deleteMultipleCollections(collections: Array, callback?: BooleanActionCallback) {\n if (!await this.confirmService.confirm(translate('toasts.confirm-delete-collections'))) return;\n\n this.collectionTagService.deleteMultipleCollections(collections.map(v => v.id)).pipe(take(1)).subscribe(() => {\n this.toastr.success(translate('toasts.collections-deleted'));\n\n if (callback) {\n callback(true);\n }\n });\n }\n\n /**\n * Mark all reading lists as promoted/unpromoted.\n * @param readingLists UserCollection, should have id, pagesRead populated\n * @param promoted boolean, promoted state\n * @param callback Optional callback to perform actions after API completes\n */\n promoteMultipleReadingLists(readingLists: Array, promoted: boolean, callback?: BooleanActionCallback) {\n this.readingListService.promoteMultipleReadingLists(readingLists.map(v => v.id), promoted).pipe(take(1)).subscribe(() => {\n if (promoted) {\n this.toastr.success(translate('toasts.reading-list-promoted'));\n } else {\n this.toastr.success(translate('toasts.reading-list-unpromoted'));\n }\n\n if (callback) {\n callback(true);\n }\n });\n }\n\n /**\n * Deletes multiple collections\n * @param readingLists ReadingList, should have id\n * @param callback Optional callback to perform actions after API completes\n */\n async deleteMultipleReadingLists(readingLists: Array, callback?: BooleanActionCallback) {\n if (!await this.confirmService.confirm(translate('toasts.confirm-delete-reading-list'))) return;\n\n this.readingListService.deleteMultipleReadingLists(readingLists.map(v => v.id)).pipe(take(1)).subscribe(() => {\n this.toastr.success(translate('toasts.reading-lists-deleted'));\n\n if (callback) {\n callback(true);\n }\n });\n }\n\n addMultipleToReadingList(seriesId: number, volumes: Array, chapters?: Array, callback?: BooleanActionCallback) {\n if (this.readingListModalRef != null) { return; }\n this.readingListModalRef = this.modalService.open(AddToListModalComponent, { scrollable: true, size: 'md', fullscreen: 'md' });\n this.readingListModalRef.componentInstance.seriesId = seriesId;\n this.readingListModalRef.componentInstance.volumeIds = volumes.map(v => v.id);\n this.readingListModalRef.componentInstance.chapterIds = chapters?.map(c => c.id);\n this.readingListModalRef.componentInstance.title = translate('action.multiple-selections');\n this.readingListModalRef.componentInstance.type = ADD_FLOW.Multiple;\n\n\n this.readingListModalRef.closed.pipe(take(1)).subscribe(() => {\n this.readingListModalRef = null;\n if (callback) {\n callback(true);\n }\n });\n this.readingListModalRef.dismissed.pipe(take(1)).subscribe(() => {\n this.readingListModalRef = null;\n if (callback) {\n callback(false);\n }\n });\n }\n\n addMultipleSeriesToWantToReadList(seriesIds: Array, callback?: VoidActionCallback) {\n this.memberService.addSeriesToWantToRead(seriesIds).subscribe(() => {\n this.toastr.success('Series added to Want to Read list');\n if (callback) {\n callback();\n }\n });\n }\n\n removeMultipleSeriesFromWantToReadList(seriesIds: Array, callback?: VoidActionCallback) {\n this.memberService.removeSeriesToWantToRead(seriesIds).subscribe(() => {\n this.toastr.success(translate('toasts.series-removed-want-to-read'));\n if (callback) {\n callback();\n }\n });\n }\n\n addMultipleSeriesToReadingList(series: Array, callback?: BooleanActionCallback) {\n if (this.readingListModalRef != null) { return; }\n this.readingListModalRef = this.modalService.open(AddToListModalComponent, { scrollable: true, size: 'md', fullscreen: 'md' });\n this.readingListModalRef.componentInstance.seriesIds = series.map(v => v.id);\n this.readingListModalRef.componentInstance.title = translate('action.multiple-selections');\n this.readingListModalRef.componentInstance.type = ADD_FLOW.Multiple_Series;\n\n\n this.readingListModalRef.closed.pipe(take(1)).subscribe(() => {\n this.readingListModalRef = null;\n if (callback) {\n callback(true);\n }\n });\n this.readingListModalRef.dismissed.pipe(take(1)).subscribe(() => {\n this.readingListModalRef = null;\n if (callback) {\n callback(false);\n }\n });\n }\n\n /**\n * Adds a set of series to a collection tag\n * @param series\n * @param callback\n * @returns\n */\n addMultipleSeriesToCollectionTag(series: Array, callback?: BooleanActionCallback) {\n if (this.collectionModalRef != null) { return; }\n this.collectionModalRef = this.modalService.open(BulkAddToCollectionComponent, { scrollable: true, size: 'md', windowClass: 'collection', fullscreen: 'md' });\n this.collectionModalRef.componentInstance.seriesIds = series.map(v => v.id);\n this.collectionModalRef.componentInstance.title = translate('actionable.new-collection');\n\n this.collectionModalRef.closed.pipe(take(1)).subscribe(() => {\n this.collectionModalRef = null;\n if (callback) {\n callback(true);\n }\n });\n this.collectionModalRef.dismissed.pipe(take(1)).subscribe(() => {\n this.collectionModalRef = null;\n if (callback) {\n callback(false);\n }\n });\n }\n\n addSeriesToReadingList(series: Series, callback?: SeriesActionCallback) {\n if (this.readingListModalRef != null) { return; }\n this.readingListModalRef = this.modalService.open(AddToListModalComponent, { scrollable: true, size: 'md', fullscreen: 'md' });\n this.readingListModalRef.componentInstance.seriesId = series.id;\n this.readingListModalRef.componentInstance.title = series.name;\n this.readingListModalRef.componentInstance.type = ADD_FLOW.Series;\n\n\n this.readingListModalRef.closed.pipe(take(1)).subscribe(() => {\n this.readingListModalRef = null;\n if (callback) {\n callback(series);\n }\n });\n this.readingListModalRef.dismissed.pipe(take(1)).subscribe(() => {\n this.readingListModalRef = null;\n if (callback) {\n callback(series);\n }\n });\n }\n\n addVolumeToReadingList(volume: Volume, seriesId: number, callback?: VolumeActionCallback) {\n if (this.readingListModalRef != null) { return; }\n this.readingListModalRef = this.modalService.open(AddToListModalComponent, { scrollable: true, size: 'md', fullscreen: 'md' });\n this.readingListModalRef.componentInstance.seriesId = seriesId;\n this.readingListModalRef.componentInstance.volumeId = volume.id;\n this.readingListModalRef.componentInstance.type = ADD_FLOW.Volume;\n\n\n this.readingListModalRef.closed.pipe(take(1)).subscribe(() => {\n this.readingListModalRef = null;\n if (callback) {\n callback(volume);\n }\n });\n this.readingListModalRef.dismissed.pipe(take(1)).subscribe(() => {\n this.readingListModalRef = null;\n if (callback) {\n callback(volume);\n }\n });\n }\n\n addChapterToReadingList(chapter: Chapter, seriesId: number, callback?: ChapterActionCallback) {\n if (this.readingListModalRef != null) { return; }\n this.readingListModalRef = this.modalService.open(AddToListModalComponent, { scrollable: true, size: 'md', fullscreen: 'md' });\n this.readingListModalRef.componentInstance.seriesId = seriesId;\n this.readingListModalRef.componentInstance.chapterId = chapter.id;\n this.readingListModalRef.componentInstance.type = ADD_FLOW.Chapter;\n\n\n this.readingListModalRef.closed.pipe(take(1)).subscribe(() => {\n this.readingListModalRef = null;\n if (callback) {\n callback(chapter);\n }\n });\n this.readingListModalRef.dismissed.pipe(take(1)).subscribe(() => {\n this.readingListModalRef = null;\n if (callback) {\n callback(chapter);\n }\n });\n }\n\n editReadingList(readingList: ReadingList, callback?: ReadingListActionCallback) {\n const readingListModalRef = this.modalService.open(EditReadingListModalComponent, { scrollable: true, size: 'lg', fullscreen: 'md' });\n readingListModalRef.componentInstance.readingList = readingList;\n readingListModalRef.closed.pipe(take(1)).subscribe((list) => {\n if (callback && list !== undefined) {\n callback(readingList);\n }\n });\n readingListModalRef.dismissed.pipe(take(1)).subscribe((list) => {\n if (callback && list !== undefined) {\n callback(readingList);\n }\n });\n }\n\n /**\n * Deletes all series\n * @param seriesIds - List of series\n * @param callback - Optional callback once complete\n */\n async deleteMultipleSeries(seriesIds: Array, callback?: BooleanActionCallback) {\n if (!await this.confirmService.confirm(translate('toasts.confirm-delete-multiple-series', {count: seriesIds.length}))) {\n if (callback) {\n callback(false);\n }\n return;\n }\n this.seriesService.deleteMultipleSeries(seriesIds.map(s => s.id)).pipe(take(1)).subscribe(res => {\n if (res) {\n this.toastr.success(translate('toasts.series-deleted'));\n } else {\n this.toastr.error(translate('errors.generic'));\n }\n\n if (callback) {\n callback(res);\n }\n });\n }\n\n async deleteSeries(series: Series, callback?: BooleanActionCallback) {\n if (!await this.confirmService.confirm(translate('toasts.confirm-delete-series'))) {\n if (callback) {\n callback(false);\n }\n return;\n }\n\n this.seriesService.delete(series.id).subscribe((res: boolean) => {\n if (callback) {\n if (res) {\n this.toastr.success(translate('toasts.series-deleted'));\n } else {\n this.toastr.error(translate('errors.generic'));\n }\n\n callback(res);\n }\n });\n }\n\n async deleteChapter(chapterId: number, callback?: BooleanActionCallback) {\n if (!await this.confirmService.confirm(translate('toasts.confirm-delete-chapter'))) {\n if (callback) {\n callback(false);\n }\n return;\n }\n\n this.chapterService.deleteChapter(chapterId).subscribe((res: boolean) => {\n if (callback) {\n if (res) {\n this.toastr.success(translate('toasts.chapter-deleted'));\n } else {\n this.toastr.error(translate('errors.generic'));\n }\n\n callback(res);\n }\n });\n }\n\n async deleteVolume(volumeId: number, callback?: BooleanActionCallback) {\n if (!await this.confirmService.confirm(translate('toasts.confirm-delete-volume'))) {\n if (callback) {\n callback(false);\n }\n return;\n }\n\n this.volumeService.deleteVolume(volumeId).subscribe((res: boolean) => {\n if (callback) {\n if (res) {\n this.toastr.success(translate('toasts.volume-deleted'));\n } else {\n this.toastr.error(translate('errors.generic'));\n }\n\n callback(res);\n }\n });\n }\n\n sendToDevice(chapterIds: Array, device: Device, callback?: VoidActionCallback) {\n this.deviceService.sendTo(chapterIds, device.id).subscribe(() => {\n this.toastr.success(translate('toasts.file-send-to', {name: device.name}));\n if (callback) {\n callback();\n }\n });\n }\n\n sendSeriesToDevice(seriesId: number, device: Device, callback?: VoidActionCallback) {\n this.deviceService.sendSeriesTo(seriesId, device.id).subscribe(() => {\n this.toastr.success(translate('toasts.file-send-to', {name: device.name}));\n if (callback) {\n callback();\n }\n });\n }\n\n async deleteFilter(filterId: number, callback?: BooleanActionCallback) {\n if (!await this.confirmService.confirm(translate('toasts.confirm-delete-smart-filter'))) {\n if (callback) {\n callback(false);\n }\n return;\n }\n\n this.filterService.deleteFilter(filterId).subscribe(_ => {\n this.toastr.success(translate('toasts.smart-filter-deleted'));\n\n if (callback) {\n callback(true);\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, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {\n NgbAccordionBody,\n NgbAccordionButton, NgbAccordionCollapse,\n NgbAccordionDirective, NgbAccordionHeader, NgbAccordionItem,\n NgbActiveModal,\n NgbModal,\n NgbModalModule,\n NgbNav,\n NgbNavContent,\n NgbNavItem,\n NgbNavLink,\n NgbNavOutlet,\n NgbTooltip\n} from '@ng-bootstrap/ng-bootstrap';\nimport {ToastrService} from 'ngx-toastr';\nimport {debounceTime, distinctUntilChanged, switchMap, tap} from 'rxjs';\nimport {SettingsService} from 'src/app/admin/settings.service';\nimport {\n DirectoryPickerComponent,\n DirectoryPickerResult\n} from 'src/app/admin/_modals/directory-picker/directory-picker.component';\nimport {ConfirmService} from 'src/app/shared/confirm.service';\nimport {Breakpoint, UtilityService} from 'src/app/shared/_services/utility.service';\nimport {Library, LibraryType} from 'src/app/_models/library/library';\nimport {ImageService} from 'src/app/_services/image.service';\nimport {LibraryService} from 'src/app/_services/library.service';\nimport {UploadService} from 'src/app/_services/upload.service';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport {CommonModule} from \"@angular/common\";\nimport {SentenceCasePipe} from \"../../../_pipes/sentence-case.pipe\";\nimport {CoverImageChooserComponent} from \"../../../cards/cover-image-chooser/cover-image-chooser.component\";\nimport {translate, TranslocoModule} from \"@jsverse/transloco\";\nimport {DefaultDatePipe} from \"../../../_pipes/default-date.pipe\";\nimport {allFileTypeGroup, FileTypeGroup} from \"../../../_models/library/file-type-group.enum\";\nimport {FileTypeGroupPipe} from \"../../../_pipes/file-type-group.pipe\";\nimport {EditListComponent} from \"../../../shared/edit-list/edit-list.component\";\nimport {WikiLink} from \"../../../_models/wiki\";\nimport {SettingItemComponent} from \"../../../settings/_components/setting-item/setting-item.component\";\nimport {SettingSwitchComponent} from \"../../../settings/_components/setting-switch/setting-switch.component\";\nimport {SettingButtonComponent} from \"../../../settings/_components/setting-button/setting-button.component\";\nimport {Action, ActionFactoryService, ActionItem} from \"../../../_services/action-factory.service\";\nimport {ActionService} from \"../../../_services/action.service\";\n\nenum TabID {\n General = 'general-tab',\n Folder = 'folder-tab',\n Cover = 'cover-tab',\n Advanced = 'advanced-tab',\n Tasks = 'tasks-tab'\n}\n\nenum StepID {\n General = 0,\n Folder = 1,\n Cover = 2,\n Advanced = 3\n}\n\n@Component({\n selector: 'app-library-settings-modal',\n standalone: true,\n imports: [CommonModule, NgbModalModule, NgbNavLink, NgbNavItem, NgbNavContent, ReactiveFormsModule, NgbTooltip,\n SentenceCasePipe, NgbNav, NgbNavOutlet, CoverImageChooserComponent, TranslocoModule, DefaultDatePipe,\n FileTypeGroupPipe, NgbAccordionDirective, NgbAccordionItem, NgbAccordionHeader, NgbAccordionButton, NgbAccordionCollapse, NgbAccordionBody, EditListComponent, SettingItemComponent, SettingSwitchComponent, SettingButtonComponent],\n templateUrl: './library-settings-modal.component.html',\n styleUrls: ['./library-settings-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LibrarySettingsModalComponent implements OnInit {\n\n protected readonly utilityService = inject(UtilityService);\n protected readonly modal = inject(NgbActiveModal);\n private readonly destroyRef = inject(DestroyRef);\n private readonly uploadService = inject(UploadService);\n private readonly modalService = inject(NgbModal);\n private readonly settingService = inject(SettingsService);\n private readonly confirmService = inject(ConfirmService);\n private readonly libraryService = inject(LibraryService);\n private readonly toastr = inject(ToastrService);\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly imageService = inject(ImageService);\n private readonly actionFactoryService = inject(ActionFactoryService);\n private readonly actionService = inject(ActionService);\n\n protected readonly LibraryType = LibraryType;\n protected readonly Breakpoint = Breakpoint;\n protected readonly TabID = TabID;\n protected readonly WikiLink = WikiLink;\n protected readonly Action = Action;\n\n @Input({required: true}) library!: Library | undefined;\n\n active = TabID.General;\n imageUrls: Array = [];\n protected readonly excludePatternTooltip = `` + translate('library-settings-modal.exclude-patterns-tooltip') +\n `${translate('library-settings-modal.help')}` +\n ``;\n\n libraryForm: FormGroup = new FormGroup({\n name: new FormControl('', { nonNullable: true, validators: [Validators.required] }),\n type: new FormControl(LibraryType.Manga, { nonNullable: true, validators: [Validators.required] }),\n folderWatching: new FormControl(true, { nonNullable: true, validators: [Validators.required] }),\n includeInDashboard: new FormControl(true, { nonNullable: true, validators: [Validators.required] }),\n includeInRecommended: new FormControl(true, { nonNullable: true, validators: [Validators.required] }),\n includeInSearch: new FormControl(true, { nonNullable: true, validators: [Validators.required] }),\n manageCollections: new FormControl(true, { nonNullable: true, validators: [Validators.required] }),\n manageReadingLists: new FormControl(true, { nonNullable: true, validators: [Validators.required] }),\n allowScrobbling: new FormControl(true, { nonNullable: true, validators: [Validators.required] }),\n collapseSeriesRelationships: new FormControl(false, { nonNullable: true, validators: [Validators.required] }),\n });\n\n selectedFolders: string[] = [];\n madeChanges = false;\n libraryTypes: string[] = []\n\n isAddLibrary = false;\n setupStep = StepID.General;\n fileTypeGroups = allFileTypeGroup;\n excludePatterns: Array = [''];\n\n tasks: ActionItem[] = this.getTasks();\n\n get IsKavitaPlusEligible() {\n const libType = parseInt(this.libraryForm.get('type')?.value + '', 10) as LibraryType;\n return libType === LibraryType.Manga || libType === LibraryType.LightNovel;\n }\n\n ngOnInit(): void {\n this.settingService.getLibraryTypes().subscribe((types) => {\n this.libraryTypes = types;\n this.cdRef.markForCheck();\n });\n\n if (this.library === undefined) {\n this.isAddLibrary = true;\n this.cdRef.markForCheck();\n }\n\n if (this.library?.coverImage != null && this.library?.coverImage !== '') {\n this.imageUrls.push(this.imageService.getLibraryCoverImage(this.library.id));\n this.cdRef.markForCheck();\n }\n\n if (this.library && !(this.library.type === LibraryType.Manga || this.library.type === LibraryType.LightNovel) ) {\n this.libraryForm.get('allowScrobbling')?.setValue(false);\n this.libraryForm.get('allowScrobbling')?.disable();\n }\n\n this.libraryForm.get('name')?.valueChanges.pipe(\n debounceTime(100),\n distinctUntilChanged(),\n switchMap(name => this.libraryService.libraryNameExists(name)),\n tap(exists => {\n const isExistingName = this.libraryForm.get('name')?.value === this.library?.name;\n if (!exists || isExistingName) {\n this.libraryForm.get('name')?.setErrors(null);\n } else {\n this.libraryForm.get('name')?.setErrors({duplicateName: true})\n }\n this.cdRef.markForCheck();\n }),\n takeUntilDestroyed(this.destroyRef)\n ).subscribe();\n\n\n this.setValues();\n\n // This needs to only apply after first render\n this.libraryForm.get('type')?.valueChanges.pipe(\n tap((type: LibraryType) => {\n const libType = parseInt(type + '', 10) as LibraryType;\n switch (libType) {\n case LibraryType.Manga:\n this.libraryForm.get(FileTypeGroup.Archive + '')?.setValue(true);\n this.libraryForm.get(FileTypeGroup.Images + '')?.setValue(true);\n this.libraryForm.get(FileTypeGroup.Pdf + '')?.setValue(false);\n this.libraryForm.get(FileTypeGroup.Epub + '')?.setValue(false);\n break;\n case LibraryType.Comic:\n case LibraryType.ComicVine:\n this.libraryForm.get(FileTypeGroup.Archive + '')?.setValue(true);\n this.libraryForm.get(FileTypeGroup.Images + '')?.setValue(false);\n this.libraryForm.get(FileTypeGroup.Pdf + '')?.setValue(false);\n this.libraryForm.get(FileTypeGroup.Epub + '')?.setValue(false);\n break;\n case LibraryType.Book:\n this.libraryForm.get(FileTypeGroup.Archive + '')?.setValue(false);\n this.libraryForm.get(FileTypeGroup.Images + '')?.setValue(false);\n this.libraryForm.get(FileTypeGroup.Pdf + '')?.setValue(true);\n this.libraryForm.get(FileTypeGroup.Epub + '')?.setValue(true);\n break;\n case LibraryType.LightNovel:\n this.libraryForm.get(FileTypeGroup.Archive + '')?.setValue(false);\n this.libraryForm.get(FileTypeGroup.Images + '')?.setValue(false);\n this.libraryForm.get(FileTypeGroup.Pdf + '')?.setValue(false);\n this.libraryForm.get(FileTypeGroup.Epub + '')?.setValue(true);\n break;\n case LibraryType.Images:\n this.libraryForm.get(FileTypeGroup.Archive + '')?.setValue(false);\n this.libraryForm.get(FileTypeGroup.Images + '')?.setValue(true);\n this.libraryForm.get(FileTypeGroup.Pdf + '')?.setValue(false);\n this.libraryForm.get(FileTypeGroup.Epub + '')?.setValue(false);\n break;\n }\n\n this.libraryForm.get('allowScrobbling')?.setValue(this.IsKavitaPlusEligible);\n if (!this.IsKavitaPlusEligible) {\n this.libraryForm.get('allowScrobbling')?.disable();\n } else {\n this.libraryForm.get('allowScrobbling')?.enable();\n }\n this.cdRef.markForCheck();\n }),\n takeUntilDestroyed(this.destroyRef)\n ).subscribe();\n }\n\n setValues() {\n if (this.library !== undefined) {\n this.libraryForm.get('name')?.setValue(this.library.name);\n this.libraryForm.get('type')?.setValue(this.library.type);\n this.libraryForm.get('folderWatching')?.setValue(this.library.folderWatching);\n this.libraryForm.get('includeInDashboard')?.setValue(this.library.includeInDashboard);\n this.libraryForm.get('includeInRecommended')?.setValue(this.library.includeInRecommended);\n this.libraryForm.get('includeInSearch')?.setValue(this.library.includeInSearch);\n this.libraryForm.get('manageCollections')?.setValue(this.library.manageCollections);\n this.libraryForm.get('manageReadingLists')?.setValue(this.library.manageReadingLists);\n this.libraryForm.get('collapseSeriesRelationships')?.setValue(this.library.collapseSeriesRelationships);\n this.libraryForm.get('allowScrobbling')?.setValue(this.library.allowScrobbling);\n this.selectedFolders = this.library.folders;\n this.madeChanges = false;\n for(let fileTypeGroup of allFileTypeGroup) {\n this.libraryForm.addControl(fileTypeGroup + '', new FormControl(this.library.libraryFileTypes.includes(fileTypeGroup), []));\n }\n for(let glob of this.library.excludePatterns) {\n this.libraryForm.addControl('excludeGlob-' , new FormControl(glob, []));\n }\n this.excludePatterns = this.library.excludePatterns;\n } else {\n for(let fileTypeGroup of allFileTypeGroup) {\n this.libraryForm.addControl(fileTypeGroup + '', new FormControl(true, []));\n }\n }\n\n if (this.excludePatterns.length === 0) {\n this.excludePatterns = [''];\n }\n\n this.cdRef.markForCheck();\n }\n\n updateGlobs(items: Array) {\n this.excludePatterns = items;\n this.cdRef.markForCheck();\n }\n\n isDisabled() {\n return !(this.libraryForm.valid && this.selectedFolders.length > 0);\n }\n\n reset() {\n this.setValues();\n }\n\n close(returnVal= false) {\n this.modal.close(returnVal);\n }\n\n forceScan() {\n this.libraryService.scan(this.library!.id, true)\n .subscribe(() => {\n this.toastr.info(translate('toasts.forced-scan-queued', {name: this.library!.name}));\n this.close();\n });\n }\n\n async save() {\n const model = this.libraryForm.value;\n model.folders = this.selectedFolders;\n model.fileGroupTypes = [];\n for(let fileTypeGroup of allFileTypeGroup) {\n if (model[fileTypeGroup]) {\n model.fileGroupTypes.push(fileTypeGroup);\n }\n }\n model.excludePatterns = this.excludePatterns;\n\n if (this.libraryForm.errors) {\n return;\n }\n\n if (this.library !== undefined) {\n model.id = this.library.id;\n model.folders = model.folders.map((item: string) => item.startsWith('\\\\') ? item.substr(1, item.length) : item);\n model.type = parseInt(model.type, 10);\n\n if (model.type !== this.library.type) {\n if (!await this.confirmService.confirm(translate('toasts.confirm-library-type-change'))) return;\n }\n\n this.libraryService.update(model).subscribe(() => {\n this.close(true);\n });\n } else {\n model.folders = model.folders.map((item: string) => item.startsWith('\\\\') ? item.substr(1, item.length) : item);\n model.type = parseInt(model.type, 10);\n this.libraryService.create(model).subscribe(() => {\n this.toastr.success(translate('toasts.library-created'));\n this.close(true);\n });\n }\n }\n\n nextStep() {\n this.setupStep++;\n switch(this.setupStep) {\n case StepID.Folder:\n this.active = TabID.Folder;\n break;\n case StepID.Cover:\n this.active = TabID.Cover;\n break;\n case StepID.Advanced:\n this.active = TabID.Advanced;\n break;\n }\n this.cdRef.markForCheck();\n }\n\n applyCoverImage(coverUrl: string) {\n this.uploadService.updateLibraryCoverImage(this.library!.id, coverUrl).subscribe(() => {});\n }\n\n updateCoverImageIndex(selectedIndex: number) {\n if (selectedIndex <= 0) return;\n this.applyCoverImage(this.imageUrls[selectedIndex]);\n }\n\n resetCoverImage() {\n this.uploadService.updateLibraryCoverImage(this.library!.id, '', false).subscribe(() => {});\n }\n\n openDirectoryPicker() {\n const modalRef = this.modalService.open(DirectoryPickerComponent, { scrollable: true, size: 'lg' });\n modalRef.closed.subscribe((closeResult: DirectoryPickerResult) => {\n if (closeResult.success) {\n if (!this.selectedFolders.includes(closeResult.folderPath)) {\n this.selectedFolders.push(closeResult.folderPath);\n this.madeChanges = true;\n this.cdRef.markForCheck();\n }\n }\n });\n }\n\n removeFolder(folder: string) {\n this.selectedFolders = this.selectedFolders.filter(item => item !== folder);\n this.madeChanges = true;\n this.cdRef.markForCheck();\n }\n\n isNextDisabled() {\n switch (this.setupStep) {\n case StepID.General:\n return this.libraryForm.get('name')?.invalid || this.libraryForm.get('type')?.invalid;\n case StepID.Folder:\n return this.selectedFolders.length === 0;\n case StepID.Cover:\n return false; // Covers are optional\n case StepID.Advanced:\n return false; // Advanced are optional\n }\n }\n\n getTasks() {\n const blackList = [Action.Edit];\n return this.actionFactoryService.getActionablesForSettingsPage(this.actionFactoryService.getLibraryActions(this.runTask.bind(this)), blackList);\n }\n\n async runTask(action: ActionItem) {\n switch (action.action) {\n case Action.Scan:\n await this.actionService.scanLibrary(this.library!);\n break;\n case Action.RefreshMetadata:\n await this.actionService.refreshLibraryMetadata(this.library!);\n break;\n case Action.GenerateColorScape:\n await this.actionService.refreshLibraryMetadata(this.library!, undefined, false);\n break;\n case (Action.AnalyzeFiles):\n await this.actionService.analyzeFiles(this.library!);\n break;\n case Action.Delete:\n await this.actionService.deleteLibrary(this.library!, () => {\n this.modal.dismiss();\n });\n break;\n }\n }\n}\n","\n
\n

\n @if (!isAddLibrary) {\n {{t('edit-title', {name: library!.name | sentenceCase})}}\n } @else {\n {{t('add-title')}}\n }\n

\n \n
\n
\n
\n
    \n\n
  • \n {{t(TabID.General)}}\n \n
    \n \n @if (libraryForm.get('name'); as formControl) {\n \n @if (libraryForm.dirty || libraryForm.touched) {\n
    \n @if (formControl.errors?.required) {\n
    {{t('required-field')}}
    \n }\n\n @if (formControl.errors?.duplicateName) {\n
    {{t('library-name-unique')}}
    \n }\n
    \n }\n\n }\n\n
    \n\n
    \n \n \n @if(IsKavitaPlusEligible) {\n \n {{t('kavitaplus-eligible-label')}}\n \n \n }\n {{t('type-tooltip')}}\n {{t('kavitaplus-eligible-tooltip')}}\n \n \n \n \n
    \n
    \n {{t('last-scanned-label')}}\n {{library?.lastScanned | date: 'short' | defaultDate}}\n
    \n
    \n
  • \n\n\n
  • \n {{t(TabID.Folder)}}\n \n

    {{t('folder-description')}}

    \n
      \n @for(folder of selectedFolders; track folder) {\n
    • \n {{folder}}\n \n
    • \n }\n\n
    \n
    \n \n
    \n
    \n

    {{t('help-us-part-1')}}{{t('help-us-part-2')}} {{t('help-us-part-3')}}

    \n
    \n
    \n

    {{t('naming-conventions-part-1')}}{{t('naming-conventions-part-2')}} {{t('naming-conventions-part-3')}}

    \n
    \n
    \n
  • \n\n
  • \n {{t(TabID.Cover)}}\n \n @if (isAddLibrary) {\n

    {{t('cover-description')}}

    \n }\n\n

    {{t('cover-description-extra')}}

    \n \n
    \n
  • \n\n
  • \n {{t(TabID.Advanced)}}\n \n
    \n \n \n
    \n @for (group of fileTypeGroups; track group) {\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
    \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 @if (!isAddLibrary) {\n
  • \n {{t(TabID.Tasks)}}\n \n @for(task of tasks; track task.action) {\n
    \n \n \n \n
    \n }\n
    \n
  • \n\n }\n\n\n
\n\n
\n
\n
\n
\n \n \n \n\n @if (isAddLibrary && setupStep !== 3) {\n \n } @else {\n \n }\n
\n\n
\n"],"mappings":"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","names":["_c0","_c1","a0","NgxFileDropComponent_ng_template_4_div_0_Template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ctx_r1","ɵɵnextContext","ɵɵadvance","ɵɵtextInterpolate","NgxFileDropComponent_ng_template_4_div_1_Template","_r3","ɵɵgetCurrentView","ɵɵlistener","$event","ɵɵrestoreView","ɵɵresetView","ɵɵpropertyInterpolate","ɵɵproperty","NgxFileDropComponent_ng_template_4_Template","ɵɵtemplate","NgxFileDropComponent_ng_template_6_Template","NgxFileDropEntry","relativePath","fileEntry","NgxFileDropContentTemplateDirective","_NgxFileDropContentTemplateDirective","template","ɵɵdirectiveInject","TemplateRef","ɵɵdefineDirective","NgxFileDropComponent","_NgxFileDropComponent","value","zone","renderer","EventEmitter","event","evt","items","file","fakeFileEntry","callback","item","entry","toUpload","i","timer","files","path","dirReader","entries","readEntries","result","fileInputEl","fileInputContainerEl","helperFormEl","fileInputPlaceholderEl","NgZone","Renderer2","ɵɵdefineComponent","dirIndex","ɵɵcontentQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵviewQuery","_r1","ɵɵtemplateRefExtractor","defaultContentTemplate_r4","ɵɵreference","ɵɵclassProp","ɵɵattribute","ɵɵpureFunction1","NgIf","NgTemplateOutlet","NgxFileDropModule","_NgxFileDropModule","ɵɵdefineNgModule","ɵɵdefineInjector","CommonModule","UploadService","constructor","httpClient","baseUrl","environment","apiUrl","toastr","inject","ToastrService","uploadByUrl","url","post","TextResonse","updateSeriesCoverImage","seriesId","lockCover","id","_cleanBase64Url","pipe","tap","_","info","translate","updateCollectionCoverImage","tagId","updateReadingListCoverImage","readingListId","updateChapterCoverImage","chapterId","updateVolumeCoverImage","volumeId","updateLibraryCoverImage","libraryId","resetChapterCoverLock","startsWith","split","ɵɵinject","HttpClient","factory","ɵfac","providedIn","_UploadService","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵlistener","ɵɵrestoreView","_r3","ctx_r1","ɵɵnextContext","ɵɵresetView","changeMode","ɵɵtext","openFileSelector_r4","openFileSelector","ɵɵadvance","ɵɵtextInterpolate","t_r5","ɵɵpureFunction0","_c0","ɵɵtextInterpolate1","ɵɵelementContainerStart","_r6","loadImageFromUrl","mode","ɵɵproperty","tmp_6_0","form","get","value","length","ɵɵtemplate","CoverImageChooserComponent_ng_container_0_ng_template_4_div_0_Template","CoverImageChooserComponent_ng_container_0_ng_template_4_ng_container_1_Template","_r8","resetImage","_r7","reset","CoverImageChooserComponent_ng_container_0_div_7_ng_container_2_Template","ɵɵpureFunction1","_c1","showApplyButton","selectedIndex","imageService","resetCoverImage","_r11","idx_r10","index","applyImage","appliedIndex","_r9","selectImage","CoverImageChooserComponent_ng_container_0_div_8_ng_container_2_Template","url_r12","$event","_r1","dropped","fileOver","fileLeave","CoverImageChooserComponent_ng_container_0_ng_template_4_Template","CoverImageChooserComponent_ng_container_0_ng_template_5_Template","CoverImageChooserComponent_ng_container_0_div_7_Template","CoverImageChooserComponent_ng_container_0_div_8_Template","acceptableExtensions","showReset","imageUrls","CoverImageChooserComponent","constructor","document","cdRef","inject","ChangeDetectorRef","ImageService","fb","FormBuilder","toastr","ToastrService","uploadService","UploadService","applyCover","EventEmitter","resetCover","imageUrlsChange","resetClicked","imageSelected","selectedBase64Url","files","join","ngOnInit","group","coverImageUrl","FormControl","markForCheck","getBase64Image","img","canvas","createElement","width","height","ctx","getContext","alpha","drawImage","toDataURL","callback","startsWith","imgUrl","Image","crossOrigin","src","onload","e","handleUrlImageAdd","emit","onerror","error","translate","setValue","loadImage","url","trim","uploadByUrl","subscribe","filename","getCoverUploadImage","setupEnterHandler","setTimeout","querySelector","focus","droppedFile","fileEntry","isFile","file","reader","FileReader","handleFileImageAdd","readAsDataURL","target","push","result","elem","fromEvent","pipe","takeWhile","event","key","KEY_CODES","ENTER","ESC_KEY","stopPropagation","ɵɵdirectiveInject","DOCUMENT","selectors","inputs","outputs","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","rf","CoverImageChooserComponent_ng_container_0_Template","ReactiveFormsModule","ɵNgNoValidate","DefaultValueAccessor","NgControlStatus","NgControlStatusGroup","FormGroupDirective","FormControlName","NgxFileDropModule","NgxFileDropComponent","NgxFileDropContentTemplateDirective","CommonModule","NgClass","NgForOf","NgIf","ImageComponent","TranslocoModule","TranslocoDirective","styles","changeDetection","_CoverImageChooserComponent","FileTypeGroup","allFileTypeGroup","Object","keys","filter","key","isNaN","Number","parseInt","map","FileTypeGroupPipe","transform","value","FileTypeGroup","Archive","translate","Epub","Pdf","Images","pure","standalone","_FileTypeGroupPipe","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","add","i_r3","$index","remove","ɵɵadvance","ɵɵpropertyInterpolate1","ɵɵtextInterpolate","label","t_r5","ɵɵproperty","ɵi_5_r4","ɵɵrepeaterCreate","EditListComponent_form_0_For_2_Template","ɵɵrepeaterTrackByIdentity","form","ɵɵrepeater","Items","EditListComponent","constructor","cdRef","inject","ChangeDetectorRef","destroyRef","DestroyRef","items","updateItems","EventEmitter","FormGroup","combinedItems","split","ngOnInit","forEach","link","index","addControl","FormControl","join","valueChanges","pipe","debounceTime","distinctUntilChanged","tap","data","emit","takeUntilDestroyed","subscribe","markForCheck","length","initialControls","Object","keys","controls","filter","key","startsWith","get","setValue","emitEvent","removeControl","map","value","v","selectors","inputs","outputs","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","rf","ctx","ɵɵtemplate","EditListComponent_form_0_Template","CommonModule","ReactiveFormsModule","ɵNgNoValidate","DefaultValueAccessor","NgControlStatus","NgControlStatusGroup","FormGroupDirective","FormControlName","Select2Module","TranslocoDirective","changeDetection","_EditListComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵlistener","tmp_5_0","ɵɵrestoreView","_r3","ctx_r1","ɵɵnextContext","ɵɵresetView","listForm","get","setValue","ɵɵadvance","ɵɵtextInterpolate","t_r4","ɵɵproperty","collectionTag_r6","_r5","$implicit","addToCollection","ɵɵtemplate","BulkAddToCollectionComponent_ng_container_0_For_10_Conditional_2_Template","ɵɵtextInterpolate1","title","ɵɵconditional","promoted","ɵɵelementContainerStart","_r1","close","BulkAddToCollectionComponent_ng_container_0_Conditional_7_Template","ɵɵrepeaterCreate","BulkAddToCollectionComponent_ng_container_0_For_10_Template","_forTrack0","BulkAddToCollectionComponent_ng_container_0_Conditional_12_Template","BulkAddToCollectionComponent_ng_container_0_Conditional_13_Template","create","lists","length","MaxItems","ɵɵrepeater","ɵɵpipeBind2","filterList","loading","isCreating","BulkAddToCollectionComponent","constructor","modal","inject","NgbActiveModal","collectionService","CollectionTagService","toastr","ToastrService","cdRef","ChangeDetectorRef","seriesIds","FormGroup","listItem","toLowerCase","indexOf","value","filterQuery","ngOnInit","addControl","FormControl","markForCheck","allCollections","subscribe","tags","filter","t","source","ScrobbleProvider","Kavita","ngAfterViewInit","inputElem","nativeElement","select","tagName","addByMultiple","success","translate","collectionName","tag","id","selectors","viewQuery","rf","ctx","BulkAddToCollectionComponent_ng_container_0_Template","CommonModule","ReactiveFormsModule","ɵNgNoValidate","DefaultValueAccessor","NgControlStatus","NgControlStatusGroup","FormGroupDirective","FormControlName","FilterPipe","NgbModalModule","TranslocoDirective","styles","encapsulation","changeDetection","_BulkAddToCollectionComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵlistener","tmp_5_0","ɵɵrestoreView","_r3","ctx_r1","ɵɵnextContext","ɵɵresetView","listForm","get","setValue","ɵɵadvance","ɵɵtextInterpolate","t_r4","ɵɵproperty","readingList_r6","_r5","$implicit","addToList","ɵɵtemplate","AddToListModalComponent_ng_container_0_li_9_i_2_Template","ɵɵtextInterpolate1","title","promoted","ɵɵelementContainerStart","_r1","close","AddToListModalComponent_ng_container_0_div_7_Template","AddToListModalComponent_ng_container_0_li_9_Template","AddToListModalComponent_ng_container_0_li_11_Template","AddToListModalComponent_ng_container_0_li_12_Template","create","lists","length","ɵɵpipeBind2","filterList","loading","ADD_FLOW","AddToListModalComponent","constructor","modal","readingListService","toastr","FormGroup","listItem","toLowerCase","indexOf","value","filterQuery","translocoService","inject","TranslocoService","ngOnInit","addControl","FormControl","getReadingLists","subscribe","result","ngAfterViewInit","inputElem","nativeElement","select","createList","list","readingList","type","Multiple_Series","seriesIds","undefined","updateByMultipleSeries","id","success","translate","seriesId","Series","updateBySeries","Volume","volumeId","updateByVolume","Chapter","chapterId","updateByChapter","Multiple","volumeIds","chapterIds","updateByMultiple","ɵɵdirectiveInject","NgbActiveModal","ReadingListService","ToastrService","selectors","viewQuery","rf","ctx","AddToListModalComponent_ng_container_0_Template","ReactiveFormsModule","ɵNgNoValidate","DefaultValueAccessor","NgControlStatus","NgControlStatusGroup","FormGroupDirective","FormControlName","NgIf","NgFor","FilterPipe","TranslocoDirective","styles","_AddToListModalComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","t_r3","ɵɵtemplate","EditReadingListModalComponent_ng_container_0_ng_template_11_div_6_div_1_Template","EditReadingListModalComponent_ng_container_0_ng_template_11_div_6_div_2_Template","ɵɵproperty","tmp_5_0","ctx_r1","reviewGroup","get","errors","required","tmp_6_0","duplicateName","ɵɵtextInterpolate","ɵɵelement","EditReadingListModalComponent_ng_container_0_ng_template_11_ng_container_7_div_1_ng_template_6_Template","ɵɵtemplateRefExtractor","ɵɵelementContainer","promotedTooltip_r4","ɵɵelementContainerStart","EditReadingListModalComponent_ng_container_0_ng_template_11_ng_container_7_div_1_Template","accountService","hasAdminRole","user_r5","EditReadingListModalComponent_ng_container_0_ng_template_11_div_13_div_4_div_1_Template","formControl_r6","min","max","EditReadingListModalComponent_ng_container_0_ng_template_11_div_13_div_4_Template","ɵɵclassProp","invalid","touched","dirty","EditReadingListModalComponent_ng_container_0_ng_template_11_div_14_div_4_div_1_Template","formControl_r7","EditReadingListModalComponent_ng_container_0_ng_template_11_div_14_div_4_Template","EditReadingListModalComponent_ng_container_0_ng_template_11_div_18_div_4_div_1_Template","formControl_r8","EditReadingListModalComponent_ng_container_0_ng_template_11_div_18_div_4_Template","EditReadingListModalComponent_ng_container_0_ng_template_11_div_19_div_4_div_1_Template","formControl_r9","EditReadingListModalComponent_ng_container_0_ng_template_11_div_19_div_4_Template","EditReadingListModalComponent_ng_container_0_ng_template_11_div_6_Template","EditReadingListModalComponent_ng_container_0_ng_template_11_ng_container_7_Template","EditReadingListModalComponent_ng_container_0_ng_template_11_div_13_Template","EditReadingListModalComponent_ng_container_0_ng_template_11_div_14_Template","EditReadingListModalComponent_ng_container_0_ng_template_11_div_18_Template","EditReadingListModalComponent_ng_container_0_ng_template_11_div_19_Template","ɵɵpipeBind1","currentUser$","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r10","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","imageUrls","ɵɵresetView","ɵɵlistener","updateSelectedIndex","updateSelectedImage","handleReset","ɵɵtwoWayProperty","readingList","coverImageLocked","_r1","close","active","EditReadingListModalComponent_ng_container_0_ng_template_11_Template","EditReadingListModalComponent_ng_container_0_ng_template_15_Template","save","ɵɵpureFunction1","_c0","title","ɵɵclassMapInterpolate1","utilityService","getActiveBreakpoint","Breakpoint","Mobile","ɵɵpropertyInterpolate","TabID","General","CoverImage","nav_r11","EditReadingListModalComponent","constructor","ngModal","readingListService","uploadService","toastr","imageService","cdRef","destroyRef","inject","DestroyRef","coverImageIndex","selectedCover","ngOnInit","FormGroup","FormControl","nonNullable","validators","Validators","summary","promoted","startingMonth","startingYear","endingMonth","endingYear","valueChanges","pipe","debounceTime","distinctUntilChanged","switchMap","name","nameExists","tap","exists","isExistingName","value","setErrors","markForCheck","takeUntilDestroyed","subscribe","push","randomize","getReadingListCoverImage","id","items","length","getListItems","map","rli","getChapterCoverImage","chapterId","dismiss","undefined","trim","model","__spreadProps","__spreadValues","readingListId","apis","update","updateReadingListCoverImage","forkJoin","results","success","translate","index","detectChanges","url","ɵɵdirectiveInject","NgbActiveModal","ReadingListService","UtilityService","UploadService","ToastrService","ImageService","ChangeDetectorRef","AccountService","selectors","inputs","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","rf","ctx","EditReadingListModalComponent_ng_container_0_Template","NgbNav","NgbNavItem","NgbNavItemRole","NgbNavLink","NgbNavContent","ReactiveFormsModule","ɵNgNoValidate","DefaultValueAccessor","NumberValueAccessor","CheckboxControlValueAccessor","NgControlStatus","NgControlStatusGroup","FormGroupDirective","FormControlName","NgIf","NgbTooltip","NgTemplateOutlet","CoverImageChooserComponent","NgbNavOutlet","AsyncPipe","TranslocoDirective","styles","changeDetection","_EditReadingListModalComponent","ChapterService","constructor","httpClient","baseUrl","environment","apiUrl","getChapterMetadata","chapterId","get","deleteChapter","delete","updateChapter","chapter","post","TextResonse","ɵɵinject","HttpClient","factory","ɵfac","providedIn","_ChapterService","VolumeService","constructor","httpClient","baseUrl","environment","apiUrl","getVolumeMetadata","volumeId","get","deleteVolume","delete","updateVolume","volume","post","TextResonse","ɵɵinject","HttpClient","factory","ɵfac","providedIn","_VolumeService","ActionService","constructor","chapterService","inject","ChapterService","volumeService","VolumeService","libraryService","LibraryService","seriesService","SeriesService","readerService","ReaderService","toastr","ToastrService","modalService","NgbModal","confirmService","ConfirmService","memberService","MemberService","deviceService","DeviceService","collectionTagService","CollectionTagService","filterService","FilterService","readingListService","ReadingListService","readingListModalRef","collectionModalRef","scanLibrary","library","callback","__async","hasOwnProperty","id","undefined","scan","pipe","take","subscribe","res","info","translate","name","refreshLibraryMetadata","forceUpdate","forceColorscape","confirm","message","refreshMetadata","editLibrary","modalRef","open","LibrarySettingsModalComponent","size","fullscreen","componentInstance","closed","closeResult","analyzeFiles","alert","analyze","deleteLibrary","delete","markSeriesAsRead","series","markRead","pagesRead","pages","success","markSeriesAsUnread","markUnread","scanSeries","libraryId","analyzeFilesForSeries","refreshSeriesMetadata","markVolumeAsRead","seriesId","volume","markVolumeRead","chapters","forEach","c","markVolumeAsUnread","markVolumeUnread","markChapterAsRead","chapter","saveProgress","volumeId","results","markChapterAsUnread","markMultipleAsRead","volumes","markMultipleRead","map","v","markMultipleAsUnread","markMultipleUnread","markMultipleSeriesAsRead","markMultipleSeriesRead","s","markMultipleSeriesAsUnread","markMultipleSeriesUnread","promoteMultipleCollections","collections","promoted","deleteMultipleCollections","promoteMultipleReadingLists","readingLists","deleteMultipleReadingLists","addMultipleToReadingList","AddToListModalComponent","scrollable","volumeIds","chapterIds","title","type","ADD_FLOW","Multiple","dismissed","addMultipleSeriesToWantToReadList","seriesIds","addSeriesToWantToRead","removeMultipleSeriesFromWantToReadList","removeSeriesToWantToRead","addMultipleSeriesToReadingList","Multiple_Series","addMultipleSeriesToCollectionTag","BulkAddToCollectionComponent","windowClass","addSeriesToReadingList","Series","addVolumeToReadingList","Volume","addChapterToReadingList","chapterId","Chapter","editReadingList","readingList","EditReadingListModalComponent","list","deleteMultipleSeries","count","length","error","deleteSeries","deleteChapter","deleteVolume","sendToDevice","device","sendTo","sendSeriesToDevice","sendSeriesTo","deleteFilter","filterId","_","factory","ɵfac","providedIn","_ActionService","ɵɵtext","ɵɵtextInterpolate1","t_r2","ɵɵpureFunction1","_c0","ɵɵpipeBind1","ctx_r2","library","name","ɵɵelementStart","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵtemplate","LibrarySettingsModalComponent_ng_container_0_ng_template_13_Conditional_3_Conditional_1_Conditional_1_Template","LibrarySettingsModalComponent_ng_container_0_ng_template_13_Conditional_3_Conditional_1_Conditional_2_Template","ɵɵconditional","formControl_r4","errors","required","duplicateName","ɵɵelement","LibrarySettingsModalComponent_ng_container_0_ng_template_13_Conditional_3_Conditional_1_Template","ɵɵclassProp","invalid","touched","libraryForm","dirty","ɵɵproperty","kavitaplusEligibleTooltip_r5","i_r7","opt_r6","ɵɵpipeBind2","lastScanned","LibrarySettingsModalComponent_ng_container_0_ng_template_13_Conditional_3_Template","LibrarySettingsModalComponent_ng_container_0_ng_template_13_Conditional_8_Template","LibrarySettingsModalComponent_ng_container_0_ng_template_13_ng_template_9_Template","ɵɵtemplateRefExtractor","LibrarySettingsModalComponent_ng_container_0_ng_template_13_ng_template_11_Template","ɵɵelementContainer","ɵɵrepeaterCreate","LibrarySettingsModalComponent_ng_container_0_ng_template_13_For_17_Template","ɵɵrepeaterTrackByIdentity","LibrarySettingsModalComponent_ng_container_0_ng_template_13_div_18_Template","tmp_7_0","get","typeTooltip_r8","IsKavitaPlusEligible","ɵɵrepeater","libraryTypes","isAddLibrary","ɵɵlistener","folder_r11","ɵɵrestoreView","_r10","$implicit","ɵɵnextContext","ɵɵresetView","removeFolder","LibrarySettingsModalComponent_ng_container_0_ng_template_17_For_4_Template","_r9","openDirectoryPicker","selectedFolders","WikiLink","ManagingFiles","ɵɵsanitizeUrl","Scanner","LibrarySettingsModalComponent_ng_container_0_ng_template_21_Conditional_0_Template","ɵɵtwoWayListener","$event","_r12","i0","ɵɵtwoWayBindingSet","imageUrls","updateCoverImageIndex","applyCoverImage","resetCoverImage","ɵɵtwoWayProperty","coverImage","group_r13","LibrarySettingsModalComponent_ng_container_0_ng_template_25_ng_template_2_For_2_Template","fileTypeGroups","_r14","updateGlobs","excludePatterns","LibrarySettingsModalComponent_ng_container_0_ng_template_25_ng_template_2_Template","LibrarySettingsModalComponent_ng_container_0_ng_template_25_ng_template_6_Template","LibrarySettingsModalComponent_ng_container_0_ng_template_25_ng_template_10_Template","LibrarySettingsModalComponent_ng_container_0_ng_template_25_ng_template_14_Template","LibrarySettingsModalComponent_ng_container_0_ng_template_25_ng_template_18_Template","LibrarySettingsModalComponent_ng_container_0_ng_template_25_ng_template_22_Template","LibrarySettingsModalComponent_ng_container_0_ng_template_25_ng_template_26_Template","LibrarySettingsModalComponent_ng_container_0_ng_template_25_ng_template_31_Template","excludePatternTooltip","task_r16","_r15","runTask","description","ɵɵclassMapInterpolate1","action","Action","Delete","title","LibrarySettingsModalComponent_ng_container_0_Conditional_26_ng_template_3_For_1_Template","_forTrack0","tasks","LibrarySettingsModalComponent_ng_container_0_Conditional_26_ng_template_3_Template","TabID","Tasks","_r17","nextStep","isNextDisabled","_r18","save","isDisabled","ɵɵelementContainerStart","LibrarySettingsModalComponent_ng_container_0_Conditional_3_Template","LibrarySettingsModalComponent_ng_container_0_Conditional_4_Template","_r1","close","active","LibrarySettingsModalComponent_ng_container_0_ng_template_13_Template","LibrarySettingsModalComponent_ng_container_0_ng_template_17_Template","LibrarySettingsModalComponent_ng_container_0_ng_template_21_Template","LibrarySettingsModalComponent_ng_container_0_ng_template_25_Template","LibrarySettingsModalComponent_ng_container_0_Conditional_26_Template","forceScan","reset","LibrarySettingsModalComponent_ng_container_0_Conditional_35_Template","LibrarySettingsModalComponent_ng_container_0_Conditional_36_Template","utilityService","getActiveBreakpoint","Breakpoint","Mobile","ɵɵpropertyInterpolate","General","Folder","setupStep","Cover","Advanced","nav_r19","StepID","LibrarySettingsModalComponent","constructor","inject","UtilityService","modal","NgbActiveModal","destroyRef","DestroyRef","uploadService","UploadService","modalService","NgbModal","settingService","SettingsService","confirmService","ConfirmService","libraryService","LibraryService","toastr","ToastrService","cdRef","ChangeDetectorRef","imageService","ImageService","actionFactoryService","ActionFactoryService","actionService","ActionService","LibraryType","translate","ScannerExclude","FormGroup","FormControl","nonNullable","validators","Validators","type","Manga","folderWatching","includeInDashboard","includeInRecommended","includeInSearch","manageCollections","manageReadingLists","allowScrobbling","collapseSeriesRelationships","madeChanges","allFileTypeGroup","getTasks","libType","parseInt","value","LightNovel","ngOnInit","getLibraryTypes","subscribe","types","markForCheck","undefined","push","getLibraryCoverImage","id","setValue","disable","valueChanges","pipe","debounceTime","distinctUntilChanged","switchMap","libraryNameExists","tap","exists","isExistingName","setErrors","takeUntilDestroyed","setValues","FileTypeGroup","Archive","Images","Pdf","Epub","Comic","ComicVine","Book","enable","folders","fileTypeGroup","addControl","libraryFileTypes","includes","glob","length","items","valid","returnVal","scan","info","__async","model","fileGroupTypes","map","item","startsWith","substr","confirm","update","create","success","coverUrl","updateLibraryCoverImage","selectedIndex","open","DirectoryPickerComponent","scrollable","size","closed","closeResult","folderPath","folder","filter","blackList","Edit","getActionablesForSettingsPage","getLibraryActions","bind","Scan","scanLibrary","RefreshMetadata","refreshLibraryMetadata","GenerateColorScape","AnalyzeFiles","analyzeFiles","deleteLibrary","dismiss","selectors","inputs","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","rf","ctx","LibrarySettingsModalComponent_ng_container_0_Template","CommonModule","NgIf","NgTemplateOutlet","DatePipe","NgbModalModule","NgbNavLink","NgbNavItem","NgbNavContent","ReactiveFormsModule","ɵNgNoValidate","NgSelectOption","ɵNgSelectMultipleOption","DefaultValueAccessor","CheckboxControlValueAccessor","SelectControlValueAccessor","NgControlStatus","NgControlStatusGroup","FormGroupDirective","FormControlName","NgbTooltip","SentenceCasePipe","NgbNav","NgbNavOutlet","CoverImageChooserComponent","TranslocoModule","TranslocoDirective","DefaultDatePipe","FileTypeGroupPipe","EditListComponent","SettingItemComponent","SettingSwitchComponent","SettingButtonComponent","changeDetection","_LibrarySettingsModalComponent"],"x_google_ignoreList":[0]}