Merge pull request #10190 from Snuffleupagus/_getCurrentVisiblePage

Add a helper method for `_getVisiblePages`, in `BaseViewer`, for the case where only a single page is displayed in the viewer
This commit is contained in:
Tim van der Meij 2018-10-29 23:19:32 +01:00 committed by GitHub
commit 42b7bb4751
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 19 deletions

View File

@ -855,6 +855,30 @@ class BaseViewer {
false : (this.container.scrollHeight > this.container.clientHeight));
}
/**
* Helper method for `this._getVisiblePages`. Should only ever be used when
* the viewer can only display a single page at a time, for example in:
* - `PDFSinglePageViewer`.
* - `PDFViewer` with Presentation Mode active.
*/
_getCurrentVisiblePage() {
if (!this.pagesCount) {
return { views: [], };
}
const pageView = this._pages[this._currentPageNumber - 1];
// NOTE: Compute the `x` and `y` properties of the current view,
// since `this._updateLocation` depends of them being available.
const element = pageView.div;
const view = {
id: pageView.id,
x: element.offsetLeft + element.clientLeft,
y: element.offsetTop + element.clientTop,
view: pageView,
};
return { first: view, last: view, views: [view], };
}
_getVisiblePages() {
throw new Error('Not implemented: _getVisiblePages');
}

View File

@ -108,21 +108,7 @@ class PDFSinglePageViewer extends BaseViewer {
}
_getVisiblePages() {
if (!this.pagesCount) {
return { views: [], };
}
let pageView = this._pages[this._currentPageNumber - 1];
// NOTE: Compute the `x` and `y` properties of the current view,
// since `this._updateLocation` depends of them being available.
let element = pageView.div;
let view = {
id: pageView.id,
x: element.offsetLeft + element.clientLeft,
y: element.offsetTop + element.clientTop,
view: pageView,
};
return { first: view, last: view, views: [view], };
return this._getCurrentVisiblePage();
}
update() {

View File

@ -40,11 +40,9 @@ class PDFViewer extends BaseViewer {
return getVisibleElements(this.container, this._pages, true,
this._scrollMode === ScrollMode.HORIZONTAL);
}
// The algorithm in getVisibleElements doesn't work in all browsers and
// The algorithm in `getVisibleElements` doesn't work in all browsers and
// configurations when presentation mode is active.
let currentPage = this._pages[this._currentPageNumber - 1];
let visible = [{ id: currentPage.id, view: currentPage, }];
return { first: currentPage, last: currentPage, views: visible, };
return this._getCurrentVisiblePage();
}
update() {