{ "version": 3, "sources": ["src/app/cards/series-card/series-card.component.ts", "src/app/cards/series-card/series-card.component.html"], "sourcesContent": ["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n EventEmitter,\n HostListener,\n inject,\n Input,\n OnChanges,\n OnInit,\n Output\n} from '@angular/core';\nimport {Router, RouterLink} from '@angular/router';\nimport {NgbModal, NgbOffcanvas, NgbProgressbar, NgbTooltip} from '@ng-bootstrap/ng-bootstrap';\nimport {ToastrService} from 'ngx-toastr';\nimport {Series} from 'src/app/_models/series';\nimport {ImageService} from 'src/app/_services/image.service';\nimport {Action, ActionFactoryService, ActionItem} from 'src/app/_services/action-factory.service';\nimport {SeriesService} from 'src/app/_services/series.service';\nimport {ActionService} from 'src/app/_services/action.service';\nimport {EditSeriesModalComponent} from '../_modals/edit-series-modal/edit-series-modal.component';\nimport {RelationKind} from 'src/app/_models/series-detail/relation-kind';\nimport {DecimalPipe} from \"@angular/common\";\nimport {CardItemComponent} from \"../card-item/card-item.component\";\nimport {RelationshipPipe} from \"../../_pipes/relationship.pipe\";\nimport {Device} from \"../../_models/device/device\";\nimport {translate, TranslocoDirective} from \"@jsverse/transloco\";\nimport {SeriesPreviewDrawerComponent} from \"../../_single-module/series-preview-drawer/series-preview-drawer.component\";\nimport {CardActionablesComponent} from \"../../_single-module/card-actionables/card-actionables.component\";\nimport {DefaultValuePipe} from \"../../_pipes/default-value.pipe\";\nimport {DownloadIndicatorComponent} from \"../download-indicator/download-indicator.component\";\nimport {EntityTitleComponent} from \"../entity-title/entity-title.component\";\nimport {FormsModule} from \"@angular/forms\";\nimport {ImageComponent} from \"../../shared/image/image.component\";\nimport {DownloadEvent, DownloadService} from \"../../shared/_services/download.service\";\nimport {Observable} from \"rxjs\";\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport {map} from \"rxjs/operators\";\nimport {AccountService} from \"../../_services/account.service\";\nimport {BulkSelectionService} from \"../bulk-selection.service\";\nimport {User} from \"../../_models/user\";\nimport {ScrollService} from \"../../_services/scroll.service\";\nimport {ReaderService} from \"../../_services/reader.service\";\nimport {SeriesFormatComponent} from \"../../shared/series-format/series-format.component\";\nimport {DefaultModalOptions} from \"../../_models/default-modal-options\";\n\nfunction deepClone(obj: any): any {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n if (obj instanceof Array) {\n return obj.map(item => deepClone(item));\n }\n\n const clonedObj: any = {};\n\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object' && obj[key] !== null) {\n clonedObj[key] = deepClone(obj[key]);\n } else {\n clonedObj[key] = obj[key];\n }\n }\n }\n\n return clonedObj;\n}\n\n@Component({\n selector: 'app-series-card',\n standalone: true,\n imports: [CardItemComponent, RelationshipPipe, CardActionablesComponent, DefaultValuePipe, DownloadIndicatorComponent,\n EntityTitleComponent, FormsModule, ImageComponent, NgbProgressbar, NgbTooltip, RouterLink, TranslocoDirective,\n SeriesFormatComponent, DecimalPipe],\n templateUrl: './series-card.component.html',\n styleUrls: ['./series-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SeriesCardComponent implements OnInit, OnChanges {\n\n private readonly offcanvasService = inject(NgbOffcanvas);\n private readonly router = inject(Router);\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly seriesService = inject(SeriesService);\n private readonly toastr = inject(ToastrService);\n private readonly modalService = inject(NgbModal);\n protected readonly imageService = inject(ImageService);\n private readonly actionFactoryService = inject(ActionFactoryService);\n private readonly actionService = inject(ActionService);\n private readonly accountService = inject(AccountService);\n private readonly destroyRef = inject(DestroyRef);\n protected readonly bulkSelectionService = inject(BulkSelectionService);\n private readonly downloadService = inject(DownloadService);\n private readonly scrollService = inject(ScrollService);\n private readonly readerService = inject(ReaderService);\n\n @Input({required: true}) series!: Series;\n @Input() libraryId = 0;\n @Input() suppressLibraryLink = false;\n /**\n * If the entity is selected or not.\n */\n @Input() selected: boolean = false;\n /**\n * If the entity should show selection code\n */\n @Input() allowSelection: boolean = false;\n /**\n * If the Series has a relationship to display\n */\n @Input() relation: RelationKind | undefined = undefined;\n /**\n * When a series card is shown on deck, a special actionable is added to the list\n */\n @Input() isOnDeck: boolean = false;\n /**\n * Opens a drawer with a preview of the metadata for this series\n */\n @Input() previewOnClick: boolean = false;\n\n @Output() clicked = new EventEmitter();\n /**\n * Emits when a reload needs to occur and the id of the entity\n */\n @Output() reload = new EventEmitter();\n @Output() dataChanged = new EventEmitter();\n /**\n * When the card is selected.\n */\n @Output() selection = new EventEmitter();\n\n count: number = 0;\n actions: ActionItem[] = [];\n imageUrl: string = '';\n /**\n * This is the download we get from download service.\n */\n download$: Observable | null = null;\n /**\n * Handles touch events for selection on mobile devices\n */\n prevTouchTime: number = 0;\n /**\n * Handles touch events for selection on mobile devices to ensure you aren't touch scrolling\n */\n prevOffset: number = 0;\n selectionInProgress: boolean = false;\n private user: User | undefined;\n\n\n @HostListener('touchmove', ['$event'])\n onTouchMove(event: TouchEvent) {\n if (!this.allowSelection) return;\n\n this.selectionInProgress = false;\n this.cdRef.markForCheck();\n }\n\n @HostListener('touchstart', ['$event'])\n onTouchStart(event: TouchEvent) {\n if (!this.allowSelection) return;\n\n this.prevTouchTime = event.timeStamp;\n this.prevOffset = this.scrollService.scrollPosition;\n this.selectionInProgress = true;\n }\n\n @HostListener('touchend', ['$event'])\n onTouchEnd(event: TouchEvent) {\n if (!this.allowSelection) return;\n const delta = event.timeStamp - this.prevTouchTime;\n const verticalOffset = this.scrollService.scrollPosition;\n\n if (delta >= 300 && delta <= 1000 && (verticalOffset === this.prevOffset) && this.selectionInProgress) {\n this.handleSelection();\n event.stopPropagation();\n event.preventDefault();\n }\n this.prevTouchTime = 0;\n this.selectionInProgress = false;\n }\n\n\n ngOnInit(): void {\n if (this.series) {\n this.imageUrl = this.imageService.getSeriesCoverImage(this.series.id);\n this.cdRef.markForCheck();\n }\n }\n\n ngOnChanges(changes: any) {\n if (this.series) {\n this.accountService.currentUser$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(user => {\n this.user = user;\n });\n\n this.download$ = this.downloadService.activeDownloads$.pipe(takeUntilDestroyed(this.destroyRef), map((events) => {\n return this.downloadService.mapToEntityType(events, this.series);\n }));\n\n this.actions = [...this.actionFactoryService.getSeriesActions((action: ActionItem, series: Series) => this.handleSeriesActionCallback(action, series))];\n if (this.isOnDeck) {\n const othersIndex = this.actions.findIndex(obj => obj.title === 'others');\n const othersAction = deepClone(this.actions[othersIndex]) as ActionItem;\n if (othersAction.children.findIndex(o => o.action === Action.RemoveFromOnDeck) < 0) {\n othersAction.children.push({\n action: Action.RemoveFromOnDeck,\n title: 'remove-from-on-deck',\n description: '',\n callback: (action: ActionItem, series: Series) => this.handleSeriesActionCallback(action, series),\n class: 'danger',\n requiresAdmin: false,\n children: [],\n });\n this.actions[othersIndex] = othersAction;\n }\n }\n this.cdRef.markForCheck();\n }\n }\n\n handleSeriesActionCallback(action: ActionItem, series: Series) {\n switch (action.action) {\n case(Action.MarkAsRead):\n this.markAsRead(series);\n break;\n case(Action.MarkAsUnread):\n this.markAsUnread(series);\n break;\n case(Action.Scan):\n this.scanLibrary(series);\n break;\n case(Action.RefreshMetadata):\n this.refreshMetadata(series, true);\n break;\n case(Action.GenerateColorScape):\n this.refreshMetadata(series, false);\n break;\n case(Action.Delete):\n this.deleteSeries(series);\n break;\n case(Action.Edit):\n this.openEditModal(series);\n break;\n case(Action.AddToReadingList):\n this.actionService.addSeriesToReadingList(series);\n break;\n case Action.AddToWantToReadList:\n this.actionService.addMultipleSeriesToWantToReadList([series.id]);\n break;\n case Action.RemoveFromWantToReadList:\n this.actionService.removeMultipleSeriesFromWantToReadList([series.id]);\n if (this.router.url.startsWith('/want-to-read')) {\n this.reload.emit(series.id);\n }\n break;\n case(Action.AddToCollection):\n this.actionService.addMultipleSeriesToCollectionTag([series]);\n break;\n case (Action.AnalyzeFiles):\n this.actionService.analyzeFilesForSeries(series);\n break;\n case Action.SendTo:\n const device = (action._extra!.data as Device);\n this.actionService.sendSeriesToDevice(series.id, device);\n break;\n case Action.RemoveFromOnDeck:\n this.seriesService.removeFromOnDeck(series.id).subscribe(() => this.reload.emit(series.id));\n break;\n case Action.Download:\n this.downloadService.download('series', this.series);\n break;\n default:\n break;\n }\n }\n\n openEditModal(data: Series) {\n const modalRef = this.modalService.open(EditSeriesModalComponent, DefaultModalOptions);\n modalRef.componentInstance.series = data;\n modalRef.closed.subscribe((closeResult: {success: boolean, series: Series, coverImageUpdate: boolean}) => {\n if (closeResult.success) {\n this.seriesService.getSeries(data.id).subscribe(series => {\n this.series = series;\n this.cdRef.markForCheck();\n this.reload.emit(series.id);\n this.dataChanged.emit(series);\n });\n }\n });\n }\n\n async refreshMetadata(series: Series, forceUpdate = false) {\n await this.actionService.refreshSeriesMetadata(series, undefined, forceUpdate, forceUpdate);\n }\n\n async scanLibrary(series: Series) {\n this.seriesService.scan(series.libraryId, series.id).subscribe((res: any) => {\n this.toastr.success(translate('toasts.scan-queued', {name: series.name}));\n });\n }\n\n async deleteSeries(series: Series) {\n await this.actionService.deleteSeries(series, (result: boolean) => {\n if (result) {\n this.reload.emit(series.id);\n }\n });\n }\n\n markAsUnread(series: Series) {\n this.actionService.markSeriesAsUnread(series, () => {\n if (this.series) {\n this.series.pagesRead = 0;\n this.cdRef.markForCheck();\n }\n\n this.dataChanged.emit(series);\n });\n }\n\n markAsRead(series: Series) {\n this.actionService.markSeriesAsRead(series, () => {\n if (this.series) {\n this.series.pagesRead = series.pages;\n this.cdRef.markForCheck();\n }\n this.dataChanged.emit(series);\n });\n }\n\n handleClick() {\n if (this.previewOnClick) {\n const ref = this.offcanvasService.open(SeriesPreviewDrawerComponent, {position: 'end', panelClass: ''});\n ref.componentInstance.isExternalSeries = false;\n ref.componentInstance.seriesId = this.series.id;\n ref.componentInstance.libraryId = this.series.libraryId;\n ref.componentInstance.name = this.series.name;\n return;\n }\n this.clicked.emit(this.series);\n this.router.navigate(['library', this.libraryId, 'series', this.series?.id]);\n }\n\n handleSelection(event?: any) {\n if (event) {\n event.stopPropagation();\n }\n this.selection.emit(this.selected);\n this.cdRef.detectChanges();\n }\n\n read(event: any) {\n\n event.stopPropagation();\n if (this.bulkSelectionService.hasSelections()) return;\n\n // Get Continue Reading point and open directly\n this.readerService.getCurrentChapter(this.series.id).subscribe(chapter => {\n this.readerService.readChapter(this.libraryId, this.series.id, chapter, false);\n });\n }\n\n}\n", "\n
\n
\n @if (series.pages > 0) {\n \n } @else if (series.pages === 0) {\n \n }\n\n
\n @if (series.pagesRead > 0 && series.pagesRead < series.pages && series.pages > 0 && series.pagesRead !== series.pages) {\n

\n \n

\n }\n\n \n \n \n
\n\n @if(series.pages === 0) {\n
\n {{t('cannot-read')}}\n
\n }\n\n @if (series.pagesRead === 0 && series.pages > 0) {\n
\n
\n
\n }\n\n @if (allowSelection) {\n
\n \n
\n }\n\n @if (count > 1) {\n
\n {{count}}\n
\n }\n\n
\n
\n
\n \n \n
\n \n
\n
\n
\n
\n
\n
34 ? series.localizedName : null\">\n
\n {{relation ? (relation | relationship) : (series.localizedName | defaultValue)}}\n
\n
\n\n
\n \n \n \n {{series.name}}\n \n \n\n @if (actions && actions.length > 0) {\n \n \n \n }\n
\n\n
\n\n
\n"], "mappings": "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", "names": ["\u0275\u0275element", "\u0275\u0275property", "\u0275\u0275pureFunction0", "_c0", "ctx_r1", "imageService", "getSeriesCoverImage", "series", "id", "errorImage", "\u0275\u0275elementStart", "\u0275\u0275elementEnd", "\u0275\u0275propertyInterpolate1", "\u0275\u0275pipeBind2", "pagesRead", "pages", "\u0275\u0275advance", "\u0275\u0275text", "\u0275\u0275textInterpolate1", "t_r3", "\u0275\u0275listener", "$event", "\u0275\u0275restoreView", "_r4", "\u0275\u0275nextContext", "\u0275\u0275resetView", "handleSelection", "\u0275\u0275classMapInterpolate1", "bulkSelectionService", "hasSelections", "selected", "_c1", "\u0275\u0275textInterpolate", "count", "_r5", "handleSeriesActionCallback", "actions", "name", "\u0275\u0275elementContainerStart", "_r1", "handleClick", "\u0275\u0275template", "SeriesCardComponent_ng_container_0_Conditional_3_Template", "SeriesCardComponent_ng_container_0_Conditional_4_Template", "SeriesCardComponent_ng_container_0_Conditional_6_Template", "SeriesCardComponent_ng_container_0_Conditional_9_Template", "SeriesCardComponent_ng_container_0_Conditional_10_Template", "SeriesCardComponent_ng_container_0_Conditional_11_Template", "SeriesCardComponent_ng_container_0_Conditional_12_Template", "read", "SeriesCardComponent_ng_container_0_Conditional_29_Template", "\u0275\u0275conditional", "download$", "allowSelection", "localizedName", "length", "relation", "\u0275\u0275pipeBind1", "format", "\u0275\u0275propertyInterpolate", "\u0275\u0275propertyInterpolate2", "libraryId", "deepClone", "obj", "Array", "map", "item", "clonedObj", "key", "Object", "prototype", "hasOwnProperty", "call", "SeriesCardComponent", "constructor", "offcanvasService", "inject", "NgbOffcanvas", "router", "Router", "cdRef", "ChangeDetectorRef", "seriesService", "SeriesService", "toastr", "ToastrService", "modalService", "NgbModal", "ImageService", "actionFactoryService", "ActionFactoryService", "actionService", "ActionService", "accountService", "AccountService", "destroyRef", "DestroyRef", "BulkSelectionService", "downloadService", "DownloadService", "scrollService", "ScrollService", "readerService", "ReaderService", "suppressLibraryLink", "undefined", "isOnDeck", "previewOnClick", "clicked", "EventEmitter", "reload", "dataChanged", "selection", "imageUrl", "prevTouchTime", "prevOffset", "selectionInProgress", "onTouchMove", "event", "markForCheck", "onTouchStart", "timeStamp", "scrollPosition", "onTouchEnd", "delta", "verticalOffset", "stopPropagation", "preventDefault", "ngOnInit", "ngOnChanges", "changes", "currentUser$", "pipe", "takeUntilDestroyed", "subscribe", "user", "activeDownloads$", "events", "mapToEntityType", "getSeriesActions", "action", "othersIndex", "findIndex", "title", "othersAction", "children", "o", "Action", "RemoveFromOnDeck", "push", "description", "callback", "class", "requiresAdmin", "MarkAsRead", "markAsRead", "MarkAsUnread", "markAsUnread", "Scan", "scanLibrary", "RefreshMetadata", "refreshMetadata", "GenerateColorScape", "Delete", "deleteSeries", "Edit", "openEditModal", "AddToReadingList", "addSeriesToReadingList", "AddToWantToReadList", "addMultipleSeriesToWantToReadList", "RemoveFromWantToReadList", "removeMultipleSeriesFromWantToReadList", "url", "startsWith", "emit", "AddToCollection", "addMultipleSeriesToCollectionTag", "AnalyzeFiles", "analyzeFilesForSeries", "SendTo", "device", "_extra", "data", "sendSeriesToDevice", "removeFromOnDeck", "Download", "download", "modalRef", "open", "EditSeriesModalComponent", "DefaultModalOptions", "componentInstance", "closed", "closeResult", "success", "getSeries", "forceUpdate", "__async", "refreshSeriesMetadata", "scan", "res", "translate", "result", "markSeriesAsUnread", "markSeriesAsRead", "ref", "SeriesPreviewDrawerComponent", "position", "panelClass", "isExternalSeries", "seriesId", "navigate", "detectChanges", "getCurrentChapter", "chapter", "readChapter", "selectors", "hostBindings", "rf", "ctx", "SeriesCardComponent_ng_container_0_Template", "RelationshipPipe", "CardActionablesComponent", "DefaultValuePipe", "DownloadIndicatorComponent", "FormsModule", "CheckboxControlValueAccessor", "NgControlStatus", "NgModel", "ImageComponent", "NgbProgressbar", "NgbTooltip", "RouterLink", "TranslocoDirective", "SeriesFormatComponent", "DecimalPipe", "styles", "changeDetection"] }