{"version":3,"sources":["src/app/_single-module/card-actionables/_pipes/dynamic-list.pipe.ts","src/app/_single-module/card-actionables/card-actionables.component.ts","src/app/_single-module/card-actionables/card-actionables.component.html","src/app/cards/bulk-selection.service.ts","node_modules/ng-circle-progress/fesm2020/ng-circle-progress.mjs","src/app/shared/circular-loader/circular-loader.component.ts","src/app/shared/circular-loader/circular-loader.component.html","src/app/cards/download-indicator/download-indicator.component.ts","src/app/cards/download-indicator/download-indicator.component.html","src/app/_pipes/manga-format-icon.pipe.ts","src/app/shared/_components/promoted-icon/promoted-icon.component.ts","src/app/shared/_components/promoted-icon/promoted-icon.component.html","src/app/shared/series-format/series-format.component.ts","src/app/shared/series-format/series-format.component.html","src/app/cards/card-item/card-item.component.ts","src/app/cards/card-item/card-item.component.html"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'dynamicList',\n pure: true,\n standalone: true\n})\nexport class DynamicListPipe implements PipeTransform {\n\n transform(value: any): Array<{title: string, data: any}> {\n if (value === undefined || value === null) return [];\n return value as {title: string, data: any}[];\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component, DestroyRef,\n EventEmitter,\n inject,\n Input,\n OnInit,\n Output\n} from '@angular/core';\nimport {NgbDropdown, NgbDropdownItem, NgbDropdownMenu, NgbDropdownToggle} from '@ng-bootstrap/ng-bootstrap';\nimport { AccountService } from 'src/app/_services/account.service';\nimport { Action, ActionItem } from 'src/app/_services/action-factory.service';\nimport {CommonModule} from \"@angular/common\";\nimport {TranslocoDirective} from \"@ngneat/transloco\";\nimport {DynamicListPipe} from \"./_pipes/dynamic-list.pipe\";\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\n\n@Component({\n selector: 'app-card-actionables',\n standalone: true,\n imports: [CommonModule, NgbDropdown, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, DynamicListPipe, TranslocoDirective],\n templateUrl: './card-actionables.component.html',\n styleUrls: ['./card-actionables.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CardActionablesComponent implements OnInit {\n\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly accountService = inject(AccountService);\n private readonly destroyRef = inject(DestroyRef);\n\n @Input() iconClass = 'fa-ellipsis-v';\n @Input() btnClass = '';\n @Input() actions: ActionItem[] = [];\n @Input() labelBy = 'card';\n @Input() disabled: boolean = false;\n @Output() actionHandler = new EventEmitter>();\n\n\n isAdmin: boolean = false;\n canDownload: boolean = false;\n canPromote: boolean = false;\n submenu: {[key: string]: NgbDropdown} = {};\n\n\n ngOnInit(): void {\n this.accountService.currentUser$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((user) => {\n if (!user) return;\n this.isAdmin = this.accountService.hasAdminRole(user);\n this.canDownload = this.accountService.hasDownloadRole(user);\n this.canPromote = this.accountService.hasPromoteRole(user);\n\n // We want to avoid an empty menu when user doesn't have access to anything\n if (!this.isAdmin && this.actions.filter(a => !a.requiresAdmin).length === 0) {\n this.actions = [];\n }\n\n this.cdRef.markForCheck();\n });\n }\n\n preventEvent(event: any) {\n event.stopPropagation();\n event.preventDefault();\n }\n\n performAction(event: any, action: ActionItem) {\n this.preventEvent(event);\n\n if (typeof action.callback === 'function') {\n this.actionHandler.emit(action);\n }\n }\n\n willRenderAction(action: ActionItem) {\n return (action.requiresAdmin && this.isAdmin)\n || (action.action === Action.Download && (this.canDownload || this.isAdmin))\n || (!action.requiresAdmin && action.action !== Action.Download)\n || (action.action === Action.Promote && (this.canPromote || this.isAdmin))\n || (action.action === Action.UnPromote && (this.canPromote || this.isAdmin))\n ;\n }\n\n shouldRenderSubMenu(action: ActionItem, dynamicList: null | Array) {\n return (action.children[0].dynamicList === undefined || action.children[0].dynamicList === null) || (dynamicList !== null && dynamicList.length > 0);\n }\n\n openSubmenu(actionTitle: string, subMenu: NgbDropdown) {\n // We keep track when we open and when we get a request to open, if we have other keys, we close them and clear their keys\n if (Object.keys(this.submenu).length > 0) {\n const keys = Object.keys(this.submenu).filter(k => k !== actionTitle);\n keys.forEach(key => {\n this.submenu[key].close();\n delete this.submenu[key];\n });\n }\n this.submenu[actionTitle] = subMenu;\n subMenu.open();\n }\n\n closeAllSubmenus() {\n Object.keys(this.submenu).forEach(key => {\n this.submenu[key].close();\n delete this.submenu[key];\n });\n }\n\n performDynamicClick(event: any, action: ActionItem, dynamicItem: any) {\n action._extra = dynamicItem;\n this.performAction(event, action);\n }\n}\n","\n 0\">\n
\n \n
\n \n
\n
\n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n \n \n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n\n
\n","import {Injectable} from '@angular/core';\nimport {NavigationStart, Router} from '@angular/router';\nimport {ReplaySubject} from 'rxjs';\nimport {filter} from 'rxjs/operators';\nimport {Action, ActionFactoryService, ActionItem} from '../_services/action-factory.service';\n\ntype DataSource = 'volume' | 'chapter' | 'special' | 'series' | 'bookmark' | 'sideNavStream' | 'collection';\n\n/**\n * Responsible for handling selections on cards. Can handle multiple card sources next to each other in different loops.\n * This will clear selections between pages.\n *\n * Remarks: Page which renders cards is responsible for listening for shift keydown/keyup and updating our state variable.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class BulkSelectionService {\n\n private debug: boolean = false;\n private prevIndex: number = 0;\n private prevDataSource!: DataSource;\n private selectedCards: { [key: string]: {[key: number]: boolean} } = {};\n private dataSourceMax: { [key: string]: number} = {};\n public isShiftDown: boolean = false;\n\n private actionsSource = new ReplaySubject[]>(1);\n public actions$ = this.actionsSource.asObservable();\n\n private selectionsSource = new ReplaySubject(1);\n /**\n * Number of active selections\n */\n public selections$ = this.selectionsSource.asObservable();\n\n constructor(router: Router, private actionFactory: ActionFactoryService) {\n router.events\n .pipe(filter(event => event instanceof NavigationStart))\n .subscribe(() => {\n this.deselectAll();\n this.dataSourceMax = {};\n this.prevIndex = 0;\n });\n }\n\n handleCardSelection(dataSource: DataSource, index: number, maxIndex: number, wasSelected: boolean) {\n if (this.isShiftDown) {\n\n if (dataSource === this.prevDataSource) {\n this.debugLog('Selecting ' + dataSource + ' cards from ' + this.prevIndex + ' to ' + index + ' as ' + !wasSelected);\n this.selectCards(dataSource, this.prevIndex, index, !wasSelected);\n } else {\n const isForwardSelection = index > this.prevIndex;\n\n if (isForwardSelection) {\n this.debugLog('Selecting ' + this.prevDataSource + ' cards from ' + this.prevIndex + ' to ' + this.dataSourceMax[this.prevDataSource]);\n this.selectCards(this.prevDataSource, this.prevIndex, this.dataSourceMax[this.prevDataSource], !wasSelected);\n this.debugLog('Selecting ' + dataSource + ' cards from ' + 0 + ' to ' + index);\n this.selectCards(dataSource, 0, index, !wasSelected);\n } else {\n this.debugLog('Selecting ' + this.prevDataSource + ' cards from ' + 0 + ' to ' + this.prevIndex);\n this.selectCards(this.prevDataSource, this.prevIndex, 0, !wasSelected);\n this.debugLog('Selecting ' + dataSource + ' cards from ' + index + ' to ' + maxIndex);\n this.selectCards(dataSource, index, maxIndex, !wasSelected);\n }\n }\n } else {\n this.debugLog('Selecting ' + dataSource + ' cards at ' + index);\n this.selectCards(dataSource, index, index, !wasSelected);\n }\n this.prevIndex = index;\n this.prevDataSource = dataSource;\n this.dataSourceMax[dataSource] = maxIndex;\n this.actionsSource.next(this.getActions(() => {}));\n }\n\n isCardSelected(dataSource: DataSource, index: number) {\n if (this.selectedCards.hasOwnProperty(dataSource) && this.selectedCards[dataSource].hasOwnProperty(index)) {\n return this.selectedCards[dataSource][index];\n }\n return false;\n }\n\n selectCards(dataSource: DataSource, from: number, to: number, value: boolean) {\n if (!this.selectedCards.hasOwnProperty(dataSource)) {\n this.selectedCards[dataSource] = {};\n }\n\n if (from === to) {\n this.selectedCards[dataSource][to] = value;\n this.selectionsSource.next(this.totalSelections());\n return;\n }\n\n if (from > to) {\n for (let i = to; i <= from; i++) {\n this.selectedCards[dataSource][i] = value;\n }\n }\n\n for (let i = from; i <= to; i++) {\n this.selectedCards[dataSource][i] = value;\n }\n this.selectionsSource.next(this.totalSelections());\n }\n\n deselectAll() {\n this.selectedCards = {};\n this.selectionsSource.next(0);\n }\n\n hasSelections() {\n const keys = Object.keys(this.selectedCards);\n return keys.filter(key => {\n return Object.values(this.selectedCards[key]).filter(item => item).length > 0;\n }).length > 0;\n }\n\n totalSelections() {\n let sum = 0;\n const keys = Object.keys(this.selectedCards);\n keys.forEach(key => {\n sum += Object.values(this.selectedCards[key]).filter(item => item).length;\n });\n return sum;\n }\n\n getSelectedCardsForSource(dataSource: DataSource) {\n if (!this.selectedCards.hasOwnProperty(dataSource)) return [];\n\n const ret = [];\n for(let k in this.selectedCards[dataSource]) {\n if (this.selectedCards[dataSource][k]) {\n ret.push(k);\n }\n }\n\n return ret;\n }\n\n getActions(callback: (action: ActionItem, data: any) => void) {\n // checks if series is present. If so, returns only series actions\n // else returns volume/chapter items\n const allowedActions = [Action.AddToReadingList, Action.MarkAsRead, Action.MarkAsUnread, Action.AddToCollection,\n Action.Delete, Action.AddToWantToReadList, Action.RemoveFromWantToReadList];\n if (Object.keys(this.selectedCards).filter(item => item === 'series').length > 0) {\n return this.applyFilterToList(this.actionFactory.getSeriesActions(callback), allowedActions);\n }\n\n if (Object.keys(this.selectedCards).filter(item => item === 'bookmark').length > 0) {\n return this.actionFactory.getBookmarkActions(callback);\n }\n\n if (Object.keys(this.selectedCards).filter(item => item === 'sideNavStream').length > 0) {\n return this.applyFilterToList(this.actionFactory.getSideNavStreamActions(callback), [Action.MarkAsInvisible, Action.MarkAsVisible]);\n }\n\n if (Object.keys(this.selectedCards).filter(item => item === 'collection').length > 0) {\n return this.applyFilterToList(this.actionFactory.getCollectionTagActions(callback), [Action.Promote, Action.UnPromote, Action.Delete]);\n }\n\n return this.applyFilterToList(this.actionFactory.getVolumeActions(callback), allowedActions);\n }\n\n private debugLog(message: string, extraData?: any) {\n if (!this.debug) return;\n\n if (extraData !== undefined) {\n console.log(message, extraData);\n } else {\n console.log(message);\n }\n }\n\n private applyFilter(action: ActionItem, allowedActions: Array) {\n\n let ret = false;\n if (action.action === Action.Submenu || allowedActions.includes(action.action)) {\n // Do something\n ret = true;\n }\n\n if (action.children === null || action.children?.length === 0) return ret;\n\n action.children = action.children.filter((childAction) => this.applyFilter(childAction, allowedActions));\n\n return ret;\n }\n\n\tprivate applyFilterToList(list: Array>, allowedActions: Array): Array> {\n\t\tconst actions = list.map((a) => {\n\t\t\treturn { ...a };\n\t\t});\n return actions.filter(action => this.applyFilter(action, allowedActions));\n\t}\n}\n","import * as i0 from '@angular/core';\nimport { EventEmitter, Component, Output, Input, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { timer } from 'rxjs';\nfunction CircleProgressComponent__svg_svg_0__svg_linearGradient_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(0, \"linearGradient\");\n i0.ɵɵelement(1, \"stop\", 5)(2, \"stop\", 6);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵattribute(\"id\", ctx_r1.svg.outerLinearGradient.id);\n i0.ɵɵadvance();\n i0.ɵɵattribute(\"stop-color\", ctx_r1.svg.outerLinearGradient.colorStop1)(\"stop-opacity\", 1);\n i0.ɵɵadvance();\n i0.ɵɵattribute(\"stop-color\", ctx_r1.svg.outerLinearGradient.colorStop2)(\"stop-opacity\", 1);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_radialGradient_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(0, \"radialGradient\");\n i0.ɵɵelement(1, \"stop\", 5)(2, \"stop\", 6);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵattribute(\"id\", ctx_r1.svg.radialGradient.id);\n i0.ɵɵadvance();\n i0.ɵɵattribute(\"stop-color\", ctx_r1.svg.radialGradient.colorStop1)(\"stop-opacity\", 1);\n i0.ɵɵadvance();\n i0.ɵɵattribute(\"stop-color\", ctx_r1.svg.radialGradient.colorStop2)(\"stop-opacity\", 1);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_ng_container_4__svg_circle_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelement(0, \"circle\");\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵattribute(\"cx\", ctx_r1.svg.backgroundCircle.cx)(\"cy\", ctx_r1.svg.backgroundCircle.cy)(\"r\", ctx_r1.svg.backgroundCircle.r)(\"fill\", ctx_r1.svg.backgroundCircle.fill)(\"fill-opacity\", ctx_r1.svg.backgroundCircle.fillOpacity)(\"stroke\", ctx_r1.svg.backgroundCircle.stroke)(\"stroke-width\", ctx_r1.svg.backgroundCircle.strokeWidth);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_ng_container_4__svg_circle_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelement(0, \"circle\");\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵattributeInterpolate2(\"fill\", \"url(\", ctx_r1.window.location.href, \"#\", ctx_r1.svg.radialGradient.id, \")\");\n i0.ɵɵattribute(\"cx\", ctx_r1.svg.backgroundCircle.cx)(\"cy\", ctx_r1.svg.backgroundCircle.cy)(\"r\", ctx_r1.svg.backgroundCircle.r)(\"fill-opacity\", ctx_r1.svg.backgroundCircle.fillOpacity)(\"stroke\", ctx_r1.svg.backgroundCircle.stroke)(\"stroke-width\", ctx_r1.svg.backgroundCircle.strokeWidth);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_ng_container_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, CircleProgressComponent__svg_svg_0__svg_ng_container_4__svg_circle_1_Template, 1, 7, \"circle\", 2)(2, CircleProgressComponent__svg_svg_0__svg_ng_container_4__svg_circle_2_Template, 1, 9, \"circle\", 2);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.options.backgroundGradient);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.options.backgroundGradient);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_circle_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelement(0, \"circle\");\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵattribute(\"cx\", ctx_r1.svg.circle.cx)(\"cy\", ctx_r1.svg.circle.cy)(\"r\", ctx_r1.svg.circle.r)(\"fill\", ctx_r1.svg.circle.fill)(\"stroke\", ctx_r1.svg.circle.stroke)(\"stroke-width\", ctx_r1.svg.circle.strokeWidth);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_ng_container_6__svg_path_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelement(0, \"path\");\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵattribute(\"d\", ctx_r1.svg.path.d)(\"stroke\", ctx_r1.svg.path.stroke)(\"stroke-width\", ctx_r1.svg.path.strokeWidth)(\"stroke-linecap\", ctx_r1.svg.path.strokeLinecap)(\"fill\", ctx_r1.svg.path.fill);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_ng_container_6__svg_path_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelement(0, \"path\");\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵattributeInterpolate2(\"stroke\", \"url(\", ctx_r1.window.location.href, \"#\", ctx_r1.svg.outerLinearGradient.id, \")\");\n i0.ɵɵattribute(\"d\", ctx_r1.svg.path.d)(\"stroke-width\", ctx_r1.svg.path.strokeWidth)(\"stroke-linecap\", ctx_r1.svg.path.strokeLinecap)(\"fill\", ctx_r1.svg.path.fill);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_ng_container_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, CircleProgressComponent__svg_svg_0__svg_ng_container_6__svg_path_1_Template, 1, 5, \"path\", 2)(2, CircleProgressComponent__svg_svg_0__svg_ng_container_6__svg_path_2_Template, 1, 7, \"path\", 2);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.options.outerStrokeGradient);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.options.outerStrokeGradient);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_1__svg_tspan_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(0, \"tspan\");\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const tspan_r3 = ctx.$implicit;\n const ctx_r1 = i0.ɵɵnextContext(4);\n i0.ɵɵattribute(\"x\", ctx_r1.svg.title.x)(\"y\", ctx_r1.svg.title.y)(\"dy\", tspan_r3.dy)(\"font-size\", ctx_r1.svg.title.fontSize)(\"font-weight\", ctx_r1.svg.title.fontWeight)(\"fill\", ctx_r1.svg.title.color);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(tspan_r3.span);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_1__svg_tspan_1_Template, 2, 7, \"tspan\", 8);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r1.svg.title.tspans);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_text_7__svg_tspan_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(0, \"tspan\");\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵattribute(\"font-size\", ctx_r1.svg.units.fontSize)(\"font-weight\", ctx_r1.svg.units.fontWeight)(\"fill\", ctx_r1.svg.units.color);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.svg.units.text);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_3__svg_tspan_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(0, \"tspan\");\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const tspan_r4 = ctx.$implicit;\n const ctx_r1 = i0.ɵɵnextContext(4);\n i0.ɵɵattribute(\"x\", ctx_r1.svg.subtitle.x)(\"y\", ctx_r1.svg.subtitle.y)(\"dy\", tspan_r4.dy)(\"font-size\", ctx_r1.svg.subtitle.fontSize)(\"font-weight\", ctx_r1.svg.subtitle.fontWeight)(\"fill\", ctx_r1.svg.subtitle.color);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(tspan_r4.span);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_3__svg_tspan_1_Template, 2, 7, \"tspan\", 8);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r1.svg.subtitle.tspans);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_text_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(0, \"text\", 7);\n i0.ɵɵtemplate(1, CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_1_Template, 2, 1, \"ng-container\", 2)(2, CircleProgressComponent__svg_svg_0__svg_text_7__svg_tspan_2_Template, 2, 4, \"tspan\", 2)(3, CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_3_Template, 2, 1, \"ng-container\", 2);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵattribute(\"x\", ctx_r1.svg.circle.cx)(\"y\", ctx_r1.svg.circle.cy)(\"text-anchor\", ctx_r1.svg.title.textAnchor);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.options.showTitle);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.options.showUnits);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.options.showSubtitle);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_image_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelement(0, \"image\", 9);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵattribute(\"height\", ctx_r1.svg.image.height)(\"width\", ctx_r1.svg.image.width)(\"href\", ctx_r1.svg.image.src, null, \"xlink\")(\"x\", ctx_r1.svg.image.x)(\"y\", ctx_r1.svg.image.y);\n }\n}\nfunction CircleProgressComponent__svg_svg_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(0, \"svg\", 1);\n i0.ɵɵlistener(\"click\", function CircleProgressComponent__svg_svg_0_Template_svg_click_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.emitClickEvent($event));\n });\n i0.ɵɵelementStart(1, \"defs\");\n i0.ɵɵtemplate(2, CircleProgressComponent__svg_svg_0__svg_linearGradient_2_Template, 3, 5, \"linearGradient\", 2)(3, CircleProgressComponent__svg_svg_0__svg_radialGradient_3_Template, 3, 5, \"radialGradient\", 2);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(4, CircleProgressComponent__svg_svg_0__svg_ng_container_4_Template, 3, 2, \"ng-container\", 2)(5, CircleProgressComponent__svg_svg_0__svg_circle_5_Template, 1, 6, \"circle\", 2)(6, CircleProgressComponent__svg_svg_0__svg_ng_container_6_Template, 3, 2, \"ng-container\", 2)(7, CircleProgressComponent__svg_svg_0__svg_text_7_Template, 4, 6, \"text\", 3)(8, CircleProgressComponent__svg_svg_0__svg_image_8_Template, 1, 5, \"image\", 4);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵattribute(\"viewBox\", ctx_r1.svg.viewBox)(\"height\", ctx_r1.svg.height)(\"width\", ctx_r1.svg.width)(\"class\", ctx_r1.options.class);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r1.options.outerStrokeGradient);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.options.backgroundGradient);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.options.showBackground);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.options.showInnerStroke);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", +ctx_r1.options.percent !== 0 || ctx_r1.options.showZeroOuterStroke);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.options.showImage && (ctx_r1.options.showTitle || ctx_r1.options.showUnits || ctx_r1.options.showSubtitle));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.options.showImage);\n }\n}\nclass CircleProgressOptions {\n constructor() {\n this.class = '';\n this.backgroundGradient = false;\n this.backgroundColor = 'transparent';\n this.backgroundGradientStopColor = 'transparent';\n this.backgroundOpacity = 1;\n this.backgroundStroke = 'transparent';\n this.backgroundStrokeWidth = 0;\n this.backgroundPadding = 5;\n this.percent = 0;\n this.radius = 90;\n this.space = 4;\n this.toFixed = 0;\n this.maxPercent = 1000;\n this.renderOnClick = true;\n this.units = '%';\n this.unitsFontSize = '10';\n this.unitsFontWeight = 'normal';\n this.unitsColor = '#444444';\n this.outerStrokeGradient = false;\n this.outerStrokeWidth = 8;\n this.outerStrokeColor = '#78C000';\n this.outerStrokeGradientStopColor = 'transparent';\n this.outerStrokeLinecap = 'round';\n this.innerStrokeColor = '#C7E596';\n this.innerStrokeWidth = 4;\n this.titleFormat = undefined;\n this.title = 'auto';\n this.titleColor = '#444444';\n this.titleFontSize = '20';\n this.titleFontWeight = 'normal';\n this.subtitleFormat = undefined;\n this.subtitle = 'progress';\n this.subtitleColor = '#A9A9A9';\n this.subtitleFontSize = '10';\n this.subtitleFontWeight = 'normal';\n this.imageSrc = undefined;\n this.imageHeight = 0;\n this.imageWidth = 0;\n this.animation = true;\n this.animateTitle = true;\n this.animateSubtitle = false;\n this.animationDuration = 500;\n this.showTitle = true;\n this.showSubtitle = true;\n this.showUnits = true;\n this.showImage = false;\n this.showBackground = true;\n this.showInnerStroke = true;\n this.clockwise = true;\n this.responsive = false;\n this.startFromZero = true;\n this.showZeroOuterStroke = true;\n this.lazy = false;\n }\n}\nlet CircleProgressComponent = /*#__PURE__*/(() => {\n class CircleProgressComponent {\n constructor(defaultOptions, ngZone, elRef, injector) {\n this.ngZone = ngZone;\n this.elRef = elRef;\n this.onClick = new EventEmitter();\n // of component\n this.svgElement = null;\n // whether is in viewport\n this.isInViewport = false;\n // event for notifying viewport change caused by scrolling or resizing\n this.onViewportChanged = new EventEmitter();\n this._viewportChangedSubscriber = null;\n this.options = new CircleProgressOptions();\n this.defaultOptions = new CircleProgressOptions();\n this._lastPercent = 0;\n this._gradientUUID = null;\n this.render = () => {\n this.applyOptions();\n if (this.options.lazy) {\n // Draw svg if it doesn't exist\n this.svgElement === null && this.draw(this._lastPercent);\n // Draw it only when it's in the viewport\n if (this.isInViewport) {\n // Draw it at the latest position when I am in.\n if (this.options.animation && this.options.animationDuration > 0) {\n this.animate(this._lastPercent, this.options.percent);\n } else {\n this.draw(this.options.percent);\n }\n this._lastPercent = this.options.percent;\n }\n } else {\n if (this.options.animation && this.options.animationDuration > 0) {\n this.animate(this._lastPercent, this.options.percent);\n } else {\n this.draw(this.options.percent);\n }\n this._lastPercent = this.options.percent;\n }\n };\n this.polarToCartesian = (centerX, centerY, radius, angleInDegrees) => {\n let angleInRadius = angleInDegrees * Math.PI / 180;\n let x = centerX + Math.sin(angleInRadius) * radius;\n let y = centerY - Math.cos(angleInRadius) * radius;\n return {\n x: x,\n y: y\n };\n };\n this.draw = percent => {\n // make percent reasonable\n percent = percent === undefined ? this.options.percent : Math.abs(percent);\n // circle percent shouldn't be greater than 100%.\n let circlePercent = percent > 100 ? 100 : percent;\n // determine box size\n let boxSize = this.options.radius * 2 + this.options.outerStrokeWidth * 2;\n if (this.options.showBackground) {\n boxSize += this.options.backgroundStrokeWidth * 2 + this.max(0, this.options.backgroundPadding * 2);\n }\n // the centre of the circle\n let centre = {\n x: boxSize / 2,\n y: boxSize / 2\n };\n // the start point of the arc\n let startPoint = {\n x: centre.x,\n y: centre.y - this.options.radius\n };\n // get the end point of the arc\n let endPoint = this.polarToCartesian(centre.x, centre.y, this.options.radius, 360 * (this.options.clockwise ? circlePercent : 100 - circlePercent) / 100); // ####################\n // We'll get an end point with the same [x, y] as the start point when percent is 100%, so move x a little bit.\n if (circlePercent === 100) {\n endPoint.x = endPoint.x + (this.options.clockwise ? -0.01 : +0.01);\n }\n // largeArcFlag and sweepFlag\n let largeArcFlag, sweepFlag;\n if (circlePercent > 50) {\n [largeArcFlag, sweepFlag] = this.options.clockwise ? [1, 1] : [1, 0];\n } else {\n [largeArcFlag, sweepFlag] = this.options.clockwise ? [0, 1] : [0, 0];\n }\n // percent may not equal the actual percent\n let titlePercent = this.options.animateTitle ? percent : this.options.percent;\n let titleTextPercent = titlePercent > this.options.maxPercent ? `${this.options.maxPercent.toFixed(this.options.toFixed)}+` : titlePercent.toFixed(this.options.toFixed);\n let subtitlePercent = this.options.animateSubtitle ? percent : this.options.percent;\n // get title object\n let title = {\n x: centre.x,\n y: centre.y,\n textAnchor: 'middle',\n color: this.options.titleColor,\n fontSize: this.options.titleFontSize,\n fontWeight: this.options.titleFontWeight,\n texts: [],\n tspans: []\n };\n // from v0.9.9, both title and titleFormat(...) may be an array of string.\n if (this.options.titleFormat !== undefined && this.options.titleFormat.constructor.name === 'Function') {\n let formatted = this.options.titleFormat(titlePercent);\n if (formatted instanceof Array) {\n title.texts = [...formatted];\n } else {\n title.texts.push(formatted.toString());\n }\n } else {\n if (this.options.title === 'auto') {\n title.texts.push(titleTextPercent);\n } else {\n if (this.options.title instanceof Array) {\n title.texts = [...this.options.title];\n } else {\n title.texts.push(this.options.title.toString());\n }\n }\n }\n // get subtitle object\n let subtitle = {\n x: centre.x,\n y: centre.y,\n textAnchor: 'middle',\n color: this.options.subtitleColor,\n fontSize: this.options.subtitleFontSize,\n fontWeight: this.options.subtitleFontWeight,\n texts: [],\n tspans: []\n };\n // from v0.9.9, both subtitle and subtitleFormat(...) may be an array of string.\n if (this.options.subtitleFormat !== undefined && this.options.subtitleFormat.constructor.name === 'Function') {\n let formatted = this.options.subtitleFormat(subtitlePercent);\n if (formatted instanceof Array) {\n subtitle.texts = [...formatted];\n } else {\n subtitle.texts.push(formatted.toString());\n }\n } else {\n if (this.options.subtitle instanceof Array) {\n subtitle.texts = [...this.options.subtitle];\n } else {\n subtitle.texts.push(this.options.subtitle.toString());\n }\n }\n // get units object\n let units = {\n text: `${this.options.units}`,\n fontSize: this.options.unitsFontSize,\n fontWeight: this.options.unitsFontWeight,\n color: this.options.unitsColor\n };\n // get total count of text lines to be shown\n let rowCount = 0,\n rowNum = 1;\n this.options.showTitle && (rowCount += title.texts.length);\n this.options.showSubtitle && (rowCount += subtitle.texts.length);\n // calc dy for each tspan for title\n if (this.options.showTitle) {\n for (let span of title.texts) {\n title.tspans.push({\n span: span,\n dy: this.getRelativeY(rowNum, rowCount)\n });\n rowNum++;\n }\n }\n // calc dy for each tspan for subtitle\n if (this.options.showSubtitle) {\n for (let span of subtitle.texts) {\n subtitle.tspans.push({\n span: span,\n dy: this.getRelativeY(rowNum, rowCount)\n });\n rowNum++;\n }\n }\n // create ID for gradient element\n if (null === this._gradientUUID) {\n this._gradientUUID = this.uuid();\n }\n // Bring it all together\n this.svg = {\n viewBox: `0 0 ${boxSize} ${boxSize}`,\n // Set both width and height to '100%' if it's responsive\n width: this.options.responsive ? '100%' : boxSize,\n height: this.options.responsive ? '100%' : boxSize,\n backgroundCircle: {\n cx: centre.x,\n cy: centre.y,\n r: this.options.radius + this.options.outerStrokeWidth / 2 + this.options.backgroundPadding,\n fill: this.options.backgroundColor,\n fillOpacity: this.options.backgroundOpacity,\n stroke: this.options.backgroundStroke,\n strokeWidth: this.options.backgroundStrokeWidth\n },\n path: {\n // A rx ry x-axis-rotation large-arc-flag sweep-flag x y (https://developer.mozilla.org/en/docs/Web/SVG/Tutorial/Paths#Arcs)\n d: `M ${startPoint.x} ${startPoint.y}\n A ${this.options.radius} ${this.options.radius} 0 ${largeArcFlag} ${sweepFlag} ${endPoint.x} ${endPoint.y}`,\n stroke: this.options.outerStrokeColor,\n strokeWidth: this.options.outerStrokeWidth,\n strokeLinecap: this.options.outerStrokeLinecap,\n fill: 'none'\n },\n circle: {\n cx: centre.x,\n cy: centre.y,\n r: this.options.radius - this.options.space - this.options.outerStrokeWidth / 2 - this.options.innerStrokeWidth / 2,\n fill: 'none',\n stroke: this.options.innerStrokeColor,\n strokeWidth: this.options.innerStrokeWidth\n },\n title: title,\n units: units,\n subtitle: subtitle,\n image: {\n x: centre.x - this.options.imageWidth / 2,\n y: centre.y - this.options.imageHeight / 2,\n src: this.options.imageSrc,\n width: this.options.imageWidth,\n height: this.options.imageHeight\n },\n outerLinearGradient: {\n id: 'outer-linear-' + this._gradientUUID,\n colorStop1: this.options.outerStrokeColor,\n colorStop2: this.options.outerStrokeGradientStopColor === 'transparent' ? '#FFF' : this.options.outerStrokeGradientStopColor\n },\n radialGradient: {\n id: 'radial-' + this._gradientUUID,\n colorStop1: this.options.backgroundColor,\n colorStop2: this.options.backgroundGradientStopColor === 'transparent' ? '#FFF' : this.options.backgroundGradientStopColor\n }\n };\n };\n this.getAnimationParameters = (previousPercent, currentPercent) => {\n const MIN_INTERVAL = 10;\n let times, step, interval;\n let fromPercent = this.options.startFromZero ? 0 : previousPercent < 0 ? 0 : previousPercent;\n let toPercent = currentPercent < 0 ? 0 : this.min(currentPercent, this.options.maxPercent);\n let delta = Math.abs(Math.round(toPercent - fromPercent));\n if (delta >= 100) {\n // we will finish animation in 100 times\n times = 100;\n if (!this.options.animateTitle && !this.options.animateSubtitle) {\n step = 1;\n } else {\n // show title or subtitle animation even if the arc is full, we also need to finish it in 100 times.\n step = Math.round(delta / times);\n }\n } else {\n // we will finish in as many times as the number of percent.\n times = delta;\n step = 1;\n }\n // Get the interval of timer\n interval = Math.round(this.options.animationDuration / times);\n // Readjust all values if the interval of timer is extremely small.\n if (interval < MIN_INTERVAL) {\n interval = MIN_INTERVAL;\n times = this.options.animationDuration / interval;\n if (!this.options.animateTitle && !this.options.animateSubtitle && delta > 100) {\n step = Math.round(100 / times);\n } else {\n step = Math.round(delta / times);\n }\n }\n // step must be greater than 0.\n if (step < 1) {\n step = 1;\n }\n return {\n times: times,\n step: step,\n interval: interval\n };\n };\n this.animate = (previousPercent, currentPercent) => {\n if (this._timerSubscription && !this._timerSubscription.closed) {\n this._timerSubscription.unsubscribe();\n }\n let fromPercent = this.options.startFromZero ? 0 : previousPercent;\n let toPercent = currentPercent;\n let {\n step: step,\n interval: interval\n } = this.getAnimationParameters(fromPercent, toPercent);\n let count = fromPercent;\n if (fromPercent < toPercent) {\n this._timerSubscription = timer(0, interval).subscribe(() => {\n count += step;\n if (count <= toPercent) {\n if (!this.options.animateTitle && !this.options.animateSubtitle && count >= 100) {\n this.draw(toPercent);\n this._timerSubscription.unsubscribe();\n } else {\n this.draw(count);\n }\n } else {\n this.draw(toPercent);\n this._timerSubscription.unsubscribe();\n }\n });\n } else {\n this._timerSubscription = timer(0, interval).subscribe(() => {\n count -= step;\n if (count >= toPercent) {\n if (!this.options.animateTitle && !this.options.animateSubtitle && toPercent >= 100) {\n this.draw(toPercent);\n this._timerSubscription.unsubscribe();\n } else {\n this.draw(count);\n }\n } else {\n this.draw(toPercent);\n this._timerSubscription.unsubscribe();\n }\n });\n }\n };\n this.applyOptions = () => {\n // the options of may change already\n for (let name of Object.keys(this.options)) {\n if (this.hasOwnProperty(name) && this[name] !== undefined) {\n this.options[name] = this[name];\n } else if (this.templateOptions && this.templateOptions[name] !== undefined) {\n this.options[name] = this.templateOptions[name];\n }\n }\n // make sure key options valid\n this.options.radius = Math.abs(+this.options.radius);\n this.options.space = +this.options.space;\n this.options.percent = +this.options.percent > 0 ? +this.options.percent : 0;\n this.options.maxPercent = Math.abs(+this.options.maxPercent);\n this.options.animationDuration = Math.abs(this.options.animationDuration);\n this.options.outerStrokeWidth = Math.abs(+this.options.outerStrokeWidth);\n this.options.innerStrokeWidth = Math.abs(+this.options.innerStrokeWidth);\n this.options.backgroundPadding = +this.options.backgroundPadding;\n };\n this.getRelativeY = (rowNum, rowCount) => {\n // why '-0.18em'? It's a magic number when property 'alignment-baseline' equals 'baseline'. :)\n let initialOffset = -0.18,\n offset = 1;\n return (initialOffset + offset * (rowNum - rowCount / 2)).toFixed(2) + 'em';\n };\n this.min = (a, b) => {\n return a < b ? a : b;\n };\n this.max = (a, b) => {\n return a > b ? a : b;\n };\n this.uuid = () => {\n // https://www.w3resource.com/javascript-exercises/javascript-math-exercise-23.php\n var dt = new Date().getTime();\n var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (dt + Math.random() * 16) % 16 | 0;\n dt = Math.floor(dt / 16);\n return (c == 'x' ? r : r & 0x3 | 0x8).toString(16);\n });\n return uuid;\n };\n this.checkViewport = () => {\n this.findSvgElement();\n let previousValue = this.isInViewport;\n this.isInViewport = this.isElementInViewport(this.svgElement);\n if (previousValue !== this.isInViewport && this.onViewportChanged.observers.length > 0) {\n this.ngZone.run(() => {\n this.onViewportChanged.emit({\n oldValue: previousValue,\n newValue: this.isInViewport\n });\n });\n }\n };\n this.onScroll = event => {\n this.checkViewport();\n };\n this.loadEventsForLazyMode = () => {\n if (this.options.lazy) {\n this.ngZone.runOutsideAngular(() => {\n this.document.addEventListener('scroll', this.onScroll, true);\n this.window.addEventListener('resize', this.onScroll, true);\n });\n if (this._viewportChangedSubscriber === null) {\n this._viewportChangedSubscriber = this.onViewportChanged.subscribe(({\n oldValue,\n newValue\n }) => {\n newValue ? this.render() : null;\n });\n }\n // svgElement must be created in DOM before being checked.\n // Is there a better way to check the existence of svgElemnt?\n let _timer = timer(0, 50).subscribe(() => {\n this.svgElement === null ? this.checkViewport() : _timer.unsubscribe();\n });\n }\n };\n this.unloadEventsForLazyMode = () => {\n // Remove event listeners\n this.document.removeEventListener('scroll', this.onScroll, true);\n this.window.removeEventListener('resize', this.onScroll, true);\n // Unsubscribe onViewportChanged\n if (this._viewportChangedSubscriber !== null) {\n this._viewportChangedSubscriber.unsubscribe();\n this._viewportChangedSubscriber = null;\n }\n };\n this.document = injector.get(DOCUMENT);\n this.window = this.document.defaultView;\n Object.assign(this.options, defaultOptions);\n Object.assign(this.defaultOptions, defaultOptions);\n }\n emitClickEvent(event) {\n if (this.options.renderOnClick) {\n this.animate(0, this.options.percent);\n }\n if (this.onClick.observers.length > 0) {\n this.onClick.emit(event);\n }\n }\n isDrawing() {\n return this._timerSubscription && !this._timerSubscription.closed;\n }\n findSvgElement() {\n if (this.svgElement === null) {\n let tags = this.elRef.nativeElement.getElementsByTagName('svg');\n if (tags.length > 0) {\n this.svgElement = tags[0];\n }\n }\n }\n isElementInViewport(el) {\n // Return false if el has not been created in page.\n if (el === null || el === undefined) return false;\n // Check if the element is out of view due to a container scrolling\n let rect = el.getBoundingClientRect(),\n parent = el.parentNode,\n parentRect;\n do {\n parentRect = parent.getBoundingClientRect();\n if (rect.top >= parentRect.bottom) return false;\n if (rect.bottom <= parentRect.top) return false;\n if (rect.left >= parentRect.right) return false;\n if (rect.right <= parentRect.left) return false;\n parent = parent.parentNode;\n } while (parent != this.document.body);\n // Check its within the document viewport\n if (rect.top >= (this.window.innerHeight || this.document.documentElement.clientHeight)) return false;\n if (rect.bottom <= 0) return false;\n if (rect.left >= (this.window.innerWidth || this.document.documentElement.clientWidth)) return false;\n if (rect.right <= 0) return false;\n return true;\n }\n ngOnInit() {\n this.loadEventsForLazyMode();\n }\n ngOnDestroy() {\n this.unloadEventsForLazyMode();\n }\n ngOnChanges(changes) {\n this.render();\n if ('lazy' in changes) {\n changes.lazy.currentValue ? this.loadEventsForLazyMode() : this.unloadEventsForLazyMode();\n }\n }\n }\n CircleProgressComponent.ɵfac = function CircleProgressComponent_Factory(t) {\n return new (t || CircleProgressComponent)(i0.ɵɵdirectiveInject(CircleProgressOptions), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Injector));\n };\n CircleProgressComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CircleProgressComponent,\n selectors: [[\"circle-progress\"]],\n inputs: {\n name: \"name\",\n class: \"class\",\n backgroundGradient: \"backgroundGradient\",\n backgroundColor: \"backgroundColor\",\n backgroundGradientStopColor: \"backgroundGradientStopColor\",\n backgroundOpacity: \"backgroundOpacity\",\n backgroundStroke: \"backgroundStroke\",\n backgroundStrokeWidth: \"backgroundStrokeWidth\",\n backgroundPadding: \"backgroundPadding\",\n radius: \"radius\",\n space: \"space\",\n percent: \"percent\",\n toFixed: \"toFixed\",\n maxPercent: \"maxPercent\",\n renderOnClick: \"renderOnClick\",\n units: \"units\",\n unitsFontSize: \"unitsFontSize\",\n unitsFontWeight: \"unitsFontWeight\",\n unitsColor: \"unitsColor\",\n outerStrokeGradient: \"outerStrokeGradient\",\n outerStrokeWidth: \"outerStrokeWidth\",\n outerStrokeColor: \"outerStrokeColor\",\n outerStrokeGradientStopColor: \"outerStrokeGradientStopColor\",\n outerStrokeLinecap: \"outerStrokeLinecap\",\n innerStrokeColor: \"innerStrokeColor\",\n innerStrokeWidth: \"innerStrokeWidth\",\n titleFormat: \"titleFormat\",\n title: \"title\",\n titleColor: \"titleColor\",\n titleFontSize: \"titleFontSize\",\n titleFontWeight: \"titleFontWeight\",\n subtitleFormat: \"subtitleFormat\",\n subtitle: \"subtitle\",\n subtitleColor: \"subtitleColor\",\n subtitleFontSize: \"subtitleFontSize\",\n subtitleFontWeight: \"subtitleFontWeight\",\n imageSrc: \"imageSrc\",\n imageHeight: \"imageHeight\",\n imageWidth: \"imageWidth\",\n animation: \"animation\",\n animateTitle: \"animateTitle\",\n animateSubtitle: \"animateSubtitle\",\n animationDuration: \"animationDuration\",\n showTitle: \"showTitle\",\n showSubtitle: \"showSubtitle\",\n showUnits: \"showUnits\",\n showImage: \"showImage\",\n showBackground: \"showBackground\",\n showInnerStroke: \"showInnerStroke\",\n clockwise: \"clockwise\",\n responsive: \"responsive\",\n startFromZero: \"startFromZero\",\n showZeroOuterStroke: \"showZeroOuterStroke\",\n lazy: \"lazy\",\n templateOptions: [i0.ɵɵInputFlags.None, \"options\", \"templateOptions\"]\n },\n outputs: {\n onClick: \"onClick\"\n },\n features: [i0.ɵɵNgOnChangesFeature],\n decls: 1,\n vars: 1,\n consts: [[\"xmlns\", \"http://www.w3.org/2000/svg\", \"preserveAspectRatio\", \"xMidYMid meet\", 3, \"click\", 4, \"ngIf\"], [\"xmlns\", \"http://www.w3.org/2000/svg\", \"preserveAspectRatio\", \"xMidYMid meet\", 3, \"click\"], [4, \"ngIf\"], [\"alignment-baseline\", \"baseline\", 4, \"ngIf\"], [\"preserveAspectRatio\", \"none\", 4, \"ngIf\"], [\"offset\", \"5%\"], [\"offset\", \"95%\"], [\"alignment-baseline\", \"baseline\"], [4, \"ngFor\", \"ngForOf\"], [\"preserveAspectRatio\", \"none\"]],\n template: function CircleProgressComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, CircleProgressComponent__svg_svg_0_Template, 9, 11, \"svg\", 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.svg);\n }\n },\n dependencies: [i1.NgForOf, i1.NgIf],\n encapsulation: 2\n });\n return CircleProgressComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgCircleProgressModule = /*#__PURE__*/(() => {\n class NgCircleProgressModule {\n static forRoot(options = {}) {\n return {\n ngModule: NgCircleProgressModule,\n providers: [{\n provide: CircleProgressOptions,\n useValue: options\n }]\n };\n }\n }\n NgCircleProgressModule.ɵfac = function NgCircleProgressModule_Factory(t) {\n return new (t || NgCircleProgressModule)();\n };\n NgCircleProgressModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgCircleProgressModule\n });\n NgCircleProgressModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [CommonModule]\n });\n return NgCircleProgressModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/*\n * Public API Surface of ng-circle-progress\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CircleProgressComponent, CircleProgressOptions, NgCircleProgressModule };\n","import {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {CommonModule} from \"@angular/common\";\nimport {NgCircleProgressModule } from \"ng-circle-progress\";\n\n@Component({\n selector: 'app-circular-loader',\n standalone: true,\n imports: [CommonModule, NgCircleProgressModule],\n // providers: [\n // importProvidersFrom(NgCircleProgressModule),\n // ],\n templateUrl: './circular-loader.component.html',\n styleUrls: ['./circular-loader.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CircularLoaderComponent {\n\n @Input() currentValue: number = 0;\n /**\n * If an animation should be used\n */\n @Input() animation: boolean = true;\n /**\n * Color of an inner bar\n */\n @Input() innerStrokeColor: string = 'transparent';\n /**\n * Color of the Downloader bar\n */\n @Input() outerStrokeColor: string = '#4ac694';\n @Input() backgroundColor: string = '#000';\n @Input() fontSize: string = '36px';\n /**\n * Show the icon inside the downloader\n */\n @Input() showIcon: boolean = true;\n /**\n * The width in pixels of the loader\n */\n @Input() width: string = '100px';\n /**\n * The height in pixels of the loader\n */\n @Input() height: string = '100px';\n /**\n * Centers the icon in the middle of the loader. Best for card use.\n */\n @Input() center: boolean = true;\n}\n"," 0\">\n
\n \n
\n
\n \n
\n\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Download } from 'src/app/shared/_models/download';\nimport { DownloadEvent } from 'src/app/shared/_services/download.service';\nimport {CommonModule} from \"@angular/common\";\nimport {CircularLoaderComponent} from \"../../shared/circular-loader/circular-loader.component\";\nimport {TranslocoDirective} from \"@ngneat/transloco\";\n\n@Component({\n selector: 'app-download-indicator',\n standalone: true,\n imports: [CommonModule, CircularLoaderComponent, TranslocoDirective],\n templateUrl: './download-indicator.component.html',\n styleUrls: ['./download-indicator.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DownloadIndicatorComponent {\n\n /**\n * Observable that represents when the download completes\n */\n @Input({required: true}) download$!: Observable | null;\n}\n","\n \n \n \n {{t('progress',{percentage: download.progress})}}\n \n \n\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { MangaFormat } from '../_models/manga-format';\n\n/**\n * Returns the icon class representing the format\n */\n@Pipe({\n name: 'mangaFormatIcon',\n standalone: true\n})\nexport class MangaFormatIconPipe implements PipeTransform {\n\n transform(format: MangaFormat): string {\n switch (format) {\n case MangaFormat.EPUB:\n return 'fa fa-book';\n case MangaFormat.ARCHIVE:\n return 'fa-solid fa-file-zipper';\n case MangaFormat.IMAGE:\n return 'fa-solid fa-file-image';\n case MangaFormat.PDF:\n return 'fa-solid fa-file-pdf';\n case MangaFormat.UNKNOWN:\n return 'fa-solid fa-file-circle-question';\n }\n }\n\n}\n","import {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {TranslocoDirective} from \"@ngneat/transloco\";\n\n@Component({\n selector: 'app-promoted-icon',\n standalone: true,\n imports: [\n TranslocoDirective\n ],\n templateUrl: './promoted-icon.component.html',\n styleUrl: './promoted-icon.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PromotedIconComponent {\n @Input({required: true}) promoted: boolean = false;\n}\n","\n @if(promoted) {\n \n \n {{t('promoted')}}\n \n }\n\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { MangaFormat } from 'src/app/_models/manga-format';\nimport {MangaFormatIconPipe} from \"../../_pipes/manga-format-icon.pipe\";\nimport {MangaFormatPipe} from \"../../_pipes/manga-format.pipe\";\nimport {CommonModule} from \"@angular/common\";\n\n@Component({\n selector: 'app-series-format',\n standalone: true,\n imports: [\n CommonModule,\n MangaFormatIconPipe,\n MangaFormatPipe\n ],\n templateUrl: './series-format.component.html',\n styleUrls: ['./series-format.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SeriesFormatComponent {\n\n protected readonly MangaFormat = MangaFormat;\n\n @Input() format: MangaFormat = MangaFormat.UNKNOWN;\n}\n","\n \n \n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component, ContentChild, DestroyRef,\n EventEmitter,\n HostListener,\n inject,\n Input,\n OnInit,\n Output, TemplateRef\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { DownloadEvent, DownloadService } from 'src/app/shared/_services/download.service';\nimport { UtilityService } from 'src/app/shared/_services/utility.service';\nimport { Chapter } from 'src/app/_models/chapter';\nimport { UserCollection } from 'src/app/_models/collection-tag';\nimport { UserProgressUpdateEvent } from 'src/app/_models/events/user-progress-update-event';\nimport { MangaFormat } from 'src/app/_models/manga-format';\nimport { PageBookmark } from 'src/app/_models/readers/page-bookmark';\nimport { RecentlyAddedItem } from 'src/app/_models/recently-added-item';\nimport { Series } from 'src/app/_models/series';\nimport { User } from 'src/app/_models/user';\nimport { Volume } from 'src/app/_models/volume';\nimport { AccountService } from 'src/app/_services/account.service';\nimport { Action, ActionFactoryService, ActionItem } from 'src/app/_services/action-factory.service';\nimport { ImageService } from 'src/app/_services/image.service';\nimport { LibraryService } from 'src/app/_services/library.service';\nimport { EVENTS, MessageHubService } from 'src/app/_services/message-hub.service';\nimport { ScrollService } from 'src/app/_services/scroll.service';\nimport { BulkSelectionService } from '../bulk-selection.service';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport {ImageComponent} from \"../../shared/image/image.component\";\nimport {NgbProgressbar, NgbTooltip} from \"@ng-bootstrap/ng-bootstrap\";\nimport {DownloadIndicatorComponent} from \"../download-indicator/download-indicator.component\";\nimport {FormsModule} from \"@angular/forms\";\nimport {MangaFormatPipe} from \"../../_pipes/manga-format.pipe\";\nimport {MangaFormatIconPipe} from \"../../_pipes/manga-format-icon.pipe\";\nimport {SentenceCasePipe} from \"../../_pipes/sentence-case.pipe\";\nimport {CommonModule} from \"@angular/common\";\nimport {RouterLink, RouterLinkActive} from \"@angular/router\";\nimport {TranslocoModule} from \"@ngneat/transloco\";\nimport {CardActionablesComponent} from \"../../_single-module/card-actionables/card-actionables.component\";\nimport {NextExpectedChapter} from \"../../_models/series-detail/next-expected-chapter\";\nimport {UtcToLocalTimePipe} from \"../../_pipes/utc-to-local-time.pipe\";\nimport {SafeHtmlPipe} from \"../../_pipes/safe-html.pipe\";\nimport {PromotedIconComponent} from \"../../shared/_components/promoted-icon/promoted-icon.component\";\nimport {SeriesFormatComponent} from \"../../shared/series-format/series-format.component\";\n\n@Component({\n selector: 'app-card-item',\n standalone: true,\n imports: [\n CommonModule,\n ImageComponent,\n NgbProgressbar,\n DownloadIndicatorComponent,\n FormsModule,\n NgbTooltip,\n MangaFormatPipe,\n MangaFormatIconPipe,\n CardActionablesComponent,\n SentenceCasePipe,\n RouterLink,\n TranslocoModule,\n SafeHtmlPipe,\n RouterLinkActive,\n PromotedIconComponent,\n SeriesFormatComponent\n ],\n templateUrl: './card-item.component.html',\n styleUrls: ['./card-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CardItemComponent implements OnInit {\n\n private readonly destroyRef = inject(DestroyRef);\n public readonly imageService = inject(ImageService);\n public readonly bulkSelectionService = inject(BulkSelectionService);\n private readonly libraryService = inject(LibraryService);\n private readonly downloadService = inject(DownloadService);\n private readonly utilityService = inject(UtilityService);\n private readonly messageHub = inject(MessageHubService);\n private readonly accountService = inject(AccountService);\n private readonly scrollService = inject(ScrollService);\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly actionFactoryService = inject(ActionFactoryService);\n\n protected readonly MangaFormat = MangaFormat;\n\n /**\n * Card item url. Will internally handle error and missing covers\n */\n @Input() imageUrl = '';\n /**\n * Name of the card\n */\n @Input() title = '';\n /**\n * Any actions to perform on the card\n */\n @Input() actions: ActionItem[] = [];\n /**\n * Pages Read\n */\n @Input() read = 0;\n /**\n * Total Pages\n */\n @Input() total = 0;\n /**\n * Suppress library link\n */\n @Input() suppressLibraryLink = false;\n /**\n * This is the entity we are representing. It will be returned if an action is executed.\n */\n @Input({required: true}) entity!: Series | Volume | Chapter | UserCollection | PageBookmark | RecentlyAddedItem | NextExpectedChapter;\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 * This will suppress the \"cannot read archive warning\" when total pages is 0\n */\n @Input() suppressArchiveWarning: boolean = false;\n /**\n * The number of updates/items within the card. If less than 2, will not be shown.\n */\n @Input() count: number = 0;\n /**\n * Additional information to show on the overlay area. Will always render.\n */\n @Input() overlayInformation: string = '';\n /**\n * If overlay is enabled, should the text be centered or not\n */\n @Input() centerOverlay = false;\n /**\n * Event emitted when item is clicked\n */\n @Output() clicked = new EventEmitter();\n /**\n * When the card is selected.\n */\n @Output() selection = new EventEmitter();\n @ContentChild('subtitle') subtitleTemplate!: TemplateRef;\n /**\n * Library name item belongs to\n */\n libraryName: string | undefined = undefined;\n libraryId: number | undefined = undefined;\n /**\n * Format of the entity (only applies to Series)\n */\n format: MangaFormat = MangaFormat.UNKNOWN;\n tooltipTitle: string = this.title;\n\n /**\n * This is the download we get from download service.\n */\n download$: Observable | null = null;\n\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\n private user: User | undefined;\n\n ngOnInit(): void {\n\n if (this.entity.hasOwnProperty('promoted') && this.entity.hasOwnProperty('title')) {\n this.suppressArchiveWarning = true;\n this.cdRef.markForCheck();\n }\n\n if (!this.suppressLibraryLink) {\n if (this.entity !== undefined && this.entity.hasOwnProperty('libraryId')) {\n this.libraryId = (this.entity as Series).libraryId;\n this.cdRef.markForCheck();\n }\n\n if (this.libraryId !== undefined && this.libraryId > 0) {\n this.libraryService.getLibraryName(this.libraryId).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(name => {\n this.libraryName = name;\n this.cdRef.markForCheck();\n });\n }\n }\n this.format = (this.entity as Series).format;\n\n if (this.utilityService.isChapter(this.entity)) {\n const chapter = this.utilityService.asChapter(this.entity);\n const chapterTitle = chapter.titleName;\n if (chapterTitle === '' || chapterTitle === null || chapterTitle === undefined) {\n const volumeTitle = chapter.volumeTitle\n if (volumeTitle === '' || volumeTitle === null || volumeTitle === undefined) {\n this.tooltipTitle = (this.title).trim();\n } else {\n this.tooltipTitle = (volumeTitle + ' ' + this.title).trim();\n }\n } else {\n this.tooltipTitle = chapterTitle;\n }\n } else if (this.utilityService.isVolume(this.entity)) {\n const vol = this.utilityService.asVolume(this.entity);\n if (vol.chapters !== undefined && vol.chapters.length > 0) {\n this.tooltipTitle = vol.chapters[0].titleName;\n }\n if (this.tooltipTitle === '') {\n this.tooltipTitle = vol.name;\n }\n } else if (this.utilityService.isSeries(this.entity)) {\n this.tooltipTitle = this.title || (this.utilityService.asSeries(this.entity).name);\n } else if (this.entity.hasOwnProperty('expectedDate')) {\n this.suppressArchiveWarning = true;\n this.imageUrl = '';\n const nextDate = (this.entity as NextExpectedChapter);\n\n const tokens = nextDate.title.split(':');\n this.overlayInformation = `\n \n
${tokens[0]}
${tokens[1]}
`;\n this.centerOverlay = true;\n\n if (nextDate.expectedDate) {\n const utcPipe = new UtcToLocalTimePipe();\n this.title = '~ ' + utcPipe.transform(nextDate.expectedDate, 'shortDate');\n }\n\n this.cdRef.markForCheck();\n }\n\n\n this.filterSendTo();\n this.accountService.currentUser$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(user => {\n this.user = user;\n });\n\n this.messageHub.messages$.pipe(filter(event => event.event === EVENTS.UserProgressUpdate),\n map(evt => evt.payload as UserProgressUpdateEvent), takeUntilDestroyed(this.destroyRef)).subscribe(updateEvent => {\n if (this.user === undefined || this.user.username !== updateEvent.username) return;\n if (this.utilityService.isChapter(this.entity) && updateEvent.chapterId !== this.entity.id) return;\n if (this.utilityService.isVolume(this.entity) && updateEvent.volumeId !== this.entity.id) return;\n if (this.utilityService.isSeries(this.entity) && updateEvent.seriesId !== this.entity.id) return;\n\n // For volume or Series, we can't just take the event\n if (this.utilityService.isChapter(this.entity)) {\n const c = this.utilityService.asChapter(this.entity);\n c.pagesRead = updateEvent.pagesRead;\n this.read = updateEvent.pagesRead;\n }\n if (this.utilityService.isVolume(this.entity) || this.utilityService.isSeries(this.entity)) {\n if (this.utilityService.isVolume(this.entity)) {\n const v = this.utilityService.asVolume(this.entity);\n let sum = 0;\n const chapters = v.chapters.filter(c => c.volumeId === updateEvent.volumeId);\n chapters.forEach(chapter => {\n chapter.pagesRead = updateEvent.pagesRead;\n sum += chapter.pagesRead;\n });\n v.pagesRead = sum;\n this.read = sum;\n } else {\n return;\n }\n }\n\n this.cdRef.detectChanges();\n });\n\n this.download$ = this.downloadService.activeDownloads$.pipe(takeUntilDestroyed(this.destroyRef), map((events) => {\n return this.downloadService.mapToEntityType(events, this.entity);\n }));\n }\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 handleClick(event?: any) {\n if (this.bulkSelectionService.hasSelections()) {\n this.handleSelection();\n return;\n }\n this.clicked.emit(this.title);\n }\n\n preventClick(event: any) {\n event.stopPropagation();\n event.preventDefault();\n }\n\n performAction(action: ActionItem) {\n if (action.action == Action.Download) {\n if (this.utilityService.isVolume(this.entity)) {\n const volume = this.utilityService.asVolume(this.entity);\n this.downloadService.download('volume', volume);\n } else if (this.utilityService.isChapter(this.entity)) {\n const chapter = this.utilityService.asChapter(this.entity);\n this.downloadService.download('chapter', chapter);\n } else if (this.utilityService.isSeries(this.entity)) {\n const series = this.utilityService.asSeries(this.entity);\n this.downloadService.download('series', series);\n }\n return; // Don't propagate the download from a card\n }\n\n if (typeof action.callback === 'function') {\n action.callback(action, this.entity);\n }\n }\n\n\n isPromoted() {\n const tag = this.entity as UserCollection;\n return tag.hasOwnProperty('promoted') && tag.promoted;\n }\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 filterSendTo() {\n if (!this.actions || this.actions.length === 0) return;\n\n if (this.utilityService.isChapter(this.entity)) {\n this.actions = this.actionFactoryService.filterSendToAction(this.actions, this.entity as Chapter);\n } else if (this.utilityService.isVolume(this.entity)) {\n const vol = this.utilityService.asVolume(this.entity);\n this.actions = this.actionFactoryService.filterSendToAction(this.actions, vol.chapters[0]);\n } else if (this.utilityService.isSeries(this.entity)) {\n const series = (this.entity as Series);\n // if (series.format === MangaFormat.EPUB || series.format === MangaFormat.PDF) {\n // this.actions = this.actions.filter(a => a.title !== 'Send To');\n // }\n }\n\n // this.actions = this.actions.filter(a => {\n // if (!a.isAllowed) return true;\n // return a.isAllowed(a, this.entity);\n // });\n }\n}\n","\n
\n
\n @if (total > 0 || suppressArchiveWarning) {\n \n } @else if (total === 0 && !suppressArchiveWarning) {\n \n }\n\n
\n @if (read > 0 && read < total && total > 0 && read !== total) {\n

\n \n

\n }\n\n \n \n \n
\n\n @if(total === 0 && !suppressArchiveWarning) {\n
\n {{t('cannot-read')}}\n
\n }\n\n @if (read === 0 && total > 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 @if (overlayInformation | safeHtml; as info) {\n @if (info !== '' || info !== null) {\n
\n
\n \n
\n
\n }\n }\n
\n @if (title.length > 0 || actions.length > 0) {\n
\n
\n \n \n \n {{title}}\n \n 0\">\n \n \n
\n @if (subtitleTemplate) {\n
\n \n
\n }\n @if (!suppressLibraryLink && libraryName) {\n \n {{libraryName | sentenceCase}}\n \n }\n
\n }\n
\n\n
\n"],"mappings":"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","names":["DynamicListPipe","transform","value","pure","standalone","_DynamicListPipe","ɵɵelementContainer","ɵɵelementContainerStart","ɵɵelementStart","ɵɵlistener","$event","dynamicItem_r4","ɵɵrestoreView","_r3","$implicit","action_r5","ɵɵnextContext","ctx_r1","ɵɵresetView","performDynamicClick","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","title","ɵɵtemplate","CardActionablesComponent_ng_container_0_ng_container_1_ng_template_6_ng_container_0_ng_container_1_ng_container_1_ng_container_1_Template","ɵɵproperty","dList_r6","_r7","performAction","closeAllSubmenus","t_r8","CardActionablesComponent_ng_container_0_ng_container_1_ng_template_6_ng_container_0_ng_container_1_ng_template_4_button_0_Template","willRenderAction","CardActionablesComponent_ng_container_0_ng_container_1_ng_template_6_ng_container_0_ng_container_1_ng_container_1_Template","CardActionablesComponent_ng_container_0_ng_container_1_ng_template_6_ng_container_0_ng_container_1_ng_template_4_Template","ɵɵtemplateRefExtractor","dynamicList","undefined","ɵɵpipeBind1","justItem_r9","ɵɵelement","ɵɵpropertyInterpolate1","ɵɵtextInterpolate1","_r10","subMenuHover_r11","ɵɵreference","preventEvent","openSubmenu","CardActionablesComponent_ng_container_0_ng_container_1_ng_template_6_ng_container_0_ng_template_2_ng_container_0_button_3_Template","CardActionablesComponent_ng_container_0_ng_container_1_ng_template_6_ng_container_0_ng_template_2_ng_container_0_ng_container_5_Template","ɵɵattributeInterpolate1","submenu_r12","ɵɵpureFunction1","_c0","children","CardActionablesComponent_ng_container_0_ng_container_1_ng_template_6_ng_container_0_ng_template_2_ng_container_0_Template","shouldRenderSubMenu","CardActionablesComponent_ng_container_0_ng_container_1_ng_template_6_ng_container_0_ng_container_1_Template","CardActionablesComponent_ng_container_0_ng_container_1_ng_template_6_ng_container_0_ng_template_2_Template","length","submenuDropdown_r13","CardActionablesComponent_ng_container_0_ng_container_1_ng_template_6_ng_container_0_Template","list_r14","_r1","CardActionablesComponent_ng_container_0_ng_container_1_ng_container_5_Template","CardActionablesComponent_ng_container_0_ng_container_1_ng_template_6_Template","ɵɵclassMapInterpolate1","btnClass","labelBy","disabled","iconClass","actions","CardActionablesComponent_ng_container_0_ng_container_1_Template","CardActionablesComponent","constructor","cdRef","inject","ChangeDetectorRef","accountService","AccountService","destroyRef","DestroyRef","actionHandler","EventEmitter","isAdmin","canDownload","canPromote","submenu","ngOnInit","currentUser$","pipe","takeUntilDestroyed","subscribe","user","hasAdminRole","hasDownloadRole","hasPromoteRole","filter","a","requiresAdmin","markForCheck","event","stopPropagation","preventDefault","action","callback","emit","Action","Download","Promote","UnPromote","actionTitle","subMenu","Object","keys","k","forEach","key","close","open","dynamicItem","_extra","selectors","inputs","outputs","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","rf","ctx","CardActionablesComponent_ng_container_0_Template","CommonModule","NgForOf","NgIf","NgTemplateOutlet","AsyncPipe","NgbDropdown","NgbDropdownToggle","NgbDropdownMenu","NgbDropdownItem","DynamicListPipe","TranslocoDirective","styles","changeDetection","_CardActionablesComponent","BulkSelectionService","constructor","router","actionFactory","debug","prevIndex","selectedCards","dataSourceMax","isShiftDown","actionsSource","ReplaySubject","actions$","asObservable","selectionsSource","selections$","events","pipe","filter","event","NavigationStart","subscribe","deselectAll","handleCardSelection","dataSource","index","maxIndex","wasSelected","prevDataSource","debugLog","selectCards","next","getActions","isCardSelected","hasOwnProperty","from","to","value","totalSelections","i","hasSelections","Object","keys","key","values","item","length","sum","forEach","getSelectedCardsForSource","ret","k","push","callback","allowedActions","Action","AddToReadingList","MarkAsRead","MarkAsUnread","AddToCollection","Delete","AddToWantToReadList","RemoveFromWantToReadList","applyFilterToList","getSeriesActions","getBookmarkActions","getSideNavStreamActions","MarkAsInvisible","MarkAsVisible","getCollectionTagActions","Promote","UnPromote","getVolumeActions","message","extraData","undefined","console","log","applyFilter","action","Submenu","includes","children","childAction","list","map","a","__spreadValues","ɵɵinject","Router","ActionFactoryService","factory","ɵfac","providedIn","_BulkSelectionService","CircleProgressComponent__svg_svg_0__svg_linearGradient_2_Template","rf","ctx","ɵɵnamespaceSVG","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ctx_r1","ɵɵnextContext","ɵɵattribute","ɵɵadvance","CircleProgressComponent__svg_svg_0__svg_radialGradient_3_Template","CircleProgressComponent__svg_svg_0__svg_ng_container_4__svg_circle_1_Template","CircleProgressComponent__svg_svg_0__svg_ng_container_4__svg_circle_2_Template","ɵɵattributeInterpolate2","CircleProgressComponent__svg_svg_0__svg_ng_container_4_Template","ɵɵelementContainerStart","ɵɵtemplate","ɵɵelementContainerEnd","ɵɵproperty","CircleProgressComponent__svg_svg_0__svg_circle_5_Template","CircleProgressComponent__svg_svg_0__svg_ng_container_6__svg_path_1_Template","CircleProgressComponent__svg_svg_0__svg_ng_container_6__svg_path_2_Template","CircleProgressComponent__svg_svg_0__svg_ng_container_6_Template","CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_1__svg_tspan_1_Template","ɵɵtext","tspan_r3","ɵɵtextInterpolate","CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_1_Template","CircleProgressComponent__svg_svg_0__svg_text_7__svg_tspan_2_Template","CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_3__svg_tspan_1_Template","tspan_r4","CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_3_Template","CircleProgressComponent__svg_svg_0__svg_text_7_Template","CircleProgressComponent__svg_svg_0__svg_image_8_Template","CircleProgressComponent__svg_svg_0_Template","_r1","ɵɵgetCurrentView","ɵɵlistener","$event","ɵɵrestoreView","ɵɵresetView","CircleProgressOptions","CircleProgressComponent","defaultOptions","ngZone","elRef","injector","EventEmitter","centerX","centerY","radius","angleInDegrees","angleInRadius","x","y","percent","circlePercent","boxSize","centre","startPoint","endPoint","largeArcFlag","sweepFlag","titlePercent","titleTextPercent","subtitlePercent","title","formatted","subtitle","units","rowCount","rowNum","span","previousPercent","currentPercent","times","step","interval","fromPercent","toPercent","delta","count","timer","name","a","b","dt","uuid","c","r","previousValue","event","oldValue","newValue","_timer","DOCUMENT","tags","el","rect","parent","parentRect","changes","ɵɵdirectiveInject","NgZone","ElementRef","Injector","ɵɵdefineComponent","InputFlags","ɵɵNgOnChangesFeature","NgForOf","NgIf","NgCircleProgressModule","options","ɵɵdefineNgModule","ɵɵdefineInjector","CommonModule","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵproperty","ɵɵpureFunction1","_c1","ctx_r0","center","ɵɵadvance","_c2","fontSize","ɵɵelementContainerStart","ɵɵtemplate","CircularLoaderComponent_ng_container_0_div_1_Template","showIcon","ɵɵpureFunction2","_c0","width","height","currentValue","outerStrokeColor","innerStrokeColor","animation","backgroundColor","CircularLoaderComponent","constructor","selectors","inputs","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","rf","ctx","CircularLoaderComponent_ng_container_0_Template","CommonModule","NgClass","NgIf","NgStyle","NgCircleProgressModule","CircleProgressComponent","styles","changeDetection","_CircularLoaderComponent","ɵɵelementStart","ɵɵelement","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","download_r1","progress","ɵɵtextInterpolate1","t_r2","ɵɵpureFunction1","_c0","ɵɵelementContainerStart","ɵɵtemplate","DownloadIndicatorComponent_ng_container_0_span_1_Template","ɵɵpipeBind1","ctx_r2","download$","DownloadIndicatorComponent","selectors","inputs","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","rf","ctx","DownloadIndicatorComponent_ng_container_0_Template","CommonModule","NgIf","AsyncPipe","CircularLoaderComponent","TranslocoDirective","styles","changeDetection","_DownloadIndicatorComponent","MangaFormatIconPipe","transform","format","MangaFormat","EPUB","ARCHIVE","IMAGE","PDF","UNKNOWN","pure","standalone","_MangaFormatIconPipe","ɵɵelementStart","ɵɵelement","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","t_r1","ɵɵelementContainerStart","ɵɵtemplate","PromotedIconComponent_ng_container_0_Conditional_1_Template","ɵɵconditional","ctx_r1","promoted","PromotedIconComponent","constructor","selectors","inputs","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","rf","ctx","PromotedIconComponent_ng_container_0_Template","ɵɵproperty","TranslocoDirective","changeDetection","_PromotedIconComponent","ɵɵelementContainerStart","ɵɵelement","ɵɵprojection","ɵɵadvance","ɵɵclassMapInterpolate1","ɵɵpipeBind1","ctx_r0","format","ɵɵpropertyInterpolate","SeriesFormatComponent","constructor","MangaFormat","UNKNOWN","selectors","inputs","standalone","features","ɵɵStandaloneFeature","ngContentSelectors","_c0","decls","vars","consts","template","rf","ctx","ɵɵtemplate","SeriesFormatComponent_ng_container_0_Template","ɵɵproperty","CommonModule","NgIf","MangaFormatIconPipe","MangaFormatPipe","changeDetection","_SeriesFormatComponent","ɵɵelement","ɵɵproperty","ctx_r1","imageUrl","imageService","errorImage","ɵɵelementStart","ɵɵelementEnd","ɵɵpropertyInterpolate1","ɵɵpipeBind2","read","total","ɵɵadvance","ɵɵtext","ɵɵtextInterpolate1","t_r3","ɵɵlistener","$event","ɵɵrestoreView","_r4","ɵɵnextContext","ɵɵresetView","handleSelection","ɵɵclassMapInterpolate1","bulkSelectionService","hasSelections","ɵɵattributeInterpolate2","title","entity","id","selected","ɵɵpureFunction0","_c1","ɵɵtextInterpolate","count","centerOverlay","info_r5","ɵɵsanitizeHtml","ɵɵtemplate","CardItemComponent_ng_container_0_Conditional_14_Conditional_0_Template","ɵɵconditional","_r7","performAction","actions","ɵɵelementContainer","subtitleTemplate","ɵɵpureFunction1","_c2","_c3","libraryId","ɵɵpipeBind1","libraryName","_r6","handleClick","CardItemComponent_ng_container_0_Conditional_16_span_6_Template","CardItemComponent_ng_container_0_Conditional_16_Conditional_7_Template","CardItemComponent_ng_container_0_Conditional_16_Conditional_8_Template","ɵɵpropertyInterpolate2","tooltipTitle","isPromoted","format","length","suppressLibraryLink","ɵɵelementContainerStart","_r1","CardItemComponent_ng_container_0_Conditional_3_Template","CardItemComponent_ng_container_0_Conditional_4_Template","CardItemComponent_ng_container_0_Conditional_6_Template","CardItemComponent_ng_container_0_Conditional_9_Template","CardItemComponent_ng_container_0_Conditional_10_Template","CardItemComponent_ng_container_0_Conditional_11_Template","CardItemComponent_ng_container_0_Conditional_12_Template","CardItemComponent_ng_container_0_Conditional_14_Template","CardItemComponent_ng_container_0_Conditional_16_Template","suppressArchiveWarning","download$","allowSelection","tmp_10_0","overlayInformation","CardItemComponent","constructor","destroyRef","inject","DestroyRef","ImageService","BulkSelectionService","libraryService","LibraryService","downloadService","DownloadService","utilityService","UtilityService","messageHub","MessageHubService","accountService","AccountService","scrollService","ScrollService","cdRef","ChangeDetectorRef","actionFactoryService","ActionFactoryService","MangaFormat","clicked","EventEmitter","selection","undefined","UNKNOWN","prevTouchTime","prevOffset","selectionInProgress","ngOnInit","hasOwnProperty","markForCheck","getLibraryName","pipe","takeUntilDestroyed","subscribe","name","isChapter","chapter","asChapter","chapterTitle","titleName","volumeTitle","trim","isVolume","vol","asVolume","chapters","isSeries","asSeries","nextDate","tokens","split","expectedDate","utcPipe","UtcToLocalTimePipe","transform","filterSendTo","currentUser$","user","messages$","filter","event","EVENTS","UserProgressUpdate","map","evt","payload","updateEvent","username","chapterId","volumeId","seriesId","c","pagesRead","v","sum","forEach","detectChanges","activeDownloads$","events","mapToEntityType","onTouchMove","onTouchStart","timeStamp","scrollPosition","onTouchEnd","delta","verticalOffset","stopPropagation","preventDefault","emit","preventClick","action","Action","Download","volume","download","series","callback","tag","promoted","filterSendToAction","selectors","contentQueries","rf","ctx","dirIndex","CardItemComponent_ng_container_0_Template","CommonModule","NgIf","NgTemplateOutlet","DecimalPipe","ImageComponent","NgbProgressbar","DownloadIndicatorComponent","FormsModule","CheckboxControlValueAccessor","NgControlStatus","NgModel","NgbTooltip","CardActionablesComponent","SentenceCasePipe","RouterLink","TranslocoModule","TranslocoDirective","SafeHtmlPipe","RouterLinkActive","PromotedIconComponent","SeriesFormatComponent","styles","changeDetection","_CardItemComponent"],"x_google_ignoreList":[4]}