mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-22 17:55:50 +00:00
Bug 1398810 - Update pdf.js to version 1.9.554. r=bdahl
This commit is contained in:
parent
018c7a6e79
commit
89f1957239
@ -1,5 +1,5 @@
|
||||
This is the PDF.js project output, https://github.com/mozilla/pdf.js
|
||||
|
||||
Current extension version is: 1.9.530
|
||||
Current extension version is: 1.9.554
|
||||
|
||||
Taken from upstream commit: d1089a28
|
||||
Taken from upstream commit: ba219965
|
||||
|
@ -1462,7 +1462,7 @@ exports.unreachable = unreachable;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = exports.getDefaultSetting = exports.LinkTarget = exports.getFilenameFromUrl = exports.isValidUrl = exports.isExternalLinkTargetSet = exports.addLinkAttributes = exports.RenderingCancelledException = exports.CustomStyle = undefined;
|
||||
exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = exports.getDefaultSetting = exports.LinkTarget = exports.getFilenameFromUrl = exports.isValidUrl = exports.isExternalLinkTargetSet = exports.addLinkAttributes = exports.RenderingCancelledException = exports.CustomStyle = undefined;
|
||||
|
||||
var _util = __w_pdfjs_require__(0);
|
||||
|
||||
@ -1472,7 +1472,8 @@ var _global_scope2 = _interopRequireDefault(_global_scope);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
var DEFAULT_LINK_REL = 'noopener noreferrer nofollow';
|
||||
const DEFAULT_LINK_REL = 'noopener noreferrer nofollow';
|
||||
const SVG_NS = 'http://www.w3.org/2000/svg';
|
||||
class DOMCanvasFactory {
|
||||
create(width, height) {
|
||||
if (width <= 0 || height <= 0) {
|
||||
@ -1548,6 +1549,22 @@ class DOMCMapReaderFactory {
|
||||
});
|
||||
}
|
||||
}
|
||||
class DOMSVGFactory {
|
||||
create(width, height) {
|
||||
(0, _util.assert)(width > 0 && height > 0, 'Invalid SVG dimensions');
|
||||
let svg = document.createElementNS(SVG_NS, 'svg:svg');
|
||||
svg.setAttribute('version', '1.1');
|
||||
svg.setAttribute('width', width + 'px');
|
||||
svg.setAttribute('height', height + 'px');
|
||||
svg.setAttribute('preserveAspectRatio', 'none');
|
||||
svg.setAttribute('viewBox', '0 0 ' + width + ' ' + height);
|
||||
return svg;
|
||||
}
|
||||
createElement(type) {
|
||||
(0, _util.assert)(typeof type === 'string', 'Invalid SVG element type');
|
||||
return document.createElementNS(SVG_NS, type);
|
||||
}
|
||||
}
|
||||
var CustomStyle = function CustomStyleClosure() {
|
||||
var prefixes = ['ms', 'Moz', 'Webkit', 'O'];
|
||||
var _cache = Object.create(null);
|
||||
@ -1708,6 +1725,7 @@ exports.getDefaultSetting = getDefaultSetting;
|
||||
exports.DEFAULT_LINK_REL = DEFAULT_LINK_REL;
|
||||
exports.DOMCanvasFactory = DOMCanvasFactory;
|
||||
exports.DOMCMapReaderFactory = DOMCMapReaderFactory;
|
||||
exports.DOMSVGFactory = DOMSVGFactory;
|
||||
|
||||
/***/ }),
|
||||
/* 2 */
|
||||
@ -1763,6 +1781,10 @@ class AnnotationElementFactory {
|
||||
return new PopupAnnotationElement(parameters);
|
||||
case _util.AnnotationType.LINE:
|
||||
return new LineAnnotationElement(parameters);
|
||||
case _util.AnnotationType.SQUARE:
|
||||
return new SquareAnnotationElement(parameters);
|
||||
case _util.AnnotationType.CIRCLE:
|
||||
return new CircleAnnotationElement(parameters);
|
||||
case _util.AnnotationType.HIGHLIGHT:
|
||||
return new HighlightAnnotationElement(parameters);
|
||||
case _util.AnnotationType.UNDERLINE:
|
||||
@ -1789,6 +1811,7 @@ class AnnotationElement {
|
||||
this.downloadManager = parameters.downloadManager;
|
||||
this.imageResourcesPath = parameters.imageResourcesPath;
|
||||
this.renderInteractiveForms = parameters.renderInteractiveForms;
|
||||
this.svgFactory = parameters.svgFactory;
|
||||
if (isRenderable) {
|
||||
this.container = this._createContainer(ignoreBorder);
|
||||
}
|
||||
@ -1872,7 +1895,8 @@ class AnnotationElement {
|
||||
}
|
||||
class LinkAnnotationElement extends AnnotationElement {
|
||||
constructor(parameters) {
|
||||
super(parameters, true);
|
||||
let isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action);
|
||||
super(parameters, isRenderable);
|
||||
}
|
||||
render() {
|
||||
this.container.className = 'linkAnnotation';
|
||||
@ -2064,7 +2088,7 @@ class PopupAnnotationElement extends AnnotationElement {
|
||||
super(parameters, isRenderable);
|
||||
}
|
||||
render() {
|
||||
const IGNORE_TYPES = ['Line'];
|
||||
const IGNORE_TYPES = ['Line', 'Square', 'Circle'];
|
||||
this.container.className = 'popupAnnotation';
|
||||
if (IGNORE_TYPES.indexOf(this.data.parentType) >= 0) {
|
||||
return this.container;
|
||||
@ -2170,27 +2194,73 @@ class LineAnnotationElement extends AnnotationElement {
|
||||
super(parameters, isRenderable, true);
|
||||
}
|
||||
render() {
|
||||
const SVG_NS = 'http://www.w3.org/2000/svg';
|
||||
this.container.className = 'lineAnnotation';
|
||||
let data = this.data;
|
||||
let width = data.rect[2] - data.rect[0];
|
||||
let height = data.rect[3] - data.rect[1];
|
||||
let svg = document.createElementNS(SVG_NS, 'svg:svg');
|
||||
svg.setAttributeNS(null, 'version', '1.1');
|
||||
svg.setAttributeNS(null, 'width', width + 'px');
|
||||
svg.setAttributeNS(null, 'height', height + 'px');
|
||||
svg.setAttributeNS(null, 'preserveAspectRatio', 'none');
|
||||
svg.setAttributeNS(null, 'viewBox', '0 0 ' + width + ' ' + height);
|
||||
let line = document.createElementNS(SVG_NS, 'svg:line');
|
||||
line.setAttributeNS(null, 'x1', data.rect[2] - data.lineCoordinates[0]);
|
||||
line.setAttributeNS(null, 'y1', data.rect[3] - data.lineCoordinates[1]);
|
||||
line.setAttributeNS(null, 'x2', data.rect[2] - data.lineCoordinates[2]);
|
||||
line.setAttributeNS(null, 'y2', data.rect[3] - data.lineCoordinates[3]);
|
||||
line.setAttributeNS(null, 'stroke-width', data.borderStyle.width);
|
||||
line.setAttributeNS(null, 'stroke', 'transparent');
|
||||
let svg = this.svgFactory.create(width, height);
|
||||
let line = this.svgFactory.createElement('svg:line');
|
||||
line.setAttribute('x1', data.rect[2] - data.lineCoordinates[0]);
|
||||
line.setAttribute('y1', data.rect[3] - data.lineCoordinates[1]);
|
||||
line.setAttribute('x2', data.rect[2] - data.lineCoordinates[2]);
|
||||
line.setAttribute('y2', data.rect[3] - data.lineCoordinates[3]);
|
||||
line.setAttribute('stroke-width', data.borderStyle.width);
|
||||
line.setAttribute('stroke', 'transparent');
|
||||
svg.appendChild(line);
|
||||
this.container.append(svg);
|
||||
this._createPopup(this.container, line, this.data);
|
||||
this._createPopup(this.container, line, data);
|
||||
return this.container;
|
||||
}
|
||||
}
|
||||
class SquareAnnotationElement extends AnnotationElement {
|
||||
constructor(parameters) {
|
||||
let isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
|
||||
super(parameters, isRenderable, true);
|
||||
}
|
||||
render() {
|
||||
this.container.className = 'squareAnnotation';
|
||||
let data = this.data;
|
||||
let width = data.rect[2] - data.rect[0];
|
||||
let height = data.rect[3] - data.rect[1];
|
||||
let svg = this.svgFactory.create(width, height);
|
||||
let borderWidth = data.borderStyle.width;
|
||||
let square = this.svgFactory.createElement('svg:rect');
|
||||
square.setAttribute('x', borderWidth / 2);
|
||||
square.setAttribute('y', borderWidth / 2);
|
||||
square.setAttribute('width', width - borderWidth);
|
||||
square.setAttribute('height', height - borderWidth);
|
||||
square.setAttribute('stroke-width', borderWidth);
|
||||
square.setAttribute('stroke', 'transparent');
|
||||
square.setAttribute('fill', 'none');
|
||||
svg.appendChild(square);
|
||||
this.container.append(svg);
|
||||
this._createPopup(this.container, square, data);
|
||||
return this.container;
|
||||
}
|
||||
}
|
||||
class CircleAnnotationElement extends AnnotationElement {
|
||||
constructor(parameters) {
|
||||
let isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
|
||||
super(parameters, isRenderable, true);
|
||||
}
|
||||
render() {
|
||||
this.container.className = 'circleAnnotation';
|
||||
let data = this.data;
|
||||
let width = data.rect[2] - data.rect[0];
|
||||
let height = data.rect[3] - data.rect[1];
|
||||
let svg = this.svgFactory.create(width, height);
|
||||
let borderWidth = data.borderStyle.width;
|
||||
let circle = this.svgFactory.createElement('svg:ellipse');
|
||||
circle.setAttribute('cx', width / 2);
|
||||
circle.setAttribute('cy', height / 2);
|
||||
circle.setAttribute('rx', width / 2 - borderWidth / 2);
|
||||
circle.setAttribute('ry', height / 2 - borderWidth / 2);
|
||||
circle.setAttribute('stroke-width', borderWidth);
|
||||
circle.setAttribute('stroke', 'transparent');
|
||||
circle.setAttribute('fill', 'none');
|
||||
svg.appendChild(circle);
|
||||
this.container.append(svg);
|
||||
this._createPopup(this.container, circle, data);
|
||||
return this.container;
|
||||
}
|
||||
}
|
||||
@ -2293,7 +2363,8 @@ class AnnotationLayer {
|
||||
linkService: parameters.linkService,
|
||||
downloadManager: parameters.downloadManager,
|
||||
imageResourcesPath: parameters.imageResourcesPath || (0, _dom_utils.getDefaultSetting)('imageResourcesPath'),
|
||||
renderInteractiveForms: parameters.renderInteractiveForms || false
|
||||
renderInteractiveForms: parameters.renderInteractiveForms || false,
|
||||
svgFactory: new _dom_utils.DOMSVGFactory()
|
||||
});
|
||||
if (element.isRenderable) {
|
||||
parameters.div.appendChild(element.render());
|
||||
@ -3786,8 +3857,8 @@ var _UnsupportedManager = function UnsupportedManagerClosure() {
|
||||
}();
|
||||
var version, build;
|
||||
{
|
||||
exports.version = version = '1.9.530';
|
||||
exports.build = build = 'd1089a28';
|
||||
exports.version = version = '1.9.554';
|
||||
exports.build = build = 'ba219965';
|
||||
}
|
||||
exports.getDocument = getDocument;
|
||||
exports.LoopbackPort = LoopbackPort;
|
||||
@ -3814,6 +3885,8 @@ exports.SVGGraphics = undefined;
|
||||
|
||||
var _util = __w_pdfjs_require__(0);
|
||||
|
||||
var _dom_utils = __w_pdfjs_require__(1);
|
||||
|
||||
var SVGGraphics = function () {
|
||||
throw new Error('Not implemented: SVGGraphics');
|
||||
};
|
||||
@ -4843,8 +4916,8 @@ if (!_global_scope2.default.PDFJS) {
|
||||
}
|
||||
var PDFJS = _global_scope2.default.PDFJS;
|
||||
{
|
||||
PDFJS.version = '1.9.530';
|
||||
PDFJS.build = 'd1089a28';
|
||||
PDFJS.version = '1.9.554';
|
||||
PDFJS.build = 'ba219965';
|
||||
}
|
||||
PDFJS.pdfBug = false;
|
||||
if (PDFJS.verbosity !== undefined) {
|
||||
@ -10410,8 +10483,8 @@ exports.PDFDataTransportStream = PDFDataTransportStream;
|
||||
"use strict";
|
||||
|
||||
|
||||
var pdfjsVersion = '1.9.530';
|
||||
var pdfjsBuild = 'd1089a28';
|
||||
var pdfjsVersion = '1.9.554';
|
||||
var pdfjsBuild = 'ba219965';
|
||||
var pdfjsSharedUtil = __w_pdfjs_require__(0);
|
||||
var pdfjsDisplayGlobal = __w_pdfjs_require__(9);
|
||||
var pdfjsDisplayAPI = __w_pdfjs_require__(4);
|
||||
|
@ -10731,7 +10731,7 @@ var PostScriptCompiler = function PostScriptCompilerClosure() {
|
||||
return null;
|
||||
}
|
||||
n = num1.number;
|
||||
if (n < 0 || (n | 0) !== n || stack.length < n) {
|
||||
if (n < 0 || !Number.isInteger(n) || stack.length < n) {
|
||||
return null;
|
||||
}
|
||||
ast1 = stack[stack.length - n - 1];
|
||||
@ -10775,7 +10775,7 @@ var PostScriptCompiler = function PostScriptCompilerClosure() {
|
||||
}
|
||||
j = num2.number;
|
||||
n = num1.number;
|
||||
if (n <= 0 || (n | 0) !== n || (j | 0) !== j || stack.length < n) {
|
||||
if (n <= 0 || !Number.isInteger(n) || !Number.isInteger(j) || stack.length < n) {
|
||||
return null;
|
||||
}
|
||||
j = (j % n + n) % n;
|
||||
@ -27350,6 +27350,10 @@ class AnnotationFactory {
|
||||
return new PopupAnnotation(parameters);
|
||||
case 'Line':
|
||||
return new LineAnnotation(parameters);
|
||||
case 'Square':
|
||||
return new SquareAnnotation(parameters);
|
||||
case 'Circle':
|
||||
return new CircleAnnotation(parameters);
|
||||
case 'Highlight':
|
||||
return new HighlightAnnotation(parameters);
|
||||
case 'Underline':
|
||||
@ -27563,7 +27567,7 @@ class AnnotationBorderStyle {
|
||||
this.verticalCornerRadius = 0;
|
||||
}
|
||||
setWidth(width) {
|
||||
if (width === (width | 0)) {
|
||||
if (Number.isInteger(width)) {
|
||||
this.width = width;
|
||||
}
|
||||
}
|
||||
@ -27615,12 +27619,12 @@ class AnnotationBorderStyle {
|
||||
}
|
||||
}
|
||||
setHorizontalCornerRadius(radius) {
|
||||
if (radius === (radius | 0)) {
|
||||
if (Number.isInteger(radius)) {
|
||||
this.horizontalCornerRadius = radius;
|
||||
}
|
||||
}
|
||||
setVerticalCornerRadius(radius) {
|
||||
if (radius === (radius | 0)) {
|
||||
if (Number.isInteger(radius)) {
|
||||
this.verticalCornerRadius = radius;
|
||||
}
|
||||
}
|
||||
@ -27842,6 +27846,20 @@ class LineAnnotation extends Annotation {
|
||||
this._preparePopup(dict);
|
||||
}
|
||||
}
|
||||
class SquareAnnotation extends Annotation {
|
||||
constructor(parameters) {
|
||||
super(parameters);
|
||||
this.data.annotationType = _util.AnnotationType.SQUARE;
|
||||
this._preparePopup(parameters.dict);
|
||||
}
|
||||
}
|
||||
class CircleAnnotation extends Annotation {
|
||||
constructor(parameters) {
|
||||
super(parameters);
|
||||
this.data.annotationType = _util.AnnotationType.CIRCLE;
|
||||
this._preparePopup(parameters.dict);
|
||||
}
|
||||
}
|
||||
class HighlightAnnotation extends Annotation {
|
||||
constructor(parameters) {
|
||||
super(parameters);
|
||||
@ -39688,7 +39706,7 @@ var Type1CharString = function Type1CharStringClosure() {
|
||||
var start = stackLength - howManyArgs;
|
||||
for (var i = start; i < stackLength; i++) {
|
||||
var value = this.stack[i];
|
||||
if (value === (value | 0)) {
|
||||
if (Number.isInteger(value)) {
|
||||
this.output.push(28, value >> 8 & 0xff, value & 0xff);
|
||||
} else {
|
||||
value = 65536 * value | 0;
|
||||
@ -40008,8 +40026,8 @@ exports.Type1Parser = Type1Parser;
|
||||
"use strict";
|
||||
|
||||
|
||||
var pdfjsVersion = '1.9.530';
|
||||
var pdfjsBuild = 'd1089a28';
|
||||
var pdfjsVersion = '1.9.554';
|
||||
var pdfjsBuild = 'ba219965';
|
||||
var pdfjsCoreWorker = __w_pdfjs_require__(17);
|
||||
exports.WorkerMessageHandler = pdfjsCoreWorker.WorkerMessageHandler;
|
||||
|
||||
|
@ -239,6 +239,8 @@
|
||||
.annotationLayer .squigglyAnnotation,
|
||||
.annotationLayer .strikeoutAnnotation,
|
||||
.annotationLayer .lineAnnotation svg line,
|
||||
.annotationLayer .squareAnnotation svg rect,
|
||||
.annotationLayer .circleAnnotation svg ellipse,
|
||||
.annotationLayer .fileAttachmentAnnotation {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
@ -91,7 +91,7 @@
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.waitOnEventOrTimeout = exports.WaitOnType = exports.localized = exports.animationStarted = exports.normalizeWheelEventDelta = exports.binarySearchFirstItem = exports.watchScroll = exports.scrollIntoView = exports.getOutputScale = exports.approximateFraction = exports.roundToDivide = exports.getVisibleElements = exports.parseQueryString = exports.noContextMenuHandler = exports.getPDFFileNameFromURL = exports.ProgressBar = exports.EventBus = exports.NullL10n = exports.mozL10n = exports.RendererType = exports.cloneObj = exports.VERTICAL_PADDING = exports.SCROLLBAR_PADDING = exports.MAX_AUTO_SCALE = exports.UNKNOWN_SCALE = exports.MAX_SCALE = exports.MIN_SCALE = exports.DEFAULT_SCALE = exports.DEFAULT_SCALE_VALUE = exports.CSS_UNITS = undefined;
|
||||
exports.waitOnEventOrTimeout = exports.WaitOnType = exports.localized = exports.animationStarted = exports.normalizeWheelEventDelta = exports.binarySearchFirstItem = exports.watchScroll = exports.scrollIntoView = exports.getOutputScale = exports.approximateFraction = exports.roundToDivide = exports.getVisibleElements = exports.parseQueryString = exports.noContextMenuHandler = exports.getPDFFileNameFromURL = exports.ProgressBar = exports.EventBus = exports.NullL10n = exports.mozL10n = exports.RendererType = exports.cloneObj = exports.isValidRotation = exports.VERTICAL_PADDING = exports.SCROLLBAR_PADDING = exports.MAX_AUTO_SCALE = exports.UNKNOWN_SCALE = exports.MAX_SCALE = exports.MIN_SCALE = exports.DEFAULT_SCALE = exports.DEFAULT_SCALE_VALUE = exports.CSS_UNITS = undefined;
|
||||
|
||||
var _pdfjsLib = __webpack_require__(1);
|
||||
|
||||
@ -373,6 +373,9 @@ function normalizeWheelEventDelta(evt) {
|
||||
}
|
||||
return delta;
|
||||
}
|
||||
function isValidRotation(angle) {
|
||||
return Number.isInteger(angle) && angle % 90 === 0;
|
||||
}
|
||||
function cloneObj(obj) {
|
||||
let result = Object.create(null);
|
||||
for (let i in obj) {
|
||||
@ -516,6 +519,7 @@ exports.UNKNOWN_SCALE = UNKNOWN_SCALE;
|
||||
exports.MAX_AUTO_SCALE = MAX_AUTO_SCALE;
|
||||
exports.SCROLLBAR_PADDING = SCROLLBAR_PADDING;
|
||||
exports.VERTICAL_PADDING = VERTICAL_PADDING;
|
||||
exports.isValidRotation = isValidRotation;
|
||||
exports.cloneObj = cloneObj;
|
||||
exports.RendererType = RendererType;
|
||||
exports.mozL10n = mozL10n;
|
||||
@ -1411,6 +1415,7 @@ let PDFViewerApplication = {
|
||||
this.pdfHistory.initialize(id, resetHistory);
|
||||
if (this.pdfHistory.initialBookmark) {
|
||||
this.initialBookmark = this.pdfHistory.initialBookmark;
|
||||
this.initialRotation = this.pdfHistory.initialRotation;
|
||||
}
|
||||
}
|
||||
let initialParams = {
|
||||
@ -1423,13 +1428,16 @@ let PDFViewerApplication = {
|
||||
zoom: _ui_utils.DEFAULT_SCALE_VALUE,
|
||||
scrollLeft: '0',
|
||||
scrollTop: '0',
|
||||
rotation: null,
|
||||
sidebarView: _pdf_sidebar.SidebarView.NONE
|
||||
}).catch(() => {});
|
||||
Promise.all([storePromise, pageModePromise]).then(([values = {}, pageMode]) => {
|
||||
let hash = this.viewerPrefs['defaultZoomValue'] ? 'zoom=' + this.viewerPrefs['defaultZoomValue'] : null;
|
||||
let rotation = null;
|
||||
let sidebarView = this.viewerPrefs['sidebarViewOnLoad'];
|
||||
if (values.exists && this.viewerPrefs['showPreviousViewOnLoad']) {
|
||||
hash = 'page=' + values.page + '&zoom=' + (this.viewerPrefs['defaultZoomValue'] || values.zoom) + ',' + values.scrollLeft + ',' + values.scrollTop;
|
||||
rotation = parseInt(values.rotation, 10);
|
||||
sidebarView = sidebarView || values.sidebarView | 0;
|
||||
}
|
||||
if (pageMode && !this.viewerPrefs['disablePageMode']) {
|
||||
@ -1437,12 +1445,16 @@ let PDFViewerApplication = {
|
||||
}
|
||||
return {
|
||||
hash,
|
||||
rotation,
|
||||
sidebarView
|
||||
};
|
||||
}).then(({ hash, sidebarView }) => {
|
||||
}).then(({ hash, rotation, sidebarView }) => {
|
||||
initialParams.bookmark = this.initialBookmark;
|
||||
initialParams.hash = hash;
|
||||
this.setInitialView(hash, { sidebarView });
|
||||
this.setInitialView(hash, {
|
||||
rotation,
|
||||
sidebarView
|
||||
});
|
||||
if (!this.isViewerEmbedded) {
|
||||
pdfViewer.focus();
|
||||
}
|
||||
@ -1553,13 +1565,21 @@ let PDFViewerApplication = {
|
||||
});
|
||||
});
|
||||
},
|
||||
setInitialView(storedHash, { sidebarView } = {}) {
|
||||
setInitialView(storedHash, { rotation, sidebarView } = {}) {
|
||||
let setRotation = angle => {
|
||||
if ((0, _ui_utils.isValidRotation)(angle)) {
|
||||
this.pdfViewer.pagesRotation = angle;
|
||||
}
|
||||
};
|
||||
this.isInitialViewSet = true;
|
||||
this.pdfSidebar.setInitialView(sidebarView);
|
||||
if (this.initialBookmark) {
|
||||
setRotation(this.initialRotation);
|
||||
delete this.initialRotation;
|
||||
this.pdfLinkService.setHash(this.initialBookmark);
|
||||
this.initialBookmark = null;
|
||||
} else if (storedHash) {
|
||||
setRotation(rotation);
|
||||
this.pdfLinkService.setHash(storedHash);
|
||||
}
|
||||
this.toolbar.setPageNumber(this.pdfViewer.currentPageNumber, this.pdfViewer.currentPageLabel);
|
||||
@ -1618,13 +1638,8 @@ let PDFViewerApplication = {
|
||||
if (!this.pdfDocument) {
|
||||
return;
|
||||
}
|
||||
let { pdfViewer, pdfThumbnailViewer } = this;
|
||||
let pageNumber = pdfViewer.currentPageNumber;
|
||||
let newRotation = (pdfViewer.pagesRotation + 360 + delta) % 360;
|
||||
pdfViewer.pagesRotation = newRotation;
|
||||
pdfThumbnailViewer.pagesRotation = newRotation;
|
||||
this.forceRendering();
|
||||
pdfViewer.currentPageNumber = pageNumber;
|
||||
let newRotation = (this.pdfViewer.pagesRotation + 360 + delta) % 360;
|
||||
this.pdfViewer.pagesRotation = newRotation;
|
||||
},
|
||||
requestPresentationMode() {
|
||||
if (!this.pdfPresentationMode) {
|
||||
@ -1645,6 +1660,7 @@ let PDFViewerApplication = {
|
||||
eventBus.on('updateviewarea', webViewerUpdateViewarea);
|
||||
eventBus.on('pagechanging', webViewerPageChanging);
|
||||
eventBus.on('scalechanging', webViewerScaleChanging);
|
||||
eventBus.on('rotationchanging', webViewerRotationChanging);
|
||||
eventBus.on('sidebarviewchanged', webViewerSidebarViewChanged);
|
||||
eventBus.on('pagemode', webViewerPageMode);
|
||||
eventBus.on('namedaction', webViewerNamedAction);
|
||||
@ -1700,6 +1716,7 @@ let PDFViewerApplication = {
|
||||
eventBus.off('updateviewarea', webViewerUpdateViewarea);
|
||||
eventBus.off('pagechanging', webViewerPageChanging);
|
||||
eventBus.off('scalechanging', webViewerScaleChanging);
|
||||
eventBus.off('rotationchanging', webViewerRotationChanging);
|
||||
eventBus.off('sidebarviewchanged', webViewerSidebarViewChanged);
|
||||
eventBus.off('pagemode', webViewerPageMode);
|
||||
eventBus.off('namedaction', webViewerNamedAction);
|
||||
@ -1954,7 +1971,8 @@ function webViewerUpdateViewarea(evt) {
|
||||
'page': location.pageNumber,
|
||||
'zoom': location.scale,
|
||||
'scrollLeft': location.left,
|
||||
'scrollTop': location.top
|
||||
'scrollTop': location.top,
|
||||
'rotation': location.rotation
|
||||
}).catch(function () {});
|
||||
}
|
||||
let href = PDFViewerApplication.pdfLinkService.getAnchorUrl(location.pdfOpenParams);
|
||||
@ -2064,6 +2082,11 @@ function webViewerScaleChanging(evt) {
|
||||
PDFViewerApplication.toolbar.setPageScale(evt.presetValue, evt.scale);
|
||||
PDFViewerApplication.pdfViewer.update();
|
||||
}
|
||||
function webViewerRotationChanging(evt) {
|
||||
PDFViewerApplication.pdfThumbnailViewer.pagesRotation = evt.pagesRotation;
|
||||
PDFViewerApplication.forceRendering();
|
||||
PDFViewerApplication.pdfViewer.currentPageNumber = evt.pageNumber;
|
||||
}
|
||||
function webViewerPageChanging(evt) {
|
||||
let page = evt.pageNumber;
|
||||
PDFViewerApplication.toolbar.setPageNumber(page, evt.pageLabel || null);
|
||||
@ -2399,6 +2422,12 @@ class PDFLinkService {
|
||||
set page(value) {
|
||||
this.pdfViewer.currentPageNumber = value;
|
||||
}
|
||||
get rotation() {
|
||||
return this.pdfViewer.pagesRotation;
|
||||
}
|
||||
set rotation(value) {
|
||||
this.pdfViewer.pagesRotation = value;
|
||||
}
|
||||
navigateTo(dest) {
|
||||
let goToDestination = ({ namedDest, explicitDest }) => {
|
||||
let destRef = explicitDest[0],
|
||||
@ -2417,7 +2446,7 @@ class PDFLinkService {
|
||||
});
|
||||
return;
|
||||
}
|
||||
} else if ((destRef | 0) === destRef) {
|
||||
} else if (Number.isInteger(destRef)) {
|
||||
pageNumber = destRef + 1;
|
||||
} else {
|
||||
console.error(`PDFLinkService.navigateTo: "${destRef}" is not ` + `a valid destination reference, for dest="${dest}".`);
|
||||
@ -2608,7 +2637,7 @@ function isValidExplicitDestination(dest) {
|
||||
return false;
|
||||
}
|
||||
let page = dest[0];
|
||||
if (!(typeof page === 'object' && typeof page.num === 'number' && (page.num | 0) === page.num && typeof page.gen === 'number' && (page.gen | 0) === page.gen) && !(typeof page === 'number' && (page | 0) === page && page >= 0)) {
|
||||
if (!(typeof page === 'object' && Number.isInteger(page.num) && Number.isInteger(page.gen)) && !(Number.isInteger(page) && page >= 0)) {
|
||||
return false;
|
||||
}
|
||||
let zoom = dest[1];
|
||||
@ -2654,6 +2683,10 @@ class SimpleLinkService {
|
||||
return 0;
|
||||
}
|
||||
set page(value) {}
|
||||
get rotation() {
|
||||
return 0;
|
||||
}
|
||||
set rotation(value) {}
|
||||
navigateTo(dest) {}
|
||||
getDestinationHash(dest) {
|
||||
return '#';
|
||||
@ -3244,35 +3277,35 @@ var _preferences = __webpack_require__(26);
|
||||
var _app = __webpack_require__(4);
|
||||
|
||||
;
|
||||
var FirefoxCom = function FirefoxComClosure() {
|
||||
let FirefoxCom = function FirefoxComClosure() {
|
||||
return {
|
||||
requestSync(action, data) {
|
||||
var request = document.createTextNode('');
|
||||
let request = document.createTextNode('');
|
||||
document.documentElement.appendChild(request);
|
||||
var sender = document.createEvent('CustomEvent');
|
||||
let sender = document.createEvent('CustomEvent');
|
||||
sender.initCustomEvent('pdf.js.message', true, false, {
|
||||
action,
|
||||
data,
|
||||
sync: true
|
||||
});
|
||||
request.dispatchEvent(sender);
|
||||
var response = sender.detail.response;
|
||||
let response = sender.detail.response;
|
||||
document.documentElement.removeChild(request);
|
||||
return response;
|
||||
},
|
||||
request(action, data, callback) {
|
||||
var request = document.createTextNode('');
|
||||
let request = document.createTextNode('');
|
||||
if (callback) {
|
||||
document.addEventListener('pdf.js.response', function listener(event) {
|
||||
var node = event.target;
|
||||
var response = event.detail.response;
|
||||
let node = event.target;
|
||||
let response = event.detail.response;
|
||||
document.documentElement.removeChild(node);
|
||||
document.removeEventListener('pdf.js.response', listener);
|
||||
return callback(response);
|
||||
});
|
||||
}
|
||||
document.documentElement.appendChild(request);
|
||||
var sender = document.createEvent('CustomEvent');
|
||||
let sender = document.createEvent('CustomEvent');
|
||||
sender.initCustomEvent('pdf.js.message', true, false, {
|
||||
action,
|
||||
data,
|
||||
@ -3283,41 +3316,37 @@ var FirefoxCom = function FirefoxComClosure() {
|
||||
}
|
||||
};
|
||||
}();
|
||||
var DownloadManager = function DownloadManagerClosure() {
|
||||
function DownloadManager() {}
|
||||
DownloadManager.prototype = {
|
||||
downloadUrl: function DownloadManager_downloadUrl(url, filename) {
|
||||
FirefoxCom.request('download', {
|
||||
originalUrl: url,
|
||||
filename
|
||||
});
|
||||
},
|
||||
downloadData: function DownloadManager_downloadData(data, filename, contentType) {
|
||||
var blobUrl = (0, _pdfjsLib.createObjectURL)(data, contentType, false);
|
||||
FirefoxCom.request('download', {
|
||||
blobUrl,
|
||||
originalUrl: blobUrl,
|
||||
filename,
|
||||
isAttachment: true
|
||||
});
|
||||
},
|
||||
download: function DownloadManager_download(blob, url, filename) {
|
||||
let blobUrl = window.URL.createObjectURL(blob);
|
||||
let onResponse = err => {
|
||||
if (err && this.onerror) {
|
||||
this.onerror(err);
|
||||
}
|
||||
window.URL.revokeObjectURL(blobUrl);
|
||||
};
|
||||
FirefoxCom.request('download', {
|
||||
blobUrl,
|
||||
originalUrl: url,
|
||||
filename
|
||||
}, onResponse);
|
||||
}
|
||||
};
|
||||
return DownloadManager;
|
||||
}();
|
||||
class DownloadManager {
|
||||
downloadUrl(url, filename) {
|
||||
FirefoxCom.request('download', {
|
||||
originalUrl: url,
|
||||
filename
|
||||
});
|
||||
}
|
||||
downloadData(data, filename, contentType) {
|
||||
let blobUrl = (0, _pdfjsLib.createObjectURL)(data, contentType, false);
|
||||
FirefoxCom.request('download', {
|
||||
blobUrl,
|
||||
originalUrl: blobUrl,
|
||||
filename,
|
||||
isAttachment: true
|
||||
});
|
||||
}
|
||||
download(blob, url, filename) {
|
||||
let blobUrl = URL.createObjectURL(blob);
|
||||
let onResponse = err => {
|
||||
if (err && this.onerror) {
|
||||
this.onerror(err);
|
||||
}
|
||||
URL.revokeObjectURL(blobUrl);
|
||||
};
|
||||
FirefoxCom.request('download', {
|
||||
blobUrl,
|
||||
originalUrl: url,
|
||||
filename
|
||||
}, onResponse);
|
||||
}
|
||||
}
|
||||
class FirefoxPreferences extends _preferences.BasePreferences {
|
||||
_writeToStorage(prefObj) {
|
||||
return new Promise(function (resolve) {
|
||||
@ -3327,7 +3356,7 @@ class FirefoxPreferences extends _preferences.BasePreferences {
|
||||
_readFromStorage(prefObj) {
|
||||
return new Promise(function (resolve) {
|
||||
FirefoxCom.request('getPreferences', prefObj, function (prefStr) {
|
||||
var readPrefs = JSON.parse(prefStr);
|
||||
let readPrefs = JSON.parse(prefStr);
|
||||
resolve(readPrefs);
|
||||
});
|
||||
});
|
||||
@ -3349,8 +3378,8 @@ class MozL10n {
|
||||
}
|
||||
}
|
||||
(function listenFindEvents() {
|
||||
var events = ['find', 'findagain', 'findhighlightallchange', 'findcasesensitivitychange'];
|
||||
var handleEvent = function (evt) {
|
||||
const events = ['find', 'findagain', 'findhighlightallchange', 'findcasesensitivitychange'];
|
||||
let handleEvent = function (evt) {
|
||||
if (!_app.PDFViewerApplication.initialized) {
|
||||
return;
|
||||
}
|
||||
@ -3364,7 +3393,7 @@ class MozL10n {
|
||||
findPrevious: !!evt.detail.findPrevious
|
||||
});
|
||||
};
|
||||
for (var i = 0, len = events.length; i < len; i++) {
|
||||
for (let i = 0, len = events.length; i < len; i++) {
|
||||
window.addEventListener(events[i], handleEvent);
|
||||
}
|
||||
})();
|
||||
@ -3386,13 +3415,13 @@ _app.PDFViewerApplication.externalServices = {
|
||||
FirefoxCom.request('updateFindControlState', data);
|
||||
},
|
||||
initPassiveLoading(callbacks) {
|
||||
var pdfDataRangeTransport;
|
||||
let pdfDataRangeTransport;
|
||||
window.addEventListener('message', function windowMessage(e) {
|
||||
if (e.source !== null) {
|
||||
console.warn('Rejected untrusted message from ' + e.origin);
|
||||
return;
|
||||
}
|
||||
var args = e.data;
|
||||
let args = e.data;
|
||||
if (typeof args !== 'object' || !('pdfjsLoadAction' in args)) {
|
||||
return;
|
||||
}
|
||||
@ -3437,23 +3466,23 @@ _app.PDFViewerApplication.externalServices = {
|
||||
return new FirefoxPreferences();
|
||||
},
|
||||
createL10n() {
|
||||
var mozL10n = document.mozL10n;
|
||||
let mozL10n = document.mozL10n;
|
||||
return new MozL10n(mozL10n);
|
||||
},
|
||||
get supportsIntegratedFind() {
|
||||
var support = FirefoxCom.requestSync('supportsIntegratedFind');
|
||||
let support = FirefoxCom.requestSync('supportsIntegratedFind');
|
||||
return (0, _pdfjsLib.shadow)(this, 'supportsIntegratedFind', support);
|
||||
},
|
||||
get supportsDocumentFonts() {
|
||||
var support = FirefoxCom.requestSync('supportsDocumentFonts');
|
||||
let support = FirefoxCom.requestSync('supportsDocumentFonts');
|
||||
return (0, _pdfjsLib.shadow)(this, 'supportsDocumentFonts', support);
|
||||
},
|
||||
get supportsDocumentColors() {
|
||||
var support = FirefoxCom.requestSync('supportsDocumentColors');
|
||||
let support = FirefoxCom.requestSync('supportsDocumentColors');
|
||||
return (0, _pdfjsLib.shadow)(this, 'supportsDocumentColors', support);
|
||||
},
|
||||
get supportedMouseWheelZoomModifierKeys() {
|
||||
var support = FirefoxCom.requestSync('supportedMouseWheelZoomModifierKeys');
|
||||
let support = FirefoxCom.requestSync('supportedMouseWheelZoomModifierKeys');
|
||||
return (0, _pdfjsLib.shadow)(this, 'supportedMouseWheelZoomModifierKeys', support);
|
||||
}
|
||||
};
|
||||
@ -4416,7 +4445,7 @@ var _dom_events = __webpack_require__(2);
|
||||
|
||||
const HASH_CHANGE_TIMEOUT = 1000;
|
||||
const POSITION_UPDATED_THRESHOLD = 50;
|
||||
const UPDATE_VIEWAREA_TIMEOUT = 2000;
|
||||
const UPDATE_VIEWAREA_TIMEOUT = 1000;
|
||||
function getCurrentHash() {
|
||||
return document.location.hash;
|
||||
}
|
||||
@ -4429,7 +4458,8 @@ function parseCurrentHash(linkService) {
|
||||
}
|
||||
return {
|
||||
hash,
|
||||
page
|
||||
page,
|
||||
rotation: linkService.rotation
|
||||
};
|
||||
}
|
||||
class PDFHistory {
|
||||
@ -4438,6 +4468,7 @@ class PDFHistory {
|
||||
this.eventBus = eventBus || (0, _dom_events.getGlobalEventBus)();
|
||||
this.initialized = false;
|
||||
this.initialBookmark = null;
|
||||
this.initialRotation = null;
|
||||
this._boundEvents = Object.create(null);
|
||||
this._isViewerInPresentationMode = false;
|
||||
this._isPagesLoaded = false;
|
||||
@ -4461,6 +4492,7 @@ class PDFHistory {
|
||||
let state = window.history.state;
|
||||
this.initialized = true;
|
||||
this.initialBookmark = null;
|
||||
this.initialRotation = null;
|
||||
this._popStateInProgress = false;
|
||||
this._blockHashChange = 0;
|
||||
this._currentHash = getCurrentHash();
|
||||
@ -4469,19 +4501,23 @@ class PDFHistory {
|
||||
this._destination = null;
|
||||
this._position = null;
|
||||
if (!this._isValidState(state) || resetHistory) {
|
||||
let { hash, page } = parseCurrentHash(this.linkService);
|
||||
let { hash, page, rotation } = parseCurrentHash(this.linkService);
|
||||
if (!hash || reInitialized || resetHistory) {
|
||||
this._pushOrReplaceState(null, true);
|
||||
return;
|
||||
}
|
||||
this._pushOrReplaceState({
|
||||
hash,
|
||||
page
|
||||
page,
|
||||
rotation
|
||||
}, true);
|
||||
return;
|
||||
}
|
||||
let destination = state.destination;
|
||||
this._updateInternalState(destination, state.uid, true);
|
||||
if (destination.rotation !== undefined) {
|
||||
this.initialRotation = destination.rotation;
|
||||
}
|
||||
if (destination.dest) {
|
||||
this.initialBookmark = JSON.stringify(destination.dest);
|
||||
this._destination.page = null;
|
||||
@ -4516,8 +4552,15 @@ class PDFHistory {
|
||||
this._pushOrReplaceState({
|
||||
dest: explicitDest,
|
||||
hash,
|
||||
page: pageNumber
|
||||
page: pageNumber,
|
||||
rotation: this.linkService.rotation
|
||||
}, forceReplace);
|
||||
if (!this._popStateInProgress) {
|
||||
this._popStateInProgress = true;
|
||||
Promise.resolve().then(() => {
|
||||
this._popStateInProgress = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
pushCurrentPosition() {
|
||||
if (!this.initialized || this._popStateInProgress) {
|
||||
@ -4608,6 +4651,10 @@ class PDFHistory {
|
||||
return true;
|
||||
}
|
||||
_updateInternalState(destination, uid, removeTemporary = false) {
|
||||
if (this._updateViewareaTimeout) {
|
||||
clearTimeout(this._updateViewareaTimeout);
|
||||
this._updateViewareaTimeout = null;
|
||||
}
|
||||
if (removeTemporary && destination && destination.temporary) {
|
||||
delete destination.temporary;
|
||||
}
|
||||
@ -4624,7 +4671,8 @@ class PDFHistory {
|
||||
this._position = {
|
||||
hash: this._isViewerInPresentationMode ? `page=${location.pageNumber}` : location.pdfOpenParams.substring(1),
|
||||
page: this.linkService.page,
|
||||
first: location.pageNumber
|
||||
first: location.pageNumber,
|
||||
rotation: location.rotation
|
||||
};
|
||||
if (this._popStateInProgress) {
|
||||
return;
|
||||
@ -4647,10 +4695,11 @@ class PDFHistory {
|
||||
this._currentHash = newHash;
|
||||
if (!state || false) {
|
||||
this._currentUid = this._uid;
|
||||
let { hash, page } = parseCurrentHash(this.linkService);
|
||||
let { hash, page, rotation } = parseCurrentHash(this.linkService);
|
||||
this._pushOrReplaceState({
|
||||
hash,
|
||||
page
|
||||
page,
|
||||
rotation
|
||||
}, true);
|
||||
return;
|
||||
}
|
||||
@ -4668,24 +4717,11 @@ class PDFHistory {
|
||||
this._blockHashChange--;
|
||||
});
|
||||
}
|
||||
if (state.uid < this._currentUid && this._position && this._destination) {
|
||||
let shouldGoBack = false;
|
||||
if (this._destination.temporary) {
|
||||
this._pushOrReplaceState(this._position);
|
||||
shouldGoBack = true;
|
||||
} else if (this._destination.page && this._destination.page !== this._position.first && this._destination.page !== this._position.page) {
|
||||
this._pushOrReplaceState(this._destination);
|
||||
this._pushOrReplaceState(this._position);
|
||||
shouldGoBack = true;
|
||||
}
|
||||
if (shouldGoBack) {
|
||||
this._currentUid = state.uid;
|
||||
window.history.back();
|
||||
return;
|
||||
}
|
||||
}
|
||||
let destination = state.destination;
|
||||
this._updateInternalState(destination, state.uid, true);
|
||||
if ((0, _ui_utils.isValidRotation)(destination.rotation)) {
|
||||
this.linkService.rotation = destination.rotation;
|
||||
}
|
||||
if (destination.dest) {
|
||||
this.linkService.navigateTo(destination.dest);
|
||||
} else if (destination.hash) {
|
||||
@ -6319,12 +6355,15 @@ class PDFThumbnailViewer {
|
||||
return this._pagesRotation;
|
||||
}
|
||||
set pagesRotation(rotation) {
|
||||
if (!(typeof rotation === 'number' && rotation % 90 === 0)) {
|
||||
if (!(0, _ui_utils.isValidRotation)(rotation)) {
|
||||
throw new Error('Invalid thumbnails rotation angle.');
|
||||
}
|
||||
if (!this.pdfDocument) {
|
||||
return;
|
||||
}
|
||||
if (this._pagesRotation === rotation) {
|
||||
return;
|
||||
}
|
||||
this._pagesRotation = rotation;
|
||||
for (let i = 0, ii = this._thumbnails.length; i < ii; i++) {
|
||||
this._thumbnails[i].update(rotation);
|
||||
@ -6531,7 +6570,7 @@ class PDFViewer {
|
||||
return this._currentPageNumber;
|
||||
}
|
||||
set currentPageNumber(val) {
|
||||
if ((val | 0) !== val) {
|
||||
if (!Number.isInteger(val)) {
|
||||
throw new Error('Invalid page number.');
|
||||
}
|
||||
if (!this.pdfDocument) {
|
||||
@ -6600,18 +6639,29 @@ class PDFViewer {
|
||||
return this._pagesRotation;
|
||||
}
|
||||
set pagesRotation(rotation) {
|
||||
if (!(typeof rotation === 'number' && rotation % 90 === 0)) {
|
||||
if (!(0, _ui_utils.isValidRotation)(rotation)) {
|
||||
throw new Error('Invalid pages rotation angle.');
|
||||
}
|
||||
if (!this.pdfDocument) {
|
||||
return;
|
||||
}
|
||||
if (this._pagesRotation === rotation) {
|
||||
return;
|
||||
}
|
||||
this._pagesRotation = rotation;
|
||||
let pageNumber = this._currentPageNumber;
|
||||
for (let i = 0, ii = this._pages.length; i < ii; i++) {
|
||||
let pageView = this._pages[i];
|
||||
pageView.update(pageView.scale, rotation);
|
||||
}
|
||||
this._setScale(this._currentScaleValue, true);
|
||||
if (this._currentScaleValue) {
|
||||
this._setScale(this._currentScaleValue, true);
|
||||
}
|
||||
this.eventBus.dispatch('rotationchanging', {
|
||||
source: this,
|
||||
pagesRotation: rotation,
|
||||
pageNumber
|
||||
});
|
||||
if (this.defaultRenderingQueue) {
|
||||
this.update();
|
||||
}
|
||||
@ -6940,6 +6990,7 @@ class PDFViewer {
|
||||
scale: normalizedScaleValue,
|
||||
top: intTop,
|
||||
left: intLeft,
|
||||
rotation: this._pagesRotation,
|
||||
pdfOpenParams
|
||||
};
|
||||
}
|
||||
@ -7220,7 +7271,7 @@ class BasePreferences {
|
||||
throw new Error(`Set preference: "${value}" is a ${valueType}, ` + `expected a ${defaultType}.`);
|
||||
}
|
||||
} else {
|
||||
if (valueType === 'number' && (value | 0) !== value) {
|
||||
if (valueType === 'number' && !Number.isInteger(value)) {
|
||||
throw new Error(`Set preference: "${value}" must be an integer.`);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user