aboutsummaryrefslogtreecommitdiff
path: root/beamer/viewer/presentation.js
blob: f7f47b2f3fb5466de6c0e8a8a0d06d2e47e45ade (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/*
 * 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))
  }
}