/*
 * Beamer Viewer, a web-based PDF presentation viewer
 * Copyright 2018-2024 Euxane 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))
  }
}