{"version":3,"file":"910.a39f50fae03883de.js","mappings":"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","names":["i0","t_r1","chapter_r8","_r10","$implicit","ctx_r9","loadChapterPage","page","part","title","TableOfContentsComponent_ng_container_0_div_3_li_2_Template","ctx_r3","chapters","children","chapter_r14","_r16","ctx_r15","ctx_r13","cleanIdSelector","currentPageAnchor","chapterGroup_r12","_r18","ctx_r17","TableOfContentsComponent_ng_container_0_ng_template_4_ul_0_ul_3_Template","ctx_r11","pageNum","TableOfContentsComponent_ng_container_0_ng_template_4_ul_0_Template","ctx_r5","TableOfContentsComponent_ng_container_0_div_2_Template","TableOfContentsComponent_ng_container_0_div_3_Template","TableOfContentsComponent_ng_container_0_ng_template_4_Template","ctx_r0","length","_r4","TableOfContentsComponent","constructor","this","loadChapter","EventEmitter","id","tokens","split","emit","t","core","Xpm","selectors","inputs","chapterId","outputs","standalone","features","decls","vars","consts","template","rf","ctx","TableOfContentsComponent_ng_container_0_Template","NgIf","NgFor","TranslocoDirective","styles","_r6","copy","ctx_r7","switchMode","BookLineOverlayMode","Bookmark","ctx_r8","reset","BookLineOverlayComponent_ng_container_0_div_1_ng_container_4_div_6_div_1_Template","tmp_0_0","ctx_r10","bookmarkForm","get","errors","required","_r14","createPTOC","BookLineOverlayComponent_ng_container_0_div_1_ng_container_4_div_6_Template","ctx_r4","tmp_1_0","invalid","touched","dirty","BookLineOverlayComponent_ng_container_0_div_1_ng_container_3_Template","BookLineOverlayComponent_ng_container_0_div_1_ng_container_4_Template","ctx_r2","mode","None","BookLineOverlayComponent_ng_container_0_div_1_Template","selectedText","BookLineOverlayComponent","elementRef","toastr","pageNumber","refreshToC","xPath","FormGroup","name","FormControl","Validators","destroyRef","inject","DestroyRef","cdRef","ChangeDetectorRef","readerService","ReaderService","ngOnInit","parent","mouseUp$","fromEvent","nativeElement","touchEnd$","merge","pipe","takeUntilDestroyed","subscribe","event","handleEvent","selection","window","getSelection","target","toString","trim","getXPathTo","preventDefault","stopPropagation","markForCheck","setValue","focusOnBookmarkInput","createPersonalToC","libraryId","seriesId","volumeId","value","catchError","err","of","setTimeout","querySelector","focus","removeAllRanges","_this","_asyncToGenerator","navigator","clipboard","writeText","info","translate","i1","BookLineOverlayComponent_ng_container_0_Template","CommonModule","i2","ReactiveFormsModule","i3","changeDetection","$event","bookmark_r7","_r9","bookScrollId","removeBookmark","_c0","page_r5","_r13","ctx_r12","PersonalTableOfContentsComponent_ng_container_0_li_4_li_4_Template","_c1","bookmarks","PersonalTableOfContentsComponent_ng_container_0_div_2_Template","PersonalTableOfContentsComponent_ng_container_0_li_4_Template","Pages","PersonalTableOfContentsComponent","Object","keys","map","p","parseInt","document","tocRefresh","load","getPersonalToC","res","forEach","hasOwnProperty","push","scrollPart","bookmark","removePersonalToc","filter","DOCUMENT","PersonalTableOfContentsComponent_ng_container_0_Template","NgbTooltip","refreshPersonalToC","bookContainerElemRef","_r22","ctx_r21","prevPage","ctx_r23","loadPage","ctx_r24","ctx_r25","nextPage","t_r2","vp_r20","BookReaderComponent_ng_container_2_ng_container_13_div_4_Template","ctx_r6","getVirtualPage","_r29","ctx_r28","updateColorTheme","ctx_r30","updateReaderStyles","ctx_r31","showPaginationOverlay","ctx_r32","toggleFullscreen","ctx_r33","updateWritingStyle","ctx_r34","updateLayoutMode","ctx_r35","updateReadingDirection","ctx_r36","updateImmersiveMode","_r41","ctx_r40","ctx_r38","_r43","ctx_r42","loadChapterPart","ctx_r39","refreshPToC","_r45","ctx_r44","tocId","BookReaderComponent_ng_container_2_ng_template_38_ng_template_5_Template","BookReaderComponent_ng_container_2_ng_template_38_ng_template_9_Template","TabID","TableOfContents","PersonalTableOfContents","_r37","clickOverlayClass","_c5","immersiveMode","_c6","PageHeightForPagination","scrollbarNeeded","_r49","ctx_r48","onWheel","ColumnLayout","WritingStyleClass","_c7","ColumnHeight","VerticalBookContentWidth","ColumnWidth","actionBarVisible","_c8","ctx_r14","layoutMode","BookPageLayoutMode","Default","_r15","_r57","ctx_r56","goBack","_r62","ctx_r61","turnOffIncognito","BookReaderComponent_ng_container_2_ng_template_47_div_0_ng_template_8_span_0_Template","ctx_r55","incognitoMode","bookTitle","_r65","ctx_r64","movePage","readingDirection","ReadingDirection","LeftToRight","PAGING_DIRECTION","BACKWARDS","FORWARD","BookReaderComponent_ng_container_2_ng_template_47_div_0_button_3_Template","ctx_r66","toggleDrawer","BookReaderComponent_ng_container_2_ng_template_47_div_0_ng_container_7_Template","BookReaderComponent_ng_container_2_ng_template_47_div_0_ng_template_8_Template","ctx_r67","closeReader","ctx_r68","ctx_r51","IsPrevDisabled","IsNextDisabled","IsPrevChapter","IsNextChapter","RightToLeft","adhocPageHistory","isEmpty","isLoading","_r54","BookReaderComponent_ng_container_2_ng_template_47_div_0_Template","ctx_r16","drawerOpen","_r71","ctx_r70","moveFocus","BookReaderComponent_ng_container_2_app_book_line_overlay_6_Template","ctx_r72","BookReaderComponent_ng_container_2_ng_container_13_Template","ctx_r73","loadPrevChapter","ctx_r74","goToPage","ctx_r75","ctx_r76","maxPages","ctx_r77","loadNextChapter","ctx_r78","activeTabId","BookReaderComponent_ng_container_2_ng_template_34_Template","BookReaderComponent_ng_container_2_ng_template_38_Template","BookReaderComponent_ng_container_2_ng_container_42_Template","ctx_r79","handleReaderClick","ctx_r80","mouseDown","BookReaderComponent_ng_container_2_div_45_Template","BookReaderComponent_ng_container_2_div_46_Template","BookReaderComponent_ng_container_2_ng_template_47_Template","undefined","ctx_r1","_c9","topOffset","prevChapterDisabled","nextChapterDisabled","Settings","_r7","_c10","PageWidthForPagination","clickToPaginate","_c11","cursorIsPointer","writingStyle","WritingStyle","Vertical","pageLevelStyles","elementLevelStyles","BookReaderComponent","isPrevPageDisabled","isNextPageDisabled","currentVirtualPage","totalVirtualPages","_","condition","nextPageDisabled","nextChapterId","CHAPTER_ID_DOESNT_EXIST","prevPageDisabled","prevChapterId","bookContentElemRef","base","windowHeight","windowWidth","Column1","Column2","Horizontal","getVerticalPageWidth","horizontalScrollbarNeeded","clientHeight","scrollHeight","route","router","accountService","seriesService","location","renderer","navService","domSanitizer","bookService","memberService","scrollService","utilityService","libraryService","themeService","readingListId","readingListMode","Stack","continuousChaptersStack","isSingleImagePage","clickToPaginateVisualOverlay","clickToPaginateVisualOverlayTimeout","clickToPaginateVisualOverlayTimeout2","updateImageSizeTimeout","CHAPTER_ID_NOT_FETCHED","nextChapterPrefetched","prevChapterPrefetched","darkMode","pageAnchors","lastSeenScrollPartPath","libraryType","LibraryType","Book","isFullscreen","mousePosition","x","y","pagingDirection","lastPaginatorClickTime","hideNavBar","clearThemes","hideSideNav","ngAfterViewInit","reader","debounceTime","handleScrollEvent","isCursorOverPaginationArea","bind","distinctUntilChanged","isPointer","changeCursor","verticalOffset","scrollTop","scrollPosition","body","offsetHeight","alreadyReached","values","i","xpath","getFirstVisibleElementXPath","saveProgress","tempPageNum","take","ngOnDestroy","clearTimeout","clearBookTheme","currentTheme$","theme","setTheme","showNavBar","showSideNav","snapshot","paramMap","navigateByUrl","queryParamMap","hasReadingProgress","hasProgress","currentUser$","user","init","getBookInfo","seriesFormat","MangaFormat","EPUB","params","getQueryParamsObject","navigate","getNavigationArray","queryParams","forkJoin","chapter","getChapter","progress","getProgress","getBookChapters","results","pages","getLibraryType","type","updateImageSizes","getNextChapter","setPageNum","getPrevChapter","onResize","updateWidthAndHeightCalcs","resumeElement","scrollTo","handleKeyPress","activeElement","tagName","key","KEY_CODES","RIGHT_ARROW","LEFT_ARROW","ESC_KEY","SPACE","G","F","deltaY","scrollToX","scrollLeft","sortElements","a","b","aTop","getBoundingClientRect","top","bTop","pop","prevChapter","peek","direction","newRoute","getNextChapterUrl","url","history","replaceState","msg","entity","formatChapterName","toLowerCase","timeOut","warning","addLinkClickHandlers","readingSectionElemRef","querySelectorAll","link","addEventListener","e","targetElem","nodeName","parentNode","attributes","partValue","elems","getElementsByClassName","promptForPage","question","totalPages","goToPageNum","prompt","getBookPage","content","checkSingleImagePage","updateSingleImagePageStyles","bypassSecurityTrustHtml","pageStyles","imgs","Promise","all","Array","from","img","complete","resolve","onload","onerror","then","setupPage","isVerticalWritingStyle","height","maxHeight","maxWidth","documentElement","style","setProperty","htmlContent","replace","doc","DOMParser","parseFromString","innerText","setupPageAnchors","clientWidth","scrollWidth","Math","max","min","getChapterInfo","oldPageNum","pageWidth","getPageWidth","margin","convertVwToPx","getPageHeight","innerWidth","vwValue","scrollOffset","totalScroll","getScrollOffsetAndTotalScroll","pageSize","getPageSize","round","delta","bookContent","intersectingEntries","element","classList","contains","entry","isInViewport","sort","path","startsWith","entries","item","includes","setStyle","RendererStyleFlags2","Important","removeStyle","individualElementStyles","elem","remove","isDarkTheme","styleElem","createElement","selector","innerHTML","appendChild","setBookTheme","innerHeight","partSelector","substr","getElementFromXPath","left","pageXOffset","width","fromTopOffset","pageYOffset","scrollIntoView","block","inline","node","evaluate","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","nodeType","Node","ELEMENT_NODE","checkFullscreenMode","getCssVariable","lastSelector","layoutModeChanged","updateReadingSectionHeight","getPageMarkers","ids","join","flat","showClickToPaginateVisualOverlay","timeoutId","side","isCursorOverLeftPaginationArea","leftPaginationAreaEnd","clientX","isCursorOverRightPaginationArea","toggleMenu","targetElement","getAttribute","abs","clientY","now","Date","i4","i5","i6","i7","i8","i9","i10","i11","i12","i13","i14","viewQuery","BookReaderComponent_ng_container_2_Template","NgTemplateOutlet","DrawerComponent","NgbProgressbar","NgbNav","NgbNavItem","NgbNavItemRole","NgbNavLink","NgbNavContent","ReaderSettingsComponent","NgbNavOutlet","NgStyle","NgClass","data","animation","trigger","state","opacity","transition","animate","routes","component","BookReaderRoutingModule","oAB","cJS","RouterModule","forChild","BookReaderModule","NgbProgressbarModule","NgbTooltipModule","NgbAccordionModule","NgbNavModule","close","DrawerComponent_ng_container_0_div_10_Template","position","isOpen","options","DrawerOptions","drawerClosed","isOpenChange","_angular_core__WEBPACK_IMPORTED_MODULE_0__","exportAs","ngContentSelectors","_c2","DrawerComponent_ng_container_0_Template"],"sourceRoot":"webpack:///","sources":["./src/app/book-reader/_components/table-of-contents/table-of-contents.component.html","./src/app/book-reader/_components/table-of-contents/table-of-contents.component.ts","./src/app/book-reader/_components/book-line-overlay/book-line-overlay.component.html","./src/app/book-reader/_components/book-line-overlay/book-line-overlay.component.ts","./src/app/book-reader/_components/personal-table-of-contents/personal-table-of-contents.component.html","./src/app/book-reader/_components/personal-table-of-contents/personal-table-of-contents.component.ts","./src/app/book-reader/_components/book-reader/book-reader.component.html","./src/app/book-reader/_components/book-reader/book-reader.component.ts","./src/app/book-reader/book-reader.router.module.ts","./src/app/book-reader/book-reader.module.ts","./src/app/shared/drawer/drawer.component.html","./src/app/shared/drawer/drawer.component.ts"],"sourcesContent":["\n
\n
\n {{t('no-data')}}\n
\n
\n \n
\n \n \n \n
\n
\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { BookChapterItem } from '../../_models/book-chapter-item';\nimport { NgIf, NgFor } from '@angular/common';\nimport {TranslocoDirective} from \"@ngneat/transloco\";\n\n@Component({\n selector: 'app-table-of-contents',\n templateUrl: './table-of-contents.component.html',\n styleUrls: ['./table-of-contents.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: true,\n imports: [NgIf, NgFor, TranslocoDirective]\n})\nexport class TableOfContentsComponent {\n\n @Input({required: true}) chapterId!: number;\n @Input({required: true}) pageNum!: number;\n @Input({required: true}) currentPageAnchor!: string;\n @Input() chapters:Array = [];\n\n @Output() loadChapter: EventEmitter<{pageNum: number, part: string}> = new EventEmitter();\n\n constructor() {}\n\n cleanIdSelector(id: string) {\n const tokens = id.split('/');\n if (tokens.length > 0) {\n return tokens[0];\n }\n return id;\n }\n\n loadChapterPage(pageNum: number, part: string) {\n this.loadChapter.emit({pageNum, part});\n }\n}\n","\n
0 || mode !== BookLineOverlayMode.None\">\n\n
\n \n \n
\n \n
\n
\n \n
\n\n
\n \n
\n
\n \n
\n
\n \n \n
\n
\n {{t('required-field')}}\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n
\n","import {\n ChangeDetectionStrategy, ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef, EventEmitter,\n inject,\n Input,\n OnInit, Output,\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {fromEvent, merge, of} from \"rxjs\";\nimport {catchError} from \"rxjs/operators\";\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport {FormControl, FormGroup, ReactiveFormsModule, Validators} from \"@angular/forms\";\nimport {ReaderService} from \"../../../_services/reader.service\";\nimport {ToastrService} from \"ngx-toastr\";\nimport {translate, TranslocoDirective} from \"@ngneat/transloco\";\n\nenum BookLineOverlayMode {\n None = 0,\n Bookmark = 1\n}\n\n@Component({\n selector: 'app-book-line-overlay',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, TranslocoDirective],\n templateUrl: './book-line-overlay.component.html',\n styleUrls: ['./book-line-overlay.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BookLineOverlayComponent implements OnInit {\n @Input({required: true}) libraryId!: number;\n @Input({required: true}) seriesId!: number;\n @Input({required: true}) volumeId!: number;\n @Input({required: true}) chapterId!: number;\n @Input({required: true}) pageNumber: number = 0;\n @Input({required: true}) parent: ElementRef | undefined;\n @Output() refreshToC: EventEmitter = new EventEmitter();\n\n xPath: string = '';\n selectedText: string = '';\n mode: BookLineOverlayMode = BookLineOverlayMode.None;\n bookmarkForm: FormGroup = new FormGroup({\n name: new FormControl('', [Validators.required]),\n });\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly readerService = inject(ReaderService);\n\n get BookLineOverlayMode() { return BookLineOverlayMode; }\n constructor(private elementRef: ElementRef, private toastr: ToastrService) {}\n\n\n ngOnInit() {\n if (this.parent) {\n\n const mouseUp$ = fromEvent(this.parent.nativeElement, 'mouseup');\n const touchEnd$ = fromEvent(this.parent.nativeElement, 'touchend');\n\n merge(mouseUp$, touchEnd$)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event: MouseEvent | TouchEvent) => {\n this.handleEvent(event);\n });\n }\n }\n\n handleEvent(event: MouseEvent | TouchEvent) {\n const selection = window.getSelection();\n if (!event.target) return;\n\n if ((!selection || selection.toString().trim() === '' || selection.toString().trim() === this.selectedText)) {\n this.reset();\n return;\n }\n\n this.selectedText = selection ? selection.toString().trim() : '';\n\n if (this.selectedText.length > 0 && this.mode === BookLineOverlayMode.None) {\n this.xPath = this.readerService.getXPathTo(event.target);\n if (this.xPath !== '') {\n this.xPath = '//' + this.xPath;\n }\n\n event.preventDefault();\n event.stopPropagation();\n }\n this.cdRef.markForCheck();\n }\n\n switchMode(mode: BookLineOverlayMode) {\n this.mode = mode;\n this.cdRef.markForCheck();\n if (this.mode === BookLineOverlayMode.Bookmark) {\n this.bookmarkForm.get('name')?.setValue(this.selectedText);\n this.focusOnBookmarkInput();\n }\n }\n\n createPTOC() {\n this.readerService.createPersonalToC(this.libraryId, this.seriesId, this.volumeId, this.chapterId, this.pageNumber,\n this.bookmarkForm.get('name')?.value, this.xPath).pipe(catchError(err => {\n this.focusOnBookmarkInput();\n return of();\n })).subscribe(() => {\n this.reset();\n this.refreshToC.emit();\n this.cdRef.markForCheck();\n });\n }\n\n focusOnBookmarkInput() {\n if (this.mode !== BookLineOverlayMode.Bookmark) return;\n setTimeout(() => this.elementRef.nativeElement.querySelector('#bookmark-name')?.focus(), 10);\n }\n\n reset() {\n this.bookmarkForm.reset();\n this.mode = BookLineOverlayMode.None;\n this.xPath = '';\n this.selectedText = '';\n const selection = window.getSelection();\n if (selection) {\n selection.removeAllRanges();\n }\n this.cdRef.markForCheck();\n }\n\n async copy() {\n const selection = window.getSelection();\n if (selection) {\n await navigator.clipboard.writeText(selection.toString());\n this.toastr.info(translate('toasts.copied-to-clipboard'));\n }\n this.reset();\n }\n\n\n}\n","\n
\n
\n {{t('no-data')}}\n
\n
    \n
  • \n {{t('page', {value: page})}}\n
      \n
    • \n {{bookmark.title}}\n \n
    • \n
    \n
  • \n
\n
\n
\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component, DestroyRef, EventEmitter,\n Inject,\n inject,\n Input,\n OnInit,\n Output\n} from '@angular/core';\nimport {CommonModule, DOCUMENT} from '@angular/common';\nimport {ReaderService} from \"../../../_services/reader.service\";\nimport {PersonalToC} from \"../../../_models/readers/personal-toc\";\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport {NgbTooltip} from \"@ng-bootstrap/ng-bootstrap\";\nimport {TranslocoDirective} from \"@ngneat/transloco\";\n\nexport interface PersonalToCEvent {\n pageNum: number;\n scrollPart: string | undefined;\n}\n\n@Component({\n selector: 'app-personal-table-of-contents',\n standalone: true,\n imports: [CommonModule, NgbTooltip, TranslocoDirective],\n templateUrl: './personal-table-of-contents.component.html',\n styleUrls: ['./personal-table-of-contents.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PersonalTableOfContentsComponent implements OnInit {\n\n @Input({required: true}) chapterId!: number;\n @Input({required: true}) pageNum: number = 0;\n @Input({required: true}) tocRefresh!: EventEmitter;\n @Output() loadChapter: EventEmitter = new EventEmitter();\n\n private readonly readerService = inject(ReaderService);\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n\n\n bookmarks: {[key: number]: Array} = [];\n\n get Pages() {\n return Object.keys(this.bookmarks).map(p => parseInt(p, 10));\n }\n\n constructor(@Inject(DOCUMENT) private document: Document) {}\n\n ngOnInit() {\n this.tocRefresh.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.load();\n });\n\n this.load();\n }\n\n load() {\n this.readerService.getPersonalToC(this.chapterId).subscribe(res => {\n res.forEach(t => {\n if (!this.bookmarks.hasOwnProperty(t.pageNumber)) {\n this.bookmarks[t.pageNumber] = [];\n }\n this.bookmarks[t.pageNumber].push(t);\n })\n this.cdRef.markForCheck();\n });\n }\n\n loadChapterPage(pageNum: number, scrollPart: string | undefined) {\n this.loadChapter.emit({pageNum, scrollPart});\n }\n\n removeBookmark(bookmark: PersonalToC) {\n this.readerService.removePersonalToc(bookmark.chapterId, bookmark.pageNumber, bookmark.title).subscribe(() => {\n this.bookmarks[bookmark.pageNumber] = this.bookmarks[bookmark.pageNumber].filter(t => t.title != bookmark.title);\n\n if (this.bookmarks[bookmark.pageNumber].length === 0) {\n delete this.bookmarks[bookmark.pageNumber];\n }\n this.cdRef.markForCheck();\n });\n }\n\n}\n","
\n \n
\n {{t('skip-header')}}\n \n \n \n \n
\n {{t('title')}}\n
\n
\n
\n \n
\n
\n {{t('page-label')}}\n
\n
\n \n
{{vp[0]}}
\n
\n \n
\n
{{vp[1]}}
\n \n
\n
\n
\n\n
\n {{t('pagination-header')}}\n
\n
\n \n
{{pageNum}}
\n
\n \n
\n
{{maxPages - 1}}
\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 {{t('loading-book')}}\n
\n
\n \n \n ({{t('incognito-mode-label')}})\n {{bookTitle}}\n \n
\n \n \n
\n
\n
\n
\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component, DestroyRef,\n ElementRef, EventEmitter,\n HostListener,\n inject,\n Inject,\n OnDestroy,\n OnInit,\n Renderer2,\n RendererStyleFlags2,\n ViewChild\n} from '@angular/core';\nimport { DOCUMENT, Location, NgTemplateOutlet, NgIf, NgStyle, NgClass } from '@angular/common';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ToastrService } from 'ngx-toastr';\nimport { forkJoin, fromEvent, of } from 'rxjs';\nimport { catchError, debounceTime, distinctUntilChanged, map, take } from 'rxjs/operators';\nimport { Chapter } from 'src/app/_models/chapter';\nimport { AccountService } from 'src/app/_services/account.service';\nimport { NavService } from 'src/app/_services/nav.service';\nimport { CHAPTER_ID_DOESNT_EXIST, CHAPTER_ID_NOT_FETCHED, ReaderService } from 'src/app/_services/reader.service';\nimport { SeriesService } from 'src/app/_services/series.service';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { BookService } from '../../_services/book.service';\nimport { KEY_CODES, UtilityService } from 'src/app/shared/_services/utility.service';\nimport { BookChapterItem } from '../../_models/book-chapter-item';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Stack } from 'src/app/shared/data-structures/stack';\nimport { MemberService } from 'src/app/_services/member.service';\nimport { ReadingDirection } from 'src/app/_models/preferences/reading-direction';\nimport {WritingStyle} from \"../../../_models/preferences/writing-style\";\nimport { MangaFormat } from 'src/app/_models/manga-format';\nimport { LibraryService } from 'src/app/_services/library.service';\nimport { LibraryType } from 'src/app/_models/library';\nimport { BookTheme } from 'src/app/_models/preferences/book-theme';\nimport { BookPageLayoutMode } from 'src/app/_models/readers/book-page-layout-mode';\nimport { PageStyle, ReaderSettingsComponent } from '../reader-settings/reader-settings.component';\nimport { User } from 'src/app/_models/user';\nimport { ThemeService } from 'src/app/_services/theme.service';\nimport { ScrollService } from 'src/app/_services/scroll.service';\nimport { PAGING_DIRECTION } from 'src/app/manga-reader/_models/reader-enums';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport { TableOfContentsComponent } from '../table-of-contents/table-of-contents.component';\nimport { NgbProgressbar, NgbNav, NgbNavItem, NgbNavItemRole, NgbNavLink, NgbNavContent, NgbNavOutlet, NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\nimport { DrawerComponent } from '../../../shared/drawer/drawer.component';\nimport {BookLineOverlayComponent} from \"../book-line-overlay/book-line-overlay.component\";\nimport {\n PersonalTableOfContentsComponent,\n PersonalToCEvent\n} from \"../personal-table-of-contents/personal-table-of-contents.component\";\nimport {translate, TranslocoDirective} from \"@ngneat/transloco\";\n\n\nenum TabID {\n Settings = 1,\n TableOfContents = 2,\n PersonalTableOfContents = 3\n}\n\n\ninterface HistoryPoint {\n /**\n * Page Number\n */\n page: number;\n /**\n * XPath to scroll to\n */\n scrollPart: string;\n}\n\nconst TOP_OFFSET = -50 * 1.5; // px the sticky header takes up // TODO: Do I need this or can I change it with new fixed top height\n\nconst COLUMN_GAP = 20; // px\n/**\n * Styles that should be applied on the top level book-content tag\n */\nconst pageLevelStyles = ['margin-left', 'margin-right', 'font-size'];\n/**\n * Styles that should be applied on every element within book-content tag\n */\nconst elementLevelStyles = ['line-height', 'font-family'];\n\n@Component({\n selector: 'app-book-reader',\n templateUrl: './book-reader.component.html',\n styleUrls: ['./book-reader.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('isLoading', [\n state('false', style({ opacity: 1 })),\n state('true', style({ opacity: 0 })),\n transition('false <=> true', animate('200ms'))\n ]),\n trigger('fade', [\n state('true', style({ opacity: 0 })),\n state('false', style({ opacity: 0.5 })),\n transition('false <=> true', animate('4000ms'))\n ])\n ],\n standalone: true,\n imports: [NgTemplateOutlet, DrawerComponent, NgIf, NgbProgressbar, NgbNav, NgbNavItem, NgbNavItemRole, NgbNavLink, NgbNavContent, ReaderSettingsComponent, TableOfContentsComponent, NgbNavOutlet, NgStyle, NgClass, NgbTooltip, BookLineOverlayComponent, PersonalTableOfContentsComponent, TranslocoDirective]\n})\nexport class BookReaderComponent implements OnInit, AfterViewInit, OnDestroy {\n\n libraryId!: number;\n seriesId!: number;\n volumeId!: number;\n chapterId!: number;\n chapter!: Chapter;\n user!: User;\n\n /**\n * Reading List id. Defaults to -1.\n */\n readingListId: number = CHAPTER_ID_DOESNT_EXIST;\n\n /**\n * If this is true, no progress will be saved.\n */\n incognitoMode: boolean = false;\n\n /**\n * If this is true, chapters will be fetched in the order of a reading list, rather than natural series order.\n */\n readingListMode: boolean = false;\n\n /**\n * The actual pages from the epub, used for showing on table of contents. This must be here as we need access to it for scroll anchors\n */\n chapters: Array = [];\n /**\n * Current Page\n */\n pageNum = 0;\n /**\n * Max Pages\n */\n maxPages = 1;\n /**\n * This allows for exploration into different chapters\n */\n adhocPageHistory: Stack = new Stack();\n /**\n * A stack of the chapter ids we come across during continuous reading mode. When we traverse a boundary, we use this to avoid extra API calls.\n * @see Stack\n * TODO: See if continuousChaptersStack can be moved into reader service so we can reduce code duplication between readers (and also use ChapterInfo with it instead)\n */\n continuousChaptersStack: Stack = new Stack();\n /*\n * The current page only contains an image. This is used to determine if we should show the image in the center of the screen.\n */\n isSingleImagePage = false;\n /**\n * Belongs to the drawer component\n */\n activeTabId: TabID = TabID.Settings;\n /**\n * Sub Nav tab id\n */\n tocId: TabID = TabID.TableOfContents;\n /**\n * Belongs to drawer component\n */\n drawerOpen = false;\n /**\n * If the action bar is visible\n */\n actionBarVisible = true;\n /**\n * Book reader setting that hides the menuing system\n */\n immersiveMode: boolean = false;\n /**\n * If we are loading from backend\n */\n isLoading = true;\n /**\n * Title of the book. Rendered in action bars\n */\n bookTitle: string = '';\n /**\n * The boolean that decides if the clickToPaginate overlay is visible or not.\n */\n clickToPaginateVisualOverlay = false;\n clickToPaginateVisualOverlayTimeout: any = undefined; // For animation\n clickToPaginateVisualOverlayTimeout2: any = undefined; // For kicking off animation, giving enough time to render html\n updateImageSizeTimeout: any = undefined;\n /**\n * This is the html we get from the server\n */\n page: SafeHtml | undefined = undefined;\n /**\n * Next Chapter Id. This is not garunteed to be a valid ChapterId. Prefetched on page load (non-blocking).\n */\n nextChapterId: number = CHAPTER_ID_NOT_FETCHED;\n /**\n * Previous Chapter Id. This is not garunteed to be a valid ChapterId. Prefetched on page load (non-blocking).\n */\n prevChapterId: number = CHAPTER_ID_NOT_FETCHED;\n /**\n * Is there a next chapter. If not, this will disable UI controls.\n */\n nextChapterDisabled: boolean = false;\n /**\n * Is there a previous chapter. If not, this will disable UI controls.\n */\n prevChapterDisabled: boolean = false;\n /**\n * Has the next chapter been prefetched. Prefetched means the backend will cache the files.\n */\n nextChapterPrefetched: boolean = false;\n /**\n * Has the previous chapter been prefetched. Prefetched means the backend will cache the files.\n */\n prevChapterPrefetched: boolean = false;\n /**\n * If the prev page allows a page change to occur.\n */\n prevPageDisabled = false;\n /**\n * If the next page allows a page change to occur.\n */\n nextPageDisabled = false;\n\n /**\n * Internal property used to capture all the different css properties to render on all elements. This is a cached version that is updated from reader-settings component\n */\n pageStyles!: PageStyle;\n\n /**\n * Offset for drawer and rendering canvas. Fixed to 62px.\n */\n topOffset: number = 38;\n /**\n * Used for showing/hiding bottom action bar. Calculates if there is enough scroll to show it.\n * Will hide if all content in book is absolute positioned\n */\n\n horizontalScrollbarNeeded = false;\n scrollbarNeeded = false;\n readingDirection: ReadingDirection = ReadingDirection.LeftToRight;\n clickToPaginate = false;\n /**\n * Used solely for fullscreen to apply a hack\n */\n darkMode = true;\n /**\n * A anchors that map to the page number. When you click on one of these, we will load a given page up for the user.\n */\n pageAnchors: {[n: string]: number } = {};\n currentPageAnchor: string = '';\n /**\n * Last seen progress part path\n */\n lastSeenScrollPartPath: string = '';\n /**\n * Library Type used for rendering chapter or issue\n */\n libraryType: LibraryType = LibraryType.Book;\n /**\n * If the web browser is in fullscreen mode\n */\n isFullscreen: boolean = false;\n\n /**\n * How to render the page content\n */\n layoutMode: BookPageLayoutMode = BookPageLayoutMode.Default;\n\n /**\n * Width of the document (in non-column layout), used for column layout virtual paging\n */\n windowWidth: number = 0;\n windowHeight: number = 0;\n\n /**\n * used to track if a click is a drag or not, for opening menu\n */\n mousePosition = {\n x: 0,\n y: 0\n };\n\n /**\n * Used to keep track of direction user is paging, to help with virtual paging on column layout\n */\n pagingDirection: PAGING_DIRECTION = PAGING_DIRECTION.FORWARD;\n\n writingStyle: WritingStyle = WritingStyle.Horizontal;\n\n /**\n * Controls whether the cursor is a pointer when tap to paginate is on and the cursor is over\n * either of the pagination areas\n */\n cursorIsPointer: boolean = false;\n\n /**\n * Used to keep track of the last time a paginator area was clicked to prevent the default\n * browser behavior of selecting words or lines when double- or triple-clicking, respectively,\n * triggered by repeated click pagination (when enabled).\n */\n lastPaginatorClickTime: number = 0;\n\n /**\n * Used to refresh the Personal PoC\n */\n refreshPToC: EventEmitter = new EventEmitter();\n\n private readonly destroyRef = inject(DestroyRef);\n\n @ViewChild('bookContainer', {static: false}) bookContainerElemRef!: ElementRef;\n /**\n * book-content class\n */\n @ViewChild('readingHtml', {static: false}) bookContentElemRef!: ElementRef;\n @ViewChild('readingSection', {static: false}) readingSectionElemRef!: ElementRef;\n @ViewChild('stickyTop', {static: false}) stickyTopElemRef!: ElementRef;\n @ViewChild('reader', {static: false}) reader!: ElementRef;\n\n\n get BookPageLayoutMode() {\n return BookPageLayoutMode;\n }\n\n get WritingStyle() {\n return WritingStyle;\n }\n get TabID(): typeof TabID {\n return TabID;\n }\n\n get ReadingDirection(): typeof ReadingDirection {\n return ReadingDirection;\n }\n\n get PAGING_DIRECTION() {\n return PAGING_DIRECTION;\n }\n\n /**\n * Disables the Left most button\n */\n get IsPrevDisabled(): boolean {\n if (this.readingDirection === ReadingDirection.LeftToRight) {\n // Acting as Previous button\n return this.isPrevPageDisabled();\n }\n\n // Acting as a Next button\n return this.isNextPageDisabled();\n }\n\n get IsNextDisabled(): boolean {\n if (this.readingDirection === ReadingDirection.LeftToRight) {\n // Acting as Next button\n return this.isNextPageDisabled();\n }\n // Acting as Previous button\n return this.isPrevPageDisabled();\n }\n\n isNextPageDisabled() {\n const [currentVirtualPage, totalVirtualPages, _] = this.getVirtualPage();\n const condition = (this.nextPageDisabled || this.nextChapterId === CHAPTER_ID_DOESNT_EXIST) && this.pageNum + 1 > this.maxPages - 1;\n if (this.layoutMode !== BookPageLayoutMode.Default) {\n return condition && currentVirtualPage === totalVirtualPages;\n }\n return condition;\n }\n\n isPrevPageDisabled() {\n const [currentVirtualPage,,] = this.getVirtualPage();\n const condition = (this.prevPageDisabled || this.prevChapterId === CHAPTER_ID_DOESNT_EXIST) && this.pageNum === 0;\n if (this.layoutMode !== BookPageLayoutMode.Default) {\n return condition && currentVirtualPage === 0;\n }\n return condition;\n }\n\n /**\n * Determines if we show >> or >\n */\n get IsNextChapter(): boolean {\n if (this.layoutMode === BookPageLayoutMode.Default) {\n return this.pageNum + 1 >= this.maxPages;\n }\n\n const [currentVirtualPage, totalVirtualPages, _] = this.getVirtualPage();\n if (this.bookContentElemRef == null) return this.pageNum + 1 >= this.maxPages;\n\n return this.pageNum + 1 >= this.maxPages && (currentVirtualPage === totalVirtualPages);\n }\n /**\n * Determines if we show << or <\n */\n get IsPrevChapter(): boolean {\n if (this.layoutMode === BookPageLayoutMode.Default) {\n return this.pageNum === 0;\n }\n\n const [currentVirtualPage,,] = this.getVirtualPage();\n if (this.bookContentElemRef == null) return this.pageNum + 1 >= this.maxPages;\n\n return this.pageNum === 0 && (currentVirtualPage === 0);\n }\n\n get ColumnWidth() {\n const base = this.writingStyle === WritingStyle.Vertical ? this.windowHeight : this.windowWidth;\n switch (this.layoutMode) {\n case BookPageLayoutMode.Default:\n return 'unset';\n case BookPageLayoutMode.Column1:\n return ((base / 2) - 4) + 'px';\n case BookPageLayoutMode.Column2:\n return (base / 4) + 'px';\n default:\n return 'unset';\n }\n }\n\n get ColumnHeight() {\n if (this.layoutMode !== BookPageLayoutMode.Default || this.writingStyle === WritingStyle.Vertical) {\n // Take the height after page loads, subtract the top/bottom bar\n const height = this.windowHeight - (this.topOffset * 2);\n return height + 'px';\n }\n return 'unset';\n }\n\n get VerticalBookContentWidth() {\n if (this.layoutMode !== BookPageLayoutMode.Default && this.writingStyle !== WritingStyle.Horizontal ) {\n const width = this.getVerticalPageWidth()\n return width + 'px';\n }\n return '';\n }\n\n get ColumnLayout() {\n switch (this.layoutMode) {\n case BookPageLayoutMode.Default:\n return '';\n case BookPageLayoutMode.Column1:\n return 'column-layout-1';\n case BookPageLayoutMode.Column2:\n return 'column-layout-2';\n }\n }\n\n get WritingStyleClass() {\n switch (this.writingStyle) {\n case WritingStyle.Horizontal:\n return '';\n case WritingStyle.Vertical:\n return 'writing-style-vertical';\n }\n }\n\n get PageWidthForPagination() {\n if (this.layoutMode === BookPageLayoutMode.Default && this.writingStyle === WritingStyle.Vertical && this.horizontalScrollbarNeeded) {\n return 'unset';\n }\n return '100%'\n }\n\n get PageHeightForPagination() {\n if (this.layoutMode === BookPageLayoutMode.Default) {\n // if the book content is less than the height of the container, override and return height of container for pagination area\n if (this.bookContainerElemRef?.nativeElement?.clientHeight > this.bookContentElemRef?.nativeElement?.clientHeight) {\n return (this.bookContainerElemRef?.nativeElement?.clientHeight || 0) + 'px';\n }\n\n return (this.bookContentElemRef?.nativeElement?.scrollHeight || 0) - ((this.topOffset * (this.immersiveMode ? 0 : 1)) * 2) + 'px';\n }\n\n if (this.immersiveMode) return this.windowHeight + 'px';\n return (this.windowHeight) - (this.topOffset * 2) + 'px';\n }\n\n\n constructor(private route: ActivatedRoute, private router: Router, private accountService: AccountService,\n private seriesService: SeriesService, private readerService: ReaderService, private location: Location,\n private renderer: Renderer2, private navService: NavService, private toastr: ToastrService,\n private domSanitizer: DomSanitizer, private bookService: BookService, private memberService: MemberService,\n private scrollService: ScrollService, private utilityService: UtilityService, private libraryService: LibraryService,\n @Inject(DOCUMENT) private document: Document, private themeService: ThemeService, private readonly cdRef: ChangeDetectorRef) {\n this.navService.hideNavBar();\n this.themeService.clearThemes();\n this.navService.hideSideNav();\n this.cdRef.markForCheck();\n }\n\n /**\n * After the page has loaded, setup the scroll handler. The scroll handler has 2 parts. One is if there are page anchors setup (aka page anchor elements linked with the\n * table of content) then we calculate what has already been reached and grab the last reached one to save progress. If page anchors aren't setup (toc missing), then try to save progress\n * based on the last seen scroll part (xpath).\n */\n ngAfterViewInit() {\n // check scroll offset and if offset is after any of the \"id\" markers, save progress\n fromEvent(this.reader.nativeElement, 'scroll')\n .pipe(\n debounceTime(200),\n takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n if (this.isLoading) return;\n\n this.handleScrollEvent();\n });\n\n fromEvent(this.bookContainerElemRef.nativeElement, 'mousemove')\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n map(this.isCursorOverPaginationArea.bind(this)),\n distinctUntilChanged())\n .subscribe((isPointer) => {\n this.changeCursor(isPointer);\n });\n }\n\n handleScrollEvent() {\n // Highlight the current chapter we are on\n if (Object.keys(this.pageAnchors).length !== 0) {\n // get the height of the document so we can capture markers that are halfway on the document viewport\n const verticalOffset = this.reader.nativeElement?.scrollTop || (this.scrollService.scrollPosition + (this.document.body.offsetHeight / 2));\n\n const alreadyReached = Object.values(this.pageAnchors).filter((i: number) => i <= verticalOffset);\n if (alreadyReached.length > 0) {\n this.currentPageAnchor = Object.keys(this.pageAnchors)[alreadyReached.length - 1];\n } else {\n this.currentPageAnchor = '';\n }\n\n this.cdRef.markForCheck();\n }\n\n // Find the element that is on screen to bookmark against\n const xpath: string | null | undefined = this.getFirstVisibleElementXPath();\n if (xpath !== null && xpath !== undefined) this.lastSeenScrollPartPath = xpath;\n\n if (this.lastSeenScrollPartPath !== '') {\n this.saveProgress();\n }\n }\n\n saveProgress() {\n let tempPageNum = this.pageNum;\n if (this.pageNum == this.maxPages - 1) {\n tempPageNum = this.pageNum + 1;\n }\n\n if (!this.incognitoMode) {\n this.readerService.saveProgress(this.libraryId, this.seriesId, this.volumeId, this.chapterId, tempPageNum, this.lastSeenScrollPartPath).pipe(take(1)).subscribe(() => {/* No operation */});\n }\n }\n\n ngOnDestroy(): void {\n this.clearTimeout(this.clickToPaginateVisualOverlayTimeout);\n this.clearTimeout(this.clickToPaginateVisualOverlayTimeout2);\n\n this.themeService.clearBookTheme();\n\n this.themeService.currentTheme$.pipe(take(1)).subscribe(theme => {\n this.themeService.setTheme(theme.name);\n });\n\n this.navService.showNavBar();\n this.navService.showSideNav();\n }\n\n ngOnInit(): void {\n const libraryId = this.route.snapshot.paramMap.get('libraryId');\n const seriesId = this.route.snapshot.paramMap.get('seriesId');\n const chapterId = this.route.snapshot.paramMap.get('chapterId');\n\n if (libraryId === null || seriesId === null || chapterId === null) {\n this.router.navigateByUrl('/libraries');\n return;\n }\n\n\n this.libraryId = parseInt(libraryId, 10);\n this.seriesId = parseInt(seriesId, 10);\n this.chapterId = parseInt(chapterId, 10);\n this.incognitoMode = this.route.snapshot.queryParamMap.get('incognitoMode') === 'true';\n\n const readingListId = this.route.snapshot.queryParamMap.get('readingListId');\n if (readingListId != null) {\n this.readingListMode = true;\n this.readingListId = parseInt(readingListId, 10);\n }\n this.cdRef.markForCheck();\n\n\n this.memberService.hasReadingProgress(this.libraryId).pipe(take(1)).subscribe(hasProgress => {\n if (!hasProgress) {\n this.toggleDrawer();\n this.toastr.info(translate('toasts.book-settings-info'));\n }\n });\n\n this.accountService.currentUser$.pipe(take(1)).subscribe(user => {\n if (user) {\n this.user = user;\n this.init();\n }\n });\n }\n\n init() {\n this.nextChapterId = CHAPTER_ID_NOT_FETCHED;\n this.prevChapterId = CHAPTER_ID_NOT_FETCHED;\n this.nextChapterDisabled = false;\n this.prevChapterDisabled = false;\n this.nextChapterPrefetched = false;\n this.cdRef.markForCheck();\n\n\n\n this.bookService.getBookInfo(this.chapterId).subscribe(info => {\n if (this.readingListMode && info.seriesFormat !== MangaFormat.EPUB) {\n // Redirect to the manga reader.\n const params = this.readerService.getQueryParamsObject(this.incognitoMode, this.readingListMode, this.readingListId);\n this.router.navigate(this.readerService.getNavigationArray(info.libraryId, info.seriesId, this.chapterId, info.seriesFormat), {queryParams: params});\n return;\n }\n\n this.bookTitle = info.bookTitle;\n this.cdRef.markForCheck();\n\n forkJoin({\n chapter: this.seriesService.getChapter(this.chapterId),\n progress: this.readerService.getProgress(this.chapterId),\n chapters: this.bookService.getBookChapters(this.chapterId),\n }).subscribe(results => {\n this.chapter = results.chapter;\n this.volumeId = results.chapter.volumeId;\n this.maxPages = results.chapter.pages;\n this.chapters = results.chapters;\n this.pageNum = results.progress.pageNum;\n this.cdRef.markForCheck();\n if (results.progress.bookScrollId) this.lastSeenScrollPartPath = results.progress.bookScrollId;\n\n this.continuousChaptersStack.push(this.chapterId);\n\n this.libraryService.getLibraryType(this.libraryId).pipe(take(1)).subscribe(type => {\n this.libraryType = type;\n });\n\n this.updateImageSizes();\n\n if (this.pageNum >= this.maxPages) {\n this.pageNum = this.maxPages - 1;\n this.cdRef.markForCheck();\n this.saveProgress();\n }\n\n this.readerService.getNextChapter(this.seriesId, this.volumeId, this.chapterId, this.readingListId).pipe(take(1)).subscribe(chapterId => {\n this.nextChapterId = chapterId;\n if (chapterId === CHAPTER_ID_DOESNT_EXIST || chapterId === this.chapterId) {\n this.nextChapterDisabled = true;\n this.nextChapterPrefetched = true;\n this.cdRef.markForCheck();\n return;\n }\n this.setPageNum(this.pageNum);\n });\n this.readerService.getPrevChapter(this.seriesId, this.volumeId, this.chapterId, this.readingListId).pipe(take(1)).subscribe(chapterId => {\n this.prevChapterId = chapterId;\n if (chapterId === CHAPTER_ID_DOESNT_EXIST || chapterId === this.chapterId) {\n this.prevChapterDisabled = true;\n this.prevChapterPrefetched = true; // If there is no prev chapter, then mark it as prefetched\n this.cdRef.markForCheck();\n return;\n }\n this.setPageNum(this.pageNum);\n });\n\n // Check if user progress has part, if so load it so we scroll to it\n this.loadPage(results.progress.bookScrollId || undefined);\n }, () => {\n setTimeout(() => {\n this.closeReader();\n }, 200);\n });\n });\n }\n\n @HostListener('window:resize', ['$event'])\n @HostListener('window:orientationchange', ['$event'])\n onResize(){\n // Update the window Height\n this.updateWidthAndHeightCalcs();\n this.updateImageSizes();\n const resumeElement = this.getFirstVisibleElementXPath();\n if (this.layoutMode !== BookPageLayoutMode.Default && resumeElement !== null && resumeElement !== undefined) {\n this.scrollTo(resumeElement); // This works pretty well, but not perfect\n }\n }\n\n @HostListener('window:keydown', ['$event'])\n handleKeyPress(event: KeyboardEvent) {\n const activeElement = document.activeElement as HTMLElement;\n const isInputFocused = activeElement.tagName === 'INPUT' || activeElement.tagName === 'TEXTAREA';\n if (isInputFocused) return;\n\n if (event.key === KEY_CODES.RIGHT_ARROW) {\n this.movePage(this.readingDirection === ReadingDirection.LeftToRight ? PAGING_DIRECTION.FORWARD : PAGING_DIRECTION.BACKWARDS);\n } else if (event.key === KEY_CODES.LEFT_ARROW) {\n this.movePage(this.readingDirection === ReadingDirection.LeftToRight ? PAGING_DIRECTION.BACKWARDS : PAGING_DIRECTION.FORWARD);\n } else if (event.key === KEY_CODES.ESC_KEY) {\n this.closeReader();\n } else if (event.key === KEY_CODES.SPACE) {\n this.toggleDrawer();\n event.stopPropagation();\n event.preventDefault();\n } else if (event.key === KEY_CODES.G) {\n this.goToPage();\n } else if (event.key === KEY_CODES.F) {\n this.toggleFullscreen()\n }\n }\n\n onWheel(event: WheelEvent) {\n // This allows the user to scroll the page horizontally without holding shift\n if (this.layoutMode !== BookPageLayoutMode.Default || this.writingStyle !== WritingStyle.Vertical) {\n return;\n }\n if (event.deltaY !== 0) {\n event.preventDefault()\n this.scrollService.scrollToX( event.deltaY + this.reader.nativeElement.scrollLeft, this.reader.nativeElement);\n }\n}\n\n closeReader() {\n this.readerService.closeReader(this.readingListMode, this.readingListId);\n }\n\n sortElements(a: Element, b: Element) {\n const aTop = a.getBoundingClientRect().top;\n const bTop = b.getBoundingClientRect().top;\n if (aTop < bTop) {\n return -1;\n }\n if (aTop > bTop) {\n return 1;\n }\n\n return 0;\n }\n\n loadNextChapter() {\n if (this.nextPageDisabled) { return; }\n this.isLoading = true;\n if (this.nextChapterId === CHAPTER_ID_NOT_FETCHED || this.nextChapterId === this.chapterId) {\n this.readerService.getNextChapter(this.seriesId, this.volumeId, this.chapterId, this.readingListId).pipe(take(1)).subscribe(chapterId => {\n this.nextChapterId = chapterId;\n this.loadChapter(chapterId, 'Next');\n });\n } else {\n this.loadChapter(this.nextChapterId, 'Next');\n }\n }\n\n loadPrevChapter() {\n if (this.prevPageDisabled) { return; }\n\n this.isLoading = true;\n this.cdRef.markForCheck();\n this.continuousChaptersStack.pop();\n const prevChapter = this.continuousChaptersStack.peek();\n if (prevChapter != this.chapterId) {\n if (prevChapter !== undefined) {\n this.chapterId = prevChapter;\n this.init();\n return;\n }\n }\n\n if (this.prevChapterPrefetched && this.prevChapterId === CHAPTER_ID_DOESNT_EXIST) {\n this.isLoading = false;\n this.cdRef.markForCheck();\n return;\n }\n\n if (this.prevChapterId === CHAPTER_ID_NOT_FETCHED || this.prevChapterId === this.chapterId && !this.prevChapterPrefetched) {\n this.readerService.getPrevChapter(this.seriesId, this.volumeId, this.chapterId, this.readingListId).pipe(take(1)).subscribe(chapterId => {\n this.prevChapterId = chapterId;\n this.loadChapter(chapterId, 'Prev');\n });\n } else {\n this.loadChapter(this.prevChapterId, 'Prev');\n }\n }\n\n loadChapter(chapterId: number, direction: 'Next' | 'Prev') {\n if (chapterId >= 0) {\n this.chapterId = chapterId;\n this.continuousChaptersStack.push(chapterId);\n // Load chapter Id onto route but don't reload\n const newRoute = this.readerService.getNextChapterUrl(this.router.url, this.chapterId, this.incognitoMode, this.readingListMode, this.readingListId);\n window.history.replaceState({}, '', newRoute);\n const msg = translate(direction === 'Next' ? 'toasts.load-next-chapter' : 'toasts.load-prev-chapter', {entity: this.utilityService.formatChapterName(this.libraryType).toLowerCase()});\n this.toastr.info(msg, '', {timeOut: 3000});\n this.cdRef.markForCheck();\n this.init();\n } else {\n // This will only happen if no actual chapter can be found\n const msg = translate(direction === 'Next' ? 'toasts.no-next-chapter' : 'toasts.no-prev-chapter', {entity: this.utilityService.formatChapterName(this.libraryType).toLowerCase()});\n this.toastr.warning(msg);\n this.isLoading = false;\n if (direction === 'Prev') {\n this.prevPageDisabled = true;\n } else {\n this.nextPageDisabled = true;\n }\n this.cdRef.markForCheck();\n }\n }\n\n loadChapterPage(event: {pageNum: number, part: string}) {\n this.setPageNum(event.pageNum);\n this.loadPage('id(\"' + event.part + '\")');\n }\n\n /**\n * From personal table of contents/bookmark\n * @param event\n */\n loadChapterPart(event: PersonalToCEvent) {\n this.setPageNum(event.pageNum);\n this.loadPage(event.scrollPart);\n }\n\n /**\n * Adds a click handler for any anchors that have 'kavita-page'. If 'kavita-page' present, changes page to kavita-page and optionally passes a part value\n * from 'kavita-part', which will cause the reader to scroll to the marker.\n */\n addLinkClickHandlers() {\n const links = this.readingSectionElemRef.nativeElement.querySelectorAll('a');\n links.forEach((link: any) => {\n link.addEventListener('click', (e: any) => {\n e.stopPropagation();\n let targetElem = e.target;\n if (e.target.nodeName !== 'A' && e.target.parentNode.nodeName === 'A') {\n // Certain combos like text can cause the target to be the sup tag and not the anchor\n targetElem = e.target.parentNode;\n }\n if (!targetElem.attributes.hasOwnProperty('kavita-page')) { return; }\n const page = parseInt(targetElem.attributes['kavita-page'].value, 10);\n if (this.adhocPageHistory.peek()?.page !== this.pageNum) {\n this.adhocPageHistory.push({page: this.pageNum, scrollPart: this.lastSeenScrollPartPath});\n }\n\n const partValue = targetElem.attributes.hasOwnProperty('kavita-part') ? targetElem.attributes['kavita-part'].value : undefined;\n if (partValue && page === this.pageNum) {\n this.scrollTo(targetElem.attributes['kavita-part'].value);\n return;\n }\n\n this.setPageNum(page);\n this.loadPage(partValue);\n });\n });\n }\n\n moveFocus() {\n const elems = this.document.getElementsByClassName('reading-section');\n if (elems.length > 0) {\n (elems[0] as HTMLDivElement).focus();\n }\n }\n\n\n promptForPage() {\n const question = translate('book-reader.go-to-page-prompt', {totalPages: this.maxPages - 1});\n const goToPageNum = window.prompt(question, '');\n if (goToPageNum === null || goToPageNum.trim().length === 0) { return null; }\n return goToPageNum;\n }\n\n goToPage(pageNum?: number) {\n let page = pageNum;\n if (pageNum === null || pageNum === undefined) {\n const goToPageNum = this.promptForPage();\n if (goToPageNum === null) { return; }\n page = parseInt(goToPageNum.trim(), 10);\n }\n\n if (page === undefined || this.pageNum === page) { return; }\n\n if (page > this.maxPages) {\n page = this.maxPages;\n } else if (page < 0) {\n page = 0;\n }\n\n if (!(page === 0 || page === this.maxPages - 1)) {\n page -= 1;\n }\n\n this.pageNum = page;\n this.loadPage();\n }\n\n\n\n\n loadPage(part?: string | undefined, scrollTop?: number | undefined) {\n this.isLoading = true;\n this.cdRef.markForCheck();\n\n this.bookService.getBookPage(this.chapterId, this.pageNum).pipe(take(1)).subscribe(content => {\n this.isSingleImagePage = this.checkSingleImagePage(content) // This needs be performed before we set this.page to avoid image jumping\n this.updateSingleImagePageStyles()\n this.page = this.domSanitizer.bypassSecurityTrustHtml(content); // PERF: Potential optimization to prefetch next/prev page and store in localStorage\n\n\n this.cdRef.markForCheck();\n\n setTimeout(() => {\n this.addLinkClickHandlers();\n this.updateReaderStyles(this.pageStyles);\n\n const imgs = this.readingSectionElemRef.nativeElement.querySelectorAll('img');\n if (imgs === null || imgs.length === 0) {\n this.setupPage(part, scrollTop);\n return;\n }\n\n Promise.all(Array.from(imgs)\n .filter(img => !img.complete)\n .map(img => new Promise(resolve => { img.onload = img.onerror = resolve; })))\n .then(() => {\n this.setupPage(part, scrollTop);\n this.updateImageSizes();\n });\n }, 10);\n });\n }\n\n /**\n * Updates the image properties to fit the current layout mode and screen size\n */\n updateImageSizes() {\n const isVerticalWritingStyle = this.writingStyle === WritingStyle.Vertical;\n const height = this.windowHeight - (this.topOffset * 2);\n let maxHeight = 'unset';\n let maxWidth = '';\n switch (this.layoutMode) {\n case BookPageLayoutMode.Default:\n if (isVerticalWritingStyle) {\n maxHeight = `${height}px`;\n } else {\n maxWidth = `${this.getVerticalPageWidth()}px`;\n }\n break\n\n case BookPageLayoutMode.Column1:\n maxHeight = `${height}px`;\n maxWidth = `${this.getVerticalPageWidth()}px`;\n break\n\n case BookPageLayoutMode.Column2:\n maxWidth = `${this.getVerticalPageWidth()}px`;\n if (isVerticalWritingStyle && !this.isSingleImagePage) {\n maxHeight = `${height / 2}px`;\n } else {\n maxHeight = `${height}px`;\n }\n break\n }\n this.document.documentElement.style.setProperty('--book-reader-content-max-height', maxHeight);\n this.document.documentElement.style.setProperty('--book-reader-content-max-width', maxWidth);\n\n }\n\n updateSingleImagePageStyles() {\n if (this.isSingleImagePage && this.layoutMode !== BookPageLayoutMode.Default) {\n this.document.documentElement.style.setProperty('--book-reader-content-position', 'absolute');\n this.document.documentElement.style.setProperty('--book-reader-content-top', '50%');\n this.document.documentElement.style.setProperty('--book-reader-content-left', '50%');\n this.document.documentElement.style.setProperty('--book-reader-content-transform', 'translate(-50%, -50%)');\n } else {\n this.document.documentElement.style.setProperty('--book-reader-content-position', '');\n this.document.documentElement.style.setProperty('--book-reader-content-top', '');\n this.document.documentElement.style.setProperty('--book-reader-content-left', '');\n this.document.documentElement.style.setProperty('--book-reader-content-transform', '');\n }\n }\n\n checkSingleImagePage(content: string) {\n // Exclude the style element from the HTML content as it messes up innerText\n const htmlContent = content.replace(/