| /** |
| * @licstart The following is the entire license notice for the |
| * Javascript code in this page |
| * |
| * Copyright 2020 Mozilla Foundation |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| * @licend The above is the entire license notice for the |
| * Javascript code in this page |
| */ |
| "use strict"; |
| |
| Object.defineProperty(exports, "__esModule", { |
| value: true |
| }); |
| exports.PDFSinglePageViewer = void 0; |
| |
| var _base_viewer = require("./base_viewer.js"); |
| |
| var _pdf = require("../pdf"); |
| |
| class PDFSinglePageViewer extends _base_viewer.BaseViewer { |
| constructor(options) { |
| super(options); |
| |
| this.eventBus._on("pagesinit", evt => { |
| this._ensurePageViewVisible(); |
| }); |
| } |
| |
| get _viewerElement() { |
| return (0, _pdf.shadow)(this, "_viewerElement", this._shadowViewer); |
| } |
| |
| _resetView() { |
| super._resetView(); |
| |
| this._previousPageNumber = 1; |
| this._shadowViewer = document.createDocumentFragment(); |
| this._updateScrollDown = null; |
| } |
| |
| _ensurePageViewVisible() { |
| const pageView = this._pages[this._currentPageNumber - 1]; |
| const previousPageView = this._pages[this._previousPageNumber - 1]; |
| const viewerNodes = this.viewer.childNodes; |
| |
| switch (viewerNodes.length) { |
| case 0: |
| this.viewer.appendChild(pageView.div); |
| break; |
| |
| case 1: |
| if (viewerNodes[0] !== previousPageView.div) { |
| throw new Error("_ensurePageViewVisible: Unexpected previously visible page."); |
| } |
| |
| if (pageView === previousPageView) { |
| break; |
| } |
| |
| this._shadowViewer.appendChild(previousPageView.div); |
| |
| this.viewer.appendChild(pageView.div); |
| this.container.scrollTop = 0; |
| break; |
| |
| default: |
| throw new Error("_ensurePageViewVisible: Only one page should be visible at a time."); |
| } |
| |
| this._previousPageNumber = this._currentPageNumber; |
| } |
| |
| _scrollUpdate() { |
| if (this._updateScrollDown) { |
| this._updateScrollDown(); |
| } |
| |
| super._scrollUpdate(); |
| } |
| |
| _scrollIntoView({ |
| pageDiv, |
| pageSpot = null, |
| pageNumber = null |
| }) { |
| if (pageNumber) { |
| this._setCurrentPageNumber(pageNumber); |
| } |
| |
| const scrolledDown = this._currentPageNumber >= this._previousPageNumber; |
| |
| this._ensurePageViewVisible(); |
| |
| this.update(); |
| |
| super._scrollIntoView({ |
| pageDiv, |
| pageSpot, |
| pageNumber |
| }); |
| |
| this._updateScrollDown = () => { |
| this.scroll.down = scrolledDown; |
| this._updateScrollDown = null; |
| }; |
| } |
| |
| _getVisiblePages() { |
| return this._getCurrentVisiblePage(); |
| } |
| |
| _updateHelper(visiblePages) {} |
| |
| get _isScrollModeHorizontal() { |
| return (0, _pdf.shadow)(this, "_isScrollModeHorizontal", false); |
| } |
| |
| _updateScrollMode() {} |
| |
| _updateSpreadMode() {} |
| |
| } |
| |
| exports.PDFSinglePageViewer = PDFSinglePageViewer; |