/* * Beamer Viewer, a web-based PDF presentation viewer * Copyright 2018-2024 Pacien TRAN-GIRARD * SPDX-License-Identifier: EUPL-1.2 */ "use strict"; class Presentation { constructor(pdf) { this.pdf = pdf; this.currentPageIndex = 1; this.stage = this._setupStage(); } start() { this.stage.start(); } _setupStage() { return new Stage( () => this._onStageReady(), () => this._onNext(), () => this._onPrevious(), ); } _onStageReady() { this._setPage(this.currentPageIndex); } _onNext() { if (this.currentPageIndex === this.pdf.numPages) return; this._setPage(this.currentPageIndex + 1); } _onPrevious() { if (this.currentPageIndex === 1) return; this._setPage(this.currentPageIndex - 1); } _setPage(pageIndex) { this.currentPageIndex = pageIndex; this.pdf .getPage(this.currentPageIndex) .then(page => this.stage.setPage(page)) } }