{"version":3,"sources":["src/app/_services/reading-list.service.ts","node_modules/ngx-file-drop/fesm2022/ngx-file-drop.mjs","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/_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/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/admin/_modals/directory-picker/directory-picker.component.ts","src/app/admin/_modals/directory-picker/directory-picker.component.html","src/app/_pipes/default-date.pipe.ts","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/sidenav/_modals/library-settings-modal/library-settings-modal.component.ts","src/app/sidenav/_modals/library-settings-modal/library-settings-modal.component.html","src/app/_services/action.service.ts"],"sourcesContent":["import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { map } from 'rxjs/operators';\r\nimport { environment } from 'src/environments/environment';\r\nimport { UtilityService } from '../shared/_services/utility.service';\r\nimport { Person } from '../_models/metadata/person';\r\nimport { PaginatedResult } from '../_models/pagination';\r\nimport { ReadingList, ReadingListItem } from '../_models/reading-list';\r\nimport { CblImportSummary } from '../_models/reading-list/cbl/cbl-import-summary';\r\nimport { TextResonse } from '../_types/text-response';\r\nimport {Action, ActionItem} from './action-factory.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ReadingListService {\r\n\r\n baseUrl = environment.apiUrl;\r\n\r\n constructor(private httpClient: HttpClient, private utilityService: UtilityService) { }\r\n\r\n getReadingList(readingListId: number) {\r\n return this.httpClient.get(this.baseUrl + 'readinglist?readingListId=' + readingListId);\r\n }\r\n\r\n getReadingLists(includePromoted: boolean = true, sortByLastModified: boolean = false, pageNum?: number, itemsPerPage?: number) {\r\n let params = new HttpParams();\r\n params = this.utilityService.addPaginationIfExists(params, pageNum, itemsPerPage);\r\n\r\n return this.httpClient.post>(this.baseUrl + 'readinglist/lists?includePromoted=' + includePromoted\r\n + '&sortByLastModified=' + sortByLastModified, {}, {observe: 'response', params}).pipe(\r\n map((response: any) => {\r\n return this.utilityService.createPaginatedResult(response, new PaginatedResult());\r\n })\r\n );\r\n }\r\n\r\n getReadingListsForSeries(seriesId: number) {\r\n return this.httpClient.get(this.baseUrl + 'readinglist/lists-for-series?seriesId=' + seriesId);\r\n }\r\n\r\n getListItems(readingListId: number) {\r\n return this.httpClient.get(this.baseUrl + 'readinglist/items?readingListId=' + readingListId);\r\n }\r\n\r\n createList(title: string) {\r\n return this.httpClient.post(this.baseUrl + 'readinglist/create', {title});\r\n }\r\n\r\n update(model: {readingListId: number, title?: string, summary?: string, promoted: boolean}) {\r\n return this.httpClient.post(this.baseUrl + 'readinglist/update', model, TextResonse);\r\n }\r\n\r\n updateByMultiple(readingListId: number, seriesId: number, volumeIds: Array, chapterIds?: Array) {\r\n return this.httpClient.post(this.baseUrl + 'readinglist/update-by-multiple', {readingListId, seriesId, volumeIds, chapterIds}, TextResonse);\r\n }\r\n\r\n updateByMultipleSeries(readingListId: number, seriesIds: Array) {\r\n return this.httpClient.post(this.baseUrl + 'readinglist/update-by-multiple-series', {readingListId, seriesIds}, TextResonse);\r\n }\r\n\r\n updateBySeries(readingListId: number, seriesId: number) {\r\n return this.httpClient.post(this.baseUrl + 'readinglist/update-by-series', {readingListId, seriesId}, TextResonse);\r\n }\r\n\r\n updateByVolume(readingListId: number, seriesId: number, volumeId: number) {\r\n return this.httpClient.post(this.baseUrl + 'readinglist/update-by-volume', {readingListId, seriesId, volumeId}, TextResonse);\r\n }\r\n\r\n updateByChapter(readingListId: number, seriesId: number, chapterId: number) {\r\n return this.httpClient.post(this.baseUrl + 'readinglist/update-by-chapter', {readingListId, seriesId, chapterId}, TextResonse);\r\n }\r\n\r\n delete(readingListId: number) {\r\n return this.httpClient.delete(this.baseUrl + 'readinglist?readingListId=' + readingListId, TextResonse);\r\n }\r\n\r\n updatePosition(readingListId: number, readingListItemId: number, fromPosition: number, toPosition: number) {\r\n return this.httpClient.post(this.baseUrl + 'readinglist/update-position', {readingListId, readingListItemId, fromPosition, toPosition}, TextResonse);\r\n }\r\n\r\n deleteItem(readingListId: number, readingListItemId: number) {\r\n return this.httpClient.post(this.baseUrl + 'readinglist/delete-item', {readingListId, readingListItemId}, TextResonse);\r\n }\r\n\r\n removeRead(readingListId: number) {\r\n return this.httpClient.post(this.baseUrl + 'readinglist/remove-read?readingListId=' + readingListId, {}, TextResonse);\r\n }\r\n\r\n actionListFilter(action: ActionItem, readingList: ReadingList, canPromote: boolean) {\r\n\r\n const isPromotionAction = action.action == Action.Promote || action.action == Action.UnPromote;\r\n\r\n if (isPromotionAction) return canPromote;\r\n return true;\r\n\r\n // if (readingList?.promoted && !isAdmin) return false;\r\n // return true;\r\n }\r\n\r\n nameExists(name: string) {\r\n return this.httpClient.get(this.baseUrl + 'readinglist/name-exists?name=' + name);\r\n }\r\n\r\n validateCbl(form: FormData) {\r\n return this.httpClient.post(this.baseUrl + 'cbl/validate', form);\r\n }\r\n\r\n importCbl(form: FormData) {\r\n return this.httpClient.post(this.baseUrl + 'cbl/import', form);\r\n }\r\n\r\n getCharacters(readingListId: number) {\r\n return this.httpClient.get>(this.baseUrl + 'readinglist/characters?readingListId=' + readingListId);\r\n }\r\n\r\n promoteMultipleReadingLists(listIds: Array, promoted: boolean) {\r\n return this.httpClient.post(this.baseUrl + 'readinglist/promote-multiple', {readingListIds: listIds, promoted}, TextResonse);\r\n }\r\n\r\n deleteMultipleReadingLists(listIds: Array) {\r\n return this.httpClient.post(this.baseUrl + 'readinglist/delete-multiple', {readingListIds: listIds}, TextResonse);\r\n }\r\n\r\n\r\n}\r\n","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 {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n inject,\r\n Input,\r\n OnInit,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport {FormGroup, FormControl, ReactiveFormsModule} from '@angular/forms';\r\nimport {NgbActiveModal, NgbModalModule} from '@ng-bootstrap/ng-bootstrap';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport {UserCollection} from 'src/app/_models/collection-tag';\r\nimport { ReadingList } from 'src/app/_models/reading-list';\r\nimport { CollectionTagService } from 'src/app/_services/collection-tag.service';\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FilterPipe} from \"../../../_pipes/filter.pipe\";\r\nimport {translate, TranslocoDirective, TranslocoService} from \"@ngneat/transloco\";\r\n\r\n@Component({\r\n selector: 'app-bulk-add-to-collection',\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule, FilterPipe, NgbModalModule, TranslocoDirective],\r\n templateUrl: './bulk-add-to-collection.component.html',\r\n styleUrls: ['./bulk-add-to-collection.component.scss'],\r\n encapsulation: ViewEncapsulation.None, // This is needed as per the bootstrap modal documentation to get styles to work.\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class BulkAddToCollectionComponent implements OnInit, AfterViewInit {\r\n\r\n private readonly modal = inject(NgbActiveModal);\r\n private readonly collectionService = inject(CollectionTagService);\r\n private readonly toastr = inject(ToastrService);\r\n private readonly cdRef = inject(ChangeDetectorRef);\r\n\r\n @Input({required: true}) title!: string;\r\n /**\r\n * Series Ids to add to Collection Tag\r\n */\r\n @Input() seriesIds: Array = [];\r\n @ViewChild('title') inputElem!: ElementRef;\r\n\r\n /**\r\n * All existing collections sorted by recent use date\r\n */\r\n lists: Array = [];\r\n loading: boolean = false;\r\n isCreating: boolean = false;\r\n listForm: FormGroup = new FormGroup({});\r\n\r\n ngOnInit(): void {\r\n\r\n this.listForm.addControl('title', new FormControl(this.title, []));\r\n this.listForm.addControl('filterQuery', new FormControl('', []));\r\n\r\n this.loading = true;\r\n this.cdRef.markForCheck();\r\n this.collectionService.allCollections(true).subscribe(tags => {\r\n this.lists = tags;\r\n this.loading = false;\r\n this.cdRef.markForCheck();\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n // Shift focus to input\r\n if (this.inputElem) {\r\n this.inputElem.nativeElement.select();\r\n this.cdRef.markForCheck();\r\n }\r\n }\r\n\r\n close() {\r\n this.modal.close();\r\n }\r\n\r\n create() {\r\n if (this.isCreating) return;\r\n const tagName = this.listForm.value.title;\r\n this.isCreating = true;\r\n this.cdRef.markForCheck();\r\n this.collectionService.addByMultiple(0, this.seriesIds, tagName).subscribe(() => {\r\n this.toastr.success(translate('toasts.series-added-to-collection', {collectionName: tagName}));\r\n this.isCreating = false;\r\n this.modal.close();\r\n });\r\n }\r\n\r\n addToCollection(tag: UserCollection) {\r\n if (this.seriesIds.length === 0) return;\r\n\r\n this.collectionService.addByMultiple(tag.id, this.seriesIds, '').subscribe(() => {\r\n this.toastr.success(translate('toasts.series-added-to-collection', {collectionName: tag.title}));\r\n this.modal.close();\r\n });\r\n\r\n }\r\n\r\n filterList = (listItem: ReadingList) => {\r\n return listItem.title.toLowerCase().indexOf((this.listForm.value.filterQuery || '').toLowerCase()) >= 0;\r\n }\r\n\r\n}\r\n","\r\n\r\n
\r\n

{{t('title')}}

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

{{t('title')}}

\r\n \r\n
\r\n
\r\n
\r\n
= 5\">\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
    \r\n
  • \r\n {{readingList.title}} \r\n
  • \r\n
  • {{t('no-data')}}
  • \r\n
  • \r\n
    \r\n {{t('loading')}}\r\n
    \r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { environment } from 'src/environments/environment';\r\nimport { TextResonse } from '../_types/text-response';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UploadService {\r\n\r\n private baseUrl = environment.apiUrl;\r\n\r\n constructor(private httpClient: HttpClient) { }\r\n\r\n\r\n uploadByUrl(url: string) {\r\n return this.httpClient.post(this.baseUrl + 'upload/upload-by-url', {url}, TextResonse);\r\n }\r\n\r\n /**\r\n * \r\n * @param seriesId Series to overwrite cover image for\r\n * @param url A base64 encoded url\r\n * @returns \r\n */\r\n updateSeriesCoverImage(seriesId: number, url: string) {\r\n return this.httpClient.post(this.baseUrl + 'upload/series', {id: seriesId, url: this._cleanBase64Url(url)});\r\n }\r\n\r\n updateCollectionCoverImage(tagId: number, url: string) {\r\n return this.httpClient.post(this.baseUrl + 'upload/collection', {id: tagId, url: this._cleanBase64Url(url)});\r\n }\r\n\r\n updateReadingListCoverImage(readingListId: number, url: string) {\r\n return this.httpClient.post(this.baseUrl + 'upload/reading-list', {id: readingListId, url: this._cleanBase64Url(url)});\r\n }\r\n\r\n updateChapterCoverImage(chapterId: number, url: string) {\r\n return this.httpClient.post(this.baseUrl + 'upload/chapter', {id: chapterId, url: this._cleanBase64Url(url)});\r\n }\r\n\r\n updateLibraryCoverImage(libraryId: number, url: string) {\r\n return this.httpClient.post(this.baseUrl + 'upload/library', {id: libraryId, url: this._cleanBase64Url(url)});\r\n }\r\n\r\n resetChapterCoverLock(chapterId: number, ) {\r\n return this.httpClient.post(this.baseUrl + 'upload/reset-chapter-lock', {id: chapterId, url: ''});\r\n }\r\n\r\n _cleanBase64Url(url: string) {\r\n if (url.startsWith('data')) {\r\n url = url.split(',')[1];\r\n }\r\n return url;\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n inject,\r\n Inject,\r\n Input,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport {FormBuilder, FormControl, FormGroup, ReactiveFormsModule} from '@angular/forms';\r\nimport {NgxFileDropEntry, FileSystemFileEntry, NgxFileDropModule} from 'ngx-file-drop';\r\nimport { fromEvent } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { ImageService } from 'src/app/_services/image.service';\r\nimport { KEY_CODES } from 'src/app/shared/_services/utility.service';\r\nimport { UploadService } from 'src/app/_services/upload.service';\r\nimport {CommonModule, DOCUMENT} from '@angular/common';\r\nimport {ImageComponent} from \"../../shared/image/image.component\";\r\nimport {translate, TranslocoModule} from \"@ngneat/transloco\";\r\n\r\n@Component({\r\n selector: 'app-cover-image-chooser',\r\n standalone: true,\r\n imports: [\r\n ReactiveFormsModule,\r\n NgxFileDropModule,\r\n CommonModule,\r\n ImageComponent,\r\n TranslocoModule\r\n ],\r\n templateUrl: './cover-image-chooser.component.html',\r\n styleUrls: ['./cover-image-chooser.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CoverImageChooserComponent implements OnInit {\r\n\r\n private readonly cdRef = inject(ChangeDetectorRef);\r\n public readonly imageService = inject(ImageService);\r\n public readonly fb = inject(FormBuilder);\r\n public readonly toastr = inject(ToastrService);\r\n public readonly uploadService = inject(UploadService);\r\n\r\n /**\r\n * If buttons show under images to allow immediate selection of cover images.\r\n */\r\n @Input() showApplyButton: boolean = false;\r\n /**\r\n * When a cover image is selected, this will be called with a base url representation of the file.\r\n */\r\n @Output() applyCover: EventEmitter = new EventEmitter();\r\n /**\r\n * When a cover image is reset, this will be called.\r\n */\r\n @Output() resetCover: EventEmitter = new EventEmitter();\r\n\r\n @Input() imageUrls: Array = [];\r\n @Output() imageUrlsChange: EventEmitter> = new EventEmitter>();\r\n\r\n /**\r\n * Should the control give the ability to select an image that emits the reset status for cover image\r\n */\r\n @Input() showReset: boolean = false;\r\n @Output() resetClicked: EventEmitter = new EventEmitter();\r\n\r\n /**\r\n * Emits the selected index. Used usually to check if something other than the default image was selected.\r\n */\r\n @Output() imageSelected: EventEmitter = new EventEmitter();\r\n /**\r\n * Emits a base64 encoded image\r\n */\r\n @Output() selectedBase64Url: EventEmitter = new EventEmitter();\r\n\r\n\r\n\r\n selectedIndex: number = 0;\r\n /**\r\n * Only applies for showApplyButton. Used to track which image is applied.\r\n */\r\n appliedIndex: number = 0;\r\n form!: FormGroup;\r\n files: NgxFileDropEntry[] = [];\r\n acceptableExtensions = ['.png', '.jpg', '.jpeg', '.gif', '.webp', '.avif'].join(',');\r\n mode: 'file' | 'url' | 'all' = 'all';\r\n\r\n constructor(@Inject(DOCUMENT) private document: Document) { }\r\n\r\n ngOnInit(): void {\r\n this.form = this.fb.group({\r\n coverImageUrl: new FormControl('', [])\r\n });\r\n\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n\r\n /**\r\n * Generates a base64 encoding for an Image. Used in manual file upload flow.\r\n * @param img\r\n * @returns\r\n */\r\n getBase64Image(img: HTMLImageElement) {\r\n const canvas = document.createElement(\"canvas\");\r\n canvas.width = img.width;\r\n canvas.height = img.height;\r\n const ctx = canvas.getContext(\"2d\", {alpha: false});\r\n if (!ctx) {\r\n return '';\r\n }\r\n\r\n ctx.drawImage(img, 0, 0);\r\n return canvas.toDataURL(\"image/png\");\r\n }\r\n\r\n selectImage(index: number, callback?: Function) {\r\n if (this.selectedIndex === index) { return; }\r\n\r\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\r\n if (!this.imageUrls[index].startsWith('data:image/')) {\r\n const imgUrl = this.imageUrls[index];\r\n const img = new Image();\r\n img.crossOrigin = 'Anonymous';\r\n img.src = imgUrl;\r\n img.onload = (e) => {\r\n this.handleUrlImageAdd(img, index);\r\n this.selectedBase64Url.emit(this.imageUrls[this.selectedIndex]);\r\n if (callback) callback(index);\r\n };\r\n img.onerror = (e) => {\r\n this.toastr.error(translate('errors.rejected-cover-upload'));\r\n this.form.get('coverImageUrl')?.setValue('');\r\n this.cdRef.markForCheck();\r\n };\r\n this.form.get('coverImageUrl')?.setValue('');\r\n this.cdRef.markForCheck();\r\n return;\r\n }\r\n\r\n this.selectedIndex = index;\r\n this.cdRef.markForCheck();\r\n this.imageSelected.emit(this.selectedIndex);\r\n this.selectedBase64Url.emit(this.imageUrls[this.selectedIndex]);\r\n }\r\n\r\n applyImage(index: number) {\r\n if (!this.showApplyButton) return;\r\n\r\n this.selectImage(index, () => {\r\n this.applyCover.emit(this.imageUrls[index]);\r\n this.appliedIndex = index;\r\n this.cdRef.markForCheck();\r\n });\r\n }\r\n\r\n resetImage() {\r\n if (this.showApplyButton) {\r\n this.resetCover.emit();\r\n }\r\n }\r\n\r\n loadImage(url?: string) {\r\n url = url || this.form.get('coverImageUrl')?.value.trim();\r\n if (!url || url === '') return;\r\n\r\n this.uploadService.uploadByUrl(url).subscribe(filename => {\r\n const img = new Image();\r\n img.crossOrigin = 'Anonymous';\r\n img.src = this.imageService.getCoverUploadImage(filename);\r\n img.onload = (e) => this.handleUrlImageAdd(img);\r\n img.onerror = (e) => {\r\n this.toastr.error(translate('errors.rejected-cover-upload'));\r\n this.form.get('coverImageUrl')?.setValue('');\r\n this.cdRef.markForCheck();\r\n };\r\n this.form.get('coverImageUrl')?.setValue('');\r\n this.cdRef.markForCheck();\r\n });\r\n }\r\n\r\n loadImageFromUrl(url?: string) {\r\n url = url || this.form.get('coverImageUrl')?.value.trim();\r\n if (!url || url === '') return;\r\n\r\n this.uploadService.uploadByUrl(url).subscribe(filename => {\r\n const img = new Image();\r\n img.crossOrigin = 'Anonymous';\r\n img.src = this.imageService.getCoverUploadImage(filename);\r\n img.onload = (e) => this.handleUrlImageAdd(img);\r\n img.onerror = (e) => {\r\n this.toastr.error(translate('errors.rejected-cover-upload'));\r\n this.form.get('coverImageUrl')?.setValue('');\r\n this.cdRef.markForCheck();\r\n };\r\n this.form.get('coverImageUrl')?.setValue('');\r\n this.cdRef.markForCheck();\r\n });\r\n }\r\n\r\n\r\n\r\n changeMode(mode: 'url') {\r\n this.mode = mode;\r\n this.setupEnterHandler();\r\n this.cdRef.markForCheck();\r\n\r\n setTimeout(() => (this.document.querySelector('#load-image') as HTMLInputElement)?.focus(), 10);\r\n }\r\n\r\n public dropped(files: NgxFileDropEntry[]) {\r\n this.files = files;\r\n for (const droppedFile of files) {\r\n\r\n // Is it a file?\r\n if (droppedFile.fileEntry.isFile) {\r\n const fileEntry = droppedFile.fileEntry as FileSystemFileEntry;\r\n fileEntry.file((file: File) => {\r\n const reader = new FileReader();\r\n reader.onload = (e) => this.handleFileImageAdd(e);\r\n reader.readAsDataURL(file);\r\n });\r\n }\r\n }\r\n }\r\n\r\n handleFileImageAdd(e: any) {\r\n if (e.target == null) return;\r\n\r\n this.imageUrls.push(e.target.result); // This is base64 already\r\n this.imageUrlsChange.emit(this.imageUrls);\r\n this.selectedIndex = this.imageUrls.length - 1;\r\n this.imageSelected.emit(this.selectedIndex); // Auto select newly uploaded image\r\n this.selectedBase64Url.emit(e.target.result);\r\n setTimeout(() => {\r\n (this.document.querySelector('div.image-card[aria-label=\"Image ' + this.selectedIndex + '\"]') as HTMLElement).focus();\r\n })\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n handleUrlImageAdd(img: HTMLImageElement, index: number = -1) {\r\n const url = this.getBase64Image(img);\r\n if (index >= 0) {\r\n this.imageUrls[index] = url;\r\n } else {\r\n this.imageUrls.push(url);\r\n }\r\n\r\n this.imageUrlsChange.emit(this.imageUrls);\r\n this.cdRef.markForCheck();\r\n\r\n setTimeout(() => {\r\n // Auto select newly uploaded image and tell parent of new base64 url\r\n this.selectImage(index >= 0 ? index : this.imageUrls.length - 1);\r\n });\r\n }\r\n\r\n reset() {\r\n this.resetClicked.emit();\r\n this.selectedIndex = -1;\r\n }\r\n\r\n setupEnterHandler() {\r\n setTimeout(() => {\r\n const elem = document.querySelector('input[id=\"load-image\"]');\r\n if (elem == null) return;\r\n fromEvent(elem, 'keydown')\r\n .pipe(takeWhile(() => this.mode === 'url')).subscribe((event) => {\r\n const evt = event;\r\n switch(evt.key) {\r\n case KEY_CODES.ENTER:\r\n {\r\n this.loadImage();\r\n break;\r\n }\r\n\r\n case KEY_CODES.ESC_KEY:\r\n this.mode = 'all';\r\n event.stopPropagation();\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n });\r\n }\r\n\r\n protected fileOver(event: any){}\r\n protected fileLeave(event: any){}\r\n}\r\n","\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n 0\">\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n DestroyRef,\r\n inject,\r\n Input,\r\n OnInit\r\n} from '@angular/core';\r\nimport { FormGroup, FormControl, Validators, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgbActiveModal, NgbNav, NgbNavItem, NgbNavItemRole, NgbNavLink, NgbNavContent, NgbTooltip, NgbNavOutlet } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { debounceTime, distinctUntilChanged, forkJoin, switchMap, tap } from 'rxjs';\r\nimport { Breakpoint, UtilityService } from 'src/app/shared/_services/utility.service';\r\nimport { ReadingList } from 'src/app/_models/reading-list';\r\nimport { AccountService } from 'src/app/_services/account.service';\r\nimport { ImageService } from 'src/app/_services/image.service';\r\nimport { ReadingListService } from 'src/app/_services/reading-list.service';\r\nimport { UploadService } from 'src/app/_services/upload.service';\r\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\r\nimport { CoverImageChooserComponent } from '../../../cards/cover-image-chooser/cover-image-chooser.component';\r\nimport { NgIf, NgTemplateOutlet, AsyncPipe } from '@angular/common';\r\nimport {translate, TranslocoDirective} from \"@ngneat/transloco\";\r\n\r\nenum TabID {\r\n General = 'general-tab',\r\n CoverImage = 'cover-image-tab'\r\n}\r\n\r\n@Component({\r\n selector: 'app-edit-reading-list-modal',\r\n templateUrl: './edit-reading-list-modal.component.html',\r\n styleUrls: ['./edit-reading-list-modal.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [NgbNav, NgbNavItem, NgbNavItemRole, NgbNavLink, NgbNavContent, ReactiveFormsModule, NgIf, NgbTooltip, NgTemplateOutlet, CoverImageChooserComponent, NgbNavOutlet, AsyncPipe, TranslocoDirective]\r\n})\r\nexport class EditReadingListModalComponent implements OnInit {\r\n\r\n @Input({required: true}) readingList!: ReadingList;\r\n private readonly destroyRef = inject(DestroyRef);\r\n reviewGroup!: FormGroup;\r\n\r\n coverImageIndex: number = 0;\r\n /**\r\n * Url of the selected cover\r\n */\r\n selectedCover: string = '';\r\n coverImageLocked: boolean = false;\r\n imageUrls: Array = [];\r\n active = TabID.General;\r\n\r\n get Breakpoint() { return Breakpoint; }\r\n get TabID() { return TabID; }\r\n\r\n constructor(private ngModal: NgbActiveModal, private readingListService: ReadingListService,\r\n public utilityService: UtilityService, private uploadService: UploadService, private toastr: ToastrService,\r\n private imageService: ImageService, private readonly cdRef: ChangeDetectorRef, public accountService: AccountService) { }\r\n\r\n ngOnInit(): void {\r\n this.reviewGroup = new FormGroup({\r\n title: new FormControl(this.readingList.title, { nonNullable: true, validators: [Validators.required] }),\r\n summary: new FormControl(this.readingList.summary, { nonNullable: true, validators: [] }),\r\n promoted: new FormControl(this.readingList.promoted, { nonNullable: true, validators: [] }),\r\n startingMonth: new FormControl(this.readingList.startingMonth, { nonNullable: true, validators: [Validators.min(1), Validators.max(12)] }),\r\n startingYear: new FormControl(this.readingList.startingYear, { nonNullable: true, validators: [Validators.min(1000)] }),\r\n endingMonth: new FormControl(this.readingList.endingMonth, { nonNullable: true, validators: [Validators.min(1), Validators.max(12)] }),\r\n endingYear: new FormControl(this.readingList.endingYear, { nonNullable: true, validators: [Validators.min(1000)] }),\r\n });\r\n\r\n this.coverImageLocked = this.readingList.coverImageLocked;\r\n\r\n this.reviewGroup.get('title')?.valueChanges.pipe(\r\n debounceTime(100),\r\n distinctUntilChanged(),\r\n switchMap(name => this.readingListService.nameExists(name)),\r\n tap(exists => {\r\n const isExistingName = this.reviewGroup.get('title')?.value === this.readingList.title;\r\n if (!exists || isExistingName) {\r\n this.reviewGroup.get('title')?.setErrors(null);\r\n } else {\r\n this.reviewGroup.get('title')?.setErrors({duplicateName: true})\r\n }\r\n this.cdRef.markForCheck();\r\n }),\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe();\r\n\r\n this.imageUrls.push(this.imageService.randomize(this.imageService.getReadingListCoverImage(this.readingList.id)));\r\n if (!this.readingList.items || this.readingList.items.length === 0) {\r\n this.readingListService.getListItems(this.readingList.id).subscribe(items => {\r\n this.imageUrls.push(...(items).map(rli => this.imageService.getChapterCoverImage(rli.chapterId)));\r\n });\r\n } else {\r\n this.imageUrls.push(...(this.readingList.items).map(rli => this.imageService.getChapterCoverImage(rli.chapterId)));\r\n }\r\n }\r\n\r\n close() {\r\n this.ngModal.dismiss(undefined);\r\n }\r\n\r\n save() {\r\n if (this.reviewGroup.value.title.trim() === '') return;\r\n\r\n const model = {...this.reviewGroup.value, readingListId: this.readingList.id, coverImageLocked: this.coverImageLocked};\r\n model.startingMonth = model.startingMonth || 0;\r\n model.startingYear = model.startingYear || 0;\r\n model.endingMonth = model.endingMonth || 0;\r\n model.endingYear = model.endingYear || 0;\r\n const apis = [this.readingListService.update(model)];\r\n\r\n if (this.selectedCover !== '') {\r\n apis.push(this.uploadService.updateReadingListCoverImage(this.readingList.id, this.selectedCover))\r\n }\r\n\r\n forkJoin(apis).subscribe(results => {\r\n this.readingList.title = model.title;\r\n this.readingList.summary = model.summary;\r\n this.readingList.coverImageLocked = this.coverImageLocked;\r\n this.readingList.promoted = model.promoted;\r\n this.ngModal.close(this.readingList);\r\n this.toastr.success(translate('toasts.reading-list-updated'));\r\n });\r\n }\r\n\r\n updateSelectedIndex(index: number) {\r\n this.coverImageIndex = index;\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n updateSelectedImage(url: string) {\r\n this.selectedCover = url;\r\n }\r\n\r\n handleReset() {\r\n this.coverImageLocked = false;\r\n }\r\n\r\n}\r\n","\r\n\r\n
\r\n

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

\r\n \r\n
\r\n
\r\n
    \r\n
  • \r\n {{t(TabID.General)}}\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {{t('required-field')}}\r\n
    \r\n
    \r\n {{t('name-unique-validation')}}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n {{t('promote-tooltip')}}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    {{t('starting-title')}}
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {{t('month-validation')}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {{t('year-validation')}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    {{t('ending-title')}}
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {{t('month-validation')}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {{t('year-validation')}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
  • \r\n
  • \r\n {{t(TabID.CoverImage)}}\r\n \r\n \r\n \r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n\r\n\r\n
\r\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { NgbActiveModal, NgbTypeahead, NgbHighlight } from '@ng-bootstrap/ng-bootstrap';\r\nimport { catchError, debounceTime, distinctUntilChanged, filter, map, merge, Observable, of, OperatorFunction, Subject, switchMap, tap } from 'rxjs';\r\nimport { Stack } from 'src/app/shared/data-structures/stack';\r\nimport { DirectoryDto } from 'src/app/_models/system/directory-dto';\r\nimport { LibraryService } from '../../../_services/library.service';\r\nimport { NgIf, NgFor, NgClass } from '@angular/common';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport {TranslocoDirective} from \"@ngneat/transloco\";\r\nimport {WikiLink} from \"../../../_models/wiki\";\r\n\r\n\r\nexport interface DirectoryPickerResult {\r\n success: boolean;\r\n folderPath: string;\r\n}\r\n\r\n@Component({\r\n selector: 'app-directory-picker',\r\n templateUrl: './directory-picker.component.html',\r\n styleUrls: ['./directory-picker.component.scss'],\r\n standalone: true,\r\n imports: [ReactiveFormsModule, NgbTypeahead, FormsModule, NgbHighlight, NgIf, NgFor, NgClass, TranslocoDirective]\r\n})\r\nexport class DirectoryPickerComponent implements OnInit {\r\n\r\n @Input() startingFolder: string = '';\r\n /**\r\n * Url to give more information about selecting directories. Passing nothing will suppress.\r\n */\r\n @Input() helpUrl: string = WikiLink.Library;\r\n\r\n currentRoot = '';\r\n folders: DirectoryDto[] = [];\r\n routeStack: Stack = new Stack();\r\n\r\n\r\n path: string = '';\r\n @ViewChild('instance', {static: false}) instance!: NgbTypeahead;\r\n focus$ = new Subject();\r\n click$ = new Subject();\r\n searching: boolean = false;\r\n searchFailed: boolean = false;\r\n\r\n\r\n search: OperatorFunction = (text$: Observable) => {\r\n const debouncedText$ = text$.pipe(debounceTime(200), distinctUntilChanged());\r\n const clicksWithClosedPopup$ = this.click$.pipe(filter(() => !this.instance.isPopupOpen()));\r\n const inputFocus$ = this.focus$;\r\n\r\n return merge(debouncedText$, inputFocus$, clicksWithClosedPopup$, text$).pipe(\r\n debounceTime(300),\r\n distinctUntilChanged(),\r\n tap(() => this.searching = true),\r\n switchMap(term =>\r\n this.libraryService.listDirectories(this.path).pipe(\r\n tap(() => this.searchFailed = false),\r\n tap((folders) => this.folders = folders),\r\n map(folders => folders.map(f => f.fullPath)),\r\n catchError(() => {\r\n this.searchFailed = true;\r\n return of([]);\r\n }))\r\n ),\r\n tap(() => this.searching = false)\r\n )\r\n }\r\n\r\n constructor(public modal: NgbActiveModal, private libraryService: LibraryService) {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.startingFolder && this.startingFolder.length > 0) {\r\n let folders = this.startingFolder.split('/');\r\n let folders2 = this.startingFolder.split('\\\\');\r\n if (folders.length === 1 && folders2.length > 1) {\r\n folders = folders2;\r\n }\r\n if (!folders[0].endsWith('/')) {\r\n folders[0] = folders[0] + '/';\r\n }\r\n folders.forEach(folder => this.routeStack.push(folder));\r\n\r\n const fullPath = this.routeStack.items.join('/');\r\n this.loadChildren(fullPath);\r\n } else {\r\n this.loadChildren(this.currentRoot);\r\n }\r\n }\r\n\r\n updateTable() {\r\n this.loadChildren(this.path);\r\n }\r\n\r\n\r\n selectNode(folder: DirectoryDto) {\r\n if (folder.disabled) return;\r\n this.currentRoot = folder.name;\r\n this.routeStack.push(folder.name);\r\n this.path = folder.fullPath;\r\n this.loadChildren(this.path);\r\n }\r\n\r\n goBack() {\r\n this.routeStack.pop();\r\n const stackPeek = this.routeStack.peek();\r\n if (stackPeek !== undefined) {\r\n this.currentRoot = stackPeek;\r\n const fullPath = this.routeStack.items.join('/');\r\n this.loadChildren(fullPath);\r\n } else {\r\n this.currentRoot = '';\r\n this.loadChildren(this.currentRoot);\r\n }\r\n }\r\n\r\n loadChildren(path: string) {\r\n this.libraryService.listDirectories(path).subscribe(folders => {\r\n this.folders = folders;\r\n }, err => {\r\n // If there was an error, pop off last directory added to stack\r\n this.routeStack.pop();\r\n const item = this.folders.find(f => f.fullPath === path);\r\n if (item) {\r\n item.disabled = true;\r\n }\r\n });\r\n }\r\n\r\n share() {\r\n this.modal.close({success: true, folderPath: this.path});\r\n }\r\n\r\n close() {\r\n this.modal.close({success: false, folderPath: undefined});\r\n }\r\n\r\n navigateTo(index: number) {\r\n while(this.routeStack.items.length - 1 > index) {\r\n this.routeStack.pop();\r\n }\r\n\r\n const fullPath = this.routeStack.items.join('/');\r\n this.path = fullPath;\r\n this.loadChildren(fullPath);\r\n }\r\n}\r\n\r\n\r\n","\r\n
\r\n

{{t('title')}}

\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{t('type-header')}}{{t('name-header')}}
...
\r\n {{folder.name}}\r\n
\r\n
\r\n \r\n\r\n
\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport {TranslocoService} from \"@ngneat/transloco\";\r\n\r\n@Pipe({\r\n name: 'defaultDate',\r\n pure: true,\r\n standalone: true\r\n})\r\nexport class DefaultDatePipe implements PipeTransform {\r\n\r\n constructor(private translocoService: TranslocoService) {\r\n }\r\n transform(value: any, replacementString = 'default-date-pipe.never'): string {\r\n if (value === null || value === undefined || value === '' || value === Infinity || Number.isNaN(value) || value === '1/1/01') {\r\n return this.translocoService.translate(replacementString);\r\n };\r\n return value;\r\n }\r\n\r\n}\r\n","export enum FileTypeGroup {\r\n Archive = 1,\r\n Epub = 2,\r\n Pdf = 3,\r\n Images = 4\r\n}\r\n\r\nexport const allFileTypeGroup = Object.keys(FileTypeGroup)\r\n.filter(key => !isNaN(Number(key)) && parseInt(key, 10) >= 0)\r\n.map(key => parseInt(key, 10)) as FileTypeGroup[];\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport {FileTypeGroup} from \"../_models/library/file-type-group.enum\";\r\nimport {translate} from \"@ngneat/transloco\";\r\n\r\n@Pipe({\r\n name: 'fileTypeGroup',\r\n standalone: true\r\n})\r\nexport class FileTypeGroupPipe implements PipeTransform {\r\n\r\n transform(value: FileTypeGroup): string {\r\n switch (value) {\r\n case FileTypeGroup.Archive:\r\n return translate('file-type-group-pipe.archive');\r\n case FileTypeGroup.Epub:\r\n return translate('file-type-group-pipe.epub');\r\n case FileTypeGroup.Pdf:\r\n return translate('file-type-group-pipe.pdf');\r\n case FileTypeGroup.Images:\r\n return translate('file-type-group-pipe.image');\r\n\r\n }\r\n }\r\n\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component, DestroyRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {FormControl, FormGroup, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {Select2Module} from \"ng-select2-component\";\r\nimport {TranslocoDirective} from \"@ngneat/transloco\";\r\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\r\nimport {debounceTime, distinctUntilChanged, tap} from \"rxjs/operators\";\r\n\r\n@Component({\r\n selector: 'app-edit-list',\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule, Select2Module, TranslocoDirective],\r\n templateUrl: './edit-list.component.html',\r\n styleUrl: './edit-list.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EditListComponent implements OnInit {\r\n\r\n private readonly cdRef = inject(ChangeDetectorRef);\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n @Input({required: true}) items: Array = [];\r\n @Input({required: true}) label = '';\r\n @Output() updateItems = new EventEmitter>();\r\n\r\n form: FormGroup = new FormGroup({});\r\n private combinedItems: string = '';\r\n\r\n get Items() {\r\n return this.combinedItems.split(',') || [''];\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.items.forEach((link, index) => {\r\n this.form.addControl('link' + index, new FormControl(link, []));\r\n });\r\n\r\n this.combinedItems = this.items.join(',');\r\n\r\n this.form.valueChanges.pipe(\r\n debounceTime(100),\r\n distinctUntilChanged(),\r\n tap(data => this.emit()),\r\n takeUntilDestroyed(this.destroyRef))\r\n .subscribe();\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n add() {\r\n this.combinedItems += ',';\r\n this.form.addControl('link' + (this.Items.length - 1), new FormControl('', []));\r\n this.emit();\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n remove(index: number) {\r\n\r\n const initialControls = Object.keys(this.form.controls)\r\n .filter(key => key.startsWith('link'));\r\n\r\n if (index == 0 && initialControls.length === 1) {\r\n this.form.get(initialControls[0])?.setValue('', {emitEvent: true});\r\n this.emit();\r\n this.cdRef.markForCheck();\r\n return;\r\n }\r\n\r\n // Remove the form control explicitly then rebuild the combinedItems\r\n this.form.removeControl('link' + index, {emitEvent: true});\r\n\r\n this.combinedItems = Object.keys(this.form.controls)\r\n .filter(key => key.startsWith('link'))\r\n .map(key => this.form.get(key)?.value)\r\n .join(',');\r\n\r\n\r\n this.emit();\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n emit() {\r\n this.updateItems.emit(Object.keys(this.form.controls)\r\n .filter(key => key.startsWith('link'))\r\n .map(key => this.form.get(key)?.value)\r\n .filter(v => v !== null && v !== ''));\r\n }\r\n}\r\n","
\r\n\r\n @for(item of Items; let i = $index; track item; let isFirst = $first) {\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n }\r\n\r\n
\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n DestroyRef,\r\n inject,\r\n Input,\r\n OnInit\r\n} from '@angular/core';\r\nimport {FormControl, FormGroup, ReactiveFormsModule, Validators} from '@angular/forms';\r\nimport {\r\n NgbAccordionBody,\r\n NgbAccordionButton, NgbAccordionCollapse,\r\n NgbAccordionDirective, NgbAccordionHeader, NgbAccordionItem,\r\n NgbActiveModal,\r\n NgbModal,\r\n NgbModalModule,\r\n NgbNav,\r\n NgbNavContent,\r\n NgbNavItem,\r\n NgbNavLink,\r\n NgbNavOutlet,\r\n NgbTooltip\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport {ToastrService} from 'ngx-toastr';\r\nimport {debounceTime, distinctUntilChanged, switchMap, tap} from 'rxjs';\r\nimport {SettingsService} from 'src/app/admin/settings.service';\r\nimport {\r\n DirectoryPickerComponent,\r\n DirectoryPickerResult\r\n} from 'src/app/admin/_modals/directory-picker/directory-picker.component';\r\nimport {ConfirmService} from 'src/app/shared/confirm.service';\r\nimport {Breakpoint, UtilityService} from 'src/app/shared/_services/utility.service';\r\nimport {Library, LibraryType} from 'src/app/_models/library/library';\r\nimport {ImageService} from 'src/app/_services/image.service';\r\nimport {LibraryService} from 'src/app/_services/library.service';\r\nimport {UploadService} from 'src/app/_services/upload.service';\r\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {SentenceCasePipe} from \"../../../_pipes/sentence-case.pipe\";\r\nimport {CoverImageChooserComponent} from \"../../../cards/cover-image-chooser/cover-image-chooser.component\";\r\nimport {translate, TranslocoModule} from \"@ngneat/transloco\";\r\nimport {DefaultDatePipe} from \"../../../_pipes/default-date.pipe\";\r\nimport {allFileTypeGroup, FileTypeGroup} from \"../../../_models/library/file-type-group.enum\";\r\nimport {FileTypeGroupPipe} from \"../../../_pipes/file-type-group.pipe\";\r\nimport {EditListComponent} from \"../../../shared/edit-list/edit-list.component\";\r\nimport {WikiLink} from \"../../../_models/wiki\";\r\n\r\nenum TabID {\r\n General = 'general-tab',\r\n Folder = 'folder-tab',\r\n Cover = 'cover-tab',\r\n Advanced = 'advanced-tab'\r\n}\r\n\r\nenum StepID {\r\n General = 0,\r\n Folder = 1,\r\n Cover = 2,\r\n Advanced = 3\r\n}\r\n\r\n@Component({\r\n selector: 'app-library-settings-modal',\r\n standalone: true,\r\n imports: [CommonModule, NgbModalModule, NgbNavLink, NgbNavItem, NgbNavContent, ReactiveFormsModule, NgbTooltip,\r\n SentenceCasePipe, NgbNav, NgbNavOutlet, CoverImageChooserComponent, TranslocoModule, DefaultDatePipe,\r\n FileTypeGroupPipe, NgbAccordionDirective, NgbAccordionItem, NgbAccordionHeader, NgbAccordionButton, NgbAccordionCollapse, NgbAccordionBody, EditListComponent],\r\n templateUrl: './library-settings-modal.component.html',\r\n styleUrls: ['./library-settings-modal.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class LibrarySettingsModalComponent implements OnInit {\r\n\r\n protected readonly LibraryType = LibraryType;\r\n protected readonly Breakpoint = Breakpoint;\r\n protected readonly TabID = TabID;\r\n protected readonly WikiLink = WikiLink;\r\n\r\n public readonly utilityService = inject(UtilityService);\r\n public readonly modal = inject(NgbActiveModal);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly uploadService = inject(UploadService);\r\n private readonly modalService = inject(NgbModal);\r\n private readonly settingService = inject(SettingsService);\r\n private readonly confirmService = inject(ConfirmService);\r\n private readonly libraryService = inject(LibraryService);\r\n private readonly toastr = inject(ToastrService);\r\n private readonly cdRef = inject(ChangeDetectorRef);\r\n private readonly imageService = inject(ImageService);\r\n\r\n @Input({required: true}) library!: Library | undefined;\r\n\r\n active = TabID.General;\r\n imageUrls: Array = [];\r\n\r\n libraryForm: FormGroup = new FormGroup({\r\n name: new FormControl('', { nonNullable: true, validators: [Validators.required] }),\r\n type: new FormControl(LibraryType.Manga, { nonNullable: true, validators: [Validators.required] }),\r\n folderWatching: new FormControl(true, { nonNullable: true, validators: [Validators.required] }),\r\n includeInDashboard: new FormControl(true, { nonNullable: true, validators: [Validators.required] }),\r\n includeInRecommended: new FormControl(true, { nonNullable: true, validators: [Validators.required] }),\r\n includeInSearch: new FormControl(true, { nonNullable: true, validators: [Validators.required] }),\r\n manageCollections: new FormControl(true, { nonNullable: true, validators: [Validators.required] }),\r\n manageReadingLists: new FormControl(true, { nonNullable: true, validators: [Validators.required] }),\r\n allowScrobbling: new FormControl(true, { nonNullable: true, validators: [Validators.required] }),\r\n collapseSeriesRelationships: new FormControl(false, { nonNullable: true, validators: [Validators.required] }),\r\n });\r\n\r\n selectedFolders: string[] = [];\r\n madeChanges = false;\r\n libraryTypes: string[] = []\r\n\r\n isAddLibrary = false;\r\n setupStep = StepID.General;\r\n fileTypeGroups = allFileTypeGroup;\r\n excludePatterns: Array = [''];\r\n\r\n get IsKavitaPlusEligible() {\r\n const libType = parseInt(this.libraryForm.get('type')?.value + '', 10) as LibraryType;\r\n return libType === LibraryType.Manga || libType === LibraryType.LightNovel;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.settingService.getLibraryTypes().subscribe((types) => {\r\n this.libraryTypes = types;\r\n this.cdRef.markForCheck();\r\n });\r\n\r\n if (this.library === undefined) {\r\n this.isAddLibrary = true;\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n if (this.library?.coverImage != null && this.library?.coverImage !== '') {\r\n this.imageUrls.push(this.imageService.getLibraryCoverImage(this.library.id));\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n if (this.library && (this.library.type === LibraryType.Comic || this.library.type === LibraryType.Book)) {\r\n this.libraryForm.get('allowScrobbling')?.setValue(false);\r\n this.libraryForm.get('allowScrobbling')?.disable();\r\n }\r\n\r\n this.libraryForm.get('name')?.valueChanges.pipe(\r\n debounceTime(100),\r\n distinctUntilChanged(),\r\n switchMap(name => this.libraryService.libraryNameExists(name)),\r\n tap(exists => {\r\n const isExistingName = this.libraryForm.get('name')?.value === this.library?.name;\r\n if (!exists || isExistingName) {\r\n this.libraryForm.get('name')?.setErrors(null);\r\n } else {\r\n this.libraryForm.get('name')?.setErrors({duplicateName: true})\r\n }\r\n this.cdRef.markForCheck();\r\n }),\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe();\r\n\r\n\r\n this.setValues();\r\n\r\n // This needs to only apply after first render\r\n this.libraryForm.get('type')?.valueChanges.pipe(\r\n tap((type: LibraryType) => {\r\n const libType = parseInt(type + '', 10) as LibraryType;\r\n switch (libType) {\r\n case LibraryType.Manga:\r\n this.libraryForm.get(FileTypeGroup.Archive + '')?.setValue(true);\r\n this.libraryForm.get(FileTypeGroup.Images + '')?.setValue(true);\r\n this.libraryForm.get(FileTypeGroup.Pdf + '')?.setValue(false);\r\n this.libraryForm.get(FileTypeGroup.Epub + '')?.setValue(false);\r\n break;\r\n case LibraryType.Comic:\r\n case LibraryType.ComicVine:\r\n this.libraryForm.get(FileTypeGroup.Archive + '')?.setValue(true);\r\n this.libraryForm.get(FileTypeGroup.Images + '')?.setValue(false);\r\n this.libraryForm.get(FileTypeGroup.Pdf + '')?.setValue(false);\r\n this.libraryForm.get(FileTypeGroup.Epub + '')?.setValue(false);\r\n break;\r\n case LibraryType.Book:\r\n this.libraryForm.get(FileTypeGroup.Archive + '')?.setValue(false);\r\n this.libraryForm.get(FileTypeGroup.Images + '')?.setValue(false);\r\n this.libraryForm.get(FileTypeGroup.Pdf + '')?.setValue(true);\r\n this.libraryForm.get(FileTypeGroup.Epub + '')?.setValue(true);\r\n break;\r\n case LibraryType.LightNovel:\r\n this.libraryForm.get(FileTypeGroup.Archive + '')?.setValue(false);\r\n this.libraryForm.get(FileTypeGroup.Images + '')?.setValue(false);\r\n this.libraryForm.get(FileTypeGroup.Pdf + '')?.setValue(false);\r\n this.libraryForm.get(FileTypeGroup.Epub + '')?.setValue(true);\r\n break;\r\n case LibraryType.Images:\r\n this.libraryForm.get(FileTypeGroup.Archive + '')?.setValue(false);\r\n this.libraryForm.get(FileTypeGroup.Images + '')?.setValue(true);\r\n this.libraryForm.get(FileTypeGroup.Pdf + '')?.setValue(false);\r\n this.libraryForm.get(FileTypeGroup.Epub + '')?.setValue(false);\r\n break;\r\n }\r\n\r\n this.libraryForm.get('allowScrobbling')?.setValue(this.IsKavitaPlusEligible);\r\n this.cdRef.markForCheck();\r\n }),\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe();\r\n }\r\n\r\n setValues() {\r\n if (this.library !== undefined) {\r\n this.libraryForm.get('name')?.setValue(this.library.name);\r\n this.libraryForm.get('type')?.setValue(this.library.type);\r\n this.libraryForm.get('folderWatching')?.setValue(this.library.folderWatching);\r\n this.libraryForm.get('includeInDashboard')?.setValue(this.library.includeInDashboard);\r\n this.libraryForm.get('includeInRecommended')?.setValue(this.library.includeInRecommended);\r\n this.libraryForm.get('includeInSearch')?.setValue(this.library.includeInSearch);\r\n this.libraryForm.get('manageCollections')?.setValue(this.library.manageCollections);\r\n this.libraryForm.get('manageReadingLists')?.setValue(this.library.manageReadingLists);\r\n this.libraryForm.get('collapseSeriesRelationships')?.setValue(this.library.collapseSeriesRelationships);\r\n this.libraryForm.get('allowScrobbling')?.setValue(this.library.allowScrobbling);\r\n this.selectedFolders = this.library.folders;\r\n this.madeChanges = false;\r\n for(let fileTypeGroup of allFileTypeGroup) {\r\n this.libraryForm.addControl(fileTypeGroup + '', new FormControl(this.library.libraryFileTypes.includes(fileTypeGroup), []));\r\n }\r\n for(let glob of this.library.excludePatterns) {\r\n this.libraryForm.addControl('excludeGlob-' , new FormControl(glob, []));\r\n }\r\n this.excludePatterns = this.library.excludePatterns;\r\n } else {\r\n for(let fileTypeGroup of allFileTypeGroup) {\r\n this.libraryForm.addControl(fileTypeGroup + '', new FormControl(true, []));\r\n }\r\n }\r\n\r\n if (this.excludePatterns.length === 0) {\r\n this.excludePatterns = [''];\r\n }\r\n\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n updateGlobs(items: Array) {\r\n this.excludePatterns = items;\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n isDisabled() {\r\n return !(this.libraryForm.valid && this.selectedFolders.length > 0);\r\n }\r\n\r\n reset() {\r\n this.setValues();\r\n }\r\n\r\n close(returnVal= false) {\r\n this.modal.close(returnVal);\r\n }\r\n\r\n forceScan() {\r\n this.libraryService.scan(this.library!.id, true)\r\n .subscribe(() => {\r\n this.toastr.info(translate('toasts.forced-scan-queued', {name: this.library!.name}));\r\n this.close();\r\n });\r\n }\r\n\r\n async save() {\r\n const model = this.libraryForm.value;\r\n model.folders = this.selectedFolders;\r\n model.fileGroupTypes = [];\r\n for(let fileTypeGroup of allFileTypeGroup) {\r\n if (model[fileTypeGroup]) {\r\n model.fileGroupTypes.push(fileTypeGroup);\r\n }\r\n }\r\n model.excludePatterns = this.excludePatterns;\r\n\r\n if (this.libraryForm.errors) {\r\n return;\r\n }\r\n\r\n if (this.library !== undefined) {\r\n model.id = this.library.id;\r\n model.folders = model.folders.map((item: string) => item.startsWith('\\\\') ? item.substr(1, item.length) : item);\r\n model.type = parseInt(model.type, 10);\r\n\r\n if (model.type !== this.library.type) {\r\n if (!await this.confirmService.confirm(translate('toasts.confirm-library-type-change'))) return;\r\n }\r\n\r\n this.libraryService.update(model).subscribe(() => {\r\n this.close(true);\r\n });\r\n } else {\r\n model.folders = model.folders.map((item: string) => item.startsWith('\\\\') ? item.substr(1, item.length) : item);\r\n model.type = parseInt(model.type, 10);\r\n this.libraryService.create(model).subscribe(() => {\r\n this.toastr.success(translate('toasts.library-created'));\r\n this.close(true);\r\n });\r\n }\r\n }\r\n\r\n nextStep() {\r\n this.setupStep++;\r\n switch(this.setupStep) {\r\n case StepID.Folder:\r\n this.active = TabID.Folder;\r\n break;\r\n case StepID.Cover:\r\n this.active = TabID.Cover;\r\n break;\r\n case StepID.Advanced:\r\n this.active = TabID.Advanced;\r\n break;\r\n }\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n applyCoverImage(coverUrl: string) {\r\n this.uploadService.updateLibraryCoverImage(this.library!.id, coverUrl).subscribe(() => {});\r\n }\r\n\r\n updateCoverImageIndex(selectedIndex: number) {\r\n if (selectedIndex <= 0) return;\r\n this.applyCoverImage(this.imageUrls[selectedIndex]);\r\n }\r\n\r\n resetCoverImage() {\r\n this.uploadService.updateLibraryCoverImage(this.library!.id, '').subscribe(() => {});\r\n }\r\n\r\n openDirectoryPicker() {\r\n const modalRef = this.modalService.open(DirectoryPickerComponent, { scrollable: true, size: 'lg' });\r\n modalRef.closed.subscribe((closeResult: DirectoryPickerResult) => {\r\n if (closeResult.success) {\r\n if (!this.selectedFolders.includes(closeResult.folderPath)) {\r\n this.selectedFolders.push(closeResult.folderPath);\r\n this.madeChanges = true;\r\n this.cdRef.markForCheck();\r\n }\r\n }\r\n });\r\n }\r\n\r\n removeFolder(folder: string) {\r\n this.selectedFolders = this.selectedFolders.filter(item => item !== folder);\r\n this.madeChanges = true;\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n isNextDisabled() {\r\n switch (this.setupStep) {\r\n case StepID.General:\r\n return this.libraryForm.get('name')?.invalid || this.libraryForm.get('type')?.invalid;\r\n case StepID.Folder:\r\n return this.selectedFolders.length === 0;\r\n case StepID.Cover:\r\n return false; // Covers are optional\r\n case StepID.Advanced:\r\n return false; // Advanced are optional\r\n }\r\n }\r\n}\r\n","\r\n
\r\n

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

\r\n \r\n
\r\n
\r\n
\r\n
    \r\n\r\n
  • \r\n {{t(TabID.General)}}\r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {{t('required-field')}}\r\n
    \r\n
    \r\n {{t('library-name-unique')}}\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n @if(IsKavitaPlusEligible) {\r\n \r\n {{t('kavitaplus-eligible-label')}}\r\n \r\n \r\n }\r\n {{t('type-tooltip')}}\r\n {{t('kavitaplus-eligible-tooltip')}}\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n {{t('last-scanned-label')}}\r\n {{library?.lastScanned | date: 'short' | defaultDate}}\r\n
    \r\n
    \r\n
  • \r\n\r\n\r\n
  • \r\n {{t(TabID.Folder)}}\r\n \r\n

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

    \r\n
      \r\n
    • \r\n {{folder}}\r\n \r\n
    • \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

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

    \r\n
    \r\n
    \r\n

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

    \r\n
    \r\n
    \r\n
  • \r\n\r\n
  • \r\n {{t(TabID.Cover)}}\r\n \r\n

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

    \r\n

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

    \r\n \r\n
    \r\n
  • \r\n\r\n
  • \r\n {{t(TabID.Advanced)}}\r\n \r\n
    \r\n
    \r\n
    \r\n
    {{t('file-type-group-label')}}
    \r\n

    \r\n {{t('file-type-group-tooltip')}}\r\n

    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n \r\n {{t('exclude-patterns-tooltip')}}{{t('help')}}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n

    \r\n {{t('manage-collection-tooltip')}}\r\n

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n

    \r\n {{t('manage-reading-list-tooltip')}}\r\n

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n

    \r\n {{t('allow-scrobbling-tooltip')}}\r\n

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n

    \r\n {{t('folder-watching-tooltip')}}\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n

    \r\n {{t('include-in-dashboard-tooltip')}}\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n

    \r\n {{t('include-in-recommendation-tooltip')}}\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n

    \r\n {{t('include-in-search-tooltip')}}\r\n

    \r\n
    \r\n
    \r\n
    \r\n
  • \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport {Subject, tap} from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\nimport { BulkAddToCollectionComponent } from '../cards/_modals/bulk-add-to-collection/bulk-add-to-collection.component';\r\nimport { AddToListModalComponent, ADD_FLOW } from '../reading-list/_modals/add-to-list-modal/add-to-list-modal.component';\r\nimport { EditReadingListModalComponent } from '../reading-list/_modals/edit-reading-list-modal/edit-reading-list-modal.component';\r\nimport { ConfirmService } from '../shared/confirm.service';\r\nimport { LibrarySettingsModalComponent } from '../sidenav/_modals/library-settings-modal/library-settings-modal.component';\r\nimport { Chapter } from '../_models/chapter';\r\nimport { Device } from '../_models/device/device';\r\nimport { Library } from '../_models/library/library';\r\nimport { ReadingList } from '../_models/reading-list';\r\nimport { Series } from '../_models/series';\r\nimport { Volume } from '../_models/volume';\r\nimport { DeviceService } from './device.service';\r\nimport { LibraryService } from './library.service';\r\nimport { MemberService } from './member.service';\r\nimport { ReaderService } from './reader.service';\r\nimport { SeriesService } from './series.service';\r\nimport {translate} from \"@ngneat/transloco\";\r\nimport {UserCollection} from \"../_models/collection-tag\";\r\nimport {CollectionTagService} from \"./collection-tag.service\";\r\nimport {SmartFilter} from \"../_models/metadata/v2/smart-filter\";\r\nimport {FilterService} from \"./filter.service\";\r\nimport {ReadingListService} from \"./reading-list.service\";\r\n\r\nexport type LibraryActionCallback = (library: Partial) => void;\r\nexport type SeriesActionCallback = (series: Series) => void;\r\nexport type VolumeActionCallback = (volume: Volume) => void;\r\nexport type ChapterActionCallback = (chapter: Chapter) => void;\r\nexport type ReadingListActionCallback = (readingList: ReadingList) => void;\r\nexport type VoidActionCallback = () => void;\r\nexport type BooleanActionCallback = (result: boolean) => void;\r\n\r\n/**\r\n * Responsible for executing actions\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ActionService implements OnDestroy {\r\n\r\n private readonly onDestroy = new Subject();\r\n private readingListModalRef: NgbModalRef | null = null;\r\n private collectionModalRef: NgbModalRef | null = null;\r\n\r\n constructor(private libraryService: LibraryService, private seriesService: SeriesService,\r\n private readerService: ReaderService, private toastr: ToastrService, private modalService: NgbModal,\r\n private confirmService: ConfirmService, private memberService: MemberService, private deviceService: DeviceService,\r\n private readonly collectionTagService: CollectionTagService, private filterService: FilterService,\r\n private readonly readingListService: ReadingListService) { }\r\n\r\n ngOnDestroy() {\r\n this.onDestroy.next();\r\n this.onDestroy.complete();\r\n }\r\n\r\n /**\r\n * Request a file scan for a given Library\r\n * @param library Partial Library, must have id and name populated\r\n * @param callback Optional callback to perform actions after API completes\r\n * @returns\r\n */\r\n async scanLibrary(library: Partial, callback?: LibraryActionCallback) {\r\n if (!library.hasOwnProperty('id') || library.id === undefined) {\r\n return;\r\n }\r\n\r\n // Prompt user if we should do a force or not\r\n const force = false; // await this.promptIfForce();\r\n\r\n this.libraryService.scan(library.id, force).pipe(take(1)).subscribe((res: any) => {\r\n this.toastr.info(translate('toasts.scan-queued', {name: library.name}));\r\n if (callback) {\r\n callback(library);\r\n }\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Request a refresh of Metadata for a given Library\r\n * @param library Partial Library, must have id and name populated\r\n * @param callback Optional callback to perform actions after API completes\r\n * @returns\r\n */\r\n async refreshMetadata(library: Partial, callback?: LibraryActionCallback) {\r\n if (!library.hasOwnProperty('id') || library.id === undefined) {\r\n return;\r\n }\r\n\r\n if (!await this.confirmService.confirm(translate('toasts.confirm-regen-covers'))) {\r\n if (callback) {\r\n callback(library);\r\n }\r\n return;\r\n }\r\n\r\n const forceUpdate = true; //await this.promptIfForce();\r\n\r\n this.libraryService.refreshMetadata(library?.id, forceUpdate).pipe(take(1)).subscribe((res: any) => {\r\n this.toastr.info(translate('toasts.scan-queued', {name: library.name}));\r\n if (callback) {\r\n callback(library);\r\n }\r\n });\r\n }\r\n\r\n editLibrary(library: Partial, callback?: LibraryActionCallback) {\r\n const modalRef = this.modalService.open(LibrarySettingsModalComponent, {size: 'xl', fullscreen: 'md'});\r\n modalRef.componentInstance.library = library;\r\n modalRef.closed.subscribe((closeResult: {success: boolean, library: Library, coverImageUpdate: boolean}) => {\r\n if (callback) callback(library)\r\n });\r\n }\r\n\r\n /**\r\n * Request an analysis of files for a given Library (currently just word count)\r\n * @param library Partial Library, must have id and name populated\r\n * @param callback Optional callback to perform actions after API completes\r\n * @returns\r\n */\r\n async analyzeFiles(library: Partial, callback?: LibraryActionCallback) {\r\n if (!library.hasOwnProperty('id') || library.id === undefined) {\r\n return;\r\n }\r\n\r\n if (!await this.confirmService.alert(translate('toasts.alert-long-running'))) {\r\n if (callback) {\r\n callback(library);\r\n }\r\n return;\r\n }\r\n\r\n this.libraryService.analyze(library?.id).pipe(take(1)).subscribe((res: any) => {\r\n this.toastr.info(translate('toasts.library-file-analysis-queued', {name: library.name}));\r\n if (callback) {\r\n callback(library);\r\n }\r\n });\r\n }\r\n\r\n async deleteLibrary(library: Partial, callback?: LibraryActionCallback) {\r\n if (!library.hasOwnProperty('id') || library.id === undefined) {\r\n return;\r\n }\r\n\r\n if (!await this.confirmService.alert(translate('toasts.confirm-library-delete'))) {\r\n if (callback) {\r\n callback(library);\r\n }\r\n return;\r\n }\r\n\r\n this.libraryService.delete(library?.id).pipe(take(1)).subscribe((res: any) => {\r\n this.toastr.info(translate('toasts.library-deleted', {name: library.name}));\r\n if (callback) {\r\n callback(library);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Mark a series as read; updates the series pagesRead\r\n * @param series Series, must have id and name populated\r\n * @param callback Optional callback to perform actions after API completes\r\n */\r\n markSeriesAsRead(series: Series, callback?: SeriesActionCallback) {\r\n this.seriesService.markRead(series.id).pipe(take(1)).subscribe(res => {\r\n series.pagesRead = series.pages;\r\n this.toastr.success(translate('toasts.entity-read', {name: series.name}));\r\n if (callback) {\r\n callback(series);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Mark a series as unread; updates the series pagesRead\r\n * @param series Series, must have id and name populated\r\n * @param callback Optional callback to perform actions after API completes\r\n */\r\n markSeriesAsUnread(series: Series, callback?: SeriesActionCallback) {\r\n this.seriesService.markUnread(series.id).pipe(take(1)).subscribe(res => {\r\n series.pagesRead = 0;\r\n this.toastr.success(translate('toasts.entity-unread', {name: series.name}));\r\n if (callback) {\r\n callback(series);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Start a file scan for a Series\r\n * @param series Series, must have libraryId and name populated\r\n * @param callback Optional callback to perform actions after API completes\r\n */\r\n async scanSeries(series: Series, callback?: SeriesActionCallback) {\r\n this.seriesService.scan(series.libraryId, series.id).pipe(take(1)).subscribe((res: any) => {\r\n this.toastr.info(translate('toasts.scan-queued', {name: series.name}));\r\n if (callback) {\r\n callback(series);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Start a file scan for analyze files for a Series\r\n * @param series Series, must have libraryId and name populated\r\n * @param callback Optional callback to perform actions after API completes\r\n */\r\n analyzeFilesForSeries(series: Series, callback?: SeriesActionCallback) {\r\n this.seriesService.analyzeFiles(series.libraryId, series.id).pipe(take(1)).subscribe((res: any) => {\r\n this.toastr.info(translate('toasts.scan-queued', {name: series.name}));\r\n if (callback) {\r\n callback(series);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Start a metadata refresh for a Series\r\n * @param series Series, must have libraryId, id and name populated\r\n * @param callback Optional callback to perform actions after API completes\r\n */\r\n async refreshMetdata(series: Series, callback?: SeriesActionCallback) {\r\n if (!await this.confirmService.confirm(translate('toasts.confirm-regen-covers'))) {\r\n if (callback) {\r\n callback(series);\r\n }\r\n return;\r\n }\r\n\r\n this.seriesService.refreshMetadata(series).pipe(take(1)).subscribe((res: any) => {\r\n this.toastr.info(translate('toasts.refresh-covers-queued', {name: series.name}));\r\n if (callback) {\r\n callback(series);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Mark all chapters and the volume as Read\r\n * @param seriesId Series Id\r\n * @param volume Volume, should have id, chapters and pagesRead populated\r\n * @param callback Optional callback to perform actions after API completes\r\n */\r\n markVolumeAsRead(seriesId: number, volume: Volume, callback?: VolumeActionCallback) {\r\n this.readerService.markVolumeRead(seriesId, volume.id).pipe(take(1)).subscribe(() => {\r\n volume.pagesRead = volume.pages;\r\n volume.chapters?.forEach(c => c.pagesRead = c.pages);\r\n this.toastr.success(translate('toasts.mark-read'));\r\n\r\n if (callback) {\r\n callback(volume);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Mark all chapters and the volume as unread\r\n * @param seriesId Series Id\r\n * @param volume Volume, should have id, chapters and pagesRead populated\r\n * @param callback Optional callback to perform actions after API completes\r\n */\r\n markVolumeAsUnread(seriesId: number, volume: Volume, callback?: VolumeActionCallback) {\r\n this.readerService.markVolumeUnread(seriesId, volume.id).subscribe(() => {\r\n volume.pagesRead = 0;\r\n volume.chapters?.forEach(c => c.pagesRead = 0);\r\n this.toastr.success(translate('toasts.mark-unread'));\r\n if (callback) {\r\n callback(volume);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Mark a chapter as read\r\n * @param seriesId Series Id\r\n * @param chapter Chapter, should have id, pages, volumeId populated\r\n * @param callback Optional callback to perform actions after API completes\r\n */\r\n markChapterAsRead(libraryId: number, seriesId: number, chapter: Chapter, callback?: ChapterActionCallback) {\r\n this.readerService.saveProgress(libraryId, seriesId, chapter.volumeId, chapter.id, chapter.pages).pipe(take(1)).subscribe(results => {\r\n chapter.pagesRead = chapter.pages;\r\n this.toastr.success(translate('toasts.mark-read'));\r\n if (callback) {\r\n callback(chapter);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Mark a chapter as unread\r\n * @param seriesId Series Id\r\n * @param chapter Chapter, should have id, pages, volumeId populated\r\n * @param callback Optional callback to perform actions after API completes\r\n */\r\n markChapterAsUnread(libraryId: number, seriesId: number, chapter: Chapter, callback?: ChapterActionCallback) {\r\n this.readerService.saveProgress(libraryId, seriesId, chapter.volumeId, chapter.id, 0).pipe(take(1)).subscribe(results => {\r\n chapter.pagesRead = 0;\r\n this.toastr.success(translate('toasts.mark-unread'));\r\n if (callback) {\r\n callback(chapter);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Mark all chapters and the volumes as Read. All volumes and chapters must belong to a series\r\n * @param seriesId Series Id\r\n * @param volumes Volumes, should have id, chapters and pagesRead populated\r\n * @param chapters? Chapters, should have id\r\n * @param callback Optional callback to perform actions after API completes\r\n */\r\n markMultipleAsRead(seriesId: number, volumes: Array, chapters?: Array, callback?: VoidActionCallback) {\r\n this.readerService.markMultipleRead(seriesId, volumes.map(v => v.id), chapters?.map(c => c.id)).pipe(take(1)).subscribe(() => {\r\n volumes.forEach(volume => {\r\n volume.pagesRead = volume.pages;\r\n volume.chapters?.forEach(c => c.pagesRead = c.pages);\r\n });\r\n chapters?.forEach(c => c.pagesRead = c.pages);\r\n this.toastr.success(translate('toasts.mark-read'));\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Mark all chapters and the volumes as Unread. All volumes must belong to a series\r\n * @param seriesId Series Id\r\n * @param volumes Volumes, should have id, chapters and pagesRead populated\r\n * @param callback Optional callback to perform actions after API completes\r\n */\r\n markMultipleAsUnread(seriesId: number, volumes: Array, chapters?: Array, callback?: VoidActionCallback) {\r\n this.readerService.markMultipleUnread(seriesId, volumes.map(v => v.id), chapters?.map(c => c.id)).pipe(take(1)).subscribe(() => {\r\n volumes.forEach(volume => {\r\n volume.pagesRead = 0;\r\n volume.chapters?.forEach(c => c.pagesRead = 0);\r\n });\r\n chapters?.forEach(c => c.pagesRead = 0);\r\n this.toastr.success(translate('toasts.mark-unread'));\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Mark all series as Read.\r\n * @param series Series, should have id, pagesRead populated\r\n * @param callback Optional callback to perform actions after API completes\r\n */\r\n markMultipleSeriesAsRead(series: Array, callback?: VoidActionCallback) {\r\n this.readerService.markMultipleSeriesRead(series.map(v => v.id)).pipe(take(1)).subscribe(() => {\r\n series.forEach(s => {\r\n s.pagesRead = s.pages;\r\n });\r\n this.toastr.success(translate('toasts.mark-read'));\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Mark all series as Unread.\r\n * @param series Series, should have id, pagesRead populated\r\n * @param callback Optional callback to perform actions after API completes\r\n */\r\n markMultipleSeriesAsUnread(series: Array, callback?: VoidActionCallback) {\r\n this.readerService.markMultipleSeriesUnread(series.map(v => v.id)).pipe(take(1)).subscribe(() => {\r\n series.forEach(s => {\r\n s.pagesRead = s.pages;\r\n });\r\n this.toastr.success(translate('toasts.mark-unread'));\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Mark all collections as promoted/unpromoted.\r\n * @param collections UserCollection, should have id, pagesRead populated\r\n * @param promoted boolean, promoted state\r\n * @param callback Optional callback to perform actions after API completes\r\n */\r\n promoteMultipleCollections(collections: Array, promoted: boolean, callback?: BooleanActionCallback) {\r\n this.collectionTagService.promoteMultipleCollections(collections.map(v => v.id), promoted).pipe(take(1)).subscribe(() => {\r\n if (promoted) {\r\n this.toastr.success(translate('toasts.collections-promoted'));\r\n } else {\r\n this.toastr.success(translate('toasts.collections-unpromoted'));\r\n }\r\n\r\n if (callback) {\r\n callback(true);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Deletes multiple collections\r\n * @param collections UserCollection, should have id, pagesRead populated\r\n * @param callback Optional callback to perform actions after API completes\r\n */\r\n async deleteMultipleCollections(collections: Array, callback?: BooleanActionCallback) {\r\n if (!await this.confirmService.confirm(translate('toasts.confirm-delete-collections'))) return;\r\n\r\n this.collectionTagService.deleteMultipleCollections(collections.map(v => v.id)).pipe(take(1)).subscribe(() => {\r\n this.toastr.success(translate('toasts.collections-deleted'));\r\n\r\n if (callback) {\r\n callback(true);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Mark all reading lists as promoted/unpromoted.\r\n * @param readingLists UserCollection, should have id, pagesRead populated\r\n * @param promoted boolean, promoted state\r\n * @param callback Optional callback to perform actions after API completes\r\n */\r\n promoteMultipleReadingLists(readingLists: Array, promoted: boolean, callback?: BooleanActionCallback) {\r\n this.readingListService.promoteMultipleReadingLists(readingLists.map(v => v.id), promoted).pipe(take(1)).subscribe(() => {\r\n if (promoted) {\r\n this.toastr.success(translate('toasts.reading-list-promoted'));\r\n } else {\r\n this.toastr.success(translate('toasts.reading-list-unpromoted'));\r\n }\r\n\r\n if (callback) {\r\n callback(true);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Deletes multiple collections\r\n * @param readingLists ReadingList, should have id\r\n * @param callback Optional callback to perform actions after API completes\r\n */\r\n async deleteMultipleReadingLists(readingLists: Array, callback?: BooleanActionCallback) {\r\n if (!await this.confirmService.confirm(translate('toasts.confirm-delete-reading-list'))) return;\r\n\r\n this.readingListService.deleteMultipleReadingLists(readingLists.map(v => v.id)).pipe(take(1)).subscribe(() => {\r\n this.toastr.success(translate('toasts.reading-lists-deleted'));\r\n\r\n if (callback) {\r\n callback(true);\r\n }\r\n });\r\n }\r\n\r\n addMultipleToReadingList(seriesId: number, volumes: Array, chapters?: Array, callback?: BooleanActionCallback) {\r\n if (this.readingListModalRef != null) { return; }\r\n this.readingListModalRef = this.modalService.open(AddToListModalComponent, { scrollable: true, size: 'md', fullscreen: 'md' });\r\n this.readingListModalRef.componentInstance.seriesId = seriesId;\r\n this.readingListModalRef.componentInstance.volumeIds = volumes.map(v => v.id);\r\n this.readingListModalRef.componentInstance.chapterIds = chapters?.map(c => c.id);\r\n this.readingListModalRef.componentInstance.title = 'Multiple Selections';\r\n this.readingListModalRef.componentInstance.type = ADD_FLOW.Multiple;\r\n\r\n\r\n this.readingListModalRef.closed.pipe(take(1)).subscribe(() => {\r\n this.readingListModalRef = null;\r\n if (callback) {\r\n callback(true);\r\n }\r\n });\r\n this.readingListModalRef.dismissed.pipe(take(1)).subscribe(() => {\r\n this.readingListModalRef = null;\r\n if (callback) {\r\n callback(false);\r\n }\r\n });\r\n }\r\n\r\n addMultipleSeriesToWantToReadList(seriesIds: Array, callback?: VoidActionCallback) {\r\n this.memberService.addSeriesToWantToRead(seriesIds).subscribe(() => {\r\n this.toastr.success('Series added to Want to Read list');\r\n if (callback) {\r\n callback();\r\n }\r\n });\r\n }\r\n\r\n removeMultipleSeriesFromWantToReadList(seriesIds: Array, callback?: VoidActionCallback) {\r\n this.memberService.removeSeriesToWantToRead(seriesIds).subscribe(() => {\r\n this.toastr.success(translate('toasts.series-removed-want-to-read'));\r\n if (callback) {\r\n callback();\r\n }\r\n });\r\n }\r\n\r\n addMultipleSeriesToReadingList(series: Array, callback?: BooleanActionCallback) {\r\n if (this.readingListModalRef != null) { return; }\r\n this.readingListModalRef = this.modalService.open(AddToListModalComponent, { scrollable: true, size: 'md', fullscreen: 'md' });\r\n this.readingListModalRef.componentInstance.seriesIds = series.map(v => v.id);\r\n this.readingListModalRef.componentInstance.title = 'Multiple Selections';\r\n this.readingListModalRef.componentInstance.type = ADD_FLOW.Multiple_Series;\r\n\r\n\r\n this.readingListModalRef.closed.pipe(take(1)).subscribe(() => {\r\n this.readingListModalRef = null;\r\n if (callback) {\r\n callback(true);\r\n }\r\n });\r\n this.readingListModalRef.dismissed.pipe(take(1)).subscribe(() => {\r\n this.readingListModalRef = null;\r\n if (callback) {\r\n callback(false);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Adds a set of series to a collection tag\r\n * @param series\r\n * @param callback\r\n * @returns\r\n */\r\n addMultipleSeriesToCollectionTag(series: Array, callback?: BooleanActionCallback) {\r\n if (this.collectionModalRef != null) { return; }\r\n this.collectionModalRef = this.modalService.open(BulkAddToCollectionComponent, { scrollable: true, size: 'md', windowClass: 'collection', fullscreen: 'md' });\r\n this.collectionModalRef.componentInstance.seriesIds = series.map(v => v.id);\r\n this.collectionModalRef.componentInstance.title = 'New Collection';\r\n\r\n this.collectionModalRef.closed.pipe(take(1)).subscribe(() => {\r\n this.collectionModalRef = null;\r\n if (callback) {\r\n callback(true);\r\n }\r\n });\r\n this.collectionModalRef.dismissed.pipe(take(1)).subscribe(() => {\r\n this.collectionModalRef = null;\r\n if (callback) {\r\n callback(false);\r\n }\r\n });\r\n }\r\n\r\n addSeriesToReadingList(series: Series, callback?: SeriesActionCallback) {\r\n if (this.readingListModalRef != null) { return; }\r\n this.readingListModalRef = this.modalService.open(AddToListModalComponent, { scrollable: true, size: 'md', fullscreen: 'md' });\r\n this.readingListModalRef.componentInstance.seriesId = series.id;\r\n this.readingListModalRef.componentInstance.title = series.name;\r\n this.readingListModalRef.componentInstance.type = ADD_FLOW.Series;\r\n\r\n\r\n this.readingListModalRef.closed.pipe(take(1)).subscribe(() => {\r\n this.readingListModalRef = null;\r\n if (callback) {\r\n callback(series);\r\n }\r\n });\r\n this.readingListModalRef.dismissed.pipe(take(1)).subscribe(() => {\r\n this.readingListModalRef = null;\r\n if (callback) {\r\n callback(series);\r\n }\r\n });\r\n }\r\n\r\n addVolumeToReadingList(volume: Volume, seriesId: number, callback?: VolumeActionCallback) {\r\n if (this.readingListModalRef != null) { return; }\r\n this.readingListModalRef = this.modalService.open(AddToListModalComponent, { scrollable: true, size: 'md', fullscreen: 'md' });\r\n this.readingListModalRef.componentInstance.seriesId = seriesId;\r\n this.readingListModalRef.componentInstance.volumeId = volume.id;\r\n this.readingListModalRef.componentInstance.type = ADD_FLOW.Volume;\r\n\r\n\r\n this.readingListModalRef.closed.pipe(take(1)).subscribe(() => {\r\n this.readingListModalRef = null;\r\n if (callback) {\r\n callback(volume);\r\n }\r\n });\r\n this.readingListModalRef.dismissed.pipe(take(1)).subscribe(() => {\r\n this.readingListModalRef = null;\r\n if (callback) {\r\n callback(volume);\r\n }\r\n });\r\n }\r\n\r\n addChapterToReadingList(chapter: Chapter, seriesId: number, callback?: ChapterActionCallback) {\r\n if (this.readingListModalRef != null) { return; }\r\n this.readingListModalRef = this.modalService.open(AddToListModalComponent, { scrollable: true, size: 'md', fullscreen: 'md' });\r\n this.readingListModalRef.componentInstance.seriesId = seriesId;\r\n this.readingListModalRef.componentInstance.chapterId = chapter.id;\r\n this.readingListModalRef.componentInstance.type = ADD_FLOW.Chapter;\r\n\r\n\r\n this.readingListModalRef.closed.pipe(take(1)).subscribe(() => {\r\n this.readingListModalRef = null;\r\n if (callback) {\r\n callback(chapter);\r\n }\r\n });\r\n this.readingListModalRef.dismissed.pipe(take(1)).subscribe(() => {\r\n this.readingListModalRef = null;\r\n if (callback) {\r\n callback(chapter);\r\n }\r\n });\r\n }\r\n\r\n editReadingList(readingList: ReadingList, callback?: ReadingListActionCallback) {\r\n const readingListModalRef = this.modalService.open(EditReadingListModalComponent, { scrollable: true, size: 'lg', fullscreen: 'md' });\r\n readingListModalRef.componentInstance.readingList = readingList;\r\n readingListModalRef.closed.pipe(take(1)).subscribe((list) => {\r\n if (callback && list !== undefined) {\r\n callback(readingList);\r\n }\r\n });\r\n readingListModalRef.dismissed.pipe(take(1)).subscribe((list) => {\r\n if (callback && list !== undefined) {\r\n callback(readingList);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Deletes all series\r\n * @param seriesIds - List of series\r\n * @param callback - Optional callback once complete\r\n */\r\n async deleteMultipleSeries(seriesIds: Array, callback?: BooleanActionCallback) {\r\n if (!await this.confirmService.confirm(translate('toasts.confirm-delete-multiple-series', {count: seriesIds.length}))) {\r\n if (callback) {\r\n callback(false);\r\n }\r\n return;\r\n }\r\n this.seriesService.deleteMultipleSeries(seriesIds.map(s => s.id)).pipe(take(1)).subscribe(res => {\r\n if (res) {\r\n this.toastr.success(translate('toasts.series-deleted'));\r\n } else {\r\n this.toastr.error(translate('errors.generic'));\r\n }\r\n\r\n if (callback) {\r\n callback(res);\r\n }\r\n });\r\n }\r\n\r\n async deleteSeries(series: Series, callback?: BooleanActionCallback) {\r\n if (!await this.confirmService.confirm(translate('toasts.confirm-delete-series'))) {\r\n if (callback) {\r\n callback(false);\r\n }\r\n return;\r\n }\r\n\r\n this.seriesService.delete(series.id).subscribe((res: boolean) => {\r\n if (callback) {\r\n if (res) {\r\n this.toastr.success(translate('toasts.series-deleted'));\r\n } else {\r\n this.toastr.error(translate('errors.generic'));\r\n }\r\n\r\n callback(res);\r\n }\r\n });\r\n }\r\n\r\n sendToDevice(chapterIds: Array, device: Device, callback?: VoidActionCallback) {\r\n this.deviceService.sendTo(chapterIds, device.id).subscribe(() => {\r\n this.toastr.success(translate('toasts.file-send-to', {name: device.name}));\r\n if (callback) {\r\n callback();\r\n }\r\n });\r\n }\r\n\r\n sendSeriesToDevice(seriesId: number, device: Device, callback?: VoidActionCallback) {\r\n this.deviceService.sendSeriesTo(seriesId, device.id).subscribe(() => {\r\n this.toastr.success(translate('toasts.file-send-to', {name: device.name}));\r\n if (callback) {\r\n callback();\r\n }\r\n });\r\n }\r\n\r\n async deleteFilter(filterId: number, callback?: BooleanActionCallback) {\r\n if (!await this.confirmService.confirm(translate('toasts.confirm-delete-smart-filter'))) {\r\n if (callback) {\r\n callback(false);\r\n }\r\n return;\r\n }\r\n\r\n this.filterService.deleteFilter(filterId).subscribe(_ => {\r\n this.toastr.success(translate('toasts.smart-filter-deleted'));\r\n\r\n if (callback) {\r\n callback(true);\r\n }\r\n });\r\n }\r\n\r\n}\r\n"],"mappings":"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","names":["ReadingListService","constructor","httpClient","utilityService","baseUrl","environment","apiUrl","getReadingList","readingListId","get","getReadingLists","includePromoted","sortByLastModified","pageNum","itemsPerPage","params","HttpParams","addPaginationIfExists","post","observe","pipe","map","response","createPaginatedResult","PaginatedResult","getReadingListsForSeries","seriesId","getListItems","createList","title","update","model","TextResonse","updateByMultiple","volumeIds","chapterIds","updateByMultipleSeries","seriesIds","updateBySeries","updateByVolume","volumeId","updateByChapter","chapterId","delete","updatePosition","readingListItemId","fromPosition","toPosition","deleteItem","removeRead","actionListFilter","action","readingList","canPromote","Action","Promote","UnPromote","nameExists","name","validateCbl","form","importCbl","getCharacters","promoteMultipleReadingLists","listIds","promoted","readingListIds","deleteMultipleReadingLists","ɵɵinject","HttpClient","UtilityService","factory","ɵfac","providedIn","_ReadingListService","_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","ɵɵ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","ɵɵ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","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","UploadService","constructor","httpClient","baseUrl","environment","apiUrl","uploadByUrl","url","post","TextResonse","updateSeriesCoverImage","seriesId","id","_cleanBase64Url","updateCollectionCoverImage","tagId","updateReadingListCoverImage","readingListId","updateChapterCoverImage","chapterId","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","ɵɵ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","ɵɵelement","ɵɵproperty","r_r3","t_r4","ɵɵelementContainerStart","ɵɵtext","ɵɵadvance","ɵɵtextInterpolate1","route_r5","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r6","index_r7","ɵɵnextContext","index","ctx_r1","ɵɵresetView","navigateTo","ɵɵelementEnd","ɵɵtextInterpolate","ɵɵtemplate","DirectoryPickerComponent_ng_container_0_ol_15_li_1_ng_container_1_Template","DirectoryPickerComponent_ng_container_0_ol_15_li_1_ng_template_2_Template","ɵɵtemplateRefExtractor","ɵɵclassMapInterpolate1","routeStack","peek","last_r8","nonActive_r9","DirectoryPickerComponent_ng_container_0_ol_15_li_1_Template","items","t_r10","folder_r12","_r11","$implicit","selectNode","ɵɵpureFunction1","_c1","disabled","ɵɵpropertyInterpolate1","idx_r13","name","ɵɵpropertyInterpolate","helpUrl","ɵɵsanitizeUrl","_r1","close","ɵɵtwoWayListener","$event","i0","ɵɵtwoWayBindingSet","path","focus$","next","target","value","click$","updateTable","DirectoryPickerComponent_ng_container_0_ng_template_12_Template","DirectoryPickerComponent_ng_container_0_ol_15_Template","DirectoryPickerComponent_ng_container_0_ng_template_16_Template","goBack","DirectoryPickerComponent_ng_container_0_tr_31_Template","DirectoryPickerComponent_ng_container_0_a_33_Template","share","ɵɵtwoWayProperty","search","rt_r14","undefined","noBreadcrumb_r15","folders","length","DirectoryPickerComponent","constructor","modal","libraryService","startingFolder","WikiLink","Library","currentRoot","Stack","Subject","searching","searchFailed","text$","debouncedText$","pipe","debounceTime","distinctUntilChanged","clicksWithClosedPopup$","filter","instance","isPopupOpen","inputFocus$","merge","tap","switchMap","term","listDirectories","map","f","fullPath","catchError","of","ngOnInit","split","folders2","endsWith","forEach","folder","push","join","loadChildren","pop","stackPeek","subscribe","err","item","find","success","folderPath","ɵɵdirectiveInject","NgbActiveModal","LibraryService","selectors","viewQuery","rf","ctx","DirectoryPickerComponent_ng_container_0_Template","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","NgbTypeahead","FormsModule","NgModel","NgbHighlight","NgIf","NgFor","NgClass","TranslocoDirective","styles","_DirectoryPickerComponent","DefaultDatePipe","constructor","translocoService","transform","value","replacementString","Infinity","Number","isNaN","translate","ɵɵdirectiveInject","TranslocoService","pure","standalone","_DefaultDatePipe","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","ɵɵelementContainerStart","ɵɵtext","ɵɵadvance","ɵɵtextInterpolate1","t_r2","ɵɵpureFunction1","_c0","ɵɵpipeBind1","ctx_r2","library","name","ɵɵelementStart","ɵɵelementEnd","ɵɵtemplate","LibrarySettingsModalComponent_ng_container_0_ng_template_14_div_4_div_1_Template","LibrarySettingsModalComponent_ng_container_0_ng_template_14_div_4_div_2_Template","ɵɵproperty","tmp_9_0","libraryForm","get","errors","required","tmp_10_0","duplicateName","ɵɵelement","kavitaplusEligibleTooltip_r4","ɵɵtextInterpolate","i_r6","opt_r5","ɵɵpipeBind2","lastScanned","LibrarySettingsModalComponent_ng_container_0_ng_template_14_div_4_Template","LibrarySettingsModalComponent_ng_container_0_ng_template_14_Conditional_9_Template","LibrarySettingsModalComponent_ng_container_0_ng_template_14_ng_template_10_Template","ɵɵtemplateRefExtractor","LibrarySettingsModalComponent_ng_container_0_ng_template_14_ng_template_12_Template","ɵɵelementContainer","LibrarySettingsModalComponent_ng_container_0_ng_template_14_option_17_Template","LibrarySettingsModalComponent_ng_container_0_ng_template_14_div_18_Template","ɵɵclassProp","invalid","touched","dirty","typeTooltip_r7","ɵɵconditional","IsKavitaPlusEligible","libraryTypes","isAddLibrary","ɵɵlistener","folder_r10","ɵɵrestoreView","_r9","$implicit","ɵɵnextContext","ɵɵresetView","removeFolder","LibrarySettingsModalComponent_ng_container_0_ng_template_18_li_3_Template","_r8","openDirectoryPicker","selectedFolders","WikiLink","ManagingFiles","ɵɵsanitizeUrl","Scanner","LibrarySettingsModalComponent_ng_container_0_ng_template_22_p_0_Template","ɵɵtwoWayListener","$event","_r11","i0","ɵɵtwoWayBindingSet","imageUrls","updateCoverImageIndex","applyCoverImage","resetCoverImage","ɵɵtwoWayProperty","coverImage","group_r12","_r13","updateGlobs","ScannerExclude","excludePatterns","LibrarySettingsModalComponent_ng_container_0_ng_template_26_div_8_Template","LibrarySettingsModalComponent_ng_container_0_ng_template_26_ng_template_18_Template","fileTypeGroups","_r14","nextStep","isNextDisabled","_r15","save","isDisabled","LibrarySettingsModalComponent_ng_container_0_ng_container_3_Template","LibrarySettingsModalComponent_ng_container_0_ng_template_4_Template","_r1","close","active","LibrarySettingsModalComponent_ng_container_0_ng_template_14_Template","LibrarySettingsModalComponent_ng_container_0_ng_template_18_Template","LibrarySettingsModalComponent_ng_container_0_ng_template_22_Template","LibrarySettingsModalComponent_ng_container_0_ng_template_26_Template","forceScan","reset","LibrarySettingsModalComponent_ng_container_0_ng_container_35_Template","LibrarySettingsModalComponent_ng_container_0_ng_template_36_Template","addLibraryTitle_r16","ɵɵclassMapInterpolate1","utilityService","getActiveBreakpoint","Breakpoint","Mobile","ɵɵpropertyInterpolate","TabID","General","Folder","setupStep","Cover","Advanced","nav_r17","editLibraryButton_r18","StepID","LibrarySettingsModalComponent","constructor","LibraryType","inject","UtilityService","modal","NgbActiveModal","destroyRef","DestroyRef","uploadService","UploadService","modalService","NgbModal","settingService","SettingsService","confirmService","ConfirmService","libraryService","LibraryService","toastr","ToastrService","cdRef","ChangeDetectorRef","imageService","ImageService","FormGroup","FormControl","nonNullable","validators","Validators","type","Manga","folderWatching","includeInDashboard","includeInRecommended","includeInSearch","manageCollections","manageReadingLists","allowScrobbling","collapseSeriesRelationships","madeChanges","allFileTypeGroup","libType","parseInt","value","LightNovel","ngOnInit","getLibraryTypes","subscribe","types","markForCheck","undefined","push","getLibraryCoverImage","id","Comic","Book","setValue","disable","valueChanges","pipe","debounceTime","distinctUntilChanged","switchMap","libraryNameExists","tap","exists","isExistingName","setErrors","takeUntilDestroyed","setValues","FileTypeGroup","Archive","Images","Pdf","Epub","ComicVine","folders","fileTypeGroup","addControl","libraryFileTypes","includes","glob","length","items","valid","returnVal","scan","info","translate","__async","model","fileGroupTypes","map","item","startsWith","substr","confirm","update","create","success","coverUrl","updateLibraryCoverImage","selectedIndex","open","DirectoryPickerComponent","scrollable","size","closed","closeResult","folderPath","folder","filter","selectors","inputs","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","rf","ctx","LibrarySettingsModalComponent_ng_container_0_Template","CommonModule","NgForOf","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","NgbAccordionDirective","NgbAccordionItem","NgbAccordionHeader","NgbAccordionButton","NgbAccordionCollapse","NgbAccordionBody","EditListComponent","changeDetection","_LibrarySettingsModalComponent","ActionService","constructor","libraryService","seriesService","readerService","toastr","modalService","confirmService","memberService","deviceService","collectionTagService","filterService","readingListService","onDestroy","Subject","readingListModalRef","collectionModalRef","ngOnDestroy","next","complete","scanLibrary","library","callback","__async","hasOwnProperty","id","undefined","scan","pipe","take","subscribe","res","info","translate","name","refreshMetadata","confirm","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","refreshMetdata","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","sendToDevice","device","sendTo","sendSeriesToDevice","sendSeriesTo","deleteFilter","filterId","_","ɵɵinject","LibraryService","SeriesService","ReaderService","ToastrService","NgbModal","ConfirmService","MemberService","DeviceService","CollectionTagService","FilterService","ReadingListService","factory","ɵfac","providedIn","_ActionService"],"x_google_ignoreList":[1]}